@fastagent-sh/fastagent 0.24.4 → 0.25.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 (480) hide show
  1. package/README.md +53 -82
  2. package/dist/agent-api.d.ts +452 -0
  3. package/dist/agent-api.js +201 -0
  4. package/dist/answer-text.d.ts +8 -0
  5. package/dist/answer-text.js +18 -0
  6. package/dist/atomic-write.d.ts +2 -2
  7. package/dist/atomic-write.js +2 -2
  8. package/dist/authoring.d.ts +77 -0
  9. package/dist/authoring.js +238 -0
  10. package/dist/channel.d.ts +29 -15
  11. package/dist/channel.js +4 -1
  12. package/dist/channels/agentcore-protocol.d.ts +36 -50
  13. package/dist/channels/agentcore-protocol.js +3 -3
  14. package/dist/channels/agentcore-service.d.ts +8 -18
  15. package/dist/channels/agentcore-service.js +108 -127
  16. package/dist/channels/agentcore.d.ts +8 -24
  17. package/dist/channels/agentcore.js +32 -65
  18. package/dist/channels/body.d.ts +0 -16
  19. package/dist/channels/body.js +0 -25
  20. package/dist/channels/busy.js +6 -1
  21. package/dist/channels/context.d.ts +4 -0
  22. package/dist/channels/context.js +35 -0
  23. package/dist/channels/discover.d.ts +18 -20
  24. package/dist/channels/discover.js +41 -99
  25. package/dist/channels/feishu/feishu-api.d.ts +54 -4
  26. package/dist/channels/feishu/feishu-api.js +192 -149
  27. package/dist/channels/feishu/feishu.d.ts +3 -0
  28. package/dist/channels/feishu/feishu.js +117 -106
  29. package/dist/channels/feishu/history.d.ts +55 -0
  30. package/dist/channels/feishu/history.js +199 -0
  31. package/dist/channels/feishu/invoke-turn.d.ts +13 -11
  32. package/dist/channels/feishu/invoke-turn.js +9 -10
  33. package/dist/channels/feishu/model.d.ts +2 -1
  34. package/dist/channels/feishu/normalize.js +100 -0
  35. package/dist/channels/feishu/preview.d.ts +2 -2
  36. package/dist/channels/feishu/register-webhook.d.ts +1 -0
  37. package/dist/channels/feishu/register-webhook.js +3 -2
  38. package/dist/channels/feishu/scaffold/channel.ts +65 -46
  39. package/dist/channels/feishu/scaffold/feishu-send.ts +38 -33
  40. package/dist/channels/feishu/scaffold/feishu-threads.ts +25 -0
  41. package/dist/channels/feishu/setup-mode.d.ts +45 -25
  42. package/dist/channels/feishu/setup-mode.js +74 -23
  43. package/dist/channels/feishu/shared-api.d.ts +24 -6
  44. package/dist/channels/feishu/shared-api.js +30 -24
  45. package/dist/channels/kit/context-buffer.d.ts +11 -2
  46. package/dist/channels/kit/context-buffer.js +7 -4
  47. package/dist/channels/kit/delivery.d.ts +19 -3
  48. package/dist/channels/kit/delivery.js +74 -15
  49. package/dist/channels/kit/event-stream.js +2 -1
  50. package/dist/channels/kit/invoke-turn-kit.d.ts +41 -41
  51. package/dist/channels/kit/invoke-turn-kit.js +62 -71
  52. package/dist/channels/kit/place-history.d.ts +107 -0
  53. package/dist/channels/kit/place-history.js +182 -0
  54. package/dist/channels/kit/preview-kit.d.ts +9 -5
  55. package/dist/channels/kit/preview-kit.js +36 -15
  56. package/dist/channels/kit/room-threads.d.ts +46 -0
  57. package/dist/channels/kit/room-threads.js +81 -0
  58. package/dist/channels/kit/seen.js +1 -1
  59. package/dist/channels/kit/stop-command.d.ts +6 -3
  60. package/dist/channels/kit/stop-command.js +20 -18
  61. package/dist/channels/kit/thread-fork.d.ts +17 -0
  62. package/dist/channels/kit/thread-fork.js +43 -0
  63. package/dist/channels/kit/thread-participants.js +1 -1
  64. package/dist/channels/kit/transport.d.ts +5 -0
  65. package/dist/channels/kit/transport.js +5 -0
  66. package/dist/channels/kit/turn-runner.d.ts +10 -9
  67. package/dist/channels/kit/turn-runner.js +17 -19
  68. package/dist/channels/kit/turn-store.d.ts +5 -4
  69. package/dist/channels/kit/turn-store.js +5 -5
  70. package/dist/channels/lark/lark.d.ts +3 -0
  71. package/dist/channels/lark/lark.js +5 -0
  72. package/dist/channels/lark/onboard.d.ts +5 -3
  73. package/dist/channels/lark/onboard.js +14 -14
  74. package/dist/channels/lark/scaffold/channel.ts +67 -44
  75. package/dist/channels/lark/scaffold/lark-send.ts +38 -33
  76. package/dist/channels/lark/scaffold/lark-threads.ts +25 -0
  77. package/dist/channels/respond.d.ts +0 -4
  78. package/dist/channels/respond.js +1 -1
  79. package/dist/channels/router.d.ts +18 -0
  80. package/dist/channels/router.js +68 -0
  81. package/dist/channels/serve.d.ts +5 -70
  82. package/dist/channels/serve.js +105 -287
  83. package/dist/channels/slack/history.d.ts +42 -0
  84. package/dist/channels/slack/history.js +282 -0
  85. package/dist/channels/slack/invoke-turn.d.ts +12 -5
  86. package/dist/channels/slack/invoke-turn.js +7 -5
  87. package/dist/channels/slack/manifest.d.ts +1 -4
  88. package/dist/channels/slack/manifest.js +22 -10
  89. package/dist/channels/slack/model.d.ts +2 -1
  90. package/dist/channels/slack/onboard.d.ts +0 -2
  91. package/dist/channels/slack/onboard.js +2 -4
  92. package/dist/channels/slack/onboarding-state.d.ts +0 -2
  93. package/dist/channels/slack/onboarding-state.js +0 -1
  94. package/dist/channels/slack/parse.d.ts +0 -5
  95. package/dist/channels/slack/parse.js +1 -16
  96. package/dist/channels/slack/preview.d.ts +2 -3
  97. package/dist/channels/slack/preview.js +78 -52
  98. package/dist/channels/slack/register-webhook.d.ts +1 -0
  99. package/dist/channels/slack/register-webhook.js +6 -5
  100. package/dist/channels/slack/scaffold/channel.ts +23 -24
  101. package/dist/channels/slack/scaffold/slack-send.ts +50 -43
  102. package/dist/channels/slack/scaffold/slack-threads.ts +29 -0
  103. package/dist/channels/slack/setup-server.d.ts +19 -0
  104. package/dist/channels/slack/setup-server.js +113 -11
  105. package/dist/channels/slack/shared-api.d.ts +15 -4
  106. package/dist/channels/slack/shared-api.js +19 -14
  107. package/dist/channels/slack/slack-api.d.ts +61 -2
  108. package/dist/channels/slack/slack-api.js +28 -5
  109. package/dist/channels/slack/slack.js +97 -52
  110. package/dist/channels/slack/welcomed.js +1 -1
  111. package/dist/channels/telegram/context-buffer.d.ts +6 -1
  112. package/dist/channels/telegram/context-buffer.js +19 -0
  113. package/dist/channels/telegram/invoke-turn.d.ts +8 -4
  114. package/dist/channels/telegram/invoke-turn.js +7 -7
  115. package/dist/channels/telegram/parse.d.ts +7 -2
  116. package/dist/channels/telegram/parse.js +7 -0
  117. package/dist/channels/telegram/preview.d.ts +2 -2
  118. package/dist/channels/telegram/register-webhook.d.ts +1 -0
  119. package/dist/channels/telegram/register-webhook.js +3 -2
  120. package/dist/channels/telegram/scaffold/channel.ts +27 -28
  121. package/dist/channels/telegram/scaffold/telegram-send.ts +61 -108
  122. package/dist/channels/telegram/shared-api.d.ts +34 -0
  123. package/dist/channels/telegram/shared-api.js +79 -0
  124. package/dist/channels/telegram/telegram-api.d.ts +15 -5
  125. package/dist/channels/telegram/telegram-api.js +10 -6
  126. package/dist/channels/telegram/telegram.js +27 -21
  127. package/dist/channels/telegram/turn-store.js +1 -1
  128. package/dist/channels/{kit/turn-queue.d.ts → turn-queue.d.ts} +2 -2
  129. package/dist/channels/{kit/turn-queue.js → turn-queue.js} +10 -10
  130. package/dist/cli/add-feishu.d.ts +42 -12
  131. package/dist/cli/add-feishu.js +177 -124
  132. package/dist/cli/add-slack.d.ts +8 -3
  133. package/dist/cli/add-slack.js +115 -63
  134. package/dist/cli/auth-view.d.ts +10 -3
  135. package/dist/cli/auth-view.js +8 -6
  136. package/dist/cli/box-login.d.ts +17 -7
  137. package/dist/cli/box-login.js +46 -12
  138. package/dist/cli/commands/add.d.ts +15 -4
  139. package/dist/cli/commands/add.js +252 -143
  140. package/dist/cli/commands/auth.d.ts +6 -0
  141. package/dist/cli/commands/auth.js +50 -0
  142. package/dist/cli/commands/content.d.ts +6 -0
  143. package/dist/cli/commands/content.js +45 -0
  144. package/dist/cli/commands/deploy/agentcore.js +50 -77
  145. package/dist/cli/commands/deploy/docker.js +38 -39
  146. package/dist/cli/commands/deploy/fly.js +21 -18
  147. package/dist/cli/commands/deploy/host-login.d.ts +26 -0
  148. package/dist/cli/commands/deploy/host-login.js +90 -0
  149. package/dist/cli/commands/deploy/railway.js +21 -26
  150. package/dist/cli/commands/deploy/shared.d.ts +45 -17
  151. package/dist/cli/commands/deploy/shared.js +34 -15
  152. package/dist/cli/commands/deploy.d.ts +0 -4
  153. package/dist/cli/commands/deploy.js +237 -50
  154. package/dist/cli/commands/destroy.js +8 -6
  155. package/dist/cli/commands/dev.d.ts +0 -2
  156. package/dist/cli/commands/dev.js +20 -19
  157. package/dist/cli/commands/env.d.ts +12 -0
  158. package/dist/cli/commands/env.js +190 -0
  159. package/dist/cli/commands/info.js +95 -156
  160. package/dist/cli/commands/init.d.ts +2 -2
  161. package/dist/cli/commands/init.js +35 -33
  162. package/dist/cli/commands/invoke.d.ts +6 -0
  163. package/dist/cli/commands/invoke.js +131 -16
  164. package/dist/cli/commands/login.d.ts +31 -2
  165. package/dist/cli/commands/login.js +413 -64
  166. package/dist/cli/commands/logout.d.ts +4 -0
  167. package/dist/cli/commands/logout.js +53 -0
  168. package/dist/cli/commands/logs.js +8 -6
  169. package/dist/cli/commands/models.d.ts +2 -1
  170. package/dist/cli/commands/models.js +39 -37
  171. package/dist/cli/commands/schedules.d.ts +21 -0
  172. package/dist/cli/commands/schedules.js +143 -0
  173. package/dist/cli/commands/start.d.ts +11 -10
  174. package/dist/cli/commands/start.js +35 -62
  175. package/dist/cli/content-view.d.ts +9 -0
  176. package/dist/cli/content-view.js +26 -0
  177. package/dist/cli/fail.d.ts +9 -12
  178. package/dist/cli/fail.js +17 -14
  179. package/dist/cli/invoke-stream.d.ts +12 -3
  180. package/dist/cli/invoke-stream.js +85 -23
  181. package/dist/cli/kernel.d.ts +9 -2
  182. package/dist/cli/kernel.js +15 -6
  183. package/dist/cli/login-relay.d.ts +3 -2
  184. package/dist/cli/login-relay.js +18 -6
  185. package/dist/cli/models-view.d.ts +5 -1
  186. package/dist/cli/models-view.js +1 -1
  187. package/dist/cli/person.d.ts +10 -0
  188. package/dist/cli/person.js +23 -0
  189. package/dist/cli/program.js +421 -203
  190. package/dist/cli/serve.d.ts +13 -63
  191. package/dist/cli/serve.js +31 -121
  192. package/dist/cli/shared.d.ts +21 -48
  193. package/dist/cli/shared.js +68 -89
  194. package/dist/cli/ticket.d.ts +136 -0
  195. package/dist/cli/ticket.js +476 -0
  196. package/dist/client.d.ts +7 -0
  197. package/dist/client.js +2 -0
  198. package/dist/content/declare.d.ts +70 -0
  199. package/dist/content/declare.js +163 -0
  200. package/dist/content/file.d.ts +32 -0
  201. package/dist/content/file.js +119 -0
  202. package/dist/content/git.d.ts +41 -0
  203. package/dist/content/git.js +217 -0
  204. package/dist/content/mount.d.ts +2 -0
  205. package/dist/content/mount.js +15 -0
  206. package/dist/content/resolve.d.ts +52 -0
  207. package/dist/content/resolve.js +151 -0
  208. package/dist/content/source.d.ts +27 -0
  209. package/dist/content/source.js +53 -0
  210. package/dist/conversation-sessions.d.ts +26 -0
  211. package/dist/conversation-sessions.js +99 -0
  212. package/dist/declared-secrets.d.ts +19 -37
  213. package/dist/declared-secrets.js +16 -58
  214. package/dist/deploy/agentcore/destroy.d.ts +3 -3
  215. package/dist/deploy/agentcore/destroy.js +46 -28
  216. package/dist/deploy/agentcore/forwarder.js +105 -22
  217. package/dist/deploy/agentcore/logs.js +1 -1
  218. package/dist/deploy/agentcore/plan.d.ts +10 -24
  219. package/dist/deploy/agentcore/plan.js +31 -135
  220. package/dist/deploy/agentcore/run.d.ts +1 -1
  221. package/dist/deploy/agentcore/run.js +8 -5
  222. package/dist/deploy/agentcore/shell.d.ts +1 -1
  223. package/dist/deploy/agentcore/shell.js +5 -5
  224. package/dist/deploy/api.d.ts +34 -0
  225. package/dist/deploy/api.js +50 -0
  226. package/dist/deploy/box-shell.d.ts +6 -0
  227. package/dist/deploy/box-shell.js +7 -0
  228. package/dist/deploy/build-context.d.ts +7 -5
  229. package/dist/deploy/build-context.js +41 -35
  230. package/dist/deploy/channel-ingress.d.ts +6 -1
  231. package/dist/deploy/channel-ingress.js +18 -5
  232. package/dist/deploy/container.d.ts +22 -9
  233. package/dist/deploy/container.js +96 -55
  234. package/dist/deploy/docker/plan.d.ts +3 -2
  235. package/dist/deploy/docker/plan.js +13 -14
  236. package/dist/deploy/docker/run.d.ts +2 -2
  237. package/dist/deploy/docker/run.js +8 -4
  238. package/dist/deploy/fly/plan.d.ts +1 -1
  239. package/dist/deploy/fly/plan.js +12 -21
  240. package/dist/deploy/fly/run.d.ts +10 -6
  241. package/dist/deploy/fly/run.js +11 -6
  242. package/dist/deploy/hosts.d.ts +2 -1
  243. package/dist/deploy/hosts.js +2 -1
  244. package/dist/deploy/preflight.d.ts +21 -23
  245. package/dist/deploy/preflight.js +222 -201
  246. package/dist/deploy/railway/plan.d.ts +8 -6
  247. package/dist/deploy/railway/plan.js +15 -58
  248. package/dist/deploy/railway/run.d.ts +8 -3
  249. package/dist/deploy/railway/run.js +12 -8
  250. package/dist/deploy/residency.d.ts +5 -11
  251. package/dist/deploy/residency.js +0 -6
  252. package/dist/deploy/runner.d.ts +1 -1
  253. package/dist/deploy/runner.js +1 -1
  254. package/dist/deploy/secrets.d.ts +16 -2
  255. package/dist/deploy/secrets.js +33 -6
  256. package/dist/deploy/workspace.d.ts +11 -6
  257. package/dist/deploy/workspace.js +55 -38
  258. package/dist/dev-supervisor.d.ts +11 -2
  259. package/dist/dev-supervisor.js +51 -26
  260. package/dist/effect-port.d.ts +4 -4
  261. package/dist/effect-port.js +4 -4
  262. package/dist/environment/apt.d.ts +4 -0
  263. package/dist/environment/apt.js +32 -0
  264. package/dist/environment/declare.d.ts +59 -0
  265. package/dist/environment/declare.js +210 -0
  266. package/dist/environment/mise.d.ts +50 -0
  267. package/dist/environment/mise.js +268 -0
  268. package/dist/feishu.d.ts +2 -2
  269. package/dist/feishu.js +2 -2
  270. package/dist/git.d.ts +13 -0
  271. package/dist/git.js +55 -0
  272. package/dist/harnesses/models/catalog.d.ts +20 -0
  273. package/dist/harnesses/models/catalog.js +254 -0
  274. package/dist/{engines/pi/auth.d.ts → harnesses/models/credentials.d.ts} +3 -3
  275. package/dist/{engines/pi/auth.js → harnesses/models/credentials.js} +3 -3
  276. package/dist/harnesses/models/environment.d.ts +43 -0
  277. package/dist/harnesses/models/environment.js +82 -0
  278. package/dist/{engines/pi → harnesses/models}/login.d.ts +57 -26
  279. package/dist/{engines/pi → harnesses/models}/login.js +187 -79
  280. package/dist/harnesses/models/models.d.ts +83 -0
  281. package/dist/harnesses/models/models.js +158 -0
  282. package/dist/harnesses/pi-durable/agent.d.ts +42 -0
  283. package/dist/harnesses/pi-durable/agent.js +579 -0
  284. package/dist/harnesses/pi-durable/defaults.d.ts +28 -0
  285. package/dist/harnesses/pi-durable/defaults.js +26 -0
  286. package/dist/harnesses/pi-durable/define.d.ts +77 -0
  287. package/dist/harnesses/pi-durable/define.js +28 -0
  288. package/dist/harnesses/pi-durable/entries.d.ts +32 -0
  289. package/dist/harnesses/pi-durable/entries.js +126 -0
  290. package/dist/harnesses/pi-durable/events.d.ts +25 -0
  291. package/dist/harnesses/pi-durable/events.js +238 -0
  292. package/dist/harnesses/pi-durable/ids.d.ts +16 -0
  293. package/dist/harnesses/pi-durable/ids.js +55 -0
  294. package/dist/harnesses/pi-durable/messages.d.ts +41 -0
  295. package/dist/harnesses/pi-durable/messages.js +116 -0
  296. package/dist/harnesses/pi-durable/open.d.ts +88 -0
  297. package/dist/harnesses/pi-durable/open.js +329 -0
  298. package/dist/harnesses/pi-durable/reads.d.ts +30 -0
  299. package/dist/harnesses/pi-durable/reads.js +94 -0
  300. package/dist/harnesses/pi-durable/registry.d.ts +18 -0
  301. package/dist/harnesses/pi-durable/registry.js +56 -0
  302. package/dist/harnesses/pi-durable/release.d.ts +13 -0
  303. package/dist/harnesses/pi-durable/release.js +40 -0
  304. package/dist/harnesses/pi-durable/serve.d.ts +80 -0
  305. package/dist/harnesses/pi-durable/serve.js +156 -0
  306. package/dist/harnesses/pi-durable/sessions.d.ts +27 -0
  307. package/dist/harnesses/pi-durable/sessions.js +47 -0
  308. package/dist/harnesses/pi-durable/storage.d.ts +4 -0
  309. package/dist/harnesses/pi-durable/storage.js +49 -0
  310. package/dist/harnesses/pi-durable/stream.d.ts +20 -0
  311. package/dist/harnesses/pi-durable/stream.js +221 -0
  312. package/dist/harnesses/pi-durable/text.d.ts +30 -0
  313. package/dist/harnesses/pi-durable/text.js +292 -0
  314. package/dist/harnesses/pi-durable/wake.d.ts +4 -0
  315. package/dist/harnesses/pi-durable/wake.js +81 -0
  316. package/dist/http/client.d.ts +6 -0
  317. package/dist/http/client.js +256 -0
  318. package/dist/http/contract.d.ts +541 -0
  319. package/dist/http/contract.js +179 -0
  320. package/dist/http/server.d.ts +34 -0
  321. package/dist/http/server.js +194 -0
  322. package/dist/index.d.ts +17 -4
  323. package/dist/index.js +10 -5
  324. package/dist/lark.d.ts +2 -2
  325. package/dist/lark.js +2 -2
  326. package/dist/locked-file.d.ts +17 -0
  327. package/dist/{engines/pi/locked-file.js → locked-file.js} +16 -10
  328. package/dist/once.d.ts +6 -0
  329. package/dist/once.js +23 -0
  330. package/dist/paths.d.ts +36 -52
  331. package/dist/paths.js +66 -182
  332. package/dist/runtime.d.ts +25 -2
  333. package/dist/runtime.js +27 -0
  334. package/dist/scaffold/add-channel.d.ts +14 -27
  335. package/dist/scaffold/add-channel.js +82 -180
  336. package/dist/scaffold/init.d.ts +17 -18
  337. package/dist/scaffold/init.js +87 -99
  338. package/dist/scaffold/templates/SYSTEM.md +12 -0
  339. package/dist/scaffold/templates/env.example +4 -10
  340. package/dist/scaffold/templates/fastagent.config.ts +21 -33
  341. package/dist/scaffold/templates/gitignore +8 -1
  342. package/dist/scaffold/templates/skills/writing-great-skills/SKILL.md +1 -2
  343. package/dist/scaffold/templates.d.ts +9 -4
  344. package/dist/scaffold/templates.js +7 -5
  345. package/dist/scaffold/vendor-skill.d.ts +1 -4
  346. package/dist/scaffold/vendor-skill.js +5 -6
  347. package/dist/schedule/cron.d.ts +13 -0
  348. package/dist/schedule/cron.js +52 -0
  349. package/dist/schedule/eventbridge-cron.d.ts +17 -0
  350. package/dist/schedule/eventbridge-cron.js +88 -0
  351. package/dist/schedule/schedule.d.ts +23 -0
  352. package/dist/schedule/schedule.js +34 -0
  353. package/dist/schedule/scheduler.d.ts +34 -33
  354. package/dist/schedule/scheduler.js +251 -137
  355. package/dist/schedule/state.d.ts +4 -14
  356. package/dist/schedule/state.js +7 -7
  357. package/dist/schedule/wake-alarm.d.ts +22 -2
  358. package/dist/schedule/wake-alarm.js +66 -20
  359. package/dist/schedule/wakeups.d.ts +16 -15
  360. package/dist/schedule/wakeups.js +47 -45
  361. package/dist/service.d.ts +56 -169
  362. package/dist/service.js +91 -187
  363. package/dist/serving-command.d.ts +10 -0
  364. package/dist/serving-command.js +16 -0
  365. package/dist/slack.d.ts +1 -1
  366. package/dist/slack.js +1 -1
  367. package/dist/{channels/kit/state.js → state-file.js} +6 -6
  368. package/dist/telegram.d.ts +1 -0
  369. package/dist/telegram.js +1 -0
  370. package/dist/tunnel.d.ts +3 -0
  371. package/dist/tunnel.js +12 -4
  372. package/dist/value-file.d.ts +21 -0
  373. package/dist/value-file.js +108 -0
  374. package/dist/version.d.ts +5 -0
  375. package/dist/version.js +14 -1
  376. package/package.json +18 -28
  377. package/dist/agent.d.ts +0 -106
  378. package/dist/agent.js +0 -21
  379. package/dist/channels/control.d.ts +0 -31
  380. package/dist/channels/control.js +0 -329
  381. package/dist/channels/define-channel.d.ts +0 -39
  382. package/dist/channels/define-channel.js +0 -9
  383. package/dist/channels/feishu/context-buffer.d.ts +0 -35
  384. package/dist/channels/feishu/context-buffer.js +0 -65
  385. package/dist/channels/feishu/scaffold/channel.websocket.ts +0 -31
  386. package/dist/channels/http.d.ts +0 -23
  387. package/dist/channels/http.js +0 -57
  388. package/dist/channels/lark/scaffold/channel.websocket.ts +0 -31
  389. package/dist/channels/slack/context-buffer.d.ts +0 -23
  390. package/dist/channels/slack/context-buffer.js +0 -37
  391. package/dist/channels/sse.d.ts +0 -4
  392. package/dist/channels/sse.js +0 -66
  393. package/dist/cli/commands/chat.d.ts +0 -3
  394. package/dist/cli/commands/chat.js +0 -14
  395. package/dist/cli/commands/routine-run.d.ts +0 -6
  396. package/dist/cli/commands/routine-run.js +0 -46
  397. package/dist/cli/commands/routine.d.ts +0 -25
  398. package/dist/cli/commands/routine.js +0 -122
  399. package/dist/cli/commands/tool.d.ts +0 -1
  400. package/dist/cli/commands/tool.js +0 -57
  401. package/dist/collect.d.ts +0 -63
  402. package/dist/collect.js +0 -90
  403. package/dist/core.d.ts +0 -13
  404. package/dist/core.js +0 -15
  405. package/dist/engines/pi/agent-models.d.ts +0 -83
  406. package/dist/engines/pi/agent-models.js +0 -120
  407. package/dist/engines/pi/agent-session-factory.d.ts +0 -121
  408. package/dist/engines/pi/agent-session-factory.js +0 -535
  409. package/dist/engines/pi/chat.d.ts +0 -3
  410. package/dist/engines/pi/chat.js +0 -8
  411. package/dist/engines/pi/config.d.ts +0 -71
  412. package/dist/engines/pi/config.js +0 -199
  413. package/dist/engines/pi/create.d.ts +0 -170
  414. package/dist/engines/pi/create.js +0 -343
  415. package/dist/engines/pi/definition.d.ts +0 -74
  416. package/dist/engines/pi/definition.js +0 -236
  417. package/dist/engines/pi/entry-images.d.ts +0 -14
  418. package/dist/engines/pi/entry-images.js +0 -23
  419. package/dist/engines/pi/invoke-session.d.ts +0 -18
  420. package/dist/engines/pi/invoke-session.js +0 -403
  421. package/dist/engines/pi/locked-file.d.ts +0 -9
  422. package/dist/engines/pi/machine.d.ts +0 -53
  423. package/dist/engines/pi/machine.js +0 -137
  424. package/dist/engines/pi/models.d.ts +0 -200
  425. package/dist/engines/pi/models.js +0 -533
  426. package/dist/engines/pi/open.d.ts +0 -180
  427. package/dist/engines/pi/open.js +0 -270
  428. package/dist/engines/pi/openai-account-models.d.ts +0 -35
  429. package/dist/engines/pi/openai-account-models.js +0 -116
  430. package/dist/engines/pi/report.d.ts +0 -18
  431. package/dist/engines/pi/report.js +0 -59
  432. package/dist/engines/pi/retry-event.d.ts +0 -6
  433. package/dist/engines/pi/retry-event.js +0 -15
  434. package/dist/engines/pi/service.d.ts +0 -9
  435. package/dist/engines/pi/service.js +0 -14
  436. package/dist/engines/pi/session-builder.d.ts +0 -13
  437. package/dist/engines/pi/session-builder.js +0 -117
  438. package/dist/engines/pi/session-control.d.ts +0 -77
  439. package/dist/engines/pi/session-control.js +0 -908
  440. package/dist/engines/pi/session-effects.d.ts +0 -14
  441. package/dist/engines/pi/session-effects.js +0 -30
  442. package/dist/engines/pi/session-inheritance.d.ts +0 -21
  443. package/dist/engines/pi/session-inheritance.js +0 -204
  444. package/dist/engines/pi/session-markers.d.ts +0 -49
  445. package/dist/engines/pi/session-markers.js +0 -60
  446. package/dist/engines/pi/session-settings.d.ts +0 -67
  447. package/dist/engines/pi/session-settings.js +0 -119
  448. package/dist/engines/pi/session-store.d.ts +0 -69
  449. package/dist/engines/pi/session-store.js +0 -430
  450. package/dist/engines/pi/tool-context.d.ts +0 -45
  451. package/dist/engines/pi/tool-context.js +0 -31
  452. package/dist/engines/pi/tool.d.ts +0 -99
  453. package/dist/engines/pi/tool.js +0 -118
  454. package/dist/engines/pi/turn-kit.d.ts +0 -92
  455. package/dist/engines/pi/turn-kit.js +0 -288
  456. package/dist/engines/pi/wake-tool.d.ts +0 -9
  457. package/dist/engines/pi/wake-tool.js +0 -92
  458. package/dist/loader.d.ts +0 -41
  459. package/dist/loader.js +0 -116
  460. package/dist/node.d.ts +0 -3
  461. package/dist/node.js +0 -4
  462. package/dist/observe.d.ts +0 -6
  463. package/dist/observe.js +0 -47
  464. package/dist/pi.d.ts +0 -25
  465. package/dist/pi.js +0 -15
  466. package/dist/scaffold/templates/APPEND_SYSTEM.md +0 -12
  467. package/dist/scaffold/templates/tools/fetch-url.ts +0 -25
  468. package/dist/schedule/discover.d.ts +0 -17
  469. package/dist/schedule/discover.js +0 -61
  470. package/dist/schedule/routine.d.ts +0 -43
  471. package/dist/schedule/routine.js +0 -32
  472. package/dist/schedule/run.d.ts +0 -55
  473. package/dist/schedule/run.js +0 -146
  474. package/dist/secrets-gate.d.ts +0 -32
  475. package/dist/secrets-gate.js +0 -33
  476. package/dist/session-remote.d.ts +0 -47
  477. package/dist/session-remote.js +0 -460
  478. package/dist/session.d.ts +0 -466
  479. package/dist/session.js +0 -57
  480. /package/dist/{channels/kit/state.d.ts → state-file.d.ts} +0 -0
