aicodeman 1.42.0 → 1.43.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -10
- package/dist/claude-session-title.d.ts +6 -4
- package/dist/claude-session-title.d.ts.map +1 -1
- package/dist/claude-session-title.js +6 -4
- package/dist/claude-session-title.js.map +1 -1
- package/dist/config/cli-registry/patterns.d.ts +1 -1
- package/dist/config/cli-registry/patterns.d.ts.map +1 -1
- package/dist/config/cli-registry/patterns.js +3 -0
- package/dist/config/cli-registry/patterns.js.map +1 -1
- package/dist/config/cli-registry/schema.d.ts +1 -0
- package/dist/config/cli-registry/schema.d.ts.map +1 -1
- package/dist/config/cli-registry/schema.js +5 -3
- package/dist/config/cli-registry/schema.js.map +1 -1
- package/dist/config/cli-registry/stock.d.ts.map +1 -1
- package/dist/config/cli-registry/stock.js +255 -1
- package/dist/config/cli-registry/stock.js.map +1 -1
- package/dist/config/cli-registry/types.d.ts +11 -3
- package/dist/config/cli-registry/types.d.ts.map +1 -1
- package/dist/hooks-config.d.ts +9 -0
- package/dist/hooks-config.d.ts.map +1 -1
- package/dist/hooks-config.js +12 -0
- package/dist/hooks-config.js.map +1 -1
- package/dist/mcp-sync-targets.d.ts +6 -3
- package/dist/mcp-sync-targets.d.ts.map +1 -1
- package/dist/mcp-sync-targets.js +6 -3
- package/dist/mcp-sync-targets.js.map +1 -1
- package/dist/mux-interface.d.ts +7 -3
- package/dist/mux-interface.d.ts.map +1 -1
- package/dist/session-cli-registry-bridge.d.ts +2 -1
- package/dist/session-cli-registry-bridge.d.ts.map +1 -1
- package/dist/session-cli-registry-bridge.js.map +1 -1
- package/dist/session.d.ts +23 -8
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +38 -9
- package/dist/session.js.map +1 -1
- package/dist/tmux-manager.d.ts +3 -2
- package/dist/tmux-manager.d.ts.map +1 -1
- package/dist/tmux-manager.js +4 -2
- package/dist/tmux-manager.js.map +1 -1
- package/dist/types/session.d.ts +32 -4
- package/dist/types/session.d.ts.map +1 -1
- package/dist/types/session.js +2 -1
- package/dist/types/session.js.map +1 -1
- package/dist/utils/cli-installed-probes.d.ts +1 -1
- package/dist/utils/cli-installed-probes.d.ts.map +1 -1
- package/dist/utils/cli-installed-probes.js +4 -2
- package/dist/utils/cli-installed-probes.js.map +1 -1
- package/dist/utils/copilot-cli-resolver.d.ts +48 -0
- package/dist/utils/copilot-cli-resolver.d.ts.map +1 -0
- package/dist/utils/copilot-cli-resolver.js +112 -0
- package/dist/utils/copilot-cli-resolver.js.map +1 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/web/case-path.d.ts +4 -2
- package/dist/web/case-path.d.ts.map +1 -1
- package/dist/web/case-path.js +13 -4
- package/dist/web/case-path.js.map +1 -1
- package/dist/web/public/admin-ui.js.gz +0 -0
- package/dist/web/public/api-client.c9b1cddc.js.gz +0 -0
- package/dist/web/public/{app.f04bb2a5.js → app.ae50029a.js} +7 -7
- package/dist/web/public/app.ae50029a.js.br +0 -0
- package/dist/web/public/app.ae50029a.js.gz +0 -0
- package/dist/web/public/approvals-ui.js.gz +0 -0
- package/dist/web/public/{constants.12b0c247.js → constants.e5e588db.js} +156 -2
- package/dist/web/public/constants.e5e588db.js.br +0 -0
- package/dist/web/public/constants.e5e588db.js.gz +0 -0
- package/dist/web/public/cron-ui.js.gz +0 -0
- package/dist/web/public/entrance-animations.js.gz +0 -0
- package/dist/web/public/git-status-ui.js.gz +0 -0
- package/dist/web/public/home-sessions.js.gz +0 -0
- package/dist/web/public/host-wake-ui.js.gz +0 -0
- package/dist/web/public/i18n.8f291f06.js +2 -0
- package/dist/web/public/i18n.8f291f06.js.br +0 -0
- package/dist/web/public/i18n.8f291f06.js.gz +0 -0
- package/dist/web/public/{image-input.fcdcb46c.js → image-input.941386e7.js} +24 -14
- package/dist/web/public/image-input.941386e7.js.br +0 -0
- package/dist/web/public/image-input.941386e7.js.gz +0 -0
- package/dist/web/public/index.html +23 -14
- package/dist/web/public/index.html.br +0 -0
- package/dist/web/public/index.html.gz +0 -0
- package/dist/web/public/input-cjk.8bc46081.js.gz +0 -0
- package/dist/web/public/{keyboard-accessory.b42f539b.js → keyboard-accessory.c283e827.js} +28 -17
- package/dist/web/public/keyboard-accessory.c283e827.js.br +0 -0
- package/dist/web/public/keyboard-accessory.c283e827.js.gz +0 -0
- package/dist/web/public/mobile-handlers.0ef9c311.js.gz +0 -0
- package/dist/web/public/mobile-ime-preview.2dbaf262.js.gz +0 -0
- package/dist/web/public/mobile-overview.js +1 -0
- package/dist/web/public/mobile-overview.js.br +0 -0
- package/dist/web/public/mobile-overview.js.gz +0 -0
- package/dist/web/public/mobile.13514863.css +1 -0
- package/dist/web/public/mobile.13514863.css.br +0 -0
- package/dist/web/public/mobile.13514863.css.gz +0 -0
- package/dist/web/public/notification-manager.feb82c04.js.gz +0 -0
- package/dist/web/public/orchestrator-panel.js.gz +0 -0
- package/dist/web/public/{panels-ui.73ec0137.js → panels-ui.b7bfb9da.js} +6 -6
- package/dist/web/public/panels-ui.b7bfb9da.js.br +0 -0
- package/dist/web/public/panels-ui.b7bfb9da.js.gz +0 -0
- package/dist/web/public/ralph-panel.b350e2ef.js.gz +0 -0
- package/dist/web/public/ralph-wizard.b6c0dd19.js.gz +0 -0
- package/dist/web/public/readmymind-ui.js.gz +0 -0
- package/dist/web/public/reboot-restore-ui.js.gz +0 -0
- package/dist/web/public/respawn-ui.d7adcf6a.js.gz +0 -0
- package/dist/web/public/sanitize-html.e7147e76.js.gz +0 -0
- package/dist/web/public/security-notices.json +21 -0
- package/dist/web/public/session-lineage.js.gz +0 -0
- package/dist/web/public/{session-ui.d52ff6aa.js → session-ui.be076c88.js} +2 -2
- package/dist/web/public/session-ui.be076c88.js.br +0 -0
- package/dist/web/public/session-ui.be076c88.js.gz +0 -0
- package/dist/web/public/{settings-ui.3a22bd2a.js → settings-ui.fc4cc50a.js} +2 -2
- package/dist/web/public/settings-ui.fc4cc50a.js.br +0 -0
- package/dist/web/public/settings-ui.fc4cc50a.js.gz +0 -0
- package/dist/web/public/spreadsheet-preview-worker.js.gz +0 -0
- package/dist/web/public/spreadsheet-preview.75c751de.js.gz +0 -0
- package/dist/web/public/spreadsheet-xlsx-core.js.gz +0 -0
- package/dist/web/public/styles.dcfa907f.css +1 -0
- package/dist/web/public/styles.dcfa907f.css.br +0 -0
- package/dist/web/public/styles.dcfa907f.css.gz +0 -0
- package/dist/web/public/subagent-windows.07277a58.js.gz +0 -0
- package/dist/web/public/sw.js +2 -2
- package/dist/web/public/sw.js.br +0 -0
- package/dist/web/public/sw.js.gz +0 -0
- package/dist/web/public/tab-layout-browser.2d6189f7.js.gz +0 -0
- package/dist/web/public/tab-rail-resize.7157e0bd.js.gz +0 -0
- package/dist/web/public/terminal-keycode229-recovery.af09f99a.js.gz +0 -0
- package/dist/web/public/terminal-split.js.gz +0 -0
- package/dist/web/public/terminal-tile.js.gz +0 -0
- package/dist/web/public/{terminal-ui.0a7ccc29.js → terminal-ui.ae01a7d1.js} +2 -2
- package/dist/web/public/terminal-ui.ae01a7d1.js.br +0 -0
- package/dist/web/public/terminal-ui.ae01a7d1.js.gz +0 -0
- package/dist/web/public/tile-grid.js +3 -6
- package/dist/web/public/tile-grid.js.br +0 -0
- package/dist/web/public/tile-grid.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/vendor/dompurify.min.js.gz +0 -0
- package/dist/web/public/vendor/exceljs.min.js.gz +0 -0
- package/dist/web/public/vendor/fflate.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-predictive-echo.ae5e3d5d.js.gz +0 -0
- package/dist/web/public/vendor/xterm-zerolag-input.0b69623c.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.2342c37b.js.gz +0 -0
- package/dist/web/public/voice-pcm-worklet.js.gz +0 -0
- package/dist/web/public/webview-tabs.js.gz +0 -0
- package/dist/web/public/whats-new.json +9 -9
- package/dist/web/response-viewer-transcript.d.ts +6 -0
- package/dist/web/response-viewer-transcript.d.ts.map +1 -1
- package/dist/web/response-viewer-transcript.js +134 -1
- package/dist/web/response-viewer-transcript.js.map +1 -1
- package/dist/web/routes/mcp-sync-routes.d.ts +4 -4
- package/dist/web/routes/mcp-sync-routes.js +4 -4
- package/dist/web/routes/session-routes.d.ts +12 -2
- package/dist/web/routes/session-routes.d.ts.map +1 -1
- package/dist/web/routes/session-routes.js +45 -15
- package/dist/web/routes/session-routes.js.map +1 -1
- package/dist/web/routes/system-routes.d.ts.map +1 -1
- package/dist/web/routes/system-routes.js +11 -0
- package/dist/web/routes/system-routes.js.map +1 -1
- package/dist/web/schemas.d.ts +13 -0
- package/dist/web/schemas.d.ts.map +1 -1
- package/dist/web/schemas.js +33 -2
- package/dist/web/schemas.js.map +1 -1
- package/dist/web/server.d.ts.map +1 -1
- package/dist/web/server.js +11 -1
- package/dist/web/server.js.map +1 -1
- package/package.json +1 -1
- package/skills/codeman/SKILL.md +3 -2
- package/skills/codeman/reference/endpoints.md +8 -8
- package/skills/codeman/reference/messaging.md +5 -5
- package/skills/codeman/reference/recipes.md +1 -1
- package/skills/codeman/reference/verbs.md +4 -4
- package/dist/web/public/app.f04bb2a5.js.br +0 -0
- package/dist/web/public/app.f04bb2a5.js.gz +0 -0
- package/dist/web/public/constants.12b0c247.js.br +0 -0
- package/dist/web/public/constants.12b0c247.js.gz +0 -0
- package/dist/web/public/i18n.06659676.js +0 -2
- package/dist/web/public/i18n.06659676.js.br +0 -0
- package/dist/web/public/i18n.06659676.js.gz +0 -0
- package/dist/web/public/image-input.fcdcb46c.js.br +0 -0
- package/dist/web/public/image-input.fcdcb46c.js.gz +0 -0
- package/dist/web/public/keyboard-accessory.b42f539b.js.br +0 -0
- package/dist/web/public/keyboard-accessory.b42f539b.js.gz +0 -0
- package/dist/web/public/mobile.2dff1580.css +0 -1
- package/dist/web/public/mobile.2dff1580.css.br +0 -0
- package/dist/web/public/mobile.2dff1580.css.gz +0 -0
- package/dist/web/public/panels-ui.73ec0137.js.br +0 -0
- package/dist/web/public/panels-ui.73ec0137.js.gz +0 -0
- package/dist/web/public/session-ui.d52ff6aa.js.br +0 -0
- package/dist/web/public/session-ui.d52ff6aa.js.gz +0 -0
- package/dist/web/public/settings-ui.3a22bd2a.js.br +0 -0
- package/dist/web/public/settings-ui.3a22bd2a.js.gz +0 -0
- package/dist/web/public/styles.ba6a9b84.css +0 -1
- package/dist/web/public/styles.ba6a9b84.css.br +0 -0
- package/dist/web/public/styles.ba6a9b84.css.gz +0 -0
- package/dist/web/public/terminal-ui.0a7ccc29.js.br +0 -0
- package/dist/web/public/terminal-ui.0a7ccc29.js.gz +0 -0
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "1.
|
|
2
|
+
"version": "1.43.0",
|
|
3
3
|
"highlights": [
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
"
|
|
7
|
-
"
|
|
8
|
-
"
|
|
9
|
-
"
|
|
10
|
-
"
|
|
11
|
-
"
|
|
4
|
+
"Security notices for the CLIs you run",
|
|
5
|
+
"GitHub Copilot CLI is a run mode (#592)",
|
|
6
|
+
"Pin tab names on the CLI (#646, optional)",
|
|
7
|
+
"Antigravity tabs show when they are working (#648)",
|
|
8
|
+
"Custom-folder cases below the cases folder (#567)",
|
|
9
|
+
"A steady WS pill (#647)",
|
|
10
|
+
"Clickable diff and patch files (#644)",
|
|
11
|
+
"Mixed uploads say what they skipped (#651)"
|
|
12
12
|
]
|
|
13
13
|
}
|
|
@@ -7,6 +7,12 @@ export interface ResponseViewerTranscriptBlock {
|
|
|
7
7
|
text: string;
|
|
8
8
|
}
|
|
9
9
|
export declare function isExternalCliTranscriptMode(mode: string | null | undefined): boolean;
|
|
10
|
+
/**
|
|
11
|
+
* Whether this mode's pane is a repainting full-screen TUI whose output stream is absolute cursor
|
|
12
|
+
* moves rather than lines. The segmenter needs the SCREEN for those (tmux capture-pane), because
|
|
13
|
+
* stripping the escapes from the stream concatenates every row into one run of text.
|
|
14
|
+
*/
|
|
15
|
+
export declare function transcriptNeedsScreenCapture(mode: string | null | undefined): boolean;
|
|
10
16
|
export declare function parseExternalCliTranscript(buffer: string, mode: string | null | undefined): ResponseViewerTranscriptBlock[];
|
|
11
17
|
export declare function getLastTranscriptResponse(blocks: ResponseViewerTranscriptBlock[]): string;
|
|
12
18
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response-viewer-transcript.d.ts","sourceRoot":"","sources":["../../src/web/response-viewer-transcript.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,4BAA4B,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ,GAAG,MAAM,CAAC;AAErF,MAAM,WAAW,6BAA6B;IAC5C,IAAI,EAAE,4BAA4B,CAAC;IACnC,KAAK,EAAE,QAAQ,GAAG,UAAU,GAAG,QAAQ,GAAG,MAAM,CAAC;IACjD,kGAAkG;IAClG,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;CACd;
|
|
1
|
+
{"version":3,"file":"response-viewer-transcript.d.ts","sourceRoot":"","sources":["../../src/web/response-viewer-transcript.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,4BAA4B,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ,GAAG,MAAM,CAAC;AAErF,MAAM,WAAW,6BAA6B;IAC5C,IAAI,EAAE,4BAA4B,CAAC;IACnC,KAAK,EAAE,QAAQ,GAAG,UAAU,GAAG,QAAQ,GAAG,MAAM,CAAC;IACjD,kGAAkG;IAClG,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;CACd;AAyTD,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAEpF;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAErF;AAkGD,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC9B,6BAA6B,EAAE,CAsFjC;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,6BAA6B,EAAE,GAAG,MAAM,CAKzF;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,SAAS;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CASpG"}
|
|
@@ -1,7 +1,33 @@
|
|
|
1
1
|
// Keep in lockstep with isExternalCliMode() in src/session.ts. Importing it here
|
|
2
2
|
// would drag node-pty and the whole session layer into this pure module, so the
|
|
3
3
|
// list is duplicated and test/response-viewer-transcript.test.ts pins the parity.
|
|
4
|
-
const EXTERNAL_CLI_MODES = new Set(['codex', 'gemini', 'opencode', 'antigravity', 'pi', 'grok', 'deepseek']);
|
|
4
|
+
const EXTERNAL_CLI_MODES = new Set(['codex', 'gemini', 'opencode', 'antigravity', 'pi', 'grok', 'deepseek', 'copilot']);
|
|
5
|
+
const PANE_DIALECTS = {
|
|
6
|
+
// GitHub Copilot CLI, measured on 1.0.95 inside tmux: ` ❯ <prompt> HH:MM`, then ` ● <answer>`
|
|
7
|
+
// with 3-space continuation lines, a cwd + `Session: N AIC used` row, the composer between two
|
|
8
|
+
// rules, and a `← open sidebar · … · / commands · ? help` footer. Tool-call rows are not
|
|
9
|
+
// modelled: they open with the same bullet and read as part of the answer.
|
|
10
|
+
copilot: {
|
|
11
|
+
// Copilot draws a submitted prompt at column 0 or 1; the continuation rows of an answer are
|
|
12
|
+
// indented three spaces, so a shell prompt inside a code block (` ❯ npm test`) is not a prompt.
|
|
13
|
+
prompt: /^ ?❯\s+(\S.*)$/,
|
|
14
|
+
promptTrailer: /\s{2,}\d{1,2}:\d{2}\s*$/,
|
|
15
|
+
responseBullet: /^\s*●\s+/,
|
|
16
|
+
status: [
|
|
17
|
+
/^\s*(?:!|●)\s+(?:Tip:|MCP Servers?\b|Model\b)/,
|
|
18
|
+
/^\s*!\s+/,
|
|
19
|
+
/\bSession: .*(?:AIC used|credits unavailable)/,
|
|
20
|
+
/^\s*←\s+open sidebar/,
|
|
21
|
+
/\/ commands · \? help/,
|
|
22
|
+
/^\s*[◉◎]\s+Working\b/,
|
|
23
|
+
],
|
|
24
|
+
ignore: [/^ ?❯\s*$/],
|
|
25
|
+
composer: /^ ?❯/,
|
|
26
|
+
// The right-hand scrollbar gutter, `┃` on a row (or alone on a blank one).
|
|
27
|
+
lineTrailer: /\s*[┃▐]\s*$/,
|
|
28
|
+
startup: [/Copilot v\d+\.\d+\.\d+ uses AI/, /Confirm folder trust/, /Do you trust the files in this folder/],
|
|
29
|
+
},
|
|
30
|
+
};
|
|
5
31
|
function isPromptLine(line) {
|
|
6
32
|
return /^\s*›\s*/.test(line);
|
|
7
33
|
}
|
|
@@ -258,6 +284,110 @@ function pushBlock(blocks, kind, lines) {
|
|
|
258
284
|
export function isExternalCliTranscriptMode(mode) {
|
|
259
285
|
return EXTERNAL_CLI_MODES.has(String(mode || ''));
|
|
260
286
|
}
|
|
287
|
+
/**
|
|
288
|
+
* Whether this mode's pane is a repainting full-screen TUI whose output stream is absolute cursor
|
|
289
|
+
* moves rather than lines. The segmenter needs the SCREEN for those (tmux capture-pane), because
|
|
290
|
+
* stripping the escapes from the stream concatenates every row into one run of text.
|
|
291
|
+
*/
|
|
292
|
+
export function transcriptNeedsScreenCapture(mode) {
|
|
293
|
+
return Object.prototype.hasOwnProperty.call(PANE_DIALECTS, String(mode || ''));
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* Segment a pane that has its own dialect. Everything before the first prompt is the banner (or a
|
|
297
|
+
* trust dialog) and is dropped, so a session that has not been asked anything answers "nothing
|
|
298
|
+
* yet" rather than serving its logo as a reply.
|
|
299
|
+
*
|
|
300
|
+
* The screen is all there is to read, so a long answer scrolls the prompt row off the top. When no
|
|
301
|
+
* prompt row is on screen AND no startup text is either, the session has already been asked
|
|
302
|
+
* something: the rows above the composer are the tail of the last answer, not "nothing yet".
|
|
303
|
+
*/
|
|
304
|
+
function parseDialectTranscript(cleaned, dialect) {
|
|
305
|
+
const blocks = [];
|
|
306
|
+
let kind = null;
|
|
307
|
+
let current = [];
|
|
308
|
+
const rows = cleaned.split('\n').map((row) => (dialect.lineTrailer ? row.replace(dialect.lineTrailer, '') : row));
|
|
309
|
+
// The composer sits between two rules and holds whatever is typed but not sent. That is not a
|
|
310
|
+
// prompt row: otherwise typing under a tall answer would make the answer's tail read as banner.
|
|
311
|
+
let composerIndex = -1;
|
|
312
|
+
for (let i = rows.length - 2; i > 0; i -= 1) {
|
|
313
|
+
if (dialect.composer.test(rows[i] ?? '') &&
|
|
314
|
+
isDividerOnlyLine(rows[i - 1] ?? '') &&
|
|
315
|
+
isDividerOnlyLine(rows[i + 1] ?? '')) {
|
|
316
|
+
composerIndex = i;
|
|
317
|
+
break;
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
const isComposerRow = (i) => i === composerIndex;
|
|
321
|
+
const isComposerRule = (i) => composerIndex !== -1 && (i === composerIndex - 1 || i === composerIndex + 1);
|
|
322
|
+
const hasPrompt = rows.some((row, i) => dialect.prompt.test(row) && !isComposerRow(i));
|
|
323
|
+
const startupVisible = rows.some((row) => dialect.startup.some((re) => re.test(row)));
|
|
324
|
+
let sawPrompt = !hasPrompt && !startupVisible;
|
|
325
|
+
// A rule drawn INSIDE an answer (a markdown `---`, a quoted passage between two rules) is part
|
|
326
|
+
// of the answer, so it must not end the block, or `agent read` returns only the text after the
|
|
327
|
+
// last rule. It is held until more of the same answer follows, so a rule that only separates
|
|
328
|
+
// the answer from the footer never trails it. The composer's own two rules stay boundaries.
|
|
329
|
+
let pendingRule = false;
|
|
330
|
+
const flush = () => {
|
|
331
|
+
if (sawPrompt)
|
|
332
|
+
pushBlock(blocks, kind, current);
|
|
333
|
+
kind = null;
|
|
334
|
+
current = [];
|
|
335
|
+
pendingRule = false;
|
|
336
|
+
};
|
|
337
|
+
for (const [index, line] of rows.entries()) {
|
|
338
|
+
if (kind === 'response' && isDividerOnlyLine(line) && !isComposerRule(index)) {
|
|
339
|
+
pendingRule = true;
|
|
340
|
+
continue;
|
|
341
|
+
}
|
|
342
|
+
if (isDividerOnlyLine(line) || isComposerRow(index) || dialect.ignore.some((re) => re.test(line))) {
|
|
343
|
+
flush();
|
|
344
|
+
continue;
|
|
345
|
+
}
|
|
346
|
+
const prompt = dialect.prompt.exec(line);
|
|
347
|
+
if (prompt) {
|
|
348
|
+
flush();
|
|
349
|
+
sawPrompt = true;
|
|
350
|
+
kind = 'prompt';
|
|
351
|
+
current = [dialect.promptTrailer ? prompt[1].replace(dialect.promptTrailer, '').trim() : prompt[1].trim()];
|
|
352
|
+
continue;
|
|
353
|
+
}
|
|
354
|
+
if (!sawPrompt)
|
|
355
|
+
continue;
|
|
356
|
+
if (dialect.status.some((re) => re.test(line))) {
|
|
357
|
+
if (kind !== 'status')
|
|
358
|
+
flush();
|
|
359
|
+
kind = 'status';
|
|
360
|
+
current.push(line.trim());
|
|
361
|
+
continue;
|
|
362
|
+
}
|
|
363
|
+
// A wrapped warning or tip: indented under its status row.
|
|
364
|
+
if (kind === 'status' && /^\s{3,}\S/.test(line)) {
|
|
365
|
+
current.push(line.trim());
|
|
366
|
+
continue;
|
|
367
|
+
}
|
|
368
|
+
if (!line.trim()) {
|
|
369
|
+
if (kind)
|
|
370
|
+
current.push('');
|
|
371
|
+
continue;
|
|
372
|
+
}
|
|
373
|
+
const bullet = dialect.responseBullet.exec(line);
|
|
374
|
+
if (bullet) {
|
|
375
|
+
flush();
|
|
376
|
+
kind = 'response';
|
|
377
|
+
current = [line.slice(bullet[0].length)];
|
|
378
|
+
continue;
|
|
379
|
+
}
|
|
380
|
+
if (!kind)
|
|
381
|
+
kind = 'response';
|
|
382
|
+
if (pendingRule) {
|
|
383
|
+
current.push('', '---', '');
|
|
384
|
+
pendingRule = false;
|
|
385
|
+
}
|
|
386
|
+
current.push(line);
|
|
387
|
+
}
|
|
388
|
+
flush();
|
|
389
|
+
return blocks.filter((block) => block.text.trim().length > 0);
|
|
390
|
+
}
|
|
261
391
|
export function parseExternalCliTranscript(buffer, mode) {
|
|
262
392
|
const resolvedMode = String(mode || '');
|
|
263
393
|
if (!isExternalCliTranscriptMode(resolvedMode))
|
|
@@ -265,6 +395,9 @@ export function parseExternalCliTranscript(buffer, mode) {
|
|
|
265
395
|
const cleaned = cleanTerminalTranscript(buffer);
|
|
266
396
|
if (!cleaned)
|
|
267
397
|
return [];
|
|
398
|
+
const dialect = PANE_DIALECTS[resolvedMode];
|
|
399
|
+
if (dialect)
|
|
400
|
+
return parseDialectTranscript(cleaned, dialect);
|
|
268
401
|
const lines = trimLeadingStartup(cleaned.split('\n'));
|
|
269
402
|
const blocks = [];
|
|
270
403
|
let currentKind = null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response-viewer-transcript.js","sourceRoot":"","sources":["../../src/web/response-viewer-transcript.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"response-viewer-transcript.js","sourceRoot":"","sources":["../../src/web/response-viewer-transcript.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
* only, never env values, headers or file content (a parse failure is reported by position).
|
|
11
11
|
*
|
|
12
12
|
* A CLI takes part when it is ENABLED in the registry, declares an `mcpConfig`, and is installed
|
|
13
|
-
* or already has its config file (Copilot CLI
|
|
14
|
-
* or when its config file exists); one that is enabled but absent from the machine is reported
|
|
13
|
+
* or already has its config file (Copilot CLI declares its own `mcpConfig`; with its run mode disabled it still
|
|
14
|
+
* takes part as a sync-only tool when installed or when its config file exists); one that is enabled but absent from the machine is reported
|
|
15
15
|
* `absent` and never created. Its file is located with this process's env (the env the CLIs
|
|
16
16
|
* Codeman spawns inherit), so a relocation var such as `CODEX_HOME` is followed.
|
|
17
17
|
*/
|
|
@@ -21,8 +21,8 @@ import { type McpSyncTarget } from '../../mcp-sync.js';
|
|
|
21
21
|
export declare function readMcpSyncEnabled(): Promise<boolean>;
|
|
22
22
|
/**
|
|
23
23
|
* Enabled CLIs that declare an MCP config file, in registry order (first definition wins), then the
|
|
24
|
-
* sync-only tools (src/mcp-sync-targets.ts: Copilot CLI
|
|
25
|
-
* definition wins a same-name difference.
|
|
24
|
+
* sync-only tools (src/mcp-sync-targets.ts: Copilot CLI while its run mode is disabled), which come
|
|
25
|
+
* last so a registry CLI's definition wins a same-name difference.
|
|
26
26
|
*/
|
|
27
27
|
export declare function mcpSyncTargets(availability: Record<string, boolean>): McpSyncTarget[];
|
|
28
28
|
/**
|
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
* only, never env values, headers or file content (a parse failure is reported by position).
|
|
11
11
|
*
|
|
12
12
|
* A CLI takes part when it is ENABLED in the registry, declares an `mcpConfig`, and is installed
|
|
13
|
-
* or already has its config file (Copilot CLI
|
|
14
|
-
* or when its config file exists); one that is enabled but absent from the machine is reported
|
|
13
|
+
* or already has its config file (Copilot CLI declares its own `mcpConfig`; with its run mode disabled it still
|
|
14
|
+
* takes part as a sync-only tool when installed or when its config file exists); one that is enabled but absent from the machine is reported
|
|
15
15
|
* `absent` and never created. Its file is located with this process's env (the env the CLIs
|
|
16
16
|
* Codeman spawns inherit), so a relocation var such as `CODEX_HOME` is followed.
|
|
17
17
|
*/
|
|
@@ -29,8 +29,8 @@ export async function readMcpSyncEnabled() {
|
|
|
29
29
|
}
|
|
30
30
|
/**
|
|
31
31
|
* Enabled CLIs that declare an MCP config file, in registry order (first definition wins), then the
|
|
32
|
-
* sync-only tools (src/mcp-sync-targets.ts: Copilot CLI
|
|
33
|
-
* definition wins a same-name difference.
|
|
32
|
+
* sync-only tools (src/mcp-sync-targets.ts: Copilot CLI while its run mode is disabled), which come
|
|
33
|
+
* last so a registry CLI's definition wins a same-name difference.
|
|
34
34
|
*/
|
|
35
35
|
export function mcpSyncTargets(availability) {
|
|
36
36
|
const registry = enabledClis()
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* auto-clear, auto-compact, image watcher, flicker filter, and logout.
|
|
5
5
|
*/
|
|
6
6
|
import { FastifyInstance } from 'fastify';
|
|
7
|
-
import { type SessionMode, type CodexConfig, type GeminiConfig, type AntigravityConfig, type PiConfig, type GrokConfig, type DeepSeekConfig, type OmpConfig } from '../../types.js';
|
|
7
|
+
import { type SessionMode, type CodexConfig, type GeminiConfig, type AntigravityConfig, type PiConfig, type GrokConfig, type CopilotConfig, type DeepSeekConfig, type OmpConfig } from '../../types.js';
|
|
8
8
|
import { RemoteWakeRegistry } from '../../remote-wake.js';
|
|
9
9
|
import { clampEnvOverridesForOwner } from '../../session-env-clamp.js';
|
|
10
10
|
import type { SessionPort, EventPort, ConfigPort, InfraPort, AuthPort, TabLayoutPort } from '../ports/index.js';
|
|
@@ -41,6 +41,15 @@ export declare function stripReplayBuffer(buffer: string, mode: SessionMode, use
|
|
|
41
41
|
* conversation after Claude's first render — losing 100KB+ of legitimate scrollback.
|
|
42
42
|
*/
|
|
43
43
|
export declare function stripInkRedrawBloat(buffer: string): string;
|
|
44
|
+
/**
|
|
45
|
+
* Documents a user hands an agent to read: the office formats plus the text
|
|
46
|
+
* family. Curated on purpose, never SUPPORTED_ATTACHMENT_EXTENSIONS or
|
|
47
|
+
* EDITABLE_EXTENSIONS, which carry sh/py/js/html; a prompt upload is a thing
|
|
48
|
+
* to read, not a thing to run or serve. Each is judged on its bytes by
|
|
49
|
+
* imageMagicMatchesExt (signature, or UTF-8 without NUL for text). The browser
|
|
50
|
+
* keeps its own copies (test/upload-document-list-parity.test.ts pins them).
|
|
51
|
+
*/
|
|
52
|
+
export declare const ALLOWED_DOCUMENT_EXTS: ReadonlySet<string>;
|
|
44
53
|
/**
|
|
45
54
|
* Validate upload bytes against a declared extension. Sniffs the first ~12 bytes
|
|
46
55
|
* for a known magic-number signature (a text file is instead required to be
|
|
@@ -64,13 +73,14 @@ export declare function _resetPasteRateBuckets(): void;
|
|
|
64
73
|
* named individually, so `privilegedParams` on anything outside that list was declared but
|
|
65
74
|
* unreachable.
|
|
66
75
|
*/
|
|
67
|
-
export declare function _clampExternalCliBypassForOwner(owner: string | undefined, codexConfig?: CodexConfig, geminiConfig?: GeminiConfig, antigravityConfig?: AntigravityConfig, piConfig?: PiConfig, grokConfig?: GrokConfig, deepSeekConfig?: DeepSeekConfig): Promise<{
|
|
76
|
+
export declare function _clampExternalCliBypassForOwner(owner: string | undefined, codexConfig?: CodexConfig, geminiConfig?: GeminiConfig, antigravityConfig?: AntigravityConfig, piConfig?: PiConfig, grokConfig?: GrokConfig, deepSeekConfig?: DeepSeekConfig, copilotConfig?: CopilotConfig): Promise<{
|
|
68
77
|
codexConfig: CodexConfig | undefined;
|
|
69
78
|
geminiConfig: GeminiConfig | undefined;
|
|
70
79
|
antigravityConfig: AntigravityConfig | undefined;
|
|
71
80
|
piConfig: PiConfig | undefined;
|
|
72
81
|
grokConfig: GrokConfig | undefined;
|
|
73
82
|
deepSeekConfig: DeepSeekConfig | undefined;
|
|
83
|
+
copilotConfig: CopilotConfig | undefined;
|
|
74
84
|
}>;
|
|
75
85
|
/** Test hook: the env-var half of the same multi-user safety gate. */
|
|
76
86
|
export declare const _clampEnvOverridesForOwner: typeof clampEnvOverridesForOwner;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-routes.d.ts","sourceRoot":"","sources":["../../../src/web/routes/session-routes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAqB,MAAM,SAAS,CAAC;AAW7D,OAAO,EAOL,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,SAAS,EAEf,MAAM,gBAAgB,CAAC;AAsDxB,OAAO,EACL,kBAAkB,EAKnB,MAAM,sBAAsB,CAAC;AAwB9B,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AAuCvE,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"session-routes.d.ts","sourceRoot":"","sources":["../../../src/web/routes/session-routes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAqB,MAAM,SAAS,CAAC;AAW7D,OAAO,EAOL,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,SAAS,EAEf,MAAM,gBAAgB,CAAC;AAsDxB,OAAO,EACL,kBAAkB,EAKnB,MAAM,sBAAsB,CAAC;AAwB9B,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AAuCvE,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAkFhH;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAY7F;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CA0C1D;AAQD;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,EAAE,WAAW,CAAC,MAAM,CAOpD,CAAC;AAEH;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CA0DvE;AAmHD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,GAAE,MAAmB,GAAG,OAAO,CAEhF;AAID,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,GAAE,MAAmB,GAAG,OAAO,CAEhF;AAGD,wBAAgB,sBAAsB,IAAI,IAAI,CAG7C;AAoED;;;;;;;GAOG;AACH,wBAAsB,+BAA+B,CACnD,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,WAAW,CAAC,EAAE,WAAW,EACzB,YAAY,CAAC,EAAE,YAAY,EAC3B,iBAAiB,CAAC,EAAE,iBAAiB,EACrC,QAAQ,CAAC,EAAE,QAAQ,EACnB,UAAU,CAAC,EAAE,UAAU,EACvB,cAAc,CAAC,EAAE,cAAc,EAC/B,aAAa,CAAC,EAAE,aAAa,GAC5B,OAAO,CAAC;IACT,WAAW,EAAE,WAAW,GAAG,SAAS,CAAC;IACrC,YAAY,EAAE,YAAY,GAAG,SAAS,CAAC;IACvC,iBAAiB,EAAE,iBAAiB,GAAG,SAAS,CAAC;IACjD,QAAQ,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC/B,UAAU,EAAE,UAAU,GAAG,SAAS,CAAC;IACnC,cAAc,EAAE,cAAc,GAAG,SAAS,CAAC;IAC3C,aAAa,EAAE,aAAa,GAAG,SAAS,CAAC;CAC1C,CAAC,CAmBD;AAED,sEAAsE;AACtE,eAAO,MAAM,0BAA0B,kCAA4B,CAAC;AAmNpE,2FAA2F;AAC3F,wBAAgB,uBAAuB,IAAI,IAAI,CAI9C;AAED,+EAA+E;AAC/E,wBAAgB,sBAAsB,IAAI,MAAM,CAE/C;AA2ED;;;;;;;;;;;GAWG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,WAAW,EACjB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,SAAS,GAAG,SAAS,GAC/B,SAAS,GAAG,SAAS,CAYvB;AAoCD,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,WAAW,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,aAAa;AAChF,oFAAoF;AACpF,OAAO,GAAE;IAAE,UAAU,CAAC,EAAE,kBAAkB,CAAA;CAAO,GAChD,kBAAkB,CA+rJpB"}
|
|
@@ -58,7 +58,7 @@ import { describeUnknownPath, probePathKind } from '../../utils/index.js';
|
|
|
58
58
|
import { findLatestOmpSessionId } from '../../utils/omp-session-resolver.js';
|
|
59
59
|
import { scanOmpSessionsHistory } from '../../omp-transcript.js';
|
|
60
60
|
import { scanCodexSessionsHistory, codexThreadBySessionId } from '../../codex-transcript.js';
|
|
61
|
-
import { getLastTranscriptResponse, isExternalCliTranscriptMode, parseExternalCliTranscript, selectLastAnsweredTurn, } from '../response-viewer-transcript.js';
|
|
61
|
+
import { transcriptNeedsScreenCapture, getLastTranscriptResponse, isExternalCliTranscriptMode, parseExternalCliTranscript, selectLastAnsweredTurn, } from '../response-viewer-transcript.js';
|
|
62
62
|
import { readDeepSeekLastResponse } from '../../deepseek-transcript.js';
|
|
63
63
|
import { appendClaudeCustomTitle } from '../../claude-session-title.js';
|
|
64
64
|
import { UPLOADS_DIR } from '../paste-image-gc.js';
|
|
@@ -189,6 +189,22 @@ export function stripInkRedrawBloat(buffer) {
|
|
|
189
189
|
* (valid UTF-8, no NUL byte) rather than on a signature, since plain text has none.
|
|
190
190
|
*/
|
|
191
191
|
const TEXT_UPLOAD_EXTS = new Set(['.txt', '.md', '.csv', '.tsv', '.json', '.log', '.yaml', '.yml', '.xml']);
|
|
192
|
+
/**
|
|
193
|
+
* Documents a user hands an agent to read: the office formats plus the text
|
|
194
|
+
* family. Curated on purpose, never SUPPORTED_ATTACHMENT_EXTENSIONS or
|
|
195
|
+
* EDITABLE_EXTENSIONS, which carry sh/py/js/html; a prompt upload is a thing
|
|
196
|
+
* to read, not a thing to run or serve. Each is judged on its bytes by
|
|
197
|
+
* imageMagicMatchesExt (signature, or UTF-8 without NUL for text). The browser
|
|
198
|
+
* keeps its own copies (test/upload-document-list-parity.test.ts pins them).
|
|
199
|
+
*/
|
|
200
|
+
export const ALLOWED_DOCUMENT_EXTS = new Set([
|
|
201
|
+
'.pdf',
|
|
202
|
+
'.docx',
|
|
203
|
+
'.pptx',
|
|
204
|
+
'.xlsx',
|
|
205
|
+
'.zip',
|
|
206
|
+
...TEXT_UPLOAD_EXTS,
|
|
207
|
+
]);
|
|
192
208
|
/**
|
|
193
209
|
* Validate upload bytes against a declared extension. Sniffs the first ~12 bytes
|
|
194
210
|
* for a known magic-number signature (a text file is instead required to be
|
|
@@ -456,7 +472,7 @@ async function clampExternalCliBypassForOwner(owner, configs) {
|
|
|
456
472
|
* named individually, so `privilegedParams` on anything outside that list was declared but
|
|
457
473
|
* unreachable.
|
|
458
474
|
*/
|
|
459
|
-
export async function _clampExternalCliBypassForOwner(owner, codexConfig, geminiConfig, antigravityConfig, piConfig, grokConfig, deepSeekConfig) {
|
|
475
|
+
export async function _clampExternalCliBypassForOwner(owner, codexConfig, geminiConfig, antigravityConfig, piConfig, grokConfig, deepSeekConfig, copilotConfig) {
|
|
460
476
|
const out = await clampExternalCliBypassForOwner(owner, {
|
|
461
477
|
codexConfig,
|
|
462
478
|
geminiConfig,
|
|
@@ -464,6 +480,7 @@ export async function _clampExternalCliBypassForOwner(owner, codexConfig, gemini
|
|
|
464
480
|
piConfig,
|
|
465
481
|
grokConfig,
|
|
466
482
|
deepSeekConfig,
|
|
483
|
+
copilotConfig,
|
|
467
484
|
});
|
|
468
485
|
return out;
|
|
469
486
|
}
|
|
@@ -1102,7 +1119,7 @@ options = {}) {
|
|
|
1102
1119
|
// Section 6.3: force non-granted users to a classifier-guarded mode.
|
|
1103
1120
|
const effectiveClaudeMode = await resolveClaudeModeForUsername(claudeModeConfig.claudeMode, owner);
|
|
1104
1121
|
// Section 6.3: clamp Codex/Gemini/Antigravity bypass switches for a non-granted owner (no-op single-user/granted).
|
|
1105
|
-
const { codexConfig: gatedCodexConfig, geminiConfig: gatedGeminiConfig, antigravityConfig: gatedAntigravityConfig, piConfig: gatedPiConfig, grokConfig: gatedGrokConfig, deepSeekConfig: gatedDeepSeekConfig, } = await _clampExternalCliBypassForOwner(owner, launchBody.codexConfig, launchBody.geminiConfig, launchBody.antigravityConfig, launchBody.piConfig, launchBody.grokConfig, launchBody.deepSeekConfig);
|
|
1122
|
+
const { codexConfig: gatedCodexConfig, geminiConfig: gatedGeminiConfig, antigravityConfig: gatedAntigravityConfig, piConfig: gatedPiConfig, grokConfig: gatedGrokConfig, deepSeekConfig: gatedDeepSeekConfig, copilotConfig: gatedCopilotConfig, } = await _clampExternalCliBypassForOwner(owner, launchBody.codexConfig, launchBody.geminiConfig, launchBody.antigravityConfig, launchBody.piConfig, launchBody.grokConfig, launchBody.deepSeekConfig, launchBody.copilotConfig);
|
|
1106
1123
|
const terminalHistoryConfig = await ctx.getTerminalHistoryConfig();
|
|
1107
1124
|
const session = new Session({
|
|
1108
1125
|
workingDir,
|
|
@@ -1120,6 +1137,7 @@ options = {}) {
|
|
|
1120
1137
|
antigravityConfig: mode === 'antigravity' ? gatedAntigravityConfig : undefined,
|
|
1121
1138
|
piConfig: mode === 'pi' ? gatedPiConfig : undefined,
|
|
1122
1139
|
grokConfig: mode === 'grok' ? gatedGrokConfig : undefined,
|
|
1140
|
+
copilotConfig: mode === 'copilot' ? gatedCopilotConfig : undefined,
|
|
1123
1141
|
deepSeekConfig: mode === 'deepseek' ? gatedDeepSeekConfig : undefined,
|
|
1124
1142
|
ompConfig: resolveOmpConfigForCreate(mode, workingDir, launchBody.ompConfig),
|
|
1125
1143
|
resumeSessionId: validatedResumeId,
|
|
@@ -2417,7 +2435,13 @@ options = {}) {
|
|
|
2417
2435
|
// where a real rollout file is the better source.
|
|
2418
2436
|
if (isExternalCliTranscriptMode(session.mode)) {
|
|
2419
2437
|
const externalQuery = req.query;
|
|
2420
|
-
|
|
2438
|
+
// A repainting full-screen TUI (copilot) streams absolute cursor moves, not lines, so the
|
|
2439
|
+
// buffer cannot be segmented; read the pane's visible screen instead, and fall back to the
|
|
2440
|
+
// buffer when there is no tmux pane to ask (direct PTY, tests).
|
|
2441
|
+
const screen = transcriptNeedsScreenCapture(session.mode) && session.muxName
|
|
2442
|
+
? (ctx.mux.capturePaneText?.(session.muxName) ?? null)
|
|
2443
|
+
: null;
|
|
2444
|
+
const blocks = parseExternalCliTranscript(screen ?? session.terminalBuffer, session.mode);
|
|
2421
2445
|
return {
|
|
2422
2446
|
text: getLastTranscriptResponse(blocks),
|
|
2423
2447
|
timestamp: '',
|
|
@@ -3227,7 +3251,7 @@ options = {}) {
|
|
|
3227
3251
|
const capMsg = sessionCapacityMessage(ctx.sessions, owner);
|
|
3228
3252
|
if (capMsg)
|
|
3229
3253
|
return createErrorResponse(ApiErrorCode.SESSION_BUSY, capMsg);
|
|
3230
|
-
const { caseName = 'testcase', sessionName, mode = 'claude', modelOverride, openCodeConfig, codexConfig, geminiConfig, antigravityConfig, piConfig, grokConfig, deepSeekConfig, ompConfig, envOverrides, effort, advisorModel, parentSessionId, agentOrigin, customModel, tabGroupId, worktree, } = parseBody(QuickStartSchema, req.body);
|
|
3254
|
+
const { caseName = 'testcase', sessionName, mode = 'claude', modelOverride, openCodeConfig, codexConfig, geminiConfig, antigravityConfig, piConfig, grokConfig, copilotConfig, deepSeekConfig, ompConfig, envOverrides, effort, advisorModel, parentSessionId, agentOrigin, customModel, tabGroupId, worktree, } = parseBody(QuickStartSchema, req.body);
|
|
3231
3255
|
// Resolved ONCE here: the same value labels a case directory this request creates
|
|
3232
3256
|
// (agent-case-marker.ts) and draws the tab lineage line on the session below.
|
|
3233
3257
|
const qsParentSessionId = resolveParentSessionId(ctx, req, parentSessionId, owner);
|
|
@@ -3277,6 +3301,7 @@ options = {}) {
|
|
|
3277
3301
|
antigravityConfig ||
|
|
3278
3302
|
piConfig ||
|
|
3279
3303
|
grokConfig ||
|
|
3304
|
+
copilotConfig ||
|
|
3280
3305
|
deepSeekConfig ||
|
|
3281
3306
|
ompConfig ||
|
|
3282
3307
|
openCodeConfig ||
|
|
@@ -3335,6 +3360,7 @@ options = {}) {
|
|
|
3335
3360
|
antigravityConfig ||
|
|
3336
3361
|
piConfig ||
|
|
3337
3362
|
grokConfig ||
|
|
3363
|
+
copilotConfig ||
|
|
3338
3364
|
deepSeekConfig ||
|
|
3339
3365
|
ompConfig ||
|
|
3340
3366
|
openCodeConfig ||
|
|
@@ -3419,6 +3445,7 @@ options = {}) {
|
|
|
3419
3445
|
antigravityConfig,
|
|
3420
3446
|
piConfig,
|
|
3421
3447
|
grokConfig,
|
|
3448
|
+
copilotConfig,
|
|
3422
3449
|
deepSeekConfig,
|
|
3423
3450
|
}));
|
|
3424
3451
|
if (qsLaunchError) {
|
|
@@ -3605,6 +3632,7 @@ options = {}) {
|
|
|
3605
3632
|
antigravityConfig,
|
|
3606
3633
|
piConfig,
|
|
3607
3634
|
grokConfig,
|
|
3635
|
+
copilotConfig,
|
|
3608
3636
|
deepSeekConfig,
|
|
3609
3637
|
ompConfig,
|
|
3610
3638
|
};
|
|
@@ -3623,7 +3651,7 @@ options = {}) {
|
|
|
3623
3651
|
const qsClaudeModeConfig = await ctx.getClaudeModeConfig();
|
|
3624
3652
|
const qsEffectiveClaudeMode = await resolveClaudeModeForUsername(qsClaudeModeConfig.claudeMode, owner);
|
|
3625
3653
|
// Section 6.3: clamp Codex/Gemini/Antigravity bypass switches for a non-granted owner (no-op single-user/granted).
|
|
3626
|
-
const { codexConfig: qsGatedCodexConfig, geminiConfig: qsGatedGeminiConfig, antigravityConfig: qsGatedAntigravityConfig, piConfig: qsGatedPiConfig, grokConfig: qsGatedGrokConfig, deepSeekConfig: qsGatedDeepSeekConfig, } = await _clampExternalCliBypassForOwner(owner, qsLaunchConfigs.codexConfig, qsLaunchConfigs.geminiConfig, qsLaunchConfigs.antigravityConfig, qsLaunchConfigs.piConfig, qsLaunchConfigs.grokConfig, qsLaunchConfigs.deepSeekConfig);
|
|
3654
|
+
const { codexConfig: qsGatedCodexConfig, geminiConfig: qsGatedGeminiConfig, antigravityConfig: qsGatedAntigravityConfig, piConfig: qsGatedPiConfig, grokConfig: qsGatedGrokConfig, deepSeekConfig: qsGatedDeepSeekConfig, copilotConfig: qsGatedCopilotConfig, } = await _clampExternalCliBypassForOwner(owner, qsLaunchConfigs.codexConfig, qsLaunchConfigs.geminiConfig, qsLaunchConfigs.antigravityConfig, qsLaunchConfigs.piConfig, qsLaunchConfigs.grokConfig, qsLaunchConfigs.deepSeekConfig, qsLaunchConfigs.copilotConfig);
|
|
3627
3655
|
const qsTerminalHistoryConfig = await ctx.getTerminalHistoryConfig();
|
|
3628
3656
|
const qsGatedEnvOverrides = await clampEnvOverridesForOwner(owner, envOverrides);
|
|
3629
3657
|
const qsResolvedOmpConfig = resolveOmpConfigForCreate(mode, workspacePath, qsLaunchOmpConfig);
|
|
@@ -3758,6 +3786,7 @@ options = {}) {
|
|
|
3758
3786
|
antigravityConfig: mode === 'antigravity' ? qsGatedAntigravityConfig : undefined,
|
|
3759
3787
|
piConfig: mode === 'pi' ? qsGatedPiConfig : undefined,
|
|
3760
3788
|
grokConfig: mode === 'grok' ? qsGatedGrokConfig : undefined,
|
|
3789
|
+
copilotConfig: mode === 'copilot' ? qsGatedCopilotConfig : undefined,
|
|
3761
3790
|
deepSeekConfig: mode === 'deepseek' ? qsGatedDeepSeekConfig : undefined,
|
|
3762
3791
|
ompConfig: qsResolvedOmpConfig,
|
|
3763
3792
|
envOverrides: qsCustomModelEnvOverrides,
|
|
@@ -4782,12 +4811,6 @@ options = {}) {
|
|
|
4782
4811
|
// so an uploaded video is a type that previews. 3gp/mkv are deliberately out: they
|
|
4783
4812
|
// would upload but not preview, and a phone's camera roll produces neither.
|
|
4784
4813
|
const ALLOWED_VIDEO_EXTS = new Set([...VIDEO_ATTACHMENT_EXTENSIONS].map((e) => `.${e}`));
|
|
4785
|
-
// Documents a user hands an agent to read: the office formats plus the text
|
|
4786
|
-
// family. Curated on purpose, never SUPPORTED_ATTACHMENT_EXTENSIONS or
|
|
4787
|
-
// EDITABLE_EXTENSIONS, which carry sh/py/js/html; a prompt upload is a thing
|
|
4788
|
-
// to read, not a thing to run or serve. Each is judged on its bytes by
|
|
4789
|
-
// imageMagicMatchesExt (signature, or UTF-8 without NUL for text).
|
|
4790
|
-
const ALLOWED_DOCUMENT_EXTS = new Set(['.pdf', '.docx', '.pptx', '.xlsx', '.zip', ...TEXT_UPLOAD_EXTS]);
|
|
4791
4814
|
const VIDEO_MIME_EXT = {
|
|
4792
4815
|
mp4: '.mp4',
|
|
4793
4816
|
quicktime: '.mov',
|
|
@@ -5006,12 +5029,19 @@ options = {}) {
|
|
|
5006
5029
|
if (!imageMagicMatchesExt(imageBytes, origExt)) {
|
|
5007
5030
|
// The first bytes of a text file are user content, so for text the log
|
|
5008
5031
|
// names the failure and never the bytes; a signature is safe to print.
|
|
5009
|
-
|
|
5010
|
-
|
|
5032
|
+
// A text refusal names the encoding, since an Excel or Notepad export
|
|
5033
|
+
// (UTF-16 with a BOM, or Windows-1252) is not a corrupt file.
|
|
5034
|
+
const isText = TEXT_UPLOAD_EXTS.has(origExt);
|
|
5035
|
+
const bom = imageBytes.length >= 2 ? imageBytes.readUInt16BE(0) : 0;
|
|
5036
|
+
const utf16 = bom === 0xfffe || bom === 0xfeff;
|
|
5037
|
+
const detail = isText
|
|
5038
|
+
? `reason=${utf16 ? 'utf16-bom' : imageBytes.includes(0) ? 'nul-byte' : 'not-utf8'}`
|
|
5011
5039
|
: `magic=${imageBytes.subarray(0, 12).toString('hex')}`;
|
|
5012
5040
|
console.warn(`[paste-image] document mismatch: filename=${JSON.stringify(part.filename)} mime=${JSON.stringify(part.mimetype)} declaredExt=${origExt} size=${imageBytes.length} ${detail}`);
|
|
5013
5041
|
reply.code(415);
|
|
5014
|
-
return createErrorResponse(ApiErrorCode.INVALID_INPUT,
|
|
5042
|
+
return createErrorResponse(ApiErrorCode.INVALID_INPUT, isText
|
|
5043
|
+
? `This ${origExt} file is ${utf16 ? 'UTF-16 text, not UTF-8' : 'not UTF-8 text'}; save it as UTF-8 and attach it again`
|
|
5044
|
+
: `File bytes do not match declared type ${origExt}`);
|
|
5015
5045
|
}
|
|
5016
5046
|
const saved = await writeBufferedUpload(session.workingDir, origExt, imageBytes, sanitizeUploadStem(part.filename));
|
|
5017
5047
|
if (!saved) {
|