@aiwg/cli 2026.10.4 → 2026.10.6

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.
Files changed (220) hide show
  1. package/agentic/code/addons/composition-engine/lib/runtime.mjs +1401 -0
  2. package/agentic/code/addons/composition-engine/lib/validator.mjs +513 -0
  3. package/agentic/code/addons/composition-engine/schemas/flow-graph.schema.json +372 -0
  4. package/agentic/code/providers/model-capabilities.v1.json +74 -50
  5. package/bin/aiwg.mjs +3 -1
  6. package/dist/src/artifacts/browser-export.js +1 -0
  7. package/dist/src/artifacts/citation-parser.js +8 -1
  8. package/dist/src/artifacts/cli.js +72 -9
  9. package/dist/src/artifacts/fortemi-core-query-adapter.js +2 -0
  10. package/dist/src/artifacts/fortemi-core-sync.js +26 -8
  11. package/dist/src/artifacts/graph-query.js +18 -8
  12. package/dist/src/artifacts/index-adapters.js +339 -0
  13. package/dist/src/artifacts/index-builder.js +146 -16
  14. package/dist/src/artifacts/index-files.js +15 -4
  15. package/dist/src/artifacts/index-preparation.js +91 -26
  16. package/dist/src/artifacts/index-reader.js +44 -0
  17. package/dist/src/artifacts/index-refresh.js +130 -56
  18. package/dist/src/artifacts/index-status.js +20 -5
  19. package/dist/src/artifacts/index-worker.mjs +9 -7
  20. package/dist/src/artifacts/memory-maintenance.js +503 -0
  21. package/dist/src/artifacts/prebuilt-relations.js +3 -1
  22. package/dist/src/artifacts/query-engine.js +263 -108
  23. package/dist/src/artifacts/relations-builder.js +2 -2
  24. package/dist/src/artifacts/source-graph.js +2 -2
  25. package/dist/src/artifacts/types.js +9 -1
  26. package/dist/src/cli/handlers/decision.js +19 -1
  27. package/dist/src/cli/handlers/guided-setup.js +470 -0
  28. package/dist/src/cli/handlers/help.js +2 -2
  29. package/dist/src/cli/handlers/housekeeper.js +1110 -0
  30. package/dist/src/cli/handlers/index.js +4 -2
  31. package/dist/src/cli/handlers/init.js +41 -6
  32. package/dist/src/cli/handlers/local-executor.js +5 -3
  33. package/dist/src/cli/handlers/mc.js +509 -53
  34. package/dist/src/cli/handlers/models.js +32 -2
  35. package/dist/src/cli/handlers/ralph-launcher.js +76 -4
  36. package/dist/src/cli/handlers/rules.js +1 -1
  37. package/dist/src/cli/handlers/script-runner.js +73 -2
  38. package/dist/src/cli/handlers/serve.js +5 -3
  39. package/dist/src/cli/handlers/sessions.js +40 -6
  40. package/dist/src/cli/handlers/setup.js +428 -1
  41. package/dist/src/cli/handlers/skill-lint.js +1 -1
  42. package/dist/src/cli/handlers/subcommands.js +118 -8
  43. package/dist/src/cli/handlers/use.js +279 -93
  44. package/dist/src/cli/handlers/workspace.js +3 -1
  45. package/dist/src/cli/prompt-utils.js +8 -0
  46. package/dist/src/cli/router.js +16 -1
  47. package/dist/src/config/aiwg-config.js +42 -0
  48. package/dist/src/config/cli.js +7 -3
  49. package/dist/src/config/decision-config.js +14 -1
  50. package/dist/src/config/native-sandbox-warnings.js +25 -0
  51. package/dist/src/contributors/validation.js +6 -5
  52. package/dist/src/decision/admission.js +7 -3
  53. package/dist/src/decision/benchmark.js +469 -0
  54. package/dist/src/decision/ledger.js +22 -3
  55. package/dist/src/decision/pricing.js +147 -0
  56. package/dist/src/decision/qualification/gate-evidence.js +18 -15
  57. package/dist/src/decision/qualification/load-staged.js +539 -0
  58. package/dist/src/decision/qualification/load.js +109 -33
  59. package/dist/src/decision/qualification/runner.js +5 -2
  60. package/dist/src/decision/review/service.js +6 -4
  61. package/dist/src/decision/review/validate.js +23 -2
  62. package/dist/src/decision/savings.js +8 -3
  63. package/dist/src/discovery/index.js +492 -0
  64. package/dist/src/discovery/interview.js +233 -0
  65. package/dist/src/discovery/plan-apply.js +571 -0
  66. package/dist/src/discovery/plan-store.js +171 -0
  67. package/dist/src/discovery/plan-types.js +2 -0
  68. package/dist/src/discovery/plan-validation.js +139 -0
  69. package/dist/src/discovery/types.js +2 -0
  70. package/dist/src/extensions/commands/definitions.js +49 -9
  71. package/dist/src/extensions/manifest.js +71 -44
  72. package/dist/src/extensions/project-local-discovery.js +1 -1
  73. package/dist/src/extensions/project-quickref.js +18 -17
  74. package/dist/src/extensions/validation.js +32 -29
  75. package/dist/src/housekeeper/daemon-config.js +148 -0
  76. package/dist/src/housekeeper/ipc.js +84 -0
  77. package/dist/src/housekeeper/lifecycle.js +148 -0
  78. package/dist/src/housekeeper/platform.js +35 -0
  79. package/dist/src/housekeeper/status.js +70 -0
  80. package/dist/src/housekeeper/units.js +114 -0
  81. package/dist/src/jobs/flow.js +22 -21
  82. package/dist/src/lint/rule-activation.js +20 -5
  83. package/dist/src/lint/runner.js +1 -1
  84. package/dist/src/mcp/cli.mjs +5 -6
  85. package/dist/src/mcp/config-file.mjs +6 -2
  86. package/dist/src/mcp/config-layers.mjs +23 -7
  87. package/dist/src/mcp/profiles.js +18 -31
  88. package/dist/src/mcp/profiles.mjs +18 -32
  89. package/dist/src/mcp/registry.js +7 -27
  90. package/dist/src/mcp/registry.mjs +7 -28
  91. package/dist/src/mcp/server.mjs +34 -1
  92. package/dist/src/mcp/tools/agentic-sandbox.mjs +8 -7
  93. package/dist/src/mcp/tools/command-run.mjs +3 -2
  94. package/dist/src/mcp/tools/decision.mjs +49 -48
  95. package/dist/src/mcp/tools/discovery.mjs +46 -21
  96. package/dist/src/mcp/tools/orchestration.mjs +22 -22
  97. package/dist/src/mcp/tools/subsystems.mjs +9 -8
  98. package/dist/src/mcp/tools/worker-invoke.mjs +17 -4
  99. package/dist/src/mcp/tools/writer-profiles.mjs +1 -1
  100. package/dist/src/memory/audit.js +719 -0
  101. package/dist/src/memory/canonical-context.js +392 -13
  102. package/dist/src/memory/canonical-maintenance.js +95 -0
  103. package/dist/src/memory/cli-result.js +22 -0
  104. package/dist/src/memory/cli.js +176 -0
  105. package/dist/src/memory/context-pack.js +57 -6
  106. package/dist/src/memory/cost.js +512 -0
  107. package/dist/src/memory/firewall-classification.d.mts +7 -0
  108. package/dist/src/memory/firewall-classification.mjs +32 -0
  109. package/dist/src/memory/index.js +8 -0
  110. package/dist/src/memory/line-maintenance.js +68 -0
  111. package/dist/src/memory/maintenance-cli.js +286 -0
  112. package/dist/src/memory/maintenance-contract.js +136 -0
  113. package/dist/src/memory/maintenance-index.js +18 -0
  114. package/dist/src/memory/maintenance-owner.js +2 -0
  115. package/dist/src/memory/maintenance-record.js +138 -0
  116. package/dist/src/memory/maintenance.js +254 -0
  117. package/dist/src/memory/provider-memory-adapter.js +154 -0
  118. package/dist/src/memory/recommend-cli.js +83 -0
  119. package/dist/src/memory/recommend.js +269 -0
  120. package/dist/src/memory/scheduled.js +81 -0
  121. package/dist/src/memory/taxonomy.js +44 -0
  122. package/dist/src/mission-protocol/codecs.js +19 -9
  123. package/dist/src/models/config-loader.js +11 -1
  124. package/dist/src/models/model-capabilities.v1.json +74 -50
  125. package/dist/src/models/provider-policy.js +125 -62
  126. package/dist/src/models/resolver.js +45 -8
  127. package/dist/src/models/worker-installation.d.mts +7 -0
  128. package/dist/src/models/worker-installation.mjs +169 -37
  129. package/dist/src/models/wrapper-route.js +1 -1
  130. package/dist/src/output-modes/registry.js +8 -7
  131. package/dist/src/plugin/metadata-validator.js +1 -1
  132. package/dist/src/providers/deploy-version.d.mts +1 -0
  133. package/dist/src/providers/deploy-version.mjs +17 -0
  134. package/dist/src/providers/provider-definitions.js +19 -16
  135. package/dist/src/providers/skill-ownership.d.mts +11 -2
  136. package/dist/src/providers/skill-ownership.mjs +35 -17
  137. package/dist/src/rules/activation.d.mts +11 -2
  138. package/dist/src/rules/activation.mjs +82 -6
  139. package/dist/src/rules/inventory.js +1 -1
  140. package/dist/src/rules/rule-frontmatter.schema.json +2 -0
  141. package/dist/src/schema/zod-validation.d.mts +6 -0
  142. package/dist/src/schema/zod-validation.mjs +50 -0
  143. package/dist/src/serve/executor-registry.js +297 -20
  144. package/dist/src/serve/executor-token.d.mts +1 -0
  145. package/dist/src/serve/executor-token.mjs +8 -0
  146. package/dist/src/serve/shared-host-scheduler.js +1102 -31
  147. package/dist/src/serve/worker-invocation.js +114 -15
  148. package/dist/src/sessions/adapters/claude.js +19 -18
  149. package/dist/src/sessions/adapters/codex.js +33 -19
  150. package/dist/src/sessions/adapters/copilot.js +14 -13
  151. package/dist/src/sessions/adapters/cursor.js +19 -18
  152. package/dist/src/sessions/adapters/deepseek-harness.js +9 -8
  153. package/dist/src/sessions/adapters/factory.js +11 -10
  154. package/dist/src/sessions/adapters/generic.js +32 -23
  155. package/dist/src/sessions/adapters/grokbot.js +35 -35
  156. package/dist/src/sessions/adapters/hermes.js +20 -19
  157. package/dist/src/sessions/adapters/muse.js +50 -49
  158. package/dist/src/sessions/adapters/omp.js +5 -4
  159. package/dist/src/sessions/adapters/openclaw.js +30 -29
  160. package/dist/src/sessions/adapters/opencode.js +26 -26
  161. package/dist/src/sessions/adapters/openhuman.js +24 -23
  162. package/dist/src/sessions/adapters/pi.js +5 -4
  163. package/dist/src/sessions/adapters/windsurf.js +8 -8
  164. package/dist/src/sessions/analytics.js +10 -9
  165. package/dist/src/sessions/batch-contracts.js +1 -1
  166. package/dist/src/sessions/batch-import.js +202 -2
  167. package/dist/src/sessions/candidates.js +7 -6
  168. package/dist/src/sessions/contracts.js +73 -54
  169. package/dist/src/sessions/coverage-preflight.js +26 -1
  170. package/dist/src/sessions/output-registration.js +11 -10
  171. package/dist/src/sessions/policy.js +18 -7
  172. package/dist/src/sessions/refresh.js +2 -3
  173. package/dist/src/sessions/repository.js +4 -2
  174. package/dist/src/sessions/workspace-discovery.js +92 -26
  175. package/dist/src/smiths/context-pipeline/aiwg-md.js +18 -1
  176. package/dist/src/smiths/context-pipeline/claude-hook.js +42 -6
  177. package/dist/src/smiths/context-pipeline/parallelism-section.js +72 -5
  178. package/dist/src/smiths/context-pipeline/workspace-context.js +106 -10
  179. package/dist/src/update/checker.d.mts +4 -0
  180. package/dist/src/update/checker.mjs +14 -0
  181. package/dist/src/writing/exemplar-selection.js +6 -6
  182. package/dist/src/writing/voice-evaluation.js +24 -23
  183. package/dist/src/writing/writer-migration.js +14 -13
  184. package/dist/src/writing/writer-profile.js +19 -18
  185. package/dist/src/writing/writing-brief.js +18 -17
  186. package/dist/src/writing/writing-receipt.js +47 -46
  187. package/package.json +5 -2
  188. package/schemas/decision/DecisionReview.schema.json +78 -1
  189. package/schemas/mission-v1.schema.json +3 -0
  190. package/tools/agents/deploy-agents.mjs +67 -39
  191. package/tools/agents/providers/antigravity.mjs +6 -1
  192. package/tools/agents/providers/base.mjs +19 -13
  193. package/tools/agents/providers/claude.mjs +1 -1
  194. package/tools/agents/providers/codex.mjs +50 -56
  195. package/tools/agents/providers/copilot.mjs +8 -2
  196. package/tools/agents/providers/cursor.mjs +1 -1
  197. package/tools/agents/providers/deepseek-harness.mjs +1 -1
  198. package/tools/agents/providers/factory.mjs +7 -1
  199. package/tools/agents/providers/grok-build.mjs +18 -2
  200. package/tools/agents/providers/grokbot.mjs +1 -1
  201. package/tools/agents/providers/hermes.mjs +7 -13
  202. package/tools/agents/providers/muse-hooks.mjs +21 -14
  203. package/tools/agents/providers/muse.mjs +7 -2
  204. package/tools/agents/providers/omp.mjs +28 -4
  205. package/tools/agents/providers/opencode.mjs +14 -5
  206. package/tools/agents/providers/openhuman.mjs +1 -1
  207. package/tools/agents/providers/pi.mjs +1 -1
  208. package/tools/agents/providers/provider-prepare-coordinator.mjs +29 -9
  209. package/tools/agents/providers/rule-delivery.mjs +263 -71
  210. package/tools/agents/providers/windsurf.mjs +7 -0
  211. package/tools/cli/workspace-status.mjs +5 -0
  212. package/tools/commands/deploy-prompts-codex.mjs +11 -8
  213. package/tools/ralph-external/lib/codex-adapter.mjs +6 -2
  214. package/tools/ralph-external/lib/muse-adapter.mjs +12 -2
  215. package/tools/ralph-external/lib/worker-health.mjs +1 -1
  216. package/tools/ralph-external/lib/worker-isolation.mjs +65 -9
  217. package/tools/ralph-external/process-monitor.mjs +7 -4
  218. package/tools/ralph-external/session-launcher.mjs +280 -32
  219. package/tools/skills/deploy-skills-codex.mjs +11 -7
  220. package/vscode-extension/schemas/aiwg.config.v1.json +11 -1