@@ -0,0 +1,452 @@
1
+ /**
2
+ * The Agent API (docs/SPEC.md) as Effect Schemas: its objects, what a Caller sends, its errors and its
3
+ * limits. Imports only `effect`: it is the layer that keeps the harness away from its Callers, and the HTTP binding is
4
+ * built from the same schemas, so the two bindings cannot describe different APIs.
5
+ */
6
+ import * as Schema from "effect/Schema";
7
+ export type Json = Schema.Json;
8
+ export declare const ModelRef: Schema.Struct<{
9
+ readonly provider: Schema.String;
10
+ readonly modelId: Schema.String;
11
+ }>;
12
+ export type ModelRef = typeof ModelRef.Type;
13
+ export declare const ThinkingLevel: Schema.Literals<readonly ["off", "minimal", "low", "medium", "high", "xhigh", "max"]>;
14
+ export type ThinkingLevel = typeof ThinkingLevel.Type;
15
+ declare const Tokens_base: Schema.Opaque<Tokens, Schema.Struct<{
16
+ readonly inputTokens: Schema.Number;
17
+ readonly outputTokens: Schema.Number;
18
+ readonly cacheReadTokens: Schema.optionalKey<Schema.Number>;
19
+ readonly cacheWriteTokens: Schema.optionalKey<Schema.Number>;
20
+ readonly cost: Schema.optionalKey<Schema.Number>;
21
+ }>, {}> & Omit<Schema.Struct<{
22
+ readonly inputTokens: Schema.Number;
23
+ readonly outputTokens: Schema.Number;
24
+ readonly cacheReadTokens: Schema.optionalKey<Schema.Number>;
25
+ readonly cacheWriteTokens: Schema.optionalKey<Schema.Number>;
26
+ readonly cost: Schema.optionalKey<Schema.Number>;
27
+ }>, keyof Schema.Top>;
28
+ export declare class Tokens extends Tokens_base {
29
+ }
30
+ declare const Usage_base: Schema.Opaque<Usage, Schema.Struct<{
31
+ readonly models: Schema.$Record<Schema.String, typeof Tokens>;
32
+ readonly tools: Schema.$Record<Schema.String, typeof Tokens>;
33
+ }>, {}> & Omit<Schema.Struct<{
34
+ readonly models: Schema.$Record<Schema.String, typeof Tokens>;
35
+ readonly tools: Schema.$Record<Schema.String, typeof Tokens>;
36
+ }>, keyof Schema.Top>;
37
+ /** Spend by `provider/model` for model calls, and by tool name for what tools reported (§3). */
38
+ export declare class Usage extends Usage_base {
39
+ }
40
+ declare const AgentInfo_base: Schema.Opaque<AgentInfo, Schema.Struct<{
41
+ readonly name: Schema.String;
42
+ readonly description: Schema.optionalKey<Schema.String>;
43
+ /** What a message may start with as `/<name>` (§5.1). */
44
+ readonly commands: Schema.$Array<Schema.Struct<{
45
+ readonly name: Schema.String;
46
+ readonly description: Schema.optionalKey<Schema.String>;
47
+ }>>;
48
+ /** The tools a session may enable. */
49
+ readonly tools: Schema.$Array<Schema.Struct<{
50
+ readonly name: Schema.String;
51
+ readonly description: Schema.optionalKey<Schema.String>;
52
+ }>>;
53
+ /** The models a session may name: those whose provider has a credential here. */
54
+ readonly models: Schema.$Array<Schema.Struct<{
55
+ readonly provider: Schema.String;
56
+ readonly modelId: Schema.String;
57
+ readonly name: Schema.optionalKey<Schema.String>;
58
+ }>>;
59
+ readonly defaultModel: Schema.optionalKey<Schema.Struct<{
60
+ readonly provider: Schema.String;
61
+ readonly modelId: Schema.String;
62
+ }>>;
63
+ }>, {}> & Omit<Schema.Struct<{
64
+ readonly name: Schema.String;
65
+ readonly description: Schema.optionalKey<Schema.String>;
66
+ /** What a message may start with as `/<name>` (§5.1). */
67
+ readonly commands: Schema.$Array<Schema.Struct<{
68
+ readonly name: Schema.String;
69
+ readonly description: Schema.optionalKey<Schema.String>;
70
+ }>>;
71
+ /** The tools a session may enable. */
72
+ readonly tools: Schema.$Array<Schema.Struct<{
73
+ readonly name: Schema.String;
74
+ readonly description: Schema.optionalKey<Schema.String>;
75
+ }>>;
76
+ /** The models a session may name: those whose provider has a credential here. */
77
+ readonly models: Schema.$Array<Schema.Struct<{
78
+ readonly provider: Schema.String;
79
+ readonly modelId: Schema.String;
80
+ readonly name: Schema.optionalKey<Schema.String>;
81
+ }>>;
82
+ readonly defaultModel: Schema.optionalKey<Schema.Struct<{
83
+ readonly provider: Schema.String;
84
+ readonly modelId: Schema.String;
85
+ }>>;
86
+ }>, keyof Schema.Top>;
87
+ export declare class AgentInfo extends AgentInfo_base {
88
+ }
89
+ export declare const ContentPart: Schema.Union<readonly [Schema.Struct<{
90
+ readonly type: Schema.Literal<"text">;
91
+ readonly text: Schema.String;
92
+ }>, Schema.Struct<{
93
+ readonly type: Schema.Literal<"image">;
94
+ readonly mimeType: Schema.String;
95
+ readonly data: Schema.String;
96
+ }>, Schema.Struct<{
97
+ readonly type: Schema.Literal<"image">;
98
+ readonly mimeType: Schema.String;
99
+ readonly ref: Schema.String;
100
+ }>]>;
101
+ export type ContentPart = typeof ContentPart.Type;
102
+ /** The shape of an error as data: in a failed message, and in a `stream_error`. */
103
+ export declare const AgentErrorData: Schema.Struct<{
104
+ readonly code: Schema.String;
105
+ readonly message: Schema.String;
106
+ /** Whether the same request may succeed if sent again. */
107
+ readonly retryable: Schema.Boolean;
108
+ readonly details: Schema.optionalKey<Schema.Codec<Schema.Json, Schema.Json, never, never>>;
109
+ }>;
110
+ export type AgentErrorData = typeof AgentErrorData.Type;
111
+ declare const AgentError_base: Schema.Class<AgentError, Schema.Struct<{
112
+ readonly code: Schema.String;
113
+ readonly message: Schema.String;
114
+ /** Whether the same request may succeed if sent again. */
115
+ readonly retryable: Schema.Boolean;
116
+ readonly details: Schema.optionalKey<Schema.Codec<Schema.Json, Schema.Json, never, never>>;
117
+ }>, import("effect/Cause").YieldableError>;
118
+ /** What every operation rejects with (§7). */
119
+ export declare class AgentError extends AgentError_base {
120
+ }
121
+ export declare const SessionStatus: Schema.Literals<readonly ["idle", "running"]>;
122
+ export type SessionStatus = typeof SessionStatus.Type;
123
+ declare const Session_base: Schema.Opaque<Session, Schema.Struct<{
124
+ readonly model: Schema.optional<Schema.Struct<{
125
+ readonly provider: Schema.String;
126
+ readonly modelId: Schema.String;
127
+ }>> | Schema.optionalKey<Schema.Struct<{
128
+ readonly provider: Schema.String;
129
+ readonly modelId: Schema.String;
130
+ }>>;
131
+ readonly thinkingLevel: Schema.optional<Schema.Literals<readonly ["off", "minimal", "low", "medium", "high", "xhigh", "max"]>> | Schema.optionalKey<Schema.Literals<readonly ["off", "minimal", "low", "medium", "high", "xhigh", "max"]>>;
132
+ readonly instructions: Schema.optional<Schema.String> | Schema.optionalKey<Schema.String>;
133
+ readonly tools: Schema.optional<Schema.$Array<Schema.String>> | Schema.optionalKey<Schema.$Array<Schema.String>>;
134
+ readonly id: Schema.String;
135
+ readonly status: Schema.Codec<"idle" | "running" | (string & {}), string, never, never>;
136
+ /** The agent's reply being written, as written so far: present only while one is. */
137
+ readonly reply: Schema.optionalKey<Schema.Struct<{
138
+ readonly text: Schema.String;
139
+ readonly thinking: Schema.optionalKey<Schema.String>;
140
+ }>>;
141
+ readonly usage: typeof Usage;
142
+ }>, {}> & Omit<Schema.Struct<{
143
+ readonly model: Schema.optional<Schema.Struct<{
144
+ readonly provider: Schema.String;
145
+ readonly modelId: Schema.String;
146
+ }>> | Schema.optionalKey<Schema.Struct<{
147
+ readonly provider: Schema.String;
148
+ readonly modelId: Schema.String;
149
+ }>>;
150
+ readonly thinkingLevel: Schema.optional<Schema.Literals<readonly ["off", "minimal", "low", "medium", "high", "xhigh", "max"]>> | Schema.optionalKey<Schema.Literals<readonly ["off", "minimal", "low", "medium", "high", "xhigh", "max"]>>;
151
+ readonly instructions: Schema.optional<Schema.String> | Schema.optionalKey<Schema.String>;
152
+ readonly tools: Schema.optional<Schema.$Array<Schema.String>> | Schema.optionalKey<Schema.$Array<Schema.String>>;
153
+ readonly id: Schema.String;
154
+ readonly status: Schema.Codec<"idle" | "running" | (string & {}), string, never, never>;
155
+ /** The agent's reply being written, as written so far: present only while one is. */
156
+ readonly reply: Schema.optionalKey<Schema.Struct<{
157
+ readonly text: Schema.String;
158
+ readonly thinking: Schema.optionalKey<Schema.String>;
159
+ }>>;
160
+ readonly usage: typeof Usage;
161
+ }>, keyof Schema.Top>;
162
+ export declare class Session extends Session_base {
163
+ }
164
+ /** A message's statuses: `queued` and `running` until it ends, then one of the four ends, which are all its ends. */
165
+ export declare const MessageStatus: Schema.Literals<readonly ["queued", "running", "completed", "incomplete", "failed", "canceled"]>;
166
+ export type MessageStatus = typeof MessageStatus.Type;
167
+ declare const Message_base: Schema.Opaque<Message, Schema.Struct<{
168
+ readonly id: Schema.String;
169
+ readonly sessionId: Schema.String;
170
+ readonly idempotencyKey: Schema.optionalKey<Schema.String>;
171
+ readonly status: Schema.Codec<"canceled" | "completed" | "failed" | "incomplete" | "queued" | "running" | (string & {}), string, never, never>;
172
+ /** Its `user` entry, once the agent took it. */
173
+ readonly entryId: Schema.optionalKey<Schema.String>;
174
+ /** The `assistant` entry the agent stopped on for it: when `completed`, and when `incomplete`. */
175
+ readonly answer: Schema.optionalKey<Schema.Struct<{
176
+ readonly entryId: Schema.String;
177
+ readonly text: Schema.String;
178
+ }>>;
179
+ /** Why it `failed`. */
180
+ readonly error: Schema.optionalKey<Schema.Struct<{
181
+ readonly code: Schema.String;
182
+ readonly message: Schema.String;
183
+ /** Whether the same request may succeed if sent again. */
184
+ readonly retryable: Schema.Boolean;
185
+ readonly details: Schema.optionalKey<Schema.Codec<Schema.Json, Schema.Json, never, never>>;
186
+ }>>;
187
+ }>, {}> & Omit<Schema.Struct<{
188
+ readonly id: Schema.String;
189
+ readonly sessionId: Schema.String;
190
+ readonly idempotencyKey: Schema.optionalKey<Schema.String>;
191
+ readonly status: Schema.Codec<"canceled" | "completed" | "failed" | "incomplete" | "queued" | "running" | (string & {}), string, never, never>;
192
+ /** Its `user` entry, once the agent took it. */
193
+ readonly entryId: Schema.optionalKey<Schema.String>;
194
+ /** The `assistant` entry the agent stopped on for it: when `completed`, and when `incomplete`. */
195
+ readonly answer: Schema.optionalKey<Schema.Struct<{
196
+ readonly entryId: Schema.String;
197
+ readonly text: Schema.String;
198
+ }>>;
199
+ /** Why it `failed`. */
200
+ readonly error: Schema.optionalKey<Schema.Struct<{
201
+ readonly code: Schema.String;
202
+ readonly message: Schema.String;
203
+ /** Whether the same request may succeed if sent again. */
204
+ readonly retryable: Schema.Boolean;
205
+ readonly details: Schema.optionalKey<Schema.Codec<Schema.Json, Schema.Json, never, never>>;
206
+ }>>;
207
+ }>, keyof Schema.Top>;
208
+ export declare class Message extends Message_base {
209
+ }
210
+ /** Whether a message has ended: its ends are a closed set, so any other status, known or not, has not (§7.1). */
211
+ export declare const hasEnded: (message: Pick<Message, "status">) => boolean;
212
+ declare const Entry_base: Schema.Opaque<Entry, Schema.Struct<{
213
+ readonly id: Schema.String;
214
+ readonly timestamp: Schema.Number;
215
+ readonly kind: Schema.String;
216
+ readonly data: Schema.Codec<Schema.Json, Schema.Json, never, never>;
217
+ }>, {}> & Omit<Schema.Struct<{
218
+ readonly id: Schema.String;
219
+ readonly timestamp: Schema.Number;
220
+ readonly kind: Schema.String;
221
+ readonly data: Schema.Codec<Schema.Json, Schema.Json, never, never>;
222
+ }>, keyof Schema.Top>;
223
+ /**
224
+ * One durable record of a session's history. Its `data` by `kind`:
225
+ * - `user`: `{ content: ContentPart[], messageId? }`
226
+ * - `assistant`: `{ text, thinking?, toolCalls?: { id, name, args }[], stop?: "max_tokens" | "failed" | "aborted",
227
+ * error?, usage }`
228
+ * - `tool_result`: `{ toolCallId, toolName, isError, content: ContentPart[] }`
229
+ * - `compaction`: `{ summary }`
230
+ */
231
+ export declare class Entry extends Entry_base {
232
+ }
233
+ export interface Page<T> {
234
+ data: T[];
235
+ next?: string;
236
+ prev?: string;
237
+ }
238
+ export declare const SessionEvent: Schema.Union<readonly [Schema.Struct<{
239
+ readonly type: Schema.Literal<"entry">;
240
+ readonly entry: typeof Entry;
241
+ }>, Schema.Struct<{
242
+ readonly type: Schema.Literal<"state">;
243
+ readonly session: typeof Session;
244
+ }>, Schema.Struct<{
245
+ readonly type: Schema.Literal<"delta">;
246
+ readonly channel: Schema.Literals<readonly ["text", "thinking"]>;
247
+ readonly text: Schema.String;
248
+ }>, Schema.Struct<{
249
+ readonly type: Schema.Literal<"tool_started">;
250
+ readonly toolCallId: Schema.String;
251
+ readonly name: Schema.String;
252
+ readonly args: Schema.Codec<Schema.Json, Schema.Json, never, never>;
253
+ }>, Schema.Struct<{
254
+ readonly type: Schema.Literal<"tool_progress">;
255
+ readonly toolCallId: Schema.String;
256
+ readonly text: Schema.String;
257
+ }>, Schema.Struct<{
258
+ readonly type: Schema.Literal<"retrying">;
259
+ readonly attempt: Schema.Number;
260
+ readonly maxAttempts: Schema.Number;
261
+ readonly delayMs: Schema.Number;
262
+ readonly reason: Schema.String;
263
+ }>, Schema.Struct<{
264
+ readonly type: Schema.Literal<"done">;
265
+ readonly message: typeof Message;
266
+ }>, Schema.Struct<{
267
+ readonly type: Schema.Literal<"stream_error">;
268
+ readonly error: Schema.Struct<{
269
+ readonly code: Schema.String;
270
+ readonly message: Schema.String;
271
+ /** Whether the same request may succeed if sent again. */
272
+ readonly retryable: Schema.Boolean;
273
+ readonly details: Schema.optionalKey<Schema.Codec<Schema.Json, Schema.Json, never, never>>;
274
+ }>;
275
+ }>]>;
276
+ export type SessionEvent = typeof SessionEvent.Type;
277
+ export declare const MessageStreamEvent: Schema.Union<readonly [Schema.Struct<{
278
+ readonly type: Schema.Literal<"message">;
279
+ readonly message: typeof Message;
280
+ }>, Schema.Struct<{
281
+ readonly type: Schema.Literal<"entry">;
282
+ readonly entry: typeof Entry;
283
+ }>, Schema.Struct<{
284
+ readonly type: Schema.Literal<"state">;
285
+ readonly session: typeof Session;
286
+ }>, Schema.Struct<{
287
+ readonly type: Schema.Literal<"delta">;
288
+ readonly channel: Schema.Literals<readonly ["text", "thinking"]>;
289
+ readonly text: Schema.String;
290
+ }>, Schema.Struct<{
291
+ readonly type: Schema.Literal<"tool_started">;
292
+ readonly toolCallId: Schema.String;
293
+ readonly name: Schema.String;
294
+ readonly args: Schema.Codec<Schema.Json, Schema.Json, never, never>;
295
+ }>, Schema.Struct<{
296
+ readonly type: Schema.Literal<"tool_progress">;
297
+ readonly toolCallId: Schema.String;
298
+ readonly text: Schema.String;
299
+ }>, Schema.Struct<{
300
+ readonly type: Schema.Literal<"retrying">;
301
+ readonly attempt: Schema.Number;
302
+ readonly maxAttempts: Schema.Number;
303
+ readonly delayMs: Schema.Number;
304
+ readonly reason: Schema.String;
305
+ }>, Schema.Struct<{
306
+ readonly type: Schema.Literal<"done">;
307
+ readonly message: typeof Message;
308
+ }>, Schema.Struct<{
309
+ readonly type: Schema.Literal<"stream_error">;
310
+ readonly error: Schema.Struct<{
311
+ readonly code: Schema.String;
312
+ readonly message: Schema.String;
313
+ /** Whether the same request may succeed if sent again. */
314
+ readonly retryable: Schema.Boolean;
315
+ readonly details: Schema.optionalKey<Schema.Codec<Schema.Json, Schema.Json, never, never>>;
316
+ }>;
317
+ }>]>;
318
+ export type MessageStreamEvent = typeof MessageStreamEvent.Type;
319
+ export declare const SessionSettings: Schema.Struct<{
320
+ model: Schema.optional<Schema.Struct<{
321
+ readonly provider: Schema.String;
322
+ readonly modelId: Schema.String;
323
+ }>> | Schema.optionalKey<Schema.Struct<{
324
+ readonly provider: Schema.String;
325
+ readonly modelId: Schema.String;
326
+ }>>;
327
+ thinkingLevel: Schema.optional<Schema.Literals<readonly ["off", "minimal", "low", "medium", "high", "xhigh", "max"]>> | Schema.optionalKey<Schema.Literals<readonly ["off", "minimal", "low", "medium", "high", "xhigh", "max"]>>;
328
+ /** Text added at the end of the agent's system prompt for this session. */
329
+ instructions: Schema.optional<Schema.String> | Schema.optionalKey<Schema.String>;
330
+ /** The tools the session enables, each among `info().tools`. */
331
+ tools: Schema.optional<Schema.$Array<Schema.String>> | Schema.optionalKey<Schema.$Array<Schema.String>>;
332
+ }>;
333
+ export type SessionSettings = typeof SessionSettings.Type;
334
+ export declare const CreateSessionOptions: Schema.Struct<{
335
+ readonly model: Schema.optional<Schema.Struct<{
336
+ readonly provider: Schema.String;
337
+ readonly modelId: Schema.String;
338
+ }>> | Schema.optionalKey<Schema.Struct<{
339
+ readonly provider: Schema.String;
340
+ readonly modelId: Schema.String;
341
+ }>>;
342
+ readonly thinkingLevel: Schema.optional<Schema.Literals<readonly ["off", "minimal", "low", "medium", "high", "xhigh", "max"]>> | Schema.optionalKey<Schema.Literals<readonly ["off", "minimal", "low", "medium", "high", "xhigh", "max"]>>;
343
+ readonly instructions: Schema.optional<Schema.String> | Schema.optionalKey<Schema.String>;
344
+ readonly tools: Schema.optional<Schema.$Array<Schema.String>> | Schema.optionalKey<Schema.$Array<Schema.String>>;
345
+ readonly forkFrom: Schema.optional<Schema.Struct<{
346
+ readonly sessionId: Schema.String;
347
+ readonly entryId: Schema.optional<Schema.String>;
348
+ }>>;
349
+ }>;
350
+ export type CreateSessionOptions = typeof CreateSessionOptions.Type;
351
+ /** `null` clears a field back to the deployment's. */
352
+ export declare const SessionChanges: Schema.Struct<{
353
+ readonly model: Schema.optional<Schema.NullOr<Schema.Struct<{
354
+ readonly provider: Schema.String;
355
+ readonly modelId: Schema.String;
356
+ }>>>;
357
+ readonly thinkingLevel: Schema.optional<Schema.NullOr<Schema.Literals<readonly ["off", "minimal", "low", "medium", "high", "xhigh", "max"]>>>;
358
+ readonly instructions: Schema.optional<Schema.NullOr<Schema.String>>;
359
+ readonly tools: Schema.optional<Schema.NullOr<Schema.$Array<Schema.String>>>;
360
+ }>;
361
+ export type SessionChanges = typeof SessionChanges.Type;
362
+ export declare const ListOptions: Schema.Struct<{
363
+ readonly limit: Schema.optional<Schema.Int>;
364
+ readonly after: Schema.optional<Schema.String>;
365
+ }>;
366
+ export type ListOptions = typeof ListOptions.Type;
367
+ export declare const EntriesOptions: Schema.Struct<{
368
+ readonly after: Schema.optional<Schema.String>;
369
+ readonly before: Schema.optional<Schema.String>;
370
+ readonly limit: Schema.optional<Schema.Int>;
371
+ }>;
372
+ export type EntriesOptions = typeof EntriesOptions.Type;
373
+ export declare const IdempotencyKey: Schema.String;
374
+ export declare const SendRequest: Schema.Struct<{
375
+ readonly sessionId: Schema.String;
376
+ /** A string is one text part. */
377
+ readonly content: Schema.Union<readonly [Schema.String, Schema.$Array<Schema.Union<readonly [Schema.Struct<{
378
+ readonly type: Schema.Literal<"text">;
379
+ readonly text: Schema.String;
380
+ }>, Schema.Struct<{
381
+ readonly type: Schema.Literal<"image">;
382
+ readonly mimeType: Schema.String;
383
+ readonly data: Schema.String;
384
+ }>]>>]>;
385
+ /** The Caller's key for this message, unique within the session (§5.2). */
386
+ readonly idempotencyKey: Schema.optional<Schema.String>;
387
+ /** What the message is when the session is busy with another (§5.3). Default: "queue". */
388
+ readonly whenBusy: Schema.optional<Schema.Literals<readonly ["queue", "steer", "reject"]>>;
389
+ }>;
390
+ export type SendRequest = typeof SendRequest.Type;
391
+ /** In seconds: how long a call waits for a message to end before it answers with the message as it is then. */
392
+ export declare const Wait: Schema.Number;
393
+ /** A message, by its id or by the key it was sent with. */
394
+ export declare const MessageKey: Schema.Union<readonly [Schema.Struct<{
395
+ readonly sessionId: Schema.String;
396
+ readonly messageId: Schema.String;
397
+ }>, Schema.Struct<{
398
+ readonly sessionId: Schema.String;
399
+ readonly idempotencyKey: Schema.String;
400
+ }>]>;
401
+ export type MessageKey = typeof MessageKey.Type;
402
+ export declare const CompactOptions: Schema.Struct<{
403
+ readonly instructions: Schema.optional<Schema.String>;
404
+ }>;
405
+ export type CompactOptions = typeof CompactOptions.Type;
406
+ export interface WaitOptions {
407
+ wait?: number;
408
+ signal?: AbortSignal;
409
+ }
410
+ export interface Agent {
411
+ info(): Promise<AgentInfo>;
412
+ usage(): Promise<Usage>;
413
+ sessions: {
414
+ create(options?: CreateSessionOptions): Promise<Session>;
415
+ get(sessionId: string): Promise<Session>;
416
+ list(options?: ListOptions): Promise<Page<Session>>;
417
+ update(sessionId: string, changes: SessionChanges): Promise<Session>;
418
+ entries(sessionId: string, options?: EntriesOptions): Promise<Page<Entry>>;
419
+ events(sessionId: string, options?: {
420
+ after?: string;
421
+ signal?: AbortSignal;
422
+ }): AsyncIterable<SessionEvent>;
423
+ cancel(sessionId: string): Promise<{
424
+ stopped: string[];
425
+ }>;
426
+ compact(sessionId: string, options?: CompactOptions): Promise<void>;
427
+ attachment(sessionId: string, ref: string): Promise<{
428
+ mimeType: string;
429
+ data: Uint8Array;
430
+ }>;
431
+ };
432
+ messages: {
433
+ send(request: SendRequest, options?: WaitOptions): Promise<Message>;
434
+ stream(request: SendRequest, options?: {
435
+ signal?: AbortSignal;
436
+ }): AsyncIterable<MessageStreamEvent>;
437
+ get(key: MessageKey, options?: WaitOptions): Promise<Message>;
438
+ };
439
+ }
440
+ export type ErrorCode = "invalid_request" | "unauthorized" | "not_found" | "busy" | "missing_model" | "missing_tool" | "auth_required" | "model_error" | "unconfirmed" | "unavailable" | "internal";
441
+ export declare const LIMITS: {
442
+ readonly queuedPerSession: 20;
443
+ readonly inFlightPerProcess: 100;
444
+ readonly pageDefault: 100;
445
+ readonly pageBytes: number;
446
+ /** The longest one HTTP request waits for a message; `connectAgent` asks again until its Caller's `wait` is met. */
447
+ readonly httpWaitSeconds: 60;
448
+ };
449
+ export declare function agentError(code: ErrorCode, message: string, details?: Json): AgentError;
450
+ /** An error as data, the way a message's `error` and a `stream_error` carry it. */
451
+ export declare function errorData(error: AgentErrorData): AgentErrorData;
452
+ export {};
@@ -0,0 +1,201 @@
1
+ /**
2
+ * The Agent API (docs/SPEC.md) as Effect Schemas: its objects, what a Caller sends, its errors and its
3
+ * limits. Imports only `effect`: it is the layer that keeps the harness away from its Callers, and the HTTP binding is
4
+ * built from the same schemas, so the two bindings cannot describe different APIs.
5
+ */
6
+ import * as Schema from "effect/Schema";
7
+ export const ModelRef = Schema.Struct({ provider: Schema.String, modelId: Schema.String });
8
+ export const ThinkingLevel = Schema.Literals(["off", "minimal", "low", "medium", "high", "xhigh", "max"]);
9
+ export class Tokens extends Schema.Opaque()(Schema.Struct({
10
+ inputTokens: Schema.Number,
11
+ outputTokens: Schema.Number,
12
+ cacheReadTokens: Schema.optionalKey(Schema.Number),
13
+ cacheWriteTokens: Schema.optionalKey(Schema.Number),
14
+ cost: Schema.optionalKey(Schema.Number),
15
+ })) {
16
+ }
17
+ /** Spend by `provider/model` for model calls, and by tool name for what tools reported (§3). */
18
+ export class Usage extends Schema.Opaque()(Schema.Struct({
19
+ models: Schema.Record(Schema.String, Tokens),
20
+ tools: Schema.Record(Schema.String, Tokens),
21
+ })) {
22
+ }
23
+ const Named = Schema.Struct({ name: Schema.String, description: Schema.optionalKey(Schema.String) });
24
+ export class AgentInfo extends Schema.Opaque()(Schema.Struct({
25
+ name: Schema.String,
26
+ description: Schema.optionalKey(Schema.String),
27
+ /** What a message may start with as `/<name>` (§5.1). */
28
+ commands: Schema.Array(Named),
29
+ /** The tools a session may enable. */
30
+ tools: Schema.Array(Named),
31
+ /** The models a session may name: those whose provider has a credential here. */
32
+ models: Schema.Array(Schema.Struct({ provider: Schema.String, modelId: Schema.String, name: Schema.optionalKey(Schema.String) })),
33
+ defaultModel: Schema.optionalKey(ModelRef),
34
+ })) {
35
+ }
36
+ const TextPart = Schema.Struct({ type: Schema.Literal("text"), text: Schema.String });
37
+ /** An image in a message carries its bytes, base64. */
38
+ const ImagePart = Schema.Struct({ type: Schema.Literal("image"), mimeType: Schema.String, data: Schema.String });
39
+ /** An image in an entry is a ref, read with `sessions.attachment`. */
40
+ const ImageRef = Schema.Struct({ type: Schema.Literal("image"), mimeType: Schema.String, ref: Schema.String });
41
+ export const ContentPart = Schema.Union([TextPart, ImagePart, ImageRef]);
42
+ /** The shape of an error as data: in a failed message, and in a `stream_error`. */
43
+ export const AgentErrorData = Schema.Struct({
44
+ code: Schema.String,
45
+ message: Schema.String,
46
+ /** Whether the same request may succeed if sent again. */
47
+ retryable: Schema.Boolean,
48
+ details: Schema.optionalKey(Schema.Json),
49
+ });
50
+ /** What every operation rejects with (§7). */
51
+ export class AgentError extends Schema.Error("AgentError")(AgentErrorData) {
52
+ }
53
+ /**
54
+ * A session's settings. An object the Agent answers with leaves out what it does not name (`optionalKey`); what a Caller
55
+ * sends may also give a field as `undefined`, which is the same as leaving it out (`optional`), as a TypeScript Caller
56
+ * without `exactOptionalPropertyTypes` writes it.
57
+ */
58
+ const settingsFields = (optional) => ({
59
+ model: optional(ModelRef),
60
+ thinkingLevel: optional(ThinkingLevel),
61
+ /** Text added at the end of the agent's system prompt for this session. */
62
+ instructions: optional(Schema.String),
63
+ /** The tools the session enables, each among `info().tools`. */
64
+ tools: optional(Schema.Array(Schema.String)),
65
+ });
66
+ /**
67
+ * A status as a field: the values this version defines, and any other, since a later version may add one and a Caller
68
+ * reads it the way §7.1 says (an unknown session status is busy, an unknown message status has not ended).
69
+ */
70
+ const open = (known) =>
71
+ // As a type, the known values and any string, so an editor still offers them (`string & {}` does not absorb them).
72
+ Schema.Union([known, Schema.String]);
73
+ export const SessionStatus = Schema.Literals(["idle", "running"]);
74
+ export class Session extends Schema.Opaque()(Schema.Struct({
75
+ id: Schema.String,
76
+ status: open(SessionStatus),
77
+ ...settingsFields(Schema.optionalKey),
78
+ /** The agent's reply being written, as written so far: present only while one is. */
79
+ reply: Schema.optionalKey(Schema.Struct({ text: Schema.String, thinking: Schema.optionalKey(Schema.String) })),
80
+ usage: Usage,
81
+ })) {
82
+ }
83
+ /** A message's statuses: `queued` and `running` until it ends, then one of the four ends, which are all its ends. */
84
+ export const MessageStatus = Schema.Literals(["queued", "running", "completed", "incomplete", "failed", "canceled"]);
85
+ export class Message extends Schema.Opaque()(Schema.Struct({
86
+ id: Schema.String,
87
+ sessionId: Schema.String,
88
+ idempotencyKey: Schema.optionalKey(Schema.String),
89
+ status: open(MessageStatus),
90
+ /** Its `user` entry, once the agent took it. */
91
+ entryId: Schema.optionalKey(Schema.String),
92
+ /** The `assistant` entry the agent stopped on for it: when `completed`, and when `incomplete`. */
93
+ answer: Schema.optionalKey(Schema.Struct({ entryId: Schema.String, text: Schema.String })),
94
+ /** Why it `failed`. */
95
+ error: Schema.optionalKey(AgentErrorData),
96
+ })) {
97
+ }
98
+ const ENDS = new Set(["completed", "incomplete", "failed", "canceled"]);
99
+ /** Whether a message has ended: its ends are a closed set, so any other status, known or not, has not (§7.1). */
100
+ export const hasEnded = (message) => ENDS.has(message.status);
101
+ /**
102
+ * One durable record of a session's history. Its `data` by `kind`:
103
+ * - `user`: `{ content: ContentPart[], messageId? }`
104
+ * - `assistant`: `{ text, thinking?, toolCalls?: { id, name, args }[], stop?: "max_tokens" | "failed" | "aborted",
105
+ * error?, usage }`
106
+ * - `tool_result`: `{ toolCallId, toolName, isError, content: ContentPart[] }`
107
+ * - `compaction`: `{ summary }`
108
+ */
109
+ export class Entry extends Schema.Opaque()(Schema.Struct({ id: Schema.String, timestamp: Schema.Number, kind: Schema.String, data: Schema.Json })) {
110
+ }
111
+ export const SessionEvent = Schema.Union([
112
+ Schema.Struct({ type: Schema.Literal("entry"), entry: Entry }),
113
+ Schema.Struct({ type: Schema.Literal("state"), session: Session }),
114
+ Schema.Struct({ type: Schema.Literal("delta"), channel: Schema.Literals(["text", "thinking"]), text: Schema.String }),
115
+ Schema.Struct({
116
+ type: Schema.Literal("tool_started"),
117
+ toolCallId: Schema.String,
118
+ name: Schema.String,
119
+ args: Schema.Json,
120
+ }),
121
+ Schema.Struct({ type: Schema.Literal("tool_progress"), toolCallId: Schema.String, text: Schema.String }),
122
+ Schema.Struct({
123
+ type: Schema.Literal("retrying"),
124
+ attempt: Schema.Number,
125
+ maxAttempts: Schema.Number,
126
+ delayMs: Schema.Number,
127
+ reason: Schema.String,
128
+ }),
129
+ Schema.Struct({ type: Schema.Literal("done"), message: Message }),
130
+ Schema.Struct({ type: Schema.Literal("stream_error"), error: AgentErrorData }),
131
+ ]);
132
+ export const MessageStreamEvent = Schema.Union([
133
+ Schema.Struct({ type: Schema.Literal("message"), message: Message }),
134
+ ...SessionEvent.members,
135
+ ]);
136
+ const Limit = (max) => Schema.Int.check(Schema.isBetween({ minimum: 1, maximum: max }));
137
+ const Seconds = Schema.Number.check(Schema.isGreaterThanOrEqualTo(0));
138
+ export const SessionSettings = Schema.Struct(settingsFields(Schema.optional));
139
+ export const CreateSessionOptions = Schema.Struct({
140
+ ...settingsFields(Schema.optional),
141
+ forkFrom: Schema.optional(Schema.Struct({ sessionId: Schema.String, entryId: Schema.optional(Schema.String) })),
142
+ });
143
+ /** `null` clears a field back to the deployment's. */
144
+ export const SessionChanges = Schema.Struct({
145
+ model: Schema.optional(Schema.NullOr(ModelRef)),
146
+ thinkingLevel: Schema.optional(Schema.NullOr(ThinkingLevel)),
147
+ instructions: Schema.optional(Schema.NullOr(Schema.String)),
148
+ tools: Schema.optional(Schema.NullOr(Schema.Array(Schema.String))),
149
+ });
150
+ export const ListOptions = Schema.Struct({
151
+ limit: Schema.optional(Limit(500)),
152
+ after: Schema.optional(Schema.String),
153
+ });
154
+ export const EntriesOptions = Schema.Struct({
155
+ after: Schema.optional(Schema.String),
156
+ before: Schema.optional(Schema.String),
157
+ limit: Schema.optional(Limit(500)),
158
+ });
159
+ export const IdempotencyKey = Schema.String.check(Schema.isMinLength(1), Schema.isMaxLength(256));
160
+ export const SendRequest = Schema.Struct({
161
+ sessionId: Schema.String,
162
+ /** A string is one text part. */
163
+ content: Schema.Union([
164
+ Schema.String,
165
+ Schema.Array(Schema.Union([TextPart, ImagePart])).check(Schema.isMinLength(1)),
166
+ ]),
167
+ /** The Caller's key for this message, unique within the session (§5.2). */
168
+ idempotencyKey: Schema.optional(IdempotencyKey),
169
+ /** What the message is when the session is busy with another (§5.3). Default: "queue". */
170
+ whenBusy: Schema.optional(Schema.Literals(["queue", "steer", "reject"])),
171
+ });
172
+ /** In seconds: how long a call waits for a message to end before it answers with the message as it is then. */
173
+ export const Wait = Seconds;
174
+ /** A message, by its id or by the key it was sent with. */
175
+ export const MessageKey = Schema.Union([
176
+ Schema.Struct({ sessionId: Schema.String, messageId: Schema.String }),
177
+ Schema.Struct({ sessionId: Schema.String, idempotencyKey: IdempotencyKey }),
178
+ ]);
179
+ export const CompactOptions = Schema.Struct({ instructions: Schema.optional(Schema.String) });
180
+ export const LIMITS = {
181
+ queuedPerSession: 20,
182
+ inFlightPerProcess: 100,
183
+ pageDefault: 100,
184
+ pageBytes: 4 << 20,
185
+ /** The longest one HTTP request waits for a message; `connectAgent` asks again until its Caller's `wait` is met. */
186
+ httpWaitSeconds: 60,
187
+ };
188
+ const RETRYABLE_CODES = new Set(["busy", "unavailable"]);
189
+ export function agentError(code, message, details) {
190
+ return new AgentError({
191
+ code,
192
+ message,
193
+ retryable: RETRYABLE_CODES.has(code),
194
+ ...(details === undefined ? {} : { details }),
195
+ });
196
+ }
197
+ /** An error as data, the way a message's `error` and a `stream_error` carry it. */
198
+ export function errorData(error) {
199
+ const { code, message, retryable, details } = error;
200
+ return { code, message, retryable, ...(details === undefined ? {} : { details }) };
201
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * The text of the agent's replies in one message's stream, as a renderer shows it: the live deltas, and what an
3
+ * `assistant` entry says that no delta did. Deltas are live only (SPEC.md §6.1), so work that ended before its
4
+ * stream subscribed, or that the stream fell behind on, has its text in the entry alone.
5
+ */
6
+ import type { SessionEvent } from "./agent-api.ts";
7
+ /** Feed it a message's stream; it answers the text each event adds. */
8
+ export declare function answerText(): (event: SessionEvent) => string;