@agentdeck/bridge 0.2.2 → 1.0.0
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/assets/fm-helper/agentdeck-fm-helper +0 -0
- package/assets/fonts/IBMPlexSans-Bold.ttf +0 -0
- package/assets/fonts/IBMPlexSans-Regular.ttf +0 -0
- package/assets/fonts/JetBrainsMono-Bold.ttf +0 -0
- package/assets/fonts/JetBrainsMono-Regular.ttf +0 -0
- package/assets/fonts/LICENSES.md +22 -0
- package/dist/adapters/claude-code.d.ts +6 -0
- package/dist/adapters/claude-code.d.ts.map +1 -1
- package/dist/adapters/claude-code.js +8 -0
- package/dist/adapters/claude-code.js.map +1 -1
- package/dist/adapters/openclaw.d.ts +24 -0
- package/dist/adapters/openclaw.d.ts.map +1 -1
- package/dist/adapters/openclaw.js +291 -35
- package/dist/adapters/openclaw.js.map +1 -1
- package/dist/adapters/opencode-adapter.d.ts +59 -0
- package/dist/adapters/opencode-adapter.d.ts.map +1 -1
- package/dist/adapters/opencode-adapter.js +297 -35
- package/dist/adapters/opencode-adapter.js.map +1 -1
- package/dist/adb-reverse.d.ts +1 -1
- package/dist/adb-reverse.js +1 -1
- package/dist/antigravity-local.d.ts +1 -0
- package/dist/antigravity-local.d.ts.map +1 -1
- package/dist/antigravity-local.js +33 -0
- package/dist/antigravity-local.js.map +1 -1
- package/dist/apme/adapters/claude-hook.d.ts.map +1 -1
- package/dist/apme/adapters/claude-hook.js +5 -0
- package/dist/apme/adapters/claude-hook.js.map +1 -1
- package/dist/apme/adapters/codex-hook.d.ts +17 -0
- package/dist/apme/adapters/codex-hook.d.ts.map +1 -0
- package/dist/apme/adapters/codex-hook.js +95 -0
- package/dist/apme/adapters/codex-hook.js.map +1 -0
- package/dist/apme/adapters/codex-turn-manager.d.ts +86 -0
- package/dist/apme/adapters/codex-turn-manager.d.ts.map +1 -0
- package/dist/apme/adapters/codex-turn-manager.js +496 -0
- package/dist/apme/adapters/codex-turn-manager.js.map +1 -0
- package/dist/apme/adapters/openclaw-hook.d.ts +99 -0
- package/dist/apme/adapters/openclaw-hook.d.ts.map +1 -0
- package/dist/apme/adapters/openclaw-hook.js +234 -0
- package/dist/apme/adapters/openclaw-hook.js.map +1 -0
- package/dist/apme/adapters/opencode-hook.d.ts +56 -0
- package/dist/apme/adapters/opencode-hook.d.ts.map +1 -0
- package/dist/apme/adapters/opencode-hook.js +182 -0
- package/dist/apme/adapters/opencode-hook.js.map +1 -0
- package/dist/apme/adapters/timeline.d.ts.map +1 -1
- package/dist/apme/adapters/timeline.js +6 -1
- package/dist/apme/adapters/timeline.js.map +1 -1
- package/dist/apme/antigravity-transcript.d.ts +18 -0
- package/dist/apme/antigravity-transcript.d.ts.map +1 -0
- package/dist/apme/antigravity-transcript.js +94 -0
- package/dist/apme/antigravity-transcript.js.map +1 -0
- package/dist/apme/classify-turn.d.ts +13 -0
- package/dist/apme/classify-turn.d.ts.map +1 -0
- package/dist/apme/classify-turn.js +49 -0
- package/dist/apme/classify-turn.js.map +1 -0
- package/dist/apme/claude-transcript-reader.d.ts +10 -0
- package/dist/apme/claude-transcript-reader.d.ts.map +1 -1
- package/dist/apme/claude-transcript-reader.js +35 -0
- package/dist/apme/claude-transcript-reader.js.map +1 -1
- package/dist/apme/collector.d.ts +133 -6
- package/dist/apme/collector.d.ts.map +1 -1
- package/dist/apme/collector.js +471 -23
- package/dist/apme/collector.js.map +1 -1
- package/dist/apme/dashboard-html.d.ts.map +1 -1
- package/dist/apme/dashboard-html.js +117 -11
- package/dist/apme/dashboard-html.js.map +1 -1
- package/dist/apme/http.d.ts.map +1 -1
- package/dist/apme/http.js +52 -6
- package/dist/apme/http.js.map +1 -1
- package/dist/apme/index.d.ts +26 -5
- package/dist/apme/index.d.ts.map +1 -1
- package/dist/apme/index.js +146 -9
- package/dist/apme/index.js.map +1 -1
- package/dist/apme/judge-detect.d.ts +26 -0
- package/dist/apme/judge-detect.d.ts.map +1 -0
- package/dist/apme/judge-detect.js +69 -0
- package/dist/apme/judge-detect.js.map +1 -0
- package/dist/apme/pareto.d.ts +39 -0
- package/dist/apme/pareto.d.ts.map +1 -0
- package/dist/apme/pareto.js +59 -0
- package/dist/apme/pareto.js.map +1 -0
- package/dist/apme/recommend.d.ts +3 -0
- package/dist/apme/recommend.d.ts.map +1 -1
- package/dist/apme/recommend.js +43 -1
- package/dist/apme/recommend.js.map +1 -1
- package/dist/apme/runner.d.ts +99 -4
- package/dist/apme/runner.d.ts.map +1 -1
- package/dist/apme/runner.js +743 -72
- package/dist/apme/runner.js.map +1 -1
- package/dist/apme/sample-to-timeline.d.ts +26 -0
- package/dist/apme/sample-to-timeline.d.ts.map +1 -0
- package/dist/apme/sample-to-timeline.js +95 -0
- package/dist/apme/sample-to-timeline.js.map +1 -0
- package/dist/apme/scorers/index.d.ts +47 -0
- package/dist/apme/scorers/index.d.ts.map +1 -0
- package/dist/apme/scorers/index.js +96 -0
- package/dist/apme/scorers/index.js.map +1 -0
- package/dist/apme/settings.d.ts +17 -11
- package/dist/apme/settings.d.ts.map +1 -1
- package/dist/apme/settings.js +30 -9
- package/dist/apme/settings.js.map +1 -1
- package/dist/apme/store.d.ts +33 -1
- package/dist/apme/store.d.ts.map +1 -1
- package/dist/apme/store.js +334 -25
- package/dist/apme/store.js.map +1 -1
- package/dist/awaiting-overlay.d.ts +112 -0
- package/dist/awaiting-overlay.d.ts.map +1 -0
- package/dist/awaiting-overlay.js +179 -0
- package/dist/awaiting-overlay.js.map +1 -0
- package/dist/ble-sync-spawn.d.ts +63 -0
- package/dist/ble-sync-spawn.d.ts.map +1 -0
- package/dist/ble-sync-spawn.js +196 -0
- package/dist/ble-sync-spawn.js.map +1 -0
- package/dist/bridge-core.d.ts +34 -1
- package/dist/bridge-core.d.ts.map +1 -1
- package/dist/bridge-core.js +207 -24
- package/dist/bridge-core.js.map +1 -1
- package/dist/broadcast.d.ts +3 -0
- package/dist/broadcast.d.ts.map +1 -0
- package/dist/broadcast.js +122 -0
- package/dist/broadcast.js.map +1 -0
- package/dist/check-deps.d.ts.map +1 -1
- package/dist/check-deps.js +25 -9
- package/dist/check-deps.js.map +1 -1
- package/dist/claude-permission-rules.d.ts +55 -0
- package/dist/claude-permission-rules.d.ts.map +1 -0
- package/dist/claude-permission-rules.js +197 -0
- package/dist/claude-permission-rules.js.map +1 -0
- package/dist/cli.d.ts +15 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +1030 -93
- package/dist/cli.js.map +1 -1
- package/dist/codex-auth.d.ts +21 -0
- package/dist/codex-auth.d.ts.map +1 -1
- package/dist/codex-auth.js +52 -1
- package/dist/codex-auth.js.map +1 -1
- package/dist/codex-output-parser.d.ts +8 -0
- package/dist/codex-output-parser.d.ts.map +1 -1
- package/dist/codex-output-parser.js +110 -25
- package/dist/codex-output-parser.js.map +1 -1
- package/dist/codex-rate-limits.d.ts +16 -0
- package/dist/codex-rate-limits.d.ts.map +1 -0
- package/dist/codex-rate-limits.js +197 -0
- package/dist/codex-rate-limits.js.map +1 -0
- package/dist/codex-rollout-response.d.ts +31 -0
- package/dist/codex-rollout-response.d.ts.map +1 -0
- package/dist/codex-rollout-response.js +135 -0
- package/dist/codex-rollout-response.js.map +1 -0
- package/dist/d200h/image-renderer.d.ts +4 -16
- package/dist/d200h/image-renderer.d.ts.map +1 -1
- package/dist/d200h/image-renderer.js +46 -212
- package/dist/d200h/image-renderer.js.map +1 -1
- package/dist/daemon-server.d.ts +85 -0
- package/dist/daemon-server.d.ts.map +1 -1
- package/dist/daemon-server.js +1975 -159
- package/dist/daemon-server.js.map +1 -1
- package/dist/daemon.js +15 -6
- package/dist/daemon.js.map +1 -1
- package/dist/display-dim.d.ts +9 -0
- package/dist/display-dim.d.ts.map +1 -0
- package/dist/display-dim.js +53 -0
- package/dist/display-dim.js.map +1 -0
- package/dist/display-monitor.d.ts +15 -2
- package/dist/display-monitor.d.ts.map +1 -1
- package/dist/display-monitor.js +104 -26
- package/dist/display-monitor.js.map +1 -1
- package/dist/esp32-serial.d.ts +190 -1
- package/dist/esp32-serial.d.ts.map +1 -1
- package/dist/esp32-serial.js +1090 -156
- package/dist/esp32-serial.js.map +1 -1
- package/dist/fallback-task-timeline.d.ts +42 -0
- package/dist/fallback-task-timeline.d.ts.map +1 -0
- package/dist/fallback-task-timeline.js +119 -0
- package/dist/fallback-task-timeline.js.map +1 -0
- package/dist/foundation-models-helper.d.ts +11 -0
- package/dist/foundation-models-helper.d.ts.map +1 -0
- package/dist/foundation-models-helper.js +241 -0
- package/dist/foundation-models-helper.js.map +1 -0
- package/dist/hook-migration.js +1 -1
- package/dist/hook-migration.js.map +1 -1
- package/dist/hook-server.d.ts +2 -3
- package/dist/hook-server.d.ts.map +1 -1
- package/dist/hook-server.js +23 -10
- package/dist/hook-server.js.map +1 -1
- package/dist/idotmatrix/idotmatrix-daemon-sync.d.ts +33 -0
- package/dist/idotmatrix/idotmatrix-daemon-sync.d.ts.map +1 -0
- package/dist/idotmatrix/idotmatrix-daemon-sync.js +164 -0
- package/dist/idotmatrix/idotmatrix-daemon-sync.js.map +1 -0
- package/dist/idotmatrix/idotmatrix-discover.d.ts +18 -0
- package/dist/idotmatrix/idotmatrix-discover.d.ts.map +1 -0
- package/dist/idotmatrix/idotmatrix-discover.js +85 -0
- package/dist/idotmatrix/idotmatrix-discover.js.map +1 -0
- package/dist/idotmatrix/idotmatrix-settings.d.ts +20 -0
- package/dist/idotmatrix/idotmatrix-settings.d.ts.map +1 -0
- package/dist/idotmatrix/idotmatrix-settings.js +57 -0
- package/dist/idotmatrix/idotmatrix-settings.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +217 -179
- package/dist/index.js.map +1 -1
- package/dist/log-stream.d.ts +15 -16
- package/dist/log-stream.d.ts.map +1 -1
- package/dist/log-stream.js +18 -96
- package/dist/log-stream.js.map +1 -1
- package/dist/logger.d.ts +3 -1
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +18 -5
- package/dist/logger.js.map +1 -1
- package/dist/mdns.d.ts +17 -0
- package/dist/mdns.d.ts.map +1 -1
- package/dist/mdns.js +52 -18
- package/dist/mdns.js.map +1 -1
- package/dist/model-catalog.d.ts +1 -1
- package/dist/model-catalog.d.ts.map +1 -1
- package/dist/model-catalog.js +2 -4
- package/dist/model-catalog.js.map +1 -1
- package/dist/modules/adb-module.d.ts +1 -1
- package/dist/modules/adb-module.d.ts.map +1 -1
- package/dist/modules/adb-module.js +4 -3
- package/dist/modules/adb-module.js.map +1 -1
- package/dist/modules/broadcast-module.d.ts +17 -0
- package/dist/modules/broadcast-module.d.ts.map +1 -0
- package/dist/modules/broadcast-module.js +26 -0
- package/dist/modules/broadcast-module.js.map +1 -0
- package/dist/modules/d200h-module.d.ts +22 -0
- package/dist/modules/d200h-module.d.ts.map +1 -1
- package/dist/modules/d200h-module.js +200 -65
- package/dist/modules/d200h-module.js.map +1 -1
- package/dist/modules/idotmatrix-module.d.ts +9 -0
- package/dist/modules/idotmatrix-module.d.ts.map +1 -0
- package/dist/modules/idotmatrix-module.js +46 -0
- package/dist/modules/idotmatrix-module.js.map +1 -0
- package/dist/modules/index.d.ts +3 -1
- package/dist/modules/index.d.ts.map +1 -1
- package/dist/modules/index.js +9 -3
- package/dist/modules/index.js.map +1 -1
- package/dist/modules/pixoo-module.d.ts.map +1 -1
- package/dist/modules/pixoo-module.js +14 -4
- package/dist/modules/pixoo-module.js.map +1 -1
- package/dist/modules/serial-module.d.ts +4 -0
- package/dist/modules/serial-module.d.ts.map +1 -1
- package/dist/modules/serial-module.js +14 -12
- package/dist/modules/serial-module.js.map +1 -1
- package/dist/modules/timebox-module.d.ts +9 -0
- package/dist/modules/timebox-module.d.ts.map +1 -0
- package/dist/modules/timebox-module.js +46 -0
- package/dist/modules/timebox-module.js.map +1 -0
- package/dist/modules/trmnl-module.d.ts +38 -0
- package/dist/modules/trmnl-module.d.ts.map +1 -0
- package/dist/modules/trmnl-module.js +111 -0
- package/dist/modules/trmnl-module.js.map +1 -0
- package/dist/modules/types.d.ts +4 -2
- package/dist/modules/types.d.ts.map +1 -1
- package/dist/observed-steering.d.ts +93 -0
- package/dist/observed-steering.d.ts.map +1 -0
- package/dist/observed-steering.js +247 -0
- package/dist/observed-steering.js.map +1 -0
- package/dist/openclaw-session.d.ts +18 -0
- package/dist/openclaw-session.d.ts.map +1 -0
- package/dist/openclaw-session.js +34 -0
- package/dist/openclaw-session.js.map +1 -0
- package/dist/opencode-steering.d.ts +36 -0
- package/dist/opencode-steering.d.ts.map +1 -0
- package/dist/opencode-steering.js +84 -0
- package/dist/opencode-steering.js.map +1 -0
- package/dist/output-parser.d.ts +30 -0
- package/dist/output-parser.d.ts.map +1 -1
- package/dist/output-parser.js +172 -18
- package/dist/output-parser.js.map +1 -1
- package/dist/passive-observer.d.ts +32 -0
- package/dist/passive-observer.d.ts.map +1 -1
- package/dist/passive-observer.js +288 -49
- package/dist/passive-observer.js.map +1 -1
- package/dist/permission-resolver.d.ts +55 -0
- package/dist/permission-resolver.d.ts.map +1 -0
- package/dist/permission-resolver.js +112 -0
- package/dist/permission-resolver.js.map +1 -0
- package/dist/pixoo/micro-glyphs.d.ts +18 -0
- package/dist/pixoo/micro-glyphs.d.ts.map +1 -0
- package/dist/pixoo/micro-glyphs.js +143 -0
- package/dist/pixoo/micro-glyphs.js.map +1 -0
- package/dist/pixoo/official-dot-glyphs.generated.d.ts +8 -0
- package/dist/pixoo/official-dot-glyphs.generated.d.ts.map +1 -0
- package/dist/pixoo/official-dot-glyphs.generated.js +247 -0
- package/dist/pixoo/official-dot-glyphs.generated.js.map +1 -0
- package/dist/pixoo/pixoo-bridge.d.ts +16 -8
- package/dist/pixoo/pixoo-bridge.d.ts.map +1 -1
- package/dist/pixoo/pixoo-bridge.js +127 -35
- package/dist/pixoo/pixoo-bridge.js.map +1 -1
- package/dist/pixoo/pixoo-camera.d.ts +19 -3
- package/dist/pixoo/pixoo-camera.d.ts.map +1 -1
- package/dist/pixoo/pixoo-camera.js +62 -27
- package/dist/pixoo/pixoo-camera.js.map +1 -1
- package/dist/pixoo/pixoo-client.d.ts +13 -3
- package/dist/pixoo/pixoo-client.d.ts.map +1 -1
- package/dist/pixoo/pixoo-client.js +51 -22
- package/dist/pixoo/pixoo-client.js.map +1 -1
- package/dist/pixoo/pixoo-discover.d.ts +37 -0
- package/dist/pixoo/pixoo-discover.d.ts.map +1 -0
- package/dist/pixoo/pixoo-discover.js +105 -0
- package/dist/pixoo/pixoo-discover.js.map +1 -0
- package/dist/pixoo/pixoo-renderer.d.ts +27 -3
- package/dist/pixoo/pixoo-renderer.d.ts.map +1 -1
- package/dist/pixoo/pixoo-renderer.js +533 -135
- package/dist/pixoo/pixoo-renderer.js.map +1 -1
- package/dist/pixoo/pixoo-settings.d.ts +6 -0
- package/dist/pixoo/pixoo-settings.d.ts.map +1 -1
- package/dist/pixoo/pixoo-settings.js +9 -0
- package/dist/pixoo/pixoo-settings.js.map +1 -1
- package/dist/pixoo/pixoo-sprites.d.ts +84 -11
- package/dist/pixoo/pixoo-sprites.d.ts.map +1 -1
- package/dist/pixoo/pixoo-sprites.js +620 -209
- package/dist/pixoo/pixoo-sprites.js.map +1 -1
- package/dist/pty-manager.d.ts.map +1 -1
- package/dist/pty-manager.js +8 -2
- package/dist/pty-manager.js.map +1 -1
- package/dist/review-runner.d.ts +113 -0
- package/dist/review-runner.d.ts.map +1 -0
- package/dist/review-runner.js +428 -0
- package/dist/review-runner.js.map +1 -0
- package/dist/session-activity.d.ts +14 -0
- package/dist/session-activity.d.ts.map +1 -0
- package/dist/session-activity.js +160 -0
- package/dist/session-activity.js.map +1 -0
- package/dist/session-aggregator.d.ts +25 -0
- package/dist/session-aggregator.d.ts.map +1 -1
- package/dist/session-aggregator.js +48 -9
- package/dist/session-aggregator.js.map +1 -1
- package/dist/session-focus-relay.d.ts.map +1 -1
- package/dist/session-focus-relay.js +7 -1
- package/dist/session-focus-relay.js.map +1 -1
- package/dist/session-registry.d.ts +74 -3
- package/dist/session-registry.d.ts.map +1 -1
- package/dist/session-registry.js +140 -8
- package/dist/session-registry.js.map +1 -1
- package/dist/session-timeline-relay.d.ts.map +1 -1
- package/dist/session-timeline-relay.js +13 -4
- package/dist/session-timeline-relay.js.map +1 -1
- package/dist/session-transcript-timeline.d.ts +49 -0
- package/dist/session-transcript-timeline.d.ts.map +1 -0
- package/dist/session-transcript-timeline.js +276 -0
- package/dist/session-transcript-timeline.js.map +1 -0
- package/dist/state-machine.d.ts +6 -1
- package/dist/state-machine.d.ts.map +1 -1
- package/dist/state-machine.js +86 -28
- package/dist/state-machine.js.map +1 -1
- package/dist/timebox/timebox-daemon-sync.d.ts +19 -0
- package/dist/timebox/timebox-daemon-sync.d.ts.map +1 -0
- package/dist/timebox/timebox-daemon-sync.js +135 -0
- package/dist/timebox/timebox-daemon-sync.js.map +1 -0
- package/dist/timebox/timebox-discover.d.ts +19 -0
- package/dist/timebox/timebox-discover.d.ts.map +1 -0
- package/dist/timebox/timebox-discover.js +87 -0
- package/dist/timebox/timebox-discover.js.map +1 -0
- package/dist/timebox/timebox-settings.d.ts +32 -0
- package/dist/timebox/timebox-settings.d.ts.map +1 -0
- package/dist/timebox/timebox-settings.js +80 -0
- package/dist/timebox/timebox-settings.js.map +1 -0
- package/dist/timeline-store.d.ts +112 -3
- package/dist/timeline-store.d.ts.map +1 -1
- package/dist/timeline-store.js +460 -14
- package/dist/timeline-store.js.map +1 -1
- package/dist/timeline-summarizer.d.ts.map +1 -1
- package/dist/timeline-summarizer.js +29 -5
- package/dist/timeline-summarizer.js.map +1 -1
- package/dist/trmnl/byos-server.d.ts +39 -0
- package/dist/trmnl/byos-server.d.ts.map +1 -0
- package/dist/trmnl/byos-server.js +301 -0
- package/dist/trmnl/byos-server.js.map +1 -0
- package/dist/trmnl/frame-cache.d.ts +37 -0
- package/dist/trmnl/frame-cache.d.ts.map +1 -0
- package/dist/trmnl/frame-cache.js +157 -0
- package/dist/trmnl/frame-cache.js.map +1 -0
- package/dist/trmnl/image-renderer.d.ts +27 -0
- package/dist/trmnl/image-renderer.d.ts.map +1 -0
- package/dist/trmnl/image-renderer.js +235 -0
- package/dist/trmnl/image-renderer.js.map +1 -0
- package/dist/trmnl/trmnl-settings.d.ts +96 -0
- package/dist/trmnl/trmnl-settings.d.ts.map +1 -0
- package/dist/trmnl/trmnl-settings.js +177 -0
- package/dist/trmnl/trmnl-settings.js.map +1 -0
- package/dist/trmnl/trmnl-telemetry.d.ts +47 -0
- package/dist/trmnl/trmnl-telemetry.d.ts.map +1 -0
- package/dist/trmnl/trmnl-telemetry.js +56 -0
- package/dist/trmnl/trmnl-telemetry.js.map +1 -0
- package/dist/tui/ansi.d.ts +0 -4
- package/dist/tui/ansi.d.ts.map +1 -1
- package/dist/tui/ansi.js +14 -7
- package/dist/tui/ansi.js.map +1 -1
- package/dist/tui/dashboard.d.ts +1 -0
- package/dist/tui/dashboard.d.ts.map +1 -1
- package/dist/tui/dashboard.js +38 -11
- package/dist/tui/dashboard.js.map +1 -1
- package/dist/tui/renderer.d.ts +36 -0
- package/dist/tui/renderer.d.ts.map +1 -1
- package/dist/tui/renderer.js +355 -121
- package/dist/tui/renderer.js.map +1 -1
- package/dist/tui/terrarium.d.ts.map +1 -1
- package/dist/tui/terrarium.js +44 -51
- package/dist/tui/terrarium.js.map +1 -1
- package/dist/types.d.ts +2 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +2 -2
- package/dist/types.js.map +1 -1
- package/dist/usage-api.d.ts.map +1 -1
- package/dist/usage-api.js +7 -1
- package/dist/usage-api.js.map +1 -1
- package/dist/usage-event.d.ts +10 -3
- package/dist/usage-event.d.ts.map +1 -1
- package/dist/usage-event.js +98 -13
- package/dist/usage-event.js.map +1 -1
- package/dist/utility-proxy.d.ts.map +1 -1
- package/dist/utility-proxy.js +8 -0
- package/dist/utility-proxy.js.map +1 -1
- package/dist/utils/project-name.d.ts +3 -0
- package/dist/utils/project-name.d.ts.map +1 -1
- package/dist/utils/project-name.js +44 -2
- package/dist/utils/project-name.js.map +1 -1
- package/dist/version-check.d.ts.map +1 -1
- package/dist/version-check.js +1 -17
- package/dist/version-check.js.map +1 -1
- package/dist/windows-service.d.ts +26 -0
- package/dist/windows-service.d.ts.map +1 -0
- package/dist/windows-service.js +145 -0
- package/dist/windows-service.js.map +1 -0
- package/dist/ws-server.d.ts +17 -3
- package/dist/ws-server.d.ts.map +1 -1
- package/dist/ws-server.js +78 -8
- package/dist/ws-server.js.map +1 -1
- package/fm-helper/AgentDeckFMHelper.swift +112 -0
- package/package.json +10 -4
- package/scripts/build-fm-helper.mjs +26 -0
- package/LICENSE +0 -21
- package/dist/apme/tuner.d.ts +0 -64
- package/dist/apme/tuner.d.ts.map +0 -1
- package/dist/apme/tuner.js +0 -297
- package/dist/apme/tuner.js.map +0 -1
|
@@ -27,6 +27,7 @@ const CODEX_STATUS_LINE = /[❯›]\s.*(?:gpt-|o\d|codex)[\w.-]*\s.*·.*~/;
|
|
|
27
27
|
const APPROVAL_ALLOW = /\bAllow\b.*\bDeny\b|\bapprove\b.*\bdeny\b/i;
|
|
28
28
|
const APPROVAL_YN = /\(y\)es.*\(n\)o|\[Y\/n\]|\[y\/N\]/i;
|
|
29
29
|
const APPROVAL_ALWAYS = /Always\s+allow|Allow\s+once/i;
|
|
30
|
+
const CODEX_COMMAND_APPROVAL = /Would you like to run the following command\?|Yes,\s*proceed\s*\(y\)|Yes,\s+and\s+don['’]t\s+ask\s+again|No,\s+and\s+tell\s+Codex|Press enter to confirm or esc to cancel/i;
|
|
30
31
|
// Tool/command execution indicators
|
|
31
32
|
const TOOL_RUNNING = /(?:Running|Executing|Ran)(?:\s+in\s+\S+)?:\s*[`"]?(.+?)[`"]?\s*$/m;
|
|
32
33
|
const FILE_OPERATION = /(?:Reading|Writing|Creating|Deleting|Editing|Patching)\s+(.+)/i;
|
|
@@ -40,6 +41,12 @@ const PROJECT_DIR = /[~\/][\w.\-\/]+\/(\w[\w.\-]*)\s*$/m;
|
|
|
40
41
|
const SPINNER_DEBOUNCE_MS = 2000;
|
|
41
42
|
const IDLE_DEBOUNCE_MS = 300;
|
|
42
43
|
const OPTION_DEBOUNCE_MS = 150;
|
|
44
|
+
// Codex's Ink TUI redraws the screen frequently; the same "Running: cmd" line
|
|
45
|
+
// can land in several PTY chunks within a single tool invocation, producing
|
|
46
|
+
// duplicate tool_action emits. Suppress repeats of the same (tool, args) for
|
|
47
|
+
// 4 s. The window is reset at turn boundaries (idle / synthetic spinner_stop)
|
|
48
|
+
// so the same command run twice in a row across turns still emits twice.
|
|
49
|
+
const TOOL_ACTION_DEDUP_WINDOW_MS = 4000;
|
|
43
50
|
export class CodexOutputParser extends EventEmitter {
|
|
44
51
|
buffer = '';
|
|
45
52
|
spinnerActive = false;
|
|
@@ -50,6 +57,8 @@ export class CodexOutputParser extends EventEmitter {
|
|
|
50
57
|
modelName = null;
|
|
51
58
|
seenFirstIdle = false;
|
|
52
59
|
pendingAnsi = '';
|
|
60
|
+
lastToolKey = null;
|
|
61
|
+
lastToolTs = 0;
|
|
53
62
|
feed(rawData) {
|
|
54
63
|
const data = this.pendingAnsi + rawData;
|
|
55
64
|
this.pendingAnsi = '';
|
|
@@ -89,10 +98,12 @@ export class CodexOutputParser extends EventEmitter {
|
|
|
89
98
|
this.parseProjectName(chunk);
|
|
90
99
|
this.parseModelInfo(chunk);
|
|
91
100
|
// --- Pre-scan ---
|
|
101
|
+
const haystack = this.buffer.slice(-4096);
|
|
92
102
|
const hasIdlePrompt = IDLE_PROMPT.test(chunk) || CODEX_STATUS_LINE.test(chunk);
|
|
93
103
|
const hasApproval = APPROVAL_ALLOW.test(chunk) ||
|
|
94
104
|
APPROVAL_YN.test(chunk) ||
|
|
95
|
-
APPROVAL_ALWAYS.test(chunk)
|
|
105
|
+
APPROVAL_ALWAYS.test(chunk) ||
|
|
106
|
+
CODEX_COMMAND_APPROVAL.test(chunk);
|
|
96
107
|
// --- Spinner + prompt handling ---
|
|
97
108
|
const hasSpinner = BRAILLE_SPINNERS.test(chunk) || THINKING_TEXT.test(chunk) || CODEX_WORKING_STATUS.test(chunk);
|
|
98
109
|
// Approval prompt → AWAITING_PERMISSION
|
|
@@ -115,7 +126,12 @@ export class CodexOutputParser extends EventEmitter {
|
|
|
115
126
|
this.optionTimer = setTimeout(() => {
|
|
116
127
|
this.optionTimer = null;
|
|
117
128
|
debug('CodexParser', 'EMIT permission_prompt');
|
|
118
|
-
this.emit('permission_prompt', {
|
|
129
|
+
this.emit('permission_prompt', {
|
|
130
|
+
question: this.extractApprovalQuestion(haystack),
|
|
131
|
+
options: this.extractApprovalOptions(haystack),
|
|
132
|
+
navigable: this.hasNavigableApprovalOptions(haystack),
|
|
133
|
+
cursorIndex: this.extractApprovalCursorIndex(haystack),
|
|
134
|
+
});
|
|
119
135
|
}, OPTION_DEBOUNCE_MS);
|
|
120
136
|
return;
|
|
121
137
|
}
|
|
@@ -134,13 +150,17 @@ export class CodexOutputParser extends EventEmitter {
|
|
|
134
150
|
debug('CodexParser', 'EMIT spinner_stop (idle detected)');
|
|
135
151
|
this.emit('spinner_stop');
|
|
136
152
|
}
|
|
137
|
-
// Debounce idle emission
|
|
153
|
+
// Debounce idle emission. `source: 'prompt'` marks this as a genuine
|
|
154
|
+
// idle (the input prompt actually appeared), as opposed to the
|
|
155
|
+
// spinner-timeout synthetic idles emitted below. Only the prompt
|
|
156
|
+
// source is a reliable turn-end signal for the bridge.
|
|
138
157
|
if (this.idleTimer)
|
|
139
158
|
clearTimeout(this.idleTimer);
|
|
140
159
|
this.idleTimer = setTimeout(() => {
|
|
141
160
|
this.idleTimer = null;
|
|
142
|
-
debug('CodexParser', 'EMIT idle');
|
|
143
|
-
this.
|
|
161
|
+
debug('CodexParser', 'EMIT idle (prompt)');
|
|
162
|
+
this.resetToolDedup();
|
|
163
|
+
this.emit('idle', { source: 'prompt' });
|
|
144
164
|
}, IDLE_DEBOUNCE_MS);
|
|
145
165
|
return;
|
|
146
166
|
}
|
|
@@ -166,7 +186,11 @@ export class CodexOutputParser extends EventEmitter {
|
|
|
166
186
|
this.spinnerActive = false;
|
|
167
187
|
debug('CodexParser', 'EMIT spinner_stop (timeout)');
|
|
168
188
|
this.emit('spinner_stop');
|
|
169
|
-
this.
|
|
189
|
+
this.resetToolDedup();
|
|
190
|
+
// Synthetic idle: spinner data went silent. This often means
|
|
191
|
+
// a tool is running, not that the turn ended. Mark the source
|
|
192
|
+
// so the bridge can distinguish from genuine prompt idles.
|
|
193
|
+
this.emit('idle', { source: 'timeout' });
|
|
170
194
|
}
|
|
171
195
|
}, SPINNER_DEBOUNCE_MS);
|
|
172
196
|
}
|
|
@@ -182,41 +206,102 @@ export class CodexOutputParser extends EventEmitter {
|
|
|
182
206
|
this.spinnerActive = false;
|
|
183
207
|
debug('CodexParser', 'EMIT spinner_stop (timeout)');
|
|
184
208
|
this.emit('spinner_stop');
|
|
185
|
-
this.
|
|
209
|
+
this.resetToolDedup();
|
|
210
|
+
this.emit('idle', { source: 'timeout' });
|
|
186
211
|
}
|
|
187
212
|
}, SPINNER_DEBOUNCE_MS);
|
|
188
213
|
}
|
|
189
214
|
}
|
|
190
215
|
}
|
|
191
|
-
extractApprovalOptions(
|
|
216
|
+
extractApprovalOptions(text) {
|
|
217
|
+
const numbered = this.extractNumberedApprovalOptions(text);
|
|
218
|
+
if (numbered.length > 0)
|
|
219
|
+
return numbered;
|
|
192
220
|
const options = [];
|
|
193
|
-
|
|
194
|
-
options.push(
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
221
|
+
const push = (label, shortcut) => {
|
|
222
|
+
options.push({ index: options.length, label, shortcut });
|
|
223
|
+
};
|
|
224
|
+
if (/Allow\s+once/i.test(text))
|
|
225
|
+
push('Allow once', 'y');
|
|
226
|
+
if (/Always\s+allow/i.test(text))
|
|
227
|
+
push('Always allow', 'a');
|
|
228
|
+
if (/\bDeny\b/i.test(text))
|
|
229
|
+
push('Deny', 'n');
|
|
230
|
+
if (/\(y\)es/i.test(text))
|
|
231
|
+
push('Yes', 'y');
|
|
232
|
+
if (/\(n\)o/i.test(text))
|
|
233
|
+
push('No', 'n');
|
|
234
|
+
if (options.length === 0) {
|
|
235
|
+
push('Allow', 'y');
|
|
236
|
+
push('Deny', 'n');
|
|
237
|
+
}
|
|
205
238
|
return options;
|
|
206
239
|
}
|
|
240
|
+
extractNumberedApprovalOptions(text) {
|
|
241
|
+
const options = [];
|
|
242
|
+
for (const rawLine of text.split(/\r?\n/)) {
|
|
243
|
+
const line = rawLine.replace(/\s+/g, ' ').trim();
|
|
244
|
+
const match = line.match(/^(?:[›❯>]\s*)?(\d+)\.\s+(.+)$/);
|
|
245
|
+
if (!match)
|
|
246
|
+
continue;
|
|
247
|
+
const index = Number(match[1]) - 1;
|
|
248
|
+
if (!Number.isFinite(index) || index < 0)
|
|
249
|
+
continue;
|
|
250
|
+
let label = match[2].trim();
|
|
251
|
+
const shortcut = label.match(/\((y|p|n|esc)\)\s*$/i)?.[1]?.toLowerCase();
|
|
252
|
+
label = label
|
|
253
|
+
.replace(/\s*\((?:y|p|n|esc)\)\s*$/i, '')
|
|
254
|
+
.replace(/\s+/g, ' ')
|
|
255
|
+
.trim();
|
|
256
|
+
if (label)
|
|
257
|
+
options.push({ index, label, shortcut });
|
|
258
|
+
}
|
|
259
|
+
return options.sort((a, b) => a.index - b.index);
|
|
260
|
+
}
|
|
261
|
+
hasNavigableApprovalOptions(text) {
|
|
262
|
+
return /^\s*[›❯>]\s*\d+\.\s+/m.test(text);
|
|
263
|
+
}
|
|
264
|
+
extractApprovalCursorIndex(text) {
|
|
265
|
+
const line = text.split(/\r?\n/).find((l) => /^\s*[›❯>]\s*\d+\.\s+/.test(l));
|
|
266
|
+
const match = line?.match(/^\s*[›❯>]\s*(\d+)\.\s+/);
|
|
267
|
+
const index = match ? Number(match[1]) - 1 : 0;
|
|
268
|
+
return Number.isFinite(index) && index >= 0 ? index : 0;
|
|
269
|
+
}
|
|
270
|
+
extractApprovalQuestion(text) {
|
|
271
|
+
const commandMatch = text.match(/^\s*\$\s+(.+)$/m);
|
|
272
|
+
if (commandMatch)
|
|
273
|
+
return commandMatch[1].trim();
|
|
274
|
+
if (/Would you like to run the following command\?/i.test(text)) {
|
|
275
|
+
return 'Run command?';
|
|
276
|
+
}
|
|
277
|
+
return null;
|
|
278
|
+
}
|
|
207
279
|
parseToolAction(chunk) {
|
|
208
280
|
const runMatch = chunk.match(TOOL_RUNNING);
|
|
209
281
|
if (runMatch) {
|
|
210
|
-
|
|
211
|
-
this.emit('tool_action', { tool: 'shell', args: runMatch[1] });
|
|
282
|
+
this.emitToolAction('shell', runMatch[1]);
|
|
212
283
|
return;
|
|
213
284
|
}
|
|
214
285
|
const fileMatch = chunk.match(FILE_OPERATION);
|
|
215
286
|
if (fileMatch) {
|
|
216
|
-
const op = chunk.match(/^(Reading|Writing|Creating|Deleting|Editing|Patching)/i)?.[1] ?? 'file';
|
|
217
|
-
|
|
218
|
-
|
|
287
|
+
const op = (chunk.match(/^(Reading|Writing|Creating|Deleting|Editing|Patching)/i)?.[1] ?? 'file').toLowerCase();
|
|
288
|
+
this.emitToolAction(op, fileMatch[1]);
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
emitToolAction(tool, args) {
|
|
292
|
+
const key = `${tool}${args.trim()}`;
|
|
293
|
+
const now = Date.now();
|
|
294
|
+
if (this.lastToolKey === key && now - this.lastToolTs < TOOL_ACTION_DEDUP_WINDOW_MS) {
|
|
295
|
+
return;
|
|
219
296
|
}
|
|
297
|
+
this.lastToolKey = key;
|
|
298
|
+
this.lastToolTs = now;
|
|
299
|
+
debug('CodexParser', `EMIT tool_action: ${tool} ${args}`);
|
|
300
|
+
this.emit('tool_action', { tool, args, toolName: tool, toolArgs: args });
|
|
301
|
+
}
|
|
302
|
+
resetToolDedup() {
|
|
303
|
+
this.lastToolKey = null;
|
|
304
|
+
this.lastToolTs = 0;
|
|
220
305
|
}
|
|
221
306
|
parseProjectName(chunk) {
|
|
222
307
|
if (this.projectName)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-output-parser.js","sourceRoot":"","sources":["../src/codex-output-parser.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"codex-output-parser.js","sourceRoot":"","sources":["../src/codex-output-parser.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC;;;;;;;;;GASG;AAEH,6CAA6C;AAC7C,MAAM,gBAAgB,GAAG,cAAc,CAAC;AAExC,8BAA8B;AAC9B,6FAA6F;AAC7F,MAAM,aAAa,GAAG,yDAAyD,CAAC;AAChF,0DAA0D;AAC1D,MAAM,oBAAoB,GAAG,0BAA0B,CAAC;AAExD,gEAAgE;AAChE,wEAAwE;AACxE,MAAM,WAAW,GAAG,cAAc,CAAC;AACnC,qFAAqF;AACrF,MAAM,iBAAiB,GAAG,2CAA2C,CAAC;AAEtE,mFAAmF;AACnF,MAAM,cAAc,GAAG,4CAA4C,CAAC;AACpE,MAAM,WAAW,GAAG,oCAAoC,CAAC;AACzD,MAAM,eAAe,GAAG,8BAA8B,CAAC;AACvD,MAAM,sBAAsB,GAC1B,4KAA4K,CAAC;AAE/K,oCAAoC;AACpC,MAAM,YAAY,GAAG,mEAAmE,CAAC;AACzF,MAAM,cAAc,GAAG,gEAAgE,CAAC;AAExF,6DAA6D;AAC7D,kDAAkD;AAClD,MAAM,UAAU,GAAG,+DAA+D,CAAC;AACnF,MAAM,qBAAqB,GAAG,iEAAiE,CAAC;AAEhG,4BAA4B;AAC5B,MAAM,OAAO,GAAG,iDAAiD,CAAC;AAClE,MAAM,WAAW,GAAG,oCAAoC,CAAC;AAEzD,MAAM,mBAAmB,GAAG,IAAI,CAAC;AACjC,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAC7B,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAE/B,8EAA8E;AAC9E,4EAA4E;AAC5E,6EAA6E;AAC7E,8EAA8E;AAC9E,yEAAyE;AACzE,MAAM,2BAA2B,GAAG,IAAI,CAAC;AAEzC,MAAM,OAAO,iBAAkB,SAAQ,YAAY;IACzC,MAAM,GAAG,EAAE,CAAC;IACZ,aAAa,GAAG,KAAK,CAAC;IACtB,YAAY,GAAyC,IAAI,CAAC;IAC1D,SAAS,GAAyC,IAAI,CAAC;IACvD,WAAW,GAAyC,IAAI,CAAC;IACzD,WAAW,GAAkB,IAAI,CAAC;IAClC,SAAS,GAAkB,IAAI,CAAC;IAChC,aAAa,GAAG,KAAK,CAAC;IACtB,WAAW,GAAG,EAAE,CAAC;IACjB,WAAW,GAAkB,IAAI,CAAC;IAClC,UAAU,GAAG,CAAC,CAAC;IAEvB,IAAI,CAAC,OAAe;QAClB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC;QACxC,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QAEtB,0CAA0C;QAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,OAAO,KAAK,CAAC,CAAC,IAAI,OAAO,IAAI,IAAI,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;YAClD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACjC,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,+BAA+B,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;gBACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;gBACxC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;oBAAE,OAAO;gBAClC,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAEO,WAAW,CAAC,OAAe;QACjC,MAAM,MAAM,GAAG,OAAO;aACnB,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;aAC3B,OAAO,CAAC,yBAAyB,EAAE,IAAI,CAAC;aACxC,OAAO,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;QACrC,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;QAChC,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC;QAErB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;YAC9B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;QACzC,CAAC;QAED,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC3F,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,KAAK,CAAC,aAAa,EAAE,QAAQ,KAAK,CAAC,MAAM,OAAO,OAAO,GAAG,CAAC,CAAC;QAC9D,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAEO,cAAc,CAAC,KAAa;QAClC,kCAAkC;QAClC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAE3B,mBAAmB;QACnB,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;QAC1C,MAAM,aAAa,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/E,MAAM,WAAW,GACf,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;YAC1B,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;YACvB,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;YAC3B,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAErC,oCAAoC;QACpC,MAAM,UAAU,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEjH,wCAAwC;QACxC,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YAAC,CAAC;YACrF,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YAAC,CAAC;YAE5E,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;gBACvB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;gBAC3B,KAAK,CAAC,aAAa,EAAE,uCAAuC,CAAC,CAAC;gBAC9D,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC5B,CAAC;YAED,IAAI,IAAI,CAAC,WAAW;gBAAE,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACrD,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,GAAG,EAAE;gBACjC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;gBACxB,KAAK,CAAC,aAAa,EAAE,wBAAwB,CAAC,CAAC;gBAC/C,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;oBAC7B,QAAQ,EAAE,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC;oBAChD,OAAO,EAAE,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC;oBAC9C,SAAS,EAAE,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC;oBACrD,WAAW,EAAE,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC;iBACvD,CAAC,CAAC;YACL,CAAC,EAAE,kBAAkB,CAAC,CAAC;YACvB,OAAO;QACT,CAAC;QAED,uBAAuB;QACvB,IAAI,aAAa,EAAE,CAAC;YAClB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;gBACxB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;gBAC1B,KAAK,CAAC,aAAa,EAAE,4BAA4B,CAAC,CAAC;YACrD,CAAC;YAED,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YAAC,CAAC;YAErF,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;gBACvB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;gBAC3B,KAAK,CAAC,aAAa,EAAE,mCAAmC,CAAC,CAAC;gBAC1D,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC5B,CAAC;YAED,qEAAqE;YACrE,+DAA+D;YAC/D,iEAAiE;YACjE,uDAAuD;YACvD,IAAI,IAAI,CAAC,SAAS;gBAAE,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACjD,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC/B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;gBACtB,KAAK,CAAC,aAAa,EAAE,oBAAoB,CAAC,CAAC;gBAC3C,IAAI,CAAC,cAAc,EAAE,CAAC;gBACtB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC1C,CAAC,EAAE,gBAAgB,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QAED,iCAAiC;QACjC,IAAI,UAAU,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACrC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YAAC,CAAC;YAE5E,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;gBACxB,+DAA+D;gBAC/D,IAAI,IAAI,CAAC,YAAY;oBAAE,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBACvD,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,GAAG,EAAE;oBAClC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;wBACxB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;wBAC1B,KAAK,CAAC,aAAa,EAAE,oBAAoB,CAAC,CAAC;wBAC3C,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;wBAC3B,6DAA6D;wBAC7D,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,GAAG,EAAE;4BAClC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;4BACzB,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;gCACvB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;gCAC3B,KAAK,CAAC,aAAa,EAAE,6BAA6B,CAAC,CAAC;gCACpD,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gCAC1B,IAAI,CAAC,cAAc,EAAE,CAAC;gCACtB,6DAA6D;gCAC7D,8DAA8D;gCAC9D,2DAA2D;gCAC3D,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;4BAC3C,CAAC;wBACH,CAAC,EAAE,mBAAmB,CAAC,CAAC;oBAC1B,CAAC;gBACH,CAAC,EAAE,GAAG,CAAC,CAAC;YACV,CAAC;iBAAM,CAAC;gBACN,0CAA0C;gBAC1C,IAAI,IAAI,CAAC,YAAY;oBAAE,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBACvD,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,GAAG,EAAE;oBAClC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;oBACzB,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;wBACvB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;wBAC3B,KAAK,CAAC,aAAa,EAAE,6BAA6B,CAAC,CAAC;wBACpD,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;wBAC1B,IAAI,CAAC,cAAc,EAAE,CAAC;wBACtB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;oBAC3C,CAAC;gBACH,CAAC,EAAE,mBAAmB,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;IACH,CAAC;IAEO,sBAAsB,CAAC,IAAY;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,CAAC;QAC3D,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,QAAQ,CAAC;QAEzC,MAAM,OAAO,GAAmB,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,QAAiB,EAAE,EAAE;YAChD,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC3D,CAAC,CAAC;QACF,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;QACxD,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;QAC5D,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC9C,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC5C,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC1C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YACnB,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACpB,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,8BAA8B,CAAC,IAAY;QACjD,MAAM,OAAO,GAAmB,EAAE,CAAC;QACnC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1C,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;YACjD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;YAC1D,IAAI,CAAC,KAAK;gBAAE,SAAS;YACrB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;gBAAE,SAAS;YACnD,IAAI,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC5B,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC;YACzE,KAAK,GAAG,KAAK;iBACV,OAAO,CAAC,2BAA2B,EAAE,EAAE,CAAC;iBACxC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;iBACpB,IAAI,EAAE,CAAC;YACV,IAAI,KAAK;gBAAE,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACtD,CAAC;QACD,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACnD,CAAC;IAEO,2BAA2B,CAAC,IAAY;QAC9C,OAAO,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;IAEO,0BAA0B,CAAC,IAAY;QAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7E,MAAM,KAAK,GAAG,IAAI,EAAE,KAAK,CAAC,wBAAwB,CAAC,CAAC;QACpD,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/C,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1D,CAAC;IAEO,uBAAuB,CAAC,IAAY;QAC1C,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACnD,IAAI,YAAY;YAAE,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAChD,IAAI,gDAAgD,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAChE,OAAO,cAAc,CAAC;QACxB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,eAAe,CAAC,KAAa;QACnC,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC3C,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1C,OAAO;QACT,CAAC;QACD,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAC9C,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,wDAAwD,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;YAChH,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAEO,cAAc,CAAC,IAAY,EAAE,IAAY;QAC/C,MAAM,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,IAAI,CAAC,WAAW,KAAK,GAAG,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,GAAG,2BAA2B,EAAE,CAAC;YACpF,OAAO;QACT,CAAC;QACD,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;QACtB,KAAK,CAAC,aAAa,EAAE,qBAAqB,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;QAC1D,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3E,CAAC;IAEO,cAAc;QACpB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;IACtB,CAAC;IAEO,gBAAgB,CAAC,KAAa;QACpC,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO;QAC7B,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;YACrD,IAAI,QAAQ,EAAE,CAAC;gBACb,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAC/B,KAAK,CAAC,aAAa,EAAE,sBAAsB,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;gBAC/D,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;gBACtD,OAAO;YACT,CAAC;QACH,CAAC;QACD,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC1C,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC/B,KAAK,CAAC,aAAa,EAAE,sBAAsB,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;YAC/D,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAEO,cAAc,CAAC,KAAa;QAClC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;QAC5E,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;YACzC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAC1B,KAAK,CAAC,aAAa,EAAE,oBAAoB,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;YAC3D,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;CACF"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { CodexRateLimits } from '@agentdeck/shared';
|
|
2
|
+
/**
|
|
3
|
+
* Read the newest usable Codex rate-limits snapshot from a sessions tree.
|
|
4
|
+
* Exported (root-injectable) for unit testing; `readCodexRateLimits` wraps this
|
|
5
|
+
* with mtime caching against the live `~/.codex/sessions` tree.
|
|
6
|
+
*/
|
|
7
|
+
export declare function pickCodexRateLimits(root?: string): CodexRateLimits | null;
|
|
8
|
+
/**
|
|
9
|
+
* Parse the newest `rate_limits` snapshot out of a chunk of rollout JSONL text
|
|
10
|
+
* (typically the file tail). Scans lines from the end so the most recent
|
|
11
|
+
* snapshot wins. Exported for unit testing. Returns null when no usable
|
|
12
|
+
* rate-limit line is found.
|
|
13
|
+
*/
|
|
14
|
+
export declare function parseCodexRateLimitsFromText(text: string): CodexRateLimits | null;
|
|
15
|
+
export declare function readCodexRateLimits(): CodexRateLimits | null;
|
|
16
|
+
//# sourceMappingURL=codex-rate-limits.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-rate-limits.d.ts","sourceRoot":"","sources":["../src/codex-rate-limits.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAgB,eAAe,EAAwB,MAAM,mBAAmB,CAAC;AAkI7F;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,GAAE,MAA8B,GAAG,eAAe,GAAG,IAAI,CAEhG;AA+CD;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CA4BjF;AASD,wBAAgB,mBAAmB,IAAI,eAAe,GAAG,IAAI,CAU5D"}
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import os from 'os';
|
|
3
|
+
import path from 'path';
|
|
4
|
+
const defaultSessionsRoot = () => path.join(os.homedir(), '.codex', 'sessions');
|
|
5
|
+
/** List immediate subdirectory names of `dir`, sorted newest-first (numeric,
|
|
6
|
+
* so "10" > "9"). Returns [] on any read error. */
|
|
7
|
+
function sortedSubdirs(dir) {
|
|
8
|
+
try {
|
|
9
|
+
return fs
|
|
10
|
+
.readdirSync(dir, { withFileTypes: true })
|
|
11
|
+
.filter((e) => e.isDirectory())
|
|
12
|
+
.map((e) => e.name)
|
|
13
|
+
.sort((a, b) => b.localeCompare(a, undefined, { numeric: true }));
|
|
14
|
+
}
|
|
15
|
+
catch {
|
|
16
|
+
return [];
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
/** Collect the newest `maxDays` day-directories under a year/month/day tree,
|
|
20
|
+
* walking back across month and year boundaries when a level runs short, so a
|
|
21
|
+
* session that spans midnight (whose rollout stays in the older day-dir) is
|
|
22
|
+
* still reachable. Returns absolute day-directory paths, newest-first. */
|
|
23
|
+
function newestDayDirs(root, maxDays) {
|
|
24
|
+
const out = [];
|
|
25
|
+
for (const year of sortedSubdirs(root)) {
|
|
26
|
+
const yearDir = path.join(root, year);
|
|
27
|
+
for (const month of sortedSubdirs(yearDir)) {
|
|
28
|
+
const monthDir = path.join(yearDir, month);
|
|
29
|
+
for (const day of sortedSubdirs(monthDir)) {
|
|
30
|
+
out.push(path.join(monthDir, day));
|
|
31
|
+
if (out.length >= maxDays)
|
|
32
|
+
return out;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return out;
|
|
37
|
+
}
|
|
38
|
+
/** Gather rollout files across the newest few day-directories and return them
|
|
39
|
+
* sorted by mtime descending (capped). Selecting by mtime *across* day-dirs —
|
|
40
|
+
* not just within the single newest day-dir — is what lets a still-appending
|
|
41
|
+
* session started on a previous day win over a fresh-but-empty session that
|
|
42
|
+
* merely created a newer day-directory. */
|
|
43
|
+
function candidateRolloutFiles(root, maxDays = 3, maxFiles = 6) {
|
|
44
|
+
if (!fs.existsSync(root))
|
|
45
|
+
return [];
|
|
46
|
+
const files = [];
|
|
47
|
+
for (const dayDir of newestDayDirs(root, maxDays)) {
|
|
48
|
+
let entries;
|
|
49
|
+
try {
|
|
50
|
+
entries = fs.readdirSync(dayDir);
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
for (const f of entries) {
|
|
56
|
+
if (!f.startsWith('rollout-') || !f.endsWith('.jsonl'))
|
|
57
|
+
continue;
|
|
58
|
+
const full = path.join(dayDir, f);
|
|
59
|
+
try {
|
|
60
|
+
files.push({ full, mtime: fs.statSync(full).mtimeMs });
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
/* ignore unreadable entry */
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
files.sort((a, b) => b.mtime - a.mtime);
|
|
68
|
+
return files.slice(0, maxFiles);
|
|
69
|
+
}
|
|
70
|
+
/** Scan candidates newest-first and return the first that yields a usable
|
|
71
|
+
* rate-limits snapshot. Falls through past a newer file that carries no
|
|
72
|
+
* `rate_limits` line (e.g. a just-started session) to an older active one. */
|
|
73
|
+
function parseFirstUsable(candidates) {
|
|
74
|
+
for (const { full, mtime } of candidates) {
|
|
75
|
+
const tail = readTail(full);
|
|
76
|
+
const parsed = tail ? parseCodexRateLimitsFromText(tail) : null;
|
|
77
|
+
if (parsed) {
|
|
78
|
+
// Stamp the rollout mtime as a secondary freshness anchor (the per-window
|
|
79
|
+
// `stale` flag set in buildUsageEvent is authoritative).
|
|
80
|
+
parsed.capturedAt = new Date(mtime).toISOString();
|
|
81
|
+
return parsed;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Read the newest usable Codex rate-limits snapshot from a sessions tree.
|
|
88
|
+
* Exported (root-injectable) for unit testing; `readCodexRateLimits` wraps this
|
|
89
|
+
* with mtime caching against the live `~/.codex/sessions` tree.
|
|
90
|
+
*/
|
|
91
|
+
export function pickCodexRateLimits(root = defaultSessionsRoot()) {
|
|
92
|
+
return parseFirstUsable(candidateRolloutFiles(root));
|
|
93
|
+
}
|
|
94
|
+
/** Read the trailing bytes of a file without slurping the whole rollout (these
|
|
95
|
+
* can grow to many MB). The newest `rate_limits` line is always near the end. */
|
|
96
|
+
function readTail(file, maxBytes = 262144) {
|
|
97
|
+
let fd = null;
|
|
98
|
+
try {
|
|
99
|
+
fd = fs.openSync(file, 'r');
|
|
100
|
+
const size = fs.fstatSync(fd).size;
|
|
101
|
+
const start = Math.max(0, size - maxBytes);
|
|
102
|
+
const len = size - start;
|
|
103
|
+
const buf = Buffer.alloc(len);
|
|
104
|
+
fs.readSync(fd, buf, 0, len, start);
|
|
105
|
+
return buf.toString('utf8');
|
|
106
|
+
}
|
|
107
|
+
catch {
|
|
108
|
+
return null;
|
|
109
|
+
}
|
|
110
|
+
finally {
|
|
111
|
+
if (fd !== null)
|
|
112
|
+
try {
|
|
113
|
+
fs.closeSync(fd);
|
|
114
|
+
}
|
|
115
|
+
catch { /* ignore */ }
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
function toCredits(raw) {
|
|
119
|
+
if (!raw || (typeof raw.has_credits !== 'boolean' && typeof raw.unlimited !== 'boolean' && raw.balance == null)) {
|
|
120
|
+
return undefined;
|
|
121
|
+
}
|
|
122
|
+
return {
|
|
123
|
+
hasCredits: raw.has_credits === true,
|
|
124
|
+
unlimited: raw.unlimited === true,
|
|
125
|
+
balance: raw.balance != null ? String(raw.balance) : undefined,
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
function toWindow(raw) {
|
|
129
|
+
if (!raw || typeof raw.used_percent !== 'number' || typeof raw.window_minutes !== 'number') {
|
|
130
|
+
return undefined;
|
|
131
|
+
}
|
|
132
|
+
const resetsAt = typeof raw.resets_at === 'number' && raw.resets_at > 0
|
|
133
|
+
? new Date(raw.resets_at * 1000).toISOString()
|
|
134
|
+
: undefined;
|
|
135
|
+
return {
|
|
136
|
+
usedPercent: Math.min(100, Math.max(0, raw.used_percent)),
|
|
137
|
+
windowMinutes: raw.window_minutes,
|
|
138
|
+
resetsAt,
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Parse the newest `rate_limits` snapshot out of a chunk of rollout JSONL text
|
|
143
|
+
* (typically the file tail). Scans lines from the end so the most recent
|
|
144
|
+
* snapshot wins. Exported for unit testing. Returns null when no usable
|
|
145
|
+
* rate-limit line is found.
|
|
146
|
+
*/
|
|
147
|
+
export function parseCodexRateLimitsFromText(text) {
|
|
148
|
+
const lines = text.split('\n');
|
|
149
|
+
for (let i = lines.length - 1; i >= 0; i--) {
|
|
150
|
+
const line = lines[i].trim();
|
|
151
|
+
if (!line || !line.includes('rate_limits'))
|
|
152
|
+
continue;
|
|
153
|
+
try {
|
|
154
|
+
const obj = JSON.parse(line);
|
|
155
|
+
const rl = obj?.payload?.rate_limits;
|
|
156
|
+
if (!rl)
|
|
157
|
+
continue;
|
|
158
|
+
const primary = toWindow(rl.primary);
|
|
159
|
+
const secondary = toWindow(rl.secondary);
|
|
160
|
+
const credits = toCredits(rl.credits);
|
|
161
|
+
const limitId = typeof rl.limit_id === 'string' ? rl.limit_id : undefined;
|
|
162
|
+
// Credit-based plans (e.g. limit_id "premium") report null windows and
|
|
163
|
+
// convey usage via the credits block instead — keep those snapshots too.
|
|
164
|
+
if (!primary && !secondary && !credits && !limitId)
|
|
165
|
+
continue;
|
|
166
|
+
return {
|
|
167
|
+
primary,
|
|
168
|
+
secondary,
|
|
169
|
+
planType: typeof rl.plan_type === 'string' ? rl.plan_type : undefined,
|
|
170
|
+
limitId,
|
|
171
|
+
credits,
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
catch {
|
|
175
|
+
// Possibly a truncated first line from the tail window; keep scanning.
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
return null;
|
|
179
|
+
}
|
|
180
|
+
// Cache keyed on the newest candidate rollout's path + mtime so repeated usage
|
|
181
|
+
// polls don't re-scan unchanged files. Keying on the newest candidate (not the
|
|
182
|
+
// one that yielded the snapshot) means any fresh write to the active session
|
|
183
|
+
// invalidates the cache and re-scans.
|
|
184
|
+
let cacheKey = '';
|
|
185
|
+
let cacheValue = null;
|
|
186
|
+
export function readCodexRateLimits() {
|
|
187
|
+
const candidates = candidateRolloutFiles(defaultSessionsRoot());
|
|
188
|
+
const newest = candidates[0];
|
|
189
|
+
const key = newest ? `${newest.full}:${newest.mtime}` : '';
|
|
190
|
+
if (key && key === cacheKey)
|
|
191
|
+
return cacheValue;
|
|
192
|
+
const parsed = parseFirstUsable(candidates);
|
|
193
|
+
cacheKey = key;
|
|
194
|
+
cacheValue = parsed;
|
|
195
|
+
return parsed;
|
|
196
|
+
}
|
|
197
|
+
//# sourceMappingURL=codex-rate-limits.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-rate-limits.js","sourceRoot":"","sources":["../src/codex-rate-limits.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extract a Codex turn's final response text from its rollout JSONL.
|
|
3
|
+
*
|
|
4
|
+
* Why this exists: observed (direct-run) Codex sessions reach the daemon
|
|
5
|
+
* only through codex_* lifecycle hooks, and `codex_stop`'s stdin payload
|
|
6
|
+
* does not reliably carry the assistant text (the Swift daemon probes
|
|
7
|
+
* `last_assistant_message`/`response`/`output`/`result` and usually finds
|
|
8
|
+
* nothing). The rollout Codex writes under `~/.codex/sessions/` DOES hold
|
|
9
|
+
* it: `event_msg` records of type `agent_message` (`payload.message`) and,
|
|
10
|
+
* at turn end, `task_complete` (`payload.last_agent_message`). This is the
|
|
11
|
+
* Codex counterpart of `lastAssistantTextFromTranscript` for Claude —
|
|
12
|
+
* hooks stay the boundary signal, the agent's own on-disk log supplies the
|
|
13
|
+
* body, and nothing parses terminal output.
|
|
14
|
+
*
|
|
15
|
+
* Self-contained and read-only on purpose (mirrors
|
|
16
|
+
* session-transcript-timeline.ts): never throws, returns '' when nothing
|
|
17
|
+
* is found. Locating scans recent `~/.codex/sessions/<y>/<m>/<d>/` dirs
|
|
18
|
+
* newest-first for `rollout-*-<sessionId>.jsonl` — the filename embeds the
|
|
19
|
+
* session uuid, and scanning across day dirs (bounded) covers turns that
|
|
20
|
+
* roll past midnight (memory: cross-day rollout selection).
|
|
21
|
+
*/
|
|
22
|
+
/** Locate `rollout-*-<sessionId>.jsonl` under the newest day dirs. */
|
|
23
|
+
export declare function locateCodexRollout(sessionId: string, sessionsRoot?: string): string | null;
|
|
24
|
+
/**
|
|
25
|
+
* Parse the rollout tail for the turn's final response, newest record
|
|
26
|
+
* first. `task_complete.last_agent_message` wins (authoritative turn
|
|
27
|
+
* close); otherwise the last `agent_message` body — Codex emits
|
|
28
|
+
* mid-turn `commentary` messages too, and the final one is the reply.
|
|
29
|
+
*/
|
|
30
|
+
export declare function lastAgentMessageFromCodexRollout(sessionId: string, sessionsRoot?: string): string;
|
|
31
|
+
//# sourceMappingURL=codex-rollout-response.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-rollout-response.d.ts","sourceRoot":"","sources":["../src/codex-rollout-response.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AA0BH,sEAAsE;AACtE,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAmB1F;AAuBD;;;;;GAKG;AACH,wBAAgB,gCAAgC,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAiCjG"}
|