@abot-ai/runtime 1.1.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 (731) hide show
  1. package/README.md +20 -3
  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 +6 -1
  14. package/dist/src/cli/abot.js +2 -11
  15. package/dist/src/model-gateway/providers/ollama/generation-options.d.ts +1 -3
  16. package/dist/src/model-gateway/providers/ollama/generation-options.js +1 -5
  17. package/dist/src/model-gateway/providers/ollama/payload.js +0 -8
  18. package/dist/src/model-gateway/server/request-body.js +1 -0
  19. package/dist/src/plugin-sdk/index.d.ts +2 -0
  20. package/dist/src/plugin-sdk/index.js +2 -0
  21. package/dist/src/plugin-sdk/tool-availability-brief.d.ts +9 -0
  22. package/dist/src/plugin-sdk/tool-availability-brief.js +48 -0
  23. package/dist/src/plugin-sdk/tool-availability-overview.d.ts +9 -0
  24. package/dist/src/plugin-sdk/tool-availability-overview.js +62 -0
  25. package/dist/src/runtime/adapters/in-memory-session-store.js +1 -0
  26. package/dist/src/runtime/adapters/long-term-memory/file-lock/acquisition.js +11 -2
  27. package/dist/src/runtime/adapters/long-term-memory/file-lock/contracts.d.ts +2 -0
  28. package/dist/src/runtime/adapters/long-term-memory/file-lock/synchronous-release.d.ts +2 -0
  29. package/dist/src/runtime/adapters/long-term-memory/file-lock/synchronous-release.js +40 -0
  30. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/approval.d.ts +3 -0
  31. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/approval.js +9 -0
  32. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/rejection-event.d.ts +13 -0
  33. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/rejection-event.js +25 -0
  34. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/run.js +18 -2
  35. package/dist/src/runtime/adapters/registered-tool-normal-invocations/executor.js +8 -0
  36. package/dist/src/runtime/adapters/registered-tool-normal-invocations/payload/lifecycle.js +7 -3
  37. package/dist/src/runtime/adapters/registered-tool-normal-invocations/shared/contracts.d.ts +17 -2
  38. package/dist/src/runtime/adapters/registered-tool-normal-invocations/shared/event-metadata.d.ts +9 -0
  39. package/dist/src/runtime/adapters/registered-tool-normal-invocations/shared/event-metadata.js +8 -0
  40. package/dist/src/runtime/adapters/registered-tool-payload-plan.d.ts +0 -9
  41. package/dist/src/runtime/adapters/registered-tool-payload-plan.js +0 -67
  42. package/dist/src/runtime/adapters/registered-tool-payload-related-artifacts.d.ts +13 -0
  43. package/dist/src/runtime/adapters/registered-tool-payload-related-artifacts.js +84 -0
  44. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/catalog.js +4 -0
  45. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/execution.js +19 -1
  46. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-lifecycle.d.ts +1 -0
  47. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-lifecycle.js +11 -1
  48. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-observability.js +2 -2
  49. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-stages.d.ts +1 -0
  50. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-stages.js +9 -1
  51. package/dist/src/runtime/adapters/scheduled-request-outcome.d.ts +11 -0
  52. package/dist/src/runtime/adapters/scheduled-request-outcome.js +41 -0
  53. package/dist/src/runtime/adapters/scheduler-runtime.d.ts +19 -0
  54. package/dist/src/runtime/adapters/scheduler-runtime.js +138 -0
  55. package/dist/src/runtime/capabilities/request-bound-tool-registry.js +1 -24
  56. package/dist/src/runtime/capabilities/scheduling/create-operations.d.ts +55 -0
  57. package/dist/src/runtime/capabilities/scheduling/create-operations.js +30 -0
  58. package/dist/src/runtime/capabilities/scheduling/create-time-zone.d.ts +1 -0
  59. package/dist/src/runtime/capabilities/scheduling/create-time-zone.js +11 -0
  60. package/dist/src/runtime/capabilities/scheduling/job-list-page.d.ts +25 -0
  61. package/dist/src/runtime/capabilities/scheduling/job-list-page.js +40 -0
  62. package/dist/src/runtime/capabilities/scheduling/model-validation.d.ts +2 -0
  63. package/dist/src/runtime/capabilities/scheduling/model-validation.js +15 -0
  64. package/dist/src/runtime/capabilities/scheduling/tool-contract.d.ts +2 -0
  65. package/dist/src/runtime/capabilities/scheduling/tool-contract.js +35 -0
  66. package/dist/src/runtime/capabilities/scheduling/tool-input-properties.d.ts +43 -0
  67. package/dist/src/runtime/capabilities/scheduling/tool-input-properties.js +27 -0
  68. package/dist/src/runtime/capabilities/scheduling/tool-module.d.ts +4 -0
  69. package/dist/src/runtime/capabilities/scheduling/tool-module.js +158 -0
  70. package/dist/src/runtime/capabilities/scheduling/update-operations.d.ts +2 -0
  71. package/dist/src/runtime/capabilities/scheduling/update-operations.js +49 -0
  72. package/dist/src/runtime/capabilities/tool-availability.d.ts +6 -0
  73. package/dist/src/runtime/capabilities/tool-availability.js +28 -0
  74. package/dist/src/runtime/composition.d.ts +23 -3
  75. package/dist/src/runtime/composition.js +12 -17
  76. package/dist/src/runtime/config/environment-paths.d.ts +10 -0
  77. package/dist/src/runtime/config/environment-paths.js +31 -0
  78. package/dist/src/runtime/config/environment-storage.d.ts +9 -0
  79. package/dist/src/runtime/config/environment-storage.js +65 -0
  80. package/dist/src/runtime/config/fields.js +7 -0
  81. package/dist/src/runtime/config/long-term-memory.js +15 -0
  82. package/dist/src/runtime/config/schema.js +8 -0
  83. package/dist/src/runtime/config.js +9 -5
  84. package/dist/src/runtime/context/capability-brief.d.ts +25 -0
  85. package/dist/src/runtime/context/capability-brief.js +106 -0
  86. package/dist/src/runtime/context/request-tool-results-message-binding.d.ts +6 -0
  87. package/dist/src/runtime/context/request-tool-results-message-binding.js +30 -0
  88. package/dist/src/runtime/context/request-tool-results-scope.d.ts +3 -0
  89. package/dist/src/runtime/context/request-tool-results-scope.js +8 -0
  90. package/dist/src/runtime/context/request-tool-results.d.ts +8 -4
  91. package/dist/src/runtime/context/request-tool-results.js +49 -38
  92. package/dist/src/runtime/context/scheduled-execution-context.d.ts +10 -0
  93. package/dist/src/runtime/context/scheduled-execution-context.js +52 -0
  94. package/dist/src/runtime/default-adapters.d.ts +3 -32
  95. package/dist/src/runtime/default-adapters.js +3 -270
  96. package/dist/src/runtime/default-environment-adapters.d.ts +19 -0
  97. package/dist/src/runtime/default-environment-adapters.js +144 -0
  98. package/dist/src/runtime/index.d.ts +5 -0
  99. package/dist/src/runtime/index.js +4 -0
  100. package/dist/src/runtime/local-application.d.ts +22 -0
  101. package/dist/src/runtime/local-application.js +81 -0
  102. package/dist/src/runtime/local-host/app-memory-dispatch.d.ts +11 -0
  103. package/dist/src/runtime/local-host/app-memory-dispatch.js +103 -0
  104. package/dist/src/runtime/local-host/app-owner.d.ts +4 -0
  105. package/dist/src/runtime/local-host/app-owner.js +119 -0
  106. package/dist/src/runtime/local-host/app-request-control.d.ts +24 -0
  107. package/dist/src/runtime/local-host/app-request-control.js +135 -0
  108. package/dist/src/runtime/local-host/app-service-dispatch.d.ts +5 -0
  109. package/dist/src/runtime/local-host/app-service-dispatch.js +64 -0
  110. package/dist/src/runtime/local-host/client-identity.d.ts +3 -0
  111. package/dist/src/runtime/local-host/client-identity.js +17 -0
  112. package/dist/src/runtime/local-host/client-memory.d.ts +7 -0
  113. package/dist/src/runtime/local-host/client-memory.js +54 -0
  114. package/dist/src/runtime/local-host/client-requests.d.ts +19 -0
  115. package/dist/src/runtime/local-host/client-requests.js +145 -0
  116. package/dist/src/runtime/local-host/client-services.d.ts +10 -0
  117. package/dist/src/runtime/local-host/client-services.js +14 -0
  118. package/dist/src/runtime/local-host/contracts.d.ts +36 -0
  119. package/dist/src/runtime/local-host/contracts.js +1 -0
  120. package/dist/src/runtime/local-host/endpoint.d.ts +7 -0
  121. package/dist/src/runtime/local-host/endpoint.js +79 -0
  122. package/dist/src/runtime/local-host/owner-activity.d.ts +10 -0
  123. package/dist/src/runtime/local-host/owner-activity.js +30 -0
  124. package/dist/src/runtime/local-host/owner-retirement.d.ts +3 -0
  125. package/dist/src/runtime/local-host/owner-retirement.js +15 -0
  126. package/dist/src/runtime/local-host/owner-server.d.ts +6 -0
  127. package/dist/src/runtime/local-host/owner-server.js +88 -0
  128. package/dist/src/runtime/local-host/private-access.d.ts +2 -0
  129. package/dist/src/runtime/local-host/private-access.js +16 -0
  130. package/dist/src/runtime/local-host/private-directory.d.ts +1 -0
  131. package/dist/src/runtime/local-host/private-directory.js +57 -0
  132. package/dist/src/runtime/local-host/rpc-peer.d.ts +22 -0
  133. package/dist/src/runtime/local-host/rpc-peer.js +168 -0
  134. package/dist/src/runtime/local-host/rpc-protocol.d.ts +21 -0
  135. package/dist/src/runtime/local-host/rpc-protocol.js +46 -0
  136. package/dist/src/runtime/local-host/startup-connection.d.ts +5 -0
  137. package/dist/src/runtime/local-host/startup-connection.js +72 -0
  138. package/dist/src/runtime/local-host/transport.d.ts +3 -0
  139. package/dist/src/runtime/local-host/transport.js +88 -0
  140. package/dist/src/runtime/local-host/windows-private-access.d.ts +1 -0
  141. package/dist/src/runtime/local-host/windows-private-access.js +51 -0
  142. package/dist/src/runtime/long-term-memory/onboarding/configuration.js +6 -0
  143. package/dist/src/runtime/long-term-memory/recall-binding.d.ts +3 -0
  144. package/dist/src/runtime/long-term-memory/recall-binding.js +27 -0
  145. package/dist/src/runtime/long-term-memory/recall-context.d.ts +20 -0
  146. package/dist/src/runtime/long-term-memory/recall-context.js +101 -0
  147. package/dist/src/runtime/long-term-memory/recall-continuation.d.ts +8 -0
  148. package/dist/src/runtime/long-term-memory/recall-continuation.js +36 -0
  149. package/dist/src/runtime/long-term-memory/recall-policy.d.ts +7 -0
  150. package/dist/src/runtime/long-term-memory/recall-policy.js +14 -0
  151. package/dist/src/runtime/long-term-memory/recall-result.d.ts +5 -0
  152. package/dist/src/runtime/long-term-memory/recall-result.js +54 -0
  153. package/dist/src/runtime/long-term-memory/repository-state.d.ts +2 -1
  154. package/dist/src/runtime/long-term-memory/repository-state.js +2 -2
  155. package/dist/src/runtime/model/invoke-raw-step.d.ts +1 -0
  156. package/dist/src/runtime/model/invoke-raw-step.js +1 -0
  157. package/dist/src/runtime/model/invoke-step.js +6 -0
  158. package/dist/src/runtime/model/invoke-structured-step.d.ts +1 -0
  159. package/dist/src/runtime/model/invoke-structured-step.js +1 -0
  160. package/dist/src/runtime/model/model-step-port.d.ts +2 -0
  161. package/dist/src/runtime/model/model-step-steering.d.ts +8 -0
  162. package/dist/src/runtime/model/model-step-steering.js +19 -0
  163. package/dist/src/runtime/orchestration/final-response/authoring-contract.js +1 -1
  164. package/dist/src/runtime/orchestration/final-response/invoke.d.ts +1 -0
  165. package/dist/src/runtime/orchestration/final-response/invoke.js +1 -0
  166. package/dist/src/runtime/orchestration/role-calls/activation-budget.js +1 -0
  167. package/dist/src/runtime/orchestration/role-calls/candidate-validation.js +17 -50
  168. package/dist/src/runtime/orchestration/role-calls/capability-selection-reconsideration.d.ts +9 -0
  169. package/dist/src/runtime/orchestration/role-calls/capability-selection-reconsideration.js +17 -8
  170. package/dist/src/runtime/orchestration/role-calls/capability-selection-supervision-validation.d.ts +2 -0
  171. package/dist/src/runtime/orchestration/role-calls/capability-selection-supervision-validation.js +62 -0
  172. package/dist/src/runtime/orchestration/role-calls/child-return.d.ts +4 -0
  173. package/dist/src/runtime/orchestration/role-calls/child-return.js +25 -5
  174. package/dist/src/runtime/orchestration/role-calls/command-decoder.js +12 -3
  175. package/dist/src/runtime/orchestration/role-calls/command-dispatch/child-transitions.d.ts +1 -1
  176. package/dist/src/runtime/orchestration/role-calls/command-dispatch/child-transitions.js +17 -2
  177. package/dist/src/runtime/orchestration/role-calls/command-dispatch/memory-recall-transitions.d.ts +4 -0
  178. package/dist/src/runtime/orchestration/role-calls/command-dispatch/memory-recall-transitions.js +89 -0
  179. package/dist/src/runtime/orchestration/role-calls/command-dispatch.d.ts +1 -1
  180. package/dist/src/runtime/orchestration/role-calls/command-dispatch.js +7 -2
  181. package/dist/src/runtime/orchestration/role-calls/contracts.d.ts +12 -7
  182. package/dist/src/runtime/orchestration/role-calls/contracts.js +4 -4
  183. package/dist/src/runtime/orchestration/role-calls/dependency-results.d.ts +1 -1
  184. package/dist/src/runtime/orchestration/role-calls/dependency-results.js +1 -0
  185. package/dist/src/runtime/orchestration/role-calls/diagnostics.js +3 -0
  186. package/dist/src/runtime/orchestration/role-calls/index.d.ts +6 -1
  187. package/dist/src/runtime/orchestration/role-calls/index.js +6 -1
  188. package/dist/src/runtime/orchestration/role-calls/ledger.d.ts +3 -1
  189. package/dist/src/runtime/orchestration/role-calls/ledger.js +9 -2
  190. package/dist/src/runtime/orchestration/role-calls/memory-recall-contract.d.ts +51 -0
  191. package/dist/src/runtime/orchestration/role-calls/memory-recall-contract.js +4 -0
  192. package/dist/src/runtime/orchestration/role-calls/memory-recall-decoder.d.ts +6 -0
  193. package/dist/src/runtime/orchestration/role-calls/memory-recall-decoder.js +147 -0
  194. package/dist/src/runtime/orchestration/role-calls/memory-recall-diagnostics.d.ts +5 -0
  195. package/dist/src/runtime/orchestration/role-calls/memory-recall-diagnostics.js +27 -0
  196. package/dist/src/runtime/orchestration/role-calls/memory-recall-state-validation.d.ts +3 -0
  197. package/dist/src/runtime/orchestration/role-calls/memory-recall-state-validation.js +121 -0
  198. package/dist/src/runtime/orchestration/role-calls/memory-recall-transactions.d.ts +3 -0
  199. package/dist/src/runtime/orchestration/role-calls/memory-recall-transactions.js +44 -0
  200. package/dist/src/runtime/orchestration/role-calls/reducer.d.ts +1 -1
  201. package/dist/src/runtime/orchestration/role-calls/reducer.js +3 -2
  202. package/dist/src/runtime/orchestration/role-calls/result-receipt.d.ts +49 -0
  203. package/dist/src/runtime/orchestration/role-calls/result-receipt.js +188 -0
  204. package/dist/src/runtime/orchestration/role-calls/return-result-receipt.d.ts +19 -0
  205. package/dist/src/runtime/orchestration/role-calls/return-result-receipt.js +52 -0
  206. package/dist/src/runtime/orchestration/role-calls/transaction-effect.d.ts +5 -0
  207. package/dist/src/runtime/orchestration/role-calls/transaction-effect.js +14 -0
  208. package/dist/src/runtime/orchestration/role-calls/transactions.js +4 -24
  209. package/dist/src/runtime/orchestration/role-calls/work-result-lineage.d.ts +34 -0
  210. package/dist/src/runtime/orchestration/role-calls/work-result-lineage.js +185 -0
  211. package/dist/src/runtime/orchestration/role-calls/work-result-receipt.d.ts +36 -0
  212. package/dist/src/runtime/orchestration/role-calls/work-result-receipt.js +187 -0
  213. package/dist/src/runtime/orchestration/role-executors/activation/result-normalization.js +6 -3
  214. package/dist/src/runtime/orchestration/role-executors/child-invocation/transaction.js +1 -0
  215. package/dist/src/runtime/orchestration/role-executors/contracts.d.ts +2 -1
  216. package/dist/src/runtime/orchestration/worker-capabilities/assignment-provenance.d.ts +36 -0
  217. package/dist/src/runtime/orchestration/worker-capabilities/assignment-provenance.js +171 -0
  218. package/dist/src/runtime/orchestration/worker-capabilities/contracts.d.ts +32 -1
  219. package/dist/src/runtime/orchestration/worker-capabilities/execution/invocation-preparation.d.ts +2 -1
  220. package/dist/src/runtime/orchestration/worker-capabilities/execution/invocation-preparation.js +3 -0
  221. package/dist/src/runtime/orchestration/worker-capabilities/execution.js +42 -19
  222. package/dist/src/runtime/orchestration/worker-capabilities/index.d.ts +2 -0
  223. package/dist/src/runtime/orchestration/worker-capabilities/index.js +2 -0
  224. package/dist/src/runtime/orchestration/worker-capabilities/payload-assignment-validation.d.ts +3 -0
  225. package/dist/src/runtime/orchestration/worker-capabilities/payload-assignment-validation.js +30 -0
  226. package/dist/src/runtime/orchestration/worker-capabilities/payload-author.js +8 -19
  227. package/dist/src/runtime/orchestration/worker-capabilities/payload-contracts.d.ts +5 -1
  228. package/dist/src/runtime/orchestration/worker-capabilities/payload-instructions.js +1 -1
  229. package/dist/src/runtime/orchestration/worker-capabilities/payload-source-provenance.d.ts +14 -0
  230. package/dist/src/runtime/orchestration/worker-capabilities/payload-source-provenance.js +132 -0
  231. package/dist/src/runtime/plugins/manifest-validator.js +4 -1
  232. package/dist/src/runtime/ports.d.ts +4 -0
  233. package/dist/src/runtime/request/bound-runtime-handler.d.ts +2 -0
  234. package/dist/src/runtime/request/bound-runtime-handler.js +25 -0
  235. package/dist/src/runtime/request/capability-brief.d.ts +5 -0
  236. package/dist/src/runtime/request/capability-brief.js +24 -0
  237. package/dist/src/runtime/request/contracts.d.ts +6 -0
  238. package/dist/src/runtime/request/execution-agent-root-execution.js +12 -0
  239. package/dist/src/runtime/request/execution-facets.js +6 -0
  240. package/dist/src/runtime/request/execution-scope-surfaces.js +10 -0
  241. package/dist/src/runtime/request/execution-scope.d.ts +3 -2
  242. package/dist/src/runtime/request/handler.js +6 -0
  243. package/dist/src/runtime/request/role-executor-composition.js +1 -1
  244. package/dist/src/runtime/request/root-contract.d.ts +7 -1
  245. package/dist/src/runtime/request/root-execution-kernel.js +33 -37
  246. package/dist/src/runtime/request/root-memory-recall.d.ts +11 -0
  247. package/dist/src/runtime/request/root-memory-recall.js +71 -0
  248. package/dist/src/runtime/request/root-observation-handoff.d.ts +17 -0
  249. package/dist/src/runtime/request/root-observation-handoff.js +44 -0
  250. package/dist/src/runtime/request/scheduled-execution.d.ts +9 -0
  251. package/dist/src/runtime/request/scheduled-execution.js +32 -0
  252. package/dist/src/runtime/request/session-admission.d.ts +17 -0
  253. package/dist/src/runtime/request/session-admission.js +88 -0
  254. package/dist/src/runtime/request/supervisor-root-execution-diagnostics.d.ts +1 -1
  255. package/dist/src/runtime/request/supervisor-root-execution.js +8 -0
  256. package/dist/src/runtime/request/worker-capability-composition.d.ts +2 -1
  257. package/dist/src/runtime/request/worker-capability-composition.js +6 -1
  258. package/dist/src/runtime/request/worker-capability-payload.js +11 -8
  259. package/dist/src/runtime/runtime-environment.d.ts +31 -0
  260. package/dist/src/runtime/runtime-environment.js +102 -0
  261. package/dist/src/runtime/runtime-host-environment.d.ts +8 -0
  262. package/dist/src/runtime/runtime-host-environment.js +57 -0
  263. package/dist/src/runtime/runtime-host-lifecycle.d.ts +4 -0
  264. package/dist/src/runtime/runtime-host-lifecycle.js +64 -0
  265. package/dist/src/runtime/runtime-host-scheduler-ownership.d.ts +5 -0
  266. package/dist/src/runtime/runtime-host-scheduler-ownership.js +67 -0
  267. package/dist/src/runtime/runtime-host.d.ts +19 -0
  268. package/dist/src/runtime/runtime-host.js +63 -0
  269. package/dist/src/runtime/scheduler/calendar-time.d.ts +10 -0
  270. package/dist/src/runtime/scheduler/calendar-time.js +58 -0
  271. package/dist/src/runtime/scheduler/contracts.d.ts +143 -0
  272. package/dist/src/runtime/scheduler/contracts.js +1 -0
  273. package/dist/src/runtime/scheduler/file-store.d.ts +2 -0
  274. package/dist/src/runtime/scheduler/file-store.js +76 -0
  275. package/dist/src/runtime/scheduler/instant-validation.d.ts +4 -0
  276. package/dist/src/runtime/scheduler/instant-validation.js +69 -0
  277. package/dist/src/runtime/scheduler/interval-range.d.ts +8 -0
  278. package/dist/src/runtime/scheduler/interval-range.js +24 -0
  279. package/dist/src/runtime/scheduler/job-management.d.ts +8 -0
  280. package/dist/src/runtime/scheduler/job-management.js +212 -0
  281. package/dist/src/runtime/scheduler/journal-checkpoint.d.ts +9 -0
  282. package/dist/src/runtime/scheduler/journal-checkpoint.js +45 -0
  283. package/dist/src/runtime/scheduler/journal-durability.d.ts +8 -0
  284. package/dist/src/runtime/scheduler/journal-durability.js +59 -0
  285. package/dist/src/runtime/scheduler/journal-files.d.ts +14 -0
  286. package/dist/src/runtime/scheduler/journal-files.js +59 -0
  287. package/dist/src/runtime/scheduler/journal-head.d.ts +21 -0
  288. package/dist/src/runtime/scheduler/journal-head.js +81 -0
  289. package/dist/src/runtime/scheduler/journal-index-state.d.ts +31 -0
  290. package/dist/src/runtime/scheduler/journal-index-state.js +137 -0
  291. package/dist/src/runtime/scheduler/journal-index.d.ts +22 -0
  292. package/dist/src/runtime/scheduler/journal-index.js +195 -0
  293. package/dist/src/runtime/scheduler/journal-store.d.ts +21 -0
  294. package/dist/src/runtime/scheduler/journal-store.js +184 -0
  295. package/dist/src/runtime/scheduler/journal-transaction.d.ts +14 -0
  296. package/dist/src/runtime/scheduler/journal-transaction.js +104 -0
  297. package/dist/src/runtime/scheduler/next-occurrence.d.ts +3 -0
  298. package/dist/src/runtime/scheduler/next-occurrence.js +39 -0
  299. package/dist/src/runtime/scheduler/run-completion.d.ts +12 -0
  300. package/dist/src/runtime/scheduler/run-completion.js +77 -0
  301. package/dist/src/runtime/scheduler/run-list-query.d.ts +5 -0
  302. package/dist/src/runtime/scheduler/run-list-query.js +38 -0
  303. package/dist/src/runtime/scheduler/run-records.d.ts +6 -0
  304. package/dist/src/runtime/scheduler/run-records.js +41 -0
  305. package/dist/src/runtime/scheduler/schedule-update.d.ts +3 -0
  306. package/dist/src/runtime/scheduler/schedule-update.js +22 -0
  307. package/dist/src/runtime/scheduler/schedule-validation.d.ts +10 -0
  308. package/dist/src/runtime/scheduler/schedule-validation.js +132 -0
  309. package/dist/src/runtime/scheduler/scheduler-engine.d.ts +2 -0
  310. package/dist/src/runtime/scheduler/scheduler-engine.js +174 -0
  311. package/dist/src/runtime/scheduler/scheduler-service.d.ts +10 -0
  312. package/dist/src/runtime/scheduler/scheduler-service.js +115 -0
  313. package/dist/src/runtime/scheduler/service-context.d.ts +21 -0
  314. package/dist/src/runtime/scheduler/service-context.js +26 -0
  315. package/dist/src/runtime/scheduler/session-deletion-state.d.ts +9 -0
  316. package/dist/src/runtime/scheduler/session-deletion-state.js +30 -0
  317. package/dist/src/runtime/scheduler/snapshot-validation.d.ts +4 -0
  318. package/dist/src/runtime/scheduler/snapshot-validation.js +112 -0
  319. package/dist/src/runtime/scheduler/startup-recovery.d.ts +2 -0
  320. package/dist/src/runtime/scheduler/startup-recovery.js +38 -0
  321. package/dist/src/runtime/scheduler/validation-error.d.ts +4 -0
  322. package/dist/src/runtime/scheduler/validation-error.js +8 -0
  323. package/dist/src/runtime/scheduler/working-store.d.ts +3 -0
  324. package/dist/src/runtime/scheduler/working-store.js +8 -0
  325. package/dist/src/runtime/session/request-session.d.ts +1 -0
  326. package/dist/src/runtime/session/request-session.js +14 -1
  327. package/dist/src/runtime/session/session-attachment-deletion.d.ts +8 -0
  328. package/dist/src/runtime/session/session-attachment-deletion.js +87 -0
  329. package/dist/src/runtime/session/session-deletion-boundary.d.ts +10 -0
  330. package/dist/src/runtime/session/session-deletion-boundary.js +39 -0
  331. package/dist/src/runtime/session/session-deletion-cleanup.d.ts +7 -0
  332. package/dist/src/runtime/session/session-deletion-cleanup.js +62 -0
  333. package/dist/src/runtime/session/session-deletion-finalization.d.ts +7 -0
  334. package/dist/src/runtime/session/session-deletion-finalization.js +34 -0
  335. package/dist/src/runtime/session/session-deletion-receipts.d.ts +7 -0
  336. package/dist/src/runtime/session/session-deletion-receipts.js +18 -0
  337. package/dist/src/runtime/session/session-lifecycle-store.d.ts +21 -0
  338. package/dist/src/runtime/session/session-lifecycle-store.js +72 -0
  339. package/dist/src/runtime/session/session-mutation-queue.d.ts +3 -0
  340. package/dist/src/runtime/session/session-mutation-queue.js +15 -0
  341. package/dist/src/runtime/steps/execution-agent/capability-decision-parsing.d.ts +16 -0
  342. package/dist/src/runtime/steps/execution-agent/capability-decision-parsing.js +165 -0
  343. package/dist/src/runtime/steps/execution-agent/contracts.d.ts +3 -1
  344. package/dist/src/runtime/steps/execution-agent/decision-parsing.d.ts +2 -0
  345. package/dist/src/runtime/steps/execution-agent/decision-parsing.js +195 -0
  346. package/dist/src/runtime/steps/execution-agent/decision-validation.d.ts +30 -0
  347. package/dist/src/runtime/steps/execution-agent/decision-validation.js +127 -0
  348. package/dist/src/runtime/steps/execution-agent/format.d.ts +1 -0
  349. package/dist/src/runtime/steps/execution-agent/format.js +12 -0
  350. package/dist/src/runtime/steps/execution-agent/input.d.ts +2 -1
  351. package/dist/src/runtime/steps/execution-agent/input.js +17 -2
  352. package/dist/src/runtime/steps/execution-agent/parser.d.ts +1 -2
  353. package/dist/src/runtime/steps/execution-agent/parser.js +1 -472
  354. package/dist/src/runtime/steps/execution-agent/prompt.d.ts +2 -0
  355. package/dist/src/runtime/steps/execution-agent/prompt.js +6 -3
  356. package/dist/src/runtime/steps/execution-agent/reconsideration-context.js +4 -3
  357. package/dist/src/runtime/steps/execution-agent/response-input.js +5 -4
  358. package/dist/src/runtime/steps/execution-agent/response-run.d.ts +3 -0
  359. package/dist/src/runtime/steps/execution-agent/response-run.js +7 -3
  360. package/dist/src/runtime/steps/execution-agent/run.d.ts +2 -0
  361. package/dist/src/runtime/steps/execution-agent/run.js +2 -0
  362. package/dist/src/runtime/steps/execution-agent/state-context.d.ts +2 -1
  363. package/dist/src/runtime/steps/execution-agent/state-context.js +13 -5
  364. package/dist/src/runtime/steps/memory-recall-decision.d.ts +30 -0
  365. package/dist/src/runtime/steps/memory-recall-decision.js +101 -0
  366. package/dist/src/runtime/steps/memory-recall-prompt.d.ts +1 -0
  367. package/dist/src/runtime/steps/memory-recall-prompt.js +15 -0
  368. package/dist/src/runtime/steps/planner-decision/capability-catalog-context.d.ts +14 -0
  369. package/dist/src/runtime/steps/planner-decision/capability-catalog-context.js +87 -0
  370. package/dist/src/runtime/steps/planner-decision/contracts.d.ts +3 -5
  371. package/dist/src/runtime/steps/planner-decision/contracts.js +3 -3
  372. package/dist/src/runtime/steps/planner-decision/format.d.ts +3 -2
  373. package/dist/src/runtime/steps/planner-decision/format.js +73 -76
  374. package/dist/src/runtime/steps/planner-decision/input.d.ts +4 -3
  375. package/dist/src/runtime/steps/planner-decision/input.js +10 -7
  376. package/dist/src/runtime/steps/planner-decision/parser.d.ts +3 -2
  377. package/dist/src/runtime/steps/planner-decision/parser.js +10 -19
  378. package/dist/src/runtime/steps/planner-decision/plan-parser.js +18 -12
  379. package/dist/src/runtime/steps/planner-decision/prompt.js +33 -28
  380. package/dist/src/runtime/steps/planner-decision/resume.d.ts +1 -1
  381. package/dist/src/runtime/steps/planner-decision/resume.js +38 -1
  382. package/dist/src/runtime/steps/planner-decision/run.d.ts +3 -2
  383. package/dist/src/runtime/steps/reviewer-decision/audit-coverage.d.ts +10 -0
  384. package/dist/src/runtime/steps/reviewer-decision/audit-coverage.js +186 -0
  385. package/dist/src/runtime/steps/reviewer-decision/contracts.d.ts +3 -8
  386. package/dist/src/runtime/steps/reviewer-decision/contracts.js +12 -6
  387. package/dist/src/runtime/steps/reviewer-decision/delegated-context.d.ts +24 -0
  388. package/dist/src/runtime/steps/reviewer-decision/delegated-context.js +70 -0
  389. package/dist/src/runtime/steps/reviewer-decision/diagnostics.js +1 -1
  390. package/dist/src/runtime/steps/reviewer-decision/format.js +37 -24
  391. package/dist/src/runtime/steps/reviewer-decision/input.js +1 -1
  392. package/dist/src/runtime/steps/reviewer-decision/model-context.d.ts +4 -3
  393. package/dist/src/runtime/steps/reviewer-decision/model-context.js +92 -10
  394. package/dist/src/runtime/steps/reviewer-decision/parser.js +19 -1
  395. package/dist/src/runtime/steps/reviewer-decision/projection.js +42 -68
  396. package/dist/src/runtime/steps/reviewer-decision/prompt.js +10 -5
  397. package/dist/src/runtime/steps/reviewer-decision/run.js +12 -3
  398. package/dist/src/runtime/steps/reviewer-decision/verification-coverage.d.ts +14 -0
  399. package/dist/src/runtime/steps/reviewer-decision/verification-coverage.js +52 -0
  400. package/dist/src/runtime/steps/supervisor-decision/capability-brief.d.ts +14 -0
  401. package/dist/src/runtime/steps/supervisor-decision/capability-brief.js +38 -0
  402. package/dist/src/runtime/steps/supervisor-decision/contracts.d.ts +11 -5
  403. package/dist/src/runtime/steps/supervisor-decision/diagnostics.d.ts +4 -0
  404. package/dist/src/runtime/steps/supervisor-decision/diagnostics.js +21 -8
  405. package/dist/src/runtime/steps/supervisor-decision/format.d.ts +2 -0
  406. package/dist/src/runtime/steps/supervisor-decision/format.js +73 -22
  407. package/dist/src/runtime/steps/supervisor-decision/input.d.ts +9 -2
  408. package/dist/src/runtime/steps/supervisor-decision/input.js +44 -6
  409. package/dist/src/runtime/steps/supervisor-decision/memory-recall-continuation.d.ts +10 -0
  410. package/dist/src/runtime/steps/supervisor-decision/memory-recall-continuation.js +32 -0
  411. package/dist/src/runtime/steps/supervisor-decision/parser.d.ts +2 -0
  412. package/dist/src/runtime/steps/supervisor-decision/parser.js +97 -59
  413. package/dist/src/runtime/steps/supervisor-decision/prompt.d.ts +3 -0
  414. package/dist/src/runtime/steps/supervisor-decision/prompt.js +22 -15
  415. package/dist/src/runtime/steps/supervisor-decision/response-recommendation.d.ts +13 -0
  416. package/dist/src/runtime/steps/supervisor-decision/response-recommendation.js +32 -0
  417. package/dist/src/runtime/steps/supervisor-decision/resume.d.ts +2 -0
  418. package/dist/src/runtime/steps/supervisor-decision/resume.js +60 -1
  419. package/dist/src/runtime/steps/supervisor-decision/run.d.ts +3 -0
  420. package/dist/src/runtime/steps/supervisor-decision/run.js +29 -0
  421. package/dist/src/runtime/steps/supervisor-decision/working-directory.js +8 -1
  422. package/dist/src/runtime/steps/supervisor-response/diagnostics.d.ts +1 -0
  423. package/dist/src/runtime/steps/supervisor-response/diagnostics.js +1 -0
  424. package/dist/src/runtime/steps/supervisor-response/input.d.ts +2 -1
  425. package/dist/src/runtime/steps/supervisor-response/input.js +17 -4
  426. package/dist/src/runtime/steps/supervisor-response/memory-authoring.d.ts +1 -0
  427. package/dist/src/runtime/steps/supervisor-response/memory-authoring.js +4 -0
  428. package/dist/src/runtime/steps/supervisor-response/prompt.d.ts +1 -0
  429. package/dist/src/runtime/steps/supervisor-response/prompt.js +8 -2
  430. package/dist/src/runtime/steps/supervisor-response/response-recommendation.d.ts +10 -0
  431. package/dist/src/runtime/steps/supervisor-response/response-recommendation.js +25 -0
  432. package/dist/src/runtime/steps/supervisor-response/run.d.ts +6 -1
  433. package/dist/src/runtime/steps/supervisor-response/run.js +26 -7
  434. package/dist/src/runtime/steps/worker-decision/contracts.d.ts +2 -1
  435. package/dist/src/runtime/steps/worker-decision/input/canonical-state.js +8 -1
  436. package/dist/src/runtime/steps/worker-decision/input/diagnostic-projection.js +2 -2
  437. package/dist/src/runtime/steps/worker-decision/input/prompt-context.d.ts +1 -0
  438. package/dist/src/runtime/steps/worker-decision/input/prompt-context.js +4 -1
  439. package/dist/src/runtime/steps/worker-decision/input/reference-context.js +34 -14
  440. package/dist/src/runtime/steps/worker-decision/input/types.d.ts +2 -1
  441. package/dist/src/runtime/steps/worker-decision/input.d.ts +1 -0
  442. package/dist/src/runtime/steps/worker-decision/input.js +1 -0
  443. package/dist/src/runtime/steps/worker-decision/payload-dependency-results.d.ts +8 -0
  444. package/dist/src/runtime/steps/worker-decision/payload-dependency-results.js +19 -0
  445. package/dist/src/runtime/steps/worker-decision/prompt.js +8 -8
  446. package/dist/src/runtime/steps/worker-decision/result-author.js +18 -11
  447. package/dist/src/runtime/steps/worker-decision/run.js +2 -2
  448. package/dist/src/sessions/record/projection.js +1 -0
  449. package/dist/src/sessions/schedule-metadata.d.ts +8 -0
  450. package/dist/src/sessions/schedule-metadata.js +1 -0
  451. package/dist/src/sessions/session-service.d.ts +1 -0
  452. package/dist/src/sessions/session-service.js +1 -0
  453. package/dist/src/sessions/types.d.ts +2 -0
  454. package/dist/src/shared/http-server-shutdown.d.ts +4 -0
  455. package/dist/src/shared/http-server-shutdown.js +17 -0
  456. package/dist/src/shared/public-http/aggregate-gate.d.ts +3 -0
  457. package/dist/src/shared/public-http/aggregate-gate.js +87 -0
  458. package/dist/src/shared/public-http/deadline.d.ts +2 -0
  459. package/dist/src/shared/public-http/deadline.js +29 -0
  460. package/dist/src/shared/public-http/errors.d.ts +6 -0
  461. package/dist/src/shared/public-http/errors.js +11 -0
  462. package/dist/src/shared/public-http/limits.d.ts +8 -0
  463. package/dist/src/shared/public-http/limits.js +8 -0
  464. package/dist/src/shared/public-http/network-policy.d.ts +11 -0
  465. package/dist/src/shared/public-http/network-policy.js +178 -0
  466. package/dist/src/shared/public-http/public-http.d.ts +24 -0
  467. package/dist/src/shared/public-http/public-http.js +85 -0
  468. package/dist/src/shared/public-http/request-hop.d.ts +18 -0
  469. package/dist/src/shared/public-http/request-hop.js +140 -0
  470. package/dist/src/web-ui/app/ARCHITECTURE.md +82 -7
  471. package/dist/src/web-ui/app/app-bootstrap.js +53 -0
  472. package/dist/src/web-ui/app/app-dom.js +80 -0
  473. package/dist/src/web-ui/app/app.js +199 -217
  474. package/dist/src/web-ui/app/components/composer-context-window.d.ts +25 -0
  475. package/dist/src/web-ui/app/components/composer-context-window.js +155 -0
  476. package/dist/src/web-ui/app/components/composer-plan.d.ts +9 -0
  477. package/dist/src/web-ui/app/components/composer-plan.js +128 -0
  478. package/dist/src/web-ui/app/components/conversation-activity.d.ts +7 -6
  479. package/dist/src/web-ui/app/components/conversation-activity.js +97 -163
  480. package/dist/src/web-ui/app/components/conversation-role-cards.d.ts +24 -0
  481. package/dist/src/web-ui/app/components/conversation-role-cards.js +237 -0
  482. package/dist/src/web-ui/app/components/conversation-schedule.js +71 -0
  483. package/dist/src/web-ui/app/components/conversation-sidebar-layout.js +12 -0
  484. package/dist/src/web-ui/app/components/conversation-sources.d.ts +7 -0
  485. package/dist/src/web-ui/app/components/conversation-sources.js +182 -0
  486. package/dist/src/web-ui/app/components/conversation-status.js +65 -0
  487. package/dist/src/web-ui/app/components/conversation-tools.d.ts +13 -0
  488. package/dist/src/web-ui/app/components/conversation-tools.js +284 -0
  489. package/dist/src/web-ui/app/components/conversation-view.js +73 -17
  490. package/dist/src/web-ui/app/components/dashboard/activity.js +61 -0
  491. package/dist/src/web-ui/app/components/dashboard/icons.js +23 -0
  492. package/dist/src/web-ui/app/components/dashboard/recent-conversations.js +64 -0
  493. package/dist/src/web-ui/app/components/dashboard/workspace.js +107 -0
  494. package/dist/src/web-ui/app/components/message-link-previews.d.ts +16 -0
  495. package/dist/src/web-ui/app/components/message-link-previews.js +179 -0
  496. package/dist/src/web-ui/app/components/model-selector.js +4 -1
  497. package/dist/src/web-ui/app/components/operations-section.js +46 -0
  498. package/dist/src/web-ui/app/components/schedules/details.js +101 -0
  499. package/dist/src/web-ui/app/components/schedules/form.d.ts +13 -0
  500. package/dist/src/web-ui/app/components/schedules/form.js +246 -0
  501. package/dist/src/web-ui/app/components/schedules/workspace-state.js +59 -0
  502. package/dist/src/web-ui/app/components/schedules/workspace.js +165 -0
  503. package/dist/src/web-ui/app/components/workspace-shell.js +133 -79
  504. package/dist/src/web-ui/app/configuration-feature.js +72 -0
  505. package/dist/src/web-ui/app/controllers/composer-attachments-controller.d.ts +1 -0
  506. package/dist/src/web-ui/app/controllers/composer-attachments-controller.js +17 -6
  507. package/dist/src/web-ui/app/controllers/composer-submit-controller.d.ts +2 -0
  508. package/dist/src/web-ui/app/controllers/composer-submit-controller.js +15 -1
  509. package/dist/src/web-ui/app/controllers/composer-surface-controller.js +58 -0
  510. package/dist/src/web-ui/app/controllers/composer-workspace-controller.d.ts +53 -0
  511. package/dist/src/web-ui/app/controllers/composer-workspace-controller.js +180 -0
  512. package/dist/src/web-ui/app/controllers/conversation-read-state-controller.d.ts +23 -0
  513. package/dist/src/web-ui/app/controllers/conversation-read-state-controller.js +82 -0
  514. package/dist/src/web-ui/app/controllers/conversation-session-controller.d.ts +8 -0
  515. package/dist/src/web-ui/app/controllers/conversation-session-controller.js +28 -39
  516. package/dist/src/web-ui/app/controllers/dashboard-controller.js +127 -0
  517. package/dist/src/web-ui/app/controllers/home-composer-feature.d.ts +40 -0
  518. package/dist/src/web-ui/app/controllers/home-composer-feature.js +119 -0
  519. package/dist/src/web-ui/app/controllers/home-conversation-activation.js +37 -0
  520. package/dist/src/web-ui/app/controllers/realtime-event-controller.d.ts +2 -0
  521. package/dist/src/web-ui/app/controllers/realtime-event-controller.js +126 -90
  522. package/dist/src/web-ui/app/controllers/runtime-selection-controller.d.ts +2 -1
  523. package/dist/src/web-ui/app/controllers/runtime-selection-controller.js +17 -14
  524. package/dist/src/web-ui/app/controllers/schedule-realtime.js +118 -0
  525. package/dist/src/web-ui/app/controllers/schedules-controller.js +421 -0
  526. package/dist/src/web-ui/app/controllers/session-controller.js +47 -15
  527. package/dist/src/web-ui/app/dashboard-feature.js +44 -0
  528. package/dist/src/web-ui/app/index.html +240 -189
  529. package/dist/src/web-ui/app/lib/composer-plan-model.d.ts +32 -0
  530. package/dist/src/web-ui/app/lib/composer-plan-model.js +108 -0
  531. package/dist/src/web-ui/app/lib/composer-submission-scope.d.ts +21 -0
  532. package/dist/src/web-ui/app/lib/composer-submission-scope.js +13 -0
  533. package/dist/src/web-ui/app/lib/context-window-snapshot-order.d.ts +15 -0
  534. package/dist/src/web-ui/app/lib/context-window-snapshot-order.js +31 -0
  535. package/dist/src/web-ui/app/lib/conversation-role-model.d.ts +28 -0
  536. package/dist/src/web-ui/app/lib/conversation-role-model.js +275 -0
  537. package/dist/src/web-ui/app/lib/conversation-status-model.d.ts +12 -0
  538. package/dist/src/web-ui/app/lib/conversation-status-model.js +116 -0
  539. package/dist/src/web-ui/app/lib/dashboard-job-templates.js +41 -0
  540. package/dist/src/web-ui/app/lib/dashboard-presentation.js +126 -0
  541. package/dist/src/web-ui/app/lib/event-presentation.js +30 -9
  542. package/dist/src/web-ui/app/lib/message-markdown.d.ts +5 -0
  543. package/dist/src/web-ui/app/lib/message-markdown.js +99 -0
  544. package/dist/src/web-ui/app/lib/message-url-policy.d.ts +1 -0
  545. package/dist/src/web-ui/app/lib/message-url-policy.js +13 -0
  546. package/dist/src/web-ui/app/lib/schedule-errors.js +29 -0
  547. package/dist/src/web-ui/app/lib/schedule-message.js +30 -0
  548. package/dist/src/web-ui/app/lib/schedule-presentation.js +81 -0
  549. package/dist/src/web-ui/app/lib/session-read-state.d.ts +22 -0
  550. package/dist/src/web-ui/app/lib/session-read-state.js +63 -0
  551. package/dist/src/web-ui/app/lib/source-url-policy.d.ts +2 -0
  552. package/dist/src/web-ui/app/lib/source-url-policy.js +31 -0
  553. package/dist/src/web-ui/app/lib/task-progress.d.ts +53 -0
  554. package/dist/src/web-ui/app/lib/task-progress.js +233 -0
  555. package/dist/src/web-ui/app/lib/text-format.js +2 -143
  556. package/dist/src/web-ui/app/lib/tool-activity-event.d.ts +26 -0
  557. package/dist/src/web-ui/app/lib/tool-activity-event.js +228 -0
  558. package/dist/src/web-ui/app/lib/tool-activity-model.d.ts +41 -0
  559. package/dist/src/web-ui/app/lib/tool-activity-model.js +255 -0
  560. package/dist/src/web-ui/app/lib/tool-invocation-count.d.ts +5 -0
  561. package/dist/src/web-ui/app/lib/tool-invocation-count.js +21 -0
  562. package/dist/src/web-ui/app/lib/tool-timeline.d.ts +3 -0
  563. package/dist/src/web-ui/app/lib/tool-timeline.js +18 -0
  564. package/dist/src/web-ui/app/lib/web-source-event.d.ts +8 -0
  565. package/dist/src/web-ui/app/lib/web-source-event.js +21 -0
  566. package/dist/src/web-ui/app/lib/web-sources.d.ts +36 -0
  567. package/dist/src/web-ui/app/lib/web-sources.js +177 -0
  568. package/dist/src/web-ui/app/schedules-feature.js +87 -0
  569. package/dist/src/web-ui/app/services/message-link-preview-client.d.ts +14 -0
  570. package/dist/src/web-ui/app/services/message-link-preview-client.js +96 -0
  571. package/dist/src/web-ui/app/services/runtime-web-client/schedules.js +51 -0
  572. package/dist/src/web-ui/app/services/runtime-web-client.d.ts +37 -0
  573. package/dist/src/web-ui/app/services/runtime-web-client.js +13 -8
  574. package/dist/src/web-ui/app/styles/00-tokens-base.css +15 -3
  575. package/dist/src/web-ui/app/styles/10-shell-sessions.css +24 -34
  576. package/dist/src/web-ui/app/styles/12-conversation-sidebar.css +93 -0
  577. package/dist/src/web-ui/app/styles/18-dashboard.css +384 -0
  578. package/dist/src/web-ui/app/styles/20-chat-composer.css +54 -600
  579. package/dist/src/web-ui/app/styles/21-composer-controls.css +368 -0
  580. package/dist/src/web-ui/app/styles/22-composer-context-window.css +90 -0
  581. package/dist/src/web-ui/app/styles/23-composer-plan.css +171 -0
  582. package/dist/src/web-ui/app/styles/24-conversation-role-cards.css +205 -0
  583. package/dist/src/web-ui/app/styles/25-conversation-sources.css +141 -0
  584. package/dist/src/web-ui/app/styles/26-message-content.css +295 -0
  585. package/dist/src/web-ui/app/styles/27-conversation-tools.css +266 -0
  586. package/dist/src/web-ui/app/styles/28-conversation-status.css +52 -0
  587. package/dist/src/web-ui/app/styles/30-inspector-config.css +21 -209
  588. package/dist/src/web-ui/app/styles/35-memory-onboarding.css +8 -8
  589. package/dist/src/web-ui/app/styles/36-memory-management.css +13 -13
  590. package/dist/src/web-ui/app/styles/37-config-operations.css +197 -0
  591. package/dist/src/web-ui/app/styles/38-schedule-workspace.css +263 -0
  592. package/dist/src/web-ui/app/styles/38-schedules.css +352 -0
  593. package/dist/src/web-ui/app/styles/40-config-workspace.css +36 -36
  594. package/dist/src/web-ui/app/styles/90-responsive.css +28 -77
  595. package/dist/src/web-ui/app/styles/91-schedules-responsive.css +72 -0
  596. package/dist/src/web-ui/app/styles/92-dashboard-responsive.css +88 -0
  597. package/dist/src/web-ui/app/styles/foundation.css +2 -2
  598. package/dist/src/web-ui/app/styles.css +15 -0
  599. package/dist/src/web-ui/app/ui-behavior.d.ts +1 -1
  600. package/dist/src/web-ui/app/ui-behavior.js +4 -2
  601. package/dist/src/web-ui/app/vendor/README.md +15 -0
  602. package/dist/src/web-ui/app/vendor/markdown-it.LICENSE +22 -0
  603. package/dist/src/web-ui/app/vendor/markdown-it.js +3003 -0
  604. package/dist/src/web-ui/link-preview/metadata.d.ts +9 -0
  605. package/dist/src/web-ui/link-preview/metadata.js +97 -0
  606. package/dist/src/web-ui/link-preview/preview-cache.d.ts +4 -0
  607. package/dist/src/web-ui/link-preview/preview-cache.js +23 -0
  608. package/dist/src/web-ui/link-preview/raster-response.d.ts +9 -0
  609. package/dist/src/web-ui/link-preview/raster-response.js +49 -0
  610. package/dist/src/web-ui/link-preview/routes.d.ts +3 -0
  611. package/dist/src/web-ui/link-preview/routes.js +97 -0
  612. package/dist/src/web-ui/link-preview/service.d.ts +11 -0
  613. package/dist/src/web-ui/link-preview/service.js +117 -0
  614. package/dist/src/web-ui/local-runtime/api-router.d.ts +4 -1
  615. package/dist/src/web-ui/local-runtime/api-router.js +42 -73
  616. package/dist/src/web-ui/local-runtime/contracts.d.ts +2 -2
  617. package/dist/src/web-ui/local-runtime/environment-registry.d.ts +12 -1
  618. package/dist/src/web-ui/local-runtime/environment-registry.js +38 -3
  619. package/dist/src/web-ui/local-runtime/realtime-controller.js +3 -1
  620. package/dist/src/web-ui/local-runtime/request-execution.d.ts +5 -1
  621. package/dist/src/web-ui/local-runtime/request-execution.js +38 -2
  622. package/dist/src/web-ui/local-runtime/schedule-job-creation.d.ts +7 -0
  623. package/dist/src/web-ui/local-runtime/schedule-job-creation.js +62 -0
  624. package/dist/src/web-ui/local-runtime/schedule-management-routes.d.ts +30 -0
  625. package/dist/src/web-ui/local-runtime/schedule-management-routes.js +134 -0
  626. package/dist/src/web-ui/local-runtime/schedule-run-page.d.ts +5 -0
  627. package/dist/src/web-ui/local-runtime/schedule-run-page.js +23 -0
  628. package/dist/src/web-ui/local-runtime/session-routes.d.ts +17 -0
  629. package/dist/src/web-ui/local-runtime/session-routes.js +74 -0
  630. package/dist/src/web-ui/local-runtime-backend.d.ts +2 -0
  631. package/dist/src/web-ui/local-runtime-backend.js +11 -1
  632. package/dist/src/web-ui/schedule-creation-contract.d.ts +7 -0
  633. package/dist/src/web-ui/schedule-creation-contract.js +1 -0
  634. package/dist/src/web-ui/server-shutdown.d.ts +4 -0
  635. package/dist/src/web-ui/server-shutdown.js +32 -0
  636. package/dist/src/web-ui/server.js +13 -10
  637. package/dist/src/web-ui/session-read-state/availability.d.ts +16 -0
  638. package/dist/src/web-ui/session-read-state/availability.js +20 -0
  639. package/dist/src/web-ui/session-read-state/projection.d.ts +17 -0
  640. package/dist/src/web-ui/session-read-state/projection.js +71 -0
  641. package/dist/src/web-ui/session-read-state/service.d.ts +86 -0
  642. package/dist/src/web-ui/session-read-state/service.js +89 -0
  643. package/dist/src/web-ui/session-read-state/store.d.ts +22 -0
  644. package/dist/src/web-ui/session-read-state/store.js +110 -0
  645. package/docs/configuration.md +56 -9
  646. package/docs/installation.md +7 -4
  647. package/docs/known-limitations.md +21 -0
  648. package/docs/long-term-memory.md +46 -5
  649. package/docs/plugins.md +28 -13
  650. package/docs/runtime-invariant-coverage.md +18 -17
  651. package/docs/runtime-library.md +23 -0
  652. package/docs/runtime-prompt-policy-contracts.md +27 -17
  653. package/docs/runtime-public-contracts.md +32 -1
  654. package/package.json +6 -3
  655. package/plugins/capability-brief/source/index.ts +5 -48
  656. package/plugins/capability-brief/src/index.cjs +46 -33
  657. package/plugins/code-outline/plugin.json +15 -0
  658. package/plugins/document-reader/plugin.json +17 -0
  659. package/plugins/filesystem/plugin.json +17 -2
  660. package/plugins/json-inspector/plugin.json +12 -0
  661. package/plugins/local-search/plugin.json +12 -0
  662. package/plugins/memory/plugin.json +26 -1
  663. package/plugins/memory/source/index.ts +10 -6
  664. package/plugins/memory/src/index.cjs +11 -7
  665. package/plugins/project-orientation/plugin.json +14 -0
  666. package/plugins/system-probe/plugin.json +1 -0
  667. package/plugins/web/README.md +125 -0
  668. package/plugins/web/plugin.json +1 -1
  669. package/plugins/web/skills/web_fetch_skill/SKILL.md +2 -2
  670. package/plugins/web/skills/web_search_skill/SKILL.md +8 -4
  671. package/plugins/web/source/aggregate-gate.ts +8 -130
  672. package/plugins/web/source/deadline.ts +14 -50
  673. package/plugins/web/source/errors.ts +22 -12
  674. package/plugins/web/source/fetch-presentation.ts +61 -0
  675. package/plugins/web/source/fetch-service.ts +2 -31
  676. package/plugins/web/source/light/config.ts +196 -0
  677. package/plugins/web/source/light/crawl/origin-gate.ts +134 -0
  678. package/plugins/web/source/light/crawl/robots-cache.ts +71 -0
  679. package/plugins/web/source/light/crawl/robots-parser.ts +132 -0
  680. package/plugins/web/source/light/crawl/robots-policy.ts +154 -0
  681. package/plugins/web/source/light/crawl/session-budget.ts +141 -0
  682. package/plugins/web/source/light/crawl/transport.ts +216 -0
  683. package/plugins/web/source/light/discovery/candidate-values.ts +63 -0
  684. package/plugins/web/source/light/discovery/feed-document.ts +127 -0
  685. package/plugins/web/source/light/discovery/html-links.ts +80 -0
  686. package/plugins/web/source/light/discovery/html-robots-directives.ts +29 -0
  687. package/plugins/web/source/light/discovery/markup-tree.ts +145 -0
  688. package/plugins/web/source/light/discovery/origin-dates.ts +71 -0
  689. package/plugins/web/source/light/discovery/sitemap-document.ts +63 -0
  690. package/plugins/web/source/light/documents/cache-policy.ts +28 -0
  691. package/plugins/web/source/light/documents/document-cache.ts +99 -0
  692. package/plugins/web/source/light/documents/document-charset.ts +89 -0
  693. package/plugins/web/source/light/documents/document-contract.ts +20 -0
  694. package/plugins/web/source/light/documents/document-reader.ts +75 -0
  695. package/plugins/web/source/light/documents/extract-document.ts +124 -0
  696. package/plugins/web/source/light/documents/http-cache-freshness.ts +68 -0
  697. package/plugins/web/source/light/documents/response-decoding.ts +120 -0
  698. package/plugins/web/source/light/ranking/document-ranking.ts +114 -0
  699. package/plugins/web/source/light/ranking/query-normalization.ts +69 -0
  700. package/plugins/web/source/light/search-collection.ts +136 -0
  701. package/plugins/web/source/light/search-frontier.ts +246 -0
  702. package/plugins/web/source/light/search-metadata.ts +84 -0
  703. package/plugins/web/source/light/search-service.ts +154 -0
  704. package/plugins/web/source/light/search-unavailable.ts +33 -0
  705. package/plugins/web/source/light/sources/catalog.ts +312 -0
  706. package/plugins/web/source/light/sources/source-definition.ts +9 -0
  707. package/plugins/web/source/light/sources/source-selection.ts +35 -0
  708. package/plugins/web/source/limits.ts +3 -6
  709. package/plugins/web/source/network-policy.ts +28 -226
  710. package/plugins/web/source/plugin.ts +70 -56
  711. package/plugins/web/source/public-http.ts +17 -133
  712. package/plugins/web/source/request-hop.ts +11 -191
  713. package/plugins/web/source/search-presentation.ts +63 -63
  714. package/plugins/web/source/search-service-selector.ts +31 -0
  715. package/plugins/web/source/search-service.ts +6 -0
  716. package/plugins/web/source/search-source-presentation.ts +76 -0
  717. package/plugins/web/source/search-types.ts +4 -0
  718. package/plugins/web/source/source-output-receipts.ts +267 -0
  719. package/plugins/web/source/source-receipt-budget.ts +51 -0
  720. package/plugins/web/source/source-receipt-contract.ts +18 -0
  721. package/plugins/web/src/index.cjs +3289 -303
  722. package/runtime.config.schema.json +7 -0
  723. package/src/runtime/README.md +134 -9
  724. package/src/runtime/local-host/README.md +86 -0
  725. package/src/runtime/scheduler/README.md +166 -0
  726. package/dist/src/model-gateway/structured-output/budget.d.ts +0 -7
  727. package/dist/src/model-gateway/structured-output/budget.js +0 -20
  728. package/dist/src/model-gateway/structured-output/schema-character-estimator.d.ts +0 -1
  729. package/dist/src/model-gateway/structured-output/schema-character-estimator.js +0 -211
  730. package/dist/src/model-gateway/structured-output-budget.d.ts +0 -1
  731. package/dist/src/model-gateway/structured-output-budget.js +0 -1
