@aiwg/cli 0.0.0-bootstrap.0 → 2026.7.18
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/LICENSE +21 -0
- package/README.md +22 -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 +1486 -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 +886 -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 +65 -9
|
@@ -0,0 +1,392 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scope resolver — `--scope user|project` per ADR-4.
|
|
3
|
+
*
|
|
4
|
+
* The CLI flag `--scope user` redirects deploys to home-rooted paths
|
|
5
|
+
* (`~/.<provider>/...`) instead of project-relative paths. This module
|
|
6
|
+
* holds the per-provider user-scope path map and the helper to detect
|
|
7
|
+
* the flag in command-line args.
|
|
8
|
+
*
|
|
9
|
+
* Per ADR-4 §2 path map. Per ADR-4 §1: `--scope user` and `--scope
|
|
10
|
+
* project` are mutually exclusive; default is `project`.
|
|
11
|
+
*/
|
|
12
|
+
import { homedir } from 'node:os';
|
|
13
|
+
import * as path from 'node:path';
|
|
14
|
+
/**
|
|
15
|
+
* User-scope deploy paths per provider per ADR-4 §2. Each path is absolute
|
|
16
|
+
* (rooted in os.homedir()) so the orchestrator's existing path-join logic
|
|
17
|
+
* (which calls `path.join(target, relativePath)`) treats them as authoritative
|
|
18
|
+
* and bypasses the project-relative join.
|
|
19
|
+
*
|
|
20
|
+
* `.agents/skills/` and `~/.agents/skills/` deliberately appear for multiple
|
|
21
|
+
* providers — that's the cross-provider canonical user-scope target. Per
|
|
22
|
+
* ADR-4 §5 reference counting prevents one provider's removal from breaking
|
|
23
|
+
* another's deploy at the shared path.
|
|
24
|
+
*/
|
|
25
|
+
export const USER_SCOPE_PATHS = {
|
|
26
|
+
claude: {
|
|
27
|
+
agents: path.join(homedir(), '.claude', 'agents'),
|
|
28
|
+
skills: path.join(homedir(), '.claude', 'skills'),
|
|
29
|
+
commands: path.join(homedir(), '.claude', 'commands'),
|
|
30
|
+
rules: path.join(homedir(), '.claude', 'rules'),
|
|
31
|
+
behaviors: path.join(homedir(), '.claude', 'hooks'),
|
|
32
|
+
},
|
|
33
|
+
codex: {
|
|
34
|
+
// #1158 — Verified against `codex-rs/core-skills/src/loader.rs` and
|
|
35
|
+
// `docs/providers/skills-paths.md`. Skills primary path is
|
|
36
|
+
// `~/.agents/skills/` (the cross-provider canonical). Commands deploy at
|
|
37
|
+
// `~/.codex/prompts/` for operator visibility per ADR-1; codex-rs ships a
|
|
38
|
+
// static built-in command enum so this directory is not auto-scanned, but
|
|
39
|
+
// it is the documented location and is where Codex would look if it ever
|
|
40
|
+
// scanned. Agents/rules at user scope route through AGENTS.md, not a
|
|
41
|
+
// discrete directory — left empty here.
|
|
42
|
+
agents: '',
|
|
43
|
+
skills: path.join(homedir(), '.agents', 'skills'),
|
|
44
|
+
commands: path.join(homedir(), '.codex', 'prompts'),
|
|
45
|
+
rules: '',
|
|
46
|
+
behaviors: '',
|
|
47
|
+
},
|
|
48
|
+
copilot: {
|
|
49
|
+
// #1160 — Non-applicable for filesystem user-scope discovery.
|
|
50
|
+
//
|
|
51
|
+
// VS Code GitHub Copilot's user-scope customization mechanism is the
|
|
52
|
+
// VS Code settings UI (`settings.json` → `github.copilot.chat.*` keys
|
|
53
|
+
// and `chat.modeFiles`/`chat.promptFiles` discovery), NOT a home-dir
|
|
54
|
+
// filesystem scan. `~/.config/github-copilot/` exists on Linux but
|
|
55
|
+
// stores auth state, not customization markdown files. Workspace
|
|
56
|
+
// customization is `.github/{copilot-instructions.md,prompts/,agents/,
|
|
57
|
+
// instructions/}` — see the Copilot `ProviderDefinition.paths.artifacts`
|
|
58
|
+
// entry for the project-scope deploy that IS verified.
|
|
59
|
+
//
|
|
60
|
+
// The paths below remain populated as a "harmless mirror" — deploying
|
|
61
|
+
// there does not break Copilot, but the runtime won't pick them up.
|
|
62
|
+
// Operators wanting cross-project Copilot customization should use
|
|
63
|
+
// VS Code's Settings Sync (settings.json), not AIWG `--scope user`.
|
|
64
|
+
//
|
|
65
|
+
// Skills route through ~/.agents/skills/ which IS a documented
|
|
66
|
+
// cross-provider canonical (Codex/OpenCode scan it; Copilot does
|
|
67
|
+
// not auto-scan but doesn't refuse either).
|
|
68
|
+
agents: path.join(homedir(), '.config', 'github-copilot', 'agents'),
|
|
69
|
+
skills: path.join(homedir(), '.agents', 'skills'),
|
|
70
|
+
commands: path.join(homedir(), '.config', 'github-copilot', 'prompts'),
|
|
71
|
+
rules: path.join(homedir(), '.config', 'github-copilot', 'instructions'),
|
|
72
|
+
behaviors: '',
|
|
73
|
+
},
|
|
74
|
+
cursor: {
|
|
75
|
+
// #1159 — Cursor is closed-source; user-scope behavior is unverified.
|
|
76
|
+
// Cursor's documented "User Rules" feature lives in the app's settings
|
|
77
|
+
// UI (preference data under platform-specific config dirs), not as
|
|
78
|
+
// markdown files in `~/.cursor/`. Project Rules at `.cursor/rules/*.mdc`
|
|
79
|
+
// are confirmed (per #1138 PUW-037), but user-scope filesystem
|
|
80
|
+
// discovery is not documented anywhere AIWG can verify.
|
|
81
|
+
//
|
|
82
|
+
// The paths below are the natural home-dir mirrors of the project-scope
|
|
83
|
+
// layout. Deploying there is harmless (Cursor will ignore the files if
|
|
84
|
+
// it doesn't scan them) but may also be invisible to the runtime. Until
|
|
85
|
+
// Cursor publishes user-scope discovery rules, treat this row as
|
|
86
|
+
// "unverified" — see docs/customization/user-scope-deployment.md.
|
|
87
|
+
agents: path.join(homedir(), '.cursor', 'agents'),
|
|
88
|
+
skills: path.join(homedir(), '.cursor', 'skills'),
|
|
89
|
+
commands: path.join(homedir(), '.cursor', 'commands'),
|
|
90
|
+
rules: path.join(homedir(), '.cursor', 'rules'),
|
|
91
|
+
behaviors: path.join(homedir(), '.cursor', 'rules'),
|
|
92
|
+
},
|
|
93
|
+
opencode: {
|
|
94
|
+
// #1161 — Verified against OpenCode docs (opencode.ai/docs/skills,
|
|
95
|
+
// opencode.ai/docs/rules, deepwiki.com/sst/opencode/5.7-skills-system).
|
|
96
|
+
// User-scope discovery roots at ~/.config/opencode/, NOT ~/.opencode/.
|
|
97
|
+
// Subdirectories use the plural forms per the OpenCode docs convention
|
|
98
|
+
// (agents/, commands/, skills/, etc.) — though the project-scope loader
|
|
99
|
+
// accepts both singular and plural via globs (#773, #1107). At user
|
|
100
|
+
// scope we use the plural form per the documented preference.
|
|
101
|
+
//
|
|
102
|
+
// Skills are also scanned by OpenCode at ~/.agents/skills/ (the
|
|
103
|
+
// cross-provider canonical) and ~/.claude/skills/ — we deploy to
|
|
104
|
+
// .agents/skills/ to keep one user-scope skills dir shared across
|
|
105
|
+
// Codex/Copilot/Warp/Factory/OpenCode rather than duplicating into
|
|
106
|
+
// ~/.config/opencode/skills/ as well.
|
|
107
|
+
//
|
|
108
|
+
// Rules at user scope route through ~/.config/opencode/AGENTS.md per
|
|
109
|
+
// the docs — there is no discrete user-scope rules dir.
|
|
110
|
+
agents: path.join(homedir(), '.config', 'opencode', 'agents'),
|
|
111
|
+
skills: path.join(homedir(), '.agents', 'skills'),
|
|
112
|
+
commands: path.join(homedir(), '.config', 'opencode', 'commands'),
|
|
113
|
+
rules: '',
|
|
114
|
+
behaviors: '',
|
|
115
|
+
},
|
|
116
|
+
warp: {
|
|
117
|
+
// #1162 — Non-applicable for filesystem user-scope discovery.
|
|
118
|
+
//
|
|
119
|
+
// Warp's user-scope mechanism is **Warp Drive** (cloud-synced agents,
|
|
120
|
+
// workflows, notebooks, and rules tied to the operator's Warp account),
|
|
121
|
+
// not a filesystem scan under `~/.warp/`. The project-scope AIWG
|
|
122
|
+
// surface for Warp is `WARP.md` aggregation at the project root via
|
|
123
|
+
// `aiwg-regenerate-warp` — that's the verified discovery path.
|
|
124
|
+
//
|
|
125
|
+
// The paths below remain populated as a "harmless mirror" — deploying
|
|
126
|
+
// there does not break Warp, but the runtime won't pick them up.
|
|
127
|
+
// Operators wanting cross-project Warp customization should publish
|
|
128
|
+
// to Warp Drive via the Warp app, not AIWG `--scope user`.
|
|
129
|
+
//
|
|
130
|
+
// Skills route through ~/.agents/skills/ as a courtesy (Warp does not
|
|
131
|
+
// auto-scan it but doesn't refuse either; aligns with the cross-
|
|
132
|
+
// provider canonical used by Codex/OpenCode).
|
|
133
|
+
agents: path.join(homedir(), '.warp', 'agents'),
|
|
134
|
+
skills: path.join(homedir(), '.agents', 'skills'),
|
|
135
|
+
commands: path.join(homedir(), '.warp', 'commands'),
|
|
136
|
+
rules: path.join(homedir(), '.warp', 'rules'),
|
|
137
|
+
behaviors: '',
|
|
138
|
+
},
|
|
139
|
+
windsurf: {
|
|
140
|
+
// #1163 — Non-applicable for filesystem user-scope discovery.
|
|
141
|
+
//
|
|
142
|
+
// Windsurf's user-scope mechanism is **Cascade Memories** (in-app,
|
|
143
|
+
// managed by the Cascade agent itself, not file-discovered) and
|
|
144
|
+
// global rules in the Windsurf settings UI. Project-scope discovery
|
|
145
|
+
// is `.windsurf/{rules,workflows}/` and AGENTS.md aggregation. There
|
|
146
|
+
// is no documented filesystem scan of `~/.windsurf/` for user-scope
|
|
147
|
+
// content.
|
|
148
|
+
//
|
|
149
|
+
// The paths below remain populated as a "harmless mirror" — deploying
|
|
150
|
+
// there does not break Windsurf, but the runtime won't pick them up.
|
|
151
|
+
// Operators wanting cross-project Windsurf customization should use
|
|
152
|
+
// Cascade Memories (commit a memory via the agent UI) or the
|
|
153
|
+
// Windsurf settings UI, not AIWG `--scope user`.
|
|
154
|
+
agents: path.join(homedir(), '.windsurf', 'agents'),
|
|
155
|
+
skills: path.join(homedir(), '.windsurf', 'skills'),
|
|
156
|
+
commands: path.join(homedir(), '.windsurf', 'workflows'),
|
|
157
|
+
rules: path.join(homedir(), '.windsurf', 'rules'),
|
|
158
|
+
behaviors: '',
|
|
159
|
+
},
|
|
160
|
+
hermes: {
|
|
161
|
+
agents: '',
|
|
162
|
+
skills: path.join(homedir(), '.hermes', 'skills'),
|
|
163
|
+
commands: '',
|
|
164
|
+
rules: '',
|
|
165
|
+
behaviors: '',
|
|
166
|
+
},
|
|
167
|
+
openclaw: {
|
|
168
|
+
agents: path.join(homedir(), '.openclaw', 'agents'),
|
|
169
|
+
skills: path.join(homedir(), '.openclaw', 'skills'),
|
|
170
|
+
commands: path.join(homedir(), '.openclaw', 'commands'),
|
|
171
|
+
rules: path.join(homedir(), '.openclaw', 'rules'),
|
|
172
|
+
behaviors: path.join(homedir(), '.openclaw', 'behaviors'),
|
|
173
|
+
},
|
|
174
|
+
openhuman: {
|
|
175
|
+
// OpenHuman is a home-dir app provider for AIWG installs. The app's native
|
|
176
|
+
// skills registry installs to ~/.openhuman/skills, and custom agents are
|
|
177
|
+
// TOML-only under ~/.openhuman/agents. AIWG does not invent a project-level
|
|
178
|
+
// markdown-agent install for OpenHuman.
|
|
179
|
+
agents: '',
|
|
180
|
+
skills: path.join(homedir(), '.openhuman', 'skills'),
|
|
181
|
+
commands: '',
|
|
182
|
+
rules: path.join(homedir(), '.openhuman', '.aiwg', 'rules'),
|
|
183
|
+
behaviors: '',
|
|
184
|
+
},
|
|
185
|
+
factory: {
|
|
186
|
+
// #1164 — Verified against Factory docs (docs.factory.ai/cli/configuration/skills).
|
|
187
|
+
// Skills primary user-scope path is ~/.factory/skills/, NOT the
|
|
188
|
+
// cross-provider .agents/skills/ canonical. Factory's docs explicitly say
|
|
189
|
+
// "for personal use across all projects, you can copy skills to
|
|
190
|
+
// ~/.factory/skills/skill-name" — there's no public statement that
|
|
191
|
+
// Factory scans ~/.agents/skills/, so we deploy to the documented path.
|
|
192
|
+
//
|
|
193
|
+
// Droids and commands at user scope mirror the project-scope layout
|
|
194
|
+
// (.factory/droids/ and .factory/commands/). These paths aren't called
|
|
195
|
+
// out explicitly in the Factory docs as user-scope discovery roots; they
|
|
196
|
+
// follow the same convention as the skills path. If Factory adds dedicated
|
|
197
|
+
// user-scope discovery for these, this entry should be revisited.
|
|
198
|
+
//
|
|
199
|
+
// Rules at user scope route through AGENTS.md per Factory's
|
|
200
|
+
// multi-platform AGENTS.md convention — no discrete user-scope rules dir.
|
|
201
|
+
agents: path.join(homedir(), '.factory', 'droids'),
|
|
202
|
+
skills: path.join(homedir(), '.factory', 'skills'),
|
|
203
|
+
commands: path.join(homedir(), '.factory', 'commands'),
|
|
204
|
+
rules: '',
|
|
205
|
+
behaviors: '',
|
|
206
|
+
},
|
|
207
|
+
};
|
|
208
|
+
/**
|
|
209
|
+
* Detect the `--scope` flag in a command-line arg list. Returns the resolved
|
|
210
|
+
* scope; defaults to 'project'. Throws when both `--scope user` and `--scope
|
|
211
|
+
* project` appear (mutually exclusive per ADR-4 §1).
|
|
212
|
+
*/
|
|
213
|
+
export function detectScope(args) {
|
|
214
|
+
const idx = args.findIndex((a) => a === '--scope');
|
|
215
|
+
if (idx === -1)
|
|
216
|
+
return 'project';
|
|
217
|
+
const value = args[idx + 1];
|
|
218
|
+
if (value !== 'user' && value !== 'project') {
|
|
219
|
+
throw new Error(`--scope expected 'user' or 'project', got '${value ?? '(missing)'}'`);
|
|
220
|
+
}
|
|
221
|
+
// Check for duplicate --scope flags.
|
|
222
|
+
const dupIdx = args.findIndex((a, i) => i > idx && a === '--scope');
|
|
223
|
+
if (dupIdx !== -1) {
|
|
224
|
+
throw new Error('--scope appears more than once');
|
|
225
|
+
}
|
|
226
|
+
return value;
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* The path to the user-scope aiwg.config per ADR-4 §4. Each operator has
|
|
230
|
+
* one of these per-machine; it tracks user-global deployments.
|
|
231
|
+
*/
|
|
232
|
+
export function userScopeConfigPath() {
|
|
233
|
+
return path.join(homedir(), '.aiwg', 'aiwg.config');
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Resolve the deploy paths for a (provider, scope) pair. For project scope,
|
|
237
|
+
* returns ProviderDefinition-backed project-relative paths (the caller
|
|
238
|
+
* resolves them against the project dir). For user scope, returns the
|
|
239
|
+
* absolute home-rooted paths from USER_SCOPE_PATHS.
|
|
240
|
+
*/
|
|
241
|
+
export function resolveScopePaths(provider, scope, projectScopePaths) {
|
|
242
|
+
if (scope === 'project')
|
|
243
|
+
return projectScopePaths;
|
|
244
|
+
const userPaths = USER_SCOPE_PATHS[provider];
|
|
245
|
+
if (!userPaths) {
|
|
246
|
+
// Unknown provider — fall back to project paths so the caller doesn't crash.
|
|
247
|
+
return projectScopePaths;
|
|
248
|
+
}
|
|
249
|
+
return userPaths;
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Mirror skills deployed under the project-scope skills directory to the
|
|
253
|
+
* user-scope target. Per ADR-4 §2 the cross-agent canonical user-scope
|
|
254
|
+
* skills target is `~/.agents/skills/` for codex/copilot/warp/opencode/
|
|
255
|
+
* factory; for other providers the user-scope skills dir is per-provider.
|
|
256
|
+
*
|
|
257
|
+
* This is an additive copy — the project-scope deploy stays in place; the
|
|
258
|
+
* user-scope copy is created alongside. Operators get the skills available
|
|
259
|
+
* across all their projects without re-running aiwg use per project.
|
|
260
|
+
*
|
|
261
|
+
* Returns the count of skills mirrored, or 0 when nothing was found.
|
|
262
|
+
*/
|
|
263
|
+
export async function mirrorSkillsToUserScope(provider, projectSkillsDir) {
|
|
264
|
+
const userPaths = USER_SCOPE_PATHS[provider];
|
|
265
|
+
if (!userPaths || !userPaths.skills) {
|
|
266
|
+
return { count: 0, targetDir: '' };
|
|
267
|
+
}
|
|
268
|
+
return mirrorArtifactDir(projectSkillsDir, userPaths.skills);
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* #1156 Phase 1 — Mirror the full per-provider artifact set (agents, commands,
|
|
272
|
+
* skills, rules) from project scope to the user-scope target. Additive: the
|
|
273
|
+
* project-scope deploy stays in place; user-scope copies are created alongside
|
|
274
|
+
* so the framework is available across every project on the machine.
|
|
275
|
+
*
|
|
276
|
+
* `projectPaths` are the relative or absolute paths the caller already resolved
|
|
277
|
+
* for project-scope deployment. Each one whose user-scope counterpart is
|
|
278
|
+
* non-empty gets mirrored. Returns per-artifact-type counts, the resolved
|
|
279
|
+
* user-scope target directories, and the list of entry names that were copied
|
|
280
|
+
* (so callers can record them in a per-framework manifest for precise remove).
|
|
281
|
+
*/
|
|
282
|
+
export async function mirrorToUserScope(provider, projectPaths) {
|
|
283
|
+
const userPaths = USER_SCOPE_PATHS[provider];
|
|
284
|
+
const empty = { count: 0, targetDir: '', entries: [] };
|
|
285
|
+
if (!userPaths) {
|
|
286
|
+
return { agents: empty, skills: empty, commands: empty, rules: empty, behaviors: empty };
|
|
287
|
+
}
|
|
288
|
+
const [agents, skills, commands, rules, behaviors] = await Promise.all([
|
|
289
|
+
userPaths.agents ? mirrorArtifactDir(projectPaths.agents, userPaths.agents) : Promise.resolve(empty),
|
|
290
|
+
userPaths.skills
|
|
291
|
+
? mirrorSkillDirsToUserScope([projectPaths.skills, projectPaths.kernelSkills ?? ''], userPaths.skills)
|
|
292
|
+
: Promise.resolve(empty),
|
|
293
|
+
userPaths.commands ? mirrorArtifactDir(projectPaths.commands, userPaths.commands) : Promise.resolve(empty),
|
|
294
|
+
userPaths.rules ? mirrorArtifactDir(projectPaths.rules, userPaths.rules) : Promise.resolve(empty),
|
|
295
|
+
userPaths.behaviors ? mirrorArtifactDir(projectPaths.behaviors, userPaths.behaviors) : Promise.resolve(empty),
|
|
296
|
+
]);
|
|
297
|
+
return { agents, skills, commands, rules, behaviors };
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* Merge standard and kernel skill directories into one user-discoverable
|
|
301
|
+
* target. Provider deployments intentionally keep those source surfaces
|
|
302
|
+
* separate, while user scope exposes one native skill root. Duplicate skill
|
|
303
|
+
* names are overwritten by the later source and counted once.
|
|
304
|
+
*/
|
|
305
|
+
export async function mirrorSkillDirsToUserScope(sourceDirs, targetDir) {
|
|
306
|
+
const entries = new Set();
|
|
307
|
+
for (const sourceDir of sourceDirs) {
|
|
308
|
+
const result = await mirrorArtifactDir(sourceDir, targetDir);
|
|
309
|
+
for (const entry of result.entries)
|
|
310
|
+
entries.add(entry);
|
|
311
|
+
}
|
|
312
|
+
return {
|
|
313
|
+
count: entries.size,
|
|
314
|
+
targetDir,
|
|
315
|
+
entries: [...entries],
|
|
316
|
+
};
|
|
317
|
+
}
|
|
318
|
+
/**
|
|
319
|
+
* Copy every directory or file under `src` into `dst` (creating `dst` if
|
|
320
|
+
* needed). Returns the count of top-level entries successfully copied and
|
|
321
|
+
* the entry names themselves — the names are needed by callers that record
|
|
322
|
+
* a per-framework manifest at user scope so `aiwg remove --scope user` can
|
|
323
|
+
* delete only what this deploy created.
|
|
324
|
+
*
|
|
325
|
+
* Used by the user-scope mirror to cover both directory-style artifacts
|
|
326
|
+
* (skills, agents) and file-style artifacts (commands, rules in some
|
|
327
|
+
* providers). Failures on individual entries are swallowed so a single bad
|
|
328
|
+
* entry doesn't fail the whole mirror.
|
|
329
|
+
*/
|
|
330
|
+
async function mirrorArtifactDir(src, dst) {
|
|
331
|
+
if (!src || !dst)
|
|
332
|
+
return { count: 0, targetDir: dst, entries: [] };
|
|
333
|
+
const fs = await import('node:fs/promises');
|
|
334
|
+
let dirents;
|
|
335
|
+
try {
|
|
336
|
+
dirents = await fs.readdir(src, { withFileTypes: true });
|
|
337
|
+
}
|
|
338
|
+
catch {
|
|
339
|
+
return { count: 0, targetDir: dst, entries: [] };
|
|
340
|
+
}
|
|
341
|
+
// Some providers already deploy kernel skills to an absolute user-level
|
|
342
|
+
// path. Inventory that source for registry accounting instead of trying to
|
|
343
|
+
// recursively copy each entry onto itself.
|
|
344
|
+
if (path.resolve(src) === path.resolve(dst)) {
|
|
345
|
+
const entries = dirents
|
|
346
|
+
.filter((entry) => entry.isDirectory() || entry.isFile())
|
|
347
|
+
.map((entry) => entry.name);
|
|
348
|
+
return { count: entries.length, targetDir: dst, entries };
|
|
349
|
+
}
|
|
350
|
+
await fs.mkdir(dst, { recursive: true });
|
|
351
|
+
let count = 0;
|
|
352
|
+
const entries = [];
|
|
353
|
+
for (const entry of dirents) {
|
|
354
|
+
const s = path.join(src, entry.name);
|
|
355
|
+
const d = path.join(dst, entry.name);
|
|
356
|
+
try {
|
|
357
|
+
if (entry.isDirectory()) {
|
|
358
|
+
await fs.cp(s, d, { recursive: true, force: true });
|
|
359
|
+
}
|
|
360
|
+
else if (entry.isFile()) {
|
|
361
|
+
await fs.copyFile(s, d);
|
|
362
|
+
}
|
|
363
|
+
else {
|
|
364
|
+
continue;
|
|
365
|
+
}
|
|
366
|
+
count++;
|
|
367
|
+
entries.push(entry.name);
|
|
368
|
+
}
|
|
369
|
+
catch {
|
|
370
|
+
// ignore individual failures
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
return { count, targetDir: dst, entries };
|
|
374
|
+
}
|
|
375
|
+
/**
|
|
376
|
+
* #1156 Phase 1 — some app providers are exclusively user-scope. `--scope
|
|
377
|
+
* project` against them is meaningless because their paths are home-rooted;
|
|
378
|
+
* silently accepting it would create the false impression that project-scope
|
|
379
|
+
* deploys are tracked. This helper is called by the use/list/remove handlers
|
|
380
|
+
* to fail fast with a clear message on explicit project scope.
|
|
381
|
+
*
|
|
382
|
+
* `--scope user` is a no-op for these providers: that's already what they do
|
|
383
|
+
* without the flag.
|
|
384
|
+
*/
|
|
385
|
+
export function rejectOpenClawProjectScope(provider, scope) {
|
|
386
|
+
if ((provider === 'openclaw' || provider === 'openhuman') && scope === 'project') {
|
|
387
|
+
const label = provider === 'openhuman' ? 'OpenHuman' : 'OpenClaw';
|
|
388
|
+
const home = provider === 'openhuman' ? '~/.openhuman/' : '~/.openclaw/';
|
|
389
|
+
throw new Error(`${label} is exclusively user-scope (${home}). '--scope project' is not supported for this provider; omit the flag or pass '--scope user'.`);
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
//# sourceMappingURL=scope-resolver.js.map
|