@abot-ai/runtime 1.2.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (516) hide show
  1. package/README.md +14 -0
  2. package/dist/src/bridge/request-steering.d.ts +2 -1
  3. package/dist/src/bridge/request-steering.js +4 -2
  4. package/dist/src/bridge/runtime-replay.js +2 -19
  5. package/dist/src/bridge/start-agent-bridge.js +1 -1
  6. package/dist/src/capabilities/normal-invocation/validator.js +1 -1
  7. package/dist/src/capabilities/tool-definition-validator/event-presentation.js +3 -0
  8. package/dist/src/capabilities/tool-definition-validator/event-result-metadata.d.ts +2 -0
  9. package/dist/src/capabilities/tool-definition-validator/event-result-metadata.js +74 -0
  10. package/dist/src/capabilities/tool-event-metadata.js +3 -0
  11. package/dist/src/capabilities/tool-result-event-projection.d.ts +3 -0
  12. package/dist/src/capabilities/tool-result-event-projection.js +82 -0
  13. package/dist/src/capabilities/tool-types.d.ts +5 -0
  14. package/dist/src/cli/abot.js +2 -11
  15. package/dist/src/runtime/adapters/in-memory-session-store.js +1 -0
  16. package/dist/src/runtime/adapters/long-term-memory/file-lock/acquisition.js +11 -2
  17. package/dist/src/runtime/adapters/long-term-memory/file-lock/contracts.d.ts +2 -0
  18. package/dist/src/runtime/adapters/long-term-memory/file-lock/synchronous-release.d.ts +2 -0
  19. package/dist/src/runtime/adapters/long-term-memory/file-lock/synchronous-release.js +40 -0
  20. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/approval.d.ts +3 -0
  21. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/approval.js +9 -0
  22. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/rejection-event.d.ts +13 -0
  23. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/rejection-event.js +25 -0
  24. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/run.js +18 -2
  25. package/dist/src/runtime/adapters/registered-tool-normal-invocations/executor.js +8 -0
  26. package/dist/src/runtime/adapters/registered-tool-normal-invocations/payload/lifecycle.js +7 -3
  27. package/dist/src/runtime/adapters/registered-tool-normal-invocations/shared/contracts.d.ts +17 -2
  28. package/dist/src/runtime/adapters/registered-tool-normal-invocations/shared/event-metadata.d.ts +9 -0
  29. package/dist/src/runtime/adapters/registered-tool-normal-invocations/shared/event-metadata.js +8 -0
  30. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/execution.js +16 -1
  31. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-observability.js +2 -2
  32. package/dist/src/runtime/adapters/scheduled-request-outcome.d.ts +11 -0
  33. package/dist/src/runtime/adapters/scheduled-request-outcome.js +41 -0
  34. package/dist/src/runtime/adapters/scheduler-runtime.d.ts +19 -0
  35. package/dist/src/runtime/adapters/scheduler-runtime.js +138 -0
  36. package/dist/src/runtime/capabilities/scheduling/create-operations.d.ts +55 -0
  37. package/dist/src/runtime/capabilities/scheduling/create-operations.js +30 -0
  38. package/dist/src/runtime/capabilities/scheduling/create-time-zone.d.ts +1 -0
  39. package/dist/src/runtime/capabilities/scheduling/create-time-zone.js +11 -0
  40. package/dist/src/runtime/capabilities/scheduling/job-list-page.d.ts +25 -0
  41. package/dist/src/runtime/capabilities/scheduling/job-list-page.js +40 -0
  42. package/dist/src/runtime/capabilities/scheduling/model-validation.d.ts +2 -0
  43. package/dist/src/runtime/capabilities/scheduling/model-validation.js +15 -0
  44. package/dist/src/runtime/capabilities/scheduling/tool-contract.d.ts +2 -0
  45. package/dist/src/runtime/capabilities/scheduling/tool-contract.js +35 -0
  46. package/dist/src/runtime/capabilities/scheduling/tool-input-properties.d.ts +43 -0
  47. package/dist/src/runtime/capabilities/scheduling/tool-input-properties.js +27 -0
  48. package/dist/src/runtime/capabilities/scheduling/tool-module.d.ts +4 -0
  49. package/dist/src/runtime/capabilities/scheduling/tool-module.js +158 -0
  50. package/dist/src/runtime/capabilities/scheduling/update-operations.d.ts +2 -0
  51. package/dist/src/runtime/capabilities/scheduling/update-operations.js +49 -0
  52. package/dist/src/runtime/composition.d.ts +23 -3
  53. package/dist/src/runtime/composition.js +12 -17
  54. package/dist/src/runtime/config/environment-paths.d.ts +10 -0
  55. package/dist/src/runtime/config/environment-paths.js +31 -0
  56. package/dist/src/runtime/config/environment-storage.d.ts +9 -0
  57. package/dist/src/runtime/config/environment-storage.js +65 -0
  58. package/dist/src/runtime/config/fields.js +7 -0
  59. package/dist/src/runtime/config/long-term-memory.js +15 -0
  60. package/dist/src/runtime/config/schema.js +8 -0
  61. package/dist/src/runtime/config.js +9 -5
  62. package/dist/src/runtime/context/scheduled-execution-context.d.ts +10 -0
  63. package/dist/src/runtime/context/scheduled-execution-context.js +52 -0
  64. package/dist/src/runtime/default-adapters.d.ts +3 -32
  65. package/dist/src/runtime/default-adapters.js +3 -270
  66. package/dist/src/runtime/default-environment-adapters.d.ts +19 -0
  67. package/dist/src/runtime/default-environment-adapters.js +144 -0
  68. package/dist/src/runtime/index.d.ts +5 -0
  69. package/dist/src/runtime/index.js +4 -0
  70. package/dist/src/runtime/local-application.d.ts +22 -0
  71. package/dist/src/runtime/local-application.js +81 -0
  72. package/dist/src/runtime/local-host/app-memory-dispatch.d.ts +11 -0
  73. package/dist/src/runtime/local-host/app-memory-dispatch.js +103 -0
  74. package/dist/src/runtime/local-host/app-owner.d.ts +4 -0
  75. package/dist/src/runtime/local-host/app-owner.js +119 -0
  76. package/dist/src/runtime/local-host/app-request-control.d.ts +24 -0
  77. package/dist/src/runtime/local-host/app-request-control.js +135 -0
  78. package/dist/src/runtime/local-host/app-service-dispatch.d.ts +5 -0
  79. package/dist/src/runtime/local-host/app-service-dispatch.js +64 -0
  80. package/dist/src/runtime/local-host/client-identity.d.ts +3 -0
  81. package/dist/src/runtime/local-host/client-identity.js +17 -0
  82. package/dist/src/runtime/local-host/client-memory.d.ts +7 -0
  83. package/dist/src/runtime/local-host/client-memory.js +54 -0
  84. package/dist/src/runtime/local-host/client-requests.d.ts +19 -0
  85. package/dist/src/runtime/local-host/client-requests.js +145 -0
  86. package/dist/src/runtime/local-host/client-services.d.ts +10 -0
  87. package/dist/src/runtime/local-host/client-services.js +14 -0
  88. package/dist/src/runtime/local-host/contracts.d.ts +36 -0
  89. package/dist/src/runtime/local-host/contracts.js +1 -0
  90. package/dist/src/runtime/local-host/endpoint.d.ts +7 -0
  91. package/dist/src/runtime/local-host/endpoint.js +79 -0
  92. package/dist/src/runtime/local-host/owner-activity.d.ts +10 -0
  93. package/dist/src/runtime/local-host/owner-activity.js +30 -0
  94. package/dist/src/runtime/local-host/owner-retirement.d.ts +3 -0
  95. package/dist/src/runtime/local-host/owner-retirement.js +15 -0
  96. package/dist/src/runtime/local-host/owner-server.d.ts +6 -0
  97. package/dist/src/runtime/local-host/owner-server.js +88 -0
  98. package/dist/src/runtime/local-host/private-access.d.ts +2 -0
  99. package/dist/src/runtime/local-host/private-access.js +16 -0
  100. package/dist/src/runtime/local-host/private-directory.d.ts +1 -0
  101. package/dist/src/runtime/local-host/private-directory.js +57 -0
  102. package/dist/src/runtime/local-host/rpc-peer.d.ts +22 -0
  103. package/dist/src/runtime/local-host/rpc-peer.js +168 -0
  104. package/dist/src/runtime/local-host/rpc-protocol.d.ts +21 -0
  105. package/dist/src/runtime/local-host/rpc-protocol.js +46 -0
  106. package/dist/src/runtime/local-host/startup-connection.d.ts +5 -0
  107. package/dist/src/runtime/local-host/startup-connection.js +72 -0
  108. package/dist/src/runtime/local-host/transport.d.ts +3 -0
  109. package/dist/src/runtime/local-host/transport.js +88 -0
  110. package/dist/src/runtime/local-host/windows-private-access.d.ts +1 -0
  111. package/dist/src/runtime/local-host/windows-private-access.js +51 -0
  112. package/dist/src/runtime/long-term-memory/onboarding/configuration.js +6 -0
  113. package/dist/src/runtime/long-term-memory/recall-binding.d.ts +3 -0
  114. package/dist/src/runtime/long-term-memory/recall-binding.js +27 -0
  115. package/dist/src/runtime/long-term-memory/recall-context.d.ts +20 -0
  116. package/dist/src/runtime/long-term-memory/recall-context.js +101 -0
  117. package/dist/src/runtime/long-term-memory/recall-continuation.d.ts +8 -0
  118. package/dist/src/runtime/long-term-memory/recall-continuation.js +36 -0
  119. package/dist/src/runtime/long-term-memory/recall-policy.d.ts +7 -0
  120. package/dist/src/runtime/long-term-memory/recall-policy.js +14 -0
  121. package/dist/src/runtime/long-term-memory/recall-result.d.ts +5 -0
  122. package/dist/src/runtime/long-term-memory/recall-result.js +54 -0
  123. package/dist/src/runtime/long-term-memory/repository-state.d.ts +2 -1
  124. package/dist/src/runtime/long-term-memory/repository-state.js +2 -2
  125. package/dist/src/runtime/model/invoke-raw-step.d.ts +1 -0
  126. package/dist/src/runtime/model/invoke-raw-step.js +1 -0
  127. package/dist/src/runtime/model/invoke-step.js +6 -0
  128. package/dist/src/runtime/model/invoke-structured-step.d.ts +1 -0
  129. package/dist/src/runtime/model/invoke-structured-step.js +1 -0
  130. package/dist/src/runtime/model/model-step-port.d.ts +2 -0
  131. package/dist/src/runtime/model/model-step-steering.d.ts +8 -0
  132. package/dist/src/runtime/model/model-step-steering.js +19 -0
  133. package/dist/src/runtime/orchestration/final-response/authoring-contract.js +1 -1
  134. package/dist/src/runtime/orchestration/final-response/invoke.d.ts +1 -0
  135. package/dist/src/runtime/orchestration/final-response/invoke.js +1 -0
  136. package/dist/src/runtime/orchestration/role-calls/activation-budget.js +1 -0
  137. package/dist/src/runtime/orchestration/role-calls/candidate-validation.js +9 -49
  138. package/dist/src/runtime/orchestration/role-calls/capability-selection-reconsideration.d.ts +9 -0
  139. package/dist/src/runtime/orchestration/role-calls/capability-selection-reconsideration.js +17 -8
  140. package/dist/src/runtime/orchestration/role-calls/capability-selection-supervision-validation.d.ts +2 -0
  141. package/dist/src/runtime/orchestration/role-calls/capability-selection-supervision-validation.js +62 -0
  142. package/dist/src/runtime/orchestration/role-calls/command-decoder.js +4 -0
  143. package/dist/src/runtime/orchestration/role-calls/command-dispatch/memory-recall-transitions.d.ts +4 -0
  144. package/dist/src/runtime/orchestration/role-calls/command-dispatch/memory-recall-transitions.js +89 -0
  145. package/dist/src/runtime/orchestration/role-calls/command-dispatch.js +5 -0
  146. package/dist/src/runtime/orchestration/role-calls/contracts.d.ts +9 -7
  147. package/dist/src/runtime/orchestration/role-calls/contracts.js +2 -2
  148. package/dist/src/runtime/orchestration/role-calls/diagnostics.js +3 -0
  149. package/dist/src/runtime/orchestration/role-calls/index.d.ts +1 -0
  150. package/dist/src/runtime/orchestration/role-calls/index.js +1 -0
  151. package/dist/src/runtime/orchestration/role-calls/memory-recall-contract.d.ts +51 -0
  152. package/dist/src/runtime/orchestration/role-calls/memory-recall-contract.js +4 -0
  153. package/dist/src/runtime/orchestration/role-calls/memory-recall-decoder.d.ts +6 -0
  154. package/dist/src/runtime/orchestration/role-calls/memory-recall-decoder.js +147 -0
  155. package/dist/src/runtime/orchestration/role-calls/memory-recall-diagnostics.d.ts +5 -0
  156. package/dist/src/runtime/orchestration/role-calls/memory-recall-diagnostics.js +27 -0
  157. package/dist/src/runtime/orchestration/role-calls/memory-recall-state-validation.d.ts +3 -0
  158. package/dist/src/runtime/orchestration/role-calls/memory-recall-state-validation.js +121 -0
  159. package/dist/src/runtime/orchestration/role-calls/memory-recall-transactions.d.ts +3 -0
  160. package/dist/src/runtime/orchestration/role-calls/memory-recall-transactions.js +44 -0
  161. package/dist/src/runtime/orchestration/role-calls/reducer.js +1 -0
  162. package/dist/src/runtime/orchestration/role-calls/transaction-effect.d.ts +5 -0
  163. package/dist/src/runtime/orchestration/role-calls/transaction-effect.js +14 -0
  164. package/dist/src/runtime/orchestration/role-calls/transactions.js +3 -24
  165. package/dist/src/runtime/plugins/manifest-validator.js +4 -1
  166. package/dist/src/runtime/ports.d.ts +4 -0
  167. package/dist/src/runtime/request/bound-runtime-handler.d.ts +2 -0
  168. package/dist/src/runtime/request/bound-runtime-handler.js +25 -0
  169. package/dist/src/runtime/request/contracts.d.ts +6 -0
  170. package/dist/src/runtime/request/execution-agent-root-execution.js +12 -0
  171. package/dist/src/runtime/request/execution-facets.js +6 -0
  172. package/dist/src/runtime/request/execution-scope-surfaces.js +10 -0
  173. package/dist/src/runtime/request/execution-scope.d.ts +1 -1
  174. package/dist/src/runtime/request/handler.js +6 -0
  175. package/dist/src/runtime/request/root-contract.d.ts +7 -1
  176. package/dist/src/runtime/request/root-execution-kernel.js +33 -37
  177. package/dist/src/runtime/request/root-memory-recall.d.ts +11 -0
  178. package/dist/src/runtime/request/root-memory-recall.js +71 -0
  179. package/dist/src/runtime/request/root-observation-handoff.d.ts +17 -0
  180. package/dist/src/runtime/request/root-observation-handoff.js +44 -0
  181. package/dist/src/runtime/request/scheduled-execution.d.ts +9 -0
  182. package/dist/src/runtime/request/scheduled-execution.js +32 -0
  183. package/dist/src/runtime/request/session-admission.d.ts +17 -0
  184. package/dist/src/runtime/request/session-admission.js +88 -0
  185. package/dist/src/runtime/request/supervisor-root-execution-diagnostics.d.ts +1 -1
  186. package/dist/src/runtime/request/supervisor-root-execution.js +8 -0
  187. package/dist/src/runtime/runtime-environment.d.ts +31 -0
  188. package/dist/src/runtime/runtime-environment.js +102 -0
  189. package/dist/src/runtime/runtime-host-environment.d.ts +8 -0
  190. package/dist/src/runtime/runtime-host-environment.js +57 -0
  191. package/dist/src/runtime/runtime-host-lifecycle.d.ts +4 -0
  192. package/dist/src/runtime/runtime-host-lifecycle.js +64 -0
  193. package/dist/src/runtime/runtime-host-scheduler-ownership.d.ts +5 -0
  194. package/dist/src/runtime/runtime-host-scheduler-ownership.js +67 -0
  195. package/dist/src/runtime/runtime-host.d.ts +19 -0
  196. package/dist/src/runtime/runtime-host.js +63 -0
  197. package/dist/src/runtime/scheduler/calendar-time.d.ts +10 -0
  198. package/dist/src/runtime/scheduler/calendar-time.js +58 -0
  199. package/dist/src/runtime/scheduler/contracts.d.ts +143 -0
  200. package/dist/src/runtime/scheduler/contracts.js +1 -0
  201. package/dist/src/runtime/scheduler/file-store.d.ts +2 -0
  202. package/dist/src/runtime/scheduler/file-store.js +76 -0
  203. package/dist/src/runtime/scheduler/instant-validation.d.ts +4 -0
  204. package/dist/src/runtime/scheduler/instant-validation.js +69 -0
  205. package/dist/src/runtime/scheduler/interval-range.d.ts +8 -0
  206. package/dist/src/runtime/scheduler/interval-range.js +24 -0
  207. package/dist/src/runtime/scheduler/job-management.d.ts +8 -0
  208. package/dist/src/runtime/scheduler/job-management.js +212 -0
  209. package/dist/src/runtime/scheduler/journal-checkpoint.d.ts +9 -0
  210. package/dist/src/runtime/scheduler/journal-checkpoint.js +45 -0
  211. package/dist/src/runtime/scheduler/journal-durability.d.ts +8 -0
  212. package/dist/src/runtime/scheduler/journal-durability.js +59 -0
  213. package/dist/src/runtime/scheduler/journal-files.d.ts +14 -0
  214. package/dist/src/runtime/scheduler/journal-files.js +59 -0
  215. package/dist/src/runtime/scheduler/journal-head.d.ts +21 -0
  216. package/dist/src/runtime/scheduler/journal-head.js +81 -0
  217. package/dist/src/runtime/scheduler/journal-index-state.d.ts +31 -0
  218. package/dist/src/runtime/scheduler/journal-index-state.js +137 -0
  219. package/dist/src/runtime/scheduler/journal-index.d.ts +22 -0
  220. package/dist/src/runtime/scheduler/journal-index.js +195 -0
  221. package/dist/src/runtime/scheduler/journal-store.d.ts +21 -0
  222. package/dist/src/runtime/scheduler/journal-store.js +184 -0
  223. package/dist/src/runtime/scheduler/journal-transaction.d.ts +14 -0
  224. package/dist/src/runtime/scheduler/journal-transaction.js +104 -0
  225. package/dist/src/runtime/scheduler/next-occurrence.d.ts +3 -0
  226. package/dist/src/runtime/scheduler/next-occurrence.js +39 -0
  227. package/dist/src/runtime/scheduler/run-completion.d.ts +12 -0
  228. package/dist/src/runtime/scheduler/run-completion.js +77 -0
  229. package/dist/src/runtime/scheduler/run-list-query.d.ts +5 -0
  230. package/dist/src/runtime/scheduler/run-list-query.js +38 -0
  231. package/dist/src/runtime/scheduler/run-records.d.ts +6 -0
  232. package/dist/src/runtime/scheduler/run-records.js +41 -0
  233. package/dist/src/runtime/scheduler/schedule-update.d.ts +3 -0
  234. package/dist/src/runtime/scheduler/schedule-update.js +22 -0
  235. package/dist/src/runtime/scheduler/schedule-validation.d.ts +10 -0
  236. package/dist/src/runtime/scheduler/schedule-validation.js +132 -0
  237. package/dist/src/runtime/scheduler/scheduler-engine.d.ts +2 -0
  238. package/dist/src/runtime/scheduler/scheduler-engine.js +174 -0
  239. package/dist/src/runtime/scheduler/scheduler-service.d.ts +10 -0
  240. package/dist/src/runtime/scheduler/scheduler-service.js +115 -0
  241. package/dist/src/runtime/scheduler/service-context.d.ts +21 -0
  242. package/dist/src/runtime/scheduler/service-context.js +26 -0
  243. package/dist/src/runtime/scheduler/session-deletion-state.d.ts +9 -0
  244. package/dist/src/runtime/scheduler/session-deletion-state.js +30 -0
  245. package/dist/src/runtime/scheduler/snapshot-validation.d.ts +4 -0
  246. package/dist/src/runtime/scheduler/snapshot-validation.js +112 -0
  247. package/dist/src/runtime/scheduler/startup-recovery.d.ts +2 -0
  248. package/dist/src/runtime/scheduler/startup-recovery.js +38 -0
  249. package/dist/src/runtime/scheduler/validation-error.d.ts +4 -0
  250. package/dist/src/runtime/scheduler/validation-error.js +8 -0
  251. package/dist/src/runtime/scheduler/working-store.d.ts +3 -0
  252. package/dist/src/runtime/scheduler/working-store.js +8 -0
  253. package/dist/src/runtime/session/request-session.d.ts +1 -0
  254. package/dist/src/runtime/session/request-session.js +14 -1
  255. package/dist/src/runtime/session/session-attachment-deletion.d.ts +8 -0
  256. package/dist/src/runtime/session/session-attachment-deletion.js +87 -0
  257. package/dist/src/runtime/session/session-deletion-boundary.d.ts +10 -0
  258. package/dist/src/runtime/session/session-deletion-boundary.js +39 -0
  259. package/dist/src/runtime/session/session-deletion-cleanup.d.ts +7 -0
  260. package/dist/src/runtime/session/session-deletion-cleanup.js +62 -0
  261. package/dist/src/runtime/session/session-deletion-finalization.d.ts +7 -0
  262. package/dist/src/runtime/session/session-deletion-finalization.js +34 -0
  263. package/dist/src/runtime/session/session-deletion-receipts.d.ts +7 -0
  264. package/dist/src/runtime/session/session-deletion-receipts.js +18 -0
  265. package/dist/src/runtime/session/session-lifecycle-store.d.ts +21 -0
  266. package/dist/src/runtime/session/session-lifecycle-store.js +72 -0
  267. package/dist/src/runtime/session/session-mutation-queue.d.ts +3 -0
  268. package/dist/src/runtime/session/session-mutation-queue.js +15 -0
  269. package/dist/src/runtime/steps/execution-agent/capability-decision-parsing.d.ts +16 -0
  270. package/dist/src/runtime/steps/execution-agent/capability-decision-parsing.js +165 -0
  271. package/dist/src/runtime/steps/execution-agent/contracts.d.ts +3 -1
  272. package/dist/src/runtime/steps/execution-agent/decision-parsing.d.ts +2 -0
  273. package/dist/src/runtime/steps/execution-agent/decision-parsing.js +195 -0
  274. package/dist/src/runtime/steps/execution-agent/decision-validation.d.ts +30 -0
  275. package/dist/src/runtime/steps/execution-agent/decision-validation.js +127 -0
  276. package/dist/src/runtime/steps/execution-agent/format.d.ts +1 -0
  277. package/dist/src/runtime/steps/execution-agent/format.js +12 -0
  278. package/dist/src/runtime/steps/execution-agent/input.d.ts +2 -1
  279. package/dist/src/runtime/steps/execution-agent/input.js +17 -2
  280. package/dist/src/runtime/steps/execution-agent/parser.d.ts +1 -2
  281. package/dist/src/runtime/steps/execution-agent/parser.js +1 -472
  282. package/dist/src/runtime/steps/execution-agent/prompt.d.ts +2 -0
  283. package/dist/src/runtime/steps/execution-agent/prompt.js +2 -0
  284. package/dist/src/runtime/steps/execution-agent/reconsideration-context.js +4 -3
  285. package/dist/src/runtime/steps/execution-agent/response-input.js +5 -4
  286. package/dist/src/runtime/steps/execution-agent/response-run.d.ts +3 -0
  287. package/dist/src/runtime/steps/execution-agent/response-run.js +7 -3
  288. package/dist/src/runtime/steps/execution-agent/run.d.ts +2 -0
  289. package/dist/src/runtime/steps/execution-agent/run.js +2 -0
  290. package/dist/src/runtime/steps/execution-agent/state-context.d.ts +2 -1
  291. package/dist/src/runtime/steps/execution-agent/state-context.js +13 -5
  292. package/dist/src/runtime/steps/memory-recall-decision.d.ts +30 -0
  293. package/dist/src/runtime/steps/memory-recall-decision.js +101 -0
  294. package/dist/src/runtime/steps/memory-recall-prompt.d.ts +1 -0
  295. package/dist/src/runtime/steps/memory-recall-prompt.js +15 -0
  296. package/dist/src/runtime/steps/supervisor-decision/contracts.d.ts +4 -2
  297. package/dist/src/runtime/steps/supervisor-decision/diagnostics.d.ts +2 -0
  298. package/dist/src/runtime/steps/supervisor-decision/diagnostics.js +13 -6
  299. package/dist/src/runtime/steps/supervisor-decision/format.d.ts +2 -0
  300. package/dist/src/runtime/steps/supervisor-decision/format.js +41 -2
  301. package/dist/src/runtime/steps/supervisor-decision/input.d.ts +5 -1
  302. package/dist/src/runtime/steps/supervisor-decision/input.js +25 -5
  303. package/dist/src/runtime/steps/supervisor-decision/memory-recall-continuation.d.ts +10 -0
  304. package/dist/src/runtime/steps/supervisor-decision/memory-recall-continuation.js +32 -0
  305. package/dist/src/runtime/steps/supervisor-decision/parser.d.ts +2 -0
  306. package/dist/src/runtime/steps/supervisor-decision/parser.js +36 -1
  307. package/dist/src/runtime/steps/supervisor-decision/prompt.d.ts +3 -0
  308. package/dist/src/runtime/steps/supervisor-decision/prompt.js +16 -8
  309. package/dist/src/runtime/steps/supervisor-decision/response-recommendation.d.ts +13 -0
  310. package/dist/src/runtime/steps/supervisor-decision/response-recommendation.js +32 -0
  311. package/dist/src/runtime/steps/supervisor-decision/resume.d.ts +2 -0
  312. package/dist/src/runtime/steps/supervisor-decision/resume.js +13 -0
  313. package/dist/src/runtime/steps/supervisor-decision/run.d.ts +3 -0
  314. package/dist/src/runtime/steps/supervisor-decision/run.js +19 -0
  315. package/dist/src/runtime/steps/supervisor-decision/working-directory.js +7 -1
  316. package/dist/src/runtime/steps/supervisor-response/diagnostics.d.ts +1 -0
  317. package/dist/src/runtime/steps/supervisor-response/diagnostics.js +1 -0
  318. package/dist/src/runtime/steps/supervisor-response/input.d.ts +2 -1
  319. package/dist/src/runtime/steps/supervisor-response/input.js +17 -4
  320. package/dist/src/runtime/steps/supervisor-response/memory-authoring.d.ts +1 -0
  321. package/dist/src/runtime/steps/supervisor-response/memory-authoring.js +4 -0
  322. package/dist/src/runtime/steps/supervisor-response/prompt.d.ts +1 -0
  323. package/dist/src/runtime/steps/supervisor-response/prompt.js +8 -2
  324. package/dist/src/runtime/steps/supervisor-response/response-recommendation.d.ts +10 -0
  325. package/dist/src/runtime/steps/supervisor-response/response-recommendation.js +25 -0
  326. package/dist/src/runtime/steps/supervisor-response/run.d.ts +6 -1
  327. package/dist/src/runtime/steps/supervisor-response/run.js +26 -7
  328. package/dist/src/sessions/record/projection.js +1 -0
  329. package/dist/src/sessions/schedule-metadata.d.ts +8 -0
  330. package/dist/src/sessions/schedule-metadata.js +1 -0
  331. package/dist/src/sessions/session-service.d.ts +1 -0
  332. package/dist/src/sessions/session-service.js +1 -0
  333. package/dist/src/sessions/types.d.ts +2 -0
  334. package/dist/src/shared/http-server-shutdown.d.ts +4 -0
  335. package/dist/src/shared/http-server-shutdown.js +17 -0
  336. package/dist/src/shared/public-http/aggregate-gate.d.ts +3 -0
  337. package/dist/src/shared/public-http/aggregate-gate.js +87 -0
  338. package/dist/src/shared/public-http/deadline.d.ts +2 -0
  339. package/dist/src/shared/public-http/deadline.js +29 -0
  340. package/dist/src/shared/public-http/errors.d.ts +6 -0
  341. package/dist/src/shared/public-http/errors.js +11 -0
  342. package/dist/src/shared/public-http/limits.d.ts +8 -0
  343. package/dist/src/shared/public-http/limits.js +8 -0
  344. package/dist/src/shared/public-http/network-policy.d.ts +11 -0
  345. package/dist/src/shared/public-http/network-policy.js +178 -0
  346. package/dist/src/shared/public-http/public-http.d.ts +24 -0
  347. package/dist/src/shared/public-http/public-http.js +85 -0
  348. package/dist/src/shared/public-http/request-hop.d.ts +18 -0
  349. package/dist/src/shared/public-http/request-hop.js +140 -0
  350. package/dist/src/web-ui/app/ARCHITECTURE.md +66 -4
  351. package/dist/src/web-ui/app/app-bootstrap.js +53 -0
  352. package/dist/src/web-ui/app/app-dom.js +80 -0
  353. package/dist/src/web-ui/app/app.js +195 -212
  354. package/dist/src/web-ui/app/components/conversation-activity.d.ts +2 -0
  355. package/dist/src/web-ui/app/components/conversation-activity.js +34 -7
  356. package/dist/src/web-ui/app/components/conversation-role-cards.d.ts +1 -0
  357. package/dist/src/web-ui/app/components/conversation-role-cards.js +61 -5
  358. package/dist/src/web-ui/app/components/conversation-schedule.js +71 -0
  359. package/dist/src/web-ui/app/components/conversation-status.js +65 -0
  360. package/dist/src/web-ui/app/components/conversation-tools.d.ts +13 -0
  361. package/dist/src/web-ui/app/components/conversation-tools.js +284 -0
  362. package/dist/src/web-ui/app/components/conversation-view.js +39 -11
  363. package/dist/src/web-ui/app/components/dashboard/activity.js +61 -0
  364. package/dist/src/web-ui/app/components/dashboard/icons.js +23 -0
  365. package/dist/src/web-ui/app/components/dashboard/recent-conversations.js +64 -0
  366. package/dist/src/web-ui/app/components/dashboard/workspace.js +107 -0
  367. package/dist/src/web-ui/app/components/message-link-previews.d.ts +16 -0
  368. package/dist/src/web-ui/app/components/message-link-previews.js +179 -0
  369. package/dist/src/web-ui/app/components/schedules/details.js +101 -0
  370. package/dist/src/web-ui/app/components/schedules/form.d.ts +13 -0
  371. package/dist/src/web-ui/app/components/schedules/form.js +246 -0
  372. package/dist/src/web-ui/app/components/schedules/workspace-state.js +59 -0
  373. package/dist/src/web-ui/app/components/schedules/workspace.js +165 -0
  374. package/dist/src/web-ui/app/components/workspace-shell.js +48 -2
  375. package/dist/src/web-ui/app/configuration-feature.js +72 -0
  376. package/dist/src/web-ui/app/controllers/composer-attachments-controller.d.ts +1 -0
  377. package/dist/src/web-ui/app/controllers/composer-attachments-controller.js +17 -6
  378. package/dist/src/web-ui/app/controllers/composer-submit-controller.d.ts +2 -0
  379. package/dist/src/web-ui/app/controllers/composer-submit-controller.js +15 -1
  380. package/dist/src/web-ui/app/controllers/composer-surface-controller.js +58 -0
  381. package/dist/src/web-ui/app/controllers/composer-workspace-controller.d.ts +53 -0
  382. package/dist/src/web-ui/app/controllers/composer-workspace-controller.js +180 -0
  383. package/dist/src/web-ui/app/controllers/conversation-read-state-controller.d.ts +23 -0
  384. package/dist/src/web-ui/app/controllers/conversation-read-state-controller.js +82 -0
  385. package/dist/src/web-ui/app/controllers/conversation-session-controller.d.ts +8 -0
  386. package/dist/src/web-ui/app/controllers/conversation-session-controller.js +28 -39
  387. package/dist/src/web-ui/app/controllers/dashboard-controller.js +127 -0
  388. package/dist/src/web-ui/app/controllers/home-composer-feature.d.ts +40 -0
  389. package/dist/src/web-ui/app/controllers/home-composer-feature.js +119 -0
  390. package/dist/src/web-ui/app/controllers/home-conversation-activation.js +37 -0
  391. package/dist/src/web-ui/app/controllers/realtime-event-controller.d.ts +1 -0
  392. package/dist/src/web-ui/app/controllers/realtime-event-controller.js +74 -3
  393. package/dist/src/web-ui/app/controllers/runtime-selection-controller.d.ts +2 -1
  394. package/dist/src/web-ui/app/controllers/runtime-selection-controller.js +15 -14
  395. package/dist/src/web-ui/app/controllers/schedule-realtime.js +118 -0
  396. package/dist/src/web-ui/app/controllers/schedules-controller.js +421 -0
  397. package/dist/src/web-ui/app/controllers/session-controller.js +30 -3
  398. package/dist/src/web-ui/app/dashboard-feature.js +44 -0
  399. package/dist/src/web-ui/app/index.html +53 -1
  400. package/dist/src/web-ui/app/lib/composer-submission-scope.d.ts +21 -0
  401. package/dist/src/web-ui/app/lib/composer-submission-scope.js +13 -0
  402. package/dist/src/web-ui/app/lib/context-window-snapshot-order.d.ts +15 -0
  403. package/dist/src/web-ui/app/lib/context-window-snapshot-order.js +31 -0
  404. package/dist/src/web-ui/app/lib/conversation-role-model.d.ts +10 -1
  405. package/dist/src/web-ui/app/lib/conversation-role-model.js +97 -15
  406. package/dist/src/web-ui/app/lib/conversation-status-model.d.ts +12 -0
  407. package/dist/src/web-ui/app/lib/conversation-status-model.js +116 -0
  408. package/dist/src/web-ui/app/lib/dashboard-job-templates.js +41 -0
  409. package/dist/src/web-ui/app/lib/dashboard-presentation.js +126 -0
  410. package/dist/src/web-ui/app/lib/message-markdown.d.ts +5 -0
  411. package/dist/src/web-ui/app/lib/message-markdown.js +99 -0
  412. package/dist/src/web-ui/app/lib/message-url-policy.d.ts +1 -0
  413. package/dist/src/web-ui/app/lib/message-url-policy.js +13 -0
  414. package/dist/src/web-ui/app/lib/schedule-errors.js +29 -0
  415. package/dist/src/web-ui/app/lib/schedule-message.js +30 -0
  416. package/dist/src/web-ui/app/lib/schedule-presentation.js +81 -0
  417. package/dist/src/web-ui/app/lib/session-read-state.d.ts +22 -0
  418. package/dist/src/web-ui/app/lib/session-read-state.js +63 -0
  419. package/dist/src/web-ui/app/lib/text-format.js +2 -143
  420. package/dist/src/web-ui/app/lib/tool-activity-event.d.ts +26 -0
  421. package/dist/src/web-ui/app/lib/tool-activity-event.js +228 -0
  422. package/dist/src/web-ui/app/lib/tool-activity-model.d.ts +41 -0
  423. package/dist/src/web-ui/app/lib/tool-activity-model.js +255 -0
  424. package/dist/src/web-ui/app/lib/tool-timeline.d.ts +3 -0
  425. package/dist/src/web-ui/app/lib/tool-timeline.js +18 -0
  426. package/dist/src/web-ui/app/schedules-feature.js +87 -0
  427. package/dist/src/web-ui/app/services/message-link-preview-client.d.ts +14 -0
  428. package/dist/src/web-ui/app/services/message-link-preview-client.js +96 -0
  429. package/dist/src/web-ui/app/services/runtime-web-client/schedules.js +51 -0
  430. package/dist/src/web-ui/app/services/runtime-web-client.d.ts +37 -0
  431. package/dist/src/web-ui/app/services/runtime-web-client.js +13 -8
  432. package/dist/src/web-ui/app/styles/00-tokens-base.css +11 -11
  433. package/dist/src/web-ui/app/styles/18-dashboard.css +384 -0
  434. package/dist/src/web-ui/app/styles/20-chat-composer.css +1 -130
  435. package/dist/src/web-ui/app/styles/26-message-content.css +295 -0
  436. package/dist/src/web-ui/app/styles/27-conversation-tools.css +266 -0
  437. package/dist/src/web-ui/app/styles/28-conversation-status.css +52 -0
  438. package/dist/src/web-ui/app/styles/38-schedule-workspace.css +263 -0
  439. package/dist/src/web-ui/app/styles/38-schedules.css +352 -0
  440. package/dist/src/web-ui/app/styles/90-responsive.css +14 -0
  441. package/dist/src/web-ui/app/styles/91-schedules-responsive.css +72 -0
  442. package/dist/src/web-ui/app/styles/92-dashboard-responsive.css +88 -0
  443. package/dist/src/web-ui/app/styles.css +8 -0
  444. package/dist/src/web-ui/app/ui-behavior.d.ts +1 -1
  445. package/dist/src/web-ui/app/ui-behavior.js +3 -1
  446. package/dist/src/web-ui/app/vendor/README.md +15 -0
  447. package/dist/src/web-ui/app/vendor/markdown-it.LICENSE +22 -0
  448. package/dist/src/web-ui/app/vendor/markdown-it.js +3003 -0
  449. package/dist/src/web-ui/link-preview/metadata.d.ts +9 -0
  450. package/dist/src/web-ui/link-preview/metadata.js +97 -0
  451. package/dist/src/web-ui/link-preview/preview-cache.d.ts +4 -0
  452. package/dist/src/web-ui/link-preview/preview-cache.js +23 -0
  453. package/dist/src/web-ui/link-preview/raster-response.d.ts +9 -0
  454. package/dist/src/web-ui/link-preview/raster-response.js +49 -0
  455. package/dist/src/web-ui/link-preview/routes.d.ts +3 -0
  456. package/dist/src/web-ui/link-preview/routes.js +97 -0
  457. package/dist/src/web-ui/link-preview/service.d.ts +11 -0
  458. package/dist/src/web-ui/link-preview/service.js +117 -0
  459. package/dist/src/web-ui/local-runtime/api-router.d.ts +4 -1
  460. package/dist/src/web-ui/local-runtime/api-router.js +42 -73
  461. package/dist/src/web-ui/local-runtime/contracts.d.ts +2 -2
  462. package/dist/src/web-ui/local-runtime/environment-registry.d.ts +12 -1
  463. package/dist/src/web-ui/local-runtime/environment-registry.js +38 -3
  464. package/dist/src/web-ui/local-runtime/realtime-controller.js +3 -1
  465. package/dist/src/web-ui/local-runtime/request-execution.d.ts +5 -1
  466. package/dist/src/web-ui/local-runtime/request-execution.js +38 -2
  467. package/dist/src/web-ui/local-runtime/schedule-job-creation.d.ts +7 -0
  468. package/dist/src/web-ui/local-runtime/schedule-job-creation.js +62 -0
  469. package/dist/src/web-ui/local-runtime/schedule-management-routes.d.ts +30 -0
  470. package/dist/src/web-ui/local-runtime/schedule-management-routes.js +134 -0
  471. package/dist/src/web-ui/local-runtime/schedule-run-page.d.ts +5 -0
  472. package/dist/src/web-ui/local-runtime/schedule-run-page.js +23 -0
  473. package/dist/src/web-ui/local-runtime/session-routes.d.ts +17 -0
  474. package/dist/src/web-ui/local-runtime/session-routes.js +74 -0
  475. package/dist/src/web-ui/local-runtime-backend.d.ts +2 -0
  476. package/dist/src/web-ui/local-runtime-backend.js +11 -1
  477. package/dist/src/web-ui/schedule-creation-contract.d.ts +7 -0
  478. package/dist/src/web-ui/schedule-creation-contract.js +1 -0
  479. package/dist/src/web-ui/server-shutdown.d.ts +4 -0
  480. package/dist/src/web-ui/server-shutdown.js +32 -0
  481. package/dist/src/web-ui/server.js +13 -10
  482. package/dist/src/web-ui/session-read-state/availability.d.ts +16 -0
  483. package/dist/src/web-ui/session-read-state/availability.js +20 -0
  484. package/dist/src/web-ui/session-read-state/projection.d.ts +17 -0
  485. package/dist/src/web-ui/session-read-state/projection.js +71 -0
  486. package/dist/src/web-ui/session-read-state/service.d.ts +86 -0
  487. package/dist/src/web-ui/session-read-state/service.js +89 -0
  488. package/dist/src/web-ui/session-read-state/store.d.ts +22 -0
  489. package/dist/src/web-ui/session-read-state/store.js +110 -0
  490. package/docs/configuration.md +41 -1
  491. package/docs/long-term-memory.md +46 -5
  492. package/docs/runtime-invariant-coverage.md +1 -1
  493. package/docs/runtime-library.md +23 -0
  494. package/docs/runtime-public-contracts.md +32 -1
  495. package/package.json +3 -1
  496. package/plugins/code-outline/plugin.json +15 -0
  497. package/plugins/document-reader/plugin.json +17 -0
  498. package/plugins/filesystem/plugin.json +17 -2
  499. package/plugins/json-inspector/plugin.json +12 -0
  500. package/plugins/local-search/plugin.json +12 -0
  501. package/plugins/memory/plugin.json +26 -1
  502. package/plugins/memory/source/index.ts +10 -6
  503. package/plugins/memory/src/index.cjs +11 -7
  504. package/plugins/project-orientation/plugin.json +14 -0
  505. package/plugins/web/source/aggregate-gate.ts +8 -130
  506. package/plugins/web/source/deadline.ts +14 -50
  507. package/plugins/web/source/errors.ts +17 -11
  508. package/plugins/web/source/limits.ts +3 -6
  509. package/plugins/web/source/network-policy.ts +28 -226
  510. package/plugins/web/source/public-http.ts +17 -142
  511. package/plugins/web/source/request-hop.ts +11 -191
  512. package/plugins/web/src/index.cjs +119 -59
  513. package/runtime.config.schema.json +7 -0
  514. package/src/runtime/README.md +105 -1
  515. package/src/runtime/local-host/README.md +86 -0
  516. package/src/runtime/scheduler/README.md +166 -0
