@mycadet/assistant 0.12.9 → 0.12.11
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/node_modules/@mycadet/ces-client/node_modules/@mycadet/service-contracts/src/__tests__/ingress.test.ts +8 -8
- package/node_modules/@mycadet/ces-client/node_modules/@mycadet/service-contracts/src/ingress.ts +1 -1
- package/node_modules/@mycadet/ces-client/src/http-credentials.ts +18 -1
- package/node_modules/@mycadet/gateway-client/node_modules/@mycadet/service-contracts/src/__tests__/ingress.test.ts +8 -8
- package/node_modules/@mycadet/gateway-client/node_modules/@mycadet/service-contracts/src/ingress.ts +1 -1
- package/node_modules/@mycadet/service-contracts/src/__tests__/ingress.test.ts +8 -8
- package/node_modules/@mycadet/service-contracts/src/ingress.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 +87 -404
- 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 +25 -32
- 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 +72 -298
- 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 +49 -706
- 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,282 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared sample telemetry events for the wire-contract test suites
|
|
3
|
-
* (`types.test.ts` and `telemetry-wire-validation.test.ts`).
|
|
4
|
-
*
|
|
5
|
-
* `wireEventSamples` holds exactly one daemon-typed, wire-valid sample per
|
|
6
|
-
* generated wire event type — when the wire contract gains an event type,
|
|
7
|
-
* add its sample here and both suites pick it up. The daemon-type
|
|
8
|
-
* annotations are themselves part of the contract test: they compile-check
|
|
9
|
-
* that realistic daemon values inhabit the hand-written override types.
|
|
10
|
-
*
|
|
11
|
-
* Imported by `*.test.ts` files only — never by the test preload — so
|
|
12
|
-
* importing daemon types from `src/` is safe (AGENTS.md "Test machinery
|
|
13
|
-
* isolation" scopes its no-`src/` rule to preload-time machinery). The
|
|
14
|
-
* imports are type-only; this module has no runtime side effects.
|
|
15
|
-
*/
|
|
16
|
-
import type {
|
|
17
|
-
AuthFallbackTelemetryEvent,
|
|
18
|
-
AvatarChangedTelemetryEvent,
|
|
19
|
-
ConfigSettingTelemetryEvent,
|
|
20
|
-
LifecycleTelemetryEvent,
|
|
21
|
-
LlmUsageTelemetryEvent,
|
|
22
|
-
OnboardingResearchTelemetryEvent,
|
|
23
|
-
OnboardingTelemetryEvent,
|
|
24
|
-
SkillLoadedTelemetryEvent,
|
|
25
|
-
ToolExecutedTelemetryEvent,
|
|
26
|
-
TurnTelemetryEvent,
|
|
27
|
-
TurnTrace,
|
|
28
|
-
WatchdogTelemetryEvent,
|
|
29
|
-
} from "../types.js";
|
|
30
|
-
|
|
31
|
-
const RECORDED_AT = 1_750_000_000_000;
|
|
32
|
-
|
|
33
|
-
const llmUsage: LlmUsageTelemetryEvent = {
|
|
34
|
-
type: "llm_usage",
|
|
35
|
-
daemon_event_id: "evt-llm-usage-001",
|
|
36
|
-
recorded_at: RECORDED_AT,
|
|
37
|
-
assistant_version: "1.2.3",
|
|
38
|
-
conversation_id: "conv-xyz",
|
|
39
|
-
conversation_type: "standard",
|
|
40
|
-
// Zero is legitimate here (wire bound is min(0)) — the wire schema must
|
|
41
|
-
// not reject it.
|
|
42
|
-
turn_index: 0,
|
|
43
|
-
parent_conversation_id: "conv-parent",
|
|
44
|
-
// Zero is legitimate (wire bound is min(0)): a subagent can be spawned
|
|
45
|
-
// before the parent's first real user turn.
|
|
46
|
-
parent_turn_index: 0,
|
|
47
|
-
subagent_role: "advisor",
|
|
48
|
-
subagent_spawn_mode: "advisor_consult",
|
|
49
|
-
provider: "anthropic",
|
|
50
|
-
model: "claude-fable-5",
|
|
51
|
-
input_tokens: 1200,
|
|
52
|
-
output_tokens: 340,
|
|
53
|
-
cache_creation_input_tokens: 256,
|
|
54
|
-
cache_read_input_tokens: 1024,
|
|
55
|
-
llm_call_count: 3,
|
|
56
|
-
raw_usage: {
|
|
57
|
-
input_tokens: 1200,
|
|
58
|
-
cache_creation: { ephemeral_5m_input_tokens: 256 },
|
|
59
|
-
},
|
|
60
|
-
actor: "user",
|
|
61
|
-
llm_call_site: "mainAgent",
|
|
62
|
-
inference_profile: "balanced",
|
|
63
|
-
inference_profile_source: "active",
|
|
64
|
-
cost: 0.0123,
|
|
65
|
-
};
|
|
66
|
-
|
|
67
|
-
const trace: TurnTrace = {
|
|
68
|
-
schema_version: 3,
|
|
69
|
-
messages: [
|
|
70
|
-
{
|
|
71
|
-
id: "msg-1",
|
|
72
|
-
role: "user",
|
|
73
|
-
created_at: RECORDED_AT - 5_000,
|
|
74
|
-
content: [{ type: "text", text: "What's on my calendar today?" }],
|
|
75
|
-
model: null,
|
|
76
|
-
},
|
|
77
|
-
{
|
|
78
|
-
id: "msg-2",
|
|
79
|
-
role: "assistant",
|
|
80
|
-
created_at: RECORDED_AT - 1_000,
|
|
81
|
-
content: [{ type: "text", text: "You have two meetings." }],
|
|
82
|
-
model: "claude-fable-5",
|
|
83
|
-
},
|
|
84
|
-
],
|
|
85
|
-
tool_calls: [
|
|
86
|
-
{
|
|
87
|
-
id: "inv-1",
|
|
88
|
-
tool_name: "bash",
|
|
89
|
-
input: { command: "ls" },
|
|
90
|
-
result: "ok",
|
|
91
|
-
decision: "allow",
|
|
92
|
-
duration_ms: 42,
|
|
93
|
-
created_at: RECORDED_AT - 3_000,
|
|
94
|
-
},
|
|
95
|
-
],
|
|
96
|
-
system_prompt: "You are a helpful assistant.",
|
|
97
|
-
tool_definitions: [
|
|
98
|
-
{
|
|
99
|
-
name: "bash",
|
|
100
|
-
description: "Run a shell command",
|
|
101
|
-
input_schema: { type: "object", properties: {} },
|
|
102
|
-
},
|
|
103
|
-
],
|
|
104
|
-
};
|
|
105
|
-
|
|
106
|
-
/** Exported separately: both suites build negative `client`-bag cases on it. */
|
|
107
|
-
export const turnEventSample: TurnTelemetryEvent = {
|
|
108
|
-
type: "turn",
|
|
109
|
-
daemon_event_id: "evt-turn-001",
|
|
110
|
-
recorded_at: RECORDED_AT,
|
|
111
|
-
assistant_version: "1.2.3",
|
|
112
|
-
conversation_id: "conv-xyz",
|
|
113
|
-
conversation_type: "standard",
|
|
114
|
-
turn_index: 1,
|
|
115
|
-
interface_id: "web",
|
|
116
|
-
channel_id: "cadet",
|
|
117
|
-
client: {
|
|
118
|
-
browser_family: "chrome",
|
|
119
|
-
browser_version: "124",
|
|
120
|
-
os: "macos",
|
|
121
|
-
interface_version: "0.8.2",
|
|
122
|
-
},
|
|
123
|
-
outcome: "failed",
|
|
124
|
-
failure_code: "PROVIDER_RATE_LIMIT",
|
|
125
|
-
trace,
|
|
126
|
-
};
|
|
127
|
-
|
|
128
|
-
const lifecycle: LifecycleTelemetryEvent = {
|
|
129
|
-
type: "lifecycle",
|
|
130
|
-
daemon_event_id: "evt-lifecycle-001",
|
|
131
|
-
recorded_at: RECORDED_AT,
|
|
132
|
-
assistant_version: "1.2.3",
|
|
133
|
-
event_name: "app_open",
|
|
134
|
-
};
|
|
135
|
-
|
|
136
|
-
const onboarding: OnboardingTelemetryEvent = {
|
|
137
|
-
type: "onboarding",
|
|
138
|
-
daemon_event_id: "evt-onboarding-001",
|
|
139
|
-
recorded_at: RECORDED_AT,
|
|
140
|
-
assistant_version: "1.2.3",
|
|
141
|
-
screen: "tools",
|
|
142
|
-
tools: ["gmail", "calendar"],
|
|
143
|
-
tasks: ["email-triage"],
|
|
144
|
-
tone: "friendly",
|
|
145
|
-
google_connected: true,
|
|
146
|
-
google_scopes: ["https://www.googleapis.com/auth/gmail.readonly"],
|
|
147
|
-
ab_variant: "control",
|
|
148
|
-
session_id: "sess-123",
|
|
149
|
-
step_name: "select-tools",
|
|
150
|
-
step_index: 2,
|
|
151
|
-
completed_at: "2026-07-13T00:00:00Z",
|
|
152
|
-
funnel_version: "v2",
|
|
153
|
-
user_id: "user-123",
|
|
154
|
-
};
|
|
155
|
-
|
|
156
|
-
const authFallback: AuthFallbackTelemetryEvent = {
|
|
157
|
-
type: "auth_fallback",
|
|
158
|
-
daemon_event_id: "evt-auth-fallback-001",
|
|
159
|
-
recorded_at: RECORDED_AT,
|
|
160
|
-
assistant_version: "1.2.3",
|
|
161
|
-
guard: "edge",
|
|
162
|
-
path: "/v1/conversations",
|
|
163
|
-
failure_kind: "missing_authorization",
|
|
164
|
-
count: 7,
|
|
165
|
-
window_start: RECORDED_AT - 300_000,
|
|
166
|
-
window_end: RECORDED_AT,
|
|
167
|
-
};
|
|
168
|
-
|
|
169
|
-
const toolExecuted: ToolExecutedTelemetryEvent = {
|
|
170
|
-
type: "tool_executed",
|
|
171
|
-
daemon_event_id: "evt-tool-executed-001",
|
|
172
|
-
recorded_at: RECORDED_AT,
|
|
173
|
-
assistant_version: "1.2.3",
|
|
174
|
-
provider: "anthropic",
|
|
175
|
-
model: "claude-fable-5",
|
|
176
|
-
inference_profile: "balanced",
|
|
177
|
-
inference_profile_source: "call_site",
|
|
178
|
-
tool_name: "bash",
|
|
179
|
-
status: "fulfilled",
|
|
180
|
-
duration_ms: 42,
|
|
181
|
-
arg_bytes: 128,
|
|
182
|
-
result_bytes: 2048,
|
|
183
|
-
conversation_id: "conv-xyz",
|
|
184
|
-
};
|
|
185
|
-
|
|
186
|
-
const skillLoaded: SkillLoadedTelemetryEvent = {
|
|
187
|
-
type: "skill_loaded",
|
|
188
|
-
daemon_event_id: "evt-skill-loaded-001",
|
|
189
|
-
recorded_at: RECORDED_AT,
|
|
190
|
-
assistant_version: "1.2.3",
|
|
191
|
-
provider: "anthropic",
|
|
192
|
-
model: "claude-fable-5",
|
|
193
|
-
inference_profile: "balanced",
|
|
194
|
-
inference_profile_source: "conversation",
|
|
195
|
-
skill_name: "plugin-builder",
|
|
196
|
-
skill_updated_at: "2026-06-01T00:00:00Z",
|
|
197
|
-
conversation_id: "conv-xyz",
|
|
198
|
-
};
|
|
199
|
-
|
|
200
|
-
const watchdog: WatchdogTelemetryEvent = {
|
|
201
|
-
type: "watchdog",
|
|
202
|
-
daemon_event_id: "evt-watchdog-001",
|
|
203
|
-
recorded_at: RECORDED_AT,
|
|
204
|
-
assistant_version: "1.2.3",
|
|
205
|
-
check_name: "event_loop_blocked",
|
|
206
|
-
value: 1200,
|
|
207
|
-
detail: { reason: "gc", blocked_ms: 1200 },
|
|
208
|
-
};
|
|
209
|
-
|
|
210
|
-
const configSetting: ConfigSettingTelemetryEvent = {
|
|
211
|
-
type: "config_setting",
|
|
212
|
-
daemon_event_id: "evt-config-setting-001",
|
|
213
|
-
recorded_at: RECORDED_AT,
|
|
214
|
-
assistant_version: "1.2.3",
|
|
215
|
-
config_key: "memory.enabled",
|
|
216
|
-
config_value: "true",
|
|
217
|
-
};
|
|
218
|
-
|
|
219
|
-
/**
|
|
220
|
-
* `onboarding_research` sample. The daemon's type is richer than the wire
|
|
221
|
-
* (structured `claims`/`suggestions`, closed `status`), so it is an `Overrides`
|
|
222
|
-
* entry; the wire schema (opaque JSON arrays, size-bounded) still accepts it.
|
|
223
|
-
*/
|
|
224
|
-
export const onboardingResearch: OnboardingResearchTelemetryEvent = {
|
|
225
|
-
type: "onboarding_research",
|
|
226
|
-
daemon_event_id: "evt-onboarding-research-1",
|
|
227
|
-
recorded_at: RECORDED_AT,
|
|
228
|
-
assistant_version: "1.2.3",
|
|
229
|
-
conversation_id: "conv-xyz",
|
|
230
|
-
status: "done",
|
|
231
|
-
claims: [
|
|
232
|
-
{
|
|
233
|
-
claim: "Works on developer tooling",
|
|
234
|
-
confidence: "confident",
|
|
235
|
-
sources: ["https://example.com/profile"],
|
|
236
|
-
},
|
|
237
|
-
],
|
|
238
|
-
claim_count: 1,
|
|
239
|
-
claims_confident: 1,
|
|
240
|
-
claims_maybe: 0,
|
|
241
|
-
claims_guessing: 0,
|
|
242
|
-
suggestions: [
|
|
243
|
-
{
|
|
244
|
-
suggestion: "Set up email triage",
|
|
245
|
-
prompt: "Help me triage my inbox",
|
|
246
|
-
},
|
|
247
|
-
],
|
|
248
|
-
suggestion_count: 1,
|
|
249
|
-
plugins: ["gmail"],
|
|
250
|
-
installed_plugins: ["gmail", "calendar"],
|
|
251
|
-
};
|
|
252
|
-
|
|
253
|
-
const avatarChanged: AvatarChangedTelemetryEvent = {
|
|
254
|
-
type: "avatar_changed",
|
|
255
|
-
daemon_event_id: "evt-avatar-changed-001",
|
|
256
|
-
recorded_at: RECORDED_AT,
|
|
257
|
-
assistant_version: "1.2.3",
|
|
258
|
-
action: "set_character",
|
|
259
|
-
kind: "character",
|
|
260
|
-
previous_kind: "none",
|
|
261
|
-
body_shape: "blob",
|
|
262
|
-
eye_style: "curious",
|
|
263
|
-
color: "green",
|
|
264
|
-
accent_hex: "#4caf50",
|
|
265
|
-
accent_source: "palette",
|
|
266
|
-
client_os: "macos",
|
|
267
|
-
};
|
|
268
|
-
|
|
269
|
-
/** One daemon-typed, wire-valid sample per generated wire event type. */
|
|
270
|
-
export const wireEventSamples = [
|
|
271
|
-
llmUsage,
|
|
272
|
-
turnEventSample,
|
|
273
|
-
lifecycle,
|
|
274
|
-
onboarding,
|
|
275
|
-
authFallback,
|
|
276
|
-
toolExecuted,
|
|
277
|
-
skillLoaded,
|
|
278
|
-
watchdog,
|
|
279
|
-
configSetting,
|
|
280
|
-
onboardingResearch,
|
|
281
|
-
avatarChanged,
|
|
282
|
-
] as const;
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
import { beforeEach, describe, expect, test } from "bun:test";
|
|
2
|
-
|
|
3
|
-
import { APP_VERSION } from "../../version.js";
|
|
4
|
-
import { recordWatchdogEvent } from "../watchdog-events-store.js";
|
|
5
|
-
import {
|
|
6
|
-
pendingOutboxPayloads,
|
|
7
|
-
pendingOutboxRows,
|
|
8
|
-
resetOutboxTable,
|
|
9
|
-
setShareAnalytics,
|
|
10
|
-
} from "./outbox-test-harness.js";
|
|
11
|
-
|
|
12
|
-
describe("watchdog-events-store", () => {
|
|
13
|
-
beforeEach(() => {
|
|
14
|
-
setShareAnalytics(true);
|
|
15
|
-
resetOutboxTable();
|
|
16
|
-
});
|
|
17
|
-
|
|
18
|
-
test("honors the share_analytics opt-out (records nothing)", () => {
|
|
19
|
-
setShareAnalytics(false);
|
|
20
|
-
recordWatchdogEvent({ checkName: "event_loop_blocked", value: 60000 });
|
|
21
|
-
expect(pendingOutboxRows("watchdog", 10)).toHaveLength(0);
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
test("records the full wire event, with detail as a nested object", () => {
|
|
25
|
-
recordWatchdogEvent({
|
|
26
|
-
checkName: "event_loop_blocked",
|
|
27
|
-
value: 12345,
|
|
28
|
-
detail: { reason: "no_bytes_60s", threshold_ms: 5000 },
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
const rows = pendingOutboxRows("watchdog", 10);
|
|
32
|
-
expect(rows).toHaveLength(1);
|
|
33
|
-
const row = rows[0]!;
|
|
34
|
-
expect(row.id).toBeString();
|
|
35
|
-
expect(row.createdAt).toBeGreaterThan(0);
|
|
36
|
-
expect(JSON.parse(row.payload)).toEqual({
|
|
37
|
-
type: "watchdog",
|
|
38
|
-
daemon_event_id: row.id,
|
|
39
|
-
recorded_at: row.createdAt,
|
|
40
|
-
check_name: "event_loop_blocked",
|
|
41
|
-
value: 12345,
|
|
42
|
-
detail: { reason: "no_bytes_60s", threshold_ms: 5000 },
|
|
43
|
-
assistant_version: APP_VERSION,
|
|
44
|
-
});
|
|
45
|
-
});
|
|
46
|
-
|
|
47
|
-
test("omitted value and detail persist as null", () => {
|
|
48
|
-
recordWatchdogEvent({ checkName: "stream_idle" });
|
|
49
|
-
|
|
50
|
-
const payloads = pendingOutboxPayloads("watchdog");
|
|
51
|
-
expect(payloads).toHaveLength(1);
|
|
52
|
-
expect(payloads[0]).toMatchObject({
|
|
53
|
-
check_name: "stream_idle",
|
|
54
|
-
value: null,
|
|
55
|
-
detail: null,
|
|
56
|
-
});
|
|
57
|
-
});
|
|
58
|
-
|
|
59
|
-
test("explicit null value and detail persist as null", () => {
|
|
60
|
-
recordWatchdogEvent({
|
|
61
|
-
checkName: "restart",
|
|
62
|
-
value: null,
|
|
63
|
-
detail: null,
|
|
64
|
-
});
|
|
65
|
-
|
|
66
|
-
const payloads = pendingOutboxPayloads("watchdog");
|
|
67
|
-
expect(payloads).toHaveLength(1);
|
|
68
|
-
expect(payloads[0]?.value).toBeNull();
|
|
69
|
-
expect(payloads[0]?.detail).toBeNull();
|
|
70
|
-
});
|
|
71
|
-
});
|
|
@@ -1,172 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Activation funnel vocabulary — the single source of truth for the
|
|
3
|
-
* activation-rail telemetry funnel.
|
|
4
|
-
*
|
|
5
|
-
* The activation rail emits milestone ("funnel") events into the existing
|
|
6
|
-
* onboarding telemetry substrate (`type: "onboarding"`). This module defines
|
|
7
|
-
* the step vocabulary (step_name → step_index), the funnel version, the
|
|
8
|
-
* cohort arm tag, and the deterministic `daemon_event_id` used for dbt-side
|
|
9
|
-
* dedup. Downstream PRs (store, reporter, emit handler, turn hook) import
|
|
10
|
-
* from here so the vocabulary is never duplicated.
|
|
11
|
-
*/
|
|
12
|
-
|
|
13
|
-
/** Funnel version stamped on every activation event (per JARVIS-1033). */
|
|
14
|
-
export const ACTIVATION_FUNNEL_VERSION = "activation_v1_2026_06";
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* Filename of the bootstrap template that drives the activation rail. The web
|
|
18
|
-
* prechat-context sets this as `onboardingContext.bootstrapTemplate` (mirrored
|
|
19
|
-
* there as `ACTIVATION_RAIL_BOOTSTRAP_TEMPLATE`); the daemon recognizes it to
|
|
20
|
-
* mark the conversation as an activation session. Single source of truth on the
|
|
21
|
-
* daemon side so the literal isn't duplicated across modules.
|
|
22
|
-
*/
|
|
23
|
-
export const ACTIVATION_RAIL_BOOTSTRAP_TEMPLATE =
|
|
24
|
-
"BOOTSTRAP-ACTIVATION-RAIL.md";
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* Cohort arm tag for Stream-A emission. The daemon only runs the rail for
|
|
28
|
-
* treatment users, so activation events are tagged with the treatment arm
|
|
29
|
-
* name ("variant-a"), mirroring `pre-chat-onboarding-experiment-2026-06-06`.
|
|
30
|
-
* Stream B later threads the assigned arm in place of this constant.
|
|
31
|
-
*/
|
|
32
|
-
export const ACTIVATION_AB_VARIANT = "variant-a";
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* Activation funnel steps keyed by short id. `stepName` is the wire value
|
|
36
|
-
* sent to telemetry; `stepIndex` is the 1-based ordinal position. This is
|
|
37
|
-
* the single source of truth for the step vocabulary.
|
|
38
|
-
*/
|
|
39
|
-
export const ACTIVATION_STEPS = {
|
|
40
|
-
moment1: { stepName: "activation_moment_1_complete", stepIndex: 1 },
|
|
41
|
-
moment2: { stepName: "activation_moment_2_complete", stepIndex: 2 },
|
|
42
|
-
moment3: { stepName: "activation_moment_3_complete", stepIndex: 3 },
|
|
43
|
-
firstWowExecuted: { stepName: "activation_first_wow_executed", stepIndex: 4 },
|
|
44
|
-
firstWowInteracted: {
|
|
45
|
-
stepName: "activation_first_wow_interacted",
|
|
46
|
-
stepIndex: 5,
|
|
47
|
-
},
|
|
48
|
-
} as const;
|
|
49
|
-
|
|
50
|
-
/** Union of valid activation step names. */
|
|
51
|
-
export type ActivationStepName =
|
|
52
|
-
(typeof ACTIVATION_STEPS)[keyof typeof ACTIVATION_STEPS]["stepName"];
|
|
53
|
-
|
|
54
|
-
/** step_name → step_index, derived once from the vocabulary. */
|
|
55
|
-
const STEP_INDEX_BY_NAME = new Map<ActivationStepName, number>(
|
|
56
|
-
Object.values(ACTIVATION_STEPS).map((step) => [
|
|
57
|
-
step.stepName,
|
|
58
|
-
step.stepIndex,
|
|
59
|
-
]),
|
|
60
|
-
);
|
|
61
|
-
|
|
62
|
-
/** Type guard: is `value` one of the known activation step names? */
|
|
63
|
-
export function isActivationStepName(
|
|
64
|
-
value: string,
|
|
65
|
-
): value is ActivationStepName {
|
|
66
|
-
return STEP_INDEX_BY_NAME.has(value as ActivationStepName);
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
/**
|
|
70
|
-
* Model-facing activation-moment tokens. These are the values the model passes
|
|
71
|
-
* as the optional `ui_show` `activation_moment` tag; the daemon maps each token
|
|
72
|
-
* to its `ACTIVATION_STEPS[...].stepName` and records the milestone when the
|
|
73
|
-
* tagged surface is committed. Kept short/stable so the schema enum is friendly
|
|
74
|
-
* for the model — the canonical wire vocabulary stays `ActivationStepName`.
|
|
75
|
-
*/
|
|
76
|
-
export type ActivationMomentParam =
|
|
77
|
-
| "moment_1"
|
|
78
|
-
| "moment_2"
|
|
79
|
-
| "moment_3"
|
|
80
|
-
| "first_wow_executed"
|
|
81
|
-
| "first_wow_interacted";
|
|
82
|
-
|
|
83
|
-
/**
|
|
84
|
-
* `ActivationMomentParam` token → canonical `ActivationStepName`, derived from
|
|
85
|
-
* `ACTIVATION_STEPS` so the vocabulary stays single-sourced. The token order
|
|
86
|
-
* mirrors `ACTIVATION_STEPS` (indices 1–5).
|
|
87
|
-
*/
|
|
88
|
-
const STEP_NAME_BY_MOMENT_PARAM = {
|
|
89
|
-
moment_1: ACTIVATION_STEPS.moment1.stepName,
|
|
90
|
-
moment_2: ACTIVATION_STEPS.moment2.stepName,
|
|
91
|
-
moment_3: ACTIVATION_STEPS.moment3.stepName,
|
|
92
|
-
first_wow_executed: ACTIVATION_STEPS.firstWowExecuted.stepName,
|
|
93
|
-
first_wow_interacted: ACTIVATION_STEPS.firstWowInteracted.stepName,
|
|
94
|
-
} as const satisfies Record<ActivationMomentParam, ActivationStepName>;
|
|
95
|
-
|
|
96
|
-
/** The five valid model-facing moment tokens (e.g. for a schema enum). */
|
|
97
|
-
export const ACTIVATION_MOMENT_PARAMS = Object.keys(
|
|
98
|
-
STEP_NAME_BY_MOMENT_PARAM,
|
|
99
|
-
) as ActivationMomentParam[];
|
|
100
|
-
|
|
101
|
-
/** Type guard: is `value` one of the model-facing activation-moment tokens? */
|
|
102
|
-
export function isActivationMomentParam(
|
|
103
|
-
value: string,
|
|
104
|
-
): value is ActivationMomentParam {
|
|
105
|
-
return Object.prototype.hasOwnProperty.call(STEP_NAME_BY_MOMENT_PARAM, value);
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
/** Map a model-facing moment token to its canonical activation step name. */
|
|
109
|
-
export function activationStepNameForMomentParam(
|
|
110
|
-
param: ActivationMomentParam,
|
|
111
|
-
): ActivationStepName {
|
|
112
|
-
return STEP_NAME_BY_MOMENT_PARAM[param];
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
/**
|
|
116
|
-
* When each tagged moment is emitted relative to its `ui_show` surface:
|
|
117
|
-
* - `"show"` — at surface render time. `first_wow_executed` is an *execution*
|
|
118
|
-
* signal: the rail's result/`work_result` surface is display-only and may
|
|
119
|
-
* receive no user commit, so a commit-time emit would never fire (and if the
|
|
120
|
-
* card has an action, deferring to the click would conflate "executed" with
|
|
121
|
-
* "interacted" and corrupt funnel timing).
|
|
122
|
-
* - `"commit"` — on user commit/interaction. The other four moments represent
|
|
123
|
-
* resolving an intake, picking an offer/task, or clicking a result action —
|
|
124
|
-
* all genuine commit events.
|
|
125
|
-
*/
|
|
126
|
-
export const ACTIVATION_MOMENT_EMIT_AT = {
|
|
127
|
-
moment_1: "commit",
|
|
128
|
-
moment_2: "commit",
|
|
129
|
-
moment_3: "commit",
|
|
130
|
-
first_wow_executed: "show",
|
|
131
|
-
first_wow_interacted: "commit",
|
|
132
|
-
} as const satisfies Record<ActivationMomentParam, "show" | "commit">;
|
|
133
|
-
|
|
134
|
-
/** True when the moment records at surface-render time rather than on commit. */
|
|
135
|
-
export function activationMomentEmitsAtShow(
|
|
136
|
-
param: ActivationMomentParam,
|
|
137
|
-
): boolean {
|
|
138
|
-
return ACTIVATION_MOMENT_EMIT_AT[param] === "show";
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
/** Look up the 1-based funnel index for a step name. */
|
|
142
|
-
export function activationStepIndex(stepName: ActivationStepName): number {
|
|
143
|
-
// Non-null: ActivationStepName is derived from ACTIVATION_STEPS, so the map
|
|
144
|
-
// always contains the key.
|
|
145
|
-
return STEP_INDEX_BY_NAME.get(stepName)!;
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
/**
|
|
149
|
-
* Deterministic `daemon_event_id` for an activation event. Keying on
|
|
150
|
-
* `${funnel_version}:${sessionId}:${stepName}` lets the existing dbt
|
|
151
|
-
* dedup (keyed on `daemon_event_id`, earliest-wins) collapse a moment that
|
|
152
|
-
* fires more than once into a single row.
|
|
153
|
-
*
|
|
154
|
-
* `funnelVersion` defaults to the current `ACTIVATION_FUNNEL_VERSION` but
|
|
155
|
-
* callers that have a per-row stored version (e.g. the telemetry reporter
|
|
156
|
-
* flushing rows recorded under an older version) MUST pass the row's own
|
|
157
|
-
* `funnel_version` so the id stays stable across a version bump — otherwise
|
|
158
|
-
* queued/offline v1 rows would be keyed with the new binary's version and
|
|
159
|
-
* stop collapsing with already-ingested v1 rows from the same session.
|
|
160
|
-
*
|
|
161
|
-
* `stepName` is a plain string rather than an `ActivationStepName`: every
|
|
162
|
-
* funnel riding the onboarding substrate shares this keying (the live-voice
|
|
163
|
-
* session funnel is the other one today), and the dedup property depends only
|
|
164
|
-
* on the triple being stable per row, not on which funnel produced it.
|
|
165
|
-
*/
|
|
166
|
-
export function buildActivationDaemonEventId(
|
|
167
|
-
sessionId: string,
|
|
168
|
-
stepName: string,
|
|
169
|
-
funnelVersion: string = ACTIVATION_FUNNEL_VERSION,
|
|
170
|
-
): string {
|
|
171
|
-
return `${funnelVersion}:${sessionId}:${stepName}`;
|
|
172
|
-
}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { recordTelemetryEvent } from "./telemetry-events-outbox.js";
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Server-side bounds from the cloud `ConfigSettingTelemetryEventSerializer`.
|
|
5
|
-
* Values are clamped at record time so an oversize pair degrades to a
|
|
6
|
-
* truncated event instead of a per-event ingest rejection.
|
|
7
|
-
*/
|
|
8
|
-
const MAX_CONFIG_KEY_CHARS = 128;
|
|
9
|
-
const MAX_CONFIG_VALUE_CHARS = 256;
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* Input for one `config_setting` telemetry event. Metadata only — emitters
|
|
13
|
-
* must record an explicit allowlist of non-sensitive settings, never
|
|
14
|
-
* free-form config content, paths, or credentials.
|
|
15
|
-
*/
|
|
16
|
-
export interface ConfigSettingEventRecord {
|
|
17
|
-
/** Dotted config path, e.g. `"memory.enabled"`. */
|
|
18
|
-
configKey: string;
|
|
19
|
-
/** Effective value rendered as a string (`"true"` / `"false"` for booleans). */
|
|
20
|
-
configValue: string;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* Record a `config_setting` telemetry event, enqueued on the
|
|
25
|
-
* `telemetry_events` outbox. Consent gating and degraded-mode behavior are
|
|
26
|
-
* `recordTelemetryEvent`'s. Returns whether the event was persisted, so a
|
|
27
|
-
* caller with its own dedupe memo (config-setting-snapshot.ts) only advances
|
|
28
|
-
* the memo on a real write and keeps retrying while consent is off or the
|
|
29
|
-
* telemetry DB is unavailable.
|
|
30
|
-
*/
|
|
31
|
-
export function recordConfigSettingEvent(
|
|
32
|
-
record: ConfigSettingEventRecord,
|
|
33
|
-
): boolean {
|
|
34
|
-
return (
|
|
35
|
-
recordTelemetryEvent("config_setting", {
|
|
36
|
-
config_key: record.configKey.slice(0, MAX_CONFIG_KEY_CHARS),
|
|
37
|
-
config_value: record.configValue.slice(0, MAX_CONFIG_VALUE_CHARS),
|
|
38
|
-
}) !== null
|
|
39
|
-
);
|
|
40
|
-
}
|