@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
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createToolCallCollector = createToolCallCollector;
4
+ const model_protocol_js_1 = require("../../../utils/model-protocol.js");
5
+ /**
6
+ * Create a collector for one response.
7
+ *
8
+ * @param fail - Protocol failure factory; defaults to the Core model protocol error.
9
+ * @returns A collector that keeps its own state and never shares it with another response.
10
+ */
11
+ function createToolCallCollector(fail = model_protocol_js_1.modelProtocolError) {
12
+ const pending = new Map();
13
+ const ids = new Set();
14
+ const calls = () => [...pending.entries()]
15
+ .sort(([left], [right]) => left - right)
16
+ .map(([index, call]) => ({ index, ...call }));
17
+ return {
18
+ push(part) {
19
+ if (typeof part === 'string')
20
+ return;
21
+ if (!part || typeof part !== 'object' || Array.isArray(part))
22
+ fail('Expected a native model call');
23
+ const { type, index, id, name, arguments: args } = part;
24
+ if (type !== 'function-call-delta')
25
+ fail('Expected a native model call');
26
+ if (!Number.isInteger(index) || index < 0)
27
+ fail('Invalid model call index');
28
+ if ((id !== undefined && (typeof id !== 'string' || !id)) ||
29
+ (name !== undefined && typeof name !== 'string') ||
30
+ (args !== undefined && typeof args !== 'string'))
31
+ fail('Invalid model call fields');
32
+ let call = pending.get(index);
33
+ if (!call) {
34
+ call = { id: '', name: '', arguments: '' };
35
+ pending.set(index, call);
36
+ }
37
+ if (id !== undefined) {
38
+ if (call.id && call.id !== id)
39
+ fail('Conflicting model call IDs');
40
+ if (!call.id) {
41
+ if (ids.has(id))
42
+ fail('Duplicate model call ID');
43
+ ids.add(id);
44
+ call.id = id;
45
+ }
46
+ }
47
+ call.name += name ?? '';
48
+ call.arguments += args ?? '';
49
+ },
50
+ get calls() {
51
+ return calls();
52
+ },
53
+ complete() {
54
+ const completed = calls();
55
+ for (const call of completed)
56
+ if (!call.id || !call.name)
57
+ fail('Incomplete model call');
58
+ return completed;
59
+ },
60
+ };
61
+ }
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defaultCompletionPolicy = void 0;
4
+ const policy = {
5
+ id: 'default',
6
+ begin(facts, fail) {
7
+ let finished = false;
8
+ let hasText = false;
9
+ let hasCall = false;
10
+ return {
11
+ part(part) {
12
+ if (typeof part === 'string') {
13
+ hasText = true;
14
+ return;
15
+ }
16
+ if (!facts.functions)
17
+ throw fail('MODEL_PROTOCOL');
18
+ hasCall = true;
19
+ },
20
+ finish(reason) {
21
+ if (reason !== (facts.functions ? 'tool_calls' : 'stop'))
22
+ throw fail(reason === 'length' ? 'MODEL_OUTPUT_LIMIT' : 'MODEL_INCOMPLETE');
23
+ finished = true;
24
+ },
25
+ end() {
26
+ if (!finished || (facts.functions ? !hasCall : !hasText && !facts.allowEmptyText))
27
+ throw fail('MODEL_INCOMPLETE');
28
+ },
29
+ };
30
+ },
31
+ };
32
+ exports.defaultCompletionPolicy = Object.freeze(policy);
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.completionPolicyCatalog = exports.sessionCompletionPolicy = exports.defaultCompletionPolicy = exports.createToolCallCollector = void 0;
4
+ /**
5
+ * Completion policy catalog: policies a compatible provider may be configured with.
6
+ *
7
+ * Registration is explicit and frozen. The module refuses to load when a key and the policy's own
8
+ * identifier disagree, so a lookup can never return a policy under a false name.
9
+ *
10
+ * Main exports: `completionPolicyCatalog`, the two preset re-exports, the shared call collector
11
+ * and their contract types.
12
+ */
13
+ const rules_js_1 = require("../../../utils/rules.js");
14
+ const default_js_1 = require("./default.js");
15
+ const session_js_1 = require("./session.js");
16
+ var calls_js_1 = require("./calls.js");
17
+ Object.defineProperty(exports, "createToolCallCollector", { enumerable: true, get: function () { return calls_js_1.createToolCallCollector; } });
18
+ var default_js_2 = require("./default.js");
19
+ Object.defineProperty(exports, "defaultCompletionPolicy", { enumerable: true, get: function () { return default_js_2.defaultCompletionPolicy; } });
20
+ var session_js_2 = require("./session.js");
21
+ Object.defineProperty(exports, "sessionCompletionPolicy", { enumerable: true, get: function () { return session_js_2.sessionCompletionPolicy; } });
22
+ /** Preset policies selected by an explicit port; the default is used when none is given. */
23
+ exports.completionPolicyCatalog = Object.freeze({
24
+ default: default_js_1.defaultCompletionPolicy,
25
+ session: session_js_1.sessionCompletionPolicy,
26
+ });
27
+ for (const [id, policy] of Object.entries(exports.completionPolicyCatalog))
28
+ (0, rules_js_1.breakWhile)(id !== policy.id, 'Completion policy ID does not match its registered policy');
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sessionCompletionPolicy = void 0;
4
+ const calls_js_1 = require("./calls.js");
5
+ /** Read the specific-function form: `{ type: 'function', function: { name } }`. */
6
+ function namedTool(choice) {
7
+ if (!choice || typeof choice !== 'object' || Array.isArray(choice))
8
+ return undefined;
9
+ const value = choice;
10
+ if (value.type !== 'function')
11
+ return undefined;
12
+ const fn = value.function;
13
+ if (!fn || typeof fn !== 'object' || Array.isArray(fn))
14
+ return undefined;
15
+ const name = fn.name;
16
+ return typeof name === 'string' && name ? name : undefined;
17
+ }
18
+ const policy = {
19
+ id: 'session',
20
+ begin(facts, fail) {
21
+ const choice = facts.toolChoice;
22
+ let mode;
23
+ let named;
24
+ if (choice === undefined)
25
+ mode = 'inherit';
26
+ else if (choice === 'auto' || choice === 'required' || choice === 'none')
27
+ mode = choice;
28
+ else {
29
+ named = namedTool(choice);
30
+ if (!named)
31
+ throw fail('MODEL_CONFIG');
32
+ mode = 'named';
33
+ }
34
+ const collector = (0, calls_js_1.createToolCallCollector)(() => {
35
+ throw fail('MODEL_PROTOCOL');
36
+ });
37
+ let finished = false;
38
+ let hasText = false;
39
+ let hasCall = false;
40
+ const textSatisfied = () => hasText || facts.allowEmptyText;
41
+ const calls = () => {
42
+ const completed = collector.complete();
43
+ if (!completed.length)
44
+ throw fail('MODEL_INCOMPLETE');
45
+ if (named && completed.some((call) => call.name !== named))
46
+ throw fail('MODEL_PROTOCOL');
47
+ return completed;
48
+ };
49
+ return {
50
+ part(part) {
51
+ if (typeof part === 'string') {
52
+ hasText = true;
53
+ return;
54
+ }
55
+ hasCall = true;
56
+ if (mode === 'none')
57
+ throw fail('MODEL_PROTOCOL');
58
+ if (mode === 'inherit' && !facts.functions)
59
+ throw fail('MODEL_PROTOCOL');
60
+ collector.push(part);
61
+ },
62
+ finish(reason) {
63
+ if (mode === 'inherit') {
64
+ if (reason !== (facts.functions ? 'tool_calls' : 'stop'))
65
+ throw fail(reason === 'length' ? 'MODEL_OUTPUT_LIMIT' : 'MODEL_INCOMPLETE');
66
+ finished = true;
67
+ return;
68
+ }
69
+ if (reason === 'length')
70
+ throw fail('MODEL_OUTPUT_LIMIT');
71
+ if (mode === 'none') {
72
+ if (reason !== 'stop' || !textSatisfied())
73
+ throw fail('MODEL_INCOMPLETE');
74
+ }
75
+ else if (mode === 'auto') {
76
+ if (reason === 'tool_calls')
77
+ calls();
78
+ else if (reason === 'stop') {
79
+ if (hasCall)
80
+ throw fail('MODEL_PROTOCOL');
81
+ if (!textSatisfied())
82
+ throw fail('MODEL_INCOMPLETE');
83
+ }
84
+ else
85
+ throw fail('MODEL_INCOMPLETE');
86
+ }
87
+ else if (reason === 'tool_calls')
88
+ calls();
89
+ else
90
+ throw fail('MODEL_INCOMPLETE');
91
+ finished = true;
92
+ },
93
+ end() {
94
+ if (!finished)
95
+ throw fail('MODEL_INCOMPLETE');
96
+ if (mode === 'inherit' && (facts.functions ? !hasCall : !textSatisfied()))
97
+ throw fail('MODEL_INCOMPLETE');
98
+ },
99
+ };
100
+ },
101
+ };
102
+ exports.sessionCompletionPolicy = Object.freeze(policy);
@@ -15,8 +15,20 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  exports.modelBudgetStrategies = exports.createModelStrategy = exports.runChildren = exports.createReplyPreviewRules = exports.createProviderObservationScope = exports.createStageModelTransport = void 0;
18
+ /**
19
+ * Model support: recommended transports, providers and strategies for Core model calls.
20
+ *
21
+ * Applications compose these implementations and hand them to a Core `ModelRunner`. This module
22
+ * owns wire adaptation and local admission budgets only; credentials, HTTP hosting and business
23
+ * policy stay with the application, and Core does not import this code.
24
+ *
25
+ * Main exports: transport creators, `CompatibleModelProvider`, stage transport projection,
26
+ * capability/interaction catalogs, child-task execution, reply preview helpers, provider
27
+ * observation scopes and `createModelStrategy` with its budget presets.
28
+ */
18
29
  __exportStar(require("./transports.js"), exports);
