@fastagent-sh/fastagent 0.21.1 → 0.22.1

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 (388) hide show
  1. package/README.md +9 -12
  2. package/dist/agent.d.ts +24 -37
  3. package/dist/agent.js +7 -15
  4. package/dist/atomic-write.d.ts +13 -17
  5. package/dist/atomic-write.js +18 -29
  6. package/dist/bind.d.ts +12 -22
  7. package/dist/bind.js +18 -27
  8. package/dist/channel.d.ts +11 -33
  9. package/dist/channels/agentcore-limits.d.ts +2 -13
  10. package/dist/channels/agentcore-limits.js +2 -13
  11. package/dist/channels/agentcore-protocol.d.ts +67 -58
  12. package/dist/channels/agentcore-protocol.js +23 -15
  13. package/dist/channels/agentcore-service.d.ts +19 -33
  14. package/dist/channels/agentcore-service.js +176 -59
  15. package/dist/channels/agentcore.d.ts +39 -33
  16. package/dist/channels/agentcore.js +90 -224
  17. package/dist/channels/body.d.ts +15 -2
  18. package/dist/channels/body.js +24 -2
  19. package/dist/channels/busy.d.ts +1 -21
  20. package/dist/channels/busy.js +2 -39
  21. package/dist/channels/control.d.ts +17 -62
  22. package/dist/channels/control.js +74 -182
  23. package/dist/channels/define-channel.d.ts +39 -0
  24. package/dist/channels/define-channel.js +9 -0
  25. package/dist/channels/discover.d.ts +10 -31
  26. package/dist/channels/discover.js +37 -31
  27. package/dist/channels/feishu/bootstrap-token.d.ts +1 -8
  28. package/dist/channels/feishu/bootstrap-token.js +7 -23
  29. package/dist/channels/feishu/card.d.ts +14 -28
  30. package/dist/channels/feishu/card.js +16 -30
  31. package/dist/channels/feishu/cloud.d.ts +1 -5
  32. package/dist/channels/feishu/context-buffer.d.ts +4 -23
  33. package/dist/channels/feishu/context-buffer.js +8 -31
  34. package/dist/channels/feishu/crypto.d.ts +10 -5
  35. package/dist/channels/feishu/crypto.js +12 -19
  36. package/dist/channels/feishu/feishu-api.d.ts +2 -1
  37. package/dist/channels/feishu/feishu-api.js +5 -4
  38. package/dist/channels/feishu/feishu.d.ts +4 -10
  39. package/dist/channels/feishu/feishu.js +113 -227
  40. package/dist/channels/feishu/invoke-turn.d.ts +5 -4
  41. package/dist/channels/feishu/invoke-turn.js +36 -54
  42. package/dist/channels/feishu/model.d.ts +4 -21
  43. package/dist/channels/feishu/model.js +1 -8
  44. package/dist/channels/feishu/normalize.d.ts +2 -10
  45. package/dist/channels/feishu/normalize.js +7 -42
  46. package/dist/channels/feishu/parse.d.ts +9 -29
  47. package/dist/channels/feishu/parse.js +8 -26
  48. package/dist/channels/feishu/preview.d.ts +12 -14
  49. package/dist/channels/feishu/preview.js +108 -207
  50. package/dist/channels/feishu/register-app.d.ts +8 -23
  51. package/dist/channels/feishu/register-app.js +7 -20
  52. package/dist/channels/feishu/register-webhook.d.ts +2 -9
  53. package/dist/channels/feishu/register-webhook.js +9 -33
  54. package/dist/channels/feishu/scaffold/channel.ts +27 -19
  55. package/dist/channels/feishu/scaffold/channel.websocket.ts +31 -0
  56. package/dist/channels/feishu/setup-mode.d.ts +11 -36
  57. package/dist/channels/feishu/setup-mode.js +7 -26
  58. package/dist/channels/feishu/ws-ingress.d.ts +1 -2
  59. package/dist/channels/feishu/ws-ingress.js +6 -8
  60. package/dist/channels/http.d.ts +15 -15
  61. package/dist/channels/http.js +19 -9
  62. package/dist/channels/kit/attachment-path.d.ts +4 -5
  63. package/dist/channels/kit/attachment-path.js +10 -34
  64. package/dist/channels/kit/context-buffer.d.ts +14 -21
  65. package/dist/channels/kit/context-buffer.js +25 -38
  66. package/dist/channels/kit/delivery.d.ts +35 -0
  67. package/dist/channels/kit/delivery.js +129 -0
  68. package/dist/channels/kit/event-stream.d.ts +5 -0
  69. package/dist/channels/kit/event-stream.js +29 -0
  70. package/dist/channels/kit/invoke-turn-kit.d.ts +53 -26
  71. package/dist/channels/kit/invoke-turn-kit.js +89 -32
  72. package/dist/channels/kit/preview-kit.d.ts +18 -72
  73. package/dist/channels/kit/preview-kit.js +22 -88
  74. package/dist/channels/kit/signature.d.ts +3 -9
  75. package/dist/channels/kit/signature.js +3 -9
  76. package/dist/channels/kit/state.d.ts +1 -2
  77. package/dist/channels/kit/state.js +5 -14
  78. package/dist/channels/kit/stop-command.d.ts +1 -2
  79. package/dist/channels/kit/stop-command.js +6 -9
  80. package/dist/channels/kit/tasks.d.ts +1 -1
  81. package/dist/channels/kit/tasks.js +8 -21
  82. package/dist/channels/kit/text.d.ts +2 -16
  83. package/dist/channels/kit/text.js +23 -31
  84. package/dist/channels/kit/thread-participants.d.ts +4 -17
  85. package/dist/channels/kit/thread-participants.js +8 -55
  86. package/dist/channels/kit/transport.d.ts +26 -0
  87. package/dist/channels/kit/transport.js +20 -0
  88. package/dist/channels/kit/turn-queue.d.ts +7 -11
  89. package/dist/channels/kit/turn-queue.js +21 -39
  90. package/dist/channels/kit/turn-runner.d.ts +32 -18
  91. package/dist/channels/kit/turn-runner.js +98 -53
  92. package/dist/channels/kit/turn-store.d.ts +32 -32
  93. package/dist/channels/kit/turn-store.js +45 -88
  94. package/dist/channels/lark/lark.d.ts +1 -5
  95. package/dist/channels/lark/onboard.d.ts +3 -12
  96. package/dist/channels/lark/onboard.js +3 -13
  97. package/dist/channels/lark/scaffold/channel.ts +27 -19
  98. package/dist/channels/lark/scaffold/channel.websocket.ts +31 -0
  99. package/dist/channels/registration.d.ts +9 -35
  100. package/dist/channels/registration.js +6 -37
  101. package/dist/channels/secret.js +2 -5
  102. package/dist/channels/serve.d.ts +47 -44
  103. package/dist/channels/serve.js +165 -101
  104. package/dist/channels/slack/config-api.d.ts +4 -27
  105. package/dist/channels/slack/config-api.js +5 -34
  106. package/dist/channels/slack/context-buffer.d.ts +2 -3
  107. package/dist/channels/slack/context-buffer.js +5 -5
  108. package/dist/channels/slack/invoke-turn.d.ts +3 -1
  109. package/dist/channels/slack/invoke-turn.js +25 -34
  110. package/dist/channels/slack/manifest.js +1 -3
  111. package/dist/channels/slack/model.d.ts +1 -2
  112. package/dist/channels/slack/model.js +1 -1
  113. package/dist/channels/slack/onboard.d.ts +4 -3
  114. package/dist/channels/slack/onboard.js +8 -11
  115. package/dist/channels/slack/onboarding-state.d.ts +3 -5
  116. package/dist/channels/slack/onboarding-state.js +9 -6
  117. package/dist/channels/slack/parse.d.ts +4 -13
  118. package/dist/channels/slack/parse.js +7 -28
  119. package/dist/channels/slack/preview.d.ts +12 -2
  120. package/dist/channels/slack/preview.js +292 -269
  121. package/dist/channels/slack/reaction.d.ts +11 -3
  122. package/dist/channels/slack/reaction.js +19 -8
  123. package/dist/channels/slack/register-webhook.js +4 -7
  124. package/dist/channels/slack/scaffold/channel.ts +20 -13
  125. package/dist/channels/slack/scaffold/slack-send.ts +2 -2
  126. package/dist/channels/slack/setup-server.d.ts +1 -5
  127. package/dist/channels/slack/setup-server.js +1 -5
  128. package/dist/channels/slack/shared-api.d.ts +1 -4
  129. package/dist/channels/slack/shared-api.js +2 -13
  130. package/dist/channels/slack/slack-api.d.ts +2 -1
  131. package/dist/channels/slack/slack-api.js +6 -4
  132. package/dist/channels/slack/slack.d.ts +11 -14
  133. package/dist/channels/slack/slack.js +121 -122
  134. package/dist/channels/sse.d.ts +1 -1
  135. package/dist/channels/sse.js +1 -1
  136. package/dist/channels/telegram/context-buffer.d.ts +7 -22
  137. package/dist/channels/telegram/context-buffer.js +6 -23
  138. package/dist/channels/telegram/invoke-turn.d.ts +7 -7
  139. package/dist/channels/telegram/invoke-turn.js +24 -43
  140. package/dist/channels/telegram/parse.d.ts +24 -51
  141. package/dist/channels/telegram/parse.js +32 -84
  142. package/dist/channels/telegram/preview.d.ts +10 -1
  143. package/dist/channels/telegram/preview.js +79 -100
  144. package/dist/channels/telegram/register-webhook.js +5 -23
  145. package/dist/channels/telegram/scaffold/channel.ts +25 -18
  146. package/dist/channels/telegram/scaffold/telegram-send.ts +6 -4
  147. package/dist/channels/telegram/telegram-api.d.ts +4 -3
  148. package/dist/channels/telegram/telegram-api.js +9 -7
  149. package/dist/channels/telegram/telegram.d.ts +4 -18
  150. package/dist/channels/telegram/telegram.js +38 -94
  151. package/dist/channels/telegram/turn-store.d.ts +11 -14
  152. package/dist/channels/telegram/turn-store.js +8 -6
  153. package/dist/channels/wait-health.d.ts +4 -6
  154. package/dist/channels/wait-health.js +10 -14
  155. package/dist/cli/add-feishu.d.ts +2 -12
  156. package/dist/cli/add-feishu.js +24 -71
  157. package/dist/cli/add-slack.d.ts +5 -3
  158. package/dist/cli/add-slack.js +53 -76
  159. package/dist/cli/auth-view.d.ts +2 -16
  160. package/dist/cli/auth-view.js +2 -16
  161. package/dist/cli/commands/add.js +25 -40
  162. package/dist/cli/commands/chat.d.ts +0 -1
  163. package/dist/cli/commands/chat.js +5 -6
  164. package/dist/cli/commands/deploy/agentcore.js +60 -65
  165. package/dist/cli/commands/deploy/docker.js +50 -23
  166. package/dist/cli/commands/deploy/fly.js +23 -61
  167. package/dist/cli/commands/deploy/railway.js +23 -18
  168. package/dist/cli/commands/deploy/shared.d.ts +38 -57
  169. package/dist/cli/commands/deploy/shared.js +40 -59
  170. package/dist/cli/commands/deploy.d.ts +10 -27
  171. package/dist/cli/commands/deploy.js +38 -60
  172. package/dist/cli/commands/destroy.d.ts +4 -0
  173. package/dist/cli/commands/destroy.js +56 -0
  174. package/dist/cli/commands/dev.d.ts +2 -1
  175. package/dist/cli/commands/dev.js +20 -23
  176. package/dist/cli/commands/info.d.ts +0 -2
  177. package/dist/cli/commands/info.js +83 -49
  178. package/dist/cli/commands/init.d.ts +1 -2
  179. package/dist/cli/commands/init.js +16 -55
  180. package/dist/cli/commands/invoke.d.ts +0 -1
  181. package/dist/cli/commands/invoke.js +5 -7
  182. package/dist/cli/commands/login.d.ts +2 -1
  183. package/dist/cli/commands/login.js +33 -38
  184. package/dist/cli/commands/logs.js +3 -4
  185. package/dist/cli/commands/models.js +1 -5
  186. package/dist/cli/commands/routine-run.d.ts +6 -0
  187. package/dist/cli/commands/routine-run.js +47 -0
  188. package/dist/cli/commands/routine.d.ts +25 -0
  189. package/dist/cli/commands/routine.js +122 -0
  190. package/dist/cli/commands/start.d.ts +31 -3
  191. package/dist/cli/commands/start.js +131 -81
  192. package/dist/cli/commands/tool.js +26 -12
  193. package/dist/cli/fail.d.ts +13 -23
  194. package/dist/cli/fail.js +20 -23
  195. package/dist/cli/invoke-stream.d.ts +1 -8
  196. package/dist/cli/kernel.d.ts +6 -38
  197. package/dist/cli/kernel.js +14 -77
  198. package/dist/cli/models-view.d.ts +1 -9
  199. package/dist/cli/models-view.js +11 -22
  200. package/dist/cli/program.d.ts +5 -6
  201. package/dist/cli/program.js +120 -157
  202. package/dist/cli/serve.d.ts +57 -41
  203. package/dist/cli/serve.js +94 -121
  204. package/dist/cli/shared.d.ts +15 -61
  205. package/dist/cli/shared.js +55 -181
  206. package/dist/cli.js +1 -8
  207. package/dist/collect.d.ts +6 -0
  208. package/dist/collect.js +6 -0
  209. package/dist/core.d.ts +4 -1
  210. package/dist/core.js +9 -7
  211. package/dist/declared-secrets.d.ts +55 -0
  212. package/dist/declared-secrets.js +88 -0
  213. package/dist/deploy/agentcore/aws-cli.d.ts +91 -0
  214. package/dist/deploy/agentcore/aws-cli.js +64 -0
  215. package/dist/deploy/agentcore/destroy.d.ts +51 -0
  216. package/dist/deploy/agentcore/destroy.js +273 -0
  217. package/dist/deploy/agentcore/forwarder.js +28 -79
  218. package/dist/deploy/agentcore/logs.d.ts +2 -18
  219. package/dist/deploy/agentcore/logs.js +27 -51
  220. package/dist/deploy/agentcore/plan.d.ts +85 -105
  221. package/dist/deploy/agentcore/plan.js +152 -314
  222. package/dist/deploy/agentcore/run.d.ts +28 -28
  223. package/dist/deploy/agentcore/run.js +227 -306
  224. package/dist/deploy/agentcore/zip.d.ts +2 -15
  225. package/dist/deploy/agentcore/zip.js +3 -17
  226. package/dist/deploy/build-context.d.ts +21 -0
  227. package/dist/deploy/build-context.js +137 -0
  228. package/dist/deploy/channel-ingress.d.ts +26 -39
  229. package/dist/deploy/channel-ingress.js +57 -28
  230. package/dist/deploy/container.d.ts +20 -34
  231. package/dist/deploy/container.js +49 -100
  232. package/dist/deploy/docker/plan.d.ts +12 -11
  233. package/dist/deploy/docker/plan.js +43 -24
  234. package/dist/deploy/docker/run.d.ts +22 -25
  235. package/dist/deploy/docker/run.js +39 -37
  236. package/dist/deploy/fly/plan.d.ts +15 -44
  237. package/dist/deploy/fly/plan.js +41 -73
  238. package/dist/deploy/fly/run.d.ts +16 -51
  239. package/dist/deploy/fly/run.js +42 -95
  240. package/dist/deploy/hosts.d.ts +24 -3
  241. package/dist/deploy/hosts.js +24 -3
  242. package/dist/deploy/preflight.d.ts +47 -41
  243. package/dist/deploy/preflight.js +282 -383
  244. package/dist/deploy/railway/plan.d.ts +16 -42
  245. package/dist/deploy/railway/plan.js +42 -60
  246. package/dist/deploy/railway/run.d.ts +30 -68
  247. package/dist/deploy/railway/run.js +86 -100
  248. package/dist/deploy/registration-gate.d.ts +6 -13
  249. package/dist/deploy/residency.d.ts +37 -0
  250. package/dist/deploy/residency.js +24 -0
  251. package/dist/deploy/runner.d.ts +10 -9
  252. package/dist/deploy/runner.js +7 -18
  253. package/dist/deploy/secrets.d.ts +40 -41
  254. package/dist/deploy/secrets.js +117 -103
  255. package/dist/deploy/workspace.d.ts +50 -0
  256. package/dist/deploy/workspace.js +197 -0
  257. package/dist/dev-supervisor.d.ts +1 -9
  258. package/dist/dev-supervisor.js +21 -64
  259. package/dist/effect-port.d.ts +50 -0
  260. package/dist/effect-port.js +77 -0
  261. package/dist/engines/pi/agent-session-factory.d.ts +50 -69
  262. package/dist/engines/pi/agent-session-factory.js +249 -146
  263. package/dist/engines/pi/auth.d.ts +15 -11
  264. package/dist/engines/pi/auth.js +96 -99
  265. package/dist/engines/pi/chat.d.ts +1 -5
  266. package/dist/engines/pi/chat.js +2 -14
  267. package/dist/engines/pi/config.d.ts +53 -51
  268. package/dist/engines/pi/config.js +83 -92
  269. package/dist/engines/pi/create.d.ts +60 -75
  270. package/dist/engines/pi/create.js +108 -141
  271. package/dist/engines/pi/definition.d.ts +14 -58
  272. package/dist/engines/pi/definition.js +21 -85
  273. package/dist/engines/pi/invoke-session.d.ts +5 -25
  274. package/dist/engines/pi/invoke-session.js +233 -244
  275. package/dist/engines/pi/login.d.ts +95 -35
  276. package/dist/engines/pi/login.js +259 -107
  277. package/dist/engines/pi/machine.d.ts +31 -0
  278. package/dist/engines/pi/machine.js +106 -0
  279. package/dist/engines/pi/models.d.ts +70 -89
  280. package/dist/engines/pi/models.js +188 -81
  281. package/dist/engines/pi/open.d.ts +65 -53
  282. package/dist/engines/pi/open.js +129 -69
  283. package/dist/engines/pi/report.d.ts +3 -12
  284. package/dist/engines/pi/report.js +2 -16
  285. package/dist/engines/pi/search-tools.d.ts +1 -9
  286. package/dist/engines/pi/search-tools.js +26 -57
  287. package/dist/engines/pi/service.d.ts +2 -16
  288. package/dist/engines/pi/service.js +2 -16
  289. package/dist/engines/pi/session-builder.d.ts +5 -9
  290. package/dist/engines/pi/session-builder.js +44 -82
  291. package/dist/engines/pi/session-control.js +286 -269
  292. package/dist/engines/pi/session-effects.d.ts +14 -0
  293. package/dist/engines/pi/session-effects.js +30 -0
  294. package/dist/engines/pi/session-inheritance.d.ts +9 -18
  295. package/dist/engines/pi/session-inheritance.js +103 -160
  296. package/dist/engines/pi/session-markers.d.ts +31 -30
  297. package/dist/engines/pi/session-markers.js +26 -25
  298. package/dist/engines/pi/session-settings.d.ts +6 -22
  299. package/dist/engines/pi/session-settings.js +10 -21
  300. package/dist/engines/pi/session-store.d.ts +26 -92
  301. package/dist/engines/pi/session-store.js +96 -310
  302. package/dist/engines/pi/tool-context.d.ts +17 -45
  303. package/dist/engines/pi/tool-context.js +7 -26
  304. package/dist/engines/pi/tool.d.ts +45 -36
  305. package/dist/engines/pi/tool.js +43 -57
  306. package/dist/engines/pi/turn-kit.d.ts +14 -52
  307. package/dist/engines/pi/turn-kit.js +18 -67
  308. package/dist/engines/pi/wake-tool.d.ts +2 -10
  309. package/dist/engines/pi/wake-tool.js +7 -27
  310. package/dist/env.d.ts +27 -28
  311. package/dist/env.js +45 -50
  312. package/dist/index.js +0 -2
  313. package/dist/lark.d.ts +1 -2
  314. package/dist/lark.js +1 -2
  315. package/dist/loader.d.ts +14 -55
  316. package/dist/loader.js +24 -43
  317. package/dist/log.d.ts +2 -12
  318. package/dist/log.js +3 -24
  319. package/dist/node.d.ts +2 -15
  320. package/dist/node.js +2 -18
  321. package/dist/observe.d.ts +2 -8
  322. package/dist/open-url.d.ts +1 -1
  323. package/dist/open-url.js +1 -1
  324. package/dist/paths.d.ts +70 -134
  325. package/dist/paths.js +165 -232
  326. package/dist/pi.d.ts +4 -6
  327. package/dist/pi.js +3 -3
  328. package/dist/proxy.d.ts +16 -6
  329. package/dist/proxy.js +52 -16
  330. package/dist/runtime.d.ts +18 -12
  331. package/dist/runtime.js +18 -11
  332. package/dist/scaffold/add-channel.d.ts +14 -31
  333. package/dist/scaffold/add-channel.js +48 -112
  334. package/dist/scaffold/init.d.ts +9 -31
  335. package/dist/scaffold/init.js +45 -138
  336. package/dist/scaffold/templates/env.example +6 -4
  337. package/dist/scaffold/templates/fastagent.config.ts +36 -0
  338. package/dist/scaffold/templates.d.ts +3 -3
  339. package/dist/scaffold/templates.js +5 -8
  340. package/dist/scaffold/vendor-skill.d.ts +2 -5
  341. package/dist/scaffold/vendor-skill.js +19 -29
  342. package/dist/schedule/cron.d.ts +9 -5
  343. package/dist/schedule/cron.js +9 -11
  344. package/dist/schedule/discover.d.ts +12 -12
  345. package/dist/schedule/discover.js +43 -34
  346. package/dist/schedule/routine.d.ts +43 -0
  347. package/dist/schedule/routine.js +32 -0
  348. package/dist/schedule/run.d.ts +55 -0
  349. package/dist/schedule/run.js +146 -0
  350. package/dist/schedule/scheduler.d.ts +44 -55
  351. package/dist/schedule/scheduler.js +291 -265
  352. package/dist/schedule/state.d.ts +105 -10
  353. package/dist/schedule/state.js +293 -19
  354. package/dist/schedule/wake-alarm.d.ts +10 -23
  355. package/dist/schedule/wake-alarm.js +91 -121
  356. package/dist/schedule/wakeups.d.ts +23 -39
  357. package/dist/schedule/wakeups.js +33 -75
  358. package/dist/secrets-gate.d.ts +32 -0
  359. package/dist/secrets-gate.js +33 -0
  360. package/dist/service.d.ts +137 -98
  361. package/dist/service.js +250 -252
  362. package/dist/session-remote.d.ts +33 -44
  363. package/dist/session-remote.js +203 -192
  364. package/dist/session.d.ts +166 -229
  365. package/dist/session.js +33 -55
  366. package/dist/tunnel.d.ts +8 -36
  367. package/dist/tunnel.js +24 -65
  368. package/dist/version.d.ts +2 -2
  369. package/dist/version.js +2 -2
  370. package/package.json +10 -16
  371. package/dist/channels/agentcore-state.d.ts +0 -77
  372. package/dist/channels/agentcore-state.js +0 -276
  373. package/dist/channels/github/github.d.ts +0 -31
  374. package/dist/channels/github/github.js +0 -89
  375. package/dist/channels/github/scaffold/channel.ts +0 -25
  376. package/dist/cli/commands/attach.d.ts +0 -108
  377. package/dist/cli/commands/attach.js +0 -637
  378. package/dist/cli/commands/fire.d.ts +0 -7
  379. package/dist/cli/commands/fire.js +0 -38
  380. package/dist/cli/commands/schedule.d.ts +0 -12
  381. package/dist/cli/commands/schedule.js +0 -87
  382. package/dist/github.d.ts +0 -3
  383. package/dist/github.js +0 -2
  384. package/dist/scaffold/templates/fastagent.config.mjs +0 -23
  385. package/dist/schedule/audit.d.ts +0 -18
  386. package/dist/schedule/audit.js +0 -57
  387. package/dist/schedule/schedule.d.ts +0 -35
  388. package/dist/schedule/schedule.js +0 -23
