aicodeman 1.2.2 → 1.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 +264 -90
- package/dist/attachment-magic.d.ts +13 -0
- package/dist/attachment-magic.d.ts.map +1 -1
- package/dist/attachment-magic.js +47 -0
- package/dist/attachment-magic.js.map +1 -1
- package/dist/attachment-registry.d.ts.map +1 -1
- package/dist/attachment-registry.js +13 -2
- package/dist/attachment-registry.js.map +1 -1
- package/dist/config/buffer-limits.d.ts +1 -2
- package/dist/config/buffer-limits.d.ts.map +1 -1
- package/dist/config/buffer-limits.js +1 -2
- package/dist/config/buffer-limits.js.map +1 -1
- package/dist/config/map-limits.d.ts +11 -0
- package/dist/config/map-limits.d.ts.map +1 -1
- package/dist/config/map-limits.js +11 -0
- package/dist/config/map-limits.js.map +1 -1
- package/dist/config/server-timing.d.ts +6 -0
- package/dist/config/server-timing.d.ts.map +1 -1
- package/dist/config/server-timing.js +9 -0
- package/dist/config/server-timing.js.map +1 -1
- package/dist/config/terminal-history.d.ts +11 -6
- package/dist/config/terminal-history.d.ts.map +1 -1
- package/dist/config/terminal-history.js +18 -8
- package/dist/config/terminal-history.js.map +1 -1
- package/dist/cron/cron-input.d.ts +30 -0
- package/dist/cron/cron-input.d.ts.map +1 -0
- package/dist/cron/cron-input.js +7 -0
- package/dist/cron/cron-input.js.map +1 -0
- package/dist/cron/cron-service.d.ts +92 -0
- package/dist/cron/cron-service.d.ts.map +1 -0
- package/dist/cron/cron-service.js +606 -0
- package/dist/cron/cron-service.js.map +1 -0
- package/dist/cron/cron-time.d.ts +29 -0
- package/dist/cron/cron-time.d.ts.map +1 -0
- package/dist/cron/cron-time.js +87 -0
- package/dist/cron/cron-time.js.map +1 -0
- package/dist/document-thumbnailer.d.ts +1 -1
- package/dist/document-thumbnailer.d.ts.map +1 -1
- package/dist/document-thumbnailer.js +11 -2
- package/dist/document-thumbnailer.js.map +1 -1
- package/dist/generated-artifact-attachments.d.ts +26 -0
- package/dist/generated-artifact-attachments.d.ts.map +1 -0
- package/dist/generated-artifact-attachments.js +61 -0
- package/dist/generated-artifact-attachments.js.map +1 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -1
- package/dist/mux-interface.d.ts +31 -5
- package/dist/mux-interface.d.ts.map +1 -1
- package/dist/remote-hosts.d.ts +66 -0
- package/dist/remote-hosts.d.ts.map +1 -0
- package/dist/remote-hosts.js +198 -0
- package/dist/remote-hosts.js.map +1 -0
- package/dist/services/unified-session-service.d.ts +115 -0
- package/dist/services/unified-session-service.d.ts.map +1 -0
- package/dist/services/unified-session-service.js +173 -0
- package/dist/services/unified-session-service.js.map +1 -0
- package/dist/session-cli-builder.d.ts +3 -1
- package/dist/session-cli-builder.d.ts.map +1 -1
- package/dist/session-cli-builder.js +26 -7
- package/dist/session-cli-builder.js.map +1 -1
- package/dist/session-pty-exit-breaker.d.ts +66 -0
- package/dist/session-pty-exit-breaker.d.ts.map +1 -0
- package/dist/session-pty-exit-breaker.js +77 -0
- package/dist/session-pty-exit-breaker.js.map +1 -0
- package/dist/session.d.ts +24 -1
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +94 -11
- package/dist/session.js.map +1 -1
- package/dist/state-store.d.ts +14 -0
- package/dist/state-store.d.ts.map +1 -1
- package/dist/state-store.js +49 -0
- package/dist/state-store.js.map +1 -1
- package/dist/tmux-manager.d.ts +94 -8
- package/dist/tmux-manager.d.ts.map +1 -1
- package/dist/tmux-manager.js +222 -26
- package/dist/tmux-manager.js.map +1 -1
- package/dist/types/api.d.ts +11 -0
- package/dist/types/api.d.ts.map +1 -1
- package/dist/types/api.js.map +1 -1
- package/dist/types/app-state.d.ts +5 -0
- package/dist/types/app-state.d.ts.map +1 -1
- package/dist/types/app-state.js.map +1 -1
- package/dist/types/cron.d.ts +88 -0
- package/dist/types/cron.d.ts.map +1 -0
- package/dist/types/cron.js +13 -0
- package/dist/types/cron.js.map +1 -0
- package/dist/types/session.d.ts +57 -0
- package/dist/types/session.d.ts.map +1 -1
- package/dist/types/session.js.map +1 -1
- package/dist/web/heic-jpeg-converter.d.ts +24 -0
- package/dist/web/heic-jpeg-converter.d.ts.map +1 -0
- package/dist/web/heic-jpeg-converter.js +76 -0
- package/dist/web/heic-jpeg-converter.js.map +1 -0
- package/dist/web/heic-jpeg-worker.d.ts +44 -0
- package/dist/web/heic-jpeg-worker.d.ts.map +1 -0
- package/dist/web/heic-jpeg-worker.js +78 -0
- package/dist/web/heic-jpeg-worker.js.map +1 -0
- package/dist/web/ports/cron-port.d.ts +9 -0
- package/dist/web/ports/cron-port.d.ts.map +1 -0
- package/dist/web/ports/cron-port.js +6 -0
- package/dist/web/ports/cron-port.js.map +1 -0
- package/dist/web/ports/index.d.ts +1 -0
- package/dist/web/ports/index.d.ts.map +1 -1
- package/dist/web/public/api-client.c9b1cddc.js.gz +0 -0
- package/dist/web/public/app.b0534652.js +38 -0
- package/dist/web/public/app.b0534652.js.br +0 -0
- package/dist/web/public/app.b0534652.js.gz +0 -0
- package/dist/web/public/{constants.1c779517.js → constants.5b18ed64.js} +65 -0
- package/dist/web/public/constants.5b18ed64.js.br +0 -0
- package/dist/web/public/constants.5b18ed64.js.gz +0 -0
- package/dist/web/public/cron-ui.js +328 -0
- package/dist/web/public/cron-ui.js.br +0 -0
- package/dist/web/public/cron-ui.js.gz +0 -0
- package/dist/web/public/image-input.ee16ad88.js.gz +0 -0
- package/dist/web/public/index.html +313 -25
- package/dist/web/public/index.html.br +0 -0
- package/dist/web/public/index.html.gz +0 -0
- package/dist/web/public/input-cjk.63794d0b.js +1 -0
- package/dist/web/public/input-cjk.63794d0b.js.br +0 -0
- package/dist/web/public/input-cjk.63794d0b.js.gz +0 -0
- package/dist/web/public/keyboard-accessory.3f91acef.js.gz +0 -0
- package/dist/web/public/mobile-handlers.b5a667ef.js.gz +0 -0
- package/dist/web/public/mobile.0644e3ac.css +1 -0
- package/dist/web/public/mobile.0644e3ac.css.br +0 -0
- package/dist/web/public/mobile.0644e3ac.css.gz +0 -0
- package/dist/web/public/notification-manager.ca9dc40d.js.gz +0 -0
- package/dist/web/public/orchestrator-panel.js.gz +0 -0
- package/dist/web/public/{panels-ui.772e92c9.js → panels-ui.ca03853f.js} +25 -17
- package/dist/web/public/panels-ui.ca03853f.js.br +0 -0
- package/dist/web/public/panels-ui.ca03853f.js.gz +0 -0
- package/dist/web/public/ralph-panel.6de2d0f8.js.gz +0 -0
- package/dist/web/public/ralph-wizard.13a1831e.js.gz +0 -0
- package/dist/web/public/respawn-ui.2d249da9.js.gz +0 -0
- package/dist/web/public/sanitize-html.bc7078d6.js.gz +0 -0
- package/dist/web/public/session-ui.b51814ef.js +49 -0
- package/dist/web/public/session-ui.b51814ef.js.br +0 -0
- package/dist/web/public/session-ui.b51814ef.js.gz +0 -0
- package/dist/web/public/settings-ui.6c67c125.js +67 -0
- package/dist/web/public/settings-ui.6c67c125.js.br +0 -0
- package/dist/web/public/settings-ui.6c67c125.js.gz +0 -0
- package/dist/web/public/styles.be7d626b.css +1 -0
- package/dist/web/public/styles.be7d626b.css.br +0 -0
- package/dist/web/public/styles.be7d626b.css.gz +0 -0
- package/dist/web/public/subagent-windows.69b60c35.js.gz +0 -0
- package/dist/web/public/sw.js.gz +0 -0
- package/dist/web/public/terminal-ui.dbf141fa.js +3 -0
- package/dist/web/public/terminal-ui.dbf141fa.js.br +0 -0
- package/dist/web/public/terminal-ui.dbf141fa.js.gz +0 -0
- package/dist/web/public/ultracode-panel.js.gz +0 -0
- package/dist/web/public/ultracode-windows.js.gz +0 -0
- package/dist/web/public/upload.html.gz +0 -0
- package/dist/web/public/vendor/dompurify.min.js.gz +0 -0
- package/dist/web/public/vendor/marked.min.js.gz +0 -0
- package/dist/web/public/vendor/xterm-addon-fit.min.js.gz +0 -0
- package/dist/web/public/vendor/xterm-addon-serialize.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.137ad9f0.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.085e9e73.js.gz +0 -0
- package/dist/web/routes/case-routes.d.ts.map +1 -1
- package/dist/web/routes/case-routes.js +115 -1
- package/dist/web/routes/case-routes.js.map +1 -1
- package/dist/web/routes/cron-routes.d.ts +11 -0
- package/dist/web/routes/cron-routes.d.ts.map +1 -0
- package/dist/web/routes/cron-routes.js +70 -0
- package/dist/web/routes/cron-routes.js.map +1 -0
- package/dist/web/routes/index.d.ts +1 -0
- package/dist/web/routes/index.d.ts.map +1 -1
- package/dist/web/routes/index.js +1 -0
- package/dist/web/routes/index.js.map +1 -1
- package/dist/web/routes/respawn-routes.d.ts.map +1 -1
- package/dist/web/routes/respawn-routes.js +3 -0
- package/dist/web/routes/respawn-routes.js.map +1 -1
- package/dist/web/routes/session-routes.d.ts.map +1 -1
- package/dist/web/routes/session-routes.js +610 -68
- package/dist/web/routes/session-routes.js.map +1 -1
- package/dist/web/routes/ws-routes.d.ts.map +1 -1
- package/dist/web/routes/ws-routes.js +56 -17
- package/dist/web/routes/ws-routes.js.map +1 -1
- package/dist/web/schemas.d.ts +113 -0
- package/dist/web/schemas.d.ts.map +1 -1
- package/dist/web/schemas.js +145 -0
- package/dist/web/schemas.js.map +1 -1
- package/dist/web/server.d.ts +8 -2
- package/dist/web/server.d.ts.map +1 -1
- package/dist/web/server.js +75 -13
- package/dist/web/server.js.map +1 -1
- package/dist/web/session-listener-wiring.d.ts +5 -1
- package/dist/web/session-listener-wiring.d.ts.map +1 -1
- package/dist/web/session-listener-wiring.js +23 -1
- package/dist/web/session-listener-wiring.js.map +1 -1
- package/dist/web/sse-events.d.ts +15 -0
- package/dist/web/sse-events.d.ts.map +1 -1
- package/dist/web/sse-events.js +17 -0
- package/dist/web/sse-events.js.map +1 -1
- package/dist/web/ws-connection-registry.d.ts +77 -0
- package/dist/web/ws-connection-registry.d.ts.map +1 -0
- package/dist/web/ws-connection-registry.js +99 -0
- package/dist/web/ws-connection-registry.js.map +1 -0
- package/package.json +3 -1
- package/dist/web/public/app.a8d73c32.js +0 -38
- package/dist/web/public/app.a8d73c32.js.br +0 -0
- package/dist/web/public/app.a8d73c32.js.gz +0 -0
- package/dist/web/public/constants.1c779517.js.br +0 -0
- package/dist/web/public/constants.1c779517.js.gz +0 -0
- package/dist/web/public/input-cjk.4e950e0a.js +0 -1
- package/dist/web/public/input-cjk.4e950e0a.js.br +0 -0
- package/dist/web/public/input-cjk.4e950e0a.js.gz +0 -0
- package/dist/web/public/mobile.8a9aff7a.css +0 -1
- package/dist/web/public/mobile.8a9aff7a.css.br +0 -0
- package/dist/web/public/mobile.8a9aff7a.css.gz +0 -0
- package/dist/web/public/panels-ui.772e92c9.js.br +0 -0
- package/dist/web/public/panels-ui.772e92c9.js.gz +0 -0
- package/dist/web/public/session-ui.da3e53f2.js +0 -36
- package/dist/web/public/session-ui.da3e53f2.js.br +0 -0
- package/dist/web/public/session-ui.da3e53f2.js.gz +0 -0
- package/dist/web/public/settings-ui.38feb956.js +0 -61
- package/dist/web/public/settings-ui.38feb956.js.br +0 -0
- package/dist/web/public/settings-ui.38feb956.js.gz +0 -0
- package/dist/web/public/styles.1b3e6147.css +0 -1
- package/dist/web/public/styles.1b3e6147.css.br +0 -0
- package/dist/web/public/styles.1b3e6147.css.gz +0 -0
- package/dist/web/public/terminal-ui.865f21f6.js +0 -3
- package/dist/web/public/terminal-ui.865f21f6.js.br +0 -0
- package/dist/web/public/terminal-ui.865f21f6.js.gz +0 -0
|
@@ -11,7 +11,18 @@ import fs from 'node:fs/promises';
|
|
|
11
11
|
import { basename, extname, isAbsolute } from 'node:path';
|
|
12
12
|
import { isBlockedAttachmentPath, loadAttachmentGuardConfig } from './config/attachment-guard.js';
|
|
13
13
|
import { validateSessionFilePath } from './web/route-helpers.js';
|
|
14
|
-
const SUPPORTED_ATTACHMENT_EXTENSIONS = new Set([
|
|
14
|
+
const SUPPORTED_ATTACHMENT_EXTENSIONS = new Set([
|
|
15
|
+
'png',
|
|
16
|
+
'jpg',
|
|
17
|
+
'jpeg',
|
|
18
|
+
'gif',
|
|
19
|
+
'webp',
|
|
20
|
+
'pdf',
|
|
21
|
+
'docx',
|
|
22
|
+
'pptx',
|
|
23
|
+
'md',
|
|
24
|
+
'txt',
|
|
25
|
+
]);
|
|
15
26
|
export class AttachmentRegistrationError extends Error {
|
|
16
27
|
statusCode;
|
|
17
28
|
constructor(message, statusCode = 400) {
|
|
@@ -62,7 +73,7 @@ export function isSupportedAttachmentExtension(extension) {
|
|
|
62
73
|
}
|
|
63
74
|
export function getAttachmentType(extension) {
|
|
64
75
|
const normalized = extension.toLowerCase().replace(/^\./, '');
|
|
65
|
-
if (
|
|
76
|
+
if (['png', 'jpg', 'jpeg', 'gif', 'webp'].includes(normalized))
|
|
66
77
|
return 'image';
|
|
67
78
|
if (normalized === 'pdf')
|
|
68
79
|
return 'pdf';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attachment-registry.js","sourceRoot":"","sources":["../src/attachment-registry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AAClG,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAGjE,MAAM,+BAA+B,GAAG,IAAI,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"attachment-registry.js","sourceRoot":"","sources":["../src/attachment-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,10 +6,9 @@
|
|
|
6
6
|
* it easy to tune memory usage.
|
|
7
7
|
*
|
|
8
8
|
* Memory Budget Rationale (for 20 concurrent sessions):
|
|
9
|
-
* - Terminal buffer:
|
|
9
|
+
* - Terminal buffer: 32MB max × 20 = 640MB worst case
|
|
10
10
|
* - Text output: 1MB max × 20 = 20MB worst case
|
|
11
11
|
* - Messages: ~1KB each × 1000 × 20 = 20MB worst case
|
|
12
|
-
* - Total buffer overhead: ~80MB (acceptable for a long-running server)
|
|
13
12
|
*
|
|
14
13
|
* @module config/buffer-limits
|
|
15
14
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buffer-limits.d.ts","sourceRoot":"","sources":["../../src/config/buffer-limits.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"buffer-limits.d.ts","sourceRoot":"","sources":["../../src/config/buffer-limits.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAQH;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,QAAoC,CAAC;AAE1E;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,QAAqC,CAAC;AAMnE;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,QAAyE,CAAC;AAE3G;;;GAGG;AACH,eAAO,MAAM,YAAY,QAAiE,CAAC;AAM3F;;;;GAIG;AACH,eAAO,MAAM,YAAY,QAA2D,CAAC;AAMrF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,QAAY,CAAC;AAM9C;;;GAGG;AACH,eAAO,MAAM,uBAAuB,QAAkB,CAAC;AAEvD;;GAEG;AACH,eAAO,MAAM,sBAAsB,QAAa,CAAC;AAMjD;;;;GAIG;AACH,eAAO,MAAM,eAAe,QAAe,CAAC;AAM5C;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,QAAgF,CAAC"}
|
|
@@ -6,10 +6,9 @@
|
|
|
6
6
|
* it easy to tune memory usage.
|
|
7
7
|
*
|
|
8
8
|
* Memory Budget Rationale (for 20 concurrent sessions):
|
|
9
|
-
* - Terminal buffer:
|
|
9
|
+
* - Terminal buffer: 32MB max × 20 = 640MB worst case
|
|
10
10
|
* - Text output: 1MB max × 20 = 20MB worst case
|
|
11
11
|
* - Messages: ~1KB each × 1000 × 20 = 20MB worst case
|
|
12
|
-
* - Total buffer overhead: ~80MB (acceptable for a long-running server)
|
|
13
12
|
*
|
|
14
13
|
* @module config/buffer-limits
|
|
15
14
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buffer-limits.js","sourceRoot":"","sources":["../../src/config/buffer-limits.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"buffer-limits.js","sourceRoot":"","sources":["../../src/config/buffer-limits.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,iCAAiC,EAAE,kCAAkC,EAAE,MAAM,uBAAuB,CAAC;AAE9G,+EAA+E;AAC/E,yBAAyB;AACzB,+EAA+E;AAE/E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,iCAAiC,CAAC;AAE1E;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,kCAAkC,CAAC;AAEnE,+EAA+E;AAC/E,4BAA4B;AAC5B,+EAA+E;AAE/E;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AAE3G;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,EAAE,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC;AAE3F,+EAA+E;AAC/E,wBAAwB;AACxB,+EAA+E;AAE/E;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC;AAErF,+EAA+E;AAC/E,qBAAqB;AACrB,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,OAAO;AAEtD,+EAA+E;AAC/E,mCAAmC;AACnC,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,MAAM;AAE9D;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,QAAQ;AAE1D,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,6BAA6B;AAE1E,+EAA+E;AAC/E,4BAA4B;AAC5B,+EAA+E;AAE/E;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,6BAA6B,IAAI,EAAE,CAAC,IAAI,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO"}
|
|
@@ -27,6 +27,17 @@ export declare const MAX_SSE_CLIENTS = 100;
|
|
|
27
27
|
* Maximum todo items to track per session.
|
|
28
28
|
*/
|
|
29
29
|
export declare const MAX_TODOS_PER_SESSION = 500;
|
|
30
|
+
/**
|
|
31
|
+
* Maximum cron-job run-history records retained across all jobs. Oldest runs
|
|
32
|
+
* (by startedAt) are pruned when exceeded — bounds state.json growth from
|
|
33
|
+
* frequently-firing or perpetually-skipped jobs.
|
|
34
|
+
*/
|
|
35
|
+
export declare const MAX_CRON_RUN_HISTORY = 500;
|
|
36
|
+
/**
|
|
37
|
+
* Maximum saved cron jobs. Jobs persist to state.json, so an unbounded count
|
|
38
|
+
* would grow it without limit; creation past the cap is rejected with 400.
|
|
39
|
+
*/
|
|
40
|
+
export declare const MAX_CRON_JOBS = 100;
|
|
30
41
|
/**
|
|
31
42
|
* Maximum agents to track across all sessions (LRU eviction when exceeded).
|
|
32
43
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map-limits.d.ts","sourceRoot":"","sources":["../../src/config/map-limits.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH;;;GAGG;AACH,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAM1C;;;GAGG;AACH,eAAO,MAAM,eAAe,MAAM,CAAC;AAMnC;;GAEG;AACH,eAAO,MAAM,qBAAqB,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"map-limits.d.ts","sourceRoot":"","sources":["../../src/config/map-limits.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH;;;GAGG;AACH,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAM1C;;;GAGG;AACH,eAAO,MAAM,eAAe,MAAM,CAAC;AAMnC;;GAEG;AACH,eAAO,MAAM,qBAAqB,MAAM,CAAC;AAEzC;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,MAAM,CAAC;AAExC;;;GAGG;AACH,eAAO,MAAM,aAAa,MAAM,CAAC;AAUjC;;GAEG;AACH,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAEtC;;;GAGG;AACH,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAE1C;;;GAGG;AACH,eAAO,MAAM,wBAAwB,QAAgB,CAAC"}
|
|
@@ -36,6 +36,17 @@ export const MAX_SSE_CLIENTS = 100;
|
|
|
36
36
|
* Maximum todo items to track per session.
|
|
37
37
|
*/
|
|
38
38
|
export const MAX_TODOS_PER_SESSION = 500;
|
|
39
|
+
/**
|
|
40
|
+
* Maximum cron-job run-history records retained across all jobs. Oldest runs
|
|
41
|
+
* (by startedAt) are pruned when exceeded — bounds state.json growth from
|
|
42
|
+
* frequently-firing or perpetually-skipped jobs.
|
|
43
|
+
*/
|
|
44
|
+
export const MAX_CRON_RUN_HISTORY = 500;
|
|
45
|
+
/**
|
|
46
|
+
* Maximum saved cron jobs. Jobs persist to state.json, so an unbounded count
|
|
47
|
+
* would grow it without limit; creation past the cap is rejected with 400.
|
|
48
|
+
*/
|
|
49
|
+
export const MAX_CRON_JOBS = 100;
|
|
39
50
|
// ============================================================================
|
|
40
51
|
// Pending Tool Calls Limits
|
|
41
52
|
// ============================================================================
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map-limits.js","sourceRoot":"","sources":["../../src/config/map-limits.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,+EAA+E;AAC/E,0BAA0B;AAC1B,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,EAAE,CAAC;AAE1C,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,CAAC;AAEnC,+EAA+E;AAC/E,mCAAmC;AACnC,+EAA+E;AAE/E;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAEzC,+EAA+E;AAC/E,4BAA4B;AAC5B,+EAA+E;AAE/E,+EAA+E;AAC/E,wBAAwB;AACxB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAEtC;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,CAAC;AAE1C;;;GAGG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC"}
|
|
1
|
+
{"version":3,"file":"map-limits.js","sourceRoot":"","sources":["../../src/config/map-limits.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,+EAA+E;AAC/E,0BAA0B;AAC1B,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,EAAE,CAAC;AAE1C,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,CAAC;AAEnC,+EAA+E;AAC/E,mCAAmC;AACnC,+EAA+E;AAE/E;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAEzC;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,CAAC;AAExC;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAC;AAEjC,+EAA+E;AAC/E,4BAA4B;AAC5B,+EAA+E;AAE/E,+EAA+E;AAC/E,wBAAwB;AACxB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAEtC;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,CAAC;AAE1C;;;GAGG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC"}
|
|
@@ -29,6 +29,12 @@ export declare const SESSIONS_LIST_CACHE_TTL = 1000;
|
|
|
29
29
|
export declare const SCHEDULED_CLEANUP_INTERVAL: number;
|
|
30
30
|
/** Completed scheduled run max age before cleanup (ms) */
|
|
31
31
|
export declare const SCHEDULED_RUN_MAX_AGE: number;
|
|
32
|
+
/** How often the cron loop wakes to check for due jobs (ms). */
|
|
33
|
+
export declare const CRON_TICK_INTERVAL: number;
|
|
34
|
+
/** Max attempts (× 500ms) to poll a launched session for CLI readiness before sending the prompt. */
|
|
35
|
+
export declare const CRON_READY_MAX_ATTEMPTS = 60;
|
|
36
|
+
/** Extra settle delay after CLI readiness is detected, before sending the prompt (ms). */
|
|
37
|
+
export declare const CRON_READY_SETTLE_MS = 2000;
|
|
32
38
|
/** Session limit retry wait before retrying (ms) */
|
|
33
39
|
export declare const SESSION_LIMIT_WAIT_MS = 5000;
|
|
34
40
|
/** Pause between scheduled run iterations (ms) */
|
|
@@ -1 +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;
|
|
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;AAMpD,gEAAgE;AAChE,eAAO,MAAM,kBAAkB,QAAY,CAAC;AAE5C,qGAAqG;AACrG,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAE1C,0FAA0F;AAC1F,eAAO,MAAM,oBAAoB,OAAO,CAAC;AAEzC,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;AAMrC,gFAAgF;AAChF,eAAO,MAAM,yBAAyB,QAAS,CAAC;AAEhD,4DAA4D;AAC5D,eAAO,MAAM,qBAAqB,QAAiB,CAAC;AAEpD,uEAAuE;AACvE,eAAO,MAAM,qBAAqB,QAAgB,CAAC"}
|
|
@@ -38,6 +38,15 @@ export const SESSIONS_LIST_CACHE_TTL = 1000;
|
|
|
38
38
|
export const SCHEDULED_CLEANUP_INTERVAL = 5 * 60 * 1000;
|
|
39
39
|
/** Completed scheduled run max age before cleanup (ms) */
|
|
40
40
|
export const SCHEDULED_RUN_MAX_AGE = 60 * 60 * 1000;
|
|
41
|
+
// ============================================================================
|
|
42
|
+
// Cron Jobs
|
|
43
|
+
// ============================================================================
|
|
44
|
+
/** How often the cron loop wakes to check for due jobs (ms). */
|
|
45
|
+
export const CRON_TICK_INTERVAL = 30 * 1000;
|
|
46
|
+
/** Max attempts (× 500ms) to poll a launched session for CLI readiness before sending the prompt. */
|
|
47
|
+
export const CRON_READY_MAX_ATTEMPTS = 60;
|
|
48
|
+
/** Extra settle delay after CLI readiness is detected, before sending the prompt (ms). */
|
|
49
|
+
export const CRON_READY_SETTLE_MS = 2000;
|
|
41
50
|
/** Session limit retry wait before retrying (ms) */
|
|
42
51
|
export const SESSION_LIMIT_WAIT_MS = 5000;
|
|
43
52
|
/** Pause between scheduled run iterations (ms) */
|
|
@@ -1 +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;AAErC,+EAA+E;AAC/E,2BAA2B;AAC3B,+EAA+E;AAE/E,gFAAgF;AAChF,MAAM,CAAC,MAAM,yBAAyB,GAAG,MAAM,CAAC;AAEhD,4DAA4D;AAC5D,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAEpD,uEAAuE;AACvE,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC"}
|
|
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,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E,gEAAgE;AAChE,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,GAAG,IAAI,CAAC;AAE5C,qGAAqG;AACrG,MAAM,CAAC,MAAM,uBAAuB,GAAG,EAAE,CAAC;AAE1C,0FAA0F;AAC1F,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,CAAC;AAEzC,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;AAErC,+EAA+E;AAC/E,2BAA2B;AAC3B,+EAA+E;AAE/E,gFAAgF;AAChF,MAAM,CAAC,MAAM,yBAAyB,GAAG,MAAM,CAAC;AAEhD,4DAA4D;AAC5D,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAEpD,uEAAuE;AACvE,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC"}
|
|
@@ -1,14 +1,19 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Defaults, bounds, and resolution for terminal history retention.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
4
|
+
* Raised defaults (the ones actually wired):
|
|
5
|
+
* - tmux history-limit: 50,000 -> 100,000 lines (applied at session spawn)
|
|
6
|
+
* - server PTY buffer cap: 2MB max / 1.5MB trim -> 32MB / 24MB (via buffer-limits.ts)
|
|
7
|
+
* Browser xterm scrollback is a separate hardcoded DEFAULT_SCROLLBACK (50,000) in
|
|
8
|
+
* src/web/public/constants.js and deliberately stays at 50k — 100k xterm lines per tab
|
|
9
|
+
* is a mobile-memory hazard — so DEFAULT_TERMINAL_SCROLLBACK_LINES stays 50,000 to match.
|
|
10
|
+
* The terminalScrollbackLines/terminalBufferMaxBytes/terminalBufferTrimBytes settings keys
|
|
11
|
+
* remain schema-validated but inert (a follow-up wires them); only tmuxHistoryLimit is live.
|
|
12
|
+
* All values remain env- and settings-overridable and bounds-clamped via
|
|
13
|
+
* resolveTerminalHistoryConfig().
|
|
9
14
|
*/
|
|
10
15
|
export declare const DEFAULT_TERMINAL_SCROLLBACK_LINES = 50000;
|
|
11
|
-
export declare const DEFAULT_TMUX_HISTORY_LIMIT =
|
|
16
|
+
export declare const DEFAULT_TMUX_HISTORY_LIMIT = 100000;
|
|
12
17
|
export declare const DEFAULT_TERMINAL_BUFFER_MAX_BYTES: number;
|
|
13
18
|
export declare const DEFAULT_TERMINAL_BUFFER_TRIM_BYTES: number;
|
|
14
19
|
export declare const MIN_TERMINAL_SCROLLBACK_LINES = 1000;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal-history.d.ts","sourceRoot":"","sources":["../../src/config/terminal-history.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"terminal-history.d.ts","sourceRoot":"","sources":["../../src/config/terminal-history.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,eAAO,MAAM,iCAAiC,QAAS,CAAC;AACxD,eAAO,MAAM,0BAA0B,SAAU,CAAC;AAClD,eAAO,MAAM,iCAAiC,QACmC,CAAC;AAMlF,eAAO,MAAM,kCAAkC,QAG9C,CAAC;AAEF,eAAO,MAAM,6BAA6B,OAAQ,CAAC;AACnD,eAAO,MAAM,6BAA6B,UAAY,CAAC;AACvD,eAAO,MAAM,yBAAyB,QAAc,CAAC;AACrD,eAAO,MAAM,yBAAyB,QAAoB,CAAC;AAE3D,MAAM,WAAW,qBAAqB;IACpC,uBAAuB,EAAE,MAAM,CAAC;IAChC,gBAAgB,EAAE,MAAM,CAAC;IACzB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,uBAAuB,EAAE,MAAM,CAAC;CACjC;AAOD,wBAAgB,4BAA4B,CAAC,QAAQ,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,qBAAqB,CA8B1G"}
|
|
@@ -1,16 +1,26 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Defaults, bounds, and resolution for terminal history retention.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
4
|
+
* Raised defaults (the ones actually wired):
|
|
5
|
+
* - tmux history-limit: 50,000 -> 100,000 lines (applied at session spawn)
|
|
6
|
+
* - server PTY buffer cap: 2MB max / 1.5MB trim -> 32MB / 24MB (via buffer-limits.ts)
|
|
7
|
+
* Browser xterm scrollback is a separate hardcoded DEFAULT_SCROLLBACK (50,000) in
|
|
8
|
+
* src/web/public/constants.js and deliberately stays at 50k — 100k xterm lines per tab
|
|
9
|
+
* is a mobile-memory hazard — so DEFAULT_TERMINAL_SCROLLBACK_LINES stays 50,000 to match.
|
|
10
|
+
* The terminalScrollbackLines/terminalBufferMaxBytes/terminalBufferTrimBytes settings keys
|
|
11
|
+
* remain schema-validated but inert (a follow-up wires them); only tmuxHistoryLimit is live.
|
|
12
|
+
* All values remain env- and settings-overridable and bounds-clamped via
|
|
13
|
+
* resolveTerminalHistoryConfig().
|
|
9
14
|
*/
|
|
10
15
|
export const DEFAULT_TERMINAL_SCROLLBACK_LINES = 50_000;
|
|
11
|
-
export const DEFAULT_TMUX_HISTORY_LIMIT =
|
|
12
|
-
export const DEFAULT_TERMINAL_BUFFER_MAX_BYTES = parseInt(process.env.CODEMAN_MAX_TERMINAL_BUFFER || '', 10) ||
|
|
13
|
-
|
|
16
|
+
export const DEFAULT_TMUX_HISTORY_LIMIT = 100_000;
|
|
17
|
+
export const DEFAULT_TERMINAL_BUFFER_MAX_BYTES = parseInt(process.env.CODEMAN_MAX_TERMINAL_BUFFER || '', 10) || 32 * 1024 * 1024;
|
|
18
|
+
// Trim must stay below the max: BufferAccumulator.trim() keeps the last trimSize chars, so a
|
|
19
|
+
// trim >= max never shrinks the buffer — every append then re-joins the whole string (O(n²))
|
|
20
|
+
// and memory overshoots the operator's cap (e.g. CODEMAN_MAX_TERMINAL_BUFFER=2097152 with no
|
|
21
|
+
// trim env would leave the 24MB trim default in force). Clamp to 75% of the resolved max,
|
|
22
|
+
// preserving the 24MB/32MB default ratio as trim hysteresis.
|
|
23
|
+
export const DEFAULT_TERMINAL_BUFFER_TRIM_BYTES = Math.min(parseInt(process.env.CODEMAN_TRIM_TERMINAL_TO || '', 10) || 24 * 1024 * 1024, Math.floor(DEFAULT_TERMINAL_BUFFER_MAX_BYTES * 0.75));
|
|
14
24
|
export const MIN_TERMINAL_SCROLLBACK_LINES = 1_000;
|
|
15
25
|
export const MAX_TERMINAL_SCROLLBACK_LINES = 1_000_000;
|
|
16
26
|
export const MIN_TERMINAL_BUFFER_BYTES = 1024 * 1024;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal-history.js","sourceRoot":"","sources":["../../src/config/terminal-history.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"terminal-history.js","sourceRoot":"","sources":["../../src/config/terminal-history.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,MAAM,CAAC,MAAM,iCAAiC,GAAG,MAAM,CAAC;AACxD,MAAM,CAAC,MAAM,0BAA0B,GAAG,OAAO,CAAC;AAClD,MAAM,CAAC,MAAM,iCAAiC,GAC5C,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,2BAA2B,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAClF,6FAA6F;AAC7F,6FAA6F;AAC7F,6FAA6F;AAC7F,0FAA0F;AAC1F,6DAA6D;AAC7D,MAAM,CAAC,MAAM,kCAAkC,GAAG,IAAI,CAAC,GAAG,CACxD,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,GAAG,IAAI,GAAG,IAAI,EAC5E,IAAI,CAAC,KAAK,CAAC,iCAAiC,GAAG,IAAI,CAAC,CACrD,CAAC;AAEF,MAAM,CAAC,MAAM,6BAA6B,GAAG,KAAK,CAAC;AACnD,MAAM,CAAC,MAAM,6BAA6B,GAAG,SAAS,CAAC;AACvD,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,GAAG,IAAI,CAAC;AACrD,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC;AAS3D,SAAS,UAAU,CAAC,KAAc,EAAE,QAAgB,EAAE,GAAW,EAAE,GAAW;IAC5E,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC1E,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,WAAoC,EAAE;IACjF,MAAM,sBAAsB,GAAG,UAAU,CACvC,QAAQ,CAAC,sBAAsB,EAC/B,iCAAiC,EACjC,yBAAyB,EACzB,yBAAyB,CAC1B,CAAC;IACF,MAAM,uBAAuB,GAAG,UAAU,CACxC,QAAQ,CAAC,uBAAuB,EAChC,IAAI,CAAC,GAAG,CAAC,kCAAkC,EAAE,sBAAsB,CAAC,EACpE,yBAAyB,EACzB,sBAAsB,CACvB,CAAC;IAEF,OAAO;QACL,uBAAuB,EAAE,UAAU,CACjC,QAAQ,CAAC,uBAAuB,EAChC,iCAAiC,EACjC,6BAA6B,EAC7B,6BAA6B,CAC9B;QACD,gBAAgB,EAAE,UAAU,CAC1B,QAAQ,CAAC,gBAAgB,EACzB,0BAA0B,EAC1B,6BAA6B,EAC7B,6BAA6B,CAC9B;QACD,sBAAsB;QACtB,uBAAuB;KACxB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Input shape for creating/updating a cron job. This is the
|
|
3
|
+
* user-settable subset of `CronJob` (server-maintained bookkeeping fields
|
|
4
|
+
* such as nextRunAt / lastStatus are excluded). Produced by the zod schema.
|
|
5
|
+
*/
|
|
6
|
+
import type { ConcurrencyPolicy, InputMode, PromptMode, ScheduleType } from '../types/cron.js';
|
|
7
|
+
import type { SessionMode } from '../types/session.js';
|
|
8
|
+
export type { CronJob, CronJobRun, CronJobRunStatus, TriggerType } from '../types/cron.js';
|
|
9
|
+
export interface CronJobInput {
|
|
10
|
+
name: string;
|
|
11
|
+
agentType: SessionMode;
|
|
12
|
+
workingDir: string;
|
|
13
|
+
launchCommand?: string;
|
|
14
|
+
promptMode: PromptMode;
|
|
15
|
+
promptText?: string;
|
|
16
|
+
promptFilePath?: string;
|
|
17
|
+
inputMode: InputMode;
|
|
18
|
+
scheduleType: ScheduleType;
|
|
19
|
+
runAt?: number;
|
|
20
|
+
intervalMinutes?: number;
|
|
21
|
+
dailyTime?: string;
|
|
22
|
+
weeklyDays?: number[];
|
|
23
|
+
weeklyTime?: string;
|
|
24
|
+
enabled: boolean;
|
|
25
|
+
notes?: string;
|
|
26
|
+
concurrencyPolicy: ConcurrencyPolicy;
|
|
27
|
+
/** Default true. Ignored for 'once' schedules. */
|
|
28
|
+
autoClosePreviousSession?: boolean;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=cron-input.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cron-input.d.ts","sourceRoot":"","sources":["../../src/cron/cron-input.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC/F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE3F,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,WAAW,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,UAAU,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,SAAS,CAAC;IACrB,YAAY,EAAE,YAAY,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,kDAAkD;IAClD,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Input shape for creating/updating a cron job. This is the
|
|
3
|
+
* user-settable subset of `CronJob` (server-maintained bookkeeping fields
|
|
4
|
+
* such as nextRunAt / lastStatus are excluded). Produced by the zod schema.
|
|
5
|
+
*/
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=cron-input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cron-input.js","sourceRoot":"","sources":["../../src/cron/cron-input.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Cron service: CRUD for cron jobs, manual Run Now,
|
|
3
|
+
* the background due-job tick, and run-history recording.
|
|
4
|
+
*
|
|
5
|
+
* It does NOT own session/tmux logic — it reuses Codeman's existing session
|
|
6
|
+
* layer (create → addSession → setupSessionListeners → startInteractive/Shell →
|
|
7
|
+
* send prompt via writeViaMux/write), mirroring the "quick start" route flow.
|
|
8
|
+
*/
|
|
9
|
+
import type { SessionPort, EventPort, ConfigPort, InfraPort } from '../web/ports/index.js';
|
|
10
|
+
import type { CronJob, CronJobRun } from '../types/cron.js';
|
|
11
|
+
import type { CronJobInput } from './cron-input.js';
|
|
12
|
+
/** The subset of the route context the cron depends on. */
|
|
13
|
+
export type CronDeps = SessionPort & EventPort & ConfigPort & InfraPort;
|
|
14
|
+
export declare class CronService {
|
|
15
|
+
private readonly deps;
|
|
16
|
+
constructor(deps: CronDeps);
|
|
17
|
+
private get store();
|
|
18
|
+
listJobs(): CronJob[];
|
|
19
|
+
getJob(id: string): CronJob | null;
|
|
20
|
+
listRuns(jobId?: string): CronJobRun[];
|
|
21
|
+
/**
|
|
22
|
+
* Number of LIVE sessions of a given agent type (for the multi-session
|
|
23
|
+
* warning and the skip_if_same_agent_running policy). Sessions whose CLI has
|
|
24
|
+
* exited (`stopped`/`error` — the tab is still open but nothing is running)
|
|
25
|
+
* don't count. When `excludeJobId` is given, sessions created by that job's
|
|
26
|
+
* own runs are also excluded — otherwise a recurring job with the skip
|
|
27
|
+
* policy would deadlock on its own previous (never-closed) session and fire
|
|
28
|
+
* exactly once, forever skipping after that.
|
|
29
|
+
*/
|
|
30
|
+
countActiveAgents(agentType: string, excludeJobId?: string): number;
|
|
31
|
+
createJob(input: CronJobInput): CronJob;
|
|
32
|
+
updateJob(id: string, patch: Partial<CronJobInput>): CronJob | null;
|
|
33
|
+
setEnabled(id: string, enabled: boolean): CronJob | null;
|
|
34
|
+
deleteJob(id: string): boolean;
|
|
35
|
+
/** Manual Run Now — always launches regardless of schedule/enabled state. */
|
|
36
|
+
runNow(id: string): Promise<CronJobRun | null>;
|
|
37
|
+
/**
|
|
38
|
+
* Background tick: launch every enabled job whose next run is due. Advances
|
|
39
|
+
* each job's schedule and guards against double-launching the same due time.
|
|
40
|
+
*/
|
|
41
|
+
tickDueJobs(now?: number): Promise<void>;
|
|
42
|
+
/** Recompute nextRunAt for loaded jobs on boot (e.g. after a restart). */
|
|
43
|
+
init(): void;
|
|
44
|
+
private advanceAfterFire;
|
|
45
|
+
private launch;
|
|
46
|
+
/**
|
|
47
|
+
* Resolves the prompt text and enforces the single-line constraint: prompt
|
|
48
|
+
* delivery rides writeViaMux/PTY writes where a newline is Enter, so a
|
|
49
|
+
* multi-line prompt would be silently corrupted (typed mode fuses lines,
|
|
50
|
+
* paste mode submits the first line and dribbles the rest in as separate
|
|
51
|
+
* messages). Rather than mangle an unattended agent's instructions, fail the
|
|
52
|
+
* run with a clear error. A prompt FILE may end with trailing newline(s)
|
|
53
|
+
* (every editor writes one) — those are stripped before the check.
|
|
54
|
+
*/
|
|
55
|
+
private resolvePrompt;
|
|
56
|
+
/**
|
|
57
|
+
* Guards a prompt-file path before it is read. The path is user-supplied via
|
|
58
|
+
* the API and its contents are injected into an agent session (an exfil sink
|
|
59
|
+
* over SSE/terminal), so an unconfined read would let a hostile job config
|
|
60
|
+
* pull arbitrary host files — including the SERVER PROCESS'S OWN secrets via
|
|
61
|
+
* `/proc/self/environ` — into the session.
|
|
62
|
+
*
|
|
63
|
+
* A denylist is the wrong posture for an exfil sink (it kept missing `/proc`,
|
|
64
|
+
* `/dev`, other users' `~/.ssh`, modern cloud creds…). So the PRIMARY gate is
|
|
65
|
+
* an allowlist: the prompt file must resolve INSIDE the job's working
|
|
66
|
+
* directory. A symlink escaping the workspace fails this because we check the
|
|
67
|
+
* realpath-resolved target. We additionally require a regular file (rejects
|
|
68
|
+
* directories, FIFOs, and `/dev/*` character devices that would hang or OOM
|
|
69
|
+
* the unbounded read) within a sane size cap, and keep the shared blocklist as
|
|
70
|
+
* cheap defense-in-depth. Returns the symlink-resolved path to read.
|
|
71
|
+
*/
|
|
72
|
+
private resolveSafePromptPath;
|
|
73
|
+
private sendPromptWhenReady;
|
|
74
|
+
/** 400-shaped error for route handlers (mirrors parseBody's error contract). */
|
|
75
|
+
private badRequest;
|
|
76
|
+
/**
|
|
77
|
+
* Create/update gate for a job's workingDir: must exist, be a directory, and
|
|
78
|
+
* not resolve into a blocked or pseudo-filesystem tree (nor the fs root).
|
|
79
|
+
* The user-supplied workingDir doubles as the prompt-file confinement root,
|
|
80
|
+
* so an unrestricted value would defeat that boundary (e.g. '/proc').
|
|
81
|
+
*/
|
|
82
|
+
private assertValidWorkingDir;
|
|
83
|
+
/** Close still-open sessions created by this job's previous runs (normal cleanup path). */
|
|
84
|
+
private closePreviousRunSessions;
|
|
85
|
+
private failRun;
|
|
86
|
+
private recordSkippedRun;
|
|
87
|
+
/** Prune the oldest run records (by startedAt) once the global cap is exceeded. */
|
|
88
|
+
private pruneRunHistory;
|
|
89
|
+
private updateJobLastStatus;
|
|
90
|
+
private broadcastListChanged;
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=cron-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cron-service.d.ts","sourceRoot":"","sources":["../../src/cron/cron-service.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAkBH,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAC3F,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAiC,MAAM,kBAAkB,CAAC;AAC3F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,2DAA2D;AAC3D,MAAM,MAAM,QAAQ,GAAG,WAAW,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;AA4BxE,qBAAa,WAAW;IACV,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,QAAQ;IAE3C,OAAO,KAAK,KAAK,GAEhB;IAID,QAAQ,IAAI,OAAO,EAAE;IAIrB,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI;IAIlC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,UAAU,EAAE;IAMtC;;;;;;;;OAQG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM;IAoBnE,SAAS,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO;IAuCvC,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,OAAO,GAAG,IAAI;IA+CnE,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,GAAG,IAAI;IAYxD,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAW9B,6EAA6E;IACvE,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAMpD;;;OAGG;IACG,WAAW,CAAC,GAAG,GAAE,MAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAwC1D,0EAA0E;IAC1E,IAAI,IAAI,IAAI;IAaZ,OAAO,CAAC,gBAAgB;YAaV,MAAM;IA6FpB;;;;;;;;OAQG;YACW,aAAa;IAkB3B;;;;;;;;;;;;;;;OAeG;YACW,qBAAqB;IA+CnC,OAAO,CAAC,mBAAmB;IAuD3B,gFAAgF;IAChF,OAAO,CAAC,UAAU;IAOlB;;;;;OAKG;IACH,OAAO,CAAC,qBAAqB;IAa7B,2FAA2F;YAC7E,wBAAwB;IAYtC,OAAO,CAAC,OAAO;IAUf,OAAO,CAAC,gBAAgB;IA2BxB,mFAAmF;IACnF,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,mBAAmB;IAW3B,OAAO,CAAC,oBAAoB;CAG7B"}
|