19
30
  __exportStar(require("./compatible-provider.js"), exports);
31
+ __exportStar(require("./completion/index.js"), exports);
20
32
  __exportStar(require("./interactions/index.js"), exports);
21
33
  __exportStar(require("./chat-completions.js"), exports);
22
34
  __exportStar(require("./capabilities.js"), exports);
@@ -1,6 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.modelInteractionCatalog = exports.jsonObjectInteraction = exports.nativeFunctionInteraction = void 0;
4
+ /**
5
+ * Model interaction catalog: adapters that convert model output into Core model parts.
6
+ *
7
+ * Adapters are selected only from explicit application capability metadata, never inferred from
8
+ * arbitrary text. Each adapter is registered under the same ID it reports, and the catalog is
9
+ * frozen so later imports cannot widen the available interactions.
10
+ *
11
+ * Main exports: `modelInteractionCatalog`, the two adapter re-exports and their contract types.
12
+ */
4
13
  const native_functions_js_1 = require("./native-functions.js");
5
14
  const json_object_js_1 = require("./json-object.js");
6
15
  const rules_js_1 = require("../../../utils/rules.js");
@@ -10,7 +19,9 @@ var json_object_js_2 = require("./json-object.js");
10
19
  Object.defineProperty(exports, "jsonObjectInteraction", { enumerable: true, get: function () { return json_object_js_2.jsonObjectInteraction; } });
