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
|
@@ -1,164 +0,0 @@
|
|
|
1
|
-
import type { SwarmTaskNode, SwarmTaskResult } from './types.js';
|
|
2
|
-
import type { SwarmWorkerBackend } from './worker-backend.js';
|
|
3
|
-
import { roleToProfile } from './worker-backend.js';
|
|
4
|
-
import { buildWorkerPrompt, parseWorkerOutput } from './worker-prompts.js';
|
|
5
|
-
|
|
6
|
-
export type WorkerStatusKind = 'queued' | 'running' | 'completed' | 'failed';
|
|
7
|
-
|
|
8
|
-
export type WorkerStatusCallback = (taskId: string, status: WorkerStatusKind) => void;
|
|
9
|
-
|
|
10
|
-
export interface RunWorkerTaskOptions {
|
|
11
|
-
task: SwarmTaskNode;
|
|
12
|
-
/** Top-level objective context passed from the orchestrator. */
|
|
13
|
-
upstreamContext?: string;
|
|
14
|
-
/** Summaries from completed dependency tasks. */
|
|
15
|
-
dependencyOutputs?: Array<{ taskId: string; summary: string }>;
|
|
16
|
-
backend: SwarmWorkerBackend;
|
|
17
|
-
workingDir: string;
|
|
18
|
-
model?: string;
|
|
19
|
-
timeoutMs: number;
|
|
20
|
-
onStatus?: WorkerStatusCallback;
|
|
21
|
-
signal?: AbortSignal;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
function emitStatus(
|
|
25
|
-
onStatus: WorkerStatusCallback | undefined,
|
|
26
|
-
taskId: string,
|
|
27
|
-
status: WorkerStatusKind,
|
|
28
|
-
): void {
|
|
29
|
-
if (!onStatus) return;
|
|
30
|
-
try {
|
|
31
|
-
onStatus(taskId, status);
|
|
32
|
-
} catch {
|
|
33
|
-
// Observer failures must not abort worker execution.
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* Execute a single swarm worker task through the given backend.
|
|
39
|
-
* Returns a normalized SwarmTaskResult regardless of success or failure.
|
|
40
|
-
*/
|
|
41
|
-
export async function runWorkerTask(opts: RunWorkerTaskOptions): Promise<SwarmTaskResult> {
|
|
42
|
-
const { task, backend, workingDir, timeoutMs, onStatus, signal } = opts;
|
|
43
|
-
|
|
44
|
-
if (signal?.aborted) {
|
|
45
|
-
return {
|
|
46
|
-
taskId: task.id,
|
|
47
|
-
status: 'failed',
|
|
48
|
-
summary: 'Cancelled',
|
|
49
|
-
artifacts: [],
|
|
50
|
-
issues: ['aborted'],
|
|
51
|
-
nextSteps: [],
|
|
52
|
-
rawOutput: '',
|
|
53
|
-
durationMs: 0,
|
|
54
|
-
retryCount: 0,
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
emitStatus(onStatus, task.id, 'queued');
|
|
59
|
-
|
|
60
|
-
// Check backend availability
|
|
61
|
-
if (!backend.isAvailable()) {
|
|
62
|
-
emitStatus(onStatus, task.id, 'failed');
|
|
63
|
-
return {
|
|
64
|
-
taskId: task.id,
|
|
65
|
-
status: 'failed',
|
|
66
|
-
summary: `Backend "${backend.name}" is not available. Check API key and SDK configuration.`,
|
|
67
|
-
artifacts: [],
|
|
68
|
-
issues: [`Backend "${backend.name}" unavailable`],
|
|
69
|
-
nextSteps: ['Configure the backend or use a different one'],
|
|
70
|
-
rawOutput: '',
|
|
71
|
-
durationMs: 0,
|
|
72
|
-
retryCount: 0,
|
|
73
|
-
};
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
emitStatus(onStatus, task.id, 'running');
|
|
77
|
-
|
|
78
|
-
const prompt = buildWorkerPrompt({
|
|
79
|
-
role: task.role,
|
|
80
|
-
objective: task.objective,
|
|
81
|
-
upstreamContext: opts.upstreamContext,
|
|
82
|
-
dependencyOutputs: opts.dependencyOutputs,
|
|
83
|
-
});
|
|
84
|
-
|
|
85
|
-
const profile = roleToProfile(task.role);
|
|
86
|
-
|
|
87
|
-
try {
|
|
88
|
-
const backendPromise = backend.runTask({
|
|
89
|
-
prompt,
|
|
90
|
-
profile,
|
|
91
|
-
workingDir,
|
|
92
|
-
model: opts.model,
|
|
93
|
-
timeoutMs,
|
|
94
|
-
signal,
|
|
95
|
-
});
|
|
96
|
-
|
|
97
|
-
// Enforce timeout via Promise.race
|
|
98
|
-
const timeoutPromise = new Promise<'timeout'>((resolve) => {
|
|
99
|
-
const timer = setTimeout(() => resolve('timeout'), timeoutMs);
|
|
100
|
-
// Don't keep the process alive just for this timer
|
|
101
|
-
if (typeof timer === 'object' && 'unref' in timer) timer.unref();
|
|
102
|
-
});
|
|
103
|
-
|
|
104
|
-
const raceResult = await Promise.race([backendPromise, timeoutPromise]);
|
|
105
|
-
|
|
106
|
-
if (raceResult === 'timeout') {
|
|
107
|
-
emitStatus(onStatus, task.id, 'failed');
|
|
108
|
-
return {
|
|
109
|
-
taskId: task.id,
|
|
110
|
-
status: 'failed',
|
|
111
|
-
summary: `Worker timed out after ${timeoutMs}ms`,
|
|
112
|
-
artifacts: [],
|
|
113
|
-
issues: ['timeout'],
|
|
114
|
-
nextSteps: [],
|
|
115
|
-
rawOutput: '',
|
|
116
|
-
durationMs: timeoutMs,
|
|
117
|
-
retryCount: 0,
|
|
118
|
-
};
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
const result = raceResult;
|
|
122
|
-
|
|
123
|
-
if (result.success) {
|
|
124
|
-
const parsed = parseWorkerOutput(result.output);
|
|
125
|
-
emitStatus(onStatus, task.id, 'completed');
|
|
126
|
-
return {
|
|
127
|
-
taskId: task.id,
|
|
128
|
-
status: 'completed',
|
|
129
|
-
...parsed,
|
|
130
|
-
rawOutput: result.output,
|
|
131
|
-
durationMs: result.durationMs,
|
|
132
|
-
retryCount: 0,
|
|
133
|
-
};
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
// Backend returned a failure
|
|
137
|
-
emitStatus(onStatus, task.id, 'failed');
|
|
138
|
-
return {
|
|
139
|
-
taskId: task.id,
|
|
140
|
-
status: 'failed',
|
|
141
|
-
summary: result.output || `Task failed: ${result.failureReason ?? 'unknown'}`,
|
|
142
|
-
artifacts: [],
|
|
143
|
-
issues: [result.failureReason ?? 'unknown_failure'],
|
|
144
|
-
nextSteps: [],
|
|
145
|
-
rawOutput: result.output,
|
|
146
|
-
durationMs: result.durationMs,
|
|
147
|
-
retryCount: 0,
|
|
148
|
-
};
|
|
149
|
-
} catch (err) {
|
|
150
|
-
emitStatus(onStatus, task.id, 'failed');
|
|
151
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
152
|
-
return {
|
|
153
|
-
taskId: task.id,
|
|
154
|
-
status: 'failed',
|
|
155
|
-
summary: `Unexpected error: ${message}`,
|
|
156
|
-
artifacts: [],
|
|
157
|
-
issues: [message],
|
|
158
|
-
nextSteps: [],
|
|
159
|
-
rawOutput: '',
|
|
160
|
-
durationMs: 0,
|
|
161
|
-
retryCount: 0,
|
|
162
|
-
};
|
|
163
|
-
}
|
|
164
|
-
}
|
package/src/tasks/SPEC.md
DELETED
|
@@ -1,139 +0,0 @@
|
|
|
1
|
-
# One-Shot Tasks — Design Spec
|
|
2
|
-
|
|
3
|
-
One-shot tasks are user-defined, reusable prompt templates that run as
|
|
4
|
-
self-contained LLM invocations. A user creates a task once (template + input
|
|
5
|
-
schema), then triggers it with concrete inputs whenever needed. Each run
|
|
6
|
-
produces a result in an isolated background thread.
|
|
7
|
-
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
## 1. Template Format (v1)
|
|
11
|
-
|
|
12
|
-
A task definition consists of two parts:
|
|
13
|
-
|
|
14
|
-
### Prompt template
|
|
15
|
-
|
|
16
|
-
A plain-text string with `{{placeholder}}` markers. When a task is run, every
|
|
17
|
-
placeholder is replaced with the corresponding user-supplied value, and the
|
|
18
|
-
resulting string is sent to the LLM as the user message.
|
|
19
|
-
|
|
20
|
-
```
|
|
21
|
-
Summarize the following meeting notes in {{style}} format:
|
|
22
|
-
|
|
23
|
-
{{notes}}
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
Placeholder names must match `[a-zA-Z_][a-zA-Z0-9_]*`.
|
|
27
|
-
|
|
28
|
-
### Input schema
|
|
29
|
-
|
|
30
|
-
A JSON Schema object that describes every placeholder variable — its type,
|
|
31
|
-
description, and any validation constraints. This serves double duty: it
|
|
32
|
-
drives input validation before the run starts, and it provides enough metadata
|
|
33
|
-
for a UI to render an input form automatically.
|
|
34
|
-
|
|
35
|
-
```json
|
|
36
|
-
{
|
|
37
|
-
"type": "object",
|
|
38
|
-
"properties": {
|
|
39
|
-
"style": {
|
|
40
|
-
"type": "string",
|
|
41
|
-
"enum": ["bullet", "narrative", "executive"],
|
|
42
|
-
"description": "Output format for the summary"
|
|
43
|
-
},
|
|
44
|
-
"notes": {
|
|
45
|
-
"type": "string",
|
|
46
|
-
"description": "Raw meeting transcript or notes"
|
|
47
|
-
}
|
|
48
|
-
},
|
|
49
|
-
"required": ["style", "notes"]
|
|
50
|
-
}
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
**Why this design:** A single text template is the simplest possible v1 — no
|
|
54
|
-
multi-message choreography, no branching, no tool-use orchestration. It covers
|
|
55
|
-
the most common use case (structured prompt with variable inputs) while leaving
|
|
56
|
-
room to extend later (e.g., multi-step chains, tool-enabled tasks).
|
|
57
|
-
|
|
58
|
-
---
|
|
59
|
-
|
|
60
|
-
## 2. Memory Isolation Policy
|
|
61
|
-
|
|
62
|
-
Each task's memory is scoped by its task ID:
|
|
63
|
-
|
|
64
|
-
```
|
|
65
|
-
scope_id = "task:{task_id}"
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
This means:
|
|
69
|
-
|
|
70
|
-
- **Cross-run learning**: All runs of the same task share the same memory
|
|
71
|
-
scope. The LLM can accumulate knowledge about the task across invocations
|
|
72
|
-
(e.g., learning the user's preferred summary style over time).
|
|
73
|
-
- **Isolation from default scope**: Task memory is completely separate from the
|
|
74
|
-
user's main conversation memory (`scope_id = "default"`). A task cannot read
|
|
75
|
-
or pollute the user's chat history, and vice versa.
|
|
76
|
-
- **Per-task boundaries**: Different tasks have different scopes and cannot see
|
|
77
|
-
each other's memory.
|
|
78
|
-
|
|
79
|
-
This mirrors the existing `private:{id}` scoping pattern used by private
|
|
80
|
-
threads (see `conversation-store.ts`), extended to a new `task:` namespace.
|
|
81
|
-
|
|
82
|
-
---
|
|
83
|
-
|
|
84
|
-
## 3. Run Surface
|
|
85
|
-
|
|
86
|
-
Each task run creates a new conversation thread with `threadType: 'background'`.
|
|
87
|
-
|
|
88
|
-
### Lifecycle
|
|
89
|
-
|
|
90
|
-
1. **Preflight**: The client requests a permission preflight for the work item.
|
|
91
|
-
The daemon classifies risk for each required tool and returns the permission
|
|
92
|
-
set. The client displays an approval dialog; approved tools are stored on
|
|
93
|
-
the work item.
|
|
94
|
-
2. **Start**: The daemon creates a `background` conversation, substitutes
|
|
95
|
-
template placeholders, sets up ephemeral permission rules for the approved
|
|
96
|
-
tools, and processes the rendered prompt through a daemon `Session`. Status
|
|
97
|
-
updates are broadcast to all connected clients via `work_item_status_changed`
|
|
98
|
-
and `tasks_changed` IPC messages.
|
|
99
|
-
3. **Completion**: When the session finishes, the work item transitions to
|
|
100
|
-
`awaiting_review` (on success) or `failed` (on error). The daemon broadcasts
|
|
101
|
-
the final status to all clients.
|
|
102
|
-
4. **Visibility**: Background conversations are excluded from the default thread
|
|
103
|
-
list (existing behavior in `conversation-store.ts`). Clients can query for
|
|
104
|
-
them explicitly to surface task results in a dedicated UI.
|
|
105
|
-
|
|
106
|
-
**Why background conversations:** Reuses the existing `threadType: 'background'`
|
|
107
|
-
infrastructure. Task runs don't interrupt the user's current conversation, and
|
|
108
|
-
clients can choose how and when to display results (toast, panel, separate
|
|
109
|
-
tab).
|
|
110
|
-
|
|
111
|
-
---
|
|
112
|
-
|
|
113
|
-
## 4. Safety Invariants
|
|
114
|
-
|
|
115
|
-
- **Explicit trigger required**: Task runs are triggered either by an explicit
|
|
116
|
-
user action (UI button press, API call) or by a user-configured schedule
|
|
117
|
-
(`run_task:<task_id>` via the scheduler).
|
|
118
|
-
- **Ephemeral permission bundles**: If a task is configured with tool access,
|
|
119
|
-
the permission grants are scoped to the single run and discarded afterward.
|
|
120
|
-
No persistent allowlist entries are created on behalf of a task.
|
|
121
|
-
- **High-risk tools require upfront approval**: Tools classified as
|
|
122
|
-
`RiskLevel.High` (destructive shell commands, private-network fetches, etc.)
|
|
123
|
-
are surfaced in the preflight dialog so the user can explicitly approve or
|
|
124
|
-
deny them before execution begins. During the run itself, approved tools
|
|
125
|
-
(including high-risk ones) execute without further prompting.
|
|
126
|
-
|
|
127
|
-
---
|
|
128
|
-
|
|
129
|
-
## 5. Implementation Notes
|
|
130
|
-
|
|
131
|
-
The implementation is complete. Key modules:
|
|
132
|
-
|
|
133
|
-
| Module | What it delivers |
|
|
134
|
-
|--------|------------------|
|
|
135
|
-
| `task-store.ts` | `tasks` and `task_runs` tables, CRUD functions. |
|
|
136
|
-
| `task-runner.ts` | `runTask()` — creates background conversation, renders template, processes through daemon Session. |
|
|
137
|
-
| `ephemeral-permissions.ts` | Scoped permission rules for the duration of a single task run. |
|
|
138
|
-
| `work-items.ts` (daemon handler) | IPC handlers for preflight, run, cancel, and status queries. |
|
|
139
|
-
| Bundled skill (`tasks/`) | Tool definitions (`task_save`, `task_run`, `task_list`, `task_delete`, `task_list_*`) for the LLM. |
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
import { eq, desc, isNull } from 'drizzle-orm';
|
|
2
|
-
import { getDb } from '../memory/db.js';
|
|
3
|
-
import { taskCandidates } from '../memory/schema.js';
|
|
4
|
-
|
|
5
|
-
// ── Types ────────────────────────────────────────────────────────────
|
|
6
|
-
|
|
7
|
-
export interface TaskCandidate {
|
|
8
|
-
id: string;
|
|
9
|
-
sourceConversationId: string;
|
|
10
|
-
compiledTemplate: string;
|
|
11
|
-
confidence: number | null;
|
|
12
|
-
requiredTools: string[] | null;
|
|
13
|
-
createdAt: number;
|
|
14
|
-
promotedTaskId: string | null;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
// ── Helpers ──────────────────────────────────────────────────────────
|
|
18
|
-
|
|
19
|
-
/** Convert a raw DB row to a TaskCandidate, deserializing the JSON requiredTools field. */
|
|
20
|
-
function rowToCandidate(row: typeof taskCandidates.$inferSelect): TaskCandidate {
|
|
21
|
-
return {
|
|
22
|
-
id: row.id,
|
|
23
|
-
sourceConversationId: row.sourceConversationId,
|
|
24
|
-
compiledTemplate: row.compiledTemplate,
|
|
25
|
-
confidence: row.confidence,
|
|
26
|
-
requiredTools: row.requiredTools ? JSON.parse(row.requiredTools) : null,
|
|
27
|
-
createdAt: row.createdAt,
|
|
28
|
-
promotedTaskId: row.promotedTaskId,
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
// ── CRUD ─────────────────────────────────────────────────────────────
|
|
33
|
-
|
|
34
|
-
/** Record a new task candidate from a conversation. */
|
|
35
|
-
export function createCandidate(opts: {
|
|
36
|
-
sourceConversationId: string;
|
|
37
|
-
compiledTemplate: string;
|
|
38
|
-
confidence?: number;
|
|
39
|
-
requiredTools?: string[];
|
|
40
|
-
}): TaskCandidate {
|
|
41
|
-
const db = getDb();
|
|
42
|
-
const now = Date.now();
|
|
43
|
-
const id = crypto.randomUUID();
|
|
44
|
-
const row = {
|
|
45
|
-
id,
|
|
46
|
-
sourceConversationId: opts.sourceConversationId,
|
|
47
|
-
compiledTemplate: opts.compiledTemplate,
|
|
48
|
-
confidence: opts.confidence ?? null,
|
|
49
|
-
requiredTools: opts.requiredTools ? JSON.stringify(opts.requiredTools) : null,
|
|
50
|
-
createdAt: now,
|
|
51
|
-
promotedTaskId: null,
|
|
52
|
-
};
|
|
53
|
-
db.insert(taskCandidates).values(row).run();
|
|
54
|
-
return {
|
|
55
|
-
...row,
|
|
56
|
-
requiredTools: opts.requiredTools ?? null,
|
|
57
|
-
};
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
/** List unpromoted candidates (most recent first). */
|
|
61
|
-
export function listUnpromotedCandidates(limit?: number): TaskCandidate[] {
|
|
62
|
-
const db = getDb();
|
|
63
|
-
const query = db
|
|
64
|
-
.select()
|
|
65
|
-
.from(taskCandidates)
|
|
66
|
-
.where(isNull(taskCandidates.promotedTaskId))
|
|
67
|
-
.orderBy(desc(taskCandidates.createdAt));
|
|
68
|
-
const rows = limit ? query.limit(limit).all() : query.all();
|
|
69
|
-
return rows.map(rowToCandidate);
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
/** Mark a candidate as promoted to a real task. */
|
|
73
|
-
export function promoteCandidate(candidateId: string, taskId: string): void {
|
|
74
|
-
const db = getDb();
|
|
75
|
-
db.update(taskCandidates)
|
|
76
|
-
.set({ promotedTaskId: taskId })
|
|
77
|
-
.where(eq(taskCandidates.id, candidateId))
|
|
78
|
-
.run();
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
/** Get a candidate by ID. */
|
|
82
|
-
export function getCandidate(id: string): TaskCandidate | undefined {
|
|
83
|
-
const db = getDb();
|
|
84
|
-
const row = db.select().from(taskCandidates).where(eq(taskCandidates.id, id)).get();
|
|
85
|
-
return row ? rowToCandidate(row) : undefined;
|
|
86
|
-
}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import type { TrustRule } from '../permissions/types.js';
|
|
2
|
-
|
|
3
|
-
// In-memory map: task_run_id -> ephemeral rules
|
|
4
|
-
const activeTaskRules = new Map<string, TrustRule[]>();
|
|
5
|
-
|
|
6
|
-
/** Register ephemeral permission rules for a task run. */
|
|
7
|
-
export function setTaskRunRules(taskRunId: string, rules: TrustRule[]): void {
|
|
8
|
-
activeTaskRules.set(taskRunId, rules);
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
/** Get ephemeral rules for a task run (returns empty array if none). */
|
|
12
|
-
export function getTaskRunRules(taskRunId: string): TrustRule[] {
|
|
13
|
-
return activeTaskRules.get(taskRunId) ?? [];
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
/** Remove ephemeral rules when a task run ends. */
|
|
17
|
-
export function clearTaskRunRules(taskRunId: string): void {
|
|
18
|
-
activeTaskRules.delete(taskRunId);
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* Build ephemeral TrustRule entries from a task's required_tools list.
|
|
23
|
-
*
|
|
24
|
-
* Each rule allows the specified tool with a wildcard pattern scoped
|
|
25
|
-
* globally ('everywhere'). The scope is intentionally broad because the
|
|
26
|
-
* session's workingDir (sandbox path like ~/.vellum/workspace) differs
|
|
27
|
-
* from process.cwd() — using a directory-scoped rule would fail
|
|
28
|
-
* matchesScope() and silently miss. Priority is set to 75 — above
|
|
29
|
-
* default rules (50) so pre-approved tools aren't shadowed by default
|
|
30
|
-
* `ask` rules (which would trigger prompting and auto-deny in
|
|
31
|
-
* non-interactive task runs), but below user rules (100) so user deny
|
|
32
|
-
* rules still take precedence. `allowHighRisk` is set because task runs
|
|
33
|
-
* execute asynchronously without interactive confirmation — the client
|
|
34
|
-
* pre-approves tools via the preflight flow before execution begins,
|
|
35
|
-
* so there is no interactive prompt during the run itself.
|
|
36
|
-
*/
|
|
37
|
-
export function buildTaskRules(taskRunId: string, requiredTools: string[], _workingDir: string): TrustRule[] {
|
|
38
|
-
return requiredTools.map((tool) => ({
|
|
39
|
-
id: `ephemeral:${taskRunId}:${tool}`,
|
|
40
|
-
tool,
|
|
41
|
-
pattern: '**',
|
|
42
|
-
scope: 'everywhere',
|
|
43
|
-
decision: 'allow' as const,
|
|
44
|
-
allowHighRisk: true,
|
|
45
|
-
priority: 75,
|
|
46
|
-
createdAt: Date.now(),
|
|
47
|
-
principalKind: 'task',
|
|
48
|
-
principalId: taskRunId,
|
|
49
|
-
}));
|
|
50
|
-
}
|
|
@@ -1,199 +0,0 @@
|
|
|
1
|
-
import { eq } from 'drizzle-orm';
|
|
2
|
-
import { getDb } from '../memory/db.js';
|
|
3
|
-
import { messages as messagesTable } from '../memory/schema.js';
|
|
4
|
-
import { createTask } from './task-store.js';
|
|
5
|
-
import type { Task } from './task-store.js';
|
|
6
|
-
import { truncate } from '../util/truncate.js';
|
|
7
|
-
import { sanitizeToolList } from './tool-sanitizer.js';
|
|
8
|
-
|
|
9
|
-
/** Output schema for the task compiler. */
|
|
10
|
-
export interface CompiledTask {
|
|
11
|
-
title: string;
|
|
12
|
-
template: string;
|
|
13
|
-
inputSchema: Record<string, unknown> | null;
|
|
14
|
-
contextFlags: string[];
|
|
15
|
-
requiredTools: string[];
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* Extract a task template (reusable definition) from a conversation's message history.
|
|
20
|
-
*
|
|
21
|
-
* Pattern-based extraction (v1) that:
|
|
22
|
-
* 1. Reads the conversation messages
|
|
23
|
-
* 2. Identifies the user's original request (first user message)
|
|
24
|
-
* 3. Identifies which tools were used (from assistant tool_use messages)
|
|
25
|
-
* 4. Builds a template from the original request
|
|
26
|
-
* 5. Extracts likely input variables (file paths, URLs, quoted strings)
|
|
27
|
-
*/
|
|
28
|
-
export function compileTaskFromConversation(conversationId: string): CompiledTask {
|
|
29
|
-
const db = getDb();
|
|
30
|
-
const msgs = db
|
|
31
|
-
.select()
|
|
32
|
-
.from(messagesTable)
|
|
33
|
-
.where(eq(messagesTable.conversationId, conversationId))
|
|
34
|
-
.all();
|
|
35
|
-
|
|
36
|
-
if (msgs.length === 0) {
|
|
37
|
-
throw new Error(`No messages found for conversation: ${conversationId}`);
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
// Find the first user message to use as the template basis
|
|
41
|
-
const firstUserMsg = msgs.find((m) => m.role === 'user');
|
|
42
|
-
if (!firstUserMsg) {
|
|
43
|
-
throw new Error(`No user messages found in conversation: ${conversationId}`);
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
// Extract user message text content
|
|
47
|
-
const userText = extractTextContent(firstUserMsg.content);
|
|
48
|
-
|
|
49
|
-
// Extract unique tool names from assistant messages.
|
|
50
|
-
const requiredTools = sanitizeToolList(extractToolNames(msgs));
|
|
51
|
-
|
|
52
|
-
// Build template with placeholder substitutions
|
|
53
|
-
const { template, properties } = buildTemplate(userText);
|
|
54
|
-
|
|
55
|
-
// Build JSON Schema for extracted placeholders
|
|
56
|
-
const inputSchema =
|
|
57
|
-
Object.keys(properties).length > 0
|
|
58
|
-
? { type: 'object' as const, properties }
|
|
59
|
-
: null;
|
|
60
|
-
|
|
61
|
-
// Derive title from the first user message (truncated to 60 chars)
|
|
62
|
-
const title = deriveTitle(userText);
|
|
63
|
-
|
|
64
|
-
return {
|
|
65
|
-
title,
|
|
66
|
-
template,
|
|
67
|
-
inputSchema,
|
|
68
|
-
contextFlags: [],
|
|
69
|
-
requiredTools,
|
|
70
|
-
};
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* Save a compiled task to the database.
|
|
75
|
-
*/
|
|
76
|
-
export function saveCompiledTask(compiled: CompiledTask, conversationId: string): Task {
|
|
77
|
-
return createTask({
|
|
78
|
-
title: compiled.title,
|
|
79
|
-
template: compiled.template,
|
|
80
|
-
inputSchema: compiled.inputSchema ?? undefined,
|
|
81
|
-
contextFlags: compiled.contextFlags,
|
|
82
|
-
requiredTools: compiled.requiredTools,
|
|
83
|
-
createdFromConversationId: conversationId,
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
// ── Internal helpers ────────────────────────────────────────────────
|
|
88
|
-
|
|
89
|
-
/**
|
|
90
|
-
* Extract plain text from a message content field. Content may be a plain
|
|
91
|
-
* string or a JSON array of Anthropic content blocks.
|
|
92
|
-
*/
|
|
93
|
-
function extractTextContent(content: string): string {
|
|
94
|
-
try {
|
|
95
|
-
const parsed = JSON.parse(content);
|
|
96
|
-
if (Array.isArray(parsed)) {
|
|
97
|
-
return parsed
|
|
98
|
-
.filter((block: Record<string, unknown>) => block.type === 'text')
|
|
99
|
-
.map((block: Record<string, unknown>) => block.text as string)
|
|
100
|
-
.join('\n');
|
|
101
|
-
}
|
|
102
|
-
// If it parsed but isn't an array, treat as plain text
|
|
103
|
-
return content;
|
|
104
|
-
} catch {
|
|
105
|
-
// Not JSON — it's a plain text message
|
|
106
|
-
return content;
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
/**
|
|
111
|
-
* Extract unique tool names from assistant messages that contain tool_use blocks.
|
|
112
|
-
*/
|
|
113
|
-
function extractToolNames(
|
|
114
|
-
msgs: { role: string; content: string }[],
|
|
115
|
-
): string[] {
|
|
116
|
-
const tools = new Set<string>();
|
|
117
|
-
|
|
118
|
-
for (const msg of msgs) {
|
|
119
|
-
if (msg.role !== 'assistant') continue;
|
|
120
|
-
|
|
121
|
-
try {
|
|
122
|
-
const parsed = JSON.parse(msg.content);
|
|
123
|
-
if (!Array.isArray(parsed)) continue;
|
|
124
|
-
|
|
125
|
-
for (const block of parsed) {
|
|
126
|
-
if (
|
|
127
|
-
block &&
|
|
128
|
-
typeof block === 'object' &&
|
|
129
|
-
block.type === 'tool_use' &&
|
|
130
|
-
typeof block.name === 'string'
|
|
131
|
-
) {
|
|
132
|
-
tools.add(block.name);
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
} catch {
|
|
136
|
-
// Not JSON content — skip
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
return [...tools];
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
/**
|
|
144
|
-
* Build a template from user text by replacing variable-looking parts
|
|
145
|
-
* with mustache-style placeholders.
|
|
146
|
-
*
|
|
147
|
-
* Returns the template string and a map of property schemas for the
|
|
148
|
-
* identified placeholders.
|
|
149
|
-
*/
|
|
150
|
-
function buildTemplate(text: string): {
|
|
151
|
-
template: string;
|
|
152
|
-
properties: Record<string, { type: string; description: string }>;
|
|
153
|
-
} {
|
|
154
|
-
const properties: Record<string, { type: string; description: string }> = {};
|
|
155
|
-
let template = text;
|
|
156
|
-
let urlIndex = 0;
|
|
157
|
-
let filePathIndex = 0;
|
|
158
|
-
|
|
159
|
-
// Replace URLs first so they don't get partially matched by file path regex
|
|
160
|
-
template = template.replace(
|
|
161
|
-
/https?:\/\/[^\s)>]+/g,
|
|
162
|
-
() => {
|
|
163
|
-
const key = urlIndex === 0 ? 'url' : `url_${urlIndex}`;
|
|
164
|
-
urlIndex++;
|
|
165
|
-
properties[key] = {
|
|
166
|
-
type: 'string',
|
|
167
|
-
description: 'The URL to use',
|
|
168
|
-
};
|
|
169
|
-
return `{{${key}}}`;
|
|
170
|
-
},
|
|
171
|
-
);
|
|
172
|
-
|
|
173
|
-
// Replace absolute file paths (e.g. /Users/foo/bar.txt, ~/docs/file)
|
|
174
|
-
// Only match paths starting with / or ~/ that have at least two segments
|
|
175
|
-
template = template.replace(
|
|
176
|
-
/(?:~\/|\/(?:[a-zA-Z0-9._-]+\/)+[a-zA-Z0-9._-]+)/g,
|
|
177
|
-
() => {
|
|
178
|
-
const key = filePathIndex === 0 ? 'file_path' : `file_path_${filePathIndex}`;
|
|
179
|
-
filePathIndex++;
|
|
180
|
-
properties[key] = {
|
|
181
|
-
type: 'string',
|
|
182
|
-
description: 'The file path to operate on',
|
|
183
|
-
};
|
|
184
|
-
return `{{${key}}}`;
|
|
185
|
-
},
|
|
186
|
-
);
|
|
187
|
-
|
|
188
|
-
return { template, properties };
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
/**
|
|
192
|
-
* Derive a short title from the user's first message.
|
|
193
|
-
* Truncates to 60 characters with ellipsis if needed.
|
|
194
|
-
*/
|
|
195
|
-
function deriveTitle(text: string): string {
|
|
196
|
-
// Take the first line and trim whitespace
|
|
197
|
-
const firstLine = text.split('\n')[0].trim();
|
|
198
|
-
return truncate(firstLine, 60);
|
|
199
|
-
}
|