@telora/daemon 0.17.101 → 0.17.105
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/build-info.json +4 -3
- package/dist/audit-hooks.d.ts +12 -2
- package/dist/audit-hooks.d.ts.map +1 -1
- package/dist/audit-hooks.js +41 -2
- package/dist/audit-hooks.js.map +1 -1
- package/dist/audit-phase.d.ts +9 -0
- package/dist/audit-phase.d.ts.map +1 -1
- package/dist/audit-phase.js +39 -2
- package/dist/audit-phase.js.map +1 -1
- package/dist/backends/agent-backend.d.ts +10 -5
- package/dist/backends/agent-backend.d.ts.map +1 -1
- package/dist/backends/codex/codex-backend.d.ts +2 -1
- package/dist/backends/codex/codex-backend.d.ts.map +1 -1
- package/dist/backends/codex/codex-backend.js +96 -5
- package/dist/backends/codex/codex-backend.js.map +1 -1
- package/dist/directive/directive-queue.d.ts +9 -0
- package/dist/directive/directive-queue.d.ts.map +1 -1
- package/dist/directive/directive-queue.js +11 -0
- package/dist/directive/directive-queue.js.map +1 -1
- package/dist/focus-executor.d.ts +1 -1
- package/dist/focus-executor.d.ts.map +1 -1
- package/dist/focus-executor.js +3 -3
- package/dist/focus-executor.js.map +1 -1
- package/dist/focus-lifecycle.d.ts.map +1 -1
- package/dist/focus-lifecycle.js +2 -1
- package/dist/focus-lifecycle.js.map +1 -1
- package/dist/focus-merge.d.ts.map +1 -1
- package/dist/focus-merge.js +2 -0
- package/dist/focus-merge.js.map +1 -1
- package/dist/focus-provisioning.d.ts.map +1 -1
- package/dist/focus-provisioning.js +2 -1
- package/dist/focus-provisioning.js.map +1 -1
- package/dist/git.d.ts +1 -1
- package/dist/git.d.ts.map +1 -1
- package/dist/git.js +1 -1
- package/dist/git.js.map +1 -1
- package/dist/prd-controller.d.ts +24 -0
- package/dist/prd-controller.d.ts.map +1 -1
- package/dist/prd-controller.js +36 -8
- package/dist/prd-controller.js.map +1 -1
- package/dist/queries/prd.d.ts +9 -0
- package/dist/queries/prd.d.ts.map +1 -1
- package/dist/queries/prd.js +11 -0
- package/dist/queries/prd.js.map +1 -1
- package/dist/queries/schemas.d.ts +4 -4
- package/dist/queries/schemas.d.ts.map +1 -1
- package/dist/queries/schemas.js +2 -1
- package/dist/queries/schemas.js.map +1 -1
- package/dist/queries/sessions.d.ts +9 -2
- package/dist/queries/sessions.d.ts.map +1 -1
- package/dist/queries/sessions.js +4 -1
- package/dist/queries/sessions.js.map +1 -1
- package/dist/queries/system-session.d.ts +46 -0
- package/dist/queries/system-session.d.ts.map +1 -0
- package/dist/queries/system-session.js +73 -0
- package/dist/queries/system-session.js.map +1 -0
- package/dist/spawner/lifecycle.d.ts +6 -0
- package/dist/spawner/lifecycle.d.ts.map +1 -1
- package/dist/spawner/lifecycle.js +20 -6
- package/dist/spawner/lifecycle.js.map +1 -1
- package/dist/types/session.d.ts +1 -1
- package/dist/types/session.d.ts.map +1 -1
- package/dist/worktree.d.ts +24 -0
- package/dist/worktree.d.ts.map +1 -1
- package/dist/worktree.js +83 -2
- package/dist/worktree.js.map +1 -1
- package/package.json +1 -1
package/build-info.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
-
"commitSha": "
|
|
3
|
-
"builtAt": "2026-06-
|
|
2
|
+
"commitSha": "1ea046e7",
|
|
3
|
+
"builtAt": "2026-06-18T01:52:14.638Z",
|
|
4
4
|
"expectedMigrations": [
|
|
5
5
|
"20250829113330_create_org_nodes_table.sql",
|
|
6
6
|
"20250829113402_fix_function_security_search_path.sql",
|
|
@@ -651,6 +651,7 @@
|
|
|
651
651
|
"20260616221712_drop_dead_default_tracker_rows.sql",
|
|
652
652
|
"20260616224152_get_product_sessions_overlapping.sql",
|
|
653
653
|
"20260616225633_add_issue_type_to_get_product_issue_transitions.sql",
|
|
654
|
-
"20260616233000_stable_order_get_product_issue_transitions.sql"
|
|
654
|
+
"20260616233000_stable_order_get_product_issue_transitions.sql",
|
|
655
|
+
"20260617025932_instrument_audit_merge_sessions.sql"
|
|
655
656
|
]
|
|
656
657
|
}
|
package/dist/audit-hooks.d.ts
CHANGED
|
@@ -27,10 +27,20 @@ export declare function installAuditPreCommitHook(worktreePath: string): void;
|
|
|
27
27
|
* must never carry a `deny` key.
|
|
28
28
|
*/
|
|
29
29
|
export declare function writeReadOnlyDenyOverlay(worktreePath: string): void;
|
|
30
|
+
/**
|
|
31
|
+
* Write Codex's read-only audit overlay into the worktree-local project config.
|
|
32
|
+
*
|
|
33
|
+
* Codex project config is a durable record for the worktree; spawn-time `-c`
|
|
34
|
+
* overrides still select `default_permissions="telora_read_only"` so read-only
|
|
35
|
+
* enforcement does not depend on project trust. The profile itself is kept here
|
|
36
|
+
* for parity, inspection, and trusted-project runs.
|
|
37
|
+
*/
|
|
38
|
+
export declare function writeCodexReadOnlyOverlay(worktreePath: string): void;
|
|
30
39
|
/**
|
|
31
40
|
* Install all read-only audit enforcement in a worktree: the commit-blocking
|
|
32
|
-
* pre-commit hook
|
|
33
|
-
*
|
|
41
|
+
* pre-commit hook, Claude's write-deny settings overlay, and Codex's
|
|
42
|
+
* read-only permission profile. Single entry point so every read-only
|
|
43
|
+
* worktree-setup site gets identical coverage.
|
|
34
44
|
*/
|
|
35
45
|
export declare function installReadOnlyAuditGuards(worktreePath: string): void;
|
|
36
46
|
//# sourceMappingURL=audit-hooks.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit-hooks.d.ts","sourceRoot":"","sources":["../src/audit-hooks.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"audit-hooks.d.ts","sourceRoot":"","sources":["../src/audit-hooks.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAWH;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAiCpE;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,wBAAwB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CA0BnE;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CA8BpE;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAIrE"}
|
package/dist/audit-hooks.js
CHANGED
|
@@ -8,6 +8,9 @@ import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
|
8
8
|
import { join } from 'node:path';
|
|
9
9
|
import { runGitSync } from './git-types.js';
|
|
10
10
|
import { buildClaudeSettings, mergeClaudeSettings } from './templates/claude-settings.js';
|
|
11
|
+
import { ensureCodexConfigIgnoredInWorktree } from './worktree.js';
|
|
12
|
+
const CODEX_READ_ONLY_BLOCK_START = '# BEGIN TELORA CODEX READ-ONLY';
|
|
13
|
+
const CODEX_READ_ONLY_BLOCK_END = '# END TELORA CODEX READ-ONLY';
|
|
11
14
|
/**
|
|
12
15
|
* Install a pre-commit hook in a worktree that blocks all commits.
|
|
13
16
|
* Used for read-only audit sessions.
|
|
@@ -84,13 +87,49 @@ export function writeReadOnlyDenyOverlay(worktreePath) {
|
|
|
84
87
|
const merged = mergeClaudeSettings(existing, buildClaudeSettings({ readOnly: true }));
|
|
85
88
|
writeFileSync(settingsPath, JSON.stringify(merged, null, 2) + '\n');
|
|
86
89
|
}
|
|
90
|
+
/**
|
|
91
|
+
* Write Codex's read-only audit overlay into the worktree-local project config.
|
|
92
|
+
*
|
|
93
|
+
* Codex project config is a durable record for the worktree; spawn-time `-c`
|
|
94
|
+
* overrides still select `default_permissions="telora_read_only"` so read-only
|
|
95
|
+
* enforcement does not depend on project trust. The profile itself is kept here
|
|
96
|
+
* for parity, inspection, and trusted-project runs.
|
|
97
|
+
*/
|
|
98
|
+
export function writeCodexReadOnlyOverlay(worktreePath) {
|
|
99
|
+
ensureCodexConfigIgnoredInWorktree(worktreePath);
|
|
100
|
+
const dir = join(worktreePath, '.codex');
|
|
101
|
+
if (!existsSync(dir)) {
|
|
102
|
+
mkdirSync(dir, { recursive: true, mode: 0o700 });
|
|
103
|
+
}
|
|
104
|
+
const configPath = join(dir, 'config.toml');
|
|
105
|
+
const existing = existsSync(configPath) ? readFileSync(configPath, 'utf-8') : '';
|
|
106
|
+
const block = [
|
|
107
|
+
CODEX_READ_ONLY_BLOCK_START,
|
|
108
|
+
'# Generated by Telora for read-only Codex audit execution.',
|
|
109
|
+
'# Spawn-time overrides select this permission profile.',
|
|
110
|
+
'',
|
|
111
|
+
'[permissions.telora_read_only.filesystem]',
|
|
112
|
+
'":minimal" = "read"',
|
|
113
|
+
'":workspace_roots" = { "." = "read" }',
|
|
114
|
+
'',
|
|
115
|
+
'[permissions.telora_read_only.network]',
|
|
116
|
+
'enabled = false',
|
|
117
|
+
CODEX_READ_ONLY_BLOCK_END,
|
|
118
|
+
].join('\n');
|
|
119
|
+
const markerPattern = new RegExp(`${CODEX_READ_ONLY_BLOCK_START}[\\s\\S]*?${CODEX_READ_ONLY_BLOCK_END}\\n?`, 'm');
|
|
120
|
+
const withoutOldBlock = existing.replace(markerPattern, '').trimEnd();
|
|
121
|
+
const separator = withoutOldBlock ? '\n\n' : '';
|
|
122
|
+
writeFileSync(configPath, `${withoutOldBlock}${separator}${block}\n`, { mode: 0o600 });
|
|
123
|
+
}
|
|
87
124
|
/**
|
|
88
125
|
* Install all read-only audit enforcement in a worktree: the commit-blocking
|
|
89
|
-
* pre-commit hook
|
|
90
|
-
*
|
|
126
|
+
* pre-commit hook, Claude's write-deny settings overlay, and Codex's
|
|
127
|
+
* read-only permission profile. Single entry point so every read-only
|
|
128
|
+
* worktree-setup site gets identical coverage.
|
|
91
129
|
*/
|
|
92
130
|
export function installReadOnlyAuditGuards(worktreePath) {
|
|
93
131
|
installAuditPreCommitHook(worktreePath);
|
|
94
132
|
writeReadOnlyDenyOverlay(worktreePath);
|
|
133
|
+
writeCodexReadOnlyOverlay(worktreePath);
|
|
95
134
|
}
|
|
96
135
|
//# sourceMappingURL=audit-hooks.js.map
|
package/dist/audit-hooks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit-hooks.js","sourceRoot":"","sources":["../src/audit-hooks.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"audit-hooks.js","sourceRoot":"","sources":["../src/audit-hooks.ts"],"names":[],"mappings":"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"}
|
package/dist/audit-phase.d.ts
CHANGED
|
@@ -105,6 +105,15 @@ export interface AuditPhaseDeps {
|
|
|
105
105
|
getResumeSessionId?: (focusId: string, lineage: string) => Promise<string | null>;
|
|
106
106
|
/** Persist the assessor's session id under the focus's lineage (INJ-E). */
|
|
107
107
|
persistSessionId?: (focusId: string, lineage: string, sessionId: string) => Promise<void>;
|
|
108
|
+
/**
|
|
109
|
+
* Open a role-less 'audit' agent_sessions row at assessor start and return its
|
|
110
|
+
* row id. The row id (NOT the Claude session id) becomes audit_runs.session_id
|
|
111
|
+
* so the FK resolves, and the row's run-time is observable. Best-effort: null
|
|
112
|
+
* when creation failed (the audit still records, with session_id NULL).
|
|
113
|
+
*/
|
|
114
|
+
openAuditSession?: (focusId: string) => Promise<string | null>;
|
|
115
|
+
/** Close the 'audit' agent_sessions row on assessor exit (stamps ended_at). */
|
|
116
|
+
closeAuditSession?: (sessionId: string | null, success: boolean) => Promise<void>;
|
|
108
117
|
}
|
|
109
118
|
/**
|
|
110
119
|
* Parse the audit-summary tail block from assessor stdout. Returns null
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit-phase.d.ts","sourceRoot":"","sources":["../src/audit-phase.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,yBAAyB,CAAC;AACjC,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAkC,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"audit-phase.d.ts","sourceRoot":"","sources":["../src/audit-phase.ts"],"names":[],"mappings":"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"}
|
package/dist/audit-phase.js
CHANGED
|
@@ -15,6 +15,7 @@ import { resolveAssemblyRecipe } from './assembly-engine.js';
|
|
|
15
15
|
import './assembly-resolvers.js';
|
|
16
16
|
import { getRecentFocusCycleEvaluation, } from './queries/focus-cycle-evaluations.js';
|
|
17
17
|
import { insertAuditRun, updateAuditRun } from './queries/audit-runs.js';
|
|
18
|
+
import { openSystemSession, closeSystemSession } from './queries/system-session.js';
|
|
18
19
|
import { getFocusDeliveries, getFocusSessionIds, updateFocusClaudeSessionId } from './queries/focuses.js';
|
|
19
20
|
import { resolveResumeId } from './session-lineage.js';
|
|
20
21
|
import { getConfig } from './queries/shared.js';
|
|
@@ -207,6 +208,13 @@ export const defaultAuditDeps = {
|
|
|
207
208
|
return resolveResumeId({ sessionMap: map, lineage, continuity: 'resume' });
|
|
208
209
|
},
|
|
209
210
|
persistSessionId: (focusId, lineage, sessionId) => updateFocusClaudeSessionId(focusId, lineage, sessionId),
|
|
211
|
+
openAuditSession: (focusId) => openSystemSession({
|
|
212
|
+
organizationId: getConfig().organizationId,
|
|
213
|
+
focusId,
|
|
214
|
+
branchName: `audit:${focusId}`,
|
|
215
|
+
sessionType: 'audit',
|
|
216
|
+
}),
|
|
217
|
+
closeAuditSession: (sessionId, success) => closeSystemSession(sessionId, { success }),
|
|
210
218
|
};
|
|
211
219
|
// ---------------------------------------------------------------------------
|
|
212
220
|
// Core phase
|
|
@@ -251,6 +259,20 @@ export async function runAuditPhase(focusId, deps = defaultAuditDeps) {
|
|
|
251
259
|
}
|
|
252
260
|
}
|
|
253
261
|
metadata.resumed = !!resumeSessionId;
|
|
262
|
+
// Open a role-less 'audit' agent_sessions row so (a) the assessor's run-time
|
|
263
|
+
// is observable and (b) audit_runs.session_id has a valid FK target. The row
|
|
264
|
+
// id -- NOT the Claude session id -- is what audit_runs references. Best-effort:
|
|
265
|
+
// a null id just leaves audit_runs.session_id NULL (which inserts fine).
|
|
266
|
+
let auditSessionRowId = null;
|
|
267
|
+
if (deps.openAuditSession) {
|
|
268
|
+
try {
|
|
269
|
+
auditSessionRowId = await deps.openAuditSession(focusId);
|
|
270
|
+
}
|
|
271
|
+
catch (err) {
|
|
272
|
+
errors.push(`open_audit_session: ${err.message}`);
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
metadata.auditSessionRowId = auditSessionRowId;
|
|
254
276
|
let spawnResult;
|
|
255
277
|
try {
|
|
256
278
|
spawnResult = await deps.spawnAuditAgent({
|
|
@@ -269,6 +291,17 @@ export async function runAuditPhase(focusId, deps = defaultAuditDeps) {
|
|
|
269
291
|
errors.push(`spawn: ${err.message}`);
|
|
270
292
|
spawnResult = { exitCode: null, stdout: '', stderr: '', errorMessage: err.message };
|
|
271
293
|
}
|
|
294
|
+
// Close the 'audit' agent_sessions row now the assessor has exited (stamps
|
|
295
|
+
// ended_at + terminal status). Success = clean exit with no spawn error.
|
|
296
|
+
if (deps.closeAuditSession) {
|
|
297
|
+
const auditSucceeded = spawnResult.exitCode === 0 && !spawnResult.errorMessage;
|
|
298
|
+
try {
|
|
299
|
+
await deps.closeAuditSession(auditSessionRowId, auditSucceeded);
|
|
300
|
+
}
|
|
301
|
+
catch (err) {
|
|
302
|
+
errors.push(`close_audit_session: ${err.message}`);
|
|
303
|
+
}
|
|
304
|
+
}
|
|
272
305
|
// Persist the assessor's session id under the focus's 'audit' lineage so the
|
|
273
306
|
// next cycle resumes it (INJ-E). Best-effort -- a persist failure only loses
|
|
274
307
|
// continuity for the next cycle, it never fails the audit.
|
|
@@ -281,11 +314,15 @@ export async function runAuditPhase(focusId, deps = defaultAuditDeps) {
|
|
|
281
314
|
errors.push(`persist_session_id: ${err.message}`);
|
|
282
315
|
}
|
|
283
316
|
}
|
|
284
|
-
// Record the audit run
|
|
317
|
+
// Record the audit run. session_id references the 'audit' agent_sessions ROW
|
|
318
|
+
// id (FK target), NOT the Claude session id -- writing the bare Claude id is
|
|
319
|
+
// exactly what made every insert violate audit_runs_session_id_fkey since the
|
|
320
|
+
// 2026-06-03 deploy. The Claude session id lives on the focus lineage (above)
|
|
321
|
+
// for --resume, not here.
|
|
285
322
|
let auditRunId = null;
|
|
286
323
|
try {
|
|
287
324
|
const row = await deps.insertAuditRun({
|
|
288
|
-
focusId, cycleNumber, model: AUDIT_DEFAULT_MODEL, sessionId:
|
|
325
|
+
focusId, cycleNumber, model: AUDIT_DEFAULT_MODEL, sessionId: auditSessionRowId,
|
|
289
326
|
});
|
|
290
327
|
auditRunId = row.id;
|
|
291
328
|
metadata.auditRunId = row.id;
|
package/dist/audit-phase.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit-phase.js","sourceRoot":"","sources":["../src/audit-phase.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,qBAAqB,EAAwB,MAAM,sBAAsB,CAAC;AACnF,oEAAoE;AACpE,OAAO,yBAAyB,CAAC;AACjC,OAAO,EACL,6BAA6B,GAE9B,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,cAAc,EAAoB,MAAM,yBAAyB,CAAC;AAC3F,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAC1G,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EACL,eAAe,IAAI,sBAAsB,GAG1C,MAAM,oBAAoB,CAAC;AAG5B,8EAA8E;AAC9E,0CAA0C;AAC1C,8EAA8E;AAE9E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAsB;IACtD,eAAe;IACf,oBAAoB;IACpB,+CAA+C;IAC/C,uBAAuB;IACvB,yBAAyB;IACzB,mBAAmB;IACnB,uBAAuB;CACxB,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,eAAe,GAAsB;IAChD,2CAA2C;IAC3C,gDAAgD;IAChD,gDAAgD;IAChD,gDAAgD;IAChD,+CAA+C;CAChD,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC;AAE1C,6DAA6D;AAC7D,MAAM,CAAC,MAAM,wBAAwB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAEvD;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC;AAErC;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,uEAAuE;IACvE,EAAE;IACF,8iBAA8iB;IAC9iB,EAAE;IACF,iBAAiB;IACjB,EAAE;IACF,wUAAwU;IACxU,EAAE;IACF,6XAA6X;IAC7X,EAAE;IACF,2MAA2M;IAC3M,EAAE;IACF,wXAAwX;IACxX,EAAE;IACF,ycAAyc;IACzc,EAAE;IACF,+YAA+Y;IAC/Y,EAAE;IACF,yIAAyI;IACzI,EAAE;IACF,kBAAkB;IAClB,0BAA0B;IAC1B,0BAA0B;IAC1B,YAAY;IACZ,4IAA4I;IAC5I,KAAK;IACL,EAAE;IACF,6LAA6L;CAC9L,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"audit-phase.js","sourceRoot":"","sources":["../src/audit-phase.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,13 +27,18 @@ export interface AgentSpawnContext {
|
|
|
27
27
|
model?: string | null;
|
|
28
28
|
/**
|
|
29
29
|
* Least-privilege tool allowlist from the focus's agent role
|
|
30
|
-
* (`agent_roles.allowed_tools`).
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
* the engine's
|
|
34
|
-
*
|
|
30
|
+
* (`agent_roles.allowed_tools`). Backends apply the strongest native
|
|
31
|
+
* equivalent they support: Claude uses `--allowed-tools`; Codex maps the
|
|
32
|
+
* enforceable subset to MCP enabled_tools, feature toggles, and permission
|
|
33
|
+
* profiles. Empty/absent means the engine's documented default tool set.
|
|
34
|
+
* See docs/security-posture-daemon-execution.md.
|
|
35
35
|
*/
|
|
36
36
|
allowedTools?: readonly string[];
|
|
37
|
+
/**
|
|
38
|
+
* True for read-only audit/review focuses. Backends that support an
|
|
39
|
+
* execution-policy layer can tighten filesystem permissions for these spawns.
|
|
40
|
+
*/
|
|
41
|
+
readOnly?: boolean;
|
|
37
42
|
}
|
|
38
43
|
/** Inputs for resuming a prior session. */
|
|
39
44
|
export interface AgentResumeContext extends AgentSpawnContext {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-backend.d.ts","sourceRoot":"","sources":["../../src/backends/agent-backend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,wCAAwC;AACxC,MAAM,WAAW,iBAAiB;IAChC,8EAA8E;IAC9E,MAAM,EAAE,YAAY,CAAC;IACrB,iFAAiF;IACjF,YAAY,EAAE,MAAM,CAAC;IACrB,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-backend.d.ts","sourceRoot":"","sources":["../../src/backends/agent-backend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,wCAAwC;AACxC,MAAM,WAAW,iBAAiB;IAChC,8EAA8E;IAC9E,MAAM,EAAE,YAAY,CAAC;IACrB,iFAAiF;IACjF,YAAY,EAAE,MAAM,CAAC;IACrB,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,2CAA2C;AAC3C,MAAM,WAAW,kBAAmB,SAAQ,iBAAiB;IAC3D,+EAA+E;IAC/E,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,gFAAgF;AAChF,MAAM,WAAW,mBAAmB;IAClC,iFAAiF;IACjF,SAAS,EAAE,OAAO,CAAC;IACnB,8EAA8E;IAC9E,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,4DAA4D;IAC5D,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAE7B,yEAAyE;IACzE,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAAC;IAE7C,qDAAqD;IACrD,cAAc,CAAC,GAAG,EAAE,iBAAiB,GAAG,MAAM,EAAE,CAAC;IAEjD,mDAAmD;IACnD,eAAe,CAAC,GAAG,EAAE,kBAAkB,GAAG,MAAM,EAAE,CAAC;IAEnD,kFAAkF;IAClF,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IAErC,2EAA2E;IAC3E,YAAY,IAAI,gBAAgB,CAAC;IAEjC,yEAAyE;IACzE,iBAAiB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;CACvE"}
|
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Recipe validated against Codex CLI 0.133.0 (spike: /tmp/codex-spike):
|
|
5
5
|
* - spawn: `codex exec --json --dangerously-bypass-approvals-and-sandbox
|
|
6
|
-
* --cd <worktree> -c mcp_servers.telora.* -`
|
|
6
|
+
* --cd <worktree> -c <daemon execution config> -c mcp_servers.telora.* -`
|
|
7
|
+
* (prompt on stdin)
|
|
7
8
|
* - resume: `codex exec resume <sessionId> --json --dangerously-bypass-...`
|
|
8
9
|
* NO `--cd` (the resume subcommand rejects it; workspace is recovered
|
|
9
10
|
* from the session). NEVER `--ephemeral` (it skips session persistence
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-backend.d.ts","sourceRoot":"","sources":["../../../src/backends/codex/codex-backend.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"codex-backend.d.ts","sourceRoot":"","sources":["../../../src/backends/codex/codex-backend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAMH,OAAO,KAAK,EACV,YAAY,EAIb,MAAM,qBAAqB,CAAC;AAmJ7B,eAAO,MAAM,YAAY,EAAE,YA4D1B,CAAC"}
|
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Recipe validated against Codex CLI 0.133.0 (spike: /tmp/codex-spike):
|
|
5
5
|
* - spawn: `codex exec --json --dangerously-bypass-approvals-and-sandbox
|
|
6
|
-
* --cd <worktree> -c mcp_servers.telora.* -`
|
|
6
|
+
* --cd <worktree> -c <daemon execution config> -c mcp_servers.telora.* -`
|
|
7
|
+
* (prompt on stdin)
|
|
7
8
|
* - resume: `codex exec resume <sessionId> --json --dangerously-bypass-...`
|
|
8
9
|
* NO `--cd` (the resume subcommand rejects it; workspace is recovered
|
|
9
10
|
* from the session). NEVER `--ephemeral` (it skips session persistence
|
|
@@ -32,6 +33,96 @@ const BYPASS_FLAG = '--dangerously-bypass-approvals-and-sandbox';
|
|
|
32
33
|
function codexCommand(config) {
|
|
33
34
|
return config.codexPath ?? 'codex';
|
|
34
35
|
}
|
|
36
|
+
function tomlStringArray(values) {
|
|
37
|
+
return `[${values.map(value => JSON.stringify(value)).join(',')}]`;
|
|
38
|
+
}
|
|
39
|
+
function uniqueStrings(values) {
|
|
40
|
+
return [...new Set(values.map(value => value.trim()).filter(Boolean))];
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Critical daemon execution posture passed as CLI config overrides. These
|
|
44
|
+
* duplicate the generated worktree `.codex/config.toml` so noninteractive
|
|
45
|
+
* spawns do not silently depend on project-config trust.
|
|
46
|
+
*/
|
|
47
|
+
function daemonExecutionConfigFlags(readOnly = false) {
|
|
48
|
+
const flags = [
|
|
49
|
+
'-c', `approval_policy="never"`,
|
|
50
|
+
'-c', `sandbox_mode="workspace-write"`,
|
|
51
|
+
'-c', `web_search="cached"`,
|
|
52
|
+
'-c', `features.multi_agent=true`,
|
|
53
|
+
'-c', `sandbox_workspace_write.network_access=false`,
|
|
54
|
+
'-c', `sandbox_workspace_write.exclude_tmpdir_env_var=false`,
|
|
55
|
+
'-c', `sandbox_workspace_write.exclude_slash_tmp=false`,
|
|
56
|
+
'-c', `shell_environment_policy.inherit="core"`,
|
|
57
|
+
'-c', `shell_environment_policy.ignore_default_excludes=false`,
|
|
58
|
+
];
|
|
59
|
+
if (readOnly) {
|
|
60
|
+
flags.push('-c', `default_permissions="telora_read_only"`);
|
|
61
|
+
flags.push('-c', `permissions.telora_read_only.filesystem={ ":minimal" = "read", ":workspace_roots" = { "." = "read" } }`);
|
|
62
|
+
flags.push('-c', `permissions.telora_read_only.network.enabled=false`);
|
|
63
|
+
}
|
|
64
|
+
return flags;
|
|
65
|
+
}
|
|
66
|
+
function claudeMcpToolToCodexTool(tool) {
|
|
67
|
+
const match = /^mcp__(telora|telora-products)__([A-Za-z0-9_:-]+)$/.exec(tool);
|
|
68
|
+
return match ? match[2] : null;
|
|
69
|
+
}
|
|
70
|
+
function isNativeShellAllowed(allowedTools) {
|
|
71
|
+
return allowedTools.some(tool => tool === 'Bash' || tool.startsWith('Bash('));
|
|
72
|
+
}
|
|
73
|
+
function isNativeMultiAgentAllowed(allowedTools) {
|
|
74
|
+
return allowedTools.some(tool => tool === 'Task' || tool === 'spawn_agents_on_csv' || tool === 'SpawnAgents');
|
|
75
|
+
}
|
|
76
|
+
function hasNativeWriteSurface(allowedTools) {
|
|
77
|
+
return allowedTools.some(tool => tool === 'Write' ||
|
|
78
|
+
tool === 'Edit' ||
|
|
79
|
+
tool === 'MultiEdit' ||
|
|
80
|
+
tool === 'NotebookEdit' ||
|
|
81
|
+
tool === 'apply_patch' ||
|
|
82
|
+
tool === 'Bash' ||
|
|
83
|
+
tool.startsWith('Bash('));
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Best-effort mapping from Claude-style role allowed_tools to Codex controls.
|
|
87
|
+
*
|
|
88
|
+
* Codex has no single `--allowed-tools` equivalent. The enforceable subset is:
|
|
89
|
+
* - Telora MCP tools -> `mcp_servers.telora.enabled_tools`.
|
|
90
|
+
* - Missing Bash -> disable the shell tool feature.
|
|
91
|
+
* - Missing Task/subagent tools -> disable multi-agent.
|
|
92
|
+
* - Read-only native role -> apply a read-only filesystem permission profile.
|
|
93
|
+
*/
|
|
94
|
+
function roleAllowedToolsConfigFlags(allowedTools) {
|
|
95
|
+
const tools = uniqueStrings(allowedTools ?? []);
|
|
96
|
+
if (tools.length === 0)
|
|
97
|
+
return [];
|
|
98
|
+
const flags = [];
|
|
99
|
+
const teloraTools = uniqueStrings(tools.map(claudeMcpToolToCodexTool).filter((tool) => tool !== null));
|
|
100
|
+
if (teloraTools.length > 0) {
|
|
101
|
+
flags.push('-c', `mcp_servers.telora.enabled_tools=${tomlStringArray(teloraTools)}`);
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
flags.push('-c', `mcp_servers.telora.enabled=false`);
|
|
105
|
+
}
|
|
106
|
+
if (!isNativeShellAllowed(tools)) {
|
|
107
|
+
flags.push('-c', `features.shell_tool=false`);
|
|
108
|
+
}
|
|
109
|
+
if (!isNativeMultiAgentAllowed(tools)) {
|
|
110
|
+
flags.push('-c', `features.multi_agent=false`);
|
|
111
|
+
}
|
|
112
|
+
if (!hasNativeWriteSurface(tools)) {
|
|
113
|
+
flags.push('-c', `default_permissions="telora_role_read_only"`);
|
|
114
|
+
flags.push('-c', `permissions.telora_role_read_only.filesystem={ ":minimal" = "read", ":workspace_roots" = { "." = "read" } }`);
|
|
115
|
+
flags.push('-c', `permissions.telora_role_read_only.network.enabled=false`);
|
|
116
|
+
}
|
|
117
|
+
const unsupported = tools.filter(tool => claudeMcpToolToCodexTool(tool) === null &&
|
|
118
|
+
!['Read', 'Grep', 'Glob', 'LS', 'Bash', 'Write', 'Edit', 'MultiEdit', 'NotebookEdit', 'Task', 'apply_patch', 'spawn_agents_on_csv', 'SpawnAgents'].includes(tool) &&
|
|
119
|
+
!tool.startsWith('Bash('));
|
|
120
|
+
if (unsupported.length > 0) {
|
|
121
|
+
console.warn(`[codex-backend] Role allowed_tools contains ${unsupported.length} tool(s) with no Codex mapping: ` +
|
|
122
|
+
unsupported.join(', '));
|
|
123
|
+
}
|
|
124
|
+
return flags;
|
|
125
|
+
}
|
|
35
126
|
/**
|
|
36
127
|
* Build `-c mcp_servers.telora.*` config overrides wiring the Telora MCP server
|
|
37
128
|
* into the Codex run. Values are TOML literals, so strings are quoted.
|
|
@@ -75,11 +166,9 @@ export const codexBackend = {
|
|
|
75
166
|
const args = ['exec', '--json', BYPASS_FLAG, '--cd', ctx.worktreePath];
|
|
76
167
|
if (ctx.model)
|
|
77
168
|
args.push('--model', ctx.model);
|
|
169
|
+
args.push(...daemonExecutionConfigFlags(ctx.readOnly));
|
|
78
170
|
args.push(...mcpConfigFlags(ctx.config));
|
|
79
|
-
|
|
80
|
-
// by the Claude backend via --allowed-tools; codex exec has no equivalent
|
|
81
|
-
// per-tool allowlist flag, so role tool-scoping is not enforced on the
|
|
82
|
-
// codex path today. Tracked in docs/security-posture-daemon-execution.md.
|
|
171
|
+
args.push(...roleAllowedToolsConfigFlags(ctx.allowedTools));
|
|
83
172
|
// Trailing '-' tells codex exec to read the prompt from stdin.
|
|
84
173
|
args.push('-');
|
|
85
174
|
return args;
|
|
@@ -89,9 +178,11 @@ export const codexBackend = {
|
|
|
89
178
|
const args = ['exec', 'resume', ctx.resumeSessionId, '--json', BYPASS_FLAG];
|
|
90
179
|
if (ctx.model)
|
|
91
180
|
args.push('--model', ctx.model);
|
|
181
|
+
args.push(...daemonExecutionConfigFlags(ctx.readOnly));
|
|
92
182
|
// MCP config overrides are global `-c` flags (accepted by the resume
|
|
93
183
|
// subcommand) so the resumed agent keeps Telora MCP access.
|
|
94
184
|
args.push(...mcpConfigFlags(ctx.config));
|
|
185
|
+
args.push(...roleAllowedToolsConfigFlags(ctx.allowedTools));
|
|
95
186
|
args.push('-');
|
|
96
187
|
return args;
|
|
97
188
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-backend.js","sourceRoot":"","sources":["../../../src/backends/codex/codex-backend.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"codex-backend.js","sourceRoot":"","sources":["../../../src/backends/codex/codex-backend.ts"],"names":[],"mappings":"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"}
|
|
@@ -72,6 +72,15 @@ export declare function shouldSkipSpawnDirective(args: {
|
|
|
72
72
|
* Called by spawnFocusTeam after spawning to send the directive.
|
|
73
73
|
*/
|
|
74
74
|
export declare function consumePendingSpawnDirective(focusId: string): PendingSpawnDirective | undefined;
|
|
75
|
+
/**
|
|
76
|
+
* Drop a focus's pending spawn directive WITHOUT spawning (distinct from
|
|
77
|
+
* consume, which is the spawn-path delete). Used by the PRD-controller
|
|
78
|
+
* completion bridge when a frontier focus is finalized: a completed focus left
|
|
79
|
+
* with a queued directive makes processPendingSpawnFocuses re-log "no
|
|
80
|
+
* assigned_agent_role_id; skipping spawn" every poll forever. Clearing it ends
|
|
81
|
+
* that loop. Returns whether a directive was present.
|
|
82
|
+
*/
|
|
83
|
+
export declare function clearPendingSpawnDirective(focusId: string): boolean;
|
|
75
84
|
/**
|
|
76
85
|
* Test-only helper: prime a pending spawn directive without going through
|
|
77
86
|
* executeSpawnDirective. Tests use this to verify consume semantics with
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"directive-queue.d.ts","sourceRoot":"","sources":["../../src/directive/directive-queue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAI/D;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,WAAW,EAAE,QAAQ,GAAG,QAAQ,CAAC;IACjC,2DAA2D;IAC3D,OAAO,EAAE,MAAM,CAAC;IAChB,+DAA+D;IAC/D,UAAU,EAAE,iBAAiB,CAAC;IAC9B;;;;;OAKG;IACH,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,oCAA2C,CAAC;AAE/E;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,cAAc,GAAG,MAAM,CAMtE;AAED;sCACsC;AACtC,eAAO,MAAM,qBAAqB,QAAQ,CAAC;AAE3C;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE;IAC7C,IAAI,EAAE;QAAE,SAAS,EAAE,IAAI,CAAC;QAAC,yBAAyB,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,SAAS,CAAC;IAChF,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;CACb,GAAG,MAAM,GAAG,SAAS,CAMrB;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS,CAM/F;AAED;;;;GAIG;AACH,wBAAgB,oCAAoC,CAClD,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,qBAAqB,GAC/B,IAAI,CAEN;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEjE;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS,CAE3F;AAED,wBAAgB,uBAAuB,IAAI,MAAM,EAAE,CAElD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mCAAmC,CAAC,KAAK,EAAE;IACzD,OAAO,EAAE;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;IAC7C,aAAa,EAAE,MAAM,CAAC;CACvB,GAAG,OAAO,CAEV"}
|
|
1
|
+
{"version":3,"file":"directive-queue.d.ts","sourceRoot":"","sources":["../../src/directive/directive-queue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAI/D;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,WAAW,EAAE,QAAQ,GAAG,QAAQ,CAAC;IACjC,2DAA2D;IAC3D,OAAO,EAAE,MAAM,CAAC;IAChB,+DAA+D;IAC/D,UAAU,EAAE,iBAAiB,CAAC;IAC9B;;;;;OAKG;IACH,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,oCAA2C,CAAC;AAE/E;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,cAAc,GAAG,MAAM,CAMtE;AAED;sCACsC;AACtC,eAAO,MAAM,qBAAqB,QAAQ,CAAC;AAE3C;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE;IAC7C,IAAI,EAAE;QAAE,SAAS,EAAE,IAAI,CAAC;QAAC,yBAAyB,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,SAAS,CAAC;IAChF,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;CACb,GAAG,MAAM,GAAG,SAAS,CAMrB;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS,CAM/F;AAED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEnE;AAED;;;;GAIG;AACH,wBAAgB,oCAAoC,CAClD,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,qBAAqB,GAC/B,IAAI,CAEN;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEjE;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS,CAE3F;AAED,wBAAgB,uBAAuB,IAAI,MAAM,EAAE,CAElD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mCAAmC,CAAC,KAAK,EAAE;IACzD,OAAO,EAAE;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;IAC7C,aAAa,EAAE,MAAM,CAAC;CACvB,GAAG,OAAO,CAEV"}
|
|
@@ -64,6 +64,17 @@ export function consumePendingSpawnDirective(focusId) {
|
|
|
64
64
|
}
|
|
65
65
|
return directive;
|
|
66
66
|
}
|
|
67
|
+
/**
|
|
68
|
+
* Drop a focus's pending spawn directive WITHOUT spawning (distinct from
|
|
69
|
+
* consume, which is the spawn-path delete). Used by the PRD-controller
|
|
70
|
+
* completion bridge when a frontier focus is finalized: a completed focus left
|
|
71
|
+
* with a queued directive makes processPendingSpawnFocuses re-log "no
|
|
72
|
+
* assigned_agent_role_id; skipping spawn" every poll forever. Clearing it ends
|
|
73
|
+
* that loop. Returns whether a directive was present.
|
|
74
|
+
*/
|
|
75
|
+
export function clearPendingSpawnDirective(focusId) {
|
|
76
|
+
return pendingSpawnDirectives.delete(focusId);
|
|
77
|
+
}
|
|
67
78
|
/**
|
|
68
79
|
* Test-only helper: prime a pending spawn directive without going through
|
|
69
80
|
* executeSpawnDirective. Tests use this to verify consume semantics with
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"directive-queue.js","sourceRoot":"","sources":["../../src/directive/directive-queue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AA2BzC;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,GAAG,EAAiC,CAAC;AAE/E;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,SAAyB;IAC5D,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;QAChD,MAAM,EAAE,SAAS,CAAC,MAAM,IAAI,IAAI;QAChC,QAAQ,EAAE,SAAS,CAAC,QAAQ,IAAI,EAAE;QAClC,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,IAAI;KAC/B,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACpB,CAAC;AAED;sCACsC;AACtC,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,CAAC;AAE3C;;;;;;;;;;GAUG;AACH,MAAM,UAAU,wBAAwB,CAAC,IAIxC;IACC,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IACxC,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5B,MAAM,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;IAC3C,IAAI,GAAG,IAAI,qBAAqB;QAAE,OAAO,SAAS,CAAC;IACnD,OAAO,IAAI,CAAC,yBAAyB,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,4BAA4B,CAAC,OAAe;IAC1D,MAAM,SAAS,GAAG,sBAAsB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACtD,IAAI,SAAS,EAAE,CAAC;QACd,sBAAsB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oCAAoC,CAClD,OAAe,EACf,SAAgC;IAEhC,sBAAsB,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AACjD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CAAC,OAAe;IACtD,OAAO,sBAAsB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CAAC,OAAe;IACtD,OAAO,sBAAsB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,OAAO,CAAC,GAAG,sBAAsB,CAAC,IAAI,EAAE,CAAC,CAAC;AAC5C,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,mCAAmC,CAAC,KAGnD;IACC,OAAO,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,KAAK,KAAK,CAAC,aAAa,CAAC;AAC1F,CAAC"}
|
|
1
|
+
{"version":3,"file":"directive-queue.js","sourceRoot":"","sources":["../../src/directive/directive-queue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AA2BzC;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,GAAG,EAAiC,CAAC;AAE/E;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,SAAyB;IAC5D,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;QAChD,MAAM,EAAE,SAAS,CAAC,MAAM,IAAI,IAAI;QAChC,QAAQ,EAAE,SAAS,CAAC,QAAQ,IAAI,EAAE;QAClC,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,IAAI;KAC/B,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACpB,CAAC;AAED;sCACsC;AACtC,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,CAAC;AAE3C;;;;;;;;;;GAUG;AACH,MAAM,UAAU,wBAAwB,CAAC,IAIxC;IACC,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IACxC,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5B,MAAM,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;IAC3C,IAAI,GAAG,IAAI,qBAAqB;QAAE,OAAO,SAAS,CAAC;IACnD,OAAO,IAAI,CAAC,yBAAyB,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,4BAA4B,CAAC,OAAe;IAC1D,MAAM,SAAS,GAAG,sBAAsB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACtD,IAAI,SAAS,EAAE,CAAC;QACd,sBAAsB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,0BAA0B,CAAC,OAAe;IACxD,OAAO,sBAAsB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAChD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oCAAoC,CAClD,OAAe,EACf,SAAgC;IAEhC,sBAAsB,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AACjD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CAAC,OAAe;IACtD,OAAO,sBAAsB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CAAC,OAAe;IACtD,OAAO,sBAAsB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,OAAO,CAAC,GAAG,sBAAsB,CAAC,IAAI,EAAE,CAAC,CAAC;AAC5C,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,mCAAmC,CAAC,KAGnD;IACC,OAAO,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,KAAK,KAAK,CAAC,aAAa,CAAC;AAC1F,CAAC"}
|
package/dist/focus-executor.d.ts
CHANGED
|
@@ -168,7 +168,7 @@ export declare function resolveEffectiveModel(directiveModel: string | null | un
|
|
|
168
168
|
* backend's dedicated resume-arg builder. Exported for the spawner barrel
|
|
169
169
|
* surface (legacy ./team-spawner.js consumers).
|
|
170
170
|
*/
|
|
171
|
-
export declare function buildAgentArgs(backend: AgentBackend, config: DaemonConfig, worktreePath: string, pipelineConfig: PipelineConfig | null, resumeSessionId?: string | null, allowedTools?: readonly string[]): string[];
|
|
171
|
+
export declare function buildAgentArgs(backend: AgentBackend, config: DaemonConfig, worktreePath: string, pipelineConfig: PipelineConfig | null, resumeSessionId?: string | null, allowedTools?: readonly string[], readOnly?: boolean): string[];
|
|
172
172
|
export interface SpawnFocusTeamParams {
|
|
173
173
|
config: DaemonConfig;
|
|
174
174
|
focusId: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"focus-executor.d.ts","sourceRoot":"","sources":["../src/focus-executor.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"focus-executor.d.ts","sourceRoot":"","sources":["../src/focus-executor.ts"],"names":[],"mappings":"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"}
|
package/dist/focus-executor.js
CHANGED
|
@@ -212,11 +212,11 @@ export function resolveEffectiveModel(directiveModel, spawnCodexHome, codexModel
|
|
|
212
212
|
* backend's dedicated resume-arg builder. Exported for the spawner barrel
|
|
213
213
|
* surface (legacy ./team-spawner.js consumers).
|
|
214
214
|
*/
|
|
215
|
-
export function buildAgentArgs(backend, config, worktreePath, pipelineConfig, resumeSessionId, allowedTools) {
|
|
215
|
+
export function buildAgentArgs(backend, config, worktreePath, pipelineConfig, resumeSessionId, allowedTools, readOnly) {
|
|
216
216
|
// allowedTools comes from the focus role's agent_roles.allowed_tools. The
|
|
217
217
|
// backend applies least-privilege scoping when non-empty; empty/absent =>
|
|
218
218
|
// engine default tool set (documented default policy).
|
|
219
|
-
const base = { config, worktreePath, model: pipelineConfig?.model ?? null, allowedTools };
|
|
219
|
+
const base = { config, worktreePath, model: pipelineConfig?.model ?? null, allowedTools, readOnly };
|
|
220
220
|
return resumeSessionId
|
|
221
221
|
? backend.buildResumeArgs({ ...base, resumeSessionId })
|
|
222
222
|
: backend.buildSpawnArgs(base);
|
|
@@ -731,7 +731,7 @@ export async function spawnFocusTeam(params) {
|
|
|
731
731
|
const effectivePipelineConfig = effectiveModel !== (pipelineConfig?.model ?? null)
|
|
732
732
|
? { ...pipelineConfig, model: effectiveModel }
|
|
733
733
|
: pipelineConfig;
|
|
734
|
-
const args = buildAgentArgs(backend, config, worktreePath, effectivePipelineConfig, resumeId, role.allowed_tools);
|
|
734
|
+
const args = buildAgentArgs(backend, config, worktreePath, effectivePipelineConfig, resumeId, role.allowed_tools, readOnly);
|
|
735
735
|
// On resume, send an incremental delta (what changed + prior findings to
|
|
736
736
|
// verify) instead of the full role-framework + assembly: the resumed session
|
|
737
737
|
// already holds its role and accumulated context (INJ-D). On a fresh spawn
|