11
20
  /** Registered adapters selected only from explicit App capability metadata. */
12
21
  exports.modelInteractionCatalog = Object.freeze({
13
- 'native-functions': native_functions_js_1.nativeFunctionInteraction, 'json-object': json_object_js_1.jsonObjectInteraction,
22
+ 'native-functions': native_functions_js_1.nativeFunctionInteraction,
23
+ 'json-object': json_object_js_1.jsonObjectInteraction,
14
24
  });
25
+ // Fail at module load rather than let a mismatched key register an adapter under a false ID.
15
26
  for (const [id, adapter] of Object.entries(exports.modelInteractionCatalog))
16
27
  (0, rules_js_1.breakWhile)(id !== adapter.id, 'Model interaction ID does not match its registered adapter');
@@ -1,5 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.jsonObjectInteraction = void 0;
4
+ /**
5
+ * Re-export barrel: the JSON-object model interaction adapter.
6
+ *
7
+ * Applications reference it through the Support interaction catalog; the implementation lives in
8
+ * the Core model layer and is not duplicated here.
9
+ */
4
10
  var json_object_js_1 = require("../../../model/interactions/json-object.js");
5
11
  Object.defineProperty(exports, "jsonObjectInteraction", { enumerable: true, get: function () { return json_object_js_1.jsonObjectInteraction; } });