package/README.md CHANGED
@@ -13,6 +13,7 @@ hardcoded defaults.
13
13
  - Configurable local and hosted model providers
14
14
  - Persistent conversations, request events, and replay
15
15
  - Optional passive long-term memory across sessions
16
+ - Local scheduled requests bound to their conversations
16
17
  - Planning, execution, and review workflows
17
18
  - Manifest-based tools and plugins with explicit runtime boundaries
18
19
  - Workspace, file, skill, and memory capabilities
@@ -34,11 +35,24 @@ The Web UI supports:
34
35
  - steering an active request or queuing the next message
35
36
  - editing runtime configuration
36
37
  - configuring passive long-term memory with a consumer-selected embedding model
38
+ - managing schedules, their saved models, and run history in the Schedules workspace
37
39
  - inspecting runtime status, logs, and health
38
40
 
39
41
  The UI is a client of the runtime; persisted sessions, events, and request state
40
42
  remain owned by the runtime.
41
43
 
44
+ Schedules can also be managed through the model's built-in `schedules` capability.
45
+ Every Job belongs to a conversation and runs there with its saved model and FULL
46
+ tool permissions. The chat shows a compact run card; expand it to read the exact
47
+ historical prompt. ABot must be running at the scheduled time. Missed offline
48
+ occurrences and failed runs are not retried. Cancelling a Job or deleting its
49
+ conversation prevents pending starts; an already-started run continues.
50
+
51
+ Timers, one-time requests, intervals, and daily/weekly/monthly schedules are
52
+ supported. Calendar schedules require an exact time and IANA time zone. Jobs and
53
+ run history are stored locally under the environment's runtime directory.
54
+ Scheduling uses the Runtime directly and requires no plugin or external bridge.
55
+
42
56
  ## Requirements
