@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
|
@@ -160,15 +160,25 @@ export function registerFlowToolset(server) {
|
|
|
160
160
|
description: 'Fetch a declarative Flow playbook by name, including parsed step summary and the wrapper skill path when present.',
|
|
161
161
|
inputSchema: {
|
|
162
162
|
name: z.string().describe('Flow name or playbook file name (e.g. flow-release)'),
|
|
163
|
+
bound_rule_bodies: z.boolean().optional().describe('Include full bound rule bodies'),
|
|
163
164
|
framework: z.string().optional().describe('Optional framework disambiguator'),
|
|
164
165
|
},
|
|
165
166
|
annotations: { readOnlyHint: true, openWorldHint: false },
|
|
166
|
-
}, async ({ name, framework }) => {
|
|
167
|
+
}, async ({ name, framework, bound_rule_bodies }) => {
|
|
167
168
|
try {
|
|
168
169
|
const flow = await findFlow(name, framework);
|
|
169
170
|
if (!flow) return mcpError(`flow-show: flow not found: ${name}`);
|
|
170
171
|
flow.wrapper_skill.exists = await pathExists(flow.wrapper_skill.path);
|
|
171
|
-
|
|
172
|
+
const { stdout, stderr, code } = await runAiwgCli([
|
|
173
|
+
'show', 'flow', flow.path, '--json',
|
|
174
|
+
...(bound_rule_bodies ? ['--bound-rule-bodies'] : []),
|
|
175
|
+
]);
|
|
176
|
+
if (code !== 0) return mcpError(`flow-show binding lookup failed: ${stderr}`);
|
|
177
|
+
const shown = JSON.parse(stdout);
|
|
178
|
+
return mcpJson({ ...flow, ...(shown.bound_rules ? { bound_rules: shown.bound_rules,
|
|
179
|
+
...(shown.required_rule_checks ? { required_rule_checks: shown.required_rule_checks } : {}),
|
|
180
|
+
...(shown.rule_stats ? { rule_stats: shown.rule_stats } : {}),
|
|
181
|
+
...(shown.rule_check_obligation ? { rule_check_obligation: shown.rule_check_obligation } : {}) } : {}) });
|
|
172
182
|
} catch (err) {
|
|
173
183
|
return mcpError(`flow-show: ${err.message}`);
|
|
174
184
|
}
|
|
@@ -215,6 +225,7 @@ export function registerFlowToolset(server) {
|
|
|
215
225
|
}
|
|
216
226
|
|
|
217
227
|
export function registerMissionToolset(server) {
|
|
228
|
+
registerWorkerResolveTool(server);
|
|
218
229
|
server.registerTool('mission-guide', {
|
|
219
230
|
title: 'Show AIWG Mission Primitive',
|
|
220
231
|
description: 'Fetch the aiwg-mission kernel skill. This is the AIWG-owned Mission primitive; it is distinct from the lower-level mc-* Mission Control toolset.',
|
|
@@ -318,3 +329,40 @@ export function registerMissionToolset(server) {
|
|
|
318
329
|
}
|
|
319
330
|
});
|
|
320
331
|
}
|
|
332
|
+
|
|
333
|
+
/** Frozen B-OG-33/35 read-only surface; the CLI and MCP share the typed renderer. */
|
|
334
|
+
export function registerWorkerResolveTool(server) {
|
|
335
|
+
server.registerTool('worker-resolve', {
|
|
336
|
+
title: 'Resolve Worker Invocation',
|
|
337
|
+
description: 'Resolve a nonlaunching qualified worker plan without Mission or MC state.',
|
|
338
|
+
inputSchema: z.object({
|
|
339
|
+
role: z.enum(['efficiency', 'coding', 'reasoning']),
|
|
340
|
+
task: z.string().min(1),
|
|
341
|
+
group: z.string().min(1).regex(/^[a-z][a-z0-9-]{0,62}$/),
|
|
342
|
+
brief: z.string().min(1),
|
|
343
|
+
workdir: z.string().min(1),
|
|
344
|
+
final_output: z.string().min(1),
|
|
345
|
+
transport: z.enum(['shell', 'mcp']).default('shell'),
|
|
346
|
+
format: z.enum(['shell', 'json']).optional(),
|
|
347
|
+
project_dir: z.string().min(1).optional(),
|
|
348
|
+
}).strict(),
|
|
349
|
+
annotations: { readOnlyHint: true, destructiveHint: false, openWorldHint: false },
|
|
350
|
+
}, async input => {
|
|
351
|
+
try {
|
|
352
|
+
const args = ['models', 'resolve'];
|
|
353
|
+
for (const [key, value] of Object.entries(input)) {
|
|
354
|
+
if (key === 'project_dir' || key === 'format') continue;
|
|
355
|
+
args.push(`--${key === 'final_output' ? 'final-output' : key}=${value}`);
|
|
356
|
+
}
|
|
357
|
+
const format = input.format ?? 'json';
|
|
358
|
+
args.push(`--format=${format}`);
|
|
359
|
+
const { stdout, stderr, code } = await runAiwgCli(args, { cwd: input.project_dir, timeoutMs: 30000 });
|
|
360
|
+
if (format === 'shell') {
|
|
361
|
+
return { ...mcpJson(stdout || stderr), ...(code === 0 ? {} : { isError: true }) };
|
|
362
|
+
}
|
|
363
|
+
let plan;
|
|
364
|
+
try { plan = JSON.parse(stdout); } catch { return mcpError(`worker-resolve failed (exit ${code}): ${stderr}`); }
|
|
365
|
+
return { ...mcpJson(plan), ...(code === 0 ? {} : { isError: true }) };
|
|
366
|
+
} catch (error) { return mcpError(`worker-resolve: ${error.message}`); }
|
|
367
|
+
});
|
|
368
|
+
}
|
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
import { z } from 'zod';
|
|
18
18
|
import { runAiwgCli, mcpError, mcpJson } from '../helpers.mjs';
|
|
19
19
|
import { registerFlowToolset, registerMissionToolset } from './orchestration.mjs';
|
|
20
|
+
import { registerWorkerInvokeToolset, WORKERS_TOOLSET_NAME } from './worker-invoke.mjs';
|
|
20
21
|
import { registerAgenticSandboxToolset } from './agentic-sandbox.mjs';
|
|
21
22
|
import { registerDecisionToolset } from './decision.mjs';
|
|
22
23
|
|
|
@@ -572,6 +573,9 @@ function registerOpsToolset(server) {
|
|
|
572
573
|
const TOOLSET_REGISTRY = {
|
|
573
574
|
flows: registerFlowToolset,
|
|
574
575
|
missions: registerMissionToolset,
|
|
576
|
+
// #2892: bounded direct worker run/status/cancel. Explicit opt-in name
|
|
577
|
+
// ONLY — see WILDCARD_EXCLUDED_TOOLSETS below for why `all` cannot reach it.
|
|
578
|
+
[WORKERS_TOOLSET_NAME]: registerWorkerInvokeToolset,
|
|
575
579
|
memory: (server) => {
|
|
576
580
|
registerStorageSubsystem(server, STORAGE_SUBSYSTEMS.find(s => s.name === 'memory'));
|
|
577
581
|
registerStorageSubsystem(server, STORAGE_SUBSYSTEMS.find(s => s.name === 'reflections'));
|
|
@@ -592,6 +596,14 @@ const TOOLSET_REGISTRY = {
|
|
|
592
596
|
decision: registerDecisionToolset,
|
|
593
597
|
};
|
|
594
598
|
|
|
599
|
+
/**
|
|
600
|
+
* Toolsets that a bare `all` must NOT silently enable. Enabling these
|
|
601
|
+
* requires naming them explicitly in the AIWG_MCP_TOOLSETS list (#2892
|
|
602
|
+
* defect 4: a worker-invoke bridge must not become reachable just because
|
|
603
|
+
* an operator wanted "every read-only discovery toolset" via `all`).
|
|
604
|
+
*/
|
|
605
|
+
const WILDCARD_EXCLUDED_TOOLSETS = new Set([WORKERS_TOOLSET_NAME]);
|
|
606
|
+
|
|
595
607
|
/**
|
|
596
608
|
* Parse AIWG_MCP_TOOLSETS env or `--toolsets` CLI value into a Set.
|
|
597
609
|
*
|
|
@@ -601,18 +613,19 @@ const TOOLSET_REGISTRY = {
|
|
|
601
613
|
* Examples:
|
|
602
614
|
* AIWG_MCP_TOOLSETS=flows,missions,ralph
|
|
603
615
|
* AIWG_MCP_TOOLSETS=core,memory (core is implicit; harmless)
|
|
604
|
-
* AIWG_MCP_TOOLSETS=all (all known toolsets
|
|
616
|
+
* AIWG_MCP_TOOLSETS=all (all known toolsets EXCEPT `workers`,
|
|
617
|
+
* which needs an explicit opt-in)
|
|
618
|
+
* AIWG_MCP_TOOLSETS=all,workers (explicit opt-in on top of `all`)
|
|
605
619
|
*/
|
|
606
620
|
export function parseToolsets(value) {
|
|
607
621
|
if (!value || typeof value !== 'string') return new Set();
|
|
608
622
|
const items = value.split(',').map((s) => s.trim().toLowerCase()).filter(Boolean);
|
|
609
|
-
if (items.includes('all')) {
|
|
610
|
-
return new Set(Object.keys(TOOLSET_REGISTRY));
|
|
611
|
-
}
|
|
612
|
-
const out = new Set();
|
|
613
623
|
const known = new Set(Object.keys(TOOLSET_REGISTRY));
|
|
624
|
+
const out = items.includes('all')
|
|
625
|
+
? new Set([...known].filter((name) => !WILDCARD_EXCLUDED_TOOLSETS.has(name)))
|
|
626
|
+
: new Set();
|
|
614
627
|
for (const item of items) {
|
|
615
|
-
if (item === 'core') continue; // always on
|
|
628
|
+
if (item === 'core' || item === 'all') continue; // 'core' always on; 'all' handled above
|
|
616
629
|
if (!known.has(item)) {
|
|
617
630
|
console.error(`[AIWG MCP] Unknown toolset: "${item}" — known: core, ${[...known].join(', ')}, all`);
|
|
618
631
|
continue;
|
|
@@ -624,16 +637,34 @@ export function parseToolsets(value) {
|
|
|
624
637
|
|
|
625
638
|
/**
|
|
626
639
|
* Register all opt-in toolsets requested via env/flag.
|
|
640
|
+
*
|
|
641
|
+
* `options` is passed through to every registration function; only `workers`
|
|
642
|
+
* (#2892 B1) consumes it (`projectRoot`, pinned at registration — the served
|
|
643
|
+
* root must be resolved by the caller, e.g. `server.mjs`'s `findProjectRoot()`,
|
|
644
|
+
* never defaulted to `process.cwd()` here). Every other registration
|
|
645
|
+
* function in `TOOLSET_REGISTRY` is synchronous and ignores the extra arg.
|
|
646
|
+
*
|
|
647
|
+
* This function is `async` (returns a `Promise`) because `workers`'
|
|
648
|
+
* registration does real async work (realpath the root, resolve the default
|
|
649
|
+
* concurrency cap) before it calls `server.registerTool`. Calling it WITHOUT
|
|
650
|
+
* `await` is still safe for every other toolset: each registration function
|
|
651
|
+
* is invoked synchronously inside the loop below, so a purely-synchronous
|
|
652
|
+
* toolset's `server.registerTool` calls complete before this function's
|
|
653
|
+
* first (and only) `await` is ever reached — only `workers`'s own Promise is
|
|
654
|
+
* deferred into `pending`, and only an `await`ing caller needs to wait on it.
|
|
627
655
|
*/
|
|
628
|
-
export function registerOptInToolsets(server, toolsets) {
|
|
656
|
+
export async function registerOptInToolsets(server, toolsets, options = {}) {
|
|
629
657
|
const enabled = [];
|
|
658
|
+
const pending = [];
|
|
630
659
|
for (const name of toolsets) {
|
|
631
660
|
const fn = TOOLSET_REGISTRY[name];
|
|
632
661
|
if (fn) {
|
|
633
|
-
fn(server);
|
|
662
|
+
const result = fn(server, options);
|
|
663
|
+
if (result && typeof result.then === 'function') pending.push(result);
|
|
634
664
|
enabled.push(name);
|
|
635
665
|
}
|
|
636
666
|
}
|
|
667
|
+
if (pending.length > 0) await Promise.all(pending);
|
|
637
668
|
if (enabled.length > 0) {
|
|
638
669
|
console.error(`[AIWG MCP] Opt-in toolsets enabled: ${enabled.join(', ')}`);
|
|
639
670
|
} else {
|