@jangts/agent-core 0.1.0 → 0.2.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 (527) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +59 -0
  3. package/development/docs/api/reference.md +1907 -1874
  4. package/development/docs/api/support.md +27 -0
  5. package/development/docs/assets/agent-core-icon.png +0 -0
  6. package/development/docs/assets/agent-core-logo.png +0 -0
  7. package/development/docs/assets/character-agent-core.png +0 -0
  8. package/development/skills/agent-core-app/scripts/create-app.mjs +267 -70
  9. package/development/skills/agent-core-app/scripts/lib/knowledge.mjs +40 -15
  10. package/development/skills/agent-core-app/scripts/lib/source.mjs +30 -2
  11. package/development/skills/agent-core-app/scripts/plan.mjs +37 -12
  12. package/development/skills/agent-core-app/scripts/prepare-source.mjs +61 -10
  13. package/development/skills/agent-core-app/scripts/resources.mjs +45 -17
  14. package/development/skills/agent-core-app/scripts/validate-knowledge.mjs +18 -1
  15. package/development/skills/agent-core-app/templates/catalog.json +36 -22
  16. package/dist/cjs/capabilities/index.js +13 -0
  17. package/dist/cjs/capabilities/invocation.js +80 -10
  18. package/dist/cjs/capabilities/model.js +126 -13
  19. package/dist/cjs/capabilities/tool-runtime.js +64 -12
  20. package/dist/cjs/capabilities/tools.js +266 -31
  21. package/dist/cjs/context/assembly.js +46 -5
  22. package/dist/cjs/context/audit.js +31 -6
  23. package/dist/cjs/context/fragments.js +54 -11
  24. package/dist/cjs/context/index.js +12 -0
  25. package/dist/cjs/context/journal.js +84 -7
  26. package/dist/cjs/context/plan.js +30 -2
  27. package/dist/cjs/diagnostics/catalog.js +11 -3
  28. package/dist/cjs/diagnostics/index.js +149 -29
  29. package/dist/cjs/diagnostics/sub-flow.js +240 -40
  30. package/dist/cjs/errors.js +99 -17
  31. package/dist/cjs/execution/branch.js +20 -4
  32. package/dist/cjs/execution/engine.js +470 -56
  33. package/dist/cjs/execution/events.js +136 -18
  34. package/dist/cjs/execution/index.js +7 -0
  35. package/dist/cjs/execution/reporting.js +75 -6
  36. package/dist/cjs/execution/state.js +161 -22
  37. package/dist/cjs/execution/workflow.js +224 -32
  38. package/dist/cjs/index.js +18 -0
  39. package/dist/cjs/kits/aggregation.js +45 -3
  40. package/dist/cjs/kits/answering/batch.js +23 -4
  41. package/dist/cjs/kits/answering/check-result.js +31 -8
  42. package/dist/cjs/kits/answering/checks.js +24 -3
  43. package/dist/cjs/kits/answering/flow.js +192 -36
  44. package/dist/cjs/kits/answering/index.js +19 -1
  45. package/dist/cjs/kits/answering/tasks.js +88 -13
  46. package/dist/cjs/kits/artifacts.js +36 -4
  47. package/dist/cjs/kits/candidates.js +47 -5
  48. package/dist/cjs/kits/delivery.js +40 -5
  49. package/dist/cjs/kits/durable.js +155 -31
  50. package/dist/cjs/kits/evidence.js +66 -15
  51. package/dist/cjs/kits/family.js +152 -22
  52. package/dist/cjs/kits/index.js +12 -1
  53. package/dist/cjs/kits/inference.js +104 -16
  54. package/dist/cjs/kits/intents/catalog.js +67 -16
  55. package/dist/cjs/kits/intents/index.js +11 -0
  56. package/dist/cjs/kits/intents/registry.js +188 -43
  57. package/dist/cjs/kits/intents/scopes.js +215 -46
  58. package/dist/cjs/kits/interaction/command.js +140 -36
  59. package/dist/cjs/kits/interaction/commands.js +86 -11
  60. package/dist/cjs/kits/interaction/handlers.js +27 -10
  61. package/dist/cjs/kits/interaction/index.js +10 -0
  62. package/dist/cjs/kits/interaction/transfer.js +80 -14
  63. package/dist/cjs/kits/knowledge/catalog.js +62 -11
  64. package/dist/cjs/kits/knowledge/index.js +16 -1
  65. package/dist/cjs/kits/knowledge/publication.js +99 -23
  66. package/dist/cjs/kits/knowledge/sections.js +33 -4
  67. package/dist/cjs/kits/normalization.js +51 -7
  68. package/dist/cjs/kits/policies.js +79 -15
  69. package/dist/cjs/kits/presentation/events.js +54 -10
  70. package/dist/cjs/kits/presentation/index.js +24 -1
  71. package/dist/cjs/kits/presentation/outputs.js +176 -38
  72. package/dist/cjs/kits/presentation/templates.js +33 -5
  73. package/dist/cjs/kits/presentation/variants.js +31 -2
  74. package/dist/cjs/kits/projection.js +63 -8
  75. package/dist/cjs/kits/rank-fusion.js +27 -4
  76. package/dist/cjs/kits/reflection-log-source.js +89 -16
  77. package/dist/cjs/kits/reflection.js +234 -60
  78. package/dist/cjs/kits/retrieval.js +98 -18
  79. package/dist/cjs/kits/search.js +180 -27
  80. package/dist/cjs/kits/text-skills.js +104 -19
  81. package/dist/cjs/kits/tools.js +415 -74
  82. package/dist/cjs/kits/vector-search.js +50 -16
  83. package/dist/cjs/mock/node.js +7 -1
  84. package/dist/cjs/mock/web.js +7 -1
  85. package/dist/cjs/mock.js +7 -1
  86. package/dist/cjs/model/binding.js +68 -17
  87. package/dist/cjs/model/call-budget.js +45 -4
  88. package/dist/cjs/model/decision-retry.js +19 -1
  89. package/dist/cjs/model/defaults.js +27 -4
  90. package/dist/cjs/model/index.js +7 -0
  91. package/dist/cjs/model/interactions/arguments.js +36 -1
  92. package/dist/cjs/model/interactions/json-object.js +48 -12
  93. package/dist/cjs/model/interactions/native-functions.js +52 -10
  94. package/dist/cjs/model/message-diagnostics.js +17 -4
  95. package/dist/cjs/model/options.js +9 -1
  96. package/dist/cjs/model/preparation.js +86 -12
  97. package/dist/cjs/model/runner.js +413 -79
  98. package/dist/cjs/model/selection-transport.js +48 -8
  99. package/dist/cjs/model/settings.js +67 -13
  100. package/dist/cjs/model/token-budget.js +69 -11
  101. package/dist/cjs/model/transports.js +59 -6
  102. package/dist/cjs/structs/common.js +11 -0
  103. package/dist/cjs/structs/debug.js +34 -5
  104. package/dist/cjs/structs/errors.js +26 -1
  105. package/dist/cjs/structs/index.js +11 -1
  106. package/dist/cjs/structs/kits/durable.js +7 -0
  107. package/dist/cjs/structs/kits/family.js +1 -0
  108. package/dist/cjs/structs/kits/interaction.js +8 -1
  109. package/dist/cjs/structs/kits/knowledge-publication.js +1 -0
  110. package/dist/cjs/structs/kits/reflection.js +18 -3
  111. package/dist/cjs/structs/model/chat-provider.js +6 -0
  112. package/dist/cjs/structs/support/model/completion.js +2 -0
  113. package/dist/cjs/structs/support/model/messages.js +2 -0
  114. package/dist/cjs/support/capabilities.js +43 -6
  115. package/dist/cjs/support/context/assembly.js +88 -16
  116. package/dist/cjs/support/context/compression.js +48 -6
  117. package/dist/cjs/support/context/fragments.js +6 -0
  118. package/dist/cjs/support/context/history.js +36 -1
  119. package/dist/cjs/support/context/index.js +11 -0
  120. package/dist/cjs/support/context/nodes.js +164 -35
  121. package/dist/cjs/support/context/processing.js +319 -61
  122. package/dist/cjs/support/context/selection-policy.js +98 -21
  123. package/dist/cjs/support/context/selection.js +61 -10
  124. package/dist/cjs/support/context/snapshot.js +29 -7
  125. package/dist/cjs/support/context/strategies.js +120 -28
  126. package/dist/cjs/support/index.js +9 -1
  127. package/dist/cjs/support/model/capabilities.js +20 -1
  128. package/dist/cjs/support/model/chat-completions.js +92 -20
  129. package/dist/cjs/support/model/children.js +34 -6
  130. package/dist/cjs/support/model/compatible-provider.js +189 -59
  131. package/dist/cjs/support/model/completion/calls.js +61 -0
  132. package/dist/cjs/support/model/completion/default.js +32 -0
  133. package/dist/cjs/support/model/completion/index.js +28 -0
  134. package/dist/cjs/support/model/completion/session.js +102 -0
  135. package/dist/cjs/support/model/index.js +12 -0
  136. package/dist/cjs/support/model/interactions/index.js +12 -1
  137. package/dist/cjs/support/model/interactions/json-object.js +6 -0
  138. package/dist/cjs/support/model/interactions/native-functions.js +6 -0
  139. package/dist/cjs/support/model/observer.js +32 -6
  140. package/dist/cjs/support/model/preview-rules.js +66 -16
  141. package/dist/cjs/support/model/reply-preview.js +77 -17
  142. package/dist/cjs/support/model/stage-transport.js +33 -7
  143. package/dist/cjs/support/model/strategies.js +75 -14
  144. package/dist/cjs/support/model/transports.js +53 -11
  145. package/dist/cjs/support/registration.js +49 -7
  146. package/dist/cjs/support/schema.js +46 -4
  147. package/dist/cjs/support/stream-events.js +60 -8
  148. package/dist/cjs/support/tool-runtime.js +6 -0
  149. package/dist/cjs/support/tools.js +79 -10
  150. package/dist/cjs/support/transport/index.js +7 -0
  151. package/dist/cjs/support/transport/json.js +28 -4
  152. package/dist/cjs/support/transport/sse.js +25 -2
  153. package/dist/cjs/utils/break-observer.js +20 -2
  154. package/dist/cjs/utils/cancellation.js +77 -9
  155. package/dist/cjs/utils/catalog.js +19 -4
  156. package/dist/cjs/utils/debug.js +14 -2
  157. package/dist/cjs/utils/index.js +8 -0
  158. package/dist/cjs/utils/interaction-definition.js +26 -6
  159. package/dist/cjs/utils/invocation.js +42 -4
  160. package/dist/cjs/utils/model-protocol.js +20 -1
  161. package/dist/cjs/utils/object.js +16 -0
  162. package/dist/cjs/utils/observer.js +22 -2
  163. package/dist/cjs/utils/protocol-registry.js +47 -4
  164. package/dist/cjs/utils/query-key.js +21 -2
  165. package/dist/cjs/utils/registration.js +18 -2
  166. package/dist/cjs/utils/rules.js +39 -11
  167. package/dist/cjs/utils/schema-adapter.js +25 -2
  168. package/dist/cjs/utils/synchronous.js +64 -7
  169. package/dist/cjs/utils/text.js +15 -1
  170. package/dist/esm/capabilities/index.d.ts +13 -0
  171. package/dist/esm/capabilities/index.js +13 -0
  172. package/dist/esm/capabilities/invocation.d.ts +16 -2
  173. package/dist/esm/capabilities/invocation.js +80 -10
  174. package/dist/esm/capabilities/model.d.ts +68 -1
  175. package/dist/esm/capabilities/model.js +126 -13
  176. package/dist/esm/capabilities/tool-runtime.d.ts +11 -0
  177. package/dist/esm/capabilities/tool-runtime.js +64 -12
  178. package/dist/esm/capabilities/tools.d.ts +96 -3
  179. package/dist/esm/capabilities/tools.js +267 -32
  180. package/dist/esm/context/assembly.d.ts +13 -2
  181. package/dist/esm/context/assembly.js +46 -5
  182. package/dist/esm/context/audit.d.ts +23 -1
  183. package/dist/esm/context/audit.js +31 -6
  184. package/dist/esm/context/fragments.d.ts +37 -3
  185. package/dist/esm/context/fragments.js +54 -11
  186. package/dist/esm/context/index.d.ts +12 -0
  187. package/dist/esm/context/index.js +12 -0
  188. package/dist/esm/context/journal.d.ts +32 -1
  189. package/dist/esm/context/journal.js +84 -7
  190. package/dist/esm/context/plan.d.ts +11 -1
  191. package/dist/esm/context/plan.js +30 -2
  192. package/dist/esm/diagnostics/catalog.js +11 -3
  193. package/dist/esm/diagnostics/index.d.ts +30 -2
  194. package/dist/esm/diagnostics/index.js +149 -29
  195. package/dist/esm/diagnostics/sub-flow.d.ts +41 -3
  196. package/dist/esm/diagnostics/sub-flow.js +240 -40
  197. package/dist/esm/errors.d.ts +22 -2
  198. package/dist/esm/errors.js +99 -17
  199. package/dist/esm/execution/branch.d.ts +19 -1
  200. package/dist/esm/execution/branch.js +20 -4
  201. package/dist/esm/execution/engine.d.ts +291 -5
  202. package/dist/esm/execution/engine.js +471 -57
  203. package/dist/esm/execution/events.d.ts +16 -2
  204. package/dist/esm/execution/events.js +136 -18
  205. package/dist/esm/execution/index.d.ts +7 -0
  206. package/dist/esm/execution/index.js +7 -0
  207. package/dist/esm/execution/reporting.d.ts +49 -1
  208. package/dist/esm/execution/reporting.js +75 -6
  209. package/dist/esm/execution/state.d.ts +126 -10
  210. package/dist/esm/execution/state.js +161 -22
  211. package/dist/esm/execution/workflow.d.ts +121 -3
  212. package/dist/esm/execution/workflow.js +224 -32
  213. package/dist/esm/index.d.ts +17 -1
  214. package/dist/esm/index.js +18 -0
  215. package/dist/esm/kits/aggregation.d.ts +34 -2
  216. package/dist/esm/kits/aggregation.js +45 -3
  217. package/dist/esm/kits/answering/batch.d.ts +17 -0
  218. package/dist/esm/kits/answering/batch.js +23 -4
  219. package/dist/esm/kits/answering/check-result.d.ts +18 -1
  220. package/dist/esm/kits/answering/check-result.js +31 -8
  221. package/dist/esm/kits/answering/checks.d.ts +11 -0
  222. package/dist/esm/kits/answering/checks.js +24 -3
  223. package/dist/esm/kits/answering/flow.d.ts +25 -2
  224. package/dist/esm/kits/answering/flow.js +192 -36
  225. package/dist/esm/kits/answering/index.d.ts +12 -0
  226. package/dist/esm/kits/answering/index.js +19 -1
  227. package/dist/esm/kits/answering/tasks.d.ts +32 -1
  228. package/dist/esm/kits/answering/tasks.js +88 -13
  229. package/dist/esm/kits/artifacts.d.ts +11 -0
  230. package/dist/esm/kits/artifacts.js +36 -4
  231. package/dist/esm/kits/candidates.d.ts +23 -1
  232. package/dist/esm/kits/candidates.js +47 -5
  233. package/dist/esm/kits/delivery.d.ts +34 -0
  234. package/dist/esm/kits/delivery.js +40 -5
  235. package/dist/esm/kits/durable.d.ts +19 -0
  236. package/dist/esm/kits/durable.js +155 -31
  237. package/dist/esm/kits/evidence.d.ts +28 -5
  238. package/dist/esm/kits/evidence.js +66 -15
  239. package/dist/esm/kits/family.d.ts +17 -1
  240. package/dist/esm/kits/family.js +152 -22
  241. package/dist/esm/kits/index.d.ts +12 -1
  242. package/dist/esm/kits/index.js +12 -1
  243. package/dist/esm/kits/inference.d.ts +64 -0
  244. package/dist/esm/kits/inference.js +104 -16
  245. package/dist/esm/kits/intents/catalog.d.ts +13 -1
  246. package/dist/esm/kits/intents/catalog.js +67 -16
  247. package/dist/esm/kits/intents/index.d.ts +11 -0
  248. package/dist/esm/kits/intents/index.js +11 -0
  249. package/dist/esm/kits/intents/registry.d.ts +61 -3
  250. package/dist/esm/kits/intents/registry.js +188 -43
  251. package/dist/esm/kits/intents/scopes.d.ts +73 -3
  252. package/dist/esm/kits/intents/scopes.js +215 -46
  253. package/dist/esm/kits/interaction/command.d.ts +38 -4
  254. package/dist/esm/kits/interaction/command.js +140 -36
  255. package/dist/esm/kits/interaction/commands.d.ts +66 -2
  256. package/dist/esm/kits/interaction/commands.js +86 -11
  257. package/dist/esm/kits/interaction/handlers.d.ts +19 -2
  258. package/dist/esm/kits/interaction/handlers.js +27 -10
  259. package/dist/esm/kits/interaction/index.d.ts +10 -0
  260. package/dist/esm/kits/interaction/index.js +10 -0
  261. package/dist/esm/kits/interaction/transfer.d.ts +39 -2
  262. package/dist/esm/kits/interaction/transfer.js +80 -14
  263. package/dist/esm/kits/knowledge/catalog.d.ts +13 -0
  264. package/dist/esm/kits/knowledge/catalog.js +62 -11
  265. package/dist/esm/kits/knowledge/index.d.ts +11 -0
  266. package/dist/esm/kits/knowledge/index.js +16 -1
  267. package/dist/esm/kits/knowledge/publication.d.ts +15 -1
  268. package/dist/esm/kits/knowledge/publication.js +99 -23
  269. package/dist/esm/kits/knowledge/sections.d.ts +31 -1
  270. package/dist/esm/kits/knowledge/sections.js +33 -4
  271. package/dist/esm/kits/normalization.d.ts +25 -2
  272. package/dist/esm/kits/normalization.js +51 -7
  273. package/dist/esm/kits/policies.d.ts +26 -3
  274. package/dist/esm/kits/policies.js +79 -15
  275. package/dist/esm/kits/presentation/events.d.ts +51 -4
  276. package/dist/esm/kits/presentation/events.js +54 -10
  277. package/dist/esm/kits/presentation/index.d.ts +12 -0
  278. package/dist/esm/kits/presentation/index.js +25 -2
  279. package/dist/esm/kits/presentation/outputs.d.ts +30 -1
  280. package/dist/esm/kits/presentation/outputs.js +176 -38
  281. package/dist/esm/kits/presentation/templates.d.ts +32 -3
  282. package/dist/esm/kits/presentation/templates.js +33 -5
  283. package/dist/esm/kits/presentation/variants.d.ts +29 -0
  284. package/dist/esm/kits/presentation/variants.js +31 -2
  285. package/dist/esm/kits/projection.d.ts +42 -5
  286. package/dist/esm/kits/projection.js +63 -8
  287. package/dist/esm/kits/rank-fusion.d.ts +21 -1
  288. package/dist/esm/kits/rank-fusion.js +28 -5
  289. package/dist/esm/kits/reflection-log-source.d.ts +28 -1
  290. package/dist/esm/kits/reflection-log-source.js +89 -16
  291. package/dist/esm/kits/reflection.d.ts +17 -1
  292. package/dist/esm/kits/reflection.js +235 -61
  293. package/dist/esm/kits/retrieval.d.ts +18 -2
  294. package/dist/esm/kits/retrieval.js +98 -18
  295. package/dist/esm/kits/search.d.ts +56 -3
  296. package/dist/esm/kits/search.js +180 -27
  297. package/dist/esm/kits/text-skills.d.ts +16 -2
  298. package/dist/esm/kits/text-skills.js +104 -19
  299. package/dist/esm/kits/tools.d.ts +122 -2
  300. package/dist/esm/kits/tools.js +416 -74
  301. package/dist/esm/kits/vector-search.d.ts +47 -1
  302. package/dist/esm/kits/vector-search.js +51 -17
  303. package/dist/esm/mock/node.d.ts +7 -0
  304. package/dist/esm/mock/node.js +7 -1
  305. package/dist/esm/mock/web.d.ts +7 -0
  306. package/dist/esm/mock/web.js +7 -1
  307. package/dist/esm/mock.d.ts +7 -0
  308. package/dist/esm/mock.js +7 -1
  309. package/dist/esm/model/binding.d.ts +32 -3
  310. package/dist/esm/model/binding.js +68 -17
  311. package/dist/esm/model/call-budget.d.ts +30 -2
  312. package/dist/esm/model/call-budget.js +45 -4
  313. package/dist/esm/model/decision-retry.d.ts +10 -1
  314. package/dist/esm/model/decision-retry.js +19 -1
  315. package/dist/esm/model/defaults.d.ts +13 -2
  316. package/dist/esm/model/defaults.js +27 -4
  317. package/dist/esm/model/index.d.ts +7 -0
  318. package/dist/esm/model/index.js +7 -0
  319. package/dist/esm/model/interactions/arguments.d.ts +27 -0
  320. package/dist/esm/model/interactions/arguments.js +36 -1
  321. package/dist/esm/model/interactions/json-object.d.ts +7 -1
  322. package/dist/esm/model/interactions/json-object.js +48 -12
  323. package/dist/esm/model/interactions/native-functions.d.ts +6 -0
  324. package/dist/esm/model/interactions/native-functions.js +52 -10
  325. package/dist/esm/model/message-diagnostics.d.ts +17 -1
  326. package/dist/esm/model/message-diagnostics.js +17 -4
  327. package/dist/esm/model/options.d.ts +18 -1
  328. package/dist/esm/model/options.js +9 -1
  329. package/dist/esm/model/preparation.d.ts +30 -2
  330. package/dist/esm/model/preparation.js +86 -12
  331. package/dist/esm/model/runner.d.ts +129 -5
  332. package/dist/esm/model/runner.js +414 -80
  333. package/dist/esm/model/selection-transport.d.ts +14 -1
  334. package/dist/esm/model/selection-transport.js +48 -8
  335. package/dist/esm/model/settings.d.ts +11 -0
  336. package/dist/esm/model/settings.js +67 -13
  337. package/dist/esm/model/token-budget.d.ts +59 -1
  338. package/dist/esm/model/token-budget.js +69 -11
  339. package/dist/esm/model/transports.d.ts +20 -2
  340. package/dist/esm/model/transports.js +59 -6
  341. package/dist/esm/structs/capabilities/invocation.d.ts +36 -0
  342. package/dist/esm/structs/capabilities/model.d.ts +27 -0
  343. package/dist/esm/structs/capabilities/tools.d.ts +38 -0
  344. package/dist/esm/structs/common.d.ts +62 -2
  345. package/dist/esm/structs/common.js +11 -0
  346. package/dist/esm/structs/context/fragments.d.ts +28 -0
  347. package/dist/esm/structs/context/journal.d.ts +28 -3
  348. package/dist/esm/structs/context/processing.d.ts +11 -0
  349. package/dist/esm/structs/debug.d.ts +58 -1
  350. package/dist/esm/structs/debug.js +34 -5
  351. package/dist/esm/structs/diagnostics.d.ts +119 -1
  352. package/dist/esm/structs/errors.d.ts +42 -1
  353. package/dist/esm/structs/errors.js +26 -1
  354. package/dist/esm/structs/execution/engine.d.ts +24 -1
  355. package/dist/esm/structs/execution/events.d.ts +12 -0
  356. package/dist/esm/structs/execution/workflow.d.ts +71 -0
  357. package/dist/esm/structs/index.d.ts +11 -1
  358. package/dist/esm/structs/index.js +11 -1
  359. package/dist/esm/structs/invocation.d.ts +30 -0
  360. package/dist/esm/structs/kits/aggregation.d.ts +12 -0
  361. package/dist/esm/structs/kits/answering/checks.d.ts +11 -0
  362. package/dist/esm/structs/kits/answering/flow.d.ts +35 -1
  363. package/dist/esm/structs/kits/answering/state.d.ts +21 -0
  364. package/dist/esm/structs/kits/answering/tasks.d.ts +21 -0
  365. package/dist/esm/structs/kits/artifacts.d.ts +14 -0
  366. package/dist/esm/structs/kits/candidates.d.ts +19 -0
  367. package/dist/esm/structs/kits/delivery.d.ts +22 -0
  368. package/dist/esm/structs/kits/durable.d.ts +56 -3
  369. package/dist/esm/structs/kits/durable.js +7 -0
  370. package/dist/esm/structs/kits/evidence.d.ts +23 -0
  371. package/dist/esm/structs/kits/family.d.ts +49 -1
  372. package/dist/esm/structs/kits/family.js +1 -0
  373. package/dist/esm/structs/kits/intents/catalog.d.ts +26 -0
  374. package/dist/esm/structs/kits/intents/registry.d.ts +34 -0
  375. package/dist/esm/structs/kits/intents/scopes.d.ts +36 -1
  376. package/dist/esm/structs/kits/interaction.d.ts +64 -0
  377. package/dist/esm/structs/kits/interaction.js +8 -1
  378. package/dist/esm/structs/kits/knowledge-publication.d.ts +43 -1
  379. package/dist/esm/structs/kits/knowledge-publication.js +1 -0
  380. package/dist/esm/structs/kits/knowledge.d.ts +39 -2
  381. package/dist/esm/structs/kits/normalization.d.ts +15 -0
  382. package/dist/esm/structs/kits/policies.d.ts +25 -1
  383. package/dist/esm/structs/kits/presentation/events.d.ts +28 -4
  384. package/dist/esm/structs/kits/presentation/outputs.d.ts +38 -1
  385. package/dist/esm/structs/kits/presentation/templates.d.ts +15 -0
  386. package/dist/esm/structs/kits/projection.d.ts +21 -0
  387. package/dist/esm/structs/kits/reflection.d.ts +61 -2
  388. package/dist/esm/structs/kits/reflection.js +18 -3
  389. package/dist/esm/structs/kits/retrieval.d.ts +38 -0
  390. package/dist/esm/structs/kits/search.d.ts +22 -0
  391. package/dist/esm/structs/kits/text-skills.d.ts +36 -0
  392. package/dist/esm/structs/kits/tools.d.ts +87 -0
  393. package/dist/esm/structs/model/chat-provider.d.ts +24 -1
  394. package/dist/esm/structs/model/chat-provider.js +6 -0
  395. package/dist/esm/structs/model/interactions.d.ts +38 -0
  396. package/dist/esm/structs/model/messages.d.ts +30 -0
  397. package/dist/esm/structs/model/runtime.d.ts +104 -6
  398. package/dist/esm/structs/support/capabilities.d.ts +19 -2
  399. package/dist/esm/structs/support/context-processing.d.ts +88 -9
  400. package/dist/esm/structs/support/context.d.ts +29 -1
  401. package/dist/esm/structs/support/model/completion.d.ts +50 -0
  402. package/dist/esm/structs/support/model/completion.js +1 -0
  403. package/dist/esm/structs/support/model/interactions.d.ts +13 -1
  404. package/dist/esm/structs/support/model/messages.d.ts +52 -0
  405. package/dist/esm/structs/support/model/messages.js +1 -0
  406. package/dist/esm/structs/support/model/provider-observer.d.ts +22 -1
  407. package/dist/esm/structs/support/model/provider.d.ts +71 -6
  408. package/dist/esm/structs/support/registration.d.ts +13 -0
  409. package/dist/esm/structs/support/schema.d.ts +14 -0
  410. package/dist/esm/structs/support/tools.d.ts +28 -0
  411. package/dist/esm/structs/support/transport/json.d.ts +16 -0
  412. package/dist/esm/structs/support/transport/sse.d.ts +15 -0
  413. package/dist/esm/structs/utils/rules.d.ts +19 -0
  414. package/dist/esm/support/capabilities.d.ts +25 -2
  415. package/dist/esm/support/capabilities.js +43 -6
  416. package/dist/esm/support/context/assembly.d.ts +35 -4
  417. package/dist/esm/support/context/assembly.js +88 -16
  418. package/dist/esm/support/context/compression.d.ts +17 -1
  419. package/dist/esm/support/context/compression.js +48 -6
  420. package/dist/esm/support/context/fragments.d.ts +6 -0
  421. package/dist/esm/support/context/fragments.js +6 -0
  422. package/dist/esm/support/context/history.d.ts +43 -0
  423. package/dist/esm/support/context/history.js +36 -1
  424. package/dist/esm/support/context/index.d.ts +13 -2
  425. package/dist/esm/support/context/index.js +12 -1
  426. package/dist/esm/support/context/nodes.d.ts +49 -3
  427. package/dist/esm/support/context/nodes.js +165 -36
  428. package/dist/esm/support/context/processing.d.ts +145 -1
  429. package/dist/esm/support/context/processing.js +320 -62
  430. package/dist/esm/support/context/selection-policy.d.ts +42 -2
  431. package/dist/esm/support/context/selection-policy.js +98 -21
  432. package/dist/esm/support/context/selection.d.ts +14 -1
  433. package/dist/esm/support/context/selection.js +61 -10
  434. package/dist/esm/support/context/snapshot.d.ts +23 -1
  435. package/dist/esm/support/context/snapshot.js +29 -7
  436. package/dist/esm/support/context/strategies.d.ts +35 -2
  437. package/dist/esm/support/context/strategies.js +120 -28
  438. package/dist/esm/support/index.d.ts +9 -1
  439. package/dist/esm/support/index.js +9 -1
  440. package/dist/esm/support/model/capabilities.d.ts +10 -0
  441. package/dist/esm/support/model/capabilities.js +20 -1
  442. package/dist/esm/support/model/chat-completions.d.ts +44 -15
  443. package/dist/esm/support/model/chat-completions.js +92 -20
  444. package/dist/esm/support/model/children.d.ts +32 -2
  445. package/dist/esm/support/model/children.js +34 -6
  446. package/dist/esm/support/model/compatible-provider.d.ts +29 -3
  447. package/dist/esm/support/model/compatible-provider.js +190 -60
  448. package/dist/esm/support/model/completion/calls.d.ts +40 -0
  449. package/dist/esm/support/model/completion/calls.js +58 -0
  450. package/dist/esm/support/model/completion/default.d.ts +10 -0
  451. package/dist/esm/support/model/completion/default.js +29 -0
  452. package/dist/esm/support/model/completion/index.d.ts +10 -0
  453. package/dist/esm/support/model/completion/index.js +22 -0
  454. package/dist/esm/support/model/completion/session.d.ts +11 -0
  455. package/dist/esm/support/model/completion/session.js +99 -0
  456. package/dist/esm/support/model/index.d.ts +14 -0
  457. package/dist/esm/support/model/index.js +12 -0
  458. package/dist/esm/support/model/interactions/index.d.ts +1 -1
  459. package/dist/esm/support/model/interactions/index.js +12 -1
  460. package/dist/esm/support/model/interactions/json-object.d.ts +6 -0
  461. package/dist/esm/support/model/interactions/json-object.js +6 -0
  462. package/dist/esm/support/model/interactions/native-functions.d.ts +6 -0
  463. package/dist/esm/support/model/interactions/native-functions.js +6 -0
  464. package/dist/esm/support/model/observer.d.ts +25 -2
  465. package/dist/esm/support/model/observer.js +32 -6
  466. package/dist/esm/support/model/preview-rules.d.ts +20 -2
  467. package/dist/esm/support/model/preview-rules.js +66 -16
  468. package/dist/esm/support/model/reply-preview.d.ts +15 -1
  469. package/dist/esm/support/model/reply-preview.js +77 -17
  470. package/dist/esm/support/model/stage-transport.d.ts +9 -1
  471. package/dist/esm/support/model/stage-transport.js +33 -7
  472. package/dist/esm/support/model/strategies.d.ts +24 -2
  473. package/dist/esm/support/model/strategies.js +75 -14
  474. package/dist/esm/support/model/transports.d.ts +17 -1
  475. package/dist/esm/support/model/transports.js +53 -11
  476. package/dist/esm/support/registration.d.ts +20 -1
  477. package/dist/esm/support/registration.js +49 -7
  478. package/dist/esm/support/schema.d.ts +31 -1
  479. package/dist/esm/support/schema.js +46 -4
  480. package/dist/esm/support/stream-events.d.ts +22 -1
  481. package/dist/esm/support/stream-events.js +60 -8
  482. package/dist/esm/support/tool-runtime.d.ts +6 -0
  483. package/dist/esm/support/tool-runtime.js +6 -0
  484. package/dist/esm/support/tools.d.ts +22 -0
  485. package/dist/esm/support/tools.js +79 -10
  486. package/dist/esm/support/transport/index.d.ts +7 -0
  487. package/dist/esm/support/transport/index.js +7 -0
  488. package/dist/esm/support/transport/json.d.ts +29 -2
  489. package/dist/esm/support/transport/json.js +28 -4
  490. package/dist/esm/support/transport/sse.d.ts +31 -1
  491. package/dist/esm/support/transport/sse.js +25 -2
  492. package/dist/esm/types.d.ts +9 -1
  493. package/dist/esm/utils/break-observer.d.ts +27 -2
  494. package/dist/esm/utils/break-observer.js +20 -2
  495. package/dist/esm/utils/cancellation.d.ts +56 -5
  496. package/dist/esm/utils/cancellation.js +77 -9
  497. package/dist/esm/utils/catalog.d.ts +20 -1
  498. package/dist/esm/utils/catalog.js +19 -4
  499. package/dist/esm/utils/debug.d.ts +20 -1
  500. package/dist/esm/utils/debug.js +14 -2
  501. package/dist/esm/utils/index.d.ts +8 -0
  502. package/dist/esm/utils/index.js +8 -0
  503. package/dist/esm/utils/interaction-definition.d.ts +18 -1
  504. package/dist/esm/utils/interaction-definition.js +26 -6
  505. package/dist/esm/utils/invocation.d.ts +36 -1
  506. package/dist/esm/utils/invocation.js +42 -4
  507. package/dist/esm/utils/model-protocol.d.ts +8 -0
  508. package/dist/esm/utils/model-protocol.js +20 -1
  509. package/dist/esm/utils/object.d.ts +16 -0
  510. package/dist/esm/utils/object.js +16 -0
  511. package/dist/esm/utils/observer.d.ts +19 -1
  512. package/dist/esm/utils/observer.js +22 -2
  513. package/dist/esm/utils/protocol-registry.d.ts +38 -1
  514. package/dist/esm/utils/protocol-registry.js +47 -4
  515. package/dist/esm/utils/query-key.d.ts +11 -1
  516. package/dist/esm/utils/query-key.js +21 -2
  517. package/dist/esm/utils/registration.d.ts +34 -2
  518. package/dist/esm/utils/registration.js +18 -2
  519. package/dist/esm/utils/rules.d.ts +81 -4
  520. package/dist/esm/utils/rules.js +39 -11
  521. package/dist/esm/utils/schema-adapter.d.ts +12 -1
  522. package/dist/esm/utils/schema-adapter.js +25 -2
  523. package/dist/esm/utils/synchronous.d.ts +60 -4
  524. package/dist/esm/utils/synchronous.js +64 -7
  525. package/dist/esm/utils/text.d.ts +15 -1
  526. package/dist/esm/utils/text.js +15 -1
  527. package/package.json +23 -3
