aicodeman 0.2.9 → 0.3.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/README.md +118 -4
- package/dist/ai-idle-checker.d.ts.map +1 -1
- package/dist/ai-idle-checker.js +3 -2
- package/dist/ai-idle-checker.js.map +1 -1
- package/dist/ai-plan-checker.d.ts.map +1 -1
- package/dist/ai-plan-checker.js +3 -2
- package/dist/ai-plan-checker.js.map +1 -1
- package/dist/bash-tool-parser.d.ts +2 -3
- package/dist/bash-tool-parser.d.ts.map +1 -1
- package/dist/bash-tool-parser.js +14 -31
- package/dist/bash-tool-parser.js.map +1 -1
- package/dist/config/ai-defaults.d.ts +16 -0
- package/dist/config/ai-defaults.d.ts.map +1 -0
- package/dist/config/ai-defaults.js +16 -0
- package/dist/config/ai-defaults.js.map +1 -0
- package/dist/config/auth-config.d.ts +19 -0
- package/dist/config/auth-config.d.ts.map +1 -0
- package/dist/config/auth-config.js +28 -0
- package/dist/config/auth-config.js.map +1 -0
- package/dist/config/exec-timeout.d.ts +10 -0
- package/dist/config/exec-timeout.d.ts.map +1 -0
- package/dist/config/exec-timeout.js +10 -0
- package/dist/config/exec-timeout.js.map +1 -0
- package/dist/config/map-limits.d.ts +4 -0
- package/dist/config/map-limits.d.ts.map +1 -1
- package/dist/config/map-limits.js +7 -0
- package/dist/config/map-limits.js.map +1 -1
- package/dist/config/server-timing.d.ts +42 -0
- package/dist/config/server-timing.d.ts.map +1 -0
- package/dist/config/server-timing.js +57 -0
- package/dist/config/server-timing.js.map +1 -0
- package/dist/config/team-config.d.ts +16 -0
- package/dist/config/team-config.d.ts.map +1 -0
- package/dist/config/team-config.js +16 -0
- package/dist/config/team-config.js.map +1 -0
- package/dist/config/terminal-limits.d.ts +18 -0
- package/dist/config/terminal-limits.d.ts.map +1 -0
- package/dist/config/terminal-limits.js +18 -0
- package/dist/config/terminal-limits.js.map +1 -0
- package/dist/config/tunnel-config.d.ts +27 -0
- package/dist/config/tunnel-config.d.ts.map +1 -0
- package/dist/config/tunnel-config.js +36 -0
- package/dist/config/tunnel-config.js.map +1 -0
- package/dist/hooks-config.d.ts +21 -6
- package/dist/hooks-config.d.ts.map +1 -1
- package/dist/hooks-config.js +28 -12
- package/dist/hooks-config.js.map +1 -1
- package/dist/image-watcher.d.ts +4 -4
- package/dist/image-watcher.d.ts.map +1 -1
- package/dist/image-watcher.js +17 -30
- package/dist/image-watcher.js.map +1 -1
- package/dist/index.js +1 -2
- package/dist/index.js.map +1 -1
- package/dist/plan-orchestrator.d.ts +2 -24
- package/dist/plan-orchestrator.d.ts.map +1 -1
- package/dist/plan-orchestrator.js.map +1 -1
- package/dist/prompts/planner.d.ts +7 -8
- package/dist/prompts/planner.d.ts.map +1 -1
- package/dist/prompts/planner.js +7 -8
- package/dist/prompts/planner.js.map +1 -1
- package/dist/prompts/research-agent.d.ts +6 -4
- package/dist/prompts/research-agent.d.ts.map +1 -1
- package/dist/prompts/research-agent.js +6 -4
- package/dist/prompts/research-agent.js.map +1 -1
- package/dist/push-store.d.ts +1 -1
- package/dist/push-store.d.ts.map +1 -1
- package/dist/push-store.js +4 -12
- package/dist/push-store.js.map +1 -1
- package/dist/ralph-fix-plan-watcher.d.ts +91 -0
- package/dist/ralph-fix-plan-watcher.d.ts.map +1 -0
- package/dist/ralph-fix-plan-watcher.js +326 -0
- package/dist/ralph-fix-plan-watcher.js.map +1 -0
- package/dist/ralph-loop.d.ts +14 -4
- package/dist/ralph-loop.d.ts.map +1 -1
- package/dist/ralph-loop.js +14 -4
- package/dist/ralph-loop.js.map +1 -1
- package/dist/ralph-plan-tracker.d.ts +201 -0
- package/dist/ralph-plan-tracker.d.ts.map +1 -0
- package/dist/ralph-plan-tracker.js +325 -0
- package/dist/ralph-plan-tracker.js.map +1 -0
- package/dist/ralph-stall-detector.d.ts +84 -0
- package/dist/ralph-stall-detector.d.ts.map +1 -0
- package/dist/ralph-stall-detector.js +139 -0
- package/dist/ralph-stall-detector.js.map +1 -0
- package/dist/ralph-status-parser.d.ts +141 -0
- package/dist/ralph-status-parser.d.ts.map +1 -0
- package/dist/ralph-status-parser.js +478 -0
- package/dist/ralph-status-parser.js.map +1 -0
- package/dist/ralph-tracker.d.ts +218 -692
- package/dist/ralph-tracker.d.ts.map +1 -1
- package/dist/ralph-tracker.js +389 -1723
- package/dist/ralph-tracker.js.map +1 -1
- package/dist/respawn-adaptive-timing.d.ts +61 -0
- package/dist/respawn-adaptive-timing.d.ts.map +1 -0
- package/dist/respawn-adaptive-timing.js +105 -0
- package/dist/respawn-adaptive-timing.js.map +1 -0
- package/dist/respawn-controller.d.ts +35 -115
- package/dist/respawn-controller.d.ts.map +1 -1
- package/dist/respawn-controller.js +167 -607
- package/dist/respawn-controller.js.map +1 -1
- package/dist/respawn-health.d.ts +54 -0
- package/dist/respawn-health.d.ts.map +1 -0
- package/dist/respawn-health.js +183 -0
- package/dist/respawn-health.js.map +1 -0
- package/dist/respawn-metrics.d.ts +81 -0
- package/dist/respawn-metrics.d.ts.map +1 -0
- package/dist/respawn-metrics.js +198 -0
- package/dist/respawn-metrics.js.map +1 -0
- package/dist/respawn-patterns.d.ts +45 -0
- package/dist/respawn-patterns.d.ts.map +1 -0
- package/dist/respawn-patterns.js +125 -0
- package/dist/respawn-patterns.js.map +1 -0
- package/dist/session-auto-ops.d.ts +89 -0
- package/dist/session-auto-ops.d.ts.map +1 -0
- package/dist/session-auto-ops.js +224 -0
- package/dist/session-auto-ops.js.map +1 -0
- package/dist/session-cli-builder.d.ts +62 -0
- package/dist/session-cli-builder.d.ts.map +1 -0
- package/dist/session-cli-builder.js +121 -0
- package/dist/session-cli-builder.js.map +1 -0
- package/dist/session-manager.d.ts +17 -5
- package/dist/session-manager.d.ts.map +1 -1
- package/dist/session-manager.js +17 -5
- package/dist/session-manager.js.map +1 -1
- package/dist/session-task-cache.d.ts +52 -0
- package/dist/session-task-cache.d.ts.map +1 -0
- package/dist/session-task-cache.js +90 -0
- package/dist/session-task-cache.js.map +1 -0
- package/dist/session.d.ts +23 -41
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +79 -317
- package/dist/session.js.map +1 -1
- package/dist/state-store.d.ts +19 -9
- package/dist/state-store.d.ts.map +1 -1
- package/dist/state-store.js +29 -30
- package/dist/state-store.js.map +1 -1
- package/dist/subagent-watcher.d.ts +26 -7
- package/dist/subagent-watcher.d.ts.map +1 -1
- package/dist/subagent-watcher.js +47 -64
- package/dist/subagent-watcher.js.map +1 -1
- package/dist/team-watcher.d.ts.map +1 -1
- package/dist/team-watcher.js +2 -5
- package/dist/team-watcher.js.map +1 -1
- package/dist/tmux-manager.d.ts.map +1 -1
- package/dist/tmux-manager.js +1 -2
- package/dist/tmux-manager.js.map +1 -1
- package/dist/tunnel-manager.d.ts +26 -0
- package/dist/tunnel-manager.d.ts.map +1 -1
- package/dist/tunnel-manager.js +126 -7
- package/dist/tunnel-manager.js.map +1 -1
- package/dist/types/api.d.ts +108 -0
- package/dist/types/api.d.ts.map +1 -0
- package/dist/types/api.js +98 -0
- package/dist/types/api.js.map +1 -0
- package/dist/types/app-state.d.ts +117 -0
- package/dist/types/app-state.d.ts.map +1 -0
- package/dist/types/app-state.js +76 -0
- package/dist/types/app-state.js.map +1 -0
- package/dist/types/common.d.ts +79 -0
- package/dist/types/common.d.ts.map +1 -0
- package/dist/types/common.js +17 -0
- package/dist/types/common.js.map +1 -0
- package/dist/types/index.d.ts +66 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +66 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/lifecycle.d.ts +28 -0
- package/dist/types/lifecycle.d.ts.map +1 -0
- package/dist/types/lifecycle.js +16 -0
- package/dist/types/lifecycle.js.map +1 -0
- package/dist/types/plan.d.ts +45 -0
- package/dist/types/plan.d.ts.map +1 -0
- package/dist/types/plan.js +18 -0
- package/dist/types/plan.js.map +1 -0
- package/dist/types/push.d.ts +36 -0
- package/dist/types/push.d.ts.map +1 -0
- package/dist/types/push.js +18 -0
- package/dist/types/push.js.map +1 -0
- package/dist/types/ralph.d.ts +262 -0
- package/dist/types/ralph.d.ts.map +1 -0
- package/dist/types/ralph.js +70 -0
- package/dist/types/ralph.js.map +1 -0
- package/dist/types/respawn.d.ts +271 -0
- package/dist/types/respawn.d.ts.map +1 -0
- package/dist/types/respawn.js +26 -0
- package/dist/types/respawn.js.map +1 -0
- package/dist/types/run-summary.d.ts +96 -0
- package/dist/types/run-summary.d.ts.map +1 -0
- package/dist/types/run-summary.js +37 -0
- package/dist/types/run-summary.js.map +1 -0
- package/dist/types/session.d.ts +152 -0
- package/dist/types/session.d.ts.map +1 -0
- package/dist/types/session.js +27 -0
- package/dist/types/session.js.map +1 -0
- package/dist/types/task.d.ts +72 -0
- package/dist/types/task.d.ts.map +1 -0
- package/dist/types/task.js +19 -0
- package/dist/types/task.js.map +1 -0
- package/dist/types/teams.d.ts +73 -0
- package/dist/types/teams.d.ts.map +1 -0
- package/dist/types/teams.js +23 -0
- package/dist/types/teams.js.map +1 -0
- package/dist/types/tools.d.ts +61 -0
- package/dist/types/tools.d.ts.map +1 -0
- package/dist/types/tools.js +20 -0
- package/dist/types/tools.js.map +1 -0
- package/dist/types.d.ts +8 -1134
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +8 -210
- package/dist/types.js.map +1 -1
- package/dist/utils/claude-cli-resolver.d.ts.map +1 -1
- package/dist/utils/claude-cli-resolver.js +1 -2
- package/dist/utils/claude-cli-resolver.js.map +1 -1
- package/dist/utils/debouncer.d.ts +111 -0
- package/dist/utils/debouncer.d.ts.map +1 -0
- package/dist/utils/debouncer.js +162 -0
- package/dist/utils/debouncer.js.map +1 -0
- package/dist/utils/index.d.ts +3 -2
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +3 -2
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/opencode-cli-resolver.d.ts.map +1 -1
- package/dist/utils/opencode-cli-resolver.js +1 -2
- package/dist/utils/opencode-cli-resolver.js.map +1 -1
- package/dist/utils/string-similarity.d.ts +0 -57
- package/dist/utils/string-similarity.d.ts.map +1 -1
- package/dist/utils/string-similarity.js +3 -18
- package/dist/utils/string-similarity.js.map +1 -1
- package/dist/web/middleware/auth.d.ts +31 -0
- package/dist/web/middleware/auth.d.ts.map +1 -0
- package/dist/web/middleware/auth.js +154 -0
- package/dist/web/middleware/auth.js.map +1 -0
- package/dist/web/ports/auth-port.d.ts +18 -0
- package/dist/web/ports/auth-port.d.ts.map +1 -0
- package/dist/web/ports/auth-port.js +6 -0
- package/dist/web/ports/auth-port.js.map +1 -0
- package/dist/web/ports/config-port.d.ts +28 -0
- package/dist/web/ports/config-port.d.ts.map +1 -0
- package/dist/web/ports/config-port.js +6 -0
- package/dist/web/ports/config-port.js.map +1 -0
- package/dist/web/ports/event-port.d.ts +13 -0
- package/dist/web/ports/event-port.d.ts.map +1 -0
- package/dist/web/ports/event-port.js +6 -0
- package/dist/web/ports/event-port.js.map +1 -0
- package/dist/web/ports/index.d.ts +14 -0
- package/dist/web/ports/index.d.ts.map +1 -0
- package/dist/web/ports/index.js +9 -0
- package/dist/web/ports/index.js.map +1 -0
- package/dist/web/ports/infra-port.d.ts +36 -0
- package/dist/web/ports/infra-port.d.ts.map +1 -0
- package/dist/web/ports/infra-port.js +6 -0
- package/dist/web/ports/infra-port.js.map +1 -0
- package/dist/web/ports/respawn-port.d.ts +20 -0
- package/dist/web/ports/respawn-port.d.ts.map +1 -0
- package/dist/web/ports/respawn-port.js +6 -0
- package/dist/web/ports/respawn-port.js.map +1 -0
- package/dist/web/ports/session-port.d.ts +15 -0
- package/dist/web/ports/session-port.d.ts.map +1 -0
- package/dist/web/ports/session-port.js +6 -0
- package/dist/web/ports/session-port.js.map +1 -0
- package/dist/web/public/api-client.js +82 -0
- package/dist/web/public/api-client.js.br +0 -0
- package/dist/web/public/api-client.js.gz +0 -0
- package/dist/web/public/app.js +117 -201
- package/dist/web/public/app.js.br +0 -0
- package/dist/web/public/app.js.gz +0 -0
- package/dist/web/public/constants.js +365 -0
- package/dist/web/public/constants.js.br +0 -0
- package/dist/web/public/constants.js.gz +0 -0
- package/dist/web/public/index.html +15 -3
- package/dist/web/public/index.html.br +0 -0
- package/dist/web/public/index.html.gz +0 -0
- package/dist/web/public/keyboard-accessory.js +302 -0
- package/dist/web/public/keyboard-accessory.js.br +0 -0
- package/dist/web/public/keyboard-accessory.js.gz +0 -0
- package/dist/web/public/mobile-handlers.js +491 -0
- package/dist/web/public/mobile-handlers.js.br +0 -0
- package/dist/web/public/mobile-handlers.js.gz +0 -0
- package/dist/web/public/mobile.css.gz +0 -0
- package/dist/web/public/notification-manager.js +472 -0
- package/dist/web/public/notification-manager.js.br +0 -0
- package/dist/web/public/notification-manager.js.gz +0 -0
- package/dist/web/public/ralph-wizard.js +33 -9
- package/dist/web/public/ralph-wizard.js.br +0 -0
- package/dist/web/public/ralph-wizard.js.gz +0 -0
- package/dist/web/public/styles.css.gz +0 -0
- package/dist/web/public/subagent-windows.js +1149 -0
- package/dist/web/public/subagent-windows.js.br +0 -0
- package/dist/web/public/subagent-windows.js.gz +0 -0
- package/dist/web/public/sw.js +15 -0
- package/dist/web/public/sw.js.br +0 -0
- package/dist/web/public/sw.js.gz +0 -0
- package/dist/web/public/upload.html.gz +0 -0
- package/dist/web/public/vendor/xterm-addon-fit.min.js.gz +0 -0
- package/dist/web/public/vendor/xterm-addon-unicode11.min.js.gz +0 -0
- package/dist/web/public/vendor/xterm-addon-webgl.min.js.gz +0 -0
- package/dist/web/public/vendor/xterm-zerolag-input.js +4 -0
- package/dist/web/public/vendor/xterm-zerolag-input.js.br +0 -0
- package/dist/web/public/vendor/xterm-zerolag-input.js.gz +0 -0
- package/dist/web/public/vendor/xterm.css.gz +0 -0
- package/dist/web/public/vendor/xterm.min.js.gz +0 -0
- package/dist/web/public/voice-input.js +882 -0
- package/dist/web/public/voice-input.js.br +0 -0
- package/dist/web/public/voice-input.js.gz +0 -0
- package/dist/web/route-helpers.d.ts +38 -0
- package/dist/web/route-helpers.d.ts.map +1 -0
- package/dist/web/route-helpers.js +144 -0
- package/dist/web/route-helpers.js.map +1 -0
- package/dist/web/routes/case-routes.d.ts +9 -0
- package/dist/web/routes/case-routes.d.ts.map +1 -0
- package/dist/web/routes/case-routes.js +426 -0
- package/dist/web/routes/case-routes.js.map +1 -0
- package/dist/web/routes/file-routes.d.ts +8 -0
- package/dist/web/routes/file-routes.d.ts.map +1 -0
- package/dist/web/routes/file-routes.js +337 -0
- package/dist/web/routes/file-routes.js.map +1 -0
- package/dist/web/routes/hook-event-routes.d.ts +9 -0
- package/dist/web/routes/hook-event-routes.d.ts.map +1 -0
- package/dist/web/routes/hook-event-routes.js +57 -0
- package/dist/web/routes/hook-event-routes.js.map +1 -0
- package/dist/web/routes/index.d.ts +16 -0
- package/dist/web/routes/index.d.ts.map +1 -0
- package/dist/web/routes/index.js +16 -0
- package/dist/web/routes/index.js.map +1 -0
- package/dist/web/routes/mux-routes.d.ts +8 -0
- package/dist/web/routes/mux-routes.d.ts.map +1 -0
- package/dist/web/routes/mux-routes.js +32 -0
- package/dist/web/routes/mux-routes.js.map +1 -0
- package/dist/web/routes/plan-routes.d.ts +9 -0
- package/dist/web/routes/plan-routes.d.ts.map +1 -0
- package/dist/web/routes/plan-routes.js +385 -0
- package/dist/web/routes/plan-routes.js.map +1 -0
- package/dist/web/routes/push-routes.d.ts +8 -0
- package/dist/web/routes/push-routes.d.ts.map +1 -0
- package/dist/web/routes/push-routes.js +49 -0
- package/dist/web/routes/push-routes.js.map +1 -0
- package/dist/web/routes/ralph-routes.d.ts +9 -0
- package/dist/web/routes/ralph-routes.d.ts.map +1 -0
- package/dist/web/routes/ralph-routes.js +485 -0
- package/dist/web/routes/ralph-routes.js.map +1 -0
- package/dist/web/routes/respawn-routes.d.ts +8 -0
- package/dist/web/routes/respawn-routes.d.ts.map +1 -0
- package/dist/web/routes/respawn-routes.js +270 -0
- package/dist/web/routes/respawn-routes.js.map +1 -0
- package/dist/web/routes/scheduled-routes.d.ts +8 -0
- package/dist/web/routes/scheduled-routes.d.ts.map +1 -0
- package/dist/web/routes/scheduled-routes.js +51 -0
- package/dist/web/routes/scheduled-routes.js.map +1 -0
- package/dist/web/routes/session-routes.d.ts +9 -0
- package/dist/web/routes/session-routes.d.ts.map +1 -0
- package/dist/web/routes/session-routes.js +751 -0
- package/dist/web/routes/session-routes.js.map +1 -0
- package/dist/web/routes/system-routes.d.ts +9 -0
- package/dist/web/routes/system-routes.d.ts.map +1 -0
- package/dist/web/routes/system-routes.js +699 -0
- package/dist/web/routes/system-routes.js.map +1 -0
- package/dist/web/routes/team-routes.d.ts +8 -0
- package/dist/web/routes/team-routes.d.ts.map +1 -0
- package/dist/web/routes/team-routes.js +14 -0
- package/dist/web/routes/team-routes.js.map +1 -0
- package/dist/web/schemas.d.ts +43 -3
- package/dist/web/schemas.d.ts.map +1 -1
- package/dist/web/schemas.js +6 -2
- package/dist/web/schemas.js.map +1 -1
- package/dist/web/server.d.ts +35 -15
- package/dist/web/server.d.ts.map +1 -1
- package/dist/web/server.js +563 -3971
- package/dist/web/server.js.map +1 -1
- package/dist/web/sse-events.d.ts +361 -0
- package/dist/web/sse-events.d.ts.map +1 -0
- package/dist/web/sse-events.js +396 -0
- package/dist/web/sse-events.js.map +1 -0
- package/package.json +2 -1
- package/scripts/postinstall.js +58 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Web server performance and scheduling constants.
|
|
3
|
+
*
|
|
4
|
+
* Controls terminal batching throughput, SSE health checking,
|
|
5
|
+
* state persistence debouncing, and scheduled run timing.
|
|
6
|
+
*
|
|
7
|
+
* @module config/server-timing
|
|
8
|
+
*/
|
|
9
|
+
/** Terminal data batching interval — targets 60fps (ms) */
|
|
10
|
+
export declare const TERMINAL_BATCH_INTERVAL = 16;
|
|
11
|
+
/** Immediate flush threshold for terminal batches (bytes).
|
|
12
|
+
* Set high (32KB) to allow effective batching; avg Ink events are ~14KB. */
|
|
13
|
+
export declare const BATCH_FLUSH_THRESHOLD: number;
|
|
14
|
+
/** Task event batching interval (ms) */
|
|
15
|
+
export declare const TASK_UPDATE_BATCH_INTERVAL = 100;
|
|
16
|
+
/** SSE heartbeat interval — sends padded keepalive to flush proxy buffers (ms).
|
|
17
|
+
* 15s is fast enough to keep Cloudflare tunnel buffers flushed while avoiding
|
|
18
|
+
* excessive bandwidth. Also serves as dead-client detection. */
|
|
19
|
+
export declare const SSE_HEARTBEAT_INTERVAL: number;
|
|
20
|
+
/** SSE padding size (bytes). Cloudflare quick tunnels buffer small SSE events;
|
|
21
|
+
* appending ~8KB of SSE comment padding forces the proxy to flush immediately.
|
|
22
|
+
* SSE comments (lines starting with ':') are silently ignored by EventSource. */
|
|
23
|
+
export declare const SSE_PADDING_SIZE: number;
|
|
24
|
+
/** State update debounce — batches expensive toDetailedState() calls (ms) */
|
|
25
|
+
export declare const STATE_UPDATE_DEBOUNCE_INTERVAL = 500;
|
|
26
|
+
/** Sessions list cache TTL — avoids re-serializing on every SSE init (ms) */
|
|
27
|
+
export declare const SESSIONS_LIST_CACHE_TTL = 1000;
|
|
28
|
+
/** Scheduled runs cleanup check interval (ms) */
|
|
29
|
+
export declare const SCHEDULED_CLEANUP_INTERVAL: number;
|
|
30
|
+
/** Completed scheduled run max age before cleanup (ms) */
|
|
31
|
+
export declare const SCHEDULED_RUN_MAX_AGE: number;
|
|
32
|
+
/** Session limit retry wait before retrying (ms) */
|
|
33
|
+
export declare const SESSION_LIMIT_WAIT_MS = 5000;
|
|
34
|
+
/** Pause between scheduled run iterations (ms) */
|
|
35
|
+
export declare const ITERATION_PAUSE_MS = 2000;
|
|
36
|
+
/** Mux stats collection interval (ms) */
|
|
37
|
+
export declare const STATS_COLLECTION_INTERVAL_MS = 2000;
|
|
38
|
+
/** Max consecutive unhandled errors before auto-restart */
|
|
39
|
+
export declare const MAX_CONSECUTIVE_ERRORS = 5;
|
|
40
|
+
/** Error counter reset interval — forgives errors after quiet period (ms) */
|
|
41
|
+
export declare const ERROR_RESET_MS = 60000;
|
|
42
|
+
//# sourceMappingURL=server-timing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-timing.d.ts","sourceRoot":"","sources":["../../src/config/server-timing.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,2DAA2D;AAC3D,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAE1C;4EAC4E;AAC5E,eAAO,MAAM,qBAAqB,QAAY,CAAC;AAE/C,wCAAwC;AACxC,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAE9C;;gEAEgE;AAChE,eAAO,MAAM,sBAAsB,QAAY,CAAC;AAEhD;;iFAEiF;AACjF,eAAO,MAAM,gBAAgB,QAAW,CAAC;AAMzC,6EAA6E;AAC7E,eAAO,MAAM,8BAA8B,MAAM,CAAC;AAElD,6EAA6E;AAC7E,eAAO,MAAM,uBAAuB,OAAO,CAAC;AAM5C,iDAAiD;AACjD,eAAO,MAAM,0BAA0B,QAAgB,CAAC;AAExD,0DAA0D;AAC1D,eAAO,MAAM,qBAAqB,QAAiB,CAAC;AAEpD,oDAAoD;AACpD,eAAO,MAAM,qBAAqB,OAAO,CAAC;AAE1C,kDAAkD;AAClD,eAAO,MAAM,kBAAkB,OAAO,CAAC;AAMvC,yCAAyC;AACzC,eAAO,MAAM,4BAA4B,OAAO,CAAC;AAMjD,2DAA2D;AAC3D,eAAO,MAAM,sBAAsB,IAAI,CAAC;AAExC,6EAA6E;AAC7E,eAAO,MAAM,cAAc,QAAS,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Web server performance and scheduling constants.
|
|
3
|
+
*
|
|
4
|
+
* Controls terminal batching throughput, SSE health checking,
|
|
5
|
+
* state persistence debouncing, and scheduled run timing.
|
|
6
|
+
*
|
|
7
|
+
* @module config/server-timing
|
|
8
|
+
*/
|
|
9
|
+
// ============================================================================
|
|
10
|
+
// Terminal & SSE Performance
|
|
11
|
+
// ============================================================================
|
|
12
|
+
/** Terminal data batching interval — targets 60fps (ms) */
|
|
13
|
+
export const TERMINAL_BATCH_INTERVAL = 16;
|
|
14
|
+
/** Immediate flush threshold for terminal batches (bytes).
|
|
15
|
+
* Set high (32KB) to allow effective batching; avg Ink events are ~14KB. */
|
|
16
|
+
export const BATCH_FLUSH_THRESHOLD = 32 * 1024;
|
|
17
|
+
/** Task event batching interval (ms) */
|
|
18
|
+
export const TASK_UPDATE_BATCH_INTERVAL = 100;
|
|
19
|
+
/** SSE heartbeat interval — sends padded keepalive to flush proxy buffers (ms).
|
|
20
|
+
* 15s is fast enough to keep Cloudflare tunnel buffers flushed while avoiding
|
|
21
|
+
* excessive bandwidth. Also serves as dead-client detection. */
|
|
22
|
+
export const SSE_HEARTBEAT_INTERVAL = 15 * 1000;
|
|
23
|
+
/** SSE padding size (bytes). Cloudflare quick tunnels buffer small SSE events;
|
|
24
|
+
* appending ~8KB of SSE comment padding forces the proxy to flush immediately.
|
|
25
|
+
* SSE comments (lines starting with ':') are silently ignored by EventSource. */
|
|
26
|
+
export const SSE_PADDING_SIZE = 8 * 1024;
|
|
27
|
+
// ============================================================================
|
|
28
|
+
// State Persistence
|
|
29
|
+
// ============================================================================
|
|
30
|
+
/** State update debounce — batches expensive toDetailedState() calls (ms) */
|
|
31
|
+
export const STATE_UPDATE_DEBOUNCE_INTERVAL = 500;
|
|
32
|
+
/** Sessions list cache TTL — avoids re-serializing on every SSE init (ms) */
|
|
33
|
+
export const SESSIONS_LIST_CACHE_TTL = 1000;
|
|
34
|
+
// ============================================================================
|
|
35
|
+
// Scheduled Runs
|
|
36
|
+
// ============================================================================
|
|
37
|
+
/** Scheduled runs cleanup check interval (ms) */
|
|
38
|
+
export const SCHEDULED_CLEANUP_INTERVAL = 5 * 60 * 1000;
|
|
39
|
+
/** Completed scheduled run max age before cleanup (ms) */
|
|
40
|
+
export const SCHEDULED_RUN_MAX_AGE = 60 * 60 * 1000;
|
|
41
|
+
/** Session limit retry wait before retrying (ms) */
|
|
42
|
+
export const SESSION_LIMIT_WAIT_MS = 5000;
|
|
43
|
+
/** Pause between scheduled run iterations (ms) */
|
|
44
|
+
export const ITERATION_PAUSE_MS = 2000;
|
|
45
|
+
// ============================================================================
|
|
46
|
+
// Mux Stats
|
|
47
|
+
// ============================================================================
|
|
48
|
+
/** Mux stats collection interval (ms) */
|
|
49
|
+
export const STATS_COLLECTION_INTERVAL_MS = 2000;
|
|
50
|
+
// ============================================================================
|
|
51
|
+
// Process Error Recovery
|
|
52
|
+
// ============================================================================
|
|
53
|
+
/** Max consecutive unhandled errors before auto-restart */
|
|
54
|
+
export const MAX_CONSECUTIVE_ERRORS = 5;
|
|
55
|
+
/** Error counter reset interval — forgives errors after quiet period (ms) */
|
|
56
|
+
export const ERROR_RESET_MS = 60_000;
|
|
57
|
+
//# sourceMappingURL=server-timing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-timing.js","sourceRoot":"","sources":["../../src/config/server-timing.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,+EAA+E;AAC/E,6BAA6B;AAC7B,+EAA+E;AAE/E,2DAA2D;AAC3D,MAAM,CAAC,MAAM,uBAAuB,GAAG,EAAE,CAAC;AAE1C;4EAC4E;AAC5E,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,GAAG,IAAI,CAAC;AAE/C,wCAAwC;AACxC,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,CAAC;AAE9C;;gEAEgE;AAChE,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,GAAG,IAAI,CAAC;AAEhD;;iFAEiF;AACjF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,GAAG,IAAI,CAAC;AAEzC,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E,6EAA6E;AAC7E,MAAM,CAAC,MAAM,8BAA8B,GAAG,GAAG,CAAC;AAElD,6EAA6E;AAC7E,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,CAAC;AAE5C,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAE/E,iDAAiD;AACjD,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAExD,0DAA0D;AAC1D,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAEpD,oDAAoD;AACpD,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAE1C,kDAAkD;AAClD,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAEvC,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E,yCAAyC;AACzC,MAAM,CAAC,MAAM,4BAA4B,GAAG,IAAI,CAAC;AAEjD,+EAA+E;AAC/E,yBAAyB;AACzB,+EAA+E;AAE/E,2DAA2D;AAC3D,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC;AAExC,6EAA6E;AAC7E,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Agent Teams polling and cache configuration.
|
|
3
|
+
*
|
|
4
|
+
* Controls how frequently TeamWatcher polls ~/.claude/teams/
|
|
5
|
+
* and how many teams/tasks are cached in memory.
|
|
6
|
+
*
|
|
7
|
+
* @module config/team-config
|
|
8
|
+
*/
|
|
9
|
+
/** Team directory poll interval (ms) */
|
|
10
|
+
export declare const TEAM_POLL_INTERVAL_MS = 30000;
|
|
11
|
+
/** Max cached team configs (LRU eviction) */
|
|
12
|
+
export declare const MAX_CACHED_TEAMS = 50;
|
|
13
|
+
/** Max cached team tasks and inbox messages (LRU eviction).
|
|
14
|
+
* Used for both teamTasks and inboxCache maps. */
|
|
15
|
+
export declare const MAX_CACHED_TASKS = 200;
|
|
16
|
+
//# sourceMappingURL=team-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"team-config.d.ts","sourceRoot":"","sources":["../../src/config/team-config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,wCAAwC;AACxC,eAAO,MAAM,qBAAqB,QAAS,CAAC;AAE5C,6CAA6C;AAC7C,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAEnC;kDACkD;AAClD,eAAO,MAAM,gBAAgB,MAAM,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Agent Teams polling and cache configuration.
|
|
3
|
+
*
|
|
4
|
+
* Controls how frequently TeamWatcher polls ~/.claude/teams/
|
|
5
|
+
* and how many teams/tasks are cached in memory.
|
|
6
|
+
*
|
|
7
|
+
* @module config/team-config
|
|
8
|
+
*/
|
|
9
|
+
/** Team directory poll interval (ms) */
|
|
10
|
+
export const TEAM_POLL_INTERVAL_MS = 30_000;
|
|
11
|
+
/** Max cached team configs (LRU eviction) */
|
|
12
|
+
export const MAX_CACHED_TEAMS = 50;
|
|
13
|
+
/** Max cached team tasks and inbox messages (LRU eviction).
|
|
14
|
+
* Used for both teamTasks and inboxCache maps. */
|
|
15
|
+
export const MAX_CACHED_TASKS = 200;
|
|
16
|
+
//# sourceMappingURL=team-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"team-config.js","sourceRoot":"","sources":["../../src/config/team-config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,wCAAwC;AACxC,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC;AAE5C,6CAA6C;AAC7C,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAEnC;kDACkD;AAClD,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Terminal dimension and input validation limits.
|
|
3
|
+
*
|
|
4
|
+
* Used by API routes to validate resize, input, and session
|
|
5
|
+
* creation requests. Separate from buffer-limits.ts which
|
|
6
|
+
* controls memory buffer sizes.
|
|
7
|
+
*
|
|
8
|
+
* @module config/terminal-limits
|
|
9
|
+
*/
|
|
10
|
+
/** Max input length per API request (bytes) */
|
|
11
|
+
export declare const MAX_INPUT_LENGTH: number;
|
|
12
|
+
/** Max terminal columns for resize requests */
|
|
13
|
+
export declare const MAX_TERMINAL_COLS = 500;
|
|
14
|
+
/** Max terminal rows for resize requests */
|
|
15
|
+
export declare const MAX_TERMINAL_ROWS = 200;
|
|
16
|
+
/** Max session name length (chars) */
|
|
17
|
+
export declare const MAX_SESSION_NAME_LENGTH = 128;
|
|
18
|
+
//# sourceMappingURL=terminal-limits.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal-limits.d.ts","sourceRoot":"","sources":["../../src/config/terminal-limits.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,+CAA+C;AAC/C,eAAO,MAAM,gBAAgB,QAAY,CAAC;AAE1C,+CAA+C;AAC/C,eAAO,MAAM,iBAAiB,MAAM,CAAC;AAErC,4CAA4C;AAC5C,eAAO,MAAM,iBAAiB,MAAM,CAAC;AAErC,sCAAsC;AACtC,eAAO,MAAM,uBAAuB,MAAM,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Terminal dimension and input validation limits.
|
|
3
|
+
*
|
|
4
|
+
* Used by API routes to validate resize, input, and session
|
|
5
|
+
* creation requests. Separate from buffer-limits.ts which
|
|
6
|
+
* controls memory buffer sizes.
|
|
7
|
+
*
|
|
8
|
+
* @module config/terminal-limits
|
|
9
|
+
*/
|
|
10
|
+
/** Max input length per API request (bytes) */
|
|
11
|
+
export const MAX_INPUT_LENGTH = 64 * 1024;
|
|
12
|
+
/** Max terminal columns for resize requests */
|
|
13
|
+
export const MAX_TERMINAL_COLS = 500;
|
|
14
|
+
/** Max terminal rows for resize requests */
|
|
15
|
+
export const MAX_TERMINAL_ROWS = 200;
|
|
16
|
+
/** Max session name length (chars) */
|
|
17
|
+
export const MAX_SESSION_NAME_LENGTH = 128;
|
|
18
|
+
//# sourceMappingURL=terminal-limits.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal-limits.js","sourceRoot":"","sources":["../../src/config/terminal-limits.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,+CAA+C;AAC/C,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,GAAG,IAAI,CAAC;AAE1C,+CAA+C;AAC/C,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAErC,4CAA4C;AAC5C,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAErC,sCAAsC;AACtC,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Cloudflare tunnel and QR authentication constants.
|
|
3
|
+
*
|
|
4
|
+
* Controls QR token rotation timing, rate limiting,
|
|
5
|
+
* and tunnel process lifecycle.
|
|
6
|
+
*
|
|
7
|
+
* @module config/tunnel-config
|
|
8
|
+
*/
|
|
9
|
+
/** QR token auto-rotation interval (ms) */
|
|
10
|
+
export declare const QR_TOKEN_TTL_MS = 60000;
|
|
11
|
+
/** Grace period — previous token still valid during rotation (ms) */
|
|
12
|
+
export declare const QR_TOKEN_GRACE_MS = 90000;
|
|
13
|
+
/** Length of the short code in QR URL path (chars) */
|
|
14
|
+
export declare const SHORT_CODE_LENGTH = 6;
|
|
15
|
+
/** Global rate limit for QR auth attempts across all IPs */
|
|
16
|
+
export declare const QR_RATE_LIMIT_MAX = 30;
|
|
17
|
+
/** QR rate limit reset window (ms) */
|
|
18
|
+
export declare const QR_RATE_LIMIT_WINDOW_MS = 60000;
|
|
19
|
+
/** Per-IP rate limit for QR auth failures (separate from Basic Auth AUTH_FAILURE_MAX) */
|
|
20
|
+
export declare const QR_AUTH_FAILURE_MAX = 10;
|
|
21
|
+
/** Max time to wait for cloudflared URL before timeout (ms) */
|
|
22
|
+
export declare const URL_TIMEOUT_MS = 30000;
|
|
23
|
+
/** Restart delay after unexpected tunnel exit (ms) */
|
|
24
|
+
export declare const RESTART_DELAY_MS = 5000;
|
|
25
|
+
/** SIGTERM → SIGKILL escalation timeout (ms) */
|
|
26
|
+
export declare const FORCE_KILL_MS = 5000;
|
|
27
|
+
//# sourceMappingURL=tunnel-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tunnel-config.d.ts","sourceRoot":"","sources":["../../src/config/tunnel-config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,2CAA2C;AAC3C,eAAO,MAAM,eAAe,QAAS,CAAC;AAEtC,qEAAqE;AACrE,eAAO,MAAM,iBAAiB,QAAS,CAAC;AAExC,sDAAsD;AACtD,eAAO,MAAM,iBAAiB,IAAI,CAAC;AAMnC,4DAA4D;AAC5D,eAAO,MAAM,iBAAiB,KAAK,CAAC;AAEpC,sCAAsC;AACtC,eAAO,MAAM,uBAAuB,QAAS,CAAC;AAE9C,yFAAyF;AACzF,eAAO,MAAM,mBAAmB,KAAK,CAAC;AAMtC,+DAA+D;AAC/D,eAAO,MAAM,cAAc,QAAS,CAAC;AAErC,sDAAsD;AACtD,eAAO,MAAM,gBAAgB,OAAQ,CAAC;AAEtC,gDAAgD;AAChD,eAAO,MAAM,aAAa,OAAQ,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Cloudflare tunnel and QR authentication constants.
|
|
3
|
+
*
|
|
4
|
+
* Controls QR token rotation timing, rate limiting,
|
|
5
|
+
* and tunnel process lifecycle.
|
|
6
|
+
*
|
|
7
|
+
* @module config/tunnel-config
|
|
8
|
+
*/
|
|
9
|
+
// ============================================================================
|
|
10
|
+
// QR Token Rotation
|
|
11
|
+
// ============================================================================
|
|
12
|
+
/** QR token auto-rotation interval (ms) */
|
|
13
|
+
export const QR_TOKEN_TTL_MS = 60_000;
|
|
14
|
+
/** Grace period — previous token still valid during rotation (ms) */
|
|
15
|
+
export const QR_TOKEN_GRACE_MS = 90_000;
|
|
16
|
+
/** Length of the short code in QR URL path (chars) */
|
|
17
|
+
export const SHORT_CODE_LENGTH = 6;
|
|
18
|
+
// ============================================================================
|
|
19
|
+
// QR Rate Limiting
|
|
20
|
+
// ============================================================================
|
|
21
|
+
/** Global rate limit for QR auth attempts across all IPs */
|
|
22
|
+
export const QR_RATE_LIMIT_MAX = 30;
|
|
23
|
+
/** QR rate limit reset window (ms) */
|
|
24
|
+
export const QR_RATE_LIMIT_WINDOW_MS = 60_000;
|
|
25
|
+
/** Per-IP rate limit for QR auth failures (separate from Basic Auth AUTH_FAILURE_MAX) */
|
|
26
|
+
export const QR_AUTH_FAILURE_MAX = 10;
|
|
27
|
+
// ============================================================================
|
|
28
|
+
// Tunnel Process Lifecycle
|
|
29
|
+
// ============================================================================
|
|
30
|
+
/** Max time to wait for cloudflared URL before timeout (ms) */
|
|
31
|
+
export const URL_TIMEOUT_MS = 30_000;
|
|
32
|
+
/** Restart delay after unexpected tunnel exit (ms) */
|
|
33
|
+
export const RESTART_DELAY_MS = 5_000;
|
|
34
|
+
/** SIGTERM → SIGKILL escalation timeout (ms) */
|
|
35
|
+
export const FORCE_KILL_MS = 5_000;
|
|
36
|
+
//# sourceMappingURL=tunnel-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tunnel-config.js","sourceRoot":"","sources":["../../src/config/tunnel-config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E,2CAA2C;AAC3C,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC;AAEtC,qEAAqE;AACrE,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC;AAExC,sDAAsD;AACtD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAEnC,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E,4DAA4D;AAC5D,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAEpC,sCAAsC;AACtC,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC;AAE9C,yFAAyF;AACzF,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAEtC,+EAA+E;AAC/E,2BAA2B;AAC3B,+EAA+E;AAE/E,+DAA+D;AAC/D,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC;AAErC,sDAAsD;AACtD,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,CAAC;AAEtC,gDAAgD;AAChD,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,CAAC"}
|
package/dist/hooks-config.d.ts
CHANGED
|
@@ -1,11 +1,26 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @fileoverview Claude Code hooks configuration generator
|
|
2
|
+
* @fileoverview Claude Code hooks configuration generator.
|
|
3
3
|
*
|
|
4
|
-
* Generates
|
|
5
|
-
* to Codeman's
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
4
|
+
* Generates `.claude/settings.local.json` with hook definitions that POST
|
|
5
|
+
* to Codeman's `/api/hook-event` endpoint when Claude Code fires hooks.
|
|
6
|
+
* Uses `$CODEMAN_API_URL` and `$CODEMAN_SESSION_ID` env vars (set on every
|
|
7
|
+
* managed session) so the config is static per case directory.
|
|
8
|
+
*
|
|
9
|
+
* Key exports:
|
|
10
|
+
* - `generateHooksConfig()` — returns hooks object for settings.local.json
|
|
11
|
+
* - `writeHooksConfig(casePath)` — writes hooks + env config to disk
|
|
12
|
+
* - `updateCaseEnvVars(casePath, envVars)` — merges env vars into settings
|
|
13
|
+
*
|
|
14
|
+
* Hook events generated: `idle_prompt`, `permission_prompt`, `elicitation_dialog`,
|
|
15
|
+
* `stop`, `teammate_idle`, `task_completed`
|
|
16
|
+
*
|
|
17
|
+
* Hook categories: `Notification` (3 matchers), `Stop` (1), `TeammateIdle` (1),
|
|
18
|
+
* `TaskCompleted` (1)
|
|
19
|
+
*
|
|
20
|
+
* @dependencies types (HookEventType), config/auth-config (HOOK_TIMEOUT_MS)
|
|
21
|
+
* @consumedby web/server (session creation), session-cli-builder (env setup)
|
|
22
|
+
*
|
|
23
|
+
* @module hooks-config
|
|
9
24
|
*/
|
|
10
25
|
/**
|
|
11
26
|
* Generates the hooks section for .claude/settings.local.json
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks-config.d.ts","sourceRoot":"","sources":["../src/hooks-config.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"hooks-config.d.ts","sourceRoot":"","sources":["../src/hooks-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AASH;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,IAAI;IAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAA;CAAE,CA4C1E;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CA0BxG;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBtE"}
|
package/dist/hooks-config.js
CHANGED
|
@@ -1,15 +1,31 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @fileoverview Claude Code hooks configuration generator
|
|
2
|
+
* @fileoverview Claude Code hooks configuration generator.
|
|
3
3
|
*
|
|
4
|
-
* Generates
|
|
5
|
-
* to Codeman's
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
4
|
+
* Generates `.claude/settings.local.json` with hook definitions that POST
|
|
5
|
+
* to Codeman's `/api/hook-event` endpoint when Claude Code fires hooks.
|
|
6
|
+
* Uses `$CODEMAN_API_URL` and `$CODEMAN_SESSION_ID` env vars (set on every
|
|
7
|
+
* managed session) so the config is static per case directory.
|
|
8
|
+
*
|
|
9
|
+
* Key exports:
|
|
10
|
+
* - `generateHooksConfig()` — returns hooks object for settings.local.json
|
|
11
|
+
* - `writeHooksConfig(casePath)` — writes hooks + env config to disk
|
|
12
|
+
* - `updateCaseEnvVars(casePath, envVars)` — merges env vars into settings
|
|
13
|
+
*
|
|
14
|
+
* Hook events generated: `idle_prompt`, `permission_prompt`, `elicitation_dialog`,
|
|
15
|
+
* `stop`, `teammate_idle`, `task_completed`
|
|
16
|
+
*
|
|
17
|
+
* Hook categories: `Notification` (3 matchers), `Stop` (1), `TeammateIdle` (1),
|
|
18
|
+
* `TaskCompleted` (1)
|
|
19
|
+
*
|
|
20
|
+
* @dependencies types (HookEventType), config/auth-config (HOOK_TIMEOUT_MS)
|
|
21
|
+
* @consumedby web/server (session creation), session-cli-builder (env setup)
|
|
22
|
+
*
|
|
23
|
+
* @module hooks-config
|
|
9
24
|
*/
|
|
10
25
|
import { existsSync } from 'node:fs';
|
|
11
26
|
import { readFile, writeFile, mkdir } from 'node:fs/promises';
|
|
12
27
|
import { join } from 'node:path';
|
|
28
|
+
import { HOOK_TIMEOUT_MS } from './config/auth-config.js';
|
|
13
29
|
/**
|
|
14
30
|
* Generates the hooks section for .claude/settings.local.json
|
|
15
31
|
*
|
|
@@ -32,30 +48,30 @@ export function generateHooksConfig() {
|
|
|
32
48
|
Notification: [
|
|
33
49
|
{
|
|
34
50
|
matcher: 'idle_prompt',
|
|
35
|
-
hooks: [{ type: 'command', command: curlCmd('idle_prompt'), timeout:
|
|
51
|
+
hooks: [{ type: 'command', command: curlCmd('idle_prompt'), timeout: HOOK_TIMEOUT_MS }],
|
|
36
52
|
},
|
|
37
53
|
{
|
|
38
54
|
matcher: 'permission_prompt',
|
|
39
|
-
hooks: [{ type: 'command', command: curlCmd('permission_prompt'), timeout:
|
|
55
|
+
hooks: [{ type: 'command', command: curlCmd('permission_prompt'), timeout: HOOK_TIMEOUT_MS }],
|
|
40
56
|
},
|
|
41
57
|
{
|
|
42
58
|
matcher: 'elicitation_dialog',
|
|
43
|
-
hooks: [{ type: 'command', command: curlCmd('elicitation_dialog'), timeout:
|
|
59
|
+
hooks: [{ type: 'command', command: curlCmd('elicitation_dialog'), timeout: HOOK_TIMEOUT_MS }],
|
|
44
60
|
},
|
|
45
61
|
],
|
|
46
62
|
Stop: [
|
|
47
63
|
{
|
|
48
|
-
hooks: [{ type: 'command', command: curlCmd('stop'), timeout:
|
|
64
|
+
hooks: [{ type: 'command', command: curlCmd('stop'), timeout: HOOK_TIMEOUT_MS }],
|
|
49
65
|
},
|
|
50
66
|
],
|
|
51
67
|
TeammateIdle: [
|
|
52
68
|
{
|
|
53
|
-
hooks: [{ type: 'command', command: curlCmd('teammate_idle'), timeout:
|
|
69
|
+
hooks: [{ type: 'command', command: curlCmd('teammate_idle'), timeout: HOOK_TIMEOUT_MS }],
|
|
54
70
|
},
|
|
55
71
|
],
|
|
56
72
|
TaskCompleted: [
|
|
57
73
|
{
|
|
58
|
-
hooks: [{ type: 'command', command: curlCmd('task_completed'), timeout:
|
|
74
|
+
hooks: [{ type: 'command', command: curlCmd('task_completed'), timeout: HOOK_TIMEOUT_MS }],
|
|
59
75
|
},
|
|
60
76
|
],
|
|
61
77
|
},
|
package/dist/hooks-config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks-config.js","sourceRoot":"","sources":["../src/hooks-config.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"hooks-config.js","sourceRoot":"","sources":["../src/hooks-config.ts"],"names":[],"mappings":"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"}
|
package/dist/image-watcher.d.ts
CHANGED
|
@@ -33,10 +33,10 @@ export declare class ImageWatcher extends EventEmitter {
|
|
|
33
33
|
private sessionWatchers;
|
|
34
34
|
/** Map of sessionId -> working directory path */
|
|
35
35
|
private sessionDirs;
|
|
36
|
-
/**
|
|
37
|
-
private
|
|
38
|
-
/** Track which session owns each
|
|
39
|
-
private
|
|
36
|
+
/** Per-file debouncer for rapid image creation */
|
|
37
|
+
private fileDeb;
|
|
38
|
+
/** Track which session owns each debounced file (for cleanup) */
|
|
39
|
+
private fileToSession;
|
|
40
40
|
/** Per-session burst tracking: sessionId -> { count, windowStart } */
|
|
41
41
|
private burstTrackers;
|
|
42
42
|
/** Whether the watcher is currently running */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image-watcher.d.ts","sourceRoot":"","sources":["../src/image-watcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI3C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"image-watcher.d.ts","sourceRoot":"","sources":["../src/image-watcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI3C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAKrD,MAAM,WAAW,kBAAkB;IACjC,gBAAgB,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACtD,aAAa,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3D;AAwBD;;;;;;;;;;;;;;GAcG;AACH,qBAAa,YAAa,SAAQ,YAAY;IAC5C,uEAAuE;IACvE,OAAO,CAAC,eAAe,CAAgC;IAEvD,iDAAiD;IACjD,OAAO,CAAC,WAAW,CAA6B;IAEhD,kDAAkD;IAClD,OAAO,CAAC,OAAO,CAAyC;IAExD,iEAAiE;IACjE,OAAO,CAAC,aAAa,CAA6B;IAElD,sEAAsE;IACtE,OAAO,CAAC,aAAa,CAA6D;IAElF,+CAA+C;IAC/C,OAAO,CAAC,UAAU,CAAS;;IAS3B;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;;OAGG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,IAAI,IAAI,IAAI;IAoBZ;;;;;OAKG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IA8DzD;;;;OAIG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IA0BvC;;OAEG;IACH,kBAAkB,IAAI,MAAM,EAAE;IAM9B;;;OAGG;IACH,OAAO,CAAC,aAAa;IAqCrB;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAuB1B;AAGD,eAAO,MAAM,YAAY,cAAqB,CAAC"}
|
package/dist/image-watcher.js
CHANGED
|
@@ -11,6 +11,7 @@ import { EventEmitter } from 'node:events';
|
|
|
11
11
|
import { watch } from 'chokidar';
|
|
12
12
|
import { basename, extname, relative } from 'node:path';
|
|
13
13
|
import { statSync } from 'node:fs';
|
|
14
|
+
import { KeyedDebouncer } from './utils/index.js';
|
|
14
15
|
// ========== Constants ==========
|
|
15
16
|
/** Supported image file extensions (lowercase) */
|
|
16
17
|
const IMAGE_EXTENSIONS = new Set(['.png', '.jpg', '.jpeg', '.gif', '.webp', '.bmp', '.svg']);
|
|
@@ -45,10 +46,10 @@ export class ImageWatcher extends EventEmitter {
|
|
|
45
46
|
sessionWatchers = new Map();
|
|
46
47
|
/** Map of sessionId -> working directory path */
|
|
47
48
|
sessionDirs = new Map();
|
|
48
|
-
/**
|
|
49
|
-
|
|
50
|
-
/** Track which session owns each
|
|
51
|
-
|
|
49
|
+
/** Per-file debouncer for rapid image creation */
|
|
50
|
+
fileDeb = new KeyedDebouncer(DEBOUNCE_DELAY_MS);
|
|
51
|
+
/** Track which session owns each debounced file (for cleanup) */
|
|
52
|
+
fileToSession = new Map();
|
|
52
53
|
/** Per-session burst tracking: sessionId -> { count, windowStart } */
|
|
53
54
|
burstTrackers = new Map();
|
|
54
55
|
/** Whether the watcher is currently running */
|
|
@@ -90,11 +91,8 @@ export class ImageWatcher extends EventEmitter {
|
|
|
90
91
|
this.sessionWatchers.clear();
|
|
91
92
|
this.sessionDirs.clear();
|
|
92
93
|
// Clear all debounce timers
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
}
|
|
96
|
-
this.debounceTimers.clear();
|
|
97
|
-
this.timerToSession.clear();
|
|
94
|
+
this.fileDeb.dispose();
|
|
95
|
+
this.fileToSession.clear();
|
|
98
96
|
this.burstTrackers.clear();
|
|
99
97
|
}
|
|
100
98
|
/**
|
|
@@ -176,20 +174,15 @@ export class ImageWatcher extends EventEmitter {
|
|
|
176
174
|
}
|
|
177
175
|
this.sessionDirs.delete(sessionId);
|
|
178
176
|
// Clear any pending debounce timers for this session
|
|
179
|
-
|
|
180
|
-
const
|
|
181
|
-
for (const [filePath, ownerId] of this.timerToSession) {
|
|
177
|
+
const toCancel = [];
|
|
178
|
+
for (const [filePath, ownerId] of this.fileToSession) {
|
|
182
179
|
if (ownerId === sessionId) {
|
|
183
|
-
|
|
180
|
+
toCancel.push(filePath);
|
|
184
181
|
}
|
|
185
182
|
}
|
|
186
|
-
for (const filePath of
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
clearTimeout(timer);
|
|
190
|
-
this.debounceTimers.delete(filePath);
|
|
191
|
-
}
|
|
192
|
-
this.timerToSession.delete(filePath);
|
|
183
|
+
for (const filePath of toCancel) {
|
|
184
|
+
this.fileDeb.cancelKey(filePath);
|
|
185
|
+
this.fileToSession.delete(filePath);
|
|
193
186
|
}
|
|
194
187
|
this.burstTrackers.delete(sessionId);
|
|
195
188
|
}
|
|
@@ -228,21 +221,15 @@ export class ImageWatcher extends EventEmitter {
|
|
|
228
221
|
this.burstTrackers.set(sessionId, burst);
|
|
229
222
|
}
|
|
230
223
|
// Debounce rapid file creation (e.g., multiple screenshots quickly)
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
clearTimeout(existingTimer);
|
|
234
|
-
}
|
|
235
|
-
const timer = setTimeout(() => {
|
|
236
|
-
this.debounceTimers.delete(filePath);
|
|
237
|
-
this.timerToSession.delete(filePath);
|
|
224
|
+
this.fileDeb.schedule(filePath, () => {
|
|
225
|
+
this.fileToSession.delete(filePath);
|
|
238
226
|
this.emitImageDetected(sessionId, filePath);
|
|
239
227
|
// Increment burst count on actual emission (not on detection)
|
|
240
228
|
const b = this.burstTrackers.get(sessionId);
|
|
241
229
|
if (b)
|
|
242
230
|
b.count++;
|
|
243
|
-
}
|
|
244
|
-
this.
|
|
245
|
-
this.timerToSession.set(filePath, sessionId);
|
|
231
|
+
});
|
|
232
|
+
this.fileToSession.set(filePath, sessionId);
|
|
246
233
|
}
|
|
247
234
|
/**
|
|
248
235
|
* Emit the image:detected event with file metadata.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image-watcher.js","sourceRoot":"","sources":["../src/image-watcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAkB,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"image-watcher.js","sourceRoot":"","sources":["../src/image-watcher.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -11,10 +11,9 @@ import { program } from './cli.js';
|
|
|
11
11
|
// Detect if we're running the web server (long-lived process)
|
|
12
12
|
// In web mode, we should NOT exit on transient errors — log and continue
|
|
13
13
|
const isWebMode = process.argv.includes('web');
|
|
14
|
+
import { MAX_CONSECUTIVE_ERRORS, ERROR_RESET_MS } from './config/server-timing.js';
|
|
14
15
|
// Track consecutive unhandled errors in web mode — restart after too many
|
|
15
16
|
let consecutiveErrors = 0;
|
|
16
|
-
const MAX_CONSECUTIVE_ERRORS = 5;
|
|
17
|
-
const ERROR_RESET_MS = 60000; // Reset counter after 1 minute of no errors
|
|
18
17
|
let errorResetTimer = null;
|
|
19
18
|
function trackError() {
|
|
20
19
|
consecutiveErrors++;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEnC,8DAA8D;AAC9D,yEAAyE;AACzE,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAE/C,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEnC,8DAA8D;AAC9D,yEAAyE;AACzE,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAE/C,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAEnF,0EAA0E;AAC1E,IAAI,iBAAiB,GAAG,CAAC,CAAC;AAC1B,IAAI,eAAe,GAAyC,IAAI,CAAC;AAEjE,SAAS,UAAU;IACjB,iBAAiB,EAAE,CAAC;IACpB,IAAI,eAAe;QAAE,YAAY,CAAC,eAAe,CAAC,CAAC;IACnD,eAAe,GAAG,UAAU,CAAC,GAAG,EAAE;QAChC,iBAAiB,GAAG,CAAC,CAAC;IACxB,CAAC,EAAE,cAAc,CAAC,CAAC;IAEnB,IAAI,iBAAiB,IAAI,sBAAsB,EAAE,CAAC;QAChD,OAAO,CAAC,KAAK,CAAC,WAAW,sBAAsB,6DAA6D,CAAC,CAAC;QAC9G,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,yBAAyB;AACzB,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,GAAG,EAAE,EAAE;IACtC,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IAClD,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,CAAC,KAAK,CAAC,yDAAyD,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;QACpF,UAAU,EAAE,CAAC;IACf,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,MAAM,EAAE,EAAE;IAC1C,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC;IAC9C,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;QACzE,UAAU,EAAE,CAAC;IACf,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,UAAU;AACV,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
@@ -15,30 +15,8 @@
|
|
|
15
15
|
* @module plan-orchestrator
|
|
16
16
|
*/
|
|
17
17
|
import type { TerminalMultiplexer } from './mux-interface.js';
|
|
18
|
-
import {
|
|
19
|
-
|
|
20
|
-
export type PlanPhase = TddPhase;
|
|
21
|
-
/**
|
|
22
|
-
* Plan item with TDD structure.
|
|
23
|
-
*/
|
|
24
|
-
export interface PlanItem {
|
|
25
|
-
id?: string;
|
|
26
|
-
content: string;
|
|
27
|
-
priority: 'P0' | 'P1' | 'P2' | null;
|
|
28
|
-
source?: string;
|
|
29
|
-
rationale?: string;
|
|
30
|
-
verificationCriteria?: string;
|
|
31
|
-
testCommand?: string;
|
|
32
|
-
dependencies?: string[];
|
|
33
|
-
status?: PlanTaskStatus;
|
|
34
|
-
attempts?: number;
|
|
35
|
-
lastError?: string;
|
|
36
|
-
completedAt?: number;
|
|
37
|
-
complexity?: 'low' | 'medium' | 'high';
|
|
38
|
-
tddPhase?: PlanPhase;
|
|
39
|
-
pairedWith?: string;
|
|
40
|
-
reviewChecklist?: string[];
|
|
41
|
-
}
|
|
18
|
+
import type { PlanItem } from './types.js';
|
|
19
|
+
export type { PlanItem };
|
|
42
20
|
export interface ResearchResult {
|
|
43
21
|
success: boolean;
|
|
44
22
|
findings: {
|