diff --git a/.docs-test.toml b/.docs-test.toml new file mode 100644 index 0000000..a0f8651 --- /dev/null +++ b/.docs-test.toml @@ -0,0 +1,55 @@ +# Configuration for the docs-theme-extras HTML test harness when run against +# agentregistry-oss. +# +# The harness lives in github.com/solo-io/docs-theme-extras and reads this file +# via the DOCS_TEST_CONFIG env var (set by the Makefile or CI). All relative +# paths are resolved against this file's directory. The harness does NOT build +# the site — `hugo` runs first and writes to builtRoot. +# +# First-pass config: structural HTML quality (no shortcode leaks, no markdown +# bleed, image alt text, console errors, contrast) against the production build. +# Tighten/expand as the suite stabilizes. + +version = "1" +name = "agentregistry-oss" +brand = "oss" + +# Where the consumer's built HTML lives. Everything operates on this tree. +builtRoot = "./public" +baseURL = "/" + +# Source-tree roots for author-side lints (e.g. curl-quotes scans markdown +# directly). Narrowed to docs content so lints don't trip on the marketing +# landing page. +scanRoots = [ + "./content/docs", +] + +# NOTE: agentregistry is a flat, unversioned docs site (/docs/
//) +# with no site.Params.sections and no version segment. There is intentionally +# no [versioning] block — version-aware specs detect the absence and skip +# gracefully (same mechanism agw's standalone/unversioned docs rely on). + +[checks] +# Smoke is for multi-product cross-runs (SMOKE_PRODUCT env); agr is a single +# site, so skip. Cross-browser is opt-in and slow; run it manually when needed. +smoke = false +crossBrowser = false + +# Allowlists for known-benign noise that surfaces against real content (the +# module's bundled fixture has none of this). Tighten as content is fixed. +[allowlists] +consoleErrors = [ + # Third-party analytics/chat (GA, GTM, Qualified) make backend calls on page + # init that fail in the offline test environment, surfacing as a bare + # "invalid_request" pageerror with no stack. Not fixable without a live + # backend — suppress until those scripts are refactored to not throw on init. + "invalid_request", + # Hextra's main.min.js null-derefs (reading 'removeAttribute' / + # 'addEventListener') on the /docs/ landing page, which suppresses the + # sidebar and so omits the toggle markup main.js expects. Same class of + # benign error agw fixed at source via hidden navbar stand-in elements; + # agr hasn't adopted that yet, so suppress here until it does. + "removeAttribute", + "addEventListener", +] diff --git a/.github/workflows/framework-tests.yml b/.github/workflows/framework-tests.yml new file mode 100644 index 0000000..ccffaf6 --- /dev/null +++ b/.github/workflows/framework-tests.yml @@ -0,0 +1,126 @@ +# Hugo + Hextra docs-framework harness, run against agentregistry-oss's built site. +# +# The harness lives in solo-io/docs-theme-extras and is checked out at the +# version pinned in go.mod (semver tag or pseudo-version). Layouts and tests +# stay in lockstep — bumping the module pin is one PR that updates both. +# +# NOTE: this workflow assumes go.mod pins a RELEASED docs-theme-extras version +# with no local `replace` directive. A local `replace` (absolute path) used for +# dev will fail the Hugo build here — remove it and bump the pin before relying +# on this check. +# +# Marked continue-on-error while allowlists and fixture-aware specs settle. +# Promote to a required check once it stays green for a sustained run. + +name: Framework tests + +on: + pull_request: + paths: + - 'layouts/**' + - 'static/**' + - 'assets/**' + - 'go.mod' + - 'go.sum' + - 'hugo.yaml' + - '.docs-test.toml' + - '.github/workflows/framework-tests.yml' + workflow_dispatch: + +jobs: + framework-test-static: + name: Static checks + runs-on: ubuntu-latest + continue-on-error: true + steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417 # v6.3.0 + with: + go-version: 'stable' + cache: false + - uses: peaceiris/actions-hugo@75d2e84710de30f6ff7268e08f310b60ef14033f # v3 + with: + hugo-version: '0.160.1' + extended: true + + - name: Resolve docs-theme-extras ref from go.mod + id: theme-sha + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + # Pull the version field for the module's `require` line. exit-on-first + # match takes `require` (which precedes any `replace`) so a dev-only + # replace line doesn't shadow it. Handles tags, prereleases, and Go + # pseudo-versions. + version=$(awk -v pkg="github.com/solo-io/docs-theme-extras" ' + /^replace/ { next } + { for (i=1; i<=NF; i++) if ($i == pkg) { print $(i+1); exit } } + ' go.mod) + if [ -z "$version" ]; then + echo "Could not extract docs-theme-extras version from go.mod" >&2 + exit 1 + fi + # Pseudo-version shape: ends with .<14-digit timestamp>-<12-hex short SHA>. + if echo "$version" | grep -qE -- '\.[0-9]{14}-[0-9a-f]{12}$'; then + short=$(echo "$version" | grep -oE '[0-9a-f]{12}$') + ref=$(gh api "repos/solo-io/docs-theme-extras/commits/${short}" --jq .sha) + if [ -z "$ref" ]; then + echo "Could not resolve full SHA for short=${short}" >&2 + exit 1 + fi + else + ref="$version" + fi + echo "ref=$ref" >> "$GITHUB_OUTPUT" + + - name: Check out docs-theme-extras at module pin + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + repository: solo-io/docs-theme-extras + ref: ${{ steps.theme-sha.outputs.ref }} + path: docs-theme-extras + + - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 + with: + node-version: '20' + cache: 'npm' + cache-dependency-path: 'docs-theme-extras/package-lock.json' + + - name: Build site with Hugo + run: | + # agentregistry's assets/css/main.css is compiled by Hugo's + # css.TailwindCSS, which shells out to the Tailwind CLI declared in + # this repo's devDependencies. Install them so Hugo finds the binary. + npm install + hugo --gc --minify + + - name: Install harness dependencies + working-directory: docs-theme-extras + run: npm ci + + - name: Run static specs + working-directory: docs-theme-extras + env: + DOCS_TEST_CONFIG: ${{ github.workspace }}/.docs-test.toml + run: | + npx playwright test --project=static --reporter=list,html 2>&1 | tee playwright-output.txt + + - name: Append summary to PR check + if: always() + working-directory: docs-theme-extras + run: | + { + echo "## Framework tests — static (informational)" + echo "" + echo '```' + tail -25 playwright-output.txt 2>/dev/null || echo "No test output captured." + echo '```' + } >> "$GITHUB_STEP_SUMMARY" + + - name: Upload report + if: always() + uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7 + with: + name: framework-test-static-report + path: docs-theme-extras/playwright-report + retention-days: 7 diff --git a/.github/workflows/links.yml b/.github/workflows/links.yml new file mode 100644 index 0000000..60d5ba1 --- /dev/null +++ b/.github/workflows/links.yml @@ -0,0 +1,188 @@ +name: Links + +# Scheduled: full check on all files, creates an issue, posts to Slack. +# Pull request: local links only on changed files, no issue or Slack. +# +# The shared link-checking scripts live in the public solo-io/docs-link-checking +# repo, cloned with the built-in GITHUB_TOKEN (no dedicated secret needed). Only +# the scheduled run's Slack post needs a SLACK_BOT_TOKEN secret; PR runs skip it. +on: + workflow_dispatch: + schedule: + - cron: "00 04 * * MON" + pull_request: + paths: + - 'content/**' + - 'assets/**' + - 'static/**' + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + linkChecker: + runs-on: ubuntu-latest + timeout-minutes: 60 + permissions: + contents: read + issues: write + env: + PRODUCT_NAME: agentregistry OSS + ISSUE_TITLE: Link Checker Report - agentregistry OSS + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 100 + + - name: Checkout shared link-checking scripts + uses: actions/checkout@v4 + with: + repository: solo-io/docs-link-checking + path: docs-link-checking + # solo-io/docs-link-checking is a public repo, so the auto-provided + # GITHUB_TOKEN can clone it — no dedicated GH_TOKEN secret needed + # (agentregistry-dev/website doesn't define one). Matches the token + # used in framework-tests.yml. + token: ${{ secrets.GITHUB_TOKEN }} + + - name: Set up Hugo + uses: peaceiris/actions-hugo@v3 + with: + hugo-version: '0.160.1' + extended: true + + - name: Install Lychee + run: | + chmod +x docs-link-checking/install-lychee.sh + docs-link-checking/install-lychee.sh + + - name: Hugo build + run: | + # Tailwind CLI (this repo's devDependencies) is invoked by Hugo's + # css.TailwindCSS for assets/css/main.css. + npm install + hugo --config hugo.yaml + + - name: Prepare workspace + run: mkdir -p artifacts + + - name: Check Links with Lychee + id: lychee + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + shopt -s globstar + set +e + + # agentregistry is a flat, unversioned site (/docs/
//), + # so no version excludes/remaps are needed — just resolve absolute + # production URLs to the local build. + LYCHEE_COMMON=(lychee + --verbose + --config docs-link-checking/lychee.toml + --root-dir "${{ github.workspace }}/public" + --index-files index.html + --remap "^https://agentregistry\.dev/ file:///${{ github.workspace }}/public/" + --format json + --user-agent curl/8.4.0 + --output "${{ github.workspace }}/artifacts/agentregistry-oss-links.json" + public/**/*.html + ) + + if [ "${{ github.event_name }}" = "pull_request" ]; then + # Skip external URLs on PRs; remaps still resolve agentregistry.dev + # links to local files so internal links are checked. + "${LYCHEE_COMMON[@]}" --exclude "^https?://" + else + "${LYCHEE_COMMON[@]}" --github-token ${{ secrets.GITHUB_TOKEN }} + fi > "${{ github.workspace }}/artifacts/agentregistry-oss-links-json.log" 2>&1 + + EXIT=$? + set -e + echo "has_failures=$([ "$EXIT" != "0" ] && echo 'true' || echo 'false')" >> "$GITHUB_OUTPUT" + + - name: Generate markdown report from JSON + id: report + if: hashFiles('artifacts/agentregistry-oss-links.json') != '' + run: | + chmod +x docs-link-checking/generate-link-report.sh + docs-link-checking/generate-link-report.sh \ + "${{ github.workspace }}/artifacts/agentregistry-oss-links.json" \ + "${{ github.workspace }}/artifacts/agentregistry-oss-links.md" \ + "${{ github.workspace }}/public" \ + "${{ github.event_name == 'pull_request' && 'pr' || '' }}" + + - name: Create issue from report + if: steps.report.outputs.has_issues == 'true' && github.event_name != 'pull_request' + id: create-issue + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + uses: peter-evans/create-issue-from-file@v6 + with: + title: ${{ env.ISSUE_TITLE }} + content-filepath: ./artifacts/agentregistry-oss-links.md + + - name: Set issue URL for Slack + if: steps.report.outputs.has_issues == 'true' && github.event_name != 'pull_request' + id: issue-url + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + ISSUE_NUMBER: ${{ steps.create-issue.outputs.issue-number }} + ISSUE_TITLE: ${{ env.ISSUE_TITLE }} + LABELS: links,bug + REPOSITORY: ${{ github.repository }} + run: | + chmod +x docs-link-checking/set-issue-url.sh + docs-link-checking/set-issue-url.sh + + - name: Remove public directory + run: rm -rf public + + - name: Read link checker results + id: link-stats + env: + MD_FILE: artifacts/agentregistry-oss-links.md + JSON_FILE: artifacts/agentregistry-oss-links.json + run: | + chmod +x docs-link-checking/read-link-stats.sh + docs-link-checking/read-link-stats.sh + + - name: Post results to Slack + if: github.event_name != 'pull_request' + env: + SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }} + SLACK_CHANNEL: "#doctopus-tests" + ERRORS: ${{ steps.link-stats.outputs.errors }} + WARNINGS: ${{ steps.link-stats.outputs.warnings }} + REDIRECTS: ${{ steps.link-stats.outputs.redirects }} + ICON: ${{ steps.link-stats.outputs.icon }} + REPOSITORY: ${{ github.repository }} + RUN_ID: ${{ github.run_id }} + ISSUE_LINE: ${{ steps.issue-url.outputs.issue_line }} + run: | + chmod +x docs-link-checking/post-slack-results.sh + docs-link-checking/post-slack-results.sh + + - name: Upload artifacts + if: always() + uses: actions/upload-artifact@v4 + with: + name: link-checker-assets + path: artifacts/* + + - name: Write report to job summary + if: hashFiles('artifacts/agentregistry-oss-links.md') != '' + run: cat artifacts/agentregistry-oss-links.md >> "$GITHUB_STEP_SUMMARY" + + - name: Fail check if errors exist + if: github.event_name == 'pull_request' + env: + ERRORS: ${{ steps.link-stats.outputs.errors }} + run: | + if [ "${ERRORS:-0}" -gt 0 ]; then + echo "Link checker found ${ERRORS} error(s). See artifacts for details." + exit 1 + else + echo "Link checker found ${ERRORS} errors." + fi diff --git a/.gitignore b/.gitignore index fb92a03..510e1a8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,14 @@ # Hugo build artifacts public/ +public-*/ resources/ .hugo_build.lock +.build.log + +# Test artifacts (link checker, framework tests) +artifacts/ +playwright-report/ +test-results/ # OS files .DS_Store diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..1a64d63 --- /dev/null +++ b/Makefile @@ -0,0 +1,118 @@ +#---------------------------------------------------------------------------------- +# Hugo +#---------------------------------------------------------------------------------- + +# Production build (GC, minify). Requires node_modules for the Tailwind CLI +# that Hugo's css.TailwindCSS invokes — run `npm install` once beforehand. +.PHONY: build +build: + hugo160 --gc --minify + +# Local dev server (drafts and future-dated content shown). +.PHONY: serve +serve: + hugo160 server --buildDrafts --buildFuture + +# Alias +.PHONY: server +server: serve + +# Remove Hugo output and cache. +.PHONY: clean +clean: + rm -rf public public-* resources + +#---------------------------------------------------------------------------------- +# Framework tests (docs-theme-extras Playwright HTML harness) +# +# The harness lives in solo-io/docs-theme-extras and runs against agr's built +# public/ via .docs-test.toml (DOCS_TEST_CONFIG). Pattern A: drive it from a +# sibling clone. Targets are prefixed `framework-test-*` so they don't collide +# with any future `test-*` doc-test namespace. +# +# One-time: git clone https://github.com/solo-io/docs-theme-extras ../docs-theme-extras +# make framework-test-install +#---------------------------------------------------------------------------------- + +# Path to a docs-theme-extras checkout that hosts the harness. CI sets this +# inside $GITHUB_WORKSPACE; locally it defaults to a sibling clone. +# Override with: make framework-test FRAMEWORK_EXTRAS_DIR=/abs/path +FRAMEWORK_EXTRAS_DIR ?= ../docs-theme-extras + +# One-time install: npm packages + Playwright browser binaries in the harness +# checkout. ~120-180 MB, ~1-3 minutes. +.PHONY: framework-test-install +framework-test-install: + @if [ ! -d "$(FRAMEWORK_EXTRAS_DIR)" ]; then \ + echo "docs-theme-extras checkout not found at $(FRAMEWORK_EXTRAS_DIR)." >&2; \ + echo "Clone it as a sibling, or set FRAMEWORK_EXTRAS_DIR=/path/to/docs-theme-extras." >&2; \ + exit 1; \ + fi + cd $(FRAMEWORK_EXTRAS_DIR) && npm install + cd $(FRAMEWORK_EXTRAS_DIR) && npx playwright install --with-deps chromium firefox webkit + +# Build the site and run the full framework suite (static + browser). Opens the +# HTML report afterward. +.PHONY: framework-test +framework-test: + @$(MAKE) _framework_test_preflight + rm -rf public + hugo160 --gc --minify > .build.log 2>&1 + cd $(FRAMEWORK_EXTRAS_DIR) && \ + (DOCS_TEST_CONFIG=$(abspath ./.docs-test.toml) npx playwright test; \ + result=$$?; npx playwright show-report; exit $$result) + +# Fastest loop — static specs only, no browser launch. +.PHONY: framework-test-static +framework-test-static: + @$(MAKE) _framework_test_preflight + rm -rf public + hugo160 --gc --minify > .build.log 2>&1 + cd $(FRAMEWORK_EXTRAS_DIR) && \ + (DOCS_TEST_CONFIG=$(abspath ./.docs-test.toml) npx playwright test --project=static; \ + result=$$?; npx playwright show-report; exit $$result) + +# Chromium browser specs (tabs, mermaid, theme toggle, copy-md, console errors, +# viewport, contrast). +.PHONY: framework-test-browser +framework-test-browser: + @$(MAKE) _framework_test_preflight + rm -rf public + hugo160 --gc --minify > .build.log 2>&1 + cd $(FRAMEWORK_EXTRAS_DIR) && \ + (DOCS_TEST_CONFIG=$(abspath ./.docs-test.toml) npx playwright test --project=browser; \ + result=$$?; npx playwright show-report; exit $$result) + +# Cross-browser desktop specs across chromium, firefox, and webkit. +.PHONY: framework-test-cross-browser +framework-test-cross-browser: + @$(MAKE) _framework_test_preflight + rm -rf public + hugo160 --gc --minify > .build.log 2>&1 + cd $(FRAMEWORK_EXTRAS_DIR) && \ + (DOCS_TEST_CONFIG=$(abspath ./.docs-test.toml) npx playwright test \ + --project=cross-browser-chromium \ + --project=cross-browser-firefox \ + --project=cross-browser-webkit; \ + result=$$?; npx playwright show-report; exit $$result) + +# Open the most recent Playwright HTML report. +.PHONY: framework-test-report +framework-test-report: + @if [ ! -d "$(FRAMEWORK_EXTRAS_DIR)" ]; then \ + echo "docs-theme-extras checkout not found at $(FRAMEWORK_EXTRAS_DIR)." >&2; \ + exit 1; \ + fi + cd $(FRAMEWORK_EXTRAS_DIR) && npx playwright show-report + +# Shared preflight for the framework-test-* targets. +.PHONY: _framework_test_preflight +_framework_test_preflight: + @if [ ! -d "$(FRAMEWORK_EXTRAS_DIR)" ]; then \ + echo "docs-theme-extras checkout not found at $(FRAMEWORK_EXTRAS_DIR)." >&2; \ + echo "Clone it as a sibling, or set FRAMEWORK_EXTRAS_DIR=/path/to/docs-theme-extras." >&2; \ + exit 1; \ + fi + @if [ ! -d "$(FRAMEWORK_EXTRAS_DIR)/node_modules" ]; then \ + echo "Run 'make framework-test-install' first." >&2; exit 1; \ + fi diff --git a/assets/css/main.css b/assets/css/main.css index 7f34dd5..01bee26 100644 --- a/assets/css/main.css +++ b/assets/css/main.css @@ -52,65 +52,9 @@ } } -/* Custom CSS to force logo left alignment */ -.hextra-navbar-logo { - margin-left: 0 !important; - margin-right: auto !important; - padding-left: 1rem !important; - padding-right: 3rem !important; -} - -.hextra-navbar { - justify-content: flex-start !important; - padding-right: 4rem !important; -} - -.hextra-navbar > div:first-child { - margin-right: auto !important; -} - -/* Add padding to the right side menu items */ -.hextra-navbar > div:last-child, -.hextra-navbar > nav:last-child, -.hextra-navbar [class*="menu"]:last-child { - padding-right: 2rem !important; -} - -/* Ensure dark mode image visibility works correctly */ -.reuse-image-dark-wrapper { - display: none !important; -} - -html.dark .reuse-image-dark-wrapper, -html[data-theme="dark"] .reuse-image-dark-wrapper, -.dark .reuse-image-dark-wrapper { - display: block !important; -} - -/* Ensure light mode image visibility works correctly */ -.reuse-image-wrapper { - display: block !important; -} - -html.dark .reuse-image-wrapper, -html[data-theme="dark"] .reuse-image-wrapper, -.dark .reuse-image-wrapper { - display: none !important; -} - -/* Add more padding to the left of the sidebar */ -.hextra-sidebar-container { - padding-left: 4rem !important; -} - -/* Also target the TOC sidebar if it exists */ -.hextra-toc { - padding-left: 4rem !important; -} - -/* Target any sidebar navigation elements */ -aside[class*="sidebar"], -nav[class*="sidebar"], -[role="complementary"] { - padding-left: 2rem !important; -} +/* NOTE: pre-migration navbar/sidebar/reuse-image overrides were removed here. + They forced logo alignment and sidebar left-padding against the OLD theme and + fought docs-theme-extras' own layout (over-indenting the sidebar so the logo + no longer lined up with the nav). The reuse-image rules were also dead — the + extras `reuse-image` shortcode toggles `.toggle-dark`/`.toggle-light`, not + `.reuse-image-wrapper`. The theme aligns the navbar and sidebar itself. */ diff --git a/content/docs/_index.md b/content/docs/_index.md index 3eab0fb..a80db9e 100644 --- a/content/docs/_index.md +++ b/content/docs/_index.md @@ -1,7 +1,17 @@ --- title: agentregistry +linkTitle: Docs toc: false description: "" +# Explicitly cascade the docs layout key to every descendant. Hugo defaults +# `type` to the section name ("docs") so pages render today, but making it +# explicit hardens against that default changing and satisfies the framework +# test (matches agw-oss). +cascade: + type: docs +# Curated landing cards (headings + external video); the theme's +# auto-generated child grid can't reproduce them, so suppress it. +disableCards: true --- Agentregistry, an open source, secure, and centralized AI artifact catalog that helps you build, package, publish, discover, and govern Docker images for AI artifacts, including agents, skills, prompts, and MCP servers that are spread across multiple container registries and GitHub repositories. It provides a centralized view of the images you allow your teams to share and deploy into their environments. diff --git a/content/docs/agents/_index.md b/content/docs/agents/_index.md index 5b00dc6..002b6c0 100644 --- a/content/docs/agents/_index.md +++ b/content/docs/agents/_index.md @@ -3,13 +3,3 @@ title: Agents weight: 20 description: --- - -{{< cards >}} - -{{< card link="create" title="Create and run agents" >}} -{{< card link="publish" title="Publish agent images to agentregistry" >}} -{{< card link="deploy" title="Deploy an agent to your environment" >}} -{{< card link="mcp" title="Add MCP servers to agents" >}} -{{< card link="skills" title="Add skills to agents" >}} - -{{< /cards >}} diff --git a/content/docs/agents/create.md b/content/docs/agents/create.md index 873a251..7d29b6d 100644 --- a/content/docs/agents/create.md +++ b/content/docs/agents/create.md @@ -32,9 +32,8 @@ Agentregistry comes with built-in agent templates that you can use to quickly sp agent.yaml docker-compose.yaml Dockerfile myagent pyproject.toml README.md ``` - {{< callout type="info">}} - The `agent.yaml` file sets the image location that is used by agentregistry when you build the image and push it to your container registry. By default, agentregistry uses `ghcr.io` as the container registry and `latest` as the image tag, such as `ghcr.io/myagent:latest`. If you want to use agentregistry to push images to your container registry, make sure to update this file with the registry and image tag that you want to use. Note that this update is not required if you want to build images locally only without pushing them to your container registry. - {{< /callout >}} + > [!NOTE] + > The `agent.yaml` file sets the image location that is used by agentregistry when you build the image and push it to your container registry. By default, agentregistry uses `ghcr.io` as the container registry and `latest` as the image tag, such as `ghcr.io/myagent:latest`. If you want to use agentregistry to push images to your container registry, make sure to update this file with the registry and image tag that you want to use. Note that this update is not required if you want to build images locally only without pushing them to your container registry. | File | Description | | -- | -- | diff --git a/content/docs/agents/deploy/_index.md b/content/docs/agents/deploy/_index.md index e1d9ad4..35ae155 100644 --- a/content/docs/agents/deploy/_index.md +++ b/content/docs/agents/deploy/_index.md @@ -3,10 +3,3 @@ title: Deploy weight: 40 description: --- - -{{< cards >}} - -{{< card link="local" title="Local" >}} -{{< card link="kubernetes" title="Kubernetes" >}} - -{{< /cards >}} diff --git a/content/docs/agents/deploy/kubernetes.md b/content/docs/agents/deploy/kubernetes.md index 73d1d21..28ca3fd 100644 --- a/content/docs/agents/deploy/kubernetes.md +++ b/content/docs/agents/deploy/kubernetes.md @@ -43,9 +43,8 @@ Deploy your agent to a Kubernetes cluster. Agent 'myagent' version 'latest' deployed to providerId=kubernetes-default in namespace 'default' ``` - {{< callout type="info" >}} - If the deployment fails, a deployment entry is still created in the database and set to failed. You can view failed deployments by using the `arctl deployments list` command. Note that you cannot re-deploy a failed deployment to fix it. Instead, remove the failed deployment with `arctl deployments delete ` and then re-run the `arctl deployments create` command. - {{< /callout >}} + > [!NOTE] + > If the deployment fails, a deployment entry is still created in the database and set to failed. You can view failed deployments by using the `arctl deployments list` command. Note that you cannot re-deploy a failed deployment to fix it. Instead, remove the failed deployment with `arctl deployments delete ` and then re-run the `arctl deployments create` command. 2. Verify that the agent is up and running. ```sh @@ -92,14 +91,14 @@ Deploy your agent to a Kubernetes cluster. You can remove a deployment from the UI or CLI. -{{< tabs items="UI,CLI" >}} -{{% tab %}} +{{< tabs >}} +{{% tab name="UI" %}} 1. [Open the agentregistry UI](http://localhost:12121) and go to the **Deployed** view. 2. Find the MCP server deployment that you want to remove and click the trash icon. {{% /tab %}} -{{% tab %}} +{{% tab name="CLI" %}} 1. List the deployments in your environment and find the one that you want to delete. ```sh diff --git a/content/docs/agents/deploy/local.md b/content/docs/agents/deploy/local.md index 06cf5de..ac1f8e7 100644 --- a/content/docs/agents/deploy/local.md +++ b/content/docs/agents/deploy/local.md @@ -6,9 +6,8 @@ description: Deploy an agent from agentregistry to your local environment. Deploy an agent from agentregistry to your local environment. -{{< callout type="info" >}} -To deploy an agent to a local environment, you must install agentregistry by using Docker as shown in the [Get started](/docs/quickstart/) guide. If you installed agentregistry on Kubernetes, you cannot deploy to local environments. -{{< /callout >}} +> [!NOTE] +> To deploy an agent to a local environment, you must install agentregistry by using Docker as shown in the [Get started](/docs/quickstart/) guide. If you installed agentregistry on Kubernetes, you cannot deploy to local environments. Local deployments spin up Docker containers on your local machine from images that exist on your machine or that can be pulled from the image location reference that agentregistry points to. @@ -34,9 +33,8 @@ Local deployments spin up Docker containers on your local machine from images th Agent 'myagent' version 'latest' deployed to local provider (providerId=local) ``` - {{< callout type="info" >}} - If the deployment fails, a deployment entry is still created in the database and set to failed. You can view failed deployments by using the `arctl deployments list` command. Note that you cannot re-deploy a failed deployment to fix it. Instead, remove the failed deployment with `arctl deployments delete ` and then re-run the `arctl deployments create` command. - {{< /callout >}} + > [!NOTE] + > If the deployment fails, a deployment entry is still created in the database and set to failed. You can view failed deployments by using the `arctl deployments list` command. Note that you cannot re-deploy a failed deployment to fix it. Instead, remove the failed deployment with `arctl deployments delete ` and then re-run the `arctl deployments create` command. 3. Verify that the deployment was created. ```sh @@ -83,14 +81,14 @@ Local deployments spin up Docker containers on your local machine from images th You can remove a deployment from the UI or CLI. -{{< tabs items="UI,CLI" >}} -{{% tab %}} +{{< tabs >}} +{{% tab name="UI" %}} 1. [Open the agentregistry UI](http://localhost:12121) and go to the **Deployed** view. 2. Find the agent deployment that you want to remove and click the trash icon. {{% /tab %}} -{{% tab %}} +{{% tab name="CLI" %}} 1. List the deployments in your environment and find the one that you want to delete. ```sh diff --git a/content/docs/agents/prompt.md b/content/docs/agents/prompt.md index 0099e05..4756017 100644 --- a/content/docs/agents/prompt.md +++ b/content/docs/agents/prompt.md @@ -4,7 +4,6 @@ weight: 60 description: Add a published prompt to an agent so that it is used as the agent's instruction at runtime. --- -Add a published prompt to an agent so that it is used as the agent's instruction at runtime. ## Before you begin @@ -34,14 +33,13 @@ Add a published prompt to an agent so that it is used as the agent's instruction --registry-prompt-name code-review ``` - {{< callout type="tip" >}} - To use a prompt from a different registry, use the `--registry-url` flag. - ```sh - arctl agent add-prompt reviewer \ - --registry-prompt-name code-review \ - --registry-url https://registry.example.com - ``` - {{< /callout >}} + > [!TIP] + > To use a prompt from a different registry, use the `--registry-url` flag. + > ```sh + > arctl agent add-prompt reviewer \ + > --registry-prompt-name code-review \ + > --registry-url https://registry.example.com + > ``` Example output: ```console @@ -80,9 +78,8 @@ Add a published prompt to an agent so that it is used as the agent's instruction arctl agent run myagent ``` - {{< callout type="tip" >}} - If no prompts are resolved (for example, the registry is unreachable or no prompts are configured), the agent falls back to the default instruction defined in the `agent.py` file. - {{< /callout >}} + > [!TIP] + > If no prompts are resolved (for example, the registry is unreachable or no prompts are configured), the agent falls back to the default instruction defined in the `agent.py` file. 6. Ask the agent what it checks during a code review. Verify that you get back the steps that you defined in your prompt. diff --git a/content/docs/agents/publish.md b/content/docs/agents/publish.md index ab1986b..0663a4c 100644 --- a/content/docs/agents/publish.md +++ b/content/docs/agents/publish.md @@ -40,9 +40,8 @@ For testing purposes, the instructions in this guide assume that you do not want ✅ Successfully built Docker image: ghcr.io/myagent:latest ``` - {{< callout type="tip" >}} - To also use agentregistry to push the image to your container registry, include the `--push` option. You can also set the platform, for which you want to build the image, such as `linux/amd64` by using the `--platform` option. For more information, see the [arctl agent build](/docs/reference/cli/arctl-agent-build/) command. Make sure that you are logged in to your container registry before you run the command. - {{< /callout >}} + > [!TIP] + > To also use agentregistry to push the image to your container registry, include the `--push` option. You can also set the platform, for which you want to build the image, such as `linux/amd64` by using the `--platform` option. For more information, see the [arctl agent build](/docs/reference/cli/arctl-agent-build/) command. Make sure that you are logged in to your container registry before you run the command. 2. Verify that the image is built. ```sh diff --git a/content/docs/agents/skills.md b/content/docs/agents/skills.md index cf1929c..c58d98d 100644 --- a/content/docs/agents/skills.md +++ b/content/docs/agents/skills.md @@ -39,16 +39,13 @@ Add a skill that was previously published to agentregistry by referencing the sk --image ``` - {{< callout type="tip">}} - If the skill is packaged as a Docker image, you can reference it directly without publishing to the registry first. - - ```sh - arctl agent add-skill my-skill \ - --project-dir myagent \ - --image docker.io/user/hello-world-template:v1.0.0 - - ``` - {{< /callout >}} + > [!TIP] + > If the skill is packaged as a Docker image, you can reference it directly without publishing to the registry first. + > ```sh + > arctl agent add-skill my-skill \ + > --project-dir myagent \ + > --image docker.io/user/hello-world-template:v1.0.0 + > ``` Example output: ``` diff --git a/content/docs/install/kubernetes.md b/content/docs/install/kubernetes.md index a25d2b8..d6dbb4c 100644 --- a/content/docs/install/kubernetes.md +++ b/content/docs/install/kubernetes.md @@ -6,9 +6,8 @@ description: Use this guide to install agentregistry in a Kubernetes cluster by using Helm. This approach is useful for team environments where multiple developers need shared access to a central artifact registry. -{{< callout type="info" >}} -If you install agentregistry in a Kubernetes cluster, you cannot deploy AI artifacts to a local environment. To deploy them to a local environment, you must [install agentregistry locally with Docker](/docs/install/docker). -{{< /callout >}} +> [!NOTE] +> If you install agentregistry in a Kubernetes cluster, you cannot deploy AI artifacts to a local environment. To deploy them to a local environment, you must [install agentregistry locally with Docker](/docs/install/docker). ## Before you begin @@ -21,9 +20,8 @@ Make sure you have the following tools installed: Agentregistry requires an external PostgreSQL instance with the [pgvector](https://github.com/pgvector/pgvector) extension for Kubernetes deployments. -{{< callout type="warning" >}} -The bundled PostgreSQL setup is intended for development and testing only. For production, use a managed PostgreSQL service or a production-grade operator. -{{< /callout >}} +> [!WARNING] +> The bundled PostgreSQL setup is intended for development and testing only. For production, use a managed PostgreSQL service or a production-grade operator. ## Install with Helm diff --git a/content/docs/mcp/_index.md b/content/docs/mcp/_index.md index 0274dc0..814411f 100644 --- a/content/docs/mcp/_index.md +++ b/content/docs/mcp/_index.md @@ -3,12 +3,3 @@ title: MCP weight: 30 description: --- - -{{< cards >}} - -{{< card link="create" title="Create and run MCP servers" >}} -{{< card link="tools" title="Add tools" >}} -{{< card link="publish" title="Publish MCP server images to agentregistry" >}} -{{< card link="deploy" title="Deploy an MCP server" >}} - -{{< /cards >}} diff --git a/content/docs/mcp/deploy/_index.md b/content/docs/mcp/deploy/_index.md index 78e72cb..8cbbccf 100644 --- a/content/docs/mcp/deploy/_index.md +++ b/content/docs/mcp/deploy/_index.md @@ -2,11 +2,4 @@ title: Deploy weight: 30 description: ---- - -{{< cards >}} - -{{< card link="local" title="Local" >}} -{{< card link="kubernetes" title="Kubernetes" >}} - -{{< /cards >}} \ No newline at end of file +--- \ No newline at end of file diff --git a/content/docs/mcp/deploy/kubernetes.md b/content/docs/mcp/deploy/kubernetes.md index a20cca0..32a57d5 100644 --- a/content/docs/mcp/deploy/kubernetes.md +++ b/content/docs/mcp/deploy/kubernetes.md @@ -47,9 +47,8 @@ Deploy your agent to a Kubernetes cluster. Agent Gateway endpoint: http://localhost:21212/mcp ``` - {{< callout type="info" >}} - If the deployment fails, a deployment entry is still created in the database and set to failed. You can view failed deployments by using the `arctl deployments list` command. Note that you cannot re-deploy a failed deployment to fix it. Instead, remove the failed deployment with `arctl deployments delete ` and then re-run the `arctl deployments create` command. - {{< /callout >}} + > [!NOTE] + > If the deployment fails, a deployment entry is still created in the database and set to failed. You can view failed deployments by using the `arctl deployments list` command. Note that you cannot re-deploy a failed deployment to fix it. Instead, remove the failed deployment with `arctl deployments delete ` and then re-run the `arctl deployments create` command. 2. Verify that the MCP server is up and running. ```sh @@ -87,14 +86,14 @@ Deploy your agent to a Kubernetes cluster. You can remove a deployment from the UI or CLI. -{{< tabs items="UI,CLI" >}} -{{% tab %}} +{{< tabs >}} +{{% tab name="UI" %}} 1. [Open the agentregistry UI](http://localhost:12121) and go to the **Deployed** view. 2. Find the MCP server deployment that you want to remove and click the trash icon. {{% /tab %}} -{{% tab %}} +{{% tab name="CLI" %}} 1. List the deployments in your environment and find the one that you want to delete. ```sh diff --git a/content/docs/mcp/deploy/local.md b/content/docs/mcp/deploy/local.md index 5e98c88..2cb3fe4 100644 --- a/content/docs/mcp/deploy/local.md +++ b/content/docs/mcp/deploy/local.md @@ -6,9 +6,8 @@ description: Deploy an agent from agentregistry to your local environment. Deploy an MCP server from agentregistry to your local environment. -{{< callout type="info" >}} -To deploy an MCP server to a local environment, you must install agentregistry by using Docker as shown in the [Get started](/docs/quickstart/) guide. If you installed agentregistry on Kubernetes, you cannot deploy to local environments. -{{< /callout >}} +> [!NOTE] +> To deploy an MCP server to a local environment, you must install agentregistry by using Docker as shown in the [Get started](/docs/quickstart/) guide. If you installed agentregistry on Kubernetes, you cannot deploy to local environments. Local deployments spin up Docker containers on your local machine from images that exist on your machine or that can be pulled from the image location reference that agentregistry points to. @@ -46,9 +45,8 @@ Local deployments spin up Docker containers on your local machine from images th Agent Gateway endpoint: http://localhost:21212/mcp ``` - {{< callout type="info" >}} - If the deployment fails, a deployment entry is still created in the database and set to failed. You can view failed deployments by using the `arctl deployments list` command. Note that you cannot re-deploy a failed deployment to fix it. Instead, remove the failed deployment with `arctl deployments delete ` and then re-run the `arctl deployments create` command. - {{< /callout >}} + > [!NOTE] + > If the deployment fails, a deployment entry is still created in the database and set to failed. You can view failed deployments by using the `arctl deployments list` command. Note that you cannot re-deploy a failed deployment to fix it. Instead, remove the failed deployment with `arctl deployments delete ` and then re-run the `arctl deployments create` command. 3. Open the MCP inspector. ```sh @@ -93,14 +91,14 @@ Local deployments spin up Docker containers on your local machine from images th You can remove a deployment from the UI or CLI. -{{< tabs items="UI,CLI" >}} -{{% tab %}} +{{< tabs >}} +{{% tab name="UI" %}} 1. [Open the agentregistry UI](http://localhost:12121) and go to the **Deployed** view. 2. Find the MCP server deployment that you want to remove and click the trash icon. {{% /tab %}} -{{% tab %}} +{{% tab name="CLI" %}} 1. List the deployments in your environment and find the one that you want to delete. ```sh diff --git a/content/docs/mcp/publish.md b/content/docs/mcp/publish.md index f9661bd..fcc71bb 100644 --- a/content/docs/mcp/publish.md +++ b/content/docs/mcp/publish.md @@ -30,9 +30,8 @@ For testing purposes, the instructions in this guide assume that you do not want arctl mcp build my-mcp-server --image my-mcp-server ``` - {{< callout type="tip" >}} - To also use agentregistry to push the image to your container registry, include the `--push` option and set the `--docker-url` to your container registry address. You can also set the platform, for which you want to build the image, such as `linux/amd64` by using the `--platform` option. For more information, see the [arctl mcp publish](/docs/reference/cli/arctl-mcp-publish/) command. Make sure that you are logged in to your container registry before you run the command. - {{< /callout >}} + > [!TIP] + > To also use agentregistry to push the image to your container registry, include the `--push` option and set the `--docker-url` to your container registry address. You can also set the platform, for which you want to build the image, such as `linux/amd64` by using the `--platform` option. For more information, see the [arctl mcp publish](/docs/reference/cli/arctl-mcp-publish/) command. Make sure that you are logged in to your container registry before you run the command. Example output: ```console diff --git a/content/docs/prompts/_index.md b/content/docs/prompts/_index.md index a01dc74..074dc50 100644 --- a/content/docs/prompts/_index.md +++ b/content/docs/prompts/_index.md @@ -3,11 +3,3 @@ title: Prompts weight: 45 description: --- - - -{{< cards >}} - -{{< card link="publish" title="Create and publish prompts" >}} - - -{{< /cards >}} diff --git a/content/docs/prompts/publish.md b/content/docs/prompts/publish.md index e7c8650..bfa0392 100644 --- a/content/docs/prompts/publish.md +++ b/content/docs/prompts/publish.md @@ -34,8 +34,8 @@ EOF ## Publish the prompt 1. Publish the prompt in agentregistry. You can pass the details in CLI flags or use a prompt definition YAML file. - {{< tabs items="CLI flags,Prompt template" >}} - {{% tab %}} + {{< tabs >}} + {{% tab name="CLI flags" %}} Use the `arctl` CLI to define the details of your prompt, such as the name and version. @@ -57,7 +57,7 @@ EOF > Use `--dry-run` to preview the prompt payload without publishing. For more information, see the [arctl prompt publish](/docs/reference/cli/arctl-prompt-publish/) command. {{% /tab %}} - {{% tab %}} + {{% tab name="Prompt template" %}} For structured prompt definitions, you can use a YAML file. This lets you set all fields in one place instead of using CLI flags. diff --git a/content/docs/reference/_index.md b/content/docs/reference/_index.md index 3e0bb99..9991acd 100644 --- a/content/docs/reference/_index.md +++ b/content/docs/reference/_index.md @@ -2,12 +2,4 @@ title: Reference weight: 100 description: ---- - - -{{< cards >}} - -{{< card link="cli" title="arctl CLI command reference" >}} -{{< card link="vulnerabilities" title="Security Vulnerabilities" >}} - -{{< /cards >}} \ No newline at end of file +--- \ No newline at end of file diff --git a/content/docs/reference/cli/_index.md b/content/docs/reference/cli/_index.md index 63115c0..d131ee8 100644 --- a/content/docs/reference/cli/_index.md +++ b/content/docs/reference/cli/_index.md @@ -4,84 +4,4 @@ weight: 10 description: --- -## General Commands -{{< cards >}} - -{{< card link="arctl-version" title="arctl version" >}} -{{< card link="arctl-completion" title="arctl completion" >}} -{{< card link="arctl-configure" title="arctl configure" >}} -{{< card link="arctl-embeddings" title="arctl embeddings" >}} -{{< card link="arctl-embeddings-generate" title="arctl embeddings generate" >}} - -{{< /cards >}} - -## Agent Commands - -{{< cards >}} - -{{< card link="arctl-agent-init" title="arctl agent init" >}} -{{< card link="arctl-agent-list" title="arctl agent list" >}} -{{< card link="arctl-agent-show" title="arctl agent show" >}} -{{< card link="arctl-agent-build" title="arctl agent build" >}} -{{< card link="arctl-agent-run" title="arctl agent run" >}} -{{< card link="arctl-agent-publish" title="arctl agent publish" >}} -{{< card link="arctl-agent-delete" title="arctl agent delete" >}} -{{< card link="arctl-agent-add-mcp" title="arctl agent add-mcp" >}} -{{< card link="arctl-agent-add-prompt" title="arctl agent add-prompt" >}} -{{< card link="arctl-agent-add-skill" title="arctl agent add-skill" >}} - -{{< /cards >}} - -## MCP Commands - -{{< cards >}} - -{{< card link="arctl-mcp-list" title="arctl mcp list" >}} -{{< card link="arctl-mcp-show" title="arctl mcp show" >}} -{{< card link="arctl-mcp-init" title="arctl mcp init" >}} -{{< card link="arctl-mcp-init-go" title="arctl mcp init go" >}} -{{< card link="arctl-mcp-init-python" title="arctl mcp init python" >}} -{{< card link="arctl-mcp-add-tool" title="arctl mcp add-tool" >}} -{{< card link="arctl-mcp-build" title="arctl mcp build" >}} -{{< card link="arctl-mcp-run" title="arctl mcp run" >}} -{{< card link="arctl-mcp-publish" title="arctl mcp publish" >}} -{{< card link="arctl-mcp-delete" title="arctl mcp delete" >}} - -{{< /cards >}} - -## Skill Commands - -{{< cards >}} - -{{< card link="arctl-skill-list" title="arctl skill list" >}} -{{< card link="arctl-skill-show" title="arctl skill show" >}} -{{< card link="arctl-skill-init" title="arctl skill init" >}} -{{< card link="arctl-skill-build" title="arctl skill build" >}} -{{< card link="arctl-skill-publish" title="arctl skill publish" >}} -{{< card link="arctl-skill-pull" title="arctl skill pull" >}} -{{< card link="arctl-skill-delete" title="arctl skill delete" >}} - -{{< /cards >}} - -## Prompt Commands - -{{< cards >}} - -{{< card link="arctl-prompt-list" title="arctl prompt list" >}} -{{< card link="arctl-prompt-show" title="arctl prompt show" >}} -{{< card link="arctl-prompt-publish" title="arctl prompt publish" >}} -{{< card link="arctl-prompt-delete" title="arctl prompt delete" >}} - -{{< /cards >}} - -## Deployment Commands - -{{< cards >}} - -{{< card link="arctl-deployments-list" title="arctl deployments list" >}} -{{< card link="arctl-deployments-show" title="arctl deployments show" >}} -{{< card link="arctl-deployments-create" title="arctl deployments create" >}} -{{< card link="arctl-deployments-delete" title="arctl deployments delete" >}} - -{{< /cards >}} diff --git a/content/docs/reference/cli/arctl-skill-publish.md b/content/docs/reference/cli/arctl-skill-publish.md index 2c14645..9edc8a2 100644 --- a/content/docs/reference/cli/arctl-skill-publish.md +++ b/content/docs/reference/cli/arctl-skill-publish.md @@ -51,13 +51,11 @@ arctl skill publish ./my-skill --git https://github.com/myorg/repo --version 1.0 --version string Version to publish (required for --git or --docker-image) ``` -{{< callout type="info" >}} -The `--git` and `--docker-image` flags are mutually exclusive. One of them is required. -{{< /callout >}} +> [!NOTE] +> The `--git` and `--docker-image` flags are mutually exclusive. One of them is required. -{{< callout type="tip" >}} -To build a skill as a Docker image, use [`arctl skill build`](/docs/reference/cli/arctl-skill-build/) instead. -{{< /callout >}} +> [!TIP] +> To build a skill as a Docker image, use [`arctl skill build`](/docs/reference/cli/arctl-skill-build/) instead. ## Global flags ```sh diff --git a/content/docs/skills/_index.md b/content/docs/skills/_index.md index cf1896d..4826b39 100644 --- a/content/docs/skills/_index.md +++ b/content/docs/skills/_index.md @@ -3,12 +3,3 @@ title: Skills weight: 40 description: --- - - -{{< cards >}} - -{{< card link="create" title="Create a skill" >}} -{{< card link="publish" title="Publish skills to agentregistry" >}} -{{< card link="pull" title="Pull skills from agentregistry" >}} - -{{< /cards >}} diff --git a/content/docs/skills/publish.md b/content/docs/skills/publish.md index b21738f..905112d 100644 --- a/content/docs/skills/publish.md +++ b/content/docs/skills/publish.md @@ -34,9 +34,8 @@ To also push the image to your container registry, include the `--push` option: arctl skill build ./myskill --image docker.io/user/hello-world-template:v1.0.0 --push ``` -{{< callout type="tip" >}} -To also use agentregistry to push the image to your container registry, include the `--push` option. You can also set the platform, for which you want to build the image, such as `linux/amd64` by using the `--platform` option. For more information, see the [arctl mcp build](/docs/reference/cli/arctl-mcp-build/) command. Make sure that you are logged in to your container registry before you run the command. -{{< /callout >}} +> [!TIP] +> To also use agentregistry to push the image to your container registry, include the `--push` option. You can also set the platform, for which you want to build the image, such as `linux/amd64` by using the `--platform` option. For more information, see the [arctl mcp build](/docs/reference/cli/arctl-mcp-build/) command. Make sure that you are logged in to your container registry before you run the command. ## Publish the skill @@ -55,9 +54,8 @@ arctl skill publish ./myskill \ The skill name and description are read from the local `SKILL.md` file. The `--docker-image` flag specifies the pre-built Docker image to register. -{{< callout type="tip" >}} -To preview the registry entry without creating it, use the `--dry-run` flag. -{{< /callout >}} +> [!TIP] +> To preview the registry entry without creating it, use the `--dry-run` flag. ### Option 2: Publish from a GitHub repository (with local folder) @@ -77,9 +75,8 @@ The `--github` flag accepts full GitHub tree URLs that include a branch and subd | Specific branch | `https://github.com/myorg/my-skills/tree/main` | | Branch and subdirectory | `https://github.com/myorg/my-skills/tree/main/skills/myskill` | -{{< callout type="tip" >}} -To preview the registry entry without creating it, use the `--dry-run` flag. -{{< /callout >}} +> [!TIP] +> To preview the registry entry without creating it, use the `--dry-run` flag. ### Option 3: Direct registration with GitHub (no local files needed) @@ -97,9 +94,8 @@ In direct mode: - `--github` and `--version` are **required** and represent the source GitHub repository and the version you want to use for your skill. - `--description` is optional. -{{< callout type="tip" >}} -To preview the registry entry without creating it, use the `--dry-run` flag. -{{< /callout >}} +> [!TIP] +> To preview the registry entry without creating it, use the `--dry-run` flag. ### Option 4: Direct registration with Docker image (no local files needed) @@ -117,9 +113,8 @@ In direct mode: - `--docker-image` and `--version` are **required**. - `--description` is optional. -{{< callout type="tip" >}} -To preview the registry entry without creating it, use the `--dry-run` flag. -{{< /callout >}} +> [!TIP] +> To preview the registry entry without creating it, use the `--dry-run` flag. ## Verify the published skill diff --git a/go.mod b/go.mod index 58b0ad5..575b1a4 100644 --- a/go.mod +++ b/go.mod @@ -2,4 +2,7 @@ module github.com/agentregistry-dev/website go 1.25.1 -require github.com/imfing/hextra v0.12.3 // indirect +// docs-theme-extras declares the hextra import itself (pinned to v0.12.3), so +// hextra is a transitive dependency and is not listed here — matching +// agentgateway / kgateway / ambientmesh. Its checksums stay in go.sum. +require github.com/solo-io/docs-theme-extras v0.1.15 // indirect diff --git a/go.sum b/go.sum index 0a6f264..e24f07f 100644 --- a/go.sum +++ b/go.sum @@ -1,15 +1,2 @@ -github.com/agentregistry-dev/agentregistry v0.1.15/go.mod h1:oxXpgNJ0DBd73qljLme7T1Ayr1pUsrCv1E10JyNeOTk= -github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= -github.com/google/osv-scanner v1.9.2 h1:N5Arl9SA75afbjmX8mKURgOIaKyuK3NUjCaxDlj1KHI= -github.com/google/osv-scanner v1.9.2/go.mod h1:ZTL8Dp9z/7Jr9kkQSOGqo8z6Csqt83qMIr58aZVx+pM= -github.com/imfing/hextra v0.11.1 h1:8pTc4ReYbzGTHAnyiebmlT3ijFfIXiGu1r7tM/UGjFI= -github.com/imfing/hextra v0.11.1/go.mod h1:cEfel3lU/bSx7lTE/+uuR4GJaphyOyiwNR3PTqFTXpI= -github.com/imfing/hextra v0.12.3 h1:DZHY2rUWYteyzjlHi9r4n7Bb5e2Q+6LXe4C1Dqn0ZjM= -github.com/imfing/hextra v0.12.3/go.mod h1:vi+yhpq8YPp/aghvJlNKVnJKcPJ/VyAEcfC1BSV9ARo= -github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= -github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiTUUS4= -github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +github.com/solo-io/docs-theme-extras v0.1.15 h1:ob7bNwoRcYPv7axlQ3CT/5q/++HH0EGMWsch7qZrNsA= +github.com/solo-io/docs-theme-extras v0.1.15/go.mod h1:jjjYu/QoD+vMu30zgcpfEuTEGuJOJWs5qai/K18kltg= diff --git a/hugo.yaml b/hugo.yaml index 6ff3faf..2a252d1 100644 --- a/hugo.yaml +++ b/hugo.yaml @@ -2,8 +2,31 @@ baseURL: https://agentregistry.dev/ languageCode: en-us title: agentregistry +# The `markdown` and `llms` output formats are defined by Hextra (imported +# transitively via docs-theme-extras) and rendered by extras' templates +# (page.markdown.md, llms.txt, docs/section.llms.txt). `markdown` emits a raw +# `.md` beside each HTML page (the source external LLM fetches use); +# `llms` emits `/llms.txt` (a site index for AI crawlers) plus per-section +# variants. agentregistry is pure docs, so every page is in scope. +outputs: + home: [HTML, RSS, llms] + page: [HTML, markdown] + section: [HTML, RSS, markdown, llms] + # Enable dark mode by default params: + # Tells docs-theme-extras which brand CSS layer + font stack to load + # (see the module's layouts/partials/themeExtras/head-end.html). "oss" + # loads brand-oss.css and Open Sans; "enterprise" loads brand-enterprise.css. + themeExtras: + brand: oss + # Canonical production host (scheme + hostname, no trailing slash, no path). + # Read by the docs-theme-extras module's `utils/prod-host` partial and reused + # across layouts (copy-markdown, llms.txt, page-to-markdown) that emit + # absolute URLs which need to resolve when pasted outside the build's + # preview URL. + prodHost: "https://agentregistry.dev" + theme: default: dark displayToggle: true @@ -20,11 +43,29 @@ params: page: width: full - + + # agentregistry is a flat docs set where /docs/ is the real entry point, so + # render the left nav on the docs-index landing (the theme hides it by + # default, which suits versioned sites' version-picker landings). + sidebar: + showOnLanding: true + footer: displayCopyright: true displayPoweredBy: false - + + # "Was this page helpful?" widget at the bottom of docs pages (same as + # agw/kgw). Thumbs-down opens a GitHub issue against issueRepo. Suppress + # per-page with `hide_feedback: true` in front matter. + feedback: + enable: false + issueRepo: agentregistry-dev/website + + # Intro line placed at the top of the generated /llms.txt (see the `llms` + # output format above). Read by extras' llms.txt template. + llms: + docsIntro: agentregistry is an open source registry for discovering, publishing, and sharing AI agents and MCP (Model Context Protocol) servers. + # External links editURL: enable: true @@ -72,7 +113,7 @@ menu: type: search - name: GitHub weight: 10 - url: https://github.com/agentregistry-dev/agentregistry + url: https://github.com/agentregistry-dev/website params: icon: github - name: Theme @@ -83,7 +124,12 @@ menu: # Module imports module: imports: - - path: github.com/imfing/hextra + # hextra used to live here as a sibling import; docs-theme-extras + # now declares the hextra import itself, so consumers no longer + # need to list it separately. The shadowing order stays correct: + # docs-theme-extras's own layouts win over the transitively-imported + # hextra ones. + - path: github.com/solo-io/docs-theme-extras mounts: - source: assets target: assets diff --git a/hugo_stats.json b/hugo_stats.json index 55524cc..b0acf92 100644 --- a/hugo_stats.json +++ b/hugo_stats.json @@ -9,6 +9,7 @@ "button", "circle", "code", + "dialog", "div", "em", "figcaption", @@ -56,9 +57,6 @@ "ul" ], "classes": [ - "[-webkit-tap-highlight-color:transparent]", - "[-webkit-touch-callout:none]", - "[hyphens:auto]", "[word-break:break-word]", "accent", "active", @@ -75,7 +73,6 @@ "bb-panel-link", "bb-panel-title", "bb-split", - "bg-slate-950", "bottom", "btn", "btn-dark", @@ -92,11 +89,28 @@ "container-narrow", "content", "copy", + "copy-md-btn", + "copy-md-chevron", + "copy-md-dialog", + "copy-md-dialog-actions", + "copy-md-dialog-body", + "copy-md-dialog-close", + "copy-md-dialog-copy", + "copy-md-dialog-copy-label", + "copy-md-dialog-download", + "copy-md-dialog-header", + "copy-md-dialog-pre", + "copy-md-dialog-title", + "copy-md-dropdown", + "copy-md-dropdown-sep", + "copy-md-label", + "copy-md-source", + "copy-md-split", + "copy-md-toggle", + "copy-md-wrapper", "cta-banner", "cta-banner-inner", "cta-snippet", - "dark:block", - "dark:hidden", "dots", "eyebrow", "faq-a", @@ -136,9 +150,6 @@ "hero-lockup", "hero-sub", "hero-tagline", - "hextra-card", - "hextra-card-icon", - "hextra-cards", "hextra-code-block", "hextra-code-copy-btn", "hextra-code-copy-btn-container", @@ -155,43 +166,27 @@ "hextra-search-results", "hextra-search-status", "hextra-search-wrapper", - "hextra-sidebar-active-item", - "hextra-sidebar-children", - "hextra-sidebar-collapsible-button", "hextra-sidebar-container", - "hextra-sidebar-item", "hextra-success-icon", "hextra-tabs-panel", "hextra-tabs-toggle", "hextra-theme-toggle", "hextra-theme-toggle-options", "hextra-toc", - "hidden", "highlight", "hx:-mb-0.5", "hx:-ml-2", "hx:-mr-2", "hx:-mt-20", - "hx:-translate-y-1/2", "hx:absolute", "hx:active:bg-gray-400/20", "hx:active:opacity-50", - "hx:active:shadow-gray-200", - "hx:active:shadow-sm", "hx:align-middle", "hx:appearance-none", - "hx:before:absolute", - "hx:before:bg-gray-200", - "hx:before:content-[\"\"]", - "hx:before:content-['#']", - "hx:before:inset-y-1", - "hx:before:opacity-25", - "hx:before:w-px", "hx:bg-amber-100", "hx:bg-black/[.05]", "hx:bg-blue-100", "hx:bg-green-100", - "hx:bg-primary-100", "hx:bg-primary-700/5", "hx:bg-transparent", "hx:bg-white", @@ -204,43 +199,25 @@ "hx:border-black/5", "hx:border-blue-200", "hx:border-gray-200", - "hx:border-gray-500", "hx:border-green-200", "hx:border-t", "hx:border-transparent", - "hx:bottom-0", "hx:break-words", "hx:capitalize", "hx:contrast-more:border", "hx:contrast-more:border-current", - "hx:contrast-more:border-gray-800", "hx:contrast-more:border-gray-900", "hx:contrast-more:border-neutral-400", - "hx:contrast-more:border-primary-500", - "hx:contrast-more:border-t", - "hx:contrast-more:border-transparent", "hx:contrast-more:dark:border-current", "hx:contrast-more:dark:border-gray-50", - "hx:contrast-more:dark:border-neutral-400", - "hx:contrast-more:dark:border-primary-500", - "hx:contrast-more:dark:hover:border-gray-50", "hx:contrast-more:dark:shadow-[0_0_0_1px_#fff]", - "hx:contrast-more:dark:shadow-none", - "hx:contrast-more:dark:text-current", "hx:contrast-more:dark:text-gray-100", "hx:contrast-more:dark:text-gray-300", - "hx:contrast-more:dark:text-gray-50", - "hx:contrast-more:font-bold", - "hx:contrast-more:hover:border-gray-900", "hx:contrast-more:shadow-[0_0_0_1px_#000]", - "hx:contrast-more:shadow-none", "hx:contrast-more:text-current", "hx:contrast-more:text-gray-700", "hx:contrast-more:text-gray-800", - "hx:contrast-more:text-gray-900", - "hx:contrast-more:underline", "hx:cursor-pointer", - "hx:dark:before:bg-neutral-800", "hx:dark:bg-amber-900/30", "hx:dark:bg-blue-900/30", "hx:dark:bg-dark", @@ -249,64 +226,45 @@ "hx:dark:bg-green-900/30", "hx:dark:bg-neutral-900", "hx:dark:bg-primary-300/10", - "hx:dark:bg-primary-400/10", "hx:dark:block", "hx:dark:border-amber-200/30", "hx:dark:border-blue-200/30", "hx:dark:border-gray-100/20", - "hx:dark:border-gray-400", "hx:dark:border-green-200/30", "hx:dark:border-neutral-700", "hx:dark:border-neutral-800", "hx:dark:border-white/10", "hx:dark:contrast-more:border-neutral-400", "hx:dark:focus-visible:bg-dark", - "hx:dark:group-hover:text-gray-50", "hx:dark:hidden", - "hx:dark:hover:bg-gray-100/5", "hx:dark:hover:bg-neutral-800", - "hx:dark:hover:bg-neutral-900", - "hx:dark:hover:bg-primary-100/5", - "hx:dark:hover:border-gray-100", - "hx:dark:hover:border-neutral-700", "hx:dark:hover:border-neutral-800", - "hx:dark:hover:shadow-none", "hx:dark:hover:text-gray-100", "hx:dark:hover:text-gray-200", - "hx:dark:hover:text-gray-300", "hx:dark:hover:text-gray-50", - "hx:dark:hover:text-neutral-50", "hx:dark:hover:text-white", "hx:dark:placeholder:text-gray-400", - "hx:dark:shadow-[0_-12px_16px_#111]", "hx:dark:shadow-[0_-1px_0_rgba(255,255,255,.1)_inset]", - "hx:dark:shadow-none", "hx:dark:text-amber-200", "hx:dark:text-blue-200", - "hx:dark:text-gray-100", "hx:dark:text-gray-200", "hx:dark:text-gray-300", "hx:dark:text-gray-400", "hx:dark:text-green-200", - "hx:dark:text-neutral-200", - "hx:dark:text-neutral-400", - "hx:dark:text-primary-600", "hx:dark:text-slate-100", "hx:data-[state=selected]:block", "hx:data-[state=selected]:border-primary-500", "hx:data-[state=selected]:dark:border-primary-500", "hx:data-[state=selected]:dark:text-primary-600", "hx:data-[state=selected]:text-primary-600", - "hx:duration-200", - "hx:duration-75", "hx:first:mt-0", "hx:flex", + "hx:flex-1", "hx:flex-col", "hx:focus-visible:bg-white", "hx:font-bold", "hx:font-medium", "hx:font-mono", - "hx:font-semibold", "hx:gap-1", "hx:gap-1.5", "hx:gap-2", @@ -316,36 +274,24 @@ "hx:group", "hx:group-[.copied]/copybtn:block", "hx:group-[.copied]/copybtn:hidden", - "hx:group-data-[active=true]:dark:text-primary-600", - "hx:group-data-[active=true]:text-primary-800", "hx:group-data-[theme=dark]:hidden", "hx:group-data-[theme=light]:hidden", "hx:group-data-[theme=system]:hidden", "hx:group-hover/code:opacity-100", - "hx:group-hover:text-gray-900", "hx:group/code", "hx:group/copybtn", "hx:grow", "hx:h-0", - "hx:h-16", - "hx:h-3.5", + "hx:h-24", "hx:h-4", "hx:h-5", - "hx:h-7", - "hx:h-[18px]", "hx:h-full", "hx:hextra-focus-visible", "hx:hextra-focus-visible-inset", "hx:hidden", "hx:hover:bg-gray-100", - "hx:hover:bg-gray-800/5", - "hx:hover:bg-slate-50", "hx:hover:border-gray-200", - "hx:hover:border-gray-300", - "hx:hover:border-gray-900", "hx:hover:opacity-75", - "hx:hover:shadow-gray-100", - "hx:hover:shadow-md", "hx:hover:text-black", "hx:hover:text-gray-800", "hx:hover:text-gray-900", @@ -357,41 +303,28 @@ "hx:inset-y-0", "hx:items-center", "hx:items-start", - "hx:justify-between", + "hx:items-stretch", "hx:justify-center", "hx:justify-end", "hx:justify-items-start", - "hx:justify-start", "hx:leading-5", "hx:leading-7", "hx:leading-tight", "hx:lg:grid-cols-3", - "hx:ltr:-mr-4", - "hx:ltr:before:left-0", "hx:ltr:md:left-auto", - "hx:ltr:ml-1", - "hx:ltr:ml-3", "hx:ltr:ml-auto", "hx:ltr:mr-auto", "hx:ltr:pl-3", "hx:ltr:pl-4", - "hx:ltr:pl-8", - "hx:ltr:pr-0", - "hx:ltr:pr-2", "hx:ltr:pr-4", - "hx:ltr:pr-8", "hx:ltr:pr-9", "hx:ltr:right-1.5", - "hx:ltr:right-2", "hx:ltr:right-3", "hx:ltr:rotate-180", "hx:ltr:text-right", "hx:m-[11px]", - "hx:max-h-(--menu-height)", "hx:max-h-64", - "hx:max-h-[calc(100vh-var(--navbar-height)-env(safe-area-inset-bottom))]", "hx:max-h-[min(calc(50vh-11rem-env(safe-area-inset-bottom)),400px)]", - "hx:max-md:[transform:translate3d(0,-100%,0)]", "hx:max-md:hidden", "hx:max-w-[50%]", "hx:max-w-[min(calc(100vw-2rem),calc(100%+20rem))]", @@ -400,67 +333,52 @@ "hx:mb-16", "hx:mb-4", "hx:mb-8", + "hx:md:block", + "hx:md:dark:block", "hx:md:grid-cols-2", - "hx:md:h-[calc(100vh-var(--navbar-height)-var(--menu-height))]", "hx:md:hidden", "hx:md:inline-flex", "hx:md:max-h-[min(calc(100vh-5rem-env(safe-area-inset-bottom)),400px)]", "hx:md:px-12", - "hx:md:self-start", - "hx:md:shrink-0", - "hx:md:sticky", "hx:md:text-lg", "hx:md:text-sm", - "hx:md:top-16", "hx:md:w-64", "hx:min-h-[100px]", "hx:min-h-[calc(100vh-var(--navbar-height))]", "hx:min-w-0", - "hx:min-w-[18px]", - "hx:min-w-[24px]", "hx:min-w-full", + "hx:ml-3", + "hx:mr-1", "hx:mr-2", + "hx:mt-1", "hx:mt-1.5", "hx:mt-16", "hx:mt-2", "hx:mt-4", "hx:mt-6", - "hx:mt-8", - "hx:mt-auto", - "hx:mx-4", "hx:mx-auto", "hx:my-1.5", - "hx:my-2", - "hx:no-underline", "hx:opacity-0", + "hx:order-first", "hx:order-last", - "hx:origin-center", "hx:overflow-auto", - "hx:overflow-hidden", "hx:overflow-x-auto", - "hx:overflow-x-hidden", - "hx:overflow-y-auto", "hx:overflow-y-hidden", "hx:overscroll-contain", "hx:overscroll-x-contain", - "hx:p-0", - "hx:p-0.5", "hx:p-1", "hx:p-1.5", "hx:p-2", - "hx:p-4", "hx:pb-8", "hx:pb-px", "hx:placeholder:text-gray-500", "hx:pointer-events-none", - "hx:pr-4", "hx:pr-[calc(env(safe-area-inset-right)-1.5rem)]", "hx:print:hidden", "hx:pt-4", "hx:pt-6", "hx:pt-8", "hx:px-1.5", - "hx:px-2", "hx:px-3", "hx:px-4", "hx:px-6", @@ -470,43 +388,26 @@ "hx:py-4", "hx:relative", "hx:right-0", - "hx:rounded-full", "hx:rounded-lg", "hx:rounded-md", "hx:rounded-sm", "hx:rounded-t", "hx:rounded-xl", - "hx:rounded-xs", - "hx:rtl:-ml-4", "hx:rtl:-rotate-180", - "hx:rtl:before:right-0", "hx:rtl:left-1.5", - "hx:rtl:left-2", "hx:rtl:left-3", "hx:rtl:md:right-auto", "hx:rtl:ml-auto", - "hx:rtl:mr-1", - "hx:rtl:mr-3", "hx:rtl:mr-auto", - "hx:rtl:pl-0", - "hx:rtl:pl-2", "hx:rtl:pl-4", - "hx:rtl:pl-8", "hx:rtl:pl-9", "hx:rtl:pr-3", "hx:rtl:pr-4", - "hx:rtl:pr-8", "hx:rtl:text-left", - "hx:scroll-my-6", - "hx:scroll-py-6", "hx:select-none", - "hx:shadow-[0_-12px_16px_#fff]", - "hx:shadow-[0_-12px_16px_white]", "hx:shadow-[0_2px_4px_rgba(0,0,0,.02),0_1px_0_rgba(0,0,0,.06)]", - "hx:shadow-gray-100", "hx:shadow-lg", "hx:shadow-xl", - "hx:shadow-xs", "hx:shrink-0", "hx:sm:flex", "hx:sm:flex-row", @@ -521,7 +422,6 @@ "hx:text-blue-900", "hx:text-center", "hx:text-current", - "hx:text-ellipsis", "hx:text-gray-100", "hx:text-gray-500", "hx:text-gray-600", @@ -529,50 +429,42 @@ "hx:text-gray-900", "hx:text-green-900", "hx:text-left", - "hx:text-primary-800", "hx:text-slate-900", "hx:text-sm", - "hx:text-xs", "hx:top-0", - "hx:top-1/2", - "hx:top-16", "hx:top-full", "hx:tracking-tight", "hx:transition", "hx:transition-all", "hx:transition-colors", "hx:transition-opacity", - "hx:transition-transform", - "hx:w-3.5", "hx:w-4", + "hx:w-5", "hx:w-64", "hx:w-full", "hx:w-max", "hx:w-screen", "hx:whitespace-nowrap", - "hx:wrap-break-word", "hx:xl:block", "hx:xl:grid-cols-4", "hx:z-20", + "hx:z-50", "hx:z-[-1]", "icon-moon", "icon-sun", "left", "link-arrow", - "max-w-7xl", "mf-label", "mf-num", "mf-step", "mini-flow", - "mx-auto", "nav", "nav-brand", "nav-inner", "nav-link", "nav-link-kbd", "nav-links", - "not-prose", - "open", + "page-description", "preview-appbar", "preview-appbar-brand", "preview-appbar-right", @@ -582,23 +474,55 @@ "preview-window-chrome", "product-preview", "prompt", - "px-8", - "py-8", "qs-step", "qs-step-num", "quickstart", "quickstart-steps", - "reuse-image-dark-wrapper", - "reuse-image-wrapper", "right", "section", + "section-card", + "section-card-body", + "section-card-desc", + "section-card-title", + "section-cards", "section-head", "section-pad-sm", + "sidebar-active-item", + "sidebar-children", + "sidebar-container", + "sidebar-link", + "sidebar-link-wrapper", + "sidebar-list", + "sidebar-list-depth-0", + "sidebar-list-depth-1", + "sidebar-list-depth-2", + "sidebar-mobile-overlay", + "sidebar-mobile-panel", + "sidebar-nav", + "sidebar-nav-wrapper", + "sidebar-toggle", "socials", + "solo-breadcrumb", + "solo-breadcrumb-home", + "solo-breadcrumb-link", + "solo-breadcrumb-sep", + "solo-footer", + "solo-footer-inner", + "solo-mobile-drawer-search", + "solo-sidebar-mobile-trigger", + "solo-sidebar-trigger-tabletonly", + "solo-toc-back-to-top", + "solo-toc-bottom", + "solo-toc-heading", + "solo-toc-inner", + "solo-toc-item", + "solo-toc-link", + "solo-toc-sublist", "split", "split-card", "split-card-eyebrow", "subheading-anchor", + "table-wrapper", "terminal", "terminal-badges", "terminal-body", @@ -606,10 +530,10 @@ "terminal-dots", "terminal-stage", "terminal-title", - "text-center", - "text-slate-400", "theme-toggle", "tick", + "toggle-dark", + "toggle-light", "top", "url" ], @@ -624,7 +548,6 @@ "add-a-skill", "add-mcp-server", "add-tools", - "agent-commands", "agents", "ar-orbit", "artifact-registry-infrastructure", @@ -654,7 +577,6 @@ "deploy-the-agent", "deploy-the-mcp-server", "deployed-view", - "deployment-commands", "disclosures", "discovery", "discovery-across-environments", @@ -666,7 +588,6 @@ "features", "from-the-registry", "gateway", - "general-commands", "get-started", "global-flags", "governance-and-approval", @@ -677,7 +598,8 @@ "install-arctl", "install-with-helm", "learn-more", - "mcp-commands", + "mobile-icons-menu", + "mobile-icons-toggle", "next", "next-steps", "option-1-publish-with-a-docker-image-from-local-folder", @@ -685,7 +607,6 @@ "option-3-direct-registration-with-github-no-local-files-needed", "option-4-direct-registration-with-docker-image-no-local-files-needed", "preview-appbar", - "prompt-commands", "prompts", "public-disclosure", "publish-the-agent-image", @@ -701,25 +622,21 @@ "servers", "set-up-postgresql", "setup", - "skill-commands", "skills", + "solo-back-to-top", "specify-a-version", "tabs-panel-tabs-00-0", "tabs-panel-tabs-00-1", - "tabs-panel-tabs-01-0", - "tabs-panel-tabs-01-1", - "tabs-panel-tabs-03-0", - "tabs-panel-tabs-03-1", - "tabs-panel-tabs-10-0", - "tabs-panel-tabs-10-1", + "tabs-panel-tabs-02-0", + "tabs-panel-tabs-02-1", + "tabs-panel-tabs-08-0", + "tabs-panel-tabs-08-1", "tabs-tab-tabs-00-0", "tabs-tab-tabs-00-1", - "tabs-tab-tabs-01-0", - "tabs-tab-tabs-01-1", - "tabs-tab-tabs-03-0", - "tabs-tab-tabs-03-1", - "tabs-tab-tabs-10-0", - "tabs-tab-tabs-10-1", + "tabs-tab-tabs-02-0", + "tabs-tab-tabs-02-1", + "tabs-tab-tabs-08-0", + "tabs-tab-tabs-08-1", "terminal", "terminal-body", "the-skillmd-file", diff --git a/i18n/en.yaml b/i18n/en.yaml new file mode 100644 index 0000000..d8ba246 --- /dev/null +++ b/i18n/en.yaml @@ -0,0 +1,6 @@ +# Overrides Hextra's default i18n strings for English. Hextra ships +# `copyright: "© 2026 Hextra Project."`; the extras footer falls back to this +# i18n value when params.footer.copyright is unset, so override it here with the +# product's own line (same pattern as agw-oss). Year is static, matching agw and +# Hextra's own default — bump it at the turn of the year. +copyright: "© 2026, agentregistry, a Series of LF Projects, LLC. All rights reserved." diff --git a/layouts/_partials/custom/head-end.html b/layouts/_partials/custom/head-end.html new file mode 100644 index 0000000..a37a756 --- /dev/null +++ b/layouts/_partials/custom/head-end.html @@ -0,0 +1,30 @@ +{{- /* + Module bootstrap MUST be the first call here. docs-theme-extras ships + its head-end content (brand CSS, fonts, sidebar-loading, hash scroll, + TOC scroll-spy, Copy-as-Markdown, version dropdown JS) inside + themeExtras/head-end.html instead of partials/custom/head-end.html + because Hugo's project-over-imports precedence would let this very file + silently win and drop the module's bootstrap. The explicit invocation + below is the documented contract — see the module's + themeExtras/head-end.html header for the why. + + Everything BELOW the partial call is agentregistry-oss-specific (GTM, + the full-width navbar override, the local Tailwind css.html pipeline). +*/ -}} +{{ partial "themeExtras/head-end.html" . }} + +{{ with .Site.Params.gtmContainerID }} +{{/* Google Tag Manager — matches ambientmesh.io/layouts/partials/custom/head-end.html */}} + +{{/* End Google Tag Manager */}} +{{ end }} +{{ with (templates.Defer (dict "key" "global")) }} + {{ partial "css.html" . }} +{{ end }} + diff --git a/layouts/list.rss.xml b/layouts/list.rss.xml deleted file mode 100644 index eed737d..0000000 --- a/layouts/list.rss.xml +++ /dev/null @@ -1,47 +0,0 @@ -{{- /* - Override Hextra list.rss.xml: Hugo v0.156+ removed .Site.Author. - Optional RSS contact: set params.author.name / params.author.email in hugo.yaml. -*/ -}} - - - {{ .Site.Title }} – {{ .Title }} - {{ .Permalink }} - Recent content {{ if ne .Title .Site.Title }}{{ with .Title }}in {{.}} {{ end }}{{ end }}on {{ .Site.Title }} - Hugo -- gohugo.io{{ with .Site.LanguageCode }} - {{.}}{{ end }}{{ with .Site.Params.author }}{{ with .email }} - {{.}}{{ with $.Site.Params.author.name }} ({{.}}){{ end }} - {{.}}{{ with $.Site.Params.author.name }} ({{.}}){{ end }}{{ end }}{{ end }}{{ with .Site.Copyright }} - {{.}}{{ end }}{{ if not .Date.IsZero }} - {{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}{{ end }} - {{ with .OutputFormats.Get "RSS" }} - {{ printf "" .Permalink .MediaType | safeHTML }} - {{ end }} - {{ if not $.Section }} - {{ $sections := .Site.Params.rss.sections | default (slice "blog") }} - {{ .Store.Set "rssPages" (first 50 (where $.Site.RegularPages "Type" "in" $sections )) }} - {{ else }} - {{ if $.Parent.IsHome }} - {{ .Store.Set "rssPages" (first 50 (where $.Site.RegularPages "Type" $.Section )) }} - {{ else }} - {{ .Store.Set "rssPages" (first 50 $.Pages) }} - {{ end }} - {{ end }} - {{ range (.Store.Get "rssPages") }} - - {{ .Title }} - {{ .Permalink }} - {{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }} - {{ with $.Site.Params.author }}{{ with .email }}{{.}}{{ with $.Site.Params.author.name }} ({{.}}){{ end }}{{ end }}{{ end }} - {{ .Permalink }} - - {{ $img := (.Resources.ByType "image").GetMatch "*featured*" }} - {{ with $img }} - {{ $img := .Resize "640x" }} - {{ printf "]]>" $img.Permalink $img.Width $img.Height | safeHTML }} - {{ end }} - {{ .Content | html }} - - - {{ end }} - - diff --git a/layouts/partials/community-meeting-compact.html b/layouts/partials/community-meeting-compact.html deleted file mode 100644 index f8a58f0..0000000 --- a/layouts/partials/community-meeting-compact.html +++ /dev/null @@ -1,106 +0,0 @@ -{{ $meeting := .Site.Data.community.meeting }} - - -
- Community Meeting - - - -
- - - - diff --git a/layouts/partials/custom/head-end.html b/layouts/partials/custom/head-end.html deleted file mode 100644 index adc0642..0000000 --- a/layouts/partials/custom/head-end.html +++ /dev/null @@ -1,52 +0,0 @@ -{{ with .Site.Params.gtmContainerID }} -{{/* Google Tag Manager — matches ambientmesh.io/layouts/partials/custom/head-end.html */}} - -{{/* End Google Tag Manager */}} -{{ end }} - - -{{ with (templates.Defer (dict "key" "global")) }} - {{ partial "css.html" . }} -{{ end }} - diff --git a/layouts/partials/footer.html b/layouts/partials/footer.html deleted file mode 100644 index 0e8a1bd..0000000 --- a/layouts/partials/footer.html +++ /dev/null @@ -1,3 +0,0 @@ -{{ if ne .Section "docs" }} -