43
57
 
44
58
  - Node.js `^20.19.0` or `>=22.12.0` (Node.js 21 is not supported)
@@ -219,9 +233,12 @@ from core-owned passive long-term memory.
219
233
  The Web plugin exposes two distinct capabilities:
220
234
 
221
235
  - `web_fetch` retrieves a specific public HTTP(S) page without a search API key.
222
- - `web_search` uses the Brave Search API and requires
223
- `BRAVE_SEARCH_API_KEY`. Without it, the capability returns a clear local
224
- configuration error before making a search request.
236
+ - `web_search` uses Brave Search when `BRAVE_SEARCH_API_KEY` is configured.
237
+ Without a key, it uses Light search: bounded discovery and ranking within a
238
+ catalog of public Hebrew and English sources, without an external search
239
+ engine. Light has limited coverage; an empty result does not mean the
240
+ information is absent from the web. A configured Brave key that fails does
241
+ not trigger an automatic switch to Light.
225
242
 
226
243
  Some plugins have platform-specific requirements. See [Plugins](docs/plugins.md)
227
244
  for their contracts, limits, and configuration.
@@ -1,8 +1,9 @@
1
1
  import type WebSocket from "ws";
2
+ import type { RuntimeRequestHandler } from "../runtime/composition.js";
2
3
  import { type RequestSteeringInbox } from "../runtime/request/request-steering.js";
