@telora/daemon 0.17.78 → 0.17.86
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 +9 -5
- package/build-info.json +9 -3
- package/dist/audit-hooks.d.ts +24 -0
- package/dist/audit-hooks.d.ts.map +1 -1
- package/dist/audit-hooks.js +52 -1
- package/dist/audit-hooks.js.map +1 -1
- package/dist/audit-phase.d.ts +30 -6
- package/dist/audit-phase.d.ts.map +1 -1
- package/dist/audit-phase.js +46 -18
- package/dist/audit-phase.js.map +1 -1
- package/dist/auto-update.d.ts +8 -4
- package/dist/auto-update.d.ts.map +1 -1
- package/dist/auto-update.js +9 -5
- package/dist/auto-update.js.map +1 -1
- package/dist/cli/backfill-frt-prose.d.ts +34 -0
- package/dist/cli/backfill-frt-prose.d.ts.map +1 -1
- package/dist/cli/backfill-frt-prose.js +53 -4
- package/dist/cli/backfill-frt-prose.js.map +1 -1
- package/dist/cli/codex-provision.d.ts +28 -0
- package/dist/cli/codex-provision.d.ts.map +1 -1
- package/dist/cli/codex-provision.js +35 -1
- package/dist/cli/codex-provision.js.map +1 -1
- package/dist/cli/connect.d.ts +25 -15
- package/dist/cli/connect.d.ts.map +1 -1
- package/dist/cli/connect.js +76 -20
- package/dist/cli/connect.js.map +1 -1
- package/dist/completion/read-only-pristine.d.ts +63 -0
- package/dist/completion/read-only-pristine.d.ts.map +1 -0
- package/dist/completion/read-only-pristine.js +87 -0
- package/dist/completion/read-only-pristine.js.map +1 -0
- package/dist/completion/team-completion.d.ts.map +1 -1
- package/dist/completion/team-completion.js +20 -1
- package/dist/completion/team-completion.js.map +1 -1
- package/dist/condition-evaluators.d.ts.map +1 -1
- package/dist/condition-evaluators.js +36 -0
- package/dist/condition-evaluators.js.map +1 -1
- package/dist/focus-executor.d.ts +47 -1
- package/dist/focus-executor.d.ts.map +1 -1
- package/dist/focus-executor.js +95 -8
- package/dist/focus-executor.js.map +1 -1
- package/dist/focus-lifecycle.js +7 -7
- package/dist/focus-lifecycle.js.map +1 -1
- package/dist/focus-merge.d.ts +40 -0
- package/dist/focus-merge.d.ts.map +1 -1
- package/dist/focus-merge.js +84 -0
- package/dist/focus-merge.js.map +1 -1
- package/dist/focus-provisioning.js +7 -7
- package/dist/focus-provisioning.js.map +1 -1
- package/dist/focus-stage-lifecycle.d.ts +64 -1
- package/dist/focus-stage-lifecycle.d.ts.map +1 -1
- package/dist/focus-stage-lifecycle.js +140 -2
- package/dist/focus-stage-lifecycle.js.map +1 -1
- package/dist/index.js +14 -7
- package/dist/index.js.map +1 -1
- package/dist/listener.d.ts.map +1 -1
- package/dist/listener.js +2 -1
- package/dist/listener.js.map +1 -1
- package/dist/loop-engine.d.ts.map +1 -1
- package/dist/loop-engine.js +12 -3
- package/dist/loop-engine.js.map +1 -1
- package/dist/prompt-sections/execution-sections.d.ts.map +1 -1
- package/dist/prompt-sections/execution-sections.js +19 -1
- package/dist/prompt-sections/execution-sections.js.map +1 -1
- package/dist/prompt-sections/role-sections.d.ts +8 -0
- package/dist/prompt-sections/role-sections.d.ts.map +1 -1
- package/dist/prompt-sections/role-sections.js +46 -11
- package/dist/prompt-sections/role-sections.js.map +1 -1
- package/dist/prompts/starter-prompt.d.ts +1 -1
- package/dist/prompts/starter-prompt.d.ts.map +1 -1
- package/dist/prompts/starter-prompt.js +1 -1
- package/dist/queries/deliveries.d.ts +17 -0
- package/dist/queries/deliveries.d.ts.map +1 -1
- package/dist/queries/deliveries.js +3 -0
- package/dist/queries/deliveries.js.map +1 -1
- package/dist/queries/focuses.d.ts +48 -0
- package/dist/queries/focuses.d.ts.map +1 -1
- package/dist/queries/focuses.js +101 -0
- package/dist/queries/focuses.js.map +1 -1
- package/dist/queries/index.d.ts +2 -2
- package/dist/queries/index.d.ts.map +1 -1
- package/dist/queries/index.js +1 -1
- package/dist/queries/index.js.map +1 -1
- package/dist/queries/local-models.d.ts +26 -0
- package/dist/queries/local-models.d.ts.map +1 -0
- package/dist/queries/local-models.js +31 -0
- package/dist/queries/local-models.js.map +1 -0
- package/dist/queries/schemas.d.ts +28 -0
- package/dist/queries/schemas.d.ts.map +1 -1
- package/dist/queries/schemas.js +31 -0
- package/dist/queries/schemas.js.map +1 -1
- package/dist/retire-aware-restatement.d.ts +26 -0
- package/dist/retire-aware-restatement.d.ts.map +1 -1
- package/dist/retire-aware-restatement.js +98 -17
- package/dist/retire-aware-restatement.js.map +1 -1
- package/dist/self-update.d.ts +21 -0
- package/dist/self-update.d.ts.map +1 -1
- package/dist/self-update.js +56 -4
- package/dist/self-update.js.map +1 -1
- package/dist/spawner/lifecycle.d.ts.map +1 -1
- package/dist/spawner/lifecycle.js +9 -6
- package/dist/spawner/lifecycle.js.map +1 -1
- package/dist/templates/claude-settings.d.ts +36 -1
- package/dist/templates/claude-settings.d.ts.map +1 -1
- package/dist/templates/claude-settings.js +63 -12
- package/dist/templates/claude-settings.js.map +1 -1
- package/dist/unified-init.d.ts.map +1 -1
- package/dist/unified-init.js +40 -1
- package/dist/unified-init.js.map +1 -1
- package/dist/unified-shell.d.ts.map +1 -1
- package/dist/unified-shell.js +11 -1
- package/dist/unified-shell.js.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pristine-at-exit assertion for read-only audit focuses.
|
|
3
|
+
*
|
|
4
|
+
* A read-only audit focus is supposed to leave the worktree exactly as it found
|
|
5
|
+
* it -- discovery only, no file modifications. The write-deny settings overlay
|
|
6
|
+
* (templates/claude-settings -> audit-hooks) makes this physically true at the
|
|
7
|
+
* tool layer, and the pre-commit hook blocks commits. This module is the
|
|
8
|
+
* completion-side backstop: when a read-only team exits, assert the worktree is
|
|
9
|
+
* pristine; if it is NOT, file a (dedup-aware) escalation so an operator sees
|
|
10
|
+
* that a read-only audit modified files it shouldn't have.
|
|
11
|
+
*
|
|
12
|
+
* Modeled on delivery-advance-block.ts `ensureWorktreeCommittedBeforeAdvance`:
|
|
13
|
+
* dependency-injected collaborators, durable dedup via
|
|
14
|
+
* `hasOpenEscalationForDelivery`, fail-open lookup.
|
|
15
|
+
*
|
|
16
|
+
* @module completion/read-only-pristine
|
|
17
|
+
*/
|
|
18
|
+
import { createEscalation, hasOpenEscalationForDelivery } from '../supabase.js';
|
|
19
|
+
import { worktreeHasUncommittedChanges } from '../worktree-safety.js';
|
|
20
|
+
/**
|
|
21
|
+
* escalation_kind discriminator for the read-only-pristine violation.
|
|
22
|
+
*
|
|
23
|
+
* Reuses ADVANCE_BLOCKED -- the violation is "the daemon refuses to advance /
|
|
24
|
+
* merge this focus because its worktree is not in the expected (pristine)
|
|
25
|
+
* state", the same class as the uncommitted-changes advance block. Keeps the
|
|
26
|
+
* dedup keyed on a kind already in the escalation_kind CHECK set without a
|
|
27
|
+
* schema change.
|
|
28
|
+
*/
|
|
29
|
+
export declare const READ_ONLY_PRISTINE_ESCALATION_KIND: "advance_blocked";
|
|
30
|
+
/**
|
|
31
|
+
* Injectable collaborators for assertReadOnlyWorktreePristine. Defaults to the
|
|
32
|
+
* real implementations; tests override them to drive the violation path without
|
|
33
|
+
* a live worktree or Supabase.
|
|
34
|
+
*/
|
|
35
|
+
export interface AssertReadOnlyPristineDeps {
|
|
36
|
+
worktreeHasUncommittedChanges?: typeof worktreeHasUncommittedChanges;
|
|
37
|
+
createEscalation?: typeof createEscalation;
|
|
38
|
+
hasOpenEscalationForDelivery?: typeof hasOpenEscalationForDelivery;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Assert that a read-only focus's worktree is pristine at team exit.
|
|
42
|
+
*
|
|
43
|
+
* Returns pristine=true when the worktree has no uncommitted changes (or no
|
|
44
|
+
* worktree path is known). Returns pristine=false and files a dedup-aware
|
|
45
|
+
* escalation when uncommitted changes are present -- the caller then reverts the
|
|
46
|
+
* dirty tree and skips the merge.
|
|
47
|
+
*
|
|
48
|
+
* Dedup: at most ONE open escalation per delivery (queried via
|
|
49
|
+
* hasOpenEscalationForDelivery on the ADVANCE_BLOCKED kind). Fail-open on the
|
|
50
|
+
* lookup so a genuine first violation is never silently swallowed.
|
|
51
|
+
*/
|
|
52
|
+
export declare function assertReadOnlyWorktreePristine(params: {
|
|
53
|
+
worktreePath: string | null | undefined;
|
|
54
|
+
organizationId: string;
|
|
55
|
+
sessionId: string | null;
|
|
56
|
+
deliveryId: string;
|
|
57
|
+
focusId: string;
|
|
58
|
+
focusName: string;
|
|
59
|
+
branchName: string;
|
|
60
|
+
}, deps?: AssertReadOnlyPristineDeps): Promise<{
|
|
61
|
+
pristine: boolean;
|
|
62
|
+
}>;
|
|
63
|
+
//# sourceMappingURL=read-only-pristine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read-only-pristine.d.ts","sourceRoot":"","sources":["../../src/completion/read-only-pristine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,gBAAgB,EAAE,4BAA4B,EAAE,MAAM,gBAAgB,CAAC;AAEhF,OAAO,EAAE,6BAA6B,EAAE,MAAM,uBAAuB,CAAC;AAEtE;;;;;;;;GAQG;AACH,eAAO,MAAM,kCAAkC,mBAAmC,CAAC;AAEnF;;;;GAIG;AACH,MAAM,WAAW,0BAA0B;IACzC,6BAA6B,CAAC,EAAE,OAAO,6BAA6B,CAAC;IACrE,gBAAgB,CAAC,EAAE,OAAO,gBAAgB,CAAC;IAC3C,4BAA4B,CAAC,EAAE,OAAO,4BAA4B,CAAC;CACpE;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,8BAA8B,CAClD,MAAM,EAAE;IACN,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACxC,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB,EACD,IAAI,GAAE,0BAA+B,GACpC,OAAO,CAAC;IAAE,QAAQ,EAAE,OAAO,CAAA;CAAE,CAAC,CA0DhC"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pristine-at-exit assertion for read-only audit focuses.
|
|
3
|
+
*
|
|
4
|
+
* A read-only audit focus is supposed to leave the worktree exactly as it found
|
|
5
|
+
* it -- discovery only, no file modifications. The write-deny settings overlay
|
|
6
|
+
* (templates/claude-settings -> audit-hooks) makes this physically true at the
|
|
7
|
+
* tool layer, and the pre-commit hook blocks commits. This module is the
|
|
8
|
+
* completion-side backstop: when a read-only team exits, assert the worktree is
|
|
9
|
+
* pristine; if it is NOT, file a (dedup-aware) escalation so an operator sees
|
|
10
|
+
* that a read-only audit modified files it shouldn't have.
|
|
11
|
+
*
|
|
12
|
+
* Modeled on delivery-advance-block.ts `ensureWorktreeCommittedBeforeAdvance`:
|
|
13
|
+
* dependency-injected collaborators, durable dedup via
|
|
14
|
+
* `hasOpenEscalationForDelivery`, fail-open lookup.
|
|
15
|
+
*
|
|
16
|
+
* @module completion/read-only-pristine
|
|
17
|
+
*/
|
|
18
|
+
import { createEscalation, hasOpenEscalationForDelivery } from '../supabase.js';
|
|
19
|
+
import { withRetry, ESCALATION_REASONS, ESCALATION_DISPOSITIONS, ESCALATION_KINDS } from '@telora/daemon-core';
|
|
20
|
+
import { worktreeHasUncommittedChanges } from '../worktree-safety.js';
|
|
21
|
+
/**
|
|
22
|
+
* escalation_kind discriminator for the read-only-pristine violation.
|
|
23
|
+
*
|
|
24
|
+
* Reuses ADVANCE_BLOCKED -- the violation is "the daemon refuses to advance /
|
|
25
|
+
* merge this focus because its worktree is not in the expected (pristine)
|
|
26
|
+
* state", the same class as the uncommitted-changes advance block. Keeps the
|
|
27
|
+
* dedup keyed on a kind already in the escalation_kind CHECK set without a
|
|
28
|
+
* schema change.
|
|
29
|
+
*/
|
|
30
|
+
export const READ_ONLY_PRISTINE_ESCALATION_KIND = ESCALATION_KINDS.ADVANCE_BLOCKED;
|
|
31
|
+
/**
|
|
32
|
+
* Assert that a read-only focus's worktree is pristine at team exit.
|
|
33
|
+
*
|
|
34
|
+
* Returns pristine=true when the worktree has no uncommitted changes (or no
|
|
35
|
+
* worktree path is known). Returns pristine=false and files a dedup-aware
|
|
36
|
+
* escalation when uncommitted changes are present -- the caller then reverts the
|
|
37
|
+
* dirty tree and skips the merge.
|
|
38
|
+
*
|
|
39
|
+
* Dedup: at most ONE open escalation per delivery (queried via
|
|
40
|
+
* hasOpenEscalationForDelivery on the ADVANCE_BLOCKED kind). Fail-open on the
|
|
41
|
+
* lookup so a genuine first violation is never silently swallowed.
|
|
42
|
+
*/
|
|
43
|
+
export async function assertReadOnlyWorktreePristine(params, deps = {}) {
|
|
44
|
+
const hasUncommitted = deps.worktreeHasUncommittedChanges ?? worktreeHasUncommittedChanges;
|
|
45
|
+
const createEsc = deps.createEscalation ?? createEscalation;
|
|
46
|
+
const hasOpenEsc = deps.hasOpenEscalationForDelivery ?? hasOpenEscalationForDelivery;
|
|
47
|
+
const { worktreePath, organizationId, sessionId, deliveryId, focusId, focusName, branchName } = params;
|
|
48
|
+
if (!worktreePath || !hasUncommitted(worktreePath)) {
|
|
49
|
+
return { pristine: true };
|
|
50
|
+
}
|
|
51
|
+
console.warn(`[focus-executor] READ-ONLY PRISTINE VIOLATION: audit "${focusName}" left uncommitted changes in ${worktreePath}.`);
|
|
52
|
+
// Durable dedup: skip filing if an open escalation already exists for this
|
|
53
|
+
// delivery. Fail open -- a lookup error proceeds to file.
|
|
54
|
+
let alreadyOpen = false;
|
|
55
|
+
try {
|
|
56
|
+
alreadyOpen = await hasOpenEsc(deliveryId, READ_ONLY_PRISTINE_ESCALATION_KIND);
|
|
57
|
+
}
|
|
58
|
+
catch (err) {
|
|
59
|
+
console.warn(`[focus-executor] Open read-only-pristine escalation lookup failed for "${focusName}", proceeding to file: ${err.message}`);
|
|
60
|
+
}
|
|
61
|
+
if (alreadyOpen) {
|
|
62
|
+
return { pristine: false };
|
|
63
|
+
}
|
|
64
|
+
try {
|
|
65
|
+
await withRetry(() => createEsc({
|
|
66
|
+
organizationId,
|
|
67
|
+
sessionId: sessionId ?? '',
|
|
68
|
+
issueId: null,
|
|
69
|
+
reasonType: ESCALATION_REASONS.ERROR_ENCOUNTERED,
|
|
70
|
+
disposition: ESCALATION_DISPOSITIONS.NEEDS_OPERATOR,
|
|
71
|
+
escalationKind: READ_ONLY_PRISTINE_ESCALATION_KIND,
|
|
72
|
+
anchor: { deliveryId, focusId, branch: branchName },
|
|
73
|
+
description: `Read-only audit "${focusName}" left uncommitted changes in its worktree.\n\n` +
|
|
74
|
+
`A read-only audit focus must leave the worktree pristine (discovery ` +
|
|
75
|
+
`only -- no file modifications). The daemon has reverted the changes ` +
|
|
76
|
+
`and will NOT merge this focus. Review what the audit modified.`,
|
|
77
|
+
whatWasTried: 'On read-only team exit the daemon ran `git status --porcelain` and found uncommitted changes in the focus worktree, which a read-only audit must never produce.',
|
|
78
|
+
helpNeeded: `Inspect the audit session for "${focusName}"; the worktree at ${worktreePath} has been reverted. No merge was performed.`,
|
|
79
|
+
}), { maxAttempts: 3, label: 'escalation-read-only-pristine' });
|
|
80
|
+
console.log(`[focus-executor] Filed read-only-pristine escalation for "${focusName}"`);
|
|
81
|
+
}
|
|
82
|
+
catch (err) {
|
|
83
|
+
console.error(`[focus-executor] Failed to file read-only-pristine escalation for "${focusName}": ${err.message}`);
|
|
84
|
+
}
|
|
85
|
+
return { pristine: false };
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=read-only-pristine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read-only-pristine.js","sourceRoot":"","sources":["../../src/completion/read-only-pristine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,gBAAgB,EAAE,4BAA4B,EAAE,MAAM,gBAAgB,CAAC;AAChF,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC/G,OAAO,EAAE,6BAA6B,EAAE,MAAM,uBAAuB,CAAC;AAEtE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,gBAAgB,CAAC,eAAe,CAAC;AAanF;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAClD,MAQC,EACD,OAAmC,EAAE;IAErC,MAAM,cAAc,GAAG,IAAI,CAAC,6BAA6B,IAAI,6BAA6B,CAAC;IAC3F,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,IAAI,gBAAgB,CAAC;IAC5D,MAAM,UAAU,GAAG,IAAI,CAAC,4BAA4B,IAAI,4BAA4B,CAAC;IAErF,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;IAEvG,IAAI,CAAC,YAAY,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE,CAAC;QACnD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC5B,CAAC;IAED,OAAO,CAAC,IAAI,CACV,yDAAyD,SAAS,iCAAiC,YAAY,GAAG,CACnH,CAAC;IAEF,2EAA2E;IAC3E,0DAA0D;IAC1D,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,IAAI,CAAC;QACH,WAAW,GAAG,MAAM,UAAU,CAAC,UAAU,EAAE,kCAAkC,CAAC,CAAC;IACjF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CACV,0EAA0E,SAAS,0BAA2B,GAAa,CAAC,OAAO,EAAE,CACtI,CAAC;IACJ,CAAC;IACD,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAC7B,CAAC;IAED,IAAI,CAAC;QACH,MAAM,SAAS,CACb,GAAG,EAAE,CAAC,SAAS,CAAC;YACd,cAAc;YACd,SAAS,EAAE,SAAS,IAAI,EAAE;YAC1B,OAAO,EAAE,IAAI;YACb,UAAU,EAAE,kBAAkB,CAAC,iBAAiB;YAChD,WAAW,EAAE,uBAAuB,CAAC,cAAc;YACnD,cAAc,EAAE,kCAAkC;YAClD,MAAM,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE;YACnD,WAAW,EACT,oBAAoB,SAAS,iDAAiD;gBAC9E,sEAAsE;gBACtE,sEAAsE;gBACtE,gEAAgE;YAClE,YAAY,EACV,iKAAiK;YACnK,UAAU,EAAE,kCAAkC,SAAS,sBAAsB,YAAY,6CAA6C;SACvI,CAAC,EACF,EAAE,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,+BAA+B,EAAE,CAC3D,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,6DAA6D,SAAS,GAAG,CAAC,CAAC;IACzF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CACX,sEAAsE,SAAS,MAAO,GAAa,CAAC,OAAO,EAAE,CAC9G,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AAC7B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"team-completion.d.ts","sourceRoot":"","sources":["../../src/completion/team-completion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAqB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"team-completion.d.ts","sourceRoot":"","sources":["../../src/completion/team-completion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAqB,MAAM,aAAa,CAAC;AAuBnF,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACnF,OAAO,EACL,KAAK,sBAAsB,EAC3B,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,kBAAkB,EAClB,4BAA4B,EAC5B,uBAAuB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,EAC5B,iBAAiB,EACjB,6BAA6B,EAC7B,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,KAAK,mBAAmB,EACxB,uBAAuB,GACxB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,oBAAoB,GACrB,MAAM,wBAAwB,CAAC;AAEhC,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,YAAY,CAAC;IACrB,SAAS,EAAE,cAAc,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAiID;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsKtF"}
|
|
@@ -24,6 +24,7 @@ import { getActiveTeams } from '../focus-team-state.js';
|
|
|
24
24
|
import { commitWipChanges, worktreeHasUncommittedChanges, branchHasUnmergedCommits, runGitSync } from '../git.js';
|
|
25
25
|
import { computeGitDiffStats } from '../git-utils.js';
|
|
26
26
|
import { getFocusDeliveries } from '../queries/focuses.js';
|
|
27
|
+
import { assertReadOnlyWorktreePristine } from './read-only-pristine.js';
|
|
27
28
|
import { classifyTeamExit, deriveExitCategory } from './exit-classification.js';
|
|
28
29
|
import { selectWorkedDeliveryIds, attemptFocusMerge, escalateFailedMergeDeliveries, runCiMergeToMain, } from './merge-phase.js';
|
|
29
30
|
import { advanceDeliveryStatuses } from './status-advance-phase.js';
|
|
@@ -87,9 +88,27 @@ async function runReadOnlyGuardPhase(config, teamState, sessionId) {
|
|
|
87
88
|
return false;
|
|
88
89
|
const { focusId, focusName, branchName } = teamState;
|
|
89
90
|
const worktreePath = teamState.worktreePath;
|
|
90
|
-
//
|
|
91
|
+
// Pristine-at-exit assertion: a read-only audit must leave the worktree
|
|
92
|
+
// pristine. If it didn't, file a (dedup-aware) escalation BEFORE reverting,
|
|
93
|
+
// so an operator sees that the audit modified files it shouldn't have. The
|
|
94
|
+
// write-deny overlay should make this impossible at the tool layer; this is
|
|
95
|
+
// the completion-side backstop.
|
|
91
96
|
const hasChanges = worktreeHasUncommittedChanges(worktreePath);
|
|
92
97
|
if (hasChanges) {
|
|
98
|
+
// A representative delivery anchors the escalation. Prefer a worked/known
|
|
99
|
+
// delivery; the audit-focus case may have none, in which case the focusId
|
|
100
|
+
// anchor still carries provenance.
|
|
101
|
+
const representativeDeliveryId = [...teamState.knownDeliveryIds][0] ?? '';
|
|
102
|
+
await assertReadOnlyWorktreePristine({
|
|
103
|
+
worktreePath,
|
|
104
|
+
organizationId: teamState.organizationId,
|
|
105
|
+
sessionId,
|
|
106
|
+
deliveryId: representativeDeliveryId,
|
|
107
|
+
focusId,
|
|
108
|
+
focusName,
|
|
109
|
+
branchName,
|
|
110
|
+
});
|
|
111
|
+
// Revert the uncommitted changes so the worktree returns to pristine.
|
|
93
112
|
console.warn(`[focus-executor] Read-only audit "${focusName}" left uncommitted changes. Reverting.`);
|
|
94
113
|
runGitSync(['checkout', '.'], worktreePath);
|
|
95
114
|
runGitSync(['clean', '-fd'], worktreePath);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"team-completion.js","sourceRoot":"","sources":["../../src/completion/team-completion.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"team-completion.js","sourceRoot":"","sources":["../../src/completion/team-completion.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"condition-evaluators.d.ts","sourceRoot":"","sources":["../src/condition-evaluators.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAMjE;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAI1D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAU3F;AAMD;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,CACjC,IAAI,EAAE,kBAAkB,EACxB,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,iBAAiB,KACnB,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"condition-evaluators.d.ts","sourceRoot":"","sources":["../src/condition-evaluators.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAMjE;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAI1D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAU3F;AAMD;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,CACjC,IAAI,EAAE,kBAAkB,EACxB,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,iBAAiB,KACnB,mBAAmB,CAAC;AA4ezB;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,kBAAkB,EACxB,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,iBAAiB,GACrB,mBAAmB,CASrB"}
|
|
@@ -371,6 +371,41 @@ function evaluateWallClock(node, nodeId, ctx) {
|
|
|
371
371
|
: `Wall clock (${Math.round(observed)}${unit}) does not satisfy ${operator} ${expected}${unit}`,
|
|
372
372
|
};
|
|
373
373
|
}
|
|
374
|
+
/**
|
|
375
|
+
* human_ratification: passes only when a human has ratified the focus's
|
|
376
|
+
* remediation plan (sourced from product_focuses.ratified_at IS NOT NULL,
|
|
377
|
+
* surfaced as a `humanRatified` flag on the evaluation context).
|
|
378
|
+
*
|
|
379
|
+
* The load-bearing crossing for the Safe audit-to-remediation gate is the
|
|
380
|
+
* daemon focus-phase transition `releaseRatifiedReadOnlyFocus` (which reads
|
|
381
|
+
* focus.ratifiedAt directly); this condition is the guard-engine vocabulary
|
|
382
|
+
* for expressing the same gate once focus-level guard evaluation is wired.
|
|
383
|
+
* The context field is read defensively via a narrow local type so this
|
|
384
|
+
* evaluator stays self-contained -- it does NOT require the shared
|
|
385
|
+
* `EvaluationContext` (in @telora/daemon-core) to declare the field, which
|
|
386
|
+
* keeps the daemon-core package untouched until a focus-level guard actually
|
|
387
|
+
* populates the signal.
|
|
388
|
+
*
|
|
389
|
+
* FAIL-CLOSED: when the context carries no ratification signal (humanRatified
|
|
390
|
+
* absent or false) the condition BLOCKS. The whole point of the gate is that
|
|
391
|
+
* crossing planning->execution requires a genuine, distinct human signal -- so
|
|
392
|
+
* a missing signal must never read as satisfied. There is no node parameter:
|
|
393
|
+
* ratification is binary and contextual.
|
|
394
|
+
*/
|
|
395
|
+
function evaluateHumanRatification(node, nodeId, ctx) {
|
|
396
|
+
const conditionType = node.condition_type ?? 'human_ratification';
|
|
397
|
+
const ratified = ctx.humanRatified === true;
|
|
398
|
+
return {
|
|
399
|
+
condition_id: nodeId,
|
|
400
|
+
condition_type: conditionType,
|
|
401
|
+
passed: ratified,
|
|
402
|
+
observed_value: ratified,
|
|
403
|
+
expected_value: true,
|
|
404
|
+
message: ratified
|
|
405
|
+
? 'Human has ratified the remediation plan'
|
|
406
|
+
: 'No human ratification signal -- blocked (fail-closed; ratification required to cross planning->execution)',
|
|
407
|
+
};
|
|
408
|
+
}
|
|
374
409
|
function evaluateUnknown(node, nodeId, _ctx) {
|
|
375
410
|
const conditionType = node.condition_type ?? 'unknown';
|
|
376
411
|
console.warn(`[guard] Unknown condition type "${conditionType}" -- blocking (possible misconfiguration)`);
|
|
@@ -400,6 +435,7 @@ const conditionEvaluators = {
|
|
|
400
435
|
all_work_units_completed: evaluateAllWorkUnitsCompleted,
|
|
401
436
|
cycle_count: evaluateCycleCount,
|
|
402
437
|
wall_clock: evaluateWallClock,
|
|
438
|
+
human_ratification: evaluateHumanRatification,
|
|
403
439
|
};
|
|
404
440
|
/**
|
|
405
441
|
* Evaluate a single leaf condition against the evaluation context.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"condition-evaluators.js","sourceRoot":"","sources":["../src/condition-evaluators.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"condition-evaluators.js","sourceRoot":"","sources":["../src/condition-evaluators.ts"],"names":[],"mappings":"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"}
|
package/dist/focus-executor.d.ts
CHANGED
|
@@ -31,7 +31,8 @@ import type { DaemonConfig, AgentRole, PipelineConfig } from './types.js';
|
|
|
31
31
|
import { type ResourceGovernor } from '@telora/daemon-core';
|
|
32
32
|
import { getFocusDeliveries } from './queries/focuses.js';
|
|
33
33
|
import './assembly-resolvers.js';
|
|
34
|
-
import { type
|
|
34
|
+
import { type LocalModelCoordinates } from './queries/local-models.js';
|
|
35
|
+
import { type AgentBackend, type EngineOverride, type EnginePass } from './backends/index.js';
|
|
35
36
|
export { getActiveTeams, hasActiveTeam, getActiveTeamCount, } from './focus-team-state.js';
|
|
36
37
|
export { mergeFocusBranch, } from './focus-merge.js';
|
|
37
38
|
export { handleTeamCompletion, advanceDeliveryStatuses, isStatusTerminal, isStatusAgentActionable, } from './completion/index.js';
|
|
@@ -112,6 +113,43 @@ export declare function generateFocusBranchName(role: AgentRole, focusName: stri
|
|
|
112
113
|
export declare function codexHomeForSpawn(engineId: string, config: {
|
|
113
114
|
codexHome?: string;
|
|
114
115
|
}): string | undefined;
|
|
116
|
+
/**
|
|
117
|
+
* Select the per-pass local model ref to resolve for this spawn, or null.
|
|
118
|
+
*
|
|
119
|
+
* Pure + testable. A ref applies ONLY to a codex-engine spawn whose focus has a
|
|
120
|
+
* non-empty localModelOverride entry for the pass being spawned. Every other
|
|
121
|
+
* case (claude engine, no override, blank ref) returns null so the spawn keeps
|
|
122
|
+
* its per-product / engine-default behavior unchanged.
|
|
123
|
+
*/
|
|
124
|
+
export declare function selectLocalModelRef(engineId: string, pass: EnginePass, localModelOverride: Record<string, string | null> | null | undefined): string | null;
|
|
125
|
+
/**
|
|
126
|
+
* Decide what a codex spawn should do with a selected local-model ref, given the
|
|
127
|
+
* resolved coordinates and a way to look up env vars. Pure + testable: it holds
|
|
128
|
+
* NO I/O (the DB call that produces `coords` and the CODEX_HOME write/session
|
|
129
|
+
* update happen in the caller). It only renders the routing DECISION:
|
|
130
|
+
*
|
|
131
|
+
* - ref null -> { kind: 'none' } (no local model selected)
|
|
132
|
+
* - ref set but coords null -> { kind: 'fallback' } (ref not in registry)
|
|
133
|
+
* - coords present + key env unset -> { kind: 'skip' } (fail closed)
|
|
134
|
+
* - coords present + key env set -> { kind: 'route' } (route the spawn)
|
|
135
|
+
*
|
|
136
|
+
* Reached only when a ref exists upstream (codex-only is already enforced by
|
|
137
|
+
* `selectLocalModelRef`); `coords` is `getLocalModel(ref)`'s result.
|
|
138
|
+
*/
|
|
139
|
+
export type LocalModelRouting = {
|
|
140
|
+
kind: 'none';
|
|
141
|
+
} | {
|
|
142
|
+
kind: 'fallback';
|
|
143
|
+
} | {
|
|
144
|
+
kind: 'skip';
|
|
145
|
+
envName: string;
|
|
146
|
+
coords: LocalModelCoordinates;
|
|
147
|
+
} | {
|
|
148
|
+
kind: 'route';
|
|
149
|
+
envName: string;
|
|
150
|
+
coords: LocalModelCoordinates;
|
|
151
|
+
};
|
|
152
|
+
export declare function decideLocalModelRouting(ref: string | null, coords: LocalModelCoordinates | null, envLookup: (name: string) => string | undefined): LocalModelRouting;
|
|
115
153
|
/**
|
|
116
154
|
* Resolve the effective model id for a spawn. Priority (most specific wins):
|
|
117
155
|
* 1. directiveModel -- a stage-directive model override
|
|
@@ -150,6 +188,14 @@ export interface SpawnFocusTeamParams {
|
|
|
150
188
|
* inherit the org default. Fed into resolveBackend() (D3).
|
|
151
189
|
*/
|
|
152
190
|
engineOverride?: EngineOverride | null;
|
|
191
|
+
/**
|
|
192
|
+
* Per-focus selected local model (per-pass map {coding?, review?} of
|
|
193
|
+
* local_models ids); null/absent = no specific local model selected. When the
|
|
194
|
+
* resolved engine for a pass is codex and this carries a ref for that pass,
|
|
195
|
+
* the daemon resolves the ref to coordinates and routes the spawn to that
|
|
196
|
+
* model's endpoint (D3).
|
|
197
|
+
*/
|
|
198
|
+
localModelOverride?: Record<string, string | null> | null;
|
|
153
199
|
/** Org-level default engine id; null/absent = the global default ('claude'). */
|
|
154
200
|
orgDefaultEngine?: string | null;
|
|
155
201
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"focus-executor.d.ts","sourceRoot":"","sources":["../src/focus-executor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAIH,OAAO,KAAK,EACV,YAAY,EACZ,SAAS,EAET,cAAc,EACf,MAAM,YAAY,CAAC;AASpB,OAAO,EAA2B,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAIrF,OAAO,EAAE,kBAAkB,EAAsG,MAAM,sBAAsB,CAAC;AAa9J,OAAO,yBAAyB,CAAC;
|
|
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
|
@@ -31,7 +31,7 @@ import { spawn } from 'node:child_process';
|
|
|
31
31
|
import { mkdirSync, existsSync } from 'node:fs';
|
|
32
32
|
import { createSession, updateSession, getActiveFocuses, } from './supabase.js';
|
|
33
33
|
import { createWorktree, runGitSync, repoHasCommits } from './git.js';
|
|
34
|
-
import {
|
|
34
|
+
import { installReadOnlyAuditGuards } from './audit-hooks.js';
|
|
35
35
|
import { getFocusWorktree, setFocusWorktree } from './focus-worktree-state.js';
|
|
36
36
|
import { withRetry, productLabel } from '@telora/daemon-core';
|
|
37
37
|
import { recordActivity } from './heartbeat.js';
|
|
@@ -54,6 +54,8 @@ import './assembly-resolvers.js';
|
|
|
54
54
|
import { isStatusAgentActionable, isStatusBlocking } from './stage-classifier.js';
|
|
55
55
|
import { filterReviewFiledIssues } from './review-defect-detector.js';
|
|
56
56
|
import { getActiveFocuses as fetchActiveFocusesForReviewState } from './queries/deliveries.js';
|
|
57
|
+
import { getLocalModel } from './queries/local-models.js';
|
|
58
|
+
import { writeLocalModelCodexHome, resolveApiKeyEnv } from './cli/codex-provision.js';
|
|
57
59
|
// ── Imports from extracted modules ──────────────────────────────────────
|
|
58
60
|
import { getActiveTeams, deriveExecutionConfig, } from './focus-team-state.js';
|
|
59
61
|
// Import the spawn helpers from their defining module (NOT the spawner barrel):
|
|
@@ -165,6 +167,30 @@ export function generateFocusBranchName(role, focusName, focusId) {
|
|
|
165
167
|
export function codexHomeForSpawn(engineId, config) {
|
|
166
168
|
return engineId === 'codex' && config.codexHome ? config.codexHome : undefined;
|
|
167
169
|
}
|
|
170
|
+
/**
|
|
171
|
+
* Select the per-pass local model ref to resolve for this spawn, or null.
|
|
172
|
+
*
|
|
173
|
+
* Pure + testable. A ref applies ONLY to a codex-engine spawn whose focus has a
|
|
174
|
+
* non-empty localModelOverride entry for the pass being spawned. Every other
|
|
175
|
+
* case (claude engine, no override, blank ref) returns null so the spawn keeps
|
|
176
|
+
* its per-product / engine-default behavior unchanged.
|
|
177
|
+
*/
|
|
178
|
+
export function selectLocalModelRef(engineId, pass, localModelOverride) {
|
|
179
|
+
if (engineId !== 'codex')
|
|
180
|
+
return null;
|
|
181
|
+
const ref = localModelOverride?.[pass];
|
|
182
|
+
return typeof ref === 'string' && ref.trim().length > 0 ? ref.trim() : null;
|
|
183
|
+
}
|
|
184
|
+
export function decideLocalModelRouting(ref, coords, envLookup) {
|
|
185
|
+
if (!ref)
|
|
186
|
+
return { kind: 'none' };
|
|
187
|
+
if (!coords)
|
|
188
|
+
return { kind: 'fallback' };
|
|
189
|
+
const envName = resolveApiKeyEnv(coords.apiKeyEnv);
|
|
190
|
+
if (!envLookup(envName))
|
|
191
|
+
return { kind: 'skip', envName, coords };
|
|
192
|
+
return { kind: 'route', envName, coords };
|
|
193
|
+
}
|
|
168
194
|
/**
|
|
169
195
|
* Resolve the effective model id for a spawn. Priority (most specific wins):
|
|
170
196
|
* 1. directiveModel -- a stage-directive model override
|
|
@@ -203,7 +229,7 @@ export function buildAgentArgs(backend, config, worktreePath, pipelineConfig, re
|
|
|
203
229
|
* and issues, builds a task DAG, and coordinates worker execution.
|
|
204
230
|
*/
|
|
205
231
|
export async function spawnFocusTeam(params) {
|
|
206
|
-
const { config, focusId, focusName, role, pipelineConfig, readOnly = false, claudeSessionIds, engineOverride, orgDefaultEngine, forceSpawn = false } = params;
|
|
232
|
+
const { config, focusId, focusName, role, pipelineConfig, readOnly = false, claudeSessionIds, engineOverride, localModelOverride, orgDefaultEngine, forceSpawn = false } = params;
|
|
207
233
|
const activeTeams = getActiveTeams();
|
|
208
234
|
// The agent backend is resolved per-pass below, once the spawn's lineage
|
|
209
235
|
// (coding vs review) is known -- see resolveBackend() after lineage resolution.
|
|
@@ -398,6 +424,14 @@ export async function spawnFocusTeam(params) {
|
|
|
398
424
|
console.warn(`[focus-executor] Rebase failed for "${focusName}", continuing with existing state`);
|
|
399
425
|
}
|
|
400
426
|
console.log(` Worktree (reused): ${worktreePath}`);
|
|
427
|
+
// Re-assert read-only audit guards on the reused worktree. ensureFocusWorktrees
|
|
428
|
+
// installs them at provisioning time, but a read-only focus may reuse a
|
|
429
|
+
// persistent worktree across daemon restarts -- re-applying here (idempotent)
|
|
430
|
+
// guarantees the deny overlay + pre-commit hook are present before spawn.
|
|
431
|
+
if (readOnly) {
|
|
432
|
+
installReadOnlyAuditGuards(worktreePath);
|
|
433
|
+
console.log(` Re-asserted read-only audit guards (reused worktree)`);
|
|
434
|
+
}
|
|
401
435
|
}
|
|
402
436
|
else {
|
|
403
437
|
// Guard: can't create worktrees in a repo with no commits
|
|
@@ -419,10 +453,10 @@ export async function spawnFocusTeam(params) {
|
|
|
419
453
|
createdAt: new Date(),
|
|
420
454
|
});
|
|
421
455
|
console.log(` Worktree (created inline): ${worktreePath}`);
|
|
422
|
-
// Install audit pre-commit hook
|
|
456
|
+
// Install read-only audit guards (pre-commit hook + write-deny overlay)
|
|
423
457
|
if (readOnly) {
|
|
424
|
-
|
|
425
|
-
console.log(` Installed audit
|
|
458
|
+
installReadOnlyAuditGuards(worktreePath);
|
|
459
|
+
console.log(` Installed read-only audit guards (read-only mode)`);
|
|
426
460
|
}
|
|
427
461
|
}
|
|
428
462
|
catch (err) {
|
|
@@ -632,10 +666,63 @@ export async function spawnFocusTeam(params) {
|
|
|
632
666
|
// Resolve the per-product isolated CODEX_HOME for this spawn (undefined for
|
|
633
667
|
// claude engines and cloud products with no provisioned codexHome -- those
|
|
634
668
|
// spawns are byte-for-byte unaffected).
|
|
635
|
-
|
|
636
|
-
|
|
669
|
+
let spawnCodexHome = codexHomeForSpawn(resolvedEngine.engineId, config);
|
|
670
|
+
let spawnCodexModel = config.codexModel;
|
|
671
|
+
// Per-pass local model routing (D3): if this codex pass selected a registered
|
|
672
|
+
// local model, resolve it to coordinates, provision a per-model CODEX_HOME,
|
|
673
|
+
// and route the spawn there -- overriding the per-product codexHome/codexModel
|
|
674
|
+
// for this pass only. Absent ref => the per-product default above is kept, so
|
|
675
|
+
// existing spawns are unaffected. Coding and review can resolve different
|
|
676
|
+
// models within one focus because resolution is keyed on enginePass.
|
|
677
|
+
const localModelRef = selectLocalModelRef(resolvedEngine.engineId, enginePass, localModelOverride);
|
|
678
|
+
// getLocalModel (the DB call) stays here; decideLocalModelRouting is the pure
|
|
679
|
+
// decision over its result. coords is only fetched when a ref exists.
|
|
680
|
+
const localModelCoords = localModelRef ? await getLocalModel(localModelRef) : null;
|
|
681
|
+
const localModelRouting = decideLocalModelRouting(localModelRef, localModelCoords, (n) => process.env[n]);
|
|
682
|
+
if (localModelRouting.kind === 'fallback') {
|
|
683
|
+
console.warn(`[focus-executor] Focus "${focusName}" ${enginePass} pass selected local model ` +
|
|
684
|
+
`${(localModelRef ?? '').slice(0, 8)} but it is not in the registry; falling back to the ` +
|
|
685
|
+
`per-product default model.`);
|
|
686
|
+
}
|
|
687
|
+
else if (localModelRouting.kind === 'skip') {
|
|
688
|
+
const { coords, envName } = localModelRouting;
|
|
689
|
+
// Fail closed: never spawn a local-model pass against a server whose API
|
|
690
|
+
// key env var is unset on the daemon host. Mark the already-created session
|
|
691
|
+
// terminal (mirroring the governor-denied / sandbox-unavailable paths so the
|
|
692
|
+
// row does not linger non-terminal), clean up the registered team state, and
|
|
693
|
+
// skip this spawn (a later poll retries once the operator sets the var).
|
|
694
|
+
// Surfaced loudly so the misconfiguration is actionable.
|
|
695
|
+
console.error(`[focus-executor] Cannot route "${focusName}" ${enginePass} pass to local model ` +
|
|
696
|
+
`"${coords.name}" (${coords.model} @ ${coords.baseUrl}): required API-key env var ` +
|
|
697
|
+
`${envName} is not set on the daemon host. Set ${envName} and re-run; skipping spawn.`);
|
|
698
|
+
await updateSession(session.id, {
|
|
699
|
+
status: 'failed',
|
|
700
|
+
exit_reason: `Required API-key env var ${envName} is not set for local model "${coords.name}"`,
|
|
701
|
+
exit_category: 'local_model_key_unset',
|
|
702
|
+
ended_at: new Date().toISOString(),
|
|
703
|
+
}).catch(updateErr => {
|
|
704
|
+
console.warn(`[focus-executor] Failed to update session after local-model key-unset:`, updateErr.message);
|
|
705
|
+
});
|
|
706
|
+
activeTeams.delete(focusId);
|
|
707
|
+
return;
|
|
708
|
+
}
|
|
709
|
+
else if (localModelRouting.kind === 'route') {
|
|
710
|
+
const { coords, envName } = localModelRouting;
|
|
711
|
+
const { codexHome } = writeLocalModelCodexHome(coords.id, {
|
|
712
|
+
baseUrl: coords.baseUrl,
|
|
713
|
+
model: coords.model,
|
|
714
|
+
wireApi: coords.wireApi ?? undefined,
|
|
715
|
+
apiKeyEnv: coords.apiKeyEnv ?? undefined,
|
|
716
|
+
});
|
|
717
|
+
spawnCodexHome = codexHome;
|
|
718
|
+
spawnCodexModel = coords.model;
|
|
719
|
+
console.log(`[focus-executor] Routing "${focusName}" ${enginePass} pass to local model ` +
|
|
720
|
+
`"${coords.name}" (${coords.model} @ ${coords.baseUrl}); CODEX_HOME=${codexHome}, ` +
|
|
721
|
+
`key env=${envName}.`);
|
|
722
|
+
}
|
|
723
|
+
// Model selection: directive override > resolved local model > pipeline default.
|
|
637
724
|
// resolveEffectiveModel is exported for unit testing.
|
|
638
|
-
const effectiveModel = resolveEffectiveModel(directiveModel, spawnCodexHome,
|
|
725
|
+
const effectiveModel = resolveEffectiveModel(directiveModel, spawnCodexHome, spawnCodexModel, pipelineConfig?.model);
|
|
639
726
|
const effectivePipelineConfig = effectiveModel !== (pipelineConfig?.model ?? null)
|
|
640
727
|
? { ...pipelineConfig, model: effectiveModel }
|
|
641
728
|
: pipelineConfig;
|