@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
@@ -41,12 +41,35 @@ const handle = runtime.host.start({
41
41
  toolRegistry: runtime.tools,
42
42
  });
43
43
 
44
+ await handle.ready;
45
+
44
46
  process.on("SIGINT", async () => {
45
47
  await handle.stop();
46
48
  process.exit(0);
47
49
  });
48
50
  ```
49
51
 
52
+ The default host starts the scheduler automatically, including persisted Jobs.
53
+ Overlapping handles for the same scheduler share its lifetime: `stop()` closes
54
+ that handle's Bridge, and only the last handle stops the scheduler. `start()` remains
55
+ synchronous for compatibility; the optional `ready` promise exposes asynchronous
56
+ startup errors and requests wait for readiness. A failed startup releases its own
57
+ resources even when a consumer does not read `ready`. Custom injected hosts may
58
+ keep the existing `{ stop }` handle.
59
+
60
+ Supply adapter overrides before starting a host. A different session store,
61
+ configuration, model client, attachment store, tool registry or memory service
62
+ rebuilds the scheduler's request graph as well as ordinary requests. Session
63
+ storage remains backed by the injected store, through the composed deletion
64
+ guard. Use the host's effective graph consistently; do not start the original
65
+ graph alongside its replacement against the same scheduler directory. An event
66
+ observer override alone keeps the existing admission and scheduler lifetime.
67
+
68
+ Session deletion finishes attachment cleanup before acknowledging the deletion
69
+ receipt. An explicit repeat retries only failed cleanup, through the same owner
70
+ for Web, Bridge and local clients. Web shutdown closes HTTP/WebSocket intake and
71
+ prevents new environment initialization before awaiting pending startup work.
72
+
50
73
  ## Runtime Config
51
74
 
52
75
  The default host reads `runtime.config.json`, then lets environment variables
@@ -131,7 +131,9 @@ not create `planner.plan.*` state or events.
131
131
  Runtime capabilities use the stable tool event envelope. Adapter-owned
132
132
  presentation metadata supplies the tool, operation and action type; target
133
133
  metadata contains only resolved logical paths. Physical
134
- roots, opaque subject identities and authored payload bodies are never exposed.
134
+ roots and opaque subject identities are never exposed. A plugin may opt into
135
+ bounded input or result excerpts through its declared event presentation.
136
+ These excerpts are display data, not additional model instructions or evidence.
135
137
  These events describe capability execution only. Only `planner.plan.*` events
136
138
  report canonical item-status changes or semantic progress.
137
139
 
@@ -146,6 +148,31 @@ Tool events use the current tool execution boundary:
146
148
  A `tool.completed` event with `ok: true` proves only that the tool step
147
149
  succeeded. It does not prove the user request is complete.
148
150
 
151
+ Registered-tool events may include an optional `executionId` shared by their
152
+ payload, approval and execution stages. Clients correlate with
153
+ `(requestId, executionId)` rather than matching tool names or arrival order.
154
+ Payload publication still occurs after canonical admission. Older events without
155
+ this field do not establish a lifecycle pairing.
156
+
157
+ The same adapter boundary may include `executorRole` and `roleCallId` from the
158
+ canonical role call. Clients can place the action under its executor even when
159
+ the active role has changed before completion. These fields are display identity;
160
+ they do not change runtime stages, tool parameters, approval inputs or evidence.
161
+ The root role identifier remains `supervisor` regardless of its selected contract.
162
+
163
+ `eventPresentation.resultMetadata` maps optional display keys to existing tool
164
+ result fields through `{path, kind}` descriptors. Paths select `output` or an
165
+ own-property path under `data` (at most four segments). Kinds are `preview`,
166
+ `number` and `boolean`, with at most 16 mappings. A preview is limited to 1,200
167
+ characters and 20 lines, with a 2,400-character total preview budget per event;
168
+ its companion `<key>Truncated` flag describes preview clipping, independently
169
+ of source-result truncation. Missing or mismatched fields are omitted. Valid
170
+ declared values take precedence over generic metadata; omitted fields retain
171
+ the existing fallback metadata. Projection
172
+ does not mutate tool results, canonical evidence, action references or model
173
+ context. The client renders excerpts as inert text and never reconstructs an
174
+ old result by re-reading the current file or memory store.
175
+
149
176
  ## ToolRegistry
150
177
 
151
178
  `ToolRegistry` owns active tool capability discovery and execution:
@@ -177,6 +204,10 @@ retained for compatibility. They must not select a request path or role.
177
204
  Model-facing availability and controls come from the registered
178
205
  `normalInvocation` contract.
179
206
 
207
+ A normal-invocation contract accepts at most 32 operations. This bounds the
208
+ registered operation catalog; it does not limit invocation frequency or the
209
+ number of user-created scheduled Jobs.
210
+
180
211
  Every plugin-handler return is normalized by `ToolRegistry` into one complete
181
212
  `ToolExecutionResult`, whether the operation succeeds or fails. The selected
182
213
  tool identity is Runtime-owned; plugins provide the operation result. The
package/package.json CHANGED
@@ -83,6 +83,8 @@
83
83
  "dist/src/web-ui/",
84
84
  "runtime.config.schema.json",
85
85
  "src/runtime/README.md",
86
+ "src/runtime/scheduler/README.md",
87
+ "src/runtime/local-host/README.md",
86
88
  "LICENSE",
87
89
  "docs/architecture.md",
88
90
  "docs/bridge-compatibility.md",
@@ -172,5 +174,5 @@
172
174
  },
173
175
  "type": "module",
174
176
  "types": "./dist/src/runtime/index.d.ts",
175
- "version": "1.2.0"
177
+ "version": "1.3.0"
176
178
  }
@@ -17,6 +17,21 @@
17
17
  "inspect_code_outline": {
18
18
  "description": "Extract a bounded outline of symbols, selectors, elements, and imports from one source file beneath the configured agent work directory or configured workspace sources, without returning the full file.",
19
19
  "routingCapability": "semantic_lookup",
20
+ "eventPresentation": {
21
+ "metadata": {
22
+ "displayTarget": { "param": "path", "kind": "string" },
23
+ "maxSymbols": { "param": "maxSymbols", "kind": "number" }
24
+ },
25
+ "resultMetadata": {
26
+ "outputPreview": { "path": "output", "kind": "preview" },
27
+ "lineCount": { "path": "data.lineCount", "kind": "number" },
28
+ "returnedItemCount": { "path": "data.truncation.returnedSymbols", "kind": "number" },
29
+ "totalItemCount": { "path": "data.truncation.totalSymbols", "kind": "number" },
30
+ "sourceTruncated": { "path": "data.truncation.symbolsTruncated", "kind": "boolean" },
31
+ "importsTruncated": { "path": "data.truncation.importsTruncated", "kind": "boolean" },
32
+ "outputTruncated": { "path": "data.truncation.output.truncated", "kind": "boolean" }
33
+ }
34
+ },
20
35
  "runtimePathBindings": [
21
36
  {
22
37
  "operationId": "inspect_code_outline",
@@ -13,6 +13,23 @@
13
13
  "description": "Extract bounded text from an attached or configured-root PDF, DOCX, XLSX, PPTX, TXT, CSV, Markdown, JSON, or RTF document. Use source for an attachment id/name or configured-root path. Use source_mode=working_path with path for a runtime/session artifact beneath the current execution working directory. Document bytes remain outside model context, and results expose only attachment identities or logical runtime paths.",
14
14
  "routingCapability": "filesystem_inspection",
15
15
  "developmentRoles": ["inspect", "verify"],
16
+ "eventPresentation": {
17
+ "metadata": {
18
+ "source": { "param": "source", "kind": "string" },
19
+ "displayTarget": { "param": "path", "kind": "string" },
20
+ "sourceMode": { "param": "source_mode", "kind": "string" },
21
+ "startChar": { "param": "start_char", "kind": "number" },
22
+ "maxChars": { "param": "max_chars", "kind": "number" }
23
+ },
24
+ "resultMetadata": {
25
+ "outputPreview": { "path": "output", "kind": "preview" },
26
+ "startChar": { "path": "data.startChar", "kind": "number" },
27
+ "endChar": { "path": "data.endChar", "kind": "number" },
28
+ "totalCharacters": { "path": "data.totalCharacters", "kind": "number" },
29
+ "inputBytes": { "path": "data.inputBytes", "kind": "number" },
30
+ "sourceTruncated": { "path": "data.truncated", "kind": "boolean" }
31
+ }
32
+ },
16
33
  "runtimePathBindings": [
17
34
  {
18
35
  "operationId": "read_document",
@@ -26,6 +26,9 @@
26
26
  "startLine": { "param": "start_line", "kind": "number" },
27
27
  "endLine": { "param": "end_line", "kind": "number" },
28
28
  "locator": { "param": "locator", "kind": "string" }
29
+ },
30
+ "resultMetadata": {
31
+ "outputPreview": { "path": "output", "kind": "preview" }
29
32
  }
30
33
  },
31
34
  "skills": [],
@@ -77,7 +80,11 @@
77
80
  "developmentRoles": ["mutate"],
78
81
  "eventPresentation": {
79
82
  "metadata": {
80
- "path": { "param": "path", "kind": "string" }
83
+ "path": { "param": "path", "kind": "string" },
84
+ "inputPreview": { "param": "instruction", "kind": "string" }
85
+ },
86
+ "resultMetadata": {
87
+ "outputPreview": { "path": "output", "kind": "preview" }
81
88
  }
82
89
  },
83
90
  "payloadChannelSpec": {
@@ -177,6 +184,10 @@
177
184
  "eventPresentation": {
178
185
  "metadata": {
179
186
  "path": { "param": "path", "kind": "string" }
187
+ },
188
+ "resultMetadata": {
189
+ "outputPreview": { "path": "output", "kind": "preview" },
190
+ "sourceTruncated": { "path": "data.truncation.truncated", "kind": "boolean" }
180
191
  }
181
192
  },
182
193
  "skills": ["read_file_skill"],
@@ -208,7 +219,11 @@
208
219
  "developmentRoles": ["establish", "mutate"],
209
220
  "eventPresentation": {
210
221
  "metadata": {
211
- "path": { "param": "path", "kind": "string" }
222
+ "path": { "param": "path", "kind": "string" },
223
+ "inputPreview": { "param": "content", "kind": "string" }
224
+ },
225
+ "resultMetadata": {
226
+ "outputPreview": { "path": "output", "kind": "preview" }
212
227
  }
213
228
  },
214
229
  "payloadChannelSpec": {
@@ -17,6 +17,18 @@
17
17
  "inspect_json": {
18
18
  "description": "Validate one JSON file and return a bounded structural summary. Relative paths resolve inside the configured agent work directory; `workspace/...` targets configured workspace sources.",
19
19
  "routingCapability": "semantic_lookup",
20
+ "eventPresentation": {
21
+ "metadata": {
22
+ "displayTarget": { "param": "path", "kind": "string" },
23
+ "maxDepth": { "param": "maxDepth", "kind": "number" }
24
+ },
25
+ "resultMetadata": {
26
+ "outputPreview": { "path": "output", "kind": "preview" },
27
+ "maxDepth": { "path": "data.maxDepth", "kind": "number" },
28
+ "syntaxValid": { "path": "data.syntaxValid", "kind": "boolean" },
29
+ "outputTruncated": { "path": "data.truncation.output.truncated", "kind": "boolean" }
30
+ }
31
+ },
20
32
  "runtimePathBindings": [
21
33
  { "operationId": "inspect_json", "param": "path", "base": "worker_working_directory" }
22
34
  ],
@@ -13,6 +13,18 @@
13
13
  "description": "Search filenames and/or textual file contents beneath the configured agent work directory or explicit workspace sources. The result is bounded and read-only; it never searches outside configured agent data roots.",
14
14
  "routingCapability": "filesystem_inspection",
15
15
  "developmentRoles": ["inspect"],
16
+ "eventPresentation": {
17
+ "metadata": {
18
+ "query": { "param": "query", "kind": "string" },
19
+ "searchRoot": { "param": "path", "kind": "string" },
20
+ "searchMode": { "param": "mode", "kind": "string" }
21
+ },
22
+ "resultMetadata": {
23
+ "outputPreview": { "path": "output", "kind": "preview" },
24
+ "returnedItemCount": { "path": "data.itemCount", "kind": "number" },
25
+ "sourceTruncated": { "path": "data.truncation.truncated", "kind": "boolean" }
26
+ }
27
+ },
16
28
  "runtimePathBindings": [
17
29
  {
18
30
  "operationId": "search_local_files",
@@ -13,6 +13,16 @@
13
13
  "description": "Read one bounded page of stored memory entries (deterministic, no inference)",
14
14
  "routingCapability": "semantic_lookup",
15
15
  "developmentRoles": ["inspect"],
16
+ "eventPresentation": {
17
+ "metadata": {},
18
+ "resultMetadata": {
19
+ "outputPreview": { "path": "output", "kind": "preview" },
20
+ "returnedItemCount": { "path": "data.returnedItemCount", "kind": "number" },
21
+ "totalItemCount": { "path": "data.itemCount", "kind": "number" },
22
+ "sourceTruncated": { "path": "data.truncated", "kind": "boolean" },
23
+ "nextOffset": { "path": "data.nextOffset", "kind": "number" }
24
+ }
25
+ },
16
26
  "skills": ["memory_lookup_skill"],
17
27
  "operations": {
18
28
  "list_memory": {
@@ -54,6 +64,12 @@
54
64
  "kind": "number",
55
65
  "default": 1
56
66
  }
67
+ },
68
+ "resultMetadata": {
69
+ "outputPreview": { "path": "output", "kind": "preview" },
70
+ "returnedItemCount": { "path": "data.returnedItemCount", "kind": "number" },
71
+ "totalItemCount": { "path": "data.itemCount", "kind": "number" },
72
+ "sourceTruncated": { "path": "data.truncated", "kind": "boolean" }
57
73
  }
58
74
  },
59
75
  "skills": ["memory_lookup_skill"],
@@ -86,7 +102,12 @@
86
102
  "contentLength": {
87
103
  "param": "content",
88
104
  "kind": "length"
89
- }
105
+ },
106
+ "inputPreview": { "param": "content", "kind": "string" }
107
+ },
108
+ "resultMetadata": {
109
+ "outputPreview": { "path": "output", "kind": "preview" },
110
+ "savedId": { "path": "data.id", "kind": "preview" }
90
111
  }
91
112
  },
92
113
  "skills": ["memory_mutation_skill"],
@@ -120,6 +141,10 @@
120
141
  "param": "id",
121
142
  "kind": "string"
122
143
  }
144
+ },
145
+ "resultMetadata": {
146
+ "outputPreview": { "path": "output", "kind": "preview" },
147
+ "deletedCount": { "path": "data.deletedCount", "kind": "number" }
123
148
  }
124
149
  },
125
150
  "skills": ["memory_mutation_skill"],
@@ -170,23 +170,27 @@ export default defineRuntimePlugin((context) => {
170
170
  maxLength: 128,
171
171
  });
172
172
  const deletedCount = await store.delete(id);
173
+ const hasDeletedMemoryEntries = deletedCount > 0;
173
174
  return successResult({
174
175
  output: [
175
- `Memory delete: ${deletedCount > 0 ? "success" : "no_match"}`,
176
+ `Memory delete: ${hasDeletedMemoryEntries ? "success" : "no_match"}`,
176
177
  `id: ${id}`,
177
178
  `deleted: ${deletedCount}`,
178
- ...(deletedCount > 0
179
+ ...(hasDeletedMemoryEntries
179
180
  ? []
180
181
  : [
181
182
  "No memory entry matched that ID. Retrieve memory before retrying.",
182
183
  ]),
183
184
  ].join("\n"),
184
- progress: deletedCount > 0,
185
- producedNewInformation: deletedCount > 0,
186
- ...(deletedCount > 0
185
+ progress: hasDeletedMemoryEntries,
186
+ producedNewInformation: hasDeletedMemoryEntries,
187
+ data: {
188
+ ...(hasDeletedMemoryEntries ? { mutationEvidence: true } : {}),
189
+ deletedCount,
190
+ },
191
+ ...(hasDeletedMemoryEntries
187
192
  ? {
188
193
  actions: [{ type: "memory_delete", target: id }],
189
- data: { mutationEvidence: true, deletedCount },
190
194
  }
191
195
  : {}),
192
196
  });
@@ -1057,20 +1057,24 @@ Memory matches: ${result.totalMatches}`,
1057
1057
  maxLength: 128
