visionclaw 0.1.209 → 0.1.210-beta.2
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/dist/agent/backup.d.ts +10 -1
- package/dist/agent/backup.d.ts.map +1 -1
- package/dist/agent/backup.js +24 -1
- package/dist/agent/backup.js.map +1 -1
- package/dist/agent/browser-launcher.d.ts.map +1 -1
- package/dist/agent/browser-launcher.js +22 -20
- package/dist/agent/browser-launcher.js.map +1 -1
- package/dist/agent/context.d.ts +1 -1
- package/dist/agent/context.d.ts.map +1 -1
- package/dist/agent/context.js +28 -24
- package/dist/agent/context.js.map +1 -1
- package/dist/agent/engines/claude/session-browser-policy.d.ts.map +1 -1
- package/dist/agent/engines/claude/session-browser-policy.js +2 -16
- package/dist/agent/engines/claude/session-browser-policy.js.map +1 -1
- package/dist/agent/engines/claude/session.d.ts.map +1 -1
- package/dist/agent/engines/claude/session.js +6 -9
- package/dist/agent/engines/claude/session.js.map +1 -1
- package/dist/agent/engines/pi/tools.d.ts +7 -0
- package/dist/agent/engines/pi/tools.d.ts.map +1 -1
- package/dist/agent/engines/pi/tools.js +5 -1
- package/dist/agent/engines/pi/tools.js.map +1 -1
- package/dist/agent/engines/pi-coding/session.d.ts.map +1 -1
- package/dist/agent/engines/pi-coding/session.js +2 -0
- package/dist/agent/engines/pi-coding/session.js.map +1 -1
- package/dist/agent/engines/pi-coding/tools.d.ts +1 -0
- package/dist/agent/engines/pi-coding/tools.d.ts.map +1 -1
- package/dist/agent/engines/pi-coding/tools.js.map +1 -1
- package/dist/agent/gather-context.d.ts.map +1 -1
- package/dist/agent/gather-context.js +3 -1
- package/dist/agent/gather-context.js.map +1 -1
- package/dist/agent/heartbeat-manager.d.ts +3 -1
- package/dist/agent/heartbeat-manager.d.ts.map +1 -1
- package/dist/agent/heartbeat-manager.js +21 -0
- package/dist/agent/heartbeat-manager.js.map +1 -1
- package/dist/agent/interrupt-handler.d.ts.map +1 -1
- package/dist/agent/interrupt-handler.js +7 -1
- package/dist/agent/interrupt-handler.js.map +1 -1
- package/dist/agent/loop.d.ts.map +1 -1
- package/dist/agent/loop.js +76 -23
- package/dist/agent/loop.js.map +1 -1
- package/dist/agent/onboarding-gate.d.ts +1 -1
- package/dist/agent/onboarding-gate.d.ts.map +1 -1
- package/dist/agent/onboarding-gate.js +3 -2
- package/dist/agent/onboarding-gate.js.map +1 -1
- package/dist/agent/owner-channel-resolver.d.ts +1 -1
- package/dist/agent/owner-channel-resolver.d.ts.map +1 -1
- package/dist/agent/owner-channel-resolver.js +12 -0
- package/dist/agent/owner-channel-resolver.js.map +1 -1
- package/dist/agent/runtime-surface.d.ts +2 -0
- package/dist/agent/runtime-surface.d.ts.map +1 -1
- package/dist/agent/runtime-surface.js +3 -0
- package/dist/agent/runtime-surface.js.map +1 -1
- package/dist/agent/session-manager.d.ts +1 -1
- package/dist/agent/session-manager.d.ts.map +1 -1
- package/dist/agent/session-manager.js +13 -5
- package/dist/agent/session-manager.js.map +1 -1
- package/dist/agent/state.d.ts +2 -0
- package/dist/agent/state.d.ts.map +1 -1
- package/dist/agent/state.js.map +1 -1
- package/dist/agent/status.d.ts +1 -1
- package/dist/agent/status.d.ts.map +1 -1
- package/dist/agent/status.js +45 -14
- package/dist/agent/status.js.map +1 -1
- package/dist/agent/system-prompt.d.ts +1 -1
- package/dist/agent/system-prompt.d.ts.map +1 -1
- package/dist/agent/system-prompt.js +29 -13
- package/dist/agent/system-prompt.js.map +1 -1
- package/dist/agent/usage/usage-gate.d.ts.map +1 -1
- package/dist/agent/usage/usage-gate.js +6 -10
- package/dist/agent/usage/usage-gate.js.map +1 -1
- package/dist/calendar/calendar-interrupt-poller.d.ts +1 -1
- package/dist/calendar/calendar-interrupt-poller.d.ts.map +1 -1
- package/dist/calendar/calendar-interrupt-poller.js +5 -0
- package/dist/calendar/calendar-interrupt-poller.js.map +1 -1
- package/dist/calendar/scheduler.d.ts +1 -1
- package/dist/calendar/scheduler.d.ts.map +1 -1
- package/dist/calendar/scheduler.js +3 -0
- package/dist/calendar/scheduler.js.map +1 -1
- package/dist/channels/gmail.d.ts +3 -2
- package/dist/channels/gmail.d.ts.map +1 -1
- package/dist/channels/gmail.js +1 -0
- package/dist/channels/gmail.js.map +1 -1
- package/dist/channels/manager.d.ts +1 -1
- package/dist/channels/manager.d.ts.map +1 -1
- package/dist/channels/manager.js +22 -11
- package/dist/channels/manager.js.map +1 -1
- package/dist/channels/queue.d.ts +4 -0
- package/dist/channels/queue.d.ts.map +1 -1
- package/dist/channels/queue.js +10 -0
- package/dist/channels/queue.js.map +1 -1
- package/dist/channels/tui.d.ts +24 -10
- package/dist/channels/tui.d.ts.map +1 -1
- package/dist/channels/tui.js +104 -15
- package/dist/channels/tui.js.map +1 -1
- package/dist/cli/index.d.ts +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +19 -28
- package/dist/cli/index.js.map +1 -1
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +3 -1
- package/dist/config/index.js.map +1 -1
- package/dist/config/types.d.ts +32 -1
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js +48 -1
- package/dist/config/types.js.map +1 -1
- package/dist/e2e/suites/google.d.ts.map +1 -1
- package/dist/e2e/suites/google.js +11 -3
- package/dist/e2e/suites/google.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/obs/rdp/backend.d.ts +12 -0
- package/dist/obs/rdp/backend.d.ts.map +1 -0
- package/dist/obs/rdp/backend.js +10 -0
- package/dist/obs/rdp/backend.js.map +1 -0
- package/dist/obs/rdp/linux-x11-backend.d.ts +25 -0
- package/dist/obs/rdp/linux-x11-backend.d.ts.map +1 -0
- package/dist/obs/rdp/linux-x11-backend.js +161 -0
- package/dist/obs/rdp/linux-x11-backend.js.map +1 -0
- package/dist/obs/rdp/macos-backend.d.ts +12 -0
- package/dist/obs/rdp/macos-backend.d.ts.map +1 -0
- package/dist/obs/rdp/macos-backend.js +39 -0
- package/dist/obs/rdp/macos-backend.js.map +1 -0
- package/dist/obs/rdp/stream-manager.d.ts +3 -0
- package/dist/obs/rdp/stream-manager.d.ts.map +1 -1
- package/dist/obs/rdp/stream-manager.js +23 -42
- package/dist/obs/rdp/stream-manager.js.map +1 -1
- package/dist/obs/server.d.ts +1 -1
- package/dist/obs/server.d.ts.map +1 -1
- package/dist/obs/server.js +8 -3
- package/dist/obs/server.js.map +1 -1
- package/dist/onboarding/bootstrap-client.d.ts +43 -18
- package/dist/onboarding/bootstrap-client.d.ts.map +1 -1
- package/dist/onboarding/bootstrap-client.js +11 -1
- package/dist/onboarding/bootstrap-client.js.map +1 -1
- package/dist/onboarding/generate-wallpaper.d.ts +29 -0
- package/dist/onboarding/generate-wallpaper.d.ts.map +1 -1
- package/dist/onboarding/generate-wallpaper.js +58 -38
- package/dist/onboarding/generate-wallpaper.js.map +1 -1
- package/dist/onboarding/host-resolver.d.ts +2 -0
- package/dist/onboarding/host-resolver.d.ts.map +1 -0
- package/dist/onboarding/host-resolver.js +18 -0
- package/dist/onboarding/host-resolver.js.map +1 -0
- package/dist/onboarding/index.d.ts.map +1 -1
- package/dist/onboarding/index.js +2 -17
- package/dist/onboarding/index.js.map +1 -1
- package/dist/onboarding/onboarding-service-client.d.ts +2 -0
- package/dist/onboarding/onboarding-service-client.d.ts.map +1 -1
- package/dist/onboarding/onboarding-service-client.js.map +1 -1
- package/dist/onboarding/prepare-linux.d.ts +9 -0
- package/dist/onboarding/prepare-linux.d.ts.map +1 -0
- package/dist/onboarding/prepare-linux.js +64 -0
- package/dist/onboarding/prepare-linux.js.map +1 -0
- package/dist/onboarding/send-invite.d.ts +1 -1
- package/dist/onboarding/send-invite.d.ts.map +1 -1
- package/dist/onboarding/send-invite.js +23 -7
- package/dist/onboarding/send-invite.js.map +1 -1
- package/dist/onboarding/setup-shared.d.ts +10 -2
- package/dist/onboarding/setup-shared.d.ts.map +1 -1
- package/dist/onboarding/setup-shared.js +37 -6
- package/dist/onboarding/setup-shared.js.map +1 -1
- package/dist/onboarding/setup-state.d.ts +1 -0
- package/dist/onboarding/setup-state.d.ts.map +1 -1
- package/dist/onboarding/setup-state.js +1 -0
- package/dist/onboarding/setup-state.js.map +1 -1
- package/dist/onboarding/setup-steps.d.ts.map +1 -1
- package/dist/onboarding/setup-steps.js +53 -18
- package/dist/onboarding/setup-steps.js.map +1 -1
- package/dist/onboarding/wallpaper-contract.d.ts +38 -0
- package/dist/onboarding/wallpaper-contract.d.ts.map +1 -0
- package/dist/onboarding/wallpaper-contract.js +2 -0
- package/dist/onboarding/wallpaper-contract.js.map +1 -0
- package/dist/onboarding/wallpaper-linux-x11.d.ts +8 -0
- package/dist/onboarding/wallpaper-linux-x11.d.ts.map +1 -0
- package/dist/onboarding/wallpaper-linux-x11.js +72 -0
- package/dist/onboarding/wallpaper-linux-x11.js.map +1 -0
- package/dist/onboarding/wallpaper-macos.d.ts +4 -0
- package/dist/onboarding/wallpaper-macos.d.ts.map +1 -0
- package/dist/onboarding/wallpaper-macos.js +32 -0
- package/dist/onboarding/wallpaper-macos.js.map +1 -0
- package/dist/onboarding/wallpaper-platform.d.ts +4 -0
- package/dist/onboarding/wallpaper-platform.d.ts.map +1 -0
- package/dist/onboarding/wallpaper-platform.js +41 -0
- package/dist/onboarding/wallpaper-platform.js.map +1 -0
- package/dist/reconfigure.d.ts.map +1 -1
- package/dist/reconfigure.js +16 -5
- package/dist/reconfigure.js.map +1 -1
- package/dist/reset.d.ts.map +1 -1
- package/dist/reset.js +7 -0
- package/dist/reset.js.map +1 -1
- package/dist/restore.d.ts +2 -0
- package/dist/restore.d.ts.map +1 -1
- package/dist/restore.js +25 -0
- package/dist/restore.js.map +1 -1
- package/dist/runtime/linux-baseline.d.ts +2 -0
- package/dist/runtime/linux-baseline.d.ts.map +1 -0
- package/dist/runtime/linux-baseline.js +21 -0
- package/dist/runtime/linux-baseline.js.map +1 -0
- package/dist/service/daemon.d.ts.map +1 -1
- package/dist/service/daemon.js +24 -0
- package/dist/service/daemon.js.map +1 -1
- package/dist/service/systemd.d.ts +11 -0
- package/dist/service/systemd.d.ts.map +1 -0
- package/dist/service/systemd.js +63 -0
- package/dist/service/systemd.js.map +1 -0
- package/dist/system/host-capabilities.d.ts +35 -0
- package/dist/system/host-capabilities.d.ts.map +1 -0
- package/dist/system/host-capabilities.js +107 -0
- package/dist/system/host-capabilities.js.map +1 -0
- package/dist/system/machine-identity.d.ts.map +1 -1
- package/dist/system/machine-identity.js +15 -0
- package/dist/system/machine-identity.js.map +1 -1
- package/dist/tools/computer-use.d.ts.map +1 -1
- package/dist/tools/computer-use.js +9 -2
- package/dist/tools/computer-use.js.map +1 -1
- package/dist/tools/desktop-executor-factory.d.ts.map +1 -1
- package/dist/tools/desktop-executor-factory.js +3 -0
- package/dist/tools/desktop-executor-factory.js.map +1 -1
- package/dist/tools/desktop-executor-linux.d.ts +19 -0
- package/dist/tools/desktop-executor-linux.d.ts.map +1 -0
- package/dist/tools/desktop-executor-linux.js +89 -0
- package/dist/tools/desktop-executor-linux.js.map +1 -0
- package/dist/tools/index.d.ts +10 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +6 -3
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/screenshot.js +7 -2
- package/dist/tools/screenshot.js.map +1 -1
- package/dist/tui/client.d.ts +46 -7
- package/dist/tui/client.d.ts.map +1 -1
- package/dist/tui/client.js +60 -16
- package/dist/tui/client.js.map +1 -1
- package/dist/tui/protocol.d.ts +40 -0
- package/dist/tui/protocol.d.ts.map +1 -0
- package/dist/tui/protocol.js +20 -0
- package/dist/tui/protocol.js.map +1 -0
- package/dist/tui/request-store.d.ts +40 -0
- package/dist/tui/request-store.d.ts.map +1 -0
- package/dist/tui/request-store.js +236 -0
- package/dist/tui/request-store.js.map +1 -0
- package/dist/tui/server.d.ts +3 -0
- package/dist/tui/server.d.ts.map +1 -1
- package/dist/tui/server.js +225 -36
- package/dist/tui/server.js.map +1 -1
- package/dist/workspace/google/gmail-email.d.ts +8 -2
- package/dist/workspace/google/gmail-email.d.ts.map +1 -1
- package/dist/workspace/google/gmail-email.js +6 -0
- package/dist/workspace/google/gmail-email.js.map +1 -1
- package/dist/workspace/provider-factory.d.ts +1 -1
- package/dist/workspace/provider-factory.d.ts.map +1 -1
- package/dist/workspace/provider-factory.js +27 -12
- package/dist/workspace/provider-factory.js.map +1 -1
- package/dist-agent/bundle.cjs +7037 -5329
- package/package.json +2 -2
- package/dist/agent/applied-credential-signature.d.ts +0 -53
- package/dist/agent/applied-credential-signature.d.ts.map +0 -1
- package/dist/agent/applied-credential-signature.js +0 -137
- package/dist/agent/applied-credential-signature.js.map +0 -1
- package/dist/agent/engines/client-factory.d.ts +0 -63
- package/dist/agent/engines/client-factory.d.ts.map +0 -1
- package/dist/agent/engines/client-factory.js +0 -382
- package/dist/agent/engines/client-factory.js.map +0 -1
- package/dist/agent/engines/engine.d.ts +0 -8
- package/dist/agent/engines/engine.d.ts.map +0 -1
- package/dist/agent/engines/engine.js +0 -15
- package/dist/agent/engines/engine.js.map +0 -1
- package/dist/agent/engines/openai/file-session.d.ts +0 -19
- package/dist/agent/engines/openai/file-session.d.ts.map +0 -1
- package/dist/agent/engines/openai/file-session.js +0 -78
- package/dist/agent/engines/openai/file-session.js.map +0 -1
- package/dist/agent/engines/openai/file-tools.d.ts +0 -35
- package/dist/agent/engines/openai/file-tools.d.ts.map +0 -1
- package/dist/agent/engines/openai/file-tools.js +0 -194
- package/dist/agent/engines/openai/file-tools.js.map +0 -1
- package/dist/agent/engines/openai/session.d.ts +0 -55
- package/dist/agent/engines/openai/session.d.ts.map +0 -1
- package/dist/agent/engines/openai/session.js +0 -447
- package/dist/agent/engines/openai/session.js.map +0 -1
- package/dist/agent/engines/openai/tools.d.ts +0 -15
- package/dist/agent/engines/openai/tools.d.ts.map +0 -1
- package/dist/agent/engines/openai/tools.js +0 -221
- package/dist/agent/engines/openai/tools.js.map +0 -1
- package/dist/agent/engines/pi/session.d.ts +0 -49
- package/dist/agent/engines/pi/session.d.ts.map +0 -1
- package/dist/agent/engines/pi/session.js +0 -309
- package/dist/agent/engines/pi/session.js.map +0 -1
- package/dist/agent/memory-preload.d.ts +0 -55
- package/dist/agent/memory-preload.d.ts.map +0 -1
- package/dist/agent/memory-preload.js +0 -166
- package/dist/agent/memory-preload.js.map +0 -1
- package/dist/agent/providers/claude/cli-resolver.d.ts +0 -16
- package/dist/agent/providers/claude/cli-resolver.d.ts.map +0 -1
- package/dist/agent/providers/claude/cli-resolver.js +0 -83
- package/dist/agent/providers/claude/cli-resolver.js.map +0 -1
- package/dist/agent/providers/claude/session-browser-policy.d.ts +0 -9
- package/dist/agent/providers/claude/session-browser-policy.d.ts.map +0 -1
- package/dist/agent/providers/claude/session-browser-policy.js +0 -49
- package/dist/agent/providers/claude/session-browser-policy.js.map +0 -1
- package/dist/agent/providers/claude/session.d.ts +0 -304
- package/dist/agent/providers/claude/session.d.ts.map +0 -1
- package/dist/agent/providers/claude/session.js +0 -1236
- package/dist/agent/providers/claude/session.js.map +0 -1
- package/dist/agent/providers/client-factory.d.ts +0 -60
- package/dist/agent/providers/client-factory.d.ts.map +0 -1
- package/dist/agent/providers/client-factory.js +0 -400
- package/dist/agent/providers/client-factory.js.map +0 -1
- package/dist/agent/providers/openai/file-session.d.ts +0 -19
- package/dist/agent/providers/openai/file-session.d.ts.map +0 -1
- package/dist/agent/providers/openai/file-session.js +0 -78
- package/dist/agent/providers/openai/file-session.js.map +0 -1
- package/dist/agent/providers/openai/session.d.ts +0 -55
- package/dist/agent/providers/openai/session.d.ts.map +0 -1
- package/dist/agent/providers/openai/session.js +0 -447
- package/dist/agent/providers/openai/session.js.map +0 -1
- package/dist/agent/providers/openai/tools.d.ts +0 -15
- package/dist/agent/providers/openai/tools.d.ts.map +0 -1
- package/dist/agent/providers/openai/tools.js +0 -229
- package/dist/agent/providers/openai/tools.js.map +0 -1
- package/dist/agent/providers/session-types.d.ts +0 -153
- package/dist/agent/providers/session-types.d.ts.map +0 -1
- package/dist/agent/providers/session-types.js +0 -2
- package/dist/agent/providers/session-types.js.map +0 -1
- package/dist/agent/providers/system-prompt-log.d.ts +0 -9
- package/dist/agent/providers/system-prompt-log.d.ts.map +0 -1
- package/dist/agent/providers/system-prompt-log.js +0 -46
- package/dist/agent/providers/system-prompt-log.js.map +0 -1
- package/dist/agent/qq-claim-signal.d.ts +0 -9
- package/dist/agent/qq-claim-signal.d.ts.map +0 -1
- package/dist/agent/qq-claim-signal.js +0 -38
- package/dist/agent/qq-claim-signal.js.map +0 -1
- package/dist/agent/transcript-backfill.d.ts +0 -54
- package/dist/agent/transcript-backfill.d.ts.map +0 -1
- package/dist/agent/transcript-backfill.js +0 -604
- package/dist/agent/transcript-backfill.js.map +0 -1
- package/dist/agent/transcript-indexer.d.ts +0 -200
- package/dist/agent/transcript-indexer.d.ts.map +0 -1
- package/dist/agent/transcript-indexer.js +0 -775
- package/dist/agent/transcript-indexer.js.map +0 -1
- package/dist/agent/transcript-memory-migrations.d.ts +0 -25
- package/dist/agent/transcript-memory-migrations.d.ts.map +0 -1
- package/dist/agent/transcript-memory-migrations.js +0 -87
- package/dist/agent/transcript-memory-migrations.js.map +0 -1
- package/dist/agent/tunnel-credential-handler.d.ts +0 -90
- package/dist/agent/tunnel-credential-handler.d.ts.map +0 -1
- package/dist/agent/tunnel-credential-handler.js +0 -162
- package/dist/agent/tunnel-credential-handler.js.map +0 -1
- package/dist/agent/usage-backfill-handler.d.ts +0 -18
- package/dist/agent/usage-backfill-handler.d.ts.map +0 -1
- package/dist/agent/usage-backfill-handler.js +0 -69
- package/dist/agent/usage-backfill-handler.js.map +0 -1
- package/dist/agent/usage-gate.d.ts +0 -25
- package/dist/agent/usage-gate.d.ts.map +0 -1
- package/dist/agent/usage-gate.js +0 -83
- package/dist/agent/usage-gate.js.map +0 -1
- package/dist/agent/usage-handler.d.ts +0 -7
- package/dist/agent/usage-handler.d.ts.map +0 -1
- package/dist/agent/usage-handler.js +0 -28
- package/dist/agent/usage-handler.js.map +0 -1
- package/dist/agent/usage-report-builder.d.ts +0 -26
- package/dist/agent/usage-report-builder.d.ts.map +0 -1
- package/dist/agent/usage-report-builder.js +0 -80
- package/dist/agent/usage-report-builder.js.map +0 -1
- package/dist/agent/usage-report-queue.d.ts +0 -26
- package/dist/agent/usage-report-queue.d.ts.map +0 -1
- package/dist/agent/usage-report-queue.js +0 -199
- package/dist/agent/usage-report-queue.js.map +0 -1
- package/dist/agent/usage-report-types.d.ts +0 -41
- package/dist/agent/usage-report-types.d.ts.map +0 -1
- package/dist/agent/usage-report-types.js +0 -2
- package/dist/agent/usage-report-types.js.map +0 -1
- package/dist/agent/usage-reporter.d.ts +0 -31
- package/dist/agent/usage-reporter.d.ts.map +0 -1
- package/dist/agent/usage-reporter.js +0 -102
- package/dist/agent/usage-reporter.js.map +0 -1
- package/dist/agent/wake-cycle-tool-tracker.d.ts +0 -39
- package/dist/agent/wake-cycle-tool-tracker.d.ts.map +0 -1
- package/dist/agent/wake-cycle-tool-tracker.js +0 -72
- package/dist/agent/wake-cycle-tool-tracker.js.map +0 -1
- package/dist/anthropic-credentials.d.ts +0 -24
- package/dist/anthropic-credentials.d.ts.map +0 -1
- package/dist/anthropic-credentials.js +0 -37
- package/dist/anthropic-credentials.js.map +0 -1
- package/dist/billing/payg-handler.d.ts +0 -29
- package/dist/billing/payg-handler.d.ts.map +0 -1
- package/dist/billing/payg-handler.js +0 -92
- package/dist/billing/payg-handler.js.map +0 -1
- package/dist/billing/payment-handler.d.ts +0 -24
- package/dist/billing/payment-handler.d.ts.map +0 -1
- package/dist/billing/payment-handler.js +0 -101
- package/dist/billing/payment-handler.js.map +0 -1
- package/dist/builtin-skills/catalog/phone-adb-automation/SKILL.md +0 -412
- package/dist/builtin-skills/catalog/phone-adb-automation/phone_input.sh +0 -132
- package/dist/builtin-skills/catalog/phone-adb-automation/phone_launch.sh +0 -166
- package/dist/builtin-skills/catalog/phone-adb-automation/phone_screenshot.sh +0 -87
- package/dist/builtin-skills/catalog/phone-adb-automation/phone_security_kbd.py +0 -174
- package/dist/builtin-skills/catalog/phone-adb-automation/phone_setup.sh +0 -274
- package/dist/builtin-skills/catalog/phone-adb-automation/phone_swipe.sh +0 -111
- package/dist/builtin-skills/catalog/phone-adb-automation/phone_tap.sh +0 -87
- package/dist/builtin-skills/catalog/phone-adb-automation/phone_ui_parse.py +0 -176
- package/dist/builtin-skills/catalog/phone-adb-automation/phone_wake_unlock.sh +0 -67
- package/dist/builtin-skills/transcribe-audio/SKILL.md +0 -122
- package/dist/calendar/google-calendar.d.ts +0 -54
- package/dist/calendar/google-calendar.d.ts.map +0 -1
- package/dist/calendar/google-calendar.js +0 -156
- package/dist/calendar/google-calendar.js.map +0 -1
- package/dist/channels/web.d.ts +0 -40
- package/dist/channels/web.d.ts.map +0 -1
- package/dist/channels/web.js +0 -137
- package/dist/channels/web.js.map +0 -1
- package/dist/config/models.d.ts +0 -32
- package/dist/config/models.d.ts.map +0 -1
- package/dist/config/models.js +0 -57
- package/dist/config/models.js.map +0 -1
- package/dist/data-processing/convert-demo-cli.d.ts +0 -7
- package/dist/data-processing/convert-demo-cli.d.ts.map +0 -1
- package/dist/data-processing/convert-demo-cli.js +0 -30
- package/dist/data-processing/convert-demo-cli.js.map +0 -1
- package/dist/data-processing/convert-demo.d.ts +0 -26
- package/dist/data-processing/convert-demo.d.ts.map +0 -1
- package/dist/data-processing/convert-demo.js +0 -233
- package/dist/data-processing/convert-demo.js.map +0 -1
- package/dist/drive/google-drive.d.ts +0 -83
- package/dist/drive/google-drive.d.ts.map +0 -1
- package/dist/drive/google-drive.js +0 -219
- package/dist/drive/google-drive.js.map +0 -1
- package/dist/email/gmail-email.d.ts +0 -64
- package/dist/email/gmail-email.d.ts.map +0 -1
- package/dist/email/gmail-email.js +0 -167
- package/dist/email/gmail-email.js.map +0 -1
- package/dist/factcheck/agent.d.ts +0 -50
- package/dist/factcheck/agent.d.ts.map +0 -1
- package/dist/factcheck/agent.js +0 -508
- package/dist/factcheck/agent.js.map +0 -1
- package/dist/factcheck/financial-verifier.d.ts +0 -49
- package/dist/factcheck/financial-verifier.d.ts.map +0 -1
- package/dist/factcheck/financial-verifier.js +0 -109
- package/dist/factcheck/financial-verifier.js.map +0 -1
- package/dist/factcheck/setup.d.ts +0 -32
- package/dist/factcheck/setup.d.ts.map +0 -1
- package/dist/factcheck/setup.js +0 -70
- package/dist/factcheck/setup.js.map +0 -1
- package/dist/factcheck/sidecar.d.ts +0 -131
- package/dist/factcheck/sidecar.d.ts.map +0 -1
- package/dist/factcheck/sidecar.js +0 -348
- package/dist/factcheck/sidecar.js.map +0 -1
- package/dist/factcheck/store.d.ts +0 -111
- package/dist/factcheck/store.d.ts.map +0 -1
- package/dist/factcheck/store.js +0 -246
- package/dist/factcheck/store.js.map +0 -1
- package/dist/factcheck/web-searcher.d.ts +0 -22
- package/dist/factcheck/web-searcher.d.ts.map +0 -1
- package/dist/factcheck/web-searcher.js +0 -90
- package/dist/factcheck/web-searcher.js.map +0 -1
- package/dist/obs/auth.d.ts +0 -45
- package/dist/obs/auth.d.ts.map +0 -1
- package/dist/obs/auth.js +0 -181
- package/dist/obs/auth.js.map +0 -1
- package/dist/obs/mini-app/tasks.d.ts +0 -2
- package/dist/obs/mini-app/tasks.d.ts.map +0 -1
- package/dist/obs/mini-app/tasks.js +0 -506
- package/dist/obs/mini-app/tasks.js.map +0 -1
- package/dist/obs/rdp/icons/icons/app_windows.svg +0 -4
- package/dist/obs/rdp/icons/icons/clip_get.svg +0 -4
- package/dist/obs/rdp/icons/icons/clip_send.svg +0 -4
- package/dist/obs/rdp/icons/icons/clip_shared.svg +0 -4
- package/dist/obs/rdp/icons/icons/clipboard.svg +0 -4
- package/dist/obs/rdp/icons/icons/clipboard_shared.svg +0 -4
- package/dist/obs/rdp/icons/icons/control.svg +0 -4
- package/dist/obs/rdp/icons/icons/desktop.svg +0 -4
- package/dist/obs/rdp/icons/icons/display.svg +0 -4
- package/dist/obs/rdp/icons/icons/launchpad.svg +0 -4
- package/dist/obs/rdp/icons/icons/mission_control.svg +0 -4
- package/dist/obs/rdp/icons/icons/screenshot.svg +0 -4
- package/dist/obs/rdp/icons/icons/zoom_actual.svg +0 -4
- package/dist/obs/rdp/icons/icons/zoom_fit.svg +0 -4
- package/dist/obs/rdp/icons/icons/zoom_in.svg +0 -4
- package/dist/obs/rdp/icons/icons/zoom_out.svg +0 -4
- package/dist/obs/tunnel-telemetry.d.ts +0 -46
- package/dist/obs/tunnel-telemetry.d.ts.map +0 -1
- package/dist/obs/tunnel-telemetry.js +0 -70
- package/dist/obs/tunnel-telemetry.js.map +0 -1
- package/dist/onboarding/cloudflared-cert.d.ts +0 -15
- package/dist/onboarding/cloudflared-cert.d.ts.map +0 -1
- package/dist/onboarding/cloudflared-cert.js +0 -57
- package/dist/onboarding/cloudflared-cert.js.map +0 -1
- package/dist/onboarding/gh-auth-browser.d.ts +0 -10
- package/dist/onboarding/gh-auth-browser.d.ts.map +0 -1
- package/dist/onboarding/gh-auth-browser.js +0 -70
- package/dist/onboarding/gh-auth-browser.js.map +0 -1
- package/dist/onboarding/provision-eth-wallet.d.ts +0 -7
- package/dist/onboarding/provision-eth-wallet.d.ts.map +0 -1
- package/dist/onboarding/provision-eth-wallet.js +0 -14
- package/dist/onboarding/provision-eth-wallet.js.map +0 -1
- package/dist/onboarding/provision-workspace-account.d.ts +0 -14
- package/dist/onboarding/provision-workspace-account.d.ts.map +0 -1
- package/dist/onboarding/provision-workspace-account.js +0 -165
- package/dist/onboarding/provision-workspace-account.js.map +0 -1
- package/dist/onboarding/provisioning-spec.d.ts +0 -62
- package/dist/onboarding/provisioning-spec.d.ts.map +0 -1
- package/dist/onboarding/provisioning-spec.js +0 -159
- package/dist/onboarding/provisioning-spec.js.map +0 -1
- package/dist/onboarding/send-identity-credentials.d.ts +0 -11
- package/dist/onboarding/send-identity-credentials.d.ts.map +0 -1
- package/dist/onboarding/send-identity-credentials.js +0 -110
- package/dist/onboarding/send-identity-credentials.js.map +0 -1
- package/dist/onboarding/setup-credentials.d.ts +0 -7
- package/dist/onboarding/setup-credentials.d.ts.map +0 -1
- package/dist/onboarding/setup-credentials.js +0 -44
- package/dist/onboarding/setup-credentials.js.map +0 -1
- package/dist/openai-credentials.d.ts +0 -30
- package/dist/openai-credentials.d.ts.map +0 -1
- package/dist/openai-credentials.js +0 -37
- package/dist/openai-credentials.js.map +0 -1
- package/dist/phonecall-credentials.d.ts +0 -21
- package/dist/phonecall-credentials.d.ts.map +0 -1
- package/dist/phonecall-credentials.js +0 -34
- package/dist/phonecall-credentials.js.map +0 -1
- package/dist/realtime/agent-bridge.d.ts +0 -7
- package/dist/realtime/agent-bridge.d.ts.map +0 -1
- package/dist/realtime/agent-bridge.js +0 -31
- package/dist/realtime/agent-bridge.js.map +0 -1
- package/dist/realtime/assets/index.html +0 -1058
- package/dist/realtime/assets/samples/alloy.mp3 +0 -0
- package/dist/realtime/assets/samples/ash.mp3 +0 -0
- package/dist/realtime/assets/samples/ballad.mp3 +0 -0
- package/dist/realtime/assets/samples/cedar.mp3 +0 -0
- package/dist/realtime/assets/samples/coral.mp3 +0 -0
- package/dist/realtime/assets/samples/echo.mp3 +0 -0
- package/dist/realtime/assets/samples/marin.mp3 +0 -0
- package/dist/realtime/assets/samples/sage.mp3 +0 -0
- package/dist/realtime/assets/samples/shimmer.mp3 +0 -0
- package/dist/realtime/assets/samples/verse.mp3 +0 -0
- package/dist/realtime/context.d.ts +0 -14
- package/dist/realtime/context.d.ts.map +0 -1
- package/dist/realtime/context.js +0 -153
- package/dist/realtime/context.js.map +0 -1
- package/dist/realtime/http-helpers.d.ts +0 -5
- package/dist/realtime/http-helpers.d.ts.map +0 -1
- package/dist/realtime/http-helpers.js +0 -29
- package/dist/realtime/http-helpers.js.map +0 -1
- package/dist/realtime/index.d.ts +0 -62
- package/dist/realtime/index.d.ts.map +0 -1
- package/dist/realtime/index.js +0 -94
- package/dist/realtime/index.js.map +0 -1
- package/dist/realtime/server.d.ts +0 -6
- package/dist/realtime/server.d.ts.map +0 -1
- package/dist/realtime/server.js +0 -479
- package/dist/realtime/server.js.map +0 -1
- package/dist/realtime/telegram-auth.d.ts +0 -2
- package/dist/realtime/telegram-auth.d.ts.map +0 -1
- package/dist/realtime/telegram-auth.js +0 -24
- package/dist/realtime/telegram-auth.js.map +0 -1
- package/dist/realtime/tools.d.ts +0 -829
- package/dist/realtime/tools.d.ts.map +0 -1
- package/dist/realtime/tools.js +0 -611
- package/dist/realtime/tools.js.map +0 -1
- package/dist/realtime/types.d.ts +0 -62
- package/dist/realtime/types.d.ts.map +0 -1
- package/dist/realtime/types.js +0 -3
- package/dist/realtime/types.js.map +0 -1
- package/dist/realtime/voice-summarizer.d.ts +0 -4
- package/dist/realtime/voice-summarizer.d.ts.map +0 -1
- package/dist/realtime/voice-summarizer.js +0 -123
- package/dist/realtime/voice-summarizer.js.map +0 -1
- package/dist/realtime/websocket.d.ts +0 -7
- package/dist/realtime/websocket.d.ts.map +0 -1
- package/dist/realtime/websocket.js +0 -65
- package/dist/realtime/websocket.js.map +0 -1
- package/dist/service/gbox-tun.d.ts +0 -14
- package/dist/service/gbox-tun.d.ts.map +0 -1
- package/dist/service/gbox-tun.js +0 -315
- package/dist/service/gbox-tun.js.map +0 -1
- package/dist/skills/installed.d.ts +0 -11
- package/dist/skills/installed.d.ts.map +0 -1
- package/dist/skills/installed.js +0 -35
- package/dist/skills/installed.js.map +0 -1
- package/dist/tools/card.d.ts +0 -11
- package/dist/tools/card.d.ts.map +0 -1
- package/dist/tools/card.js +0 -87
- package/dist/tools/card.js.map +0 -1
- package/dist/tools/coordinate-resolver.d.ts +0 -30
- package/dist/tools/coordinate-resolver.d.ts.map +0 -1
- package/dist/tools/coordinate-resolver.js +0 -104
- package/dist/tools/coordinate-resolver.js.map +0 -1
- package/dist/tools/sms.d.ts +0 -16
- package/dist/tools/sms.d.ts.map +0 -1
- package/dist/tools/sms.js +0 -78
- package/dist/tools/sms.js.map +0 -1
- package/dist/tools/stock-data.d.ts +0 -70
- package/dist/tools/stock-data.d.ts.map +0 -1
- package/dist/tools/stock-data.js +0 -596
- package/dist/tools/stock-data.js.map +0 -1
- package/dist/tools/webapp.d.ts +0 -30
- package/dist/tools/webapp.d.ts.map +0 -1
- package/dist/tools/webapp.js +0 -114
- package/dist/tools/webapp.js.map +0 -1
- package/dist/utils/wechat-monitor.d.ts +0 -21
- package/dist/utils/wechat-monitor.d.ts.map +0 -1
- package/dist/utils/wechat-monitor.js +0 -88
- package/dist/utils/wechat-monitor.js.map +0 -1
- package/dist/webapp/index.d.ts +0 -28
- package/dist/webapp/index.d.ts.map +0 -1
- package/dist/webapp/index.js +0 -75
- package/dist/webapp/index.js.map +0 -1
- package/dist/webapp/server.d.ts +0 -32
- package/dist/webapp/server.d.ts.map +0 -1
- package/dist/webapp/server.js +0 -375
- package/dist/webapp/server.js.map +0 -1
- package/dist/webapp/storage.d.ts +0 -64
- package/dist/webapp/storage.d.ts.map +0 -1
- package/dist/webapp/storage.js +0 -103
- package/dist/webapp/storage.js.map +0 -1
- package/dist/webapp/ui.d.ts +0 -2
- package/dist/webapp/ui.d.ts.map +0 -1
- package/dist/webapp/ui.js +0 -319
- package/dist/webapp/ui.js.map +0 -1
- package/dist-agent/assets/index.html +0 -1058
- package/dist-agent/assets/samples/alloy.mp3 +0 -0
- package/dist-agent/assets/samples/ash.mp3 +0 -0
- package/dist-agent/assets/samples/ballad.mp3 +0 -0
- package/dist-agent/assets/samples/cedar.mp3 +0 -0
- package/dist-agent/assets/samples/coral.mp3 +0 -0
- package/dist-agent/assets/samples/echo.mp3 +0 -0
- package/dist-agent/assets/samples/marin.mp3 +0 -0
- package/dist-agent/assets/samples/sage.mp3 +0 -0
- package/dist-agent/assets/samples/shimmer.mp3 +0 -0
- package/dist-agent/assets/samples/verse.mp3 +0 -0
- package/dist-agent/realtime/assets/index.html +0 -1058
- package/dist-agent/realtime/assets/samples/alloy.mp3 +0 -0
- package/dist-agent/realtime/assets/samples/ash.mp3 +0 -0
- package/dist-agent/realtime/assets/samples/ballad.mp3 +0 -0
- package/dist-agent/realtime/assets/samples/cedar.mp3 +0 -0
- package/dist-agent/realtime/assets/samples/coral.mp3 +0 -0
- package/dist-agent/realtime/assets/samples/echo.mp3 +0 -0
- package/dist-agent/realtime/assets/samples/marin.mp3 +0 -0
- package/dist-agent/realtime/assets/samples/sage.mp3 +0 -0
- package/dist-agent/realtime/assets/samples/shimmer.mp3 +0 -0
- package/dist-agent/realtime/assets/samples/verse.mp3 +0 -0
|
@@ -1,348 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Async Fact-Check Sidecar (issue #530).
|
|
3
|
-
*
|
|
4
|
-
* Decoupled from the main agent turn, this sidecar audits the agent's recent
|
|
5
|
-
* *assertions* (its reasoning, prose, and notify_user messages — not tool
|
|
6
|
-
* inputs/results), then surfaces corrections before the next reasoning step. It
|
|
7
|
-
* runs in-process (matching the EventTriggerSidecar / CalendarInterruptPoller
|
|
8
|
-
* pattern) but every audit executes asynchronously off the agent's critical
|
|
9
|
-
* path.
|
|
10
|
-
*
|
|
11
|
-
* Triggers (any fires an audit):
|
|
12
|
-
* 1. Counter-based: N consecutive whitelisted tool calls (config N, default
|
|
13
|
-
* 5) *arm* the trigger; the audit fires on the next agent assertion so the
|
|
14
|
-
* snapshot contains the claim the tool results produced, not the
|
|
15
|
-
* pre-tool-call state.
|
|
16
|
-
* 2. Compaction: context compaction detected → force audit + reset counter.
|
|
17
|
-
* 3. Engine switch: engine change detected → force audit + reset counter.
|
|
18
|
-
* 4. Turn end: the agent finished its turn → audit any not-yet-audited
|
|
19
|
-
* assertions, so the final user-facing claim (often a blacklisted
|
|
20
|
-
* notify_user that never trips the counter) is still checked.
|
|
21
|
-
*
|
|
22
|
-
* Concurrency: strictly serial. While an audit runs, at most one further
|
|
23
|
-
* trigger is held pending (coalesced); it runs immediately after the current
|
|
24
|
-
* audit completes. This keeps the corrections file write conflict-free and the
|
|
25
|
-
* behaviour predictable.
|
|
26
|
-
*/
|
|
27
|
-
import { logger } from "../logger.js";
|
|
28
|
-
import { runFactCheckAudit } from "./agent.js";
|
|
29
|
-
import { appendAuditLog, appendPendingCorrections } from "./store.js";
|
|
30
|
-
/**
|
|
31
|
-
* Tool names (bare, sans `mcp__visionclaw__` prefix) that do NOT count toward
|
|
32
|
-
* the audit trigger. Matched against the suffix of the fully qualified tool
|
|
33
|
-
* name (see {@link isBlacklisted}).
|
|
34
|
-
*
|
|
35
|
-
* Design: the counter trigger is a *blacklist*, not a whitelist — any tool we
|
|
36
|
-
* don't recognise (e.g. third-party MCP servers, Playwright `browser_*`, file
|
|
37
|
-
* reads) is assumed to do external work that could surface a fact, so it
|
|
38
|
-
* counts. We only exclude tools that, by construction, introduce no new
|
|
39
|
-
* verifiable fact:
|
|
40
|
-
*
|
|
41
|
-
* - Control flow / turn management: finish, wait, switch_session, upgrade.
|
|
42
|
-
* - Messaging / notifications: notify_user (also covered by the turn-end
|
|
43
|
-
* trigger, which audits the final user-facing claim).
|
|
44
|
-
* - Bookkeeping / configuration (no external data): memory, TaskCreate/
|
|
45
|
-
* Update/List, manage_skills, manage_mcp_servers, manage_event_trigger,
|
|
46
|
-
* manage_totp, manage_calendar, manage_email, remote_desktop.
|
|
47
|
-
* - Pure GUI/device *actions* (operate, don't observe): the computer_use_* /
|
|
48
|
-
* android_use_* click/move/scroll/drag/type/key/press/long_press/open
|
|
49
|
-
* family. Their matching *_screenshot variants are intentionally NOT
|
|
50
|
-
* blacklisted — a screenshot surfaces new on-screen facts the agent may
|
|
51
|
-
* then assert.
|
|
52
|
-
*
|
|
53
|
-
* Note: since the counter only *arms* the trigger and the audit fires on the
|
|
54
|
-
* next agent assertion (with the turn-end trigger as a backstop), this list
|
|
55
|
-
* just needs to be roughly right — an over/under-count shifts an audit's
|
|
56
|
-
* timing, it never drops the final claim.
|
|
57
|
-
*/
|
|
58
|
-
const BLACKLIST = new Set([
|
|
59
|
-
// Control flow / turn management
|
|
60
|
-
"finish",
|
|
61
|
-
"wait",
|
|
62
|
-
"switch_session",
|
|
63
|
-
"upgrade",
|
|
64
|
-
// Messaging / notifications
|
|
65
|
-
"notify_user",
|
|
66
|
-
// Bookkeeping / configuration (introduce no external fact)
|
|
67
|
-
"memory",
|
|
68
|
-
"TaskCreate",
|
|
69
|
-
"TaskUpdate",
|
|
70
|
-
"TaskList",
|
|
71
|
-
"manage_email",
|
|
72
|
-
"manage_calendar",
|
|
73
|
-
"manage_totp",
|
|
74
|
-
"manage_skills",
|
|
75
|
-
"manage_mcp_servers",
|
|
76
|
-
"manage_event_trigger",
|
|
77
|
-
"remote_desktop",
|
|
78
|
-
// Pure GUI/device actions (operate, don't observe). The *_screenshot
|
|
79
|
-
// variants are deliberately omitted so on-screen facts still count.
|
|
80
|
-
"computer_use_click",
|
|
81
|
-
"computer_use_move",
|
|
82
|
-
"computer_use_scroll",
|
|
83
|
-
"computer_use_drag",
|
|
84
|
-
"computer_use_type",
|
|
85
|
-
"computer_use_key",
|
|
86
|
-
"android_use_click",
|
|
87
|
-
"android_use_long_press",
|
|
88
|
-
"android_use_type",
|
|
89
|
-
"android_use_scroll",
|
|
90
|
-
"android_use_drag",
|
|
91
|
-
"android_use_press",
|
|
92
|
-
"android_use_open",
|
|
93
|
-
]);
|
|
94
|
-
export class FactCheckSidecar {
|
|
95
|
-
config;
|
|
96
|
-
deps;
|
|
97
|
-
whitelistCount = 0;
|
|
98
|
-
running = false;
|
|
99
|
-
stopped = false;
|
|
100
|
-
/**
|
|
101
|
-
* The counter threshold has been reached but we are waiting for the agent's
|
|
102
|
-
* next assertion before auditing — so the snapshot contains the claim the
|
|
103
|
-
* tool results produced rather than the stale pre-tool-call state.
|
|
104
|
-
*/
|
|
105
|
-
counterArmed = false;
|
|
106
|
-
/**
|
|
107
|
-
* An assertion has been recorded since the last audit started. Gates the
|
|
108
|
-
* turn-end trigger so an idle/empty turn doesn't fire a pointless audit, and
|
|
109
|
-
* ensures the final user-facing claim is always covered by at least one audit.
|
|
110
|
-
*/
|
|
111
|
-
hasUnauditedAssertions = false;
|
|
112
|
-
/** At most one coalesced pending trigger while an audit is in flight. */
|
|
113
|
-
pendingTrigger = null;
|
|
114
|
-
/**
|
|
115
|
-
* AbortController for the currently-running audit, if any. Lets {@link stop}
|
|
116
|
-
* cancel in-flight LLM/MCP work so a disabled sidecar doesn't keep burning
|
|
117
|
-
* tokens or persist stale findings after the user toggles it off.
|
|
118
|
-
*/
|
|
119
|
-
activeController = null;
|
|
120
|
-
constructor(deps) {
|
|
121
|
-
this.config = deps.config;
|
|
122
|
-
this.deps = deps;
|
|
123
|
-
}
|
|
124
|
-
get enabled() {
|
|
125
|
-
return this.config.factCheck.enabled;
|
|
126
|
-
}
|
|
127
|
-
get threshold() {
|
|
128
|
-
return this.config.factCheck.triggerEveryNToolCalls;
|
|
129
|
-
}
|
|
130
|
-
/** Returns true when the sidecar is active for this profile. */
|
|
131
|
-
start() {
|
|
132
|
-
if (!this.enabled) {
|
|
133
|
-
logger.debug("[factcheck] sidecar disabled");
|
|
134
|
-
return false;
|
|
135
|
-
}
|
|
136
|
-
this.stopped = false;
|
|
137
|
-
this.whitelistCount = 0;
|
|
138
|
-
this.counterArmed = false;
|
|
139
|
-
this.hasUnauditedAssertions = false;
|
|
140
|
-
logger.system(`[factcheck] sidecar started (trigger every ${this.threshold} whitelisted tool call(s))`);
|
|
141
|
-
return true;
|
|
142
|
-
}
|
|
143
|
-
stop() {
|
|
144
|
-
this.stopped = true;
|
|
145
|
-
// Cancel any in-flight audit so it doesn't keep running (and persisting
|
|
146
|
-
// findings) after the feature has been toggled off. The audit's own
|
|
147
|
-
// catch/finally handles the abort; we just need the signal to fire.
|
|
148
|
-
this.activeController?.abort();
|
|
149
|
-
}
|
|
150
|
-
/**
|
|
151
|
-
* Observe a single top-level tool call. Increments the whitelist counter for
|
|
152
|
-
* non-blacklisted tools; when the threshold is reached it *arms* the counter
|
|
153
|
-
* trigger rather than auditing immediately. The audit fires on the next
|
|
154
|
-
* agent assertion ({@link recordAssertion}) so the snapshot reflects the
|
|
155
|
-
* claim the tool results produced, not the pre-tool-call state. Safe to call
|
|
156
|
-
* on the agent's hot path — it never blocks.
|
|
157
|
-
*/
|
|
158
|
-
recordToolCall(toolName) {
|
|
159
|
-
if (!this.enabled || this.stopped)
|
|
160
|
-
return;
|
|
161
|
-
if (isBlacklisted(toolName))
|
|
162
|
-
return;
|
|
163
|
-
this.whitelistCount += 1;
|
|
164
|
-
if (this.whitelistCount >= this.threshold) {
|
|
165
|
-
this.whitelistCount = 0;
|
|
166
|
-
this.counterArmed = true;
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
/**
|
|
170
|
-
* Observe a top-level agent assertion (reasoning / prose / notify_user). This
|
|
171
|
-
* is where the verifiable claims live, so it both (a) fires an armed counter
|
|
172
|
-
* audit now that the claim exists in the snapshot, and (b) marks that there
|
|
173
|
-
* is fresh content for a turn-end audit to cover.
|
|
174
|
-
*/
|
|
175
|
-
recordAssertion() {
|
|
176
|
-
if (!this.enabled || this.stopped)
|
|
177
|
-
return;
|
|
178
|
-
this.hasUnauditedAssertions = true;
|
|
179
|
-
if (this.counterArmed) {
|
|
180
|
-
this.counterArmed = false;
|
|
181
|
-
this.fire("counter");
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
/**
|
|
185
|
-
* The agent finished its turn. Audit any assertions not yet covered by an
|
|
186
|
-
* audit — notably the final notify_user answer, which is blacklisted from the
|
|
187
|
-
* counter and would otherwise never be checked.
|
|
188
|
-
*/
|
|
189
|
-
onTurnEnd() {
|
|
190
|
-
if (!this.enabled || this.stopped)
|
|
191
|
-
return;
|
|
192
|
-
if (!this.hasUnauditedAssertions)
|
|
193
|
-
return;
|
|
194
|
-
this.fire("turn_end");
|
|
195
|
-
}
|
|
196
|
-
/** Force an audit on context compaction, resetting the counter. */
|
|
197
|
-
onCompaction() {
|
|
198
|
-
if (!this.enabled || this.stopped)
|
|
199
|
-
return;
|
|
200
|
-
this.whitelistCount = 0;
|
|
201
|
-
this.counterArmed = false;
|
|
202
|
-
this.fire("compaction");
|
|
203
|
-
}
|
|
204
|
-
/** Force an audit on engine switch, resetting the counter. */
|
|
205
|
-
onEngineSwitch() {
|
|
206
|
-
if (!this.enabled || this.stopped)
|
|
207
|
-
return;
|
|
208
|
-
this.whitelistCount = 0;
|
|
209
|
-
this.counterArmed = false;
|
|
210
|
-
this.fire("engine_switch");
|
|
211
|
-
}
|
|
212
|
-
/**
|
|
213
|
-
* Schedule an audit. If one is already running, record (coalesce) the
|
|
214
|
-
* trigger and return — it will run once the current audit finishes. Counter
|
|
215
|
-
* triggers never overwrite a higher-priority forced trigger that is already
|
|
216
|
-
* pending.
|
|
217
|
-
*/
|
|
218
|
-
fire(trigger) {
|
|
219
|
-
if (this.running) {
|
|
220
|
-
// Coalesce: keep a forced trigger over a counter trigger if both queue up.
|
|
221
|
-
if (this.pendingTrigger === null || (this.pendingTrigger === "counter" && trigger !== "counter")) {
|
|
222
|
-
this.pendingTrigger = trigger;
|
|
223
|
-
}
|
|
224
|
-
logger.debug(`[factcheck] audit in flight; coalesced trigger=${trigger}`);
|
|
225
|
-
return;
|
|
226
|
-
}
|
|
227
|
-
void this.runAudit(trigger);
|
|
228
|
-
}
|
|
229
|
-
async runAudit(trigger) {
|
|
230
|
-
this.running = true;
|
|
231
|
-
// Hard-bound the audit with an AbortController. On timeout we abort the
|
|
232
|
-
// in-flight work (LLM + MCP/HTTP calls observe the signal) AND we await the
|
|
233
|
-
// audit promise to actually settle before releasing the serial lock — so a
|
|
234
|
-
// slow audit can never overlap the next one (#2). The same controller is
|
|
235
|
-
// also aborted by {@link stop}, so a disabled sidecar cancels its running
|
|
236
|
-
// audit instead of letting it finish (and persist stale findings) detached.
|
|
237
|
-
const controller = new AbortController();
|
|
238
|
-
this.activeController = controller;
|
|
239
|
-
const timer = setTimeout(() => {
|
|
240
|
-
logger.warn(`[factcheck] audit exceeded ${this.config.factCheck.auditTimeoutMs}ms; aborting`);
|
|
241
|
-
controller.abort();
|
|
242
|
-
}, this.config.factCheck.auditTimeoutMs);
|
|
243
|
-
timer.unref();
|
|
244
|
-
try {
|
|
245
|
-
const snapshot = this.deps.getSnapshot();
|
|
246
|
-
// The snapshot now covers the current assertions, so clear the turn-end
|
|
247
|
-
// gate. Assertions recorded after this point re-arm it for a later audit.
|
|
248
|
-
this.hasUnauditedAssertions = false;
|
|
249
|
-
logger.debug(`[factcheck] starting audit (trigger=${trigger}, ${snapshot.length} chars)`);
|
|
250
|
-
const { findings, claimResults } = await runFactCheckAudit({
|
|
251
|
-
config: this.config,
|
|
252
|
-
snapshot,
|
|
253
|
-
financialVerification: this.config.factCheck.financialVerification,
|
|
254
|
-
signal: controller.signal,
|
|
255
|
-
});
|
|
256
|
-
// Record the full audit (every claim + outcome) to the operator-facing
|
|
257
|
-
// append-only history, regardless of how findings are delivered. Skip
|
|
258
|
-
// when stopped so a disabled sidecar leaves no trailing records. This is
|
|
259
|
-
// independent of corrections.json (which is read-then-deleted).
|
|
260
|
-
if (claimResults.length > 0 && !this.stopped) {
|
|
261
|
-
await appendAuditLog({
|
|
262
|
-
at: new Date().toISOString(),
|
|
263
|
-
trigger,
|
|
264
|
-
claims: claimResults,
|
|
265
|
-
});
|
|
266
|
-
}
|
|
267
|
-
if (findings.length > 0) {
|
|
268
|
-
// Try the live path first. Persist as the durable backstop only when it
|
|
269
|
-
// was not handled live (idle / injection failed / handler threw), so a
|
|
270
|
-
// correction is delivered exactly once and never lost. The
|
|
271
|
-
// `!this.stopped && this.enabled` guard also covers the race where the
|
|
272
|
-
// audit settled (e.g. timed out then resolved) right after `stop()`:
|
|
273
|
-
// we don't want a disabled sidecar to write findings that would later
|
|
274
|
-
// surface out of context when the feature is re-enabled.
|
|
275
|
-
//
|
|
276
|
-
// A `turn_end` audit deliberately skips the live path: the turn it
|
|
277
|
-
// covers is already over, so mid-turn injection is conceptually wrong
|
|
278
|
-
// and racy (the input generator is closing). Route it straight to the
|
|
279
|
-
// durable backstop, which the next wake cycle injects when idle.
|
|
280
|
-
let handledLive = false;
|
|
281
|
-
if (!this.stopped && trigger !== "turn_end") {
|
|
282
|
-
try {
|
|
283
|
-
handledLive = await this.deps.onFindings(findings);
|
|
284
|
-
}
|
|
285
|
-
catch (err) {
|
|
286
|
-
logger.warn(`[factcheck] onFindings handler threw: ${err instanceof Error ? err.message : String(err)}`);
|
|
287
|
-
}
|
|
288
|
-
}
|
|
289
|
-
if (!handledLive && !this.stopped && this.enabled) {
|
|
290
|
-
await appendPendingCorrections({
|
|
291
|
-
generatedAt: Date.now(),
|
|
292
|
-
trigger,
|
|
293
|
-
findings,
|
|
294
|
-
});
|
|
295
|
-
// A persisted (not live-injected) batch only reaches the agent on
|
|
296
|
-
// the next wake. If it contains a hard factual error, proactively
|
|
297
|
-
// wake the idle agent so it reconciles the contradiction promptly
|
|
298
|
-
// rather than waiting for the next message/heartbeat. Warnings
|
|
299
|
-
// (unverifiable) are low-signal and never wake — they ride along on
|
|
300
|
-
// the next natural wake. The handler itself re-checks agent state, so
|
|
301
|
-
// we don't re-check stopped/enabled here (a stop() racing the persist
|
|
302
|
-
// await at worst yields one harmless extra wake into an empty cycle).
|
|
303
|
-
if (findings.some((f) => f.severity === "error")) {
|
|
304
|
-
try {
|
|
305
|
-
this.deps.onPersistedError?.();
|
|
306
|
-
}
|
|
307
|
-
catch (err) {
|
|
308
|
-
logger.warn(`[factcheck] onPersistedError handler threw: ${err instanceof Error ? err.message : String(err)}`);
|
|
309
|
-
}
|
|
310
|
-
}
|
|
311
|
-
}
|
|
312
|
-
}
|
|
313
|
-
}
|
|
314
|
-
catch (err) {
|
|
315
|
-
logger.warn(`[factcheck] audit failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
316
|
-
}
|
|
317
|
-
finally {
|
|
318
|
-
clearTimeout(timer);
|
|
319
|
-
this.running = false;
|
|
320
|
-
if (this.activeController === controller) {
|
|
321
|
-
this.activeController = null;
|
|
322
|
-
}
|
|
323
|
-
// Drain a coalesced trigger, if any, immediately after completion. Skip
|
|
324
|
-
// when stopped so a disabled sidecar doesn't kick off follow-up audits.
|
|
325
|
-
const next = this.pendingTrigger;
|
|
326
|
-
this.pendingTrigger = null;
|
|
327
|
-
if (next && !this.stopped) {
|
|
328
|
-
void this.runAudit(next);
|
|
329
|
-
}
|
|
330
|
-
}
|
|
331
|
-
}
|
|
332
|
-
}
|
|
333
|
-
/**
|
|
334
|
-
* Whether a tool call is excluded from the counter trigger. Tool names arrive
|
|
335
|
-
* fully qualified (e.g. `mcp__visionclaw__notify_user`); we match against the
|
|
336
|
-
* bare suffix so the blacklist stays engine- and prefix-agnostic. Unknown
|
|
337
|
-
* tools (third-party MCP, browser, file reads) are NOT blacklisted — see
|
|
338
|
-
* {@link BLACKLIST}.
|
|
339
|
-
*/
|
|
340
|
-
export function isBlacklisted(toolName) {
|
|
341
|
-
if (BLACKLIST.has(toolName))
|
|
342
|
-
return true;
|
|
343
|
-
const lastSegment = toolName.includes("__")
|
|
344
|
-
? toolName.slice(toolName.lastIndexOf("__") + 2)
|
|
345
|
-
: toolName;
|
|
346
|
-
return BLACKLIST.has(lastSegment);
|
|
347
|
-
}
|
|
348
|
-
//# sourceMappingURL=sidecar.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sidecar.js","sourceRoot":"","sources":["../../src/factcheck/sidecar.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* File-backed store for the Async Fact-Check Sidecar (issue #530).
|
|
3
|
-
*
|
|
4
|
-
* The sidecar keeps durable state under the active profile directory
|
|
5
|
-
* (`~/.visionclaw/profiles/<profile>/factcheck/`):
|
|
6
|
-
*
|
|
7
|
-
* - `corrections.json` — pending corrections produced by the most recent
|
|
8
|
-
* audit(s) that have not yet been consumed by the main agent. The main
|
|
9
|
-
* agent reads + clears this at the start of each wake cycle (or as soon
|
|
10
|
-
* as an active turn picks them up mid-turn). This is transient: read-then-
|
|
11
|
-
* delete.
|
|
12
|
-
* - `audit-log.jsonl` — append-only history of every completed audit (its
|
|
13
|
-
* trigger + every claim checked and that claim's outcome/detail), so an
|
|
14
|
-
* operator can review what the fact-checker examined and concluded long
|
|
15
|
-
* after the corrections themselves were consumed. Size-rotated; never read
|
|
16
|
-
* back by the agent.
|
|
17
|
-
*
|
|
18
|
-
* The whitelist tool-call counter intentionally lives in-process (not on
|
|
19
|
-
* disk): it is a transient signal that resets whenever the process restarts,
|
|
20
|
-
* and writing it on every tool call would be wasteful.
|
|
21
|
-
*
|
|
22
|
-
* All file access is best-effort and resilient to a missing/corrupt file —
|
|
23
|
-
* a fact-check store failure must never take down the agent.
|
|
24
|
-
*/
|
|
25
|
-
import { z } from "zod";
|
|
26
|
-
/** Severity of a single fact-check finding. */
|
|
27
|
-
export type FactCheckSeverity = "warning" | "error";
|
|
28
|
-
declare const FactCheckFindingSchema: z.ZodObject<{
|
|
29
|
-
severity: z.ZodEnum<{
|
|
30
|
-
error: "error";
|
|
31
|
-
warning: "warning";
|
|
32
|
-
}>;
|
|
33
|
-
claim: z.ZodString;
|
|
34
|
-
detail: z.ZodString;
|
|
35
|
-
}, z.core.$strip>;
|
|
36
|
-
declare const PendingCorrectionsSchema: z.ZodObject<{
|
|
37
|
-
generatedAt: z.ZodNumber;
|
|
38
|
-
trigger: z.ZodString;
|
|
39
|
-
findings: z.ZodArray<z.ZodObject<{
|
|
40
|
-
severity: z.ZodEnum<{
|
|
41
|
-
error: "error";
|
|
42
|
-
warning: "warning";
|
|
43
|
-
}>;
|
|
44
|
-
claim: z.ZodString;
|
|
45
|
-
detail: z.ZodString;
|
|
46
|
-
}, z.core.$strip>>;
|
|
47
|
-
}, z.core.$strip>;
|
|
48
|
-
/** One finding produced by an audit. */
|
|
49
|
-
export type FactCheckFinding = z.infer<typeof FactCheckFindingSchema>;
|
|
50
|
-
/**
|
|
51
|
-
* Compact severity breakdown for logs, e.g. `1 error, 2 warning`. Lets
|
|
52
|
-
* operators tell at a glance whether an audit surfaced a hard contradiction
|
|
53
|
-
* (error) or just an unverifiable note (warning) without opening
|
|
54
|
-
* corrections.json. Returns `0 findings` when empty.
|
|
55
|
-
*/
|
|
56
|
-
export declare function summarizeFindings(findings: readonly FactCheckFinding[]): string;
|
|
57
|
-
/** A batch of corrections from a single completed audit. */
|
|
58
|
-
export type PendingCorrections = z.infer<typeof PendingCorrectionsSchema>;
|
|
59
|
-
/**
|
|
60
|
-
* Append a batch of findings to the pending-corrections file. Multiple audits
|
|
61
|
-
* may complete before the main agent consumes them, so findings accumulate.
|
|
62
|
-
* No-op when `findings` is empty.
|
|
63
|
-
*/
|
|
64
|
-
export declare function appendPendingCorrections(batch: PendingCorrections): Promise<void>;
|
|
65
|
-
/**
|
|
66
|
-
* Read all pending correction batches. Returns `[]` when the file is missing,
|
|
67
|
-
* unreadable, or fails schema validation (so a partially-written or corrupt
|
|
68
|
-
* file can never surface malformed findings to the injector).
|
|
69
|
-
*/
|
|
70
|
-
export declare function readPendingCorrections(): Promise<PendingCorrections[]>;
|
|
71
|
-
/**
|
|
72
|
-
* Atomically read + clear pending corrections. Used by the main agent at the
|
|
73
|
-
* point it injects them so the same findings are never injected twice.
|
|
74
|
-
*/
|
|
75
|
-
export declare function consumePendingCorrections(): Promise<PendingCorrections[]>;
|
|
76
|
-
export declare function clearPendingCorrections(): Promise<void>;
|
|
77
|
-
/** Outcome of verifying a single claim. */
|
|
78
|
-
export type FactCheckOutcome = "verified" | "unverifiable" | "contradicted";
|
|
79
|
-
/** Per-claim result captured in the audit log (includes verified claims). */
|
|
80
|
-
export interface FactCheckClaimResult {
|
|
81
|
-
claim: string;
|
|
82
|
-
outcome: FactCheckOutcome;
|
|
83
|
-
/** Why it was contradicted/unverifiable; empty for verified. */
|
|
84
|
-
detail: string;
|
|
85
|
-
isFinancial: boolean;
|
|
86
|
-
symbols: string[];
|
|
87
|
-
}
|
|
88
|
-
/** One completed-audit record, appended to `audit-log.jsonl`. */
|
|
89
|
-
export interface FactCheckAuditRecord {
|
|
90
|
-
/** ISO-8601 timestamp of when the audit completed. */
|
|
91
|
-
at: string;
|
|
92
|
-
/** What triggered the audit (counter / compaction / engine_switch / turn_end). */
|
|
93
|
-
trigger: string;
|
|
94
|
-
/** Every claim the audit checked, with its outcome. Empty if none extracted. */
|
|
95
|
-
claims: FactCheckClaimResult[];
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Append one completed-audit record to the append-only `audit-log.jsonl`.
|
|
99
|
-
* Best-effort and never throws: an audit-log failure must not affect the audit
|
|
100
|
-
* itself. Independent of the corrections file — this is operator-facing history
|
|
101
|
-
* and is never consumed/cleared by the agent.
|
|
102
|
-
*/
|
|
103
|
-
export declare function appendAuditLog(record: FactCheckAuditRecord): Promise<void>;
|
|
104
|
-
/**
|
|
105
|
-
* Render pending corrections as an engine-agnostic plain-text block, matching
|
|
106
|
-
* the `[FACT-CHECK ALERT]` format described in the issue. Returns `null` when
|
|
107
|
-
* there is nothing to render.
|
|
108
|
-
*/
|
|
109
|
-
export declare function formatCorrections(batches: PendingCorrections[]): string | null;
|
|
110
|
-
export {};
|
|
111
|
-
//# sourceMappingURL=store.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/factcheck/store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAIH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,+CAA+C;AAC/C,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,OAAO,CAAC;AAEpD,QAAA,MAAM,sBAAsB;;;;;;;iBAS1B,CAAC;AAEH,QAAA,MAAM,wBAAwB;;;;;;;;;;;iBAM5B,CAAC;AAIH,wCAAwC;AACxC,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,SAAS,gBAAgB,EAAE,GAAG,MAAM,CAY/E;AAED,4DAA4D;AAC5D,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAuC1E;;;;GAIG;AACH,wBAAsB,wBAAwB,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBvF;AAED;;;;GAIG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAE5E;AAqBD;;;GAGG;AACH,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAQ/E;AAED,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC,CAE7D;AAUD,2CAA2C;AAC3C,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG,cAAc,GAAG,cAAc,CAAC;AAE5E,6EAA6E;AAC7E,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,gBAAgB,CAAC;IAC1B,gEAAgE;IAChE,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,iEAAiE;AACjE,MAAM,WAAW,oBAAoB;IACnC,sDAAsD;IACtD,EAAE,EAAE,MAAM,CAAC;IACX,kFAAkF;IAClF,OAAO,EAAE,MAAM,CAAC;IAChB,gFAAgF;IAChF,MAAM,EAAE,oBAAoB,EAAE,CAAC;CAChC;AAQD;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAYhF;AAuBD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,EAAE,GAAG,MAAM,GAAG,IAAI,CAkB9E"}
|