@aiwg/cli 2026.10.1 → 2026.10.4
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 +2 -2
- package/agentic/code/providers/capability-matrix.yaml +270 -0
- package/agentic/code/providers/model-capabilities.v1.json +3183 -24
- package/bin/aiwg.mjs +135 -47
- package/dist/src/a2a/codecs.js +9 -0
- package/dist/src/agents/grounding/knowledge-base.js +54 -6
- package/dist/src/artifacts/browser-export.js +6 -0
- package/dist/src/artifacts/checksum-manifest.js +1 -0
- package/dist/src/artifacts/citation-parser.js +173 -92
- package/dist/src/artifacts/citation-table-schema.js +59 -0
- package/dist/src/artifacts/cli.js +57 -18
- package/dist/src/artifacts/corpus-tools/snapshot.js +1 -1
- package/dist/src/artifacts/corpus-tools/vision-extract.js +107 -15
- package/dist/src/artifacts/corpus-views/ref-parser.js +3 -1
- package/dist/src/artifacts/corpus-views/renderers.js +3 -3
- package/dist/src/artifacts/discovery-eval.js +6 -4
- package/dist/src/artifacts/fortemi-core-query-adapter.js +36 -3
- package/dist/src/artifacts/fortemi-core-sync.js +166 -40
- package/dist/src/artifacts/framework-capabilities.js +171 -0
- package/dist/src/artifacts/framework-index-paths.js +73 -0
- package/dist/src/artifacts/framework-source-digest.js +75 -0
- package/dist/src/artifacts/index-builder.js +285 -131
- package/dist/src/artifacts/index-files.js +132 -18
- package/dist/src/artifacts/index-preparation.js +65 -0
- package/dist/src/artifacts/index-refresh.js +576 -0
- package/dist/src/artifacts/index-worker.mjs +9 -0
- package/dist/src/artifacts/prebuilt-build-lock.js +47 -4
- package/dist/src/artifacts/prebuilt-deployment.js +46 -0
- package/dist/src/artifacts/prebuilt-relations.js +80 -0
- package/dist/src/artifacts/query-engine.js +410 -88
- package/dist/src/artifacts/relations-builder.js +168 -0
- package/dist/src/artifacts/relations.js +148 -0
- package/dist/src/artifacts/repair.js +9 -4
- package/dist/src/artifacts/stats.js +5 -2
- package/dist/src/artifacts/types.js +30 -10
- package/dist/src/artifacts/watcher.js +1 -1
- package/dist/src/auth/credential-store.js +2 -1
- package/dist/src/catalog/cli.d.mts +5 -0
- package/dist/src/channel/manager.d.mts +20 -0
- package/dist/src/channel/manager.mjs +78 -12
- package/dist/src/cli/child-process-result.js +40 -0
- package/dist/src/cli/command-log.js +2 -3
- package/dist/src/cli/env.js +38 -16
- package/dist/src/cli/flag-parsing.js +236 -0
- package/dist/src/cli/handlers/artifacts.js +3 -0
- package/dist/src/cli/handlers/auth.js +3 -0
- package/dist/src/cli/handlers/decision.js +218 -5
- package/dist/src/cli/handlers/diagnose.js +13 -5
- package/dist/src/cli/handlers/effect.js +4 -2
- package/dist/src/cli/handlers/evidence.js +3 -0
- package/dist/src/cli/handlers/feedback.js +14 -5
- package/dist/src/cli/handlers/help.js +1 -0
- package/dist/src/cli/handlers/index.js +3 -1
- package/dist/src/cli/handlers/init.js +248 -30
- package/dist/src/cli/handlers/lint.js +5 -0
- package/dist/src/cli/handlers/mc.js +23 -0
- package/dist/src/cli/handlers/models.js +169 -10
- package/dist/src/cli/handlers/ralph-launcher.js +2 -0
- package/dist/src/cli/handlers/ralph.js +3 -0
- package/dist/src/cli/handlers/refresh.js +28 -0
- package/dist/src/cli/handlers/regenerate.js +14 -0
- package/dist/src/cli/handlers/resource-versions.js +3 -0
- package/dist/src/cli/handlers/rules.js +195 -0
- package/dist/src/cli/handlers/run.js +4 -0
- package/dist/src/cli/handlers/runtime-info.js +25 -11
- package/dist/src/cli/handlers/script-runner.js +19 -8
- package/dist/src/cli/handlers/session.js +406 -62
- package/dist/src/cli/handlers/sessions.js +243 -76
- package/dist/src/cli/handlers/setup-manifest.js +474 -79
- package/dist/src/cli/handlers/setup.js +180 -39
- package/dist/src/cli/handlers/steward.js +11 -0
- package/dist/src/cli/handlers/subcommands.js +60 -3
- package/dist/src/cli/handlers/team.js +18 -8
- package/dist/src/cli/handlers/uhp.js +3 -0
- package/dist/src/cli/handlers/use.js +307 -55
- package/dist/src/cli/handlers/utilities.js +125 -26
- package/dist/src/cli/handlers/version.js +8 -0
- package/dist/src/cli/prompt-utils.js +72 -0
- package/dist/src/cli/provider-resolution.js +11 -0
- package/dist/src/cli/router.js +15 -1
- package/dist/src/cli/services/deployment-verification.js +19 -9
- package/dist/src/cli/services/provider-prepare-coordinator.js +24 -0
- package/dist/src/cli/skill-usage.js +2 -3
- package/dist/src/config/aiwg-config.js +349 -35
- package/dist/src/config/cli.js +256 -23
- package/dist/src/config/decision-config.js +106 -0
- package/dist/src/config/dispatch-thresholds-runtime.d.mts +8 -0
- package/dist/src/config/dispatch-thresholds-runtime.mjs +38 -0
- package/dist/src/config/gitignore.js +50 -0
- package/dist/src/config/index-graph-overrides.js +36 -0
- package/dist/src/config/project-artifacts-health.d.mts +37 -0
- package/dist/src/config/project-artifacts-health.mjs +14 -3
- package/dist/src/config/project-artifacts-runtime.d.mts +16 -0
- package/dist/src/config/user-config-dir.d.mts +9 -0
- package/dist/src/config/user-config.js +38 -11
- package/dist/src/config/user-registry.js +23 -15
- package/dist/src/config/user-state.js +7 -0
- package/dist/src/decision/adapters/jev.js +75 -27
- package/dist/src/decision/ask.js +203 -43
- package/dist/src/decision/context-live-qualification.js +2 -2
- package/dist/src/decision/driver.js +14 -7
- package/dist/src/decision/ensemble/aggregate.js +23 -10
- package/dist/src/decision/ensemble-study/multifact-study.js +6 -2
- package/dist/src/decision/entry.js +25 -6
- package/dist/src/decision/graph-live-qualification.js +1 -1
- package/dist/src/decision/graph-run.js +9 -0
- package/dist/src/decision/heldout/collector.js +15 -14
- package/dist/src/decision/heldout/contract.js +30 -7
- package/dist/src/decision/index.js +1 -0
- package/dist/src/decision/interop.js +60 -8
- package/dist/src/decision/jev-credentials.js +15 -1
- package/dist/src/decision/ledger.js +942 -0
- package/dist/src/decision/offload-activation.js +137 -0
- package/dist/src/decision/offload.js +550 -0
- package/dist/src/decision/qualification/load.js +4 -6
- package/dist/src/decision/savings.js +28 -0
- package/dist/src/decision/validate.js +6 -3
- package/dist/src/effects/dispatch-verifier.js +252 -0
- package/dist/src/effects/index.js +1 -0
- package/dist/src/effects/types.js +5 -1
- package/dist/src/effects/verifiers/git.js +2 -1
- package/dist/src/effects/verifiers/tracker.js +26 -14
- package/dist/src/extensions/commands/definitions.js +19 -0
- package/dist/src/extensions/project-local-remove.js +36 -1
- package/dist/src/features/installer.js +2 -2
- package/dist/src/flow/graph-metadata.js +5 -0
- package/dist/src/gates/providers/loader.js +64 -18
- package/dist/src/installation/manager-command.d.mts +18 -0
- package/dist/src/installation/manager-command.mjs +15 -3
- package/dist/src/installation/manager.d.mts +49 -0
- package/dist/src/installation/manager.mjs +95 -5
- package/dist/src/issues/cli.js +4 -4
- package/dist/src/issues/local.js +24 -5
- package/dist/src/jobs/runner.js +1 -1
- package/dist/src/lint/cli.js +27 -1
- package/dist/src/lint/loader.js +2 -1
- package/dist/src/lint/reporters.js +25 -1
- package/dist/src/lint/rule-activation.js +43 -0
- package/dist/src/lint/runner.js +137 -62
- package/dist/src/mcp/adapters/codex-runtime.js +366 -56
- package/dist/src/mcp/claude-install.d.mts +4 -0
- package/dist/src/mcp/claude-install.mjs +41 -0
- package/dist/src/mcp/cli.d.mts +1 -0
- package/dist/src/mcp/cli.mjs +620 -85
- package/dist/src/mcp/config-file.d.mts +28 -0
- package/dist/src/mcp/config-file.mjs +279 -0
- package/dist/src/mcp/config-layers.d.mts +36 -0
- package/dist/src/mcp/config-layers.mjs +348 -0
- package/dist/src/mcp/credentials.d.mts +51 -0
- package/dist/src/mcp/credentials.mjs +484 -0
- package/dist/src/mcp/grok-build-config.d.mts +6 -0
- package/dist/src/mcp/grok-build-config.mjs +17 -27
- package/dist/src/mcp/helpers.mjs +109 -4
- package/dist/src/mcp/muse-native-config.d.mts +13 -0
- package/dist/src/mcp/muse-native-config.mjs +1 -0
- package/dist/src/mcp/omp-config.d.mts +4 -0
- package/dist/src/mcp/omp-config.mjs +50 -29
- package/dist/src/mcp/profiles.js +97 -23
- package/dist/src/mcp/profiles.mjs +99 -27
- package/dist/src/mcp/registry.js +248 -131
- package/dist/src/mcp/registry.mjs +169 -100
- package/dist/src/mcp/server-config.d.mts +3 -0
- package/dist/src/mcp/server-config.mjs +89 -0
- package/dist/src/mcp/server.mjs +127 -82
- package/dist/src/mcp/test-simple.mjs +2 -1
- package/dist/src/mcp/toml-editor.d.mts +4 -0
- package/dist/src/mcp/toml-string.d.mts +1 -0
- package/dist/src/mcp/toml-string.mjs +9 -0
- package/dist/src/mcp/toml-strip-mcp.d.mts +1 -0
- package/dist/src/mcp/toml-strip-mcp.mjs +135 -0
- package/dist/src/mcp/tool-filters.d.mts +46 -0
- package/dist/src/mcp/tool-filters.mjs +357 -0
- package/dist/src/mcp/tools/agentic-sandbox.mjs +3 -1
- package/dist/src/mcp/tools/decision.mjs +22 -3
- package/dist/src/mcp/tools/discovery.mjs +62 -55
- package/dist/src/mcp/tools/orchestration.mjs +50 -2
- package/dist/src/mcp/tools/subsystems.mjs +39 -8
- package/dist/src/mcp/tools/worker-invoke.mjs +2856 -0
- package/dist/src/mcp/tools/worker-shell-control.mjs +289 -0
- package/dist/src/mcp/tools/worker-stdin-runtime.mjs +79 -0
- package/dist/src/memory/project-registry.js +2 -2
- package/dist/src/mission-protocol/codecs.js +647 -1
- package/dist/src/mission-protocol/types.js +110 -0
- package/dist/src/mission-protocol/worker-status.js +2 -0
- package/dist/src/models/config-loader.js +76 -14
- package/dist/src/models/grok-build-models.js +93 -41
- package/dist/src/models/model-capabilities.v1.json +3183 -24
- package/dist/src/models/model-discovery.js +931 -67
- package/dist/src/models/provider-policy.js +719 -11
- package/dist/src/models/qualification-digest.d.mts +2 -0
- package/dist/src/models/qualification-digest.mjs +17 -0
- package/dist/src/models/resolver.js +261 -0
- package/dist/src/models/worker-direct-readiness.js +550 -0
- package/dist/src/models/worker-dispatch-offer.js +169 -0
- package/dist/src/models/worker-health-readiness.js +144 -0
- package/dist/src/models/worker-installation.d.mts +39 -0
- package/dist/src/models/worker-installation.mjs +986 -0
- package/dist/src/models/wrapper-route.js +18 -0
- package/dist/src/ops/registry.js +9 -14
- package/dist/src/plugins/standalone-packager.js +4 -3
- package/dist/src/process/bounded-child-process.d.mts +84 -0
- package/dist/src/process/bounded-child-process.mjs +430 -0
- package/dist/src/process/cli-command.d.mts +16 -0
- package/dist/src/process/cli-command.mjs +75 -0
- package/dist/src/process/signal-child.d.mts +6 -0
- package/dist/src/process/signal-child.mjs +7 -0
- package/dist/src/providers/capability-matrix.js +8 -0
- package/dist/src/providers/capability-matrix.yaml +270 -0
- package/dist/src/providers/deployed-skill-roots.js +20 -0
- package/dist/src/providers/grok-build-acp.js +3 -2
- package/dist/src/providers/grok-build-headless.js +53 -23
- package/dist/src/providers/grok-build-inspect.js +1 -0
- package/dist/src/providers/omp-agent.d.mts +8 -0
- package/dist/src/providers/omp-diagnostics.d.mts +1 -0
- package/dist/src/providers/omp-paths.d.mts +13 -0
- package/dist/src/providers/provider-definitions.js +9 -1
- package/dist/src/providers/provider-definitions.mjs +9 -2
- package/dist/src/providers/skill-ownership.d.mts +9 -0
- package/dist/src/providers/skill-ownership.mjs +88 -0
- package/dist/src/rules/activation.d.mts +21 -0
- package/dist/src/rules/activation.mjs +62 -0
- package/dist/src/rules/inline-budget.d.mts +26 -0
- package/dist/src/rules/inline-budget.mjs +66 -0
- package/dist/src/rules/inventory.js +129 -0
- package/dist/src/rules/pin-state.js +73 -0
- package/dist/src/rules/pins.d.mts +14 -0
- package/dist/src/rules/pins.mjs +112 -0
- package/dist/src/rules/rule-frontmatter.schema.json +197 -0
- package/dist/src/serve/executor-registry.js +16 -24
- package/dist/src/serve/fleet-mission-conductor.js +9 -0
- package/dist/src/serve/mission-conductor.js +47 -12
- package/dist/src/serve/shared-host-scheduler.js +2 -0
- package/dist/src/serve/worker-invocation.js +558 -0
- package/dist/src/serve/worker-stdin-frame.d.mts +10 -0
- package/dist/src/serve/worker-stdin-frame.mjs +107 -0
- package/dist/src/sessions/adapter-registry.js +49 -0
- package/dist/src/sessions/adapters/claude.js +39 -54
- package/dist/src/sessions/adapters/codex.js +82 -67
- package/dist/src/sessions/adapters/copilot.js +4 -4
- package/dist/src/sessions/adapters/cursor.js +40 -57
- package/dist/src/sessions/adapters/deepseek-harness.js +15 -12
- package/dist/src/sessions/adapters/factory.js +31 -27
- package/dist/src/sessions/adapters/generic.js +43 -9
- package/dist/src/sessions/adapters/grok-build.js +11 -11
- package/dist/src/sessions/adapters/grokbot-locator.js +111 -0
- package/dist/src/sessions/adapters/grokbot.js +434 -24
- package/dist/src/sessions/adapters/hermes.js +27 -29
- package/dist/src/sessions/adapters/muse-workspace-scan.js +128 -0
- package/dist/src/sessions/adapters/muse.js +200 -104
- package/dist/src/sessions/adapters/omp.js +28 -14
- package/dist/src/sessions/adapters/openclaw.js +89 -79
- package/dist/src/sessions/adapters/opencode.js +27 -24
- package/dist/src/sessions/adapters/openhuman.js +18 -60
- package/dist/src/sessions/adapters/pi.js +30 -14
- package/dist/src/sessions/adapters/warp.js +3 -3
- package/dist/src/sessions/adapters/windsurf.js +19 -48
- package/dist/src/sessions/batch-contracts.js +25 -5
- package/dist/src/sessions/batch-import.js +72 -51
- package/dist/src/sessions/candidates.js +47 -11
- package/dist/src/sessions/contracts.js +75 -2
- package/dist/src/sessions/coverage-preflight.js +134 -0
- package/dist/src/sessions/discovery.js +3 -0
- package/dist/src/sessions/export-plan.js +4 -3
- package/dist/src/sessions/grok-build-cli.js +67 -5
- package/dist/src/sessions/import-exclusions.js +72 -0
- package/dist/src/sessions/import-lease.js +34 -18
- package/dist/src/sessions/import-limits.js +37 -0
- package/dist/src/sessions/importer.js +84 -46
- package/dist/src/sessions/index.js +2 -0
- package/dist/src/sessions/lifecycle.js +45 -0
- package/dist/src/sessions/policy.js +133 -25
- package/dist/src/sessions/readers.js +106 -53
- package/dist/src/sessions/refresh.js +106 -0
- package/dist/src/sessions/repository.js +199 -63
- package/dist/src/sessions/workspace-discovery.js +315 -88
- package/dist/src/sessions/workspace-matching.js +107 -0
- package/dist/src/skills/adapters/clawhub.js +10 -8
- package/dist/src/skills/adapters/openclaw.js +10 -7
- package/dist/src/skills/importer.js +1 -0
- package/dist/src/smiths/context-pipeline/aiwg-md.js +11 -0
- package/dist/src/smiths/context-pipeline/claude-hook.js +3 -26
- package/dist/src/smiths/context-pipeline/finalization.js +6 -5
- package/dist/src/smiths/context-pipeline/generator.js +21 -4
- package/dist/src/smiths/context-pipeline/parallelism-section.js +195 -14
- package/dist/src/smiths/context-pipeline/workspace-context.js +116 -9
- package/dist/src/smiths/hook-bridge/codex-translator.js +6 -5
- package/dist/src/smiths/mcpsmith/example.js +1 -1
- package/dist/src/smiths/mcpsmith/generator.js +1 -1
- package/dist/src/smiths/toolsmith/runtime-discovery.d.mts +10 -0
- package/dist/src/smiths/toolsmith/runtime-discovery.mjs +85 -31
- package/dist/src/storage/backends/fs.js +18 -76
- package/dist/src/storage/backends/logseq.js +68 -7
- package/dist/src/storage/backends/obsidian.js +1 -0
- package/dist/src/storage/fortemi-qualification-receipt.js +2 -2
- package/dist/src/testing/generators/test-code-generator.js +57 -30
- package/dist/src/tracker/forge-http.js +2 -1
- package/dist/src/uhp/client.js +11 -1
- package/dist/src/uhp/mission.js +5 -0
- package/dist/src/update/checker.d.mts +2 -0
- package/dist/src/update/checker.mjs +5 -5
- package/dist/src/update/notifier.mjs +54 -2
- package/dist/src/update/service.d.mts +22 -0
- package/dist/src/utils/contained-filesystem.d.mts +37 -0
- package/dist/src/utils/contained-filesystem.mjs +683 -0
- package/dist/src/utils/temporary-directory.js +36 -0
- package/dist/src/writing/example-generator.js +1 -1
- package/dist/src/writing/fidelity.js +18 -1
- package/package.json +32 -2
- package/schemas/mission-v1.schema.json +2429 -0
- package/schemas/models/model-catalog.v1.schema.json +301 -0
- package/schemas/models/model-config-compatibility.v1.schema.json +281 -0
- package/schemas/models/model-policy.v1.schema.json +14 -0
- package/schemas/models/provider-model-capabilities.v1.schema.json +1072 -0
- package/tools/_resolve-impl.mjs +39 -2
- package/tools/agents/deploy-agents.mjs +64 -23
- package/tools/agents/providers/base.mjs +153 -166
- package/tools/agents/providers/claude.mjs +8 -24
- package/tools/agents/providers/codex.mjs +18 -11
- package/tools/agents/providers/cursor.mjs +19 -18
- package/tools/agents/providers/grok-build.mjs +3 -1
- package/tools/agents/providers/grokbot.mjs +11 -12
- package/tools/agents/providers/hermes.mjs +62 -49
- package/tools/agents/providers/omp.mjs +5 -2
- package/tools/agents/providers/openclaw-translator.mjs +19 -5
- package/tools/agents/providers/openclaw.mjs +9 -4
- package/tools/agents/providers/pi.mjs +5 -0
- package/tools/agents/providers/provider-prepare-channel.mjs +5 -0
- package/tools/agents/providers/provider-prepare-coordinator.mjs +247 -0
- package/tools/agents/providers/provider-prepare-worker.mjs +84 -0
- package/tools/agents/providers/rule-delivery.mjs +1270 -0
- package/tools/agents/providers/warp.mjs +20 -26
- package/tools/cli/decision-offload-report.mjs +40 -0
- package/tools/cli/workspace-status.mjs +862 -0
- package/tools/plugin/package-plugins.mjs +186 -8
- package/tools/plugin/plugin-links.mjs +114 -0
- package/tools/providers/antigravity-transport.mjs +3 -1
- package/tools/providers/deepseek-harness-transport.mjs +360 -0
- package/tools/providers/omp-transport.mjs +194 -0
- package/tools/ralph-external/lib/claude-adapter.mjs +389 -0
- package/tools/ralph-external/lib/codex-adapter.mjs +432 -0
- package/tools/ralph-external/lib/consecutive-failure-circuit-breaker.mjs +1748 -0
- package/tools/ralph-external/lib/deepseek-harness-adapter.mjs +397 -0
- package/tools/ralph-external/lib/factory-adapter.mjs +503 -0
- package/tools/ralph-external/lib/launcher-recovery-evidence.mjs +55 -0
- package/tools/ralph-external/lib/muse-adapter.mjs +364 -0
- package/tools/ralph-external/lib/omp-adapter.mjs +315 -0
- package/tools/ralph-external/lib/opencode-adapter.mjs +575 -0
- package/tools/ralph-external/lib/openhuman-adapter.mjs +75 -0
- package/tools/ralph-external/lib/pi-adapter.mjs +329 -0
- package/tools/ralph-external/lib/provider-adapter.mjs +748 -0
- package/tools/ralph-external/lib/recovery-probe.mjs +72 -0
- package/tools/ralph-external/lib/session-environment.mjs +28 -0
- package/tools/ralph-external/lib/systemd-client.mjs +49 -0
- package/tools/ralph-external/lib/worker-health.mjs +439 -0
- package/tools/ralph-external/lib/worker-isolation.mjs +717 -0
- package/tools/ralph-external/lib/worker-overflow.mjs +50 -0
- package/tools/ralph-external/process-monitor.mjs +1017 -0
- package/tools/ralph-external/session-launcher.mjs +5057 -0
- package/tools/scripts/resource-preflight.mjs +541 -0
- package/tools/skills/deploy-skills-codex.mjs +2 -1
- package/vscode-extension/schemas/aiwg.config.v1.json +2916 -0
package/tools/_resolve-impl.mjs
CHANGED
|
@@ -20,7 +20,7 @@ function findPackageRoot(callerUrl) {
|
|
|
20
20
|
dir = parent;
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
-
throw new Error(`Could not locate AIWG package root from ${callerUrl}`);
|
|
23
|
+
throw Object.assign(new Error(`Could not locate AIWG package root from ${callerUrl}`), { code: 'AIWG_PACKAGE_ROOT_MISSING' });
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
function candidatesFor(root, relativeFromSrc, base) {
|
|
@@ -46,6 +46,43 @@ function resolveCandidate(root, relativeFromSrc, base) {
|
|
|
46
46
|
*
|
|
47
47
|
* Prefers dist/src/ when present. Set AIWG_RESOLVE_IMPL_FROM=dist or src to
|
|
48
48
|
* force a side during CI/package-layout checks.
|
|
49
|
+
*
|
|
50
|
+
* ## Why a tools/ script that imports src/ needs this (#3062)
|
|
51
|
+
*
|
|
52
|
+
* The npm package ships the `tools/` tree (with maintainer-only exceptions
|
|
53
|
+
* below) and `dist/src/`; it does not ship `src/` itself (see `files` in
|
|
54
|
+
* package.json). A script under `tools/` that imports `../../src/<module>`
|
|
55
|
+
* directly by relative path works from a git checkout (`src/` exists
|
|
56
|
+
* there) but throws `ERR_MODULE_NOT_FOUND` once installed from npm, where
|
|
57
|
+
* only `dist/src/<module>` exists. Any shipped `.mjs` file under `tools/`
|
|
58
|
+
* or `bin/` that needs something under `src/` must resolve it through
|
|
59
|
+
* `importImpl(import.meta.url, '<module-path-relative-to-src>')` instead of
|
|
60
|
+
* a literal relative import, so it finds `dist/src/` when installed and
|
|
61
|
+
* `src/` in a checkout. `test/integration/tools-packed-relative-imports.test.ts`
|
|
62
|
+
* guards this for every shipped relative import without exceptions.
|
|
63
|
+
*
|
|
64
|
+
* Directories `package.json`'s `files` excludes from the npm package
|
|
65
|
+
* (`tools/benchmarks/`, `tools/ci/`, `tools/contrib/`,
|
|
66
|
+
* `tools/eval/`, `tools/lint/` other than its listed exceptions,
|
|
67
|
+
* `tools/manifest/` other than its listed exception, `tools/qualification/`,
|
|
68
|
+
* and `tools/release/`) are maintainer/CI-only: they never run from an
|
|
69
|
+
* installed package, so a literal `../../src/<module>` import there is
|
|
70
|
+
* fine and does not need `importImpl`. Keep that distinction explicit at
|
|
71
|
+
* each such import site rather than silently mixing styles within one
|
|
72
|
+
* shipped-vs-not-shipped directory. `tools/benchmarks/` and
|
|
73
|
+
* `tools/qualification/` were excluded specifically because nothing
|
|
74
|
+
* shipped ever referenced them (#3062 B/C finding 2) — removing them
|
|
75
|
+
* also trims install size (#3075).
|
|
76
|
+
*
|
|
77
|
+
* Decision study/replay scripts, experiments, OMP conformance probes, the
|
|
78
|
+
* desktop issuer qualification, and repository testing scripts are also
|
|
79
|
+
* excluded: they require checkout fixtures, development dependencies, or
|
|
80
|
+
* unshipped application code and have no installed CLI callers. Keep those
|
|
81
|
+
* scripts in the repository rather than adapting them for installation.
|
|
82
|
+
*
|
|
83
|
+
* `tools/docker/container-manager.mjs` and `Dockerfile.daemon` are shipped
|
|
84
|
+
* exceptions to the Docker directory exclusion: `aiwg daemon start --docker`
|
|
85
|
+
* needs both. The manager uses this resolver for its implementation import.
|
|
49
86
|
*/
|
|
50
87
|
export function resolveImpl(callerUrl, relativeFromSrc) {
|
|
51
88
|
const root = findPackageRoot(callerUrl);
|
|
@@ -65,7 +102,7 @@ export function resolveImpl(callerUrl, relativeFromSrc) {
|
|
|
65
102
|
const attempted = order
|
|
66
103
|
.flatMap((base) => candidatesFor(root, relativeFromSrc, base))
|
|
67
104
|
.join(', ');
|
|
68
|
-
throw new Error(`Could not resolve ${relativeFromSrc}; attempted: ${attempted}`);
|
|
105
|
+
throw Object.assign(new Error(`Could not resolve ${relativeFromSrc}; attempted: ${attempted}`), { code: 'AIWG_IMPLEMENTATION_MISSING' });
|
|
69
106
|
}
|
|
70
107
|
|
|
71
108
|
export async function importImpl(callerUrl, relativeFromSrc) {
|
|
@@ -11,13 +11,17 @@
|
|
|
11
11
|
* Options:
|
|
12
12
|
* --source <path> Source directory (defaults to repo root)
|
|
13
13
|
* --target <path> Target directory (defaults to cwd)
|
|
14
|
+
* --scope <user|project> Deployment scope (default: project)
|
|
15
|
+
* --user Shorthand for --scope user
|
|
14
16
|
* --mode <type> Deployment mode: general, sdlc, marketing (alias: mmk), media-curator, research, both, or all (default)
|
|
15
17
|
* --deploy-commands Deploy commands in addition to agents
|
|
16
18
|
* --deploy-skills Deploy skills in addition to agents
|
|
17
19
|
* --deploy-rules Deploy rules in addition to agents
|
|
18
20
|
* --commands-only Deploy only commands (skip agents)
|
|
19
21
|
* --skills-only Deploy only skills (skip agents)
|
|
20
|
-
* --
|
|
22
|
+
* --strict Fail startup budget overruns before deployment promotion
|
|
23
|
+
--report-only Warn on startup budget overruns (migration default; CI remains strict)
|
|
24
|
+
--rules-only Deploy only rules (skip agents)
|
|
21
25
|
* --dry-run Show what would be deployed without writing
|
|
22
26
|
* --force Overwrite existing files
|
|
23
27
|
* --provider <name> Target provider: antigravity (agy), claude (default), openai, codex, cursor, opencode, copilot, factory, grokbot, grok-build, muse, pi, omp, deepseek-harness (dsh), warp, devin, hermes, openhuman, or openclaw
|
|
@@ -187,7 +191,7 @@ function uniquePaths(paths) {
|
|
|
187
191
|
return [...new Set(paths.filter(Boolean))];
|
|
188
192
|
}
|
|
189
193
|
|
|
190
|
-
function collectMirrorSkillDirs(srcRoot, mode) {
|
|
194
|
+
export function collectMirrorSkillDirs(srcRoot, mode, providerName) {
|
|
191
195
|
const dirs = [];
|
|
192
196
|
|
|
193
197
|
const directSkillsDir = path.join(srcRoot, 'skills');
|
|
@@ -206,7 +210,14 @@ function collectMirrorSkillDirs(srcRoot, mode) {
|
|
|
206
210
|
});
|
|
207
211
|
dirs.push(...artifacts.skills);
|
|
208
212
|
|
|
209
|
-
|
|
213
|
+
// Pi's provider collector already deploys all eligible addon skills for
|
|
214
|
+
// every root framework mode. Mirror the command-shaped addon skills in
|
|
215
|
+
// that same root pass so `aiwg use` does not need to repeat the entire
|
|
216
|
+
// deployment once per addon merely to produce these wrappers. Keep addon
|
|
217
|
+
// skills after framework skills: this preserves the existing per-addon
|
|
218
|
+
// winner when a framework and addon expose the same command name.
|
|
219
|
+
if (mode === 'all'
|
|
220
|
+
|| (providerName === 'pi' && ['general', 'sdlc', 'both'].includes(mode))) {
|
|
210
221
|
dirs.push(...getAddonSkillDirs(srcRoot));
|
|
211
222
|
}
|
|
212
223
|
}
|
|
@@ -292,7 +303,7 @@ function mirrorSkillsAsCommands(provider, target, srcRoot, opts) {
|
|
|
292
303
|
const targetDir = resolveCommandMirrorDir(provider, target);
|
|
293
304
|
if (!targetDir) return 0;
|
|
294
305
|
|
|
295
|
-
const skillDirs = collectMirrorSkillDirs(srcRoot, opts.mode)
|
|
306
|
+
const skillDirs = collectMirrorSkillDirs(srcRoot, opts.mode, provider.name)
|
|
296
307
|
.filter((dir) => shouldMirrorCommandSkill(provider.name, path.basename(dir)));
|
|
297
308
|
|
|
298
309
|
if (skillDirs.length === 0) return 0;
|
|
@@ -472,10 +483,10 @@ function pruneStaleAiwgArtifacts(provider, target, srcRoot, opts, explicitSource
|
|
|
472
483
|
// Argument Parsing
|
|
473
484
|
// ============================================================================
|
|
474
485
|
|
|
475
|
-
function parseArgs() {
|
|
476
|
-
const args = process.argv.slice(2);
|
|
486
|
+
export function parseArgs(args = process.argv.slice(2)) {
|
|
477
487
|
const cfg = {
|
|
478
488
|
source: null,
|
|
489
|
+
userScope: false,
|
|
479
490
|
target: process.cwd(),
|
|
480
491
|
mode: 'all', // 'general', 'sdlc', 'marketing', 'media-curator', 'research', 'both' (legacy), or 'all'
|
|
481
492
|
dryRun: false,
|
|
@@ -495,6 +506,8 @@ function parseArgs() {
|
|
|
495
506
|
commandsOnly: false,
|
|
496
507
|
skillsOnly: false,
|
|
497
508
|
rulesOnly: false,
|
|
509
|
+
strict: false,
|
|
510
|
+
reportOnly: true,
|
|
498
511
|
kernelOnly: false,
|
|
499
512
|
filter: null, // Glob pattern for agent names
|
|
500
513
|
filterRole: null, // Filter by role: reasoning|coding|efficiency
|
|
@@ -521,6 +534,14 @@ function parseArgs() {
|
|
|
521
534
|
if (a === '--source' && args[i + 1]) cfg.source = path.resolve(args[++i]);
|
|
522
535
|
else if (a === '--target' && args[i + 1]) cfg.target = path.resolve(args[++i]);
|
|
523
536
|
else if (a === '--mode' && args[i + 1]) cfg.mode = String(args[++i]).toLowerCase();
|
|
537
|
+
else if (a === '--scope') {
|
|
538
|
+
const scope = args[++i];
|
|
539
|
+
if (scope !== 'user' && scope !== 'project') {
|
|
540
|
+
throw new Error(`--scope expected 'user' or 'project', got '${scope ?? '(missing)'}'`);
|
|
541
|
+
}
|
|
542
|
+
cfg.userScope = scope === 'user';
|
|
543
|
+
}
|
|
544
|
+
else if (a === '--user') cfg.userScope = true;
|
|
524
545
|
else if (a === '--dry-run') cfg.dryRun = true;
|
|
525
546
|
else if (a === '--force') cfg.force = true;
|
|
526
547
|
else if ((a === '--provider' || a === '--platform') && args[i + 1]) cfg.provider = String(args[++i]).toLowerCase();
|
|
@@ -538,6 +559,9 @@ function parseArgs() {
|
|
|
538
559
|
else if (a === '--commands-only') cfg.commandsOnly = true;
|
|
539
560
|
else if (a === '--skills-only') cfg.skillsOnly = true;
|
|
540
561
|
else if (a === '--rules-only') cfg.rulesOnly = true;
|
|
562
|
+
else if (a === '--strict') { cfg.strict = true; cfg.reportOnly = false; }
|
|
563
|
+
else if (a === '--allow-over-budget') cfg.allowOverBudget = true;
|
|
564
|
+
else if (a === '--report-only') cfg.reportOnly = true;
|
|
541
565
|
else if (a === '--kernel-only') cfg.kernelOnly = true;
|
|
542
566
|
else if (a === '--deploy-behaviors') cfg.deployBehaviors = true;
|
|
543
567
|
else if (a === '--filter' && args[i + 1]) cfg.filter = args[++i];
|
|
@@ -577,6 +601,8 @@ Usage:
|
|
|
577
601
|
Options:
|
|
578
602
|
--source <path> Source directory (defaults to repo root)
|
|
579
603
|
--target <path> Target directory (defaults to cwd)
|
|
604
|
+
--scope <user|project> Deployment scope (default: project)
|
|
605
|
+
--user Shorthand for --scope user
|
|
580
606
|
--mode <type> Deployment mode: general, sdlc, marketing (alias: mmk), media-curator, research, both, or all (default)
|
|
581
607
|
--deploy-commands Deploy commands in addition to agents
|
|
582
608
|
--deploy-skills Deploy skills in addition to agents
|
|
@@ -920,8 +946,8 @@ async function promptCommandsMigration(cfg, provider, targetDir) {
|
|
|
920
946
|
// Main Entry Point
|
|
921
947
|
// ============================================================================
|
|
922
948
|
|
|
923
|
-
export async function main() {
|
|
924
|
-
const cfg = parseArgs();
|
|
949
|
+
export async function main(args = process.argv.slice(2), internal = {}) {
|
|
950
|
+
const cfg = parseArgs(args);
|
|
925
951
|
|
|
926
952
|
// Resolve source directory (default to repo root relative to this script)
|
|
927
953
|
const __filename = fileURLToPath(import.meta.url);
|
|
@@ -1000,6 +1026,7 @@ export async function main() {
|
|
|
1000
1026
|
const opts = {
|
|
1001
1027
|
srcRoot,
|
|
1002
1028
|
target: cfg.target,
|
|
1029
|
+
...(cfg.userScope ? { userScope: true } : {}),
|
|
1003
1030
|
mode: cfg.mode,
|
|
1004
1031
|
// Provider aliases are selectors, not artifact identities. Passing the
|
|
1005
1032
|
// canonical id keeps generated frontmatter byte-identical for devin,
|
|
@@ -1020,6 +1047,9 @@ export async function main() {
|
|
|
1020
1047
|
commandsOnly: cfg.commandsOnly,
|
|
1021
1048
|
skillsOnly: cfg.skillsOnly || cfg.kernelOnly,
|
|
1022
1049
|
rulesOnly: cfg.rulesOnly,
|
|
1050
|
+
strict: cfg.strict,
|
|
1051
|
+
reportOnly: cfg.reportOnly,
|
|
1052
|
+
allowOverBudget: cfg.allowOverBudget === true,
|
|
1023
1053
|
kernelOnly: cfg.kernelOnly,
|
|
1024
1054
|
filter: cfg.filter,
|
|
1025
1055
|
filterRole: cfg.filterRole,
|
|
@@ -1043,31 +1073,41 @@ export async function main() {
|
|
|
1043
1073
|
deployVersion: cfg.deployVersion || getDeployVersion(srcRoot),
|
|
1044
1074
|
deploySource: cfg.deploySource || 'bundled',
|
|
1045
1075
|
};
|
|
1076
|
+
const { isRuleDeploymentPreparationActive } = await import('./providers/rule-delivery.mjs');
|
|
1077
|
+
const preparationActive = isRuleDeploymentPreparationActive();
|
|
1046
1078
|
|
|
1047
1079
|
// Commands → Skills migration: prompt then delete the commands directory
|
|
1048
1080
|
// so stale command files don't create duplicates in the provider TUI.
|
|
1049
|
-
if (!
|
|
1050
|
-
|
|
1051
|
-
|
|
1081
|
+
if (!preparationActive && !internal.finalizeOnly) {
|
|
1082
|
+
if (!cfg.dryRun && !cfg.skipCommandsMigration) {
|
|
1083
|
+
const doMigrate = await promptCommandsMigration(cfg, provider, cfg.target);
|
|
1084
|
+
if (doMigrate) {
|
|
1085
|
+
const commandsRelPath = provider.paths?.commands;
|
|
1086
|
+
if (commandsRelPath) {
|
|
1087
|
+
migrateCommandsDirectory(path.join(cfg.target, commandsRelPath), opts);
|
|
1088
|
+
}
|
|
1089
|
+
} else {
|
|
1090
|
+
// User said no — flip the flag so the provider knows to emit the duplicate warning
|
|
1091
|
+
opts.skipCommandsMigration = true;
|
|
1092
|
+
}
|
|
1093
|
+
} else if (cfg.skipCommandsMigration) {
|
|
1094
|
+
// Flag was passed explicitly — emit the duplicate warning now via a dry migration call
|
|
1052
1095
|
const commandsRelPath = provider.paths?.commands;
|
|
1053
|
-
if (commandsRelPath) {
|
|
1096
|
+
if (commandsRelPath && !provider.capabilities?.homeDirectoryDeploy) {
|
|
1054
1097
|
migrateCommandsDirectory(path.join(cfg.target, commandsRelPath), opts);
|
|
1055
1098
|
}
|
|
1056
|
-
} else {
|
|
1057
|
-
// User said no — flip the flag so the provider knows to emit the duplicate warning
|
|
1058
|
-
opts.skipCommandsMigration = true;
|
|
1059
|
-
}
|
|
1060
|
-
} else if (cfg.skipCommandsMigration) {
|
|
1061
|
-
// Flag was passed explicitly — emit the duplicate warning now via a dry migration call
|
|
1062
|
-
const commandsRelPath = provider.paths?.commands;
|
|
1063
|
-
if (commandsRelPath && !provider.capabilities?.homeDirectoryDeploy) {
|
|
1064
|
-
migrateCommandsDirectory(path.join(cfg.target, commandsRelPath), opts);
|
|
1065
1099
|
}
|
|
1066
1100
|
}
|
|
1067
1101
|
|
|
1102
|
+
// Concurrent deployment runs this parent-owned preflight before any child
|
|
1103
|
+
// snapshots its inputs. Migration can remove a provider command tree, so it
|
|
1104
|
+
// must remain on the same side of the transaction boundary as serial deploy.
|
|
1105
|
+
if (internal.preflightOnly) return;
|
|
1106
|
+
|
|
1068
1107
|
// Delegate to provider
|
|
1069
1108
|
try {
|
|
1070
|
-
await provider.deploy(opts);
|
|
1109
|
+
if (!internal.finalizeOnly) await provider.deploy(opts);
|
|
1110
|
+
if (preparationActive) return;
|
|
1071
1111
|
|
|
1072
1112
|
const mirroredCommandCount = mirrorSkillsAsCommands(provider, cfg.target, srcRoot, opts);
|
|
1073
1113
|
if (mirroredCommandCount > 0 && !cfg.quiet) {
|
|
@@ -1078,7 +1118,7 @@ export async function main() {
|
|
|
1078
1118
|
// or removed (the flat-file analogue of the skills holistic prune). #1627.
|
|
1079
1119
|
pruneStaleAiwgArtifacts(provider, cfg.target, srcRoot, opts, cfg.source);
|
|
1080
1120
|
|
|
1081
|
-
if (!opts.commandsOnly && !opts.skillsOnly && !opts.rulesOnly) {
|
|
1121
|
+
if (!['claude', 'codex', 'cursor', 'hermes', 'warp', 'openclaw'].includes(provider.name) && !opts.commandsOnly && !opts.skillsOnly && !opts.rulesOnly) {
|
|
1082
1122
|
const behaviorDirs = collectBehaviorDirs(srcRoot);
|
|
1083
1123
|
const behaviorCount = deployEmulatedBehaviors(behaviorDirs, provider.name, cfg.target, opts);
|
|
1084
1124
|
if (behaviorCount > 0 && !cfg.quiet) {
|
|
@@ -1093,6 +1133,7 @@ export async function main() {
|
|
|
1093
1133
|
|
|
1094
1134
|
if (!cfg.quiet) console.log(`\n=== Deployment complete ===\n`);
|
|
1095
1135
|
} catch (err) {
|
|
1136
|
+
if (preparationActive || internal.finalizeOnly) throw err;
|
|
1096
1137
|
console.error(`\nDeployment failed:`, err.message);
|
|
1097
1138
|
if (cfg.dryRun) {
|
|
1098
1139
|
console.error('(dry-run mode - no files were modified)');
|