@@ -1,5 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.nativeFunctionInteraction = void 0;
4
+ /**
5
+ * Re-export barrel: the native-function-call model interaction adapter.
6
+ *
7
+ * Applications reference it through the Support interaction catalog; the implementation lives in
8
+ * the Core model layer and is not duplicated here.
9
+ */
4
10
  var native_functions_js_1 = require("../../../model/interactions/native-functions.js");
5
11
  Object.defineProperty(exports, "nativeFunctionInteraction", { enumerable: true, get: function () { return native_functions_js_1.nativeFunctionInteraction; } });
@@ -2,11 +2,26 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.providerObservation = providerObservation;
4
4
  exports.createProviderObservationScope = createProviderObservationScope;
5
+ /**
6
+ * Classify each provider event.
7
+ *
8
+ * `content` events may contain prompt or response data and need explicit acceptance; `metadata`
9
+ * events only describe the call.
10
+ */
5
11
  const events = {
6
- 'provider.request': 'content', 'provider.response': 'metadata', 'provider.frame': 'content',
7
- 'provider.error-body': 'content', 'provider.end': 'metadata',
12
+ 'provider.request': 'content',
13
+ 'provider.response': 'metadata',
14
+ 'provider.frame': 'content',
15
+ 'provider.error-body': 'content',
16
+ 'provider.end': 'metadata',
8
17
  };
9
- /** Lazy and caller-owned: absent/rejected observers do not evaluate payloads or capture error bodies. */
18
+ /**
19
+ * Create the emit/enabled pair used inside the provider.
20
+ *
21
+ * @param observer Caller-owned observer; when absent, every event is disabled.
22
+ * @param options Provider context passed to the observer's acceptance check.
23
+ * @returns `enabled(event)` and `emit(event, payload)`; both never throw.
24
+ */
10
25
  function providerObservation(observer, options) {
11
26
  const enabled = (event) => {
12
27
  if (!observer || !Object.hasOwn(events, event))
@@ -28,11 +43,21 @@ function providerObservation(observer, options) {
28
43
  if (pending)
29
44
  void Promise.resolve(pending).catch(() => { });
30
45
  }
31
- catch { /* Observation cannot change provider results, cancellation or retry behavior. */ }
46
+ catch {
47
+ /* Observation cannot change provider results, cancellation or retry behavior. */
48
+ }
32
49
  },
33
50
  };
34
51
  }
35
- /** Associate provider observations with a caller-owned log destination across child spans. */
52
+ /**
53
+ * Bind provider observations to a caller-owned destination across diagnostic child spans.
54
+ *
55
+ * `attach` returns a scoped diagnostic context; contexts that were not attached through this scope
56
+ * produce no observations. Child contexts inherit the owner and a `parent/child` span path.
57
+ *
58
+ * @param sink Destination implementing optional `accepts` and required `write`.
59
+ * @returns A frozen `{ attach, observer }` pair to install on a provider.
60
+ */
36
61
  function createProviderObservationScope(sink) {
37
62
  const owners = new WeakMap();
38
63
  const accepts = sink.accepts?.bind(sink);
@@ -44,8 +69,9 @@ function createProviderObservationScope(sink) {
44
69
  emit: context.emit.bind(context),
45
70
  deliver: context.deliver.bind(context),
46
71
  child: (id, fields) => attach(context.child(id, fields), owner, `${spanId}/${id}`),
47
- withObserver: observer => attach(context.withObserver(observer), owner, spanId),
72
+ withObserver: (observer) => attach(context.withObserver(observer), owner, spanId),
48
73
  };
74
+ // Prefer the real span identity so the log matches diagnostics rather than the local label.
49
75
  owners.set(scoped, { owner, spanId: context.identity?.spanId ?? spanId });
50
76
  return scoped;
51
77
  }
