@fastagent-sh/fastagent 0.24.3 → 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 -517
  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 -83
  455. package/dist/engines/pi/turn-kit.js +0 -275
  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
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Auth for the pi engine: a read-WRITE {@link CredentialStore} over a fastagent credentials file, consumed by the
2
+ * Auth for the pi harness: a read-WRITE {@link CredentialStore} over a fastagent credentials file, consumed by the
3
3
  * `Models` collection (models.ts), and which of those files an agent reads. The write path refuses to overwrite a
4
4
  * corrupt file, so a torn read never clobbers the other providers' credentials.
5
5
  */
@@ -7,7 +7,7 @@ import { existsSync, readFileSync } from "node:fs";
7
7
  import { join } from "node:path";
8
8
  import { globalHome, SECRETS_DIRNAME, resolveOverridePath, resolveSecretsDir } from "../../paths.js";
9
9
  import { log } from "../../log.js";
10
- import { withLockedFile } from "./locked-file.js";
10
+ import { withLockedFile } from "../../locked-file.js";
11
11
  /**
12
12
  * The GLOBAL fastagent credentials file (distinct from pi's `~/.pi`), under the user-global machinery home
13
13
  * `~/.fastagent/`.
@@ -80,7 +80,7 @@ function parseForWrite(raw, where) {
80
80
  * to avoid. A provider present in neither layer is new, and new credentials belong to the primary.
81
81
  *
82
82
  * The fallback also yields to `projectAuthenticates`: a provider the project authenticates some other way (an env key,
83
- * its own models.json) never reaches it — for reading, listing or writing back.
83
+ * a provider in its config that authenticates itself) never reaches it — for reading, listing or writing back.
84
84
  */
