@abot-ai/runtime 1.0.0 → 1.1.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 (549) hide show
  1. package/README.md +17 -3
  2. package/dist/scripts/add-runtime-model.js +4 -0
  3. package/dist/scripts/configure-long-term-memory.d.ts +6 -0
  4. package/dist/scripts/configure-long-term-memory.js +139 -0
  5. package/dist/scripts/init-runtime.js +11 -1
  6. package/dist/scripts/runtime-setup-files.d.ts +1 -0
  7. package/dist/scripts/runtime-setup-files.js +4 -0
  8. package/dist/src/capabilities/normal-invocation/contracts.d.ts +1 -0
  9. package/dist/src/capabilities/normal-invocation/validator.d.ts +5 -0
  10. package/dist/src/capabilities/normal-invocation/validator.js +35 -2
  11. package/dist/src/capabilities/tool-definition-validator/definition-fields.d.ts +7 -0
  12. package/dist/src/capabilities/tool-definition-validator/definition-fields.js +156 -0
  13. package/dist/src/capabilities/tool-definition-validator/definition-parser.d.ts +2 -0
  14. package/dist/src/capabilities/tool-definition-validator/definition-parser.js +76 -0
  15. package/dist/src/capabilities/tool-definition-validator/definition-shape.d.ts +7 -0
  16. package/dist/src/capabilities/tool-definition-validator/definition-shape.js +34 -0
  17. package/dist/src/capabilities/tool-definition-validator/event-presentation.d.ts +2 -0
  18. package/dist/src/capabilities/tool-definition-validator/event-presentation.js +97 -0
  19. package/dist/src/capabilities/tool-definition-validator/module-registry.d.ts +3 -0
  20. package/dist/src/capabilities/tool-definition-validator/module-registry.js +99 -0
  21. package/dist/src/capabilities/tool-definition-validator/payload-channel-spec.d.ts +2 -0
  22. package/dist/src/capabilities/tool-definition-validator/payload-channel-spec.js +190 -0
  23. package/dist/src/capabilities/tool-definition-validator/payload-channel-stage.d.ts +11 -0
  24. package/dist/src/capabilities/tool-definition-validator/payload-channel-stage.js +155 -0
  25. package/dist/src/capabilities/tool-definition-validator/payload-stage-conditions.d.ts +24 -0
  26. package/dist/src/capabilities/tool-definition-validator/payload-stage-conditions.js +193 -0
  27. package/dist/src/capabilities/tool-definition-validator.d.ts +2 -4
  28. package/dist/src/capabilities/tool-definition-validator.js +2 -776
  29. package/dist/src/cli/abot.js +11 -2
  30. package/dist/src/model-gateway/client/embeddings.d.ts +3 -0
  31. package/dist/src/model-gateway/client/embeddings.js +48 -0
  32. package/dist/src/model-gateway/client.d.ts +3 -1
  33. package/dist/src/model-gateway/client.js +5 -0
  34. package/dist/src/model-gateway/embeddings/constants.d.ts +1 -0
  35. package/dist/src/model-gateway/embeddings/constants.js +1 -0
  36. package/dist/src/model-gateway/embeddings/discovery.d.ts +10 -0
  37. package/dist/src/model-gateway/embeddings/discovery.js +39 -0
  38. package/dist/src/model-gateway/embeddings/execution.d.ts +16 -0
  39. package/dist/src/model-gateway/embeddings/execution.js +64 -0
  40. package/dist/src/model-gateway/embeddings/fingerprint.d.ts +3 -0
  41. package/dist/src/model-gateway/embeddings/fingerprint.js +36 -0
  42. package/dist/src/model-gateway/embeddings/profile.d.ts +11 -0
  43. package/dist/src/model-gateway/embeddings/profile.js +37 -0
  44. package/dist/src/model-gateway/embeddings/server-handler.d.ts +3 -0
  45. package/dist/src/model-gateway/embeddings/server-handler.js +89 -0
  46. package/dist/src/model-gateway/embeddings/validation.d.ts +7 -0
  47. package/dist/src/model-gateway/embeddings/validation.js +69 -0
  48. package/dist/src/model-gateway/index.d.ts +5 -3
  49. package/dist/src/model-gateway/index.js +3 -1
  50. package/dist/src/model-gateway/providers/contracts.d.ts +27 -1
  51. package/dist/src/model-gateway/providers/ollama/adapter.js +4 -0
  52. package/dist/src/model-gateway/providers/ollama/base-url.d.ts +1 -0
  53. package/dist/src/model-gateway/providers/ollama/base-url.js +4 -0
  54. package/dist/src/model-gateway/providers/ollama/embedding-models.d.ts +2 -0
  55. package/dist/src/model-gateway/providers/ollama/embedding-models.js +31 -0
  56. package/dist/src/model-gateway/providers/ollama/embeddings.d.ts +2 -0
  57. package/dist/src/model-gateway/providers/ollama/embeddings.js +43 -0
  58. package/dist/src/model-gateway/providers/ollama/request-diagnostics.js +2 -1
  59. package/dist/src/model-gateway/providers/openai/adapter.js +2 -0
  60. package/dist/src/model-gateway/providers/openai/embeddings.d.ts +2 -0
  61. package/dist/src/model-gateway/providers/openai/embeddings.js +87 -0
  62. package/dist/src/model-gateway/providers/openai/payload.js +5 -8
  63. package/dist/src/model-gateway/server/contracts.d.ts +5 -3
  64. package/dist/src/model-gateway/server/create-server.js +9 -0
  65. package/dist/src/model-gateway/server/errors.js +34 -0
  66. package/dist/src/model-gateway/server/index.d.ts +2 -0
  67. package/dist/src/model-gateway/server/index.js +2 -0
  68. package/dist/src/model-gateway/server/provider-fetch.d.ts +5 -3
  69. package/dist/src/model-gateway/server/provider-fetch.js +3 -1
  70. package/dist/src/model-gateway/server/request-body.d.ts +1 -1
  71. package/dist/src/model-gateway/types.d.ts +39 -0
  72. package/dist/src/plugin-contract/manifest.d.ts +1 -0
  73. package/dist/src/runtime/adapters/index.d.ts +4 -0
  74. package/dist/src/runtime/adapters/index.js +4 -0
  75. package/dist/src/runtime/adapters/long-term-memory/file-lock/acquisition.d.ts +2 -0
  76. package/dist/src/runtime/adapters/long-term-memory/file-lock/acquisition.js +77 -0
  77. package/dist/src/runtime/adapters/long-term-memory/file-lock/cleanup.d.ts +4 -0
  78. package/dist/src/runtime/adapters/long-term-memory/file-lock/cleanup.js +52 -0
  79. package/dist/src/runtime/adapters/long-term-memory/file-lock/contracts.d.ts +31 -0
  80. package/dist/src/runtime/adapters/long-term-memory/file-lock/contracts.js +17 -0
  81. package/dist/src/runtime/adapters/long-term-memory/file-lock/install.d.ts +1 -0
  82. package/dist/src/runtime/adapters/long-term-memory/file-lock/install.js +36 -0
  83. package/dist/src/runtime/adapters/long-term-memory/file-lock/owner-record.d.ts +2 -0
  84. package/dist/src/runtime/adapters/long-term-memory/file-lock/owner-record.js +114 -0
  85. package/dist/src/runtime/adapters/long-term-memory/file-lock/snapshot.d.ts +2 -0
  86. package/dist/src/runtime/adapters/long-term-memory/file-lock/snapshot.js +103 -0
  87. package/dist/src/runtime/adapters/long-term-memory/file-lock.d.ts +2 -0
  88. package/dist/src/runtime/adapters/long-term-memory/file-lock.js +10 -0
  89. package/dist/src/runtime/adapters/long-term-memory/file-repository.d.ts +2 -0
  90. package/dist/src/runtime/adapters/long-term-memory/file-repository.js +57 -0
  91. package/dist/src/runtime/adapters/long-term-memory/in-memory-repository.d.ts +2 -0
  92. package/dist/src/runtime/adapters/long-term-memory/in-memory-repository.js +21 -0
  93. package/dist/src/runtime/adapters/long-term-memory/onboarding-config-repository.d.ts +5 -0
  94. package/dist/src/runtime/adapters/long-term-memory/onboarding-config-repository.js +60 -0
  95. package/dist/src/runtime/adapters/long-term-memory/onboarding-service.d.ts +8 -0
  96. package/dist/src/runtime/adapters/long-term-memory/onboarding-service.js +34 -0
  97. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/run.d.ts +7 -1
  98. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/run.js +54 -25
  99. package/dist/src/runtime/adapters/registered-tool-normal-invocations/executor.js +18 -4
  100. package/dist/src/runtime/adapters/registered-tool-normal-invocations/payload/lifecycle.d.ts +6 -1
  101. package/dist/src/runtime/adapters/registered-tool-normal-invocations/payload/lifecycle.js +25 -12
  102. package/dist/src/runtime/adapters/registered-tool-normal-invocations/shared/action-fingerprint.d.ts +22 -0
  103. package/dist/src/runtime/adapters/registered-tool-normal-invocations/shared/action-fingerprint.js +65 -0
  104. package/dist/src/runtime/adapters/registered-tool-normal-invocations/shared/contracts.d.ts +44 -0
  105. package/dist/src/runtime/adapters/registered-tool-normal-invocations.d.ts +1 -1
  106. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/catalog.js +14 -4
  107. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/execution.js +218 -87
  108. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/failure-outcome-fingerprint.d.ts +7 -0
  109. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/failure-outcome-fingerprint.js +84 -0
  110. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-lifecycle.d.ts +5 -4
  111. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-lifecycle.js +7 -1
  112. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-observability.d.ts +35 -0
  113. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-observability.js +32 -0
  114. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-rejection.d.ts +3 -3
  115. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-rejection.js +13 -8
  116. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-stages.d.ts +5 -4
  117. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-stages.js +4 -2
  118. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/result-observer.js +12 -4
  119. package/dist/src/runtime/composition.d.ts +3 -0
  120. package/dist/src/runtime/composition.js +5 -2
  121. package/dist/src/runtime/config/builders.js +34 -1
  122. package/dist/src/runtime/config/effective-model-config-validation.js +9 -0
  123. package/dist/src/runtime/config/embedding-profiles.d.ts +5 -0
  124. package/dist/src/runtime/config/embedding-profiles.js +66 -0
  125. package/dist/src/runtime/config/fields.js +22 -0
  126. package/dist/src/runtime/config/long-term-memory.d.ts +9 -0
  127. package/dist/src/runtime/config/long-term-memory.js +71 -0
  128. package/dist/src/runtime/config/runner/config-normalization.d.ts +16 -0
  129. package/dist/src/runtime/config/runner/config-normalization.js +109 -0
  130. package/dist/src/runtime/config/runner/loader.d.ts +1 -1
  131. package/dist/src/runtime/config/runner/loader.js +2 -69
  132. package/dist/src/runtime/config/runner/model-policy.js +3 -0
  133. package/dist/src/runtime/config/runner/schema-version.d.ts +14 -0
  134. package/dist/src/runtime/config/runner/schema-version.js +35 -0
  135. package/dist/src/runtime/config/runner/versioned-config.d.ts +2 -0
  136. package/dist/src/runtime/config/runner/versioned-config.js +51 -0
  137. package/dist/src/runtime/config/schema.js +36 -0
  138. package/dist/src/runtime/config/types.d.ts +1 -0
  139. package/dist/src/runtime/config/validation/environment-config-validation.d.ts +1 -0
  140. package/dist/src/runtime/config/validation/environment-config-validation.js +41 -0
  141. package/dist/src/runtime/config/validation/model-invocation-config-validation.d.ts +2 -0
  142. package/dist/src/runtime/config/validation/model-invocation-config-validation.js +64 -0
  143. package/dist/src/runtime/config/validation/model-invocation-override-validation.d.ts +2 -0
  144. package/dist/src/runtime/config/validation/model-invocation-override-validation.js +72 -0
  145. package/dist/src/runtime/config/validation/model-profile-validation.d.ts +4 -0
  146. package/dist/src/runtime/config/validation/model-profile-validation.js +87 -0
  147. package/dist/src/runtime/config/validation/model-registry-validation.d.ts +2 -0
  148. package/dist/src/runtime/config/validation/model-registry-validation.js +118 -0
  149. package/dist/src/runtime/config/validation/path-config-validation.d.ts +1 -0
  150. package/dist/src/runtime/config/validation/path-config-validation.js +7 -0
  151. package/dist/src/runtime/config/validation/runtime-config-field-validation.d.ts +12 -0
  152. package/dist/src/runtime/config/validation/runtime-config-field-validation.js +158 -0
  153. package/dist/src/runtime/config/validation/runtime-config-validation-contract.d.ts +9 -0
  154. package/dist/src/runtime/config/validation/runtime-config-validation-contract.js +13 -0
  155. package/dist/src/runtime/config/validation/runtime-root-section-validation.d.ts +6 -0
  156. package/dist/src/runtime/config/validation/runtime-root-section-validation.js +82 -0
  157. package/dist/src/runtime/config/validation/web-ui-config-validation.d.ts +3 -0
  158. package/dist/src/runtime/config/validation/web-ui-config-validation.js +26 -0
  159. package/dist/src/runtime/config/validation.d.ts +4 -15
  160. package/dist/src/runtime/config/validation.js +27 -499
  161. package/dist/src/runtime/config.js +3 -0
  162. package/dist/src/runtime/context/accepted-capability-action.d.ts +11 -0
  163. package/dist/src/runtime/context/accepted-capability-action.js +29 -0
  164. package/dist/src/runtime/context/model-step-compaction.js +6 -0
  165. package/dist/src/runtime/context/operation-supervision-evidence.d.ts +37 -0
  166. package/dist/src/runtime/context/operation-supervision-evidence.js +90 -0
  167. package/dist/src/runtime/context/request-tool-results.d.ts +3 -0
  168. package/dist/src/runtime/context/request-tool-results.js +11 -2
  169. package/dist/src/runtime/default-adapters.d.ts +3 -0
  170. package/dist/src/runtime/default-adapters.js +64 -3
  171. package/dist/src/runtime/index.d.ts +1 -0
  172. package/dist/src/runtime/index.js +1 -0
  173. package/dist/src/runtime/lifecycle/request-finalizer.d.ts +3 -0
  174. package/dist/src/runtime/lifecycle/request-finalizer.js +8 -0
  175. package/dist/src/runtime/long-term-memory/background-save-queue.d.ts +17 -0
  176. package/dist/src/runtime/long-term-memory/background-save-queue.js +66 -0
  177. package/dist/src/runtime/long-term-memory/candidate-persistence.d.ts +16 -0
  178. package/dist/src/runtime/long-term-memory/candidate-persistence.js +109 -0
  179. package/dist/src/runtime/long-term-memory/candidate-preparation.d.ts +8 -0
  180. package/dist/src/runtime/long-term-memory/candidate-preparation.js +36 -0
  181. package/dist/src/runtime/long-term-memory/candidate-processing.d.ts +9 -0
  182. package/dist/src/runtime/long-term-memory/candidate-processing.js +79 -0
  183. package/dist/src/runtime/long-term-memory/contracts.d.ts +108 -0
  184. package/dist/src/runtime/long-term-memory/contracts.js +1 -0
  185. package/dist/src/runtime/long-term-memory/diagnostics.d.ts +9 -0
  186. package/dist/src/runtime/long-term-memory/diagnostics.js +42 -0
  187. package/dist/src/runtime/long-term-memory/embedding-batches.d.ts +13 -0
  188. package/dist/src/runtime/long-term-memory/embedding-batches.js +87 -0
  189. package/dist/src/runtime/long-term-memory/events.d.ts +13 -0
  190. package/dist/src/runtime/long-term-memory/events.js +15 -0
  191. package/dist/src/runtime/long-term-memory/finalization.d.ts +8 -0
  192. package/dist/src/runtime/long-term-memory/finalization.js +24 -0
  193. package/dist/src/runtime/long-term-memory/index.d.ts +6 -0
  194. package/dist/src/runtime/long-term-memory/index.js +6 -0
  195. package/dist/src/runtime/long-term-memory/management/contracts.d.ts +54 -0
  196. package/dist/src/runtime/long-term-memory/management/contracts.js +1 -0
  197. package/dist/src/runtime/long-term-memory/management/errors.d.ts +10 -0
  198. package/dist/src/runtime/long-term-memory/management/errors.js +13 -0
  199. package/dist/src/runtime/long-term-memory/management/mutations.d.ts +17 -0
  200. package/dist/src/runtime/long-term-memory/management/mutations.js +178 -0
  201. package/dist/src/runtime/long-term-memory/management/queries.d.ts +8 -0
  202. package/dist/src/runtime/long-term-memory/management/queries.js +46 -0
  203. package/dist/src/runtime/long-term-memory/management/search.d.ts +7 -0
  204. package/dist/src/runtime/long-term-memory/management/search.js +18 -0
  205. package/dist/src/runtime/long-term-memory/management/service.d.ts +13 -0
  206. package/dist/src/runtime/long-term-memory/management/service.js +61 -0
  207. package/dist/src/runtime/long-term-memory/management/validation.d.ts +24 -0
  208. package/dist/src/runtime/long-term-memory/management/validation.js +77 -0
  209. package/dist/src/runtime/long-term-memory/onboarding/configuration.d.ts +14 -0
  210. package/dist/src/runtime/long-term-memory/onboarding/configuration.js +92 -0
  211. package/dist/src/runtime/long-term-memory/onboarding/contracts.d.ts +52 -0
  212. package/dist/src/runtime/long-term-memory/onboarding/contracts.js +1 -0
  213. package/dist/src/runtime/long-term-memory/onboarding/service.d.ts +21 -0
  214. package/dist/src/runtime/long-term-memory/onboarding/service.js +88 -0
  215. package/dist/src/runtime/long-term-memory/policies/normalization.d.ts +10 -0
  216. package/dist/src/runtime/long-term-memory/policies/normalization.js +45 -0
  217. package/dist/src/runtime/long-term-memory/policies/reconciliation.d.ts +20 -0
  218. package/dist/src/runtime/long-term-memory/policies/reconciliation.js +21 -0
  219. package/dist/src/runtime/long-term-memory/policies/scoring.d.ts +13 -0
  220. package/dist/src/runtime/long-term-memory/policies/scoring.js +55 -0
  221. package/dist/src/runtime/long-term-memory/policies/sensitive-data.d.ts +5 -0
  222. package/dist/src/runtime/long-term-memory/policies/sensitive-data.js +12 -0
  223. package/dist/src/runtime/long-term-memory/projection.d.ts +4 -0
  224. package/dist/src/runtime/long-term-memory/projection.js +39 -0
  225. package/dist/src/runtime/long-term-memory/ranked-search.d.ts +11 -0
  226. package/dist/src/runtime/long-term-memory/ranked-search.js +111 -0
  227. package/dist/src/runtime/long-term-memory/repository-state.d.ts +4 -0
  228. package/dist/src/runtime/long-term-memory/repository-state.js +131 -0
  229. package/dist/src/runtime/long-term-memory/response-context.d.ts +5 -0
  230. package/dist/src/runtime/long-term-memory/response-context.js +21 -0
  231. package/dist/src/runtime/long-term-memory/retrieval.d.ts +8 -0
  232. package/dist/src/runtime/long-term-memory/retrieval.js +73 -0
  233. package/dist/src/runtime/long-term-memory/service.d.ts +10 -0
  234. package/dist/src/runtime/long-term-memory/service.js +83 -0
  235. package/dist/src/runtime/orchestration/capability-adapters/index.d.ts +2 -0
  236. package/dist/src/runtime/orchestration/capability-adapters/index.js +2 -0
  237. package/dist/src/runtime/orchestration/final-response/authoring-contract.d.ts +10 -0
  238. package/dist/src/runtime/orchestration/final-response/authoring-contract.js +94 -0
  239. package/dist/src/runtime/orchestration/final-response/finalization.d.ts +1 -0
  240. package/dist/src/runtime/orchestration/final-response/finalization.js +1 -0
  241. package/dist/src/runtime/orchestration/final-response/format.d.ts +2 -0
  242. package/dist/src/runtime/orchestration/final-response/format.js +49 -0
  243. package/dist/src/runtime/orchestration/final-response/invoke.d.ts +16 -0
  244. package/dist/src/runtime/orchestration/final-response/invoke.js +24 -0
  245. package/dist/src/runtime/orchestration/role-calls/activation-budget.d.ts +14 -0
  246. package/dist/src/runtime/orchestration/role-calls/activation-budget.js +52 -0
  247. package/dist/src/runtime/orchestration/role-calls/candidate-validation.js +154 -0
  248. package/dist/src/runtime/orchestration/role-calls/capability-selection-reconsideration.js +1 -8
  249. package/dist/src/runtime/orchestration/role-calls/capability-selection-supervision-issuance.d.ts +17 -0
  250. package/dist/src/runtime/orchestration/role-calls/capability-selection-supervision-issuance.js +155 -0
  251. package/dist/src/runtime/orchestration/role-calls/capability-selection-supervision.d.ts +78 -0
  252. package/dist/src/runtime/orchestration/role-calls/capability-selection-supervision.js +339 -0
  253. package/dist/src/runtime/orchestration/role-calls/command-decoder.js +35 -10
  254. package/dist/src/runtime/orchestration/role-calls/command-dispatch/active-capability-caller.d.ts +6 -0
  255. package/dist/src/runtime/orchestration/role-calls/command-dispatch/active-capability-caller.js +15 -0
  256. package/dist/src/runtime/orchestration/role-calls/command-dispatch/call-frame-state.d.ts +3 -0
  257. package/dist/src/runtime/orchestration/role-calls/command-dispatch/call-frame-state.js +6 -0
  258. package/dist/src/runtime/orchestration/role-calls/command-dispatch/call-scope-transitions.d.ts +3 -0
  259. package/dist/src/runtime/orchestration/role-calls/command-dispatch/call-scope-transitions.js +86 -0
  260. package/dist/src/runtime/orchestration/role-calls/command-dispatch/capability-batch-transitions.d.ts +3 -0
  261. package/dist/src/runtime/orchestration/role-calls/command-dispatch/capability-batch-transitions.js +172 -0
  262. package/dist/src/runtime/orchestration/role-calls/command-dispatch/capability-execution-state.d.ts +9 -0
  263. package/dist/src/runtime/orchestration/role-calls/command-dispatch/capability-execution-state.js +28 -0
  264. package/dist/src/runtime/orchestration/role-calls/command-dispatch/capability-execution-transitions.d.ts +3 -0
  265. package/dist/src/runtime/orchestration/role-calls/command-dispatch/capability-execution-transitions.js +117 -0
  266. package/dist/src/runtime/orchestration/role-calls/command-dispatch/capability-invocation.d.ts +4 -0
  267. package/dist/src/runtime/orchestration/role-calls/command-dispatch/capability-invocation.js +16 -0
  268. package/dist/src/runtime/orchestration/role-calls/command-dispatch/capability-selection-transition.d.ts +2 -0
  269. package/dist/src/runtime/orchestration/role-calls/command-dispatch/capability-selection-transition.js +114 -0
  270. package/dist/src/runtime/orchestration/role-calls/command-dispatch/capability-settlement.d.ts +6 -0
  271. package/dist/src/runtime/orchestration/role-calls/command-dispatch/capability-settlement.js +54 -0
  272. package/dist/src/runtime/orchestration/role-calls/command-dispatch/child-transitions.d.ts +3 -0
  273. package/dist/src/runtime/orchestration/role-calls/command-dispatch/child-transitions.js +206 -0
  274. package/dist/src/runtime/orchestration/role-calls/command-dispatch/operation-supervision-intervention.d.ts +13 -0
  275. package/dist/src/runtime/orchestration/role-calls/command-dispatch/operation-supervision-intervention.js +25 -0
  276. package/dist/src/runtime/orchestration/role-calls/command-dispatch/root-transitions.d.ts +3 -0
  277. package/dist/src/runtime/orchestration/role-calls/command-dispatch/root-transitions.js +70 -0
  278. package/dist/src/runtime/orchestration/role-calls/command-dispatch.d.ts +1 -1
  279. package/dist/src/runtime/orchestration/role-calls/command-dispatch.js +6 -580
  280. package/dist/src/runtime/orchestration/role-calls/contracts.d.ts +45 -5
  281. package/dist/src/runtime/orchestration/role-calls/contracts.js +2 -2
  282. package/dist/src/runtime/orchestration/role-calls/diagnostics.d.ts +4 -0
  283. package/dist/src/runtime/orchestration/role-calls/diagnostics.js +152 -1
  284. package/dist/src/runtime/orchestration/role-calls/index.d.ts +6 -0
  285. package/dist/src/runtime/orchestration/role-calls/index.js +6 -0
  286. package/dist/src/runtime/orchestration/role-calls/ledger.js +131 -7
  287. package/dist/src/runtime/orchestration/role-calls/operation-supervision-issuance.d.ts +11 -0
  288. package/dist/src/runtime/orchestration/role-calls/operation-supervision-issuance.js +66 -0
  289. package/dist/src/runtime/orchestration/role-calls/operation-supervision-projection.d.ts +16 -0
  290. package/dist/src/runtime/orchestration/role-calls/operation-supervision-projection.js +52 -0
  291. package/dist/src/runtime/orchestration/role-calls/operation-supervision-state-validation.d.ts +3 -0
  292. package/dist/src/runtime/orchestration/role-calls/operation-supervision-state-validation.js +151 -0
  293. package/dist/src/runtime/orchestration/role-calls/operation-supervision.d.ts +112 -0
  294. package/dist/src/runtime/orchestration/role-calls/operation-supervision.js +197 -0
  295. package/dist/src/runtime/orchestration/role-calls/reconsideration-cause.d.ts +26 -0
  296. package/dist/src/runtime/orchestration/role-calls/reconsideration-cause.js +127 -0
  297. package/dist/src/runtime/orchestration/role-calls/reducer-primitives.d.ts +1 -2
  298. package/dist/src/runtime/orchestration/role-calls/reducer-primitives.js +2 -12
  299. package/dist/src/runtime/orchestration/role-calls/reducer.js +19 -2
  300. package/dist/src/runtime/orchestration/role-calls/transactions.js +62 -5
  301. package/dist/src/runtime/orchestration/role-executors/activation/capability-continuation.d.ts +15 -0
  302. package/dist/src/runtime/orchestration/role-executors/activation/capability-continuation.js +73 -0
  303. package/dist/src/runtime/orchestration/role-executors/activation/loop.d.ts +0 -1
  304. package/dist/src/runtime/orchestration/role-executors/activation/loop.js +16 -54
  305. package/dist/src/runtime/orchestration/role-executors/activation/result-normalization.js +14 -0
  306. package/dist/src/runtime/orchestration/role-executors/activation/state-validation.d.ts +13 -1
  307. package/dist/src/runtime/orchestration/role-executors/activation/state-validation.js +137 -1
  308. package/dist/src/runtime/orchestration/role-executors/contracts.d.ts +7 -3
  309. package/dist/src/runtime/orchestration/role-executors/diagnostics.d.ts +2 -0
  310. package/dist/src/runtime/orchestration/role-executors/diagnostics.js +1 -6
  311. package/dist/src/runtime/orchestration/worker-capabilities/batch-selection.d.ts +10 -0
  312. package/dist/src/runtime/orchestration/worker-capabilities/batch-selection.js +8 -0
  313. package/dist/src/runtime/orchestration/worker-capabilities/binding/adapter-catalog.d.ts +14 -0
  314. package/dist/src/runtime/orchestration/worker-capabilities/binding/adapter-catalog.js +76 -0
  315. package/dist/src/runtime/orchestration/worker-capabilities/binding/adapter-normalization.d.ts +10 -0
  316. package/dist/src/runtime/orchestration/worker-capabilities/binding/adapter-normalization.js +160 -0
  317. package/dist/src/runtime/orchestration/worker-capabilities/binding/binding-rejection.d.ts +2 -0
  318. package/dist/src/runtime/orchestration/worker-capabilities/binding/binding-rejection.js +8 -0
  319. package/dist/src/runtime/orchestration/worker-capabilities/binding/bound-capability-session.d.ts +24 -0
  320. package/dist/src/runtime/orchestration/worker-capabilities/binding/bound-capability-session.js +100 -0
  321. package/dist/src/runtime/orchestration/worker-capabilities/binding/call-authority.d.ts +29 -0
  322. package/dist/src/runtime/orchestration/worker-capabilities/binding/call-authority.js +193 -0
  323. package/dist/src/runtime/orchestration/worker-capabilities/binding/create-binding.d.ts +11 -0
  324. package/dist/src/runtime/orchestration/worker-capabilities/binding/create-binding.js +109 -0
  325. package/dist/src/runtime/orchestration/worker-capabilities/binding/dependency-results.d.ts +2 -0
  326. package/dist/src/runtime/orchestration/worker-capabilities/binding/dependency-results.js +34 -0
  327. package/dist/src/runtime/orchestration/worker-capabilities/binding/invocation-preparation.d.ts +21 -0
  328. package/dist/src/runtime/orchestration/worker-capabilities/binding/invocation-preparation.js +167 -0
  329. package/dist/src/runtime/orchestration/worker-capabilities/binding.d.ts +1 -13
  330. package/dist/src/runtime/orchestration/worker-capabilities/binding.js +1 -625
  331. package/dist/src/runtime/orchestration/worker-capabilities/contracts.d.ts +57 -14
  332. package/dist/src/runtime/orchestration/worker-capabilities/contracts.js +3 -1
  333. package/dist/src/runtime/orchestration/worker-capabilities/controls.d.ts +7 -0
  334. package/dist/src/runtime/orchestration/worker-capabilities/controls.js +50 -0
  335. package/dist/src/runtime/orchestration/worker-capabilities/error-fingerprint.d.ts +5 -0
  336. package/dist/src/runtime/orchestration/worker-capabilities/error-fingerprint.js +119 -0
  337. package/dist/src/runtime/orchestration/worker-capabilities/errors.d.ts +6 -0
  338. package/dist/src/runtime/orchestration/worker-capabilities/errors.js +11 -0
  339. package/dist/src/runtime/orchestration/worker-capabilities/execution/adapter-exact-result.d.ts +7 -0
  340. package/dist/src/runtime/orchestration/worker-capabilities/execution/adapter-exact-result.js +35 -0
  341. package/dist/src/runtime/orchestration/worker-capabilities/execution/adapter-execution.d.ts +9 -0
  342. package/dist/src/runtime/orchestration/worker-capabilities/execution/adapter-execution.js +28 -0
  343. package/dist/src/runtime/orchestration/worker-capabilities/execution/adapter-result-normalization.d.ts +18 -0
  344. package/dist/src/runtime/orchestration/worker-capabilities/execution/adapter-result-normalization.js +197 -0
  345. package/dist/src/runtime/orchestration/worker-capabilities/execution/adapter-result-references.d.ts +2 -0
  346. package/dist/src/runtime/orchestration/worker-capabilities/execution/adapter-result-references.js +44 -0
  347. package/dist/src/runtime/orchestration/worker-capabilities/execution/context-projection.d.ts +12 -0
  348. package/dist/src/runtime/orchestration/worker-capabilities/execution/context-projection.js +51 -0
  349. package/dist/src/runtime/orchestration/worker-capabilities/execution/invocation-preparation.d.ts +25 -0
  350. package/dist/src/runtime/orchestration/worker-capabilities/execution/invocation-preparation.js +111 -0
  351. package/dist/src/runtime/orchestration/worker-capabilities/execution/ledger-transaction.d.ts +20 -0
  352. package/dist/src/runtime/orchestration/worker-capabilities/execution/ledger-transaction.js +142 -0
  353. package/dist/src/runtime/orchestration/worker-capabilities/execution.d.ts +10 -14
  354. package/dist/src/runtime/orchestration/worker-capabilities/execution.js +84 -357
  355. package/dist/src/runtime/orchestration/worker-capabilities/index.d.ts +3 -0
  356. package/dist/src/runtime/orchestration/worker-capabilities/index.js +3 -0
  357. package/dist/src/runtime/orchestration/worker-capabilities/outcome-fingerprint.d.ts +8 -0
  358. package/dist/src/runtime/orchestration/worker-capabilities/outcome-fingerprint.js +21 -0
  359. package/dist/src/runtime/orchestration/worker-capabilities/payload-author.js +31 -9
  360. package/dist/src/runtime/orchestration/worker-capabilities/payload-contracts.d.ts +15 -6
  361. package/dist/src/runtime/orchestration/worker-capabilities/payload-contracts.js +2 -0
  362. package/dist/src/runtime/orchestration/worker-capabilities/payload-instructions.js +4 -4
  363. package/dist/src/runtime/orchestration/worker-capabilities/preparation-fingerprint.d.ts +23 -0
  364. package/dist/src/runtime/orchestration/worker-capabilities/preparation-fingerprint.js +109 -0
  365. package/dist/src/runtime/plugins/manifest-projection.js +3 -0
  366. package/dist/src/runtime/plugins/manifest-validator.js +20 -0
  367. package/dist/src/runtime/ports.d.ts +10 -1
  368. package/dist/src/runtime/request/contracts.d.ts +7 -0
  369. package/dist/src/runtime/request/dependencies.d.ts +1 -0
  370. package/dist/src/runtime/request/dependencies.js +10 -1
  371. package/dist/src/runtime/request/execution-agent-root-execution.js +5 -4
  372. package/dist/src/runtime/request/execution-facets.d.ts +2 -1
  373. package/dist/src/runtime/request/execution-facets.js +6 -0
  374. package/dist/src/runtime/request/execution-scope-surfaces.js +6 -0
  375. package/dist/src/runtime/request/execution-scope.d.ts +3 -2
  376. package/dist/src/runtime/request/handler.js +4 -1
  377. package/dist/src/runtime/request/result.d.ts +2 -0
  378. package/dist/src/runtime/request/root-contract.d.ts +4 -2
  379. package/dist/src/runtime/request/root-execution-kernel.js +100 -31
  380. package/dist/src/runtime/request/supervisor-root-execution.js +4 -2
  381. package/dist/src/runtime/request/worker-capability-payload-prompts.js +1 -1
  382. package/dist/src/runtime/steps/execution-agent/capability-invocation-contract.d.ts +24 -0
  383. package/dist/src/runtime/steps/execution-agent/capability-invocation-contract.js +52 -0
  384. package/dist/src/runtime/steps/execution-agent/contracts.d.ts +5 -2
  385. package/dist/src/runtime/steps/execution-agent/format.js +19 -6
  386. package/dist/src/runtime/steps/execution-agent/input.js +8 -12
  387. package/dist/src/runtime/steps/execution-agent/parser.js +25 -19
  388. package/dist/src/runtime/steps/execution-agent/prompt.js +3 -2
  389. package/dist/src/runtime/steps/execution-agent/reconsideration-context.d.ts +3 -0
  390. package/dist/src/runtime/steps/execution-agent/reconsideration-context.js +76 -0
  391. package/dist/src/runtime/steps/execution-agent/refinement-prompt.js +4 -4
  392. package/dist/src/runtime/steps/execution-agent/refinement-reconsideration.d.ts +3 -0
  393. package/dist/src/runtime/steps/execution-agent/refinement-reconsideration.js +25 -0
  394. package/dist/src/runtime/steps/execution-agent/refinement.d.ts +4 -7
  395. package/dist/src/runtime/steps/execution-agent/refinement.js +24 -35
  396. package/dist/src/runtime/steps/execution-agent/response-input.d.ts +2 -0
  397. package/dist/src/runtime/steps/execution-agent/response-input.js +22 -6
  398. package/dist/src/runtime/steps/execution-agent/response-prompt.d.ts +1 -1
  399. package/dist/src/runtime/steps/execution-agent/response-prompt.js +8 -3
  400. package/dist/src/runtime/steps/execution-agent/response-run.d.ts +6 -0
  401. package/dist/src/runtime/steps/execution-agent/response-run.js +40 -10
  402. package/dist/src/runtime/steps/execution-agent/run.js +6 -6
  403. package/dist/src/runtime/steps/execution-agent/state-context.d.ts +4 -1
  404. package/dist/src/runtime/steps/execution-agent/state-context.js +40 -23
  405. package/dist/src/runtime/steps/supervisor-response/index.d.ts +1 -1
  406. package/dist/src/runtime/steps/supervisor-response/index.js +1 -1
  407. package/dist/src/runtime/steps/supervisor-response/input.d.ts +13 -5
  408. package/dist/src/runtime/steps/supervisor-response/input.js +27 -8
  409. package/dist/src/runtime/steps/supervisor-response/memory-authoring.d.ts +10 -0
  410. package/dist/src/runtime/steps/supervisor-response/memory-authoring.js +125 -0
  411. package/dist/src/runtime/steps/supervisor-response/prompt.d.ts +4 -0
  412. package/dist/src/runtime/steps/supervisor-response/prompt.js +19 -0
  413. package/dist/src/runtime/steps/supervisor-response/run.d.ts +8 -0
  414. package/dist/src/runtime/steps/supervisor-response/run.js +46 -17
  415. package/dist/src/runtime/steps/worker-decision/contracts.d.ts +8 -1
  416. package/dist/src/runtime/steps/worker-decision/contracts.js +3 -0
  417. package/dist/src/runtime/steps/worker-decision/format.d.ts +4 -0
  418. package/dist/src/runtime/steps/worker-decision/format.js +97 -22
  419. package/dist/src/runtime/steps/worker-decision/input/action-policy.d.ts +9 -0
  420. package/dist/src/runtime/steps/worker-decision/input/action-policy.js +15 -0
  421. package/dist/src/runtime/steps/worker-decision/input/canonical-state.d.ts +2 -2
  422. package/dist/src/runtime/steps/worker-decision/input/canonical-state.js +19 -7
  423. package/dist/src/runtime/steps/worker-decision/input/capability-selection.js +44 -3
  424. package/dist/src/runtime/steps/worker-decision/input/contract.d.ts +1 -0
  425. package/dist/src/runtime/steps/worker-decision/input/contract.js +12 -6
  426. package/dist/src/runtime/steps/worker-decision/input/diagnostic-projection.js +14 -5
  427. package/dist/src/runtime/steps/worker-decision/input/prompt-context.js +9 -6
  428. package/dist/src/runtime/steps/worker-decision/input/reference-context.js +21 -3
  429. package/dist/src/runtime/steps/worker-decision/input/session.js +2 -1
  430. package/dist/src/runtime/steps/worker-decision/input/types.d.ts +6 -1
  431. package/dist/src/runtime/steps/worker-decision/input.d.ts +2 -2
  432. package/dist/src/runtime/steps/worker-decision/input.js +1 -2
  433. package/dist/src/runtime/steps/worker-decision/parser/accepted-decision.d.ts +3 -0
  434. package/dist/src/runtime/steps/worker-decision/parser/accepted-decision.js +70 -0
  435. package/dist/src/runtime/steps/worker-decision/parser/action-validation.d.ts +4 -0
  436. package/dist/src/runtime/steps/worker-decision/parser/action-validation.js +55 -0
  437. package/dist/src/runtime/steps/worker-decision/parser/capability-batch-validation.d.ts +3 -0
  438. package/dist/src/runtime/steps/worker-decision/parser/capability-batch-validation.js +135 -0
  439. package/dist/src/runtime/steps/worker-decision/parser/capability-controls-validation.d.ts +6 -0
  440. package/dist/src/runtime/steps/worker-decision/parser/capability-controls-validation.js +132 -0
  441. package/dist/src/runtime/steps/worker-decision/parser/capability-invocation-validation.d.ts +4 -0
  442. package/dist/src/runtime/steps/worker-decision/parser/capability-invocation-validation.js +104 -0
  443. package/dist/src/runtime/steps/worker-decision/parser/decision-shape-validation.d.ts +4 -0
  444. package/dist/src/runtime/steps/worker-decision/parser/decision-shape-validation.js +28 -0
  445. package/dist/src/runtime/steps/worker-decision/parser/pending-capability-selection-validation.d.ts +4 -0
  446. package/dist/src/runtime/steps/worker-decision/parser/pending-capability-selection-validation.js +105 -0
  447. package/dist/src/runtime/steps/worker-decision/parser/validation-contract.d.ts +50 -0
  448. package/dist/src/runtime/steps/worker-decision/parser/validation-contract.js +19 -0
  449. package/dist/src/runtime/steps/worker-decision/parser.d.ts +5 -1
  450. package/dist/src/runtime/steps/worker-decision/parser.js +32 -426
  451. package/dist/src/runtime/steps/worker-decision/prompt.d.ts +3 -0
  452. package/dist/src/runtime/steps/worker-decision/prompt.js +57 -20
  453. package/dist/src/runtime/steps/worker-decision/result-author.js +11 -1
  454. package/dist/src/runtime/steps/worker-decision/run.js +97 -19
  455. package/dist/src/runtime/validation/strict-record.d.ts +2 -0
  456. package/dist/src/runtime/validation/strict-record.js +12 -0
  457. package/dist/src/shared/model-step-registry-data.json +9 -0
  458. package/dist/src/shared/model-step-registry.d.ts +9 -0
  459. package/dist/src/shared/model-step-registry.generated.d.ts +9 -0
  460. package/dist/src/shared/model-step-registry.generated.js +9 -0
  461. package/dist/src/web-ui/app/ARCHITECTURE.md +1 -1
  462. package/dist/src/web-ui/app/app.js +56 -11
  463. package/dist/src/web-ui/app/components/config-workspace/config-model.js +320 -0
  464. package/dist/src/web-ui/app/components/config-workspace/dashboard-rendering.js +155 -0
  465. package/dist/src/web-ui/app/components/config-workspace/field-rendering.js +278 -0
  466. package/dist/src/web-ui/app/components/config-workspace/model-rendering.js +251 -0
  467. package/dist/src/web-ui/app/components/config-workspace/step-rendering.js +145 -0
  468. package/dist/src/web-ui/app/components/config-workspace/workspace-events.js +271 -0
  469. package/dist/src/web-ui/app/components/config-workspace/workspace-mutations.js +195 -0
  470. package/dist/src/web-ui/app/components/config-workspace/workspace-persistence.js +247 -0
  471. package/dist/src/web-ui/app/components/config-workspace/workspace-view.js +299 -0
  472. package/dist/src/web-ui/app/components/config-workspace.js +179 -866
  473. package/dist/src/web-ui/app/components/conversation-activity.d.ts +7 -1
  474. package/dist/src/web-ui/app/components/long-term-memory/icons.js +16 -0
  475. package/dist/src/web-ui/app/components/long-term-memory/manager.js +192 -0
  476. package/dist/src/web-ui/app/components/long-term-memory/record-editor.d.ts +9 -0
  477. package/dist/src/web-ui/app/components/long-term-memory/record-editor.js +62 -0
  478. package/dist/src/web-ui/app/components/long-term-memory/record-list.d.ts +5 -0
  479. package/dist/src/web-ui/app/components/long-term-memory/record-list.js +97 -0
  480. package/dist/src/web-ui/app/components/long-term-memory/view-model.d.ts +29 -0
  481. package/dist/src/web-ui/app/components/long-term-memory/view-model.js +69 -0
  482. package/dist/src/web-ui/app/components/long-term-memory-setup.js +334 -0
  483. package/dist/src/web-ui/app/components/runtime-setup-guide.d.ts +39 -0
  484. package/dist/src/web-ui/app/components/tool-approval-card.d.ts +18 -0
  485. package/dist/src/web-ui/app/components/workspace-shell.js +48 -7
  486. package/dist/src/web-ui/app/controllers/app-event-bindings.js +43 -6
  487. package/dist/src/web-ui/app/controllers/composer-attachments-controller.d.ts +92 -0
  488. package/dist/src/web-ui/app/controllers/composer-queue-controller.d.ts +109 -0
  489. package/dist/src/web-ui/app/controllers/composer-submit-controller.d.ts +77 -0
  490. package/dist/src/web-ui/app/controllers/conversation-session-controller.d.ts +149 -0
  491. package/dist/src/web-ui/app/controllers/conversation-session-controller.js +43 -3
  492. package/dist/src/web-ui/app/controllers/long-term-memory/controller.d.ts +87 -0
  493. package/dist/src/web-ui/app/controllers/long-term-memory/controller.js +302 -0
  494. package/dist/src/web-ui/app/controllers/long-term-memory/policy.d.ts +14 -0
  495. package/dist/src/web-ui/app/controllers/long-term-memory/policy.js +61 -0
  496. package/dist/src/web-ui/app/controllers/long-term-memory/state.js +85 -0
  497. package/dist/src/web-ui/app/controllers/operations-controller.d.ts +25 -0
  498. package/dist/src/web-ui/app/controllers/realtime-event-controller.d.ts +57 -0
  499. package/dist/src/web-ui/app/controllers/runtime-onboarding-controller.d.ts +32 -0
  500. package/dist/src/web-ui/app/controllers/runtime-selection-controller.d.ts +177 -0
  501. package/dist/src/web-ui/app/controllers/runtime-selection-controller.js +78 -11
  502. package/dist/src/web-ui/app/controllers/tool-approval-controller.d.ts +28 -0
  503. package/dist/src/web-ui/app/index.html +13 -15
  504. package/dist/src/web-ui/app/services/runtime-web-client/memory.js +127 -0
  505. package/dist/src/web-ui/app/services/runtime-web-client.d.ts +84 -0
  506. package/dist/src/web-ui/app/services/runtime-web-client.js +27 -1
  507. package/dist/src/web-ui/app/styles/30-inspector-config.css +151 -1423
  508. package/dist/src/web-ui/app/styles/35-memory-onboarding.css +153 -0
  509. package/dist/src/web-ui/app/styles/36-memory-management.css +419 -0
  510. package/dist/src/web-ui/app/styles/40-config-workspace.css +992 -0
  511. package/dist/src/web-ui/app/styles/90-responsive.css +187 -26
  512. package/dist/src/web-ui/app/styles.css +3 -0
  513. package/dist/src/web-ui/config-dashboard-backend.js +9 -1
  514. package/dist/src/web-ui/local-runtime/api-router.d.ts +4 -2
  515. package/dist/src/web-ui/local-runtime/api-router.js +33 -0
  516. package/dist/src/web-ui/local-runtime/contracts.d.ts +5 -0
  517. package/dist/src/web-ui/local-runtime/memory-management-input.d.ts +12 -0
  518. package/dist/src/web-ui/local-runtime/memory-management-input.js +68 -0
  519. package/dist/src/web-ui/local-runtime/memory-management-response.d.ts +17 -0
  520. package/dist/src/web-ui/local-runtime/memory-management-response.js +47 -0
  521. package/dist/src/web-ui/local-runtime/memory-management-routes.d.ts +24 -0
  522. package/dist/src/web-ui/local-runtime/memory-management-routes.js +128 -0
  523. package/dist/src/web-ui/local-runtime/memory-onboarding-routes.d.ts +17 -0
  524. package/dist/src/web-ui/local-runtime/memory-onboarding-routes.js +81 -0
  525. package/dist/src/web-ui/local-runtime/request-abort.d.ts +7 -0
  526. package/dist/src/web-ui/local-runtime/request-abort.js +19 -0
  527. package/dist/src/web-ui/local-runtime-backend.js +10 -3
  528. package/dist/src/web-ui/server.d.ts +2 -0
  529. package/dist/src/web-ui/server.js +3 -0
  530. package/docs/configuration.md +128 -45
  531. package/docs/installation.md +21 -0
  532. package/docs/known-limitations.md +11 -0
  533. package/docs/long-term-memory.md +181 -0
  534. package/docs/publishing.md +52 -25
  535. package/docs/runtime-invariant-coverage.md +1 -1
  536. package/docs/runtime-library.md +16 -1
  537. package/docs/runtime-prompt-policy-contracts.md +12 -2
  538. package/docs/troubleshooting.md +21 -0
  539. package/examples/models/default.config.json +1 -0
  540. package/examples/request-runner.config.example.json +16 -22
  541. package/examples/runtime.config.example.json +4 -0
  542. package/methodologies/memory-informed-response.md +15 -0
  543. package/methodologies/response-ux.md +17 -0
  544. package/package.json +8 -2
  545. package/plugins/exec/source/handlers.ts +65 -5
  546. package/plugins/exec/src/index.cjs +39 -3
  547. package/plugins/filesystem/plugin.json +1 -0
  548. package/runtime.config.schema.json +30 -0
  549. package/src/runtime/README.md +77 -38
