@cat-factory/orchestration 0.136.1 → 0.138.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/container.d.ts +21 -3
- package/dist/container.d.ts.map +1 -1
- package/dist/container.js.map +1 -1
- package/dist/modules/environments/EnvironmentTestService.d.ts.map +1 -1
- package/dist/modules/environments/EnvironmentTestService.js +7 -1
- package/dist/modules/environments/EnvironmentTestService.js.map +1 -1
- package/dist/modules/execution/ExecutionService.d.ts +7 -371
- package/dist/modules/execution/ExecutionService.d.ts.map +1 -1
- package/dist/modules/execution/ExecutionService.js +32 -35
- package/dist/modules/execution/ExecutionService.js.map +1 -1
- package/dist/modules/execution/ExecutionServiceDependencies.d.ts +381 -0
- package/dist/modules/execution/ExecutionServiceDependencies.d.ts.map +1 -0
- package/dist/modules/execution/ExecutionServiceDependencies.js +2 -0
- package/dist/modules/execution/ExecutionServiceDependencies.js.map +1 -0
- package/dist/modules/execution/PrVerificationReportController.d.ts +106 -0
- package/dist/modules/execution/PrVerificationReportController.d.ts.map +1 -0
- package/dist/modules/execution/PrVerificationReportController.js +134 -0
- package/dist/modules/execution/PrVerificationReportController.js.map +1 -0
- package/dist/modules/execution/RunDispatcher.d.ts +4 -0
- package/dist/modules/execution/RunDispatcher.d.ts.map +1 -1
- package/dist/modules/execution/RunDispatcher.js +13 -0
- package/dist/modules/execution/RunDispatcher.js.map +1 -1
- package/dist/modules/execution/prReport.logic.d.ts +25 -0
- package/dist/modules/execution/prReport.logic.d.ts.map +1 -0
- package/dist/modules/execution/prReport.logic.js +436 -0
- package/dist/modules/execution/prReport.logic.js.map +1 -0
- package/dist/modules/execution/prReportText.logic.d.ts +46 -0
- package/dist/modules/execution/prReportText.logic.d.ts.map +1 -0
- package/dist/modules/execution/prReportText.logic.js +188 -0
- package/dist/modules/execution/prReportText.logic.js.map +1 -0
- package/dist/modules/execution/retry.logic.d.ts +28 -1
- package/dist/modules/execution/retry.logic.d.ts.map +1 -1
- package/dist/modules/execution/retry.logic.js +36 -0
- package/dist/modules/execution/retry.logic.js.map +1 -1
- package/dist/modules/execution/runStartOptions.d.ts +12 -0
- package/dist/modules/execution/runStartOptions.d.ts.map +1 -1
- package/dist/modules/settings/WorkspaceSettingsService.d.ts.map +1 -1
- package/dist/modules/settings/WorkspaceSettingsService.js +1 -0
- package/dist/modules/settings/WorkspaceSettingsService.js.map +1 -1
- package/package.json +11 -11
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// The PR verification report's TEXT BOUNDARY.
|
|
3
|
+
//
|
|
4
|
+
// A pull-request description is NOT an inert string sink. The host parses it: `#123` becomes
|
|
5
|
+
// an issue link, `@name` notifies a real person, a closing keyword in front of an issue
|
|
6
|
+
// reference CLOSES that issue when the PR merges, a newline ends a markdown table row, and an
|
|
7
|
+
// unbalanced code fence swallows everything after it — including the machine-readable JSON
|
|
8
|
+
// block external tooling ingests.
|
|
9
|
+
//
|
|
10
|
+
// Almost everything the report interpolates is written by an agent or a human (a task title,
|
|
11
|
+
// a tester summary, a merge rationale, a provisioner's stderr), so all of those are live
|
|
12
|
+
// hazards rather than theoretical ones: "This closes #42" is idiomatic prose for a merge
|
|
13
|
+
// rationale to emit, and it must not close issue 42.
|
|
14
|
+
//
|
|
15
|
+
// This module is the single place that turns untrusted text into something safe to splice
|
|
16
|
+
// into a PR body. It is deliberately separate from the composer (which decides WHAT to say)
|
|
17
|
+
// and from the marker splice in kernel (which decides WHERE it goes).
|
|
18
|
+
// ---------------------------------------------------------------------------
|
|
19
|
+
/** Free-text prose (a tester summary, a merge rationale) is capped at this many characters. */
|
|
20
|
+
export const MAX_PROSE_CHARS = 4_000;
|
|
21
|
+
/** A single markdown table cell is capped at this many characters. */
|
|
22
|
+
export const MAX_CELL_CHARS = 300;
|
|
23
|
+
/** Any rendered list/table in the report is capped at this many rows. */
|
|
24
|
+
export const MAX_LIST_ITEMS = 50;
|
|
25
|
+
/**
|
|
26
|
+
* Hard ceiling for the whole rendered section. GitHub rejects a PR body over 65,536
|
|
27
|
+
* characters with a 422, and the body also has to hold the agent's own description, so the
|
|
28
|
+
* managed region keeps well clear of the limit. With the per-field caps above this is
|
|
29
|
+
* unreachable for realistic runs; it exists so that pathological data degrades visibly
|
|
30
|
+
* instead of making every publish fail silently forever.
|
|
31
|
+
*/
|
|
32
|
+
export const MAX_SECTION_CHARS = 50_000;
|
|
33
|
+
/** Marks where a value was cut, so a reader never mistakes a truncation for the whole story. */
|
|
34
|
+
const TRUNCATION_NOTE = '… (truncated)';
|
|
35
|
+
/**
|
|
36
|
+
* The host's closing keywords. A PR body carrying one of these in front of an issue reference
|
|
37
|
+
* closes that issue on merge — a side effect the engine must never trigger on the agent's
|
|
38
|
+
* behalf. Same list on GitHub and GitLab.
|
|
39
|
+
*/
|
|
40
|
+
const CLOSING_KEYWORDS = 'close[sd]?|closing|fix|fixe[sd]|fixing|resolve[sd]?|resolving|implement(?:s|ed)?|implementing';
|
|
41
|
+
/** An issue/MR URL on either host, in the form a closing keyword can reference. */
|
|
42
|
+
const ISSUE_URL = String.raw `https?://\S+?/(?:issues|-/issues|merge_requests|pull)/\d+`;
|
|
43
|
+
/**
|
|
44
|
+
* Every auto-linking trigger, in ONE alternation.
|
|
45
|
+
*
|
|
46
|
+
* Deliberately a single pass rather than chained `.replace()` calls: each escape EMITS a `#`,
|
|
47
|
+
* so a later rule would re-escape the output of an earlier one (`@` → `@` → `@`).
|
|
48
|
+
* One regex means the replacement text is never rescanned.
|
|
49
|
+
*/
|
|
50
|
+
const AUTO_LINK_TRIGGERS = new RegExp([
|
|
51
|
+
// A closing keyword in front of an issue/MR URL. The URL form survives the character
|
|
52
|
+
// escapes below (nothing in it is a trigger), so the KEYWORD is what gets defused.
|
|
53
|
+
String.raw `(?<keyword>\b(?:${CLOSING_KEYWORDS}))(?=\s*:?\s+${ISSUE_URL})`,
|
|
54
|
+
// `@name` / `@org/team` — a mention notifies a real account.
|
|
55
|
+
String.raw `(?<at>@(?=[A-Za-z0-9]))`,
|
|
56
|
+
// `#123` and `owner/repo#123` — an issue/PR cross-reference.
|
|
57
|
+
String.raw `(?<hash>#(?=\d))`,
|
|
58
|
+
// `!123` — GitLab's merge-request reference.
|
|
59
|
+
String.raw `(?<bang>!(?=\d))`,
|
|
60
|
+
].join('|'), 'gi');
|
|
61
|
+
/**
|
|
62
|
+
* Neutralise the host's auto-linking triggers in ONE line of untrusted text, leaving inline
|
|
63
|
+
* code spans alone (the host does not auto-link inside them, so escaping there would only
|
|
64
|
+
* show the reader a literal `#`).
|
|
65
|
+
*
|
|
66
|
+
* The escapes are numeric HTML entities, which render as the original character but are
|
|
67
|
+
* invisible to the reference parser — so the reader sees exactly what the agent wrote while
|
|
68
|
+
* the mention/close side effects are defused.
|
|
69
|
+
*/
|
|
70
|
+
function inertLine(line) {
|
|
71
|
+
return mapOutsideCodeSpans(line, (text) => text.replace(AUTO_LINK_TRIGGERS, (match, ...args) => {
|
|
72
|
+
const groups = args[args.length - 1];
|
|
73
|
+
// Entity-escaping the FIRST character is enough to break the parser's match while
|
|
74
|
+
// rendering identically — which matters most for the keyword, whose remaining letters
|
|
75
|
+
// are ordinary prose the reader should still see.
|
|
76
|
+
return `&#${match.charCodeAt(0)};${groups.keyword ? match.slice(1) : ''}`;
|
|
77
|
+
}));
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Apply `fn` to the parts of `line` that are NOT inline code spans. Code spans are matched by
|
|
81
|
+
* a backtick run and its matching closer, which is CommonMark's rule and — more to the point
|
|
82
|
+
* — the rule the host renderer applies when deciding where to auto-link.
|
|
83
|
+
*/
|
|
84
|
+
function mapOutsideCodeSpans(line, fn) {
|
|
85
|
+
const out = [];
|
|
86
|
+
let index = 0;
|
|
87
|
+
const span = /(`+)[\s\S]*?\1/g;
|
|
88
|
+
let match;
|
|
89
|
+
while ((match = span.exec(line)) !== null) {
|
|
90
|
+
out.push(fn(line.slice(index, match.index)), match[0]);
|
|
91
|
+
index = match.index + match[0].length;
|
|
92
|
+
}
|
|
93
|
+
return out.join('') + fn(line.slice(index));
|
|
94
|
+
}
|
|
95
|
+
/** A line that opens or closes a fenced code block, with the fence it uses. */
|
|
96
|
+
function fenceAt(line) {
|
|
97
|
+
const match = /^ {0,3}(`{3,}|~{3,})(.*)$/.exec(line);
|
|
98
|
+
if (!match)
|
|
99
|
+
return null;
|
|
100
|
+
const fence = match[1];
|
|
101
|
+
// A ``` fence's info string may not contain a backtick (CommonMark), which is what stops an
|
|
102
|
+
// inline span from being read as a fence.
|
|
103
|
+
if (fence.startsWith('`') && match[2].includes('`'))
|
|
104
|
+
return null;
|
|
105
|
+
return { char: fence[0], length: fence.length, info: match[2].trim().length > 0 };
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Walk `lines`, tracking fenced-code state, and hand each line to `visit` together with
|
|
109
|
+
* whether it sits INSIDE a fenced block. Returns the fence still open at the end, if any.
|
|
110
|
+
*
|
|
111
|
+
* One shared walker so the two things that care about fences — leaving code untouched, and
|
|
112
|
+
* closing what the text left open — can never disagree about where a block starts and ends.
|
|
113
|
+
*/
|
|
114
|
+
function walkFences(lines, visit) {
|
|
115
|
+
let open = null;
|
|
116
|
+
for (const line of lines) {
|
|
117
|
+
const fence = fenceAt(line);
|
|
118
|
+
// The fence line itself belongs to the code block, so it is never rewritten.
|
|
119
|
+
visit(line, open !== null || fence !== null);
|
|
120
|
+
if (!fence)
|
|
121
|
+
continue;
|
|
122
|
+
if (!open)
|
|
123
|
+
open = { char: fence.char, length: fence.length };
|
|
124
|
+
else if (fence.char === open.char && fence.length >= open.length && !fence.info)
|
|
125
|
+
open = null;
|
|
126
|
+
}
|
|
127
|
+
return open;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Close any code fence the text leaves open.
|
|
131
|
+
*
|
|
132
|
+
* An unbalanced fence in agent prose — an interrupted transcript, a truncated tool dump — would
|
|
133
|
+
* otherwise swallow every section rendered after it, including the fenced JSON block that is
|
|
134
|
+
* the report's machine-readable contract. Balancing preserves the agent's own formatting
|
|
135
|
+
* (unlike escaping the fences) while guaranteeing the enclosing document stays well-formed.
|
|
136
|
+
*/
|
|
137
|
+
export function balanceFences(text) {
|
|
138
|
+
const open = walkFences(text.split('\n'), () => { });
|
|
139
|
+
return open ? `${text}\n${open.char.repeat(open.length)}` : text;
|
|
140
|
+
}
|
|
141
|
+
/** Cut `value` to `max` characters, marking the cut. Prefers a line boundary when one is near. */
|
|
142
|
+
function truncate(value, max) {
|
|
143
|
+
if (value.length <= max)
|
|
144
|
+
return value;
|
|
145
|
+
const head = value.slice(0, max);
|
|
146
|
+
const lastNewline = head.lastIndexOf('\n');
|
|
147
|
+
const body = lastNewline > max * 0.6 ? head.slice(0, lastNewline) : head;
|
|
148
|
+
return `${body.trimEnd()}\n\n${TRUNCATION_NOTE}`;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Render untrusted multi-line prose as a safe markdown block: auto-link triggers defused,
|
|
152
|
+
* length capped, and any code fence the value leaves open closed again.
|
|
153
|
+
*/
|
|
154
|
+
export function prose(value) {
|
|
155
|
+
const capped = truncate(value.replace(/\r\n?/g, '\n'), MAX_PROSE_CHARS);
|
|
156
|
+
const rewritten = [];
|
|
157
|
+
const open = walkFences(capped.split('\n'), (line, insideFence) => {
|
|
158
|
+
rewritten.push(insideFence ? line : inertLine(line));
|
|
159
|
+
});
|
|
160
|
+
const text = rewritten.join('\n');
|
|
161
|
+
return open ? `${text}\n${open.char.repeat(open.length)}` : text;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Render untrusted text as ONE markdown table cell: newlines folded to `<br>` (a raw newline
|
|
165
|
+
* ends the row and spills the rest of the value into the document as loose prose), pipes
|
|
166
|
+
* escaped so a value cannot open a new column, auto-link triggers defused, and the whole thing
|
|
167
|
+
* capped so a stack trace cannot dominate the table.
|
|
168
|
+
*/
|
|
169
|
+
export function cell(value) {
|
|
170
|
+
const flattened = truncate(value.replace(/\r\n?/g, '\n'), MAX_CELL_CHARS)
|
|
171
|
+
.replaceAll('|', '\\|')
|
|
172
|
+
.replace(/\n+/g, '<br>');
|
|
173
|
+
return inertLine(flattened);
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Render untrusted text INLINE (a title, a label — not a table cell, so pipes are harmless).
|
|
177
|
+
* Newlines are folded to spaces because the surrounding line has its own meaning.
|
|
178
|
+
*/
|
|
179
|
+
export function inline(value) {
|
|
180
|
+
return inertLine(truncate(value.replace(/\s+/g, ' '), MAX_CELL_CHARS));
|
|
181
|
+
}
|
|
182
|
+
/** Cap a list at {@link MAX_LIST_ITEMS}, returning the kept rows plus how many were dropped. */
|
|
183
|
+
export function capList(items) {
|
|
184
|
+
if (items.length <= MAX_LIST_ITEMS)
|
|
185
|
+
return { items: [...items], dropped: 0 };
|
|
186
|
+
return { items: items.slice(0, MAX_LIST_ITEMS), dropped: items.length - MAX_LIST_ITEMS };
|
|
187
|
+
}
|
|
188
|
+
//# sourceMappingURL=prReportText.logic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prReportText.logic.js","sourceRoot":"","sources":["../../../src/modules/execution/prReportText.logic.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AgentFailure, PipelineStep, PriorStepOutput } from '@cat-factory/kernel';
|
|
1
|
+
import type { AgentFailure, ExecutionInstance, PipelineStep, PriorStepOutput } from '@cat-factory/kernel';
|
|
2
2
|
/**
|
|
3
3
|
* Plan how a failed run resumes on retry: keep the steps that already completed
|
|
4
4
|
* and re-run from the one that actually failed, rather than restarting the whole
|
|
@@ -87,4 +87,31 @@ export declare function planRestartFromStep(prev: {
|
|
|
87
87
|
steps: PipelineStep[];
|
|
88
88
|
currentStep: number;
|
|
89
89
|
};
|
|
90
|
+
/**
|
|
91
|
+
* Build the replacement `ExecutionInstance` a retry or a restart installs for a block: a FRESH run
|
|
92
|
+
* id over the re-planned steps, carrying forward everything that describes the WORK rather than
|
|
93
|
+
* the attempt — the initiator, how the run entered the system, and the prior-attempt failure +
|
|
94
|
+
* successful-output trails.
|
|
95
|
+
*
|
|
96
|
+
* Both callers had this identically inline, which is precisely how a field comes to be carried
|
|
97
|
+
* forward on one path and silently dropped on the other (a retried headless run reverting to `ui`
|
|
98
|
+
* intake would, in slice 2, stop its clarification questions ever reaching the ticket). Keeping it
|
|
99
|
+
* here — beside the step-planning it pairs with — makes "what survives a re-drive" one decision in
|
|
100
|
+
* one place.
|
|
101
|
+
*/
|
|
102
|
+
export declare function buildResumedInstance(input: {
|
|
103
|
+
/** The run being replaced (its identity + everything carried forward). */
|
|
104
|
+
previous: ExecutionInstance;
|
|
105
|
+
/** The freshly-minted run id. */
|
|
106
|
+
id: string;
|
|
107
|
+
/** The re-planned steps + cursor (from {@link planResumedSteps} / {@link planRestartFromStep}). */
|
|
108
|
+
plan: {
|
|
109
|
+
steps: PipelineStep[];
|
|
110
|
+
currentStep: number;
|
|
111
|
+
};
|
|
112
|
+
/** Initiator override (a retry may be driven by a different user); falls back to the previous. */
|
|
113
|
+
initiatedBy?: string | null;
|
|
114
|
+
/** `now`, for attributing the carried-forward successful outputs. */
|
|
115
|
+
now: number;
|
|
116
|
+
}): ExecutionInstance;
|
|
90
117
|
//# sourceMappingURL=retry.logic.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retry.logic.d.ts","sourceRoot":"","sources":["../../../src/modules/execution/retry.logic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"retry.logic.d.ts","sourceRoot":"","sources":["../../../src/modules/execution/retry.logic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EACjB,YAAY,EACZ,eAAe,EAChB,MAAM,qBAAqB,CAAA;AAE5B;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE;IAAE,KAAK,EAAE,YAAY,EAAE,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAAG;IACtF,KAAK,EAAE,YAAY,EAAE,CAAA;IACrB,WAAW,EAAE,MAAM,CAAA;CACpB,CASA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,KAAK,CAAA;AAErC;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IACzC,OAAO,CAAC,EAAE,YAAY,GAAG,IAAI,CAAA;IAC7B,cAAc,CAAC,EAAE,YAAY,EAAE,CAAA;CAChC,GAAG,YAAY,EAAE,CAIjB;AAED,2FAA2F;AAC3F,eAAO,MAAM,kBAAkB,KAAK,CAAA;AAEpC;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,OAAQ,CAAA;AAE7C;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE;IAAE,KAAK,EAAE,YAAY,EAAE,CAAC;IAAC,aAAa,CAAC,EAAE,eAAe,EAAE,CAAA;CAAE,EAClE,cAAc,EAAE,MAAM,EACtB,GAAG,EAAE,MAAM,GACV,eAAe,EAAE,CAmBnB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE;IAAE,KAAK,EAAE,YAAY,EAAE,CAAA;CAAE,EAC/B,SAAS,EAAE,MAAM,GAChB;IAAE,KAAK,EAAE,YAAY,EAAE,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAShD;AA8CD;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE;IAC1C,0EAA0E;IAC1E,QAAQ,EAAE,iBAAiB,CAAA;IAC3B,iCAAiC;IACjC,EAAE,EAAE,MAAM,CAAA;IACV,mGAAmG;IACnG,IAAI,EAAE;QAAE,KAAK,EAAE,YAAY,EAAE,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAA;IACpD,kGAAkG;IAClG,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,qEAAqE;IACrE,GAAG,EAAE,MAAM,CAAA;CACZ,GAAG,iBAAiB,CAuBpB"}
|
|
@@ -148,4 +148,40 @@ function resetStep(step, state) {
|
|
|
148
148
|
pausedAt: undefined,
|
|
149
149
|
};
|
|
150
150
|
}
|
|
151
|
+
/**
|
|
152
|
+
* Build the replacement `ExecutionInstance` a retry or a restart installs for a block: a FRESH run
|
|
153
|
+
* id over the re-planned steps, carrying forward everything that describes the WORK rather than
|
|
154
|
+
* the attempt — the initiator, how the run entered the system, and the prior-attempt failure +
|
|
155
|
+
* successful-output trails.
|
|
156
|
+
*
|
|
157
|
+
* Both callers had this identically inline, which is precisely how a field comes to be carried
|
|
158
|
+
* forward on one path and silently dropped on the other (a retried headless run reverting to `ui`
|
|
159
|
+
* intake would, in slice 2, stop its clarification questions ever reaching the ticket). Keeping it
|
|
160
|
+
* here — beside the step-planning it pairs with — makes "what survives a re-drive" one decision in
|
|
161
|
+
* one place.
|
|
162
|
+
*/
|
|
163
|
+
export function buildResumedInstance(input) {
|
|
164
|
+
const { previous, id, plan, initiatedBy, now } = input;
|
|
165
|
+
return {
|
|
166
|
+
id,
|
|
167
|
+
blockId: previous.blockId,
|
|
168
|
+
pipelineId: previous.pipelineId,
|
|
169
|
+
pipelineName: previous.pipelineName,
|
|
170
|
+
steps: plan.steps,
|
|
171
|
+
currentStep: plan.currentStep,
|
|
172
|
+
status: 'running',
|
|
173
|
+
initiatedBy: initiatedBy ?? previous.initiatedBy ?? null,
|
|
174
|
+
// A retry/restart re-drives the SAME work, so how it originally entered the system is a
|
|
175
|
+
// property of the work, not of this attempt — a headless run stays headless whether its failed
|
|
176
|
+
// attempt is retried through the public API or the SPA.
|
|
177
|
+
...(previous.intakeOrigin != null ? { intakeOrigin: previous.intakeOrigin } : {}),
|
|
178
|
+
// Preserve the error trail: the failure this attempt clears is appended to the history so it
|
|
179
|
+
// stays viewable after the top banner disappears on restart.
|
|
180
|
+
failureHistory: carryForwardFailures(previous),
|
|
181
|
+
// A retry resumes at the first UNFINISHED step and so discards no completed output (this just
|
|
182
|
+
// carries any prior restart's trail forward); a restart resets the chosen step and every later
|
|
183
|
+
// one, so the SUCCESSFUL outputs it discards are recorded here, attributed by step index.
|
|
184
|
+
outputHistory: carryForwardOutputs(previous, plan.currentStep, now),
|
|
185
|
+
};
|
|
186
|
+
}
|
|
151
187
|
//# sourceMappingURL=retry.logic.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retry.logic.js","sourceRoot":"","sources":["../../../src/modules/execution/retry.logic.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"retry.logic.js","sourceRoot":"","sources":["../../../src/modules/execution/retry.logic.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { IntakeOrigin } from '@cat-factory/kernel';
|
|
1
2
|
import type { RunOrigin } from '../pipelines/pipelineShape.js';
|
|
2
3
|
/**
|
|
3
4
|
* Optional launch inputs for {@link ExecutionService.start} — the initiator identity, the
|
|
@@ -28,6 +29,17 @@ export interface RunStartOptions {
|
|
|
28
29
|
* so it never re-checks this.
|
|
29
30
|
*/
|
|
30
31
|
origin?: RunOrigin;
|
|
32
|
+
/**
|
|
33
|
+
* How this run is ENTERING the system: `ui` (the default — every in-app surface) or
|
|
34
|
+
* `public-api` (started headlessly through `/api/v1`). Persisted on the run
|
|
35
|
+
* ({@link ExecutionInstance.intakeOrigin}) because clarification behaviour diverges by
|
|
36
|
+
* intake: a headless run may push its parked questions out to the task's linked tracker
|
|
37
|
+
* issue, whereas a UI-started task's overseer is in the SPA. Distinct from {@link origin},
|
|
38
|
+
* which gates pipeline availability and is not persisted, and from `initiatedBy`, which is
|
|
39
|
+
* `null` for a public-API run, a schedule fire and auth-disabled dev alike. Set by the
|
|
40
|
+
* public-API start paths and nowhere else; a retry/restart carries the stored value forward.
|
|
41
|
+
*/
|
|
42
|
+
intakeOrigin?: IntakeOrigin;
|
|
31
43
|
/**
|
|
32
44
|
* Per-run approval-gate override (the initiative-preset gate-override seam). When supplied it
|
|
33
45
|
* REPLACES the pipeline's declared `gates` for THIS run only — one boolean per pipeline step,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runStartOptions.d.ts","sourceRoot":"","sources":["../../../src/modules/execution/runStartOptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAA;AAE9D;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACjD;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB;;;;;;;;;OASG;IACH,aAAa,CAAC,EAAE,OAAO,EAAE,CAAA;CAC1B"}
|
|
1
|
+
{"version":3,"file":"runStartOptions.d.ts","sourceRoot":"","sources":["../../../src/modules/execution/runStartOptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAA;AAE9D;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACjD;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B;;;;;;;;;OASG;IACH,aAAa,CAAC,EAAE,OAAO,EAAE,CAAA;CAC1B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkspaceSettingsService.d.ts","sourceRoot":"","sources":["../../../src/modules/settings/WorkspaceSettingsService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,4BAA4B,EAC5B,mBAAmB,EACnB,iBAAiB,EACjB,2BAA2B,EAC3B,2BAA2B,EAC5B,MAAM,qBAAqB,CAAA;AAQ5B,MAAM,WAAW,oCAAoC;IACnD,2BAA2B,EAAE,2BAA2B,CAAA;IACxD,mBAAmB,EAAE,mBAAmB,CAAA;IACxC;;;;;;OAMG;IACH,sBAAsB,CAAC,EAAE,gBAAgB,CAAC,2BAA2B,CAAC,CAAA;CACvE;AAED;;;;;;GAMG;AACH,qBAAa,wBAAwB;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;IACtD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAqB;IACzD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAA+C;IAEtE,YAAY,IAAI,EAAE,oCAAoC,EAIrD;IAED,0FAA0F;IACpF,GAAG,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAMzD;IAED;;;;OAIG;IACG,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAO7E;IAED,kEAAkE;IAC5D,MAAM,CACV,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,4BAA4B,GAClC,OAAO,CAAC,iBAAiB,CAAC,
|
|
1
|
+
{"version":3,"file":"WorkspaceSettingsService.d.ts","sourceRoot":"","sources":["../../../src/modules/settings/WorkspaceSettingsService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,4BAA4B,EAC5B,mBAAmB,EACnB,iBAAiB,EACjB,2BAA2B,EAC3B,2BAA2B,EAC5B,MAAM,qBAAqB,CAAA;AAQ5B,MAAM,WAAW,oCAAoC;IACnD,2BAA2B,EAAE,2BAA2B,CAAA;IACxD,mBAAmB,EAAE,mBAAmB,CAAA;IACxC;;;;;;OAMG;IACH,sBAAsB,CAAC,EAAE,gBAAgB,CAAC,2BAA2B,CAAC,CAAA;CACvE;AAED;;;;;;GAMG;AACH,qBAAa,wBAAwB;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;IACtD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAqB;IACzD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAA+C;IAEtE,YAAY,IAAI,EAAE,oCAAoC,EAIrD;IAED,0FAA0F;IACpF,GAAG,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAMzD;IAED;;;;OAIG;IACG,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAO7E;IAED,kEAAkE;IAC5D,MAAM,CACV,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,4BAA4B,GAClC,OAAO,CAAC,iBAAiB,CAAC,CAoE5B;CACF"}
|
|
@@ -44,6 +44,7 @@ export class WorkspaceSettingsService {
|
|
|
44
44
|
taskLimitShared: patch.taskLimitShared !== undefined ? patch.taskLimitShared : current.taskLimitShared,
|
|
45
45
|
taskLimitPerType: patch.taskLimitPerType !== undefined ? patch.taskLimitPerType : current.taskLimitPerType,
|
|
46
46
|
storeAgentContext: patch.storeAgentContext ?? current.storeAgentContext,
|
|
47
|
+
publishPrVerificationReport: patch.publishPrVerificationReport ?? current.publishPrVerificationReport,
|
|
47
48
|
artifactRetentionDays: patch.artifactRetentionDays ?? current.artifactRetentionDays,
|
|
48
49
|
kaizenEnabled: patch.kaizenEnabled ?? current.kaizenEnabled,
|
|
49
50
|
delegateAgentsToRunnerPool: patch.delegateAgentsToRunnerPool ?? current.delegateAgentsToRunnerPool,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkspaceSettingsService.js","sourceRoot":"","sources":["../../../src/modules/settings/WorkspaceSettingsService.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"WorkspaceSettingsService.js","sourceRoot":"","sources":["../../../src/modules/settings/WorkspaceSettingsService.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cat-factory/orchestration",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.138.0",
|
|
4
4
|
"description": "Delivery-workflow engine for the Agent Architecture Board (execution, bootstrap, pipelines, board, boardScan, requirements, and composition root).",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -25,20 +25,20 @@
|
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
27
|
"ai": "^7.0.35",
|
|
28
|
-
"@cat-factory/agents": "0.69.
|
|
29
|
-
"@cat-factory/caching": "0.10.
|
|
30
|
-
"@cat-factory/contracts": "0.
|
|
31
|
-
"@cat-factory/integrations": "0.
|
|
32
|
-
"@cat-factory/kernel": "0.
|
|
33
|
-
"@cat-factory/prompt-fragments": "0.14.
|
|
34
|
-
"@cat-factory/sandbox": "0.9.
|
|
35
|
-
"@cat-factory/spend": "0.12.
|
|
36
|
-
"@cat-factory/workspaces": "0.17.
|
|
28
|
+
"@cat-factory/agents": "0.69.5",
|
|
29
|
+
"@cat-factory/caching": "0.10.38",
|
|
30
|
+
"@cat-factory/contracts": "0.163.0",
|
|
31
|
+
"@cat-factory/integrations": "0.95.0",
|
|
32
|
+
"@cat-factory/kernel": "0.157.0",
|
|
33
|
+
"@cat-factory/prompt-fragments": "0.14.11",
|
|
34
|
+
"@cat-factory/sandbox": "0.9.143",
|
|
35
|
+
"@cat-factory/spend": "0.12.82",
|
|
36
|
+
"@cat-factory/workspaces": "0.17.25"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
39
|
"typescript": "7.0.2",
|
|
40
40
|
"vitest": "^4.1.10",
|
|
41
|
-
"@cat-factory/sandbox-fixtures": "0.7.
|
|
41
|
+
"@cat-factory/sandbox-fixtures": "0.7.194"
|
|
42
42
|
},
|
|
43
43
|
"scripts": {
|
|
44
44
|
"build": "tsc -b tsconfig.build.json",
|