@fastagent-sh/fastagent 0.24.4 → 0.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +53 -82
- package/dist/agent-api.d.ts +452 -0
- package/dist/agent-api.js +201 -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 +77 -0
- package/dist/authoring.js +238 -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 +115 -63
- package/dist/cli/auth-view.d.ts +10 -3
- package/dist/cli/auth-view.js +8 -6
- package/dist/cli/box-login.d.ts +17 -7
- package/dist/cli/box-login.js +46 -12
- package/dist/cli/commands/add.d.ts +15 -4
- package/dist/cli/commands/add.js +252 -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 +190 -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 +131 -16
- package/dist/cli/commands/login.d.ts +31 -2
- package/dist/cli/commands/login.js +413 -64
- 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 +3 -2
- package/dist/cli/login-relay.js +18 -6
- 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 +68 -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 +217 -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 +222 -201
- 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 +51 -26
- package/dist/effect-port.d.ts +4 -4
- package/dist/effect-port.js +4 -4
- 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 +50 -0
- package/dist/environment/mise.js +268 -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 +43 -0
- package/dist/harnesses/models/environment.js +82 -0
- package/dist/{engines/pi → harnesses/models}/login.d.ts +57 -26
- package/dist/{engines/pi → harnesses/models}/login.js +187 -79
- package/dist/harnesses/models/models.d.ts +83 -0
- package/dist/harnesses/models/models.js +158 -0
- package/dist/harnesses/pi-durable/agent.d.ts +42 -0
- package/dist/harnesses/pi-durable/agent.js +579 -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 +88 -0
- package/dist/harnesses/pi-durable/open.js +329 -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 +80 -0
- package/dist/harnesses/pi-durable/serve.js +156 -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 +4 -0
- package/dist/harnesses/pi-durable/wake.js +81 -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 +17 -4
- package/dist/index.js +10 -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/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 +12 -4
- package/dist/value-file.d.ts +21 -0
- package/dist/value-file.js +108 -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/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
package/dist/session.d.ts
DELETED
|
@@ -1,466 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Session control plane — the engine-neutral serving extension beside Agent Handler (docs/design/session-control.md).
|
|
3
|
-
*/
|
|
4
|
-
import type { ImageRef, Json, Prompt } from "./agent.ts";
|
|
5
|
-
export interface SessionControl {
|
|
6
|
-
capabilities(): SessionCapabilities;
|
|
7
|
-
/** The names this agent exposes — what a composer's `/` completion LISTS. */
|
|
8
|
-
commands(): Promise<AgentCommand[]>;
|
|
9
|
-
sessions: SessionCollection;
|
|
10
|
-
}
|
|
11
|
-
export interface SessionCollection {
|
|
12
|
-
/**
|
|
13
|
-
* Every session this DEPLOYMENT holds — what a GUI shows as its conversation list, and the only call that is not
|
|
14
|
-
* about ONE session. Deployment-level on purpose: a multi-tenant facade in front of one deployment MUST NOT expose
|
|
15
|
-
* it, because it answers for every user at once. The one read that MAY reject: `[]` is a complete answer for a
|
|
16
|
-
* deployment with no sessions, so it would be a lie for a store that cannot be enumerated. Every other read stays
|
|
17
|
-
* TOTAL.
|
|
18
|
-
*/
|
|
19
|
-
list(): Promise<SessionSummary[]>;
|
|
20
|
-
/** Copy `from`'s history up to entry `at` into a session called `into`. */
|
|
21
|
-
fork(options: {
|
|
22
|
-
from: string;
|
|
23
|
-
at: string;
|
|
24
|
-
into: string;
|
|
25
|
-
}): Promise<SessionResult>;
|
|
26
|
-
get(session: string): Session;
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Can this id be ADDRESSED by a client? URL normalisation eats `""`, `.` and `..` before any router sees them, so a
|
|
30
|
-
* request for `.` would answer about the collection instead. The rule lives in the contract because both sides
|
|
31
|
-
* enforce it and must not drift: a transport refuses to send such an id, and an implementation refuses to MINT one.
|
|
32
|
-
*/
|
|
33
|
-
export declare function isAddressableSession(session: string): boolean;
|
|
34
|
-
/** One session, bound. */
|
|
35
|
-
export interface Session {
|
|
36
|
-
readonly id: string;
|
|
37
|
-
state(): Promise<SessionState>;
|
|
38
|
-
/**
|
|
39
|
-
* `since` is an APPEND-ORDER position cursor: "every record appended after the one with this id", regardless of
|
|
40
|
-
* branch structure.
|
|
41
|
-
*/
|
|
42
|
-
entries(options?: {
|
|
43
|
-
since?: string;
|
|
44
|
-
}): Promise<SessionEntries>;
|
|
45
|
-
/**
|
|
46
|
-
* The bytes behind an {@link EntryImage.ref} this session published; `undefined` when this session holds no such
|
|
47
|
-
* image. Total, like every read but `list()`.
|
|
48
|
-
*
|
|
49
|
-
* Over the wire, a `mimeType` other than `image/png`, `image/jpeg`, `image/gif` or `image/webp` reads back as
|
|
50
|
-
* `application/octet-stream`: the transport will not serve a sender-declared type it cannot trust (the entry still
|
|
51
|
-
* lists the declared one). pi normalizes an invoke's opening prompt images to those four; a `steer`/`followUp`
|
|
52
|
-
* image and a tool result keep whatever type the sender declared, so `image/jpg`, a type with parameters, or
|
|
53
|
-
* `image/svg+xml` sent that way reads back as `application/octet-stream` remotely.
|
|
54
|
-
*/
|
|
55
|
-
image(ref: string): Promise<ImageRef | undefined>;
|
|
56
|
-
events(): SessionEventStream;
|
|
57
|
-
/**
|
|
58
|
-
* Set durable session properties, applied by the session's next turn. An id with no record (nothing has written it
|
|
59
|
-
* yet) takes them too: the write creates its record, and the session's first turn runs on them. Refused there:
|
|
60
|
-
* `leafEntryId` (no entries to point at) and an id no client could address ({@link isAddressableSession}).
|
|
61
|
-
*/
|
|
62
|
-
update(patch: SessionUpdate): Promise<SessionResult>;
|
|
63
|
-
/**
|
|
64
|
-
* Join the active run: delivered after the current turn's tool calls, before the next model call. `prompt.text`
|
|
65
|
-
* must not be empty (`invalid_command`): a queued prompt is reported by its text ({@link PendingPrompts}). An
|
|
66
|
-
* accepted result carries its {@link PromptDisposition}.
|
|
67
|
-
*/
|
|
68
|
-
steer(prompt: Prompt): Promise<SessionResult>;
|
|
69
|
-
/**
|
|
70
|
-
* Queue for the active run, FIFO, delivered when it is otherwise idle. Same non-empty `text` rule and
|
|
71
|
-
* {@link PromptDisposition} as `steer`.
|
|
72
|
-
*/
|
|
73
|
-
followUp(prompt: Prompt): Promise<SessionResult>;
|
|
74
|
-
/** Stop the active run — its queues, its retry delay, its cancellable tool work. */
|
|
75
|
-
abort(): Promise<SessionResult>;
|
|
76
|
-
/** Summarize the history at a session boundary. */
|
|
77
|
-
compact(options?: {
|
|
78
|
-
instructions?: string;
|
|
79
|
-
}): Promise<SessionResult>;
|
|
80
|
-
delete(): Promise<SessionResult>;
|
|
81
|
-
}
|
|
82
|
-
/** The durable properties {@link Session.update} sets. */
|
|
83
|
-
export interface SessionUpdate {
|
|
84
|
-
/** The display name `list()` reports — a label, not an identity: the id stays the Caller's. */
|
|
85
|
-
name?: string;
|
|
86
|
-
/** A FastAgent model spec, constrained to {@link SessionCapabilities.allowedModels}. */
|
|
87
|
-
model?: string;
|
|
88
|
-
/**
|
|
89
|
-
* A string because supported levels are MODEL-dependent — the set for this session's current model is {@link
|
|
90
|
-
* SessionState.availableThinkingLevels}.
|
|
91
|
-
*/
|
|
92
|
-
thinkingLevel?: string;
|
|
93
|
-
/**
|
|
94
|
-
* Move the session's active leaf: the write verb for the tree `entries()` publishes, and how sibling branches come
|
|
95
|
-
* to exist (the next turn hangs off it).
|
|
96
|
-
*/
|
|
97
|
-
leafEntryId?: string;
|
|
98
|
-
}
|
|
99
|
-
export type SessionUpdateField = keyof SessionUpdate;
|
|
100
|
-
/**
|
|
101
|
-
* Every field name, as a value — what an implementation checks a patch against, and what a transport rejects an
|
|
102
|
-
* unknown key by.
|
|
103
|
-
*/
|
|
104
|
-
export declare const UPDATE_FIELDS: readonly ["name", "model", "thinkingLevel", "leafEntryId"];
|
|
105
|
-
/** The wire form of the run actions — what a transport carries for {@link Session.steer} and its siblings. */
|
|
106
|
-
export type SessionAction = {
|
|
107
|
-
type: "steer";
|
|
108
|
-
prompt: Prompt;
|
|
109
|
-
} | {
|
|
110
|
-
type: "follow_up";
|
|
111
|
-
prompt: Prompt;
|
|
112
|
-
} | {
|
|
113
|
-
type: "abort";
|
|
114
|
-
} | {
|
|
115
|
-
type: "compact";
|
|
116
|
-
instructions?: string;
|
|
117
|
-
};
|
|
118
|
-
/**
|
|
119
|
-
* STATIC support declaration — sessionless, so nothing here may depend on a session. Two kinds of flag: GATES
|
|
120
|
-
* (`steering`, `followUp`, `compaction`, `fork`, `delete`, `updatable`), which a client MUST check before calling —
|
|
121
|
-
* calling past one rejects with {@link UNSUPPORTED_CAPABILITY_CODE} — and OBSERVATION QUALITY (`toolProgress`,
|
|
122
|
-
* `usage`), which only say whether those events and state fields appear at all.
|
|
123
|
-
*/
|
|
124
|
-
export interface SessionCapabilities {
|
|
125
|
-
steering: boolean;
|
|
126
|
-
followUp: boolean;
|
|
127
|
-
compaction: boolean;
|
|
128
|
-
fork: boolean;
|
|
129
|
-
delete: boolean;
|
|
130
|
-
/** Which {@link SessionUpdate} fields this deployment accepts. */
|
|
131
|
-
updatable: SessionUpdateField[];
|
|
132
|
-
/** The models `update({ model })` accepts, by `spec` — present iff `model` is updatable. */
|
|
133
|
-
allowedModels?: ModelDescriptor[];
|
|
134
|
-
toolProgress: boolean;
|
|
135
|
-
usage: boolean;
|
|
136
|
-
}
|
|
137
|
-
/**
|
|
138
|
-
* A model as a picker shows it, before any session runs on it. `thinkingLevels` is what `update({ thinkingLevel })`
|
|
139
|
-
* accepts for a session on this model; `name` and `contextWindow` are absent when the model does not declare them.
|
|
140
|
-
*/
|
|
141
|
-
export interface ModelDescriptor {
|
|
142
|
-
/** What `update({ model })` takes. */
|
|
143
|
-
spec: string;
|
|
144
|
-
name?: string;
|
|
145
|
-
thinkingLevels: string[];
|
|
146
|
-
contextWindow?: number;
|
|
147
|
-
}
|
|
148
|
-
/** One name a client can offer the user. */
|
|
149
|
-
export interface AgentCommand {
|
|
150
|
-
name: string;
|
|
151
|
-
description?: string;
|
|
152
|
-
source: string;
|
|
153
|
-
}
|
|
154
|
-
/**
|
|
155
|
-
* Stable `SessionResult.error.code` for a call, or an update field, the implementation does not support — the answer
|
|
156
|
-
* to calling past a {@link SessionCapabilities} gate.
|
|
157
|
-
*/
|
|
158
|
-
export declare const UNSUPPORTED_CAPABILITY_CODE = "unsupported_capability";
|
|
159
|
-
/**
|
|
160
|
-
* Stable `SessionResult.error.code` for a run action (`steer`/`follow_up`/`abort`) called while the session has no
|
|
161
|
-
* active run.
|
|
162
|
-
*/
|
|
163
|
-
export declare const NO_ACTIVE_RUN_CODE = "no_active_run";
|
|
164
|
-
/** Stable `SessionResult.error.code` for a PAYLOAD that is invalid for this runtime. */
|
|
165
|
-
export declare const INVALID_COMMAND_CODE = "invalid_command";
|
|
166
|
-
/**
|
|
167
|
-
* Stable `SessionResult.error.code` for a write that needs a record (fork's source, compact, delete) against an id
|
|
168
|
-
* that has none, because nothing has written it yet. `update()` creates the record instead, and answers this code only
|
|
169
|
-
* when a concurrent `delete()` removes the record between its read and its write.
|
|
170
|
-
*/
|
|
171
|
-
export declare const NO_SUCH_SESSION_CODE = "no_such_session";
|
|
172
|
-
/** Stable `SessionResult.error.code` for a write rejected BEFORE acceptance with nothing durable landed. */
|
|
173
|
-
export declare const BOUNDARY_COMMAND_FAILED_CODE = "boundary_command_failed";
|
|
174
|
-
/**
|
|
175
|
-
* Stable `SessionResult.error.code` for `compact` on a session with no compactable history yet — a no-op, not a
|
|
176
|
-
* failure, rejected before acceptance.
|
|
177
|
-
*/
|
|
178
|
-
export declare const NOTHING_TO_COMPACT_CODE = "nothing_to_compact";
|
|
179
|
-
/**
|
|
180
|
-
* Stable `SessionResult.error.code` for a run action that reached an active run but could not take effect because the
|
|
181
|
-
* run raced to settlement (or the engine refused it).
|
|
182
|
-
*/
|
|
183
|
-
export declare const RUN_COMMAND_FAILED_CODE = "run_command_failed";
|
|
184
|
-
/** What {@link SessionCollection.list} rejects with — the only read that can. `retryable: true`: the condition is
|
|
185
|
-
* the store's availability, not the request. */
|
|
186
|
-
export declare const SESSIONS_UNAVAILABLE_CODE = "sessions_unavailable";
|
|
187
|
-
/**
|
|
188
|
-
* Stable `SessionResult.error.code` for a multi-field {@link Session.update} that wrote some of its fields and then
|
|
189
|
-
* failed — the ONE code that reports durable work behind an `ok: false`. The message names what landed, and a
|
|
190
|
-
* `state_changed` event reporting the record as it now is precedes it.
|
|
191
|
-
*/
|
|
192
|
-
export declare const PARTIAL_UPDATE_CODE = "partial_update";
|
|
193
|
-
/**
|
|
194
|
-
* Acceptance is not outcome: `ok: true` means admitted or applied, never that the run ultimately succeeded (outcomes
|
|
195
|
-
* are `run_settled` events / the invoke terminal).
|
|
196
|
-
*
|
|
197
|
-
* `ok: false` means the command did not COMPLETE, which is not the same as "nothing happened". Every code except
|
|
198
|
-
* {@link PARTIAL_UPDATE_CODE} is a rejection before acceptance with nothing durable landed; that one reports fields
|
|
199
|
-
* that did land, because properties are separate journal entries and no engine here can roll them back. So the
|
|
200
|
-
* question "may I send this again" is answered by `retryable`, never by `ok` — a client that blindly re-sends every
|
|
201
|
-
* `ok: false` re-applies what a partial update already wrote.
|
|
202
|
-
*/
|
|
203
|
-
export type SessionResult = {
|
|
204
|
-
ok: true;
|
|
205
|
-
runId?: string;
|
|
206
|
-
disposition?: PromptDisposition;
|
|
207
|
-
} | {
|
|
208
|
-
ok: false;
|
|
209
|
-
error: {
|
|
210
|
-
code: string;
|
|
211
|
-
message: string;
|
|
212
|
-
retryable: boolean;
|
|
213
|
-
};
|
|
214
|
-
};
|
|
215
|
-
/**
|
|
216
|
-
* What became of an accepted `steer`/`followUp` prompt — present on exactly those results. `queued`: it waits in
|
|
217
|
-
* {@link PendingPrompts} until the run takes it in. `handled`: the engine consumed it before the queue (in pi, a
|
|
218
|
-
* definition extension's `input` handler), so it never enters the conversation, and no `queue_changed` or
|
|
219
|
-
* `user_message` reports it.
|
|
220
|
-
*/
|
|
221
|
-
export type PromptDisposition = "queued" | "handled";
|
|
222
|
-
/** One session in {@link SessionControl.sessions} — a conversation-list row, not a session's contents. */
|
|
223
|
-
export interface SessionSummary {
|
|
224
|
-
session: string;
|
|
225
|
-
/** Set by `update({ name })`; absent until then — a client showing a list falls back to `preview`. */
|
|
226
|
-
name?: string;
|
|
227
|
-
createdAt: number;
|
|
228
|
-
updatedAt: number;
|
|
229
|
-
messageCount: number;
|
|
230
|
-
/** First user message, truncated — enough for a list row, not a transcript. */
|
|
231
|
-
preview?: string;
|
|
232
|
-
}
|
|
233
|
-
export interface SessionState {
|
|
234
|
-
/** Set by `update({ name })`, so a client that opens a session directly gets the same label the list showed. */
|
|
235
|
-
name?: string;
|
|
236
|
-
/** `compacting` refers to MANUAL compaction (`compact`) at a session boundary. */
|
|
237
|
-
status: "idle" | "running" | "compacting";
|
|
238
|
-
activeRunId?: string;
|
|
239
|
-
/**
|
|
240
|
-
* What this session will RUN with, not what was recorded. An id with no record reports what its first turn would run
|
|
241
|
-
* on: the defaults, the level clamped to the model.
|
|
242
|
-
*/
|
|
243
|
-
model?: string;
|
|
244
|
-
thinkingLevel?: string;
|
|
245
|
-
/** What `update({ thinkingLevel })` accepts for THIS session — re-read after a model change. */
|
|
246
|
-
availableThinkingLevels?: string[];
|
|
247
|
-
pending: PendingPrompts;
|
|
248
|
-
/**
|
|
249
|
-
* The NEWEST ANSWER's own numbers, not a running total: tokens and `cost` as the provider reported them for the
|
|
250
|
-
* latest answer on the active path that carries usage (an aborted or failed answer does not, so it reports the one
|
|
251
|
-
* before). `contextTokens` is how full the context is now, ABSENT when unknown (after a compaction or a context
|
|
252
|
-
* edit, until the next answer); `contextWindow` is the running model's.
|
|
253
|
-
*/
|
|
254
|
-
usage?: {
|
|
255
|
-
inputTokens: number;
|
|
256
|
-
outputTokens: number;
|
|
257
|
-
cacheReadTokens?: number;
|
|
258
|
-
cacheWriteTokens?: number;
|
|
259
|
-
cost?: number;
|
|
260
|
-
contextTokens?: number;
|
|
261
|
-
contextWindow?: number;
|
|
262
|
-
};
|
|
263
|
-
leafEntryId?: string;
|
|
264
|
-
}
|
|
265
|
-
export interface SessionEntries {
|
|
266
|
-
entries: SessionEntry[];
|
|
267
|
-
leafEntryId?: string;
|
|
268
|
-
}
|
|
269
|
-
/**
|
|
270
|
-
* A durable append-only session record. `kind` guarantees a minimum vocabulary of "user" | "assistant" | "tool";
|
|
271
|
-
* engine-specific kinds beyond it MUST be skippable.
|
|
272
|
-
*/
|
|
273
|
-
export interface SessionEntry {
|
|
274
|
-
id: string;
|
|
275
|
-
parentId?: string;
|
|
276
|
-
timestamp: number;
|
|
277
|
-
kind: string;
|
|
278
|
-
data: Json;
|
|
279
|
-
}
|
|
280
|
-
/**
|
|
281
|
-
* One image a message carried, as `data.images` lists it on a `user` or `tool` entry and on `user_message` (absent
|
|
282
|
-
* when there are none). Bytes stay out: `entries()` is read on every open and reconnect, and one screenshot is
|
|
283
|
-
* megabytes. `ref` is opaque; {@link Session.image} of the same session reads the bytes.
|
|
284
|
-
*/
|
|
285
|
-
export type EntryImage = {
|
|
286
|
-
ref: string;
|
|
287
|
-
mimeType: string;
|
|
288
|
-
};
|
|
289
|
-
/**
|
|
290
|
-
* A live event subscription, plus the ONE thing a reconnecting client cannot infer: when it started.
|
|
291
|
-
*
|
|
292
|
-
* Reconnect has to subscribe BEFORE it reads history, or an event landing between the read and the subscription is
|
|
293
|
-
* lost — it is live-only (`state_changed`, `run_settled`), so no cursor brings it back. Subscribing first is not
|
|
294
|
-
* enough on its own, because "the call returned" is not "the subscription exists": in process the registration
|
|
295
|
-
* happens on the first pull, and over HTTP it happens on the server before the response headers. `ready` is that
|
|
296
|
-
* boundary made waitable, so the recipe is subscribe → await ready → backfill, with no timing guess in it.
|
|
297
|
-
*
|
|
298
|
-
* ONE stream IS one subscription, which is what makes `ready` mean anything: readiness belongs to a subscription, so
|
|
299
|
-
* a stream that could start several would be promising the second one something the first established. Iterating the
|
|
300
|
-
* same stream twice is refused for that reason — call `events()` again, and get the readiness that goes with it.
|
|
301
|
-
*
|
|
302
|
-
* `ready` REJECTS when the subscription cannot be established at all: an unreachable endpoint, a refused token, or an
|
|
303
|
-
* iteration cancelled before it registered. A stream nobody iterates never settles, matching the rule that an
|
|
304
|
-
* iterator obtained but never driven is not subscribed.
|
|
305
|
-
*/
|
|
306
|
-
export interface SessionEventStream extends AsyncIterable<SessionEvent> {
|
|
307
|
-
ready: Promise<void>;
|
|
308
|
-
}
|
|
309
|
-
/**
|
|
310
|
-
* Semantic-only: no sequence, no epoch, no session id — in-process the stream is lossless and ordered, and those
|
|
311
|
-
* concerns belong to the transport envelope (design §13). Consumers MUST forward or ignore unknown event types; the
|
|
312
|
-
* vocabulary is additive.
|
|
313
|
-
*/
|
|
314
|
-
export interface SessionEvent<TType extends string = string, TData extends Json = Json> {
|
|
315
|
-
type: TType;
|
|
316
|
-
timestamp: number;
|
|
317
|
-
/** Present on run-scoped events. */
|
|
318
|
-
runId?: string;
|
|
319
|
-
data: TData;
|
|
320
|
-
}
|
|
321
|
-
export type RunStartedEvent = SessionEvent<"run_started", Record<never, never>> & {
|
|
322
|
-
runId: string;
|
|
323
|
-
};
|
|
324
|
-
export type RunSettledEvent = SessionEvent<"run_settled", {
|
|
325
|
-
status: "completed" | "failed" | "aborted";
|
|
326
|
-
error?: {
|
|
327
|
-
code?: string;
|
|
328
|
-
message: string;
|
|
329
|
-
retryable: boolean;
|
|
330
|
-
};
|
|
331
|
-
}> & {
|
|
332
|
-
runId: string;
|
|
333
|
-
};
|
|
334
|
-
export type MessageStartedEvent = SessionEvent<"message_started", Record<never, never>> & {
|
|
335
|
-
runId: string;
|
|
336
|
-
};
|
|
337
|
-
/**
|
|
338
|
-
* A user message entered the conversation: the run's opening prompt, a steer or follow-up leaving `pending`, or one an
|
|
339
|
-
* extension sent. It reports after the message is recorded, so `entries()` already holds `entryId` with the same
|
|
340
|
-
* `text` (a slash command expanded) and `images`, and before the answer to it starts. The one live event a backfill
|
|
341
|
-
* can be deduplicated against exactly.
|
|
342
|
-
*/
|
|
343
|
-
export type UserMessageEvent = SessionEvent<"user_message", {
|
|
344
|
-
entryId: string;
|
|
345
|
-
text: string;
|
|
346
|
-
images?: EntryImage[];
|
|
347
|
-
}> & {
|
|
348
|
-
runId: string;
|
|
349
|
-
};
|
|
350
|
-
/**
|
|
351
|
-
* A piece of the answer being written. The `thinking` deltas of one answer add up to its `assistant` entry's
|
|
352
|
-
* `thinking`, as its `text` deltas add up to its `text`; redacted reasoning is streamed in neither.
|
|
353
|
-
*/
|
|
354
|
-
export type MessageDeltaEvent = SessionEvent<"message_delta", {
|
|
355
|
-
channel: "text" | "thinking";
|
|
356
|
-
delta: string;
|
|
357
|
-
}> & {
|
|
358
|
-
runId: string;
|
|
359
|
-
};
|
|
360
|
-
/**
|
|
361
|
-
* How an answer ended, when it did not end normally: absent on an answer that did. One value, carried live by its
|
|
362
|
-
* `message_finished` and durably by its `assistant` entry, so a reopened conversation reads what a watcher saw.
|
|
363
|
-
* `truncated` is an answer cut off at the output limit — a property of the answer, not of its run, which may still
|
|
364
|
-
* complete. An answer whose entry a `context_edit { omitted }` targets (`failed` or `truncated`) is an attempt the
|
|
365
|
-
* engine abandoned; a retry usually, but not always, follows it.
|
|
366
|
-
*/
|
|
367
|
-
export type AnswerOutcome = {
|
|
368
|
-
status: "failed" | "aborted" | "truncated";
|
|
369
|
-
error?: {
|
|
370
|
-
message: string;
|
|
371
|
-
};
|
|
372
|
-
};
|
|
373
|
-
export type MessageFinishedEvent = SessionEvent<"message_finished", {
|
|
374
|
-
outcome?: AnswerOutcome;
|
|
375
|
-
}> & {
|
|
376
|
-
runId: string;
|
|
377
|
-
};
|
|
378
|
-
export type ToolStartedEvent = SessionEvent<"tool_started", {
|
|
379
|
-
id: string;
|
|
380
|
-
name: string;
|
|
381
|
-
args: Json;
|
|
382
|
-
parentToolCallId?: string;
|
|
383
|
-
}> & {
|
|
384
|
-
runId: string;
|
|
385
|
-
};
|
|
386
|
-
/** Replace semantics: `partialResult` is the accumulated snapshot so far, not a delta. */
|
|
387
|
-
export type ToolProgressEvent = SessionEvent<"tool_progress", {
|
|
388
|
-
id: string;
|
|
389
|
-
name: string;
|
|
390
|
-
partialResult: Json;
|
|
391
|
-
parentToolCallId?: string;
|
|
392
|
-
}> & {
|
|
393
|
-
runId: string;
|
|
394
|
-
};
|
|
395
|
-
/**
|
|
396
|
-
* `terminate: true` when the call asked to end its run. Once every call answering one assistant message asks it, the
|
|
397
|
-
* model is not called again for them, and the run ends there with no answer after its `tool` entries (which carry the
|
|
398
|
-
* same flag) unless a queued steer or follow-up continues it. Whether the run ended is `run_settled`'s to say.
|
|
399
|
-
*/
|
|
400
|
-
export type ToolFinishedEvent = SessionEvent<"tool_finished", {
|
|
401
|
-
id: string;
|
|
402
|
-
isError: boolean;
|
|
403
|
-
content: Json;
|
|
404
|
-
parentToolCallId?: string;
|
|
405
|
-
terminate?: true;
|
|
406
|
-
}> & {
|
|
407
|
-
runId: string;
|
|
408
|
-
};
|
|
409
|
-
/**
|
|
410
|
-
* The prompts queued on the active run, oldest first, as the engine queued them: plain text as sent, a slash command
|
|
411
|
-
* already expanded (a `/skill:…` becomes the skill's text), without its images (its `user_message` carries them). A
|
|
412
|
-
* prompt LEAVES its list when it enters the conversation as a user message: from then on it is in the record and in
|
|
413
|
-
* every later model call (an abort can still end the run before the model answers it). Whatever is still listed when
|
|
414
|
-
* the run settles never entered the conversation and is dropped with the run.
|
|
415
|
-
*/
|
|
416
|
-
export type PendingPrompts = {
|
|
417
|
-
steering: string[];
|
|
418
|
-
followUp: string[];
|
|
419
|
-
};
|
|
420
|
-
/** The active run's queue changed (L1); `data` is the whole queue, not a delta. */
|
|
421
|
-
export type QueueChangedEvent = SessionEvent<"queue_changed", PendingPrompts> & {
|
|
422
|
-
runId: string;
|
|
423
|
-
};
|
|
424
|
-
/**
|
|
425
|
-
* Durable session state changed (L2; no runId). An {@link Session.update} reports what it landed; where
|
|
426
|
-
* `capabilities().usage` holds, a finished run or compaction reports the session's `usage` as it now reads, and an
|
|
427
|
-
* update that moved `leafEntryId` or changed `model` carries it too (absent there: the session now has none).
|
|
428
|
-
*/
|
|
429
|
-
export type StateChangedEvent = SessionEvent<"state_changed", {
|
|
430
|
-
name?: string;
|
|
431
|
-
model?: string;
|
|
432
|
-
thinkingLevel?: string;
|
|
433
|
-
leafEntryId?: string;
|
|
434
|
-
usage?: SessionState["usage"];
|
|
435
|
-
}>;
|
|
436
|
-
/** Manual compaction bounds (L2): every `compaction_started` is closed by exactly one `compaction_finished`. */
|
|
437
|
-
export type CompactionStartedEvent = SessionEvent<"compaction_started", Record<never, never>>;
|
|
438
|
-
export type CompactionFinishedEvent = SessionEvent<"compaction_finished", {
|
|
439
|
-
summary?: string;
|
|
440
|
-
error?: string;
|
|
441
|
-
aborted?: boolean;
|
|
442
|
-
}>;
|
|
443
|
-
/**
|
|
444
|
-
* A transient provider failure scheduled a summarization retry backoff (auto-compaction / branch summaries inside a
|
|
445
|
-
* run — `runId` present — or a manual `compact` at a boundary — no `runId`).
|
|
446
|
-
*/
|
|
447
|
-
export type RetryScheduledEvent = SessionEvent<"retry_scheduled", {
|
|
448
|
-
/**
|
|
449
|
-
* "assistant" is an engine that retries the ANSWER request itself (pi's AgentSession does; pi's own session does;
|
|
450
|
-
* a summarization call is the other two).
|
|
451
|
-
*/
|
|
452
|
-
operation: "assistant" | "compaction" | "branch_summary";
|
|
453
|
-
attempt: number;
|
|
454
|
-
maxAttempts: number;
|
|
455
|
-
delayMs: number;
|
|
456
|
-
error: string;
|
|
457
|
-
}>;
|
|
458
|
-
/** The serving process failed outside a normal run outcome (fail visibly). */
|
|
459
|
-
export type ServingErrorEvent = SessionEvent<"serving_error", {
|
|
460
|
-
message: string;
|
|
461
|
-
}>;
|
|
462
|
-
/**
|
|
463
|
-
* Every event the in-process observation plane emits today: L0, L1 `queue_changed`, and the L2 events
|
|
464
|
-
* (`state_changed`, `compaction_*`, `retry_scheduled`).
|
|
465
|
-
*/
|
|
466
|
-
export type KnownSessionEvent = RunStartedEvent | RunSettledEvent | MessageStartedEvent | UserMessageEvent | MessageDeltaEvent | MessageFinishedEvent | ToolStartedEvent | ToolProgressEvent | ToolFinishedEvent | QueueChangedEvent | StateChangedEvent | CompactionStartedEvent | CompactionFinishedEvent | RetryScheduledEvent;
|
package/dist/session.js
DELETED
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Can this id be ADDRESSED by a client? URL normalisation eats `""`, `.` and `..` before any router sees them, so a
|
|
3
|
-
* request for `.` would answer about the collection instead. The rule lives in the contract because both sides
|
|
4
|
-
* enforce it and must not drift: a transport refuses to send such an id, and an implementation refuses to MINT one.
|
|
5
|
-
*/
|
|
6
|
-
export function isAddressableSession(session) {
|
|
7
|
-
return session !== "" && session !== "." && session !== "..";
|
|
8
|
-
}
|
|
9
|
-
/**
|
|
10
|
-
* Every field name, as a value — what an implementation checks a patch against, and what a transport rejects an
|
|
11
|
-
* unknown key by.
|
|
12
|
-
*/
|
|
13
|
-
export const UPDATE_FIELDS = [
|
|
14
|
-
"name",
|
|
15
|
-
"model",
|
|
16
|
-
"thinkingLevel",
|
|
17
|
-
"leafEntryId",
|
|
18
|
-
];
|
|
19
|
-
/**
|
|
20
|
-
* Stable `SessionResult.error.code` for a call, or an update field, the implementation does not support — the answer
|
|
21
|
-
* to calling past a {@link SessionCapabilities} gate.
|
|
22
|
-
*/
|
|
23
|
-
export const UNSUPPORTED_CAPABILITY_CODE = "unsupported_capability";
|
|
24
|
-
/**
|
|
25
|
-
* Stable `SessionResult.error.code` for a run action (`steer`/`follow_up`/`abort`) called while the session has no
|
|
26
|
-
* active run.
|
|
27
|
-
*/
|
|
28
|
-
export const NO_ACTIVE_RUN_CODE = "no_active_run";
|
|
29
|
-
/** Stable `SessionResult.error.code` for a PAYLOAD that is invalid for this runtime. */
|
|
30
|
-
export const INVALID_COMMAND_CODE = "invalid_command";
|
|
31
|
-
/**
|
|
32
|
-
* Stable `SessionResult.error.code` for a write that needs a record (fork's source, compact, delete) against an id
|
|
33
|
-
* that has none, because nothing has written it yet. `update()` creates the record instead, and answers this code only
|
|
34
|
-
* when a concurrent `delete()` removes the record between its read and its write.
|
|
35
|
-
*/
|
|
36
|
-
export const NO_SUCH_SESSION_CODE = "no_such_session";
|
|
37
|
-
/** Stable `SessionResult.error.code` for a write rejected BEFORE acceptance with nothing durable landed. */
|
|
38
|
-
export const BOUNDARY_COMMAND_FAILED_CODE = "boundary_command_failed";
|
|
39
|
-
/**
|
|
40
|
-
* Stable `SessionResult.error.code` for `compact` on a session with no compactable history yet — a no-op, not a
|
|
41
|
-
* failure, rejected before acceptance.
|
|
42
|
-
*/
|
|
43
|
-
export const NOTHING_TO_COMPACT_CODE = "nothing_to_compact";
|
|
44
|
-
/**
|
|
45
|
-
* Stable `SessionResult.error.code` for a run action that reached an active run but could not take effect because the
|
|
46
|
-
* run raced to settlement (or the engine refused it).
|
|
47
|
-
*/
|
|
48
|
-
export const RUN_COMMAND_FAILED_CODE = "run_command_failed";
|
|
49
|
-
/** What {@link SessionCollection.list} rejects with — the only read that can. `retryable: true`: the condition is
|
|
50
|
-
* the store's availability, not the request. */
|
|
51
|
-
export const SESSIONS_UNAVAILABLE_CODE = "sessions_unavailable";
|
|
52
|
-
/**
|
|
53
|
-
* Stable `SessionResult.error.code` for a multi-field {@link Session.update} that wrote some of its fields and then
|
|
54
|
-
* failed — the ONE code that reports durable work behind an `ok: false`. The message names what landed, and a
|
|
55
|
-
* `state_changed` event reporting the record as it now is precedes it.
|
|
56
|
-
*/
|
|
57
|
-
export const PARTIAL_UPDATE_CODE = "partial_update";
|
|
File without changes
|