visionclaw 0.1.193 → 0.1.194-dev.feat-backup-progress-reporting.1
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-uploader.d.ts +44 -0
- package/dist/agent/backup-uploader.d.ts.map +1 -0
- package/dist/agent/backup-uploader.js +83 -0
- package/dist/agent/backup-uploader.js.map +1 -0
- package/dist/agent/backup.d.ts +7 -1
- package/dist/agent/backup.d.ts.map +1 -1
- package/dist/agent/backup.js +337 -52
- package/dist/agent/backup.js.map +1 -1
- package/dist/agent/command-handlers.d.ts +2 -0
- package/dist/agent/command-handlers.d.ts.map +1 -1
- package/dist/agent/command-handlers.js +29 -3
- package/dist/agent/command-handlers.js.map +1 -1
- package/dist/agent/context.d.ts +2 -0
- package/dist/agent/context.d.ts.map +1 -1
- package/dist/agent/context.js +11 -1
- package/dist/agent/context.js.map +1 -1
- package/dist/agent/data-collector.d.ts.map +1 -1
- package/dist/agent/data-collector.js +23 -38
- package/dist/agent/data-collector.js.map +1 -1
- package/dist/agent/loop.d.ts +3 -0
- package/dist/agent/loop.d.ts.map +1 -1
- package/dist/agent/loop.js +48 -0
- package/dist/agent/loop.js.map +1 -1
- package/dist/agent/message-format.d.ts.map +1 -1
- package/dist/agent/message-format.js +3 -0
- package/dist/agent/message-format.js.map +1 -1
- package/dist/agent/status.d.ts.map +1 -1
- package/dist/agent/status.js +2 -1
- package/dist/agent/status.js.map +1 -1
- package/dist/backup.d.ts +4 -1
- package/dist/backup.d.ts.map +1 -1
- package/dist/backup.js +86 -3
- package/dist/backup.js.map +1 -1
- package/dist/calendar/google-calendar.d.ts +2 -0
- package/dist/calendar/google-calendar.d.ts.map +1 -1
- package/dist/calendar/google-calendar.js +3 -0
- package/dist/calendar/google-calendar.js.map +1 -1
- package/dist/channels/interface.d.ts +9 -0
- package/dist/channels/interface.d.ts.map +1 -1
- package/dist/channels/manager.d.ts +7 -1
- package/dist/channels/manager.d.ts.map +1 -1
- package/dist/channels/manager.js +12 -0
- package/dist/channels/manager.js.map +1 -1
- package/dist/channels/telegram.d.ts.map +1 -1
- package/dist/channels/telegram.js +5 -0
- package/dist/channels/telegram.js.map +1 -1
- package/dist/cli/index.d.ts +1 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +42 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/config/types.d.ts +9 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js +6 -0
- package/dist/config/types.js.map +1 -1
- package/dist/drive/google-drive.d.ts +1 -0
- package/dist/drive/google-drive.d.ts.map +1 -1
- package/dist/drive/google-drive.js +5 -0
- package/dist/drive/google-drive.js.map +1 -1
- package/dist/i18n/messages.d.ts +4 -0
- package/dist/i18n/messages.d.ts.map +1 -1
- package/dist/i18n/messages.js +7 -2
- package/dist/i18n/messages.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/obs/server.d.ts +7 -0
- package/dist/obs/server.d.ts.map +1 -1
- package/dist/obs/server.js +22 -0
- package/dist/obs/server.js.map +1 -1
- package/dist/onboarding/bot-profile.d.ts.map +1 -1
- package/dist/onboarding/bot-profile.js +1 -0
- package/dist/onboarding/bot-profile.js.map +1 -1
- package/dist/onboarding/index.d.ts.map +1 -1
- package/dist/onboarding/index.js +5 -0
- package/dist/onboarding/index.js.map +1 -1
- package/dist/onboarding/prepare-mac.d.ts +1 -0
- package/dist/onboarding/prepare-mac.d.ts.map +1 -1
- package/dist/onboarding/prepare-mac.js +32 -15
- package/dist/onboarding/prepare-mac.js.map +1 -1
- package/dist/onboarding/setup-shared.d.ts.map +1 -1
- package/dist/onboarding/setup-shared.js +6 -0
- package/dist/onboarding/setup-shared.js.map +1 -1
- package/dist/onboarding/setup-steps.d.ts.map +1 -1
- package/dist/onboarding/setup-steps.js +8 -0
- package/dist/onboarding/setup-steps.js.map +1 -1
- package/dist/realtime/agent-bridge.d.ts +7 -0
- package/dist/realtime/agent-bridge.d.ts.map +1 -0
- package/dist/realtime/agent-bridge.js +31 -0
- package/dist/realtime/agent-bridge.js.map +1 -0
- package/dist/realtime/assets/index.html +1058 -0
- 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 +14 -0
- package/dist/realtime/context.d.ts.map +1 -0
- package/dist/realtime/context.js +153 -0
- package/dist/realtime/context.js.map +1 -0
- package/dist/realtime/http-helpers.d.ts +5 -0
- package/dist/realtime/http-helpers.d.ts.map +1 -0
- package/dist/realtime/http-helpers.js +29 -0
- package/dist/realtime/http-helpers.js.map +1 -0
- package/dist/realtime/index.d.ts +62 -0
- package/dist/realtime/index.d.ts.map +1 -0
- package/dist/realtime/index.js +94 -0
- package/dist/realtime/index.js.map +1 -0
- package/dist/realtime/server.d.ts +6 -0
- package/dist/realtime/server.d.ts.map +1 -0
- package/dist/realtime/server.js +476 -0
- package/dist/realtime/server.js.map +1 -0
- package/dist/realtime/telegram-auth.d.ts +2 -0
- package/dist/realtime/telegram-auth.d.ts.map +1 -0
- package/dist/realtime/telegram-auth.js +24 -0
- package/dist/realtime/telegram-auth.js.map +1 -0
- package/dist/realtime/tools.d.ts +829 -0
- package/dist/realtime/tools.d.ts.map +1 -0
- package/dist/realtime/tools.js +630 -0
- package/dist/realtime/tools.js.map +1 -0
- package/dist/realtime/types.d.ts +62 -0
- package/dist/realtime/types.d.ts.map +1 -0
- package/dist/realtime/types.js +3 -0
- package/dist/realtime/types.js.map +1 -0
- package/dist/realtime/voice-summarizer.d.ts +4 -0
- package/dist/realtime/voice-summarizer.d.ts.map +1 -0
- package/dist/realtime/voice-summarizer.js +129 -0
- package/dist/realtime/voice-summarizer.js.map +1 -0
- package/dist/restore.d.ts +5 -0
- package/dist/restore.d.ts.map +1 -1
- package/dist/restore.js +132 -16
- package/dist/restore.js.map +1 -1
- package/dist/tools/email.d.ts +1 -1
- package/dist/tools/memory.d.ts +13 -0
- package/dist/tools/memory.d.ts.map +1 -1
- package/dist/tools/memory.js +43 -43
- package/dist/tools/memory.js.map +1 -1
- package/dist/tools/stock-data.d.ts +16 -0
- package/dist/tools/stock-data.d.ts.map +1 -1
- package/dist/tools/stock-data.js +36 -38
- package/dist/tools/stock-data.js.map +1 -1
- package/dist/tools/web-fetch.d.ts +4 -0
- package/dist/tools/web-fetch.d.ts.map +1 -1
- package/dist/tools/web-fetch.js +95 -23
- package/dist/tools/web-fetch.js.map +1 -1
- package/dist/tos-storage.d.ts +45 -0
- package/dist/tos-storage.d.ts.map +1 -0
- package/dist/tos-storage.js +134 -0
- package/dist/tos-storage.js.map +1 -0
- package/dist-agent/bundle.cjs +170934 -167547
- package/package.json +3 -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/claude/cli-resolver.d.ts +0 -16
- package/dist/agent/engines/claude/cli-resolver.d.ts.map +0 -1
- package/dist/agent/engines/claude/cli-resolver.js +0 -83
- package/dist/agent/engines/claude/cli-resolver.js.map +0 -1
- package/dist/agent/engines/claude/session-browser-policy.d.ts +0 -9
- package/dist/agent/engines/claude/session-browser-policy.d.ts.map +0 -1
- package/dist/agent/engines/claude/session-browser-policy.js +0 -49
- package/dist/agent/engines/claude/session-browser-policy.js.map +0 -1
- package/dist/agent/engines/claude/session.d.ts +0 -291
- package/dist/agent/engines/claude/session.d.ts.map +0 -1
- package/dist/agent/engines/claude/session.js +0 -1177
- package/dist/agent/engines/claude/session.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 -49
- package/dist/agent/engines/openai/file-session.d.ts.map +0 -1
- package/dist/agent/engines/openai/file-session.js +0 -108
- 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 -190
- package/dist/agent/engines/openai/session.d.ts.map +0 -1
- package/dist/agent/engines/openai/session.js +0 -1066
- package/dist/agent/engines/openai/session.js.map +0 -1
- package/dist/agent/engines/openai/tools.d.ts +0 -13
- package/dist/agent/engines/openai/tools.d.ts.map +0 -1
- package/dist/agent/engines/openai/tools.js +0 -248
- package/dist/agent/engines/openai/tools.js.map +0 -1
- package/dist/agent/engines/session-types.d.ts +0 -146
- package/dist/agent/engines/session-types.d.ts.map +0 -1
- package/dist/agent/engines/session-types.js +0 -2
- package/dist/agent/engines/session-types.js.map +0 -1
- package/dist/agent/engines/system-prompt-log.d.ts +0 -9
- package/dist/agent/engines/system-prompt-log.d.ts.map +0 -1
- package/dist/agent/engines/system-prompt-log.js +0 -46
- package/dist/agent/engines/system-prompt-log.js.map +0 -1
- package/dist/agent/transcript/transcript-backfill.d.ts +0 -54
- package/dist/agent/transcript/transcript-backfill.d.ts.map +0 -1
- package/dist/agent/transcript/transcript-backfill.js +0 -604
- package/dist/agent/transcript/transcript-backfill.js.map +0 -1
- package/dist/agent/transcript/transcript-indexer.d.ts +0 -273
- package/dist/agent/transcript/transcript-indexer.d.ts.map +0 -1
- package/dist/agent/transcript/transcript-indexer.js +0 -1217
- package/dist/agent/transcript/transcript-indexer.js.map +0 -1
- package/dist/agent/transcript/transcript-memory-migrations.d.ts +0 -25
- package/dist/agent/transcript/transcript-memory-migrations.d.ts.map +0 -1
- package/dist/agent/transcript/transcript-memory-migrations.js +0 -87
- package/dist/agent/transcript/transcript-memory-migrations.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/usage-backfill-handler.d.ts +0 -18
- package/dist/agent/usage/usage-backfill-handler.d.ts.map +0 -1
- package/dist/agent/usage/usage-backfill-handler.js +0 -69
- package/dist/agent/usage/usage-backfill-handler.js.map +0 -1
- package/dist/agent/usage/usage-gate.d.ts +0 -25
- package/dist/agent/usage/usage-gate.d.ts.map +0 -1
- package/dist/agent/usage/usage-gate.js +0 -83
- package/dist/agent/usage/usage-gate.js.map +0 -1
- package/dist/agent/usage/usage-handler.d.ts +0 -7
- package/dist/agent/usage/usage-handler.d.ts.map +0 -1
- package/dist/agent/usage/usage-handler.js +0 -28
- package/dist/agent/usage/usage-handler.js.map +0 -1
- package/dist/agent/usage/usage-report-builder.d.ts +0 -26
- package/dist/agent/usage/usage-report-builder.d.ts.map +0 -1
- package/dist/agent/usage/usage-report-builder.js +0 -80
- package/dist/agent/usage/usage-report-builder.js.map +0 -1
- package/dist/agent/usage/usage-report-queue.d.ts +0 -26
- package/dist/agent/usage/usage-report-queue.d.ts.map +0 -1
- package/dist/agent/usage/usage-report-queue.js +0 -199
- package/dist/agent/usage/usage-report-queue.js.map +0 -1
- package/dist/agent/usage/usage-report-types.d.ts +0 -41
- package/dist/agent/usage/usage-report-types.d.ts.map +0 -1
- package/dist/agent/usage/usage-report-types.js +0 -2
- package/dist/agent/usage/usage-report-types.js.map +0 -1
- package/dist/agent/usage/usage-reporter.d.ts +0 -31
- package/dist/agent/usage/usage-reporter.d.ts.map +0 -1
- package/dist/agent/usage/usage-reporter.js +0 -102
- package/dist/agent/usage/usage-reporter.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-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/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/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/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/playwriter-extension.d.ts +0 -19
- package/dist/onboarding/playwriter-extension.d.ts.map +0 -1
- package/dist/onboarding/playwriter-extension.js +0 -246
- package/dist/onboarding/playwriter-extension.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/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/utils/playwriter-relay.d.ts +0 -9
- package/dist/utils/playwriter-relay.d.ts.map +0 -1
- package/dist/utils/playwriter-relay.js +0 -77
- package/dist/utils/playwriter-relay.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
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"usage-report-types.js","sourceRoot":"","sources":["../../../src/agent/usage/usage-report-types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC"}
|
|
@@ -1,31 +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 type { VisionClawConfig } from "../../config/types.js";
|
|
15
|
-
export declare class UsageReporter {
|
|
16
|
-
private readonly config;
|
|
17
|
-
private timer;
|
|
18
|
-
private readonly scanIntervalMs;
|
|
19
|
-
constructor(config: VisionClawConfig);
|
|
20
|
-
/**
|
|
21
|
-
* Start the periodic background scan.
|
|
22
|
-
*/
|
|
23
|
-
start(): void;
|
|
24
|
-
/**
|
|
25
|
-
* Stop the periodic scan.
|
|
26
|
-
*/
|
|
27
|
-
stop(): void;
|
|
28
|
-
private tick;
|
|
29
|
-
private scanAndReport;
|
|
30
|
-
}
|
|
31
|
-
//# sourceMappingURL=usage-reporter.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"usage-reporter.d.ts","sourceRoot":"","sources":["../../../src/agent/usage/usage-reporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAa9D,qBAAa,aAAa;IAIZ,OAAO,CAAC,QAAQ,CAAC,MAAM;IAHnC,OAAO,CAAC,KAAK,CAA8C;IAC3D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAc;gBAEhB,MAAM,EAAE,gBAAgB;IAErD;;OAEG;IACH,KAAK,IAAI,IAAI;IAWb;;OAEG;IACH,IAAI,IAAI,IAAI;IAQZ,OAAO,CAAC,IAAI;IAiBZ,OAAO,CAAC,aAAa;CA6CtB"}
|
|
@@ -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/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/usage-reporter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Usage backfill handler — builds usage reports from stored wake cycle
|
|
3
|
-
* records and uploads them directly to the onboarding server.
|
|
4
|
-
*
|
|
5
|
-
* For legacy rows that lack `tool_calls_json`, the handler attempts to
|
|
6
|
-
* reconstruct tool calls by reading transcript lines from live or archived
|
|
7
|
-
* transcript files (via `readWakeCycleTranscriptLines`).
|
|
8
|
-
*
|
|
9
|
-
* Backfill does NOT enqueue into usage.db and does NOT mutate
|
|
10
|
-
* `usage_reported`. Server-side deduplication by `wakeCycleId` handles
|
|
11
|
-
* any overlap with heartbeat-uploaded reports.
|
|
12
|
-
*/
|
|
13
|
-
import type { VisionClawConfig } from "../config/types.js";
|
|
14
|
-
export declare function createUsageBackfillHandler(config: VisionClawConfig): () => Promise<{
|
|
15
|
-
status: "completed" | "failed";
|
|
16
|
-
result?: string;
|
|
17
|
-
}>;
|
|
18
|
-
//# sourceMappingURL=usage-backfill-handler.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"usage-backfill-handler.d.ts","sourceRoot":"","sources":["../../src/agent/usage-backfill-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAc3D,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,gBAAgB,SAChD,OAAO,CAAC;IAAE,MAAM,EAAE,WAAW,GAAG,QAAQ,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAqE9E"}
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Usage backfill handler — builds usage reports from stored wake cycle
|
|
3
|
-
* records and uploads them directly to the onboarding server.
|
|
4
|
-
*
|
|
5
|
-
* For legacy rows that lack `tool_calls_json`, the handler attempts to
|
|
6
|
-
* reconstruct tool calls by reading transcript lines from live or archived
|
|
7
|
-
* transcript files (via `readWakeCycleTranscriptLines`).
|
|
8
|
-
*
|
|
9
|
-
* Backfill does NOT enqueue into usage.db and does NOT mutate
|
|
10
|
-
* `usage_reported`. Server-side deduplication by `wakeCycleId` handles
|
|
11
|
-
* any overlap with heartbeat-uploaded reports.
|
|
12
|
-
*/
|
|
13
|
-
import { OnboardingServiceClient } from "../onboarding/onboarding-service-client.js";
|
|
14
|
-
import { logger } from "../logger.js";
|
|
15
|
-
import { listWakeCyclesForUsageBackfill, readWakeCycleTranscriptLines, extractToolCallsFromLines, updateWakeCycleToolCallsJson, } from "./transcript-indexer.js";
|
|
16
|
-
import { buildWakeCycleUsageReportFromRecord } from "./usage-report-builder.js";
|
|
17
|
-
const MAX_BACKFILL_REPORTS = 5_000;
|
|
18
|
-
export function createUsageBackfillHandler(config) {
|
|
19
|
-
return async () => {
|
|
20
|
-
if (!config.onboardingServiceUrl || !config.visionclawServiceApiKey) {
|
|
21
|
-
return { status: "failed", result: JSON.stringify({ error: "onboarding service credentials unavailable" }) };
|
|
22
|
-
}
|
|
23
|
-
const rows = listWakeCyclesForUsageBackfill(MAX_BACKFILL_REPORTS);
|
|
24
|
-
const usageReports = [];
|
|
25
|
-
for (const row of rows) {
|
|
26
|
-
let overrideToolCalls;
|
|
27
|
-
// If tool_calls_json is missing, attempt reconstruction from transcripts
|
|
28
|
-
if (!row.tool_calls_json) {
|
|
29
|
-
if (row.source_file && row.start_line > 0 && row.end_line > row.start_line) {
|
|
30
|
-
try {
|
|
31
|
-
const lines = await readWakeCycleTranscriptLines(row.source_file, row.start_line, row.end_line, row.timestamp_start);
|
|
32
|
-
if (lines.length > 0) {
|
|
33
|
-
const extracted = extractToolCallsFromLines(lines, {
|
|
34
|
-
cycleStartedAt: row.timestamp_start,
|
|
35
|
-
cycleEndedAt: row.timestamp_end,
|
|
36
|
-
});
|
|
37
|
-
overrideToolCalls = extracted.toolCalls;
|
|
38
|
-
// Persist reconstructed tool calls for future backfills
|
|
39
|
-
try {
|
|
40
|
-
updateWakeCycleToolCallsJson(row.wake_cycle_id, JSON.stringify(extracted.toolCalls));
|
|
41
|
-
}
|
|
42
|
-
catch {
|
|
43
|
-
// best-effort persistence — non-fatal
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
catch (err) {
|
|
48
|
-
logger.warn(`[usage-backfill] Could not reconstruct tool calls for ${row.wake_cycle_id}: ${err instanceof Error ? err.message : String(err)}`);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
// If reconstruction failed or no source file, overrideToolCalls
|
|
52
|
-
// remains undefined and buildWakeCycleUsageReportFromRecord will
|
|
53
|
-
// produce empty tool calls from the NULL tool_calls_json.
|
|
54
|
-
}
|
|
55
|
-
usageReports.push(buildWakeCycleUsageReportFromRecord({
|
|
56
|
-
row,
|
|
57
|
-
config,
|
|
58
|
-
overrideToolCalls,
|
|
59
|
-
}));
|
|
60
|
-
}
|
|
61
|
-
const client = new OnboardingServiceClient(config.onboardingServiceUrl, config.agentName, config.visionclawServiceApiKey);
|
|
62
|
-
const ok = await client.sendUsageBackfill(usageReports);
|
|
63
|
-
if (!ok)
|
|
64
|
-
return { status: "failed", result: JSON.stringify({ error: "backfill upload failed" }) };
|
|
65
|
-
logger.system(`Usage backfill uploaded ${usageReports.length} wake cycle report(s)`);
|
|
66
|
-
return { status: "completed", result: JSON.stringify({ count: usageReports.length }) };
|
|
67
|
-
};
|
|
68
|
-
}
|
|
69
|
-
//# sourceMappingURL=usage-backfill-handler.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"usage-backfill-handler.js","sourceRoot":"","sources":["../../src/agent/usage-backfill-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import type { VisionClawConfig } from "../config/types.js";
|
|
2
|
-
import type { ChannelManager } from "../channels/manager.js";
|
|
3
|
-
import type { HeartbeatManager } from "./heartbeat-manager.js";
|
|
4
|
-
import type { UsageStatus } from "./usage-report-types.js";
|
|
5
|
-
export declare const USAGE_GATE_MESSAGE = "Your WorkUnit (WU) allowance for this period has been used up. Please upgrade your plan or buy a WU bundle to continue.";
|
|
6
|
-
/**
|
|
7
|
-
* Determine whether the usage gate should block new Claude wake cycles.
|
|
8
|
-
*
|
|
9
|
-
* The usage gate is subordinate to the billing/subscription gate:
|
|
10
|
-
* - If billing is "skip" (disabled), the usage gate is never enforced,
|
|
11
|
-
* regardless of metered usage.
|
|
12
|
-
* - If billing is "expired", the subscription gate takes priority; the
|
|
13
|
-
* usage gate should not fire until the subscription is resolved.
|
|
14
|
-
*
|
|
15
|
-
* Enforcement requires ALL of:
|
|
16
|
-
* - subscriptionStatus is "active" (billing is on and subscription valid)
|
|
17
|
-
* - status is "exhausted" (WU used >= available WU)
|
|
18
|
-
* - coverage is "complete" or "cutover" — meaning the server has
|
|
19
|
-
* sufficient data to trust the metering result. "partial" coverage
|
|
20
|
-
* is intentionally excluded because historical data may be incomplete
|
|
21
|
-
* and gating the user on inaccurate numbers would be wrong.
|
|
22
|
-
*/
|
|
23
|
-
export declare function shouldEnforceUsageGate(usageStatus: UsageStatus | undefined, subscriptionStatus?: string): boolean;
|
|
24
|
-
export declare function runUsageGate(config: VisionClawConfig, channelManager: ChannelManager, heartbeat: HeartbeatManager): Promise<void>;
|
|
25
|
-
//# sourceMappingURL=usage-gate.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"usage-gate.d.ts","sourceRoot":"","sources":["../../src/agent/usage-gate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAO3D,eAAO,MAAM,kBAAkB,4HAA4H,CAAC;AAE5J;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,WAAW,GAAG,SAAS,EACpC,kBAAkB,CAAC,EAAE,MAAM,GAC1B,OAAO,CAKT;AAED,wBAAsB,YAAY,CAChC,MAAM,EAAE,gBAAgB,EACxB,cAAc,EAAE,cAAc,EAC9B,SAAS,EAAE,gBAAgB,GAC1B,OAAO,CAAC,IAAI,CAAC,CA+Cf"}
|
package/dist/agent/usage-gate.js
DELETED
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
import { loadOwnerConfig, buildPricingUrl } from "../config/index.js";
|
|
2
|
-
import { getAgentState } from "./state.js";
|
|
3
|
-
import { logger } from "../logger.js";
|
|
4
|
-
const GATE_POLL_INTERVAL_MS = 10_000;
|
|
5
|
-
export const USAGE_GATE_MESSAGE = "Your WorkUnit (WU) allowance for this period has been used up. Please upgrade your plan or buy a WU bundle to continue.";
|
|
6
|
-
/**
|
|
7
|
-
* Determine whether the usage gate should block new Claude wake cycles.
|
|
8
|
-
*
|
|
9
|
-
* The usage gate is subordinate to the billing/subscription gate:
|
|
10
|
-
* - If billing is "skip" (disabled), the usage gate is never enforced,
|
|
11
|
-
* regardless of metered usage.
|
|
12
|
-
* - If billing is "expired", the subscription gate takes priority; the
|
|
13
|
-
* usage gate should not fire until the subscription is resolved.
|
|
14
|
-
*
|
|
15
|
-
* Enforcement requires ALL of:
|
|
16
|
-
* - subscriptionStatus is "active" (billing is on and subscription valid)
|
|
17
|
-
* - status is "exhausted" (WU used >= available WU)
|
|
18
|
-
* - coverage is "complete" or "cutover" — meaning the server has
|
|
19
|
-
* sufficient data to trust the metering result. "partial" coverage
|
|
20
|
-
* is intentionally excluded because historical data may be incomplete
|
|
21
|
-
* and gating the user on inaccurate numbers would be wrong.
|
|
22
|
-
*/
|
|
23
|
-
export function shouldEnforceUsageGate(usageStatus, subscriptionStatus) {
|
|
24
|
-
// Usage gate only applies when billing is active. "skip" means billing
|
|
25
|
-
// is turned off; "expired" is handled by the subscription gate first.
|
|
26
|
-
if (subscriptionStatus !== "active")
|
|
27
|
-
return false;
|
|
28
|
-
return usageStatus?.status === "exhausted" && (usageStatus.coverage === "complete" || usageStatus.coverage === "cutover");
|
|
29
|
-
}
|
|
30
|
-
export async function runUsageGate(config, channelManager, heartbeat) {
|
|
31
|
-
const ownerConfig = loadOwnerConfig();
|
|
32
|
-
const agentState = getAgentState();
|
|
33
|
-
agentState.gated = true;
|
|
34
|
-
try {
|
|
35
|
-
logger.system("Usage exhausted — entering usage gate (no Claude API calls)");
|
|
36
|
-
const pricingUrl = buildPricingUrl(config);
|
|
37
|
-
const message = `${USAGE_GATE_MESSAGE}\n\nBrowse plans or top up: ${pricingUrl}`;
|
|
38
|
-
try {
|
|
39
|
-
if (ownerConfig.telegramChatId) {
|
|
40
|
-
const plans = heartbeat.lastBillingPlans;
|
|
41
|
-
if (plans.length > 0) {
|
|
42
|
-
await channelManager.sendTelegramPaymentPrompt(ownerConfig.telegramChatId, { message, plans });
|
|
43
|
-
}
|
|
44
|
-
else {
|
|
45
|
-
await channelManager.sendMessage("telegram", String(ownerConfig.telegramChatId), message);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
else if (ownerConfig.ownerEmail) {
|
|
49
|
-
await channelManager.sendMessage("gmail", ownerConfig.ownerEmail, message);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
catch {
|
|
53
|
-
logger.warn("Failed to send usage gate notification to owner");
|
|
54
|
-
}
|
|
55
|
-
await heartbeat.stopRuntime();
|
|
56
|
-
try {
|
|
57
|
-
let status = heartbeat.lastUsageStatus;
|
|
58
|
-
while (status?.status === "exhausted") {
|
|
59
|
-
await new Promise((resolve) => setTimeout(resolve, GATE_POLL_INTERVAL_MS));
|
|
60
|
-
status = await heartbeat.sendHeartbeatForUsageGate();
|
|
61
|
-
if (status?.status !== "exhausted")
|
|
62
|
-
break;
|
|
63
|
-
logger.debug(`Usage gate: still exhausted, polling again in ${GATE_POLL_INTERVAL_MS / 1000}s`);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
finally {
|
|
67
|
-
heartbeat.startRuntime(() => agentState.busy);
|
|
68
|
-
}
|
|
69
|
-
logger.system("Usage gate cleared — exiting usage gate");
|
|
70
|
-
try {
|
|
71
|
-
if (ownerConfig.telegramChatId) {
|
|
72
|
-
await channelManager.sendMessage("telegram", String(ownerConfig.telegramChatId), "Usage balance updated. I can continue now.");
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
catch {
|
|
76
|
-
logger.warn("Failed to send usage gate cleared notification");
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
finally {
|
|
80
|
-
agentState.gated = false;
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
//# sourceMappingURL=usage-gate.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"usage-gate.js","sourceRoot":"","sources":["../../src/agent/usage-gate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared usage report builder — constructs a `WakeCycleUsageReport` from
|
|
3
|
-
* a stored `WakeCycleRecord` row in `transcript_memory.db`.
|
|
4
|
-
*
|
|
5
|
-
* Used by:
|
|
6
|
-
* - `UsageReporter` (background scan → enqueue into usage.db)
|
|
7
|
-
* - `usage-backfill-handler` (direct server upload)
|
|
8
|
-
*/
|
|
9
|
-
import type { VisionClawConfig } from "../config/types.js";
|
|
10
|
-
import { type ToolCallFact, type WakeCycleUsageReport } from "./usage-report-types.js";
|
|
11
|
-
import type { WakeCycleRecord } from "./transcript-indexer.js";
|
|
12
|
-
/**
|
|
13
|
-
* Build a `WakeCycleUsageReport` from a stored wake cycle record.
|
|
14
|
-
*
|
|
15
|
-
* If `tool_calls_json` is missing or invalid, the report is built with
|
|
16
|
-
* empty tool calls — the server will mark coverage as `missing_tool_calls`.
|
|
17
|
-
*
|
|
18
|
-
* If `overrideToolCalls` is provided, it takes precedence over the stored
|
|
19
|
-
* JSON (used when backfill reconstructs tool calls from archived transcripts).
|
|
20
|
-
*/
|
|
21
|
-
export declare function buildWakeCycleUsageReportFromRecord(input: {
|
|
22
|
-
row: WakeCycleRecord;
|
|
23
|
-
config: VisionClawConfig;
|
|
24
|
-
overrideToolCalls?: ToolCallFact[];
|
|
25
|
-
}): WakeCycleUsageReport;
|
|
26
|
-
//# sourceMappingURL=usage-report-builder.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"usage-report-builder.d.ts","sourceRoot":"","sources":["../../src/agent/usage-report-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,oBAAoB,EAC1B,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAiC/D;;;;;;;;GAQG;AACH,wBAAgB,mCAAmC,CAAC,KAAK,EAAE;IACzD,GAAG,EAAE,eAAe,CAAC;IACrB,MAAM,EAAE,gBAAgB,CAAC;IACzB,iBAAiB,CAAC,EAAE,YAAY,EAAE,CAAC;CACpC,GAAG,oBAAoB,CA6BvB"}
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared usage report builder — constructs a `WakeCycleUsageReport` from
|
|
3
|
-
* a stored `WakeCycleRecord` row in `transcript_memory.db`.
|
|
4
|
-
*
|
|
5
|
-
* Used by:
|
|
6
|
-
* - `UsageReporter` (background scan → enqueue into usage.db)
|
|
7
|
-
* - `usage-backfill-handler` (direct server upload)
|
|
8
|
-
*/
|
|
9
|
-
import { USAGE_REPORT_SCHEMA_VERSION, } from "./usage-report-types.js";
|
|
10
|
-
function getCurrentVersionSafe() {
|
|
11
|
-
try {
|
|
12
|
-
return process.env.npm_package_version;
|
|
13
|
-
}
|
|
14
|
-
catch {
|
|
15
|
-
return undefined;
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
function durationSeconds(start, end) {
|
|
19
|
-
const startMs = new Date(start).getTime();
|
|
20
|
-
const endMs = new Date(end).getTime();
|
|
21
|
-
if (Number.isNaN(startMs) || Number.isNaN(endMs) || endMs < startMs)
|
|
22
|
-
return 0;
|
|
23
|
-
return Math.max(0, Math.round((endMs - startMs) / 1000));
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Parse `tool_calls_json` from a wake cycle record.
|
|
27
|
-
*
|
|
28
|
-
* Returns an empty array if the JSON is null, empty, or invalid.
|
|
29
|
-
*/
|
|
30
|
-
function parseToolCallsJson(json) {
|
|
31
|
-
if (!json)
|
|
32
|
-
return [];
|
|
33
|
-
try {
|
|
34
|
-
const parsed = JSON.parse(json);
|
|
35
|
-
if (!Array.isArray(parsed))
|
|
36
|
-
return [];
|
|
37
|
-
return parsed;
|
|
38
|
-
}
|
|
39
|
-
catch {
|
|
40
|
-
return [];
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Build a `WakeCycleUsageReport` from a stored wake cycle record.
|
|
45
|
-
*
|
|
46
|
-
* If `tool_calls_json` is missing or invalid, the report is built with
|
|
47
|
-
* empty tool calls — the server will mark coverage as `missing_tool_calls`.
|
|
48
|
-
*
|
|
49
|
-
* If `overrideToolCalls` is provided, it takes precedence over the stored
|
|
50
|
-
* JSON (used when backfill reconstructs tool calls from archived transcripts).
|
|
51
|
-
*/
|
|
52
|
-
export function buildWakeCycleUsageReportFromRecord(input) {
|
|
53
|
-
const { row, config, overrideToolCalls } = input;
|
|
54
|
-
const toolCalls = overrideToolCalls ?? parseToolCallsJson(row.tool_calls_json);
|
|
55
|
-
const toolCallCount = overrideToolCalls
|
|
56
|
-
? overrideToolCalls.length
|
|
57
|
-
: (row.tool_call_count || toolCalls.length);
|
|
58
|
-
return {
|
|
59
|
-
schemaVersion: USAGE_REPORT_SCHEMA_VERSION,
|
|
60
|
-
wakeCycleId: row.wake_cycle_id,
|
|
61
|
-
sessionType: row.session_type,
|
|
62
|
-
startedAt: row.timestamp_start,
|
|
63
|
-
endedAt: row.timestamp_end,
|
|
64
|
-
durationSeconds: durationSeconds(row.timestamp_start, row.timestamp_end),
|
|
65
|
-
triggerType: row.trigger_type ?? undefined,
|
|
66
|
-
triggerChannel: row.trigger_channel ?? undefined,
|
|
67
|
-
toolCalls,
|
|
68
|
-
toolCallCount,
|
|
69
|
-
...(row.tool_calls_truncated
|
|
70
|
-
? {
|
|
71
|
-
toolCallsTruncated: true,
|
|
72
|
-
reportedToolCallCount: row.reported_tool_call_count ?? toolCalls.length,
|
|
73
|
-
}
|
|
74
|
-
: {}),
|
|
75
|
-
outcome: row.outcome ?? "completed",
|
|
76
|
-
agentVersion: getCurrentVersionSafe(),
|
|
77
|
-
modelId: config.model,
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
//# sourceMappingURL=usage-report-builder.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"usage-report-builder.js","sourceRoot":"","sources":["../../src/agent/usage-report-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EACL,2BAA2B,GAG5B,MAAM,yBAAyB,CAAC;AAGjC,SAAS,qBAAqB;IAC5B,IAAI,CAAC;QACH,OAAO,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,KAAa,EAAE,GAAW;IACjD,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;IAC1C,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;IACtC,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,OAAO;QAAE,OAAO,CAAC,CAAC;IAC9E,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED;;;;GAIG;AACH,SAAS,kBAAkB,CAAC,IAAmB;IAC7C,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACrB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAY,CAAC;QAC3C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,OAAO,EAAE,CAAC;QACtC,OAAO,MAAwB,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,mCAAmC,CAAC,KAInD;IACC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,iBAAiB,EAAE,GAAG,KAAK,CAAC;IAEjD,MAAM,SAAS,GAAG,iBAAiB,IAAI,kBAAkB,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC/E,MAAM,aAAa,GAAG,iBAAiB;QACrC,CAAC,CAAC,iBAAiB,CAAC,MAAM;QAC1B,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC;IAE9C,OAAO;QACL,aAAa,EAAE,2BAA2B;QAC1C,WAAW,EAAE,GAAG,CAAC,aAAa;QAC9B,WAAW,EAAE,GAAG,CAAC,YAAY;QAC7B,SAAS,EAAE,GAAG,CAAC,eAAe;QAC9B,OAAO,EAAE,GAAG,CAAC,aAAa;QAC1B,eAAe,EAAE,eAAe,CAAC,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,aAAa,CAAC;QACxE,WAAW,EAAE,GAAG,CAAC,YAAY,IAAI,SAAS;QAC1C,cAAc,EAAE,GAAG,CAAC,eAAe,IAAI,SAAS;QAChD,SAAS;QACT,aAAa;QACb,GAAG,CAAC,GAAG,CAAC,oBAAoB;YAC1B,CAAC,CAAC;gBACE,kBAAkB,EAAE,IAAI;gBACxB,qBAAqB,EAAE,GAAG,CAAC,wBAAwB,IAAI,SAAS,CAAC,MAAM;aACxE;YACH,CAAC,CAAC,EAAE,CAAC;QACP,OAAO,EAAG,GAAG,CAAC,OAA2C,IAAI,WAAW;QACxE,YAAY,EAAE,qBAAqB,EAAE;QACrC,OAAO,EAAE,MAAM,CAAC,KAAK;KACtB,CAAC;AACJ,CAAC"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import type { WakeCycleUsageReport } from "./usage-report-types.js";
|
|
2
|
-
export type UsageReportQueueStatus = "pending" | "inflight" | "stale" | "rejected" | "acked";
|
|
3
|
-
export interface UsageReportQueueRow {
|
|
4
|
-
wakeCycleId: string;
|
|
5
|
-
report: WakeCycleUsageReport;
|
|
6
|
-
status: UsageReportQueueStatus;
|
|
7
|
-
attemptCount: number;
|
|
8
|
-
lastAttemptAt: string | null;
|
|
9
|
-
lastError: string | null;
|
|
10
|
-
createdAt: string;
|
|
11
|
-
ackedAt: string | null;
|
|
12
|
-
reportSchemaVersion: number;
|
|
13
|
-
}
|
|
14
|
-
export declare function enqueueUsageReport(report: WakeCycleUsageReport): void;
|
|
15
|
-
export declare function listPendingUsageReports(limit: number): UsageReportQueueRow[];
|
|
16
|
-
export declare function markUsageReportsInflight(ids: string[]): void;
|
|
17
|
-
export declare function markUsageReportsAcked(ids: string[]): void;
|
|
18
|
-
export declare function markUsageReportsRejected(rejections: {
|
|
19
|
-
wakeCycleId: string;
|
|
20
|
-
reason: string;
|
|
21
|
-
}[]): void;
|
|
22
|
-
export declare function releaseStaleInflightUsageReports(timeoutMs: number): void;
|
|
23
|
-
export declare function releaseInflightUsageReports(ids: string[], reason: string): void;
|
|
24
|
-
export declare function markUsageReportsStaleOlderThan(days: number): void;
|
|
25
|
-
export declare function closeUsageReportQueue(): void;
|
|
26
|
-
//# sourceMappingURL=usage-report-queue.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"usage-report-queue.d.ts","sourceRoot":"","sources":["../../src/agent/usage-report-queue.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAEpE,MAAM,MAAM,sBAAsB,GAAG,SAAS,GAAG,UAAU,GAAG,OAAO,GAAG,UAAU,GAAG,OAAO,CAAC;AAE7F,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,oBAAoB,CAAC;IAC7B,MAAM,EAAE,sBAAsB,CAAC;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAqGD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,oBAAoB,GAAG,IAAI,CAerE;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,EAAE,CAwB5E;AAED,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,CAK5D;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,CAKzD;AAED,wBAAgB,wBAAwB,CAAC,UAAU,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,IAAI,CAIpG;AAED,wBAAgB,gCAAgC,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAIxE;AAED,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAI/E;AAED,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAIjE;AAED,wBAAgB,qBAAqB,IAAI,IAAI,CAiB5C"}
|