© 2026 Solo.io. All rights reserved.

-{{ end }} \ No newline at end of file diff --git a/layouts/partials/quotes-carousel.html b/layouts/partials/quotes-carousel.html deleted file mode 100644 index 93afbf9..0000000 --- a/layouts/partials/quotes-carousel.html +++ /dev/null @@ -1,107 +0,0 @@ -
-
-
-
- agentgateway logo -
- - -
-
-
- {{ $quotes := .Site.Data.quotes }} - {{ if $quotes }} -
- {{ range $index, $q := $quotes }} -
- {{ with $q.logo }} -
- {{ with $q.title }}{{ . }} logo{{ else }}{{ $q.author }} logo{{ end }} -
- {{ end }} -
“{{ $q.quote }}”
-
-
{{ $q.author }}
-
{{ with $q.title }}{{ . }}{{ end }}
-
-
- {{ end }} -
- - {{ end }} -
-
-
-
- diff --git a/layouts/shortcodes/button.html b/layouts/shortcodes/button.html deleted file mode 100644 index 6913f3c..0000000 --- a/layouts/shortcodes/button.html +++ /dev/null @@ -1,49 +0,0 @@ -{{ if eq .Params.style "primary" }} - - {{ if ne .Params.iconRight "true" }} - {{ if .Params.icon }} - {{- if eq .Params.icon "github" -}} - {{ partial "utils/icon.html" (dict "name" "github" "attributes" "class='w-5'") }} - - {{- else -}} - {{ partial "utils/icon.html" (dict "name" .Params.icon "attributes" "class='w-5'") }} - {{- end -}} - {{ end }} - {{ end}} - {{ .Params.text }} - {{ if eq .Params.iconRight "true"}} - {{ if .Params.icon }} - {{- if eq .Params.icon "github" -}} - {{ partial "utils/icon.html" (dict "name" "github" "attributes" "class='w-5'") }} - - {{- else -}} - {{ partial "utils/icon.html" (dict "name" .Params.icon "attributes" "class='w-5'") }} - {{- end -}} - {{ end }} - {{ end }} - -{{ else }} - - {{ if ne .Params.iconRight "true" }} - {{ if .Params.icon }} - {{- if eq .Params.icon "github" -}} - {{ partial "utils/icon.html" (dict "name" "github" "attributes" "class='w-5'") }} - - {{- else -}} - {{ partial "utils/icon.html" (dict "name" .Params.icon "attributes" "class='w-5'") }} - {{- end -}} - {{ end }} - {{ end}} - {{ .Params.text }} - {{ if eq .Params.iconRight "true"}} - {{ if .Params.icon }} - {{- if eq .Params.icon "github" -}} - {{ partial "utils/icon.html" (dict "name" "github" "attributes" "class='w-5'") }} - - {{- else -}} - {{ partial "utils/icon.html" (dict "name" .Params.icon "attributes" "class='w-5'") }} - {{- end -}} - {{ end }} - {{ end }} - -{{ end }} diff --git a/layouts/shortcodes/community-meeting.html b/layouts/shortcodes/community-meeting.html deleted file mode 100644 index 5198b88..0000000 --- a/layouts/shortcodes/community-meeting.html +++ /dev/null @@ -1,189 +0,0 @@ -{{ $meeting := .Site.Data.community.meeting }} - -
-
-
- - -
-
-
-

