@vellumai/assistant 0.3.5 → 0.3.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +51 -0
- package/eslint.config.mjs +31 -0
- package/package.json +1 -1
- package/scripts/ipc/check-swift-decoder-drift.ts +4 -1
- package/scripts/ipc/generate-swift.ts +18 -2
- package/src/__tests__/__snapshots__/ipc-snapshot.test.ts.snap +338 -1
- package/src/__tests__/approval-conversation-turn.test.ts +214 -0
- package/src/__tests__/browser-manager.test.ts +1 -0
- package/src/__tests__/call-conversation-messages.test.ts +130 -0
- package/src/__tests__/call-orchestrator.test.ts +752 -271
- package/src/__tests__/call-pointer-messages.test.ts +148 -0
- package/src/__tests__/call-recovery.test.ts +3 -0
- package/src/__tests__/call-routes-http.test.ts +5 -0
- package/src/__tests__/call-store.test.ts +3 -0
- package/src/__tests__/channel-approval-routes.test.ts +1260 -85
- package/src/__tests__/channel-approval.test.ts +37 -0
- package/src/__tests__/channel-approvals.test.ts +4 -65
- package/src/__tests__/channel-guardian.test.ts +556 -0
- package/src/__tests__/channel-readiness-service.test.ts +74 -7
- package/src/__tests__/checker.test.ts +14 -7
- package/src/__tests__/clarification-resolver.test.ts +44 -24
- package/src/__tests__/commit-message-enrichment-service.test.ts +9 -4
- package/src/__tests__/computer-use-session-working-dir.test.ts +8 -0
- package/src/__tests__/config-schema.test.ts +12 -7
- package/src/__tests__/context-window-manager.test.ts +30 -2
- package/src/__tests__/contradiction-checker.test.ts +20 -5
- package/src/__tests__/credential-security-invariants.test.ts +6 -2
- package/src/__tests__/db-migration-rollback.test.ts +752 -0
- package/src/__tests__/dynamic-skill-workflow-prompt.test.ts +2 -0
- package/src/__tests__/fuzzy-match-property.test.ts +5 -5
- package/src/__tests__/guardian-action-store.test.ts +123 -0
- package/src/__tests__/guardian-action-sweep.test.ts +277 -0
- package/src/__tests__/guardian-dispatch.test.ts +389 -0
- package/src/__tests__/guardian-question-copy.test.ts +47 -0
- package/src/__tests__/handlers-telegram-config.test.ts +4 -2
- package/src/__tests__/handlers-twilio-config.test.ts +126 -0
- package/src/__tests__/intent-routing.test.ts +2 -0
- package/src/__tests__/ipc-snapshot.test.ts +228 -1
- package/src/__tests__/memory-upsert-concurrency.test.ts +828 -0
- package/src/__tests__/model-intents.test.ts +96 -0
- package/src/__tests__/no-direct-anthropic-sdk-imports.test.ts +42 -0
- package/src/__tests__/oauth2-gateway-transport.test.ts +130 -0
- package/src/__tests__/onboarding-starter-tasks.test.ts +2 -0
- package/src/__tests__/provider-commit-message-generator.test.ts +89 -13
- package/src/__tests__/provider-error-scenarios.test.ts +621 -0
- package/src/__tests__/provider-fail-open-selection.test.ts +119 -0
- package/src/__tests__/qdrant-manager.test.ts +27 -20
- package/src/__tests__/relay-server.test.ts +779 -40
- package/src/__tests__/run-orchestrator-assistant-events.test.ts +2 -0
- package/src/__tests__/run-orchestrator.test.ts +20 -4
- package/src/__tests__/runtime-runs-http.test.ts +17 -1
- package/src/__tests__/runtime-runs.test.ts +16 -0
- package/src/__tests__/schedule-store.test.ts +18 -4
- package/src/__tests__/scheduler-recurrence.test.ts +13 -4
- package/src/__tests__/session-abort-tool-results.test.ts +6 -0
- package/src/__tests__/session-agent-loop.test.ts +857 -0
- package/src/__tests__/session-conflict-gate.test.ts +6 -0
- package/src/__tests__/session-pre-run-repair.test.ts +6 -0
- package/src/__tests__/session-profile-injection.test.ts +6 -0
- package/src/__tests__/session-provider-retry-repair.test.ts +6 -0
- package/src/__tests__/session-queue.test.ts +6 -0
- package/src/__tests__/session-runtime-assembly.test.ts +237 -13
- package/src/__tests__/session-slash-known.test.ts +6 -0
- package/src/__tests__/session-slash-queue.test.ts +6 -0
- package/src/__tests__/session-slash-unknown.test.ts +6 -0
- package/src/__tests__/session-surfaces-task-progress.test.ts +2 -0
- package/src/__tests__/session-tool-setup-app-refresh.test.ts +1 -0
- package/src/__tests__/session-tool-setup-memory-scope.test.ts +1 -0
- package/src/__tests__/session-tool-setup-side-effect-flag.test.ts +1 -0
- package/src/__tests__/session-workspace-injection.test.ts +6 -0
- package/src/__tests__/session-workspace-tool-tracking.test.ts +6 -0
- package/src/__tests__/skills.test.ts +2 -0
- package/src/__tests__/sms-messaging-provider.test.ts +2 -1
- package/src/__tests__/starter-task-flow.test.ts +2 -0
- package/src/__tests__/swarm-dag-pathological.test.ts +535 -0
- package/src/__tests__/system-prompt.test.ts +2 -0
- package/src/__tests__/task-management-tools.test.ts +2 -2
- package/src/__tests__/task-runner.test.ts +14 -4
- package/src/__tests__/terminal-tools.test.ts +25 -19
- package/src/__tests__/tool-execution-abort-cleanup.test.ts +545 -0
- package/src/__tests__/tool-executor-shell-integration.test.ts +11 -11
- package/src/__tests__/tool-executor.test.ts +23 -24
- package/src/__tests__/trust-store.test.ts +3 -3
- package/src/__tests__/twilio-rest.test.ts +29 -0
- package/src/__tests__/twilio-routes-elevenlabs.test.ts +3 -0
- package/src/__tests__/twilio-routes-twiml.test.ts +11 -0
- package/src/__tests__/twilio-routes.test.ts +141 -21
- package/src/__tests__/user-reference.test.ts +2 -0
- package/src/__tests__/voice-quality.test.ts +222 -0
- package/src/__tests__/web-search.test.ts +45 -29
- package/src/agent/loop.ts +1 -1
- package/src/agent-heartbeat/agent-heartbeat-service.ts +2 -10
- package/src/amazon/client.ts +1418 -0
- package/src/amazon/request-extractor.ts +135 -0
- package/src/amazon/session.ts +109 -0
- package/src/autonomy/autonomy-store.ts +5 -5
- package/src/browser-extension-relay/client.ts +124 -0
- package/src/browser-extension-relay/protocol.ts +63 -0
- package/src/browser-extension-relay/server.ts +177 -0
- package/src/bundler/app-bundler.ts +3 -3
- package/src/bundler/bundle-signer.ts +1 -1
- package/src/bundler/signature-verifier.ts +1 -1
- package/src/calls/call-conversation-messages.ts +33 -0
- package/src/calls/call-domain.ts +106 -5
- package/src/calls/call-orchestrator.ts +252 -54
- package/src/calls/call-pointer-messages.ts +53 -0
- package/src/calls/call-recovery.ts +3 -8
- package/src/calls/call-store.ts +69 -87
- package/src/calls/elevenlabs-config.ts +3 -2
- package/src/calls/guardian-action-sweep.ts +105 -0
- package/src/calls/guardian-dispatch.ts +203 -0
- package/src/calls/guardian-question-copy.ts +133 -0
- package/src/calls/relay-server.ts +466 -8
- package/src/calls/speaker-identification.ts +1 -1
- package/src/calls/twilio-config.ts +7 -5
- package/src/calls/twilio-provider.ts +6 -4
- package/src/calls/twilio-rest.ts +40 -15
- package/src/calls/twilio-routes.ts +60 -45
- package/src/calls/types.ts +3 -1
- package/src/channels/types.ts +25 -0
- package/src/cli/amazon.ts +815 -0
- package/src/cli/config-commands.ts +2 -2
- package/src/cli/core-commands.ts +4 -3
- package/src/cli/influencer.ts +244 -0
- package/src/cli/map.ts +89 -6
- package/src/cli.ts +1 -1
- package/src/config/agent-schema.ts +171 -0
- package/src/config/bundled-skills/amazon/SKILL.md +127 -0
- package/src/config/bundled-skills/amazon/icon.svg +13 -0
- package/src/config/bundled-skills/api-mapping/SKILL.md +78 -0
- package/src/config/bundled-skills/browser/SKILL.md +1 -0
- package/src/config/bundled-skills/browser/TOOLS.json +17 -0
- package/src/config/bundled-skills/browser/tools/browser-wait-for-download.ts +25 -0
- package/src/config/bundled-skills/doordash/SKILL.md +51 -51
- package/src/config/bundled-skills/email-setup/SKILL.md +14 -5
- package/src/config/bundled-skills/google-oauth-setup/SKILL.md +183 -0
- package/src/config/bundled-skills/influencer/SKILL.md +144 -0
- package/src/config/bundled-skills/macos-automation/icon.svg +12 -0
- package/src/config/bundled-skills/media-processing/SKILL.md +72 -95
- package/src/config/bundled-skills/media-processing/TOOLS.json +57 -147
- package/src/config/bundled-skills/media-processing/__tests__/concurrency-pool.test.ts +77 -0
- package/src/config/bundled-skills/media-processing/__tests__/cost-tracker.test.ts +69 -0
- package/src/config/bundled-skills/media-processing/__tests__/preprocess.test.ts +303 -0
- package/src/config/bundled-skills/media-processing/services/concurrency-pool.ts +55 -0
- package/src/config/bundled-skills/media-processing/services/cost-tracker.ts +86 -0
- package/src/config/bundled-skills/media-processing/services/gemini-map.ts +339 -0
- package/src/config/bundled-skills/media-processing/services/preprocess.ts +551 -0
- package/src/config/bundled-skills/media-processing/services/processing-pipeline.ts +7 -9
- package/src/config/bundled-skills/media-processing/services/reduce.ts +197 -0
- package/src/config/bundled-skills/media-processing/tools/analyze-keyframes.ts +88 -253
- package/src/config/bundled-skills/media-processing/tools/extract-keyframes.ts +22 -153
- package/src/config/bundled-skills/media-processing/tools/generate-clip.ts +2 -2
- package/src/config/bundled-skills/media-processing/tools/media-diagnostics.ts +28 -51
- package/src/config/bundled-skills/media-processing/tools/query-media-events.ts +35 -270
- package/src/config/bundled-skills/messaging/SKILL.md +12 -2
- package/src/config/bundled-skills/messaging/tools/messaging-analyze-style.ts +4 -7
- package/src/config/bundled-skills/messaging/tools/messaging-reply.ts +2 -1
- package/src/config/bundled-skills/phone-calls/SKILL.md +86 -21
- package/src/config/bundled-skills/twitter/icon.svg +14 -0
- package/src/config/bundled-tool-registry.ts +310 -0
- package/src/config/calls-schema.ts +181 -0
- package/src/config/core-schema.ts +309 -0
- package/src/config/defaults.ts +27 -3
- package/src/config/env-registry.ts +169 -0
- package/src/config/env.ts +175 -0
- package/src/config/loader.ts +6 -6
- package/src/config/memory-schema.ts +528 -0
- package/src/config/sandbox-schema.ts +55 -0
- package/src/config/schema.ts +157 -1138
- package/src/config/skill-state.ts +1 -1
- package/src/config/skills-schema.ts +32 -0
- package/src/config/skills.ts +35 -24
- package/src/config/system-prompt.ts +107 -56
- package/src/config/templates/SOUL.md +1 -1
- package/src/config/types.ts +1 -0
- package/src/config/user-reference.ts +4 -9
- package/src/config/vellum-skills/catalog.json +0 -7
- package/src/config/vellum-skills/chatgpt-import/tools/chatgpt-import.ts +5 -1
- package/src/config/vellum-skills/slack-oauth-setup/SKILL.md +1 -0
- package/src/config/vellum-skills/sms-setup/SKILL.md +112 -14
- package/src/context/window-manager.ts +27 -7
- package/src/daemon/approval-generators.ts +186 -0
- package/src/daemon/approved-devices-store.ts +140 -0
- package/src/daemon/assistant-attachments.ts +1 -1
- package/src/daemon/classifier.ts +35 -32
- package/src/daemon/config-watcher.ts +1 -1
- package/src/daemon/daemon-control.ts +254 -0
- package/src/daemon/handlers/apps.ts +2 -3
- package/src/daemon/handlers/config-channels.ts +158 -0
- package/src/daemon/handlers/config-inbox.ts +540 -0
- package/src/daemon/handlers/config-ingress.ts +231 -0
- package/src/daemon/handlers/config-integrations.ts +258 -0
- package/src/daemon/handlers/config-model.ts +143 -0
- package/src/daemon/handlers/config-parental.ts +163 -0
- package/src/daemon/handlers/config-scheduling.ts +172 -0
- package/src/daemon/handlers/config-slack.ts +92 -0
- package/src/daemon/handlers/config-telegram.ts +301 -0
- package/src/daemon/handlers/config-tools.ts +177 -0
- package/src/daemon/handlers/config-trust.ts +104 -0
- package/src/daemon/handlers/config-twilio.ts +1080 -0
- package/src/daemon/handlers/config.ts +53 -2463
- package/src/daemon/handlers/diagnostics.ts +1 -1
- package/src/daemon/handlers/dictation.ts +4 -6
- package/src/daemon/handlers/documents.ts +18 -32
- package/src/daemon/handlers/index.ts +9 -0
- package/src/daemon/handlers/misc.ts +3 -5
- package/src/daemon/handlers/pairing.ts +98 -0
- package/src/daemon/handlers/sessions.ts +74 -5
- package/src/daemon/handlers/shared.ts +3 -1
- package/src/daemon/handlers/skills.ts +1 -1
- package/src/daemon/handlers/twitter-auth.ts +2 -0
- package/src/daemon/handlers/work-items.ts +2 -2
- package/src/daemon/handlers/workspace-files.ts +4 -3
- package/src/daemon/install-cli-launchers.ts +113 -0
- package/src/daemon/ipc-contract/apps.ts +356 -0
- package/src/daemon/ipc-contract/browser.ts +74 -0
- package/src/daemon/ipc-contract/computer-use.ts +151 -0
- package/src/daemon/ipc-contract/diagnostics.ts +56 -0
- package/src/daemon/ipc-contract/documents.ts +74 -0
- package/src/daemon/ipc-contract/inbox.ts +209 -0
- package/src/daemon/ipc-contract/integrations.ts +284 -0
- package/src/daemon/ipc-contract/memory.ts +48 -0
- package/src/daemon/ipc-contract/messages.ts +211 -0
- package/src/daemon/ipc-contract/pairing.ts +45 -0
- package/src/daemon/ipc-contract/parental-control.ts +95 -0
- package/src/daemon/ipc-contract/schedules.ts +97 -0
- package/src/daemon/ipc-contract/sessions.ts +321 -0
- package/src/daemon/ipc-contract/shared.ts +42 -0
- package/src/daemon/ipc-contract/skills.ts +120 -0
- package/src/daemon/ipc-contract/subagents.ts +58 -0
- package/src/daemon/ipc-contract/surfaces.ts +250 -0
- package/src/daemon/ipc-contract/trust.ts +60 -0
- package/src/daemon/ipc-contract/work-items.ts +225 -0
- package/src/daemon/ipc-contract/workspace.ts +113 -0
- package/src/daemon/ipc-contract-inventory.json +62 -0
- package/src/daemon/ipc-contract-inventory.ts +55 -29
- package/src/daemon/ipc-contract.ts +227 -2527
- package/src/daemon/ipc-protocol.ts +1 -1
- package/src/daemon/ipc-validate.ts +7 -0
- package/src/daemon/lifecycle.ts +97 -379
- package/src/daemon/pairing-store.ts +177 -0
- package/src/daemon/providers-setup.ts +43 -0
- package/src/daemon/ride-shotgun-handler.ts +67 -2
- package/src/daemon/server.ts +60 -44
- package/src/daemon/session-agent-loop-handlers.ts +421 -0
- package/src/daemon/session-agent-loop.ts +113 -275
- package/src/daemon/session-dynamic-profile.ts +1 -1
- package/src/daemon/session-history.ts +1 -1
- package/src/daemon/session-media-retry.ts +1 -1
- package/src/daemon/session-messaging.ts +37 -2
- package/src/daemon/session-notifiers.ts +5 -25
- package/src/daemon/session-process.ts +99 -59
- package/src/daemon/session-queue-manager.ts +98 -4
- package/src/daemon/session-runtime-assembly.ts +149 -15
- package/src/daemon/session-surfaces.ts +26 -4
- package/src/daemon/session-tool-setup.ts +28 -30
- package/src/daemon/session-workspace.ts +1 -1
- package/src/daemon/session.ts +24 -1
- package/src/daemon/shutdown-handlers.ts +122 -0
- package/src/daemon/trace-emitter.ts +1 -1
- package/src/daemon/watch-handler.ts +36 -33
- package/src/doordash/cart-queries.ts +787 -0
- package/src/doordash/client.ts +144 -127
- package/src/doordash/order-queries.ts +85 -0
- package/src/doordash/queries.ts +10 -1308
- package/src/doordash/search-queries.ts +203 -0
- package/src/doordash/session.ts +3 -2
- package/src/doordash/store-queries.ts +246 -0
- package/src/doordash/types.ts +367 -0
- package/src/email/providers/agentmail.ts +2 -1
- package/src/email/providers/index.ts +3 -2
- package/src/email/service.ts +3 -2
- package/src/errors.ts +43 -0
- package/src/home-base/prebuilt/seed.ts +1 -1
- package/src/hooks/cli.ts +6 -5
- package/src/hooks/config.ts +6 -8
- package/src/hooks/discovery.ts +6 -5
- package/src/hooks/manager.ts +4 -3
- package/src/hooks/runner.ts +2 -2
- package/src/hooks/templates.ts +5 -5
- package/src/inbound/public-ingress-urls.ts +3 -1
- package/src/index.ts +4 -2
- package/src/influencer/client.ts +1104 -0
- package/src/instrument.ts +4 -3
- package/src/logfire.ts +4 -3
- package/src/memory/admin.ts +25 -35
- package/src/memory/attachments-store.ts +4 -7
- package/src/memory/channel-delivery-store.ts +30 -1
- package/src/memory/channel-guardian-store.ts +200 -1
- package/src/memory/clarification-resolver.ts +37 -33
- package/src/memory/conflict-store.ts +67 -61
- package/src/memory/contradiction-checker.ts +141 -117
- package/src/memory/conversation-store.ts +335 -51
- package/src/memory/db-connection.ts +27 -4
- package/src/memory/db-init.ts +121 -4
- package/src/memory/db.ts +14 -1
- package/src/memory/embedding-backend.ts +27 -5
- package/src/memory/embedding-ollama.ts +2 -1
- package/src/memory/entity-extractor.ts +38 -35
- package/src/memory/guardian-action-store.ts +430 -0
- package/src/memory/inbox-escalation-projection.ts +59 -0
- package/src/memory/inbox-thread-store.ts +218 -0
- package/src/memory/ingress-invite-store.ts +338 -0
- package/src/memory/ingress-member-store.ts +350 -0
- package/src/memory/items-extractor.ts +91 -97
- package/src/memory/job-handlers/index-maintenance.ts +3 -3
- package/src/memory/job-handlers/media-processing.ts +11 -42
- package/src/memory/job-handlers/summarization.ts +32 -26
- package/src/memory/job-utils.ts +3 -10
- package/src/memory/jobs-store.ts +6 -9
- package/src/memory/jobs-worker.ts +51 -36
- package/src/memory/migrations/001-job-deferrals.ts +45 -0
- package/src/memory/migrations/002-tool-invocations-fk.ts +43 -0
- package/src/memory/migrations/003-memory-fts-backfill.ts +24 -0
- package/src/memory/migrations/004-entity-relation-dedup.ts +87 -0
- package/src/memory/migrations/005-fingerprint-scope-unique.ts +80 -0
- package/src/memory/migrations/006-scope-salted-fingerprints.ts +62 -0
- package/src/memory/migrations/007-assistant-id-to-self.ts +254 -0
- package/src/memory/migrations/008-remove-assistant-id-columns.ts +208 -0
- package/src/memory/migrations/009-llm-usage-events-drop-assistant-id.ts +83 -0
- package/src/memory/migrations/010-ext-conv-bindings-channel-chat-unique.ts +56 -0
- package/src/memory/migrations/011-call-sessions-provider-sid-dedup.ts +63 -0
- package/src/memory/migrations/012-call-sessions-add-initiated-from.ts +19 -0
- package/src/memory/migrations/013-guardian-action-tables.ts +68 -0
- package/src/memory/migrations/014-backfill-inbox-thread-state.ts +76 -0
- package/src/memory/migrations/015-drop-active-search-index.ts +27 -0
- package/src/memory/migrations/016-memory-segments-indexes.ts +11 -0
- package/src/memory/migrations/017-memory-items-indexes.ts +12 -0
- package/src/memory/migrations/018-remaining-table-indexes.ts +13 -0
- package/src/memory/migrations/index.ts +24 -0
- package/src/memory/migrations/registry.ts +79 -0
- package/src/memory/migrations/validate-migration-state.ts +69 -0
- package/src/memory/qdrant-manager.ts +49 -8
- package/src/memory/query-builder.ts +1 -1
- package/src/memory/raw-query.ts +119 -0
- package/src/memory/recall-cache.ts +4 -1
- package/src/memory/retriever.ts +163 -47
- package/src/memory/schema-migration.ts +25 -984
- package/src/memory/schema.ts +130 -7
- package/src/memory/search/entity.ts +10 -19
- package/src/memory/search/lexical.ts +81 -52
- package/src/memory/search/ranking.ts +21 -22
- package/src/memory/search/semantic.ts +157 -19
- package/src/memory/shared-app-links-store.ts +4 -5
- package/src/memory/validation.ts +19 -0
- package/src/messaging/draft-store.ts +5 -6
- package/src/messaging/providers/sms/adapter.ts +3 -6
- package/src/messaging/providers/telegram-bot/adapter.ts +2 -5
- package/src/messaging/providers/whatsapp/adapter.ts +136 -0
- package/src/messaging/providers/whatsapp/client.ts +67 -0
- package/src/messaging/style-analyzer.ts +5 -4
- package/src/messaging/thread-summarizer.ts +61 -69
- package/src/messaging/triage-engine.ts +62 -71
- package/src/migrations/config-merge.ts +53 -0
- package/src/migrations/data-layout.ts +68 -0
- package/src/migrations/data-merge.ts +33 -0
- package/src/migrations/hooks-merge.ts +90 -0
- package/src/migrations/index.ts +6 -0
- package/src/migrations/log.ts +23 -0
- package/src/migrations/skills-merge.ts +33 -0
- package/src/migrations/workspace-layout.ts +79 -0
- package/src/permissions/checker.ts +126 -11
- package/src/permissions/prompter.ts +14 -0
- package/src/permissions/shell-identity.ts +31 -1
- package/src/permissions/trust-store.ts +21 -1
- package/src/providers/anthropic/client.ts +4 -4
- package/src/providers/failover.ts +2 -2
- package/src/providers/model-intents.ts +70 -0
- package/src/providers/ollama/client.ts +2 -1
- package/src/providers/provider-send-message.ts +176 -0
- package/src/providers/registry.ts +71 -30
- package/src/providers/retry.ts +35 -1
- package/src/providers/types.ts +12 -1
- package/src/runtime/approval-conversation-turn.ts +97 -0
- package/src/runtime/approval-message-composer.ts +115 -5
- package/src/runtime/assistant-event-hub.ts +3 -1
- package/src/runtime/channel-approval-parser.ts +36 -2
- package/src/runtime/channel-approvals.ts +0 -21
- package/src/runtime/channel-guardian-service.ts +48 -7
- package/src/runtime/channel-readiness-service.ts +160 -34
- package/src/runtime/channel-readiness-types.ts +10 -4
- package/src/runtime/channel-retry-sweep.ts +184 -0
- package/src/runtime/guardian-context-resolver.ts +108 -0
- package/src/runtime/http-server.ts +289 -745
- package/src/runtime/http-types.ts +56 -3
- package/src/runtime/middleware/auth.ts +116 -0
- package/src/runtime/middleware/error-handler.ts +33 -0
- package/src/runtime/middleware/twilio-validation.ts +127 -0
- package/src/runtime/routes/app-routes.ts +1 -1
- package/src/runtime/routes/call-routes.ts +49 -6
- package/src/runtime/routes/channel-delivery-routes.ts +170 -0
- package/src/runtime/routes/channel-guardian-routes.ts +1191 -0
- package/src/runtime/routes/channel-inbound-routes.ts +1152 -0
- package/src/runtime/routes/channel-route-shared.ts +144 -0
- package/src/runtime/routes/channel-routes.ts +32 -1634
- package/src/runtime/routes/conversation-routes.ts +50 -7
- package/src/runtime/routes/events-routes.ts +2 -2
- package/src/runtime/routes/identity-routes.ts +126 -0
- package/src/runtime/routes/pairing-routes.ts +144 -0
- package/src/runtime/routes/run-routes.ts +15 -1
- package/src/runtime/run-orchestrator.ts +52 -34
- package/src/schedule/schedule-store.ts +36 -32
- package/src/schedule/scheduler.ts +3 -3
- package/src/security/encrypted-store.ts +5 -7
- package/src/security/oauth2.ts +45 -15
- package/src/security/parental-control-store.ts +183 -0
- package/src/security/secret-allowlist.ts +4 -3
- package/src/security/secret-scanner.ts +5 -5
- package/src/security/secure-keys.ts +1 -1
- package/src/security/token-manager.ts +3 -2
- package/src/services/vercel-deploy.ts +6 -2
- package/src/skills/tool-manifest.ts +3 -3
- package/src/skills/vellum-catalog-remote.ts +75 -16
- package/src/slack/slack-webhook.ts +2 -1
- package/src/swarm/orchestrator.ts +92 -1
- package/src/swarm/router-planner.ts +6 -9
- package/src/swarm/worker-prompts.ts +9 -12
- package/src/tasks/task-compiler.ts +19 -28
- package/src/tasks/task-runner.ts +1 -1
- package/src/tools/assets/search.ts +15 -14
- package/src/tools/browser/__tests__/auth-detector.test.ts +1 -0
- package/src/tools/browser/auto-navigate.ts +1 -0
- package/src/tools/browser/browser-execution.ts +13 -1
- package/src/tools/browser/browser-manager.ts +119 -4
- package/src/tools/browser/network-recorder.ts +5 -0
- package/src/tools/credentials/broker.ts +11 -2
- package/src/tools/credentials/metadata-store.ts +18 -14
- package/src/tools/credentials/post-connect-hooks.ts +61 -0
- package/src/tools/credentials/vault.ts +49 -23
- package/src/tools/executor.ts +80 -18
- package/src/tools/host-terminal/cli-discover.ts +1 -1
- package/src/tools/network/script-proxy/http-forwarder.ts +1 -1
- package/src/tools/network/script-proxy/mitm-handler.ts +1 -1
- package/src/tools/network/script-proxy/server.ts +1 -1
- package/src/tools/network/script-proxy/session-manager.ts +6 -5
- package/src/tools/network/web-fetch.ts +18 -2
- package/src/tools/network/web-search.ts +7 -3
- package/src/tools/reminder/reminder-store.ts +14 -15
- package/src/tools/schedule/create.ts +1 -0
- package/src/tools/schedule/list.ts +2 -1
- package/src/tools/shared/filesystem/file-ops-service.ts +5 -7
- package/src/tools/skills/skill-script-runner.ts +24 -9
- package/src/tools/skills/skill-tool-factory.ts +1 -0
- package/src/tools/tasks/work-item-enqueue.ts +2 -2
- package/src/tools/terminal/evaluate-typescript.ts +21 -12
- package/src/tools/terminal/parser.ts +50 -0
- package/src/tools/watcher/delete.ts +6 -0
- package/src/tools/weather/service.ts +1 -1
- package/src/twitter/client.ts +190 -24
- package/src/twitter/session.ts +4 -3
- package/src/util/clipboard.ts +1 -1
- package/src/util/errors.ts +65 -8
- package/src/util/fs.ts +40 -0
- package/src/util/json.ts +10 -0
- package/src/util/log-redact.ts +189 -0
- package/src/util/logger.ts +25 -18
- package/src/util/object.ts +3 -0
- package/src/util/platform.ts +72 -365
- package/src/util/pricing.ts +1 -1
- package/src/util/promise-guard.ts +1 -1
- package/src/util/retry.ts +19 -0
- package/src/util/row-mapper.ts +79 -0
- package/src/util/silently.ts +21 -0
- package/src/watcher/engine.ts +5 -1
- package/src/watcher/provider-types.ts +20 -0
- package/src/watcher/providers/github.ts +156 -0
- package/src/watcher/providers/gmail.ts +1 -0
- package/src/watcher/providers/google-calendar.ts +1 -0
- package/src/watcher/providers/linear.ts +460 -0
- package/src/watcher/providers/slack.ts +1 -0
- package/src/work-items/work-item-runner.ts +1 -1
- package/src/workspace/git-service.ts +1 -1
- package/src/workspace/provider-commit-message-generator.ts +51 -22
- package/src/__tests__/call-bridge.test.ts +0 -517
- package/src/__tests__/session-process-bridge.test.ts +0 -244
- package/src/calls/call-bridge.ts +0 -168
- package/src/config/bundled-skills/media-processing/services/capability-registry.ts +0 -137
- package/src/config/bundled-skills/media-processing/services/event-detection-service.ts +0 -280
- package/src/config/bundled-skills/media-processing/services/feedback-aggregation.ts +0 -144
- package/src/config/bundled-skills/media-processing/services/feedback-store.ts +0 -136
- package/src/config/bundled-skills/media-processing/services/retrieval-service.ts +0 -95
- package/src/config/bundled-skills/media-processing/services/timeline-service.ts +0 -267
- package/src/config/bundled-skills/media-processing/tools/detect-events.ts +0 -110
- package/src/config/bundled-skills/media-processing/tools/recalibrate.ts +0 -235
- package/src/config/bundled-skills/media-processing/tools/select-tracking-profile.ts +0 -142
- package/src/config/bundled-skills/media-processing/tools/submit-feedback.ts +0 -150
- package/src/config/vellum-skills/google-oauth-setup/SKILL.md +0 -199
package/README.md
CHANGED
|
@@ -286,6 +286,57 @@ Response type: `channel_readiness_response` with `success`, optional `snapshots`
|
|
|
286
286
|
| `src/runtime/channel-readiness-service.ts` | Service class with probe registration, cached readiness evaluation, and built-in SMS/Telegram probes |
|
|
287
287
|
| `src/daemon/handlers/config.ts` | `handleChannelReadiness` — IPC handler for `channel_readiness` messages |
|
|
288
288
|
|
|
289
|
+
## Assistant Inbox (Ingress Membership + Escalation)
|
|
290
|
+
|
|
291
|
+
The assistant inbox provides secure cross-user messaging, allowing external users (non-guardians) to interact with the assistant through channels (Telegram, SMS) under the owner's control. Access is governed by an invite-based membership system with per-member policy enforcement.
|
|
292
|
+
|
|
293
|
+
### Ingress Membership
|
|
294
|
+
|
|
295
|
+
External users join through **invite tokens** — the owner creates an invite via the desktop UI or IPC, and the external user redeems the token by sending it as a channel message. Redemption auto-creates a **member** record with an access policy:
|
|
296
|
+
|
|
297
|
+
- **`allow`** — Messages are processed normally through the agent pipeline.
|
|
298
|
+
- **`deny`** — Messages are rejected with a refusal notice.
|
|
299
|
+
- **`escalate`** — Messages are held for guardian (owner) approval before processing.
|
|
300
|
+
|
|
301
|
+
Non-members (senders with no invite redemption) are denied by default. Members can be listed, updated, revoked, or blocked via the `ingress_member` IPC contract.
|
|
302
|
+
|
|
303
|
+
### Escalation Flow (Dual-Surface)
|
|
304
|
+
|
|
305
|
+
When a member's policy is `escalate`, inbound messages create a `channel_guardian_approval_request` and notify the guardian through two surfaces:
|
|
306
|
+
|
|
307
|
+
1. **Channel push notification** — The guardian receives a message on their configured channel (Telegram/SMS) describing the escalation, allowing quick approve/deny from their phone.
|
|
308
|
+
2. **Desktop inbox UI** — The macOS `AssistantInboxPanel` shows pending escalations with approve/deny buttons in the Escalations tab. A 15-second polling loop keeps the queue current.
|
|
309
|
+
|
|
310
|
+
On **approve**: the original message payload is recovered from the channel delivery store and processed through the agent pipeline. The assistant's reply is delivered back to the external user via the gateway. On **deny**: a refusal message is sent to the external user.
|
|
311
|
+
|
|
312
|
+
If no guardian binding exists, escalation fails closed — the message is denied rather than left in a silent wait state.
|
|
313
|
+
|
|
314
|
+
### Inbox Thread State
|
|
315
|
+
|
|
316
|
+
The `assistant_inbox_thread_state` table provides a denormalized view of per-contact conversation threads, tracking unread counts, pending escalation counts, and last message timestamps. Threads are keyed by `conversationId` and bound to `(assistantId, sourceChannel, externalChatId)`. The escalation projection (`inbox-escalation-projection.ts`) keeps badge counts in sync with the `channel_guardian_approval_requests` table.
|
|
317
|
+
|
|
318
|
+
### IPC Contracts
|
|
319
|
+
|
|
320
|
+
| Message Type | Actions | Description |
|
|
321
|
+
|---|---|---|
|
|
322
|
+
| `ingress_invite` | create, list, revoke, redeem | Manage invite tokens (SHA-256 hashed, raw token returned once on create) |
|
|
323
|
+
| `ingress_member` | list, upsert, revoke, block | Manage member records and access policies |
|
|
324
|
+
| `assistant_inbox` | list_threads, get_thread_messages | Query inbox threads and message history |
|
|
325
|
+
| `assistant_inbox_escalation` | list, decide | List pending escalations and approve/deny from desktop |
|
|
326
|
+
| `assistant_inbox_reply` | — | Send a reply to an external user from the desktop inbox |
|
|
327
|
+
|
|
328
|
+
### Key Modules
|
|
329
|
+
|
|
330
|
+
| File | Purpose |
|
|
331
|
+
|------|---------|
|
|
332
|
+
| `src/memory/ingress-invite-store.ts` | CRUD for invite tokens with SHA-256 hashing and expiry |
|
|
333
|
+
| `src/memory/ingress-member-store.ts` | CRUD for ingress members with policy enforcement |
|
|
334
|
+
| `src/memory/inbox-thread-store.ts` | Inbox thread state queries (unread counts, escalation badges) |
|
|
335
|
+
| `src/memory/inbox-escalation-projection.ts` | Projects escalation state from approval requests onto thread state |
|
|
336
|
+
| `src/daemon/handlers/config-inbox.ts` | IPC handlers for all inbox contracts |
|
|
337
|
+
| `src/daemon/ipc-contract/inbox.ts` | TypeScript type definitions for inbox IPC messages |
|
|
338
|
+
| `src/runtime/routes/channel-routes.ts` | ACL enforcement point — member lookup, policy check, escalation creation |
|
|
339
|
+
|
|
289
340
|
## Database
|
|
290
341
|
|
|
291
342
|
SQLite via Drizzle ORM, stored at `~/.vellum/workspace/data/db/assistant.db`. Key tables include conversations, messages, tool invocations, attachments, memory segments (with FTS5), memory items, entities, reminders, and recurrence schedules (cron + RRULE).
|
package/eslint.config.mjs
CHANGED
|
@@ -10,6 +10,37 @@ const eslintConfig = defineConfig([
|
|
|
10
10
|
"error",
|
|
11
11
|
{ argsIgnorePattern: "^_", varsIgnorePattern: "^_" },
|
|
12
12
|
],
|
|
13
|
+
|
|
14
|
+
// Standardize on `undefined` only — avoid `null` in new code.
|
|
15
|
+
// Prefer `=== undefined`, `?? fallback`, or `?.` optional chaining
|
|
16
|
+
// instead of `=== null`.
|
|
17
|
+
"no-restricted-syntax": [
|
|
18
|
+
"error",
|
|
19
|
+
{
|
|
20
|
+
selector:
|
|
21
|
+
"BinaryExpression[operator='==='][right.type='Literal'][right.raw='null']",
|
|
22
|
+
message:
|
|
23
|
+
"Avoid `=== null`. Prefer `=== undefined`, `?? fallback`, or optional chaining `?.` instead.",
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
selector:
|
|
27
|
+
"BinaryExpression[operator='==='][left.type='Literal'][left.raw='null']",
|
|
28
|
+
message:
|
|
29
|
+
"Avoid `null ===`. Prefer `=== undefined`, `?? fallback`, or optional chaining `?.` instead.",
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
selector:
|
|
33
|
+
"BinaryExpression[operator='!=='][right.type='Literal'][right.raw='null']",
|
|
34
|
+
message:
|
|
35
|
+
"Avoid `!== null`. Prefer `!== undefined`, nullish coalescing `??`, or optional chaining `?.` instead.",
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
selector:
|
|
39
|
+
"BinaryExpression[operator='!=='][left.type='Literal'][left.raw='null']",
|
|
40
|
+
message:
|
|
41
|
+
"Avoid `null !==`. Prefer `!== undefined`, nullish coalescing `??`, or optional chaining `?.` instead.",
|
|
42
|
+
},
|
|
43
|
+
],
|
|
13
44
|
},
|
|
14
45
|
},
|
|
15
46
|
]);
|
package/package.json
CHANGED
|
@@ -53,6 +53,9 @@ const SWIFT_OMIT_ALLOWLIST = new Set<string>([
|
|
|
53
53
|
'browser_handoff_request',
|
|
54
54
|
// Guardian verification — daemon-internal for Telegram channel setup
|
|
55
55
|
'guardian_verification_response',
|
|
56
|
+
// Ingress invite/member management — not yet consumed by the macOS client
|
|
57
|
+
'ingress_invite_response',
|
|
58
|
+
'ingress_member_response',
|
|
56
59
|
// Work item messages — not yet consumed by the macOS client
|
|
57
60
|
'work_item_get_response',
|
|
58
61
|
'work_item_run_task_response',
|
|
@@ -99,7 +102,7 @@ function extractSwiftDecodeCases(swiftSource: string): Set<string> {
|
|
|
99
102
|
|
|
100
103
|
const decoderSection = swiftSource.slice(decoderStart);
|
|
101
104
|
|
|
102
|
-
while ((match = re.exec(decoderSection))
|
|
105
|
+
while ((match = re.exec(decoderSection)) != null) {
|
|
103
106
|
cases.add(match[1]);
|
|
104
107
|
}
|
|
105
108
|
|
|
@@ -21,11 +21,25 @@ import * as TJS from 'typescript-json-schema';
|
|
|
21
21
|
|
|
22
22
|
const ROOT = path.resolve(import.meta.dirname ?? __dirname, '../..');
|
|
23
23
|
const CONTRACT_PATH = path.join(ROOT, 'src/daemon/ipc-contract.ts');
|
|
24
|
+
const DOMAIN_DIR = path.join(ROOT, 'src/daemon/ipc-contract');
|
|
24
25
|
const OUTPUT_PATH = path.resolve(
|
|
25
26
|
ROOT,
|
|
26
27
|
'../clients/shared/IPC/Generated/IPCContractGenerated.swift',
|
|
27
28
|
);
|
|
28
29
|
|
|
30
|
+
/** Collect all .ts files: the barrel + domain files. */
|
|
31
|
+
function getContractFiles(): string[] {
|
|
32
|
+
const files = [CONTRACT_PATH];
|
|
33
|
+
if (fs.existsSync(DOMAIN_DIR)) {
|
|
34
|
+
for (const f of fs.readdirSync(DOMAIN_DIR)) {
|
|
35
|
+
if (f.endsWith('.ts')) {
|
|
36
|
+
files.push(path.join(DOMAIN_DIR, f));
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return files;
|
|
41
|
+
}
|
|
42
|
+
|
|
29
43
|
const PREAMBLE = `// AUTO-GENERATED from assistant/src/daemon/ipc-contract.ts — DO NOT EDIT
|
|
30
44
|
// Regenerate: cd assistant && bun run generate:ipc
|
|
31
45
|
//
|
|
@@ -76,7 +90,9 @@ interface SchemaDef {
|
|
|
76
90
|
// --- Step 1: Generate JSON Schema from TypeScript ---
|
|
77
91
|
|
|
78
92
|
function generateSchemas(): Record<string, SchemaDef> {
|
|
79
|
-
const
|
|
93
|
+
const contractFiles = getContractFiles();
|
|
94
|
+
|
|
95
|
+
const program = TJS.getProgramFromFiles(contractFiles, {
|
|
80
96
|
strict: true,
|
|
81
97
|
target: 99,
|
|
82
98
|
module: 199,
|
|
@@ -95,7 +111,7 @@ function generateSchemas(): Record<string, SchemaDef> {
|
|
|
95
111
|
throw new Error('Failed to create schema generator');
|
|
96
112
|
}
|
|
97
113
|
|
|
98
|
-
const symbols = generator.getMainFileSymbols(program,
|
|
114
|
+
const symbols = generator.getMainFileSymbols(program, contractFiles);
|
|
99
115
|
const result: Record<string, SchemaDef> = {};
|
|
100
116
|
|
|
101
117
|
const skipped: string[] = [];
|
|
@@ -37,7 +37,7 @@ exports[`IPC message snapshots ClientMessage types session_create serializes to
|
|
|
37
37
|
"threadType": "standard",
|
|
38
38
|
"title": "New session",
|
|
39
39
|
"transport": {
|
|
40
|
-
"channelId": "
|
|
40
|
+
"channelId": "macos",
|
|
41
41
|
"hints": [
|
|
42
42
|
"dashboard-capable",
|
|
43
43
|
],
|
|
@@ -374,6 +374,13 @@ exports[`IPC message snapshots ClientMessage types schedule_remove serializes to
|
|
|
374
374
|
}
|
|
375
375
|
`;
|
|
376
376
|
|
|
377
|
+
exports[`IPC message snapshots ClientMessage types schedule_run_now serializes to expected JSON 1`] = `
|
|
378
|
+
{
|
|
379
|
+
"id": "sched-001",
|
|
380
|
+
"type": "schedule_run_now",
|
|
381
|
+
}
|
|
382
|
+
`;
|
|
383
|
+
|
|
377
384
|
exports[`IPC message snapshots ClientMessage types reminders_list serializes to expected JSON 1`] = `
|
|
378
385
|
{
|
|
379
386
|
"type": "reminders_list",
|
|
@@ -475,6 +482,15 @@ exports[`IPC message snapshots ClientMessage types sessions_clear serializes to
|
|
|
475
482
|
}
|
|
476
483
|
`;
|
|
477
484
|
|
|
485
|
+
exports[`IPC message snapshots ClientMessage types conversation_search serializes to expected JSON 1`] = `
|
|
486
|
+
{
|
|
487
|
+
"limit": 20,
|
|
488
|
+
"maxMessagesPerConversation": 3,
|
|
489
|
+
"query": "hello world",
|
|
490
|
+
"type": "conversation_search",
|
|
491
|
+
}
|
|
492
|
+
`;
|
|
493
|
+
|
|
478
494
|
exports[`IPC message snapshots ClientMessage types ipc_blob_probe serializes to expected JSON 1`] = `
|
|
479
495
|
{
|
|
480
496
|
"nonceSha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
|
@@ -931,6 +947,95 @@ exports[`IPC message snapshots ClientMessage types dictation_request serializes
|
|
|
931
947
|
}
|
|
932
948
|
`;
|
|
933
949
|
|
|
950
|
+
exports[`IPC message snapshots ClientMessage types parental_control_get serializes to expected JSON 1`] = `
|
|
951
|
+
{
|
|
952
|
+
"type": "parental_control_get",
|
|
953
|
+
}
|
|
954
|
+
`;
|
|
955
|
+
|
|
956
|
+
exports[`IPC message snapshots ClientMessage types parental_control_verify_pin serializes to expected JSON 1`] = `
|
|
957
|
+
{
|
|
958
|
+
"pin": "123456",
|
|
959
|
+
"type": "parental_control_verify_pin",
|
|
960
|
+
}
|
|
961
|
+
`;
|
|
962
|
+
|
|
963
|
+
exports[`IPC message snapshots ClientMessage types parental_control_set_pin serializes to expected JSON 1`] = `
|
|
964
|
+
{
|
|
965
|
+
"current_pin": "123456",
|
|
966
|
+
"new_pin": "654321",
|
|
967
|
+
"type": "parental_control_set_pin",
|
|
968
|
+
}
|
|
969
|
+
`;
|
|
970
|
+
|
|
971
|
+
exports[`IPC message snapshots ClientMessage types parental_control_update serializes to expected JSON 1`] = `
|
|
972
|
+
{
|
|
973
|
+
"blocked_tool_categories": [
|
|
974
|
+
"shell",
|
|
975
|
+
"network",
|
|
976
|
+
],
|
|
977
|
+
"content_restrictions": [
|
|
978
|
+
"violence",
|
|
979
|
+
"adult_content",
|
|
980
|
+
],
|
|
981
|
+
"enabled": true,
|
|
982
|
+
"pin": "123456",
|
|
983
|
+
"type": "parental_control_update",
|
|
984
|
+
}
|
|
985
|
+
`;
|
|
986
|
+
|
|
987
|
+
exports[`IPC message snapshots ClientMessage types ingress_invite serializes to expected JSON 1`] = `
|
|
988
|
+
{
|
|
989
|
+
"action": "create",
|
|
990
|
+
"expiresInMs": 86400000,
|
|
991
|
+
"maxUses": 5,
|
|
992
|
+
"note": "Test invite",
|
|
993
|
+
"sourceChannel": "telegram",
|
|
994
|
+
"type": "ingress_invite",
|
|
995
|
+
}
|
|
996
|
+
`;
|
|
997
|
+
|
|
998
|
+
exports[`IPC message snapshots ClientMessage types ingress_member serializes to expected JSON 1`] = `
|
|
999
|
+
{
|
|
1000
|
+
"action": "upsert",
|
|
1001
|
+
"displayName": "Test User",
|
|
1002
|
+
"externalChatId": "chat-456",
|
|
1003
|
+
"externalUserId": "user-123",
|
|
1004
|
+
"policy": "allow",
|
|
1005
|
+
"sourceChannel": "telegram",
|
|
1006
|
+
"status": "active",
|
|
1007
|
+
"type": "ingress_member",
|
|
1008
|
+
"username": "testuser",
|
|
1009
|
+
}
|
|
1010
|
+
`;
|
|
1011
|
+
|
|
1012
|
+
exports[`IPC message snapshots ClientMessage types assistant_inbox serializes to expected JSON 1`] = `
|
|
1013
|
+
{
|
|
1014
|
+
"action": "list_threads",
|
|
1015
|
+
"assistantId": "asst-001",
|
|
1016
|
+
"limit": 20,
|
|
1017
|
+
"offset": 0,
|
|
1018
|
+
"type": "assistant_inbox",
|
|
1019
|
+
}
|
|
1020
|
+
`;
|
|
1021
|
+
|
|
1022
|
+
exports[`IPC message snapshots ClientMessage types assistant_inbox_escalation serializes to expected JSON 1`] = `
|
|
1023
|
+
{
|
|
1024
|
+
"action": "list",
|
|
1025
|
+
"assistantId": "asst-001",
|
|
1026
|
+
"status": "pending",
|
|
1027
|
+
"type": "assistant_inbox_escalation",
|
|
1028
|
+
}
|
|
1029
|
+
`;
|
|
1030
|
+
|
|
1031
|
+
exports[`IPC message snapshots ClientMessage types assistant_inbox_reply serializes to expected JSON 1`] = `
|
|
1032
|
+
{
|
|
1033
|
+
"content": "Hello from the assistant",
|
|
1034
|
+
"conversationId": "conv-001",
|
|
1035
|
+
"type": "assistant_inbox_reply",
|
|
1036
|
+
}
|
|
1037
|
+
`;
|
|
1038
|
+
|
|
934
1039
|
exports[`IPC message snapshots ServerMessage types auth_result serializes to expected JSON 1`] = `
|
|
935
1040
|
{
|
|
936
1041
|
"success": true,
|
|
@@ -1086,6 +1191,14 @@ exports[`IPC message snapshots ServerMessage types session_info serializes to ex
|
|
|
1086
1191
|
}
|
|
1087
1192
|
`;
|
|
1088
1193
|
|
|
1194
|
+
exports[`IPC message snapshots ServerMessage types session_title_updated serializes to expected JSON 1`] = `
|
|
1195
|
+
{
|
|
1196
|
+
"sessionId": "sess-001",
|
|
1197
|
+
"title": "Plan sprint rollout",
|
|
1198
|
+
"type": "session_title_updated",
|
|
1199
|
+
}
|
|
1200
|
+
`;
|
|
1201
|
+
|
|
1089
1202
|
exports[`IPC message snapshots ServerMessage types session_list_response serializes to expected JSON 1`] = `
|
|
1090
1203
|
{
|
|
1091
1204
|
"sessions": [
|
|
@@ -1113,6 +1226,28 @@ exports[`IPC message snapshots ServerMessage types sessions_clear_response seria
|
|
|
1113
1226
|
}
|
|
1114
1227
|
`;
|
|
1115
1228
|
|
|
1229
|
+
exports[`IPC message snapshots ServerMessage types conversation_search_response serializes to expected JSON 1`] = `
|
|
1230
|
+
{
|
|
1231
|
+
"query": "hello world",
|
|
1232
|
+
"results": [
|
|
1233
|
+
{
|
|
1234
|
+
"conversationId": "conv-001",
|
|
1235
|
+
"conversationTitle": "My Conversation",
|
|
1236
|
+
"conversationUpdatedAt": 1700000000,
|
|
1237
|
+
"matchingMessages": [
|
|
1238
|
+
{
|
|
1239
|
+
"createdAt": 1699999000,
|
|
1240
|
+
"excerpt": "…hello world, how are you?…",
|
|
1241
|
+
"messageId": "msg-001",
|
|
1242
|
+
"role": "user",
|
|
1243
|
+
},
|
|
1244
|
+
],
|
|
1245
|
+
},
|
|
1246
|
+
],
|
|
1247
|
+
"type": "conversation_search_response",
|
|
1248
|
+
}
|
|
1249
|
+
`;
|
|
1250
|
+
|
|
1116
1251
|
exports[`IPC message snapshots ServerMessage types error serializes to expected JSON 1`] = `
|
|
1117
1252
|
{
|
|
1118
1253
|
"message": "Something went wrong",
|
|
@@ -2475,6 +2610,17 @@ exports[`IPC message snapshots ServerMessage types task_run_thread_created seria
|
|
|
2475
2610
|
}
|
|
2476
2611
|
`;
|
|
2477
2612
|
|
|
2613
|
+
exports[`IPC message snapshots ServerMessage types guardian_request_thread_created serializes to expected JSON 1`] = `
|
|
2614
|
+
{
|
|
2615
|
+
"callSessionId": "call-001",
|
|
2616
|
+
"conversationId": "conv-guardian-001",
|
|
2617
|
+
"questionText": "What is the gate code?",
|
|
2618
|
+
"requestId": "req-guardian-001",
|
|
2619
|
+
"title": "Guardian action request",
|
|
2620
|
+
"type": "guardian_request_thread_created",
|
|
2621
|
+
}
|
|
2622
|
+
`;
|
|
2623
|
+
|
|
2478
2624
|
exports[`IPC message snapshots ServerMessage types subagent_spawned serializes to expected JSON 1`] = `
|
|
2479
2625
|
{
|
|
2480
2626
|
"label": "Research Agent",
|
|
@@ -2599,3 +2745,194 @@ exports[`IPC message snapshots ServerMessage types dictation_response serializes
|
|
|
2599
2745
|
"type": "dictation_response",
|
|
2600
2746
|
}
|
|
2601
2747
|
`;
|
|
2748
|
+
|
|
2749
|
+
exports[`IPC message snapshots ServerMessage types parental_control_get_response serializes to expected JSON 1`] = `
|
|
2750
|
+
{
|
|
2751
|
+
"blocked_tool_categories": [
|
|
2752
|
+
"shell",
|
|
2753
|
+
"network",
|
|
2754
|
+
],
|
|
2755
|
+
"content_restrictions": [
|
|
2756
|
+
"violence",
|
|
2757
|
+
"adult_content",
|
|
2758
|
+
],
|
|
2759
|
+
"enabled": true,
|
|
2760
|
+
"has_pin": true,
|
|
2761
|
+
"type": "parental_control_get_response",
|
|
2762
|
+
}
|
|
2763
|
+
`;
|
|
2764
|
+
|
|
2765
|
+
exports[`IPC message snapshots ServerMessage types parental_control_verify_pin_response serializes to expected JSON 1`] = `
|
|
2766
|
+
{
|
|
2767
|
+
"type": "parental_control_verify_pin_response",
|
|
2768
|
+
"verified": true,
|
|
2769
|
+
}
|
|
2770
|
+
`;
|
|
2771
|
+
|
|
2772
|
+
exports[`IPC message snapshots ServerMessage types parental_control_set_pin_response serializes to expected JSON 1`] = `
|
|
2773
|
+
{
|
|
2774
|
+
"success": true,
|
|
2775
|
+
"type": "parental_control_set_pin_response",
|
|
2776
|
+
}
|
|
2777
|
+
`;
|
|
2778
|
+
|
|
2779
|
+
exports[`IPC message snapshots ServerMessage types parental_control_update_response serializes to expected JSON 1`] = `
|
|
2780
|
+
{
|
|
2781
|
+
"blocked_tool_categories": [
|
|
2782
|
+
"shell",
|
|
2783
|
+
"network",
|
|
2784
|
+
],
|
|
2785
|
+
"content_restrictions": [
|
|
2786
|
+
"violence",
|
|
2787
|
+
"adult_content",
|
|
2788
|
+
],
|
|
2789
|
+
"enabled": true,
|
|
2790
|
+
"has_pin": true,
|
|
2791
|
+
"success": true,
|
|
2792
|
+
"type": "parental_control_update_response",
|
|
2793
|
+
}
|
|
2794
|
+
`;
|
|
2795
|
+
|
|
2796
|
+
exports[`IPC message snapshots ServerMessage types ingress_invite_response serializes to expected JSON 1`] = `
|
|
2797
|
+
{
|
|
2798
|
+
"invite": {
|
|
2799
|
+
"createdAt": 1700000000,
|
|
2800
|
+
"expiresAt": 1700100000000,
|
|
2801
|
+
"id": "inv-001",
|
|
2802
|
+
"maxUses": 5,
|
|
2803
|
+
"note": "Test invite",
|
|
2804
|
+
"sourceChannel": "telegram",
|
|
2805
|
+
"status": "active",
|
|
2806
|
+
"token": "tok-abc123",
|
|
2807
|
+
"tokenHash": "hash-abc123",
|
|
2808
|
+
"useCount": 0,
|
|
2809
|
+
},
|
|
2810
|
+
"success": true,
|
|
2811
|
+
"type": "ingress_invite_response",
|
|
2812
|
+
}
|
|
2813
|
+
`;
|
|
2814
|
+
|
|
2815
|
+
exports[`IPC message snapshots ServerMessage types ingress_member_response serializes to expected JSON 1`] = `
|
|
2816
|
+
{
|
|
2817
|
+
"member": {
|
|
2818
|
+
"createdAt": 1700000000,
|
|
2819
|
+
"displayName": "Test User",
|
|
2820
|
+
"externalChatId": "chat-456",
|
|
2821
|
+
"externalUserId": "user-123",
|
|
2822
|
+
"id": "mem-001",
|
|
2823
|
+
"lastSeenAt": 1700000000,
|
|
2824
|
+
"policy": "allow",
|
|
2825
|
+
"sourceChannel": "telegram",
|
|
2826
|
+
"status": "active",
|
|
2827
|
+
"username": "testuser",
|
|
2828
|
+
},
|
|
2829
|
+
"success": true,
|
|
2830
|
+
"type": "ingress_member_response",
|
|
2831
|
+
}
|
|
2832
|
+
`;
|
|
2833
|
+
|
|
2834
|
+
exports[`IPC message snapshots ServerMessage types assistant_inbox_response serializes to expected JSON 1`] = `
|
|
2835
|
+
{
|
|
2836
|
+
"success": true,
|
|
2837
|
+
"threads": [
|
|
2838
|
+
{
|
|
2839
|
+
"conversationId": "conv-001",
|
|
2840
|
+
"displayName": "Test User",
|
|
2841
|
+
"externalChatId": "chat-456",
|
|
2842
|
+
"externalUserId": "user-123",
|
|
2843
|
+
"hasPendingEscalation": false,
|
|
2844
|
+
"lastInboundAt": 1700000000,
|
|
2845
|
+
"lastMessageAt": 1700000000,
|
|
2846
|
+
"lastOutboundAt": 1699999000,
|
|
2847
|
+
"sourceChannel": "telegram",
|
|
2848
|
+
"unreadCount": 3,
|
|
2849
|
+
"username": "testuser",
|
|
2850
|
+
},
|
|
2851
|
+
],
|
|
2852
|
+
"type": "assistant_inbox_response",
|
|
2853
|
+
}
|
|
2854
|
+
`;
|
|
2855
|
+
|
|
2856
|
+
exports[`IPC message snapshots ServerMessage types assistant_inbox_escalation_response serializes to expected JSON 1`] = `
|
|
2857
|
+
{
|
|
2858
|
+
"escalations": [
|
|
2859
|
+
{
|
|
2860
|
+
"channel": "telegram",
|
|
2861
|
+
"conversationId": "conv-001",
|
|
2862
|
+
"createdAt": 1700000000,
|
|
2863
|
+
"id": "esc-001",
|
|
2864
|
+
"requestSummary": "User wants to delete their account",
|
|
2865
|
+
"requesterChatId": "chat-456",
|
|
2866
|
+
"requesterExternalUserId": "user-123",
|
|
2867
|
+
"runId": "run-001",
|
|
2868
|
+
"status": "pending",
|
|
2869
|
+
},
|
|
2870
|
+
],
|
|
2871
|
+
"success": true,
|
|
2872
|
+
"type": "assistant_inbox_escalation_response",
|
|
2873
|
+
}
|
|
2874
|
+
`;
|
|
2875
|
+
|
|
2876
|
+
exports[`IPC message snapshots ServerMessage types assistant_inbox_reply_response serializes to expected JSON 1`] = `
|
|
2877
|
+
{
|
|
2878
|
+
"messageId": "msg-reply-001",
|
|
2879
|
+
"success": true,
|
|
2880
|
+
"type": "assistant_inbox_reply_response",
|
|
2881
|
+
}
|
|
2882
|
+
`;
|
|
2883
|
+
|
|
2884
|
+
exports[`IPC message snapshots ClientMessage types pairing_approval_response serializes to expected JSON 1`] = `
|
|
2885
|
+
{
|
|
2886
|
+
"decision": "approve_once",
|
|
2887
|
+
"pairingRequestId": "pair-001",
|
|
2888
|
+
"type": "pairing_approval_response",
|
|
2889
|
+
}
|
|
2890
|
+
`;
|
|
2891
|
+
|
|
2892
|
+
exports[`IPC message snapshots ClientMessage types approved_devices_list serializes to expected JSON 1`] = `
|
|
2893
|
+
{
|
|
2894
|
+
"type": "approved_devices_list",
|
|
2895
|
+
}
|
|
2896
|
+
`;
|
|
2897
|
+
|
|
2898
|
+
exports[`IPC message snapshots ClientMessage types approved_device_remove serializes to expected JSON 1`] = `
|
|
2899
|
+
{
|
|
2900
|
+
"hashedDeviceId": "hashed-device-001",
|
|
2901
|
+
"type": "approved_device_remove",
|
|
2902
|
+
}
|
|
2903
|
+
`;
|
|
2904
|
+
|
|
2905
|
+
exports[`IPC message snapshots ClientMessage types approved_devices_clear serializes to expected JSON 1`] = `
|
|
2906
|
+
{
|
|
2907
|
+
"type": "approved_devices_clear",
|
|
2908
|
+
}
|
|
2909
|
+
`;
|
|
2910
|
+
|
|
2911
|
+
exports[`IPC message snapshots ServerMessage types pairing_approval_request serializes to expected JSON 1`] = `
|
|
2912
|
+
{
|
|
2913
|
+
"deviceId": "device-001",
|
|
2914
|
+
"deviceName": "iPhone 15",
|
|
2915
|
+
"pairingRequestId": "pair-001",
|
|
2916
|
+
"type": "pairing_approval_request",
|
|
2917
|
+
}
|
|
2918
|
+
`;
|
|
2919
|
+
|
|
2920
|
+
exports[`IPC message snapshots ServerMessage types approved_devices_list_response serializes to expected JSON 1`] = `
|
|
2921
|
+
{
|
|
2922
|
+
"devices": [
|
|
2923
|
+
{
|
|
2924
|
+
"deviceName": "iPhone 15",
|
|
2925
|
+
"hashedDeviceId": "hashed-device-001",
|
|
2926
|
+
"lastPairedAt": 1700000000000,
|
|
2927
|
+
},
|
|
2928
|
+
],
|
|
2929
|
+
"type": "approved_devices_list_response",
|
|
2930
|
+
}
|
|
2931
|
+
`;
|
|
2932
|
+
|
|
2933
|
+
exports[`IPC message snapshots ServerMessage types approved_device_remove_response serializes to expected JSON 1`] = `
|
|
2934
|
+
{
|
|
2935
|
+
"success": true,
|
|
2936
|
+
"type": "approved_device_remove_response",
|
|
2937
|
+
}
|
|
2938
|
+
`;
|