@@ -1,8 +1,11 @@
1
1
  import type { CanonicalStateHead, CanonicalStateHeadTransactionFailureCode } from "../state-head.js";
2
2
  import type { CapabilityAdapterResult } from "../capability-adapters/result.js";
3
3
  import type { RuntimeDelegateRoleId, RuntimeRoleId } from "../roles.js";
4
- export declare const ROLE_CALL_LEDGER_CONTRACT_VERSION = 11;
5
- export declare const ROLE_CALL_LEDGER_HEAD_KIND: "runtime_role_call_ledger_v11";
4
+ import type { RoleOperationFingerprint, RoleOperationOutcomeFingerprint, RoleOperationSupervisionState } from "./operation-supervision.js";
5
+ import type { RoleCapabilitySelectionSupervisionStage, RoleCapabilitySelectionSupervisionState, RoleCapabilitySelectionSupervisionTrigger } from "./capability-selection-supervision.js";
6
+ import type { RoleCapabilitySelectionReconsiderationCause } from "./reconsideration-cause.js";
7
+ export declare const ROLE_CALL_LEDGER_CONTRACT_VERSION = 15;
8
+ export declare const ROLE_CALL_LEDGER_HEAD_KIND: "runtime_role_call_ledger_v15";
6
9
  export declare const ROLE_CALL_OBJECTIVE_MAX_LENGTH = 8192;
