@alvin0/ai-agent-sdk-core 0.1.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 (623) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +52 -0
  3. package/dist/agent/accounting/common.js +2 -0
  4. package/dist/agent/accounting/common.js.map +1 -0
  5. package/dist/agent/accounting/config.js +2 -0
  6. package/dist/agent/accounting/config.js.map +1 -0
  7. package/dist/agent/accounting/contracts.d.ts +36 -0
  8. package/dist/agent/accounting/contracts.d.ts.map +1 -0
  9. package/dist/agent/accounting/delivery/accounting-data.js +2 -0
  10. package/dist/agent/accounting/delivery/accounting-data.js.map +1 -0
  11. package/dist/agent/accounting/delivery/config.js +2 -0
  12. package/dist/agent/accounting/delivery/config.js.map +1 -0
  13. package/dist/agent/accounting/delivery/data.js +2 -0
  14. package/dist/agent/accounting/delivery/data.js.map +1 -0
  15. package/dist/agent/accounting/delivery/support-errors.js +2 -0
  16. package/dist/agent/accounting/delivery/support-errors.js.map +1 -0
  17. package/dist/agent/accounting/delivery/terminal.js +2 -0
  18. package/dist/agent/accounting/delivery/terminal.js.map +1 -0
  19. package/dist/agent/accounting/delivery-types.d.ts +43 -0
  20. package/dist/agent/accounting/delivery-types.d.ts.map +1 -0
  21. package/dist/agent/accounting/error.d.ts +18 -0
  22. package/dist/agent/accounting/error.d.ts.map +1 -0
  23. package/dist/agent/accounting/error.js +2 -0
  24. package/dist/agent/accounting/error.js.map +1 -0
  25. package/dist/agent/accounting/estimate.js +2 -0
  26. package/dist/agent/accounting/estimate.js.map +1 -0
  27. package/dist/agent/accounting/event-buffer.js +2 -0
  28. package/dist/agent/accounting/event-buffer.js.map +1 -0
  29. package/dist/agent/accounting/ledger.js +2 -0
  30. package/dist/agent/accounting/ledger.js.map +1 -0
  31. package/dist/agent/accounting/report.d.ts +70 -0
  32. package/dist/agent/accounting/report.d.ts.map +1 -0
  33. package/dist/agent/accounting/usage.d.ts +13 -0
  34. package/dist/agent/accounting/usage.d.ts.map +1 -0
  35. package/dist/agent/accounting/usage.js +2 -0
  36. package/dist/agent/accounting/usage.js.map +1 -0
  37. package/dist/agent/context/section.d.ts +15 -0
  38. package/dist/agent/context/section.d.ts.map +1 -0
  39. package/dist/agent/context/section.js +2 -0
  40. package/dist/agent/context/section.js.map +1 -0
  41. package/dist/agent/context/types.d.ts +98 -0
  42. package/dist/agent/context/types.d.ts.map +1 -0
  43. package/dist/agent/define/definition.d.ts +110 -0
  44. package/dist/agent/define/definition.d.ts.map +1 -0
  45. package/dist/agent/define/definition.js +2 -0
  46. package/dist/agent/define/definition.js.map +1 -0
  47. package/dist/agent/define/instructions.js +2 -0
  48. package/dist/agent/define/instructions.js.map +1 -0
  49. package/dist/agent/define/output-format.js +2 -0
  50. package/dist/agent/define/output-format.js.map +1 -0
  51. package/dist/agent/define/session/accounting.js +2 -0
  52. package/dist/agent/define/session/accounting.js.map +1 -0
  53. package/dist/agent/define/session/common.js +2 -0
  54. package/dist/agent/define/session/common.js.map +1 -0
  55. package/dist/agent/define/session/config.js +2 -0
  56. package/dist/agent/define/session/config.js.map +1 -0
  57. package/dist/agent/define/session/model-config.js +2 -0
  58. package/dist/agent/define/session/model-config.js.map +1 -0
  59. package/dist/agent/define/session/observer.js +2 -0
  60. package/dist/agent/define/session/observer.js.map +1 -0
  61. package/dist/agent/define/session/run-seal.js +2 -0
  62. package/dist/agent/define/session/run-seal.js.map +1 -0
  63. package/dist/agent/define/session/runtime-binding.js +2 -0
  64. package/dist/agent/define/session/runtime-binding.js.map +1 -0
  65. package/dist/agent/define/session/runtime-compaction.js +2 -0
  66. package/dist/agent/define/session/runtime-compaction.js.map +1 -0
  67. package/dist/agent/define/session/runtime-memory.js +2 -0
  68. package/dist/agent/define/session/runtime-memory.js.map +1 -0
  69. package/dist/agent/define/session/skills.js +2 -0
  70. package/dist/agent/define/session/skills.js.map +1 -0
  71. package/dist/agent/define/session/trace-accounting.js +2 -0
  72. package/dist/agent/define/session/trace-accounting.js.map +1 -0
  73. package/dist/agent/define/session/types.d.ts +217 -0
  74. package/dist/agent/define/session/types.d.ts.map +1 -0
  75. package/dist/agent/define/session/validation.js +2 -0
  76. package/dist/agent/define/session/validation.js.map +1 -0
  77. package/dist/agent/define/session.d.ts +77 -0
  78. package/dist/agent/define/session.d.ts.map +1 -0
  79. package/dist/agent/define/session.js +2 -0
  80. package/dist/agent/define/session.js.map +1 -0
  81. package/dist/agent/history/config.js +2 -0
  82. package/dist/agent/history/config.js.map +1 -0
  83. package/dist/agent/history/history.d.ts +33 -0
  84. package/dist/agent/history/history.d.ts.map +1 -0
  85. package/dist/agent/history/history.js +2 -0
  86. package/dist/agent/history/history.js.map +1 -0
  87. package/dist/agent/history/normalize.d.ts +7 -0
  88. package/dist/agent/history/normalize.d.ts.map +1 -0
  89. package/dist/agent/history/normalize.js +2 -0
  90. package/dist/agent/history/normalize.js.map +1 -0
  91. package/dist/agent/history/project.d.ts +14 -0
  92. package/dist/agent/history/project.d.ts.map +1 -0
  93. package/dist/agent/history/project.js +2 -0
  94. package/dist/agent/history/project.js.map +1 -0
  95. package/dist/agent/history/types.d.ts +85 -0
  96. package/dist/agent/history/types.d.ts.map +1 -0
  97. package/dist/agent/history/validation.js +2 -0
  98. package/dist/agent/history/validation.js.map +1 -0
  99. package/dist/agent/loop/events.d.ts +213 -0
  100. package/dist/agent/loop/events.d.ts.map +1 -0
  101. package/dist/agent/loop/queue.js +2 -0
  102. package/dist/agent/loop/queue.js.map +1 -0
  103. package/dist/agent/loop/run-turn.d.ts +8 -0
  104. package/dist/agent/loop/run-turn.d.ts.map +1 -0
  105. package/dist/agent/loop/run-turn.js +2 -0
  106. package/dist/agent/loop/run-turn.js.map +1 -0
  107. package/dist/agent/loop/schedule.d.ts +62 -0
  108. package/dist/agent/loop/schedule.d.ts.map +1 -0
  109. package/dist/agent/loop/schedule.js +3 -0
  110. package/dist/agent/loop/schedule.js.map +1 -0
  111. package/dist/agent/loop/turn/cancellation.js +2 -0
  112. package/dist/agent/loop/turn/cancellation.js.map +1 -0
  113. package/dist/agent/loop/turn/common.js +2 -0
  114. package/dist/agent/loop/turn/common.js.map +1 -0
  115. package/dist/agent/loop/turn/config.js +2 -0
  116. package/dist/agent/loop/turn/config.js.map +1 -0
  117. package/dist/agent/loop/turn/content.js +4 -0
  118. package/dist/agent/loop/turn/content.js.map +1 -0
  119. package/dist/agent/loop/turn/hooks.js +2 -0
  120. package/dist/agent/loop/turn/hooks.js.map +1 -0
  121. package/dist/agent/loop/turn/model-round.js +2 -0
  122. package/dist/agent/loop/turn/model-round.js.map +1 -0
  123. package/dist/agent/loop/turn/repetition.js +2 -0
  124. package/dist/agent/loop/turn/repetition.js.map +1 -0
  125. package/dist/agent/loop/turn/types.d.ts +82 -0
  126. package/dist/agent/loop/turn/types.d.ts.map +1 -0
  127. package/dist/agent/loop/turn/usage-stop.js +2 -0
  128. package/dist/agent/loop/turn/usage-stop.js.map +1 -0
  129. package/dist/agent/loop/turn/validation.js +2 -0
  130. package/dist/agent/loop/turn/validation.js.map +1 -0
  131. package/dist/agent/loop/types.d.ts +82 -0
  132. package/dist/agent/loop/types.d.ts.map +1 -0
  133. package/dist/agent/memory/accounting-binding.js +2 -0
  134. package/dist/agent/memory/accounting-binding.js.map +1 -0
  135. package/dist/agent/memory/compaction-config.d.ts +63 -0
  136. package/dist/agent/memory/compaction-config.d.ts.map +1 -0
  137. package/dist/agent/memory/compaction-config.js +2 -0
  138. package/dist/agent/memory/compaction-config.js.map +1 -0
  139. package/dist/agent/memory/compaction.d.ts +62 -0
  140. package/dist/agent/memory/compaction.d.ts.map +1 -0
  141. package/dist/agent/memory/compaction.js +6 -0
  142. package/dist/agent/memory/compaction.js.map +1 -0
  143. package/dist/agent/memory/memory.d.ts +61 -0
  144. package/dist/agent/memory/memory.d.ts.map +1 -0
  145. package/dist/agent/memory/memory.js +5 -0
  146. package/dist/agent/memory/memory.js.map +1 -0
  147. package/dist/agent/memory/persistence-types.d.ts +44 -0
  148. package/dist/agent/memory/persistence-types.d.ts.map +1 -0
  149. package/dist/agent/memory/surface-compaction.d.ts +6 -0
  150. package/dist/agent/memory/surface-compaction.d.ts.map +1 -0
  151. package/dist/agent/memory/surface-compaction.js +4 -0
  152. package/dist/agent/memory/surface-compaction.js.map +1 -0
  153. package/dist/agent/memory/token-estimator.d.ts +12 -0
  154. package/dist/agent/memory/token-estimator.d.ts.map +1 -0
  155. package/dist/agent/memory/token-estimator.js +2 -0
  156. package/dist/agent/memory/token-estimator.js.map +1 -0
  157. package/dist/agent/mode/run-agent.d.ts +79 -0
  158. package/dist/agent/mode/run-agent.d.ts.map +1 -0
  159. package/dist/agent/mode/run-agent.js +4 -0
  160. package/dist/agent/mode/run-agent.js.map +1 -0
  161. package/dist/agent/mode/user-input.d.ts +61 -0
  162. package/dist/agent/mode/user-input.d.ts.map +1 -0
  163. package/dist/agent/mode/user-input.js +2 -0
  164. package/dist/agent/mode/user-input.js.map +1 -0
  165. package/dist/agent/skill/catalog.d.ts +53 -0
  166. package/dist/agent/skill/catalog.d.ts.map +1 -0
  167. package/dist/agent/skill/catalog.js +2 -0
  168. package/dist/agent/skill/catalog.js.map +1 -0
  169. package/dist/agent/skill/definition.d.ts +106 -0
  170. package/dist/agent/skill/definition.d.ts.map +1 -0
  171. package/dist/agent/skill/definition.js +2 -0
  172. package/dist/agent/skill/definition.js.map +1 -0
  173. package/dist/agent/skill/provider/config.d.ts +11 -0
  174. package/dist/agent/skill/provider/config.d.ts.map +1 -0
  175. package/dist/agent/skill/provider/config.js +2 -0
  176. package/dist/agent/skill/provider/config.js.map +1 -0
  177. package/dist/agent/skill/provider/context.js +2 -0
  178. package/dist/agent/skill/provider/context.js.map +1 -0
  179. package/dist/agent/skill/provider/definition.d.ts +6 -0
  180. package/dist/agent/skill/provider/definition.d.ts.map +1 -0
  181. package/dist/agent/skill/provider/definition.js +2 -0
  182. package/dist/agent/skill/provider/definition.js.map +1 -0
  183. package/dist/agent/skill/provider/snapshot.js +2 -0
  184. package/dist/agent/skill/provider/snapshot.js.map +1 -0
  185. package/dist/agent/skill/provider/types.d.ts +49 -0
  186. package/dist/agent/skill/provider/types.d.ts.map +1 -0
  187. package/dist/agent/skill/tools.d.ts +45 -0
  188. package/dist/agent/skill/tools.d.ts.map +1 -0
  189. package/dist/agent/skill/tools.js +14 -0
  190. package/dist/agent/skill/tools.js.map +1 -0
  191. package/dist/agent/team/common.d.ts +26 -0
  192. package/dist/agent/team/common.d.ts.map +1 -0
  193. package/dist/agent/team/common.js +2 -0
  194. package/dist/agent/team/common.js.map +1 -0
  195. package/dist/agent/team/composed.d.ts +45 -0
  196. package/dist/agent/team/composed.d.ts.map +1 -0
  197. package/dist/agent/team/composed.js +2 -0
  198. package/dist/agent/team/composed.js.map +1 -0
  199. package/dist/agent/team/contracts.d.ts +54 -0
  200. package/dist/agent/team/contracts.d.ts.map +1 -0
  201. package/dist/agent/team/managed.d.ts +527 -0
  202. package/dist/agent/team/managed.d.ts.map +1 -0
  203. package/dist/agent/team/managed.js +4 -0
  204. package/dist/agent/team/managed.js.map +1 -0
  205. package/dist/agent/team/team.d.ts +142 -0
  206. package/dist/agent/team/team.d.ts.map +1 -0
  207. package/dist/agent/team/team.js +2 -0
  208. package/dist/agent/team/team.js.map +1 -0
  209. package/dist/agent/team/types.d.ts +170 -0
  210. package/dist/agent/team/types.d.ts.map +1 -0
  211. package/dist/agent/tool/approval.d.ts +106 -0
  212. package/dist/agent/tool/approval.d.ts.map +1 -0
  213. package/dist/agent/tool/approval.js +2 -0
  214. package/dist/agent/tool/approval.js.map +1 -0
  215. package/dist/agent/tool/capture.js +2 -0
  216. package/dist/agent/tool/capture.js.map +1 -0
  217. package/dist/agent/tool/config.js +2 -0
  218. package/dist/agent/tool/config.js.map +1 -0
  219. package/dist/agent/tool/definition.d.ts +227 -0
  220. package/dist/agent/tool/definition.d.ts.map +1 -0
  221. package/dist/agent/tool/definition.js +2 -0
  222. package/dist/agent/tool/definition.js.map +1 -0
  223. package/dist/agent/tool/errors.d.ts +82 -0
  224. package/dist/agent/tool/errors.d.ts.map +1 -0
  225. package/dist/agent/tool/errors.js +2 -0
  226. package/dist/agent/tool/errors.js.map +1 -0
  227. package/dist/agent/tool/execution.d.ts +60 -0
  228. package/dist/agent/tool/execution.d.ts.map +1 -0
  229. package/dist/agent/tool/execution.js +2 -0
  230. package/dist/agent/tool/execution.js.map +1 -0
  231. package/dist/agent/tool/output-budget.d.ts +159 -0
  232. package/dist/agent/tool/output-budget.d.ts.map +1 -0
  233. package/dist/agent/tool/output-budget.js +3 -0
  234. package/dist/agent/tool/output-budget.js.map +1 -0
  235. package/dist/agent/tool/pipeline.d.ts +98 -0
  236. package/dist/agent/tool/pipeline.d.ts.map +1 -0
  237. package/dist/agent/tool/pipeline.js +4 -0
  238. package/dist/agent/tool/pipeline.js.map +1 -0
  239. package/dist/agent/tool/registry.d.ts +70 -0
  240. package/dist/agent/tool/registry.d.ts.map +1 -0
  241. package/dist/agent/tool/registry.js +2 -0
  242. package/dist/agent/tool/registry.js.map +1 -0
  243. package/dist/agent/tool/schema.d.ts +12 -0
  244. package/dist/agent/tool/schema.d.ts.map +1 -0
  245. package/dist/agent/tool/schema.js +2 -0
  246. package/dist/agent/tool/schema.js.map +1 -0
  247. package/dist/agent/tool/source-types.d.ts +25 -0
  248. package/dist/agent/tool/source-types.d.ts.map +1 -0
  249. package/dist/agent/trace/trace.d.ts +63 -0
  250. package/dist/agent/trace/trace.d.ts.map +1 -0
  251. package/dist/agent/trace/trace.js +2 -0
  252. package/dist/agent/trace/trace.js.map +1 -0
  253. package/dist/agent.d.ts +52 -0
  254. package/dist/agent.js +1 -0
  255. package/dist/async/settlement.d.ts +6 -0
  256. package/dist/async/settlement.d.ts.map +1 -0
  257. package/dist/async/settlement.js +2 -0
  258. package/dist/async/settlement.js.map +1 -0
  259. package/dist/capability/common/config.js +2 -0
  260. package/dist/capability/common/config.js.map +1 -0
  261. package/dist/capability/common/data.js +2 -0
  262. package/dist/capability/common/data.js.map +1 -0
  263. package/dist/composition/agent/author.d.ts +12 -0
  264. package/dist/composition/agent/author.d.ts.map +1 -0
  265. package/dist/composition/agent/author.js +2 -0
  266. package/dist/composition/agent/author.js.map +1 -0
  267. package/dist/composition/agent/definition.js +2 -0
  268. package/dist/composition/agent/definition.js.map +1 -0
  269. package/dist/composition/agent/native-event.js +2 -0
  270. package/dist/composition/agent/native-event.js.map +1 -0
  271. package/dist/composition/agent/native-tools.js +2 -0
  272. package/dist/composition/agent/native-tools.js.map +1 -0
  273. package/dist/composition/agent/options.js +2 -0
  274. package/dist/composition/agent/options.js.map +1 -0
  275. package/dist/composition/agent/policy.js +2 -0
  276. package/dist/composition/agent/policy.js.map +1 -0
  277. package/dist/composition/agent/public-message.js +2 -0
  278. package/dist/composition/agent/public-message.js.map +1 -0
  279. package/dist/composition/agent/session.js +2 -0
  280. package/dist/composition/agent/session.js.map +1 -0
  281. package/dist/composition/agent/types.d.ts +218 -0
  282. package/dist/composition/agent/types.d.ts.map +1 -0
  283. package/dist/composition/common/counter.js +2 -0
  284. package/dist/composition/common/counter.js.map +1 -0
  285. package/dist/composition/common/errors.d.ts +15 -0
  286. package/dist/composition/common/errors.d.ts.map +1 -0
  287. package/dist/composition/common/errors.js +2 -0
  288. package/dist/composition/common/errors.js.map +1 -0
  289. package/dist/composition/common/json-data.js +2 -0
  290. package/dist/composition/common/json-data.js.map +1 -0
  291. package/dist/composition/credential/config.d.ts +5 -0
  292. package/dist/composition/credential/config.d.ts.map +1 -0
  293. package/dist/composition/credential/config.js +2 -0
  294. package/dist/composition/credential/config.js.map +1 -0
  295. package/dist/composition/credential/definition.d.ts +9 -0
  296. package/dist/composition/credential/definition.d.ts.map +1 -0
  297. package/dist/composition/credential/definition.js +2 -0
  298. package/dist/composition/credential/definition.js.map +1 -0
  299. package/dist/composition/credential/types.d.ts +38 -0
  300. package/dist/composition/credential/types.d.ts.map +1 -0
  301. package/dist/composition/delivery/ack.js +2 -0
  302. package/dist/composition/delivery/ack.js.map +1 -0
  303. package/dist/composition/delivery/attempt.js +2 -0
  304. package/dist/composition/delivery/attempt.js.map +1 -0
  305. package/dist/composition/delivery/batch.js +2 -0
  306. package/dist/composition/delivery/batch.js.map +1 -0
  307. package/dist/composition/delivery/checkpoint.js +2 -0
  308. package/dist/composition/delivery/checkpoint.js.map +1 -0
  309. package/dist/composition/delivery/event.js +2 -0
  310. package/dist/composition/delivery/event.js.map +1 -0
  311. package/dist/composition/delivery/resource.d.ts +11 -0
  312. package/dist/composition/delivery/resource.d.ts.map +1 -0
  313. package/dist/composition/delivery/resource.js +2 -0
  314. package/dist/composition/delivery/resource.js.map +1 -0
  315. package/dist/composition/delivery/staging.js +2 -0
  316. package/dist/composition/delivery/staging.js.map +1 -0
  317. package/dist/composition/diagnostics/config.js +2 -0
  318. package/dist/composition/diagnostics/config.js.map +1 -0
  319. package/dist/composition/diagnostics/ring.d.ts +12 -0
  320. package/dist/composition/diagnostics/ring.d.ts.map +1 -0
  321. package/dist/composition/diagnostics/ring.js +2 -0
  322. package/dist/composition/diagnostics/ring.js.map +1 -0
  323. package/dist/composition/exporter/definition.d.ts +7 -0
  324. package/dist/composition/exporter/definition.d.ts.map +1 -0
  325. package/dist/composition/exporter/definition.js +2 -0
  326. package/dist/composition/exporter/definition.js.map +1 -0
  327. package/dist/composition/exporter/lifecycle.js +2 -0
  328. package/dist/composition/exporter/lifecycle.js.map +1 -0
  329. package/dist/composition/exporter/preflight.js +2 -0
  330. package/dist/composition/exporter/preflight.js.map +1 -0
  331. package/dist/composition/exporter/types.d.ts +25 -0
  332. package/dist/composition/exporter/types.d.ts.map +1 -0
  333. package/dist/composition/exporter/types.js +2 -0
  334. package/dist/composition/exporter/types.js.map +1 -0
  335. package/dist/composition/identity/agent.js +2 -0
  336. package/dist/composition/identity/agent.js.map +1 -0
  337. package/dist/composition/lifecycle/bounded.js +2 -0
  338. package/dist/composition/lifecycle/bounded.js.map +1 -0
  339. package/dist/composition/lifecycle/operations.js +2 -0
  340. package/dist/composition/lifecycle/operations.js.map +1 -0
  341. package/dist/composition/lifecycle/types.d.ts +13 -0
  342. package/dist/composition/lifecycle/types.d.ts.map +1 -0
  343. package/dist/composition/lifecycle/types.js +2 -0
  344. package/dist/composition/lifecycle/types.js.map +1 -0
  345. package/dist/composition/logging/config.js +2 -0
  346. package/dist/composition/logging/config.js.map +1 -0
  347. package/dist/composition/logging/integration.js +2 -0
  348. package/dist/composition/logging/integration.js.map +1 -0
  349. package/dist/composition/logging/logger.d.ts +9 -0
  350. package/dist/composition/logging/logger.d.ts.map +1 -0
  351. package/dist/composition/logging/logger.js +2 -0
  352. package/dist/composition/logging/logger.js.map +1 -0
  353. package/dist/composition/memory/config.d.ts +10 -0
  354. package/dist/composition/memory/config.d.ts.map +1 -0
  355. package/dist/composition/memory/config.js +2 -0
  356. package/dist/composition/memory/config.js.map +1 -0
  357. package/dist/composition/memory/definition.d.ts +7 -0
  358. package/dist/composition/memory/definition.d.ts.map +1 -0
  359. package/dist/composition/memory/definition.js +2 -0
  360. package/dist/composition/memory/definition.js.map +1 -0
  361. package/dist/composition/memory/key.js +2 -0
  362. package/dist/composition/memory/key.js.map +1 -0
  363. package/dist/composition/memory/resume.js +2 -0
  364. package/dist/composition/memory/resume.js.map +1 -0
  365. package/dist/composition/memory/run.js +2 -0
  366. package/dist/composition/memory/run.js.map +1 -0
  367. package/dist/composition/model-catalog/config.js +2 -0
  368. package/dist/composition/model-catalog/config.js.map +1 -0
  369. package/dist/composition/model-catalog/manager.js +2 -0
  370. package/dist/composition/model-catalog/manager.js.map +1 -0
  371. package/dist/composition/model-catalog/options.js +2 -0
  372. package/dist/composition/model-catalog/options.js.map +1 -0
  373. package/dist/composition/model-catalog/types.d.ts +9 -0
  374. package/dist/composition/model-catalog/types.d.ts.map +1 -0
  375. package/dist/composition/observation/config.js +2 -0
  376. package/dist/composition/observation/config.js.map +1 -0
  377. package/dist/composition/observation/extensions.js +2 -0
  378. package/dist/composition/observation/extensions.js.map +1 -0
  379. package/dist/composition/observation/final-report.d.ts +6 -0
  380. package/dist/composition/observation/final-report.d.ts.map +1 -0
  381. package/dist/composition/observation/final-report.js +2 -0
  382. package/dist/composition/observation/final-report.js.map +1 -0
  383. package/dist/composition/observation/health.d.ts +13 -0
  384. package/dist/composition/observation/health.d.ts.map +1 -0
  385. package/dist/composition/observation/port.d.ts +11 -0
  386. package/dist/composition/observation/port.d.ts.map +1 -0
  387. package/dist/composition/observation/port.js +2 -0
  388. package/dist/composition/observation/port.js.map +1 -0
  389. package/dist/composition/preflight.js +2 -0
  390. package/dist/composition/preflight.js.map +1 -0
  391. package/dist/composition/provider/activation.js +2 -0
  392. package/dist/composition/provider/activation.js.map +1 -0
  393. package/dist/composition/provider/definition.d.ts +7 -0
  394. package/dist/composition/provider/definition.d.ts.map +1 -0
  395. package/dist/composition/provider/definition.js +2 -0
  396. package/dist/composition/provider/definition.js.map +1 -0
  397. package/dist/composition/provider/model-selection.js +2 -0
  398. package/dist/composition/provider/model-selection.js.map +1 -0
  399. package/dist/composition/provider/preflight.js +2 -0
  400. package/dist/composition/provider/preflight.js.map +1 -0
  401. package/dist/composition/provider/types.d.ts +38 -0
  402. package/dist/composition/provider/types.d.ts.map +1 -0
  403. package/dist/composition/provider/types.js +2 -0
  404. package/dist/composition/provider/types.js.map +1 -0
  405. package/dist/composition/queue/config.js +2 -0
  406. package/dist/composition/queue/config.js.map +1 -0
  407. package/dist/composition/queue/scheduler.js +2 -0
  408. package/dist/composition/queue/scheduler.js.map +1 -0
  409. package/dist/composition/queue/store.js +2 -0
  410. package/dist/composition/queue/store.js.map +1 -0
  411. package/dist/composition/runtime/config.js +2 -0
  412. package/dist/composition/runtime/config.js.map +1 -0
  413. package/dist/composition/runtime/owner.js +2 -0
  414. package/dist/composition/runtime/owner.js.map +1 -0
  415. package/dist/composition/runtime/public.d.ts +7 -0
  416. package/dist/composition/runtime/public.d.ts.map +1 -0
  417. package/dist/composition/runtime/public.js +2 -0
  418. package/dist/composition/runtime/public.js.map +1 -0
  419. package/dist/composition/runtime/types.d.ts +76 -0
  420. package/dist/composition/runtime/types.d.ts.map +1 -0
  421. package/dist/composition/startup.js +2 -0
  422. package/dist/composition/startup.js.map +1 -0
  423. package/dist/composition/team/config.js +2 -0
  424. package/dist/composition/team/config.js.map +1 -0
  425. package/dist/composition/team/options.js +2 -0
  426. package/dist/composition/team/options.js.map +1 -0
  427. package/dist/composition/team/runtime.js +2 -0
  428. package/dist/composition/team/runtime.js.map +1 -0
  429. package/dist/composition/team/types.d.ts +63 -0
  430. package/dist/composition/team/types.d.ts.map +1 -0
  431. package/dist/composition/tool-source/config.d.ts +5 -0
  432. package/dist/composition/tool-source/config.d.ts.map +1 -0
  433. package/dist/composition/tool-source/config.js +2 -0
  434. package/dist/composition/tool-source/config.js.map +1 -0
  435. package/dist/composition/tool-source/definition.d.ts +7 -0
  436. package/dist/composition/tool-source/definition.d.ts.map +1 -0
  437. package/dist/composition/tool-source/definition.js +2 -0
  438. package/dist/composition/tool-source/definition.js.map +1 -0
  439. package/dist/composition/tool-source/snapshot.js +2 -0
  440. package/dist/composition/tool-source/snapshot.js.map +1 -0
  441. package/dist/contract/adapter.d.ts +91 -0
  442. package/dist/contract/adapter.d.ts.map +1 -0
  443. package/dist/contract/adapter.js +2 -0
  444. package/dist/contract/adapter.js.map +1 -0
  445. package/dist/contract/call-config.d.ts +36 -0
  446. package/dist/contract/call-config.d.ts.map +1 -0
  447. package/dist/contract/call-config.js +2 -0
  448. package/dist/contract/call-config.js.map +1 -0
  449. package/dist/contract/generate-options.d.ts +41 -0
  450. package/dist/contract/generate-options.d.ts.map +1 -0
  451. package/dist/contract/model-info.d.ts +99 -0
  452. package/dist/contract/model-info.d.ts.map +1 -0
  453. package/dist/contract/output-format.d.ts +18 -0
  454. package/dist/contract/output-format.d.ts.map +1 -0
  455. package/dist/contract/retry-policy.d.ts +104 -0
  456. package/dist/contract/retry-policy.d.ts.map +1 -0
  457. package/dist/contract/retry-policy.js +2 -0
  458. package/dist/contract/retry-policy.js.map +1 -0
  459. package/dist/contract/tool.d.ts +65 -0
  460. package/dist/contract/tool.d.ts.map +1 -0
  461. package/dist/contract/tool.js +2 -0
  462. package/dist/contract/tool.js.map +1 -0
  463. package/dist/errors/agent-sdk-error.d.ts +88 -0
  464. package/dist/errors/agent-sdk-error.d.ts.map +1 -0
  465. package/dist/errors/agent-sdk-error.js +2 -0
  466. package/dist/errors/agent-sdk-error.js.map +1 -0
  467. package/dist/errors/capability-identity.d.ts +10 -0
  468. package/dist/errors/capability-identity.d.ts.map +1 -0
  469. package/dist/errors/capability-identity.js +2 -0
  470. package/dist/errors/capability-identity.js.map +1 -0
  471. package/dist/errors/failure.d.ts +33 -0
  472. package/dist/errors/failure.d.ts.map +1 -0
  473. package/dist/errors/failure.js +2 -0
  474. package/dist/errors/failure.js.map +1 -0
  475. package/dist/errors/model-error.d.ts +83 -0
  476. package/dist/errors/model-error.d.ts.map +1 -0
  477. package/dist/errors/model-error.js +2 -0
  478. package/dist/errors/model-error.js.map +1 -0
  479. package/dist/http/api-key.d.ts +47 -0
  480. package/dist/http/api-key.d.ts.map +1 -0
  481. package/dist/http/api-key.js +2 -0
  482. package/dist/http/api-key.js.map +1 -0
  483. package/dist/http/attribution.d.ts +51 -0
  484. package/dist/http/attribution.d.ts.map +1 -0
  485. package/dist/http/attribution.js +2 -0
  486. package/dist/http/attribution.js.map +1 -0
  487. package/dist/index.d.ts +70 -0
  488. package/dist/index.js +1 -0
  489. package/dist/logging/types.d.ts +53 -0
  490. package/dist/logging/types.d.ts.map +1 -0
  491. package/dist/logging/types.js +2 -0
  492. package/dist/logging/types.js.map +1 -0
  493. package/dist/memory.d.ts +10 -0
  494. package/dist/memory.js +1 -0
  495. package/dist/message/content.d.ts +125 -0
  496. package/dist/message/content.d.ts.map +1 -0
  497. package/dist/message/message.d.ts +154 -0
  498. package/dist/message/message.d.ts.map +1 -0
  499. package/dist/message/message.js +2 -0
  500. package/dist/message/message.js.map +1 -0
  501. package/dist/message/projection.d.ts +34 -0
  502. package/dist/message/projection.d.ts.map +1 -0
  503. package/dist/message/projection.js +2 -0
  504. package/dist/message/projection.js.map +1 -0
  505. package/dist/observability/bus.d.ts +7 -0
  506. package/dist/observability/bus.d.ts.map +1 -0
  507. package/dist/observability/bus.js +2 -0
  508. package/dist/observability/bus.js.map +1 -0
  509. package/dist/observability/exporters.d.ts +39 -0
  510. package/dist/observability/exporters.d.ts.map +1 -0
  511. package/dist/observability/exporters.js +2 -0
  512. package/dist/observability/exporters.js.map +1 -0
  513. package/dist/observability/logger.js +2 -0
  514. package/dist/observability/logger.js.map +1 -0
  515. package/dist/observability/projections.d.ts +12 -0
  516. package/dist/observability/projections.d.ts.map +1 -0
  517. package/dist/observability/projections.js +2 -0
  518. package/dist/observability/projections.js.map +1 -0
  519. package/dist/observability/types.d.ts +103 -0
  520. package/dist/observability/types.d.ts.map +1 -0
  521. package/dist/observability.d.ts +20 -0
  522. package/dist/observability.js +1 -0
  523. package/dist/observation/boundaries.js +2 -0
  524. package/dist/observation/boundaries.js.map +1 -0
  525. package/dist/observation/context.d.ts +39 -0
  526. package/dist/observation/context.d.ts.map +1 -0
  527. package/dist/observation/context.js +2 -0
  528. package/dist/observation/context.js.map +1 -0
  529. package/dist/observation/event.d.ts +50 -0
  530. package/dist/observation/event.d.ts.map +1 -0
  531. package/dist/observation/event.js +2 -0
  532. package/dist/observation/event.js.map +1 -0
  533. package/dist/observation/port.d.ts +56 -0
  534. package/dist/observation/port.d.ts.map +1 -0
  535. package/dist/observation/port.js +2 -0
  536. package/dist/observation/port.js.map +1 -0
  537. package/dist/observation/privacy.js +2 -0
  538. package/dist/observation/privacy.js.map +1 -0
  539. package/dist/observation/report.d.ts +117 -0
  540. package/dist/observation/report.d.ts.map +1 -0
  541. package/dist/observation/report.js +2 -0
  542. package/dist/observation/report.js.map +1 -0
  543. package/dist/observation/telemetry-types.d.ts +29 -0
  544. package/dist/observation/telemetry-types.d.ts.map +1 -0
  545. package/dist/observation/usage.d.ts +52 -0
  546. package/dist/observation/usage.d.ts.map +1 -0
  547. package/dist/observation/usage.js +2 -0
  548. package/dist/observation/usage.js.map +1 -0
  549. package/dist/platform/adapter.js +2 -0
  550. package/dist/platform/adapter.js.map +1 -0
  551. package/dist/platform/capability-operation.js +2 -0
  552. package/dist/platform/capability-operation.js.map +1 -0
  553. package/dist/platform/config.js +2 -0
  554. package/dist/platform/config.js.map +1 -0
  555. package/dist/platform/logger-platform.js +2 -0
  556. package/dist/platform/logger-platform.js.map +1 -0
  557. package/dist/platform/resources.js +2 -0
  558. package/dist/platform/resources.js.map +1 -0
  559. package/dist/plugin/provider-plugin.d.ts +37 -0
  560. package/dist/plugin/provider-plugin.d.ts.map +1 -0
  561. package/dist/plugin/provider-plugin.js +2 -0
  562. package/dist/plugin/provider-plugin.js.map +1 -0
  563. package/dist/primitives/brand.d.ts +61 -0
  564. package/dist/primitives/brand.d.ts.map +1 -0
  565. package/dist/primitives/brand.js +2 -0
  566. package/dist/primitives/brand.js.map +1 -0
  567. package/dist/primitives/freeze.d.ts +20 -0
  568. package/dist/primitives/freeze.d.ts.map +1 -0
  569. package/dist/primitives/freeze.js +2 -0
  570. package/dist/primitives/freeze.js.map +1 -0
  571. package/dist/primitives/json-snapshot.js +2 -0
  572. package/dist/primitives/json-snapshot.js.map +1 -0
  573. package/dist/primitives/json.d.ts +32 -0
  574. package/dist/primitives/json.d.ts.map +1 -0
  575. package/dist/primitives/json.js +2 -0
  576. package/dist/primitives/json.js.map +1 -0
  577. package/dist/primitives/never.d.ts +22 -0
  578. package/dist/primitives/never.d.ts.map +1 -0
  579. package/dist/primitives/never.js +2 -0
  580. package/dist/primitives/never.js.map +1 -0
  581. package/dist/primitives/snapshot.d.ts +10 -0
  582. package/dist/primitives/snapshot.d.ts.map +1 -0
  583. package/dist/primitives/snapshot.js +2 -0
  584. package/dist/primitives/snapshot.js.map +1 -0
  585. package/dist/primitives/version.d.ts +6 -0
  586. package/dist/primitives/version.d.ts.map +1 -0
  587. package/dist/primitives/version.js +2 -0
  588. package/dist/primitives/version.js.map +1 -0
  589. package/dist/provider.d.ts +19 -0
  590. package/dist/provider.js +1 -0
  591. package/dist/runtime/model-call-handle.js +2 -0
  592. package/dist/runtime/model-call-handle.js.map +1 -0
  593. package/dist/runtime/model-metadata.js +2 -0
  594. package/dist/runtime/model-metadata.js.map +1 -0
  595. package/dist/runtime/model-stream.js +2 -0
  596. package/dist/runtime/model-stream.js.map +1 -0
  597. package/dist/runtime/registry.d.ts +171 -0
  598. package/dist/runtime/registry.d.ts.map +1 -0
  599. package/dist/runtime/registry.js +2 -0
  600. package/dist/runtime/registry.js.map +1 -0
  601. package/dist/runtime/with-retry.d.ts +45 -0
  602. package/dist/runtime/with-retry.d.ts.map +1 -0
  603. package/dist/runtime/with-retry.js +2 -0
  604. package/dist/runtime/with-retry.js.map +1 -0
  605. package/dist/skills.d.ts +8 -0
  606. package/dist/skills.js +1 -0
  607. package/dist/stream/assembler.d.ts +86 -0
  608. package/dist/stream/assembler.d.ts.map +1 -0
  609. package/dist/stream/assembler.js +2 -0
  610. package/dist/stream/assembler.js.map +1 -0
  611. package/dist/stream/chunk.d.ts +135 -0
  612. package/dist/stream/chunk.d.ts.map +1 -0
  613. package/dist/stream/idle-timeout.d.ts +30 -0
  614. package/dist/stream/idle-timeout.d.ts.map +1 -0
  615. package/dist/stream/idle-timeout.js +2 -0
  616. package/dist/stream/idle-timeout.js.map +1 -0
  617. package/dist/support-safe/error.d.ts +29 -0
  618. package/dist/support-safe/error.d.ts.map +1 -0
  619. package/dist/support-safe/error.js +2 -0
  620. package/dist/support-safe/error.js.map +1 -0
  621. package/dist/tools.d.ts +15 -0
  622. package/dist/tools.js +1 -0
  623. package/package.json +96 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills.js","names":[],"sources":["../../../../src/agent/define/session/skills.ts"],"sourcesContent":["import type { RunAccountingPort } from '../../accounting/contracts.ts'\nimport { SkillCatalog, type SkillLookupOptions } from '../../skill/index.ts'\nimport type { AgentDefinition } from '../definition.ts'\nimport { type AgentSessionActivatedSkillSnapshot } from './types.ts'\nimport type { AgentSessionSnapshot } from './types.ts'\nimport { AgentSdkError } from '../../../errors/agent-sdk-error.ts'\nimport { captureSkillReference } from '../../skill/provider/snapshot.ts'\n\nexport function captureResumedSkillActivations(\n skills: AgentSessionSnapshot['skills'],\n catalog: SkillCatalog | undefined,\n): readonly AgentSessionActivatedSkillSnapshot[] {\n const activations = Object.freeze([...skills?.activated ?? []].map((activation): AgentSessionActivatedSkillSnapshot =>\n activation.catalogRevision === undefined ? Object.freeze({\n id: activation.id, provider: activation.provider, source: activation.source,\n ...activation.resourceBase === undefined ? {} : {\n resourceBase: Object.freeze({ ...activation.resourceBase }),\n },\n }) : captureSkillReference(activation)))\n for (const activation of activations) {\n if (activation.catalogRevision === undefined) continue\n if (catalog === undefined) {\n throw new AgentSdkError('Persisted skill reference has no matching provider', 'SKILL_REFERENCE_INVALID')\n }\n catalog.validateReferenceOwner(activation)\n }\n return activations\n}\n\nexport async function prepareSkills(\n definition: AgentDefinition,\n catalog: SkillCatalog | undefined,\n pending: readonly AgentSessionActivatedSkillSnapshot[],\n skillLookup: (signal?: AbortSignal) => SkillLookupOptions,\n clearPending: () => void,\n signal?: AbortSignal,\n accounting?: RunAccountingPort,\n): Promise<void> {\n const operation = accounting?.startOperation('skill', { data: { action: 'discover-and-restore' } })\n const operationSignal = AbortSignal.any([\n AbortSignal.timeout(definition.skillOptions.operationTimeoutMs),\n ...signal === undefined ? [] : [signal],\n ])\n try {\n if (catalog === undefined) {\n if (pending.length > 0) {\n throw new Error(`agent '${definition.id}' cannot restore activated skills without skill sources`)\n }\n if (operation !== undefined) accounting?.endOperation(operation, 'success')\n return\n }\n for (const activation of pending) {\n if (activation.catalogRevision !== undefined) catalog.validateReferenceOwner(activation)\n }\n const lookup = skillLookup(operationSignal)\n await catalog.discover(lookup)\n if (pending.length === 0) {\n if (operation !== undefined) accounting?.endOperation(operation, 'success')\n return\n }\n for (const activation of pending) {\n if (activation.catalogRevision !== undefined) {\n await catalog.restoreReference(activation, lookup)\n continue\n }\n const summary = catalog.summaries().find(candidate => candidate.id === activation.id)\n if (summary === undefined) {\n throw new Error(`cannot restore activated skill '${activation.id}'; it is no longer available`)\n }\n if (summary.provider !== activation.provider || summary.source !== activation.source) {\n throw new Error(\n `cannot restore activated skill '${activation.id}'; its provider or source changed`,\n )\n }\n if (summary.resourceBase?.kind !== activation.resourceBase?.kind\n || summary.resourceBase?.value !== activation.resourceBase?.value) {\n throw new Error(\n `cannot restore activated skill '${activation.id}'; its resource location changed`,\n )\n }\n if (await catalog.activate(activation.id, lookup) === undefined) {\n throw new Error(`cannot restore activated skill '${activation.id}'; its definition is unavailable`)\n }\n }\n clearPending()\n if (operation !== undefined) accounting?.endOperation(operation, 'success')\n } catch (error: unknown) {\n catalog?.clearActivations()\n if (operation !== undefined) accounting?.endOperation(\n operation,\n operationSignal.aborted ? 'aborted' : 'error',\n { error },\n )\n throw error\n }\n}\n"],"mappings":"4IAQA,SAAgB,EACd,EACA,EAC+C,CAC/C,IAAM,EAAc,OAAO,OAAO,CAAC,GAAG,GAAQ,WAAa,CAAC,CAAC,CAAC,CAAC,IAAK,GAClE,EAAW,kBAAoB,IAAA,GAAY,OAAO,OAAO,CACvD,GAAI,EAAW,GAAI,SAAU,EAAW,SAAU,OAAQ,EAAW,OACrE,GAAG,EAAW,eAAiB,IAAA,GAAY,CAAC,EAAI,CAC9C,aAAc,OAAO,OAAO,CAAE,GAAG,EAAW,YAAa,CAAC,CAC5D,CACF,CAAC,EAAI,EAAsB,CAAU,CAAC,CAAC,EACzC,IAAK,IAAM,KAAc,EACnB,KAAW,kBAAoB,IAAA,GACnC,IAAI,IAAY,IAAA,GACd,MAAM,IAAI,EAAc,qDAAsD,yBAAyB,EAEzG,EAAQ,uBAAuB,CAAU,CAFgE,CAI3G,OAAO,CACT,CAEA,eAAsB,EACpB,EACA,EACA,EACA,EACA,EACA,EACA,EACe,CACf,IAAM,EAAY,GAAY,eAAe,QAAS,CAAE,KAAM,CAAE,OAAQ,sBAAuB,CAAE,CAAC,EAC5F,EAAkB,YAAY,IAAI,CACtC,YAAY,QAAQ,EAAW,aAAa,kBAAkB,EAC9D,GAAG,IAAW,IAAA,GAAY,CAAC,EAAI,CAAC,CAAM,CACxC,CAAC,EACD,GAAI,CACF,GAAI,IAAY,IAAA,GAAW,CACzB,GAAI,EAAQ,OAAS,EACnB,MAAU,MAAM,UAAU,EAAW,GAAG,wDAAwD,EAE9F,IAAc,IAAA,IAAW,GAAY,aAAa,EAAW,SAAS,EAC1E,MACF,CACA,IAAK,IAAM,KAAc,EACnB,EAAW,kBAAoB,IAAA,IAAW,EAAQ,uBAAuB,CAAU,EAEzF,IAAM,EAAS,EAAY,CAAe,EAE1C,GADA,MAAM,EAAQ,SAAS,CAAM,EACzB,EAAQ,SAAW,EAAG,CACpB,IAAc,IAAA,IAAW,GAAY,aAAa,EAAW,SAAS,EAC1E,MACF,CACA,IAAK,IAAM,KAAc,EAAS,CAChC,GAAI,EAAW,kBAAoB,IAAA,GAAW,CAC5C,MAAM,EAAQ,iBAAiB,EAAY,CAAM,EACjD,QACF,CACA,IAAM,EAAU,EAAQ,UAAU,CAAC,CAAC,KAAK,GAAa,EAAU,KAAO,EAAW,EAAE,EACpF,GAAI,IAAY,IAAA,GACd,MAAU,MAAM,mCAAmC,EAAW,GAAG,6BAA6B,EAEhG,GAAI,EAAQ,WAAa,EAAW,UAAY,EAAQ,SAAW,EAAW,OAC5E,MAAU,MACR,mCAAmC,EAAW,GAAG,kCACnD,EAEF,GAAI,EAAQ,cAAc,OAAS,EAAW,cAAc,MACvD,EAAQ,cAAc,QAAU,EAAW,cAAc,MAC5D,MAAU,MACR,mCAAmC,EAAW,GAAG,iCACnD,EAEF,GAAI,MAAM,EAAQ,SAAS,EAAW,GAAI,CAAM,IAAM,IAAA,GACpD,MAAU,MAAM,mCAAmC,EAAW,GAAG,iCAAiC,CAEtG,CACA,EAAa,EACT,IAAc,IAAA,IAAW,GAAY,aAAa,EAAW,SAAS,CAC5E,OAAS,EAAgB,CAOvB,MANA,GAAS,iBAAiB,EACtB,IAAc,IAAA,IAAW,GAAY,aACvC,EACA,EAAgB,QAAU,UAAY,QACtC,CAAE,OAAM,CACV,EACM,CACR,CACF"}