85
85
  export function fastagentCredentialStore(path, options = {}) {
86
86
  const warn = options.warn ?? ((message) => log.warn(message));
@@ -0,0 +1,43 @@
1
+ import type { Credential, CredentialStore, Models, Provider } from "@earendil-works/pi-ai";
2
+ import { type AuthLayers, type CredentialSourceOptions, type FastagentAuthOptions } from "./credentials.ts";
3
+ /** What authenticates one provider for an agent ({@link ModelEnvironment.authStatus}). */
4
+ interface AuthStatus {
5
+ /** What satisfies it now (`OAuth`, `stored credential`, an env variable's name), after a due refresh. */
6
+ source?: string;
7
+ /** Why resolving it failed (a corrupt entry, a refresh the provider refused), when it did. */
8
+ error?: string;
9
+ /** The file that holds the stored credential, or the one a login would write; absent over a caller's store. */
10
+ path?: string;
11
+ /** The kind of credential the store holds for it, usable or not. */
12
+ stored?: Credential["type"];
13
+ /**
14
+ * An env variable that also authenticates it but goes unused, because a stored credential owns its provider: a key
15
+ * added to a deployment's value file after the box was logged in, typically.
16
+ */
17
+ shadowed?: string;
18
+ }
19
+ export interface ModelEnvironment {
20
+ /** The credentials files behind {@link credentials}; absent when the caller supplied its own store. */
21
+ auth?: AuthLayers;
22
+ credentials: CredentialStore;
23
+ /** pi's built-ins and the definition's providers, over {@link credentials}. */
24
+ models: Models;
25
+ /** Why a model list is not current, when one is not (logged already): each lists what it last had. */
26
+ catalogProblem?: string;
27
+ /**
28
+ * What authenticates `provider` here, resolved exactly as a message resolves it: the one answer the startup report
29
+ * and a deployed box's `login --if-missing` both give. `modelId` picks the model to probe with; the provider's first
30
+ * one otherwise (auth is provider-scoped).
31
+ */
32
+ authStatus(provider: string, modelId?: string): Promise<AuthStatus>;
33
+ }
34
+ /**
35
+ * The model environment of the agent in `agentDir` (or, without one, of a caller with no directory: the named or global
36
+ * credentials file). A supplied `credentialStore` is used as given; otherwise the files: the directory's own layers
37
+ * ({@link resolveAuthLayers}), or the named file, or the global one. `providers` are the definition's. The model lists
38
+ * are refreshed before it resolves, kept in the agent's state root; `force` asks the network even when they are fresh.
39
+ */
40
+ export declare function modelEnvironment(agentDir: string | undefined, source?: CredentialSourceOptions & FastagentAuthOptions, providers?: readonly Provider[], options?: {
41
+ force?: boolean;
42
+ }): Promise<ModelEnvironment>;
43
+ export {};
@@ -0,0 +1,82 @@
1
+ /**
2
+ * An agent's MODEL ENVIRONMENT as one value: the credential store its messages authenticate through, the models they
3
+ * resolve against (models.ts) with their lists refreshed (catalog.ts), and what authenticates a provider there. Every
4
+ * reader builds it here (the serve, the startup report, a deployed box's `login --if-missing`, `info`, `login`, the
5
+ * model list, `deploy`'s pre-flight), so none can read other credential layers, another registry, or older lists than
6
+ * the Agent does.
7
+ */
8
+ import { join } from "node:path";
9
+ import { log } from "../../log.js";
10
+ import { resolveStateRoot } from "../../paths.js";
11
+ import { catalogsIn } from "./catalog.js";
12
+ import { GLOBAL_AUTH_PATH, assertOneCredentialSource, fastagentCredentialStore, resolveAuthLayers, } from "./credentials.js";
13
+ import { environmentAuth, modelsOver, probeAuthSource } from "./models.js";
14
+ /**
15
+ * The model environment of the agent in `agentDir` (or, without one, of a caller with no directory: the named or global
16
+ * credentials file). A supplied `credentialStore` is used as given; otherwise the files: the directory's own layers
17
+ * ({@link resolveAuthLayers}), or the named file, or the global one. `providers` are the definition's. The model lists
18
+ * are refreshed before it resolves, kept in the agent's state root; `force` asks the network even when they are fresh.
19
+ */
20
+ export async function modelEnvironment(agentDir, source = {}, providers = [], options = {}) {
21
+ assertOneCredentialSource(source);
22
+ const files = source.credentialStore
23
+ ? undefined
24
+ : agentDir
25
+ ? resolveAuthLayers(agentDir, source.authPath)
26
+ : { path: source.authPath ?? GLOBAL_AUTH_PATH };
27
+ const store = files === undefined ? undefined : layeredStore(files, providers, source.warn);
28
+ const credentials = source.credentialStore ?? store;
29
+ const catalogs = catalogsIn(agentDir === undefined ? undefined : join(resolveStateRoot(agentDir), "models"));
30
+ const models = modelsOver(credentials, providers, catalogs);
31
+ const catalogProblem = await catalogs.refresh(models, options);
32
+ if (catalogProblem !== undefined)
33
+ log.warn(`[fastagent] ${catalogProblem}`);
34
+ return {
35
+ ...(files ? { auth: files } : {}),
36
+ credentials,
37
+ models,
38
+ ...(catalogProblem === undefined ? {} : { catalogProblem }),
39
+ async authStatus(provider, modelId) {
40
+ const id = modelId ?? models.getProvider(provider)?.getModels()[0]?.id;
41
+ let resolved = {};
42
+ if (id !== undefined) {
43
+ try {
44
+ const found = await probeAuthSource(models, `${provider}/${id}`);
45
+ if (found !== undefined)
46
+ resolved = { source: found };
47
+ }
48
+ catch (error) {
49
+ // The first line: pi folds the request's stack into the message of a failed refresh.
50
+ resolved = { error: String(error.message).split("\n")[0] };
51
+ }
52
+ }
53
+ // `read` never refreshes: this is the kind on file, whatever became of it.
54
+ const stored = (await credentials.read(provider))?.type;
55
+ const fromEnvironment = stored === undefined ? undefined : (await environmentAuth(provider, process.env, undefined, providers))?.source;
56
+ const shadowed = resolved.source !== undefined && fromEnvironment !== resolved.source ? fromEnvironment : undefined;
57
+ return {
58
+ ...(store ? { path: await store.layerOf(provider) } : {}),
59
+ ...resolved,
60
+ ...(stored !== undefined ? { stored } : {}),
61
+ ...(shadowed !== undefined ? { shadowed } : {}),
62
+ };
63
+ },
64
+ };
65
+ }
66
+ /**
67
+ * The credential store an agent reads through: its own file, then the user-global one for a provider the PROJECT
68
+ * authenticates no other way (its own file, a provider in code that needs no key, or the environment). A deployment
69
+ * never has the global file, so a global login that outranked, say, an `ANTHROPIC_API_KEY` in `.secrets/.env` would
70
+ * run one credential here and a different one deployed.
71
+ */
72
+ function layeredStore(auth, providers, warn) {
73
+ const own = () => fastagentCredentialStore(auth.path, { ...(warn ? { warn } : {}) });
74
+ if (auth.fallback === undefined)
75
+ return own();
76
+ const project = modelsOver(own(), providers);
77
+ return fastagentCredentialStore(auth.path, {
78
+ ...(warn ? { warn } : {}),
79
+ fallbackPath: auth.fallback,
80
+ projectAuthenticates: async (providerId) => (await project.checkAuth(providerId)) !== undefined,
81
+ });
82
+ }
@@ -2,39 +2,59 @@
2
2
  * Signing in to a MODEL PROVIDER, for any front end: {@link login} runs one provider's flow over pi-ai's own
3
3
  * `AuthInteraction` and persists the credential through the same {@link fastagentCredentialStore} the runtime reads
4
4
  * (one writer, one lock/corruption semantics); {@link loginOptions} is the list a picker offers. `fastagent login` is
5
- * one front end ({@link loginFlow}: terminal menus, then {@link login}); a GUI client is another.
5
+ * one front end ({@link loginFlow}: terminal menus, then {@link login}); `login --deployment` drives the same flow on a
6
+ * deployed box over a relay (cli/login-relay.ts).
6
7
  */
7
8
  import { type AuthInteraction, type CredentialStore, type Provider } from "@earendil-works/pi-ai";
8
9
  export type LoginMethod = "oauth" | "api_key";
9
10
  /** The user backed out of a prompt/menu, or the flow was aborted — a decision, not a failure. */
10
11
  export declare class LoginCancelled extends Error {
11
12
  }
12
- /** One provider sign-in a picker can offer. */
13
+ /** A sign-in that cannot start as asked: an unknown provider, or a choice a caller without menus did not make. */
14
+ export declare class LoginRefused extends Error {
15
+ /** The sign-ins it could be instead, for a caller to choose from. */
16
+ readonly choices: readonly LoginOption[];
17
+ constructor(message: string, choices: readonly LoginOption[]);
18
+ }
19
+ /** One provider sign-in a picker can offer, as pi's `/login` offers it. */
13
20
  export interface LoginOption {
14
21
  provider: string;
22
+ /** The provider's name, as pi lists it: "OpenAI", "OpenAI Codex (legacy)". */
23
+ name: string;
15
24
  method: LoginMethod;
16
- /** The method's own name, e.g. "Anthropic (Claude Pro/Max)" or "Anthropic API key". */
25
+ /** What signing in this way is called: the provider's own label ("Sign in with ChatGPT"), else pi's. */
17
26
  label: string;
18
27
  /** An OAuth login backed by a provider subscription. */
19
28
  subscription: boolean;
29
+ /** Its key comes from the environment, never from a sign-in: picking it says so. */
30
+ external: boolean;
20
31
  /**
21
- * What the store holds for this provider now. It keeps ONE credential per provider, so signing in with the other
22
- * method replaces it — worth a warning in a client.
32
+ * What authenticates the provider now: the kind of credential, and `OAuth`, `stored credential` or an env variable
33
+ * such as `OPENAI_API_KEY`. The store keeps ONE credential per provider, so signing in with the other method
34
+ * replaces a stored one, which a picker shows.
23
35
  */
24
- stored?: LoginMethod;
36
+ status?: {
37
+ type: LoginMethod;
38
+ source: string;
39
+ };
40
+ /** Why checking what authenticates it failed, when it did. */
41
+ problem?: string;
25
42
  }
26
43
  /**
27
- * Every interactive sign-in of pi's built-in providers, with what `credentials` (a credentials file, or the caller's
28
- * own store) already holds for each. A provider whose key can only come from its env var offers none and is left out.
44
+ * Every sign-in of pi's built-in providers, sorted by name as pi's `/login` lists them, with what authenticates each
45
+ * one here: a credential `credentials` (a credentials file, or the caller's own store) holds, else this process's
46
+ * environment, which a stored credential outranks.
29
47
  */
30
48
  export declare function loginOptions(credentials: string | CredentialStore): Promise<LoginOption[]>;
31
49
  /** {@link loginOptions} over pi's built-ins plus `providers` (a same id replaces one). Not public: a test seam. */
32
50
  export declare function loginOptionsOver(credentials: string | CredentialStore, providers?: readonly Provider[]): Promise<LoginOption[]>;
51
+ /** An option's status as pi's picker writes it after the provider's name. */
52
+ export declare function loginStatusText(option: LoginOption): string;
33
53
  export type LoginRequest = {
34
54
  /**
35
- * Stable installation identity (Sign in with ChatGPT requires one). With `authPath` it defaults to Pi settings
36
- * beside that file (`settings.json`, written before the flow runs); over a caller's `credentialStore` there is no
37
- * file to keep it beside, so a flow that needs one fails unless this supplies it.
55
+ * Stable installation identity (Sign in with ChatGPT requires one). With `authPath` it defaults to `device.json`
56
+ * beside that file, written before the flow runs; over a caller's `credentialStore` there is no file to keep it
57
+ * beside, so a flow that needs one fails unless this supplies it.
38
58
  */
39
59
  getDeviceId?: () => string;
40
60
  provider: string;
@@ -66,7 +86,6 @@ export interface LoginResult {
66
86
  * written. Credentials are provider-scoped, so any of the provider's models answers the question the check asks (does
67
87
  * the provider refuse the key, HTTP 401); a key the provider rejects is never stored, and the provider's key flow runs
68
88
  * again (the provider and method were not the mistake). Progress and outcome go out through `interaction.notify`.
69
- * A provider an agent's models.json points elsewhere is not this call's: store that key with `fastagentCredentialStore`.
70
89
  *
71
90
  * Aborting `interaction.signal` at any point, the verification included, rejects with {@link LoginCancelled} and
72
91
  * writes no credential (an OAuth device ID, the installation's identity, is kept once created). Every prompt carries a signal that aborts on it, on the prompt's own signal (a callback server
@@ -75,14 +94,11 @@ export interface LoginResult {
75
94
  export declare function login(request: LoginRequest): Promise<LoginResult>;
76
95
  /** Not public: what the CLI and the tests add to {@link login}. */
77
96
  export interface LoginInternals {
78
- /** Providers added to pi's built-ins (a same id replaces one): a test seam. */
79
- providers?: readonly Provider[];
80
97
  /**
81
- * The agent the key is for. Verification then runs on THAT agent's registry (its models.json and the machine's over
82
- * the built-ins), so the check reaches the endpoint its turns will: a models.json can point a built-in provider at a
83
- * gateway, where the provider's own endpoint would refuse the gateway's key and loop the person through re-entry.
98
+ * The definition's providers, added to pi's built-ins (a same id replaces one): a key is verified against the
99
+ * endpoint its turns will reach, which a provider in code can point at a gateway.
84
100
  */
85
- agentDir?: string;
101
+ providers?: readonly Provider[];
86
102
  /**
87
103
  * A model spec to verify an entered key with, when the registry has it as one of this provider's models: the
88
104
  * first-run picker's choice, the request the agent is about to make. Otherwise pi's default model for the provider
@@ -108,28 +124,43 @@ export interface IoOption {
108
124
  export interface LoginIO {
109
125
  /** Single-choice picker. */
110
126
  select(message: string, options: IoOption[]): Promise<string | undefined>;
111
- /** Free-text or hidden input. */
127
+ /**
128
+ * Free-text or hidden input. `redirect`: what is asked is the address the browser ended on after signing in, or the
129
+ * code its page showed (pi-ai's `manual_code`).
130
+ */
112
131
  prompt(message: string, opts?: {
113
132
  hidden?: boolean;
133
+ redirect?: boolean;
114
134
  signal?: AbortSignal;
115
135
  }): Promise<string | undefined>;
116
136
  /** Print an informational line (auth URL, device code, progress). */
117
137
  note(message: string): void;
118
- /** Best-effort open a URL in the browser (printed regardless). */
119
- openUrl(url: string): void;
138
+ /** Best-effort open a URL in the browser (printed regardless); `userCode` is what a device sign-in enters there. */
139
+ openUrl(url: string, userCode?: string): void;
120
140
  }
121
141
  /**
122
- * `fastagent login`: ask only what was not given (method, then provider, from {@link loginOptions} with each one's
123
- * stored credential), then {@link login}.
142
+ * `fastagent login` in a terminal: ask only what was not given, as pi's `/login` asks it (how to sign in, then the
143
+ * provider; a provider named by its id or its name, then how, when it offers both), then {@link login}.
124
144
  */
125
145
  export declare function loginFlow(io: LoginIO, options: {
126
146
  authPath: string;
127
147
  provider?: string;
128
148
  method?: LoginMethod;
129
- providers?: Provider[];
149
+ providers?: readonly Provider[];
130
150
  signal?: AbortSignal;
151
+ /**
152
+ * Where the menus read what authenticates each provider now: the credentials the agent reads (its file over the
153
+ * global one), which can hold more than the file a sign-in writes. Default that file.
154
+ */
155
+ statusFrom?: CredentialStore;
131
156
  /** {@link LoginInternals.verifyWith}. */
132
157
  verifyWith?: string;
133
- /** {@link LoginInternals.agentDir}. */
134
- agentDir?: string;
135
158
  }): Promise<LoginResult>;
159
+ /**
160
+ * The sign-in `given` names, or, with `menus`, the one a person picks; without them a choice not given refuses
161
+ * ({@link LoginRefused}) naming how to give it.
162
+ */
163
+ export declare function chooseLogin(offered: readonly LoginOption[], given: {
164
+ provider?: string;
165
+ method?: LoginMethod;
166
+ }, menus: LoginIO | undefined): Promise<LoginOption>;