@@ -1,22 +1,11 @@
1
- /**
2
- * AgentCore log discovery + tailing. The container's stdout/stderr lives in a per-endpoint CloudWatch
3
- * log group, while the forwarder Lambda has a separate group. This operator surface resolves the
4
- * stack's RuntimeArn, discovers the endpoint group by prefix, and tails it.
5
- *
6
- * NO STREAM FILTER, deliberately: AgentCore names its streams `YYYY/MM/DD/[runtime-logs]<session-id>`
7
- * (the Lambda `2024/01/01/[$LATEST]abc` convention), so `[runtime-logs]` is an INFIX after the UTC date
8
- * path, not a prefix. `--log-stream-name-prefix` is a literal prefix match, and the AWS CLI has no
9
- * substring filter (`--log-stream-names` takes exact names, which `--follow` could never extend to the
10
- * new session streams). Passing the marker as a prefix therefore matches zero streams and `aws logs
11
- * tail` prints nothing and exits 0 — a silent empty tail. Do not add it back.
12
- */
1
+ /** AgentCore log discovery + tailing. */
13
2
  import type { CliRunner } from "../runner.ts";
14
3
  export type AgentcoreLogSource = "runtime" | "forwarder";
15
4
  export interface AgentcoreLogsPlan {
16
5
  /** Deployment base name — stack `fastagent-<name>`, forwarder `fastagent-<name>-forwarder`. */
17
6
  name: string;
18
7
  source: AgentcoreLogSource;
19
- /** AWS CLI relative/ISO-8601 window (`10m`, `2h`, ...). Defaults to the CLI's own 10 minutes. */
8
+ /** AWS CLI relative/ISO-8601 window (`10m`, `2h`, ...). */
20
9
  since?: string;
21
10
  follow: boolean;
22
11
  }