@@ -1,8 +1,23 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createReplyPreviewRules = createReplyPreviewRules;
4
+ /**
5
+ * Reply preview rule generation from capability and stage declarations.
6
+ *
7
+ * Previews are presentation only: rules are derived from the same capability schemas and stage
8
+ * references used for transport, so a capability cannot preview a field it does not accept.
9
+ * Declarations are snapshotted; application objects are never frozen or mutated.
10
+ *
11
+ * Main exports: `createReplyPreviewRules` and the capability/stage declaration types.
12
+ */
4
13
  const rules_js_1 = require("../../utils/rules.js");
5
14
  const arguments_js_1 = require("../../model/interactions/arguments.js");
15
+ /**
16
+ * Check whether a schema path exists, following local `$ref`, composition keywords and `items`.
17
+ *
18
+ * Rules are only emitted for declared fields, so a renamed or removed field fails generation
19
+ * instead of silently producing an empty preview.
20
+ */
6
21
  function fieldExists(root, path) {
7
22
  const visit = (schema, remaining, depth) => {
8
23
  if (!schema || typeof schema !== 'object' || depth > 64)
@@ -11,20 +26,33 @@ function fieldExists(root, path) {
11
26
  return true;
12
27
  const current = schema;
13
28
  if (typeof current.$ref === 'string' && current.$ref.startsWith('#/')) {
14
- const target = current.$ref.slice(2).split('/').reduce((value, part) => value && typeof value === 'object'
15
- ? (() => { const key = part.replace(/~1/g, '/').replace(/~0/g, '~'); return Object.hasOwn(value, key) ? value[key] : undefined; })() : undefined, root);
29
+ const target = current.$ref
30
+ .slice(2)
31
+ .split('/')
32
+ .reduce((value, part) => value && typeof value === 'object'
33
+ ? (() => {
34
+ const key = part.replace(/~1/g, '/').replace(/~0/g, '~');
35
+ return Object.hasOwn(value, key)
36
+ ? value[key]
37
+ : undefined;
38
+ })()
39
+ : undefined, root);
16
40
  if (visit(target, remaining, depth + 1))
17
41
  return true;
18
42
  }
19
43
  for (const keyword of ['anyOf', 'oneOf', 'allOf']) {
20
44
  const alternatives = current[keyword];
21
- if (Array.isArray(alternatives) && alternatives.some(value => visit(value, remaining, depth + 1)))
45
+ if (Array.isArray(alternatives) &&
46
+ alternatives.some((value) => visit(value, remaining, depth + 1)))
22
47
  return true;
23
48
  }
24
49
  const [key, ...rest] = remaining;
25
50
  const properties = current.properties;
26
- if (key !== '*' && properties && typeof properties === 'object' && Object.hasOwn(properties, key)
27
- && visit(properties[key], rest, depth + 1))
51
+ if (key !== '*' &&
52
+ properties &&
53
+ typeof properties === 'object' &&
54
+ Object.hasOwn(properties, key) &&
55
+ visit(properties[key], rest, depth + 1))
28
56
  return true;
29
57
  return (key === '*' || /^\d+$/.test(key)) && visit(current.items, rest, depth + 1);
30
58
  };
@@ -33,18 +61,33 @@ function fieldExists(root, path) {
33
61
  function stringList(value, label) {
34
62
  (0, rules_js_1.breakWhile)(!Array.isArray(value), `Invalid preview ${label}`);
35
63
  const snapshot = Array.from(value);
36
- (0, rules_js_1.breakWhile)(snapshot.some(item => typeof item !== 'string'), `Invalid preview ${label}`);
64
+ (0, rules_js_1.breakWhile)(snapshot.some((item) => typeof item !== 'string'), `Invalid preview ${label}`);
37
65
  return snapshot;
38
66
  }
39
67
  function previewSnapshot(preview) {
40
68
  if (!preview || preview === true)
41
69
  return preview || undefined;
42
70
  const { paths, when } = preview;
43
- const pathSnapshot = paths === undefined ? undefined : Array.from(paths, path => stringList(path, 'path'));
44
- const eligibility = when === undefined ? undefined : { path: stringList(when.path, 'eligibility path'), values: stringList(when.values, 'eligibility values') };
71
+ const pathSnapshot = paths === undefined ? undefined : Array.from(paths, (path) => stringList(path, 'path'));
72
+ const eligibility = when === undefined
73
+ ? undefined
74
+ : {
75
+ path: stringList(when.path, 'eligibility path'),
76
+ values: stringList(when.values, 'eligibility values'),
77
+ };
45
78
  return { paths: pathSnapshot, when: eligibility };
46
79
  }
47
- /** Generate stage rules from the same capability declarations and stage references used for transport. */
80
+ /**
81
+ * Generate frozen preview rules from capability and stage declarations.
82
+ *
83
+ * Capabilities without preview metadata are skipped even when their stage opts in. Default paths
84
+ * are `text` and `bubbles[*]`, each kept only when the capability schema declares it.
85
+ *
86
+ * @param options Stage declarations and the capabilities they may reference.
87
+ * @returns Frozen rules in stage order, each with deep-frozen paths and eligibility.
88
+ * @throws {Error} When a capability or stage ID repeats, a stage references an unknown capability,
89
+ * a preview mode is unknown, or a preview path or eligibility field is absent from the schema.
90
+ */
48
91
  function createReplyPreviewRules(options) {
49
92
  const capabilities = new Map();
50
93
  for (const capability of options.capabilities) {
@@ -61,7 +104,7 @@ function createReplyPreviewRules(options) {
61
104
  (0, rules_js_1.breakWhile)(!stageId || stages.has(stageId), 'Duplicate preview stage declaration');
62
105
  stages.add(stageId);
63
106
  const ids = capabilityIds === undefined ? [] : stringList(capabilityIds, 'capability IDs');
64
- (0, rules_js_1.breakWhile)(new Set(ids).size !== ids.length || ids.some(id => !capabilities.has(id)), 'Preview stage references an unknown capability');
107
+ (0, rules_js_1.breakWhile)(new Set(ids).size !== ids.length || ids.some((id) => !capabilities.has(id)), 'Preview stage references an unknown capability');
65
108
  (0, rules_js_1.breakWhile)(preview !== undefined && !['text', 'capabilities'].includes(preview), 'Unknown preview stage mode');
66
109
  if (!preview)
67
110
  continue;
@@ -76,14 +119,21 @@ function createReplyPreviewRules(options) {
76
119
  continue;
77
120
  const source = capability.preview === true ? {} : capability.preview;
78
121
  const { paths, when } = source;
79
- const checkedPaths = paths ?? [['text'], ['bubbles', '*']].filter(path => fieldExists(capability.jsonSchema, path));
80
- (0, rules_js_1.breakWhile)(!checkedPaths.length || checkedPaths.some(path => !fieldExists(capability.jsonSchema, path)), `Invalid preview field: ${id}`);
122
+ const checkedPaths = paths ??
123
+ [['text'], ['bubbles', '*']].filter((path) => fieldExists(capability.jsonSchema, path));
124
+ (0, rules_js_1.breakWhile)(!checkedPaths.length ||
125
+ checkedPaths.some((path) => !fieldExists(capability.jsonSchema, path)), `Invalid preview field: ${id}`);
81
126
  (0, rules_js_1.breakWhile)(!!when && !fieldExists(capability.jsonSchema, when.path), `Invalid preview eligibility field: ${id}`);
82
127
  // Only generator-owned snapshots are frozen; App declarations remain untouched.
83
- const emittedPaths = Object.freeze(checkedPaths.map(path => Object.freeze(path)));
84
- const emittedWhen = when && Object.freeze({ path: Object.freeze(when.path), values: Object.freeze(when.values) });
85
- rules.push(Object.freeze({ stageId, capabilityId: (0, arguments_js_1.wireName)(id), paths: emittedPaths,
86
- ...(emittedWhen ? { when: emittedWhen } : {}) }));
128
+ const emittedPaths = Object.freeze(checkedPaths.map((path) => Object.freeze(path)));
129
+ const emittedWhen = when &&
130
+ Object.freeze({ path: Object.freeze(when.path), values: Object.freeze(when.values) });
131
+ rules.push(Object.freeze({
132
+ stageId,
133
+ capabilityId: (0, arguments_js_1.wireName)(id),
134
+ paths: emittedPaths,
135
+ ...(emittedWhen ? { when: emittedWhen } : {}),
136
+ }));
87
137
  }
88
138
  }
89
139
  return Object.freeze(rules);