@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,301 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runtime Info Command Handler
|
|
3
|
+
*
|
|
4
|
+
* Runtime environment discovery and tool catalog management.
|
|
5
|
+
* Provides information about available tools, system resources, and runtime environment.
|
|
6
|
+
*
|
|
7
|
+
* @implements @.aiwg/architecture/decisions/ADR-001-unified-extension-system.md
|
|
8
|
+
* @source @src/cli/router.ts
|
|
9
|
+
* @issue #33
|
|
10
|
+
*/
|
|
11
|
+
import path from 'path';
|
|
12
|
+
import { AiwgError, EXIT_CODES, handlerResultFromError } from '../errors.js';
|
|
13
|
+
function isMissingRuntimeCatalogError(error) {
|
|
14
|
+
return error instanceof Error && error.message.includes('No catalog found');
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Runtime info command handler
|
|
18
|
+
*/
|
|
19
|
+
export const runtimeInfoHandler = {
|
|
20
|
+
id: 'runtime-info',
|
|
21
|
+
name: 'Runtime Info',
|
|
22
|
+
description: 'Runtime environment discovery and tool catalog',
|
|
23
|
+
category: 'toolsmith',
|
|
24
|
+
aliases: [],
|
|
25
|
+
async execute(ctx) {
|
|
26
|
+
try {
|
|
27
|
+
await handleRuntimeInfo(ctx.args, ctx.cwd);
|
|
28
|
+
return { exitCode: 0 };
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
const err = error;
|
|
32
|
+
if (isMissingRuntimeCatalogError(err)) {
|
|
33
|
+
console.log(`\nNo runtime catalog found.`);
|
|
34
|
+
console.log(`Run 'aiwg runtime-info --discover' to create one.`);
|
|
35
|
+
return { exitCode: 0 };
|
|
36
|
+
}
|
|
37
|
+
// AiwgError exitCode (USAGE=2, CONFIG=78, etc.) now propagates instead
|
|
38
|
+
// of being flattened to 1. Non-AiwgError throws still map to GENERAL=1.
|
|
39
|
+
return handlerResultFromError(err);
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Handle runtime info command logic
|
|
45
|
+
*/
|
|
46
|
+
async function handleRuntimeInfo(args, cwd = process.cwd()) {
|
|
47
|
+
const hasDiscover = args.includes('--discover');
|
|
48
|
+
const hasVerify = args.includes('--verify');
|
|
49
|
+
const hasJson = args.includes('--json');
|
|
50
|
+
const checkIndex = args.indexOf('--check');
|
|
51
|
+
const hasCheck = checkIndex >= 0;
|
|
52
|
+
const hasCapabilities = args.includes('--capabilities');
|
|
53
|
+
const hasProviders = args.includes('--providers');
|
|
54
|
+
const featureIndex = args.indexOf('--feature');
|
|
55
|
+
const hasFeature = featureIndex >= 0;
|
|
56
|
+
// --- Capability matrix queries (no RuntimeDiscovery needed) ---
|
|
57
|
+
if (hasProviders) {
|
|
58
|
+
const { collectProviderInventory } = await import('../../providers/provider-inventory.js');
|
|
59
|
+
const inventory = await collectProviderInventory(cwd);
|
|
60
|
+
if (hasJson) {
|
|
61
|
+
console.log(JSON.stringify(inventory, null, 2));
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
console.log('\nProvider Inventory');
|
|
65
|
+
console.log('==================');
|
|
66
|
+
for (const provider of inventory.providers) {
|
|
67
|
+
const states = [
|
|
68
|
+
provider.configured ? 'configured' : null,
|
|
69
|
+
provider.deployed ? 'deployed' : null,
|
|
70
|
+
provider.detected ? 'detected' : null,
|
|
71
|
+
provider.available ? 'available' : 'unavailable',
|
|
72
|
+
provider.active ? 'active' : null,
|
|
73
|
+
].filter(Boolean).join(', ');
|
|
74
|
+
console.log(`\n${provider.displayName} (${provider.id}): ${states}`);
|
|
75
|
+
for (const evidence of provider.evidence) {
|
|
76
|
+
console.log(` evidence: ${evidence.kind}/${evidence.scope} — ${evidence.value}`);
|
|
77
|
+
}
|
|
78
|
+
for (const reason of provider.reasons)
|
|
79
|
+
console.log(` note: ${reason}`);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
if (hasCapabilities || hasFeature) {
|
|
85
|
+
const { loadCapabilityMatrix, formatCapabilityTable, formatFeatureSupport, getProviderCapabilities, } = await import('../../providers/capability-matrix.js');
|
|
86
|
+
if (hasFeature) {
|
|
87
|
+
const featureName = args[featureIndex + 1];
|
|
88
|
+
if (!featureName) {
|
|
89
|
+
throw new AiwgError({
|
|
90
|
+
code: 'ERR_USAGE_MISSING_VALUE',
|
|
91
|
+
message: '--feature requires a feature name',
|
|
92
|
+
hint: 'Known: cron, agent_teams, tasks, mcp, behaviors, mission_control',
|
|
93
|
+
exitCode: EXIT_CODES.USAGE,
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
if (hasJson) {
|
|
97
|
+
const matrix = loadCapabilityMatrix();
|
|
98
|
+
const featureDef = matrix.features[featureName];
|
|
99
|
+
const support = {};
|
|
100
|
+
for (const [key, caps] of Object.entries(matrix.providers)) {
|
|
101
|
+
support[key] = {
|
|
102
|
+
native: caps.native_features[featureName] ?? false,
|
|
103
|
+
emulation: caps.emulation[featureName] ?? null,
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
console.log(JSON.stringify({ feature: featureName, definition: featureDef, providers: support }, null, 2));
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
console.log('\n' + formatFeatureSupport(featureName));
|
|
110
|
+
}
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
// --capabilities: show full matrix or provider-specific
|
|
114
|
+
const providerIndex = args.indexOf('--provider');
|
|
115
|
+
if (providerIndex >= 0) {
|
|
116
|
+
const providerName = args[providerIndex + 1];
|
|
117
|
+
if (!providerName) {
|
|
118
|
+
throw new AiwgError({
|
|
119
|
+
code: 'ERR_USAGE_MISSING_VALUE',
|
|
120
|
+
message: '--provider requires a provider name',
|
|
121
|
+
hint: 'Example: aiwg runtime-info --capabilities --provider claude',
|
|
122
|
+
exitCode: EXIT_CODES.USAGE,
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
const caps = getProviderCapabilities(providerName);
|
|
126
|
+
if (!caps) {
|
|
127
|
+
throw new AiwgError({
|
|
128
|
+
code: 'ERR_USAGE_UNKNOWN_PROVIDER',
|
|
129
|
+
message: `Unknown provider: ${providerName}`,
|
|
130
|
+
hint: `Known: ${Object.keys(loadCapabilityMatrix().providers).join(', ')}`,
|
|
131
|
+
exitCode: EXIT_CODES.USAGE,
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
if (hasJson) {
|
|
135
|
+
console.log(JSON.stringify({ provider: providerName, ...caps }, null, 2));
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
console.log(`\nProvider: ${caps.display_name} (${caps.status})`);
|
|
139
|
+
console.log(`Deploy target: ${caps.deploy_target}`);
|
|
140
|
+
console.log(`Aggregated output: ${caps.aggregated_output}`);
|
|
141
|
+
console.log(`\nArtifact paths:`);
|
|
142
|
+
for (const [type, path] of Object.entries(caps.artifact_paths)) {
|
|
143
|
+
console.log(` ${type}: ${path ?? '(none)'}`);
|
|
144
|
+
}
|
|
145
|
+
console.log(`\nFeatures:`);
|
|
146
|
+
for (const [feat, native] of Object.entries(caps.native_features)) {
|
|
147
|
+
const emu = caps.emulation[feat];
|
|
148
|
+
console.log(` ${feat}: ${native ? 'NATIVE' : emu ? `emulated (${emu})` : '--'}`);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
// Full matrix
|
|
154
|
+
if (hasJson) {
|
|
155
|
+
console.log(JSON.stringify(loadCapabilityMatrix(), null, 2));
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
console.log('\n' + formatCapabilityTable());
|
|
159
|
+
}
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
// --- Original RuntimeDiscovery logic ---
|
|
163
|
+
const { RuntimeDiscovery } = await import('../../smiths/toolsmith/runtime-discovery.mjs');
|
|
164
|
+
const discovery = new RuntimeDiscovery();
|
|
165
|
+
if (hasDiscover) {
|
|
166
|
+
// Full discovery
|
|
167
|
+
const catalog = await discovery.discover();
|
|
168
|
+
if (hasJson) {
|
|
169
|
+
console.log(JSON.stringify(catalog, null, 2));
|
|
170
|
+
}
|
|
171
|
+
else {
|
|
172
|
+
console.log(`\nDiscovery complete!`);
|
|
173
|
+
console.log(`Discovered ${catalog.tools.length} tools`);
|
|
174
|
+
console.log(`Unavailable: ${catalog.unavailable.length}`);
|
|
175
|
+
console.log(`\nCatalog saved to: ${path.join(discovery.basePath, 'runtime.json')}`);
|
|
176
|
+
console.log(`Human-readable: ${path.join(discovery.basePath, 'runtime-info.md')}`);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
else if (hasVerify) {
|
|
180
|
+
// Verify existing catalog
|
|
181
|
+
const result = await discovery.verify();
|
|
182
|
+
if (hasJson) {
|
|
183
|
+
console.log(JSON.stringify(result, null, 2));
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
console.log(`\nVerification complete!`);
|
|
187
|
+
console.log(`Valid: ${result.valid}/${result.total}`);
|
|
188
|
+
if (result.failed.length > 0) {
|
|
189
|
+
console.log(`\nFailed tools:`);
|
|
190
|
+
result.failed.forEach((tool) => {
|
|
191
|
+
console.log(` - ${tool.name} (${tool.id})`);
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
else if (hasCheck) {
|
|
197
|
+
// Check specific tool
|
|
198
|
+
const toolName = args[checkIndex + 1];
|
|
199
|
+
if (!toolName) {
|
|
200
|
+
throw new AiwgError({
|
|
201
|
+
code: 'ERR_USAGE_MISSING_VALUE',
|
|
202
|
+
message: '--check requires a tool name',
|
|
203
|
+
hint: 'Example: aiwg runtime-info --check git',
|
|
204
|
+
exitCode: EXIT_CODES.USAGE,
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
const check = await discovery.checkTool(toolName);
|
|
208
|
+
if (hasJson) {
|
|
209
|
+
console.log(JSON.stringify(check, null, 2));
|
|
210
|
+
}
|
|
211
|
+
else {
|
|
212
|
+
console.log(`\nTool: ${toolName}`);
|
|
213
|
+
if (check.available) {
|
|
214
|
+
console.log(`Status: Available`);
|
|
215
|
+
console.log(`Version: ${check.version}`);
|
|
216
|
+
console.log(`Path: ${check.path}`);
|
|
217
|
+
console.log(`Verified: ${check.lastVerified}`);
|
|
218
|
+
}
|
|
219
|
+
else {
|
|
220
|
+
console.log(`Status: Not Available`);
|
|
221
|
+
console.log(`Install: ${check.installHint}`);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
else {
|
|
226
|
+
// Show summary (default)
|
|
227
|
+
let summary;
|
|
228
|
+
try {
|
|
229
|
+
summary = await discovery.getSummary();
|
|
230
|
+
}
|
|
231
|
+
catch (error) {
|
|
232
|
+
if (!isMissingRuntimeCatalogError(error))
|
|
233
|
+
throw error;
|
|
234
|
+
if (!hasJson) {
|
|
235
|
+
console.log(`\nNo runtime catalog found; bootstrapping catalog...`);
|
|
236
|
+
}
|
|
237
|
+
await discovery.discover();
|
|
238
|
+
summary = await discovery.getSummary();
|
|
239
|
+
}
|
|
240
|
+
if (hasJson) {
|
|
241
|
+
console.log(JSON.stringify(summary, null, 2));
|
|
242
|
+
}
|
|
243
|
+
else {
|
|
244
|
+
console.log(`\nRuntime Environment Summary`);
|
|
245
|
+
console.log(`===========================`);
|
|
246
|
+
console.log(`\nOS: ${summary.environment.os} (${summary.environment.osVersion}) ${summary.environment.arch}`);
|
|
247
|
+
console.log(`Shell: ${summary.environment.shell}`);
|
|
248
|
+
console.log(`Memory: ${summary.resources.memoryAvailableGb} GB available / ${summary.resources.memoryTotalGb} GB total`);
|
|
249
|
+
console.log(`Disk: ${summary.resources.diskFreeGb} GB free`);
|
|
250
|
+
console.log(`CPU Cores: ${summary.resources.cpuCores}`);
|
|
251
|
+
console.log(`\nTool Categories:`);
|
|
252
|
+
console.log(` Core: ${summary.toolCounts.core} tools`);
|
|
253
|
+
console.log(` Languages: ${summary.toolCounts.languages} tools`);
|
|
254
|
+
console.log(` Utilities: ${summary.toolCounts.utilities} tools`);
|
|
255
|
+
console.log(` Custom: ${summary.toolCounts.custom} tools`);
|
|
256
|
+
console.log(`\nTotal: ${summary.totalTools} verified tools`);
|
|
257
|
+
console.log(`\nLast Discovery: ${summary.lastDiscovery}`);
|
|
258
|
+
console.log(`Catalog: ${summary.catalogPath}`);
|
|
259
|
+
// Scheduler backend detection
|
|
260
|
+
const { execSync } = await import('child_process');
|
|
261
|
+
let schedulerBackend = 'aiwg-cli (daemon)';
|
|
262
|
+
let chronyInstalled = false;
|
|
263
|
+
try {
|
|
264
|
+
execSync('which chronyc 2>/dev/null || which chronyd 2>/dev/null', { stdio: 'pipe' });
|
|
265
|
+
chronyInstalled = true;
|
|
266
|
+
}
|
|
267
|
+
catch {
|
|
268
|
+
// chrony not found
|
|
269
|
+
}
|
|
270
|
+
// Native CronCreate is only available when running inside a Claude Code agent context.
|
|
271
|
+
// The CLI itself cannot call agent tools, so we report based on platform heuristics.
|
|
272
|
+
// When invoked from within an agent, the schedule skill performs live detection.
|
|
273
|
+
const isClaudeCodeContext = process.env.CLAUDE_CODE_VERSION !== undefined ||
|
|
274
|
+
process.env.ANTHROPIC_API_KEY !== undefined;
|
|
275
|
+
if (isClaudeCodeContext) {
|
|
276
|
+
schedulerBackend = 'native-cron (CronCreate) / aiwg-cli fallback';
|
|
277
|
+
}
|
|
278
|
+
console.log(`\nScheduler:`);
|
|
279
|
+
console.log(` Backend: ${schedulerBackend}`);
|
|
280
|
+
console.log(` Chrony: ${chronyInstalled ? '✓ installed (precise NTP)' : '✗ not installed (install for precise timing)'}`);
|
|
281
|
+
if (!chronyInstalled) {
|
|
282
|
+
console.log(`\n To install chrony for more precise cron scheduling:`);
|
|
283
|
+
console.log(` Ubuntu/Debian: sudo apt install chrony`);
|
|
284
|
+
console.log(` RHEL/Fedora: sudo dnf install chrony`);
|
|
285
|
+
console.log(` macOS: brew install chrony`);
|
|
286
|
+
}
|
|
287
|
+
// Team backend detection
|
|
288
|
+
const teamBackend = isClaudeCodeContext
|
|
289
|
+
? 'native (Claude Code agent teams)'
|
|
290
|
+
: 'aiwg mc emulation';
|
|
291
|
+
console.log(`\nAgent Teams:`);
|
|
292
|
+
console.log(` Backend: ${teamBackend}`);
|
|
293
|
+
if (!isClaudeCodeContext) {
|
|
294
|
+
console.log(` Note: Run 'aiwg team run <name>' to dispatch via Mission Control`);
|
|
295
|
+
}
|
|
296
|
+
console.log(`\nRun 'aiwg runtime-info --discover' to refresh catalog`);
|
|
297
|
+
console.log(`\nRun 'aiwg runtime-info --check <tool>' to check a specific tool`);
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
//# sourceMappingURL=runtime-info.js.map
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sandbox Command Handler
|
|
3
|
+
*
|
|
4
|
+
* Thin CLI wrappers over aiwg serve sandbox REST endpoints.
|
|
5
|
+
*
|
|
6
|
+
* Subcommands:
|
|
7
|
+
* alias <sandbox-id> <agent-id> <name> Assign a logical name to an agent (#917)
|
|
8
|
+
* resolve <ref> Resolve an agent by name/instanceId/agentId
|
|
9
|
+
* identities [--json] List all known agent identities
|
|
10
|
+
*
|
|
11
|
+
* @issue #917
|
|
12
|
+
*/
|
|
13
|
+
import * as ui from '../ui.js';
|
|
14
|
+
function getServeBase() {
|
|
15
|
+
const port = process.env['AIWG_SERVE_PORT'] ?? '7337';
|
|
16
|
+
return `http://127.0.0.1:${port}`;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Default timeout for CLI → local aiwg serve REST calls. A wedged serve must
|
|
20
|
+
* not hang the CLI indefinitely. Overridable via AIWG_FETCH_TIMEOUT_MS for
|
|
21
|
+
* slow local environments or integration tests.
|
|
22
|
+
*/
|
|
23
|
+
function fetchTimeoutMs() {
|
|
24
|
+
const raw = process.env['AIWG_FETCH_TIMEOUT_MS'];
|
|
25
|
+
const n = raw ? parseInt(raw, 10) : NaN;
|
|
26
|
+
return Number.isFinite(n) && n > 0 ? n : 5_000;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Format a single-line error message distinguishing fetch timeout from
|
|
30
|
+
* other unreachable-serve conditions. Timeouts produced by
|
|
31
|
+
* AbortSignal.timeout() surface as DOMException with `name === 'TimeoutError'`
|
|
32
|
+
* under Node 20+.
|
|
33
|
+
*/
|
|
34
|
+
function reachabilityMessage(err) {
|
|
35
|
+
const name = err instanceof Error ? err.name : '';
|
|
36
|
+
if (name === 'TimeoutError') {
|
|
37
|
+
return `aiwg serve timed out after ${fetchTimeoutMs()}ms. Is it wedged? Try: curl ${getServeBase()}/api/health`;
|
|
38
|
+
}
|
|
39
|
+
return `Cannot reach aiwg serve. Start it with: aiwg serve`;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Combine the handler's user-cancel signal (Ctrl-C) with a per-call
|
|
43
|
+
* timeout so fetches abort on either. Node 20+ `AbortSignal.any` is
|
|
44
|
+
* required; handlers without `ctx.signal` (older test fixtures) fall
|
|
45
|
+
* back to the timeout alone.
|
|
46
|
+
*/
|
|
47
|
+
function combineSignal(ctxSignal, timeoutMs) {
|
|
48
|
+
const timeoutSignal = AbortSignal.timeout(timeoutMs);
|
|
49
|
+
if (!ctxSignal)
|
|
50
|
+
return timeoutSignal;
|
|
51
|
+
return AbortSignal.any([ctxSignal, timeoutSignal]);
|
|
52
|
+
}
|
|
53
|
+
async function sandboxAlias(ctx) {
|
|
54
|
+
const [sandboxId, agentId, ...nameParts] = ctx.args;
|
|
55
|
+
const name = nameParts.join(' ');
|
|
56
|
+
if (!sandboxId || !agentId || !name) {
|
|
57
|
+
ui.error('Usage: aiwg sandbox alias <sandbox-id> <agent-id> <name>');
|
|
58
|
+
ui.info('Example: aiwg sandbox alias sb-abc123 agent-01 security-01');
|
|
59
|
+
return { exitCode: 1 };
|
|
60
|
+
}
|
|
61
|
+
const base = getServeBase();
|
|
62
|
+
try {
|
|
63
|
+
const resp = await fetch(`${base}/api/sandboxes/${encodeURIComponent(sandboxId)}/agents/${encodeURIComponent(agentId)}/alias`, {
|
|
64
|
+
method: 'POST',
|
|
65
|
+
headers: { 'Content-Type': 'application/json' },
|
|
66
|
+
body: JSON.stringify({ name }),
|
|
67
|
+
signal: combineSignal(ctx.signal, fetchTimeoutMs()),
|
|
68
|
+
});
|
|
69
|
+
if (!resp.ok) {
|
|
70
|
+
const body = await resp.json().catch(() => ({ error: resp.statusText }));
|
|
71
|
+
ui.error(`alias failed (${resp.status}): ${body.error ?? resp.statusText}`);
|
|
72
|
+
return { exitCode: 1 };
|
|
73
|
+
}
|
|
74
|
+
const result = await resp.json();
|
|
75
|
+
ui.success(`Agent ${agentId} aliased as "${result.logicalName}"`);
|
|
76
|
+
return { exitCode: 0 };
|
|
77
|
+
}
|
|
78
|
+
catch (err) {
|
|
79
|
+
ui.error(reachabilityMessage(err));
|
|
80
|
+
return { exitCode: 1 };
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
async function sandboxResolve(ctx) {
|
|
84
|
+
const ref = ctx.args[0];
|
|
85
|
+
if (!ref) {
|
|
86
|
+
ui.error('Usage: aiwg sandbox resolve <name-or-instanceId-or-agentId>');
|
|
87
|
+
return { exitCode: 1 };
|
|
88
|
+
}
|
|
89
|
+
const base = getServeBase();
|
|
90
|
+
try {
|
|
91
|
+
const resp = await fetch(`${base}/api/agents/resolve/${encodeURIComponent(ref)}`, {
|
|
92
|
+
signal: combineSignal(ctx.signal, fetchTimeoutMs()),
|
|
93
|
+
});
|
|
94
|
+
if (!resp.ok) {
|
|
95
|
+
const body = await resp.json().catch(() => ({ error: resp.statusText }));
|
|
96
|
+
ui.error(`resolve failed (${resp.status}): ${body.error ?? resp.statusText}`);
|
|
97
|
+
return { exitCode: 1 };
|
|
98
|
+
}
|
|
99
|
+
const result = await resp.json();
|
|
100
|
+
const agent = result.agent;
|
|
101
|
+
console.log(`sandbox: ${result.sandboxName} (${result.sandboxId})`);
|
|
102
|
+
console.log(`agentId: ${agent['agentId'] ?? '?'}`);
|
|
103
|
+
console.log(`instanceId: ${agent['instanceId'] ?? '(none)'}`);
|
|
104
|
+
console.log(`name: ${agent['logicalName'] ?? '(none)'}`);
|
|
105
|
+
console.log(`status: ${agent['status'] ?? '?'}`);
|
|
106
|
+
return { exitCode: 0 };
|
|
107
|
+
}
|
|
108
|
+
catch (err) {
|
|
109
|
+
ui.error(reachabilityMessage(err));
|
|
110
|
+
return { exitCode: 1 };
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
async function sandboxIdentities(ctx) {
|
|
114
|
+
const json = ctx.args.includes('--json');
|
|
115
|
+
const base = getServeBase();
|
|
116
|
+
try {
|
|
117
|
+
const resp = await fetch(`${base}/api/agents/identities`, {
|
|
118
|
+
signal: combineSignal(ctx.signal, fetchTimeoutMs()),
|
|
119
|
+
});
|
|
120
|
+
if (!resp.ok) {
|
|
121
|
+
ui.error(`identities failed (${resp.status}): ${resp.statusText}`);
|
|
122
|
+
return { exitCode: 1 };
|
|
123
|
+
}
|
|
124
|
+
const result = await resp.json();
|
|
125
|
+
if (json) {
|
|
126
|
+
console.log(JSON.stringify(result, null, 2));
|
|
127
|
+
return { exitCode: 0 };
|
|
128
|
+
}
|
|
129
|
+
if (!result.identities.length) {
|
|
130
|
+
ui.info('No agent identities recorded yet.');
|
|
131
|
+
return { exitCode: 0 };
|
|
132
|
+
}
|
|
133
|
+
ui.blank();
|
|
134
|
+
console.log(` ${ui.brandMark()} ${ui.bold('Agent Identities')}`);
|
|
135
|
+
ui.rule();
|
|
136
|
+
for (const id of result.identities) {
|
|
137
|
+
const name = id['logicalName'];
|
|
138
|
+
const instanceId = id['instanceId'];
|
|
139
|
+
const lastSeen = id['lastSeenAt'];
|
|
140
|
+
console.log(` • ${ui.bold(name ?? instanceId)}`);
|
|
141
|
+
if (name)
|
|
142
|
+
console.log(` instanceId: ${instanceId}`);
|
|
143
|
+
console.log(` lastSeen: ${lastSeen}`);
|
|
144
|
+
}
|
|
145
|
+
ui.blank();
|
|
146
|
+
return { exitCode: 0 };
|
|
147
|
+
}
|
|
148
|
+
catch (err) {
|
|
149
|
+
ui.error(reachabilityMessage(err));
|
|
150
|
+
return { exitCode: 1 };
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
const subcommands = {
|
|
154
|
+
alias: sandboxAlias,
|
|
155
|
+
resolve: sandboxResolve,
|
|
156
|
+
identities: sandboxIdentities,
|
|
157
|
+
};
|
|
158
|
+
function showSandboxHelp() {
|
|
159
|
+
ui.blank();
|
|
160
|
+
console.log(` ${ui.brandMark()} ${ui.bold('Sandbox')} — CLI access to sandbox agent management`);
|
|
161
|
+
ui.rule();
|
|
162
|
+
console.log(`
|
|
163
|
+
${ui.bold('Usage:')} aiwg sandbox <subcommand> [options]
|
|
164
|
+
|
|
165
|
+
${ui.bold('Subcommands:')}
|
|
166
|
+
alias <sb> <agent> <name> Assign a stable logical name to an agent (#917)
|
|
167
|
+
resolve <ref> Resolve agent by name / instanceId / agentId
|
|
168
|
+
identities [--json] List all known persistent agent identities
|
|
169
|
+
|
|
170
|
+
${ui.bold('Examples:')}
|
|
171
|
+
aiwg sandbox alias sb-abc123 agent-01 security-01
|
|
172
|
+
aiwg sandbox resolve security-01
|
|
173
|
+
aiwg sandbox identities
|
|
174
|
+
`);
|
|
175
|
+
}
|
|
176
|
+
export const sandboxHandler = {
|
|
177
|
+
id: 'sandbox',
|
|
178
|
+
name: 'Sandbox',
|
|
179
|
+
description: 'Sandbox agent management (alias, resolve, identities)',
|
|
180
|
+
category: 'sandbox',
|
|
181
|
+
aliases: [],
|
|
182
|
+
async execute(ctx) {
|
|
183
|
+
const subcmd = ctx.args[0];
|
|
184
|
+
if (!subcmd || subcmd === '--help' || subcmd === '-h') {
|
|
185
|
+
showSandboxHelp();
|
|
186
|
+
return { exitCode: 0 };
|
|
187
|
+
}
|
|
188
|
+
const handler = subcommands[subcmd];
|
|
189
|
+
if (!handler) {
|
|
190
|
+
ui.error(`Unknown subcommand: ${subcmd}. Run 'aiwg sandbox --help' for usage.`);
|
|
191
|
+
return { exitCode: 1 };
|
|
192
|
+
}
|
|
193
|
+
return handler({ ...ctx, args: ctx.args.slice(1) });
|
|
194
|
+
},
|
|
195
|
+
};
|
|
196
|
+
export const sandboxHandlers = [sandboxHandler];
|
|
197
|
+
//# sourceMappingURL=sandbox.js.map
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scaffolding Command Handlers
|
|
3
|
+
*
|
|
4
|
+
* Handlers for code generation and project scaffolding commands.
|
|
5
|
+
* Each handler delegates to existing scripts in tools/scaffolding/.
|
|
6
|
+
*
|
|
7
|
+
* @implements @.aiwg/architecture/decisions/ADR-001-unified-extension-system.md
|
|
8
|
+
* @tests @test/unit/cli/handlers/scaffolding.test.ts
|
|
9
|
+
* @issue #33
|
|
10
|
+
*/
|
|
11
|
+
import { createScriptRunner } from './script-runner.js';
|
|
12
|
+
import { getFrameworkRoot } from '../../channel/manager.mjs';
|
|
13
|
+
/**
|
|
14
|
+
* Base class for scaffolding handlers that delegate to scripts
|
|
15
|
+
*/
|
|
16
|
+
class ScaffoldingHandler {
|
|
17
|
+
category = 'scaffolding';
|
|
18
|
+
get aliases() {
|
|
19
|
+
return [this.id];
|
|
20
|
+
}
|
|
21
|
+
async execute(ctx) {
|
|
22
|
+
const frameworkRoot = await getFrameworkRoot();
|
|
23
|
+
const runner = createScriptRunner(frameworkRoot);
|
|
24
|
+
return runner.run(this.scriptPath, ctx.args);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Add Agent Handler
|
|
29
|
+
*
|
|
30
|
+
* Scaffolds a new agent definition (specialist AI persona).
|
|
31
|
+
*/
|
|
32
|
+
class AddAgentHandler extends ScaffoldingHandler {
|
|
33
|
+
id = 'add-agent';
|
|
34
|
+
name = 'Add Agent';
|
|
35
|
+
description = 'Create a new agent definition';
|
|
36
|
+
scriptPath = 'tools/scaffolding/add-agent.mjs';
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Add Command Handler
|
|
40
|
+
*
|
|
41
|
+
* Scaffolds a new slash command for Claude Code/Cursor.
|
|
42
|
+
*
|
|
43
|
+
* @deprecated Use `aiwg add-skill` instead. Commands are now generated from
|
|
44
|
+
* skills at deploy time. See ADR: Skills as Canonical Extension Type.
|
|
45
|
+
*/
|
|
46
|
+
class AddCommandHandler extends ScaffoldingHandler {
|
|
47
|
+
id = 'add-command';
|
|
48
|
+
name = 'Add Command';
|
|
49
|
+
description = 'Create a new slash command (deprecated — use add-skill)';
|
|
50
|
+
scriptPath = 'tools/scaffolding/add-command.mjs';
|
|
51
|
+
async execute(ctx) {
|
|
52
|
+
console.warn('\x1b[33m⚠ DEPRECATED:\x1b[0m `aiwg add-command` is deprecated. ' +
|
|
53
|
+
'Use `aiwg add-skill` instead.\n' +
|
|
54
|
+
' Commands are now generated from skills at deploy time.\n' +
|
|
55
|
+
' See: .aiwg/architecture/adr-skills-canonical-extension-type.md\n');
|
|
56
|
+
return super.execute(ctx);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Add Skill Handler
|
|
61
|
+
*
|
|
62
|
+
* Scaffolds a new skill (SKILL.md format) — the canonical extension type for workflows.
|
|
63
|
+
*/
|
|
64
|
+
class AddSkillHandler extends ScaffoldingHandler {
|
|
65
|
+
id = 'add-skill';
|
|
66
|
+
name = 'Add Skill';
|
|
67
|
+
description = 'Create a new skill (canonical workflow format)';
|
|
68
|
+
scriptPath = 'tools/scaffolding/add-skill.mjs';
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Add Template Handler
|
|
72
|
+
*
|
|
73
|
+
* Scaffolds a new document template.
|
|
74
|
+
*/
|
|
75
|
+
class AddTemplateHandler extends ScaffoldingHandler {
|
|
76
|
+
id = 'add-template';
|
|
77
|
+
name = 'Add Template';
|
|
78
|
+
description = 'Create a new document template';
|
|
79
|
+
scriptPath = 'tools/scaffolding/add-template.mjs';
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Scaffold Addon Handler
|
|
83
|
+
*
|
|
84
|
+
* Scaffolds a complete AIWG addon with structure and manifest.
|
|
85
|
+
*/
|
|
86
|
+
class ScaffoldAddonHandler extends ScaffoldingHandler {
|
|
87
|
+
id = 'scaffold-addon';
|
|
88
|
+
name = 'Scaffold Addon';
|
|
89
|
+
description = 'Create a new AIWG addon';
|
|
90
|
+
scriptPath = 'tools/scaffolding/scaffold-addon.mjs';
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Scaffold Extension Handler
|
|
94
|
+
*
|
|
95
|
+
* Scaffolds a platform-specific extension (plugin, integration).
|
|
96
|
+
*/
|
|
97
|
+
class ScaffoldExtensionHandler extends ScaffoldingHandler {
|
|
98
|
+
id = 'scaffold-extension';
|
|
99
|
+
name = 'Scaffold Extension';
|
|
100
|
+
description = 'Create a new platform extension';
|
|
101
|
+
scriptPath = 'tools/scaffolding/scaffold-extension.mjs';
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Add Behavior Handler
|
|
105
|
+
*
|
|
106
|
+
* Scaffolds a new behavior with BEHAVIOR.md and scripts/.
|
|
107
|
+
*/
|
|
108
|
+
class AddBehaviorHandler extends ScaffoldingHandler {
|
|
109
|
+
id = 'add-behavior';
|
|
110
|
+
name = 'Add Behavior';
|
|
111
|
+
description = 'Create a new behavior with hooks and scripts';
|
|
112
|
+
scriptPath = 'tools/scaffolding/add-behavior.mjs';
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Scaffold Framework Handler
|
|
116
|
+
*
|
|
117
|
+
* Scaffolds a complete AIWG framework with agents, commands, and docs.
|
|
118
|
+
*/
|
|
119
|
+
class ScaffoldFrameworkHandler extends ScaffoldingHandler {
|
|
120
|
+
id = 'scaffold-framework';
|
|
121
|
+
name = 'Scaffold Framework';
|
|
122
|
+
description = 'Create a new AIWG framework';
|
|
123
|
+
scriptPath = 'tools/scaffolding/scaffold-framework.mjs';
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Exported handler instances
|
|
127
|
+
*/
|
|
128
|
+
export const addAgentHandler = new AddAgentHandler();
|
|
129
|
+
export const addCommandHandler = new AddCommandHandler();
|
|
130
|
+
export const addSkillHandler = new AddSkillHandler();
|
|
131
|
+
export const addBehaviorHandler = new AddBehaviorHandler();
|
|
132
|
+
export const addTemplateHandler = new AddTemplateHandler();
|
|
133
|
+
export const scaffoldAddonHandler = new ScaffoldAddonHandler();
|
|
134
|
+
export const scaffoldExtensionHandler = new ScaffoldExtensionHandler();
|
|
135
|
+
export const scaffoldFrameworkHandler = new ScaffoldFrameworkHandler();
|
|
136
|
+
/**
|
|
137
|
+
* All scaffolding handlers for registration
|
|
138
|
+
*/
|
|
139
|
+
export const scaffoldingHandlers = [
|
|
140
|
+
addAgentHandler,
|
|
141
|
+
addCommandHandler,
|
|
142
|
+
addSkillHandler,
|
|
143
|
+
addBehaviorHandler,
|
|
144
|
+
addTemplateHandler,
|
|
145
|
+
scaffoldAddonHandler,
|
|
146
|
+
scaffoldExtensionHandler,
|
|
147
|
+
scaffoldFrameworkHandler,
|
|
148
|
+
];
|
|
149
|
+
//# sourceMappingURL=scaffolding.js.map
|