@@ -53,7 +53,8 @@
53
53
  "cwd": "${workspace}",
54
54
  "envAllowlist": [
55
55
  "GEMINI_API_KEY",
56
- "HOME"
56
+ "HOME",
57
+ "PATH"
57
58
  ],
58
59
  "versionArgv": [
59
60
  "--version"
@@ -144,7 +145,8 @@
144
145
  },
145
146
  "envAllowlist": [
146
147
  "GEMINI_API_KEY",
147
- "HOME"
148
+ "HOME",
149
+ "PATH"
148
150
  ],
149
151
  "pitfalls": [
150
152
  "Documentation/help and synthetic observations are not authenticated live qualification.",
@@ -516,7 +518,8 @@
516
518
  "cwd": "${workspace}",
517
519
  "envAllowlist": [
518
520
  "CODEX_HOME",
519
- "HOME"
521
+ "HOME",
522
+ "PATH"
520
523
  ],
521
524
  "versionPattern": "^codex-cli ([0-9A-Za-z.+-]{1,128})$",
522
525
  "versionArgv": [
@@ -608,7 +611,8 @@
608
611
  },
609
612
  "envAllowlist": [
610
613
  "CODEX_HOME",
611
- "HOME"
614
+ "HOME",
615
+ "PATH"
612
616
  ],
613
617
  "pitfalls": [
614
618
  "Documentation/help and synthetic observations are not authenticated live qualification.",
@@ -721,7 +725,7 @@
721
725
  ],
722
726
  "stdin": "closed",
723
727
  "cwd": "${workspace}",
724
- "envAllowlist": [],
728
+ "envAllowlist": ["PATH"],
725
729
  "versionArgv": [
726
730
  "--version"
727
731
  ],
@@ -809,7 +813,7 @@
809
813
  "evidence": "H: copilot 1.0.95 --help / `copilot help <topic>`, captured 2026-10-10 (.aiwg/working/s1-scratch/cli-help/copilot-1.0.95.txt; never live qualification) ('--auto-tier <preference> Set the Auto routing profile')"
810
814
  }
