@mono-agent/agent-app 0.11.3 → 0.11.4

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 (345) hide show
  1. package/README.md +222 -26
  2. package/dist/adapter-send-tools-main.js +7 -1
  3. package/dist/adapter-send-tools-main.js.map +1 -1
  4. package/dist/adapter-send-tools.d.ts +19 -1
  5. package/dist/adapter-send-tools.d.ts.map +1 -1
  6. package/dist/adapter-send-tools.js +127 -13
  7. package/dist/adapter-send-tools.js.map +1 -1
  8. package/dist/app-config.d.ts.map +1 -1
  9. package/dist/app-config.js +15 -2
  10. package/dist/app-config.js.map +1 -1
  11. package/dist/app-controller-channels.d.ts +8 -0
  12. package/dist/app-controller-channels.d.ts.map +1 -0
  13. package/dist/app-controller-channels.js +207 -0
  14. package/dist/app-controller-channels.js.map +1 -0
  15. package/dist/app-controller-continuation.d.ts +26 -0
  16. package/dist/app-controller-continuation.d.ts.map +1 -0
  17. package/dist/app-controller-continuation.js +198 -0
  18. package/dist/app-controller-continuation.js.map +1 -0
  19. package/dist/app-controller-lifecycle.d.ts +6 -0
  20. package/dist/app-controller-lifecycle.d.ts.map +1 -0
  21. package/dist/app-controller-lifecycle.js +81 -0
  22. package/dist/app-controller-lifecycle.js.map +1 -0
  23. package/dist/app-controller-maintenance.d.ts +13 -0
  24. package/dist/app-controller-maintenance.d.ts.map +1 -0
  25. package/dist/app-controller-maintenance.js +180 -0
  26. package/dist/app-controller-maintenance.js.map +1 -0
  27. package/dist/app-controller-memory-health.d.ts +12 -0
  28. package/dist/app-controller-memory-health.d.ts.map +1 -0
  29. package/dist/app-controller-memory-health.js +160 -0
  30. package/dist/app-controller-memory-health.js.map +1 -0
  31. package/dist/app-controller-memory.d.ts +9 -0
  32. package/dist/app-controller-memory.d.ts.map +1 -0
  33. package/dist/app-controller-memory.js +83 -0
  34. package/dist/app-controller-memory.js.map +1 -0
  35. package/dist/app-controller-responder.d.ts +20 -0
  36. package/dist/app-controller-responder.d.ts.map +1 -0
  37. package/dist/app-controller-responder.js +246 -0
  38. package/dist/app-controller-responder.js.map +1 -0
  39. package/dist/app-controller-traceability.d.ts +25 -0
  40. package/dist/app-controller-traceability.d.ts.map +1 -0
  41. package/dist/app-controller-traceability.js +418 -0
  42. package/dist/app-controller-traceability.js.map +1 -0
  43. package/dist/app-controller-utils.d.ts +38 -0
  44. package/dist/app-controller-utils.d.ts.map +1 -0
  45. package/dist/app-controller-utils.js +185 -0
  46. package/dist/app-controller-utils.js.map +1 -0
  47. package/dist/app-controller.d.ts +400 -0
  48. package/dist/app-controller.d.ts.map +1 -0
  49. package/dist/app-controller.js +336 -0
  50. package/dist/app-controller.js.map +1 -0
  51. package/dist/app.d.ts +7 -115
  52. package/dist/app.d.ts.map +1 -1
  53. package/dist/app.js +6 -1912
  54. package/dist/app.js.map +1 -1
  55. package/dist/artifact-retention.d.ts +4 -0
  56. package/dist/artifact-retention.d.ts.map +1 -1
  57. package/dist/artifact-retention.js +38 -0
  58. package/dist/artifact-retention.js.map +1 -1
  59. package/dist/backfill.d.ts +3 -1
  60. package/dist/backfill.d.ts.map +1 -1
  61. package/dist/backfill.js +5 -1
  62. package/dist/backfill.js.map +1 -1
  63. package/dist/background-runtime.d.ts +27 -0
  64. package/dist/background-runtime.d.ts.map +1 -1
  65. package/dist/background-runtime.js +383 -205
  66. package/dist/background-runtime.js.map +1 -1
  67. package/dist/background-worker-lease.d.ts.map +1 -1
  68. package/dist/background-worker-lease.js +41 -241
  69. package/dist/background-worker-lease.js.map +1 -1
  70. package/dist/background.d.ts +31 -9
  71. package/dist/background.d.ts.map +1 -1
  72. package/dist/background.js +543 -272
  73. package/dist/background.js.map +1 -1
  74. package/dist/channel-drivers/cron.d.ts +11 -0
  75. package/dist/channel-drivers/cron.d.ts.map +1 -0
  76. package/dist/channel-drivers/cron.js +168 -0
  77. package/dist/channel-drivers/cron.js.map +1 -0
  78. package/dist/channel-drivers/live.d.ts +11 -0
  79. package/dist/channel-drivers/live.d.ts.map +1 -0
  80. package/dist/channel-drivers/live.js +47 -0
  81. package/dist/channel-drivers/live.js.map +1 -0
  82. package/dist/channel-drivers/native-notify.d.ts +27 -0
  83. package/dist/channel-drivers/native-notify.d.ts.map +1 -0
  84. package/dist/channel-drivers/native-notify.js +94 -0
  85. package/dist/channel-drivers/native-notify.js.map +1 -0
  86. package/dist/channel-drivers/openai-api.d.ts +7 -0
  87. package/dist/channel-drivers/openai-api.d.ts.map +1 -0
  88. package/dist/channel-drivers/openai-api.js +63 -0
  89. package/dist/channel-drivers/openai-api.js.map +1 -0
  90. package/dist/channel-drivers/shared.d.ts +4 -0
  91. package/dist/channel-drivers/shared.d.ts.map +1 -0
  92. package/dist/channel-drivers/shared.js +5 -0
  93. package/dist/channel-drivers/shared.js.map +1 -0
  94. package/dist/channel-drivers/slack.d.ts +14 -0
  95. package/dist/channel-drivers/slack.d.ts.map +1 -0
  96. package/dist/channel-drivers/slack.js +227 -0
  97. package/dist/channel-drivers/slack.js.map +1 -0
  98. package/dist/channel-drivers/telegram.d.ts +11 -0
  99. package/dist/channel-drivers/telegram.d.ts.map +1 -0
  100. package/dist/channel-drivers/telegram.js +244 -0
  101. package/dist/channel-drivers/telegram.js.map +1 -0
  102. package/dist/channel-drivers/tui.d.ts +15 -0
  103. package/dist/channel-drivers/tui.d.ts.map +1 -0
  104. package/dist/channel-drivers/tui.js +108 -0
  105. package/dist/channel-drivers/tui.js.map +1 -0
  106. package/dist/channel-drivers/webhook.d.ts +7 -0
  107. package/dist/channel-drivers/webhook.d.ts.map +1 -0
  108. package/dist/channel-drivers/webhook.js +115 -0
  109. package/dist/channel-drivers/webhook.js.map +1 -0
  110. package/dist/channels.d.ts +21 -81
  111. package/dist/channels.d.ts.map +1 -1
  112. package/dist/channels.js +11 -1174
  113. package/dist/channels.js.map +1 -1
  114. package/dist/cli-args.d.ts +121 -0
  115. package/dist/cli-args.d.ts.map +1 -0
  116. package/dist/cli-args.js +532 -0
  117. package/dist/cli-args.js.map +1 -0
  118. package/dist/cli-background-command.d.ts +59 -0
  119. package/dist/cli-background-command.d.ts.map +1 -0
  120. package/dist/cli-background-command.js +475 -0
  121. package/dist/cli-background-command.js.map +1 -0
  122. package/dist/cli-cancellation.d.ts +6 -0
  123. package/dist/cli-cancellation.d.ts.map +1 -0
  124. package/dist/cli-cancellation.js +23 -0
  125. package/dist/cli-cancellation.js.map +1 -0
  126. package/dist/cli-commands.d.ts +12 -0
  127. package/dist/cli-commands.d.ts.map +1 -0
  128. package/dist/cli-commands.js +306 -0
  129. package/dist/cli-commands.js.map +1 -0
  130. package/dist/cli-help.d.ts +11 -0
  131. package/dist/cli-help.d.ts.map +1 -0
  132. package/dist/cli-help.js +262 -0
  133. package/dist/cli-help.js.map +1 -0
  134. package/dist/cli-init-command.d.ts +60 -0
  135. package/dist/cli-init-command.d.ts.map +1 -0
  136. package/dist/cli-init-command.js +1910 -0
  137. package/dist/cli-init-command.js.map +1 -0
  138. package/dist/cli-install-skill-command.d.ts +3 -0
  139. package/dist/cli-install-skill-command.d.ts.map +1 -0
  140. package/dist/cli-install-skill-command.js +51 -0
  141. package/dist/cli-install-skill-command.js.map +1 -0
  142. package/dist/cli-sandbox-command.d.ts +10 -0
  143. package/dist/cli-sandbox-command.d.ts.map +1 -0
  144. package/dist/cli-sandbox-command.js +100 -0
  145. package/dist/cli-sandbox-command.js.map +1 -0
  146. package/dist/cli-validate-config-command.d.ts +36 -0
  147. package/dist/cli-validate-config-command.d.ts.map +1 -0
  148. package/dist/cli-validate-config-command.js +317 -0
  149. package/dist/cli-validate-config-command.js.map +1 -0
  150. package/dist/cli.d.ts +6 -248
  151. package/dist/cli.d.ts.map +1 -1
  152. package/dist/cli.js +6 -3792
  153. package/dist/cli.js.map +1 -1
  154. package/dist/config-reference.d.ts +2 -1
  155. package/dist/config-reference.d.ts.map +1 -1
  156. package/dist/config-reference.js +14 -3
  157. package/dist/config-reference.js.map +1 -1
  158. package/dist/configured-agent.d.ts +23 -0
  159. package/dist/configured-agent.d.ts.map +1 -1
  160. package/dist/configured-agent.js +89 -12
  161. package/dist/configured-agent.js.map +1 -1
  162. package/dist/continuation-dispatch-worker.d.ts +21 -0
  163. package/dist/continuation-dispatch-worker.d.ts.map +1 -0
  164. package/dist/continuation-dispatch-worker.js +425 -0
  165. package/dist/continuation-dispatch-worker.js.map +1 -0
  166. package/dist/continuation-http-routes.d.ts +15 -0
  167. package/dist/continuation-http-routes.d.ts.map +1 -0
  168. package/dist/continuation-http-routes.js +265 -0
  169. package/dist/continuation-http-routes.js.map +1 -0
  170. package/dist/continuation-operator-api.d.ts +18 -0
  171. package/dist/continuation-operator-api.d.ts.map +1 -0
  172. package/dist/continuation-operator-api.js +164 -0
  173. package/dist/continuation-operator-api.js.map +1 -0
  174. package/dist/continuation-origin-store.d.ts +19 -0
  175. package/dist/continuation-origin-store.d.ts.map +1 -0
  176. package/dist/continuation-origin-store.js +273 -0
  177. package/dist/continuation-origin-store.js.map +1 -0
  178. package/dist/continuation-service-errors.d.ts +18 -0
  179. package/dist/continuation-service-errors.d.ts.map +1 -0
  180. package/dist/continuation-service-errors.js +35 -0
  181. package/dist/continuation-service-errors.js.map +1 -0
  182. package/dist/continuation-service-helpers.d.ts +39 -0
  183. package/dist/continuation-service-helpers.d.ts.map +1 -0
  184. package/dist/continuation-service-helpers.js +308 -0
  185. package/dist/continuation-service-helpers.js.map +1 -0
  186. package/dist/continuation-service-origin.d.ts +55 -0
  187. package/dist/continuation-service-origin.d.ts.map +1 -0
  188. package/dist/continuation-service-origin.js +325 -0
  189. package/dist/continuation-service-origin.js.map +1 -0
  190. package/dist/continuation-service-types.d.ts +110 -0
  191. package/dist/continuation-service-types.d.ts.map +1 -0
  192. package/dist/continuation-service-types.js +11 -0
  193. package/dist/continuation-service-types.js.map +1 -0
  194. package/dist/continuation-service.d.ts +4 -97
  195. package/dist/continuation-service.d.ts.map +1 -1
  196. package/dist/continuation-service.js +9 -1525
  197. package/dist/continuation-service.js.map +1 -1
  198. package/dist/continuation-store-fs.d.ts +15 -0
  199. package/dist/continuation-store-fs.d.ts.map +1 -0
  200. package/dist/continuation-store-fs.js +247 -0
  201. package/dist/continuation-store-fs.js.map +1 -0
  202. package/dist/continuation-store-policy.d.ts +21 -0
  203. package/dist/continuation-store-policy.d.ts.map +1 -0
  204. package/dist/continuation-store-policy.js +278 -0
  205. package/dist/continuation-store-policy.js.map +1 -0
  206. package/dist/continuation-store-records.d.ts +9 -0
  207. package/dist/continuation-store-records.d.ts.map +1 -0
  208. package/dist/continuation-store-records.js +221 -0
  209. package/dist/continuation-store-records.js.map +1 -0
  210. package/dist/continuation-store-types.d.ts +173 -0
  211. package/dist/continuation-store-types.d.ts.map +1 -0
  212. package/dist/continuation-store-types.js +26 -0
  213. package/dist/continuation-store-types.js.map +1 -0
  214. package/dist/continuation-store.d.ts +4 -138
  215. package/dist/continuation-store.d.ts.map +1 -1
  216. package/dist/continuation-store.js +145 -1049
  217. package/dist/continuation-store.js.map +1 -1
  218. package/dist/doctor.d.ts +5 -0
  219. package/dist/doctor.d.ts.map +1 -1
  220. package/dist/doctor.js +575 -38
  221. package/dist/doctor.js.map +1 -1
  222. package/dist/init.d.ts +2 -0
  223. package/dist/init.d.ts.map +1 -1
  224. package/dist/init.js +92 -239
  225. package/dist/init.js.map +1 -1
  226. package/dist/interaction-bridge.d.ts +19 -0
  227. package/dist/interaction-bridge.d.ts.map +1 -1
  228. package/dist/interaction-bridge.js +130 -0
  229. package/dist/interaction-bridge.js.map +1 -1
  230. package/dist/launchd-logs.d.ts +91 -0
  231. package/dist/launchd-logs.d.ts.map +1 -0
  232. package/dist/launchd-logs.js +1499 -0
  233. package/dist/launchd-logs.js.map +1 -0
  234. package/dist/launchd.d.ts +27 -0
  235. package/dist/launchd.d.ts.map +1 -1
  236. package/dist/launchd.js +89 -10
  237. package/dist/launchd.js.map +1 -1
  238. package/dist/memory-command.d.ts +2 -0
  239. package/dist/memory-command.d.ts.map +1 -1
  240. package/dist/memory-command.js +161 -48
  241. package/dist/memory-command.js.map +1 -1
  242. package/dist/memory-recall-settings.d.ts +64 -0
  243. package/dist/memory-recall-settings.d.ts.map +1 -0
  244. package/dist/memory-recall-settings.js +51 -0
  245. package/dist/memory-recall-settings.js.map +1 -0
  246. package/dist/memory-recall.d.ts +7 -95
  247. package/dist/memory-recall.d.ts.map +1 -1
  248. package/dist/memory-recall.js +8 -143
  249. package/dist/memory-recall.js.map +1 -1
  250. package/dist/memory-rituals.d.ts +3 -3
  251. package/dist/memory-rituals.d.ts.map +1 -1
  252. package/dist/memory-rituals.js +16 -111
  253. package/dist/memory-rituals.js.map +1 -1
  254. package/dist/modules/catalog.js +2 -2
  255. package/dist/modules/catalog.js.map +1 -1
  256. package/dist/modules/known-tools.d.ts +8 -6
  257. package/dist/modules/known-tools.d.ts.map +1 -1
  258. package/dist/modules/known-tools.js +8 -6
  259. package/dist/modules/known-tools.js.map +1 -1
  260. package/dist/notify-destinations.d.ts +5 -0
  261. package/dist/notify-destinations.d.ts.map +1 -1
  262. package/dist/notify-destinations.js +7 -1
  263. package/dist/notify-destinations.js.map +1 -1
  264. package/dist/owner-private-lock.d.ts +95 -0
  265. package/dist/owner-private-lock.d.ts.map +1 -0
  266. package/dist/owner-private-lock.js +566 -0
  267. package/dist/owner-private-lock.js.map +1 -0
  268. package/dist/pi-oauth-login.d.ts +2 -0
  269. package/dist/pi-oauth-login.d.ts.map +1 -1
  270. package/dist/pi-oauth-login.js +39 -5
  271. package/dist/pi-oauth-login.js.map +1 -1
  272. package/dist/posted-message-index.d.ts +35 -16
  273. package/dist/posted-message-index.d.ts.map +1 -1
  274. package/dist/posted-message-index.js +1068 -52
  275. package/dist/posted-message-index.js.map +1 -1
  276. package/dist/posted-reply-history.d.ts +17 -0
  277. package/dist/posted-reply-history.d.ts.map +1 -0
  278. package/dist/posted-reply-history.js +169 -0
  279. package/dist/posted-reply-history.js.map +1 -0
  280. package/dist/proactive-notify.d.ts.map +1 -1
  281. package/dist/proactive-notify.js +6 -4
  282. package/dist/proactive-notify.js.map +1 -1
  283. package/dist/project-skills.d.ts +4 -0
  284. package/dist/project-skills.d.ts.map +1 -1
  285. package/dist/project-skills.js +99 -130
  286. package/dist/project-skills.js.map +1 -1
  287. package/dist/provider-setup.d.ts +0 -1
  288. package/dist/provider-setup.d.ts.map +1 -1
  289. package/dist/provider-setup.js +0 -3
  290. package/dist/provider-setup.js.map +1 -1
  291. package/dist/readiness-probe-worker.d.ts +61 -1
  292. package/dist/readiness-probe-worker.d.ts.map +1 -1
  293. package/dist/readiness-probe-worker.js +49 -56
  294. package/dist/readiness-probe-worker.js.map +1 -1
  295. package/dist/readiness-probe.d.ts +6 -9
  296. package/dist/readiness-probe.d.ts.map +1 -1
  297. package/dist/readiness-probe.js +23 -56
  298. package/dist/readiness-probe.js.map +1 -1
  299. package/dist/redact-secrets.d.ts +15 -0
  300. package/dist/redact-secrets.d.ts.map +1 -0
  301. package/dist/redact-secrets.js +65 -0
  302. package/dist/redact-secrets.js.map +1 -0
  303. package/dist/run-history.js +34 -24
  304. package/dist/run-history.js.map +1 -1
  305. package/dist/runtime-provenance.d.ts +8 -0
  306. package/dist/runtime-provenance.d.ts.map +1 -0
  307. package/dist/runtime-provenance.js +225 -0
  308. package/dist/runtime-provenance.js.map +1 -0
  309. package/dist/sandbox-manager.d.ts +4 -1
  310. package/dist/sandbox-manager.d.ts.map +1 -1
  311. package/dist/sandbox-manager.js +114 -273
  312. package/dist/sandbox-manager.js.map +1 -1
  313. package/dist/secure-file-replace.d.ts +49 -0
  314. package/dist/secure-file-replace.d.ts.map +1 -0
  315. package/dist/secure-file-replace.js +270 -0
  316. package/dist/secure-file-replace.js.map +1 -0
  317. package/dist/seen-conversations.d.ts +32 -5
  318. package/dist/seen-conversations.d.ts.map +1 -1
  319. package/dist/seen-conversations.js +145 -15
  320. package/dist/seen-conversations.js.map +1 -1
  321. package/dist/sessions.d.ts +20 -0
  322. package/dist/sessions.d.ts.map +1 -1
  323. package/dist/sessions.js +41 -6
  324. package/dist/sessions.js.map +1 -1
  325. package/dist/wizard/index.d.ts +2 -2
  326. package/dist/wizard/index.d.ts.map +1 -1
  327. package/dist/wizard/index.js +1 -1
  328. package/dist/wizard/index.js.map +1 -1
  329. package/dist/wizard/presets.d.ts +2 -1
  330. package/dist/wizard/presets.d.ts.map +1 -1
  331. package/dist/wizard/presets.js +2 -1
  332. package/dist/wizard/presets.js.map +1 -1
  333. package/dist/wizard/run.d.ts +0 -26
  334. package/dist/wizard/run.d.ts.map +1 -1
  335. package/dist/wizard/run.js +0 -53
  336. package/dist/wizard/run.js.map +1 -1
  337. package/package.json +21 -16
  338. package/schema/mono-agent.config.schema.json +17 -6
  339. package/skills/mono-agent-composer/SKILL.md +3 -3
  340. package/skills/mono-agent-composer/references/config-blueprint.md +41 -22
  341. package/skills/mono-agent-composer/references/discovery-questions.md +4 -4
  342. package/skills/mono-agent-composer/references/feature-coverage.md +14 -14
  343. package/skills/mono-agent-composer/references/package-map.md +3 -3
  344. package/skills/mono-agent-composer/references/playbooks.md +38 -20
  345. package/skills/mono-agent-composer/references/validation.md +16 -3
