@telora/daemon 0.15.26 → 0.15.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/build-info.json +2 -2
- package/dist/cli/session-state.d.ts +25 -0
- package/dist/cli/session-state.d.ts.map +1 -0
- package/dist/cli/session-state.js +192 -0
- package/dist/cli/session-state.js.map +1 -0
- package/dist/focus-completion.d.ts +12 -4
- package/dist/focus-completion.d.ts.map +1 -1
- package/dist/focus-completion.js +35 -19
- package/dist/focus-completion.js.map +1 -1
- package/dist/focus-engine.d.ts.map +1 -1
- package/dist/focus-engine.js +19 -0
- package/dist/focus-engine.js.map +1 -1
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -1
- package/dist/merge-back-loop.d.ts +103 -0
- package/dist/merge-back-loop.d.ts.map +1 -0
- package/dist/merge-back-loop.js +440 -0
- package/dist/merge-back-loop.js.map +1 -0
- package/dist/queries/issues.d.ts +41 -0
- package/dist/queries/issues.d.ts.map +1 -1
- package/dist/queries/issues.js +39 -0
- package/dist/queries/issues.js.map +1 -1
- package/dist/queries/sessions.d.ts +11 -0
- package/dist/queries/sessions.d.ts.map +1 -1
- package/dist/queries/sessions.js +28 -0
- package/dist/queries/sessions.js.map +1 -1
- package/dist/stage-classifier.d.ts +1 -1
- package/dist/stage-classifier.d.ts.map +1 -1
- package/dist/stage-classifier.js +3 -3
- package/dist/stage-classifier.js.map +1 -1
- package/dist/worktree-state.d.ts +58 -0
- package/dist/worktree-state.d.ts.map +1 -0
- package/dist/worktree-state.js +135 -0
- package/dist/worktree-state.js.map +1 -0
- package/package.json +1 -1
package/dist/queries/issues.d.ts
CHANGED
|
@@ -28,11 +28,52 @@ export interface CreateEscalationParams {
|
|
|
28
28
|
description: string;
|
|
29
29
|
whatWasTried?: string;
|
|
30
30
|
helpNeeded?: string;
|
|
31
|
+
/**
|
|
32
|
+
* Optional discriminator for the kind of escalation (e.g. 'stuck_focus_branch').
|
|
33
|
+
* Persisted on `agent_escalations.escalation_kind` when present.
|
|
34
|
+
*/
|
|
35
|
+
escalationKind?: string;
|
|
36
|
+
/**
|
|
37
|
+
* Optional structured metadata (e.g. { branch_name, focus_id }).
|
|
38
|
+
* Persisted on `agent_escalations.metadata` when present.
|
|
39
|
+
*/
|
|
40
|
+
metadata?: Record<string, unknown>;
|
|
31
41
|
}
|
|
32
42
|
/**
|
|
33
43
|
* Create an escalation request.
|
|
34
44
|
*/
|
|
35
45
|
export declare function createEscalation(params: CreateEscalationParams): Promise<void>;
|
|
46
|
+
/**
|
|
47
|
+
* Minimal shape of an escalation row returned by listPendingEscalations.
|
|
48
|
+
* Only includes the fields needed by the merge-back loop.
|
|
49
|
+
*/
|
|
50
|
+
export interface PendingEscalation {
|
|
51
|
+
id: string;
|
|
52
|
+
reasonType: string;
|
|
53
|
+
description: string;
|
|
54
|
+
whatWasTried: string | null;
|
|
55
|
+
helpNeeded: string | null;
|
|
56
|
+
escalationKind?: string | null;
|
|
57
|
+
metadata?: Record<string, unknown> | null;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* List open (not-yet-resolved) escalations for the organization.
|
|
61
|
+
*
|
|
62
|
+
* Returns rows with status in `('pending', 'in_review')` -- both are
|
|
63
|
+
* "open" from a dedup perspective. An operator may move a stuck-branch
|
|
64
|
+
* escalation to `in_review` while triaging; the merge-back loop must
|
|
65
|
+
* still treat it as suppressing duplicates so it does not file a second
|
|
66
|
+
* `pending` row for the same branch.
|
|
67
|
+
*
|
|
68
|
+
* Used by the merge-back loop to detect when a branch already has an
|
|
69
|
+
* unresolved merge-conflict escalation, and to find existing stuck-branch
|
|
70
|
+
* escalations for dedup / auto-resolution.
|
|
71
|
+
*/
|
|
72
|
+
export declare function listPendingEscalations(): Promise<PendingEscalation[]>;
|
|
73
|
+
/**
|
|
74
|
+
* Mark an escalation as resolved with optional notes.
|
|
75
|
+
*/
|
|
76
|
+
export declare function markEscalationResolved(escalationId: string, resolutionNotes?: string): Promise<void>;
|
|
36
77
|
/**
|
|
37
78
|
* Create an issue on a delivery (for create_issue trigger action).
|
|
38
79
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"issues.d.ts","sourceRoot":"","sources":["../../src/queries/issues.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAIL,mBAAmB,EACpB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,KAAK,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEpD;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAO/E;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAOjF;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAYtF;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"issues.d.ts","sourceRoot":"","sources":["../../src/queries/issues.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAIL,mBAAmB,EACpB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,KAAK,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEpD;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAO/E;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAOjF;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAYtF;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAYpF;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC3C;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAqB3E;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,YAAY,EAAE,MAAM,EACpB,eAAe,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,IAAI,CAAC,CAQf;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,GAAG,IAAI,EAC1B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GAAG,IAAI,GACtB,OAAO,CAAC,MAAM,CAAC,CAejB"}
|
package/dist/queries/issues.js
CHANGED
|
@@ -46,6 +46,45 @@ export async function createEscalation(params) {
|
|
|
46
46
|
description: params.description,
|
|
47
47
|
whatWasTried: params.whatWasTried,
|
|
48
48
|
helpNeeded: params.helpNeeded,
|
|
49
|
+
...(params.escalationKind ? { escalationKind: params.escalationKind } : {}),
|
|
50
|
+
...(params.metadata ? { metadata: params.metadata } : {}),
|
|
51
|
+
},
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* List open (not-yet-resolved) escalations for the organization.
|
|
56
|
+
*
|
|
57
|
+
* Returns rows with status in `('pending', 'in_review')` -- both are
|
|
58
|
+
* "open" from a dedup perspective. An operator may move a stuck-branch
|
|
59
|
+
* escalation to `in_review` while triaging; the merge-back loop must
|
|
60
|
+
* still treat it as suppressing duplicates so it does not file a second
|
|
61
|
+
* `pending` row for the same branch.
|
|
62
|
+
*
|
|
63
|
+
* Used by the merge-back loop to detect when a branch already has an
|
|
64
|
+
* unresolved merge-conflict escalation, and to find existing stuck-branch
|
|
65
|
+
* escalations for dedup / auto-resolution.
|
|
66
|
+
*/
|
|
67
|
+
export async function listPendingEscalations() {
|
|
68
|
+
const result = await callApi('escalation_list', { fields: { statuses: ['pending', 'in_review'] } });
|
|
69
|
+
return result.escalations.map((e) => ({
|
|
70
|
+
id: e.id,
|
|
71
|
+
reasonType: e.reasonType,
|
|
72
|
+
description: e.description,
|
|
73
|
+
whatWasTried: e.whatWasTried ?? null,
|
|
74
|
+
helpNeeded: e.helpNeeded ?? null,
|
|
75
|
+
escalationKind: e.escalationKind ?? null,
|
|
76
|
+
metadata: e.metadata ?? null,
|
|
77
|
+
}));
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Mark an escalation as resolved with optional notes.
|
|
81
|
+
*/
|
|
82
|
+
export async function markEscalationResolved(escalationId, resolutionNotes) {
|
|
83
|
+
await callApi('escalation_update', {
|
|
84
|
+
escalationId,
|
|
85
|
+
fields: {
|
|
86
|
+
status: 'resolved',
|
|
87
|
+
...(resolutionNotes ? { resolutionNotes } : {}),
|
|
49
88
|
},
|
|
50
89
|
});
|
|
51
90
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"issues.js","sourceRoot":"","sources":["../../src/queries/issues.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EACL,4BAA4B,EAC5B,kCAAkC,EAClC,yBAAyB,GAE1B,MAAM,cAAc,CAAC;AAKtB;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,UAAkB;IACxD,MAAM,MAAM,GAAG,MAAM,gBAAgB,CACnC,YAAY,EACZ,4BAA4B,EAC5B,EAAE,UAAU,EAAE,CACf,CAAC;IACF,OAAO,MAAM,CAAC,MAAM,CAAC;AACvB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,UAAkB;IAC9D,MAAM,MAAM,GAAG,MAAM,gBAAgB,CACnC,mCAAmC,EACnC,kCAAkC,EAClC,EAAE,UAAU,EAAE,CACf,CAAC;IACF,OAAO,MAAM,CAAC,KAAK,CAAC;AACtB,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,OAAe,EAAE,MAAc;IACrE,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,cAAc,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;IACjE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,6EAA6E;QAC7E,IAAI,MAAM,KAAK,MAAM,IAAK,GAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,2BAA2B,CAAC,EAAE,CAAC;YACvF,MAAM,OAAO,CAAC,cAAc,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,CAAC,CAAC;YAC9E,MAAM,OAAO,CAAC,cAAc,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;YACvE,OAAO;QACT,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;
|
|
1
|
+
{"version":3,"file":"issues.js","sourceRoot":"","sources":["../../src/queries/issues.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,17 @@ import type { AgentSession } from '../types.js';
|
|
|
7
7
|
* Used by crash recovery to reconcile worktrees against DB state.
|
|
8
8
|
*/
|
|
9
9
|
export declare function getActiveSessions(productId?: string): Promise<AgentSession[]>;
|
|
10
|
+
/**
|
|
11
|
+
* Return the first active/starting session for a given focus, or null.
|
|
12
|
+
*
|
|
13
|
+
* Used by worktree-state.ts to gate "is the worktree being written?" — if an
|
|
14
|
+
* agent_sessions row for this focus is still in an active/starting status,
|
|
15
|
+
* the worktree is considered live.
|
|
16
|
+
*/
|
|
17
|
+
export declare function getActiveSessionForFocus(focusId: string): Promise<{
|
|
18
|
+
id: string;
|
|
19
|
+
status: string;
|
|
20
|
+
} | null>;
|
|
10
21
|
/**
|
|
11
22
|
* Aggregate counters for completed sessions scoped to this product.
|
|
12
23
|
* Used to bootstrap heartbeat counters on startup.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../src/queries/sessions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAwChD;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAOnF;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,6BAA6B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAWjG;AAED;;GAEG;AACH,wBAAsB,2BAA2B,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAM1G;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,WAAW,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;CACnC;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,YAAY,CAAC,CAoBtF;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC,GACD,OAAO,CAAC,YAAY,CAAC,CA6BvB"}
|
|
1
|
+
{"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../src/queries/sessions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAwChD;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAOnF;AAaD;;;;;;GAMG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,MAAM,GACd,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAShD;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,6BAA6B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAWjG;AAED;;GAEG;AACH,wBAAsB,2BAA2B,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAM1G;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,WAAW,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;CACnC;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,YAAY,CAAC,CAoBtF;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC,GACD,OAAO,CAAC,YAAY,CAAC,CA6BvB"}
|
package/dist/queries/sessions.js
CHANGED
|
@@ -36,6 +36,34 @@ export async function getActiveSessions(productId) {
|
|
|
36
36
|
const result = await callApiValidated('daemon_get_active_sessions', ActiveSessionsResponseSchema, productId ? { productId } : undefined);
|
|
37
37
|
return (result.sessions || []).map(transformSessionFromApi);
|
|
38
38
|
}
|
|
39
|
+
/**
|
|
40
|
+
* Active session statuses for worktree-state observation.
|
|
41
|
+
*
|
|
42
|
+
* Note: the daemon API filters getActiveSessions() to 'starting'/'running'
|
|
43
|
+
* server-side, so any row that reaches us here is already "live". This
|
|
44
|
+
* constant is the explicit predicate the worktree-state primitive uses to
|
|
45
|
+
* decide whether a session row represents a writer; we accept the string
|
|
46
|
+
* 'active' as an alias for 'running' for callers that pass in raw rows.
|
|
47
|
+
*/
|
|
48
|
+
const ACTIVE_SESSION_STATUSES = ['active', 'starting', 'running'];
|
|
49
|
+
/**
|
|
50
|
+
* Return the first active/starting session for a given focus, or null.
|
|
51
|
+
*
|
|
52
|
+
* Used by worktree-state.ts to gate "is the worktree being written?" — if an
|
|
53
|
+
* agent_sessions row for this focus is still in an active/starting status,
|
|
54
|
+
* the worktree is considered live.
|
|
55
|
+
*/
|
|
56
|
+
export async function getActiveSessionForFocus(focusId) {
|
|
57
|
+
const sessions = await getActiveSessions();
|
|
58
|
+
for (const s of sessions) {
|
|
59
|
+
if (s.focus_id !== focusId)
|
|
60
|
+
continue;
|
|
61
|
+
if (ACTIVE_SESSION_STATUSES.includes(s.status)) {
|
|
62
|
+
return { id: s.id, status: s.status };
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
39
67
|
export async function getCompletedSessionAggregates(productId) {
|
|
40
68
|
const result = await callApiValidated('daemon_get_session_aggregates', SessionAggregatesResponseSchema, { productId });
|
|
41
69
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../src/queries/sessions.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../src/queries/sessions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAChF,OAAO,EAEL,4BAA4B,EAC5B,+BAA+B,EAC/B,gCAAgC,EAChC,2BAA2B,EAC3B,2BAA2B,GAC5B,MAAM,cAAc,CAAC;AAKtB,MAAM,uBAAuB,GAAG,eAAe,CAAgC;IAC7E,EAAE,EAAE,IAAI;IACR,eAAe,EAAE,gBAAgB;IACjC,QAAQ,EAAE,SAAS;IACnB,WAAW,EAAE,YAAY;IACzB,QAAQ,EAAE,SAAS;IACnB,aAAa,EAAE,aAAa;IAC5B,WAAW,EAAE,YAAY;IACzB,MAAM,EAAE,OAAO;IACf,MAAM,EAAE,QAAQ;IAChB,WAAW,EAAE,YAAY;IACzB,aAAa,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE;IACtD,SAAS,EAAE,UAAU;IACrB,UAAU,EAAE,WAAW;IACvB,QAAQ,EAAE,SAAS;IACnB,WAAW,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,EAAE;IAC/C,aAAa,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC,EAAE;IACnD,GAAG,EAAE,KAAK;IACV,WAAW,EAAE,YAAY;IACzB,WAAW,EAAE,YAAY;IACzB,UAAU,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,EAAc,EAAE;IAC1D,cAAc,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,EAAc,EAAE;IAClE,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,EAAc,EAAE;IACrD,iBAAiB,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE;CAC9D,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,SAAkB;IACxD,MAAM,MAAM,GAAG,MAAM,gBAAgB,CACnC,4BAA4B,EAC5B,4BAA4B,EAC5B,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,CACtC,CAAC;IACF,OAAO,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;AAC9D,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,uBAAuB,GAAsB,CAAC,QAAQ,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;AAErF;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,OAAe;IAEf,MAAM,QAAQ,GAAG,MAAM,iBAAiB,EAAE,CAAC;IAC3C,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,CAAC,CAAC,QAAQ,KAAK,OAAO;YAAE,SAAS;QACrC,IAAI,uBAAuB,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/C,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;QACxC,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAYD,MAAM,CAAC,KAAK,UAAU,6BAA6B,CAAC,SAAiB;IACnE,MAAM,MAAM,GAAG,MAAM,gBAAgB,CACnC,+BAA+B,EAC/B,+BAA+B,EAC/B,EAAE,SAAS,EAAE,CACd,CAAC;IACF,OAAO;QACL,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,CAAC;QAC1C,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,CAAC;QACpC,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,CAAC;KACjC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAAC,eAAuB;IACvE,MAAM,MAAM,GAAG,MAAM,gBAAgB,CACnC,iCAAiC,EACjC,gCAAgC,CACjC,CAAC;IACF,OAAO,MAAM,CAAC,MAAM,CAAC;AACvB,CAAC;AAgBD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAA2B;IAC7D,MAAM,SAAS,GAA4B;QACzC,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,IAAI;QACrC,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,IAAI;QAC/B,UAAU,EAAE,MAAM,CAAC,UAAU;KAC9B,CAAC;IACF,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;QACvB,SAAS,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;IAC7C,CAAC;IACD,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;QAC3B,SAAS,CAAC,MAAM,GAAG,EAAE,eAAe,EAAE,MAAM,CAAC,eAAe,EAAE,CAAC;IACjE,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,gBAAgB,CACnC,uBAAuB,EACvB,2BAA2B,EAC3B,SAAS,CACV,CAAC;IACF,OAAO,uBAAuB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,SAAiB,EACjB,OAoBE;IAEF,MAAM,MAAM,GAAG,cAAc,CAAC,OAAkC,EAAE;QAChE,MAAM,EAAE,QAAQ;QAChB,WAAW,EAAE,YAAY;QACzB,aAAa,EAAE,cAAc;QAC7B,UAAU,EAAE,WAAW;QACvB,QAAQ,EAAE,SAAS;QACnB,GAAG,EAAE,KAAK;QACV,WAAW,EAAE,YAAY;QACzB,WAAW,EAAE,YAAY;QACzB,WAAW,EAAE,YAAY;QACzB,aAAa,EAAE,cAAc;QAC7B,MAAM,EAAE,OAAO;QACf,UAAU,EAAE,WAAW;QACvB,cAAc,EAAE,eAAe;QAC/B,OAAO,EAAE,SAAS;QAClB,gBAAgB,EAAE,iBAAiB;QACnC,cAAc,EAAE,eAAe;QAC/B,iBAAiB,EAAE,iBAAiB;QACpC,WAAW,EAAE,YAAY;QACzB,aAAa,EAAE,cAAc;KAC9B,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,MAAM,gBAAgB,CACnC,uBAAuB,EACvB,2BAA2B,EAC3B,EAAE,SAAS,EAAE,MAAM,EAAE,CACtB,CAAC;IACF,OAAO,uBAAuB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACjD,CAAC"}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* without metadata populated.
|
|
8
8
|
*/
|
|
9
9
|
import type { WorkflowStage, Workflow } from './types.js';
|
|
10
|
-
/** Stage where agent team has work to do (e.g., queued, coding). */
|
|
10
|
+
/** Stage where agent team has work to do (e.g., queued, coding, iterating). */
|
|
11
11
|
export declare function isAgentActionable(stage: WorkflowStage): boolean;
|
|
12
12
|
/** Truly terminal — no more work ever (e.g., done, cancelled). */
|
|
13
13
|
export declare function isTerminal(stage: WorkflowStage): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stage-classifier.d.ts","sourceRoot":"","sources":["../src/stage-classifier.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAI1D
|
|
1
|
+
{"version":3,"file":"stage-classifier.d.ts","sourceRoot":"","sources":["../src/stage-classifier.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAI1D,+EAA+E;AAC/E,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAG/D;AAED,kEAAkE;AAClE,wBAAgB,UAAU,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAGxD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAS1D;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAUxD;AAED,sEAAsE;AACtE,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAEnE;AAUD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO,CAMpF;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO,CAM7E;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO,CAM/E;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO,CAM7E;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO,CAMxF"}
|
package/dist/stage-classifier.js
CHANGED
|
@@ -7,11 +7,11 @@
|
|
|
7
7
|
* without metadata populated.
|
|
8
8
|
*/
|
|
9
9
|
// ── Stage-level classifiers ──────────────────────────────────────
|
|
10
|
-
/** Stage where agent team has work to do (e.g., queued, coding). */
|
|
10
|
+
/** Stage where agent team has work to do (e.g., queued, coding, iterating). */
|
|
11
11
|
export function isAgentActionable(stage) {
|
|
12
12
|
if (stage.is_agent_actionable !== undefined)
|
|
13
13
|
return stage.is_agent_actionable;
|
|
14
|
-
return stage.name === 'queued' || stage.name === 'coding';
|
|
14
|
+
return stage.name === 'queued' || stage.name === 'coding' || stage.name === 'iterating';
|
|
15
15
|
}
|
|
16
16
|
/** Truly terminal — no more work ever (e.g., done, cancelled). */
|
|
17
17
|
export function isTerminal(stage) {
|
|
@@ -70,7 +70,7 @@ export function isStatusAgentActionable(status, workflow) {
|
|
|
70
70
|
if (stage)
|
|
71
71
|
return isAgentActionable(stage);
|
|
72
72
|
}
|
|
73
|
-
return status === 'queued' || status === 'coding';
|
|
73
|
+
return status === 'queued' || status === 'coding' || status === 'iterating';
|
|
74
74
|
}
|
|
75
75
|
export function isStatusTerminal(status, workflow) {
|
|
76
76
|
if (workflow) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stage-classifier.js","sourceRoot":"","sources":["../src/stage-classifier.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,oEAAoE;AAEpE
|
|
1
|
+
{"version":3,"file":"stage-classifier.js","sourceRoot":"","sources":["../src/stage-classifier.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Worktree write-state observation.
|
|
3
|
+
*
|
|
4
|
+
* Pure-observation helper that consolidates the four signals indicating
|
|
5
|
+
* whether a focus's worktree is currently being written to:
|
|
6
|
+
*
|
|
7
|
+
* 1. an in-memory focus team is active (phase not in shutting_down/terminated)
|
|
8
|
+
* 2. an agent_sessions DB row for the focus is in an active/starting status
|
|
9
|
+
* 3. a recent commit has landed on HEAD within a configurable threshold
|
|
10
|
+
* 4. the worktree is dirty (uncommitted changes)
|
|
11
|
+
*
|
|
12
|
+
* Used by the continuous merge-back loop to gate "is it safe to attempt
|
|
13
|
+
* merge right now?". Pure observation — no side effects, no mutations.
|
|
14
|
+
*/
|
|
15
|
+
export interface WorktreeWriteReason {
|
|
16
|
+
code: string;
|
|
17
|
+
message: string;
|
|
18
|
+
}
|
|
19
|
+
export interface WorktreeWriteSignal {
|
|
20
|
+
active: boolean;
|
|
21
|
+
reason: WorktreeWriteReason | null;
|
|
22
|
+
}
|
|
23
|
+
export interface WorktreeStateDeps {
|
|
24
|
+
hasActiveTeam: (focusId: string) => boolean;
|
|
25
|
+
getActiveTeamPhase: (focusId: string) => string | null;
|
|
26
|
+
getFocusWorktree: (focusId: string) => {
|
|
27
|
+
worktreePath: string;
|
|
28
|
+
branchName: string;
|
|
29
|
+
} | undefined;
|
|
30
|
+
getActiveSessionForFocus: (focusId: string) => Promise<{
|
|
31
|
+
id: string;
|
|
32
|
+
status: string;
|
|
33
|
+
} | null>;
|
|
34
|
+
worktreeHasUncommittedChanges: (worktreePath: string) => boolean;
|
|
35
|
+
getLastCommitTimestampMs: (worktreePath: string) => number | null;
|
|
36
|
+
now: () => number;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Observe whether a focus's worktree is currently being written.
|
|
40
|
+
*
|
|
41
|
+
* Returns a signal containing `active: true` plus the first matching reason,
|
|
42
|
+
* or `active: false` with `reason: null` when no writer is detected. The
|
|
43
|
+
* `no_worktree` case is reported as `active: false` with a non-null reason
|
|
44
|
+
* so callers can distinguish "no writer because nothing exists yet" from
|
|
45
|
+
* "no writer because everything is quiescent".
|
|
46
|
+
*
|
|
47
|
+
* Order of checks (returns on first hit):
|
|
48
|
+
* 1. in-memory active team (non-terminal phase) -> active_team
|
|
49
|
+
* 2. no persistent worktree -> { active: false, no_worktree }
|
|
50
|
+
* 3. DB session row in active/starting status -> active_session
|
|
51
|
+
* 4. recent commit within threshold -> recent_commit
|
|
52
|
+
* 5. dirty worktree -> dirty_worktree
|
|
53
|
+
* 6. otherwise -> { active: false, null }
|
|
54
|
+
*/
|
|
55
|
+
export declare function isWorktreeBeingWritten(focusId: string, opts?: {
|
|
56
|
+
recentCommitThresholdMs?: number;
|
|
57
|
+
}, deps?: Partial<WorktreeStateDeps>): Promise<WorktreeWriteSignal>;
|
|
58
|
+
//# sourceMappingURL=worktree-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worktree-state.d.ts","sourceRoot":"","sources":["../src/worktree-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAQH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,mBAAmB,GAAG,IAAI,CAAC;CACpC;AAED,MAAM,WAAW,iBAAiB;IAChC,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IAC5C,kBAAkB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACvD,gBAAgB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;IAChG,wBAAwB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;IAC9F,6BAA6B,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC;IACjE,wBAAwB,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IAClE,GAAG,EAAE,MAAM,MAAM,CAAC;CACnB;AAoCD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,MAAM,EACf,IAAI,GAAE;IAAE,uBAAuB,CAAC,EAAE,MAAM,CAAA;CAAO,EAC/C,IAAI,GAAE,OAAO,CAAC,iBAAiB,CAAM,GACpC,OAAO,CAAC,mBAAmB,CAAC,CAmE9B"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Worktree write-state observation.
|
|
3
|
+
*
|
|
4
|
+
* Pure-observation helper that consolidates the four signals indicating
|
|
5
|
+
* whether a focus's worktree is currently being written to:
|
|
6
|
+
*
|
|
7
|
+
* 1. an in-memory focus team is active (phase not in shutting_down/terminated)
|
|
8
|
+
* 2. an agent_sessions DB row for the focus is in an active/starting status
|
|
9
|
+
* 3. a recent commit has landed on HEAD within a configurable threshold
|
|
10
|
+
* 4. the worktree is dirty (uncommitted changes)
|
|
11
|
+
*
|
|
12
|
+
* Used by the continuous merge-back loop to gate "is it safe to attempt
|
|
13
|
+
* merge right now?". Pure observation — no side effects, no mutations.
|
|
14
|
+
*/
|
|
15
|
+
import { hasActiveTeam, getActiveTeams } from './focus-team-state.js';
|
|
16
|
+
import { getFocusWorktree } from './focus-worktree-state.js';
|
|
17
|
+
import { worktreeHasUncommittedChanges } from './worktree-safety.js';
|
|
18
|
+
import { runGitSync } from './git-types.js';
|
|
19
|
+
import { getActiveSessionForFocus } from './queries/sessions.js';
|
|
20
|
+
const DEFAULT_RECENT_COMMIT_THRESHOLD_MS = 30_000;
|
|
21
|
+
/**
|
|
22
|
+
* Read the unix-epoch milliseconds timestamp of the worktree's HEAD commit.
|
|
23
|
+
* Returns null on any failure (git error, non-numeric output, missing repo).
|
|
24
|
+
*/
|
|
25
|
+
function defaultGetLastCommitTimestampMs(worktreePath) {
|
|
26
|
+
try {
|
|
27
|
+
const result = runGitSync(['log', '-1', '--format=%ct', 'HEAD'], worktreePath);
|
|
28
|
+
if (!result.success)
|
|
29
|
+
return null;
|
|
30
|
+
const trimmed = result.output.trim();
|
|
31
|
+
if (trimmed.length === 0)
|
|
32
|
+
return null;
|
|
33
|
+
const seconds = Number.parseInt(trimmed, 10);
|
|
34
|
+
if (!Number.isFinite(seconds) || Number.isNaN(seconds))
|
|
35
|
+
return null;
|
|
36
|
+
return seconds * 1000;
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
const defaultDeps = {
|
|
43
|
+
hasActiveTeam,
|
|
44
|
+
getActiveTeamPhase: (focusId) => getActiveTeams().get(focusId)?.phase ?? null,
|
|
45
|
+
getFocusWorktree: (focusId) => {
|
|
46
|
+
const info = getFocusWorktree(focusId);
|
|
47
|
+
if (!info)
|
|
48
|
+
return undefined;
|
|
49
|
+
return { worktreePath: info.worktreePath, branchName: info.branchName };
|
|
50
|
+
},
|
|
51
|
+
getActiveSessionForFocus,
|
|
52
|
+
worktreeHasUncommittedChanges,
|
|
53
|
+
getLastCommitTimestampMs: defaultGetLastCommitTimestampMs,
|
|
54
|
+
now: () => Date.now(),
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* Observe whether a focus's worktree is currently being written.
|
|
58
|
+
*
|
|
59
|
+
* Returns a signal containing `active: true` plus the first matching reason,
|
|
60
|
+
* or `active: false` with `reason: null` when no writer is detected. The
|
|
61
|
+
* `no_worktree` case is reported as `active: false` with a non-null reason
|
|
62
|
+
* so callers can distinguish "no writer because nothing exists yet" from
|
|
63
|
+
* "no writer because everything is quiescent".
|
|
64
|
+
*
|
|
65
|
+
* Order of checks (returns on first hit):
|
|
66
|
+
* 1. in-memory active team (non-terminal phase) -> active_team
|
|
67
|
+
* 2. no persistent worktree -> { active: false, no_worktree }
|
|
68
|
+
* 3. DB session row in active/starting status -> active_session
|
|
69
|
+
* 4. recent commit within threshold -> recent_commit
|
|
70
|
+
* 5. dirty worktree -> dirty_worktree
|
|
71
|
+
* 6. otherwise -> { active: false, null }
|
|
72
|
+
*/
|
|
73
|
+
export async function isWorktreeBeingWritten(focusId, opts = {}, deps = {}) {
|
|
74
|
+
const d = { ...defaultDeps, ...deps };
|
|
75
|
+
const thresholdMs = opts.recentCommitThresholdMs ?? DEFAULT_RECENT_COMMIT_THRESHOLD_MS;
|
|
76
|
+
// 1. In-memory active team
|
|
77
|
+
if (d.hasActiveTeam(focusId)) {
|
|
78
|
+
const phase = d.getActiveTeamPhase(focusId);
|
|
79
|
+
if (phase !== null && phase !== 'shutting_down' && phase !== 'terminated') {
|
|
80
|
+
return {
|
|
81
|
+
active: true,
|
|
82
|
+
reason: {
|
|
83
|
+
code: 'active_team',
|
|
84
|
+
message: `in-memory team phase=${phase}`,
|
|
85
|
+
},
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
// 2. No persistent worktree
|
|
90
|
+
const worktree = d.getFocusWorktree(focusId);
|
|
91
|
+
if (!worktree) {
|
|
92
|
+
return {
|
|
93
|
+
active: false,
|
|
94
|
+
reason: { code: 'no_worktree', message: 'focus has no worktree' },
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
// 3. Active DB session for this focus
|
|
98
|
+
const session = await d.getActiveSessionForFocus(focusId);
|
|
99
|
+
if (session && (session.status === 'active' || session.status === 'starting')) {
|
|
100
|
+
return {
|
|
101
|
+
active: true,
|
|
102
|
+
reason: {
|
|
103
|
+
code: 'active_session',
|
|
104
|
+
message: `agent_sessions row ${session.id} is status=${session.status}`,
|
|
105
|
+
},
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
// 4. Recent commit
|
|
109
|
+
const lastCommitMs = d.getLastCommitTimestampMs(worktree.worktreePath);
|
|
110
|
+
if (lastCommitMs !== null) {
|
|
111
|
+
const ageMs = d.now() - lastCommitMs;
|
|
112
|
+
if (ageMs >= 0 && ageMs <= thresholdMs) {
|
|
113
|
+
return {
|
|
114
|
+
active: true,
|
|
115
|
+
reason: {
|
|
116
|
+
code: 'recent_commit',
|
|
117
|
+
message: `last commit ${ageMs}ms ago`,
|
|
118
|
+
},
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
// 5. Dirty worktree
|
|
123
|
+
if (d.worktreeHasUncommittedChanges(worktree.worktreePath)) {
|
|
124
|
+
return {
|
|
125
|
+
active: true,
|
|
126
|
+
reason: {
|
|
127
|
+
code: 'dirty_worktree',
|
|
128
|
+
message: 'git status --porcelain non-empty',
|
|
129
|
+
},
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
// 6. Quiescent
|
|
133
|
+
return { active: false, reason: null };
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=worktree-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worktree-state.js","sourceRoot":"","sources":["../src/worktree-state.ts"],"names":[],"mappings":"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"}
|