@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,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lint Command Handler
|
|
3
|
+
*
|
|
4
|
+
* Routes `aiwg lint` to the lint CLI module.
|
|
5
|
+
*
|
|
6
|
+
* @issue #810
|
|
7
|
+
*/
|
|
8
|
+
import { handlerResultFromError } from '../errors.js';
|
|
9
|
+
/**
|
|
10
|
+
* Handler for lint command
|
|
11
|
+
*
|
|
12
|
+
* Lint AIWG-managed document sets against declarative rule sets.
|
|
13
|
+
*
|
|
14
|
+
* Usage:
|
|
15
|
+
* aiwg lint .aiwg/research/
|
|
16
|
+
* aiwg lint .aiwg/research/ --ruleset research
|
|
17
|
+
* aiwg lint --list-rulesets
|
|
18
|
+
* aiwg lint --list-rules research
|
|
19
|
+
* aiwg lint .aiwg/ --format json --ci --fail-on warn
|
|
20
|
+
* aiwg lint .aiwg/research/ --dry-run
|
|
21
|
+
*/
|
|
22
|
+
export const lintHandler = {
|
|
23
|
+
id: 'lint',
|
|
24
|
+
name: 'Lint',
|
|
25
|
+
description: 'Lint AIWG artifacts against declarative rule sets',
|
|
26
|
+
category: 'utility',
|
|
27
|
+
aliases: ['-lint', '--lint'],
|
|
28
|
+
async execute(ctx) {
|
|
29
|
+
try {
|
|
30
|
+
const { main } = await import('../../lint/cli.js');
|
|
31
|
+
await main(ctx.args);
|
|
32
|
+
return {
|
|
33
|
+
exitCode: Number(process.exitCode) || 0,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
const result = handlerResultFromError(error);
|
|
38
|
+
return { ...result, message: `Lint command failed: ${result.message}` };
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=lint.js.map
|
|
@@ -0,0 +1,315 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Local Executor Handler
|
|
3
|
+
*
|
|
4
|
+
* Implements `aiwg local-executor serve` — boots a no-sandbox host-process
|
|
5
|
+
* executor as a conformance shim over DaemonSupervisor, then registers it
|
|
6
|
+
* with `aiwg serve` via the executor contract v1 handshake.
|
|
7
|
+
*
|
|
8
|
+
* Security note:
|
|
9
|
+
* This executor has `isolation:none`. Agent code runs directly in the host
|
|
10
|
+
* process under the same filesystem permissions as the operator. It inherits
|
|
11
|
+
* the Claude Code `--dangerously-skip-permissions` posture when invoked via
|
|
12
|
+
* the standard agent runner. Do not expose on non-loopback interfaces unless
|
|
13
|
+
* you understand the risk (see docs/local-executor-guide.md §Security).
|
|
14
|
+
*
|
|
15
|
+
* @issue #1181
|
|
16
|
+
* @see docs/contracts/executor.v1.md
|
|
17
|
+
* @see tools/ralph-external/executor-shim.mjs
|
|
18
|
+
*/
|
|
19
|
+
import path from 'path';
|
|
20
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'fs';
|
|
21
|
+
import { randomUUID } from 'crypto';
|
|
22
|
+
import { projectAiwgPath } from '../../config/project-artifacts.js';
|
|
23
|
+
const DEFAULT_PORT = 8200;
|
|
24
|
+
const DEFAULT_BIND = '127.0.0.1';
|
|
25
|
+
const DEFAULT_AIWG_SERVE = 'http://127.0.0.1:7337';
|
|
26
|
+
/**
|
|
27
|
+
* Resolve or generate-once the executor identity.
|
|
28
|
+
* Written to `.aiwg/local-executor/identity.json` so restarts reuse the same
|
|
29
|
+
* UUID (token reclaim via identity store on the aiwg-serve side).
|
|
30
|
+
*/
|
|
31
|
+
function resolveExecutorId(override) {
|
|
32
|
+
if (override)
|
|
33
|
+
return override;
|
|
34
|
+
const abs = projectAiwgPath(process.cwd(), 'local-executor', 'identity.json');
|
|
35
|
+
if (existsSync(abs)) {
|
|
36
|
+
try {
|
|
37
|
+
const raw = readFileSync(abs, 'utf-8');
|
|
38
|
+
const data = JSON.parse(raw);
|
|
39
|
+
if (data.executor_id)
|
|
40
|
+
return data.executor_id;
|
|
41
|
+
}
|
|
42
|
+
catch { /* fall through to generate */ }
|
|
43
|
+
}
|
|
44
|
+
const id = randomUUID();
|
|
45
|
+
try {
|
|
46
|
+
mkdirSync(path.dirname(abs), { recursive: true });
|
|
47
|
+
writeFileSync(abs, JSON.stringify({ executor_id: id, created_at: new Date().toISOString() }, null, 2), 'utf-8');
|
|
48
|
+
}
|
|
49
|
+
catch { /* non-fatal — use in-memory id */ }
|
|
50
|
+
return id;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Parse `aiwg local-executor serve` flags.
|
|
54
|
+
*/
|
|
55
|
+
function parseLocalExecutorArgs(args) {
|
|
56
|
+
let port = DEFAULT_PORT;
|
|
57
|
+
let bind = DEFAULT_BIND;
|
|
58
|
+
let aiwgServe = process.env['AIWG_SERVE_ENDPOINT'] ?? DEFAULT_AIWG_SERVE;
|
|
59
|
+
let maxConcurrency = 4;
|
|
60
|
+
let executorIdFlag;
|
|
61
|
+
for (let i = 0; i < args.length; i++) {
|
|
62
|
+
const arg = args[i];
|
|
63
|
+
if ((arg === '--port' || arg === '-p') && args[i + 1]) {
|
|
64
|
+
const parsed = parseInt(args[i + 1], 10);
|
|
65
|
+
if (!isNaN(parsed))
|
|
66
|
+
port = parsed;
|
|
67
|
+
i++;
|
|
68
|
+
}
|
|
69
|
+
else if (arg === '--bind' && args[i + 1]) {
|
|
70
|
+
bind = args[i + 1];
|
|
71
|
+
i++;
|
|
72
|
+
}
|
|
73
|
+
else if (arg === '--aiwg-serve' && args[i + 1]) {
|
|
74
|
+
aiwgServe = args[i + 1];
|
|
75
|
+
i++;
|
|
76
|
+
}
|
|
77
|
+
else if (arg === '--max-concurrency' && args[i + 1]) {
|
|
78
|
+
const n = parseInt(args[i + 1], 10);
|
|
79
|
+
if (!isNaN(n) && n > 0)
|
|
80
|
+
maxConcurrency = n;
|
|
81
|
+
i++;
|
|
82
|
+
}
|
|
83
|
+
else if (arg === '--executor-id' && args[i + 1]) {
|
|
84
|
+
executorIdFlag = args[i + 1];
|
|
85
|
+
i++;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return {
|
|
89
|
+
port,
|
|
90
|
+
bind,
|
|
91
|
+
aiwgServe,
|
|
92
|
+
maxConcurrency,
|
|
93
|
+
executorId: resolveExecutorId(executorIdFlag),
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Emit a warning when the executor binds on a non-loopback interface.
|
|
98
|
+
*/
|
|
99
|
+
function warnIfNonLoopback(bind) {
|
|
100
|
+
const loopbackAddrs = new Set(['127.0.0.1', '::1', 'localhost']);
|
|
101
|
+
if (!loopbackAddrs.has(bind)) {
|
|
102
|
+
console.warn('[local-executor] WARNING: binding on non-loopback interface ' + bind + '.\n' +
|
|
103
|
+
' This executor has isolation:none — agent code runs in the host process.\n' +
|
|
104
|
+
' Ensure this interface is not reachable by untrusted parties.\n' +
|
|
105
|
+
' The executor token will be rotated by aiwg-serve on first non-loopback register.');
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* `aiwg local-executor serve` handler.
|
|
110
|
+
*
|
|
111
|
+
* Boots a DaemonSupervisor + ExecutorShim, registers with aiwg-serve,
|
|
112
|
+
* then keeps the process alive until SIGINT/SIGTERM.
|
|
113
|
+
*/
|
|
114
|
+
export const localExecutorServeHandler = {
|
|
115
|
+
id: 'local-executor-serve',
|
|
116
|
+
name: 'Local Executor Serve',
|
|
117
|
+
description: 'Start the local no-sandbox executor (isolation:none, Core+HITL conformance)',
|
|
118
|
+
category: 'project',
|
|
119
|
+
aliases: [],
|
|
120
|
+
async execute(ctx) {
|
|
121
|
+
// The subcommand is: `aiwg local-executor serve [flags]`
|
|
122
|
+
// ctx.args[0] === 'serve' (consumed by router) or flags directly
|
|
123
|
+
const flagArgs = ctx.args[0] === 'serve' ? ctx.args.slice(1) : ctx.args;
|
|
124
|
+
const opts = parseLocalExecutorArgs(flagArgs);
|
|
125
|
+
warnIfNonLoopback(opts.bind);
|
|
126
|
+
// ── Dynamic imports (same pattern as serve.ts) ──────────────────────────
|
|
127
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
128
|
+
let ExecutorShim;
|
|
129
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
130
|
+
let startExecutorServer;
|
|
131
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
132
|
+
let DaemonSupervisor;
|
|
133
|
+
try {
|
|
134
|
+
const shimMod = await (new Function('m', 'return import(m)'))(path.join(ctx.frameworkRoot, 'tools', 'ralph-external', 'executor-shim.mjs'));
|
|
135
|
+
ExecutorShim = shimMod.ExecutorShim;
|
|
136
|
+
startExecutorServer = shimMod.startExecutorServer;
|
|
137
|
+
}
|
|
138
|
+
catch (err) {
|
|
139
|
+
return {
|
|
140
|
+
message: `Failed to load executor-shim: ${err.message}`,
|
|
141
|
+
exitCode: 1,
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
try {
|
|
145
|
+
const dsMod = await (new Function('m', 'return import(m)'))(path.join(ctx.frameworkRoot, 'tools', 'ralph-external', 'daemon-supervisor.mjs'));
|
|
146
|
+
DaemonSupervisor = dsMod.DaemonSupervisor;
|
|
147
|
+
}
|
|
148
|
+
catch (err) {
|
|
149
|
+
return {
|
|
150
|
+
message: `Failed to load DaemonSupervisor: ${err.message}`,
|
|
151
|
+
exitCode: 1,
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
// AgentSupervisor is optional — shim works without it but task execution
|
|
155
|
+
// requires it. Try loading from ralph-external/orchestrator.mjs.
|
|
156
|
+
let agentSupervisorInstance = null;
|
|
157
|
+
try {
|
|
158
|
+
const orchMod = await (new Function('m', 'return import(m)'))(path.join(ctx.frameworkRoot, 'tools', 'ralph-external', 'orchestrator.mjs'));
|
|
159
|
+
const OrchClass = orchMod.Orchestrator ?? orchMod.default;
|
|
160
|
+
if (OrchClass) {
|
|
161
|
+
const orch = new OrchClass({ maxConcurrent: opts.maxConcurrency });
|
|
162
|
+
agentSupervisorInstance = orch.agentSupervisor ?? orch;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
catch { /* orchestrator optional */ }
|
|
166
|
+
// Minimal stub if no real agent supervisor is available (allows shim to
|
|
167
|
+
// boot for conformance testing without a real Claude/Codex install)
|
|
168
|
+
if (!agentSupervisorInstance) {
|
|
169
|
+
const { EventEmitter } = await import('events');
|
|
170
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
171
|
+
const stub = new (class StubAgentSupervisor extends EventEmitter {
|
|
172
|
+
tasks = new Map();
|
|
173
|
+
counter = 0;
|
|
174
|
+
submit(prompt, options = {}) {
|
|
175
|
+
const id = `task-${++this.counter}`;
|
|
176
|
+
this.tasks.set(id, { id, prompt, ...options });
|
|
177
|
+
// Simulate async start
|
|
178
|
+
queueMicrotask(() => {
|
|
179
|
+
this.emit('task:started', { taskId: id, pid: 50000 + this.counter });
|
|
180
|
+
});
|
|
181
|
+
return { id };
|
|
182
|
+
}
|
|
183
|
+
cancel(taskId) {
|
|
184
|
+
if (this.tasks.has(taskId)) {
|
|
185
|
+
this.tasks.delete(taskId);
|
|
186
|
+
this.emit('task:cancelled', { taskId });
|
|
187
|
+
return true;
|
|
188
|
+
}
|
|
189
|
+
return false;
|
|
190
|
+
}
|
|
191
|
+
async shutdown() { this.tasks.clear(); }
|
|
192
|
+
})();
|
|
193
|
+
agentSupervisorInstance = stub;
|
|
194
|
+
}
|
|
195
|
+
// Build supervisor + shim
|
|
196
|
+
const supervisor = new DaemonSupervisor({
|
|
197
|
+
agentSupervisor: agentSupervisorInstance,
|
|
198
|
+
maxConcurrent: opts.maxConcurrency,
|
|
199
|
+
});
|
|
200
|
+
const restBase = `http://${opts.bind}:${opts.port}`;
|
|
201
|
+
const wsBase = `ws://${opts.bind}:${opts.port}`;
|
|
202
|
+
const shim = new ExecutorShim({
|
|
203
|
+
supervisor,
|
|
204
|
+
executorId: opts.executorId,
|
|
205
|
+
name: 'aiwg-local-executor',
|
|
206
|
+
version: '1.0.0',
|
|
207
|
+
restBase,
|
|
208
|
+
wsBase,
|
|
209
|
+
aiwgServeUrl: opts.aiwgServe,
|
|
210
|
+
});
|
|
211
|
+
// Register with aiwg-serve
|
|
212
|
+
let token;
|
|
213
|
+
try {
|
|
214
|
+
token = await shim.register();
|
|
215
|
+
}
|
|
216
|
+
catch (err) {
|
|
217
|
+
return {
|
|
218
|
+
message: `Failed to register with aiwg-serve at ${opts.aiwgServe}: ${err.message}\n` +
|
|
219
|
+
'Is aiwg serve running? Start it with: aiwg serve --no-open',
|
|
220
|
+
exitCode: 1,
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
// Start the executor's own HTTP+WS server
|
|
224
|
+
let server;
|
|
225
|
+
try {
|
|
226
|
+
server = await startExecutorServer(shim, {
|
|
227
|
+
port: opts.port,
|
|
228
|
+
bind: opts.bind,
|
|
229
|
+
token,
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
catch (err) {
|
|
233
|
+
await shim.deregister();
|
|
234
|
+
return {
|
|
235
|
+
message: `Failed to start executor server: ${err.message}`,
|
|
236
|
+
exitCode: 1,
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
console.log(`Local executor: ${server.url}`);
|
|
240
|
+
console.log(`Registered with: ${opts.aiwgServe}`);
|
|
241
|
+
console.log(`Executor ID: ${opts.executorId}`);
|
|
242
|
+
console.log(`Max concurrency: ${opts.maxConcurrency}`);
|
|
243
|
+
console.log('Press Ctrl+C to stop.');
|
|
244
|
+
// Status ticker — log active mission count every 30 s
|
|
245
|
+
const ticker = setInterval(() => {
|
|
246
|
+
const st = supervisor.status();
|
|
247
|
+
console.log(`[local-executor] running=${st.concurrencyUsed}/${st.concurrencyMax} ` +
|
|
248
|
+
`queued=${st.queueDepth} circuit=${st.circuitState?.state ?? 'ok'}`);
|
|
249
|
+
}, 30_000);
|
|
250
|
+
// Keep alive until SIGINT/SIGTERM
|
|
251
|
+
await new Promise((resolve) => {
|
|
252
|
+
let settled = false;
|
|
253
|
+
const cleanup = async (signal) => {
|
|
254
|
+
if (settled)
|
|
255
|
+
return;
|
|
256
|
+
settled = true;
|
|
257
|
+
clearInterval(ticker);
|
|
258
|
+
console.log(`\n[local-executor] ${signal} received — shutting down…`);
|
|
259
|
+
try {
|
|
260
|
+
await shim.shutdown();
|
|
261
|
+
}
|
|
262
|
+
catch { /* ignore */ }
|
|
263
|
+
try {
|
|
264
|
+
server.close();
|
|
265
|
+
}
|
|
266
|
+
catch { /* ignore */ }
|
|
267
|
+
try {
|
|
268
|
+
await supervisor.shutdown(5_000);
|
|
269
|
+
}
|
|
270
|
+
catch { /* ignore */ }
|
|
271
|
+
resolve();
|
|
272
|
+
};
|
|
273
|
+
process.once('SIGINT', () => { void cleanup('SIGINT'); });
|
|
274
|
+
process.once('SIGTERM', () => { void cleanup('SIGTERM'); });
|
|
275
|
+
});
|
|
276
|
+
return { exitCode: 0, message: 'Local executor stopped.' };
|
|
277
|
+
},
|
|
278
|
+
};
|
|
279
|
+
/**
|
|
280
|
+
* Top-level `aiwg local-executor` handler.
|
|
281
|
+
* Dispatches to subcommands (currently only `serve`).
|
|
282
|
+
*/
|
|
283
|
+
export const localExecutorHandler = {
|
|
284
|
+
id: 'local-executor',
|
|
285
|
+
name: 'Local Executor',
|
|
286
|
+
description: 'Manage the local no-sandbox executor (aiwg local-executor serve)',
|
|
287
|
+
category: 'project',
|
|
288
|
+
aliases: [],
|
|
289
|
+
async execute(ctx) {
|
|
290
|
+
const [subcommand, ...rest] = ctx.args;
|
|
291
|
+
if (!subcommand || subcommand === 'serve') {
|
|
292
|
+
const innerCtx = { ...ctx, args: ['serve', ...rest] };
|
|
293
|
+
return localExecutorServeHandler.execute(innerCtx);
|
|
294
|
+
}
|
|
295
|
+
if (subcommand === '--help' || subcommand === 'help') {
|
|
296
|
+
console.log('Usage: aiwg local-executor serve [flags]\n' +
|
|
297
|
+
'\n' +
|
|
298
|
+
'Flags:\n' +
|
|
299
|
+
' --port <n> Bind port (default: 8200)\n' +
|
|
300
|
+
' --bind <host> Bind interface (default: 127.0.0.1)\n' +
|
|
301
|
+
' --aiwg-serve <url> Registration target (default: http://127.0.0.1:7337)\n' +
|
|
302
|
+
' --max-concurrency <n> Max concurrent missions (default: 4)\n' +
|
|
303
|
+
' --executor-id <uuid> Override stable executor ID\n' +
|
|
304
|
+
'\n' +
|
|
305
|
+
'Environment:\n' +
|
|
306
|
+
' AIWG_SERVE_ENDPOINT Override --aiwg-serve default\n');
|
|
307
|
+
return { exitCode: 0 };
|
|
308
|
+
}
|
|
309
|
+
return {
|
|
310
|
+
message: `Unknown subcommand: ${subcommand}. Run \`aiwg local-executor help\` for usage.`,
|
|
311
|
+
exitCode: 1,
|
|
312
|
+
};
|
|
313
|
+
},
|
|
314
|
+
};
|
|
315
|
+
//# sourceMappingURL=local-executor.js.map
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Marketplace Command Handler
|
|
3
|
+
*
|
|
4
|
+
* Implements `aiwg marketplace <subcommand>` for discovering and listing
|
|
5
|
+
* packages across all configured marketplace sources (local, ClawHub,
|
|
6
|
+
* OpenClaw, etc.).
|
|
7
|
+
*
|
|
8
|
+
* Subcommands:
|
|
9
|
+
* search <query> Fan-out search to all adapters, display with source attribution
|
|
10
|
+
* list List installed marketplace packages
|
|
11
|
+
*
|
|
12
|
+
* Flags:
|
|
13
|
+
* --source <id> Limit to a single adapter (e.g. clawhub, openclaw, local)
|
|
14
|
+
* --json Emit structured JSON for programmatic use
|
|
15
|
+
*
|
|
16
|
+
* @implements #805
|
|
17
|
+
*/
|
|
18
|
+
import { searchSkills } from '../../skills/registry.js';
|
|
19
|
+
import { listInstalledPackages } from '../../packages/registry.js';
|
|
20
|
+
import * as ui from '../ui.js';
|
|
21
|
+
// ── Usage string ───────────────────────────────────────────────────────────
|
|
22
|
+
const USAGE = [
|
|
23
|
+
'Usage:',
|
|
24
|
+
' aiwg marketplace search <query> Search across all marketplace sources',
|
|
25
|
+
' aiwg marketplace list List installed marketplace packages',
|
|
26
|
+
'',
|
|
27
|
+
'Flags:',
|
|
28
|
+
' --source <id> Limit search to a specific source (clawhub, openclaw, local)',
|
|
29
|
+
' --json Output structured JSON',
|
|
30
|
+
'',
|
|
31
|
+
'Examples:',
|
|
32
|
+
' aiwg marketplace search parallel-dispatch',
|
|
33
|
+
' aiwg marketplace search auth --source clawhub',
|
|
34
|
+
' aiwg marketplace search auth --json',
|
|
35
|
+
' aiwg marketplace list',
|
|
36
|
+
' aiwg marketplace list --json',
|
|
37
|
+
].join('\n');
|
|
38
|
+
// ── Flag helpers ───────────────────────────────────────────────────────────
|
|
39
|
+
function parseFlag(args, flag) {
|
|
40
|
+
const idx = args.indexOf(flag);
|
|
41
|
+
if (idx === -1 || idx + 1 >= args.length)
|
|
42
|
+
return undefined;
|
|
43
|
+
return args[idx + 1];
|
|
44
|
+
}
|
|
45
|
+
function hasFlag(args, flag) {
|
|
46
|
+
return args.includes(flag);
|
|
47
|
+
}
|
|
48
|
+
// ── Handler ────────────────────────────────────────────────────────────────
|
|
49
|
+
export const marketplaceHandler = {
|
|
50
|
+
id: 'marketplace',
|
|
51
|
+
name: 'Marketplace',
|
|
52
|
+
description: 'Search and manage marketplace packages (search, list)',
|
|
53
|
+
category: 'framework',
|
|
54
|
+
aliases: ['market'],
|
|
55
|
+
async execute(ctx) {
|
|
56
|
+
const subcommand = ctx.args[0];
|
|
57
|
+
if (!subcommand) {
|
|
58
|
+
return { exitCode: 0, message: USAGE };
|
|
59
|
+
}
|
|
60
|
+
if (subcommand === 'search') {
|
|
61
|
+
return handleSearch(ctx);
|
|
62
|
+
}
|
|
63
|
+
if (subcommand === 'list') {
|
|
64
|
+
return handleList(ctx);
|
|
65
|
+
}
|
|
66
|
+
return {
|
|
67
|
+
exitCode: 1,
|
|
68
|
+
message: `Error: Unknown subcommand '${subcommand}'\n\n${USAGE}`,
|
|
69
|
+
};
|
|
70
|
+
},
|
|
71
|
+
};
|
|
72
|
+
// ── Search ─────────────────────────────────────────────────────────────────
|
|
73
|
+
async function handleSearch(ctx) {
|
|
74
|
+
// First positional arg after 'search' that isn't a flag value
|
|
75
|
+
const query = ctx.args[1];
|
|
76
|
+
if (!query || query.startsWith('--')) {
|
|
77
|
+
return {
|
|
78
|
+
exitCode: 1,
|
|
79
|
+
message: 'Error: Query required\n\nUsage: aiwg marketplace search <query>',
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
const source = parseFlag(ctx.args, '--source');
|
|
83
|
+
const jsonMode = hasFlag(ctx.args, '--json');
|
|
84
|
+
const results = await searchSkills(query, source);
|
|
85
|
+
if (jsonMode) {
|
|
86
|
+
console.log(JSON.stringify(results, null, 2));
|
|
87
|
+
return { exitCode: 0 };
|
|
88
|
+
}
|
|
89
|
+
ui.blank();
|
|
90
|
+
console.log(` ${ui.brandMark()} ${ui.bold(`Marketplace Search: "${query}"`)}`);
|
|
91
|
+
if (source) {
|
|
92
|
+
ui.dim(` Source: ${source}`);
|
|
93
|
+
}
|
|
94
|
+
ui.rule();
|
|
95
|
+
if (results.length === 0) {
|
|
96
|
+
ui.dim(' No results found.');
|
|
97
|
+
ui.blank();
|
|
98
|
+
ui.dim(' Try a broader query or a different source.');
|
|
99
|
+
ui.blank();
|
|
100
|
+
return { exitCode: 0 };
|
|
101
|
+
}
|
|
102
|
+
// Column widths
|
|
103
|
+
const nameWidth = Math.max(12, ...results.map((r) => r.name.length));
|
|
104
|
+
const sourceWidth = Math.max(8, ...results.map((r) => r.source.length));
|
|
105
|
+
const pkgWidth = Math.max(10, ...results.map((r) => (r.package ?? '').length));
|
|
106
|
+
const header = [
|
|
107
|
+
'Name'.padEnd(nameWidth),
|
|
108
|
+
'Source'.padEnd(sourceWidth),
|
|
109
|
+
'Package'.padEnd(pkgWidth),
|
|
110
|
+
'Description',
|
|
111
|
+
].join(' ');
|
|
112
|
+
ui.dim(` ${header}`);
|
|
113
|
+
ui.dim(` ${'─'.repeat(header.length)}`);
|
|
114
|
+
for (const r of results) {
|
|
115
|
+
const row = [
|
|
116
|
+
r.name.padEnd(nameWidth),
|
|
117
|
+
r.source.padEnd(sourceWidth),
|
|
118
|
+
(r.package ?? '').padEnd(pkgWidth),
|
|
119
|
+
r.description.length > 60 ? r.description.slice(0, 57) + '...' : r.description,
|
|
120
|
+
].join(' ');
|
|
121
|
+
console.log(` ${row}`);
|
|
122
|
+
}
|
|
123
|
+
ui.blank();
|
|
124
|
+
ui.dim(` ${results.length} result${results.length !== 1 ? 's' : ''}`);
|
|
125
|
+
ui.blank();
|
|
126
|
+
return { exitCode: 0 };
|
|
127
|
+
}
|
|
128
|
+
// ── List ───────────────────────────────────────────────────────────────────
|
|
129
|
+
async function handleList(ctx) {
|
|
130
|
+
const jsonMode = hasFlag(ctx.args, '--json');
|
|
131
|
+
const packages = await listInstalledPackages();
|
|
132
|
+
if (jsonMode) {
|
|
133
|
+
console.log(JSON.stringify(packages, null, 2));
|
|
134
|
+
return { exitCode: 0 };
|
|
135
|
+
}
|
|
136
|
+
ui.blank();
|
|
137
|
+
console.log(` ${ui.brandMark()} ${ui.bold('Installed Marketplace Packages')}`);
|
|
138
|
+
ui.rule();
|
|
139
|
+
if (packages.length === 0) {
|
|
140
|
+
ui.dim(' No packages installed.');
|
|
141
|
+
ui.blank();
|
|
142
|
+
ui.dim(' Install a package: aiwg install owner/name');
|
|
143
|
+
ui.blank();
|
|
144
|
+
return { exitCode: 0 };
|
|
145
|
+
}
|
|
146
|
+
const keyWidth = Math.max(12, ...packages.map((p) => p.key.length));
|
|
147
|
+
const versionWidth = Math.max(7, ...packages.map((p) => p.version.length));
|
|
148
|
+
const header = [
|
|
149
|
+
'Package'.padEnd(keyWidth),
|
|
150
|
+
'Version'.padEnd(versionWidth),
|
|
151
|
+
'Type',
|
|
152
|
+
].join(' ');
|
|
153
|
+
ui.dim(` ${header}`);
|
|
154
|
+
ui.dim(` ${'─'.repeat(header.length)}`);
|
|
155
|
+
for (const pkg of packages) {
|
|
156
|
+
const row = [
|
|
157
|
+
pkg.key.padEnd(keyWidth),
|
|
158
|
+
pkg.version.padEnd(versionWidth),
|
|
159
|
+
pkg.type,
|
|
160
|
+
].join(' ');
|
|
161
|
+
console.log(` ${row}`);
|
|
162
|
+
}
|
|
163
|
+
ui.blank();
|
|
164
|
+
ui.dim(` ${packages.length} package${packages.length !== 1 ? 's' : ''} installed`);
|
|
165
|
+
ui.blank();
|
|
166
|
+
return { exitCode: 0 };
|
|
167
|
+
}
|
|
168
|
+
//# sourceMappingURL=marketplace.js.map
|