@fastagent-sh/fastagent 0.21.1 → 0.22.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.
- package/README.md +9 -12
- package/dist/agent.d.ts +24 -37
- package/dist/agent.js +7 -15
- package/dist/atomic-write.d.ts +13 -17
- package/dist/atomic-write.js +18 -29
- package/dist/bind.d.ts +12 -22
- package/dist/bind.js +18 -27
- package/dist/channel.d.ts +11 -33
- package/dist/channels/agentcore-limits.d.ts +2 -13
- package/dist/channels/agentcore-limits.js +2 -13
- package/dist/channels/agentcore-protocol.d.ts +67 -58
- package/dist/channels/agentcore-protocol.js +23 -15
- package/dist/channels/agentcore-service.d.ts +19 -33
- package/dist/channels/agentcore-service.js +176 -59
- package/dist/channels/agentcore.d.ts +39 -33
- package/dist/channels/agentcore.js +90 -224
- package/dist/channels/body.d.ts +15 -2
- package/dist/channels/body.js +24 -2
- package/dist/channels/busy.d.ts +1 -21
- package/dist/channels/busy.js +2 -39
- package/dist/channels/control.d.ts +17 -62
- package/dist/channels/control.js +74 -182
- package/dist/channels/define-channel.d.ts +39 -0
- package/dist/channels/define-channel.js +9 -0
- package/dist/channels/discover.d.ts +10 -31
- package/dist/channels/discover.js +37 -31
- package/dist/channels/feishu/bootstrap-token.d.ts +1 -8
- package/dist/channels/feishu/bootstrap-token.js +7 -23
- package/dist/channels/feishu/card.d.ts +14 -28
- package/dist/channels/feishu/card.js +16 -30
- package/dist/channels/feishu/cloud.d.ts +1 -5
- package/dist/channels/feishu/context-buffer.d.ts +4 -23
- package/dist/channels/feishu/context-buffer.js +8 -31
- package/dist/channels/feishu/crypto.d.ts +10 -5
- package/dist/channels/feishu/crypto.js +12 -19
- package/dist/channels/feishu/feishu-api.d.ts +2 -1
- package/dist/channels/feishu/feishu-api.js +5 -4
- package/dist/channels/feishu/feishu.d.ts +4 -10
- package/dist/channels/feishu/feishu.js +113 -227
- package/dist/channels/feishu/invoke-turn.d.ts +5 -4
- package/dist/channels/feishu/invoke-turn.js +36 -54
- package/dist/channels/feishu/model.d.ts +4 -21
- package/dist/channels/feishu/model.js +1 -8
- package/dist/channels/feishu/normalize.d.ts +2 -10
- package/dist/channels/feishu/normalize.js +7 -42
- package/dist/channels/feishu/parse.d.ts +9 -29
- package/dist/channels/feishu/parse.js +8 -26
- package/dist/channels/feishu/preview.d.ts +12 -14
- package/dist/channels/feishu/preview.js +108 -207
- package/dist/channels/feishu/register-app.d.ts +8 -23
- package/dist/channels/feishu/register-app.js +7 -20
- package/dist/channels/feishu/register-webhook.d.ts +2 -9
- package/dist/channels/feishu/register-webhook.js +9 -33
- package/dist/channels/feishu/scaffold/channel.ts +27 -19
- package/dist/channels/feishu/scaffold/channel.websocket.ts +31 -0
- package/dist/channels/feishu/setup-mode.d.ts +11 -36
- package/dist/channels/feishu/setup-mode.js +7 -26
- package/dist/channels/feishu/ws-ingress.d.ts +1 -2
- package/dist/channels/feishu/ws-ingress.js +6 -8
- package/dist/channels/http.d.ts +15 -15
- package/dist/channels/http.js +19 -9
- package/dist/channels/kit/attachment-path.d.ts +4 -5
- package/dist/channels/kit/attachment-path.js +10 -34
- package/dist/channels/kit/context-buffer.d.ts +14 -21
- package/dist/channels/kit/context-buffer.js +25 -38
- package/dist/channels/kit/delivery.d.ts +35 -0
- package/dist/channels/kit/delivery.js +129 -0
- package/dist/channels/kit/event-stream.d.ts +5 -0
- package/dist/channels/kit/event-stream.js +29 -0
- package/dist/channels/kit/invoke-turn-kit.d.ts +53 -26
- package/dist/channels/kit/invoke-turn-kit.js +89 -32
- package/dist/channels/kit/preview-kit.d.ts +18 -72
- package/dist/channels/kit/preview-kit.js +22 -88
- package/dist/channels/kit/signature.d.ts +3 -9
- package/dist/channels/kit/signature.js +3 -9
- package/dist/channels/kit/state.d.ts +1 -2
- package/dist/channels/kit/state.js +5 -14
- package/dist/channels/kit/stop-command.d.ts +1 -2
- package/dist/channels/kit/stop-command.js +6 -9
- package/dist/channels/kit/tasks.d.ts +1 -1
- package/dist/channels/kit/tasks.js +8 -21
- package/dist/channels/kit/text.d.ts +2 -16
- package/dist/channels/kit/text.js +23 -31
- package/dist/channels/kit/thread-participants.d.ts +4 -17
- package/dist/channels/kit/thread-participants.js +8 -55
- package/dist/channels/kit/transport.d.ts +26 -0
- package/dist/channels/kit/transport.js +20 -0
- package/dist/channels/kit/turn-queue.d.ts +7 -11
- package/dist/channels/kit/turn-queue.js +21 -39
- package/dist/channels/kit/turn-runner.d.ts +32 -18
- package/dist/channels/kit/turn-runner.js +98 -53
- package/dist/channels/kit/turn-store.d.ts +32 -32
- package/dist/channels/kit/turn-store.js +45 -88
- package/dist/channels/lark/lark.d.ts +1 -5
- package/dist/channels/lark/onboard.d.ts +3 -12
- package/dist/channels/lark/onboard.js +3 -13
- package/dist/channels/lark/scaffold/channel.ts +27 -19
- package/dist/channels/lark/scaffold/channel.websocket.ts +31 -0
- package/dist/channels/registration.d.ts +9 -35
- package/dist/channels/registration.js +6 -37
- package/dist/channels/secret.js +2 -5
- package/dist/channels/serve.d.ts +47 -44
- package/dist/channels/serve.js +165 -101
- package/dist/channels/slack/config-api.d.ts +4 -27
- package/dist/channels/slack/config-api.js +5 -34
- package/dist/channels/slack/context-buffer.d.ts +2 -3
- package/dist/channels/slack/context-buffer.js +5 -5
- package/dist/channels/slack/invoke-turn.d.ts +3 -1
- package/dist/channels/slack/invoke-turn.js +25 -34
- package/dist/channels/slack/manifest.js +1 -3
- package/dist/channels/slack/model.d.ts +1 -2
- package/dist/channels/slack/model.js +1 -1
- package/dist/channels/slack/onboard.d.ts +4 -3
- package/dist/channels/slack/onboard.js +8 -11
- package/dist/channels/slack/onboarding-state.d.ts +3 -5
- package/dist/channels/slack/onboarding-state.js +9 -6
- package/dist/channels/slack/parse.d.ts +4 -13
- package/dist/channels/slack/parse.js +7 -28
- package/dist/channels/slack/preview.d.ts +12 -2
- package/dist/channels/slack/preview.js +292 -269
- package/dist/channels/slack/reaction.d.ts +11 -3
- package/dist/channels/slack/reaction.js +19 -8
- package/dist/channels/slack/register-webhook.js +4 -7
- package/dist/channels/slack/scaffold/channel.ts +20 -13
- package/dist/channels/slack/scaffold/slack-send.ts +2 -2
- package/dist/channels/slack/setup-server.d.ts +1 -5
- package/dist/channels/slack/setup-server.js +1 -5
- package/dist/channels/slack/shared-api.d.ts +1 -4
- package/dist/channels/slack/shared-api.js +2 -13
- package/dist/channels/slack/slack-api.d.ts +2 -1
- package/dist/channels/slack/slack-api.js +6 -4
- package/dist/channels/slack/slack.d.ts +11 -14
- package/dist/channels/slack/slack.js +121 -122
- package/dist/channels/sse.d.ts +1 -1
- package/dist/channels/sse.js +1 -1
- package/dist/channels/telegram/context-buffer.d.ts +7 -22
- package/dist/channels/telegram/context-buffer.js +6 -23
- package/dist/channels/telegram/invoke-turn.d.ts +7 -7
- package/dist/channels/telegram/invoke-turn.js +24 -43
- package/dist/channels/telegram/parse.d.ts +24 -51
- package/dist/channels/telegram/parse.js +32 -84
- package/dist/channels/telegram/preview.d.ts +10 -1
- package/dist/channels/telegram/preview.js +79 -100
- package/dist/channels/telegram/register-webhook.js +5 -23
- package/dist/channels/telegram/scaffold/channel.ts +25 -18
- package/dist/channels/telegram/scaffold/telegram-send.ts +6 -4
- package/dist/channels/telegram/telegram-api.d.ts +4 -3
- package/dist/channels/telegram/telegram-api.js +9 -7
- package/dist/channels/telegram/telegram.d.ts +4 -18
- package/dist/channels/telegram/telegram.js +38 -94
- package/dist/channels/telegram/turn-store.d.ts +11 -14
- package/dist/channels/telegram/turn-store.js +8 -6
- package/dist/channels/wait-health.d.ts +4 -6
- package/dist/channels/wait-health.js +10 -14
- package/dist/cli/add-feishu.d.ts +2 -12
- package/dist/cli/add-feishu.js +24 -71
- package/dist/cli/add-slack.d.ts +5 -3
- package/dist/cli/add-slack.js +53 -76
- package/dist/cli/auth-view.d.ts +2 -16
- package/dist/cli/auth-view.js +2 -16
- package/dist/cli/commands/add.js +25 -40
- package/dist/cli/commands/chat.d.ts +0 -1
- package/dist/cli/commands/chat.js +5 -6
- package/dist/cli/commands/deploy/agentcore.js +60 -65
- package/dist/cli/commands/deploy/docker.js +50 -23
- package/dist/cli/commands/deploy/fly.js +23 -61
- package/dist/cli/commands/deploy/railway.js +23 -18
- package/dist/cli/commands/deploy/shared.d.ts +38 -57
- package/dist/cli/commands/deploy/shared.js +40 -59
- package/dist/cli/commands/deploy.d.ts +10 -27
- package/dist/cli/commands/deploy.js +38 -60
- package/dist/cli/commands/destroy.d.ts +4 -0
- package/dist/cli/commands/destroy.js +56 -0
- package/dist/cli/commands/dev.d.ts +2 -1
- package/dist/cli/commands/dev.js +20 -23
- package/dist/cli/commands/info.d.ts +0 -2
- package/dist/cli/commands/info.js +83 -49
- package/dist/cli/commands/init.d.ts +1 -2
- package/dist/cli/commands/init.js +16 -55
- package/dist/cli/commands/invoke.d.ts +0 -1
- package/dist/cli/commands/invoke.js +5 -7
- package/dist/cli/commands/login.d.ts +2 -1
- package/dist/cli/commands/login.js +33 -38
- package/dist/cli/commands/logs.js +3 -4
- package/dist/cli/commands/models.js +1 -5
- package/dist/cli/commands/routine-run.d.ts +6 -0
- package/dist/cli/commands/routine-run.js +47 -0
- package/dist/cli/commands/routine.d.ts +25 -0
- package/dist/cli/commands/routine.js +122 -0
- package/dist/cli/commands/start.d.ts +31 -3
- package/dist/cli/commands/start.js +131 -81
- package/dist/cli/commands/tool.js +26 -12
- package/dist/cli/fail.d.ts +13 -23
- package/dist/cli/fail.js +20 -23
- package/dist/cli/invoke-stream.d.ts +1 -8
- package/dist/cli/kernel.d.ts +6 -38
- package/dist/cli/kernel.js +14 -77
- package/dist/cli/models-view.d.ts +1 -9
- package/dist/cli/models-view.js +11 -22
- package/dist/cli/program.d.ts +5 -6
- package/dist/cli/program.js +120 -157
- package/dist/cli/serve.d.ts +57 -41
- package/dist/cli/serve.js +94 -121
- package/dist/cli/shared.d.ts +15 -61
- package/dist/cli/shared.js +55 -181
- package/dist/cli.js +1 -8
- package/dist/collect.d.ts +6 -0
- package/dist/collect.js +6 -0
- package/dist/core.d.ts +4 -1
- package/dist/core.js +9 -7
- package/dist/declared-secrets.d.ts +55 -0
- package/dist/declared-secrets.js +88 -0
- package/dist/deploy/agentcore/aws-cli.d.ts +91 -0
- package/dist/deploy/agentcore/aws-cli.js +64 -0
- package/dist/deploy/agentcore/destroy.d.ts +51 -0
- package/dist/deploy/agentcore/destroy.js +273 -0
- package/dist/deploy/agentcore/forwarder.js +28 -79
- package/dist/deploy/agentcore/logs.d.ts +2 -18
- package/dist/deploy/agentcore/logs.js +27 -51
- package/dist/deploy/agentcore/plan.d.ts +85 -105
- package/dist/deploy/agentcore/plan.js +152 -314
- package/dist/deploy/agentcore/run.d.ts +28 -28
- package/dist/deploy/agentcore/run.js +227 -306
- package/dist/deploy/agentcore/zip.d.ts +2 -15
- package/dist/deploy/agentcore/zip.js +3 -17
- package/dist/deploy/build-context.d.ts +21 -0
- package/dist/deploy/build-context.js +137 -0
- package/dist/deploy/channel-ingress.d.ts +26 -39
- package/dist/deploy/channel-ingress.js +57 -28
- package/dist/deploy/container.d.ts +20 -34
- package/dist/deploy/container.js +49 -100
- package/dist/deploy/docker/plan.d.ts +12 -11
- package/dist/deploy/docker/plan.js +43 -24
- package/dist/deploy/docker/run.d.ts +22 -25
- package/dist/deploy/docker/run.js +39 -37
- package/dist/deploy/fly/plan.d.ts +15 -44
- package/dist/deploy/fly/plan.js +41 -73
- package/dist/deploy/fly/run.d.ts +16 -51
- package/dist/deploy/fly/run.js +42 -95
- package/dist/deploy/hosts.d.ts +24 -3
- package/dist/deploy/hosts.js +24 -3
- package/dist/deploy/preflight.d.ts +47 -41
- package/dist/deploy/preflight.js +282 -383
- package/dist/deploy/railway/plan.d.ts +16 -42
- package/dist/deploy/railway/plan.js +42 -60
- package/dist/deploy/railway/run.d.ts +30 -68
- package/dist/deploy/railway/run.js +86 -100
- package/dist/deploy/registration-gate.d.ts +6 -13
- package/dist/deploy/residency.d.ts +37 -0
- package/dist/deploy/residency.js +24 -0
- package/dist/deploy/runner.d.ts +10 -9
- package/dist/deploy/runner.js +7 -18
- package/dist/deploy/secrets.d.ts +40 -41
- package/dist/deploy/secrets.js +117 -103
- package/dist/deploy/workspace.d.ts +50 -0
- package/dist/deploy/workspace.js +197 -0
- package/dist/dev-supervisor.d.ts +1 -9
- package/dist/dev-supervisor.js +21 -64
- package/dist/effect-port.d.ts +50 -0
- package/dist/effect-port.js +77 -0
- package/dist/engines/pi/agent-session-factory.d.ts +50 -69
- package/dist/engines/pi/agent-session-factory.js +249 -146
- package/dist/engines/pi/auth.d.ts +15 -11
- package/dist/engines/pi/auth.js +96 -99
- package/dist/engines/pi/chat.d.ts +1 -5
- package/dist/engines/pi/chat.js +2 -14
- package/dist/engines/pi/config.d.ts +53 -51
- package/dist/engines/pi/config.js +83 -92
- package/dist/engines/pi/create.d.ts +60 -75
- package/dist/engines/pi/create.js +108 -141
- package/dist/engines/pi/definition.d.ts +14 -58
- package/dist/engines/pi/definition.js +21 -85
- package/dist/engines/pi/invoke-session.d.ts +5 -25
- package/dist/engines/pi/invoke-session.js +209 -244
- package/dist/engines/pi/login.d.ts +95 -35
- package/dist/engines/pi/login.js +259 -107
- package/dist/engines/pi/machine.d.ts +31 -0
- package/dist/engines/pi/machine.js +106 -0
- package/dist/engines/pi/models.d.ts +70 -89
- package/dist/engines/pi/models.js +188 -81
- package/dist/engines/pi/open.d.ts +65 -53
- package/dist/engines/pi/open.js +129 -69
- package/dist/engines/pi/report.d.ts +3 -12
- package/dist/engines/pi/report.js +2 -16
- package/dist/engines/pi/search-tools.d.ts +1 -9
- package/dist/engines/pi/search-tools.js +26 -57
- package/dist/engines/pi/service.d.ts +2 -16
- package/dist/engines/pi/service.js +2 -16
- package/dist/engines/pi/session-builder.d.ts +5 -9
- package/dist/engines/pi/session-builder.js +44 -82
- package/dist/engines/pi/session-control.js +286 -269
- package/dist/engines/pi/session-effects.d.ts +14 -0
- package/dist/engines/pi/session-effects.js +30 -0
- package/dist/engines/pi/session-inheritance.d.ts +9 -18
- package/dist/engines/pi/session-inheritance.js +103 -160
- package/dist/engines/pi/session-markers.d.ts +31 -30
- package/dist/engines/pi/session-markers.js +26 -25
- package/dist/engines/pi/session-settings.d.ts +6 -22
- package/dist/engines/pi/session-settings.js +10 -21
- package/dist/engines/pi/session-store.d.ts +26 -92
- package/dist/engines/pi/session-store.js +96 -310
- package/dist/engines/pi/tool-context.d.ts +17 -45
- package/dist/engines/pi/tool-context.js +7 -26
- package/dist/engines/pi/tool.d.ts +45 -36
- package/dist/engines/pi/tool.js +43 -57
- package/dist/engines/pi/turn-kit.d.ts +14 -52
- package/dist/engines/pi/turn-kit.js +18 -67
- package/dist/engines/pi/wake-tool.d.ts +2 -10
- package/dist/engines/pi/wake-tool.js +7 -27
- package/dist/env.d.ts +27 -28
- package/dist/env.js +45 -50
- package/dist/index.js +0 -2
- package/dist/lark.d.ts +1 -2
- package/dist/lark.js +1 -2
- package/dist/loader.d.ts +14 -55
- package/dist/loader.js +24 -43
- package/dist/log.d.ts +2 -12
- package/dist/log.js +3 -24
- package/dist/node.d.ts +2 -15
- package/dist/node.js +2 -18
- package/dist/observe.d.ts +2 -8
- package/dist/open-url.d.ts +1 -1
- package/dist/open-url.js +1 -1
- package/dist/paths.d.ts +70 -134
- package/dist/paths.js +165 -232
- package/dist/pi.d.ts +4 -6
- package/dist/pi.js +3 -3
- package/dist/proxy.d.ts +16 -6
- package/dist/proxy.js +52 -16
- package/dist/runtime.d.ts +18 -12
- package/dist/runtime.js +18 -11
- package/dist/scaffold/add-channel.d.ts +14 -31
- package/dist/scaffold/add-channel.js +48 -112
- package/dist/scaffold/init.d.ts +9 -31
- package/dist/scaffold/init.js +45 -138
- package/dist/scaffold/templates/env.example +6 -4
- package/dist/scaffold/templates/fastagent.config.ts +36 -0
- package/dist/scaffold/templates.d.ts +3 -3
- package/dist/scaffold/templates.js +5 -8
- package/dist/scaffold/vendor-skill.d.ts +2 -5
- package/dist/scaffold/vendor-skill.js +19 -29
- package/dist/schedule/cron.d.ts +9 -5
- package/dist/schedule/cron.js +9 -11
- package/dist/schedule/discover.d.ts +12 -12
- package/dist/schedule/discover.js +43 -34
- package/dist/schedule/routine.d.ts +43 -0
- package/dist/schedule/routine.js +32 -0
- package/dist/schedule/run.d.ts +55 -0
- package/dist/schedule/run.js +146 -0
- package/dist/schedule/scheduler.d.ts +44 -55
- package/dist/schedule/scheduler.js +291 -265
- package/dist/schedule/state.d.ts +105 -10
- package/dist/schedule/state.js +293 -19
- package/dist/schedule/wake-alarm.d.ts +10 -23
- package/dist/schedule/wake-alarm.js +91 -121
- package/dist/schedule/wakeups.d.ts +23 -39
- package/dist/schedule/wakeups.js +33 -75
- package/dist/secrets-gate.d.ts +32 -0
- package/dist/secrets-gate.js +33 -0
- package/dist/service.d.ts +137 -98
- package/dist/service.js +250 -252
- package/dist/session-remote.d.ts +33 -44
- package/dist/session-remote.js +203 -192
- package/dist/session.d.ts +153 -228
- package/dist/session.js +33 -55
- package/dist/tunnel.d.ts +8 -36
- package/dist/tunnel.js +24 -65
- package/dist/version.d.ts +2 -2
- package/dist/version.js +2 -2
- package/package.json +10 -16
- package/dist/channels/agentcore-state.d.ts +0 -77
- package/dist/channels/agentcore-state.js +0 -276
- package/dist/channels/github/github.d.ts +0 -31
- package/dist/channels/github/github.js +0 -89
- package/dist/channels/github/scaffold/channel.ts +0 -25
- package/dist/cli/commands/attach.d.ts +0 -108
- package/dist/cli/commands/attach.js +0 -637
- package/dist/cli/commands/fire.d.ts +0 -7
- package/dist/cli/commands/fire.js +0 -38
- package/dist/cli/commands/schedule.d.ts +0 -12
- package/dist/cli/commands/schedule.js +0 -87
- package/dist/github.d.ts +0 -3
- package/dist/github.js +0 -2
- package/dist/scaffold/templates/fastagent.config.mjs +0 -23
- package/dist/schedule/audit.d.ts +0 -18
- package/dist/schedule/audit.js +0 -57
- package/dist/schedule/schedule.d.ts +0 -35
- 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`, ...).
|
|
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 {
|
|
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
|
|
25
|
-
const
|
|
26
|
-
|
|
27
|
-
|
|
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 (
|
|
30
|
-
|
|
31
|
-
ok: false,
|
|
32
|
-
|
|
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 =
|
|
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 =
|
|
37
|
+
prefix = runtimeLogGroupPrefix(runtimeId);
|
|
48
38
|
}
|
|
49
39
|
else {
|
|
50
|
-
// `ForwarderUrl` is the stack's INGRESS URL, NOT proof that a forwarder Lambda exists
|
|
51
|
-
|
|
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
|
|
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
|
-
],
|
|
67
|
-
if (
|
|
68
|
-
|
|
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
|
|
77
|
-
|
|
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.
|
|
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
|
-
|
|
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
|
-
/**
|
|
15
|
-
*
|
|
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
|
-
/**
|
|
18
|
-
|
|
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
|
-
/**
|
|
22
|
-
|
|
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
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
export declare const
|
|
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
|
-
*
|
|
60
|
-
*
|
|
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
|
|
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
|
-
/**
|
|
99
|
-
*
|
|
100
|
-
*
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
export declare
|
|
105
|
-
|
|
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
|
|
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
|
-
*
|
|
125
|
-
*
|
|
126
|
-
*
|
|
127
|
-
*
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
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
|
-
*
|
|
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;
|