811
815
  },
812
- "envAllowlist": [],
816
+ "envAllowlist": ["PATH"],
813
817
  "pitfalls": [
814
818
  "Documentation/help and synthetic observations are not authenticated live qualification.",
815
819
  "Unknown model, effort, permission or required step mappings block dispatch.",
@@ -904,7 +908,8 @@
904
908
  "cwd": "${workspace}",
905
909
  "envAllowlist": [
906
910
  "CURSOR_API_KEY",
907
- "HOME"
911
+ "HOME",
912
+ "PATH"
908
913
  ],
909
914
  "versionPattern": "^([0-9A-Za-z.+-]{1,128})$",
910
915
  "versionArgv": [
@@ -996,7 +1001,8 @@
996
1001
  },
997
1002
  "envAllowlist": [
998
1003
  "CURSOR_API_KEY",
999
- "HOME"
1004
+ "HOME",
1005
+ "PATH"
1000
1006
  ],
1001
1007
  "pitfalls": [
1002
1008
  "Documentation/help and synthetic observations are not authenticated live qualification.",
@@ -1110,7 +1116,7 @@
1110
1116
  ],
1111
1117
  "stdin": "brief-text",
1112
1118
  "cwd": "${workspace}",
1113
- "envAllowlist": ["FACTORY_API_KEY", "HOME"],
1119
+ "envAllowlist": ["FACTORY_API_KEY", "HOME", "PATH"],
1114
1120
  "versionArgv": [
1115
1121
  "--version"
1116
1122
  ],
@@ -1198,7 +1204,7 @@
1198
1204
  "evidence": "H: droid-cli 0.238.0 exec --help scopes --spec-model/--worker-model/--validator-model to --mission/--use-spec; unknown controls block tasks requiring them"
1199
1205
  }
