@vellumai/assistant 0.12.1-staging.2 → 0.12.2-staging.1
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/AGENTS.md +4 -0
- package/ARCHITECTURE.md +20 -21
- package/docs/architecture/turn-actor.md +15 -8
- package/docs/guardian-request-flow.md +16 -0
- package/openapi.yaml +327 -52
- package/package.json +3 -1
- package/scripts/smoke-desktop-window-theme.ts +186 -0
- package/src/__tests__/always-loaded-tools-guard.test.ts +18 -10
- package/src/__tests__/anthropic-provider.test.ts +0 -63
- package/src/__tests__/app-compiler.test.ts +6 -0
- package/src/__tests__/app-control-tool-schemas.test.ts +5 -2
- package/src/__tests__/app-dir-path-guard.test.ts +1 -3
- package/src/__tests__/assistant-event-hub-machine-name.test.ts +6 -7
- package/src/__tests__/assistant-event-hub.test.ts +44 -0
- package/src/__tests__/computer-use-skill-manifest-regression.test.ts +1 -1
- package/src/__tests__/computer-use-skill-proxy-bridge.test.ts +5 -2
- package/src/__tests__/computer-use-tools.test.ts +19 -7
- package/src/__tests__/config-schema-cmd.test.ts +2 -2
- package/src/__tests__/config-schema.test.ts +28 -29
- package/src/__tests__/config-watcher.test.ts +23 -8
- package/src/__tests__/connection-model-compat.test.ts +2 -2
- package/src/__tests__/conversation-key-store-disk-view.test.ts +1 -1
- package/src/__tests__/conversation-pairing.test.ts +26 -0
- package/src/__tests__/conversation-process-app-control-preactivation.test.ts +4 -10
- package/src/__tests__/conversation-queue.test.ts +48 -207
- package/src/__tests__/conversation-retry-discard.test.ts +54 -1
- package/src/__tests__/conversation-skill-tools.test.ts +27 -0
- package/src/__tests__/conversation-surfaces-app-control.test.ts +8 -3
- package/src/__tests__/conversation-surfaces-task-progress.test.ts +67 -0
- package/src/__tests__/conversation-title-service.test.ts +14 -10
- package/src/__tests__/conversation-tool-setup-app-refresh.test.ts +3 -5
- package/src/__tests__/conversation-tool-setup-attribution.test.ts +51 -0
- package/src/__tests__/credential-record-retire.test.ts +171 -1
- package/src/__tests__/credential-routes.test.ts +212 -3
- package/src/__tests__/credential-security-invariants.test.ts +4 -2
- package/src/__tests__/cu-unified-flow.test.ts +8 -2
- package/src/__tests__/document-sync-tags.test.ts +25 -0
- package/src/__tests__/drain-kick-guard.test.ts +0 -2
- package/src/__tests__/drain-requeue-on-contention.test.ts +0 -6
- package/src/__tests__/evict-conversations-for-reload.test.ts +1 -1
- package/src/__tests__/git-porcelain.test.ts +47 -0
- package/src/__tests__/heartbeat-service.test.ts +56 -40
- package/src/__tests__/helpers/set-workspace-mcp.ts +11 -0
- package/src/__tests__/host-bash-proxy.test.ts +26 -45
- package/src/__tests__/host-browser-proxy.test.ts +6 -17
- package/src/__tests__/host-cu-proxy.test.ts +539 -0
- package/src/__tests__/host-file-proxy-targeted.test.ts +23 -0
- package/src/__tests__/host-file-proxy.test.ts +11 -23
- package/src/__tests__/host-transfer-proxy-targeted.test.ts +30 -9
- package/src/__tests__/list-messages-camera-frame.test.ts +121 -0
- package/src/__tests__/llm-catalog-parity.test.ts +25 -0
- package/src/__tests__/mcp-auth-routes.test.ts +6 -9
- package/src/__tests__/mcp-config-secret-boundary.test.ts +78 -136
- package/src/__tests__/mcp-health-check.test.ts +8 -11
- package/src/__tests__/mcp-list-plugin-servers.test.ts +8 -10
- package/src/__tests__/message-deleted-hook-dispatch.test.ts +119 -0
- package/src/__tests__/messages-after-tiebreaker.test.ts +91 -0
- package/src/__tests__/messages-read-boundary-guard.test.ts +1 -1
- package/src/__tests__/messaging-send-tool.test.ts +355 -548
- package/src/__tests__/model-intents.test.ts +3 -0
- package/src/__tests__/notification-vellum-adapter.test.ts +85 -2
- package/src/__tests__/oauth-commands-routes.test.ts +113 -0
- package/src/__tests__/oauth-provider-profiles.test.ts +18 -0
- package/src/__tests__/openai-provider.test.ts +1 -0
- package/src/__tests__/outlook-messaging-provider.test.ts +6 -6
- package/src/__tests__/platform-callback-registration.test.ts +8 -16
- package/src/__tests__/platform-client-verify-credential.test.ts +2 -0
- package/src/__tests__/plugin-import-boundary-guard.test.ts +14 -0
- package/src/__tests__/qdrant-manager.test.ts +132 -0
- package/src/__tests__/resolve-app.test.ts +135 -0
- package/src/__tests__/scaffold-managed-skill-tool.test.ts +229 -6
- package/src/__tests__/script-proxy-certs.test.ts +35 -0
- package/src/__tests__/service-account-token.test.ts +247 -0
- package/src/__tests__/skill-feature-flags-integration.test.ts +1 -1
- package/src/__tests__/skill-feature-flags.test.ts +2 -2
- package/src/__tests__/skills.test.ts +9 -4
- package/src/__tests__/source-fingerprint.test.ts +184 -0
- package/src/__tests__/subagent-tool-gate-mode.test.ts +19 -3
- package/src/__tests__/subagent-tools.test.ts +3 -2
- package/src/__tests__/telephony-tts-guard.test.ts +38 -3
- package/src/__tests__/test-support/computer-use-skill-harness.ts +3 -2
- package/src/__tests__/unicode.test.ts +13 -0
- package/src/__tests__/vellum-self-knowledge-inline-command.test.ts +4 -0
- package/src/__tests__/watch-retro-tool-availability.test.ts +8 -17
- package/src/__tests__/workspace-git-service.test.ts +26 -0
- package/src/__tests__/workspace-migration-154-repair-retired-codex-gpt-5-4-model-ids.test.ts +336 -0
- package/src/acp/__tests__/agent-process.test.ts +258 -4
- package/src/acp/__tests__/auth-required.test.ts +96 -0
- package/src/acp/__tests__/client-handler.test.ts +90 -2
- package/src/acp/__tests__/helpers/acp-model-option.ts +51 -0
- package/src/acp/__tests__/session-manager-persistence.test.ts +5 -1
- package/src/acp/__tests__/session-manager-resume.test.ts +270 -6
- package/src/acp/__tests__/session-manager-usage.test.ts +4 -2
- package/src/acp/__tests__/session-manager.test.ts +895 -4
- package/src/acp/agent-process.test.ts +4 -1
- package/src/acp/agent-process.ts +96 -10
- package/src/acp/auth-required.ts +50 -1
- package/src/acp/auto-install.test.ts +9 -7
- package/src/acp/client-handler.ts +16 -3
- package/src/acp/model-config.test.ts +166 -0
- package/src/acp/model-config.ts +138 -0
- package/src/acp/resolve-agent.test.ts +220 -6
- package/src/acp/resolve-agent.ts +88 -23
- package/src/acp/session-manager.test.ts +196 -3
- package/src/acp/session-manager.ts +441 -18
- package/src/acp/types.ts +50 -5
- package/src/agent/loop.ts +1 -0
- package/src/api/events/acp-session-model-update.test.ts +88 -0
- package/src/api/events/acp-session-model-update.ts +46 -0
- package/src/api/events/app-files-changed.ts +4 -3
- package/src/api/events/notification-intent.ts +2 -0
- package/src/api/events/user-message-echo.ts +7 -1
- package/src/api/index.ts +6 -0
- package/src/api/responses/conversation-message.ts +5 -0
- package/src/apps/app-store.ts +1 -1
- package/src/apps/resolve-app.ts +81 -0
- package/src/apps/source-fingerprint.ts +266 -0
- package/src/avatar/identity-avatar.ts +7 -2
- package/src/bundler/app-compiler.ts +15 -0
- package/src/calls/__tests__/barge-in-guard.test.ts +81 -0
- package/src/{__tests__ → calls/__tests__}/call-controller.test.ts +503 -82
- package/src/{__tests__ → calls/__tests__}/media-stream-audio-transcode.test.ts +1 -1
- package/src/{__tests__ → calls/__tests__}/media-stream-output.test.ts +37 -8
- package/src/{__tests__ → calls/__tests__}/media-stream-parser.test.ts +1 -1
- package/src/{__tests__ → calls/__tests__}/media-stream-server-integration.test.ts +150 -57
- package/src/{__tests__ → calls/__tests__}/media-stream-stt-session.test.ts +5 -5
- package/src/{__tests__ → calls/__tests__}/media-turn-detector.test.ts +1 -1
- package/src/{live-voice → calls}/__tests__/progress-narration.test.ts +4 -4
- package/src/{live-voice → calls}/__tests__/progress-phrases.test.ts +1 -1
- package/src/calls/__tests__/voice-control-protocol.test.ts +58 -25
- package/src/calls/__tests__/voice-leg-coordinator.test.ts +229 -0
- package/src/calls/__tests__/voice-progress-cadence.test.ts +274 -0
- package/src/{__tests__/voice-session-bridge.test.ts → calls/__tests__/voice-session-bridge-turn-flow.test.ts} +20 -12
- package/src/calls/__tests__/voice-session-bridge.test.ts +37 -1
- package/src/calls/__tests__/voice-triage-escalate.test.ts +105 -0
- package/src/calls/barge-in-guard.ts +118 -0
- package/src/calls/call-constants.ts +24 -4
- package/src/calls/call-controller.ts +499 -199
- package/src/calls/call-transport.ts +16 -0
- package/src/calls/media-stream-output.ts +32 -0
- package/src/calls/media-stream-server.ts +82 -30
- package/src/calls/media-stream-stt-session.ts +15 -0
- package/src/{live-voice → calls}/progress-narration.ts +2 -2
- package/src/calls/resolve-call-tts-provider.ts +33 -2
- package/src/calls/tts-call-strategy.ts +9 -5
- package/src/calls/types.ts +2 -0
- package/src/calls/voice-control-protocol.ts +53 -21
- package/src/calls/voice-leg-coordinator.ts +189 -0
- package/src/calls/voice-progress-cadence.ts +423 -0
- package/src/calls/voice-session-bridge.ts +59 -46
- package/src/calls/voice-triage-escalate.ts +175 -56
- package/src/cli/commands/__tests__/apps.test.ts +245 -0
- package/src/cli/commands/__tests__/bash.test.ts +53 -0
- package/src/cli/commands/__tests__/roadmap.help.test.ts +19 -0
- package/src/cli/commands/apps.help.ts +67 -13
- package/src/cli/commands/apps.ts +183 -0
- package/src/cli/commands/bash.help.ts +8 -13
- package/src/cli/commands/bash.ts +7 -25
- package/src/cli/commands/channels/__tests__/send.test.ts +218 -0
- package/src/cli/commands/channels/index.help.ts +70 -2
- package/src/cli/commands/channels/index.ts +16 -3
- package/src/cli/commands/channels/send.ts +128 -0
- package/src/cli/commands/credentials.help.ts +6 -2
- package/src/cli/commands/credentials.ts +2 -2
- package/src/cli/commands/mcp.help.ts +8 -8
- package/src/cli/commands/mcp.ts +1 -1
- package/src/cli/commands/roadmap.help.ts +5 -1
- package/src/cli/commands/roadmap.ts +1 -1
- package/src/cli/lib/bundled-marketplace.json +103 -90
- package/src/config/__tests__/default-profile-catalog.test.ts +22 -0
- package/src/config/__tests__/memory-retrospective-schema.test.ts +15 -1
- package/src/config/__tests__/platform-identity.test.ts +255 -0
- package/src/config/__tests__/platform-rehydration.test.ts +99 -9
- package/src/config/acp-agent-write.ts +43 -0
- package/src/config/acp-defaults.test.ts +13 -3
- package/src/config/acp-defaults.ts +23 -6
- package/src/config/acp-schema.test.ts +81 -0
- package/src/config/acp-schema.ts +30 -2
- package/src/config/bundled-skills/acp/SKILL.md +22 -14
- package/src/config/bundled-skills/acp/TOOLS.json +5 -1
- package/src/config/bundled-skills/app-builder/SKILL.md +12 -9
- package/src/config/bundled-skills/app-builder/references/CUSTOM_ROUTES.md +1 -1
- package/src/config/bundled-skills/computer-use/SKILL.md +20 -2
- package/src/config/bundled-skills/computer-use/TOOLS.json +99 -0
- package/src/config/bundled-skills/computer-use/tools/computer-use-sequence.ts +12 -0
- package/src/config/bundled-skills/media-processing/services/preprocess.ts +2 -1
- package/src/config/bundled-skills/media-processing/services/processing-pipeline.ts +2 -1
- package/src/config/bundled-skills/media-processing/tools/generate-clip.ts +2 -1
- package/src/config/bundled-skills/messaging/SKILL.md +3 -3
- package/src/config/bundled-skills/messaging/TOOLS.json +3 -3
- package/src/config/bundled-skills/messaging/tools/messaging-send.ts +67 -139
- package/src/config/bundled-skills/phone-calls/references/TRANSCRIPTS.md +1 -1
- package/src/config/bundled-skills/playbooks/tools/playbook-create.ts +2 -1
- package/src/config/bundled-skills/playbooks/tools/playbook-update.ts +2 -1
- package/src/config/bundled-skills/schedule/SKILL.md +3 -4
- package/src/config/bundled-skills/screen-annotation/SKILL.md +8 -1
- package/src/config/bundled-skills/screen-annotation/tools/screen-annotation.test.ts +4 -1
- package/src/config/bundled-skills/skill-management/TOOLS.json +6 -2
- package/src/config/bundled-skills/transcribe/tools/transcribe-media.ts +5 -2
- package/src/config/default-profile-catalog.ts +1 -1
- package/src/config/env.ts +2 -2
- package/src/config/feature-flag-registry.json +24 -12
- package/src/config/loader.ts +1 -0
- package/src/config/memory-v3-gate.test.ts +31 -0
- package/src/config/memory-v3-gate.ts +20 -16
- package/src/config/platform-identity.ts +201 -0
- package/src/config/platform-rehydration.ts +11 -27
- package/src/config/schema.ts +2 -2
- package/src/config/schemas/__tests__/live-voice.test.ts +8 -158
- package/src/config/schemas/__tests__/voice.test.ts +148 -0
- package/src/config/schemas/calls.ts +1 -28
- package/src/config/schemas/live-voice.ts +1 -173
- package/src/config/schemas/mcp.ts +1 -1
- package/src/config/schemas/memory-retrospective.ts +10 -0
- package/src/config/schemas/services.ts +8 -0
- package/src/config/schemas/skills.ts +0 -14
- package/src/config/schemas/voice.ts +150 -0
- package/src/credential-execution/process-manager.test.ts +18 -19
- package/src/credential-health/credential-health-service.ts +11 -17
- package/src/daemon/__tests__/conversation-tool-setup.test.ts +66 -121
- package/src/daemon/__tests__/plugin-mcp-reconcile.test.ts +4 -1
- package/src/daemon/__tests__/skill-memory-refresh-mtime.test.ts +133 -0
- package/src/daemon/app-change-notify.ts +45 -0
- package/src/daemon/config-watcher.ts +13 -194
- package/src/daemon/conversation-error.ts +3 -2
- package/src/daemon/conversation-media-retry.ts +2 -1
- package/src/daemon/conversation-process.ts +35 -64
- package/src/daemon/conversation-runtime-assembly.ts +2 -1
- package/src/daemon/conversation-skill-tools.ts +13 -31
- package/src/daemon/conversation-store.ts +1 -1
- package/src/daemon/conversation-surfaces.ts +15 -9
- package/src/daemon/conversation-tool-setup.ts +37 -43
- package/src/daemon/conversation.ts +0 -3
- package/src/daemon/dictation-profile-store.ts +2 -1
- package/src/daemon/handlers/shared.ts +2 -1
- package/src/daemon/handlers/skills.ts +6 -3
- package/src/daemon/host-bash-proxy.ts +8 -12
- package/src/daemon/host-browser-proxy.ts +15 -1
- package/src/daemon/host-cu-proxy.ts +186 -19
- package/src/daemon/host-file-proxy.ts +8 -10
- package/src/daemon/host-proxy-preactivation.ts +2 -1
- package/src/daemon/host-transfer-proxy.ts +14 -18
- package/src/daemon/lifecycle.ts +0 -5
- package/src/daemon/mcp-reload-service.ts +5 -5
- package/src/daemon/message-types/sync.ts +1 -0
- package/src/daemon/orphan-reaper.ts +1 -1
- package/src/daemon/providers-setup.ts +1 -1
- package/src/daemon/reaction-history-render.ts +2 -1
- package/src/daemon/shutdown-handlers.ts +1 -9
- package/src/daemon/skill-memory-refresh.ts +64 -0
- package/src/daemon/tool-side-effects.ts +7 -18
- package/src/desktop/__tests__/fake-desktop.ts +122 -0
- package/src/desktop/desktop-chrome-policy.test.ts +79 -0
- package/src/desktop/desktop-chrome-policy.ts +47 -0
- package/src/desktop/desktop-chrome-session.ts +37 -0
- package/src/desktop/desktop-dependencies.test.ts +102 -0
- package/src/desktop/desktop-dependencies.ts +308 -0
- package/src/desktop/desktop-feature.test.ts +18 -0
- package/src/desktop/desktop-feature.ts +19 -0
- package/src/desktop/desktop-panel-config.test.ts +135 -0
- package/src/desktop/desktop-panel-config.ts +149 -0
- package/src/desktop/desktop-session-manager.test.ts +730 -0
- package/src/desktop/desktop-session-manager.ts +850 -0
- package/src/desktop/desktop-stream-bridge.test.ts +395 -0
- package/src/desktop/desktop-stream-bridge.ts +214 -0
- package/src/desktop/desktop-wallpaper.test.ts +191 -0
- package/src/desktop/desktop-wallpaper.ts +113 -0
- package/src/desktop/desktop-window-drag.ts +177 -0
- package/src/desktop/desktop-window-manager-config.test.ts +230 -0
- package/src/desktop/desktop-window-manager-config.ts +238 -0
- package/src/desktop/desktop-window-theme.ts +170 -0
- package/src/heartbeat/heartbeat-service.ts +21 -3
- package/src/home/__tests__/feed-writer.test.ts +22 -0
- package/src/home/feed-writer.ts +11 -2
- package/src/hooks/types.ts +33 -0
- package/src/i18n/AGENTS.md +22 -0
- package/src/i18n/__tests__/i18n.test.ts +108 -0
- package/src/i18n/index.ts +16 -0
- package/src/i18n/locales.ts +93 -0
- package/src/i18n/messages.ts +61 -0
- package/src/i18n/title.ts +25 -0
- package/src/inbound/platform-callback-registration.ts +4 -5
- package/src/live-voice/__tests__/live-voice-metrics.test.ts +0 -3
- package/src/live-voice/__tests__/live-voice-progress.test.ts +15 -15
- package/src/live-voice/__tests__/live-voice-sight-frame-echo.test.ts +238 -0
- package/src/live-voice/__tests__/live-voice-vad.test.ts +2 -2
- package/src/live-voice/__tests__/runtime-websocket-shell.test.ts +13 -69
- package/src/live-voice/live-voice-photo.ts +25 -6
- package/src/live-voice/live-voice-session.ts +213 -693
- package/src/live-voice/protocol.ts +0 -2
- package/src/mcp/__tests__/effective-config.test.ts +2 -2
- package/src/mcp/__tests__/workspace-mcp-config.test.ts +135 -0
- package/src/mcp/effective-config.ts +3 -3
- package/src/mcp/mcp-header-store.ts +29 -45
- package/src/mcp/spec-schema.ts +111 -0
- package/src/mcp/startup.ts +8 -4
- package/src/mcp/workspace-mcp-config.ts +188 -0
- package/src/messaging/provider.ts +10 -3
- package/src/messaging/providers/__tests__/proactive-address.test.ts +95 -0
- package/src/messaging/providers/callback-routing.ts +18 -0
- package/src/messaging/providers/channel-transport.ts +56 -0
- package/src/messaging/providers/discord/transport.ts +17 -0
- package/src/messaging/providers/slack/__tests__/adapter-token-routing.test.ts +6 -17
- package/src/messaging/providers/slack/adapter.ts +7 -44
- package/src/messaging/providers/slack/transport.ts +16 -0
- package/src/messaging/providers/telegram-bot/adapter.ts +1 -48
- package/src/messaging/providers/telegram-bot/client.ts +0 -26
- package/src/messaging/providers/telegram-bot/transport.ts +20 -0
- package/src/messaging/providers/whatsapp/adapter.ts +1 -48
- package/src/messaging/providers/whatsapp/transport.ts +18 -0
- package/src/monitoring/__tests__/workspace-git-heartbeat.test.ts +8 -0
- package/src/notifications/__tests__/assistant-reply-producer.test.ts +55 -0
- package/src/notifications/__tests__/guardian-feed-projection.test.ts +158 -2
- package/src/notifications/__tests__/home-feed-side-effect.test.ts +153 -3
- package/src/notifications/__tests__/schedule-result-producer.test.ts +99 -3
- package/src/notifications/adapters/macos.ts +3 -0
- package/src/notifications/assistant-reply-producer.ts +8 -3
- package/src/notifications/conversation-pairing.ts +36 -16
- package/src/notifications/delivered-post-record.ts +11 -1
- package/src/notifications/guardian-feed-projection.ts +125 -5
- package/src/notifications/home-feed-side-effect.ts +55 -7
- package/src/notifications/schedule-result-producer.ts +66 -22
- package/src/oauth/AGENTS.md +2 -0
- package/src/oauth/__tests__/seed-providers-managed.test.ts +54 -0
- package/src/oauth/byo-connection.test.ts +105 -0
- package/src/oauth/byo-connection.ts +36 -6
- package/src/oauth/connection-resolver.test.ts +73 -0
- package/src/oauth/connection-resolver.ts +95 -2
- package/src/oauth/scope-utils.ts +24 -0
- package/src/oauth/seed-providers.ts +204 -25
- package/src/outbound-proxy/certs.ts +3 -5
- package/src/permissions/checker.test.ts +11 -6
- package/src/persistence/compaction-log-store-clickhouse.ts +3 -3
- package/src/persistence/conversation-crud.ts +71 -63
- package/src/persistence/conversation-lineage.ts +12 -4
- package/src/persistence/conversation-queries.ts +2 -2
- package/src/persistence/conversation-title-placeholders.ts +23 -0
- package/src/persistence/conversation-title-service.ts +9 -26
- package/src/persistence/embeddings/qdrant-manager.ts +163 -18
- package/src/persistence/llm-request-log-sink-clickhouse.ts +3 -3
- package/src/persistence/llm-request-log-source-clickhouse.ts +3 -3
- package/src/persistence/message-cursor.ts +78 -0
- package/src/persistence/message-reads.ts +30 -0
- package/src/persistence/migrations/157-invite-contact-id.ts +18 -6
- package/src/persistence/migrations/__tests__/157-invite-contact-id.test.ts +149 -0
- package/src/persistence/schema/memory-core.ts +5 -0
- package/src/platform/client.test.ts +4 -2
- package/src/platform/client.ts +2 -10
- package/src/plugin-api/constants.ts +2 -0
- package/src/plugin-api/index.ts +1 -0
- package/src/plugin-api/types.ts +2 -0
- package/src/plugins/defaults/index.ts +2 -0
- package/src/plugins/defaults/memory/__tests__/memory-retrospective-accounting.test.ts +46 -0
- package/src/plugins/defaults/memory/__tests__/memory-retrospective-cursor-backfill.test.ts +118 -0
- package/src/plugins/defaults/memory/__tests__/memory-retrospective-cursor-preserve.test.ts +83 -0
- package/src/plugins/defaults/memory/__tests__/memory-retrospective-enqueue.test.ts +9 -5
- package/src/plugins/defaults/memory/__tests__/memory-retrospective-job.test.ts +20 -10
- package/src/plugins/defaults/memory/__tests__/memory-retrospective-prompt.test.ts +5 -0
- package/src/plugins/defaults/memory/__tests__/memory-retrospective-state.test.ts +219 -0
- package/src/plugins/defaults/memory/__tests__/memory-retrospective-sweep.test.ts +31 -0
- package/src/plugins/defaults/memory/__tests__/memory-retrospective-trigger-check.test.ts +63 -0
- package/src/plugins/defaults/memory/__tests__/shutdown-hook.test.ts +4 -0
- package/src/plugins/defaults/memory/context-search/agent-runner.ts +3 -2
- package/src/plugins/defaults/memory/context-search/format.ts +3 -2
- package/src/plugins/defaults/memory/context-search/sources/memory-v2.ts +6 -3
- package/src/plugins/defaults/memory/context-search/sources/workspace.ts +3 -2
- package/src/plugins/defaults/memory/graph/capability-seed.ts +6 -7
- package/src/plugins/defaults/memory/hooks/init.ts +10 -0
- package/src/plugins/defaults/memory/hooks/message-deleted.ts +21 -0
- package/src/plugins/defaults/memory/hooks/shutdown.ts +2 -0
- package/src/plugins/defaults/memory/host-utils.ts +10 -0
- package/src/plugins/defaults/memory/jobs-worker.ts +13 -0
- package/src/plugins/defaults/memory/memory-retrospective-accounting.ts +34 -60
- package/src/plugins/defaults/memory/memory-retrospective-cursor-backfill.ts +126 -0
- package/src/plugins/defaults/memory/memory-retrospective-cursor-preserve.ts +79 -0
- package/src/plugins/defaults/memory/memory-retrospective-cursor.ts +28 -0
- package/src/plugins/defaults/memory/memory-retrospective-enqueue.ts +3 -5
- package/src/plugins/defaults/memory/memory-retrospective-job.ts +12 -3
- package/src/plugins/defaults/memory/memory-retrospective-prompt.ts +1 -1
- package/src/plugins/defaults/memory/memory-retrospective-state.ts +312 -71
- package/src/plugins/defaults/memory/memory-retrospective-sweep.ts +2 -1
- package/src/plugins/defaults/memory/memory-retrospective-trigger-check.ts +5 -3
- package/src/plugins/defaults/memory/skill-md-mtime-poll.ts +9 -0
- package/src/plugins/defaults/memory/startup.ts +28 -2
- package/src/plugins/defaults/memory/substrate/__tests__/skill-content.test.ts +7 -9
- package/src/plugins/defaults/memory/substrate/page-index.ts +6 -1
- package/src/plugins/defaults/memory/substrate/skill-content.ts +2 -2
- package/src/plugins/defaults/memory/v1/graph/consolidation.ts +4 -2
- package/src/plugins/defaults/memory/v1/graph/extraction.ts +4 -2
- package/src/plugins/defaults/memory/v1/graph/retriever.ts +4 -1
- package/src/plugins/defaults/memory/v2/reranker.ts +6 -1
- package/src/plugins/defaults/memory/v3/__tests__/card.test.ts +24 -0
- package/src/plugins/defaults/memory/v3/__tests__/pool-select.test.ts +125 -0
- package/src/plugins/defaults/memory/v3/__tests__/sections.test.ts +26 -0
- package/src/plugins/defaults/memory/v3/__tests__/shadow-plugin.test.ts +30 -0
- package/src/plugins/defaults/memory/v3/card.ts +3 -2
- package/src/plugins/defaults/memory/v3/pool-select.ts +5 -3
- package/src/plugins/defaults/memory/v3/sections.ts +9 -3
- package/src/plugins/defaults/memory/v3/shadow-plugin.ts +5 -2
- package/src/plugins/defaults/memory/worker.ts +6 -0
- package/src/plugins/mcp-servers.ts +15 -75
- package/src/providers/__tests__/connection-model-compat.test.ts +3 -3
- package/src/providers/__tests__/retry-callsite.test.ts +41 -0
- package/src/providers/__tests__/retry-outbound-sanitize.test.ts +176 -0
- package/src/providers/anthropic/client.ts +0 -47
- package/src/providers/gemini/client.ts +9 -23
- package/src/providers/gemini-thought-signature.test.ts +63 -0
- package/src/providers/gemini-thought-signature.ts +44 -0
- package/src/providers/inference/__tests__/endpoint-probe.test.ts +42 -3
- package/src/providers/inference/auth.ts +2 -3
- package/src/providers/inference/connection-availability.ts +27 -8
- package/src/providers/inference/endpoint-probe.ts +10 -1
- package/src/providers/inference/resolve-auth.ts +22 -4
- package/src/providers/inference/service-account-token.ts +248 -0
- package/src/providers/model-catalog.ts +34 -0
- package/src/providers/model-intents.ts +10 -5
- package/src/providers/openai/__tests__/chat-completions-output-token-limit.test.ts +141 -0
- package/src/providers/openai/__tests__/chat-completions-provider-reasoning.test.ts +146 -18
- package/src/providers/openai/__tests__/chat-completions-provider-thought-signature.test.ts +613 -0
- package/src/providers/openai/__tests__/google-thought-signature.test.ts +235 -0
- package/src/providers/openai/__tests__/tool-choice-mapping.test.ts +83 -1
- package/src/providers/openai/chat-completions-provider.ts +212 -79
- package/src/providers/openai/codex-models.ts +0 -4
- package/src/providers/openai/google-thought-signature.ts +320 -0
- package/src/providers/opencode/client.test.ts +73 -4
- package/src/providers/opencode/client.ts +60 -3
- package/src/providers/openrouter/client.ts +20 -0
- package/src/providers/outbound-request-sanitize.ts +96 -0
- package/src/providers/retry.ts +30 -19
- package/src/providers/unparseable-tool-args.ts +5 -1
- package/src/runtime/AGENTS.md +3 -1
- package/src/runtime/__tests__/channel-send.test.ts +443 -0
- package/src/runtime/__tests__/desktop-stream-upgrade.test.ts +89 -0
- package/src/runtime/__tests__/host-observe.test.ts +40 -1
- package/src/runtime/__tests__/live-voice-upgrade.test.ts +58 -0
- package/src/runtime/__tests__/runtime-ws-test-utils.ts +72 -0
- package/src/runtime/__tests__/watch-stream-upgrade.test.ts +59 -0
- package/src/runtime/agent-wake.ts +2 -1
- package/src/runtime/assistant-event-hub.ts +21 -3
- package/src/runtime/auth/same-actor.ts +38 -3
- package/src/runtime/channel-send.ts +316 -0
- package/src/runtime/host-observe.ts +11 -1
- package/src/runtime/http-server.ts +160 -151
- package/src/runtime/routes/__tests__/acp-routes.test.ts +159 -4
- package/src/runtime/routes/__tests__/apps-refresh-route.test.ts +205 -0
- package/src/runtime/routes/__tests__/channel-send-routes.test.ts +127 -0
- package/src/runtime/routes/__tests__/conversation-query-routes.test.ts +108 -1
- package/src/runtime/routes/__tests__/default-provider-routes.test.ts +2 -2
- package/src/runtime/routes/__tests__/dictation-cleanup-guard.test.ts +107 -0
- package/src/runtime/routes/__tests__/mcp-add-default-risk.test.ts +16 -12
- package/src/runtime/routes/acp-routes.test.ts +15 -0
- package/src/runtime/routes/acp-routes.ts +72 -9
- package/src/runtime/routes/app-management-routes.ts +73 -0
- package/src/runtime/routes/app-routes.ts +1 -1
- package/src/runtime/routes/channel-send-routes.ts +85 -0
- package/src/runtime/routes/conversation-list-routes.ts +14 -3
- package/src/runtime/routes/conversation-query-routes.ts +40 -0
- package/src/runtime/routes/conversation-routes.ts +16 -3
- package/src/runtime/routes/credential-routes.ts +19 -10
- package/src/runtime/routes/desktop-setup-routes.test.ts +74 -0
- package/src/runtime/routes/desktop-setup-routes.ts +35 -0
- package/src/runtime/routes/diagnostics-routes.ts +61 -4
- package/src/runtime/routes/events-routes.ts +4 -0
- package/src/runtime/routes/host-cu-routes.ts +6 -0
- package/src/runtime/routes/index.ts +4 -2
- package/src/runtime/routes/log-export-routes.ts +2 -0
- package/src/runtime/routes/mcp-auth-routes.ts +39 -47
- package/src/runtime/routes/migration-routes.ts +6 -20
- package/src/runtime/routes/oauth-commands-routes.ts +36 -0
- package/src/runtime/routes/platform-routes.ts +18 -15
- package/src/runtime/routes/workspace-routes.test.ts +55 -26
- package/src/runtime/routes/workspace-routes.ts +46 -63
- package/src/runtime/routes/workspace-tree-walk.test.ts +244 -0
- package/src/runtime/routes/workspace-tree-walk.ts +240 -0
- package/src/runtime/routes/workspace-utils.ts +17 -0
- package/src/runtime/services/__tests__/conversation-serializer.test.ts +28 -0
- package/src/runtime/services/conversation-serializer.ts +16 -3
- package/src/runtime/sync/resource-sync-events.ts +2 -1
- package/src/schedule/run-script.ts +2 -1
- package/src/schedule/schedule-store.ts +9 -2
- package/src/schedule/worker.ts +1 -1
- package/src/security/__tests__/ces-http-record-backend.test.ts +137 -0
- package/src/security/ces-http-record-backend.ts +120 -0
- package/src/security/ces-rpc-record-backend.ts +7 -0
- package/src/security/untrusted-content.ts +3 -1
- package/src/skills/__tests__/workspace-skill-md-signature.test.ts +60 -0
- package/src/skills/workspace-skill-md-signature.ts +50 -0
- package/src/subagent/consult-context.ts +12 -25
- package/src/tools/__tests__/side-effect-abort-guard.test.ts +1 -0
- package/src/tools/acp/list-agents.test.ts +3 -1
- package/src/tools/acp/spawn.test.ts +146 -11
- package/src/tools/acp/spawn.ts +21 -3
- package/src/tools/acp/status.test.ts +94 -0
- package/src/tools/acp/status.ts +40 -3
- package/src/tools/app-control/skill-proxy-bridge.ts +2 -1
- package/src/tools/browser/browser-execution.ts +1 -1
- package/src/tools/browser/cdp-client/accessibility-snapshot.ts +9 -3
- package/src/tools/browser/cdp-client/cdp-inspect/discovery.ts +2 -1
- package/src/tools/browser/cdp-client/extension-cdp-client.ts +3 -2
- package/src/tools/browser/network-recorder.ts +2 -1
- package/src/tools/capability-offer.test.ts +22 -2
- package/src/tools/capability-offer.ts +16 -1
- package/src/tools/computer-use/definitions.ts +121 -2
- package/src/tools/computer-use/skill-proxy-bridge.ts +2 -1
- package/src/tools/credentials/metadata-store.ts +100 -0
- package/src/tools/filesystem/search.ts +2 -1
- package/src/tools/host-filesystem/edit.test.ts +2 -1
- package/src/tools/host-filesystem/edit.ts +2 -2
- package/src/tools/host-filesystem/read.test.ts +2 -1
- package/src/tools/host-filesystem/read.ts +2 -2
- package/src/tools/host-filesystem/transfer.test.ts +2 -1
- package/src/tools/host-filesystem/transfer.ts +2 -2
- package/src/tools/host-filesystem/write.test.ts +2 -1
- package/src/tools/host-filesystem/write.ts +2 -2
- package/src/tools/host-terminal/host-shell.test.ts +16 -0
- package/src/tools/host-terminal/host-shell.ts +4 -20
- package/src/tools/network/web-search.ts +6 -1
- package/src/tools/policy-context.ts +6 -7
- package/src/tools/skills/scaffold-managed.ts +61 -3
- package/src/tools/subagent/spawn.ts +5 -8
- package/src/tools/terminal/__tests__/sanitized-bash.test.ts +57 -0
- package/src/tools/terminal/sanitized-bash.ts +105 -0
- package/src/tools/watch/watch-retro-report.ts +0 -8
- package/src/types/host-capabilities.ts +5 -3
- package/src/util/__tests__/language-subtag.test.ts +23 -1
- package/src/util/ca-bundle.ts +13 -0
- package/src/util/language-subtag.ts +16 -0
- package/src/util/platform.ts +8 -0
- package/src/util/unicode.ts +15 -1
- package/src/watch/watch-timeline.ts +2 -2
- package/src/workflows/run-manager.ts +2 -1
- package/src/workspace/git-porcelain.ts +66 -0
- package/src/workspace/git-service.ts +6 -55
- package/src/workspace/migrations/154-repair-retired-codex-gpt-5-4-model-ids.ts +258 -0
- package/src/workspace/migrations/155-move-front-model-config-to-voice.ts +78 -0
- package/src/workspace/migrations/156-extract-workspace-mcp-json.ts +214 -0
- package/src/workspace/migrations/__tests__/155-move-front-model-config-to-voice.test.ts +102 -0
- package/src/workspace/migrations/__tests__/156-extract-workspace-mcp-json.test.ts +199 -0
- package/src/workspace/migrations/registry.ts +6 -0
- package/src/__tests__/app-source-watcher.test.ts +0 -218
- package/src/__tests__/config-watcher-skill-reseed.test.ts +0 -359
- package/src/__tests__/speaker-identification.test.ts +0 -56
- package/src/calls/speaker-identification.ts +0 -233
- package/src/daemon/app-source-watcher.ts +0 -218
- package/src/messaging/providers/whatsapp/client.ts +0 -29
- package/src/runtime/routes/debug-bash-routes.ts +0 -173
- package/src/util/fs-watcher-error.ts +0 -36
- /package/src/{live-voice → calls}/progress-phrases.ts +0 -0
package/AGENTS.md
CHANGED
|
@@ -87,6 +87,10 @@ The module-level dependency-injection pattern (`registerFooDeps()`) used by some
|
|
|
87
87
|
|
|
88
88
|
Telemetry event types are defined by a platform-generated wire contract (`src/telemetry/telemetry-wire.generated.ts`) that `src/telemetry/types.ts` layers over, with pre-flush validation against it. Adding a new event type starts platform-side, not here. The mechanics, the drift guards, and the cross-repo ordering are documented next to the code they govern: see [`src/telemetry/AGENTS.md`](src/telemetry/AGENTS.md).
|
|
89
89
|
|
|
90
|
+
## Daemon i18n
|
|
91
|
+
|
|
92
|
+
User-facing copy the daemon generates as a hardcoded constant goes through `src/i18n/`. Persist the message key. Resolve with `t(key, locale)` at the HTTP/CLI/channel edge. Never persist a translated string, and never match stored display strings back to keys. See [`src/i18n/AGENTS.md`](src/i18n/AGENTS.md).
|
|
93
|
+
|
|
90
94
|
## Code comments
|
|
91
95
|
|
|
92
96
|
When writing or updating comments, **do not reference code that has been removed.** Comments should describe the current state of the codebase, not narrate its history. Avoid phrases like "no longer does X", "previously used Y", or "was removed in PR Z" — future readers should not need to understand past implementations to understand the current code.
|
package/ARCHITECTURE.md
CHANGED
|
@@ -609,9 +609,11 @@ Every phone call connects over Twilio Media Streams: the voice webhook emits `<C
|
|
|
609
609
|
|
|
610
610
|
Transcription mode is selected once per session in `media-stream-stt-session.ts`:
|
|
611
611
|
|
|
612
|
-
- **Streaming** (default): when `calls.voice.telephonyStreaming` is enabled and the `telephony` role resolves a streaming transcriber (`resolveStreamingTranscriber({ role: "telephony" })`), inbound audio is decoded (mu-law → PCM16, resampled 8 kHz → 16 kHz) and fed to the provider's realtime adapter. Replies trigger only on utterance-boundary finals (for Deepgram, `speech_final`/`UtteranceEnd`, never mid-sentence `is_final` segments), and barge-in fires from local energy VAD, never from transcriber partials.
|
|
612
|
+
- **Streaming** (default): when `calls.voice.telephonyStreaming` is enabled and the `telephony` role resolves a streaming transcriber (`resolveStreamingTranscriber({ role: "telephony" })`), inbound audio is decoded (mu-law → PCM16, resampled 8 kHz → 16 kHz) and fed to the provider's realtime adapter. Replies trigger only on utterance-boundary finals (for Deepgram, `speech_final`/`UtteranceEnd`, never mid-sentence `is_final` segments), and barge-in fires from local energy VAD, never from transcriber partials. While something is interruptible (an assistant turn in flight, thinking or speaking, or a completed turn's tail still playing from Twilio's buffer), caller speech arms the shared sustained-speech barge-in guard (`src/calls/barge-in-guard.ts`, the same accounting live voice uses: speech accumulates toward 250 ms, short gaps are tolerated, a run that is mostly silence resets) and every inbound frame feeds it; outside that window the guard is dropped, so the caller's own utterance never carries into a turn that starts before the local VAD ends it. Only a fired guard reaches `CallController.handleBargeIn`, which interrupts a turn in either phase and ignores an idle controller (the playing tail is cleared instead).
|
|
613
613
|
- **Batch fallback**: otherwise the session segments turns with the energy-based `MediaTurnDetector` and transcribes each completed turn via the same role's batch API. Both halves of a call read the `telephony` role, which is why a role names its consumer rather than a boundary.
|
|
614
614
|
|
|
615
|
+
Every phone turn runs the same two-leg triage as live voice through `startVoiceTurn` (`src/calls/voice-session-bridge.ts`): `call-controller.ts` opens on a toolless front-door leg (`routingLeg: "front-door"`, the `voiceFrontDoor` call site) and drives it through the shared `createFrontDoorLegCoordinator` (`src/calls/voice-leg-coordinator.ts`), which reads the stream through the verdict machine and sequences the hand-off (pause narration, abort the leg, resolve and speak the bridge, mark it as the floor holder, start the escalated leg pinned to the conversation's own model, re-arm narration); each driver supplies only a host for how text and the bridge are spoken, how a leg is started or aborted, and (live voice only) the speculative hold and commit. Phone has no partial transcripts, so the hold verdict is never taught and routing is escalate-only. The controller also passes the bridge's turn callbacks (tool activity is recorded as `tool_use_started` / `tool_use_completed` call events, persisted row ids ride the `assistant_spoke` event), `launchedAtMs` for dispatch timing, and a `voiceTelemetry` bag keyed by the call session with a `phone_inbound` / `phone_outbound` entry. Both drivers share the spoken progress narration cadence (`src/calls/voice-progress-cadence.ts`, tuned by `voice.frontModel.progress`): the cadence owns the tool-activity log, the triggers (an ops burst, a long operation completing, a full interval of audible silence with news, the `maxSilenceMs` heartbeat) and the generated or static phrase, while each driver supplies its own view of audible silence (live voice from its TTS queue and playback-tail estimate; the media-stream transport from `isPlaybackIdle()` and a running sum of sent frame durations) and how to speak a phrase.
|
|
616
|
+
|
|
615
617
|
A credential preflight (`resolveTelephonyCredentialReadiness()` in `src/calls/telephony-credential-preflight.ts`) gates every call: it requires a credentialed, telephony-capable STT provider **and** a media-stream-playable TTS provider (the configured one or a credentialed playable fallback). Inbound calls that fail the preflight receive `<Say>` setup-required copy plus `<Hangup/>` instead of a doomed stream; outbound placement fails before dialing via `preflightVoiceIngress()` with the same user-facing message.
|
|
616
618
|
|
|
617
619
|
Key modules:
|
|
@@ -729,9 +731,9 @@ The assistant-side live voice module is intentionally bounded under `src/live-vo
|
|
|
729
731
|
| `live-voice-archive.ts` | Audio artifact creation/linking for user utterance and assistant response message IDs |
|
|
730
732
|
| `live-voice-metrics.ts` | Per-session and per-turn latency snapshots emitted as `metrics` frames |
|
|
731
733
|
|
|
732
|
-
Live voice STT uses the same `resolveStreamingTranscriber()` path as conversation streaming. For V1 latency-sensitive behavior,
|
|
734
|
+
Live voice STT uses the same `resolveStreamingTranscriber()` path as conversation streaming, dialed with the provider the `liveVoice` STT role resolves to after managed-speech defaulting (`resolveEffectiveSpeechProviders`, see `config/managed-speech-defaults.ts`). For V1 latency-sensitive behavior, that provider must resolve to a `daemon-streaming` transcriber whose catalog entry has `conversationStreamingMode: "realtime-ws"` and usable credentials. Providers that only support batch or incremental-batch transcription remain valid for other voice surfaces, but do not satisfy live voice's streaming STT requirement.
|
|
733
735
|
|
|
734
|
-
Live voice TTS uses `streamLiveVoiceTtsAudio()` and the configured `services.tts.provider
|
|
736
|
+
Live voice TTS uses `streamLiveVoiceTtsAudio()` and the TTS provider that `resolveEffectiveSpeechProviders` settles on (the configured `services.tts.provider`, or the managed `vellum` provider when the configured one has no usable credentials). The selected provider must be registered, catalog-compatible, and expose `capabilities.supportsStreaming` plus `synthesizeStream()`. Providers whose catalog entry advertises `supportsStreaming` (currently all five catalog providers: ElevenLabs, Fish Audio, Deepgram, xAI, and the managed Vellum provider) satisfy this requirement; a buffered-only provider would remain available for buffered message playback or other supported surfaces, but live voice reports a TTS error instead of silently falling back to buffered playback.
|
|
735
737
|
|
|
736
738
|
The `voiceFrontDoor` prompt skips current-turn legacy and v3 memory retrieval, while prior frozen memory cards and static memory context remain available. The front-door rule escalates rather than guessing when required personal context is absent. The escalated leg runs the ordinary memory pipeline against the latest visible caller prompt before the quality model, with low selector effort. This keeps memory work off the front-door TTFT path without cross-leg speculative state.
|
|
737
739
|
|
|
@@ -1294,9 +1296,8 @@ graph TB
|
|
|
1294
1296
|
RM_DIR["rmSync skill directory"]
|
|
1295
1297
|
end
|
|
1296
1298
|
|
|
1297
|
-
subgraph "
|
|
1298
|
-
|
|
1299
|
-
EVICT["Session eviction<br/>+ recreation"]
|
|
1299
|
+
subgraph "Capability reseed"
|
|
1300
|
+
RESEED["SKILL.md mtime poll<br/>reseeds capability cards"]
|
|
1300
1301
|
end
|
|
1301
1302
|
|
|
1302
1303
|
SNIPPET --> EVAL_TOOL
|
|
@@ -1309,14 +1310,12 @@ graph TB
|
|
|
1309
1310
|
SCAFFOLD --> MANAGED_STORE
|
|
1310
1311
|
MANAGED_STORE --> SKILL_DIR
|
|
1311
1312
|
|
|
1312
|
-
SKILL_DIR -->
|
|
1313
|
-
WATCHER --> EVICT
|
|
1314
|
-
|
|
1313
|
+
SKILL_DIR --> RESEED
|
|
1315
1314
|
SKILL_DIR --> SKILL_LOAD
|
|
1316
1315
|
SKILL_LOAD --> SESSION
|
|
1317
1316
|
|
|
1318
1317
|
DELETE --> RM_DIR
|
|
1319
|
-
RM_DIR -->
|
|
1318
|
+
RM_DIR --> RESEED
|
|
1320
1319
|
```
|
|
1321
1320
|
|
|
1322
1321
|
**Key design decisions:**
|
|
@@ -1324,7 +1323,7 @@ graph TB
|
|
|
1324
1323
|
- `evaluate_typescript_code` always forces `sandbox.enabled = true` regardless of global config.
|
|
1325
1324
|
- Snippet contract: must export `default` or `run` with signature `(input: unknown) => unknown | Promise<unknown>`.
|
|
1326
1325
|
- Managed-store writes are atomic (tmp file + rename) to prevent partial `SKILL.md` files.
|
|
1327
|
-
- After persist or delete,
|
|
1326
|
+
- After persist or delete, capability cards reseed from the `SKILL.md` set. The next turn continues in the same conversation.
|
|
1328
1327
|
- macOS UI shows Inspect and Delete controls for managed skills only (source = "managed").
|
|
1329
1328
|
- `skill_load` resolves the recursive include graph (via `include-graph.ts`) before emitting output. Missing children are listed as suggested skills without child `<loaded_skill>` markers; cycles still produce `isError: true` with no marker. Valid includes produce an "Included Skills (immediate)" metadata section showing child ID, name, description, and path.
|
|
1330
1329
|
|
|
@@ -1407,15 +1406,15 @@ skills/<skill-id>/
|
|
|
1407
1406
|
|
|
1408
1407
|
The following capabilities ship as bundled skills in `assistant/src/config/bundled-skills/`:
|
|
1409
1408
|
|
|
1410
|
-
| Skill ID | Tools
|
|
1411
|
-
| --------------- |
|
|
1412
|
-
| `browser` | `browser_navigate`, `browser_snapshot`, `browser_screenshot`, `browser_close`, `browser_click`, `browser_type`, `browser_press_key`, `browser_wait_for`, `browser_extract`, `browser_fill_credential`
|
|
1413
|
-
| `gmail` | Gmail search, archive, send, etc.
|
|
1414
|
-
| `computer-use` | `computer_use_observe`, `computer_use_click`, `computer_use_type_text`, `computer_use_key`, `computer_use_scroll`, `computer_use_drag`, `computer_use_wait`, `computer_use_open_app`, `computer_use_run_applescript`, `computer_use_done`, `computer_use_respond` | Computer-use proxy tools preactivated via `preactivatedSkillIds` in desktop sessions. Each tool forwards actions to a compatible connected desktop host via `HostCuProxy`, which handles request/resolve proxying, step counting, loop detection, and observation formatting in the same agent loop. |
|
|
1415
|
-
| `weather` | `get-weather`
|
|
1416
|
-
| `app-builder` | `app_create`, `app_delete`, `app_refresh`, `app_generate_icon`
|
|
1417
|
-
| `self-upgrade` | (instruction-only)
|
|
1418
|
-
| `start-the-day` | (instruction-only)
|
|
1409
|
+
| Skill ID | Tools | Purpose |
|
|
1410
|
+
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
1411
|
+
| `browser` | `browser_navigate`, `browser_snapshot`, `browser_screenshot`, `browser_close`, `browser_click`, `browser_type`, `browser_press_key`, `browser_wait_for`, `browser_extract`, `browser_fill_credential` | Headless browser automation: web scraping, form filling, interaction (previously core-registered as `headless-browser`; now skill-provided with default allow rules) |
|
|
1412
|
+
| `gmail` | Gmail search, archive, send, etc. | Email management via OAuth2 integration |
|
|
1413
|
+
| `computer-use` | `computer_use_observe`, `computer_use_click`, `computer_use_type_text`, `computer_use_key`, `computer_use_scroll`, `computer_use_drag`, `computer_use_wait`, `computer_use_open_app`, `computer_use_run_applescript`, `computer_use_sequence`, `computer_use_done`, `computer_use_respond` | Computer-use proxy tools preactivated via `preactivatedSkillIds` in desktop sessions. Each tool forwards actions to a compatible connected desktop host via `HostCuProxy`, which handles request/resolve proxying, step counting, loop detection, and observation formatting in the same agent loop. |
|
|
1414
|
+
| `weather` | `get-weather` | Fetch current weather data |
|
|
1415
|
+
| `app-builder` | `app_create`, `app_delete`, `app_refresh`, `app_generate_icon` | Dynamic app authoring: create and manage persistent apps; file editing uses generic file tools plus `app_refresh` (activated via `skill_load app-builder`; `app_open` remains a core proxy tool) |
|
|
1416
|
+
| `self-upgrade` | (instruction-only) | Self-improvement workflow |
|
|
1417
|
+
| `start-the-day` | (instruction-only) | Morning briefing routine |
|
|
1419
1418
|
|
|
1420
1419
|
### Activation and Projection Flow
|
|
1421
1420
|
|
|
@@ -2192,7 +2191,7 @@ The `TtsUseCase` discriminator (`"phone-call"` or `"message-playback"`) lets pro
|
|
|
2192
2191
|
- **`native-twilio`** — the text-token path: spoken text is sent via `sendTextToken()`, which the media-stream transport re-synthesizes through daemon TTS. Collapsing this mode into `synthesized-play` is a documented deferred follow-up.
|
|
2193
2192
|
- **`synthesized-play`** — The assistant synthesises audio via the provider's HTTP API and streams it through the audio store / `sendPlayUrl()` path.
|
|
2194
2193
|
|
|
2195
|
-
**Phone call integration:** Phone calls run on the media-stream transport, where the daemon synthesises speech via the
|
|
2194
|
+
**Phone call integration:** Phone calls run on the media-stream transport, where the daemon synthesises speech via the effective TTS provider (the configured one after managed-speech defaulting, `resolveEffectiveSpeechProviders`, the same substitution live voice makes) and transcodes it to mu-law 8 kHz frames (`media-stream-output.ts`). Each catalog entry declares `mediaStreamPlayback.outputFormat` (`pcm`, `wav`, or `none`); `resolveTelephonyTtsCapability()` (`src/calls/telephony-tts-capability.ts`) combines that field with credential availability into a playable / not-playable verdict, and the call TTS resolver falls back to a credentialed playable provider rather than producing silence.
|
|
2196
2195
|
|
|
2197
2196
|
**Adding a new TTS provider (catalog-first checklist):**
|
|
2198
2197
|
|
|
@@ -60,14 +60,21 @@ and restore the prior value afterwards, each guarding the restore so a turn that
|
|
|
60
60
|
started in between is not clobbered. They are supplying the acting actor for
|
|
61
61
|
their run, and are covered by this contract.
|
|
62
62
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
63
|
+
The queue drains are deliberately not in that set. `drainSingleMessage` and
|
|
64
|
+
`drainBatch` carry the queued sender on the per-turn field and into the run,
|
|
65
|
+
and leave the resting slot alone: at the point they stamp, the drain has not
|
|
66
|
+
yet proved it holds the processing lock. Its `isProcessing()` check is a
|
|
67
|
+
time-of-check guard whose documented backstop is the persist that can still
|
|
68
|
+
fail busy, and the requeue on that path restores the queue and the steer flag
|
|
69
|
+
only. A drain that stamped the slot would therefore leave the conversation
|
|
70
|
+
attributed to a sender whose turn never ran.
|
|
71
|
+
|
|
72
|
+
The consequence is that a cross-actor drain runs against history scoped for the
|
|
73
|
+
previous actor, because `ensureActorScopedHistory` reads the slot. That is a
|
|
74
|
+
real defect and it is LUM-3344's, which owns the fix: scope the transcript at
|
|
75
|
+
assembly time from the turn's actor, rather than mutating a shared transcript
|
|
76
|
+
and tracking who it was scoped for. Do not close it by making the drain stamp
|
|
77
|
+
the slot first.
|
|
71
78
|
|
|
72
79
|
`call-controller` keeps its own `trustContext` on its own object and never reads
|
|
73
80
|
the conversation's. It is outside this contract.
|
|
@@ -72,6 +72,22 @@ it end to end:
|
|
|
72
72
|
same way a failed card edit does. The write-vs-resolve race converges
|
|
73
73
|
from the other side too: the feed writer re-checks canonical status
|
|
74
74
|
after its append.
|
|
75
|
+
- The receipt is the whole retire mechanism, so everything that must
|
|
76
|
+
stop happening lives in `writeGuardianFeedReceipt`: the terminal
|
|
77
|
+
`guardianRequest.status` withdraws every client affordance, urgency
|
|
78
|
+
drops to `medium` to leave the "Needs attention" treatment, and a
|
|
79
|
+
still-`new` item is marked `seen` (unread means the user has
|
|
80
|
+
something to review, which a resolved request is not). That clear
|
|
81
|
+
runs only on the edge into terminal, so re-running the fan-out
|
|
82
|
+
neither pulls a cleared receipt back into the bell nor undoes a user
|
|
83
|
+
who marked the receipt unread again.
|
|
84
|
+
- Terminal receipts that never passed the edge are cleared once for
|
|
85
|
+
each assistant by `healLegacyGuardianReceiptUnread`, which the sweep calls
|
|
86
|
+
ahead of its gateway read. One-shot rather than recurring: such a row
|
|
87
|
+
and a `new` the user set deliberately are indistinguishable, so a
|
|
88
|
+
completion sentinel in the daemon checkpoint ledger records the
|
|
89
|
+
boundary instead. The transition is re-evaluated inside the writer
|
|
90
|
+
queue and moves only `new`, exactly as the edge does.
|
|
75
91
|
- The feed writer's bulk-dismiss pass skips pending guardian items
|
|
76
92
|
(`isPendingGuardianFeedItem`), so "Clear all" can never retire an
|
|
77
93
|
unresolved request; only its receipt is clearable.
|
package/openapi.yaml
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
openapi: 3.1.0
|
|
4
4
|
info:
|
|
5
5
|
title: Vellum Assistant API
|
|
6
|
-
version: 0.12.
|
|
6
|
+
version: 0.12.2
|
|
7
7
|
description: Auto-generated OpenAPI specification for the Vellum Assistant runtime HTTP server.
|
|
8
8
|
servers:
|
|
9
9
|
- url: http://127.0.0.1:7821
|
|
@@ -469,6 +469,33 @@ paths:
|
|
|
469
469
|
type: string
|
|
470
470
|
authErrorCode:
|
|
471
471
|
type: string
|
|
472
|
+
model:
|
|
473
|
+
type: string
|
|
474
|
+
availableModels:
|
|
475
|
+
type: array
|
|
476
|
+
items:
|
|
477
|
+
type: object
|
|
478
|
+
properties:
|
|
479
|
+
value:
|
|
480
|
+
type: string
|
|
481
|
+
label:
|
|
482
|
+
type: string
|
|
483
|
+
description:
|
|
484
|
+
type: string
|
|
485
|
+
group:
|
|
486
|
+
type: string
|
|
487
|
+
required:
|
|
488
|
+
- value
|
|
489
|
+
- label
|
|
490
|
+
additionalProperties: false
|
|
491
|
+
modelRevisionEpoch:
|
|
492
|
+
type: string
|
|
493
|
+
format: uuid
|
|
494
|
+
pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
|
|
495
|
+
modelRevision:
|
|
496
|
+
type: integer
|
|
497
|
+
minimum: 0
|
|
498
|
+
maximum: 9007199254740991
|
|
472
499
|
usedTokens:
|
|
473
500
|
type: number
|
|
474
501
|
contextSize:
|
|
@@ -548,6 +575,9 @@ paths:
|
|
|
548
575
|
cwd:
|
|
549
576
|
type: string
|
|
550
577
|
description: Working directory
|
|
578
|
+
model:
|
|
579
|
+
description: Optional model id or alias to request for the session.
|
|
580
|
+
type: string
|
|
551
581
|
required:
|
|
552
582
|
- agent
|
|
553
583
|
- task
|
|
@@ -566,10 +596,25 @@ paths:
|
|
|
566
596
|
type: string
|
|
567
597
|
agent:
|
|
568
598
|
type: string
|
|
599
|
+
requestedModel:
|
|
600
|
+
anyOf:
|
|
601
|
+
- type: string
|
|
602
|
+
- type: "null"
|
|
603
|
+
description: The model explicitly requested for this spawn, if any.
|
|
604
|
+
effectiveModel:
|
|
605
|
+
anyOf:
|
|
606
|
+
- type: string
|
|
607
|
+
- type: "null"
|
|
608
|
+
description: The top-level session model reported by the ACP adapter, if any.
|
|
609
|
+
modelWarning:
|
|
610
|
+
description: Why the requested model was not applied. The session is running on the agent's own model.
|
|
611
|
+
type: string
|
|
569
612
|
required:
|
|
570
613
|
- acpSessionId
|
|
571
614
|
- protocolSessionId
|
|
572
615
|
- agent
|
|
616
|
+
- requestedModel
|
|
617
|
+
- effectiveModel
|
|
573
618
|
additionalProperties: false
|
|
574
619
|
/v1/activation/dismiss:
|
|
575
620
|
post:
|
|
@@ -1580,6 +1625,93 @@ paths:
|
|
|
1580
1625
|
required:
|
|
1581
1626
|
- published
|
|
1582
1627
|
additionalProperties: false
|
|
1628
|
+
/v1/apps/{id}/refresh:
|
|
1629
|
+
post:
|
|
1630
|
+
operationId: apps_by_id_refresh_post
|
|
1631
|
+
summary: Compile an app
|
|
1632
|
+
description: Compile workspace or plugin app source into dist/ and refresh open surfaces.
|
|
1633
|
+
tags:
|
|
1634
|
+
- apps
|
|
1635
|
+
parameters:
|
|
1636
|
+
- name: id
|
|
1637
|
+
in: path
|
|
1638
|
+
required: true
|
|
1639
|
+
schema:
|
|
1640
|
+
type: string
|
|
1641
|
+
responses:
|
|
1642
|
+
"200":
|
|
1643
|
+
description: Successful response
|
|
1644
|
+
content:
|
|
1645
|
+
application/json:
|
|
1646
|
+
schema:
|
|
1647
|
+
type: object
|
|
1648
|
+
properties:
|
|
1649
|
+
ok:
|
|
1650
|
+
type: boolean
|
|
1651
|
+
const: true
|
|
1652
|
+
appId:
|
|
1653
|
+
type: string
|
|
1654
|
+
name:
|
|
1655
|
+
type: string
|
|
1656
|
+
compiled:
|
|
1657
|
+
type: boolean
|
|
1658
|
+
compile_duration_ms:
|
|
1659
|
+
type: number
|
|
1660
|
+
compile_errors:
|
|
1661
|
+
type: array
|
|
1662
|
+
items:
|
|
1663
|
+
type: object
|
|
1664
|
+
properties:
|
|
1665
|
+
text:
|
|
1666
|
+
type: string
|
|
1667
|
+
location:
|
|
1668
|
+
type: object
|
|
1669
|
+
properties:
|
|
1670
|
+
file:
|
|
1671
|
+
type: string
|
|
1672
|
+
line:
|
|
1673
|
+
type: number
|
|
1674
|
+
column:
|
|
1675
|
+
type: number
|
|
1676
|
+
required:
|
|
1677
|
+
- file
|
|
1678
|
+
- line
|
|
1679
|
+
- column
|
|
1680
|
+
additionalProperties: false
|
|
1681
|
+
required:
|
|
1682
|
+
- text
|
|
1683
|
+
additionalProperties: false
|
|
1684
|
+
compile_warnings:
|
|
1685
|
+
type: array
|
|
1686
|
+
items:
|
|
1687
|
+
type: object
|
|
1688
|
+
properties:
|
|
1689
|
+
text:
|
|
1690
|
+
type: string
|
|
1691
|
+
location:
|
|
1692
|
+
type: object
|
|
1693
|
+
properties:
|
|
1694
|
+
file:
|
|
1695
|
+
type: string
|
|
1696
|
+
line:
|
|
1697
|
+
type: number
|
|
1698
|
+
column:
|
|
1699
|
+
type: number
|
|
1700
|
+
required:
|
|
1701
|
+
- file
|
|
1702
|
+
- line
|
|
1703
|
+
- column
|
|
1704
|
+
additionalProperties: false
|
|
1705
|
+
required:
|
|
1706
|
+
- text
|
|
1707
|
+
additionalProperties: false
|
|
1708
|
+
required:
|
|
1709
|
+
- ok
|
|
1710
|
+
- appId
|
|
1711
|
+
- name
|
|
1712
|
+
- compiled
|
|
1713
|
+
- compile_duration_ms
|
|
1714
|
+
additionalProperties: false
|
|
1583
1715
|
/v1/apps/{id}/share-cloud:
|
|
1584
1716
|
post:
|
|
1585
1717
|
operationId: apps_by_id_sharecloud_post
|
|
@@ -5350,6 +5482,101 @@ paths:
|
|
|
5350
5482
|
responses:
|
|
5351
5483
|
"200":
|
|
5352
5484
|
description: Successful response
|
|
5485
|
+
/v1/channels/send:
|
|
5486
|
+
post:
|
|
5487
|
+
operationId: channels_send_post
|
|
5488
|
+
summary: Send text to a channel chat
|
|
5489
|
+
description: Deliver text to a chat on a channel through the channel's transport, recorded after the channel acknowledges it.
|
|
5490
|
+
tags:
|
|
5491
|
+
- channels
|
|
5492
|
+
requestBody:
|
|
5493
|
+
required: true
|
|
5494
|
+
content:
|
|
5495
|
+
application/json:
|
|
5496
|
+
schema:
|
|
5497
|
+
type: object
|
|
5498
|
+
properties:
|
|
5499
|
+
channel:
|
|
5500
|
+
type: string
|
|
5501
|
+
enum:
|
|
5502
|
+
- telegram
|
|
5503
|
+
- phone
|
|
5504
|
+
- vellum
|
|
5505
|
+
- whatsapp
|
|
5506
|
+
- slack
|
|
5507
|
+
- email
|
|
5508
|
+
- platform
|
|
5509
|
+
- a2a
|
|
5510
|
+
- discord
|
|
5511
|
+
- plugin
|
|
5512
|
+
description: Channel to send on
|
|
5513
|
+
target:
|
|
5514
|
+
type: object
|
|
5515
|
+
properties:
|
|
5516
|
+
kind:
|
|
5517
|
+
type: string
|
|
5518
|
+
const: chat
|
|
5519
|
+
chatId:
|
|
5520
|
+
type: string
|
|
5521
|
+
minLength: 1
|
|
5522
|
+
description: Chat id in the channel's own id space
|
|
5523
|
+
threadId:
|
|
5524
|
+
description: Thread within the chat, in the channel's own id space
|
|
5525
|
+
type: string
|
|
5526
|
+
minLength: 1
|
|
5527
|
+
required:
|
|
5528
|
+
- kind
|
|
5529
|
+
- chatId
|
|
5530
|
+
text:
|
|
5531
|
+
type: string
|
|
5532
|
+
minLength: 1
|
|
5533
|
+
description: Text to send
|
|
5534
|
+
renderRichly:
|
|
5535
|
+
description: Ask the channel for its rich rendering, where it has one
|
|
5536
|
+
type: boolean
|
|
5537
|
+
required:
|
|
5538
|
+
- channel
|
|
5539
|
+
- target
|
|
5540
|
+
- text
|
|
5541
|
+
responses:
|
|
5542
|
+
"200":
|
|
5543
|
+
description: Successful response
|
|
5544
|
+
content:
|
|
5545
|
+
application/json:
|
|
5546
|
+
schema:
|
|
5547
|
+
type: object
|
|
5548
|
+
properties:
|
|
5549
|
+
channel:
|
|
5550
|
+
type: string
|
|
5551
|
+
enum:
|
|
5552
|
+
- telegram
|
|
5553
|
+
- phone
|
|
5554
|
+
- vellum
|
|
5555
|
+
- whatsapp
|
|
5556
|
+
- slack
|
|
5557
|
+
- email
|
|
5558
|
+
- platform
|
|
5559
|
+
- a2a
|
|
5560
|
+
- discord
|
|
5561
|
+
- plugin
|
|
5562
|
+
chatId:
|
|
5563
|
+
type: string
|
|
5564
|
+
threadId:
|
|
5565
|
+
type: string
|
|
5566
|
+
messageIds:
|
|
5567
|
+
type: array
|
|
5568
|
+
items:
|
|
5569
|
+
type: string
|
|
5570
|
+
lastMessageId:
|
|
5571
|
+
type: string
|
|
5572
|
+
recordedIn:
|
|
5573
|
+
type: string
|
|
5574
|
+
required:
|
|
5575
|
+
- channel
|
|
5576
|
+
- chatId
|
|
5577
|
+
- messageIds
|
|
5578
|
+
- lastMessageId
|
|
5579
|
+
additionalProperties: false
|
|
5353
5580
|
/v1/clients:
|
|
5354
5581
|
get:
|
|
5355
5582
|
operationId: clients_get
|
|
@@ -11146,7 +11373,9 @@ paths:
|
|
|
11146
11373
|
post:
|
|
11147
11374
|
operationId: credentials_list_post
|
|
11148
11375
|
summary: List all credentials with metadata
|
|
11149
|
-
description:
|
|
11376
|
+
description:
|
|
11377
|
+
Return credentials from the live credential vault, with OAuth connection info and platform-managed
|
|
11378
|
+
credentials. Fails if the vault is unreachable.
|
|
11150
11379
|
tags:
|
|
11151
11380
|
- credentials
|
|
11152
11381
|
requestBody:
|
|
@@ -11481,54 +11710,6 @@ paths:
|
|
|
11481
11710
|
- schedules
|
|
11482
11711
|
- timestamp
|
|
11483
11712
|
additionalProperties: false
|
|
11484
|
-
/v1/debug/bash:
|
|
11485
|
-
post:
|
|
11486
|
-
operationId: debug_bash_post
|
|
11487
|
-
summary: Execute a shell command in the assistant process
|
|
11488
|
-
description: Developer debugging tool. Requires the assistant to be running with VELLUM_DEBUG=1.
|
|
11489
|
-
tags:
|
|
11490
|
-
- debug
|
|
11491
|
-
requestBody:
|
|
11492
|
-
required: true
|
|
11493
|
-
content:
|
|
11494
|
-
application/json:
|
|
11495
|
-
schema:
|
|
11496
|
-
type: object
|
|
11497
|
-
properties:
|
|
11498
|
-
command:
|
|
11499
|
-
type: string
|
|
11500
|
-
description: Shell command to execute via bash -c
|
|
11501
|
-
timeoutMs:
|
|
11502
|
-
description: "Execution timeout in milliseconds (default: 30000)"
|
|
11503
|
-
type: number
|
|
11504
|
-
required:
|
|
11505
|
-
- command
|
|
11506
|
-
responses:
|
|
11507
|
-
"200":
|
|
11508
|
-
description: Successful response
|
|
11509
|
-
content:
|
|
11510
|
-
application/json:
|
|
11511
|
-
schema:
|
|
11512
|
-
type: object
|
|
11513
|
-
properties:
|
|
11514
|
-
stdout:
|
|
11515
|
-
type: string
|
|
11516
|
-
stderr:
|
|
11517
|
-
type: string
|
|
11518
|
-
exitCode:
|
|
11519
|
-
anyOf:
|
|
11520
|
-
- type: number
|
|
11521
|
-
- type: "null"
|
|
11522
|
-
timedOut:
|
|
11523
|
-
type: boolean
|
|
11524
|
-
error:
|
|
11525
|
-
type: string
|
|
11526
|
-
required:
|
|
11527
|
-
- stdout
|
|
11528
|
-
- stderr
|
|
11529
|
-
- exitCode
|
|
11530
|
-
- timedOut
|
|
11531
|
-
additionalProperties: false
|
|
11532
11713
|
/v1/debug/database:
|
|
11533
11714
|
get:
|
|
11534
11715
|
operationId: debug_database_get
|
|
@@ -11732,6 +11913,67 @@ paths:
|
|
|
11732
11913
|
required:
|
|
11733
11914
|
- defers
|
|
11734
11915
|
additionalProperties: false
|
|
11916
|
+
/v1/desktop/setup:
|
|
11917
|
+
get:
|
|
11918
|
+
operationId: desktop_setup_get
|
|
11919
|
+
summary: Get desktop setup status
|
|
11920
|
+
tags:
|
|
11921
|
+
- desktop
|
|
11922
|
+
responses:
|
|
11923
|
+
"200":
|
|
11924
|
+
description: Successful response
|
|
11925
|
+
content:
|
|
11926
|
+
application/json:
|
|
11927
|
+
schema:
|
|
11928
|
+
type: object
|
|
11929
|
+
properties:
|
|
11930
|
+
state:
|
|
11931
|
+
type: string
|
|
11932
|
+
enum:
|
|
11933
|
+
- required
|
|
11934
|
+
- installing
|
|
11935
|
+
- ready
|
|
11936
|
+
- failed
|
|
11937
|
+
- unsupported
|
|
11938
|
+
stage:
|
|
11939
|
+
type: string
|
|
11940
|
+
enum:
|
|
11941
|
+
- packages
|
|
11942
|
+
- chrome
|
|
11943
|
+
- checking
|
|
11944
|
+
required:
|
|
11945
|
+
- state
|
|
11946
|
+
additionalProperties: false
|
|
11947
|
+
post:
|
|
11948
|
+
operationId: desktop_setup_post
|
|
11949
|
+
summary: Install desktop components
|
|
11950
|
+
tags:
|
|
11951
|
+
- desktop
|
|
11952
|
+
responses:
|
|
11953
|
+
"200":
|
|
11954
|
+
description: Successful response
|
|
11955
|
+
content:
|
|
11956
|
+
application/json:
|
|
11957
|
+
schema:
|
|
11958
|
+
type: object
|
|
11959
|
+
properties:
|
|
11960
|
+
state:
|
|
11961
|
+
type: string
|
|
11962
|
+
enum:
|
|
11963
|
+
- required
|
|
11964
|
+
- installing
|
|
11965
|
+
- ready
|
|
11966
|
+
- failed
|
|
11967
|
+
- unsupported
|
|
11968
|
+
stage:
|
|
11969
|
+
type: string
|
|
11970
|
+
enum:
|
|
11971
|
+
- packages
|
|
11972
|
+
- chrome
|
|
11973
|
+
- checking
|
|
11974
|
+
required:
|
|
11975
|
+
- state
|
|
11976
|
+
additionalProperties: false
|
|
11735
11977
|
/v1/diagnostics/env-vars:
|
|
11736
11978
|
get:
|
|
11737
11979
|
operationId: diagnostics_envvars_get
|
|
@@ -15739,6 +15981,13 @@ paths:
|
|
|
15739
15981
|
type: string
|
|
15740
15982
|
userGuidance:
|
|
15741
15983
|
type: string
|
|
15984
|
+
timings:
|
|
15985
|
+
type: object
|
|
15986
|
+
propertyNames:
|
|
15987
|
+
type: string
|
|
15988
|
+
additionalProperties:
|
|
15989
|
+
type: number
|
|
15990
|
+
description: Per-phase helper timings in milliseconds
|
|
15742
15991
|
required:
|
|
15743
15992
|
- requestId
|
|
15744
15993
|
responses:
|
|
@@ -21826,6 +22075,9 @@ paths:
|
|
|
21826
22075
|
type: boolean
|
|
21827
22076
|
noResponse:
|
|
21828
22077
|
type: boolean
|
|
22078
|
+
cameraFrame:
|
|
22079
|
+
type: boolean
|
|
22080
|
+
const: true
|
|
21829
22081
|
assistantTextVisibility:
|
|
21830
22082
|
type: string
|
|
21831
22083
|
enum:
|
|
@@ -36805,8 +37057,18 @@ paths:
|
|
|
36805
37057
|
schema:
|
|
36806
37058
|
type: string
|
|
36807
37059
|
description:
|
|
36808
|
-
"Compute recursive byte size for each directory entry (true/false). Budget-bounded
|
|
36809
|
-
return size: null."
|
|
37060
|
+
"Compute recursive byte size for each directory entry (true/false). Budget-bounded: large subtrees may
|
|
37061
|
+
return size: null. Not applied to a recursive listing, which carries every file for the client to sum."
|
|
37062
|
+
- name: recursive
|
|
37063
|
+
in: query
|
|
37064
|
+
required: false
|
|
37065
|
+
schema:
|
|
37066
|
+
type: string
|
|
37067
|
+
description:
|
|
37068
|
+
"List the whole subtree in one response (true/false). Depth-first, each directory's entries in listing
|
|
37069
|
+
order, so grouping by parent path recovers per-directory listings. Bounded: sets truncated when the entry
|
|
37070
|
+
cap or deadline stops the walk, and does not enter directories the workspace gitignore rules exclude, which
|
|
37071
|
+
are named in skipped."
|
|
36810
37072
|
responses:
|
|
36811
37073
|
"200":
|
|
36812
37074
|
description: Successful response
|
|
@@ -36850,6 +37112,19 @@ paths:
|
|
|
36850
37112
|
- modifiedAt
|
|
36851
37113
|
additionalProperties: false
|
|
36852
37114
|
description: Directory entry objects
|
|
37115
|
+
truncated:
|
|
37116
|
+
description:
|
|
37117
|
+
A recursive walk stopped at its entry cap or deadline, so deeper entries are missing. Absent from
|
|
37118
|
+
assistants that predate recursive listings.
|
|
37119
|
+
type: boolean
|
|
37120
|
+
skipped:
|
|
37121
|
+
description:
|
|
37122
|
+
Directories a recursive walk listed but did not enter, whether because a workspace gitignore rule excludes
|
|
37123
|
+
them, they are symlinks, or they could not be read. Each can still be listed on its own. Absent
|
|
37124
|
+
from assistants that predate recursive listings.
|
|
37125
|
+
type: array
|
|
37126
|
+
items:
|
|
37127
|
+
type: string
|
|
36853
37128
|
required:
|
|
36854
37129
|
- path
|
|
36855
37130
|
- entries
|