vellum 0.2.13 → 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 -169
- 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 -2316
- 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-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__/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 -425
- package/src/__tests__/call-constants.test.ts +0 -40
- package/src/__tests__/call-orchestrator.test.ts +0 -512
- package/src/__tests__/call-recovery.test.ts +0 -518
- package/src/__tests__/call-routes-http.test.ts +0 -459
- 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__/checker.test.ts +0 -3960
- 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 -81
- 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 -1343
- package/src/__tests__/conflict-store.test.ts +0 -330
- 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 -216
- 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 -567
- package/src/__tests__/credential-selection.test.ts +0 -354
- 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 -209
- 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 -312
- 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__/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 -436
- 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-cu-observation-blob.test.ts +0 -351
- package/src/__tests__/handlers-ipc-blob-probe.test.ts +0 -190
- package/src/__tests__/handlers-slack-config.test.ts +0 -199
- package/src/__tests__/handlers-task-submit-slash.test.ts +0 -38
- package/src/__tests__/handlers-twitter-config.test.ts +0 -718
- 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 -178
- 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 -104
- package/src/__tests__/host-file-read-tool.test.ts +0 -61
- package/src/__tests__/host-file-write-tool.test.ts +0 -77
- package/src/__tests__/host-shell-tool.test.ts +0 -311
- 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 -1698
- package/src/__tests__/ipc-validate.test.ts +0 -357
- package/src/__tests__/key-migration.test.ts +0 -183
- 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 -4336
- 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 -85
- 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-tools.test.ts +0 -342
- 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 -222
- package/src/__tests__/ratelimit.test.ts +0 -297
- package/src/__tests__/recurrence-engine-rruleset.test.ts +0 -78
- package/src/__tests__/recurrence-engine.test.ts +0 -69
- package/src/__tests__/recurrence-types.test.ts +0 -71
- 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 -273
- 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 -482
- package/src/__tests__/schedule-tools.test.ts +0 -700
- package/src/__tests__/scheduler-recurrence.test.ts +0 -329
- 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 -229
- package/src/__tests__/secret-ingress-handler.test.ts +0 -99
- 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 -857
- 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 -700
- 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 -462
- 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-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-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 -328
- 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 -218
- 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-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__/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.test.ts +0 -2055
- package/src/__tests__/tool-metrics-listener.test.ts +0 -225
- package/src/__tests__/tool-notification-listener.test.ts +0 -49
- 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 -2031
- package/src/__tests__/turn-commit.test.ts +0 -554
- package/src/__tests__/twilio-provider.test.ts +0 -179
- package/src/__tests__/twilio-routes-twiml.test.ts +0 -127
- package/src/__tests__/twilio-routes.test.ts +0 -822
- package/src/__tests__/twitter-auth-handler.test.ts +0 -666
- 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/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 -95
- package/src/calls/call-constants.ts +0 -48
- package/src/calls/call-domain.ts +0 -278
- package/src/calls/call-orchestrator.ts +0 -412
- 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 -416
- package/src/calls/elevenlabs-client.ts +0 -89
- package/src/calls/elevenlabs-config.ts +0 -29
- 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 -178
- package/src/calls/twilio-routes.ts +0 -316
- package/src/calls/types.ts +0 -37
- package/src/calls/voice-provider.ts +0 -14
- package/src/calls/voice-quality.ts +0 -92
- 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 -575
- package/src/cli.ts +0 -937
- 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 -9
- package/src/config/bundled-skills/contacts/tools/contact-search.ts +0 -9
- package/src/config/bundled-skills/contacts/tools/contact-upsert.ts +0 -9
- 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 -130
- 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 -29
- package/src/config/bundled-skills/messaging/tools/messaging-search.ts +0 -22
- package/src/config/bundled-skills/messaging/tools/messaging-send.ts +0 -27
- package/src/config/bundled-skills/messaging/tools/shared.ts +0 -71
- 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 -414
- 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 -9
- package/src/config/bundled-skills/playbooks/tools/playbook-delete.ts +0 -9
- package/src/config/bundled-skills/playbooks/tools/playbook-list.ts +0 -9
- package/src/config/bundled-skills/playbooks/tools/playbook-update.ts +0 -9
- package/src/config/bundled-skills/public-ingress/SKILL.md +0 -183
- 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 -134
- 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 -252
- package/src/config/loader.ts +0 -339
- package/src/config/schema.ts +0 -1356
- 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 -40
- 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 -102
- 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 -689
- 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 -461
- package/src/daemon/handlers/browser.ts +0 -54
- package/src/daemon/handlers/computer-use.ts +0 -187
- package/src/daemon/handlers/config.ts +0 -707
- 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 -128
- 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 -539
- package/src/daemon/handlers/shared.ts +0 -569
- package/src/daemon/handlers/signing.ts +0 -37
- package/src/daemon/handlers/skills.ts +0 -501
- 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 -463
- package/src/daemon/ipc-contract-inventory.ts +0 -126
- package/src/daemon/ipc-contract.ts +0 -2352
- package/src/daemon/ipc-protocol.ts +0 -75
- package/src/daemon/ipc-validate.ts +0 -171
- package/src/daemon/lifecycle.ts +0 -580
- 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 -1207
- 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 -128
- 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 -264
- 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 -524
- 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/trace-emitter.ts +0 -82
- package/src/daemon/video-thumbnail.ts +0 -60
- 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 -128
- 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-store.ts +0 -556
- 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 -114
- package/src/memory/conflict-store.ts +0 -342
- package/src/memory/contradiction-checker.ts +0 -330
- package/src/memory/conversation-key-store.ts +0 -107
- package/src/memory/conversation-store.ts +0 -470
- package/src/memory/db.ts +0 -1825
- package/src/memory/embedding-backend.ts +0 -229
- package/src/memory/embedding-gemini.ts +0 -52
- package/src/memory/embedding-local.ts +0 -75
- 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/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 -121
- 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 -274
- 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 -255
- package/src/memory/schema.ts +0 -588
- 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 -43
- 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/registry.ts +0 -34
- 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 -636
- package/src/permissions/defaults.ts +0 -254
- package/src/permissions/prompter.ts +0 -102
- package/src/permissions/secret-prompter.ts +0 -114
- package/src/permissions/trust-store.ts +0 -584
- package/src/permissions/types.ts +0 -62
- 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 -106
- package/src/providers/stream-timeout.ts +0 -38
- package/src/providers/types.ts +0 -109
- package/src/runtime/assistant-event-hub.ts +0 -120
- package/src/runtime/assistant-event.ts +0 -82
- package/src/runtime/gateway-client.ts +0 -42
- package/src/runtime/http-server.ts +0 -1056
- 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 -140
- package/src/runtime/routes/channel-routes.ts +0 -382
- package/src/runtime/routes/conversation-routes.ts +0 -352
- package/src/runtime/routes/events-routes.ts +0 -79
- package/src/runtime/routes/run-routes.ts +0 -262
- package/src/runtime/routes/secret-routes.ts +0 -76
- package/src/runtime/run-orchestrator.ts +0 -296
- package/src/schedule/recurrence-engine.ts +0 -138
- package/src/schedule/recurrence-types.ts +0 -67
- package/src/schedule/schedule-store.ts +0 -497
- 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 -543
- 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 -50
- package/src/tasks/task-compiler.ts +0 -199
- package/src/tasks/task-runner.ts +0 -90
- package/src/tasks/task-scheduler.ts +0 -20
- 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 -73
- 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/contacts/contact-merge.ts +0 -55
- package/src/tools/contacts/contact-search.ts +0 -58
- package/src/tools/contacts/contact-upsert.ts +0 -64
- 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/executor.ts +0 -944
- 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 -319
- package/src/tools/playbooks/index.ts +0 -4
- package/src/tools/playbooks/playbook-create.ts +0 -96
- package/src/tools/playbooks/playbook-delete.ts +0 -52
- package/src/tools/playbooks/playbook-list.ts +0 -74
- package/src/tools/playbooks/playbook-update.ts +0 -111
- 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 -90
- 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 -415
- 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 -183
- 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/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/diff.ts +0 -181
- package/src/util/errors.ts +0 -129
- package/src/util/logger.ts +0 -243
- package/src/util/platform.ts +0 -607
- package/src/util/pricing.ts +0 -150
- 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 -840
- 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
package/src/daemon/lifecycle.ts
DELETED
|
@@ -1,580 +0,0 @@
|
|
|
1
|
-
import { spawn } from 'node:child_process';
|
|
2
|
-
import { randomBytes } from 'node:crypto';
|
|
3
|
-
import { mkdirSync, readFileSync, writeFileSync, unlinkSync, existsSync, openSync, closeSync, chmodSync } from 'node:fs';
|
|
4
|
-
import { createRequire } from 'node:module';
|
|
5
|
-
import { dirname, join, resolve } from 'node:path';
|
|
6
|
-
import { config as dotenvConfig } from 'dotenv';
|
|
7
|
-
import * as Sentry from '@sentry/node';
|
|
8
|
-
import {
|
|
9
|
-
getInterfacesDir,
|
|
10
|
-
getSocketPath,
|
|
11
|
-
getPidPath,
|
|
12
|
-
getHttpTokenPath,
|
|
13
|
-
getRootDir,
|
|
14
|
-
ensureDataDir,
|
|
15
|
-
migrateToDataLayout,
|
|
16
|
-
migrateToWorkspaceLayout,
|
|
17
|
-
removeSocketFile,
|
|
18
|
-
} from '../util/platform.js';
|
|
19
|
-
import { initializeDb } from '../memory/db.js';
|
|
20
|
-
import { rotateToolInvocations } from '../memory/tool-usage-store.js';
|
|
21
|
-
import { initializeProviders } from '../providers/registry.js';
|
|
22
|
-
import { initializeTools } from '../tools/registry.js';
|
|
23
|
-
import { loadConfig } from '../config/loader.js';
|
|
24
|
-
import { ensurePromptFiles } from '../config/system-prompt.js';
|
|
25
|
-
import { loadPrebuiltHtml } from '../home-base/prebuilt/seed.js';
|
|
26
|
-
import { DaemonServer } from './server.js';
|
|
27
|
-
import { listWorkItems, updateWorkItem } from '../work-items/work-item-store.js';
|
|
28
|
-
import { getLogger, initLogger } from '../util/logger.js';
|
|
29
|
-
import { DaemonError } from '../util/errors.js';
|
|
30
|
-
import { initSentry } from '../instrument.js';
|
|
31
|
-
import { initLogfire } from '../logfire.js';
|
|
32
|
-
import { startMemoryJobsWorker } from '../memory/jobs-worker.js';
|
|
33
|
-
import { QdrantManager } from '../memory/qdrant-manager.js';
|
|
34
|
-
import { initQdrantClient } from '../memory/qdrant-client.js';
|
|
35
|
-
import { startScheduler } from '../schedule/scheduler.js';
|
|
36
|
-
import { initWatcherEngine } from '../watcher/engine.js';
|
|
37
|
-
import { registerWatcherProvider } from '../watcher/provider-registry.js';
|
|
38
|
-
import { gmailProvider } from '../watcher/providers/gmail.js';
|
|
39
|
-
import { googleCalendarProvider } from '../watcher/providers/google-calendar.js';
|
|
40
|
-
import { slackProvider as slackWatcherProvider } from '../watcher/providers/slack.js';
|
|
41
|
-
import { registerMessagingProvider } from '../messaging/registry.js';
|
|
42
|
-
import { slackProvider as slackMessagingProvider } from '../messaging/providers/slack/adapter.js';
|
|
43
|
-
import { gmailMessagingProvider } from '../messaging/providers/gmail/adapter.js';
|
|
44
|
-
import { browserManager } from '../tools/browser/browser-manager.js';
|
|
45
|
-
import { RuntimeHttpServer } from '../runtime/http-server.js';
|
|
46
|
-
import { getHookManager } from '../hooks/manager.js';
|
|
47
|
-
import { installTemplates } from '../hooks/templates.js';
|
|
48
|
-
import { HeartbeatService } from '../workspace/heartbeat-service.js';
|
|
49
|
-
import { AgentHeartbeatService } from '../agent-heartbeat/agent-heartbeat-service.js';
|
|
50
|
-
import { getEnrichmentService } from '../workspace/commit-message-enrichment-service.js';
|
|
51
|
-
import { reconcileCallsOnStartup } from '../calls/call-recovery.js';
|
|
52
|
-
import { TwilioConversationRelayProvider } from '../calls/twilio-provider.js';
|
|
53
|
-
|
|
54
|
-
const log = getLogger('lifecycle');
|
|
55
|
-
|
|
56
|
-
function isProcessRunning(pid: number): boolean {
|
|
57
|
-
try {
|
|
58
|
-
process.kill(pid, 0);
|
|
59
|
-
return true;
|
|
60
|
-
} catch {
|
|
61
|
-
return false;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
function readPid(): number | null {
|
|
66
|
-
const pidPath = getPidPath();
|
|
67
|
-
if (!existsSync(pidPath)) return null;
|
|
68
|
-
try {
|
|
69
|
-
const pid = parseInt(readFileSync(pidPath, 'utf-8').trim(), 10);
|
|
70
|
-
return isNaN(pid) ? null : pid;
|
|
71
|
-
} catch {
|
|
72
|
-
return null;
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
function writePid(pid: number): void {
|
|
77
|
-
writeFileSync(getPidPath(), String(pid));
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
function cleanupPidFile(): void {
|
|
81
|
-
const pidPath = getPidPath();
|
|
82
|
-
if (existsSync(pidPath)) {
|
|
83
|
-
unlinkSync(pidPath);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
export function isDaemonRunning(): boolean {
|
|
88
|
-
const pid = readPid();
|
|
89
|
-
if (pid === null) return false;
|
|
90
|
-
if (!isProcessRunning(pid)) {
|
|
91
|
-
// Stale PID file
|
|
92
|
-
cleanupPidFile();
|
|
93
|
-
return false;
|
|
94
|
-
}
|
|
95
|
-
return true;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
export function getDaemonStatus(): { running: boolean; pid?: number } {
|
|
99
|
-
const pid = readPid();
|
|
100
|
-
if (pid === null) return { running: false };
|
|
101
|
-
if (!isProcessRunning(pid)) {
|
|
102
|
-
cleanupPidFile();
|
|
103
|
-
return { running: false };
|
|
104
|
-
}
|
|
105
|
-
return { running: true, pid };
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
export async function startDaemon(): Promise<{
|
|
109
|
-
pid: number;
|
|
110
|
-
alreadyRunning: boolean;
|
|
111
|
-
}> {
|
|
112
|
-
const status = getDaemonStatus();
|
|
113
|
-
if (status.running && status.pid) {
|
|
114
|
-
return { pid: status.pid, alreadyRunning: true };
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
// Only create the root dir for socket/PID — the daemon process itself
|
|
118
|
-
// handles migration + full ensureDataDir() in runDaemon(). Calling
|
|
119
|
-
// ensureDataDir() here would pre-create workspace destination dirs
|
|
120
|
-
// and cause migration moves to no-op.
|
|
121
|
-
const rootDir = getRootDir();
|
|
122
|
-
if (!existsSync(rootDir)) {
|
|
123
|
-
mkdirSync(rootDir, { recursive: true });
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
// Clean up stale socket (only if it's actually a Unix socket)
|
|
127
|
-
const socketPath = getSocketPath();
|
|
128
|
-
removeSocketFile(socketPath);
|
|
129
|
-
|
|
130
|
-
// Spawn the daemon as a detached child process
|
|
131
|
-
const mainPath = resolve(
|
|
132
|
-
import.meta.dirname ?? __dirname,
|
|
133
|
-
'main.ts',
|
|
134
|
-
);
|
|
135
|
-
|
|
136
|
-
// Redirect the child's stderr to a file instead of piping it back to the
|
|
137
|
-
// parent. A pipe's read end is destroyed when the parent exits, leaving
|
|
138
|
-
// fd 2 broken in the child. Bun (unlike Node.js) does not ignore SIGPIPE,
|
|
139
|
-
// so any later stderr write would silently kill the daemon.
|
|
140
|
-
const stderrPath = join(rootDir, 'daemon-stderr.log');
|
|
141
|
-
const stderrFd = openSync(stderrPath, 'w');
|
|
142
|
-
|
|
143
|
-
const child = spawn('bun', ['run', mainPath], {
|
|
144
|
-
detached: true,
|
|
145
|
-
stdio: ['ignore', 'ignore', stderrFd],
|
|
146
|
-
env: { ...process.env },
|
|
147
|
-
});
|
|
148
|
-
|
|
149
|
-
// The child inherited the fd; close the parent's copy.
|
|
150
|
-
closeSync(stderrFd);
|
|
151
|
-
|
|
152
|
-
let childExited = false;
|
|
153
|
-
let childExitCode: number | null = null;
|
|
154
|
-
child.on('exit', (code) => {
|
|
155
|
-
childExited = true;
|
|
156
|
-
childExitCode = code;
|
|
157
|
-
});
|
|
158
|
-
|
|
159
|
-
child.unref();
|
|
160
|
-
|
|
161
|
-
const pid = child.pid;
|
|
162
|
-
if (!pid) {
|
|
163
|
-
throw new DaemonError('Failed to start daemon: no PID returned');
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
writePid(pid);
|
|
167
|
-
|
|
168
|
-
// Wait for socket to appear
|
|
169
|
-
const maxWait = 5000;
|
|
170
|
-
const interval = 100;
|
|
171
|
-
let waited = 0;
|
|
172
|
-
while (waited < maxWait) {
|
|
173
|
-
if (existsSync(socketPath)) {
|
|
174
|
-
return { pid, alreadyRunning: false };
|
|
175
|
-
}
|
|
176
|
-
if (childExited) {
|
|
177
|
-
cleanupPidFile();
|
|
178
|
-
const stderr = readFileSync(stderrPath, 'utf-8').trim();
|
|
179
|
-
const detail = stderr
|
|
180
|
-
? `\n${stderr}`
|
|
181
|
-
: `\nCheck logs at ~/.vellum/workspace/data/logs/ for details.`;
|
|
182
|
-
throw new DaemonError(
|
|
183
|
-
`Daemon exited immediately (code ${childExitCode ?? 'unknown'}).${detail}`,
|
|
184
|
-
);
|
|
185
|
-
}
|
|
186
|
-
await new Promise((r) => setTimeout(r, interval));
|
|
187
|
-
waited += interval;
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
throw new DaemonError(
|
|
191
|
-
'Daemon started but socket not available after 5 seconds',
|
|
192
|
-
);
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
export type StopResult =
|
|
196
|
-
| { stopped: true }
|
|
197
|
-
| { stopped: false; reason: 'not_running' | 'stop_failed' };
|
|
198
|
-
|
|
199
|
-
export async function stopDaemon(): Promise<StopResult> {
|
|
200
|
-
const pid = readPid();
|
|
201
|
-
if (pid === null || !isProcessRunning(pid)) {
|
|
202
|
-
cleanupPidFile();
|
|
203
|
-
return { stopped: false, reason: 'not_running' };
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
process.kill(pid, 'SIGTERM');
|
|
207
|
-
|
|
208
|
-
// Wait for process to exit
|
|
209
|
-
const maxWait = 5000;
|
|
210
|
-
const interval = 100;
|
|
211
|
-
let waited = 0;
|
|
212
|
-
while (waited < maxWait) {
|
|
213
|
-
if (!isProcessRunning(pid)) {
|
|
214
|
-
cleanupPidFile();
|
|
215
|
-
return { stopped: true };
|
|
216
|
-
}
|
|
217
|
-
await new Promise((r) => setTimeout(r, interval));
|
|
218
|
-
waited += interval;
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
// Force kill
|
|
222
|
-
try {
|
|
223
|
-
process.kill(pid, 'SIGKILL');
|
|
224
|
-
} catch (err) {
|
|
225
|
-
log.debug({ err, pid }, 'SIGKILL failed, process already exited');
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
// Wait for the process to actually die after SIGKILL. Without this,
|
|
229
|
-
// startDaemon() can race with the dying process's shutdown handler,
|
|
230
|
-
// which removes the socket file and bricks the new daemon.
|
|
231
|
-
const killMaxWait = 2000;
|
|
232
|
-
let killWaited = 0;
|
|
233
|
-
while (killWaited < killMaxWait && isProcessRunning(pid)) {
|
|
234
|
-
await new Promise((r) => setTimeout(r, 100));
|
|
235
|
-
killWaited += 100;
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
// Only clean up if the process has actually exited.
|
|
239
|
-
// If it's still alive after SIGKILL + timeout, preserve both socket
|
|
240
|
-
// and PID file so isDaemonRunning() still reports true and prevents
|
|
241
|
-
// a duplicate daemon from being spawned.
|
|
242
|
-
if (!isProcessRunning(pid)) {
|
|
243
|
-
removeSocketFile(getSocketPath());
|
|
244
|
-
cleanupPidFile();
|
|
245
|
-
return { stopped: true };
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
log.warn({ pid }, 'Daemon process still running after SIGKILL + timeout, leaving socket and PID file intact');
|
|
249
|
-
return { stopped: false, reason: 'stop_failed' };
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
export async function ensureDaemonRunning(): Promise<void> {
|
|
253
|
-
if (isDaemonRunning()) return;
|
|
254
|
-
await startDaemon();
|
|
255
|
-
}
|
|
256
|
-
|
|
257
|
-
function loadDotEnv(): void {
|
|
258
|
-
dotenvConfig({ path: join(getRootDir(), '.env'), quiet: true });
|
|
259
|
-
}
|
|
260
|
-
|
|
261
|
-
// Entry point for the daemon process itself
|
|
262
|
-
export async function runDaemon(): Promise<void> {
|
|
263
|
-
loadDotEnv();
|
|
264
|
-
initSentry();
|
|
265
|
-
await initLogfire();
|
|
266
|
-
|
|
267
|
-
// Migration order matters: first move legacy flat files into the data dir
|
|
268
|
-
// structure, then relocate the data dir into the active workspace, and
|
|
269
|
-
// finally create any directories that don't yet exist.
|
|
270
|
-
migrateToDataLayout();
|
|
271
|
-
migrateToWorkspaceLayout();
|
|
272
|
-
ensureDataDir();
|
|
273
|
-
|
|
274
|
-
log.info('Daemon startup: migrations complete');
|
|
275
|
-
|
|
276
|
-
// Seed the TUI main-window interface from the CLI package's DefaultMainScreen
|
|
277
|
-
// component so the remote runtime can serve it without the old INTERFACES_SEED
|
|
278
|
-
// environment variable.
|
|
279
|
-
const tuiDir = join(getInterfacesDir(), 'tui');
|
|
280
|
-
const mainWindowPath = join(tuiDir, 'main-window.tsx');
|
|
281
|
-
if (!existsSync(mainWindowPath)) {
|
|
282
|
-
try {
|
|
283
|
-
const require = createRequire(import.meta.url);
|
|
284
|
-
const cliPkgPath = require.resolve('@vellumai/cli/package.json');
|
|
285
|
-
const cliRoot = dirname(cliPkgPath);
|
|
286
|
-
const source = readFileSync(join(cliRoot, 'src', 'components', 'DefaultMainScreen.tsx'), 'utf-8');
|
|
287
|
-
mkdirSync(tuiDir, { recursive: true });
|
|
288
|
-
writeFileSync(mainWindowPath, source);
|
|
289
|
-
log.info('Seeded tui/main-window.tsx from @vellumai/cli');
|
|
290
|
-
} catch (err) {
|
|
291
|
-
log.warn({ err }, 'Could not seed tui/main-window.tsx from CLI package');
|
|
292
|
-
}
|
|
293
|
-
}
|
|
294
|
-
|
|
295
|
-
// Seed the vellum-desktop interface from the prebuilt Home Base HTML if it
|
|
296
|
-
// doesn't already exist. This ensures the Home tab renders immediately
|
|
297
|
-
// on first launch for both local and remote hatches.
|
|
298
|
-
const desktopIndexPath = join(getInterfacesDir(), 'vellum-desktop', 'index.html');
|
|
299
|
-
if (!existsSync(desktopIndexPath)) {
|
|
300
|
-
const prebuiltHtml = loadPrebuiltHtml();
|
|
301
|
-
if (prebuiltHtml) {
|
|
302
|
-
mkdirSync(join(getInterfacesDir(), 'vellum-desktop'), { recursive: true });
|
|
303
|
-
writeFileSync(desktopIndexPath, prebuiltHtml);
|
|
304
|
-
log.info('Seeded vellum-desktop/index.html from prebuilt Home Base');
|
|
305
|
-
} else {
|
|
306
|
-
log.warn('Could not seed vellum-desktop/index.html — prebuilt HTML not found (missing embedded index.html in home-base/prebuilt/)');
|
|
307
|
-
}
|
|
308
|
-
}
|
|
309
|
-
|
|
310
|
-
log.info('Daemon startup: installing templates and initializing DB');
|
|
311
|
-
installTemplates();
|
|
312
|
-
ensurePromptFiles();
|
|
313
|
-
initializeDb();
|
|
314
|
-
log.info('Daemon startup: DB initialized');
|
|
315
|
-
|
|
316
|
-
// Recover orphaned work items that were left in 'running' state when the
|
|
317
|
-
// daemon previously crashed or was killed mid-task.
|
|
318
|
-
const orphanedRunning = listWorkItems({ status: 'running' });
|
|
319
|
-
if (orphanedRunning.length > 0) {
|
|
320
|
-
for (const item of orphanedRunning) {
|
|
321
|
-
updateWorkItem(item.id, { status: 'failed', lastRunStatus: 'interrupted' });
|
|
322
|
-
log.info({ workItemId: item.id, title: item.title }, 'Recovered orphaned running work item → failed (interrupted)');
|
|
323
|
-
}
|
|
324
|
-
log.info({ count: orphanedRunning.length }, 'Recovered orphaned running work items');
|
|
325
|
-
}
|
|
326
|
-
|
|
327
|
-
// Reconcile in-flight calls that were left in non-terminal states
|
|
328
|
-
// after a daemon crash or restart.
|
|
329
|
-
try {
|
|
330
|
-
const twilioProvider = new TwilioConversationRelayProvider();
|
|
331
|
-
await reconcileCallsOnStartup(twilioProvider, log);
|
|
332
|
-
} catch (err) {
|
|
333
|
-
log.warn({ err }, 'Call recovery failed — continuing startup');
|
|
334
|
-
}
|
|
335
|
-
|
|
336
|
-
log.info('Daemon startup: loading config');
|
|
337
|
-
const config = loadConfig();
|
|
338
|
-
|
|
339
|
-
if (config.logFile.dir) {
|
|
340
|
-
initLogger({ dir: config.logFile.dir, retentionDays: config.logFile.retentionDays });
|
|
341
|
-
}
|
|
342
|
-
|
|
343
|
-
log.info('Daemon startup: initializing providers and tools');
|
|
344
|
-
initializeProviders(config);
|
|
345
|
-
await initializeTools();
|
|
346
|
-
log.info('Daemon startup: providers and tools initialized');
|
|
347
|
-
|
|
348
|
-
// Start the IPC socket BEFORE Qdrant so that clients can connect
|
|
349
|
-
// immediately. Qdrant startup can take 30+ seconds (binary download,
|
|
350
|
-
// /readyz polling) which previously blocked the socket from appearing.
|
|
351
|
-
log.info('Daemon startup: starting DaemonServer (IPC socket)');
|
|
352
|
-
const server = new DaemonServer();
|
|
353
|
-
await server.start();
|
|
354
|
-
log.info('Daemon startup: DaemonServer started');
|
|
355
|
-
|
|
356
|
-
// Initialize Qdrant vector store — non-fatal so the daemon stays up without it
|
|
357
|
-
const qdrantUrl = process.env.QDRANT_URL?.trim() || config.memory.qdrant.url;
|
|
358
|
-
log.info({ qdrantUrl }, 'Daemon startup: initializing Qdrant');
|
|
359
|
-
const qdrantManager = new QdrantManager({
|
|
360
|
-
url: qdrantUrl,
|
|
361
|
-
});
|
|
362
|
-
try {
|
|
363
|
-
await qdrantManager.start();
|
|
364
|
-
initQdrantClient({
|
|
365
|
-
url: qdrantUrl,
|
|
366
|
-
collection: config.memory.qdrant.collection,
|
|
367
|
-
vectorSize: config.memory.qdrant.vectorSize,
|
|
368
|
-
onDisk: config.memory.qdrant.onDisk,
|
|
369
|
-
quantization: config.memory.qdrant.quantization,
|
|
370
|
-
});
|
|
371
|
-
log.info('Qdrant vector store initialized');
|
|
372
|
-
} catch (err) {
|
|
373
|
-
log.warn({ err }, 'Qdrant failed to start — memory features will be unavailable');
|
|
374
|
-
}
|
|
375
|
-
|
|
376
|
-
log.info('Daemon startup: starting memory worker');
|
|
377
|
-
const memoryWorker = startMemoryJobsWorker();
|
|
378
|
-
// Initialize watcher engine and register providers
|
|
379
|
-
registerWatcherProvider(gmailProvider);
|
|
380
|
-
registerWatcherProvider(googleCalendarProvider);
|
|
381
|
-
registerWatcherProvider(slackWatcherProvider);
|
|
382
|
-
initWatcherEngine();
|
|
383
|
-
|
|
384
|
-
// Register messaging providers
|
|
385
|
-
registerMessagingProvider(slackMessagingProvider);
|
|
386
|
-
registerMessagingProvider(gmailMessagingProvider);
|
|
387
|
-
|
|
388
|
-
const scheduler = startScheduler(
|
|
389
|
-
async (conversationId, message) => {
|
|
390
|
-
await server.processMessage(conversationId, message);
|
|
391
|
-
},
|
|
392
|
-
(reminder) => {
|
|
393
|
-
server.broadcast({
|
|
394
|
-
type: 'reminder_fired',
|
|
395
|
-
reminderId: reminder.id,
|
|
396
|
-
label: reminder.label,
|
|
397
|
-
message: reminder.message,
|
|
398
|
-
});
|
|
399
|
-
},
|
|
400
|
-
(schedule) => {
|
|
401
|
-
server.broadcast({
|
|
402
|
-
type: 'schedule_complete',
|
|
403
|
-
scheduleId: schedule.id,
|
|
404
|
-
name: schedule.name,
|
|
405
|
-
});
|
|
406
|
-
},
|
|
407
|
-
(notification) => {
|
|
408
|
-
server.broadcast({
|
|
409
|
-
type: 'watcher_notification',
|
|
410
|
-
title: notification.title,
|
|
411
|
-
body: notification.body,
|
|
412
|
-
});
|
|
413
|
-
},
|
|
414
|
-
(params) => {
|
|
415
|
-
server.broadcast({
|
|
416
|
-
type: 'watcher_escalation',
|
|
417
|
-
title: params.title,
|
|
418
|
-
body: params.body,
|
|
419
|
-
});
|
|
420
|
-
},
|
|
421
|
-
);
|
|
422
|
-
|
|
423
|
-
// Start optional runtime HTTP server when RUNTIME_HTTP_PORT is set
|
|
424
|
-
let runtimeHttp: RuntimeHttpServer | null = null;
|
|
425
|
-
const httpPortEnv = process.env.RUNTIME_HTTP_PORT;
|
|
426
|
-
log.info({ httpPortEnv }, 'Daemon startup: checking RUNTIME_HTTP_PORT');
|
|
427
|
-
if (httpPortEnv) {
|
|
428
|
-
const port = parseInt(httpPortEnv, 10);
|
|
429
|
-
if (!isNaN(port) && port > 0) {
|
|
430
|
-
// Use an explicit env var if provided; otherwise generate a fresh
|
|
431
|
-
// random token. Either way, write it to disk so HTTP clients and
|
|
432
|
-
// the gateway can authenticate.
|
|
433
|
-
const bearerToken = process.env.RUNTIME_PROXY_BEARER_TOKEN || randomBytes(32).toString('hex');
|
|
434
|
-
const httpTokenPath = getHttpTokenPath();
|
|
435
|
-
writeFileSync(httpTokenPath, bearerToken, { mode: 0o600 });
|
|
436
|
-
chmodSync(httpTokenPath, 0o600);
|
|
437
|
-
|
|
438
|
-
const hostname = process.env.RUNTIME_HTTP_HOST?.trim() || '127.0.0.1';
|
|
439
|
-
|
|
440
|
-
runtimeHttp = new RuntimeHttpServer({
|
|
441
|
-
port,
|
|
442
|
-
hostname,
|
|
443
|
-
bearerToken,
|
|
444
|
-
processMessage: (conversationId, content, attachmentIds, options, sourceChannel) =>
|
|
445
|
-
server.processMessage(conversationId, content, attachmentIds, options, sourceChannel),
|
|
446
|
-
persistAndProcessMessage: (conversationId, content, attachmentIds, options, sourceChannel) =>
|
|
447
|
-
server.persistAndProcessMessage(conversationId, content, attachmentIds, options, sourceChannel),
|
|
448
|
-
runOrchestrator: server.createRunOrchestrator(),
|
|
449
|
-
interfacesDir: getInterfacesDir(),
|
|
450
|
-
});
|
|
451
|
-
try {
|
|
452
|
-
log.info({ port, hostname }, 'Daemon startup: starting runtime HTTP server');
|
|
453
|
-
await runtimeHttp.start();
|
|
454
|
-
server.setHttpPort(port);
|
|
455
|
-
log.info({ port, hostname }, 'Daemon startup: runtime HTTP server listening');
|
|
456
|
-
} catch (err) {
|
|
457
|
-
log.warn({ err, port }, 'Failed to start runtime HTTP server, continuing without it');
|
|
458
|
-
runtimeHttp = null;
|
|
459
|
-
}
|
|
460
|
-
}
|
|
461
|
-
}
|
|
462
|
-
|
|
463
|
-
writePid(process.pid);
|
|
464
|
-
log.info({ pid: process.pid }, 'Daemon started');
|
|
465
|
-
|
|
466
|
-
const hookManager = getHookManager();
|
|
467
|
-
hookManager.watch();
|
|
468
|
-
|
|
469
|
-
void hookManager.trigger('daemon-start', {
|
|
470
|
-
pid: process.pid,
|
|
471
|
-
socketPath: getSocketPath(),
|
|
472
|
-
});
|
|
473
|
-
|
|
474
|
-
// Rotate old audit log entries after startup handshake is complete.
|
|
475
|
-
// This runs after the socket is listening so it won't block the 5s
|
|
476
|
-
// readiness window in startDaemon().
|
|
477
|
-
if (config.auditLog.retentionDays > 0) {
|
|
478
|
-
try {
|
|
479
|
-
rotateToolInvocations(config.auditLog.retentionDays);
|
|
480
|
-
} catch (err) {
|
|
481
|
-
log.warn({ err }, 'Audit log rotation failed');
|
|
482
|
-
}
|
|
483
|
-
}
|
|
484
|
-
|
|
485
|
-
// Start workspace heartbeat service. This periodically checks all
|
|
486
|
-
// tracked workspaces for uncommitted changes and auto-commits when
|
|
487
|
-
// thresholds are exceeded (age > 5 min OR > 20 files changed).
|
|
488
|
-
// Acts as a safety net for long-running operations or background
|
|
489
|
-
// processes that modify workspace files between turn-boundary commits.
|
|
490
|
-
const heartbeat = new HeartbeatService();
|
|
491
|
-
heartbeat.start();
|
|
492
|
-
|
|
493
|
-
// Start model-driven heartbeat service (opt-in via config).
|
|
494
|
-
const agentHeartbeat = new AgentHeartbeatService({
|
|
495
|
-
processMessage: (conversationId, content) =>
|
|
496
|
-
server.processMessage(conversationId, content),
|
|
497
|
-
alerter: (alert) => server.broadcast(alert),
|
|
498
|
-
});
|
|
499
|
-
agentHeartbeat.start();
|
|
500
|
-
|
|
501
|
-
// Graceful shutdown
|
|
502
|
-
let shuttingDown = false;
|
|
503
|
-
const shutdown = async () => {
|
|
504
|
-
if (shuttingDown) return; // Prevent re-entrant shutdown
|
|
505
|
-
shuttingDown = true;
|
|
506
|
-
log.info('Shutting down daemon...');
|
|
507
|
-
|
|
508
|
-
hookManager.stopWatching();
|
|
509
|
-
|
|
510
|
-
// Force exit if graceful shutdown takes too long.
|
|
511
|
-
// Set this BEFORE awaiting heartbeat stop and triggering daemon-stop hooks
|
|
512
|
-
// so it covers all potentially-blocking async shutdown work.
|
|
513
|
-
const forceTimer = setTimeout(() => {
|
|
514
|
-
log.warn('Graceful shutdown timed out, forcing exit');
|
|
515
|
-
cleanupPidFile();
|
|
516
|
-
process.exit(1);
|
|
517
|
-
}, 10_000);
|
|
518
|
-
forceTimer.unref();
|
|
519
|
-
|
|
520
|
-
await heartbeat.stop();
|
|
521
|
-
await agentHeartbeat.stop();
|
|
522
|
-
|
|
523
|
-
try {
|
|
524
|
-
await hookManager.trigger('daemon-stop', { pid: process.pid });
|
|
525
|
-
} catch {
|
|
526
|
-
// Don't let hook failures block shutdown
|
|
527
|
-
}
|
|
528
|
-
|
|
529
|
-
// Commit any uncommitted workspace changes before stopping the server.
|
|
530
|
-
// This ensures no workspace state is lost during graceful shutdown.
|
|
531
|
-
try {
|
|
532
|
-
log.info({ phase: 'pre_stop' }, 'Committing pending workspace changes');
|
|
533
|
-
await heartbeat.commitAllPending();
|
|
534
|
-
} catch (err) {
|
|
535
|
-
log.warn({ err, phase: 'pre_stop' }, 'Shutdown workspace commit failed');
|
|
536
|
-
}
|
|
537
|
-
|
|
538
|
-
await server.stop();
|
|
539
|
-
|
|
540
|
-
// Final commit sweep: catch any writes that occurred during server.stop()
|
|
541
|
-
// (e.g. in-flight tool executions completing during drain).
|
|
542
|
-
try {
|
|
543
|
-
log.info({ phase: 'post_stop' }, 'Final workspace commit sweep');
|
|
544
|
-
await heartbeat.commitAllPending();
|
|
545
|
-
} catch (err) {
|
|
546
|
-
log.warn({ err, phase: 'post_stop' }, 'Post-stop workspace commit failed');
|
|
547
|
-
}
|
|
548
|
-
|
|
549
|
-
// Flush in-flight enrichment jobs so shutdown commit notes are not dropped.
|
|
550
|
-
// The enrichment service's shutdown() drains active jobs and discards pending ones.
|
|
551
|
-
try {
|
|
552
|
-
await getEnrichmentService().shutdown();
|
|
553
|
-
} catch (err) {
|
|
554
|
-
log.warn({ err }, 'Enrichment service shutdown failed (non-fatal)');
|
|
555
|
-
}
|
|
556
|
-
|
|
557
|
-
if (runtimeHttp) await runtimeHttp.stop();
|
|
558
|
-
await browserManager.closeAllPages();
|
|
559
|
-
scheduler.stop();
|
|
560
|
-
memoryWorker.stop();
|
|
561
|
-
await qdrantManager.stop();
|
|
562
|
-
await Sentry.flush(2000);
|
|
563
|
-
clearTimeout(forceTimer);
|
|
564
|
-
cleanupPidFile();
|
|
565
|
-
process.exit(0);
|
|
566
|
-
};
|
|
567
|
-
|
|
568
|
-
process.on('SIGTERM', shutdown);
|
|
569
|
-
process.on('SIGINT', shutdown);
|
|
570
|
-
|
|
571
|
-
process.on('unhandledRejection', (reason) => {
|
|
572
|
-
log.error({ err: reason }, 'Unhandled promise rejection');
|
|
573
|
-
Sentry.captureException(reason);
|
|
574
|
-
});
|
|
575
|
-
|
|
576
|
-
process.on('uncaughtException', (err) => {
|
|
577
|
-
log.error({ err }, 'Uncaught exception');
|
|
578
|
-
Sentry.captureException(err);
|
|
579
|
-
});
|
|
580
|
-
}
|
package/src/daemon/main.ts
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bun
|
|
2
|
-
import * as Sentry from '@sentry/node';
|
|
3
|
-
import { runDaemon } from './lifecycle.js';
|
|
4
|
-
import { getLogger } from '../util/logger.js';
|
|
5
|
-
|
|
6
|
-
runDaemon().catch(async (err) => {
|
|
7
|
-
Sentry.captureException(err);
|
|
8
|
-
await Sentry.flush(2000);
|
|
9
|
-
// Try structured log first; fall back to console.error because
|
|
10
|
-
// startDaemon() captures the child process's stderr to surface error
|
|
11
|
-
// details to the parent process.
|
|
12
|
-
try {
|
|
13
|
-
const log = getLogger('daemon-main');
|
|
14
|
-
log.fatal({ err }, 'Failed to start daemon');
|
|
15
|
-
} catch {
|
|
16
|
-
// Logger may not be initialized yet
|
|
17
|
-
}
|
|
18
|
-
console.error('Failed to start daemon:', err);
|
|
19
|
-
console.error('Troubleshooting: check if another daemon is already running, verify ~/.vellum/ permissions, and review logs at ~/.vellum/workspace/data/logs/');
|
|
20
|
-
process.exit(1);
|
|
21
|
-
});
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Centralized policy for attachment visibility across thread types.
|
|
3
|
-
*
|
|
4
|
-
* Private-thread attachments are scoped: they are only visible when the
|
|
5
|
-
* current context is the *same* private thread. Standard (non-private)
|
|
6
|
-
* thread attachments are visible everywhere.
|
|
7
|
-
*
|
|
8
|
-
* This is a pure policy module -- no IO, no database queries, just logic.
|
|
9
|
-
* Actual enforcement in tools happens downstream (e.g., attachment-list
|
|
10
|
-
* and attachment-retrieve tools check this before returning results).
|
|
11
|
-
*/
|
|
12
|
-
|
|
13
|
-
export interface AttachmentContext {
|
|
14
|
-
conversationId: string;
|
|
15
|
-
/** Callers must always resolve this — omitting it would silently fail open. */
|
|
16
|
-
isPrivate: boolean;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* Determine whether a single attachment is visible from the given context.
|
|
21
|
-
*
|
|
22
|
-
* Rules:
|
|
23
|
-
* 1. Attachments from standard (non-private) threads are always visible.
|
|
24
|
-
* 2. Attachments from private threads are only visible when the current
|
|
25
|
-
* context matches the same private thread (same conversationId).
|
|
26
|
-
*/
|
|
27
|
-
export function isAttachmentVisible(
|
|
28
|
-
attachment: AttachmentContext,
|
|
29
|
-
currentContext: AttachmentContext,
|
|
30
|
-
): boolean {
|
|
31
|
-
// Standard thread attachments are universally visible
|
|
32
|
-
if (!attachment.isPrivate) {
|
|
33
|
-
return true;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
// Private thread attachments require the viewer to be in the same private thread
|
|
37
|
-
return (
|
|
38
|
-
currentContext.isPrivate === true &&
|
|
39
|
-
currentContext.conversationId === attachment.conversationId
|
|
40
|
-
);
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* Filter a list of attachments to only those visible from the current context.
|
|
45
|
-
*
|
|
46
|
-
* @param attachments - The full list of attachments to filter.
|
|
47
|
-
* @param currentContext - The thread context from which visibility is evaluated.
|
|
48
|
-
* @param getContext - Extracts the conversation context from each attachment
|
|
49
|
-
* record (since the caller's attachment type may differ from AttachmentContext).
|
|
50
|
-
*/
|
|
51
|
-
export function filterVisibleAttachments<T>(
|
|
52
|
-
attachments: T[],
|
|
53
|
-
currentContext: AttachmentContext,
|
|
54
|
-
getContext: (attachment: T) => AttachmentContext,
|
|
55
|
-
): T[] {
|
|
56
|
-
return attachments.filter((a) => isAttachmentVisible(getContext(a), currentContext));
|
|
57
|
-
}
|