@ashlr/hub 3.2.6 → 3.3.0

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 (195) hide show
  1. package/CHANGELOG.md +290 -0
  2. package/README.md +4 -1
  3. package/dist/build-identity.json +2 -2
  4. package/dist/cli/activation.d.ts +41 -0
  5. package/dist/cli/activation.js +485 -0
  6. package/dist/cli/activation.js.map +1 -0
  7. package/dist/cli/audit.js +18 -0
  8. package/dist/cli/audit.js.map +1 -1
  9. package/dist/cli/backlog.d.ts +0 -5
  10. package/dist/cli/backlog.js +18 -0
  11. package/dist/cli/backlog.js.map +1 -1
  12. package/dist/cli/comms.js +20 -0
  13. package/dist/cli/comms.js.map +1 -1
  14. package/dist/cli/completions.d.ts +6 -1
  15. package/dist/cli/completions.js +37 -11
  16. package/dist/cli/completions.js.map +1 -1
  17. package/dist/cli/conductor-permit.d.ts +1 -0
  18. package/dist/cli/conductor-permit.js +122 -0
  19. package/dist/cli/conductor-permit.js.map +1 -0
  20. package/dist/cli/daemon.js +10 -3
  21. package/dist/cli/daemon.js.map +1 -1
  22. package/dist/cli/demo.d.ts +0 -27
  23. package/dist/cli/demo.js +17 -0
  24. package/dist/cli/demo.js.map +1 -1
  25. package/dist/cli/goals.d.ts +2 -0
  26. package/dist/cli/goals.js +90 -5
  27. package/dist/cli/goals.js.map +1 -1
  28. package/dist/cli/help.js +21 -3
  29. package/dist/cli/help.js.map +1 -1
  30. package/dist/cli/inbox.d.ts +14 -2
  31. package/dist/cli/inbox.js +137 -23
  32. package/dist/cli/inbox.js.map +1 -1
  33. package/dist/cli/index.d.ts +1 -0
  34. package/dist/cli/index.js +16 -0
  35. package/dist/cli/index.js.map +1 -1
  36. package/dist/cli/loop.js +26 -5
  37. package/dist/cli/loop.js.map +1 -1
  38. package/dist/cli/onboard.d.ts +0 -13
  39. package/dist/cli/onboard.js +20 -0
  40. package/dist/cli/onboard.js.map +1 -1
  41. package/dist/cli/resources.js +15 -0
  42. package/dist/cli/resources.js.map +1 -1
  43. package/dist/cli/run.js +1 -1
  44. package/dist/cli/run.js.map +1 -1
  45. package/dist/cli/sandbox.js +43 -0
  46. package/dist/cli/sandbox.js.map +1 -1
  47. package/dist/cli/tui.d.ts +0 -6
  48. package/dist/cli/tui.js +14 -0
  49. package/dist/cli/tui.js.map +1 -1
  50. package/dist/core/comms/elon-dialogue.js +16 -7
  51. package/dist/core/comms/elon-dialogue.js.map +1 -1
  52. package/dist/core/config.js +70 -0
  53. package/dist/core/config.js.map +1 -1
  54. package/dist/core/daemon/activation-permit.d.ts +357 -33
  55. package/dist/core/daemon/activation-permit.js +1585 -183
  56. package/dist/core/daemon/activation-permit.js.map +1 -1
  57. package/dist/core/daemon/goal-conductor-permit-operator.d.ts +75 -0
  58. package/dist/core/daemon/goal-conductor-permit-operator.js +842 -0
  59. package/dist/core/daemon/goal-conductor-permit-operator.js.map +1 -0
  60. package/dist/core/daemon/loop.d.ts +13 -1
  61. package/dist/core/daemon/loop.js +294 -29
  62. package/dist/core/daemon/loop.js.map +1 -1
  63. package/dist/core/daemon/runtime-activation-resident-start-protocol.d.ts +141 -0
  64. package/dist/core/daemon/runtime-activation-resident-start-protocol.js +462 -0
  65. package/dist/core/daemon/runtime-activation-resident-start-protocol.js.map +1 -0
  66. package/dist/core/daemon/runtime-activation-resident-start-runtime.d.ts +27 -0
  67. package/dist/core/daemon/runtime-activation-resident-start-runtime.js +28 -0
  68. package/dist/core/daemon/runtime-activation-resident-start-runtime.js.map +1 -0
  69. package/dist/core/daemon/runtime-activation-stopped-consumer.d.ts +139 -0
  70. package/dist/core/daemon/runtime-activation-stopped-consumer.js +995 -0
  71. package/dist/core/daemon/runtime-activation-stopped-consumer.js.map +1 -0
  72. package/dist/core/daemon/runtime-activation-stopped-runtime.d.ts +36 -0
  73. package/dist/core/daemon/runtime-activation-stopped-runtime.js +134 -0
  74. package/dist/core/daemon/runtime-activation-stopped-runtime.js.map +1 -0
  75. package/dist/core/daemon/runtime-activation-transaction.d.ts +41 -17
  76. package/dist/core/daemon/runtime-activation-transaction.js +80 -11
  77. package/dist/core/daemon/runtime-activation-transaction.js.map +1 -1
  78. package/dist/core/daemon/runtime-release-dependency-inventory.js +1 -0
  79. package/dist/core/daemon/runtime-release-dependency-inventory.js.map +1 -1
  80. package/dist/core/daemon/service-install-authority.d.ts +0 -4
  81. package/dist/core/daemon/service-install-authority.js +18 -3
  82. package/dist/core/daemon/service-install-authority.js.map +1 -1
  83. package/dist/core/dashboard.d.ts +10 -0
  84. package/dist/core/dashboard.js +103 -28
  85. package/dist/core/dashboard.js.map +1 -1
  86. package/dist/core/effective-config.js +7 -0
  87. package/dist/core/effective-config.js.map +1 -1
  88. package/dist/core/fleet/automerge-pass.js +33 -0
  89. package/dist/core/fleet/automerge-pass.js.map +1 -1
  90. package/dist/core/fleet/decisions-ledger.js +35 -12
  91. package/dist/core/fleet/decisions-ledger.js.map +1 -1
  92. package/dist/core/fleet/external-skill-git-capture.js +9 -1
  93. package/dist/core/fleet/external-skill-git-capture.js.map +1 -1
  94. package/dist/core/fleet/judge-decision-metadata.d.ts +8 -1
  95. package/dist/core/fleet/judge-decision-metadata.js +14 -1
  96. package/dist/core/fleet/judge-decision-metadata.js.map +1 -1
  97. package/dist/core/fleet/manager.d.ts +15 -1
  98. package/dist/core/fleet/manager.js +108 -30
  99. package/dist/core/fleet/manager.js.map +1 -1
  100. package/dist/core/fleet/post-merge-credit.d.ts +134 -9
  101. package/dist/core/fleet/post-merge-credit.js +350 -10
  102. package/dist/core/fleet/post-merge-credit.js.map +1 -1
  103. package/dist/core/fleet/quota.d.ts +74 -7
  104. package/dist/core/fleet/quota.js +688 -34
  105. package/dist/core/fleet/quota.js.map +1 -1
  106. package/dist/core/fleet/self-improve.d.ts +34 -1
  107. package/dist/core/fleet/self-improve.js +106 -1
  108. package/dist/core/fleet/self-improve.js.map +1 -1
  109. package/dist/core/fleet/skill-library.d.ts +21 -2
  110. package/dist/core/fleet/skill-library.js +54 -12
  111. package/dist/core/fleet/skill-library.js.map +1 -1
  112. package/dist/core/fleet/status.js +7 -5
  113. package/dist/core/fleet/status.js.map +1 -1
  114. package/dist/core/fleet/worked-ledger.d.ts +22 -0
  115. package/dist/core/fleet/worked-ledger.js +32 -0
  116. package/dist/core/fleet/worked-ledger.js.map +1 -1
  117. package/dist/core/foundry/automerge-scope-policy.d.ts +2 -2
  118. package/dist/core/foundry/automerge-scope-policy.js +9 -2
  119. package/dist/core/foundry/automerge-scope-policy.js.map +1 -1
  120. package/dist/core/goals/advance.js +34 -5
  121. package/dist/core/goals/advance.js.map +1 -1
  122. package/dist/core/goals/conductor-quota.d.ts +38 -0
  123. package/dist/core/goals/conductor-quota.js +110 -0
  124. package/dist/core/goals/conductor-quota.js.map +1 -0
  125. package/dist/core/goals/conductor-target.d.ts +24 -0
  126. package/dist/core/goals/conductor-target.js +35 -0
  127. package/dist/core/goals/conductor-target.js.map +1 -0
  128. package/dist/core/goals/conductor.d.ts +15 -0
  129. package/dist/core/goals/conductor.js +116 -9
  130. package/dist/core/goals/conductor.js.map +1 -1
  131. package/dist/core/goals/store.d.ts +29 -5
  132. package/dist/core/goals/store.js +197 -30
  133. package/dist/core/goals/store.js.map +1 -1
  134. package/dist/core/goals/timestamp-repair.d.ts +50 -0
  135. package/dist/core/goals/timestamp-repair.js +740 -0
  136. package/dist/core/goals/timestamp-repair.js.map +1 -0
  137. package/dist/core/inbox/apply.js +5 -2
  138. package/dist/core/inbox/apply.js.map +1 -1
  139. package/dist/core/inbox/merge.d.ts +94 -1
  140. package/dist/core/inbox/merge.js +349 -16
  141. package/dist/core/inbox/merge.js.map +1 -1
  142. package/dist/core/integrations/github.d.ts +2 -0
  143. package/dist/core/integrations/github.js +2 -1
  144. package/dist/core/integrations/github.js.map +1 -1
  145. package/dist/core/integrations/pulse-sync.js +13 -4
  146. package/dist/core/integrations/pulse-sync.js.map +1 -1
  147. package/dist/core/learn/reflect.d.ts +42 -4
  148. package/dist/core/learn/reflect.js +56 -5
  149. package/dist/core/learn/reflect.js.map +1 -1
  150. package/dist/core/run/best-of-n.d.ts +18 -0
  151. package/dist/core/run/best-of-n.js +163 -18
  152. package/dist/core/run/best-of-n.js.map +1 -1
  153. package/dist/core/run/engines.d.ts +8 -0
  154. package/dist/core/run/engines.js +9 -1
  155. package/dist/core/run/engines.js.map +1 -1
  156. package/dist/core/run/learned-router.js +28 -3
  157. package/dist/core/run/learned-router.js.map +1 -1
  158. package/dist/core/run/orchestrator.d.ts +7 -2
  159. package/dist/core/run/orchestrator.js +140 -60
  160. package/dist/core/run/orchestrator.js.map +1 -1
  161. package/dist/core/strategy/goal-planner.js +7 -1
  162. package/dist/core/strategy/goal-planner.js.map +1 -1
  163. package/dist/core/swarm/planner.d.ts +2 -2
  164. package/dist/core/swarm/planner.js +52 -5
  165. package/dist/core/swarm/planner.js.map +1 -1
  166. package/dist/core/swarm/rollback.d.ts +11 -0
  167. package/dist/core/swarm/rollback.js +54 -0
  168. package/dist/core/swarm/rollback.js.map +1 -1
  169. package/dist/core/swarm/runner.js +123 -11
  170. package/dist/core/swarm/runner.js.map +1 -1
  171. package/dist/core/types.d.ts +139 -1
  172. package/dist/core/types.js.map +1 -1
  173. package/dist/core/web/api.js +105 -7
  174. package/dist/core/web/api.js.map +1 -1
  175. package/dist/core/web/control.d.ts +20 -0
  176. package/dist/core/web/control.js +49 -34
  177. package/dist/core/web/control.js.map +1 -1
  178. package/dist/core/web/fleet-status-cache.d.ts +68 -0
  179. package/dist/core/web/fleet-status-cache.js +120 -0
  180. package/dist/core/web/fleet-status-cache.js.map +1 -0
  181. package/dist/core/web/public/next/assets/index-CY0U241s.css +1 -0
  182. package/dist/core/web/public/next/assets/index-Ct0mf8n4.js +69 -0
  183. package/dist/core/web/public/next/assets/index-Ct0mf8n4.js.map +1 -0
  184. package/dist/core/web/public/next/index.html +15 -0
  185. package/dist/release-dependency-inventory.json +1 -1
  186. package/dist/tui/app.js +2 -2
  187. package/dist/tui/app.js.map +1 -1
  188. package/dist/tui/render.d.ts +2 -0
  189. package/dist/tui/render.js +162 -4
  190. package/dist/tui/render.js.map +1 -1
  191. package/docs/RUNTIME_ACTIVATION_AUTHORITY.md +126 -21
  192. package/docs/contracts/CONTRACT-M521.md +102 -0
  193. package/package.json +20 -3
  194. package/schema/config.schema.json +800 -5
  195. package/node_modules/which/CHANGELOG.md +0 -166