1200
1206
  },
1201
- "envAllowlist": ["FACTORY_API_KEY", "HOME"],
1207
+ "envAllowlist": ["FACTORY_API_KEY", "HOME", "PATH"],
1202
1208
  "pitfalls": [
1203
1209
  "Documentation/help and synthetic observations are not authenticated live qualification.",
1204
1210
  "Unknown model, effort, permission or required step mappings block dispatch.",
@@ -1314,7 +1320,7 @@
1314
1320
  ],
1315
1321
  "stdin": "closed",
1316
1322
  "cwd": "${workspace}",
1317
- "envAllowlist": [],
1323
+ "envAllowlist": ["PATH"],
1318
1324
  "versionArgv": [
1319
1325
  "--version"
1320
1326
  ],
@@ -1402,7 +1408,7 @@
1402
1408
  "evidence": "H: opencode 2.0.26 `opencode run --help`"
1403
1409
  }
1404
1410
  },
1405
- "envAllowlist": [],
1411
+ "envAllowlist": ["PATH"],
1406
1412
  "pitfalls": [
1407
1413
  "Stdin is confirmed unsupported (conductor disassembly of the installed opencode 2.0.26 binary: no stdin/isTTY handling in the compiled 'run' chunk, host 'noodle', 2026-10-09). The brief travels as an attached file via -f/--file; the positional argv message is a fixed, content-free instruction and never carries brief text.",
1408
1414
  "There is no positive session-terminal JSON event in any compatibility mode: binary disassembly shows the run loop returns silently on session.execution.succeeded. A live 2.0.26 smoke run (one complete `text` event, nothing else) confirms this is a genuine success shape, not truncation; parseOutput accepts a complete text part OR a step_finish reason \"stop\" as the positive signal, never exit code alone.",
@@ -1501,7 +1507,8 @@
1501
1507
  "stdin": "closed",
1502
1508
  "cwd": "${workspace}",
1503
1509
  "envAllowlist": [
1504
- "WARP_API_KEY"
1510
+ "WARP_API_KEY",
1511
+ "PATH"
1505
1512
  ],
1506
1513
  "versionArgv": [
1507
1514
  "--version"
@@ -1591,7 +1598,8 @@
1591
1598
  }
1592
1599
  },
1593
1600
  "envAllowlist": [
1594
- "WARP_API_KEY"
1601
+ "WARP_API_KEY",
1602
+ "PATH"
1595
1603
  ],
1596
1604
  "pitfalls": [
1597
1605
  "Documentation/help and synthetic observations are not authenticated live qualification; the host used for probes (noodle) has no `warp-terminal login`/`WARP_API_KEY`, so every probe stopped at the auth check and never reached a model.",
@@ -1716,7 +1724,7 @@
1716
1724
  ],
1717
1725
  "stdin": "brief-text",
1718
1726
  "cwd": "${workspace}",
1719
- "envAllowlist": [],
1727
+ "envAllowlist": ["PATH"],
1720
1728
  "versionArgv": [
1721
1729
  "--version"
1722
1730
  ],
@@ -1804,7 +1812,7 @@
1804
1812
  "evidence": "H: omp/18.8.7 --help (noodle, 2026-10-10) documents a single --model flag with no fallback list"
1805
1813
  }
1806
1814
  },