@@ -1,5 +1,5 @@
1
1
  import { materializeCall } from "../execution/call-binding.js";
2
- import { buildToolIntentEventMetadata } from "../shared/event-metadata.js";
2
+ import { buildToolExecutorEventMetadata, buildToolIntentEventMetadata, } from "../shared/event-metadata.js";
3
3
  import { rejectNormalInvocation } from "../shared/rejection.js";
4
4
  import { validatePublicInput } from "./input-preparation.js";
5
5
  export function emitNormalInvocationPayloadLifecycle(params) {
@@ -35,8 +35,12 @@ export function prepareNormalInvocationPayloadLifecycle(params) {
35
35
  const event = materializePayloadLifecycleEvent(params.input, base);
36
36
  return Object.freeze({
37
37
  status: "prepared",
38
- emit: () => {
39
- params.onEvent?.(event.name, event.payload);
38
+ emit: (executionId, executorIdentity) => {
39
+ params.onEvent?.(event.name, {
40
+ ...event.payload,
41
+ ...buildToolExecutorEventMetadata(executorIdentity),
42
+ ...(executionId ? { executionId } : {}),
43
+ });
40
44
  return Object.freeze({ status: "emitted" });
41
45
  },
42
46
  });
@@ -1,3 +1,4 @@
1
+ import type { ToolEventExecutorIdentity } from "./event-metadata.js";
1
2
  import type { RegisteredToolNormalInvocation, ToolActionSummary, ToolExecutionResult, ToolExecutionSharedState, ToolNormalInvocationEffect, ToolNormalInvocationOperation } from "../../../../capabilities/tool-types.js";
2
3
  import type { ToolApprovalController, ToolPermissionMode, ToolRegistry } from "../../../ports.js";
3
4
  import type { RegisteredToolPayloadContextPlan, RegisteredToolStagedPayloadPlan } from "../../registered-tool-payload-plan.js";
@@ -37,7 +38,14 @@ export type RegisteredToolPreparedNormalInvocation = Readonly<{
37
38
  actionFingerprint: string;
38
39
  /** Exact validated non-payload controls accepted for this invocation. */
39
40
  acceptedControls: Readonly<Record<string, unknown>>;
40
- execute(): Promise<RegisteredToolNormalInvocationResult>;
41
+ /** Client-only terminal event when admission is rejected before execution. */
42
+ emitRejection(input: Readonly<{
43
+ executionId: string;
44
+ executorIdentity: ToolEventExecutorIdentity;
45
+ errorCode: string;
46
+ }>): void;
47
+ /** Canonical execution identity for client lifecycle events only. */
48
+ execute(executionId?: string, executorIdentity?: ToolEventExecutorIdentity): Promise<RegisteredToolNormalInvocationResult>;
41
49
  }>;
42
50
  export type RegisteredToolNormalInvocationPreparation = RegisteredToolPreparedNormalInvocation | RegisteredToolNormalInvocationRejection;
43
51
  export type RegisteredToolNormalInvocationPayloadLifecyclePhase = "started" | "completed" | "failed";
@@ -46,13 +54,20 @@ export type RegisteredToolNormalInvocationPayloadLifecycleResult = Readonly<{
46
54
  }> | RegisteredToolNormalInvocationRejection;
47
55
  export type RegisteredToolPreparedNormalInvocationPayloadLifecycle = Readonly<{
48
56
  status: "prepared";
49
- emit(): Readonly<{
57
+ /** Canonical execution identity for client lifecycle events only. */
58
+ emit(executionId?: string, executorIdentity?: ToolEventExecutorIdentity): Readonly<{
50
59
  status: "emitted";
51
60
  }>;
52
61
  }>;
53
62
  export type RegisteredToolNormalInvocationPayloadLifecyclePreparation = RegisteredToolPreparedNormalInvocationPayloadLifecycle | RegisteredToolNormalInvocationRejection;
54
63
  export type RegisteredToolNormalInvocationExecutor = Readonly<{
55
64
  operations: readonly RegisteredToolNormalInvocationProjection[];
65
+ /** Prepares client-only rejection reporting for a registered source handle. */
66
+ prepareRejectionEvent(input: Readonly<{
67
+ handle: RegisteredToolNormalInvocationHandle;
68
+ controls: Readonly<Record<string, unknown>>;
69
+ intent?: string;
70
+ }>): RegisteredToolPreparedNormalInvocation["emitRejection"] | undefined;
56
71
  /**
57
72
  * Emits the existing client payload lifecycle without exposing the bound
58
73
  * tool name or payload parameter to the profile that owns model context.
@@ -1,2 +1,11 @@
1
1
  import type { ToolCall, ToolDefinition } from "../../../../capabilities/tool-types.js";
2
2
  export declare function buildToolIntentEventMetadata(call: ToolCall, intent: string | undefined, definition?: ToolDefinition): Record<string, unknown> | undefined;
3
+ /** Canonical caller identity used only to attribute client lifecycle events. */
4
+ export type ToolEventExecutorIdentity = Readonly<{
5
+ callId: string;
6
+ roleId: string;
7
+ }>;
8
+ export declare function buildToolExecutorEventMetadata(identity: ToolEventExecutorIdentity | undefined): {
9
+ roleCallId: string;
10
+ executorRole: string;
11
+ } | undefined;
@@ -8,3 +8,11 @@ export function buildToolIntentEventMetadata(call, intent, definition) {
8
8
  intent,
9
9
  };
10
10
  }
11
+ export function buildToolExecutorEventMetadata(identity) {
12
+ if (!identity)
13
+ return undefined;
14
+ return {
15
+ roleCallId: identity.callId,
16
+ executorRole: identity.roleId,
17
+ };
18
+ }
@@ -166,6 +166,11 @@ async function prepareRegisteredToolWorkerCapability(params, input, payloadObser
166
166
  selectedTargetReferences,
167
167
  rejectedExecution: canonicalRejection,
168
168
  payloadObservability,
169
+ emitRejection: params.executor.prepareRejectionEvent({
170
+ handle: params.projection.handle,
171
+ controls: effectiveControls,
172
+ intent: input.intent,
173
+ }),
169
174
  ...(preparedPayload.body === undefined
170
175
  ? {}
171
176
  : { payload: preparedPayload.body }),
@@ -183,6 +188,11 @@ async function prepareRegisteredToolWorkerCapability(params, input, payloadObser
183
188
  tracePreparedExecutionStarted(params, input, operationId, executionId);
184
189
  const rejectedExecution = executionFreshnessRejection(input.executionFreshness);
185
190
  if (rejectedExecution) {
191
+ normalPreparation.emitRejection({
192
+ executionId,
193
+ executorIdentity: input.call,
194
+ errorCode: rejectedExecution.sourceIssueCode,
195
+ });
186
196
  return completeRuntimeRejection({
187
197
  params,
188
198
  input,
@@ -192,7 +202,7 @@ async function prepareRegisteredToolWorkerCapability(params, input, payloadObser
192
202
  rejectedExecution,
193
203
  });
194
204
  }
195
- const externalResult = await normalPreparation.execute();
205
+ const externalResult = await normalPreparation.execute(executionId, input.call);
196
206
  const observed = observeExternalResult(externalResult, params.projection.operation.effect, input.call.parentCallId === null);
197
207
  const observedResult = attachTargetReferences(observed.result, selectedTargetReferences);
198
208
  traceRegisteredToolWorkerCapabilityExecutionCompleted(params.diagnostic, operationId, input.call, executionId, observedResult, externalResult.status, {
@@ -235,6 +245,11 @@ function preparedRuntimeRejection(input) {
235
245
  try {
236
246
  input.payloadObservability.release(executionId);
237
247
  tracePreparedExecutionStarted(input.params, input.input, input.operationId, executionId);
248
+ input.emitRejection?.({
249
+ executionId,
250
+ executorIdentity: input.input.call,
251
+ errorCode: input.rejectedExecution.sourceIssueCode,
252
+ });
238
253
  return completeRuntimeRejection({ ...input, executionId });
239
254
  }
240
255
  catch (error) {
@@ -11,8 +11,8 @@ export function createDeferredPayloadObservability(params) {
11
11
  const prepared = params.executor.preparePayloadLifecycle(input);
12
12
  if (prepared.status === "rejected")
13
13
  return prepared;
14
- deferred.push(() => {
15
- prepared.emit();
14
+ deferred.push((executionId) => {
15
+ prepared.emit(executionId, params.call);
16
16
  });
17
17
  return Object.freeze({ status: "emitted" });
18
18
  },
@@ -0,0 +1,11 @@
1
+ import type { SessionStore } from "../ports.js";
2
+ import type { SchedulerRun, SchedulerRunOutcome } from "../scheduler/contracts.js";
3
+ export type ScheduledRequestEvent = Record<string, unknown>;
4
+ export type ScheduledRequestSettlement = Readonly<{
5
+ outcome: SchedulerRunOutcome;
6
+ event: ScheduledRequestEvent;
7
+ }>;
8
+ export declare function isScheduledTerminalEvent(event: ScheduledRequestEvent): boolean;
9
+ export declare function failedScheduledRequestOutcome(error: unknown): ScheduledRequestSettlement;
10
+ /** A captured completion is provisional until canonical assistant persistence is proven. */
11
+ export declare function resolveScheduledRequestOutcome(terminal: ScheduledRequestEvent | undefined, sessions: SessionStore, run: SchedulerRun): Promise<ScheduledRequestSettlement>;
@@ -0,0 +1,41 @@
1
+ export function isScheduledTerminalEvent(event) {
2
+ return event.type === "completed" || event.type === "failed";
3
+ }
4
+ export function failedScheduledRequestOutcome(error) {
5
+ const message = error instanceof Error ? error.message : String(error);
6
+ return {
7
+ outcome: { status: "failed", error: message },
8
+ event: { type: "failed", error: message },
9
+ };
10
+ }
11
+ /** A captured completion is provisional until canonical assistant persistence is proven. */
12
+ export async function resolveScheduledRequestOutcome(terminal, sessions, run) {
13
+ if (!terminal)
14
+ return failedScheduledRequestOutcome("scheduled_request_missing_terminal");
15
+ if (terminal.type === "failed") {
16
+ const failure = failedScheduledRequestOutcome(terminal.error ?? "scheduled_request_failed");
17
+ return { ...failure, event: { ...terminal, ...failure.event } };
18
+ }
19
+ try {
20
+ const session = await sessions.getSessionById(run.sessionId);
21
+ const result = session?.messages.find((message) => isScheduledAssistantReply(message, run.requestId));
22
+ if (!result)
23
+ return failedScheduledRequestOutcome("scheduled_result_not_persisted");
24
+ return {
25
+ outcome: {
26
+ status: "succeeded",
27
+ resultText: String(terminal.output ?? ""),
28
+ resultMessageId: result.id,
29
+ },
30
+ event: terminal,
31
+ };
32
+ }
33
+ catch (error) {
34
+ return failedScheduledRequestOutcome(error);
35
+ }
36
+ }
37
+ function isScheduledAssistantReply(message, requestId) {
38
+ if (message.role !== "assistant")
39
+ return false;
40
+ return message.requestId === requestId;
41
+ }
@@ -0,0 +1,19 @@
1
+ import type { RuntimeConfig, SessionStore } from "../ports.js";
2
+ import type { RuntimeRequestHandler, RuntimeRequestOptions } from "../composition.js";
3
+ import type { SchedulerRun } from "../scheduler/contracts.js";
4
+ import type { SessionRequestAdmission } from "../request/session-admission.js";
5
+ import { type ScheduledRequestEvent } from "./scheduled-request-outcome.js";
6
+ export declare function createRuntimeScheduler(options: {
7
+ config: RuntimeConfig;
8
+ sessions: SessionStore;
9
+ admission: SessionRequestAdmission;
10
+ isDeleted(sessionId: string): boolean;
11
+ handle: RuntimeRequestHandler["handle"];
12
+ requestOptions?: (run: SchedulerRun) => RuntimeRequestOptions;
13
+ }): {
14
+ scheduler: import("../scheduler/contracts.js").SchedulerService;
15
+ start: () => Promise<void>;
16
+ ensureStarted(): Promise<void>;
17
+ stop(): Promise<void>;
18
+ subscribe(listener: (event: ScheduledRequestEvent) => void): () => void;
19
+ };
@@ -0,0 +1,138 @@
1
+ import { join } from "node:path";
2
+ import { createFileSchedulerStore } from "../scheduler/file-store.js";
3
+ import { createSchedulerService } from "../scheduler/scheduler-service.js";
4
+ import { withScheduledExecution } from "../request/scheduled-execution.js";
5
+ import { resolveModelSelection } from "../model/model-selection.js";
6
+ import { failedScheduledRequestOutcome, isScheduledTerminalEvent, resolveScheduledRequestOutcome, } from "./scheduled-request-outcome.js";
7
+ export function createRuntimeScheduler(options) {
8
+ const listeners = new Set();
9
+ let startup;
10
+ let stopped = false;
11
+ let generation = 0;
12
+ function canPublishRunEvents(runGeneration) {
13
+ if (stopped)
14
+ return false;
15
+ return runGeneration === generation;
16
+ }
17
+ function publish(event, sessionId, runGeneration) {
18
+ if (!canPublishRunEvents(runGeneration))
19
+ return;
20
+ const isDeletedSession = options.isDeleted(sessionId);
21
+ const isTerminalEvent = isScheduledTerminalEvent(event);
22
+ if (isDeletedSession && !isTerminalEvent)
23
+ return;
24
+ const outbound = isDeletedSession
25
+ ? { ...event, sessionDeleted: true }
26
+ : event;
27
+ for (const listener of [...listeners]) {
28
+ if (!canPublishRunEvents(runGeneration))
29
+ return;
30
+ try {
31
+ listener(outbound);
32
+ }
33
+ catch {
34
+ /* A view cannot alter execution settlement. */
35
+ }
36
+ }
37
+ }
38
+ async function execute(job, run) {
39
+ const runGeneration = generation;
40
+ const publishForRun = (event) => {
41
+ publish({
42
+ ...event,
43
+ requestId: run.requestId,
44
+ sessionId: job.sessionId,
45
+ environment: job.environmentId,
46
+ }, job.sessionId, runGeneration);
47
+ };
48
+ const finish = (settlement) => {
49
+ publishForRun(settlement.event);
50
+ return settlement.outcome;
51
+ };
52
+ if (options.isDeleted(job.sessionId))
53
+ return finish(failedScheduledRequestOutcome("session_deleted"));
54
+ const selection = resolveModelSelection({
55
+ agentMode: job.agentMode,
56
+ modelPreference: { profileId: job.modelProfileId, scope: "all" },
57
+ modelPolicy: options.config.models,
58
+ });
59
+ if (selection.execution.primaryProfileId !== job.modelProfileId) {
60
+ return finish(failedScheduledRequestOutcome("scheduled_model_unavailable"));
61
+ }
62
+ let terminal;
63
+ let acceptingEvents = true;
64
+ const ws = {
65
+ send(data) {
66
+ if (!acceptingEvents)
67
+ return;
68
+ const event = JSON.parse(data);
69
+ if (event.requestId !== run.requestId)
70
+ return;
71
+ if (isScheduledTerminalEvent(event)) {
72
+ terminal = event;
73
+ return;
74
+ }
75
+ publishForRun(event);
76
+ },
77
+ };
78
+ const message = {
79
+ type: "run_request",
80
+ requestId: run.requestId,
81
+ sessionId: job.sessionId,
82
+ text: run.prompt,
83
+ agentMode: job.agentMode,
84
+ modelPreference: { profileId: job.modelProfileId, scope: "all" },
85
+ toolPermissionMode: "full_access",
86
+ };
87
+ try {
88
+ await options.handle(ws, message, withScheduledExecution(options.requestOptions?.(run), run));
89
+ }
90
+ catch (error) {
91
+ terminal = failedScheduledRequestOutcome(error).event;
92
+ }
93
+ finally {
94
+ acceptingEvents = false;
95
+ }
96
+ return finish(await resolveScheduledRequestOutcome(terminal, options.sessions, run));
97
+ }
98
+ const scheduler = createSchedulerService({
99
+ environmentId: options.config.runtimeId,
100
+ store: createFileSchedulerStore(join(options.config.paths.runtimeDir, "scheduler")),
101
+ executor: {
102
+ tryReserve: (sessionId) => options.admission.tryReserve(sessionId),
103
+ sessionExists: async (sessionId) => {
104
+ if (options.isDeleted(sessionId))
105
+ return false;
106
+ return (await options.sessions.getSessionById(sessionId)) !== null;
107
+ },
108
+ start: execute,
109
+ },
110
+ });
111
+ function start() {
112
+ stopped = false;
113
+ startup ??= scheduler.start();
114
+ return startup;
115
+ }
116
+ return {
117
+ scheduler,
118
+ start,
119
+ ensureStarted() {
120
+ if (stopped)
121
+ return Promise.reject(new Error("scheduler_stopped"));
122
+ return start();
123
+ },
124
+ stop() {
125
+ stopped = true;
126
+ generation += 1;
127
+ startup = undefined;
128
+ listeners.clear();
129
+ return scheduler.stop();
130
+ },
131
+ subscribe(listener) {
132
+ listeners.add(listener);
133
+ return () => {
134
+ listeners.delete(listener);
135
+ };
136
+ },
137
+ };
138
+ }
@@ -0,0 +1,55 @@
1
+ export declare const scheduleCreateOperations: readonly [Readonly<{
2
+ operationId: string;
3
+ summary: string;
4
+ input: import("../../../capabilities/tool-types.js").ToolNormalInvocationInput;
5
+ selectionControlIds?: readonly string[];
6
+ fixedParams?: Readonly<Record<string, import("../../../capabilities/tool-types.js").ToolNormalInvocationFixedValue>>;
7
+ payload?: import("../../../capabilities/tool-types.js").ToolNormalInvocationPayload;
8
+ effect: import("../../../capabilities/tool-types.js").ToolNormalInvocationEffect;
9
+ approval: import("../../../capabilities/tool-types.js").ToolNormalInvocationApproval;
10
+ }>, Readonly<{
11
+ operationId: string;
12
+ summary: string;
13
+ input: import("../../../capabilities/tool-types.js").ToolNormalInvocationInput;
14
+ selectionControlIds?: readonly string[];
15
+ fixedParams?: Readonly<Record<string, import("../../../capabilities/tool-types.js").ToolNormalInvocationFixedValue>>;
16
+ payload?: import("../../../capabilities/tool-types.js").ToolNormalInvocationPayload;
17
+ effect: import("../../../capabilities/tool-types.js").ToolNormalInvocationEffect;
18
+ approval: import("../../../capabilities/tool-types.js").ToolNormalInvocationApproval;
19
+ }>, Readonly<{
20
+ operationId: string;
21
+ summary: string;
22
+ input: import("../../../capabilities/tool-types.js").ToolNormalInvocationInput;
23
+ selectionControlIds?: readonly string[];
24
+ fixedParams?: Readonly<Record<string, import("../../../capabilities/tool-types.js").ToolNormalInvocationFixedValue>>;
25
+ payload?: import("../../../capabilities/tool-types.js").ToolNormalInvocationPayload;
26
+ effect: import("../../../capabilities/tool-types.js").ToolNormalInvocationEffect;
27
+ approval: import("../../../capabilities/tool-types.js").ToolNormalInvocationApproval;
28
+ }>, Readonly<{
29
+ operationId: string;
30
+ summary: string;
31
+ input: import("../../../capabilities/tool-types.js").ToolNormalInvocationInput;
32
+ selectionControlIds?: readonly string[];
33
+ fixedParams?: Readonly<Record<string, import("../../../capabilities/tool-types.js").ToolNormalInvocationFixedValue>>;
34
+ payload?: import("../../../capabilities/tool-types.js").ToolNormalInvocationPayload;
35
+ effect: import("../../../capabilities/tool-types.js").ToolNormalInvocationEffect;
36
+ approval: import("../../../capabilities/tool-types.js").ToolNormalInvocationApproval;
37
+ }>, Readonly<{
38
+ operationId: string;
39
+ summary: string;
40
+ input: import("../../../capabilities/tool-types.js").ToolNormalInvocationInput;
41
+ selectionControlIds?: readonly string[];
42
+ fixedParams?: Readonly<Record<string, import("../../../capabilities/tool-types.js").ToolNormalInvocationFixedValue>>;
43
+ payload?: import("../../../capabilities/tool-types.js").ToolNormalInvocationPayload;
44
+ effect: import("../../../capabilities/tool-types.js").ToolNormalInvocationEffect;
45
+ approval: import("../../../capabilities/tool-types.js").ToolNormalInvocationApproval;
46
+ }>, Readonly<{
47
+ operationId: string;
48
+ summary: string;
49
+ input: import("../../../capabilities/tool-types.js").ToolNormalInvocationInput;
50
+ selectionControlIds?: readonly string[];
51
+ fixedParams?: Readonly<Record<string, import("../../../capabilities/tool-types.js").ToolNormalInvocationFixedValue>>;
52
+ payload?: import("../../../capabilities/tool-types.js").ToolNormalInvocationPayload;
53
+ effect: import("../../../capabilities/tool-types.js").ToolNormalInvocationEffect;
54
+ approval: import("../../../capabilities/tool-types.js").ToolNormalInvocationApproval;
55
+ }>];
@@ -0,0 +1,30 @@
1
+ import { scheduleDetailProperties, scheduleTimingProperties, } from "./tool-input-properties.js";
2
+ function createScheduleOperation(kind, timingSummary, timingFields, requiredTiming = timingFields) {
3
+ return {
4
+ operationId: `create_${kind}`,
5
+ summary: `Schedule a future request in this conversation using the current model. Write prompt as the complete instruction the assistant must execute when this Job runs. For reminders, explicitly ask it to remind the user to act; preserve the exact action and target. For delegated work, retain the work itself. Put timing in the schedule fields and ask for missing timing details before creating. ${timingSummary}`,
6
+ effect: "mutating",
7
+ approval: "request_policy",
8
+ fixedParams: { action: "create", scheduleKind: kind },
9
+ input: {
10
+ type: "object",
11
+ additionalProperties: false,
12
+ properties: {
13
+ ...scheduleDetailProperties,
14
+ timeZone: scheduleTimingProperties.timeZone,
15
+ ...Object.fromEntries(timingFields.map((field) => [field, scheduleTimingProperties[field]])),
16
+ },
17
+ required: ["title", "prompt", ...requiredTiming],
18
+ },
19
+ };
20
+ }
21
+ export const scheduleCreateOperations = [
22
+ createScheduleOperation("timer", "Run once after delayMs milliseconds.", [
23
+ "delayMs",
24
+ ]),
25
+ createScheduleOperation("once", "Run once at an exact ISO instant in at, including its UTC offset.", ["at"]),
26
+ createScheduleOperation("interval", "Repeat everyMs milliseconds with optional exact first-run anchorAt ISO instant.", ["everyMs", "anchorAt"], ["everyMs"]),
27
+ createScheduleOperation("daily", "Run daily at exact HH:mm in at and an explicit IANA timeZone.", ["at"], ["at", "timeZone"]),
28
+ createScheduleOperation("weekly", "Run on weekdays (Sunday=0) at exact HH:mm in at and an explicit IANA timeZone.", ["at", "weekdays"], ["at", "weekdays", "timeZone"]),
29
+ createScheduleOperation("monthly", "Run on dayOfMonth at exact HH:mm in at and an explicit IANA timeZone.", ["at", "dayOfMonth"], ["at", "dayOfMonth", "timeZone"]),
30
+ ];
@@ -0,0 +1 @@
1
+ export declare function requireCreateCalendarTimeZone(params: Record<string, unknown>): void;
@@ -0,0 +1,11 @@
1
+ export function requireCreateCalendarTimeZone(params) {
2
+ const isCalendarSchedule = ["daily", "weekly", "monthly"].includes(String(params.scheduleKind));
3
+ if (!isCalendarSchedule)
4
+ return;
5
+ if (typeof params.timeZone !== "string") {
6
+ throw new Error("schedule_time_zone_required");
7
+ }
8
+ if (!params.timeZone.trim()) {
9
+ throw new Error("schedule_time_zone_required");
10
+ }
11
+ }
@@ -0,0 +1,25 @@
1
+ import type { SchedulerJob } from "../../scheduler/contracts.js";
2
+ /** A bounded, passive projection; cursors bind to exact Jobs in this session. */
3
+ export declare function createSchedulerJobPage(jobs: readonly SchedulerJob[], params: {
4
+ cursor?: unknown;
5
+ limit?: unknown;
6
+ }): {
7
+ jobs: {
8
+ id: string;
9
+ environmentId: string;
10
+ sessionId: string;
11
+ title: string;
12
+ modelProfileId: string;
13
+ agentMode: import("../../../shared/types.js").AgentMode;
14
+ toolPermissionMode: "full_access";
15
+ timeZone: string;
16
+ schedule: import("../../scheduler/contracts.js").SchedulerSchedule;
17
+ state: import("../../scheduler/contracts.js").SchedulerJobState;
18
+ createdAt: string;
19
+ updatedAt: string;
20
+ nextRunAt: string | null;
21
+ revision: number;
22
+ }[];
23
+ omittedCount: number;
24
+ nextCursor: string | null;
25
+ };
@@ -0,0 +1,40 @@
1
+ /** A bounded, passive projection; cursors bind to exact Jobs in this session. */
2
+ export function createSchedulerJobPage(jobs, params) {
3
+ const limit = params.limit === undefined ? 100 : params.limit;
4
+ if (!isSupportedPageLimit(limit))
5
+ throw new Error("schedule_page_limit_invalid");
6
+ const ordered = [...jobs].sort(compareNewestJobs);
7
+ const offset = cursorOffset(ordered, params.cursor);
8
+ const page = ordered.slice(offset, offset + limit);
9
+ const omittedCount = Math.max(0, ordered.length - offset - page.length);
10
+ return {
11
+ jobs: page.map(({ prompt: _prompt, ...job }) => job),
12
+ omittedCount,
13
+ nextCursor: omittedCount > 0 ? page.at(-1).id : null,
14
+ };
15
+ }
16
+ function isSupportedPageLimit(value) {
17
+ if (!Number.isSafeInteger(value))
18
+ return false;
19
+ if (Number(value) < 1)
20
+ return false;
21
+ return Number(value) <= 100;
22
+ }
23
+ function cursorOffset(jobs, cursor) {
24
+ if (cursor === undefined)
25
+ return 0;
26
+ if (typeof cursor !== "string")
27
+ throw new Error("schedule_cursor_invalid");
28
+ if (!cursor)
29
+ throw new Error("schedule_cursor_invalid");
30
+ const index = jobs.findIndex((job) => job.id === cursor);
31
+ if (index < 0)
32
+ throw new Error("schedule_cursor_not_found");
33
+ return index + 1;
34
+ }
35
+ function compareNewestJobs(left, right) {
36
+ const created = right.createdAt.localeCompare(left.createdAt);
37
+ if (created !== 0)
38
+ return created;
39
+ return right.id.localeCompare(left.id);
40
+ }
@@ -0,0 +1,2 @@
1
+ import type { RuntimeConfig } from "../../ports.js";
2
+ export declare function requireAvailableScheduleModel(config: RuntimeConfig, modelProfileId: unknown): void;
@@ -0,0 +1,15 @@
1
+ import { resolveModelSelection } from "../../model/model-selection.js";
2
+ export function requireAvailableScheduleModel(config, modelProfileId) {
3
+ if (typeof modelProfileId !== "string") {
4
+ throw new Error("scheduler_model_required");
5
+ }
6
+ const selection = resolveModelSelection({
7
+ agentMode: "reasoning",
8
+ modelPreference: { profileId: modelProfileId },
9
+ modelPolicy: config.models,
10
+ });
11
+ const isSelectedScheduleModel = selection.execution.primaryProfileId === modelProfileId;
12
+ if (!isSelectedScheduleModel) {
13
+ throw new Error("scheduler_model_unavailable");
14
+ }
15
+ }
@@ -0,0 +1,2 @@
1
+ import type { ToolNormalInvocationContract } from "../../../capabilities/tool-types.js";
2
+ export declare const schedulingToolContract: ToolNormalInvocationContract;
@@ -0,0 +1,35 @@
1
+ import { scheduleCreateOperations } from "./create-operations.js";
2
+ import { scheduleUpdateOperations } from "./update-operations.js";
3
+ import { scheduleTextField as text } from "./tool-input-properties.js";
4
+ const identity = { jobId: text(200) };
5
+ function operation(operationId, summary, properties, required, effect) {
6
+ return {
7
+ operationId,
8
+ summary,
9
+ effect,
10
+ approval: "request_policy",
11
+ fixedParams: { action: operationId },
12
+ input: {
13
+ type: "object",
14
+ additionalProperties: false,
15
+ properties,
16
+ required,
17
+ },
18
+ };
19
+ }
20
+ export const schedulingToolContract = {
21
+ version: 1,
22
+ operations: [
23
+ ...scheduleCreateOperations,
24
+ operation("list", "List this conversation's schedules newest first, without executing them or exposing their task prompts. Each page has up to 100 Jobs; pass its nextCursor to retrieve the next page until null. A stale cursor requires a fresh list without cursor.", {
25
+ cursor: text(200),
26
+ limit: { type: "integer", minimum: 1, maximum: 100 },
27
+ }, [], "read_only"),
28
+ operation("get", "Read this conversation's Job and recent run history by exact Job ID.", identity, ["jobId"], "read_only"),
29
+ ...scheduleUpdateOperations,
30
+ operation("pause", "Pause future starts of this Job, including its pending occurrence. An already-started run continues.", identity, ["jobId"], "mutating"),
31
+ operation("resume", "Resume this paused Job from its next future occurrence, without backfill.", identity, ["jobId"], "mutating"),
32
+ operation("cancel", "Cancel this Job and its pending occurrence. An already-started run continues.", identity, ["jobId"], "mutating"),
33
+ operation("run_now", "Request one immediate run of this Job; wait if this conversation is busy. Does not change its ordinary recurrence.", identity, ["jobId"], "mutating"),
34
+ ],
35
+ };
@@ -0,0 +1,43 @@
1
+ import type { ToolNormalInvocationPropertyInput } from "../../../capabilities/tool-types.js";
2
+ export declare const scheduleTextField: (maxLength: number) => ToolNormalInvocationPropertyInput;
3
+ export declare const scheduleTimingProperties: {
4
+ scheduleKind: {
5
+ type: "string";
6
+ enum: string[];
7
+ };
8
+ at: ToolNormalInvocationPropertyInput;
9
+ delayMs: {
10
+ type: "integer";
11
+ minimum: number;
12
+ maximum: number;
13
+ };
14
+ everyMs: {
15
+ type: "integer";
16
+ minimum: number;
17
+ maximum: number;
18
+ };
19
+ anchorAt: ToolNormalInvocationPropertyInput;
20
+ weekdays: {
21
+ type: "array";
22
+ items: {
23
+ type: "integer";
24
+ minimum: number;
25
+ maximum: number;
26
+ };
27
+ minItems: number;
28
+ maxItems: number;
29
+ };
30
+ dayOfMonth: {
31
+ type: "integer";
32
+ minimum: number;
33
+ maximum: number;
34
+ };
35
+ timeZone: ToolNormalInvocationPropertyInput;
36
+ };
37
+ export declare const scheduleDetailProperties: {
38
+ title: ToolNormalInvocationPropertyInput;
39
+ prompt: {
40
+ type: "string";
41
+ minLength: number;
42
+ };
43
+ };