@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
@@ -0,0 +1,66 @@
1
+ import { isSameRoleOperationIdentity, } from "./operation-supervision.js";
2
+ const issuedInterventionRequestIds = new WeakMap();
3
+ export function issueCanonicalRoleOperationSupervisionTransition(input) {
4
+ if (input.effect.type === "operation_supervision_intervened") {
5
+ const intervention = findCanonicalInterventionRecord({
6
+ before: input.before,
7
+ after: input.after,
8
+ effect: input.effect,
9
+ });
10
+ if (!intervention)
11
+ return false;
12
+ issuedInterventionRequestIds.set(intervention, input.before.requestId);
13
+ return true;
14
+ }
15
+ if (input.effect.type === "capability_execution_settled" ||
16
+ input.effect.type === "capability_batch_settled") {
17
+ return true;
18
+ }
19
+ return input.after.operationSupervision === input.before.operationSupervision;
20
+ }
21
+ export function isIssuedRoleOperationSupervisionInterventionForRequest(input) {
22
+ return (issuedInterventionRequestIds.get(input.intervention) === input.requestId);
23
+ }
24
+ function findCanonicalInterventionRecord(input) {
25
+ const before = input.before.operationSupervision;
26
+ const after = input.after.operationSupervision;
27
+ const effect = input.effect;
28
+ const entryIndex = before.entries.findIndex((entry) => isSameRoleOperationIdentity(entry, effect));
29
+ if (after === before ||
30
+ entryIndex < 0 ||
31
+ after.entries.length !== before.entries.length ||
32
+ after.interventions.length !== before.interventions.length + 1 ||
33
+ hasChangedUnrelatedEntry(before.entries, after.entries, entryIndex) ||
34
+ !before.interventions.every((intervention, index) => after.interventions[index] === intervention)) {
35
+ return undefined;
36
+ }
37
+ const warning = before.entries[entryIndex];
38
+ const intervened = after.entries[entryIndex];
39
+ const intervention = after.interventions[after.interventions.length - 1];
40
+ if (warning?.stage !== "warning" ||
41
+ intervened?.stage !== "intervened" ||
42
+ !intervention ||
43
+ !hasMatchingInterventionEvidence(warning, effect) ||
44
+ !hasMatchingInterventionEvidence(intervened, effect) ||
45
+ !hasMatchingInterventionEvidence(intervention, effect) ||
46
+ !hasMatchingInterventionAttempt(intervened, effect) ||
47
+ !hasMatchingInterventionAttempt(intervention, effect)) {
48
+ return undefined;
49
+ }
50
+ return intervention;
51
+ }
52
+ function hasChangedUnrelatedEntry(before, after, changedIndex) {
53
+ return before.some((entry, index) => index !== changedIndex && after[index] !== entry);
54
+ }
55
+ function hasMatchingInterventionEvidence(evidence, effect) {
56
+ return (isSameRoleOperationIdentity(evidence, effect) &&
57
+ evidence.priorOutcome === effect.priorOutcome &&
58
+ evidence.outcomeFingerprint === effect.outcomeFingerprint &&
59
+ evidence.originExecutionId === effect.originExecutionId &&
60
+ evidence.matchingOutcomeCount === effect.matchingOutcomeCount);
61
+ }
62
+ function hasMatchingInterventionAttempt(intervention, effect) {
63
+ return (intervention.interventionCount === effect.interventionCount &&
64
+ intervention.interventionCallId === effect.callId &&
65
+ intervention.interventionInvocationAttempt === effect.invocationAttempt);
66
+ }
@@ -0,0 +1,16 @@
1
+ import type { RoleCallFrame, RoleCallLedgerHead } from "./contracts.js";
2
+ export declare const ROLE_OPERATION_SUPERVISION_NOTICE_KIND: "runtime_operation_supervision_v1";
3
+ export type RoleOperationSupervisionNotice = Readonly<{
4
+ kind: typeof ROLE_OPERATION_SUPERVISION_NOTICE_KIND;
5
+ authority: "runtime_state";
6
+ presenceEffect: "passive_mechanical_intervention_not_user_intent";
7
+ stage: "warning" | "intervention";
8
+ actionFingerprint: string;
9
+ priorOutcome: "succeeded" | "failed";
10
+ outcomeFingerprint: string;
11
+ originExecutionId: string;
12
+ matchingOutcomeCount: 2;
13
+ interventionCount: 0 | 1;
14
+ }>;
15
+ /** Projects only supervision evidence created for this exact activation. */
16
+ export declare function projectImmediateRoleOperationSupervisionNotices(head: RoleCallLedgerHead, call: RoleCallFrame): readonly RoleOperationSupervisionNotice[];
@@ -0,0 +1,52 @@
1
+ import { isSameRoleOperationIdentity, } from "./operation-supervision.js";
2
+ export const ROLE_OPERATION_SUPERVISION_NOTICE_KIND = "runtime_operation_supervision_v1";
3
+ /** Projects only supervision evidence created for this exact activation. */
4
+ export function projectImmediateRoleOperationSupervisionNotices(head, call) {
5
+ if (!isCurrentActiveCall(head, call))
6
+ return Object.freeze([]);
7
+ const interventions = head.state.operationSupervision.entries.filter((entry) => entry.stage === "intervened" &&
8
+ entry.interventionCallId === call.callId &&
9
+ entry.interventionInvocationAttempt + 1 === call.activationCount);
10
+ if (interventions.length > 0) {
11
+ return Object.freeze(interventions
12
+ .map((entry) => entry.stage === "intervened" ? createNotice(entry) : undefined)
13
+ .filter((notice) => notice !== undefined));
14
+ }
15
+ const notices = findImmediateSettledExecutions(head, call).flatMap((execution) => {
16
+ const actionFingerprint = execution.actionFingerprint;
17
+ if (!actionFingerprint)
18
+ return [];
19
+ const warning = head.state.operationSupervision.entries.find((entry) => entry.stage === "warning" &&
20
+ isSameRoleOperationIdentity(entry, {
21
+ capabilityId: execution.capabilityId,
22
+ actionFingerprint,
23
+ }) &&
24
+ entry.originExecutionId === execution.executionId);
25
+ return warning?.stage === "warning" ? [createNotice(warning)] : [];
26
+ });
27
+ return Object.freeze(notices);
28
+ }
29
+ function createNotice(entry) {
30
+ return Object.freeze({
31
+ kind: ROLE_OPERATION_SUPERVISION_NOTICE_KIND,
32
+ authority: "runtime_state",
33
+ presenceEffect: "passive_mechanical_intervention_not_user_intent",
34
+ stage: entry.stage === "intervened" ? "intervention" : "warning",
35
+ actionFingerprint: entry.actionFingerprint,
36
+ priorOutcome: entry.priorOutcome,
37
+ outcomeFingerprint: entry.outcomeFingerprint,
38
+ originExecutionId: entry.originExecutionId,
39
+ matchingOutcomeCount: entry.matchingOutcomeCount,
40
+ interventionCount: entry.stage === "intervened" ? entry.interventionCount : 0,
41
+ });
42
+ }
43
+ function findImmediateSettledExecutions(head, call) {
44
+ return head.state.capabilityExecutions.filter((execution) => execution.status === "settled" &&
45
+ execution.callId === call.callId &&
46
+ execution.invocationAttempt + 1 === call.activationCount);
47
+ }
48
+ function isCurrentActiveCall(head, call) {
49
+ return (head.state.phase === "running" &&
50
+ head.state.activeCallId === call.callId &&
51
+ call.status === "active");
52
+ }
@@ -0,0 +1,3 @@
1
+ import { type RoleOperationSupervisionSettlement, type RoleOperationSupervisionState } from "./operation-supervision.js";
2
+ export declare function isRoleOperationSupervisionSettlementHistoryValid(settlements: readonly RoleOperationSupervisionSettlement[]): boolean;
3
+ export declare function isRoleOperationSupervisionState(value: unknown): value is RoleOperationSupervisionState;
@@ -0,0 +1,151 @@
1
+ import { advanceRoleOperationSupervisionSettlement, createInitialRoleOperationSupervisionState, findRoleOperationSupervisionEntry, isRoleOperationFingerprint, isRoleOperationOutcomeFingerprintForOutcome, ROLE_OPERATION_INTERVENTION_LIMIT, ROLE_OPERATION_REPEAT_EXECUTION_LIMIT, } from "./operation-supervision.js";
2
+ import { isRoleCapabilityId } from "./contracts.js";
3
+ export function isRoleOperationSupervisionSettlementHistoryValid(settlements) {
4
+ let state = createInitialRoleOperationSupervisionState();
5
+ for (const settlement of settlements) {
6
+ const fingerprint = settlement.actionFingerprint;
7
+ const outcomeFingerprint = settlement.outcomeFingerprint;
8
+ if (fingerprint && outcomeFingerprint) {
9
+ const existing = findRoleOperationSupervisionEntry(state, {
10
+ capabilityId: settlement.capabilityId,
11
+ actionFingerprint: fingerprint,
12
+ });
13
+ if (existing?.stage === "warning" &&
14
+ existing.outcomeFingerprint === outcomeFingerprint) {
15
+ return false;
16
+ }
17
+ }
18
+ state = advanceRoleOperationSupervisionSettlement(state, settlement);
19
+ }
20
+ return true;
21
+ }
22
+ export function isRoleOperationSupervisionState(value) {
23
+ if (!isRecord(value) || !hasExactKeys(value, ["entries", "interventions"])) {
24
+ return false;
25
+ }
26
+ if (!Array.isArray(value.entries) || !Array.isArray(value.interventions)) {
27
+ return false;
28
+ }
29
+ const fingerprintsByCapability = new Map();
30
+ for (const entry of value.entries) {
31
+ if (!isRoleOperationSupervisionEntry(entry))
32
+ return false;
33
+ if (!registerUniqueOperationIdentity(fingerprintsByCapability, entry)) {
34
+ return false;
35
+ }
36
+ }
37
+ const interventionFingerprintsByCapability = new Map();
38
+ const latestAttemptByCall = new Map();
39
+ for (const intervention of value.interventions) {
40
+ if (!isRoleOperationSupervisionInterventionRecord(intervention)) {
41
+ return false;
42
+ }
43
+ if (!registerUniqueOperationIdentity(interventionFingerprintsByCapability, intervention)) {
44
+ return false;
45
+ }
46
+ const latestAttempt = latestAttemptByCall.get(intervention.interventionCallId);
47
+ if (latestAttempt !== undefined &&
48
+ intervention.interventionInvocationAttempt <= latestAttempt) {
49
+ return false;
50
+ }
51
+ latestAttemptByCall.set(intervention.interventionCallId, intervention.interventionInvocationAttempt);
52
+ }
53
+ return true;
54
+ }
55
+ function isRoleOperationSupervisionEntry(value) {
56
+ if (!isRecord(value) || !isBaseEntry(value))
57
+ return false;
58
+ if (value.stage === "tracking") {
59
+ return (hasExactKeys(value, [
60
+ "stage",
61
+ "capabilityId",
62
+ "actionFingerprint",
63
+ "priorOutcome",
64
+ "outcomeFingerprint",
65
+ "originExecutionId",
66
+ "matchingOutcomeCount",
67
+ ]) && value.matchingOutcomeCount === 1);
68
+ }
69
+ if (value.stage === "warning") {
70
+ return (hasExactKeys(value, [
71
+ "stage",
72
+ "capabilityId",
73
+ "actionFingerprint",
74
+ "priorOutcome",
75
+ "outcomeFingerprint",
76
+ "originExecutionId",
77
+ "matchingOutcomeCount",
78
+ ]) && value.matchingOutcomeCount === ROLE_OPERATION_REPEAT_EXECUTION_LIMIT);
79
+ }
80
+ return (value.stage === "intervened" &&
81
+ hasExactKeys(value, [
82
+ "stage",
83
+ "capabilityId",
84
+ "actionFingerprint",
85
+ "priorOutcome",
86
+ "outcomeFingerprint",
87
+ "originExecutionId",
88
+ "matchingOutcomeCount",
89
+ "interventionCount",
90
+ "interventionCallId",
91
+ "interventionInvocationAttempt",
92
+ ]) &&
93
+ value.matchingOutcomeCount === ROLE_OPERATION_REPEAT_EXECUTION_LIMIT &&
94
+ value.interventionCount === ROLE_OPERATION_INTERVENTION_LIMIT &&
95
+ isBoundedIdentifier(value.interventionCallId) &&
96
+ Number.isSafeInteger(value.interventionInvocationAttempt) &&
97
+ value.interventionInvocationAttempt >= 1);
98
+ }
99
+ function isRoleOperationSupervisionInterventionRecord(value) {
100
+ return (isRecord(value) &&
101
+ hasExactKeys(value, [
102
+ "capabilityId",
103
+ "actionFingerprint",
104
+ "priorOutcome",
105
+ "outcomeFingerprint",
106
+ "originExecutionId",
107
+ "matchingOutcomeCount",
108
+ "interventionCount",
109
+ "interventionCallId",
110
+ "interventionInvocationAttempt",
111
+ ]) &&
112
+ isSupervisionEvidence(value) &&
113
+ value.matchingOutcomeCount === ROLE_OPERATION_REPEAT_EXECUTION_LIMIT &&
114
+ value.interventionCount === ROLE_OPERATION_INTERVENTION_LIMIT &&
115
+ isBoundedIdentifier(value.interventionCallId) &&
116
+ Number.isSafeInteger(value.interventionInvocationAttempt) &&
117
+ value.interventionInvocationAttempt >= 1);
118
+ }
119
+ function isBaseEntry(value) {
120
+ return ((value.stage === "tracking" ||
121
+ value.stage === "warning" ||
122
+ value.stage === "intervened") &&
123
+ isSupervisionEvidence(value));
124
+ }
125
+ function isSupervisionEvidence(value) {
126
+ return (isRoleCapabilityId(value.capabilityId) &&
127
+ isRoleOperationFingerprint(value.actionFingerprint) &&
128
+ (value.priorOutcome === "succeeded" || value.priorOutcome === "failed") &&
129
+ isRoleOperationOutcomeFingerprintForOutcome(value.outcomeFingerprint, value.priorOutcome) &&
130
+ isBoundedIdentifier(value.originExecutionId));
131
+ }
132
+ function registerUniqueOperationIdentity(fingerprintsByCapability, identity) {
133
+ const fingerprints = fingerprintsByCapability.get(identity.capabilityId) ?? new Set();
134
+ if (fingerprints.has(identity.actionFingerprint))
135
+ return false;
136
+ fingerprints.add(identity.actionFingerprint);
137
+ fingerprintsByCapability.set(identity.capabilityId, fingerprints);
138
+ return true;
139
+ }
140
+ function isBoundedIdentifier(value) {
141
+ return typeof value === "string" && value.length > 0 && value.length <= 128;
142
+ }
143
+ function isRecord(value) {
144
+ return typeof value === "object" && value !== null && !Array.isArray(value);
145
+ }
146
+ function hasExactKeys(value, keys) {
147
+ const actual = Object.keys(value).sort();
148
+ const expected = [...keys].sort();
149
+ return (actual.length === expected.length &&
150
+ actual.every((key, index) => key === expected[index]));
151
+ }
@@ -0,0 +1,112 @@
1
+ import type { RoleCallCommitEffect, RoleCallLedgerCommitResult, RoleCallLedgerHead, RoleCapabilityObservedEffect } from "./contracts.js";
2
+ export declare const ROLE_OPERATION_FINGERPRINT_PATTERN: RegExp;
3
+ export declare const ROLE_OPERATION_FAILURE_FINGERPRINT_PATTERN: RegExp;
4
+ export declare const ROLE_OPERATION_REPEAT_EXECUTION_LIMIT: 2;
5
+ export declare const ROLE_OPERATION_INTERVENTION_LIMIT: 1;
6
+ export type RoleOperationFingerprint = string;
7
+ export type RoleOperationOutcome = "succeeded" | "failed";
8
+ export type RoleOperationOutcomeFingerprint = string;
9
+ export type RoleOperationIdentity = Readonly<{
10
+ capabilityId: string;
11
+ actionFingerprint: RoleOperationFingerprint;
12
+ }>;
13
+ type RoleOperationSupervisionEntryBase = RoleOperationIdentity & Readonly<{
14
+ priorOutcome: RoleOperationOutcome;
15
+ outcomeFingerprint: RoleOperationOutcomeFingerprint;
16
+ originExecutionId: string;
17
+ }>;
18
+ export type RoleOperationSupervisionInterventionRecord = RoleOperationSupervisionEntryBase & Readonly<{
19
+ matchingOutcomeCount: typeof ROLE_OPERATION_REPEAT_EXECUTION_LIMIT;
20
+ interventionCount: typeof ROLE_OPERATION_INTERVENTION_LIMIT;
21
+ interventionCallId: string;
22
+ interventionInvocationAttempt: number;
23
+ }>;
24
+ export type RoleOperationSupervisionEntry = (RoleOperationSupervisionEntryBase & Readonly<{
25
+ stage: "tracking";
26
+ matchingOutcomeCount: 1;
27
+ }>) | (RoleOperationSupervisionEntryBase & Readonly<{
28
+ stage: "warning";
29
+ matchingOutcomeCount: typeof ROLE_OPERATION_REPEAT_EXECUTION_LIMIT;
30
+ }>) | (RoleOperationSupervisionInterventionRecord & Readonly<{
31
+ stage: "intervened";
32
+ }>);
33
+ export type RoleOperationSupervisionState = Readonly<{
34
+ entries: readonly RoleOperationSupervisionEntry[];
35
+ interventions: readonly RoleOperationSupervisionInterventionRecord[];
36
+ }>;
37
+ export type RoleOperationSupervisionAttemptDecision = Readonly<{
38
+ disposition: "execute";
39
+ }> | Readonly<{
40
+ disposition: "intervene";
41
+ state: RoleOperationSupervisionState;
42
+ entry: Extract<RoleOperationSupervisionEntry, {
43
+ stage: "intervened";
44
+ }>;
45
+ }> | Readonly<{
46
+ disposition: "reject";
47
+ issueCode: "operation_supervision_limit_exceeded";
48
+ }>;
49
+ export type RoleOperationSupervisionBatchAttemptDecision = Readonly<{
50
+ disposition: "execute";
51
+ }> | Readonly<{
52
+ disposition: "intervene";
53
+ entryIndex: number;
54
+ state: RoleOperationSupervisionState;
55
+ entry: Extract<RoleOperationSupervisionEntry, {
56
+ stage: "intervened";
57
+ }>;
58
+ }> | Readonly<{
59
+ disposition: "reject";
60
+ issueCode: "operation_supervision_limit_exceeded";
61
+ }>;
62
+ export type RoleOperationSupervisionSettlement = Readonly<{
63
+ capabilityId: string;
64
+ actionFingerprint?: RoleOperationFingerprint;
65
+ outcome: RoleOperationOutcome;
66
+ outcomeFingerprint?: RoleOperationOutcomeFingerprint;
67
+ observedEffect: RoleCapabilityObservedEffect;
68
+ originExecutionId: string;
69
+ }>;
70
+ export type RoleCallOperationSupervisionInterventionCommit = Readonly<{
71
+ ok: true;
72
+ status: "committed";
73
+ previousHead: RoleCallLedgerHead;
74
+ head: RoleCallLedgerHead;
75
+ effect: Extract<RoleCallCommitEffect, {
76
+ type: "operation_supervision_intervened";
77
+ }>;
78
+ }>;
79
+ export declare function createInitialRoleOperationSupervisionState(): RoleOperationSupervisionState;
80
+ export declare function assessRoleOperationSupervisionAttempt(input: {
81
+ state: RoleOperationSupervisionState;
82
+ callId: string;
83
+ invocationAttempt: number;
84
+ capabilityId: string;
85
+ actionFingerprint: RoleOperationFingerprint | undefined;
86
+ }): RoleOperationSupervisionAttemptDecision;
87
+ export declare function assessRoleOperationSupervisionBatchAttempt(input: {
88
+ state: RoleOperationSupervisionState;
89
+ callId: string;
90
+ invocationAttempt: number;
91
+ attempts: readonly Readonly<{
92
+ capabilityId: string;
93
+ actionFingerprint?: RoleOperationFingerprint;
94
+ }>[];
95
+ }): RoleOperationSupervisionBatchAttemptDecision;
96
+ export declare function advanceRoleOperationSupervisionSettlement(current: RoleOperationSupervisionState, settlement: RoleOperationSupervisionSettlement): RoleOperationSupervisionState;
97
+ export declare function isSuccessfulObservedMutation(input: Readonly<{
98
+ outcome: unknown;
99
+ observedEffect: unknown;
100
+ }>): boolean;
101
+ export declare function replayRoleOperationSupervisionSettlements(settlements: readonly RoleOperationSupervisionSettlement[]): RoleOperationSupervisionState;
102
+ export declare function replayRoleOperationSupervisionEvidence(input: {
103
+ settlements: readonly RoleOperationSupervisionSettlement[];
104
+ interventions: readonly RoleOperationSupervisionInterventionRecord[];
105
+ }): RoleOperationSupervisionState | undefined;
106
+ export declare function advanceRoleOperationSupervisionIntervention(current: RoleOperationSupervisionState, intervention: RoleOperationSupervisionInterventionRecord): RoleOperationSupervisionState | undefined;
107
+ export declare function findRoleOperationSupervisionEntry(state: RoleOperationSupervisionState, identity: RoleOperationIdentity): RoleOperationSupervisionEntry | undefined;
108
+ export declare function isSameRoleOperationIdentity(left: RoleOperationIdentity, right: RoleOperationIdentity): boolean;
109
+ export declare function isRoleOperationFingerprint(value: unknown): value is RoleOperationFingerprint;
110
+ export declare function isRoleOperationOutcomeFingerprintForOutcome(value: unknown, outcome: RoleOperationOutcome): value is RoleOperationOutcomeFingerprint;
111
+ export declare function requireRoleCallOperationSupervisionInterventionCommit(commit: RoleCallLedgerCommitResult): RoleCallOperationSupervisionInterventionCommit;
112
+ export {};
@@ -0,0 +1,197 @@
1
+ export const ROLE_OPERATION_FINGERPRINT_PATTERN = /^sha256:[a-f0-9]{64}$/;
2
+ export const ROLE_OPERATION_FAILURE_FINGERPRINT_PATTERN = /^sha256:[a-f0-9]{64}$/;
3
+ export const ROLE_OPERATION_REPEAT_EXECUTION_LIMIT = 2;
4
+ export const ROLE_OPERATION_INTERVENTION_LIMIT = 1;
5
+ export function createInitialRoleOperationSupervisionState() {
6
+ return Object.freeze({
7
+ entries: Object.freeze([]),
8
+ interventions: Object.freeze([]),
9
+ });
10
+ }
11
+ export function assessRoleOperationSupervisionAttempt(input) {
12
+ if (!input.actionFingerprint) {
13
+ return Object.freeze({ disposition: "execute" });
14
+ }
15
+ const entry = findRoleOperationSupervisionEntry(input.state, {
16
+ capabilityId: input.capabilityId,
17
+ actionFingerprint: input.actionFingerprint,
18
+ });
19
+ if (!entry || entry.stage === "tracking") {
20
+ return Object.freeze({ disposition: "execute" });
21
+ }
22
+ if (entry.stage === "intervened") {
23
+ return Object.freeze({
24
+ disposition: "reject",
25
+ issueCode: "operation_supervision_limit_exceeded",
26
+ });
27
+ }
28
+ const intervention = Object.freeze({
29
+ capabilityId: entry.capabilityId,
30
+ actionFingerprint: entry.actionFingerprint,
31
+ priorOutcome: entry.priorOutcome,
32
+ outcomeFingerprint: entry.outcomeFingerprint,
33
+ originExecutionId: entry.originExecutionId,
34
+ matchingOutcomeCount: entry.matchingOutcomeCount,
35
+ interventionCount: ROLE_OPERATION_INTERVENTION_LIMIT,
36
+ interventionCallId: input.callId,
37
+ interventionInvocationAttempt: input.invocationAttempt,
38
+ });
39
+ const intervenedState = advanceRoleOperationSupervisionIntervention(input.state, intervention);
40
+ if (!intervenedState) {
41
+ throw new Error("role_operation_supervision_intervention_state_invalid");
42
+ }
43
+ const intervenedEntry = findRoleOperationSupervisionEntry(intervenedState, {
44
+ capabilityId: entry.capabilityId,
45
+ actionFingerprint: entry.actionFingerprint,
46
+ });
47
+ if (intervenedEntry?.stage !== "intervened") {
48
+ throw new Error("role_operation_supervision_intervention_entry_missing");
49
+ }
50
+ return Object.freeze({
51
+ disposition: "intervene",
52
+ state: intervenedState,
53
+ entry: intervenedEntry,
54
+ });
55
+ }
56
+ export function assessRoleOperationSupervisionBatchAttempt(input) {
57
+ let intervention;
58
+ for (let entryIndex = 0; entryIndex < input.attempts.length; entryIndex += 1) {
59
+ const attempt = input.attempts[entryIndex];
60
+ const decision = assessRoleOperationSupervisionAttempt({
61
+ state: input.state,
62
+ callId: input.callId,
63
+ invocationAttempt: input.invocationAttempt,
64
+ capabilityId: attempt.capabilityId,
65
+ actionFingerprint: attempt.actionFingerprint,
66
+ });
67
+ if (decision.disposition === "reject")
68
+ return decision;
69
+ if (decision.disposition === "intervene" && !intervention) {
70
+ intervention = Object.freeze({
71
+ ...decision,
72
+ entryIndex,
73
+ });
74
+ }
75
+ }
76
+ return intervention ?? Object.freeze({ disposition: "execute" });
77
+ }
78
+ export function advanceRoleOperationSupervisionSettlement(current, settlement) {
79
+ if (isSuccessfulObservedMutation(settlement)) {
80
+ return createInitialRoleOperationSupervisionState();
81
+ }
82
+ if (!settlement.actionFingerprint ||
83
+ !settlement.outcomeFingerprint ||
84
+ !isRoleOperationOutcomeFingerprintForOutcome(settlement.outcomeFingerprint, settlement.outcome)) {
85
+ return current;
86
+ }
87
+ const trackedSettlement = Object.freeze({
88
+ capabilityId: settlement.capabilityId,
89
+ actionFingerprint: settlement.actionFingerprint,
90
+ outcome: settlement.outcome,
91
+ outcomeFingerprint: settlement.outcomeFingerprint,
92
+ observedEffect: settlement.observedEffect,
93
+ originExecutionId: settlement.originExecutionId,
94
+ });
95
+ const existing = findRoleOperationSupervisionEntry(current, trackedSettlement);
96
+ if (!existing) {
97
+ return appendRoleOperationSupervisionEntry(current, createTrackingEntry(trackedSettlement));
98
+ }
99
+ if (existing.stage === "intervened")
100
+ return current;
101
+ if (existing.outcomeFingerprint !== trackedSettlement.outcomeFingerprint) {
102
+ return replaceRoleOperationSupervisionEntry(current, createTrackingEntry(trackedSettlement));
103
+ }
104
+ return replaceRoleOperationSupervisionEntry(current, Object.freeze({
105
+ stage: "warning",
106
+ capabilityId: trackedSettlement.capabilityId,
107
+ actionFingerprint: trackedSettlement.actionFingerprint,
108
+ priorOutcome: trackedSettlement.outcome,
109
+ outcomeFingerprint: trackedSettlement.outcomeFingerprint,
110
+ originExecutionId: trackedSettlement.originExecutionId,
111
+ matchingOutcomeCount: ROLE_OPERATION_REPEAT_EXECUTION_LIMIT,
112
+ }));
113
+ }
114
+ export function isSuccessfulObservedMutation(input) {
115
+ return input.outcome === "succeeded" && input.observedEffect === "mutation";
116
+ }
117
+ export function replayRoleOperationSupervisionSettlements(settlements) {
118
+ return settlements.reduce(advanceRoleOperationSupervisionSettlement, createInitialRoleOperationSupervisionState());
119
+ }
120
+ export function replayRoleOperationSupervisionEvidence(input) {
121
+ let state = replayRoleOperationSupervisionSettlements(input.settlements);
122
+ for (const intervention of input.interventions) {
123
+ const next = advanceRoleOperationSupervisionIntervention(state, intervention);
124
+ if (!next)
125
+ return undefined;
126
+ state = next;
127
+ }
128
+ return state;
129
+ }
130
+ export function advanceRoleOperationSupervisionIntervention(current, intervention) {
131
+ const warning = findRoleOperationSupervisionEntry(current, intervention);
132
+ if (warning?.stage !== "warning" ||
133
+ !isInterventionBoundToWarning(intervention, warning)) {
134
+ return undefined;
135
+ }
136
+ const intervenedEntry = Object.freeze({
137
+ stage: "intervened",
138
+ ...intervention,
139
+ });
140
+ return Object.freeze({
141
+ entries: Object.freeze(current.entries.map((entry) => isSameRoleOperationIdentity(entry, intervenedEntry)
142
+ ? intervenedEntry
143
+ : entry)),
144
+ interventions: Object.freeze([...current.interventions, intervention]),
145
+ });
146
+ }
147
+ export function findRoleOperationSupervisionEntry(state, identity) {
148
+ return state.entries.find((entry) => isSameRoleOperationIdentity(entry, identity));
149
+ }
150
+ export function isSameRoleOperationIdentity(left, right) {
151
+ return (left.capabilityId === right.capabilityId &&
152
+ left.actionFingerprint === right.actionFingerprint);
153
+ }
154
+ export function isRoleOperationFingerprint(value) {
155
+ return (typeof value === "string" && ROLE_OPERATION_FINGERPRINT_PATTERN.test(value));
156
+ }
157
+ export function isRoleOperationOutcomeFingerprintForOutcome(value, outcome) {
158
+ return outcome === "succeeded"
159
+ ? value === "succeeded"
160
+ : typeof value === "string" &&
161
+ ROLE_OPERATION_FAILURE_FINGERPRINT_PATTERN.test(value);
162
+ }
163
+ export function requireRoleCallOperationSupervisionInterventionCommit(commit) {
164
+ if (!commit.ok || commit.effect.type !== "operation_supervision_intervened") {
165
+ throw new Error("role_operation_supervision_intervention_commit_invalid");
166
+ }
167
+ return commit;
168
+ }
169
+ function createTrackingEntry(settlement) {
170
+ return Object.freeze({
171
+ stage: "tracking",
172
+ capabilityId: settlement.capabilityId,
173
+ actionFingerprint: settlement.actionFingerprint,
174
+ priorOutcome: settlement.outcome,
175
+ outcomeFingerprint: settlement.outcomeFingerprint,
176
+ originExecutionId: settlement.originExecutionId,
177
+ matchingOutcomeCount: 1,
178
+ });
179
+ }
180
+ function appendRoleOperationSupervisionEntry(state, entry) {
181
+ return Object.freeze({
182
+ entries: Object.freeze([...state.entries, entry]),
183
+ interventions: state.interventions,
184
+ });
185
+ }
186
+ function replaceRoleOperationSupervisionEntry(state, replacement) {
187
+ return Object.freeze({
188
+ entries: Object.freeze(state.entries.map((entry) => isSameRoleOperationIdentity(entry, replacement) ? replacement : entry)),
189
+ interventions: state.interventions,
190
+ });
191
+ }
192
+ function isInterventionBoundToWarning(intervention, warning) {
193
+ return (intervention.priorOutcome === warning.priorOutcome &&
194
+ intervention.outcomeFingerprint === warning.outcomeFingerprint &&
195
+ intervention.originExecutionId === warning.originExecutionId &&
196
+ intervention.matchingOutcomeCount === warning.matchingOutcomeCount);
197
+ }
@@ -0,0 +1,26 @@
1
+ export declare const ROLE_CAPABILITY_RECONSIDERATION_REASON_MAX_LENGTH = 320;
2
+ export declare const ROLE_CAPABILITY_RECONSIDERATION_STAGE_MAX_LENGTH = 128;
3
+ export declare const ROLE_CAPABILITY_RECONSIDERATION_ISSUE_CODE_MAX_LENGTH = 128;
4
+ export declare const ROLE_CAPABILITY_RECONSIDERATION_ISSUE_PATH_MAX_LENGTH = 512;
5
+ export declare const ROLE_CAPABILITY_RECONSIDERATION_ISSUE_LIMIT_MAX = 16;
6
+ export declare const ROLE_CAPABILITY_RECONSIDERATION_REPAIR_LIMIT_MAX = 16;
7
+ export type RoleCapabilityRefinementDecline = Readonly<{
8
+ invocationIndex: number;
9
+ reason: string;
10
+ }>;
11
+ export type RoleCapabilityRefinementValidationIssue = Readonly<{
12
+ code: string;
13
+ path: string;
14
+ }>;
15
+ export type RoleCapabilitySelectionReconsiderationCause = Readonly<{
16
+ kind: "refinement_declined";
17
+ entries: readonly RoleCapabilityRefinementDecline[];
18
+ }> | Readonly<{
19
+ kind: "refinement_invalid_output";
20
+ validationStage: string;
21
+ issues: readonly RoleCapabilityRefinementValidationIssue[];
22
+ repairAttempts: number;
23
+ repeatedInvalidOutput: boolean;
24
+ }>;
25
+ export declare function normalizeRoleCapabilitySelectionReconsiderationCause(input: unknown): RoleCapabilitySelectionReconsiderationCause | undefined;
26
+ export declare function isReconsiderationCauseBoundToInvocationCount(input: unknown, invocationCount: number): boolean;