@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,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Version Command Handler
|
|
3
|
+
*
|
|
4
|
+
* Displays version and channel information for the AIWG installation.
|
|
5
|
+
* Supports --verbose / --json for full environment fingerprint (Phase 4.5 #925).
|
|
6
|
+
*
|
|
7
|
+
* @implements @.aiwg/architecture/decisions/ADR-001-unified-extension-system.md
|
|
8
|
+
* @source @src/cli/router.ts
|
|
9
|
+
* @issue #33, #925
|
|
10
|
+
*/
|
|
11
|
+
import { getVersionInfo } from '../../channel/manager.mjs';
|
|
12
|
+
import { getLoggerInfo } from '../log.js';
|
|
13
|
+
import * as ui from '../ui.js';
|
|
14
|
+
import { maybePrintCommunityFooter } from '../../community/footer.js';
|
|
15
|
+
import { existsSync, statSync, readdirSync } from 'fs';
|
|
16
|
+
import path from 'path';
|
|
17
|
+
/**
|
|
18
|
+
* Version command handler
|
|
19
|
+
*/
|
|
20
|
+
export const versionHandler = {
|
|
21
|
+
id: 'version',
|
|
22
|
+
name: 'Version',
|
|
23
|
+
description: 'Show version and channel info (--verbose for full env fingerprint, --json for machine-readable)',
|
|
24
|
+
category: 'maintenance',
|
|
25
|
+
aliases: ['-version', '--version'],
|
|
26
|
+
async execute(ctx) {
|
|
27
|
+
const verbose = ctx.args.includes('--verbose') || ctx.args.includes('-v') || ctx.args.includes('-vv') || ctx.args.includes('-vvv');
|
|
28
|
+
const json = ctx.args.includes('--json');
|
|
29
|
+
await displayVersion({ verbose, json });
|
|
30
|
+
return { exitCode: 0 };
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
function collectFingerprint(versionInfo) {
|
|
34
|
+
const loggerInfo = getLoggerInfo();
|
|
35
|
+
const fp = {
|
|
36
|
+
version: versionInfo.version,
|
|
37
|
+
channel: versionInfo.devMode ? 'dev' : versionInfo.channel,
|
|
38
|
+
packageRoot: versionInfo.packageRoot,
|
|
39
|
+
node: process.version,
|
|
40
|
+
platform: {
|
|
41
|
+
os: process.platform,
|
|
42
|
+
arch: process.arch,
|
|
43
|
+
release: loggerInfo.provenance.os_release,
|
|
44
|
+
},
|
|
45
|
+
tty: {
|
|
46
|
+
stdin: !!process.stdin.isTTY,
|
|
47
|
+
stdout: !!process.stdout.isTTY,
|
|
48
|
+
stderr: !!process.stderr.isTTY,
|
|
49
|
+
},
|
|
50
|
+
logger: {
|
|
51
|
+
level: loggerInfo.level,
|
|
52
|
+
disabled: loggerInfo.disabled,
|
|
53
|
+
logFile: loggerInfo.logFile,
|
|
54
|
+
},
|
|
55
|
+
invocation_id: loggerInfo.provenance.invocation_id,
|
|
56
|
+
};
|
|
57
|
+
if (versionInfo.gitHash) {
|
|
58
|
+
fp.git = {
|
|
59
|
+
sha: versionInfo.gitHash,
|
|
60
|
+
branch: versionInfo.gitBranch ?? '(unknown)',
|
|
61
|
+
path: versionInfo.edgePath ?? versionInfo.packageRoot,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
// Locale / timezone are useful for timezone-dependent bug reports.
|
|
65
|
+
try {
|
|
66
|
+
fp.locale = Intl.DateTimeFormat().resolvedOptions().locale;
|
|
67
|
+
fp.timezone = Intl.DateTimeFormat().resolvedOptions().timeZone;
|
|
68
|
+
}
|
|
69
|
+
catch { /* ignore */ }
|
|
70
|
+
// Log file stats — "you've written N records today, file is X MB".
|
|
71
|
+
if (loggerInfo.logFile && existsSync(loggerInfo.logFile)) {
|
|
72
|
+
try {
|
|
73
|
+
fp.logger.logFileSize = statSync(loggerInfo.logFile).size;
|
|
74
|
+
// Cheap line count via readdirSync of the log directory — not the line
|
|
75
|
+
// count itself (avoids reading the whole file).
|
|
76
|
+
const dir = path.dirname(loggerInfo.logFile);
|
|
77
|
+
const today = new Date().toISOString().slice(0, 10);
|
|
78
|
+
const file = readdirSync(dir).find(f => f === `aiwg-${today}.jsonl`);
|
|
79
|
+
if (file) {
|
|
80
|
+
// Defer actual line count to aiwg diagnose; here we just signal presence.
|
|
81
|
+
fp.logger.recordsToday = undefined;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
catch { /* ignore */ }
|
|
85
|
+
}
|
|
86
|
+
return fp;
|
|
87
|
+
}
|
|
88
|
+
async function displayVersion(opts) {
|
|
89
|
+
const info = await getVersionInfo();
|
|
90
|
+
const fp = collectFingerprint(info);
|
|
91
|
+
if (opts.json) {
|
|
92
|
+
console.log(JSON.stringify(fp, null, 2));
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
ui.blank();
|
|
96
|
+
console.log(` ${ui.brandMark()} ${ui.bold('aiwg')} ${ui.bold(fp.version)} ${ui.channelLabel(fp.channel)}`);
|
|
97
|
+
if (!opts.verbose) {
|
|
98
|
+
if (fp.git) {
|
|
99
|
+
ui.dim(` git: ${fp.git.sha} (${fp.git.branch})`);
|
|
100
|
+
ui.dim(` path: ${fp.git.path}`);
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
ui.dim(` path: ${fp.packageRoot}`);
|
|
104
|
+
}
|
|
105
|
+
maybePrintCommunityFooter();
|
|
106
|
+
ui.blank();
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
// --verbose: the full environment fingerprint.
|
|
110
|
+
if (fp.git) {
|
|
111
|
+
ui.dim(` git: ${fp.git.sha} (${fp.git.branch})`);
|
|
112
|
+
ui.dim(` path: ${fp.git.path}`);
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
ui.dim(` path: ${fp.packageRoot}`);
|
|
116
|
+
}
|
|
117
|
+
ui.dim(` channel: ${fp.channel}`);
|
|
118
|
+
ui.dim(` node: ${fp.node}`);
|
|
119
|
+
ui.dim(` platform: ${fp.platform.os} ${fp.platform.arch} (${fp.platform.release})`);
|
|
120
|
+
ui.dim(` tty: stdin=${fp.tty.stdin} stdout=${fp.tty.stdout} stderr=${fp.tty.stderr}`);
|
|
121
|
+
if (fp.locale)
|
|
122
|
+
ui.dim(` locale: ${fp.locale} (TZ=${fp.timezone})`);
|
|
123
|
+
const logDesc = fp.logger.disabled
|
|
124
|
+
? '(disabled via AIWG_LOG_DISABLE)'
|
|
125
|
+
: fp.logger.logFile
|
|
126
|
+
? `${fp.logger.logFile}${fp.logger.logFileSize !== undefined ? ` (${(fp.logger.logFileSize / 1024).toFixed(1)} KB)` : ''}`
|
|
127
|
+
: '(stderr only)';
|
|
128
|
+
ui.dim(` log: ${logDesc}`);
|
|
129
|
+
ui.dim(` level: ${fp.logger.level}`);
|
|
130
|
+
ui.dim(` invocation:${fp.invocation_id}`);
|
|
131
|
+
maybePrintCommunityFooter();
|
|
132
|
+
ui.blank();
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=version.js.map
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { handlerResultFromError } from '../errors.js';
|
|
2
|
+
import { auditWorkspaceContext, diagnoseWorkspaceContext, migrateWorkspaceContext, rollbackWorkspaceContext, } from '../../smiths/context-pipeline/workspace-context.js';
|
|
3
|
+
function printHelp() {
|
|
4
|
+
console.log(`
|
|
5
|
+
aiwg workspace-context — Audit and migrate provider context into WORKSPACE.md
|
|
6
|
+
|
|
7
|
+
Usage:
|
|
8
|
+
aiwg workspace-context audit [--json]
|
|
9
|
+
aiwg workspace-context migrate --dry-run [--json]
|
|
10
|
+
aiwg workspace-context migrate --apply [--allow-conflicts] [--json]
|
|
11
|
+
aiwg workspace-context rollback [transaction-id] [--json]
|
|
12
|
+
aiwg workspace-context doctor [--json]
|
|
13
|
+
|
|
14
|
+
Migration is opt-in. Audit and dry-run never write. Apply records source
|
|
15
|
+
attribution and preimages under .aiwg/context-migrations/ for rollback.
|
|
16
|
+
`);
|
|
17
|
+
}
|
|
18
|
+
export const workspaceContextHandler = {
|
|
19
|
+
id: 'workspace-context',
|
|
20
|
+
name: 'Workspace Context',
|
|
21
|
+
description: 'Audit, migrate, diagnose, and roll back canonical WORKSPACE.md context',
|
|
22
|
+
category: 'maintenance',
|
|
23
|
+
aliases: [],
|
|
24
|
+
async execute(ctx) {
|
|
25
|
+
try {
|
|
26
|
+
if (ctx.args.includes('--help') || ctx.args.includes('-h')) {
|
|
27
|
+
printHelp();
|
|
28
|
+
return { exitCode: 0 };
|
|
29
|
+
}
|
|
30
|
+
const json = ctx.args.includes('--json');
|
|
31
|
+
const positional = ctx.args.filter((arg) => !arg.startsWith('-'));
|
|
32
|
+
const action = positional[0] ?? 'audit';
|
|
33
|
+
if (action === 'audit') {
|
|
34
|
+
const audit = await auditWorkspaceContext(ctx.cwd);
|
|
35
|
+
if (json)
|
|
36
|
+
console.log(JSON.stringify(audit, null, 2));
|
|
37
|
+
else {
|
|
38
|
+
console.log(`Workspace context audit: ${audit.sources.length} source(s)`);
|
|
39
|
+
console.log(` WORKSPACE.md: ${audit.workspaceExists ? 'present' : audit.legacyCompatible ? 'legacy layout supported' : 'missing'}`);
|
|
40
|
+
console.log(` Identical directives: ${audit.identical.length}`);
|
|
41
|
+
console.log(` Ambiguous conflicts: ${audit.conflicts.length}`);
|
|
42
|
+
console.log(` Sensitive findings: ${audit.sensitiveFindings.length}`);
|
|
43
|
+
console.log(` Planned outputs: ${audit.plan.outputs.join(', ')}`);
|
|
44
|
+
}
|
|
45
|
+
return { exitCode: audit.sensitiveFindings.length > 0 ? 1 : 0 };
|
|
46
|
+
}
|
|
47
|
+
if (action === 'migrate') {
|
|
48
|
+
const apply = ctx.args.includes('--apply');
|
|
49
|
+
const result = await migrateWorkspaceContext(ctx.cwd, {
|
|
50
|
+
apply,
|
|
51
|
+
dryRun: ctx.args.includes('--dry-run') || !apply,
|
|
52
|
+
allowConflicts: ctx.args.includes('--allow-conflicts'),
|
|
53
|
+
});
|
|
54
|
+
if (json)
|
|
55
|
+
console.log(JSON.stringify(result, null, 2));
|
|
56
|
+
else {
|
|
57
|
+
console.log(`${result.dryRun ? 'Migration dry run' : 'Migration applied'}: ${result.changed ? 'changes found' : 'already canonical'}`);
|
|
58
|
+
for (const file of result.written)
|
|
59
|
+
console.log(` ${result.dryRun ? 'would write' : 'wrote'} ${file}`);
|
|
60
|
+
if (result.transactionId)
|
|
61
|
+
console.log(` transaction: ${result.transactionId}`);
|
|
62
|
+
if (result.backups.length > 0)
|
|
63
|
+
console.log(` recoverable preimages: ${result.backups.length}`);
|
|
64
|
+
}
|
|
65
|
+
return { exitCode: 0 };
|
|
66
|
+
}
|
|
67
|
+
if (action === 'rollback') {
|
|
68
|
+
const result = await rollbackWorkspaceContext(ctx.cwd, positional[1]);
|
|
69
|
+
if (json)
|
|
70
|
+
console.log(JSON.stringify(result, null, 2));
|
|
71
|
+
else
|
|
72
|
+
console.log(`Rolled back ${result.id}: restored ${result.restored.length} file(s).`);
|
|
73
|
+
return { exitCode: 0 };
|
|
74
|
+
}
|
|
75
|
+
if (action === 'doctor') {
|
|
76
|
+
const diagnostics = await diagnoseWorkspaceContext(ctx.cwd);
|
|
77
|
+
if (json)
|
|
78
|
+
console.log(JSON.stringify(diagnostics, null, 2));
|
|
79
|
+
else
|
|
80
|
+
for (const diagnostic of diagnostics)
|
|
81
|
+
console.log(` ${diagnostic.severity.toUpperCase()} ${diagnostic.code}: ${diagnostic.message}`);
|
|
82
|
+
return { exitCode: diagnostics.some((item) => item.severity === 'error') ? 1 : 0 };
|
|
83
|
+
}
|
|
84
|
+
printHelp();
|
|
85
|
+
return { exitCode: 2, message: `Unknown workspace-context action: ${action}` };
|
|
86
|
+
}
|
|
87
|
+
catch (error) {
|
|
88
|
+
return handlerResultFromError(error);
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
};
|
|
92
|
+
export const workspaceContextHandlers = [workspaceContextHandler];
|
|
93
|
+
//# sourceMappingURL=workspace-context.js.map
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workspace Management Handlers
|
|
3
|
+
*
|
|
4
|
+
* Handlers for workspace health, migration, and rollback operations.
|
|
5
|
+
* Delegates to existing CLI scripts in tools/cli/.
|
|
6
|
+
*
|
|
7
|
+
* @implements @.aiwg/architecture/decisions/ADR-001-unified-extension-system.md
|
|
8
|
+
* @source @src/cli/router.ts
|
|
9
|
+
* @issue #33
|
|
10
|
+
*/
|
|
11
|
+
import { createScriptRunner } from './script-runner.js';
|
|
12
|
+
import { getFrameworkRoot } from '../../channel/manager.mjs';
|
|
13
|
+
import { maybePrintCommunityFooter } from '../../community/footer.js';
|
|
14
|
+
/**
|
|
15
|
+
* Handler for workspace status command
|
|
16
|
+
*
|
|
17
|
+
* Shows workspace health, installed frameworks, and migration status.
|
|
18
|
+
*
|
|
19
|
+
* Usage:
|
|
20
|
+
* aiwg -status
|
|
21
|
+
* aiwg --status
|
|
22
|
+
* aiwg -status --verbose
|
|
23
|
+
* aiwg -status --json
|
|
24
|
+
*/
|
|
25
|
+
export const statusHandler = {
|
|
26
|
+
id: 'status',
|
|
27
|
+
name: 'Workspace Status',
|
|
28
|
+
description: 'Show workspace health and installed frameworks',
|
|
29
|
+
category: 'workspace',
|
|
30
|
+
aliases: ['-status', '--status'],
|
|
31
|
+
async execute(ctx) {
|
|
32
|
+
const frameworkRoot = await getFrameworkRoot();
|
|
33
|
+
const runner = createScriptRunner(frameworkRoot);
|
|
34
|
+
const result = await runner.run('tools/cli/workspace-status.mjs', ctx.args, {
|
|
35
|
+
cwd: ctx.cwd,
|
|
36
|
+
});
|
|
37
|
+
const machineReadable = ctx.args.includes('--json') || ctx.args.includes('--probe') || ctx.args.includes('--serve') || ctx.args.includes('--export');
|
|
38
|
+
if (result.exitCode === 0 && !machineReadable) {
|
|
39
|
+
maybePrintCommunityFooter();
|
|
40
|
+
}
|
|
41
|
+
return result;
|
|
42
|
+
},
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Handler for the guided onboarding wizard.
|
|
46
|
+
*
|
|
47
|
+
* The MVP wizard is a deterministic, no-write planner that walks the user
|
|
48
|
+
* through provider, project, framework, deploy, and verification steps.
|
|
49
|
+
*/
|
|
50
|
+
export const wizardHandler = {
|
|
51
|
+
id: 'wizard',
|
|
52
|
+
name: 'Onboarding Wizard',
|
|
53
|
+
description: 'Guide first-run provider, project, framework, deploy, and verify steps',
|
|
54
|
+
category: 'workspace',
|
|
55
|
+
aliases: [],
|
|
56
|
+
async execute(ctx) {
|
|
57
|
+
const frameworkRoot = await getFrameworkRoot();
|
|
58
|
+
const runner = createScriptRunner(frameworkRoot);
|
|
59
|
+
return runner.run('tools/cli/wizard.mjs', ctx.args, {
|
|
60
|
+
cwd: ctx.cwd,
|
|
61
|
+
});
|
|
62
|
+
},
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* Handler for workspace migration command
|
|
66
|
+
*
|
|
67
|
+
* Migrates legacy .aiwg/ workspace structure to framework-scoped structure.
|
|
68
|
+
* Provides interactive migration workflow with validation, backup, and reporting.
|
|
69
|
+
*
|
|
70
|
+
* Usage:
|
|
71
|
+
* aiwg -migrate-workspace
|
|
72
|
+
* aiwg --migrate-workspace
|
|
73
|
+
* aiwg -migrate-workspace --dry-run
|
|
74
|
+
* aiwg -migrate-workspace --no-backup
|
|
75
|
+
* aiwg -migrate-workspace --force
|
|
76
|
+
* aiwg -migrate-workspace --yes
|
|
77
|
+
*/
|
|
78
|
+
export const migrateWorkspaceHandler = {
|
|
79
|
+
id: 'migrate-workspace',
|
|
80
|
+
name: 'Migrate Workspace',
|
|
81
|
+
description: 'Migrate legacy .aiwg/ to framework-scoped structure',
|
|
82
|
+
category: 'workspace',
|
|
83
|
+
aliases: ['-migrate-workspace', '--migrate-workspace'],
|
|
84
|
+
async execute(ctx) {
|
|
85
|
+
const frameworkRoot = await getFrameworkRoot();
|
|
86
|
+
const runner = createScriptRunner(frameworkRoot);
|
|
87
|
+
return runner.run('tools/cli/workspace-migrate.mjs', ctx.args, {
|
|
88
|
+
cwd: ctx.cwd,
|
|
89
|
+
});
|
|
90
|
+
},
|
|
91
|
+
};
|
|
92
|
+
/**
|
|
93
|
+
* Handler for workspace rollback command
|
|
94
|
+
*
|
|
95
|
+
* Rolls back workspace migration from backup.
|
|
96
|
+
*
|
|
97
|
+
* Usage:
|
|
98
|
+
* aiwg -rollback-workspace
|
|
99
|
+
* aiwg --rollback-workspace
|
|
100
|
+
* aiwg -rollback-workspace --list
|
|
101
|
+
* aiwg -rollback-workspace --backup <backup-path>
|
|
102
|
+
*/
|
|
103
|
+
export const rollbackWorkspaceHandler = {
|
|
104
|
+
id: 'rollback-workspace',
|
|
105
|
+
name: 'Rollback Workspace',
|
|
106
|
+
description: 'Rollback workspace migration from backup',
|
|
107
|
+
category: 'workspace',
|
|
108
|
+
aliases: ['-rollback-workspace', '--rollback-workspace'],
|
|
109
|
+
async execute(ctx) {
|
|
110
|
+
const frameworkRoot = await getFrameworkRoot();
|
|
111
|
+
const runner = createScriptRunner(frameworkRoot);
|
|
112
|
+
return runner.run('tools/cli/workspace-rollback.mjs', ctx.args, {
|
|
113
|
+
cwd: ctx.cwd,
|
|
114
|
+
});
|
|
115
|
+
},
|
|
116
|
+
};
|
|
117
|
+
/**
|
|
118
|
+
* All workspace management handlers
|
|
119
|
+
*/
|
|
120
|
+
export const workspaceHandlers = [
|
|
121
|
+
statusHandler,
|
|
122
|
+
wizardHandler,
|
|
123
|
+
migrateWorkspaceHandler,
|
|
124
|
+
rollbackWorkspaceHandler,
|
|
125
|
+
];
|
|
126
|
+
//# sourceMappingURL=workspace.js.map
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Help Generator
|
|
3
|
+
*
|
|
4
|
+
* Dynamically generates CLI help text from the extension registry.
|
|
5
|
+
* Replaces hardcoded displayHelp() with registry-driven approach.
|
|
6
|
+
*
|
|
7
|
+
* @implements @.aiwg/architecture/decisions/ADR-001-unified-extension-system.md
|
|
8
|
+
* @tests @test/unit/cli/help-generator.test.ts
|
|
9
|
+
* @version 1.0.0
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Category display order and titles
|
|
13
|
+
*
|
|
14
|
+
* Determines the order in which command categories appear in help output.
|
|
15
|
+
*/
|
|
16
|
+
const CATEGORY_ORDER = [
|
|
17
|
+
{ category: 'framework', title: 'Framework Management' },
|
|
18
|
+
{ category: 'project', title: 'Project Setup' },
|
|
19
|
+
{ category: 'workspace', title: 'Workspace Management' },
|
|
20
|
+
{ category: 'mcp', title: 'MCP Server' },
|
|
21
|
+
{ category: 'toolsmith', title: 'Toolsmith (Runtime Discovery)' },
|
|
22
|
+
{ category: 'catalog', title: 'Model Catalog' },
|
|
23
|
+
{ category: 'utility', title: 'Utilities' },
|
|
24
|
+
{ category: 'plugin', title: 'Plugin Packaging' },
|
|
25
|
+
{ category: 'scaffolding', title: 'Scaffolding' },
|
|
26
|
+
{ category: 'channel', title: 'Channel Management' },
|
|
27
|
+
{ category: 'maintenance', title: 'Maintenance' },
|
|
28
|
+
{ category: 'ralph', title: 'Agent Loop (Iterative Execution)' },
|
|
29
|
+
{ category: 'orchestration', title: 'Orchestration (Mission Control)' },
|
|
30
|
+
{ category: 'index', title: 'Artifact Index' },
|
|
31
|
+
{ category: 'daemon', title: 'Daemon & Behaviors' },
|
|
32
|
+
{ category: 'agentic-tools', title: 'Agentic Tools (RLM chunk, fanout, search)' },
|
|
33
|
+
];
|
|
34
|
+
/**
|
|
35
|
+
* Command name column width for alignment
|
|
36
|
+
*/
|
|
37
|
+
const COMMAND_COL_WIDTH = 24;
|
|
38
|
+
/**
|
|
39
|
+
* Generate help text from registry
|
|
40
|
+
*
|
|
41
|
+
* Dynamically builds CLI help text by querying the extension registry for
|
|
42
|
+
* command extensions, grouping them by category, and formatting them for display.
|
|
43
|
+
*
|
|
44
|
+
* @param registry - Extension registry to query
|
|
45
|
+
* @returns Formatted help text
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* ```typescript
|
|
49
|
+
* import { getRegistry } from '../extensions/registry.js';
|
|
50
|
+
* import { generateHelp } from './help-generator.js';
|
|
51
|
+
*
|
|
52
|
+
* const registry = getRegistry();
|
|
53
|
+
* const helpText = generateHelp(registry);
|
|
54
|
+
* console.log(helpText);
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
57
|
+
export function generateHelp(registry) {
|
|
58
|
+
const lines = [];
|
|
59
|
+
// Header
|
|
60
|
+
lines.push('AIWG CLI');
|
|
61
|
+
lines.push('');
|
|
62
|
+
lines.push('Usage: aiwg <command> [options]');
|
|
63
|
+
lines.push('');
|
|
64
|
+
// Get commands by category (skills are the canonical source format for CLI commands)
|
|
65
|
+
const commands = [
|
|
66
|
+
...registry.getByType('skill'),
|
|
67
|
+
...registry.getByType('command'),
|
|
68
|
+
];
|
|
69
|
+
const byCategory = groupByCategory(commands);
|
|
70
|
+
// Generate sections in order
|
|
71
|
+
for (const { category, title } of CATEGORY_ORDER) {
|
|
72
|
+
const categoryCommands = byCategory.get(category);
|
|
73
|
+
if (!categoryCommands || categoryCommands.length === 0)
|
|
74
|
+
continue;
|
|
75
|
+
lines.push(`${title}:`);
|
|
76
|
+
for (const cmd of categoryCommands) {
|
|
77
|
+
const name = formatCommandName(cmd);
|
|
78
|
+
const desc = cmd.description;
|
|
79
|
+
lines.push(` ${name.padEnd(COMMAND_COL_WIDTH)} ${desc}`);
|
|
80
|
+
}
|
|
81
|
+
lines.push('');
|
|
82
|
+
}
|
|
83
|
+
// Platform options
|
|
84
|
+
lines.push('Platform Options (--provider):');
|
|
85
|
+
lines.push(' claude Claude Code (default)');
|
|
86
|
+
lines.push(' copilot GitHub Copilot');
|
|
87
|
+
lines.push(' factory Factory AI');
|
|
88
|
+
lines.push(' codex / openai OpenAI Codex');
|
|
89
|
+
lines.push(' cursor Cursor IDE');
|
|
90
|
+
lines.push(' opencode OpenCode');
|
|
91
|
+
lines.push(' warp Warp Terminal');
|
|
92
|
+
lines.push(' windsurf Windsurf');
|
|
93
|
+
lines.push('');
|
|
94
|
+
// Examples
|
|
95
|
+
lines.push('Examples:');
|
|
96
|
+
lines.push(' aiwg use sdlc Install SDLC framework');
|
|
97
|
+
lines.push(' aiwg use sdlc --global Install user assets + lightweight project wiring');
|
|
98
|
+
lines.push(' aiwg -new Create new project');
|
|
99
|
+
lines.push(' aiwg doctor Check installation health');
|
|
100
|
+
lines.push('');
|
|
101
|
+
return lines.join('\n');
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Group commands by category
|
|
105
|
+
*
|
|
106
|
+
* Takes a flat list of command extensions and organizes them into a Map
|
|
107
|
+
* keyed by category, with values being arrays of extensions.
|
|
108
|
+
*
|
|
109
|
+
* @param commands - Array of command extensions
|
|
110
|
+
* @returns Map of category to command extensions
|
|
111
|
+
*
|
|
112
|
+
* @example
|
|
113
|
+
* ```typescript
|
|
114
|
+
* const commands = registry.getByType('command');
|
|
115
|
+
* const grouped = groupByCategory(commands);
|
|
116
|
+
*
|
|
117
|
+
* const frameworkCommands = grouped.get('framework');
|
|
118
|
+
* console.log(`${frameworkCommands?.length} framework commands`);
|
|
119
|
+
* ```
|
|
120
|
+
*/
|
|
121
|
+
function groupByCategory(commands) {
|
|
122
|
+
const map = new Map();
|
|
123
|
+
for (const cmd of commands) {
|
|
124
|
+
const category = cmd.category || 'utility';
|
|
125
|
+
let list = map.get(category);
|
|
126
|
+
if (!list) {
|
|
127
|
+
list = [];
|
|
128
|
+
map.set(category, list);
|
|
129
|
+
}
|
|
130
|
+
list.push(cmd);
|
|
131
|
+
}
|
|
132
|
+
// Sort commands within each category by ID
|
|
133
|
+
// Use Array.from to convert values() iterator to array
|
|
134
|
+
Array.from(map.values()).forEach((list) => {
|
|
135
|
+
list.sort((a, b) => a.id.localeCompare(b.id));
|
|
136
|
+
});
|
|
137
|
+
return map;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Format command name with primary alias
|
|
141
|
+
*
|
|
142
|
+
* Returns a formatted command name string that includes the primary alias
|
|
143
|
+
* (if present) for display in help text.
|
|
144
|
+
*
|
|
145
|
+
* Format:
|
|
146
|
+
* - No aliases: "command-name"
|
|
147
|
+
* - With aliases: "command-name, -alias"
|
|
148
|
+
*
|
|
149
|
+
* @param cmd - Command extension
|
|
150
|
+
* @returns Formatted command name string
|
|
151
|
+
*
|
|
152
|
+
* @example
|
|
153
|
+
* ```typescript
|
|
154
|
+
* // Command with no aliases
|
|
155
|
+
* const name1 = formatCommandName(useCmd);
|
|
156
|
+
* // Returns: "use"
|
|
157
|
+
*
|
|
158
|
+
* // Command with aliases
|
|
159
|
+
* const name2 = formatCommandName(newCmd);
|
|
160
|
+
* // Returns: "new, -new"
|
|
161
|
+
*
|
|
162
|
+
* // Command with multiple aliases
|
|
163
|
+
* const name3 = formatCommandName(helpCmd);
|
|
164
|
+
* // Returns: "help, -h"
|
|
165
|
+
* ```
|
|
166
|
+
*/
|
|
167
|
+
function formatCommandName(cmd) {
|
|
168
|
+
// Get aliases from metadata
|
|
169
|
+
const metadata = cmd.metadata;
|
|
170
|
+
const aliases = metadata?.aliases || [];
|
|
171
|
+
// If no aliases, just return ID
|
|
172
|
+
if (aliases.length === 0) {
|
|
173
|
+
return cmd.id;
|
|
174
|
+
}
|
|
175
|
+
// Show command name with first alias
|
|
176
|
+
return `${cmd.id}, ${aliases[0]}`;
|
|
177
|
+
}
|
|
178
|
+
//# sourceMappingURL=help-generator.js.map
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Activity-log auto-append hook
|
|
3
|
+
*
|
|
4
|
+
* Post-command hook that automatically appends an activity-log entry
|
|
5
|
+
* after qualifying CLI commands succeed. Closes the discipline gap
|
|
6
|
+
* called out in the activity-log rule:
|
|
7
|
+
*
|
|
8
|
+
* "Subagents silently create and delete artifacts with no record
|
|
9
|
+
* visible to the parent orchestrator"
|
|
10
|
+
*
|
|
11
|
+
* Failures are non-blocking: if the entry can't be written, we log to
|
|
12
|
+
* stderr and let the primary command's success stand.
|
|
13
|
+
*
|
|
14
|
+
* @design @.aiwg/architecture/storage-design.md
|
|
15
|
+
* @issue #934
|
|
16
|
+
* @issue #978
|
|
17
|
+
*/
|
|
18
|
+
import { formatEntry } from '../../../activity-log/types.js';
|
|
19
|
+
import { resolveStorage } from '../../../storage/index.js';
|
|
20
|
+
const LOG_PATH = 'activity.log';
|
|
21
|
+
/**
|
|
22
|
+
* Map of CLI command id → operation token. Commands not in this map
|
|
23
|
+
* skip the hook (most reads, queries, scaffolding helpers, etc.).
|
|
24
|
+
*/
|
|
25
|
+
const COMMAND_OPERATION_MAP = {
|
|
26
|
+
// Framework deployment
|
|
27
|
+
use: 'deploy',
|
|
28
|
+
refresh: 'deploy',
|
|
29
|
+
remove: 'delete',
|
|
30
|
+
// Extension scaffolding
|
|
31
|
+
'add-agent': 'create',
|
|
32
|
+
'add-command': 'create',
|
|
33
|
+
'add-skill': 'create',
|
|
34
|
+
'add-template': 'create',
|
|
35
|
+
'add-behavior': 'create',
|
|
36
|
+
// Validation
|
|
37
|
+
'validate-metadata': 'lint',
|
|
38
|
+
// Index updates
|
|
39
|
+
index: 'update', // Note: 'aiwg index build' is the primary mutating subcommand
|
|
40
|
+
// Ops ecosystem
|
|
41
|
+
ops: 'create', // crude — `aiwg ops init` creates; `push`/`adopt` also mutate
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Build a one-line summary from the command + args. Bounded to ≤120
|
|
45
|
+
* chars per the activity-log rule.
|
|
46
|
+
*/
|
|
47
|
+
function summarize(command, args) {
|
|
48
|
+
const argString = args.join(' ').trim();
|
|
49
|
+
const base = argString.length > 0 ? `aiwg ${command} ${argString}` : `aiwg ${command}`;
|
|
50
|
+
if (base.length <= 120)
|
|
51
|
+
return base;
|
|
52
|
+
return base.slice(0, 117) + '...';
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Returns true when AIWG_SKIP_ACTIVITY_LOG is set to a truthy value.
|
|
56
|
+
* Mirrors the gate in src/activity-log/cli.ts (#975).
|
|
57
|
+
*/
|
|
58
|
+
function isActivityLogSkipped() {
|
|
59
|
+
const raw = process.env['AIWG_SKIP_ACTIVITY_LOG'];
|
|
60
|
+
if (!raw)
|
|
61
|
+
return false;
|
|
62
|
+
const v = raw.toLowerCase().trim();
|
|
63
|
+
if (v === '0' || v === 'false' || v === '')
|
|
64
|
+
return false;
|
|
65
|
+
return true;
|
|
66
|
+
}
|
|
67
|
+
export const activityLogPostCommandHook = {
|
|
68
|
+
id: 'aiwg:activity-log-auto-append',
|
|
69
|
+
event: 'post-command',
|
|
70
|
+
priority: 100,
|
|
71
|
+
filter: {
|
|
72
|
+
// Only fire for the commands we know how to summarize. The map above
|
|
73
|
+
// is the source of truth.
|
|
74
|
+
commands: Object.keys(COMMAND_OPERATION_MAP),
|
|
75
|
+
},
|
|
76
|
+
async execute(ctx) {
|
|
77
|
+
// Skip on env-var opt-out
|
|
78
|
+
if (isActivityLogSkipped()) {
|
|
79
|
+
return { action: 'continue' };
|
|
80
|
+
}
|
|
81
|
+
// Skip if the command failed (post-command runs even on failure for
|
|
82
|
+
// some hook flows; we never want to log a failure as a successful op)
|
|
83
|
+
const exitCode = ctx.data?.['exitCode'];
|
|
84
|
+
if (typeof exitCode === 'number' && exitCode !== 0) {
|
|
85
|
+
return { action: 'continue' };
|
|
86
|
+
}
|
|
87
|
+
const operation = COMMAND_OPERATION_MAP[ctx.command];
|
|
88
|
+
if (!operation) {
|
|
89
|
+
// Filter should prevent this, but defensive
|
|
90
|
+
return { action: 'continue' };
|
|
91
|
+
}
|
|
92
|
+
try {
|
|
93
|
+
const adapter = await resolveStorage('activity_log');
|
|
94
|
+
const line = formatEntry({
|
|
95
|
+
timestamp: new Date(),
|
|
96
|
+
operation,
|
|
97
|
+
summary: summarize(ctx.command, ctx.args),
|
|
98
|
+
}) + '\n';
|
|
99
|
+
// Prefer atomic append (#976) when available
|
|
100
|
+
if (typeof adapter.append === 'function') {
|
|
101
|
+
const existing = (await adapter.read(LOG_PATH)) ?? '';
|
|
102
|
+
if (existing.length > 0 && !existing.endsWith('\n')) {
|
|
103
|
+
await adapter.append(LOG_PATH, '\n');
|
|
104
|
+
}
|
|
105
|
+
await adapter.append(LOG_PATH, line);
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
const existing = (await adapter.read(LOG_PATH)) ?? '';
|
|
109
|
+
const trailing = existing.length === 0 || existing.endsWith('\n') ? '' : '\n';
|
|
110
|
+
await adapter.write(LOG_PATH, existing + trailing + line);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
catch (err) {
|
|
114
|
+
// Non-blocking — log to stderr and let the primary command's
|
|
115
|
+
// success stand. Per the activity-log rule's "Rule 4: Non-Blocking".
|
|
116
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
117
|
+
process.stderr.write(`activity-log auto-append failed (non-fatal): ${msg}\n`);
|
|
118
|
+
}
|
|
119
|
+
return { action: 'continue' };
|
|
120
|
+
},
|
|
121
|
+
};
|
|
122
|
+
/**
|
|
123
|
+
* The list of commands the hook fires for. Exported for tests.
|
|
124
|
+
*/
|
|
125
|
+
export const HOOKED_COMMANDS = Object.keys(COMMAND_OPERATION_MAP);
|
|
126
|
+
//# sourceMappingURL=activity-log-hook.js.map
|