@aiwg/cli 0.0.0-bootstrap.0 → 2026.7.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +21 -1
- package/bin/aiwg.mjs +349 -0
- package/dist/src/a2a/agent-card.js +145 -0
- package/dist/src/a2a/client.js +411 -0
- package/dist/src/a2a/hitl-cli.js +171 -0
- package/dist/src/a2a/hitl-driver.js +370 -0
- package/dist/src/a2a/hitl.js +181 -0
- package/dist/src/a2a/http.js +193 -0
- package/dist/src/a2a/jcs.js +128 -0
- package/dist/src/a2a/jws.js +187 -0
- package/dist/src/a2a/types.js +24 -0
- package/dist/src/a2a/webhook.js +240 -0
- package/dist/src/activity-log/cli.js +348 -0
- package/dist/src/activity-log/parser.js +81 -0
- package/dist/src/activity-log/types.js +50 -0
- package/dist/src/agents/agent-deployer.js +367 -0
- package/dist/src/agents/agent-packager.js +271 -0
- package/dist/src/agents/agent-validator.js +271 -0
- package/dist/src/agents/grounding/knowledge-base.js +161 -0
- package/dist/src/agents/grounding/types.js +12 -0
- package/dist/src/agents/index.js +10 -0
- package/dist/src/agents/packaged-agent-inventory.js +75 -0
- package/dist/src/agents/types.js +7 -0
- package/dist/src/api/index.d.ts +10 -0
- package/dist/src/api/index.js +10 -0
- package/dist/src/artifacts/address-parser.js +73 -0
- package/dist/src/artifacts/audit/cli.js +183 -0
- package/dist/src/artifacts/audit/drift.js +122 -0
- package/dist/src/artifacts/audit/types.js +12 -0
- package/dist/src/artifacts/backends/graphology-backend.js +160 -0
- package/dist/src/artifacts/backends/json-backend.js +129 -0
- package/dist/src/artifacts/backends/sqlite-backend.js +199 -0
- package/dist/src/artifacts/browser-export.js +622 -0
- package/dist/src/artifacts/capability-resolver.js +94 -0
- package/dist/src/artifacts/checksum-manifest.js +91 -0
- package/dist/src/artifacts/citation-parser.js +162 -0
- package/dist/src/artifacts/cli.js +1462 -0
- package/dist/src/artifacts/corpus-tools/citation-densify.js +311 -0
- package/dist/src/artifacts/corpus-tools/cli.js +393 -0
- package/dist/src/artifacts/corpus-tools/corpus-graph.js +225 -0
- package/dist/src/artifacts/corpus-tools/curator.js +186 -0
- package/dist/src/artifacts/corpus-tools/discovery-log.js +70 -0
- package/dist/src/artifacts/corpus-tools/funder-network.js +141 -0
- package/dist/src/artifacts/corpus-tools/induction-audit.js +233 -0
- package/dist/src/artifacts/corpus-tools/integrity-scan.js +202 -0
- package/dist/src/artifacts/corpus-tools/profile-communities.js +166 -0
- package/dist/src/artifacts/corpus-tools/profile-edges.js +72 -0
- package/dist/src/artifacts/corpus-tools/profile-embed.js +113 -0
- package/dist/src/artifacts/corpus-tools/profile-generate-fm.js +167 -0
- package/dist/src/artifacts/corpus-tools/profile-generate.js +181 -0
- package/dist/src/artifacts/corpus-tools/profile-metrics.js +98 -0
- package/dist/src/artifacts/corpus-tools/profile-status.js +86 -0
- package/dist/src/artifacts/corpus-tools/profile-temporal.js +139 -0
- package/dist/src/artifacts/corpus-tools/radar-init.js +93 -0
- package/dist/src/artifacts/corpus-tools/radar-report.js +118 -0
- package/dist/src/artifacts/corpus-tools/radar-shared.js +189 -0
- package/dist/src/artifacts/corpus-tools/radar-status.js +68 -0
- package/dist/src/artifacts/corpus-tools/sidecar-lint.js +233 -0
- package/dist/src/artifacts/corpus-tools/sidecar-repair.js +277 -0
- package/dist/src/artifacts/corpus-tools/snapshot.js +591 -0
- package/dist/src/artifacts/corpus-tools/source-types.js +164 -0
- package/dist/src/artifacts/corpus-tools/vision-extract.js +243 -0
- package/dist/src/artifacts/corpus-views/build.js +126 -0
- package/dist/src/artifacts/corpus-views/corpus-config.js +124 -0
- package/dist/src/artifacts/corpus-views/ref-parser.js +437 -0
- package/dist/src/artifacts/corpus-views/renderers.js +353 -0
- package/dist/src/artifacts/corpus-views/taxonomies.js +131 -0
- package/dist/src/artifacts/dep-graph.js +173 -0
- package/dist/src/artifacts/discover-facets.js +375 -0
- package/dist/src/artifacts/embedding-index.js +354 -0
- package/dist/src/artifacts/enrichment/cli.js +240 -0
- package/dist/src/artifacts/enrichment/prompt.js +47 -0
- package/dist/src/artifacts/enrichment/store.js +90 -0
- package/dist/src/artifacts/enrichment/types.js +12 -0
- package/dist/src/artifacts/fortemi-core-query-adapter.js +475 -0
- package/dist/src/artifacts/fortemi-core-sync.js +251 -0
- package/dist/src/artifacts/fortemi-shard-export.js +44 -0
- package/dist/src/artifacts/fulltext.js +108 -0
- package/dist/src/artifacts/graph-backend.js +51 -0
- package/dist/src/artifacts/graph-query.js +247 -0
- package/dist/src/artifacts/hybrid-query.js +225 -0
- package/dist/src/artifacts/index-builder.js +1089 -0
- package/dist/src/artifacts/index-reader.js +112 -0
- package/dist/src/artifacts/index-status.js +193 -0
- package/dist/src/artifacts/legacy-index-migration.js +169 -0
- package/dist/src/artifacts/move.js +154 -0
- package/dist/src/artifacts/operational-state.js +239 -0
- package/dist/src/artifacts/prebuilt-build-lock.js +49 -0
- package/dist/src/artifacts/query-engine.js +1955 -0
- package/dist/src/artifacts/source-graph.js +529 -0
- package/dist/src/artifacts/stats.js +169 -0
- package/dist/src/artifacts/types.js +606 -0
- package/dist/src/artifacts/views/cli.js +293 -0
- package/dist/src/artifacts/views/definition.js +170 -0
- package/dist/src/artifacts/views/store.js +149 -0
- package/dist/src/artifacts/views/types.js +8 -0
- package/dist/src/artifacts/watcher.js +255 -0
- package/dist/src/catalog/builtin-models.json +636 -0
- package/dist/src/catalog/cli.js +228 -0
- package/dist/src/catalog/cli.mjs +289 -0
- package/dist/src/catalog/index.js +15 -0
- package/dist/src/catalog/loader.js +217 -0
- package/dist/src/catalog/loader.mjs +251 -0
- package/dist/src/catalog/sources.json +41 -0
- package/dist/src/catalog/types.js +8 -0
- package/dist/src/channel/manager.mjs +504 -0
- package/dist/src/cli/agent-spawn.js +178 -0
- package/dist/src/cli/cli-extension-loader.js +245 -0
- package/dist/src/cli/command-log.js +275 -0
- package/dist/src/cli/config-loader.js +232 -0
- package/dist/src/cli/env.js +82 -0
- package/dist/src/cli/errors.js +150 -0
- package/dist/src/cli/find-package-root.js +40 -0
- package/dist/src/cli/git-hooks.js +250 -0
- package/dist/src/cli/handlers/agentcard.js +206 -0
- package/dist/src/cli/handlers/artifacts.js +76 -0
- package/dist/src/cli/handlers/best-practices-audit.js +280 -0
- package/dist/src/cli/handlers/cockpit.js +137 -0
- package/dist/src/cli/handlers/command-log.js +37 -0
- package/dist/src/cli/handlers/daemon.js +59 -0
- package/dist/src/cli/handlers/diagnose.js +300 -0
- package/dist/src/cli/handlers/execution-mode.js +105 -0
- package/dist/src/cli/handlers/feedback.js +341 -0
- package/dist/src/cli/handlers/help.js +147 -0
- package/dist/src/cli/handlers/index.js +302 -0
- package/dist/src/cli/handlers/init.js +179 -0
- package/dist/src/cli/handlers/install.js +129 -0
- package/dist/src/cli/handlers/issues.js +46 -0
- package/dist/src/cli/handlers/lint.js +42 -0
- package/dist/src/cli/handlers/local-executor.js +315 -0
- package/dist/src/cli/handlers/marketplace.js +168 -0
- package/dist/src/cli/handlers/mc.js +1010 -0
- package/dist/src/cli/handlers/models.js +352 -0
- package/dist/src/cli/handlers/packages.js +155 -0
- package/dist/src/cli/handlers/ralph-launcher.js +717 -0
- package/dist/src/cli/handlers/ralph.js +575 -0
- package/dist/src/cli/handlers/refresh.js +432 -0
- package/dist/src/cli/handlers/regenerate.js +336 -0
- package/dist/src/cli/handlers/repo-access.js +109 -0
- package/dist/src/cli/handlers/run.js +165 -0
- package/dist/src/cli/handlers/runtime-info.js +301 -0
- package/dist/src/cli/handlers/sandbox.js +197 -0
- package/dist/src/cli/handlers/scaffolding.js +149 -0
- package/dist/src/cli/handlers/script-runner.js +121 -0
- package/dist/src/cli/handlers/sdlc-accelerate.js +148 -0
- package/dist/src/cli/handlers/serve.js +1835 -0
- package/dist/src/cli/handlers/session.js +348 -0
- package/dist/src/cli/handlers/setup.js +440 -0
- package/dist/src/cli/handlers/skill-lint.js +367 -0
- package/dist/src/cli/handlers/skill-usage.js +74 -0
- package/dist/src/cli/handlers/steward.js +567 -0
- package/dist/src/cli/handlers/subcommands.js +1702 -0
- package/dist/src/cli/handlers/team.js +337 -0
- package/dist/src/cli/handlers/types.js +11 -0
- package/dist/src/cli/handlers/use.js +2772 -0
- package/dist/src/cli/handlers/utilities.js +703 -0
- package/dist/src/cli/handlers/version.js +134 -0
- package/dist/src/cli/handlers/workspace-context.js +93 -0
- package/dist/src/cli/handlers/workspace.js +126 -0
- package/dist/src/cli/help-generator.js +178 -0
- package/dist/src/cli/hooks/builtin/activity-log-hook.js +126 -0
- package/dist/src/cli/hooks/executor.js +96 -0
- package/dist/src/cli/hooks/index.js +15 -0
- package/dist/src/cli/hooks/registry.js +143 -0
- package/dist/src/cli/hooks/types.js +13 -0
- package/dist/src/cli/log.js +492 -0
- package/dist/src/cli/project-isolation/detect.js +70 -0
- package/dist/src/cli/project-isolation/index.js +7 -0
- package/dist/src/cli/project-isolation/signals.js +17 -0
- package/dist/src/cli/project-isolation/warning.js +102 -0
- package/dist/src/cli/prompt-utils.js +155 -0
- package/dist/src/cli/provider-deployment-plan.js +126 -0
- package/dist/src/cli/provider-resolution.js +119 -0
- package/dist/src/cli/router.js +305 -0
- package/dist/src/cli/scope-resolver.js +392 -0
- package/dist/src/cli/skill-usage.js +616 -0
- package/dist/src/cli/ui.js +224 -0
- package/dist/src/cli/watch-service.js +203 -0
- package/dist/src/cli/workflow-orchestrator.js +478 -0
- package/dist/src/cli/workspace-signals.js +321 -0
- package/dist/src/community/footer.js +14 -0
- package/dist/src/community/links.js +123 -0
- package/dist/src/community/milestones.js +46 -0
- package/dist/src/community/nudge-policy.js +93 -0
- package/dist/src/config/aiwg-config.js +883 -0
- package/dist/src/config/cli.js +703 -0
- package/dist/src/config/gitignore.js +156 -0
- package/dist/src/config/project-artifacts.js +76 -0
- package/dist/src/config/user-config.js +428 -0
- package/dist/src/config/user-registry.js +127 -0
- package/dist/src/config/workspace.js +276 -0
- package/dist/src/contributors/detect.js +39 -0
- package/dist/src/contributors/discover.js +172 -0
- package/dist/src/contributors/heuristic.js +186 -0
- package/dist/src/contributors/index.js +11 -0
- package/dist/src/contributors/types.js +13 -0
- package/dist/src/contributors/validation.js +116 -0
- package/dist/src/data/community.schema.json +43 -0
- package/dist/src/data/community.yaml +16 -0
- package/dist/src/extensions/capability-index.js +270 -0
- package/dist/src/extensions/claude-hooks-installer.js +268 -0
- package/dist/src/extensions/commands/definitions.js +3485 -0
- package/dist/src/extensions/deployment-registration.js +463 -0
- package/dist/src/extensions/index.js +22 -0
- package/dist/src/extensions/loader.js +132 -0
- package/dist/src/extensions/managed-marker.js +100 -0
- package/dist/src/extensions/manifest.js +196 -0
- package/dist/src/extensions/project-local-activity.js +114 -0
- package/dist/src/extensions/project-local-discovery.js +261 -0
- package/dist/src/extensions/project-local-doctor.js +281 -0
- package/dist/src/extensions/project-local-gitignore.js +176 -0
- package/dist/src/extensions/project-local-paths.js +121 -0
- package/dist/src/extensions/project-local-promote.js +218 -0
- package/dist/src/extensions/project-local-remove.js +373 -0
- package/dist/src/extensions/project-local-scaffold.js +252 -0
- package/dist/src/extensions/project-quickref.js +291 -0
- package/dist/src/extensions/registry.js +368 -0
- package/dist/src/extensions/shadow-resolver.js +271 -0
- package/dist/src/extensions/types.js +86 -0
- package/dist/src/extensions/upstream-registry.js +195 -0
- package/dist/src/extensions/validation.js +631 -0
- package/dist/src/features/catalog.js +88 -0
- package/dist/src/features/cli.js +197 -0
- package/dist/src/features/installer.js +57 -0
- package/dist/src/features/paths.js +14 -0
- package/dist/src/features/runtime.js +21 -0
- package/dist/src/features/status.js +134 -0
- package/dist/src/hooks/laziness-detection.js +532 -0
- package/dist/src/intake/git-history-analyzer.js +486 -0
- package/dist/src/intake/index.js +9 -0
- package/dist/src/issues/cli.js +327 -0
- package/dist/src/issues/index.js +5 -0
- package/dist/src/issues/live.js +154 -0
- package/dist/src/issues/local.js +666 -0
- package/dist/src/issues/sync.js +143 -0
- package/dist/src/issues/types.js +2 -0
- package/dist/src/issues/workflows.js +164 -0
- package/dist/src/kb/cli.js +173 -0
- package/dist/src/lint/cli.js +171 -0
- package/dist/src/lint/loader.js +225 -0
- package/dist/src/lint/reporters.js +141 -0
- package/dist/src/lint/runner.js +364 -0
- package/dist/src/lint/types.js +10 -0
- package/dist/src/marketplace/cache.js +110 -0
- package/dist/src/marketplace/identifier.js +63 -0
- package/dist/src/marketplace/registry.js +36 -0
- package/dist/src/marketplace/sources/clawhub.js +53 -0
- package/dist/src/marketplace/sources/git.js +45 -0
- package/dist/src/marketplace/types.js +9 -0
- package/dist/src/mcp/adapters/codex-runtime.js +224 -0
- package/dist/src/mcp/cli.mjs +1197 -0
- package/dist/src/mcp/elicitation.mjs +149 -0
- package/dist/src/mcp/helpers.mjs +287 -0
- package/dist/src/mcp/index.mjs +11 -0
- package/dist/src/mcp/profiles.js +263 -0
- package/dist/src/mcp/profiles.mjs +360 -0
- package/dist/src/mcp/registry.js +376 -0
- package/dist/src/mcp/registry.mjs +387 -0
- package/dist/src/mcp/server.mjs +633 -0
- package/dist/src/mcp/test-simple.mjs +271 -0
- package/dist/src/mcp/tools/command-run.mjs +101 -0
- package/dist/src/mcp/tools/discovery.mjs +291 -0
- package/dist/src/mcp/tools/interaction.mjs +87 -0
- package/dist/src/mcp/tools/orchestration.mjs +320 -0
- package/dist/src/mcp/tools/subsystems.mjs +640 -0
- package/dist/src/memory/cli.js +166 -0
- package/dist/src/memory/project-registry.js +282 -0
- package/dist/src/metrics/artifact-metrics.js +184 -0
- package/dist/src/metrics/context-budget.js +174 -0
- package/dist/src/metrics/token-counter.js +133 -0
- package/dist/src/models/config-loader.js +228 -0
- package/dist/src/models/index.js +22 -0
- package/dist/src/models/model-capabilities.v1.json +120 -0
- package/dist/src/models/model-catalog.v1.json +96 -0
- package/dist/src/models/model-discovery.js +521 -0
- package/dist/src/models/provider-models.js +73 -0
- package/dist/src/models/provider-policy.js +273 -0
- package/dist/src/models/resolver.js +245 -0
- package/dist/src/models/router.js +70 -0
- package/dist/src/models/types.js +8 -0
- package/dist/src/models/wrapper-deployment.js +178 -0
- package/dist/src/models/wrapper-route.js +54 -0
- package/dist/src/ops/cli.js +268 -0
- package/dist/src/ops/registry.js +623 -0
- package/dist/src/packages/adapters/clawhub.js +113 -0
- package/dist/src/packages/adapters/git.js +153 -0
- package/dist/src/packages/adapters/gitea.js +93 -0
- package/dist/src/packages/adapters/github.js +69 -0
- package/dist/src/packages/adapters/local-cache.js +89 -0
- package/dist/src/packages/package-registry.js +143 -0
- package/dist/src/packages/registry.js +238 -0
- package/dist/src/packages/types.js +11 -0
- package/dist/src/plugin/cross-framework-ops.js +475 -0
- package/dist/src/plugin/framework-config-loader.js +235 -0
- package/dist/src/plugin/framework-detector.js +186 -0
- package/dist/src/plugin/framework-isolator.js +341 -0
- package/dist/src/plugin/framework-migration.js +371 -0
- package/dist/src/plugin/metadata-validator.js +906 -0
- package/dist/src/plugin/plugin-installer.js +436 -0
- package/dist/src/plugin/plugin-status.js +369 -0
- package/dist/src/plugin/plugin-uninstaller.js +473 -0
- package/dist/src/plugin/registry-validator.js +344 -0
- package/dist/src/plugin/skill-command-translator.js +415 -0
- package/dist/src/plugin/workspace-creator.js +189 -0
- package/dist/src/plugin/workspace-migrator.js +821 -0
- package/dist/src/policy/authorization.js +390 -0
- package/dist/src/policy/repo-access.js +215 -0
- package/dist/src/provenance/cli.js +16 -0
- package/dist/src/providers/capability-matrix.js +300 -0
- package/dist/src/providers/capability-matrix.yaml +514 -0
- package/dist/src/providers/provider-definitions.js +977 -0
- package/dist/src/providers/provider-definitions.mjs +159 -0
- package/dist/src/providers/provider-inventory.js +169 -0
- package/dist/src/quality/feedback-ab.js +174 -0
- package/dist/src/quality/feedback-collector.js +176 -0
- package/dist/src/quality/feedback-tracker.js +123 -0
- package/dist/src/quality/patterns/adr.json +24 -0
- package/dist/src/quality/patterns/sad.json +24 -0
- package/dist/src/quality/patterns/test-plan.json +24 -0
- package/dist/src/quality/patterns/use-case.json +24 -0
- package/dist/src/quality/scoring.js +157 -0
- package/dist/src/reflections/cli.js +15 -0
- package/dist/src/release/plan.js +139 -0
- package/dist/src/research/cache/manager.js +227 -0
- package/dist/src/research/clients/arxiv.js +156 -0
- package/dist/src/research/clients/base.js +197 -0
- package/dist/src/research/clients/crossref.js +112 -0
- package/dist/src/research/clients/semantic-scholar.js +126 -0
- package/dist/src/research/clients/unpaywall.js +87 -0
- package/dist/src/research/index.js +14 -0
- package/dist/src/research/query-cli.js +336 -0
- package/dist/src/research/services/acquisition.js +313 -0
- package/dist/src/research/services/archival.js +225 -0
- package/dist/src/research/services/citation.js +279 -0
- package/dist/src/research/services/discovery.js +243 -0
- package/dist/src/research/services/documentation.js +269 -0
- package/dist/src/research/services/index.js +14 -0
- package/dist/src/research/services/provenance.js +279 -0
- package/dist/src/research/services/quality.js +370 -0
- package/dist/src/research/services/types.js +7 -0
- package/dist/src/research/storage-cli.js +20 -0
- package/dist/src/research/types.js +47 -0
- package/dist/src/resources/index.d.ts +2 -0
- package/dist/src/resources/index.js +2 -0
- package/dist/src/resources/web-release.d.ts +89 -0
- package/dist/src/resources/web-release.js +882 -0
- package/dist/src/rlm/cache/cli.js +162 -0
- package/dist/src/rlm/cache/hash.js +35 -0
- package/dist/src/rlm/cache/store.js +170 -0
- package/dist/src/rlm/cache/types.js +8 -0
- package/dist/src/rlm/cli.js +650 -0
- package/dist/src/serve/a2a-terminal-observer.js +120 -0
- package/dist/src/serve/agent-router.js +205 -0
- package/dist/src/serve/dispatch-router.js +171 -0
- package/dist/src/serve/executor-registry.js +715 -0
- package/dist/src/serve/mission-conductor.js +177 -0
- package/dist/src/serve/orchestrator-adapter.js +113 -0
- package/dist/src/serve/orchestrator-override.js +94 -0
- package/dist/src/serve/orchestrator-pty.js +133 -0
- package/dist/src/serve/pty-bridge.js +799 -0
- package/dist/src/serve/sandbox-registry.js +832 -0
- package/dist/src/serve/screen-reader.js +228 -0
- package/dist/src/serve/stack-adapters.js +68 -0
- package/dist/src/serve/telemetry.js +143 -0
- package/dist/src/skills/adapters/clawhub.js +250 -0
- package/dist/src/skills/adapters/local.js +335 -0
- package/dist/src/skills/adapters/openclaw.js +316 -0
- package/dist/src/skills/cli.js +334 -0
- package/dist/src/skills/registry.js +117 -0
- package/dist/src/skills/run.js +259 -0
- package/dist/src/skills/runtime.js +94 -0
- package/dist/src/skills/types.js +10 -0
- package/dist/src/smiths/agentsmith/demo.js +116 -0
- package/dist/src/smiths/agentsmith/examples.js +300 -0
- package/dist/src/smiths/agentsmith/generator.js +503 -0
- package/dist/src/smiths/agentsmith/index.js +11 -0
- package/dist/src/smiths/agentsmith/types.js +8 -0
- package/dist/src/smiths/commandsmith/example.js +220 -0
- package/dist/src/smiths/commandsmith/generator.js +288 -0
- package/dist/src/smiths/commandsmith/index.js +41 -0
- package/dist/src/smiths/commandsmith/templates.js +296 -0
- package/dist/src/smiths/commandsmith/types.js +7 -0
- package/dist/src/smiths/context-pipeline/aiwg-md.js +104 -0
- package/dist/src/smiths/context-pipeline/allowlist.js +195 -0
- package/dist/src/smiths/context-pipeline/claude-hook.js +127 -0
- package/dist/src/smiths/context-pipeline/discovery.js +187 -0
- package/dist/src/smiths/context-pipeline/external-links-section.js +49 -0
- package/dist/src/smiths/context-pipeline/finalization.js +147 -0
- package/dist/src/smiths/context-pipeline/generator.js +477 -0
- package/dist/src/smiths/context-pipeline/index.js +30 -0
- package/dist/src/smiths/context-pipeline/legacy-inject.js +103 -0
- package/dist/src/smiths/context-pipeline/managed-hook.js +95 -0
- package/dist/src/smiths/context-pipeline/overflow.js +212 -0
- package/dist/src/smiths/context-pipeline/parallelism-section.js +94 -0
- package/dist/src/smiths/context-pipeline/provider-policy.js +64 -0
- package/dist/src/smiths/context-pipeline/sanitizer.js +93 -0
- package/dist/src/smiths/context-pipeline/types.js +23 -0
- package/dist/src/smiths/context-pipeline/workspace-context.js +988 -0
- package/dist/src/smiths/hook-bridge/codex-translator.js +129 -0
- package/dist/src/smiths/hook-bridge/copilot-translator.js +64 -0
- package/dist/src/smiths/hook-bridge/factory-translator.js +43 -0
- package/dist/src/smiths/hook-bridge/hermes-translator.js +88 -0
- package/dist/src/smiths/hook-bridge/index.js +79 -0
- package/dist/src/smiths/hook-bridge/loader.js +116 -0
- package/dist/src/smiths/hook-bridge/shim.js +89 -0
- package/dist/src/smiths/hook-bridge/types.js +31 -0
- package/dist/src/smiths/index.js +39 -0
- package/dist/src/smiths/mcpsmith/analyzers/cli-analyzer.js +390 -0
- package/dist/src/smiths/mcpsmith/example.js +119 -0
- package/dist/src/smiths/mcpsmith/generator.js +236 -0
- package/dist/src/smiths/mcpsmith/index.js +17 -0
- package/dist/src/smiths/mcpsmith/types.js +10 -0
- package/dist/src/smiths/platform-paths.js +101 -0
- package/dist/src/smiths/skillsmith/codex-sidecar.js +85 -0
- package/dist/src/smiths/skillsmith/collision-detector.js +249 -0
- package/dist/src/smiths/skillsmith/demo.js +83 -0
- package/dist/src/smiths/skillsmith/examples.js +161 -0
- package/dist/src/smiths/skillsmith/generator.js +316 -0
- package/dist/src/smiths/skillsmith/index.js +12 -0
- package/dist/src/smiths/skillsmith/namespace-adapter.js +180 -0
- package/dist/src/smiths/skillsmith/platform-resolver.js +157 -0
- package/dist/src/smiths/skillsmith/types.js +9 -0
- package/dist/src/smiths/toolsmith/index.js +10 -0
- package/dist/src/smiths/toolsmith/runtime-discovery.mjs +710 -0
- package/dist/src/smiths/toolsmith/types.js +8 -0
- package/dist/src/storage/backends/fortemi.js +227 -0
- package/dist/src/storage/backends/fs.js +134 -0
- package/dist/src/storage/backends/logseq.js +309 -0
- package/dist/src/storage/backends/obsidian.js +233 -0
- package/dist/src/storage/cli.js +468 -0
- package/dist/src/storage/config.js +272 -0
- package/dist/src/storage/index.js +108 -0
- package/dist/src/storage/subsystem-cli.js +201 -0
- package/dist/src/storage/types.js +33 -0
- package/dist/src/testing/corpus/corpus-builder.js +383 -0
- package/dist/src/testing/corpus/ground-truth-manager.js +460 -0
- package/dist/src/testing/corpus/index.js +10 -0
- package/dist/src/testing/fixtures/index.js +9 -0
- package/dist/src/testing/fixtures/test-data-factory.js +472 -0
- package/dist/src/testing/generators/index.js +11 -0
- package/dist/src/testing/generators/test-case-generator.js +393 -0
- package/dist/src/testing/generators/test-code-generator.js +384 -0
- package/dist/src/testing/generators/use-case-parser.js +325 -0
- package/dist/src/testing/index.js +11 -0
- package/dist/src/tracker/capability-protocol.js +118 -0
- package/dist/src/update/checker.mjs +396 -0
- package/dist/src/update/notifier.mjs +235 -0
- package/dist/src/writing/content-diversifier.js +804 -0
- package/dist/src/writing/example-generator.js +959 -0
- package/dist/src/writing/example-templates.js +99 -0
- package/dist/src/writing/pattern-library.js +486 -0
- package/dist/src/writing/patterns/banned-phrases.json +4413 -0
- package/dist/src/writing/patterns/formulaic-structures.json +1300 -0
- package/dist/src/writing/patterns/generic-adjectives.json +1510 -0
- package/dist/src/writing/patterns/hedging-language.json +2096 -0
- package/dist/src/writing/patterns/transition-words.json +1285 -0
- package/dist/src/writing/patterns/weak-verbs.json +1112 -0
- package/dist/src/writing/prompt-optimizer.js +660 -0
- package/dist/src/writing/prompt-templates.js +583 -0
- package/dist/src/writing/scoring-config-loader.js +168 -0
- package/dist/src/writing/validation-engine.js +595 -0
- package/dist/src/writing/validation-rules.js +380 -0
- package/dist/src/writing/voice-analyzer.js +439 -0
- package/dist/src/writing/voice-calibration.js +661 -0
- package/dist/src/writing/voice-profiles.json +588 -0
- package/package.json +64 -9
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Git Hook Installer
|
|
3
|
+
*
|
|
4
|
+
* Installs and manages git pre-commit and pre-push hooks for AIWG validation.
|
|
5
|
+
*/
|
|
6
|
+
import { readFile, writeFile, chmod, access, mkdir } from 'fs/promises';
|
|
7
|
+
import { existsSync } from 'fs';
|
|
8
|
+
import { resolve } from 'path';
|
|
9
|
+
import { constants } from 'fs';
|
|
10
|
+
/**
|
|
11
|
+
* Git Hook Installer
|
|
12
|
+
*/
|
|
13
|
+
export class GitHookInstaller {
|
|
14
|
+
projectRoot;
|
|
15
|
+
hooksDir;
|
|
16
|
+
constructor(projectRoot) {
|
|
17
|
+
this.projectRoot = projectRoot;
|
|
18
|
+
this.hooksDir = resolve(projectRoot, '.git', 'hooks');
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Install pre-commit hook
|
|
22
|
+
*/
|
|
23
|
+
async installPreCommitHook(options = {}) {
|
|
24
|
+
const hookContent = this.generatePreCommitHook(options.configPath);
|
|
25
|
+
await this.installHook('pre-commit', hookContent, options);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Install pre-push hook
|
|
29
|
+
*/
|
|
30
|
+
async installPrePushHook(options = {}) {
|
|
31
|
+
const hookContent = this.generatePrePushHook(options.configPath);
|
|
32
|
+
await this.installHook('pre-push', hookContent, options);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Uninstall hooks
|
|
36
|
+
*/
|
|
37
|
+
async uninstallHooks(projectRoot) {
|
|
38
|
+
const hooksToRemove = ['pre-commit', 'pre-push'];
|
|
39
|
+
for (const hookType of hooksToRemove) {
|
|
40
|
+
const hookPath = resolve(projectRoot, '.git', 'hooks', hookType);
|
|
41
|
+
if (existsSync(hookPath)) {
|
|
42
|
+
const content = await readFile(hookPath, 'utf-8');
|
|
43
|
+
// Only remove if it's our hook
|
|
44
|
+
if (content.includes('# AIWG')) {
|
|
45
|
+
// Check if there's other content
|
|
46
|
+
const lines = content.split('\n');
|
|
47
|
+
const aiwgStart = lines.findIndex(l => l.includes('# AIWG'));
|
|
48
|
+
const aiwgEnd = lines.findIndex((l, i) => i > aiwgStart && l.includes('# END AIWG'));
|
|
49
|
+
if (aiwgStart >= 0 && aiwgEnd >= 0) {
|
|
50
|
+
// Remove only AIWG section
|
|
51
|
+
const beforeAiwg = lines.slice(0, aiwgStart);
|
|
52
|
+
const afterAiwg = lines.slice(aiwgEnd + 1);
|
|
53
|
+
// Check if the content before AIWG is just shebang (part of our hook)
|
|
54
|
+
const beforeContent = beforeAiwg.filter(l => l.trim().length > 0);
|
|
55
|
+
const isOnlyShebang = beforeContent.length <= 1 && beforeContent.every(l => l.startsWith('#!'));
|
|
56
|
+
// Check if after AIWG is meaningful content
|
|
57
|
+
const afterContent = afterAiwg.filter(l => l.trim().length > 0);
|
|
58
|
+
if (isOnlyShebang && afterContent.length === 0) {
|
|
59
|
+
// File only contains our hook (shebang + AIWG), remove entirely
|
|
60
|
+
await this.removeFile(hookPath);
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
// There's other content, keep it
|
|
64
|
+
const newContent = [...beforeAiwg, ...afterAiwg].join('\n');
|
|
65
|
+
if (newContent.trim().length > 0) {
|
|
66
|
+
await writeFile(hookPath, newContent, 'utf-8');
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
// File would be empty, remove it
|
|
70
|
+
await this.removeFile(hookPath);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
// Entire file is AIWG hook, remove it
|
|
76
|
+
await this.removeFile(hookPath);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Check if hook is installed
|
|
84
|
+
*/
|
|
85
|
+
isInstalled(hookType) {
|
|
86
|
+
const hookPath = resolve(this.hooksDir, hookType);
|
|
87
|
+
if (!existsSync(hookPath)) {
|
|
88
|
+
return false;
|
|
89
|
+
}
|
|
90
|
+
try {
|
|
91
|
+
const content = require('fs').readFileSync(hookPath, 'utf-8');
|
|
92
|
+
return content.includes('# AIWG');
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
return false;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Get hook content
|
|
100
|
+
*/
|
|
101
|
+
async getHookContent(hookType) {
|
|
102
|
+
const hookPath = resolve(this.hooksDir, hookType);
|
|
103
|
+
if (!existsSync(hookPath)) {
|
|
104
|
+
return null;
|
|
105
|
+
}
|
|
106
|
+
return await readFile(hookPath, 'utf-8');
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Verify git repository
|
|
110
|
+
*/
|
|
111
|
+
isGitRepository() {
|
|
112
|
+
return existsSync(resolve(this.projectRoot, '.git'));
|
|
113
|
+
}
|
|
114
|
+
// Private methods
|
|
115
|
+
async installHook(hookType, content, options) {
|
|
116
|
+
// Verify git repository
|
|
117
|
+
if (!this.isGitRepository()) {
|
|
118
|
+
throw new Error('Not a git repository');
|
|
119
|
+
}
|
|
120
|
+
// Ensure hooks directory exists
|
|
121
|
+
if (!existsSync(this.hooksDir)) {
|
|
122
|
+
await mkdir(this.hooksDir, { recursive: true });
|
|
123
|
+
}
|
|
124
|
+
const hookPath = resolve(this.hooksDir, hookType);
|
|
125
|
+
// Check if hook already exists
|
|
126
|
+
if (existsSync(hookPath) && !options.force && !options.append) {
|
|
127
|
+
throw new Error(`Hook ${hookType} already exists. Use --force to overwrite or --append to add to existing hook.`);
|
|
128
|
+
}
|
|
129
|
+
let finalContent = content;
|
|
130
|
+
if (options.append && existsSync(hookPath)) {
|
|
131
|
+
// Append to existing hook
|
|
132
|
+
const existing = await readFile(hookPath, 'utf-8');
|
|
133
|
+
// Check if AIWG section already exists
|
|
134
|
+
if (existing.includes('# AIWG')) {
|
|
135
|
+
throw new Error(`AIWG hook already exists in ${hookType}. Use --force to overwrite.`);
|
|
136
|
+
}
|
|
137
|
+
finalContent = `${existing}\n\n${content}`;
|
|
138
|
+
}
|
|
139
|
+
// Write hook file
|
|
140
|
+
await writeFile(hookPath, finalContent, 'utf-8');
|
|
141
|
+
// Make executable
|
|
142
|
+
await chmod(hookPath, 0o755);
|
|
143
|
+
}
|
|
144
|
+
generatePreCommitHook(configPath) {
|
|
145
|
+
const configArg = configPath ? ` --config ${configPath}` : '';
|
|
146
|
+
return `#!/bin/sh
|
|
147
|
+
# AIWG pre-commit hook
|
|
148
|
+
# Validates staged markdown and text files before commit
|
|
149
|
+
|
|
150
|
+
echo "Running AIWG validation..."
|
|
151
|
+
|
|
152
|
+
# Get staged files
|
|
153
|
+
STAGED_FILES=$(git diff --cached --name-only --diff-filter=ACM | grep -E '\\.(md|txt)$' || true)
|
|
154
|
+
|
|
155
|
+
if [ -z "$STAGED_FILES" ]; then
|
|
156
|
+
echo "No markdown or text files to validate"
|
|
157
|
+
exit 0
|
|
158
|
+
fi
|
|
159
|
+
|
|
160
|
+
# Run AIWG workflow
|
|
161
|
+
node tools/cli/aiwg.mjs workflow $STAGED_FILES${configArg}
|
|
162
|
+
RESULT=$?
|
|
163
|
+
|
|
164
|
+
if [ $RESULT -ne 0 ]; then
|
|
165
|
+
echo ""
|
|
166
|
+
echo "AIWG validation failed. Please fix issues before committing."
|
|
167
|
+
echo "To bypass this check, use: git commit --no-verify"
|
|
168
|
+
exit 1
|
|
169
|
+
fi
|
|
170
|
+
|
|
171
|
+
echo "AIWG validation passed"
|
|
172
|
+
exit 0
|
|
173
|
+
|
|
174
|
+
# END AIWG
|
|
175
|
+
`;
|
|
176
|
+
}
|
|
177
|
+
generatePrePushHook(configPath) {
|
|
178
|
+
const configArg = configPath ? ` --config ${configPath}` : '';
|
|
179
|
+
return `#!/bin/sh
|
|
180
|
+
# AIWG pre-push hook
|
|
181
|
+
# Validates all markdown and text files before push
|
|
182
|
+
|
|
183
|
+
echo "Running AIWG validation before push..."
|
|
184
|
+
|
|
185
|
+
# Find all markdown and text files
|
|
186
|
+
FILES=$(find . -type f \\( -name "*.md" -o -name "*.txt" \\) -not -path "*/node_modules/*" -not -path "*/.git/*" || true)
|
|
187
|
+
|
|
188
|
+
if [ -z "$FILES" ]; then
|
|
189
|
+
echo "No markdown or text files to validate"
|
|
190
|
+
exit 0
|
|
191
|
+
fi
|
|
192
|
+
|
|
193
|
+
# Run AIWG workflow
|
|
194
|
+
node tools/cli/aiwg.mjs workflow $FILES${configArg}
|
|
195
|
+
RESULT=$?
|
|
196
|
+
|
|
197
|
+
if [ $RESULT -ne 0 ]; then
|
|
198
|
+
echo ""
|
|
199
|
+
echo "AIWG validation failed. Please fix issues before pushing."
|
|
200
|
+
echo "To bypass this check, use: git push --no-verify"
|
|
201
|
+
exit 1
|
|
202
|
+
fi
|
|
203
|
+
|
|
204
|
+
echo "AIWG validation passed"
|
|
205
|
+
exit 0
|
|
206
|
+
|
|
207
|
+
# END AIWG
|
|
208
|
+
`;
|
|
209
|
+
}
|
|
210
|
+
async removeFile(path) {
|
|
211
|
+
const fs = await import('fs/promises');
|
|
212
|
+
await fs.unlink(path);
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* List all installed hooks
|
|
216
|
+
*/
|
|
217
|
+
async listInstalledHooks() {
|
|
218
|
+
const installed = [];
|
|
219
|
+
const hookTypes = ['pre-commit', 'pre-push'];
|
|
220
|
+
for (const hookType of hookTypes) {
|
|
221
|
+
if (this.isInstalled(hookType)) {
|
|
222
|
+
installed.push(hookType);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
return installed;
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Validate hook installation
|
|
229
|
+
*/
|
|
230
|
+
async validateHook(hookType) {
|
|
231
|
+
const hookPath = resolve(this.hooksDir, hookType);
|
|
232
|
+
if (!existsSync(hookPath)) {
|
|
233
|
+
return { valid: false, error: 'Hook file does not exist' };
|
|
234
|
+
}
|
|
235
|
+
try {
|
|
236
|
+
// Check if executable
|
|
237
|
+
await access(hookPath, constants.X_OK);
|
|
238
|
+
}
|
|
239
|
+
catch {
|
|
240
|
+
return { valid: false, error: 'Hook file is not executable' };
|
|
241
|
+
}
|
|
242
|
+
// Check if contains AIWG marker
|
|
243
|
+
const content = await readFile(hookPath, 'utf-8');
|
|
244
|
+
if (!content.includes('# AIWG')) {
|
|
245
|
+
return { valid: false, error: 'Hook does not contain AIWG marker' };
|
|
246
|
+
}
|
|
247
|
+
return { valid: true };
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
//# sourceMappingURL=git-hooks.js.map
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AgentCard CLI handler — `aiwg agentcard <verb> ...`.
|
|
3
|
+
*
|
|
4
|
+
* Verbs:
|
|
5
|
+
* verify Fetch an agentic-sandbox AgentCard from the well-known route,
|
|
6
|
+
* /v1/extendedAgentCard, or legacy /v1/card, then verify its
|
|
7
|
+
* Ed25519 JWS signature against a supplied JWKS.
|
|
8
|
+
*
|
|
9
|
+
* @implements @src/a2a/agent-card.ts
|
|
10
|
+
* @issue #1253
|
|
11
|
+
*/
|
|
12
|
+
import { fetchAgentCard } from '../../a2a/agent-card.js';
|
|
13
|
+
import { loadJwkSet } from '../../a2a/jws.js';
|
|
14
|
+
import { AiwgError, EXIT_CODES, handlerResultFromError } from '../errors.js';
|
|
15
|
+
function parseVerifyArgs(args) {
|
|
16
|
+
const get = (name) => {
|
|
17
|
+
const idx = args.indexOf(name);
|
|
18
|
+
if (idx >= 0 && idx + 1 < args.length)
|
|
19
|
+
return args[idx + 1];
|
|
20
|
+
return undefined;
|
|
21
|
+
};
|
|
22
|
+
const host = get('--host');
|
|
23
|
+
const instance = get('--instance');
|
|
24
|
+
if (!host) {
|
|
25
|
+
throw new AiwgError({
|
|
26
|
+
code: 'ERR_AGENTCARD_MISSING_HOST',
|
|
27
|
+
message: 'Missing --host',
|
|
28
|
+
exitCode: EXIT_CODES.USAGE,
|
|
29
|
+
hint: 'Example: aiwg agentcard verify --host https://exec.test --instance inst-1 --jwks /path/to/jwks.json',
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
if (!instance) {
|
|
33
|
+
throw new AiwgError({
|
|
34
|
+
code: 'ERR_AGENTCARD_MISSING_INSTANCE',
|
|
35
|
+
message: 'Missing --instance',
|
|
36
|
+
exitCode: EXIT_CODES.USAGE,
|
|
37
|
+
hint: 'Example: aiwg agentcard verify --host https://exec.test --instance inst-1 --jwks /path/to/jwks.json',
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
const jwks = get('--jwks');
|
|
41
|
+
const bearer = get('--bearer');
|
|
42
|
+
const skipVerify = args.includes('--skip-verify');
|
|
43
|
+
const json = args.includes('--json');
|
|
44
|
+
if (!jwks && !skipVerify) {
|
|
45
|
+
throw new AiwgError({
|
|
46
|
+
code: 'ERR_AGENTCARD_MISSING_JWKS',
|
|
47
|
+
message: '--jwks is required unless --skip-verify is set',
|
|
48
|
+
exitCode: EXIT_CODES.USAGE,
|
|
49
|
+
hint: 'Provide a JWKS file path or URL; or pass --skip-verify to bypass signature verification.',
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
const result = { host, instance, skipVerify, json };
|
|
53
|
+
if (jwks !== undefined)
|
|
54
|
+
result.jwks = jwks;
|
|
55
|
+
if (bearer !== undefined)
|
|
56
|
+
result.bearer = bearer;
|
|
57
|
+
return result;
|
|
58
|
+
}
|
|
59
|
+
async function loadJwksFromSource(source) {
|
|
60
|
+
if (/^https?:\/\//i.test(source)) {
|
|
61
|
+
const resp = await fetch(source);
|
|
62
|
+
if (resp.status !== 200) {
|
|
63
|
+
throw new AiwgError({
|
|
64
|
+
code: 'ERR_AGENTCARD_JWKS_FETCH',
|
|
65
|
+
message: `JWKS fetch failed: ${source} returned ${resp.status}`,
|
|
66
|
+
exitCode: EXIT_CODES.GENERAL,
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
return loadJwkSet(await resp.text());
|
|
70
|
+
}
|
|
71
|
+
const { readFile } = await import('node:fs/promises');
|
|
72
|
+
return loadJwkSet(await readFile(source, 'utf8'));
|
|
73
|
+
}
|
|
74
|
+
async function handleVerify(args) {
|
|
75
|
+
const parsed = parseVerifyArgs(args);
|
|
76
|
+
const opts = {
|
|
77
|
+
skipVerify: parsed.skipVerify,
|
|
78
|
+
};
|
|
79
|
+
if (parsed.bearer !== undefined)
|
|
80
|
+
opts.bearer = parsed.bearer;
|
|
81
|
+
if (parsed.jwks !== undefined && !parsed.skipVerify) {
|
|
82
|
+
opts.jwks = await loadJwksFromSource(parsed.jwks);
|
|
83
|
+
}
|
|
84
|
+
let verified;
|
|
85
|
+
try {
|
|
86
|
+
verified = await fetchAgentCard(parsed.host, parsed.instance, opts);
|
|
87
|
+
}
|
|
88
|
+
catch (err) {
|
|
89
|
+
const message = err.message;
|
|
90
|
+
if (parsed.json) {
|
|
91
|
+
console.log(JSON.stringify({
|
|
92
|
+
ok: false,
|
|
93
|
+
host: parsed.host,
|
|
94
|
+
instance: parsed.instance,
|
|
95
|
+
error: message,
|
|
96
|
+
}, null, 2));
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
console.error(`AgentCard verification FAILED for ${parsed.host}/${parsed.instance}`);
|
|
100
|
+
console.error(` ${message}`);
|
|
101
|
+
}
|
|
102
|
+
return { exitCode: EXIT_CODES.GENERAL };
|
|
103
|
+
}
|
|
104
|
+
if (parsed.json) {
|
|
105
|
+
console.log(JSON.stringify({
|
|
106
|
+
ok: true,
|
|
107
|
+
host: parsed.host,
|
|
108
|
+
instance: parsed.instance,
|
|
109
|
+
verifiedAt: verified.verifiedAt,
|
|
110
|
+
kid: verified.kid,
|
|
111
|
+
skipVerify: parsed.skipVerify,
|
|
112
|
+
card: {
|
|
113
|
+
name: verified.card.name,
|
|
114
|
+
protocolVersion: verified.card.protocolVersion,
|
|
115
|
+
url: verified.card.url,
|
|
116
|
+
version: verified.card.version,
|
|
117
|
+
preferredTransport: verified.card.preferredTransport,
|
|
118
|
+
capabilities: verified.card.capabilities,
|
|
119
|
+
skills: verified.card.skills,
|
|
120
|
+
},
|
|
121
|
+
}, null, 2));
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
const banner = parsed.skipVerify ? '(verification SKIPPED)' : 'VERIFIED';
|
|
125
|
+
console.log(`AgentCard ${banner} for ${parsed.host}/${parsed.instance}`);
|
|
126
|
+
console.log(` name: ${verified.card.name}`);
|
|
127
|
+
console.log(` protocolVersion: ${verified.card.protocolVersion}`);
|
|
128
|
+
console.log(` url: ${verified.card.url}`);
|
|
129
|
+
console.log(` version: ${verified.card.version}`);
|
|
130
|
+
if (verified.card.preferredTransport) {
|
|
131
|
+
console.log(` preferredTransport: ${verified.card.preferredTransport}`);
|
|
132
|
+
}
|
|
133
|
+
if (verified.kid) {
|
|
134
|
+
console.log(` signing kid: ${verified.kid}`);
|
|
135
|
+
}
|
|
136
|
+
console.log(` verifiedAt: ${verified.verifiedAt}`);
|
|
137
|
+
const exts = verified.card.capabilities?.extensions ?? [];
|
|
138
|
+
if (exts.length > 0) {
|
|
139
|
+
console.log(` extensions:`);
|
|
140
|
+
for (const e of exts) {
|
|
141
|
+
const tag = e.required ? '[required]' : '[optional]';
|
|
142
|
+
console.log(` ${tag} ${e.uri}`);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
const skills = verified.card.skills ?? [];
|
|
146
|
+
if (skills.length > 0) {
|
|
147
|
+
console.log(` skills (${skills.length}):`);
|
|
148
|
+
for (const s of skills.slice(0, 5)) {
|
|
149
|
+
console.log(` - ${s.id}${s.name ? ' (' + s.name + ')' : ''}`);
|
|
150
|
+
}
|
|
151
|
+
if (skills.length > 5)
|
|
152
|
+
console.log(` ... and ${skills.length - 5} more`);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
return { exitCode: 0 };
|
|
156
|
+
}
|
|
157
|
+
function printUsage() {
|
|
158
|
+
console.log('Usage: aiwg agentcard <verb> [options]');
|
|
159
|
+
console.log('');
|
|
160
|
+
console.log('Verbs:');
|
|
161
|
+
console.log(' verify Fetch and verify an AgentCard JWS signature');
|
|
162
|
+
console.log('');
|
|
163
|
+
console.log('verify options:');
|
|
164
|
+
console.log(' --host <url> Executor host (e.g. https://exec.test)');
|
|
165
|
+
console.log(' --instance <id> Instance id (UUIDv7)');
|
|
166
|
+
console.log(' --jwks <path|url> JWKS file path or URL (required unless --skip-verify)');
|
|
167
|
+
console.log(' --bearer <token> Optional bearer token for the card endpoint');
|
|
168
|
+
console.log(' --skip-verify Skip JWS verification (NOT recommended)');
|
|
169
|
+
console.log(' --json Emit JSON output');
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* agentcard command handler — dispatches on the first positional arg.
|
|
173
|
+
*/
|
|
174
|
+
export const agentcardHandler = {
|
|
175
|
+
id: 'agentcard',
|
|
176
|
+
name: 'AgentCard',
|
|
177
|
+
description: 'Fetch and verify an agentic-sandbox AgentCard',
|
|
178
|
+
category: 'toolsmith',
|
|
179
|
+
aliases: [],
|
|
180
|
+
async execute(ctx) {
|
|
181
|
+
try {
|
|
182
|
+
const args = ctx.args;
|
|
183
|
+
const verb = args[0];
|
|
184
|
+
if (!verb || verb === '--help' || verb === '-h') {
|
|
185
|
+
printUsage();
|
|
186
|
+
return { exitCode: verb ? 0 : EXIT_CODES.USAGE };
|
|
187
|
+
}
|
|
188
|
+
const rest = args.slice(1);
|
|
189
|
+
switch (verb) {
|
|
190
|
+
case 'verify':
|
|
191
|
+
return await handleVerify(rest);
|
|
192
|
+
default:
|
|
193
|
+
throw new AiwgError({
|
|
194
|
+
code: 'ERR_AGENTCARD_UNKNOWN_VERB',
|
|
195
|
+
message: `Unknown verb: ${verb}`,
|
|
196
|
+
exitCode: EXIT_CODES.USAGE,
|
|
197
|
+
hint: "Run 'aiwg agentcard --help' for usage.",
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
catch (err) {
|
|
202
|
+
return handlerResultFromError(err);
|
|
203
|
+
}
|
|
204
|
+
},
|
|
205
|
+
};
|
|
206
|
+
//# sourceMappingURL=agentcard.js.map
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { getProjectDir } from '../../config/aiwg-config.js';
|
|
2
|
+
import { moveProjectArtifacts } from '../../artifacts/move.js';
|
|
3
|
+
function usage() {
|
|
4
|
+
return [
|
|
5
|
+
'aiwg artifacts — Manage the project AIWG artifact root',
|
|
6
|
+
'',
|
|
7
|
+
'Usage:',
|
|
8
|
+
' aiwg artifacts move --to <path> [--from <path>] [--dry-run] [--force] [--no-reindex] [--no-sync]',
|
|
9
|
+
'',
|
|
10
|
+
'Notes:',
|
|
11
|
+
' --to points at the artifact directory itself, not its parent.',
|
|
12
|
+
' AIWG_ARTIFACTS_PATH overrides the generated .aiwg-location pointer.',
|
|
13
|
+
].join('\n');
|
|
14
|
+
}
|
|
15
|
+
function valueAfter(args, flag) {
|
|
16
|
+
const index = args.indexOf(flag);
|
|
17
|
+
if (index < 0)
|
|
18
|
+
return undefined;
|
|
19
|
+
const value = args[index + 1];
|
|
20
|
+
return value && !value.startsWith('-') ? value : undefined;
|
|
21
|
+
}
|
|
22
|
+
export const artifactsHandler = {
|
|
23
|
+
id: 'artifacts',
|
|
24
|
+
name: 'Project Artifacts',
|
|
25
|
+
description: 'Move or inspect the configured project AIWG artifact root',
|
|
26
|
+
category: 'index',
|
|
27
|
+
aliases: ['artifact'],
|
|
28
|
+
async execute(ctx) {
|
|
29
|
+
const action = ctx.args.find(arg => !arg.startsWith('-')) ?? 'help';
|
|
30
|
+
if (action === 'help' || ctx.args.includes('--help') || ctx.args.includes('-h')) {
|
|
31
|
+
return { exitCode: 0, message: usage() };
|
|
32
|
+
}
|
|
33
|
+
if (action !== 'move') {
|
|
34
|
+
return { exitCode: 1, message: `Unknown artifacts action: ${action}\n\n${usage()}` };
|
|
35
|
+
}
|
|
36
|
+
const to = valueAfter(ctx.args, '--to');
|
|
37
|
+
if (!to) {
|
|
38
|
+
return { exitCode: 1, message: `Error: --to <path> is required.\n\n${usage()}` };
|
|
39
|
+
}
|
|
40
|
+
try {
|
|
41
|
+
const result = await moveProjectArtifacts({
|
|
42
|
+
projectDir: getProjectDir(ctx, ctx.args),
|
|
43
|
+
from: valueAfter(ctx.args, '--from'),
|
|
44
|
+
to,
|
|
45
|
+
dryRun: ctx.dryRun || ctx.args.includes('--dry-run'),
|
|
46
|
+
force: ctx.args.includes('--force'),
|
|
47
|
+
reindex: !ctx.args.includes('--no-reindex'),
|
|
48
|
+
syncFortemi: !ctx.args.includes('--no-sync'),
|
|
49
|
+
});
|
|
50
|
+
const verb = result.dryRun ? 'Would move' : 'Moved';
|
|
51
|
+
return {
|
|
52
|
+
exitCode: 0,
|
|
53
|
+
message: [
|
|
54
|
+
`${verb} AIWG artifacts`,
|
|
55
|
+
` From: ${result.from}`,
|
|
56
|
+
` To: ${result.to}`,
|
|
57
|
+
` Pointer: ${result.pointerPath} -> ${result.pointerValue}`,
|
|
58
|
+
` Gitignore: ${result.gitignoreUpdated ? (result.dryRun ? 'would update' : 'updated') : 'already configured'}`,
|
|
59
|
+
` Reindex: ${result.reindexed ? 'rebuilt project graph' : result.dryRun ? 'would rebuild project graph' : 'skipped'}`,
|
|
60
|
+
` Fortemi sync: ${result.fortemiSynced ? 'updated' : result.dryRun ? 'would update' : 'skipped'}`,
|
|
61
|
+
'',
|
|
62
|
+
'If AIWG_ARTIFACTS_PATH is set in the shell, update it to the new path or unset it so .aiwg-location is used.',
|
|
63
|
+
].join('\n'),
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
return {
|
|
68
|
+
exitCode: 1,
|
|
69
|
+
error: error instanceof Error ? error : new Error(String(error)),
|
|
70
|
+
message: `Artifact move failed: ${error instanceof Error ? error.message : String(error)}`,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
};
|
|
75
|
+
export const artifactsHandlers = [artifactsHandler];
|
|
76
|
+
//# sourceMappingURL=artifacts.js.map
|