1807
- "envAllowlist": [],
1815
+ "envAllowlist": ["PATH"],
1808
1816
  "pitfalls": [
1809
1817
  "--approval-mode is never omitted: the installed binary's compiled-in default is yolo (a full bypass), so an omitted flag is the most dangerous outcome, not a safe one.",
1810
1818
  "--approval-mode is fixed to write; always-ask (prompts for write AND exec) and yolo (bypasses everything) are never rendered. write only auto-approves read/write-tier tools; an exec-tier tool (bash) still resolves to a required-approval decision with no confirmed headless resolution -- an open S1 gap.",
@@ -1928,7 +1936,7 @@
1928
1936
  ],
1929
1937
  "stdin": "brief-text",
1930
1938
  "cwd": "${workspace}",
1931
- "envAllowlist": [],
1939
+ "envAllowlist": ["PATH"],
1932
1940
  "versionArgv": [
1933
1941
  "--version"
1934
1942
  ],
@@ -2016,7 +2024,7 @@
2016
2024
  "evidence": "H: pi 1.1.0 --help (titan, 2026-10-09) documents a single --model flag with no fallback list"
2017
2025
  }
2018
2026
  },
2019
- "envAllowlist": [],
2027
+ "envAllowlist": ["PATH"],
2020
2028
  "pitfalls": [
2021
2029
  "--no-approve alone does not stop context loading: ancestor AGENTS.md/CLAUDE.md load independently of trust unless --no-context-files is also set (R: installed bundle chunk-OIM2DMFI.js). --no-context-files, --no-extensions, --no-skills and --no-mcp (1.1.0 adds built-in MCP support, on by default) are always rendered alongside it.",
2022
2030
  "--approve is never rendered, which would trust arbitrary project-local extension/config files.",
@@ -2124,7 +2132,8 @@
2124
2132
  "stdin": "brief-text",
2125
2133
  "cwd": "${workspace}",
2126
2134
  "envAllowlist": [
2127
- "DEEPSEEK_API_KEY"
2135
+ "DEEPSEEK_API_KEY",
2136
+ "PATH"
2128
2137
  ],
2129
2138
  "versionArgv": [
2130
2139
  "--version"
@@ -2214,7 +2223,8 @@
2214
2223
  }
2215
2224
  },
2216
2225
  "envAllowlist": [
2217
- "DEEPSEEK_API_KEY"
2226
+ "DEEPSEEK_API_KEY",
2227
+ "PATH"
2218
2228
  ],
2219
2229
  "pitfalls": [
2220
2230
  "buildWorkerArgs emits ${artifact:dsh-patch}; buildWorkerArtifacts declares the pure overlay. The launcher owns exclusive/no-follow private file creation and cleanup. Controls remain unqualified pending an authenticated run.",
@@ -2346,7 +2356,8 @@
2346
2356
  "stdin": "closed",
2347
2357
  "cwd": "${workspace}",
2348
2358
  "envAllowlist": [
2349
- "OPENROUTER_API_KEY"
2359
+ "OPENROUTER_API_KEY",
2360
+ "PATH"
2350
2361
  ],
2351
2362
  "versionArgv": [
2352
2363
  "--version"
@@ -2436,7 +2447,8 @@
2436
2447
  }
2437
2448
  },
2438
2449
  "envAllowlist": [
2439
- "OPENROUTER_API_KEY"
2450
+ "OPENROUTER_API_KEY",
2451
+ "PATH"
2440
2452
  ],
