@fastagent-sh/fastagent 0.24.4 → 0.26.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 +54 -82
- package/dist/agent-api.d.ts +460 -0
- package/dist/agent-api.js +209 -0
- package/dist/answer-text.d.ts +8 -0
- package/dist/answer-text.js +18 -0
- package/dist/atomic-write.d.ts +2 -2
- package/dist/atomic-write.js +2 -2
- package/dist/authoring.d.ts +81 -0
- package/dist/authoring.js +245 -0
- package/dist/channel.d.ts +29 -15
- package/dist/channel.js +4 -1
- package/dist/channels/agentcore-protocol.d.ts +36 -50
- package/dist/channels/agentcore-protocol.js +3 -3
- package/dist/channels/agentcore-service.d.ts +8 -18
- package/dist/channels/agentcore-service.js +108 -127
- package/dist/channels/agentcore.d.ts +8 -24
- package/dist/channels/agentcore.js +32 -65
- package/dist/channels/body.d.ts +0 -16
- package/dist/channels/body.js +0 -25
- package/dist/channels/busy.js +6 -1
- package/dist/channels/context.d.ts +4 -0
- package/dist/channels/context.js +35 -0
- package/dist/channels/discover.d.ts +18 -20
- package/dist/channels/discover.js +41 -99
- package/dist/channels/feishu/feishu-api.d.ts +54 -4
- package/dist/channels/feishu/feishu-api.js +192 -149
- package/dist/channels/feishu/feishu.d.ts +3 -0
- package/dist/channels/feishu/feishu.js +117 -106
- package/dist/channels/feishu/history.d.ts +55 -0
- package/dist/channels/feishu/history.js +199 -0
- package/dist/channels/feishu/invoke-turn.d.ts +13 -11
- package/dist/channels/feishu/invoke-turn.js +9 -10
- package/dist/channels/feishu/model.d.ts +2 -1
- package/dist/channels/feishu/normalize.js +100 -0
- package/dist/channels/feishu/preview.d.ts +2 -2
- package/dist/channels/feishu/register-webhook.d.ts +1 -0
- package/dist/channels/feishu/register-webhook.js +3 -2
- package/dist/channels/feishu/scaffold/channel.ts +65 -46
- package/dist/channels/feishu/scaffold/feishu-send.ts +38 -33
- package/dist/channels/feishu/scaffold/feishu-threads.ts +25 -0
- package/dist/channels/feishu/setup-mode.d.ts +45 -25
- package/dist/channels/feishu/setup-mode.js +74 -23
- package/dist/channels/feishu/shared-api.d.ts +24 -6
- package/dist/channels/feishu/shared-api.js +30 -24
- package/dist/channels/kit/context-buffer.d.ts +11 -2
- package/dist/channels/kit/context-buffer.js +7 -4
- package/dist/channels/kit/delivery.d.ts +19 -3
- package/dist/channels/kit/delivery.js +74 -15
- package/dist/channels/kit/event-stream.js +2 -1
- package/dist/channels/kit/invoke-turn-kit.d.ts +41 -41
- package/dist/channels/kit/invoke-turn-kit.js +62 -71
- package/dist/channels/kit/place-history.d.ts +107 -0
- package/dist/channels/kit/place-history.js +182 -0
- package/dist/channels/kit/preview-kit.d.ts +9 -5
- package/dist/channels/kit/preview-kit.js +36 -15
- package/dist/channels/kit/room-threads.d.ts +46 -0
- package/dist/channels/kit/room-threads.js +81 -0
- package/dist/channels/kit/seen.js +1 -1
- package/dist/channels/kit/stop-command.d.ts +6 -3
- package/dist/channels/kit/stop-command.js +20 -18
- package/dist/channels/kit/thread-fork.d.ts +17 -0
- package/dist/channels/kit/thread-fork.js +43 -0
- package/dist/channels/kit/thread-participants.js +1 -1
- package/dist/channels/kit/transport.d.ts +5 -0
- package/dist/channels/kit/transport.js +5 -0
- package/dist/channels/kit/turn-runner.d.ts +10 -9
- package/dist/channels/kit/turn-runner.js +17 -19
- package/dist/channels/kit/turn-store.d.ts +5 -4
- package/dist/channels/kit/turn-store.js +5 -5
- package/dist/channels/lark/lark.d.ts +3 -0
- package/dist/channels/lark/lark.js +5 -0
- package/dist/channels/lark/onboard.d.ts +5 -3
- package/dist/channels/lark/onboard.js +14 -14
- package/dist/channels/lark/scaffold/channel.ts +67 -44
- package/dist/channels/lark/scaffold/lark-send.ts +38 -33
- package/dist/channels/lark/scaffold/lark-threads.ts +25 -0
- package/dist/channels/respond.d.ts +0 -4
- package/dist/channels/respond.js +1 -1
- package/dist/channels/router.d.ts +18 -0
- package/dist/channels/router.js +68 -0
- package/dist/channels/serve.d.ts +5 -70
- package/dist/channels/serve.js +105 -287
- package/dist/channels/slack/history.d.ts +42 -0
- package/dist/channels/slack/history.js +282 -0
- package/dist/channels/slack/invoke-turn.d.ts +12 -5
- package/dist/channels/slack/invoke-turn.js +7 -5
- package/dist/channels/slack/manifest.d.ts +1 -4
- package/dist/channels/slack/manifest.js +22 -10
- package/dist/channels/slack/model.d.ts +2 -1
- package/dist/channels/slack/onboard.d.ts +0 -2
- package/dist/channels/slack/onboard.js +2 -4
- package/dist/channels/slack/onboarding-state.d.ts +0 -2
- package/dist/channels/slack/onboarding-state.js +0 -1
- package/dist/channels/slack/parse.d.ts +0 -5
- package/dist/channels/slack/parse.js +1 -16
- package/dist/channels/slack/preview.d.ts +2 -3
- package/dist/channels/slack/preview.js +78 -52
- package/dist/channels/slack/register-webhook.d.ts +1 -0
- package/dist/channels/slack/register-webhook.js +6 -5
- package/dist/channels/slack/scaffold/channel.ts +23 -24
- package/dist/channels/slack/scaffold/slack-send.ts +50 -43
- package/dist/channels/slack/scaffold/slack-threads.ts +29 -0
- package/dist/channels/slack/setup-server.d.ts +19 -0
- package/dist/channels/slack/setup-server.js +113 -11
- package/dist/channels/slack/shared-api.d.ts +15 -4
- package/dist/channels/slack/shared-api.js +19 -14
- package/dist/channels/slack/slack-api.d.ts +61 -2
- package/dist/channels/slack/slack-api.js +28 -5
- package/dist/channels/slack/slack.js +97 -52
- package/dist/channels/slack/welcomed.js +1 -1
- package/dist/channels/telegram/context-buffer.d.ts +6 -1
- package/dist/channels/telegram/context-buffer.js +19 -0
- package/dist/channels/telegram/invoke-turn.d.ts +8 -4
- package/dist/channels/telegram/invoke-turn.js +7 -7
- package/dist/channels/telegram/parse.d.ts +7 -2
- package/dist/channels/telegram/parse.js +7 -0
- package/dist/channels/telegram/preview.d.ts +2 -2
- package/dist/channels/telegram/register-webhook.d.ts +1 -0
- package/dist/channels/telegram/register-webhook.js +3 -2
- package/dist/channels/telegram/scaffold/channel.ts +27 -28
- package/dist/channels/telegram/scaffold/telegram-send.ts +61 -108
- package/dist/channels/telegram/shared-api.d.ts +34 -0
- package/dist/channels/telegram/shared-api.js +79 -0
- package/dist/channels/telegram/telegram-api.d.ts +15 -5
- package/dist/channels/telegram/telegram-api.js +10 -6
- package/dist/channels/telegram/telegram.js +27 -21
- package/dist/channels/telegram/turn-store.js +1 -1
- package/dist/channels/{kit/turn-queue.d.ts → turn-queue.d.ts} +2 -2
- package/dist/channels/{kit/turn-queue.js → turn-queue.js} +10 -10
- package/dist/cli/add-feishu.d.ts +42 -12
- package/dist/cli/add-feishu.js +177 -124
- package/dist/cli/add-slack.d.ts +8 -3
- package/dist/cli/add-slack.js +116 -64
- package/dist/cli/auth-view.d.ts +10 -3
- package/dist/cli/auth-view.js +8 -6
- package/dist/cli/box-login.d.ts +18 -7
- package/dist/cli/box-login.js +46 -12
- package/dist/cli/commands/add.d.ts +15 -4
- package/dist/cli/commands/add.js +253 -143
- package/dist/cli/commands/auth.d.ts +6 -0
- package/dist/cli/commands/auth.js +50 -0
- package/dist/cli/commands/content.d.ts +6 -0
- package/dist/cli/commands/content.js +45 -0
- package/dist/cli/commands/deploy/agentcore.js +50 -77
- package/dist/cli/commands/deploy/docker.js +38 -39
- package/dist/cli/commands/deploy/fly.js +21 -18
- package/dist/cli/commands/deploy/host-login.d.ts +26 -0
- package/dist/cli/commands/deploy/host-login.js +90 -0
- package/dist/cli/commands/deploy/railway.js +21 -26
- package/dist/cli/commands/deploy/shared.d.ts +45 -17
- package/dist/cli/commands/deploy/shared.js +34 -15
- package/dist/cli/commands/deploy.d.ts +0 -4
- package/dist/cli/commands/deploy.js +237 -50
- package/dist/cli/commands/destroy.js +8 -6
- package/dist/cli/commands/dev.d.ts +0 -2
- package/dist/cli/commands/dev.js +20 -19
- package/dist/cli/commands/env.d.ts +12 -0
- package/dist/cli/commands/env.js +191 -0
- package/dist/cli/commands/info.js +95 -156
- package/dist/cli/commands/init.d.ts +2 -2
- package/dist/cli/commands/init.js +35 -33
- package/dist/cli/commands/invoke.d.ts +6 -0
- package/dist/cli/commands/invoke.js +132 -16
- package/dist/cli/commands/login.d.ts +31 -2
- package/dist/cli/commands/login.js +416 -65
- package/dist/cli/commands/logout.d.ts +4 -0
- package/dist/cli/commands/logout.js +53 -0
- package/dist/cli/commands/logs.js +8 -6
- package/dist/cli/commands/models.d.ts +2 -1
- package/dist/cli/commands/models.js +39 -37
- package/dist/cli/commands/schedules.d.ts +21 -0
- package/dist/cli/commands/schedules.js +143 -0
- package/dist/cli/commands/start.d.ts +11 -10
- package/dist/cli/commands/start.js +35 -62
- package/dist/cli/content-view.d.ts +9 -0
- package/dist/cli/content-view.js +26 -0
- package/dist/cli/fail.d.ts +9 -12
- package/dist/cli/fail.js +17 -14
- package/dist/cli/invoke-stream.d.ts +12 -3
- package/dist/cli/invoke-stream.js +85 -23
- package/dist/cli/kernel.d.ts +9 -2
- package/dist/cli/kernel.js +15 -6
- package/dist/cli/login-relay.d.ts +6 -4
- package/dist/cli/login-relay.js +19 -7
- package/dist/cli/models-view.d.ts +5 -1
- package/dist/cli/models-view.js +1 -1
- package/dist/cli/person.d.ts +10 -0
- package/dist/cli/person.js +23 -0
- package/dist/cli/program.js +421 -203
- package/dist/cli/serve.d.ts +13 -63
- package/dist/cli/serve.js +31 -121
- package/dist/cli/shared.d.ts +21 -48
- package/dist/cli/shared.js +70 -89
- package/dist/cli/ticket.d.ts +136 -0
- package/dist/cli/ticket.js +476 -0
- package/dist/client.d.ts +7 -0
- package/dist/client.js +2 -0
- package/dist/content/declare.d.ts +70 -0
- package/dist/content/declare.js +163 -0
- package/dist/content/file.d.ts +32 -0
- package/dist/content/file.js +119 -0
- package/dist/content/git.d.ts +41 -0
- package/dist/content/git.js +220 -0
- package/dist/content/mount.d.ts +2 -0
- package/dist/content/mount.js +15 -0
- package/dist/content/resolve.d.ts +52 -0
- package/dist/content/resolve.js +151 -0
- package/dist/content/source.d.ts +27 -0
- package/dist/content/source.js +53 -0
- package/dist/conversation-sessions.d.ts +26 -0
- package/dist/conversation-sessions.js +99 -0
- package/dist/declared-secrets.d.ts +19 -37
- package/dist/declared-secrets.js +16 -58
- package/dist/deploy/agentcore/destroy.d.ts +3 -3
- package/dist/deploy/agentcore/destroy.js +46 -28
- package/dist/deploy/agentcore/forwarder.js +105 -22
- package/dist/deploy/agentcore/logs.js +1 -1
- package/dist/deploy/agentcore/plan.d.ts +10 -24
- package/dist/deploy/agentcore/plan.js +31 -135
- package/dist/deploy/agentcore/run.d.ts +1 -1
- package/dist/deploy/agentcore/run.js +8 -5
- package/dist/deploy/agentcore/shell.d.ts +1 -1
- package/dist/deploy/agentcore/shell.js +5 -5
- package/dist/deploy/api.d.ts +34 -0
- package/dist/deploy/api.js +50 -0
- package/dist/deploy/box-shell.d.ts +6 -0
- package/dist/deploy/box-shell.js +7 -0
- package/dist/deploy/build-context.d.ts +7 -5
- package/dist/deploy/build-context.js +41 -35
- package/dist/deploy/channel-ingress.d.ts +6 -1
- package/dist/deploy/channel-ingress.js +18 -5
- package/dist/deploy/container.d.ts +22 -9
- package/dist/deploy/container.js +96 -55
- package/dist/deploy/docker/plan.d.ts +3 -2
- package/dist/deploy/docker/plan.js +13 -14
- package/dist/deploy/docker/run.d.ts +2 -2
- package/dist/deploy/docker/run.js +8 -4
- package/dist/deploy/fly/plan.d.ts +1 -1
- package/dist/deploy/fly/plan.js +12 -21
- package/dist/deploy/fly/run.d.ts +10 -6
- package/dist/deploy/fly/run.js +11 -6
- package/dist/deploy/hosts.d.ts +2 -1
- package/dist/deploy/hosts.js +2 -1
- package/dist/deploy/preflight.d.ts +21 -23
- package/dist/deploy/preflight.js +223 -202
- package/dist/deploy/railway/plan.d.ts +8 -6
- package/dist/deploy/railway/plan.js +15 -58
- package/dist/deploy/railway/run.d.ts +8 -3
- package/dist/deploy/railway/run.js +12 -8
- package/dist/deploy/residency.d.ts +5 -11
- package/dist/deploy/residency.js +0 -6
- package/dist/deploy/runner.d.ts +1 -1
- package/dist/deploy/runner.js +1 -1
- package/dist/deploy/secrets.d.ts +16 -2
- package/dist/deploy/secrets.js +33 -6
- package/dist/deploy/workspace.d.ts +11 -6
- package/dist/deploy/workspace.js +55 -38
- package/dist/dev-supervisor.d.ts +11 -2
- package/dist/dev-supervisor.js +52 -27
- package/dist/effect-port.d.ts +4 -4
- package/dist/effect-port.js +4 -4
- package/dist/env.d.ts +0 -13
- package/dist/env.js +1 -44
- package/dist/environment/apt.d.ts +4 -0
- package/dist/environment/apt.js +32 -0
- package/dist/environment/declare.d.ts +59 -0
- package/dist/environment/declare.js +210 -0
- package/dist/environment/mise.d.ts +51 -0
- package/dist/environment/mise.js +272 -0
- package/dist/feishu.d.ts +2 -2
- package/dist/feishu.js +2 -2
- package/dist/git.d.ts +13 -0
- package/dist/git.js +55 -0
- package/dist/harnesses/models/catalog.d.ts +20 -0
- package/dist/harnesses/models/catalog.js +254 -0
- package/dist/{engines/pi/auth.d.ts → harnesses/models/credentials.d.ts} +3 -3
- package/dist/{engines/pi/auth.js → harnesses/models/credentials.js} +3 -3
- package/dist/harnesses/models/environment.d.ts +48 -0
- package/dist/harnesses/models/environment.js +88 -0
- package/dist/harnesses/models/host.d.ts +30 -0
- package/dist/harnesses/models/host.js +97 -0
- package/dist/{engines/pi → harnesses/models}/login.d.ts +66 -70
- package/dist/harnesses/models/login.js +439 -0
- package/dist/harnesses/models/models.d.ts +84 -0
- package/dist/harnesses/models/models.js +197 -0
- package/dist/harnesses/pi-durable/agent.d.ts +42 -0
- package/dist/harnesses/pi-durable/agent.js +581 -0
- package/dist/harnesses/pi-durable/defaults.d.ts +28 -0
- package/dist/harnesses/pi-durable/defaults.js +26 -0
- package/dist/harnesses/pi-durable/define.d.ts +77 -0
- package/dist/harnesses/pi-durable/define.js +28 -0
- package/dist/harnesses/pi-durable/entries.d.ts +32 -0
- package/dist/harnesses/pi-durable/entries.js +126 -0
- package/dist/harnesses/pi-durable/events.d.ts +25 -0
- package/dist/harnesses/pi-durable/events.js +238 -0
- package/dist/harnesses/pi-durable/ids.d.ts +16 -0
- package/dist/harnesses/pi-durable/ids.js +55 -0
- package/dist/harnesses/pi-durable/messages.d.ts +41 -0
- package/dist/harnesses/pi-durable/messages.js +116 -0
- package/dist/harnesses/pi-durable/open.d.ts +95 -0
- package/dist/harnesses/pi-durable/open.js +330 -0
- package/dist/harnesses/pi-durable/reads.d.ts +30 -0
- package/dist/harnesses/pi-durable/reads.js +94 -0
- package/dist/harnesses/pi-durable/registry.d.ts +18 -0
- package/dist/harnesses/pi-durable/registry.js +56 -0
- package/dist/harnesses/pi-durable/release.d.ts +13 -0
- package/dist/harnesses/pi-durable/release.js +40 -0
- package/dist/harnesses/pi-durable/serve.d.ts +90 -0
- package/dist/harnesses/pi-durable/serve.js +186 -0
- package/dist/harnesses/pi-durable/sessions.d.ts +27 -0
- package/dist/harnesses/pi-durable/sessions.js +47 -0
- package/dist/harnesses/pi-durable/storage.d.ts +4 -0
- package/dist/harnesses/pi-durable/storage.js +49 -0
- package/dist/harnesses/pi-durable/stream.d.ts +20 -0
- package/dist/harnesses/pi-durable/stream.js +221 -0
- package/dist/harnesses/pi-durable/text.d.ts +30 -0
- package/dist/harnesses/pi-durable/text.js +292 -0
- package/dist/harnesses/pi-durable/wake.d.ts +11 -0
- package/dist/harnesses/pi-durable/wake.js +90 -0
- package/dist/http/client.d.ts +6 -0
- package/dist/http/client.js +256 -0
- package/dist/http/contract.d.ts +541 -0
- package/dist/http/contract.js +179 -0
- package/dist/http/server.d.ts +34 -0
- package/dist/http/server.js +194 -0
- package/dist/index.d.ts +19 -4
- package/dist/index.js +13 -5
- package/dist/lark.d.ts +2 -2
- package/dist/lark.js +2 -2
- package/dist/locked-file.d.ts +17 -0
- package/dist/{engines/pi/locked-file.js → locked-file.js} +16 -10
- package/dist/once.d.ts +6 -0
- package/dist/once.js +23 -0
- package/dist/paths.d.ts +36 -52
- package/dist/paths.js +66 -182
- package/dist/runtime.d.ts +25 -2
- package/dist/runtime.js +27 -0
- package/dist/scaffold/add-channel.d.ts +14 -27
- package/dist/scaffold/add-channel.js +82 -180
- package/dist/scaffold/init.d.ts +17 -18
- package/dist/scaffold/init.js +87 -99
- package/dist/scaffold/templates/SYSTEM.md +12 -0
- package/dist/scaffold/templates/env.example +4 -10
- package/dist/scaffold/templates/fastagent.config.ts +21 -33
- package/dist/scaffold/templates/gitignore +8 -1
- package/dist/scaffold/templates/skills/writing-great-skills/SKILL.md +1 -2
- package/dist/scaffold/templates.d.ts +9 -4
- package/dist/scaffold/templates.js +7 -5
- package/dist/scaffold/vendor-skill.d.ts +1 -4
- package/dist/scaffold/vendor-skill.js +5 -6
- package/dist/schedule/cron.d.ts +13 -0
- package/dist/schedule/cron.js +52 -0
- package/dist/schedule/eventbridge-cron.d.ts +17 -0
- package/dist/schedule/eventbridge-cron.js +88 -0
- package/dist/schedule/schedule.d.ts +23 -0
- package/dist/schedule/schedule.js +34 -0
- package/dist/schedule/scheduler.d.ts +34 -33
- package/dist/schedule/scheduler.js +251 -137
- package/dist/schedule/state.d.ts +4 -14
- package/dist/schedule/state.js +7 -7
- package/dist/schedule/wake-alarm.d.ts +22 -2
- package/dist/schedule/wake-alarm.js +66 -20
- package/dist/schedule/wakeups.d.ts +16 -15
- package/dist/schedule/wakeups.js +47 -45
- package/dist/service.d.ts +56 -169
- package/dist/service.js +91 -187
- package/dist/serving-command.d.ts +10 -0
- package/dist/serving-command.js +16 -0
- package/dist/sign-in-api.d.ts +147 -0
- package/dist/sign-in-api.js +9 -0
- package/dist/slack.d.ts +1 -1
- package/dist/slack.js +1 -1
- package/dist/{channels/kit/state.js → state-file.js} +6 -6
- package/dist/telegram.d.ts +1 -0
- package/dist/telegram.js +1 -0
- package/dist/tunnel.d.ts +3 -0
- package/dist/tunnel.js +14 -5
- package/dist/value-file.d.ts +40 -0
- package/dist/value-file.js +164 -0
- package/dist/version.d.ts +5 -0
- package/dist/version.js +14 -1
- package/package.json +18 -28
- package/dist/agent.d.ts +0 -106
- package/dist/agent.js +0 -21
- package/dist/channels/control.d.ts +0 -31
- package/dist/channels/control.js +0 -329
- package/dist/channels/define-channel.d.ts +0 -39
- package/dist/channels/define-channel.js +0 -9
- package/dist/channels/feishu/context-buffer.d.ts +0 -35
- package/dist/channels/feishu/context-buffer.js +0 -65
- package/dist/channels/feishu/scaffold/channel.websocket.ts +0 -31
- package/dist/channels/http.d.ts +0 -23
- package/dist/channels/http.js +0 -57
- package/dist/channels/lark/scaffold/channel.websocket.ts +0 -31
- package/dist/channels/slack/context-buffer.d.ts +0 -23
- package/dist/channels/slack/context-buffer.js +0 -37
- package/dist/channels/sse.d.ts +0 -4
- package/dist/channels/sse.js +0 -66
- package/dist/cli/commands/chat.d.ts +0 -3
- package/dist/cli/commands/chat.js +0 -14
- package/dist/cli/commands/routine-run.d.ts +0 -6
- package/dist/cli/commands/routine-run.js +0 -46
- package/dist/cli/commands/routine.d.ts +0 -25
- package/dist/cli/commands/routine.js +0 -122
- package/dist/cli/commands/tool.d.ts +0 -1
- package/dist/cli/commands/tool.js +0 -57
- package/dist/collect.d.ts +0 -63
- package/dist/collect.js +0 -90
- package/dist/core.d.ts +0 -13
- package/dist/core.js +0 -15
- package/dist/engines/pi/agent-models.d.ts +0 -83
- package/dist/engines/pi/agent-models.js +0 -120
- package/dist/engines/pi/agent-session-factory.d.ts +0 -121
- package/dist/engines/pi/agent-session-factory.js +0 -535
- package/dist/engines/pi/chat.d.ts +0 -3
- package/dist/engines/pi/chat.js +0 -8
- package/dist/engines/pi/config.d.ts +0 -71
- package/dist/engines/pi/config.js +0 -199
- package/dist/engines/pi/create.d.ts +0 -170
- package/dist/engines/pi/create.js +0 -343
- package/dist/engines/pi/definition.d.ts +0 -74
- package/dist/engines/pi/definition.js +0 -236
- package/dist/engines/pi/entry-images.d.ts +0 -14
- package/dist/engines/pi/entry-images.js +0 -23
- package/dist/engines/pi/invoke-session.d.ts +0 -18
- package/dist/engines/pi/invoke-session.js +0 -403
- package/dist/engines/pi/locked-file.d.ts +0 -9
- package/dist/engines/pi/login.js +0 -331
- package/dist/engines/pi/machine.d.ts +0 -53
- package/dist/engines/pi/machine.js +0 -137
- package/dist/engines/pi/models.d.ts +0 -200
- package/dist/engines/pi/models.js +0 -533
- package/dist/engines/pi/open.d.ts +0 -180
- package/dist/engines/pi/open.js +0 -270
- package/dist/engines/pi/openai-account-models.d.ts +0 -35
- package/dist/engines/pi/openai-account-models.js +0 -116
- package/dist/engines/pi/report.d.ts +0 -18
- package/dist/engines/pi/report.js +0 -59
- package/dist/engines/pi/retry-event.d.ts +0 -6
- package/dist/engines/pi/retry-event.js +0 -15
- package/dist/engines/pi/service.d.ts +0 -9
- package/dist/engines/pi/service.js +0 -14
- package/dist/engines/pi/session-builder.d.ts +0 -13
- package/dist/engines/pi/session-builder.js +0 -117
- package/dist/engines/pi/session-control.d.ts +0 -77
- package/dist/engines/pi/session-control.js +0 -908
- package/dist/engines/pi/session-effects.d.ts +0 -14
- package/dist/engines/pi/session-effects.js +0 -30
- package/dist/engines/pi/session-inheritance.d.ts +0 -21
- package/dist/engines/pi/session-inheritance.js +0 -204
- package/dist/engines/pi/session-markers.d.ts +0 -49
- package/dist/engines/pi/session-markers.js +0 -60
- package/dist/engines/pi/session-settings.d.ts +0 -67
- package/dist/engines/pi/session-settings.js +0 -119
- package/dist/engines/pi/session-store.d.ts +0 -69
- package/dist/engines/pi/session-store.js +0 -430
- package/dist/engines/pi/tool-context.d.ts +0 -45
- package/dist/engines/pi/tool-context.js +0 -31
- package/dist/engines/pi/tool.d.ts +0 -99
- package/dist/engines/pi/tool.js +0 -118
- package/dist/engines/pi/turn-kit.d.ts +0 -92
- package/dist/engines/pi/turn-kit.js +0 -288
- package/dist/engines/pi/wake-tool.d.ts +0 -9
- package/dist/engines/pi/wake-tool.js +0 -92
- package/dist/loader.d.ts +0 -41
- package/dist/loader.js +0 -116
- package/dist/node.d.ts +0 -3
- package/dist/node.js +0 -4
- package/dist/observe.d.ts +0 -6
- package/dist/observe.js +0 -47
- package/dist/pi.d.ts +0 -25
- package/dist/pi.js +0 -15
- package/dist/scaffold/templates/APPEND_SYSTEM.md +0 -12
- package/dist/scaffold/templates/tools/fetch-url.ts +0 -25
- package/dist/schedule/discover.d.ts +0 -17
- package/dist/schedule/discover.js +0 -61
- package/dist/schedule/routine.d.ts +0 -43
- package/dist/schedule/routine.js +0 -32
- package/dist/schedule/run.d.ts +0 -55
- package/dist/schedule/run.js +0 -146
- package/dist/secrets-gate.d.ts +0 -32
- package/dist/secrets-gate.js +0 -33
- package/dist/session-remote.d.ts +0 -47
- package/dist/session-remote.js +0 -460
- package/dist/session.d.ts +0 -466
- package/dist/session.js +0 -57
- /package/dist/{channels/kit/state.d.ts → state-file.d.ts} +0 -0
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* pi-ai's model collection as FastAgent composes it: the built-in providers over a credential store, kept current by
|
|
3
|
+
* the catalogs (catalog.ts), and the definition's own providers; and the reads a report, a login or a picker make of
|
|
4
|
+
* it. A custom model is a provider in code (`defineAgent({ providers })`), never a models file or a per-account list
|
|
5
|
+
* (architecture.md §3).
|
|
6
|
+
*/
|
|
7
|
+
import { type Api, type CredentialStore, type Model, type Models, type Provider } from "@earendil-works/pi-ai";
|
|
8
|
+
import type { Catalogs } from "./catalog.ts";
|
|
9
|
+
/** The provider of a `"provider/modelId"` spec. */
|
|
10
|
+
export declare function providerOf(spec: string): string;
|
|
11
|
+
/** Every chat model `models` offers, as `"provider/modelId"`, sorted. */
|
|
12
|
+
export declare function listModels(models: Models): string[];
|
|
13
|
+
/**
|
|
14
|
+
* The built-ins plus `providers` (a same id replaces a built-in), over any credential store, in `environment`: what
|
|
15
|
+
* the agent's environment adds to this process's, read before it by a provider's auth and by each request. With
|
|
16
|
+
* `catalogs`, the lists its refresh brings up to date; without, the ones this pi-ai was built with.
|
|
17
|
+
*/
|
|
18
|
+
export declare function modelsOver(credentials: CredentialStore, providers?: readonly Provider[], catalogs?: Catalogs, environment?: Readonly<Record<string, string>>): Models;
|
|
19
|
+
/**
|
|
20
|
+
* Whether `env` alone satisfies a provider, by pi's own check, and with what when the provider says (its API-key
|
|
21
|
+
* variable, or an ambient source such as an AWS profile); undefined when it does not. A provider in code may
|
|
22
|
+
* authenticate without naming a source. Passed explicitly rather than read from `process.env`: only the environment a
|
|
23
|
+
* SHELL hands down is shared by every agent on the machine, and a process that has loaded an agent's `.secrets/.env`
|
|
24
|
+
* holds that agent's variables too. What the shell shares outranks the global credentials file (environment.ts), so a
|
|
25
|
+
* global login for such a provider is not used.
|
|
26
|
+
*
|
|
27
|
+
* `fileExists` answers for the files a source points at (an AWS profile, Google ADC): this machine's by default, which
|
|
28
|
+
* is right wherever the answer is about THIS machine. A deployment passes one that finds nothing, because no file of
|
|
29
|
+
* the builder's travels with it.
|
|
30
|
+
*/
|
|
31
|
+
export declare function environmentAuth(providerId: string, env: NodeJS.ProcessEnv, fileExists?: (path: string) => Promise<boolean>, providers?: readonly Provider[]): Promise<{
|
|
32
|
+
source?: string;
|
|
33
|
+
} | undefined>;
|
|
34
|
+
/**
|
|
35
|
+
* The environment variables a provider reads its key from, in the order it reads them: what a person sets for it to
|
|
36
|
+
* authenticate with no sign-in. pi-ai keeps the names inside each provider's auth, so they are learnt by asking the
|
|
37
|
+
* provider to authenticate over an environment that records every name asked for and holds none. Its side-effect-free
|
|
38
|
+
* `check` when it has one, since its `resolve` may then run commands.
|
|
39
|
+
*/
|
|
40
|
+
export declare function keyVariables(provider: Provider): Promise<string[]>;
|
|
41
|
+
/**
|
|
42
|
+
* What a provider can offer as an interactive login: an OAuth flow, an API-key ENTRY prompt, or nothing ("none" — the
|
|
43
|
+
* key must come from the provider's env var).
|
|
44
|
+
*/
|
|
45
|
+
export type InteractiveLoginKind = "oauth" | "api_key" | "none";
|
|
46
|
+
export declare function interactiveLoginKind(p: Provider): InteractiveLoginKind;
|
|
47
|
+
/** THE rule for "can this method be signed in to interactively": the auth to run for it, or undefined. */
|
|
48
|
+
export declare function interactiveAuth(provider: Provider, method: Exclude<InteractiveLoginKind, "none">): import("@earendil-works/pi-ai").ApiKeyAuth | import("@earendil-works/pi-ai").OAuthAuth | undefined;
|
|
49
|
+
/** The providers a sign-in can target: pi's built-ins plus `extra`, composed exactly as {@link modelsOver} does. */
|
|
50
|
+
export declare function loginProviders(extra?: readonly Provider[]): readonly Provider[];
|
|
51
|
+
/** Per-provider auth status for the first-run model picker. */
|
|
52
|
+
export type ProviderAuthStatus = {
|
|
53
|
+
state: "ready";
|
|
54
|
+
source?: string;
|
|
55
|
+
} | {
|
|
56
|
+
state: "unconfigured";
|
|
57
|
+
login: InteractiveLoginKind;
|
|
58
|
+
} | {
|
|
59
|
+
state: "broken";
|
|
60
|
+
message: string;
|
|
61
|
+
login: InteractiveLoginKind;
|
|
62
|
+
};
|
|
63
|
+
/** Probe every provider's auth once (auth is provider-scoped, so any of its models works as the probe). */
|
|
64
|
+
export declare function providerAuthStatuses(models: Models): Promise<Map<string, ProviderAuthStatus>>;
|
|
65
|
+
/** The source of a provider that authenticates without naming one: a definition's provider resolving its own key. */
|
|
66
|
+
export declare const UNNAMED_AUTH_SOURCE = "the provider's own auth";
|
|
67
|
+
/**
|
|
68
|
+
* Which source currently satisfies auth for `spec`, or undefined when none does (or the spec is not in `models`).
|
|
69
|
+
* Rejects when resolving fails — a corrupt entry, a refresh the provider refused — which is a different answer from
|
|
70
|
+
* "nothing configured" and must reach whoever reports it.
|
|
71
|
+
*/
|
|
72
|
+
export declare function probeAuthSource(models: Models, spec: string): Promise<string | undefined>;
|
|
73
|
+
/**
|
|
74
|
+
* Verdict of {@link probeApiKey}: `rejected` is DEFINITIVE (the provider answered HTTP 401 — the key is wrong);
|
|
75
|
+
* everything else non-ok is `unknown`.
|
|
76
|
+
*/
|
|
77
|
+
export type KeyProbe = {
|
|
78
|
+
state: "ok";
|
|
79
|
+
} | {
|
|
80
|
+
state: "rejected" | "unknown";
|
|
81
|
+
message: string;
|
|
82
|
+
};
|
|
83
|
+
/** Quick-fail probe for a just-stored API key. */
|
|
84
|
+
export declare function probeApiKey(models: Models, model: Model<Api>, signal?: AbortSignal): Promise<KeyProbe>;
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* pi-ai's model collection as FastAgent composes it: the built-in providers over a credential store, kept current by
|
|
3
|
+
* the catalogs (catalog.ts), and the definition's own providers; and the reads a report, a login or a picker make of
|
|
4
|
+
* it. A custom model is a provider in code (`defineAgent({ providers })`), never a models file or a per-account list
|
|
5
|
+
* (architecture.md §3).
|
|
6
|
+
*/
|
|
7
|
+
import { InMemoryCredentialStore, createModels, defaultProviderAuthContext, } from "@earendil-works/pi-ai";
|
|
8
|
+
import { builtinModels, builtinProviders } from "@earendil-works/pi-ai/providers/all";
|
|
9
|
+
/** The provider of a `"provider/modelId"` spec. */
|
|
10
|
+
export function providerOf(spec) {
|
|
11
|
+
const slash = spec.indexOf("/");
|
|
12
|
+
return slash > 0 ? spec.slice(0, slash) : spec;
|
|
13
|
+
}
|
|
14
|
+
/** Every chat model `models` offers, as `"provider/modelId"`, sorted. */
|
|
15
|
+
export function listModels(models) {
|
|
16
|
+
const specs = [];
|
|
17
|
+
for (const provider of models.getProviders()) {
|
|
18
|
+
for (const model of provider.getModels())
|
|
19
|
+
specs.push(`${provider.id}/${model.id}`);
|
|
20
|
+
}
|
|
21
|
+
return specs.sort();
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* pi's own reading of an environment (a blank variable is unset) through `read` instead of this process's: an agent's
|
|
25
|
+
* environment is its own when the process runs several. Files a source points at are this machine's unless
|
|
26
|
+
* `fileExists` says otherwise.
|
|
27
|
+
*/
|
|
28
|
+
function authContextIn(read, fileExists = defaultProviderAuthContext().fileExists) {
|
|
29
|
+
return {
|
|
30
|
+
env: async (name) => {
|
|
31
|
+
const value = read(name);
|
|
32
|
+
return value?.trim() ? value : undefined;
|
|
33
|
+
},
|
|
34
|
+
fileExists,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* `provider` with `environment` given to each request, as its auth reads it: pi resolves a provider's key from the
|
|
39
|
+
* auth context, but a request reads its region, endpoint or ambient key (Bedrock, Azure, Vertex) from the request's
|
|
40
|
+
* own `env`, which it otherwise takes from this process.
|
|
41
|
+
*/
|
|
42
|
+
function inEnvironment(provider, environment) {
|
|
43
|
+
const withEnv = (options) => ({ ...options, env: { ...environment, ...options?.env } });
|
|
44
|
+
const { fetchDeferred, cancelDeferred, generateImages, classify } = provider;
|
|
45
|
+
return {
|
|
46
|
+
...provider,
|
|
47
|
+
stream: (model, context, options) => provider.stream(model, context, withEnv(options)),
|
|
48
|
+
streamSimple: (model, context, options) => provider.streamSimple(model, context, withEnv(options)),
|
|
49
|
+
...(fetchDeferred && {
|
|
50
|
+
fetchDeferred: (model, handle, options) => fetchDeferred.call(provider, model, handle, withEnv(options)),
|
|
51
|
+
}),
|
|
52
|
+
...(cancelDeferred && {
|
|
53
|
+
cancelDeferred: (model, handle, options) => cancelDeferred.call(provider, model, handle, withEnv(options)),
|
|
54
|
+
}),
|
|
55
|
+
...(generateImages && {
|
|
56
|
+
generateImages: (model, context, options) => generateImages.call(provider, model, context, withEnv(options)),
|
|
57
|
+
}),
|
|
58
|
+
...(classify && {
|
|
59
|
+
classify: (model, context, options) => classify.call(provider, model, context, withEnv(options)),
|
|
60
|
+
}),
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* The built-ins plus `providers` (a same id replaces a built-in), over any credential store, in `environment`: what
|
|
65
|
+
* the agent's environment adds to this process's, read before it by a provider's auth and by each request. With
|
|
66
|
+
* `catalogs`, the lists its refresh brings up to date; without, the ones this pi-ai was built with.
|
|
67
|
+
*/
|
|
68
|
+
export function modelsOver(credentials, providers = [], catalogs, environment = {}) {
|
|
69
|
+
const models = createModels({
|
|
70
|
+
credentials,
|
|
71
|
+
// As a request reads it (pi's getProviderEnvValue): the request's env first, then this process's.
|
|
72
|
+
authContext: authContextIn((name) => environment[name] || process.env[name]),
|
|
73
|
+
...(catalogs ? { modelsStore: catalogs.fetched } : {}),
|
|
74
|
+
});
|
|
75
|
+
for (const builtIn of builtinProviders()) {
|
|
76
|
+
models.setProvider(inEnvironment(catalogs ? catalogs.over(builtIn) : builtIn, environment));
|
|
77
|
+
}
|
|
78
|
+
for (const provider of providers)
|
|
79
|
+
models.setProvider(inEnvironment(provider, environment));
|
|
80
|
+
return models;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Whether `env` alone satisfies a provider, by pi's own check, and with what when the provider says (its API-key
|
|
84
|
+
* variable, or an ambient source such as an AWS profile); undefined when it does not. A provider in code may
|
|
85
|
+
* authenticate without naming a source. Passed explicitly rather than read from `process.env`: only the environment a
|
|
86
|
+
* SHELL hands down is shared by every agent on the machine, and a process that has loaded an agent's `.secrets/.env`
|
|
87
|
+
* holds that agent's variables too. What the shell shares outranks the global credentials file (environment.ts), so a
|
|
88
|
+
* global login for such a provider is not used.
|
|
89
|
+
*
|
|
90
|
+
* `fileExists` answers for the files a source points at (an AWS profile, Google ADC): this machine's by default, which
|
|
91
|
+
* is right wherever the answer is about THIS machine. A deployment passes one that finds nothing, because no file of
|
|
92
|
+
* the builder's travels with it.
|
|
93
|
+
*/
|
|
94
|
+
export async function environmentAuth(providerId, env, fileExists = defaultProviderAuthContext().fileExists, providers = []) {
|
|
95
|
+
const models = builtinModels({
|
|
96
|
+
credentials: new InMemoryCredentialStore(),
|
|
97
|
+
authContext: authContextIn((name) => env[name], fileExists),
|
|
98
|
+
});
|
|
99
|
+
for (const provider of providers)
|
|
100
|
+
models.setProvider(provider);
|
|
101
|
+
return models.checkAuth(providerId);
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* The environment variables a provider reads its key from, in the order it reads them: what a person sets for it to
|
|
105
|
+
* authenticate with no sign-in. pi-ai keeps the names inside each provider's auth, so they are learnt by asking the
|
|
106
|
+
* provider to authenticate over an environment that records every name asked for and holds none. Its side-effect-free
|
|
107
|
+
* `check` when it has one, since its `resolve` may then run commands.
|
|
108
|
+
*/
|
|
109
|
+
export async function keyVariables(provider) {
|
|
110
|
+
const apiKey = provider.auth.apiKey;
|
|
111
|
+
if (apiKey === undefined)
|
|
112
|
+
return [];
|
|
113
|
+
const asked = new Set();
|
|
114
|
+
const ctx = {
|
|
115
|
+
env: async (name) => void asked.add(name),
|
|
116
|
+
fileExists: async () => false,
|
|
117
|
+
};
|
|
118
|
+
const signal = new AbortController().signal;
|
|
119
|
+
await (apiKey.check ? apiKey.check({ ctx, signal }) : apiKey.resolve({ ctx, signal }));
|
|
120
|
+
return [...asked];
|
|
121
|
+
}
|
|
122
|
+
export function interactiveLoginKind(p) {
|
|
123
|
+
if (interactiveAuth(p, "oauth"))
|
|
124
|
+
return "oauth";
|
|
125
|
+
return interactiveAuth(p, "api_key") ? "api_key" : "none";
|
|
126
|
+
}
|
|
127
|
+
/** THE rule for "can this method be signed in to interactively": the auth to run for it, or undefined. */
|
|
128
|
+
export function interactiveAuth(provider, method) {
|
|
129
|
+
return method === "oauth" ? provider.auth.oauth : provider.auth.apiKey?.login ? provider.auth.apiKey : undefined;
|
|
130
|
+
}
|
|
131
|
+
/** The providers a sign-in can target: pi's built-ins plus `extra`, composed exactly as {@link modelsOver} does. */
|
|
132
|
+
export function loginProviders(extra) {
|
|
133
|
+
return modelsOver(new InMemoryCredentialStore(), extra).getProviders();
|
|
134
|
+
}
|
|
135
|
+
/** Probe every provider's auth once (auth is provider-scoped, so any of its models works as the probe). */
|
|
136
|
+
export async function providerAuthStatuses(models) {
|
|
137
|
+
const statuses = new Map();
|
|
138
|
+
for (const provider of models.getProviders()) {
|
|
139
|
+
const [probe] = provider.getModels();
|
|
140
|
+
if (!probe)
|
|
141
|
+
continue;
|
|
142
|
+
const login = interactiveLoginKind(provider);
|
|
143
|
+
try {
|
|
144
|
+
const auth = await models.getAuth(probe);
|
|
145
|
+
statuses.set(provider.id, auth ? { state: "ready", source: auth.source } : { state: "unconfigured", login });
|
|
146
|
+
}
|
|
147
|
+
catch (error) {
|
|
148
|
+
statuses.set(provider.id, { state: "broken", message: error.message, login });
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
return statuses;
|
|
152
|
+
}
|
|
153
|
+
/** The source of a provider that authenticates without naming one: a definition's provider resolving its own key. */
|
|
154
|
+
export const UNNAMED_AUTH_SOURCE = "the provider's own auth";
|
|
155
|
+
/**
|
|
156
|
+
* Which source currently satisfies auth for `spec`, or undefined when none does (or the spec is not in `models`).
|
|
157
|
+
* Rejects when resolving fails — a corrupt entry, a refresh the provider refused — which is a different answer from
|
|
158
|
+
* "nothing configured" and must reach whoever reports it.
|
|
159
|
+
*/
|
|
160
|
+
export async function probeAuthSource(models, spec) {
|
|
161
|
+
const slash = spec.indexOf("/");
|
|
162
|
+
if (slash < 1)
|
|
163
|
+
return undefined;
|
|
164
|
+
const model = models.getModel(spec.slice(0, slash), spec.slice(slash + 1));
|
|
165
|
+
if (!model)
|
|
166
|
+
return undefined;
|
|
167
|
+
// A virtual selection authenticates the physical model after routing, not its catalog entry.
|
|
168
|
+
if (model.api === "pi-virtual")
|
|
169
|
+
return "virtual";
|
|
170
|
+
const auth = await models.getAuth(model);
|
|
171
|
+
return auth === undefined ? undefined : (auth.source ?? UNNAMED_AUTH_SOURCE);
|
|
172
|
+
}
|
|
173
|
+
/** Quick-fail probe for a just-stored API key. */
|
|
174
|
+
export async function probeApiKey(models, model, signal) {
|
|
175
|
+
let status;
|
|
176
|
+
let reply;
|
|
177
|
+
try {
|
|
178
|
+
reply = await models.complete(model, { messages: [{ role: "user", content: "ping", timestamp: Date.now() }] }, {
|
|
179
|
+
maxTokens: 16,
|
|
180
|
+
timeoutMs: 15_000,
|
|
181
|
+
maxRetries: 0,
|
|
182
|
+
...(signal ? { signal } : {}),
|
|
183
|
+
onResponse: (r) => {
|
|
184
|
+
status = r.status;
|
|
185
|
+
},
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
catch (error) {
|
|
189
|
+
// Thrown = before/around the request (auth resolution, transport setup) — not a provider verdict.
|
|
190
|
+
return { state: "unknown", message: error.message };
|
|
191
|
+
}
|
|
192
|
+
if (reply.stopReason !== "error" && reply.stopReason !== "aborted")
|
|
193
|
+
return { state: "ok" };
|
|
194
|
+
const message = reply.errorMessage ?? `stopReason "${reply.stopReason}"`;
|
|
195
|
+
const unauthorized = status === 401 || (status === undefined && /(^|\D)401(\D|$)/.test(message));
|
|
196
|
+
return { state: unauthorized ? "rejected" : "unknown", message };
|
|
197
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { Models, ModelThinkingLevel } from "@earendil-works/pi-ai";
|
|
2
|
+
import { type Conversation, Harness, type HarnessOptions, type HarnessSettings, type ModelRef, type RegistryReader, type Storage } from "@earendil-works/pi-durable";
|
|
3
|
+
import { type Agent } from "../../agent-api.ts";
|
|
4
|
+
/** What a Caller may offer as `/<name>`: a prompt template or a skill, expanded for the model (SPEC.md §5.1). */
|
|
5
|
+
export interface AgentCommand {
|
|
6
|
+
name: string;
|
|
7
|
+
description?: string;
|
|
8
|
+
expand(args: string): string;
|
|
9
|
+
}
|
|
10
|
+
export interface DurableAgentOptions {
|
|
11
|
+
storage: Storage;
|
|
12
|
+
models: Models;
|
|
13
|
+
registry: RegistryReader;
|
|
14
|
+
settings?: HarnessSettings;
|
|
15
|
+
env?: HarnessOptions["env"];
|
|
16
|
+
name: string;
|
|
17
|
+
description?: string;
|
|
18
|
+
/** Read for every `info()` and send, so a command the definition gains is offered without a restart. */
|
|
19
|
+
commands?: () => readonly AgentCommand[];
|
|
20
|
+
/** What a conversation answers with when its own settings name none (defaults.ts). */
|
|
21
|
+
model?: ModelRef;
|
|
22
|
+
thinkingLevel?: ModelThinkingLevel;
|
|
23
|
+
inFlightPerProcess?: number;
|
|
24
|
+
/** What becomes of the messages an earlier process accepted and did not end ({@link Unfinished}). */
|
|
25
|
+
unfinished?: Unfinished;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* What a process does with the messages an earlier one accepted and did not end (it was stopped, or killed). `"resume"`
|
|
29
|
+
* (the default, a serve's): they run on in this one, as its own work. `"abort"`: they end aborted before anything runs,
|
|
30
|
+
* for a Caller whose messages do not outlive it (`fastagent invoke`), where running one again would run what its user
|
|
31
|
+
* stopped. `"refuse"`: the open fails naming them, for a process that runs one thing and would cut the rest off
|
|
32
|
+
* (`fastagent schedules run`).
|
|
33
|
+
*/
|
|
34
|
+
export type Unfinished = "resume" | "abort" | "refuse";
|
|
35
|
+
export interface DurableAgent extends Agent {
|
|
36
|
+
/** pi-durable's own API, for operating the agent. */
|
|
37
|
+
readonly harness: Harness;
|
|
38
|
+
/** The conversation a session id names, to operate it through `harness`. */
|
|
39
|
+
conversation(sessionId: string): Promise<Conversation | undefined>;
|
|
40
|
+
close(): Promise<void>;
|
|
41
|
+
}
|
|
42
|
+
export declare function openDurableAgent(options: DurableAgentOptions): Promise<DurableAgent>;
|