@@ -1 +1 @@
1
- {"version":3,"file":"goal-planner.js","sourceRoot":"","sources":["../../../src/core/strategy/goal-planner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE1D,8EAA8E;AAC9E,6EAA6E;AAC7E,2EAA2E;AAC3E,8EAA8E;AAE9E,SAAS,UAAU,CAAC,KAAsB,EAAE,GAAW,EAAE,KAA+B;IACtF,MAAM,IAAI,GAAG,KAAK;QAChB,CAAC,CAAC,wBAAwB,KAAK,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;QACjE,CAAC,CAAC,wBAAwB,KAAK,IAAI,GAAG,EAAE,CAAC;IAC3C,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,4EAA4E;AAC5E,8EAA8E;AAE9E,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;AAEpC,gEAAgE;AAChE,MAAM,UAAU,qBAAqB;IACnC,SAAS,CAAC,KAAK,EAAE,CAAC;AACpB,CAAC;AAED,8EAA8E;AAC9E,iEAAiE;AACjE,8EAA8E;AAE9E,IAAI,aAAa,GAAkB,SAAqC,CAAC;AAEzE,SAAS,WAAW,CAAC,QAAgB;IACnC,IAAI,aAAa,KAAM,SAAsC;QAAE,OAAO,aAAa,IAAI,EAAE,CAAC;IAC1F,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,wBAAwB,CAAC,CAAC;QAC3D,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YAClB,yEAAyE;YACzE,8BAA8B;YAC9B,aAAa,GAAG,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACzD,CAAC;aAAM,CAAC;YACN,aAAa,GAAG,EAAE,CAAC;QACrB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,aAAa,GAAG,EAAE,CAAC;IACrB,CAAC;IACD,OAAO,aAAa,IAAI,EAAE,CAAC;AAC7B,CAAC;AAED,8EAA8E;AAC9E,yCAAyC;AACzC,8EAA8E;AAE9E;;;;;;;GAOG;AACH,SAAS,eAAe,CACtB,GAAW;IAEX,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACnE,MAAM,KAAK,GAA6C,EAAE,CAAC;IAE3D,8DAA8D;IAC9D,MAAM,QAAQ,GAAG,6BAA6B,CAAC;IAE/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;QACvB,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,CAAC;YAAE,SAAS;QACjB,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,CAAC;QAE1B,2DAA2D;QAC3D,MAAM,KAAK,GAAG,6CAA6C,CAAC;QAC5D,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,GAAG,EAAE,CAAC;YACR,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAC9C,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAC/C,IAAI,KAAK,IAAI,MAAM,EAAE,CAAC;gBACpB,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;gBAC9B,SAAS;YACX,CAAC;QACH,CAAC;QAED,yEAAyE;QACzE,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9B,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC9C,CAAC,EAAE,CAAC,CAAC,0BAA0B;YAC/B,SAAS;QACX,CAAC;QAED,gDAAgD;QAChD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,KAAK,CAAC,IAAI,CAAC;gBACT,KAAK,EAAE,IAAI;gBACX,MAAM,EAAE,cAAc,IAAI,+CAA+C;aAC1E,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,eAAe;IACf,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzC,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAChE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,8EAA8E;AAC9E,cAAc;AACd,8EAA8E;AAE9E;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,IAAU,EACV,GAAwE,EACxE,QAAgB;IAEhB,iEAAiE;IACjE,MAAM,OAAO,GAAG,GAAG,CAAC,OAA8C,CAAC;IACnE,IAAI,OAAO,EAAE,CAAC,cAAc,CAAC,KAAK,KAAK,EAAE,CAAC;QACxC,UAAU,CAAC,MAAM,EAAE,gCAAgC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1E,OAAO,IAAI,CAAC;IACd,CAAC;IAED,yEAAyE;IACzE,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAE5C,yDAAyD;IACzD,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;QAC3B,UAAU,CAAC,MAAM,EAAE,kCAAkC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5E,OAAO,IAAI,CAAC;IACd,CAAC;IACD,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEvB,IAAI,CAAC;QACH,wEAAwE;QACxE,yEAAyE;QACzE,UAAU,CAAC,MAAM,EAAE,8BAA8B,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;QAChH,MAAM,EAAE,0BAA0B,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;QAC3E,MAAM,MAAM,GAAG,0BAA0B,CAAC,GAAkB,CAAC,CAAC;QAC9D,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,UAAU,CAAC,MAAM,EAAE,mCAAmC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;YAC7E,OAAO,IAAI,CAAC,CAAC,6CAA6C;QAC5D,CAAC;QAED,MAAM,OAAO,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;QAEtC,wEAAwE;QACxE,gFAAgF;QAChF,gFAAgF;QAChF,MAAM,gBAAgB,GAAG,mBAAmB,EAAE,CAAC;QAE/C,MAAM,YAAY,GAAG;YACnB,0EAA0E;YAC1E,yGAAyG;YACzG,EAAE;YACF,gBAAgB;gBACd,CAAC,CAAC,qEAAqE,gBAAgB,EAAE;gBACzF,CAAC,CAAC,EAAE;YACN,EAAE;YACF,yBAAyB;YACzB,sIAAsI;YACtI,sGAAsG;YACtG,2GAA2G;YAC3G,0GAA0G;YAC1G,2FAA2F;YAC3F,6IAA6I;YAC7I,+EAA+E;YAC/E,EAAE;YACF,OAAO;gBACL,CAAC,CAAC,qIAAqI,OAAO,EAAE;gBAChJ,CAAC,CAAC,EAAE;SACP;aACE,MAAM,CAAC,OAAO,CAAC;aACf,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,MAAM,UAAU,GAAG;YACjB,wDAAwD;YACxD,IAAI,IAAI,CAAC,SAAS,GAAG;YACrB,EAAE;YACF,qHAAqH;YACrH,wHAAwH;SACzH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEb,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;QAEpC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,kDAAkD;YAClD,UAAU,CAAC,MAAM,EAAE,0EAA0E,EAAE;gBAC7F,MAAM,EAAE,IAAI,CAAC,EAAE;gBACf,UAAU,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;gBAC7B,WAAW,EAAE,MAAM,CAAC,MAAM;aAC3B,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;QAED,6DAA6D;QAC7D,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;QACxC,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC,CAAC,2BAA2B;QAE1E,iFAAiF;QACjF,kDAAkD;QAClD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACtB,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;gBACpB,EAAE,EAAE,GAAG,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE;gBACvB,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,KAAK,EAAE,CAAC;gBACR,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,IAAI;gBACZ,OAAO,EAAE,IAAI;gBACb,UAAU,EAAE,IAAI;gBAChB,SAAS,EAAE,GAAG;gBACd,SAAS,EAAE,GAAG;aACf,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,4CAA4C;QAC5C,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC;QACxB,QAAQ,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QACzB,UAAU,CAAC,MAAM,EAAE,eAAe,EAAE;YAClC,MAAM,EAAE,KAAK,CAAC,EAAE;YAChB,kBAAkB,EAAE,KAAK,CAAC,UAAU,CAAC,MAAM;YAC3C,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;SAC7C,CAAC,CAAC;QACH,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,qDAAqD;QACrD,UAAU,CAAC,MAAM,EAAE,kCAAkC,EAAE;YACrD,MAAM,EAAE,IAAI,CAAC,EAAE;YACf,KAAK,EAAG,GAAa,EAAE,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC;SAC9C,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"goal-planner.js","sourceRoot":"","sources":["../../../src/core/strategy/goal-planner.ts"],"names":[],"mappings":"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"}
@@ -12,7 +12,7 @@
12
12
  * carry deps on the tasks from the prior phase.
13
13
  * - IDs are stable slugs: scaffold-1, build-1..N, integrate-1, verify-1, review-1.
14
14
  */
15
- import type { SwarmPlan, AshlrConfig } from '../types.js';
15
+ import type { SwarmPlan, AshlrConfig, ProviderInferenceQuotaSession } from '../types.js';
16
16
  /**
17
17
  * Decompose a goal (+ optional spec body) into a phased SwarmPlan.
18
18
  *
@@ -29,4 +29,4 @@ import type { SwarmPlan, AshlrConfig } from '../types.js';
29
29
  export declare function planSwarm(input: {
30
30
  goal: string;
31
31
  specBody?: string;
32
- }, cfg: AshlrConfig, signal?: AbortSignal): Promise<SwarmPlan>;
32
+ }, cfg: AshlrConfig, signal?: AbortSignal, providerQuota?: ProviderInferenceQuotaSession, signedTokenBudget?: number): Promise<SwarmPlan>;
@@ -13,6 +13,8 @@
13
13
  * - IDs are stable slugs: scaffold-1, build-1..N, integrate-1, verify-1, review-1.
14
14
  */
15
15
  import { getActiveClient } from '../run/provider-client.js';
16
+ import { GoalConductorQuotaRefusal, isGoalConductorQuotaRefusal, } from '../goals/conductor-quota.js';
17
+ import { conservativeRequestTokenReservation, MAX_GOVERNED_OUTPUT_TOKENS, supportsGovernedModelCalls, } from '../run/model-call-authority.js';
16
18
  // ---------------------------------------------------------------------------
17
19
  // Constants
18
20
  // ---------------------------------------------------------------------------
@@ -277,7 +279,7 @@ function withUsage(plan, usage) {
277
279
  * - Falls back to a sensible default plan on any failure.
278
280
  * - LOCAL-first (opts.allowCloud defaults false).
279
281
  */
280
- export async function planSwarm(input, cfg, signal) {
282
+ export async function planSwarm(input, cfg, signal, providerQuota, signedTokenBudget) {
281
283
  const { goal, specBody } = input;
282
284
  if (signal?.aborted)
283
285
  throw abortReason(signal);
@@ -285,17 +287,51 @@ export async function planSwarm(input, cfg, signal) {
285
287
  const userPrompt = specBody
286
288
  ? `Goal: ${goal}\n\nSpec:\n${specBody.slice(0, 8000)}` // guard against enormous spec bodies
287
289
  : `Goal: ${goal}`;
290
+ const messages = [
291
+ { role: 'system', content: PLANNING_SYSTEM },
292
+ { role: 'user', content: userPrompt },
293
+ ];
288
294
  // Attempt a single LOCAL-first model call
289
295
  let rawOutput;
290
296
  let usage;
291
297
  try {
298
+ let signedLimits;
299
+ let signedPromptReservation;
300
+ if (providerQuota) {
301
+ if (!Number.isSafeInteger(signedTokenBudget) || (signedTokenBudget ?? 0) < 1) {
302
+ throw new GoalConductorQuotaRefusal('goal-conductor-signed-planner-budget-invalid');
303
+ }
304
+ signedPromptReservation = conservativeRequestTokenReservation(messages, []);
305
+ const remaining = signedTokenBudget - signedPromptReservation;
306
+ if (remaining < 1) {
307
+ throw new GoalConductorQuotaRefusal('goal-conductor-signed-planner-budget-exhausted');
308
+ }
309
+ signedLimits = {
310
+ maxOutputTokens: Math.min(MAX_GOVERNED_OUTPUT_TOKENS, remaining),
311
+ };
312
+ }
292
313
  const client = await getActiveClient(cfg, { allowCloud: false });
293
314
  if (signal?.aborted)
294
315
  throw abortReason(signal);
295
- const result = await client.chat([
296
- { role: 'system', content: PLANNING_SYSTEM },
297
- { role: 'user', content: userPrompt },
298
- ], undefined, signal);
316
+ if (providerQuota && !supportsGovernedModelCalls(client)) {
317
+ throw new GoalConductorQuotaRefusal('goal-conductor-signed-planner-provider-ungoverned');
318
+ }
319
+ // The signed path consumes one of its pre-reserved tickets at the final
320
+ // synchronous boundary before inference. Ordinary swarms omit the session.
321
+ providerQuota?.claimNext();
322
+ const result = signedLimits
323
+ ? await client.chat(messages, undefined, signal, signedLimits)
324
+ : await client.chat(messages, undefined, signal);
325
+ if (signedLimits && signedPromptReservation !== undefined) {
326
+ const exactUsage = result.usageKnown === true &&
327
+ Number.isSafeInteger(result.usage.tokensIn) && result.usage.tokensIn >= 0 &&
328
+ Number.isSafeInteger(result.usage.tokensOut) && result.usage.tokensOut >= 0 &&
329
+ result.usage.tokensIn <= signedPromptReservation &&
330
+ result.usage.tokensOut <= signedLimits.maxOutputTokens;
331
+ if (!exactUsage) {
332
+ throw new GoalConductorQuotaRefusal('goal-conductor-signed-planner-usage-invalid');
333
+ }
334
+ }
299
335
  rawOutput = result.content;
300
336
  usage = plannerUsage(result.usage);
301
337
  if (signal?.aborted)
@@ -304,6 +340,11 @@ export async function planSwarm(input, cfg, signal) {
304
340
  catch (err) {
305
341
  if (signal?.aborted)
306
342
  throw abortReason(signal);
343
+ if (isGoalConductorQuotaRefusal(err))
344
+ throw err;
345
+ if (providerQuota) {
346
+ throw new GoalConductorQuotaRefusal('goal-conductor-signed-planner-provider-failed');
347
+ }
307
348
  const msg = err instanceof Error ? err.message : String(err);
308
349
  process.stderr.write(`[ashlr swarm] planner model call failed: ${msg} — using default plan\n`);
309
350
  return defaultPlan(goal);
@@ -316,10 +357,16 @@ export async function planSwarm(input, cfg, signal) {
316
357
  }
317
358
  }
318
359
  catch (parseErr) {
360
+ if (providerQuota) {
361
+ throw new GoalConductorQuotaRefusal('goal-conductor-signed-planner-output-invalid');
362
+ }
319
363
  const msg = parseErr instanceof Error ? parseErr.message : String(parseErr);
320
364
  process.stderr.write(`[ashlr swarm] planner parse error: ${msg} — using default plan\n`);
321
365
  }
322
366
  // Fall back to default
367
+ if (providerQuota) {
368
+ throw new GoalConductorQuotaRefusal('goal-conductor-signed-planner-output-invalid');
369
+ }
323
370
  process.stderr.write(`[ashlr swarm] planner could not extract a valid plan from model output — using default plan\n`);
324
371
  return withUsage(defaultPlan(goal), usage);
325
372
  }
@@ -1 +1 @@
1
- {"version":3,"file":"planner.js","sourceRoot":"","sources":["../../../src/core/swarm/planner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"planner.js","sourceRoot":"","sources":["../../../src/core/swarm/planner.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,12 @@
13
13
  * - rollbackTo is the ONLY potentially-destructive operation in M17.
14
14
  * - NEVER pushes to a remote, NEVER deletes branches.
15
15
  * - NEVER force-resets without opts.force === true.
16
+ * - NEVER force-resets the MAIN checkout of a repository (2026-08-17 incident:
17
+ * a bare `git stash`/`reset` against a primary checkout nearly destroyed
18
+ * live operator work). `--force` only proceeds when `project` is an
19
+ * isolated linked worktree — detected via git's own --git-dir vs
20
+ * --git-common-dir distinction, not by path heuristics. The main checkout
21
+ * always fails closed on --force, regardless of dirty state.
16
22
  * - Refuses (ok:false) on non-repo, or dirty tree without --force.
17
23
  * - Never throws — all error paths return { ok: false, detail }.
18
24
  * - Uses execFileSync with 10 s timeout and stdio:'pipe'.
@@ -38,8 +44,13 @@ export declare function snapshotProject(project: string | null): RollbackSnapsho
38
44
  * - NEVER pushes to a remote.
39
45
  * - NEVER deletes branches.
40
46
  * - NEVER force-resets without opts.force === true.
47
+ * - NEVER force-resets the main checkout — opts.force is refused outright
48
+ * when snap.project is not an isolated linked worktree, before any dirty
49
+ * check runs (an older-commit force-reset can also silently discard
50
+ * COMMITTED work made after the snapshot; see isPrimaryCheckout above).
41
51
  * - Refuses (returns { ok: false, detail }) without throwing when:
42
52
  * • snap.isRepo is false (nothing to restore)
53
+ * • opts.force is true and snap.project is the main checkout
43
54
  * • the current working tree is dirty and opts.force is false
44
55
  * • any git operation fails
45
56
  * - With opts.force: uses `git reset --hard <head>` so local uncommitted
@@ -13,11 +13,18 @@
13
13
  * - rollbackTo is the ONLY potentially-destructive operation in M17.
14
14
  * - NEVER pushes to a remote, NEVER deletes branches.
15
15
  * - NEVER force-resets without opts.force === true.
16
+ * - NEVER force-resets the MAIN checkout of a repository (2026-08-17 incident:
17
+ * a bare `git stash`/`reset` against a primary checkout nearly destroyed
18
+ * live operator work). `--force` only proceeds when `project` is an
19
+ * isolated linked worktree — detected via git's own --git-dir vs
20
+ * --git-common-dir distinction, not by path heuristics. The main checkout
21
+ * always fails closed on --force, regardless of dirty state.
16
22
  * - Refuses (ok:false) on non-repo, or dirty tree without --force.
17
23
  * - Never throws — all error paths return { ok: false, detail }.
18
24
  * - Uses execFileSync with 10 s timeout and stdio:'pipe'.
19
25
  */
20
26
  import { execFileSync } from 'node:child_process';
27
+ import { canonicalFilesystemPathIdentity } from '../sandbox/policy.js';
21
28
  // ---------------------------------------------------------------------------
22
29
  // Internal helpers
23
30
  // ---------------------------------------------------------------------------
@@ -51,6 +58,31 @@ function isGitRepo(dir) {
51
58
  const result = git(dir, ['rev-parse', '--git-dir']);
52
59
  return result !== null;
53
60
  }
61
+ /**
62
+ * Returns true when `dir` is the MAIN checkout of its repository, i.e. NOT an
63
+ * isolated linked worktree (a sandbox, or any `git worktree add` checkout).
64
+ *
65
+ * Git exposes this distinction natively: a linked worktree's --git-dir lives
66
+ * under <common-dir>/worktrees/<name>, while the main worktree's --git-dir
67
+ * *is* the common dir. So --git-dir === --git-common-dir iff `dir` is the
68
+ * main checkout. This needs no knowledge of ashlr's own sandbox layout and
69
+ * correctly covers every isolation mechanism that uses real git worktrees.
70
+ *
71
+ * Fails closed: any unresolved rev-parse (not a repo, git error, etc.) is
72
+ * treated as "this is the main checkout" — an unknown answer must never be
73
+ * read as "safe to force-reset".
74
+ */
75
+ function isPrimaryCheckout(dir) {
76
+ const gitDir = git(dir, ['rev-parse', '--path-format=absolute', '--git-dir']);
77
+ const commonDir = git(dir, ['rev-parse', '--path-format=absolute', '--git-common-dir']);
78
+ if (gitDir === null || commonDir === null)
79
+ return true;
80
+ const gitDirId = canonicalFilesystemPathIdentity(gitDir);
81
+ const commonDirId = canonicalFilesystemPathIdentity(commonDir);
82
+ if (gitDirId === null || commonDirId === null)
83
+ return true;
84
+ return gitDirId === commonDirId;
85
+ }
54
86
  // ---------------------------------------------------------------------------
55
87
  // Public API
56
88
  // ---------------------------------------------------------------------------
@@ -134,8 +166,13 @@ export function snapshotProject(project) {
134
166
  * - NEVER pushes to a remote.
135
167
  * - NEVER deletes branches.
136
168
  * - NEVER force-resets without opts.force === true.
169
+ * - NEVER force-resets the main checkout — opts.force is refused outright
170
+ * when snap.project is not an isolated linked worktree, before any dirty
171
+ * check runs (an older-commit force-reset can also silently discard
172
+ * COMMITTED work made after the snapshot; see isPrimaryCheckout above).
137
173
  * - Refuses (returns { ok: false, detail }) without throwing when:
138
174
  * • snap.isRepo is false (nothing to restore)
175
+ * • opts.force is true and snap.project is the main checkout
139
176
  * • the current working tree is dirty and opts.force is false
140
177
  * • any git operation fails
141
178
  * - With opts.force: uses `git reset --hard <head>` so local uncommitted
@@ -161,6 +198,23 @@ export async function rollbackTo(snap, opts) {
161
198
  };
162
199
  }
163
200
  const project = snap.project;
201
+ // --- Refuse --force against the main checkout, unconditionally ---
202
+ // This must run before the dirty-tree check: even a clean tree can lose
203
+ // committed work to `reset --hard`, and a dirty tree can lose live,
204
+ // uncommitted operator/agent edits with no recovery path at all.
205
+ if (opts.force && isPrimaryCheckout(project)) {
206
+ return {
207
+ ok: false,
208
+ detail: 'Rollback refused: --force would run `git reset --hard` against the ' +
209
+ 'main checkout, not an isolated worktree. This can silently discard ' +
210
+ 'live uncommitted work (yours or a concurrent agent\'s) and commits ' +
211
+ 'made since the snapshot. Force-rollback is only permitted against an ' +
212
+ 'isolated linked worktree (e.g. a sandbox created via `git worktree ' +
213
+ 'add`). To roll back the main checkout, use the non-force path (`git ' +
214
+ 'checkout`, which refuses to overwrite a dirty tree) or restore ' +
215
+ 'manually with git after reviewing what would be discarded.',
216
+ };
217
+ }
164
218
  // --- Check current dirty state ---
165
219
  try {
166
220
  const porcelain = git(project, ['status', '--porcelain']);
@@ -1 +1 @@
1
- {"version":3,"file":"rollback.js","sourceRoot":"","sources":["../../../src/core/swarm/rollback.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rollback.js","sourceRoot":"","sources":["../../../src/core/swarm/rollback.ts"],"names":[],"mappings":"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"}
@@ -47,6 +47,7 @@ import { scrubSecrets as scrubSensitiveText } from '../util/scrub.js';
47
47
  import { mergeDelegationScope, summarizeDelegationScope } from '../run/delegation-scope.js';
48
48
  import { assertSafeExecutionIdentity } from '../fleet/attempt-identity.js';
49
49
  import { runEventSummary } from '../learning/causal.js';
50
+ import { isGoalConductorQuotaRefusal } from '../goals/conductor-quota.js';
50
51
  import { PROPOSAL_PERSISTENCE_MISMATCH_REASON, PROPOSAL_PERSISTENCE_MISMATCH_RESULT, } from '../inbox/persistence-mismatch.js';
51
52
  import { abandonExecutionAuthority, acquireExecutionAuthority, beginExecutionAuthority, finishExecutionAuthority, } from '../util/execution-lease.js';
52
53
  import { assertMayMutate, killSwitchOn } from '../sandbox/policy.js';
@@ -58,6 +59,33 @@ let _riskScan = null;
58
59
  let _shouldEscalate = null;
59
60
  let _snapshotProject = null;
60
61
  let _m17Loaded = false;
62
+ /**
63
+ * True when gate.js (risk-scan/escalation) failed to load. Set once by
64
+ * loadM17() and never retried (mirrors the _m17Loaded singleton-cache
65
+ * semantics of the other lazy deps). runSwarm() checks this BEFORE any task
66
+ * executes and refuses to run rather than operate with zero risk assessment
67
+ * — see the preflight check near the M19 governance gate.
68
+ */
69
+ let _gateLoadFailed = false;
70
+ // ---------------------------------------------------------------------------
71
+ // M17/M21 lazy-load observability — M197 structured-logging convention
72
+ // (mirrors goal-planner.ts's plannerLog, itself modeled on manager.ts /
73
+ // automerge-pass.ts). sign.js, gate.js, rollback.js, and sandbox/audit.js all
74
+ // exist in this repo today: a throw here means a genuine build problem (bad
75
+ // build, import cycle, partial dist) — NOT an absent module — so it must
76
+ // never be a silent catch.
77
+ // ---------------------------------------------------------------------------
78
+ function runnerLog(level, msg, extra) {
79
+ const line = extra
80
+ ? `[ashlr] swarm/runner:${level} ${msg} ${JSON.stringify(extra)}`
81
+ : `[ashlr] swarm/runner:${level} ${msg}`;
82
+ if (level === 'error') {
83
+ console.error(line);
84
+ }
85
+ else {
86
+ console.warn(line);
87
+ }
88
+ }
61
89
  async function loadM17() {
62
90
  if (_m17Loaded)
63
91
  return;
@@ -67,23 +95,40 @@ async function loadM17() {
67
95
  _signOutput = sign.signOutput;
68
96
  _verifyOutput = sign.verifyOutput;
69
97
  }
70
- catch {
71
- // sign.ts not built yet — signing/verification degrades to no-op
98
+ catch (err) {
99
+ // sign.ts exists in the repo. Every call site already treats signing as
100
+ // best-effort (see the try/catch around _signOutput() — "absent
101
+ // signature means downstream verification skips this dep"), so a
102
+ // load failure degrades the same way, but LOUDLY: it must never vanish
103
+ // into a silent catch, since that's exactly how signing fails open.
104
+ runnerLog('error', '[M17][SECURITY] output signing unavailable this run — task results will NOT be signed and downstream tamper verification will silently skip them', { module: './sign.js', reason: err instanceof Error ? err.message : String(err) });
72
105
  }
73
106
  try {
74
107
  const gate = await import('./gate.js');
75
108
  _riskScan = gate.riskScan;
76
109
  _shouldEscalate = gate.shouldEscalate;
77
110
  }
78
- catch {
79
- // gate.ts not built yet — escalation degrades to no-op
111
+ catch (err) {
112
+ // gate.ts exists in the repo. Unlike sign/rollback/audit (forensic or
113
+ // recovery aids), the risk-scan/escalation gate is the ONLY REAL-TIME
114
+ // PREVENTIVE control among the M17/M21 lazy deps — it's what stops risky
115
+ // autonomous output from proceeding unchecked. Losing it silently would
116
+ // mean every task result runs with zero risk assessment. FAIL CLOSED:
117
+ // flag it so runSwarm() refuses to start (see _gateLoadFailed) instead
118
+ // of degrading to no-op.
119
+ _gateLoadFailed = true;
120
+ runnerLog('error', '[M17][SECURITY] risk-scan/escalation gate unavailable — swarm will refuse to run rather than execute with zero risk assessment', { module: './gate.js', reason: err instanceof Error ? err.message : String(err) });
80
121
  }
81
122
  try {
82
123
  const rb = await import('./rollback.js');
83
124
  _snapshotProject = rb.snapshotProject;
84
125
  }
85
- catch {
86
- // rollback.ts not built yet — snapshot degrades to no-op
126
+ catch (err) {
127
+ // rollback.ts exists in the repo. Snapshot creation is already
128
+ // best-effort at its call site ("snapshot failure never blocks the
129
+ // swarm"), so a load failure degrades the same way — but loudly, so an
130
+ // operator can see the undo safety net is missing this run.
131
+ runnerLog('warn', '[M17] rollback snapshot module unavailable this run — no pre-run git snapshot will be captured (no undo safety net)', { module: './rollback.js', reason: err instanceof Error ? err.message : String(err) });
87
132
  }
88
133
  }
89
134
  let _createSandbox = null;
@@ -120,8 +165,12 @@ async function loadM21() {
120
165
  const au = await import(/* @vite-ignore */ auSpec);
121
166
  _audit = au.audit;
122
167
  }
123
- catch {
124
- // audit.ts not built yet — audit degrades to no-op
168
+ catch (err) {
169
+ // audit.ts exists in the repo. Every call site already treats _audit?.()
170
+ // as optional + best-effort ("audit is best-effort"), so a load failure
171
+ // degrades the same way — but loudly, so an operator can see the audit
172
+ // trail is missing this run rather than assuming silence means clean.
173
+ runnerLog('warn', '[M21] audit logging module unavailable this run — no audit trail will be written (sandbox create/cleanup, proposal capture, etc. will NOT be recorded)', { module: '../sandbox/audit.js', reason: err instanceof Error ? err.message : String(err) });
125
174
  }
126
175
  try {
127
176
  // M24: the inbox proposal sink — used ONLY when opts.propose is set.
@@ -478,6 +527,11 @@ enforceKillState = false) {
478
527
  // subprocess. That single assignment is the load-bearing guard; this task
479
528
  // sets nothing per-call.
480
529
  noMemory: false,
530
+ ...(opts.providerQuota ? {
531
+ noMemory: true,
532
+ noCapture: true,
533
+ providerQuota: opts.providerQuota,
534
+ } : {}),
481
535
  ...(opts.signal ? { signal: opts.signal } : {}),
482
536
  ...(taskDelegationScope ? { delegationScope: taskDelegationScope } : {}),
483
537
  });
@@ -498,6 +552,8 @@ enforceKillState = false) {
498
552
  }
499
553
  }
500
554
  catch (err) {
555
+ if (isGoalConductorQuotaRefusal(err))
556
+ throw err;
501
557
  if (opts.signal?.aborted) {
502
558
  taskRun.status = 'cancelled';
503
559
  taskRun.error = 'Cancelled by the swarm owner.';
@@ -1407,6 +1463,44 @@ async function runSwarmInternal(input, cfg, opts, sink) {
1407
1463
  }
1408
1464
  }
1409
1465
  // -------------------------------------------------------------------------
1466
+ // M17 SECURITY: fail CLOSED when the risk-scan/escalation gate (gate.js)
1467
+ // could not be loaded — see loadM17()/_gateLoadFailed. This is the ONE lazy
1468
+ // dep of the four (sign/gate/rollback/audit) that gets a hard refusal
1469
+ // rather than a loud degrade: it's the only real-time PREVENTIVE control —
1470
+ // sign/rollback/audit are forensic or recovery aids whose absence is bad
1471
+ // but doesn't let unreviewed risky output slip through. Matches the
1472
+ // requireSandbox convention already in this file: refuse rather than run
1473
+ // with the safety control silently missing.
1474
+ // -------------------------------------------------------------------------
1475
+ if (_gateLoadFailed) {
1476
+ const now = new Date().toISOString();
1477
+ const reason = 'the risk-scan/escalation gate (gate.js) failed to load, so task output ' +
1478
+ 'cannot be automatically screened for risk before it proceeds';
1479
+ const gateBlockedRun = {
1480
+ id: opts.runId ?? makeId(),
1481
+ goal: input.goal,
1482
+ specId: input.specId ?? null,
1483
+ project,
1484
+ createdAt: now,
1485
+ updatedAt: now,
1486
+ budget,
1487
+ usage: newUsage(),
1488
+ parallel,
1489
+ status: 'failed',
1490
+ plan: { specId: input.specId ?? null, goal: input.goal, tasks: [] },
1491
+ tasks: [],
1492
+ result: `Refused: ${reason}. No tasks were executed; the working tree was NOT touched.`,
1493
+ proposalOutcome: {
1494
+ kind: 'engine-failed-no-diff',
1495
+ reason,
1496
+ },
1497
+ };
1498
+ emitLog(sink, gateBlockedRun.result ?? '');
1499
+ if (!opts.dryRun)
1500
+ persist(gateBlockedRun);
1501
+ return gateBlockedRun;
1502
+ }
1503
+ // -------------------------------------------------------------------------
1410
1504
  // RESUME: load existing SwarmRun if resumeId provided.
1411
1505
  // -------------------------------------------------------------------------
1412
1506
  if (opts.resumeId) {
@@ -1624,7 +1718,7 @@ async function runSwarmInternal(input, cfg, opts, sink) {
1624
1718
  // is loaded by the CLI layer (cli/swarm.ts) and passed in via the input
1625
1719
  // if needed. The planner accepts undefined specBody and works goal-only.
1626
1720
  const specBody = undefined;
1627
- const plan = await planSwarm({ goal: input.goal, specBody }, cfg, opts.signal);
1721
+ const plan = await planSwarm({ goal: input.goal, specBody }, cfg, opts.signal, opts.providerQuota, opts.providerQuota ? run.budget.maxTokens : undefined);
1628
1722
  if (plan.usage !== undefined) {
1629
1723
  run.usage = addUsage(run.usage, plan.usage);
1630
1724
  }
@@ -1661,7 +1755,9 @@ async function runSwarmInternal(input, cfg, opts, sink) {
1661
1755
  return run;
1662
1756
  }
1663
1757
  run.status = 'failed';
1664
- run.result = `Planning failed: ${err instanceof Error ? err.message : String(err)}`;
1758
+ run.result = isGoalConductorQuotaRefusal(err)
1759
+ ? `Swarm refused: ${err.message}. No unreserved provider inference was attempted.`
1760
+ : `Planning failed: ${err instanceof Error ? err.message : String(err)}`;
1665
1761
  maybePersist(run);
1666
1762
  emitLog(sink, run.result);
1667
1763
  // M21: clean up sandbox even on planning failure (no diff to capture yet).
@@ -1787,7 +1883,9 @@ async function runSwarmInternal(input, cfg, opts, sink) {
1787
1883
  catch (err) {
1788
1884
  // Unexpected error in the phase loop — surface cleanly.
1789
1885
  run.status = 'failed';
1790
- run.result = `Swarm failed: ${err instanceof Error ? err.message : String(err)}`;
1886
+ run.result = isGoalConductorQuotaRefusal(err)
1887
+ ? `Swarm refused: ${err.message}. No unreserved provider inference was attempted.`
1888
+ : `Swarm failed: ${err instanceof Error ? err.message : String(err)}`;
1791
1889
  persist(run);
1792
1890
  emitLog(sink, run.result);
1793
1891
  // M21: capture diff of any partial work, then remove sandbox.
@@ -1869,6 +1967,20 @@ export async function runSwarm(input, cfg, opts, sink) {
1869
1967
  emitLog(sink, refused.result ?? 'Swarm execution authority unavailable.');
1870
1968
  return refused;
1871
1969
  };
1970
+ if (opts.providerQuota) {
1971
+ const signedBudget = opts.budget;
1972
+ const invalidSignedShape = opts.allowCloud === true || signedBudget?.allowCloud === true ||
1973
+ opts.background === true || opts.dryRun === true || opts.approved === true ||
1974
+ opts.resumeId !== undefined || opts.runId !== opts.providerQuota.attemptId ||
1975
+ !Number.isSafeInteger(signedBudget?.maxSteps) ||
1976
+ (signedBudget?.maxSteps ?? 0) < 1 || (signedBudget?.maxSteps ?? 0) > 12 ||
1977
+ !Number.isSafeInteger(signedBudget?.maxTokens) ||
1978
+ (signedBudget?.maxTokens ?? 0) < 1 || (signedBudget?.maxTokens ?? 0) > 50_000;
1979
+ if (invalidSignedShape) {
1980
+ return refuseAuthority(opts.providerQuota.attemptId, 'signed provider quota requires a fresh foreground builtin run with the bounded one-shot budget');
1981
+ }
1982
+ opts = { ...opts, allowCloud: false, noCapture: true };
1983
+ }
1872
1984
  let persistenceFailed = false;
1873
1985
  const execute = async () => {
1874
1986
  try {