@jangts/agent-core 0.1.1 → 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 (523) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/development/docs/api/reference.md +1907 -1874
  3. package/development/docs/api/support.md +27 -0
  4. package/development/skills/agent-core-app/scripts/create-app.mjs +267 -70
  5. package/development/skills/agent-core-app/scripts/lib/knowledge.mjs +40 -15
  6. package/development/skills/agent-core-app/scripts/lib/source.mjs +30 -2
  7. package/development/skills/agent-core-app/scripts/plan.mjs +37 -12
  8. package/development/skills/agent-core-app/scripts/prepare-source.mjs +61 -10
  9. package/development/skills/agent-core-app/scripts/resources.mjs +45 -17
  10. package/development/skills/agent-core-app/scripts/validate-knowledge.mjs +18 -1
  11. package/development/skills/agent-core-app/templates/catalog.json +36 -22
  12. package/dist/cjs/capabilities/index.js +13 -0
  13. package/dist/cjs/capabilities/invocation.js +80 -10
  14. package/dist/cjs/capabilities/model.js +126 -13
  15. package/dist/cjs/capabilities/tool-runtime.js +64 -12
  16. package/dist/cjs/capabilities/tools.js +266 -31
  17. package/dist/cjs/context/assembly.js +46 -5
  18. package/dist/cjs/context/audit.js +31 -6
  19. package/dist/cjs/context/fragments.js +54 -11
  20. package/dist/cjs/context/index.js +12 -0
  21. package/dist/cjs/context/journal.js +84 -7
  22. package/dist/cjs/context/plan.js +30 -2
  23. package/dist/cjs/diagnostics/catalog.js +11 -3
  24. package/dist/cjs/diagnostics/index.js +149 -29
  25. package/dist/cjs/diagnostics/sub-flow.js +240 -40
  26. package/dist/cjs/errors.js +99 -17
  27. package/dist/cjs/execution/branch.js +20 -4
  28. package/dist/cjs/execution/engine.js +470 -56
  29. package/dist/cjs/execution/events.js +136 -18
  30. package/dist/cjs/execution/index.js +7 -0
  31. package/dist/cjs/execution/reporting.js +75 -6
  32. package/dist/cjs/execution/state.js +161 -22
  33. package/dist/cjs/execution/workflow.js +224 -32
  34. package/dist/cjs/index.js +18 -0
  35. package/dist/cjs/kits/aggregation.js +45 -3
  36. package/dist/cjs/kits/answering/batch.js +23 -4
  37. package/dist/cjs/kits/answering/check-result.js +31 -8
  38. package/dist/cjs/kits/answering/checks.js +24 -3
  39. package/dist/cjs/kits/answering/flow.js +192 -36
  40. package/dist/cjs/kits/answering/index.js +19 -1
  41. package/dist/cjs/kits/answering/tasks.js +88 -13
  42. package/dist/cjs/kits/artifacts.js +36 -4
  43. package/dist/cjs/kits/candidates.js +47 -5
  44. package/dist/cjs/kits/delivery.js +40 -5
  45. package/dist/cjs/kits/durable.js +155 -31
  46. package/dist/cjs/kits/evidence.js +66 -15
  47. package/dist/cjs/kits/family.js +152 -22
  48. package/dist/cjs/kits/index.js +12 -1
  49. package/dist/cjs/kits/inference.js +104 -16
  50. package/dist/cjs/kits/intents/catalog.js +67 -16
  51. package/dist/cjs/kits/intents/index.js +11 -0
  52. package/dist/cjs/kits/intents/registry.js +188 -43
  53. package/dist/cjs/kits/intents/scopes.js +215 -46
  54. package/dist/cjs/kits/interaction/command.js +140 -36
  55. package/dist/cjs/kits/interaction/commands.js +86 -11
  56. package/dist/cjs/kits/interaction/handlers.js +27 -10
  57. package/dist/cjs/kits/interaction/index.js +10 -0
  58. package/dist/cjs/kits/interaction/transfer.js +80 -14
  59. package/dist/cjs/kits/knowledge/catalog.js +62 -11
  60. package/dist/cjs/kits/knowledge/index.js +16 -1
  61. package/dist/cjs/kits/knowledge/publication.js +99 -23
  62. package/dist/cjs/kits/knowledge/sections.js +33 -4
  63. package/dist/cjs/kits/normalization.js +51 -7
  64. package/dist/cjs/kits/policies.js +79 -15
  65. package/dist/cjs/kits/presentation/events.js +54 -10
  66. package/dist/cjs/kits/presentation/index.js +24 -1
  67. package/dist/cjs/kits/presentation/outputs.js +176 -38
  68. package/dist/cjs/kits/presentation/templates.js +33 -5
  69. package/dist/cjs/kits/presentation/variants.js +31 -2
  70. package/dist/cjs/kits/projection.js +63 -8
  71. package/dist/cjs/kits/rank-fusion.js +27 -4
  72. package/dist/cjs/kits/reflection-log-source.js +89 -16
  73. package/dist/cjs/kits/reflection.js +234 -60
  74. package/dist/cjs/kits/retrieval.js +98 -18
  75. package/dist/cjs/kits/search.js +180 -27
  76. package/dist/cjs/kits/text-skills.js +104 -19
  77. package/dist/cjs/kits/tools.js +415 -74
  78. package/dist/cjs/kits/vector-search.js +50 -16
  79. package/dist/cjs/mock/node.js +7 -1
  80. package/dist/cjs/mock/web.js +7 -1
  81. package/dist/cjs/mock.js +7 -1
  82. package/dist/cjs/model/binding.js +68 -17
  83. package/dist/cjs/model/call-budget.js +45 -4
  84. package/dist/cjs/model/decision-retry.js +19 -1
  85. package/dist/cjs/model/defaults.js +27 -4
  86. package/dist/cjs/model/index.js +7 -0
  87. package/dist/cjs/model/interactions/arguments.js +36 -1
  88. package/dist/cjs/model/interactions/json-object.js +48 -12
  89. package/dist/cjs/model/interactions/native-functions.js +52 -10
  90. package/dist/cjs/model/message-diagnostics.js +17 -4
  91. package/dist/cjs/model/options.js +9 -1
  92. package/dist/cjs/model/preparation.js +86 -12
  93. package/dist/cjs/model/runner.js +413 -79
  94. package/dist/cjs/model/selection-transport.js +48 -8
  95. package/dist/cjs/model/settings.js +67 -13
  96. package/dist/cjs/model/token-budget.js +69 -11
  97. package/dist/cjs/model/transports.js +59 -6
  98. package/dist/cjs/structs/common.js +11 -0
  99. package/dist/cjs/structs/debug.js +34 -5
  100. package/dist/cjs/structs/errors.js +26 -1
  101. package/dist/cjs/structs/index.js +11 -1
  102. package/dist/cjs/structs/kits/durable.js +7 -0
  103. package/dist/cjs/structs/kits/family.js +1 -0
  104. package/dist/cjs/structs/kits/interaction.js +8 -1
  105. package/dist/cjs/structs/kits/knowledge-publication.js +1 -0
  106. package/dist/cjs/structs/kits/reflection.js +18 -3
  107. package/dist/cjs/structs/model/chat-provider.js +6 -0
  108. package/dist/cjs/structs/support/model/completion.js +2 -0
  109. package/dist/cjs/structs/support/model/messages.js +2 -0
  110. package/dist/cjs/support/capabilities.js +43 -6
  111. package/dist/cjs/support/context/assembly.js +88 -16
  112. package/dist/cjs/support/context/compression.js +48 -6
  113. package/dist/cjs/support/context/fragments.js +6 -0
  114. package/dist/cjs/support/context/history.js +36 -1
  115. package/dist/cjs/support/context/index.js +11 -0
  116. package/dist/cjs/support/context/nodes.js +164 -35
  117. package/dist/cjs/support/context/processing.js +319 -61
  118. package/dist/cjs/support/context/selection-policy.js +98 -21
  119. package/dist/cjs/support/context/selection.js +61 -10
  120. package/dist/cjs/support/context/snapshot.js +29 -7
  121. package/dist/cjs/support/context/strategies.js +120 -28
  122. package/dist/cjs/support/index.js +9 -1
  123. package/dist/cjs/support/model/capabilities.js +20 -1
  124. package/dist/cjs/support/model/chat-completions.js +92 -20
  125. package/dist/cjs/support/model/children.js +34 -6
  126. package/dist/cjs/support/model/compatible-provider.js +189 -59
  127. package/dist/cjs/support/model/completion/calls.js +61 -0
  128. package/dist/cjs/support/model/completion/default.js +32 -0
  129. package/dist/cjs/support/model/completion/index.js +28 -0
  130. package/dist/cjs/support/model/completion/session.js +102 -0
  131. package/dist/cjs/support/model/index.js +12 -0
  132. package/dist/cjs/support/model/interactions/index.js +12 -1
  133. package/dist/cjs/support/model/interactions/json-object.js +6 -0
  134. package/dist/cjs/support/model/interactions/native-functions.js +6 -0
  135. package/dist/cjs/support/model/observer.js +32 -6
  136. package/dist/cjs/support/model/preview-rules.js +66 -16
  137. package/dist/cjs/support/model/reply-preview.js +77 -17
  138. package/dist/cjs/support/model/stage-transport.js +33 -7
  139. package/dist/cjs/support/model/strategies.js +75 -14
  140. package/dist/cjs/support/model/transports.js +53 -11
  141. package/dist/cjs/support/registration.js +49 -7
  142. package/dist/cjs/support/schema.js +46 -4
  143. package/dist/cjs/support/stream-events.js +60 -8
  144. package/dist/cjs/support/tool-runtime.js +6 -0
  145. package/dist/cjs/support/tools.js +79 -10
  146. package/dist/cjs/support/transport/index.js +7 -0
  147. package/dist/cjs/support/transport/json.js +28 -4
  148. package/dist/cjs/support/transport/sse.js +25 -2
  149. package/dist/cjs/utils/break-observer.js +20 -2
  150. package/dist/cjs/utils/cancellation.js +77 -9
  151. package/dist/cjs/utils/catalog.js +19 -4
  152. package/dist/cjs/utils/debug.js +14 -2
  153. package/dist/cjs/utils/index.js +8 -0
  154. package/dist/cjs/utils/interaction-definition.js +26 -6
  155. package/dist/cjs/utils/invocation.js +42 -4
  156. package/dist/cjs/utils/model-protocol.js +20 -1
  157. package/dist/cjs/utils/object.js +16 -0
  158. package/dist/cjs/utils/observer.js +22 -2
  159. package/dist/cjs/utils/protocol-registry.js +47 -4
  160. package/dist/cjs/utils/query-key.js +21 -2
  161. package/dist/cjs/utils/registration.js +18 -2
  162. package/dist/cjs/utils/rules.js +39 -11
  163. package/dist/cjs/utils/schema-adapter.js +25 -2
  164. package/dist/cjs/utils/synchronous.js +64 -7
  165. package/dist/cjs/utils/text.js +15 -1
  166. package/dist/esm/capabilities/index.d.ts +13 -0
  167. package/dist/esm/capabilities/index.js +13 -0
  168. package/dist/esm/capabilities/invocation.d.ts +16 -2
  169. package/dist/esm/capabilities/invocation.js +80 -10
  170. package/dist/esm/capabilities/model.d.ts +68 -1
  171. package/dist/esm/capabilities/model.js +126 -13
  172. package/dist/esm/capabilities/tool-runtime.d.ts +11 -0
  173. package/dist/esm/capabilities/tool-runtime.js +64 -12
  174. package/dist/esm/capabilities/tools.d.ts +96 -3
  175. package/dist/esm/capabilities/tools.js +267 -32
  176. package/dist/esm/context/assembly.d.ts +13 -2
  177. package/dist/esm/context/assembly.js +46 -5
  178. package/dist/esm/context/audit.d.ts +23 -1
  179. package/dist/esm/context/audit.js +31 -6
  180. package/dist/esm/context/fragments.d.ts +37 -3
  181. package/dist/esm/context/fragments.js +54 -11
  182. package/dist/esm/context/index.d.ts +12 -0
  183. package/dist/esm/context/index.js +12 -0
  184. package/dist/esm/context/journal.d.ts +32 -1
  185. package/dist/esm/context/journal.js +84 -7
  186. package/dist/esm/context/plan.d.ts +11 -1
  187. package/dist/esm/context/plan.js +30 -2
  188. package/dist/esm/diagnostics/catalog.js +11 -3
  189. package/dist/esm/diagnostics/index.d.ts +30 -2
  190. package/dist/esm/diagnostics/index.js +149 -29
  191. package/dist/esm/diagnostics/sub-flow.d.ts +41 -3
  192. package/dist/esm/diagnostics/sub-flow.js +240 -40
  193. package/dist/esm/errors.d.ts +22 -2
  194. package/dist/esm/errors.js +99 -17
  195. package/dist/esm/execution/branch.d.ts +19 -1
  196. package/dist/esm/execution/branch.js +20 -4
  197. package/dist/esm/execution/engine.d.ts +291 -5
  198. package/dist/esm/execution/engine.js +471 -57
  199. package/dist/esm/execution/events.d.ts +16 -2
  200. package/dist/esm/execution/events.js +136 -18
  201. package/dist/esm/execution/index.d.ts +7 -0
  202. package/dist/esm/execution/index.js +7 -0
  203. package/dist/esm/execution/reporting.d.ts +49 -1
  204. package/dist/esm/execution/reporting.js +75 -6
  205. package/dist/esm/execution/state.d.ts +126 -10
  206. package/dist/esm/execution/state.js +161 -22
  207. package/dist/esm/execution/workflow.d.ts +121 -3
  208. package/dist/esm/execution/workflow.js +224 -32
  209. package/dist/esm/index.d.ts +17 -1
  210. package/dist/esm/index.js +18 -0
  211. package/dist/esm/kits/aggregation.d.ts +34 -2
  212. package/dist/esm/kits/aggregation.js +45 -3
  213. package/dist/esm/kits/answering/batch.d.ts +17 -0
  214. package/dist/esm/kits/answering/batch.js +23 -4
  215. package/dist/esm/kits/answering/check-result.d.ts +18 -1
  216. package/dist/esm/kits/answering/check-result.js +31 -8
  217. package/dist/esm/kits/answering/checks.d.ts +11 -0
  218. package/dist/esm/kits/answering/checks.js +24 -3
  219. package/dist/esm/kits/answering/flow.d.ts +25 -2
  220. package/dist/esm/kits/answering/flow.js +192 -36
  221. package/dist/esm/kits/answering/index.d.ts +12 -0
  222. package/dist/esm/kits/answering/index.js +19 -1
  223. package/dist/esm/kits/answering/tasks.d.ts +32 -1
  224. package/dist/esm/kits/answering/tasks.js +88 -13
  225. package/dist/esm/kits/artifacts.d.ts +11 -0
  226. package/dist/esm/kits/artifacts.js +36 -4
  227. package/dist/esm/kits/candidates.d.ts +23 -1
  228. package/dist/esm/kits/candidates.js +47 -5
  229. package/dist/esm/kits/delivery.d.ts +34 -0
  230. package/dist/esm/kits/delivery.js +40 -5
  231. package/dist/esm/kits/durable.d.ts +19 -0
  232. package/dist/esm/kits/durable.js +155 -31
  233. package/dist/esm/kits/evidence.d.ts +28 -5
  234. package/dist/esm/kits/evidence.js +66 -15
  235. package/dist/esm/kits/family.d.ts +17 -1
  236. package/dist/esm/kits/family.js +152 -22
  237. package/dist/esm/kits/index.d.ts +12 -1
  238. package/dist/esm/kits/index.js +12 -1
  239. package/dist/esm/kits/inference.d.ts +64 -0
  240. package/dist/esm/kits/inference.js +104 -16
  241. package/dist/esm/kits/intents/catalog.d.ts +13 -1
  242. package/dist/esm/kits/intents/catalog.js +67 -16
  243. package/dist/esm/kits/intents/index.d.ts +11 -0
  244. package/dist/esm/kits/intents/index.js +11 -0
  245. package/dist/esm/kits/intents/registry.d.ts +61 -3
  246. package/dist/esm/kits/intents/registry.js +188 -43
  247. package/dist/esm/kits/intents/scopes.d.ts +73 -3
  248. package/dist/esm/kits/intents/scopes.js +215 -46
  249. package/dist/esm/kits/interaction/command.d.ts +38 -4
  250. package/dist/esm/kits/interaction/command.js +140 -36
  251. package/dist/esm/kits/interaction/commands.d.ts +66 -2
  252. package/dist/esm/kits/interaction/commands.js +86 -11
  253. package/dist/esm/kits/interaction/handlers.d.ts +19 -2
  254. package/dist/esm/kits/interaction/handlers.js +27 -10
  255. package/dist/esm/kits/interaction/index.d.ts +10 -0
  256. package/dist/esm/kits/interaction/index.js +10 -0
  257. package/dist/esm/kits/interaction/transfer.d.ts +39 -2
  258. package/dist/esm/kits/interaction/transfer.js +80 -14
  259. package/dist/esm/kits/knowledge/catalog.d.ts +13 -0
  260. package/dist/esm/kits/knowledge/catalog.js +62 -11
  261. package/dist/esm/kits/knowledge/index.d.ts +11 -0
  262. package/dist/esm/kits/knowledge/index.js +16 -1
  263. package/dist/esm/kits/knowledge/publication.d.ts +15 -1
  264. package/dist/esm/kits/knowledge/publication.js +99 -23
  265. package/dist/esm/kits/knowledge/sections.d.ts +31 -1
  266. package/dist/esm/kits/knowledge/sections.js +33 -4
  267. package/dist/esm/kits/normalization.d.ts +25 -2
  268. package/dist/esm/kits/normalization.js +51 -7
  269. package/dist/esm/kits/policies.d.ts +26 -3
  270. package/dist/esm/kits/policies.js +79 -15
  271. package/dist/esm/kits/presentation/events.d.ts +51 -4
  272. package/dist/esm/kits/presentation/events.js +54 -10
  273. package/dist/esm/kits/presentation/index.d.ts +12 -0
  274. package/dist/esm/kits/presentation/index.js +25 -2
  275. package/dist/esm/kits/presentation/outputs.d.ts +30 -1
  276. package/dist/esm/kits/presentation/outputs.js +176 -38
  277. package/dist/esm/kits/presentation/templates.d.ts +32 -3
  278. package/dist/esm/kits/presentation/templates.js +33 -5
  279. package/dist/esm/kits/presentation/variants.d.ts +29 -0
  280. package/dist/esm/kits/presentation/variants.js +31 -2
  281. package/dist/esm/kits/projection.d.ts +42 -5
  282. package/dist/esm/kits/projection.js +63 -8
  283. package/dist/esm/kits/rank-fusion.d.ts +21 -1
  284. package/dist/esm/kits/rank-fusion.js +28 -5
  285. package/dist/esm/kits/reflection-log-source.d.ts +28 -1
  286. package/dist/esm/kits/reflection-log-source.js +89 -16
  287. package/dist/esm/kits/reflection.d.ts +17 -1
  288. package/dist/esm/kits/reflection.js +235 -61
  289. package/dist/esm/kits/retrieval.d.ts +18 -2
  290. package/dist/esm/kits/retrieval.js +98 -18
  291. package/dist/esm/kits/search.d.ts +56 -3
  292. package/dist/esm/kits/search.js +180 -27
  293. package/dist/esm/kits/text-skills.d.ts +16 -2
  294. package/dist/esm/kits/text-skills.js +104 -19
  295. package/dist/esm/kits/tools.d.ts +122 -2
  296. package/dist/esm/kits/tools.js +416 -74
  297. package/dist/esm/kits/vector-search.d.ts +47 -1
  298. package/dist/esm/kits/vector-search.js +51 -17
  299. package/dist/esm/mock/node.d.ts +7 -0
  300. package/dist/esm/mock/node.js +7 -1
  301. package/dist/esm/mock/web.d.ts +7 -0
  302. package/dist/esm/mock/web.js +7 -1
  303. package/dist/esm/mock.d.ts +7 -0
  304. package/dist/esm/mock.js +7 -1
  305. package/dist/esm/model/binding.d.ts +32 -3
  306. package/dist/esm/model/binding.js +68 -17
  307. package/dist/esm/model/call-budget.d.ts +30 -2
  308. package/dist/esm/model/call-budget.js +45 -4
  309. package/dist/esm/model/decision-retry.d.ts +10 -1
  310. package/dist/esm/model/decision-retry.js +19 -1
  311. package/dist/esm/model/defaults.d.ts +13 -2
  312. package/dist/esm/model/defaults.js +27 -4
  313. package/dist/esm/model/index.d.ts +7 -0
  314. package/dist/esm/model/index.js +7 -0
  315. package/dist/esm/model/interactions/arguments.d.ts +27 -0
  316. package/dist/esm/model/interactions/arguments.js +36 -1
  317. package/dist/esm/model/interactions/json-object.d.ts +7 -1
  318. package/dist/esm/model/interactions/json-object.js +48 -12
  319. package/dist/esm/model/interactions/native-functions.d.ts +6 -0
  320. package/dist/esm/model/interactions/native-functions.js +52 -10
  321. package/dist/esm/model/message-diagnostics.d.ts +17 -1
  322. package/dist/esm/model/message-diagnostics.js +17 -4
  323. package/dist/esm/model/options.d.ts +18 -1
  324. package/dist/esm/model/options.js +9 -1
  325. package/dist/esm/model/preparation.d.ts +30 -2
  326. package/dist/esm/model/preparation.js +86 -12
  327. package/dist/esm/model/runner.d.ts +129 -5
  328. package/dist/esm/model/runner.js +414 -80
  329. package/dist/esm/model/selection-transport.d.ts +14 -1
  330. package/dist/esm/model/selection-transport.js +48 -8
  331. package/dist/esm/model/settings.d.ts +11 -0
  332. package/dist/esm/model/settings.js +67 -13
  333. package/dist/esm/model/token-budget.d.ts +59 -1
  334. package/dist/esm/model/token-budget.js +69 -11
  335. package/dist/esm/model/transports.d.ts +20 -2
  336. package/dist/esm/model/transports.js +59 -6
  337. package/dist/esm/structs/capabilities/invocation.d.ts +36 -0
  338. package/dist/esm/structs/capabilities/model.d.ts +27 -0
  339. package/dist/esm/structs/capabilities/tools.d.ts +38 -0
  340. package/dist/esm/structs/common.d.ts +62 -2
  341. package/dist/esm/structs/common.js +11 -0
  342. package/dist/esm/structs/context/fragments.d.ts +28 -0
  343. package/dist/esm/structs/context/journal.d.ts +28 -3
  344. package/dist/esm/structs/context/processing.d.ts +11 -0
  345. package/dist/esm/structs/debug.d.ts +58 -1
  346. package/dist/esm/structs/debug.js +34 -5
  347. package/dist/esm/structs/diagnostics.d.ts +119 -1
  348. package/dist/esm/structs/errors.d.ts +42 -1
  349. package/dist/esm/structs/errors.js +26 -1
  350. package/dist/esm/structs/execution/engine.d.ts +24 -1
  351. package/dist/esm/structs/execution/events.d.ts +12 -0
  352. package/dist/esm/structs/execution/workflow.d.ts +71 -0
  353. package/dist/esm/structs/index.d.ts +11 -1
  354. package/dist/esm/structs/index.js +11 -1
  355. package/dist/esm/structs/invocation.d.ts +30 -0
  356. package/dist/esm/structs/kits/aggregation.d.ts +12 -0
  357. package/dist/esm/structs/kits/answering/checks.d.ts +11 -0
  358. package/dist/esm/structs/kits/answering/flow.d.ts +35 -1
  359. package/dist/esm/structs/kits/answering/state.d.ts +21 -0
  360. package/dist/esm/structs/kits/answering/tasks.d.ts +21 -0
  361. package/dist/esm/structs/kits/artifacts.d.ts +14 -0
  362. package/dist/esm/structs/kits/candidates.d.ts +19 -0
  363. package/dist/esm/structs/kits/delivery.d.ts +22 -0
  364. package/dist/esm/structs/kits/durable.d.ts +56 -3
  365. package/dist/esm/structs/kits/durable.js +7 -0
  366. package/dist/esm/structs/kits/evidence.d.ts +23 -0
  367. package/dist/esm/structs/kits/family.d.ts +49 -1
  368. package/dist/esm/structs/kits/family.js +1 -0
  369. package/dist/esm/structs/kits/intents/catalog.d.ts +26 -0
  370. package/dist/esm/structs/kits/intents/registry.d.ts +34 -0
  371. package/dist/esm/structs/kits/intents/scopes.d.ts +36 -1
  372. package/dist/esm/structs/kits/interaction.d.ts +64 -0
  373. package/dist/esm/structs/kits/interaction.js +8 -1
  374. package/dist/esm/structs/kits/knowledge-publication.d.ts +43 -1
  375. package/dist/esm/structs/kits/knowledge-publication.js +1 -0
  376. package/dist/esm/structs/kits/knowledge.d.ts +39 -2
  377. package/dist/esm/structs/kits/normalization.d.ts +15 -0
  378. package/dist/esm/structs/kits/policies.d.ts +25 -1
  379. package/dist/esm/structs/kits/presentation/events.d.ts +28 -4
  380. package/dist/esm/structs/kits/presentation/outputs.d.ts +38 -1
  381. package/dist/esm/structs/kits/presentation/templates.d.ts +15 -0
  382. package/dist/esm/structs/kits/projection.d.ts +21 -0
  383. package/dist/esm/structs/kits/reflection.d.ts +61 -2
  384. package/dist/esm/structs/kits/reflection.js +18 -3
  385. package/dist/esm/structs/kits/retrieval.d.ts +38 -0
  386. package/dist/esm/structs/kits/search.d.ts +22 -0
  387. package/dist/esm/structs/kits/text-skills.d.ts +36 -0
  388. package/dist/esm/structs/kits/tools.d.ts +87 -0
  389. package/dist/esm/structs/model/chat-provider.d.ts +24 -1
  390. package/dist/esm/structs/model/chat-provider.js +6 -0
  391. package/dist/esm/structs/model/interactions.d.ts +38 -0
  392. package/dist/esm/structs/model/messages.d.ts +30 -0
  393. package/dist/esm/structs/model/runtime.d.ts +104 -6
  394. package/dist/esm/structs/support/capabilities.d.ts +19 -2
  395. package/dist/esm/structs/support/context-processing.d.ts +88 -9
  396. package/dist/esm/structs/support/context.d.ts +29 -1
  397. package/dist/esm/structs/support/model/completion.d.ts +50 -0
  398. package/dist/esm/structs/support/model/completion.js +1 -0
  399. package/dist/esm/structs/support/model/interactions.d.ts +13 -1
  400. package/dist/esm/structs/support/model/messages.d.ts +52 -0
  401. package/dist/esm/structs/support/model/messages.js +1 -0
  402. package/dist/esm/structs/support/model/provider-observer.d.ts +22 -1
  403. package/dist/esm/structs/support/model/provider.d.ts +71 -6
  404. package/dist/esm/structs/support/registration.d.ts +13 -0
  405. package/dist/esm/structs/support/schema.d.ts +14 -0
  406. package/dist/esm/structs/support/tools.d.ts +28 -0
  407. package/dist/esm/structs/support/transport/json.d.ts +16 -0
  408. package/dist/esm/structs/support/transport/sse.d.ts +15 -0
  409. package/dist/esm/structs/utils/rules.d.ts +19 -0
  410. package/dist/esm/support/capabilities.d.ts +25 -2
  411. package/dist/esm/support/capabilities.js +43 -6
  412. package/dist/esm/support/context/assembly.d.ts +35 -4
  413. package/dist/esm/support/context/assembly.js +88 -16
  414. package/dist/esm/support/context/compression.d.ts +17 -1
  415. package/dist/esm/support/context/compression.js +48 -6
  416. package/dist/esm/support/context/fragments.d.ts +6 -0
  417. package/dist/esm/support/context/fragments.js +6 -0
  418. package/dist/esm/support/context/history.d.ts +43 -0
  419. package/dist/esm/support/context/history.js +36 -1
  420. package/dist/esm/support/context/index.d.ts +13 -2
  421. package/dist/esm/support/context/index.js +12 -1
  422. package/dist/esm/support/context/nodes.d.ts +49 -3
  423. package/dist/esm/support/context/nodes.js +165 -36
  424. package/dist/esm/support/context/processing.d.ts +145 -1
  425. package/dist/esm/support/context/processing.js +320 -62
  426. package/dist/esm/support/context/selection-policy.d.ts +42 -2
  427. package/dist/esm/support/context/selection-policy.js +98 -21
  428. package/dist/esm/support/context/selection.d.ts +14 -1
  429. package/dist/esm/support/context/selection.js +61 -10
  430. package/dist/esm/support/context/snapshot.d.ts +23 -1
  431. package/dist/esm/support/context/snapshot.js +29 -7
  432. package/dist/esm/support/context/strategies.d.ts +35 -2
  433. package/dist/esm/support/context/strategies.js +120 -28
  434. package/dist/esm/support/index.d.ts +9 -1
  435. package/dist/esm/support/index.js +9 -1
  436. package/dist/esm/support/model/capabilities.d.ts +10 -0
  437. package/dist/esm/support/model/capabilities.js +20 -1
  438. package/dist/esm/support/model/chat-completions.d.ts +44 -15
  439. package/dist/esm/support/model/chat-completions.js +92 -20
  440. package/dist/esm/support/model/children.d.ts +32 -2
  441. package/dist/esm/support/model/children.js +34 -6
  442. package/dist/esm/support/model/compatible-provider.d.ts +29 -3
  443. package/dist/esm/support/model/compatible-provider.js +190 -60
  444. package/dist/esm/support/model/completion/calls.d.ts +40 -0
  445. package/dist/esm/support/model/completion/calls.js +58 -0
  446. package/dist/esm/support/model/completion/default.d.ts +10 -0
  447. package/dist/esm/support/model/completion/default.js +29 -0
  448. package/dist/esm/support/model/completion/index.d.ts +10 -0
  449. package/dist/esm/support/model/completion/index.js +22 -0
  450. package/dist/esm/support/model/completion/session.d.ts +11 -0
  451. package/dist/esm/support/model/completion/session.js +99 -0
  452. package/dist/esm/support/model/index.d.ts +14 -0
  453. package/dist/esm/support/model/index.js +12 -0
  454. package/dist/esm/support/model/interactions/index.d.ts +1 -1
  455. package/dist/esm/support/model/interactions/index.js +12 -1
  456. package/dist/esm/support/model/interactions/json-object.d.ts +6 -0
  457. package/dist/esm/support/model/interactions/json-object.js +6 -0
  458. package/dist/esm/support/model/interactions/native-functions.d.ts +6 -0
  459. package/dist/esm/support/model/interactions/native-functions.js +6 -0
  460. package/dist/esm/support/model/observer.d.ts +25 -2
  461. package/dist/esm/support/model/observer.js +32 -6
  462. package/dist/esm/support/model/preview-rules.d.ts +20 -2
  463. package/dist/esm/support/model/preview-rules.js +66 -16
  464. package/dist/esm/support/model/reply-preview.d.ts +15 -1
  465. package/dist/esm/support/model/reply-preview.js +77 -17
  466. package/dist/esm/support/model/stage-transport.d.ts +9 -1
  467. package/dist/esm/support/model/stage-transport.js +33 -7
  468. package/dist/esm/support/model/strategies.d.ts +24 -2
  469. package/dist/esm/support/model/strategies.js +75 -14
  470. package/dist/esm/support/model/transports.d.ts +17 -1
  471. package/dist/esm/support/model/transports.js +53 -11
  472. package/dist/esm/support/registration.d.ts +20 -1
  473. package/dist/esm/support/registration.js +49 -7
  474. package/dist/esm/support/schema.d.ts +31 -1
  475. package/dist/esm/support/schema.js +46 -4
  476. package/dist/esm/support/stream-events.d.ts +22 -1
  477. package/dist/esm/support/stream-events.js +60 -8
  478. package/dist/esm/support/tool-runtime.d.ts +6 -0
  479. package/dist/esm/support/tool-runtime.js +6 -0
  480. package/dist/esm/support/tools.d.ts +22 -0
  481. package/dist/esm/support/tools.js +79 -10
  482. package/dist/esm/support/transport/index.d.ts +7 -0
  483. package/dist/esm/support/transport/index.js +7 -0
  484. package/dist/esm/support/transport/json.d.ts +29 -2
  485. package/dist/esm/support/transport/json.js +28 -4
  486. package/dist/esm/support/transport/sse.d.ts +31 -1
  487. package/dist/esm/support/transport/sse.js +25 -2
  488. package/dist/esm/types.d.ts +9 -1
  489. package/dist/esm/utils/break-observer.d.ts +27 -2
  490. package/dist/esm/utils/break-observer.js +20 -2
  491. package/dist/esm/utils/cancellation.d.ts +56 -5
  492. package/dist/esm/utils/cancellation.js +77 -9
  493. package/dist/esm/utils/catalog.d.ts +20 -1
  494. package/dist/esm/utils/catalog.js +19 -4
  495. package/dist/esm/utils/debug.d.ts +20 -1
  496. package/dist/esm/utils/debug.js +14 -2
  497. package/dist/esm/utils/index.d.ts +8 -0
  498. package/dist/esm/utils/index.js +8 -0
  499. package/dist/esm/utils/interaction-definition.d.ts +18 -1
  500. package/dist/esm/utils/interaction-definition.js +26 -6
  501. package/dist/esm/utils/invocation.d.ts +36 -1
  502. package/dist/esm/utils/invocation.js +42 -4
  503. package/dist/esm/utils/model-protocol.d.ts +8 -0
  504. package/dist/esm/utils/model-protocol.js +20 -1
  505. package/dist/esm/utils/object.d.ts +16 -0
  506. package/dist/esm/utils/object.js +16 -0
  507. package/dist/esm/utils/observer.d.ts +19 -1
  508. package/dist/esm/utils/observer.js +22 -2
  509. package/dist/esm/utils/protocol-registry.d.ts +38 -1
  510. package/dist/esm/utils/protocol-registry.js +47 -4
  511. package/dist/esm/utils/query-key.d.ts +11 -1
  512. package/dist/esm/utils/query-key.js +21 -2
  513. package/dist/esm/utils/registration.d.ts +34 -2
  514. package/dist/esm/utils/registration.js +18 -2
  515. package/dist/esm/utils/rules.d.ts +81 -4
  516. package/dist/esm/utils/rules.js +39 -11
  517. package/dist/esm/utils/schema-adapter.d.ts +12 -1
  518. package/dist/esm/utils/schema-adapter.js +25 -2
  519. package/dist/esm/utils/synchronous.d.ts +60 -4
  520. package/dist/esm/utils/synchronous.js +64 -7
  521. package/dist/esm/utils/text.d.ts +15 -1
  522. package/dist/esm/utils/text.js +15 -1
  523. package/package.json +3 -2
