From a01ba00fd30bf1e7caaedb1813d8c452b295d75d Mon Sep 17 00:00:00 2001 From: Ompragash Date: Thu, 23 Jul 2026 05:14:54 +0530 Subject: [PATCH] docs: publish complete agentctl documentation site --- .github/workflows/pages.yml | 89 + .gitignore | 7 + .markdownlint-cli2.jsonc | 15 + README.md | 39 +- astro.config.mjs | 175 + cspell.json | 25 + docs/DEPLOYMENT.md | 19 + .../execution/AGENTCTL_DOCS_CONTENT_MATRIX.md | 20 + docs/execution/AGENTCTL_DOCS_DECISIONS.md | 49 + .../AGENTCTL_DOCS_INFORMATION_ARCHITECTURE.md | 50 + docs/execution/AGENTCTL_DOCS_STATUS.md | 74 + docs/execution/AGENTCTL_DOCS_VERIFICATION.md | 56 + package.json | 43 + playwright.config.ts | 36 + pnpm-lock.yaml | 6944 +++++++++++++++++ pnpm-workspace.yaml | 4 + public/downloads/workflow.schema.json | 937 +++ public/favicon.png | Bin 0 -> 296 bytes public/meta/agentctl-source.json | 9 + public/og.png | Bin 0 -> 699039 bytes root-site/404.html | 33 + root-site/index.html | 39 + root-site/robots.txt | 4 + scripts/assemble-site.mjs | 34 + scripts/check-artifact.mjs | 109 + scripts/check-external-links.mjs | 106 + scripts/check-mermaid.mjs | 33 + scripts/check-search-index.mjs | 14 + scripts/check-workflow.mjs | 28 + scripts/check-writing.mjs | 41 + scripts/content-manifest.mjs | 58 + scripts/generate-favicon.mjs | 35 + scripts/serve-site.mjs | 70 + scripts/sync-agentctl.mjs | 227 + scripts/verify-agentctl.mjs | 37 + src/components/Footer.astro | 57 + src/components/Header.astro | 97 + src/components/Homepage.astro | 216 + src/content.config.ts | 16 + src/content/docs/404.md | 18 + .../_generated/architecture/decisions/0001.md | 11 + .../_generated/architecture/decisions/0002.md | 11 + .../_generated/architecture/decisions/0003.md | 11 + .../_generated/architecture/decisions/0004.md | 11 + .../_generated/architecture/decisions/0005.md | 11 + .../_generated/architecture/decisions/0006.md | 19 + .../_generated/architecture/decisions/0007.md | 17 + .../docs/_generated/architecture/diagrams.md | 294 + .../docs/_generated/architecture/index.md | 40 + .../docs/_generated/concepts/memory.md | 14 + src/content/docs/_generated/concepts/packs.md | 11 + .../docs/_generated/concepts/policies.md | 15 + .../docs/_generated/concepts/product.md | 40 + src/content/docs/_generated/concepts/tools.md | 15 + .../_generated/concepts/workflow-model.md | 21 + .../_generated/contributing/add-action.md | 45 + .../_generated/contributing/add-migration.md | 27 + .../_generated/contributing/add-provider.md | 39 + .../contributing/developer-guide.md | 67 + .../_generated/contributing/documentation.md | 45 + .../docs/_generated/contributing/index.md | 83 + .../docs/_generated/contributing/release.md | 72 + .../docs/_generated/contributing/testing.md | 36 + .../_generated/durable-execution/index.md | 24 + .../_generated/examples/approval-gated.md | 61 + .../_generated/examples/ci-quality-gate.md | 65 + .../examples/provider-portability.md | 115 + .../_generated/examples/recorded-replay.md | 63 + .../_generated/examples/release-readiness.md | 84 + .../_generated/examples/repository-audit.md | 124 + .../_generated/examples/scheduled-review.md | 74 + .../_generated/getting-started/first-agent.md | 87 + .../docs/_generated/getting-started/index.md | 90 + .../getting-started/installation.md | 75 + src/content/docs/_generated/guides/ci-cd.md | 70 + .../docs/_generated/guides/container.md | 269 + .../docs/_generated/guides/local-operation.md | 73 + .../_generated/guides/workflow-authoring.md | 127 + .../docs/_generated/observability/index.md | 50 + .../docs/_generated/operations/scheduled.md | 70 + src/content/docs/_generated/providers/a2a.md | 11 + .../docs/_generated/providers/index.md | 33 + src/content/docs/_generated/providers/mcp.md | 11 + .../docs/_generated/reference/capabilities.md | 43 + src/content/docs/_generated/reference/cli.md | 485 ++ .../_generated/reference/compatibility.md | 27 + .../docs/_generated/reference/database.md | 45 + .../docs/_generated/reference/environment.md | 48 + .../docs/_generated/reference/limitations.md | 54 + .../docs/_generated/reference/migration.md | 19 + .../docs/_generated/reference/output.md | 42 + .../docs/_generated/reference/terminology.md | 31 + src/content/docs/_generated/reference/yaml.md | 112 + src/content/docs/_generated/security/index.md | 28 + .../docs/_generated/security/threat-model.md | 29 + .../docs/_generated/troubleshooting/index.md | 138 + src/content/docs/deployment-model.md | 40 + src/content/docs/examples/index.md | 28 + src/content/docs/index.mdx | 30 + src/content/docs/learning-paths.md | 46 + src/content/docs/overview.md | 33 + src/content/docs/why-agentctl.md | 34 + src/data/agentctl-source.json | 9 + src/data/home-workflow.yaml | 78 + src/styles/custom.css | 138 + tests/site.spec.ts | 99 + tsconfig.json | 4 + 107 files changed, 14033 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/pages.yml create mode 100644 .gitignore create mode 100644 .markdownlint-cli2.jsonc create mode 100644 astro.config.mjs create mode 100644 cspell.json create mode 100644 docs/DEPLOYMENT.md create mode 100644 docs/execution/AGENTCTL_DOCS_CONTENT_MATRIX.md create mode 100644 docs/execution/AGENTCTL_DOCS_DECISIONS.md create mode 100644 docs/execution/AGENTCTL_DOCS_INFORMATION_ARCHITECTURE.md create mode 100644 docs/execution/AGENTCTL_DOCS_STATUS.md create mode 100644 docs/execution/AGENTCTL_DOCS_VERIFICATION.md create mode 100644 package.json create mode 100644 playwright.config.ts create mode 100644 pnpm-lock.yaml create mode 100644 pnpm-workspace.yaml create mode 100644 public/downloads/workflow.schema.json create mode 100644 public/favicon.png create mode 100644 public/meta/agentctl-source.json create mode 100644 public/og.png create mode 100644 root-site/404.html create mode 100644 root-site/index.html create mode 100644 root-site/robots.txt create mode 100644 scripts/assemble-site.mjs create mode 100644 scripts/check-artifact.mjs create mode 100644 scripts/check-external-links.mjs create mode 100644 scripts/check-mermaid.mjs create mode 100644 scripts/check-search-index.mjs create mode 100644 scripts/check-workflow.mjs create mode 100644 scripts/check-writing.mjs create mode 100644 scripts/content-manifest.mjs create mode 100644 scripts/generate-favicon.mjs create mode 100644 scripts/serve-site.mjs create mode 100644 scripts/sync-agentctl.mjs create mode 100644 scripts/verify-agentctl.mjs create mode 100644 src/components/Footer.astro create mode 100644 src/components/Header.astro create mode 100644 src/components/Homepage.astro create mode 100644 src/content.config.ts create mode 100644 src/content/docs/404.md create mode 100644 src/content/docs/_generated/architecture/decisions/0001.md create mode 100644 src/content/docs/_generated/architecture/decisions/0002.md create mode 100644 src/content/docs/_generated/architecture/decisions/0003.md create mode 100644 src/content/docs/_generated/architecture/decisions/0004.md create mode 100644 src/content/docs/_generated/architecture/decisions/0005.md create mode 100644 src/content/docs/_generated/architecture/decisions/0006.md create mode 100644 src/content/docs/_generated/architecture/decisions/0007.md create mode 100644 src/content/docs/_generated/architecture/diagrams.md create mode 100644 src/content/docs/_generated/architecture/index.md create mode 100644 src/content/docs/_generated/concepts/memory.md create mode 100644 src/content/docs/_generated/concepts/packs.md create mode 100644 src/content/docs/_generated/concepts/policies.md create mode 100644 src/content/docs/_generated/concepts/product.md create mode 100644 src/content/docs/_generated/concepts/tools.md create mode 100644 src/content/docs/_generated/concepts/workflow-model.md create mode 100644 src/content/docs/_generated/contributing/add-action.md create mode 100644 src/content/docs/_generated/contributing/add-migration.md create mode 100644 src/content/docs/_generated/contributing/add-provider.md create mode 100644 src/content/docs/_generated/contributing/developer-guide.md create mode 100644 src/content/docs/_generated/contributing/documentation.md create mode 100644 src/content/docs/_generated/contributing/index.md create mode 100644 src/content/docs/_generated/contributing/release.md create mode 100644 src/content/docs/_generated/contributing/testing.md create mode 100644 src/content/docs/_generated/durable-execution/index.md create mode 100644 src/content/docs/_generated/examples/approval-gated.md create mode 100644 src/content/docs/_generated/examples/ci-quality-gate.md create mode 100644 src/content/docs/_generated/examples/provider-portability.md create mode 100644 src/content/docs/_generated/examples/recorded-replay.md create mode 100644 src/content/docs/_generated/examples/release-readiness.md create mode 100644 src/content/docs/_generated/examples/repository-audit.md create mode 100644 src/content/docs/_generated/examples/scheduled-review.md create mode 100644 src/content/docs/_generated/getting-started/first-agent.md create mode 100644 src/content/docs/_generated/getting-started/index.md create mode 100644 src/content/docs/_generated/getting-started/installation.md create mode 100644 src/content/docs/_generated/guides/ci-cd.md create mode 100644 src/content/docs/_generated/guides/container.md create mode 100644 src/content/docs/_generated/guides/local-operation.md create mode 100644 src/content/docs/_generated/guides/workflow-authoring.md create mode 100644 src/content/docs/_generated/observability/index.md create mode 100644 src/content/docs/_generated/operations/scheduled.md create mode 100644 src/content/docs/_generated/providers/a2a.md create mode 100644 src/content/docs/_generated/providers/index.md create mode 100644 src/content/docs/_generated/providers/mcp.md create mode 100644 src/content/docs/_generated/reference/capabilities.md create mode 100644 src/content/docs/_generated/reference/cli.md create mode 100644 src/content/docs/_generated/reference/compatibility.md create mode 100644 src/content/docs/_generated/reference/database.md create mode 100644 src/content/docs/_generated/reference/environment.md create mode 100644 src/content/docs/_generated/reference/limitations.md create mode 100644 src/content/docs/_generated/reference/migration.md create mode 100644 src/content/docs/_generated/reference/output.md create mode 100644 src/content/docs/_generated/reference/terminology.md create mode 100644 src/content/docs/_generated/reference/yaml.md create mode 100644 src/content/docs/_generated/security/index.md create mode 100644 src/content/docs/_generated/security/threat-model.md create mode 100644 src/content/docs/_generated/troubleshooting/index.md create mode 100644 src/content/docs/deployment-model.md create mode 100644 src/content/docs/examples/index.md create mode 100644 src/content/docs/index.mdx create mode 100644 src/content/docs/learning-paths.md create mode 100644 src/content/docs/overview.md create mode 100644 src/content/docs/why-agentctl.md create mode 100644 src/data/agentctl-source.json create mode 100644 src/data/home-workflow.yaml create mode 100644 src/styles/custom.css create mode 100644 tests/site.spec.ts create mode 100644 tsconfig.json diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml new file mode 100644 index 0000000..de9f01d --- /dev/null +++ b/.github/workflows/pages.yml @@ -0,0 +1,89 @@ +name: GitHub Pages + +on: + pull_request: + push: + branches: + - main + workflow_dispatch: + +permissions: + contents: read + +concurrency: + group: pages-${{ github.ref }} + cancel-in-progress: true + +env: + NODE_VERSION: "24.4.1" + PNPM_VERSION: "11.9.0" + RUST_TOOLCHAIN: "1.88.0" + +jobs: + validate: + runs-on: ubuntu-24.04 + defaults: + run: + shell: bash + working-directory: site + steps: + - name: Check out Pages source + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + path: site + + - name: Check out canonical agentctl source + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + repository: opensourceops/agentctl + path: agentctl + + - name: Install pinned Node.js + uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 + with: + node-version: ${{ env.NODE_VERSION }} + cache: pnpm + cache-dependency-path: site/pnpm-lock.yaml + + - name: Install pinned Rust and pnpm + run: | + set -euo pipefail + rustup toolchain install "$RUST_TOOLCHAIN" --profile minimal --component rustfmt + rustup default "$RUST_TOOLCHAIN" + corepack enable + corepack prepare "pnpm@$PNPM_VERSION" --activate + + - name: Install site dependencies and browser + run: | + pnpm install --frozen-lockfile + pnpm exec playwright install --with-deps chromium + + - name: Verify canonical docs and final site artifact + env: + AGENTCTL_REPO: ${{ github.workspace }}/agentctl + run: pnpm verify:agentctl + + - name: Configure GitHub Pages + if: github.event_name != 'pull_request' + uses: actions/configure-pages@45bfe0192ca1faeb007ade9deae92b16b8254a0d # v6.0.0 + + - name: Upload complete Pages artifact + if: github.event_name != 'pull_request' + uses: actions/upload-pages-artifact@fc324d3547104276b827a68afc52ff2a11cc49c9 # v5.0.0 + with: + path: site/_site + + deploy: + if: github.event_name != 'pull_request' + needs: validate + runs-on: ubuntu-24.04 + permissions: + pages: write + id-token: write + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + steps: + - name: Deploy GitHub Pages + id: deployment + uses: actions/deploy-pages@cd2ce8fcbc39b97be8ca5fce6e763baed58fa128 # v5.0.0 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d94da03 --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +node_modules/ +dist-agentctl/ +_site/ +.astro/ +playwright-report/ +test-results/ +.agentctl-docs-server.json diff --git a/.markdownlint-cli2.jsonc b/.markdownlint-cli2.jsonc new file mode 100644 index 0000000..6672df9 --- /dev/null +++ b/.markdownlint-cli2.jsonc @@ -0,0 +1,15 @@ +{ + "config": { + "MD013": false, + "MD012": false, + "MD024": { "siblings_only": true }, + "MD033": false, + "MD041": false, + "MD046": false + }, + "ignores": [ + "node_modules/**", + "dist-agentctl/**", + "_site/**" + ] +} diff --git a/README.md b/README.md index 19b0d2f..c47cef3 100644 --- a/README.md +++ b/README.md @@ -1 +1,38 @@ -# opensourceops.github.io \ No newline at end of file +# OpenSourceOps GitHub Pages + +This repository builds the organization root site and the public `agentctl` documentation at `/agentctl/`. Technical content is canonical in `opensourceops/agentctl`; a deterministic manifest imports it into an Astro and Starlight presentation layer. + +## Prerequisites + +- Node.js 22 or newer +- pnpm 11.9.0 through Corepack +- Rust 1.88.0 and Cargo +- Playwright Chromium for the full browser gate +- local checkouts of this repository and `agentctl` + +Set `AGENTCTL_REPO` when the agentctl checkout is not in a documented sibling location. + +## Local development + +```text +corepack enable +pnpm install +pnpm exec playwright install chromium +AGENTCTL_REPO=/path/to/agentctl pnpm docs:sync +pnpm dev:agentctl +``` + +The development URL is `http://localhost:4321/agentctl/`. The development server makes no provider request, but dependency installation can use the package registry. + +## Build and verify + +```text +AGENTCTL_REPO=/path/to/agentctl pnpm build +AGENTCTL_REPO=/path/to/agentctl pnpm verify:agentctl +``` + +`pnpm build` writes the complete Pages artifact to `_site`; serve that directory at its root and open `/agentctl/`. `pnpm verify:agentctl` is the canonical cross-repository gate. It runs `cargo xtask docs-verify`, synchronizes canonical content, checks writing, spelling, links, anchors, Mermaid, search, and generated freshness, builds the final artifact, then runs responsive Playwright and axe checks. + +Common failures are a missing `AGENTCTL_REPO`, stale generated source or CLI references, a missing Playwright browser, or another process using port 4173. No verification command needs a provider API key. + +See [deployment settings](docs/DEPLOYMENT.md) and the [documentation execution ledger](docs/execution/AGENTCTL_DOCS_STATUS.md). diff --git a/astro.config.mjs b/astro.config.mjs new file mode 100644 index 0000000..9e14c58 --- /dev/null +++ b/astro.config.mjs @@ -0,0 +1,175 @@ +import { defineConfig } from 'astro/config'; +import starlight from '@astrojs/starlight'; +import mermaid from 'astro-mermaid'; + +const github = 'https://github.com/opensourceops/agentctl'; + +export default defineConfig({ + site: 'https://opensourceops.github.io', + base: '/agentctl/', + outDir: './dist-agentctl', + integrations: [ + mermaid({ + autoTheme: true, + enableLog: false, + mermaidConfig: { + securityLevel: 'strict', + flowchart: { curve: 'linear', htmlLabels: false }, + }, + }), + starlight({ + title: 'agentctl', + description: + 'Declarative workflows for deterministic automation and bounded agent reasoning, with explicit policy and durable local state.', + tagline: 'Deterministic workflows. Bounded agents. Durable evidence.', + favicon: '/favicon.png', + social: [{ icon: 'github', label: 'agentctl on GitHub', href: github }], + editLink: { baseUrl: `${github}/edit/main/` }, + lastUpdated: false, + pagination: true, + pagefind: true, + credits: false, + customCss: ['./src/styles/custom.css'], + components: { + Header: './src/components/Header.astro', + Footer: './src/components/Footer.astro', + }, + head: [ + { tag: 'meta', attrs: { name: 'theme-color', content: '#0f766e' } }, + { tag: 'meta', attrs: { property: 'og:site_name', content: 'agentctl documentation' } }, + { tag: 'meta', attrs: { property: 'og:type', content: 'website' } }, + { tag: 'meta', attrs: { name: 'twitter:card', content: 'summary_large_image' } }, + { tag: 'meta', attrs: { property: 'og:image', content: 'https://opensourceops.github.io/agentctl/og.png' } }, + { tag: 'meta', attrs: { name: 'twitter:image', content: 'https://opensourceops.github.io/agentctl/og.png' } }, + { + tag: 'script', + attrs: { type: 'application/ld+json' }, + content: JSON.stringify({ + '@context': 'https://schema.org', + '@type': 'WebSite', + name: 'agentctl documentation', + url: 'https://opensourceops.github.io/agentctl/', + }), + }, + ], + sidebar: [ + { + label: 'Start here', + items: [ + { slug: 'overview', label: 'Overview', badge: 'v1alpha1' }, + { slug: 'why-agentctl', label: 'Why agentctl' }, + { slug: 'concepts/product', label: 'Product definition' }, + { slug: 'getting-started/installation', label: 'Installation' }, + { slug: 'getting-started', label: 'Getting started' }, + { slug: 'getting-started/first-agent', label: 'First agent workflow' }, + { slug: 'learning-paths', label: 'Learning paths' }, + { slug: 'deployment-model', label: 'Choose a deployment model' }, + ], + }, + { + label: 'Learn the workflow model', + items: [ + { slug: 'concepts/workflow-model', label: 'Workflow document' }, + { slug: 'guides/workflow-authoring', label: 'Author workflows' }, + { slug: 'concepts/tools', label: 'Actions, tools, and effects' }, + { slug: 'concepts/policies', label: 'Policies and approvals' }, + { slug: 'concepts/memory', label: 'Memory' }, + { slug: 'concepts/packs', label: 'Packs' }, + ], + }, + { + label: 'Run workflows', + items: [ + { slug: 'guides/local-operation', label: 'Local operation' }, + { slug: 'durable-execution', label: 'Resume, replay, retry, and fork' }, + { slug: 'operations/scheduled', label: 'Scheduled execution' }, + ], + }, + { + label: 'Operate agentctl', + items: [ + { slug: 'guides/container', label: 'Container' }, + { slug: 'guides/ci-cd', label: 'CI/CD and Kubernetes' }, + { slug: 'observability', label: 'Logs and observability' }, + { slug: 'reference/database', label: 'State, locking, and retention' }, + ], + }, + { + label: 'Providers and protocols', + items: [ + { slug: 'providers', label: 'Provider overview' }, + { slug: 'reference/capabilities', label: 'Capability matrices' }, + { slug: 'providers/mcp', label: 'MCP' }, + { slug: 'providers/a2a', label: 'A2A' }, + { slug: 'reference/environment', label: 'Authentication and environment' }, + ], + }, + { + label: 'Security', + items: [ + { slug: 'security', label: 'Security model' }, + { slug: 'security/threat-model', label: 'Threat model' }, + { slug: 'concepts/policies', label: 'Filesystem, process, and network policy' }, + { slug: 'reference/limitations', label: 'Known limitations' }, + ], + }, + { + label: 'Examples and use cases', + items: [ + { slug: 'examples', label: 'Examples overview' }, + { slug: 'examples/repository-audit', label: 'Repository audit' }, + { slug: 'examples/release-readiness', label: 'Release readiness' }, + { slug: 'examples/scheduled-review', label: 'Scheduled review' }, + { slug: 'examples/ci-quality-gate', label: 'CI quality gate' }, + { slug: 'examples/approval-gated', label: 'Approval-gated action' }, + { slug: 'examples/recorded-replay', label: 'Recorded replay' }, + { slug: 'examples/provider-portability', label: 'Provider portability' }, + ], + }, + { + label: 'Troubleshooting', + items: [{ slug: 'troubleshooting', label: 'Problem-solving guide' }], + }, + { + label: 'Reference', + items: [ + { slug: 'reference/cli', label: 'CLI reference' }, + { slug: 'reference/yaml', label: 'YAML reference' }, + { slug: 'reference/output', label: 'Output and exit codes' }, + { slug: 'reference/environment', label: 'Environment and default paths' }, + { slug: 'reference/capabilities', label: 'Provider and tool matrices' }, + { slug: 'reference/database', label: 'Database and migrations' }, + { slug: 'reference/terminology', label: 'Terminology' }, + { slug: 'reference/compatibility', label: 'Compatibility' }, + { slug: 'reference/migration', label: 'Migrate from TypeScript' }, + { slug: 'reference/limitations', label: 'Limitations' }, + ], + }, + { + label: 'Architecture', + items: [ + { slug: 'architecture', label: 'Architecture overview' }, + { slug: 'architecture/diagrams', label: 'Architecture diagrams' }, + { + label: 'Design decisions', + items: ['architecture/decisions/0001', 'architecture/decisions/0002', 'architecture/decisions/0003', 'architecture/decisions/0004', 'architecture/decisions/0005', 'architecture/decisions/0006', 'architecture/decisions/0007'], + }, + ], + }, + { + label: 'Contributing', + items: [ + { slug: 'contributing', label: 'Contributor guide' }, + { slug: 'contributing/developer-guide', label: 'Developer guide' }, + { slug: 'contributing/testing', label: 'Build and test' }, + { slug: 'contributing/add-action', label: 'Add an action or tool' }, + { slug: 'contributing/add-provider', label: 'Add a provider' }, + { slug: 'contributing/add-migration', label: 'Add a migration' }, + { slug: 'contributing/documentation', label: 'Write documentation' }, + { slug: 'contributing/release', label: 'Release process' }, + ], + }, + ], + }), + ], +}); diff --git a/cspell.json b/cspell.json new file mode 100644 index 0000000..9ce23c0 --- /dev/null +++ b/cspell.json @@ -0,0 +1,25 @@ +{ + "version": "0.2", + "language": "en", + "useGitignore": true, + "ignorePaths": [ + "pnpm-lock.yaml", + "docs/execution/**", + "src/content/docs/_generated/reference/cli.md", + "public/downloads/workflow.schema.json" + ], + "words": [ + "agentctl", "OpenSourceOps", "Starlight", "Astro", "Pagefind", "Playwright", + "Anthropic", "Gemini", "OpenAI", "A2A", "MCP", "SQLite", "JSONL", "OCI", + "Kubernetes", "CronJob", "systemd", "runbook", "allowlist", "allowlists", + "idempotency", "idempotent", "toolchain", "checkpoints", "subprocess", + "worktree", "rustls", "Clippy", "Rustfmt", "CycloneDX", "Gitleaks", "Trivy", + "Cargo", "SHA", "v1alpha1", "tmpfs", "noexec", "nosuid", "runAsNonRoot", + "fsGroup", "backoffLimit", "concurrencyPolicy", "apiVersion", "prev", "frontmatter", + "astrojs", "basenames", "checkpointed", "checksummed", "Containerfile", "distroless", + "effectful", "exfiltration", "inspectable", "ledgered", "lockfiles", "misexecutes", + "msvc", "noninteractive", "nonroot", "oneshot", "proptest", "rustdoc", "sandboxing", + "schedulable", "Streamable", "subpaths", "TOCTOU", "transactionally", "uncheckpointed", + "unpushed", "xtask", "MSRV", "nojekyll", "accDescr" + ] +} diff --git a/docs/DEPLOYMENT.md b/docs/DEPLOYMENT.md new file mode 100644 index 0000000..920b880 --- /dev/null +++ b/docs/DEPLOYMENT.md @@ -0,0 +1,19 @@ +# GitHub Pages deployment + +The workflow in `.github/workflows/pages.yml` validates pull requests and deploys only from `main` or a manual dispatch. It checks out both repositories, runs the credential-free canonical and site gates, assembles `_site`, verifies `agentctl/index.html`, and uses GitHub's current Pages artifact deployment actions. + +## Required repository settings after merge + +1. Open the `opensourceops/opensourceops.github.io` repository settings. +2. Under **Pages**, set **Source** to **GitHub Actions**. +3. Keep the public custom domain empty unless OpenSourceOps intentionally adds one later. +4. Under **Actions**, allow GitHub-owned actions. No provider secret is required. +5. Protect `main` according to the organization's normal policy and require the `validate` job if desired. +6. Run the workflow manually once, or merge a validated change to `main`. +7. Confirm the deployment environment reports `https://opensourceops.github.io/` and verify `https://opensourceops.github.io/agentctl/` separately. + +Do not configure Pages to deploy from a branch directory. The workflow uploads the complete `_site` artifact, including the organization root, `.nojekyll`, and the `agentctl/` subdirectory. + +## Security model + +Pull requests receive read-only repository permission and never reach the deployment job. The deployment job alone receives `pages: write` and `id-token: write`. The workflow does not read provider credentials or repository secrets. All action references are immutable commit SHAs with release annotations. diff --git a/docs/execution/AGENTCTL_DOCS_CONTENT_MATRIX.md b/docs/execution/AGENTCTL_DOCS_CONTENT_MATRIX.md new file mode 100644 index 0000000..704f428 --- /dev/null +++ b/docs/execution/AGENTCTL_DOCS_CONTENT_MATRIX.md @@ -0,0 +1,20 @@ +# agentctl documentation content matrix + +| User question | Persona | Public page | Canonical source | Working example | Verification | Status | +| --- | --- | --- | --- | --- | --- | --- | +| What is agentctl and why use it? | evaluator | homepage, overview, why agentctl | `docs/PRODUCT.md` | `examples/acceptance/mock-tool` | site copy review, example gate | complete | +| How do I install it? | new user | installation | `docs/guides/INSTALLATION.md` | `examples/v1/hello.yaml` | source install smoke | complete | +| How do I finish a first run? | new user | getting started | `docs/guides/GETTING_STARTED.md` | `examples/v1/hello.yaml` | clean-directory run | complete | +| How do I try an agent without a key? | new user | first agent workflow | `docs/guides/FIRST_AGENT_WORKFLOW.md` | `examples/acceptance/mock-tool` | clean-directory fake-provider run | complete | +| How does workflow YAML fit together? | workflow author | workflow authoring, YAML reference | `docs/DSL.md`, `docs/reference/YAML.md` | `examples/v1/dataflow.yaml` | check and plan | complete | +| How do I run and recover locally? | operator | local operation, durable execution | `docs/OPERATIONS.md`, `docs/DURABLE_EXECUTION.md` | `examples/v1/crash-resume.yaml` | runtime and acceptance tests | complete | +| How do I use a container? | platform engineer | container | `docs/CONTAINER.md` | acceptance mock tool | locally executed container acceptance | complete | +| How do I use CI or Kubernetes? | platform engineer | CI/CD | `docs/guides/CI_CD.md`, `docs/CONTAINER.md` | checked snippets | syntax and documentation review | complete | +| How should I schedule runs? | operator | scheduled execution | `docs/OPERATIONS.md` | cron, systemd, CronJob | documentation review | complete | +| Which provider can do what? | workflow author | providers | `docs/PROVIDERS.md` | `examples/v1/*-live.yaml` | mock protocol and opt-in live gates | complete | +| How do MCP and A2A behave? | integrator | protocols | `docs/MCP.md`, `docs/A2A.md` | `examples/v1/mcp.yaml`, `a2a.yaml` | local mock servers | complete | +| What is persisted and why? | operator | stateful architecture | `docs/DURABLE_EXECUTION.md`, `docs/MEMORY.md` | crash/resume and memory examples | store/runtime tests | complete | +| How do I diagnose a failed run? | operator | troubleshooting, observability | `docs/guides/TROUBLESHOOTING.md`, `docs/OBSERVABILITY.md` | failure fixtures | exit and inspection tests | complete | +| What are the security boundaries? | security reviewer | security, threat model | `docs/SECURITY.md`, `docs/THREAT_MODEL.md` | policy denial and approval | security and policy tests | complete | +| How do I add runtime behavior? | contributor | developer guides | `docs/development/*` | focused Rust tests | cargo tests and docs gate | complete | +| What is not supported? | evaluator | limitations and compatibility | `docs/LIMITATIONS.md`, `docs/COMPATIBILITY.md` | capability failure | negative contract tests | complete | diff --git a/docs/execution/AGENTCTL_DOCS_DECISIONS.md b/docs/execution/AGENTCTL_DOCS_DECISIONS.md new file mode 100644 index 0000000..758269c --- /dev/null +++ b/docs/execution/AGENTCTL_DOCS_DECISIONS.md @@ -0,0 +1,49 @@ +# agentctl documentation decisions + +## D001: Astro with Starlight + +Status: accepted, 2026-07-23. + +The Pages repository had no website framework or public files beyond a one-line README. The agentctl site uses Astro with Starlight because the task calls for documentation navigation, static search, accessible defaults, Markdown and MDX, code-copy controls, and a static subpath build. Astro is configured with `site: https://opensourceops.github.io` and `base: /agentctl/`. + +## D002: Physical artifact composition + +Status: accepted, 2026-07-23. + +Astro's base option fixes URLs but does not by itself place its entry page in `agentctl/index.html`. A deterministic assembly step copies the agentctl build into `_site/agentctl/` and composes the root OpenSourceOps page separately. It fails on path conflicts and verifies the required physical layout. + +## D003: Canonical content ownership + +Status: accepted, 2026-07-23. + +The `agentctl` repository owns commands, schema, examples, provider and protocol maturity, runtime semantics, architecture, security, operations, limitations, and contributor contracts. The Pages repository owns the homepage, navigation, learning paths, search, site styling, SEO, testing, deployment, and generated presentation copies. + +## D004: Deterministic import + +Status: accepted, 2026-07-23. + +A checked manifest maps canonical source files to public routes. The importer fails on missing sources, rewrites local Markdown and image links, preserves code fences, copies downloadable references, records the source Git commit, and replaces its generated directory atomically. Local resolution accepts `AGENTCTL_REPO` and documented sibling-checkout locations. Hosted CI checks out both repositories into one workspace. + +## D005: Evidence language + +Status: accepted, 2026-07-23. + +Public pages distinguish deterministic tests, mock-protocol tests, retained live OpenAI evidence, locally executed container evidence, hosted CI configuration, hosted CI execution, syntax validation, deferred work, and unsupported work. The site calls the project a `v1alpha1` release candidate preparation, not stable or production proven. + +## D006: Static and restrained design + +Status: accepted, 2026-07-23. + +The visual system uses high-contrast neutral surfaces, one teal accent, system fonts, compact cards, and restrained motion. It uses no generic AI imagery, animated background, or decorative diagram. Diagrams explain behavior and include surrounding text. + +## D007: Credential-free Pages workflow + +Status: accepted, 2026-07-23. + +Pull requests run the complete build and verification gate with read-only repository permission. Only `main` pushes or manual dispatches reach the deployment job, which alone receives `pages: write` and `id-token: write`. GitHub-owned actions are pinned to full commit SHAs with release comments. The workflow checks out the canonical repository and requires no provider or repository secret. + +## D008: Conditional Mermaid cost + +Status: accepted, 2026-07-23. + +Mermaid renders locally and is loaded only when a page contains a diagram. The generated Mermaid bundle includes diagram types the package supports and produces a 663 KB largest uncompressed chunk. The homepage does not contain a Mermaid block, uses system fonts, and remains a 28 KB HTML document. The specialized diagram page accepts the conditional client cost for accessible theme-aware diagrams; the build records the bundle warning instead of inventing a performance claim. diff --git a/docs/execution/AGENTCTL_DOCS_INFORMATION_ARCHITECTURE.md b/docs/execution/AGENTCTL_DOCS_INFORMATION_ARCHITECTURE.md new file mode 100644 index 0000000..b878462 --- /dev/null +++ b/docs/execution/AGENTCTL_DOCS_INFORMATION_ARCHITECTURE.md @@ -0,0 +1,50 @@ +# agentctl documentation information architecture + +## Principles + +- Organize the site around user questions and journeys. +- Keep behavioral truth in the `agentctl` repository. +- Keep presentation, navigation, learning paths, and deployment in the Pages repository. +- Link to one canonical page instead of repeating a technical contract. +- Create a page only when it provides verified, useful content. + +## Top navigation + +- Docs +- Guides +- Examples +- Architecture +- Contributing +- GitHub +- `v1alpha1` maturity indicator + +## Learning paths + +- I am evaluating agentctl +- I want to run my first workflow +- I want to author workflows +- I want to operate agentctl +- I want to integrate agentctl into CI/CD +- I want to contribute + +## Sidebar groups + +1. Start here +2. Learn the workflow model +3. Run workflows +4. Operate agentctl +5. Providers and protocols +6. Security +7. Examples and use cases +8. Troubleshooting +9. Reference +10. Architecture +11. Contributing + +The first release uses comprehensive pages for closely related topics rather than many thin pages. For example, one provider overview owns capability differences, authentication, validation levels, and troubleshooting links. + +## Route model + +The public base is `https://opensourceops.github.io/agentctl/`. The framework builds the agentctl site independently, then an assembly step places that output under `_site/agentctl/` beside a restrained organization root page. + +Canonical imports are generated beneath `src/content/docs/_generated/` and are never edited by hand. Site-authored pages live elsewhere in `src/content/docs/`. diff --git a/docs/execution/AGENTCTL_DOCS_STATUS.md b/docs/execution/AGENTCTL_DOCS_STATUS.md new file mode 100644 index 0000000..9947f58 --- /dev/null +++ b/docs/execution/AGENTCTL_DOCS_STATUS.md @@ -0,0 +1,74 @@ +# agentctl documentation status + +Updated: 2026-07-23, Asia/Kolkata + +## Current phase + +Implementation and local verification are complete. Deployment, push, Pages enablement, repository settings, and live-provider calls were intentionally not performed. + +## Repository state + +| Repository | Branch | Starting commit | Current content commit | +| --- | --- | --- | --- | +| `agentctl` | `codex/agentctl-documentation-source` | `29452db` | `0ae1e381b87ea815f0d4ca66689db10bb1129e4a` | +| `opensourceops.github.io` | `codex/agentctl-site` | `d71dc4d` | `HEAD` containing this ledger | + +Both repositories started clean. The canonical repository is clean after its documentation commit. The Pages commit is the commit containing this ledger; resolve its immutable ID with `git rev-parse HEAD` after checkout. + +## Completed scope + +- Canonical tutorials, concepts, operations, security, troubleshooting, reference, architecture, use cases, developer guides, contributing, and terminology +- Five credential-free documentation workflows plus provider-portability variants +- `cargo xtask docs-verify` and its hosted CI step +- Deterministic import of 56 canonical pages with source commit metadata and stale-content checking +- Astro and Starlight site, root organization page, Pagefind search, SEO, favicon, social card, 404, feedback links, and responsive design +- Fourteen architecture diagrams with accessible titles and descriptions +- Deterministic `_site` assembly with physical `agentctl/index.html` +- Least-privilege GitHub Pages validation and deployment workflow with immutable action pins +- Internal links, anchors, orphans, external links, writing, spelling, Markdown, workflow, browser, search, accessibility, and responsive checks +- Product, documentation, and UX review passes with findings fixed + +## Verification status + +| Gate | Status | Evidence | +| --- | --- | --- | +| Canonical docs and examples | pass | `cargo xtask docs-verify` | +| Full Rust repository gate | pass | `cargo xtask verify` | +| Container contract | pass | locally executed `cargo xtask acceptance-container` | +| Site build and generated freshness | pass | clean source commit `0ae1e38`, 63 indexed pages | +| Internal links, anchors, and orphans | pass | 65 final HTML files | +| External links | pass | 11 unique public targets, with unpushed canonical files and commit checked locally | +| Writing, spelling, and Markdown | pass | no public em dash; cspell and markdownlint pass | +| Mermaid | pass | 15 source blocks; 14 architecture SVGs render and are labelled | +| Search | pass | eight required queries on desktop and tablet | +| Browser and deep links | pass | 44 Playwright cases pass; mobile-only duplicate search case is intentionally skipped | +| Accessibility automation | pass | no serious or critical axe finding on representative pages at three viewports | +| Responsive manual review | pass | 1440 x 1000, 1024 x 768, and 390 x 844 inspected | +| Final Pages artifact | pass | root site, `.nojekyll`, and `agentctl/index.html` present | +| Hosted Pages deployment | configured only | requires merge and manual repository setting | + +Automated accessibility and local browser checks are evidence, not an accessibility certification. Live provider calls remain opt-in and outside normal documentation verification. + +## Review outcomes + +- Product review confirmed that the homepage states the control-layer boundary, primary audience, concrete use cases, durable-state behavior, maturity, and limitations without a production-readiness claim. +- Documentation review confirmed the deterministic and fake-provider tutorials from clean directories, recovery semantics, complete field and CLI reference, container operations, and contributor architecture. +- UX review fixed a stretched maturity badge, a clipped mobile project title, muted-text contrast, and keyboard access to horizontally scrollable code. It also confirmed both Getting started calls to action, 404 recovery, search, copy, sidebar, and deep-link refresh behavior. + +## Exact verification commands + +From the canonical repository: + +```text +cargo xtask docs-verify +cargo xtask verify +cargo xtask acceptance-container +git diff --check +``` + +From the Pages repository: + +```text +AGENTCTL_REPO=/path/to/agentctl pnpm verify:agentctl +git diff --check +``` diff --git a/docs/execution/AGENTCTL_DOCS_VERIFICATION.md b/docs/execution/AGENTCTL_DOCS_VERIFICATION.md new file mode 100644 index 0000000..8a1cba7 --- /dev/null +++ b/docs/execution/AGENTCTL_DOCS_VERIFICATION.md @@ -0,0 +1,56 @@ +# agentctl documentation verification + +## Evidence policy + +Each result says whether it was executed locally, statically checked, configured only, or excluded. Normal verification neither reads nor requires a provider credential. + +## Canonical evidence + +Executed locally on 2026-07-23: + +- `cargo xtask docs-verify`: generated schema and CLI freshness, v1 examples, documentation examples, source inclusion, writing rules, and Markdown links passed. +- `cargo xtask verify`: formatting, clippy, workspace build and tests, docs, examples, dependency policy, secret and action-pin scans, source installation, and production boundary passed. Existing duplicate-dependency warnings remain non-failing policy output. +- `cargo xtask acceptance-container`: success, artifacts, inspect, network-disabled replay, missing-secret and invalid-input failures, SIGTERM, non-root execution, read-only root, state, and artifact mounts passed. +- Clean-directory deterministic tutorial produced `hello, world`. +- Clean-directory fake-provider tutorial produced `AGENTCTL_MOCK_FIXTURE_VERIFIED` and the declared artifact. + +No live OpenAI, Azure OpenAI, Anthropic, or Gemini request was made. + +## Site evidence + +The canonical cross-repository command imported 56 pages from clean agentctl commit `0ae1e381b87ea815f0d4ca66689db10bb1129e4a`, built 63 searchable pages, and assembled 65 HTML files across the root and project site. + +| Check | Command or method | Evidence | Result | +| --- | --- | --- | --- | +| Generated freshness | sync followed by tracked diff | locally executed | pass | +| Writing and em dash | custom public-source scan | locally executed | pass | +| Mermaid syntax | Mermaid parser over 15 source blocks | locally executed | pass | +| Workflow safety | immutable pin, permission, artifact, and secret scan | locally executed | pass | +| Markdown | markdownlint | locally executed | pass | +| Spelling | cspell with a narrow technical dictionary | locally executed | pass | +| Astro types | `astro check` | locally executed | pass | +| Artifact build | Astro, Pagefind, and deterministic assembly | locally executed | pass | +| Links and discovery | internal paths, anchors, orphan graph, 11 external targets | locally executed | pass | +| Search | replay, OPENAI_API_KEY, approval, container, exit code, database locked, MCP, Gemini | Chromium desktop and tablet | pass | +| Browser routes | homepage plus seven major guides, nested refresh, base path, copy, nav, CTA, GitHub, 404 | Chromium at three viewports | pass | +| Mermaid rendering | 14 architecture SVGs, no client error, accessible titles and descriptions | Chromium at three viewports and manual inspection | pass | +| Accessibility | axe WCAG 2.2-oriented tags on four representative pages | Chromium at three viewports | no serious or critical findings | + +Playwright reports 44 passing cases and one intentional skip: the full search query matrix runs on desktop and tablet, not a third time on mobile. + +## Manual visual review + +The final artifact was inspected at 1440 x 1000, 1024 x 768, and 390 x 844. Homepage hierarchy, calls to action, trust strip, guide header, mobile menu, table of contents, code overflow, diagrams, and page width were checked. Two class and flex-shrink collisions found during this pass were fixed before the final automated run. + +This is a practical WCAG 2.2 AA review, not certification. Keyboard, contrast, reduced motion, labels, semantic structure, mobile zoom, and code scrolling have both implementation and automated evidence. + +## Performance inspection + +The assembled agentctl artifact is 8.7 MB uncompressed. The homepage HTML is about 28 KB, the architecture diagram HTML is about 68 KB, the Pagefind directory is 1.0 MB, and the social card is 699 KB. The largest generated JavaScript chunk is about 663 KB and belongs to Mermaid's conditional client bundle; the integration imports Mermaid only when a page contains `pre.mermaid`. The homepage uses system fonts and contains no Mermaid diagram. The build retains the chunk-size warning so future work can evaluate build-time SVG rendering or a narrower Mermaid runtime with measured evidence. + +## Hosted evidence still required after merge + +- Set Pages source to GitHub Actions as documented in `docs/DEPLOYMENT.md`. +- Run the pinned workflow on the merged commit and confirm its Pages environment URL. +- Verify the deployed organization root and `/agentctl/` deep links. +- Treat GitHub Actions, GitLab CI, Jenkins, Harness CI, Kubernetes, and live providers as syntax, mock, or configured evidence until those exact environments execute them. diff --git a/package.json b/package.json new file mode 100644 index 0000000..a36c2cd --- /dev/null +++ b/package.json @@ -0,0 +1,43 @@ +{ + "name": "opensourceops-github-pages", + "version": "0.1.0", + "private": true, + "type": "module", + "packageManager": "pnpm@11.9.0", + "engines": { + "node": ">=22" + }, + "scripts": { + "docs:sync": "node scripts/sync-agentctl.mjs", + "dev:agentctl": "pnpm docs:sync && astro dev", + "build:agentctl": "pnpm docs:sync && astro build", + "build": "pnpm build:agentctl && node scripts/assemble-site.mjs", + "check:writing": "node scripts/check-writing.mjs", + "check:mermaid": "node scripts/check-mermaid.mjs", + "check:artifact": "node scripts/check-artifact.mjs", + "check:search": "node scripts/check-search-index.mjs", + "check:external": "node scripts/check-external-links.mjs", + "check:workflow": "node scripts/check-workflow.mjs", + "check:generated": "git diff --exit-code -- src/content/docs/_generated src/data public/downloads public/meta", + "lint:markdown": "markdownlint-cli2 \"src/content/docs/*.{md,mdx}\" \"src/content/docs/examples/*.md\" \"docs/**/*.md\"", + "spellcheck": "cspell --no-progress --show-suggestions \"src/**/*.{astro,md,mdx,ts}\" \"docs/**/*.md\"", + "test:site": "playwright test", + "verify": "pnpm docs:sync && pnpm check:generated && pnpm check:writing && pnpm check:mermaid && pnpm check:workflow && pnpm lint:markdown && pnpm spellcheck && astro check && astro build && node scripts/assemble-site.mjs && pnpm check:artifact && pnpm check:external && pnpm check:search && pnpm test:site", + "verify:agentctl": "node scripts/verify-agentctl.mjs" + }, + "dependencies": { + "@astrojs/starlight": "0.41.4", + "astro": "7.1.3", + "astro-mermaid": "2.1.0", + "mermaid": "11.16.0" + }, + "devDependencies": { + "@astrojs/check": "0.9.4", + "@axe-core/playwright": "4.12.1", + "@playwright/test": "1.61.1", + "cspell": "10.0.1", + "markdownlint-cli2": "0.23.1", + "sharp": "0.35.3", + "typescript": "5.9.3" + } +} diff --git a/playwright.config.ts b/playwright.config.ts new file mode 100644 index 0000000..bc2390a --- /dev/null +++ b/playwright.config.ts @@ -0,0 +1,36 @@ +import { defineConfig, devices } from '@playwright/test'; + +export default defineConfig({ + testDir: './tests', + fullyParallel: false, + forbidOnly: true, + retries: 0, + workers: 1, + reporter: [['list']], + use: { + baseURL: 'http://127.0.0.1:4173', + trace: 'retain-on-failure', + screenshot: 'only-on-failure', + permissions: ['clipboard-read', 'clipboard-write'], + }, + webServer: { + command: 'node scripts/serve-site.mjs', + url: 'http://127.0.0.1:4173/agentctl/', + reuseExistingServer: false, + timeout: 20_000, + }, + projects: [ + { + name: 'desktop', + use: { ...devices['Desktop Chrome'], viewport: { width: 1440, height: 1000 } }, + }, + { + name: 'tablet', + use: { ...devices['iPad (gen 7) landscape'], browserName: 'chromium' }, + }, + { + name: 'mobile', + use: { ...devices['iPhone 13'], browserName: 'chromium' }, + }, + ], +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..f3dbd4a --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,6944 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@astrojs/starlight': + specifier: 0.41.4 + version: 0.41.4(@astrojs/markdown-remark@7.2.1)(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2)(@types/node@24.13.3)(yaml@2.9.0))(typescript@5.9.3) + astro: + specifier: 7.1.3 + version: 7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2)(@types/node@24.13.3)(yaml@2.9.0) + astro-mermaid: + specifier: 2.1.0 + version: 2.1.0(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2)(@types/node@24.13.3)(yaml@2.9.0))(mermaid@11.16.0) + mermaid: + specifier: 11.16.0 + version: 11.16.0 + devDependencies: + '@astrojs/check': + specifier: 0.9.4 + version: 0.9.4(prettier@3.9.6)(typescript@5.9.3) + '@axe-core/playwright': + specifier: 4.12.1 + version: 4.12.1(playwright-core@1.61.1) + '@playwright/test': + specifier: 1.61.1 + version: 1.61.1 + cspell: + specifier: 10.0.1 + version: 10.0.1 + markdownlint-cli2: + specifier: 0.23.1 + version: 0.23.1 + sharp: + specifier: 0.35.3 + version: 0.35.3(@types/node@24.13.3) + typescript: + specifier: 5.9.3 + version: 5.9.3 + +packages: + + '@antfu/install-pkg@1.1.0': + resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==} + + '@astrojs/check@0.9.4': + resolution: {integrity: sha512-IOheHwCtpUfvogHHsvu0AbeRZEnjJg3MopdLddkJE70mULItS/Vh37BHcI00mcOJcH1vhD3odbpvWokpxam7xA==} + hasBin: true + peerDependencies: + typescript: ^5.0.0 + + '@astrojs/compiler-binding-darwin-arm64@0.3.1': + resolution: {integrity: sha512-IEmEF2fUIlTHtpeE/isyEGVOB14cEyh/LZOFYt6wn3jNyVpdC8aR5OZ+RzFUR/f+8ZDM1LaMwZKvoA7eMyJeFw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@astrojs/compiler-binding-darwin-x64@0.3.1': + resolution: {integrity: sha512-GF2kIxjpPDLsn94zbZNMsxEmkU828QqnmM7kiQJnaooS3jmI+I7kk6+oI6EpwOsK3femCMdcm+wmOsEqtGrmjQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@astrojs/compiler-binding-linux-arm64-gnu@0.3.1': + resolution: {integrity: sha512-XJL3SDmOtVrqFhCirNcHwE91+IesJqlgNo23I4qW9QUYfwzm/TBZuH61fgqsb1ttgR1mMYz6ooPWs0JDhwMqpQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@astrojs/compiler-binding-linux-arm64-musl@0.3.1': + resolution: {integrity: sha512-xqE8BVbDoBueK/B47w30PtkVofUWJKGkwoMVE+EOMLf11rnoANxIAdA9FPqY+rng4oNI5ndHGsri1yPj2k8vZQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@astrojs/compiler-binding-linux-x64-gnu@0.3.1': + resolution: {integrity: sha512-1y0StU1qiCuDFH3rmbRJXcxdfHxFPrES1Rd+RLffosvUR7I2cH5SF5SFnBN9vXpzpkmyElZm3Yr47iJBPN7vVA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@astrojs/compiler-binding-linux-x64-musl@0.3.1': + resolution: {integrity: sha512-16q0fYf7kpbmdObZEeZJEup8hQv/whgNwVjrSvT8umrKwLDSnNIWiQpm09lQQu6bweZB0XyIvHwlPitvJhC+hg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [musl] + + '@astrojs/compiler-binding-wasm32-wasi@0.3.1': + resolution: {integrity: sha512-cB456shIwDv/PrVT+2QG7LFndpHkVge5HjqADKZgGaAc9JHVktCtjSrcdkRQ+3tbkPazNKaTLRjXLIiz2NIx9g==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@astrojs/compiler-binding-win32-arm64-msvc@0.3.1': + resolution: {integrity: sha512-ur/9+If/yTE69mmeX5MqSZndL0HOyx67GeNZUy3N7wVdWpLz9UTJXwyWS4UR2PUQHitghjsM5xoX0Ge56WRVQQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@astrojs/compiler-binding-win32-x64-msvc@0.3.1': + resolution: {integrity: sha512-k0W+kDBzDkNZOqu4kElDvCOIbKw5Ut9S1WZ1Krj3KTgNuBERNKXsMMsRLLcbgfdMdbe7bTekQLshZrrvmYpmwA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + + '@astrojs/compiler-binding@0.3.1': + resolution: {integrity: sha512-DaAUj29AIBU2XdJ8uwcab8lW5O2pk9pY8AXkcMw0sw77nVa3oeTYRcO+Dvbbpoexf6ThMc0FMWYCQ/wN1/T7oQ==} + engines: {node: ^20.19.0 || >=22.12.0} + + '@astrojs/compiler-rs@0.3.1': + resolution: {integrity: sha512-aT7xkgsbNoS6nriY5qKpbihK43slFHO41iqgHCTdOvn1ifaQxLCc5yXy+6GzAtiafoaC1zA7OwVXCXMsvUZOkg==} + engines: {node: '>=22.12.0'} + + '@astrojs/compiler@2.13.1': + resolution: {integrity: sha512-f3FN83d2G/v32ipNClRKgYv30onQlMZX1vCeZMjPsMMPl1mDpmbl0+N5BYo4S/ofzqJyS5hvwacEo0CCVDn/Qg==} + + '@astrojs/internal-helpers@0.10.1': + resolution: {integrity: sha512-5phcroT/vmOOrYuuAxtkbPixy5hePtlz9i8K4OeDv3dNK6/UQRuXPOSRTxIOBbUY5Sonw2UaxjbuVc43Mcir6Q==} + + '@astrojs/language-server@2.16.13': + resolution: {integrity: sha512-ekOa+CYprEq5n4EJC1qTIAhLk49HZIUQuFwrEuF+3JK/pdMaYnWoREFUI2A0KEPOJiFA2kamBzKzbYljDvUxLg==} + hasBin: true + peerDependencies: + prettier: ^3.0.0 + prettier-plugin-astro: '>=0.11.0' + peerDependenciesMeta: + prettier: + optional: true + prettier-plugin-astro: + optional: true + + '@astrojs/markdown-remark@7.2.1': + resolution: {integrity: sha512-jPVNIqTvk+yKviikszv/Y1U4jGUSKpp/Nw48QZV4qjWgp70j4Lkq3lhSDRbWwCfgKvEyO9GHuVbV1dM2WYXy1w==} + + '@astrojs/markdown-satteri@0.3.4': + resolution: {integrity: sha512-6Lvt/bQZEBW+zzdhPblvfZEy5PGEYJaUsUqaCgwHeRPxZJL1gc9I+DRLKWJjjYTWDzVUTzXlMq4WwSK+X34CVw==} + + '@astrojs/mdx@7.0.3': + resolution: {integrity: sha512-RxyIwU0uFam5ftwqKOjpIdhnFxZ/kEikeimLyQy3eGXbHT8WgRGzzesOIHVU8+m9TY8ag5WVOyvV24/GyqPdPQ==} + engines: {node: '>=22.12.0'} + peerDependencies: + '@astrojs/markdown-satteri': ^0.3.1 + astro: ^7.0.0 + peerDependenciesMeta: + '@astrojs/markdown-satteri': + optional: true + + '@astrojs/prism@4.0.2': + resolution: {integrity: sha512-KTivpmnz6lDsC6o9H4+DNm2SrE/GHzw8cNAvEJwAvUT+eoaEnn/4NtbDNfRRaxaJHdp15gf+tfHAWiXR4wB3BA==} + engines: {node: '>=22.12.0'} + + '@astrojs/sitemap@3.7.3': + resolution: {integrity: sha512-f8euLVsyeAmAkSm/1M2Kb8sL8byQmfgbvBNaHFItCheTj/IpiJYSEWVcqDHZ/yEHxiS7+w87mQkzwZaPHmk5GA==} + + '@astrojs/starlight@0.41.4': + resolution: {integrity: sha512-cRCKZhM2BKYViCakBiN68aVwPn5qj/XtMMq//G54xOWdXXcvic1gMMEI+veNlIKOqqC4QmIjcjk4jiFtlZ3mMg==} + peerDependencies: + '@astrojs/markdown-remark': ^7.2.0 + astro: ^7.0.2 + peerDependenciesMeta: + '@astrojs/markdown-remark': + optional: true + + '@astrojs/telemetry@3.3.3': + resolution: {integrity: sha512-C1TLn5sPJr0x4vk56piHWKbnqlEB8BKyte5Y45V02U+D7BGO5eMqZDH5aPjnkXQWJggvmsTXxH03QMZ9NgWLzQ==} + engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0} + + '@astrojs/yaml2ts@0.2.4': + resolution: {integrity: sha512-8oddpOae35pJsXPQXhTkM0ypfKPskVsh2bCxRtbf7e+/Epw2nReakFYpLKjZMEr75CsoF203PMnCocpfz0s69A==} + + '@axe-core/playwright@4.12.1': + resolution: {integrity: sha512-rMd7xriptqKpP+w5265i4Hdkv2X5kbu6uiBi/B2I7uf3hieRBM3qDCfaKPtxfiYb2mKXfF+yLODJwIx+Jv1GDw==} + peerDependencies: + playwright-core: '>= 1.0.0' + + '@babel/helper-string-parser@7.29.7': + resolution: {integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.29.7': + resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.29.7': + resolution: {integrity: sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/types@7.29.7': + resolution: {integrity: sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==} + engines: {node: '>=6.9.0'} + + '@braintree/sanitize-url@7.1.2': + resolution: {integrity: sha512-jigsZK+sMF/cuiB7sERuo9V7N9jx+dhmHHnQyDSVdpZwVutaBu7WvNYqMDLSgFgfB30n452TP3vjDAvFC973mA==} + + '@bruits/satteri-darwin-arm64@0.9.5': + resolution: {integrity: sha512-iw4nZgx9v30lWo/MTngQqi1pI78KI0DnkSm+lVJGYdmPLgAyDNJigVhpG42/Iq55A6c1Ll8q66ljyyRiQUxwow==} + cpu: [arm64] + os: [darwin] + + '@bruits/satteri-darwin-x64@0.9.5': + resolution: {integrity: sha512-6T26Z5Kf3cFW2PSlk9p7zT7yVxvuBSiJvYyz9u8KjYwMTqZyIDOj2wDyNpxKV4+6yUVG7rddq2QwvG/8LJA2+Q==} + cpu: [x64] + os: [darwin] + + '@bruits/satteri-linux-arm64-gnu@0.9.5': + resolution: {integrity: sha512-u51id17uJwNEMK9nBlICsq6U31c+XVqQueVBkwRIzZG+gMpS8TOJctt5h5Wz33Z8xnMdTd+adtACVz0yHgGuOA==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@bruits/satteri-linux-arm64-musl@0.9.5': + resolution: {integrity: sha512-v39HxiwGC5Rqm01HksP6+5Y+xKLPlsuVFgIgpEAo+SiQ22c+mJVhS3u7Z6ePAKdhL5NJoK1xq70kLz3L13AhpQ==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@bruits/satteri-linux-x64-gnu@0.9.5': + resolution: {integrity: sha512-F3uO8uFp3pAP5ZGXttwvh57GS7s0lL953tnNdyI2gRyP4kOOkp6pyGojNJzCjkDvWI2Cvb9iNrKok3aqQPauAw==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@bruits/satteri-linux-x64-musl@0.9.5': + resolution: {integrity: sha512-bicEqglLlz++mWyADaZoP0JY20s4vDfLjaPYgQqC+NI4zZLTOOg1T4GB8aqtc822Pqji8SQBmSrTb7CrP8i08Q==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@bruits/satteri-wasm32-wasi@0.9.5': + resolution: {integrity: sha512-zauAuMwfPnKPUkd4AFixRFpXdgKwP2mKgxrIIo2gJzW0/ZneF9dbHnLkojSpaBnCCp7VUL1hIi5WWZvB1CqmAQ==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@bruits/satteri-win32-arm64-msvc@0.9.5': + resolution: {integrity: sha512-SrfE7NEsgZjBvU3c+RR6oQRu0ToXY5uVJEbieXEF0YTctIV2zAVlbaMjWLts074QCgh3a+XHWkR/lWh2VH2LUg==} + cpu: [arm64] + os: [win32] + + '@bruits/satteri-win32-x64-msvc@0.9.5': + resolution: {integrity: sha512-5Kw9ZAtTGS8WHizyn+CJhjjfIQrw+7jcZodpmpXJjefnO15M8UexIi6JR2E5thyvsmHyhL6ZDDMUNR4bKJPd4g==} + cpu: [x64] + os: [win32] + + '@capsizecss/unpack@4.0.1': + resolution: {integrity: sha512-CuNiSqg7+e1cO/GjffyMOm5Tt2jUF9CWHHnvQ/UkqvtkGfHdgwEC0wpmq7fkN3gxwpRnrAN0WzO3vREKmNolMQ==} + engines: {node: '>=18'} + + '@chevrotain/types@11.1.2': + resolution: {integrity: sha512-U+HFai5+zmJCkK86QsaJtoITlboZHBqrVketcO2ROv865xfCMSFpELQoz1GkX5GzME8pTa+3kbKrZHQtI0gdbw==} + + '@clack/core@1.4.3': + resolution: {integrity: sha512-/kr3UWNtdJfxZtPgDqUOmG2pvwlmcLGheex5yiZKdwbzZJxhV+HMNR9QNmyY5cGwTNV6LrR7Jtp+KjhUAP1qBQ==} + engines: {node: '>= 20.12.0'} + + '@clack/prompts@1.7.0': + resolution: {integrity: sha512-y7/yvZ2TPAnR9+jnc00klvNNLkJiXFFrQA/hlLCcxA9a2A4zQIOimyFQ9XfwYKiGD1fb5GY8vbKIIgO8d5Tb2A==} + engines: {node: '>= 20.12.0'} + + '@cspell/cspell-bundled-dicts@10.0.1': + resolution: {integrity: sha512-WvkSDNX4Uyyj/ZgbPO6L38iFNMfK1EqsH1FteRiI2qLz6QZMXRFrIt12OqiWIplzZDDaVpBH9FCJOPJll0fjCQ==} + engines: {node: '>=22.18.0'} + + '@cspell/cspell-json-reporter@10.0.1': + resolution: {integrity: sha512-/nes1RGILec3WCBcoMOd0byNTBtnJuPaVz/+ZzqYkLtY7x58VMcBG5kyP6hPyN8cIwjRADE/SR43gwdXuqk/FA==} + engines: {node: '>=22.18.0'} + + '@cspell/cspell-performance-monitor@10.0.1': + resolution: {integrity: sha512-9tVcHXwRnbazUv4WSG0h3MqV4+LgmLNgSALAQUflPPW0EMxTf7C4Dmv9cgxJyCEQrdnVKCr58nPPaahhz9LJUg==} + engines: {node: '>=22.18.0'} + + '@cspell/cspell-pipe@10.0.1': + resolution: {integrity: sha512-HPeXMD9AZ3V/qPkvQaPcak+C7cJ2z7JTHN8smd6J8L2aThLRky2cHc2OyeaHPSHB7WA47b4z2n5u5nawZhv5VQ==} + engines: {node: '>=22.18.0'} + + '@cspell/cspell-resolver@10.0.1': + resolution: {integrity: sha512-PIzkZHD1fGUQx1XteK2d1iQ0Mzq/maYcoB4jkvAiiR6WqP3MWYNKFdI9z+R5pOq5KgMfW+5Ig1q0oSR6h8irlA==} + engines: {node: '>=22.18.0'} + + '@cspell/cspell-service-bus@10.0.1': + resolution: {integrity: sha512-y6NcIGP2IdXaBL4PVH8vxsr7K27wzz3Ech87UtUtrDSXAiVEOvXgAIknEOUVp59rTlUE8Rn4IRURC6f/hgMyfw==} + engines: {node: '>=22.18.0'} + + '@cspell/cspell-types@10.0.1': + resolution: {integrity: sha512-kLgLShnWADDVreKC63pBrWkcvxgZzFIfO34Jhx/SWfuOIA3cD8AXT+HjyuLfoGJ7mUb58hv2kUziKzEy4INb1w==} + engines: {node: '>=22.18.0'} + + '@cspell/cspell-worker@10.0.1': + resolution: {integrity: sha512-L2bJerfuYOls2wEknm8FmynLtj/G7O4UqX9I/HznRggEW6i2yZIxagDetpVDNowpyavNHJ3SJtUFiyMiZc16Sw==} + engines: {node: '>=22.18.0'} + + '@cspell/dict-ada@4.1.1': + resolution: {integrity: sha512-E+0YW9RhZod/9Qy2gxfNZiHJjCYFlCdI69br1eviQQWB8yOTJX0JHXLs79kOYhSW0kINPVUdvddEBe6Lu6CjGQ==} + + '@cspell/dict-al@1.1.1': + resolution: {integrity: sha512-sD8GCaZetgQL4+MaJLXqbzWcRjfKVp8x+px3HuCaaiATAAtvjwUQ5/Iubiqwfd1boIh2Y1/3EgM3TLQ7Q8e0wQ==} + + '@cspell/dict-aws@4.0.17': + resolution: {integrity: sha512-ORcblTWcdlGjIbWrgKF+8CNEBQiLVKdUOFoTn0KPNkAYnFcdPP0muT4892h7H4Xafh3j72wqB4/loQ6Nti9E/w==} + + '@cspell/dict-bash@4.2.3': + resolution: {integrity: sha512-ljUZoKHbDqw5Sx0qpL2qTUlmkmr+vhZH/sCNrNaBZKTbdgiswErSnIF1jRbGmEitJNxHRHWsuZyVgnTGfVO1Yw==} + + '@cspell/dict-companies@3.2.12': + resolution: {integrity: sha512-mjiz/N3zWOCsz5VfwMUydSl7uW0OU9H2PnbCNc3RV44Vj6Q59CSp6EYGSGZQxrXU1gpsuZUrwr6QCjNjFOOg5A==} + + '@cspell/dict-cpp@7.0.2': + resolution: {integrity: sha512-dfbeERiVNeqmo/npivdR6rDiBCqZi3QtjH2Z0HFcXwpdj6i97dX1xaKyK2GUsO/p4u1TOv63Dmj5Vm48haDpuA==} + + '@cspell/dict-cryptocurrencies@5.0.5': + resolution: {integrity: sha512-R68hYYF/rtlE6T/dsObStzN5QZw+0aQBinAXuWCVqwdS7YZo0X33vGMfChkHaiCo3Z2+bkegqHlqxZF4TD3rUA==} + + '@cspell/dict-csharp@4.0.8': + resolution: {integrity: sha512-qmk45pKFHSxckl5mSlbHxmDitSsGMlk/XzFgt7emeTJWLNSTUK//MbYAkBNRtfzB4uD7pAFiKgpKgtJrTMRnrQ==} + + '@cspell/dict-css@4.1.2': + resolution: {integrity: sha512-+ylGoKdwZ2sVOCOnU2Eq5wDZx+RaVX3HoKyNHGGsFvhSw6IidQ6tH/mAPKBDofViHJoWCPNlklE0lTr6MDG3QA==} + + '@cspell/dict-dart@2.3.2': + resolution: {integrity: sha512-sUiLW56t9gfZcu8iR/5EUg+KYyRD83Cjl3yjDEA2ApVuJvK1HhX+vn4e4k4YfjpUQMag8XO2AaRhARE09+/rqw==} + + '@cspell/dict-data-science@2.0.16': + resolution: {integrity: sha512-M72mxv5asuAnORurz4iXRJ+Tw9XBq6eu7D2Ne7biP0Z1RciKGNxXWu9JycA/KlVvK1hAlKj/fANlXhuEWpXKFg==} + + '@cspell/dict-django@4.1.6': + resolution: {integrity: sha512-SdbSFDGy9ulETqNz15oWv2+kpWLlk8DJYd573xhIkeRdcXOjskRuxjSZPKfW7O3NxN/KEf3gm3IevVOiNuFS+w==} + + '@cspell/dict-docker@1.1.17': + resolution: {integrity: sha512-OcnVTIpHIYYKhztNTyK8ShAnXTfnqs43hVH6p0py0wlcwRIXe5uj4f12n7zPf2CeBI7JAlPjEsV0Rlf4hbz/xQ==} + + '@cspell/dict-dotnet@5.0.13': + resolution: {integrity: sha512-xPp7jMnFpOri7tzmqmm/dXMolXz1t2bhNqxYkOyMqXhvs08oc7BFs+EsbDY0X7hqiISgeFZGNqn0dOCr+ncPYw==} + + '@cspell/dict-elixir@4.0.8': + resolution: {integrity: sha512-CyfphrbMyl4Ms55Vzuj+mNmd693HjBFr9hvU+B2YbFEZprE5AG+EXLYTMRWrXbpds4AuZcvN3deM2XVB80BN/Q==} + + '@cspell/dict-en-common-misspellings@2.1.13': + resolution: {integrity: sha512-00rpydUxKNWY2xxrSx+h46aNWLvbkJdd57SsnEFt24fbs1fROhXZ6XSQu+gQz/zNuiCvFi4Ro3ej9DLbEdWQmQ==} + + '@cspell/dict-en-gb-mit@3.1.25': + resolution: {integrity: sha512-zGODptk24CMrXi49ieG2SUm94CKxEsVF0dYNF+1ZYH0MSsQDZ/PKDlrrbvtBqSupKdPSj0Z9sjOmMNfHHW9ZSg==} + + '@cspell/dict-en_us@4.4.36': + resolution: {integrity: sha512-2yOhI/+7d1DbfvMljGW4jw8pLqDEsVmnvUXBOCFXtLU2BWgQkrqOJDCNseYjEiEbTp0OtdrWEWWPFSP1TNugQw==} + + '@cspell/dict-filetypes@3.0.18': + resolution: {integrity: sha512-yU7RKD/x1IWmDLzWeiItMwgV+6bUcU/af23uS0+uGiFUbsY1qWV/D4rxlAAO6Z7no3J2z8aZOkYIOvUrJq0Rcw==} + + '@cspell/dict-flutter@1.1.1': + resolution: {integrity: sha512-UlOzRcH2tNbFhZmHJN48Za/2/MEdRHl2BMkCWZBYs+30b91mWvBfzaN4IJQU7dUZtowKayVIF9FzvLZtZokc5A==} + + '@cspell/dict-fonts@4.0.6': + resolution: {integrity: sha512-aR/0csY01dNb0A1tw/UmN9rKgHruUxsYsvXu6YlSBJFu60s26SKr/k1o4LavpHTQ+lznlYMqAvuxGkE4Flliqw==} + + '@cspell/dict-fsharp@1.1.1': + resolution: {integrity: sha512-imhs0u87wEA4/cYjgzS0tAyaJpwG7vwtC8UyMFbwpmtw+/bgss+osNfyqhYRyS/ehVCWL17Ewx2UPkexjKyaBA==} + + '@cspell/dict-fullstack@3.2.9': + resolution: {integrity: sha512-diZX+usW5aZ4/b2T0QM/H/Wl9aNMbdODa1Jq0ReBr/jazmNeWjd+PyqeVgzd1joEaHY+SAnjrf/i9CwKd2ZtWQ==} + + '@cspell/dict-gaming-terms@1.1.2': + resolution: {integrity: sha512-9XnOvaoTBscq0xuD6KTEIkk9hhdfBkkvJAIsvw3JMcnp1214OCGW8+kako5RqQ2vTZR3Tnf3pc57o7VgkM0q1Q==} + + '@cspell/dict-git@3.1.0': + resolution: {integrity: sha512-KEt9zGkxqGy2q1nwH4CbyqTSv5nadpn8BAlDnzlRcnL0Xb3LX9xTgSGShKvzb0bw35lHoYyLWN2ZKAqbC4pgGQ==} + + '@cspell/dict-golang@6.0.26': + resolution: {integrity: sha512-YKA7Xm5KeOd14v5SQ4ll6afe9VSy3a2DWM7L9uBq4u3lXToRBQ1W5PRa+/Q9udd+DTURyVVnQ+7b9cnOlNxaRg==} + + '@cspell/dict-google@1.0.9': + resolution: {integrity: sha512-biL65POqialY0i4g6crj7pR6JnBkbsPovB2WDYkj3H4TuC/QXv7Pu5pdPxeUJA6TSCHI7T5twsO4VSVyRxD9CA==} + + '@cspell/dict-haskell@4.0.6': + resolution: {integrity: sha512-ib8SA5qgftExpYNjWhpYIgvDsZ/0wvKKxSP+kuSkkak520iPvTJumEpIE+qPcmJQo4NzdKMN8nEfaeci4OcFAQ==} + + '@cspell/dict-html-symbol-entities@4.0.5': + resolution: {integrity: sha512-429alTD4cE0FIwpMucvSN35Ld87HCyuM8mF731KU5Rm4Je2SG6hmVx7nkBsLyrmH3sQukTcr1GaiZsiEg8svPA==} + + '@cspell/dict-html@4.0.15': + resolution: {integrity: sha512-GJYnYKoD9fmo2OI0aySEGZOjThnx3upSUvV7mmqUu8oG+mGgzqm82P/f7OqsuvTaInZZwZbo+PwJQd/yHcyFIw==} + + '@cspell/dict-java@5.0.12': + resolution: {integrity: sha512-qPSNhTcl7LGJ5Qp6VN71H8zqvRQK04S08T67knMq9hTA8U7G1sTKzLmBaDOFhq17vNX/+rT+rbRYp+B5Nwza1A==} + + '@cspell/dict-julia@1.1.1': + resolution: {integrity: sha512-WylJR9TQ2cgwd5BWEOfdO3zvDB+L7kYFm0I9u0s9jKHWQ6yKmfKeMjU9oXxTBxIufhCXm92SKwwVNAC7gjv+yA==} + + '@cspell/dict-k8s@1.0.13': + resolution: {integrity: sha512-ELGkS13k7K/NEfVimBSrxVTfqXvOF/Kvxj4I62YxRm8bvHbfoXgrGaOx28lPiNRz+dmu+yYtvuXbnURKtYbC6g==} + + '@cspell/dict-kotlin@1.1.1': + resolution: {integrity: sha512-J3NzzfgmxRvEeOe3qUXnSJQCd38i/dpF9/t3quuWh6gXM+krsAXP75dY1CzDmS8mrJAlBdVBeAW5eAZTD8g86Q==} + + '@cspell/dict-latex@5.1.0': + resolution: {integrity: sha512-qxT4guhysyBt0gzoliXYEBYinkAdEtR2M7goRaUH0a7ltCsoqqAeEV8aXYRIdZGcV77gYSobvu3jJL038tlPAw==} + + '@cspell/dict-lorem-ipsum@4.0.5': + resolution: {integrity: sha512-9a4TJYRcPWPBKkQAJ/whCu4uCAEgv/O2xAaZEI0n4y1/l18Yyx8pBKoIX5QuVXjjmKEkK7hi5SxyIsH7pFEK9Q==} + + '@cspell/dict-lua@4.0.8': + resolution: {integrity: sha512-N4PkgNDMu9JVsRu7JBS/3E/dvfItRgk9w5ga2dKq+JupP2Y3lojNaAVFhXISh4Y0a6qXDn2clA6nvnavQ/jjLA==} + + '@cspell/dict-makefile@1.0.5': + resolution: {integrity: sha512-4vrVt7bGiK8Rx98tfRbYo42Xo2IstJkAF4tLLDMNQLkQ86msDlYSKG1ZCk8Abg+EdNcFAjNhXIiNO+w4KflGAQ==} + + '@cspell/dict-markdown@2.0.17': + resolution: {integrity: sha512-H8bAxih6U8NOnSPL7R8My+tqjaB4tmnJTjERuz4zYqmf+cH+5xshX3UVgKlwWFcyjsYfv/zEDuRdMctQv1q6HQ==} + peerDependencies: + '@cspell/dict-css': ^4.1.2 + '@cspell/dict-html': ^4.0.15 + '@cspell/dict-html-symbol-entities': ^4.0.5 + '@cspell/dict-typescript': ^3.2.3 + + '@cspell/dict-monkeyc@1.0.12': + resolution: {integrity: sha512-MN7Vs11TdP5mbdNFQP5x2Ac8zOBm97ARg6zM5Sb53YQt/eMvXOMvrep7+/+8NJXs0jkp70bBzjqU4APcqBFNAw==} + + '@cspell/dict-node@5.0.9': + resolution: {integrity: sha512-hO+ga+uYZ/WA4OtiMEyKt5rDUlUyu3nXMf8KVEeqq2msYvAPdldKBGH7lGONg6R/rPhv53Rb+0Y1SLdoK1+7wQ==} + + '@cspell/dict-npm@5.2.43': + resolution: {integrity: sha512-H2gYwtu59dNO9662Uq0usfuhyNd7lZJE1C61a/UXcpRyWWSrTo2Bz+vwGYp1bXZ1LmjXadqvwJ8ArFlGdiadNQ==} + + '@cspell/dict-php@4.1.1': + resolution: {integrity: sha512-EXelI+4AftmdIGtA8HL8kr4WlUE11OqCSVlnIgZekmTkEGSZdYnkFdiJ5IANSALtlQ1mghKjz+OFqVs6yowgWA==} + + '@cspell/dict-powershell@5.0.15': + resolution: {integrity: sha512-l4S5PAcvCFcVDMJShrYD0X6Huv9dcsQPlsVsBGbH38wvuN7gS7+GxZFAjTNxDmTY1wrNi1cCatSg6Pu2BW4rgg==} + + '@cspell/dict-public-licenses@2.0.16': + resolution: {integrity: sha512-EQRrPvEOmwhwWezV+W7LjXbIBjiy6y/shrET6Qcpnk3XANTzfvWflf9PnJ5kId/oKWvihFy0za0AV1JHd03pSQ==} + + '@cspell/dict-python@4.2.29': + resolution: {integrity: sha512-OnEt1a35iuQzc2Ize1qU/43ZyF10urRKAm+mlTz++vnAgDLBHpKfWakpSK50nyL5/1WvyQ8BaMjb52MBLEpTeA==} + + '@cspell/dict-r@2.1.1': + resolution: {integrity: sha512-71Ka+yKfG4ZHEMEmDxc6+blFkeTTvgKbKAbwiwQAuKl3zpqs1Y0vUtwW2N4b3LgmSPhV3ODVY0y4m5ofqDuKMw==} + + '@cspell/dict-ruby@5.1.1': + resolution: {integrity: sha512-LHrp84oEV6q1ZxPPyj4z+FdKyq1XAKYPtmGptrd+uwHbrF/Ns5+fy6gtSi7pS+uc0zk3JdO9w/tPK+8N1/7WUA==} + + '@cspell/dict-rust@4.1.2': + resolution: {integrity: sha512-O1FHrumYcO+HZti3dHfBPUdnDFkI+nbYK3pxYmiM1sr+G0ebOd6qchmswS0Wsc6ZdEVNiPYJY/gZQR6jfW3uOg==} + + '@cspell/dict-scala@5.0.9': + resolution: {integrity: sha512-AjVcVAELgllybr1zk93CJ5wSUNu/Zb5kIubymR/GAYkMyBdYFCZ3Zbwn4Zz8GJlFFAbazABGOu0JPVbeY59vGg==} + + '@cspell/dict-shell@1.2.0': + resolution: {integrity: sha512-PVctvT22lJ49niMiakO8xieY7ELCAzjSqhejWR7bAMb5AZ9F4WDEs+XdGMnoVHWeXq7K5rcepLPmEJb+37zzIw==} + + '@cspell/dict-software-terms@5.2.4': + resolution: {integrity: sha512-z6y/TGH3QNf5wB4pVvN/P3GfFEW/Whf6QAekNsIn06VKl95dnamfpkPWqV8rEtCixQFaKalb5+y9hRQXH3XQ1g==} + + '@cspell/dict-sql@2.2.1': + resolution: {integrity: sha512-qDHF8MpAYCf4pWU8NKbnVGzkoxMNrFqBHyG/dgrlic5EQiKANCLELYtGlX5auIMDLmTf1inA0eNtv74tyRJ/vg==} + + '@cspell/dict-svelte@1.0.7': + resolution: {integrity: sha512-hGZsGqP0WdzKkdpeVLBivRuSNzOTvN036EBmpOwxH+FTY2DuUH7ecW+cSaMwOgmq5JFSdTcbTNFlNC8HN8lhaQ==} + + '@cspell/dict-swift@2.0.6': + resolution: {integrity: sha512-PnpNbrIbex2aqU1kMgwEKvCzgbkHtj3dlFLPMqW1vSniop7YxaDTtvTUO4zA++ugYAEL+UK8vYrBwDPTjjvSnA==} + + '@cspell/dict-terraform@1.1.4': + resolution: {integrity: sha512-Ere42ilvMFvQA4GlcN0OKlruMPR6EsvaB+iTHzj2xc+NJGRK64V7yApUcWrOrSgTiM/vhWXPIsK3OMfiAiNdmA==} + + '@cspell/dict-typescript@3.2.3': + resolution: {integrity: sha512-zXh1wYsNljQZfWWdSPYwQhpwiuW0KPW1dSd8idjMRvSD0aSvWWHoWlrMsmZeRl4qM4QCEAjua8+cjflm41cQBg==} + + '@cspell/dict-vue@3.0.5': + resolution: {integrity: sha512-Mqutb8jbM+kIcywuPQCCaK5qQHTdaByoEO2J9LKFy3sqAdiBogNkrplqUK0HyyRFgCfbJUgjz3N85iCMcWH0JA==} + + '@cspell/dict-zig@1.0.0': + resolution: {integrity: sha512-XibBIxBlVosU06+M6uHWkFeT0/pW5WajDRYdXG2CgHnq85b0TI/Ks0FuBJykmsgi2CAD3Qtx8UHFEtl/DSFnAQ==} + + '@cspell/dynamic-import@10.0.1': + resolution: {integrity: sha512-mP1gdq00aIcH8HxNMqnH11X6BKxLcneDtFgl/ecjIKnaGKwi44m8AndP5Kr4ODaYdl8UUw9O3dJh7KaQXnLHZQ==} + engines: {node: '>=22.18.0'} + + '@cspell/filetypes@10.0.1': + resolution: {integrity: sha512-Z5S35giU5IW49fBBq6BksUbE8PC4IYPfaKuwl5Nl9jkf/OkAKiBmCowKX45NzRUQInwK/GSqqIUifrNeI6LdLw==} + engines: {node: '>=22.18.0'} + + '@cspell/rpc@10.0.1': + resolution: {integrity: sha512-axSRKv3zEAmBm66iD/FV/MPmE4/Yf7c3PZiwTW894Yd3iEhtn3KPKeTrqQ2/tDrhB1Z2qTsap/Hue0MK4o5WXg==} + engines: {node: '>=22.18.0'} + + '@cspell/strong-weak-map@10.0.1': + resolution: {integrity: sha512-lenN1DVyPi8nJLSMSJJ670ddTjyiruLueuSZO1qLcxBqUhgxDt/mALu9N/1m6WdOVcg6m/5cLiZVg2KOo2UzRw==} + engines: {node: '>=22.18.0'} + + '@cspell/url@10.0.1': + resolution: {integrity: sha512-abYYgI29wJhWIfWTYrYuzRYDcHQUQ1N5ylnhxYn1NJnIQMqUWGLbDmt12JABtZ+R6h6UNatQrS7rhP86etvJyQ==} + engines: {node: '>=22.18.0'} + + '@ctrl/tinycolor@4.2.0': + resolution: {integrity: sha512-kzyuwOAQnXJNLS9PSyrk0CWk35nWJW/zl/6KvnTBMFK65gm7U1/Z5BqjxeapjZCIhQcM/DsrEmcbRwDyXyXK4A==} + engines: {node: '>=14'} + + '@emmetio/abbreviation@2.3.3': + resolution: {integrity: sha512-mgv58UrU3rh4YgbE/TzgLQwJ3pFsHHhCLqY20aJq+9comytTXUDNGG/SMtSeMJdkpxgXSXunBGLD8Boka3JyVA==} + + '@emmetio/css-abbreviation@2.1.8': + resolution: {integrity: sha512-s9yjhJ6saOO/uk1V74eifykk2CBYi01STTK3WlXWGOepyKa23ymJ053+DNQjpFcy1ingpaO7AxCcwLvHFY9tuw==} + + '@emmetio/css-parser@0.4.1': + resolution: {integrity: sha512-2bC6m0MV/voF4CTZiAbG5MWKbq5EBmDPKu9Sb7s7nVcEzNQlrZP6mFFFlIaISM8X6514H9shWMme1fCm8cWAfQ==} + + '@emmetio/html-matcher@1.3.0': + resolution: {integrity: sha512-NTbsvppE5eVyBMuyGfVu2CRrLvo7J4YHb6t9sBFLyY03WYhXET37qA4zOYUjBWFCRHO7pS1B9khERtY0f5JXPQ==} + + '@emmetio/scanner@1.0.4': + resolution: {integrity: sha512-IqRuJtQff7YHHBk4G8YZ45uB9BaAGcwQeVzgj/zj8/UdOhtQpEIupUhSk8dys6spFIWVZVeK20CzGEnqR5SbqA==} + + '@emmetio/stream-reader-utils@0.1.0': + resolution: {integrity: sha512-ZsZ2I9Vzso3Ho/pjZFsmmZ++FWeEd/txqybHTm4OgaZzdS8V9V/YYWQwg5TC38Z7uLWUV1vavpLLbjJtKubR1A==} + + '@emmetio/stream-reader@2.2.0': + resolution: {integrity: sha512-fXVXEyFA5Yv3M3n8sUGT7+fvecGrZP4k6FnWWMSZVQf69kAq0LLpaBQLGcPR30m3zMmKYhECP4k/ZkzvhEW5kw==} + + '@emnapi/core@1.11.1': + resolution: {integrity: sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==} + + '@emnapi/runtime@1.11.1': + resolution: {integrity: sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==} + + '@emnapi/runtime@1.11.2': + resolution: {integrity: sha512-kyOl3X0DuTiT1h2ft8r2fYO8JYtU9a9Xis/zBSiGArNaagCOWx90N1k2wxp18czFDH+OgcWGb5ZP/XMt3dcyPA==} + + '@emnapi/wasi-threads@1.2.2': + resolution: {integrity: sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==} + + '@esbuild/aix-ppc64@0.28.1': + resolution: {integrity: sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.28.1': + resolution: {integrity: sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.28.1': + resolution: {integrity: sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.28.1': + resolution: {integrity: sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.28.1': + resolution: {integrity: sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.28.1': + resolution: {integrity: sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.28.1': + resolution: {integrity: sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.28.1': + resolution: {integrity: sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.28.1': + resolution: {integrity: sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.28.1': + resolution: {integrity: sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.28.1': + resolution: {integrity: sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.28.1': + resolution: {integrity: sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.28.1': + resolution: {integrity: sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.28.1': + resolution: {integrity: sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.28.1': + resolution: {integrity: sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.28.1': + resolution: {integrity: sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.28.1': + resolution: {integrity: sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.28.1': + resolution: {integrity: sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.28.1': + resolution: {integrity: sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.28.1': + resolution: {integrity: sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.28.1': + resolution: {integrity: sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openharmony-arm64@0.28.1': + resolution: {integrity: sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/sunos-x64@0.28.1': + resolution: {integrity: sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.28.1': + resolution: {integrity: sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.28.1': + resolution: {integrity: sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.28.1': + resolution: {integrity: sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@expressive-code/core@0.44.1': + resolution: {integrity: sha512-3dDo9N8D7hYrLNNMMWFovg3+aDUtnQm7c7z0GZc1c0LEFVBc0Q6lKG+tVT28gDadOvsgOANfCn35fgpe97Pmgg==} + + '@expressive-code/plugin-frames@0.44.1': + resolution: {integrity: sha512-HC/bdRao9225ApcgO/e3jn8ZOhldKO7ob1O/Tcipvtv7Vb5nMphZhMtD9uuywpvxkPYBHJi3504WhrKg05Dwqg==} + + '@expressive-code/plugin-shiki@0.44.1': + resolution: {integrity: sha512-YApiZt3buUzBwL5tqj8G+sYC5NjMjRCHgQwr9bmGl69rtcHy6fE9dooWUeKYB978fJT2BuxT5FeHcF47rA3SEg==} + + '@expressive-code/plugin-text-markers@0.44.1': + resolution: {integrity: sha512-B3BsJoJ8CFMlcIX9f+X9tcI3C4zPDO601+YuLi9GheSTNro7ZfqSjLptMQKBHOWZvxnAtY5zvIX7iO/qtBhNBg==} + + '@iconify/types@2.0.0': + resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} + + '@iconify/utils@3.1.4': + resolution: {integrity: sha512-b1S7B1k9ohZ+iNTi2ATxbRYG9fTrJmUT0rc46bvVnNxqNRGW7dyo/vRREwyniI5IRN2RSJHDcm+s3BjWrSAjHw==} + + '@img/colour@1.1.0': + resolution: {integrity: sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==} + engines: {node: '>=18'} + + '@img/sharp-darwin-arm64@0.35.3': + resolution: {integrity: sha512-RMnFX7YQsMoh7lWfcM4NEHHymBX/rLuKNPVM84XE9ONPcaSCDgE7CHIHpSgPcO2xcRthgBy1HfNO319mwhIAkg==} + engines: {node: '>=20.9.0'} + cpu: [arm64] + os: [darwin] + + '@img/sharp-darwin-x64@0.35.3': + resolution: {integrity: sha512-Xo+5uFBtLN0BKqieTxiFzFPQAUlBbbH5iBKyRX/z1JrbnYsHTfKJnUfL8+p2TPXr1pXqao4eeL4Rl144uDpK9w==} + engines: {node: '>=20.9.0'} + cpu: [x64] + os: [darwin] + + '@img/sharp-freebsd-wasm32@0.35.3': + resolution: {integrity: sha512-lUxcqWIj2wMQ9BrwNjngcr1gWUr5xgaGThBRqPPalIC2n67Cqj1uPh8NnA/ZhAg8hUbKl+kVHKwgUIwe6ZYPrg==} + engines: {node: '>=20.9.0'} + os: [freebsd] + + '@img/sharp-libvips-darwin-arm64@1.3.2': + resolution: {integrity: sha512-9J6ypZFpQBj4YnePGoq/S38w6nz+vqg5WZLrLGY4YuSemdMq47GMLBPO42MzwdGwpg/agZ7xzZcFHa48xlywfg==} + cpu: [arm64] + os: [darwin] + + '@img/sharp-libvips-darwin-x64@1.3.2': + resolution: {integrity: sha512-m2pW1n6cns9VaubNwsZ+c3CRYjxNQWgJ5gPlnL1nbBcpkBvFm6SCFN5o0psFHI8w9n11NKhFkeEDns98tiqbEw==} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-linux-arm64@1.3.2': + resolution: {integrity: sha512-dqVSFynCox4C/J8kT16V7SIFAns0IjgLwkvYT7p8LQVmJ5OS5b6tI9IGflxTeuBS//zXeFIUbwt5dwxyZ17cnA==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@img/sharp-libvips-linux-arm@1.3.2': + resolution: {integrity: sha512-1eMLzy92I4J6rmi4mAT8yC3HxOtniyGELlzGbNMLLeqe052ahFQ0h6LFq+lh5DsDIdYViIDst08abvSbcEdLXQ==} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@img/sharp-libvips-linux-ppc64@1.3.2': + resolution: {integrity: sha512-3z0NHDxD6n5I9gc05U1eW1AyRm+Gznzq3naMrthPNqE6oYykcogW0l/jfpJdjYnuNl8R7yI9pNbE1XiUeyq0Aw==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@img/sharp-libvips-linux-riscv64@1.3.2': + resolution: {integrity: sha512-bsb4rI+NldGOsXuej2r8OdSS8+zXDVaCWxyWrcv6kneTOlgAHtZABRzBBCwdsPiD90J4myNJuHpg6kA20ImW/w==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@img/sharp-libvips-linux-s390x@1.3.2': + resolution: {integrity: sha512-/ABshyj8gCpyIrNXnHn4LorDJ0HHm1VhXPBlxZ8zAtfVPAaSafXPGn+sUSIRiwaSBy0mmFjSjiXI5mkcwdChKQ==} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@img/sharp-libvips-linux-x64@1.3.2': + resolution: {integrity: sha512-ITPEtgffGJ0S6G9dRyw/366tJQqFRcHWPHhC+Stpg3Z8AEMrDrTr2lhdz4f/Y/HMbRh//7Z5mBzEpVdi62Oc3w==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@img/sharp-libvips-linuxmusl-arm64@1.3.2': + resolution: {integrity: sha512-zE9EdiUzUmg5mDT5a1rk5fYJ6GWPloTwWBYDS14naqHsL+EaMpDj1AWnpLgh3u0YCORv2Tt50wrcrpYqkP97Kw==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@img/sharp-libvips-linuxmusl-x64@1.3.2': + resolution: {integrity: sha512-m0lrLiUt+lBYnCFr8qV/65yMR4E/c7/wf78I5eKTdkEakFAlZ9QlzEM3QIhhAwVeUhLAHLcCq7a7Vszq/oFNZQ==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@img/sharp-linux-arm64@0.35.3': + resolution: {integrity: sha512-QgKDspHPnrU+GQ55XPhGwyhC8acLVOOSyAvo1oVfFmrIXLkDNmGWzAfDZ4xK8oSA1qBQrALcHX0G5UZni/SuFQ==} + engines: {node: '>=20.9.0'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@img/sharp-linux-arm@0.35.3': + resolution: {integrity: sha512-affVWCTLooy8TSxbDx2qkzuDeaWLNVBA+P//FNBirHsXpP2fuBhk5AuboYUnrDnzoXes8GFjpTx0SBFOCRg+FA==} + engines: {node: '>=20.9.0'} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@img/sharp-linux-ppc64@0.35.3': + resolution: {integrity: sha512-sMd8rDxmpLOwv/7N44klFjOD5DUO7FLdjiXDI0hoxYaf7Ar262dQIEkosE98bps+5HPLtp/EvNqeqQtOycP/IA==} + engines: {node: '>=20.9.0'} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@img/sharp-linux-riscv64@0.35.3': + resolution: {integrity: sha512-0Eob78yjlYPfL5vMNWAW55l3R9Y6BQS/gOfe0ZcP9mEz9ohhKSt4im1hayiknXgf8AWrFqMvJcKIdmLmEe7yeQ==} + engines: {node: '>=20.9.0'} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@img/sharp-linux-s390x@0.35.3': + resolution: {integrity: sha512-KgAxQ0DxpNOq1rG2t5cgTgShJFGSuU7XO45cqC+1NVOuZnP6tlgZRuSYOfNupGkHID0o3cJOsw4DVeJpMovcGw==} + engines: {node: '>=20.9.0'} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@img/sharp-linux-x64@0.35.3': + resolution: {integrity: sha512-8pqvxubL2PGdhlPy6GLqzDYMUjyRmKAwKHYKixpdJYBUK7PJ0C029XdsnpFIdgRZG68fZiGdHVWcKPvtiPB4cA==} + engines: {node: '>=20.9.0'} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@img/sharp-linuxmusl-arm64@0.35.3': + resolution: {integrity: sha512-Vz0iQjzzcSX3HCbfwFfCSG/9SCIqyO0mH2sXyiHaAYfBk0cRsCWXRyQYX0ovCK/PAQBbTzQ0dsPQHh5MAFL59w==} + engines: {node: '>=20.9.0'} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@img/sharp-linuxmusl-x64@0.35.3': + resolution: {integrity: sha512-6O1NPKcDVj9QEdg7Hx549EX8U0rp6yXQERqru6yRN7fGBn32UvIRJUlWnk+8xDCiG76hXVBbX82NZ/ZKr0euIg==} + engines: {node: '>=20.9.0'} + cpu: [x64] + os: [linux] + libc: [musl] + + '@img/sharp-wasm32@0.35.3': + resolution: {integrity: sha512-cZ0XkcYGpHZkqW6iCkqTcmUC0CD9DhD5d/qeZlZkfRBn6GnHniZXLUo5+9xw8Iv76YE6LQFN9YNBlKREcCG76w==} + engines: {node: '>=20.9.0'} + + '@img/sharp-webcontainers-wasm32@0.35.3': + resolution: {integrity: sha512-2rnq7bX3NzeR2T4YWgz8qiG4h3TSdMe+vN1iQXpJleSJ3SM5zQ8Fy2SyyXAWlbxpEZ2Y+Z4u1BePgJEYbSy80Q==} + engines: {node: '>=20.9.0'} + cpu: [wasm32] + + '@img/sharp-win32-arm64@0.35.3': + resolution: {integrity: sha512-4bPwFdMbeC4JQ8L8LOyWp6nsHcboP5fxkp6iPOXz2Vg49R42TuMs2whkJ5OAP4/Ul035qOzy0AecOF9VOscn4w==} + engines: {node: '>=20.9.0'} + cpu: [arm64] + os: [win32] + + '@img/sharp-win32-ia32@0.35.3': + resolution: {integrity: sha512-r53mXsBN6lFUDiST764SvgwUdHAqM4rPAiDzAmf4fLoB6X/rkfyTrLCg6+g17wJJiCmB3JYgHuUldCWUIRFSXw==} + engines: {node: ^20.9.0} + cpu: [ia32] + os: [win32] + + '@img/sharp-win32-x64@0.35.3': + resolution: {integrity: sha512-D4y1vNeZrIIJCN+uHaWVtH86B+aCrdMYYjicy9pXHvbGZeGYLLSd3wdVuC37FxVXlU1ARsk84eKWfWMXGYEqvA==} + engines: {node: '>=20.9.0'} + cpu: [x64] + os: [win32] + + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + + '@mdx-js/mdx@3.1.1': + resolution: {integrity: sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ==} + + '@mermaid-js/parser@1.2.0': + resolution: {integrity: sha512-oYPyv8A4As1yH5Bx+04iQEQxXuIQDe0GKCNSRgao6z8AM9jixXIfP0vsppRLvGf+nKIOb9/LdpWA4YuJiVvESA==} + + '@napi-rs/wasm-runtime@1.1.6': + resolution: {integrity: sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==} + peerDependencies: + '@emnapi/core': ^1.7.1 + '@emnapi/runtime': ^1.7.1 + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@oslojs/encoding@1.1.0': + resolution: {integrity: sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==} + + '@oxc-project/types@0.139.0': + resolution: {integrity: sha512-r9gHphtCs+1M7J0pw6Sn/hh/Wpa/iQrOOkrNAlVLF/gHq+/CJmHIWKKUUhdWjcD6CIa8idarspCsASiXCXvFUw==} + + '@pagefind/darwin-arm64@1.5.2': + resolution: {integrity: sha512-MXpI+7HsAdPkvJ0gk9xj9g541BCqBZOBbdwj9g6lB5LCj6kSV6nqDSjzcAJwvOsfu0fjwvC8hQU+ecfhp+MpiQ==} + cpu: [arm64] + os: [darwin] + + '@pagefind/darwin-x64@1.5.2': + resolution: {integrity: sha512-IojxFWMEJe0RQ7PQ3KXQsPIImNsbpPYpoZ+QUDrL8fAl/O27IX+LVLs74/UzEZy5uA2LD8Nz1AiwKr72vrkZQw==} + cpu: [x64] + os: [darwin] + + '@pagefind/default-ui@1.5.2': + resolution: {integrity: sha512-pm1LMnQg8N2B3n2TnjKlhaFihpz6zTiA4HiGQ6/slKO/+8K9CAU5kcjdSSPgpuk1PMuuN4hxLipUIifnrkl3Sg==} + + '@pagefind/freebsd-x64@1.5.2': + resolution: {integrity: sha512-7EVzo9+0w+2cbe671BtMj10UlNo83I+HrLVLfRxO731svHRJKUfJ/mo05gU14pe9PCfpKNQT8FS3Xc/oDN6pOA==} + cpu: [x64] + os: [freebsd] + + '@pagefind/linux-arm64@1.5.2': + resolution: {integrity: sha512-Ovt9+K35sqzn8H3ZMXGwls4TD/wMJuvRtShHIsmUQREmaxjrDEX7gHckRCrwYJ4XE1H1p6HkLz3wukrAnsfXQw==} + cpu: [arm64] + os: [linux] + + '@pagefind/linux-x64@1.5.2': + resolution: {integrity: sha512-V+tFqHKXhQKq/WqPBD67AFy7scn1/aZID00ws4fSDd+1daSi5UHR9VVlRrOUYKxn3VuFQYRD7lYXdZK1WED1YA==} + cpu: [x64] + os: [linux] + + '@pagefind/windows-arm64@1.5.2': + resolution: {integrity: sha512-hN9Nh90fNW61nNRCW9ZyQrAj/mD0eRvmJ8NlTUzkbuW8kIzGJUi3cxjFkEcMZ5h/8FsKWD/VcouZl4yo1F7B6g==} + cpu: [arm64] + os: [win32] + + '@pagefind/windows-x64@1.5.2': + resolution: {integrity: sha512-Fa2Iyw7kaDRzGMfNYNUXNW2zbL5FQVDgSOcbDHdzBrDEdpqOqg8TcZ68F22ol6NJ9IGzvUdmeyZypLW5dyhqsg==} + cpu: [x64] + os: [win32] + + '@playwright/test@1.61.1': + resolution: {integrity: sha512-8nKv6+0RJSL9FE4jYOEGXnPeM/Hg12qZpmqzZjRh3qM0Y7c3z1mrOTfFLids72RDQYVh9WpLEfR5WdpNX4fkig==} + engines: {node: '>=18'} + hasBin: true + + '@rolldown/binding-android-arm64@1.1.5': + resolution: {integrity: sha512-lZg8fqIv2v7FF237bwMgzGZEJvGL79/s5knJ/i6FmsGF4XXlzccZ4jb+TrFIxtSSxFtIpdsgrPZeMk1I9AFcyQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@rolldown/binding-darwin-arm64@1.1.5': + resolution: {integrity: sha512-51Bnx9pNiMRKSUNtBfySkNJ9vMU9Hh3I1ozDd6gyPPYzaXCfnptUcEZxXGYFn+ul2dtcMUiqGR1Yai2K10uoTw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@rolldown/binding-darwin-x64@1.1.5': + resolution: {integrity: sha512-Tm+gbfC0aHu1tBA/JvKQh32S0K6YgCHkiAF4/W6xX0K0RmNuc94VeK419dJoE65R5aRxmo+noZQSWrAMF6yb6g==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@rolldown/binding-freebsd-x64@1.1.5': + resolution: {integrity: sha512-JMzDKCCXq93YccG5gz3hvOs1oXRKAf0XYpfOS88e+wZrC8Iugj6j68867vrYZkvpDDpKn/KoKORThmchMpF6TA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@rolldown/binding-linux-arm-gnueabihf@1.1.5': + resolution: {integrity: sha512-uML21j2K5TfPGutKxub+M+nLjZIrWjXQ5Grx4lCe/nimTj9B4L63zHpjXLl4y0L3mcm2htEQIb06oCG/szerNw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@rolldown/binding-linux-arm64-gnu@1.1.5': + resolution: {integrity: sha512-navSiuTMogvnQoZoM/v+l3ZWo50/NTwSHSzheABx/RCnmUPaKwq9qSo4Br2OYRs21+Fz8uFqITZM3H4opOB0/Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-arm64-musl@1.1.5': + resolution: {integrity: sha512-lAryqH7IteztmCXQXk0etKj4wBQ7Gx5S6LjKhsgp9zb8I5bsuvU/2llH1hDQcjsFeqIsovMVN339/8pUDDBXxA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@rolldown/binding-linux-ppc64-gnu@1.1.5': + resolution: {integrity: sha512-fsK/sNBnxzBlL4O1JNrZakVQxPspqpED5dLtNsZS9oOKmtSpdNIzxH2kkol5HYTWJN47sE20ztMJPxfZ89qGOg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-s390x-gnu@1.1.5': + resolution: {integrity: sha512-gLYb4BIadlfTOYT5gO503n8zQjXflgzpD0FcyKh0Mzx3rqCZKnHoJWV9xe1KXUJ5lx2JfcSHr/mhzS0PC/McAA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-x64-gnu@1.1.5': + resolution: {integrity: sha512-FjcpEKUyJygHgs1o50VYNvkt5+7Le/VEdYt0AkRpkL33MnyQfwr8l5mXwMmfmTbyMPr5vJLC+8/Gd9gXnwU1QQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-x64-musl@1.1.5': + resolution: {integrity: sha512-Me+PfPI2TMeOQk0gYWfLQZtTktrmzbr8cDboqX83XKc7UrgAi55gF+2dUkWdxd19n55Essp2yeca+O9N5rBxHg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [musl] + + '@rolldown/binding-openharmony-arm64@1.1.5': + resolution: {integrity: sha512-yc5WrLzXks6zCQfn9Oxr8pORKyl/pF+QjHmW/Qx3qu0oyrrNC+y2JLTU1E2rcWYAmzlnqngWXHQjy51VzW70Vw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@rolldown/binding-wasm32-wasi@1.1.5': + resolution: {integrity: sha512-VbQGPX2b4r48TAMIM2cjgluIM1HYutm4pcTEJsle7iEP7sB1dFqtPLBVbdLAZCxy1txCcPxf4QFf4v8uvltPqA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [wasm32] + + '@rolldown/binding-win32-arm64-msvc@1.1.5': + resolution: {integrity: sha512-gHv82k63z4qpV5+Q1y/12KrK0ltWBukVDI8nZcbT7Tt/ZlOIVwppazneq0F93oDxTo3IgAMEDIoQh3E2n6mVsw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@rolldown/binding-win32-x64-msvc@1.1.5': + resolution: {integrity: sha512-tTZuDBPw85tEN5PQi1pnEBzDy0Z49HtScLAbD5t6hyeU92A95pRWaSMw1GZZi/RwgSgUIl0xrSlXIT/9QzvYSA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + + '@rolldown/pluginutils@1.0.1': + resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==} + + '@rollup/pluginutils@5.4.0': + resolution: {integrity: sha512-MfPp06CjRLfXQ3wY0R8vJDYBy/MvVcc9OulEfR0B8Iv9ko+GCNaRZ+EpJYFl27LhKsZK0o420sYCRHCjfCgeUg==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@shikijs/core@4.3.1': + resolution: {integrity: sha512-ANMDxuaPsNMdDC1m4vfvhlDmJweMwkE5XitTwrq2rWHx5jM+dlm4MmHt2PP6t0uejfR77SuhrhJ0zEijIF/uhA==} + engines: {node: '>=20'} + + '@shikijs/engine-javascript@4.3.1': + resolution: {integrity: sha512-JBItcnPuYq7jVJdZo/vMj94r+szT7XEjHFX+mvFDGSEIbVAXAGyHAHzhbWzpGOwYidCZrErJLLgn2PVeiokHnQ==} + engines: {node: '>=20'} + + '@shikijs/engine-oniguruma@4.3.1': + resolution: {integrity: sha512-OXyNMzg0pews+msMj4cHeqT4xiYKKvbnn6VbdAXxfoFl3SSx4fJTc8FadECuc5/H9p3BzhNAoAUXKwAu9rWYhg==} + engines: {node: '>=20'} + + '@shikijs/langs@4.3.1': + resolution: {integrity: sha512-m0l9nsDqgBHvbZbk7A0/kXz/impK3uB/c6rAn6Gpg/uPtdZRQ+alsN/17MU5thb68XTj/4DxkZAotrM0GGSpDQ==} + engines: {node: '>=20'} + + '@shikijs/primitive@4.3.1': + resolution: {integrity: sha512-CXQRQOYy1leqQ8ceTeJdmXv/bsUY++6QyLpXJ94LZAAYj5X2SKRdc5ipguv4NPyGVKItB2PPwUpRNe0Sjh5S1A==} + engines: {node: '>=20'} + + '@shikijs/themes@4.3.1': + resolution: {integrity: sha512-dgpoJ4WqNi2yTmizQHBJ5zcX6j2lE6icN/0yt4l1kkf16jrY/pwPLoTb1ETsWMz0OBLf9ZNvwmxft+cH+N9qSA==} + engines: {node: '>=20'} + + '@shikijs/types@4.3.1': + resolution: {integrity: sha512-CHFxE0jztBIZRHH6gxXE7DXUCFXjReEGxZ/j0rfSLGKZuwp2xBYycEP14875DSa9KLL/6700oxIq6oO6ef9K2g==} + engines: {node: '>=20'} + + '@shikijs/vscode-textmate@10.0.2': + resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} + + '@sindresorhus/merge-streams@4.0.0': + resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} + engines: {node: '>=18'} + + '@tybys/wasm-util@0.10.3': + resolution: {integrity: sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==} + + '@types/d3-array@3.2.2': + resolution: {integrity: sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==} + + '@types/d3-axis@3.0.6': + resolution: {integrity: sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==} + + '@types/d3-brush@3.0.6': + resolution: {integrity: sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==} + + '@types/d3-chord@3.0.6': + resolution: {integrity: sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==} + + '@types/d3-color@3.1.3': + resolution: {integrity: sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==} + + '@types/d3-contour@3.0.6': + resolution: {integrity: sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==} + + '@types/d3-delaunay@6.0.4': + resolution: {integrity: sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==} + + '@types/d3-dispatch@3.0.7': + resolution: {integrity: sha512-5o9OIAdKkhN1QItV2oqaE5KMIiXAvDWBDPrD85e58Qlz1c1kI/J0NcqbEG88CoTwJrYe7ntUCVfeUl2UJKbWgA==} + + '@types/d3-drag@3.0.7': + resolution: {integrity: sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==} + + '@types/d3-dsv@3.0.7': + resolution: {integrity: sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==} + + '@types/d3-ease@3.0.2': + resolution: {integrity: sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==} + + '@types/d3-fetch@3.0.7': + resolution: {integrity: sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==} + + '@types/d3-force@3.0.10': + resolution: {integrity: sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==} + + '@types/d3-format@3.0.4': + resolution: {integrity: sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==} + + '@types/d3-geo@3.1.0': + resolution: {integrity: sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==} + + '@types/d3-hierarchy@3.1.7': + resolution: {integrity: sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==} + + '@types/d3-interpolate@3.0.4': + resolution: {integrity: sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==} + + '@types/d3-path@3.1.1': + resolution: {integrity: sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==} + + '@types/d3-polygon@3.0.2': + resolution: {integrity: sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==} + + '@types/d3-quadtree@3.0.6': + resolution: {integrity: sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==} + + '@types/d3-random@3.0.4': + resolution: {integrity: sha512-UHYId5WTCx4L4YNel7NU00XUXXgvgpgZOvp10PuvsQENjMDXhh2RyFc0KBjO7B45ne4Ha1yVH7ii0vnzKkuzWA==} + + '@types/d3-scale-chromatic@3.1.0': + resolution: {integrity: sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ==} + + '@types/d3-scale@4.0.9': + resolution: {integrity: sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==} + + '@types/d3-selection@3.0.11': + resolution: {integrity: sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==} + + '@types/d3-shape@3.1.8': + resolution: {integrity: sha512-lae0iWfcDeR7qt7rA88BNiqdvPS5pFVPpo5OfjElwNaT2yyekbM0C9vK+yqBqEmHr6lDkRnYNoTBYlAgJa7a4w==} + + '@types/d3-time-format@4.0.3': + resolution: {integrity: sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==} + + '@types/d3-time@3.0.4': + resolution: {integrity: sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==} + + '@types/d3-timer@3.0.2': + resolution: {integrity: sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==} + + '@types/d3-transition@3.0.9': + resolution: {integrity: sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==} + + '@types/d3-zoom@3.0.8': + resolution: {integrity: sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==} + + '@types/d3@7.4.3': + resolution: {integrity: sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==} + + '@types/debug@4.1.13': + resolution: {integrity: sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==} + + '@types/estree-jsx@1.0.5': + resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} + + '@types/estree@1.0.9': + resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==} + + '@types/geojson@7946.0.16': + resolution: {integrity: sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==} + + '@types/hast@3.0.5': + resolution: {integrity: sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g==} + + '@types/js-yaml@4.0.9': + resolution: {integrity: sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==} + + '@types/katex@0.16.8': + resolution: {integrity: sha512-trgaNyfU+Xh2Tc+ABIb44a5AYUpicB3uwirOioeOkNPPbmgRNtcWyDeeFRzjPZENO9Vq8gvVqfhaaXWLlevVwg==} + + '@types/mdast@4.0.4': + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + + '@types/mdx@2.0.14': + resolution: {integrity: sha512-T48PeuJtvLosNTPVhfnIp3i/n3a4g4Bad7YCq5k64D4u7NwDrAotikQ+5+sjtUvBmxCMlbo3dVL+C2dP0rWHzg==} + + '@types/ms@2.1.0': + resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} + + '@types/nlcst@2.0.3': + resolution: {integrity: sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==} + + '@types/node@24.13.3': + resolution: {integrity: sha512-Dh8vAsV36ig5wa9OX4pXvMc9D3Veibfw2wix0CUwYODLD8nkj9UsLjASr49nPg+2eKzxhBV+v7L8pXvT4e639Q==} + + '@types/sax@1.2.7': + resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==} + + '@types/trusted-types@2.0.7': + resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} + + '@types/unist@2.0.11': + resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} + + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + + '@ungap/structured-clone@1.3.3': + resolution: {integrity: sha512-60YRaenCQcVjYEKOcG824+DRGGIQ3VKErcBoAEDJZz5bKIs2ZG+X/H9Nk+Q6EVkwJk5QNApxbrc5QtBSwtrXAg==} + + '@upsetjs/venn.js@2.0.0': + resolution: {integrity: sha512-WbBhLrooyePuQ1VZxrJjtLvTc4NVfpOyKx0sKqioq9bX1C1m7Jgykkn8gLrtwumBioXIqam8DLxp88Adbue6Hw==} + + '@volar/kit@2.4.28': + resolution: {integrity: sha512-cKX4vK9dtZvDRaAzeoUdaAJEew6IdxHNCRrdp5Kvcl6zZOqb6jTOfk3kXkIkG3T7oTFXguEMt5+9ptyqYR84Pg==} + peerDependencies: + typescript: '*' + + '@volar/language-core@2.4.28': + resolution: {integrity: sha512-w4qhIJ8ZSitgLAkVay6AbcnC7gP3glYM3fYwKV3srj8m494E3xtrCv6E+bWviiK/8hs6e6t1ij1s2Endql7vzQ==} + + '@volar/language-server@2.4.28': + resolution: {integrity: sha512-NqcLnE5gERKuS4PUFwlhMxf6vqYo7hXtbMFbViXcbVkbZ905AIVWhnSo0ZNBC2V127H1/2zP7RvVOVnyITFfBw==} + + '@volar/language-service@2.4.28': + resolution: {integrity: sha512-Rh/wYCZJrI5vCwMk9xyw/Z+MsWxlJY1rmMZPsxUoJKfzIRjS/NF1NmnuEcrMbEVGja00aVpCsInJfixQTMdvLw==} + + '@volar/source-map@2.4.28': + resolution: {integrity: sha512-yX2BDBqJkRXfKw8my8VarTyjv48QwxdJtvRgUpNE5erCsgEUdI2DsLbpa+rOQVAJYshY99szEcRDmyHbF10ggQ==} + + '@volar/typescript@2.4.28': + resolution: {integrity: sha512-Ja6yvWrbis2QtN4ClAKreeUZPVYMARDYZl9LMEv1iQ1QdepB6wn0jTRxA9MftYmYa4DQ4k/DaSZpFPUfxl8giw==} + + '@vscode/emmet-helper@2.11.0': + resolution: {integrity: sha512-QLxjQR3imPZPQltfbWRnHU6JecWTF1QSWhx3GAKQpslx7y3Dp6sIIXhKjiUJ/BR9FX8PVthjr9PD6pNwOJfAzw==} + + '@vscode/l10n@0.0.18': + resolution: {integrity: sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==} + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn@8.17.0: + resolution: {integrity: sha512-xRQbDb9BnwDafYNn6Vwl839DYVjqXYb1XVGtWAZ1kcDc6iwAL4hg3B1dZlRiuENFeO2H53gFG3in621AdERVAg==} + engines: {node: '>=0.4.0'} + hasBin: true + + ajv-draft-04@1.0.0: + resolution: {integrity: sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==} + peerDependencies: + ajv: ^8.5.0 + peerDependenciesMeta: + ajv: + optional: true + + ajv-i18n@4.2.0: + resolution: {integrity: sha512-v/ei2UkCEeuKNXh8RToiFsUclmU+G57LO1Oo22OagNMENIw+Yb8eMwvHu7Vn9fmkjJyv6XclhJ8TbuigSglPkg==} + peerDependencies: + ajv: ^8.0.0-beta.0 + + ajv@8.20.0: + resolution: {integrity: sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==} + + am-i-vibing@0.4.0: + resolution: {integrity: sha512-MxT4XZL7pzLHpuvhDKdMaQHMGGkJDLluKBLsbstn+8wv9sWcFT6h+0ve9qkml95amVTZtZV83gQe2hY+ojgHLg==} + hasBin: true + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.2.2: + resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} + engines: {node: '>=12'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + aria-query@5.3.2: + resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} + engines: {node: '>= 0.4'} + + array-iterate@2.0.1: + resolution: {integrity: sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==} + + array-timsort@1.0.3: + resolution: {integrity: sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==} + + astring@1.9.0: + resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==} + hasBin: true + + astro-expressive-code@0.44.1: + resolution: {integrity: sha512-DT1LnCqbHasBKlvzJ3m6LR4VI94wwx3W9EV/YbP1te4rqjOHsvsezHYuqb5MeLWLftXms/1FA9QBbwCo43DnJQ==} + peerDependencies: + astro: ^4.0.0-beta || ^5.0.0-beta || ^3.3.0 || ^6.0.0-beta || ^7.0.0 + + astro-mermaid@2.1.0: + resolution: {integrity: sha512-fFRUN0BTZh+DZhDiLyblXoO26XqJ1Rr+qK3JGgSu7OBspKHDm59jkztg/aHsrdo1vO/tIq/+xhP/vgT8Mp92XA==} + peerDependencies: + '@mermaid-js/layout-elk': ^0.2.0 + astro: '>=4' + mermaid: ^10.0.0 || ^11.0.0 + peerDependenciesMeta: + '@mermaid-js/layout-elk': + optional: true + + astro@7.1.3: + resolution: {integrity: sha512-4dhPyAAXthf3xLEYnG8SeL7yr/nTPPABfY7e9YF0yuO+vK9Xp+8Q5j4xzsmL3GueukQv4oNwGNTBepLOiDGeJA==} + engines: {node: '>=22.12.0', npm: '>=9.6.5', pnpm: '>=7.1.0'} + hasBin: true + peerDependencies: + '@astrojs/markdown-remark': 7.2.1 + peerDependenciesMeta: + '@astrojs/markdown-remark': + optional: true + + axe-core@4.12.1: + resolution: {integrity: sha512-s7iGf5GaVMxEG0ENN9x+xTr7GFZCb1ZP/1uATUpCEK2X78nDB3RwbtFCo9pGAf9ru+VwoQ464DkaLEeRM08wJA==} + engines: {node: '>=4'} + + axobject-query@4.1.0: + resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} + engines: {node: '>= 0.4'} + + bail@2.0.2: + resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} + + bcp-47-match@2.0.3: + resolution: {integrity: sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ==} + + bcp-47@2.1.1: + resolution: {integrity: sha512-KLw+H/gd2p4zly1X7Yh/qziuyae5/w/QFnvTng9eZL5fvszL7Whl3MBoWF8yxL7ksUjBfOD+OxkytiqbBpG+Fw==} + + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + + chalk-template@1.1.2: + resolution: {integrity: sha512-2bxTP2yUH7AJj/VAXfcA+4IcWGdQ87HwBANLt5XxGTeomo8yG0y95N1um9i5StvhT/Bl0/2cARA5v1PpPXUxUA==} + engines: {node: '>=14.16'} + + chalk@5.6.2: + resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + character-entities-html4@2.1.0: + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + + character-entities-legacy@3.0.0: + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + + character-entities@2.0.2: + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + + character-reference-invalid@2.0.1: + resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} + + chokidar@4.0.3: + resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} + engines: {node: '>= 14.16.0'} + + chokidar@5.0.0: + resolution: {integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==} + engines: {node: '>= 20.19.0'} + + ci-info@4.4.0: + resolution: {integrity: sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==} + engines: {node: '>=8'} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + + collapse-white-space@2.1.0: + resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + comma-separated-tokens@2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + + commander@11.1.0: + resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} + engines: {node: '>=16'} + + commander@14.0.3: + resolution: {integrity: sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==} + engines: {node: '>=20'} + + commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + + commander@8.3.0: + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} + engines: {node: '>= 12'} + + comment-json@5.0.0: + resolution: {integrity: sha512-uiqLcOiVDJtBP8WGkZHEP+FZIhTzP1dxvn59EfoYUi9gqupjrBWVQkO2atDrbnKPwLeotFYDsuNb26uBMqB+hw==} + engines: {node: '>= 6'} + + common-ancestor-path@2.0.0: + resolution: {integrity: sha512-dnN3ibLeoRf2HNC+OlCiNc5d2zxbLJXOtiZUudNFSXZrNSydxcCsSpRzXwfu7BBWCIfHPw+xTayeBvJCP/D8Ng==} + engines: {node: '>= 18'} + + cookie-es@1.2.3: + resolution: {integrity: sha512-lXVyvUvrNXblMqzIRrxHb57UUVmqsSWlxqt3XIjCkUP0wDAf6uicO6KMbEgYrMNtEvWgWHwe42CKxPu9MYAnWw==} + + cookie@2.0.1: + resolution: {integrity: sha512-yuToqVvRrj6pfDXREyQAAv8SkAEk/8GS3jQRTiUMm66TVtBYmqQeoEjL2Lmq8Rpo6271vH76InTChTitEAm65w==} + engines: {node: '>=22'} + + cose-base@1.0.3: + resolution: {integrity: sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==} + + cose-base@2.2.0: + resolution: {integrity: sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==} + + crossws@0.3.5: + resolution: {integrity: sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==} + + cspell-config-lib@10.0.1: + resolution: {integrity: sha512-hMpo/0j6k7pbiqrLDOLJKD2IGP9XwhjKf2miiM6p84Xeo4nyuFZaxxDCQ68R851HSYFrrdltgpoipMbj1h2Tnw==} + engines: {node: '>=22.18.0'} + + cspell-dictionary@10.0.1: + resolution: {integrity: sha512-3cZ659vgsZWkzGQJR/sNqGDVt/OnvTSieLKI76V++4t1bHJfochb9ZrrwsuMsb1VPGiyqClUP1/O6WrefF/FVg==} + engines: {node: '>=22.18.0'} + + cspell-gitignore@10.0.1: + resolution: {integrity: sha512-wN23U61Mx6qPJN3CesOmBU9vnbJ0jQm/ylK0iaVui3CcnO7Zzl5qLu5mPHUzGQGm8yso6qjyxqo16Ho7LpZGOQ==} + engines: {node: '>=22.18.0'} + hasBin: true + + cspell-glob@10.0.1: + resolution: {integrity: sha512-7bII9J3aSSpZDwhx7w+zfQXbMxHZQ3be0ilUp5bHrsjz6o07v/NqOHMGcwKdPn1sw2dxDz9sv057xE5pqXnSdw==} + engines: {node: '>=22.18.0'} + + cspell-grammar@10.0.1: + resolution: {integrity: sha512-xC9AFYmaI9wsO//a7S5tdDGKGJVD5UEEsTg+Up2fi7lPfXIryisYmV6tePNL1SEg0idYss4ja8LUZ3Mib09BjQ==} + engines: {node: '>=22.18.0'} + hasBin: true + + cspell-io@10.0.1: + resolution: {integrity: sha512-8C2ka07faxflnaqEBO3pektS21XViE/SEHT7F5ZD1ou7FyMR5u3xawTBJSczClfsxLt/WYeztBYrpmGAjmjksw==} + engines: {node: '>=22.18.0'} + + cspell-lib@10.0.1: + resolution: {integrity: sha512-RpsIPiLzc4/YMW8BMRKpyJ81x439qjYWcqgdKeXnMkbKM88J9PexzutfFf/4v97v96KzfNitEzMpbI0uj8OeUg==} + engines: {node: '>=22.18.0'} + + cspell-trie-lib@10.0.1: + resolution: {integrity: sha512-BFvhalSkRQFjKrZ//FKK7fRGrZFpifnxB5AwCkzsIsBZqicsfafcQ1xP21qpb0QqyV/IomjNgviG+tRJs+0rMw==} + engines: {node: '>=22.18.0'} + peerDependencies: + '@cspell/cspell-types': 10.0.1 + + cspell@10.0.1: + resolution: {integrity: sha512-Gg6w/flT3fKfl3la62hfTnhtNnDQ+9mU7kUhVqw/axl/Ms4oENw0oJMkWFIoj4f6nL/SDPz7KcPXd2XbkKFNmQ==} + engines: {node: '>=22.18.0'} + hasBin: true + + css-select@5.2.2: + resolution: {integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==} + + css-selector-parser@3.3.0: + resolution: {integrity: sha512-Y2asgMGFqJKF4fq4xHDSlFYIkeVfRsm69lQC1q9kbEsH5XtnINTMrweLkjYMeaUgiXBy/uvKeO/a1JHTNnmB2g==} + + css-tree@2.2.1: + resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + + css-tree@3.2.1: + resolution: {integrity: sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + + css-what@6.2.2: + resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==} + engines: {node: '>= 6'} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + csso@5.0.5: + resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + + cytoscape-cose-bilkent@4.1.0: + resolution: {integrity: sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==} + peerDependencies: + cytoscape: ^3.2.0 + + cytoscape-fcose@2.2.0: + resolution: {integrity: sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==} + peerDependencies: + cytoscape: ^3.2.0 + + cytoscape@3.34.0: + resolution: {integrity: sha512-62rNSrioXw93uliKFBwjukeQyeWwH2PqDrTac31r2P6464u3AUvTk0xS4LVvT251g7IgkFunrI48ZEZGjywSOg==} + engines: {node: '>=0.10'} + + d3-array@2.12.1: + resolution: {integrity: sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==} + + d3-array@3.2.4: + resolution: {integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==} + engines: {node: '>=12'} + + d3-axis@3.0.0: + resolution: {integrity: sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==} + engines: {node: '>=12'} + + d3-brush@3.0.0: + resolution: {integrity: sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==} + engines: {node: '>=12'} + + d3-chord@3.0.1: + resolution: {integrity: sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==} + engines: {node: '>=12'} + + d3-color@3.1.0: + resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} + engines: {node: '>=12'} + + d3-contour@4.0.2: + resolution: {integrity: sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==} + engines: {node: '>=12'} + + d3-delaunay@6.0.4: + resolution: {integrity: sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==} + engines: {node: '>=12'} + + d3-dispatch@3.0.1: + resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==} + engines: {node: '>=12'} + + d3-drag@3.0.0: + resolution: {integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==} + engines: {node: '>=12'} + + d3-dsv@3.0.1: + resolution: {integrity: sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==} + engines: {node: '>=12'} + hasBin: true + + d3-ease@3.0.1: + resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==} + engines: {node: '>=12'} + + d3-fetch@3.0.1: + resolution: {integrity: sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==} + engines: {node: '>=12'} + + d3-force@3.0.0: + resolution: {integrity: sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==} + engines: {node: '>=12'} + + d3-format@3.1.2: + resolution: {integrity: sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg==} + engines: {node: '>=12'} + + d3-geo@3.1.1: + resolution: {integrity: sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==} + engines: {node: '>=12'} + + d3-hierarchy@3.1.2: + resolution: {integrity: sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==} + engines: {node: '>=12'} + + d3-interpolate@3.0.1: + resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} + engines: {node: '>=12'} + + d3-path@1.0.9: + resolution: {integrity: sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==} + + d3-path@3.1.0: + resolution: {integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==} + engines: {node: '>=12'} + + d3-polygon@3.0.1: + resolution: {integrity: sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==} + engines: {node: '>=12'} + + d3-quadtree@3.0.1: + resolution: {integrity: sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==} + engines: {node: '>=12'} + + d3-random@3.0.1: + resolution: {integrity: sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==} + engines: {node: '>=12'} + + d3-sankey@0.12.3: + resolution: {integrity: sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==} + + d3-scale-chromatic@3.1.0: + resolution: {integrity: sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==} + engines: {node: '>=12'} + + d3-scale@4.0.2: + resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==} + engines: {node: '>=12'} + + d3-selection@3.0.0: + resolution: {integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==} + engines: {node: '>=12'} + + d3-shape@1.3.7: + resolution: {integrity: sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==} + + d3-shape@3.2.0: + resolution: {integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==} + engines: {node: '>=12'} + + d3-time-format@4.1.0: + resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==} + engines: {node: '>=12'} + + d3-time@3.1.0: + resolution: {integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==} + engines: {node: '>=12'} + + d3-timer@3.0.1: + resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==} + engines: {node: '>=12'} + + d3-transition@3.0.1: + resolution: {integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==} + engines: {node: '>=12'} + peerDependencies: + d3-selection: 2 - 3 + + d3-zoom@3.0.0: + resolution: {integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==} + engines: {node: '>=12'} + + d3@7.9.0: + resolution: {integrity: sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==} + engines: {node: '>=12'} + + dagre-d3-es@7.0.14: + resolution: {integrity: sha512-P4rFMVq9ESWqmOgK+dlXvOtLwYg0i7u0HBGJER0LZDJT2VHIPAMZ/riPxqJceWMStH5+E61QxFra9kIS3AqdMg==} + + dayjs@1.11.21: + resolution: {integrity: sha512-98IT+HOahAisibz/yjKbzuOBwYcjJ7BCLPzARyHiyEBmRz4fatF+KPJszEHXsGYjUG234aH/cOjW1wwTbKUZlA==} + + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decode-named-character-reference@1.3.0: + resolution: {integrity: sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==} + + defu@6.1.7: + resolution: {integrity: sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==} + + delaunator@5.1.0: + resolution: {integrity: sha512-AGrQ4QSgssa1NGmWmLPqN5NY2KajF5MqxetNEO+o0n3ZwZZeTmt7bBnvzHWrmkZFxGgr4HdyFgelzgi06otLuQ==} + + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + + destr@2.0.5: + resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==} + + detect-libc@2.1.2: + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} + engines: {node: '>=8'} + + devalue@5.8.2: + resolution: {integrity: sha512-DObPPAfdtFbXjxLqK8s2Xk9ZuWz5+ZoFEhC7J76es4GU/rEiXwHTmbImoCdyoCOcBH1UF3+Cz6Z2sYD4hyl5TA==} + + devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + + diff@8.0.4: + resolution: {integrity: sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==} + engines: {node: '>=0.3.1'} + + direction@2.0.1: + resolution: {integrity: sha512-9S6m9Sukh1cZNknO1CWAr2QAWsbKLafQiyM5gZ7VgXHeuaoUwffKN4q6NC4A/Mf9iiPlOXQEKW/Mv/mh9/3YFA==} + hasBin: true + + dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + + domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + + dompurify@3.4.12: + resolution: {integrity: sha512-zQvGet8Z2sWbQhCmfFz/T5QWH2oBmjnqK3qvOjaqaNLrLEF912WamU+ohnTp0TCep/MFVHpdJuCZEdFOdTnEFg==} + + domutils@3.2.2: + resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} + + dset@3.1.4: + resolution: {integrity: sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==} + engines: {node: '>=4'} + + emmet@2.4.11: + resolution: {integrity: sha512-23QPJB3moh/U9sT4rQzGgeyyGIrcM+GH5uVYg2C6wZIxAIJq7Ng3QLT79tl8FUwDXhyq9SusfknOrofAKqvgyQ==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + entities@6.0.1: + resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} + engines: {node: '>=0.12'} + + env-paths@4.0.0: + resolution: {integrity: sha512-pxP8eL2SwwaTRi/KHYwLYXinDs7gL3jxFcBYmEdYfZmZXbaVDvdppd0XBU8qVz03rDfKZMXg1omHCbsJjZrMsw==} + engines: {node: '>=20'} + + es-module-lexer@2.3.1: + resolution: {integrity: sha512-shc1dbU90Yl/xq1QrC7QRtfcwURZuVRfPhZbDoldJ1cn1gzDvBaBWlv0eFolj5+0znnPJz5TXLxsN77X/12KTA==} + + es-toolkit@1.49.0: + resolution: {integrity: sha512-G5iZ6Pc/FNRY/soKZHC+TxGDD83rHUDXxzaWhGCX44vAv/tMs56WMusnm/KMNK+luUPsgA9U28cGr4RDlSzL2g==} + + esast-util-from-estree@2.0.0: + resolution: {integrity: sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==} + + esast-util-from-js@2.0.1: + resolution: {integrity: sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==} + + esbuild@0.28.1: + resolution: {integrity: sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==} + engines: {node: '>=18'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + estree-util-attach-comments@3.0.0: + resolution: {integrity: sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==} + + estree-util-build-jsx@3.0.1: + resolution: {integrity: sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==} + + estree-util-is-identifier-name@3.0.0: + resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} + + estree-util-scope@1.0.0: + resolution: {integrity: sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==} + + estree-util-to-js@2.0.0: + resolution: {integrity: sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==} + + estree-util-visit@2.0.0: + resolution: {integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==} + + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + + eventemitter3@5.0.4: + resolution: {integrity: sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==} + + expressive-code@0.44.1: + resolution: {integrity: sha512-GakidxhapWDzpKLqEaFQ8wGk6gAqEtPQibu8+yPBfnDLgev5Vdsh1pasTxnrXL/mzIknyqeTwhMHTghdaiUrTg==} + + extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-equals@6.0.2: + resolution: {integrity: sha512-sAjhj9ZhOxYCGiNMnZLaucOqf5ZeFnHNoKoAZiD9thhJ0N8RP85qJK759/97C/3L7NzzmGVB5uiX9AUpySZmUQ==} + engines: {node: '>=6.0.0'} + + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-string-truncated-width@3.0.3: + resolution: {integrity: sha512-0jjjIEL6+0jag3l2XWWizO64/aZVtpiGE3t0Zgqxv0DPuxiMjvB3M24fCyhZUO4KomJQPj3LTSUnDP3GpdwC0g==} + + fast-string-width@3.0.2: + resolution: {integrity: sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg==} + + fast-uri@3.1.4: + resolution: {integrity: sha512-8JnbkQ4juDyvYs4mgFGQqg4yCYtFDtUtmp2QIQq11ZZe5CFQ5wcqm1rqDgAh/QdMySuBnPzMUiJUNZG5N/AiQw==} + + fast-wrap-ansi@0.2.2: + resolution: {integrity: sha512-7F2Fl+TjRSenLqlU3UjSH0iyqopqoZIu7eZVpEirP2g1GtWa2G/ecEmBdgz31+Mxr+ELclgg6sokpSFIQiZ02Q==} + + fastq@1.20.1: + resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} + + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + flatted@3.4.2: + resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==} + + flattie@1.1.1: + resolution: {integrity: sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==} + engines: {node: '>=8'} + + fontace@0.4.1: + resolution: {integrity: sha512-lDMvbAzSnHmbYMTEld5qdtvNH2/pWpICOqpean9IgC7vUbUJc3k+k5Dokp85CegamqQpFbXf0rAVkbzpyTA8aw==} + + fontkitten@1.0.3: + resolution: {integrity: sha512-Wp1zXWPVUPBmfoa3Cqc9ctaKuzKAV6uLstRqlR56kSjplf5uAce+qeyYym7F+PHbGTk+tCEdkCW6RD7DX/gBZw==} + engines: {node: '>=20'} + + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + gensequence@8.0.8: + resolution: {integrity: sha512-omMVniXEXpdx/vKxGnPRoO2394Otlze28TyxECbFVyoSpZ9H3EO7lemjcB12OpQJzRW4e5tt/dL1rOxry6aMHg==} + engines: {node: '>=20'} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-east-asian-width@1.6.0: + resolution: {integrity: sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==} + engines: {node: '>=18'} + + get-tsconfig@5.0.0-beta.4: + resolution: {integrity: sha512-7nF7C9fIPFEMHgEMEfgIlO9wDdZ8CyHw27rWciFZfHvHDReIiPhsYuzPRXsfvBCqFy1l8RRyyWV7QLM+ZhUJsQ==} + engines: {node: '>=20.20.0'} + + github-slugger@2.0.0: + resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + global-directory@5.0.0: + resolution: {integrity: sha512-1pgFdhK3J2LeM+dVf2Pd424yHx2ou338lC0ErNP2hPx4j8eW1Sp0XqSjNxtk6Tc4Kr5wlWtSvz8cn2yb7/SG/w==} + engines: {node: '>=20'} + + globby@16.2.1: + resolution: {integrity: sha512-JmsqJalahxxgW8V2ecSQ2G7UjPlI9cpKdrkG9KoNiXhd/YslXOTEB0cViENWUznuovIuNT+FkMbraDGjr4FCUg==} + engines: {node: '>=20'} + + h3@1.15.11: + resolution: {integrity: sha512-L3THSe2MPeBwgIZVSH5zLdBBU90TOxarvhK9d04IDY2AmVS8j2Jz2LIWtwsGOU3lu2I5jCN7FNvVfY2+XyF+mg==} + + hachure-fill@0.5.2: + resolution: {integrity: sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==} + + hast-util-embedded@3.0.0: + resolution: {integrity: sha512-naH8sld4Pe2ep03qqULEtvYr7EjrLK2QHY8KJR6RJkTUjPGObe1vnx585uzem2hGra+s1q08DZZpfgDVYRbaXA==} + + hast-util-format@1.1.0: + resolution: {integrity: sha512-yY1UDz6bC9rDvCWHpx12aIBGRG7krurX0p0Fm6pT547LwDIZZiNr8a+IHDogorAdreULSEzP82Nlv5SZkHZcjA==} + + hast-util-from-html@2.0.3: + resolution: {integrity: sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==} + + hast-util-from-parse5@8.0.3: + resolution: {integrity: sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==} + + hast-util-has-property@3.0.0: + resolution: {integrity: sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==} + + hast-util-is-body-ok-link@3.0.1: + resolution: {integrity: sha512-0qpnzOBLztXHbHQenVB8uNuxTnm/QBFUOmdOSsEn7GnBtyY07+ENTWVFBAnXd/zEgd9/SUG3lRY7hSIBWRgGpQ==} + + hast-util-is-element@3.0.0: + resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==} + + hast-util-minify-whitespace@1.0.1: + resolution: {integrity: sha512-L96fPOVpnclQE0xzdWb/D12VT5FabA7SnZOUMtL1DbXmYiHJMXZvFkIZfiMmTCNJHUeO2K9UYNXoVyfz+QHuOw==} + + hast-util-parse-selector@4.0.0: + resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} + + hast-util-phrasing@3.0.1: + resolution: {integrity: sha512-6h60VfI3uBQUxHqTyMymMZnEbNl1XmEGtOxxKYL7stY2o601COo62AWAYBQR9lZbYXYSBoxag8UpPRXK+9fqSQ==} + + hast-util-raw@9.1.0: + resolution: {integrity: sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==} + + hast-util-select@6.0.4: + resolution: {integrity: sha512-RqGS1ZgI0MwxLaKLDxjprynNzINEkRHY2i8ln4DDjgv9ZhcYVIHN9rlpiYsqtFwrgpYU361SyWDQcGNIBVu3lw==} + + hast-util-to-estree@3.1.3: + resolution: {integrity: sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==} + + hast-util-to-html@9.0.5: + resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==} + + hast-util-to-jsx-runtime@2.3.6: + resolution: {integrity: sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==} + + hast-util-to-parse5@8.0.1: + resolution: {integrity: sha512-MlWT6Pjt4CG9lFCjiz4BH7l9wmrMkfkJYCxFwKQic8+RTZgWPuWxwAfjJElsXkex7DJjfSJsQIt931ilUgmwdA==} + + hast-util-to-string@3.0.1: + resolution: {integrity: sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==} + + hast-util-to-text@4.0.2: + resolution: {integrity: sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==} + + hast-util-whitespace@3.0.0: + resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} + + hastscript@9.0.1: + resolution: {integrity: sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==} + + html-escaper@3.0.3: + resolution: {integrity: sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==} + + html-void-elements@3.0.0: + resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} + + html-whitespace-sensitive-tag-names@3.0.1: + resolution: {integrity: sha512-q+310vW8zmymYHALr1da4HyXUQ0zgiIwIicEfotYPWGN0OJVEN/58IJ3A4GBYcEq3LGAZqKb+ugvP0GNB9CEAA==} + + http-cache-semantics@4.2.0: + resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==} + + i18next@26.3.6: + resolution: {integrity: sha512-Bu5Z2nAXgfVyM8xvW3jk9EKRIuX37PudsrBViThNFx7CR7aaYTpP01cxNB/E4c4UUzTDiAZRstEhsRfPOL/8xA==} + peerDependencies: + typescript: ^5 || ^6 || ^7 + peerDependenciesMeta: + typescript: + optional: true + + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + + ignore@7.0.6: + resolution: {integrity: sha512-BAg6QkE8W+TuQLrrw0Ugr7HegXduRuuj8/ti2kSOc+jz1dmx8/WNcjr6XGnq5YpDWxFwwaavqD0+jIUOKelTsw==} + engines: {node: '>= 4'} + + import-fresh@4.0.0: + resolution: {integrity: sha512-Fpi660c7VPDM3fPKYovStd9IP1CPOikf6v/dGxJJMmHPcwYQIMJ4W7kO1avBYEpMqkCh+Dx3Ln6H7VYqgztLjw==} + engines: {node: '>=22.15'} + + import-meta-resolve@4.2.0: + resolution: {integrity: sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==} + + ini@6.0.0: + resolution: {integrity: sha512-IBTdIkzZNOpqm7q3dRqJvMaldXjDHWkEDfrwGEQTs5eaQMWV+djAhR+wahyNNMAa+qpbDUhBMVt4ZKNwpPm7xQ==} + engines: {node: ^20.17.0 || >=22.9.0} + + inline-style-parser@0.2.7: + resolution: {integrity: sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==} + + internmap@1.0.1: + resolution: {integrity: sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==} + + internmap@2.0.3: + resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} + engines: {node: '>=12'} + + iron-webcrypto@1.2.1: + resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==} + + is-alphabetical@2.0.1: + resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} + + is-alphanumerical@2.0.1: + resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} + + is-decimal@2.0.1: + resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} + + is-docker@4.0.0: + resolution: {integrity: sha512-LHE+wROyG/Y/0ZnbktRCoTix2c1RhgWaZraMZ8o1Q7zCh0VSrICJQO5oqIIISrcSBtrXv0o233w1IYwsWCjTzA==} + engines: {node: '>=20'} + hasBin: true + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-hexadecimal@2.0.1: + resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-path-inside@4.0.0: + resolution: {integrity: sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==} + engines: {node: '>=12'} + + is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + + is-safe-filename@0.1.1: + resolution: {integrity: sha512-4SrR7AdnY11LHfDKTZY1u6Ga3RuxZdl3YKWWShO5iyuG5h8QS4GD2tOb04peBJ5I7pXbR+CGBNEhTcwK+FzN3g==} + engines: {node: '>=20'} + + js-yaml@4.3.0: + resolution: {integrity: sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q==} + hasBin: true + + js-yaml@5.2.1: + resolution: {integrity: sha512-zfLtNfQqxVqq3uaTqSkh4x4hZw3KHobGUA0fJUj4wawW8bsQLTVqpHdXSIzidh7o+4lEW36tANuAGdaFx6Zgnw==} + hasBin: true + + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + jsonc-parser@2.3.1: + resolution: {integrity: sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==} + + jsonc-parser@3.3.1: + resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} + + jsonpointer@5.0.1: + resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} + engines: {node: '>=0.10.0'} + + katex@0.16.47: + resolution: {integrity: sha512-Eeo8Ys1doU1z+x8AZsPpQu+p/QcZBI5PeOo7QGQdy2x2m0MU/hYagBbGOmXwr5KVbEfVuWv9LpnQWeehogurjg==} + hasBin: true + + khroma@2.1.0: + resolution: {integrity: sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==} + + kleur@4.1.5: + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} + engines: {node: '>=6'} + + klona@2.0.6: + resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==} + engines: {node: '>= 8'} + + layout-base@1.0.2: + resolution: {integrity: sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==} + + layout-base@2.0.1: + resolution: {integrity: sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==} + + lightningcss-android-arm64@1.33.0: + resolution: {integrity: sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [android] + + lightningcss-darwin-arm64@1.33.0: + resolution: {integrity: sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.33.0: + resolution: {integrity: sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.33.0: + resolution: {integrity: sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.33.0: + resolution: {integrity: sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.33.0: + resolution: {integrity: sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + lightningcss-linux-arm64-musl@1.33.0: + resolution: {integrity: sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [musl] + + lightningcss-linux-x64-gnu@1.33.0: + resolution: {integrity: sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [glibc] + + lightningcss-linux-x64-musl@1.33.0: + resolution: {integrity: sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [musl] + + lightningcss-win32-arm64-msvc@1.33.0: + resolution: {integrity: sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.33.0: + resolution: {integrity: sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.33.0: + resolution: {integrity: sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==} + engines: {node: '>= 12.0.0'} + + linkify-it@5.0.2: + resolution: {integrity: sha512-ONTm2jCMAVZjgQa/Fy1kScXsuOoF5NPTsoFBdE1KVIZ2vAh/r9+Bqo+0jINCBYnavTPQZz38QzFTme79ENoN3Q==} + + lodash-es@4.18.1: + resolution: {integrity: sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A==} + + longest-streak@3.1.0: + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} + + lru-cache@11.5.2: + resolution: {integrity: sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==} + engines: {node: 20 || >=22} + + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + + magicast@0.5.3: + resolution: {integrity: sha512-pVKE4UdSQ7DvHzivsCIFx2BJn1mHG6KsyrFcaxFx6tONdneEuThrDx0Cj3AMg58KyN4pzYT+LHOotxDQDjNvkw==} + + markdown-extensions@2.0.0: + resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} + engines: {node: '>=16'} + + markdown-it@14.3.0: + resolution: {integrity: sha512-RCEsPjR+sr0x+AuYp601tKTkgFG4YEPLCzHST3cQ/fhlJkqAkz1L2/Qbp1j9qw5SBwQHFBoW8+hoN5xssOF0Tw==} + hasBin: true + + markdown-table@3.0.4: + resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} + + markdownlint-cli2-formatter-default@0.0.6: + resolution: {integrity: sha512-VVDGKsq9sgzu378swJ0fcHfSicUnMxnL8gnLm/Q4J/xsNJ4e5bA6lvAz7PCzIl0/No0lHyaWdqVD2jotxOSFMQ==} + peerDependencies: + markdownlint-cli2: '>=0.0.4' + + markdownlint-cli2@0.23.1: + resolution: {integrity: sha512-20JPI5W+HpV1OA+pUM712wgvL4GzYNUvbmhLU8KlEYJ1kCDx4soZ4/Xqd+WkLrPTOKMAn8SfO3zYFrK8GLlwQg==} + engines: {node: '>=22'} + hasBin: true + + markdownlint@0.41.1: + resolution: {integrity: sha512-qHKeU2E1bdyNAT077go2FVTNXvYcktN5IHtF6XyeD1l0PClxzSp2tUApAV14ORI8DGX4H9bNKZEzelZp4qn8IA==} + engines: {node: '>=22'} + + marked@16.4.2: + resolution: {integrity: sha512-TI3V8YYWvkVf3KJe1dRkpnjs68JUPyEa5vjKrp1XEEJUAOaQc+Qj+L1qWbPd0SJuAdQkFU0h73sXXqwDYxsiDA==} + engines: {node: '>= 20'} + hasBin: true + + mdast-util-definitions@6.0.0: + resolution: {integrity: sha512-scTllyX6pnYNZH/AIp/0ePz6s4cZtARxImwoPJ7kS42n+MnVsI4XbnG6d4ibehRIldYMWM2LD7ImQblVhUejVQ==} + + mdast-util-directive@3.1.0: + resolution: {integrity: sha512-I3fNFt+DHmpWCYAT7quoM6lHf9wuqtI+oCOfvILnoicNIqjh5E3dEJWiXuYME2gNe8vl1iMQwyUHa7bgFmak6Q==} + + mdast-util-find-and-replace@3.0.2: + resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==} + + mdast-util-from-markdown@2.0.3: + resolution: {integrity: sha512-W4mAWTvSlKvf8L6J+VN9yLSqQ9AOAAvHuoDAmPkz4dHf553m5gVj2ejadHJhoJmcmxEnOv6Pa8XJhpxE93kb8Q==} + + mdast-util-gfm-autolink-literal@2.0.1: + resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==} + + mdast-util-gfm-footnote@2.1.0: + resolution: {integrity: sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==} + + mdast-util-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} + + mdast-util-gfm-table@2.0.0: + resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} + + mdast-util-gfm-task-list-item@2.0.0: + resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} + + mdast-util-gfm@3.1.0: + resolution: {integrity: sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==} + + mdast-util-mdx-expression@2.0.1: + resolution: {integrity: sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==} + + mdast-util-mdx-jsx@3.2.0: + resolution: {integrity: sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==} + + mdast-util-mdx@3.0.0: + resolution: {integrity: sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==} + + mdast-util-mdxjs-esm@2.0.1: + resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} + + mdast-util-phrasing@4.1.0: + resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} + + mdast-util-to-hast@13.2.1: + resolution: {integrity: sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==} + + mdast-util-to-markdown@2.1.2: + resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==} + + mdast-util-to-string@4.0.0: + resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + + mdn-data@2.0.28: + resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} + + mdn-data@2.27.1: + resolution: {integrity: sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==} + + mdurl@2.0.0: + resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + mermaid@11.16.0: + resolution: {integrity: sha512-Zvm3kbstgdpvIJPPItlL7fppIZ3kibvc1oZIGxdvk9t6UFz6flv+Jw7FtRGKwfcI8OckmH04LqG6LlS6X4B1pA==} + + micromark-core-commonmark@2.0.3: + resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} + + micromark-extension-directive@4.0.0: + resolution: {integrity: sha512-/C2nqVmXXmiseSSuCdItCMho7ybwwop6RrrRPk0KbOHW21JKoCldC+8rFOaundDoRBUWBnJJcxeA/Kvi34WQXg==} + + micromark-extension-gfm-autolink-literal@2.1.0: + resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==} + + micromark-extension-gfm-footnote@2.1.0: + resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==} + + micromark-extension-gfm-strikethrough@2.1.0: + resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==} + + micromark-extension-gfm-table@2.1.1: + resolution: {integrity: sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==} + + micromark-extension-gfm-tagfilter@2.0.0: + resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} + + micromark-extension-gfm-task-list-item@2.1.0: + resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==} + + micromark-extension-gfm@3.0.0: + resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} + + micromark-extension-math@3.1.0: + resolution: {integrity: sha512-lvEqd+fHjATVs+2v/8kg9i5Q0AP2k85H0WUOwpIVvUML8BapsMvh1XAogmQjOCsLpoKRCVQqEkQBB3NhVBcsOg==} + + micromark-extension-mdx-expression@3.0.1: + resolution: {integrity: sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q==} + + micromark-extension-mdx-jsx@3.0.2: + resolution: {integrity: sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ==} + + micromark-extension-mdx-md@2.0.0: + resolution: {integrity: sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==} + + micromark-extension-mdxjs-esm@3.0.0: + resolution: {integrity: sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==} + + micromark-extension-mdxjs@3.0.0: + resolution: {integrity: sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==} + + micromark-factory-destination@2.0.1: + resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==} + + micromark-factory-label@2.0.1: + resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==} + + micromark-factory-mdx-expression@2.0.3: + resolution: {integrity: sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==} + + micromark-factory-space@2.0.1: + resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==} + + micromark-factory-title@2.0.1: + resolution: {integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==} + + micromark-factory-whitespace@2.0.1: + resolution: {integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==} + + micromark-util-character@2.1.1: + resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} + + micromark-util-chunked@2.0.1: + resolution: {integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==} + + micromark-util-classify-character@2.0.1: + resolution: {integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==} + + micromark-util-combine-extensions@2.0.1: + resolution: {integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==} + + micromark-util-decode-numeric-character-reference@2.0.2: + resolution: {integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==} + + micromark-util-decode-string@2.0.1: + resolution: {integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==} + + micromark-util-encode@2.0.1: + resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} + + micromark-util-events-to-acorn@2.0.3: + resolution: {integrity: sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==} + + micromark-util-html-tag-name@2.0.1: + resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==} + + micromark-util-normalize-identifier@2.0.1: + resolution: {integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==} + + micromark-util-resolve-all@2.0.1: + resolution: {integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==} + + micromark-util-sanitize-uri@2.0.1: + resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} + + micromark-util-subtokenize@2.1.0: + resolution: {integrity: sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==} + + micromark-util-symbol@2.0.1: + resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} + + micromark-util-types@2.0.2: + resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==} + + micromark@4.0.2: + resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mrmime@2.0.1: + resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} + engines: {node: '>=10'} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + muggle-string@0.4.1: + resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} + + nanoid@3.3.16: + resolution: {integrity: sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + neotraverse@1.0.1: + resolution: {integrity: sha512-WmmLty1YWwJl9yZi77v2dVIV6X2kuYV8YYBI/G3LWGKdGHmHUvL1z7FW0iDvEvGAwNEoc5x1tOOOyDnf5jJw/w==} + engines: {node: '>= 10'} + + nlcst-to-string@4.0.0: + resolution: {integrity: sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA==} + + node-fetch-native@1.6.7: + resolution: {integrity: sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==} + + node-mock-http@1.0.4: + resolution: {integrity: sha512-8DY+kFsDkNXy1sJglUfuODx1/opAGJGyrTuFqEoN90oRc2Vk0ZbD4K2qmKXBBEhZQzdKHIVfEJpDU8Ak2NJEvQ==} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + + obug@2.1.4: + resolution: {integrity: sha512-4a+OsYv9UktOJKE+l1A4OufDgdRF9PifWj+tJnHURo/P+WOxpG4GzUFL9qCalmWauao6ogiG+QvnCovwPoyAWA==} + engines: {node: '>=12.20.0'} + + ofetch@1.5.1: + resolution: {integrity: sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA==} + + ohash@2.0.11: + resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==} + + oniguruma-parser@0.12.2: + resolution: {integrity: sha512-6HVa5oIrgMC6aA6WF6XyyqbhRPJrKR02L20+2+zpDtO5QAzGHAUGw5TKQvwi5vctNnRHkJYmjAhRVQF2EKdTQw==} + + oniguruma-to-es@4.3.6: + resolution: {integrity: sha512-csuQ9x3Yr0cEIs/Zgx/OEt9iBw9vqIunAPQkx19R/fiMq2oGVTgcMqO/V3Ybqefr1TBvosI6jU539ksaBULJyA==} + + p-limit@7.3.1: + resolution: {integrity: sha512-0trZaiG7Y7kN/Egy9a8j47t9osC0Tch4PaIWd9yGF6bvmlk7muExRvGNYb8sXBwEKMoNKsbNN9P8EefuQekE4Q==} + engines: {node: '>=20'} + + p-queue@9.3.2: + resolution: {integrity: sha512-pCsnA4piiqkrwAJ555Xh/lc717SijJrTBr96P1q6BRnUdm2XPB4v91oiXVAUr5HbIbXW4D8kIslfJUE28Rud6A==} + engines: {node: '>=20'} + + p-timeout@7.0.1: + resolution: {integrity: sha512-AxTM2wDGORHGEkPCt8yqxOTMgpfbEHqF51f/5fJCmwFC3C/zNcGT63SymH2ttOAaiIws2zVg4+izQCjrakcwHg==} + engines: {node: '>=20'} + + package-manager-detector@1.8.0: + resolution: {integrity: sha512-yQA4H19AmPEoMUeavPMDIe1higySl/gH/yaQrkT/s07Qp+7pp2hYz30N3z2l5BkjVkF9Ow6o0wjJamm2y7Sn0A==} + + pagefind@1.5.2: + resolution: {integrity: sha512-XTUaK0hXMCu2jszWE584JGQT7y284TmMV9l/HX3rnG5uo3rHI/uHU56XTyyyPFjeWEBxECbAi0CaFDJOONtG0Q==} + hasBin: true + + parse-entities@4.0.2: + resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==} + + parse-latin@7.0.0: + resolution: {integrity: sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ==} + + parse5@7.3.0: + resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} + + path-browserify@1.0.1: + resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + + path-data-parser@0.1.0: + resolution: {integrity: sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==} + + piccolore@0.1.3: + resolution: {integrity: sha512-o8bTeDWjE086iwKrROaDf31K0qC/BENdm15/uH9usSC/uZjJOKb2YGiVHfLY4GhwsERiPI1jmwI2XrA7ACOxVw==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.2: + resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} + engines: {node: '>=8.6'} + + picomatch@4.0.5: + resolution: {integrity: sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==} + engines: {node: '>=12'} + + playwright-core@1.61.1: + resolution: {integrity: sha512-h7Qlt6m4REp25qvIdvbDtVmD4LqVXfpRxhORv9L0jzETM05p4fuPJ3dKyuSXQxDSbXnmS79HAgi9589lGSpLkg==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.61.1: + resolution: {integrity: sha512-DWnY5o3YbLWK4GovuAVwpqL+1VwGNdUGrRr++8j8PtQQzvAVZUIMjKQ90fY689sEJZJBbZVw1rXaOKSTitkzPQ==} + engines: {node: '>=18'} + hasBin: true + + points-on-curve@0.2.0: + resolution: {integrity: sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==} + + points-on-path@0.2.1: + resolution: {integrity: sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g==} + + postcss-nested@6.2.0: + resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + + postcss-selector-parser@6.1.4: + resolution: {integrity: sha512-bIoJLOmjCO1S9XdY/DcnR5hJxvrDir1PbGChrzXG3vw0/FOliy/fA3dmdhQ441kah4gKv+TwckGzex6wNS5cnQ==} + engines: {node: '>=4'} + + postcss@8.5.21: + resolution: {integrity: sha512-v4sDNP3fdNiWMfabO7OwOQdOX8TiQSztKyT1Wj0w+j7LDallJThJRBBBmzVGyYj0crMh7jlV4zepPkiNu9UwDQ==} + engines: {node: ^10 || ^12 || >=14} + + prettier@3.9.6: + resolution: {integrity: sha512-OpN0zzVdiaiAhxpuuj5efpIS4sY9j7bY6uR5mnj5yPzGkdkjNKSJeUThPb60Jw29QuAZgA4o+/iB49kFiaBX6g==} + engines: {node: '>=14'} + hasBin: true + + prismjs@1.30.0: + resolution: {integrity: sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==} + engines: {node: '>=6'} + + process-ancestry@0.1.0: + resolution: {integrity: sha512-tGqJW/UnclpYASFcM6Xh8D8l/BMtaQ9+CSG0vlJSJTcdMM4lDRv4c6H0Pdcsfted+bVczdYSfk2fdukg2gQkZg==} + engines: {node: '>=18.0.0'} + + property-information@7.2.0: + resolution: {integrity: sha512-IAtzIB6sUiWaJYrX9smp3V46pBGbBeLFRGdh25kg1334VcBlD8HzhPeNIWQH9zhGmo2itIe25EHt9dQP7G5hmg==} + + punycode.js@2.3.1: + resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} + engines: {node: '>=6'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + radix3@1.1.2: + resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==} + + readdirp@4.1.2: + resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} + engines: {node: '>= 14.18.0'} + + readdirp@5.0.0: + resolution: {integrity: sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==} + engines: {node: '>= 20.19.0'} + + recma-build-jsx@1.0.0: + resolution: {integrity: sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==} + + recma-jsx@1.0.1: + resolution: {integrity: sha512-huSIy7VU2Z5OLv6oFLosQGGDqPqdO1iq6bWNAdhzMxSJP7RAso4fCZ1cKu8j9YHCZf3TPrq4dw3okhrylgcd7w==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + recma-parse@1.0.0: + resolution: {integrity: sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ==} + + recma-stringify@1.0.0: + resolution: {integrity: sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==} + + regex-recursion@6.0.2: + resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==} + + regex-utilities@2.3.0: + resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} + + regex@6.1.0: + resolution: {integrity: sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg==} + + rehype-expressive-code@0.44.1: + resolution: {integrity: sha512-+VZgs7Evw4LXRN3owpoBNSTpYuW6GeOdjqcUT1TuY8o/4MGPtbd0EU7Bgrju7X8KrQ6SslOBAuGWJ5fV5TriJQ==} + + rehype-format@5.0.1: + resolution: {integrity: sha512-zvmVru9uB0josBVpr946OR8ui7nJEdzZobwLOOqHb/OOD88W0Vk2SqLwoVOj0fM6IPCCO6TaV9CvQvJMWwukFQ==} + + rehype-parse@9.0.1: + resolution: {integrity: sha512-ksCzCD0Fgfh7trPDxr2rSylbwq9iYDkSn8TCDmEJ49ljEUBxDVCzCHv7QNzZOfODanX4+bWQ4WZqLCRWYLfhag==} + + rehype-raw@7.0.0: + resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==} + + rehype-recma@1.0.0: + resolution: {integrity: sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==} + + rehype-stringify@10.0.1: + resolution: {integrity: sha512-k9ecfXHmIPuFVI61B9DeLPN0qFHfawM6RsuX48hoqlaKSF61RskNjSm1lI8PhBEM0MRdLxVVm4WmTqJQccH9mA==} + + rehype@13.0.2: + resolution: {integrity: sha512-j31mdaRFrwFRUIlxGeuPXXKWQxet52RBQRvCmzl5eCefn/KGbomK5GMHNMsOJf55fgo3qw5tST5neDuarDYR2A==} + + remark-directive@4.0.0: + resolution: {integrity: sha512-7sxn4RfF1o3izevPV1DheyGDD6X4c9hrGpfdUpm7uC++dqrnJxIZVkk7CoKqcLm0VUMAuOol7Mno3m6g8cfMuA==} + + remark-gfm@4.0.1: + resolution: {integrity: sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==} + + remark-mdx@3.1.1: + resolution: {integrity: sha512-Pjj2IYlUY3+D8x00UJsIOg5BEvfMyeI+2uLPn9VO9Wg4MEtN/VTIq2NEJQfde9PnX15KgtHyl9S0BcTnWrIuWg==} + + remark-parse@11.0.0: + resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} + + remark-rehype@11.1.2: + resolution: {integrity: sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==} + + remark-smartypants@3.0.2: + resolution: {integrity: sha512-ILTWeOriIluwEvPjv67v7Blgrcx+LZOkAUVtKI3putuhlZm84FnqDORNXPPm+HY3NdZOMhyDwZ1E+eZB/Df5dA==} + engines: {node: '>=16.0.0'} + + remark-stringify@11.0.0: + resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} + + request-light@0.5.8: + resolution: {integrity: sha512-3Zjgh+8b5fhRJBQZoy+zbVKpAQGLyka0MPgW3zruTF4dFFJ8Fqcfu9YsAvi/rvdcaTeWG3MkbZv4WKxAn/84Lg==} + + request-light@0.7.0: + resolution: {integrity: sha512-lMbBMrDoxgsyO+yB3sDcrDuX85yYt7sS8BfQd11jtbW/z5ZWgLZRcEGLsLoYw7I0WSUGQBs8CC8ScIxkTX1+6Q==} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + + retext-latin@4.0.0: + resolution: {integrity: sha512-hv9woG7Fy0M9IlRQloq/N6atV82NxLGveq+3H2WOi79dtIYWN8OaxogDm77f8YnVXJL2VD3bbqowu5E3EMhBYA==} + + retext-smartypants@6.2.0: + resolution: {integrity: sha512-kk0jOU7+zGv//kfjXEBjdIryL1Acl4i9XNkHxtM7Tm5lFiCog576fjNC9hjoR7LTKQ0DsPWy09JummSsH1uqfQ==} + + retext-stringify@4.0.0: + resolution: {integrity: sha512-rtfN/0o8kL1e+78+uxPTqu1Klt0yPzKuQ2BfWwwfgIUSayyzxpM1PJzkKt4V8803uB9qSy32MvI7Xep9khTpiA==} + + retext@9.0.0: + resolution: {integrity: sha512-sbMDcpHCNjvlheSgMfEcVrZko3cDzdbe1x/e7G66dFp0Ff7Mldvi2uv6JkJQzdRcvLYE8CA8Oe8siQx8ZOgTcA==} + + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + robust-predicates@3.0.3: + resolution: {integrity: sha512-NS3levdsRIUOmiJ8FZWCP7LG3QpJyrs/TE0Zpf1yvZu8cAJJ6QMW92H1c7kWpdIHo8RvmLxN/o2JXTKHp74lUA==} + + rolldown@1.1.5: + resolution: {integrity: sha512-t9z29cJjXf/vxQ8dyhCSpt6H6aSwHTk8cT5I3iy6SMXuFpk5mB6PL6XfC8PCwrPTx93udwKUm9HRteAlTGBLiA==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + + roughjs@4.6.6: + resolution: {integrity: sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ==} + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + rw@1.3.3: + resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + satteri@0.9.5: + resolution: {integrity: sha512-ZuWVl+vnM64y+/TtX8Kosv2c00W+hLQiiwnEL6H0UKVVrxFqMw4D2CJHHQaouVd89OAhtBBfjWLqhKi3TVUV4w==} + + sax@1.6.0: + resolution: {integrity: sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==} + engines: {node: '>=11.0.0'} + + semver@7.8.5: + resolution: {integrity: sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==} + engines: {node: '>=10'} + hasBin: true + + sharp@0.35.3: + resolution: {integrity: sha512-ej0zVHuZGHCiABXcNxeYhpRnPNPAcvbG8RMdBAhDAxLKkCRVSpK3Iyu7qbqw3JMzoj0REeM6f3tJLtVwl0023Q==} + engines: {node: '>=20.9.0'} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true + + shiki@4.3.1: + resolution: {integrity: sha512-oR+qDVi2OjX1tmDpyv+3KviX01KzO6Af+0NNnKnsp9491UEGz2YpxTuJboS/6VhYpTdqzmuJBuiTlrAWWJAssw==} + engines: {node: '>=20'} + + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + + sitemap@9.0.1: + resolution: {integrity: sha512-S6hzjGJSG3d6if0YoF5kTyeRJvia6FSTBroE5fQ0bu1QNxyJqhhinfUsXi9fH3MgtXODWvwo2BDyQSnhPQ88uQ==} + engines: {node: '>=20.19.5', npm: '>=10.8.2'} + hasBin: true + + slash@5.1.0: + resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} + engines: {node: '>=14.16'} + + smol-toml@1.7.0: + resolution: {integrity: sha512-aqVvWoyO21L23mb+drl4RmMXbf6N7FdHjAhTRA9ZBL7apWBgfWC16KjrASI+1p9GAroljyMHj6fK67i0UiTNvQ==} + engines: {node: '>= 18'} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + source-map@0.7.6: + resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} + engines: {node: '>= 12'} + + space-separated-tokens@2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + + stream-replace-string@2.0.0: + resolution: {integrity: sha512-TlnjJ1C0QrmxRNrON00JvaFFlNh5TTG00APw23j74ET7gkQpTASi6/L2fuiav8pzK715HXtUeClpBTw2NPSn6w==} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@8.2.1: + resolution: {integrity: sha512-IIaP0g3iy9Cyy18w3M9YcaDudujEAVHKt3a3QJg1+sr/oX96TbaGUubG0hJyCjCBThFH+tFpcIyoUHUn1ogaLA==} + engines: {node: '>=20'} + + stringify-entities@4.0.4: + resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.2.0: + resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} + engines: {node: '>=12'} + + style-to-js@1.1.21: + resolution: {integrity: sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==} + + style-to-object@1.0.14: + resolution: {integrity: sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==} + + stylis@4.4.0: + resolution: {integrity: sha512-5Z9ZpRzfuH6l/UAvCPAPUo3665Nk2wLaZU3x+TLHKVzIz33+sbJqbtrYoC3KD4/uVOr2Zp+L0LySezP9OHV9yA==} + + svgo@4.0.2: + resolution: {integrity: sha512-ekx94z1rRc5LDi6oSUaeRnYhd0UOJxdtQCL2rF8xpWxD3TPAsISWOrxezqGovqS38GRZOdpDfvQe3ts6F7nsng==} + engines: {node: '>=16'} + hasBin: true + + tiny-inflate@1.0.3: + resolution: {integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==} + + tinyclip@0.1.15: + resolution: {integrity: sha512-uo33abH+Ays0xYaDysoBt494Hb3hsEczMpcC0MwFl773pazORx4fmvKhclhR1wonUbB6vvpRsvVMwnhfqeMc+A==} + engines: {node: ^16.14.0 || >= 17.3.0} + + tinyexec@1.2.4: + resolution: {integrity: sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg==} + engines: {node: '>=18'} + + tinyglobby@0.2.17: + resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} + engines: {node: '>=12.0.0'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + trim-lines@3.0.1: + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + + trough@2.2.0: + resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} + + ts-dedent@2.3.0: + resolution: {integrity: sha512-JfJeIHke7y2egdGGgRAvpCwYFUsHlM2gPcrVOxFkznt/4uzQ7HFmvE63iFHVLBJNDuyDOQgijDK/tXH/f6Msjg==} + engines: {node: '>=6.10'} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + typesafe-path@0.2.2: + resolution: {integrity: sha512-OJabfkAg1WLZSqJAJ0Z6Sdt3utnbzr/jh+NAHoyWHJe8CMSy79Gm085094M9nvTPy22KzTVn5Zq5mbapCI/hPA==} + + typescript-auto-import-cache@0.3.6: + resolution: {integrity: sha512-RpuHXrknHdVdK7wv/8ug3Fr0WNsNi5l5aB8MYYuXhq2UH5lnEB1htJ1smhtD5VeCsGr2p8mUDtd83LCQDFVgjQ==} + + typescript@5.9.3: + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} + engines: {node: '>=14.17'} + hasBin: true + + uc.micro@2.1.0: + resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} + + ufo@1.6.4: + resolution: {integrity: sha512-JFNbkD1Svwe0KvGi8GOeLcP4kAWQ609twvCdcHxq1oSL8svv39ZuSvajcD8B+5D0eL4+s1Is2D/O6KN3qcTeRA==} + + ultrahtml@1.7.0: + resolution: {integrity: sha512-2xRd0VHoAQE4M+vF/DvFFB7pUV0ZxTW1TLi7lHQWnF/Sb5TPeEUV/l+hxcNnGO00ZXGnR0voCMmYRKQf+rvJ2g==} + + uncrypto@0.1.3: + resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} + + undici-types@7.18.2: + resolution: {integrity: sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==} + + unicorn-magic@0.4.0: + resolution: {integrity: sha512-wH590V9VNgYH9g3lH9wWjTrUoKsjLF6sGLjhR4sH1LWpLmCOH0Zf7PukhDA8BiS7KHe4oPNkcTHqYkj7SOGUOw==} + engines: {node: '>=20'} + + unified@11.0.5: + resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} + + unifont@0.7.4: + resolution: {integrity: sha512-oHeis4/xl42HUIeHuNZRGEvxj5AaIKR+bHPNegRq5LV1gdc3jundpONbjglKpihmJf+dswygdMJn3eftGIMemg==} + + unist-util-find-after@5.0.0: + resolution: {integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==} + + unist-util-is@6.0.1: + resolution: {integrity: sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==} + + unist-util-modify-children@4.0.0: + resolution: {integrity: sha512-+tdN5fGNddvsQdIzUF3Xx82CU9sMM+fA0dLgR9vOmT0oPT2jH+P1nd5lSqfCfXAw+93NhcXNY2qqvTUtE4cQkw==} + + unist-util-position-from-estree@2.0.0: + resolution: {integrity: sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==} + + unist-util-position@5.0.0: + resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} + + unist-util-remove-position@5.0.0: + resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==} + + unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + + unist-util-visit-children@3.0.0: + resolution: {integrity: sha512-RgmdTfSBOg04sdPcpTSD1jzoNBjt9a80/ZCzp5cI9n1qPzLZWF9YdvWGN2zmTumP1HWhXKdUWexjy/Wy/lJ7tA==} + + unist-util-visit-parents@6.0.2: + resolution: {integrity: sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==} + + unist-util-visit@5.1.0: + resolution: {integrity: sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==} + + unstorage@1.17.5: + resolution: {integrity: sha512-0i3iqvRfx29hkNntHyQvJTpf5W9dQ9ZadSoRU8+xVlhVtT7jAX57fazYO9EHvcRCfBCyi5YRya7XCDOsbTgkPg==} + peerDependencies: + '@azure/app-configuration': ^1.8.0 + '@azure/cosmos': ^4.2.0 + '@azure/data-tables': ^13.3.0 + '@azure/identity': ^4.6.0 + '@azure/keyvault-secrets': ^4.9.0 + '@azure/storage-blob': ^12.26.0 + '@capacitor/preferences': ^6 || ^7 || ^8 + '@deno/kv': '>=0.9.0' + '@netlify/blobs': ^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0 + '@planetscale/database': ^1.19.0 + '@upstash/redis': ^1.34.3 + '@vercel/blob': '>=0.27.1' + '@vercel/functions': ^2.2.12 || ^3.0.0 + '@vercel/kv': ^1 || ^2 || ^3 + aws4fetch: ^1.0.20 + db0: '>=0.2.1' + idb-keyval: ^6.2.1 + ioredis: ^5.4.2 + uploadthing: ^7.4.4 + peerDependenciesMeta: + '@azure/app-configuration': + optional: true + '@azure/cosmos': + optional: true + '@azure/data-tables': + optional: true + '@azure/identity': + optional: true + '@azure/keyvault-secrets': + optional: true + '@azure/storage-blob': + optional: true + '@capacitor/preferences': + optional: true + '@deno/kv': + optional: true + '@netlify/blobs': + optional: true + '@planetscale/database': + optional: true + '@upstash/redis': + optional: true + '@vercel/blob': + optional: true + '@vercel/functions': + optional: true + '@vercel/kv': + optional: true + aws4fetch: + optional: true + db0: + optional: true + idb-keyval: + optional: true + ioredis: + optional: true + uploadthing: + optional: true + + url-extras@0.1.0: + resolution: {integrity: sha512-8tzwTeXFPuX/5PHuCDQE5Dd9Ts4rwoq2t9aIT+HS4iAVpmj5l4Ao7Q+BuuFjvWRqrLswBhQDk8O96ZicgCqQqw==} + engines: {node: '>=20'} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + uuid@14.0.1: + resolution: {integrity: sha512-6ZxzVpzDXDa3bJWaHilVayA+BH/1zmxCJoVgvmqJnid/gPoKHxUrS/aC/T6LGQtNHT+XHG9fXPJB4d+IrU30Ew==} + hasBin: true + + vfile-location@5.0.3: + resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==} + + vfile-message@4.0.3: + resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==} + + vfile@6.0.3: + resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} + + vite@8.1.5: + resolution: {integrity: sha512-7ULLwsCdYx/nRyrpiEwvqb5TFHrMVZyBt+rg/OAXT7rgj/z+DtTDyKFeLAdDkubDVDKD8jOsndmy7m55XcfUsw==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + '@types/node': ^20.19.0 || >=22.12.0 + '@vitejs/devtools': ^0.3.0 + esbuild: ^0.27.0 || ^0.28.0 + jiti: '>=1.21.0' + less: ^4.0.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + '@vitejs/devtools': + optional: true + esbuild: + optional: true + jiti: + optional: true + less: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + + vitefu@1.1.3: + resolution: {integrity: sha512-ub4okH7Z5KLjb6hDyjqrGXqWtWvoYdU3IGm/NorpgHncKoLTCfRIbvlhBm7r0YstIaQRYlp4yEbFqDcKSzXSSg==} + peerDependencies: + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + vite: + optional: true + + volar-service-css@0.0.71: + resolution: {integrity: sha512-wRRFt9BpjMKCazcgOh67MSjUjiWUCAh99DyYSDIOTuxaRjEtDC7PpB0k1Y1wbJIW/pVtMUSVbpPo3UGSm0Byxw==} + peerDependencies: + '@volar/language-service': ~2.4.0 + peerDependenciesMeta: + '@volar/language-service': + optional: true + + volar-service-emmet@0.0.71: + resolution: {integrity: sha512-zqjzt6bN95e3CUstBm0PBFAJnrfz0ZAARka87fart46/gNCLLuP3Vujy8V/J8HEziTFLnfkgIASLFYPUhonJcA==} + peerDependencies: + '@volar/language-service': ~2.4.0 + peerDependenciesMeta: + '@volar/language-service': + optional: true + + volar-service-html@0.0.71: + resolution: {integrity: sha512-e8tHPhgQ7ooLfudAEIku+kgd9pWkq3SSz8RbnQDI1+Eb8wbenkLGHqoirLqz5ORLV6wIMr2Iv08RWBG5eOcgpw==} + peerDependencies: + '@volar/language-service': ~2.4.0 + peerDependenciesMeta: + '@volar/language-service': + optional: true + + volar-service-prettier@0.0.71: + resolution: {integrity: sha512-Rz7JVH3qD108UCdmIEiZvOBNljMt2nLFdbN8AXcDfn7xD9F5I2aCIsDVqBbXw21PsnxG0b7MfwtNF+zPS/NKUg==} + peerDependencies: + '@volar/language-service': ~2.4.0 + prettier: ^2.2 || ^3.0 + peerDependenciesMeta: + '@volar/language-service': + optional: true + prettier: + optional: true + + volar-service-typescript-twoslash-queries@0.0.71: + resolution: {integrity: sha512-9K2k72s4n7rV9s4bX0MyjbX9iBribvKZbBJKuEmTCZfeWJXs6Yh7bGpY4eoc7UufAjvpheBqwyZCOIPBvxCv0A==} + peerDependencies: + '@volar/language-service': ~2.4.0 + peerDependenciesMeta: + '@volar/language-service': + optional: true + + volar-service-typescript@0.0.71: + resolution: {integrity: sha512-yTtM/BVT6hoyEYnDtaCyAtNhdNeS/mhTTABlBOdw3NNiRBUin3IznFJpgfjer4c6RYopiPjjQjc9VFhxVl1mLw==} + peerDependencies: + '@volar/language-service': ~2.4.0 + peerDependenciesMeta: + '@volar/language-service': + optional: true + + volar-service-yaml@0.0.71: + resolution: {integrity: sha512-qYGWGuVpUTnZGu5P/CR4KLK4aIR8RrcVnmfZ2eRcj9q/I8VZCoC5yy9FtEvfNvnDp4MU17yhdJcvpQPIqhJS2Q==} + peerDependencies: + '@volar/language-service': ~2.4.0 + peerDependenciesMeta: + '@volar/language-service': + optional: true + + vscode-css-languageservice@6.3.10: + resolution: {integrity: sha512-eq5N9Er3fC4vA9zd9EFhyBG90wtCCuXgRSpAndaOgXMh1Wgep5lBgRIeDgjZBW9pa+332yC9+49cZMW8jcL3MA==} + + vscode-html-languageservice@5.6.2: + resolution: {integrity: sha512-ulCrSnFnfQ16YzvwnYUgEbUEl/ZG7u2eV27YhvLObSHKkb8fw1Z9cgsnUwjTEeDIdJDoTDTDpxuhQwoenoLNMg==} + + vscode-json-languageservice@4.1.8: + resolution: {integrity: sha512-0vSpg6Xd9hfV+eZAaYN63xVVMOTmJ4GgHxXnkLCh+9RsQBkWKIghzLhW2B9ebfG+LQQg8uLtsQ2aUKjTgE+QOg==} + engines: {npm: '>=7.0.0'} + + vscode-jsonrpc@8.2.0: + resolution: {integrity: sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==} + engines: {node: '>=14.0.0'} + + vscode-jsonrpc@9.0.1: + resolution: {integrity: sha512-rfuA6T75H6m5EkbhtEPzre9pT0HPcDI2MMy4+nPFIBks5J8JBAUHD4tRYSgaBOijIEC7SRkC1kKyXTLqbmh9jw==} + engines: {node: '>=14.0.0'} + + vscode-languageserver-protocol@3.17.5: + resolution: {integrity: sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==} + + vscode-languageserver-protocol@3.18.2: + resolution: {integrity: sha512-XRyDbT0Pp3sSNti3JmxVEUMySWCSi1hhM+/KUlCy1hV1zmrqpM1OwO12EAki8blhmLuIMpaJrYbo0OzGVfK2Qg==} + + vscode-languageserver-textdocument@1.0.12: + resolution: {integrity: sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==} + + vscode-languageserver-types@3.17.5: + resolution: {integrity: sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==} + + vscode-languageserver-types@3.18.0: + resolution: {integrity: sha512-8TsGPNMIMiiBdkORgRSvLjuiEIiAFtO+KssmYWxQ+uSVvlf7RjK8YKCOjPzZ+YA04jXEV7+7LvkSmHkhpNS99g==} + + vscode-languageserver@9.0.1: + resolution: {integrity: sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==} + hasBin: true + + vscode-nls@5.2.0: + resolution: {integrity: sha512-RAaHx7B14ZU04EU31pT+rKz2/zSl7xMsfIZuo8pd+KZO6PXtQmpevpq3vxvWNcrGbdmhM/rr5Uw5Mz+NBfhVng==} + + vscode-uri@3.1.0: + resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==} + + web-namespaces@2.0.1: + resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + xdg-basedir@5.1.0: + resolution: {integrity: sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==} + engines: {node: '>=12'} + + xxhash-wasm@1.1.0: + resolution: {integrity: sha512-147y/6YNh+tlp6nd/2pWq38i9h6mz/EuQ6njIrmW8D1BS5nCqs0P6DG+m6zTGnNz5I+uhZ0SHxBs9BsPrwcKDA==} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yaml-language-server@1.23.0: + resolution: {integrity: sha512-3qVyCOexLCWw06PQa5kRPwvMWMZ/eZeCRWUvgD6a0OkqL/4iCnxy2WumbWifa937Uo5xhyWJ0uxlU39ljhNh7A==} + hasBin: true + + yaml@2.8.3: + resolution: {integrity: sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==} + engines: {node: '>= 14.6'} + hasBin: true + + yaml@2.9.0: + resolution: {integrity: sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==} + engines: {node: '>= 14.6'} + hasBin: true + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs-parser@22.0.0: + resolution: {integrity: sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==} + engines: {node: ^20.19.0 || ^22.12.0 || >=23} + + yargs@17.7.3: + resolution: {integrity: sha512-GZtjxm/J/4TSxuL3FNYjCmLktBTnIw/rVmKSIyKeYAZpmJB2ig9VauCC5xsa82GNKVKDAqpOn3KVzNt0zmrU0g==} + engines: {node: '>=12'} + + yocto-queue@1.2.2: + resolution: {integrity: sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==} + engines: {node: '>=12.20'} + + zod@4.4.3: + resolution: {integrity: sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==} + + zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + +snapshots: + + '@antfu/install-pkg@1.1.0': + dependencies: + package-manager-detector: 1.8.0 + tinyexec: 1.2.4 + + '@astrojs/check@0.9.4(prettier@3.9.6)(typescript@5.9.3)': + dependencies: + '@astrojs/language-server': 2.16.13(prettier@3.9.6)(typescript@5.9.3) + chokidar: 4.0.3 + kleur: 4.1.5 + typescript: 5.9.3 + yargs: 17.7.3 + transitivePeerDependencies: + - prettier + - prettier-plugin-astro + + '@astrojs/compiler-binding-darwin-arm64@0.3.1': + optional: true + + '@astrojs/compiler-binding-darwin-x64@0.3.1': + optional: true + + '@astrojs/compiler-binding-linux-arm64-gnu@0.3.1': + optional: true + + '@astrojs/compiler-binding-linux-arm64-musl@0.3.1': + optional: true + + '@astrojs/compiler-binding-linux-x64-gnu@0.3.1': + optional: true + + '@astrojs/compiler-binding-linux-x64-musl@0.3.1': + optional: true + + '@astrojs/compiler-binding-wasm32-wasi@0.3.1(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2)': + dependencies: + '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2) + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' + optional: true + + '@astrojs/compiler-binding-win32-arm64-msvc@0.3.1': + optional: true + + '@astrojs/compiler-binding-win32-x64-msvc@0.3.1': + optional: true + + '@astrojs/compiler-binding@0.3.1(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2)': + optionalDependencies: + '@astrojs/compiler-binding-darwin-arm64': 0.3.1 + '@astrojs/compiler-binding-darwin-x64': 0.3.1 + '@astrojs/compiler-binding-linux-arm64-gnu': 0.3.1 + '@astrojs/compiler-binding-linux-arm64-musl': 0.3.1 + '@astrojs/compiler-binding-linux-x64-gnu': 0.3.1 + '@astrojs/compiler-binding-linux-x64-musl': 0.3.1 + '@astrojs/compiler-binding-wasm32-wasi': 0.3.1(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2) + '@astrojs/compiler-binding-win32-arm64-msvc': 0.3.1 + '@astrojs/compiler-binding-win32-x64-msvc': 0.3.1 + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' + + '@astrojs/compiler-rs@0.3.1(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2)': + dependencies: + '@astrojs/compiler-binding': 0.3.1(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2) + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' + + '@astrojs/compiler@2.13.1': {} + + '@astrojs/internal-helpers@0.10.1': + dependencies: + '@types/hast': 3.0.5 + '@types/mdast': 4.0.4 + js-yaml: 4.3.0 + picomatch: 4.0.5 + retext-smartypants: 6.2.0 + shiki: 4.3.1 + smol-toml: 1.7.0 + unified: 11.0.5 + + '@astrojs/language-server@2.16.13(prettier@3.9.6)(typescript@5.9.3)': + dependencies: + '@astrojs/compiler': 2.13.1 + '@astrojs/yaml2ts': 0.2.4 + '@jridgewell/sourcemap-codec': 1.5.5 + '@volar/kit': 2.4.28(typescript@5.9.3) + '@volar/language-core': 2.4.28 + '@volar/language-server': 2.4.28 + '@volar/language-service': 2.4.28 + muggle-string: 0.4.1 + tinyglobby: 0.2.17 + volar-service-css: 0.0.71(@volar/language-service@2.4.28) + volar-service-emmet: 0.0.71(@volar/language-service@2.4.28) + volar-service-html: 0.0.71(@volar/language-service@2.4.28) + volar-service-prettier: 0.0.71(@volar/language-service@2.4.28)(prettier@3.9.6) + volar-service-typescript: 0.0.71(@volar/language-service@2.4.28) + volar-service-typescript-twoslash-queries: 0.0.71(@volar/language-service@2.4.28) + volar-service-yaml: 0.0.71(@volar/language-service@2.4.28) + vscode-html-languageservice: 5.6.2 + vscode-uri: 3.1.0 + optionalDependencies: + prettier: 3.9.6 + transitivePeerDependencies: + - typescript + + '@astrojs/markdown-remark@7.2.1': + dependencies: + '@astrojs/internal-helpers': 0.10.1 + '@astrojs/prism': 4.0.2 + github-slugger: 2.0.0 + hast-util-from-html: 2.0.3 + hast-util-to-text: 4.0.2 + mdast-util-definitions: 6.0.0 + rehype-raw: 7.0.0 + rehype-stringify: 10.0.1 + remark-gfm: 4.0.1 + remark-parse: 11.0.0 + remark-rehype: 11.1.2 + remark-smartypants: 3.0.2 + unified: 11.0.5 + unist-util-remove-position: 5.0.0 + unist-util-visit: 5.1.0 + unist-util-visit-parents: 6.0.2 + vfile: 6.0.3 + transitivePeerDependencies: + - supports-color + + '@astrojs/markdown-satteri@0.3.4': + dependencies: + '@astrojs/internal-helpers': 0.10.1 + '@astrojs/prism': 4.0.2 + github-slugger: 2.0.0 + hast-util-from-html: 2.0.3 + satteri: 0.9.5 + + '@astrojs/mdx@7.0.3(@astrojs/markdown-satteri@0.3.4)(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2)(@types/node@24.13.3)(yaml@2.9.0))': + dependencies: + '@astrojs/internal-helpers': 0.10.1 + '@astrojs/markdown-remark': 7.2.1 + '@mdx-js/mdx': 3.1.1 + acorn: 8.17.0 + astro: 7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2)(@types/node@24.13.3)(yaml@2.9.0) + es-module-lexer: 2.3.1 + estree-util-visit: 2.0.0 + hast-util-to-html: 9.0.5 + piccolore: 0.1.3 + rehype-raw: 7.0.0 + remark-gfm: 4.0.1 + remark-smartypants: 3.0.2 + source-map: 0.7.6 + unist-util-visit: 5.1.0 + vfile: 6.0.3 + optionalDependencies: + '@astrojs/markdown-satteri': 0.3.4 + transitivePeerDependencies: + - supports-color + + '@astrojs/prism@4.0.2': + dependencies: + prismjs: 1.30.0 + + '@astrojs/sitemap@3.7.3': + dependencies: + sitemap: 9.0.1 + stream-replace-string: 2.0.0 + zod: 4.4.3 + + '@astrojs/starlight@0.41.4(@astrojs/markdown-remark@7.2.1)(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2)(@types/node@24.13.3)(yaml@2.9.0))(typescript@5.9.3)': + dependencies: + '@astrojs/markdown-satteri': 0.3.4 + '@astrojs/mdx': 7.0.3(@astrojs/markdown-satteri@0.3.4)(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2)(@types/node@24.13.3)(yaml@2.9.0)) + '@astrojs/sitemap': 3.7.3 + '@pagefind/default-ui': 1.5.2 + '@types/hast': 3.0.5 + '@types/js-yaml': 4.0.9 + '@types/mdast': 4.0.4 + astro: 7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2)(@types/node@24.13.3)(yaml@2.9.0) + astro-expressive-code: 0.44.1(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2)(@types/node@24.13.3)(yaml@2.9.0)) + bcp-47: 2.1.1 + hast-util-from-html: 2.0.3 + hast-util-select: 6.0.4 + hast-util-to-string: 3.0.1 + hastscript: 9.0.1 + i18next: 26.3.6(typescript@5.9.3) + js-yaml: 4.3.0 + klona: 2.0.6 + magic-string: 0.30.21 + mdast-util-directive: 3.1.0 + mdast-util-to-markdown: 2.1.2 + mdast-util-to-string: 4.0.0 + pagefind: 1.5.2 + rehype: 13.0.2 + rehype-format: 5.0.1 + remark-directive: 4.0.0 + satteri: 0.9.5 + ultrahtml: 1.7.0 + unified: 11.0.5 + unist-util-visit: 5.1.0 + vfile: 6.0.3 + optionalDependencies: + '@astrojs/markdown-remark': 7.2.1 + transitivePeerDependencies: + - supports-color + - typescript + + '@astrojs/telemetry@3.3.3': + dependencies: + ci-info: 4.4.0 + dset: 3.1.4 + is-docker: 4.0.0 + package-manager-detector: 1.8.0 + + '@astrojs/yaml2ts@0.2.4': + dependencies: + yaml: 2.9.0 + + '@axe-core/playwright@4.12.1(playwright-core@1.61.1)': + dependencies: + axe-core: 4.12.1 + playwright-core: 1.61.1 + + '@babel/helper-string-parser@7.29.7': {} + + '@babel/helper-validator-identifier@7.29.7': {} + + '@babel/parser@7.29.7': + dependencies: + '@babel/types': 7.29.7 + + '@babel/types@7.29.7': + dependencies: + '@babel/helper-string-parser': 7.29.7 + '@babel/helper-validator-identifier': 7.29.7 + + '@braintree/sanitize-url@7.1.2': {} + + '@bruits/satteri-darwin-arm64@0.9.5': + optional: true + + '@bruits/satteri-darwin-x64@0.9.5': + optional: true + + '@bruits/satteri-linux-arm64-gnu@0.9.5': + optional: true + + '@bruits/satteri-linux-arm64-musl@0.9.5': + optional: true + + '@bruits/satteri-linux-x64-gnu@0.9.5': + optional: true + + '@bruits/satteri-linux-x64-musl@0.9.5': + optional: true + + '@bruits/satteri-wasm32-wasi@0.9.5': + dependencies: + '@emnapi/core': 1.11.1 + '@emnapi/runtime': 1.11.1 + '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) + optional: true + + '@bruits/satteri-win32-arm64-msvc@0.9.5': + optional: true + + '@bruits/satteri-win32-x64-msvc@0.9.5': + optional: true + + '@capsizecss/unpack@4.0.1': + dependencies: + fontkitten: 1.0.3 + + '@chevrotain/types@11.1.2': {} + + '@clack/core@1.4.3': + dependencies: + fast-wrap-ansi: 0.2.2 + sisteransi: 1.0.5 + + '@clack/prompts@1.7.0': + dependencies: + '@clack/core': 1.4.3 + fast-string-width: 3.0.2 + fast-wrap-ansi: 0.2.2 + sisteransi: 1.0.5 + + '@cspell/cspell-bundled-dicts@10.0.1': + dependencies: + '@cspell/dict-ada': 4.1.1 + '@cspell/dict-al': 1.1.1 + '@cspell/dict-aws': 4.0.17 + '@cspell/dict-bash': 4.2.3 + '@cspell/dict-companies': 3.2.12 + '@cspell/dict-cpp': 7.0.2 + '@cspell/dict-cryptocurrencies': 5.0.5 + '@cspell/dict-csharp': 4.0.8 + '@cspell/dict-css': 4.1.2 + '@cspell/dict-dart': 2.3.2 + '@cspell/dict-data-science': 2.0.16 + '@cspell/dict-django': 4.1.6 + '@cspell/dict-docker': 1.1.17 + '@cspell/dict-dotnet': 5.0.13 + '@cspell/dict-elixir': 4.0.8 + '@cspell/dict-en-common-misspellings': 2.1.13 + '@cspell/dict-en-gb-mit': 3.1.25 + '@cspell/dict-en_us': 4.4.36 + '@cspell/dict-filetypes': 3.0.18 + '@cspell/dict-flutter': 1.1.1 + '@cspell/dict-fonts': 4.0.6 + '@cspell/dict-fsharp': 1.1.1 + '@cspell/dict-fullstack': 3.2.9 + '@cspell/dict-gaming-terms': 1.1.2 + '@cspell/dict-git': 3.1.0 + '@cspell/dict-golang': 6.0.26 + '@cspell/dict-google': 1.0.9 + '@cspell/dict-haskell': 4.0.6 + '@cspell/dict-html': 4.0.15 + '@cspell/dict-html-symbol-entities': 4.0.5 + '@cspell/dict-java': 5.0.12 + '@cspell/dict-julia': 1.1.1 + '@cspell/dict-k8s': 1.0.13 + '@cspell/dict-kotlin': 1.1.1 + '@cspell/dict-latex': 5.1.0 + '@cspell/dict-lorem-ipsum': 4.0.5 + '@cspell/dict-lua': 4.0.8 + '@cspell/dict-makefile': 1.0.5 + '@cspell/dict-markdown': 2.0.17(@cspell/dict-css@4.1.2)(@cspell/dict-html-symbol-entities@4.0.5)(@cspell/dict-html@4.0.15)(@cspell/dict-typescript@3.2.3) + '@cspell/dict-monkeyc': 1.0.12 + '@cspell/dict-node': 5.0.9 + '@cspell/dict-npm': 5.2.43 + '@cspell/dict-php': 4.1.1 + '@cspell/dict-powershell': 5.0.15 + '@cspell/dict-public-licenses': 2.0.16 + '@cspell/dict-python': 4.2.29 + '@cspell/dict-r': 2.1.1 + '@cspell/dict-ruby': 5.1.1 + '@cspell/dict-rust': 4.1.2 + '@cspell/dict-scala': 5.0.9 + '@cspell/dict-shell': 1.2.0 + '@cspell/dict-software-terms': 5.2.4 + '@cspell/dict-sql': 2.2.1 + '@cspell/dict-svelte': 1.0.7 + '@cspell/dict-swift': 2.0.6 + '@cspell/dict-terraform': 1.1.4 + '@cspell/dict-typescript': 3.2.3 + '@cspell/dict-vue': 3.0.5 + '@cspell/dict-zig': 1.0.0 + + '@cspell/cspell-json-reporter@10.0.1': + dependencies: + '@cspell/cspell-types': 10.0.1 + + '@cspell/cspell-performance-monitor@10.0.1': {} + + '@cspell/cspell-pipe@10.0.1': {} + + '@cspell/cspell-resolver@10.0.1': + dependencies: + global-directory: 5.0.0 + + '@cspell/cspell-service-bus@10.0.1': {} + + '@cspell/cspell-types@10.0.1': {} + + '@cspell/cspell-worker@10.0.1': + dependencies: + cspell-lib: 10.0.1 + + '@cspell/dict-ada@4.1.1': {} + + '@cspell/dict-al@1.1.1': {} + + '@cspell/dict-aws@4.0.17': {} + + '@cspell/dict-bash@4.2.3': + dependencies: + '@cspell/dict-shell': 1.2.0 + + '@cspell/dict-companies@3.2.12': {} + + '@cspell/dict-cpp@7.0.2': {} + + '@cspell/dict-cryptocurrencies@5.0.5': {} + + '@cspell/dict-csharp@4.0.8': {} + + '@cspell/dict-css@4.1.2': {} + + '@cspell/dict-dart@2.3.2': {} + + '@cspell/dict-data-science@2.0.16': {} + + '@cspell/dict-django@4.1.6': {} + + '@cspell/dict-docker@1.1.17': {} + + '@cspell/dict-dotnet@5.0.13': {} + + '@cspell/dict-elixir@4.0.8': {} + + '@cspell/dict-en-common-misspellings@2.1.13': {} + + '@cspell/dict-en-gb-mit@3.1.25': {} + + '@cspell/dict-en_us@4.4.36': {} + + '@cspell/dict-filetypes@3.0.18': {} + + '@cspell/dict-flutter@1.1.1': {} + + '@cspell/dict-fonts@4.0.6': {} + + '@cspell/dict-fsharp@1.1.1': {} + + '@cspell/dict-fullstack@3.2.9': {} + + '@cspell/dict-gaming-terms@1.1.2': {} + + '@cspell/dict-git@3.1.0': {} + + '@cspell/dict-golang@6.0.26': {} + + '@cspell/dict-google@1.0.9': {} + + '@cspell/dict-haskell@4.0.6': {} + + '@cspell/dict-html-symbol-entities@4.0.5': {} + + '@cspell/dict-html@4.0.15': {} + + '@cspell/dict-java@5.0.12': {} + + '@cspell/dict-julia@1.1.1': {} + + '@cspell/dict-k8s@1.0.13': {} + + '@cspell/dict-kotlin@1.1.1': {} + + '@cspell/dict-latex@5.1.0': {} + + '@cspell/dict-lorem-ipsum@4.0.5': {} + + '@cspell/dict-lua@4.0.8': {} + + '@cspell/dict-makefile@1.0.5': {} + + '@cspell/dict-markdown@2.0.17(@cspell/dict-css@4.1.2)(@cspell/dict-html-symbol-entities@4.0.5)(@cspell/dict-html@4.0.15)(@cspell/dict-typescript@3.2.3)': + dependencies: + '@cspell/dict-css': 4.1.2 + '@cspell/dict-html': 4.0.15 + '@cspell/dict-html-symbol-entities': 4.0.5 + '@cspell/dict-typescript': 3.2.3 + + '@cspell/dict-monkeyc@1.0.12': {} + + '@cspell/dict-node@5.0.9': {} + + '@cspell/dict-npm@5.2.43': {} + + '@cspell/dict-php@4.1.1': {} + + '@cspell/dict-powershell@5.0.15': {} + + '@cspell/dict-public-licenses@2.0.16': {} + + '@cspell/dict-python@4.2.29': + dependencies: + '@cspell/dict-data-science': 2.0.16 + + '@cspell/dict-r@2.1.1': {} + + '@cspell/dict-ruby@5.1.1': {} + + '@cspell/dict-rust@4.1.2': {} + + '@cspell/dict-scala@5.0.9': {} + + '@cspell/dict-shell@1.2.0': {} + + '@cspell/dict-software-terms@5.2.4': {} + + '@cspell/dict-sql@2.2.1': {} + + '@cspell/dict-svelte@1.0.7': {} + + '@cspell/dict-swift@2.0.6': {} + + '@cspell/dict-terraform@1.1.4': {} + + '@cspell/dict-typescript@3.2.3': {} + + '@cspell/dict-vue@3.0.5': {} + + '@cspell/dict-zig@1.0.0': {} + + '@cspell/dynamic-import@10.0.1': + dependencies: + '@cspell/url': 10.0.1 + import-meta-resolve: 4.2.0 + + '@cspell/filetypes@10.0.1': {} + + '@cspell/rpc@10.0.1': {} + + '@cspell/strong-weak-map@10.0.1': {} + + '@cspell/url@10.0.1': {} + + '@ctrl/tinycolor@4.2.0': {} + + '@emmetio/abbreviation@2.3.3': + dependencies: + '@emmetio/scanner': 1.0.4 + + '@emmetio/css-abbreviation@2.1.8': + dependencies: + '@emmetio/scanner': 1.0.4 + + '@emmetio/css-parser@0.4.1': + dependencies: + '@emmetio/stream-reader': 2.2.0 + '@emmetio/stream-reader-utils': 0.1.0 + + '@emmetio/html-matcher@1.3.0': + dependencies: + '@emmetio/scanner': 1.0.4 + + '@emmetio/scanner@1.0.4': {} + + '@emmetio/stream-reader-utils@0.1.0': {} + + '@emmetio/stream-reader@2.2.0': {} + + '@emnapi/core@1.11.1': + dependencies: + '@emnapi/wasi-threads': 1.2.2 + tslib: 2.8.1 + optional: true + + '@emnapi/runtime@1.11.1': + dependencies: + tslib: 2.8.1 + optional: true + + '@emnapi/runtime@1.11.2': + dependencies: + tslib: 2.8.1 + optional: true + + '@emnapi/wasi-threads@1.2.2': + dependencies: + tslib: 2.8.1 + optional: true + + '@esbuild/aix-ppc64@0.28.1': + optional: true + + '@esbuild/android-arm64@0.28.1': + optional: true + + '@esbuild/android-arm@0.28.1': + optional: true + + '@esbuild/android-x64@0.28.1': + optional: true + + '@esbuild/darwin-arm64@0.28.1': + optional: true + + '@esbuild/darwin-x64@0.28.1': + optional: true + + '@esbuild/freebsd-arm64@0.28.1': + optional: true + + '@esbuild/freebsd-x64@0.28.1': + optional: true + + '@esbuild/linux-arm64@0.28.1': + optional: true + + '@esbuild/linux-arm@0.28.1': + optional: true + + '@esbuild/linux-ia32@0.28.1': + optional: true + + '@esbuild/linux-loong64@0.28.1': + optional: true + + '@esbuild/linux-mips64el@0.28.1': + optional: true + + '@esbuild/linux-ppc64@0.28.1': + optional: true + + '@esbuild/linux-riscv64@0.28.1': + optional: true + + '@esbuild/linux-s390x@0.28.1': + optional: true + + '@esbuild/linux-x64@0.28.1': + optional: true + + '@esbuild/netbsd-arm64@0.28.1': + optional: true + + '@esbuild/netbsd-x64@0.28.1': + optional: true + + '@esbuild/openbsd-arm64@0.28.1': + optional: true + + '@esbuild/openbsd-x64@0.28.1': + optional: true + + '@esbuild/openharmony-arm64@0.28.1': + optional: true + + '@esbuild/sunos-x64@0.28.1': + optional: true + + '@esbuild/win32-arm64@0.28.1': + optional: true + + '@esbuild/win32-ia32@0.28.1': + optional: true + + '@esbuild/win32-x64@0.28.1': + optional: true + + '@expressive-code/core@0.44.1': + dependencies: + '@ctrl/tinycolor': 4.2.0 + hast-util-select: 6.0.4 + hast-util-to-html: 9.0.5 + hast-util-to-text: 4.0.2 + hastscript: 9.0.1 + postcss: 8.5.21 + postcss-nested: 6.2.0(postcss@8.5.21) + unist-util-visit: 5.1.0 + unist-util-visit-parents: 6.0.2 + + '@expressive-code/plugin-frames@0.44.1': + dependencies: + '@expressive-code/core': 0.44.1 + + '@expressive-code/plugin-shiki@0.44.1': + dependencies: + '@expressive-code/core': 0.44.1 + shiki: 4.3.1 + + '@expressive-code/plugin-text-markers@0.44.1': + dependencies: + '@expressive-code/core': 0.44.1 + + '@iconify/types@2.0.0': {} + + '@iconify/utils@3.1.4': + dependencies: + '@antfu/install-pkg': 1.1.0 + '@iconify/types': 2.0.0 + import-meta-resolve: 4.2.0 + + '@img/colour@1.1.0': {} + + '@img/sharp-darwin-arm64@0.35.3': + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.3.2 + optional: true + + '@img/sharp-darwin-x64@0.35.3': + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.3.2 + optional: true + + '@img/sharp-freebsd-wasm32@0.35.3': + dependencies: + '@img/sharp-wasm32': 0.35.3 + optional: true + + '@img/sharp-libvips-darwin-arm64@1.3.2': + optional: true + + '@img/sharp-libvips-darwin-x64@1.3.2': + optional: true + + '@img/sharp-libvips-linux-arm64@1.3.2': + optional: true + + '@img/sharp-libvips-linux-arm@1.3.2': + optional: true + + '@img/sharp-libvips-linux-ppc64@1.3.2': + optional: true + + '@img/sharp-libvips-linux-riscv64@1.3.2': + optional: true + + '@img/sharp-libvips-linux-s390x@1.3.2': + optional: true + + '@img/sharp-libvips-linux-x64@1.3.2': + optional: true + + '@img/sharp-libvips-linuxmusl-arm64@1.3.2': + optional: true + + '@img/sharp-libvips-linuxmusl-x64@1.3.2': + optional: true + + '@img/sharp-linux-arm64@0.35.3': + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.3.2 + optional: true + + '@img/sharp-linux-arm@0.35.3': + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.3.2 + optional: true + + '@img/sharp-linux-ppc64@0.35.3': + optionalDependencies: + '@img/sharp-libvips-linux-ppc64': 1.3.2 + optional: true + + '@img/sharp-linux-riscv64@0.35.3': + optionalDependencies: + '@img/sharp-libvips-linux-riscv64': 1.3.2 + optional: true + + '@img/sharp-linux-s390x@0.35.3': + optionalDependencies: + '@img/sharp-libvips-linux-s390x': 1.3.2 + optional: true + + '@img/sharp-linux-x64@0.35.3': + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.3.2 + optional: true + + '@img/sharp-linuxmusl-arm64@0.35.3': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.3.2 + optional: true + + '@img/sharp-linuxmusl-x64@0.35.3': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.3.2 + optional: true + + '@img/sharp-wasm32@0.35.3': + dependencies: + '@emnapi/runtime': 1.11.2 + optional: true + + '@img/sharp-webcontainers-wasm32@0.35.3': + dependencies: + '@img/sharp-wasm32': 0.35.3 + optional: true + + '@img/sharp-win32-arm64@0.35.3': + optional: true + + '@img/sharp-win32-ia32@0.35.3': + optional: true + + '@img/sharp-win32-x64@0.35.3': + optional: true + + '@jridgewell/sourcemap-codec@1.5.5': {} + + '@mdx-js/mdx@3.1.1': + dependencies: + '@types/estree': 1.0.9 + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.5 + '@types/mdx': 2.0.14 + acorn: 8.17.0 + collapse-white-space: 2.1.0 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + estree-util-scope: 1.0.0 + estree-walker: 3.0.3 + hast-util-to-jsx-runtime: 2.3.6 + markdown-extensions: 2.0.0 + recma-build-jsx: 1.0.0 + recma-jsx: 1.0.1(acorn@8.17.0) + recma-stringify: 1.0.0 + rehype-recma: 1.0.0 + remark-mdx: 3.1.1 + remark-parse: 11.0.0 + remark-rehype: 11.1.2 + source-map: 0.7.6 + unified: 11.0.5 + unist-util-position-from-estree: 2.0.0 + unist-util-stringify-position: 4.0.0 + unist-util-visit: 5.1.0 + vfile: 6.0.3 + transitivePeerDependencies: + - supports-color + + '@mermaid-js/parser@1.2.0': + dependencies: + '@chevrotain/types': 11.1.2 + + '@napi-rs/wasm-runtime@1.1.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)': + dependencies: + '@emnapi/core': 1.11.1 + '@emnapi/runtime': 1.11.1 + '@tybys/wasm-util': 0.10.3 + optional: true + + '@napi-rs/wasm-runtime@1.1.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2)': + dependencies: + '@emnapi/core': 1.11.1 + '@emnapi/runtime': 1.11.2 + '@tybys/wasm-util': 0.10.3 + optional: true + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.20.1 + + '@oslojs/encoding@1.1.0': {} + + '@oxc-project/types@0.139.0': {} + + '@pagefind/darwin-arm64@1.5.2': + optional: true + + '@pagefind/darwin-x64@1.5.2': + optional: true + + '@pagefind/default-ui@1.5.2': {} + + '@pagefind/freebsd-x64@1.5.2': + optional: true + + '@pagefind/linux-arm64@1.5.2': + optional: true + + '@pagefind/linux-x64@1.5.2': + optional: true + + '@pagefind/windows-arm64@1.5.2': + optional: true + + '@pagefind/windows-x64@1.5.2': + optional: true + + '@playwright/test@1.61.1': + dependencies: + playwright: 1.61.1 + + '@rolldown/binding-android-arm64@1.1.5': + optional: true + + '@rolldown/binding-darwin-arm64@1.1.5': + optional: true + + '@rolldown/binding-darwin-x64@1.1.5': + optional: true + + '@rolldown/binding-freebsd-x64@1.1.5': + optional: true + + '@rolldown/binding-linux-arm-gnueabihf@1.1.5': + optional: true + + '@rolldown/binding-linux-arm64-gnu@1.1.5': + optional: true + + '@rolldown/binding-linux-arm64-musl@1.1.5': + optional: true + + '@rolldown/binding-linux-ppc64-gnu@1.1.5': + optional: true + + '@rolldown/binding-linux-s390x-gnu@1.1.5': + optional: true + + '@rolldown/binding-linux-x64-gnu@1.1.5': + optional: true + + '@rolldown/binding-linux-x64-musl@1.1.5': + optional: true + + '@rolldown/binding-openharmony-arm64@1.1.5': + optional: true + + '@rolldown/binding-wasm32-wasi@1.1.5': + dependencies: + '@emnapi/core': 1.11.1 + '@emnapi/runtime': 1.11.1 + '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) + optional: true + + '@rolldown/binding-win32-arm64-msvc@1.1.5': + optional: true + + '@rolldown/binding-win32-x64-msvc@1.1.5': + optional: true + + '@rolldown/pluginutils@1.0.1': {} + + '@rollup/pluginutils@5.4.0': + dependencies: + '@types/estree': 1.0.9 + estree-walker: 2.0.2 + picomatch: 4.0.5 + + '@shikijs/core@4.3.1': + dependencies: + '@shikijs/primitive': 4.3.1 + '@shikijs/types': 4.3.1 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.5 + hast-util-to-html: 9.0.5 + + '@shikijs/engine-javascript@4.3.1': + dependencies: + '@shikijs/types': 4.3.1 + '@shikijs/vscode-textmate': 10.0.2 + oniguruma-to-es: 4.3.6 + + '@shikijs/engine-oniguruma@4.3.1': + dependencies: + '@shikijs/types': 4.3.1 + '@shikijs/vscode-textmate': 10.0.2 + + '@shikijs/langs@4.3.1': + dependencies: + '@shikijs/types': 4.3.1 + + '@shikijs/primitive@4.3.1': + dependencies: + '@shikijs/types': 4.3.1 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.5 + + '@shikijs/themes@4.3.1': + dependencies: + '@shikijs/types': 4.3.1 + + '@shikijs/types@4.3.1': + dependencies: + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.5 + + '@shikijs/vscode-textmate@10.0.2': {} + + '@sindresorhus/merge-streams@4.0.0': {} + + '@tybys/wasm-util@0.10.3': + dependencies: + tslib: 2.8.1 + optional: true + + '@types/d3-array@3.2.2': {} + + '@types/d3-axis@3.0.6': + dependencies: + '@types/d3-selection': 3.0.11 + + '@types/d3-brush@3.0.6': + dependencies: + '@types/d3-selection': 3.0.11 + + '@types/d3-chord@3.0.6': {} + + '@types/d3-color@3.1.3': {} + + '@types/d3-contour@3.0.6': + dependencies: + '@types/d3-array': 3.2.2 + '@types/geojson': 7946.0.16 + + '@types/d3-delaunay@6.0.4': {} + + '@types/d3-dispatch@3.0.7': {} + + '@types/d3-drag@3.0.7': + dependencies: + '@types/d3-selection': 3.0.11 + + '@types/d3-dsv@3.0.7': {} + + '@types/d3-ease@3.0.2': {} + + '@types/d3-fetch@3.0.7': + dependencies: + '@types/d3-dsv': 3.0.7 + + '@types/d3-force@3.0.10': {} + + '@types/d3-format@3.0.4': {} + + '@types/d3-geo@3.1.0': + dependencies: + '@types/geojson': 7946.0.16 + + '@types/d3-hierarchy@3.1.7': {} + + '@types/d3-interpolate@3.0.4': + dependencies: + '@types/d3-color': 3.1.3 + + '@types/d3-path@3.1.1': {} + + '@types/d3-polygon@3.0.2': {} + + '@types/d3-quadtree@3.0.6': {} + + '@types/d3-random@3.0.4': {} + + '@types/d3-scale-chromatic@3.1.0': {} + + '@types/d3-scale@4.0.9': + dependencies: + '@types/d3-time': 3.0.4 + + '@types/d3-selection@3.0.11': {} + + '@types/d3-shape@3.1.8': + dependencies: + '@types/d3-path': 3.1.1 + + '@types/d3-time-format@4.0.3': {} + + '@types/d3-time@3.0.4': {} + + '@types/d3-timer@3.0.2': {} + + '@types/d3-transition@3.0.9': + dependencies: + '@types/d3-selection': 3.0.11 + + '@types/d3-zoom@3.0.8': + dependencies: + '@types/d3-interpolate': 3.0.4 + '@types/d3-selection': 3.0.11 + + '@types/d3@7.4.3': + dependencies: + '@types/d3-array': 3.2.2 + '@types/d3-axis': 3.0.6 + '@types/d3-brush': 3.0.6 + '@types/d3-chord': 3.0.6 + '@types/d3-color': 3.1.3 + '@types/d3-contour': 3.0.6 + '@types/d3-delaunay': 6.0.4 + '@types/d3-dispatch': 3.0.7 + '@types/d3-drag': 3.0.7 + '@types/d3-dsv': 3.0.7 + '@types/d3-ease': 3.0.2 + '@types/d3-fetch': 3.0.7 + '@types/d3-force': 3.0.10 + '@types/d3-format': 3.0.4 + '@types/d3-geo': 3.1.0 + '@types/d3-hierarchy': 3.1.7 + '@types/d3-interpolate': 3.0.4 + '@types/d3-path': 3.1.1 + '@types/d3-polygon': 3.0.2 + '@types/d3-quadtree': 3.0.6 + '@types/d3-random': 3.0.4 + '@types/d3-scale': 4.0.9 + '@types/d3-scale-chromatic': 3.1.0 + '@types/d3-selection': 3.0.11 + '@types/d3-shape': 3.1.8 + '@types/d3-time': 3.0.4 + '@types/d3-time-format': 4.0.3 + '@types/d3-timer': 3.0.2 + '@types/d3-transition': 3.0.9 + '@types/d3-zoom': 3.0.8 + + '@types/debug@4.1.13': + dependencies: + '@types/ms': 2.1.0 + + '@types/estree-jsx@1.0.5': + dependencies: + '@types/estree': 1.0.9 + + '@types/estree@1.0.9': {} + + '@types/geojson@7946.0.16': {} + + '@types/hast@3.0.5': + dependencies: + '@types/unist': 3.0.3 + + '@types/js-yaml@4.0.9': {} + + '@types/katex@0.16.8': {} + + '@types/mdast@4.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/mdx@2.0.14': {} + + '@types/ms@2.1.0': {} + + '@types/nlcst@2.0.3': + dependencies: + '@types/unist': 3.0.3 + + '@types/node@24.13.3': + dependencies: + undici-types: 7.18.2 + + '@types/sax@1.2.7': + dependencies: + '@types/node': 24.13.3 + + '@types/trusted-types@2.0.7': + optional: true + + '@types/unist@2.0.11': {} + + '@types/unist@3.0.3': {} + + '@ungap/structured-clone@1.3.3': {} + + '@upsetjs/venn.js@2.0.0': + optionalDependencies: + d3-selection: 3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) + + '@volar/kit@2.4.28(typescript@5.9.3)': + dependencies: + '@volar/language-service': 2.4.28 + '@volar/typescript': 2.4.28 + typesafe-path: 0.2.2 + typescript: 5.9.3 + vscode-languageserver-textdocument: 1.0.12 + vscode-uri: 3.1.0 + + '@volar/language-core@2.4.28': + dependencies: + '@volar/source-map': 2.4.28 + + '@volar/language-server@2.4.28': + dependencies: + '@volar/language-core': 2.4.28 + '@volar/language-service': 2.4.28 + '@volar/typescript': 2.4.28 + path-browserify: 1.0.1 + request-light: 0.7.0 + vscode-languageserver: 9.0.1 + vscode-languageserver-protocol: 3.18.2 + vscode-languageserver-textdocument: 1.0.12 + vscode-uri: 3.1.0 + + '@volar/language-service@2.4.28': + dependencies: + '@volar/language-core': 2.4.28 + vscode-languageserver-protocol: 3.18.2 + vscode-languageserver-textdocument: 1.0.12 + vscode-uri: 3.1.0 + + '@volar/source-map@2.4.28': {} + + '@volar/typescript@2.4.28': + dependencies: + '@volar/language-core': 2.4.28 + path-browserify: 1.0.1 + vscode-uri: 3.1.0 + + '@vscode/emmet-helper@2.11.0': + dependencies: + emmet: 2.4.11 + jsonc-parser: 2.3.1 + vscode-languageserver-textdocument: 1.0.12 + vscode-languageserver-types: 3.18.0 + vscode-uri: 3.1.0 + + '@vscode/l10n@0.0.18': {} + + acorn-jsx@5.3.2(acorn@8.17.0): + dependencies: + acorn: 8.17.0 + + acorn@8.17.0: {} + + ajv-draft-04@1.0.0(ajv@8.20.0): + optionalDependencies: + ajv: 8.20.0 + + ajv-i18n@4.2.0(ajv@8.20.0): + dependencies: + ajv: 8.20.0 + + ajv@8.20.0: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.1.4 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + + am-i-vibing@0.4.0: + dependencies: + process-ancestry: 0.1.0 + + ansi-regex@5.0.1: {} + + ansi-regex@6.2.2: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.2 + + arg@5.0.2: {} + + argparse@2.0.1: {} + + aria-query@5.3.2: {} + + array-iterate@2.0.1: {} + + array-timsort@1.0.3: {} + + astring@1.9.0: {} + + astro-expressive-code@0.44.1(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2)(@types/node@24.13.3)(yaml@2.9.0)): + dependencies: + astro: 7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2)(@types/node@24.13.3)(yaml@2.9.0) + rehype-expressive-code: 0.44.1 + url-extras: 0.1.0 + + astro-mermaid@2.1.0(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2)(@types/node@24.13.3)(yaml@2.9.0))(mermaid@11.16.0): + dependencies: + astro: 7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2)(@types/node@24.13.3)(yaml@2.9.0) + import-meta-resolve: 4.2.0 + mdast-util-to-string: 4.0.0 + mermaid: 11.16.0 + unist-util-visit: 5.1.0 + + astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2)(@types/node@24.13.3)(yaml@2.9.0): + dependencies: + '@astrojs/compiler-rs': 0.3.1(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2) + '@astrojs/internal-helpers': 0.10.1 + '@astrojs/markdown-satteri': 0.3.4 + '@astrojs/telemetry': 3.3.3 + '@capsizecss/unpack': 4.0.1 + '@clack/prompts': 1.7.0 + '@oslojs/encoding': 1.1.0 + '@rollup/pluginutils': 5.4.0 + am-i-vibing: 0.4.0 + aria-query: 5.3.2 + axobject-query: 4.1.0 + ci-info: 4.4.0 + clsx: 2.1.1 + common-ancestor-path: 2.0.0 + cookie: 2.0.1 + devalue: 5.8.2 + diff: 8.0.4 + dset: 3.1.4 + es-module-lexer: 2.3.1 + esbuild: 0.28.1 + flattie: 1.1.1 + fontace: 0.4.1 + get-tsconfig: 5.0.0-beta.4 + github-slugger: 2.0.0 + html-escaper: 3.0.3 + http-cache-semantics: 4.2.0 + js-yaml: 4.3.0 + jsonc-parser: 3.3.1 + magic-string: 0.30.21 + magicast: 0.5.3 + mrmime: 2.0.1 + neotraverse: 1.0.1 + obug: 2.1.4 + p-limit: 7.3.1 + p-queue: 9.3.2 + package-manager-detector: 1.8.0 + piccolore: 0.1.3 + picomatch: 4.0.5 + semver: 7.8.5 + shiki: 4.3.1 + smol-toml: 1.7.0 + svgo: 4.0.2 + tinyclip: 0.1.15 + tinyexec: 1.2.4 + tinyglobby: 0.2.17 + ultrahtml: 1.7.0 + unifont: 0.7.4 + unstorage: 1.17.5 + vite: 8.1.5(@types/node@24.13.3)(esbuild@0.28.1)(yaml@2.9.0) + vitefu: 1.1.3(vite@8.1.5(@types/node@24.13.3)(esbuild@0.28.1)(yaml@2.9.0)) + xxhash-wasm: 1.1.0 + yargs-parser: 22.0.0 + zod: 4.4.3 + optionalDependencies: + '@astrojs/markdown-remark': 7.2.1 + sharp: 0.35.3(@types/node@24.13.3) + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@emnapi/core' + - '@emnapi/runtime' + - '@netlify/blobs' + - '@planetscale/database' + - '@types/node' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - '@vitejs/devtools' + - aws4fetch + - db0 + - idb-keyval + - ioredis + - jiti + - less + - rollup + - sass + - sass-embedded + - stylus + - sugarss + - terser + - tsx + - uploadthing + - yaml + + axe-core@4.12.1: {} + + axobject-query@4.1.0: {} + + bail@2.0.2: {} + + bcp-47-match@2.0.3: {} + + bcp-47@2.1.1: + dependencies: + is-alphabetical: 2.0.1 + is-alphanumerical: 2.0.1 + is-decimal: 2.0.1 + + boolbase@1.0.0: {} + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + ccount@2.0.1: {} + + chalk-template@1.1.2: + dependencies: + chalk: 5.6.2 + + chalk@5.6.2: {} + + character-entities-html4@2.1.0: {} + + character-entities-legacy@3.0.0: {} + + character-entities@2.0.2: {} + + character-reference-invalid@2.0.1: {} + + chokidar@4.0.3: + dependencies: + readdirp: 4.1.2 + + chokidar@5.0.0: + dependencies: + readdirp: 5.0.0 + + ci-info@4.4.0: {} + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + clsx@2.1.1: {} + + collapse-white-space@2.1.0: {} + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + comma-separated-tokens@2.0.3: {} + + commander@11.1.0: {} + + commander@14.0.3: {} + + commander@7.2.0: {} + + commander@8.3.0: {} + + comment-json@5.0.0: + dependencies: + array-timsort: 1.0.3 + esprima: 4.0.1 + + common-ancestor-path@2.0.0: {} + + cookie-es@1.2.3: {} + + cookie@2.0.1: {} + + cose-base@1.0.3: + dependencies: + layout-base: 1.0.2 + + cose-base@2.2.0: + dependencies: + layout-base: 2.0.1 + + crossws@0.3.5: + dependencies: + uncrypto: 0.1.3 + + cspell-config-lib@10.0.1: + dependencies: + '@cspell/cspell-types': 10.0.1 + comment-json: 5.0.0 + smol-toml: 1.7.0 + yaml: 2.9.0 + + cspell-dictionary@10.0.1: + dependencies: + '@cspell/cspell-performance-monitor': 10.0.1 + '@cspell/cspell-pipe': 10.0.1 + '@cspell/cspell-types': 10.0.1 + cspell-trie-lib: 10.0.1(@cspell/cspell-types@10.0.1) + fast-equals: 6.0.2 + + cspell-gitignore@10.0.1: + dependencies: + '@cspell/url': 10.0.1 + cspell-glob: 10.0.1 + cspell-io: 10.0.1 + + cspell-glob@10.0.1: + dependencies: + '@cspell/url': 10.0.1 + picomatch: 4.0.5 + + cspell-grammar@10.0.1: + dependencies: + '@cspell/cspell-pipe': 10.0.1 + '@cspell/cspell-types': 10.0.1 + + cspell-io@10.0.1: + dependencies: + '@cspell/cspell-service-bus': 10.0.1 + '@cspell/url': 10.0.1 + + cspell-lib@10.0.1: + dependencies: + '@cspell/cspell-bundled-dicts': 10.0.1 + '@cspell/cspell-performance-monitor': 10.0.1 + '@cspell/cspell-pipe': 10.0.1 + '@cspell/cspell-resolver': 10.0.1 + '@cspell/cspell-types': 10.0.1 + '@cspell/dynamic-import': 10.0.1 + '@cspell/filetypes': 10.0.1 + '@cspell/rpc': 10.0.1 + '@cspell/strong-weak-map': 10.0.1 + '@cspell/url': 10.0.1 + cspell-config-lib: 10.0.1 + cspell-dictionary: 10.0.1 + cspell-glob: 10.0.1 + cspell-grammar: 10.0.1 + cspell-io: 10.0.1 + cspell-trie-lib: 10.0.1(@cspell/cspell-types@10.0.1) + env-paths: 4.0.0 + gensequence: 8.0.8 + import-fresh: 4.0.0 + resolve-from: 5.0.0 + vscode-languageserver-textdocument: 1.0.12 + vscode-uri: 3.1.0 + xdg-basedir: 5.1.0 + + cspell-trie-lib@10.0.1(@cspell/cspell-types@10.0.1): + dependencies: + '@cspell/cspell-types': 10.0.1 + + cspell@10.0.1: + dependencies: + '@cspell/cspell-json-reporter': 10.0.1 + '@cspell/cspell-performance-monitor': 10.0.1 + '@cspell/cspell-pipe': 10.0.1 + '@cspell/cspell-types': 10.0.1 + '@cspell/cspell-worker': 10.0.1 + '@cspell/dynamic-import': 10.0.1 + '@cspell/url': 10.0.1 + ansi-regex: 6.2.2 + chalk: 5.6.2 + chalk-template: 1.1.2 + commander: 14.0.3 + cspell-config-lib: 10.0.1 + cspell-dictionary: 10.0.1 + cspell-gitignore: 10.0.1 + cspell-glob: 10.0.1 + cspell-io: 10.0.1 + cspell-lib: 10.0.1 + fast-json-stable-stringify: 2.1.0 + flatted: 3.4.2 + semver: 7.8.5 + tinyglobby: 0.2.17 + + css-select@5.2.2: + dependencies: + boolbase: 1.0.0 + css-what: 6.2.2 + domhandler: 5.0.3 + domutils: 3.2.2 + nth-check: 2.1.1 + + css-selector-parser@3.3.0: {} + + css-tree@2.2.1: + dependencies: + mdn-data: 2.0.28 + source-map-js: 1.2.1 + + css-tree@3.2.1: + dependencies: + mdn-data: 2.27.1 + source-map-js: 1.2.1 + + css-what@6.2.2: {} + + cssesc@3.0.0: {} + + csso@5.0.5: + dependencies: + css-tree: 2.2.1 + + cytoscape-cose-bilkent@4.1.0(cytoscape@3.34.0): + dependencies: + cose-base: 1.0.3 + cytoscape: 3.34.0 + + cytoscape-fcose@2.2.0(cytoscape@3.34.0): + dependencies: + cose-base: 2.2.0 + cytoscape: 3.34.0 + + cytoscape@3.34.0: {} + + d3-array@2.12.1: + dependencies: + internmap: 1.0.1 + + d3-array@3.2.4: + dependencies: + internmap: 2.0.3 + + d3-axis@3.0.0: {} + + d3-brush@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) + + d3-chord@3.0.1: + dependencies: + d3-path: 3.1.0 + + d3-color@3.1.0: {} + + d3-contour@4.0.2: + dependencies: + d3-array: 3.2.4 + + d3-delaunay@6.0.4: + dependencies: + delaunator: 5.1.0 + + d3-dispatch@3.0.1: {} + + d3-drag@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-selection: 3.0.0 + + d3-dsv@3.0.1: + dependencies: + commander: 7.2.0 + iconv-lite: 0.6.3 + rw: 1.3.3 + + d3-ease@3.0.1: {} + + d3-fetch@3.0.1: + dependencies: + d3-dsv: 3.0.1 + + d3-force@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-quadtree: 3.0.1 + d3-timer: 3.0.1 + + d3-format@3.1.2: {} + + d3-geo@3.1.1: + dependencies: + d3-array: 3.2.4 + + d3-hierarchy@3.1.2: {} + + d3-interpolate@3.0.1: + dependencies: + d3-color: 3.1.0 + + d3-path@1.0.9: {} + + d3-path@3.1.0: {} + + d3-polygon@3.0.1: {} + + d3-quadtree@3.0.1: {} + + d3-random@3.0.1: {} + + d3-sankey@0.12.3: + dependencies: + d3-array: 2.12.1 + d3-shape: 1.3.7 + + d3-scale-chromatic@3.1.0: + dependencies: + d3-color: 3.1.0 + d3-interpolate: 3.0.1 + + d3-scale@4.0.2: + dependencies: + d3-array: 3.2.4 + d3-format: 3.1.2 + d3-interpolate: 3.0.1 + d3-time: 3.1.0 + d3-time-format: 4.1.0 + + d3-selection@3.0.0: {} + + d3-shape@1.3.7: + dependencies: + d3-path: 1.0.9 + + d3-shape@3.2.0: + dependencies: + d3-path: 3.1.0 + + d3-time-format@4.1.0: + dependencies: + d3-time: 3.1.0 + + d3-time@3.1.0: + dependencies: + d3-array: 3.2.4 + + d3-timer@3.0.1: {} + + d3-transition@3.0.1(d3-selection@3.0.0): + dependencies: + d3-color: 3.1.0 + d3-dispatch: 3.0.1 + d3-ease: 3.0.1 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-timer: 3.0.1 + + d3-zoom@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) + + d3@7.9.0: + dependencies: + d3-array: 3.2.4 + d3-axis: 3.0.0 + d3-brush: 3.0.0 + d3-chord: 3.0.1 + d3-color: 3.1.0 + d3-contour: 4.0.2 + d3-delaunay: 6.0.4 + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-dsv: 3.0.1 + d3-ease: 3.0.1 + d3-fetch: 3.0.1 + d3-force: 3.0.0 + d3-format: 3.1.2 + d3-geo: 3.1.1 + d3-hierarchy: 3.1.2 + d3-interpolate: 3.0.1 + d3-path: 3.1.0 + d3-polygon: 3.0.1 + d3-quadtree: 3.0.1 + d3-random: 3.0.1 + d3-scale: 4.0.2 + d3-scale-chromatic: 3.1.0 + d3-selection: 3.0.0 + d3-shape: 3.2.0 + d3-time: 3.1.0 + d3-time-format: 4.1.0 + d3-timer: 3.0.1 + d3-transition: 3.0.1(d3-selection@3.0.0) + d3-zoom: 3.0.0 + + dagre-d3-es@7.0.14: + dependencies: + d3: 7.9.0 + lodash-es: 4.18.1 + + dayjs@1.11.21: {} + + debug@4.4.3: + dependencies: + ms: 2.1.3 + + decode-named-character-reference@1.3.0: + dependencies: + character-entities: 2.0.2 + + defu@6.1.7: {} + + delaunator@5.1.0: + dependencies: + robust-predicates: 3.0.3 + + dequal@2.0.3: {} + + destr@2.0.5: {} + + detect-libc@2.1.2: {} + + devalue@5.8.2: {} + + devlop@1.1.0: + dependencies: + dequal: 2.0.3 + + diff@8.0.4: {} + + direction@2.0.1: {} + + dom-serializer@2.0.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + + domelementtype@2.3.0: {} + + domhandler@5.0.3: + dependencies: + domelementtype: 2.3.0 + + dompurify@3.4.12: + optionalDependencies: + '@types/trusted-types': 2.0.7 + + domutils@3.2.2: + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + + dset@3.1.4: {} + + emmet@2.4.11: + dependencies: + '@emmetio/abbreviation': 2.3.3 + '@emmetio/css-abbreviation': 2.1.8 + + emoji-regex@8.0.0: {} + + entities@4.5.0: {} + + entities@6.0.1: {} + + env-paths@4.0.0: + dependencies: + is-safe-filename: 0.1.1 + + es-module-lexer@2.3.1: {} + + es-toolkit@1.49.0: {} + + esast-util-from-estree@2.0.0: + dependencies: + '@types/estree-jsx': 1.0.5 + devlop: 1.1.0 + estree-util-visit: 2.0.0 + unist-util-position-from-estree: 2.0.0 + + esast-util-from-js@2.0.1: + dependencies: + '@types/estree-jsx': 1.0.5 + acorn: 8.17.0 + esast-util-from-estree: 2.0.0 + vfile-message: 4.0.3 + + esbuild@0.28.1: + optionalDependencies: + '@esbuild/aix-ppc64': 0.28.1 + '@esbuild/android-arm': 0.28.1 + '@esbuild/android-arm64': 0.28.1 + '@esbuild/android-x64': 0.28.1 + '@esbuild/darwin-arm64': 0.28.1 + '@esbuild/darwin-x64': 0.28.1 + '@esbuild/freebsd-arm64': 0.28.1 + '@esbuild/freebsd-x64': 0.28.1 + '@esbuild/linux-arm': 0.28.1 + '@esbuild/linux-arm64': 0.28.1 + '@esbuild/linux-ia32': 0.28.1 + '@esbuild/linux-loong64': 0.28.1 + '@esbuild/linux-mips64el': 0.28.1 + '@esbuild/linux-ppc64': 0.28.1 + '@esbuild/linux-riscv64': 0.28.1 + '@esbuild/linux-s390x': 0.28.1 + '@esbuild/linux-x64': 0.28.1 + '@esbuild/netbsd-arm64': 0.28.1 + '@esbuild/netbsd-x64': 0.28.1 + '@esbuild/openbsd-arm64': 0.28.1 + '@esbuild/openbsd-x64': 0.28.1 + '@esbuild/openharmony-arm64': 0.28.1 + '@esbuild/sunos-x64': 0.28.1 + '@esbuild/win32-arm64': 0.28.1 + '@esbuild/win32-ia32': 0.28.1 + '@esbuild/win32-x64': 0.28.1 + + escalade@3.2.0: {} + + escape-string-regexp@5.0.0: {} + + esprima@4.0.1: {} + + estree-util-attach-comments@3.0.0: + dependencies: + '@types/estree': 1.0.9 + + estree-util-build-jsx@3.0.1: + dependencies: + '@types/estree-jsx': 1.0.5 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + estree-walker: 3.0.3 + + estree-util-is-identifier-name@3.0.0: {} + + estree-util-scope@1.0.0: + dependencies: + '@types/estree': 1.0.9 + devlop: 1.1.0 + + estree-util-to-js@2.0.0: + dependencies: + '@types/estree-jsx': 1.0.5 + astring: 1.9.0 + source-map: 0.7.6 + + estree-util-visit@2.0.0: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/unist': 3.0.3 + + estree-walker@2.0.2: {} + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.9 + + eventemitter3@5.0.4: {} + + expressive-code@0.44.1: + dependencies: + '@expressive-code/core': 0.44.1 + '@expressive-code/plugin-frames': 0.44.1 + '@expressive-code/plugin-shiki': 0.44.1 + '@expressive-code/plugin-text-markers': 0.44.1 + + extend@3.0.2: {} + + fast-deep-equal@3.1.3: {} + + fast-equals@6.0.2: {} + + fast-glob@3.3.3: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-json-stable-stringify@2.1.0: {} + + fast-string-truncated-width@3.0.3: {} + + fast-string-width@3.0.2: + dependencies: + fast-string-truncated-width: 3.0.3 + + fast-uri@3.1.4: {} + + fast-wrap-ansi@0.2.2: + dependencies: + fast-string-width: 3.0.2 + + fastq@1.20.1: + dependencies: + reusify: 1.1.0 + + fdir@6.5.0(picomatch@4.0.5): + optionalDependencies: + picomatch: 4.0.5 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + flatted@3.4.2: {} + + flattie@1.1.1: {} + + fontace@0.4.1: + dependencies: + fontkitten: 1.0.3 + + fontkitten@1.0.3: + dependencies: + tiny-inflate: 1.0.3 + + fsevents@2.3.2: + optional: true + + fsevents@2.3.3: + optional: true + + gensequence@8.0.8: {} + + get-caller-file@2.0.5: {} + + get-east-asian-width@1.6.0: {} + + get-tsconfig@5.0.0-beta.4: + dependencies: + resolve-pkg-maps: 1.0.0 + + github-slugger@2.0.0: {} + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + global-directory@5.0.0: + dependencies: + ini: 6.0.0 + + globby@16.2.1: + dependencies: + '@sindresorhus/merge-streams': 4.0.0 + fast-glob: 3.3.3 + ignore: 7.0.6 + is-path-inside: 4.0.0 + slash: 5.1.0 + unicorn-magic: 0.4.0 + + h3@1.15.11: + dependencies: + cookie-es: 1.2.3 + crossws: 0.3.5 + defu: 6.1.7 + destr: 2.0.5 + iron-webcrypto: 1.2.1 + node-mock-http: 1.0.4 + radix3: 1.1.2 + ufo: 1.6.4 + uncrypto: 0.1.3 + + hachure-fill@0.5.2: {} + + hast-util-embedded@3.0.0: + dependencies: + '@types/hast': 3.0.5 + hast-util-is-element: 3.0.0 + + hast-util-format@1.1.0: + dependencies: + '@types/hast': 3.0.5 + hast-util-embedded: 3.0.0 + hast-util-minify-whitespace: 1.0.1 + hast-util-phrasing: 3.0.1 + hast-util-whitespace: 3.0.0 + html-whitespace-sensitive-tag-names: 3.0.1 + unist-util-visit-parents: 6.0.2 + + hast-util-from-html@2.0.3: + dependencies: + '@types/hast': 3.0.5 + devlop: 1.1.0 + hast-util-from-parse5: 8.0.3 + parse5: 7.3.0 + vfile: 6.0.3 + vfile-message: 4.0.3 + + hast-util-from-parse5@8.0.3: + dependencies: + '@types/hast': 3.0.5 + '@types/unist': 3.0.3 + devlop: 1.1.0 + hastscript: 9.0.1 + property-information: 7.2.0 + vfile: 6.0.3 + vfile-location: 5.0.3 + web-namespaces: 2.0.1 + + hast-util-has-property@3.0.0: + dependencies: + '@types/hast': 3.0.5 + + hast-util-is-body-ok-link@3.0.1: + dependencies: + '@types/hast': 3.0.5 + + hast-util-is-element@3.0.0: + dependencies: + '@types/hast': 3.0.5 + + hast-util-minify-whitespace@1.0.1: + dependencies: + '@types/hast': 3.0.5 + hast-util-embedded: 3.0.0 + hast-util-is-element: 3.0.0 + hast-util-whitespace: 3.0.0 + unist-util-is: 6.0.1 + + hast-util-parse-selector@4.0.0: + dependencies: + '@types/hast': 3.0.5 + + hast-util-phrasing@3.0.1: + dependencies: + '@types/hast': 3.0.5 + hast-util-embedded: 3.0.0 + hast-util-has-property: 3.0.0 + hast-util-is-body-ok-link: 3.0.1 + hast-util-is-element: 3.0.0 + + hast-util-raw@9.1.0: + dependencies: + '@types/hast': 3.0.5 + '@types/unist': 3.0.3 + '@ungap/structured-clone': 1.3.3 + hast-util-from-parse5: 8.0.3 + hast-util-to-parse5: 8.0.1 + html-void-elements: 3.0.0 + mdast-util-to-hast: 13.2.1 + parse5: 7.3.0 + unist-util-position: 5.0.0 + unist-util-visit: 5.1.0 + vfile: 6.0.3 + web-namespaces: 2.0.1 + zwitch: 2.0.4 + + hast-util-select@6.0.4: + dependencies: + '@types/hast': 3.0.5 + '@types/unist': 3.0.3 + bcp-47-match: 2.0.3 + comma-separated-tokens: 2.0.3 + css-selector-parser: 3.3.0 + devlop: 1.1.0 + direction: 2.0.1 + hast-util-has-property: 3.0.0 + hast-util-to-string: 3.0.1 + hast-util-whitespace: 3.0.0 + nth-check: 2.1.1 + property-information: 7.2.0 + space-separated-tokens: 2.0.2 + unist-util-visit: 5.1.0 + zwitch: 2.0.4 + + hast-util-to-estree@3.1.3: + dependencies: + '@types/estree': 1.0.9 + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.5 + comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + estree-util-attach-comments: 3.0.0 + estree-util-is-identifier-name: 3.0.0 + hast-util-whitespace: 3.0.0 + mdast-util-mdx-expression: 2.0.1 + mdast-util-mdx-jsx: 3.2.0 + mdast-util-mdxjs-esm: 2.0.1 + property-information: 7.2.0 + space-separated-tokens: 2.0.2 + style-to-js: 1.1.21 + unist-util-position: 5.0.0 + zwitch: 2.0.4 + transitivePeerDependencies: + - supports-color + + hast-util-to-html@9.0.5: + dependencies: + '@types/hast': 3.0.5 + '@types/unist': 3.0.3 + ccount: 2.0.1 + comma-separated-tokens: 2.0.3 + hast-util-whitespace: 3.0.0 + html-void-elements: 3.0.0 + mdast-util-to-hast: 13.2.1 + property-information: 7.2.0 + space-separated-tokens: 2.0.2 + stringify-entities: 4.0.4 + zwitch: 2.0.4 + + hast-util-to-jsx-runtime@2.3.6: + dependencies: + '@types/estree': 1.0.9 + '@types/hast': 3.0.5 + '@types/unist': 3.0.3 + comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + hast-util-whitespace: 3.0.0 + mdast-util-mdx-expression: 2.0.1 + mdast-util-mdx-jsx: 3.2.0 + mdast-util-mdxjs-esm: 2.0.1 + property-information: 7.2.0 + space-separated-tokens: 2.0.2 + style-to-js: 1.1.21 + unist-util-position: 5.0.0 + vfile-message: 4.0.3 + transitivePeerDependencies: + - supports-color + + hast-util-to-parse5@8.0.1: + dependencies: + '@types/hast': 3.0.5 + comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + property-information: 7.2.0 + space-separated-tokens: 2.0.2 + web-namespaces: 2.0.1 + zwitch: 2.0.4 + + hast-util-to-string@3.0.1: + dependencies: + '@types/hast': 3.0.5 + + hast-util-to-text@4.0.2: + dependencies: + '@types/hast': 3.0.5 + '@types/unist': 3.0.3 + hast-util-is-element: 3.0.0 + unist-util-find-after: 5.0.0 + + hast-util-whitespace@3.0.0: + dependencies: + '@types/hast': 3.0.5 + + hastscript@9.0.1: + dependencies: + '@types/hast': 3.0.5 + comma-separated-tokens: 2.0.3 + hast-util-parse-selector: 4.0.0 + property-information: 7.2.0 + space-separated-tokens: 2.0.2 + + html-escaper@3.0.3: {} + + html-void-elements@3.0.0: {} + + html-whitespace-sensitive-tag-names@3.0.1: {} + + http-cache-semantics@4.2.0: {} + + i18next@26.3.6(typescript@5.9.3): + optionalDependencies: + typescript: 5.9.3 + + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + + ignore@7.0.6: {} + + import-fresh@4.0.0: {} + + import-meta-resolve@4.2.0: {} + + ini@6.0.0: {} + + inline-style-parser@0.2.7: {} + + internmap@1.0.1: {} + + internmap@2.0.3: {} + + iron-webcrypto@1.2.1: {} + + is-alphabetical@2.0.1: {} + + is-alphanumerical@2.0.1: + dependencies: + is-alphabetical: 2.0.1 + is-decimal: 2.0.1 + + is-decimal@2.0.1: {} + + is-docker@4.0.0: {} + + is-extglob@2.1.1: {} + + is-fullwidth-code-point@3.0.0: {} + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-hexadecimal@2.0.1: {} + + is-number@7.0.0: {} + + is-path-inside@4.0.0: {} + + is-plain-obj@4.1.0: {} + + is-safe-filename@0.1.1: {} + + js-yaml@4.3.0: + dependencies: + argparse: 2.0.1 + + js-yaml@5.2.1: + dependencies: + argparse: 2.0.1 + + json-schema-traverse@1.0.0: {} + + jsonc-parser@2.3.1: {} + + jsonc-parser@3.3.1: {} + + jsonpointer@5.0.1: {} + + katex@0.16.47: + dependencies: + commander: 8.3.0 + + khroma@2.1.0: {} + + kleur@4.1.5: {} + + klona@2.0.6: {} + + layout-base@1.0.2: {} + + layout-base@2.0.1: {} + + lightningcss-android-arm64@1.33.0: + optional: true + + lightningcss-darwin-arm64@1.33.0: + optional: true + + lightningcss-darwin-x64@1.33.0: + optional: true + + lightningcss-freebsd-x64@1.33.0: + optional: true + + lightningcss-linux-arm-gnueabihf@1.33.0: + optional: true + + lightningcss-linux-arm64-gnu@1.33.0: + optional: true + + lightningcss-linux-arm64-musl@1.33.0: + optional: true + + lightningcss-linux-x64-gnu@1.33.0: + optional: true + + lightningcss-linux-x64-musl@1.33.0: + optional: true + + lightningcss-win32-arm64-msvc@1.33.0: + optional: true + + lightningcss-win32-x64-msvc@1.33.0: + optional: true + + lightningcss@1.33.0: + dependencies: + detect-libc: 2.1.2 + optionalDependencies: + lightningcss-android-arm64: 1.33.0 + lightningcss-darwin-arm64: 1.33.0 + lightningcss-darwin-x64: 1.33.0 + lightningcss-freebsd-x64: 1.33.0 + lightningcss-linux-arm-gnueabihf: 1.33.0 + lightningcss-linux-arm64-gnu: 1.33.0 + lightningcss-linux-arm64-musl: 1.33.0 + lightningcss-linux-x64-gnu: 1.33.0 + lightningcss-linux-x64-musl: 1.33.0 + lightningcss-win32-arm64-msvc: 1.33.0 + lightningcss-win32-x64-msvc: 1.33.0 + + linkify-it@5.0.2: + dependencies: + uc.micro: 2.1.0 + + lodash-es@4.18.1: {} + + longest-streak@3.1.0: {} + + lru-cache@11.5.2: {} + + magic-string@0.30.21: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + + magicast@0.5.3: + dependencies: + '@babel/parser': 7.29.7 + '@babel/types': 7.29.7 + source-map-js: 1.2.1 + + markdown-extensions@2.0.0: {} + + markdown-it@14.3.0: + dependencies: + argparse: 2.0.1 + entities: 4.5.0 + linkify-it: 5.0.2 + mdurl: 2.0.0 + punycode.js: 2.3.1 + uc.micro: 2.1.0 + + markdown-table@3.0.4: {} + + markdownlint-cli2-formatter-default@0.0.6(markdownlint-cli2@0.23.1): + dependencies: + markdownlint-cli2: 0.23.1 + + markdownlint-cli2@0.23.1: + dependencies: + globby: 16.2.1 + js-yaml: 5.2.1 + jsonc-parser: 3.3.1 + jsonpointer: 5.0.1 + markdown-it: 14.3.0 + markdownlint: 0.41.1 + markdownlint-cli2-formatter-default: 0.0.6(markdownlint-cli2@0.23.1) + micromatch: 4.0.8 + smol-toml: 1.7.0 + transitivePeerDependencies: + - supports-color + + markdownlint@0.41.1: + dependencies: + micromark: 4.0.2 + micromark-core-commonmark: 2.0.3 + micromark-extension-directive: 4.0.0 + micromark-extension-gfm-autolink-literal: 2.1.0 + micromark-extension-gfm-footnote: 2.1.0 + micromark-extension-gfm-table: 2.1.1 + micromark-extension-math: 3.1.0 + micromark-util-types: 2.0.2 + string-width: 8.2.1 + transitivePeerDependencies: + - supports-color + + marked@16.4.2: {} + + mdast-util-definitions@6.0.0: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + unist-util-visit: 5.1.0 + + mdast-util-directive@3.1.0: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.3 + mdast-util-to-markdown: 2.1.2 + parse-entities: 4.0.2 + stringify-entities: 4.0.4 + unist-util-visit-parents: 6.0.2 + transitivePeerDependencies: + - supports-color + + mdast-util-find-and-replace@3.0.2: + dependencies: + '@types/mdast': 4.0.4 + escape-string-regexp: 5.0.0 + unist-util-is: 6.0.1 + unist-util-visit-parents: 6.0.2 + + mdast-util-from-markdown@2.0.3: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + decode-named-character-reference: 1.3.0 + devlop: 1.1.0 + mdast-util-to-string: 4.0.0 + micromark: 4.0.2 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-decode-string: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + unist-util-stringify-position: 4.0.0 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-autolink-literal@2.0.1: + dependencies: + '@types/mdast': 4.0.4 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-find-and-replace: 3.0.2 + micromark-util-character: 2.1.1 + + mdast-util-gfm-footnote@2.1.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.3 + mdast-util-to-markdown: 2.1.2 + micromark-util-normalize-identifier: 2.0.1 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-strikethrough@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.0.3 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-table@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + markdown-table: 3.0.4 + mdast-util-from-markdown: 2.0.3 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-task-list-item@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.3 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm@3.1.0: + dependencies: + mdast-util-from-markdown: 2.0.3 + mdast-util-gfm-autolink-literal: 2.0.1 + mdast-util-gfm-footnote: 2.1.0 + mdast-util-gfm-strikethrough: 2.0.0 + mdast-util-gfm-table: 2.0.0 + mdast-util-gfm-task-list-item: 2.0.0 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-mdx-expression@2.0.1: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.5 + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.3 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-mdx-jsx@3.2.0: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.5 + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.3 + mdast-util-to-markdown: 2.1.2 + parse-entities: 4.0.2 + stringify-entities: 4.0.4 + unist-util-stringify-position: 4.0.0 + vfile-message: 4.0.3 + transitivePeerDependencies: + - supports-color + + mdast-util-mdx@3.0.0: + dependencies: + mdast-util-from-markdown: 2.0.3 + mdast-util-mdx-expression: 2.0.1 + mdast-util-mdx-jsx: 3.2.0 + mdast-util-mdxjs-esm: 2.0.1 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-mdxjs-esm@2.0.1: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.5 + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.3 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-phrasing@4.1.0: + dependencies: + '@types/mdast': 4.0.4 + unist-util-is: 6.0.1 + + mdast-util-to-hast@13.2.1: + dependencies: + '@types/hast': 3.0.5 + '@types/mdast': 4.0.4 + '@ungap/structured-clone': 1.3.3 + devlop: 1.1.0 + micromark-util-sanitize-uri: 2.0.1 + trim-lines: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit: 5.1.0 + vfile: 6.0.3 + + mdast-util-to-markdown@2.1.2: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + longest-streak: 3.1.0 + mdast-util-phrasing: 4.1.0 + mdast-util-to-string: 4.0.0 + micromark-util-classify-character: 2.0.1 + micromark-util-decode-string: 2.0.1 + unist-util-visit: 5.1.0 + zwitch: 2.0.4 + + mdast-util-to-string@4.0.0: + dependencies: + '@types/mdast': 4.0.4 + + mdn-data@2.0.28: {} + + mdn-data@2.27.1: {} + + mdurl@2.0.0: {} + + merge2@1.4.1: {} + + mermaid@11.16.0: + dependencies: + '@braintree/sanitize-url': 7.1.2 + '@iconify/utils': 3.1.4 + '@mermaid-js/parser': 1.2.0 + '@types/d3': 7.4.3 + '@upsetjs/venn.js': 2.0.0 + cytoscape: 3.34.0 + cytoscape-cose-bilkent: 4.1.0(cytoscape@3.34.0) + cytoscape-fcose: 2.2.0(cytoscape@3.34.0) + d3: 7.9.0 + d3-sankey: 0.12.3 + dagre-d3-es: 7.0.14 + dayjs: 1.11.21 + dompurify: 3.4.12 + es-toolkit: 1.49.0 + katex: 0.16.47 + khroma: 2.1.0 + marked: 16.4.2 + roughjs: 4.6.6 + stylis: 4.4.0 + ts-dedent: 2.3.0 + uuid: 14.0.1 + + micromark-core-commonmark@2.0.3: + dependencies: + decode-named-character-reference: 1.3.0 + devlop: 1.1.0 + micromark-factory-destination: 2.0.1 + micromark-factory-label: 2.0.1 + micromark-factory-space: 2.0.1 + micromark-factory-title: 2.0.1 + micromark-factory-whitespace: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-classify-character: 2.0.1 + micromark-util-html-tag-name: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-subtokenize: 2.1.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-directive@4.0.0: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-factory-whitespace: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + parse-entities: 4.0.2 + + micromark-extension-gfm-autolink-literal@2.1.0: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-footnote@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-core-commonmark: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-strikethrough@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.1 + micromark-util-classify-character: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-table@2.1.1: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-tagfilter@2.0.0: + dependencies: + micromark-util-types: 2.0.2 + + micromark-extension-gfm-task-list-item@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm@3.0.0: + dependencies: + micromark-extension-gfm-autolink-literal: 2.1.0 + micromark-extension-gfm-footnote: 2.1.0 + micromark-extension-gfm-strikethrough: 2.1.0 + micromark-extension-gfm-table: 2.1.1 + micromark-extension-gfm-tagfilter: 2.0.0 + micromark-extension-gfm-task-list-item: 2.1.0 + micromark-util-combine-extensions: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-math@3.1.0: + dependencies: + '@types/katex': 0.16.8 + devlop: 1.1.0 + katex: 0.16.47 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-mdx-expression@3.0.1: + dependencies: + '@types/estree': 1.0.9 + devlop: 1.1.0 + micromark-factory-mdx-expression: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-events-to-acorn: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-mdx-jsx@3.0.2: + dependencies: + '@types/estree': 1.0.9 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + micromark-factory-mdx-expression: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-events-to-acorn: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + vfile-message: 4.0.3 + + micromark-extension-mdx-md@2.0.0: + dependencies: + micromark-util-types: 2.0.2 + + micromark-extension-mdxjs-esm@3.0.0: + dependencies: + '@types/estree': 1.0.9 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.3 + micromark-util-character: 2.1.1 + micromark-util-events-to-acorn: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + unist-util-position-from-estree: 2.0.0 + vfile-message: 4.0.3 + + micromark-extension-mdxjs@3.0.0: + dependencies: + acorn: 8.17.0 + acorn-jsx: 5.3.2(acorn@8.17.0) + micromark-extension-mdx-expression: 3.0.1 + micromark-extension-mdx-jsx: 3.0.2 + micromark-extension-mdx-md: 2.0.0 + micromark-extension-mdxjs-esm: 3.0.0 + micromark-util-combine-extensions: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-destination@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-label@2.0.1: + dependencies: + devlop: 1.1.0 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-mdx-expression@2.0.3: + dependencies: + '@types/estree': 1.0.9 + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-events-to-acorn: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + unist-util-position-from-estree: 2.0.0 + vfile-message: 4.0.3 + + micromark-factory-space@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-types: 2.0.2 + + micromark-factory-title@2.0.1: + dependencies: + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-whitespace@2.0.1: + dependencies: + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-character@2.1.1: + dependencies: + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-chunked@2.0.1: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-classify-character@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-combine-extensions@2.0.1: + dependencies: + micromark-util-chunked: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-decode-numeric-character-reference@2.0.2: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-decode-string@2.0.1: + dependencies: + decode-named-character-reference: 1.3.0 + micromark-util-character: 2.1.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-symbol: 2.0.1 + + micromark-util-encode@2.0.1: {} + + micromark-util-events-to-acorn@2.0.3: + dependencies: + '@types/estree': 1.0.9 + '@types/unist': 3.0.3 + devlop: 1.1.0 + estree-util-visit: 2.0.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + vfile-message: 4.0.3 + + micromark-util-html-tag-name@2.0.1: {} + + micromark-util-normalize-identifier@2.0.1: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-resolve-all@2.0.1: + dependencies: + micromark-util-types: 2.0.2 + + micromark-util-sanitize-uri@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-encode: 2.0.1 + micromark-util-symbol: 2.0.1 + + micromark-util-subtokenize@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-symbol@2.0.1: {} + + micromark-util-types@2.0.2: {} + + micromark@4.0.2: + dependencies: + '@types/debug': 4.1.13 + debug: 4.4.3 + decode-named-character-reference: 1.3.0 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-combine-extensions: 2.0.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-encode: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-subtokenize: 2.1.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + transitivePeerDependencies: + - supports-color + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.2 + + mrmime@2.0.1: {} + + ms@2.1.3: {} + + muggle-string@0.4.1: {} + + nanoid@3.3.16: {} + + neotraverse@1.0.1: {} + + nlcst-to-string@4.0.0: + dependencies: + '@types/nlcst': 2.0.3 + + node-fetch-native@1.6.7: {} + + node-mock-http@1.0.4: {} + + normalize-path@3.0.0: {} + + nth-check@2.1.1: + dependencies: + boolbase: 1.0.0 + + obug@2.1.4: {} + + ofetch@1.5.1: + dependencies: + destr: 2.0.5 + node-fetch-native: 1.6.7 + ufo: 1.6.4 + + ohash@2.0.11: {} + + oniguruma-parser@0.12.2: {} + + oniguruma-to-es@4.3.6: + dependencies: + oniguruma-parser: 0.12.2 + regex: 6.1.0 + regex-recursion: 6.0.2 + + p-limit@7.3.1: + dependencies: + yocto-queue: 1.2.2 + + p-queue@9.3.2: + dependencies: + eventemitter3: 5.0.4 + p-timeout: 7.0.1 + + p-timeout@7.0.1: {} + + package-manager-detector@1.8.0: {} + + pagefind@1.5.2: + optionalDependencies: + '@pagefind/darwin-arm64': 1.5.2 + '@pagefind/darwin-x64': 1.5.2 + '@pagefind/freebsd-x64': 1.5.2 + '@pagefind/linux-arm64': 1.5.2 + '@pagefind/linux-x64': 1.5.2 + '@pagefind/windows-arm64': 1.5.2 + '@pagefind/windows-x64': 1.5.2 + + parse-entities@4.0.2: + dependencies: + '@types/unist': 2.0.11 + character-entities-legacy: 3.0.0 + character-reference-invalid: 2.0.1 + decode-named-character-reference: 1.3.0 + is-alphanumerical: 2.0.1 + is-decimal: 2.0.1 + is-hexadecimal: 2.0.1 + + parse-latin@7.0.0: + dependencies: + '@types/nlcst': 2.0.3 + '@types/unist': 3.0.3 + nlcst-to-string: 4.0.0 + unist-util-modify-children: 4.0.0 + unist-util-visit-children: 3.0.0 + vfile: 6.0.3 + + parse5@7.3.0: + dependencies: + entities: 6.0.1 + + path-browserify@1.0.1: {} + + path-data-parser@0.1.0: {} + + piccolore@0.1.3: {} + + picocolors@1.1.1: {} + + picomatch@2.3.2: {} + + picomatch@4.0.5: {} + + playwright-core@1.61.1: {} + + playwright@1.61.1: + dependencies: + playwright-core: 1.61.1 + optionalDependencies: + fsevents: 2.3.2 + + points-on-curve@0.2.0: {} + + points-on-path@0.2.1: + dependencies: + path-data-parser: 0.1.0 + points-on-curve: 0.2.0 + + postcss-nested@6.2.0(postcss@8.5.21): + dependencies: + postcss: 8.5.21 + postcss-selector-parser: 6.1.4 + + postcss-selector-parser@6.1.4: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss@8.5.21: + dependencies: + nanoid: 3.3.16 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + prettier@3.9.6: {} + + prismjs@1.30.0: {} + + process-ancestry@0.1.0: {} + + property-information@7.2.0: {} + + punycode.js@2.3.1: {} + + queue-microtask@1.2.3: {} + + radix3@1.1.2: {} + + readdirp@4.1.2: {} + + readdirp@5.0.0: {} + + recma-build-jsx@1.0.0: + dependencies: + '@types/estree': 1.0.9 + estree-util-build-jsx: 3.0.1 + vfile: 6.0.3 + + recma-jsx@1.0.1(acorn@8.17.0): + dependencies: + acorn: 8.17.0 + acorn-jsx: 5.3.2(acorn@8.17.0) + estree-util-to-js: 2.0.0 + recma-parse: 1.0.0 + recma-stringify: 1.0.0 + unified: 11.0.5 + + recma-parse@1.0.0: + dependencies: + '@types/estree': 1.0.9 + esast-util-from-js: 2.0.1 + unified: 11.0.5 + vfile: 6.0.3 + + recma-stringify@1.0.0: + dependencies: + '@types/estree': 1.0.9 + estree-util-to-js: 2.0.0 + unified: 11.0.5 + vfile: 6.0.3 + + regex-recursion@6.0.2: + dependencies: + regex-utilities: 2.3.0 + + regex-utilities@2.3.0: {} + + regex@6.1.0: + dependencies: + regex-utilities: 2.3.0 + + rehype-expressive-code@0.44.1: + dependencies: + expressive-code: 0.44.1 + + rehype-format@5.0.1: + dependencies: + '@types/hast': 3.0.5 + hast-util-format: 1.1.0 + + rehype-parse@9.0.1: + dependencies: + '@types/hast': 3.0.5 + hast-util-from-html: 2.0.3 + unified: 11.0.5 + + rehype-raw@7.0.0: + dependencies: + '@types/hast': 3.0.5 + hast-util-raw: 9.1.0 + vfile: 6.0.3 + + rehype-recma@1.0.0: + dependencies: + '@types/estree': 1.0.9 + '@types/hast': 3.0.5 + hast-util-to-estree: 3.1.3 + transitivePeerDependencies: + - supports-color + + rehype-stringify@10.0.1: + dependencies: + '@types/hast': 3.0.5 + hast-util-to-html: 9.0.5 + unified: 11.0.5 + + rehype@13.0.2: + dependencies: + '@types/hast': 3.0.5 + rehype-parse: 9.0.1 + rehype-stringify: 10.0.1 + unified: 11.0.5 + + remark-directive@4.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-directive: 3.1.0 + micromark-extension-directive: 4.0.0 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + + remark-gfm@4.0.1: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-gfm: 3.1.0 + micromark-extension-gfm: 3.0.0 + remark-parse: 11.0.0 + remark-stringify: 11.0.0 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + + remark-mdx@3.1.1: + dependencies: + mdast-util-mdx: 3.0.0 + micromark-extension-mdxjs: 3.0.0 + transitivePeerDependencies: + - supports-color + + remark-parse@11.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.0.3 + micromark-util-types: 2.0.2 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + + remark-rehype@11.1.2: + dependencies: + '@types/hast': 3.0.5 + '@types/mdast': 4.0.4 + mdast-util-to-hast: 13.2.1 + unified: 11.0.5 + vfile: 6.0.3 + + remark-smartypants@3.0.2: + dependencies: + retext: 9.0.0 + retext-smartypants: 6.2.0 + unified: 11.0.5 + unist-util-visit: 5.1.0 + + remark-stringify@11.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-to-markdown: 2.1.2 + unified: 11.0.5 + + request-light@0.5.8: {} + + request-light@0.7.0: {} + + require-directory@2.1.1: {} + + require-from-string@2.0.2: {} + + resolve-from@5.0.0: {} + + resolve-pkg-maps@1.0.0: {} + + retext-latin@4.0.0: + dependencies: + '@types/nlcst': 2.0.3 + parse-latin: 7.0.0 + unified: 11.0.5 + + retext-smartypants@6.2.0: + dependencies: + '@types/nlcst': 2.0.3 + nlcst-to-string: 4.0.0 + unist-util-visit: 5.1.0 + + retext-stringify@4.0.0: + dependencies: + '@types/nlcst': 2.0.3 + nlcst-to-string: 4.0.0 + unified: 11.0.5 + + retext@9.0.0: + dependencies: + '@types/nlcst': 2.0.3 + retext-latin: 4.0.0 + retext-stringify: 4.0.0 + unified: 11.0.5 + + reusify@1.1.0: {} + + robust-predicates@3.0.3: {} + + rolldown@1.1.5: + dependencies: + '@oxc-project/types': 0.139.0 + '@rolldown/pluginutils': 1.0.1 + optionalDependencies: + '@rolldown/binding-android-arm64': 1.1.5 + '@rolldown/binding-darwin-arm64': 1.1.5 + '@rolldown/binding-darwin-x64': 1.1.5 + '@rolldown/binding-freebsd-x64': 1.1.5 + '@rolldown/binding-linux-arm-gnueabihf': 1.1.5 + '@rolldown/binding-linux-arm64-gnu': 1.1.5 + '@rolldown/binding-linux-arm64-musl': 1.1.5 + '@rolldown/binding-linux-ppc64-gnu': 1.1.5 + '@rolldown/binding-linux-s390x-gnu': 1.1.5 + '@rolldown/binding-linux-x64-gnu': 1.1.5 + '@rolldown/binding-linux-x64-musl': 1.1.5 + '@rolldown/binding-openharmony-arm64': 1.1.5 + '@rolldown/binding-wasm32-wasi': 1.1.5 + '@rolldown/binding-win32-arm64-msvc': 1.1.5 + '@rolldown/binding-win32-x64-msvc': 1.1.5 + + roughjs@4.6.6: + dependencies: + hachure-fill: 0.5.2 + path-data-parser: 0.1.0 + points-on-curve: 0.2.0 + points-on-path: 0.2.1 + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + rw@1.3.3: {} + + safer-buffer@2.1.2: {} + + satteri@0.9.5: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.5 + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + optionalDependencies: + '@bruits/satteri-darwin-arm64': 0.9.5 + '@bruits/satteri-darwin-x64': 0.9.5 + '@bruits/satteri-linux-arm64-gnu': 0.9.5 + '@bruits/satteri-linux-arm64-musl': 0.9.5 + '@bruits/satteri-linux-x64-gnu': 0.9.5 + '@bruits/satteri-linux-x64-musl': 0.9.5 + '@bruits/satteri-wasm32-wasi': 0.9.5 + '@bruits/satteri-win32-arm64-msvc': 0.9.5 + '@bruits/satteri-win32-x64-msvc': 0.9.5 + + sax@1.6.0: {} + + semver@7.8.5: {} + + sharp@0.35.3(@types/node@24.13.3): + dependencies: + '@img/colour': 1.1.0 + detect-libc: 2.1.2 + semver: 7.8.5 + optionalDependencies: + '@img/sharp-darwin-arm64': 0.35.3 + '@img/sharp-darwin-x64': 0.35.3 + '@img/sharp-freebsd-wasm32': 0.35.3 + '@img/sharp-libvips-darwin-arm64': 1.3.2 + '@img/sharp-libvips-darwin-x64': 1.3.2 + '@img/sharp-libvips-linux-arm': 1.3.2 + '@img/sharp-libvips-linux-arm64': 1.3.2 + '@img/sharp-libvips-linux-ppc64': 1.3.2 + '@img/sharp-libvips-linux-riscv64': 1.3.2 + '@img/sharp-libvips-linux-s390x': 1.3.2 + '@img/sharp-libvips-linux-x64': 1.3.2 + '@img/sharp-libvips-linuxmusl-arm64': 1.3.2 + '@img/sharp-libvips-linuxmusl-x64': 1.3.2 + '@img/sharp-linux-arm': 0.35.3 + '@img/sharp-linux-arm64': 0.35.3 + '@img/sharp-linux-ppc64': 0.35.3 + '@img/sharp-linux-riscv64': 0.35.3 + '@img/sharp-linux-s390x': 0.35.3 + '@img/sharp-linux-x64': 0.35.3 + '@img/sharp-linuxmusl-arm64': 0.35.3 + '@img/sharp-linuxmusl-x64': 0.35.3 + '@img/sharp-webcontainers-wasm32': 0.35.3 + '@img/sharp-win32-arm64': 0.35.3 + '@img/sharp-win32-ia32': 0.35.3 + '@img/sharp-win32-x64': 0.35.3 + '@types/node': 24.13.3 + + shiki@4.3.1: + dependencies: + '@shikijs/core': 4.3.1 + '@shikijs/engine-javascript': 4.3.1 + '@shikijs/engine-oniguruma': 4.3.1 + '@shikijs/langs': 4.3.1 + '@shikijs/themes': 4.3.1 + '@shikijs/types': 4.3.1 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.5 + + sisteransi@1.0.5: {} + + sitemap@9.0.1: + dependencies: + '@types/node': 24.13.3 + '@types/sax': 1.2.7 + arg: 5.0.2 + sax: 1.6.0 + + slash@5.1.0: {} + + smol-toml@1.7.0: {} + + source-map-js@1.2.1: {} + + source-map@0.7.6: {} + + space-separated-tokens@2.0.2: {} + + stream-replace-string@2.0.0: {} + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@8.2.1: + dependencies: + get-east-asian-width: 1.6.0 + strip-ansi: 7.2.0 + + stringify-entities@4.0.4: + dependencies: + character-entities-html4: 2.1.0 + character-entities-legacy: 3.0.0 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.2.0: + dependencies: + ansi-regex: 6.2.2 + + style-to-js@1.1.21: + dependencies: + style-to-object: 1.0.14 + + style-to-object@1.0.14: + dependencies: + inline-style-parser: 0.2.7 + + stylis@4.4.0: {} + + svgo@4.0.2: + dependencies: + commander: 11.1.0 + css-select: 5.2.2 + css-tree: 3.2.1 + css-what: 6.2.2 + csso: 5.0.5 + picocolors: 1.1.1 + sax: 1.6.0 + + tiny-inflate@1.0.3: {} + + tinyclip@0.1.15: {} + + tinyexec@1.2.4: {} + + tinyglobby@0.2.17: + dependencies: + fdir: 6.5.0(picomatch@4.0.5) + picomatch: 4.0.5 + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + trim-lines@3.0.1: {} + + trough@2.2.0: {} + + ts-dedent@2.3.0: {} + + tslib@2.8.1: + optional: true + + typesafe-path@0.2.2: {} + + typescript-auto-import-cache@0.3.6: + dependencies: + semver: 7.8.5 + + typescript@5.9.3: {} + + uc.micro@2.1.0: {} + + ufo@1.6.4: {} + + ultrahtml@1.7.0: {} + + uncrypto@0.1.3: {} + + undici-types@7.18.2: {} + + unicorn-magic@0.4.0: {} + + unified@11.0.5: + dependencies: + '@types/unist': 3.0.3 + bail: 2.0.2 + devlop: 1.1.0 + extend: 3.0.2 + is-plain-obj: 4.1.0 + trough: 2.2.0 + vfile: 6.0.3 + + unifont@0.7.4: + dependencies: + css-tree: 3.2.1 + ofetch: 1.5.1 + ohash: 2.0.11 + + unist-util-find-after@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.1 + + unist-util-is@6.0.1: + dependencies: + '@types/unist': 3.0.3 + + unist-util-modify-children@4.0.0: + dependencies: + '@types/unist': 3.0.3 + array-iterate: 2.0.1 + + unist-util-position-from-estree@2.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-position@5.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-remove-position@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-visit: 5.1.0 + + unist-util-stringify-position@4.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-visit-children@3.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-visit-parents@6.0.2: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.1 + + unist-util-visit@5.1.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.1 + unist-util-visit-parents: 6.0.2 + + unstorage@1.17.5: + dependencies: + anymatch: 3.1.3 + chokidar: 5.0.0 + destr: 2.0.5 + h3: 1.15.11 + lru-cache: 11.5.2 + node-fetch-native: 1.6.7 + ofetch: 1.5.1 + ufo: 1.6.4 + + url-extras@0.1.0: {} + + util-deprecate@1.0.2: {} + + uuid@14.0.1: {} + + vfile-location@5.0.3: + dependencies: + '@types/unist': 3.0.3 + vfile: 6.0.3 + + vfile-message@4.0.3: + dependencies: + '@types/unist': 3.0.3 + unist-util-stringify-position: 4.0.0 + + vfile@6.0.3: + dependencies: + '@types/unist': 3.0.3 + vfile-message: 4.0.3 + + vite@8.1.5(@types/node@24.13.3)(esbuild@0.28.1)(yaml@2.9.0): + dependencies: + lightningcss: 1.33.0 + picomatch: 4.0.5 + postcss: 8.5.21 + rolldown: 1.1.5 + tinyglobby: 0.2.17 + optionalDependencies: + '@types/node': 24.13.3 + esbuild: 0.28.1 + fsevents: 2.3.3 + yaml: 2.9.0 + + vitefu@1.1.3(vite@8.1.5(@types/node@24.13.3)(esbuild@0.28.1)(yaml@2.9.0)): + optionalDependencies: + vite: 8.1.5(@types/node@24.13.3)(esbuild@0.28.1)(yaml@2.9.0) + + volar-service-css@0.0.71(@volar/language-service@2.4.28): + dependencies: + vscode-css-languageservice: 6.3.10 + vscode-languageserver-textdocument: 1.0.12 + vscode-uri: 3.1.0 + optionalDependencies: + '@volar/language-service': 2.4.28 + + volar-service-emmet@0.0.71(@volar/language-service@2.4.28): + dependencies: + '@emmetio/css-parser': 0.4.1 + '@emmetio/html-matcher': 1.3.0 + '@vscode/emmet-helper': 2.11.0 + vscode-uri: 3.1.0 + optionalDependencies: + '@volar/language-service': 2.4.28 + + volar-service-html@0.0.71(@volar/language-service@2.4.28): + dependencies: + vscode-html-languageservice: 5.6.2 + vscode-languageserver-textdocument: 1.0.12 + vscode-uri: 3.1.0 + optionalDependencies: + '@volar/language-service': 2.4.28 + + volar-service-prettier@0.0.71(@volar/language-service@2.4.28)(prettier@3.9.6): + dependencies: + vscode-uri: 3.1.0 + optionalDependencies: + '@volar/language-service': 2.4.28 + prettier: 3.9.6 + + volar-service-typescript-twoslash-queries@0.0.71(@volar/language-service@2.4.28): + dependencies: + vscode-uri: 3.1.0 + optionalDependencies: + '@volar/language-service': 2.4.28 + + volar-service-typescript@0.0.71(@volar/language-service@2.4.28): + dependencies: + path-browserify: 1.0.1 + semver: 7.8.5 + typescript-auto-import-cache: 0.3.6 + vscode-languageserver-textdocument: 1.0.12 + vscode-nls: 5.2.0 + vscode-uri: 3.1.0 + optionalDependencies: + '@volar/language-service': 2.4.28 + + volar-service-yaml@0.0.71(@volar/language-service@2.4.28): + dependencies: + vscode-uri: 3.1.0 + yaml-language-server: 1.23.0 + optionalDependencies: + '@volar/language-service': 2.4.28 + + vscode-css-languageservice@6.3.10: + dependencies: + '@vscode/l10n': 0.0.18 + vscode-languageserver-textdocument: 1.0.12 + vscode-languageserver-types: 3.17.5 + vscode-uri: 3.1.0 + + vscode-html-languageservice@5.6.2: + dependencies: + '@vscode/l10n': 0.0.18 + vscode-languageserver-textdocument: 1.0.12 + vscode-languageserver-types: 3.18.0 + vscode-uri: 3.1.0 + + vscode-json-languageservice@4.1.8: + dependencies: + jsonc-parser: 3.3.1 + vscode-languageserver-textdocument: 1.0.12 + vscode-languageserver-types: 3.18.0 + vscode-nls: 5.2.0 + vscode-uri: 3.1.0 + + vscode-jsonrpc@8.2.0: {} + + vscode-jsonrpc@9.0.1: {} + + vscode-languageserver-protocol@3.17.5: + dependencies: + vscode-jsonrpc: 8.2.0 + vscode-languageserver-types: 3.17.5 + + vscode-languageserver-protocol@3.18.2: + dependencies: + vscode-jsonrpc: 9.0.1 + vscode-languageserver-types: 3.18.0 + + vscode-languageserver-textdocument@1.0.12: {} + + vscode-languageserver-types@3.17.5: {} + + vscode-languageserver-types@3.18.0: {} + + vscode-languageserver@9.0.1: + dependencies: + vscode-languageserver-protocol: 3.17.5 + + vscode-nls@5.2.0: {} + + vscode-uri@3.1.0: {} + + web-namespaces@2.0.1: {} + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + xdg-basedir@5.1.0: {} + + xxhash-wasm@1.1.0: {} + + y18n@5.0.8: {} + + yaml-language-server@1.23.0: + dependencies: + '@vscode/l10n': 0.0.18 + ajv: 8.20.0 + ajv-draft-04: 1.0.0(ajv@8.20.0) + ajv-i18n: 4.2.0(ajv@8.20.0) + prettier: 3.9.6 + request-light: 0.5.8 + vscode-json-languageservice: 4.1.8 + vscode-languageserver: 9.0.1 + vscode-languageserver-textdocument: 1.0.12 + vscode-languageserver-types: 3.18.0 + vscode-uri: 3.1.0 + yaml: 2.8.3 + + yaml@2.8.3: {} + + yaml@2.9.0: {} + + yargs-parser@21.1.1: {} + + yargs-parser@22.0.0: {} + + yargs@17.7.3: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + yocto-queue@1.2.2: {} + + zod@4.4.3: {} + + zwitch@2.0.4: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 0000000..9753941 --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,4 @@ +allowBuilds: + esbuild: true +minimumReleaseAgeExclude: + - '@astrojs/starlight@0.41.4' diff --git a/public/downloads/workflow.schema.json b/public/downloads/workflow.schema.json new file mode 100644 index 0000000..de827ef --- /dev/null +++ b/public/downloads/workflow.schema.json @@ -0,0 +1,937 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Workflow", + "type": "object", + "properties": { + "apiVersion": { + "type": "string" + }, + "kind": { + "$ref": "#/$defs/WorkflowKind" + }, + "metadata": { + "$ref": "#/$defs/Metadata" + }, + "spec": { + "$ref": "#/$defs/WorkflowSpec" + } + }, + "additionalProperties": false, + "required": [ + "apiVersion", + "kind", + "metadata", + "spec" + ], + "$defs": { + "WorkflowKind": { + "type": "string", + "enum": [ + "Workflow" + ] + }, + "Metadata": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": [ + "string", + "null" + ] + }, + "labels": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + }, + "additionalProperties": false, + "required": [ + "name" + ] + }, + "WorkflowSpec": { + "type": "object", + "properties": { + "inputs": { + "type": "object", + "additionalProperties": true, + "default": {} + }, + "outputs": { + "type": "object", + "additionalProperties": true, + "default": {} + }, + "providers": { + "type": "object", + "additionalProperties": { + "$ref": "#/$defs/ProviderDefinition" + }, + "default": {} + }, + "agents": { + "type": "object", + "additionalProperties": { + "$ref": "#/$defs/AgentDefinition" + }, + "default": {} + }, + "actions": { + "type": "object", + "additionalProperties": { + "$ref": "#/$defs/ActionDefinition" + }, + "default": {} + }, + "tools": { + "type": "object", + "additionalProperties": { + "$ref": "#/$defs/ToolDefinition" + }, + "default": {} + }, + "tasks": { + "type": "array", + "items": { + "$ref": "#/$defs/TaskDefinition" + } + }, + "policy": { + "$ref": "#/$defs/PolicyDefinition", + "default": { + "workspaceRoot": ".", + "writableRoots": [], + "environmentAllowlist": [], + "networkAllowlist": [], + "processAllowlist": [], + "providers": [], + "toolsAllow": [], + "toolsDeny": [], + "approval": "mutations", + "nonInteractive": "pause" + } + }, + "memory": { + "$ref": "#/$defs/MemoryDefinition", + "default": { + "working": {} + } + }, + "mcpServers": { + "type": "object", + "additionalProperties": { + "$ref": "#/$defs/McpServerDefinition" + }, + "default": {} + }, + "a2aPeers": { + "type": "object", + "additionalProperties": { + "$ref": "#/$defs/A2aPeerDefinition" + }, + "default": {} + }, + "packs": { + "type": "array", + "items": { + "$ref": "#/$defs/PackReference" + }, + "default": [] + }, + "runtime": { + "$ref": "#/$defs/RuntimeDefinition", + "default": { + "maxConcurrency": 1, + "defaultTimeoutSeconds": 120 + } + }, + "output": { + "$ref": "#/$defs/OutputDefinition", + "default": { + "verbose": false, + "showDiff": true + } + } + }, + "additionalProperties": false, + "required": [ + "tasks" + ] + }, + "ProviderDefinition": { + "type": "object", + "properties": { + "kind": { + "$ref": "#/$defs/ProviderKind" + }, + "endpoint": { + "type": [ + "string", + "null" + ] + }, + "credential": { + "anyOf": [ + { + "$ref": "#/$defs/SecretReference" + }, + { + "type": "null" + } + ] + }, + "apiVersion": { + "type": [ + "string", + "null" + ] + }, + "headers": { + "type": "object", + "additionalProperties": { + "$ref": "#/$defs/SecretReference" + }, + "default": {} + } + }, + "additionalProperties": false, + "required": [ + "kind" + ] + }, + "ProviderKind": { + "type": "string", + "enum": [ + "fake", + "openai", + "anthropic", + "google", + "azure_openai" + ] + }, + "SecretReference": { + "type": "object", + "properties": { + "env": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "env" + ] + }, + "AgentDefinition": { + "type": "object", + "properties": { + "provider": { + "type": "string" + }, + "model": { + "type": "string" + }, + "description": { + "type": [ + "string", + "null" + ] + }, + "instructions": { + "type": [ + "string", + "null" + ] + }, + "instructionsFile": { + "type": [ + "string", + "null" + ] + }, + "vars": { + "type": "object", + "additionalProperties": true, + "default": {} + }, + "tools": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "maxTurns": { + "type": "integer", + "format": "uint16", + "minimum": 0, + "maximum": 65535, + "default": 8 + }, + "maxToolCalls": { + "type": "integer", + "format": "uint16", + "minimum": 0, + "maximum": 65535, + "default": 16 + }, + "maxOutputTokens": { + "type": "integer", + "format": "uint32", + "minimum": 0, + "default": 2048 + }, + "timeoutSeconds": { + "type": "integer", + "format": "uint64", + "minimum": 0, + "default": 120 + }, + "retry": { + "$ref": "#/$defs/RetryDefinition", + "default": { + "maxAttempts": 1, + "backoffMs": 0 + } + }, + "reasoning": { + "anyOf": [ + { + "$ref": "#/$defs/ReasoningDefinition" + }, + { + "type": "null" + } + ] + }, + "structuredOutput": true, + "usageLimit": { + "anyOf": [ + { + "$ref": "#/$defs/UsageLimitDefinition" + }, + { + "type": "null" + } + ] + }, + "providerOptions": { + "type": "object", + "additionalProperties": true, + "default": {} + } + }, + "additionalProperties": false, + "required": [ + "provider", + "model" + ] + }, + "RetryDefinition": { + "type": "object", + "properties": { + "maxAttempts": { + "type": "integer", + "format": "uint16", + "minimum": 0, + "maximum": 65535, + "default": 1 + }, + "backoffMs": { + "type": "integer", + "format": "uint64", + "minimum": 0, + "default": 0 + } + }, + "additionalProperties": false + }, + "ReasoningDefinition": { + "type": "object", + "properties": { + "effort": { + "$ref": "#/$defs/ReasoningEffort" + }, + "mode": { + "type": [ + "string", + "null" + ] + } + }, + "additionalProperties": false, + "required": [ + "effort" + ] + }, + "ReasoningEffort": { + "type": "string", + "enum": [ + "none", + "low", + "medium", + "high", + "xhigh", + "max" + ] + }, + "UsageLimitDefinition": { + "type": "object", + "properties": { + "maxInputTokens": { + "type": [ + "integer", + "null" + ], + "format": "uint64", + "minimum": 0 + }, + "maxOutputTokens": { + "type": [ + "integer", + "null" + ], + "format": "uint64", + "minimum": 0 + }, + "maxCostUsd": { + "type": [ + "number", + "null" + ], + "format": "double" + } + }, + "additionalProperties": false + }, + "ActionDefinition": { + "type": "object", + "properties": { + "kind": { + "$ref": "#/$defs/ActionKind" + }, + "description": { + "type": [ + "string", + "null" + ] + }, + "with": { + "type": "object", + "additionalProperties": true, + "default": {} + }, + "command": { + "type": [ + "string", + "null" + ] + }, + "args": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "cwd": { + "type": [ + "string", + "null" + ] + }, + "env": { + "type": "object", + "additionalProperties": { + "$ref": "#/$defs/SecretReference" + }, + "default": {} + }, + "timeoutSeconds": { + "type": [ + "integer", + "null" + ], + "format": "uint64", + "minimum": 0, + "default": null + }, + "stdoutLimitBytes": { + "type": [ + "integer", + "null" + ], + "format": "uint64", + "minimum": 0 + }, + "stderrLimitBytes": { + "type": [ + "integer", + "null" + ], + "format": "uint64", + "minimum": 0 + }, + "combinedOutputLimitBytes": { + "type": [ + "integer", + "null" + ], + "format": "uint64", + "minimum": 0 + } + }, + "additionalProperties": false, + "required": [ + "kind" + ] + }, + "ActionKind": { + "type": "string", + "enum": [ + "builtin.assign", + "builtin.assert", + "builtin.read", + "builtin.write", + "builtin.shell.exec", + "builtin.memory.read", + "builtin.memory.write", + "builtin.long_term_memory.read", + "builtin.long_term_memory.write", + "mcp.call", + "a2a.delegate" + ] + }, + "ToolDefinition": { + "type": "object", + "properties": { + "kind": { + "$ref": "#/$defs/ToolKind" + }, + "description": { + "type": "string" + }, + "inputSchema": true, + "outputSchema": true, + "capability": { + "type": "string" + }, + "risk": { + "$ref": "#/$defs/Risk" + }, + "effectClass": { + "$ref": "#/$defs/EffectClass" + }, + "idempotency": { + "$ref": "#/$defs/Idempotency" + }, + "retrySafe": { + "type": "boolean" + }, + "timeoutSeconds": { + "type": "integer", + "format": "uint64", + "minimum": 0 + }, + "secrets": { + "type": "array", + "items": { + "$ref": "#/$defs/SecretReference" + }, + "default": [] + }, + "network": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "approval": { + "$ref": "#/$defs/ApprovalRequirement", + "default": "policy" + }, + "compensation": { + "type": [ + "string", + "null" + ] + } + }, + "additionalProperties": false, + "required": [ + "kind", + "description", + "inputSchema", + "outputSchema", + "capability", + "risk", + "effectClass", + "idempotency", + "retrySafe", + "timeoutSeconds" + ] + }, + "ToolKind": { + "type": "string", + "enum": [ + "builtin.workspace.read", + "builtin.workspace.write", + "builtin.echo" + ] + }, + "Risk": { + "type": "string", + "enum": [ + "low", + "medium", + "high", + "critical" + ] + }, + "EffectClass": { + "type": "string", + "enum": [ + "pure", + "internal_state", + "observe", + "workspace_mutate", + "external_mutate", + "process_execution", + "network", + "model", + "remote_agent" + ] + }, + "Idempotency": { + "type": "string", + "enum": [ + "pure", + "idempotent", + "keyed", + "at_most_once", + "unknown" + ] + }, + "ApprovalRequirement": { + "type": "string", + "enum": [ + "policy", + "never", + "always" + ] + }, + "TaskDefinition": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "uses": { + "type": "string" + }, + "needs": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "when": { + "type": [ + "string", + "null" + ], + "default": null + }, + "vars": { + "type": "object", + "additionalProperties": true, + "default": {} + }, + "with": { + "type": "object", + "additionalProperties": true, + "default": {} + }, + "retry": { + "$ref": "#/$defs/RetryDefinition", + "default": { + "maxAttempts": 1, + "backoffMs": 0 + } + }, + "timeoutSeconds": { + "type": [ + "integer", + "null" + ], + "format": "uint64", + "minimum": 0, + "default": null + }, + "failure": { + "$ref": "#/$defs/FailureBehavior", + "default": "stop" + } + }, + "additionalProperties": false, + "required": [ + "id", + "uses" + ] + }, + "FailureBehavior": { + "type": "string", + "enum": [ + "stop", + "continue" + ] + }, + "PolicyDefinition": { + "type": "object", + "properties": { + "workspaceRoot": { + "type": "string", + "default": "." + }, + "writableRoots": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "environmentAllowlist": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "networkAllowlist": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "processAllowlist": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "providers": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "toolsAllow": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "toolsDeny": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "approval": { + "$ref": "#/$defs/ApprovalMode", + "default": "mutations" + }, + "nonInteractive": { + "$ref": "#/$defs/NonInteractiveMode", + "default": "pause" + } + }, + "additionalProperties": false + }, + "ApprovalMode": { + "type": "string", + "enum": [ + "never", + "mutations", + "high_risk", + "always" + ] + }, + "NonInteractiveMode": { + "type": "string", + "enum": [ + "pause", + "deny_approval", + "fail" + ] + }, + "MemoryDefinition": { + "type": "object", + "properties": { + "working": { + "type": "object", + "additionalProperties": true, + "default": {} + }, + "longTerm": { + "anyOf": [ + { + "$ref": "#/$defs/LongTermMemoryDefinition" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": false + }, + "LongTermMemoryDefinition": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "default": "sqlite" + }, + "namespace": { + "type": "string", + "default": "default" + }, + "retentionDays": { + "type": [ + "integer", + "null" + ], + "format": "uint32", + "minimum": 0 + } + }, + "additionalProperties": false + }, + "McpServerDefinition": { + "type": "object", + "properties": { + "url": { + "type": "string" + }, + "headers": { + "type": "object", + "additionalProperties": { + "$ref": "#/$defs/SecretReference" + }, + "default": {} + }, + "timeoutSeconds": { + "type": "integer", + "format": "uint64", + "minimum": 0, + "default": 120 + }, + "protocolVersion": { + "type": "string", + "default": "2025-11-25" + } + }, + "additionalProperties": false, + "required": [ + "url" + ] + }, + "A2aPeerDefinition": { + "type": "object", + "properties": { + "cardUrl": { + "type": "string" + }, + "headers": { + "type": "object", + "additionalProperties": { + "$ref": "#/$defs/SecretReference" + }, + "default": {} + }, + "timeoutSeconds": { + "type": "integer", + "format": "uint64", + "minimum": 0, + "default": 120 + }, + "protocolVersion": { + "type": "string", + "default": "1.0" + } + }, + "additionalProperties": false, + "required": [ + "cardUrl" + ] + }, + "PackReference": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "version": { + "type": "string" + }, + "path": { + "type": "string" + }, + "integrity": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "name", + "version", + "path", + "integrity" + ] + }, + "RuntimeDefinition": { + "type": "object", + "properties": { + "maxConcurrency": { + "type": "integer", + "format": "uint", + "minimum": 0, + "default": 1 + }, + "defaultTimeoutSeconds": { + "type": "integer", + "format": "uint64", + "minimum": 0, + "default": 120 + } + }, + "additionalProperties": false + }, + "OutputDefinition": { + "type": "object", + "properties": { + "verbose": { + "type": "boolean", + "default": false + }, + "showDiff": { + "type": "boolean", + "default": false + } + }, + "additionalProperties": false + } + } +} diff --git a/public/favicon.png b/public/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..6cf9525ecdcf992e0a163281d4cd09f0a96f8223 GIT binary patch literal 296 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�_Kz4y_17L^4=&)w3Gg)Pseq{zidO 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

EL;YQlPN@70C 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 z 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 z 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�w6=~t~}f&+iW0LiPG6KXvtfK$60))3x1G<5f9`Z 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∋5~$%-x=O;#7z*nYZR&Otk3sDs#3(y( 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

  • q2M4>3F$F{{FNZ~)U&mZ zK#2_4aE^Bin~6G2WkV^Fh1~5&q#LiT9y~b`O?~HE7hZY!RYx9uI6pq@S%O|Ft#Iil zlbrq_nD&p=I-4u9`*`u+qfdUsolg9<_x$4rKJl@SU-9!_Ebm1@jy&?FOY2L#x4>^Fsz?7u`k_cGk5UlsM)gvP zXazmfm5j$-`lyx;2nnOBBmF^2Zx9I?nolIMa^=kSb+3EjlRi&(O#4{=COm(Rbga~EMfFPU9tVd+oH!;0w^1RP|=GRU* z;m{)vVO4Cf0;YX2l@EH>{D)`r%CZaR<8O5w3*u8A|9HO9`r}La z`{@aizH$CdW19uP$ZWV&S74`TR z4d{<86_aR=CuLfEH`_8sW^Q)&3t#x^d*Atwe9ej9Nn^rgjYb#MlZq?3M5ue`EKE0c z0Hjg+nxlGzBd$zn!6^N$KU1Ur7$&C}RU9>fl^vlthqB~m%RnovCeXp;SK*Z)%i6VSM&a^2wOX|;q_kM>N3v}`&LiRi{NnB zPfqKhO>JUV&N0$e>6M^;o7Wd-Hcfo))1N!@o$q-1)1SJq;Sar_PC5Q$Qv(qZV$Arm zGZmRpypCNg>hb--Ynu-{;wDEQb+ZTk_Wz~CeRW?f?D2*3GS*1b+}>eoS>|ccl@*>5 zwMLbuY#UrxOs!FAMOorlx{@{NzWj*md(Jug-!J+;kEb%R!)+YuG?-9v!c3RNpG;{@ z8)Rv%4g5|4$9lRsb2#t%+SvHo*S@iLVV+gc+C3RF86(YGpYt`kIzR1rJd%5|b(ZAzyKq(o=#LAR59r z7HcNY6d_WLUwI-G9^B=Q9<+6yePCqJ_6E&G71NJ1kndp*i~s_PPcD9t=V_K5+tW26 z%Fwt=X4noHnUY!{$ZJv~T2jIOsTlTWQ=*TCCSk;6N{m~5KLm^m;{(05gxN+Y3L8$4 z<7b&6ROG{|f4voBcsfH^2Ki*lCmpwOtM98WVQ%nNdRdQMi(9Ge3h50V+A4a=U~CJ} z$V)-^AN(L+I@{jC$0bHv7O3>`v>;4F2)kO_UwSr<#;7ipaith_P$Hkk-*Q#mx3X0N zh)jHx(}+a6YFnX&K&wh}BK}cCxng?#4>1AmW7J!gN4vK_W? zsHGwxn@Mzml8T7V@xYFX1ZohgHnG?&HW!fcBiXj;ltc9jo+&6N z%ofD4@P;4t4Z3+bt~EYalZsuu-Ip#Ife?FRSR*w(r0KON06V5t?;&^rkFu-<(G7vM zMXV;YNI^^*Y45--06oZ#8X&9VWXl0o4HAWL{P2U}TpFMY_zZt(Z%PTU*T0j4Wl?BbgttXEmh@F!C|PqL;m8eU!z6vI>r_PKoF#QesTG z2IR!1nW^bZ{`=AkFZ#~$$3Bc#e&}+vm6e1{c~S*Bphb|O{sK%K_AV_Pd&^s#@zNLm z#Z&(DKfZU#MHgQ5;~)L#s;jQqv#`Lb2wq+yuyxCp0}njlkV6hR?iR<~_ExvP{Ry`_ z_Sj=)r)GF@0zbUYcOUrW3Q@~^)F$$2ebhp4uCVv72(gM{(crN2v7xa!AIy(o_ywNw zCCn`ruzIfOs|~~*AL=wK3%jYQ)s?m9Klk}Z-~8yipLDlf^EdD%lK|u(5t&#~nhjhG zj?qKVdc2CMN^KigBQkiL8jz`KfpC{~s|22;B^@|-;OEZ&!fDSx?S1e2$9;z%vbM?J z?B)%9wff&rMHQU5?2`cVVgANYE{(IA=BCOzXUp7R3A|@Pm`}b5mJn~KaFk1DeUEkf zw!Hq;uf6+SPQ3d)etl(`mv9Ik4bBF(3p}<@<=pk4I82S4mbllLeVbNUDf8QmlapK* zxW&=O{MLPBDB+w{AVtDBE%3h3zK!|iMM8%s^qDYI1*9CN(vj>?W**Rx=r8TK#1Odt z+8bVa`pcFX$lJEDxD*zi`V2^gTS34!dcxGIFH#~HhGw|M*U%%U-=#g84GNjElN!D_ z$?slH&(1k9h0ln!sC5sTKN=pE!eiSdI^(Fm0=IdB(~b#m&co>#ayKq5TeruYmBkP) zCvO@N8tvOBf)X%zN>c%Tm{ z-~P9=KmMuhw>)m0Z!iMO8K?Ca>0xYX_wIHkScmyCH69QPO-nS{M#Ti*LgbaH|MlPh z_0!9LdduUEUtC_)l_cB1jG?K03K%kSLa!4f89G~RCGIT8A=>|8OY#tH;)qDFO_*#4 z^p}me_N6anB{H6U!^K?9&s5UZ)NWd%xo`}-$|N%yr26FkB+;is^A+OQ*(HQg zpYp-TMle$^SZ`ieJD=Ck*4L-z=H_3xQ&WZ9g z_ZfKM*w!tZc&SxlkdU}>RvSBh8A8pblbfS^c2_A`8INLz*_czMPK%{g(As9N`w$iJ zzo&v9r)2zPSahC9G)Q-aBp-2UeFOwSY5-&D{)knItW04onp^%0-7tqtQQX$FJ^peP zf5khoAnJ6C$+TfJ3F^?yQXlAb2QOI826L22kh9saim{V=BbzrGIdQ% ztjsU0?qy~`9HE*Q8)Ea>Yfv#!7R<77wTP*bN2lhtOl{p-rlB9Q)(UN)VtmT2zXn+h zGW3BI!(C3QKiE!ut|IsH)S`%5lFAB^4rCck&7fv5HrO>Z?wln$l9V?*W{$Mo^Q`Jr7kGJkl6oA zE%1$yz?n}fBH|wXCicxvZ{E6fa&DGpNGP=`Mxw{RGOMg@faL*NYoj%VXx%!$%)ZRG zD@1QNU~cT=o!G8yA-5_j`LJ?b;ZdS_Ck>wRC#fOcps|!o&l#}2H;D$$}ygX!n zh=rL!p>$O{xu~LddP$DSw3D)A)5ceU9qxQb zUVN&R>bEI+b0jpjy|h#ewK~+>&1_FCu-$ab4d4MqPC5YSgl`u)itL*?}hI>`#pyoev`$OrQCZ&MPNt9skNx1 zOoD1r)yQ)g4b=jmFEw2KGFjqZdhDZNUM%yo<~S(0&LZff@0 ztFL*X=01(!6oOzj)>nq}6f%PjhWurhU-{`z zeeTvzxfS23PTR>a@>ABbTvJ+Atn84@Ir%CJyd#sd@i-Q3Rm)r5(o_V+(|oKoai5UM zq53b*@&UlPp)T}lyGv9q2zaVww=C6Q4wUd`}+$iu<=7wIi<_k_z|U zIslpBKQLxnz6B5pwb+b`wGGZ9(ggB&SYbwEslu;4@wL)*ZXS7xYbPKUEBpc!kM88k ztStr6fAQSp-%ZpZ=76l}GAy$Cr}?t$CahJGLaL}(bEDK;h=j&BvF=(ZgE+DcLVU@s zcQ$&#BU_mc7Hc99H8K}NS}WZ6)P&_l``3@ShCnlU~g`#G0C9EI<={Zge7UB znsMl4zWT_==9_%6%IVbP4lRK}CHs2x%)UXP9JDs92~sZLmZZ8<*%(p}<{$~1YO9Av zPv#-n)hquXFXX7;BS=ta2U!y-0_xB~D)UDsF~gLPyo!k1a4eLL_>!XaCU}NjO>9yk z&c4+S#f~^)DTBhN;))dj(wkU<5irdXqWz~3->I$CHT81#B}Fz!>gv&s-r|WNhL};A z`c|im|4nxbjeG(|wkkzUxy^`HX->_LLbiHnO|DtXERf$3A1z~zWZ^f?lp+Vg)plA= z6-KRZTk~+dkk-v9#nk~6TVG#YT#6VL`R9bi9fpkqcvaZ?;u8FtstF2lipT-ipW6Xc zi|H>&WzOp;5~(3MlhgoV53P}vEN>-rBIuRa2g;JY&oV!&mJ*wkbAE+E41A6zMvPN4 zZ|WIuRKlOJt!UIG@O+V;qk`oGCs556P6$^jjwp;tOy9FRcTUgFE?j-JQ%RXeRXQ2h zEX`@7sbv~L*04+FKlz{*$e2K~alKcu?`TaDp7E60*3%1_TEoPLD0q%K!7B~;3jgOn z_l1kU_r1HGco%;D7%GvehKfn0L;&P0L~&6Eb#)7rGeanxW3R0)aE*msf;CbsKX4OzyVrT)>FdL1DCP^hYBY^^SxCMvC=Wvh0Bo!GJ zA2j1Mh6y@q)RLAe-JB<*p9cuJ#BkAfF8s?UJ@rjzzWH`{x*ZQmav>xp$>{7_b_XOz z=nJK&?gk1i2mi2>%HCuYvI9#_otcyYuK^*J09&T!c3r*e)Mq~X`xjn(-0{b9fH4+S z$XS7m0@XkcQ4Uf=W>-1Q@wP;M1uNi;2P!>h=75#{A#$qJosV}YDeT+e%>G+nzu=kA zeeS#7dgk=3_vjifAP5Dj>l_&)TO}Dx?eG*giqgehw0kCELlhrpo#qg2od%;YxP{V! zmDpL}6qDpJ>b13!qHEBNeOtH8edwbfdGp`Bg;w6Tv`CFdU{CsssUI-K7S7-xNFEe= zRo?7}0kNmHkyKuO`LxP1DQxUSpo%aOe{ONP%ng$!%GmWqB8uaHRi=*9vAc@W6UCW^ zeKJvti=vt7639!U*lb}Rh-|8&JEJ8&T+X9<5sBy6@53_yvWUhFk;Q7EFEbFM>@^D* zrY3&zlOKQi^Iv}46HexfuLd#GXLAJ6vLF_ zSAFTTpFi++w_ly#yRvH+zldlg^sXtk2Nn!rX+}a*HA&doQAJFN55n9gSzh|+NB-px z9{KRO?X#SkL-iYU6i(eCnfq9J&1H;I(hfQY}KCq0G5DKdHlYEiOf^@ufzdSm1eC z=R+0vZzo8PEjwdoYRx5HWp%F(S;KI5V`+JLcc$4)Cpi*ra4~($K?kf}d)?a73U?)4 zT=VmcOa)wA=dx=1+9%>px8fwq8e`tnM_mjss?=1KyHQ(H(zaHWnuZ{3%+6?pD1h#Q zRsTk}HBQN-7UeoEW}~Lmd^SJmYYiK=j@hM0!dCbA6|#-eKnqS~|05xj=-5CSno%QH z{3`DdV^U{WFxRr`U_DmGQS0G_wCJ0P><2l}L-F7uYRb@xxctKKU+4kIrh!Q>MO8H_DkIZ~ z(mAJOv;dX!af!t>-V+fhrEX1u9?x`-QrkBMe{3j~5=CQVVRXbUlUQ0%*j=_m zrn9SWsOl`ea!jhlBpj(u$jLSM5^XjS4Mq1iEW|=|e&Q*Vl@;F!Uv1GIY9+XRtkCV9~s=uu$RwgR0jvJGL)fea-q3CxqdHm2gnQr4%0B2(pv{ zZ#xUgvT0zcx42(e3&|ecO{qrV z*+5R1M%DyZbFx%)Q~kBX#K0rAx$+GWwYi*Bs6e&OC)ol}q9s;^p->U6(8El`RY0u{ z$BGQ$u&A~BJr<89(!k;adb-!ljN0ioc2KeJn(MB6^IPBcj<=o3s)6H8wAK~~FQ}*A~p(-a~oN-vEq3p_amxCeV(J%=QO@MKUk=#t9aL!Egj)yf@djNZK zSq8*qaYo6Nyg;y4hN^&t7Cs!P6O5Fk^KWVr6unYr-7@1FA5Q{McxH=lH` zdtN_(1J|H^6M-fm7tyvYuue}44Jx`8qgi&jOR_D~gOq?8K}=^o?cs?3wS99_GrM;! z{MBDQ`-`9d(%iOf_CPwMuchNe2?5*6|FjTQ4C*oeGzn~P5*S#b;MEXs589+cWgLKN zV#v21lU-RQsj{=UoT<^{TRL1fUyhO^P&bLx% zsgtpVB-&GqRj`uM4+jjJMPdy%Z8vyv#5{#~Ne=6^7jKaOIX4`P77yudpWAl9Mc;nb zU!S_P%1f0HaybohwSzdwM|K+DFjn@?b8q35GIWl2{{R>6(--!>M^Pz`4+_ODg$TybnQl} ziVo01iMsAp+85|DJ4%L7^L&YVOC?(RqEHUCP~rWV<5Zfl5U zn@l8UZIdeFNrtKvtD9@pg782Sm=r%Lz|n{?GeS+awPsDfg_K?&amNH2-Lff^kR*nT zITC=6i)w*To;6}L%U-OlC7Nya+}<_>-v@LFwAZL}c30yDAQAu^&1o8^%y_1u>5MrX zAfhd4&N9j|z!$jqXby52TSjY6 z8RU#f7YB+V&0?o&(jY1P3ydT^}(=-g^?l2@c~ zBiwW~Idxk}RO1hy#Wdjc ze6h-F&VM%PG-ihc2!FwA8fZpViahDZH>MUBd06z^kDU9ZFMnlfW_pFIqt2!rChL#_ zDxqrT0GV7VYzC<(x=TX~Y)o;P!j)I9dAjAh+uW1luv^K@U}HB=g2qy27T_V^jm_Wt z{(tf!2IwBVYb~9Fw&E>xcJYqTl1btR-Y7Ibo_mGbpAbCf5Y(oC2{F znVb9J4=;V<<4*bThdy$^>;ZHn1K0zgP&uzONt23DP~sIqi*3_3UzFu-t1(&>X69Wk z_WQyN#`(s?&eoSJwpi+Yatp=H z_v9)c=Yy2EvS|TfXCX3te9R;=8vhT(oh&Wr{UwoegSxnGb5f zflsQIjNahM#)zsBk%MQ(SDiT{qiF`;)S}=ny#-P!VP~ca&AEukS(+P^tsBf%16ie| zAo6Tl=a8I$dj-K~Ywb&5Q;)*Fn>x}Y~6s3c(*rls*QZm7l;-CN0S3mWc&upLB zKDWUa9cKCRr{C~%u}oJt)+5n!w0l*am6gTARtwTsrJyYqv2%{#>2-eVlh>0}2@=-= znFM&!tM>w>Na)P5)axqTC7znun4R-?_qOjm^Q~`x&FfyzZ@W*@EqG91gHh&qL=_Sx ziqbMV+ZNu$UF?c>i@AhR!dM3(1np@cLp5mifl|oXHlhbH!|P!8n3m}A_Rj6oJI+4m zLub6?bTm%#GogIB(%CmX&Ti(67+q}mi~i~~)!#HmlPIaKSlKh`X-Gx`Z+Tr=ecPFD zzy7LSvs1H<2cl*h^OPpjfqa@BVE|&f!>F~4g!qw7Z|!K!rr1i5e9-ihNyo60_%R0V zuJCcT<3nYe@l+D@V3+Qm6;Y?$#29m9pQ?u>Kq`>bGgQzwT@2KEz^(#|pZ4EW1iC^= zyY?W4S~|%#{6r`k+lG~f9{^d(xk5^6Dw;B=#?fGyX(>fEExx)}{;8|_l;!4AEFSY3 zhHiG#X%R~r+{m?2PL6zHft=02cu>SUPj`=(NWwjumEV8~HN78AtdvgiqMJNGPF~NE7S@H7BXP=ZjJ> zJvz`5K*w3-vn|$!-=GFXa?03Td=nW~|Zk2b5SLW2sshEnmTuDKmb9W6oAr3h!&g-dFDTL?{YD_DYO z^f4}t(l`^b&hEqjX!vXKx}R7Ns7#>u%=ZNXrzj>?4jRqL77|3d}GUX()#tg_PpRlr(JjL^)pj5 zj_s&JB38OdvZs3<;NGsCkJd{`#0Hxp(r{{*MkvRs+h(!mx`d?LEGbN$;kZEL^kwJV zj`Pp`^h=(1hO1i$zNEs_mn^=`5JE7mFjE zGL0VHktkkVrf=|LXj^7yfAC*Fdg2rR^k2X6t(h%bwU4tw7Mk`xmkw!xw5skWLlt?B zbG7azUryPF4CakKcr(!Ki>UUFtWSutW$)9Rfl#}an}lqIEMKw!HGuVjBLNGKu18{! z?&X58J~7R{n^%3n`-bTZWxTAdE0oa~j928_85AmD(dE{u+Csc_kt~#xcS?{+zJ$vv zmhV&3^cMQ`YhU?>%YJd$*14@-v9Hq!)@s$M66e-if$5=$6B+X6ns3cjRoRjBv_>@! z(VN{CcO*2rn`(oOf9i~)POPTv(tHP z-l!Yj#6+wrZE20NsrS{mg7Gkr%=FKA*{G-cx-&UP61}`FhZ`T9a8Gf2qz%^A}fmz>f;6P3Zv%0BVe$L$uo1II)QGl2a}=Q8k3A z!d0=-ry4QkK=T2R;KUL&i7kY|MP9ISts*IiwT;DEV{9^GzCNME(fvSSijF~#00m08 zsmyV%@S(WS&=xD7W-r%-6lVBIgs)bbM3P1&ZHlKsmMS`!{}YHw7nt~gNR!UjC(8C z%BjQb#}gB?*H0BDg*p5w)+SJa90cP=N&~&r>t_4JpR%u0^n8e9DFq}v@f7>?kJNU_ z-`F!bnv7x5Tn%@d?o-8xLd^QgNs8yn^0E$I#dE<|zV?zAoiWW5?yNBS@rOCkq+H7+ zS~09B30`-26rdKm7A)+U{c>%|U*iaP#`+Dc%ac zdCT0=`o34b;pPqfwThDyjv!1nQ_Z}9Fe23KN zdkCyFC{r7S-sCBiiNn??SQtzUAtb2TS7AT8p+h3ceg-2uXx-PqrMItb-?o)+%s%e% zr+oeE|2nf}j&BWd=nr(<*U5H0sEC5XQ24Z^{fm3fZaHnTzxgW%%*u7hFO`^JW;|6) zVv<-D&WfqqXsHGm+omblz^_2V!qsbYp08_Y)rhV~E0HOc!8S%ZJTk%}jpHhq z;lWAr%=9|b4hm=I-uU-#`NSvB-!Z$B=gK$pW@ut!YbY%Epd)#SP^!I9+QMy{jHd)A zrZJOeC^^O)T#h&9f7YSRI?QA#N^92LLT1A0*$LiK#%W;-BkD3RvkmBen`$o&_Nk@( z3_Pcm%(|R?VHd9s7TG6H+qJ%Ks1fR6Bhx{3d-zmC8NO~!%m#uo|JmC1IpshjzO-|X z9Nvn}+By$R?^Rmi7CdbTRAO$0b=3faA=M-rT-KGp#b`T}4Kb+Xg8*~!3nyY4R)kSU zEqzMLW0lN3Q9GVudD$Ja;T$-IzNg9#*3jIUBv%?V6(uNUQw(RB9&U(1u%KYox2eoR zPtBPMqJR7(4riezuUHNS!KlGtw(dG}X45i>wY;1q_un z^ngPy~v z6Q&_FzSe^^FrxYY5%wkkmt|*JZgmZR z4c*mAX9NNn2nk70xEh&++^B@BC@PpRT$})BxLgDWKyU&D!~sPnalA69m@5cK2#Ep0 zWPp&+iDm#YC!J1uuDPnK>ORl=eruoeccOP!{d=$V4e$4U-&%X0z4zJY9EU|YYa9Jv z%Wa)thW#K5S1S%g=&rS9fpcwpj{;pNC`sPY*Cv7;IiqhNyHZ*Lmrl!_yLg&6V&#~v z91u6jan!7)%Vd!XHA3%4Zw8xv>PS&Sarp;76_}W7mkg~EvY9~}GDBbBt$>A{wJiBz zdOv%^(9lU#txKi=W@b9p#fuRZL^-vzt@+9(9c{G^qNPPJcv}E%wxvxcM?;BEZ+{3? z2(@tN#x_A{Eqy{SUCd(^b6@en;KMe2U+wq*oB!vdp7NBx{8zt{uUr?ElON6ZSSgrg z$}+tsVakJ@i4gL-C)XfFyUjY)dp% zZ9%0^mxz(IMUt5&rr!)((Y@lNDW?=F#$u#X2T zr|WRbeD`uQd%th@9rdROi!C2B#J<}BsI13wC`p%>fnx_JzWrPO>94=xjsM_VzU4X3 zdd|6v=lrDu?h53XZ>>TaBw+$2P!ERzX*Y%H9F9k%Q@%PX5usc8r3yMGh{_NqJO^xt zo5vP-F5tw$_xziG{Wt!`*FSXb+{s%xNZ#}ZF8Hz^tKqj!O`7pd1mtuk-U{pZOakK5 zB$-s#SBR8SCjP*~h4UA=PxlcY_N3qTu^-0|)>Ee3fXiLRL;*Y`XH6)(DFMJjuc%hY z@mTgo0LR5I-eqU;R;^JT0!i)ktEaIcS<9eA(dnR3lX08)si7S&_c%oIpOc4-h?#m& z$5uAhKRzZ1ia*6ID}&lbbuTPn=3L6nh~IHd_e?ogKYxE ztSkHOI`*^(blO=tY(W~NIiVbeN^bXr=>4GyYTI z?L}DI<>uCcHfIjcPB6yF%4Eq#?lQ;*-*^|oSrv@oBUAq8f)K*i1{NubL7!5N%E zTsc*>BPot0SgS_f*Mqgk3A^;-f!}o4@ZTU21kT*ovSCCNg~q8H0s6#&yVqQY%xk-o z1MNg<%pOe!SY_!?tX;@Vtf?6=?GCN@guicg>Sc$PpC;6F@DJK@8xaHgMJF?9vUaIuw0NvPu+J#4HuC2~^ z0M3s|UB2w=W}&;Dj>0Vs;ph^Zmj9hM5~sSZ^FKl8D;mk(_-$lpFs*^gUqE%rQ7Mo* zTZv?9w6w``cZt2pWDwoi|FS=a=S976iZI+uwQO*4wV}?Qhp_ zaO%THI$~x?3l;CQfqFS-v6Gz^AEn|g`fXNf8hK6!!=K6kLR76>o>3QkxYKl znO|SSgZuy2ulcc0f6bYfylpW@3u~JKw&KmF4G`Z+K9+#mkWKf-TgaCXMHd47{nndOiu9Vxk>V&$5x1Z>%S zGe|+Q*8~T5mcq#@*6mK}ozzw;maLq4OnM(|&U1C+ZWyhGThZvG{Pfny8pQK}mZ#>f zJ!o{A4}u#@7^F0&>)SjLGD)soJ<5HPBR9YC@BH0=_)q>ZABFXUZa1%bChXfmgxfPT=E$?LuCJ6235zO#fc;=0bQB3{c3;a@ZL*@IB(@mNJBo1thllek1x*O`typu{!d=~Hk1 z&A0qtU-BhyeDfO*P9IQ>8ytVUhv0q!bjBxx72e_}4M?D~7&e9t{mp)VLI#jyoS$m& zmq)n;#jeL!HTI^S^;yemvQ5+Nk}aFHB`5x?%`E3q)@w~4t92GeQ+KJ`twZdQn22qg zv{IprvSvLK${5?r!mP}H$6>Yea(eXPt5*|FFk?|WKlGZrL%xjfDn!7tNNn1UTtiDS zWZWZamX;+Ax+F(}Xl(RCKFK*B>GG#f+A+vXNX8;-t%WM>6xCk0w8T$@nAXN7vN4G) z!9X$Z0SSN{VpqO4vt+KcIT?h9RAgjm)(!}egQ20jdDXcD!-q z=jia_b(N3cik5{~gfaDokUUEYGPx1T7E4sSt$B=CO(@|wOX=^rV;O9uj&0^ucT6QL zySSs2&PL6tqhpw$@qgk9+NwpOj3q;+DvU~Rz%k7rRFEPvb43CV^hY8fh;^ zmg>zY`QRMAKnb2iGTQ`>OB-1$h-dtCRg6TCTBw%Q_J8EvthGL|p9u2Fd{1AJnfiG- zlNn^ag^@E&x*Tex?@|tW5OYYhU6jmpnnKy%ynTI6RU?OEBx$RbTa2 z`H2lqiTG0N8%O=lNyxEsThMw(u)W1$b)t_l^AdxI;FtUeB{i$QgX7Iouh6&7)W>dxwZ~gsZ`x{63XwkvhdmlXaFaG7f{*OQSA3yn% zKk*NI=4X8B?|j~~pZ!cuM#1n0^?34*z<%X*&*Z?c!2*o;EDgh34o44;9q{xipTT?J z{DZG}<;~QIYp6WFq7@XDdd*9dnVQwFK^vV+~ zQWCNmnW`C?S|n~AL3)6>D5tO7qS?}GZ@sI=w8pGuV$V&%9@hWpiCb^|^*8_epZdZt z`V(LDC%)n<{^Eyy#D_g}`P@;SU*l@WarTx8FSh&xD`Z$_JCTvojjW8rq$}K5WyR85*cm;c&r#Sf9^#k0zV55P=AQfR`P#4jYCamwkI-=Y2^X9? zz+P3Dl!4fHSPO?9y!8*kS`al01u$hq76T}vB@><-C>?FnTfD*P4@X!Ks__E5s@Hc@{ zR+uHut^`;eb-udmtcF$VoTC^Il3(SC#@o-F{h6Qtxxe){|MoBZ!Y}cA#D03$H_&vk z&PR`2xp+}Zd9WOD;8)by0-P8LV{6H2xntXf7o(Ap_Ap8YH~IGbQzuTm>X&}$^FQzZ z{EqMbu8;r3=RS1lL5|Gb!G%no@Mb%pQn99+WEZSajlg1LS*3tv!p!kj7q?(I`gt{& z1|MK1FBvO{y8n$Y zpn*C!#G0rvoi=D{2vUw#CYIae!)=NWAn^HDw(&`>wgMzniMnX|6~(pQW^NGLz}2*hZREGAVmYd^q7#~Nj>zPi1E5(_LL;~AZubA9=}Tde zbqSYw&G1WGd5z>mX(blWB(lFsI}98|dZwdk#+3D{he86hfHY+VV@1o}s_>V7WrAR} zy#x~hKkc%z+m>QAQ-WAvq}qij8L>qsp@WT1Dmn~QaXLEn6(me2T+ut3RwVURZ!spe zxU;myaZs=P<(8u0o`rDM>8ByQ`^oEo10ZI6S4|K|mw%Q`U5L?Ws*z=dd@to)I?Xk+ zsT2azK7hAexc`1`-xasC!$7ug^h|Jcv*P#jB@Bqm&y zVV_lqmgx|{!dA7-vwB@;@)bowsYE(~GG zH~qbLzwf<&^XtC$ad$lS;+0F>RF?@J?nK5NY&)eflnXmC_j1^Vr@`oYBFn~?^rM_E z@=AQ_;3QuR_|N|Bzy5}A{Fe8=_kFjXJ0Eo5H{ZAt0{I3%Z@J<&dh(w- z4>yljo=s>-i|aD>5Q3FEMoc_89i$J00+i*Fbq=&0FalN~J6Y zXFHtVUAcPqJ@0${oo{^gtAF*EU-hbAea&kheBj)XgVRU(Wh%TlJK?H^6Jy`C0ONWd zSmQLtggjk#T%_G;DBC2FNoiS>pw&Eo>7_RK`kng-H1^;&6{VNSV#@K?x2SsWE#T1O z&x6bj99Yv8Fo|j6PA2 z+GbHL>uhaD6lH-Tg7!eEHW|i;Pj>Qa^S53&ckz4v`M>(E@BGd;-T6O`pFYi%5>@9* zQIl=FSFConiqQ?BHOpG&_I%~joJYPq67!`Ni(q+cWibO#AfM{(IO({S&8>cuf29pY z?lw9)%dIkcWoTX7rqQb*rW~KM;>4Iq%2dx3;q_Ul6xx+lPTa*}O%h}FyGy)=ozqhy zU{??MbSK^fQd{|E_!ek{sB&)2{_bO>+ubO6DNlJa&!{txyq&>$ z6H~f@M05#|D`IyhbRA_9Xz`?GQn_&Q5}q%}Vz=>ripQHyZxFD;VX6?2`Wt`+J2z|P zv4gpEaN_dCOaJsAecOL~)i3>}zx4!Dv{wEZHo@#v$=N2ss2qyMFz|$I!kOp^oR!CLA6+&(UIF+$Os5DuICy*BL%}@?dMNC%DDzSq zpQOiXmsk&w38H@^3c?iObF)`@xnb`4@C7r7>6k;?A|+8>_m}Bs)~%9RAh7pMmnsqW z{KJQcIFQ%%V-G_hkA56^*sleOWpNfl_BzulmqUQd#_0TCHjQVmvNS53H6c{hpY2d@ zUmIHK9Fio@xK(_}qRR1|Fzni0R;X2?%$8-eOxzaIL8P-Qg!Y}tF}4|HEym7+lef#* zW1RJzF!x~S5hi$~8T?>~fMJ&?yqaMmcM2$PM9_m*%jMDDtUrh_;LgPAN^wWp1eIx) z1N5Xm1jjsCJ`y}Ss=B+diy|OYIihW4cW#NSm@$bweu!nN9pIaL$S739lE66{bokZRW-N1L6DerHFB+AD z0Tb0vK-=Ke2pcB^2t9->3X?97QcCQ#wYN?1=rdl#h_pO)WND}E!|M%X0xZksGVWzj zc-u=nTQ+94q;55>QscW5CdR}wUqIX&8!l^L`>c#abu4k@_1ww{T`!O z@A2ODCKMI-vV+r`>qm}$*LQyRTi)`PzxGvM{mGyB37l_SxqgMqCt_|#NGn9RsS}j# z?!!aH=u0$&5rPt-cXxd-h|j$6Jl}~o{pPR#lkfQU@BMc_c!ejv&fb3Y+BM#IVTyC- z_R5v3*myslciX%x%r#ZcP8eDbIh+n8eA4H{z&F5r6OG%+o(}RbCKoHj<=Q>d4ZAQ% zp%+23vCW^AObv&9O|mAQ2K+a3w^&n}+ipYh=HGn#o8S1G|LI45{IQR^osT{~^&_A9 z^rt`liBEXq;~)39$K3JgGiOfmb`bVtbm{Wt`|rE|UGKWP3z^PIgxk5k_RX3exJXGf$gOR^Sx!I=RlZOUJB)mJ>}&w zsa&Wggt%QiiaSUq=#tSg>sCR-F|`mjYnaOL$sc~O?3ROrUw!qj{e?gECI9&k{@7pm zbARr4e&X-s0ZD$#miOy;D-*~$Rt*4v6D#2i>M}FDooyW!Sv7XUFRCJOddL;{nUiNO zUAp-4pMAymeD}Zj$sd0SZ`dB3K27;x=vzqI1v5~)oSIt(c|s<`l)*O!JB6tFO`fUd zh8%O1@6|baLIVq7bk^SJ;7*+o=0*cGlby<k%Rl4OKK<;iXD?s7!mKn6c3_V* z!_EkCR#EjrO=Q(9we|wS60_lI@B}wqcsJO`0X;#inab7DuHvd!uR=6_W0bo%uL|5P zJAUGqfBwJynb-g6&wk-&{kcE;XFu+@eH=V5Ub{#D?mh%FFH51f5})m=gvjP0;VzrO zkjWTXtPGXq;waWBeeuG@m%RMt-}dd_@e4ooN-{lh^5jh(7+>#W;IUF`F;;|xG~NnT z#ZF!MBwtoj{MBLG`_3A1t;KXcdgk=o-ulij{|o>3D}VZxf9Wf~;@Kbl(bW2?kJ+-P zcnooRuQcg2YdH9CZ|M+(Ocqn0JNCrcVfwLX4 z$F?+9sBS45I_im%rkxxya&wN$&fxp10RS_;*A<<)Dp|5xm6SmDSyi(DtC(K2%cQ$X zrL|n6)gErX@c2yQ5gT%g=>Pyg07*naRGz#t%_vxNI3brF!F?%1J~Y^x(XMYydLdLLHz;06jx3wj4$ntQHa!6-|IAmGkW8Y2JwXS2@h^ZIO#OLa6C%QqrciLNk$C}d-I@S`Yyc9k^_W|XX4P08cXxJdOw z;h9=m01CeiX`PC$fo8@tA6p9 zKK~0o=S#ozOP=|(kD{=buJCaY=NeCM8lo{~Bb6{1O0&tq*5tq^WTYM?_$;Fc z>fqqr_uTa#Ui{+k{O*6wbg17wd7d&Bttb;M7-t?!Vs1$7#5g9k!FRmrH{N>W<}1)~ui2Y8Ima=I_q=__k24rS48|>< zVxF3B(*qvyPYafMpW%(zJ63X?Y*DVw{kcO=3xrVj8-NSGzNK@wgR=IAX~ zFJHODvv7VgifIs5Cbp`nWz*e>LM3cRhJgo~RG*d&vrB=v#m&NHKf3^8Up=~{?AlN| z`NiG4i<~)mOy`CWFXVYG2izSOD~CvAUzu2NT7l3f^{tArFr;=KC)$JpP5)Cc{<9~a zJbUmfuX!z>>U{q1`qa<+{LlZrFZlGwKKc%7d-2*OE|+sw?suHy0=Hg^`<&(o1Xh!p z!7R1#EkOW@Kz6_Wymp~=jQx`PLOd3@POmL#9rX>h;hPPDY^x$M$_7|G@+b^HTYs9v z(ZBtd|Mtgzuj)QF}Qg$@Xk=>XWwyLy9GkI!Jf$I!lEp>0TxidnwxllfK>#1u;j(*?w{=iTF z%qw5`qR;-^7k%!>KIdb2EQ04AE#XL$Hs z#@ur0H6d5#dHhoV9C}*sP&3}t%i}%aII0TosP%67l$IDu`IC1^Jr3u-L4Mpd z7Cuqpw1y$`RG%!CFWnK1I6B&vuVYG#*eX*2R${L{T@9^7jv=J#)8i+O-FEua6CdL* z%d!t<7|fM_?46b)7rEKrjK$)hvu>xxG zsI-%(m6cD`Tk)HK5rD|V6DlZ)7W-*Uvh*~mkDLDKE=FTiC6pxgIiKsQDJ#p;R z6CdlxZ~d(%?@Lo}T%ED_Q9*ZWj>CD)7$liOp}m08Eyeh%cButx!DNDL%yYP?&rE(g zQM;SfXi&sSGiz0$)&bh!Rxm-vpr+UrdKVhBoge0FhK$gcILT&HIz^BLf0~bJc&(0J zS?U-=O#PoW$GRd69}bRwEr5pw4|ETZ0sgi#)5c!{SmuIoXNumAn+Vq~Wk>fdM*4&AOWvMOF(_GwC1j+FO#^N9 zpo=v2Ev@?IH6Q|K34z+vw->}TK!|2GvBzeGUt`gmH_`|fBkS(ao;q{t!uj*x{T<)) z(wDyMMSNSx3t#lCXFl`n$=fbpy?pWdB_6~C%>%;}m5uz`U8Rm%1E!Wo2v&3s__9uZ zuHfd8x4r!xKlaj>eE;|VyVu?Mdd{!8#PI~~#&r)l=IrVB!@QYwjgQG4yOnq0K48&0 zkND6aC(iyj0+9qCy7N4 zfW)&*+3>xTmoGp1v3ET7v5%$txgca-f#v^Vu-=v#5oex@9}hcn^!)jAvCW{>Eq%Pq zkGK;V4x1uGVo;eQ)buejON|v!A68uAo__TC>oeW4JB_#WK9DgPFsY~tp(zO@Rk!t4-{Ox&PRqAe41k- z3gH}*5OKOGQ(9Ij(zKO`+tJdrPI=M1cJ1H<4A1xlQTbM-IGHN+7DMh2xU+G_l>g1p z;3tlpY6rLRU9UG@`m&$; z*`NEx=REtPpZ{r}_IsZHsUP)`&v@Ju9((rIGsN|pmKlPVNxEZDdZtS1*%M?ZTMD2B z8a@_%?b?+~7q2{Y--Wy1cP|OD_hlXt*7JMri0sNK#qtfahTkA!gD=;Vh3uhGtI z0r}rtjUJM06F>rcOUBQ>1MbEXO}wX!wrFqUY^twhTgQqO91PotoVV_x#~7J_e;ICl2QPyW;| z`wRT~3yKV_rHi z6*YH=av>@bLiP?&VObBoh>#!#^P<&>nz*A2%Q%F^NMm7)@z-T~98Or$;l<0=vPmkb zgE=)jZ37}fybiOJn0CP;3my9dl4k7pfN6$cY*MvBWcNCI)4BICJXCx%1ku0%>D_5w+r$R4NI(0ce(5X+0rReCtSLF-p`{j1wt!(WOX3 zjede@7!(Ek)vWZ=Z^jCCo<=G=rNrl~mvf*iSFT^X`uHb4;d#%0-tT_F3qJ98Jogz- zf6BqZ>6^Tj#h04!UI}mBb$U9Z@^Sxeyd})Bf)}x)Tmf=)<~*KH&A z2#^w|xYp4cbG6F%&>TN_-JP%dS)Q%pSrM)r#LVTZIrB?aa=L!yDsU+etCZRjh!LSf zV57&{es6TgGF78F^-B#6!C#nzigVZ61kgso!`~ek0XuLU6EV@^$ZB3i+~f6I#@Z%B}JPw_jZ!+pUuL3l}y(L8ef_LH}Nc9JS0g&p>$Lm4X^PV*)zoMZRr7 zE`Hn2mAl_}&z*O^;WfYZtH1E`zj)_se(k<{?(>$}sZ+jgF%@{vSVs>nQgd|eGoQumc=wPGMV7J$sPA*9;m_<46j4z-8axVk2`{{`R_rA?R6gIIDej_ zG`Fjs@to)Umf!m9CqMNmPyO(xJ?Tjw_SnZh`nKE7o<4n=>sdZ|ts94NUOBE`=lS`I zJl=i&BEOt*|9ubK|KR=i-goa^cfa?2ciny0yYFHYd9MDU^B4O5n7Me^}_V6>F`HatCf8>dbyohwaBM^DJq+V9f@g^^$cRywB@h!x!{*_<-rT_LSN5=Fr zJ{UPgv#gTY7omT`TccPRsg*&3G{PAXHW>+tM051ETW?&tY%ZRp`r35*LqFu?sndCv zo-+E5bN-ndh)j*;W`oYC{tS= z{cpMD;``tK&|P=C#LY+P*;ldbOft+(>Ijy$`eK&i($7FI39W^B$iN%rYblgv!U z(Sz0TTfX@vKm2n)@}ocW&EI;v#skPAod`%OV3U;PrR@#~j>jgczjbd@cR#4Z^*bo?Y? zc{GXH5TzSaV=~E5=~GyAE^9cs zzy&;(^5L%9wM$n#ZqYMM{rIyfUY8a%vGk2TXdRU?ipRvLm5M<+ltmm&qApnzqk|NA zvLRqe@O2hvZ+rN{Mc%$KnYhce*zMCBUcS=Za`g7w^&NtNNugHZx<`cp&y;XMc>2_p z^B2N*;cW$@HXu#;W>lq7Lt#U7sx7VRhJMXpk`(o_l96sMNofE>HbzR9cP#=!Gd9H^ z*wOD7MOXj&=^H+yarNrWE0?*5`tT3`u;+Ztb3XRBKlfvP>vNv=v?o9DF^@ZY=Jr!3 zPx0j`KAhoe7yNj&_vDzf{A<^)^2^Q-o;&yUcfRA!J74#j*Zk`1Ui)ir`^~rbB?O$> zADqP8oi{@`uXX_V;>WA919Sbtd7k^q2rQya!7-*arK)aHM$Bk&tm0h`6>@Urxu9J> zPQbwN6^CmiHk1GaR${R=9pm^H(Plial^v1B5WfS|wb6G=$fRq5(i3)X=~$QKI%D>T z%c-NE!1GM>+Jg`M`9Jq(zV+{Y^VJ(y=Yr5Ph+Kq}rg%UMGW^3$9Vbk@pY~OM<*UEz zJHO}HnKL)8U2A11*0?0Jt5hm-Gm1pO^0nVq%0KGP%|dw+gOTs+c)mlMp}c(g#-)q2 z9`)!)KjkSO{a3bDs9}r#|&5PkQ1Lp77{1k9H#QiBj$#@MFkB*!^gKtPOr^1hQuH+$M zUluOiI_;#`QH?xJb5fV2wMc^$XqXcxy|>)p^p{*x5=#yG`X|udf`?XuOjG4?f74QN z{KvHC`f_T#S z>}|K+dgj)Xr%y2}xV?mzqskXgUVr%Vl`CFRT)f0Z;pKDZ{lsANG9-r)J~-q_3odiw zNGH+I_Vp%(3nN!?n=%j6ZIcpAp&TUN!eP*8a@XuChe&4alb-aXr$6H(pYg2ceC)@5 z+|xhu$shh9Pl7pbT=CQP{tku{2Rv5*c^Uk$-?MuD!iBr;x%(||efzJ!nHl|tH~)_} zzV$6{3{zDANjHW^iAJ-%h}s9 zff@9vNJbg7y$ESM&(!D^^IuN{KQvUCx1d2fr zB$uADZ4!=tLB?XDFV)g*&YL0wbU2GmXOtCPVUV{ZRIN_8`?ed%Bh4_SCUK~}R7+sr zzu67`E!-zP!FL(NcZa-Vr}Z3!qK@AbD5cmY$x1^r<8`7fH4=A#Y{Up7$g$-YiMR#X zW11GIJ))`W5mCfAXdSMux;xoY8jY??V5`9+Oc$#?I}PTLC!Ae_PY?<4ug>Z4yKxU+ zyufQu(hyK(4eYsW3~BhKG9!qpmT>BB29wg+k-}o&nv{S@!dXQu@!ulJ91zb)}YH8y@z2+U7#@phKCo!|MM z_rK#EFaL=j|H;#*PM*2-)<-@1_QyT`36Fa`-7>k_5u)+$_-(iKq{H0hl0PW< zs_9!DDMSZnWsgzbu~|oSJQJdIMycL)ONeew4(X_yzc^?d2V&}z|3w_)L6Vo8L(#KV zokBXG3pmiim5c>9CDjq>QUaceIO~SQGUFHQe#^%^o0H=!e5w;0&YpVufHkI?OV<{_JhsnSbc~#b3Mg4Zrp)uSIxp`V?>eoVksMg3mtsjyoQ8$D?k4)T5kBOgT?~ zxjMMPb>M>!J#gQB_uqfty$?S4;Q4dsFY$e*+{ESF`rriTi+&T2Kl0A$s83qSiaJ;d z7|6)pj1oGQAf8N1M&CV1gqbJ4?IzU33{DXA;|SAa6YzS(Dd-Z(jV^4O`9zO^C&PeHWT zGCT>yF|pyY)`rEEf7CH!7-9S}NtQ+GN~a5u%X#<`Y`b829AP~>Bq>fPX1 zBKaJnQm?sg-h2Op_wv2FlK20bghE(PQ6uHf!^u;}Pcob?zIo)yLwReH|BEi$DMqJf zQ1t^Ys<5MJG74B6)-HB45zrXo$ch@Hunh_?a_j zZoB>VM?dC{+i$y#_9>nNJ;qyPe(aPNB)%@|!i5VD-2cG)?s?xs_dj^y;-$;HV-L|> z^`1C$8WxNYmQ+Z-QXpQaYZqP{Ni&|s)}*3C{<2!aWtc6(>>F$UC=B7W4iYPcF*Ir{ zT9E#1N(R)+IO}{17qO>#0<*`aoA;f+c<;Fj9&UQ9t~W5b&(-2<+i$Cp^FqbPvD>6$~kvffaQK-=lm*>yQf&Jof>8^IhYm0&twt^ z*t*zuzB-=_$Di>tgAHjl>?rS2VcL80I&5|cijCC(B-oaPT5)gGi~RzSukivjKG+&; z7{ttOT)JK|w@AuQ_Fa-unv=-VB#JIJWEG>ur~~% zV$<3hn{ab*YyvB1KnjJZZh^6GC`*{;w&0Wf(;K0o)8c`bsswVl=;LVbe7960GGL=V zas*_eZu2%s{@B1uJzXU+WSqBF>4tlO7L^FJq3B`e{)u1V`i&Hq=MzyI; zvXY91nR2n#p|r{t*MU((LctPqW1`+a&jz{tm?d7)VTpBumIymF@&VX#N`I|}GiE_3 zrC{k7?Le6E%^Syf{DEgLe10siYeBE;5ZVHUh^oe-Ritz`V;Xf=+*Wm)nY-iK{R$NW zg+RAH&41*xvFJ3V9SNO{z^bYo1rM&xJ@#>0o-uG>G;pN1ff1I%jHfCr!beRg2vV;d z=1jnb42>GaJ7$4Oj)DLicFqiFY>by!Jfeo*AcYxtyx`G{5Qr74pskJM@Sj?4AaPPC zZu6?hwK&3V&}ktRvam7Es)pvEN~$~E!0bsz2NqwRySYTV3Tr2v!b2PXJ`iIx-LPBD zo{OQCHSaAE0OKE&Iez0;s%kX#e~aI?1~o}evS67_+J>qy=zB9Y(!JHrOP?|wN}E+| z7%R7&p&y*!^`0!a5zLc3_df8@Ti*7r5N6k3XSl|1!L#Nfo41I#Gkn@dL-|Y)rv|(Y>%gk9=HtD#c7aHcwwrmxo74oR zA~rofI!v8rfszIx(CTFTbYq3kVklF&P0sKtTCAho0u#sAHWyL2%-}wvXIVZ0?uXC9 z`pm(}k9qd9;f9T0q60cd1NTx~T80T5AZ&6j=DF+5gQF)Odhpy^-}+W5@u5q2_RNXF z5Iu>}N+f!#FSf?BCSaQ8P+1b0p3s&ag0k8jIm`tWM0~4+6W^TH-8{lOJX|8)xPG^I zK2XMEHrWlCBnBk|Ry=dZ+2?g9Qocs~1n+PX91MO;0y93Tl!C{_;tV$_tke*~R7L-y zN>!6avTADMY$i2!YdjV|_vksj6Vtip2q(%bhcW? zh$LvPgsy*B08%~G(>k5OOq`@`mYIO^#ozO3w*hpmnuTY&J?lng&n3!i2fJAiEGF^F zO1zrakKUpgL6T|VmmN?of1`=4L3_z7eLr2B%7lwoN51f{rz{f%4N2keS@m3sbM55U zMYP&w2ftz@q0pu^@m5#`Vuf|7(~dE#Iz<_qBv5@#SnJQE<|zgyHK$4^dFsKN1{bg2 zIRD_eyY747$Zx)lx#9$NK9?I7pmRLU4#;CBCpfO29f?VBVw3m<0abJ(W}x;Rr~51g_1%gUhgkcs6M)%ORray)XS9&(XH zgQ2&W5`Xe{Gx-Z5^qA7#LJVrErHzKm%x#^ro&mBT+5|h*N)iFBCkB}evJC_W6%r4Y z43%29S_>uDbcb*>?!FpsRc+7c+pRH0M&?Ci2RB&p-4hR5L+z{;|Ie1xB1ve0PXr$X zShyN5s7*40@l0>mrj?Q0=uBDCcjaMtDm|`ori>QNVirF@fK9i>HdX6alWmR7W`^PT zM6^~jI74I48uQ@+MkfmbWwK;Dwze|=MwBs0o7LVj^T2&7ia^>r6jOBb2tZYBCck7I zpQh3prd_y-wXhs6gWj-9Exx}2(@R*5uuHAmUhBoo`u0^W8cc`oGR(GvBobOV2w5)9?7Ae{2lI}>a1n0b zMxgX_j5iM?x#ZCXGS1LDRaq z&}f|c>!WKh8g0}X)}{iL8g^6DN35faOvgGu!USnXP;rtL1kh&XU#~qu;3q`FnMdnR zcN|(k+en z)m11BJR>)9a8N0t8)Y%PthL_{--*d7h_{cmm9z2nXG5O{HG^PHP$AX9Kl`5ddu|^s zpb_dRIr=<7rL?SqC$a{bve2+?43Sub$i@V{^uU5SDkYE%9EdR@hZRG z#!!Yh>irjcF*h`saBhX3v&`cM$KUbJx8HO3-Fy_>+weS#QSz1l;xyW@oIc->b&wvjHvL(+v|G+^%=ftF# z^J#8EaF#>ccP0D>)m`1_B}lnSPDx9ff+tM;^mQ-5c?LsMu*lf-i%mn5NN8cHmh;r+ z>X2v2R;Qt}>4nE3|NEjiz;UZXnuKPXL4c`k4;oe3q1|FCas)z+d6$O>>!>_-b<6c= zM66O0OC^;!5Bcm{c@9~xgiMlypU_Fdu>C_832O^t%vn;MF-)vnAEc^CwUolZ(d(pd zNw)dRuxR6Sa4^K-zZ1YN6QF4-l7Tv=gzf%YWX93J>(9N&{Pn@Cn;Z;Lq}~9=9~J*s zr?27#8ug^DJxq0yiFZ0YRr3AKhs~QOCXe%lN2*v%8B?a74IwZv6tVf922OO)W~emd zLebA-CsM#8E725FB_R-NoP2wjQQo~W==voagAo(+94odXrMoq8hUFYVv1D?wO3gaO zvICW1cOU#(GMxSAk1yA4cys%a%b)!$46^(5|IW6YwvPZ)ItnX z$u(_k@yV2DgCntsNW)iyHMX<@gS%XW2bBtjdJ0`;!SBix8ZN$C#wP^D-q4AagpI0g z>rZnHm1?FL6VK#NYihNb%~egni9<} z%7TU_=?2raixFlw6h>_=YPcqWrc=^b#0KY5tW^`u;dZM=D`}9pb(7I;7^TIsAG-tw zw@x0lq@;F{spc?BUf)EhGJ%?q@BtY_Uo?-Z{9%8tZ<{%Opo6G9NVbmV6f5<1N@yuSu*-J(RHLq@QER7g>Owx7H z7Q`qOx^4%*OuF)Dyy(^{ry!G05ayhu2zlLKzJ`+$s+d(;6qY;Spt2o;;vr()c^fc9{0pME?&Ll8BlB+BNW9Q1o^QD2uMQk`|!u! z@P;>DxNwmtPWhUAZ{)`wlT>Dof~{4rW2HSPNo03GRqh$=LZH|A&`BhJfa0#DS+Q}1 zl4)0Pw?Yn^J0q8T80BYyY4ejIh#6u^z;{K)J9s_S3yz?}y}5_{HbhZ@Vaa8Yg;qNO z^R`LtT}#J>l252sBU0lgo~2JCyGklBaU~o76>l$6odnl{C6-Cg(ruztL|w`<@@0z{ zj)tG&R$(z@RS)a1N=n$=SDmv|<`<8ATxSszDuM#ww@vi9w_wFAR0a5@4cW z-@^maMBQ@sRUA@fWJn9HWY$~!04A=pDC4!2%p2rhWq(Nmvf_qy;kXJs#Ff&Bp(k1qPDiv6JXFR17(={$}Zu+$^41fWSZSb~xZB0%8h8|q043`or z0@E!^4cAoNevgeg|@jDqmhk2yi&utf)KKPY+} zTK;iFWc7E5d###pf}+=S&*9LF!FW|{^RrR=BJ3200;Chp%$!&rQg2?}-FDM11Cs7? zB3fM2Z}2u3)s4+AjUC>;LyEUWZX{z{@$ViF&NQdGn<2OYtMeS=KR) z8qI*ES{1WSBSS{wym7~O9+HMHXT0IY6{a8i2^6apcVia;>ca!PXEv@f zqcdmEe)oMcUzIBs+9iz!Fukw|u6tmjDt0c4ph`Rvh~PWd*|p#R*)`S^L0P&Wv`2+{GCO z1LV?VAriK@Sw}jvYbQWDBwFS{Mc5J9v!uCOwiG7)ExB4bBc!^C$8#&fA;sF6cJSj^ zFmOU+2#oLpj4|5F!2n~K%|u3QH@$^BDFmhQ79*rQhQZ& z9ZTfPY1bl$GTZ>#(8JTZIVwo^{ z*K)&Yqs6uoFvP<1To;>@n8WA){2Nv^+Fi=vF(KlNdc^^cruJ^?mu`e(HDYc0PxJU} zGZRU@aTzZ|xnLu9X3wDj)uNd!W2$8kM44s`?YLyKwG(R#xYro>`ix)I<4b2+kBsBN zY`0)!uKS`Luhv`Lo_=7v*^@sa&Unp;7DAtKM^39$4uR~b?YFSaEGSMjgS3(BPB8 z&RLB_sjfMyvGoM7zOJ<#Ywc!P*y$eXC{e&4FizfjcWY`Ra9|Va@L^v)e*!E=Cmii) zqQZoJ)gwr+MmmpfCd`_9m8xHhnEaE=lyPa&hkq7q#&SWg1b6-AnBwWj-)!hCn#*cL ziW7bdG?wjqmtn7P0U1jn3%Ud!Bt$G8A)hWAkmFl`mFr^o!Q37pnFUtIW<@E7P8Vba=tQkA z!lV^oRzaEHHyUTLoNq2GFij-Wi_ScEM-bI@$7XX9+!!LU%zl*a#4_3GgD&6QLDaF= z?9jZ=j!?K<2kKk{P1B3EzTOZH$plFtwAeuf3q!gr#j1Dv^x|eZNP;*X@z!cP2A~a? zR^btIMdp+cv1bLU5_TP^@p~7%H~3{=`4>Ow6F#1Az4I2fZ-JzQTy&LX);`hbqm6uy zjV}$965n2aaB%W9ci#C8U;hpKIyGoM*oZF|Yq=}!F(J{*-rC;aE|VV$M4^tqA(vda z7Lsosl!BU>aDV&e!$*%^yL{>Q{N5M*@6Y>`bC)k3Jq|FJiqZ--p<1P3n!pJAxfuwZ zJa)^KOIO}-=bb!_W?Hb~3O3fXp&^TuC1X=ksg>9+QdP{7W&)Mh+$@dGnuFlQn!0#i>jEWpLz>)&34D@bF3@V0AEg+dX`i4Y87b(o* zLch0)Mqz=v>Sa8zAHkoTMg(@+uYCb#%ADfbJ&{9ph zgP1)nXc!GT+b!B&fDSb(%(ax>xCAfQgS~<6D9JP)T2?~Cdrj$P+m%)<%eYfOK_1*tr6|ZnN^=!0WpqSB zs^hZ5l6&w$h(V5l7zc3Ef{Q06vFXTVc-C%F3>9M`Eh(}p;k1-lt*HipbYQ5{-oZ(; zaL^hIQOmEi_Cn(s3?aL)&2fufVC_`51#ZgN#iqzK2^3_dcr;mUR^Guu0E;LCTT0rr zl%=g&k(4Qj@mB5y76@C~#kH%OQknJTG>GxPtBBIP8fi+)BiD zE(rBYy(eSjtE9^|l<4d+n=tGL;g}U9GefbozpS%OggV(D8Jl=mj)haT2r*K;+7V$X zFAU;QOxFR+_5*dxYI6zpLaDvF{gCx>;)IOH7bj8Tww|3xy3G_GcqiAevmt1G8zCqP zwTWd-B2w%UM79cn53v^}$R-uM@pkcbL+unA-*Rk-84zna61JZb#Fawev80c66U*7E{_ex_h5akgj zYXmfk;T9$MOC9gE^5Hp?&a-6m@gfC90DQv`l5Epw6}MzEHjP+w=bx`3k!k6Y)ND4# zxT&g(@-Z*8E{B#i2RGqnjzgm*u2C~x#Y?FRxUn$OR2i(I42jwxU8FX_M4gzMQ*w)u z!DeJ<*D+5GOGbdA#Zu$+yHAC*CPiKwec)tOYFvoa_th!1?L`gf{x2Bp0I^h zEOp~4WCP)3nr1Aw=%|yDUfLE>x4>kxxXrep+FOeBVqOHA`}GkcA&YqX3D?&}{ zVYLj9WfbiUzL-lsW@cQxD#)f8r5dFoWhX-xwpg-^ByPhl3IS@8R6#?$qrY$hfujBK z4DhV>6r0%KOCIK8vnX3TV{8<}um%Ia&mye!t+VT0aS+CZ)#Q?k==HrEdJW{V#2*)g ziMkpyB9-aova#4qD@P*+88O` z;*~`$S?{{B(6veE9@x#-UUvz-cX`p=p{N2t?S!-zEs?rIi_}{w#Kq`P4xYL$32jr! zCasSCNL%+x5jCT3Lw9IQy|K$6%9mz_pmByUoh?+bws=Cv2}uHh+^uoqG)Rf7HHjHP zHW?pfR#>}P;#by{WHgp`x7F3&Zj~HOtHJ`A-Lzu7YsY->8Y47g?EqxvBtnKm`5w)2 zWb;U&*(Ar|7E2!)6>?C@0?#_P>I(=v3o_jdgBWYC*w+w9GvU?_lqM?|VbpdT3hA$~ zY-i?4OydUaVWGaJt-mOiGBbG$!>uu-&>gqc(jl%k2Fdi7HcCy@D$GCXHu&`tdqyQC z4S)_b3M+IgV8H>rk6%he0@lwPa zQ4A`-pz@2ade!HB!Hdpceu($~^j?3{^z#k8UBRCX-eTjzkS8#Y-Mr=DTW&n=F^~Pj zpZ!^{`PJ9*?eqLfvfqY6z#fpq$zn(g&!Q5UG@XL9Ghmu+g;08vr#-C)Z(%-s%i7toEHtVZJ`D;WYpTI zdoaZ85{9ceTPV_6WmO1hMN4RCMUh%ynu%NmW@)5)TDBnJkhUJN5QjyaupD7>?5YW^ zNSMl@=rs<9&f?JuDCL<{&6+H0a*Qd-hV9V%;2r7aYS!@2|1Zqpg9 z?gg@@q`QpFpv+ z{ECnm-oVMVLe>sXGMLaMCv}{lGI0wuA;bp77Q4KwTEkt^9nfyZ_G!{nf zT_;||O+ryQ#HOV{I4PQ{|6CS@MyVVs4R6jh0%v$AS;n;VAXE@lbYV*dD?%E&Rj`r@ zP~bzX6DSz9OKcGbHJgFh$ri;{a7=O9lgFnTnJ*f)RjtZTMP!b#|95qbll^8ZDO_8; zR%CcCeso=6q1{N6Q56AKoWD@8CCmBC7{oC_?D&=6t9sz)Wa)^-Rai&$u^ zSC>*>W^AJx(&cZhB1l5giFu@jjaJ(GRhuBAV2QZYNl z1zoJ|Nu=;82_{K|t=d)ss}k6zDWC(Q#q!Xhm=UnwfO`+ni0jqY~+x^pFwX~_rmf{)8I-b4&|C=TmcDz z{pvUdHMZf5i%EpOeOq<9G;{Q8wwq$J&s-UCg;p@NQ<@iI^KdBq!g@j1l(I;za@2{Z zx{cZA@^zg@_*Li|SFfKwaf&CryoPF0p}pn;N$BYVmp;pNOMjz;`tXD6fBcXA(I5KZ zAAap?Ug!4;UcHKv$bMr4h7;}3hEBlTz>u#Im7%sRH`kqB#u18NS-5)f;&1zuPx`8_ z`YShX;mg(Kmj7&EYP;p3MMGj57{Qg*^8L*#SFiol&%BZgK;FRgyHNb-eJ@H zQ#1V~R~*)1*l3Y0pKUvy=1{Lkm~CAfA-lH?iozu2rRrwB3lI`}^Jiy9xru2WYxdz@ z76}qmfi~ITZ>iUL(l@&Qk_(B4%ean*w*>;t3R5ljmi^8YbhK)s)m@UUF|<1il3ovo zdQ51WSrT;G5ZZMEHHzV4DVk7~8kgs|$-6=wYt)IjfJEAiH=$Kr!;tEv=!eE^oQBCH z+6V)aBCK{hyI>p7Ex5Vv4sNkrByUOAN7GJpHAU^C+r~udRs*{(F>iCN>!xiDQ-JLSW6ugTCV_I5Gq>q$ z6@#%ja#B>_iP`K^Fv9O;I)@fcRlew;g!Dh3qaRiH5%a~)s5`~$m zS1@An{4-ERIh<)+&W6Dtua)poS`F(DU@$J43@*M&ZqO>ynS zwgD{Yz3u*9oujL~3ZBx8sk5mSnav)AtjaEAN+nbWDrs!Fl)C;{mfytFqyhnHvB`Gd zR>$Qwz};l{93uj_Q5ts|MU87$aXBQ;Geg*=2z!>0$Y5^}@<(PMi;`X<#z~EwQPWrL zb}bq7y39lA``X~L!m35;h^K8BZC!;*R|#XrS=dZ#1!NnENVemhRd*jpEF{NZ0%#qs zhTN9=VG?EhHXRL|YCh!c^e=E6j!LnP^?|3Wi1>6XG!(>HdjpRfuODbi-?BpIU}iJ)tYNGYr4YP(`v`%9gfYKGN* zDKk<<>Pw{>@oF>UVyf||djh*sD#iFLTs`@&6{Nhw$7R>iBd5;X{mys4=dSlW^=VJO zboH`s!I_oV+2IlcEC3qc20ssR{oxP!uqS-|*Z=J={9}LOzWX0Mb#Q`bP_OySqgex= zD)X+M{!(FKqt1q>lO80M`0Qsbh~SS8p16AMp=W%|v%cdyzU?EP^r7c3U*O}5*aj(X zGf=dhF({-I2yDFQLw55Bzlr_2H@xW;KlRF^r%v%pkXmDgIyJJlG1EC@lt#ZQtL-~twfX~%{1DW z2)ryatG0~0JF8sLCP>VY3%bg0J4+bT3Qe{|6QZtKwC84p9*MevQ=*H~#$B$!#@xGv+kqV@k2ctF%Zd{NOWc_7a$ z7|$7CdlOc_G^?U%x|=}`U~x83eFRTCc1u=m{Kbg%ni^}XG)wiaC!mcMFL)-GV#ZKB z#hn~9k*-RYYj6tPb<6`*<4P@P9QB%jyE+cbt%ew_C>WQ6kxOM7!cX*aRZGhVJAsoq zfzS$-mj&Be&&FmvTxpawt7*8|3b|fa02qkP89V;(7CW(VmA{}U&VGsv!6BDN^g1;b z*$hpX;4{Ewkt7Xr7!1j_#6G>%>S$*7DB6|?EGB}s!DOY#$t{S7?S&JQN~5aBBzDM5 zj|v)_8qU5VHh!RHvE5dqto%l}=?a4ltkPcIxGy8OJG>nqTfvRtmQMzKM`K{I!Ct;Y zD;szFDaaS+}Yhiig| zWt;neZMoAwJWd4cuqE;?_D)zf!>M61SN0@PtqIl3~ve5rG+HvfW_-D0B}H$ zzx%yP7cD7c9!#`jP_GH9E;*n?gwCF=946qVd0nz|A!tvdZHY)hbyF49W6V~y!2EA# z(;*pO%N%hHckZ3W0t{eS>~@{%>uXpRAz5O7NHO8Y0Is90L+lM-$Cg`_AzG{&ra;Ok z293!(`au}wLOHgL^B5ZH)O)- zVz+p!q$6n+L_@uB(h_A8sEk3!K~;Ws0u*9kMq>w{E6XDVwW+S_5?&lKNw#85eHYFa zIIufqITC6`Gr?AEULY**@;V{-1eklp;GG)NgR+_XMWMaLxr_OQV|!LrbHP%YRjG!9Qt5ff}P z8B0pwga&Mjs;_1uw;)L+)!xDthb~s*y2X!^)J1aHgHEi&X~g8v3NM34mPW6^GhDt} zR9pR?<2aOa4{>Of3L@1HaEU(BE#RO8mp1Y)(+&=Bjk1)@aFZ2d&w1Ig9bHpWzR_x^ z66v6*HEv`ym>R@LFn4aXdlLk?#$vK$I3`%+3YN7->L&K`(aGtYzWQxUV>|964Az$N z#NCkgeYM;v!f6M*R3I(335G)w?fzZW#w*lV1$LlYmga@|F5qUYg9DdIKY9ze7k96z zHOrC&(oSb~bhFBsNFU7o+R?AKYY)a!j0DrguNDhQ!yO^P+`F)u>If0fK}!9LH9(OB zW%<})k!8Ywr>)@e@rY={z*=-QUTy|i6@Nh)-*Hg-{}J}CL7sM3b>GbN+}@ic#8ub? zNP--a6zBp8m6W--oG&R=s8muo6qtZ`Rg=i%LZ*ksLbvu7H7S z6h)Z38ze58?4W~aFHQ4gMY9OB4KmqUHCnhO-X+W8pfq)p*=#8ckH1z{x#>xBc$QR& zwE+ofoMn3|hl;%@KDF#QK+HZ^lCxoaBnG3d z-JarOmnRaVe*`83!6#s|oLGj%_avcK#jT8*q;QG2u3suMTFLtut}$_!wnd|5)$~|H zC(sU9+fkA^bB^r^l*?Z4iK&KfXTF2$nKBBHyMK8i)4< z)Eo>Xn=M&JJC05`FmDjG5pnQvRm5t-I#n zemQt`Q@_LW;nmxI>hJ$YU-2K_zPPP?{tu^}Fj=M_r14L=ad$uUJ(&7RLqFE{(U+h5 zlVAIlpZS@8_`mw||II&s`#Y}Pymj-5C$HVq_h*WS??UCw>CE~s4Eb7;xyPJFI;bB{ z)ZaR;!7{zzPOYBGm(5QNrX`9kCmW}E6;`7 zqNMsCHE!L0@B4r6M}PQ#lkfUVFX_wEhyHJ`S%UZF*(@E4Srcb)mL4vd$!l!+@0z;O?bC*9J?j3wx|nj)5;_cGcNI@9{0Sg_|S<&AXvma5aNSIfkWe@l7Qkr z+F;bFxG*eoEqlx-Psp9YSaVW}Cg@L&&=7sH7Ov|a1mjcA!B*qJv1X+&DMj(l1+CtX zcAw<63s~TzA)QFEp4;JW4df&Q%u2YrYD-*=r|Rw{IkCWl6j06gpG}au3 zoY>>FPOe-%8;3SO;z?5?#3DicF>|szFq+vINtUyIsCzUx`F8m}!sQKR{ zwx%d!1=t9OuCyYle6n|q#bb&@jcgck1SiZ>mbzr|n{0enP$KJabFd|VV|ggCZD$ft zUO!Oe*28?Vi9`cwMp~o`EA~KRvqOVcave6-^RZ&NmGeNDsLYvb)D_H9Af7`wDPXQQ z4hjkF1Z`OiSr1k+ESfcDX`T@FF)6?y0HS9 z!l2=5BTWUnk-j^X43Xef(lcdNd7@L^8scjyButenTO_->kO)yUp=m5=6CR&sIj-p= zXzk=7N@3fAkR}@9W+35k*`y`w2`9=;Due8LGuNS9+7zSmq1F5DkdzQR)y0ayWjp3DMRF<)EfL=FUnw zUB_JOEQ-%9Cg-DfFmemj%7ybGhR>pz00T5qdVH`SwJ=W>##JHlto3d;LwT^rWA6B6 z5d>y?Jp}JgRxWh3XGS_IeQ9m^_^%k*o>of?B9SB`H~xs)BX>>iUp;umt*3wRt#AFMcm5J25AN$%)TrX@ zMIPCnH3Fz9{B@Z$MvAvrqi`;~r@_b6jfo)q$5nn9Bh=FD2gezP+VqLCgiJkB+#GvT zXA_9ioC?SV=hdTbAeJ?Z3NTMIbMvN#9ap!9NG=dE z>n$PJ%&_FHQ{_opEO1a6iOQZHG*a8zwhUVm3x(&fb=HbDYShJvadTvfD`&zw7y{BU znZPMfxOojp&k3Yh5}?`Mr0GG6$D|;Eg7@Wn(ZlKdNLXn@qk^ zv(Xl1ErcRnf2G^%_=lN1G&L$>HM0d+ z6;$xs+#B3P>Z)%N)UHM7q8FCYiwulbeO!&-NZ@H;k!UskJgXE*h{l93=?1yim(y zJQ2nZ-!POaT+T-(qZ0yMW0?hrDH~e@S+`E$wkH*3Q*4|8s@29-QFhRny|E>;U4hPS z+o1-V?b>czQ`iWO%>)caxD}2&2yun9e051`%u{4R4mWM$w2sH=d-8aI%wty*jJ`fy zD@v1pHauCu}mI+W+l@9n|I%nDWCxU8(^Q7UDthvy0Gf zPm`omsnl&bru#_-o$O{by;St_q>Cw=1UzwnK3defV}{NH=iYd+;uU%2xj*hyeN`plu_-8sOj$L}u{-+)<9rto~RWVp5O^pJifw>NiuY z7`y}Ktb3)7aVc=d9Y}D65xTjipJUS9TkiD?igkD&%wpX%H+8sm7qATvDlR`Vb6#+i z0(_QJb@5J^AqM~fc~gupt-`Z1D)YhH9F9)rg!SAePfTXYxl;Tbjnom}2*&4gcc4l! zDN+qmxysxrsfTaePH5wXP28k1bQP8ZWS$;C`Fplxou|V_0iu?EyG>Kv$l$Jb-0ico zQTr~{ti{5d$`aUPu-BSRHIt!4(mDO%lL*-+Yv!!iCCqMhteu`wqE@EReY~V0a4Z(p zts>a?J!r4a+SDtD>kR4cQ%ThH!K#~Wcpw%ulJK=Or!(1VMAMaELk{Jf+yjwvU{$_l zCZXPSao7<}Lo`EFo;=S6WoQO8EK<$RE*ny2G62tqJ`S1%7PBH*19kvAn@9{X=?3L_ zGOguzfGL8(l*SXK)zF(I%aH*+@B6jZPS=(Lh?-S}V|Yn2q*5Qzxbgerj&TZVHP*Ir ztkg%ciKimFHP9c68>hul(}1kaB*ul;MJF)^Z${)4e#Fac$UMG&au9zgC}W&H zM)#yR!W%k;ZmFxYtqCcgYF2Nz=!hqjye((VK&&2we~_*8h*;2N(xe3bbk3|>*x>xi z%RcYOYMW_>rB=heXXFpSs79jH6(QVIR-2 zOMsa=yx2brp-6U z1v{6_5I3`Pw9QGFvlC>tO%ZwXZ);LszQJE#lij-cgMZ@(zv?T#^3y;4(_X&3r#Ss6 zp}+TEeENzlxrRF_$?HAjcgL`wH?Ln@UOjmJ<&VAb^FHs3-tYzQ|E3T8_V51oKmLVZ zeCPlD&fogY-+bTu-}l^e&)s|Z!R5pI(x87Eytuge%qw5<>7V|Z&;IPse%%{i_XS`0 zhR^zp&wS#UJ1@QX^0O~~gkK?}MEb%mwV;8EjdsC#=-PsK*d>eAczOMqJJ0;U|N7Vd z(c6Fi#+}=I9jb2@RZKPpp0kTU&gC+DTUfd6rzeqCq%DbMMR>GVdgF(w|Mg+&qCyFJ{c!W`1MAqj=fR@bDkLR>A`2cVh`rlPjP6xAMuc8|v7=%FAo z#f_UxyG=MkyY)@#8Wz8X2K&ODA z9%Tz-IJKm7nIZ$&aM&e}KBS1<^n06zi9lolSbocd)nO(VgQ0!haal)ZyUbBXbZRkI z^Fac!lj%?;fk7<7qZ^oJ4?{h2RI5P^hmP3RsR$gH%%Nd`ObxUEsO7=3U1l+*lbt$) zgU*z89{j@+HPYjj^6)g`Amah@%6o%5TrK+mn$yWZp4p?rUOqFZs)5;#ZI8l8=5E-*lJpDUd+3Ny#bHw~H;iHUUXxVuo7TOcn0uI$3B^7=n#O!0bd#}_;S?z2_) z!;c`AQsuBa$^+Rq8VaO@Xh*?_HhL`x<39;=T8;JEPl)#?1%`nD=r+Na+%9f#fG}!U z;U&jnH^mN0kfI!yR0ct8A*|ez+-!8V&=d!Vawe0^{$mA5Bk}9tm z4o7Bg-C<0W*C?VMD&pO3(G7Ap!!DPUW_o>2H3UjX7b^=r zdG1mc+V~SZAn8e(VRmQ=P}`Dvl!TT5T#lO*09x}egw@6>pyV^22;)kFye8?* z4MZaaq=Ur!y+m3X)yPm46uJZ0P~Ec87ThW^`U*qluH%SDL@|TPou<02Ub@KxMZ1EW z#lad_CjoO?wdB5SUd+aUag1$Io%lu5_@Rk+PkRa&|Dj`9mY&1nnFVZ4s^nS{cpULx zV!66;`|i8n{hlBC(I5HtZ~m4S9=xD`P17&rR2f{1jwP6&o=@6Mu--NCFOQL1|D<>Q z-oyJZzkKiMS3UXqPk!ASKL2(4{|+BMy!`M-pZ(BBpM8;kFx0>J=|2j*ar^e|SG@Y^ zSHAL@JJ;{%^-f=i-oJnE!Sna|4=ebnl`llyz)9pY=={zsVO0=;`j0XADa31+4=^^w3@OU-f5LeOJMzW`%l zTpcVb_H=d9%N4LEj}GCK3f|I`ObO$u)8!#g3yayeA*=oXr6KU~9?PQ;R{((LCGfnK zn0_+h9zbdHf^KSuHTA}P_&gK9Z9mb(F|e$R>(%lkmZz}NDpyKN!>8Um(^+HuYr$I9yhdm(i{*s#7onNzOPnWJujo zy%f#vuzp0Ww@)OfRpqRtCnsbCB1PSF+l@>~GUv#&(X$iQ2+rh3lng1r91JcB9Ci#u zbfO&0@@^Y|h4i9>^X!JeYR*d@L}PGkwcg)`!*_(anQr3Fsbf2;i!)Y&xzVZNe~w-GQJPn_$S;nrU;( zZ2xT)+5y1NHf+l?WTD?yQQ`62YBqCZ2%S+L=7miHHe(34)RST8=RS7Jr$)*-b^3MH zxZwj4HGKAz2x8Qj2GgQJuN0mPdp|i(m}Ae<8r{bgE{pQuhht;qzn1esanAjTu~m_M z+H^#_iEEF-RZ)34RgR`3n=>X^u#yx6%`%WedCyZzi2uxEHAk-?gUxDH3SFV6}3|=A>jhGz73zg5xTOyjBy`@jM4}w9adW0uyx_oERaB zAw?1qh7tL8I;ZiAahU{2oS>%2j|uVvKdI&WY1B4-rU72MIEVh7ltM&u!AsW)HIW z1R$Ck6U{J64ERXX9!Fedd9wJ1lU(ifeO9WnXZ>UK0CR7!};Jq~MkO9!#OXj|O zFPrv$nwkSxyH0gw*D%2wJql{hP3tX#(;{g=_<* zD&@GBYpDW~XA1Z-Pu#&^??G)n4B0p@&5#HvUB?iyI3B60NFhm|T6zq+Me-{?%~FWd z+2k1{usW@A>>I8ii7=mRw&Ka-%e~=w{s_mI&<*a8Ni8=hA2B8eYkN3`$;)eqIoVAD z8BQ*JICW58Z3d8ItORpVR+~?1ahDHEvoyhQdFj`-k%tgMDF9T((L60J$Zk~_lTj%* ztcgP0${vNVIiW}I#zNSI9UZ(+NFp3&%n}B>K^z~h6QtS8a+H>tDoLi@0hO#FAxWH= zbaX^7i!;g6ljN+YY0FZcc4#qymCc_fx#`fRi`dpBmLrDD-Vy67MnPCtL?$-%Ng@@P zbtQpHAmh45@Hy22P=5~rVZ@p`fSjtRU6Q<{Okq}8TM*`icXVY7IYviJ%d-hfxFRB? zCBmotL%VR3X2?@JAEwoZ1SN(DKW;-oB#fp4N_m9kj~2W!V9;gAVL9aq1TVmOu`A}} zF(-`=16#b4DAF63-Lqa%sUXV`sV`95drKN^a%IPyWo=HzJ%aP2AK8sgyZMC8Z-Pq`tK#)K!(k?5)rsI4wE4W1~V_>xs`?>f5oxvL$a0TOk5E zVCOm5RE3nyKxF322WV5fLNqLUf%mK^H>I!gTfr4 z1J5U1GRgoV=PA94)#imSTW-T`Jz@>1smQZkdFEZZ70NZejFHqRuymh08#e>VstBVVL=^5Q(jp*i^b@EurSy3c%wj3`u#0HFL)o8uCVdns$ zmigeyC;}qt7$Y%2W!EqANlmg|60llDh~snvw(=~59Sh@=PRs-`Z7HiF z?=lWu^GeFp>zSYjLk=Tz!mORKABl|`Ee166Asp|dE(@%1!R9PH%CZH9E0nm6%)qJ& zQXa?{x%D|q(4yKx6V!qnM^v+!t7&rsam=dI5ff8FM3I&EbvaVQdYXDr0i|5R@HdG& zfWe5o1ho&4_KCo$OT^4#T(+pq;~!U#mTrFhPac+_O~)XX#n5AddGYU6~>nA1d8qvPCk+W*%I+Su;)& zc*)HHhsi?JC2uL&Cx3yunO^zA&pI4}u0=m~R{}iQgao-nN|hB~F2D|$f@3Z~Mx0vN zpg~I+*^Jm?3I`6G!?nT`w9*h-nv%j~zb73c$yp%N+d91pw_V7&CkT*cxoI|4<{p<~ zb9DD7Q6UkT!<~CD|`S}#E=VLTL>Hu)E8{C1$6uL zQxroKR-Kux6t$KJ_B5YaLW+PCBaty_?FY=r;{>q;q9TQxL}uQq*iX>G=RgfXCk-R( zN$ceR?CAC?p&vu?y0>w1bP_K+lS=X;4vj^SCUTZRa3oNRzaW$&e6Eikz!A8A2DVGxbP#imf5RXLftpT#>>H1B2;&wBr2hr}y1uRQ=AFAg_9K7m^I!M+ zZ~Nx|;-$+EspTTqyL7q)23sg$YcJf&L)+PbBWoI;%@cm~8`w6W0=9g@Xya5#A-eS4 zq~3kQSlZ+}a;!u*eWNM=@!-|Nr=NJmPyNh4_|EVA&WE?}=$}3HJ5Kd2q?E`Pg{0|m zFg>C~#UF8T$dc7U$gWFs`z5>PvB>E-2b$L(E!-u0(tSS@!g{w!2x;@?9H$U6Ss#Go zTK!<+;3)A&I3%sD(7an~!9$Uf@J;PZT`Cc-F5F&Lx%wrwJ-ny0$C+{*CgpHwO$(7bKuo~Q z$Wbx2dlo1b_|n@I8KLfGNQ`3&R^BSHS%cQf8+AhAhDM;fXa;lcZOp zCjwK?mT~sTn|o6!+9^yRE`^w=>NrZyp%LCTz&SQoNIX2)t-6A>Hj888Wn4DJrg;Fk z@)^njz{dYn%w6;@jTr`Nu^N0_Y|DuuM$j_5bd5)HLV!>}0z-?<7v0d+EN7v3l(CYI zNDK}G(BO3lY_Xj-SZq#tL`22f;qYvE&FloJl)pNcJ51DYG+?51aA*@xhW{jIn4y!@ zDxj$_Mb@EoE2c((tM!Dn5_1dVWR^0P1kz~OVwK*Zo_hs>_Qj6slBz%xPL+x9%~NmH zL9SmKp`I(40^w)|M7d_uw+Ife^AK;@D$fB7@g&M~hcBG1l&iZ8w6h&PsPTf?|7h-&vKg zu3FH#xtG`UEtY&usPFasOMl_Je&k1f^qITQ zTwY!3pAPwFD+mb7n*|LgS~Qo37YSP{&qqr=%H4iL`N~b-QOdvR>C1nf^poev822{3 zrXEPCozRWI&_t@@>hh^4p8SPh`o(Yi)<65f-~aHfYgae#-_s8e0*^+a_lxAFln(3+ zyq|1f91xs$UIyB{qXG5G({F*xk~Cf(QNygSeD@5B%-ayIyR=v}hDRr+V?PexiaaLg zUcnt0Mol;3M`Q$Pgr=+(`pDqf*p-fqJFkM+xs~@Ua>AS7+^fKO?e-(~h(>Zf8fzU^ zEW#C&38Nw&y<)6OCVk(UQbR??ni?sLwojt@ycDG0@*U`KPHOhS~?W{Iuj z+s)gJ7$X__uGX@mifUlhg&A;RswN2MlNVHg_!Y^G2~NaB?f5ZD$;EpINemhtTbA(&0@CorAy!$idK# zjM2%btqpO+&}=Ct2G{W-G}a{GW12Z%b6GLo>8FUEZMzL1@j7PZvp!a@G2q>jY?__nt00_VLg-G3$VO_ zHfX2w+&nF14<$tA#q18aJcGxz{E1bTye%rHM}glgYWXxlS|G8S?|9Xcmp5G=XQRD{ z!1L!RG#*ErTZCm#6kNEY!4?_T!A(e(*l9=uA~Va!yrKl16du(*A{!0Wh$|@4Lg?rT z&Sz|Kdt4e8+g8_EGtZI?=f}O%-=UR?WL=i{#`tkb#*yTq8QZ!aomi$vCdssYG%#an z+rX?8>YpJ*v0B@G8Nx?$@i;dSdHVyV^XRXXOa#HOdCqEOBw05jHr8x&SGj>;#wkIF z;(Zhh8)YD{*F&!Be2FVKY7)rG03mUK@zkpdBMGc@?NLsr;59Q>9&neepw(zi2E(N3 z6x6hxC_{(>UK!yIrvsuxwg_|Pbl*DUhQ;iiXQ43}k|Y?HWD3?zZ`ake3w;52?b=75 zd+yu6?a#gXlV1JBfBcVrcZYWIJIl^Z>_s_`N}7r`G-IMv)}li{h42W_itQ0@x+6Nm&)&d zkx)eSB#($p!pEgHA?!gN)g+~aN{si^n$dwm?jFrXL2KXblQS@*PU}e^0(6-@cTiRr zz%W=6Fq|qzcTa6klgaL7;^k)iH&N|FKiEs?$R^6Aks8lhu5LCk72bcztK;k_ZzZ z?PUA9g@9qJ8poN3Sp|`n+|h}BO*w%hA?ocqgrr>SNgyt`{aWWz+hoFz43RE_Os(}y zgYZX)0}E)8q$8MIxu*g%8;{RVf1x04)5s4HVAf^Y(3pDc>I#gLddvx8Op@N%It<>F zlx6CH+exY32>@tmOOid%oKWZ#kHcw*S_{KTRdtiYcbo(f=5oW3sTJBeP0#Uh%(2sz zB`IYvsU>h4Fh>?SBoa5&j3u5sbuKIq1z6X`1VdJ~W8uWf=zn>1ATbWYJG3p`Li+$1 zC!hoXw^~O?Zp3+ImkRI}08bLkTFKgyWiSsx4u@2;+=eg^RtILbC6?eD+^1=dN~0VL z0!_(}X4SEljXTSY>Qp!Q%shoh8GVd1yUX15fd*=x zbgbbCWW)!x+Xjy=$zhgv7b_c};j$Bh%gKQ=Ga-bJ%L0g{wzfqiz+@oMe<;jR*yB7@ zSxj0X_dowCQL-?SX$ew%HW&rENR4dLI3vzp5Au*o7Yt4)l{GC`Ixxy)J}SxF)C=A-QQDI-4@@~>QZ$)Q zv>S-rWF?KREFFP8`(20uoy%ELsy|4=+ULTHN$O75q8mZF!l^sYW7><;4LSft*#MTv ziLEiF7`;R1Ef#>3#43}rEz*O*GbtJ8!kfLgw39_&1F!3M8(+V;`FrpGz_)($w|wvS zeeV~4$rpd@#pm*GdXohL?UVkr@b=NfRf0)My_h_ES$@-g{a9&xFs@m8yaw={(gc>dyAgn6-D! zJ8{!Wn-%B+PtQjqXb#iKRkN@$uEwxDK>EH4S8t053NHY`Ok>ULBnu}Ye@HWzA+z9q zJoMvQ8#S3+u@(VL-77I$kBo&7(9S)LE$7y(Ctt<3S>_x4q+oA`KuYw+X|^Vt>m~QV zkXq4c7cLuQj|Gi^(27lQH{$UdxttBEjExe~fS zNU(Y8;20{{h|uLb$+LXi2vyzF$HGhhWE8h39`~Hy}Hc?f?hOCVsuyn z+0vA}txKx_sb-WxRP6O}Np`8N30DwBvv%^nifU<0Y@s6aB2j?WoRjSmAbev>+ErHd z4`$~J&s1z}X|>Oyi%Hm)(5FYx{wY3P7zOLz1gW6i#>s0F%stG8t=?&cudf3+6=~$i zXl=7>r&b$cPaxTJh3x1_tvP3@F(#4dD?*E_q2jgL!%t#X<|seeN1H~ed0m{zWoEH> zbIg`&rEwKj_-14tUHv|s7m#WZ32ekma9OPOr-*V&; z%MlU7s?(XtgUkD*=*fFb$5L)G_ybTXb-F+pAqTO7ESa;7l|gTEX4J&8eCL_hhfAPf z)0fCffC+Hnl!-e-rd@Eep;l-#%}NU|r*E+5a%x2a$7m9v6=#ff7;1SYh{K(8g09QB zc$3mS#s;I1Zd8ovm|Sb3R+y}vs04+&=c#2Hq_Bv?=WZrpQjyVADu_J@pthlFTTEUJ zNq>};b+-o6xzvfHH!@BjcYKE>bE}x(IvwLd+u)pwNLFli4wdU~A$1&to;fk0o1La} zokp;lo)}M`943#UTCROzGDZh(9|RO67h|*PC~pmL818zJ^4KdRah3i&Wa-%nNY{>I zp5y~b`DRKL?AsV4t_2ez9Dl>An_U{X`&6Fpsb34^J&|MxZOj{lWnh|10i;KPkEZrG zVbdV{$hsz)59LWmeE!WEGK7M(W@jdhvwyrrgmZ#?* zbm*M|A}>)kmxG;IGySaIb-r=*>fy!hTkn3?d%o!#zUim`kGH+*?kC*5c2i#y>ZkGe zw?a0Wh`ebYxn>MCnIg&3G}SVGt1^Q`q_y0cdbA$POZgP6NWCjB{~3jQ6$_d5{nz^8 zldG$z?>_ZYKlQe+``WL6*Dt^8_N|-OUVQ2Lg9q33%SHA5qWNkt0w`T?rm4lZnDLRk zk_?623e!;3_?iL}VH2Uly@b{S2@H*&d{UAq!_J3O61;@xJ*{A=b?DHU(;%Dvi<3kS38`Z${+?6>mX=?HFCV++#UZCg-?B z5lt%-lX{QyPbO2r3zx%&oIC0vn`;L&IkCMo-LM$XmNt>pLG1%D*#bozZ;;D`B3-O# znVkuXGQ@Qzr-RIp1P*dCV35IQGO{q4oj}BFkpa#-xhn%P1a2H-I9&Fk)nMzJ;%p4L4%J}rb@>Z&2e_Ot$hkbw&D|>U7<*5qAPlKH3;UdXqS^^pHT?l2#g-uVxX*; zNtrk6wK8A{oorP#OYW;aq8&lfxn$aigFhjmuv{T>;hectv|NK~K9(!ez7c8~w@VeX z9j!Iz!EtV}Uy;)n^eW>>srm*?7Iv!Fn7pJy)Q+C$0NmXLJrPGgCyC1(ow}11u25=X zzKLf;cw;csU?+Dy3#~I~91>F(#L;FoKBo4XQZ}cxR4cZK(BlMpT%7RGrqIJf*s)r( zWR8c@@Cm;z+Ia&h181RJP>&h9GWr~O()YwLz){+xC==` zGESwqigu)j;uSYD%=^69Gn0sTczooj$~llB-8Gye6gdEL~(M&qc`X ztKlPJgX#YjXBQxvy77V}c-|ACRo--ia#SI~VEyPgaSG~&(joi zQat&%0;7|iVYE|2ifU;SL0>vIgaEEulYq5r7TD=F61uq*Ikds)s0wU`fWoBT$-?sb z4gCt4hgY|sc;eUJ`@3KFb^pnC{l&lVRbTlh^jC-X?%flB-PBJNYQpz&C4#UrWpkw3 z`rVhDY)chh!t`E%g7PD^5VRW0)ys^&=MOb1GA9B16s+?6t4pt6dwBQuZRLLRU;FF- z^>_UFXFv4eTeogK(AS9k&QT@TzYX%`VER^t;rAHoRzfL#8ubsrFQ+aC+R+@(L5oi1zy6 zuq48b%Bf4`Ng@}|aW7U*)eV)IGpK$KV(v0PmJ4==idk>2D^gpSU<8=jQ>sV0g*rf7 zTEIAwESx4uvI67_U1rJ31T$4HB@e?+Ea7p}~ zBET^+4Uul`{BWM^q?s7FCe>7%wfZC4u`Sgx&`zfngap)88ogY}}H0mE-4q4v;9awhn{bc!Z*`8N9oLg+fRW$bfK5 zE9)e|XB9FCYUPkZ>oB~zFh?TTaN|rOCMaoO0Kz3CY+=wisv4afn?zE>H==zYt=T4$ z_kyxEf$6p#CLp($vvl-)Ury5t3%wQc3%-cdQecTz?yR$jVoB)6-Ot-@)Ld zW-}>k-dztp3)C&bT6Zu4Dodz_-4F!fL^dadIq3**X=$@n#GODl(y~lzJfY2N23T|@ zK$FnMX7*`UtFtF=ja24P(h{s&GqBdbbMS=a@?93Kn3|7IGpVBKS0~4i$VE9+6GFqH z%bw(l1x6c(9NhYB7+v;5;InbVq=#K(04s;csA;u?wN}Zu1XWm+B^$ph$I!39s zUn(PSgSqvYao{6^0D7Ag5|jw;TEy-JMAqK^%ayG%L%Zf|CyYrrOie%OSSDi~=l+#s z{0DkTv(Wkxzh5iS+5Qivhi#U+i%rHy?Q$LVEzM!vNc?QMFK*}IL2G+_7?;S|)5rGY z1b?CrHM~o;zF5$=S>C#Hb?5Gbo40N~`Q(S6fBqZ4@teNw+rRyT@Bf3RZa<~s@)v&m z7lQl}7hk3B>GQwi(Jyr6uro_JBh4EsGkJ|f(SoelX}e+N)8nCkvAlWx)}8COU-jgx ze)o6Y_f7x#H-F2Y`PL6V|H6$scloJ7{xQ+Kv?|+MYBc$cVKg$GS2Kroml-I<=c+7Sj^TTt@uty~`uF(u;ZCoW`)B9;agLckz0f(>3Qy8JTPO-Hd#+BCK zM+V&Cn%8w0kMPp~XVd_K?Wxz6Q>0eoeZ+y`#5uIGYdR-~4B!Sj_cK15EvF4>kV((5 zEU`bvx0#xVmpt!P)*6qBAvzk?SR?FV;BurMn0UO3BctN>x83E41~?Iq-EQ2$q6w6z z0Y?Li*;kc1(Z|xK@FQ4cio_(g* zwd_PYvESo6=atG(A?i94j3PE5*P4^!K@A|?+t~2>oLoO zKsS`iJT(j-JH1^ATBdk6UZ5)07RdHcuakJ}x*L4PuthOVOeSZpW4S;w!8zB`ItE-e zYQkObd0Qg?jwTLaM~lsQo>j2_{Sts<4bn4*lN3lo6&9Z3`dh$ zKEvYER14e{ZyJoNmG;|`htFWi(%s+!lcM{uGDeGWf~QWu(mE#;#P#1|>7L(eI?%jM0y1MYcQbdCAX04zm6TNdxLg%n0%7aEAS@FuEHzjvH zSY&pKX@HlmhdG_39kzQt4KYW^6)k`u4O`%GJ0Z+Xm1)>BZ+HNt6w)nCsP#IS!5f?; zu6@*?7ABCm6L?E9M6E1dguUt=>&L>Yzlt>#SN?{T3r9d3+N%a}*ks@B$ng zB%7EZjiD2W9b})t#O)b*45LsO6C1D)ngqd|-AlA=2MG&Z(Iay(Q$Y>E026@MJ^n?u zy>eEcU|4YJ8YgoBS~T7~lo3GgCO!gFX4_CY!l3dcGCI+2z~FZP>629&>IT_Q^&BJ+ zD}c@#C)<*4!`OlL0>Gbj$)}Z&iPe0eThvG-?}Q zL~;;mjFv~{SfGhtV?=pvi7RR$I-w&-oxEfAUB)H?q-n0InrzL*6MxduC7xQekas9# zF)=OY8Y*5OpgWKbipih@Nf@hG%b|_(O>+Mj-5pCcUPNT`-LacBUlD9Z$$-?fy!8i15!fT@eA{P6m|;1#-lMmQ z1LGp)a+~9L4Z%|%rIA0~a{{_XmLhaBSMO8p(5HB;g2sTju3qD(*ny zLcpeNg&1}6(M7;J&5E5fi zp?PE^t&DJ<`E2%<;%O!@Y4ik|UxW8#QK;S0Zu#)|@}vhY*-ZRMcM6}%wOkYxDKUIx zRyYh?*fitJfA>%Sr{D0# zH@^PP6L(&?_dMU5>Hk1NdDy&_&AYE<`$?xzmn(B1e6}nF7O~W6g-7oI9p*Jp^wq5! zx9{G4;<=A~?Eie*Pk;aS|G?XR`XA_Vxc&6ge1{?5nxYRv1S&oU$Kg#&QO#w`p$QF$ z7{7sA=n&+7lxg8siU+Z-IZ0yD2;O7@gtQD^aPTAR;3YIyGNhu-GEligVjta3f-`8$ zatScmfJ}Jc8uw@;Wf>bq%sfS{u;DoXWa*Ux!-i>dg|5ZeUT{KBkj82_B;?s~&V?-M z03EY%y4#4@4?{t^*^iT&I)xjlKIeMGqUK%EbL&Rog%APDPX@dQDh2s^)&$iV% zbLhSKOY51!HX3^Kbs{*-Yo`bg1%SC?p>v02O=aqHY4>6;k=e;IpuVUPe|!d`np{LT zOmLQL)zOO46_fBX@cODdWV!~C)ixS*Fy)cigcxd)K20?&UNdW`!MCj+YW8AxDLak0 zDvTZ|)T_Cls1(WRBfNDpz_cmS-GL}_A1Ye67*|@>1QO69yc^67tt_p5E*offYTG8FcwS6)r8EMT+#*-_4jgNSMrFeTQ8>^w@l9a?_MeYJ&zW#tO4F@3amV)y3 zbp=A>3pZ&`>P(Hq$sM|>t6{p0rY#xH%CIiQdMU{CmZ@#U*+Uksx3U(#Sjr$yH!j~o z8Gv0_rFNI<`APFoR2GMpPbMUc%nfCL2GBX|iyL;*HRs6=CCzjUuBE{I9tOnS>e?jsy;IJ3E*l!g{ye;NItoyKE-o%E zFCYH!5B=zm|HR+>(l7g?U-R|<@t1trzx~vcPhVc%f2jZV-DR59hsp;_6g<6?sA*8r zl=5uuJdOy!&hNHS6aCF6ehzQlx_SG?&ENmfhko>L{hh!0H~!|^f9B`z-G6ZV$tTs? zOQnbD#x;F+N<=em++ke`Sdzv=#kdi65X)95-s>>}*JZqHy*rIH%a<_2SnStqw1k@d z@J&0CXQD=ya5gF4Cbk9}i?KzFENX*6flz`>+{iAY?KyNo(j%K42C*)4L*$s)6yy`O zj0p%~MgeWi(^Msmp4*;gY}^lRCrRtlErB9kxkky@TB3m4#+!M z$aka@Nw>w;8D^^vV00-q6WvG=a;rWLsjP%$@3i;3q69IwsnM=vH_=qASHnJkX9mA+>J9ZX)) zVG?j1(agGP+(eI*e*Pd7xFhv&*<6Y}2k|z$7ONlxG49BUmoXLu#+o?BeQSI&k`9@0zfzgibuIYFIf+IyAZMlw60i!7#sfq9e z0(C}MayfNax6c$|WS;?ZIoz=+k$}T%f1#!d$dU4ys~n@G(VQmpdx%I=YiK2SxY#*U zb!nUH5yO%EIM2Zm>6svsm29%a7|i6wruUNh$N*s7+F7yWx6YXYQ5V_@{~U_!7Z

    knPfimw%-9%KNqLgFx%hY3K~Y-^ve%3fgD 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

    rz2jm|2e|_aMp8gFFf9S(5 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

    AePa20Pri?Mecbq#f;b+6GL8J8? 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%0D4;moAmhS~tK#~(3 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

    +

    404

    +

    That page is not here

    +

    Use the agentctl documentation search or return to a known route.

    +
    +
    + + diff --git a/root-site/index.html b/root-site/index.html new file mode 100644 index 0000000..d7452d8 --- /dev/null +++ b/root-site/index.html @@ -0,0 +1,39 @@ + + + + + + + + OpenSourceOps + + + +
    +

    OpenSourceOps

    +

    Open tools for deliberate operations

    +

    Project documentation, implementation notes, and operational guidance from OpenSourceOps.

    +
    +
    +

    agentctl

    +

    Declarative workflows for deterministic automation and bounded agent reasoning, with explicit policy and durable local state.

    +
    + Read the agentctl documentation +
    +
    + + diff --git a/root-site/robots.txt b/root-site/robots.txt new file mode 100644 index 0000000..df9160b --- /dev/null +++ b/root-site/robots.txt @@ -0,0 +1,4 @@ +User-agent: * +Allow: / + +Sitemap: https://opensourceops.github.io/agentctl/sitemap-index.xml diff --git a/scripts/assemble-site.mjs b/scripts/assemble-site.mjs new file mode 100644 index 0000000..163f377 --- /dev/null +++ b/scripts/assemble-site.mjs @@ -0,0 +1,34 @@ +import { cp, mkdir, readdir, rm, stat, writeFile } from 'node:fs/promises'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const root = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..'); +const source = path.join(root, 'dist-agentctl'); +const rootSite = path.join(root, 'root-site'); +const artifact = path.join(root, '_site'); +const agentctlTarget = path.join(artifact, 'agentctl'); + +for (const expected of [path.join(source, 'index.html'), path.join(rootSite, 'index.html')]) { + try { + if (!(await stat(expected)).isFile()) throw new Error(`${expected} is not a file`); + } catch (error) { + throw new Error(`Cannot assemble Pages artifact: ${error.message}`); + } +} + +await rm(artifact, { recursive: true, force: true }); +await mkdir(artifact, { recursive: true }); +await cp(rootSite, artifact, { recursive: true, errorOnExist: true }); +await mkdir(agentctlTarget, { recursive: false }); +await cp(source, agentctlTarget, { recursive: true, errorOnExist: true }); +await cp(path.join(source, '404.html'), path.join(agentctlTarget, '404.html'), { force: true }); + +const noJekyll = path.join(artifact, '.nojekyll'); +await writeFile(noJekyll, ''); + +const rootEntries = await readdir(artifact); +if (!rootEntries.includes('index.html') || !rootEntries.includes('agentctl')) { + throw new Error('Artifact assembly lost the root site or agentctl subpath'); +} + +console.log(`Assembled ${artifact} with agentctl/index.html.`); diff --git a/scripts/check-artifact.mjs b/scripts/check-artifact.mjs new file mode 100644 index 0000000..f5f40f3 --- /dev/null +++ b/scripts/check-artifact.mjs @@ -0,0 +1,109 @@ +import { readFile, readdir, stat } from 'node:fs/promises'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const root = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..'); +const artifact = path.join(root, '_site'); +const required = [ + 'index.html', '.nojekyll', '404.html', 'robots.txt', 'agentctl/index.html', + 'agentctl/404.html', 'agentctl/getting-started/index.html', + 'agentctl/reference/cli/index.html', 'agentctl/troubleshooting/index.html', + 'agentctl/pagefind/pagefind.js', 'agentctl/meta/agentctl-source.json', + 'agentctl/downloads/workflow.schema.json', +]; + +for (const relative of required) { + try { await stat(path.join(artifact, relative)); } + catch { throw new Error(`Missing required artifact path: ${relative}`); } +} + +async function htmlFiles(directory) { + const result = []; + for (const entry of await readdir(directory, { withFileTypes: true })) { + const absolute = path.join(directory, entry.name); + if (entry.isDirectory()) result.push(...(await htmlFiles(absolute))); + else if (entry.name.endsWith('.html')) result.push(absolute); + } + return result; +} + +const files = await htmlFiles(artifact); +const records = new Map(); +for (const file of files) { + const html = await readFile(file, 'utf8'); + records.set(file, { + html, + ids: new Set([...html.matchAll(/\bid="([^"]+)"/g)].map((match) => match[1])), + links: new Set(), + }); +} + +const errors = []; +for (const [file, record] of records) { + const relative = path.relative(artifact, file); + if (record.html.includes('/Users/')) errors.push(`${relative}: absolute local path`); + if (record.html.includes('http://localhost')) errors.push(`${relative}: localhost canonical or link`); + + for (const match of record.html.matchAll(/(?:href|src)="([^"]+)"/g)) { + const value = match[1].replaceAll('&', '&'); + if (value.startsWith('$')) continue; + if (/^(?:https?:|mailto:|data:|javascript:|\/\/)/.test(value)) continue; + + const [rawPath, rawFragment = ''] = value.split('#', 2); + const clean = rawPath.split('?', 1)[0]; + let target = file; + if (clean) { + try { + target = clean.startsWith('/') + ? path.join(artifact, decodeURI(clean)) + : path.resolve(path.dirname(file), decodeURI(clean)); + } catch { + errors.push(`${relative}: invalid encoded path ${value}`); + continue; + } + } + + try { + const details = await stat(target); + if (details.isDirectory()) target = path.join(target, 'index.html'); + await stat(target); + } catch { + errors.push(`${relative}: broken internal asset or link ${value}`); + continue; + } + + if (!target.endsWith('.html')) continue; + record.links.add(target); + if (rawFragment && !rawFragment.startsWith(':~:text=')) { + let fragment; + try { fragment = decodeURIComponent(rawFragment); } + catch { + errors.push(`${relative}: invalid encoded anchor ${value}`); + continue; + } + const targetRecord = records.get(target); + if (targetRecord && !targetRecord.ids.has(fragment)) { + errors.push(`${relative}: broken anchor ${value}`); + } + } + } +} + +const reachable = new Set(); +const queue = [path.join(artifact, 'index.html'), path.join(artifact, 'agentctl/index.html')]; +while (queue.length) { + const file = queue.shift(); + if (reachable.has(file)) continue; + reachable.add(file); + for (const link of records.get(file)?.links || []) { + if (records.has(link) && !reachable.has(link)) queue.push(link); + } +} + +for (const file of records.keys()) { + if (file.endsWith(`${path.sep}404.html`)) continue; + if (!reachable.has(file)) errors.push(`${path.relative(artifact, file)}: orphan page`); +} + +if (errors.length) throw new Error(errors.slice(0, 100).join('\n')); +console.log(`Artifact structure, routes, ${files.length} HTML pages, links, anchors, and reachability passed.`); diff --git a/scripts/check-external-links.mjs b/scripts/check-external-links.mjs new file mode 100644 index 0000000..0c29afd --- /dev/null +++ b/scripts/check-external-links.mjs @@ -0,0 +1,106 @@ +import { execFileSync } from 'node:child_process'; +import { readFile, readdir, stat } from 'node:fs/promises'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const root = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..'); +const artifact = path.join(root, '_site'); +const agentctlCandidates = [ + process.env.AGENTCTL_REPO, + path.resolve(root, '../agentctl'), + path.resolve(root, '../../agentctl'), +].filter(Boolean); +let agentctlRoot; +for (const candidate of agentctlCandidates) { + try { + if ((await stat(path.join(candidate, 'Cargo.toml'))).isFile()) { + agentctlRoot = path.resolve(candidate); + break; + } + } catch { + // Remote-only links remain eligible for HTTP checking. + } +} + +async function files(directory) { + const result = []; + for (const entry of await readdir(directory, { withFileTypes: true })) { + const absolute = path.join(directory, entry.name); + if (entry.isDirectory()) result.push(...(await files(absolute))); + else if (entry.name.endsWith('.html')) result.push(absolute); + } + return result; +} + +const urls = new Set(); +for (const file of await files(artifact)) { + const html = await readFile(file, 'utf8'); + for (const match of html.matchAll(/href="(https?:[^"#]+)(?:#[^"]*)?"/g)) { + const url = new URL(match[1].replaceAll('&', '&')); + if (url.hostname === 'opensourceops.github.io') continue; + const source = url.pathname.match(/^\/opensourceops\/agentctl\/(?:blob|edit)\/main\/(.+)$/); + if (source && agentctlRoot) { + try { + const sourcePath = path.resolve(agentctlRoot, decodeURIComponent(source[1])); + if (!sourcePath.startsWith(`${agentctlRoot}${path.sep}`)) throw new Error('path escape'); + if ((await stat(sourcePath)).isFile()) continue; + } catch { + // Let the public URL check report the missing source. + } + } + const commit = url.pathname.match(/^\/opensourceops\/agentctl\/commit\/([0-9a-f]{40})$/); + if (commit && agentctlRoot) { + try { + execFileSync('git', ['cat-file', '-e', `${commit[1]}^{commit}`], { + cwd: agentctlRoot, + stdio: 'ignore', + }); + continue; + } catch { + // Let the public URL check report an unknown commit. + } + } + url.hash = ''; + url.search = ''; + urls.add(url.toString()); + } +} + +const failures = []; +const warnings = []; +const queue = [...urls]; + +async function check(url) { + const controller = new AbortController(); + const timeout = setTimeout(() => controller.abort(), 15_000); + try { + const response = await fetch(url, { + method: 'GET', + redirect: 'follow', + signal: controller.signal, + headers: { + 'User-Agent': 'opensourceops-docs-link-check/1.0', + Range: 'bytes=0-1023', + }, + }); + if ([404, 410].includes(response.status)) failures.push(`${response.status} ${url}`); + else if (response.status >= 400 && ![401, 403, 429].includes(response.status)) { + warnings.push(`${response.status} ${url}`); + } + await response.body?.cancel(); + } catch (error) { + warnings.push(`${error.name}: ${url}`); + } finally { + clearTimeout(timeout); + } +} + +await Promise.all( + Array.from({ length: 6 }, async () => { + while (queue.length) await check(queue.shift()); + }), +); + +if (warnings.length) console.warn(`External links not conclusively checked:\n${warnings.join('\n')}`); +if (failures.length) throw new Error(`Broken external links:\n${failures.join('\n')}`); +console.log(`External link check found no definite failures across ${urls.size} unique URLs.`); diff --git a/scripts/check-mermaid.mjs b/scripts/check-mermaid.mjs new file mode 100644 index 0000000..a0a515c --- /dev/null +++ b/scripts/check-mermaid.mjs @@ -0,0 +1,33 @@ +import { readFile, readdir } from 'node:fs/promises'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const root = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..'); +const docs = path.join(root, 'src/content/docs'); + +async function markdownFiles(directory) { + const result = []; + for (const entry of await readdir(directory, { withFileTypes: true })) { + const absolute = path.join(directory, entry.name); + if (entry.isDirectory()) result.push(...(await markdownFiles(absolute))); + else if (/\.mdx?$/.test(entry.name)) result.push(absolute); + } + return result; +} + +let count = 0; +for (const file of await markdownFiles(docs)) { + const source = await readFile(file, 'utf8'); + for (const match of source.matchAll(/```mermaid\n([\s\S]*?)```/g)) { + const definition = match[1].trim(); + if (!/^(?:flowchart|sequenceDiagram|stateDiagram-v2)\b/.test(definition)) { + throw new Error(`Unsupported or missing Mermaid diagram type in ${file}`); + } + if (definition.split('\n').length < 2) { + throw new Error(`Empty Mermaid diagram in ${file}`); + } + count += 1; + } +} +if (count < 14) throw new Error(`Expected at least 14 Mermaid diagrams, found ${count}`); +console.log(`Validated ${count} Mermaid source blocks. Browser tests verify rendering.`); diff --git a/scripts/check-search-index.mjs b/scripts/check-search-index.mjs new file mode 100644 index 0000000..5562114 --- /dev/null +++ b/scripts/check-search-index.mjs @@ -0,0 +1,14 @@ +import { readFile, stat } from 'node:fs/promises'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const root = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..'); +const pagefind = path.join(root, '_site/agentctl/pagefind/pagefind.js'); +await stat(pagefind); +const indexSource = await readFile(pagefind, 'utf8'); +if (!indexSource.includes('Pagefind')) throw new Error('Pagefind browser bundle is malformed'); + +const representative = ['replay', 'OPENAI_API_KEY', 'approval', 'container', 'exit code', 'database locked', 'MCP', 'Gemini']; +const html = await readFile(path.join(root, '_site/agentctl/index.html'), 'utf8'); +if (!html.includes('data-pagefind-body')) throw new Error('Homepage is not marked for Pagefind indexing'); +console.log(`Pagefind index exists. Browser tests query: ${representative.join(', ')}.`); diff --git a/scripts/check-workflow.mjs b/scripts/check-workflow.mjs new file mode 100644 index 0000000..4cd3da7 --- /dev/null +++ b/scripts/check-workflow.mjs @@ -0,0 +1,28 @@ +import { readFile } from 'node:fs/promises'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const root = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..'); +const workflow = await readFile(path.join(root, '.github/workflows/pages.yml'), 'utf8'); +const errors = []; + +const actions = [...workflow.matchAll(/^\s*uses:\s*([^@\s]+)@([^\s#]+)(?:\s+#\s+(.+))?$/gm)]; +if (actions.length !== 6) errors.push(`expected 6 action references, found ${actions.length}`); +for (const [, action, revision, comment] of actions) { + if (!/^[0-9a-f]{40}$/.test(revision)) errors.push(`${action} is not pinned to a full commit SHA`); + if (!/^v\d/.test(comment || '')) errors.push(`${action} has no release comment`); +} + +for (const required of [ + 'repository: opensourceops/agentctl', + "if: github.event_name != 'pull_request'", + 'pages: write', + 'id-token: write', + 'path: site/_site', +]) { + if (!workflow.includes(required)) errors.push(`missing workflow contract: ${required}`); +} +if (workflow.includes('secrets.')) errors.push('Pages workflow must not read repository or provider secrets'); + +if (errors.length) throw new Error(errors.join('\n')); +console.log('Pages workflow action pins, permissions, artifact path, and credential-free contract passed.'); diff --git a/scripts/check-writing.mjs b/scripts/check-writing.mjs new file mode 100644 index 0000000..b989850 --- /dev/null +++ b/scripts/check-writing.mjs @@ -0,0 +1,41 @@ +import { readdir, readFile } from 'node:fs/promises'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const root = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..'); +const roots = ['src/content/docs', 'src/components', 'root-site', 'docs'].map((entry) => path.join(root, entry)); +const extensions = new Set(['.md', '.mdx', '.astro', '.html']); +const discouraged = [ + 'unlock', 'unleash', 'revolutionize', 'supercharge', 'seamlessly', 'effortlessly', + 'cutting-edge', 'game-changing', 'next-generation', 'robust and scalable', + 'powerful solution', "in today's fast-paced world", +]; + +async function files(directory) { + const result = []; + for (const entry of await readdir(directory, { withFileTypes: true })) { + const absolute = path.join(directory, entry.name); + if (entry.isDirectory()) result.push(...(await files(absolute))); + else if (extensions.has(path.extname(entry.name))) result.push(absolute); + } + return result; +} + +const errors = []; +for (const directory of roots) { + for (const file of await files(directory)) { + const source = await readFile(file, 'utf8'); + const relative = path.relative(root, file); + if (source.includes('—')) errors.push(`${relative}: contains an em dash`); + if (!relative.startsWith('docs/execution/') && source.includes('/Users/')) { + errors.push(`${relative}: contains an absolute local path`); + } + const lower = source.toLowerCase(); + for (const phrase of discouraged) { + if (lower.includes(phrase)) errors.push(`${relative}: contains discouraged phrase “${phrase}”`); + } + } +} + +if (errors.length) throw new Error(errors.join('\n')); +console.log('Writing checks passed, including the em dash rule.'); diff --git a/scripts/content-manifest.mjs b/scripts/content-manifest.mjs new file mode 100644 index 0000000..1595578 --- /dev/null +++ b/scripts/content-manifest.mjs @@ -0,0 +1,58 @@ +export const contentManifest = [ + ['docs/PRODUCT.md', '_generated/concepts/product.md', 'Product definition', 'What agentctl does, who it serves, and where its boundary ends.'], + ['docs/DSL.md', '_generated/concepts/workflow-model.md', 'Workflow model', 'Strict YAML, tasks, templates, actions, agents, and validation.'], + ['docs/POLICIES.md', '_generated/concepts/policies.md', 'Policies and approvals', 'Keep authority outside the model with explicit grants and durable decisions.'], + ['docs/TOOLS.md', '_generated/concepts/tools.md', 'Tools and effects', 'Tool contracts, effect classes, idempotency, and deterministic checks.'], + ['docs/MEMORY.md', '_generated/concepts/memory.md', 'State and memory', 'Separate runtime state, working memory, long-term memory, and prompt cache.'], + ['docs/PACKS.md', '_generated/concepts/packs.md', 'Reusable packs', 'Use versioned local content with integrity verification.'], + ['docs/guides/INSTALLATION.md', '_generated/getting-started/installation.md', 'Installation', 'Build or install the current v1alpha1 candidate from reviewed source.'], + ['docs/guides/GETTING_STARTED.md', '_generated/getting-started/index.md', 'Getting started', 'Run and inspect a credential-free deterministic workflow.'], + ['docs/guides/FIRST_AGENT_WORKFLOW.md', '_generated/getting-started/first-agent.md', 'First agent workflow', 'Run a bounded tool-using agent without a paid API key.'], + ['docs/guides/WORKFLOW_AUTHORING.md', '_generated/guides/workflow-authoring.md', 'Author workflows', 'Learn workflow YAML in execution order.'], + ['docs/guides/LOCAL_OPERATION.md', '_generated/guides/local-operation.md', 'Local operation', 'Manage paths, state, outputs, interruption, recovery, and retention.'], + ['docs/guides/CI_CD.md', '_generated/guides/ci-cd.md', 'CI/CD integration', 'Use the generic OCI contract in pipelines and Kubernetes.'], + ['docs/CONTAINER.md', '_generated/guides/container.md', 'Container guide', 'Run the non-root, read-only OCI image with durable mounts.'], + ['docs/OPERATIONS.md', '_generated/operations/scheduled.md', 'Scheduled execution', 'Use cron, systemd, or Kubernetes as the external scheduler.'], + ['docs/DURABLE_EXECUTION.md', '_generated/durable-execution/index.md', 'Durable execution', 'Understand checkpoints, effects, resume, replay, fork, and uncertain outcomes.'], + ['docs/OBSERVABILITY.md', '_generated/observability/index.md', 'Logs and observability', 'Correlate CLI output, audit events, traces, and usage metrics.'], + ['docs/PROVIDERS.md', '_generated/providers/index.md', 'Providers', 'Compare native adapters, capabilities, authentication, and evidence levels.'], + ['docs/MCP.md', '_generated/providers/mcp.md', 'MCP', 'Use pinned MCP Streamable HTTP tools under explicit policy.'], + ['docs/A2A.md', '_generated/providers/a2a.md', 'A2A', 'Delegate bounded work to pinned A2A peers.'], + ['docs/SECURITY.md', '_generated/security/index.md', 'Security model', 'Review controls, trust boundaries, and residual risks.'], + ['docs/THREAT_MODEL.md', '_generated/security/threat-model.md', 'Threat model', 'Map assets and threats to controls and residual risk.'], + ['docs/guides/TROUBLESHOOTING.md', '_generated/troubleshooting/index.md', 'Troubleshooting', 'Diagnose validation, provider, policy, state, replay, and container failures.'], + ['docs/use-cases/REPOSITORY_AUDIT.md', '_generated/examples/repository-audit.md', 'Repository audit', 'Bound repository reads and verify the resulting report.'], + ['docs/use-cases/RELEASE_READINESS.md', '_generated/examples/release-readiness.md', 'Release readiness', 'Combine deterministic gates with bounded analysis.'], + ['docs/use-cases/SCHEDULED_REVIEW.md', '_generated/examples/scheduled-review.md', 'Scheduled operational review', 'Produce durable state and artifacts from an external schedule.'], + ['docs/use-cases/CI_QUALITY_GATE.md', '_generated/examples/ci-quality-gate.md', 'CI quality gate', 'Turn typed evidence into stable process output.'], + ['docs/use-cases/APPROVAL_GATED_ACTION.md', '_generated/examples/approval-gated.md', 'Approval-gated action', 'Pause a mutation until an operator resolves a durable request.'], + ['docs/use-cases/RECORDED_REPLAY.md', '_generated/examples/recorded-replay.md', 'Offline recorded replay', 'Reconstruct a terminal run without credentials or effects.'], + ['docs/use-cases/PROVIDER_PORTABILITY.md', '_generated/examples/provider-portability.md', 'Provider portability', 'Keep the workflow contract neutral while capability evidence stays honest.'], + ['docs/reference/YAML.md', '_generated/reference/yaml.md', 'YAML reference', 'Readable field groups, defaults, validation, and examples.'], + ['docs/generated/CLI.md', '_generated/reference/cli.md', 'CLI reference', 'Generated command and flag reference for the current Rust CLI.'], + ['docs/reference/CLI_OUTPUT.md', '_generated/reference/output.md', 'Output and exit codes', 'Versioned machine output, streams, and stable exit categories.'], + ['docs/reference/ENVIRONMENT_AND_PATHS.md', '_generated/reference/environment.md', 'Environment and paths', 'Credential references, repository variables, and default paths.'], + ['docs/reference/MATRICES.md', '_generated/reference/capabilities.md', 'Capability matrices', 'Provider and tool capabilities with exact evidence levels.'], + ['docs/reference/DATABASE.md', '_generated/reference/database.md', 'Database and migrations', 'SQLite records, schema migration, locking, backup, and retention.'], + ['docs/reference/TERMINOLOGY.md', '_generated/reference/terminology.md', 'Terminology', 'Use workflow, task, effect, resume, replay, retry, and fork precisely.'], + ['docs/LIMITATIONS.md', '_generated/reference/limitations.md', 'Limitations', 'Current release boundary, deferred work, and non-goals.'], + ['docs/COMPATIBILITY.md', '_generated/reference/compatibility.md', 'Compatibility', 'Preserved, migrated, changed, removed, and deferred contracts.'], + ['docs/MIGRATING_FROM_TYPESCRIPT.md', '_generated/reference/migration.md', 'Migrate from TypeScript', 'Translate supported legacy workflows to strict v1alpha1 YAML.'], + ['docs/ARCHITECTURE.md', '_generated/architecture/index.md', 'Architecture overview', 'Crate boundaries, execution, determinism, concurrency, and packaging.'], + ['docs/architecture/DIAGRAMS.md', '_generated/architecture/diagrams.md', 'Architecture diagrams', 'Fourteen verified diagrams for compilation, state, effects, recovery, deployment, and crates.'], + ['docs/adr/0001-deterministic-core-explicit-effects.md', '_generated/architecture/decisions/0001.md', 'ADR 0001: Deterministic core', 'Keep graph, policy, state, and replay model-independent.'], + ['docs/adr/0002-versioned-strict-workflow-envelope.md', '_generated/architecture/decisions/0002.md', 'ADR 0002: Strict workflow envelope', 'Use a versioned document and generated schema.'], + ['docs/adr/0003-sqlite-history-and-conservative-recovery.md', '_generated/architecture/decisions/0003.md', 'ADR 0003: Conservative recovery', 'Use SQLite history and stop on uncertain effects.'], + ['docs/adr/0004-native-provider-adapters.md', '_generated/architecture/decisions/0004.md', 'ADR 0004: Native providers', 'Map native APIs behind provider-neutral contracts.'], + ['docs/adr/0005-narrow-v1-scheduling-and-extensions.md', '_generated/architecture/decisions/0005.md', 'ADR 0005: Narrow v1 scheduling', 'Keep scheduling sequential until merge and recovery semantics are defined.'], + ['docs/adr/0006-schedulable-runtime-and-noninteractive-contract.md', '_generated/architecture/decisions/0006.md', 'ADR 0006: Schedulable runtime', 'Let external platforms schedule bounded non-interactive runs.'], + ['docs/adr/0007-generic-oci-step-contract.md', '_generated/architecture/decisions/0007.md', 'ADR 0007: Generic OCI step', 'Use one non-root image contract across platforms.'], + ['docs/CONTRIBUTING.md', '_generated/contributing/index.md', 'Contributing', 'Set up, test, review, and prepare focused changes.'], + ['docs/development/REPOSITORY.md', '_generated/contributing/developer-guide.md', 'Developer guide', 'Understand the Rust workspace, deterministic core, effects, persistence, and tests.'], + ['docs/development/ADD_ACTION.md', '_generated/contributing/add-action.md', 'Add an action or tool', 'Define contracts, policy, effects, recovery, tests, and documentation.'], + ['docs/development/ADD_PROVIDER.md', '_generated/contributing/add-provider.md', 'Add a provider', 'Add capabilities, native mapping, mock evidence, and honest claims.'], + ['docs/development/ADD_MIGRATION.md', '_generated/contributing/add-migration.md', 'Add a store migration', 'Version and test forward SQLite migrations.'], + ['docs/development/DOCUMENTATION.md', '_generated/contributing/documentation.md', 'Write documentation', 'Own content in the right repository and verify it end to end.'], + ['docs/TESTING.md', '_generated/contributing/testing.md', 'Testing strategy', 'Credential-free gates, acceptance layers, fuzzing, and live evidence.'], + ['docs/RELEASE_PROCESS.md', '_generated/contributing/release.md', 'Release process', 'Prepare and verify a v1alpha1 release candidate without overstating evidence.'] +]; diff --git a/scripts/generate-favicon.mjs b/scripts/generate-favicon.mjs new file mode 100644 index 0000000..949422f --- /dev/null +++ b/scripts/generate-favicon.mjs @@ -0,0 +1,35 @@ +import { mkdir } from 'node:fs/promises'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; +import sharp from 'sharp'; + +const root = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..'); +const size = 64; +const channels = 4; +const pixels = Buffer.alloc(size * size * channels); + +function paint(x, y, width, height, color) { + for (let row = y; row < y + height; row += 1) { + for (let column = x; column < x + width; column += 1) { + const offset = (row * size + column) * channels; + pixels[offset] = color[0]; + pixels[offset + 1] = color[1]; + pixels[offset + 2] = color[2]; + pixels[offset + 3] = 255; + } + } +} + +paint(0, 0, size, size, [15, 118, 110]); +for (let step = 0; step < 17; step += 1) { + paint(15 + step, 15 + step, 5, 5, [240, 253, 250]); + paint(15 + step, 44 - step, 5, 5, [240, 253, 250]); +} +paint(35, 42, 16, 5, [153, 246, 228]); + +await mkdir(path.join(root, 'public'), { recursive: true }); +await sharp(pixels, { raw: { width: size, height: size, channels } }) + .png({ compressionLevel: 9 }) + .toFile(path.join(root, 'public/favicon.png')); + +console.log('Generated public/favicon.png.'); diff --git a/scripts/serve-site.mjs b/scripts/serve-site.mjs new file mode 100644 index 0000000..30b3536 --- /dev/null +++ b/scripts/serve-site.mjs @@ -0,0 +1,70 @@ +import { createReadStream } from 'node:fs'; +import { stat } from 'node:fs/promises'; +import { createServer } from 'node:http'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const root = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '../_site'); +const port = Number(process.env.AGENTCTL_DOCS_PORT || '4173'); +const types = new Map([ + ['.css', 'text/css; charset=utf-8'], + ['.html', 'text/html; charset=utf-8'], + ['.ico', 'image/x-icon'], + ['.js', 'text/javascript; charset=utf-8'], + ['.json', 'application/json; charset=utf-8'], + ['.png', 'image/png'], + ['.svg', 'image/svg+xml'], + ['.txt', 'text/plain; charset=utf-8'], + ['.wasm', 'application/wasm'], + ['.xml', 'application/xml; charset=utf-8'], +]); + +async function resolveRequest(pathname) { + const decoded = decodeURIComponent(pathname); + const normalized = path.posix.normalize(decoded); + if (!normalized.startsWith('/')) return; + let candidate = path.join(root, normalized); + if (!candidate.startsWith(root)) return; + try { + const details = await stat(candidate); + if (details.isDirectory()) candidate = path.join(candidate, 'index.html'); + await stat(candidate); + return candidate; + } catch { + if (!path.extname(candidate)) { + try { + const index = path.join(candidate, 'index.html'); + await stat(index); + return index; + } catch { + return; + } + } + } +} + +const server = createServer(async (request, response) => { + const url = new URL(request.url || '/', `http://${request.headers.host || '127.0.0.1'}`); + if (url.pathname === '/agentctl') { + response.writeHead(308, { location: '/agentctl/' }); + response.end(); + return; + } + const file = await resolveRequest(url.pathname); + const status = file ? 200 : 404; + const target = file || path.join(root, '404.html'); + response.writeHead(status, { + 'content-type': types.get(path.extname(target)) || 'application/octet-stream', + 'cache-control': 'no-store', + }); + if (request.method === 'HEAD') response.end(); + else createReadStream(target).pipe(response); +}); + +server.listen(port, '127.0.0.1', () => { + console.log(`Serving final Pages artifact at http://127.0.0.1:${port}/agentctl/`); +}); + +for (const signal of ['SIGINT', 'SIGTERM']) { + process.on(signal, () => server.close(() => process.exit(0))); +} diff --git a/scripts/sync-agentctl.mjs b/scripts/sync-agentctl.mjs new file mode 100644 index 0000000..307a11b --- /dev/null +++ b/scripts/sync-agentctl.mjs @@ -0,0 +1,227 @@ +import { execFileSync } from 'node:child_process'; +import { + copyFile, + mkdir, + readFile, + rename, + rm, + stat, + writeFile, +} from 'node:fs/promises'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; +import { contentManifest } from './content-manifest.mjs'; + +const siteRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..'); +const generatedRoot = path.join(siteRoot, 'src/content/docs/_generated'); +const nextRoot = path.join(siteRoot, 'src/content/docs/_generated.next'); +const backupRoot = path.join(siteRoot, 'src/content/docs/_generated.previous'); +const basePath = '/agentctl/'; + +const candidates = [ + process.env.AGENTCTL_REPO, + path.resolve(siteRoot, '../agentctl'), + path.resolve(siteRoot, '../../agentctl'), +].filter(Boolean); + +let agentctlRoot; +for (const candidate of candidates) { + try { + const cargo = await stat(path.join(candidate, 'Cargo.toml')); + const readme = await stat(path.join(candidate, 'README.md')); + if (cargo.isFile() && readme.isFile()) { + agentctlRoot = path.resolve(candidate); + break; + } + } catch { + // Try the next documented checkout layout. + } +} + +if (!agentctlRoot) { + throw new Error( + `Unable to locate agentctl. Set AGENTCTL_REPO. Checked: ${candidates.join(', ')}`, + ); +} + +const sourceMap = new Map(); +for (const [source, target] of contentManifest) { + const slug = target + .replace(/^_generated\//, '') + .replace(/\.md$/, '') + .replace(/\/index$/, ''); + sourceMap.set(source, `${basePath}${slug ? `${slug}/` : ''}`); +} + +const specialRoutes = new Map([ + ['CODE_OF_CONDUCT.md', `${basePath}contributing/`], + ['SECURITY.md', `${basePath}security/`], + ['docs/adr', `${basePath}architecture/decisions/`], + ['schemas/workflow.schema.json', `${basePath}downloads/workflow.schema.json`], +]); + +function yamlQuote(value) { + return JSON.stringify(value); +} + +function sourceRoute(sourcePath, destination) { + if (/^(?:https?:|mailto:|#|\/)/.test(destination)) return destination; + const [rawPath, anchor = ''] = destination.split('#', 2); + if (!rawPath) return destination; + const resolved = path.posix.normalize(path.posix.join(path.posix.dirname(sourcePath), rawPath)); + const route = sourceMap.get(resolved) || specialRoutes.get(resolved); + if (route) return `${route}${anchor ? `#${anchor}` : ''}`; + return `https://github.com/opensourceops/agentctl/blob/main/${resolved}${anchor ? `#${anchor}` : ''}`; +} + +async function rewriteImages(sourcePath, markdown) { + const imagePattern = /(!\[[^\]]*\])\(([^)]+)\)/g; + const replacements = []; + for (const match of markdown.matchAll(imagePattern)) { + const destination = match[2]; + if (/^(?:https?:|data:|\/)/.test(destination)) continue; + const clean = destination.split('#', 1)[0]; + const resolved = path.posix.normalize(path.posix.join(path.posix.dirname(sourcePath), clean)); + const sourceFile = path.join(agentctlRoot, resolved); + const targetRelative = path.posix.join('imported-assets', resolved); + const targetFile = path.join(siteRoot, 'public', targetRelative); + try { + if (!(await stat(sourceFile)).isFile()) continue; + } catch { + throw new Error(`Missing image referenced by ${sourcePath}: ${destination}`); + } + await mkdir(path.dirname(targetFile), { recursive: true }); + await copyFile(sourceFile, targetFile); + replacements.push([match[0], `${match[1]}(${basePath}${targetRelative})`]); + } + return replacements.reduce((value, [from, to]) => value.replace(from, to), markdown); +} + +async function expandIncludes(sourcePath, markdown) { + const pattern = //g; + let result = ''; + let cursor = 0; + for (const match of markdown.matchAll(pattern)) { + const includePath = match[1]; + const language = match[2]; + const absolute = path.join(agentctlRoot, includePath); + let included; + try { + included = await readFile(absolute, 'utf8'); + } catch (error) { + throw new Error(`Missing include ${includePath} referenced by ${sourcePath}: ${error.message}`); + } + result += markdown.slice(cursor, match.index); + result += `\n\`\`\`${language}\n${included.trimEnd()}\n\`\`\`\n`; + cursor = match.index + match[0].length; + } + return result + markdown.slice(cursor); +} + +async function transform(sourcePath, title, description, commit, dirty) { + const absolute = path.join(agentctlRoot, sourcePath); + let markdown; + try { + markdown = await readFile(absolute, 'utf8'); + } catch (error) { + throw new Error(`Missing canonical source ${sourcePath}: ${error.message}`); + } + markdown = markdown.replace(/^#\s+[^\n]+\n+/, ''); + markdown = await expandIncludes(sourcePath, markdown); + markdown = await rewriteImages(sourcePath, markdown); + markdown = markdown.replace(/(? { + return `${label}(${sourceRoute(sourcePath, destination)})`; + }); + + const verified = dirty ? `${commit} with local changes` : commit; + const frontmatter = [ + '---', + `title: ${yamlQuote(title)}`, + `description: ${yamlQuote(description)}`, + `editUrl: ${yamlQuote(`https://github.com/opensourceops/agentctl/edit/main/${sourcePath}`)}`, + '---', + '', + ].join('\n'); + const provenance = [ + '', + `> Canonical source: [\`${sourcePath}\`](https://github.com/opensourceops/agentctl/blob/main/${sourcePath}). Verified against agentctl commit \`${verified}\`.`, + '', + ].join('\n'); + return `${frontmatter}${markdown.trim()}${provenance}`; +} + +const commit = execFileSync('git', ['rev-parse', 'HEAD'], { + cwd: agentctlRoot, + encoding: 'utf8', +}).trim(); +const dirty = Boolean( + execFileSync('git', ['status', '--porcelain'], { + cwd: agentctlRoot, + encoding: 'utf8', + }).trim(), +); +const cargo = await readFile(path.join(agentctlRoot, 'Cargo.toml'), 'utf8'); +const version = cargo.match(/\[workspace\.package\][\s\S]*?\nversion\s*=\s*"([^"]+)"/)?.[1]; +if (!version) throw new Error('Unable to read agentctl workspace version'); + +await rm(nextRoot, { recursive: true, force: true }); +await rm(backupRoot, { recursive: true, force: true }); +await mkdir(nextRoot, { recursive: true }); + +for (const [source, target, title, description] of contentManifest) { + const output = path.join(nextRoot, target.replace(/^_generated\//, '')); + await mkdir(path.dirname(output), { recursive: true }); + await writeFile(output, await transform(source, title, description, commit, dirty)); +} + +try { + await rename(generatedRoot, backupRoot); +} catch (error) { + if (error.code !== 'ENOENT') throw error; +} + +try { + await rename(nextRoot, generatedRoot); + await rm(backupRoot, { recursive: true, force: true }); +} catch (error) { + try { + await rename(backupRoot, generatedRoot); + } catch { + // Preserve the original error if rollback is not possible. + } + throw error; +} + +await mkdir(path.join(siteRoot, 'src/data'), { recursive: true }); +await mkdir(path.join(siteRoot, 'public/downloads'), { recursive: true }); +await mkdir(path.join(siteRoot, 'public/meta'), { recursive: true }); +await copyFile( + path.join(agentctlRoot, 'schemas/workflow.schema.json'), + path.join(siteRoot, 'public/downloads/workflow.schema.json'), +); +await copyFile( + path.join(agentctlRoot, 'examples/acceptance/mock-tool/workflow.yaml'), + path.join(siteRoot, 'src/data/home-workflow.yaml'), +); + +const metadata = { + product: 'agentctl', + version, + workflowApi: 'agentctl.dev/v1alpha1', + commit, + dirty, + sourceRepository: 'https://github.com/opensourceops/agentctl', + importedFiles: contentManifest.length, +}; +await writeFile( + path.join(siteRoot, 'src/data/agentctl-source.json'), + `${JSON.stringify(metadata, null, 2)}\n`, +); +await writeFile( + path.join(siteRoot, 'public/meta/agentctl-source.json'), + `${JSON.stringify(metadata, null, 2)}\n`, +); + +console.log( + `Synchronized ${contentManifest.length} canonical pages from agentctl ${commit}${dirty ? ' (dirty)' : ''}.`, +); diff --git a/scripts/verify-agentctl.mjs b/scripts/verify-agentctl.mjs new file mode 100644 index 0000000..10b9f09 --- /dev/null +++ b/scripts/verify-agentctl.mjs @@ -0,0 +1,37 @@ +import { spawnSync } from 'node:child_process'; +import { statSync } from 'node:fs'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const siteRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..'); +const candidates = [ + process.env.AGENTCTL_REPO, + path.resolve(siteRoot, '../agentctl'), + path.resolve(siteRoot, '../../agentctl'), +].filter(Boolean); + +const agentctlRoot = candidates.find((candidate) => { + try { + return statSync(path.join(candidate, 'Cargo.toml')).isFile(); + } catch { + return false; + } +}); + +if (!agentctlRoot) { + throw new Error(`Unable to locate agentctl. Set AGENTCTL_REPO. Checked: ${candidates.join(', ')}`); +} + +function run(command, args, cwd, env = process.env) { + const result = spawnSync(command, args, { cwd, env, stdio: 'inherit' }); + if (result.error) throw result.error; + if (result.status !== 0) process.exit(result.status ?? 1); +} + +run('cargo', ['xtask', 'docs-verify'], agentctlRoot); +run( + process.platform === 'win32' ? 'pnpm.cmd' : 'pnpm', + ['verify'], + siteRoot, + { ...process.env, AGENTCTL_REPO: agentctlRoot }, +); diff --git a/src/components/Footer.astro b/src/components/Footer.astro new file mode 100644 index 0000000..901a5a1 --- /dev/null +++ b/src/components/Footer.astro @@ -0,0 +1,57 @@ +--- +import EditLink from '@astrojs/starlight/components/EditLink.astro'; +import LastUpdated from '@astrojs/starlight/components/LastUpdated.astro'; +import Pagination from '@astrojs/starlight/components/Pagination.astro'; + +const publicPageUrl = `https://opensourceops.github.io${Astro.url.pathname}`; +const documentationIssue = new URL('https://github.com/opensourceops/agentctl/issues/new'); +documentationIssue.searchParams.set('labels', 'documentation'); +documentationIssue.searchParams.set('title', `Docs: ${Astro.url.pathname}`); +documentationIssue.searchParams.set( + 'body', + `Page: ${publicPageUrl}\n\nSection:\n\nExpected behavior:\n\nActual behavior:\n`, +); +const usageQuestion = new URL('https://github.com/opensourceops/agentctl/issues/new'); +usageQuestion.searchParams.set('labels', 'question'); +usageQuestion.searchParams.set('title', `Question about ${Astro.url.pathname}`); +usageQuestion.searchParams.set('body', `Documentation page: ${publicPageUrl}\n\nQuestion:\n`); +--- + + + + + + diff --git a/src/components/Header.astro b/src/components/Header.astro new file mode 100644 index 0000000..abbd5f9 --- /dev/null +++ b/src/components/Header.astro @@ -0,0 +1,97 @@ +--- +import config from 'virtual:starlight/user-config'; +import LanguageSelect from '@astrojs/starlight/components/LanguageSelect.astro'; +import Search from '@astrojs/starlight/components/Search.astro'; +import SiteTitle from '@astrojs/starlight/components/SiteTitle.astro'; +import SocialIcons from '@astrojs/starlight/components/SocialIcons.astro'; +import ThemeSelect from '@astrojs/starlight/components/ThemeSelect.astro'; + +const shouldRenderSearch = + config.pagefind || config.components.Search !== '@astrojs/starlight/components/Search.astro'; +const base = import.meta.env.BASE_URL; +--- + + + + diff --git a/src/components/Homepage.astro b/src/components/Homepage.astro new file mode 100644 index 0000000..9baf707 --- /dev/null +++ b/src/components/Homepage.astro @@ -0,0 +1,216 @@ +--- +import workflow from '../data/home-workflow.yaml?raw'; +import source from '../data/agentctl-source.json'; + +const base = import.meta.env.BASE_URL; +const shortCommit = source.commit.slice(0, 8); +--- + +
    +
    + Deterministic graph + Bounded model tasks + Explicit effects + Durable local state + Provider-neutral core +
    + +
    +
    +

    What agentctl is

    +

    A control layer between reviewed intent and uncertain execution

    +

    + Ordinary automation is predictable but cannot reason. Agent scripts can reason but often hide + control flow, retries, authority, and recovery. agentctl gives deterministic orchestration the + final say while a model handles only the tasks you assign to it. +

    +
    +
    +
    + 01 +

    Declare the whole run

    +

    Inputs, tasks, dependencies, agents, tools, policy, memory, and outputs live in strict versioned YAML.

    +
    +
    + 02 +

    Bound every uncertain part

    +

    Models receive explicit instructions, tools, token limits, turn limits, timeouts, and provider capabilities.

    +
    +
    + 03 +

    Recover from evidence

    +

    SQLite records tasks, effects, approvals, checkpoints, audit events, and trace correlation before recovery is needed.

    +
    +
    +
    + +
    +
    +

    How it works

    +

    Compile first. Execute within policy. Persist before guessing.

    +
    +
      +
    1. CheckReject invalid YAML, references, templates, policy, and capability mismatches.
    2. +
    3. PlanBuild a declaration-ordered DAG and classify what can be predicted.
    4. +
    5. RunExecute deterministic actions and bounded agents through explicit effect boundaries.
    6. +
    7. RecoverResume safe work, replay recorded truth, or fork only when fresh effects are intentional.
    8. +
    +
    + +
    +
    +

    Verified workflow

    +

    A bounded repository check, not a free-running agent

    +

    + This exact file is imported from examples/acceptance/mock-tool/workflow.yaml. + The acceptance suite copies it to a clean directory and runs it without credentials. +

    +
    +
    Deterministic
    The graph, assertion, and artifact write.
    +
    Bounded agent
    Two turns, one read tool call, 32 output tokens, five seconds.
    +
    Persisted
    Run state, effects, tool correlation, checkpoints, audit, and trace IDs.
    +
    Verified
    An assertion rejects any verdict other than the expected fixture marker.
    +
    + Run the repository audit example +
    +
    +
    + workflow.yaml + +
    +
    {workflow}
    +
    +
    + +
    +
    +

    Trust and control

    +

    The model proposes. The runtime decides what can happen.

    +
    +
    +

    Policy outside prompts

    Filesystem, process, environment, network, provider, tool, and approval rules are runtime decisions.

    +

    Effect identity

    Non-pure requests are recorded before dispatch with stable identity, risk, idempotency, and confirmation.

    +

    Durable approvals

    Non-interactive runs pause and exit 3. An operator resolves the exact request and resumes the same run.

    +

    Native providers

    OpenAI, Azure OpenAI, Anthropic, and Gemini map native APIs behind a neutral core. Capabilities still differ.

    +

    Local-first state

    One process and SQLite keep the correctness boundary inspectable without a hosted control plane.

    +

    Honest uncertainty

    A crash after dispatch can leave an uncertain effect. agentctl stops instead of silently repeating it.

    +
    +
    + +
    +
    +

    Use cases

    +

    Add bounded reasoning where deterministic automation needs judgment

    +
    + +
    + +
    +
    +

    One runtime, three invocation paths

    +

    Run it where your work already lives

    +
    +
    +
    Local

    Review before execution

    Use check, plan, check mode, run, inspect, and resume from a normal terminal.

    Operate locally
    +
    Scheduled

    Bring your own clock

    Cron, systemd, or Kubernetes owns triggers and overlap. agentctl owns one durable bounded run.

    Schedule runs
    +
    CI and containers

    Use a generic OCI step

    Mount config, workspace, state, and artifacts. Consume one versioned JSON result and exit code.

    Run the container
    +
    +
    + +
    +
    +

    Durable execution

    +

    What happens if a run stops after it already did something?

    +

    + agentctl records an effect request before execution. A confirmed result can be reused on resume. + A started result without confirmation becomes uncertain, which stops automatic recovery until an + operator reconciles the external system. +

    + Understand resume and recorded replay +
    + +
    + +
    +
    +

    Choose the right boundary

    +

    agentctl complements scripts, CI, and workflow systems

    +
    +
    + + + + + + + + + +
    ApproachBest atWhere agentctl differs
    Shell script plus model APISmall direct integrationsAdds strict graph compilation, external policy, effects, approvals, and durable recovery.
    Chat-agent frameworkInteractive conversations and dynamic handoffsKeeps reviewed workflow control flow authoritative instead of model-owned.
    General workflow engineBroad scheduling and distributed executionFocuses on one local durable run with bounded model and tool semantics.
    AnsibleConfiguration management and idempotent convergenceUses agent tasks and an effect ledger, but is not a configuration-management replacement.
    CI/CD pipelineRunners, triggers, secrets, and artifact retentionRuns inside CI as one step; CI still owns the surrounding job lifecycle.
    +
    +
    + +
    +
    +

    Current maturity

    +

    Production-oriented alpha, preparing for hosted RC validation

    +

    + The workflow API is agentctl.dev/v1alpha1. The deterministic core, fake provider, + local persistence, and credential-free journeys have executable evidence. Native providers and + protocols have mock coverage at documented levels. Hosted multi-platform workflows are configured, + but the current candidate has not completed those remote runs. +

    +
    +
      +
    • No stable v1 compatibility promise
    • +
    • No exactly-once or in-process sandbox claim
    • +
    • No distributed scheduler or parallel task execution
    • +
    • No claim of live validation across every provider
    • +
    +
    + +
    +
    +

    Start with evidence

    +

    Run a credential-free workflow in a clean directory

    +

    Validate the YAML, inspect the deterministic plan, execute it, then read the durable run record.

    +
    + Get started +
    + + +
    + + diff --git a/src/content.config.ts b/src/content.config.ts new file mode 100644 index 0000000..ae822aa --- /dev/null +++ b/src/content.config.ts @@ -0,0 +1,16 @@ +import { defineCollection } from 'astro:content'; +import { docsLoader } from '@astrojs/starlight/loaders'; +import { docsSchema } from '@astrojs/starlight/schema'; + +export const collections = { + docs: defineCollection({ + loader: docsLoader({ + generateId: ({ entry }) => + entry + .replace(/^_generated\//, '') + .replace(/\.(?:md|mdx)$/, '') + .replace(/\/index$/, ''), + }), + schema: docsSchema(), + }), +}; diff --git a/src/content/docs/404.md b/src/content/docs/404.md new file mode 100644 index 0000000..6d3ad83 --- /dev/null +++ b/src/content/docs/404.md @@ -0,0 +1,18 @@ +--- +title: Page not found +description: Search agentctl documentation or return to a useful starting point. +template: splash +pagefind: false +sidebar: + hidden: true +editUrl: false +--- + +The requested documentation route does not exist or has moved. + +- [Search the documentation](/agentctl/overview/) +- [Return to the documentation home](/agentctl/) +- [Run the getting-started tutorial](/agentctl/getting-started/) +- [Open the CLI reference](/agentctl/reference/cli/) +- [Diagnose a problem](/agentctl/troubleshooting/) +- [View agentctl on GitHub](https://github.com/opensourceops/agentctl) diff --git a/src/content/docs/_generated/architecture/decisions/0001.md b/src/content/docs/_generated/architecture/decisions/0001.md new file mode 100644 index 0000000..fced5eb --- /dev/null +++ b/src/content/docs/_generated/architecture/decisions/0001.md @@ -0,0 +1,11 @@ +--- +title: "ADR 0001: Deterministic core" +description: "Keep graph, policy, state, and replay model-independent." +editUrl: "https://github.com/opensourceops/agentctl/edit/main/docs/adr/0001-deterministic-core-explicit-effects.md" +--- +Status: accepted, 2026-07-22. + +The graph, policy, state machine, persistence decisions, and recorded replay remain model-independent. Provider, tool, filesystem, process, MCP, A2A, internal-state mutation, clock, and ID behavior cross injected interfaces and receive durable effect identity when externally observable. + +This keeps models replaceable and tests credential-free. It requires more records and conservative uncertain states, but avoids hidden calls during replay. Dynamic model-owned orchestration is rejected. +> Canonical source: [`docs/adr/0001-deterministic-core-explicit-effects.md`](https://github.com/opensourceops/agentctl/blob/main/docs/adr/0001-deterministic-core-explicit-effects.md). Verified against agentctl commit `0ae1e381b87ea815f0d4ca66689db10bb1129e4a`. diff --git a/src/content/docs/_generated/architecture/decisions/0002.md b/src/content/docs/_generated/architecture/decisions/0002.md new file mode 100644 index 0000000..a9be871 --- /dev/null +++ b/src/content/docs/_generated/architecture/decisions/0002.md @@ -0,0 +1,11 @@ +--- +title: "ADR 0002: Strict workflow envelope" +description: "Use a versioned document and generated schema." +editUrl: "https://github.com/opensourceops/agentctl/edit/main/docs/adr/0002-versioned-strict-workflow-envelope.md" +--- +Status: accepted, 2026-07-22. + +Workflows use `apiVersion`, `kind`, `metadata`, and `spec`. The envelope is adopted because identity/version and evolution need unambiguous locations, not because another system uses it. All typed objects deny unknown fields and a generated JSON Schema is checked in. + +A narrow legacy translator provides actionable migration. General aliases and silent coercion are rejected because they make security review and durable reproduction ambiguous. +> Canonical source: [`docs/adr/0002-versioned-strict-workflow-envelope.md`](https://github.com/opensourceops/agentctl/blob/main/docs/adr/0002-versioned-strict-workflow-envelope.md). Verified against agentctl commit `0ae1e381b87ea815f0d4ca66689db10bb1129e4a`. diff --git a/src/content/docs/_generated/architecture/decisions/0003.md b/src/content/docs/_generated/architecture/decisions/0003.md new file mode 100644 index 0000000..f73d6e5 --- /dev/null +++ b/src/content/docs/_generated/architecture/decisions/0003.md @@ -0,0 +1,11 @@ +--- +title: "ADR 0003: Conservative recovery" +description: "Use SQLite history and stop on uncertain effects." +editUrl: "https://github.com/opensourceops/agentctl/edit/main/docs/adr/0003-sqlite-history-and-conservative-recovery.md" +--- +Status: accepted, 2026-07-22. + +One versioned SQLite database is the local correctness store. Transactional task transitions/checkpoints/audits and a request-before-start effect ledger support resume and no-effect replay. Confirmed results are reused; started unconfirmed work becomes uncertain. + +No exactly-once claim is made. Automatic retry of ambiguous external effects is rejected. Fork is the explicit operation for fresh effects. Distributed history services are outside this release. +> Canonical source: [`docs/adr/0003-sqlite-history-and-conservative-recovery.md`](https://github.com/opensourceops/agentctl/blob/main/docs/adr/0003-sqlite-history-and-conservative-recovery.md). Verified against agentctl commit `0ae1e381b87ea815f0d4ca66689db10bb1129e4a`. diff --git a/src/content/docs/_generated/architecture/decisions/0004.md b/src/content/docs/_generated/architecture/decisions/0004.md new file mode 100644 index 0000000..0ef97fc --- /dev/null +++ b/src/content/docs/_generated/architecture/decisions/0004.md @@ -0,0 +1,11 @@ +--- +title: "ADR 0004: Native providers" +description: "Map native APIs behind provider-neutral contracts." +editUrl: "https://github.com/opensourceops/agentctl/edit/main/docs/adr/0004-native-provider-adapters.md" +--- +Status: accepted, 2026-07-22. + +OpenAI Responses, Azure OpenAI Responses, Anthropic Messages, Google Gemini generateContent, and a scripted fake implement one provider-neutral internal interface. Capabilities are negotiated before execution; provider SDK/HTTP shapes never enter durable core state. + +“OpenAI-compatible” shims are rejected as a support claim because they hide native tool, continuation, reasoning, error, and usage differences. Every provider requires mock protocol coverage; live credentials are optional evidence only. +> Canonical source: [`docs/adr/0004-native-provider-adapters.md`](https://github.com/opensourceops/agentctl/blob/main/docs/adr/0004-native-provider-adapters.md). Verified against agentctl commit `0ae1e381b87ea815f0d4ca66689db10bb1129e4a`. diff --git a/src/content/docs/_generated/architecture/decisions/0005.md b/src/content/docs/_generated/architecture/decisions/0005.md new file mode 100644 index 0000000..a4165db --- /dev/null +++ b/src/content/docs/_generated/architecture/decisions/0005.md @@ -0,0 +1,11 @@ +--- +title: "ADR 0005: Narrow v1 scheduling" +description: "Keep scheduling sequential until merge and recovery semantics are defined." +editUrl: "https://github.com/opensourceops/agentctl/edit/main/docs/adr/0005-narrow-v1-scheduling-and-extensions.md" +--- +Status: accepted, 2026-07-22. + +V1alpha1 schedules a sequential DAG in declaration order and integrates typed actions/tools, local packs, MCP 2025-11-25, and A2A 1.0. `maxConcurrency` greater than one is rejected. + +Parallel groups, loops, routing, sub-workflows, teams/handoffs, automatic reconnection/resubmission, executable plugin ABIs, and registries are deferred. Each needs deterministic merge, cancellation, policy, version, and recovery semantics before it can enter the stable contract. +> Canonical source: [`docs/adr/0005-narrow-v1-scheduling-and-extensions.md`](https://github.com/opensourceops/agentctl/blob/main/docs/adr/0005-narrow-v1-scheduling-and-extensions.md). Verified against agentctl commit `0ae1e381b87ea815f0d4ca66689db10bb1129e4a`. diff --git a/src/content/docs/_generated/architecture/decisions/0006.md b/src/content/docs/_generated/architecture/decisions/0006.md new file mode 100644 index 0000000..182bc17 --- /dev/null +++ b/src/content/docs/_generated/architecture/decisions/0006.md @@ -0,0 +1,19 @@ +--- +title: "ADR 0006: Schedulable runtime" +description: "Let external platforms schedule bounded non-interactive runs." +editUrl: "https://github.com/opensourceops/agentctl/edit/main/docs/adr/0006-schedulable-runtime-and-noninteractive-contract.md" +--- +Status: accepted + +## Decision + +`agentctl` is a schedulable runtime, not a scheduler. External platforms own triggers, calendars, leader election, overlap policy, log retention, and job lifecycle. The CLI owns one bounded run, durable SQLite history, effect safety, cancellation, outputs, and recovery. + +Non-interactive execution never prompts or auto-approves. The default approval behavior persists the request, pauses the run, emits run/trace correlation, and exits `3`. An operator resolves the approval and invokes `resume`. `deny_approval` and `fail` are stricter explicit modes. + +Machine output is one `agentctl.dev/cli/v1` final envelope. Inputs come from JSON, an input file, or repeated `KEY=VALUE` arguments; provider secrets remain environment references. Separate runs can share a SQLite database, but external schedulers must prevent overlapping effects when the target resource requires serialization. + +## Consequences + +Cron, systemd, Kubernetes, and CI can use normal process semantics without hidden terminal waits. The product avoids an eventing/distributed-control-plane surface. A future schedule-run key may improve deduplication, but it cannot replace external overlap controls or effect idempotency. +> Canonical source: [`docs/adr/0006-schedulable-runtime-and-noninteractive-contract.md`](https://github.com/opensourceops/agentctl/blob/main/docs/adr/0006-schedulable-runtime-and-noninteractive-contract.md). Verified against agentctl commit `0ae1e381b87ea815f0d4ca66689db10bb1129e4a`. diff --git a/src/content/docs/_generated/architecture/decisions/0007.md b/src/content/docs/_generated/architecture/decisions/0007.md new file mode 100644 index 0000000..fd9e4b2 --- /dev/null +++ b/src/content/docs/_generated/architecture/decisions/0007.md @@ -0,0 +1,17 @@ +--- +title: "ADR 0007: Generic OCI step" +description: "Use one non-root image contract across platforms." +editUrl: "https://github.com/opensourceops/agentctl/edit/main/docs/adr/0007-generic-oci-step-contract.md" +--- +Status: accepted + +## Decision + +One minimal OCI image serves Docker, Kubernetes, and container-step CI systems. It contains only the Rust CLI on a maintained distroless base, runs as UID/GID 65532, and supports a read-only root filesystem. The stable mount contract is `/config` (read-only configuration), `/workspace` (usually read-only source), `/state` (SQLite durability), and `/artifacts` (declared output). + +The image entrypoint is `agentctl`. Callers supply ordinary CLI arguments and one final JSON result is written to stdout. Credentials are injected as environment variables or platform secret mounts, never ordinary CLI values. `/state` must persist between execution, inspect, approval, resume, and replay invocations. + +## Consequences + +No vendor-specific plugin API is required. Platforms without direct entrypoint/argument support can invoke `docker run` from their normal shell step. Distroless reduces runtime surface but deliberately has no shell; debugging uses the public CLI or a separate diagnostic image, not mutation of production images. +> Canonical source: [`docs/adr/0007-generic-oci-step-contract.md`](https://github.com/opensourceops/agentctl/blob/main/docs/adr/0007-generic-oci-step-contract.md). Verified against agentctl commit `0ae1e381b87ea815f0d4ca66689db10bb1129e4a`. diff --git a/src/content/docs/_generated/architecture/diagrams.md b/src/content/docs/_generated/architecture/diagrams.md new file mode 100644 index 0000000..b716223 --- /dev/null +++ b/src/content/docs/_generated/architecture/diagrams.md @@ -0,0 +1,294 @@ +--- +title: "Architecture diagrams" +description: "Fourteen verified diagrams for compilation, state, effects, recovery, deployment, and crates." +editUrl: "https://github.com/opensourceops/agentctl/edit/main/docs/architecture/DIAGRAMS.md" +--- +These diagrams explain implemented `v1alpha1` behavior. Each diagram is paired with text so the relationship is available when Mermaid cannot render. + +## High-level system architecture + +The CLI composes deterministic core contracts with persistence, runtime execution, concrete providers, protocols, and optional tracing. + +```mermaid +flowchart LR + accTitle: High-level agentctl system architecture + accDescr: A workflow author uses the CLI, which joins deterministic core contracts to runtime providers, protocols, executors, tracing, and SQLite. + User[Workflow author or operator] --> CLI[agentctl CLI] + CLI --> Core[Core parser compiler policy state] + CLI --> Runtime[Sequential runtime] + Runtime --> Store[SQLite store] + Runtime --> Providers[Native model providers] + Runtime --> Protocols[MCP and A2A clients] + Runtime --> Executors[Files processes and built-in tools] + Runtime --> Traces[Audit events and optional OpenTelemetry] + Core --> Runtime +``` + +The core owns the graph and rules. Concrete I/O stays at the runtime boundary. SQLite is local durable state, not a distributed service. + +## Workflow compilation + +Compilation turns one strict document into a versioned deterministic plan before execution begins. + +```mermaid +flowchart LR + accTitle: Workflow compilation stages + accDescr: Versioned YAML passes through strict parsing, validation, graph construction, and digest calculation to become a compiled plan. + Source[Versioned YAML] --> Parse[Strict parse and migration diagnostics] + Parse --> Validate[References templates policy and capabilities] + Validate --> Graph[Cycle check and declaration-order DAG] + Graph --> Digest[Canonical workflow and plan digests] + Digest --> Plan[Compiled plan] +``` + +Unknown fields, cycles, missing references, invalid templates, and unsupported provider capabilities fail before a run performs effects. + +## Run lifecycle + +A normal run moves through durable states and ends in one terminal result or a durable pause. + +```mermaid +flowchart TD + accTitle: Run lifecycle + accDescr: A run creates durable records, executes ready tasks, persists results, and reaches success, approval, failure, or cancellation. + Create[Create run and task records] --> Ready[Find next ready task] + Ready --> Execute[Execute action or bounded agent] + Execute --> Persist[Commit task output checkpoint and audit] + Persist --> More{More ready tasks?} + More -->|Yes| Ready + More -->|No| Success[Succeeded] + Execute --> Approval[Pending approval] + Execute --> Failure[Failed or cancelled] +``` + +The current scheduler runs one ready task at a time in declaration order. A pending approval is non-terminal and can later resume. + +## Runtime state machine + +Run and task transitions are validated instead of being inferred from missing records. + +```mermaid +stateDiagram-v2 + accTitle: Runtime state machine + accDescr: Pending runs become running, can wait for approval, and terminate as succeeded, failed, or cancelled. + [*] --> Pending + Pending --> Running + Running --> WaitingApproval + WaitingApproval --> Running: approval resolved and resume + Running --> Succeeded + Running --> Failed + Running --> Cancelled + Pending --> Cancelled + Succeeded --> [*] + Failed --> [*] + Cancelled --> [*] +``` + +Invalid transitions fail explicitly. Replay requires a terminal source; resume requires a safe non-terminal source. + +## Effect recording + +Every non-pure operation is requested durably before an executor starts. + +```mermaid +sequenceDiagram + accTitle: Effect recording sequence + accDescr: The runtime records an effect before dispatch and then persists either its confirmed result or an uncertain state. + participant R as Runtime + participant S as SQLite store + participant E as Effect executor + R->>S: Persist requested effect and stable identity + R->>S: Mark effect started + R->>E: Dispatch bounded operation + alt confirmed result + E-->>R: Result + R->>S: Commit confirmed result and task evidence + else dispatch outcome ambiguous + R->>S: Mark effect uncertain + end +``` + +A request-before-start ledger supports reuse of confirmed results. It does not prove exactly-once behavior in an external system. + +## Resume flow + +Resume continues the same non-terminal run only when durable evidence makes continuation safe. + +```mermaid +flowchart TD + accTitle: Resume flow + accDescr: Resume loads the same run, stops for uncertain effects, reuses confirmed results, and continues safe pending work. + Load[Load same run and checkpoint] --> Scan[Inspect tasks approvals and effects] + Scan --> Uncertain{Started unconfirmed effect?} + Uncertain -->|Yes| Stop[Stop for operator reconciliation] + Uncertain -->|No| Confirmed{Confirmed prior effect?} + Confirmed -->|Yes| Reuse[Reuse recorded result] + Confirmed -->|No| Continue[Execute next requested work] + Reuse --> Continue +``` + +Resume preserves the run identity and progress. It never silently repeats an uncertain external effect. + +## Recorded replay flow + +Recorded replay constructs a new linked record entirely from terminal stored evidence. + +```mermaid +flowchart LR + accTitle: Recorded replay flow + accDescr: Replay copies terminal stored evidence into a linked replay run without calling providers, tools, files, processes, or networks. + Terminal[Terminal source run] --> Validate[Validate all source tasks are terminal] + Validate --> Copy[Copy recorded task outputs effects and tool calls] + Copy --> Replay[Create replay-mode run linked to source] + Replay --> Result[Return recorded outcome] + Executors[Provider tool file process and network executors] -. not called .-> Replay +``` + +Replay reports historical truth. It does not observe current files, rerun verification, or contact a provider. + +## Fork or rerun flow + +Fork makes fresh execution an explicit choice instead of overloading replay. + +```mermaid +flowchart LR + accTitle: Fork or rerun flow + accDescr: Fork loads a prior declaration into a child run, resets working memory, and executes fresh effects for an independent outcome. + Source[Prior run] --> Load[Load source workflow plan and inputs] + Load --> Child[Create child run with parent link] + Child --> Reset[Use declared initial working memory] + Reset --> Execute[Execute tasks with fresh effects] + Execute --> Outcome[Independent outcome] +``` + +Fork may repeat external mutations and may produce a different result. Reconcile uncertain source effects before forking. + +## Approval lifecycle + +Policy can stop an effect before dispatch and require an operator-controlled decision. + +```mermaid +sequenceDiagram + accTitle: Approval lifecycle + accDescr: Policy requires approval, the runtime persists and reports it, an operator resolves it, and the same run resumes. + participant R as Runtime + participant P as Policy engine + participant S as SQLite store + participant O as Operator + R->>P: Evaluate capability resource and risk + P-->>R: Approval required + R->>S: Persist redacted approval request + R-->>O: Exit 3 with run and trace IDs + O->>S: Approve or reject with actor and reason + O->>R: Resume same run + R->>S: Read resolution and continue or fail +``` + +Non-interactive execution never waits on stdin or auto-approves. The platform authenticates the operator. + +## Container deployment + +The production image is a non-root CLI with four explicit host-managed mounts. + +```mermaid +flowchart LR + accTitle: Container deployment contract + accDescr: A non-root agentctl container reads config and workspace mounts, writes state and artifacts, receives secret references, and returns JSON and an exit code. + Config[Read-only /config] --> Container[Distroless agentctl UID 65532] + Workspace[Usually read-only /workspace] --> Container + Container --> State[Writable /state SQLite] + Container --> Artifacts[Writable /artifacts] + Secrets[Environment secret references] --> Container + Container --> Output[One JSON result and process exit code] +``` + +The root filesystem can remain read-only. State must persist for inspection, approval, resume, and replay. + +## CI/CD execution + +CI remains the outer scheduler and artifact system. + +```mermaid +flowchart TD + accTitle: CI and CD execution + accDescr: CI prepares mounts, runs the generic container step, interprets JSON and exit status, collects evidence, and handles approval through an operator job. + Checkout[CI checks out workflow and source] --> Prepare[Prepare config state workspace and artifacts] + Prepare --> Run[Run generic agentctl OCI step] + Run --> Code[Interpret stable exit code] + Run --> Json[Parse final JSON envelope] + Run --> Collect[Collect protected state and declared artifacts] + Code --> Approval{Exit 3?} + Approval -->|Yes| Operator[Operator-controlled resolution job] + Operator --> Resume[Resume with retained state] +``` + +GitHub Actions, GitLab CI, Jenkins, Harness CI, and Kubernetes use the same mount and process contract. + +## Provider and tool interaction + +The runtime, not the model, owns tool visibility, policy, validation, and effect recording. + +```mermaid +sequenceDiagram + accTitle: Provider and tool interaction + accDescr: The runtime maps neutral messages through a native provider, validates model tool calls, authorizes execution, and returns correlated results. + participant R as Runtime agent loop + participant P as Native provider + participant M as Model + participant T as Tool executor + R->>P: Provider-neutral messages and strict tools + P->>M: Native request + M-->>P: Tool call or final content + P-->>R: Neutral response and continuation + R->>R: Validate schema policy approval and limits + R->>T: Execute authorized tool with effect identity + T-->>R: Validated output + R->>P: Correlated tool result and continuation +``` + +Provider-native types stop at the adapter. Model output cannot change policy or tool metadata. + +## MCP and A2A boundaries + +Both protocols are remote effects with pinned versions, explicit hosts, environment-backed headers, and conservative ambiguity handling. + +```mermaid +flowchart LR + accTitle: MCP and A2A boundaries + accDescr: Runtime policy and the effect ledger mediate communication with untrusted remote MCP tool servers and A2A agents. + Workflow[Compiled workflow] --> Runtime[Runtime policy and effect ledger] + Runtime --> MCP[MCP 2025-11-25 Streamable HTTP] + Runtime --> A2A[A2A 1.0 Agent Card and JSON-RPC] + MCP --> McpPeer[Untrusted remote tool server] + A2A --> A2aPeer[Untrusted remote agent] + McpPeer --> Runtime + A2aPeer --> Runtime +``` + +MCP annotations and A2A cards are untrusted metadata. The clients do not automatically reconnect or resubmit after an ambiguous operation. + +## Crate dependency map + +The dependency direction keeps deterministic contracts independent from adapters. + +```mermaid +flowchart TD + accTitle: Crate dependency map + accDescr: CLI, runtime, provider, protocol, store, observability, and xtask crates depend inward on deterministic core contracts. + CLI[agentctl-cli] --> Runtime[agentctl-runtime] + CLI --> Providers[agentctl-providers] + CLI --> Protocols[agentctl-protocols] + CLI --> Store[agentctl-store] + Runtime --> Core[agentctl-core] + Runtime --> Store + Runtime --> Observability[agentctl-observability] + Providers --> Core + Protocols --> Core + Protocols --> Runtime + Store --> Core + Observability --> Core + Xtask[xtask] --> CLI +``` + +`agentctl-core` has no dependency on HTTP, SQLite, CLI parsing, or concrete executor types. `xtask` drives the built CLI for generation and acceptance. +> Canonical source: [`docs/architecture/DIAGRAMS.md`](https://github.com/opensourceops/agentctl/blob/main/docs/architecture/DIAGRAMS.md). Verified against agentctl commit `0ae1e381b87ea815f0d4ca66689db10bb1129e4a`. diff --git a/src/content/docs/_generated/architecture/index.md b/src/content/docs/_generated/architecture/index.md new file mode 100644 index 0000000..713bdf9 --- /dev/null +++ b/src/content/docs/_generated/architecture/index.md @@ -0,0 +1,40 @@ +--- +title: "Architecture overview" +description: "Crate boundaries, execution, determinism, concurrency, and packaging." +editUrl: "https://github.com/opensourceops/agentctl/edit/main/docs/ARCHITECTURE.md" +--- +## Dependency shape + +```text +CLI ───────┬────────> runtime ─────> core + │ │ ▲ + ├────────> providers ──────┤ + ├────────> protocols ─> runtime/core + └────────> store ─────────>┘ +runtime ────────────> observability ─> core contracts +``` + +`agentctl-core` owns deterministic domain behavior: strict parsing, migration, compilation, template resolution, effect identities, state machines, policy, and provider/tool interfaces. It knows no HTTP client, database, or CLI type. `agentctl-store` is the SQLite implementation. `agentctl-runtime` schedules one stable ready task at a time and coordinates injected clocks, IDs, executors, providers, protocols, persistence, and traces. Concrete network adapters and rendering stay at the edges. + +## Execution + +Parsing produces a versioned `Workflow`; compilation resolves references, validates provider capabilities and templates, detects cycles, and emits declaration-order topological tasks plus a digest. The runtime creates durable run/task rows, advances only valid state transitions, evaluates conditions, renders inputs, and executes the selected action or bounded agent. + +An effect request is persisted before any filesystem observation/mutation, process, internal-memory update, long-term-memory operation, tool, model, MCP, or A2A call. Its stable identity covers run, task, task attempt, ordinal, operation, and input digest. A confirmed result can be reused on resume. A started but unconfirmed effect is uncertain and stops recovery rather than being repeated. + +State transitions, checkpoint creation, working-memory replacement, and audit insertion are transactionally coupled where consistency requires it. Provider continuation, function-call correlation, effects, approvals, and redacted trace events are inspectable through the public CLI. Long-term memory is a separate table and never participates in replay correctness. OpenTelemetry export remains optional and is not the audit log. + +## Determinism and concurrency + +Ready tasks are ordered by YAML declaration order after dependencies. `maxConcurrency` currently must be `1`. Parallel execution, loops, matrix/foreach expansion, routers, sub-workflows, handlers, compensation execution, and event triggers are deferred because deterministic merge and recovery semantics are not yet frozen. The DSL carries optional compensation metadata on a tool contract, but the runtime does not execute compensation. + +Clock and identifier generation are injected. Provider responses, tools, and external actions are injected interfaces. Cryptographic digests canonicalize identity; output maps use stable ordering where the public contract requires it. + +## Platform and packaging + +The workspace uses Rust edition 2024, pins Rust 1.88 as the MSRV, forbids unsafe code, and denies clippy warnings. HTTP uses rustls and disables redirects. Subprocesses use direct argv, a cleared environment, explicit allowlists, validated timeout/output limits, concurrent bounded pipe draining, cancellation, and kill/reap cleanup. SQLite is bundled for predictable installation and creates private files on Unix. SIGINT and SIGTERM converge on durable cancellation. + +The OCI build is multi-stage: only the optimized Rust binary enters a maintained distroless runtime with CA roots and a non-root identity. `/config` is workflow configuration, `/workspace` is the read-only working tree, `/state` holds SQLite, and `/artifacts` receives declared outputs. State must be mounted again for inspect/resume/replay. The root filesystem may be read-only. See [Container contract](/agentctl/guides/container/) and ADR 0007. + +See the [architecture diagrams](/agentctl/architecture/diagrams/), [ADRs](https://github.com/opensourceops/agentctl/blob/main/docs/adr/), and [Durable execution](/agentctl/durable-execution/) for failure semantics. +> Canonical source: [`docs/ARCHITECTURE.md`](https://github.com/opensourceops/agentctl/blob/main/docs/ARCHITECTURE.md). Verified against agentctl commit `0ae1e381b87ea815f0d4ca66689db10bb1129e4a`. diff --git a/src/content/docs/_generated/concepts/memory.md b/src/content/docs/_generated/concepts/memory.md new file mode 100644 index 0000000..1541aa2 --- /dev/null +++ b/src/content/docs/_generated/concepts/memory.md @@ -0,0 +1,14 @@ +--- +title: "State and memory" +description: "Separate runtime state, working memory, long-term memory, and prompt cache." +editUrl: "https://github.com/opensourceops/agentctl/edit/main/docs/MEMORY.md" +--- +Four mechanisms remain intentionally separate: + +- Run state is authoritative lifecycle data: inputs, task states, attempts, outputs, cancellations, effects, approvals, and checkpoints. +- Working memory is a JSON object owned by one run. Writes are explicit keyed internal-state effects and the updated object commits with the task transition and checkpoint. Sequential scheduling is its merge rule. +- Long-term memory is namespaced SQLite data across runs with optional expiry. Reads/writes are explicit actions; `memory get/put` and `gc` provide administration. Replay never rolls it back or treats it as history. +- Provider prompt cache is an optional performance optimization. Cache keys/options and usage counts are provider metadata, never correctness or memory. + +Long-term retrieval is exact namespace/key lookup in this release. Vector search and automatic promotion are not implemented. A workflow promotes a value explicitly by reading long-term memory and then writing working memory. Retention is applied by expiration/GC, not by replay. +> Canonical source: [`docs/MEMORY.md`](https://github.com/opensourceops/agentctl/blob/main/docs/MEMORY.md). Verified against agentctl commit `0ae1e381b87ea815f0d4ca66689db10bb1129e4a`. diff --git a/src/content/docs/_generated/concepts/packs.md b/src/content/docs/_generated/concepts/packs.md new file mode 100644 index 0000000..7bb4a8d --- /dev/null +++ b/src/content/docs/_generated/concepts/packs.md @@ -0,0 +1,11 @@ +--- +title: "Reusable packs" +description: "Use versioned local content with integrity verification." +editUrl: "https://github.com/opensourceops/agentctl/edit/main/docs/PACKS.md" +--- +A pack is reviewed reusable YAML content, not executable plugin code. Its manifest API is `agentctl.dev/pack/v1alpha1` and declares a fully qualified dotted name, semantic version, agentctl semver constraint, actions, agents, tool contracts, capabilities, provider requirements, and optional policy defaults. + +`agentctl packs inspect` strictly parses the manifest, validates the API version, name, versions, and compatibility with the running binary. `agentctl packs verify` compares a `sha256:` integrity digest for a local manifest or archive. Workflow pack references carry name, version, local path, and integrity. The CLI verifies a referenced manifest, keeps it beneath the workflow directory, and loads actions, agents, and tools as `.` before compilation. + +Dependency resolution, transitive lockfile generation, Git fetching, reusable sub-workflows, policy-default merging, a hosted registry, native dynamic libraries, and pack processes are not implemented. A checked-in pack reference is therefore an integrity/provenance contract for local content, not a package manager. Manifest policy defaults are inspectable metadata and never weaken the invoking workflow’s policy. +> Canonical source: [`docs/PACKS.md`](https://github.com/opensourceops/agentctl/blob/main/docs/PACKS.md). Verified against agentctl commit `0ae1e381b87ea815f0d4ca66689db10bb1129e4a`. diff --git a/src/content/docs/_generated/concepts/policies.md b/src/content/docs/_generated/concepts/policies.md new file mode 100644 index 0000000..fc53345 --- /dev/null +++ b/src/content/docs/_generated/concepts/policies.md @@ -0,0 +1,15 @@ +--- +title: "Policies and approvals" +description: "Keep authority outside the model with explicit grants and durable decisions." +editUrl: "https://github.com/opensourceops/agentctl/edit/main/docs/POLICIES.md" +--- +Policy is evaluated by the runtime, never by a model. A policy defines a canonical workspace root, writable roots, allowed environment names, network host patterns, process basenames, providers, tool allow/deny lists, approval mode, and non-interactive behavior. + +Read paths must canonicalize under the workspace. Write paths canonicalize the nearest existing parent and must remain under a writable root. Parent traversal and symlink escape fail. Network rules match an exact hostname or `*.suffix` subdomains; suffix lookalikes and the wildcard apex do not match. HTTP redirects are disabled. Process allowlisting checks the executable basename and then launches direct argv with a cleared environment. + +Tool visibility, tool/capability authorization, resource checks, effect risk, and approval are distinct decisions. `never`, `mutations`, `high_risk`, and `always` are available approval modes. A tool may say `never`, `policy`, or `always`. The default non-interactive behavior is a durable pause and exit code `3`; explicit `deny_approval` and `fail` modes fail closed. Non-interactive execution never prompts or auto-approves. + +An approval stores the run/trace/task/agent, tool, capability, risk, redacted input, expected effect, reason, and resolution actor/reason. The associated task waits durably. Use `approvals list`, `approve`, or `reject`, then `resume`. Resolution and effect status are auditable. + +Provider, MCP, A2A, filesystem, process, and environment allowlists are necessary controls, not a containment boundary. Run untrusted executors inside an external OS/container sandbox. +> Canonical source: [`docs/POLICIES.md`](https://github.com/opensourceops/agentctl/blob/main/docs/POLICIES.md). Verified against agentctl commit `0ae1e381b87ea815f0d4ca66689db10bb1129e4a`. diff --git a/src/content/docs/_generated/concepts/product.md b/src/content/docs/_generated/concepts/product.md new file mode 100644 index 0000000..afb54e3 --- /dev/null +++ b/src/content/docs/_generated/concepts/product.md @@ -0,0 +1,40 @@ +--- +title: "Product definition" +description: "What agentctl does, who it serves, and where its boundary ends." +editUrl: "https://github.com/opensourceops/agentctl/edit/main/docs/PRODUCT.md" +--- +## Thesis and boundaries + +`agentctl` is a local-first control plane for automation that needs ordinary deterministic work and narrowly bounded model reasoning in the same durable run. The graph, policy, persistence, and replay are authoritative; a model is a replaceable executor for one task. + +Primary users are application and platform engineers authoring reviewed automation, security-conscious teams introducing model calls into existing operations, CI maintainers needing credential-free validation, and Rust applications embedding the runtime. Their jobs are to validate before acting, understand an exact plan, constrain effects, recover from interruption, prove what happened, and reuse reviewed content. + +Core use cases are local repository automation, approval-gated changes, structured model enrichment, provider-portable agent tasks, MCP tool calls, A2A delegation, cron-invoked runs, and generic containerized CI steps. `agentctl` is a schedulable runtime, not a scheduler: cron, systemd, Kubernetes, and CI own triggers and overlap policy. Hosted orchestration, a visual builder, chat, distributed scheduling, a public registry, arbitrary configuration management, secret storage, and unbounded autonomy are non-goals. + +## Journeys + +- Local: author strict YAML, run `check`, inspect `plan`, preview with `run --check --diff`, execute, approve if required, and inspect the audit history. +- Scheduled: invoke the CLI without a TTY, use explicit database/workspace/artifact paths and an overall timeout, receive exit `3` for a durable pending approval, and resume through an operator-controlled invocation. +- CI: mount config/workspace/state/artifacts into the generic OCI image, inject secrets only as environment variables, pass inputs by `--inputs-file` or repeated `--input`, and consume one versioned final JSON envelope on stdout. +- Embedded: construct core workflow and plan values, inject a store, providers, tools, clock, IDs, and tracing, then invoke the runtime with a cancellation token. + +Provider portability means the internal message, tool, continuation, usage, and capability contracts do not expose provider SDK types. It does not mean every provider has identical features. Compilation rejects a requested feature absent from the chosen provider. + +Reusable packs have a versioned manifest, fully qualified name, semantic version, agentctl constraint, capability/provider declarations, and file integrity verification. This release deliberately has no remote registry or executable plugin ABI. + +## Trust model + +Workflow and pack authors are trusted to request work, but their requests remain policy constrained. Model output, tool output, remote descriptions, file content, MCP annotations, A2A cards, and network responses are untrusted. Environment variables may contain secrets and are read only at adapter boundaries after allowlist checks. Primary provider credentials are loaded immediately before dispatch; configured header references are loaded during adapter construction, before run creation. SQLite is local durable state, not a secret vault. + +## Compatibility and maturity + +The current document API is `agentctl.dev/v1alpha1`; breaking changes may occur with explicit diagnostics and migration support. Machine output, plan, effects, runtime state, checkpoints, database schema, audit events, and protocol continuation all carry independent versions. Deprecations are documented for at least one compatibility window; incompatible durable state fails explicitly. + +Version 0.2 is a production-oriented alpha with executable evidence for the stated local, scheduled, and generic-container journeys. The workflow schema remains `v1alpha1`, so callers must pin the binary/image version. A stable release requires a frozen v1 workflow schema, accumulated cross-platform CI history, documented long-horizon database upgrade support, expanded compatibility fixtures, and a security review of any newly added executor. + +## Differentiation + +This is not a chat-agent or multi-agent conversation framework: workflows, not conversations, own control flow. It is not CI/CD: it can run inside CI but does not manage runners or deployment environments. It borrows idempotence and check/diff vocabulary from Ansible without becoming configuration management. It borrows plan/effect separation from Terraform without owning infrastructure state. It is not a hosted orchestrator or general scripting language: one local process, SQLite, constrained templates, typed actions, and explicit remote effects are intentional boundaries. + +The differentiator is the combination of deterministic compilation, honest predictability, durable effect identity, recorded no-effect replay, native provider portability, and policy decisions made outside the model. +> Canonical source: [`docs/PRODUCT.md`](https://github.com/opensourceops/agentctl/blob/main/docs/PRODUCT.md). Verified against agentctl commit `0ae1e381b87ea815f0d4ca66689db10bb1129e4a`. diff --git a/src/content/docs/_generated/concepts/tools.md b/src/content/docs/_generated/concepts/tools.md new file mode 100644 index 0000000..5137f87 --- /dev/null +++ b/src/content/docs/_generated/concepts/tools.md @@ -0,0 +1,15 @@ +--- +title: "Tools and effects" +description: "Tool contracts, effect classes, idempotency, and deterministic checks." +editUrl: "https://github.com/opensourceops/agentctl/edit/main/docs/TOOLS.md" +--- +A tool contract has a stable ID, description, input and output JSON Schema, capability, risk, effect class, idempotency, retry-safety flag, timeout, secret and network requirements, approval mode, and optional compensation metadata. Inputs are validated before an executor is called; outputs are validated before entering messages or task state. Executor errors remain errors. + +Effect classes are `pure`, `internal_state`, `observe`, `workspace_mutate`, `external_mutate`, `process_execution`, `network`, `model`, and `remote_agent`. Idempotency is `pure`, `idempotent`, `keyed`, `at_most_once`, or `unknown`. These values drive durable recovery and policy; model-provided MCP annotations never override them. + +Built-in model-callable tools are workspace read, workspace write, and echo. Their declared kind must match compiler-enforced capability/effect/idempotency semantics; the packaged CLI registers each declared built-in executor. Function-call IDs, input/output digests, status, and effect correlation are stored per run. + +Built-in actions are assign, assert, file read/write, direct process execution, run working-memory read/write, SQLite long-term-memory read/write, MCP call, and A2A delegation. File writes use a temporary file plus rename and return before/after/diff. Shell execution uses a direct executable and argv, never an implicit shell, clears inherited environment, applies allowlisted variables, and is not an OS sandbox. + +Check mode executes pure/internal simulation and observation needed for dataflow but never filesystem, process, remote, or model mutation. Results say fully predictable, partially predictable, or requires execution; unknown external work is never reported as predicted. +> Canonical source: [`docs/TOOLS.md`](https://github.com/opensourceops/agentctl/blob/main/docs/TOOLS.md). Verified against agentctl commit `0ae1e381b87ea815f0d4ca66689db10bb1129e4a`. diff --git a/src/content/docs/_generated/concepts/workflow-model.md b/src/content/docs/_generated/concepts/workflow-model.md new file mode 100644 index 0000000..5998893 --- /dev/null +++ b/src/content/docs/_generated/concepts/workflow-model.md @@ -0,0 +1,21 @@ +--- +title: "Workflow model" +description: "Strict YAML, tasks, templates, actions, agents, and validation." +editUrl: "https://github.com/opensourceops/agentctl/edit/main/docs/DSL.md" +--- +The current document version is `agentctl.dev/v1alpha1`, with `kind: Workflow`. The generated, authoritative JSON Schema is [`schemas/workflow.schema.json`](/agentctl/downloads/workflow.schema.json). YAML documents are limited to 1 MiB and reject unknown fields. + +`metadata` contains the name, description, and labels. `spec` contains typed inputs/outputs; providers; bounded agents; actions; tool contracts; ordered tasks; policy; memory; MCP servers; A2A peers; packs; runtime; and output settings. A task `uses` either `action:` or `agent:`, declares `needs`, an optional `when`, local `vars`, typed `with` input, retry, timeout, and failure behavior. + +Templates use only `${{ inputs.path }}`, `${{ vars.path }}`, `${{ memory.path }}`, and `${{ tasks.task-id.output.path }}`. Conditions additionally allow `not` and equality against a JSON literal or string. Exact templates preserve their JSON type; interpolation into text accepts only scalars. Missing and explicit `null` are different. There is no code execution, function call, indexing, arithmetic, or implicit task dependency. + +Providers, action environments, and protocol headers use `{ env: NAME }` secret references. Secret names are validated and values never become the workflow document. + +The compiler validates missing references, duplicate tasks, cycles, task-aware templates, tool references, provider capabilities, agent limits, and sequential runtime settings before execution. Ready tasks follow declaration order. `maxConcurrency` must be `1` in this version. + +`builtin.shell.exec` captures stdout and stderr concurrently. Its optional `stdoutLimitBytes`, `stderrLimitBytes`, and `combinedOutputLimitBytes` fields default to 1 MiB, 1 MiB, and 2 MiB respectively. Each configured value must be between 1 byte and 16 MiB. `timeoutSeconds` must be between 1 and 86,400. Exceeding an output bound terminates and reaps the process and records a structured failed effect; timeout or cancellation remains an uncertain effect because external changes may already have occurred. These fields are validated identically for workflow and pack actions. + +The parser translates a limited unversioned `playbook:` document and emits a migration warning. Use `agentctl migrate old.yaml --write new.yaml`. Legacy pack-backed, MCP, A2A, provider-specific, and broad module configurations need manual migration; see [Migrating from TypeScript](/agentctl/reference/migration/). + +Not implemented in v1alpha1: `foreach`, matrix expansion, parallel groups, routers, loops, sub-workflows, `finally`, handlers, event triggers, or compensation execution. They remain excluded until their deterministic state, merge, and recovery semantics are specified. +> Canonical source: [`docs/DSL.md`](https://github.com/opensourceops/agentctl/blob/main/docs/DSL.md). Verified against agentctl commit `0ae1e381b87ea815f0d4ca66689db10bb1129e4a`. diff --git a/src/content/docs/_generated/contributing/add-action.md b/src/content/docs/_generated/contributing/add-action.md new file mode 100644 index 0000000..2dd346d --- /dev/null +++ b/src/content/docs/_generated/contributing/add-action.md @@ -0,0 +1,45 @@ +--- +title: "Add an action or tool" +description: "Define contracts, policy, effects, recovery, tests, and documentation." +editUrl: "https://github.com/opensourceops/agentctl/edit/main/docs/development/ADD_ACTION.md" +--- +An action is selected directly by a task. A tool is requested by a model. Both need explicit data, policy, effect, persistence, replay, and test contracts. + +## 1. Define the contract + +Add the DSL kind and strict fields in `agentctl-core`. Deny unknown fields. Define the input and output shape, size and timeout bounds, and diagnostics for invalid configuration. + +For a model-callable tool, require strict JSON Schema with `additionalProperties: false` where appropriate. Add capability, risk, effect class, idempotency, retry-safety, approval, secret, and network metadata. + +## 2. Classify the effect + +Choose the narrowest honest class. Pure computation needs no external guarantee. Reads are observations, writes are mutations, processes are process execution, and remote agents are separate from ordinary network calls. + +State whether the operation is pure, idempotent, keyed, at-most-once, or unknown. Do not mark an operation retry-safe merely because retry is convenient. + +## 3. Enforce policy outside the executor + +Add the capability and resource checks before dispatch. A tool declaration cannot weaken global policy. Model output and remote metadata cannot grant authority. + +## 4. Persist request and result + +Create the effect record before invoking the implementation. Store a bounded, redacted request, stable digest, effect ID, status, confirmation, result or error, and trace correlation. Decide how a crash after dispatch becomes uncertain. + +## 5. Define replay behavior + +Recorded replay must use stored terminal output and call no new executor. Resume may reuse a confirmed result. Fork may perform a fresh operation. Add a regression test that panics if replay reaches the executor. + +## 6. Test the boundary + +Test valid input, invalid configuration, schema rejection, policy denial, approval, timeout, cancellation, output limits, redaction, persistence failure, uncertain dispatch, resume reuse, replay, and fork. Add a clean credential-free example when users need the feature. + +## 7. Document the contract + +Update the DSL, tool matrix, security boundary, architecture, limitations, generated schema, and site manifest as needed. Run: + +```text +cargo xtask generate +cargo xtask docs-verify +cargo xtask verify +``` +> Canonical source: [`docs/development/ADD_ACTION.md`](https://github.com/opensourceops/agentctl/blob/main/docs/development/ADD_ACTION.md). Verified against agentctl commit `0ae1e381b87ea815f0d4ca66689db10bb1129e4a`. diff --git a/src/content/docs/_generated/contributing/add-migration.md b/src/content/docs/_generated/contributing/add-migration.md new file mode 100644 index 0000000..1b24868 --- /dev/null +++ b/src/content/docs/_generated/contributing/add-migration.md @@ -0,0 +1,27 @@ +--- +title: "Add a store migration" +description: "Version and test forward SQLite migrations." +editUrl: "https://github.com/opensourceops/agentctl/edit/main/docs/development/ADD_MIGRATION.md" +--- +The SQLite schema is versioned with `PRAGMA user_version`. Migrations are forward-only and run in order. + +## 1. Define the compatibility change + +State which persisted versions can upgrade, which runtime/checkpoint/effect formats change, and how older binaries fail. Never silently ignore a future version. + +## 2. Add one migration + +Increment `DATABASE_SCHEMA_VERSION`, add the next migration string in `agentctl-store`, and include it in the ordered list. Use SQLite operations supported by the bundled library. Keep the migration transactional. + +## 3. Preserve failure behavior + +A failed migration must leave the prior database usable or fail clearly without partial success. Serialization, checksum, foreign-key, and incompatible-state errors remain explicit. + +## 4. Test forward paths + +Create the previous schema in a temporary database, insert representative durable state, open it with the new store, and assert the new version and records. Test an already-current database, an empty database, a future version, corrupt state, and an intentional migration failure. + +## 5. Document operator impact + +Update the database reference, compatibility policy, release notes or status evidence, and backup guidance. Explain whether downgrade remains possible. Run the complete store tests and `cargo xtask verify`. +> Canonical source: [`docs/development/ADD_MIGRATION.md`](https://github.com/opensourceops/agentctl/blob/main/docs/development/ADD_MIGRATION.md). Verified against agentctl commit `0ae1e381b87ea815f0d4ca66689db10bb1129e4a`. diff --git a/src/content/docs/_generated/contributing/add-provider.md b/src/content/docs/_generated/contributing/add-provider.md new file mode 100644 index 0000000..daaf9ae --- /dev/null +++ b/src/content/docs/_generated/contributing/add-provider.md @@ -0,0 +1,39 @@ +--- +title: "Add a provider" +description: "Add capabilities, native mapping, mock evidence, and honest claims." +editUrl: "https://github.com/opensourceops/agentctl/edit/main/docs/development/ADD_PROVIDER.md" +--- +Provider support means a native adapter with explicit capabilities and deterministic protocol evidence. A provider name alone is not support. + +## Capability metadata + +Declare support for text, structured output, tools, reasoning, continuation, cache options, usage fields, and limits. The compiler must reject any requested feature the adapter cannot honor. + +## Authentication and network boundary + +Use a workflow environment reference. Resolve credentials only at the adapter boundary, never from a CLI key flag. Enforce the reviewed endpoint host, disable redirects, use rustls, and define whether an endpoint override is permitted. + +## Native request mapping + +Map provider-neutral messages, tool definitions, tool results, structured output, reasoning, and continuation into the provider's native API. Do not route a native API through an assumed OpenAI-compatible shape. + +## Response and usage mapping + +Parse every supported content block, tool call ID, finish reason, continuation token, request ID, and usage counter. Validate untrusted JSON and bound response reads. Do not invent monetary cost when the provider does not return authoritative cost data. + +## Timeouts, cancellation, and errors + +Normalize status, authentication, rate limit, malformed response, timeout, cancellation, and transport errors. Retry only definitive retryable responses within the task bound. Treat loss after dispatch as ambiguous when the provider may have acted. + +## Tool continuation + +Preserve correlation across model response, tool call, durable effect, tool result, and the next provider request. Document whether continuation depends on stored provider responses or stateless replayed items. + +## Evidence + +Add local mock-protocol tests for request mapping, authentication, headers, redirects, errors, usage, tool continuation, cancellation, redaction, and response bounds. Add provider conformance fixtures without credentials. Live validation must be an opt-in bounded gate with retained sanitized evidence and must never become a normal CI requirement. + +## Documentation claims + +Update the provider guide and matrix with the exact level: implemented, mock-protocol tested, retained live evidence, or deferred. Add an example that passes `check` without resolving a secret. Run `cargo xtask generate`, `cargo xtask docs-verify`, and `cargo xtask verify`. +> Canonical source: [`docs/development/ADD_PROVIDER.md`](https://github.com/opensourceops/agentctl/blob/main/docs/development/ADD_PROVIDER.md). Verified against agentctl commit `0ae1e381b87ea815f0d4ca66689db10bb1129e4a`. diff --git a/src/content/docs/_generated/contributing/developer-guide.md b/src/content/docs/_generated/contributing/developer-guide.md new file mode 100644 index 0000000..dc2a80e --- /dev/null +++ b/src/content/docs/_generated/contributing/developer-guide.md @@ -0,0 +1,67 @@ +--- +title: "Developer guide" +description: "Understand the Rust workspace, deterministic core, effects, persistence, and tests." +editUrl: "https://github.com/opensourceops/agentctl/edit/main/docs/development/REPOSITORY.md" +--- +## Repository layout + +The production implementation is a Rust workspace. The remaining top-level TypeScript source is an archived compatibility reference and has no production package entrypoint. + +| Crate | Responsibility | +| --- | --- | +| `agentctl-core` | strict DSL, migration, compiler, templates, state, effects, policy, provider and tool contracts | +| `agentctl-store` | versioned SQLite persistence, migrations, checkpoints, approvals, audit, trace, sessions, tool calls, memory | +| `agentctl-runtime` | sequential scheduler, actions, bounded agent loop, resume, replay, fork, cancellation | +| `agentctl-providers` | native OpenAI, Azure OpenAI, Anthropic, Google, and fake adapters | +| `agentctl-protocols` | MCP and A2A clients | +| `agentctl-observability` | typed events, test sink, and OpenTelemetry bridge | +| `agentctl-cli` | command parsing, filesystem and process boundary, adapters, output envelopes, exit codes | +| `xtask` | generation, verification, acceptance, container, packaging, and secret checks | + +Dependency direction keeps the core free of HTTP, SQLite, CLI, and concrete clock or ID implementations. Concrete effects stay at runtime edges and receive stable effect identity. + +## Development setup + +Install the pinned Rust 1.88 toolchain with Rustfmt and Clippy, then from the repository root: + +```text +cargo build --workspace --locked +cargo test --workspace --all-features --locked +cargo xtask docs-verify +``` + +Normal development and documentation tests use no provider credential. Install `cargo-deny` 0.20.2 before the complete `cargo xtask verify` gate. + +## Deterministic core and effect boundaries + +Parsing and compilation must be pure for the same source and inputs. The compiler resolves references, validates capabilities, orders the DAG, and computes a plan digest. The runtime calls injected implementations for clocks, IDs, files, processes, providers, tools, protocols, state, and traces. + +An operation that observes or changes non-pure state needs an effect classification and a request record before dispatch. A completed confirmed result can be reused. An unconfirmed started result is uncertain. Do not add automatic retry around ambiguous transport or process failures. + +## Runtime state machine + +Run and task transitions use enums in `agentctl-core`; the store validates transitions and couples important updates in SQLite transactions. Working-memory replacement, task transition, checkpoint, and audit event commit together. Tool effect and tool-call terminal states also commit together. + +Resume continues the same run. Recorded replay creates a linked no-effect record from a terminal source. Fork creates a child run with fresh execution. Any change that alters these semantics needs tests, compatibility notes, and an ADR. + +## Providers, tools, MCP, and A2A + +Provider adapters implement the neutral model contract and publish typed capabilities. Tools publish strict schemas plus security and recovery metadata. MCP pins `2025-11-25`; A2A pins `1.0`. New protocol behavior needs deterministic local mock peers, bounded timeouts, cancellation, native error mapping, and explicit ambiguous-delivery behavior. + +## Testing strategy + +- Unit tests cover local invariants and negative contracts. +- Integration tests cover compiler, store, runtime, provider, protocol, policy, and trace boundaries. +- Compatibility fixtures preserve selected language-neutral behavior. +- Property tests cover templates and typed preservation. +- Fuzz targets cover YAML, provider and protocol responses, persisted state, and tool schema input. +- Acceptance tests run clean-directory and packaged user journeys. +- Container acceptance checks the non-root, read-only, state, artifact, signal, and offline replay contract. +- Live OpenAI acceptance is explicit, bounded, credentialed, and never part of normal CI. + +## Documentation and release changes + +Run `cargo xtask generate` whenever CLI help or the DSL changes. Run `cargo xtask docs-verify` for public content and examples. Update the Pages site's content manifest when adding a new canonical public page. Release decisions depend on hosted evidence for the exact candidate commit; local success alone does not approve an RC. + +Related guides: [Add an action](/agentctl/contributing/add-action/), [Add a provider](/agentctl/contributing/add-provider/), [Add a store migration](/agentctl/contributing/add-migration/), [Write documentation](/agentctl/contributing/documentation/), [Testing](/agentctl/contributing/testing/), and [Release process](/agentctl/contributing/release/). +> Canonical source: [`docs/development/REPOSITORY.md`](https://github.com/opensourceops/agentctl/blob/main/docs/development/REPOSITORY.md). Verified against agentctl commit `0ae1e381b87ea815f0d4ca66689db10bb1129e4a`. diff --git a/src/content/docs/_generated/contributing/documentation.md b/src/content/docs/_generated/contributing/documentation.md new file mode 100644 index 0000000..0a31ac7 --- /dev/null +++ b/src/content/docs/_generated/contributing/documentation.md @@ -0,0 +1,45 @@ +--- +title: "Write documentation" +description: "Own content in the right repository and verify it end to end." +editUrl: "https://github.com/opensourceops/agentctl/edit/main/docs/development/DOCUMENTATION.md" +--- +## Ownership + +The `agentctl` repository owns commands, schema, examples, runtime behavior, provider and protocol capability, security, architecture, limitations, and contributor contracts. The `opensourceops.github.io` repository owns the public homepage, navigation, learning paths, search, styling, metadata, browser tests, and Pages deployment. + +Do not hand-copy a prominent YAML example into the site repository. Add or update a checked example here and include it through the Pages import mechanism. + +## Add an example + +Place public journeys in `examples/docs/` with a README entry, provider classification, expected result, verification command, network requirement, and security note. Use fake providers or local mocks for normal verification. Name live examples clearly and keep them opt-in. + +## Write public content + +- Use sentence-case headings, active voice, short paragraphs, and descriptive links. +- State the working directory, writes, credentials, and network effect for commands. +- Use exact commands and complete valid YAML. +- Distinguish implemented, deterministic, mock-tested, live evidence, hosted configuration, hosted execution, and deferred work. +- Never use an em dash in public copy. +- Avoid hype, generic AI claims, and unsupported maturity language. +- Explain every Mermaid diagram before and after it. + +## Verify locally + +From this repository: + +```text +cargo xtask docs-verify +``` + +From the Pages repository: + +```text +AGENTCTL_REPO=/path/to/agentctl pnpm verify:agentctl +``` + +The site command imports canonical content, records the source commit, validates writing and links, checks Mermaid, builds search, assembles the physical `/agentctl/` artifact, then runs browser and accessibility tests. + +## Review + +Review technical claims against source, generated help, schema, tests, and evidence. Check keyboard navigation, heading order, link purpose, alt text, diagram explanations, mobile code blocks, and direct deep links. Do not claim accessibility certification from automated tooling alone. +> Canonical source: [`docs/development/DOCUMENTATION.md`](https://github.com/opensourceops/agentctl/blob/main/docs/development/DOCUMENTATION.md). Verified against agentctl commit `0ae1e381b87ea815f0d4ca66689db10bb1129e4a`. diff --git a/src/content/docs/_generated/contributing/index.md b/src/content/docs/_generated/contributing/index.md new file mode 100644 index 0000000..4729c58 --- /dev/null +++ b/src/content/docs/_generated/contributing/index.md @@ -0,0 +1,83 @@ +--- +title: "Contributing" +description: "Set up, test, review, and prepare focused changes." +editUrl: "https://github.com/opensourceops/agentctl/edit/main/docs/CONTRIBUTING.md" +--- +Thank you for improving `agentctl`. Keep changes narrow, add executable evidence for public behavior, and preserve the deterministic and security boundaries. + +## Before you start + +Read the [code of conduct](/agentctl/contributing/), [product definition](/agentctl/concepts/product/), [architecture](/agentctl/architecture/), [security model](/agentctl/security/), and [limitations](/agentctl/reference/limitations/). Search existing issues before proposing new work. Use an issue to discuss large compatibility, protocol, persistence, or security changes before implementation. + +Do not use a public issue for a vulnerability. Follow the private process in [SECURITY.md](/agentctl/security/). + +## Choose work + +Prefer a scoped issue with expected behavior. For a bug, add a failing test that reproduces the user-visible problem before the fix. For a feature, define validation, policy, persistence, recovery, compatibility, and documentation effects. + +The maintainers do not promise response or review times. + +## Set up development + +Install the pinned Rust 1.88 toolchain with Rustfmt and Clippy. From the repository root: + +```text +cargo build --workspace --locked +cargo test --workspace --all-features --locked +cargo xtask docs-verify +``` + +Normal tests need no provider credential. Install the pinned `cargo-deny` version documented in `.github/workflows/ci.yml` before running the complete verification gate. + +## Branches and commits + +Create a focused feature branch. Keep unrelated formatting, renames, and refactors out of the change. Write commits that explain one coherent behavior or documentation change. Generated schema and CLI reference changes belong with the source change that caused them. + +Do not commit runtime databases, build output, provider responses, API keys, local absolute paths, or private release evidence. + +## Build and test + +Before requesting review: + +```text +cargo fmt --all -- --check +cargo clippy --workspace --all-targets --all-features -- -D warnings +cargo test --workspace --all-features --locked +cargo xtask generate +cargo xtask docs-verify +cargo xtask verify +cargo xtask acceptance +git diff --check +``` + +Run `cargo xtask acceptance-container` when a container, Containerfile, mount contract, signal path, filesystem behavior, or packaging boundary changes. Live OpenAI acceptance is an explicit credentialed release gate, not a normal contribution requirement. + +## Special changes + +- Actions and tools: follow [Add an action or tool](/agentctl/contributing/add-action/). +- Providers: follow [Add a provider](/agentctl/contributing/add-provider/). +- MCP or A2A: add pinned-protocol mock coverage, timeouts, cancellation, policy, redaction, and ambiguous-delivery behavior. +- Store migrations: follow [Add a store migration](/agentctl/contributing/add-migration/). +- Workflow or durable compatibility: update fixtures, generated schema, public policy, and an ADR when the decision is architectural. +- Documentation and examples: follow [Write and verify documentation](/agentctl/contributing/documentation/). + +## Pull request checklist + +- The change is linked to a clear problem. +- Tests fail before the fix where practical and pass after it. +- Security, policy, effect, recovery, and redaction behavior is explicit. +- No live credential is needed by normal CI. +- Generated files are current. +- Public examples are executable and use fake providers or local mocks by default. +- Compatibility and limitations are updated. +- New public writing contains no em dash and uses precise maturity language. +- The diff contains no unrelated cleanup. + +## Review expectations + +Reviewers focus on correctness, deterministic behavior, explicit effects, safe failure, compatibility, tests, and truthful documentation. Address each review comment with a change or a concrete technical explanation. A local pass does not replace hosted evidence for an RC. + +## Release process + +Maintainers follow [Release process](/agentctl/contributing/release/). Candidate promotion requires the exact remote commit to pass required hosted checks and artifact verification. Contributors must not create tags, publish packages, or describe a local build as released. +> Canonical source: [`docs/CONTRIBUTING.md`](https://github.com/opensourceops/agentctl/blob/main/docs/CONTRIBUTING.md). Verified against agentctl commit `0ae1e381b87ea815f0d4ca66689db10bb1129e4a`. diff --git a/src/content/docs/_generated/contributing/release.md b/src/content/docs/_generated/contributing/release.md new file mode 100644 index 0000000..b578d5c --- /dev/null +++ b/src/content/docs/_generated/contributing/release.md @@ -0,0 +1,72 @@ +--- +title: "Release process" +description: "Prepare and verify a v1alpha1 release candidate without overstating evidence." +editUrl: "https://github.com/opensourceops/agentctl/edit/main/docs/RELEASE_PROCESS.md" +--- +This process applies to the `agentctl.dev/v1alpha1` release candidate. A release is not approved from local evidence alone. + +## Required hosted checks + +Push the review branch and open a pull request only after the local gates below pass. Configure branch protection to require these checks: + +- `credential-free-ci / gates (x86_64-unknown-linux-gnu)` +- `credential-free-ci / gates (aarch64-apple-darwin)` +- `credential-free-ci / gates (x86_64-pc-windows-msvc)` +- `credential-free-ci / production SBOM` +- `container-security / container` +- `supply-chain-security / security` + +The three platform jobs run `cargo xtask verify`, `cargo xtask acceptance`, and `cargo xtask package`. The other jobs enforce the Linux container contract, HIGH/CRITICAL image vulnerability policy, production and image CycloneDX SBOMs, complete-history and checked-out-tree secret scans, dependency policy, immutable action pins, and workflow lint. + +The repository owner must enable GitHub Actions and required checks after the workflows reach the remote. This repository-local change does not modify remote settings or claim a hosted run. + +## Local preflight + +Run without provider credentials: + +```console +env -u OPENAI_API_KEY -u AZURE_OPENAI_API_KEY -u ANTHROPIC_API_KEY \ + -u GOOGLE_API_KEY -u GEMINI_API_KEY cargo xtask verify +env -u OPENAI_API_KEY -u AZURE_OPENAI_API_KEY -u ANTHROPIC_API_KEY \ + -u GOOGLE_API_KEY -u GEMINI_API_KEY cargo xtask acceptance +cargo xtask package +``` + +Reproduce the production binary dependency SBOM with the pinned generator used in CI: + +```console +cargo install cargo-cyclonedx --version 0.5.9 --locked +cargo cyclonedx --manifest-path crates/agentctl-cli/Cargo.toml --format json \ + --describe binaries --target x86_64-unknown-linux-gnu --spec-version 1.5 \ + --no-build-deps +mv crates/agentctl-cli/agentctl_bin.cdx.json agentctl-production.cdx.json +``` + +Run `cargo xtask acceptance-container` when Docker or Podman is available. If the builder requires an enterprise CA, provide a protected PEM file through `AGENTCTL_BUILD_CA_FILE`; see [Container](/agentctl/guides/container/). Never disable TLS verification. + +Run checksum-verified actionlint against `.github/workflows`, then run Gitleaks against both `git log --all` and the checked-out tree. `cargo xtask secret-scan` retains the deterministic repository scan and verifies every action reference is a full 40-character commit SHA with an exact-version comment. + +## Hosted artifact verification + +For the candidate workflow run: + +1. Confirm every required check is green and was executed for the candidate commit. +2. Confirm the three `agentctl-` package artifacts exist. Extract each artifact and verify its binary against its packaged `SHA256SUMS`. +3. Confirm `agentctl-production-sbom-cyclonedx` exists, parses as CycloneDX JSON, and its file SHA-256 matches the job summary. +4. Confirm `agentctl-image-sbom-cyclonedx` exists and parses as CycloneDX JSON. +5. Record the GitHub artifact digests emitted by `actions/upload-artifact` and the local image digest emitted by the container job. +6. Confirm no workflow artifact path includes `.release-evidence`, a database, provider credential, or live-response evidence. +7. Manually dispatch `rc-release-preparation` for the exact candidate commit and verify all three RC packages before creating a tag. + +## Failure handling + +- Platform failure: reproduce on the named OS/architecture; do not waive a matrix leg. +- Secret-scan finding: stop, revoke any real credential, remove it from the complete history using the repository's incident procedure, then rerun both history and tree scans. +- Dependency or image finding: review the advisory and remediate or document an explicit time-bounded exception before release. The default HIGH/CRITICAL image gate ignores only unfixed findings. +- SBOM failure or missing artifact: treat as a release failure. SBOM generation is not best-effort. +- Container CA failure: configure only `AGENTCTL_BUILD_CA_PEM` as a protected repository/organization secret. Do not use insecure Cargo, Git, curl, or container flags. + +## Release decision + +The local recommendation is **Ready for hosted RC validation**. Promote to an RC only after the exact remote commit has all required hosted checks and artifacts. Stable `v1.0` remains outside this `v1alpha1` gate. +> Canonical source: [`docs/RELEASE_PROCESS.md`](https://github.com/opensourceops/agentctl/blob/main/docs/RELEASE_PROCESS.md). Verified against agentctl commit `0ae1e381b87ea815f0d4ca66689db10bb1129e4a`. diff --git a/src/content/docs/_generated/contributing/testing.md b/src/content/docs/_generated/contributing/testing.md new file mode 100644 index 0000000..b055ad6 --- /dev/null +++ b/src/content/docs/_generated/contributing/testing.md @@ -0,0 +1,36 @@ +--- +title: "Testing strategy" +description: "Credential-free gates, acceptance layers, fuzzing, and live evidence." +editUrl: "https://github.com/opensourceops/agentctl/edit/main/docs/TESTING.md" +--- +The canonical command is: + +```console +cargo xtask verify +``` + +User-journey layers are separate: + +```console +cargo xtask acceptance +cargo xtask acceptance-container +cargo xtask acceptance-live-openai # explicit credentialed gate only +cargo xtask package +cargo xtask secret-scan +``` + +It checks rustfmt; clippy with all targets/features and warnings denied; locked build; unit, integration, compatibility, provider, protocol, persistence, runtime, and security tests; rustdoc; generated schema/CLI consistency; all workflow validation and deterministic examples; negative capability/policy/no-mutation cases; dependency sources/licenses/advisories; repository secret patterns and immutable workflow action pins; `cargo install`; and the Rust-only production boundary. + +Unit tests cover parser diagnostics, strictness, compiler order/cycles/capabilities, templates, tool schemas, policy traversal/network/redaction, state transitions, effect recovery, store migration/corruption/checkpoints, runtime dataflow/check/diff/approval/cancellation/replay/fork, provider mappings, protocols, and traces. `proptest` exercises arbitrary templates and typed preservation. Language-neutral fixtures in `fixtures/compat` preserve the TypeScript oracle’s external graph/dataflow contract. + +`fuzz/` contains `cargo-fuzz` targets for workflow YAML/templates, provider responses, MCP/A2A payload shapes, persisted state, and tool schemas/inputs. They use no network or credentials. Example: + +```console +cargo install cargo-fuzz +cargo fuzz run workflow_yaml -- -max_total_time=60 +``` + +The local hosted-CI configuration runs the canonical suite, credential-free acceptance, and packaging on Rust 1.88 for Linux x64, macOS arm64, and Windows x64. Separate automatic jobs cover the Linux x64 container, current vulnerability scan, two CycloneDX SBOM artifacts, complete-history/tree secret scans, dependency policy, and workflow lint. The workflows are locally linted but have not been pushed or dispatched, so this is configured evidence rather than validated hosted-platform support. Provider/protocol conformance uses local mock HTTP servers. Normal examples are deterministic; MCP/A2A runtime behavior is covered by mocks rather than requiring a background service. + +The only full live gate is the separately invoked OpenAI acceptance described in [Providers](/agentctl/providers/). It performs two bounded Responses API requests locally and two in the OCI image for one tool-call/continuation journey each, then performs keyless replays. Never run it for debugging loops, fuzzing, load, or normal CI. +> Canonical source: [`docs/TESTING.md`](https://github.com/opensourceops/agentctl/blob/main/docs/TESTING.md). Verified against agentctl commit `0ae1e381b87ea815f0d4ca66689db10bb1129e4a`. diff --git a/src/content/docs/_generated/durable-execution/index.md b/src/content/docs/_generated/durable-execution/index.md new file mode 100644 index 0000000..0b61df2 --- /dev/null +++ b/src/content/docs/_generated/durable-execution/index.md @@ -0,0 +1,24 @@ +--- +title: "Durable execution" +description: "Understand checkpoints, effects, resume, replay, fork, and uncertain outcomes." +editUrl: "https://github.com/opensourceops/agentctl/edit/main/docs/DURABLE_EXECUTION.md" +--- +SQLite is the local history and correctness boundary. Run, task, effect, approval, checkpoint, audit, provider-session, tool-call, and long-term-memory records are schema-versioned. Future database, runtime, plan, effect, or checkpoint versions fail explicitly instead of being ignored. + +## Operations + +- Resume continues the same run from durable task state. Confirmed effects are reused. A requested-but-not-started effect may execute; a started-but-unconfirmed effect fails as uncertain. +- Recorded replay creates a replay record from terminal stored outputs and calls no provider, tool, network, process, or filesystem executor. +- Fork creates a new run linked to the old run and intentionally permits fresh effects. +- Retry creates a new task attempt only within the task’s explicit bound. An unsafe unresolved effect is not retried. + +An effect ID is SHA-256 over run ID, task ID, task attempt, ordinal, operation, and input digest. Each record carries its format version, idempotency key, effect class, risk, status, request/result or error, timestamps, trace correlation, and confirmation flag. The request commits before the executor starts. This supports deterministic reuse of completed results but does not prove exactly-once behavior in an external system. + +Pure operations need no external guarantee. Idempotent and keyed effects may be safely retried only when their implementation contract says so. Model calls and unknown remote mutations are treated at-most-once after start: a crash in the acknowledgement window creates an uncertain effect requiring operator reconciliation or an explicit fork. This is deliberately more conservative than silent at-least-once replay. + +Working-memory replacement, the task transition, checkpoint, and audit event commit in one SQLite transaction. Tool-effect and tool-call terminal status also commit together, so inspection cannot observe one as completed while the other remains started. On resume, a confirmed memory-write effect is applied to the reconstructed working-memory value during the succeeding transition. Long-term memory is an external effect and is not rolled back by replay. + +Cancellation is both an injected token and a durable run flag. CLI SIGINT and SIGTERM cancel in-flight async calls and return exit `130`; `agentctl cancel` records a request for another process to observe. An overall CLI deadline can be set with `--timeout-seconds`, in addition to task/tool/provider/protocol bounds. A provider, tool, process, MCP, or A2A timeout/cancellation/transport loss after dispatch marks the effect `uncertain`; resume refuses to guess and requires reconciliation or an explicit fork. + +Clock and ID generation are injected; test providers/tools/protocol handlers are injected. The current scheduler is sequential, so output and memory commit order is task declaration order. +> Canonical source: [`docs/DURABLE_EXECUTION.md`](https://github.com/opensourceops/agentctl/blob/main/docs/DURABLE_EXECUTION.md). Verified against agentctl commit `0ae1e381b87ea815f0d4ca66689db10bb1129e4a`. diff --git a/src/content/docs/_generated/examples/approval-gated.md b/src/content/docs/_generated/examples/approval-gated.md new file mode 100644 index 0000000..58dcd5c --- /dev/null +++ b/src/content/docs/_generated/examples/approval-gated.md @@ -0,0 +1,61 @@ +--- +title: "Approval-gated action" +description: "Pause a mutation until an operator resolves a durable request." +editUrl: "https://github.com/opensourceops/agentctl/edit/main/docs/use-cases/APPROVAL_GATED_ACTION.md" +--- +## Problem + +A workflow may propose a mutation, but an operator must review the exact requested effect before it runs. + +## Why agentctl fits + +Policy sits outside the model and creates a durable approval record. Non-interactive execution pauses and exits `3`; it never prompts, auto-approves, or loses the pending request. + +## Complete workflow + +Source: `examples/v1/approval.yaml`. + + +```yaml +apiVersion: agentctl.dev/v1alpha1 +kind: Workflow +metadata: + name: approval-gated-write +spec: + policy: + workspaceRoot: . + writableRoots: [artifacts] + approval: mutations + actions: + write: + kind: builtin.write + tasks: + - id: gated + uses: action:write + with: + path: artifacts/approved.txt + content: approval was durable +``` + + +## Run it + +```text +agentctl run examples/v1/approval.yaml --db /tmp/approval.db \ + --output json --color never +agentctl approvals list RUN_ID --db /tmp/approval.db +agentctl approvals approve APPROVAL_ID --db /tmp/approval.db \ + --actor operator@example.invalid --reason "Reviewed file write" +agentctl resume RUN_ID --db /tmp/approval.db --output json --color never +``` + +The first command exits `3` and does not write the file. The resumed run writes it only after approval. + +## State and security + +The approval includes redacted input, tool or action, capability, risk, expected effect, actor, reason, run, task, and trace correlation. Approval is a decision point, not proof that content is safe. + +## Current limitation + +The CLI stores operator-provided identity text but does not provide a hosted identity or role system. The invoking platform must authenticate and authorize the operator. +> Canonical source: [`docs/use-cases/APPROVAL_GATED_ACTION.md`](https://github.com/opensourceops/agentctl/blob/main/docs/use-cases/APPROVAL_GATED_ACTION.md). Verified against agentctl commit `0ae1e381b87ea815f0d4ca66689db10bb1129e4a`. diff --git a/src/content/docs/_generated/examples/ci-quality-gate.md b/src/content/docs/_generated/examples/ci-quality-gate.md new file mode 100644 index 0000000..9d96896 --- /dev/null +++ b/src/content/docs/_generated/examples/ci-quality-gate.md @@ -0,0 +1,65 @@ +--- +title: "CI quality gate" +description: "Turn typed evidence into stable process output." +editUrl: "https://github.com/opensourceops/agentctl/edit/main/docs/use-cases/CI_QUALITY_GATE.md" +--- +## Problem + +A generic OCI pipeline step must convert typed evidence into a stable success or failure, emit one machine-readable result, and preserve enough state for diagnosis. + +## Why agentctl fits + +The workflow separates inputs from a deterministic assertion. The CLI returns a stable exit code and JSON envelope, while the CI platform retains `/state` and `/artifacts`. + +## Complete workflow + +Source: `examples/docs/ci-quality-gate/workflow.yaml`. + + +```yaml +apiVersion: agentctl.dev/v1alpha1 +kind: Workflow +metadata: + name: ci-quality-gate + description: Convert reviewed CI evidence into a stable process result. +spec: + inputs: + checksPassed: true + outputs: + verdict: "${{ tasks.verdict.output.output.value }}" + actions: + assert: + kind: builtin.assert + assign: + kind: builtin.assign + tasks: + - id: gate + uses: action:assert + with: + that: "${{ inputs.checksPassed }}" + message: CI quality gate failed + - id: verdict + uses: action:assign + needs: [gate] + with: + value: pass +``` + + +## Run it + +```text +agentctl run examples/docs/ci-quality-gate/workflow.yaml \ + --db /tmp/ci-quality-gate.db --output json --color never +``` + +The default exits `0` with verdict `pass`. Run with `--input checksPassed=false` to exercise the failed gate and exit `4`. + +## State and security + +Use ordinary typed inputs for non-secret gate evidence. Inject provider secrets only by environment reference. Archive the database on failure only when its potentially confidential content is protected. + +## Current limitation + +This workflow does not run tests itself. A surrounding pipeline can supply results, or a reviewed `builtin.shell.exec` action can run a specifically allowed executable. +> Canonical source: [`docs/use-cases/CI_QUALITY_GATE.md`](https://github.com/opensourceops/agentctl/blob/main/docs/use-cases/CI_QUALITY_GATE.md). Verified against agentctl commit `0ae1e381b87ea815f0d4ca66689db10bb1129e4a`. diff --git a/src/content/docs/_generated/examples/provider-portability.md b/src/content/docs/_generated/examples/provider-portability.md new file mode 100644 index 0000000..04997ef --- /dev/null +++ b/src/content/docs/_generated/examples/provider-portability.md @@ -0,0 +1,115 @@ +--- +title: "Provider portability" +description: "Keep the workflow contract neutral while capability evidence stays honest." +editUrl: "https://github.com/opensourceops/agentctl/edit/main/docs/use-cases/PROVIDER_PORTABILITY.md" +--- +## Problem + +A workflow author wants one provider-neutral agent contract while retaining honest capability differences and evidence levels. + +## Why agentctl fits + +The core stores provider-neutral messages, tools, usage, errors, and continuation. Native adapters translate at the edge, and the compiler rejects requested features that the selected provider does not support. + +## Credential-free variant + +Source: `examples/docs/provider-portability/fake.yaml`. + + +```yaml +apiVersion: agentctl.dev/v1alpha1 +kind: Workflow +metadata: + name: portable-summary-fake + description: Credential-free provider portability fixture. +spec: + outputs: + summary: "${{ tasks.summarize.output.text }}" + providers: + selected: + kind: fake + agents: + summarizer: + provider: selected + model: scripted + instructions: Return one short evidence summary. + maxTurns: 1 + maxToolCalls: 0 + maxOutputTokens: 64 + timeoutSeconds: 5 + providerOptions: + finalText: PORTABLE_SUMMARY_VERIFIED + tasks: + - id: summarize + uses: agent:summarizer + with: + prompt: Summarize the supplied evidence. +``` + + +Run it with: + +```text +agentctl run examples/docs/provider-portability/fake.yaml \ + --db /tmp/provider-fake.db --output json --color never +``` + +Expected summary: `PORTABLE_SUMMARY_VERIFIED`. + +## Opt-in OpenAI variant + +Source: `examples/docs/provider-portability/openai.yaml`. + + +```yaml +apiVersion: agentctl.dev/v1alpha1 +kind: Workflow +metadata: + name: portable-summary-openai + description: Opt-in OpenAI variant of the portable summary fixture. +spec: + outputs: + summary: "${{ tasks.summarize.output.text }}" + providers: + selected: + kind: openai + credential: + env: OPENAI_API_KEY + policy: + networkAllowlist: [api.openai.com] + agents: + summarizer: + provider: selected + model: gpt-5.6 + instructions: Return one short evidence summary. + maxTurns: 1 + maxToolCalls: 0 + maxOutputTokens: 64 + timeoutSeconds: 30 + reasoning: + effort: low + tasks: + - id: summarize + uses: agent:summarizer + with: + prompt: Summarize the supplied evidence. +``` + + +Static validation needs no credential: + +```text +agentctl check examples/docs/provider-portability/openai.yaml +agentctl providers inspect examples/docs/provider-portability/openai.yaml +``` + +Execution requires `OPENAI_API_KEY` in the environment, makes a paid network request, and is excluded from normal documentation verification. + +## State and security + +Both workflows share the provider-neutral agent shape. Each provider still needs its native credential, allowed host, model name, capability checks, timeouts, and error handling. + +## Current limitation + +Provider portability does not mean identical behavior or equal maturity. Fake is deterministic, OpenAI has retained bounded live evidence, and Azure OpenAI, Anthropic, and Google are mock-protocol tested only in this release. +> Canonical source: [`docs/use-cases/PROVIDER_PORTABILITY.md`](https://github.com/opensourceops/agentctl/blob/main/docs/use-cases/PROVIDER_PORTABILITY.md). Verified against agentctl commit `0ae1e381b87ea815f0d4ca66689db10bb1129e4a`. diff --git a/src/content/docs/_generated/examples/recorded-replay.md b/src/content/docs/_generated/examples/recorded-replay.md new file mode 100644 index 0000000..d4617b6 --- /dev/null +++ b/src/content/docs/_generated/examples/recorded-replay.md @@ -0,0 +1,63 @@ +--- +title: "Offline recorded replay" +description: "Reconstruct a terminal run without credentials or effects." +editUrl: "https://github.com/opensourceops/agentctl/edit/main/docs/use-cases/RECORDED_REPLAY.md" +--- +## Problem + +An operator needs to reconstruct the outcome of a completed provider-backed run without credentials, network access, or repeated effects. + +## Why agentctl fits + +Recorded replay reads terminal stored task output and effect records. It creates a linked replay record but never calls provider, tool, network, process, filesystem, MCP, or A2A executors. + +## Example workflow + +Source: `examples/v1/crash-resume.yaml`. + + +```yaml +apiVersion: agentctl.dev/v1alpha1 +kind: Workflow +metadata: + name: crash-resume +spec: + policy: + workspaceRoot: . + writableRoots: [artifacts] + approval: never + actions: + write: + kind: builtin.write + read: + kind: builtin.read + tasks: + - id: write + uses: action:write + with: { path: artifacts/resume.txt, content: written-once } + - id: read + uses: action:read + needs: [write] + with: { path: artifacts/resume.txt } +``` + + +## Run and replay + +```text +mkdir -p examples/v1/artifacts +agentctl run examples/v1/crash-resume.yaml --db /tmp/replay.db \ + --output json --color never +agentctl replay RUN_ID --db /tmp/replay.db --output json --color never +``` + +Use the terminal source run ID returned by the first command. The replay has its own run ID and links to the source. + +## State and security + +Replay needs only the database, but the stored record may contain confidential input and output. It reproduces recorded truth, not current files or remote state. + +## Current limitation + +Replay is not a new validation, retry, or exactly-once guarantee. It rejects non-terminal source runs. Use resume for safe continuation and fork only when fresh effects are intentional. +> Canonical source: [`docs/use-cases/RECORDED_REPLAY.md`](https://github.com/opensourceops/agentctl/blob/main/docs/use-cases/RECORDED_REPLAY.md). Verified against agentctl commit `0ae1e381b87ea815f0d4ca66689db10bb1129e4a`. diff --git a/src/content/docs/_generated/examples/release-readiness.md b/src/content/docs/_generated/examples/release-readiness.md new file mode 100644 index 0000000..f459938 --- /dev/null +++ b/src/content/docs/_generated/examples/release-readiness.md @@ -0,0 +1,84 @@ +--- +title: "Release readiness" +description: "Combine deterministic gates with bounded analysis." +editUrl: "https://github.com/opensourceops/agentctl/edit/main/docs/use-cases/RELEASE_READINESS.md" +--- +## Problem + +A release process has deterministic evidence such as tests and a security scan, plus a bounded model summary. Model analysis must not override failed gates. + +## Why agentctl fits + +Dependencies keep the analysis task behind two assertions. The model can summarize only after deterministic gates pass. A pipeline consumes the final process status and declared output. + +## Complete workflow + +Source: `examples/docs/release-readiness/workflow.yaml`. + + +```yaml +apiVersion: agentctl.dev/v1alpha1 +kind: Workflow +metadata: + name: release-readiness + description: Gate bounded analysis behind deterministic release evidence. +spec: + inputs: + testsPassed: true + securityScanPassed: true + outputs: + decision: "${{ tasks.analyze.output.text }}" + providers: + fake: + kind: fake + agents: + reviewer: + provider: fake + model: scripted + instructions: Summarize only the verified release evidence. + maxTurns: 1 + maxToolCalls: 0 + maxOutputTokens: 64 + timeoutSeconds: 5 + providerOptions: + finalText: RELEASE_EVIDENCE_REVIEWED + actions: + assert: + kind: builtin.assert + tasks: + - id: verify-tests + uses: action:assert + with: + that: "${{ inputs.testsPassed }}" + message: test gate failed + - id: verify-security + uses: action:assert + needs: [verify-tests] + with: + that: "${{ inputs.securityScanPassed }}" + message: security gate failed + - id: analyze + uses: agent:reviewer + needs: [verify-tests, verify-security] + with: + prompt: Summarize the verified test and security gates. +``` + + +## Run it + +```text +agentctl run examples/docs/release-readiness/workflow.yaml \ + --db /tmp/release-readiness.db --output json --color never +``` + +The credential-free example returns decision `RELEASE_EVIDENCE_REVIEWED`. Override `testsPassed=false` to verify that exit `4` prevents the model task from running. + +## State and security + +The database records which gate failed and whether the analysis task started. A real workflow should pass evidence through reviewed files or typed inputs, not give the model CI credentials or authority to change release state. + +## Current limitation + +The example uses the fake provider. It demonstrates graph and policy behavior, not a live model quality claim or a release approval system. +> Canonical source: [`docs/use-cases/RELEASE_READINESS.md`](https://github.com/opensourceops/agentctl/blob/main/docs/use-cases/RELEASE_READINESS.md). Verified against agentctl commit `0ae1e381b87ea815f0d4ca66689db10bb1129e4a`. diff --git a/src/content/docs/_generated/examples/repository-audit.md b/src/content/docs/_generated/examples/repository-audit.md new file mode 100644 index 0000000..ea81ab6 --- /dev/null +++ b/src/content/docs/_generated/examples/repository-audit.md @@ -0,0 +1,124 @@ +--- +title: "Repository audit" +description: "Bound repository reads and verify the resulting report." +editUrl: "https://github.com/opensourceops/agentctl/edit/main/docs/use-cases/REPOSITORY_AUDIT.md" +--- +## Problem + +A model needs to inspect a repository and produce a report, but it should see only reviewed files and its conclusion must pass deterministic checks before becoming an artifact. + +## Why agentctl fits + +The workflow graph and policy are outside the model. A strict read tool limits the agent to the workspace, the fake provider makes the documented journey repeatable, an assertion checks the final marker, and a separate deterministic action writes the report. + +## Complete workflow + +Source: `examples/acceptance/mock-tool/workflow.yaml`. + + +```yaml +apiVersion: agentctl.dev/v1alpha1 +kind: Workflow +metadata: + name: acceptance-mock-tool +spec: + inputs: + reportPath: artifacts/mock-report.txt + outputs: + verdict: "${{ tasks.inspect.output.text }}" + artifact: "${{ inputs.reportPath }}" + providers: + fake: + kind: fake + policy: + workspaceRoot: . + writableRoots: [artifacts] + approval: never + tools: + read_fixture: + kind: builtin.workspace.read + description: Read a UTF-8 file inside the authorized workspace. + inputSchema: + type: object + properties: + path: { type: string } + required: [path] + additionalProperties: false + outputSchema: + type: object + properties: + path: { type: string } + content: { type: string } + bytes: { type: integer } + sha256: { type: string } + required: [path, content, bytes, sha256] + additionalProperties: false + capability: filesystem.read + risk: low + effectClass: observe + idempotency: idempotent + retrySafe: true + timeoutSeconds: 5 + approval: never + agents: + inspector: + provider: fake + model: scripted + instructions: Read the fixture and report its marker. + tools: [read_fixture] + maxTurns: 2 + maxToolCalls: 1 + maxOutputTokens: 32 + timeoutSeconds: 5 + providerOptions: + toolInput: { path: fixture/service.txt } + finalText: AGENTCTL_MOCK_FIXTURE_VERIFIED + actions: + assert: + kind: builtin.assert + write: + kind: builtin.write + tasks: + - id: inspect + uses: agent:inspector + with: + prompt: Use read_fixture before answering. + - id: verify + uses: action:assert + needs: [inspect] + with: + that: "${{ tasks.inspect.output.text == 'AGENTCTL_MOCK_FIXTURE_VERIFIED' }}" + message: the mock provider did not complete its tool continuation + - id: report + uses: action:write + needs: [inspect, verify] + with: + path: "${{ inputs.reportPath }}" + content: "${{ tasks.inspect.output.text }}" +``` + + +The repository acceptance suite copies this entire directory to a clean workspace and runs it. + +## Run it + +From the repository root: + +```text +cp -R examples/acceptance/mock-tool /tmp/agentctl-repository-audit +cd /tmp/agentctl-repository-audit +agentctl check workflow.yaml +agentctl plan workflow.yaml +agentctl run workflow.yaml --db .agentctl/runtime.db --output json --color never +``` + +The run needs no credential and makes no network call. Expected output includes verdict `AGENTCTL_MOCK_FIXTURE_VERIFIED` and artifact `artifacts/mock-report.txt`. + +## State and security + +The database records the provider session, strict tool call, read effect, assertion, write effect, audit events, and trace correlation. The read tool cannot mutate the workspace. Replace the fake provider only after reviewing new credential, network, model, and output risks. + +## Current limitation + +The checked journey proves orchestration and tool boundaries, not the quality of a live model's repository analysis. Production workflows need task-specific verification stronger than a fixed marker. +> Canonical source: [`docs/use-cases/REPOSITORY_AUDIT.md`](https://github.com/opensourceops/agentctl/blob/main/docs/use-cases/REPOSITORY_AUDIT.md). Verified against agentctl commit `0ae1e381b87ea815f0d4ca66689db10bb1129e4a`. diff --git a/src/content/docs/_generated/examples/scheduled-review.md b/src/content/docs/_generated/examples/scheduled-review.md new file mode 100644 index 0000000..d15578d --- /dev/null +++ b/src/content/docs/_generated/examples/scheduled-review.md @@ -0,0 +1,74 @@ +--- +title: "Scheduled operational review" +description: "Produce durable state and artifacts from an external schedule." +editUrl: "https://github.com/opensourceops/agentctl/edit/main/docs/use-cases/SCHEDULED_REVIEW.md" +--- +## Problem + +An external scheduler needs to run a bounded check, retain state, and collect a report without an interactive session. + +## Why agentctl fits + +The CLI has a non-interactive process contract, explicit state and artifact paths, durable failures, structured output, and safe cancellation. Cron, systemd, or Kubernetes owns the schedule and overlap rule. + +## Complete workflow + +Source: `examples/docs/scheduled-review/workflow.yaml`. + + +```yaml +apiVersion: agentctl.dev/v1alpha1 +kind: Workflow +metadata: + name: scheduled-operational-review + description: Produce a deterministic artifact for an external scheduler. +spec: + inputs: + reportPath: artifacts/operational-review.txt + status: healthy + outputs: + artifact: "${{ inputs.reportPath }}" + policy: + workspaceRoot: . + writableRoots: [artifacts] + approval: never + actions: + assert: + kind: builtin.assert + write: + kind: builtin.write + tasks: + - id: verify-status + uses: action:assert + with: + that: "${{ inputs.status == 'healthy' }}" + message: operational status is not healthy + - id: report + uses: action:write + needs: [verify-status] + with: + path: "${{ inputs.reportPath }}" + content: scheduled operational review passed +``` + + +## Run it + +From a copy of the example directory: + +```text +mkdir -p artifacts .agentctl +agentctl run workflow.yaml --db .agentctl/runtime.db \ + --timeout-seconds 300 --output json --color never +``` + +Expected output declares `artifacts/operational-review.txt`. The file contains `scheduled operational review passed`. + +## State and security + +Persist the database and artifact directory with restrictive permissions. Configure `flock`, systemd serialization, or Kubernetes `concurrencyPolicy: Forbid` when overlapping external effects are unsafe. + +## Current limitation + +`agentctl` is a schedulable runtime, not a scheduling service. It does not provide clocks, calendars, distributed leases, or log rotation. +> Canonical source: [`docs/use-cases/SCHEDULED_REVIEW.md`](https://github.com/opensourceops/agentctl/blob/main/docs/use-cases/SCHEDULED_REVIEW.md). Verified against agentctl commit `0ae1e381b87ea815f0d4ca66689db10bb1129e4a`. diff --git a/src/content/docs/_generated/getting-started/first-agent.md b/src/content/docs/_generated/getting-started/first-agent.md new file mode 100644 index 0000000..8ee4cd7 --- /dev/null +++ b/src/content/docs/_generated/getting-started/first-agent.md @@ -0,0 +1,87 @@ +--- +title: "First agent workflow" +description: "Run a bounded tool-using agent without a paid API key." +editUrl: "https://github.com/opensourceops/agentctl/edit/main/docs/guides/FIRST_AGENT_WORKFLOW.md" +--- +You will run a tool-using agent with the deterministic fake provider. The model path is scripted, but the workflow exercises the real compiler, agent loop, tool policy, tool schemas, effect ledger, SQLite store, assertion, and artifact writer. + +## Prerequisites + +- A built `agentctl` binary at `target/debug/agentctl`, or an installed binary +- The source checkout +- No provider credential + +## 1. Copy the verified journey + +From the repository root: + +```text +cp -R examples/acceptance/mock-tool /tmp/agentctl-first-agent +cd /tmp/agentctl-first-agent +``` + +The directory contains `workflow.yaml`, `fixture/service.txt`, and an empty artifact directory. The repository acceptance suite copies and runs the same journey outside the source tree. + +## 2. Read the boundary + +The workflow gives the `inspector` agent one tool, `read_fixture`. Its input and output use strict JSON Schema. Policy limits file access to the workspace, grants no mutation to the agent, and needs no network host or environment secret. + +The fake provider is configured to request `fixture/service.txt`, then return the fixed text `AGENTCTL_MOCK_FIXTURE_VERIFIED`. This makes the learning path deterministic while preserving the real tool continuation protocol. + +## 3. Validate and plan + +```text +agentctl check workflow.yaml +agentctl plan workflow.yaml +``` + +These commands make no network call and write no runtime state. The plan can identify the graph and declared effects, but the agent task still requires execution. + +## 4. Run the agent + +```text +agentctl run workflow.yaml --db .agentctl/runtime.db --output json --color never +``` + +Expected final output contains: + +```json +{ + "artifact": "artifacts/mock-report.txt", + "verdict": "AGENTCTL_MOCK_FIXTURE_VERIFIED" +} +``` + +The run writes `.agentctl/runtime.db` and `artifacts/mock-report.txt`. The `verify` task deterministically rejects any unexpected verdict. + +## 5. Inspect the agent and tool records + +```text +agentctl inspect RUN_ID --db .agentctl/runtime.db --output json --color never +``` + +Look for the provider session, tool call, effect correlation, task transitions, assertion result, artifact write, and run trace ID. The durable record lets you distinguish model output from deterministic verification. + +## Optional: use OpenAI + +Only after the credential-free path works, review `examples/v1/openai-live.yaml`. Export the credential through the environment, never through a flag or YAML value: + +```text +export OPENAI_API_KEY="your-provider-secret" +agentctl check examples/v1/openai-live.yaml +agentctl run examples/v1/openai-live.yaml --db .agentctl/openai.db --output json --color never +``` + +The live command makes a paid network request to `api.openai.com` and writes provider results to the database. Do not run it in normal documentation verification. Remove the variable from the shell when finished. + +## Troubleshooting + +- `binary not found`: use the absolute path to `target/debug/agentctl` or install the CLI. +- `path is outside workspace`: run from the copied example directory. +- artifact permission error: make `artifacts/` writable by the current user. +- live authentication failure: run `agentctl auth check` against the workflow without printing the secret. + +## Next step + +Read [Workflow authoring](/agentctl/guides/workflow-authoring/) to replace the scripted journey with your own reviewed workflow. +> Canonical source: [`docs/guides/FIRST_AGENT_WORKFLOW.md`](https://github.com/opensourceops/agentctl/blob/main/docs/guides/FIRST_AGENT_WORKFLOW.md). Verified against agentctl commit `0ae1e381b87ea815f0d4ca66689db10bb1129e4a`. diff --git a/src/content/docs/_generated/getting-started/index.md b/src/content/docs/_generated/getting-started/index.md new file mode 100644 index 0000000..79e6a3e --- /dev/null +++ b/src/content/docs/_generated/getting-started/index.md @@ -0,0 +1,90 @@ +--- +title: "Getting started" +description: "Run and inspect a credential-free deterministic workflow." +editUrl: "https://github.com/opensourceops/agentctl/edit/main/docs/guides/GETTING_STARTED.md" +--- +You will validate, plan, run, and inspect a credential-free workflow from a clean directory. The run performs one deterministic assignment, persists its history to SQLite, and returns a typed output. + +## Prerequisites + +- A built or installed `agentctl` binary +- The `agentctl` source checkout +- No provider credential + +## 1. Create a clean workspace + +From the repository root: + +```text +mkdir -p /tmp/agentctl-first-run +cp examples/v1/hello.yaml /tmp/agentctl-first-run/workflow.yaml +cd /tmp/agentctl-first-run +``` + +The copy is the canonical checked example. The commands write only beneath the temporary workspace. + +## 2. Validate the workflow + +```text +agentctl check workflow.yaml +``` + +Expected output: + +```text +valid: hello (1 tasks) +``` + +`check` validates strict YAML, references, templates, policies, and provider capabilities. It does not create a database or execute an effect. + +## 3. Inspect the plan + +```text +agentctl plan workflow.yaml +``` + +The plan reports task order `greet`, one effect, and `FullyPredictable`. A plan explains what the compiler knows. It does not claim to predict model or remote-system results. + +## 4. Run the workflow + +```text +agentctl run workflow.yaml --db .agentctl/runtime.db --output json --color never +``` + +This command writes durable state to `.agentctl/runtime.db`. It makes no network call and needs no credential. The final envelope has `apiVersion: agentctl.dev/cli/v1`, state `succeeded`, and output: + +```json +{"greeting":"hello, world"} +``` + +Copy the returned `runId` for inspection. + +## 5. Inspect durable history + +```text +agentctl inspect RUN_ID --db .agentctl/runtime.db --output json --color never +agentctl db stats --db .agentctl/runtime.db --output json --color never +``` + +Replace `RUN_ID` with the identifier from the run result. Inspection shows the run, task state, effects, checkpoints, audit records, and trace correlation. The database may contain workflow inputs and outputs, so protect it as sensitive operational data. + +## 6. Understand artifacts + +This workflow declares no file artifact. A workflow that uses `builtin.write` writes only beneath a policy-approved writable root. The runtime records the write as an effect, while the file itself stays in the workspace or mounted artifact directory. + +## Verify the result + +The tutorial is complete when all of these are true: + +- `check` reports one valid task. +- `plan` reports `FullyPredictable`. +- `run` exits `0` with `hello, world`. +- `.agentctl/runtime.db` exists. +- `inspect` returns the same successful run. + +If a command fails, read [Troubleshooting](/agentctl/troubleshooting/). + +## Next step + +Run [your first bounded agent workflow](/agentctl/getting-started/first-agent/) without a paid API key. +> Canonical source: [`docs/guides/GETTING_STARTED.md`](https://github.com/opensourceops/agentctl/blob/main/docs/guides/GETTING_STARTED.md). Verified against agentctl commit `0ae1e381b87ea815f0d4ca66689db10bb1129e4a`. diff --git a/src/content/docs/_generated/getting-started/installation.md b/src/content/docs/_generated/getting-started/installation.md new file mode 100644 index 0000000..2ee2f9e --- /dev/null +++ b/src/content/docs/_generated/getting-started/installation.md @@ -0,0 +1,75 @@ +--- +title: "Installation" +description: "Build or install the current v1alpha1 candidate from reviewed source." +editUrl: "https://github.com/opensourceops/agentctl/edit/main/docs/guides/INSTALLATION.md" +--- +This guide installs the current `v1alpha1` release-candidate source. There is no published registry package or guaranteed downloadable binary in this checkout, so use a reviewed source build or build the OCI image yourself. + +## Prerequisites + +- Git +- Rust 1.88, as pinned by `rust-toolchain.toml` +- A supported local checkout +- Optional: Docker or Podman for the container path + +The repository configures hosted checks for Linux x64, macOS arm64, and Windows x64. Those workflows have not executed on the current remote candidate, so treat cross-platform support as configured and pending hosted evidence. + +## Install from source + +From the `agentctl` repository root, run: + +```text +cargo install --locked --path crates/agentctl-cli +agentctl version +``` + +The install compiles the Rust CLI and writes it to Cargo's binary directory. It makes dependency network requests during the build, writes no runtime database, and needs no provider credential. + +If you only want a repository-local binary, use: + +```text +cargo build --locked -p agentctl +./target/debug/agentctl version +``` + +## Build a release binary + +From the repository root: + +```text +cargo build --release --locked -p agentctl +./target/release/agentctl version +``` + +`cargo xtask package` also produces the binary, shell completions, license, README, and SHA-256 manifest beneath `dist/`. The package is local build output, not a published release. + +## Build the container image + +From the repository root, with Docker: + +```text +docker build --tag agentctl:local --file Containerfile . +docker run --rm agentctl:local version --output json --color never +``` + +The build downloads Rust dependencies. The version command makes no provider call and writes no state. The resulting image runs as UID/GID 65532 with `agentctl` as its entrypoint. Read the [container contract](/agentctl/guides/container/) before executing a workflow. + +## Verify the installation + +From the repository root: + +```text +agentctl check examples/v1/hello.yaml +agentctl plan examples/v1/hello.yaml +``` + +Expected evidence includes `valid: hello`, task order `greet`, and `FullyPredictable`. These commands do not create a runtime database. + +## Upgrade safely + +The workflow API is `agentctl.dev/v1alpha1`. Pin the CLI or image version, read [compatibility](/agentctl/reference/compatibility/) and [limitations](/agentctl/reference/limitations/), back up the SQLite database with its WAL files, then validate workflows before replacing a binary. `agentctl update` explains supported update paths but does not modify the installation. + +## Next step + +Continue with [Getting started](/agentctl/getting-started/). +> Canonical source: [`docs/guides/INSTALLATION.md`](https://github.com/opensourceops/agentctl/blob/main/docs/guides/INSTALLATION.md). Verified against agentctl commit `0ae1e381b87ea815f0d4ca66689db10bb1129e4a`. diff --git a/src/content/docs/_generated/guides/ci-cd.md b/src/content/docs/_generated/guides/ci-cd.md new file mode 100644 index 0000000..c9d6f89 --- /dev/null +++ b/src/content/docs/_generated/guides/ci-cd.md @@ -0,0 +1,70 @@ +--- +title: "CI/CD integration" +description: "Use the generic OCI contract in pipelines and Kubernetes." +editUrl: "https://github.com/opensourceops/agentctl/edit/main/docs/guides/CI_CD.md" +--- +`agentctl` is one OCI step inside the pipeline. The CI system checks out code, injects secrets, schedules work, retains state, and collects artifacts. `agentctl` validates and executes one bounded workflow with durable local history. + +## Shared container contract + +Every platform uses the same paths: + +| Mount | Access | Purpose | +| --- | --- | --- | +| `/config` | read-only | reviewed workflow, inputs, and packs | +| `/workspace` | normally read-only | checked-out source and fixtures | +| `/state` | writable and retained | SQLite database, resume, replay, approvals | +| `/artifacts` | writable and collected | declared reports and outputs | + +Use `--output json --color never`. A successful workflow exits `0`. Validation exits `2`; policy or a pending approval exits `3`; run failure exits `4`; persistence exits `5`; provider or protocol failure exits `6`; cancellation exits `130`. + +## Generic step + +From a CI workspace that contains `config/workflow.yaml`: + +```text +mkdir -p .agentctl-state artifacts +docker run --rm --read-only --user 65532:65532 \ + --tmpfs /tmp:rw,noexec,nosuid,size=16m \ + --mount type=bind,src="$PWD/config",dst=/config,readonly \ + --mount type=bind,src="$PWD",dst=/workspace,readonly \ + --mount type=bind,src="$PWD/.agentctl-state",dst=/state \ + --mount type=bind,src="$PWD/artifacts",dst=/artifacts \ + ghcr.io/OWNER/agentctl:0.2.0 \ + run /config/workflow.yaml --workspace /workspace \ + --db /state/runtime.db --output json --color never +``` + +Replace the image owner and tag with a reviewed image. The repository does not claim that this example image exists publicly. + +## Platform guides + +The [container contract](/agentctl/guides/container/) contains complete examples for GitHub Actions, GitLab CI, Jenkins, Harness CI, Kubernetes Job, and Kubernetes CronJob. Each example preserves the same entrypoint, mounts, outputs, secrets, and exit behavior. + +Their current evidence level is documentation or syntax review unless stated otherwise. The local container acceptance validates the generic contract, not every hosted platform. + +## Inputs and structured output + +Mount an ordinary JSON file under `/config` and pass `--inputs-file /config/inputs.json`, or use repeated non-secret `--input KEY=VALUE`. Provider credentials must be environment references. Capture stdout as one `agentctl.dev/cli/v1` JSON envelope and archive declared files from `/artifacts`. + +## Approvals in pipelines + +A non-interactive approval does not wait for stdin. It persists a request, exits `3`, and requires the same `/state` data in a later operator-controlled job. That job lists and resolves the approval, then calls `resume`. If your pipeline cannot retain protected state between jobs, configure policy to deny or fail instead of using approvals. + +## Retention and recovery + +Collect `/state` even on failure when recovery or audit matters. It can contain confidential prompts and outputs, so apply protected artifact access and a short, documented retention period. Keep `/artifacts` according to the report's classification. + +Do not set a pipeline retry policy that blindly repeats exit `5`, `6`, or `130`. Inspect the run first, because an external effect may be uncertain. + +## Security checklist + +- Pin the workflow and image version. +- Run as non-root with a read-only root filesystem. +- Drop capabilities and deny unneeded egress. +- Mount the workspace read-only unless a reviewed write is required. +- Inject secrets by environment reference and never echo them. +- Treat remote content and model output as untrusted. +- Retain state for approval or recovery, then delete it under policy. +- Set the external platform's overlap and timeout controls. +> Canonical source: [`docs/guides/CI_CD.md`](https://github.com/opensourceops/agentctl/blob/main/docs/guides/CI_CD.md). Verified against agentctl commit `0ae1e381b87ea815f0d4ca66689db10bb1129e4a`. diff --git a/src/content/docs/_generated/guides/container.md b/src/content/docs/_generated/guides/container.md new file mode 100644 index 0000000..ee044e3 --- /dev/null +++ b/src/content/docs/_generated/guides/container.md @@ -0,0 +1,269 @@ +--- +title: "Container guide" +description: "Run the non-root, read-only OCI image with durable mounts." +editUrl: "https://github.com/opensourceops/agentctl/edit/main/docs/CONTAINER.md" +--- +The repository `Containerfile` builds the Rust CLI in a pinned Rust 1.88 builder and copies only the optimized binary into a maintained distroless Debian runtime. The runtime has CA roots, version/source/license OCI labels, runs as `nonroot`, has a deterministic `agentctl` entrypoint, and contains no Node.js runtime, TypeScript source, credentials, workflows, or fixtures. + +## Optional build-network CA + +The default build uses the builder's public CA roots. Networks that intercept TLS may supply a reviewed public CA certificate or bundle through a build secret: + +```console +docker build --secret id=agentctl_ca,src=/protected/path/build-ca.pem \ + --tag agentctl:local --file Containerfile . +``` + +For the repository acceptance wrapper, set `AGENTCTL_BUILD_CA_FILE=/protected/path/build-ca.pem` before `cargo xtask acceptance-container`. Hosted CI accepts the protected secret `AGENTCTL_BUILD_CA_PEM`, materializes it only in the runner's temporary directory, and removes it after the build. + +The `Containerfile` combines the secret with public roots on a tmpfs mount for the single Cargo build step. The CA value is not a build argument, image environment value, build-context file, layer, history value, runtime file, or artifact. Never use `--insecure`, `CARGO_HTTP_CHECK_REVOKE=false`, a TLS-verification disable flag, or a committed certificate. + +## Mounts and inputs + +| Path | Contract | +| --- | --- | +| `/config` | read-only reviewed workflow and pack configuration | +| `/workspace` | usually read-only source/fixture workspace | +| `/state` | writable SQLite database and durable recovery state | +| `/artifacts` | writable declared workflow artifacts | + +Pass workflow values with repeated `--input KEY=VALUE`, `--inputs-file`, or `--inputs` JSON. Prefer files for large or sensitive non-provider inputs. Provider credentials are environment references only; never put a key in CLI arguments, YAML, an image layer, or an ordinary input value. Before a bind-mount run, provision `/state` and `/artifacts` host directories so UID/GID 65532 can write them and the runner's artifact collector can read them. Durable state may contain prompts and outputs; protect it like a sensitive build artifact. + +The image emits exactly one versioned JSON result on stdout with `--output json`; failures emit one versioned JSON error on stderr. The document includes exit status semantics, run/trace IDs, final state, and declared outputs. Progress is not mixed into stdout. Persist `/state` for later `inspect`, approval resolution, `resume`, or `replay`. + +## Verified Docker/Podman invocation + +```console +docker run --rm --read-only --user 65532:65532 \ + --tmpfs /tmp:rw,noexec,nosuid,size=16m \ + --mount type=bind,src="$PWD/config",dst=/config,readonly \ + --mount type=bind,src="$PWD/workspace",dst=/workspace,readonly \ + --mount type=bind,src="$PWD/state",dst=/state \ + --mount type=bind,src="$PWD/artifacts",dst=/artifacts \ + --env OPENAI_API_KEY \ + ghcr.io/OWNER/agentctl:0.2.0 \ + run /config/workflow.yaml --workspace /workspace --db /state/runtime.db \ + --input reportPath=/artifacts/report.txt --timeout-seconds 600 \ + --output json --color never +``` + +The value form `--env OPENAI_API_KEY` forwards an already protected host variable without placing its value in the command. The credential-free container acceptance uses the same command with the fake provider and without that environment variable. + +## Pipeline examples + +All examples use the same image/entrypoint contract. Replace the image owner/tag and arrange the four host paths using the platform's storage mechanism. Exit `3` means approval is durably pending: retain the state directory as a protected artifact or persistent volume, resolve the approval in an operator-controlled job, and resume against that same state. Discarding the state directory makes resume impossible. + +### GitHub Actions + +```yaml +jobs: + agentctl: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + - run: mkdir -p .agentctl-state artifacts && chmod 0777 .agentctl-state artifacts + - name: Run agentctl image + env: + OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} + run: | + docker run --rm --read-only --user 65532:65532 --tmpfs /tmp:rw,noexec,nosuid,size=16m \ + --mount type=bind,src="$GITHUB_WORKSPACE/config",dst=/config,readonly \ + --mount type=bind,src="$GITHUB_WORKSPACE",dst=/workspace,readonly \ + --mount type=bind,src="$GITHUB_WORKSPACE/.agentctl-state",dst=/state \ + --mount type=bind,src="$GITHUB_WORKSPACE/artifacts",dst=/artifacts \ + --env OPENAI_API_KEY ghcr.io/OWNER/agentctl:0.2.0 \ + run /config/workflow.yaml --workspace /workspace --db /state/runtime.db \ + --input reportPath=/artifacts/report.txt --timeout-seconds 600 \ + --output json --color never + - name: Make mounted outputs collectable + if: always() + run: sudo chown -R "$(id -u):$(id -g)" .agentctl-state artifacts + - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 + if: always() + with: + name: agentctl-state-and-artifacts + path: | + .agentctl-state/ + artifacts/ + retention-days: 7 +``` + +### GitLab CI + +This syntax assumes a runner configured with Docker CLI access to the host daemon and a host-visible `$CI_PROJECT_DIR`. + +```yaml +agentctl: + image: docker:27-cli + variables: + AGENTCTL_IMAGE: ghcr.io/OWNER/agentctl:0.2.0 + before_script: + - mkdir -p .agentctl-state artifacts && chmod 0777 .agentctl-state artifacts + script: + - >- + docker run --rm --read-only --user 65532:65532 + --tmpfs /tmp:rw,noexec,nosuid,size=16m + --mount type=bind,src="$CI_PROJECT_DIR/config",dst=/config,readonly + --mount type=bind,src="$CI_PROJECT_DIR",dst=/workspace,readonly + --mount type=bind,src="$CI_PROJECT_DIR/.agentctl-state",dst=/state + --mount type=bind,src="$CI_PROJECT_DIR/artifacts",dst=/artifacts + --env OPENAI_API_KEY "$AGENTCTL_IMAGE" + run /config/workflow.yaml --workspace /workspace --db /state/runtime.db + --input reportPath=/artifacts/report.txt --timeout-seconds 600 + --output json --color never + after_script: + - chown -R "$(id -u):$(id -g)" .agentctl-state artifacts + artifacts: + when: always + expire_in: 7 days + paths: [.agentctl-state/, artifacts/] +``` + +Configure `OPENAI_API_KEY` as a protected, masked GitLab variable. Do not write it in the YAML. + +### Jenkins declarative pipeline + +```groovy +pipeline { + agent any + stages { + stage('agentctl') { + steps { + withCredentials([string(credentialsId: 'openai-api-key', variable: 'OPENAI_API_KEY')]) { + sh ''' + mkdir -p .agentctl-state artifacts + chmod 0777 .agentctl-state artifacts + docker run --rm --read-only --user 65532:65532 \ + --tmpfs /tmp:rw,noexec,nosuid,size=16m \ + --mount type=bind,src="$WORKSPACE/config",dst=/config,readonly \ + --mount type=bind,src="$WORKSPACE",dst=/workspace,readonly \ + --mount type=bind,src="$WORKSPACE/.agentctl-state",dst=/state \ + --mount type=bind,src="$WORKSPACE/artifacts",dst=/artifacts \ + --env OPENAI_API_KEY ghcr.io/OWNER/agentctl:0.2.0 \ + run /config/workflow.yaml --workspace /workspace --db /state/runtime.db \ + --input reportPath=/artifacts/report.txt --timeout-seconds 600 \ + --output json --color never + ''' + } + } + post { + always { + sh 'sudo chown -R "$(id -u):$(id -g)" .agentctl-state artifacts' + archiveArtifacts artifacts: '.agentctl-state/**,artifacts/**', allowEmptyArchive: true + } + } + } + } +} +``` + +### Harness CI Run step + +The runner needs Docker CLI/socket access and four workspace directories. The secret expression is injected as an environment variable and forwarded by name. + +```yaml +- step: + type: Run + name: agentctl + identifier: agentctl + spec: + image: docker:27-cli + shell: Sh + envVariables: + OPENAI_API_KEY: <+secrets.getValue("openai_api_key")> + command: |- + mkdir -p .agentctl-state artifacts + chmod 0777 .agentctl-state artifacts + docker run --rm --read-only --user 65532:65532 \ + --tmpfs /tmp:rw,noexec,nosuid,size=16m \ + --mount type=bind,src=/harness/config,dst=/config,readonly \ + --mount type=bind,src=/harness,dst=/workspace,readonly \ + --mount type=bind,src=/harness/.agentctl-state,dst=/state \ + --mount type=bind,src=/harness/artifacts,dst=/artifacts \ + --env OPENAI_API_KEY ghcr.io/OWNER/agentctl:0.2.0 \ + run /config/workflow.yaml --workspace /workspace --db /state/runtime.db \ + --input reportPath=/artifacts/report.txt --timeout-seconds 600 \ + --output json --color never +``` + +The surrounding Harness stage must publish `/harness/.agentctl-state` and `/harness/artifacts` with its organization-approved artifact step even when this Run step exits nonzero. That vendor-specific publication configuration is intentionally not invented here; the Run step itself was documentation-reviewed, not externally dispatched. + +### Kubernetes Job or CronJob + +Use ConfigMaps for reviewed configuration, a PVC for `/state` when recovery across Pods matters, a PVC or artifact uploader for `/artifacts`, and a Secret environment reference for credentials. The container security context should set `runAsNonRoot`, UID/GID 65532, no privilege escalation, dropped capabilities, and a read-only root filesystem. A CronJob should normally set `concurrencyPolicy: Forbid`; see [Operations](/agentctl/operations/scheduled/). + +```yaml +apiVersion: batch/v1 +kind: CronJob +metadata: + name: agentctl-report +spec: + schedule: "*/15 * * * *" + timeZone: Etc/UTC + concurrencyPolicy: Forbid + startingDeadlineSeconds: 300 + jobTemplate: + spec: + backoffLimit: 0 + activeDeadlineSeconds: 600 + template: + spec: + restartPolicy: Never + securityContext: + fsGroup: 65532 + containers: + - name: agentctl + image: ghcr.io/OWNER/agentctl:0.2.0 + args: + - run + - /config/workflow.yaml + - --workspace + - /workspace + - --db + - /state/runtime.db + - --inputs-file + - /config/inputs.json + - --timeout-seconds + - "540" + - --output + - json + - --color + - never + env: + - name: OPENAI_API_KEY + valueFrom: + secretKeyRef: + name: agentctl-provider + key: openai-api-key + securityContext: + runAsNonRoot: true + runAsUser: 65532 + runAsGroup: 65532 + allowPrivilegeEscalation: false + readOnlyRootFilesystem: true + capabilities: { drop: [ALL] } + volumeMounts: + - { name: config, mountPath: /config, readOnly: true } + - { name: workspace, mountPath: /workspace, readOnly: true } + - { name: state, mountPath: /state } + - { name: artifacts, mountPath: /artifacts } + - { name: tmp, mountPath: /tmp } + volumes: + - name: config + configMap: { name: agentctl-report } + - name: workspace + persistentVolumeClaim: { claimName: agentctl-workspace } + - name: state + persistentVolumeClaim: { claimName: agentctl-state } + - name: artifacts + persistentVolumeClaim: { claimName: agentctl-artifacts } + - name: tmp + emptyDir: { sizeLimit: 16Mi } +``` + +For a one-time invocation, use the same Pod template in a `batch/v1` `Job` and omit schedule/concurrency fields. Kubernetes CronJobs can occasionally create duplicate Jobs, so workflow effects still need appropriate idempotency. + +## Validation level + +The current native-arm image was built through the optional secret-mounted CA path and executed with Podman as non-root with a read-only root. The suite exercised a mock tool workflow, artifact and durable inspection, missing-secret and invalid-workflow exit propagation, SIGTERM, and recorded replay under `--network none`. Checksum-verified Trivy 0.72.0 found zero fixed HIGH/CRITICAL findings and generated valid CycloneDX JSON. The exact retained GPT-5.6 live database had previously replayed with no credential and no network, identical output and artifact digest, zero fresh effects/tool calls/provider sessions, and explicit source-effect audit links. GitHub, GitLab, Jenkins, Harness, and Kubernetes examples remain documentation-reviewed only; the automatic Ubuntu Linux x64 build, scan, and SBOM job is locally linted but has not been dispatched. +> Canonical source: [`docs/CONTAINER.md`](https://github.com/opensourceops/agentctl/blob/main/docs/CONTAINER.md). Verified against agentctl commit `0ae1e381b87ea815f0d4ca66689db10bb1129e4a`. diff --git a/src/content/docs/_generated/guides/local-operation.md b/src/content/docs/_generated/guides/local-operation.md new file mode 100644 index 0000000..3dc52b7 --- /dev/null +++ b/src/content/docs/_generated/guides/local-operation.md @@ -0,0 +1,73 @@ +--- +title: "Local operation" +description: "Manage paths, state, outputs, interruption, recovery, and retention." +editUrl: "https://github.com/opensourceops/agentctl/edit/main/docs/guides/LOCAL_OPERATION.md" +--- +Use explicit paths and retain the database whenever you may need inspection, approval, resume, replay, or audit evidence. + +## Default and custom paths + +The CLI defaults to `.agentctl/runtime.db` relative to the current working directory. The workflow workspace defaults to the current directory. Artifact locations come from workflow inputs and policy-approved paths. Override the state path and workspace explicitly for unattended use: + +```text +agentctl run config/workflow.yaml \ + --workspace /srv/project \ + --db /var/lib/agentctl/runtime.db \ + --output json --color never +``` + +This writes the SQLite database and any declared artifacts. Network calls occur only when the workflow uses an allowed provider or protocol. + +## Output and exit status + +Human output is for terminals. `--output json --color never` emits one versioned final document on stdout; an error uses the same envelope shape on stderr. Exit codes distinguish success, validation, policy or approval, run failure, persistence, remote failure, and cancellation. + +JSONL progress output is not supported in this release. Use durable audit and trace records for event-level inspection. + +## Interrupt safely + +SIGINT and SIGTERM request cancellation, cancel in-flight async work, persist cancellation state, and exit `130`. If dispatch occurred but confirmation did not, the related effect is uncertain. Do not delete the database or immediately rerun an external mutation. + +## Inspect a run + +```text +agentctl inspect RUN_ID --db /var/lib/agentctl/runtime.db --output json --color never +agentctl approvals list RUN_ID --db /var/lib/agentctl/runtime.db --output json --color never +``` + +Use the run ID and trace ID when correlating logs. Treat database output as sensitive because prompts, file content, tool output, and remote artifacts may be present even when secret values were redacted. + +## Resume, replay, retry, and fork + +- Resume continues the same non-terminal run and reuses confirmed effects. +- Retry is bounded within a task and never guesses about an ambiguous effect. +- Recorded replay creates a new record from terminal stored results and calls no executor. +- Fork creates a new child run and permits fresh effects. + +Do not use these terms interchangeably. Read [Durable execution](/agentctl/durable-execution/) before recovering a workflow that may have changed an external system. + +## Resolve an approval + +Non-interactive execution persists a pending approval and exits `3` by default: + +```text +agentctl approvals list RUN_ID --db .agentctl/runtime.db +agentctl approvals approve APPROVAL_ID --db .agentctl/runtime.db \ + --actor operator@example.invalid --reason "Reviewed requested write" +agentctl resume RUN_ID --db .agentctl/runtime.db --output json --color never +``` + +Reject with `approvals reject` when the proposed effect is not acceptable. + +## Back up and retain state + +SQLite uses WAL mode. Copy the database and its WAL files as one consistent backup using an SQLite-aware method or during a controlled stop. Keep backups and artifacts according to data classification, not merely run age. + +After the retention period: + +```text +agentctl gc --db .agentctl/runtime.db --older-than-days 30 --output json --color never +``` + +Garbage collection deletes eligible terminal history and expired long-term memory. Back up before deletion when the history is audit evidence. +> Canonical source: [`docs/guides/LOCAL_OPERATION.md`](https://github.com/opensourceops/agentctl/blob/main/docs/guides/LOCAL_OPERATION.md). Verified against agentctl commit `0ae1e381b87ea815f0d4ca66689db10bb1129e4a`. diff --git a/src/content/docs/_generated/guides/workflow-authoring.md b/src/content/docs/_generated/guides/workflow-authoring.md new file mode 100644 index 0000000..ea3aa35 --- /dev/null +++ b/src/content/docs/_generated/guides/workflow-authoring.md @@ -0,0 +1,127 @@ +--- +title: "Author workflows" +description: "Learn workflow YAML in execution order." +editUrl: "https://github.com/opensourceops/agentctl/edit/main/docs/guides/WORKFLOW_AUTHORING.md" +--- +This guide teaches the YAML model in the order you need it. The generated JSON Schema is the field authority, but start with the execution model rather than the schema dump. + +## 1. Give the workflow an identity + +Every document has a strict versioned envelope: + +```yaml +apiVersion: agentctl.dev/v1alpha1 +kind: Workflow +metadata: + name: repository-check + description: Check a repository with reviewed automation. +spec: + tasks: [] +``` + +Unknown fields fail validation. The document limit is 1 MiB. + +## 2. Declare inputs + +`spec.inputs` defines default JSON values. A caller can override them with `--inputs`, `--inputs-file`, or repeated `--input KEY=VALUE`. + +```yaml +spec: + inputs: + reportPath: artifacts/report.txt +``` + +Templates can read `${{ inputs.reportPath }}`. An exact template preserves its JSON type. Interpolation into text accepts scalars only. + +## 3. Define tasks + +Tasks are the graph nodes. Their list order is also the deterministic tie-break order for tasks whose dependencies are ready. + +```yaml +tasks: + - id: inspect + uses: action:read + with: + path: README.md +``` + +## 4. Add dependencies + +Use `needs` for graph edges and task-output availability: + +```yaml +- id: verify + uses: action:assert + needs: [inspect] + with: + that: "${{ tasks.inspect.output.content }}" + message: README was empty +``` + +The compiler rejects missing references, implicit dependencies, duplicate IDs, and cycles. + +## 5. Choose deterministic actions + +Built-in actions cover assignment, assertion, file read and write, direct process execution, working memory, SQLite long-term memory, MCP calls, and A2A delegation. Declare each action once, then reference it with `action:name`. + +Process execution uses a command plus direct argument vector. It never inserts an implicit shell and receives only explicitly allowed environment variables. + +## 6. Add a bounded agent + +An agent names a provider, model, instructions, tools, and hard bounds: + +```yaml +providers: + fake: + kind: fake +agents: + reviewer: + provider: fake + model: scripted + instructions: Review only the supplied evidence. + tools: [read_repository] + maxTurns: 2 + maxToolCalls: 1 + maxOutputTokens: 128 + timeoutSeconds: 10 +``` + +The model does not own the graph, policy, or persistence. + +## 7. Define tool contracts + +A model sees only tools listed on its agent. Each tool requires strict input and output schema, capability, risk, effect class, idempotency, retry safety, timeout, and approval requirement. Runtime policy makes the final authorization decision. + +## 8. Declare outputs + +Workflow outputs select completed task data: + +```yaml +outputs: + report: "${{ tasks.report.output.path }}" +``` + +Machine output wraps declared values in the versioned CLI envelope. + +## 9. Constrain policy + +Policy owns workspace roots, writable roots, environment names, network hosts, processes, providers, tools, and approvals. Allowlists are application controls, not an operating-system sandbox. + +Start with the minimum grant. Add a host, writable root, executable, or secret name only when a verified task needs it. + +## 10. Plan for state and recovery + +Choose an explicit database path for scheduled or CI runs. A confirmed effect can be reused during resume. An effect that started without a confirmed result becomes uncertain and stops automatic recovery. Recorded replay calls no executor. Fork intentionally permits fresh effects. + +## Validate your workflow + +From the directory containing the workflow: + +```text +agentctl check workflow.yaml +agentctl plan workflow.yaml +agentctl run workflow.yaml --check --diff --db .agentctl/preview.db +``` + +The preview may write run history to its database, but it does not perform filesystem, process, remote, or model mutation. Read [Workflow DSL](/agentctl/concepts/workflow-model/) and the [YAML reference](/agentctl/reference/yaml/) for the complete contract. +> Canonical source: [`docs/guides/WORKFLOW_AUTHORING.md`](https://github.com/opensourceops/agentctl/blob/main/docs/guides/WORKFLOW_AUTHORING.md). Verified against agentctl commit `0ae1e381b87ea815f0d4ca66689db10bb1129e4a`. diff --git a/src/content/docs/_generated/observability/index.md b/src/content/docs/_generated/observability/index.md new file mode 100644 index 0000000..85fbd65 --- /dev/null +++ b/src/content/docs/_generated/observability/index.md @@ -0,0 +1,50 @@ +--- +title: "Logs and observability" +description: "Correlate CLI output, audit events, traces, and usage metrics." +editUrl: "https://github.com/opensourceops/agentctl/edit/main/docs/OBSERVABILITY.md" +--- +Observability has two audiences: terminal users need a concise final result, while operators need durable evidence for diagnosis and audit. The runtime keeps those contracts separate. + +## CLI streams + +Human output is the default for interactive use. For automation, use one versioned JSON document: + +```bash +agentctl run workflow.yaml --db .agentctl/runtime.db --output json --color never +``` + +Success writes an `agentctl.dev/cli/v1` envelope to stdout. Failure writes the same envelope shape to stderr and returns a typed exit code. Run-scoped results include run and trace IDs. JSONL progress streaming is not implemented in this release; do not parse human output or assume that each line is an event. + +## Durable inspection + +The SQLite database is the authoritative local record. Inspect a run and database without invoking a provider or repeating an effect: + +```bash +agentctl inspect RUN_ID --db .agentctl/runtime.db --output json --color never +agentctl db stats --db .agentctl/runtime.db --output json --color never +``` + +Inspection includes task attempts, checkpoints, effect state, approvals, provider and protocol records, ordered audit events, and trace correlation. Use `agentctl approvals list RUN_ID` when the run exited pending approval. Preserve the database and its WAL files together when the history is operational evidence. + +## Runtime events + +The runtime emits versioned typed events for runs, tasks, attempts, agent turns, provider/model responses, tool/effect calls, approvals, MCP/A2A operations, retries, checkpoints, state transitions, and useful database boundaries. Events carry run, task, effect, and trace correlation plus phase and timestamp. + +`agentctl-observability` provides a no-op sink, buffered test sink, and an OpenTelemetry-compatible global tracer bridge. Tracing is optional and has no role in scheduling or replay. Structured audit events are persisted separately in SQLite and ordered per run. + +OpenTelemetry export is an embedding concern in this release; the standalone CLI does not expose an exporter configuration flag. An application using the runtime can install the bridge and route spans through its own collector configuration. A tracing outage must not alter workflow scheduling or replay semantics. + +## Metrics and interpretation + +Usage maps input, output, reasoning, cache-read, and cache-write tokens where providers expose them. Duration, attempts, provider errors, retries, approval waits, tool counts, and action change status are available from trace and audit events. Price calculation is not fabricated when no reliable price metadata exists. + +When diagnosing a failure, correlate the final envelope's run and trace IDs with the persisted task, attempt, effect, and provider records. A model response is not proof that an external effect completed; use the effect record and its confirmation state. + +## Sensitive data + +Sensitive field names and registered secret values are redacted before trace attributes leave the runtime. Provider response content is not printed by the live smoke. Operators must still treat trace backends and the local database as sensitive because prompts, file content, tool output, and remote artifacts may contain confidential non-secret data. + +Keep provider credentials in environment references, never workflow inputs or command arguments. Apply access control and retention to the database, collected artifacts, CI logs, and trace backend. Before sharing diagnostics, remove credentials, prompt content, file content, remote payloads, and identifying metadata; a run ID alone is sufficient for local correlation. + +See [CLI output and exit codes](/agentctl/reference/output/), [local operation](/agentctl/guides/local-operation/), and [runtime database and migrations](/agentctl/reference/database/) for the complete operating contract. +> Canonical source: [`docs/OBSERVABILITY.md`](https://github.com/opensourceops/agentctl/blob/main/docs/OBSERVABILITY.md). Verified against agentctl commit `0ae1e381b87ea815f0d4ca66689db10bb1129e4a`. diff --git a/src/content/docs/_generated/operations/scheduled.md b/src/content/docs/_generated/operations/scheduled.md new file mode 100644 index 0000000..6005a9a --- /dev/null +++ b/src/content/docs/_generated/operations/scheduled.md @@ -0,0 +1,70 @@ +--- +title: "Scheduled execution" +description: "Use cron, systemd, or Kubernetes as the external scheduler." +editUrl: "https://github.com/opensourceops/agentctl/edit/main/docs/OPERATIONS.md" +--- +Scheduling belongs to the external platform. `agentctl` owns deterministic execution, SQLite history, overlap-safe database access, effects, outputs, recovery, and diagnostics; it does not own clocks, calendars, leader election, log rotation, or distributed leases. + +## Non-interactive contract + +- Do not pass `--interactive` from cron or CI. +- Use `--output json --color never` for one parseable final document on stdout. Errors use the same versioned envelope on stderr. +- Set explicit `--workspace`, `--db`, artifact inputs, and `--timeout-seconds`. +- A pending approval is persisted and exits `3`; it never waits on stdin. Use `approvals list`, an operator-controlled `approve` or `reject`, and then `resume` with the same database and workspace. +- Success is `0`, validation is `2`, policy/approval is `3`, run failure is `4`, persistence is `5`, provider/protocol failure is `6`, and cancellation is `130`. +- Output/error correlation includes a run ID and trace ID whenever a run exists. + +## Cron + +Use absolute paths and an external overlap lock when two schedules must not affect the same resource: + +```text +*/15 * * * * /usr/bin/flock -n /var/lib/agentctl/report.lock /usr/local/bin/agentctl run /etc/agentctl/report.yaml --workspace /srv/app --db /var/lib/agentctl/runtime.db --inputs-file /etc/agentctl/inputs.json --timeout-seconds 600 --output json --color never >>/var/log/agentctl/report.jsonl 2>>/var/log/agentctl/report.err +``` + +The administrator owns log rotation and restrictive file permissions. Provider keys belong in the scheduler's protected environment, never in the crontab command line. + +## systemd timer + +```ini +# /etc/systemd/system/agentctl-report.service +[Unit] +Description=Run the reviewed agentctl report workflow + +[Service] +Type=oneshot +User=agentctl +EnvironmentFile=/etc/agentctl/provider.env +ExecStart=/usr/local/bin/agentctl run /etc/agentctl/report.yaml --workspace /srv/app --db /var/lib/agentctl/runtime.db --inputs-file /etc/agentctl/inputs.json --timeout-seconds 600 --output json --color never +ReadWritePaths=/var/lib/agentctl /srv/agentctl-artifacts +NoNewPrivileges=true +PrivateTmp=true +``` + +```ini +# /etc/systemd/system/agentctl-report.timer +[Unit] +Description=Schedule the agentctl report workflow + +[Timer] +OnCalendar=*:0/15 +Persistent=true +Unit=agentctl-report.service + +[Install] +WantedBy=timers.target +``` + +A oneshot service has one active invocation at a time. Use distinct databases only when independent histories are intended. + +## Recovery + +1. Capture the final JSON/error envelope and run/trace IDs. +2. Run `agentctl inspect RUN_ID --db PATH --output json`. +3. Resolve a pending approval, then `resume`; never use `fork` as an implicit retry. +4. Use `replay` for a no-effect reconstruction of a terminal run. +5. Use `fork` for a new run that may execute fresh effects. +6. For an uncertain effect, reconcile the remote system first. The runtime intentionally refuses unsafe resume. + +Use `agentctl gc --db PATH --older-than-days N` for expired memory and old terminal histories after the organization's retention/backup requirements are satisfied. SQLite WAL files belong with the database during backup. A future schedule-run key may improve deduplication; today the external scheduler owns overlap prevention. +> Canonical source: [`docs/OPERATIONS.md`](https://github.com/opensourceops/agentctl/blob/main/docs/OPERATIONS.md). Verified against agentctl commit `0ae1e381b87ea815f0d4ca66689db10bb1129e4a`. diff --git a/src/content/docs/_generated/providers/a2a.md b/src/content/docs/_generated/providers/a2a.md new file mode 100644 index 0000000..a1d8077 --- /dev/null +++ b/src/content/docs/_generated/providers/a2a.md @@ -0,0 +1,11 @@ +--- +title: "A2A" +description: "Delegate bounded work to pinned A2A peers." +editUrl: "https://github.com/opensourceops/agentctl/edit/main/docs/A2A.md" +--- +The client pins [A2A `1.0`](https://a2a-protocol.org/latest/specification/) and discovers an Agent Card. It selects a JSON-RPC interface advertising version `1.0`, then supports `SendMessage`, bounded `GetTask` polling, `CancelTask`, SSE task updates, terminal success/failure/cancel states, messages, structured parts, and artifacts. + +Card and RPC authentication headers are environment secret references. The card URL is subject to network policy, redirects are disabled, and the selected JSON-RPC interface must have the same scheme, host, and effective port as that reviewed card URL. Cards, skills, messages, parts, and artifacts are untrusted data. An A2A delegation is a `remote_agent` effect and may require approval. + +Polling is bounded; request and overall operation timeouts and cancellation are enforced. The client does not claim delivery exactly once or transparently resubmit after an ambiguous response. Mock peers cover discovery, SendMessage/GetTask, artifacts, streaming parsing, cancellation mapping, protocol mismatch, failure, and timeout at the declared maturity. +> Canonical source: [`docs/A2A.md`](https://github.com/opensourceops/agentctl/blob/main/docs/A2A.md). Verified against agentctl commit `0ae1e381b87ea815f0d4ca66689db10bb1129e4a`. diff --git a/src/content/docs/_generated/providers/index.md b/src/content/docs/_generated/providers/index.md new file mode 100644 index 0000000..606b799 --- /dev/null +++ b/src/content/docs/_generated/providers/index.md @@ -0,0 +1,33 @@ +--- +title: "Providers" +description: "Compare native adapters, capabilities, authentication, and evidence levels." +editUrl: "https://github.com/opensourceops/agentctl/edit/main/docs/PROVIDERS.md" +--- +The core defines provider-neutral messages, text/reasoning/tool content, strict tool schemas, tool calls/results, finish reasons, usage, and opaque continuation. The compiler compares each agent’s requested structured output, tools, reasoning, cache, and continuation needs with typed provider capabilities. + +| Kind | Native API | Implemented behavior | Credential default | +| --- | --- | --- | --- | +| `fake` | in-process scripted provider | deterministic echo/script, tool path, usage | none | +| `openai` | Responses API | GPT-5.6; strict function tools and structured output; multiple call IDs; `previous_response_id`; reasoning effort/mode/context; response storage; prompt-cache mode/TTL; input/output/reasoning/cache metrics | `OPENAI_API_KEY` | +| `azure_openai` | Azure `/openai/v1/responses?api-version=v1` | OpenAI mapping with Azure `api-key`; explicit endpoint required | `AZURE_OPENAI_API_KEY` | +| `anthropic` | Messages API | native content/tool/thinking blocks, structured output instruction, usage and stop mapping | `ANTHROPIC_API_KEY` | +| `google` | Gemini `generateContent` | native contents/function declarations/calls/results, thought-signature continuation, response schema, token usage | `GEMINI_API_KEY` | + +Endpoints must pass the workflow network allowlist. Redirects are disabled. Credentials and configured headers are resolved from environment references only when building an adapter; standard authentication headers override custom headers. Successful/error response JSON keys and values plus provider request IDs are scrubbed of configured secrets before parsing or persistence. Calls honor timeout and cancellation. + +`agentctl providers inspect ` reports declared capabilities without calling a service. OpenAI has the broadest mock request/response/tool/usage/error coverage. Azure OpenAI, Anthropic, and Google have native mapping and focused mock-protocol coverage at the maturity shown below; normal tests have no credentials. Live provider workflow examples end in `-live.yaml` and are opt-in. + +| Provider | Validation level in this tree | +| --- | --- | +| Fake | deterministic in-process runtime and acceptance tested | +| OpenAI | native adapter mock-protocol tested; prior bounded GPT-5.6 tool workflow live-tested | +| Azure OpenAI | native adapter request/auth/response mapping mock-tested; not live-tested | +| Anthropic | native text/tool/usage mapping mock-tested; not live-tested | +| Google | native text/function/usage mapping mock-tested; not live-tested | + +`agentctl providers smoke-openai --live --model gpt-5.6` remains a provider-only diagnostic; it is not runtime acceptance. The repository-owned live gate is `cargo xtask acceptance-live-openai`. It runs a YAML workflow through compilation, SQLite, a real strict function call, built-in tool policy/schema validation, `previous_response_id` continuation, deterministic assertion/artifact creation, public inspection, and replay with the credential removed. It repeats the journey inside the production OCI image and never runs in normal CI. Anthropic, Google, and Azure are implemented and mock-tested but are not live-tested in this release. + +OpenAI provider options are an allowlisted map (`store`, `reasoningContext`, `promptCacheMode`, `promptCacheTtl`, `parallelToolCalls`, and `safetyIdentifier`). Unknown options or invalid values fail compilation. Tool-using OpenAI and Azure OpenAI agents may not set `store: false`: stateless continuation would require replaying returned response/reasoning/function items, which this release does not implement. One-turn agents without tools may disable storage. Programmatic tool calling and model streaming are explicitly unsupported in the workflow runtime and fail rather than being ignored. Parallel function calls are parsed and correlated, but executors run them serially in response order because v1 scheduling is sequential. + +Cost is not inferred when a provider returns no reliable cost metadata. A workflow requesting `maxCostUsd` therefore fails capability negotiation; input/output token limits are enforced from native usage. Retry is limited to explicit task bounds and definitive retryable HTTP responses. Timeout, cancellation, or a transport loss after dispatch is considered ambiguous and is not automatically reissued. +> Canonical source: [`docs/PROVIDERS.md`](https://github.com/opensourceops/agentctl/blob/main/docs/PROVIDERS.md). Verified against agentctl commit `0ae1e381b87ea815f0d4ca66689db10bb1129e4a`. diff --git a/src/content/docs/_generated/providers/mcp.md b/src/content/docs/_generated/providers/mcp.md new file mode 100644 index 0000000..bff64d6 --- /dev/null +++ b/src/content/docs/_generated/providers/mcp.md @@ -0,0 +1,11 @@ +--- +title: "MCP" +description: "Use pinned MCP Streamable HTTP tools under explicit policy." +editUrl: "https://github.com/opensourceops/agentctl/edit/main/docs/MCP.md" +--- +The client pins the stable MCP protocol version `2025-11-25` from the [official specification](https://modelcontextprotocol.io/specification/2025-11-25). It uses Streamable HTTP JSON-RPC and implements initialization/version negotiation, initialized notification, session IDs, protocol headers, tool listing, input/output schemas, tool calls, structured content, error mapping, SSE response parsing, timeout, best-effort cancellation notification, and explicit session-expiry failure. + +Authentication headers are environment secret references. The endpoint must pass network policy. Redirects are disabled and an `Origin` header is sent. Remote descriptions, schemas, content, and annotations are untrusted; annotations are exposed only as metadata and never authorize an effect. + +The client initializes lazily and does not automatically reconnect after session expiry because repeating a remote operation could be unsafe. The caller must reconcile and resume or fork. Streaming transport is parsed, but tool results are delivered to the runtime only when complete. Deterministic local mock-server tests cover negotiation, sessions, listing/call, structured results, version mismatch, and timeout. +> Canonical source: [`docs/MCP.md`](https://github.com/opensourceops/agentctl/blob/main/docs/MCP.md). Verified against agentctl commit `0ae1e381b87ea815f0d4ca66689db10bb1129e4a`. diff --git a/src/content/docs/_generated/reference/capabilities.md b/src/content/docs/_generated/reference/capabilities.md new file mode 100644 index 0000000..b5d0dc2 --- /dev/null +++ b/src/content/docs/_generated/reference/capabilities.md @@ -0,0 +1,43 @@ +--- +title: "Capability matrices" +description: "Provider and tool capabilities with exact evidence levels." +editUrl: "https://github.com/opensourceops/agentctl/edit/main/docs/reference/MATRICES.md" +--- +## Provider capabilities and evidence + +| Provider | Text | Tools | Structured output | Reasoning | Continuation | Current evidence | +| --- | --- | --- | --- | --- | --- | --- | +| Fake | yes | scripted | deterministic fixture behavior | no | scripted | deterministic runtime and acceptance | +| OpenAI | yes | strict function tools | native response format | supported options | stored Responses continuation | mock protocol plus retained bounded live GPT-5.6 evidence | +| Azure OpenAI | yes | strict function tools | OpenAI response mapping | supported options | stored Responses continuation | mock protocol only | +| Anthropic | yes | native tool blocks | instruction mapping | native thinking blocks | provider-neutral continuation | mock protocol only | +| Google Gemini | yes | native function calls | response schema | thought-signature mapping | provider-neutral continuation | mock protocol only | + +Capabilities are negotiated from source metadata before execution. `agentctl providers inspect WORKFLOW` reports what the selected configuration requests and supports without making a service call. Provider features are not assumed equivalent. + +## Built-in tool executors + +| Tool kind | Capability | Effect class | Typical idempotency | Policy boundary | +| --- | --- | --- | --- | --- | +| `builtin.workspace.read` | `filesystem.read` | observe | idempotent | canonical workspace root | +| `builtin.workspace.write` | `filesystem.write` | workspace mutation | keyed or at-most-once by contract | approved writable roots | +| `builtin.echo` | declared echo capability | pure | pure | tool allowlist and schema | + +The compiler verifies that a built-in tool declaration matches its executor semantics. A model cannot change capability, risk, effect class, idempotency, or approval behavior. + +## Built-in actions + +| Action kind | External interaction | Replay behavior | +| --- | --- | --- | +| `builtin.assign` | none | recorded output | +| `builtin.assert` | none | recorded terminal result | +| `builtin.read` | workspace observation | recorded result, no fresh read in replay | +| `builtin.write` | workspace mutation | recorded result, no fresh write in replay | +| `builtin.shell.exec` | direct process | recorded result, no fresh process in replay | +| working-memory read/write | run-local state | checkpointed and reconstructed | +| long-term-memory read/write | SQLite cross-run state | recorded result; long-term store is not rolled back | +| `mcp.call` | remote tool | recorded result, no fresh call in replay | +| `a2a.delegate` | remote agent | recorded result, no fresh delegation in replay | + +See [Providers](/agentctl/providers/), [Tools](/agentctl/concepts/tools/), and [Durable execution](/agentctl/durable-execution/). +> Canonical source: [`docs/reference/MATRICES.md`](https://github.com/opensourceops/agentctl/blob/main/docs/reference/MATRICES.md). Verified against agentctl commit `0ae1e381b87ea815f0d4ca66689db10bb1129e4a`. diff --git a/src/content/docs/_generated/reference/cli.md b/src/content/docs/_generated/reference/cli.md new file mode 100644 index 0000000..2a5d031 --- /dev/null +++ b/src/content/docs/_generated/reference/cli.md @@ -0,0 +1,485 @@ +--- +title: "CLI reference" +description: "Generated command and flag reference for the current Rust CLI." +editUrl: "https://github.com/opensourceops/agentctl/edit/main/docs/generated/CLI.md" +--- +Generated from the Rust CLI by `cargo xtask generate`. Do not edit by hand. + +## `agentctl` + +```text +Deterministic, declarative control plane for policy-constrained agentic automation + +Usage: agentctl [OPTIONS] + +Commands: + check Validate syntax, schema, references, capabilities, policy, and templates + plan Print the deterministic compiled plan + run Execute a workflow, or predict it with --check + resume Continue an interrupted or approval-paused run + replay Reconstruct a terminal run only from recorded state and results + fork Create a new run from a prior workflow with fresh effects + cancel Durably request cancellation + inspect Inspect durable run, task, and audit state + approvals List or resolve durable approval requests + providers Inspect provider capabilities or run the opt-in OpenAI smoke + auth Check configured secret references without revealing values + schema Print or write the generated workflow JSON Schema + migrate Translate an unversioned TypeScript-era workflow into v1alpha1 + packs Inspect and verify a local reusable pack + db Inspect the runtime database + memory Read or write namespaced long-term memory + gc Garbage-collect expired memory and old terminal runs + completion Generate completion for a supported shell + version Print the exact build version + update Explain safe update options without modifying the installation + +Options: + --output [default: human] [possible values: human, json] + --color [default: auto] [possible values: auto, always, never] + --verbose + -h, --help Print help + -V, --version Print version +``` + +## `agentctl check` + +```text +Validate syntax, schema, references, capabilities, policy, and templates + +Usage: agentctl check [OPTIONS] + +Arguments: + + +Options: + --output [default: human] [possible values: human, json] + --color [default: auto] [possible values: auto, always, never] + --verbose + -h, --help Print help +``` + +## `agentctl plan` + +```text +Print the deterministic compiled plan + +Usage: agentctl plan [OPTIONS] + +Arguments: + + +Options: + --output [default: human] [possible values: human, json] + --color [default: auto] [possible values: auto, always, never] + --verbose + -h, --help Print help +``` + +## `agentctl run` + +```text +Execute a workflow, or predict it with --check + +Usage: agentctl run [OPTIONS] + +Arguments: + + +Options: + --db [default: .agentctl/runtime.db] + --output [default: human] [possible values: human, json] + --color [default: auto] [possible values: auto, always, never] + --inputs + --inputs-file + --verbose + --input + --workspace + --timeout-seconds + --check + --diff + --interactive + -h, --help Print help +``` + +## `agentctl resume` + +```text +Continue an interrupted or approval-paused run + +Usage: agentctl resume [OPTIONS] + +Arguments: + + +Options: + --db [default: .agentctl/runtime.db] + --output [default: human] [possible values: human, json] + --color [default: auto] [possible values: auto, always, never] + --diff + --interactive + --verbose + --workspace + --timeout-seconds + -h, --help Print help +``` + +## `agentctl replay` + +```text +Reconstruct a terminal run only from recorded state and results + +Usage: agentctl replay [OPTIONS] + +Arguments: + + +Options: + --db [default: .agentctl/runtime.db] + --output [default: human] [possible values: human, json] + --color [default: auto] [possible values: auto, always, never] + --verbose + -h, --help Print help +``` + +## `agentctl fork` + +```text +Create a new run from a prior workflow with fresh effects + +Usage: agentctl fork [OPTIONS] + +Arguments: + + +Options: + --db [default: .agentctl/runtime.db] + --output [default: human] [possible values: human, json] + --color [default: auto] [possible values: auto, always, never] + --interactive + --diff + --verbose + --workspace + --timeout-seconds + -h, --help Print help +``` + +## `agentctl cancel` + +```text +Durably request cancellation + +Usage: agentctl cancel [OPTIONS] + +Arguments: + + +Options: + --db [default: .agentctl/runtime.db] + --output [default: human] [possible values: human, json] + --color [default: auto] [possible values: auto, always, never] + --verbose + -h, --help Print help +``` + +## `agentctl inspect` + +```text +Inspect durable run, task, and audit state + +Usage: agentctl inspect [OPTIONS] + +Arguments: + + +Options: + --db [default: .agentctl/runtime.db] + --output [default: human] [possible values: human, json] + --color [default: auto] [possible values: auto, always, never] + --verbose + -h, --help Print help +``` + +## `agentctl approvals` + +```text +List or resolve durable approval requests + +Usage: agentctl approvals [OPTIONS] + +Commands: + list + approve + reject + +Options: + --db [default: .agentctl/runtime.db] + --output [default: human] [possible values: human, json] + --color [default: auto] [possible values: auto, always, never] + --verbose + -h, --help Print help +``` + +## `agentctl approvals list` + +```text +Usage: agentctl approvals list [OPTIONS] + +Arguments: + + +Options: + --output [default: human] [possible values: human, json] + --color [default: auto] [possible values: auto, always, never] + --verbose + -h, --help Print help +``` + +## `agentctl approvals approve` + +```text +Usage: agentctl approvals approve [OPTIONS] --reason + +Arguments: + + +Options: + --actor [default: cli-user] + --output [default: human] [possible values: human, json] + --color [default: auto] [possible values: auto, always, never] + --reason + --verbose + -h, --help Print help +``` + +## `agentctl approvals reject` + +```text +Usage: agentctl approvals reject [OPTIONS] --reason + +Arguments: + + +Options: + --actor [default: cli-user] + --output [default: human] [possible values: human, json] + --color [default: auto] [possible values: auto, always, never] + --reason + --verbose + -h, --help Print help +``` + +## `agentctl providers` + +```text +Inspect provider capabilities or run the opt-in OpenAI smoke + +Usage: agentctl providers [OPTIONS] + +Commands: + inspect + smoke-openai + +Options: + --output [default: human] [possible values: human, json] + --color [default: auto] [possible values: auto, always, never] + --verbose + -h, --help Print help +``` + +## `agentctl providers inspect` + +```text +Usage: agentctl providers inspect [OPTIONS] + +Arguments: + + +Options: + --output [default: human] [possible values: human, json] + --color [default: auto] [possible values: auto, always, never] + --verbose + -h, --help Print help +``` + +## `agentctl providers smoke-openai` + +```text +Usage: agentctl providers smoke-openai [OPTIONS] --live + +Options: + --live Required acknowledgement that this performs one bounded live request + --output [default: human] [possible values: human, json] + --color [default: auto] [possible values: auto, always, never] + --model [default: gpt-5.6] + --verbose + -h, --help Print help +``` + +## `agentctl auth` + +```text +Check configured secret references without revealing values + +Usage: agentctl auth [OPTIONS] + +Commands: + check + +Options: + --output [default: human] [possible values: human, json] + --color [default: auto] [possible values: auto, always, never] + --verbose + -h, --help Print help +``` + +## `agentctl schema` + +```text +Print or write the generated workflow JSON Schema + +Usage: agentctl schema [OPTIONS] + +Options: + --output [default: human] [possible values: human, json] + --write + --color [default: auto] [possible values: auto, always, never] + --verbose + -h, --help Print help +``` + +## `agentctl migrate` + +```text +Translate an unversioned TypeScript-era workflow into v1alpha1 + +Usage: agentctl migrate [OPTIONS] + +Arguments: + + +Options: + --output [default: human] [possible values: human, json] + --write + --color [default: auto] [possible values: auto, always, never] + --verbose + -h, --help Print help +``` + +## `agentctl packs` + +```text +Inspect and verify a local reusable pack + +Usage: agentctl packs [OPTIONS] + +Commands: + inspect + verify + +Options: + --output [default: human] [possible values: human, json] + --color [default: auto] [possible values: auto, always, never] + --verbose + -h, --help Print help +``` + +## `agentctl db` + +```text +Inspect the runtime database + +Usage: agentctl db [OPTIONS] + +Commands: + stats + migrate + +Options: + --db [default: .agentctl/runtime.db] + --output [default: human] [possible values: human, json] + --color [default: auto] [possible values: auto, always, never] + --verbose + -h, --help Print help +``` + +## `agentctl memory` + +```text +Read or write namespaced long-term memory + +Usage: agentctl memory [OPTIONS] + +Commands: + get + put + +Options: + --db [default: .agentctl/runtime.db] + --output [default: human] [possible values: human, json] + --color [default: auto] [possible values: auto, always, never] + --verbose + -h, --help Print help +``` + +## `agentctl gc` + +```text +Garbage-collect expired memory and old terminal runs + +Usage: agentctl gc [OPTIONS] + +Options: + --db [default: .agentctl/runtime.db] + --output [default: human] [possible values: human, json] + --color [default: auto] [possible values: auto, always, never] + --older-than-days [default: 30] + --verbose + -h, --help Print help +``` + +## `agentctl completion` + +```text +Generate completion for a supported shell + +Usage: agentctl completion [OPTIONS] + +Arguments: + [possible values: bash, elvish, fish, powershell, zsh] + +Options: + --output [default: human] [possible values: human, json] + --color [default: auto] [possible values: auto, always, never] + --verbose + -h, --help Print help +``` + +## `agentctl version` + +```text +Print the exact build version + +Usage: agentctl version [OPTIONS] + +Options: + --output [default: human] [possible values: human, json] + --color [default: auto] [possible values: auto, always, never] + --verbose + -h, --help Print help +``` + +## `agentctl update` + +```text +Explain safe update options without modifying the installation + +Usage: agentctl update [OPTIONS] + +Options: + --output [default: human] [possible values: human, json] + --color [default: auto] [possible values: auto, always, never] + --verbose + -h, --help Print help +``` +> Canonical source: [`docs/generated/CLI.md`](https://github.com/opensourceops/agentctl/blob/main/docs/generated/CLI.md). Verified against agentctl commit `0ae1e381b87ea815f0d4ca66689db10bb1129e4a`. diff --git a/src/content/docs/_generated/reference/compatibility.md b/src/content/docs/_generated/reference/compatibility.md new file mode 100644 index 0000000..9532aae --- /dev/null +++ b/src/content/docs/_generated/reference/compatibility.md @@ -0,0 +1,27 @@ +--- +title: "Compatibility" +description: "Preserved, migrated, changed, removed, and deferred contracts." +editUrl: "https://github.com/opensourceops/agentctl/edit/main/docs/COMPATIBILITY.md" +--- +## Preserved + +Declaration-order scheduling among ready tasks, `needs` dataflow, exact typed templates, deterministic assign/assert/file/memory use cases, bounded agent/tool turns, approval concepts, SQLite local persistence, and the useful top-level command names remain. The language-neutral fixture records the legacy assign workflow’s translated model, graph order, and task reference. + +## Migrated + +Unversioned `playbook:` YAML can be translated by `agentctl migrate`; `modules` become `actions`, `module:x` becomes `action:x`, heuristic agents map to the fake provider, and core memory/policy fields are normalized. Rust JSON output is a stable `agentctl.dev/cli/v1` envelope rather than the prototype JSONL/YAML mixture. The production executable and runtime are Rust. + +## Intentionally changed + +`replay` now means no-effect recorded reconstruction. The prototype operation that created a new effectful run is `fork`. Unknown YAML fields, missing references, cycles, unsupported provider capabilities, invalid tool output, path escapes, unsafe processes/networks, and incompatible durable state now fail explicitly. Direct `--api-key` flags are removed; secret references are required. OpenAI uses current Responses concepts, and Anthropic/Google are native adapters rather than names on an OpenAI-compatible route. + +## Deprecated and removed + +Unversioned YAML is compatibility-only and warns. The TypeScript package exposes no `bin` or `main` and is archived. Placeholder memory adapters, provider environment-name-only “support,” YAML output, legacy profiles, automatic endpoint overrides, old prompt-cache fields, and optimistic replay semantics are removed from production. + +Legacy workflows depending on packs, broad built-in tool profiles, remote MCP/A2A shape, MongoDB memory, provider-specific endpoint fields, or embedded credentials require manual conversion. The translator intentionally refuses to guess security-sensitive intent. + +## Deferred product decisions + +Parallel execution, foreach/matrix, loops, routers, sub-workflows, teams/handoffs, compensation execution, a public pack registry/resolver, vector memory, automatic MCP reconnection, general A2A resubmission, and streamed model output are not compatibility promises for v1alpha1. +> Canonical source: [`docs/COMPATIBILITY.md`](https://github.com/opensourceops/agentctl/blob/main/docs/COMPATIBILITY.md). Verified against agentctl commit `0ae1e381b87ea815f0d4ca66689db10bb1129e4a`. diff --git a/src/content/docs/_generated/reference/database.md b/src/content/docs/_generated/reference/database.md new file mode 100644 index 0000000..fa794b1 --- /dev/null +++ b/src/content/docs/_generated/reference/database.md @@ -0,0 +1,45 @@ +--- +title: "Database and migrations" +description: "SQLite records, schema migration, locking, backup, and retention." +editUrl: "https://github.com/opensourceops/agentctl/edit/main/docs/reference/DATABASE.md" +--- +The local SQLite database is both history and part of the correctness boundary. The current database schema version is `4`. + +## Stored records + +- runs, source workflow, compiled plan, inputs, output, mode, state, and parent linkage +- task states, attempts, output, and errors +- effects, request/result/error, confirmation, and uncertainty +- approvals and resolutions +- checksummed checkpoints +- ordered audit and trace events +- provider sessions and tool calls +- namespaced long-term memory with optional expiry + +Working memory is stored on the run and in checkpoints. Provider credentials are not stored. Other confidential content may be stored, including prompts, tool output, and remote artifacts. + +## Migrations + +The store reads SQLite `user_version` and applies forward migrations in order inside transactions. A database newer than the binary fails explicitly. Corrupt or incompatible serialized state also fails explicitly. + +```text +agentctl db stats --db .agentctl/runtime.db --output json --color never +agentctl db migrate --db .agentctl/runtime.db --output json --color never +``` + +`db migrate` may write the database. Back up the database and its WAL state before an upgrade. + +## Locking and permissions + +The connection enables foreign keys, WAL mode, and a five-second busy timeout. Unix database files use mode `0600`. Windows relies on user-profile ACLs. Separate runs can share a database, but this is not a distributed lease and does not prevent two runs from changing the same external resource. + +## Backups and recovery + +Use an SQLite-aware online backup or stop writers before copying the database and WAL files. Restore the set consistently. Do not use ordinary file synchronization that can separate a database from uncheckpointed WAL content. + +Delete old terminal history only after retention requirements are met: + +```text +agentctl gc --db .agentctl/runtime.db --older-than-days 30 --output json --color never +``` +> Canonical source: [`docs/reference/DATABASE.md`](https://github.com/opensourceops/agentctl/blob/main/docs/reference/DATABASE.md). Verified against agentctl commit `0ae1e381b87ea815f0d4ca66689db10bb1129e4a`. diff --git a/src/content/docs/_generated/reference/environment.md b/src/content/docs/_generated/reference/environment.md new file mode 100644 index 0000000..c6ca20c --- /dev/null +++ b/src/content/docs/_generated/reference/environment.md @@ -0,0 +1,48 @@ +--- +title: "Environment and paths" +description: "Credential references, repository variables, and default paths." +editUrl: "https://github.com/opensourceops/agentctl/edit/main/docs/reference/ENVIRONMENT_AND_PATHS.md" +--- +## Provider credentials + +| Provider kind | Conventional reference | Required when | +| --- | --- | --- | +| `fake` | none | Never. | +| `openai` | `OPENAI_API_KEY` | The workflow dispatches an OpenAI request. | +| `azure_openai` | `AZURE_OPENAI_API_KEY` | The workflow dispatches an Azure OpenAI request. | +| `anthropic` | `ANTHROPIC_API_KEY` | The workflow dispatches an Anthropic request. | +| `google` | `GEMINI_API_KEY` | The workflow dispatches a Google request. | + +These names are defaults used by repository examples. A workflow can name another valid environment reference. Policy must allow the name. Values never belong in YAML, CLI arguments, ordinary inputs, logs, or committed fixtures. + +## Repository and acceptance variables + +| Variable | Scope | Purpose | +| --- | --- | --- | +| `AGENTCTL_CONTAINER_ENGINE` | local acceptance | Select `docker` or `podman` when auto-detection is unsuitable. | +| `AGENTCTL_BUILD_CA_FILE` | local container build | Path to a reviewed CA bundle supplied as a build secret. | +| `AGENTCTL_BUILD_CA_PEM` | hosted container workflow | Protected secret materialized temporarily by CI. | + +Normal `cargo xtask docs-verify`, `cargo xtask verify`, and `cargo xtask acceptance` need no provider credential. + +## CLI paths + +| Path | Default or contract | Notes | +| --- | --- | --- | +| Workflow file | positional argument | Read-only input, at most 1 MiB. | +| Workspace | current directory | Override with `--workspace`. | +| Runtime database | `.agentctl/runtime.db` | Override with `--db`; SQLite WAL belongs to the same state set. | +| Artifact path | workflow-defined | Must remain under a policy-approved writable root. | + +## Container paths + +| Path | Access | +| --- | --- | +| `/config` | reviewed read-only configuration | +| `/workspace` | normally read-only workspace | +| `/state` | writable durable state | +| `/artifacts` | writable collected output | +| `/tmp` | small runtime tmpfs when the root filesystem is read-only | + +State and artifacts must be writable by UID/GID 65532 in the production image. +> Canonical source: [`docs/reference/ENVIRONMENT_AND_PATHS.md`](https://github.com/opensourceops/agentctl/blob/main/docs/reference/ENVIRONMENT_AND_PATHS.md). Verified against agentctl commit `0ae1e381b87ea815f0d4ca66689db10bb1129e4a`. diff --git a/src/content/docs/_generated/reference/limitations.md b/src/content/docs/_generated/reference/limitations.md new file mode 100644 index 0000000..c0265c5 --- /dev/null +++ b/src/content/docs/_generated/reference/limitations.md @@ -0,0 +1,54 @@ +--- +title: "Limitations" +description: "Current release boundary, deferred work, and non-goals." +editUrl: "https://github.com/opensourceops/agentctl/edit/main/docs/LIMITATIONS.md" +--- +This classification is part of the product contract. A deferred feature is not a current capability, but its absence is not automatically a release blocker for the local, externally scheduled, and generic OCI-step journeys. + +## Release blockers + +No known P0/P1 implementation defect remains for the stated local, scheduled, and OCI journeys. The local container build now has a secure optional CA secret path, and the current image passed OCI acceptance, Trivy 0.72.0, and CycloneDX validation. The remaining RC gate is external evidence: the new Linux x64, macOS arm64, Windows x64, container, security, package, and SBOM workflows are configured and locally linted but have not been pushed or dispatched. The recommendation is **Ready for hosted RC validation**, not an already validated RC or stable v1.0. + +## Required hardening completed for this release + +- Provider-specific options are allowlisted, type-checked, included in plan capability negotiation, and either mapped or rejected. Streaming and programmatic tool calling are rejected rather than ignored. +- Tool input/output schemas are strict; built-in tool kinds have compiler-checked capability/effect/idempotency contracts. +- Provider calls, function-call IDs/results, continuations, effects, checkpoints, audit events, and redacted trace events are durable and publicly inspectable. +- Timeout/transport ambiguity is not automatically retried; confirmed effects survive resume; call IDs are scoped by run; missing credentials fail before run/database creation. +- Non-interactive approvals durably pause, signals cancel safely, JSON errors include available run/trace correlation, and SQLite uses WAL plus a bounded lock wait. +- The packaged CLI, clean-directory quickstart, cron-like empty environment, and non-root/read-only OCI contract have executable acceptance coverage. +- Shell execution and acceptance/container helpers use bounded concurrent capture. Output overflow terminates/reaps the child with a structured secret-safe error; timeouts and cancellation retain durable uncertain-effect semantics. +- Hosted workflows use least privilege, full-SHA action pins with version comments, complete-history/tree Gitleaks, deterministic fake-secret detection, dependency/image scans, and required production/image CycloneDX artifacts with digests. + +## Post-v1 features + +These are useful extensions but are not required by the product thesis. They need new deterministic state and compatibility contracts before implementation: + +- parallel task execution; `foreach` and matrix expansion; loops; routers; sub-workflows; compensation execution; +- structured agent teams and handoffs; +- model token streaming into CLI/workflow state; +- opt-in MCP reconnection and A2A resubmission with explicit remote reconciliation; +- pack dependency resolution, pack lockfiles, remote fetching, publisher signatures, and a versioned plugin ABI; +- vector memory; +- encrypted application-level persistence and external secret-manager adapters; +- reliable monetary cost enforcement when providers expose sufficient authoritative metadata. + +## Explicit non-goals + +- Event triggers and calendars: external schedulers trigger `agentctl`. +- MongoDB migration, distributed scheduling, multi-host execution, and distributed storage: the correctness boundary is one local process and SQLite database. +- An in-process OS sandbox or stronger network isolation: allowlists are defense in depth, while containers/VMs, identities, egress policy, and platform sandboxes own isolation. +- Free-form multi-agent conversation control flow: the compiled workflow remains authoritative. + +## Current operational limits + +- The document API is `v1alpha1`; pin the binary/image version and validate before upgrading. +- Scheduling is sequential (`maxConcurrency: 1`). Separate runs may overlap safely in SQLite, but they can still target the same external resource. Use the external scheduler's overlap controls (`flock`, systemd unit serialization, or Kubernetes `concurrencyPolicy: Forbid`) when effects must not overlap. +- SQLite is local durable state, not a secret vault or distributed lease service. Persist `/state` across container invocations and back it up according to the workflow's recovery needs. +- Filesystem/process/network allowlists are not an OS sandbox. Run untrusted workflows in a restricted container/VM with least-privilege credentials and egress. +- At-most-once model/remote calls can become uncertain in the dispatch/acknowledgement window. Inspect and reconcile externally; use `fork` only when fresh effects are knowingly acceptable. +- Tool-using OpenAI/Azure agents require stored-response continuation. `store: false` is rejected until stateless response-item replay is implemented. +- Anthropic, Google, Azure OpenAI, MCP, and A2A are native and mock-tested in this release, not live-tested. Only the OpenAI GPT-5.6 tool path has live end-to-end evidence. +- The current local OCI runtime, vulnerability-scan, and SBOM evidence is Linux arm64. Linux x64 is configured in the unpushed Ubuntu workflow but has not executed. +- GitHub runner availability, organization action policy, branch protection, and required-check configuration are repository-owner operations and cannot be proven by repository-local lint. +> Canonical source: [`docs/LIMITATIONS.md`](https://github.com/opensourceops/agentctl/blob/main/docs/LIMITATIONS.md). Verified against agentctl commit `0ae1e381b87ea815f0d4ca66689db10bb1129e4a`. diff --git a/src/content/docs/_generated/reference/migration.md b/src/content/docs/_generated/reference/migration.md new file mode 100644 index 0000000..16c5f90 --- /dev/null +++ b/src/content/docs/_generated/reference/migration.md @@ -0,0 +1,19 @@ +--- +title: "Migrate from TypeScript" +description: "Translate supported legacy workflows to strict v1alpha1 YAML." +editUrl: "https://github.com/opensourceops/agentctl/edit/main/docs/MIGRATING_FROM_TYPESCRIPT.md" +--- +1. Preserve a copy of the old workflow and run the archived test suite if its behavior matters: `NODE_OPTIONS=--no-deprecation npm test`. +2. Run `cargo run -p agentctl -- migrate old.yaml --write workflow.yaml`. +3. Run `agentctl check workflow.yaml` and address every diagnostic; the new schema is strict. +4. Replace `module:name` with `action:name`, and define typed provider entries referenced by agents. +5. Move credentials to `{ env: NAME }`; remove API-key arguments and inline tokens. Add environment, provider, host, process, readable workspace, and writable-root policy grants explicitly. +6. Replace the old effectful meaning of replay with `fork`. Use `replay` only when no current external observation is desired. +7. Review model settings: OpenAI is Responses-native, `reasoning.effort` uses current values, tools require strict input/output schemas, and token/tool/turn/time bounds are mandatory/defaulted. +8. Convert MCP to `mcpServers` version `2025-11-25` and A2A to `a2aPeers` version `1.0`; secrets belong in header references. +9. Verify with the fake provider and local mocks. Run any `*-live.yaml` example only as an explicit external test. + +The automatic translator covers simple top-level metadata, modules/actions, tasks, heuristic agents, common approval mode, and initial working memory. It discards unsupported legacy provider endpoint/cache/profile fields with a migration warning rather than preserving unsafe or obsolete semantics. Pack-backed actions, remote transports, MongoDB/vector memory, arbitrary profiles, and custom TypeScript executors must be rewritten against the Rust contracts. + +Use `fixtures/compat/v0/assign.playbook.yaml` as the minimum preserved contract and compare changes against [Compatibility](/agentctl/reference/compatibility/). The old source is non-production reference material; do not add new behavior to it. +> Canonical source: [`docs/MIGRATING_FROM_TYPESCRIPT.md`](https://github.com/opensourceops/agentctl/blob/main/docs/MIGRATING_FROM_TYPESCRIPT.md). Verified against agentctl commit `0ae1e381b87ea815f0d4ca66689db10bb1129e4a`. diff --git a/src/content/docs/_generated/reference/output.md b/src/content/docs/_generated/reference/output.md new file mode 100644 index 0000000..bdb8f7c --- /dev/null +++ b/src/content/docs/_generated/reference/output.md @@ -0,0 +1,42 @@ +--- +title: "Output and exit codes" +description: "Versioned machine output, streams, and stable exit categories." +editUrl: "https://github.com/opensourceops/agentctl/edit/main/docs/reference/CLI_OUTPUT.md" +--- +The [generated CLI reference](/agentctl/reference/cli/) is produced from Clap help by `cargo xtask generate`. This page explains the stable process contract used by scripts and CI. + +## Output modes + +Human mode is the default and may use color on a terminal. JSON mode emits one final object and never includes ANSI color: + +```text +agentctl run workflow.yaml --output json --color never +``` + +The envelope version is `agentctl.dev/cli/v1` and includes `kind`, `ok`, `data`, and `diagnostics`. A successful run includes run ID, trace ID, terminal state, and declared output. A failure writes a versioned error envelope to stderr, with run and trace correlation when a run exists. + +JSONL progress output is not implemented in this release. Event-level information remains available in durable audit and trace records. + +## Exit codes + +| Code | Category | Pipeline response | +| --- | --- | --- | +| `0` | success | Collect outputs and artifacts. | +| `2` | usage or validation | Correct arguments, YAML, references, templates, or capabilities. | +| `3` | policy or approval | Inspect denial or retain state for operator approval. | +| `4` | run failure | Inspect the failed task and effect history. | +| `5` | persistence | Check database compatibility, permissions, corruption, and locking. | +| `6` | provider or protocol | Diagnose authentication, network, native API, MCP, or A2A evidence. | +| `130` | cancellation | Inspect the run before deciding whether resume is safe. | + +Do not automatically retry every nonzero code. A provider, protocol, process, or tool operation may be uncertain after dispatch. + +## Example + +```text +agentctl check examples/v1/hello.yaml --output json --color never +agentctl run examples/v1/hello.yaml --db /tmp/hello.db --output json --color never +``` + +These commands need no credential. `check` writes no runtime database; `run` writes `/tmp/hello.db`. +> Canonical source: [`docs/reference/CLI_OUTPUT.md`](https://github.com/opensourceops/agentctl/blob/main/docs/reference/CLI_OUTPUT.md). Verified against agentctl commit `0ae1e381b87ea815f0d4ca66689db10bb1129e4a`. diff --git a/src/content/docs/_generated/reference/terminology.md b/src/content/docs/_generated/reference/terminology.md new file mode 100644 index 0000000..82b9b9d --- /dev/null +++ b/src/content/docs/_generated/reference/terminology.md @@ -0,0 +1,31 @@ +--- +title: "Terminology" +description: "Use workflow, task, effect, resume, replay, retry, and fork precisely." +editUrl: "https://github.com/opensourceops/agentctl/edit/main/docs/reference/TERMINOLOGY.md" +--- +Use these terms consistently in workflows, documentation, issues, and reviews. + +| Term | Meaning | +| --- | --- | +| Workflow | One versioned declarative YAML document and its compiled graph. | +| Task | One ordered graph node that invokes an action or agent. | +| Action | A typed runtime operation selected directly by a task. | +| Agent | A bounded provider-backed executor for one task. | +| Tool | A strict capability contract that an agent may request. | +| Provider | A native model API adapter behind provider-neutral contracts. | +| Effect | A durably identified operation that observes or changes state outside pure computation. | +| Run | One durable execution, check, replay, or fork record. | +| Attempt | One bounded execution attempt for a task. | +| Resume | Continue the same non-terminal run using durable progress. | +| Recorded replay | Create a new record from terminal stored results without calling executors. | +| Retry | Start another bounded attempt for a task after a definitive retry-safe failure. | +| Fork | Create a child run that intentionally permits fresh effects. | +| Rerun | Informal term. Prefer fork when referring to the supported fresh-run operation. | +| Approval | A durable operator decision required before an effect may continue. | +| Checkpoint | A versioned, checksummed snapshot used for recovery. | +| Working memory | One run-local JSON object changed by explicit memory actions. | +| Long-term memory | Namespaced SQLite values shared across runs and managed by retention. | +| Pack | A local versioned manifest and reviewed reusable content with integrity checking. | + +Do not use resume, replay, retry, and fork interchangeably. None of them means exactly-once execution. +> Canonical source: [`docs/reference/TERMINOLOGY.md`](https://github.com/opensourceops/agentctl/blob/main/docs/reference/TERMINOLOGY.md). Verified against agentctl commit `0ae1e381b87ea815f0d4ca66689db10bb1129e4a`. diff --git a/src/content/docs/_generated/reference/yaml.md b/src/content/docs/_generated/reference/yaml.md new file mode 100644 index 0000000..ba7e46f --- /dev/null +++ b/src/content/docs/_generated/reference/yaml.md @@ -0,0 +1,112 @@ +--- +title: "YAML reference" +description: "Readable field groups, defaults, validation, and examples." +editUrl: "https://github.com/opensourceops/agentctl/edit/main/docs/reference/YAML.md" +--- +The generated [workflow JSON Schema](/agentctl/downloads/workflow.schema.json) is authoritative. This page explains the field groups, defaults, and validation behavior that matter when writing YAML. + +## Document envelope + +| Field | Required | Meaning | +| --- | --- | --- | +| `apiVersion` | yes | Must be `agentctl.dev/v1alpha1`. | +| `kind` | yes | Must be `Workflow`. | +| `metadata.name` | yes | Stable human-readable workflow name. | +| `metadata.description` | no | Short purpose. | +| `metadata.labels` | no | String metadata map. | +| `spec` | yes | Workflow declarations and ordered tasks. | + +Unknown fields fail. Documents, ordinary input files, packs, direct reads, existing write targets, and instruction files are limited to 1 MiB. + +## Workflow declarations + +| `spec` field | Default | Purpose | +| --- | --- | --- | +| `inputs` | `{}` | Default JSON values supplied to templates. | +| `outputs` | `{}` | Final values selected from inputs, memory, variables, or task outputs. | +| `providers` | `{}` | Named fake, OpenAI, Azure OpenAI, Anthropic, or Google adapters. | +| `agents` | `{}` | Named bounded model executors. | +| `actions` | `{}` | Named deterministic or protocol actions. | +| `tools` | `{}` | Strict model-callable tool contracts. | +| `tasks` | required list | Ordered graph nodes. | +| `policy` | safe defaults | Filesystem, process, network, provider, tool, and approval rules. | +| `memory` | empty | Initial working memory and optional SQLite long-term namespace. | +| `mcpServers` | `{}` | Pinned MCP Streamable HTTP peers. | +| `a2aPeers` | `{}` | Pinned A2A Agent Card peers. | +| `packs` | `[]` | Local reviewed pack references. | +| `runtime` | sequential defaults | Runtime controls. `maxConcurrency` must be `1`. | +| `output` | defaults | Output presentation contract. | + +## Tasks + +Each task requires `id` and `uses`. `uses` is `action:name` or `agent:name`. + +| Field | Default | Validation | +| --- | --- | --- | +| `needs` | `[]` | Every ID must exist; cycles fail. | +| `when` | true | Constrained boolean/equality expression. | +| `vars` | `{}` | Task-local JSON values. | +| `with` | `{}` | Typed action or agent input. | +| `retry` | bounded default | Only definitive retry-safe failures may repeat. | +| `timeoutSeconds` | action or agent default | Must be within the implementation bound. | +| failure behavior | fail | Unsupported dynamic control flow is rejected. | + +Ready tasks run in YAML declaration order. There is no `foreach`, matrix, loop, router, sub-workflow, handler, or parallel group in this version. + +## Agents + +An agent requires `provider` and `model`. Defaults are `maxTurns: 8`, `maxToolCalls: 16`, `maxOutputTokens: 2048`, and `timeoutSeconds: 120`. Set tighter values for known work. Optional fields include instructions or `instructionsFile`, variables, tools, retry, reasoning, structured output, usage limits, and provider-specific options. + +Capability negotiation happens during compilation. A provider must explicitly support every requested feature. + +## Actions + +Supported action kinds: + +- `builtin.assign` +- `builtin.assert` +- `builtin.read` +- `builtin.write` +- `builtin.shell.exec` +- `builtin.memory.read` +- `builtin.memory.write` +- `builtin.long_term_memory.read` +- `builtin.long_term_memory.write` +- `mcp.call` +- `a2a.delegate` + +`builtin.shell.exec` uses a direct executable and argument list. Output defaults are 1 MiB per stream and 2 MiB combined, with a maximum configured value of 16 MiB. Its maximum timeout is 86,400 seconds. + +## Tools + +A tool requires `kind`, description, strict input and output JSON Schema, capability, risk, effect class, idempotency, retry safety, timeout, and approval behavior. Built-in tool executors are workspace read, workspace write, and echo. Declared semantics must match the built-in kind. + +## Templates and conditions + +Allowed template roots are: + +```text +${{ inputs.path }} +${{ vars.path }} +${{ memory.path }} +${{ tasks.task-id.output.path }} +``` + +An exact template preserves objects, arrays, booleans, numbers, strings, and null. Text interpolation accepts scalars. Conditions add `not` and equality against a JSON literal or string. There is no code execution, arithmetic, arbitrary function, indexing, or implicit dependency. + +## Secret references + +Provider credentials, action environment values, and protocol headers use `{ env: NAME }`. The environment name is stored in the workflow, but the value is resolved only at the adapter boundary and must be allowed by policy. + +## Example and validation + +See `examples/v1/dataflow.yaml` for typed inputs and task outputs. From the repository root: + +```text +agentctl check examples/v1/dataflow.yaml +agentctl plan examples/v1/dataflow.yaml +agentctl run examples/v1/dataflow.yaml --db /tmp/dataflow.db --output json --color never +``` + +Related guides: [Workflow authoring](/agentctl/guides/workflow-authoring/), [Policies](/agentctl/concepts/policies/), [Tools](/agentctl/concepts/tools/), and [Workflow DSL](/agentctl/concepts/workflow-model/). +> Canonical source: [`docs/reference/YAML.md`](https://github.com/opensourceops/agentctl/blob/main/docs/reference/YAML.md). Verified against agentctl commit `0ae1e381b87ea815f0d4ca66689db10bb1129e4a`. diff --git a/src/content/docs/_generated/security/index.md b/src/content/docs/_generated/security/index.md new file mode 100644 index 0000000..24dfe98 --- /dev/null +++ b/src/content/docs/_generated/security/index.md @@ -0,0 +1,28 @@ +--- +title: "Security model" +description: "Review controls, trust boundaries, and residual risks." +editUrl: "https://github.com/opensourceops/agentctl/edit/main/docs/SECURITY.md" +--- +## Controls + +- Workflow parsing is strict, bounded to 1 MiB, source-aware, and has no executable expression language. +- Environment-backed primary credentials are resolved immediately before provider dispatch; custom header references are resolved while constructing the adapter, before a run or database is created. There are no API-key flags. Provider/protocol response JSON keys and values, provider request IDs, errors, subprocess output, and traces redact every known configured secret value before persistence or output. +- Canonical read/write roots reject `..` and symlink escape. Writes use temporary files and rename. +- Processes require an allowed executable basename, direct argv, cleared environment, selected variables, validated output/timeout bounds, concurrent stdout/stderr draining, and cancellation. Output-limit, timeout, and cancellation paths terminate and reap the child; diagnostics are bounded and omit captured output when secret environment values are present. +- Network destinations require an exact/wildcard host grant. Provider and protocol clients disable redirects and use rustls. +- Tool input and output JSON Schemas are enforced. Models, MCP annotations, A2A cards, remote schemas, and results cannot grant capabilities. +- Requests are ledgered before effects. Global denial or approval cannot be weakened by a tool contract. Approval is durable; non-interactive mode pauses with exit `3` or uses an explicitly stricter deny/fail mode, never a prompt or implicit approval. +- SQLite uses foreign keys, WAL/busy timeout, version checks, checksummed checkpoints, and mode `0600` on Unix. +- Packs require a supported manifest/version and can be checked against SHA-256 integrity. +- The workspace forbids unsafe Rust, denies warnings, locks dependencies, checks licenses/sources/advisories, scans secret patterns, and keeps live tests outside CI. + +## Limitations + +Path and executable allowlists are not a sandbox. A permitted program can access anything the operating-system identity can access. Host allowlists do not defend against every DNS rebinding, proxy, local-service, or compromised endpoint scenario; use network isolation for hostile workflows. SHA-256 integrity establishes sameness, not author identity. SQLite protects local correctness but is not encrypted and is not a secret store. + +Prompts, file content, model output, remote artifacts, and tool output may be confidential or malicious. Treat them as data, validate before mutation, minimize trace export, and isolate untrusted automation. Workflow, input, pack, direct-read, existing-write-target, and instruction files are capped at 1 MiB. Approval is a decision point, not proof that an operation is safe. At-most-once recovery may leave an uncertain external outcome for human reconciliation. + +MCP reconnection and A2A resubmission are intentionally not automatic. Streaming is bounded but completed results, not token deltas, enter workflow state. Windows cannot express Unix database mode bits; rely on the user profile ACL and CI tests. + +Report vulnerabilities privately to the repository maintainer. Do not include credentials, database contents, or production prompts in a report. +> Canonical source: [`docs/SECURITY.md`](https://github.com/opensourceops/agentctl/blob/main/docs/SECURITY.md). Verified against agentctl commit `0ae1e381b87ea815f0d4ca66689db10bb1129e4a`. diff --git a/src/content/docs/_generated/security/threat-model.md b/src/content/docs/_generated/security/threat-model.md new file mode 100644 index 0000000..fa462fd --- /dev/null +++ b/src/content/docs/_generated/security/threat-model.md @@ -0,0 +1,29 @@ +--- +title: "Threat model" +description: "Map assets and threats to controls and residual risk." +editUrl: "https://github.com/opensourceops/agentctl/edit/main/docs/THREAT_MODEL.md" +--- +## Assets and boundaries + +Assets are workspace files, allowed environment secrets, provider accounts, external systems reached by tools, workflow history, prompts/results, approvals, and the integrity of deterministic scheduling. Boundaries are the YAML/pack parser, filesystem/process/network executors, provider APIs, MCP servers, A2A peers, SQLite, trace exporters, and dependencies. + +The local operator and reviewed binary are trusted. Workflow authors are only as trusted as policy grants. Models, file content, remote descriptions/results, pack content without independent provenance, and all network peers are untrusted. The host OS, CA store, and Rust dependency supply chain are assumed but monitored dependencies. + +| Threat | Control | Residual risk | +| --- | --- | --- | +| Malicious YAML/template causes code execution or resource exhaustion | strict fields, constrained paths/equality, 1 MiB bound, fuzzing | deeply nested valid data remains bounded mainly by parser behavior | +| Path traversal or symlink escape | canonical roots and focused tests | TOCTOU is possible if another process swaps paths; isolate hostile workspaces | +| Secret exfiltration through CLI/log/database/trace | env references, no key flags, allowlists, redaction, secret scan | authorized tools can deliberately transmit permitted data | +| Command injection | direct argv, no shell, cleared env, executable allowlist | an allowed executable may interpret malicious arguments | +| SSRF/redirect bypass | URL parse, host allowlist, disabled redirects, tests | DNS/proxy behavior needs external network containment for hostile inputs | +| Prompt injection grants tool authority | policy outside model, visible tool set, schema validation, approvals | an operator may approve deceptive content | +| MCP annotation or A2A card claims safety | always treated as untrusted metadata | compromised authorized peer can return malicious but schema-valid data | +| Crash duplicates an external mutation | request-before-start ledger, uncertain state, no silent retry | external action may have happened without acknowledgement | +| Replay reissues effects | recorded replay uses stored terminal output only | replayed data may no longer reflect current reality, by design | +| Approval bypass in CI | non-interactive durable pause or explicit deny/fail; operator resolution | stolen database write access is outside application trust boundary | +| Pack substitution | SHA-256 verification and semver/API checks | digest source/signature trust is manual | +| Corrupt or future state misexecutes | schema/version/checksum/deserialization failures | SQLite file deletion or rollback by an attacker is not prevented | +| Dependency compromise | locked registry-only deps, cargo-deny, license/source checks | registry compromise and zero-days remain possible | + +No unresolved critical or high-severity defect is knowingly accepted for the implemented boundary. Deferred sandboxing, signature verification, distributed concurrency, and encrypted storage are explicit product limitations, not implied controls. +> Canonical source: [`docs/THREAT_MODEL.md`](https://github.com/opensourceops/agentctl/blob/main/docs/THREAT_MODEL.md). Verified against agentctl commit `0ae1e381b87ea815f0d4ca66689db10bb1129e4a`. diff --git a/src/content/docs/_generated/troubleshooting/index.md b/src/content/docs/_generated/troubleshooting/index.md new file mode 100644 index 0000000..677d6f6 --- /dev/null +++ b/src/content/docs/_generated/troubleshooting/index.md @@ -0,0 +1,138 @@ +--- +title: "Troubleshooting" +description: "Diagnose validation, provider, policy, state, replay, and container failures." +editUrl: "https://github.com/opensourceops/agentctl/edit/main/docs/guides/TROUBLESHOOTING.md" +--- +Start with the exit code, then inspect the versioned error envelope and durable run state. Do not share provider credentials, complete databases, private prompts, or confidential artifacts in a public issue. + +## Decision path + +```mermaid +flowchart TD + A[Command failed] --> B{Was a run ID returned?} + B -->|No| C[Check syntax, paths, input, and authentication references] + B -->|Yes| D[Inspect the run and trace ID] + D --> E{Pending approval?} + E -->|Yes| F[Review and resolve approval, then resume] + E -->|No| G{Uncertain effect?} + G -->|Yes| H[Reconcile the external system before any fork] + G -->|No| I[Use task, effect, provider, and audit evidence] +``` + +The path separates pre-run validation from durable runtime failures. An uncertain effect always requires external reconciliation. + +## Validation error, exit 2 + +**Symptom:** `check`, `plan`, or `run` reports invalid YAML, a missing reference, unsupported capability, or bad template. + +**Likely cause:** The strict `v1alpha1` schema rejected a field or the compiler could not prove the graph and capabilities. + +**Diagnose:** + +```text +agentctl check workflow.yaml --output json --color never +agentctl schema --write /tmp/workflow.schema.json --output json --color never +``` + +**Expected evidence:** A source-aware diagnostic with a code and field location. + +**Resolve:** Fix the document instead of suppressing the diagnostic. Validate again before running. + +## Provider authentication failure + +**Symptom:** Exit `6` reports a missing environment reference or authentication response. + +**Likely cause:** The workflow names a credential environment variable that is absent or the provider rejected it. + +**Diagnose:** + +```text +agentctl auth check workflow.yaml --output json --color never +agentctl providers inspect workflow.yaml --output json --color never +``` + +**Expected evidence:** The environment variable name and provider capability, never the secret value. + +**Resolve:** Inject the named secret through the shell, scheduler, or CI secret facility. Do not add a key to YAML or a command argument. + +## Provider capability mismatch + +**Symptom:** Compilation rejects structured output, tools, reasoning, prompt cache, continuation, or a usage limit. + +**Likely cause:** The selected provider does not declare the requested feature, or an option is invalid. + +**Diagnose:** Run `providers inspect` and compare the [provider matrix](/agentctl/providers/). + +**Resolve:** Remove the unsupported request, choose a capable provider, or change the workflow design. Do not assume provider APIs are interchangeable. + +## Tool failure or policy denial + +**Symptom:** Exit `3` or `4`, with a denied capability, invalid tool input/output, path error, host denial, or process denial. + +**Diagnose:** + +```text +agentctl inspect RUN_ID --db .agentctl/runtime.db --output json --color never +``` + +**Expected evidence:** Tool ID, capability, effect risk, policy decision, and redacted input. + +**Resolve:** Correct the schema or implementation. Expand a policy grant only after reviewing the exact resource and risk. + +## Pending approval + +**Symptom:** A non-interactive run exits `3` and state is paused. + +**Diagnose:** `agentctl approvals list RUN_ID --db PATH`. + +**Resolve:** Review the proposed effect. Approve or reject it with an actor and reason, then resume the same run and database. + +## Database locked or persistence error + +**Symptom:** Exit `5` reports a SQLite open, lock, corruption, or future-schema error. + +**Likely cause:** Wrong permissions, a read-only mount, lock contention beyond the five-second busy timeout, damaged files, or a newer schema. + +**Diagnose:** + +```text +agentctl db stats --db /state/runtime.db --output json --color never +ls -ld /state /state/runtime.db +``` + +**Expected evidence:** A readable and writable state directory owned by the runtime UID. A newer schema is reported explicitly. + +**Resolve:** Correct ownership and mounts, serialize conflicting maintenance, restore a consistent backup, or use a compatible binary. Never edit SQLite tables by hand as a first response. + +## Resume or replay failure + +**Symptom:** Resume rejects a terminal run or unresolved effect, or replay rejects a non-terminal source. + +**Diagnose:** Inspect the source run, tasks, effects, and approvals. + +**Resolve:** Resume only a safe non-terminal run. Replay only a terminal run. Reconcile uncertain external state before an explicit fork. + +## Container permission or read-only failure + +**Symptom:** The image cannot create `/state/runtime.db` or write `/artifacts`. + +**Likely cause:** Host directories are not writable by UID/GID 65532 or the writable mounts are missing. + +**Resolve:** Provision and mount `/state` and `/artifacts` with appropriate ownership. Keep the root filesystem read-only and use `/tmp` as a small `noexec,nosuid` tmpfs. + +## Corporate CA failure + +**Symptom:** The image build cannot verify the intercepted dependency-network certificate. + +**Resolve:** Pass a reviewed CA bundle through BuildKit secret `agentctl_ca` or `AGENTCTL_BUILD_CA_FILE` for the acceptance wrapper. Never disable TLS verification or commit the certificate. + +## Windows path issue + +**Symptom:** A workspace or database path parses differently from a Unix example. + +**Resolve:** Use native absolute paths and quote paths with spaces. Windows cannot express Unix database mode bits, so rely on the user profile ACL. Hosted Windows evidence is configured but still pending for the current candidate. + +## Safe issue report + +Include the exact `agentctl version`, operating system, redacted command, exit code, diagnostic code, workflow API version, minimal non-secret workflow, and relevant run/trace IDs. Share a narrow redacted `inspect` excerpt only when needed. Report security problems through the private process in [Security](/agentctl/security/), not a public issue. +> Canonical source: [`docs/guides/TROUBLESHOOTING.md`](https://github.com/opensourceops/agentctl/blob/main/docs/guides/TROUBLESHOOTING.md). Verified against agentctl commit `0ae1e381b87ea815f0d4ca66689db10bb1129e4a`. diff --git a/src/content/docs/deployment-model.md b/src/content/docs/deployment-model.md new file mode 100644 index 0000000..95a82e1 --- /dev/null +++ b/src/content/docs/deployment-model.md @@ -0,0 +1,40 @@ +--- +title: Choose a deployment model +description: Select local, scheduled, container, CI/CD, or Kubernetes execution without changing the workflow runtime contract. +--- + +`agentctl` owns one bounded process and its local SQLite history. Another platform may own the trigger, runner, secret injection, state volume, artifact collection, timeout, and overlap policy. + +## Local terminal + +Choose local execution while authoring, reviewing plans, resolving interactive approvals, or inspecting recovery evidence. Use explicit database and workspace paths when the run will outlive a throwaway experiment. + +Next: [Local operation](/agentctl/guides/local-operation/). + +## Cron or systemd + +Choose an operating-system scheduler for one host. Use absolute paths, an empty or controlled environment, JSON output, an overall timeout, restrictive state permissions, log rotation, and an external overlap lock. + +Next: [Scheduled execution](/agentctl/operations/scheduled/). + +## OCI container + +Choose the generic image contract when you need a repeatable non-root process with a read-only root filesystem. Mount `/config` and `/workspace` read-only, then retain writable `/state` and `/artifacts`. + +Next: [Container guide](/agentctl/guides/container/). + +## CI/CD + +Choose a pipeline when your platform already owns checkout, triggers, secrets, logs, and artifacts. Consume one versioned JSON envelope and stable exit code. Retain protected state when approval or recovery matters. + +Next: [CI/CD integration](/agentctl/guides/ci-cd/). + +## Kubernetes Job or CronJob + +Choose a Job for one invocation or a CronJob for a cluster-managed schedule. Use a ConfigMap for reviewed workflow files, a Secret environment reference for credentials, persistent storage when resume or replay matters, a hardened security context, `backoffLimit: 0`, and `concurrencyPolicy: Forbid` when overlapping effects are unsafe. + +Kubernetes examples in the current documentation are reviewed, not hosted execution evidence for this candidate. + +## What agentctl does not provide + +It is not a scheduling service, distributed lease, runner fleet, secret store, or artifact registry. Adding an external scheduler does not make SQLite a distributed database or policy allowlists an operating-system sandbox. diff --git a/src/content/docs/examples/index.md b/src/content/docs/examples/index.md new file mode 100644 index 0000000..2a9c301 --- /dev/null +++ b/src/content/docs/examples/index.md @@ -0,0 +1,28 @@ +--- +title: Examples and use cases +description: Start from complete checked workflows for repository review, release gates, scheduled runs, CI, approvals, replay, and providers. +--- + +Every prominent YAML block on this site is imported from a checked file in the `agentctl` repository. Normal verification uses deterministic actions, the fake provider, or local protocol mocks. Live provider examples are opt-in and labeled. + +## Choose an example + +- [Repository audit](/agentctl/examples/repository-audit/): a bounded agent reads a fixture, then deterministic tasks verify and write the report. +- [Release readiness](/agentctl/examples/release-readiness/): deterministic gates must pass before bounded analysis runs. +- [Scheduled operational review](/agentctl/examples/scheduled-review/): an external scheduler invokes one durable non-interactive run. +- [CI quality gate](/agentctl/examples/ci-quality-gate/): typed evidence becomes a stable exit code and JSON result. +- [Approval-gated action](/agentctl/examples/approval-gated/): policy pauses a mutation for operator review. +- [Offline recorded replay](/agentctl/examples/recorded-replay/): a terminal result is reconstructed without executors. +- [Provider portability](/agentctl/examples/provider-portability/): one neutral agent shape uses fake and OpenAI configurations with distinct evidence levels. + +## Verification levels + +| Label | Meaning | +| --- | --- | +| Deterministic | Runs locally without a model or remote protocol. | +| Mock-backed | Uses the real adapter or agent loop against deterministic local behavior. | +| Retained live evidence | A bounded live run was recorded previously and sanitized. | +| Static validation | YAML or platform syntax is checked, but the hosted system did not execute it. | +| Opt-in live | Requires an explicit credential and network call outside normal verification. | + +Run `cargo xtask docs-verify` in the canonical repository to validate documentation examples without provider credentials. diff --git a/src/content/docs/index.mdx b/src/content/docs/index.mdx new file mode 100644 index 0000000..5843f3c --- /dev/null +++ b/src/content/docs/index.mdx @@ -0,0 +1,30 @@ +--- +title: Control agent workflows without giving up control +description: Declarative YAML combines deterministic automation, bounded model reasoning, explicit policy, and durable local state. +template: splash +editUrl: false +hero: + tagline: agentctl compiles reviewed YAML into a deterministic task graph, bounds every model task, records effects before execution, and keeps recovery state in local SQLite. + actions: + - text: Get started + link: /agentctl/getting-started/ + icon: right-arrow + variant: primary + - text: View on GitHub + link: https://github.com/opensourceops/agentctl + icon: external + variant: minimal +head: + - tag: meta + attrs: + property: og:title + content: agentctl | Deterministic workflows for bounded agents + - tag: meta + attrs: + property: og:description + content: Run declarative agent workflows with explicit policy, durable state, resume, and recorded replay. +--- + +import Homepage from '../../components/Homepage.astro'; + + diff --git a/src/content/docs/learning-paths.md b/src/content/docs/learning-paths.md new file mode 100644 index 0000000..1142fb4 --- /dev/null +++ b/src/content/docs/learning-paths.md @@ -0,0 +1,46 @@ +--- +title: Learning paths +description: Follow a short path for evaluation, first use, workflow authoring, operations, CI/CD, or contribution. +--- + +## I am evaluating agentctl + +1. Read [Why agentctl](/agentctl/why-agentctl/). +2. Review the [security model](/agentctl/security/) and [limitations](/agentctl/reference/limitations/). +3. Compare [provider and tool capabilities](/agentctl/reference/capabilities/). +4. Inspect the [architecture diagrams](/agentctl/architecture/diagrams/). + +## I want to run my first workflow + +1. [Install from source](/agentctl/getting-started/installation/). +2. Complete the credential-free [Getting started](/agentctl/getting-started/) tutorial. +3. Run the [first bounded agent workflow](/agentctl/getting-started/first-agent/). +4. Learn [local operation](/agentctl/guides/local-operation/). + +## I want to author workflows + +1. Learn to [author a workflow](/agentctl/guides/workflow-authoring/). +2. Read the [YAML reference](/agentctl/reference/yaml/). +3. Study [tools and effects](/agentctl/concepts/tools/) and [policies and approvals](/agentctl/concepts/policies/). +4. Start from a [verified use case](/agentctl/examples/). + +## I want to operate agentctl + +1. [Choose a deployment model](/agentctl/deployment-model/). +2. Understand [durable execution](/agentctl/durable-execution/). +3. Configure [logs and observability](/agentctl/observability/). +4. Keep the [troubleshooting decision path](/agentctl/troubleshooting/) close to runbooks. + +## I want to integrate agentctl into CI/CD + +1. Read the [container contract](/agentctl/guides/container/). +2. Apply the [CI/CD integration guide](/agentctl/guides/ci-cd/). +3. Review the [CI quality gate example](/agentctl/examples/ci-quality-gate/). +4. Plan protected state retention for approvals and recovery. + +## I want to contribute + +1. Read the [contributor guide](/agentctl/contributing/). +2. Learn the [Rust workspace and effect boundaries](/agentctl/contributing/developer-guide/). +3. Run the [testing strategy](/agentctl/contributing/testing/). +4. Use the focused guide for an [action or tool](/agentctl/contributing/add-action/), [provider](/agentctl/contributing/add-provider/), [migration](/agentctl/contributing/add-migration/), or [documentation](/agentctl/contributing/documentation/) change. diff --git a/src/content/docs/overview.md b/src/content/docs/overview.md new file mode 100644 index 0000000..9b1b0e9 --- /dev/null +++ b/src/content/docs/overview.md @@ -0,0 +1,33 @@ +--- +title: Overview +description: Understand the problem agentctl solves, its control model, current maturity, and the fastest path to useful evidence. +--- + +`agentctl` runs reviewed declarative workflows that combine deterministic actions with narrowly bounded model reasoning. The graph, policy, state machine, effect ledger, approvals, and recovery rules stay outside the model. + +## Choose your next step + +- **Evaluating the project:** Read [Why agentctl](/agentctl/why-agentctl/) and [current limitations](/agentctl/reference/limitations/). +- **Running it now:** Complete [Getting started](/agentctl/getting-started/) with no provider credential. +- **Trying a tool-using agent:** Run the [first agent workflow](/agentctl/getting-started/first-agent/) with the deterministic fake provider. +- **Authoring YAML:** Learn the [workflow model](/agentctl/guides/workflow-authoring/) before reading the field reference. +- **Operating it:** Choose a [deployment model](/agentctl/deployment-model/), then review [durable execution](/agentctl/durable-execution/). +- **Contributing:** Start with the [developer guide](/agentctl/contributing/developer-guide/). + +## The control model + +1. Strict YAML declares inputs, outputs, tasks, dependencies, actions, agents, tools, policies, memory, and protocols. +2. The compiler validates references and provider capabilities, then creates a declaration-ordered DAG and plan digest. +3. The runtime executes one ready task at a time. Model tasks have explicit tool, turn, token, and time limits. +4. Non-pure effects are recorded before dispatch. Important state changes commit with checkpoints and audit evidence. +5. Resume reuses confirmed work, recorded replay calls no executor, and fork makes fresh effects explicit. + +## Current maturity + +The workflow API is `agentctl.dev/v1alpha1`. The current source is production-oriented alpha software preparing for hosted release-candidate validation. Deterministic and fake-provider journeys have executable local evidence. Native provider and protocol evidence varies by adapter and is stated in the [capability matrices](/agentctl/reference/capabilities/). + +This site does not claim stable v1 compatibility, exactly-once execution, an operating-system sandbox, distributed scheduling, parallel task execution, or live validation across every provider. + +## Source of truth + +Technical behavior comes from the [`agentctl` repository](https://github.com/opensourceops/agentctl). This site imports canonical guides, checked examples, generated CLI help, and the generated workflow schema during each build. The source commit is available in the homepage footer and at [`/agentctl/meta/agentctl-source.json`](/agentctl/meta/agentctl-source.json). diff --git a/src/content/docs/why-agentctl.md b/src/content/docs/why-agentctl.md new file mode 100644 index 0000000..3542b80 --- /dev/null +++ b/src/content/docs/why-agentctl.md @@ -0,0 +1,34 @@ +--- +title: Why agentctl +description: See where deterministic agent workflows fit beside scripts, chat agents, workflow engines, configuration management, and CI/CD. +--- + +The useful boundary is not “agents instead of automation.” It is deterministic automation that can delegate a bounded judgment task without giving the model control of authority, graph structure, persistence, or recovery. + +## The problem with ordinary agent scripts + +A direct model call is easy to start. It becomes harder to review when prompts imply authority, tool schemas drift, retry can duplicate an effect, an interrupted process loses progress, or a pipeline needs one stable result. Adding ad hoc state and approval logic can turn a small script into a hidden workflow engine. + +`agentctl` makes those concerns explicit in one strict document and one durable runtime: + +- declaration-ordered graph compilation; +- typed inputs, outputs, templates, actions, agents, and tools; +- policy checks outside model prompts; +- effect identity and conservative uncertainty; +- durable approvals, checkpoints, audit events, and trace correlation; +- resume, recorded replay, and explicit fork semantics; +- native provider adapters behind one neutral core. + +## Related approaches + +| Approach | Choose it when | Add agentctl when | +| --- | --- | --- | +| Shell script calling a model | The task is small, disposable, and has no recovery or policy need. | The call becomes one step in a reviewed graph with effects and durable evidence. | +| Chat-agent framework | Interaction and dynamic conversation are the product. | A reviewed workflow, not a conversation, must own control flow. | +| General workflow engine | You need broad scheduling, distributed workers, or many integration types. | A task needs bounded model or tool semantics and a local correctness record. | +| Ansible | You need configuration management and convergent idempotent resources. | You need a bounded reasoning step, not a replacement for configuration management. | +| CI/CD pipeline | You need runners, triggers, secret injection, and artifact retention. | One pipeline step needs strict agent workflow execution and recovery semantics. | + +## Reasons not to choose it + +Do not choose the current release when you require a stable workflow API, distributed execution, parallel tasks, a hosted scheduler, a visual builder, an in-process sandbox, encrypted persistence, or a live support claim for every provider. Read [Limitations](/agentctl/reference/limitations/) before adopting the `v1alpha1` API. diff --git a/src/data/agentctl-source.json b/src/data/agentctl-source.json new file mode 100644 index 0000000..0664c59 --- /dev/null +++ b/src/data/agentctl-source.json @@ -0,0 +1,9 @@ +{ + "product": "agentctl", + "version": "0.2.0", + "workflowApi": "agentctl.dev/v1alpha1", + "commit": "0ae1e381b87ea815f0d4ca66689db10bb1129e4a", + "dirty": false, + "sourceRepository": "https://github.com/opensourceops/agentctl", + "importedFiles": 56 +} diff --git a/src/data/home-workflow.yaml b/src/data/home-workflow.yaml new file mode 100644 index 0000000..ff6d5d4 --- /dev/null +++ b/src/data/home-workflow.yaml @@ -0,0 +1,78 @@ +apiVersion: agentctl.dev/v1alpha1 +kind: Workflow +metadata: + name: acceptance-mock-tool +spec: + inputs: + reportPath: artifacts/mock-report.txt + outputs: + verdict: "${{ tasks.inspect.output.text }}" + artifact: "${{ inputs.reportPath }}" + providers: + fake: + kind: fake + policy: + workspaceRoot: . + writableRoots: [artifacts] + approval: never + tools: + read_fixture: + kind: builtin.workspace.read + description: Read a UTF-8 file inside the authorized workspace. + inputSchema: + type: object + properties: + path: { type: string } + required: [path] + additionalProperties: false + outputSchema: + type: object + properties: + path: { type: string } + content: { type: string } + bytes: { type: integer } + sha256: { type: string } + required: [path, content, bytes, sha256] + additionalProperties: false + capability: filesystem.read + risk: low + effectClass: observe + idempotency: idempotent + retrySafe: true + timeoutSeconds: 5 + approval: never + agents: + inspector: + provider: fake + model: scripted + instructions: Read the fixture and report its marker. + tools: [read_fixture] + maxTurns: 2 + maxToolCalls: 1 + maxOutputTokens: 32 + timeoutSeconds: 5 + providerOptions: + toolInput: { path: fixture/service.txt } + finalText: AGENTCTL_MOCK_FIXTURE_VERIFIED + actions: + assert: + kind: builtin.assert + write: + kind: builtin.write + tasks: + - id: inspect + uses: agent:inspector + with: + prompt: Use read_fixture before answering. + - id: verify + uses: action:assert + needs: [inspect] + with: + that: "${{ tasks.inspect.output.text == 'AGENTCTL_MOCK_FIXTURE_VERIFIED' }}" + message: the mock provider did not complete its tool continuation + - id: report + uses: action:write + needs: [inspect, verify] + with: + path: "${{ inputs.reportPath }}" + content: "${{ tasks.inspect.output.text }}" diff --git a/src/styles/custom.css b/src/styles/custom.css new file mode 100644 index 0000000..6d895ce --- /dev/null +++ b/src/styles/custom.css @@ -0,0 +1,138 @@ +@layer starlight, agentctl; + +@layer agentctl { + :root { + --sl-font: ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; + --sl-font-mono: "SFMono-Regular", Consolas, "Liberation Mono", monospace; + --sl-color-accent-low: #ccfbf1; + --sl-color-accent: #0f766e; + --sl-color-accent-high: #115e59; + --sl-color-white: #102a2d; + --sl-color-gray-1: #234247; + --sl-color-gray-2: #466166; + --sl-color-gray-3: #586f73; + --sl-color-gray-4: #a9b8ba; + --sl-color-gray-5: #d6dfdf; + --sl-color-gray-6: #edf1f1; + --sl-color-black: #f8faf9; + --sl-color-bg-nav: rgba(248, 250, 249, 0.96); + --sl-color-bg-sidebar: #f3f6f5; + --sl-color-hairline: #dce4e3; + --sl-content-width: 52rem; + } + + :root[data-theme='dark'] { + --sl-color-accent-low: #123c39; + --sl-color-accent: #5eead4; + --sl-color-accent-high: #99f6e4; + --sl-color-white: #f1f7f6; + --sl-color-gray-1: #d5e2e0; + --sl-color-gray-2: #a5b9b6; + --sl-color-gray-3: #809895; + --sl-color-gray-4: #516b68; + --sl-color-gray-5: #304845; + --sl-color-gray-6: #1a302e; + --sl-color-black: #0b1918; + --sl-color-bg-nav: rgba(11, 25, 24, 0.96); + --sl-color-bg-sidebar: #102321; + --sl-color-hairline: #29413f; + } + + :focus-visible { + outline: 3px solid var(--sl-color-accent); + outline-offset: 3px; + } + + a { text-underline-offset: 0.18em; } + code { font-size: 0.9em; } + .sl-markdown-content h2 { margin-top: 2.8rem; } + .sl-markdown-content h3 { margin-top: 2rem; } + .sl-markdown-content table { font-size: 0.9rem; } + .sl-markdown-content th { text-align: left; } + .sl-markdown-content pre { max-height: 42rem; } + .mermaid { overflow-x: auto; padding: 1rem 0; } + .mermaid svg { height: auto; max-width: 100%; } + + [data-has-hero] main { --sl-content-width: 76rem; } + [data-has-hero] .content-panel { padding-inline: clamp(1rem, 3vw, 3rem); } + [data-has-hero] .hero { padding-block: clamp(3rem, 8vw, 6rem); } + [data-has-hero] .hero h1 { font-size: clamp(2.6rem, 6vw, 5.6rem); letter-spacing: -0.055em; line-height: 0.98; max-width: 14ch; } + [data-has-hero] .hero .tagline { font-size: clamp(1rem, 2vw, 1.25rem); line-height: 1.6; max-width: 44rem; } + + .landing { margin-top: 1rem; } + .landing section { scroll-margin-top: 7rem; } + .trust-strip { border-block: 1px solid var(--sl-color-hairline); display: flex; flex-wrap: wrap; gap: 0.7rem 2rem; justify-content: center; padding: 1rem; } + .trust-strip span { color: var(--sl-color-gray-2); font-size: 0.75rem; font-weight: 700; letter-spacing: 0.07em; text-transform: uppercase; } + .section { border-bottom: 1px solid var(--sl-color-hairline); padding: clamp(4rem, 8vw, 7rem) 0; } + .section-heading { display: grid; gap: 1rem; margin-bottom: 2.5rem; max-width: 56rem; } + .section-heading.narrow { max-width: 46rem; } + .section-heading h2, .section > div > h2, .final-cta h2 { font-size: clamp(2rem, 4vw, 3.3rem); letter-spacing: -0.045em; line-height: 1.05; margin: 0; } + .section-heading p:not(.eyebrow), .section > div > p:not(.eyebrow), .final-cta p { color: var(--sl-color-gray-2); font-size: 1.05rem; line-height: 1.7; margin: 0; max-width: 46rem; } + .eyebrow { color: var(--sl-color-accent-high); font-size: 0.75rem; font-weight: 800; letter-spacing: 0.1em; margin: 0; text-transform: uppercase; } + .problem-grid, .capability-grid, .use-case-grid, .execution-grid { display: grid; gap: 1px; background: var(--sl-color-hairline); border: 1px solid var(--sl-color-hairline); } + .problem-grid { grid-template-columns: repeat(3, 1fr); } + .capability-grid, .use-case-grid { grid-template-columns: repeat(3, 1fr); } + .execution-grid { grid-template-columns: repeat(3, 1fr); } + .problem-grid article, .capability-grid article, .execution-grid article, .use-case-grid a { background: var(--sl-color-black); padding: 1.6rem; } + .problem-grid h3, .capability-grid h3, .execution-grid h3 { font-size: 1.05rem; margin: 0.8rem 0; } + .problem-grid p, .capability-grid p, .execution-grid p { color: var(--sl-color-gray-2); font-size: 0.9rem; line-height: 1.65; margin: 0; } + .card-index, .execution-grid article > span { color: var(--sl-color-accent-high); font-family: var(--sl-font-mono); font-size: 0.72rem; font-weight: 750; } + .steps { counter-reset: process; display: grid; gap: 0; list-style: none; margin: 0; padding: 0; } + .steps li { align-items: baseline; border-top: 1px solid var(--sl-color-hairline); display: grid; gap: 1rem; grid-template-columns: 3rem 9rem 1fr; padding: 1.4rem 0; } + .steps li::before { color: var(--sl-color-accent-high); content: "0" counter(process); counter-increment: process; font-family: var(--sl-font-mono); font-size: 0.8rem; } + .steps li span { color: var(--sl-color-gray-2); } + .example, .durable, .maturity-section, .final-cta { align-items: start; display: grid; gap: clamp(2rem, 6vw, 5rem); grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr); } + .example-copy > * + * { margin-top: 1.25rem; } + .example-copy h2 { font-size: clamp(2rem, 4vw, 3.1rem); letter-spacing: -0.045em; line-height: 1.05; } + .example-copy > p:not(.eyebrow) { color: var(--sl-color-gray-2); line-height: 1.7; } + .example-copy dl { display: grid; gap: 0; } + .example-copy dl div { border-top: 1px solid var(--sl-color-hairline); display: grid; gap: 0.5rem; grid-template-columns: 7rem 1fr; padding: 0.8rem 0; } + .example-copy dt { font-size: 0.8rem; font-weight: 750; } + .example-copy dd { color: var(--sl-color-gray-2); font-size: 0.85rem; margin: 0; } + .code-card { background: #0b1918; border: 1px solid #29413f; color: #e6fffb; min-width: 0; } + .code-toolbar { align-items: center; border-bottom: 1px solid #29413f; display: flex; justify-content: space-between; padding: 0.75rem 1rem; } + .code-toolbar span { color: #9cb7b3; font-family: var(--sl-font-mono); font-size: 0.72rem; } + .code-toolbar button { background: transparent; border: 1px solid #4c6763; color: #ccfbf1; cursor: pointer; font: inherit; font-size: 0.72rem; padding: 0.35rem 0.6rem; } + .code-card pre { font-size: 0.72rem; line-height: 1.6; margin: 0; max-height: 42rem; overflow: auto; padding: 1.2rem; } + .use-case-grid a { color: var(--sl-color-white); display: grid; gap: 0.6rem; min-height: 8.5rem; text-decoration: none; } + .use-case-grid a:hover strong { color: var(--sl-color-accent-high); } + .use-case-grid span { color: var(--sl-color-gray-2); font-size: 0.88rem; line-height: 1.5; } + .execution-grid article > a, .text-link { color: var(--sl-color-accent-high); display: inline-block; font-size: 0.88rem; font-weight: 700; margin-top: 1.2rem; } + .durable-path { align-items: center; align-self: center; display: flex; flex-wrap: wrap; gap: 0.65rem; justify-content: center; padding: 3rem 1rem; } + .durable-path span { border: 1px solid var(--sl-color-gray-4); font-family: var(--sl-font-mono); font-size: 0.78rem; padding: 0.55rem 0.7rem; } + .durable-path span.ok { border-color: var(--sl-color-accent); color: var(--sl-color-accent-high); } + .durable-path span.warn { border-color: #b45309; color: #b45309; } + .durable-path i { background: var(--sl-color-gray-4); height: 1px; width: 1.2rem; } + .durable-path b { color: var(--sl-color-gray-3); font-size: 0.75rem; font-weight: 500; } + .table-wrap { overflow-x: auto; } + .comparison table { border-collapse: collapse; min-width: 48rem; width: 100%; } + .comparison th, .comparison td { border-bottom: 1px solid var(--sl-color-hairline); padding: 1rem; text-align: left; vertical-align: top; } + .comparison thead th { color: var(--sl-color-gray-2); font-size: 0.72rem; letter-spacing: 0.08em; text-transform: uppercase; } + .comparison tbody th { width: 16rem; } + .comparison td { color: var(--sl-color-gray-2); } + .maturity-section ul { border-left: 2px solid var(--sl-color-accent); display: grid; gap: 0.8rem; list-style: none; margin: 0; padding: 0.3rem 0 0.3rem 1.5rem; } + .maturity-section li { color: var(--sl-color-gray-2); } + .final-cta { align-items: center; background: var(--sl-color-accent-low); border-bottom: 0; margin-top: 5rem; padding: clamp(2rem, 6vw, 4rem); } + .primary-cta { background: var(--sl-color-accent); color: #fff; font-weight: 800; justify-self: end; padding: 0.9rem 1.2rem; text-decoration: none; } + .product-footer { align-items: center; display: flex; flex-wrap: wrap; gap: 2rem; justify-content: space-between; padding: 2rem 0 0; } + .product-footer div { display: grid; gap: 0.3rem; } + .product-footer span { color: var(--sl-color-gray-3); font-size: 0.75rem; } + .product-footer nav { display: flex; flex-wrap: wrap; gap: 0.6rem 1rem; } + .product-footer nav a { color: var(--sl-color-gray-2); font-size: 0.8rem; } + + @media (max-width: 58rem) { + .problem-grid, .capability-grid, .use-case-grid { grid-template-columns: repeat(2, 1fr); } + .execution-grid { grid-template-columns: 1fr; } + .example, .durable, .maturity-section, .final-cta { grid-template-columns: 1fr; } + .primary-cta { justify-self: start; } + } + @media (max-width: 38rem) { + .problem-grid, .capability-grid, .use-case-grid { grid-template-columns: 1fr; } + .steps li { grid-template-columns: 2rem 1fr; } + .steps li span { grid-column: 2; } + .example-copy dl div { grid-template-columns: 1fr; } + } + @media (prefers-reduced-motion: reduce) { + *, *::before, *::after { scroll-behavior: auto !important; transition-duration: 0.001ms !important; } + } +} diff --git a/tests/site.spec.ts b/tests/site.spec.ts new file mode 100644 index 0000000..2dc4b25 --- /dev/null +++ b/tests/site.spec.ts @@ -0,0 +1,99 @@ +import AxeBuilder from '@axe-core/playwright'; +import { expect, test } from '@playwright/test'; + +const routes = [ + ['/agentctl/', 'Control agent workflows'], + ['/agentctl/getting-started/', 'Getting started'], + ['/agentctl/guides/workflow-authoring/', 'Author workflows'], + ['/agentctl/guides/container/', 'Container guide'], + ['/agentctl/durable-execution/', 'Durable execution'], + ['/agentctl/troubleshooting/', 'Troubleshooting'], + ['/agentctl/architecture/', 'Architecture overview'], + ['/agentctl/contributing/', 'Contributing'], +]; + +test.describe('final artifact routes', () => { + for (const [route, heading] of routes) { + test(`${route} loads directly`, async ({ page }) => { + const response = await page.goto(route); + expect(response?.status()).toBe(200); + await expect(page.getByRole('heading', { name: heading, exact: false }).first()).toBeVisible(); + await page.reload(); + await expect(page).toHaveURL(new RegExp(`${route.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}$`)); + }); + } +}); + +test('homepage exposes clear calls to action and source truth', async ({ page }) => { + await page.goto('/agentctl/'); + await expect(page.getByRole('link', { name: 'Get started', exact: true })).toHaveCount(2); + await expect(page.getByRole('link', { name: 'View on GitHub' })).toHaveAttribute( + 'href', + 'https://github.com/opensourceops/agentctl', + ); + await expect(page.getByText('examples/acceptance/mock-tool/workflow.yaml')).toBeVisible(); + await expect(page.locator('footer.product-footer')).toContainText(/Docs verified against/); +}); + +test('homepage workflow copy control works', async ({ page }) => { + await page.goto('/agentctl/'); + await page.getByRole('button', { name: 'Copy workflow YAML' }).click(); + await expect(page.getByRole('button', { name: 'Copy workflow YAML' })).toHaveText('Copied'); + const clipboard = await page.evaluate(() => navigator.clipboard.readText()); + expect(clipboard).toContain('apiVersion: agentctl.dev/v1alpha1'); +}); + +test('navigation and sidebar reach important sections', async ({ page }) => { + await page.goto('/agentctl/getting-started/'); + const menuButton = page.getByRole('button', { name: /menu/i }); + if (await menuButton.isVisible()) await menuButton.click(); + await expect(page.getByRole('link', { name: 'Provider overview', exact: true })).toBeVisible(); + await expect(page.getByRole('link', { name: 'CLI reference', exact: true })).toBeVisible(); +}); + +test('Mermaid diagrams render without client errors', async ({ page }) => { + const errors: string[] = []; + page.on('pageerror', (error) => errors.push(error.message)); + await page.goto('/agentctl/architecture/diagrams/'); + await expect(page.locator('pre.mermaid svg')).toHaveCount(14, { timeout: 20_000 }); + await expect(page.locator('.error-icon')).toHaveCount(0); + expect(errors).toEqual([]); +}); + +test('404 offers useful recovery links', async ({ page }) => { + const response = await page.goto('/agentctl/not-a-real-page/'); + expect(response?.status()).toBe(404); + await expect(page.getByRole('heading', { name: /not here|not found/i })).toBeVisible(); + await expect(page.getByRole('link', { name: /Getting started/i })).toBeVisible(); + await expect(page.getByRole('link', { name: /CLI reference/i })).toBeVisible(); + await expect(page.getByRole('link', { name: /Troubleshooting/i })).toBeVisible(); +}); + +test('representative pages have no serious automated accessibility violations', async ({ page }) => { + for (const route of ['/agentctl/', '/agentctl/getting-started/', '/agentctl/guides/container/', '/agentctl/troubleshooting/']) { + await page.goto(route); + const results = await new AxeBuilder({ page }) + .withTags(['wcag2a', 'wcag2aa', 'wcag21a', 'wcag21aa', 'wcag22aa']) + .analyze(); + const serious = results.violations.filter((item) => ['serious', 'critical'].includes(item.impact || '')); + expect(serious, `${route}: ${serious.map((item) => item.id).join(', ')}`).toEqual([]); + } +}); + +test.describe('desktop and tablet search', () => { + test('representative search terms return results', async ({ page }, testInfo) => { + test.skip(testInfo.project.name === 'mobile', 'Search query matrix runs on desktop and tablet only.'); + test.setTimeout(90_000); + await page.goto('/agentctl/'); + const searchButton = page.getByRole('button', { name: /search/i }).first(); + const queries = ['replay', 'OPENAI_API_KEY', 'approval', 'container', 'exit code', 'database locked', 'MCP', 'Gemini']; + for (const query of queries) { + await searchButton.click(); + const dialog = page.getByRole('dialog'); + const input = dialog.getByRole('textbox', { name: 'Search' }); + await input.fill(query); + await expect(dialog.locator('a').filter({ hasText: /./ }).first()).toBeVisible({ timeout: 10_000 }); + await page.keyboard.press('Escape'); + } + }); +}); diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..f766cf9 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,4 @@ +{ + "extends": "astro/tsconfigs/strict", + "exclude": ["dist-agentctl", "_site", "node_modules", "playwright-report", "test-results"] +}

    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 P00000NkvXXu0mjfJAi}^ literal 0 HcmV?d00001 diff --git a/root-site/404.html b/root-site/404.html new file mode 100644 index 0000000..3d2644c --- /dev/null +++ b/root-site/404.html @@ -0,0 +1,33 @@ + + + + + + + Page not found | OpenSourceOps + + + +