@mycadet/assistant 0.12.9 → 0.12.10
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/Dockerfile +0 -8
- package/eslint-rules/__tests__/cli-no-daemon-internals.test.ts +1 -1
- package/openapi.yaml +62 -910
- package/package.json +3 -7
- package/scripts/build-test-fixtures.ts +1 -1
- package/scripts/generate-openapi.ts +22 -6
- package/scripts/postinstall.ts +4 -10
- package/scripts/run-tests.ts +0 -21
- package/src/__tests__/adaptive-thinking-repair.test.ts +19 -57
- package/src/__tests__/agent-loop.test.ts +0 -76
- package/src/__tests__/anthropic-provider.test.ts +6 -6
- package/src/__tests__/assert-not-live-db.ts +1 -1
- package/src/__tests__/assistant-id-boundary-guard.test.ts +3 -3
- package/src/__tests__/attachments-store-heic-normalize.test.ts +1 -1
- package/src/__tests__/attachments-store.test.ts +1 -1
- package/src/__tests__/audit-log-rotation.test.ts +1 -1
- package/src/__tests__/btw-routes.test.ts +1 -1
- package/src/__tests__/byok-default-profile-ensure.test.ts +21 -27
- package/src/__tests__/call-conversation-messages.test.ts +0 -5
- package/src/__tests__/call-recovery.test.ts +2 -7
- package/src/__tests__/call-routes-http.test.ts +0 -12
- package/src/__tests__/call-store.test.ts +2 -7
- package/src/__tests__/catalog-files.test.ts +7 -5
- package/src/__tests__/checker.test.ts +1 -1
- package/src/__tests__/cli-memory-v2-reembed-skills.test.ts +4 -4
- package/src/__tests__/cloud-client-verify-credential.test.ts +0 -4
- package/src/__tests__/cloud-credential-catalog-cli.test.ts +14 -14
- package/src/__tests__/cloud-profile-guard.test.ts +48 -401
- package/src/__tests__/compaction-events.test.ts +2 -2
- package/src/__tests__/config-loader-backfill.test.ts +74 -163
- package/src/__tests__/config-loader-cloud-defaults.test.ts +11 -11
- package/src/__tests__/config-loader-corrupt.test.ts +10 -10
- package/src/__tests__/config-loader-quarantine-notice.test.ts +7 -7
- package/src/__tests__/config-loader-validation-reset-notice.test.ts +11 -11
- package/src/__tests__/config-schema.test.ts +26 -27
- package/src/__tests__/config-set-route.test.ts +2 -6
- package/src/__tests__/conversation-agent-loop-inference-profile.test.ts +28 -300
- package/src/__tests__/conversation-agent-loop-overflow.test.ts +39 -246
- package/src/__tests__/conversation-agent-loop.test.ts +2 -58
- package/src/__tests__/conversation-clear-safety.test.ts +0 -30
- package/src/__tests__/conversation-inference-profile-route.test.ts +1 -1
- package/src/__tests__/conversation-queue.test.ts +1 -1
- package/src/__tests__/conversation-runtime-assembly.test.ts +1 -1
- package/src/__tests__/conversation-skill-tools.test.ts +4 -444
- package/src/__tests__/conversation-slash-commands.test.ts +1 -1
- package/src/__tests__/conversation-store.test.ts +1 -84
- package/src/__tests__/conversation-surface-state.test.ts +0 -16
- package/src/__tests__/credential-health-service.test.ts +14 -1
- package/src/__tests__/credential-record-retire.test.ts +1 -1
- package/src/__tests__/credential-record-write-through.test.ts +1 -1
- package/src/__tests__/credential-security-invariants.test.ts +0 -145
- package/src/__tests__/custom-profile-ensure.test.ts +1 -1
- package/src/__tests__/default-profile-catalog-fallback.test.ts +5 -15
- package/src/__tests__/deterministic-verification-control-plane.test.ts +0 -2
- package/src/__tests__/dictation-profile-store.test.ts +6 -6
- package/src/__tests__/disk-usage.test.ts +28 -164
- package/src/__tests__/docker-signing-key-bootstrap.test.ts +1 -1
- package/src/__tests__/embedding-cloud-proxy-selection.test.ts +1 -1
- package/src/__tests__/emit-event-signal.test.ts +1 -1
- package/src/__tests__/gateway-client-cloud-outbound.test.ts +3 -3
- package/src/__tests__/gateway-only-enforcement.test.ts +1 -1
- package/src/__tests__/guardian-dispatch.test.ts +0 -13
- package/src/__tests__/helpers/seed-app.ts +1 -1
- package/src/__tests__/host-cu-routes-targeted.test.ts +1 -1
- package/src/__tests__/host-shell-tool.test.ts +1 -1
- package/src/__tests__/identity-routes.test.ts +1 -1
- package/src/__tests__/inference-profile-session-handler.test.ts +1 -1
- package/src/__tests__/inference-profile-session-ipc.test.ts +1 -1
- package/src/__tests__/injector-chain.test.ts +1 -1
- package/src/__tests__/injector-config-quarantine-notice.test.ts +1 -1
- package/src/__tests__/injector-config-validation-reset-notice.test.ts +1 -1
- package/src/__tests__/injector-pkb-v2-silenced.test.ts +1 -1
- package/src/__tests__/{platform.test.ts → layout.test.ts} +1 -1
- package/src/__tests__/list-all-apps.test.ts +1 -1
- package/src/__tests__/live-workspace-guard.test.ts +2 -2
- package/src/__tests__/llm-resolver-override-or-default.test.ts +5 -6
- package/src/__tests__/llm-resolver.test.ts +7 -7
- package/src/__tests__/llm-schema-fallback-profile.test.ts +9 -10
- package/src/__tests__/llm-usage-store.test.ts +0 -495
- package/src/__tests__/log-export-routes.test.ts +1 -1
- package/src/__tests__/mcp-config-secret-boundary.test.ts +12 -53
- package/src/__tests__/mcp-list-plugin-servers.test.ts +1 -1
- package/src/__tests__/memory-config-file-parity.test.ts +1 -1
- package/src/__tests__/memory-v2-static-injector.test.ts +1 -1
- package/src/__tests__/messages-read-boundary-guard.test.ts +0 -2
- package/src/__tests__/notification-guardian-path.test.ts +0 -7
- package/src/__tests__/onboarding-persona-write.test.ts +1 -1
- package/src/__tests__/openai-provider.test.ts +8 -8
- package/src/__tests__/path-policy.test.ts +1 -1
- package/src/__tests__/persona-resolver.test.ts +1 -1
- package/src/__tests__/plugin-app-serve-routes.test.ts +1 -1
- package/src/__tests__/plugin-effective-enabled-set.test.ts +1 -1
- package/src/__tests__/plugin-import-boundary-guard.test.ts +4 -6
- package/src/__tests__/plugin-import-boundary-reverse-guard.test.ts +0 -3
- package/src/__tests__/provider-cloud-proxy-integration.test.ts +1 -5
- package/src/__tests__/provider-connections-backfill.test.ts +10 -10
- package/src/__tests__/prune-old-conversations-job.test.ts +6 -31
- package/src/__tests__/resolve-app.test.ts +1 -1
- package/src/__tests__/run-due-schedules.test.ts +1 -1
- package/src/__tests__/scaffold-managed-skill-tool.test.ts +0 -53
- package/src/__tests__/schedule-routes.test.ts +1 -1
- package/src/__tests__/schedule-store.test.ts +1 -1
- package/src/__tests__/secret-routes-cloud-proxy.test.ts +1 -1
- package/src/__tests__/skill-load-plugin-scope.test.ts +1 -1
- package/src/__tests__/surface-completion-compaction-boundary.test.ts +1 -1
- package/src/__tests__/tool-approval-handler.test.ts +1 -1
- package/src/__tests__/tool-audit.test.ts +5 -235
- package/src/__tests__/tool-executor-lifecycle-events.test.ts +54 -114
- package/src/__tests__/tools-get-route.test.ts +1 -1
- package/src/__tests__/turn-outcome-read.test.ts +1 -1
- package/src/__tests__/twilio-routes.test.ts +0 -1
- package/src/__tests__/usage-attribution.test.ts +0 -31
- package/src/__tests__/verification-control-plane-policy.test.ts +3 -10
- package/src/__tests__/visible-app-context.test.ts +1 -1
- package/src/__tests__/voice-ingress-preflight.test.ts +1 -1
- package/src/__tests__/workspace-git-service.test.ts +1 -1
- package/src/__tests__/workspace-greetings.test.ts +1 -1
- package/src/acp/__tests__/helpers/acp-config-stub.ts +1 -1
- package/src/activation/progress-store.ts +1 -1
- package/src/activation/turn-hooks.ts +1 -1
- package/src/agent/loop.ts +0 -51
- package/src/apps/app-store.ts +1 -1
- package/src/avatar/__tests__/avatar-store.test.ts +2 -172
- package/src/avatar/accent-backfill.ts +1 -1
- package/src/avatar/avatar-manifest.ts +1 -1
- package/src/avatar/avatar-store.ts +10 -69
- package/src/avatar/ensure-raster.ts +1 -1
- package/src/avatar/identity-avatar.ts +1 -1
- package/src/avatar/sync-avatar.ts +1 -1
- package/src/avatar/traits-png-sync.ts +1 -1
- package/src/bundler/compiler-tools.ts +1 -1
- package/src/bundler/package-resolver.ts +1 -1
- package/src/calls/__tests__/call-controller.test.ts +25 -27
- package/src/calls/active-call-lease.ts +1 -1
- package/src/calls/call-controller.ts +3 -3
- package/src/calls/call-domain.ts +4 -8
- package/src/calls/call-store.ts +2 -76
- package/src/calls/resolve-call-tts-provider.ts +3 -3
- package/src/calls/twilio-config.ts +3 -3
- package/src/calls/twilio-rest.ts +2 -2
- package/src/calls/voice-ingress-preflight.ts +2 -2
- package/src/cli/bundled-modules.ts +0 -2
- package/src/cli/commands/__tests__/apps.test.ts +1 -1
- package/src/cli/commands/__tests__/plugins.test.ts +9 -66
- package/src/cli/commands/__tests__/ps.test.ts +67 -0
- package/src/cli/commands/auth.help.ts +2 -2
- package/src/cli/commands/avatar.ts +1 -1
- package/src/cli/commands/changelog.ts +1 -1
- package/src/cli/commands/cloud/__tests__/subscription.test.ts +2 -2
- package/src/cli/commands/cloud/index.help.ts +1 -1
- package/src/cli/commands/cloud/index.ts +2 -2
- package/src/cli/commands/db/refresh.ts +1 -1
- package/src/cli/commands/db/repair-step-conversation-backfill.ts +1 -1
- package/src/cli/commands/db/repair.ts +1 -1
- package/src/cli/commands/db/status.ts +1 -1
- package/src/cli/commands/inference-profiles.ts +1 -12
- package/src/cli/commands/memory/__tests__/memory-v3.test.ts +1 -116
- package/src/cli/commands/memory/index.help.ts +1 -43
- package/src/cli/commands/memory/memory-v3.ts +0 -64
- package/src/cli/commands/plugins.ts +54 -205
- package/src/cli/commands/ps.ts +5 -2
- package/src/cli/commands/status.ts +1 -1
- package/src/cli/index.help.ts +0 -2
- package/src/cli/lib/__tests__/inspect-plugin.test.ts +36 -66
- package/src/cli/lib/__tests__/install-from-cloud.test.ts +1 -1
- package/src/cli/lib/__tests__/install-from-github.test.ts +41 -117
- package/src/cli/lib/__tests__/plugin-catalog-cache.test.ts +2 -185
- package/src/cli/lib/__tests__/plugin-catalog-resolve.test.ts +36 -66
- package/src/cli/lib/__tests__/plugin-catalog-visibility.test.ts +4 -6
- package/src/cli/lib/__tests__/plugin-details.test.ts +113 -96
- package/src/cli/lib/__tests__/search-plugins.test.ts +9 -16
- package/src/cli/lib/__tests__/uninstall-plugin.test.ts +1 -1
- package/src/cli/lib/__tests__/upgrade-plugin.test.ts +38 -15
- package/src/cli/lib/diff-plugin.ts +1 -1
- package/src/cli/lib/inspect-plugin.ts +13 -97
- package/src/cli/lib/install-from-cloud.ts +1 -1
- package/src/cli/lib/install-from-github.ts +75 -154
- package/src/cli/lib/install-plugin-dependencies.ts +1 -1
- package/src/cli/lib/list-installed-plugins.ts +1 -1
- package/src/cli/lib/open-browser.ts +1 -1
- package/src/cli/lib/plugin-catalog-cache.ts +8 -51
- package/src/cli/lib/plugin-catalog-resolve.ts +3 -22
- package/src/cli/lib/plugin-details.ts +5 -27
- package/src/cli/lib/plugin-marketplace.ts +18 -266
- package/src/cli/lib/search-plugins.ts +23 -43
- package/src/cli/lib/toggle-plugin.ts +1 -1
- package/src/cli/lib/uninstall-plugin.ts +1 -1
- package/src/cli/lib/upgrade-plugin.ts +3 -49
- package/src/cli/program.ts +1 -3
- package/src/cli.ts +1 -1
- package/src/cloud/client.ts +0 -6
- package/src/cloud/consent-cache.test.ts +22 -201
- package/src/cloud/consent-cache.ts +16 -111
- package/src/cloud/sync-identity.ts +1 -1
- package/src/config/__tests__/chat-settings.test.ts +1 -1
- package/src/config/__tests__/cloud-identity.test.ts +15 -2
- package/src/config/__tests__/default-plugin-skill-discovery.test.ts +1 -1
- package/src/config/__tests__/default-profile-catalog.test.ts +12 -51
- package/src/config/__tests__/deployment-context-defaults.test.ts +13 -13
- package/src/config/__tests__/loader-callsite-strip-fallback.test.ts +4 -4
- package/src/config/__tests__/loader-last-known-good.test.ts +9 -9
- package/src/config/__tests__/loader-sparse-array-cleanup.test.ts +7 -7
- package/src/config/__tests__/plugin-resident-skill-discovery.test.ts +1 -1
- package/src/config/__tests__/profile-materialization.test.ts +2 -4
- package/src/config/__tests__/sync-gated-profiles.test.ts +1 -106
- package/src/config/acp-agent-write.ts +1 -1
- package/src/config/bundled-skills/settings/tools/open-system-settings.test.ts +1 -1
- package/src/config/bundled-skills/settings/tools/open-system-settings.ts +1 -1
- package/src/config/call-site-defaults.ts +0 -6
- package/src/config/cloud-identity.ts +12 -5
- package/src/config/composer-preferences.ts +1 -1
- package/src/config/default-profile-catalog.ts +8 -75
- package/src/config/default-profile-names.ts +2 -25
- package/src/config/env-registry.ts +1 -14
- package/src/config/env.ts +8 -6
- package/src/config/llm-resolver.ts +1 -2
- package/src/config/loader.ts +13 -17
- package/src/config/profile-materialization.ts +1 -1
- package/src/config/schema.ts +1 -7
- package/src/config/schemas/call-site-catalog.ts +0 -7
- package/src/config/schemas/llm.ts +22 -27
- package/src/config/seed-inference-profiles.ts +16 -17
- package/src/config/skills.ts +2 -2
- package/src/config/sync-gated-profiles.ts +6 -24
- package/src/credential-health/credential-health-service.ts +10 -3
- package/src/daemon/approval-generators.ts +3 -3
- package/src/daemon/config-watcher.ts +2 -2
- package/src/daemon/conversation-agent-loop-handlers.ts +0 -18
- package/src/daemon/conversation-agent-loop.ts +6 -97
- package/src/daemon/conversation-process.ts +1 -1
- package/src/daemon/conversation-skill-tools.ts +4 -72
- package/src/daemon/conversation-store.ts +1 -1
- package/src/daemon/conversation-surface-state.ts +0 -33
- package/src/daemon/conversation-surfaces.ts +1 -86
- package/src/daemon/conversation-tool-setup.test.ts +1 -1
- package/src/daemon/conversation-tool-setup.ts +0 -23
- package/src/daemon/conversation.ts +3 -5
- package/src/daemon/daemon-control.ts +3 -3
- package/src/daemon/dictation-profile-store.ts +3 -3
- package/src/daemon/event-loop-watchdog.test.ts +2 -198
- package/src/daemon/event-loop-watchdog.ts +0 -185
- package/src/daemon/external-plugins-bootstrap.ts +1 -1
- package/src/daemon/first-greeting.ts +1 -1
- package/src/daemon/handlers/skills.ts +1 -1
- package/src/daemon/host-app-control-proxy.ts +1 -1
- package/src/daemon/host-cu-proxy.ts +2 -2
- package/src/daemon/identity-helpers.ts +1 -1
- package/src/daemon/lifecycle.ts +11 -15
- package/src/daemon/main.ts +1 -1
- package/src/daemon/now-scratchpad.ts +1 -1
- package/src/daemon/process-message.ts +4 -4
- package/src/daemon/profiler-run-store.ts +2 -2
- package/src/daemon/providers-setup.ts +2 -2
- package/src/daemon/shutdown-handlers.ts +0 -10
- package/src/daemon/sqlite-corruption-watchdog.test.ts +2 -142
- package/src/daemon/sqlite-corruption-watchdog.ts +17 -81
- package/src/daemon/tool-side-effects.ts +1 -1
- package/src/desktop/desktop-session-manager.ts +1 -1
- package/src/desktop/desktop-wallpaper-renderer.ts +1 -1
- package/src/heartbeat/heartbeat-service.ts +1 -1
- package/src/home/feed-writer.ts +1 -1
- package/src/home/home-greeting-cache.ts +1 -1
- package/src/home/relationship-state-writer.ts +2 -2
- package/src/hooks/__tests__/hook-live-reload.test.ts +1 -1
- package/src/hooks/hook-loader.ts +2 -2
- package/src/inbound/__tests__/oauth-callback-url.test.ts +2 -2
- package/src/inbound/oauth-callback-url.ts +3 -3
- package/src/ipc/__tests__/attachment-ipc.test.ts +1 -1
- package/src/ipc/socket-path.ts +1 -1
- package/src/live-voice/__tests__/live-voice-archive.test.ts +1 -1
- package/src/live-voice/__tests__/live-voice-vad.test.ts +1 -1
- package/src/live-voice/live-voice-session.ts +3 -66
- package/src/mcp/__tests__/effective-config.test.ts +1 -1
- package/src/mcp/__tests__/mcp-oauth-client-registration.test.ts +2 -2
- package/src/mcp/__tests__/mcp-oauth-provider.test.ts +2 -3
- package/src/mcp/__tests__/reload-signal-emission.test.ts +1 -1
- package/src/mcp/__tests__/reload-signal.test.ts +1 -1
- package/src/mcp/__tests__/workspace-mcp-config.test.ts +19 -21
- package/src/mcp/reload-signal.ts +1 -1
- package/src/mcp/workspace-mcp-config.ts +1 -23
- package/src/messaging/draft-store.ts +1 -1
- package/src/monitoring/__tests__/active-conversations.test.ts +1 -1
- package/src/monitoring/__tests__/page-cache.test.ts +1 -1
- package/src/monitoring/__tests__/stall-capture.test.ts +1 -1
- package/src/monitoring/__tests__/workspace-git-heartbeat.test.ts +1 -1
- package/src/monitoring/active-conversations.ts +1 -1
- package/src/monitoring/control.ts +1 -1
- package/src/monitoring/daemon-boot-time.ts +1 -1
- package/src/monitoring/daemon-heartbeat.ts +1 -1
- package/src/monitoring/page-cache.ts +1 -1
- package/src/monitoring/plugin-auto-update.ts +1 -7
- package/src/monitoring/plugin-source-watch.ts +1 -1
- package/src/monitoring/recovery/db.ts +1 -1
- package/src/monitoring/recovery/inflight-content.ts +1 -1
- package/src/monitoring/resource-sampler.ts +3 -14
- package/src/monitoring/stall-capture.ts +1 -1
- package/src/monitoring/worker.ts +9 -76
- package/src/monitoring/workspace-git-heartbeat.ts +1 -1
- package/src/oauth/connect-orchestrator.ts +4 -4
- package/src/permissions/checker.ts +1 -1
- package/src/permissions/workspace-policy.ts +1 -1
- package/src/persistence/__tests__/main-db-readonly-probe.ts +27 -52
- package/src/persistence/__tests__/message-content-file.test.ts +1 -1
- package/src/persistence/__tests__/slow-sync-log.test.ts +0 -2
- package/src/persistence/attachments-store.ts +1 -1
- package/src/persistence/conversation-crud.ts +1 -38
- package/src/persistence/conversation-directories.ts +1 -1
- package/src/persistence/conversation-types.ts +0 -8
- package/src/persistence/db-async-query.ts +1 -1
- package/src/persistence/db-connection.ts +11 -1
- package/src/persistence/db-init.ts +1 -1
- package/src/persistence/db-maintenance.ts +1 -1
- package/src/persistence/embeddings/__tests__/embedding-local-lifecycle.test.ts +1 -1
- package/src/persistence/embeddings/embedding-local.ts +4 -4
- package/src/persistence/embeddings/embedding-runtime-manager.ts +1 -1
- package/src/persistence/embeddings/qdrant-client.ts +1 -1
- package/src/persistence/embeddings/qdrant-manager.ts +1 -1
- package/src/persistence/job-handlers/__tests__/message-lexical-backfill.test.ts +1 -1
- package/src/persistence/job-handlers/__tests__/message-lexical-enqueue.test.ts +1 -1
- package/src/persistence/job-handlers/cleanup.ts +8 -17
- package/src/persistence/llm-usage-store.ts +2 -229
- package/src/persistence/message-content-file.ts +1 -1
- package/src/persistence/migrations/209-strip-thinking-from-consolidated.ts +1 -1
- package/src/persistence/migrations/222-strip-placeholder-sentinels-from-messages.ts +1 -1
- package/src/persistence/migrations/296-rewrite-balanced-economy-profile-pins.test.ts +1 -1
- package/src/persistence/migrations/306-rewrite-frontier-profile-pins.test.ts +1 -1
- package/src/persistence/migrations/329-move-onboarding-events-to-telemetry-db.test.ts +13 -0
- package/src/persistence/migrations/330-move-auth-fallback-events-to-telemetry-db.test.ts +13 -0
- package/src/persistence/migrations/331-move-lifecycle-events-to-telemetry-db.test.ts +13 -0
- package/src/persistence/migrations/332-move-skill-loaded-events-to-telemetry-db.test.ts +13 -0
- package/src/persistence/migrations/333-create-telemetry-events-table.test.ts +7 -4
- package/src/persistence/migrations/334-backfill-telemetry-events-outbox.test.ts +13 -0
- package/src/persistence/migrations/387-drop-telemetry-tables.ts +51 -0
- package/src/persistence/migrations/__tests__/327-create-flush-checkpoints.test.ts +9 -1
- package/src/persistence/migrations/__tests__/387-drop-telemetry-tables.test.ts +79 -0
- package/src/persistence/migrations/helpers/relocation.ts +1 -1
- package/src/persistence/migrations/run-migrations.ts +1 -1
- package/src/persistence/migrations/validate-migration-state.ts +1 -1
- package/src/persistence/raw-query.ts +1 -29
- package/src/persistence/slow-sync-log.ts +0 -23
- package/src/persistence/steps.ts +2 -0
- package/src/{telemetry → persistence}/tool-audit.ts +6 -121
- package/src/plugin-api/index.ts +1 -1
- package/src/plugin-api/plugin-name-env.ts +1 -1
- package/src/plugins/__tests__/installed-plugin-dirs.test.ts +1 -1
- package/src/plugins/collect-source-versions.ts +1 -1
- package/src/plugins/defaults/channel/package.json +1 -1
- package/src/plugins/defaults/cloud-hosted/package.json +1 -1
- package/src/plugins/defaults/compaction/package.json +1 -1
- package/src/plugins/defaults/documents/package.json +1 -1
- package/src/plugins/defaults/empty-response/package.json +1 -1
- package/src/plugins/defaults/exploration-drift/package.json +1 -1
- package/src/plugins/defaults/image-fallback/package.json +1 -1
- package/src/plugins/defaults/image-recovery/package.json +1 -1
- package/src/plugins/defaults/max-tokens-continue/package.json +1 -1
- package/src/plugins/defaults/memory/__tests__/db-async-query.test.ts +1 -1
- package/src/plugins/defaults/memory/__tests__/db-maintenance.test.ts +1 -1
- package/src/plugins/defaults/memory/__tests__/memory-retrospective-job.test.ts +0 -82
- package/src/plugins/defaults/memory/__tests__/memory-retrospective-skill-card.test.ts +0 -41
- package/src/plugins/defaults/memory/__tests__/memory-tier-boundary-guard.test.ts +0 -2
- package/src/plugins/defaults/memory/memory-retrospective-job.ts +3 -52
- package/src/plugins/defaults/memory/memory-retrospective-skill-card.ts +0 -18
- package/src/plugins/defaults/memory/package.json +1 -1
- package/src/plugins/defaults/memory/paths.ts +4 -4
- package/src/plugins/defaults/memory/src/__tests__/memory-worker-routes.test.ts +1 -1
- package/src/plugins/defaults/memory/src/memory-v2-routes.ts +5 -5
- package/src/plugins/defaults/memory/src/memory-v3-routes.ts +0 -207
- package/src/plugins/defaults/memory/src/memory-worker-routes.ts +1 -1
- package/src/plugins/defaults/memory/startup.ts +1 -22
- package/src/plugins/defaults/memory/v3/__tests__/orchestrate.test.ts +2 -253
- package/src/plugins/defaults/memory/v3/orchestrate.ts +5 -129
- package/src/plugins/defaults/memory/worker-control.ts +1 -1
- package/src/plugins/defaults/memory/worker.ts +2 -2
- package/src/plugins/defaults/session/package.json +1 -1
- package/src/plugins/defaults/surface-completion-nudge/package.json +1 -1
- package/src/plugins/defaults/task-progress/package.json +1 -1
- package/src/plugins/defaults/task-progress-nudge/package.json +1 -1
- package/src/plugins/defaults/title-generate/package.json +1 -1
- package/src/plugins/defaults/tool-error/package.json +1 -1
- package/src/plugins/defaults/tool-result-truncate/package.json +1 -1
- package/src/plugins/defaults/turn-context/package.json +1 -1
- package/src/plugins/defaults/workspace/injectors.ts +1 -1
- package/src/plugins/defaults/workspace/package.json +1 -1
- package/src/plugins/disabled-state.ts +1 -1
- package/src/plugins/ensure-plugin-api-shim.ts +1 -1
- package/src/plugins/ensure-shared-dep-links.ts +1 -1
- package/src/plugins/installed-plugin-dirs.ts +1 -1
- package/src/plugins/mcp-servers.ts +7 -9
- package/src/plugins/mtime-cache.ts +2 -2
- package/src/plugins/source-versions.ts +1 -1
- package/src/prompts/bootstrap-cleanup.ts +1 -1
- package/src/prompts/persona-resolver.ts +1 -1
- package/src/prompts/sections.ts +2 -2
- package/src/prompts/system-prompt.ts +10 -42
- package/src/prompts/templates/BOOTSTRAP-ACTIVATION-RAIL.md +0 -37
- package/src/providers/__tests__/cadet-connection-routing.test.ts +2 -2
- package/src/providers/cadet/client.ts +1 -1
- package/src/providers/inference/__tests__/base-url-route-validation.test.ts +1 -1
- package/src/providers/inference/adapter-factory.ts +1 -1
- package/src/providers/inference/backfill.ts +3 -10
- package/src/providers/inference/profile-probe.ts +1 -1
- package/src/providers/retry.ts +0 -2
- package/src/providers/types.ts +0 -7
- package/src/providers/usage-tracking.ts +1 -1
- package/src/routes/__tests__/route-host.test.ts +1 -1
- package/src/routes/control.ts +1 -1
- package/src/routes/route-host-client.ts +1 -1
- package/src/routes/worker.ts +2 -2
- package/src/runtime/agent-wake.ts +1 -1
- package/src/runtime/assistant-stream-state.ts +1 -1
- package/src/runtime/auth/token-service.ts +1 -1
- package/src/runtime/background-job-runner.ts +1 -1
- package/src/runtime/middleware/twilio-validation.ts +2 -2
- package/src/runtime/routes/__tests__/app-pin-routes.test.ts +1 -1
- package/src/runtime/routes/__tests__/apps-refresh-route.test.ts +1 -1
- package/src/runtime/routes/__tests__/avatar-state-routes.test.ts +3 -33
- package/src/runtime/routes/__tests__/cloud-credits-routes.test.ts +5 -4
- package/src/runtime/routes/__tests__/cloud-invoice-routes.test.ts +4 -3
- package/src/runtime/routes/__tests__/conversation-query-routes.test.ts +59 -287
- package/src/runtime/routes/__tests__/default-plugin-routes.test.ts +1 -1
- package/src/runtime/routes/__tests__/deprecated-route-context.test.ts +15 -62
- package/src/runtime/routes/__tests__/inference-profiles-routes.test.ts +105 -12
- package/src/runtime/routes/__tests__/ingress-status-routes.test.ts +1 -1
- package/src/runtime/routes/__tests__/monitoring-routes.test.ts +1 -1
- package/src/runtime/routes/__tests__/plugins-routes.test.ts +47 -211
- package/src/runtime/routes/__tests__/route-host-worker-routes.test.ts +1 -1
- package/src/runtime/routes/__tests__/schedule-routes-disarm-reason.test.ts +1 -1
- package/src/runtime/routes/__tests__/schedule-worker-routes.test.ts +1 -1
- package/src/runtime/routes/__tests__/user-route-dispatcher-host.test.ts +1 -1
- package/src/runtime/routes/__tests__/user-route-dispatcher.test.ts +1 -1
- package/src/runtime/routes/__tests__/user-routes-cli.test.ts +1 -1
- package/src/runtime/routes/__tests__/user-routes-notices.test.ts +1 -1
- package/src/runtime/routes/__tests__/user-routes-request.test.ts +1 -1
- package/src/runtime/routes/app-management-routes.ts +1 -1
- package/src/runtime/routes/attachment-routes.ts +1 -1
- package/src/runtime/routes/audit-routes.ts +1 -1
- package/src/runtime/routes/avatar-routes.ts +3 -10
- package/src/runtime/routes/cloud-routes.ts +3 -3
- package/src/runtime/routes/content-source-routes.ts +1 -1
- package/src/runtime/routes/conversation-query-routes.ts +60 -621
- package/src/runtime/routes/conversation-routes.ts +1 -38
- package/src/runtime/routes/debug-routes.ts +1 -1
- package/src/runtime/routes/deprecated-route-context.ts +5 -61
- package/src/runtime/routes/heartbeat-routes.ts +1 -1
- package/src/runtime/routes/identity-routes.ts +1 -1
- package/src/runtime/routes/index.ts +0 -6
- package/src/runtime/routes/inference-profile-session-handler.ts +3 -3
- package/src/runtime/routes/inference-profiles-routes.ts +48 -21
- package/src/runtime/routes/inference-provider-connection-routes.ts +0 -1
- package/src/runtime/routes/llm-call-sites-routes.ts +3 -3
- package/src/runtime/routes/log-export/__tests__/installed-inventory.test.ts +1 -1
- package/src/runtime/routes/log-export/__tests__/workspace-allowlist-error-contract.test.ts +1 -1
- package/src/runtime/routes/log-export/__tests__/workspace-allowlist.test.ts +1 -1
- package/src/runtime/routes/log-export/workspace-allowlist.ts +1 -1
- package/src/runtime/routes/log-export-routes.ts +17 -15
- package/src/runtime/routes/migration-rollback-routes.ts +1 -1
- package/src/runtime/routes/migration-routes.ts +2 -3
- package/src/runtime/routes/monitoring-routes.ts +2 -2
- package/src/runtime/routes/oauth-providers.ts +5 -5
- package/src/runtime/routes/plugins-routes.ts +38 -163
- package/src/runtime/routes/profiler-routes.ts +1 -1
- package/src/runtime/routes/route-host-worker-routes.ts +1 -1
- package/src/runtime/routes/sanity-routes.ts +1 -1
- package/src/runtime/routes/schedule-routes.ts +1 -1
- package/src/runtime/routes/schedule-worker-routes.ts +1 -1
- package/src/runtime/routes/settings-routes.ts +1 -1
- package/src/runtime/routes/sounds-config-routes.ts +1 -1
- package/src/runtime/routes/surface-conversation-resolver.ts +1 -7
- package/src/runtime/routes/user-route-dispatcher.ts +1 -3
- package/src/runtime/routes/user-route-import.ts +1 -1
- package/src/runtime/routes/user-route-resolution.ts +1 -1
- package/src/runtime/routes/user-routes-cli.ts +1 -1
- package/src/runtime/routes/workspace-commit-routes.ts +1 -1
- package/src/runtime/routes/workspace-greetings.ts +1 -1
- package/src/runtime/routes/workspace-routes.ts +1 -1
- package/src/runtime/routes/workspace-utils.ts +1 -1
- package/src/runtime/sync/resource-sync-events.ts +1 -1
- package/src/schedule/__tests__/plugin-schedule-declarations.test.ts +1 -1
- package/src/schedule/__tests__/plugin-schedule-reconciler.test.ts +1 -1
- package/src/schedule/plugin-schedule-availability.ts +1 -1
- package/src/schedule/plugin-schedule-declarations.ts +1 -1
- package/src/schedule/run-script.ts +1 -1
- package/src/schedule/scheduler.ts +1 -11
- package/src/schedule/worker-control.ts +1 -1
- package/src/schedule/worker.ts +3 -3
- package/src/security/oauth2.ts +2 -2
- package/src/security/secret-allowlist.ts +1 -1
- package/src/signals/cancel.ts +1 -1
- package/src/signals/conversation-undo.ts +1 -1
- package/src/signals/emit-event.ts +1 -1
- package/src/signals/event-stream.ts +1 -1
- package/src/signals/user-message.ts +1 -1
- package/src/skills/catalog-install.ts +2 -1
- package/src/skills/clawhub.ts +1 -1
- package/src/skills/cloud-store.ts +1 -1
- package/src/skills/path-classifier.ts +1 -1
- package/src/skills/skill-history.ts +1 -1
- package/src/skills/skillssh-registry.ts +1 -1
- package/src/skills/uninstall.ts +1 -1
- package/src/skills/workspace-skill-md-signature.ts +1 -1
- package/src/subagent/manager.ts +1 -1
- package/src/theme/workspace-theme.ts +1 -1
- package/src/tools/browser/auth-cache.ts +1 -1
- package/src/tools/browser/browser-manager.ts +1 -1
- package/src/tools/browser/runtime-check.ts +1 -1
- package/src/tools/executor.ts +4 -4
- package/src/tools/filesystem/write.ts +1 -1
- package/src/tools/permission-checker.ts +2 -51
- package/src/tools/run-standalone.ts +1 -1
- package/src/tools/skills/format-input-schema.ts +1 -1
- package/src/tools/skills/load.ts +1 -1
- package/src/tools/skills/scaffold-cloud.ts +0 -32
- package/src/tools/terminal/safe-env.ts +1 -2
- package/src/tools/terminal/sanitized-bash.ts +1 -1
- package/src/tools/terminal/shell.ts +1 -1
- package/src/tools/tool-approval-handler.ts +4 -1
- package/src/tools/workflows/manage-workflows.ts +2 -2
- package/src/tools/workflows/run-workflow.test.ts +1 -1
- package/src/tools/workspace-tools/loader.ts +1 -1
- package/src/tts/synthesis-stream.ts +2 -2
- package/src/usage/attribution.ts +1 -11
- package/src/util/browser.ts +1 -1
- package/src/util/bun-runtime.ts +2 -1
- package/src/util/device-id.ts +1 -1
- package/src/util/disk-usage.ts +4 -139
- package/src/util/layout.ts +3 -3
- package/src/util/logger.ts +1 -1
- package/src/util/logs-db-path.ts +1 -1
- package/src/util/memory-db-path.ts +1 -1
- package/src/util/{platform.ts → os.ts} +5 -30
- package/src/util/process-tree.ts +19 -0
- package/src/util/sqlite3-runtime.ts +1 -1
- package/src/util/telemetry-db-path.ts +1 -1
- package/src/watcher/__tests__/engine.test.ts +0 -23
- package/src/watcher/engine.ts +0 -7
- package/src/windows-compiled-cli.ts +0 -4
- package/src/windows-compiled-worker-entry.ts +0 -6
- package/src/workflows/leaf-runner.test.ts +1 -1
- package/src/workflows/leaf-runner.ts +1 -1
- package/src/workflows/library.ts +1 -1
- package/src/workspace/adaptive-thinking-repair.ts +5 -24
- package/src/workspace/byok-default-profile-ensure.ts +24 -26
- package/src/workspace/custom-profile-ensure.ts +2 -2
- package/src/workspace/git-service.ts +1 -1
- package/src/workspace/hatched-date.ts +1 -1
- package/src/workspace/migrations/038-unify-llm-callsite-configs.ts +2 -2
- package/src/workspace/migrations/040-seed-latency-callsite-defaults.ts +1 -1
- package/src/workspace/migrations/050-seed-main-agent-opus-callsite.ts +1 -1
- package/src/workspace/migrations/077-seed-memory-router-callsite.ts +1 -1
- package/src/workspace/migrations/registry.ts +0 -4
- package/src/workspace/turn-commit.ts +1 -1
- package/docs/activation-funnel-telemetry.md +0 -324
- package/scripts/bundled-plugin-packages.ts +0 -154
- package/scripts/generate-bundled-plugin-packages.ts +0 -29
- package/src/__tests__/activation-early-marking.test.ts +0 -114
- package/src/__tests__/auth-fallback-events-store.test.ts +0 -99
- package/src/__tests__/config-get-vision-flag.test.ts +0 -139
- package/src/__tests__/conversation-surfaces-activation-emit.test.ts +0 -400
- package/src/__tests__/internal-telemetry-routes.test.ts +0 -213
- package/src/__tests__/telemetry-routes.test.ts +0 -182
- package/src/__tests__/turn-events-store.test.ts +0 -376
- package/src/__tests__/ui-channel-variants.test.ts +0 -53
- package/src/avatar/__tests__/avatar-changed-telemetry.test.ts +0 -217
- package/src/avatar/avatar-changed-telemetry.ts +0 -128
- package/src/calls/__tests__/call-funnel-telemetry.test.ts +0 -204
- package/src/cli/commands/telemetry.help.ts +0 -27
- package/src/cli/commands/telemetry.ts +0 -83
- package/src/cli/lib/__tests__/local-plugin-upgrade.test.ts +0 -251
- package/src/cli/lib/__tests__/plugin-catalog-local.test.ts +0 -113
- package/src/cli/lib/__tests__/plugin-marketplace.test.ts +0 -384
- package/src/cli/lib/__tests__/plugin-pin-history.test.ts +0 -164
- package/src/cli/lib/__tests__/plugins-install-offline.test.ts +0 -228
- package/src/cli/lib/bundled-marketplace.json +0 -1575
- package/src/cli/lib/bundled-plugin-packages.json +0 -827
- package/src/cli/lib/bundled-plugin-packages.ts +0 -87
- package/src/cli/lib/plugin-catalog-local.ts +0 -94
- package/src/cli/lib/plugin-pin-history.ts +0 -276
- package/src/cloud/feature-gate.ts +0 -8
- package/src/config/__tests__/cloud-rehydration.test.ts +0 -180
- package/src/config/cloud-rehydration.ts +0 -35
- package/src/daemon/__tests__/auto-profile-router.test.ts +0 -380
- package/src/daemon/auto-profile-router.ts +0 -428
- package/src/live-voice/__tests__/live-voice-session-telemetry.test.ts +0 -391
- package/src/monitoring/__tests__/db-integrity-sample.test.ts +0 -113
- package/src/monitoring/__tests__/oom-kill-reporter.test.ts +0 -374
- package/src/monitoring/db-integrity-check.ts +0 -163
- package/src/monitoring/db-integrity-sample.ts +0 -176
- package/src/monitoring/oom-kill-reporter.ts +0 -469
- package/src/onboarding/__tests__/onboarding-events-store.test.ts +0 -158
- package/src/onboarding/onboarding-events-store.ts +0 -296
- package/src/persistence/__tests__/raw-query-telemetry.test.ts +0 -76
- package/src/persistence/lifecycle-events-store.test.ts +0 -134
- package/src/persistence/lifecycle-events-store.ts +0 -110
- package/src/plugins/defaults/memory/__tests__/activation-session-store.test.ts +0 -76
- package/src/plugins/defaults/memory/activation-session-store.ts +0 -50
- package/src/plugins/defaults/memory/src/__tests__/memory-v3-gate-stats.test.ts +0 -281
- package/src/runtime/routes/auto-profile-routes.ts +0 -83
- package/src/runtime/routes/internal-telemetry-routes.ts +0 -142
- package/src/runtime/routes/telemetry-routes.ts +0 -274
- package/src/security/auth-fallback-events-store.ts +0 -57
- package/src/telemetry/__tests__/activation-funnel.test.ts +0 -95
- package/src/telemetry/__tests__/config-setting-events-store.test.ts +0 -63
- package/src/telemetry/__tests__/config-setting-snapshot.test.ts +0 -143
- package/src/telemetry/__tests__/flush-checkpoints.test.ts +0 -56
- package/src/telemetry/__tests__/live-voice-funnel.test.ts +0 -174
- package/src/telemetry/__tests__/outbox-test-harness.ts +0 -85
- package/src/telemetry/__tests__/phone-call-funnel.test.ts +0 -72
- package/src/telemetry/__tests__/telemetry-event-fixtures.ts +0 -282
- package/src/telemetry/__tests__/watchdog-events-store.test.ts +0 -71
- package/src/telemetry/activation-funnel.ts +0 -172
- package/src/telemetry/config-setting-events-store.ts +0 -40
- package/src/telemetry/config-setting-snapshot.ts +0 -170
- package/src/telemetry/flush-checkpoints.ts +0 -70
- package/src/telemetry/live-voice-funnel.ts +0 -185
- package/src/telemetry/memory-corpus-size.test.ts +0 -120
- package/src/telemetry/memory-corpus-size.ts +0 -184
- package/src/telemetry/memory-tier-reporter.test.ts +0 -195
- package/src/telemetry/memory-tier-reporter.ts +0 -130
- package/src/telemetry/phone-call-funnel.ts +0 -144
- package/src/telemetry/skill-loaded-events-store.test.ts +0 -93
- package/src/telemetry/skill-loaded-events-store.ts +0 -39
- package/src/telemetry/telemetry-event-sources.test.ts +0 -223
- package/src/telemetry/telemetry-event-sources.ts +0 -597
- package/src/telemetry/telemetry-events-outbox.test.ts +0 -375
- package/src/telemetry/telemetry-events-outbox.ts +0 -237
- package/src/telemetry/telemetry-main-db.ts +0 -48
- package/src/telemetry/telemetry-wire-source.json +0 -4
- package/src/telemetry/telemetry-wire-validation.test.ts +0 -157
- package/src/telemetry/telemetry-wire-validation.ts +0 -162
- package/src/telemetry/telemetry-wire.generated.ts +0 -483
- package/src/telemetry/tool-executed-events-store.test.ts +0 -210
- package/src/telemetry/tool-executed-events-store.ts +0 -102
- package/src/telemetry/trace-collection-policy.test.ts +0 -28
- package/src/telemetry/trace-collection-policy.ts +0 -30
- package/src/telemetry/turn-events-store.ts +0 -216
- package/src/telemetry/turn-trace-store.test.ts +0 -884
- package/src/telemetry/turn-trace-store.ts +0 -399
- package/src/telemetry/types.test.ts +0 -38
- package/src/telemetry/types.ts +0 -780
- package/src/telemetry/usage-telemetry-reporter.test.ts +0 -3445
- package/src/telemetry/usage-telemetry-reporter.ts +0 -566
- package/src/telemetry/watchdog-direct-emit.test.ts +0 -112
- package/src/telemetry/watchdog-direct-emit.ts +0 -104
- package/src/telemetry/watchdog-events-store.ts +0 -31
- package/src/tools/ui-surface/channel-variants.ts +0 -52
- package/src/watcher/__tests__/telemetry.test.ts +0 -178
- package/src/watcher/telemetry.ts +0 -93
- package/src/workspace/migrations/097-enable-adaptive-thinking-managed-profiles.ts +0 -165
- package/src/workspace/migrations/104-recheck-adaptive-thinking-model-implied-anthropic.ts +0 -151
- /package/src/{telemetry → persistence}/tool-usage-store.ts +0 -0
- /package/src/{telemetry → persistence}/turn-outcome.ts +0 -0
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
import { and, asc, eq, gt, isNotNull, ne, or } from "drizzle-orm";
|
|
2
|
-
|
|
3
|
-
import { toolInvocations } from "../persistence/schema/index.js";
|
|
4
|
-
import { getTelemetryMainDb } from "./telemetry-main-db.js";
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* A `tool_invocations` audit row projected for `tool_executed` telemetry
|
|
8
|
-
* reporting.
|
|
9
|
-
*
|
|
10
|
-
* Deliberately excludes the `input` / `result` columns — raw tool
|
|
11
|
-
* args/outputs are potentially PII and must never leave the device. Only the
|
|
12
|
-
* payload SIZES (`argBytes` / `resultBytes`) are projected.
|
|
13
|
-
*/
|
|
14
|
-
export interface UnreportedToolExecutedEvent {
|
|
15
|
-
id: string;
|
|
16
|
-
toolName: string;
|
|
17
|
-
/** `"allow"`-style decisions or `"error"`; never `"denied"` (filtered out). */
|
|
18
|
-
decision: string;
|
|
19
|
-
durationMs: number;
|
|
20
|
-
/** Serialized raw input size in bytes. Non-null on projected rows (the null-arg-bytes filter excludes legacy and opted-out rows). */
|
|
21
|
-
argBytes: number | null;
|
|
22
|
-
/** Raw result size in bytes, computed before truncation/redaction and sensitive-output sanitization. */
|
|
23
|
-
resultBytes: number | null;
|
|
24
|
-
provider: string | null;
|
|
25
|
-
model: string | null;
|
|
26
|
-
inferenceProfile: string | null;
|
|
27
|
-
inferenceProfileSource: string | null;
|
|
28
|
-
conversationId: string;
|
|
29
|
-
createdAt: number;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* Query tool invocations that haven't been reported to telemetry yet.
|
|
34
|
-
* Uses a compound cursor (createdAt + id) for reliable watermarking.
|
|
35
|
-
* Rows are written by the tool audit terminals (`telemetry/tool-audit.ts`) —
|
|
36
|
-
* there is no record function here.
|
|
37
|
-
*
|
|
38
|
-
* Two row classes are excluded:
|
|
39
|
-
* - Permission-denied rows: the tool never executed.
|
|
40
|
-
* - Rows with null `arg_bytes`, which covers two populations:
|
|
41
|
-
* - Legacy pre-migration-278 rows: already shipped under the
|
|
42
|
-
* since-reverted `tool_execution` event type and lacking the
|
|
43
|
-
* size/attribution columns.
|
|
44
|
-
* - Rows recorded while usage data collection was opted out: the audit
|
|
45
|
-
* terminals (`telemetry/tool-audit.ts`) persist NULL telemetry columns
|
|
46
|
-
* for them at write time, making them unreportable by construction —
|
|
47
|
-
* no later opt-in or watermark race can ship them.
|
|
48
|
-
* Every opted-in post-migration writer path computes a non-null
|
|
49
|
-
* `arg_bytes` (the only other null writer, "permission_denied", is
|
|
50
|
-
* excluded by the decision filter), making `arg_bytes IS NOT NULL` a
|
|
51
|
-
* reliable discriminator. Opted-out rows recorded under builds that
|
|
52
|
-
* predate the write-time gate carry non-null columns and are guarded by
|
|
53
|
-
* the reporter's opt-out flush branch, which advances watermarks without
|
|
54
|
-
* sending (see usage-telemetry-reporter.ts).
|
|
55
|
-
*
|
|
56
|
-
* Reporting is best-effort: `rotateToolInvocations` purges by `created_at`
|
|
57
|
-
* alone, so rows older than `auditLog.retentionDays` may rotate away before
|
|
58
|
-
* they are reported.
|
|
59
|
-
*/
|
|
60
|
-
export function queryUnreportedToolExecutedEvents(
|
|
61
|
-
afterCreatedAt: number,
|
|
62
|
-
afterId: string | undefined,
|
|
63
|
-
limit: number,
|
|
64
|
-
): UnreportedToolExecutedEvent[] {
|
|
65
|
-
const db = getTelemetryMainDb();
|
|
66
|
-
const cursorPredicate = afterId
|
|
67
|
-
? or(
|
|
68
|
-
gt(toolInvocations.createdAt, afterCreatedAt),
|
|
69
|
-
and(
|
|
70
|
-
eq(toolInvocations.createdAt, afterCreatedAt),
|
|
71
|
-
gt(toolInvocations.id, afterId),
|
|
72
|
-
),
|
|
73
|
-
)
|
|
74
|
-
: gt(toolInvocations.createdAt, afterCreatedAt);
|
|
75
|
-
return db
|
|
76
|
-
.select({
|
|
77
|
-
id: toolInvocations.id,
|
|
78
|
-
toolName: toolInvocations.toolName,
|
|
79
|
-
decision: toolInvocations.decision,
|
|
80
|
-
durationMs: toolInvocations.durationMs,
|
|
81
|
-
argBytes: toolInvocations.argBytes,
|
|
82
|
-
resultBytes: toolInvocations.resultBytes,
|
|
83
|
-
provider: toolInvocations.provider,
|
|
84
|
-
model: toolInvocations.model,
|
|
85
|
-
inferenceProfile: toolInvocations.inferenceProfile,
|
|
86
|
-
inferenceProfileSource: toolInvocations.inferenceProfileSource,
|
|
87
|
-
conversationId: toolInvocations.conversationId,
|
|
88
|
-
createdAt: toolInvocations.createdAt,
|
|
89
|
-
})
|
|
90
|
-
.from(toolInvocations)
|
|
91
|
-
.where(
|
|
92
|
-
and(
|
|
93
|
-
ne(toolInvocations.decision, "denied"),
|
|
94
|
-
// Legacy pre-migration-278 rows — see the doc comment above.
|
|
95
|
-
isNotNull(toolInvocations.argBytes),
|
|
96
|
-
cursorPredicate,
|
|
97
|
-
),
|
|
98
|
-
)
|
|
99
|
-
.orderBy(asc(toolInvocations.createdAt), asc(toolInvocations.id))
|
|
100
|
-
.limit(limit)
|
|
101
|
-
.all();
|
|
102
|
-
}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { describe, expect, test } from "bun:test";
|
|
2
|
-
|
|
3
|
-
import {
|
|
4
|
-
isDiagnosticsConsentVersionEligible,
|
|
5
|
-
TRACE_COLLECTION_MIN_DIAGNOSTICS_CONSENT_VERSION,
|
|
6
|
-
} from "./trace-collection-policy.js";
|
|
7
|
-
|
|
8
|
-
describe("isDiagnosticsConsentVersionEligible", () => {
|
|
9
|
-
test("the threshold version itself is eligible (>=, inclusive boundary)", () => {
|
|
10
|
-
expect(
|
|
11
|
-
isDiagnosticsConsentVersionEligible(
|
|
12
|
-
TRACE_COLLECTION_MIN_DIAGNOSTICS_CONSENT_VERSION,
|
|
13
|
-
),
|
|
14
|
-
).toBe(true);
|
|
15
|
-
});
|
|
16
|
-
|
|
17
|
-
test("a later version is eligible", () => {
|
|
18
|
-
expect(isDiagnosticsConsentVersionEligible("2999-01-01")).toBe(true);
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
test("an earlier version fails closed", () => {
|
|
22
|
-
expect(isDiagnosticsConsentVersionEligible("2000-01-01")).toBe(false);
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
test("the empty version (never accepted / unversioned default) fails closed", () => {
|
|
26
|
-
expect(isDiagnosticsConsentVersionEligible("")).toBe(false);
|
|
27
|
-
});
|
|
28
|
-
});
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Per-turn trace-collection disclosure gate (daemon side).
|
|
3
|
-
*
|
|
4
|
-
* A "trace" is the full transcript of one assistant turn. Traces are only
|
|
5
|
-
* collected from owners who accepted the diagnostics-sharing consent copy that
|
|
6
|
-
* *discloses* trace collection — identified by its accepted version.
|
|
7
|
-
*
|
|
8
|
-
* This mirrors the cloud's authoritative ingest gate in
|
|
9
|
-
* `mycadet-platform`:
|
|
10
|
-
* - `django/app/core/trace_collection.py` (`is_trace_collection_enabled`)
|
|
11
|
-
* - `config.settings.TRACE_COLLECTION_MIN_DIAGNOSTICS_CONSENT_VERSION`
|
|
12
|
-
*
|
|
13
|
-
* The daemon applies the same `share_diagnostics_accepted_version >= threshold`
|
|
14
|
-
* check the cloud does, so traces for ineligible owners never leave the
|
|
15
|
-
* device. (The cloud would drop them anyway, but checking here keeps the PII
|
|
16
|
-
* local — data minimization.)
|
|
17
|
-
*
|
|
18
|
-
* Keep this constant in lockstep with the cloud setting. Versions are
|
|
19
|
-
* "YYYY-MM-DD" strings, so the lexicographic compare is chronological; ""
|
|
20
|
-
* (never accepted) and older versions fail closed.
|
|
21
|
-
*/
|
|
22
|
-
export const TRACE_COLLECTION_MIN_DIAGNOSTICS_CONSENT_VERSION = "2026-06-18";
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* True iff `version` (the owner's `share_diagnostics_accepted_version`) is at or
|
|
26
|
-
* past the disclosing version. Fails closed for "" / older versions.
|
|
27
|
-
*/
|
|
28
|
-
export function isDiagnosticsConsentVersionEligible(version: string): boolean {
|
|
29
|
-
return version >= TRACE_COLLECTION_MIN_DIAGNOSTICS_CONSENT_VERSION;
|
|
30
|
-
}
|
|
@@ -1,216 +0,0 @@
|
|
|
1
|
-
import { and, asc, eq, gt, or, sql } from "drizzle-orm";
|
|
2
|
-
|
|
3
|
-
import { getDb } from "../persistence/db-connection.js";
|
|
4
|
-
import { realUserTurnContentFilter } from "../persistence/real-user-turn-filter.js";
|
|
5
|
-
import { conversations, messages } from "../persistence/schema/index.js";
|
|
6
|
-
|
|
7
|
-
export interface TurnEvent {
|
|
8
|
-
id: string;
|
|
9
|
-
createdAt: number;
|
|
10
|
-
/**
|
|
11
|
-
* Parent conversation id. Lets downstream analytics group turns by
|
|
12
|
-
* conversation (e.g. avg turns per conversation).
|
|
13
|
-
*/
|
|
14
|
-
conversationId: string;
|
|
15
|
-
/**
|
|
16
|
-
* Conversation type of the parent conversation. Used downstream to
|
|
17
|
-
* distinguish user-initiated turns (`"standard"`) from system-generated
|
|
18
|
-
* prompts in `"background"` / `"scheduled"` conversations so analytics
|
|
19
|
-
* (e.g. DAU) can exclude the latter.
|
|
20
|
-
*/
|
|
21
|
-
conversationType: string;
|
|
22
|
-
/**
|
|
23
|
-
* 1-indexed position of this user turn within the parent conversation,
|
|
24
|
-
* counting only real user turns (tool-result rows persisted with
|
|
25
|
-
* role="user" are excluded — same filter as the eligibility predicate
|
|
26
|
-
* below). The first user turn in a conversation is `1`.
|
|
27
|
-
*
|
|
28
|
-
* Computed via correlated subquery on the same filtered set used for
|
|
29
|
-
* eligibility; this scales with batch size (≤ BATCH_SIZE turns per
|
|
30
|
-
* flush) and uses the `idx_messages_conversation_id` index for the
|
|
31
|
-
* partition lookup.
|
|
32
|
-
*/
|
|
33
|
-
turnIndex: number;
|
|
34
|
-
/**
|
|
35
|
-
* Canonical `InterfaceId` enum value identifying the UI surface the user
|
|
36
|
-
* was interacting from at message-creation time (`"macos"`, `"ios"`,
|
|
37
|
-
* `"cli"`, `"web"`, `"chrome-extension"`, `"slack"`, `"telegram"`,
|
|
38
|
-
* `"whatsapp"`, `"email"`, `"phone"`). Sourced from
|
|
39
|
-
* `messages.metadata.userMessageInterface` (stamped on insert by every
|
|
40
|
-
* `persistUserMessage` path that flows through `TurnChannelContext`).
|
|
41
|
-
*
|
|
42
|
-
* Null when the metadata didn't carry the field — historical rows
|
|
43
|
-
* predating the threading, or system-initiated turns with no inbound
|
|
44
|
-
* client context. Downstream analytics should treat null as
|
|
45
|
-
* `"unknown"`.
|
|
46
|
-
*/
|
|
47
|
-
interfaceId: string | null;
|
|
48
|
-
/**
|
|
49
|
-
* Canonical `ChannelId` enum value identifying the messaging fabric the
|
|
50
|
-
* user message arrived on (`"cadet"` for in-app messaging from
|
|
51
|
-
* macos/ios/web/cli; `"slack"`/`"telegram"`/`"whatsapp"`/`"email"`/
|
|
52
|
-
* `"phone"` for channel-based interfaces). Sourced from
|
|
53
|
-
* `messages.metadata.userMessageChannel`.
|
|
54
|
-
*
|
|
55
|
-
* The 7th `ChannelId` value (`"platform"`) is APNs-push outbound-only
|
|
56
|
-
* and should never appear on a user-message row.
|
|
57
|
-
*/
|
|
58
|
-
channelId: string | null;
|
|
59
|
-
/**
|
|
60
|
-
* Flexible client metadata stashed under `messages.metadata.client` by
|
|
61
|
-
* the HTTP header middleware. Carries optional `browserFamily`,
|
|
62
|
-
* `browserVersion`, `os`, `interfaceVersion` (and is extensible without
|
|
63
|
-
* a migration since it lives inside the JSON column). Null when no
|
|
64
|
-
* client headers were attached.
|
|
65
|
-
*
|
|
66
|
-
* Returned as raw JSON text — the reporter parses + re-shapes for the
|
|
67
|
-
* wire format.
|
|
68
|
-
*/
|
|
69
|
-
clientMetadata: string | null;
|
|
70
|
-
/**
|
|
71
|
-
* Abnormal turn outcome stamped onto `messages.metadata.turnOutcome` at
|
|
72
|
-
* turn end: `"batched"` (coalesced into a later turn's shared response),
|
|
73
|
-
* `"failed"` (loop ended in a non-cancellation error), or `"cancelled"`
|
|
74
|
-
* (user stop / barge-in). Null when the turn replied normally, when the
|
|
75
|
-
* row predates outcome stamping, or when the process died mid-turn
|
|
76
|
-
* before a stamp could land.
|
|
77
|
-
*/
|
|
78
|
-
outcome: string | null;
|
|
79
|
-
/**
|
|
80
|
-
* For `"batched"` turns: `messages.id` of the batch-final turn whose
|
|
81
|
-
* window carries the shared response. Null otherwise.
|
|
82
|
-
*/
|
|
83
|
-
batchedInto: string | null;
|
|
84
|
-
/**
|
|
85
|
-
* For `"failed"` turns: the stable classified error code
|
|
86
|
-
* (`classifyConversationError(...).code`). Null otherwise or when the
|
|
87
|
-
* failure had no classification.
|
|
88
|
-
*/
|
|
89
|
-
failureCode: string | null;
|
|
90
|
-
/**
|
|
91
|
-
* True when this turn was auto-sent on the user's behalf rather than typed
|
|
92
|
-
* by the user (onboarding research prompt, personality `<system-message>`,
|
|
93
|
-
* research corrections, kickoff greetings, legacy pre-chat bootstrap,
|
|
94
|
-
* `[User action on ...]` surface synthetics). Sourced from
|
|
95
|
-
* `messages.metadata.scripted`, stamped by `persistQueuedMessageBody`.
|
|
96
|
-
*
|
|
97
|
-
* Null ONLY for rows persisted before the field existed: scriptedness is
|
|
98
|
-
* unknown for those, which downstream must not conflate with `false`.
|
|
99
|
-
* Activation metrics exclude `true` and let `null` fall back to the legacy
|
|
100
|
-
* trace-text classifier; treating `null` as `false` is the bug this field
|
|
101
|
-
* exists to fix (ANT-10).
|
|
102
|
-
*/
|
|
103
|
-
scripted: boolean | null;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
/**
|
|
107
|
-
* Query user messages (turns) that haven't been reported to telemetry yet.
|
|
108
|
-
* Uses a compound cursor (createdAt + id) for reliable watermarking.
|
|
109
|
-
*
|
|
110
|
-
* Joins to `conversations` so each turn carries its `conversationType`.
|
|
111
|
-
* The inner join is safe because `messages.conversationId` has a
|
|
112
|
-
* not-null FK to `conversations.id` (cascade on delete): every message
|
|
113
|
-
* row has a matching conversation row.
|
|
114
|
-
*
|
|
115
|
-
* `turnIndex` is computed via a correlated subquery counting the real
|
|
116
|
-
* user turns in the same conversation up to and including this row.
|
|
117
|
-
*/
|
|
118
|
-
export function queryUnreportedTurnEvents(
|
|
119
|
-
afterCreatedAt: number,
|
|
120
|
-
afterId: string | undefined,
|
|
121
|
-
limit: number,
|
|
122
|
-
): TurnEvent[] {
|
|
123
|
-
const db = getDb();
|
|
124
|
-
const rows = db
|
|
125
|
-
.select({
|
|
126
|
-
id: messages.id,
|
|
127
|
-
createdAt: messages.createdAt,
|
|
128
|
-
conversationId: messages.conversationId,
|
|
129
|
-
conversationType: conversations.conversationType,
|
|
130
|
-
// 1-indexed turn position within the parent conversation. Counts
|
|
131
|
-
// only real user turns (same filter applied to the outer query).
|
|
132
|
-
// `(created_at, id)` lex-comparison matches the watermark cursor
|
|
133
|
-
// ordering so ties on `created_at` are broken deterministically.
|
|
134
|
-
turnIndex: sql<number>`(
|
|
135
|
-
SELECT COUNT(*) FROM messages AS m2
|
|
136
|
-
WHERE m2.conversation_id = ${messages.conversationId}
|
|
137
|
-
AND m2.role = 'user'
|
|
138
|
-
AND ${realUserTurnContentFilter("m2")}
|
|
139
|
-
AND (m2.created_at < ${messages.createdAt}
|
|
140
|
-
OR (m2.created_at = ${messages.createdAt}
|
|
141
|
-
AND m2.id <= ${messages.id}))
|
|
142
|
-
)`.as("turn_index"),
|
|
143
|
-
// Client attribution: extract from `messages.metadata` JSON.
|
|
144
|
-
// `userMessageInterface` and `userMessageChannel` are stamped on
|
|
145
|
-
// insert by every `persistUserMessage` path that flows through
|
|
146
|
-
// `TurnChannelContext`. `client` is the flexible namespace for
|
|
147
|
-
// browser/os/version metadata attached by HTTP header middleware.
|
|
148
|
-
// `json_extract` returns SQL NULL when the JSON path is absent —
|
|
149
|
-
// exactly the null semantics we want on the wire.
|
|
150
|
-
interfaceId: sql<
|
|
151
|
-
string | null
|
|
152
|
-
>`json_extract(${messages.metadata}, '$.userMessageInterface')`.as(
|
|
153
|
-
"interface_id",
|
|
154
|
-
),
|
|
155
|
-
channelId: sql<
|
|
156
|
-
string | null
|
|
157
|
-
>`json_extract(${messages.metadata}, '$.userMessageChannel')`.as(
|
|
158
|
-
"channel_id",
|
|
159
|
-
),
|
|
160
|
-
clientMetadata: sql<
|
|
161
|
-
string | null
|
|
162
|
-
>`json_extract(${messages.metadata}, '$.client')`.as("client_metadata"),
|
|
163
|
-
// Turn-outcome stamps written at turn end (`stampTurnOutcome`).
|
|
164
|
-
// `json_extract` returns SQL NULL when the path is absent — rows
|
|
165
|
-
// predating outcome stamping and normally-replied turns project null.
|
|
166
|
-
outcome: sql<
|
|
167
|
-
string | null
|
|
168
|
-
>`json_extract(${messages.metadata}, '$.turnOutcome')`.as("outcome"),
|
|
169
|
-
batchedInto: sql<
|
|
170
|
-
string | null
|
|
171
|
-
>`json_extract(${messages.metadata}, '$.turnBatchedInto')`.as(
|
|
172
|
-
"batched_into",
|
|
173
|
-
),
|
|
174
|
-
failureCode: sql<
|
|
175
|
-
string | null
|
|
176
|
-
>`json_extract(${messages.metadata}, '$.turnFailureCode')`.as(
|
|
177
|
-
"failure_code",
|
|
178
|
-
),
|
|
179
|
-
// sqlite's `json_extract` yields 1/0 for JSON booleans, not true/false,
|
|
180
|
-
// and SQL NULL when the path is absent (rows predating the field). Kept
|
|
181
|
-
// numeric here and converted below. A raw pass-through would put `1`
|
|
182
|
-
// on the wire, which the cloud's BooleanField would reject.
|
|
183
|
-
scripted: sql<
|
|
184
|
-
number | null
|
|
185
|
-
>`json_extract(${messages.metadata}, '$.scripted')`.as("scripted"),
|
|
186
|
-
})
|
|
187
|
-
.from(messages)
|
|
188
|
-
.innerJoin(conversations, eq(messages.conversationId, conversations.id))
|
|
189
|
-
.where(
|
|
190
|
-
and(
|
|
191
|
-
eq(messages.role, "user"),
|
|
192
|
-
realUserTurnContentFilter("messages"),
|
|
193
|
-
afterId
|
|
194
|
-
? or(
|
|
195
|
-
gt(messages.createdAt, afterCreatedAt),
|
|
196
|
-
and(
|
|
197
|
-
eq(messages.createdAt, afterCreatedAt),
|
|
198
|
-
gt(messages.id, afterId),
|
|
199
|
-
),
|
|
200
|
-
)
|
|
201
|
-
: gt(messages.createdAt, afterCreatedAt),
|
|
202
|
-
),
|
|
203
|
-
)
|
|
204
|
-
.orderBy(asc(messages.createdAt), asc(messages.id))
|
|
205
|
-
.limit(limit)
|
|
206
|
-
.all();
|
|
207
|
-
// Narrow sqlite's 1/0/NULL to boolean/null. Only a literal 1 or 0 is a real
|
|
208
|
-
// stamp; anything else (SQL NULL from a missing key, or a junk value on a
|
|
209
|
-
// row written by some other path) reports UNKNOWN rather than being coerced.
|
|
210
|
-
// Coercing to `false` would assert "the user typed this" on no evidence,
|
|
211
|
-
// which downstream trusts and cannot fall back from.
|
|
212
|
-
return rows.map((row) => ({
|
|
213
|
-
...row,
|
|
214
|
-
scripted: row.scripted === 1 ? true : row.scripted === 0 ? false : null,
|
|
215
|
-
}));
|
|
216
|
-
}
|