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,102 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Background usage reporter — periodically scans `transcript_memory.db` for
|
|
3
|
-
* wake cycles that have not yet been queued into `usage.db`, builds usage
|
|
4
|
-
* reports from stored tool call data, and enqueues them.
|
|
5
|
-
*
|
|
6
|
-
* Semantics:
|
|
7
|
-
* - `wake_cycles.usage_reported = 0` → needs to be enqueued
|
|
8
|
-
* - `wake_cycles.usage_reported = 1` → already enqueued into usage.db
|
|
9
|
-
* - Server delivery state is tracked separately in usage.db
|
|
10
|
-
*
|
|
11
|
-
* If tool_calls_json is NULL or invalid, the cycle is still reported with
|
|
12
|
-
* empty tool calls — the server marks coverage as `missing_tool_calls`.
|
|
13
|
-
*/
|
|
14
|
-
import { listUnreportedWakeCycles, markWakeCycleUsageReported, markWakeCycleUsageReportError, } from "./transcript-indexer.js";
|
|
15
|
-
import { buildWakeCycleUsageReportFromRecord } from "./usage-report-builder.js";
|
|
16
|
-
import { enqueueUsageReport } from "./usage-report-queue.js";
|
|
17
|
-
import { logger } from "../logger.js";
|
|
18
|
-
/** Maximum wake cycles to process in a single scan. */
|
|
19
|
-
const MAX_CYCLES_PER_SCAN = 100;
|
|
20
|
-
export class UsageReporter {
|
|
21
|
-
config;
|
|
22
|
-
timer = null;
|
|
23
|
-
scanIntervalMs = 5 * 60_000; // 5 minutes
|
|
24
|
-
constructor(config) {
|
|
25
|
-
this.config = config;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Start the periodic background scan.
|
|
29
|
-
*/
|
|
30
|
-
start() {
|
|
31
|
-
if (this.timer)
|
|
32
|
-
return; // already started
|
|
33
|
-
logger.debug("[usage-reporter] Started (scan interval: 5 minutes)");
|
|
34
|
-
// Run an initial scan shortly after startup to catch any unreported
|
|
35
|
-
// cycles from the previous run.
|
|
36
|
-
this.timer = setTimeout(() => {
|
|
37
|
-
this.tick();
|
|
38
|
-
}, 10_000); // 10 seconds after startup
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Stop the periodic scan.
|
|
42
|
-
*/
|
|
43
|
-
stop() {
|
|
44
|
-
if (this.timer) {
|
|
45
|
-
clearTimeout(this.timer);
|
|
46
|
-
this.timer = null;
|
|
47
|
-
}
|
|
48
|
-
logger.debug("[usage-reporter] Stopped");
|
|
49
|
-
}
|
|
50
|
-
tick() {
|
|
51
|
-
try {
|
|
52
|
-
this.scanAndReport();
|
|
53
|
-
}
|
|
54
|
-
catch (err) {
|
|
55
|
-
logger.warn(`[usage-reporter] Scan failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
56
|
-
}
|
|
57
|
-
finally {
|
|
58
|
-
// Schedule next scan
|
|
59
|
-
if (this.timer !== null) {
|
|
60
|
-
this.timer = setTimeout(() => {
|
|
61
|
-
this.tick();
|
|
62
|
-
}, this.scanIntervalMs);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
scanAndReport() {
|
|
67
|
-
let rows;
|
|
68
|
-
try {
|
|
69
|
-
rows = listUnreportedWakeCycles(MAX_CYCLES_PER_SCAN);
|
|
70
|
-
}
|
|
71
|
-
catch (err) {
|
|
72
|
-
logger.warn(`[usage-reporter] Failed to query unreported cycles: ${err instanceof Error ? err.message : String(err)}`);
|
|
73
|
-
return;
|
|
74
|
-
}
|
|
75
|
-
if (rows.length === 0)
|
|
76
|
-
return;
|
|
77
|
-
logger.debug(`[usage-reporter] Found ${rows.length} unreported wake cycle(s)`);
|
|
78
|
-
let enqueued = 0;
|
|
79
|
-
let failed = 0;
|
|
80
|
-
for (const row of rows) {
|
|
81
|
-
try {
|
|
82
|
-
const report = buildWakeCycleUsageReportFromRecord({
|
|
83
|
-
row,
|
|
84
|
-
config: this.config,
|
|
85
|
-
});
|
|
86
|
-
enqueueUsageReport(report);
|
|
87
|
-
markWakeCycleUsageReported(row.wake_cycle_id);
|
|
88
|
-
enqueued++;
|
|
89
|
-
}
|
|
90
|
-
catch (err) {
|
|
91
|
-
const errorMsg = err instanceof Error ? err.message : String(err);
|
|
92
|
-
markWakeCycleUsageReportError(row.wake_cycle_id, errorMsg);
|
|
93
|
-
failed++;
|
|
94
|
-
logger.warn(`[usage-reporter] Failed to enqueue usage report for ${row.wake_cycle_id}: ${errorMsg}`);
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
if (enqueued > 0) {
|
|
98
|
-
logger.system(`[usage-reporter] Enqueued ${enqueued} usage report(s)${failed > 0 ? `, ${failed} failed` : ""}`);
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
//# sourceMappingURL=usage-reporter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"usage-reporter.js","sourceRoot":"","sources":["../../src/agent/usage-reporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EACL,wBAAwB,EACxB,0BAA0B,EAC1B,6BAA6B,GAC9B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,mCAAmC,EAAE,MAAM,2BAA2B,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,uDAAuD;AACvD,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAEhC,MAAM,OAAO,aAAa;IAIK;IAHrB,KAAK,GAAyC,IAAI,CAAC;IAC1C,cAAc,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,YAAY;IAE1D,YAA6B,MAAwB;QAAxB,WAAM,GAAN,MAAM,CAAkB;IAAG,CAAC;IAEzD;;OAEG;IACH,KAAK;QACH,IAAI,IAAI,CAAC,KAAK;YAAE,OAAO,CAAC,kBAAkB;QAC1C,MAAM,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;QAEpE,oEAAoE;QACpE,gCAAgC;QAChC,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC3B,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,2BAA2B;IACzC,CAAC;IAED;;OAEG;IACH,IAAI;QACF,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QACpB,CAAC;QACD,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC3C,CAAC;IAEO,IAAI;QACV,IAAI,CAAC;YACH,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CACT,iCAAiC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CACpF,CAAC;QACJ,CAAC;gBAAS,CAAC;YACT,qBAAqB;YACrB,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;gBACxB,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;oBAC3B,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;IACH,CAAC;IAEO,aAAa;QACnB,IAAI,IAAI,CAAC;QACT,IAAI,CAAC;YACH,IAAI,GAAG,wBAAwB,CAAC,mBAAmB,CAAC,CAAC;QACvD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CACT,uDAAuD,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAC1G,CAAC;YACF,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAE9B,MAAM,CAAC,KAAK,CACV,0BAA0B,IAAI,CAAC,MAAM,2BAA2B,CACjE,CAAC;QAEF,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,IAAI,MAAM,GAAG,CAAC,CAAC;QAEf,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,mCAAmC,CAAC;oBACjD,GAAG;oBACH,MAAM,EAAE,IAAI,CAAC,MAAM;iBACpB,CAAC,CAAC;gBACH,kBAAkB,CAAC,MAAM,CAAC,CAAC;gBAC3B,0BAA0B,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;gBAC9C,QAAQ,EAAE,CAAC;YACb,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,QAAQ,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAClE,6BAA6B,CAAC,GAAG,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;gBAC3D,MAAM,EAAE,CAAC;gBACT,MAAM,CAAC,IAAI,CACT,uDAAuD,GAAG,CAAC,aAAa,KAAK,QAAQ,EAAE,CACxF,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;YACjB,MAAM,CAAC,MAAM,CACX,6BAA6B,QAAQ,mBAAmB,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CACjG,CAAC;QACJ,CAAC;IACH,CAAC;CACF"}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import type { ToolCallFact } from "./usage-report-types.js";
|
|
2
|
-
export declare const MAX_TOOL_CALLS_PER_CYCLE = 500;
|
|
3
|
-
export interface DrainResult {
|
|
4
|
-
facts: ToolCallFact[];
|
|
5
|
-
truncated: boolean;
|
|
6
|
-
originalCount: number;
|
|
7
|
-
}
|
|
8
|
-
export declare class WakeCycleToolTracker {
|
|
9
|
-
private readonly inFlight;
|
|
10
|
-
private readonly completed;
|
|
11
|
-
/**
|
|
12
|
-
* Call when a `tool_use` event arrives from the SDK stream.
|
|
13
|
-
* Records the tool call as in-flight until a matching `tool_result` closes it.
|
|
14
|
-
*/
|
|
15
|
-
onToolUse(event: {
|
|
16
|
-
toolUseId: string;
|
|
17
|
-
parentToolUseId?: string;
|
|
18
|
-
toolName: string;
|
|
19
|
-
}): void;
|
|
20
|
-
/**
|
|
21
|
-
* Call when a `tool_result` event arrives from the SDK stream.
|
|
22
|
-
* Finalizes the matching in-flight entry and moves it to the completed list.
|
|
23
|
-
*/
|
|
24
|
-
onToolResult(event: {
|
|
25
|
-
toolUseId: string;
|
|
26
|
-
isError: boolean;
|
|
27
|
-
errorKind?: string;
|
|
28
|
-
}): void;
|
|
29
|
-
/**
|
|
30
|
-
* Drain all completed facts plus any still-in-flight facts (auto-closed
|
|
31
|
-
* with `success: false` and `errorKind: "incomplete"`).
|
|
32
|
-
*
|
|
33
|
-
* If the total count exceeds `MAX_TOOL_CALLS_PER_CYCLE`, the returned
|
|
34
|
-
* array is truncated to the first N entries (sorted by `startedAt`) and
|
|
35
|
-
* `truncated` is set to `true`.
|
|
36
|
-
*/
|
|
37
|
-
drain(): DrainResult;
|
|
38
|
-
}
|
|
39
|
-
//# sourceMappingURL=wake-cycle-tool-tracker.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wake-cycle-tool-tracker.d.ts","sourceRoot":"","sources":["../../src/agent/wake-cycle-tool-tracker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAG5D,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAS5C,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoC;IAC7D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAsB;IAEhD;;;OAGG;IACH,SAAS,CAAC,KAAK,EAAE;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,QAAQ,EAAE,MAAM,CAAC;KAClB,GAAG,IAAI;IASR;;;OAGG;IACH,YAAY,CAAC,KAAK,EAAE;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,OAAO,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GAAG,IAAI;IAsBR;;;;;;;OAOG;IACH,KAAK,IAAI,WAAW;CA2BrB"}
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
import { logger } from "../logger.js";
|
|
2
|
-
export const MAX_TOOL_CALLS_PER_CYCLE = 500;
|
|
3
|
-
export class WakeCycleToolTracker {
|
|
4
|
-
inFlight = new Map();
|
|
5
|
-
completed = [];
|
|
6
|
-
/**
|
|
7
|
-
* Call when a `tool_use` event arrives from the SDK stream.
|
|
8
|
-
* Records the tool call as in-flight until a matching `tool_result` closes it.
|
|
9
|
-
*/
|
|
10
|
-
onToolUse(event) {
|
|
11
|
-
this.inFlight.set(event.toolUseId, {
|
|
12
|
-
toolUseId: event.toolUseId,
|
|
13
|
-
parentToolUseId: event.parentToolUseId,
|
|
14
|
-
toolName: event.toolName,
|
|
15
|
-
startedAt: new Date().toISOString(),
|
|
16
|
-
});
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Call when a `tool_result` event arrives from the SDK stream.
|
|
20
|
-
* Finalizes the matching in-flight entry and moves it to the completed list.
|
|
21
|
-
*/
|
|
22
|
-
onToolResult(event) {
|
|
23
|
-
const entry = this.inFlight.get(event.toolUseId);
|
|
24
|
-
if (!entry) {
|
|
25
|
-
logger.warn(`tool_result for unknown toolUseId ${event.toolUseId} — ignoring`);
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
28
|
-
this.inFlight.delete(event.toolUseId);
|
|
29
|
-
this.completed.push({
|
|
30
|
-
toolUseId: entry.toolUseId,
|
|
31
|
-
parentToolUseId: entry.parentToolUseId,
|
|
32
|
-
toolName: entry.toolName,
|
|
33
|
-
startedAt: entry.startedAt,
|
|
34
|
-
endedAt: new Date().toISOString(),
|
|
35
|
-
success: !event.isError,
|
|
36
|
-
errorKind: event.errorKind,
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Drain all completed facts plus any still-in-flight facts (auto-closed
|
|
41
|
-
* with `success: false` and `errorKind: "incomplete"`).
|
|
42
|
-
*
|
|
43
|
-
* If the total count exceeds `MAX_TOOL_CALLS_PER_CYCLE`, the returned
|
|
44
|
-
* array is truncated to the first N entries (sorted by `startedAt`) and
|
|
45
|
-
* `truncated` is set to `true`.
|
|
46
|
-
*/
|
|
47
|
-
drain() {
|
|
48
|
-
// Auto-close any still-in-flight entries
|
|
49
|
-
const now = new Date().toISOString();
|
|
50
|
-
for (const entry of Array.from(this.inFlight.values())) {
|
|
51
|
-
this.completed.push({
|
|
52
|
-
toolUseId: entry.toolUseId,
|
|
53
|
-
parentToolUseId: entry.parentToolUseId,
|
|
54
|
-
toolName: entry.toolName,
|
|
55
|
-
startedAt: entry.startedAt,
|
|
56
|
-
endedAt: now,
|
|
57
|
-
success: false,
|
|
58
|
-
errorKind: "incomplete",
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
this.inFlight.clear();
|
|
62
|
-
// Sort completed facts by startedAt
|
|
63
|
-
this.completed.sort((a, b) => a.startedAt.localeCompare(b.startedAt));
|
|
64
|
-
const originalCount = this.completed.length;
|
|
65
|
-
const truncated = originalCount > MAX_TOOL_CALLS_PER_CYCLE;
|
|
66
|
-
const facts = truncated
|
|
67
|
-
? this.completed.splice(0, MAX_TOOL_CALLS_PER_CYCLE)
|
|
68
|
-
: this.completed.splice(0);
|
|
69
|
-
return { facts, truncated, originalCount };
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
//# sourceMappingURL=wake-cycle-tool-tracker.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wake-cycle-tool-tracker.js","sourceRoot":"","sources":["../../src/agent/wake-cycle-tool-tracker.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,CAAC;AAe5C,MAAM,OAAO,oBAAoB;IACd,QAAQ,GAAG,IAAI,GAAG,EAAyB,CAAC;IAC5C,SAAS,GAAmB,EAAE,CAAC;IAEhD;;;OAGG;IACH,SAAS,CAAC,KAIT;QACC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE;YACjC,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,eAAe,EAAE,KAAK,CAAC,eAAe;YACtC,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,KAIZ;QACC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACjD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,CAAC,IAAI,CACT,qCAAqC,KAAK,CAAC,SAAS,aAAa,CAClE,CAAC;YACF,OAAO;QACT,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAEtC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;YAClB,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,eAAe,EAAE,KAAK,CAAC,eAAe;YACtC,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACjC,OAAO,EAAE,CAAC,KAAK,CAAC,OAAO;YACvB,SAAS,EAAE,KAAK,CAAC,SAAS;SAC3B,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IACH,KAAK;QACH,yCAAyC;QACzC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;YACvD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;gBAClB,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,eAAe,EAAE,KAAK,CAAC,eAAe;gBACtC,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,OAAO,EAAE,GAAG;gBACZ,OAAO,EAAE,KAAK;gBACd,SAAS,EAAE,YAAY;aACxB,CAAC,CAAC;QACL,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QAEtB,oCAAoC;QACpC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;QAEtE,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;QAC5C,MAAM,SAAS,GAAG,aAAa,GAAG,wBAAwB,CAAC;QAC3D,MAAM,KAAK,GAAG,SAAS;YACrB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,wBAAwB,CAAC;YACpD,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAE7B,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC;IAC7C,CAAC;CACF"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared Anthropic API credentials.
|
|
3
|
-
*
|
|
4
|
-
* Three tiers, highest priority first:
|
|
5
|
-
* 1. Per-agent bundle (`credentialBundle.body.llm` for Anthropic) —
|
|
6
|
-
* delivered by the heartbeat. Authoritative when present.
|
|
7
|
-
* 2. Shared in-memory heartbeat cache (`sharedKeys.anthropicApiKey`).
|
|
8
|
-
* 3. Local `config.anthropicApiKey` — manual or per-agent persisted
|
|
9
|
-
* fallback used when the higher-priority runtime tiers are unavailable.
|
|
10
|
-
* The heartbeat shared-keys path seeds this on first delivery but
|
|
11
|
-
* never overwrites an existing value.
|
|
12
|
-
*
|
|
13
|
-
* This mirrors `gemini-credentials.ts`.
|
|
14
|
-
*/
|
|
15
|
-
import type { VisionClawConfig } from "./config/types.js";
|
|
16
|
-
export declare function setBundleAnthropicApiKey(apiKey: string | undefined): boolean;
|
|
17
|
-
export declare function setSharedAnthropicApiKey(apiKey: string | undefined): boolean;
|
|
18
|
-
/**
|
|
19
|
-
* Resolve the Anthropic API key to use.
|
|
20
|
-
*
|
|
21
|
-
* Precedence: per-agent bundle > shared cache > local config (offline cache).
|
|
22
|
-
*/
|
|
23
|
-
export declare function resolveAnthropicApiKey(config: VisionClawConfig): string | undefined;
|
|
24
|
-
//# sourceMappingURL=anthropic-credentials.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic-credentials.d.ts","sourceRoot":"","sources":["../src/anthropic-credentials.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAK1D,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAI5E;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAI5E;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,GAAG,SAAS,CAEnF"}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared Anthropic API credentials.
|
|
3
|
-
*
|
|
4
|
-
* Three tiers, highest priority first:
|
|
5
|
-
* 1. Per-agent bundle (`credentialBundle.body.llm` for Anthropic) —
|
|
6
|
-
* delivered by the heartbeat. Authoritative when present.
|
|
7
|
-
* 2. Shared in-memory heartbeat cache (`sharedKeys.anthropicApiKey`).
|
|
8
|
-
* 3. Local `config.anthropicApiKey` — manual or per-agent persisted
|
|
9
|
-
* fallback used when the higher-priority runtime tiers are unavailable.
|
|
10
|
-
* The heartbeat shared-keys path seeds this on first delivery but
|
|
11
|
-
* never overwrites an existing value.
|
|
12
|
-
*
|
|
13
|
-
* This mirrors `gemini-credentials.ts`.
|
|
14
|
-
*/
|
|
15
|
-
let bundleAnthropicApiKey;
|
|
16
|
-
let sharedAnthropicApiKey;
|
|
17
|
-
export function setBundleAnthropicApiKey(apiKey) {
|
|
18
|
-
if (bundleAnthropicApiKey === apiKey)
|
|
19
|
-
return false;
|
|
20
|
-
bundleAnthropicApiKey = apiKey;
|
|
21
|
-
return true;
|
|
22
|
-
}
|
|
23
|
-
export function setSharedAnthropicApiKey(apiKey) {
|
|
24
|
-
if (sharedAnthropicApiKey === apiKey)
|
|
25
|
-
return false;
|
|
26
|
-
sharedAnthropicApiKey = apiKey;
|
|
27
|
-
return true;
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Resolve the Anthropic API key to use.
|
|
31
|
-
*
|
|
32
|
-
* Precedence: per-agent bundle > shared cache > local config (offline cache).
|
|
33
|
-
*/
|
|
34
|
-
export function resolveAnthropicApiKey(config) {
|
|
35
|
-
return bundleAnthropicApiKey ?? sharedAnthropicApiKey ?? config.anthropicApiKey;
|
|
36
|
-
}
|
|
37
|
-
//# sourceMappingURL=anthropic-credentials.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic-credentials.js","sourceRoot":"","sources":["../src/anthropic-credentials.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,IAAI,qBAAyC,CAAC;AAC9C,IAAI,qBAAyC,CAAC;AAE9C,MAAM,UAAU,wBAAwB,CAAC,MAA0B;IACjE,IAAI,qBAAqB,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC;IACnD,qBAAqB,GAAG,MAAM,CAAC;IAC/B,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,MAA0B;IACjE,IAAI,qBAAqB,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC;IACnD,qBAAqB,GAAG,MAAM,CAAC;IAC/B,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAAwB;IAC7D,OAAO,qBAAqB,IAAI,qBAAqB,IAAI,MAAM,CAAC,eAAe,CAAC;AAClF,CAAC"}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* PAYG (Pay as You Go) command handler for the `request_payment` heartbeat command.
|
|
3
|
-
*
|
|
4
|
-
* This is deterministic bot code u2014 the LLM agent is never involved in
|
|
5
|
-
* payment flows. The handler:
|
|
6
|
-
*
|
|
7
|
-
* 1. Receives `request_payment` from the backend via heartbeat (includes amounts)
|
|
8
|
-
* 2. Sends an amount selection prompt (inline keyboard) to the owner via Telegram
|
|
9
|
-
* 3. Listens for `billing_payg_selected` events from the Telegram adapter
|
|
10
|
-
* 4. Calls the backend to create a Stripe Payment Link (one-time)
|
|
11
|
-
* 5. Sends the payment URL back to the owner as a URL button
|
|
12
|
-
*/
|
|
13
|
-
import type { CommandHandler } from "../agent/command-dispatcher.js";
|
|
14
|
-
import type { ChannelManager } from "../channels/manager.js";
|
|
15
|
-
import type { BillingPaygSelectedEvent } from "../channels/interface.js";
|
|
16
|
-
import type { OnboardingServiceClient } from "../onboarding/onboarding-service-client.js";
|
|
17
|
-
export interface PaygHandler extends CommandHandler {
|
|
18
|
-
/** Handle a billing_payg_selected event (user tapped an amount button). */
|
|
19
|
-
handleAmountSelected: (event: BillingPaygSelectedEvent) => Promise<void>;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Create a CommandHandler for the "request_payment" heartbeat command.
|
|
23
|
-
*
|
|
24
|
-
* @param channelManager - To send PAYG prompts and listen for amount selection events
|
|
25
|
-
* @param ownerChatId - The owner's Telegram chat ID
|
|
26
|
-
* @param serviceClient - Onboarding service client for creating payment links
|
|
27
|
-
*/
|
|
28
|
-
export declare function createPaygHandler(channelManager: ChannelManager, ownerChatId: number, serviceClient: OnboardingServiceClient | null): PaygHandler;
|
|
29
|
-
//# sourceMappingURL=payg-handler.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"payg-handler.d.ts","sourceRoot":"","sources":["../../src/billing/payg-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AAW1F,MAAM,WAAW,WAAY,SAAQ,cAAc;IACjD,2EAA2E;IAC3E,oBAAoB,EAAE,CAAC,KAAK,EAAE,wBAAwB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1E;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,cAAc,EAAE,cAAc,EAC9B,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,uBAAuB,GAAG,IAAI,GAC5C,WAAW,CAmGb"}
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* PAYG (Pay as You Go) command handler for the `request_payment` heartbeat command.
|
|
3
|
-
*
|
|
4
|
-
* This is deterministic bot code u2014 the LLM agent is never involved in
|
|
5
|
-
* payment flows. The handler:
|
|
6
|
-
*
|
|
7
|
-
* 1. Receives `request_payment` from the backend via heartbeat (includes amounts)
|
|
8
|
-
* 2. Sends an amount selection prompt (inline keyboard) to the owner via Telegram
|
|
9
|
-
* 3. Listens for `billing_payg_selected` events from the Telegram adapter
|
|
10
|
-
* 4. Calls the backend to create a Stripe Payment Link (one-time)
|
|
11
|
-
* 5. Sends the payment URL back to the owner as a URL button
|
|
12
|
-
*/
|
|
13
|
-
import { logger } from "../logger.js";
|
|
14
|
-
const MAX_RETRIES = 2;
|
|
15
|
-
const RETRY_DELAY_MS = 2_000;
|
|
16
|
-
function sleep(ms) {
|
|
17
|
-
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Create a CommandHandler for the "request_payment" heartbeat command.
|
|
21
|
-
*
|
|
22
|
-
* @param channelManager - To send PAYG prompts and listen for amount selection events
|
|
23
|
-
* @param ownerChatId - The owner's Telegram chat ID
|
|
24
|
-
* @param serviceClient - Onboarding service client for creating payment links
|
|
25
|
-
*/
|
|
26
|
-
export function createPaygHandler(channelManager, ownerChatId, serviceClient) {
|
|
27
|
-
async function handleAmountSelected(event) {
|
|
28
|
-
if (!serviceClient) {
|
|
29
|
-
logger.warn("[payg] No service client u2014 cannot create payment link");
|
|
30
|
-
await channelManager.sendMessage("telegram", String(event.chatId), "Payment is not configured. Please contact support.");
|
|
31
|
-
return;
|
|
32
|
-
}
|
|
33
|
-
logger.system(`[payg] Amount selected: $${event.amount} by chat ${event.chatId}`);
|
|
34
|
-
for (let attempt = 0; attempt <= MAX_RETRIES; attempt++) {
|
|
35
|
-
try {
|
|
36
|
-
const result = await serviceClient.createPaymentLink(event.amount, event.chatId);
|
|
37
|
-
if (result?.checkoutUrl) {
|
|
38
|
-
await channelManager.sendTelegramCheckoutLink(event.chatId, `$${event.amount} Top-Up`, result.checkoutUrl);
|
|
39
|
-
logger.system(`[payg] Payment link sent to chat ${event.chatId} for $${event.amount}`);
|
|
40
|
-
return;
|
|
41
|
-
}
|
|
42
|
-
if (attempt < MAX_RETRIES) {
|
|
43
|
-
logger.warn(`[payg] Payment link attempt ${attempt + 1} failed, retrying...`);
|
|
44
|
-
await channelManager.sendMessage("telegram", String(event.chatId), "Payment setup failed, retrying...");
|
|
45
|
-
await sleep(RETRY_DELAY_MS);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
catch (err) {
|
|
49
|
-
const errMsg = err instanceof Error ? err.message : String(err);
|
|
50
|
-
logger.err(`[payg] Payment link attempt ${attempt + 1} error: ${errMsg}`);
|
|
51
|
-
if (attempt < MAX_RETRIES) {
|
|
52
|
-
await sleep(RETRY_DELAY_MS);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
logger.err("[payg] All payment link attempts failed");
|
|
57
|
-
await channelManager.sendMessage("telegram", String(event.chatId), "Payment setup failed. Please try again later.");
|
|
58
|
-
}
|
|
59
|
-
const handler = Object.assign(async (_commandId, payload) => {
|
|
60
|
-
const raw = (payload ?? {});
|
|
61
|
-
const amounts = Array.isArray(raw.amounts) ? raw.amounts : [];
|
|
62
|
-
if (amounts.length === 0) {
|
|
63
|
-
logger.warn("[payg] request_payment received with no amounts");
|
|
64
|
-
return {
|
|
65
|
-
status: "failed",
|
|
66
|
-
result: JSON.stringify({ error: "No amounts in payload" }),
|
|
67
|
-
};
|
|
68
|
-
}
|
|
69
|
-
const typedPayload = {
|
|
70
|
-
reason: typeof raw.reason === "string" ? raw.reason : undefined,
|
|
71
|
-
amounts,
|
|
72
|
-
};
|
|
73
|
-
logger.system(`[payg] Request payment received with amounts: ${typedPayload.amounts.join(", ")}`);
|
|
74
|
-
try {
|
|
75
|
-
await channelManager.sendTelegramPaygPrompt(ownerChatId, typedPayload);
|
|
76
|
-
return {
|
|
77
|
-
status: "completed",
|
|
78
|
-
result: JSON.stringify({ message: "PAYG prompt sent to owner" }),
|
|
79
|
-
};
|
|
80
|
-
}
|
|
81
|
-
catch (err) {
|
|
82
|
-
const errMsg = err instanceof Error ? err.message : String(err);
|
|
83
|
-
logger.err(`[payg] Failed to send PAYG prompt: ${errMsg}`);
|
|
84
|
-
return {
|
|
85
|
-
status: "failed",
|
|
86
|
-
result: JSON.stringify({ error: errMsg }),
|
|
87
|
-
};
|
|
88
|
-
}
|
|
89
|
-
}, { handleAmountSelected });
|
|
90
|
-
return handler;
|
|
91
|
-
}
|
|
92
|
-
//# sourceMappingURL=payg-handler.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"payg-handler.js","sourceRoot":"","sources":["../../src/billing/payg-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Payment command handler for the `payment_required` heartbeat command.
|
|
3
|
-
*
|
|
4
|
-
* This is deterministic bot code u2014 the LLM agent is never involved in
|
|
5
|
-
* payment flows. The handler:
|
|
6
|
-
*
|
|
7
|
-
* 1. Receives `payment_required` from the backend via heartbeat (includes plans)
|
|
8
|
-
* 2. Sends a plan selection prompt (inline keyboard) to the owner via Telegram
|
|
9
|
-
* 3. Listens for `billing_plan_selected` events from the Telegram adapter
|
|
10
|
-
* 4. Calls the backend to create a Stripe Checkout Session
|
|
11
|
-
* 5. Sends the checkout URL back to the owner as a URL button
|
|
12
|
-
*/
|
|
13
|
-
import type { CommandHandler } from "../agent/command-dispatcher.js";
|
|
14
|
-
import type { ChannelManager } from "../channels/manager.js";
|
|
15
|
-
import type { OnboardingServiceClient } from "../onboarding/onboarding-service-client.js";
|
|
16
|
-
/**
|
|
17
|
-
* Create a CommandHandler for the "payment_required" heartbeat command.
|
|
18
|
-
*
|
|
19
|
-
* @param channelManager - To send payment prompts and listen for billing events
|
|
20
|
-
* @param ownerChatId - The owner's Telegram chat ID
|
|
21
|
-
* @param serviceClient - Optional onboarding service client for creating checkout sessions
|
|
22
|
-
*/
|
|
23
|
-
export declare function createPaymentHandler(channelManager: ChannelManager, ownerChatId: number, serviceClient: OnboardingServiceClient | null): CommandHandler;
|
|
24
|
-
//# sourceMappingURL=payment-handler.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"payment-handler.d.ts","sourceRoot":"","sources":["../../src/billing/payment-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AAW1F;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,cAAc,EAAE,cAAc,EAC9B,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,uBAAuB,GAAG,IAAI,GAC5C,cAAc,CA0GhB"}
|
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Payment command handler for the `payment_required` heartbeat command.
|
|
3
|
-
*
|
|
4
|
-
* This is deterministic bot code u2014 the LLM agent is never involved in
|
|
5
|
-
* payment flows. The handler:
|
|
6
|
-
*
|
|
7
|
-
* 1. Receives `payment_required` from the backend via heartbeat (includes plans)
|
|
8
|
-
* 2. Sends a plan selection prompt (inline keyboard) to the owner via Telegram
|
|
9
|
-
* 3. Listens for `billing_plan_selected` events from the Telegram adapter
|
|
10
|
-
* 4. Calls the backend to create a Stripe Checkout Session
|
|
11
|
-
* 5. Sends the checkout URL back to the owner as a URL button
|
|
12
|
-
*/
|
|
13
|
-
import { logger } from "../logger.js";
|
|
14
|
-
const MAX_CHECKOUT_RETRIES = 2;
|
|
15
|
-
const RETRY_DELAY_MS = 2_000;
|
|
16
|
-
function sleep(ms) {
|
|
17
|
-
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Create a CommandHandler for the "payment_required" heartbeat command.
|
|
21
|
-
*
|
|
22
|
-
* @param channelManager - To send payment prompts and listen for billing events
|
|
23
|
-
* @param ownerChatId - The owner's Telegram chat ID
|
|
24
|
-
* @param serviceClient - Optional onboarding service client for creating checkout sessions
|
|
25
|
-
*/
|
|
26
|
-
export function createPaymentHandler(channelManager, ownerChatId, serviceClient) {
|
|
27
|
-
// Wire up plan selection listener eagerly so it is active regardless of
|
|
28
|
-
// whether a `payment_required` command is dispatched (the subscription gate
|
|
29
|
-
// sends the plan picker directly without a command).
|
|
30
|
-
channelManager.on("billing_plan_selected", (event) => {
|
|
31
|
-
void handlePlanSelected(event);
|
|
32
|
-
});
|
|
33
|
-
async function handlePlanSelected(event) {
|
|
34
|
-
if (!serviceClient) {
|
|
35
|
-
logger.warn("[billing] No service client u2014 cannot create checkout session");
|
|
36
|
-
await channelManager.sendMessage("telegram", String(event.chatId), "Payment is not configured. Please contact support.");
|
|
37
|
-
return;
|
|
38
|
-
}
|
|
39
|
-
logger.system(`[billing] Plan selected: ${event.planId} by chat ${event.chatId}`);
|
|
40
|
-
// Retry loop for creating checkout session
|
|
41
|
-
for (let attempt = 0; attempt <= MAX_CHECKOUT_RETRIES; attempt++) {
|
|
42
|
-
try {
|
|
43
|
-
const result = await serviceClient.createCheckoutSession(event.planId, event.chatId);
|
|
44
|
-
if (result?.checkoutUrl) {
|
|
45
|
-
await channelManager.sendTelegramCheckoutLink(event.chatId, event.planName, result.checkoutUrl);
|
|
46
|
-
logger.system(`[billing] Checkout URL sent to chat ${event.chatId} for plan ${event.planId}`);
|
|
47
|
-
return;
|
|
48
|
-
}
|
|
49
|
-
// null result u2014 backend call failed
|
|
50
|
-
if (attempt < MAX_CHECKOUT_RETRIES) {
|
|
51
|
-
logger.warn(`[billing] Checkout session attempt ${attempt + 1} failed, retrying...`);
|
|
52
|
-
await channelManager.sendMessage("telegram", String(event.chatId), "Payment setup failed, retrying...");
|
|
53
|
-
await sleep(RETRY_DELAY_MS);
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
catch (err) {
|
|
57
|
-
const errMsg = err instanceof Error ? err.message : String(err);
|
|
58
|
-
logger.err(`[billing] Checkout session attempt ${attempt + 1} error: ${errMsg}`);
|
|
59
|
-
if (attempt < MAX_CHECKOUT_RETRIES) {
|
|
60
|
-
await sleep(RETRY_DELAY_MS);
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
// All retries exhausted
|
|
65
|
-
logger.err("[billing] All checkout session attempts failed");
|
|
66
|
-
await channelManager.sendMessage("telegram", String(event.chatId), "Payment setup failed. Please try again later.");
|
|
67
|
-
}
|
|
68
|
-
return async (_commandId, payload) => {
|
|
69
|
-
// Backend just signals "payment needed" with plans
|
|
70
|
-
const raw = (payload ?? {});
|
|
71
|
-
const plans = Array.isArray(raw.plans) ? raw.plans : [];
|
|
72
|
-
if (plans.length === 0) {
|
|
73
|
-
logger.warn("[billing] payment_required received with no plans");
|
|
74
|
-
return {
|
|
75
|
-
status: "failed",
|
|
76
|
-
result: JSON.stringify({ error: "No plans in payload" }),
|
|
77
|
-
};
|
|
78
|
-
}
|
|
79
|
-
const typedPayload = {
|
|
80
|
-
message: typeof raw.message === "string" ? raw.message : undefined,
|
|
81
|
-
plans,
|
|
82
|
-
};
|
|
83
|
-
logger.system(`[billing] Payment required received with ${typedPayload.plans.length} plan(s)`);
|
|
84
|
-
try {
|
|
85
|
-
await channelManager.sendTelegramPaymentPrompt(ownerChatId, typedPayload);
|
|
86
|
-
return {
|
|
87
|
-
status: "completed",
|
|
88
|
-
result: JSON.stringify({ message: "Payment prompt sent to owner" }),
|
|
89
|
-
};
|
|
90
|
-
}
|
|
91
|
-
catch (err) {
|
|
92
|
-
const errMsg = err instanceof Error ? err.message : String(err);
|
|
93
|
-
logger.err(`[billing] Failed to send payment prompt: ${errMsg}`);
|
|
94
|
-
return {
|
|
95
|
-
status: "failed",
|
|
96
|
-
result: JSON.stringify({ error: errMsg }),
|
|
97
|
-
};
|
|
98
|
-
}
|
|
99
|
-
};
|
|
100
|
-
}
|
|
101
|
-
//# sourceMappingURL=payment-handler.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"payment-handler.js","sourceRoot":"","sources":["../../src/billing/payment-handler.ts"],"names":[],"mappings":"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"}
|