1058
1058
  });
1059
1059
  const deletedCount = await store.delete(id);
1060
+ const hasDeletedMemoryEntries = deletedCount > 0;
1060
1061
  return successResult({
1061
1062
  output: [
1062
- `Memory delete: ${deletedCount > 0 ? "success" : "no_match"}`,
1063
+ `Memory delete: ${hasDeletedMemoryEntries ? "success" : "no_match"}`,
1063
1064
  `id: ${id}`,
1064
1065
  `deleted: ${deletedCount}`,
1065
- ...deletedCount > 0 ? [] : [
1066
+ ...hasDeletedMemoryEntries ? [] : [
1066
1067
  "No memory entry matched that ID. Retrieve memory before retrying."
1067
1068
  ]
1068
1069
  ].join("\n"),
1069
- progress: deletedCount > 0,
1070
- producedNewInformation: deletedCount > 0,
1071
- ...deletedCount > 0 ? {
1072
- actions: [{ type: "memory_delete", target: id }],
1073
- data: { mutationEvidence: true, deletedCount }
1070
+ progress: hasDeletedMemoryEntries,
1071
+ producedNewInformation: hasDeletedMemoryEntries,
1072
+ data: {
1073
+ ...hasDeletedMemoryEntries ? { mutationEvidence: true } : {},
1074
+ deletedCount
1075
+ },
1076
+ ...hasDeletedMemoryEntries ? {
1077
+ actions: [{ type: "memory_delete", target: id }]
1074
1078
  } : {}
1075
1079
  });
1076
1080
  } catch (error) {
@@ -18,6 +18,20 @@
18
18
  "inspect_project": {
19
19
  "description": "Inspect a bounded project tree. Path `.` and relative paths resolve inside the configured agent work directory; `workspace/...` targets configured workspace sources.",
20
20
  "routingCapability": "semantic_lookup",
21
+ "eventPresentation": {
22
+ "metadata": {
23
+ "displayTarget": { "param": "path", "kind": "string" },
24
+ "depth": { "param": "depth", "kind": "number" },
25
+ "maxEntries": { "param": "maxEntries", "kind": "number" }
26
+ },
27
+ "resultMetadata": {
28
+ "outputPreview": { "path": "output", "kind": "preview" },
29
+ "depth": { "path": "data.depth", "kind": "number" },
30
+ "maxEntries": { "path": "data.maxEntries", "kind": "number" },
31
+ "sourceTruncated": { "path": "data.truncation.tree", "kind": "boolean" },
32
+ "outputTruncated": { "path": "data.truncation.output.truncated", "kind": "boolean" }
33
+ }
34
+ },
21
35
  "runtimePathBindings": [
22
36
  {
23
37
  "operationId": "inspect_project",
@@ -1,141 +1,19 @@
1
- import { remainingTime, withinDeadline } from "./deadline.js";
2
- import { WebPluginError } from "./errors.js";
3
-
4
- type Release = () => void;
5
-
6
- type Waiter = {
7
- resolve: (release: Release) => void;
8
- reject: (error: WebPluginError) => void;
9
- deadline: number;
10
- abortSignal?: AbortSignal;
11
- timeout?: NodeJS.Timeout;
12
- onAbort?: () => void;
13
- };
1
+ import { createAggregateGate as createSharedGate } from "../../../src/shared/public-http/aggregate-gate.js";
2
+ import { rethrowWebPluginError } from "./errors.js";
14
3
 
15
4
  export function createAggregateGate(maxActive: number, maxQueued: number) {
16
- let active = 0;
17
- const queue: Waiter[] = [];
18
-
19
- const startQueued = () => {
20
- while (active < maxActive && queue.length > 0) {
21
- const waiter = queue.shift()!;
22
- clearTimeout(waiter.timeout);
23
- if (waiter.onAbort) {
24
- waiter.abortSignal?.removeEventListener("abort", waiter.onAbort);
25
- }
26
- if (waiter.abortSignal?.aborted) {
27
- waiter.reject(
28
- new WebPluginError(
29
- "web_request_aborted",
30
- "The web request was aborted.",
31
- ),
32
- );
33
- continue;
34
- }
35
- if (waiter.deadline <= Date.now()) {
36
- waiter.reject(
37
- new WebPluginError(
38
- "web_request_timed_out",
39
- "The upstream web request timed out.",
40
- ),
41
- );
42
- continue;
43
- }
44
- active += 1;
45
- let released = false;
46
- waiter.resolve(() => {
47
- if (released) return;
48
- released = true;
49
- active -= 1;
50
- startQueued();
51
- });
52
- }
53
- };
54
-
55
- const acquire = (
56
- deadline: number,
57
- abortSignal?: AbortSignal,
58
- ): Promise<Release> => {
59
- if (abortSignal?.aborted) {
60
- return Promise.reject(
61
- new WebPluginError(
62
- "web_request_aborted",
63
- "The web request was aborted.",
64
- ),
65
- );
66
- }
67
- if (active < maxActive) {
68
- active += 1;
69
- let released = false;
70
- return Promise.resolve(() => {
71
- if (released) return;
72
- released = true;
73
- active -= 1;
74
- startQueued();
75
- });
76
- }
77
- if (queue.length >= maxQueued) {
78
- return Promise.reject(
79
- new WebPluginError(
80
- "web_request_capacity_exceeded",
81
- "The web client is at its bounded request capacity.",
82
- ),
83
- );
84
- }
85
- return new Promise((resolve, reject) => {
86
- const waiter: Waiter = {
87
- resolve,
88
- reject,
89
- deadline,
90
- ...(abortSignal ? { abortSignal } : {}),
91
- };
92
- const remove = () => {
93
- const index = queue.indexOf(waiter);
94
- if (index >= 0) queue.splice(index, 1);
95
- };
96
- const fail = (error: WebPluginError) => {
97
- remove();
98
- clearTimeout(waiter.timeout);
99
- if (waiter.onAbort) {
100
- abortSignal?.removeEventListener("abort", waiter.onAbort);
101
- }
102
- reject(error);
103
- };
104
- waiter.onAbort = () =>
105
- fail(
106
- new WebPluginError(
107
- "web_request_aborted",
108
- "The web request was aborted.",
109
- ),
110
- );
111
- waiter.timeout = setTimeout(
112
- () =>
113
- fail(
114
- new WebPluginError(
115
- "web_request_timed_out",
116
- "The upstream web request timed out.",
117
- ),
118
- ),
119
- remainingTime(deadline),
120
- );
121
- waiter.timeout.unref?.();
122
- abortSignal?.addEventListener("abort", waiter.onAbort, { once: true });
123
- queue.push(waiter);
124
- });
125
- };
126
-
5
+ const gate = createSharedGate(maxActive, maxQueued);
127
6
  return Object.freeze({
128
7
  async run<T>(
129
8
  operation: () => Promise<T>,
130
9
  deadline: number,
131
10
  abortSignal?: AbortSignal,
132
11
  ): Promise<T> {
133
- const release = await acquire(deadline, abortSignal);
134
- const rawWork = Promise.resolve().then(operation);
135
- // A deadline rejects the visible operation promptly, but the capacity slot
136
- // remains held until non-cancellable DNS or transport work actually settles.
137
- void rawWork.then(release, release);
138
- return await withinDeadline(rawWork, deadline, abortSignal);
12
+ try {
13
+ return await gate.run(operation, deadline, abortSignal);
14
+ } catch (error) {
15
+ return rethrowWebPluginError(error);
16
+ }
139
17
  },
140
18
  });
141
19
  }
@@ -1,61 +1,25 @@
1
- import { WebPluginError } from "./errors.js";
1
+ import {
2
+ remainingTime as sharedRemainingTime,
3
+ withinDeadline as sharedWithinDeadline,
4
+ } from "../../../src/shared/public-http/deadline.js";
5
+ import { rethrowWebPluginError } from "./errors.js";
2
6
 
3
7
  export function remainingTime(deadline: number): number {
4
- const remaining = deadline - Date.now();
5
- if (remaining <= 0) {
6
- throw new WebPluginError(
7
- "web_request_timed_out",
8
- "The upstream web request timed out.",
9
- );
8
+ try {
9
+ return sharedRemainingTime(deadline);
10
+ } catch (error) {
11
+ return rethrowWebPluginError(error);
10
12
  }
11
- return remaining;
12
13
  }
13
14
 
14
- export function withinDeadline<T>(
15
+ export async function withinDeadline<T>(
15
16
  promise: Promise<T>,
16
17
  deadline: number,
17
18
  abortSignal?: AbortSignal,
18
19
  ): Promise<T> {
19
- if (abortSignal?.aborted) {
20
- return Promise.reject(
21
- new WebPluginError("web_request_aborted", "The web request was aborted."),
22
- );
20
+ try {
21
+ return await sharedWithinDeadline(promise, deadline, abortSignal);
22
+ } catch (error) {
23
+ return rethrowWebPluginError(error);
23
24
  }
24
- return new Promise((resolve, reject) => {
25
- let settled = false;
26
- const finish = (operation: () => void) => {
27
- if (settled) return;
28
- settled = true;
29
- clearTimeout(timeout);
30
- abortSignal?.removeEventListener("abort", onAbort);
31
- operation();
32
- };
33
- const onAbort = () =>
34
- finish(() =>
35
- reject(
36
- new WebPluginError(
37
- "web_request_aborted",
38
- "The web request was aborted.",
39
- ),
40
- ),
41
- );
42
- const timeout = setTimeout(
43
- () =>
44
- finish(() =>
45
- reject(
46
- new WebPluginError(
47
- "web_request_timed_out",
48
- "The upstream web request timed out.",
49
- ),
50
- ),
51
- ),
52
- remainingTime(deadline),
53
- );
54
- timeout.unref?.();
55
- abortSignal?.addEventListener("abort", onAbort, { once: true });
56
- promise.then(
57
- (value) => finish(() => resolve(value)),
58
- (error) => finish(() => reject(error)),
59
- );
60
- });
61
25
  }
@@ -1,14 +1,12 @@
1
+ import {
2
+ PublicHttpError,
3
+ isPublicHttpError,
4
+ type PublicHttpErrorCode,
5
+ } from "../../../src/shared/public-http/errors.js";
6
+
1
7
  export type WebPluginErrorCode =
2
- | "web_request_aborted"
3
- | "web_request_timed_out"
4
- | "web_request_capacity_exceeded"
5
- | "web_target_invalid"
6
- | "web_target_not_public"
7
- | "web_target_unresolvable"
8
- | "web_redirect_invalid"
9
- | "web_redirect_limit_exceeded"
8
+ | PublicHttpErrorCode
10
9
  | "web_response_unsupported"
11
- | "web_response_invalid"
12
10
  | "web_fetch_http_error"
13
11
  | "web_search_api_key_missing"
14
12
  | "web_search_authentication_failed"
@@ -20,11 +18,11 @@ export type WebPluginErrorCode =
20
18
  | "web_search_sources_unavailable"
21
19
  | "web_search_configuration_invalid";
22
20
 
23
- export class WebPluginError extends Error {
21
+ export class WebPluginError extends PublicHttpError<WebPluginErrorCode> {
24
22
  readonly code: WebPluginErrorCode;
25
23
 
26
24
  constructor(code: WebPluginErrorCode, message: string) {
27
- super(message);
25
+ super(code, message);
28
26
  this.name = "WebPluginError";
29
27
  this.code = code;
30
28
  }
@@ -33,3 +31,11 @@ export class WebPluginError extends Error {
33
31
  export function isWebPluginError(error: unknown): error is WebPluginError {
34
32
  return error instanceof WebPluginError;
35
33
  }
34
+
35
+ export function rethrowWebPluginError(error: unknown): never {
36
+ if (error instanceof WebPluginError) throw error;
37
+ if (isPublicHttpError(error)) {
38
+ throw new WebPluginError(error.code, error.message);
39
+ }
40
+ throw error;
41
+ }