{{ $meeting.title }}

-
- -
-
- - - - {{ $meeting.day }}s -
-
- - - - {{ $meeting.time }} {{ $meeting.timezone }} -
-
- -

{{ $meeting.description }}

- -
-
- - - -
-
-
- - - - diff --git a/layouts/shortcodes/community-quotes.html b/layouts/shortcodes/community-quotes.html deleted file mode 100644 index 86108a4..0000000 --- a/layouts/shortcodes/community-quotes.html +++ /dev/null @@ -1,35 +0,0 @@ -{{ $data := .Site.Data.quotes }} - -{{ if $data }} -
-
-

- Quotes from the community -

-
- {{ range $data }} -
-

“{{ .quote }}”

-
- {{ if .avatarPath }} -
- {{ end }} -
- {{ if .name }} - - {{ .name }} - - {{ end }} - {{ if .role }} - - {{ .role }} - - {{ end }} -
-
-
- {{ end }} -
-
-
-{{ end }} \ No newline at end of file diff --git a/layouts/shortcodes/hackathon-banner.html b/layouts/shortcodes/hackathon-banner.html deleted file mode 100644 index c7423ed..0000000 --- a/layouts/shortcodes/hackathon-banner.html +++ /dev/null @@ -1,77 +0,0 @@ - - - diff --git a/layouts/shortcodes/quotes-carousel.html b/layouts/shortcodes/quotes-carousel.html deleted file mode 100644 index c3bec07..0000000 --- a/layouts/shortcodes/quotes-carousel.html +++ /dev/null @@ -1 +0,0 @@ -{{ partial "quotes-carousel.html" . }} diff --git a/layouts/shortcodes/reuse-image-dark.html b/layouts/shortcodes/reuse-image-dark.html deleted file mode 100644 index 3ce0176..0000000 --- a/layouts/shortcodes/reuse-image-dark.html +++ /dev/null @@ -1,6 +0,0 @@ -{{ $srcDark := .Get "srcDark"}} -{{ $width := .Get "width" }} -{{ $alt := .Get "alt" }} -{{ $imageDark := resources.Get $srcDark }} -{{ $caption := .Get "caption" }} - diff --git a/layouts/shortcodes/reuse-image.html b/layouts/shortcodes/reuse-image.html deleted file mode 100644 index ab21cc2..0000000 --- a/layouts/shortcodes/reuse-image.html +++ /dev/null @@ -1,6 +0,0 @@ -{{ $src := .Get "src" }} -{{ $width := .Get "width" }} -{{ $alt := .Get "alt" }} -{{ $image := resources.Get $src }} -{{ $caption := .Get "caption" }} -
{{ $alt }}
{{ $caption }}
\ No newline at end of file diff --git a/public/img/agent-registry-logo.svg b/public/img/agent-registry-logo.svg deleted file mode 100644 index c949319..0000000 --- a/public/img/agent-registry-logo.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/public/img/dev-scenario.svg b/public/img/dev-scenario.svg deleted file mode 100644 index b09badb..0000000 --- a/public/img/dev-scenario.svg +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/img/operator-scenario.svg b/public/img/operator-scenario.svg deleted file mode 100644 index 3d2fda0..0000000 --- a/public/img/operator-scenario.svg +++ /dev/null @@ -1,280 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/img/addtools.gif b/static/img/addtools.gif similarity index 100% rename from public/img/addtools.gif rename to static/img/addtools.gif diff --git a/public/img/createagents.gif b/static/img/createagents.gif similarity index 100% rename from public/img/createagents.gif rename to static/img/createagents.gif diff --git a/public/img/createmcp.gif b/static/img/createmcp.gif similarity index 100% rename from public/img/createmcp.gif rename to static/img/createmcp.gif diff --git a/public/img/createskill.gif b/static/img/createskill.gif similarity index 100% rename from public/img/createskill.gif rename to static/img/createskill.gif