@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
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Render assembly warnings to stderr — the one place both the CLI runners and the `chat` runtime show the non-fatal
|
|
3
|
-
* definition/tool findings the loaders return as data.
|
|
4
|
-
*/
|
|
5
|
-
import { relative } from "node:path";
|
|
6
|
-
import { log } from "../../log.js";
|
|
7
|
-
/** Stable identity of a definition's non-fatal findings — the dedup key below. */
|
|
8
|
-
function findingsSignature(def) {
|
|
9
|
-
const collisions = def.collisions.map((c) => `c:${c.name}:${c.winnerPath}:${c.loserPath}`);
|
|
10
|
-
const diagnostics = def.diagnostics.map((d) => `d:${d.code}:${d.path}`);
|
|
11
|
-
const shadowed = (def.shadowed ?? []).map((s) => `s:${s.what}:${s.winnerPath}:${s.loserPath}`);
|
|
12
|
-
const ignored = (def.ignored ?? []).map((i) => `i:${i.path}`);
|
|
13
|
-
return [...collisions, ...diagnostics, ...shadowed, ...ignored].sort().join("\n");
|
|
14
|
-
}
|
|
15
|
-
/** The last reported finding set PER DEFINITION DIR. */
|
|
16
|
-
const lastFindings = new Map();
|
|
17
|
-
/** THE door for definition findings: warns only when this dir's set CHANGED since the last report. */
|
|
18
|
-
export function reportFindingsIfChanged(dir, def) {
|
|
19
|
-
const sig = findingsSignature(def);
|
|
20
|
-
if (lastFindings.get(dir) === sig)
|
|
21
|
-
return;
|
|
22
|
-
lastFindings.set(dir, sig);
|
|
23
|
-
reportDefinitionWarnings(def);
|
|
24
|
-
}
|
|
25
|
-
export function reportDefinitionWarnings(def) {
|
|
26
|
-
for (const c of def.collisions) {
|
|
27
|
-
log.warn(`[fastagent] skill "${c.name}" collision — using ${c.winnerPath}, ignoring ${c.loserPath}`);
|
|
28
|
-
}
|
|
29
|
-
for (const s of def.shadowed ?? []) {
|
|
30
|
-
log.warn(`[fastagent] ${s.what} is in two places — using ${s.winnerPath}, ignoring ${s.loserPath}`);
|
|
31
|
-
}
|
|
32
|
-
for (const i of def.ignored ?? []) {
|
|
33
|
-
log.warn(`[fastagent] ${i.path} is ${i.reason}`);
|
|
34
|
-
}
|
|
35
|
-
for (const d of def.diagnostics) {
|
|
36
|
-
log.warn(`[fastagent] ${d.code}: ${d.message} (${d.path})`);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
/** What the agent's system prompt is made of, as a report line: pi's default or `SYSTEM.md`, plus an addendum. */
|
|
40
|
-
export function describePrompt(def) {
|
|
41
|
-
const base = def.systemPrompt ? relative(def.dir, def.systemPrompt.path) : "pi's default";
|
|
42
|
-
return def.appendSystemPrompt ? `${base} + ${relative(def.dir, def.appendSystemPrompt.path)}` : base;
|
|
43
|
-
}
|
|
44
|
-
const REACH = {
|
|
45
|
-
tool_search: "loaded via tool_search",
|
|
46
|
-
codemode: "codemode scripts only",
|
|
47
|
-
hidden: "hidden",
|
|
48
|
-
inactive: "inactive until an authored loader activates it",
|
|
49
|
-
unreachable: "unreachable: pi's settings disable the built-in extension it needs",
|
|
50
|
-
};
|
|
51
|
-
/** The report line for the mounted tools the model is not given up front: each name with its way in. */
|
|
52
|
-
export function describeIndirectTools(tools) {
|
|
53
|
-
return tools.map((tool) => `${tool.name} (${REACH[tool.reach]})`).join(", ");
|
|
54
|
-
}
|
|
55
|
-
export function reportToolCollisions(collisions) {
|
|
56
|
-
for (const c of collisions) {
|
|
57
|
-
log.warn(`[fastagent] tool "${c.name}" (${c.source}) dropped — a default/config tool already uses that name`);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import type { AgentSessionEvent } from "@earendil-works/pi-coding-agent";
|
|
2
|
-
import type { RetryScheduledEvent } from "../../session.ts";
|
|
3
|
-
/** Manual compaction retries are session-scoped; retries inside an invoke carry its runId. */
|
|
4
|
-
export declare function toRetryScheduledEvent(event: Extract<AgentSessionEvent, {
|
|
5
|
-
type: "auto_retry_start" | "summarization_retry_scheduled";
|
|
6
|
-
}>, runId?: string): RetryScheduledEvent;
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/** Manual compaction retries are session-scoped; retries inside an invoke carry its runId. */
|
|
2
|
-
export function toRetryScheduledEvent(event, runId) {
|
|
3
|
-
return {
|
|
4
|
-
type: "retry_scheduled",
|
|
5
|
-
timestamp: Date.now(),
|
|
6
|
-
...(runId === undefined ? {} : { runId }),
|
|
7
|
-
data: {
|
|
8
|
-
operation: event.type === "auto_retry_start" ? "assistant" : "compaction",
|
|
9
|
-
attempt: event.attempt,
|
|
10
|
-
maxAttempts: event.maxAttempts,
|
|
11
|
-
delayMs: event.delayMs,
|
|
12
|
-
error: event.errorMessage,
|
|
13
|
-
},
|
|
14
|
-
};
|
|
15
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/** `createAgentService` — the product as one call, with pi supplying the engine. */
|
|
2
|
-
import { type AgentService, type MountAgentServiceOptions } from "../../service.ts";
|
|
3
|
-
import type { CredentialSourceOptions } from "./auth.ts";
|
|
4
|
-
export interface CreateAgentServiceOptions extends MountAgentServiceOptions, CredentialSourceOptions {
|
|
5
|
-
model?: string;
|
|
6
|
-
sessionsDir?: string;
|
|
7
|
-
}
|
|
8
|
-
/** Open an agent directory as a live service: one handler, mounted wherever you serve. */
|
|
9
|
-
export declare function createAgentService(dir: string, options?: CreateAgentServiceOptions): Promise<AgentService>;
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/** `createAgentService` — the product as one call, with pi supplying the engine. */
|
|
2
|
-
import { mountAgentService } from "../../service.js";
|
|
3
|
-
import { createPiAgentFromDir } from "./open.js";
|
|
4
|
-
/** Open an agent directory as a live service: one handler, mounted wherever you serve. */
|
|
5
|
-
export async function createAgentService(dir, options = {}) {
|
|
6
|
-
const opened = await createPiAgentFromDir(dir, {
|
|
7
|
-
...(options.model !== undefined ? { model: options.model } : {}),
|
|
8
|
-
...(options.authPath !== undefined ? { authPath: options.authPath } : {}),
|
|
9
|
-
...(options.credentialStore !== undefined ? { credentialStore: options.credentialStore } : {}),
|
|
10
|
-
...(options.sessionsDir !== undefined ? { sessionsDir: options.sessionsDir } : {}),
|
|
11
|
-
serving: true, // a mounted service is long-running: the scheduler poller runs
|
|
12
|
-
});
|
|
13
|
-
return mountAgentService(opened, options);
|
|
14
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { type AgentSessionRuntime, SessionManager } from "@earendil-works/pi-coding-agent";
|
|
2
|
-
export interface BuildSessionRuntimeOptions {
|
|
3
|
-
/** Model spec override (the CLI --model flag). */
|
|
4
|
-
model?: string;
|
|
5
|
-
/** Credentials file override (the SDK `authPath` option; the CLI has only `FASTAGENT_AUTH_PATH`). */
|
|
6
|
-
authPath?: string;
|
|
7
|
-
}
|
|
8
|
-
/**
|
|
9
|
-
* Build pi's interactive runtime over the SAME assembly `dev`/`start` serve ({@link assembleFront}): model
|
|
10
|
-
* registry, prompt, tools, skills, reasoning effort and credentials all come from it, so what differs is only the
|
|
11
|
-
* session's shape (one resident runtime rather than one session per invoke).
|
|
12
|
-
*/
|
|
13
|
-
export declare function buildAgentSessionRuntime(dir: string, options?: BuildSessionRuntimeOptions, sessionManager?: SessionManager): Promise<AgentSessionRuntime>;
|
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The shared definition-aware session builder: open a directory's assembled agent as a resident pi
|
|
3
|
-
* `AgentSessionRuntime`, running the SAME agent that `dev`/`start` serve.
|
|
4
|
-
*/
|
|
5
|
-
import { existsSync, readFileSync } from "node:fs";
|
|
6
|
-
import { resolve } from "node:path";
|
|
7
|
-
import { SessionManager, SettingsManager, createAgentSessionRuntime, getAgentDir, } from "@earendil-works/pi-coding-agent";
|
|
8
|
-
import { bindPiSession, definitionServices } from "./agent-session-factory.js";
|
|
9
|
-
import { missingDefaultModel, resolveModel } from "./config.js";
|
|
10
|
-
import { canonicalPath } from "./definition.js";
|
|
11
|
-
import { reportToolCollisions } from "./report.js";
|
|
12
|
-
import { assembleFront, resolveAgentAssembly } from "./open.js";
|
|
13
|
-
import { resolvePlacement } from "../../paths.js";
|
|
14
|
-
/**
|
|
15
|
-
* Build pi's interactive runtime over the SAME assembly `dev`/`start` serve ({@link assembleFront}): model
|
|
16
|
-
* registry, prompt, tools, skills, reasoning effort and credentials all come from it, so what differs is only the
|
|
17
|
-
* session's shape (one resident runtime rather than one session per invoke).
|
|
18
|
-
*/
|
|
19
|
-
export async function buildAgentSessionRuntime(dir, options = {}, sessionManager) {
|
|
20
|
-
async function resolveAssembly() {
|
|
21
|
-
const front = await resolveAgentAssembly(dir, options);
|
|
22
|
-
// chat's TUI always starts a conversation, so it needs the default the served agent can do without.
|
|
23
|
-
const modelSpec = front.modelSpec;
|
|
24
|
-
if (!modelSpec)
|
|
25
|
-
throw missingDefaultModel();
|
|
26
|
-
reportToolCollisions(front.toolCollisions);
|
|
27
|
-
const { assembly } = await assembleFront(front);
|
|
28
|
-
// Read ONCE per runtime: a rebuild (/new, fork) keeps the startup snapshot, because config and tools stay in the
|
|
29
|
-
// import cache and a half-refreshed agent is worse than a stale one. Restart chat to pick up edits.
|
|
30
|
-
return { modelSpec, assembly, definition: await assembly.readDefinition() };
|
|
31
|
-
}
|
|
32
|
-
// The workspace, like serving's: where tools run and what session records are keyed to. Canonical, because pi's
|
|
33
|
-
// process.cwd() fallback is a realpath and a symlinked workspace would otherwise mismatch it.
|
|
34
|
-
const rootCwd = canonicalPath(resolvePlacement(dir).workspace);
|
|
35
|
-
// pi calls the factory again on /new, /resume, switch, and fork; the assembly is built once.
|
|
36
|
-
let assembly;
|
|
37
|
-
const assemblyFor = (cwd) => {
|
|
38
|
-
const activeCwd = canonicalPath(cwd);
|
|
39
|
-
if (activeCwd !== rootCwd) {
|
|
40
|
-
throw workspaceScopeError(activeCwd);
|
|
41
|
-
}
|
|
42
|
-
assembly ??= resolveAssembly();
|
|
43
|
-
return assembly;
|
|
44
|
-
};
|
|
45
|
-
const createRuntime = async ({ cwd, sessionManager, sessionStartEvent }) => {
|
|
46
|
-
const { modelSpec, assembly, definition } = await assemblyFor(cwd);
|
|
47
|
-
// Per session, NOT memoized with the assembly.
|
|
48
|
-
const modelRuntime = await assembly.createModelRuntime();
|
|
49
|
-
const loaded = await definitionServices({ cwd, modelRuntime, definition, extensionPaths: assembly.extensionPaths });
|
|
50
|
-
// ...while the SESSION keeps pi's own file-backed settings, so `/settings` in the TUI still saves. pi persists by
|
|
51
|
-
// re-reading the file under its lock and writing only the fields that changed, so `packages` there is untouched.
|
|
52
|
-
const services = { ...loaded, settingsManager: SettingsManager.create(cwd, loaded.agentDir) };
|
|
53
|
-
// AFTER the services, because an extension may be what defines the model.
|
|
54
|
-
const model = resolveModel(modelRuntime, modelSpec);
|
|
55
|
-
// Serving and chat restore the same native transcript declarations.
|
|
56
|
-
const result = await bindPiSession({
|
|
57
|
-
services,
|
|
58
|
-
sessionManager,
|
|
59
|
-
sessionStartEvent,
|
|
60
|
-
model,
|
|
61
|
-
// Always set, never left for pi to fill: pi resolves an ABSENT level from the machine's settings, and the effort
|
|
62
|
-
// is the definition's (`thinkingLevel` in fastagent.config.ts), like serving's.
|
|
63
|
-
thinkingLevel: assembly.thinkingLevel,
|
|
64
|
-
tools: assembly.tools,
|
|
65
|
-
excludedToolNames: assembly.excludedToolNames,
|
|
66
|
-
// A tool must see one spelling of the workspace, including when opened through a symlink.
|
|
67
|
-
cwd: rootCwd,
|
|
68
|
-
});
|
|
69
|
-
return { ...result, services, diagnostics: services.diagnostics };
|
|
70
|
-
};
|
|
71
|
-
const runtime = await createAgentSessionRuntime(createRuntime, {
|
|
72
|
-
cwd: rootCwd,
|
|
73
|
-
agentDir: getAgentDir(),
|
|
74
|
-
sessionManager: sessionManager ?? SessionManager.create(rootCwd),
|
|
75
|
-
});
|
|
76
|
-
enforceWorkspaceScopedSessionSwitches(runtime, rootCwd);
|
|
77
|
-
return runtime;
|
|
78
|
-
}
|
|
79
|
-
function workspaceScopeError(targetCwd) {
|
|
80
|
-
return new Error(`fastagent sessions are workspace-scoped: cannot switch to ${targetCwd}; open that workspace instead`);
|
|
81
|
-
}
|
|
82
|
-
function readSessionHeaderCwd(sessionPath) {
|
|
83
|
-
const resolvedPath = resolve(sessionPath);
|
|
84
|
-
if (!existsSync(resolvedPath))
|
|
85
|
-
return undefined;
|
|
86
|
-
for (const line of readFileSync(resolvedPath, "utf8").split(/\r?\n/)) {
|
|
87
|
-
if (!line.trim())
|
|
88
|
-
continue;
|
|
89
|
-
try {
|
|
90
|
-
const entry = JSON.parse(line);
|
|
91
|
-
if (entry.type === "session")
|
|
92
|
-
return typeof entry.cwd === "string" ? canonicalPath(entry.cwd) : undefined;
|
|
93
|
-
}
|
|
94
|
-
catch {
|
|
95
|
-
// Ignore malformed lines the same way pi's session loader does; no header cwd → caller pins root.
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
return undefined;
|
|
99
|
-
}
|
|
100
|
-
/** Keep resume/import inside the runtime's single workspace, deciding BEFORE delegating to pi. */
|
|
101
|
-
function enforceWorkspaceScopedSessionSwitches(runtime, rootCwd) {
|
|
102
|
-
const rejectForeignTarget = (sessionPath, cwdOverride) => {
|
|
103
|
-
const target = cwdOverride !== undefined ? canonicalPath(cwdOverride) : readSessionHeaderCwd(sessionPath);
|
|
104
|
-
if (target !== undefined && target !== rootCwd)
|
|
105
|
-
throw workspaceScopeError(target);
|
|
106
|
-
};
|
|
107
|
-
const switchSession = runtime.switchSession.bind(runtime);
|
|
108
|
-
runtime.switchSession = async (...args) => {
|
|
109
|
-
rejectForeignTarget(args[0], args[1]?.cwdOverride);
|
|
110
|
-
return switchSession(...args);
|
|
111
|
-
};
|
|
112
|
-
const importFromJsonl = runtime.importFromJsonl.bind(runtime);
|
|
113
|
-
runtime.importFromJsonl = async (...args) => {
|
|
114
|
-
rejectForeignTarget(args[0], args[1]);
|
|
115
|
-
return importFromJsonl(...args);
|
|
116
|
-
};
|
|
117
|
-
}
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The pi implementation of the session control plane. `createPiSessionControl` returns the neutral
|
|
3
|
-
* `SessionControl` plus the {@link SessionObserver} to plug into the invoke pipeline
|
|
4
|
-
* (`createPiAgent({ observer })`).
|
|
5
|
-
*
|
|
6
|
-
* It holds no durable state of its own: live truth comes from the event stream (plus the
|
|
7
|
-
* {@link RunControls} a `run_started` carries), durable truth from {@link PiSessionRecordStore} —
|
|
8
|
-
* which is also what performs every write, so how a record takes a property is not knowledge this
|
|
9
|
-
* file has. What it owns is the vocabulary: capability gating, the lease, error codes, and the
|
|
10
|
-
* events its own writes emit.
|
|
11
|
-
*
|
|
12
|
-
* Writes take the same lease as runs. Without boundary wiring they reject before acceptance with
|
|
13
|
-
* `unsupported_capability` — a client gating on `capabilities()` never sends them.
|
|
14
|
-
*/
|
|
15
|
-
import type { ThinkingLevel } from "@earendil-works/pi-agent-core";
|
|
16
|
-
import { type Models } from "@earendil-works/pi-ai";
|
|
17
|
-
import { type AgentCommand, type SessionControl, type SessionEvent } from "../../session.ts";
|
|
18
|
-
import { type SessionObserver, type Lease } from "./turn-kit.ts";
|
|
19
|
-
import type { AnyModel } from "./models.ts";
|
|
20
|
-
import type { PiAgentSessionFactory } from "./invoke-session.ts";
|
|
21
|
-
import type { PiSessionRecordStore } from "./session-store.ts";
|
|
22
|
-
/** Per-subscriber backlog limits: event count and UTF-8 JSON bytes. Overflow freezes the accepted
|
|
23
|
-
* prefix; the reader drains it before seeing done, then reconnects and backfills via entries(). */
|
|
24
|
-
export declare const SUBSCRIBER_BUFFER_CAP = 10000;
|
|
25
|
-
export declare const SUBSCRIBER_BUFFER_BYTES: number;
|
|
26
|
-
/** What the plane's writes (`update` / `compact` / `fork` / `delete`) need — the SAME instances the
|
|
27
|
-
* agent assembly uses: the lease (a write must not race a run), the model registry (validation +
|
|
28
|
-
* allowedModels), and the session factory (compaction is a model call). Two writes create a record:
|
|
29
|
-
* fork's `into`, and `update()` on an id that has none (through the store's `openOrCreate`, like an
|
|
30
|
-
* invoke). Every other write needs a record that exists. */
|
|
31
|
-
export interface PiBoundaryWiring {
|
|
32
|
-
lease: Lease;
|
|
33
|
-
models: Models;
|
|
34
|
-
sessionFactory: PiAgentSessionFactory;
|
|
35
|
-
/** The assembly's configured PAIR — what a session with no overrides runs on. One field because
|
|
36
|
-
* model and thinking level are one setting: which levels exist is a property of the model, so a
|
|
37
|
-
* wiring that could carry them apart could carry a pair no run uses. Must be what
|
|
38
|
-
* {@link sessionFactory} was built with. No model when the agent sets no default: a session then runs on the model
|
|
39
|
-
* it records, and `state()` of one that records none reports no model. */
|
|
40
|
-
defaults: {
|
|
41
|
-
model?: AnyModel;
|
|
42
|
-
thinkingLevel: ThinkingLevel;
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
export interface CreatePiSessionControlOptions {
|
|
46
|
-
/** Read-only access to the durable session records (the same root the agent writes). */
|
|
47
|
-
sessions: PiSessionRecordStore;
|
|
48
|
-
/** Boundary-mutation wiring — the assembly's own parts. Absent → boundary commands are gated off
|
|
49
|
-
* in `capabilities()` and rejected `unsupported_capability`. */
|
|
50
|
-
boundary?: PiBoundaryWiring;
|
|
51
|
-
/** The definition's names, as an async thunk because the definition is live: this must re-read it,
|
|
52
|
-
* not close over a boot snapshot, or `commands()` would advertise a list the next turn no longer
|
|
53
|
-
* runs.
|
|
54
|
-
*
|
|
55
|
-
* OPTIONAL because absence is a TRUE answer for the assembly that omits it: a hub over an L1
|
|
56
|
-
* agent (`createPiAgent({ model, instructions, tools })`) has no definition and therefore no
|
|
57
|
-
* names, and `[]` says exactly that. Wire it whenever the agent came from a DIRECTORY — there
|
|
58
|
-
* `[]` would be a lie; the directory constructor (`createPiAgentFromDir`) always does. */
|
|
59
|
-
commands?: () => Promise<AgentCommand[]>;
|
|
60
|
-
/** Tap for the events the HUB ITSELF generates (boundary mutations: `state_changed`,
|
|
61
|
-
* `compaction_*`) — those never pass through the data plane's observer seam, so a consumer
|
|
62
|
-
* composing a full-vocabulary tap wires the run events via the observer AND this. Called after
|
|
63
|
-
* the hub's own subscribers. */
|
|
64
|
-
tap?: (session: string, event: SessionEvent) => void;
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Build the observation hub. Wire `observer` into the SAME agent assembly that serves the sessions:
|
|
68
|
-
*
|
|
69
|
-
* ```ts
|
|
70
|
-
* const { control, observer } = createPiSessionControl({ sessions });
|
|
71
|
-
* const agent = createPiAgent({ ..., sessions, observer });
|
|
72
|
-
* ```
|
|
73
|
-
*/
|
|
74
|
-
export declare function createPiSessionControl(options: CreatePiSessionControlOptions): {
|
|
75
|
-
control: SessionControl;
|
|
76
|
-
observer: SessionObserver;
|
|
77
|
-
};
|