@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,45 +1,47 @@
|
|
|
1
|
-
/** `fastagent init [dir]
|
|
1
|
+
/** `fastagent init <dir> [--content <dir>]...`: scaffold a runnable agent and install its dependencies. */
|
|
2
2
|
import { spawn } from "node:child_process";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
3
|
+
import { resolve } from "node:path";
|
|
4
|
+
import { displayPath } from "../../paths.js";
|
|
5
|
+
import { initAgent } from "../../authoring.js";
|
|
6
|
+
import { readContentSource } from "../../content/source.js";
|
|
7
|
+
import { failEdit } from "./content.js";
|
|
8
|
+
import { contentLines } from "../content-view.js";
|
|
9
|
+
import { failStartup } from "../fail.js";
|
|
7
10
|
export async function runInit(dirArg, opts) {
|
|
8
11
|
const dir = resolve(dirArg);
|
|
9
|
-
//
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
failUsage(`--agent-dir "${requested}" ${invalid}`);
|
|
14
|
-
const { agentDir: rel, created } = await scaffoldAgent(dir, { agentDir: requested }).catch(failStartup);
|
|
15
|
-
// The agent dir is where the manifest lives, so the install runs there — never against a surrounding workspace's
|
|
16
|
-
// package.json (its deps are its own concern).
|
|
17
|
-
const agentDir = resolve(dir, rel);
|
|
18
|
-
console.error(`[fastagent] initialized ${dir} — agent in ./${rel}/`);
|
|
19
|
-
console.error(` created: ${created.join(", ")}`);
|
|
20
|
-
// A second agent beside an existing one is a supported shape, not an accident (an engineer's, a PM's and a content
|
|
21
|
-
// owner's agent can drive one repository), but it changes how this workspace resolves from now on — so say it HERE,
|
|
22
|
-
// at the moment it becomes true, instead of at the next command's refusal.
|
|
23
|
-
const siblings = agentsAt(dir).map((a) => basename(a));
|
|
24
|
-
if (siblings.length > 1) {
|
|
25
|
-
const pick = siblings.includes(DEFAULT_AGENT_DIRNAME)
|
|
26
|
-
? `\`${DEFAULT_AGENT_DIRNAME}\` answers by default; set FASTAGENT_AGENT=<name> for another`
|
|
27
|
-
: `set FASTAGENT_AGENT=<name> (in your shell or .envrc) to pick one`;
|
|
28
|
-
console.error(`[fastagent] note: ${dir} now holds ${siblings.length} agents (${siblings.join(", ")}) — ${pick}`);
|
|
29
|
-
}
|
|
12
|
+
// Every source is read, and every entry checked (by initAgent), BEFORE anything is created.
|
|
13
|
+
const read = await Promise.resolve()
|
|
14
|
+
.then(() => opts.content.map((source) => readContentSource(source, process.cwd())))
|
|
15
|
+
.catch(failStartup);
|
|
30
16
|
let installFailed = false;
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
17
|
+
const { created, content, repository } = await initAgent(dir, {
|
|
18
|
+
content: read.map((source) => source.addition),
|
|
19
|
+
...(opts.install
|
|
20
|
+
? {
|
|
21
|
+
install: async (agentDir) => {
|
|
22
|
+
console.error(`[fastagent] installing dependencies (npm install)…`);
|
|
23
|
+
installFailed = (await npmInstall(agentDir)) !== 0;
|
|
24
|
+
if (installFailed) {
|
|
25
|
+
console.error(`[fastagent] warn: npm install failed — run it manually in ${agentDir} before \`fastagent dev\``);
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
}
|
|
29
|
+
: {}),
|
|
30
|
+
}).catch(failEdit(""));
|
|
31
|
+
console.error(`[fastagent] created ${dir}`);
|
|
32
|
+
for (const note of read.flatMap((source) => source.notes))
|
|
33
|
+
console.error(` ${note}`);
|
|
34
|
+
if (content.length > 0)
|
|
35
|
+
for (const [label, value] of contentLines(content))
|
|
36
|
+
console.error(` ${label} ${value}`);
|
|
37
|
+
console.error(` files: ${created.join(", ")}`);
|
|
38
|
+
console.error(`[fastagent] git: ${repository}`);
|
|
37
39
|
console.error(` next steps:`);
|
|
38
40
|
const cdTarget = displayPath(process.cwd(), dir);
|
|
39
41
|
if (cdTarget)
|
|
40
42
|
console.error(` cd ${cdTarget}`);
|
|
41
43
|
if (!opts.install || installFailed)
|
|
42
|
-
console.error(`
|
|
44
|
+
console.error(` npm install`);
|
|
43
45
|
console.error(` fastagent dev # serve locally and iterate`);
|
|
44
46
|
console.error(` fastagent add skill <owner/repo/path> # vendor more skills from GitHub`);
|
|
45
47
|
}
|
|
@@ -2,5 +2,11 @@ export interface InvokeOptions {
|
|
|
2
2
|
model?: string;
|
|
3
3
|
/** false ⇔ `--no-input`. */
|
|
4
4
|
input?: boolean;
|
|
5
|
+
json?: boolean;
|
|
6
|
+
session?: string;
|
|
7
|
+
/** A served agent's base URL: the message goes there, over its Agent API. */
|
|
8
|
+
url?: string;
|
|
9
|
+
/** The key `url` is called with; else the first in the agent's production values. */
|
|
10
|
+
key?: string;
|
|
5
11
|
}
|
|
6
12
|
export declare function runInvoke(message: string, dirArg: string, opts: InvokeOptions): Promise<void>;
|
|
@@ -1,21 +1,137 @@
|
|
|
1
|
-
/**
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
/**
|
|
2
|
+
* `fastagent invoke <message> [agent]`: send ONE message to the opened agent, print its answer, then exit. Every run
|
|
3
|
+
* prints its session's id; `--session <id>` sends the message into that session, continuing it. `--url` sends it to a
|
|
4
|
+
* served agent instead, over its Agent API (SPEC.md §9.6), with the same output and exit code.
|
|
5
|
+
*/
|
|
6
|
+
import { join, relative, resolve } from "node:path";
|
|
7
|
+
import { AgentError } from "../../agent-api.js";
|
|
8
|
+
import { enterAgentEnv } from "../../env.js";
|
|
9
|
+
import { dotEnvPath, loadEnvValues } from "../../value-file.js";
|
|
10
|
+
import { installProxyFetch } from "../../proxy.js";
|
|
11
|
+
import { modelRefOf } from "../../harnesses/pi-durable/open.js";
|
|
12
|
+
import { openServing } from "../../harnesses/pi-durable/serve.js";
|
|
13
|
+
import { connectAgent } from "../../http/client.js";
|
|
14
|
+
import { API_KEY_VARIABLE, apiKeysFrom } from "../../http/server.js";
|
|
15
|
+
import { resolveStateRoot, selectAgentEnvironment } from "../../paths.js";
|
|
16
|
+
import { runInvokeJson, runInvokeStream } from "../invoke-stream.js";
|
|
17
|
+
import { failStartup, failUsage, optionalAgentDirOrExit } from "../fail.js";
|
|
6
18
|
import { enterAgentCommand, reportAuth } from "../shared.js";
|
|
19
|
+
/**
|
|
20
|
+
* `invoke`'s sessions, apart from the instance's storage, so `invoke` runs beside a serve of this directory, which holds
|
|
21
|
+
* that one; one `invoke` at a time holds this one.
|
|
22
|
+
*/
|
|
23
|
+
const invokeStorageFile = (stateRoot) => join(stateRoot, "invoke.sqlite");
|
|
24
|
+
/**
|
|
25
|
+
* The session to send into, a new one or `sessionId`, set to the model this run resolved: every run answers with the
|
|
26
|
+
* model its flags and configuration name, a continued session included.
|
|
27
|
+
*/
|
|
28
|
+
async function sessionFor(agent, sessionId, settings, file) {
|
|
29
|
+
if (sessionId === undefined)
|
|
30
|
+
return (await agent.sessions.create(settings)).id;
|
|
31
|
+
await agent.sessions.update(sessionId, settings).catch((error) => {
|
|
32
|
+
if (error instanceof AgentError && error.code === "not_found") {
|
|
33
|
+
throw new Error(`--session ${sessionId}: no such session in ${file}; pass an id an earlier invoke printed`);
|
|
34
|
+
}
|
|
35
|
+
throw error;
|
|
36
|
+
});
|
|
37
|
+
return sessionId;
|
|
38
|
+
}
|
|
39
|
+
/** A refusal as the line an operator reads: its code, then what it says. */
|
|
40
|
+
const refusal = (error) => error instanceof AgentError ? new Error(`${error.code}: ${error.message}`) : error;
|
|
41
|
+
/** Print the message's answer as it is written, then exit with what it ended as: 0 only for `completed`. */
|
|
42
|
+
async function answer(events, json) {
|
|
43
|
+
// Both renderers exit 1 unless the message completed: CI gates on it.
|
|
44
|
+
const exitCode = json
|
|
45
|
+
? await runInvokeJson(events, (line) => process.stdout.write(`${line}\n`))
|
|
46
|
+
: await runInvokeStream(events, (text) => process.stdout.write(text), (line) => console.error(line));
|
|
47
|
+
if (!json)
|
|
48
|
+
process.stdout.write("\n");
|
|
49
|
+
return exitCode;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* The key `--url` calls with: `--key`, or the first of `FASTAGENT_API_KEY` in the agent's production values, which
|
|
53
|
+
* `deploy` writes there and carries to the deployment.
|
|
54
|
+
*/
|
|
55
|
+
function deploymentKey(agentDir, url) {
|
|
56
|
+
selectAgentEnvironment("production");
|
|
57
|
+
const file = dotEnvPath(agentDir);
|
|
58
|
+
const [key] = apiKeysFrom(loadEnvValues(file).get(API_KEY_VARIABLE));
|
|
59
|
+
if (key === undefined) {
|
|
60
|
+
failUsage(`no key to call ${url} with: pass --key, or set ${API_KEY_VARIABLE} in ${relative(process.cwd(), file) || file} ` +
|
|
61
|
+
"(deploy writes one there)");
|
|
62
|
+
}
|
|
63
|
+
return key;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Enter this machine's environment and the proxy it declares, as every command that sends a request does, and answer
|
|
67
|
+
* the key to call `url` with: `--key`, from anywhere (the ambient environment when no agent is here), or the agent's.
|
|
68
|
+
*/
|
|
69
|
+
function enterForUrl(dirArg, key, url) {
|
|
70
|
+
const agentDir = optionalAgentDirOrExit(resolve(dirArg));
|
|
71
|
+
if (agentDir === undefined) {
|
|
72
|
+
installProxyFetch();
|
|
73
|
+
if (key === undefined) {
|
|
74
|
+
failUsage(`no key to call ${url} with: pass --key, or run this in the agent whose deploy wrote one`);
|
|
75
|
+
}
|
|
76
|
+
return key;
|
|
77
|
+
}
|
|
78
|
+
enterAgentEnv(agentDir);
|
|
79
|
+
return key ?? deploymentKey(agentDir, url);
|
|
80
|
+
}
|
|
81
|
+
/** `--url`: the message sent to a served agent over its Agent API, in a session there; nothing opens here. */
|
|
82
|
+
async function runRemoteInvoke(message, dirArg, opts) {
|
|
83
|
+
const { url } = opts;
|
|
84
|
+
let settings;
|
|
85
|
+
try {
|
|
86
|
+
settings = opts.model === undefined ? undefined : { model: modelRefOf(opts.model, "--model") };
|
|
87
|
+
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
failUsage(error instanceof Error ? error.message : String(error));
|
|
90
|
+
}
|
|
91
|
+
const agent = connectAgent(url, { apiKey: enterForUrl(dirArg, opts.key, url) });
|
|
92
|
+
console.error(`[fastagent] invoke: ${url}`);
|
|
93
|
+
const sessionId = await remoteSession(agent, opts.session, settings, url).catch((error) => failStartup(refusal(error)));
|
|
94
|
+
console.error(`[fastagent] session ${sessionId} (continue it with --session ${sessionId})`);
|
|
95
|
+
process.exit(await answer(agent.messages.stream({ sessionId, content: message }), opts.json));
|
|
96
|
+
}
|
|
97
|
+
/** The served agent's session to send into: a new one, or `sessionId`, set to `--model` when one is given. */
|
|
98
|
+
async function remoteSession(agent, sessionId, settings, url) {
|
|
99
|
+
if (sessionId === undefined)
|
|
100
|
+
return (await agent.sessions.create(settings)).id;
|
|
101
|
+
const found = settings === undefined ? agent.sessions.get(sessionId) : agent.sessions.update(sessionId, settings);
|
|
102
|
+
await found.catch((error) => {
|
|
103
|
+
if (error instanceof AgentError && error.code === "not_found") {
|
|
104
|
+
throw new Error(`--session ${sessionId}: no such session at ${url}; pass an id an earlier invoke printed`);
|
|
105
|
+
}
|
|
106
|
+
throw error;
|
|
107
|
+
});
|
|
108
|
+
return sessionId;
|
|
109
|
+
}
|
|
7
110
|
export async function runInvoke(message, dirArg, opts) {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
111
|
+
if (opts.url !== undefined)
|
|
112
|
+
return runRemoteInvoke(message, dirArg, { ...opts, url: opts.url });
|
|
113
|
+
if (opts.key !== undefined)
|
|
114
|
+
failUsage("--key is the key --url calls with: pass --url too");
|
|
115
|
+
const { agentDir, modelSpec } = await enterAgentCommand(dirArg, opts);
|
|
116
|
+
const file = invokeStorageFile(resolveStateRoot(agentDir));
|
|
117
|
+
const { agent, models, definition } = await openServing(agentDir, {
|
|
118
|
+
model: modelSpec,
|
|
119
|
+
storage: { file, holders: "another `fastagent invoke` of this agent" },
|
|
120
|
+
// Its messages do not outlive it: one a stopped invoke left is not run again by the next.
|
|
121
|
+
unfinished: "abort",
|
|
122
|
+
}).catch(failStartup);
|
|
123
|
+
console.error(`[fastagent] invoke: ${agentDir} (${modelSpec})`);
|
|
124
|
+
await reportAuth(models, modelSpec, agentDir);
|
|
125
|
+
const { thinkingLevel } = definition.config;
|
|
126
|
+
const settings = {
|
|
127
|
+
model: modelRefOf(modelSpec, "the model"),
|
|
128
|
+
...(thinkingLevel === undefined ? {} : { thinkingLevel }),
|
|
129
|
+
};
|
|
130
|
+
const sessionId = await sessionFor(agent, opts.session, settings, file).catch(failStartup);
|
|
131
|
+
console.error(`[fastagent] session ${sessionId} (continue it with --session ${sessionId})`);
|
|
132
|
+
const exitCode = await answer(agent.messages.stream({ sessionId, content: message }), opts.json);
|
|
133
|
+
await agent.close();
|
|
18
134
|
// Always exit explicitly: the undici proxy agent's keep-alive sockets would otherwise hold the event loop open
|
|
19
|
-
// after a successful one-shot
|
|
135
|
+
// after a successful one-shot message.
|
|
20
136
|
process.exit(exitCode);
|
|
21
137
|
}
|
|
@@ -1,13 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `fastagent login [provider]`: sign in to a model provider, into the project-level auth file
|
|
3
|
+
* (`<agentDir>/.secrets/auth.json`) by default, or `FASTAGENT_AUTH_PATH`. In a terminal it asks, as pi's `/login`
|
|
4
|
+
* does; otherwise (a script, a coding agent: no terminal, `--no-input` or `--json`) nothing is asked and nothing
|
|
5
|
+
* waits: what it needs is named, and a person's step is handed back with a ticket to check (ticket.ts).
|
|
6
|
+
* `--deployment` runs the same login on this agent's deployed box instead (box-login.ts); `--stdio` is the box's half.
|
|
7
|
+
*/
|
|
8
|
+
import type { AuthInteraction } from "@earendil-works/pi-ai";
|
|
9
|
+
import { type TicketStep } from "../ticket.ts";
|
|
1
10
|
export interface LoginOptions {
|
|
2
11
|
/** `-g`: store in the user-global file, which an agent reads for a provider it has no other credential for. */
|
|
3
12
|
global?: boolean;
|
|
4
13
|
/** false ⇔ `--no-input`. */
|
|
5
14
|
input?: boolean;
|
|
6
|
-
/** `--
|
|
7
|
-
|
|
15
|
+
/** `--method account|api-key`: how to sign in, for a provider that offers both. */
|
|
16
|
+
method?: string;
|
|
17
|
+
/** `--json`: the outcome as one JSON object on stdout. */
|
|
18
|
+
json?: boolean;
|
|
19
|
+
/** `--timeout <seconds>`: how long the sign-in stays open. */
|
|
20
|
+
timeout?: string;
|
|
21
|
+
/** `--check <ticket>`: where a sign-in started without a terminal stands. */
|
|
22
|
+
check?: string;
|
|
23
|
+
/** `--code <address>` (with `--check`): the address the person's browser ended on, or the code it showed. */
|
|
24
|
+
code?: string;
|
|
25
|
+
/** `--ticket <id>`: the process that runs a ticket's sign-in. */
|
|
26
|
+
ticket?: string;
|
|
27
|
+
/** `--deployment <host>`: log in this agent's deployment on that host. */
|
|
28
|
+
deployment?: string;
|
|
8
29
|
/** `--stdio`: the box's half of `--deployment` — the flow speaks the relay wire on stdin/stdout. */
|
|
9
30
|
stdio?: boolean;
|
|
10
31
|
/** `--if-missing` (with `--stdio`): keep a credential already stored for the provider. */
|
|
11
32
|
ifMissing?: boolean;
|
|
12
33
|
}
|
|
13
34
|
export declare function runLogin(provider: string | undefined, opts: LoginOptions): Promise<void>;
|
|
35
|
+
/**
|
|
36
|
+
* pi-ai's account sign-in, run by a ticket's process with no one to answer it. A choice takes its first option, pi's
|
|
37
|
+
* default (the browser sign-in); a text question is left blank, the one pi-ai's account sign-ins ask being Copilot's
|
|
38
|
+
* optional Enterprise domain (a required one fails in the provider's own flow, which the ticket reports); a secret it
|
|
39
|
+
* cannot take; the code or address a browser ends on comes from `login --check --code`, unless the provider's callback
|
|
40
|
+
* brings it first. Not public: a test seam.
|
|
41
|
+
*/
|
|
42
|
+
export declare function signInInteraction(step: TicketStep, provider: string): AuthInteraction;
|