@@ -0,0 +1,308 @@
1
+ import { createHmac } from "node:crypto";
2
+ import { ContinuationProtocolError } from "./continuation-service-errors.js";
3
+ import { MAX_OPERATOR_PAGE_SIZE, MAX_TASK_KEY_CHARS, } from "./continuation-service-types.js";
4
+ import { DEFAULT_CONTINUATION_LIMITS, canonicalContinuationJson, continuationTokenMatches, } from "./continuations.js";
5
+ export function continuationOperatorToken(secret) {
6
+ return createHmac("sha256", secret).update("mono-agent-continuation-operator-v1").digest("base64url");
7
+ }
8
+ export function parseClaim(body, now, maxDeadlineMs) {
9
+ const object = asObject(body);
10
+ const taskKey = requiredStringField(object, "taskKey", MAX_TASK_KEY_CHARS);
11
+ const taskHash = requiredStringField(object, "taskHash", 256);
12
+ const deadline = requiredStringField(object, "deadline", 64);
13
+ const deadlineMs = Date.parse(deadline);
14
+ if (!Number.isFinite(deadlineMs) || deadlineMs <= now.getTime()) {
15
+ throw new ContinuationProtocolError(400, "invalid_deadline", "Claim deadline must be a future ISO timestamp.");
16
+ }
17
+ if (deadlineMs - now.getTime() > maxDeadlineMs) {
18
+ throw new ContinuationProtocolError(400, "deadline_too_far", "Claim deadline exceeds the configured maximum.");
19
+ }
20
+ return { taskKey, taskHash, deadline: new Date(deadlineMs).toISOString() };
21
+ }
22
+ export function statusOf(record) {
23
+ return record === undefined ? undefined : statusOfRequired(record);
24
+ }
25
+ export function statusOfRequired(record) {
26
+ return {
27
+ continuationId: record.continuationId,
28
+ state: record.state,
29
+ mode: record.mode,
30
+ taskKey: record.taskKey,
31
+ createdAt: record.createdAt,
32
+ updatedAt: record.updatedAt,
33
+ deadline: record.deadline,
34
+ attempts: { synthesis: record.synthesisAttempts, delivery: record.deliveryAttempts },
35
+ synthesisDeferrals: record.synthesisDeferrals,
36
+ originContext: {
37
+ state: record.originContextState,
38
+ ...(record.originContextDigest === undefined ? {} : { digest: record.originContextDigest }),
39
+ ...(record.originContextMessageCount === undefined ? {} : { messageCount: record.originContextMessageCount }),
40
+ },
41
+ ...(record.completionKind === undefined ? {} : { completionKind: record.completionKind }),
42
+ ...(record.nextAttemptAt === undefined ? {} : { nextAttemptAt: record.nextAttemptAt }),
43
+ ...(record.lastError === undefined ? {} : { lastError: record.lastError }),
44
+ ...(record.receipt === undefined ? {} : { receipt: record.receipt }),
45
+ };
46
+ }
47
+ export function requireRecord(records, id) {
48
+ const record = records.get(id);
49
+ if (record === undefined)
50
+ throw new ContinuationProtocolError(404, "not_found", "Continuation not found.");
51
+ return record;
52
+ }
53
+ export function synthesisInput(record, originContext) {
54
+ const common = {
55
+ continuationId: record.continuationId,
56
+ originConversationId: record.originConversationId,
57
+ originRunId: record.originRunId,
58
+ ...(record.replyToConversationId === undefined ? {} : { replyToConversationId: record.replyToConversationId }),
59
+ mode: record.mode,
60
+ payload: record.resultPayload,
61
+ };
62
+ if (originContext.policy === "detached_latest") {
63
+ return { ...common, originContextPolicy: "detached_latest" };
64
+ }
65
+ if (record.historyBoundary === undefined) {
66
+ throw new Error(`Pinned continuation ${record.continuationId} is missing its history boundary.`);
67
+ }
68
+ return {
69
+ ...common,
70
+ historyBoundary: record.historyBoundary,
71
+ originContextPolicy: "pinned",
72
+ originContext: originContext.snapshot,
73
+ };
74
+ }
75
+ export function originContextBindingMac(secret, record, reference) {
76
+ return createHmac("sha256", secret).update(canonicalContinuationJson({
77
+ version: 2,
78
+ continuationId: record.continuationId,
79
+ claimFingerprint: record.claimFingerprint,
80
+ serverName: record.serverName,
81
+ originRunId: record.originRunId,
82
+ originConversationId: record.originConversationId,
83
+ replyToConversationId: record.replyToConversationId ?? null,
84
+ historyBoundary: record.historyBoundary ?? null,
85
+ mode: record.mode,
86
+ routeName: record.routeName ?? null,
87
+ taskKey: record.taskKey,
88
+ taskHash: record.taskHash,
89
+ resultTokenHash: record.resultTokenHash,
90
+ createdAt: record.createdAt,
91
+ deadline: record.deadline,
92
+ originContextDigest: reference.digest,
93
+ originContextBytes: reference.bytes,
94
+ originContextMessageCount: reference.messageCount,
95
+ })).digest("hex");
96
+ }
97
+ export function requireLease(record, owner) {
98
+ if (record.leaseOwner !== owner) {
99
+ throw new ContinuationProtocolError(409, "lease_lost", "Continuation processing lease was lost.");
100
+ }
101
+ }
102
+ export function clearLease(record) {
103
+ delete record.leaseOwner;
104
+ delete record.leaseUntil;
105
+ }
106
+ export function expire(record, at) {
107
+ record.state = "expired";
108
+ record.updatedAt = at;
109
+ record.lastError = errorRecord("deadline_expired", "Continuation deadline passed before delivery completed.", at);
110
+ clearLease(record);
111
+ }
112
+ export function errorRecord(code, reason, at) {
113
+ return { code: bounded(code, 128), reason: bounded(reason, 1_000), at };
114
+ }
115
+ export function authorizeRecordToken(record, token) {
116
+ if (!continuationTokenMatches(token, record.resultTokenHash)) {
117
+ throw new ContinuationProtocolError(401, "invalid_result_capability", "Invalid continuation result capability.");
118
+ }
119
+ }
120
+ export function validateNamedRoutes(routes) {
121
+ for (const [name, route] of Object.entries(routes)) {
122
+ if (name.trim().length === 0 || name.length > 128)
123
+ throw new Error("Continuation route names must be 1-128 characters.");
124
+ if ((route.mode === "notify_if_actionable" || route.mode === "capture") && !route.conversationId?.trim()) {
125
+ throw new Error(`Continuation route ${name} requires conversationId.`);
126
+ }
127
+ if (route.mode === "silent" && route.conversationId !== undefined) {
128
+ throw new Error(`Continuation route ${name} cannot set conversationId for mode ${route.mode}.`);
129
+ }
130
+ }
131
+ }
132
+ export function resolveContinuationLimits(input) {
133
+ const maxActiveRecords = input?.maxActiveRecords ?? DEFAULT_CONTINUATION_LIMITS.maxActiveRecords;
134
+ const limits = {
135
+ ...DEFAULT_CONTINUATION_LIMITS,
136
+ ...input,
137
+ maxActiveRecords,
138
+ maxActivePerOrigin: input?.maxActivePerOrigin
139
+ ?? Math.min(DEFAULT_CONTINUATION_LIMITS.maxActivePerOrigin, maxActiveRecords),
140
+ };
141
+ for (const [name, value] of Object.entries(limits)) {
142
+ if (!Number.isSafeInteger(value) || value <= 0) {
143
+ throw new Error(`Continuation limit ${name} must be a positive safe integer.`);
144
+ }
145
+ }
146
+ if (limits.maxActiveRecords > 1_000_000)
147
+ throw new Error("Continuation maxActiveRecords cannot exceed 1000000.");
148
+ if (limits.maxActivePerOrigin > limits.maxActiveRecords) {
149
+ throw new Error("Continuation maxActivePerOrigin cannot exceed maxActiveRecords.");
150
+ }
151
+ if (limits.maxConcurrent > 256)
152
+ throw new Error("Continuation maxConcurrent cannot exceed 256.");
153
+ if (limits.synthesisTimeoutMs > 24 * 60 * 60 * 1_000 || limits.deliveryTimeoutMs > 24 * 60 * 60 * 1_000) {
154
+ throw new Error("Continuation operation timeouts cannot exceed 24 hours.");
155
+ }
156
+ if (limits.operatorPageSize > MAX_OPERATOR_PAGE_SIZE) {
157
+ throw new Error(`Continuation operatorPageSize cannot exceed ${String(MAX_OPERATOR_PAGE_SIZE)}.`);
158
+ }
159
+ return limits;
160
+ }
161
+ export function operatorContinuationPage(records, url, configuredPageSize) {
162
+ const rawLimit = url.searchParams.get("limit");
163
+ let limit = configuredPageSize;
164
+ if (rawLimit !== null) {
165
+ if (!/^[1-9][0-9]*$/u.test(rawLimit)) {
166
+ throw new ContinuationProtocolError(400, "invalid_page_limit", "Operator list limit must be a positive integer.");
167
+ }
168
+ limit = Number(rawLimit);
169
+ if (!Number.isSafeInteger(limit) || limit > configuredPageSize || limit > MAX_OPERATOR_PAGE_SIZE) {
170
+ throw new ContinuationProtocolError(400, "invalid_page_limit", `Operator list limit cannot exceed ${String(Math.min(configuredPageSize, MAX_OPERATOR_PAGE_SIZE))}.`);
171
+ }
172
+ }
173
+ const cursor = parseOperatorCursor(url.searchParams.get("cursor"));
174
+ const ordered = [...records].sort((left, right) => right.createdAt.localeCompare(left.createdAt) || right.continuationId.localeCompare(left.continuationId));
175
+ const eligible = cursor === undefined
176
+ ? ordered
177
+ : ordered.filter((record) => record.createdAt < cursor.createdAt
178
+ || (record.createdAt === cursor.createdAt && record.continuationId < cursor.continuationId));
179
+ const selected = eligible.slice(0, limit);
180
+ const last = selected.at(-1);
181
+ return {
182
+ continuations: selected.map(statusOfRequired),
183
+ pageSize: limit,
184
+ ...(eligible.length <= limit || last === undefined ? {} : { nextCursor: encodeOperatorCursor(last) }),
185
+ };
186
+ }
187
+ function encodeOperatorCursor(record) {
188
+ return Buffer.from(JSON.stringify([record.createdAt, record.continuationId]), "utf8").toString("base64url");
189
+ }
190
+ function parseOperatorCursor(value) {
191
+ if (value === null)
192
+ return undefined;
193
+ try {
194
+ if (value.length === 0 || value.length > 512)
195
+ throw new Error("invalid");
196
+ const decoded = JSON.parse(Buffer.from(value, "base64url").toString("utf8"));
197
+ if (!Array.isArray(decoded)
198
+ || decoded.length !== 2
199
+ || typeof decoded[0] !== "string"
200
+ || !Number.isFinite(Date.parse(decoded[0]))
201
+ || typeof decoded[1] !== "string"
202
+ || decoded[1].length === 0
203
+ || decoded[1].length > 128) {
204
+ throw new Error("invalid");
205
+ }
206
+ return { createdAt: decoded[0], continuationId: decoded[1] };
207
+ }
208
+ catch {
209
+ throw new ContinuationProtocolError(400, "invalid_page_cursor", "Operator list cursor is invalid.");
210
+ }
211
+ }
212
+ export async function closeContinuationServer(server) {
213
+ await new Promise((resolveClose, reject) => {
214
+ let forced;
215
+ const finish = (error) => {
216
+ if (forced !== undefined)
217
+ clearTimeout(forced);
218
+ if (error === undefined)
219
+ resolveClose();
220
+ else
221
+ reject(error);
222
+ };
223
+ server.close((error) => finish(error));
224
+ server.closeIdleConnections?.();
225
+ forced = setTimeout(() => { server.closeAllConnections?.(); }, 5_000);
226
+ });
227
+ }
228
+ export function requireBearer(request) {
229
+ const authorization = request.headers.authorization;
230
+ if (typeof authorization !== "string" || !authorization.startsWith("Bearer ")) {
231
+ throw new ContinuationProtocolError(401, "missing_capability", "Bearer capability is required.");
232
+ }
233
+ const token = authorization.slice("Bearer ".length).trim();
234
+ if (token.length === 0 || token.length > 512) {
235
+ throw new ContinuationProtocolError(401, "invalid_capability", "Bearer capability is invalid.");
236
+ }
237
+ return token;
238
+ }
239
+ export function requireHeader(request, name) {
240
+ const value = request.headers[name];
241
+ if (typeof value !== "string" || value.trim().length === 0 || value.length > 256) {
242
+ throw new ContinuationProtocolError(400, "missing_service_name", "Detached service name header is required.");
243
+ }
244
+ return value;
245
+ }
246
+ export async function readJson(request, maxBytes) {
247
+ const chunks = [];
248
+ let bytes = 0;
249
+ for await (const chunk of request) {
250
+ const buffer = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
251
+ bytes += buffer.length;
252
+ if (bytes > maxBytes) {
253
+ throw new ContinuationProtocolError(413, "payload_too_large", "Request body exceeds the configured limit.");
254
+ }
255
+ chunks.push(buffer);
256
+ }
257
+ try {
258
+ return JSON.parse(Buffer.concat(chunks).toString("utf8"));
259
+ }
260
+ catch {
261
+ throw new ContinuationProtocolError(400, "invalid_json", "Request body must be valid JSON.");
262
+ }
263
+ }
264
+ export function asObject(value) {
265
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
266
+ throw new ContinuationProtocolError(400, "invalid_body", "Request body must be a JSON object.");
267
+ }
268
+ return value;
269
+ }
270
+ export function requiredStringField(object, key, max = 512) {
271
+ const value = object[key];
272
+ if (typeof value !== "string" || value.trim().length === 0 || value.length > max) {
273
+ throw new ContinuationProtocolError(400, `invalid_${key}`, `${key} must be a non-empty string up to ${String(max)} characters.`);
274
+ }
275
+ return value;
276
+ }
277
+ export function sendJson(response, status, body) {
278
+ if (response.writableEnded)
279
+ return;
280
+ const encoded = JSON.stringify(body);
281
+ response.statusCode = status;
282
+ response.setHeader("content-type", "application/json; charset=utf-8");
283
+ response.setHeader("content-length", Buffer.byteLength(encoded));
284
+ response.end(encoded);
285
+ }
286
+ export function isLoopbackHost(host) {
287
+ const normalized = host.trim().toLowerCase();
288
+ return normalized === "127.0.0.1" || normalized === "::1" || normalized === "localhost";
289
+ }
290
+ export function formatHost(host) {
291
+ return host.includes(":") && !host.startsWith("[") ? `[${host}]` : host;
292
+ }
293
+ export function backoffMs(attempt, base, cap) {
294
+ const exponential = Math.min(cap, base * (2 ** Math.max(0, attempt - 1)));
295
+ const deterministicJitter = 0.75 + ((attempt * 1103515245 + 12345) % 500) / 1_000;
296
+ return Math.max(base, Math.floor(exponential * deterministicJitter));
297
+ }
298
+ function bounded(value, max) {
299
+ return value.length <= max ? value : `${value.slice(0, Math.max(0, max - 1))}…`;
300
+ }
301
+ export function safeReason(error) {
302
+ return bounded(error instanceof Error ? error.message : String(error), 1_000);
303
+ }
304
+ export function boundedHistoryErrorCode(value) {
305
+ const normalized = value.trim().slice(0, 128);
306
+ return normalized.length === 0 ? "history_record_failed" : normalized;
307
+ }
308
+ //# sourceMappingURL=continuation-service-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"continuation-service-helpers.js","sourceRoot":"","sources":["../src/continuation-service-helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ import type { Server } from "node:http";
2
+ import { type AgentContinuationOriginContext } from "@mono-agent/agent-contracts";
3
+ import type { ContinuationStore, DurableContinuationRecord } from "./continuation-store.js";
4
+ import { type ClaimBinding, type ContinuationServiceLogger, type ContinuationServiceOptions, type ResolvedOriginContext } from "./continuation-service-types.js";
5
+ import { type ContinuationLimits, type NamedContinuationRoute } from "./continuations.js";
6
+ export declare abstract class ContinuationOriginService {
7
+ protected readonly store: ContinuationStore;
8
+ protected readonly secret: Buffer;
9
+ protected readonly options: ContinuationServiceOptions;
10
+ protected readonly releaseStoreLock: () => Promise<void>;
11
+ protected readonly instanceId: `${string}-${string}-${string}-${string}-${string}`;
12
+ protected readonly operatorToken: string;
13
+ protected readonly claimBindings: Map<string, ClaimBinding>;
14
+ protected readonly activeClaimBindings: Set<ClaimBinding>;
15
+ protected readonly namedRoutes: Readonly<Record<string, NamedContinuationRoute>>;
16
+ protected readonly detachedServiceTokenHashes: ReadonlyMap<string, string>;
17
+ protected readonly maxResultBytes: number;
18
+ protected readonly maxDeadlineMs: number;
19
+ protected readonly leaseMs: number;
20
+ protected readonly workerIntervalMs: number;
21
+ protected readonly autoProcess: boolean;
22
+ protected readonly limits: ContinuationLimits;
23
+ protected readonly now: () => Date;
24
+ protected readonly logger: ContinuationServiceLogger | undefined;
25
+ protected readonly lifecycleAbort: AbortController;
26
+ protected readonly inFlight: Map<string, Promise<boolean>>;
27
+ protected readonly activeHttpRequests: Set<Promise<void>>;
28
+ protected activeHandleOperations: number;
29
+ protected handleDrainPromise: Promise<void> | undefined;
30
+ protected resolveHandleDrain: (() => void) | undefined;
31
+ protected readonly resolvingUnknown: Set<string>;
32
+ protected dispatchTail: Promise<void>;
33
+ protected server: Server | undefined;
34
+ protected baseUrl: string;
35
+ protected worker: ReturnType<typeof setInterval> | undefined;
36
+ protected stopped: boolean;
37
+ protected stopPromise: Promise<void> | undefined;
38
+ constructor(store: ContinuationStore, secret: Buffer, options: ContinuationServiceOptions, releaseStoreLock: () => Promise<void>);
39
+ abstract processDue(limit?: number): Promise<number>;
40
+ protected throwIfStopping(): void;
41
+ protected runBoundedOperation<T>(phase: "synthesis" | "delivery", timeoutMs: number, operation: () => Promise<T> | T): Promise<T>;
42
+ protected runHandleOperation<T>(operation: () => Promise<T>): Promise<T>;
43
+ protected drainHandleOperations(): Promise<void>;
44
+ protected closeClaimBinding(token: string, binding: ClaimBinding): Promise<void>;
45
+ protected beginClaim(binding: ClaimBinding): () => void;
46
+ protected requiresOriginContext(binding: ClaimBinding): Promise<boolean>;
47
+ private beginOriginSettlementOperation;
48
+ protected settleClaimBinding(binding: ClaimBinding): void;
49
+ protected finalizeOriginContext(binding: ClaimBinding, snapshot: AgentContinuationOriginContext): Promise<void>;
50
+ protected activateOriginContext(binding: ClaimBinding): Promise<void>;
51
+ protected abandonOriginContext(binding: ClaimBinding): Promise<void>;
52
+ protected resolveOriginContext(record: DurableContinuationRecord): Promise<ResolvedOriginContext>;
53
+ private markOriginContextUnavailable;
54
+ }
55
+ //# sourceMappingURL=continuation-service-origin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"continuation-service-origin.d.ts","sourceRoot":"","sources":["../src/continuation-service-origin.ts"],"names":[],"mappings":"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"}