@@ -0,0 +1,2 @@
1
+ function e(e,t,n){if(n.type===`span-start`){if(n.kind!==`execute_tool`&&n.kind!==`compact`)return;let r=n.kind===`execute_tool`?`tool`:`compaction`,i=typeof n.attributes?.[`gen_ai.tool.call.id`]==`string`?n.attributes[`gen_ai.tool.call.id`]:void 0,a=e.startOperation(r,{data:{name:n.name},...i===void 0?{}:{toolCallId:i}});t.set(n.trace.spanId,a);return}if(n.type!==`span-end`)return;let r=t.get(n.trace.spanId);r!==void 0&&(t.delete(n.trace.spanId),e.endOperation(r,n.status,{...n.error===void 0?{}:{error:n.error}}))}export{e as accountTraceEvent};
2
+ //# sourceMappingURL=trace-accounting.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trace-accounting.js","names":[],"sources":["../../../../src/agent/define/session/trace-accounting.ts"],"sourcesContent":["import type { RunAccountingPort } from '../../accounting/contracts.ts'\nimport type { AgentRunEvent } from '../../mode/run-agent.ts'\n\nexport function accountTraceEvent(\n accounting: RunAccountingPort,\n spans: Map<string, string>,\n event: AgentRunEvent,\n): void {\n if (event.type === 'span-start') {\n if (event.kind !== 'execute_tool' && event.kind !== 'compact') return\n const kind = event.kind === 'execute_tool' ? 'tool' : 'compaction'\n const toolCallId = typeof event.attributes?.['gen_ai.tool.call.id'] === 'string'\n ? event.attributes['gen_ai.tool.call.id']\n : undefined\n const operationId = accounting.startOperation(kind, {\n data: { name: event.name },\n ...toolCallId === undefined ? {} : { toolCallId },\n })\n spans.set(event.trace.spanId, operationId)\n return\n }\n if (event.type !== 'span-end') return\n const operationId = spans.get(event.trace.spanId)\n if (operationId === undefined) return\n spans.delete(event.trace.spanId)\n accounting.endOperation(operationId, event.status, {\n ...event.error === undefined ? {} : { error: event.error },\n })\n}\n"],"mappings":"AAGA,SAAgB,EACd,EACA,EACA,EACM,CACN,GAAI,EAAM,OAAS,aAAc,CAC/B,GAAI,EAAM,OAAS,gBAAkB,EAAM,OAAS,UAAW,OAC/D,IAAM,EAAO,EAAM,OAAS,eAAiB,OAAS,aAChD,EAAa,OAAO,EAAM,aAAa,wBAA2B,SACpE,EAAM,WAAW,uBACjB,IAAA,GACE,EAAc,EAAW,eAAe,EAAM,CAClD,KAAM,CAAE,KAAM,EAAM,IAAK,EACzB,GAAG,IAAe,IAAA,GAAY,CAAC,EAAI,CAAE,YAAW,CAClD,CAAC,EACD,EAAM,IAAI,EAAM,MAAM,OAAQ,CAAW,EACzC,MACF,CACA,GAAI,EAAM,OAAS,WAAY,OAC/B,IAAM,EAAc,EAAM,IAAI,EAAM,MAAM,MAAM,EAC5C,IAAgB,IAAA,KACpB,EAAM,OAAO,EAAM,MAAM,MAAM,EAC/B,EAAW,aAAa,EAAa,EAAM,OAAQ,CACjD,GAAG,EAAM,QAAU,IAAA,GAAY,CAAC,EAAI,CAAE,MAAO,EAAM,KAAM,CAC3D,CAAC,EACH"}
@@ -0,0 +1,217 @@
1
+ import { JsonValue } from "../../../primitives/json.js";
2
+ import { SpanId, TraceId } from "../../../observation/context.js";
3
+ import { ObservationResource } from "../../../observation/event.js";
4
+ import { ObservationPort } from "../../../observation/port.js";
5
+ import { Message, UserMessage } from "../../../message/message.js";
6
+ import { ModelOutputFormat } from "../../../contract/output-format.js";
7
+ import { ToolDefinition } from "../../tool/definition.js";
8
+ import { SpillStore, ToolOutputOverflowPolicy } from "../../tool/output-budget.js";
9
+ import { HistoryLimits, HistorySnapshot } from "../../history/types.js";
10
+ import { History } from "../../history/history.js";
11
+ import { ApprovalBroker } from "../../tool/approval.js";
12
+ import { ToolCatalog } from "../../tool/registry.js";
13
+ import { ToolInterceptor } from "../../tool/pipeline.js";
14
+ import { RunLedgerLimits, UsagePolicy } from "../../accounting/report.js";
15
+ import { TurnHooks } from "../../loop/events.js";
16
+ import { ModelRegistry } from "../../../runtime/registry.js";
17
+ import { ContextSection } from "../../context/types.js";
18
+ import { UserInputBroker } from "../../mode/user-input.js";
19
+ import { AgentRunEvent, AgentRunOutcome } from "../../mode/run-agent.js";
20
+ import { AgentCompactionOptions } from "../../memory/compaction-config.js";
21
+ import { RunReport } from "../../accounting/delivery-types.js";
22
+ import { AgentMemory, AgentMemorySnapshot } from "../../memory/memory.js";
23
+ import { SkillResourceBase, SkillSource } from "../../skill/definition.js";
24
+ import { AgentSession } from "../session.js";
25
+ //#region src/agent/define/session/types.d.ts
26
+ type AgentInput = string | UserMessage;
27
+ /** Deployment-neutral resource guards for normal model/tool turns in one session. */
28
+ interface AgentRuntimeLimits {
29
+ readonly teardownTimeoutMs?: number;
30
+ readonly modelTimeoutMs?: number;
31
+ readonly maxModelRequestBytes?: number;
32
+ readonly maxModelResponseBytes?: number;
33
+ readonly maxModelStreamEvents?: number;
34
+ readonly maxToolResultBytes?: number;
35
+ readonly maxToolDurationMs?: number;
36
+ readonly toolTeardownTimeoutMs?: number;
37
+ readonly maxParallelToolCalls?: number;
38
+ readonly maxConsecutiveToolErrors?: number;
39
+ readonly repeatToolWarningAt?: number;
40
+ readonly repeatToolLimit?: number;
41
+ readonly toolCycleWarningAt?: number;
42
+ readonly toolCycleLimit?: number;
43
+ readonly maxToolCycleLength?: number;
44
+ /**
45
+ * Estimated tokens of text one tool result may put in front of the model;
46
+ * defaults to 10,000.
47
+ */
48
+ readonly maxToolResultTokens?: number;
49
+ /**
50
+ * What happens to a result over that budget; defaults to `auto`.
51
+ *
52
+ * `auto` spills when a spill store is mounted on the session and truncates
53
+ * when none is. `truncate` never needs a store; `spill` falls back to
54
+ * truncating rather than losing the result.
55
+ */
56
+ readonly toolResultOverflow?: ToolOutputOverflowPolicy;
57
+ /**
58
+ * What a spent tool-call budget does to the turn; defaults to
59
+ * `force-final-answer`.
60
+ *
61
+ * `continue` turns the budget into a notice rather than a wall, leaving the
62
+ * turn bounded by steps, tokens, and the run-level ledger. Long research and
63
+ * team leads want it: for them the useful call is usually the last one.
64
+ * Step/loop-guard exhaustion allows one tools-disabled final report, subject
65
+ * to token/run limits and cancellation.
66
+ */
67
+ readonly onExhausted?: 'force-final-answer' | 'stop' | 'continue';
68
+ /** Default 'auto': no aggregate token ceiling. A number sets a hard stop for
69
+ * normal rounds (including retries/finalizers), excluding compaction.
70
+ * Summary calls use compaction limits; run reports still include their usage.
71
+ * Mandatory usage policy applies to every call in the invocation. */
72
+ readonly maxTotalTokens?: number | 'auto';
73
+ /** Token headroom for one tools-disabled final report; ignored with auto total tokens. Default zero. */
74
+ readonly finalReportReserveTokens?: number;
75
+ readonly hookTimeoutMs?: number;
76
+ readonly hookTeardownTimeoutMs?: number;
77
+ /** Maximum settlement time for each host memory-store load or commit callback. */
78
+ readonly memoryOperationTimeoutMs?: number;
79
+ /** Maximum time granted to each invocation event observer. Defaults to 30 seconds. */
80
+ readonly observerTimeoutMs?: number;
81
+ }
82
+ interface AgentRunEventBufferLimits {
83
+ readonly maxEvents?: number;
84
+ readonly maxBytes?: number;
85
+ }
86
+ interface AgentSessionOptions {
87
+ readonly registry: ModelRegistry;
88
+ /** Stable application-facing id; generated automatically when omitted. */
89
+ readonly conversationId?: string;
90
+ /** Resume an existing history; otherwise the session starts empty. */
91
+ readonly history?: History;
92
+ /** In-memory append-only history resource limits. */
93
+ readonly historyLimits?: HistoryLimits;
94
+ /** Per-session model/tool resource guards; safe defaults apply when omitted. */
95
+ readonly runtimeLimits?: AgentRuntimeLimits;
96
+ /** Application tools added to the tools declared by the agent. */
97
+ readonly tools?: ToolCatalog | readonly ToolDefinition<any>[];
98
+ /** Per-session sources, filtered by the definition's skillIds when declared. */
99
+ readonly skills?: readonly SkillSource[];
100
+ /** Workspace selector forwarded to cwd-sensitive skill providers. */
101
+ readonly skillCwd?: string;
102
+ readonly userInput?: UserInputBroker;
103
+ readonly approvals?: ApprovalBroker;
104
+ /**
105
+ * Where oversized tool output is saved instead of being cut.
106
+ *
107
+ * Mounting one switches the `auto` overflow policy from truncating to
108
+ * spilling, and registers the `read_tool_output` tool so the model can read
109
+ * back what was taken out of its context.
110
+ */
111
+ readonly spillStore?: SpillStore;
112
+ readonly interceptors?: readonly ToolInterceptor[];
113
+ /**
114
+ * Model-visible context recomputed before every model round.
115
+ *
116
+ * Each section owns one surface node and rewrites it only when its content
117
+ * changes. Sections perform no I/O of their own here: a filesystem-backed
118
+ * section is built by a platform package and mounted through this option.
119
+ */
120
+ readonly contextSections?: readonly ContextSection[];
121
+ readonly hooks?: TurnHooks;
122
+ /** Pluggable delivery backend for canonical run/model/tool observations. */
123
+ readonly observation?: ObservationPort;
124
+ /** Deployment metadata attached to every canonical observation event. */
125
+ readonly observationResource?: ObservationResource;
126
+ /** Missing provider-usage behavior; defaults to a warning with unknown totals. */
127
+ readonly usagePolicy?: UsagePolicy;
128
+ /** Hard resource limits for the in-memory canonical run ledger. */
129
+ readonly ledgerLimits?: RunLedgerLimits;
130
+ /** Hard resource limits for public run events waiting on a consumer. */
131
+ readonly eventBufferLimits?: AgentRunEventBufferLimits;
132
+ /** Resume explicit task memory; otherwise definition seeds are used. */
133
+ readonly memory?: AgentMemory | AgentMemorySnapshot;
134
+ /** Override the definition's compaction policy for this conversation. */
135
+ readonly compaction?: AgentCompactionOptions | false;
136
+ readonly trace?: {
137
+ readonly traceId?: TraceId;
138
+ readonly parentSpanId?: SpanId;
139
+ };
140
+ /** Join one shared local/remote agent team and optionally expose its model tools. */
141
+ readonly team?: AgentTeamMemberOptions;
142
+ }
143
+ interface AgentSessionTeamPort {
144
+ attach(session: AgentSession, options?: AgentSessionTeamAttachmentOptions): void;
145
+ toolsFor(sender: string, access?: 'full' | 'reporting'): readonly ToolDefinition<any>[];
146
+ instructionsFor(name: string): string;
147
+ }
148
+ interface AgentSessionTeamAttachmentOptions {
149
+ readonly name?: string;
150
+ readonly description?: string;
151
+ readonly instructions?: string;
152
+ readonly role?: 'lead' | 'peer';
153
+ /**
154
+ * `false` attaches no team tools; `'reporting'` withholds the blocking verbs
155
+ * (`wait_agents`, `followup_task`), which is what an agent created for one
156
+ * bounded task needs in order to have a stopping point.
157
+ *
158
+ * Spelled out rather than imported as `TeamToolAccess`: definition/session
159
+ * ownership must not point back out at the team control plane, and the
160
+ * repository's agent-boundary check enforces that.
161
+ */
162
+ readonly tools?: boolean | 'full' | 'reporting';
163
+ }
164
+ /** Attach a session to one shared local/remote agent control plane. */
165
+ interface AgentTeamMemberOptions extends AgentSessionTeamAttachmentOptions {
166
+ readonly team: AgentSessionTeamPort;
167
+ }
168
+ /** One JSON-safe envelope containing everything needed to resume a conversation. */
169
+ interface AgentSessionSnapshot {
170
+ readonly version: 1;
171
+ readonly conversationId: string;
172
+ readonly agentId: string;
173
+ readonly history: HistorySnapshot;
174
+ readonly memory: AgentMemorySnapshot;
175
+ /** Optional in v1 so snapshots written before skill support remain valid. */
176
+ readonly skills?: {
177
+ /** Bodies/resources are never persisted here; current providers rehydrate them lazily. */
178
+ readonly activated: readonly AgentSessionActivatedSkillSnapshot[];
179
+ };
180
+ }
181
+ interface AgentSessionActivatedSkillSnapshot {
182
+ readonly id: string;
183
+ readonly provider: string;
184
+ readonly source: string;
185
+ readonly catalogRevision?: string;
186
+ readonly locator?: JsonValue;
187
+ /** Prevent a resumed session from silently switching scoped resource bundles. */
188
+ readonly resourceBase?: SkillResourceBase;
189
+ }
190
+ /** Runtime dependencies used when opening a persisted conversation. */
191
+ interface AgentResumeSessionOptions extends Omit<AgentSessionOptions, 'conversationId' | 'history' | 'memory'> {
192
+ readonly snapshot: AgentSessionSnapshot;
193
+ }
194
+ interface AgentInvocationOptions {
195
+ readonly outputFormat?: ModelOutputFormat;
196
+ readonly validateOutput?: (value: unknown) => void;
197
+ /** strict rejects known text-only models when request history contains images; project permits lossy conversion. */
198
+ readonly imagePolicy?: 'strict' | 'project';
199
+ readonly signal?: AbortSignal;
200
+ /** Observe events when using run()/runPending(); stream() already exposes them directly. */
201
+ readonly onEvent?: (event: AgentRunEvent) => void | Promise<void>;
202
+ }
203
+ interface AgentResponse {
204
+ readonly text: string;
205
+ readonly outcome: AgentRunOutcome;
206
+ readonly report: RunReport;
207
+ readonly message?: Message;
208
+ }
209
+ /** Eager single-consumer event stream with independently awaitable terminal artifacts. */
210
+ interface AgentRunHandle extends AsyncIterable<AgentRunEvent> {
211
+ readonly runId: string;
212
+ readonly result: Promise<AgentResponse>;
213
+ readonly report: Promise<RunReport>;
214
+ }
215
+ //#endregion
216
+ export { AgentInput, AgentInvocationOptions, AgentResponse, AgentResumeSessionOptions, AgentRunEventBufferLimits, AgentRunHandle, AgentRuntimeLimits, AgentSessionActivatedSkillSnapshot, AgentSessionOptions, AgentSessionSnapshot, AgentSessionTeamAttachmentOptions, AgentSessionTeamPort, AgentTeamMemberOptions };
217
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","names":[],"sources":["../../../../src/agent/define/session/types.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;KAsBY,sBAAsB;;UAGjB;WACN;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;;;;;WAKA;;;;;;;;WAQA,qBAAqB;;;;;;;;;;;WAWrB;;;;;WAKA;;WAEA;WACA;WACA;;WAEA;;WAEA;;UAGM;WACN;WACA;;UAGM;WACN,UAAU;;WAEV;;WAEA,UAAU;;WAEV,gBAAgB;;WAEhB,gBAAgB;;WAEhB,QAAQ,uBAAuB;;WAE/B,kBAAkB;;WAElB;WACA,YAAY;WACZ,YAAY;;;;;;;;WAQZ,aAAa;WACb,wBAAwB;;;;;;;;WAQxB,2BAA2B;WAC3B,QAAQ;;WAER,cAAc;;WAEd,sBAAsB;;WAEtB,cAAc;;WAEd,eAAe;;WAEf,oBAAoB;;WAEpB,SAAS,cAAc;;WAEvB,aAAa;WACb;aACE,UAAU;aACV,eAAe;;;WAGjB,OAAO;;UAGD;EACf,OAAO,SAAS,cAAc,UAAU;EACxC,SAAS,gBAAgB,yCAAyC;EAClE,gBAAgB;;UAGD;WACN;WACA;WACA;WACA;;;;;;;;;;WAUA;;;UAIM,+BAA+B;WACrC,MAAM;;;UAIA;WACN;WACA;WACA;WACA,SAAS;WACT,QAAQ;;WAER;;aAEE,oBAAoB;;;UAIhB;WACN;WACA;WACA;WACA;WACA,UAAU;;WAEV,eAAe;;;UAIT,kCACP,KAAK;WACJ,UAAU;;UAGJ;WACN,eADM;WAEN,kBAAkB;;WAElB;WACA,SAAS;;WAET,WAAW,OAAO,yBAAyB;;UAGrC;WACN;WACA,SAAS;WACT,QAAQ;WACR,UAAU;;;UAIJ,uBAAuB,cAAc;WAC3C;WACA,QAAQ,QAAQ;WAChB,QAAQ,QAAQ"}
@@ -0,0 +1,2 @@
1
+ import{captureSkillReference as e}from"../../skill/provider/snapshot.js";function t(e,t,r){if(typeof e!=`object`||!e||e.version!==1)throw TypeError(`unsupported agent session snapshot`);if(i(e.conversationId,`conversationId`,256),i(e.agentId,`agentId`,256),e.agentId!==t)throw TypeError(`cannot resume conversation for agent '${e.agentId}' with agent '${t}'`);e.skills!==void 0&&n(e.skills,r)}function n(t,n){if(!r(t)||!Array.isArray(t.activated))throw TypeError(`agent session snapshot skills.activated must be an array`);if(t.activated.length>n)throw RangeError(`agent session snapshot exceeds the ${n}-activated-skill limit`);let a=new Set;for(let n=0;n<t.activated.length;n++){let o=t.activated[n];if(!r(o))throw TypeError(`agent session snapshot skills.activated[${n}] must be an object`);if(Object.getOwnPropertyDescriptor(o,`catalogRevision`)!==void 0){e(o);let t=i(o.id,`skills.activated[${n}].id`,256);if(a.has(t))throw TypeError(`duplicate activated skill '${t}' in agent session snapshot`);a.add(t);continue}let s=i(o.id,`skills.activated[${n}].id`,256);if(i(o.provider,`skills.activated[${n}].provider`,256),i(o.source,`skills.activated[${n}].source`,8192),o.resourceBase!==void 0){if(!r(o.resourceBase)||![`directory`,`url`,`opaque`].includes(String(o.resourceBase.kind)))throw TypeError(`agent session snapshot skills.activated[${n}].resourceBase is invalid`);i(o.resourceBase.value,`skills.activated[${n}].resourceBase.value`,8192)}if(a.has(s))throw TypeError(`duplicate activated skill '${s}' in agent session snapshot`);a.add(s)}}function r(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function i(e,t,n){if(typeof e!=`string`||e.trim().length===0||e.length>n)throw TypeError(`agent session snapshot ${t} must be a non-empty string of at most ${n} characters`);return e}export{r as record,i as snapshotString,t as validateSessionSnapshot,n as validateSkillSnapshot};
2
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","names":[],"sources":["../../../../src/agent/define/session/validation.ts"],"sourcesContent":["import { type AgentSessionSnapshot } from './types.ts'\nimport { captureSkillReference } from '../../skill/provider/snapshot.ts'\n\nexport function validateSessionSnapshot(\n value: AgentSessionSnapshot,\n expectedAgentId: string,\n maxActivatedSkills: number,\n): void {\n if (typeof value !== 'object' || value === null || value.version !== 1) {\n throw new TypeError('unsupported agent session snapshot')\n }\n snapshotString(value.conversationId, 'conversationId', 256)\n snapshotString(value.agentId, 'agentId', 256)\n if (value.agentId !== expectedAgentId) {\n throw new TypeError(\n `cannot resume conversation for agent '${value.agentId}' with agent '${expectedAgentId}'`,\n )\n }\n if (value.skills !== undefined) validateSkillSnapshot(value.skills, maxActivatedSkills)\n}\n\nexport function validateSkillSnapshot(value: unknown, maxActivatedSkills: number): void {\n if (!record(value) || !Array.isArray(value.activated)) {\n throw new TypeError('agent session snapshot skills.activated must be an array')\n }\n if (value.activated.length > maxActivatedSkills) {\n throw new RangeError(\n `agent session snapshot exceeds the ${maxActivatedSkills}-activated-skill limit`,\n )\n }\n const ids = new Set<string>()\n for (let index = 0; index < value.activated.length; index++) {\n const activation = value.activated[index]\n if (!record(activation)) {\n throw new TypeError(`agent session snapshot skills.activated[${index}] must be an object`)\n }\n if (Object.getOwnPropertyDescriptor(activation, 'catalogRevision') !== undefined) {\n captureSkillReference(activation)\n const id = snapshotString(activation.id, `skills.activated[${index}].id`, 256)\n if (ids.has(id)) throw new TypeError(`duplicate activated skill '${id}' in agent session snapshot`)\n ids.add(id)\n continue\n }\n const id = snapshotString(activation.id, `skills.activated[${index}].id`, 256)\n snapshotString(activation.provider, `skills.activated[${index}].provider`, 256)\n snapshotString(activation.source, `skills.activated[${index}].source`, 8_192)\n if (activation.resourceBase !== undefined) {\n if (!record(activation.resourceBase)\n || !['directory', 'url', 'opaque'].includes(String(activation.resourceBase.kind))) {\n throw new TypeError(\n `agent session snapshot skills.activated[${index}].resourceBase is invalid`,\n )\n }\n snapshotString(\n activation.resourceBase.value,\n `skills.activated[${index}].resourceBase.value`,\n 8_192,\n )\n }\n if (ids.has(id)) throw new TypeError(`duplicate activated skill '${id}' in agent session snapshot`)\n ids.add(id)\n }\n}\n\nexport function record(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n}\n\nexport function snapshotString(value: unknown, path: string, maxLength: number): string {\n if (typeof value !== 'string' || value.trim().length === 0 || value.length > maxLength) {\n throw new TypeError(\n `agent session snapshot ${path} must be a non-empty string of at most ${maxLength} characters`,\n )\n }\n return value\n}\n"],"mappings":"yEAGA,SAAgB,EACd,EACA,EACA,EACM,CACN,GAAI,OAAO,GAAU,WAAY,GAAkB,EAAM,UAAY,EACnE,MAAU,UAAU,oCAAoC,EAI1D,GAFA,EAAe,EAAM,eAAgB,iBAAkB,GAAG,EAC1D,EAAe,EAAM,QAAS,UAAW,GAAG,EACxC,EAAM,UAAY,EACpB,MAAU,UACR,yCAAyC,EAAM,QAAQ,gBAAgB,EAAgB,EACzF,EAEE,EAAM,SAAW,IAAA,IAAW,EAAsB,EAAM,OAAQ,CAAkB,CACxF,CAEA,SAAgB,EAAsB,EAAgB,EAAkC,CACtF,GAAI,CAAC,EAAO,CAAK,GAAK,CAAC,MAAM,QAAQ,EAAM,SAAS,EAClD,MAAU,UAAU,0DAA0D,EAEhF,GAAI,EAAM,UAAU,OAAS,EAC3B,MAAU,WACR,sCAAsC,EAAmB,uBAC3D,EAEF,IAAM,EAAM,IAAI,IAChB,IAAK,IAAI,EAAQ,EAAG,EAAQ,EAAM,UAAU,OAAQ,IAAS,CAC3D,IAAM,EAAa,EAAM,UAAU,GACnC,GAAI,CAAC,EAAO,CAAU,EACpB,MAAU,UAAU,2CAA2C,EAAM,oBAAoB,EAE3F,GAAI,OAAO,yBAAyB,EAAY,iBAAiB,IAAM,IAAA,GAAW,CAChF,EAAsB,CAAU,EAChC,IAAM,EAAK,EAAe,EAAW,GAAI,oBAAoB,EAAM,MAAO,GAAG,EAC7E,GAAI,EAAI,IAAI,CAAE,EAAG,MAAU,UAAU,8BAA8B,EAAG,4BAA4B,EAClG,EAAI,IAAI,CAAE,EACV,QACF,CACA,IAAM,EAAK,EAAe,EAAW,GAAI,oBAAoB,EAAM,MAAO,GAAG,EAG7E,GAFA,EAAe,EAAW,SAAU,oBAAoB,EAAM,YAAa,GAAG,EAC9E,EAAe,EAAW,OAAQ,oBAAoB,EAAM,UAAW,IAAK,EACxE,EAAW,eAAiB,IAAA,GAAW,CACzC,GAAI,CAAC,EAAO,EAAW,YAAY,GAC9B,CAAC,CAAC,YAAa,MAAO,QAAQ,CAAC,CAAC,SAAS,OAAO,EAAW,aAAa,IAAI,CAAC,EAChF,MAAU,UACR,2CAA2C,EAAM,0BACnD,EAEF,EACE,EAAW,aAAa,MACxB,oBAAoB,EAAM,sBAC1B,IACF,CACF,CACA,GAAI,EAAI,IAAI,CAAE,EAAG,MAAU,UAAU,8BAA8B,EAAG,4BAA4B,EAClG,EAAI,IAAI,CAAE,CACZ,CACF,CAEA,SAAgB,EAAO,EAAkD,CACvE,OAAO,OAAO,GAAU,YAAY,GAAkB,CAAC,MAAM,QAAQ,CAAK,CAC5E,CAEA,SAAgB,EAAe,EAAgB,EAAc,EAA2B,CACtF,GAAI,OAAO,GAAU,UAAY,EAAM,KAAK,CAAC,CAAC,SAAW,GAAK,EAAM,OAAS,EAC3E,MAAU,UACR,0BAA0B,EAAK,yCAAyC,EAAU,YACpF,EAEF,OAAO,CACT"}
@@ -0,0 +1,77 @@
1
+ import { History } from "../history/history.js";
2
+ import { CompactionResult } from "../memory/compaction.js";
3
+ import { AgentMemory } from "../memory/memory.js";
4
+ import { SkillCatalog } from "../skill/catalog.js";
5
+ import { AgentDefinition } from "./definition.js";
6
+ import { AgentInput, AgentInvocationOptions, AgentResponse, AgentResumeSessionOptions, AgentRunHandle, AgentRuntimeLimits, AgentSessionActivatedSkillSnapshot, AgentSessionOptions, AgentSessionSnapshot, AgentTeamMemberOptions } from "./session/types.js";
7
+ //#region src/agent/define/session.d.ts
8
+ declare class AgentSession {
9
+ readonly definition: AgentDefinition;
10
+ private readonly options;
11
+ private readonly catalog;
12
+ private activeRuntimeCatalog;
13
+ private readonly skillCatalog;
14
+ private readonly runtimeLimits;
15
+ /** Definition sections first, then session sections; duplicate ids are rejected. */
16
+ private readonly contextSections;
17
+ private currentHistory;
18
+ private currentMemory;
19
+ private currentConversationId;
20
+ private compactor;
21
+ private pendingSkillActivations;
22
+ private active;
23
+ private activeAdditionalInstructions;
24
+ private readonly idleWaiters;
25
+ constructor(definition: AgentDefinition, options: AgentSessionOptions);
26
+ /** Restore a JSON-round-tripped session snapshot with fresh runtime dependencies. */
27
+ static fromSnapshot(definition: AgentDefinition, options: AgentResumeSessionOptions): AgentSession;
28
+ /** Stable identity for persistence keys, URLs, logs, and GUI trace grouping. */
29
+ get conversationId(): string;
30
+ /** Mutable append-only history owned by this conversation. */
31
+ get history(): History;
32
+ /** Durable task facts injected into every request outside compactable history. */
33
+ get memory(): AgentMemory;
34
+ /** Refreshable skill catalog for host UIs and explicit user invocation surfaces. */
35
+ get skills(): SkillCatalog | undefined;
36
+ /** Whether a model/tool turn currently owns this session. */
37
+ get isRunning(): boolean;
38
+ /** Capture one JSON-safe envelope that can be passed to `agent.resumeSession()`. */
39
+ snapshot(): AgentSessionSnapshot;
40
+ /** Start a fresh conversation without rebuilding provider/tool configuration. */
41
+ reset(): void;
42
+ /** Create one explicit context checkpoint while the session is idle. */
43
+ compact(invocation?: AgentInvocationOptions): Promise<CompactionResult | null>;
44
+ private compactForRuntime;
45
+ /**
46
+ * Append attributed context without starting a turn.
47
+ *
48
+ * A2A quiet delivery uses this primitive. The returned history sequence is a
49
+ * delivery receipt and lets wake-up schedulers coalesce messages safely.
50
+ */
51
+ inject(input: AgentInput): number;
52
+ /** Resolve after the current run releases the session. */
53
+ whenIdle(signal?: AbortSignal): Promise<void>;
54
+ /** Start an eager run and expose both public events and its canonical terminal report. */
55
+ stream(input: AgentInput, invocation?: AgentInvocationOptions): AgentRunHandle;
56
+ /** Process context already appended with {@link inject} without duplicating it. */
57
+ streamPending(invocation?: AgentInvocationOptions): AgentRunHandle;
58
+ /** Run one user turn and return the terminal response. */
59
+ run(input: AgentInput, invocation?: AgentInvocationOptions): Promise<AgentResponse>;
60
+ /** Run one turn over already-injected context and return its terminal response. */
61
+ runPending(invocation?: AgentInvocationOptions): Promise<AgentResponse>;
62
+ private createRunHandle;
63
+ private releaseRun;
64
+ private createLedger;
65
+ private runDefinition;
66
+ private createCompactor;
67
+ private effectiveCatalog;
68
+ private combinedHooks;
69
+ private callConfig;
70
+ private systemInstructions;
71
+ private skillLookup;
72
+ private activationSnapshot;
73
+ private prepareSkills;
74
+ }
75
+ //#endregion
76
+ export { type AgentInput, type AgentInvocationOptions, type AgentResponse, type AgentResumeSessionOptions, type AgentRunHandle, type AgentRuntimeLimits, AgentSession, type AgentSessionOptions, type AgentSessionSnapshot, type AgentTeamMemberOptions };
77
+ //# sourceMappingURL=session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.d.ts","names":[],"sources":["../../../src/agent/define/session.ts"],"mappings":";;;;;;;cAkDa;WACF,YAAY;mBACJ;mBACA;UACT;mBACS;mBACA;;mBAEA;UACT;UACA;UACA;UACA;UACA;UACA;UACA;mBACS;EAEjB,YAAY,YAAY,iBAAiB,SAAS;;SA0F3C,aACL,YAAY,iBACZ,SAAS,4BACR;;MAcC;;MAGA,WAAW;;MAGX,UAAU;;MAGV,UAAU;;MAGV;;EAGJ,YAAY;;EAkBZ;;EAWM,QAAQ,aAAY,yBAA8B,QAAQ;UAWlD;;;;;;;EAwBd,OAAO,OAAO;;EAOd,SAAS,SAAS,cAAc;;EAyBhC,OAAO,OAAO,YAAY,aAAY,yBAA8B;;EAKpE,cAAc,aAAY,yBAA8B;;EAKlD,IAAI,OAAO,YAAY,aAAY,yBAA8B,QAAQ;;EAOzE,WAAW,aAAY,yBAA8B,QAAQ;UAM3D;UAqMA;UAWA;UAWA;UAyGA;UAuBA;UAIA;UAwCA;UAEA;UAeA;UAOA;UAkBM"}
@@ -0,0 +1,2 @@
1
+ import{waitForSettlement as e}from"../../async/settlement.js";import{ModelError as t}from"../../errors/model-error.js";import{contentHasImage as n}from"../../message/projection.js";import{AgentMemory as r}from"../memory/memory.js";import{normalizeToolPairing as i}from"../history/normalize.js";import{bindCompactionAccounting as a}from"../memory/accounting-binding.js";import{ContextCompactor as o}from"../memory/compaction.js";import{resolveCompactionConfig as s}from"../memory/compaction-config.js";import{bindSkillProviderLogger as c}from"../skill/provider/context.js";import{SkillCatalog as l}from"../skill/catalog.js";import{createSkillTools as u,renderSkillCatalog as d}from"../skill/tools.js";import{createRunTerminalRecord as f,withTerminalDelivery as p}from"../accounting/delivery/terminal.js";import{captureContextSections as m}from"../context/section.js";import{History as h}from"../history/history.js";import{AGENT_ACCOUNTING_ERROR_CODES as g,AgentRunError as _}from"../accounting/error.js";import{runAgent as v}from"../mode/run-agent.js";import{RunEventBuffer as y}from"../accounting/event-buffer.js";import{validateSessionSnapshot as b}from"./session/validation.js";import{resolveRuntimeLimits as x}from"./session/config.js";import{conversationId as S,deferred as C,errorCodeOf as w,messageOf as T,newConversationId as E,toolCatalog as D,userMessage as O}from"./session/common.js";import{captureResumedSkillActivations as k,prepareSkills as A}from"./session/skills.js";import{appendRunInstructions as j}from"./instructions.js";import{accountTraceEvent as M}from"./session/trace-accounting.js";import{captureResumedObjective as N,commitRuntimeMemory as P,loadRuntimeMemory as F,renderRuntimeMemory as I}from"./session/runtime-memory.js";import{attachRuntimeSession as L,configureRuntimeSessionModel as R,runtimeSessionConfiguration as z,streamRuntimeSession as B}from"./session/runtime-binding.js";import{createSessionLedger as V}from"./session/accounting.js";import{runRuntimeCompaction as H}from"./session/runtime-compaction.js";import{sessionCallConfig as U}from"./session/model-config.js";import{consumeSessionEvents as W}from"./session/observer.js";import{sealRuntimeRun as G}from"./session/run-seal.js";var K=class R{definition;options;catalog;activeRuntimeCatalog;skillCatalog;runtimeLimits;contextSections;currentHistory;currentMemory;currentConversationId;compactor;pendingSkillActivations=Object.freeze([]);active=!1;activeAdditionalInstructions;idleWaiters=new Set;constructor(e,t){if(e.mode===`deep-human-in-loop`&&t.userInput===void 0)throw TypeError(`agent '${e.id}' requires a userInput broker in deep-human-in-loop mode`);this.definition=e;let n=t.historyLimits===void 0?void 0:Object.freeze({...t.historyLimits});t.history!==void 0&&n!==void 0&&new h(n);let i=t.compaction===void 0||t.compaction===!1?t.compaction:Object.freeze({...t.compaction}),a=t.trace===void 0?void 0:Object.freeze({...t.trace}),o=t.team===void 0?void 0:Object.freeze({...t.team}),s=t.ledgerLimits===void 0?void 0:Object.freeze({...t.ledgerLimits}),c=t.eventBufferLimits===void 0?void 0:Object.freeze({...t.eventBufferLimits});this.options=Object.freeze({...t,...n===void 0?{}:{historyLimits:n},...i===void 0?{}:{compaction:i},...a===void 0?{}:{trace:a},...o===void 0?{}:{team:o},...s===void 0?{}:{ledgerLimits:s},...c===void 0?{}:{eventBufferLimits:c},...t.skills===void 0?{}:{skills:Object.freeze([...t.skills])},...Array.isArray(t.tools)?{tools:Object.freeze([...t.tools])}:{},...t.interceptors===void 0?{}:{interceptors:Object.freeze([...t.interceptors])}}),this.runtimeLimits=x(t.runtimeLimits);let d=m(t.contextSections)??[],f=m(e.contextSections)??[],p=[...f.map(e=>d.find(t=>t.id===e.id)??e),...d.filter(e=>!f.some(t=>t.id===e.id))];this.contextSections=p.length===0?void 0:Object.freeze(p),this.currentConversationId=S(t.conversationId),this.currentHistory=t.history??new h(n);let g=[...e.skills,...t.skills??[]],_=e.skillIds?.length===0,v=g.length>0||(e.skillIds?.length??0)>0;this.skillCatalog=_||!v?void 0:new l(g,{...e.skillIds===void 0?{}:{allowedSkillIds:e.skillIds},maxSkills:e.skillOptions.maxSkills,maxCatalogBytes:e.skillOptions.maxDiscoveryBytes});let y=this.skillCatalog===void 0?[]:u(this.skillCatalog,e.skillOptions,()=>this.skillLookup()),b=t.team?.tools===`reporting`?`reporting`:`full`,C=t.team?.tools===!1?[]:t.team?.team.toolsFor(t.team.name??e.id,b)??[];this.catalog=D(e.tools,t.tools,[...y,...C]),this.currentMemory=t.memory instanceof r?t.memory:t.memory===void 0?new r(e.memory.seed,e.memory):r.fromSnapshot(t.memory,e.memory),N(this.currentMemory,this.currentHistory,this.definition.memory.autoCaptureObjective),this.compactor=this.createCompactor(),L(this,(e,t,n)=>this.createRunHandle(e,t,n),e=>this.createRunHandle(void 0,e),e=>this.compactForRuntime(e),()=>{this.compactor=this.createCompactor()}),t.team?.team.attach(this,{...t.team.name===void 0?{}:{name:t.team.name},...t.team.description===void 0?{}:{description:t.team.description},...t.team.instructions===void 0?{}:{instructions:t.team.instructions},...t.team.role===void 0?{}:{role:t.team.role},...t.team.tools===void 0?{}:{tools:t.team.tools}})}static fromSnapshot(e,t){let{snapshot:n,...i}=t;b(n,e.id,e.skillOptions.maxSkills);let a=new R(e,{...i,conversationId:n.conversationId,history:h.fromSnapshot(n.history,i.historyLimits),memory:r.fromSnapshot(n.memory,e.memory)});return a.pendingSkillActivations=k(n.skills,a.skillCatalog),a}get conversationId(){return this.currentConversationId}get history(){return this.currentHistory}get memory(){return this.currentMemory}get skills(){return this.skillCatalog}get isRunning(){return this.active}snapshot(){let e=this.activationSnapshot();return Object.freeze({version:1,conversationId:this.currentConversationId,agentId:this.definition.id,history:this.currentHistory.snapshot(),memory:this.currentMemory.snapshot(),...z(this)?.memory===void 0?{}:{memoryBindingId:z(this).memory.bindingId},...e.length===0?{}:{skills:Object.freeze({activated:e})}})}reset(){if(this.active)throw Error(`cannot reset an agent session while a run is active`);this.currentConversationId=E(),this.currentHistory=new h(this.options.historyLimits),this.currentMemory=new r(this.definition.memory.seed,this.definition.memory),this.pendingSkillActivations=Object.freeze([]),this.skillCatalog?.clearActivations(),this.compactor=this.createCompactor()}async compact(e={}){if(this.active)throw Error(`cannot compact an agent session while a run is active`);this.active=!0;try{return await this.prepareSkills(e.signal),await this.compactor?.compactNow(e.signal)??null}finally{this.releaseRun()}}async compactForRuntime(e){if(this.active)throw Error(`cannot compact an agent session while a run is active`);let t=this.createLedger();this.active=!0,this.compactor!==void 0&&a(this.compactor,t),this.skillCatalog!==void 0&&c(this.skillCatalog,t.modelInvocation.logger);try{return await H({...this.compactor===void 0?{}:{compactor:this.compactor},invocation:e,accounting:t,prepare:()=>this.prepareSkills(e.signal,t)})}finally{this.releaseRun()}}inject(e){let t=O(e);return this.currentHistory.append({kind:`user`,message:t}),this.currentHistory.entries().length}whenIdle(e){return this.active?e?.aborted?Promise.reject(e.reason):new Promise((t,n)=>{let r=!1,i=()=>{r||(r=!0,this.idleWaiters.delete(i),e?.removeEventListener(`abort`,a),t())},a=()=>{r||(r=!0,this.idleWaiters.delete(i),n(e?.reason))};this.idleWaiters.add(i),e?.addEventListener(`abort`,a,{once:!0}),this.active||i()}):Promise.resolve()}stream(e,t={}){return this.createRunHandle(e,t)}streamPending(e={}){return this.createRunHandle(void 0,e)}async run(e,t={}){let n=this.stream(e,t);return await W(n,t.onEvent,this.runtimeLimits.observerTimeoutMs??3e4),await n.result}async runPending(e={}){let t=this.streamPending(e);return await W(t,e.onEvent,this.runtimeLimits.observerTimeoutMs??3e4),await t.result}createRunHandle(r,i,o){if(this.active)throw Error(`agent session '${this.definition.id}' is already running`);let s=this.currentHistory.entries().length+1,l=new AbortController,u=!1,d=i.signal===void 0?l.signal:AbortSignal.any([i.signal,l.signal]),m=new y(this.options.eventBufferLimits?.maxEvents,this.options.eventBufferLimits?.maxBytes),h=C(),v=C(),b=C(),x=this.createLedger(),S=Object.freeze([]);this.compactor!==void 0&&a(this.compactor,x),this.skillCatalog!==void 0&&c(this.skillCatalog,x.modelInvocation.logger),this.active=!0,this.activeAdditionalInstructions=o;let E=new Map,k=(async()=>{let e,a,o;try{let e=z(this);if(e?.memory!==void 0){let t=await F(e.memory,this.currentConversationId,this.definition.memory,d,x);o=t.state,t.memory!==void 0&&(this.currentMemory=t.memory)}if(e?.prepareTools!==void 0){let t=x.modelInvocation.logger;if(t===void 0)throw Error(`runtime tool source logger is unavailable`);let n=e.prepareTools(d,t,[...this.catalog?.names()??[],...this.definition.nativeTools.map(e=>e.name)]);this.activeRuntimeCatalog=D([],this.catalog,n.tools),S=n.references}if(b.resolve(S),await this.prepareSkills(d,x),r!==void 0){let e=O(r);if(this.definition.memory.autoCaptureObjective){let t=x.startOperation(`memory`,{data:{action:`capture-objective`}});try{this.currentMemory.captureOriginalObjective(e),x.endOperation(t,`success`)}catch(e){throw x.endOperation(t,`error`,{error:e}),e}}this.currentHistory.append({kind:`user`,message:e})}if(i.imagePolicy===`strict`&&this.history.messages().some(e=>n(e.content))){let e=this.callConfig(),n=await this.options.registry.resolveModelInfo(e.provider,e.model,d);if(n.inputModalities!==void 0&&!n.inputModalities.includes(`image`))throw new t(`model ${n.id} does not support required image input`,`UNSUPPORTED_IMAGE_INPUT`)}for await(let e of this.runDefinition({...i,signal:d},x))M(x,E,e),e.type===`agent-end`&&(a=e.outcome),m.push(e);if(a===void 0)throw Error(`agent session '${this.definition.id}' ended without agent-end`);if(d.aborted)throw d.reason??Error(`agent run was aborted`);if(a.reason.kind===`error`&&a.reason.failure.code===`USAGE_REQUIRED`){let e=Error(a.reason.failure.message);throw e.code=`USAGE_REQUIRED`,e}e?.memory!==void 0&&o!==void 0&&o.status!==`disabled`&&await P(e.memory,this.currentConversationId,this.currentMemory.snapshot(),o,d,x)}catch(t){e=t,b.resolve(S)}let c;try{let t=d.aborted||a?.reason.kind===`aborted`?`aborted`:e!==void 0||a?.reason.kind===`error`?`error`:`success`,n=await x.finalize(t,a?.completed??!1,e);c=p(f(n),n.delivery),h.resolve(c)}catch(e){h.reject(e),v.reject(e),m.fail(e),u=!0,this.releaseRun();return}if(!u){if(e===void 0&&x.terminalAuditFailure){let t=Error(`audit observation checkpoint failed after run finalization`);t.code=`OBSERVABILITY_AUDIT_UNAVAILABLE`,e=t}if(e!==void 0){let t=new _(T(e),w(e)??g.RUN_FAILED,c,{cause:e});v.reject(t),m.fail(t)}else{let e=a,t=[...this.currentHistory.entries()].reverse().find(e=>e.seq>=s&&e.event.kind===`assistant`)?.event,n=t?.kind===`assistant`?t.message:void 0,r=Object.freeze({text:e.text,outcome:e,report:c,...n===void 0?{}:{message:n}});v.resolve(r),m.close()}u=!0,this.releaseRun()}})();k.catch(e=>{u||(h.reject(e),v.reject(e),m.fail(e),u=!0,this.releaseRun())}),v.promise.catch(()=>void 0),h.promise.catch(()=>void 0);let A=!1;return Object.freeze({runId:x.runId,traceId:x.traceId,toolSourceSnapshots:b.promise,eventsSettled:k.then(()=>void 0,()=>void 0),result:v.promise,report:h.promise,seal:()=>G({ledger:x,buffer:m,report:h,result:v,toolSources:b,currentToolSources:()=>S,isTerminal:()=>u,markTerminal:()=>{u=!0},abort:()=>l.abort(Error(`Agent run was sealed`)),release:()=>this.releaseRun()}),abort(e){!u&&!l.signal.aborted&&l.abort(Error(`Agent run was aborted`))},[Symbol.asyncIterator](){return A?(async function*(){throw Error(`an agent run handle can only be iterated once`)})():(A=!0,(async function*(){let t=!1;try{for(;;){let e=await m.take();if(e.done){t=!0;break}yield e.value}}finally{t||(l.abort(Error(`agent event consumer stopped`)),m.stop(),await e(k,3e4))}})())}})}releaseRun(){this.active=!1,this.activeAdditionalInstructions=void 0,this.activeRuntimeCatalog=void 0,this.skillCatalog!==void 0&&c(this.skillCatalog,void 0),this.compactor!==void 0&&a(this.compactor,void 0);let e=[...this.idleWaiters];this.idleWaiters.clear();for(let t of e)t()}createLedger(){let e=z(this);return V({definition:this.definition,options:this.options,runtimeLimits:this.runtimeLimits,conversationId:this.currentConversationId,...e===void 0?{}:{runtime:e}})}runDefinition(e,t){let n=this.definition,r=this.combinedHooks(t),i=this.effectiveCatalog(),a=e.outputFormat??n.outputFormat,o={registry:this.options.registry,config:this.callConfig(),history:this.history,...i===void 0?{}:{tools:i},...n.nativeTools.length===0?{}:{nativeTools:n.nativeTools},...n.toolChoice===void 0?{}:{toolChoice:n.toolChoice},...e.imagePolicy===void 0?{}:{imagePolicy:e.imagePolicy},...a===void 0?{}:{outputFormat:a},...e.validateOutput===void 0?{}:{validateOutput:e.validateOutput},system:this.systemInstructions(this.activeAdditionalInstructions),maxTurns:n.maxTurns,bounds:{maxToolCalls:n.maxToolCalls,...this.runtimeLimits.maxParallelToolCalls===void 0?{}:{maxParallel:this.runtimeLimits.maxParallelToolCalls},...this.runtimeLimits.maxConsecutiveToolErrors===void 0?{}:{maxConsecutiveToolErrors:this.runtimeLimits.maxConsecutiveToolErrors},...this.runtimeLimits.repeatToolWarningAt===void 0?{}:{repeatToolWarningAt:this.runtimeLimits.repeatToolWarningAt},...this.runtimeLimits.repeatToolLimit===void 0?{}:{repeatToolLimit:this.runtimeLimits.repeatToolLimit},...this.runtimeLimits.toolCycleWarningAt===void 0?{}:{toolCycleWarningAt:this.runtimeLimits.toolCycleWarningAt},...this.runtimeLimits.toolCycleLimit===void 0?{}:{toolCycleLimit:this.runtimeLimits.toolCycleLimit},...this.runtimeLimits.onExhausted===void 0?{}:{onExhausted:this.runtimeLimits.onExhausted},...this.runtimeLimits.maxToolResultTokens===void 0?{}:{maxToolResultTokens:this.runtimeLimits.maxToolResultTokens},...this.runtimeLimits.toolResultOverflow===void 0?{}:{toolResultOverflow:this.runtimeLimits.toolResultOverflow},...this.runtimeLimits.maxToolCycleLength===void 0?{}:{maxToolCycleLength:this.runtimeLimits.maxToolCycleLength},...this.runtimeLimits.finalReportReserveTokens===void 0?{}:{finalReportReserveTokens:this.runtimeLimits.finalReportReserveTokens},...this.runtimeLimits.maxTotalTokens===void 0?{}:{maxTotalTokens:this.runtimeLimits.maxTotalTokens},...this.runtimeLimits.maxToolResultBytes===void 0?{}:{maxToolResultBytes:this.runtimeLimits.maxToolResultBytes},...this.runtimeLimits.maxToolDurationMs===void 0?{}:{maxToolDurationMs:this.runtimeLimits.maxToolDurationMs},...this.runtimeLimits.toolTeardownTimeoutMs===void 0?{}:{toolTeardownTimeoutMs:this.runtimeLimits.toolTeardownTimeoutMs}},commentary:n.commentary,...this.runtimeLimits.teardownTimeoutMs===void 0?{}:{teardownTimeoutMs:this.runtimeLimits.teardownTimeoutMs},...this.runtimeLimits.modelTimeoutMs===void 0?{}:{modelTimeoutMs:this.runtimeLimits.modelTimeoutMs},...this.runtimeLimits.maxModelRequestBytes===void 0?{}:{maxModelRequestBytes:this.runtimeLimits.maxModelRequestBytes},...this.runtimeLimits.maxModelResponseBytes===void 0?{}:{maxModelResponseBytes:this.runtimeLimits.maxModelResponseBytes},...this.runtimeLimits.maxModelStreamEvents===void 0?{}:{maxModelStreamEvents:this.runtimeLimits.maxModelStreamEvents},...this.runtimeLimits.hookTimeoutMs===void 0?{}:{hookTimeoutMs:this.runtimeLimits.hookTimeoutMs},...this.runtimeLimits.hookTeardownTimeoutMs===void 0?{}:{hookTeardownTimeoutMs:this.runtimeLimits.hookTeardownTimeoutMs},...this.options.approvals===void 0?{}:{approvals:this.options.approvals},...this.options.spillStore===void 0?{}:{spillStore:this.options.spillStore},...this.options.interceptors===void 0?{}:{interceptors:this.options.interceptors},...this.contextSections===void 0?{}:{contextSections:this.contextSections},...r===void 0?{}:{hooks:r},...e.signal===void 0?{}:{signal:e.signal},...t===void 0?{}:{accounting:t},...t?.modelInvocation.logger===void 0?{}:{logger:t.modelInvocation.logger},trace:{...this.options.trace,conversationId:this.currentConversationId,agentId:n.id,agentName:n.name}};return n.mode===`deep-human-in-loop`?v({...o,mode:n.mode,userInput:this.options.userInput}):n.mode===`deep`?v({...o,mode:n.mode,...this.options.userInput===void 0?{}:{userInput:this.options.userInput}}):v({...o,mode:`basic`})}createCompactor(){let e=this.options.compaction===!1?!1:this.options.compaction===void 0?this.definition.compaction:s(this.options.compaction);if(e!==!1)return new o({registry:this.options.registry,config:this.callConfig(),history:()=>this.currentHistory,system:()=>this.systemInstructions(this.activeAdditionalInstructions),pinnedMessages:()=>I(this.currentMemory,this.definition.memory.maxInjectedChars),tools:()=>[...this.effectiveCatalog()?.schemas()??[],...this.definition.nativeTools],policy:e})}effectiveCatalog(){return this.activeRuntimeCatalog??this.catalog}combinedHooks(e){let t=this.options.hooks;if(this.compactor!==void 0||t!==void 0||this.currentMemory.items().length!==0)return{...t,beforeStep:async n=>{let r=this.currentHistory.generation();if(this.compactor!==void 0&&a(this.compactor,e),await this.compactor?.beforeStep(n),e?.usageStop!==void 0)return{kind:`proceed`};let o=this.currentHistory.generation()===r?n:{...n,messages:i(this.currentHistory.messages()),snapshot:this.currentHistory.snapshot()},s=I(this.currentMemory,this.definition.memory.maxInjectedChars,e),c=s.length===0?o:{...o,messages:Object.freeze([...s,...o.messages])},l=await t?.beforeStep?.(c)??{kind:`proceed`};if(l.kind===`reject`)return l;let u=[...s,...l.prepend??[]];return u.length===0?l:{kind:`proceed`,prepend:u}},onRequestError:async n=>{this.compactor!==void 0&&a(this.compactor,e);let r=await this.compactor?.onRequestError(n);return e?.usageStop===void 0?r===`retry`?`retry`:await t?.onRequestError?.(n)??`fail`:`fail`}}}callConfig(){return U(this.definition,z(this))}systemInstructions(e){let t=this.skillCatalog===void 0?this.definition.instructions:d(this.definition.instructions,this.skillCatalog.summaries(),this.definition.skillOptions),n=this.options.team,r=n===void 0?t:`${t}\n\n${n.team.instructionsFor(n.name??this.definition.id)}`;return j(r,e)}skillLookup(e){return{...this.options.skillCwd===void 0?{}:{cwd:this.options.skillCwd},...e===void 0?{}:{signal:e}}}activationSnapshot(){let e=new Map;for(let t of this.pendingSkillActivations)e.set(t.id,t);for(let t of this.skillCatalog?.activatedSkillReferences()??[])e.set(t.id,t);for(let t of this.skillCatalog?.activatedSummaries()??[])e.has(t.id)||e.set(t.id,Object.freeze({id:t.id,provider:t.provider,source:t.source,...t.resourceBase===void 0?{}:{resourceBase:Object.freeze({...t.resourceBase})}}));return Object.freeze([...e.values()].sort((e,t)=>e.id.localeCompare(t.id)))}async prepareSkills(e,t){await A(this.definition,this.skillCatalog,this.pendingSkillActivations,e=>this.skillLookup(e),()=>{this.pendingSkillActivations=Object.freeze([])},e,t)}};export{K as AgentSession,R as configureRuntimeSessionModel,B as streamRuntimeSession};
2
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","names":[],"sources":["../../../src/agent/define/session.ts"],"sourcesContent":["import { contentHasImage } from '../../message/projection.ts'\nimport { ModelError } from '../../errors/model-error.ts'\nimport { type ToolCatalog } from '../tool/registry.ts'\nimport { History } from '../history/history.ts'\nimport { normalizeToolPairing } from '../history/normalize.ts'\nimport type { TurnHooks } from '../loop/types.ts'\nimport { ContextCompactor, type CompactionResult } from '../memory/compaction.ts'\nimport { bindCompactionAccounting } from '../memory/accounting-binding.ts'\nimport { resolveCompactionConfig } from '../memory/compaction-config.ts'\nimport { AgentMemory } from '../memory/memory.ts'\nimport { captureContextSections } from '../context/section.ts'\nimport type { ContextSection } from '../context/types.ts'\nimport { runAgent, type AgentRunEvent, type AgentRunOutcome } from '../mode/run-agent.ts'\nimport type { UserInputBroker } from '../mode/user-input.ts'\nimport { waitForSettlement } from '../../async/index.ts'\nimport type { OperationStatus } from '../../observation/index.ts'\nimport { RunEventBuffer } from '../accounting/event-buffer.ts'\nimport { AgentRunError, AGENT_ACCOUNTING_ERROR_CODES } from '../accounting/error.ts'\nimport type { RunAccountingPort } from '../accounting/contracts.ts'\nimport type { LegacyRunReport } from '../accounting/report.ts'\nimport type { RunReport } from '../accounting/delivery-types.ts'\nimport { createRunTerminalRecord, withTerminalDelivery } from '../accounting/delivery/terminal.ts'\nimport { SkillCatalog, createSkillTools, renderSkillCatalog, type SkillLookupOptions } from '../skill/index.ts'\nimport type { AgentDefinition } from './definition.ts'\nimport {\n type AgentInput, type AgentRuntimeLimits, type AgentSessionOptions, type AgentSessionSnapshot,\n type AgentSessionActivatedSkillSnapshot, type AgentResumeSessionOptions,\n type AgentInvocationOptions, type AgentResponse, type AgentRunHandle,\n} from './session/types.ts'\nimport { validateSessionSnapshot } from './session/validation.ts'\nimport { resolveRuntimeLimits } from './session/config.ts'\nimport {\n conversationId, newConversationId, userMessage, deferred, messageOf, errorCodeOf,\n toolCatalog,\n} from './session/common.ts'\nimport { captureResumedSkillActivations, prepareSkills } from './session/skills.ts'\nimport { appendRunInstructions } from './instructions.ts'\nimport type { ToolSourceRunReference } from '../tool/source-types.ts'\nimport { accountTraceEvent } from './session/trace-accounting.ts'\nimport {\n captureResumedObjective, commitRuntimeMemory, loadRuntimeMemory, renderRuntimeMemory,\n} from './session/runtime-memory.ts'\nimport { attachRuntimeSession, runtimeSessionConfiguration } from './session/runtime-binding.ts'\nimport { bindSkillProviderLogger } from '../skill/provider/context.ts'\nimport { createSessionLedger } from './session/accounting.ts'\nimport { runRuntimeCompaction } from './session/runtime-compaction.ts'\nimport { sessionCallConfig } from './session/model-config.ts'\nimport { consumeSessionEvents } from './session/observer.ts'\nimport { sealRuntimeRun } from './session/run-seal.ts'\n\nexport class AgentSession {\n readonly definition: AgentDefinition\n private readonly options: AgentSessionOptions\n private readonly catalog: ToolCatalog | undefined\n private activeRuntimeCatalog: ToolCatalog | undefined\n private readonly skillCatalog: SkillCatalog | undefined\n private readonly runtimeLimits: Readonly<AgentRuntimeLimits>\n /** Definition sections first, then session sections; duplicate ids are rejected. */\n private readonly contextSections: readonly ContextSection[] | undefined\n private currentHistory: History\n private currentMemory: AgentMemory\n private currentConversationId: string\n private compactor: ContextCompactor | undefined\n private pendingSkillActivations: readonly AgentSessionActivatedSkillSnapshot[] = Object.freeze([])\n private active = false\n private activeAdditionalInstructions: string | undefined\n private readonly idleWaiters = new Set<() => void>()\n\n constructor(definition: AgentDefinition, options: AgentSessionOptions) {\n if (definition.mode === 'deep-human-in-loop' && options.userInput === undefined) {\n throw new TypeError(`agent '${definition.id}' requires a userInput broker in deep-human-in-loop mode`)\n }\n this.definition = definition\n const historyLimits = options.historyLimits === undefined\n ? undefined\n : Object.freeze({ ...options.historyLimits })\n // Validate reset-time policy even when the initial History was supplied by\n // the host, and detach mutable option containers from the caller.\n if (options.history !== undefined && historyLimits !== undefined) void new History(historyLimits)\n const compaction = options.compaction === undefined || options.compaction === false\n ? options.compaction\n : Object.freeze({ ...options.compaction })\n const trace = options.trace === undefined ? undefined : Object.freeze({ ...options.trace })\n const team = options.team === undefined ? undefined : Object.freeze({ ...options.team })\n const ledgerLimits = options.ledgerLimits === undefined ? undefined : Object.freeze({ ...options.ledgerLimits })\n const eventBufferLimits = options.eventBufferLimits === undefined\n ? undefined\n : Object.freeze({ ...options.eventBufferLimits })\n this.options = Object.freeze({\n ...options,\n ...(historyLimits === undefined ? {} : { historyLimits }),\n ...(compaction === undefined ? {} : { compaction }),\n ...(trace === undefined ? {} : { trace }),\n ...(team === undefined ? {} : { team }),\n ...(ledgerLimits === undefined ? {} : { ledgerLimits }),\n ...(eventBufferLimits === undefined ? {} : { eventBufferLimits }),\n ...(options.skills === undefined ? {} : { skills: Object.freeze([...options.skills]) }),\n ...(Array.isArray(options.tools) ? { tools: Object.freeze([...options.tools]) } : {}),\n ...(options.interceptors === undefined ? {} : { interceptors: Object.freeze([...options.interceptors]) }),\n })\n this.runtimeLimits = resolveRuntimeLimits(options.runtimeLimits)\n // A session may replace a definition section by reusing its id: the\n // definition describes the agent, the session describes where it is\n // running, and the more specific one wins in place. Two sections with one\n // id inside the *same* list stays an error — a single live surface node\n // cannot have two owners.\n const overrides = captureContextSections(options.contextSections) ?? []\n const base = captureContextSections(definition.contextSections) ?? []\n const merged = [\n ...base.map(section => overrides.find(override => override.id === section.id) ?? section),\n ...overrides.filter(override => !base.some(section => section.id === override.id)),\n ]\n this.contextSections = merged.length === 0 ? undefined : Object.freeze(merged)\n this.currentConversationId = conversationId(options.conversationId)\n this.currentHistory = options.history ?? new History(historyLimits)\n const skillSources = [...definition.skills, ...options.skills ?? []]\n const skillRuntimeDisabled = definition.skillIds?.length === 0\n const skillRuntimeConfigured = skillSources.length > 0 || (definition.skillIds?.length ?? 0) > 0\n this.skillCatalog = skillRuntimeDisabled || !skillRuntimeConfigured\n ? undefined\n : new SkillCatalog(skillSources, {\n ...(definition.skillIds === undefined ? {} : { allowedSkillIds: definition.skillIds }),\n maxSkills: definition.skillOptions.maxSkills,\n maxCatalogBytes: definition.skillOptions.maxDiscoveryBytes,\n })\n const skillTools = this.skillCatalog === undefined ? [] : createSkillTools(\n this.skillCatalog,\n definition.skillOptions,\n () => this.skillLookup(),\n )\n const teamAccess = options.team?.tools === 'reporting' ? 'reporting' as const : 'full' as const\n const teamTools = options.team?.tools === false\n ? []\n : options.team?.team.toolsFor(options.team.name ?? definition.id, teamAccess) ?? []\n this.catalog = toolCatalog(definition.tools, options.tools, [...skillTools, ...teamTools])\n this.currentMemory = options.memory instanceof AgentMemory\n ? options.memory\n : options.memory === undefined\n ? new AgentMemory(definition.memory.seed, definition.memory)\n : AgentMemory.fromSnapshot(options.memory, definition.memory)\n captureResumedObjective(this.currentMemory, this.currentHistory, this.definition.memory.autoCaptureObjective)\n this.compactor = this.createCompactor()\n attachRuntimeSession(this, (input, invocation, additionalInstructions) =>\n this.createRunHandle(input, invocation, additionalInstructions), invocation =>\n this.createRunHandle(undefined, invocation), invocation =>\n this.compactForRuntime(invocation), () => {\n this.compactor = this.createCompactor()\n })\n options.team?.team.attach(this, {\n ...(options.team.name === undefined ? {} : { name: options.team.name }),\n ...(options.team.description === undefined ? {} : { description: options.team.description }),\n ...(options.team.instructions === undefined ? {} : { instructions: options.team.instructions }),\n ...(options.team.role === undefined ? {} : { role: options.team.role }),\n ...(options.team.tools === undefined ? {} : { tools: options.team.tools }),\n })\n }\n\n /** Restore a JSON-round-tripped session snapshot with fresh runtime dependencies. */\n static fromSnapshot(\n definition: AgentDefinition,\n options: AgentResumeSessionOptions,\n ): AgentSession {\n const { snapshot, ...runtime } = options\n validateSessionSnapshot(snapshot, definition.id, definition.skillOptions.maxSkills)\n const session = new AgentSession(definition, {\n ...runtime,\n conversationId: snapshot.conversationId,\n history: History.fromSnapshot(snapshot.history, runtime.historyLimits),\n memory: AgentMemory.fromSnapshot(snapshot.memory, definition.memory),\n })\n session.pendingSkillActivations = captureResumedSkillActivations(snapshot.skills, session.skillCatalog)\n return session\n }\n\n /** Stable identity for persistence keys, URLs, logs, and GUI trace grouping. */\n get conversationId(): string { return this.currentConversationId }\n\n /** Mutable append-only history owned by this conversation. */\n get history(): History { return this.currentHistory }\n\n /** Durable task facts injected into every request outside compactable history. */\n get memory(): AgentMemory { return this.currentMemory }\n\n /** Refreshable skill catalog for host UIs and explicit user invocation surfaces. */\n get skills(): SkillCatalog | undefined { return this.skillCatalog }\n\n /** Whether a model/tool turn currently owns this session. */\n get isRunning(): boolean { return this.active }\n\n /** Capture one JSON-safe envelope that can be passed to `agent.resumeSession()`. */\n snapshot(): AgentSessionSnapshot {\n const activated = this.activationSnapshot()\n return Object.freeze({\n version: 1 as const,\n conversationId: this.currentConversationId,\n agentId: this.definition.id,\n history: this.currentHistory.snapshot(),\n memory: this.currentMemory.snapshot(),\n ...runtimeSessionConfiguration(this)?.memory === undefined ? {} : {\n memoryBindingId: runtimeSessionConfiguration(this)!.memory!.bindingId,\n },\n ...activated.length === 0 ? {} : {\n skills: Object.freeze({ activated }),\n },\n })\n }\n\n /** Start a fresh conversation without rebuilding provider/tool configuration. */\n reset(): void {\n if (this.active) throw new Error('cannot reset an agent session while a run is active')\n this.currentConversationId = newConversationId()\n this.currentHistory = new History(this.options.historyLimits)\n this.currentMemory = new AgentMemory(this.definition.memory.seed, this.definition.memory)\n this.pendingSkillActivations = Object.freeze([])\n this.skillCatalog?.clearActivations()\n this.compactor = this.createCompactor()\n }\n\n /** Create one explicit context checkpoint while the session is idle. */\n async compact(invocation: AgentInvocationOptions = {}): Promise<CompactionResult | null> {\n if (this.active) throw new Error('cannot compact an agent session while a run is active')\n this.active = true\n try {\n await this.prepareSkills(invocation.signal)\n return await this.compactor?.compactNow(invocation.signal) ?? null\n } finally {\n this.releaseRun()\n }\n }\n\n private async compactForRuntime(invocation: AgentInvocationOptions): Promise<{\n readonly result: CompactionResult | null\n readonly report: LegacyRunReport\n readonly failure?: unknown\n }> {\n if (this.active) throw new Error('cannot compact an agent session while a run is active')\n const ledger = this.createLedger()\n this.active = true\n if (this.compactor !== undefined) bindCompactionAccounting(this.compactor, ledger)\n if (this.skillCatalog !== undefined) bindSkillProviderLogger(this.skillCatalog, ledger.modelInvocation.logger)\n try { return await runRuntimeCompaction({\n ...(this.compactor === undefined ? {} : { compactor: this.compactor }),\n invocation,\n accounting: ledger,\n prepare: () => this.prepareSkills(invocation.signal, ledger),\n }) } finally { this.releaseRun() }\n }\n\n /**\n * Append attributed context without starting a turn.\n *\n * A2A quiet delivery uses this primitive. The returned history sequence is a\n * delivery receipt and lets wake-up schedulers coalesce messages safely.\n */\n inject(input: AgentInput): number {\n const message = userMessage(input)\n this.currentHistory.append({ kind: 'user', message })\n return this.currentHistory.entries().length\n }\n\n /** Resolve after the current run releases the session. */\n whenIdle(signal?: AbortSignal): Promise<void> {\n if (!this.active) return Promise.resolve()\n if (signal?.aborted) return Promise.reject(signal.reason)\n return new Promise<void>((resolve, reject) => {\n let settled = false\n const finish = (): void => {\n if (settled) return\n settled = true\n this.idleWaiters.delete(finish)\n signal?.removeEventListener('abort', abort)\n resolve()\n }\n const abort = (): void => {\n if (settled) return\n settled = true\n this.idleWaiters.delete(finish)\n reject(signal?.reason)\n }\n this.idleWaiters.add(finish)\n signal?.addEventListener('abort', abort, { once: true })\n if (!this.active) finish()\n })\n }\n\n /** Start an eager run and expose both public events and its canonical terminal report. */\n stream(input: AgentInput, invocation: AgentInvocationOptions = {}): AgentRunHandle {\n return this.createRunHandle(input, invocation)\n }\n\n /** Process context already appended with {@link inject} without duplicating it. */\n streamPending(invocation: AgentInvocationOptions = {}): AgentRunHandle {\n return this.createRunHandle(undefined, invocation)\n }\n\n /** Run one user turn and return the terminal response. */\n async run(input: AgentInput, invocation: AgentInvocationOptions = {}): Promise<AgentResponse> {\n const handle = this.stream(input, invocation)\n await consumeSessionEvents(handle, invocation.onEvent, this.runtimeLimits.observerTimeoutMs ?? 30_000)\n return await handle.result\n }\n\n /** Run one turn over already-injected context and return its terminal response. */\n async runPending(invocation: AgentInvocationOptions = {}): Promise<AgentResponse> {\n const handle = this.streamPending(invocation)\n await consumeSessionEvents(handle, invocation.onEvent, this.runtimeLimits.observerTimeoutMs ?? 30_000)\n return await handle.result\n }\n\n private createRunHandle(\n input: AgentInput | undefined,\n invocation: AgentInvocationOptions,\n additionalInstructions?: string,\n ): AgentRunHandle {\n if (this.active) throw new Error(`agent session '${this.definition.id}' is already running`)\n const firstTurnSeq = this.currentHistory.entries().length + 1\n const owned = new AbortController()\n let terminal = false\n const signal = invocation.signal === undefined\n ? owned.signal\n : AbortSignal.any([invocation.signal, owned.signal])\n const buffer = new RunEventBuffer<AgentRunEvent>(\n this.options.eventBufferLimits?.maxEvents,\n this.options.eventBufferLimits?.maxBytes,\n )\n const reportDeferred = deferred<RunReport>()\n const resultDeferred = deferred<AgentResponse>()\n const toolSourcesDeferred = deferred<readonly ToolSourceRunReference[]>()\n const ledger = this.createLedger()\n let toolSourceReferences: readonly ToolSourceRunReference[] = Object.freeze([])\n if (this.compactor !== undefined) bindCompactionAccounting(this.compactor, ledger)\n if (this.skillCatalog !== undefined) {\n bindSkillProviderLogger(this.skillCatalog, ledger.modelInvocation.logger)\n }\n this.active = true\n this.activeAdditionalInstructions = additionalInstructions\n const spanOperations = new Map<string, string>()\n const task = (async (): Promise<void> => {\n let failure: unknown\n let outcome: AgentRunOutcome | undefined\n let memoryState: Awaited<ReturnType<typeof loadRuntimeMemory>>['state'] | undefined\n try {\n const runtime = runtimeSessionConfiguration(this)\n if (runtime?.memory !== undefined) {\n const prepared = await loadRuntimeMemory(\n runtime.memory, this.currentConversationId, this.definition.memory, signal, ledger,\n )\n memoryState = prepared.state\n if (prepared.memory !== undefined) this.currentMemory = prepared.memory\n }\n if (runtime?.prepareTools !== undefined) {\n const logger = ledger.modelInvocation.logger\n if (logger === undefined) throw new Error('runtime tool source logger is unavailable')\n const generation = runtime.prepareTools(signal, logger, [...this.catalog?.names() ?? [], ...this.definition.nativeTools.map(tool => tool.name)])\n this.activeRuntimeCatalog = toolCatalog([], this.catalog, generation.tools)\n toolSourceReferences = generation.references\n }\n toolSourcesDeferred.resolve(toolSourceReferences)\n await this.prepareSkills(signal, ledger)\n if (input !== undefined) {\n const message = userMessage(input)\n if (this.definition.memory.autoCaptureObjective) {\n const operation = ledger.startOperation('memory', { data: { action: 'capture-objective' } })\n try {\n this.currentMemory.captureOriginalObjective(message)\n ledger.endOperation(operation, 'success')\n } catch (error) {\n ledger.endOperation(operation, 'error', { error })\n throw error\n }\n }\n this.currentHistory.append({ kind: 'user', message })\n }\n // Preflight before compaction can turn a required image into a summary.\n if (invocation.imagePolicy === 'strict' && this.history.messages().some(message => contentHasImage(message.content))) {\n const config = this.callConfig()\n const model = await this.options.registry.resolveModelInfo(config.provider, config.model, signal)\n if (model.inputModalities !== undefined && !model.inputModalities.includes('image')) {\n throw new ModelError(`model ${model.id} does not support required image input`, 'UNSUPPORTED_IMAGE_INPUT')\n }\n }\n for await (const event of this.runDefinition({ ...invocation, signal }, ledger)) {\n accountTraceEvent(ledger, spanOperations, event)\n if (event.type === 'agent-end') outcome = event.outcome\n buffer.push(event)\n }\n if (outcome === undefined) {\n throw new Error(`agent session '${this.definition.id}' ended without agent-end`)\n }\n if (signal.aborted) throw signal.reason ?? new Error('agent run was aborted')\n if (outcome.reason.kind === 'error' && outcome.reason.failure.code === 'USAGE_REQUIRED') {\n const error = new Error(outcome.reason.failure.message) as Error & { code: string }\n error.code = 'USAGE_REQUIRED'\n throw error\n }\n if (runtime?.memory !== undefined && memoryState !== undefined && memoryState.status !== 'disabled') {\n await commitRuntimeMemory(\n runtime.memory, this.currentConversationId, this.currentMemory.snapshot(),\n memoryState, signal, ledger,\n )\n }\n } catch (error: unknown) {\n failure = error\n toolSourcesDeferred.resolve(toolSourceReferences)\n }\n\n let report: RunReport\n try {\n const status: OperationStatus = signal.aborted || outcome?.reason.kind === 'aborted'\n ? 'aborted'\n : failure !== undefined || outcome?.reason.kind === 'error'\n ? 'error'\n : 'success'\n const ledgerReport = await ledger.finalize(status, outcome?.completed ?? false, failure)\n report = withTerminalDelivery(createRunTerminalRecord(ledgerReport), ledgerReport.delivery)\n reportDeferred.resolve(report)\n } catch (finalizeError: unknown) {\n reportDeferred.reject(finalizeError)\n resultDeferred.reject(finalizeError)\n buffer.fail(finalizeError)\n terminal = true\n this.releaseRun()\n return\n }\n if (terminal) return\n\n if (failure === undefined && ledger.terminalAuditFailure) {\n const error = new Error('audit observation checkpoint failed after run finalization') as Error & { code: string }\n error.code = 'OBSERVABILITY_AUDIT_UNAVAILABLE'\n failure = error\n }\n if (failure !== undefined) {\n const error = new AgentRunError(\n messageOf(failure),\n errorCodeOf(failure) ?? AGENT_ACCOUNTING_ERROR_CODES.RUN_FAILED,\n report,\n { cause: failure },\n )\n resultDeferred.reject(error)\n buffer.fail(error)\n } else {\n const terminal = outcome as AgentRunOutcome\n const historyEvent = [...this.currentHistory.entries()].reverse()\n .find(entry => entry.seq >= firstTurnSeq && entry.event.kind === 'assistant')\n ?.event\n const assistantMessage = historyEvent?.kind === 'assistant' ? historyEvent.message : undefined\n const response: AgentResponse = Object.freeze({\n text: terminal.text,\n outcome: terminal,\n report,\n ...assistantMessage === undefined ? {} : { message: assistantMessage },\n })\n resultDeferred.resolve(response)\n buffer.close()\n }\n terminal = true\n this.releaseRun()\n })()\n void task.catch(error => {\n if (terminal) return\n reportDeferred.reject(error)\n resultDeferred.reject(error)\n buffer.fail(error)\n terminal = true\n this.releaseRun()\n })\n void resultDeferred.promise.catch(() => undefined)\n void reportDeferred.promise.catch(() => undefined)\n let iterated = false\n return Object.freeze({\n runId: ledger.runId,\n traceId: ledger.traceId,\n toolSourceSnapshots: toolSourcesDeferred.promise,\n eventsSettled: task.then(() => undefined, () => undefined),\n result: resultDeferred.promise,\n report: reportDeferred.promise,\n seal: () => sealRuntimeRun({ ledger, buffer, report: reportDeferred, result: resultDeferred,\n toolSources: toolSourcesDeferred, currentToolSources: () => toolSourceReferences, isTerminal: () => terminal,\n markTerminal: () => { terminal = true }, abort: () => owned.abort(new Error('Agent run was sealed')),\n release: () => this.releaseRun() }),\n abort(_reason?: unknown): void {\n if (!terminal && !owned.signal.aborted) owned.abort(new Error('Agent run was aborted'))\n },\n [Symbol.asyncIterator](): AsyncIterator<AgentRunEvent> {\n if (iterated) return (async function* () { throw new Error('an agent run handle can only be iterated once') })()\n iterated = true\n return (async function* () {\n let exhausted = false\n try {\n while (true) {\n const item = await buffer.take()\n if (item.done) { exhausted = true; break }\n yield item.value\n }\n } finally {\n if (!exhausted) {\n owned.abort(new Error('agent event consumer stopped'))\n buffer.stop()\n await waitForSettlement(task, 30_000)\n }\n }\n })()\n },\n })\n }\n\n private releaseRun(): void {\n this.active = false\n this.activeAdditionalInstructions = undefined\n this.activeRuntimeCatalog = undefined\n if (this.skillCatalog !== undefined) bindSkillProviderLogger(this.skillCatalog, undefined)\n if (this.compactor !== undefined) bindCompactionAccounting(this.compactor, undefined)\n const waiters = [...this.idleWaiters]\n this.idleWaiters.clear()\n for (const resolve of waiters) resolve()\n }\n\n private createLedger() {\n const runtime = runtimeSessionConfiguration(this)\n return createSessionLedger({\n definition: this.definition,\n options: this.options,\n runtimeLimits: this.runtimeLimits,\n conversationId: this.currentConversationId,\n ...(runtime === undefined ? {} : { runtime }),\n })\n }\n\n private runDefinition(\n invocation: AgentInvocationOptions,\n accounting?: RunAccountingPort,\n ): AsyncIterable<AgentRunEvent> {\n const definition = this.definition\n const hooks = this.combinedHooks(accounting)\n const catalog = this.effectiveCatalog()\n const outputFormat = invocation.outputFormat ?? definition.outputFormat\n const common = {\n registry: this.options.registry,\n config: this.callConfig(),\n history: this.history,\n ...catalog === undefined ? {} : { tools: catalog },\n ...definition.nativeTools.length === 0 ? {} : { nativeTools: definition.nativeTools },\n ...definition.toolChoice === undefined ? {} : { toolChoice: definition.toolChoice },\n ...invocation.imagePolicy === undefined ? {} : { imagePolicy: invocation.imagePolicy },\n ...outputFormat === undefined ? {} : { outputFormat },\n ...(invocation.validateOutput === undefined ? {} : { validateOutput: invocation.validateOutput }),\n system: this.systemInstructions(this.activeAdditionalInstructions),\n maxTurns: definition.maxTurns,\n bounds: {\n maxToolCalls: definition.maxToolCalls,\n ...this.runtimeLimits.maxParallelToolCalls === undefined\n ? {}\n : { maxParallel: this.runtimeLimits.maxParallelToolCalls },\n ...this.runtimeLimits.maxConsecutiveToolErrors === undefined\n ? {}\n : { maxConsecutiveToolErrors: this.runtimeLimits.maxConsecutiveToolErrors },\n ...this.runtimeLimits.repeatToolWarningAt === undefined\n ? {}\n : { repeatToolWarningAt: this.runtimeLimits.repeatToolWarningAt },\n ...this.runtimeLimits.repeatToolLimit === undefined\n ? {}\n : { repeatToolLimit: this.runtimeLimits.repeatToolLimit },\n ...this.runtimeLimits.toolCycleWarningAt === undefined\n ? {}\n : { toolCycleWarningAt: this.runtimeLimits.toolCycleWarningAt },\n ...this.runtimeLimits.toolCycleLimit === undefined\n ? {}\n : { toolCycleLimit: this.runtimeLimits.toolCycleLimit },\n ...this.runtimeLimits.onExhausted === undefined\n ? {}\n : { onExhausted: this.runtimeLimits.onExhausted },\n ...this.runtimeLimits.maxToolResultTokens === undefined\n ? {}\n : { maxToolResultTokens: this.runtimeLimits.maxToolResultTokens },\n ...this.runtimeLimits.toolResultOverflow === undefined\n ? {}\n : { toolResultOverflow: this.runtimeLimits.toolResultOverflow },\n ...this.runtimeLimits.maxToolCycleLength === undefined\n ? {}\n : { maxToolCycleLength: this.runtimeLimits.maxToolCycleLength },\n ...this.runtimeLimits.finalReportReserveTokens === undefined ? {} : {\n finalReportReserveTokens: this.runtimeLimits.finalReportReserveTokens,\n },\n ...this.runtimeLimits.maxTotalTokens === undefined\n ? {}\n : { maxTotalTokens: this.runtimeLimits.maxTotalTokens },\n ...this.runtimeLimits.maxToolResultBytes === undefined\n ? {}\n : { maxToolResultBytes: this.runtimeLimits.maxToolResultBytes },\n ...this.runtimeLimits.maxToolDurationMs === undefined\n ? {}\n : { maxToolDurationMs: this.runtimeLimits.maxToolDurationMs },\n ...this.runtimeLimits.toolTeardownTimeoutMs === undefined\n ? {}\n : { toolTeardownTimeoutMs: this.runtimeLimits.toolTeardownTimeoutMs },\n },\n commentary: definition.commentary,\n ...this.runtimeLimits.teardownTimeoutMs === undefined ? {} : { teardownTimeoutMs: this.runtimeLimits.teardownTimeoutMs },\n ...this.runtimeLimits.modelTimeoutMs === undefined ? {} : { modelTimeoutMs: this.runtimeLimits.modelTimeoutMs },\n ...this.runtimeLimits.maxModelRequestBytes === undefined ? {} : { maxModelRequestBytes: this.runtimeLimits.maxModelRequestBytes },\n ...this.runtimeLimits.maxModelResponseBytes === undefined ? {} : { maxModelResponseBytes: this.runtimeLimits.maxModelResponseBytes },\n ...this.runtimeLimits.maxModelStreamEvents === undefined ? {} : { maxModelStreamEvents: this.runtimeLimits.maxModelStreamEvents },\n ...this.runtimeLimits.hookTimeoutMs === undefined ? {} : { hookTimeoutMs: this.runtimeLimits.hookTimeoutMs },\n ...this.runtimeLimits.hookTeardownTimeoutMs === undefined ? {} : { hookTeardownTimeoutMs: this.runtimeLimits.hookTeardownTimeoutMs },\n ...this.options.approvals === undefined ? {} : { approvals: this.options.approvals },\n ...this.options.spillStore === undefined ? {} : { spillStore: this.options.spillStore },\n ...this.options.interceptors === undefined ? {} : { interceptors: this.options.interceptors },\n ...this.contextSections === undefined ? {} : { contextSections: this.contextSections },\n ...hooks === undefined ? {} : { hooks },\n ...invocation.signal === undefined ? {} : { signal: invocation.signal },\n ...accounting === undefined ? {} : { accounting },\n ...accounting?.modelInvocation.logger === undefined ? {} : { logger: accounting.modelInvocation.logger },\n trace: {\n ...this.options.trace,\n conversationId: this.currentConversationId,\n agentId: definition.id,\n agentName: definition.name,\n },\n }\n if (definition.mode === 'deep-human-in-loop') {\n return runAgent({\n ...common, mode: definition.mode, userInput: this.options.userInput as UserInputBroker,\n })\n }\n if (definition.mode === 'deep') {\n return runAgent({\n ...common, mode: definition.mode,\n ...this.options.userInput === undefined ? {} : { userInput: this.options.userInput },\n })\n }\n return runAgent({ ...common, mode: 'basic' })\n }\n\n private createCompactor(): ContextCompactor | undefined {\n const configured = this.options.compaction === false\n ? false\n : this.options.compaction === undefined\n ? this.definition.compaction\n : resolveCompactionConfig(this.options.compaction)\n if (configured === false) return undefined\n return new ContextCompactor({\n registry: this.options.registry,\n config: this.callConfig(),\n history: () => this.currentHistory,\n system: () => this.systemInstructions(this.activeAdditionalInstructions),\n pinnedMessages: () => renderRuntimeMemory(\n this.currentMemory, this.definition.memory.maxInjectedChars,\n ),\n tools: () => [\n ...this.effectiveCatalog()?.schemas() ?? [],\n ...this.definition.nativeTools,\n ],\n policy: configured,\n })\n }\n\n private effectiveCatalog(): ToolCatalog | undefined {\n return this.activeRuntimeCatalog ?? this.catalog\n }\n\n private combinedHooks(accounting?: RunAccountingPort): TurnHooks | undefined {\n const user = this.options.hooks\n if (this.compactor === undefined\n && user === undefined\n && this.currentMemory.items().length === 0) return undefined\n return {\n ...user,\n beforeStep: async context => {\n const generation = this.currentHistory.generation()\n if (this.compactor !== undefined) bindCompactionAccounting(this.compactor, accounting)\n await this.compactor?.beforeStep(context)\n if (accounting?.usageStop !== undefined) return { kind: 'proceed' as const }\n const refreshed = this.currentHistory.generation() === generation\n ? context\n : {\n ...context,\n messages: normalizeToolPairing(this.currentHistory.messages()),\n snapshot: this.currentHistory.snapshot(),\n }\n const memory = renderRuntimeMemory(\n this.currentMemory, this.definition.memory.maxInjectedChars, accounting,\n )\n const current = memory.length === 0\n ? refreshed\n : { ...refreshed, messages: Object.freeze([...memory, ...refreshed.messages]) }\n const decision = await user?.beforeStep?.(current) ?? { kind: 'proceed' as const }\n if (decision.kind === 'reject') return decision\n const prepend = [...memory, ...decision.prepend ?? []]\n return prepend.length === 0 ? decision : { kind: 'proceed' as const, prepend }\n },\n onRequestError: async context => {\n if (this.compactor !== undefined) bindCompactionAccounting(this.compactor, accounting)\n const recovery = await this.compactor?.onRequestError(context)\n if (accounting?.usageStop !== undefined) return 'fail'\n if (recovery === 'retry') return 'retry'\n return await user?.onRequestError?.(context) ?? 'fail'\n },\n }\n }\n\n private callConfig() { return sessionCallConfig(this.definition, runtimeSessionConfiguration(this)) }\n\n private systemInstructions(additionalInstructions?: string): string {\n const base = this.skillCatalog === undefined\n ? this.definition.instructions\n : renderSkillCatalog(\n this.definition.instructions,\n this.skillCatalog.summaries(),\n this.definition.skillOptions,\n )\n const team = this.options.team\n const composed = team === undefined\n ? base\n : `${base}\\n\\n${team.team.instructionsFor(team.name ?? this.definition.id)}`\n return appendRunInstructions(composed, additionalInstructions)\n }\n\n private skillLookup(signal?: AbortSignal): SkillLookupOptions {\n return {\n ...(this.options.skillCwd === undefined ? {} : { cwd: this.options.skillCwd }),\n ...(signal === undefined ? {} : { signal }),\n }\n }\n\n private activationSnapshot(): readonly AgentSessionActivatedSkillSnapshot[] {\n const activated = new Map<string, AgentSessionActivatedSkillSnapshot>()\n for (const entry of this.pendingSkillActivations) activated.set(entry.id, entry)\n for (const reference of this.skillCatalog?.activatedSkillReferences() ?? []) {\n activated.set(reference.id, reference)\n }\n for (const summary of this.skillCatalog?.activatedSummaries() ?? []) {\n if (activated.has(summary.id)) continue\n activated.set(summary.id, Object.freeze({\n id: summary.id, provider: summary.provider, source: summary.source,\n ...summary.resourceBase === undefined ? {} : {\n resourceBase: Object.freeze({ ...summary.resourceBase }),\n },\n }))\n }\n return Object.freeze([...activated.values()].sort((left, right) => left.id.localeCompare(right.id)))\n }\n\n private async prepareSkills(signal?: AbortSignal, accounting?: RunAccountingPort): Promise<void> {\n await prepareSkills(\n this.definition, this.skillCatalog, this.pendingSkillActivations,\n signal => this.skillLookup(signal),\n () => { this.pendingSkillActivations = Object.freeze([]) }, signal, accounting,\n )\n }\n}\n\nexport { configureRuntimeSessionModel, streamRuntimeSession } from './session/runtime-binding.ts'\nexport type {\n AgentInput, AgentRuntimeLimits, AgentSessionOptions, AgentTeamMemberOptions,\n AgentSessionSnapshot, AgentSessionActivatedSkillSnapshot, AgentResumeSessionOptions,\n AgentInvocationOptions, AgentResponse, AgentRunHandle,\n} from './session/types.ts'\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ function e(e){let n=t(e.maxEntries??1e5,`maxEntries`),r=t(e.maxEntryBytes??16777216,`maxEntryBytes`),i=t(e.maxBytes??134217728,`maxBytes`);if(r>i)throw RangeError(`history maxEntryBytes must not exceed maxBytes`);return Object.freeze({maxEntries:n,maxEntryBytes:r,maxBytes:i})}function t(e,t){if(!Number.isSafeInteger(e)||e<1)throw RangeError(`history ${t} must be a positive safe integer`);return e}function n(e){let t;try{t=JSON.stringify(e)}catch(e){throw TypeError(`history value must be JSON-serializable`,{cause:e})}if(t===void 0)throw TypeError(`history value must be JSON-serializable`);return new TextEncoder().encode(t).byteLength}export{t as positiveLimit,e as resolveHistoryLimits,n as serializedBytes};
2
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","names":[],"sources":["../../../src/agent/history/config.ts"],"sourcesContent":["import { type HistoryLimits, type ResolvedHistoryLimits } from './types.ts'\n\nexport const MAX_CONTENT_DEPTH = 64\nexport function resolveHistoryLimits(input: HistoryLimits): ResolvedHistoryLimits {\n const maxEntries = positiveLimit(input.maxEntries ?? 100_000, 'maxEntries')\n const maxEntryBytes = positiveLimit(input.maxEntryBytes ?? 16 * 1024 * 1024, 'maxEntryBytes')\n const maxBytes = positiveLimit(input.maxBytes ?? 128 * 1024 * 1024, 'maxBytes')\n if (maxEntryBytes > maxBytes) throw new RangeError('history maxEntryBytes must not exceed maxBytes')\n return Object.freeze({ maxEntries, maxEntryBytes, maxBytes })\n}\n\nexport function positiveLimit(value: number, name: string): number {\n if (!Number.isSafeInteger(value) || value < 1) throw new RangeError(`history ${name} must be a positive safe integer`)\n return value\n}\n\nexport function serializedBytes(value: unknown): number {\n let json: string | undefined\n try { json = JSON.stringify(value) }\n catch (error: unknown) { throw new TypeError('history value must be JSON-serializable', { cause: error }) }\n if (json === undefined) throw new TypeError('history value must be JSON-serializable')\n return new TextEncoder().encode(json).byteLength\n}\n"],"mappings":"AAGA,SAAgB,EAAqB,EAA6C,CAChF,IAAM,EAAa,EAAc,EAAM,YAAc,IAAS,YAAY,EACpE,EAAgB,EAAc,EAAM,eAAiB,SAAkB,eAAe,EACtF,EAAW,EAAc,EAAM,UAAY,UAAmB,UAAU,EAC9E,GAAI,EAAgB,EAAU,MAAU,WAAW,gDAAgD,EACnG,OAAO,OAAO,OAAO,CAAE,aAAY,gBAAe,UAAS,CAAC,CAC9D,CAEA,SAAgB,EAAc,EAAe,EAAsB,CACjE,GAAI,CAAC,OAAO,cAAc,CAAK,GAAK,EAAQ,EAAG,MAAU,WAAW,WAAW,EAAK,iCAAiC,EACrH,OAAO,CACT,CAEA,SAAgB,EAAgB,EAAwB,CACtD,IAAI,EACJ,GAAI,CAAE,EAAO,KAAK,UAAU,CAAK,CAAE,OAC5B,EAAgB,CAAE,MAAU,UAAU,0CAA2C,CAAE,MAAO,CAAM,CAAC,CAAE,CAC1G,GAAI,IAAS,IAAA,GAAW,MAAU,UAAU,yCAAyC,EACrF,OAAO,IAAI,YAAY,CAAC,CAAC,OAAO,CAAI,CAAC,CAAC,UACxC"}
@@ -0,0 +1,33 @@
1
+ import { Message } from "../../message/message.js";
2
+ import { HistorySurfaceNode } from "./project.js";
3
+ import { CompactionBackoffReason, HistoryEntry, HistoryEvent, HistoryLimits, HistorySnapshot, SurfaceOp } from "./types.js";
4
+ //#region src/agent/history/history.d.ts
5
+ /** Append-only conversation history with a replaceable model-facing projection. */
6
+ declare class History {
7
+ private readonly log;
8
+ private replacementGeneration;
9
+ private validationState;
10
+ private readonly limits;
11
+ private storedBytes;
12
+ constructor(limits?: HistoryLimits);
13
+ private static hydrate;
14
+ static fromSnapshot(snapshot: HistorySnapshot, limits?: HistoryLimits): History;
15
+ private static assertCandidateWithinLimits;
16
+ private static cloneCandidate;
17
+ append(event: HistoryEvent, surfaceOp?: SurfaceOp): HistoryEntry;
18
+ /** Validate and commit related history writes atomically. */
19
+ appendBatch(writes: readonly {
20
+ readonly event: HistoryEvent;
21
+ readonly surfaceOp?: SurfaceOp;
22
+ }[]): readonly HistoryEntry[];
23
+ private appendOne;
24
+ entries(): readonly HistoryEntry[];
25
+ messages(): readonly Message[];
26
+ /** Current model-visible nodes with durable seq identity, in surface order. */
27
+ surface(): readonly HistorySurfaceNode[];
28
+ generation(): number;
29
+ snapshot(): HistorySnapshot;
30
+ }
31
+ //#endregion
32
+ export { type CompactionBackoffReason, History, type HistoryEntry, type HistoryEvent, type HistoryLimits, type HistorySnapshot, type SurfaceOp };
33
+ //# sourceMappingURL=history.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"history.d.ts","names":[],"sources":["../../../src/agent/history/history.ts"],"mappings":";;;;;cAea;mBACM;UACT;UACA;mBACS;UACT;EAER,YAAY,SAAQ;iBAOL;SAcR,aAAa,UAAU,iBAAiB,SAAQ,gBAAqB;iBAgB7D;iBAQA;EAcf,OAAO,OAAO,cAAc,YAAW,YAAuB;;EAK9D,YACE;aAA4B,OAAO;aAAuB,YAAY;iBAC5D;UAyCJ;EAgCR,oBAAoB;EAIpB,qBAAqB;;EAKrB,oBALqB;EASrB;EAIA,YAAY"}
@@ -0,0 +1,2 @@
1
+ import{deepFreeze as e}from"../../primitives/freeze.js";import{projectHistorySurface as t,projectMessages as n}from"./project.js";import{resolveHistoryLimits as r,serializedBytes as i}from"./config.js";import{assertEntriesWithinLimits as a,cloneValidationState as o,emptyValidationState as s,messageOfHistoryEvent as c,snapshotEntries as l,updateVisibleMessages as u,validateEntries as d,validateHistoryEvent as f,validateSurfaceOp as p}from"./validation.js";var m=class m{log;replacementGeneration;validationState;limits;storedBytes=0;constructor(e={}){this.log=[],this.replacementGeneration=0,this.validationState=s(),this.limits=r(e)}static hydrate(e,t,n,r){let i=new m(n);return i.log.push(...e),i.replacementGeneration=e.filter(e=>e.surfaceOp!==`append`).length,i.validationState=t,i.storedBytes=r,i}static fromSnapshot(t,n={}){let i=r(n),o=l(t);if(o.length>i.maxEntries)throw RangeError(`history snapshot exceeds the ${i.maxEntries}-entry limit`);a(o,i);let s=structuredClone(o),c=a(s,i),u=d(s);return m.hydrate(s.map(t=>e(t)),u,i,c)}static assertCandidateWithinLimits(e,t){let n=i(e);if(n>t.maxEntryBytes)throw RangeError(`history entry exceeds the ${t.maxEntryBytes}-byte limit`);return n}static cloneCandidate(e,t,n,r){let i={seq:e,event:t,surfaceOp:n};m.assertCandidateWithinLimits(i,r);let a=structuredClone(i);return{entry:a,bytes:m.assertCandidateWithinLimits(a,r)}}append(e,t=`append`){return this.appendOne(e,t)}appendBatch(t){if(t.length===0)return Object.freeze([]);if(t.length===1){let e=t[0];return Object.freeze([this.appendOne(e.event,e.surfaceOp??`append`)])}if(this.log.length+t.length>this.limits.maxEntries)throw RangeError(`history reached its ${this.limits.maxEntries}-entry limit`);let n=o(this.validationState),r=[],i=this.storedBytes,a=0;for(let o=0;o<t.length;o++){let s=t[o],l=s.surfaceOp??`append`,{entry:d,bytes:h}=m.cloneCandidate(this.log.length+o+1,s.event,l,this.limits);if(f(d.event,d.seq,n),p(d.surfaceOp,d.seq,n.visibleMessageSeqs,c(d.event)),u(d,n.visibleMessageSeqs),i+=h,i>this.limits.maxBytes)throw RangeError(`history reached its ${this.limits.maxBytes}-byte limit`);r.push(e(d)),l!==`append`&&a++}return this.log.push(...r),this.validationState=n,this.storedBytes=i,this.replacementGeneration+=a,Object.freeze([...r])}appendOne(t,n){if(this.log.length>=this.limits.maxEntries)throw RangeError(`history reached its ${this.limits.maxEntries}-entry limit`);let{entry:r,bytes:i}=m.cloneCandidate(this.log.length+1,t,n,this.limits);try{if(f(r.event,r.seq,this.validationState),p(r.surfaceOp,r.seq,this.validationState.visibleMessageSeqs,c(r.event)),u(r,this.validationState.visibleMessageSeqs),this.storedBytes+i>this.limits.maxBytes)throw RangeError(`history reached its ${this.limits.maxBytes}-byte limit`);let t=e(r);return this.log.push(t),this.storedBytes+=i,n!==`append`&&this.replacementGeneration++,t}catch(e){throw this.validationState=d(this.log),e}}entries(){return Object.freeze([...this.log])}messages(){return n(this.log)}surface(){return t(this.log)}generation(){return this.replacementGeneration}snapshot(){return e(structuredClone({version:1,entries:this.log}))}};export{m as History};
2
+ //# sourceMappingURL=history.js.map