@@ -1,33 +1,81 @@
1
+ /**
2
+ * Answering Kit: answer tasks, their readers, schemas and metadata.
3
+ *
4
+ * Place in the package: part of the `answering` Kit. A task binds an intent set, a scope, an
5
+ * output contract, check ids and a reader; this module compiles that binding, validates the
6
+ * reader ids and exposes read/describe entry points. Readers stay App-owned I/O.
7
+ *
8
+ * Exports: `defineAnswerReaderCatalog`, `defineAnswerTaskCatalog`, and the task/reader types.
9
+ */
1
10
  import { readonlyCatalog } from '../../utils/catalog.js';
2
11
  import { assertion, synchronous } from '../../utils/synchronous.js';
3
12
  import { freezeSchema } from '../../utils/object.js';
4
13
  import { awaitWithSignal } from '../../utils/cancellation.js';
5
14
  import { snapshotSchemaAdapter } from '../../utils/schema-adapter.js';
6
- /** Task ids, schema, readers, outputs and checks have one compiled authority. */
15
+ /**
16
+ * Compile a reader catalog.
17
+ *
18
+ * @param definitions - Readers with unique ids and a `read` handler.
19
+ * @returns A frozen catalog; unknown ids fail through `require`.
20
+ * @throws TypeError When a reader has no `read` handler.
21
+ */
7
22
  export function defineAnswerReaderCatalog(definitions) {
8
- return readonlyCatalog(definitions.map(reader => {
23
+ return readonlyCatalog(definitions.map((reader) => {
9
24
  if (typeof reader.read !== 'function')
10
25
  throw new TypeError('Invalid answer reader');
11
26
  return Object.freeze({ id: reader.id, read: reader.read.bind(reader) });
12
- }), id => new TypeError(`Unknown answer reader: ${id}`));
27
+ }), (id) => new TypeError(`Unknown answer reader: ${id}`));
13
28
  }