@@ -27,9 +16,4 @@ export type AgentcoreLogsOutcome = {
27
16
  ok: false;
28
17
  gate: string;
29
18
  };
30
- /**
31
- * Find and tail one AgentCore log source. Discovery is dynamic rather than spelling `-DEFAULT`:
32
- * endpoint naming belongs to AWS, and an edited stack may use a different endpoint. The whole group
33
- * is tailed — see the file header for why a stream filter cannot narrow it and must not be added.
34
- */
35
19
  export declare function tailAgentcoreLogs(plan: AgentcoreLogsPlan, aws: CliRunner, announce?: (message: string) => void): Promise<AgentcoreLogsOutcome>;
@@ -1,4 +1,6 @@
1
- import { parseStackOutputs } from "./run.js";
1
+ import { awsCli, awsJson, parseLogGroupNames } from "./aws-cli.js";
2
+ import { agentcoreStackName, forwarderLogGroup, runtimeLogGroupPrefix } from "./plan.js";
3
+ import { pickStackOutputs } from "./run.js";
2
4
  /** Runtime id from `arn:...:runtime/<id>` — the id prefixes AgentCore's per-endpoint log group. */
3
5
  function runtimeIdFromArn(arn) {
4
6
  const marker = ":runtime/";
@@ -6,33 +8,21 @@ function runtimeIdFromArn(arn) {
6
8
  const id = at === -1 ? "" : arn.slice(at + marker.length);
7
9
  return id && !id.includes("/") ? id : undefined;
8
10
  }
9
- function parseLogGroupNames(stdout) {
10
- try {
11
- const parsed = JSON.parse(stdout);
12
- return Array.isArray(parsed) && parsed.every((v) => typeof v === "string") ? parsed : undefined;
13
- }
14
- catch {
15
- return undefined;
16
- }
17
- }
18
- /**
19
- * Find and tail one AgentCore log source. Discovery is dynamic rather than spelling `-DEFAULT`:
20
- * endpoint naming belongs to AWS, and an edited stack may use a different endpoint. The whole group
21
- * is tailed — see the file header for why a stream filter cannot narrow it and must not be added.
22
- */
23
11
  export async function tailAgentcoreLogs(plan, aws, announce = () => { }) {
24
- const stack = `fastagent-${plan.name}`;
25
- const outputsResult = await aws(["cloudformation", "describe-stacks", "--stack-name", stack, "--query", "Stacks[0].Outputs", "--output", "json"], { capture: true });
26
- if (outputsResult.code === 127) {
27
- return { ok: false, gate: "aws CLI not found — install AWS CLI v2: https://docs.aws.amazon.com/cli/" };
12
+ const cli = awsCli(aws);
13
+ const stack = agentcoreStackName(plan.name);
14
+ // THROUGH THE ADJUDICATOR, like every other read of an AWS result in this directory: an exit code alone cannot
15
+ // separate "deploy it first" from `AccessDeniedException`.
16
+ const outputsRead = await cli.read(["cloudformation", "describe-stacks", "--stack-name", stack, "--query", "Stacks[0].Outputs", "--output", "json"], awsJson(pickStackOutputs));
17
+ if ("absent" in outputsRead) {
18
+ return { ok: false, gate: `no AgentCore stack ${stack} in this account/region — deploy it first` };
28
19
  }
29
- if (outputsResult.code !== 0) {
30
- return {
31
- ok: false,
32
- gate: `could not read AgentCore stack ${stack} — deploy it first, or fix the AWS account/region shown above`,
33
- };
20
+ if ("unreadable" in outputsRead) {
21
+ if (outputsRead.code === 127)
22
+ return { ok: false, gate: outputsRead.unreadable };
23
+ return { ok: false, gate: `could not read AgentCore stack ${stack}: ${outputsRead.unreadable}` };
34
24
  }
35
- const outputs = parseStackOutputs(outputsResult.stdout);
25
+ const outputs = outputsRead.ok;
36
26
  let prefix;
37
27
  let exact;
38
28
  if (plan.source === "runtime") {
@@ -44,17 +34,14 @@ export async function tailAgentcoreLogs(plan, aws, announce = () => { }) {
44
34
  gate: `stack ${stack} has no valid RuntimeArn output — regenerate/deploy the AgentCore stack`,
45
35
  };
46
36
  }
47
- prefix = `/aws/bedrock-agentcore/runtimes/${runtimeId}-`;
37
+ prefix = runtimeLogGroupPrefix(runtimeId);
48
38
  }
49
39
  else {
50
- // `ForwarderUrl` is the stack's INGRESS URL, NOT proof that a forwarder Lambda exists: plan.ts
51
- // keeps needsForwarder and needsFunctionUrl as two variables on purpose (a schedules-only topology
52
- // may keep the forwarder and drop the public URL). So DISCOVERY decides existence below, and the
53
- // URL output only picks which not-found sentence is true.
54
- exact = `/aws/lambda/fastagent-${plan.name}-forwarder`;
40
+ // `ForwarderUrl` is the stack's INGRESS URL, NOT proof that a forwarder Lambda exists.
41
+ exact = forwarderLogGroup(plan.name);
55
42
  prefix = exact;
56
43
  }
57
- const groupsResult = await aws([
44
+ const groupsRead = await cli.read([
58
45
  "logs",
59
46
  "describe-log-groups",
60
47
  "--log-group-name-prefix",
@@ -63,33 +50,22 @@ export async function tailAgentcoreLogs(plan, aws, announce = () => { }) {
63
50
  "logGroups[].logGroupName",
64
51
  "--output",
65
52
  "json",
66
- ], { capture: true });
67
- if (groupsResult.code !== 0) {
68
- return { ok: false, gate: "could not discover the CloudWatch log group — see the AWS error above" };
69
- }
70
- const groups = parseLogGroupNames(groupsResult.stdout);
71
- if (!groups) {
72
- return { ok: false, gate: "AWS returned an invalid CloudWatch log-group response" };
53
+ ], parseLogGroupNames);
54
+ if ("unreadable" in groupsRead) {
55
+ // QUOTED, not "see the error above": the read captures both streams, so there is nothing above.
56
+ return { ok: false, gate: `could not discover the CloudWatch log group: ${groupsRead.unreadable}` };
73
57
  }
58
+ const groups = "ok" in groupsRead ? groupsRead.ok : [];
74
59
  const matches = groups.filter((group) => (exact ? group === exact : group.startsWith(prefix))).sort();
75
60
  if (matches.length === 0) {
76
- // Absent group = never used, EXCEPT when the stack has no forwarder at all — an invoke-only
77
- // deployment would otherwise be told to deliver a webhook it can never receive. Both facts agree
78
- // there (no ingress URL output either), so the message can name the topology instead of a trigger.
79
- if (plan.source === "forwarder" && !outputs.ForwarderUrl) {
80
- return {
81
- ok: false,
82
- gate: `stack ${stack} has neither a forwarder log group nor an ingress URL — this looks like an invoke-only deployment, which has Runtime logs only`,
83
- };
84
- }
85
- const trigger = plan.source === "runtime" ? "invoke the Runtime once" : "deliver one webhook or schedule fire";
61
+ // Absent group = never used.
62
+ const trigger = plan.source === "runtime" ? "invoke the Runtime once" : "deliver one webhook or routine run";
86
63
  return {
87
64
  ok: false,
88
65
  gate: `no ${plan.source} log group exists yet — ${trigger}, then retry (AWS creates it on first use)`,
89
66
  };
90
67
  }
91
- // A generated stack has one Runtime endpoint. If an operator's edited stack has several, choosing
92
- // one silently would show a valid but potentially WRONG agent log — list them and make the choice explicit.
68
+ // A generated stack has one Runtime endpoint.
93
69
  if (matches.length > 1) {
94
70
  return {
95
71
  ok: false,
@@ -1,6 +1,7 @@
1
1
  import type { DeclaredChannel } from "../../channels/discover.ts";
2
2
  import { type Artifact, type ContainerInput } from "../container.ts";
3
- /** The one schedule fact the plan needs (from loadSchedules) — name + cron + tz. */
3
+ import { type DeploymentSecret } from "../secrets.ts";
4
+ /** The one schedule fact the plan needs (from loadRoutines) — name + cron + tz. */
4
5
  export interface ScheduleFact {
5
6
  name: string;
6
7
  cron: string;
@@ -11,15 +12,24 @@ export interface AgentcorePlanInput extends ContainerInput {
11
12
  name: string;
12
13
  /** What satisfies model auth locally: an env-var name, an OAuth/stored label, or undefined. */
13
14
  modelAuth: string | undefined;
14
- /** Every declared channel and its ingress — the source of the secret list, the webhook steps, and
15
- * whether the forwarder is needed at all (ANY webhook channel requires it, customs included). */
15
+ /**
16
+ * Every declared channel and its ingress — the source of the webhook steps, and whether the
17
+ * forwarder is needed at all (ANY webhook channel requires it, customs included).
18
+ */
16
19
  channels: readonly DeclaredChannel[];
17
- /** Extra secret env-var names (fastagent.config deploy.secrets). */
18
- extraSecrets?: string[];
20
+ /**
21
+ * The runbook's variable list (`deploymentSecrets`): what must have a value, then everything else the value file
22
+ * carries.
23
+ */
24
+ secrets?: readonly DeploymentSecret[];
19
25
  /** Static schedules — each becomes an EventBridge Scheduler rule targeting the forwarder. */
20
26
  schedules: ScheduleFact[];
21
- /** Wake tool enabled — DEGRADED here (fires only while a session happens to be awake); warned. */
22
- selfSchedule: boolean;
27
+ /**
28
+ * How long an idle session keeps its microVM (config `deploy.agentcore.idleTimeoutSeconds`). The workload decides:
29
+ * a chat agent talked to in bursts wants a longer tail than a schedule-only one. Defaults to
30
+ * {@link DEFAULT_IDLE_TIMEOUT_SECONDS}.
31
+ */
32
+ idleTimeoutSeconds?: number;
23
33
  }
24
34
  export interface AgentcorePlan {
25
35
  /** template + forwarder + Dockerfile/.dockerignore — written by the CLI (kept unless --force). */
@@ -34,79 +44,55 @@ export interface AgentcorePlan {
34
44
  /** What the stack contains — the ONE reading the template, the runbook and the `--run` driver share. */
35
45
  topology: AgentcoreTopology;
36
46
  }
37
- /**
38
- * Which resources the definition puts in the stack. Read in one place because it was computed in
39
- * three — the template, the plan and the CLI — and the third disagreed with the first about a
40
- * schedule EventBridge cannot express (counted by the CLI, not by the template), which is a
41
- * `cloudformation deploy` rejecting parameters the template never declared.
42
- */
47
+ /** Which resources the definition puts in the stack. */
43
48
  export interface AgentcoreTopology {
44
49
  /** A webhook channel: the forwarder relays public Function URL traffic to it. */
45
50
  webhooks: boolean;
46
- /** The forwarder Lambda exists — for webhooks, for EventBridge cron rules, or for wake alarms —
47
- * with its Function URL: every forwarder needs it as the authenticated refresh channel for the
48
- * state snapshot's presigned URLs, since a turn can outlive the Lambda credentials that signed
49
- * them. A schedule-only URL rejects every non-reserved path before invoking AgentCore. */
50
- forwarder: boolean;
51
- /** The forwarder mirrors the agent's wake-ups into one-shot EventBridge schedules. */
52
- wakeAlarms: boolean;
53
51
  }
54
- /** SessionStorage mount = FASTAGENT_STATE_DIR (AgentCore requires exactly `/mnt/<one-level>`). It is
55
- * a fast LOCAL disk only: the platform wipes it on every runtime version update (= every deploy).
56
- * Durability across deploys comes from the S3 snapshot (channels/agentcore-state.ts). */
57
- export declare const MOUNT = "/mnt/state";
52
+ /** The platform's managed SessionStorage mount (AgentCore requires exactly `/mnt/<one-level>`). */
53
+ export declare const MOUNT = "/mnt/data";
54
+ /** Beside the state root on the one mount, as every volume-backed host does. */
55
+ export declare const SECRETS_DIR = "/mnt/data/.secrets";
58
56
  /**
59
- * FASTAGENT_SECRETS_DIR — the seeded-then-ROTATED auth.json, deliberately INSIDE the state root
60
- * rather than beside it.
61
- *
62
- * Every other host mounts a real volume and puts the two machinery dirs side by side (`/data/.state`
63
- * + `/data/.secrets`), because there the persistence boundary is the MOUNT POINT: anything under it
64
- * survives. AgentCore has no volume. Its persistence boundary is `packStateRoot(stateRoot)` — the one
65
- * directory tree the S3 snapshot copies out and back (channels/agentcore-state.ts) — while {@link MOUNT}
66
- * itself is wiped on every runtime version update, i.e. on every deploy.
67
- *
68
- * So the sibling layout would put credentials INSIDE the mount but OUTSIDE the snapshot: nothing
69
- * copies them out, the platform wipes them, and the next microVM re-seeds the deploy-time copy. With
70
- * single-use OAuth refresh tokens that is a slow-motion outage — the box works until the seeded token
71
- * is rotated away, then loses model access with only a redeploy to restore it.
72
- *
73
- * Nesting is what makes agentcore-state.ts's stated contract ("restores VERBATIM — including
74
- * auth.json") reachable at all; `packStateRoot` walks the whole tree, so no snapshot code knows about
75
- * this. Tests assert the containment, not just the two names — the sibling spelling looks tidier and
76
- * reintroduces the outage silently.
57
+ * How long an idle session keeps its microVM when the config names no other value. Below AWS's own default (900) on
58
+ * purpose: memory bills for the whole idle tail, so the cheap posture is the default and a longer one is a choice.
77
59
  */
78
- export declare const SECRETS_DIR = "/mnt/state/.secrets";
79
- /**
80
- * How long an idle session keeps its microVM. Memory is billed per second across the WHOLE session
81
- * — idle included, at the peak level reached — so this tail is the standing cost of every burst of
82
- * activity, while CPU stops billing the moment the agent stops working. 3 minutes rather than the
83
- * platform's 15: the tail shrinks 5×, and the cost is a cold start (image + Node + snapshot restore)
84
- * for anyone who returns after a longer gap. `/ping` reports HealthyBusy + time_of_last_update while
85
- * work is in flight (the FIELD is what the platform's idle measurement actually reads — agentcore.ts),
86
- * so this timer only ever starts once the agent has genuinely settled — a long turn is never cut short.
87
- * AWS accepts 60–28800.
88
- */
89
- export declare const IDLE_TIMEOUT_SECONDS = 180;
90
- /** The platform ceiling on one session's compute (8 h). The session ID outlives it: the next invoke
91
- * simply gets fresh compute with the same storage. */
60
+ export declare const DEFAULT_IDLE_TIMEOUT_SECONDS = 180;
61
+ /** One session's compute lifetime — AWS's own default. Both lifecycle fields cap at 1209600 (14 d). */
92
62
  export declare const MAX_LIFETIME_SECONDS = 28800;
93
- /** The state snapshot's object key in the deployment bucket (one object; see agentcore-state.ts). */
94
- export declare const STATE_KEY = "state/snapshot.json.gz";
95
- /** The forwarder artifact. Named `index.js` because it IS the Lambda deployment package's entry:
96
- * zipping it as-is produces a valid package (`Handler: index.handler`), with nothing to rename. */
97
63
  export declare const FORWARDER_FILE = "lambda/index.js";
98
- /** The deployment bucket: forwarder code + the state snapshot. Account-suffixed for S3's GLOBAL
99
- * namespace, and created OUTSIDE the stack (like the ECR repo) so a `delete-stack` cannot take the
100
- * agent's memory with it. Bucket names cap at 63 chars; `name` is already gated to 40. */
101
- export declare function stateBucketName(name: string, account: string): string;
102
- /** AgentCore env values max 2048 chars — a real OAuth auth.json's base64 exceeds it, so the seed is
103
- * CHUNKED across FASTAGENT_AUTH_SEED + _2… (collectAuthSeed reassembles at boot). 2000 keeps margin. */
104
- export declare const AUTH_SEED_CHUNK_SIZE = 2000;
105
- export declare const AUTH_SEED_MAX_CHUNKS = 4;
64
+ /**
65
+ * Where the forwarder puts the one-shot schedule for a wake-up. The id inside the name is minted in the
66
+ * container, so this prefix is the only handle anything outside has on the alarms a deployment has pending.
67
+ */
68
+ export declare function wakeAlarmPrefix(name: string): string;
69
+ /** Account-suffixed artifact bucket for S3's global namespace. */
70
+ export declare function deploymentBucketName(name: string, account: string): string;
71
+ /**
72
+ * AgentCore env values max 2048 chars — a real OAuth auth.json's base64 exceeds it, so each carrier is CHUNKED across
73
+ * `<NAME>` + `_2`… (collectChunked reassembles at boot): FASTAGENT_AUTH_SEED for the credential, FASTAGENT_ENV for the
74
+ * value file's variables.
75
+ */
76
+ export declare const CARRIER_CHUNK_SIZE = 2000;
77
+ export declare const CARRIER_MAX_CHUNKS = 4;
78
+ /** The template's two chunked carriers: CloudFormation parameter prefix → container env-var name. */
79
+ export declare const CARRIERS: readonly [{
80
+ readonly param: "FastagentAuthSeed";
81
+ readonly env: "FASTAGENT_AUTH_SEED";
82
+ readonly what: "base64 auth.json";
83
+ }, {
84
+ readonly param: "FastagentEnv";
85
+ readonly env: "FASTAGENT_ENV";
86
+ readonly what: "base64 JSON of the value file's variables";
87
+ }];
88
+ /** Chunk `i` (0-based) of a carrier: its parameter and env-var names. */
89
+ export declare function carrierChunk(carrier: (typeof CARRIERS)[number], i: number): {
90
+ param: string;
91
+ env: string;
92
+ };
106
93
  /** The generated template's filename (namespaced under the kit in the agentDir layout). */
107
94
  export declare const TEMPLATE_FILE = "agentcore.template.yaml";
108
- /** The generated template's first-line marker — the ONE source for both the generator and the
109
- * "did fastagent generate this?" check (deploy's drift gate), so they cannot drift apart. */
95
+ /** The generated template's first-line marker. */
110
96
  export declare const GENERATED_TEMPLATE_MARKER = "# Generated by `fastagent deploy agentcore`";
111
97
  /** Whether an on-disk template is fastagent-generated (vs hand-written — kept, never gated). */
112
98
  export declare function isGeneratedAgentcoreTemplate(content: string): boolean;
@@ -114,51 +100,45 @@ export declare function isGeneratedAgentcoreTemplate(content: string): boolean;
114
100
  export declare function agentcoreName(workspaceBasename: string): string;
115
101
  /** Runtime name (`[a-zA-Z][a-zA-Z0-9_]{0,47}`) from a dir basename. */
116
102
  export declare function toRuntimeName(basename: string): string;
117
- /** The ONE fixed ingress session id (webhooks + schedule fires) — ≥ 33 chars (the API minimum),
118
- * deterministic (the Lambda holds it in env), padded so any name clears the floor. */
119
- export declare function ingressSessionId(name: string): string;
120
- /** CFN parameter logical id for a secret env-var name: TELEGRAM_BOT_TOKEN → TelegramBotToken
121
- * (parameter names must be alphanumeric). Deterministic — run.ts builds the same mapping. */
122
- export declare function cfnParamName(envName: string): string;
123
103
  /**
124
- * Translate a 5-field cron into EventBridge Scheduler's `cron(m h dom mon dow *)`, or say why it
125
- * can't be. The two dialects disagree exactly where silent translation would misfire:
126
- * - EventBridge numbers day-of-week 1–7 (1 = Sunday); standard cron uses 0–6 (0/7 = Sunday) —
127
- * numeric dow values and range endpoints are remapped ({@link mapDowField}); steps and names
128
- * pass through; a range that wraps under renumbering is refused.
129
- * - EventBridge requires `?` in dom or dow: a `*` on either side becomes `?`; BOTH restricted is
130
- * standard cron's OR semantics, which EventBridge cannot express — refused, never approximated.
131
- * - A 6-field (seconds) expression and L/# day-of-week forms are refused for the same reason.
104
+ * The two names every part of this host derives from the deployment name, and the reason they are functions:
105
+ * a deploy CREATES them and a destroy LOOKS FOR them, so a drift between the two spellings is silent in the
106
+ * worst direction. `describe-repositories` on a mis-spelled repo answers `RepositoryNotFoundException`, which
107
+ * is "already gone" — the teardown would report nothing left to delete while the repository kept billing.
108
+ */
109
+ export declare function agentcoreStackName(name: string): string;
110
+ export declare function agentcoreRepoName(name: string): string;
111
+ /**
112
+ * Where a RUNTIME's logs land, by the identifier the caller happens to hold: `fastagent logs` knows the runtime id
113
+ * from the stack's `RuntimeArn`, `destroy` knows only the {@link toRuntimeName} the template deployed — and AgentCore
114
+ * names the id `<AgentRuntimeName>-<suffix>`, so the same prefix serves both. MEASURED (ap-southeast-1, 2026-09-22):
115
+ * a deploy of `destroy-probe-yehg` produced `/aws/bedrock-agentcore/runtimes/destroy_probe_yehg-6oR1zq7pBZ-DEFAULT`.
116
+ *
117
+ * ONE OWNER because of what the callers do with it: `logs` picks a group to tail, `destroy` DELETES everything the
118
+ * prefix matches. The trailing `-` is what keeps `probe-` off `probe2-…`, and a second hand-spelled copy of this
119
+ * string is a copy that can lose it.
132
120
  */
121
+ export declare function runtimeLogGroupPrefix(runtimeOrName: string): string;
122
+ /**
123
+ * Where the forwarder's logs land. Lambda creates this group itself, from the function name, so three parties have
124
+ * to agree on a string none of them can check against the others: the template that names the function, the runbook
125
+ * and `--run` summary that tell an operator to set its retention, and `fastagent logs --source forwarder`.
126
+ */
127
+ export declare function forwarderLogGroup(name: string): string;
128
+ /** The ONE fixed ingress session id (webhooks + routine fires). */
129
+ export declare function ingressSessionId(name: string): string;
130
+ /** Translate a 5-field cron into EventBridge Scheduler's `cron(m h dom mon dow *)`, or say why it can't be. */
133
131
  export declare function toEventBridgeCron(cron: string): {
134
132
  expression: string;
135
133
  } | {
136
134
  error: string;
137
135
  };
138
136
  /**
139
- * The forwarder Lambda source — `forwarder.js` beside this file, the ONE text both the deployment
140
- * package and the readable `lambda/index.js` artifact are generated from. A real file, not a template
141
- * literal: it is linted, and it needs no interpolation — the one value it once took from here
142
- * (`MAX_WEBHOOK_BODY_BYTES`) rides in as a Lambda environment variable. Zero-dependency: the
143
- * Lambda Node runtime bundles AWS SDK v3. CommonJS ON PURPOSE: the package's entry lands as
144
- * `index.js` ({@link zipSingleFile}), where ESM `import` is a syntax error. Two
145
- * event shapes: a Function URL webhook (reconstructed verbatim into a `webhook` envelope; the
146
- * channel's REAL response rides back inside the transport reply and is re-emitted byte-exact —
147
- * Feishu's URL-verification challenge depends on it), and an EventBridge Scheduler fire
148
- * (`{ scheduleFire }`, slot = the scheduled instant — the container's idempotency key).
149
- *
150
- * It ships as an S3 object rather than inline `ZipFile`, so there is no 4096-byte ceiling on it — a
151
- * constraint this comment asserted for long after the template stopped inlining, which is the kind
152
- * of stale rule that stops the next person making a correct change.
137
+ * The forwarder Lambda source — `forwarder.js` beside this file, the ONE text both the deployment package and the
138
+ * readable `lambda/index.js` artifact are generated from.
153
139
  */
154
140
  export declare function forwarderSource(): string;
155
- /**
156
- * The EventBridge physical name for a schedule. A schedule's local name is an arbitrary MODULE FILE
157
- * NAME (`schedules/晨报.ts`, `schedules/deploy check.ts`), while AWS requires `[0-9A-Za-z-_.]+` within
158
- * 64 chars — and the `fa-<agent>-` prefix already eats up to 44 of them. So: sanitize, bound the
159
- * readable part, and end with a hash of the ORIGINAL name, which keeps distinct schedules distinct
160
- * where sanitizing or truncation would have merged them (one rule silently firing for two).
161
- */
141
+ /** The EventBridge physical name for a schedule. */
162
142
  export declare function scheduleResourceName(agent: string, schedule: string): string;
163
143
  /** Compute the AgentCore deploy plan from the resolved definition. */
164
144
  export declare function planAgentcoreDeploy(input: AgentcorePlanInput): AgentcorePlan;