@vellumai/assistant 0.4.44 → 0.4.45
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/.prettierignore +4 -0
- package/ARCHITECTURE.md +34 -31
- package/README.md +4 -4
- package/bun.lock +10 -35
- package/docs/architecture/integrations.md +102 -197
- package/docs/architecture/keychain-broker.md +1 -1
- package/docs/architecture/memory.md +2 -2
- package/docs/architecture/scheduling.md +1 -1
- package/docs/architecture/security.md +11 -11
- package/docs/error-handling.md +1 -1
- package/docs/trusted-contact-access.md +3 -3
- package/drizzle/meta/0000_snapshot.json +34 -100
- package/drizzle/meta/_journal.json +1 -1
- package/drizzle.config.ts +4 -4
- package/package.json +3 -2
- package/scripts/capture-x-graphql.ts +237 -141
- package/scripts/generate-bundled-tool-registry.ts +223 -0
- package/src/__tests__/access-request-decision.test.ts +0 -1
- package/src/__tests__/actor-token-service.test.ts +23 -24
- package/src/__tests__/agent-loop.test.ts +0 -131
- package/src/__tests__/always-loaded-tools-guard.test.ts +71 -0
- package/src/__tests__/amazon-cdp-integration.test.ts +11 -9
- package/src/__tests__/approval-primitive.test.ts +0 -1
- package/src/__tests__/approval-routes-http.test.ts +11 -1
- package/src/__tests__/asset-materialize-tool.test.ts +0 -1
- package/src/__tests__/asset-search-tool.test.ts +0 -1
- package/src/__tests__/assistant-attachment-directive.test.ts +1 -1
- package/src/__tests__/assistant-events-sse-hardening.test.ts +0 -1
- package/src/__tests__/assistant-feature-flag-guardrails.test.ts +0 -2
- package/src/__tests__/assistant-feature-flags-integration.test.ts +70 -18
- package/src/__tests__/assistant-id-boundary-guard.test.ts +6 -6
- package/src/__tests__/attachments-store.test.ts +0 -1
- package/src/__tests__/avatar-e2e.test.ts +74 -115
- package/src/__tests__/avatar-router.test.ts +25 -62
- package/src/__tests__/browser-manager.test.ts +24 -0
- package/src/__tests__/browser-skill-baseline-tool-payload.test.ts +4 -3
- package/src/__tests__/browser-skill-endstate.test.ts +8 -11
- package/src/__tests__/btw-routes.test.ts +326 -0
- package/src/__tests__/bundled-skill-retrieval-guard.test.ts +23 -9
- package/src/__tests__/call-controller.test.ts +0 -1
- package/src/__tests__/call-conversation-messages.test.ts +0 -1
- package/src/__tests__/call-domain.test.ts +0 -1
- package/src/__tests__/call-pointer-messages.test.ts +0 -1
- package/src/__tests__/call-recovery.test.ts +0 -1
- package/src/__tests__/call-routes-http.test.ts +0 -1
- package/src/__tests__/call-store.test.ts +0 -1
- package/src/__tests__/canonical-guardian-store.test.ts +0 -1
- package/src/__tests__/channel-approval-routes.test.ts +1 -1
- package/src/__tests__/channel-approvals.test.ts +1 -1
- package/src/__tests__/channel-delivery-store.test.ts +0 -1
- package/src/__tests__/channel-guardian.test.ts +5 -7
- package/src/__tests__/channel-retry-sweep.test.ts +0 -1
- package/src/__tests__/checker.test.ts +4 -11
- package/src/__tests__/compaction.benchmark.test.ts +16 -14
- package/src/__tests__/computer-use-session-lifecycle.test.ts +10 -11
- package/src/__tests__/computer-use-session-working-dir.test.ts +2 -6
- package/src/__tests__/computer-use-skill-lifecycle-cleanup.test.ts +2 -5
- package/src/__tests__/computer-use-tools.test.ts +35 -31
- package/src/__tests__/config-schema.test.ts +11 -15
- package/src/__tests__/config-watcher.test.ts +0 -1
- package/src/__tests__/confirmation-request-guardian-bridge.test.ts +0 -1
- package/src/__tests__/conflict-store.test.ts +0 -1
- package/src/__tests__/connection-policy.test.ts +4 -7
- package/src/__tests__/contacts-tools.test.ts +0 -1
- package/src/__tests__/context-memory-e2e.test.ts +2 -4
- package/src/__tests__/context-overflow-reducer.test.ts +2 -4
- package/src/__tests__/context-window-manager.test.ts +147 -60
- package/src/__tests__/contradiction-checker.test.ts +0 -1
- package/src/__tests__/conversation-attention-store.test.ts +0 -1
- package/src/__tests__/conversation-attention-telegram.test.ts +1 -1
- package/src/__tests__/conversation-pairing.test.ts +2 -2
- package/src/__tests__/conversation-routes-guardian-reply.test.ts +25 -1
- package/src/__tests__/conversation-routes-slash-commands.test.ts +381 -0
- package/src/__tests__/conversation-store.test.ts +0 -1
- package/src/__tests__/conversation-unread-route.test.ts +1 -2
- package/src/__tests__/credential-security-invariants.test.ts +7 -8
- package/src/__tests__/cross-provider-web-search.test.ts +353 -0
- package/src/__tests__/daemon-assistant-events.test.ts +6 -7
- package/src/__tests__/db-schedule-syntax-migration.test.ts +15 -3
- package/src/__tests__/delete-managed-skill-tool.test.ts +5 -9
- package/src/__tests__/deterministic-verification-control-plane.test.ts +0 -1
- package/src/__tests__/diagnostics-export.test.ts +189 -0
- package/src/__tests__/dynamic-skill-workflow-prompt.test.ts +0 -1
- package/src/__tests__/emit-signal-routing-intent.test.ts +3 -3
- package/src/__tests__/entity-extractor.test.ts +0 -1
- package/src/__tests__/entity-search.test.ts +0 -1
- package/src/__tests__/ephemeral-permissions.test.ts +2 -4
- package/src/__tests__/file-read-tool.test.ts +86 -0
- package/src/__tests__/followup-tools.test.ts +0 -1
- package/src/__tests__/frontmatter.test.ts +77 -34
- package/src/__tests__/gateway-only-enforcement.test.ts +0 -1
- package/src/__tests__/gateway-only-guard.test.ts +1 -1
- package/src/__tests__/guardian-action-conversation-turn.test.ts +0 -1
- package/src/__tests__/guardian-action-followup-executor.test.ts +0 -1
- package/src/__tests__/guardian-action-followup-store.test.ts +0 -1
- package/src/__tests__/guardian-action-grant-mint-consume.test.ts +0 -1
- package/src/__tests__/guardian-action-late-reply.test.ts +0 -1
- package/src/__tests__/guardian-action-store.test.ts +0 -1
- package/src/__tests__/guardian-action-sweep.test.ts +0 -1
- package/src/__tests__/guardian-decision-primitive-canonical.test.ts +0 -1
- package/src/__tests__/guardian-dispatch.test.ts +1 -2
- package/src/__tests__/guardian-grant-minting.test.ts +1 -1
- package/src/__tests__/guardian-outbound-http.test.ts +0 -1
- package/src/__tests__/guardian-principal-id-roundtrip.test.ts +0 -1
- package/src/__tests__/guardian-routing-invariants.test.ts +1 -1
- package/src/__tests__/guardian-routing-state.test.ts +0 -1
- package/src/__tests__/guardian-verification-voice-binding.test.ts +0 -1
- package/src/__tests__/guardian-verify-setup-skill-regression.test.ts +3 -5
- package/src/__tests__/handlers-user-message-approval-consumption.test.ts +28 -426
- package/src/__tests__/host-bash-proxy.test.ts +335 -0
- package/src/__tests__/host-file-proxy.test.ts +374 -0
- package/src/__tests__/host-shell-tool.test.ts +147 -1
- package/src/__tests__/http-user-message-parity.test.ts +361 -0
- package/src/__tests__/inbound-invite-redemption.test.ts +0 -1
- package/src/__tests__/integration-status.test.ts +3 -8
- package/src/__tests__/intent-routing.test.ts +7 -46
- package/src/__tests__/invite-redemption-service.test.ts +0 -1
- package/src/__tests__/invite-routes-http.test.ts +0 -1
- package/src/__tests__/llm-usage-store.test.ts +0 -1
- package/src/__tests__/managed-avatar-client.test.ts +101 -55
- package/src/__tests__/managed-skill-lifecycle.test.ts +9 -18
- package/src/__tests__/managed-store.test.ts +94 -21
- package/src/__tests__/media-reuse-story.e2e.test.ts +0 -1
- package/src/__tests__/memory-context-benchmark.benchmark.test.ts +2 -4
- package/src/__tests__/memory-lifecycle-e2e.test.ts +0 -1
- package/src/__tests__/memory-recall-quality.test.ts +0 -1
- package/src/__tests__/memory-regressions.experimental.test.ts +0 -1
- package/src/__tests__/memory-regressions.test.ts +0 -1
- package/src/__tests__/memory-retrieval.benchmark.test.ts +0 -1
- package/src/__tests__/memory-upsert-concurrency.test.ts +0 -1
- package/src/__tests__/messaging-send-tool.test.ts +35 -0
- package/src/__tests__/messaging-skill-split.test.ts +138 -0
- package/src/__tests__/migration-cross-version-compatibility.test.ts +0 -1
- package/src/__tests__/migration-export-http.test.ts +2 -3
- package/src/__tests__/migration-import-commit-http.test.ts +1 -2
- package/src/__tests__/migration-import-preflight-http.test.ts +1 -2
- package/src/__tests__/migration-validate-http.test.ts +1 -2
- package/src/__tests__/native-web-search.test.ts +475 -0
- package/src/__tests__/navigate-settings-tab.test.ts +84 -0
- package/src/__tests__/non-member-access-request.test.ts +0 -1
- package/src/__tests__/notification-broadcaster.test.ts +15 -15
- package/src/__tests__/notification-decision-strategy.test.ts +6 -6
- package/src/__tests__/notification-deep-link.test.ts +7 -7
- package/src/__tests__/notification-guardian-path.test.ts +2 -3
- package/src/__tests__/notification-telegram-adapter.test.ts +1 -1
- package/src/__tests__/notification-thread-candidates.test.ts +4 -4
- package/src/__tests__/onboarding-starter-tasks.test.ts +0 -1
- package/src/__tests__/playbook-execution.test.ts +0 -1
- package/src/__tests__/playbook-tools.test.ts +0 -1
- package/src/__tests__/profile-compiler.test.ts +0 -1
- package/src/__tests__/provider-managed-proxy-integration.test.ts +25 -0
- package/src/__tests__/qdrant-collection-migration.test.ts +223 -0
- package/src/__tests__/recording-handler.test.ts +30 -94
- package/src/__tests__/registry.test.ts +28 -35
- package/src/__tests__/relay-server.test.ts +0 -1
- package/src/__tests__/ride-shotgun-handler.test.ts +4 -20
- package/src/__tests__/runtime-attachment-metadata.test.ts +0 -1
- package/src/__tests__/runtime-events-sse-parity.test.ts +3 -4
- package/src/__tests__/runtime-events-sse.test.ts +0 -1
- package/src/__tests__/sandbox-diagnostics.test.ts +0 -1
- package/src/__tests__/scaffold-managed-skill-tool.test.ts +30 -28
- package/src/__tests__/schedule-store.test.ts +441 -1
- package/src/__tests__/schedule-tools.test.ts +468 -7
- package/src/__tests__/scheduler-recurrence.test.ts +196 -23
- package/src/__tests__/scoped-approval-grants.test.ts +0 -1
- package/src/__tests__/scoped-grant-security-matrix.test.ts +0 -1
- package/src/__tests__/secret-prompt-log-hygiene.test.ts +6 -3
- package/src/__tests__/secret-response-routing.test.ts +4 -1
- package/src/__tests__/send-endpoint-busy.test.ts +14 -2
- package/src/__tests__/send-notification-tool.test.ts +0 -7
- package/src/__tests__/sequence-store.test.ts +0 -1
- package/src/__tests__/server-history-render.test.ts +1 -2
- package/src/__tests__/session-abort-tool-results.test.ts +0 -1
- package/src/__tests__/session-agent-loop.test.ts +46 -6
- package/src/__tests__/session-confirmation-signals.test.ts +0 -1
- package/src/__tests__/session-conflict-gate.test.ts +2 -6
- package/src/__tests__/session-error.test.ts +5 -14
- package/src/__tests__/session-init.benchmark.test.ts +3 -5
- package/src/__tests__/session-load-history-repair.test.ts +0 -1
- package/src/__tests__/session-media-retry.test.ts +12 -74
- package/src/__tests__/session-pre-run-repair.test.ts +0 -1
- package/src/__tests__/session-profile-injection.test.ts +2 -6
- package/src/__tests__/session-provider-retry-repair.test.ts +2 -6
- package/src/__tests__/session-queue.test.ts +94 -139
- package/src/__tests__/session-skill-tools.test.ts +115 -115
- package/src/__tests__/session-slash-known.test.ts +0 -1
- package/src/__tests__/session-slash-queue.test.ts +0 -1
- package/src/__tests__/session-slash-unknown.test.ts +0 -1
- package/src/__tests__/session-surfaces-task-progress.test.ts +34 -0
- package/src/__tests__/session-usage.test.ts +0 -1
- package/src/__tests__/session-workspace-cache-state.test.ts +2 -6
- package/src/__tests__/session-workspace-injection.test.ts +2 -6
- package/src/__tests__/session-workspace-tool-tracking.test.ts +2 -6
- package/src/__tests__/skill-feature-flags-integration.test.ts +180 -184
- package/src/__tests__/skill-feature-flags.test.ts +125 -18
- package/src/__tests__/skill-load-feature-flag.test.ts +1 -2
- package/src/__tests__/skill-load-tool.test.ts +194 -2
- package/src/__tests__/skill-projection-feature-flag.test.ts +27 -16
- package/src/__tests__/skill-projection.benchmark.test.ts +15 -14
- package/src/__tests__/skills.test.ts +14 -53
- package/src/__tests__/slack-channel-config.test.ts +0 -1
- package/src/__tests__/slack-inbound-verification.test.ts +0 -1
- package/src/__tests__/slack-skill.test.ts +1 -1
- package/src/__tests__/subagent-tools.test.ts +2 -2
- package/src/__tests__/system-prompt.test.ts +4 -3
- package/src/__tests__/task-compiler.test.ts +0 -1
- package/src/__tests__/task-management-tools.test.ts +0 -1
- package/src/__tests__/task-memory-cleanup.test.ts +0 -1
- package/src/__tests__/task-runner.test.ts +0 -1
- package/src/__tests__/task-scheduler.test.ts +0 -1
- package/src/__tests__/terminal-tools.test.ts +0 -1
- package/src/__tests__/test-support/computer-use-skill-harness.ts +2 -4
- package/src/__tests__/thread-seed-composer.test.ts +5 -5
- package/src/__tests__/tool-approval-handler.test.ts +0 -1
- package/src/__tests__/tool-execution-abort-cleanup.test.ts +0 -1
- package/src/__tests__/tool-execution-pipeline.benchmark.test.ts +0 -1
- package/src/__tests__/tool-executor.test.ts +8 -86
- package/src/__tests__/tool-grant-request-escalation.test.ts +0 -1
- package/src/__tests__/tool-notification-listener.test.ts +1 -1
- package/src/__tests__/tool-preview-lifecycle.test.ts +416 -0
- package/src/__tests__/trust-store.test.ts +80 -4
- package/src/__tests__/trusted-contact-approval-notifier.test.ts +0 -1
- package/src/__tests__/trusted-contact-inline-approval-integration.test.ts +0 -1
- package/src/__tests__/trusted-contact-lifecycle-notifications.test.ts +0 -1
- package/src/__tests__/trusted-contact-multichannel.test.ts +0 -1
- package/src/__tests__/trusted-contact-verification.test.ts +0 -1
- package/src/__tests__/twilio-provider.test.ts +0 -1
- package/src/__tests__/twilio-routes.test.ts +0 -1
- package/src/__tests__/{request-file-tool.test.ts → ui-file-upload-surface.test.ts} +11 -72
- package/src/__tests__/update-bulletin.test.ts +0 -1
- package/src/__tests__/usage-cache-backfill-migration.test.ts +0 -1
- package/src/__tests__/usage-routes.test.ts +0 -1
- package/src/__tests__/verification-control-plane-policy.test.ts +4 -4
- package/src/__tests__/voice-invite-redemption.test.ts +0 -1
- package/src/__tests__/voice-scoped-grant-consumer.test.ts +0 -1
- package/src/__tests__/voice-session-bridge.test.ts +9 -1
- package/src/__tests__/web-fetch.test.ts +57 -0
- package/src/__tests__/workspace-git-service.test.ts +5 -14
- package/src/__tests__/workspace-policy.test.ts +0 -1
- package/src/agent/loop.ts +22 -34
- package/src/bundler/bundle-signer.ts +4 -4
- package/src/calls/call-controller.ts +1 -1
- package/src/calls/relay-server.ts +1 -1
- package/src/calls/twilio-rest.ts +1 -1
- package/src/calls/voice-session-bridge.ts +3 -1
- package/src/cli/__tests__/notifications.test.ts +3 -4
- package/src/cli/commands/map.ts +2 -6
- package/src/cli/commands/mcp.ts +73 -15
- package/src/cli/commands/notifications.ts +4 -4
- package/src/cli/commands/sessions.ts +9 -1
- package/src/cli/commands/skills.ts +6 -10
- package/src/cli/http-client.ts +2 -3
- package/src/cli/main-screen.tsx +10 -10
- package/src/cli/program.ts +0 -4
- package/src/cli/reference.ts +0 -2
- package/src/cli.ts +15 -9
- package/src/config/__tests__/bundled-tool-registry-guard.test.ts +120 -0
- package/src/config/bundled-skills/_shared/CLI_RETRIEVAL_PATTERN.md +11 -0
- package/src/config/bundled-skills/app-builder/SKILL.md +6 -1
- package/src/config/bundled-skills/browser/SKILL.md +6 -1
- package/src/config/bundled-skills/chatgpt-import/SKILL.md +5 -1
- package/src/config/bundled-skills/claude-code/SKILL.md +5 -1
- package/src/config/bundled-skills/computer-use/SKILL.md +6 -1
- package/src/config/bundled-skills/computer-use/TOOLS.json +6 -69
- package/src/config/bundled-skills/computer-use/tools/computer-use-click.ts +10 -1
- package/src/config/bundled-skills/contacts/SKILL.md +10 -1
- package/src/config/bundled-skills/contacts/TOOLS.json +35 -0
- package/src/config/bundled-skills/{messaging → contacts}/tools/google-contacts.ts +9 -2
- package/src/config/bundled-skills/document/SKILL.md +4 -1
- package/src/config/bundled-skills/doordash/SKILL.md +8 -1
- package/src/config/bundled-skills/doordash/lib/shared/platform.ts +4 -1
- package/src/config/bundled-skills/followups/SKILL.md +4 -1
- package/src/config/bundled-skills/gmail/SKILL.md +180 -0
- package/src/config/bundled-skills/gmail/TOOLS.json +506 -0
- package/src/config/bundled-skills/gmail/tools/gmail-archive.ts +149 -0
- package/src/config/bundled-skills/gmail/tools/gmail-attachments.ts +110 -0
- package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-draft.ts +1 -1
- package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-filters.ts +1 -1
- package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-follow-up.ts +1 -1
- package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-forward.ts +1 -1
- package/src/config/bundled-skills/gmail/tools/gmail-label.ts +50 -0
- package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-outreach-scan.ts +8 -90
- package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-send-draft.ts +1 -1
- package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-sender-digest.ts +2 -2
- package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-trash.ts +1 -1
- package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-unsubscribe.ts +1 -1
- package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-vacation.ts +1 -1
- package/src/config/bundled-skills/gmail/tools/shared.ts +47 -0
- package/src/config/bundled-skills/google-calendar/SKILL.md +5 -1
- package/src/config/bundled-skills/image-studio/SKILL.md +5 -1
- package/src/config/bundled-skills/knowledge-graph/SKILL.md +4 -1
- package/src/config/bundled-skills/media-processing/SKILL.md +7 -13
- package/src/config/bundled-skills/media-processing/TOOLS.json +0 -22
- package/src/config/bundled-skills/media-processing/tools/generate-clip.ts +12 -1
- package/src/config/bundled-skills/messaging/SKILL.md +23 -139
- package/src/config/bundled-skills/messaging/TOOLS.json +33 -1215
- package/src/config/bundled-skills/messaging/tools/gmail-mime-helpers.ts +42 -0
- package/src/config/bundled-skills/messaging/tools/messaging-send.ts +165 -2
- package/src/config/bundled-skills/messaging/tools/messaging-sender-digest.ts +1 -13
- package/src/config/bundled-skills/messaging/tools/shared.ts +81 -34
- package/src/config/bundled-skills/notifications/SKILL.md +5 -1
- package/src/config/bundled-skills/orchestration/SKILL.md +30 -0
- package/src/config/bundled-skills/orchestration/TOOLS.json +35 -0
- package/src/config/bundled-skills/{reminder/tools/reminder-create.ts → orchestration/tools/swarm-delegate.ts} +3 -3
- package/src/config/bundled-skills/phone-calls/SKILL.md +9 -1
- package/src/config/bundled-skills/playbooks/SKILL.md +4 -1
- package/src/config/bundled-skills/schedule/SKILL.md +70 -9
- package/src/config/bundled-skills/schedule/TOOLS.json +38 -6
- package/src/config/bundled-skills/screen-watch/SKILL.md +28 -0
- package/src/config/bundled-skills/screen-watch/TOOLS.json +35 -0
- package/src/config/bundled-skills/{reminder/tools/reminder-cancel.ts → screen-watch/tools/start-screen-watch.ts} +3 -3
- package/src/config/bundled-skills/sequences/SKILL.md +47 -0
- package/src/config/bundled-skills/sequences/TOOLS.json +340 -0
- package/src/config/bundled-skills/sequences/tools/sequence-update.ts +128 -0
- package/src/config/bundled-skills/sequences/tools/shared.ts +9 -0
- package/src/config/bundled-skills/settings/SKILL.md +12 -0
- package/src/config/bundled-skills/settings/TOOLS.json +112 -0
- package/src/config/bundled-skills/settings/tools/navigate-settings-tab.ts +43 -0
- package/src/config/bundled-skills/settings/tools/open-system-settings.ts +52 -0
- package/src/config/bundled-skills/{computer-use/tools/computer-use-right-click.ts → settings/tools/set-avatar.ts} +2 -6
- package/src/{tools/system/voice-config.ts → config/bundled-skills/settings/tools/voice-config-update.ts} +59 -96
- package/src/config/bundled-skills/skill-management/SKILL.md +18 -0
- package/src/config/bundled-skills/skill-management/TOOLS.json +90 -0
- package/src/config/bundled-skills/{computer-use/tools/computer-use-double-click.ts → skill-management/tools/delete-managed.ts} +2 -6
- package/src/config/bundled-skills/skill-management/tools/scaffold-managed.ts +12 -0
- package/src/config/bundled-skills/slack/SKILL.md +5 -1
- package/src/config/bundled-skills/subagent/SKILL.md +4 -1
- package/src/config/bundled-skills/tasks/SKILL.md +5 -2
- package/src/config/bundled-skills/transcribe/SKILL.md +4 -1
- package/src/config/bundled-skills/watcher/SKILL.md +4 -1
- package/src/config/bundled-tool-registry.ts +118 -107
- package/src/config/env.ts +5 -2
- package/src/config/feature-flag-registry.json +25 -9
- package/src/config/loader.ts +10 -2
- package/src/config/schema.ts +19 -16
- package/src/config/schemas/inference.ts +12 -22
- package/src/config/schemas/memory-storage.ts +19 -1
- package/src/config/schemas/platform.ts +0 -16
- package/src/config/skill-state.ts +11 -8
- package/src/config/skills.ts +83 -32
- package/src/context/token-estimator.ts +11 -0
- package/src/context/window-manager.ts +180 -151
- package/src/daemon/computer-use-session.ts +11 -43
- package/src/daemon/daemon-control.ts +4 -1
- package/src/daemon/handlers/config-channels.ts +5 -9
- package/src/daemon/handlers/config-ingress.ts +0 -4
- package/src/daemon/handlers/config-model.ts +7 -13
- package/src/daemon/handlers/config-telegram.ts +4 -8
- package/src/daemon/handlers/config-voice.ts +2 -5
- package/src/daemon/handlers/dictation.ts +2 -12
- package/src/daemon/handlers/identity.ts +0 -105
- package/src/daemon/handlers/recording.ts +3 -23
- package/src/daemon/handlers/session-history.ts +1 -1
- package/src/daemon/handlers/sessions.ts +53 -72
- package/src/daemon/handlers/shared.ts +7 -28
- package/src/daemon/handlers/skills.ts +31 -27
- package/src/daemon/host-bash-proxy.ts +148 -0
- package/src/daemon/host-file-proxy.ts +135 -0
- package/src/daemon/lifecycle.ts +49 -24
- package/src/daemon/mcp-reload-service.ts +123 -0
- package/src/daemon/message-protocol.ts +6 -0
- package/src/daemon/message-types/browser.ts +1 -1
- package/src/daemon/message-types/computer-use.ts +1 -4
- package/src/daemon/message-types/guardian-actions.ts +1 -1
- package/src/daemon/message-types/host-bash.ts +18 -0
- package/src/daemon/message-types/host-file.ts +44 -0
- package/src/daemon/message-types/integrations.ts +1 -67
- package/src/daemon/message-types/messages.ts +15 -0
- package/src/daemon/message-types/schedules.ts +11 -27
- package/src/daemon/message-types/sessions.ts +2 -1
- package/src/daemon/message-types/settings.ts +1 -1
- package/src/daemon/message-types/shared.ts +1 -1
- package/src/daemon/ride-shotgun-handler.ts +2 -42
- package/src/daemon/server.ts +43 -10
- package/src/daemon/session-agent-loop-handlers.ts +48 -7
- package/src/daemon/session-agent-loop.ts +97 -66
- package/src/daemon/session-attachments.ts +1 -1
- package/src/daemon/session-error.ts +17 -16
- package/src/daemon/session-lifecycle.ts +20 -1
- package/src/daemon/session-media-retry.ts +1 -15
- package/src/daemon/session-messaging.ts +14 -6
- package/src/daemon/session-process.ts +36 -7
- package/src/daemon/session-queue-manager.ts +62 -103
- package/src/daemon/session-runtime-assembly.ts +27 -0
- package/src/daemon/session-skill-tools.ts +12 -11
- package/src/daemon/session-slash.ts +7 -0
- package/src/daemon/session-surfaces.ts +19 -97
- package/src/daemon/session-tool-setup.ts +146 -6
- package/src/daemon/session.ts +77 -13
- package/src/errors.ts +0 -2
- package/src/export/formatter.ts +6 -0
- package/src/mcp/mcp-oauth-provider.ts +1 -3
- package/src/media/avatar-router.ts +20 -28
- package/src/media/avatar-types.ts +7 -14
- package/src/media/managed-avatar-client.ts +70 -34
- package/src/memory/conversation-title-service.ts +1 -2
- package/src/memory/db-init.ts +16 -0
- package/src/memory/embedding-backend.ts +129 -27
- package/src/memory/embedding-gemini.test.ts +256 -0
- package/src/memory/embedding-gemini.ts +47 -13
- package/src/memory/embedding-local.ts +14 -2
- package/src/memory/embedding-ollama.ts +15 -2
- package/src/memory/embedding-openai.ts +15 -2
- package/src/memory/embedding-types.test.ts +116 -0
- package/src/memory/embedding-types.ts +61 -0
- package/src/memory/fingerprint.ts +1 -1
- package/src/memory/indexer.ts +25 -1
- package/src/memory/job-handlers/embedding.test.ts +258 -0
- package/src/memory/job-handlers/embedding.ts +81 -1
- package/src/memory/job-handlers/index-maintenance.ts +35 -1
- package/src/memory/job-handlers/media-processing.ts +11 -1
- package/src/memory/job-utils.ts +21 -6
- package/src/memory/jobs-store.ts +5 -1
- package/src/memory/jobs-worker.ts +8 -0
- package/src/memory/message-content.ts +66 -0
- package/src/memory/migrations/100-core-tables.ts +1 -31
- package/src/memory/migrations/104-core-indexes.ts +0 -11
- package/src/memory/migrations/145-drop-accounts-table.ts +19 -0
- package/src/memory/migrations/146-schedule-oneshot-routing.ts +94 -0
- package/src/memory/migrations/147-migrate-reminders-to-schedules.ts +129 -0
- package/src/memory/migrations/148-drop-reminders-table.ts +18 -0
- package/src/memory/migrations/index.ts +4 -0
- package/src/memory/migrations/registry.ts +19 -0
- package/src/memory/qdrant-client.ts +158 -43
- package/src/memory/retriever.test.ts +0 -1
- package/src/memory/retriever.ts +12 -2
- package/src/memory/schema/infrastructure.ts +5 -29
- package/src/memory/search/formatting.ts +34 -9
- package/src/memory/search/semantic.ts +57 -2
- package/src/memory/search/types.ts +2 -1
- package/src/notifications/AGENTS.md +2 -2
- package/src/notifications/README.md +59 -58
- package/src/notifications/adapters/macos.ts +1 -1
- package/src/notifications/broadcaster.ts +5 -5
- package/src/notifications/copy-composer.ts +1 -1
- package/src/notifications/decision-engine.ts +2 -2
- package/src/notifications/destination-resolver.ts +2 -2
- package/src/notifications/emit-signal.ts +8 -8
- package/src/notifications/signal.ts +1 -1
- package/src/notifications/thread-seed-composer.ts +1 -1
- package/src/oauth/connect-orchestrator.ts +1 -1
- package/src/oauth/token-persistence.ts +1 -1
- package/src/permissions/checker.ts +12 -1
- package/src/permissions/defaults.ts +10 -14
- package/src/permissions/trust-store.ts +37 -0
- package/src/permissions/workspace-policy.ts +0 -1
- package/src/prompts/__tests__/build-cli-reference-section.test.ts +11 -0
- package/src/prompts/computer-use-prompt.ts +1 -1
- package/src/prompts/system-prompt.ts +29 -30
- package/src/prompts/templates/SOUL.md +1 -2
- package/src/prompts/templates/UPDATES.md +16 -7
- package/src/providers/anthropic/client.ts +87 -33
- package/src/providers/gemini/client.ts +6 -0
- package/src/providers/managed-proxy/constants.ts +5 -0
- package/src/providers/openai/client.ts +15 -0
- package/src/providers/registry.ts +2 -2
- package/src/providers/types.ts +24 -2
- package/src/runtime/AGENTS.md +18 -0
- package/src/runtime/assistant-event-hub.ts +2 -3
- package/src/runtime/assistant-event.ts +4 -4
- package/src/runtime/auth/__tests__/context.test.ts +5 -5
- package/src/runtime/auth/__tests__/credential-service.test.ts +0 -1
- package/src/runtime/auth/__tests__/guard-tests.test.ts +2 -2
- package/src/runtime/auth/__tests__/{ipc-auth-context.test.ts → local-auth-context.test.ts} +21 -21
- package/src/runtime/auth/__tests__/route-policy.test.ts +2 -2
- package/src/runtime/auth/__tests__/scopes.test.ts +7 -7
- package/src/runtime/auth/__tests__/subject.test.ts +8 -8
- package/src/runtime/auth/__tests__/token-service.test.ts +0 -1
- package/src/runtime/auth/route-policy.ts +8 -4
- package/src/runtime/auth/scopes.ts +1 -1
- package/src/runtime/auth/subject.ts +4 -4
- package/src/runtime/auth/token-service.ts +0 -23
- package/src/runtime/auth/types.ts +3 -3
- package/src/runtime/guardian-action-followup-executor.ts +1 -1
- package/src/runtime/guardian-action-grant-minter.ts +1 -1
- package/src/runtime/guardian-action-service.ts +3 -3
- package/src/runtime/http-server.ts +15 -2
- package/src/runtime/invite-service.ts +3 -3
- package/src/runtime/local-actor-identity.ts +17 -22
- package/src/runtime/pending-interactions.ts +21 -9
- package/src/runtime/routes/app-management-routes.ts +2 -3
- package/src/runtime/routes/approval-routes.ts +1 -3
- package/src/runtime/routes/btw-routes.ts +155 -0
- package/src/runtime/routes/computer-use-routes.ts +77 -31
- package/src/runtime/routes/conversation-routes.ts +230 -46
- package/src/runtime/routes/diagnostics-routes.ts +63 -29
- package/src/runtime/routes/documents-routes.ts +2 -2
- package/src/runtime/routes/global-search-routes.ts +1 -1
- package/src/runtime/routes/host-bash-routes.ts +83 -0
- package/src/runtime/routes/host-file-routes.ts +79 -0
- package/src/runtime/routes/integrations/slack/share.ts +1 -1
- package/src/runtime/routes/log-export-routes.ts +120 -0
- package/src/runtime/routes/mcp-routes.ts +20 -0
- package/src/runtime/routes/migration-routes.ts +3 -3
- package/src/runtime/routes/pairing-routes.ts +1 -1
- package/src/runtime/routes/recording-routes.ts +6 -4
- package/src/runtime/routes/schedule-routes.ts +31 -5
- package/src/runtime/routes/session-management-routes.ts +2 -6
- package/src/runtime/routes/session-query-routes.ts +18 -15
- package/src/runtime/routes/settings-routes.ts +7 -261
- package/src/runtime/routes/skills-routes.ts +7 -6
- package/src/runtime/routes/subagents-routes.ts +4 -10
- package/src/runtime/routes/surface-action-routes.ts +3 -14
- package/src/runtime/routes/surface-content-routes.ts +22 -5
- package/src/runtime/routes/work-items-routes.ts +21 -25
- package/src/runtime/routes/workspace-routes.test.ts +3 -3
- package/src/runtime/routes/workspace-utils.ts +1 -1
- package/src/runtime/telegram-streaming-delivery.ts +3 -0
- package/src/runtime/verification-outbound-actions.ts +2 -2
- package/src/schedule/integration-status.ts +0 -6
- package/src/schedule/schedule-store.ts +234 -43
- package/src/schedule/scheduler.ts +73 -74
- package/src/security/oauth2.ts +1 -1
- package/src/sequence/store.ts +12 -2
- package/src/skills/frontmatter.ts +19 -77
- package/src/skills/managed-store.ts +11 -2
- package/src/subagent/manager.ts +5 -3
- package/src/tasks/ephemeral-permissions.ts +3 -5
- package/src/tools/AGENTS.md +0 -1
- package/src/tools/browser/browser-manager.ts +17 -11
- package/src/tools/browser/jit-auth.ts +4 -1
- package/src/tools/claude-code/claude-code.ts +1 -1
- package/src/tools/computer-use/definitions.ts +48 -60
- package/src/tools/document/document-tool.ts +6 -6
- package/src/tools/filesystem/edit.ts +2 -1
- package/src/tools/filesystem/read.ts +20 -2
- package/src/tools/filesystem/write.ts +2 -1
- package/src/tools/host-filesystem/edit.ts +17 -1
- package/src/tools/host-filesystem/read.ts +16 -1
- package/src/tools/host-filesystem/write.ts +15 -1
- package/src/tools/host-terminal/host-shell.ts +24 -0
- package/src/tools/memory/definitions.ts +45 -81
- package/src/tools/memory/handlers.test.ts +0 -1
- package/src/tools/memory/handlers.ts +1 -1
- package/src/tools/memory/register.ts +26 -60
- package/src/tools/network/script-proxy/session-manager.ts +6 -8
- package/src/tools/network/web-fetch.ts +7 -1
- package/src/tools/network/web-search.ts +2 -1
- package/src/tools/registry.ts +23 -0
- package/src/tools/schedule/create.ts +113 -5
- package/src/tools/schedule/list.ts +57 -15
- package/src/tools/schedule/update.ts +73 -3
- package/src/tools/shared/filesystem/image-read.ts +192 -0
- package/src/tools/side-effects.ts +1 -7
- package/src/tools/skills/delete-managed.ts +27 -64
- package/src/tools/skills/execute.ts +54 -0
- package/src/tools/skills/load.ts +127 -5
- package/src/tools/skills/scaffold-managed.ts +93 -172
- package/src/tools/subagent/message.ts +0 -7
- package/src/tools/subagent/spawn.ts +1 -1
- package/src/tools/swarm/delegate.ts +0 -3
- package/src/tools/system/avatar-generator.ts +13 -19
- package/src/tools/system/request-permission.ts +2 -1
- package/src/tools/terminal/safe-env.ts +1 -0
- package/src/tools/tool-manifest.ts +41 -47
- package/src/tools/types.ts +6 -2
- package/src/tools/ui-surface/definitions.ts +0 -55
- package/src/util/errors.ts +0 -10
- package/src/workspace/git-service.ts +0 -2
- package/src/__tests__/account-registry.test.ts +0 -258
- package/src/__tests__/email-classifier.test.ts +0 -25
- package/src/__tests__/gmail-integration.test.ts +0 -97
- package/src/__tests__/handle-user-message-secret-resume.test.ts +0 -172
- package/src/__tests__/managed-twitter-guardrails.test.ts +0 -357
- package/src/__tests__/recording-intent-fallback.test.ts +0 -199
- package/src/__tests__/recording-intent.test.ts +0 -985
- package/src/__tests__/recording-state-machine.test.ts +0 -1574
- package/src/__tests__/reminder-store.test.ts +0 -350
- package/src/__tests__/reminder.test.ts +0 -337
- package/src/__tests__/scan-result-store.test.ts +0 -121
- package/src/__tests__/twitter-platform-proxy-client.test.ts +0 -475
- package/src/__tests__/view-image-tool.test.ts +0 -241
- package/src/cli/commands/amazon/cart.ts +0 -513
- package/src/cli/commands/amazon/checkout.ts +0 -394
- package/src/cli/commands/amazon/client.ts +0 -513
- package/src/cli/commands/amazon/index.ts +0 -885
- package/src/cli/commands/amazon/product-details.ts +0 -145
- package/src/cli/commands/amazon/request-extractor.ts +0 -187
- package/src/cli/commands/amazon/search.ts +0 -76
- package/src/cli/commands/amazon/session.ts +0 -108
- package/src/cli/commands/twitter/__tests__/cli-read-routing.test.ts +0 -345
- package/src/cli/commands/twitter/__tests__/cli-routing.test.ts +0 -252
- package/src/cli/commands/twitter/__tests__/oauth-client.test.ts +0 -151
- package/src/cli/commands/twitter/index.ts +0 -420
- package/src/cli/commands/twitter/oauth-client.ts +0 -60
- package/src/cli/commands/twitter/router.ts +0 -351
- package/src/cli/commands/twitter/types.ts +0 -30
- package/src/config/bundled-skills/agentmail/SKILL.md +0 -132
- package/src/config/bundled-skills/agentmail/icon.svg +0 -21
- package/src/config/bundled-skills/amazon/SKILL.md +0 -136
- package/src/config/bundled-skills/amazon/icon.svg +0 -13
- package/src/config/bundled-skills/api-mapping/SKILL.md +0 -78
- package/src/config/bundled-skills/api-mapping/icon.svg +0 -18
- package/src/config/bundled-skills/cli-discover/SKILL.md +0 -68
- package/src/config/bundled-skills/deploy-fullstack-vercel/SKILL.md +0 -179
- package/src/config/bundled-skills/document-writer/SKILL.md +0 -195
- package/src/config/bundled-skills/elevenlabs-voice/SKILL.md +0 -140
- package/src/config/bundled-skills/email-setup/SKILL.md +0 -68
- package/src/config/bundled-skills/frontend-design/SKILL.md +0 -44
- package/src/config/bundled-skills/frontend-design/icon.svg +0 -16
- package/src/config/bundled-skills/google-oauth-setup/SKILL.md +0 -452
- package/src/config/bundled-skills/guardian-verify-setup/SKILL.md +0 -203
- package/src/config/bundled-skills/influencer/SKILL.md +0 -144
- package/src/config/bundled-skills/influencer/scripts/client.ts +0 -1269
- package/src/config/bundled-skills/influencer/scripts/influencer.ts +0 -267
- package/src/config/bundled-skills/macos-automation/SKILL.md +0 -65
- package/src/config/bundled-skills/macos-automation/icon.svg +0 -12
- package/src/config/bundled-skills/mcp-setup/SKILL.md +0 -75
- package/src/config/bundled-skills/media-processing/tools/media-diagnostics.ts +0 -184
- package/src/config/bundled-skills/messaging/tools/gmail-archive-by-query.ts +0 -80
- package/src/config/bundled-skills/messaging/tools/gmail-archive.ts +0 -29
- package/src/config/bundled-skills/messaging/tools/gmail-batch-archive.ts +0 -56
- package/src/config/bundled-skills/messaging/tools/gmail-batch-label.ts +0 -34
- package/src/config/bundled-skills/messaging/tools/gmail-download-attachment.ts +0 -47
- package/src/config/bundled-skills/messaging/tools/gmail-label.ts +0 -31
- package/src/config/bundled-skills/messaging/tools/gmail-list-attachments.ts +0 -67
- package/src/config/bundled-skills/messaging/tools/gmail-send-with-attachments.ts +0 -97
- package/src/config/bundled-skills/messaging/tools/gmail-summarize-thread.ts +0 -87
- package/src/config/bundled-skills/messaging/tools/gmail-triage.ts +0 -135
- package/src/config/bundled-skills/messaging/tools/messaging-analyze-activity.ts +0 -24
- package/src/config/bundled-skills/messaging/tools/messaging-reply.ts +0 -201
- package/src/config/bundled-skills/messaging/tools/send-notification.ts +0 -1
- package/src/config/bundled-skills/messaging/tools/sequence-cancel.ts +0 -27
- package/src/config/bundled-skills/messaging/tools/sequence-pause.ts +0 -48
- package/src/config/bundled-skills/messaging/tools/sequence-resume.ts +0 -27
- package/src/config/bundled-skills/messaging/tools/sequence-update.ts +0 -56
- package/src/config/bundled-skills/notion/SKILL.md +0 -240
- package/src/config/bundled-skills/notion-oauth-setup/SKILL.md +0 -126
- package/src/config/bundled-skills/oauth-setup/SKILL.md +0 -143
- package/src/config/bundled-skills/public-ingress/SKILL.md +0 -258
- package/src/config/bundled-skills/reminder/SKILL.md +0 -79
- package/src/config/bundled-skills/reminder/TOOLS.json +0 -89
- package/src/config/bundled-skills/reminder/tools/reminder-list.ts +0 -12
- package/src/config/bundled-skills/restaurant-reservation/SKILL.md +0 -141
- package/src/config/bundled-skills/screen-recording/SKILL.md +0 -148
- package/src/config/bundled-skills/self-upgrade/SKILL.md +0 -69
- package/src/config/bundled-skills/skills-catalog/SKILL.md +0 -78
- package/src/config/bundled-skills/slack-app-setup/SKILL.md +0 -178
- package/src/config/bundled-skills/slack-digest-setup/SKILL.md +0 -163
- package/src/config/bundled-skills/slack-oauth-setup/SKILL.md +0 -157
- package/src/config/bundled-skills/start-the-day/SKILL.md +0 -70
- package/src/config/bundled-skills/start-the-day/icon.svg +0 -13
- package/src/config/bundled-skills/telegram-setup/SKILL.md +0 -105
- package/src/config/bundled-skills/time-based-actions/SKILL.md +0 -142
- package/src/config/bundled-skills/twilio-setup/SKILL.md +0 -232
- package/src/config/bundled-skills/twitter/SKILL.md +0 -206
- package/src/config/bundled-skills/twitter/icon.svg +0 -14
- package/src/config/bundled-skills/typescript-eval/SKILL.md +0 -60
- package/src/config/bundled-skills/vercel-token-setup/SKILL.md +0 -214
- package/src/config/bundled-skills/voice-setup/SKILL.md +0 -131
- package/src/config/bundled-skills/voice-setup/icon.svg +0 -20
- package/src/daemon/handlers/pairing.ts +0 -119
- package/src/daemon/handlers/session-user-message.ts +0 -961
- package/src/daemon/recording-executor.ts +0 -180
- package/src/daemon/recording-intent-fallback.ts +0 -162
- package/src/daemon/recording-intent.ts +0 -493
- package/src/memory/account-store.ts +0 -117
- package/src/messaging/activity-analyzer.ts +0 -76
- package/src/messaging/email-classifier.ts +0 -208
- package/src/messaging/index.ts +0 -2
- package/src/messaging/outreach-classifier.ts +0 -185
- package/src/messaging/thread-summarizer.ts +0 -346
- package/src/messaging/types.ts +0 -17
- package/src/tools/browser/x-auto-navigate.ts +0 -254
- package/src/tools/credentials/account-registry.ts +0 -144
- package/src/tools/filesystem/view-image.ts +0 -244
- package/src/tools/reminder/reminder-store.ts +0 -194
- package/src/tools/reminder/reminder.ts +0 -158
- package/src/tools/system/navigate-settings.ts +0 -74
- package/src/tools/system/open-system-settings.ts +0 -85
- package/src/tools/system/version.ts +0 -54
- package/src/twitter/platform-proxy-client.ts +0 -408
- /package/src/config/bundled-skills/{messaging → gmail}/tools/scan-result-store.ts +0 -0
- /package/src/config/bundled-skills/{messaging → sequences}/tools/sequence-analytics.ts +0 -0
- /package/src/config/bundled-skills/{messaging → sequences}/tools/sequence-create.ts +0 -0
- /package/src/config/bundled-skills/{messaging → sequences}/tools/sequence-delete.ts +0 -0
- /package/src/config/bundled-skills/{messaging → sequences}/tools/sequence-enroll.ts +0 -0
- /package/src/config/bundled-skills/{messaging → sequences}/tools/sequence-enrollment-list.ts +0 -0
- /package/src/config/bundled-skills/{messaging → sequences}/tools/sequence-get.ts +0 -0
- /package/src/config/bundled-skills/{messaging → sequences}/tools/sequence-import.ts +0 -0
- /package/src/config/bundled-skills/{messaging → sequences}/tools/sequence-list.ts +0 -0
|
@@ -20,6 +20,8 @@ export * from "./message-types/contacts.js";
|
|
|
20
20
|
export * from "./message-types/diagnostics.js";
|
|
21
21
|
export * from "./message-types/documents.js";
|
|
22
22
|
export * from "./message-types/guardian-actions.js";
|
|
23
|
+
export * from "./message-types/host-bash.js";
|
|
24
|
+
export * from "./message-types/host-file.js";
|
|
23
25
|
export * from "./message-types/inbox.js";
|
|
24
26
|
export * from "./message-types/integrations.js";
|
|
25
27
|
export * from "./message-types/memory.js";
|
|
@@ -66,6 +68,8 @@ import type {
|
|
|
66
68
|
_GuardianActionsClientMessages,
|
|
67
69
|
_GuardianActionsServerMessages,
|
|
68
70
|
} from "./message-types/guardian-actions.js";
|
|
71
|
+
import type { _HostBashServerMessages } from "./message-types/host-bash.js";
|
|
72
|
+
import type { _HostFileServerMessages } from "./message-types/host-file.js";
|
|
69
73
|
import type {
|
|
70
74
|
_InboxClientMessages,
|
|
71
75
|
_InboxServerMessages,
|
|
@@ -175,6 +179,8 @@ export type ServerMessage =
|
|
|
175
179
|
| _SubagentsServerMessages
|
|
176
180
|
| _DocumentsServerMessages
|
|
177
181
|
| _GuardianActionsServerMessages
|
|
182
|
+
| _HostBashServerMessages
|
|
183
|
+
| _HostFileServerMessages
|
|
178
184
|
| _MemoryServerMessages
|
|
179
185
|
| _WorkspaceServerMessages
|
|
180
186
|
| _SchedulesServerMessages
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// Browser interaction types.
|
|
2
|
-
// CDP request/response
|
|
2
|
+
// CDP request/response messaging was removed — Playwright's connectOverCDP is broken
|
|
3
3
|
// under Bun's runtime. Browser is now launched directly via Playwright.
|
|
4
4
|
|
|
5
5
|
// --- Domain-level union aliases (consumed by the barrel file) ---
|
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
// Computer use, task routing, ride shotgun, and watch observation types.
|
|
2
2
|
|
|
3
|
-
import type {
|
|
4
|
-
CommandIntent,
|
|
5
|
-
UserMessageAttachment,
|
|
6
|
-
} from "./shared.js";
|
|
3
|
+
import type { CommandIntent, UserMessageAttachment } from "./shared.js";
|
|
7
4
|
|
|
8
5
|
// === Client → Server ===
|
|
9
6
|
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
// Host bash proxy types.
|
|
2
|
+
// Enables proxying shell commands to the desktop client (host machine)
|
|
3
|
+
// when running as a managed assistant.
|
|
4
|
+
|
|
5
|
+
// === Server → Client ===
|
|
6
|
+
|
|
7
|
+
export interface HostBashRequest {
|
|
8
|
+
type: "host_bash_request";
|
|
9
|
+
requestId: string;
|
|
10
|
+
sessionId: string;
|
|
11
|
+
command: string;
|
|
12
|
+
working_dir?: string;
|
|
13
|
+
timeout_seconds?: number;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
// --- Domain-level union aliases (consumed by the barrel file) ---
|
|
17
|
+
|
|
18
|
+
export type _HostBashServerMessages = HostBashRequest;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
// Host file proxy types.
|
|
2
|
+
// Enables proxying file operations to the desktop client (host machine)
|
|
3
|
+
// when running as a managed assistant.
|
|
4
|
+
|
|
5
|
+
// === Server → Client ===
|
|
6
|
+
|
|
7
|
+
export interface HostFileReadRequest {
|
|
8
|
+
type: "host_file_request";
|
|
9
|
+
requestId: string;
|
|
10
|
+
sessionId: string;
|
|
11
|
+
operation: "read";
|
|
12
|
+
path: string;
|
|
13
|
+
offset?: number;
|
|
14
|
+
limit?: number;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export interface HostFileWriteRequest {
|
|
18
|
+
type: "host_file_request";
|
|
19
|
+
requestId: string;
|
|
20
|
+
sessionId: string;
|
|
21
|
+
operation: "write";
|
|
22
|
+
path: string;
|
|
23
|
+
content: string;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export interface HostFileEditRequest {
|
|
27
|
+
type: "host_file_request";
|
|
28
|
+
requestId: string;
|
|
29
|
+
sessionId: string;
|
|
30
|
+
operation: "edit";
|
|
31
|
+
path: string;
|
|
32
|
+
old_string: string;
|
|
33
|
+
new_string: string;
|
|
34
|
+
replace_all?: boolean;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export type HostFileRequest =
|
|
38
|
+
| HostFileReadRequest
|
|
39
|
+
| HostFileWriteRequest
|
|
40
|
+
| HostFileEditRequest;
|
|
41
|
+
|
|
42
|
+
// --- Domain-level union aliases (consumed by the barrel file) ---
|
|
43
|
+
|
|
44
|
+
export type _HostFileServerMessages = HostFileRequest;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// External service integrations: Slack, Telegram,
|
|
1
|
+
// External service integrations: Slack, Telegram, Vercel, ingress, guardian.
|
|
2
2
|
|
|
3
3
|
import type { ChannelId } from "../../channels/types.js";
|
|
4
4
|
|
|
@@ -29,19 +29,6 @@ export interface VercelApiConfigRequest {
|
|
|
29
29
|
apiToken?: string;
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
-
export interface TwitterIntegrationConfigRequest {
|
|
33
|
-
type: "twitter_integration_config";
|
|
34
|
-
action:
|
|
35
|
-
| "get"
|
|
36
|
-
| "set_mode"
|
|
37
|
-
| "set_local_client"
|
|
38
|
-
| "clear_local_client"
|
|
39
|
-
| "disconnect";
|
|
40
|
-
mode?: "local_byo" | "managed";
|
|
41
|
-
clientId?: string;
|
|
42
|
-
clientSecret?: string;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
32
|
export interface TelegramConfigRequest {
|
|
46
33
|
type: "telegram_config";
|
|
47
34
|
action: "get" | "set" | "clear" | "set_commands" | "setup";
|
|
@@ -70,14 +57,6 @@ export interface ChannelVerificationSessionRequest {
|
|
|
70
57
|
contactChannelId?: string;
|
|
71
58
|
}
|
|
72
59
|
|
|
73
|
-
export interface TwitterAuthStartRequest {
|
|
74
|
-
type: "twitter_auth_start";
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
export interface TwitterAuthStatusRequest {
|
|
78
|
-
type: "twitter_auth_status";
|
|
79
|
-
}
|
|
80
|
-
|
|
81
60
|
export interface IntegrationListRequest {
|
|
82
61
|
type: "integration_list";
|
|
83
62
|
}
|
|
@@ -137,28 +116,6 @@ export interface VercelApiConfigResponse {
|
|
|
137
116
|
error?: string;
|
|
138
117
|
}
|
|
139
118
|
|
|
140
|
-
export interface ManagedPrerequisites {
|
|
141
|
-
/** Whether twitter.integrationMode is set to "managed" in config. */
|
|
142
|
-
integrationModeManaged: boolean;
|
|
143
|
-
/** Whether the assistant API key credential exists in secure storage. */
|
|
144
|
-
assistantApiKeyPresent: boolean;
|
|
145
|
-
/** Whether the platform base URL is configured (platform registration resolvable). */
|
|
146
|
-
platformAssistantIdResolvable: boolean;
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
export interface TwitterIntegrationConfigResponse {
|
|
150
|
-
type: "twitter_integration_config_response";
|
|
151
|
-
success: boolean;
|
|
152
|
-
mode?: "local_byo" | "managed";
|
|
153
|
-
managedAvailable: boolean;
|
|
154
|
-
/** Detailed prerequisite status for managed Twitter availability. */
|
|
155
|
-
managedPrerequisites?: ManagedPrerequisites;
|
|
156
|
-
localClientConfigured: boolean;
|
|
157
|
-
connected: boolean;
|
|
158
|
-
accountInfo?: string;
|
|
159
|
-
error?: string;
|
|
160
|
-
}
|
|
161
|
-
|
|
162
119
|
export interface TelegramConfigResponse {
|
|
163
120
|
type: "telegram_config_response";
|
|
164
121
|
success: boolean;
|
|
@@ -211,23 +168,6 @@ export interface ChannelVerificationSessionResponse {
|
|
|
211
168
|
pendingBootstrap?: boolean;
|
|
212
169
|
}
|
|
213
170
|
|
|
214
|
-
export interface TwitterAuthResult {
|
|
215
|
-
type: "twitter_auth_result";
|
|
216
|
-
success: boolean;
|
|
217
|
-
accountInfo?: string;
|
|
218
|
-
/** Machine-readable error code for programmatic handling (e.g. "managed_missing_api_key", "managed_auth_via_platform"). */
|
|
219
|
-
errorCode?: string;
|
|
220
|
-
error?: string;
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
export interface TwitterAuthStatusResponse {
|
|
224
|
-
type: "twitter_auth_status_response";
|
|
225
|
-
connected: boolean;
|
|
226
|
-
accountInfo?: string;
|
|
227
|
-
mode?: "local_byo" | "managed";
|
|
228
|
-
error?: string;
|
|
229
|
-
}
|
|
230
|
-
|
|
231
171
|
export interface IntegrationListResponse {
|
|
232
172
|
type: "integration_list_response";
|
|
233
173
|
integrations: Array<{
|
|
@@ -277,11 +217,8 @@ export type _IntegrationsClientMessages =
|
|
|
277
217
|
| IngressConfigRequest
|
|
278
218
|
| PlatformConfigRequest
|
|
279
219
|
| VercelApiConfigRequest
|
|
280
|
-
| TwitterIntegrationConfigRequest
|
|
281
220
|
| TelegramConfigRequest
|
|
282
221
|
| ChannelVerificationSessionRequest
|
|
283
|
-
| TwitterAuthStartRequest
|
|
284
|
-
| TwitterAuthStatusRequest
|
|
285
222
|
| IntegrationListRequest
|
|
286
223
|
| IntegrationConnectRequest
|
|
287
224
|
| IntegrationDisconnectRequest
|
|
@@ -293,11 +230,8 @@ export type _IntegrationsServerMessages =
|
|
|
293
230
|
| IngressConfigResponse
|
|
294
231
|
| PlatformConfigResponse
|
|
295
232
|
| VercelApiConfigResponse
|
|
296
|
-
| TwitterIntegrationConfigResponse
|
|
297
233
|
| TelegramConfigResponse
|
|
298
234
|
| ChannelVerificationSessionResponse
|
|
299
|
-
| TwitterAuthResult
|
|
300
|
-
| TwitterAuthStatusResponse
|
|
301
235
|
| IntegrationListResponse
|
|
302
236
|
| IntegrationConnectResult
|
|
303
237
|
| OAuthConnectResultResponse
|
|
@@ -95,11 +95,20 @@ export interface ToolOutputChunk {
|
|
|
95
95
|
subToolId?: string;
|
|
96
96
|
}
|
|
97
97
|
|
|
98
|
+
export interface ToolUsePreviewStart {
|
|
99
|
+
type: "tool_use_preview_start";
|
|
100
|
+
toolUseId: string;
|
|
101
|
+
toolName: string;
|
|
102
|
+
sessionId?: string;
|
|
103
|
+
}
|
|
104
|
+
|
|
98
105
|
export interface ToolInputDelta {
|
|
99
106
|
type: "tool_input_delta";
|
|
100
107
|
toolName: string;
|
|
101
108
|
content: string;
|
|
102
109
|
sessionId?: string;
|
|
110
|
+
/** The tool_use block ID for client-side correlation. */
|
|
111
|
+
toolUseId?: string;
|
|
103
112
|
}
|
|
104
113
|
|
|
105
114
|
export interface ToolResult {
|
|
@@ -117,6 +126,8 @@ export interface ToolResult {
|
|
|
117
126
|
sessionId?: string;
|
|
118
127
|
/** Base64-encoded image data extracted from contentBlocks (e.g. browser_screenshot). */
|
|
119
128
|
imageData?: string;
|
|
129
|
+
/** The tool_use block ID for client-side correlation. */
|
|
130
|
+
toolUseId?: string;
|
|
120
131
|
}
|
|
121
132
|
|
|
122
133
|
export interface ConfirmationRequest {
|
|
@@ -169,6 +180,8 @@ export interface MessageComplete {
|
|
|
169
180
|
type: "message_complete";
|
|
170
181
|
sessionId?: string;
|
|
171
182
|
attachments?: UserMessageAttachment[];
|
|
183
|
+
/** Database ID of the persisted assistant message, if any. */
|
|
184
|
+
messageId?: string;
|
|
172
185
|
}
|
|
173
186
|
|
|
174
187
|
export interface ErrorMessage {
|
|
@@ -270,6 +283,7 @@ export interface AssistantActivityState {
|
|
|
270
283
|
| "thinking_delta"
|
|
271
284
|
| "first_text_delta"
|
|
272
285
|
| "tool_use_start"
|
|
286
|
+
| "preview_start"
|
|
273
287
|
| "tool_result_received"
|
|
274
288
|
| "confirmation_requested"
|
|
275
289
|
| "confirmation_resolved"
|
|
@@ -325,6 +339,7 @@ export type _MessagesServerMessages =
|
|
|
325
339
|
| AssistantTextDelta
|
|
326
340
|
| AssistantThinkingDelta
|
|
327
341
|
| ToolUseStart
|
|
342
|
+
| ToolUsePreviewStart
|
|
328
343
|
| ToolOutputChunk
|
|
329
344
|
| ToolInputDelta
|
|
330
345
|
| ToolResult
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Schedule,
|
|
1
|
+
// Schedule, watcher, and heartbeat types.
|
|
2
2
|
|
|
3
3
|
// === Client → Server ===
|
|
4
4
|
|
|
@@ -6,15 +6,6 @@ export interface SchedulesList {
|
|
|
6
6
|
type: "schedules_list";
|
|
7
7
|
}
|
|
8
8
|
|
|
9
|
-
export interface RemindersList {
|
|
10
|
-
type: "reminders_list";
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
export interface ReminderCancel {
|
|
14
|
-
type: "reminder_cancel";
|
|
15
|
-
id: string;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
9
|
export interface ScheduleToggle {
|
|
19
10
|
type: "schedule_toggle";
|
|
20
11
|
id: string;
|
|
@@ -26,6 +17,11 @@ export interface ScheduleRemove {
|
|
|
26
17
|
id: string;
|
|
27
18
|
}
|
|
28
19
|
|
|
20
|
+
export interface ScheduleCancel {
|
|
21
|
+
type: "schedule_cancel";
|
|
22
|
+
id: string;
|
|
23
|
+
}
|
|
24
|
+
|
|
29
25
|
export interface ScheduleRunNow {
|
|
30
26
|
type: "schedule_run_now";
|
|
31
27
|
id: string;
|
|
@@ -67,28 +63,18 @@ export interface SchedulesListResponse {
|
|
|
67
63
|
name: string;
|
|
68
64
|
enabled: boolean;
|
|
69
65
|
syntax: string;
|
|
70
|
-
expression: string;
|
|
71
|
-
cronExpression: string;
|
|
66
|
+
expression: string | null;
|
|
67
|
+
cronExpression: string | null;
|
|
72
68
|
timezone: string | null;
|
|
73
69
|
message: string;
|
|
74
70
|
nextRunAt: number;
|
|
75
71
|
lastRunAt: number | null;
|
|
76
72
|
lastStatus: string | null;
|
|
77
73
|
description: string;
|
|
78
|
-
}>;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
export interface RemindersListResponse {
|
|
82
|
-
type: "reminders_list_response";
|
|
83
|
-
reminders: Array<{
|
|
84
|
-
id: string;
|
|
85
|
-
label: string;
|
|
86
|
-
message: string;
|
|
87
|
-
fireAt: number;
|
|
88
74
|
mode: string;
|
|
89
75
|
status: string;
|
|
90
|
-
|
|
91
|
-
|
|
76
|
+
routingIntent: string;
|
|
77
|
+
isOneShot: boolean;
|
|
92
78
|
}>;
|
|
93
79
|
}
|
|
94
80
|
|
|
@@ -144,9 +130,8 @@ export type _SchedulesClientMessages =
|
|
|
144
130
|
| SchedulesList
|
|
145
131
|
| ScheduleToggle
|
|
146
132
|
| ScheduleRemove
|
|
133
|
+
| ScheduleCancel
|
|
147
134
|
| ScheduleRunNow
|
|
148
|
-
| RemindersList
|
|
149
|
-
| ReminderCancel
|
|
150
135
|
| HeartbeatConfig
|
|
151
136
|
| HeartbeatRunsList
|
|
152
137
|
| HeartbeatRunNow
|
|
@@ -155,7 +140,6 @@ export type _SchedulesClientMessages =
|
|
|
155
140
|
|
|
156
141
|
export type _SchedulesServerMessages =
|
|
157
142
|
| SchedulesListResponse
|
|
158
|
-
| RemindersListResponse
|
|
159
143
|
| HeartbeatAlert
|
|
160
144
|
| HeartbeatConfigResponse
|
|
161
145
|
| HeartbeatRunsListResponse
|
|
@@ -273,6 +273,8 @@ export interface GenerationHandoff {
|
|
|
273
273
|
requestId?: string;
|
|
274
274
|
queuedCount: number;
|
|
275
275
|
attachments?: UserMessageAttachment[];
|
|
276
|
+
/** Database ID of the persisted assistant message, if any. */
|
|
277
|
+
messageId?: string;
|
|
276
278
|
}
|
|
277
279
|
|
|
278
280
|
export interface ModelInfo {
|
|
@@ -393,7 +395,6 @@ export type SessionErrorCode =
|
|
|
393
395
|
| "PROVIDER_API"
|
|
394
396
|
| "PROVIDER_BILLING"
|
|
395
397
|
| "CONTEXT_TOO_LARGE"
|
|
396
|
-
| "QUEUE_FULL"
|
|
397
398
|
| "SESSION_ABORTED"
|
|
398
399
|
| "SESSION_PROCESSING_FAILED"
|
|
399
400
|
| "REGENERATE_FAILED"
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
// === Client → Server ===
|
|
4
4
|
|
|
5
|
-
/** Request from a session or
|
|
5
|
+
/** Request from a session or client to change the voice activation key. */
|
|
6
6
|
export interface VoiceConfigUpdateRequest {
|
|
7
7
|
type: "voice_config_update";
|
|
8
8
|
/** The desired activation key (enum value or natural-language name). */
|
|
@@ -9,7 +9,6 @@ import {
|
|
|
9
9
|
import { NetworkRecorder } from "../tools/browser/network-recorder.js";
|
|
10
10
|
import type { SessionRecording } from "../tools/browser/network-recording-types.js";
|
|
11
11
|
import { saveRecording } from "../tools/browser/recording-store.js";
|
|
12
|
-
import { navigateXPages } from "../tools/browser/x-auto-navigate.js";
|
|
13
12
|
import type { WatchSession } from "../tools/watch/watch-state.js";
|
|
14
13
|
import {
|
|
15
14
|
fireWatchCompletionNotifier,
|
|
@@ -35,13 +34,7 @@ const activeCdpSessions = new Map<string, CdpSession>();
|
|
|
35
34
|
const activeProgressIntervals = new Map<string, NodeJS.Timeout>();
|
|
36
35
|
|
|
37
36
|
/** Return domain-specific URL patterns that indicate a successful login. */
|
|
38
|
-
function getLoginSignals(
|
|
39
|
-
if (targetDomain === "x.com" || targetDomain === "twitter.com") {
|
|
40
|
-
return [
|
|
41
|
-
"/i/api/graphql/", // any authenticated GraphQL call
|
|
42
|
-
"/1.1/account/settings", // legacy API session check
|
|
43
|
-
];
|
|
44
|
-
}
|
|
37
|
+
function getLoginSignals(_targetDomain?: string): string[] {
|
|
45
38
|
// DoorDash and general fallback
|
|
46
39
|
return [
|
|
47
40
|
"/graphql/postLoginQuery",
|
|
@@ -324,40 +317,7 @@ export async function handleRideShotgunStart(
|
|
|
324
317
|
}, 5000);
|
|
325
318
|
activeProgressIntervals.set(watchId, progressInterval);
|
|
326
319
|
|
|
327
|
-
|
|
328
|
-
// Skip login detection — auto-navigation will complete the session when done.
|
|
329
|
-
if (
|
|
330
|
-
(targetDomain === "x.com" || targetDomain === "twitter.com") &&
|
|
331
|
-
msg.autoNavigate !== false
|
|
332
|
-
) {
|
|
333
|
-
// Don't set onLoginDetected — it would kill the session after the first
|
|
334
|
-
// GraphQL call (5s grace), before auto-navigation finishes.
|
|
335
|
-
const abortSignal = { aborted: false };
|
|
336
|
-
const checkInterval = setInterval(() => {
|
|
337
|
-
if (session.status !== "active") {
|
|
338
|
-
abortSignal.aborted = true;
|
|
339
|
-
clearInterval(checkInterval);
|
|
340
|
-
}
|
|
341
|
-
}, 1000);
|
|
342
|
-
navigateXPages({ abortSignal, cdpBaseUrl })
|
|
343
|
-
.then((completed) => {
|
|
344
|
-
clearInterval(checkInterval);
|
|
345
|
-
log.info(
|
|
346
|
-
{ watchId, completedSteps: completed.length },
|
|
347
|
-
"X auto-navigation finished",
|
|
348
|
-
);
|
|
349
|
-
if (session.status === "active") {
|
|
350
|
-
completeSession(session);
|
|
351
|
-
}
|
|
352
|
-
})
|
|
353
|
-
.catch((err) => {
|
|
354
|
-
clearInterval(checkInterval);
|
|
355
|
-
log.warn({ err, watchId }, "X auto-navigation failed");
|
|
356
|
-
if (session.status === "active") {
|
|
357
|
-
completeSession(session);
|
|
358
|
-
}
|
|
359
|
-
});
|
|
360
|
-
} else if (msg.autoNavigate && targetDomain) {
|
|
320
|
+
if (msg.autoNavigate && targetDomain) {
|
|
361
321
|
const navDomain = msg.navigateDomain ?? targetDomain;
|
|
362
322
|
const abortSignal = { aborted: false };
|
|
363
323
|
const checkInterval = setInterval(() => {
|
package/src/daemon/server.ts
CHANGED
|
@@ -56,6 +56,8 @@ import type {
|
|
|
56
56
|
SessionCreateOptions,
|
|
57
57
|
} from "./handlers/shared.js";
|
|
58
58
|
import type { SkillOperationContext } from "./handlers/skills.js";
|
|
59
|
+
import { HostBashProxy } from "./host-bash-proxy.js";
|
|
60
|
+
import { HostFileProxy } from "./host-file-proxy.js";
|
|
59
61
|
import type { ServerMessage } from "./message-protocol.js";
|
|
60
62
|
import {
|
|
61
63
|
DEFAULT_MEMORY_POLICY,
|
|
@@ -130,8 +132,9 @@ function resolveCanonicalRequestSourceType(
|
|
|
130
132
|
|
|
131
133
|
/**
|
|
132
134
|
* Build an onEvent callback that registers pending interactions when the agent
|
|
133
|
-
* loop emits confirmation_request
|
|
134
|
-
*
|
|
135
|
+
* loop emits confirmation_request, secret_request, host_bash_request, or
|
|
136
|
+
* host_file_request events. This ensures that channel approval interception
|
|
137
|
+
* can look up the session by requestId.
|
|
135
138
|
*/
|
|
136
139
|
function makePendingInteractionRegistrar(
|
|
137
140
|
session: Session,
|
|
@@ -199,6 +202,18 @@ function makePendingInteractionRegistrar(
|
|
|
199
202
|
conversationId,
|
|
200
203
|
kind: "secret",
|
|
201
204
|
});
|
|
205
|
+
} else if (msg.type === "host_bash_request") {
|
|
206
|
+
pendingInteractions.register(msg.requestId, {
|
|
207
|
+
session,
|
|
208
|
+
conversationId,
|
|
209
|
+
kind: "host_bash",
|
|
210
|
+
});
|
|
211
|
+
} else if (msg.type === "host_file_request") {
|
|
212
|
+
pendingInteractions.register(msg.requestId, {
|
|
213
|
+
session,
|
|
214
|
+
conversationId,
|
|
215
|
+
kind: "host_file",
|
|
216
|
+
});
|
|
202
217
|
}
|
|
203
218
|
};
|
|
204
219
|
}
|
|
@@ -291,14 +306,7 @@ export class DaemonServer {
|
|
|
291
306
|
undefined,
|
|
292
307
|
metadata,
|
|
293
308
|
);
|
|
294
|
-
if (enqueueResult.rejected) {
|
|
295
|
-
log.warn(
|
|
296
|
-
{ parentSessionId },
|
|
297
|
-
"Parent session queue full, dropping subagent notification",
|
|
298
|
-
);
|
|
299
|
-
return;
|
|
300
|
-
}
|
|
301
|
-
if (!enqueueResult.queued) {
|
|
309
|
+
if (!enqueueResult.queued && !enqueueResult.rejected) {
|
|
302
310
|
const messageId = await parentSession.persistUserMessage(
|
|
303
311
|
message,
|
|
304
312
|
[],
|
|
@@ -636,6 +644,31 @@ export class DaemonServer {
|
|
|
636
644
|
session.setChannelCapabilities(
|
|
637
645
|
resolveChannelCapabilities(sourceChannel, sourceInterface),
|
|
638
646
|
);
|
|
647
|
+
// Only create the host bash proxy for desktop client interfaces that can
|
|
648
|
+
// execute commands on the user's machine. Non-desktop sessions (CLI,
|
|
649
|
+
// channels, headless) fall back to local execution.
|
|
650
|
+
// Guard: don't replace an active proxy during concurrent turn races —
|
|
651
|
+
// another request may have started processing between the isProcessing()
|
|
652
|
+
// check above and the await on ensureActorScopedHistory().
|
|
653
|
+
if (resolvedInterface === "macos" || resolvedInterface === "ios") {
|
|
654
|
+
if (!session.isProcessing() || !session.hostBashProxy) {
|
|
655
|
+
session.setHostBashProxy(
|
|
656
|
+
new HostBashProxy(session.getCurrentSender(), (requestId) => {
|
|
657
|
+
pendingInteractions.resolve(requestId);
|
|
658
|
+
}),
|
|
659
|
+
);
|
|
660
|
+
}
|
|
661
|
+
if (!session.isProcessing() || !session.hostFileProxy) {
|
|
662
|
+
session.setHostFileProxy(
|
|
663
|
+
new HostFileProxy(session.getCurrentSender(), (requestId) => {
|
|
664
|
+
pendingInteractions.resolve(requestId);
|
|
665
|
+
}),
|
|
666
|
+
);
|
|
667
|
+
}
|
|
668
|
+
} else if (!session.isProcessing()) {
|
|
669
|
+
session.setHostBashProxy(undefined);
|
|
670
|
+
session.setHostFileProxy(undefined);
|
|
671
|
+
}
|
|
639
672
|
session.setCommandIntent(options?.commandIntent ?? null);
|
|
640
673
|
session.setTurnChannelContext({
|
|
641
674
|
userMessageChannel: resolvedChannel,
|
|
@@ -164,22 +164,22 @@ export function emitLlmCallStartedIfNeeded(
|
|
|
164
164
|
);
|
|
165
165
|
}
|
|
166
166
|
|
|
167
|
-
// ──
|
|
167
|
+
// ── Client Payload Size Caps ─────────────────────────────────────────
|
|
168
168
|
// The client truncates tool results anyway (2 000 chars in ChatViewModel),
|
|
169
169
|
// but the full string can be megabytes (file_read, bash output). Capping
|
|
170
|
-
// here avoids sending oversized payloads
|
|
171
|
-
//
|
|
170
|
+
// here avoids sending oversized payloads which get decoded on the
|
|
171
|
+
// client's main thread.
|
|
172
172
|
|
|
173
173
|
const TOOL_RESULT_MAX_CHARS = 2_000;
|
|
174
174
|
const TOOL_RESULT_TRUNCATION_SUFFIX = "...[truncated]";
|
|
175
175
|
|
|
176
176
|
// tool_input_delta streams accumulated JSON as tools run. For non-app
|
|
177
177
|
// tools the client discards it (extractCodePreview only handles app tools),
|
|
178
|
-
// so we cap it aggressively to avoid excessive
|
|
178
|
+
// so we cap it aggressively to avoid excessive client traffic.
|
|
179
179
|
const TOOL_INPUT_DELTA_MAX_CHARS = 50_000;
|
|
180
180
|
const APP_TOOL_NAMES = new Set(["app_create", "app_update"]);
|
|
181
181
|
|
|
182
|
-
function
|
|
182
|
+
function truncateForClient(
|
|
183
183
|
value: string,
|
|
184
184
|
maxChars: number,
|
|
185
185
|
suffix: string,
|
|
@@ -206,6 +206,7 @@ const TOOL_FRIENDLY_NAMES: Record<string, string> = {
|
|
|
206
206
|
app_create: "app",
|
|
207
207
|
app_update: "app",
|
|
208
208
|
skill_load: "skill",
|
|
209
|
+
skill_execute: "skill",
|
|
209
210
|
app_file_edit: "app file",
|
|
210
211
|
app_file_write: "app file",
|
|
211
212
|
};
|
|
@@ -304,6 +305,27 @@ export function handleToolUse(
|
|
|
304
305
|
});
|
|
305
306
|
}
|
|
306
307
|
|
|
308
|
+
export function handleToolUsePreviewStart(
|
|
309
|
+
_state: EventHandlerState,
|
|
310
|
+
deps: EventHandlerDeps,
|
|
311
|
+
event: Extract<AgentEvent, { type: "tool_use_preview_start" }>,
|
|
312
|
+
): void {
|
|
313
|
+
deps.onEvent({
|
|
314
|
+
type: "tool_use_preview_start",
|
|
315
|
+
toolUseId: event.toolUseId,
|
|
316
|
+
toolName: event.toolName,
|
|
317
|
+
sessionId: deps.ctx.conversationId,
|
|
318
|
+
});
|
|
319
|
+
const statusText = `Preparing ${friendlyToolName(event.toolName)}...`;
|
|
320
|
+
deps.ctx.emitActivityState(
|
|
321
|
+
"tool_running",
|
|
322
|
+
"preview_start",
|
|
323
|
+
"assistant_turn",
|
|
324
|
+
deps.reqId,
|
|
325
|
+
statusText,
|
|
326
|
+
);
|
|
327
|
+
}
|
|
328
|
+
|
|
307
329
|
export function handleToolOutputChunk(
|
|
308
330
|
_state: EventHandlerState,
|
|
309
331
|
deps: EventHandlerDeps,
|
|
@@ -386,7 +408,7 @@ export function handleInputJsonDelta(
|
|
|
386
408
|
// app_create/app_update code previews; all other tools discard it.
|
|
387
409
|
const content = APP_TOOL_NAMES.has(event.toolName)
|
|
388
410
|
? event.accumulatedJson
|
|
389
|
-
:
|
|
411
|
+
: truncateForClient(
|
|
390
412
|
event.accumulatedJson,
|
|
391
413
|
TOOL_INPUT_DELTA_MAX_CHARS,
|
|
392
414
|
TOOL_RESULT_TRUNCATION_SUFFIX,
|
|
@@ -396,6 +418,7 @@ export function handleInputJsonDelta(
|
|
|
396
418
|
toolName: event.toolName,
|
|
397
419
|
content,
|
|
398
420
|
sessionId: deps.ctx.conversationId,
|
|
421
|
+
toolUseId: event.toolUseId,
|
|
399
422
|
});
|
|
400
423
|
}
|
|
401
424
|
|
|
@@ -410,7 +433,7 @@ export function handleToolResult(
|
|
|
410
433
|
deps.onEvent({
|
|
411
434
|
type: "tool_result",
|
|
412
435
|
toolName: "",
|
|
413
|
-
result:
|
|
436
|
+
result: truncateForClient(
|
|
414
437
|
event.content,
|
|
415
438
|
TOOL_RESULT_MAX_CHARS,
|
|
416
439
|
TOOL_RESULT_TRUNCATION_SUFFIX,
|
|
@@ -420,6 +443,7 @@ export function handleToolResult(
|
|
|
420
443
|
status: event.status,
|
|
421
444
|
sessionId: deps.ctx.conversationId,
|
|
422
445
|
imageData: imageBlock?.source.data,
|
|
446
|
+
toolUseId: event.toolUseId,
|
|
423
447
|
});
|
|
424
448
|
state.pendingToolResults.set(event.toolUseId, {
|
|
425
449
|
content: event.content,
|
|
@@ -781,6 +805,9 @@ export async function dispatchAgentEvent(
|
|
|
781
805
|
case "tool_use":
|
|
782
806
|
handleToolUse(state, deps, event);
|
|
783
807
|
break;
|
|
808
|
+
case "tool_use_preview_start":
|
|
809
|
+
handleToolUsePreviewStart(state, deps, event);
|
|
810
|
+
break;
|
|
784
811
|
case "tool_output_chunk":
|
|
785
812
|
handleToolOutputChunk(state, deps, event);
|
|
786
813
|
break;
|
|
@@ -790,6 +817,20 @@ export async function dispatchAgentEvent(
|
|
|
790
817
|
case "tool_result":
|
|
791
818
|
handleToolResult(state, deps, event);
|
|
792
819
|
break;
|
|
820
|
+
case "server_tool_start": {
|
|
821
|
+
const friendlyNames: Record<string, string> = {
|
|
822
|
+
web_search: "Searching the web",
|
|
823
|
+
};
|
|
824
|
+
const statusText = friendlyNames[event.name] ?? `Running ${event.name}`;
|
|
825
|
+
deps.ctx.emitActivityState(
|
|
826
|
+
"tool_running",
|
|
827
|
+
"tool_use_start",
|
|
828
|
+
"assistant_turn",
|
|
829
|
+
deps.reqId,
|
|
830
|
+
statusText,
|
|
831
|
+
);
|
|
832
|
+
break;
|
|
833
|
+
}
|
|
793
834
|
case "error":
|
|
794
835
|
handleError(state, deps, event);
|
|
795
836
|
break;
|