29
+ /**
30
+ * Compile the answer task catalog from its declarations and shared ports.
31
+ *
32
+ * Task ids, schemas, readers, outputs and checks have one compiled authority: a task can only
33
+ * reference a reader or check that the ports actually registered, and metadata is cloned and
34
+ * frozen so later mutation by the caller cannot change a registered task.
35
+ *
36
+ * @param definitions - Task declarations with identity, reader/output/scope references,
37
+ * intent ids, check ids, input schema and metadata.
38
+ * @param ports - Registered readers, checks, outputs and an optional definition assertion.
39
+ * @returns A frozen catalog extended with `describe`, `read` and `readAsync`.
40
+ * @throws TypeError For a task with missing identity, an unknown reader/output/check, empty or
41
+ * duplicate intent ids, a duplicate check id, or a failed definition assertion.
42
+ */
14
43
  export function defineAnswerTaskCatalog(definitions, ports) {
15
44
  const readers = defineAnswerReaderCatalog([...ports.readers.values()]);
16
45
  const checkIds = ports.checks.ids();
17
46
  const assertDefinition = ports.assertDefinition?.bind(ports);
18
47
  const outputs = new Set(ports.outputs.ids());
19
- const tasks = definitions.map(definition => {
20
- if (!definition.id?.trim() || !definition.description?.trim() || !readers.has(definition.readerId) || !outputs.has(definition.outputId)
21
- || !Array.isArray(definition.intentIds) || !definition.intentIds.length || definition.intentIds.some(id => typeof id !== 'string' || !id.trim()) || new Set(definition.intentIds).size !== definition.intentIds.length
22
- || !Array.isArray(definition.checkIds) || new Set(definition.checkIds).size !== definition.checkIds.length || definition.checkIds.some(id => !checkIds.includes(id)))
48
+ const tasks = definitions.map((definition) => {
49
+ if (!definition.id?.trim() ||
50
+ !definition.description?.trim() ||
51
+ !readers.has(definition.readerId) ||
52
+ !outputs.has(definition.outputId) ||
53
+ !Array.isArray(definition.intentIds) ||
54
+ !definition.intentIds.length ||
55
+ definition.intentIds.some((id) => typeof id !== 'string' || !id.trim()) ||
56
+ new Set(definition.intentIds).size !== definition.intentIds.length ||
57
+ !Array.isArray(definition.checkIds) ||
58
+ new Set(definition.checkIds).size !== definition.checkIds.length ||
59
+ definition.checkIds.some((id) => !checkIds.includes(id)))
23
60
  throw new TypeError(`Invalid answer task: ${definition.id}`);
24
61
  const metadata = structuredClone(definition.metadata);
25
62
  freezeSchema(metadata);
26
- const task = Object.freeze({ ...definition, id: definition.id, description: definition.description, readerId: definition.readerId, outputId: definition.outputId, scopeId: definition.scopeId, intentIds: Object.freeze([...definition.intentIds]), checkIds: Object.freeze([...definition.checkIds]), inputSchema: snapshotSchemaAdapter(definition.inputSchema), metadata });
63
+ const task = Object.freeze({
64
+ ...definition,
65
+ id: definition.id,
66
+ description: definition.description,
67
+ readerId: definition.readerId,
68
+ outputId: definition.outputId,
69
+ scopeId: definition.scopeId,
70
+ intentIds: Object.freeze([...definition.intentIds]),
71
+ checkIds: Object.freeze([...definition.checkIds]),
72
+ inputSchema: snapshotSchemaAdapter(definition.inputSchema),
73
+ metadata,
74
+ });
27
75
  assertion(assertDefinition?.(task), 'Task assertions must return void synchronously');
28
76
  return task;
29
77
  });
30
- const catalog = readonlyCatalog(tasks, id => new TypeError(`Unknown answer task: ${id}`));
78
+ const catalog = readonlyCatalog(tasks, (id) => new TypeError(`Unknown answer task: ${id}`));
31
79
  const prepare = (request, context) => {
32
80
  context.signal.throwIfAborted();
33
81
  const task = catalog.require(request.taskId);
@@ -35,17 +83,44 @@ export function defineAnswerTaskCatalog(definitions, ports) {
35
83
  context.signal.throwIfAborted();
36
84
  return { input, task, reader: readers.require(task.readerId) };
37
85
  };
38
- return Object.freeze({ ...catalog,
39
- describe: () => tasks.map(({ inputSchema, ...task }) => ({ ...task, inputJsonSchema: inputSchema.jsonSchema })),
86
+ return Object.freeze({
87
+ ...catalog,
88
+ /** Task metadata with the JSON schema flattened for model or admin presentation. */
89
+ describe: () => tasks.map(({ inputSchema, ...task }) => ({
90
+ ...task,
91
+ inputJsonSchema: inputSchema.jsonSchema,
92
+ })),
93
+ /**
94
+ * Read evidence through a task's registered reader, synchronously.
95
+ *
96
+ * @throws TypeError For an unknown task, a parse failure, or a reader returning a Promise.
97
+ */
40
98
  read(request, context) {
41
99
  const { input, task, reader } = prepare(request, context);
42
- const value = synchronous(reader.read(input, { ...context, app: context.app, signal: context.signal, diagnostics: context.diagnostics, task }), 'Synchronous answer readers must not return a Promise');
100
+ const value = synchronous(reader.read(input, {
101
+ ...context,
102
+ app: context.app,
103
+ signal: context.signal,
104
+ diagnostics: context.diagnostics,
105
+ task,
106
+ }), 'Synchronous answer readers must not return a Promise');
43
107
  context.signal.throwIfAborted();
44
108
  return value;
45
109
  },
110
+ /**
111
+ * Read evidence through a task's registered reader, awaiting an async reader.
112
+ *
113
+ * @throws TypeError For an unknown task or a parse failure; aborts with the caller's signal.
114
+ */
46
115
  async readAsync(request, context) {
47
116
  const { input, task, reader } = prepare(request, context);
48
- const value = await awaitWithSignal(reader.read(input, { ...context, app: context.app, signal: context.signal, diagnostics: context.diagnostics, task }), context.signal);
117
+ const value = await awaitWithSignal(reader.read(input, {
118
+ ...context,
119
+ app: context.app,
120
+ signal: context.signal,
121
+ diagnostics: context.diagnostics,
122
+ task,
123
+ }), context.signal);
49
124
  context.signal.throwIfAborted();
50
125
  return value;
51
126
  },
@@ -1,5 +1,15 @@
1
1
  import type { OperationContext } from '../structs/common.js';
2
2
  import type { ArtifactReference, ArtifactResolver } from '../structs/kits/artifacts.js';
3
+ /**
4
+ * Compile a catalog of artifact resolvers plus a checked `resolve` entry point.
5
+ *
6
+ * @param definitions - Resolvers keyed by their own non-empty `id`; duplicate ids are rejected
7
+ * by the underlying catalog.
8
+ * @returns A frozen catalog (`ids`/`has`/`get`/`require`/`values`/`entries`) extended with
9
+ * `resolve(reference, context)`.
10
+ * @throws TypeError At construction for malformed resolver definitions, and from `resolve`
11
+ * for an unknown resolver, an invalid reference snapshot, or a missing `OperationContext`.
12
+ */
3
13
  export declare function defineArtifactCatalog<Value, App>(definitions: readonly ArtifactResolver<Value, App>[]): Readonly<{
4
14
  resolve: (reference: ArtifactReference, context: OperationContext<App>) => Promise<Value>;
5
15
  definitions: readonly Readonly<{
@@ -26,6 +36,7 @@ export declare function defineArtifactCatalog<Value, App>(definitions: readonly
26
36
  }>;
27
37
  }>;
28
38
  export type * from '../structs/kits/artifacts.js';
39
+ /** Namespace object for callers that prefer one import over named helpers. */
29
40
  export declare const Artifacts: Readonly<{
30
41
  defineArtifactCatalog: typeof defineArtifactCatalog;
31
42
  }>;
@@ -1,16 +1,38 @@
1
+ /**
2
+ * Artifacts Kit: resolve opaque artifact references through App-registered resolvers.
3
+ *
4
+ * Place in the package: an optional App-side library. A reference only names a resolver and
5
+ * an artifact; the resolver, not this module, establishes access, provenance and whether the
6
+ * referenced revision is still current. Nothing is cached or persisted here.
7
+ *
8
+ * Exports: `defineArtifactCatalog`, `Artifacts`, and the artifact reference/resolver types.
9
+ */
1
10
  import { awaitWithSignal } from '../utils/cancellation.js';
2
11
  import { readonlyCatalog } from '../utils/catalog.js';
3
12
  function snapshotArtifactReference(reference) {
4
13
  if (!reference || typeof reference !== 'object')
5
14
  throw new TypeError('Invalid artifact reference');
6
15
  const { resolverId, artifactId, revision } = reference;
7
- if (typeof resolverId !== 'string' || !resolverId.trim() || typeof artifactId !== 'string' || !artifactId.trim()
8
- || (revision !== undefined && (typeof revision !== 'string' || !revision.trim())))
16
+ if (typeof resolverId !== 'string' ||
17
+ !resolverId.trim() ||
18
+ typeof artifactId !== 'string' ||
19
+ !artifactId.trim() ||
20
+ (revision !== undefined && (typeof revision !== 'string' || !revision.trim())))
9
21
  throw new TypeError('Invalid artifact reference');
10
22
  return Object.freeze({ resolverId, artifactId, ...(revision === undefined ? {} : { revision }) });
11
23
  }
24
+ /**
25
+ * Compile a catalog of artifact resolvers plus a checked `resolve` entry point.
26
+ *
27
+ * @param definitions - Resolvers keyed by their own non-empty `id`; duplicate ids are rejected
28
+ * by the underlying catalog.
29
+ * @returns A frozen catalog (`ids`/`has`/`get`/`require`/`values`/`entries`) extended with
30
+ * `resolve(reference, context)`.
31
+ * @throws TypeError At construction for malformed resolver definitions, and from `resolve`
32
+ * for an unknown resolver, an invalid reference snapshot, or a missing `OperationContext`.
33
+ */
12
34
  export function defineArtifactCatalog(definitions) {
13
- const compiled = definitions.map(definition => {
35
+ const compiled = definitions.map((definition) => {
14
36
  if (!definition || typeof definition !== 'object')
15
37
  throw new TypeError('Use an artifact resolver id and OperationContext');
16
38
  const { id, resolve } = definition;
@@ -18,7 +40,16 @@ export function defineArtifactCatalog(definitions) {
18
40
  throw new TypeError('Invalid artifact resolver');
19
41
  return Object.freeze({ id, resolve: resolve.bind(definition) });
20
42
  });
21
- const catalog = readonlyCatalog(compiled, id => new TypeError(`Unregistered artifact resolver: ${id}`));
43
+ const catalog = readonlyCatalog(compiled, (id) => new TypeError(`Unregistered artifact resolver: ${id}`));
44
+ /**
45
+ * Resolve one reference through its registered resolver.
46
+ *
47
+ * @param reference - Resolver id, artifact id and optional revision; snapshotted and frozen
48
+ * before the call so a handler cannot observe later mutation.
49
+ * @param context - Operation context supplying the abort signal.
50
+ * @returns The resolver's value.
51
+ * @throws TypeError For a malformed reference or context, or an unknown resolver id.
52
+ */
22
53
  async function resolve(reference, context) {
23
54
  if (!context?.signal)
24
55
  throw new TypeError('Artifact resolution requires OperationContext');
@@ -31,4 +62,5 @@ export function defineArtifactCatalog(definitions) {
31
62
  }
32
63
  return Object.freeze({ ...catalog, resolve });
33
64
  }
65
+ /** Namespace object for callers that prefer one import over named helpers. */
34
66
  export const Artifacts = Object.freeze({ defineArtifactCatalog });
@@ -1,5 +1,26 @@
1
+ /**
2
+ * Candidates Kit: accept, bound and unpack an alternative-proposal envelope.
3
+ *
4
+ * Place in the package: an optional App-side validator for a model reply that may offer
5
+ * several alternatives under one named field. It only narrows the shape; which alternatives
6
+ * are acceptable, and what happens after the user picks one, stays with the App.
7
+ *
8
+ * Exports: `defineCandidateSelection`, `Candidates`, `CandidateSelectionDefinition`.
9
+ */
1
10
  import type { CandidateSelectionDefinition } from '../structs/kits/candidates.js';
2
- /** Alternative proposals are bounded and shallow; accepting a task closes this capability. */
11
+ /**
12
+ * Compile an alternative-proposal envelope contract.
13
+ *
14
+ * Alternative proposals are bounded and shallow; accepting a task closes this capability.
15
+ * A value that is not an object, or that does not carry the candidate field, is treated as a
16
+ * single implicit candidate and returned as-is. Once the envelope is present it must contain
17
+ * only that field, and its array must hold between `minCandidates` (default 1) and
18
+ * `maxCandidates` distinct candidate objects that do not themselves repeat the field.
19
+ *
20
+ * @param definition - Field name, bounds, optional error wording and diagnostic tags.
21
+ * @returns A frozen selector exposing `field`, the resolved bounds and `parse`.
22
+ * @throws TypeError When the field name or bounds are invalid.
23
+ */
3
24
  export declare function defineCandidateSelection(definition: CandidateSelectionDefinition): Readonly<{
4
25
  field: string;
5
26
  minCandidates: number;
@@ -10,6 +31,7 @@ export declare function defineCandidateSelection(definition: CandidateSelectionD
10
31
  }) => unknown[];
11
32
  }>;
12
33
  export type { CandidateSelectionDefinition } from '../structs/kits/candidates.js';
34
+ /** Namespace object for callers that prefer one import over named helpers. */
13
35
  export declare const Candidates: Readonly<{
14
36
  defineCandidateSelection: typeof defineCandidateSelection;
15
37
  }>;
@@ -1,5 +1,17 @@
1
1
  import { breakWhile } from '../utils/rules.js';
2
- /** Alternative proposals are bounded and shallow; accepting a task closes this capability. */
2
+ /**
3
+ * Compile an alternative-proposal envelope contract.
4
+ *
5
+ * Alternative proposals are bounded and shallow; accepting a task closes this capability.
6
+ * A value that is not an object, or that does not carry the candidate field, is treated as a
7
+ * single implicit candidate and returned as-is. Once the envelope is present it must contain
8
+ * only that field, and its array must hold between `minCandidates` (default 1) and
9
+ * `maxCandidates` distinct candidate objects that do not themselves repeat the field.
10
+ *
11
+ * @param definition - Field name, bounds, optional error wording and diagnostic tags.
12
+ * @returns A frozen selector exposing `field`, the resolved bounds and `parse`.
13
+ * @throws TypeError When the field name or bounds are invalid.
14
+ */
3
15
  export function defineCandidateSelection(definition) {
4
16
  const { field, error: configuredError, maxCandidates: max } = definition;
5
17
  const error = typeof configuredError === 'function' ? configuredError.bind(definition) : configuredError;
@@ -7,8 +19,22 @@ export function defineCandidateSelection(definition) {
7
19
  const tags = [...(definition.tags ?? [])];
8
20
  breakWhile([
9
21
  { occur: () => !field.trim(), error: 'Missing candidate field' },
10
- { occur: [() => !Number.isSafeInteger(min) || !Number.isSafeInteger(max), () => min < 1 || max < min], error: 'Invalid candidate bounds' },
22
+ {
23
+ occur: [
24
+ () => !Number.isSafeInteger(min) || !Number.isSafeInteger(max),
25
+ () => min < 1 || max < min,
26
+ ],
27
+ error: 'Invalid candidate bounds',
28
+ },
11
29
  ]);
30
+ /**
31
+ * Unpack the candidates from one parsed reply value.
32
+ *
33
+ * @param request - The raw value plus whether proposals are still allowed at this point.
34
+ * @returns The candidate list, or `[value]` when no envelope is present.
35
+ * @throws TypeError When `allowed` is not boolean, or when the envelope is disallowed,
36
+ * malformed, out of bounds or contains nested candidate envelopes.
37
+ */
12
38
  function parse({ value, allowed }) {
13
39
  if (typeof allowed !== 'boolean')
14
40
  throw new TypeError('Candidate availability must be boolean');
@@ -17,9 +43,24 @@ export function defineCandidateSelection(definition) {
17
43
  const candidates = value[field];
18
44
  breakWhile([
19
45
  { occur: () => !allowed, error, tags: ['availability'] },
20
- { occur: () => Array.isArray(value) || Object.keys(value).length !== 1, error, tags: ['envelope'] },
21
- { occur: [() => !Array.isArray(candidates), () => candidates.length < min || candidates.length > max], error, tags: ['selection'] },
22
- { occur: () => candidates.some(candidate => invalidCandidate(candidate, field)), error, tags: ['members'] },
46
+ {
47
+ occur: () => Array.isArray(value) || Object.keys(value).length !== 1,
48
+ error,
49
+ tags: ['envelope'],
50
+ },
51
+ {
52
+ occur: [
53
+ () => !Array.isArray(candidates),
54
+ () => candidates.length < min || candidates.length > max,
55
+ ],
56
+ error,
57
+ tags: ['selection'],
58
+ },
59
+ {
60
+ occur: () => candidates.some((candidate) => invalidCandidate(candidate, field)),
61
+ error,
62
+ tags: ['members'],
63
+ },
23
64
  ], tags);
24
65
  return candidates;
25
66
  }
@@ -30,4 +71,5 @@ function invalidCandidate(value, field) {
30
71
  return true;
31
72
  return Object.hasOwn(value, field);
32
73
  }
74
+ /** Namespace object for callers that prefer one import over named helpers. */
33
75
  export const Candidates = Object.freeze({ defineCandidateSelection });
@@ -1,12 +1,46 @@
1
+ /**
2
+ * Delivery Kit: run an ordered, synchronous stage pipeline that ends with one result.
3
+ *
4
+ * Place in the package: an optional App-side delivery pipeline (for example formatting and
5
+ * sending one reply). The Kit owns ordering, cancellation checks and outcome validation; the
6
+ * stages, their state and the actual side effects belong to the App.
7
+ *
8
+ * Exports: `defineDelivery`, `Delivery`, and the delivery option/outcome types.
9
+ */
1
10
  import type { DeliveryOptions } from '../structs/kits/delivery.js';
2
11
  import type { ExecutionContext } from '../structs/common.js';
12
+ /**
13
+ * Compile a delivery pipeline from its declared stages.
14
+ *
15
+ * Stages are registered once, in declaration order, and must have unique non-blank ids. A
16
+ * stage without a `handle` is a named hook only, so `beforeStage` can observe it.
17
+ *
18
+ * @param options - Stage list, state factory, optional pre-stage hook and the error factory
19
+ * used when every stage chose `continue`.
20
+ * @returns A frozen plan exposing the stage ids and `deliver(input, execution)`.
21
+ * @throws TypeError At construction for duplicate/blank ids or a non-function handler; from
22
+ * `deliver` when any handler returns a thenable, when a stage outcome is neither `continue`
23
+ * nor `complete`, or when `complete` carries no value.
24
+ */
3
25
  export declare function defineDelivery<Input, State, Result, StageId extends string>(options: DeliveryOptions<Input, State, Result, StageId>): Readonly<{
4
26
  stages: readonly {
5
27
  id: StageId;
6
28
  }[];
29
+ /**
30
+ * Build the state and run the stages in order.
31
+ *
32
+ * The first `complete` outcome ends the pipeline and returns its value; if none completes,
33
+ * `missingResult` supplies the error.
34
+ *
35
+ * @param input - Host input; it is exposed to stages as `context.app`.
36
+ * @param execution - Execution context; cancellation is checked before every hook.
37
+ * @throws The configured error when no stage completes, or a `TypeError` for invalid
38
+ * handler results.
39
+ */
7
40
  deliver(input: Input, execution: ExecutionContext): Result;
8
41
  }>;
9
42
  export type * from '../structs/kits/delivery.js';
43
+ /** Namespace object for callers that prefer one import over named helpers. */
10
44
  export declare const Delivery: Readonly<{
11
45
  defineDelivery: typeof defineDelivery;
12
46
  }>;
@@ -1,19 +1,51 @@
1
1
  import { synchronous } from '../utils/synchronous.js';
2
+ /**
3
+ * Compile a delivery pipeline from its declared stages.
4
+ *
5
+ * Stages are registered once, in declaration order, and must have unique non-blank ids. A
6
+ * stage without a `handle` is a named hook only, so `beforeStage` can observe it.
7
+ *
8
+ * @param options - Stage list, state factory, optional pre-stage hook and the error factory
9
+ * used when every stage chose `continue`.
10
+ * @returns A frozen plan exposing the stage ids and `deliver(input, execution)`.
11
+ * @throws TypeError At construction for duplicate/blank ids or a non-function handler; from
12
+ * `deliver` when any handler returns a thenable, when a stage outcome is neither `continue`
13
+ * nor `complete`, or when `complete` carries no value.
14
+ */
2
15
  export function defineDelivery(options) {
3
16
  const ids = new Set();
4
- const stages = options.stages.map(stage => {
17
+ const stages = options.stages.map((stage) => {
5
18
  const { id } = stage;
6
- if (!id?.trim() || ids.has(id) || (stage.handle !== undefined && typeof stage.handle !== 'function'))
19
+ if (!id?.trim() ||
20
+ ids.has(id) ||
21
+ (stage.handle !== undefined && typeof stage.handle !== 'function'))
7
22
  throw new TypeError('Invalid or duplicate delivery stage');
8
23
  ids.add(id);
9
24
  return Object.freeze({ id, handle: stage.handle?.bind(stage) });
10
25
  });
11
26
  const createState = options.createState.bind(options), beforeStage = options.beforeStage?.bind(options), missingResult = options.missingResult.bind(options);
12
- return Object.freeze({ stages: Object.freeze(stages.map(stage => ({ id: stage.id }))),
27
+ return Object.freeze({
28
+ stages: Object.freeze(stages.map((stage) => ({ id: stage.id }))),
29
+ /**
30
+ * Build the state and run the stages in order.
31
+ *
32
+ * The first `complete` outcome ends the pipeline and returns its value; if none completes,
33
+ * `missingResult` supplies the error.
34
+ *
35
+ * @param input - Host input; it is exposed to stages as `context.app`.
36
+ * @param execution - Execution context; cancellation is checked before every hook.
37
+ * @throws The configured error when no stage completes, or a `TypeError` for invalid
38
+ * handler results.
39
+ */
13
40
  deliver(input, execution) {
14
41
  execution.signal.throwIfAborted();
15
42
  const state = synchronous(createState(input, execution), 'Delivery state creation must be synchronous');
16
- const context = { ...execution, signal: execution.signal, diagnostics: execution.diagnostics, app: input };
43
+ const context = {
44
+ ...execution,
45
+ signal: execution.signal,
46
+ diagnostics: execution.diagnostics,
47
+ app: input,
48
+ };
17
49
  for (const stage of stages) {
18
50
  execution.signal.throwIfAborted();
19
51
  synchronous(beforeStage?.({ stageId: stage.id, state }, context), 'Delivery hooks must be synchronous');
@@ -22,7 +54,9 @@ export function defineDelivery(options) {
22
54
  continue;
23
55
  const outcome = synchronous(stage.handle(state, context), 'Delivery handlers must be synchronous');
24
56
  execution.signal.throwIfAborted();
25
- if (!outcome || !['continue', 'complete'].includes(outcome.type) || (outcome.type === 'complete' && !('value' in outcome)))
57
+ if (!outcome ||
58
+ !['continue', 'complete'].includes(outcome.type) ||
59
+ (outcome.type === 'complete' && !('value' in outcome)))
26
60
  throw new TypeError('Delivery handlers require explicit continue/complete');
27
61
  if (outcome.type === 'complete') {
28
62
  const value = outcome.value;
@@ -34,4 +68,5 @@ export function defineDelivery(options) {
34
68
  },
35
69
  });
36
70
  }
71
+ /** Namespace object for callers that prefer one import over named helpers. */
37
72
  export const Delivery = Object.freeze({ defineDelivery });
@@ -1,7 +1,26 @@
1
1
  import type { DurableTask, DurableTaskDefinition, DurableTaskOptions } from '../structs/kits/durable.js';
2
+ /**
3
+ * Compile a durable task definition into a resumable runner.
4
+ *
5
+ * Each `run` call locks the task id in the store, loads the checkpoint and resumes at
6
+ * `nextStepIndex`. A checkpoint from another definition id or revision, or one that fails the
7
+ * predicates below, is rejected instead of being repaired, because silently accepting it would
8
+ * replay App side effects under a different contract.
9
+ *
10
+ * @param definition - Task identity, state predicate, ordered steps and optional authorization.
11
+ * @param options - Fallback store plus optional clock; both are bound to their owners.
12
+ * @returns A frozen task with `run({ taskId, store? }, context)`.
13
+ * @throws TypeError At construction for an invalid identity, step list, replay policy or
14
+ * duplicate step id; from `run` for a malformed request/context/store, an invalid
15
+ * checkpoint, or a step whose returned state fails the predicate. Also throws when the
16
+ * deadline passed, the attempt budget is exhausted, or the model-call budget cannot fund
17
+ * one more attempt.
18
+ */
2
19
  export declare function defineDurableTask<State, App>(definition: DurableTaskDefinition<State, App>, options?: DurableTaskOptions<State>): DurableTask<State, App>;
3
20
  export type * from '../structs/kits/durable.js';
21
+ /** Namespace object for callers that prefer one import over named helpers. */
4
22
  export declare const Durable: Readonly<{
5
23
  defineDurableTask: typeof defineDurableTask;
6
24
  }>;
25
+ /** Allowed checkpoint lifecycle states; re-exported so hosts can validate their own stores. */
7
26
  export { durableStatuses, durableReplayPolicies } from '../structs/kits/durable.js';