vellum 0.2.14 → 0.3.2
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/bin/vellum.js +2 -0
- package/package.json +6 -65
- package/.dockerignore +0 -27
- package/.env.example +0 -22
- package/Dockerfile +0 -99
- package/Dockerfile.sandbox +0 -5
- package/README.md +0 -201
- package/bun.lock +0 -1743
- package/bunfig.toml +0 -2
- package/docs/skills.md +0 -158
- package/drizzle/0000_dizzy_maggott.sql +0 -301
- package/drizzle/meta/0000_snapshot.json +0 -1999
- package/drizzle/meta/_journal.json +0 -13
- package/drizzle.config.ts +0 -7
- package/eslint.config.mjs +0 -17
- package/hook-templates/debug-prompt-logger/hook.json +0 -7
- package/hook-templates/debug-prompt-logger/run.sh +0 -68
- package/knip.json +0 -9
- package/scripts/capture-x-graphql.ts +0 -545
- package/scripts/ipc/check-contract-inventory.ts +0 -104
- package/scripts/ipc/check-swift-decoder-drift.ts +0 -164
- package/scripts/ipc/generate-swift.ts +0 -492
- package/scripts/test-filesystem-tools.sh +0 -48
- package/scripts/test.sh +0 -127
- package/src/__tests__/__snapshots__/ipc-snapshot.test.ts.snap +0 -2526
- package/src/__tests__/account-registry.test.ts +0 -245
- package/src/__tests__/active-skill-tools.test.ts +0 -378
- package/src/__tests__/agent-heartbeat-service.test.ts +0 -250
- package/src/__tests__/agent-loop-thinking.test.ts +0 -81
- package/src/__tests__/agent-loop.test.ts +0 -1135
- package/src/__tests__/anthropic-provider.test.ts +0 -778
- package/src/__tests__/app-builder-tool-scripts.test.ts +0 -290
- package/src/__tests__/app-bundler.test.ts +0 -292
- package/src/__tests__/app-executors.test.ts +0 -613
- package/src/__tests__/app-git-history.test.ts +0 -176
- package/src/__tests__/app-git-service.test.ts +0 -169
- package/src/__tests__/app-open-proxy.test.ts +0 -62
- package/src/__tests__/asset-materialize-tool.test.ts +0 -452
- package/src/__tests__/asset-search-tool.test.ts +0 -477
- package/src/__tests__/assistant-attachment-directive.test.ts +0 -401
- package/src/__tests__/assistant-attachments.test.ts +0 -437
- package/src/__tests__/assistant-event-hub.test.ts +0 -226
- package/src/__tests__/assistant-event.test.ts +0 -123
- package/src/__tests__/assistant-events-sse-hardening.test.ts +0 -315
- package/src/__tests__/attachments-store.test.ts +0 -476
- package/src/__tests__/attachments.test.ts +0 -134
- package/src/__tests__/audit-log-rotation.test.ts +0 -154
- package/src/__tests__/browser-fill-credential.test.ts +0 -309
- package/src/__tests__/browser-manager.test.ts +0 -203
- package/src/__tests__/browser-runtime-check.test.ts +0 -55
- package/src/__tests__/browser-skill-baseline-tool-payload.test.ts +0 -68
- package/src/__tests__/browser-skill-endstate.test.ts +0 -195
- package/src/__tests__/bundle-scanner.test.ts +0 -313
- package/src/__tests__/call-bridge.test.ts +0 -517
- package/src/__tests__/call-constants.test.ts +0 -40
- package/src/__tests__/call-domain.test.ts +0 -163
- package/src/__tests__/call-orchestrator.test.ts +0 -625
- package/src/__tests__/call-recovery.test.ts +0 -518
- package/src/__tests__/call-routes-http.test.ts +0 -699
- package/src/__tests__/call-state-machine.test.ts +0 -143
- package/src/__tests__/call-state.test.ts +0 -174
- package/src/__tests__/call-store.test.ts +0 -691
- package/src/__tests__/channel-approval-routes.test.ts +0 -438
- package/src/__tests__/channel-approval.test.ts +0 -266
- package/src/__tests__/channel-approvals.test.ts +0 -393
- package/src/__tests__/channel-delivery-store.test.ts +0 -447
- package/src/__tests__/checker.test.ts +0 -3519
- package/src/__tests__/clarification-resolver.test.ts +0 -159
- package/src/__tests__/classifier.test.ts +0 -67
- package/src/__tests__/claude-code-skill-regression.test.ts +0 -127
- package/src/__tests__/claude-code-tool-profiles.test.ts +0 -88
- package/src/__tests__/cli-discover.test.ts +0 -85
- package/src/__tests__/cli.test.ts +0 -26
- package/src/__tests__/clipboard.test.ts +0 -80
- package/src/__tests__/commit-guarantee.test.ts +0 -335
- package/src/__tests__/commit-message-enrichment-service.test.ts +0 -550
- package/src/__tests__/compaction.benchmark.test.ts +0 -176
- package/src/__tests__/computer-use-session-compaction.test.ts +0 -132
- package/src/__tests__/computer-use-session-lifecycle.test.ts +0 -293
- package/src/__tests__/computer-use-session-working-dir.test.ts +0 -117
- package/src/__tests__/computer-use-skill-baseline.test.ts +0 -74
- package/src/__tests__/computer-use-skill-endstate.test.ts +0 -89
- package/src/__tests__/computer-use-skill-lifecycle-cleanup.test.ts +0 -217
- package/src/__tests__/computer-use-skill-manifest-regression.test.ts +0 -107
- package/src/__tests__/computer-use-skill-proxy-bridge.test.ts +0 -54
- package/src/__tests__/computer-use-tools.test.ts +0 -250
- package/src/__tests__/config-schema.test.ts +0 -1462
- package/src/__tests__/conflict-intent-tokenization.test.ts +0 -141
- package/src/__tests__/conflict-policy.test.ts +0 -121
- package/src/__tests__/conflict-store.test.ts +0 -332
- package/src/__tests__/connection-policy.test.ts +0 -102
- package/src/__tests__/contacts-tools.test.ts +0 -331
- package/src/__tests__/context-memory-e2e.test.ts +0 -434
- package/src/__tests__/context-token-estimator.test.ts +0 -135
- package/src/__tests__/context-window-manager.test.ts +0 -376
- package/src/__tests__/contradiction-checker.test.ts +0 -314
- package/src/__tests__/conversation-store.test.ts +0 -612
- package/src/__tests__/credential-broker-browser-fill.test.ts +0 -517
- package/src/__tests__/credential-broker-server-use.test.ts +0 -554
- package/src/__tests__/credential-broker.test.ts +0 -167
- package/src/__tests__/credential-host-pattern-match.test.ts +0 -104
- package/src/__tests__/credential-metadata-store.test.ts +0 -779
- package/src/__tests__/credential-policy-validate.test.ts +0 -121
- package/src/__tests__/credential-resolve.test.ts +0 -328
- package/src/__tests__/credential-security-e2e.test.ts +0 -352
- package/src/__tests__/credential-security-invariants.test.ts +0 -583
- package/src/__tests__/credential-selection.test.ts +0 -354
- package/src/__tests__/credential-vault-unit.test.ts +0 -780
- package/src/__tests__/credential-vault.test.ts +0 -852
- package/src/__tests__/daemon-assistant-events.test.ts +0 -164
- package/src/__tests__/daemon-server-session-init.test.ts +0 -522
- package/src/__tests__/date-context.test.ts +0 -373
- package/src/__tests__/db-schedule-syntax-migration.test.ts +0 -129
- package/src/__tests__/delete-managed-skill-tool.test.ts +0 -97
- package/src/__tests__/diff.test.ts +0 -121
- package/src/__tests__/domain-normalize.test.ts +0 -112
- package/src/__tests__/domain-policy.test.ts +0 -124
- package/src/__tests__/doordash-client.test.ts +0 -186
- package/src/__tests__/doordash-session.test.ts +0 -152
- package/src/__tests__/dynamic-page-surface.test.ts +0 -91
- package/src/__tests__/dynamic-skill-workflow-prompt.test.ts +0 -132
- package/src/__tests__/edit-engine.test.ts +0 -180
- package/src/__tests__/elevenlabs-client.test.ts +0 -271
- package/src/__tests__/email-cli.test.ts +0 -283
- package/src/__tests__/encrypted-store.test.ts +0 -332
- package/src/__tests__/entity-extractor.test.ts +0 -190
- package/src/__tests__/ephemeral-permissions.test.ts +0 -362
- package/src/__tests__/evaluate-typescript-tool.test.ts +0 -286
- package/src/__tests__/event-bus.test.ts +0 -222
- package/src/__tests__/file-edit-tool.test.ts +0 -122
- package/src/__tests__/file-ops-service.test.ts +0 -330
- package/src/__tests__/file-read-tool.test.ts +0 -75
- package/src/__tests__/file-write-tool.test.ts +0 -113
- package/src/__tests__/filesystem-tools.test.ts +0 -579
- package/src/__tests__/fixtures/credential-security-fixtures.ts +0 -181
- package/src/__tests__/fixtures/media-reuse-fixtures.ts +0 -126
- package/src/__tests__/fixtures/mock-signup-server.ts +0 -387
- package/src/__tests__/fixtures/proxy-fixtures.ts +0 -147
- package/src/__tests__/followup-tools.test.ts +0 -303
- package/src/__tests__/forbidden-legacy-symbols.test.ts +0 -71
- package/src/__tests__/fuzzy-match-property.test.ts +0 -216
- package/src/__tests__/fuzzy-match.test.ts +0 -138
- package/src/__tests__/gateway-only-enforcement.test.ts +0 -546
- package/src/__tests__/gemini-image-service.test.ts +0 -261
- package/src/__tests__/gemini-provider.test.ts +0 -651
- package/src/__tests__/get-weather.test.ts +0 -318
- package/src/__tests__/gmail-integration.test.ts +0 -73
- package/src/__tests__/handlers-add-trust-rule-metadata.test.ts +0 -202
- package/src/__tests__/handlers-cu-observation-blob.test.ts +0 -352
- package/src/__tests__/handlers-ipc-blob-probe.test.ts +0 -191
- package/src/__tests__/handlers-slack-config.test.ts +0 -200
- package/src/__tests__/handlers-task-submit-slash.test.ts +0 -38
- package/src/__tests__/handlers-telegram-config.test.ts +0 -855
- package/src/__tests__/handlers-twitter-config.test.ts +0 -858
- package/src/__tests__/headless-browser-interactions.test.ts +0 -536
- package/src/__tests__/headless-browser-navigate.test.ts +0 -211
- package/src/__tests__/headless-browser-read-tools.test.ts +0 -261
- package/src/__tests__/headless-browser-snapshot.test.ts +0 -185
- package/src/__tests__/history-repair-observability.test.ts +0 -56
- package/src/__tests__/history-repair.test.ts +0 -510
- package/src/__tests__/home-base-bootstrap.test.ts +0 -82
- package/src/__tests__/hooks-blocking.test.ts +0 -128
- package/src/__tests__/hooks-cli.test.ts +0 -144
- package/src/__tests__/hooks-config.test.ts +0 -93
- package/src/__tests__/hooks-discovery.test.ts +0 -199
- package/src/__tests__/hooks-integration.test.ts +0 -189
- package/src/__tests__/hooks-manager.test.ts +0 -187
- package/src/__tests__/hooks-runner.test.ts +0 -182
- package/src/__tests__/hooks-settings.test.ts +0 -154
- package/src/__tests__/hooks-templates.test.ts +0 -137
- package/src/__tests__/hooks-ts-runner.test.ts +0 -125
- package/src/__tests__/hooks-watch.test.ts +0 -100
- package/src/__tests__/host-file-edit-tool.test.ts +0 -228
- package/src/__tests__/host-file-read-tool.test.ts +0 -123
- package/src/__tests__/host-file-write-tool.test.ts +0 -136
- package/src/__tests__/host-shell-tool.test.ts +0 -562
- package/src/__tests__/ingress-reconcile.test.ts +0 -581
- package/src/__tests__/ingress-url-consistency.test.ts +0 -214
- package/src/__tests__/intent-routing.test.ts +0 -259
- package/src/__tests__/ipc-blob-store.test.ts +0 -315
- package/src/__tests__/ipc-contract-inventory.test.ts +0 -54
- package/src/__tests__/ipc-contract.test.ts +0 -74
- package/src/__tests__/ipc-protocol.test.ts +0 -113
- package/src/__tests__/ipc-roundtrip.benchmark.test.ts +0 -237
- package/src/__tests__/ipc-snapshot.test.ts +0 -1757
- package/src/__tests__/ipc-validate.test.ts +0 -407
- package/src/__tests__/key-migration.test.ts +0 -206
- package/src/__tests__/keychain.test.ts +0 -258
- package/src/__tests__/llm-usage-store.test.ts +0 -221
- package/src/__tests__/managed-skill-lifecycle.test.ts +0 -257
- package/src/__tests__/managed-store.test.ts +0 -608
- package/src/__tests__/media-generate-image.test.ts +0 -238
- package/src/__tests__/media-reuse-story.e2e.test.ts +0 -676
- package/src/__tests__/media-visibility-policy.test.ts +0 -141
- package/src/__tests__/memory-context-benchmark.benchmark.test.ts +0 -235
- package/src/__tests__/memory-lifecycle-e2e.test.ts +0 -481
- package/src/__tests__/memory-query-builder.test.ts +0 -59
- package/src/__tests__/memory-recall-quality.test.ts +0 -846
- package/src/__tests__/memory-regressions.experimental.test.ts +0 -538
- package/src/__tests__/memory-regressions.test.ts +0 -4435
- package/src/__tests__/memory-retrieval-budget.test.ts +0 -49
- package/src/__tests__/memory-retrieval.benchmark.test.ts +0 -430
- package/src/__tests__/migration-cli-flows.test.ts +0 -169
- package/src/__tests__/migration-ordering.test.ts +0 -249
- package/src/__tests__/mock-signup-server.test.ts +0 -528
- package/src/__tests__/oauth-callback-registry.test.ts +0 -92
- package/src/__tests__/oauth2-gateway-transport.test.ts +0 -285
- package/src/__tests__/onboarding-starter-tasks.test.ts +0 -176
- package/src/__tests__/onboarding-template-contract.test.ts +0 -58
- package/src/__tests__/openai-provider.test.ts +0 -753
- package/src/__tests__/parallel-tool.benchmark.test.ts +0 -294
- package/src/__tests__/parser.test.ts +0 -472
- package/src/__tests__/path-classifier.test.ts +0 -73
- package/src/__tests__/path-policy.test.ts +0 -435
- package/src/__tests__/platform-move-helper.test.ts +0 -99
- package/src/__tests__/platform-socket-path.test.ts +0 -52
- package/src/__tests__/platform-workspace-migration.test.ts +0 -1000
- package/src/__tests__/platform.test.ts +0 -131
- package/src/__tests__/playbook-execution.test.ts +0 -502
- package/src/__tests__/playbook-tools.test.ts +0 -340
- package/src/__tests__/prebuilt-home-base-seed.test.ts +0 -75
- package/src/__tests__/pricing.test.ts +0 -256
- package/src/__tests__/profile-compiler.test.ts +0 -374
- package/src/__tests__/provider-commit-message-generator.test.ts +0 -342
- package/src/__tests__/provider-registry-ollama.test.ts +0 -16
- package/src/__tests__/provider-streaming.benchmark.test.ts +0 -773
- package/src/__tests__/proxy-approval-callback.test.ts +0 -601
- package/src/__tests__/public-ingress-urls.test.ts +0 -256
- package/src/__tests__/qdrant-manager.test.ts +0 -267
- package/src/__tests__/ratelimit.test.ts +0 -297
- package/src/__tests__/recurrence-engine-rruleset.test.ts +0 -175
- package/src/__tests__/recurrence-engine.test.ts +0 -78
- package/src/__tests__/recurrence-types.test.ts +0 -79
- package/src/__tests__/registry.test.ts +0 -494
- package/src/__tests__/relay-server.test.ts +0 -688
- package/src/__tests__/reminder-store.test.ts +0 -223
- package/src/__tests__/reminder.test.ts +0 -229
- package/src/__tests__/request-file-tool.test.ts +0 -158
- package/src/__tests__/run-orchestrator-assistant-events.test.ts +0 -222
- package/src/__tests__/run-orchestrator.test.ts +0 -200
- package/src/__tests__/runtime-attachment-metadata.test.ts +0 -189
- package/src/__tests__/runtime-events-sse-parity.test.ts +0 -343
- package/src/__tests__/runtime-events-sse.test.ts +0 -162
- package/src/__tests__/runtime-runs-http.test.ts +0 -433
- package/src/__tests__/runtime-runs.test.ts +0 -249
- package/src/__tests__/sandbox-diagnostics.test.ts +0 -408
- package/src/__tests__/sandbox-host-parity.test.ts +0 -950
- package/src/__tests__/scaffold-managed-skill-tool.test.ts +0 -253
- package/src/__tests__/schedule-store.test.ts +0 -484
- package/src/__tests__/schedule-tools.test.ts +0 -783
- package/src/__tests__/scheduler-recurrence.test.ts +0 -430
- package/src/__tests__/script-proxy-certs.test.ts +0 -90
- package/src/__tests__/script-proxy-connect-tunnel.test.ts +0 -177
- package/src/__tests__/script-proxy-decision-trace.test.ts +0 -156
- package/src/__tests__/script-proxy-http-forwarder.test.ts +0 -281
- package/src/__tests__/script-proxy-injection-runtime.test.ts +0 -401
- package/src/__tests__/script-proxy-mitm-handler.test.ts +0 -407
- package/src/__tests__/script-proxy-policy-runtime.test.ts +0 -287
- package/src/__tests__/script-proxy-policy.test.ts +0 -310
- package/src/__tests__/script-proxy-rewrite-specificity.test.ts +0 -135
- package/src/__tests__/script-proxy-router.test.ts +0 -180
- package/src/__tests__/script-proxy-session-manager.test.ts +0 -382
- package/src/__tests__/script-proxy-session-runtime.test.ts +0 -113
- package/src/__tests__/secret-allowlist.test.ts +0 -230
- package/src/__tests__/secret-ingress-handler.test.ts +0 -110
- package/src/__tests__/secret-onetime-send.test.ts +0 -130
- package/src/__tests__/secret-prompt-log-hygiene.test.ts +0 -106
- package/src/__tests__/secret-response-routing.test.ts +0 -93
- package/src/__tests__/secret-scanner-executor.test.ts +0 -348
- package/src/__tests__/secret-scanner.test.ts +0 -900
- package/src/__tests__/secure-keys.test.ts +0 -323
- package/src/__tests__/server-history-render.test.ts +0 -431
- package/src/__tests__/session-abort-tool-results.test.ts +0 -240
- package/src/__tests__/session-conflict-gate.test.ts +0 -1136
- package/src/__tests__/session-error.test.ts +0 -369
- package/src/__tests__/session-evictor.test.ts +0 -188
- package/src/__tests__/session-init.benchmark.test.ts +0 -465
- package/src/__tests__/session-load-history-repair.test.ts +0 -222
- package/src/__tests__/session-pre-run-repair.test.ts +0 -213
- package/src/__tests__/session-process-bridge.test.ts +0 -242
- package/src/__tests__/session-profile-injection.test.ts +0 -444
- package/src/__tests__/session-provider-retry-repair.test.ts +0 -306
- package/src/__tests__/session-queue.test.ts +0 -1535
- package/src/__tests__/session-runtime-assembly.test.ts +0 -476
- package/src/__tests__/session-runtime-workspace.test.ts +0 -183
- package/src/__tests__/session-skill-tools.test.ts +0 -2431
- package/src/__tests__/session-slash-known.test.ts +0 -368
- package/src/__tests__/session-slash-queue.test.ts +0 -288
- package/src/__tests__/session-slash-unknown.test.ts +0 -271
- package/src/__tests__/session-surfaces-task-progress.test.ts +0 -104
- package/src/__tests__/session-tool-setup-app-refresh.test.ts +0 -473
- package/src/__tests__/session-tool-setup-memory-scope.test.ts +0 -140
- package/src/__tests__/session-tool-setup-side-effect-flag.test.ts +0 -140
- package/src/__tests__/session-undo.test.ts +0 -75
- package/src/__tests__/session-workspace-cache-state.test.ts +0 -246
- package/src/__tests__/session-workspace-injection.test.ts +0 -327
- package/src/__tests__/session-workspace-tool-tracking.test.ts +0 -240
- package/src/__tests__/shared-filesystem-errors.test.ts +0 -78
- package/src/__tests__/shell-credential-ref.test.ts +0 -187
- package/src/__tests__/shell-identity.test.ts +0 -256
- package/src/__tests__/shell-parser-fuzz.test.ts +0 -544
- package/src/__tests__/shell-parser-property.test.ts +0 -433
- package/src/__tests__/shell-tool-proxy-mode.test.ts +0 -272
- package/src/__tests__/signup-e2e.test.ts +0 -353
- package/src/__tests__/size-guard.test.ts +0 -117
- package/src/__tests__/skill-include-graph.test.ts +0 -303
- package/src/__tests__/skill-load-tool.test.ts +0 -409
- package/src/__tests__/skill-projection.benchmark.test.ts +0 -338
- package/src/__tests__/skill-script-runner-host.test.ts +0 -489
- package/src/__tests__/skill-script-runner-sandbox.test.ts +0 -349
- package/src/__tests__/skill-script-runner.test.ts +0 -159
- package/src/__tests__/skill-tool-factory.test.ts +0 -252
- package/src/__tests__/skill-tool-manifest.test.ts +0 -658
- package/src/__tests__/skill-version-hash.test.ts +0 -182
- package/src/__tests__/skills.test.ts +0 -680
- package/src/__tests__/slash-commands-catalog.test.ts +0 -86
- package/src/__tests__/slash-commands-parser.test.ts +0 -119
- package/src/__tests__/slash-commands-resolver.test.ts +0 -193
- package/src/__tests__/slash-commands-rewrite.test.ts +0 -39
- package/src/__tests__/speaker-identification.test.ts +0 -52
- package/src/__tests__/starter-bundle.test.ts +0 -136
- package/src/__tests__/starter-task-flow.test.ts +0 -143
- package/src/__tests__/subagent-manager-notify.test.ts +0 -404
- package/src/__tests__/subagent-tools.test.ts +0 -801
- package/src/__tests__/subagent-types.test.ts +0 -78
- package/src/__tests__/swarm-orchestrator.test.ts +0 -428
- package/src/__tests__/swarm-plan-validator.test.ts +0 -330
- package/src/__tests__/swarm-recursion.test.ts +0 -165
- package/src/__tests__/swarm-router-planner.test.ts +0 -208
- package/src/__tests__/swarm-session-integration.test.ts +0 -274
- package/src/__tests__/swarm-tool.test.ts +0 -145
- package/src/__tests__/swarm-worker-backend.test.ts +0 -129
- package/src/__tests__/swarm-worker-runner.test.ts +0 -272
- package/src/__tests__/system-prompt.test.ts +0 -439
- package/src/__tests__/task-compiler.test.ts +0 -284
- package/src/__tests__/task-management-tools.test.ts +0 -936
- package/src/__tests__/task-runner.test.ts +0 -216
- package/src/__tests__/task-scheduler.test.ts +0 -217
- package/src/__tests__/task-tools.test.ts +0 -595
- package/src/__tests__/terminal-sandbox-docker.test.ts +0 -1064
- package/src/__tests__/terminal-sandbox.integration.test.ts +0 -178
- package/src/__tests__/terminal-sandbox.test.ts +0 -202
- package/src/__tests__/terminal-tools.test.ts +0 -840
- package/src/__tests__/test-support/browser-skill-harness.ts +0 -90
- package/src/__tests__/test-support/computer-use-skill-harness.ts +0 -45
- package/src/__tests__/tool-audit-listener.test.ts +0 -113
- package/src/__tests__/tool-domain-event-publisher.test.ts +0 -253
- package/src/__tests__/tool-execution-pipeline.benchmark.test.ts +0 -500
- package/src/__tests__/tool-executor-lifecycle-events.test.ts +0 -516
- package/src/__tests__/tool-executor-redaction.test.ts +0 -289
- package/src/__tests__/tool-executor-shell-integration.test.ts +0 -301
- package/src/__tests__/tool-executor.test.ts +0 -1989
- package/src/__tests__/tool-metrics-listener.test.ts +0 -225
- package/src/__tests__/tool-notification-listener.test.ts +0 -49
- package/src/__tests__/tool-permission-simulate-handler.test.ts +0 -336
- package/src/__tests__/tool-policy.test.ts +0 -54
- package/src/__tests__/tool-profiling-listener.test.ts +0 -268
- package/src/__tests__/tool-result-truncation.test.ts +0 -217
- package/src/__tests__/tool-trace-listener.test.ts +0 -226
- package/src/__tests__/top-level-renderer.test.ts +0 -121
- package/src/__tests__/top-level-scanner.test.ts +0 -141
- package/src/__tests__/trace-emitter.test.ts +0 -173
- package/src/__tests__/trust-store.test.ts +0 -1605
- package/src/__tests__/turn-commit.test.ts +0 -554
- package/src/__tests__/twilio-provider.test.ts +0 -329
- package/src/__tests__/twilio-routes-elevenlabs.test.ts +0 -375
- package/src/__tests__/twilio-routes-twiml.test.ts +0 -127
- package/src/__tests__/twilio-routes.test.ts +0 -577
- package/src/__tests__/twitter-auth-handler.test.ts +0 -667
- package/src/__tests__/twitter-cli-error-shaping.test.ts +0 -208
- package/src/__tests__/twitter-cli-routing.test.ts +0 -252
- package/src/__tests__/twitter-oauth-client.test.ts +0 -209
- package/src/__tests__/url-safety.test.ts +0 -418
- package/src/__tests__/view-image-tool.test.ts +0 -217
- package/src/__tests__/weather-skill-regression.test.ts +0 -225
- package/src/__tests__/web-fetch.test.ts +0 -869
- package/src/__tests__/web-search.test.ts +0 -584
- package/src/__tests__/workspace-git-service.test.ts +0 -1153
- package/src/__tests__/workspace-heartbeat-service.test.ts +0 -486
- package/src/__tests__/workspace-lifecycle.test.ts +0 -292
- package/src/__tests__/workspace-policy.test.ts +0 -213
- package/src/agent/attachments.ts +0 -35
- package/src/agent/loop.ts +0 -500
- package/src/agent/message-types.ts +0 -17
- package/src/agent-heartbeat/agent-heartbeat-service.ts +0 -155
- package/src/autonomy/autonomy-resolver.ts +0 -60
- package/src/autonomy/autonomy-store.ts +0 -122
- package/src/autonomy/disposition-mapper.ts +0 -31
- package/src/autonomy/index.ts +0 -11
- package/src/autonomy/types.ts +0 -39
- package/src/bundler/app-bundler.ts +0 -295
- package/src/bundler/bundle-scanner.ts +0 -535
- package/src/bundler/bundle-signer.ts +0 -124
- package/src/bundler/manifest.ts +0 -21
- package/src/bundler/signature-verifier.ts +0 -184
- package/src/calls/call-bridge.ts +0 -168
- package/src/calls/call-constants.ts +0 -48
- package/src/calls/call-domain.ts +0 -430
- package/src/calls/call-orchestrator.ts +0 -498
- package/src/calls/call-recovery.ts +0 -207
- package/src/calls/call-state-machine.ts +0 -68
- package/src/calls/call-state.ts +0 -87
- package/src/calls/call-store.ts +0 -422
- package/src/calls/elevenlabs-client.ts +0 -97
- package/src/calls/elevenlabs-config.ts +0 -31
- package/src/calls/relay-server.ts +0 -390
- package/src/calls/speaker-identification.ts +0 -213
- package/src/calls/twilio-config.ts +0 -45
- package/src/calls/twilio-provider.ts +0 -269
- package/src/calls/twilio-routes.ts +0 -311
- package/src/calls/types.ts +0 -39
- package/src/calls/voice-provider.ts +0 -14
- package/src/calls/voice-quality.ts +0 -114
- package/src/cli/autonomy.ts +0 -188
- package/src/cli/config-commands.ts +0 -334
- package/src/cli/contacts.ts +0 -149
- package/src/cli/core-commands.ts +0 -784
- package/src/cli/doordash.ts +0 -1055
- package/src/cli/email-guardrails.ts +0 -200
- package/src/cli/email.ts +0 -405
- package/src/cli/ipc-client.ts +0 -82
- package/src/cli/main-screen.tsx +0 -53
- package/src/cli/map.ts +0 -270
- package/src/cli/twitter.ts +0 -754
- package/src/cli.ts +0 -918
- package/src/commands/__tests__/cc-command-registry.test.ts +0 -319
- package/src/commands/cc-command-registry.ts +0 -209
- package/src/config/bundled-skills/.gitkeep +0 -0
- package/src/config/bundled-skills/agentmail/SKILL.md +0 -128
- package/src/config/bundled-skills/agentmail/icon.svg +0 -21
- package/src/config/bundled-skills/app-builder/SKILL.md +0 -1404
- package/src/config/bundled-skills/app-builder/TOOLS.json +0 -279
- package/src/config/bundled-skills/app-builder/icon.svg +0 -9
- package/src/config/bundled-skills/app-builder/tools/app-create.ts +0 -15
- package/src/config/bundled-skills/app-builder/tools/app-delete.ts +0 -10
- package/src/config/bundled-skills/app-builder/tools/app-file-edit.ts +0 -11
- package/src/config/bundled-skills/app-builder/tools/app-file-list.ts +0 -10
- package/src/config/bundled-skills/app-builder/tools/app-file-read.ts +0 -18
- package/src/config/bundled-skills/app-builder/tools/app-file-write.ts +0 -11
- package/src/config/bundled-skills/app-builder/tools/app-list.ts +0 -10
- package/src/config/bundled-skills/app-builder/tools/app-query.ts +0 -10
- package/src/config/bundled-skills/app-builder/tools/app-update.ts +0 -20
- package/src/config/bundled-skills/browser/SKILL.md +0 -28
- package/src/config/bundled-skills/browser/TOOLS.json +0 -234
- package/src/config/bundled-skills/browser/tools/browser-click.ts +0 -9
- package/src/config/bundled-skills/browser/tools/browser-close.ts +0 -9
- package/src/config/bundled-skills/browser/tools/browser-extract.ts +0 -9
- package/src/config/bundled-skills/browser/tools/browser-fill-credential.ts +0 -9
- package/src/config/bundled-skills/browser/tools/browser-navigate.ts +0 -9
- package/src/config/bundled-skills/browser/tools/browser-press-key.ts +0 -9
- package/src/config/bundled-skills/browser/tools/browser-screenshot.ts +0 -9
- package/src/config/bundled-skills/browser/tools/browser-snapshot.ts +0 -9
- package/src/config/bundled-skills/browser/tools/browser-type.ts +0 -9
- package/src/config/bundled-skills/browser/tools/browser-wait-for.ts +0 -9
- package/src/config/bundled-skills/claude-code/SKILL.md +0 -50
- package/src/config/bundled-skills/claude-code/TOOLS.json +0 -40
- package/src/config/bundled-skills/claude-code/tools/claude-code.ts +0 -9
- package/src/config/bundled-skills/computer-use/SKILL.md +0 -17
- package/src/config/bundled-skills/computer-use/TOOLS.json +0 -326
- package/src/config/bundled-skills/computer-use/tools/computer-use-click.ts +0 -9
- package/src/config/bundled-skills/computer-use/tools/computer-use-done.ts +0 -9
- package/src/config/bundled-skills/computer-use/tools/computer-use-double-click.ts +0 -9
- package/src/config/bundled-skills/computer-use/tools/computer-use-drag.ts +0 -9
- package/src/config/bundled-skills/computer-use/tools/computer-use-key.ts +0 -9
- package/src/config/bundled-skills/computer-use/tools/computer-use-open-app.ts +0 -9
- package/src/config/bundled-skills/computer-use/tools/computer-use-request-control.ts +0 -9
- package/src/config/bundled-skills/computer-use/tools/computer-use-respond.ts +0 -9
- package/src/config/bundled-skills/computer-use/tools/computer-use-right-click.ts +0 -9
- package/src/config/bundled-skills/computer-use/tools/computer-use-run-applescript.ts +0 -9
- package/src/config/bundled-skills/computer-use/tools/computer-use-scroll.ts +0 -9
- package/src/config/bundled-skills/computer-use/tools/computer-use-type-text.ts +0 -9
- package/src/config/bundled-skills/computer-use/tools/computer-use-wait.ts +0 -9
- package/src/config/bundled-skills/contacts/SKILL.md +0 -39
- package/src/config/bundled-skills/contacts/TOOLS.json +0 -122
- package/src/config/bundled-skills/contacts/tools/contact-merge.ts +0 -57
- package/src/config/bundled-skills/contacts/tools/contact-search.ts +0 -60
- package/src/config/bundled-skills/contacts/tools/contact-upsert.ts +0 -66
- package/src/config/bundled-skills/document/SKILL.md +0 -26
- package/src/config/bundled-skills/document/TOOLS.json +0 -53
- package/src/config/bundled-skills/document/tools/document-create.ts +0 -9
- package/src/config/bundled-skills/document/tools/document-update.ts +0 -9
- package/src/config/bundled-skills/doordash/SKILL.md +0 -163
- package/src/config/bundled-skills/followups/SKILL.md +0 -32
- package/src/config/bundled-skills/followups/TOOLS.json +0 -100
- package/src/config/bundled-skills/followups/icon.svg +0 -24
- package/src/config/bundled-skills/followups/tools/followup-create.ts +0 -9
- package/src/config/bundled-skills/followups/tools/followup-list.ts +0 -9
- package/src/config/bundled-skills/followups/tools/followup-resolve.ts +0 -9
- package/src/config/bundled-skills/google-calendar/SKILL.md +0 -51
- package/src/config/bundled-skills/google-calendar/TOOLS.json +0 -108
- package/src/config/bundled-skills/google-calendar/calendar-client.ts +0 -165
- package/src/config/bundled-skills/google-calendar/tools/calendar-check-availability.ts +0 -21
- package/src/config/bundled-skills/google-calendar/tools/calendar-create-event.ts +0 -42
- package/src/config/bundled-skills/google-calendar/tools/calendar-get-event.ts +0 -13
- package/src/config/bundled-skills/google-calendar/tools/calendar-list-events.ts +0 -30
- package/src/config/bundled-skills/google-calendar/tools/calendar-rsvp.ts +0 -41
- package/src/config/bundled-skills/google-calendar/tools/shared.ts +0 -18
- package/src/config/bundled-skills/google-calendar/types.ts +0 -97
- package/src/config/bundled-skills/image-studio/SKILL.md +0 -32
- package/src/config/bundled-skills/image-studio/TOOLS.json +0 -42
- package/src/config/bundled-skills/image-studio/tools/media-generate-image.ts +0 -115
- package/src/config/bundled-skills/macos-automation/SKILL.md +0 -66
- package/src/config/bundled-skills/messaging/SKILL.md +0 -145
- package/src/config/bundled-skills/messaging/TOOLS.json +0 -357
- package/src/config/bundled-skills/messaging/tools/gmail-archive.ts +0 -23
- package/src/config/bundled-skills/messaging/tools/gmail-batch-archive.ts +0 -23
- package/src/config/bundled-skills/messaging/tools/gmail-batch-label.ts +0 -25
- package/src/config/bundled-skills/messaging/tools/gmail-draft.ts +0 -26
- package/src/config/bundled-skills/messaging/tools/gmail-label.ts +0 -25
- package/src/config/bundled-skills/messaging/tools/gmail-trash.ts +0 -23
- package/src/config/bundled-skills/messaging/tools/gmail-unsubscribe.ts +0 -84
- package/src/config/bundled-skills/messaging/tools/messaging-analyze-activity.ts +0 -18
- package/src/config/bundled-skills/messaging/tools/messaging-analyze-style.ts +0 -125
- package/src/config/bundled-skills/messaging/tools/messaging-auth-test.ts +0 -16
- package/src/config/bundled-skills/messaging/tools/messaging-draft.ts +0 -49
- package/src/config/bundled-skills/messaging/tools/messaging-list-conversations.ts +0 -21
- package/src/config/bundled-skills/messaging/tools/messaging-mark-read.ts +0 -25
- package/src/config/bundled-skills/messaging/tools/messaging-read.ts +0 -28
- package/src/config/bundled-skills/messaging/tools/messaging-reply.ts +0 -32
- package/src/config/bundled-skills/messaging/tools/messaging-search.ts +0 -22
- package/src/config/bundled-skills/messaging/tools/messaging-send.ts +0 -31
- package/src/config/bundled-skills/messaging/tools/shared.ts +0 -76
- package/src/config/bundled-skills/messaging/tools/slack-add-reaction.ts +0 -25
- package/src/config/bundled-skills/messaging/tools/slack-leave-channel.ts +0 -23
- package/src/config/bundled-skills/phone-calls/SKILL.md +0 -522
- package/src/config/bundled-skills/playbooks/SKILL.md +0 -31
- package/src/config/bundled-skills/playbooks/TOOLS.json +0 -126
- package/src/config/bundled-skills/playbooks/tools/playbook-create.ts +0 -98
- package/src/config/bundled-skills/playbooks/tools/playbook-delete.ts +0 -54
- package/src/config/bundled-skills/playbooks/tools/playbook-list.ts +0 -76
- package/src/config/bundled-skills/playbooks/tools/playbook-update.ts +0 -113
- package/src/config/bundled-skills/public-ingress/SKILL.md +0 -200
- package/src/config/bundled-skills/reminder/SKILL.md +0 -20
- package/src/config/bundled-skills/reminder/TOOLS.json +0 -67
- package/src/config/bundled-skills/reminder/tools/reminder-cancel.ts +0 -9
- package/src/config/bundled-skills/reminder/tools/reminder-create.ts +0 -9
- package/src/config/bundled-skills/reminder/tools/reminder-list.ts +0 -9
- package/src/config/bundled-skills/schedule/SKILL.md +0 -74
- package/src/config/bundled-skills/schedule/TOOLS.json +0 -135
- package/src/config/bundled-skills/schedule/tools/schedule-create.ts +0 -9
- package/src/config/bundled-skills/schedule/tools/schedule-delete.ts +0 -9
- package/src/config/bundled-skills/schedule/tools/schedule-list.ts +0 -9
- package/src/config/bundled-skills/schedule/tools/schedule-update.ts +0 -9
- package/src/config/bundled-skills/self-upgrade/SKILL.md +0 -68
- package/src/config/bundled-skills/start-the-day/SKILL.md +0 -70
- package/src/config/bundled-skills/start-the-day/icon.svg +0 -13
- package/src/config/bundled-skills/subagent/SKILL.md +0 -25
- package/src/config/bundled-skills/subagent/TOOLS.json +0 -107
- package/src/config/bundled-skills/subagent/tools/subagent-abort.ts +0 -9
- package/src/config/bundled-skills/subagent/tools/subagent-message.ts +0 -9
- package/src/config/bundled-skills/subagent/tools/subagent-read.ts +0 -9
- package/src/config/bundled-skills/subagent/tools/subagent-spawn.ts +0 -9
- package/src/config/bundled-skills/subagent/tools/subagent-status.ts +0 -9
- package/src/config/bundled-skills/tasks/SKILL.md +0 -28
- package/src/config/bundled-skills/tasks/TOOLS.json +0 -281
- package/src/config/bundled-skills/tasks/tools/task-delete.ts +0 -9
- package/src/config/bundled-skills/tasks/tools/task-list-add.ts +0 -9
- package/src/config/bundled-skills/tasks/tools/task-list-remove.ts +0 -9
- package/src/config/bundled-skills/tasks/tools/task-list-show.ts +0 -9
- package/src/config/bundled-skills/tasks/tools/task-list-update.ts +0 -9
- package/src/config/bundled-skills/tasks/tools/task-list.ts +0 -9
- package/src/config/bundled-skills/tasks/tools/task-queue-run.ts +0 -9
- package/src/config/bundled-skills/tasks/tools/task-run.ts +0 -9
- package/src/config/bundled-skills/tasks/tools/task-save.ts +0 -9
- package/src/config/bundled-skills/transcribe/SKILL.md +0 -25
- package/src/config/bundled-skills/transcribe/TOOLS.json +0 -32
- package/src/config/bundled-skills/transcribe/tools/transcribe-media.ts +0 -370
- package/src/config/bundled-skills/twitter/SKILL.md +0 -220
- package/src/config/bundled-skills/watcher/SKILL.md +0 -27
- package/src/config/bundled-skills/watcher/TOOLS.json +0 -147
- package/src/config/bundled-skills/watcher/tools/watcher-create.ts +0 -9
- package/src/config/bundled-skills/watcher/tools/watcher-delete.ts +0 -9
- package/src/config/bundled-skills/watcher/tools/watcher-digest.ts +0 -9
- package/src/config/bundled-skills/watcher/tools/watcher-list.ts +0 -9
- package/src/config/bundled-skills/watcher/tools/watcher-update.ts +0 -9
- package/src/config/bundled-skills/weather/SKILL.md +0 -37
- package/src/config/bundled-skills/weather/TOOLS.json +0 -32
- package/src/config/bundled-skills/weather/icon.svg +0 -24
- package/src/config/bundled-skills/weather/tools/get-weather.ts +0 -9
- package/src/config/computer-use-prompt.ts +0 -97
- package/src/config/defaults.ts +0 -258
- package/src/config/loader.ts +0 -339
- package/src/config/schema.ts +0 -1415
- package/src/config/skill-state.ts +0 -95
- package/src/config/skills.ts +0 -972
- package/src/config/system-prompt.ts +0 -675
- package/src/config/templates/BOOTSTRAP.md +0 -70
- package/src/config/templates/IDENTITY.md +0 -25
- package/src/config/templates/LOOKS.md +0 -25
- package/src/config/templates/SOUL.md +0 -37
- package/src/config/templates/USER.md +0 -19
- package/src/config/types.ts +0 -41
- package/src/config/vellum-skills/deploy-fullstack-vercel/SKILL.md +0 -179
- package/src/config/vellum-skills/document-writer/SKILL.md +0 -195
- package/src/config/vellum-skills/google-oauth-setup/SKILL.md +0 -199
- package/src/config/vellum-skills/slack-oauth-setup/SKILL.md +0 -153
- package/src/config/vellum-skills/telegram-setup/SKILL.md +0 -97
- package/src/contacts/contact-store.ts +0 -410
- package/src/contacts/index.ts +0 -11
- package/src/contacts/types.ts +0 -28
- package/src/context/token-estimator.ts +0 -108
- package/src/context/tool-result-truncation.ts +0 -128
- package/src/context/window-manager.ts +0 -531
- package/src/daemon/assistant-attachments.ts +0 -691
- package/src/daemon/classifier.ts +0 -110
- package/src/daemon/computer-use-session.ts +0 -903
- package/src/daemon/connection-policy.ts +0 -41
- package/src/daemon/date-context.ts +0 -136
- package/src/daemon/handlers/apps.ts +0 -530
- package/src/daemon/handlers/browser.ts +0 -54
- package/src/daemon/handlers/computer-use.ts +0 -187
- package/src/daemon/handlers/config.ts +0 -1226
- package/src/daemon/handlers/diagnostics.ts +0 -338
- package/src/daemon/handlers/documents.ts +0 -173
- package/src/daemon/handlers/home-base.ts +0 -78
- package/src/daemon/handlers/identity.ts +0 -127
- package/src/daemon/handlers/index.ts +0 -129
- package/src/daemon/handlers/misc.ts +0 -331
- package/src/daemon/handlers/open-bundle-handler.ts +0 -80
- package/src/daemon/handlers/publish.ts +0 -187
- package/src/daemon/handlers/sessions.ts +0 -555
- package/src/daemon/handlers/shared.ts +0 -570
- package/src/daemon/handlers/signing.ts +0 -37
- package/src/daemon/handlers/skills.ts +0 -486
- package/src/daemon/handlers/subagents.ts +0 -210
- package/src/daemon/handlers/twitter-auth.ts +0 -198
- package/src/daemon/handlers/work-items.ts +0 -632
- package/src/daemon/handlers/workspace-files.ts +0 -75
- package/src/daemon/handlers.ts +0 -17
- package/src/daemon/history-repair.ts +0 -214
- package/src/daemon/ipc-blob-store.ts +0 -231
- package/src/daemon/ipc-contract-inventory.json +0 -491
- package/src/daemon/ipc-contract-inventory.ts +0 -126
- package/src/daemon/ipc-contract.ts +0 -2510
- package/src/daemon/ipc-protocol.ts +0 -75
- package/src/daemon/ipc-validate.ts +0 -188
- package/src/daemon/lifecycle.ts +0 -582
- package/src/daemon/main.ts +0 -21
- package/src/daemon/media-visibility-policy.ts +0 -57
- package/src/daemon/ride-shotgun-handler.ts +0 -309
- package/src/daemon/server.ts +0 -1213
- package/src/daemon/session-agent-loop.ts +0 -922
- package/src/daemon/session-attachments.ts +0 -196
- package/src/daemon/session-conflict-gate.ts +0 -184
- package/src/daemon/session-dynamic-profile.ts +0 -63
- package/src/daemon/session-error.ts +0 -290
- package/src/daemon/session-evictor.ts +0 -196
- package/src/daemon/session-history.ts +0 -437
- package/src/daemon/session-lifecycle.ts +0 -147
- package/src/daemon/session-media-retry.ts +0 -147
- package/src/daemon/session-memory.ts +0 -212
- package/src/daemon/session-messaging.ts +0 -145
- package/src/daemon/session-notifiers.ts +0 -193
- package/src/daemon/session-process.ts +0 -323
- package/src/daemon/session-queue-manager.ts +0 -82
- package/src/daemon/session-runtime-assembly.ts +0 -447
- package/src/daemon/session-skill-tools.ts +0 -356
- package/src/daemon/session-slash.ts +0 -305
- package/src/daemon/session-surfaces.ts +0 -702
- package/src/daemon/session-tool-setup.ts +0 -523
- package/src/daemon/session-usage.ts +0 -72
- package/src/daemon/session-workspace.ts +0 -19
- package/src/daemon/session.ts +0 -400
- package/src/daemon/tls-certs.ts +0 -189
- package/src/daemon/trace-emitter.ts +0 -82
- package/src/daemon/video-thumbnail.ts +0 -62
- package/src/daemon/watch-handler.ts +0 -274
- package/src/doordash/client.ts +0 -999
- package/src/doordash/queries.ts +0 -1311
- package/src/doordash/query-extractor.ts +0 -93
- package/src/doordash/session.ts +0 -82
- package/src/email/provider.ts +0 -117
- package/src/email/providers/agentmail.ts +0 -317
- package/src/email/providers/index.ts +0 -58
- package/src/email/service.ts +0 -303
- package/src/email/types.ts +0 -126
- package/src/events/bus.ts +0 -157
- package/src/events/domain-events.ts +0 -83
- package/src/events/index.ts +0 -18
- package/src/events/tool-audit-listener.ts +0 -80
- package/src/events/tool-domain-event-publisher.ts +0 -111
- package/src/events/tool-metrics-listener.ts +0 -159
- package/src/events/tool-notification-listener.ts +0 -17
- package/src/events/tool-profiling-listener.ts +0 -158
- package/src/events/tool-trace-listener.ts +0 -75
- package/src/export/formatter.ts +0 -98
- package/src/followups/followup-store.ts +0 -168
- package/src/followups/index.ts +0 -10
- package/src/followups/types.ts +0 -29
- package/src/gallery/default-gallery.ts +0 -795
- package/src/gallery/gallery-manifest.ts +0 -24
- package/src/home-base/app-link-store.ts +0 -82
- package/src/home-base/bootstrap.ts +0 -68
- package/src/home-base/prebuilt/index.html +0 -662
- package/src/home-base/prebuilt/seed-metadata.json +0 -21
- package/src/home-base/prebuilt/seed.ts +0 -112
- package/src/home-base/prebuilt-home-base-updater.ts +0 -30
- package/src/hooks/cli.ts +0 -163
- package/src/hooks/config.ts +0 -88
- package/src/hooks/discovery.ts +0 -110
- package/src/hooks/manager.ts +0 -124
- package/src/hooks/runner.ts +0 -123
- package/src/hooks/templates.ts +0 -52
- package/src/hooks/types.ts +0 -72
- package/src/inbound/public-ingress-urls.ts +0 -123
- package/src/index.ts +0 -75
- package/src/instrument.ts +0 -60
- package/src/logfire.ts +0 -99
- package/src/media/gemini-image-service.ts +0 -136
- package/src/memory/account-store.ts +0 -108
- package/src/memory/admin.ts +0 -211
- package/src/memory/app-git-service.ts +0 -295
- package/src/memory/app-store.ts +0 -577
- package/src/memory/attachments-store.ts +0 -397
- package/src/memory/channel-delivery-store.ts +0 -353
- package/src/memory/checkpoints.ts +0 -52
- package/src/memory/clarification-resolver.ts +0 -298
- package/src/memory/conflict-intent.ts +0 -157
- package/src/memory/conflict-policy.ts +0 -73
- package/src/memory/conflict-store.ts +0 -350
- package/src/memory/contradiction-checker.ts +0 -358
- package/src/memory/conversation-key-store.ts +0 -122
- package/src/memory/conversation-store.ts +0 -470
- package/src/memory/db.ts +0 -1906
- package/src/memory/embedding-backend.ts +0 -229
- package/src/memory/embedding-gemini.ts +0 -52
- package/src/memory/embedding-local.ts +0 -65
- package/src/memory/embedding-ollama.ts +0 -55
- package/src/memory/embedding-openai.ts +0 -25
- package/src/memory/entity-extractor.ts +0 -474
- package/src/memory/external-conversation-store.ts +0 -234
- package/src/memory/fingerprint.ts +0 -20
- package/src/memory/indexer.ts +0 -156
- package/src/memory/items-extractor.ts +0 -461
- package/src/memory/job-handlers/backfill.ts +0 -139
- package/src/memory/job-handlers/cleanup.ts +0 -58
- package/src/memory/job-handlers/conflict.ts +0 -141
- package/src/memory/job-handlers/embedding.ts +0 -61
- package/src/memory/job-handlers/extraction.ts +0 -123
- package/src/memory/job-handlers/index-maintenance.ts +0 -54
- package/src/memory/job-handlers/summarization.ts +0 -286
- package/src/memory/job-utils.ts +0 -170
- package/src/memory/jobs-store.ts +0 -401
- package/src/memory/jobs-worker.ts +0 -313
- package/src/memory/llm-request-log-store.ts +0 -45
- package/src/memory/llm-usage-store.ts +0 -60
- package/src/memory/message-content.ts +0 -54
- package/src/memory/profile-compiler.ts +0 -160
- package/src/memory/published-pages-store.ts +0 -137
- package/src/memory/qdrant-client.ts +0 -366
- package/src/memory/qdrant-manager.ts +0 -242
- package/src/memory/query-builder.ts +0 -45
- package/src/memory/retrieval-budget.ts +0 -30
- package/src/memory/retriever.ts +0 -653
- package/src/memory/runs-store.ts +0 -302
- package/src/memory/schema.ts +0 -608
- package/src/memory/search/entity.ts +0 -298
- package/src/memory/search/formatting.ts +0 -207
- package/src/memory/search/lexical.ts +0 -227
- package/src/memory/search/ranking.ts +0 -401
- package/src/memory/search/semantic.ts +0 -121
- package/src/memory/search/types.ts +0 -137
- package/src/memory/segmenter.ts +0 -68
- package/src/memory/shared-app-links-store.ts +0 -138
- package/src/memory/tool-usage-store.ts +0 -62
- package/src/messaging/activity-analyzer.ts +0 -76
- package/src/messaging/draft-store.ts +0 -88
- package/src/messaging/index.ts +0 -3
- package/src/messaging/provider-types.ts +0 -80
- package/src/messaging/provider.ts +0 -52
- package/src/messaging/providers/gmail/adapter.ts +0 -193
- package/src/messaging/providers/gmail/client.ts +0 -204
- package/src/messaging/providers/gmail/types.ts +0 -90
- package/src/messaging/providers/slack/adapter.ts +0 -202
- package/src/messaging/providers/slack/client.ts +0 -198
- package/src/messaging/providers/slack/types.ts +0 -119
- package/src/messaging/providers/telegram-bot/adapter.ts +0 -162
- package/src/messaging/providers/telegram-bot/client.ts +0 -104
- package/src/messaging/providers/telegram-bot/types.ts +0 -15
- package/src/messaging/registry.ts +0 -35
- package/src/messaging/style-analyzer.ts +0 -159
- package/src/messaging/thread-summarizer.ts +0 -306
- package/src/messaging/triage-engine.ts +0 -323
- package/src/messaging/types.ts +0 -55
- package/src/permissions/checker.ts +0 -640
- package/src/permissions/defaults.ts +0 -254
- package/src/permissions/prompter.ts +0 -98
- package/src/permissions/secret-prompter.ts +0 -114
- package/src/permissions/shell-identity.ts +0 -227
- package/src/permissions/trust-store.ts +0 -607
- package/src/permissions/types.ts +0 -43
- package/src/permissions/workspace-policy.ts +0 -114
- package/src/playbooks/index.ts +0 -2
- package/src/playbooks/playbook-compiler.ts +0 -90
- package/src/playbooks/types.ts +0 -55
- package/src/providers/anthropic/client.ts +0 -751
- package/src/providers/failover.ts +0 -129
- package/src/providers/fireworks/client.ts +0 -20
- package/src/providers/gemini/client.ts +0 -285
- package/src/providers/ollama/client.ts +0 -30
- package/src/providers/openai/client.ts +0 -337
- package/src/providers/openrouter/client.ts +0 -20
- package/src/providers/ratelimit.ts +0 -93
- package/src/providers/registry.ts +0 -146
- package/src/providers/retry.ts +0 -81
- package/src/providers/stream-timeout.ts +0 -38
- package/src/providers/types.ts +0 -109
- package/src/runtime/assistant-event-hub.ts +0 -157
- package/src/runtime/assistant-event.ts +0 -82
- package/src/runtime/channel-approval-parser.ts +0 -60
- package/src/runtime/channel-approval-types.ts +0 -71
- package/src/runtime/channel-approvals.ts +0 -145
- package/src/runtime/gateway-client.ts +0 -58
- package/src/runtime/http-server.ts +0 -1076
- package/src/runtime/http-types.ts +0 -66
- package/src/runtime/routes/app-routes.ts +0 -174
- package/src/runtime/routes/attachment-routes.ts +0 -133
- package/src/runtime/routes/call-routes.ts +0 -190
- package/src/runtime/routes/channel-routes.ts +0 -662
- package/src/runtime/routes/conversation-routes.ts +0 -352
- package/src/runtime/routes/events-routes.ts +0 -148
- package/src/runtime/routes/run-routes.ts +0 -257
- package/src/runtime/routes/secret-routes.ts +0 -76
- package/src/runtime/run-orchestrator.ts +0 -293
- package/src/schedule/recurrence-engine.ts +0 -162
- package/src/schedule/recurrence-types.ts +0 -67
- package/src/schedule/schedule-store.ts +0 -506
- package/src/schedule/scheduler.ts +0 -171
- package/src/security/encrypted-store.ts +0 -238
- package/src/security/keychain.ts +0 -252
- package/src/security/oauth-callback-registry.ts +0 -66
- package/src/security/oauth2.ts +0 -274
- package/src/security/redaction.ts +0 -89
- package/src/security/secret-allowlist.ts +0 -164
- package/src/security/secret-ingress.ts +0 -57
- package/src/security/secret-scanner.ts +0 -550
- package/src/security/secure-keys.ts +0 -180
- package/src/security/token-manager.ts +0 -141
- package/src/services/published-app-updater.ts +0 -69
- package/src/services/vercel-deploy.ts +0 -73
- package/src/skills/active-skill-tools.ts +0 -81
- package/src/skills/clawhub.ts +0 -414
- package/src/skills/include-graph.ts +0 -146
- package/src/skills/managed-store.ts +0 -233
- package/src/skills/path-classifier.ts +0 -128
- package/src/skills/slash-commands.ts +0 -174
- package/src/skills/tool-manifest.ts +0 -165
- package/src/skills/version-hash.ts +0 -110
- package/src/slack/slack-webhook.ts +0 -61
- package/src/subagent/index.ts +0 -19
- package/src/subagent/manager.ts +0 -511
- package/src/subagent/types.ts +0 -69
- package/src/swarm/backend-claude-code.ts +0 -145
- package/src/swarm/index.ts +0 -44
- package/src/swarm/limits.ts +0 -37
- package/src/swarm/orchestrator.ts +0 -279
- package/src/swarm/plan-validator.ts +0 -151
- package/src/swarm/router-planner.ts +0 -100
- package/src/swarm/router-prompts.ts +0 -36
- package/src/swarm/synthesizer.ts +0 -62
- package/src/swarm/types.ts +0 -62
- package/src/swarm/worker-backend.ts +0 -121
- package/src/swarm/worker-prompts.ts +0 -79
- package/src/swarm/worker-runner.ts +0 -164
- package/src/tasks/SPEC.md +0 -139
- package/src/tasks/candidate-store.ts +0 -86
- package/src/tasks/ephemeral-permissions.ts +0 -48
- package/src/tasks/task-compiler.ts +0 -199
- package/src/tasks/task-runner.ts +0 -90
- package/src/tasks/task-scheduler.ts +0 -21
- package/src/tasks/task-store.ts +0 -127
- package/src/tasks/tool-sanitizer.ts +0 -36
- package/src/tools/apps/definitions.ts +0 -59
- package/src/tools/apps/executors.ts +0 -313
- package/src/tools/apps/open-proxy.ts +0 -43
- package/src/tools/apps/registry.ts +0 -16
- package/src/tools/assets/materialize.ts +0 -218
- package/src/tools/assets/search.ts +0 -361
- package/src/tools/browser/__tests__/auth-cache.test.ts +0 -219
- package/src/tools/browser/__tests__/auth-detector.test.ts +0 -362
- package/src/tools/browser/__tests__/jit-auth.test.ts +0 -189
- package/src/tools/browser/api-map.ts +0 -293
- package/src/tools/browser/auth-cache.ts +0 -149
- package/src/tools/browser/auth-detector.ts +0 -347
- package/src/tools/browser/auto-navigate.ts +0 -270
- package/src/tools/browser/browser-execution.ts +0 -980
- package/src/tools/browser/browser-handoff.ts +0 -79
- package/src/tools/browser/browser-manager.ts +0 -715
- package/src/tools/browser/browser-screencast.ts +0 -217
- package/src/tools/browser/headless-browser.ts +0 -450
- package/src/tools/browser/jit-auth.ts +0 -51
- package/src/tools/browser/network-recorder.ts +0 -349
- package/src/tools/browser/network-recording-types.ts +0 -49
- package/src/tools/browser/recording-store.ts +0 -49
- package/src/tools/browser/runtime-check.ts +0 -43
- package/src/tools/browser/x-auto-navigate.ts +0 -207
- package/src/tools/calls/call-end.ts +0 -67
- package/src/tools/calls/call-start.ts +0 -81
- package/src/tools/calls/call-status.ts +0 -81
- package/src/tools/claude-code/claude-code.ts +0 -428
- package/src/tools/computer-use/definitions.ts +0 -443
- package/src/tools/computer-use/registry.ts +0 -22
- package/src/tools/computer-use/request-computer-control.ts +0 -53
- package/src/tools/computer-use/skill-proxy-bridge.ts +0 -28
- package/src/tools/credentials/account-registry.ts +0 -127
- package/src/tools/credentials/broker-types.ts +0 -107
- package/src/tools/credentials/broker.ts +0 -372
- package/src/tools/credentials/domain-policy.ts +0 -51
- package/src/tools/credentials/host-pattern-match.ts +0 -60
- package/src/tools/credentials/metadata-store.ts +0 -335
- package/src/tools/credentials/policy-types.ts +0 -52
- package/src/tools/credentials/policy-validate.ts +0 -80
- package/src/tools/credentials/resolve.ts +0 -122
- package/src/tools/credentials/selection.ts +0 -159
- package/src/tools/credentials/tool-policy.ts +0 -25
- package/src/tools/credentials/vault.ts +0 -657
- package/src/tools/document/document-tool.ts +0 -92
- package/src/tools/document/editor-template.ts +0 -237
- package/src/tools/execution-target.ts +0 -21
- package/src/tools/execution-timeout.ts +0 -49
- package/src/tools/executor.ts +0 -815
- package/src/tools/filesystem/edit.ts +0 -127
- package/src/tools/filesystem/fuzzy-match.ts +0 -202
- package/src/tools/filesystem/read.ts +0 -71
- package/src/tools/filesystem/view-image.ts +0 -199
- package/src/tools/filesystem/write.ts +0 -79
- package/src/tools/followups/followup_create.ts +0 -76
- package/src/tools/followups/followup_list.ts +0 -60
- package/src/tools/followups/followup_resolve.ts +0 -56
- package/src/tools/host-filesystem/edit.ts +0 -125
- package/src/tools/host-filesystem/read.ts +0 -80
- package/src/tools/host-filesystem/write.ts +0 -76
- package/src/tools/host-terminal/cli-discover.ts +0 -180
- package/src/tools/host-terminal/host-shell.ts +0 -191
- package/src/tools/memory/definitions.ts +0 -69
- package/src/tools/memory/handlers.ts +0 -246
- package/src/tools/memory/register.ts +0 -66
- package/src/tools/network/__tests__/web-search.test.ts +0 -427
- package/src/tools/network/domain-normalize.ts +0 -85
- package/src/tools/network/script-proxy/__tests__/logging.test.ts +0 -248
- package/src/tools/network/script-proxy/__tests__/policy.test.ts +0 -234
- package/src/tools/network/script-proxy/__tests__/router.test.ts +0 -76
- package/src/tools/network/script-proxy/certs.ts +0 -237
- package/src/tools/network/script-proxy/connect-tunnel.ts +0 -82
- package/src/tools/network/script-proxy/http-forwarder.ts +0 -151
- package/src/tools/network/script-proxy/index.ts +0 -28
- package/src/tools/network/script-proxy/logging.ts +0 -196
- package/src/tools/network/script-proxy/mitm-handler.ts +0 -269
- package/src/tools/network/script-proxy/policy.ts +0 -152
- package/src/tools/network/script-proxy/router.ts +0 -60
- package/src/tools/network/script-proxy/server.ts +0 -136
- package/src/tools/network/script-proxy/session-manager.ts +0 -534
- package/src/tools/network/script-proxy/types.ts +0 -125
- package/src/tools/network/url-safety.ts +0 -227
- package/src/tools/network/web-fetch.ts +0 -713
- package/src/tools/network/web-search.ts +0 -296
- package/src/tools/policy-context.ts +0 -29
- package/src/tools/registry.ts +0 -295
- package/src/tools/reminder/reminder-store.ts +0 -148
- package/src/tools/reminder/reminder.ts +0 -80
- package/src/tools/schedule/create.ts +0 -81
- package/src/tools/schedule/delete.ts +0 -28
- package/src/tools/schedule/list.ts +0 -69
- package/src/tools/schedule/update.ts +0 -97
- package/src/tools/shared/filesystem/edit-engine.ts +0 -56
- package/src/tools/shared/filesystem/errors.ts +0 -85
- package/src/tools/shared/filesystem/file-ops-service.ts +0 -215
- package/src/tools/shared/filesystem/format-diff.ts +0 -35
- package/src/tools/shared/filesystem/path-policy.ts +0 -125
- package/src/tools/shared/filesystem/size-guard.ts +0 -41
- package/src/tools/shared/filesystem/types.ts +0 -80
- package/src/tools/shared/shell-output.ts +0 -52
- package/src/tools/skills/delete-managed.ts +0 -60
- package/src/tools/skills/load.ts +0 -139
- package/src/tools/skills/sandbox-runner.ts +0 -279
- package/src/tools/skills/scaffold-managed.ts +0 -150
- package/src/tools/skills/script-contract.ts +0 -6
- package/src/tools/skills/skill-script-runner.ts +0 -86
- package/src/tools/skills/skill-tool-factory.ts +0 -64
- package/src/tools/skills/vellum-catalog.ts +0 -217
- package/src/tools/subagent/abort.ts +0 -33
- package/src/tools/subagent/message.ts +0 -39
- package/src/tools/subagent/read.ts +0 -67
- package/src/tools/subagent/spawn.ts +0 -46
- package/src/tools/subagent/status.ts +0 -45
- package/src/tools/swarm/delegate.ts +0 -183
- package/src/tools/system/request-permission.ts +0 -98
- package/src/tools/system/version.ts +0 -43
- package/src/tools/tasks/index.ts +0 -27
- package/src/tools/tasks/task-delete.ts +0 -82
- package/src/tools/tasks/task-list.ts +0 -44
- package/src/tools/tasks/task-run.ts +0 -97
- package/src/tools/tasks/task-save.ts +0 -47
- package/src/tools/tasks/work-item-enqueue.ts +0 -234
- package/src/tools/tasks/work-item-list.ts +0 -55
- package/src/tools/tasks/work-item-remove.ts +0 -60
- package/src/tools/tasks/work-item-run.ts +0 -78
- package/src/tools/tasks/work-item-update.ts +0 -114
- package/src/tools/terminal/backends/docker.ts +0 -372
- package/src/tools/terminal/backends/native.ts +0 -190
- package/src/tools/terminal/backends/types.ts +0 -26
- package/src/tools/terminal/evaluate-typescript.ts +0 -275
- package/src/tools/terminal/parser.ts +0 -413
- package/src/tools/terminal/safe-env.ts +0 -37
- package/src/tools/terminal/sandbox-diagnostics.ts +0 -149
- package/src/tools/terminal/sandbox.ts +0 -44
- package/src/tools/terminal/shell.ts +0 -257
- package/src/tools/tool-manifest.ts +0 -198
- package/src/tools/types.ts +0 -176
- package/src/tools/ui-surface/definitions.ts +0 -244
- package/src/tools/ui-surface/registry.ts +0 -14
- package/src/tools/watch/screen-watch.ts +0 -130
- package/src/tools/watch/watch-state.ts +0 -119
- package/src/tools/watcher/create.ts +0 -64
- package/src/tools/watcher/delete.ts +0 -27
- package/src/tools/watcher/digest.ts +0 -50
- package/src/tools/watcher/list.ts +0 -60
- package/src/tools/watcher/update.ts +0 -56
- package/src/tools/weather/service.ts +0 -551
- package/src/twitter/client.ts +0 -690
- package/src/twitter/oauth-client.ts +0 -102
- package/src/twitter/router.ts +0 -101
- package/src/twitter/session.ts +0 -91
- package/src/usage/actors.ts +0 -24
- package/src/usage/types.ts +0 -37
- package/src/util/clipboard.ts +0 -33
- package/src/util/content-id.ts +0 -16
- package/src/util/debounce.ts +0 -88
- package/src/util/diff.ts +0 -181
- package/src/util/errors.ts +0 -129
- package/src/util/logger.ts +0 -243
- package/src/util/network-info.ts +0 -47
- package/src/util/platform.ts +0 -632
- package/src/util/pricing.ts +0 -150
- package/src/util/promise-guard.ts +0 -37
- package/src/util/retry.ts +0 -98
- package/src/util/spinner.ts +0 -51
- package/src/util/time.ts +0 -16
- package/src/util/truncate.ts +0 -6
- package/src/util/xml.ts +0 -4
- package/src/version.ts +0 -3
- package/src/watcher/constants.ts +0 -11
- package/src/watcher/engine.ts +0 -199
- package/src/watcher/provider-registry.ts +0 -15
- package/src/watcher/provider-types.ts +0 -48
- package/src/watcher/providers/gmail.ts +0 -198
- package/src/watcher/providers/google-calendar.ts +0 -228
- package/src/watcher/providers/slack.ts +0 -129
- package/src/watcher/watcher-store.ts +0 -419
- package/src/work-items/work-item-runner.ts +0 -171
- package/src/work-items/work-item-store.ts +0 -325
- package/src/workspace/commit-message-enrichment-service.ts +0 -284
- package/src/workspace/commit-message-provider.ts +0 -95
- package/src/workspace/git-service.ts +0 -857
- package/src/workspace/heartbeat-service.ts +0 -345
- package/src/workspace/provider-commit-message-generator.ts +0 -285
- package/src/workspace/top-level-renderer.ts +0 -19
- package/src/workspace/top-level-scanner.ts +0 -41
- package/src/workspace/turn-commit.ts +0 -175
- package/tsconfig.json +0 -21
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Creates an AbortController that auto-aborts after `timeoutMs`, optionally
|
|
3
|
-
* linked to an external AbortSignal so cancellation propagates both ways.
|
|
4
|
-
*
|
|
5
|
-
* Returns a `signal` to pass to the provider SDK and a `cleanup` function
|
|
6
|
-
* that MUST be called in a finally block to clear the timer and detach
|
|
7
|
-
* the external signal listener.
|
|
8
|
-
*/
|
|
9
|
-
export function createStreamTimeout(
|
|
10
|
-
timeoutMs: number,
|
|
11
|
-
externalSignal?: AbortSignal,
|
|
12
|
-
): { signal: AbortSignal; cleanup: () => void } {
|
|
13
|
-
const controller = new AbortController();
|
|
14
|
-
|
|
15
|
-
const handle = setTimeout(() => {
|
|
16
|
-
controller.abort(new Error(`Provider stream timed out after ${timeoutMs / 1000}s`));
|
|
17
|
-
}, timeoutMs);
|
|
18
|
-
|
|
19
|
-
const onExternalAbort = () => {
|
|
20
|
-
controller.abort(externalSignal!.reason);
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
if (externalSignal) {
|
|
24
|
-
if (externalSignal.aborted) {
|
|
25
|
-
clearTimeout(handle);
|
|
26
|
-
controller.abort(externalSignal.reason);
|
|
27
|
-
} else {
|
|
28
|
-
externalSignal.addEventListener('abort', onExternalAbort, { once: true });
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
const cleanup = () => {
|
|
33
|
-
clearTimeout(handle);
|
|
34
|
-
externalSignal?.removeEventListener('abort', onExternalAbort);
|
|
35
|
-
};
|
|
36
|
-
|
|
37
|
-
return { signal: controller.signal, cleanup };
|
|
38
|
-
}
|
package/src/providers/types.ts
DELETED
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
export interface TextContent {
|
|
2
|
-
type: "text";
|
|
3
|
-
text: string;
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
export interface ImageContent {
|
|
7
|
-
type: "image";
|
|
8
|
-
source: {
|
|
9
|
-
type: "base64";
|
|
10
|
-
media_type: string;
|
|
11
|
-
data: string;
|
|
12
|
-
};
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
export interface FileContent {
|
|
16
|
-
type: "file";
|
|
17
|
-
source: {
|
|
18
|
-
type: "base64";
|
|
19
|
-
media_type: string;
|
|
20
|
-
data: string;
|
|
21
|
-
filename: string;
|
|
22
|
-
};
|
|
23
|
-
extracted_text?: string;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
export interface ToolUseContent {
|
|
27
|
-
type: "tool_use";
|
|
28
|
-
id: string;
|
|
29
|
-
name: string;
|
|
30
|
-
input: Record<string, unknown>;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
export interface ThinkingContent {
|
|
34
|
-
type: "thinking";
|
|
35
|
-
thinking: string;
|
|
36
|
-
signature: string;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
export interface RedactedThinkingContent {
|
|
40
|
-
type: "redacted_thinking";
|
|
41
|
-
data: string;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
export interface ToolResultContent {
|
|
45
|
-
type: "tool_result";
|
|
46
|
-
tool_use_id: string;
|
|
47
|
-
content: string;
|
|
48
|
-
is_error?: boolean;
|
|
49
|
-
/** Rich content blocks (e.g. images) to include alongside text in the tool result. */
|
|
50
|
-
contentBlocks?: ContentBlock[];
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
export type ContentBlock =
|
|
54
|
-
| TextContent
|
|
55
|
-
| ThinkingContent
|
|
56
|
-
| RedactedThinkingContent
|
|
57
|
-
| ImageContent
|
|
58
|
-
| FileContent
|
|
59
|
-
| ToolUseContent
|
|
60
|
-
| ToolResultContent;
|
|
61
|
-
|
|
62
|
-
export interface Message {
|
|
63
|
-
role: "user" | "assistant";
|
|
64
|
-
content: ContentBlock[];
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
export interface ToolDefinition {
|
|
68
|
-
name: string;
|
|
69
|
-
description: string;
|
|
70
|
-
input_schema: object;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
export interface ProviderResponse {
|
|
74
|
-
content: ContentBlock[];
|
|
75
|
-
model: string;
|
|
76
|
-
usage: {
|
|
77
|
-
/** Total input tokens (input_tokens + cache_creation + cache_read). */
|
|
78
|
-
inputTokens: number;
|
|
79
|
-
outputTokens: number;
|
|
80
|
-
cacheCreationInputTokens?: number;
|
|
81
|
-
cacheReadInputTokens?: number;
|
|
82
|
-
};
|
|
83
|
-
stopReason: string;
|
|
84
|
-
/** Raw JSON request body sent to the provider (for diagnostics logging). */
|
|
85
|
-
rawRequest?: unknown;
|
|
86
|
-
/** Raw JSON response body received from the provider (for diagnostics logging). */
|
|
87
|
-
rawResponse?: unknown;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
export type ProviderEvent =
|
|
91
|
-
| { type: 'text_delta'; text: string }
|
|
92
|
-
| { type: 'thinking_delta'; thinking: string }
|
|
93
|
-
| { type: 'input_json_delta'; toolName: string; accumulatedJson: string };
|
|
94
|
-
|
|
95
|
-
export interface SendMessageOptions {
|
|
96
|
-
config?: object;
|
|
97
|
-
onEvent?: (event: ProviderEvent) => void;
|
|
98
|
-
signal?: AbortSignal;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
export interface Provider {
|
|
102
|
-
name: string;
|
|
103
|
-
sendMessage(
|
|
104
|
-
messages: Message[],
|
|
105
|
-
tools?: ToolDefinition[],
|
|
106
|
-
systemPrompt?: string,
|
|
107
|
-
options?: SendMessageOptions,
|
|
108
|
-
): Promise<ProviderResponse>;
|
|
109
|
-
}
|
|
@@ -1,157 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* In-process pub/sub hub for assistant events.
|
|
3
|
-
*
|
|
4
|
-
* Provides subscribe / publish primitives used by both the IPC daemon send
|
|
5
|
-
* paths (PR 3) and the SSE route (PR 5). No runtime route or daemon
|
|
6
|
-
* integration is wired here.
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
import type { AssistantEvent } from './assistant-event.js';
|
|
10
|
-
|
|
11
|
-
// ── Types ─────────────────────────────────────────────────────────────────────
|
|
12
|
-
|
|
13
|
-
/** Predicate that determines whether a subscriber wants a given event. */
|
|
14
|
-
export type AssistantEventFilter = {
|
|
15
|
-
/** Only deliver events for this assistant. */
|
|
16
|
-
assistantId: string;
|
|
17
|
-
/** When set, further restrict to this session. */
|
|
18
|
-
sessionId?: string;
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
export type AssistantEventCallback = (event: AssistantEvent) => void | Promise<void>;
|
|
22
|
-
|
|
23
|
-
/** Opaque handle returned by `subscribe`. Call `dispose()` to remove the subscription. */
|
|
24
|
-
export interface AssistantEventSubscription {
|
|
25
|
-
dispose(): void;
|
|
26
|
-
/** True until `dispose()` has been called. */
|
|
27
|
-
readonly active: boolean;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
// ── Hub ───────────────────────────────────────────────────────────────────────
|
|
31
|
-
|
|
32
|
-
interface SubscriberEntry {
|
|
33
|
-
filter: AssistantEventFilter;
|
|
34
|
-
callback: AssistantEventCallback;
|
|
35
|
-
active: boolean;
|
|
36
|
-
/** Called by the hub when this entry is evicted to make room for a new subscriber. */
|
|
37
|
-
onEvict?: () => void;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* Lightweight pub/sub hub for `AssistantEvent` messages.
|
|
42
|
-
*
|
|
43
|
-
* Filtering is applied at subscription level — subscribers receive only
|
|
44
|
-
* events that match their `assistantId` (and optionally `sessionId`).
|
|
45
|
-
*
|
|
46
|
-
* The hub is intentionally simple: synchronous fanout, no buffering, no
|
|
47
|
-
* backpressure. Slow-consumer protection lives in the SSE route (PR 7).
|
|
48
|
-
*/
|
|
49
|
-
export class AssistantEventHub {
|
|
50
|
-
private readonly subscribers = new Set<SubscriberEntry>();
|
|
51
|
-
private readonly maxSubscribers: number;
|
|
52
|
-
|
|
53
|
-
constructor(options?: { maxSubscribers?: number }) {
|
|
54
|
-
this.maxSubscribers = options?.maxSubscribers ?? Infinity;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* Register a subscriber that will be called for each matching event.
|
|
59
|
-
*
|
|
60
|
-
* When the subscriber cap (`maxSubscribers`) has been reached, the **oldest**
|
|
61
|
-
* subscriber is evicted to make room: its `onEvict` callback is invoked (so
|
|
62
|
-
* it can close its SSE stream) and its entry is removed from the hub.
|
|
63
|
-
*
|
|
64
|
-
* The only case that throws is when `maxSubscribers` is 0 — there is nothing
|
|
65
|
-
* to evict and no room to add.
|
|
66
|
-
*
|
|
67
|
-
* @param options.onEvict Called if this subscriber is later evicted by a newer one.
|
|
68
|
-
* @returns A subscription handle. Call `dispose()` to unsubscribe.
|
|
69
|
-
*/
|
|
70
|
-
subscribe(
|
|
71
|
-
filter: AssistantEventFilter,
|
|
72
|
-
callback: AssistantEventCallback,
|
|
73
|
-
options?: { onEvict?: () => void },
|
|
74
|
-
): AssistantEventSubscription {
|
|
75
|
-
if (this.subscribers.size >= this.maxSubscribers) {
|
|
76
|
-
// Evict the oldest subscriber (Sets maintain insertion order).
|
|
77
|
-
const [oldest] = this.subscribers;
|
|
78
|
-
if (!oldest) {
|
|
79
|
-
// maxSubscribers is 0 — nothing to evict, nothing to add.
|
|
80
|
-
throw new RangeError(
|
|
81
|
-
`AssistantEventHub: subscriber cap reached (${this.maxSubscribers})`,
|
|
82
|
-
);
|
|
83
|
-
}
|
|
84
|
-
oldest.active = false;
|
|
85
|
-
this.subscribers.delete(oldest);
|
|
86
|
-
try { oldest.onEvict?.(); } catch { /* ignore eviction callback errors */ }
|
|
87
|
-
}
|
|
88
|
-
const entry: SubscriberEntry = { filter, callback, active: true, onEvict: options?.onEvict };
|
|
89
|
-
this.subscribers.add(entry);
|
|
90
|
-
|
|
91
|
-
return {
|
|
92
|
-
dispose: () => {
|
|
93
|
-
if (entry.active) {
|
|
94
|
-
entry.active = false;
|
|
95
|
-
this.subscribers.delete(entry);
|
|
96
|
-
}
|
|
97
|
-
},
|
|
98
|
-
get active() {
|
|
99
|
-
return entry.active;
|
|
100
|
-
},
|
|
101
|
-
};
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
/**
|
|
105
|
-
* Publish an event to all matching subscribers.
|
|
106
|
-
*
|
|
107
|
-
* Matching rules:
|
|
108
|
-
* - `event.assistantId` must equal `filter.assistantId`
|
|
109
|
-
* - if `filter.sessionId` is set, `event.sessionId` must equal it
|
|
110
|
-
*
|
|
111
|
-
* Fanout is isolated: a throwing or rejecting subscriber does not abort
|
|
112
|
-
* delivery to remaining subscribers. All callbacks (sync and async) are
|
|
113
|
-
* awaited and their errors collected; any errors are re-thrown together
|
|
114
|
-
* as an `AggregateError` after all callbacks have been invoked.
|
|
115
|
-
*
|
|
116
|
-
* Subscribers are snapshotted at the start of each publish call so that
|
|
117
|
-
* callbacks adding new subscriptions do not receive the in-flight event.
|
|
118
|
-
*/
|
|
119
|
-
async publish(event: AssistantEvent): Promise<void> {
|
|
120
|
-
const snapshot = Array.from(this.subscribers);
|
|
121
|
-
const errors: unknown[] = [];
|
|
122
|
-
|
|
123
|
-
for (const entry of snapshot) {
|
|
124
|
-
if (!entry.active) continue;
|
|
125
|
-
if (entry.filter.assistantId !== event.assistantId) continue;
|
|
126
|
-
if (entry.filter.sessionId != null && entry.filter.sessionId !== event.sessionId) continue;
|
|
127
|
-
try {
|
|
128
|
-
await entry.callback(event);
|
|
129
|
-
} catch (err) {
|
|
130
|
-
errors.push(err);
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
if (errors.length > 0) {
|
|
135
|
-
throw new AggregateError(errors, 'One or more assistant-event subscribers threw');
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
/** Number of currently active subscribers (useful for tests and caps). */
|
|
140
|
-
subscriberCount(): number {
|
|
141
|
-
return this.subscribers.size;
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
/** Returns true if the hub can accept a subscriber without evicting anyone. */
|
|
145
|
-
hasCapacity(): boolean {
|
|
146
|
-
return this.subscribers.size < this.maxSubscribers;
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
// ── Process-level singleton ───────────────────────────────────────────────────
|
|
151
|
-
|
|
152
|
-
/**
|
|
153
|
-
* Singleton hub shared across the entire runtime process.
|
|
154
|
-
*
|
|
155
|
-
* Import and use this in daemon send paths (PR 3) and the SSE route (PR 5).
|
|
156
|
-
*/
|
|
157
|
-
export const assistantEventHub = new AssistantEventHub({ maxSubscribers: 100 });
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Assistant Events — shared types and SSE framing helpers.
|
|
3
|
-
*
|
|
4
|
-
* Fully isolated from daemon/runtime orchestration logic.
|
|
5
|
-
* Import this module from any layer that needs to produce or consume
|
|
6
|
-
* assistant events without creating circular dependencies.
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
import { randomUUID } from 'node:crypto';
|
|
10
|
-
import type { ServerMessage } from '../daemon/ipc-protocol.js';
|
|
11
|
-
|
|
12
|
-
// ── Types ─────────────────────────────────────────────────────────────────────
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* A single assistant event wrapping an IPC ServerMessage payload.
|
|
16
|
-
* The `message` field is intentionally unchanged from the IPC form so that
|
|
17
|
-
* delta semantics (text deltas, tool input deltas, etc.) are preserved.
|
|
18
|
-
*/
|
|
19
|
-
export interface AssistantEvent {
|
|
20
|
-
/** Globally unique event identifier (UUID). */
|
|
21
|
-
id: string;
|
|
22
|
-
/** The assistant this event belongs to. */
|
|
23
|
-
assistantId: string;
|
|
24
|
-
/** Resolved conversation/session id when available. */
|
|
25
|
-
sessionId?: string;
|
|
26
|
-
/** ISO-8601 timestamp of when the event was emitted. */
|
|
27
|
-
emittedAt: string;
|
|
28
|
-
/** Unchanged IPC outbound message payload. */
|
|
29
|
-
message: ServerMessage;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
// ── Factory ───────────────────────────────────────────────────────────────────
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* Construct an `AssistantEvent` envelope around a `ServerMessage`.
|
|
36
|
-
*
|
|
37
|
-
* @param assistantId The logical assistant identifier (e.g. from the daemon or HTTP route).
|
|
38
|
-
* @param message The unchanged IPC outbound message payload.
|
|
39
|
-
* @param sessionId Optional conversation/session id — pass when known.
|
|
40
|
-
*/
|
|
41
|
-
export function buildAssistantEvent(
|
|
42
|
-
assistantId: string,
|
|
43
|
-
message: ServerMessage,
|
|
44
|
-
sessionId?: string,
|
|
45
|
-
): AssistantEvent {
|
|
46
|
-
return {
|
|
47
|
-
id: randomUUID(),
|
|
48
|
-
assistantId,
|
|
49
|
-
sessionId,
|
|
50
|
-
emittedAt: new Date().toISOString(),
|
|
51
|
-
message,
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
// ── SSE framing ───────────────────────────────────────────────────────────────
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* Format an AssistantEvent as a Server-Sent Events frame.
|
|
59
|
-
*
|
|
60
|
-
* The SSE spec (https://html.spec.whatwg.org/multipage/server-sent-events.html)
|
|
61
|
-
* requires each field on its own line with a trailing blank line.
|
|
62
|
-
*
|
|
63
|
-
* ```
|
|
64
|
-
* event: assistant_event\n
|
|
65
|
-
* id: <event.id>\n
|
|
66
|
-
* data: <JSON>\n
|
|
67
|
-
* \n
|
|
68
|
-
* ```
|
|
69
|
-
*/
|
|
70
|
-
export function formatSseFrame(event: AssistantEvent): string {
|
|
71
|
-
const sanitizedId = event.id.replace(/[\n\r]/g, '');
|
|
72
|
-
const data = JSON.stringify(event);
|
|
73
|
-
return `event: assistant_event\nid: ${sanitizedId}\ndata: ${data}\n\n`;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
/**
|
|
77
|
-
* Format a keep-alive SSE comment.
|
|
78
|
-
* Clients should ignore comment lines (`:`) per the SSE spec.
|
|
79
|
-
*/
|
|
80
|
-
export function formatSseHeartbeat(): string {
|
|
81
|
-
return ': heartbeat\n\n';
|
|
82
|
-
}
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Channel-agnostic plain-text approval decision parser.
|
|
3
|
-
*
|
|
4
|
-
* Parses inbound user text to determine whether it matches an approval,
|
|
5
|
-
* rejection, or "approve always" intent. This module is transport-agnostic
|
|
6
|
-
* and can be used by any channel adapter (Telegram, SMS, etc.).
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
import type { ApprovalAction, ApprovalDecisionResult } from './channel-approval-types.js';
|
|
10
|
-
|
|
11
|
-
// ---------------------------------------------------------------------------
|
|
12
|
-
// Phrase → action mapping
|
|
13
|
-
// ---------------------------------------------------------------------------
|
|
14
|
-
|
|
15
|
-
const APPROVE_ONCE_PHRASES = ['yes', 'approve', 'allow', 'go ahead'];
|
|
16
|
-
const APPROVE_ALWAYS_PHRASES = ['always', 'approve always', 'allow always'];
|
|
17
|
-
const REJECT_PHRASES = ['no', 'reject', 'deny', 'cancel'];
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* Build a Map from lowercased phrase to action. "Approve always" phrases
|
|
21
|
-
* are checked first (longest-match-wins) because "approve" is a prefix
|
|
22
|
-
* of "approve always".
|
|
23
|
-
*/
|
|
24
|
-
function buildPhraseMap(): Map<string, ApprovalAction> {
|
|
25
|
-
const map = new Map<string, ApprovalAction>();
|
|
26
|
-
|
|
27
|
-
// Insert longer phrases first so iteration order does not matter —
|
|
28
|
-
// we match on exact equality after normalising, not prefix matching.
|
|
29
|
-
for (const phrase of APPROVE_ALWAYS_PHRASES) {
|
|
30
|
-
map.set(phrase, 'approve_always');
|
|
31
|
-
}
|
|
32
|
-
for (const phrase of APPROVE_ONCE_PHRASES) {
|
|
33
|
-
map.set(phrase, 'approve_once');
|
|
34
|
-
}
|
|
35
|
-
for (const phrase of REJECT_PHRASES) {
|
|
36
|
-
map.set(phrase, 'reject');
|
|
37
|
-
}
|
|
38
|
-
return map;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
const PHRASE_MAP = buildPhraseMap();
|
|
42
|
-
|
|
43
|
-
// ---------------------------------------------------------------------------
|
|
44
|
-
// Public API
|
|
45
|
-
// ---------------------------------------------------------------------------
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* Parse a plain-text message into an approval decision.
|
|
49
|
-
*
|
|
50
|
-
* Returns a structured `ApprovalDecisionResult` if the text matches one
|
|
51
|
-
* of the known intent phrases, or `null` if it does not match.
|
|
52
|
-
*
|
|
53
|
-
* Matching is case-insensitive with leading/trailing whitespace trimmed.
|
|
54
|
-
*/
|
|
55
|
-
export function parseApprovalDecision(text: string): ApprovalDecisionResult | null {
|
|
56
|
-
const normalised = text.trim().toLowerCase();
|
|
57
|
-
const action = PHRASE_MAP.get(normalised);
|
|
58
|
-
if (!action) return null;
|
|
59
|
-
return { action, source: 'plain_text' };
|
|
60
|
-
}
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Channel-agnostic approval flow types.
|
|
3
|
-
*
|
|
4
|
-
* These types model the approval prompt/decision lifecycle for tool-use
|
|
5
|
-
* confirmations surfaced through external channels (Telegram, SMS, etc.).
|
|
6
|
-
* They are intentionally decoupled from any specific channel so that the
|
|
7
|
-
* same approval flow can be reused across transports.
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
// ---------------------------------------------------------------------------
|
|
11
|
-
// Approval actions
|
|
12
|
-
// ---------------------------------------------------------------------------
|
|
13
|
-
|
|
14
|
-
/** The set of actions a user can take on an approval prompt. */
|
|
15
|
-
export type ApprovalAction = 'approve_once' | 'approve_always' | 'reject';
|
|
16
|
-
|
|
17
|
-
/** An action presented to the user as a tappable button or text option. */
|
|
18
|
-
export interface ApprovalActionOption {
|
|
19
|
-
id: ApprovalAction;
|
|
20
|
-
label: string;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
/** Default action options presented to users across all channels. */
|
|
24
|
-
export const DEFAULT_APPROVAL_ACTIONS: readonly ApprovalActionOption[] = [
|
|
25
|
-
{ id: 'approve_once', label: 'Approve once' },
|
|
26
|
-
{ id: 'approve_always', label: 'Approve always' },
|
|
27
|
-
{ id: 'reject', label: 'Reject' },
|
|
28
|
-
] as const;
|
|
29
|
-
|
|
30
|
-
// ---------------------------------------------------------------------------
|
|
31
|
-
// Approval prompt
|
|
32
|
-
// ---------------------------------------------------------------------------
|
|
33
|
-
|
|
34
|
-
/** The approval prompt model sent to users via a channel. */
|
|
35
|
-
export interface ChannelApprovalPrompt {
|
|
36
|
-
/** Human-readable description of what is being approved. */
|
|
37
|
-
promptText: string;
|
|
38
|
-
/** Available actions the user can take. */
|
|
39
|
-
actions: ApprovalActionOption[];
|
|
40
|
-
/** Instruction text for channels that only support plain text (no buttons). */
|
|
41
|
-
plainTextFallback: string;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
// ---------------------------------------------------------------------------
|
|
45
|
-
// Approval UI metadata (gateway callback payload)
|
|
46
|
-
// ---------------------------------------------------------------------------
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* Metadata attached to gateway callback payloads so the channel adapter
|
|
50
|
-
* can render approval UI and route the user's decision back to the
|
|
51
|
-
* correct pending run.
|
|
52
|
-
*/
|
|
53
|
-
export interface ApprovalUIMetadata {
|
|
54
|
-
runId: string;
|
|
55
|
-
requestId: string;
|
|
56
|
-
actions: ApprovalActionOption[];
|
|
57
|
-
plainTextFallback: string;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
// ---------------------------------------------------------------------------
|
|
61
|
-
// Decision result
|
|
62
|
-
// ---------------------------------------------------------------------------
|
|
63
|
-
|
|
64
|
-
/** How the user communicated their decision. */
|
|
65
|
-
export type ApprovalDecisionSource = 'telegram_button' | 'plain_text';
|
|
66
|
-
|
|
67
|
-
/** The structured result of a user's approval decision. */
|
|
68
|
-
export interface ApprovalDecisionResult {
|
|
69
|
-
action: ApprovalAction;
|
|
70
|
-
source: ApprovalDecisionSource;
|
|
71
|
-
}
|
|
@@ -1,145 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Channel-agnostic approval orchestration module.
|
|
3
|
-
*
|
|
4
|
-
* Bridges the gap between external channel adapters (Telegram, SMS, etc.)
|
|
5
|
-
* and the internal run orchestrator / permission system:
|
|
6
|
-
*
|
|
7
|
-
* 1. Detect pending confirmations for a conversation
|
|
8
|
-
* 2. Build human-readable approval prompts with action buttons
|
|
9
|
-
* 3. Consume user decisions and apply them to the underlying run
|
|
10
|
-
* 4. Build reminder prompts when non-decision messages arrive
|
|
11
|
-
*/
|
|
12
|
-
|
|
13
|
-
import { getPendingConfirmationsByConversation, getRun } from '../memory/runs-store.js';
|
|
14
|
-
import type { PendingRunInfo } from '../memory/runs-store.js';
|
|
15
|
-
import { addRule } from '../permissions/trust-store.js';
|
|
16
|
-
import type { RunOrchestrator } from './run-orchestrator.js';
|
|
17
|
-
import { DEFAULT_APPROVAL_ACTIONS } from './channel-approval-types.js';
|
|
18
|
-
import type {
|
|
19
|
-
ChannelApprovalPrompt,
|
|
20
|
-
ApprovalUIMetadata,
|
|
21
|
-
ApprovalDecisionResult,
|
|
22
|
-
} from './channel-approval-types.js';
|
|
23
|
-
|
|
24
|
-
// ---------------------------------------------------------------------------
|
|
25
|
-
// 1. Detect pending confirmations and build prompt
|
|
26
|
-
// ---------------------------------------------------------------------------
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* Check whether a conversation has a pending tool-use confirmation and,
|
|
30
|
-
* if so, build a human-readable approval prompt.
|
|
31
|
-
*
|
|
32
|
-
* Returns `null` when there is nothing waiting for approval.
|
|
33
|
-
*/
|
|
34
|
-
export function getChannelApprovalPrompt(
|
|
35
|
-
conversationId: string,
|
|
36
|
-
): ChannelApprovalPrompt | null {
|
|
37
|
-
const pending = getPendingConfirmationsByConversation(conversationId);
|
|
38
|
-
if (pending.length === 0) return null;
|
|
39
|
-
|
|
40
|
-
// Use the first pending run — channel UIs show one prompt at a time.
|
|
41
|
-
const info = pending[0];
|
|
42
|
-
return buildPromptFromRunInfo(info);
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* Internal helper: turn a PendingRunInfo into a ChannelApprovalPrompt.
|
|
47
|
-
*/
|
|
48
|
-
function buildPromptFromRunInfo(info: PendingRunInfo): ChannelApprovalPrompt {
|
|
49
|
-
const promptText = `The assistant wants to use the tool "${info.toolName}". Do you want to allow this?`;
|
|
50
|
-
const actions = [...DEFAULT_APPROVAL_ACTIONS];
|
|
51
|
-
const plainTextFallback =
|
|
52
|
-
`${promptText}\n\nReply "yes" to approve once, "always" to approve always, or "no" to reject.`;
|
|
53
|
-
|
|
54
|
-
return { promptText, actions, plainTextFallback };
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
// ---------------------------------------------------------------------------
|
|
58
|
-
// 2. Build gateway-facing UI metadata
|
|
59
|
-
// ---------------------------------------------------------------------------
|
|
60
|
-
|
|
61
|
-
/**
|
|
62
|
-
* Convert a prompt + run info into the `ApprovalUIMetadata` payload that
|
|
63
|
-
* gateway adapters use to render buttons and route decisions back.
|
|
64
|
-
*/
|
|
65
|
-
export function buildApprovalUIMetadata(
|
|
66
|
-
prompt: ChannelApprovalPrompt,
|
|
67
|
-
runInfo: PendingRunInfo,
|
|
68
|
-
): ApprovalUIMetadata {
|
|
69
|
-
return {
|
|
70
|
-
runId: runInfo.runId,
|
|
71
|
-
requestId: runInfo.requestId,
|
|
72
|
-
actions: prompt.actions,
|
|
73
|
-
plainTextFallback: prompt.plainTextFallback,
|
|
74
|
-
};
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
// ---------------------------------------------------------------------------
|
|
78
|
-
// 3. Consume a user decision and apply it to the run
|
|
79
|
-
// ---------------------------------------------------------------------------
|
|
80
|
-
|
|
81
|
-
export interface HandleDecisionResult {
|
|
82
|
-
applied: boolean;
|
|
83
|
-
runId?: string;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
/**
|
|
87
|
-
* Find the pending run for a conversation, map the user's decision to the
|
|
88
|
-
* permission system's vocabulary, and apply it.
|
|
89
|
-
*
|
|
90
|
-
* For `approve_always`, a trust rule is persisted using the first allowlist
|
|
91
|
-
* option and first scope option from the pending confirmation (narrow
|
|
92
|
-
* default). The current invocation is also approved.
|
|
93
|
-
*/
|
|
94
|
-
export function handleChannelDecision(
|
|
95
|
-
conversationId: string,
|
|
96
|
-
decision: ApprovalDecisionResult,
|
|
97
|
-
orchestrator: RunOrchestrator,
|
|
98
|
-
): HandleDecisionResult {
|
|
99
|
-
const pending = getPendingConfirmationsByConversation(conversationId);
|
|
100
|
-
if (pending.length === 0) return { applied: false };
|
|
101
|
-
|
|
102
|
-
const info = pending[0];
|
|
103
|
-
|
|
104
|
-
if (decision.action === 'approve_always') {
|
|
105
|
-
// Persist a trust rule so future invocations of this tool are auto-approved.
|
|
106
|
-
const run = getRun(info.runId);
|
|
107
|
-
const confirmation = run?.pendingConfirmation;
|
|
108
|
-
if (confirmation) {
|
|
109
|
-
const pattern = confirmation.allowlistOptions?.[0]?.pattern ?? '**';
|
|
110
|
-
const scope = confirmation.scopeOptions?.[0]?.scope ?? 'everywhere';
|
|
111
|
-
addRule(confirmation.toolName, pattern, scope, 'allow', 100, {
|
|
112
|
-
executionTarget: confirmation.executionTarget,
|
|
113
|
-
});
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
// Map channel-level action to the permission system's UserDecision type.
|
|
118
|
-
const userDecision = decision.action === 'reject' ? 'deny' as const : 'allow' as const;
|
|
119
|
-
const result = orchestrator.submitDecision(info.runId, userDecision);
|
|
120
|
-
|
|
121
|
-
return {
|
|
122
|
-
applied: result === 'applied',
|
|
123
|
-
runId: info.runId,
|
|
124
|
-
};
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
// ---------------------------------------------------------------------------
|
|
128
|
-
// 4. Reminder prompt for non-decision messages
|
|
129
|
-
// ---------------------------------------------------------------------------
|
|
130
|
-
|
|
131
|
-
/**
|
|
132
|
-
* Build a reminder prompt when the user sends a non-decision message while
|
|
133
|
-
* an approval is pending. Reuses the original actions and fallback text
|
|
134
|
-
* but prefixes the prompt text with a reminder.
|
|
135
|
-
*/
|
|
136
|
-
export function buildReminderPrompt(
|
|
137
|
-
pendingPrompt: ChannelApprovalPrompt,
|
|
138
|
-
): ChannelApprovalPrompt {
|
|
139
|
-
const reminderPrefix = "I'm still waiting for your decision on the previous request.";
|
|
140
|
-
return {
|
|
141
|
-
promptText: `${reminderPrefix}\n\n${pendingPrompt.promptText}`,
|
|
142
|
-
actions: pendingPrompt.actions,
|
|
143
|
-
plainTextFallback: `${reminderPrefix}\n\n${pendingPrompt.plainTextFallback}`,
|
|
144
|
-
};
|
|
145
|
-
}
|