@@ -3,21 +3,53 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Delivery = void 0;
4
4
  exports.defineDelivery = defineDelivery;
5
5
  const synchronous_js_1 = require("../utils/synchronous.js");
6
+ /**
7
+ * Compile a delivery pipeline from its declared stages.
8
+ *
9
+ * Stages are registered once, in declaration order, and must have unique non-blank ids. A
10
+ * stage without a `handle` is a named hook only, so `beforeStage` can observe it.
11
+ *
12
+ * @param options - Stage list, state factory, optional pre-stage hook and the error factory
13
+ * used when every stage chose `continue`.
14
+ * @returns A frozen plan exposing the stage ids and `deliver(input, execution)`.
15
+ * @throws TypeError At construction for duplicate/blank ids or a non-function handler; from
16
+ * `deliver` when any handler returns a thenable, when a stage outcome is neither `continue`
17
+ * nor `complete`, or when `complete` carries no value.
18
+ */
6
19
  function defineDelivery(options) {
7
20
  const ids = new Set();
8
- const stages = options.stages.map(stage => {
21
+ const stages = options.stages.map((stage) => {
9
22
  const { id } = stage;
10
- if (!id?.trim() || ids.has(id) || (stage.handle !== undefined && typeof stage.handle !== 'function'))
23
+ if (!id?.trim() ||
24
+ ids.has(id) ||
25
+ (stage.handle !== undefined && typeof stage.handle !== 'function'))
11
26
  throw new TypeError('Invalid or duplicate delivery stage');
12
27
  ids.add(id);
13
28
  return Object.freeze({ id, handle: stage.handle?.bind(stage) });
14
29
  });
15
30
  const createState = options.createState.bind(options), beforeStage = options.beforeStage?.bind(options), missingResult = options.missingResult.bind(options);
16
- return Object.freeze({ stages: Object.freeze(stages.map(stage => ({ id: stage.id }))),
31
+ return Object.freeze({
32
+ stages: Object.freeze(stages.map((stage) => ({ id: stage.id }))),
33
+ /**
34
+ * Build the state and run the stages in order.
35
+ *
36
+ * The first `complete` outcome ends the pipeline and returns its value; if none completes,
37
+ * `missingResult` supplies the error.
38
+ *
39
+ * @param input - Host input; it is exposed to stages as `context.app`.
40
+ * @param execution - Execution context; cancellation is checked before every hook.
41
+ * @throws The configured error when no stage completes, or a `TypeError` for invalid
42
+ * handler results.
43
+ */
17
44
  deliver(input, execution) {
18
45
  execution.signal.throwIfAborted();
19
46
  const state = (0, synchronous_js_1.synchronous)(createState(input, execution), 'Delivery state creation must be synchronous');
20
- const context = { ...execution, signal: execution.signal, diagnostics: execution.diagnostics, app: input };
47
+ const context = {
48
+ ...execution,
49
+ signal: execution.signal,
50
+ diagnostics: execution.diagnostics,
51
+ app: input,
52
+ };
21
53
  for (const stage of stages) {
22
54
  execution.signal.throwIfAborted();
23
55
  (0, synchronous_js_1.synchronous)(beforeStage?.({ stageId: stage.id, state }, context), 'Delivery hooks must be synchronous');
@@ -26,7 +58,9 @@ function defineDelivery(options) {
26
58
  continue;
27
59
  const outcome = (0, synchronous_js_1.synchronous)(stage.handle(state, context), 'Delivery handlers must be synchronous');
28
60
  execution.signal.throwIfAborted();
29
- if (!outcome || !['continue', 'complete'].includes(outcome.type) || (outcome.type === 'complete' && !('value' in outcome)))
61
+ if (!outcome ||
62
+ !['continue', 'complete'].includes(outcome.type) ||
63
+ (outcome.type === 'complete' && !('value' in outcome)))
30
64
  throw new TypeError('Delivery handlers require explicit continue/complete');
31
65
  if (outcome.type === 'complete') {
32
66
  const value = outcome.value;
@@ -38,4 +72,5 @@ function defineDelivery(options) {
38
72
  },
39
73
  });
40
74
  }
75
+ /** Namespace object for callers that prefer one import over named helpers. */
41
76
  exports.Delivery = Object.freeze({ defineDelivery });
@@ -2,42 +2,102 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.durableReplayPolicies = exports.durableStatuses = exports.Durable = void 0;
4
4
  exports.defineDurableTask = defineDurableTask;
5
+ /**
6
+ * Durable Kit: replay-safe sequential task execution on top of an App-owned checkpoint store.
7
+ *
8
+ * Place in the package: an optional App-side library for work that must survive a restart.
9
+ * The Kit owns step ordering, attempt and model-call accounting, deadline checks, checkpoint
10
+ * validation and the exclusive-store protocol; the store, its atomicity and the real side
11
+ * effects stay with the App. Core itself never imports this module.
12
+ *
13
+ * Exports: `defineDurableTask`, `Durable`, the checkpoint/step/store types, and the
14
+ * `durableStatuses` / `durableReplayPolicies` enumerations.
15
+ */
5
16
  const synchronous_js_1 = require("../utils/synchronous.js");
6
17
  const cancellation_js_1 = require("../utils/cancellation.js");
7
18
  const durable_js_1 = require("../structs/kits/durable.js");
8
19
  const engine_js_1 = require("../execution/engine.js");
20
+ /**
21
+ * Compile a durable task definition into a resumable runner.
22
+ *
23
+ * Each `run` call locks the task id in the store, loads the checkpoint and resumes at
24
+ * `nextStepIndex`. A checkpoint from another definition id or revision, or one that fails the
25
+ * predicates below, is rejected instead of being repaired, because silently accepting it would
26
+ * replay App side effects under a different contract.
27
+ *
28
+ * @param definition - Task identity, state predicate, ordered steps and optional authorization.
29
+ * @param options - Fallback store plus optional clock; both are bound to their owners.
30
+ * @returns A frozen task with `run({ taskId, store? }, context)`.
31
+ * @throws TypeError At construction for an invalid identity, step list, replay policy or
32
+ * duplicate step id; from `run` for a malformed request/context/store, an invalid
33
+ * checkpoint, or a step whose returned state fails the predicate. Also throws when the
34
+ * deadline passed, the attempt budget is exhausted, or the model-call budget cannot fund
35
+ * one more attempt.
36
+ */
9
37
  function defineDurableTask(definition, options = {}) {
10
38
  if (!definition || typeof definition !== 'object')
11
39
  throw new TypeError('Use isState and replayPolicy');
12
40
  const { id: definitionId, revision, steps: definitions, isState } = definition;
13
41
  const clock = options.now;
14
- if (typeof definitionId !== 'string' || !definitionId.trim() || typeof revision !== 'string' || !revision.trim()
15
- || typeof isState !== 'function' || !Array.isArray(definitions) || !definitions.length
16
- || (clock !== undefined && typeof clock !== 'function'))
42
+ if (typeof definitionId !== 'string' ||
43
+ !definitionId.trim() ||
44
+ typeof revision !== 'string' ||
45
+ !revision.trim() ||
46
+ typeof isState !== 'function' ||
47
+ !Array.isArray(definitions) ||
48
+ !definitions.length ||
49
+ (clock !== undefined && typeof clock !== 'function'))
17
50
  throw new TypeError('Invalid durable task');
18
51
  const now = clock?.bind(options) ?? Date.now, validate = isState.bind(definition);
19
52
  const authorize = definition.authorize?.bind(definition);
20
- const boundStore = options.store && { exclusive: options.store.exclusive.bind(options.store), load: options.store.load.bind(options.store), save: options.store.save.bind(options.store) };
53
+ const boundStore = options.store && {
54
+ exclusive: options.store.exclusive.bind(options.store),
55
+ load: options.store.load.bind(options.store),
56
+ save: options.store.save.bind(options.store),
57
+ };
21
58
  const steps = Object.freeze(definitions.map((step) => {
22
59
  if (!step || typeof step !== 'object')
23
60
  throw new TypeError('Use replayPolicy and OperationContext');
24
61
  const { id, replayPolicy, run, reconcile } = step;
25
- if (typeof id !== 'string' || !id.trim() || !durable_js_1.durableReplayPolicies.includes(replayPolicy) || typeof run !== 'function'
26
- || (reconcile !== undefined && typeof reconcile !== 'function'))
62
+ if (typeof id !== 'string' ||
63
+ !id.trim() ||
64
+ !durable_js_1.durableReplayPolicies.includes(replayPolicy) ||
65
+ typeof run !== 'function' ||
66
+ (reconcile !== undefined && typeof reconcile !== 'function'))
27
67
  throw new TypeError('Invalid durable step');
28
- return Object.freeze({ id, replayPolicy, run: run.bind(step), reconcile: reconcile?.bind(step) });
68
+ return Object.freeze({
69
+ id,
70
+ replayPolicy,
71
+ run: run.bind(step),
72
+ reconcile: reconcile?.bind(step),
73
+ });
29
74
  }));
30
- if (new Set(steps.map(step => step.id)).size !== steps.length)
75
+ if (new Set(steps.map((step) => step.id)).size !== steps.length)
31
76
  throw new TypeError('Duplicate durable step id');
32
77
  return Object.freeze({
78
+ /**
79
+ * Resume or start one durable task.
80
+ *
81
+ * @param request - Task id plus an optional per-call store that overrides the bound one.
82
+ * @param context - Operation context supplying app, signal and diagnostics.
83
+ * @returns The final state, cloned so the caller cannot mutate the stored checkpoint.
84
+ * @throws As described for `defineDurableTask`; an already-completed task returns its state
85
+ * without running any step.
86
+ */
33
87
  async run(request, context) {
34
- if (!request || typeof request !== 'object' || typeof request.taskId !== 'string' || !request.taskId.trim())
88
+ if (!request ||
89
+ typeof request !== 'object' ||
90
+ typeof request.taskId !== 'string' ||
91
+ !request.taskId.trim())
35
92
  throw new TypeError('Use a named durable task request');
36
93
  if (!context?.signal)
37
94
  throw new TypeError('Durable tasks require OperationContext');
38
95
  const { taskId } = request, store = request.store ?? boundStore, { app, signal, diagnostics } = context;
39
96
  signal.throwIfAborted();
40
- if (!store || typeof store.exclusive !== 'function' || typeof store.load !== 'function' || typeof store.save !== 'function')
97
+ if (!store ||
98
+ typeof store.exclusive !== 'function' ||
99
+ typeof store.load !== 'function' ||
100
+ typeof store.save !== 'function')
41
101
  throw new TypeError('Invalid durable store');
42
102
  const exclusive = store.exclusive.bind(store), load = store.load.bind(store), save = store.save.bind(store);
43
103
  signal.throwIfAborted();
@@ -48,24 +108,42 @@ function defineDurableTask(definition, options = {}) {
48
108
  if (!loaded)
49
109
  throw new TypeError('Invalid durable checkpoint');
50
110
  let record = snapshotCheckpoint(loaded);
51
- if (record.definitionId !== definitionId || record.revision !== revision
52
- || !(0, synchronous_js_1.booleanResult)(validate(record.state), 'Durable state predicates must return boolean synchronously') || !Number.isSafeInteger(record.nextStepIndex) || record.nextStepIndex < 0 || record.nextStepIndex > steps.length
53
- || !Number.isSafeInteger(record.attemptCount) || record.attemptCount < 0 || !Number.isSafeInteger(record.maxAttempts) || record.maxAttempts < 1
54
- || record.attemptCount > record.maxAttempts || record.attemptCount < record.nextStepIndex || !Number.isFinite(record.deadlineAtMs)
55
- || !durable_js_1.durableStatuses.includes(record.status)
56
- || (record.status === 'completed') !== (record.nextStepIndex === steps.length))
111
+ if (record.definitionId !== definitionId ||
112
+ record.revision !== revision ||
113
+ !(0, synchronous_js_1.booleanResult)(validate(record.state), 'Durable state predicates must return boolean synchronously') ||
114
+ !Number.isSafeInteger(record.nextStepIndex) ||
115
+ record.nextStepIndex < 0 ||
116
+ record.nextStepIndex > steps.length ||
117
+ !Number.isSafeInteger(record.attemptCount) ||
118
+ record.attemptCount < 0 ||
119
+ !Number.isSafeInteger(record.maxAttempts) ||
120
+ record.maxAttempts < 1 ||
121
+ record.attemptCount > record.maxAttempts ||
122
+ record.attemptCount < record.nextStepIndex ||
123
+ !Number.isFinite(record.deadlineAtMs) ||
124
+ !durable_js_1.durableStatuses.includes(record.status) ||
125
+ (record.status === 'completed') !== (record.nextStepIndex === steps.length))
57
126
  throw new TypeError('Invalid durable checkpoint');
58
127
  const deadline = record.deadlineAtMs;
59
128
  assertActive(signal, deadline, now);
60
129
  if (record.modelBudget) {
61
130
  const { maxCalls, reservedCalls, maxCallsPerAttempt } = record.modelBudget;
62
- if (!Number.isSafeInteger(maxCalls) || maxCalls < 1 || !Number.isSafeInteger(reservedCalls) || reservedCalls < 0 || reservedCalls > maxCalls
63
- || !Number.isSafeInteger(maxCallsPerAttempt) || maxCallsPerAttempt < 1 || maxCallsPerAttempt > maxCalls)
131
+ if (!Number.isSafeInteger(maxCalls) ||
132
+ maxCalls < 1 ||
133
+ !Number.isSafeInteger(reservedCalls) ||
134
+ reservedCalls < 0 ||
135
+ reservedCalls > maxCalls ||
136
+ !Number.isSafeInteger(maxCallsPerAttempt) ||
137
+ maxCallsPerAttempt < 1 ||
138
+ maxCallsPerAttempt > maxCalls)
64
139
  throw new TypeError('Invalid durable model budget');
65
140
  }
66
141
  const lifetime = (0, cancellation_js_1.createDeadlineSignal)(deadline, signal, now), activeSignal = lifetime.signal;
67
142
  let saving;
68
- const persist = async () => { saving = save(taskId, record); await saving; };
143
+ const persist = async () => {
144
+ saving = save(taskId, record);
145
+ await saving;
146
+ };
69
147
  try {
70
148
  if (authorize)
71
149
  await (0, cancellation_js_1.awaitAssertion)(() => authorize(snapshotCheckpoint(record), { app, signal: activeSignal, diagnostics }), activeSignal, 'Durable authorization must return void');
@@ -77,7 +155,10 @@ function defineDurableTask(definition, options = {}) {
77
155
  }
78
156
  if (record.status === 'cancelled')
79
157
  throw new Error('Durable task cancelled');
80
- const engine = new engine_js_1.AgentCoreEngine({ maxRounds: Math.max(1, record.maxAttempts - record.attemptCount), execution: { signal: activeSignal, diagnostics } });
158
+ const engine = new engine_js_1.AgentCoreEngine({
159
+ maxRounds: Math.max(1, record.maxAttempts - record.attemptCount),
160
+ execution: { signal: activeSignal, diagnostics },
161
+ });
81
162
  return await engine.run(async (_index, execution) => {
82
163
  assertActive(activeSignal, deadline, now);
83
164
  if (record.attemptCount >= record.maxAttempts)
@@ -86,25 +167,46 @@ function defineDurableTask(definition, options = {}) {
86
167
  if (interrupted && step.replayPolicy === 'reconcile' && !step.reconcile)
87
168
  throw new Error('Durable task reconciliation required');
88
169
  const modelBudget = record.modelBudget;
89
- if (modelBudget && modelBudget.maxCalls - modelBudget.reservedCalls < modelBudget.maxCallsPerAttempt)
170
+ if (modelBudget &&
171
+ modelBudget.maxCalls - modelBudget.reservedCalls < modelBudget.maxCallsPerAttempt)
90
172
  throw new Error('Durable model budget exhausted');
91
- record = { ...record, attemptCount: record.attemptCount + 1, status: 'running',
92
- ...(modelBudget ? { modelBudget: { ...modelBudget, reservedCalls: modelBudget.reservedCalls + modelBudget.maxCallsPerAttempt } } : {}) };
173
+ record = {
174
+ ...record,
175
+ attemptCount: record.attemptCount + 1,
176
+ status: 'running',
177
+ ...(modelBudget
178
+ ? {
179
+ modelBudget: {
180
+ ...modelBudget,
181
+ reservedCalls: modelBudget.reservedCalls + modelBudget.maxCallsPerAttempt,
182
+ },
183
+ }
184
+ : {}),
185
+ };
93
186
  // Await every save under the lock; cancellation cannot undo an in-flight commit.
94
187
  await persist();
95
188
  assertActive(activeSignal, deadline, now);
96
189
  const local = structuredClone(record.state);
97
190
  assertActive(activeSignal, deadline, now);
98
191
  const handle = interrupted && step.replayPolicy === 'reconcile' ? step.reconcile : step.run;
99
- const nextState = await (0, cancellation_js_1.awaitWithSignal)(handle(local, { app, signal: execution.signal, diagnostics: execution.diagnostics,
100
- attemptCount: record.attemptCount, maxModelCalls: record.modelBudget?.maxCallsPerAttempt }), activeSignal);
192
+ const nextState = await (0, cancellation_js_1.awaitWithSignal)(handle(local, {
193
+ app,
194
+ signal: execution.signal,
195
+ diagnostics: execution.diagnostics,
196
+ attemptCount: record.attemptCount,
197
+ maxModelCalls: record.modelBudget?.maxCallsPerAttempt,
198
+ }), activeSignal);
101
199
  assertActive(activeSignal, deadline, now);
102
200
  if (!(0, synchronous_js_1.booleanResult)(validate(nextState), 'Durable state predicates must return boolean synchronously'))
103
201
  throw new TypeError('Invalid durable step state');
104
202
  const state = structuredClone(nextState);
105
203
  assertActive(activeSignal, deadline, now);
106
- record = { ...record, state, nextStepIndex: record.nextStepIndex + 1,
107
- status: record.nextStepIndex + 1 === steps.length ? 'completed' : 'ready' };
204
+ record = {
205
+ ...record,
206
+ state,
207
+ nextStepIndex: record.nextStepIndex + 1,
208
+ status: record.nextStepIndex + 1 === steps.length ? 'completed' : 'ready',
209
+ };
108
210
  await persist();
109
211
  assertActive(activeSignal, deadline, now);
110
212
  if (record.status === 'completed') {
@@ -135,17 +237,39 @@ function assertActive(signal, deadlineAtMs, now) {
135
237
  throw new Error('Durable task expired');
136
238
  signal.throwIfAborted();
137
239
  }
240
+ /** Namespace object for callers that prefer one import over named helpers. */
138
241
  exports.Durable = Object.freeze({ defineDurableTask });
242
+ /** Allowed checkpoint lifecycle states; re-exported so hosts can validate their own stores. */
139
243
  var durable_js_2 = require("../structs/kits/durable.js");
140
244
  Object.defineProperty(exports, "durableStatuses", { enumerable: true, get: function () { return durable_js_2.durableStatuses; } });
141
245
  Object.defineProperty(exports, "durableReplayPolicies", { enumerable: true, get: function () { return durable_js_2.durableReplayPolicies; } });
142
246
  function snapshotCheckpoint(record) {
143
247
  const { version } = record;
248
+ // Only checkpoint layout 2 is readable; older layouts are not upgraded in place.
144
249
  if (version !== 2)
145
250
  throw new TypeError('Unsupported durable checkpoint version');
146
- const { definitionId, revision, nextStepIndex, attemptCount, maxAttempts, deadlineAtMs, status, state, modelBudget } = record;
147
- if (modelBudget !== undefined && (!modelBudget || typeof modelBudget !== 'object' || Array.isArray(modelBudget)))
251
+ const { definitionId, revision, nextStepIndex, attemptCount, maxAttempts, deadlineAtMs, status, state, modelBudget, } = record;
252
+ if (modelBudget !== undefined &&
253
+ (!modelBudget || typeof modelBudget !== 'object' || Array.isArray(modelBudget)))
148
254
  throw new TypeError('Invalid durable model budget');
149
- return { version, definitionId, revision, nextStepIndex, attemptCount, maxAttempts, deadlineAtMs, status, state: structuredClone(state),
150
- ...(modelBudget !== undefined ? { modelBudget: { maxCalls: modelBudget.maxCalls, reservedCalls: modelBudget.reservedCalls, maxCallsPerAttempt: modelBudget.maxCallsPerAttempt } } : {}) };
255
+ return {
256
+ version,
257
+ definitionId,
258
+ revision,
259
+ nextStepIndex,
260
+ attemptCount,
261
+ maxAttempts,
262
+ deadlineAtMs,
263
+ status,
264
+ state: structuredClone(state),
265
+ ...(modelBudget !== undefined
266
+ ? {
267
+ modelBudget: {
268
+ maxCalls: modelBudget.maxCalls,
269
+ reservedCalls: modelBudget.reservedCalls,
270
+ maxCallsPerAttempt: modelBudget.maxCallsPerAttempt,
271
+ },
272
+ }
273
+ : {}),
274
+ };
151
275
  }
@@ -3,54 +3,105 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Evidence = void 0;
4
4
  exports.defineEvidenceChecklist = defineEvidenceChecklist;
5
5
  exports.defineEvidenceProjection = defineEvidenceProjection;
6
+ /**
7
+ * Evidence Kit: check completion requirements against observations and narrow observations.
8
+ *
9
+ * Place in the package: an optional App-side library for "did we actually observe enough"
10
+ * logic. This module only compares observations with registered providers; what counts as
11
+ * evidence, where observations come from and how they are stored remain App-owned.
12
+ *
13
+ * Exports: `defineEvidenceChecklist`, `defineEvidenceProjection`, `Evidence`, and the
14
+ * evidence requirement/provider/projection types.
15
+ */
6
16
  const synchronous_js_1 = require("../utils/synchronous.js");
7
17
  const rules_js_1 = require("../utils/rules.js");
8
- /** A reusable completion checklist over actual observations. Hosts define evidence semantics. */
18
+ /**
19
+ * Compile a reusable completion checklist over actual observations.
20
+ *
21
+ * A requirement is satisfied when at least one observation satisfies the provider registered
22
+ * for its `kind`; `isComplete` requires every requirement to be satisfied, and `missing`
23
+ * returns those that are not. Hosts define evidence semantics.
24
+ *
25
+ * @param definitions - One provider per evidence kind, each with an `isSatisfied` predicate.
26
+ * @returns A frozen checklist exposing `isSatisfied`, `isComplete` and `missing`.
27
+ * @throws TypeError For duplicate kinds, missing predicates, or an unknown requirement kind;
28
+ * predicates must return a boolean synchronously.
29
+ */
9
30
  function defineEvidenceChecklist(definitions) {
10
31
  const providers = new Map();
11
32
  for (const definition of definitions) {
12
33
  const predicate = definition.isSatisfied;
13
34
  (0, rules_js_1.breakWhile)([
14
- { occur: () => providers.has(definition.kind), error: () => `Duplicate evidence kind: ${definition.kind}` },
15
- { occur: () => typeof predicate !== 'function', error: () => `Missing evidence provider: ${definition.kind}` },
35
+ {
36
+ occur: () => providers.has(definition.kind),
37
+ error: () => `Duplicate evidence kind: ${definition.kind}`,
38
+ },
39
+ {
40
+ occur: () => typeof predicate !== 'function',
41
+ error: () => `Missing evidence provider: ${definition.kind}`,
42
+ },
16
43
  ]);
17
- providers.set(definition.kind, Object.freeze({ kind: definition.kind, description: definition.description, isSatisfied: predicate.bind(definition) }));
44
+ providers.set(definition.kind, Object.freeze({
45
+ kind: definition.kind,
46
+ description: definition.description,
47
+ isSatisfied: predicate.bind(definition),
48
+ }));
18
49
  }
19
50
  const satisfied = (observations, requirement) => {
20
51
  const provider = providers.get(requirement.kind);
21
52
  (0, rules_js_1.breakWhile)(!provider, () => `Unknown evidence kind: ${requirement.kind}`);
22
- return observations.some(observation => (0, synchronous_js_1.booleanResult)(provider.isSatisfied(observation, requirement), 'Evidence predicates must be synchronous', 'Evidence predicates must return boolean'));
53
+ return observations.some((observation) => (0, synchronous_js_1.booleanResult)(provider.isSatisfied(observation, requirement), 'Evidence predicates must be synchronous', 'Evidence predicates must return boolean'));
23
54
  };
24
55
  return Object.freeze({
25
56
  isSatisfied: (request) => satisfied(request.observations, request.requirement),
26
- isComplete: (request) => request.requirements.every(requirement => satisfied(request.observations, requirement)),
27
- missing({ observations, requirements }) {
28
- return requirements.filter(requirement => !satisfied(observations, requirement));
57
+ isComplete: (request) => request.requirements.every((requirement) => satisfied(request.observations, requirement)),
58
+ missing({ observations, requirements, }) {
59
+ return requirements.filter((requirement) => !satisfied(observations, requirement));
29
60
  },
30
61
  });
31
62
  }
32
- /** No selection retains the complete evidence; selection narrows registered source-bearing results. */
63
+ /**
64
+ * Compile a projection that keeps only the sources a caller asked to see.
65
+ *
66
+ * No selection retains the complete evidence; a selection narrows registered source-bearing
67
+ * results. Observations whose tool has no provider pass through untouched, so the projection
68
+ * can only ever remove sources it knows how to name.
69
+ *
70
+ * @param definition - Source id selector, optional tool id selector, and per-tool providers.
71
+ * @returns A frozen object whose `project({ observations, sourceIds })` returns new values.
72
+ * @throws TypeError For a provider without both handlers; selectors and handlers must be
73
+ * synchronous.
74
+ */
33
75
  function defineEvidenceProjection(definition) {
34
76
  const sourceId = definition.sourceId.bind(definition);
35
- const toolId = definition.toolId?.bind(definition) ?? ((observation) => { const value = observation; return value.toolId ?? value.tool; });
77
+ const toolId = definition.toolId?.bind(definition) ??
78
+ ((observation) => {
79
+ // Fallback tool selector: accept either the current `toolId` field or the legacy `tool`.
80
+ const value = observation;
81
+ return value.toolId ?? value.tool;
82
+ });
36
83
  const providers = new Map();
37
84
  for (const [tool, provider] of Object.entries(definition.providers)) {
38
- (0, rules_js_1.breakWhile)(![provider.sources, provider.withSources].every(handler => typeof handler === 'function'), `Invalid evidence projection: ${tool}`);
39
- providers.set(tool, Object.freeze({ sources: provider.sources.bind(provider), withSources: provider.withSources.bind(provider) }));
85
+ (0, rules_js_1.breakWhile)(![provider.sources, provider.withSources].every((handler) => typeof handler === 'function'), `Invalid evidence projection: ${tool}`);
86
+ providers.set(tool, Object.freeze({
87
+ sources: provider.sources.bind(provider),
88
+ withSources: provider.withSources.bind(provider),
89
+ }));
40
90
  }
41
91
  return Object.freeze({
42
- project({ observations, sourceIds = [] }) {
92
+ project({ observations, sourceIds = [], }) {
43
93
  // Unknown/empty claims still need review against every available candidate.
44
94
  if (!sourceIds.length)
45
95
  return observations;
46
- return observations.map(observation => {
96
+ return observations.map((observation) => {
47
97
  const provider = providers.get((0, synchronous_js_1.synchronous)(toolId(observation), 'Evidence tool selectors must be synchronous'));
48
98
  if (!provider)
49
99
  return observation;
50
- const sources = (0, synchronous_js_1.synchronous)(provider.sources(observation), 'Evidence source projection must be synchronous').filter(source => sourceIds.includes((0, synchronous_js_1.synchronous)(sourceId(source), 'Evidence source selectors must be synchronous')));
100
+ const sources = (0, synchronous_js_1.synchronous)(provider.sources(observation), 'Evidence source projection must be synchronous').filter((source) => sourceIds.includes((0, synchronous_js_1.synchronous)(sourceId(source), 'Evidence source selectors must be synchronous')));
51
101
  return (0, synchronous_js_1.synchronous)(provider.withSources(observation, sources), 'Evidence observations must be synchronous');
52
102
  });
53
103
  },
54
104
  });
55
105
  }
106
+ /** Namespace object for callers that prefer one import over named helpers. */
56
107
  exports.Evidence = Object.freeze({ defineEvidenceChecklist, defineEvidenceProjection });