@redplanethq/corebrain 2.8.25 → 2.8.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/coding/read.d.ts.map +1 -1
- package/dist/commands/coding/read.js +7 -1
- package/dist/commands/coding/read.js.map +1 -1
- package/dist/server/api/auth.d.ts +18 -2
- package/dist/server/api/auth.d.ts.map +1 -1
- package/dist/server/api/auth.js +83 -3
- package/dist/server/api/auth.js.map +1 -1
- package/dist/server/api/coding/coding_spawn.d.ts.map +1 -1
- package/dist/server/api/coding/coding_spawn.js +8 -0
- package/dist/server/api/coding/coding_spawn.js.map +1 -1
- package/dist/server/api/manifest-builder.d.ts.map +1 -1
- package/dist/server/api/manifest-builder.js +5 -0
- package/dist/server/api/manifest-builder.js.map +1 -1
- package/dist/server/coding-session-watcher.d.ts +41 -0
- package/dist/server/coding-session-watcher.d.ts.map +1 -0
- package/dist/server/coding-session-watcher.js +311 -0
- package/dist/server/coding-session-watcher.js.map +1 -0
- package/dist/server/tools/coding-tools.d.ts.map +1 -1
- package/dist/server/tools/coding-tools.js +119 -16
- package/dist/server/tools/coding-tools.js.map +1 -1
- package/dist/utils/agent-templates.d.ts.map +1 -1
- package/dist/utils/agent-templates.js +21 -0
- package/dist/utils/agent-templates.js.map +1 -1
- package/dist/utils/coding-agents/claude-code.d.ts +1 -0
- package/dist/utils/coding-agents/claude-code.d.ts.map +1 -1
- package/dist/utils/coding-agents/claude-code.js +6 -0
- package/dist/utils/coding-agents/claude-code.js.map +1 -1
- package/dist/utils/coding-agents/codex.d.ts +1 -0
- package/dist/utils/coding-agents/codex.d.ts.map +1 -1
- package/dist/utils/coding-agents/codex.js +5 -0
- package/dist/utils/coding-agents/codex.js.map +1 -1
- package/dist/utils/coding-agents/index.d.ts +3 -2
- package/dist/utils/coding-agents/index.d.ts.map +1 -1
- package/dist/utils/coding-agents/index.js +28 -12
- package/dist/utils/coding-agents/index.js.map +1 -1
- package/dist/utils/coding-agents/opencode.d.ts +20 -0
- package/dist/utils/coding-agents/opencode.d.ts.map +1 -0
- package/dist/utils/coding-agents/opencode.js +375 -0
- package/dist/utils/coding-agents/opencode.js.map +1 -0
- package/dist/utils/coding-agents/types.d.ts +6 -0
- package/dist/utils/coding-agents/types.d.ts.map +1 -1
- package/dist/utils/coding-agents/types.js.map +1 -1
- package/package.json +1 -1
- package/dist/assets/assets/AppIcon.icns +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../../src/commands/coding/read.tsx"],"names":[],"mappings":"AAIA,OAAO,GAAG,MAAM,KAAK,CAAC;AAKtB,eAAO,MAAM,OAAO;;;mBAGlB,CAAC;AAEH,KAAK,KAAK,GAAG;IACZ,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;CACnC,CAAC;
|
|
1
|
+
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../../src/commands/coding/read.tsx"],"names":[],"mappings":"AAIA,OAAO,GAAG,MAAM,KAAK,CAAC;AAKtB,eAAO,MAAM,OAAO;;;mBAGlB,CAAC;AAEH,KAAK,KAAK,GAAG;IACZ,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;CACnC,CAAC;AAsIF,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EAAC,OAAO,EAAE,IAAI,EAAC,EAAE,KAAK,QAUxD"}
|
|
@@ -82,7 +82,13 @@ async function runReadSession(opts) {
|
|
|
82
82
|
const res = await readOnce();
|
|
83
83
|
if (!res)
|
|
84
84
|
return;
|
|
85
|
-
const statusColor = res.status === '
|
|
85
|
+
const statusColor = res.status === 'working'
|
|
86
|
+
? chalk.yellow
|
|
87
|
+
: res.status === 'idle'
|
|
88
|
+
? chalk.blue
|
|
89
|
+
: res.status === 'ended'
|
|
90
|
+
? chalk.green
|
|
91
|
+
: chalk.red;
|
|
86
92
|
console.log(chalk.dim(`--- Session ${res.sessionId.slice(0, 8)} | ${statusColor(res.status)} ---`));
|
|
87
93
|
console.log(chalk.dim(`Turns: ${res.turns.length} | Size: ${res.fileSizeHuman} | Dir: ${res.dir}`));
|
|
88
94
|
console.log();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read.js","sourceRoot":"","sources":["../../../src/commands/coding/read.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"read.js","sourceRoot":"","sources":["../../../src/commands/coding/read.tsx"],"names":[],"mappings":"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"}
|
|
@@ -8,10 +8,26 @@ export declare function generateSecurityKey(): string;
|
|
|
8
8
|
export declare function verifySecurityKey(rawToken: string | undefined): boolean;
|
|
9
9
|
/** Extract the bearer token from an Authorization header, or null. */
|
|
10
10
|
export declare function extractBearer(header: string | undefined): string | null;
|
|
11
|
+
/**
|
|
12
|
+
* Verify a short-lived xterm WS ticket. Ticket format:
|
|
13
|
+
*
|
|
14
|
+
* base64url(JSON({sid, exp})) "." base64url(HMAC-SHA256(hmacKey, payload))
|
|
15
|
+
*
|
|
16
|
+
* `hmacKey` is the gateway's stored `securityKeyHash` (hex string of
|
|
17
|
+
* sha256(rawKey)) — the webapp recomputes the same value from the raw key it
|
|
18
|
+
* decrypted from its DB, so both sides arrive at the same MAC key without
|
|
19
|
+
* having to share a separate secret.
|
|
20
|
+
*
|
|
21
|
+
* The ticket is bound to a single PTY: the caller must pass the `session_id`
|
|
22
|
+
* the WS is attaching to so we can reject tickets minted for a different
|
|
23
|
+
* session. Expiry is checked with a small (+5s) skew tolerance.
|
|
24
|
+
*/
|
|
25
|
+
export declare function verifyTicket(rawTicket: string | undefined, sessionId: string): boolean;
|
|
11
26
|
/**
|
|
12
27
|
* Fastify onRequest hook. Skips authentication for paths in `skip`
|
|
13
|
-
* (e.g. `/healthz/public`).
|
|
14
|
-
*
|
|
28
|
+
* (e.g. `/healthz/public`). On `TICKET_PATHS` requests may authenticate
|
|
29
|
+
* via `?ticket=…&session_id=…`; every other request must present a valid
|
|
30
|
+
* Bearer securityKey — there is no loopback bypass.
|
|
15
31
|
*/
|
|
16
32
|
export declare function makeAuthHook(skip?: string[]): (req: FastifyRequest, reply: FastifyReply) => Promise<void>;
|
|
17
33
|
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/server/api/auth.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,cAAc,EAAE,YAAY,EAAC,MAAM,SAAS,CAAC;AAG1D,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE3C;AAED,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAQvE;AAED,sEAAsE;AACtE,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAGvE;AAED
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/server/api/auth.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,cAAc,EAAE,YAAY,EAAC,MAAM,SAAS,CAAC;AAG1D,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE3C;AAED,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAQvE;AAED,sEAAsE;AACtE,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAGvE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAC3B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,SAAS,EAAE,MAAM,GACf,OAAO,CAoCT;AAWD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,GAAE,MAAM,EAAwB,IACjC,KAAK,cAAc,EAAE,OAAO,YAAY,mBAyBvE"}
|
package/dist/server/api/auth.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createHash, timingSafeEqual, randomBytes } from 'node:crypto';
|
|
1
|
+
import { createHash, createHmac, timingSafeEqual, randomBytes } from 'node:crypto';
|
|
2
2
|
import { getPreferences } from '../../config/preferences.js';
|
|
3
3
|
export function hashKey(key) {
|
|
4
4
|
return createHash('sha256').update(key).digest('hex');
|
|
@@ -27,15 +27,95 @@ export function extractBearer(header) {
|
|
|
27
27
|
return null;
|
|
28
28
|
return header.slice('Bearer '.length).trim();
|
|
29
29
|
}
|
|
30
|
+
/**
|
|
31
|
+
* Verify a short-lived xterm WS ticket. Ticket format:
|
|
32
|
+
*
|
|
33
|
+
* base64url(JSON({sid, exp})) "." base64url(HMAC-SHA256(hmacKey, payload))
|
|
34
|
+
*
|
|
35
|
+
* `hmacKey` is the gateway's stored `securityKeyHash` (hex string of
|
|
36
|
+
* sha256(rawKey)) — the webapp recomputes the same value from the raw key it
|
|
37
|
+
* decrypted from its DB, so both sides arrive at the same MAC key without
|
|
38
|
+
* having to share a separate secret.
|
|
39
|
+
*
|
|
40
|
+
* The ticket is bound to a single PTY: the caller must pass the `session_id`
|
|
41
|
+
* the WS is attaching to so we can reject tickets minted for a different
|
|
42
|
+
* session. Expiry is checked with a small (+5s) skew tolerance.
|
|
43
|
+
*/
|
|
44
|
+
export function verifyTicket(rawTicket, sessionId) {
|
|
45
|
+
if (!rawTicket || !sessionId)
|
|
46
|
+
return false;
|
|
47
|
+
const hmacKey = getPreferences().gateway?.securityKeyHash;
|
|
48
|
+
if (!hmacKey)
|
|
49
|
+
return false;
|
|
50
|
+
const dot = rawTicket.indexOf('.');
|
|
51
|
+
if (dot <= 0 || dot === rawTicket.length - 1)
|
|
52
|
+
return false;
|
|
53
|
+
const payloadB64 = rawTicket.slice(0, dot);
|
|
54
|
+
const sigB64 = rawTicket.slice(dot + 1);
|
|
55
|
+
const expected = createHmac('sha256', hmacKey).update(payloadB64).digest();
|
|
56
|
+
let provided;
|
|
57
|
+
try {
|
|
58
|
+
provided = Buffer.from(sigB64, 'base64url');
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
if (provided.length !== expected.length)
|
|
64
|
+
return false;
|
|
65
|
+
if (!timingSafeEqual(provided, expected))
|
|
66
|
+
return false;
|
|
67
|
+
let payload;
|
|
68
|
+
try {
|
|
69
|
+
payload = JSON.parse(Buffer.from(payloadB64, 'base64url').toString('utf8'));
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
return false;
|
|
73
|
+
}
|
|
74
|
+
if (typeof payload.sid !== 'string' || typeof payload.exp !== 'number') {
|
|
75
|
+
return false;
|
|
76
|
+
}
|
|
77
|
+
if (payload.sid !== sessionId)
|
|
78
|
+
return false;
|
|
79
|
+
// 5s skew tolerance for clock drift between webapp and gateway hosts.
|
|
80
|
+
if (payload.exp + 5_000 < Date.now())
|
|
81
|
+
return false;
|
|
82
|
+
return true;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Paths where `?ticket=…` is accepted in lieu of `Authorization: Bearer`.
|
|
86
|
+
* Kept tiny and explicit — the ticket auth path is only for browser-direct
|
|
87
|
+
* WebSocket attaches; every other route still requires the full security key.
|
|
88
|
+
*/
|
|
89
|
+
const TICKET_PATHS = new Set([
|
|
90
|
+
'/api/coding/coding_xterm_session',
|
|
91
|
+
]);
|
|
30
92
|
/**
|
|
31
93
|
* Fastify onRequest hook. Skips authentication for paths in `skip`
|
|
32
|
-
* (e.g. `/healthz/public`).
|
|
33
|
-
*
|
|
94
|
+
* (e.g. `/healthz/public`). On `TICKET_PATHS` requests may authenticate
|
|
95
|
+
* via `?ticket=…&session_id=…`; every other request must present a valid
|
|
96
|
+
* Bearer securityKey — there is no loopback bypass.
|
|
34
97
|
*/
|
|
35
98
|
export function makeAuthHook(skip = ['/healthz/public']) {
|
|
36
99
|
return async function authHook(req, reply) {
|
|
37
100
|
if (skip.some((s) => req.url === s || req.url.startsWith(s + '?')))
|
|
38
101
|
return;
|
|
102
|
+
// Ticket auth for the browser-direct xterm WS. A request that targets
|
|
103
|
+
// a TICKET_PATH and supplies `?ticket=…` is verified via HMAC instead
|
|
104
|
+
// of Bearer — the browser never sees the gateway's raw securityKey.
|
|
105
|
+
const pathOnly = req.url.split('?')[0] ?? req.url;
|
|
106
|
+
if (TICKET_PATHS.has(pathOnly)) {
|
|
107
|
+
const q = req.query;
|
|
108
|
+
if (q?.ticket) {
|
|
109
|
+
if (verifyTicket(q.ticket, q.session_id ?? ''))
|
|
110
|
+
return;
|
|
111
|
+
reply.code(401).send({
|
|
112
|
+
ok: false,
|
|
113
|
+
error: { code: 'UNAUTHORIZED', message: 'invalid or expired ticket' },
|
|
114
|
+
});
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
// no ticket present → fall through to Bearer (legacy webapp proxy path)
|
|
118
|
+
}
|
|
39
119
|
const token = extractBearer(req.headers['authorization']);
|
|
40
120
|
if (!verifySecurityKey(token ?? undefined)) {
|
|
41
121
|
reply.code(401).send({ ok: false, error: { code: 'UNAUTHORIZED', message: 'invalid or missing security key' } });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/server/api/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAE,eAAe,EAAE,WAAW,EAAC,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/server/api/auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coding_spawn.d.ts","sourceRoot":"","sources":["../../../../src/server/api/coding/coding_spawn.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"coding_spawn.d.ts","sourceRoot":"","sources":["../../../../src/server/api/coding/coding_spawn.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,SAAS,CAAC;AAgBhD;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,gBAAgB,EAAE,kBA8H9B,CAAC"}
|
|
@@ -6,6 +6,7 @@ import { listFolders, resolveFolderForPath } from '../../../config/folders.js';
|
|
|
6
6
|
import { ptyManager } from '../../../server/pty/manager.js';
|
|
7
7
|
import { findLatestCodexSession } from '../../../utils/coding-agents/index.js';
|
|
8
8
|
import { gatewayLog } from '../../../server/gateway-log.js';
|
|
9
|
+
import { startCodingSessionWatcher } from '../../../server/coding-session-watcher.js';
|
|
9
10
|
/**
|
|
10
11
|
* Spawn (or resume) a coding agent's interactive TUI so the xterm WS has a
|
|
11
12
|
* PTY to attach to. This is a webapp-only primitive — LLM callers use
|
|
@@ -110,6 +111,13 @@ export const codingSpawnRoute = async (app) => {
|
|
|
110
111
|
});
|
|
111
112
|
}
|
|
112
113
|
}
|
|
114
|
+
// Register turn-ended watcher so the webapp can refresh the linked
|
|
115
|
+
// task's title/description as each turn completes.
|
|
116
|
+
startCodingSessionWatcher({
|
|
117
|
+
sessionId,
|
|
118
|
+
agentName: body.agent,
|
|
119
|
+
dir: body.dir,
|
|
120
|
+
});
|
|
113
121
|
return {
|
|
114
122
|
ok: true,
|
|
115
123
|
sessionId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coding_spawn.js","sourceRoot":"","sources":["../../../../src/server/api/coding/coding_spawn.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,UAAU,EAAC,MAAM,aAAa,CAAC;AACvC,OAAO,EAAC,UAAU,EAAC,MAAM,SAAS,CAAC;AACnC,OAAO,EACN,cAAc,EACd,cAAc,EACd,eAAe,EACf,iBAAiB,GACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAC,aAAa,EAAE,aAAa,EAAa,MAAM,yBAAyB,CAAC;AACjF,OAAO,EAAC,WAAW,EAAE,oBAAoB,EAAC,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAC,UAAU,EAAC,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAC,sBAAsB,EAAkB,MAAM,uBAAuB,CAAC;AAC9E,OAAO,EAAC,UAAU,EAAC,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"coding_spawn.js","sourceRoot":"","sources":["../../../../src/server/api/coding/coding_spawn.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest-builder.d.ts","sourceRoot":"","sources":["../../../src/server/api/manifest-builder.ts"],"names":[],"mappings":"AAIA,OAAO,EAEN,KAAK,QAAQ,EAGb,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAgB,YAAY,EAAC,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"manifest-builder.d.ts","sourceRoot":"","sources":["../../../src/server/api/manifest-builder.ts"],"names":[],"mappings":"AAIA,OAAO,EAEN,KAAK,QAAQ,EAGb,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAgB,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAsHhE;;;;;GAKG;AACH,wBAAgB,aAAa,CAC5B,KAAK,EAAE,YAAY,GAAG,SAAS,EAC/B,IAAI,EAAE,MAAM,YAAY,GACtB,OAAO,CAOT;AAED,wBAAgB,aAAa,IAAI;IAAC,QAAQ,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAC,CA8DlE"}
|
|
@@ -35,6 +35,7 @@ function projectTool(t) {
|
|
|
35
35
|
const KNOWN_AGENTS = [
|
|
36
36
|
{ name: 'claude-code', command: 'claude' },
|
|
37
37
|
{ name: 'codex-cli', command: 'codex' },
|
|
38
|
+
{ name: 'opencode', command: 'opencode' },
|
|
38
39
|
];
|
|
39
40
|
/**
|
|
40
41
|
* Resolve a bare command via the env's PATH (the same one node-pty will use
|
|
@@ -168,6 +169,10 @@ export function buildManifest() {
|
|
|
168
169
|
enabled: isSlotEnabled(slots, 'browser'),
|
|
169
170
|
engines: ['chromium'],
|
|
170
171
|
},
|
|
172
|
+
// Browser-direct xterm via HMAC tickets is available whenever the
|
|
173
|
+
// coding slot is on (that's where the xterm WS route lives). When
|
|
174
|
+
// off, the webapp falls back to its proxy path.
|
|
175
|
+
directXterm: isSlotEnabled(slots, 'coding'),
|
|
171
176
|
},
|
|
172
177
|
folders: listFolders(),
|
|
173
178
|
tools,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest-builder.js","sourceRoot":"","sources":["../../../src/server/api/manifest-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAE,QAAQ,EAAC,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAC,UAAU,EAAC,MAAM,aAAa,CAAC;AACvC,OAAO,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAC,UAAU,EAAC,MAAM,SAAS,CAAC;AACnC,OAAO,EACN,gBAAgB,GAIhB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAAC,cAAc,EAAC,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAC,WAAW,EAAC,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAC,YAAY,EAAC,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAC,WAAW,EAAC,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAC,SAAS,EAAC,MAAM,2BAA2B,CAAC;AACpD,OAAO,EAAC,UAAU,EAAC,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAC,UAAU,EAAC,MAAM,4BAA4B,CAAC;AAEtD,IAAI,UAAU,GAAG,OAAO,CAAC;AACzB,IAAI,CAAC;IACJ,8DAA8D;IAC9D,UAAU,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC,OAAO,IAAI,UAAU,CAAC;AACrE,CAAC;AAAC,MAAM,CAAC;IACR,4DAA4D;AAC7D,CAAC;AAED;;;GAGG;AACH,SAAS,WAAW,CAAC,CAIpB;IACA,OAAO;QACN,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,WAAW,EAAE,CAAC,CAAC,WAAkD;KACjE,CAAC;AACH,CAAC;AAED,2EAA2E;AAC3E,6EAA6E;AAC7E,4DAA4D;AAC5D,MAAM,YAAY,GAA2C;IAC5D,EAAC,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,QAAQ,EAAC;IACxC,EAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAC;
|
|
1
|
+
{"version":3,"file":"manifest-builder.js","sourceRoot":"","sources":["../../../src/server/api/manifest-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Coding session watcher.
|
|
3
|
+
*
|
|
4
|
+
* Pushes a `turn_ended` event back to the webapp the moment the
|
|
5
|
+
* assistant finishes responding to a user turn (i.e. the session's
|
|
6
|
+
* computed status flips from `working` → `idle`). The webapp uses that
|
|
7
|
+
* signal to enqueue a Task title/description update job — no client
|
|
8
|
+
* polling required.
|
|
9
|
+
*
|
|
10
|
+
* Triggering strategy:
|
|
11
|
+
* - Primary: `fs.watch(dirname(transcript))` filtered by basename.
|
|
12
|
+
* Watching the directory (not the file) means we don't bet on
|
|
13
|
+
* append-in-place writes and we pick up the transcript even if
|
|
14
|
+
* the agent hasn't created it yet at the time we start.
|
|
15
|
+
* - Backstop: a low-frequency mtime poll every 5s. `fs.watch`
|
|
16
|
+
* silently no-ops on some filesystems (NFS, certain Docker bind
|
|
17
|
+
* mounts); the poll guarantees we still detect change.
|
|
18
|
+
* - Retry-on-working: if a tick reads the transcript mid-line and
|
|
19
|
+
* `readJsonlLines` silently drops the half-written final line, the
|
|
20
|
+
* status stays `working`. We schedule one short follow-up tick to
|
|
21
|
+
* catch the completing write.
|
|
22
|
+
* - `pty.onExit` is a separate signal: fires a final tick (fire and
|
|
23
|
+
* forget — the read path is async) before tearing down so the last
|
|
24
|
+
* `turn_ended` isn't lost.
|
|
25
|
+
*
|
|
26
|
+
* Lifetime:
|
|
27
|
+
* Sliding 10-min idle cap, reset on any sign of activity (watch
|
|
28
|
+
* event, backstop mtime change, or a tick that sees `working`).
|
|
29
|
+
* Reaps abandoned sessions without cutting off active ones.
|
|
30
|
+
*
|
|
31
|
+
* Auth: we POST with the user's API key (`config.auth.apiKey`) and
|
|
32
|
+
* identify the gateway by its `httpBaseUrl`, since the CLI doesn't
|
|
33
|
+
* know its own webapp-side ID.
|
|
34
|
+
*/
|
|
35
|
+
export declare function startCodingSessionWatcher(args: {
|
|
36
|
+
sessionId: string;
|
|
37
|
+
agentName: string;
|
|
38
|
+
dir: string;
|
|
39
|
+
}): void;
|
|
40
|
+
export declare function stopCodingSessionWatcher(sessionId: string): void;
|
|
41
|
+
//# sourceMappingURL=coding-session-watcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coding-session-watcher.d.ts","sourceRoot":"","sources":["../../src/server/coding-session-watcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAoDH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;CACZ,GAAG,IAAI,CA4FP;AAED,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAuBhE"}
|