7
10
  export declare const ROLE_CALL_RESULT_MAX_LENGTH = 8192;
8
11
  export declare const ROLE_CALL_RESPONSE_MAX_LENGTH = 65536;
@@ -68,6 +71,7 @@ export type RoleCapabilitySelectionReconsideration = Readonly<{
68
71
  steeringVersion: number;
69
72
  fingerprint: string;
70
73
  selection: RoleCapabilitySelectionProjection;
74
+ cause: RoleCapabilitySelectionReconsiderationCause;
71
75
  }>;
72
76
  export type RoleCallFrame = Readonly<{
73
77
  callId: string;
@@ -153,8 +157,10 @@ export type RoleCapabilityExecution = Readonly<{
153
157
  declaredEffect: RoleCapabilityDeclaredEffect;
154
158
  intent: string;
155
159
  controlsJson: string;
160
+ actionFingerprint?: RoleOperationFingerprint;
156
161
  status: RoleCapabilityExecutionStatus;
157
162
  outcome: RoleCapabilityExecutionOutcome | null;
163
+ outcomeFingerprint: RoleOperationOutcomeFingerprint | null;
158
164
  observedEffect: RoleCapabilityObservedEffect | null;
159
165
  summary: string | null;
160
166
  referenceData?: string;
@@ -175,6 +181,8 @@ export type RoleCallState = Readonly<{
175
181
  results: readonly RoleCallResult[];
176
182
  plans: readonly RoleCallPlanState[];
177
183
  capabilityExecutions: readonly RoleCapabilityExecution[];
184
+ operationSupervision: RoleOperationSupervisionState;
185
+ capabilitySelectionSupervision: RoleCapabilitySelectionSupervisionState;
178
186
  rootResponse: string | null;
179
187
  }>;
180
188
  export type RoleCallLedgerHead = CanonicalStateHead<typeof ROLE_CALL_LEDGER_HEAD_KIND, RoleCallState, RoleCallPolicy>;
@@ -216,6 +224,7 @@ export type BeginRoleCapabilityExecutionCommand = Readonly<{
216
224
  declaredEffect: RoleCapabilityDeclaredEffect;
217
225
  intent: string;
218
226
  controlsJson: string;
227
+ actionFingerprint?: RoleOperationFingerprint;
219
228
  }>;
220
229
  export type SettleRoleCapabilityExecutionCommand = Readonly<{
221
230
  authority: "runtime";
@@ -223,6 +232,7 @@ export type SettleRoleCapabilityExecutionCommand = Readonly<{
223
232
  callId: string;
224
233
  executionId: string;
225
234
  outcome: RoleCapabilityExecutionOutcome;
235
+ outcomeFingerprint?: RoleOperationOutcomeFingerprint;
226
236
  observedEffect: RoleCapabilityObservedEffect;
227
237
  summary: string;
228
238
  referenceData?: string;
@@ -234,6 +244,7 @@ export type RoleCapabilityObservationBatchEntry = Readonly<{
234
244
  declaredEffect: "observation";
235
245
  intent: string;
236
246
  controlsJson: string;
247
+ actionFingerprint?: RoleOperationFingerprint;
237
248
  }>;
238
249
  export type BeginRoleCapabilityBatchCommand = Readonly<{
239
250
  authority: "active_role";
@@ -245,6 +256,7 @@ export type BeginRoleCapabilityBatchCommand = Readonly<{
245
256
  export type RoleCapabilityBatchSettlement = Readonly<{
246
257
  executionId: string;
247
258
  outcome: RoleCapabilityExecutionOutcome;
259
+ outcomeFingerprint?: RoleOperationOutcomeFingerprint;
248
260
  observedEffect: RoleCapabilityObservedEffect;
249
261
  summary: string;
250
262
  referenceData?: string;
@@ -279,6 +291,7 @@ export type ReconsiderRoleCapabilitySelectionCommand = Readonly<{
279
291
  invocationAttempt: number;
280
292
  steeringVersion: number;
281
293
  selection: RoleCapabilitySelectionProjection;
294
+ cause: RoleCapabilitySelectionReconsiderationCause;
282
295
  }>;
283
296
  export type RoleCallLedgerCommand = CreateRootRoleCallCommand | CompleteRootResponseCommand | OpenChildRoleCallCommand | ReturnChildRoleCallCommand | BeginRoleCapabilityExecutionCommand | SettleRoleCapabilityExecutionCommand | BeginRoleCapabilityBatchCommand | SettleRoleCapabilityBatchCommand | UpdateRoleCapabilityScopeCommand | EstablishRoleCallWorkingDirectoryCommand | ReconsiderRoleCapabilitySelectionCommand;
284
297
  export type RoleCallCommitEffect = Readonly<{
@@ -302,6 +315,17 @@ export type RoleCallCommitEffect = Readonly<{
302
315
  type: "capability_execution_begun";
303
316
  callId: string;
304
317
  executionId: string;
318
+ }> | Readonly<{
319
+ type: "operation_supervision_intervened";
320
+ callId: string;
321
+ invocationAttempt: number;
322
+ capabilityId: string;
323
+ actionFingerprint: RoleOperationFingerprint;
324
+ priorOutcome: RoleCapabilityExecutionOutcome;
325
+ outcomeFingerprint: RoleOperationOutcomeFingerprint;
326
+ originExecutionId: string;
327
+ matchingOutcomeCount: 2;
328
+ interventionCount: 1;
305
329
  }> | Readonly<{
306
330
  type: "capability_execution_settled";
307
331
  callId: string;
@@ -327,12 +351,17 @@ export type RoleCallCommitEffect = Readonly<{
327
351
  callId: string;
328
352
  invocationAttempt: number;
329
353
  fingerprint: string;
354
+ supervisionFingerprint: string;
355
+ supervisionStage: RoleCapabilitySelectionSupervisionStage;
356
+ supervisionTrigger: RoleCapabilitySelectionSupervisionTrigger;
357
+ matchingSelectionCount: number;
358
+ totalReconsiderationCount: number;
330
359
  }>;
331
360
  export type RoleCallValidationIssue = Readonly<{
332
361
  code: string;
333
362
  path: string;
334
363
  }>;
335
- export type RoleCallTransitionRejectionCode = "invalid_current_state" | "invalid_policy" | "invalid_command" | "root_already_created" | "root_missing" | "caller_not_active" | "root_response_not_allowed" | "supervisor_child_forbidden" | "child_role_not_authorized" | "child_dependency_invalid" | "planner_plan_binding_invalid" | "planner_plan_already_declared" | "planner_plan_missing" | "planner_plan_item_unavailable" | "planner_plan_incomplete" | "depth_limit_exceeded" | "call_limit_exceeded" | "child_return_mismatch" | "capability_caller_invalid" | "capability_invocation_mismatch" | "capability_execution_limit_exceeded" | "capability_execution_mismatch" | "capability_scope_update_invalid" | "working_directory_establishment_invalid" | "capability_selection_reconsideration_invalid";
364
+ export type RoleCallTransitionRejectionCode = "invalid_current_state" | "invalid_policy" | "invalid_command" | "root_already_created" | "root_missing" | "caller_not_active" | "root_response_not_allowed" | "supervisor_child_forbidden" | "child_role_not_authorized" | "child_dependency_invalid" | "planner_plan_binding_invalid" | "planner_plan_already_declared" | "planner_plan_missing" | "planner_plan_item_unavailable" | "planner_plan_incomplete" | "depth_limit_exceeded" | "call_limit_exceeded" | "child_return_mismatch" | "capability_caller_invalid" | "capability_invocation_mismatch" | "capability_execution_limit_exceeded" | "capability_execution_mismatch" | "capability_scope_update_invalid" | "working_directory_establishment_invalid" | "capability_selection_reconsideration_invalid" | "capability_selection_supervision_limit_exceeded" | "operation_supervision_limit_exceeded" | "role_activation_limit_exceeded";
336
365
  export type RoleCallTransitionResult = Readonly<{
337
366
  ok: true;
338
367
  state: RoleCallState;
@@ -375,6 +404,16 @@ export type RoleCallLedgerCommitObservers = Readonly<{
375
404
  export type RoleCallTransactionInput<TCommand extends RoleCallLedgerCommand> = Readonly<{
376
405
  expectedHead: unknown;
377
406
  } & Omit<TCommand, "authority" | "type">>;
407
+ /** Transient root fence evaluated after ledger-head admission and before transition. */
408
+ export type RoleCallCapabilityExecutionAdmission = Readonly<{
409
+ isCurrent(): boolean;
410
+ }>;
411
+ export type BeginRoleCapabilityExecutionTransactionInput = RoleCallTransactionInput<BeginRoleCapabilityExecutionCommand> & Readonly<{
412
+ admission?: RoleCallCapabilityExecutionAdmission;
413
+ }>;
414
+ export type BeginRoleCapabilityBatchTransactionInput = RoleCallTransactionInput<BeginRoleCapabilityBatchCommand> & Readonly<{
415
+ admission?: RoleCallCapabilityExecutionAdmission;
416
+ }>;
378
417
  export type RoleCallTransactionSuccess<TEffectType extends RoleCallCommitEffect["type"]> = Readonly<{
379
418
  ok: true;
380
419
  commit: RoleCallLedgerCommit & Readonly<{
@@ -398,9 +437,9 @@ export type RoleCallTransactions = Readonly<{
398
437
  completeRootResponse(input: RoleCallTransactionInput<CompleteRootResponseCommand>): Promise<RoleCallTransactionResult<"root_response_committed", "root_response_transition_invalid">>;
399
438
  openChild(input: RoleCallTransactionInput<OpenChildRoleCallCommand>): Promise<RoleCallTransactionResult<"child_opened", "child_open_transition_invalid">>;
400
439
  returnChild(input: RoleCallTransactionInput<ReturnChildRoleCallCommand>): Promise<RoleCallTransactionResult<"child_returned", "child_return_transition_invalid">>;
401
- beginCapabilityExecution(input: RoleCallTransactionInput<BeginRoleCapabilityExecutionCommand>): Promise<RoleCallTransactionResult<"capability_execution_begun", "commit_effect_invalid">>;
440
+ beginCapabilityExecution(input: BeginRoleCapabilityExecutionTransactionInput): Promise<RoleCallTransactionResult<"capability_execution_begun" | "operation_supervision_intervened", "commit_effect_invalid">>;
402
441
  settleCapabilityExecution(input: RoleCallTransactionInput<SettleRoleCapabilityExecutionCommand>): Promise<RoleCallTransactionResult<"capability_execution_settled", "commit_effect_invalid">>;
403
- beginCapabilityBatch(input: RoleCallTransactionInput<BeginRoleCapabilityBatchCommand>): Promise<RoleCallTransactionResult<"capability_batch_begun", "commit_effect_invalid">>;
442
+ beginCapabilityBatch(input: BeginRoleCapabilityBatchTransactionInput): Promise<RoleCallTransactionResult<"capability_batch_begun" | "operation_supervision_intervened", "commit_effect_invalid">>;
404
443
  settleCapabilityBatch(input: RoleCallTransactionInput<SettleRoleCapabilityBatchCommand>): Promise<RoleCallTransactionResult<"capability_batch_settled", "commit_effect_invalid">>;
405
444
  updateCapabilityScope(input: RoleCallTransactionInput<UpdateRoleCapabilityScopeCommand>): Promise<RoleCallTransactionResult<"capability_scope_updated", "capability_scope_transition_invalid">>;
406
445
  establishWorkingDirectory(input: RoleCallTransactionInput<EstablishRoleCallWorkingDirectoryCommand>): Promise<RoleCallTransactionResult<"working_directory_established", "working_directory_transition_invalid">>;
@@ -414,5 +453,6 @@ export type RoleCallLedger = Readonly<{
414
453
  apply(input: Readonly<{
415
454
  expectedHead: unknown;
416
455
  command: unknown;
456
+ capabilityExecutionAdmission?: RoleCallCapabilityExecutionAdmission;
417
457
  }>): Promise<RoleCallLedgerCommitResult>;
418
458
  }>;
@@ -1,5 +1,5 @@
1
- export const ROLE_CALL_LEDGER_CONTRACT_VERSION = 11;
2
- export const ROLE_CALL_LEDGER_HEAD_KIND = "runtime_role_call_ledger_v11";
1
+ export const ROLE_CALL_LEDGER_CONTRACT_VERSION = 15;
2
+ export const ROLE_CALL_LEDGER_HEAD_KIND = "runtime_role_call_ledger_v15";
3
3
  export const ROLE_CALL_OBJECTIVE_MAX_LENGTH = 8_192;
4
4
  export const ROLE_CALL_RESULT_MAX_LENGTH = 8_192;
5
5
  export const ROLE_CALL_RESPONSE_MAX_LENGTH = 65_536;
@@ -4,7 +4,11 @@ export type RoleCallRejectedCommandDiagnostic = Readonly<{
4
4
  attemptedDependencyResultRefs?: readonly string[];
5
5
  attemptedExecutionId?: string;
6
6
  attemptedInvocationAttempt?: number;
7
+ attemptedSteeringVersion?: number;
7
8
  attemptedCapabilityId?: string;
9
+ attemptedActionFingerprint?: string;
10
+ attemptedSelectionReceiptFingerprint?: string;
11
+ attemptedSelectionSupervisionFingerprint?: string;
8
12
  attemptedPlanMode?: "declare" | "select" | "extend";
9
13
  attemptedPlanItemIds?: readonly string[];
10
14
  attemptedPlanItemCount?: number;
@@ -1,7 +1,10 @@
1
1
  import { traceDebug } from "../../observability/debug-logger.js";
2
+ import { resolveRoleActivationBudget } from "./activation-budget.js";
3
+ import { isSuccessfulObservedMutation } from "./operation-supervision.js";
2
4
  const ROLE_CALL_LOG_SCOPE = "runtime.role_calls";
3
5
  export function traceRoleCallCommit(params) {
4
6
  const state = params.head.state;
7
+ const activationBudget = resolveRoleActivationBudget(state, params.head.policy);
5
8
  const common = {
6
9
  requestId: state.requestId,
7
10
  previousRevision: params.previousHead.revision,
@@ -15,11 +18,13 @@ export function traceRoleCallCommit(params) {
15
18
  maxCalls: params.head.policy.limits.maxCalls,
16
19
  maxCapabilityExecutions: params.head.policy.limits.maxCapabilityExecutions,
17
20
  maxDepth: params.head.policy.limits.maxDepth,
21
+ ...activationBudget,
18
22
  };
19
23
  traceDebug(ROLE_CALL_LOG_SCOPE, "transition.committed", {
20
24
  ...common,
21
25
  effectType: params.effect.type,
22
26
  });
27
+ traceCapabilitySelectionSupervisionReset(params, common);
23
28
  switch (params.effect.type) {
24
29
  case "root_created": {
25
30
  traceDebug(ROLE_CALL_LOG_SCOPE, "root.created", {
@@ -108,6 +113,7 @@ export function traceRoleCallCommit(params) {
108
113
  invocationAttempt: execution?.invocationAttempt,
109
114
  capabilityId: execution?.capabilityId,
110
115
  declaredEffect: execution?.declaredEffect,
116
+ actionFingerprint: execution?.actionFingerprint,
111
117
  });
112
118
  traceDebug(ROLE_CALL_LOG_SCOPE, "caller.suspended", {
113
119
  ...common,
@@ -116,6 +122,23 @@ export function traceRoleCallCommit(params) {
116
122
  });
117
123
  return;
118
124
  }
125
+ case "operation_supervision_intervened": {
126
+ const call = findCall(params.head, params.effect.callId);
127
+ traceDebug(ROLE_CALL_LOG_SCOPE, "operation.supervision_intervened", {
128
+ ...common,
129
+ callId: params.effect.callId,
130
+ invocationAttempt: params.effect.invocationAttempt,
131
+ capabilityId: params.effect.capabilityId,
132
+ actionFingerprint: params.effect.actionFingerprint,
133
+ priorOutcome: params.effect.priorOutcome,
134
+ outcomeFingerprint: params.effect.outcomeFingerprint,
135
+ originExecutionId: params.effect.originExecutionId,
136
+ matchingOutcomeCount: params.effect.matchingOutcomeCount,
137
+ interventionCount: params.effect.interventionCount,
138
+ activationCount: call?.activationCount,
139
+ });
140
+ return;
141
+ }
119
142
  case "capability_execution_settled": {
120
143
  const execution = findCapabilityExecution(params.head, params.effect.executionId);
121
144
  const call = findCall(params.head, params.effect.callId);
@@ -126,10 +149,28 @@ export function traceRoleCallCommit(params) {
126
149
  invocationAttempt: execution?.invocationAttempt,
127
150
  capabilityId: execution?.capabilityId,
128
151
  declaredEffect: execution?.declaredEffect,
152
+ actionFingerprint: execution?.actionFingerprint,
129
153
  outcome: execution?.outcome,
154
+ outcomeFingerprint: execution?.outcomeFingerprint,
130
155
  observedEffect: execution?.observedEffect,
131
156
  summaryLength: execution?.summary?.length ?? 0,
132
157
  });
158
+ if (execution &&
159
+ isSuccessfulObservedMutation(execution) &&
160
+ didClearOperationSupervision(params)) {
161
+ traceDebug(ROLE_CALL_LOG_SCOPE, "operation.supervision_reset", {
162
+ ...common,
163
+ callId: params.effect.callId,
164
+ executionId: params.effect.executionId,
165
+ invocationAttempt: execution.invocationAttempt,
166
+ capabilityId: execution.capabilityId,
167
+ actionFingerprint: execution.actionFingerprint,
168
+ cause: "successful_observed_mutation",
169
+ clearedEntryCount: params.previousHead.state.operationSupervision.entries.length,
170
+ clearedInterventionCount: params.previousHead.state.operationSupervision.interventions.length,
171
+ activationCount: call?.activationCount,
172
+ });
173
+ }
133
174
  traceDebug(ROLE_CALL_LOG_SCOPE, "caller.resumed", {
134
175
  ...common,
135
176
  callId: params.effect.callId,
@@ -167,6 +208,7 @@ export function traceRoleCallCommit(params) {
167
208
  invocationAttempt: executions[0]?.invocationAttempt,
168
209
  capabilityIds: executions.map((execution) => execution?.capabilityId),
169
210
  outcomes: executions.map((execution) => execution?.outcome),
211
+ outcomeFingerprints: executions.map((execution) => execution?.outcomeFingerprint),
170
212
  observedEffects: executions.map((execution) => execution?.observedEffect),
171
213
  summaryLength: executions.reduce((total, execution) => total + (execution?.summary?.length ?? 0), 0),
172
214
  });
@@ -203,17 +245,46 @@ export function traceRoleCallCommit(params) {
203
245
  }
204
246
  case "capability_selection_reconsidered": {
205
247
  const call = findCall(params.head, params.effect.callId);
248
+ const reconsideration = call?.lastCapabilitySelectionReconsideration;
249
+ const cause = reconsideration?.cause;
206
250
  traceDebug(ROLE_CALL_LOG_SCOPE, "capability.selection_reconsidered", {
207
251
  ...common,
208
252
  callId: params.effect.callId,
209
253
  invocationAttempt: params.effect.invocationAttempt,
254
+ steeringVersion: reconsideration?.steeringVersion,
210
255
  selectionFingerprint: params.effect.fingerprint,
256
+ selectionReceiptFingerprint: params.effect.fingerprint,
257
+ selectionSupervisionFingerprint: params.effect.supervisionFingerprint,
258
+ selectionSupervisionStage: params.effect.supervisionStage,
259
+ selectionSupervisionTrigger: params.effect.supervisionTrigger,
260
+ matchingSelectionCount: params.effect.matchingSelectionCount,
261
+ totalReconsiderationCount: params.effect.totalReconsiderationCount,
211
262
  activationCount: call?.activationCount,
263
+ causeKind: cause?.kind,
264
+ ...(cause?.kind === "refinement_declined"
265
+ ? { declinedInvocationCount: cause.entries.length }
266
+ : {}),
267
+ ...(cause?.kind === "refinement_invalid_output"
268
+ ? {
269
+ validationStage: cause.validationStage,
270
+ issueCount: cause.issues.length,
271
+ repairAttempts: cause.repairAttempts,
272
+ repeatedInvalidOutput: cause.repeatedInvalidOutput,
273
+ }
274
+ : {}),
212
275
  });
213
276
  return;
214
277
  }
215
278
  }
216
279
  }
280
+ function didClearOperationSupervision(params) {
281
+ const previous = params.previousHead.state.operationSupervision;
282
+ const current = params.head.state.operationSupervision;
283
+ const hadSupervisionEvidence = previous.entries.length > 0 || previous.interventions.length > 0;
284
+ return (hadSupervisionEvidence &&
285
+ current.entries.length === 0 &&
286
+ current.interventions.length === 0);
287
+ }
217
288
  export function traceRoleCallCommitFault(params) {
218
289
  traceDebug(ROLE_CALL_LOG_SCOPE, "transition.committed_with_fault", {
219
290
  requestId: params.head.state.requestId,
@@ -233,10 +304,12 @@ export function traceRoleCallCommitFault(params) {
233
304
  });
234
305
  }
235
306
  export function traceRoleCallRejection(params) {
307
+ const activationBudget = resolveRoleActivationBudget(params.head.state, params.head.policy);
236
308
  const execution = params.command.attemptedExecutionId
237
309
  ? findCapabilityExecution(params.head, params.command.attemptedExecutionId)
238
310
  : undefined;
239
- traceDebug(ROLE_CALL_LOG_SCOPE, "transition.rejected", {
311
+ const selectionSupervision = projectRejectedCapabilitySelectionSupervision(params);
312
+ const rejectionDiagnostic = {
240
313
  requestId: params.head.state.requestId,
241
314
  revision: params.head.revision,
242
315
  phase: params.head.state.phase,
@@ -244,7 +317,9 @@ export function traceRoleCallRejection(params) {
244
317
  activeCallId: params.head.state.activeCallId,
245
318
  commandType: params.commandType,
246
319
  rejectionCode: params.code,
320
+ ...activationBudget,
247
321
  ...params.command,
322
+ ...selectionSupervision,
248
323
  ...(execution
249
324
  ? {
250
325
  capabilityId: execution.capabilityId,
@@ -260,6 +335,82 @@ export function traceRoleCallRejection(params) {
260
335
  maxCalls: params.head.policy.limits.maxCalls,
261
336
  maxCapabilityExecutions: params.head.policy.limits.maxCapabilityExecutions,
262
337
  maxDepth: params.head.policy.limits.maxDepth,
338
+ };
339
+ traceDebug(ROLE_CALL_LOG_SCOPE, "transition.rejected", rejectionDiagnostic);
340
+ if (params.code === "capability_selection_supervision_limit_exceeded") {
341
+ traceDebug(ROLE_CALL_LOG_SCOPE, "capability_selection.supervision_terminal", rejectionDiagnostic);
342
+ }
343
+ }
344
+ function traceCapabilitySelectionSupervisionReset(params, common) {
345
+ const previous = params.previousHead.state.capabilitySelectionSupervision;
346
+ const current = params.head.state.capabilitySelectionSupervision;
347
+ if (previous.records.length === 0)
348
+ return;
349
+ const cause = resolveCapabilitySelectionSupervisionResetCause(params);
350
+ if (!cause)
351
+ return;
352
+ traceDebug(ROLE_CALL_LOG_SCOPE, "capability_selection.supervision_reset", {
353
+ ...common,
354
+ callId: previous.epoch?.callId,
355
+ steeringVersion: previous.epoch?.steeringVersion,
356
+ resetReason: cause,
357
+ clearedRecordCount: previous.records.length,
358
+ clearedIdentityCount: new Set(previous.records.map((record) => record.supervisionFingerprint)).size,
359
+ nextSteeringVersion: current.epoch?.steeringVersion,
360
+ });
361
+ }
362
+ function resolveCapabilitySelectionSupervisionResetCause(params) {
363
+ const previous = params.previousHead.state.capabilitySelectionSupervision;
364
+ const current = params.head.state.capabilitySelectionSupervision;
365
+ if (params.effect.type === "capability_selection_reconsidered" &&
366
+ previous.epoch?.steeringVersion !== current.epoch?.steeringVersion) {
367
+ return "steering_version_changed";
368
+ }
369
+ if (current.records.length > 0)
370
+ return undefined;
371
+ switch (params.effect.type) {
372
+ case "root_response_committed":
373
+ return "root_completed";
374
+ case "child_opened":
375
+ return "child_opened";
376
+ case "child_returned":
377
+ return "child_returned";
378
+ case "capability_execution_begun":
379
+ case "capability_batch_begun":
380
+ case "operation_supervision_intervened":
381
+ return "materialized_capability_attempt";
382
+ case "capability_scope_updated":
383
+ return "capability_scope_updated";
384
+ case "working_directory_established":
385
+ return "working_directory_established";
386
+ default:
387
+ return undefined;
388
+ }
389
+ }
390
+ function projectRejectedCapabilitySelectionSupervision(params) {
391
+ if (params.code !== "capability_selection_supervision_limit_exceeded" ||
392
+ !params.command.attemptedSelectionSupervisionFingerprint) {
393
+ return Object.freeze({});
394
+ }
395
+ const state = params.head.state.capabilitySelectionSupervision;
396
+ const sameEpoch = state.epoch?.callId === params.command.attemptedCallId &&
397
+ state.epoch?.steeringVersion === params.command.attemptedSteeringVersion;
398
+ const matchingSelectionCount = (sameEpoch
399
+ ? state.records.filter((record) => record.supervisionFingerprint ===
400
+ params.command.attemptedSelectionSupervisionFingerprint).length
401
+ : 0) + 1;
402
+ const totalReconsiderationCount = (sameEpoch ? state.records.length : 0) + 1;
403
+ const issueCode = params.issues?.[0]?.code;
404
+ const trigger = issueCode === "capability_selection_repeat_limit_exceeded"
405
+ ? "repeat_identity"
406
+ : issueCode === "capability_selection_total_limit_exceeded"
407
+ ? "total_budget"
408
+ : "repeat_and_total";
409
+ return Object.freeze({
410
+ selectionSupervisionStage: "terminal",
411
+ selectionSupervisionTrigger: trigger,
412
+ matchingSelectionCount,
413
+ totalReconsiderationCount,
263
414
  });
264
415
  }
265
416
  function findCall(head, callId) {
@@ -1,5 +1,11 @@
1
1
  export * from "./contracts.js";
2
+ export * from "./activation-budget.js";
3
+ export * from "./operation-supervision.js";
4
+ export * from "./operation-supervision-projection.js";
5
+ export * from "./operation-supervision-state-validation.js";
2
6
  export * from "./capability-selection-reconsideration.js";
7
+ export * from "./capability-selection-supervision.js";
8
+ export * from "./reconsideration-cause.js";
3
9
  export * from "./assignment-scope.js";
4
10
  export * from "./child-return.js";
5
11
  export * from "./dependency-results.js";
@@ -1,5 +1,11 @@
1
1
  export * from "./contracts.js";
2
+ export * from "./activation-budget.js";
3
+ export * from "./operation-supervision.js";
4
+ export * from "./operation-supervision-projection.js";
5
+ export * from "./operation-supervision-state-validation.js";
2
6
  export * from "./capability-selection-reconsideration.js";
7
+ export * from "./capability-selection-supervision.js";
8
+ export * from "./reconsideration-cause.js";
3
9
  export * from "./assignment-scope.js";
4
10
  export * from "./child-return.js";
5
11
  export * from "./dependency-results.js";
@@ -2,17 +2,23 @@ import { consumeUnexpectedThenable } from "../synchronous-boundary.js";
2
2
  import { createCanonicalStateHeadFactory } from "../state-head.js";
3
3
  import { ROLE_CALL_LEDGER_HEAD_KIND, } from "./contracts.js";
4
4
  import { traceRoleCallCommit, traceRoleCallCommitFault, traceRoleCallRejection, } from "./diagnostics.js";
5
+ import { issueCanonicalRoleOperationSupervisionTransition } from "./operation-supervision-issuance.js";
6
+ import { isRoleOperationFingerprint } from "./operation-supervision.js";
7
+ import { createRoleCapabilitySelectionFingerprint, normalizeRoleCapabilitySelectionProjection, } from "./capability-selection-reconsideration.js";
8
+ import { createRoleCapabilitySelectionSupervisionFingerprint } from "./capability-selection-supervision.js";
9
+ import { isIssuedRoleCapabilitySelectionSupervisionState, issueCanonicalRoleCapabilitySelectionSupervisionTransition, resolveRoleCapabilitySelectionSupervisionIssuanceAuthority, } from "./capability-selection-supervision-issuance.js";
5
10
  import { applyRoleCallCommand, createInitialRoleCallState, sealRoleCallPolicy, validateRoleCallCandidate, } from "./reducer.js";
6
11
  import { createRoleCallTransactions } from "./transactions.js";
7
12
  import { ROLE_CALL_WORKING_DIRECTORY_MAX_LENGTH } from "./working-directory.js";
8
- const createRoleCallStateHead = createCanonicalStateHeadFactory({
9
- compatibilityHeadKind: ROLE_CALL_LEDGER_HEAD_KIND,
10
- validationLabel: "role-call ledger head",
11
- validateCandidate: validateRoleCallCandidate,
12
- });
13
13
  export function createRoleCallLedger(params) {
14
+ const initialState = createInitialRoleCallState(params.requestId);
15
+ const capabilitySelectionSupervisionIssuanceAuthority = resolveRoleCapabilitySelectionSupervisionIssuanceAuthority(initialState);
16
+ if (!capabilitySelectionSupervisionIssuanceAuthority) {
17
+ throw new Error("role_call_capability_selection_supervision_issuance_authority_missing");
18
+ }
19
+ const createRoleCallStateHead = createRoleCallStateHeadFactory(capabilitySelectionSupervisionIssuanceAuthority);
14
20
  const channel = createRoleCallStateHead({
15
- state: createInitialRoleCallState(params.requestId),
21
+ state: initialState,
16
22
  policy: sealRoleCallPolicy(params.policy),
17
23
  });
18
24
  const commitObservers = new Set();
@@ -29,10 +35,12 @@ export function createRoleCallLedger(params) {
29
35
  const commandType = classifyCommandType(input.command);
30
36
  const capturedCommand = captureCommand(input.command);
31
37
  const commandDiagnostic = projectRejectedCommand(capturedCommand);
38
+ const capabilityExecutionAdmission = input.capabilityExecutionAdmission;
32
39
  const result = await channel.writer.transaction({
33
40
  expectedHead: input.expectedHead,
34
41
  run(transaction) {
35
- const transition = applyRoleCallCommand(transaction.head.state, capturedCommand, transaction.head.policy);
42
+ const admittedCommand = projectAdmittedCapabilityExecutionCommand(commandType, capturedCommand, capabilityExecutionAdmission);
43
+ const transition = applyRoleCallCommand(transaction.head.state, admittedCommand, transaction.head.policy);
36
44
  if (!transition.ok) {
37
45
  return {
38
46
  kind: "transition_rejected",
@@ -40,6 +48,20 @@ export function createRoleCallLedger(params) {
40
48
  ...(transition.issues ? { issues: transition.issues } : {}),
41
49
  };
42
50
  }
51
+ if (!issueCanonicalRoleOperationSupervisionTransition({
52
+ before: transaction.head.state,
53
+ after: transition.state,
54
+ effect: transition.effect,
55
+ })) {
56
+ throw new Error("role_call_operation_supervision_transition_invalid");
57
+ }
58
+ if (!issueCanonicalRoleCapabilitySelectionSupervisionTransition({
59
+ before: transaction.head.state,
60
+ after: transition.state,
61
+ effect: transition.effect,
62
+ })) {
63
+ throw new Error("role_call_capability_selection_supervision_transition_invalid");
64
+ }
43
65
  attemptedCommitEffect = transition.effect;
44
66
  const commit = transaction.commit({
45
67
  state: transition.state,
@@ -116,6 +138,67 @@ export function createRoleCallLedger(params) {
116
138
  apply,
117
139
  });
118
140
  }
141
+ function createRoleCallStateHeadFactory(capabilitySelectionSupervisionIssuanceAuthority) {
142
+ return createCanonicalStateHeadFactory({
143
+ compatibilityHeadKind: ROLE_CALL_LEDGER_HEAD_KIND,
144
+ validationLabel: "role-call ledger head",
145
+ validateCandidate(candidate) {
146
+ const issues = validateRoleCallCandidate(candidate);
147
+ if (isIssuedRoleCapabilitySelectionSupervisionState({
148
+ state: candidate.state,
149
+ authority: capabilitySelectionSupervisionIssuanceAuthority,
150
+ }) ||
151
+ issues.some((issue) => issue.code === "invalid_role_capability_selection_supervision" &&
152
+ issue.path === "state.capabilitySelectionSupervision")) {
153
+ return issues;
154
+ }
155
+ return Object.freeze([
156
+ ...issues,
157
+ Object.freeze({
158
+ code: "invalid_role_capability_selection_supervision",
159
+ path: "state.capabilitySelectionSupervision",
160
+ }),
161
+ ]);
162
+ },
163
+ });
164
+ }
165
+ function projectAdmittedCapabilityExecutionCommand(commandType, command, admission) {
166
+ if (admission === undefined || !isCapabilityExecutionBegin(commandType)) {
167
+ return command;
168
+ }
169
+ return isCapabilityExecutionCurrent(admission)
170
+ ? command
171
+ : withoutTrackedActionFingerprints(commandType, command);
172
+ }
173
+ function isCapabilityExecutionBegin(commandType) {
174
+ return (commandType === "begin_capability_execution" ||
175
+ commandType === "begin_capability_batch");
176
+ }
177
+ function isCapabilityExecutionCurrent(admission) {
178
+ try {
179
+ const result = admission.isCurrent();
180
+ if (consumeUnexpectedThenable(result))
181
+ return false;
182
+ return result === true;
183
+ }
184
+ catch {
185
+ return false;
186
+ }
187
+ }
188
+ function withoutTrackedActionFingerprints(commandType, command) {
189
+ if (typeof command !== "object" ||
190
+ command === null ||
191
+ Array.isArray(command)) {
192
+ return command;
193
+ }
194
+ const untrackedCommand = { ...command };
195
+ delete untrackedCommand.actionFingerprint;
196
+ if (commandType === "begin_capability_batch" &&
197
+ Array.isArray(untrackedCommand.entries)) {
198
+ untrackedCommand.entries = untrackedCommand.entries.map((entry) => withoutTrackedActionFingerprints("begin_capability_execution", entry));
199
+ }
200
+ return untrackedCommand;
201
+ }
119
202
  function notifyCommitObservers(observers, commit) {
120
203
  let failed = false;
121
204
  const frozenCommit = Object.freeze(commit);
@@ -260,11 +343,52 @@ function projectRejectedCommand(input) {
260
343
  ...(safeIdentifier(command.capabilityId)
261
344
  ? { attemptedCapabilityId: command.capabilityId }
262
345
  : {}),
346
+ ...(isRoleOperationFingerprint(command.actionFingerprint)
347
+ ? { attemptedActionFingerprint: command.actionFingerprint }
348
+ : {}),
263
349
  ...(isCapabilityEffect(command.declaredEffect)
264
350
  ? { attemptedDeclaredEffect: command.declaredEffect }
265
351
  : {}),
266
352
  });
267
353
  }
354
+ if (command.type === "reconsider_capability_selection") {
355
+ const selection = normalizeRoleCapabilitySelectionProjection(command.selection);
356
+ const steeringVersion = Number.isSafeInteger(command.steeringVersion)
357
+ ? command.steeringVersion
358
+ : undefined;
359
+ let receiptFingerprint;
360
+ let supervisionFingerprint;
361
+ if (selection && steeringVersion !== undefined && steeringVersion >= 0) {
362
+ receiptFingerprint = createRoleCapabilitySelectionFingerprint({
363
+ steeringVersion,
364
+ selection,
365
+ });
366
+ supervisionFingerprint =
367
+ createRoleCapabilitySelectionSupervisionFingerprint({
368
+ steeringVersion,
369
+ selection,
370
+ });
371
+ }
372
+ return Object.freeze({
373
+ ...(safeIdentifier(command.callId)
374
+ ? { attemptedCallId: command.callId }
375
+ : {}),
376
+ ...(Number.isInteger(command.invocationAttempt)
377
+ ? { attemptedInvocationAttempt: command.invocationAttempt }
378
+ : {}),
379
+ ...(steeringVersion !== undefined
380
+ ? { attemptedSteeringVersion: steeringVersion }
381
+ : {}),
382
+ ...(receiptFingerprint
383
+ ? { attemptedSelectionReceiptFingerprint: receiptFingerprint }
384
+ : {}),
385
+ ...(supervisionFingerprint
386
+ ? {
387
+ attemptedSelectionSupervisionFingerprint: supervisionFingerprint,
388
+ }
389
+ : {}),
390
+ });
391
+ }
268
392
  if (command.type === "update_capability_scope") {
269
393
  return Object.freeze({
270
394
  ...(safeIdentifier(command.callId)
@@ -0,0 +1,11 @@
1
+ import type { RoleCallCommitEffect, RoleCallState } from "./contracts.js";
2
+ import { type RoleOperationSupervisionInterventionRecord } from "./operation-supervision.js";
3
+ export declare function issueCanonicalRoleOperationSupervisionTransition(input: {
4
+ before: RoleCallState;
5
+ after: RoleCallState;
6
+ effect: RoleCallCommitEffect;
7
+ }): boolean;
8
+ export declare function isIssuedRoleOperationSupervisionInterventionForRequest(input: {
9
+ requestId: string;
10
+ intervention: RoleOperationSupervisionInterventionRecord;
11
+ }): boolean;