3
4
  export type BridgeRequestSteeringRegistry = Readonly<{
4
5
  close(requestId: string, inbox: RequestSteeringInbox): Promise<void>;
5
6
  handleMessage(ws: WebSocket, message: Record<string, unknown>): Promise<boolean>;
6
7
  open(requestId: string): RequestSteeringInbox;
7
8
  }>;
8
- export declare function createBridgeRequestSteeringRegistry(): BridgeRequestSteeringRegistry;
9
+ export declare function createBridgeRequestSteeringRegistry(steer?: RuntimeRequestHandler["steer"]): BridgeRequestSteeringRegistry;
@@ -1,7 +1,7 @@
1
1
  import { traceDebug } from "../runtime/observability/debug-logger.js";
2
2
  import { createRequestSteeringInbox, } from "../runtime/request/request-steering.js";
3
3
  const LOG_SCOPE = "agent-bridge.request_steering";
4
- export function createBridgeRequestSteeringRegistry() {
4
+ export function createBridgeRequestSteeringRegistry(steer) {
5
5
  const active = new Map();
6
6
  return Object.freeze({
7
7
  async close(requestId, inbox) {
@@ -23,7 +23,9 @@ export function createBridgeRequestSteeringRegistry() {
23
23
  const steerId = readString(message.steerId).trim();
24
24
  const text = readString(message.text).trim();
25
25
  const current = active.get(requestId);
26
- const result = current?.inbox.append({ steerId, text }) ??
26
+ const result = (steer && current
27
+ ? await steer(requestId, { steerId, text })
28
+ : current?.inbox.append({ steerId, text })) ??
27
29
  Object.freeze({
28
30
  ok: false,
29
31
  reason: "request_not_active",
@@ -2,6 +2,7 @@ import { randomUUID } from "node:crypto";
2
2
  import { readFile } from "node:fs/promises";
3
3
  import { clearSessionMessages, deleteMessageWithStats, deleteSessionWithStats, getRequestReplayById, getSessionSnapshot, listSessions, } from "../sessions/index.js";
4
4
  import { DEFAULT_MAX_ATTACHMENT_BYTES, } from "../runtime/attachments/store.js";
5
+ import { deleteSessionWithAttachments, deleteSessionAttachmentsIfSupported, } from "../runtime/session/session-attachment-deletion.js";
5
6
  import { resolveRuntimeAttachmentMimeType } from "../shared/attachments.js";
6
7
  const defaultRuntimeReplaySessionStore = {
7
8
  clearSessionMessages,
@@ -344,10 +345,7 @@ async function handleSessionDeleteRequest(ws, msg, sessionStore, attachmentStore
344
345
  return;
345
346
  }
346
347
  try {
347
- const result = await sessionStore.deleteSessionWithStats(sessionId);
348
- if (result.deleted) {
349
- await deleteSessionAttachmentsIfSupported(attachmentStore, sessionId);
350
- }
348
+ const result = await deleteSessionWithAttachments(sessionStore, attachmentStore, sessionId);
351
349
  sendRuntimeReplayResponse(ws, {
352
350
  type: "session.delete.response",
353
351
  correlationId,
@@ -402,21 +400,6 @@ async function handleSessionMessagesClearRequest(ws, msg, sessionStore, attachme
402
400
  }, error instanceof Error ? error.message : String(error));
403
401
  }
404
402
  }
405
- async function deleteSessionAttachmentsIfSupported(attachmentStore, sessionId) {
406
- if (!attachmentStore) {
407
- return;
408
- }
409
- try {
410
- await attachmentStore.deleteSessionAttachments(sessionId);
411
- }
412
- catch (error) {
413
- if (error instanceof Error &&
414
- error.message === "attachment_owner_invalid") {
415
- return;
416
- }
417
- throw error;
418
- }
419
- }
420
403
  async function deleteAttachmentIfSupported(attachmentStore, attachment, sessionId) {
421
404
  if (!attachmentStore?.deleteAttachment) {
422
405
  return;
@@ -109,7 +109,7 @@ export function startAgentBridge(options = {}) {
109
109
  let lastMessageAt;
110
110
  let lastPongAt;
111
111
  const pendingToolApprovals = new Map();
112
- const requestSteering = createBridgeRequestSteeringRegistry();
112
+ const requestSteering = createBridgeRequestSteeringRegistry(requestHandler.steer);
113
113
  function getStatus() {
114
114
  return {
115
115
  runtimeId,
@@ -1,5 +1,5 @@
1
1
  import { TOOL_NORMAL_INVOCATION_IDENTIFIER_MAX_LENGTH, TOOL_NORMAL_INVOCATION_PAYLOAD_MAX_BYTES, TOOL_NORMAL_INVOCATION_VERSION, } from "./contracts.js";
2
- const MAX_OPERATIONS = 16;
2
+ const MAX_OPERATIONS = 32;
3
3
  const MAX_SUMMARY_LENGTH = 512;
4
4
  const MAX_INSTRUCTIONS_LENGTH = 1_024;
5
5
  const MAX_PROPERTIES = 16;
@@ -1,4 +1,5 @@
1
1
  import { isToolDefinitionRecordValue } from "./definition-shape.js";
2
+ import { parseEventResultMetadata } from "./event-result-metadata.js";
2
3
  const EVENT_PROJECTION_KINDS = [
3
4
  "string",
4
5
  "number",
@@ -16,8 +17,10 @@ export function parseEventPresentation(toolName, raw) {
16
17
  }
17
18
  const metadata = Object.fromEntries(Object.entries(raw.metadata).map(([key, projection]) => parseEventMetadataProjection(toolName, key, projection)));
18
19
  const lifecycle = parseEventLifecycle(toolName, raw.lifecycle);
20
+ const resultMetadata = parseEventResultMetadata(raw.resultMetadata, `eventPresentation.resultMetadata (${toolName})`);
19
21
  return {
20
22
  metadata,
23
+ ...(resultMetadata ? { resultMetadata } : {}),
21
24
  ...(lifecycle ? { lifecycle } : {}),
22
25
  };
23
26
  }
@@ -0,0 +1,2 @@
1
+ import type { ToolEventPresentation } from "../tool-types.js";
2
+ export declare function parseEventResultMetadata(raw: unknown, path: string): ToolEventPresentation["resultMetadata"];
@@ -0,0 +1,74 @@
1
+ import { isToolDefinitionRecordValue } from "./definition-shape.js";
2
+ const RESULT_METADATA_LIMIT = 16;
3
+ const RESULT_PATH_SEGMENT_LIMIT = 4;
4
+ const RESULT_PROJECTION_KINDS = ["preview", "number", "boolean"];
5
+ const FORBIDDEN_PATH_SEGMENTS = new Set([
6
+ "__proto__",
7
+ "prototype",
8
+ "constructor",
9
+ ]);
10
+ export function parseEventResultMetadata(raw, path) {
11
+ if (raw === undefined)
12
+ return undefined;
13
+ if (!isToolDefinitionRecordValue(raw)) {
14
+ throw new Error(`${path} must be an object`);
15
+ }
16
+ const entries = Object.entries(raw);
17
+ if (entries.length > RESULT_METADATA_LIMIT) {
18
+ throw new Error(`${path} exceeds ${RESULT_METADATA_LIMIT} projections`);
19
+ }
20
+ const result = Object.fromEntries(entries.map(([key, value]) => {
21
+ if (!hasSupportedResultMetadataKey(key)) {
22
+ throw new Error(`${path} contains an invalid metadata key`);
23
+ }
24
+ if (!isToolDefinitionRecordValue(value)) {
25
+ throw new Error(`${path}.${key} must be an object`);
26
+ }
27
+ if (hasUnknownResultProjectionFields(value)) {
28
+ throw new Error(`${path}.${key} contains an unknown field`);
29
+ }
30
+ if (!hasSupportedResultMetadataPath(value.path)) {
31
+ throw new Error(`${path}.${key}.path must select output or data`);
32
+ }
33
+ if (!isResultProjectionKind(value.kind)) {
34
+ throw new Error(`${path}.${key}.kind is not supported`);
35
+ }
36
+ return [key, { path: value.path, kind: value.kind }];
37
+ }));
38
+ for (const [key, projection] of Object.entries(result)) {
39
+ if (projection.kind !== "preview")
40
+ continue;
41
+ if (Object.hasOwn(result, `${key}Truncated`)) {
42
+ throw new Error(`${path}.${key} conflicts with its truncation metadata`);
43
+ }
44
+ }
45
+ return result;
46
+ }
47
+ function hasSupportedResultMetadataKey(key) {
48
+ if (!/^[a-zA-Z][a-zA-Z0-9]{0,63}$/u.test(key))
49
+ return false;
50
+ return !FORBIDDEN_PATH_SEGMENTS.has(key);
51
+ }
52
+ function hasSupportedResultMetadataPath(value) {
53
+ if (typeof value !== "string")
54
+ return false;
55
+ if (value === "output")
56
+ return true;
57
+ const segments = value.split(".");
58
+ if (segments[0] !== "data")
59
+ return false;
60
+ if (segments.length < 2 || segments.length > RESULT_PATH_SEGMENT_LIMIT)
61
+ return false;
62
+ return segments.every(isSupportedResultPathSegment);
63
+ }
64
+ function hasUnknownResultProjectionFields(value) {
65
+ return Object.keys(value).some((field) => field !== "path" && field !== "kind");
66
+ }
67
+ function isSupportedResultPathSegment(segment) {
68
+ if (!/^[a-zA-Z][a-zA-Z0-9_]*$/u.test(segment))
69
+ return false;
70
+ return !FORBIDDEN_PATH_SEGMENTS.has(segment);
71
+ }
72
+ function isResultProjectionKind(value) {
73
+ return RESULT_PROJECTION_KINDS.includes(value);
74
+ }
@@ -1,3 +1,4 @@
1
+ import { projectToolResultEventMetadata } from "./tool-result-event-projection.js";
1
2
  function safeTrim(value) {
2
3
  return typeof value === "string" ? value.trim() : "";
3
4
  }
@@ -177,5 +178,7 @@ export function buildToolCompletedEventMetadata(call, result, definition) {
177
178
  ...(buildCallMeta(call, definition) || {}),
178
179
  ...toolResultData,
179
180
  ...(buildResultMeta(result, actions) || {}),
181
+ // Explicit result mappings override generic display fallbacks when present.
182
+ ...projectToolResultEventMetadata(result, definition?.eventPresentation?.resultMetadata),
180
183
  });
181
184
  }
@@ -0,0 +1,3 @@
1
+ import type { ToolEventMetadata, ToolEventPresentation, ToolExecutionResult } from "./tool-types.js";
2
+ /** Derive display metadata without changing canonical tool evidence. */
3
+ export declare function projectToolResultEventMetadata(result: ToolExecutionResult, projections: ToolEventPresentation["resultMetadata"]): ToolEventMetadata | undefined;
@@ -0,0 +1,82 @@
1
+ const PREVIEW_CHARACTER_LIMIT = 1_200;
2
+ const PREVIEW_LINE_LIMIT = 20;
3
+ const EVENT_PREVIEW_CHARACTER_LIMIT = 2_400;
4
+ /** Derive display metadata without changing canonical tool evidence. */
5
+ export function projectToolResultEventMetadata(result, projections) {
6
+ if (!projections)
7
+ return undefined;
8
+ const metadata = {};
9
+ let remainingCharacters = EVENT_PREVIEW_CHARACTER_LIMIT;
10
+ for (const [key, projection] of Object.entries(projections)) {
11
+ const value = readProjectedResultValue(result, projection);
12
+ if (value === undefined)
13
+ continue;
14
+ if (typeof value !== "string") {
15
+ metadata[key] = value;
16
+ continue;
17
+ }
18
+ const preview = boundResultPreview(value, remainingCharacters);
19
+ metadata[key] = preview.text;
20
+ metadata[`${key}Truncated`] = preview.truncated;
21
+ remainingCharacters -= preview.text.length;
22
+ }
23
+ return Object.keys(metadata).length > 0 ? metadata : undefined;
24
+ }
25
+ function readProjectedResultValue(result, projection) {
26
+ const value = readOwnResultPath(result, projection.path);
27
+ if (projection.kind === "number") {
28
+ return isFiniteResultNumber(value) ? value : undefined;
29
+ }
30
+ if (projection.kind === "boolean") {
31
+ return typeof value === "boolean" ? value : undefined;
32
+ }
33
+ return typeof value === "string" ? value : undefined;
34
+ }
35
+ function readOwnResultPath(result, path) {
36
+ let value = result;
37
+ for (const segment of path.split(".")) {
38
+ if (!isOwnResultContainer(value, segment))
39
+ return undefined;
40
+ value = value[segment];
41
+ }
42
+ return value;
43
+ }
44
+ function isOwnResultContainer(value, key) {
45
+ if (value === null || typeof value !== "object")
46
+ return false;
47
+ if (Array.isArray(value))
48
+ return false;
49
+ return Object.hasOwn(value, key);
50
+ }
51
+ function isFiniteResultNumber(value) {
52
+ return typeof value === "number" && Number.isFinite(value);
53
+ }
54
+ function boundResultPreview(value, remainingCharacters) {
55
+ const characterLimit = Math.min(PREVIEW_CHARACTER_LIMIT, remainingCharacters);
56
+ let end = Math.min(value.length, characterLimit);
57
+ let lineCount = 1;
58
+ for (let index = 0; index < end; index += 1) {
59
+ if (!startsPreviewLine(value, index))
60
+ continue;
61
+ lineCount += 1;
62
+ if (lineCount <= PREVIEW_LINE_LIMIT)
63
+ continue;
64
+ end = index;
65
+ break;
66
+ }
67
+ if (splitsSurrogatePair(value, end))
68
+ end -= 1;
69
+ return { text: value.slice(0, end), truncated: end < value.length };
70
+ }
71
+ function startsPreviewLine(value, index) {
72
+ if (value[index] === "\r")
73
+ return true;
74
+ return value[index] === "\n" && value[index - 1] !== "\r";
75
+ }
76
+ function splitsSurrogatePair(value, end) {
77
+ if (end <= 0 || end >= value.length)
78
+ return false;
79
+ const before = value.charCodeAt(end - 1);
80
+ const after = value.charCodeAt(end);
81
+ return (before >= 0xd800 && before <= 0xdbff && after >= 0xdc00 && after <= 0xdfff);
82
+ }
@@ -18,8 +18,13 @@ export type ToolEventLifecycleCopy = Readonly<{
18
18
  status: string;
19
19
  message: string;
20
20
  }>;
21
+ export type ToolEventResultMetadataProjection = Readonly<{
22
+ path: string;
23
+ kind: "preview" | "number" | "boolean";
24
+ }>;
21
25
  export type ToolEventPresentation = Readonly<{
22
26
  metadata: Readonly<Record<string, ToolEventMetadataProjection>>;
27
+ resultMetadata?: Readonly<Record<string, ToolEventResultMetadataProjection>>;
23
28
  lifecycle?: Readonly<{
24
29
  started?: ToolEventLifecycleCopy;
25
30
  completed?: ToolEventLifecycleCopy;
@@ -115,7 +120,7 @@ export type ToolRequestAttachment = Readonly<{
115
120
  name?: string;
116
121
  size?: number;
117
122
  }>;
118
- /** Minimal config-filtered tool fact projected to plugin execution only. */
123
+ /** Minimal config-filtered tool fact; consumers project it for their own context. */
119
124
  export type ToolAvailabilityEntry = Readonly<{
120
125
  toolName: string;
121
126
  operationId: string;
@@ -4,6 +4,7 @@ import { runInitRuntime } from "../../scripts/init-runtime.js";
4
4
  import { runConfigureLongTermMemory } from "../../scripts/configure-long-term-memory.js";
5
5
  import { createModelGatewayServer, resolveProviderAdapters, resolveModelGatewayPort, } from "../model-gateway/server.js";
6
6
  import { loadDotEnvFile } from "../shared/load-dotenv.js";
7
+ import { closeHttpServerImmediately } from "../shared/http-server-shutdown.js";
7
8
  import { startWebUiServer } from "../web-ui/server.js";
8
9
  import { resolveWebUiAddress } from "../web-ui/web-ui-address.js";
9
10
  function printHelp() {
@@ -23,16 +24,6 @@ function printHelp() {
23
24
  " start Start the local model gateway and Web UI.",
24
25
  ].join("\n"));
25
26
  }
26
- function closeServer(server) {
27
- return new Promise((resolveClose, reject) => {
28
- server.close((error) => {
29
- if (error)
30
- reject(error);
31
- else
32
- resolveClose();
33
- });
34
- });
35
- }
36
27
  async function runStart(args) {
37
28
  if (args.includes("--help") || args.includes("-h")) {
38
29
  console.log("Usage: abot start");
@@ -75,7 +66,7 @@ async function runStart(args) {
75
66
  closing = true;
76
67
  void Promise.all([
77
68
  webUi.close(),
78
- ...(gateway ? [closeServer(gateway)] : []),
69
+ ...(gateway ? [closeHttpServerImmediately(gateway)] : []),
79
70
  ]).then(() => resolveExit(), rejectExit);
80
71
  };
81
72
  process.once("SIGINT", shutdown);
@@ -1,4 +1,4 @@
1
- import type { ModelGatewayFormat, ResolvedModelInvocation } from "../../types.js";
1
+ import type { ResolvedModelInvocation } from "../../types.js";
2
2
  export declare function readOptionalPositiveIntEnv(name: string): number | undefined;
3
3
  export declare function buildOllamaOptions(params: {
4
4
  baseOptions: Record<string, unknown>;
@@ -13,8 +13,6 @@ export declare function buildOllamaOptions(params: {
13
13
  export declare function deriveOllamaNumPredict(params: {
14
14
  payload: Readonly<Record<string, unknown>>;
15
15
  invocation: ResolvedModelInvocation;
16
- effectiveFormat?: ModelGatewayFormat;
17
- useStructuredOutputCeiling: boolean;
18
16
  outputTokenLimit?: number;
19
17
  }): number;
20
18
  export declare function resolveOllamaKeepAlive(invocation: ResolvedModelInvocation): string;
@@ -1,4 +1,3 @@
1
- import { estimateStrictStructuredOutputTokenCeiling } from "../../structured-output/budget.js";
2
1
  import { estimateProviderEnvelopeInputTokens } from "../envelope-budget.js";
3
2
  const DEFAULT_OLLAMA_KEEP_ALIVE = "3m";
4
3
  export function readOptionalPositiveIntEnv(name) {
@@ -38,10 +37,7 @@ export function buildOllamaOptions(params) {
38
37
  export function deriveOllamaNumPredict(params) {
39
38
  const estimatedInputTokens = estimateProviderEnvelopeInputTokens(params.payload, params.invocation.profile.context.tokenEstimation);
40
39
  const physicalRemainingTokens = Math.max(1, params.invocation.profile.contextWindowTokens - estimatedInputTokens);
41
- const structuredOutputCeiling = params.useStructuredOutputCeiling
42
- ? estimateStrictStructuredOutputTokenCeiling(params.effectiveFormat, params.invocation.profile.context.tokenEstimation)
43
- : undefined;
44
- return Math.max(1, Math.min(physicalRemainingTokens, structuredOutputCeiling ?? physicalRemainingTokens, params.outputTokenLimit ?? physicalRemainingTokens));
40
+ return Math.max(1, Math.min(physicalRemainingTokens, params.outputTokenLimit ?? physicalRemainingTokens));
45
41
  }
46
42
  export function resolveOllamaKeepAlive(invocation) {
47
43
  const configured = invocation.profile.providerConfig?.keepAlive?.trim();
@@ -28,10 +28,6 @@ function applyGenerationOptions(params) {
28
28
  derivedNumPredict: deriveOllamaNumPredict({
29
29
  payload: params.payload,
30
30
  invocation: params.invocation,
31
- ...(params.effectiveFormat
32
- ? { effectiveFormat: params.effectiveFormat }
33
- : {}),
34
- useStructuredOutputCeiling: params.useStructuredOutputCeiling,
35
31
  ...(params.outputTokenLimit !== undefined
36
32
  ? { outputTokenLimit: params.outputTokenLimit }
37
33
  : {}),
@@ -71,8 +67,6 @@ export function buildOllamaPayload(requestBody, payloadOptions = {}) {
71
67
  applyGenerationOptions({
72
68
  payload,
73
69
  invocation,
74
- ...(effectiveFormat ? { effectiveFormat } : {}),
75
- useStructuredOutputCeiling: !invocation.profile.supportsThinking || invocation.think === "none",
76
70
  ...(outputTokenLimit !== undefined ? { outputTokenLimit } : {}),
77
71
  });
78
72
  return payload;
@@ -103,8 +97,6 @@ export function buildOllamaRawPayload(requestBody, payloadOptions = {}) {
103
97
  applyGenerationOptions({
104
98
  payload,
105
99
  invocation,
106
- ...(effectiveFormat ? { effectiveFormat } : {}),
107
- useStructuredOutputCeiling: false,
108
100
  ...(outputTokenLimit !== undefined ? { outputTokenLimit } : {}),
109
101
  });
110
102
  return payload;
@@ -1,4 +1,5 @@
1
1
  export async function readJsonBody(request) {
2
+ request.setEncoding("utf8");
2
3
  let raw = "";
3
4
  for await (const chunk of request) {
4
5
  raw += chunk;
@@ -4,4 +4,6 @@ export * from "./parameters.js";
4
4
  export * from "./paths.js";
5
5
  export * from "./plugin.js";
6
6
  export * from "./results.js";
7
+ export * from "./tool-availability-brief.js";
8
+ export * from "./tool-availability-overview.js";
7
9
  export * from "../plugin-contract/index.js";
@@ -4,4 +4,6 @@ export * from "./parameters.js";
4
4
  export * from "./paths.js";
5
5
  export * from "./plugin.js";
6
6
  export * from "./results.js";
7
+ export * from "./tool-availability-brief.js";
8
+ export * from "./tool-availability-overview.js";
7
9
  export * from "../plugin-contract/index.js";
@@ -0,0 +1,9 @@
1
+ import type { ToolAvailabilityEntry } from "../plugin-contract/entrypoint.js";
2
+ import { type BoundedCollectionMetadata, type BoundedTextMetadata } from "./bounds.js";
3
+ export type ToolAvailabilityBrief = Readonly<{
4
+ text: string;
5
+ collection: BoundedCollectionMetadata;
6
+ output: BoundedTextMetadata;
7
+ }>;
8
+ /** Formats the existing bounded, on-demand tool brief without executing tools. */
9
+ export declare function buildToolAvailabilityBrief(entries: readonly ToolAvailabilityEntry[]): ToolAvailabilityBrief;
@@ -0,0 +1,48 @@
1
+ import { boundCollection, boundText, } from "./bounds.js";
2
+ const TOOL_COUNT_MAX = 64;
3
+ const OUTPUT_CHARACTER_MAX = 16_000;
4
+ /** Formats the existing bounded, on-demand tool brief without executing tools. */
5
+ export function buildToolAvailabilityBrief(entries) {
6
+ const orderedTools = [...entries].sort(compareAvailableTools);
7
+ const boundedTools = boundCollection(orderedTools, {
8
+ maxItems: TOOL_COUNT_MAX,
9
+ });
10
+ const rawOutput = [
11
+ `Available tool operations: ${entries.length}`,
12
+ ...boundedTools.items.map(formatAvailableTool),
13
+ ...(boundedTools.metadata.truncated
14
+ ? [
15
+ `[${boundedTools.metadata.omittedItems} additional tool operations omitted]`,
16
+ ]
17
+ : []),
18
+ ].join("\n");
19
+ const boundedOutput = boundText(rawOutput, {
20
+ maxChars: OUTPUT_CHARACTER_MAX,
21
+ marker: "\n[available tool brief truncated]",
22
+ });
23
+ return Object.freeze({
24
+ text: boundedOutput.text,
25
+ collection: boundedTools.metadata,
26
+ output: boundedOutput.metadata,
27
+ });
28
+ }
29
+ function formatAvailableTool(tool) {
30
+ return [
31
+ `- ${tool.operationId}`,
32
+ `(tool=${tool.toolName}; effect=${tool.effect}; groups=${tool.catalogGroups.join(",")})`,
33
+ tool.summary,
34
+ ].join(" ");
35
+ }
36
+ function compareAvailableTools(left, right) {
37
+ const byOperation = compareAscii(left.operationId, right.operationId);
38
+ if (byOperation !== 0)
39
+ return byOperation;
40
+ return compareAscii(left.toolName, right.toolName);
41
+ }
42
+ function compareAscii(left, right) {
43
+ if (left < right)
44
+ return -1;
45
+ if (left > right)
46
+ return 1;
47
+ return 0;
48
+ }
@@ -0,0 +1,9 @@
1
+ import type { ToolAvailabilityEntry } from "../plugin-contract/entrypoint.js";
2
+ export type ToolAvailabilityOverviewLevel = "detailed" | "titles" | "groups";
3
+ export type ToolAvailabilityOverviewGroup = Readonly<{
4
+ groupId: string;
5
+ memberCount: number;
6
+ effects: readonly string[];
7
+ }>;
8
+ /** Complete informational candidates; callers own admission and context budget. */
9
+ export declare function buildToolAvailabilityOverview(entries: readonly ToolAvailabilityEntry[], groups: readonly ToolAvailabilityOverviewGroup[], level: ToolAvailabilityOverviewLevel): string;
@@ -0,0 +1,62 @@
1
+ /** Complete informational candidates; callers own admission and context budget. */
2
+ export function buildToolAvailabilityOverview(entries, groups, level) {
3
+ if (level === "detailed")
4
+ return describeAvailableTools(entries);
5
+ const orderedGroups = [...groups].sort((left, right) => compareAscii(left.groupId, right.groupId));
6
+ if (level === "titles")
7
+ return describeGroupTools(entries, orderedGroups);
8
+ return orderedGroups.map(describeGroupMetadata).join("\n");
9
+ }
10
+ function describeAvailableTools(entries) {
11
+ const tools = new Map();
12
+ for (const entry of entries) {
13
+ const tool = tools.get(entry.toolName) ?? {
14
+ operationIds: new Set(),
15
+ catalogGroups: new Set(),
16
+ };
17
+ tool.operationIds.add(entry.operationId);
18
+ for (const groupId of entry.catalogGroups)
19
+ tool.catalogGroups.add(groupId);
20
+ tools.set(entry.toolName, tool);
21
+ }
22
+ return [...tools.entries()]
23
+ .sort(([left], [right]) => compareAscii(left, right))
24
+ .map(([toolName, tool]) => `- ${formatOverviewIdentifier(toolName)} — ${sortedValues(tool.operationIds)} [${sortedValues(tool.catalogGroups)}]`)
25
+ .join("\n");
26
+ }
27
+ function describeGroupTools(entries, groups) {
28
+ return groups
29
+ .map((group) => {
30
+ const toolNames = new Set(entries
31
+ .filter((entry) => entry.catalogGroups.includes(group.groupId))
32
+ .map((entry) => entry.toolName));
33
+ return `- ${group.groupId}: ${sortedValues(toolNames)}`;
34
+ })
35
+ .join("\n");
36
+ }
37
+ function describeGroupMetadata(group) {
38
+ return `- ${group.groupId} (memberCount=${group.memberCount}; effects=${sortedValues(group.effects)})`;
39
+ }
40
+ function sortedValues(values) {
41
+ return [...values]
42
+ .sort(compareAscii)
43
+ .map(formatOverviewIdentifier)
44
+ .join(", ");
45
+ }
46
+ function formatOverviewIdentifier(value) {
47
+ if (isPlainOverviewIdentifier(value))
48
+ return value;
49
+ return JSON.stringify(value)
50
+ .replace(/\u2028/gu, "\\u2028")
51
+ .replace(/\u2029/gu, "\\u2029");
52
+ }
53
+ function isPlainOverviewIdentifier(value) {
54
+ return /^[A-Za-z0-9][A-Za-z0-9._-]*$/u.test(value);
55
+ }
56
+ function compareAscii(left, right) {
57
+ if (left < right)
58
+ return -1;
59
+ if (left > right)
60
+ return 1;
61
+ return 0;
62
+ }
@@ -175,6 +175,7 @@ class InMemorySessionStore {
175
175
  taskType: options.taskType,
176
176
  requestId: options.requestId,
177
177
  cronJobId: options.cronJobId,
178
+ ...(options.schedule ? { schedule: options.schedule } : {}),
178
179
  cronTitle: options.cronTitle,
179
180
  triggerType: options.triggerType,
180
181
  attachments: options.attachments,