2441
2453
  "pitfalls": [
2442
2454
  "Documentation/help and synthetic observations are not authenticated live qualification.",
@@ -2574,7 +2586,8 @@
2574
2586
  "cwd": "${workspace}",
2575
2587
  "envAllowlist": [
2576
2588
  "XAI_API_KEY",
2577
- "HOME"
2589
+ "HOME",
2590
+ "PATH"
2578
2591
  ],
2579
2592
  "versionArgv": [
2580
2593
  "--version"
@@ -2666,7 +2679,8 @@
2666
2679
  },
2667
2680
  "envAllowlist": [
2668
2681
  "XAI_API_KEY",
2669
- "HOME"
2682
+ "HOME",
2683
+ "PATH"
2670
2684
  ],
2671
2685
  "pitfalls": [
2672
2686
  "Documentation/help and synthetic observations are not authenticated live qualification.",
@@ -2767,7 +2781,7 @@
2767
2781
  ],
2768
2782
  "stdin": "brief-text",
2769
2783
  "cwd": "${workspace}",
2770
- "envAllowlist": [],
2784
+ "envAllowlist": ["PATH"],
2771
2785
  "versionPattern": "^Hermes Agent v([0-9A-Za-z.+-]{1,128}) [^\\r\\n]{1,128}$",
2772
2786
  "versionArgv": [
2773
2787
  "--version"
@@ -2812,7 +2826,7 @@
2812
2826
  },
2813
2827
  "approval": {
2814
2828
  "support": "unqualified",
2815
- "mapping": "--ignore-user-config always emitted: falls back to the safe built-in defaults (approvals.mode: \"smart\", approvals.single_query_mode: \"deny\"; config_defaults.py:1679,1682) regardless of the host's config.yaml, defeating single_query_mode: approve/off/allow/yes (approval_context.py:298-304,313-315) and approvals.mode: off (approval.py:967). HERMES_YOLO_MODE is a process env var frozen at import (approval.py:46); defeated structurally by the empty envAllowlist and env -i renderer, not by a flag, and proven by an explicit assertion (HD10). Re-verified against hermes 0.21.6 (~/.hermes/hermes-agent): same semantics, refactored into tools/approval_context.py's _binary_approval_mode helper.",
2829
+ "mapping": "--ignore-user-config always emitted: falls back to the safe built-in defaults (approvals.mode: \"smart\", approvals.single_query_mode: \"deny\"; config_defaults.py:1679,1682) regardless of the host's config.yaml, defeating single_query_mode: approve/off/allow/yes (approval_context.py:298-304,313-315) and approvals.mode: off (approval.py:967). HERMES_YOLO_MODE is a process env var frozen at import (approval.py:46); defeated structurally by the PATH-only envAllowlist and env -i renderer, not by a flag, and proven by an explicit assertion (HD10). Re-verified against hermes 0.21.6 (~/.hermes/hermes-agent): same semantics, refactored into tools/approval_context.py's _binary_approval_mode helper.",
2816
2830
  "evidence": "D: hermes 0.21.6 installed source (~/.hermes/hermes-agent: tools/approval.py:46,967; tools/approval_context.py:298-304,313-315; hermes_cli/config_defaults.py:1679,1682); never live-qualified"
2817
2831
  },
2818
2832
  "workdir": {
@@ -2852,21 +2866,21 @@
2852
2866
  },
2853
2867
  "fallback": {
2854
2868
  "support": "unqualified",
2855
- "mapping": "--provider PROVIDER pins the inference provider for this call; always emitted by this profile (never omitted) because --ignore-user-config removes the config.yaml provider fallback and the empty envAllowlist removes the HERMES_INFERENCE_PROVIDER fallback, so an omitted --provider resolves to the literal \"auto\" (resolve_requested_provider, runtime_provider.py:490-499) and silently picks whatever ambient credential Hermes finds; hermes fallback/moa subcommands configure persistent chains, not a per-call override",
2869
+ "mapping": "--provider PROVIDER pins the inference provider for this call; always emitted by this profile (never omitted) because --ignore-user-config removes the config.yaml provider fallback and the PATH-only envAllowlist removes the HERMES_INFERENCE_PROVIDER fallback, so an omitted --provider resolves to the literal \"auto\" (resolve_requested_provider, runtime_provider.py:490-499) and silently picks whatever ambient credential Hermes finds; hermes fallback/moa subcommands configure persistent chains, not a per-call override",
2856
2870
  "evidence": "H: hermes 0.21.6+387.gdce1e9b `hermes chat --help` (installed per-user, ~/.hermes/hermes-agent, titan, 2026-10-10 observation); confirmed by TWO live conductor smoke runs: 0.20.6 on 2026-10-09 (omitted --provider failed with \"No inference provider configured\" under --ignore-user-config) and 0.21.6 on 2026-10-10 (`--provider openrouter -m anthropic/claude-sonnet-4.6 --reasoning low` exited 0 with the exact instructed stdout) — still unqualified pending a repeatable, authorized live-qualification pass"
2857
2871
  }
2858
2872
  },
2859
- "envAllowlist": [],
2873
+ "envAllowlist": ["PATH"],
2860
2874
  "pitfalls": [
2861
2875
  "Documentation/help and installed-source reading are not authenticated live qualification.",
2862
2876
  "This profile deliberately does NOT use the top-level -z/--oneshot PROMPT path: that dest is argv-only (no stdin/file option) and oneshot.py unconditionally sets HERMES_YOLO_MODE=1 with no override, and its exit code can be 0 even when its own usage-file failed flag is true.",
2863
2877
  "Exit code 0 alone is still not treated as completion evidence by this profile, even though hermes 0.21.6 fixed the specific 0.20.6 bug this guarded against: on 0.20.6, reasoning-budget exhaustion (then agent/conversation_loop.py:3902) returned completed:false/partial:true with no \"failed\" key and still exited 0; on 0.21.6 the same case (now agent/turn_truncation.py:95-180's partial_result()) correctly exits 1 via _single_query_exit_code (cli_single_query.py:152-194). parseWorkerFinal keeps requiring a strict workerClaims JSON parse in addition to the exit-derived status, now as defense in depth against a completed turn whose model output simply isn't valid JSON.",
2864
2878
  "Approval policy is host config (approvals.mode, approvals.single_query_mode in config.yaml), not an argv flag; --ignore-user-config pins it to the safe built-in defaults, but this is read from source, not live-qualified, so the approval control stays unqualified.",
2865
- "HERMES_YOLO_MODE (and any HERMES_* override) must never reach the worker process; this relies on the empty envAllowlist and the renderer's env -i, not on a CLI flag.",
2879
+ "HERMES_YOLO_MODE (and any HERMES_* override) must never reach the worker process; this relies on the PATH-only envAllowlist and the renderer's env -i, not on a CLI flag.",
2866
2880
  "chat --query-file - --oneshot --quiet has no --usage-file/JSON-report equivalent; final-output extraction is stdout-text-on-exit-0 PLUS a strict workerClaims parse, never exit code or stdout non-emptiness alone.",
2867
2881
  "A partial response can still print to stdout before a failed turn; only the exit code (not stdout non-emptiness) distinguishes that case from success, and even exit 0 is not sufficient (see above).",
2868
2882
  "Native MCP/client, MSP/ACP, gateway and conversation capabilities do not establish worker authority.",
2869
- "--provider defaults to \"auto\" (hermes_cli/runtime_provider.py:490-499) when omitted; under --ignore-user-config and the empty envAllowlist both of its fallbacks (config.yaml model.provider, HERMES_INFERENCE_PROVIDER) are unreachable, so this profile always emits an explicit --provider from the resolved selection and refuses a missing value or the literal \"auto\". Confirmed by live smoke runs on both 0.20.6 (failure) and 0.21.6 (success with --provider openrouter).",
2883
+ "--provider defaults to \"auto\" (hermes_cli/runtime_provider.py:490-499) when omitted; under --ignore-user-config and the PATH-only envAllowlist both of its fallbacks (config.yaml model.provider, HERMES_INFERENCE_PROVIDER) are unreachable, so this profile always emits an explicit --provider from the resolved selection and refuses a missing value or the literal \"auto\". Confirmed by live smoke runs on both 0.20.6 (failure) and 0.21.6 (success with --provider openrouter).",
2870
2884
  "On hermes 0.20.6, --quiet --oneshot could still print a startup diagnostic to stdout before the final response (that build's _ensure_tirith_security, the tirith-scanner-unavailable warning). On hermes 0.21.6 the tirith scanner was removed entirely (hermes_cli/config_migrations.py:686-702, \"the bundled tirith scanner left Hermes\") and a 2026-10-10 conductor smoke run on 0.21.6 confirmed the line no longer appears; a broader source grep across ~/.hermes/hermes-agent found no other bare-\"⚠\" _cprint site reachable from this profile's --quiet dispatch. parseWorkerFinal still strips that exact leading diagnostic shape as defensive, forward-compatible tolerance (harmless no-op on 0.21.6), and still fails on unrecognized preamble or a diagnostic appearing after the real final."
2871
2885
  ],
2872
2886
  "health": {
@@ -2949,7 +2963,7 @@
2949
2963
  ],
2950
2964
  "stdin": "brief-json",
2951
2965
  "cwd": "${workspace}",
2952
- "envAllowlist": [],
2966
+ "envAllowlist": ["PATH"],
2953
2967
  "versionArgv": [
2954
2968
  "--help"
2955
2969
  ],
@@ -3037,7 +3051,7 @@
3037
3051
  "evidence": "D: openhuman-core 0.64.14 source @216ea32; live qualification required"
3038
3052
  }
3039
3053
  },
3040
- "envAllowlist": [],
3054
+ "envAllowlist": ["PATH"],
3041
3055
  "pitfalls": [
3042
3056
  "Documentation/help and synthetic observations are not authenticated live qualification.",
3043
3057
  "Unknown model, effort, permission or required step mappings block dispatch.",
@@ -3120,7 +3134,7 @@
3120
3134
  "provider": "muse",
3121
3135
  "adapterVersion": "1",
3122
3136
  "supportedVersions": ">=1.4.4-R5419.1 <2.0.0",
3123
- "runtimeDriver": "tools/ralph-external/lib/muse-adapter.mjs",
3137
+ "runtimeDriver": "installed:muse",
3124
3138
  "catalogAdapter": {
3125
3139
  "kind": "file",
3126
3140
  "locator": "agentic/code/providers/model-catalog.v1.json",
@@ -3153,7 +3167,10 @@
3153
3167
  ],
3154
3168
  "stdin": "closed",
3155
3169
  "cwd": "${workspace}",
3156
- "envAllowlist": [],
3170
+ "envAllowlist": [
3171
+ "HOME",
3172
+ "PATH"
3173
+ ],
3157
3174
  "versionPattern": "^Muse Code ([0-9A-Za-z.+-]{1,128}) \\([0-9A-Za-z.+-]{1,128}\\)$",
3158
3175
  "versionArgv": [
3159
3176
  "--version"
@@ -3161,13 +3178,14 @@
3161
3178
  "maxOutputBytes": 10485760
3162
3179
  },
3163
3180
  "capabilities": {
3164
- "output": "native-schema",
3181
+ "output": "text",
3165
3182
  "modelPin": "requested",
3166
3183
  "effort": "explicit",
3167
3184
  "cancel": "none",
3168
3185
  "resume": false,
3169
3186
  "sandboxModes": [
3170
- "external"
3187
+ "read-only",
3188
+ "workspace-write"
3171
3189
  ],
3172
3190
  "nestedAgentsControllable": false,
3173
3191
  "nativeFallbackControllable": false,
@@ -3184,52 +3202,52 @@
3184
3202
  "model": {
3185
3203
  "support": "unqualified",
3186
3204
  "mapping": "--model",
3187
- "evidence": "H/R: Muse Code 1.4.4-R5419.1 help (2026-10-09) and muse-direct synthetic fixtures; needs authorized version/account qualification"
3205
+ "evidence": "Installed muse exec --help (Muse Code 1.4.12, 2026-10-23); bounded renderer checked on operator qualification; no backend attestation."
3188
3206
  },
3189
3207
  "effort": {
3190
3208
  "support": "unqualified",
3191
3209
  "mapping": "--reasoning-effort",
3192
- "evidence": "H/R: Muse Code 1.4.4-R5419.1 help (2026-10-09) and muse-direct synthetic fixtures; needs authorized version/account qualification"
3210
+ "evidence": "Installed muse exec --help (Muse Code 1.4.12, 2026-10-23); bounded renderer checked on operator qualification; no backend attestation."
3193
3211
  },
3194
3212
  "sandbox": {
3195
3213
  "support": "unqualified",
3196
- "mapping": "qualified external boundary; native sandbox remains enabled",
3197
- "evidence": "H/R: Muse Code 1.4.4-R5419.1 help (2026-10-09) and muse-direct synthetic fixtures; needs authorized version/account qualification"
3214
+ "mapping": "native sandbox enabled; read-only adds --disable-write and --disable-shell",
3215
+ "evidence": "Installed muse exec --help (Muse Code 1.4.12, 2026-10-23); bounded renderer checked on operator qualification; no backend attestation."
3198
3216
  },
3199
3217
  "approval": {
3200
3218
  "support": "unqualified",
3201
3219
  "mapping": "[\"--approval-mode\",\"never\",\"--approval-judge\",\"off\"]",
3202
- "evidence": "H/R: Muse Code 1.4.4-R5419.1 help (2026-10-09) and muse-direct synthetic fixtures; needs authorized version/account qualification"
3220
+ "evidence": "Installed muse exec --help (Muse Code 1.4.12, 2026-10-23); bounded renderer checked on operator qualification; no backend attestation."
3203
3221
  },
3204
3222
  "workdir": {
3205
3223
  "support": "unqualified",
3206
3224
  "mapping": "--workspace",
3207
- "evidence": "H/R: Muse Code 1.4.4-R5419.1 help (2026-10-09) and muse-direct synthetic fixtures; needs authorized version/account qualification"
3225
+ "evidence": "Installed muse exec --help (Muse Code 1.4.12, 2026-10-23); bounded renderer checked on operator qualification; no backend attestation."
3208
3226
  },
3209
3227
  "finalOutput": {
3210
3228
  "support": "unqualified",
3211
3229
  "mapping": "bounded stdout capture; strict Muse terminal normalization pending shared owner",
3212
- "evidence": "H/R: Muse Code 1.4.4-R5419.1 help (2026-10-09) and muse-direct synthetic fixtures; needs authorized version/account qualification"
3230
+ "evidence": "Installed muse exec --help (Muse Code 1.4.12, 2026-10-23); bounded renderer checked on operator qualification; no backend attestation."
3213
3231
  },
3214
3232
  "stdin": {
3215
3233
  "support": "unqualified",
3216
3234
  "mapping": "closed EOF",
3217
- "evidence": "H/R: Muse Code 1.4.4-R5419.1 help (2026-10-09) and muse-direct synthetic fixtures; needs authorized version/account qualification"
3235
+ "evidence": "Installed muse exec --help (Muse Code 1.4.12, 2026-10-23); bounded renderer checked on operator qualification; no backend attestation."
3218
3236
  },
3219
3237
  "structuredOutput": {
3220
3238
  "support": "unqualified",
3221
- "mapping": "--output-schema",
3222
- "evidence": "H/R: Muse Code 1.4.4-R5419.1 help (2026-10-09) and muse-direct synthetic fixtures; needs authorized version/account qualification"
3239
+ "mapping": "[]",
3240
+ "evidence": "Direct Tier 0 output is text; structured output requires a host-bound schema and separate qualification."
3223
3241
  },
3224
3242
  "stepCap": {
3225
3243
  "support": "unqualified",
3226
3244
  "mapping": "--max-model-steps",
3227
- "evidence": "H/R: Muse Code 1.4.4-R5419.1 help (2026-10-09) and muse-direct synthetic fixtures; needs authorized version/account qualification"
3245
+ "evidence": "Installed muse exec --help (Muse Code 1.4.12, 2026-10-23); bounded renderer checked on operator qualification; no backend attestation."
3228
3246
  },
3229
3247
  "trust": {
3230
3248
  "support": "unqualified",
3231
3249
  "mapping": "[]",
3232
- "evidence": "H/R: Muse Code 1.4.4-R5419.1 help (2026-10-09) and muse-direct synthetic fixtures; needs authorized version/account qualification"
3250
+ "evidence": "Installed muse exec --help (Muse Code 1.4.12, 2026-10-23); bounded renderer checked on operator qualification; no backend attestation."
3233
3251
  },
3234
3252
  "children": {
3235
3253
  "support": "unqualified",
@@ -3242,7 +3260,10 @@
3242
3260
  "evidence": "H/R: Muse Code 1.4.4-R5419.1 help (2026-10-09) and muse-direct synthetic fixtures; needs authorized version/account qualification"
3243
3261
  }
3244
3262
  },
3245
- "envAllowlist": [],
3263
+ "envAllowlist": [
3264
+ "HOME",
3265
+ "PATH"
3266
+ ],
3246
3267
  "pitfalls": [
3247
3268
  "Live qualification is an open S1 blocker; installed help and synthetic/echo mechanics are not paid inference qualification.",
3248
3269
  "Configured-model events provide runtime-configured identity only, never backend attestation.",
@@ -3251,7 +3272,10 @@
3251
3272
  "Host qualification must bind an absolute output-schema mapping and include that schema in runtimeFiles.",
3252
3273
  "Muse JSONL strict normalization needs the shared strict-parser hook; the MCP bridge must consume the selected provider parser. MSP is not MCP.",
3253
3274
  "Semantic step/tool completion grammar and native session-log layout remain unavailable; unrelated logs, deltas and CPU cannot establish progress.",
3254
- "Shared version gate: installation requires the raw trimmed banner Muse Code 1.4.4 (1.4.4-R5419.1), but semver selection requires 1.4.4-R5419.1. No normalization exists; keep unqualified until the shared owner binds raw and normalized versions."
3275
+ "Shared version gate: installation requires the raw trimmed banner Muse Code 1.4.4 (1.4.4-R5419.1), but semver selection requires 1.4.4-R5419.1. No normalization exists; keep unqualified until the shared owner binds raw and normalized versions.",
3276
+ "Operator qualification approves the installed direct renderer, not authenticated inference or backend model identity.",
3277
+ "Workspace trust defaults off. Only never approval is supported. Explicit unsupported controls block dispatch.",
3278
+ "Self-delegation must be explicitly allowed by policy; no native child-denial flag is assumed."
3255
3279
  ],
3256
3280
  "health": {
3257
3281
  "version": 1,