@ccdd/project 5.1.2 → 6.0.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/monitor-ui/assets/{GraphView-BILt_jGR.js → GraphView-Dvqux-3b.js} +3 -3
- package/dist/monitor-ui/assets/ValidationView-ksCr_lB7.css +1 -0
- package/dist/monitor-ui/assets/ValidationView-qhnNfj00.js +1 -0
- package/dist/monitor-ui/assets/{elk-api-CW6DDhyE.js → elk-api-D1k8qsLm.js} +1 -1
- package/dist/monitor-ui/assets/{elk.bundled-WR-av3nY.js → elk.bundled-DgeQWR_s.js} +1 -1
- package/dist/monitor-ui/assets/{index-Drtw0yLv.js → index-beXagC6U.js} +3 -3
- package/dist/monitor-ui/index.html +1 -1
- package/dist/src/broker/admission.d.ts +19 -0
- package/dist/src/broker/admission.js +33 -0
- package/dist/src/broker/admission.js.map +1 -0
- package/dist/src/broker/changes.d.ts +25 -0
- package/dist/src/broker/changes.js +27 -0
- package/dist/src/broker/changes.js.map +1 -0
- package/dist/src/broker/coalescing.d.ts +1 -0
- package/dist/src/broker/coalescing.js +5 -3
- package/dist/src/broker/coalescing.js.map +1 -1
- package/dist/src/broker/graph.d.ts +1 -1
- package/dist/src/broker/graph.js +1 -1
- package/dist/src/broker/graph.js.map +1 -1
- package/dist/src/broker/index.d.ts +28 -3
- package/dist/src/broker/index.js +238 -299
- package/dist/src/broker/index.js.map +1 -1
- package/dist/src/broker/readiness.d.ts +17 -0
- package/dist/src/broker/readiness.js +230 -0
- package/dist/src/broker/readiness.js.map +1 -0
- package/dist/src/broker/storage.d.ts +65 -0
- package/dist/src/broker/storage.js +178 -0
- package/dist/src/broker/storage.js.map +1 -0
- package/dist/src/contracts.d.ts +1 -1
- package/dist/src/monitor/store.js +6 -4
- package/dist/src/monitor/store.js.map +1 -1
- package/dist/src/monitor/ui/format.js +1 -1
- package/dist/src/monitor/ui/format.js.map +1 -1
- package/dist/src/project/cli.js +8 -7
- package/dist/src/project/cli.js.map +1 -1
- package/dist/src/project/gates.d.ts +6 -0
- package/dist/src/project/gates.js +33 -0
- package/dist/src/project/gates.js.map +1 -0
- package/dist/src/project/index.d.ts +2 -1
- package/dist/src/project/index.js +2 -2
- package/dist/src/project/index.js.map +1 -1
- package/dist/src/project/query.js +35 -8
- package/dist/src/project/query.js.map +1 -1
- package/dist/src/project/store.d.ts +1 -1
- package/dist/src/project/store.js +29 -17
- package/dist/src/project/store.js.map +1 -1
- package/dist/src/project/types.d.ts +7 -3
- package/dist/src/state-format.js +2 -2
- package/package.json +2 -2
- package/dist/monitor-ui/assets/ValidationView-D18mwExY.css +0 -1
- package/dist/monitor-ui/assets/ValidationView-L-a3hI_A.js +0 -1
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { stronglyConnectedComponents } from '../broker/graph.js';
|
|
2
|
+
export const gateTestHooks = {};
|
|
3
|
+
/** Direct condensation edges only. Entries are dependency-first, including SCC peers. */
|
|
4
|
+
export function criticGates(snapshot) {
|
|
5
|
+
const { artifacts, critics, relations } = snapshot.config;
|
|
6
|
+
const components = stronglyConnectedComponents(Object.keys(artifacts), relations);
|
|
7
|
+
const component = new Map(components.flatMap((ids, n) => ids.map(id => [id, n])));
|
|
8
|
+
const owned = components.map(() => []);
|
|
9
|
+
const gating = components.map(() => []);
|
|
10
|
+
for (const critic of critics) {
|
|
11
|
+
const index = component.get(critic.target);
|
|
12
|
+
owned[index].push(critic.id);
|
|
13
|
+
if (!artifacts[critic.target].basis)
|
|
14
|
+
gating[index].push(critic.id);
|
|
15
|
+
}
|
|
16
|
+
const dependencies = components.map(() => new Set());
|
|
17
|
+
for (const edge of relations) {
|
|
18
|
+
gateTestHooks.edge?.();
|
|
19
|
+
const consumer = component.get(edge.target), dependency = component.get(edge.source);
|
|
20
|
+
if (consumer !== dependency)
|
|
21
|
+
dependencies[consumer].add(dependency);
|
|
22
|
+
}
|
|
23
|
+
const result = new Map();
|
|
24
|
+
// Tarjan emits a component after its dependencies. No transitive closure is
|
|
25
|
+
// materialized: a child observes its parent's gated state transitively.
|
|
26
|
+
for (let index = 0; index < components.length; index++) {
|
|
27
|
+
const direct = [...dependencies[index]].flatMap(dependency => gating[dependency]);
|
|
28
|
+
for (const critic of owned[index])
|
|
29
|
+
result.set(critic, direct);
|
|
30
|
+
}
|
|
31
|
+
return result;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=gates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gates.js","sourceRoot":"","sources":["../../../src/project/gates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AAGjE,MAAM,CAAC,MAAM,aAAa,GAA0B,EAAE,CAAC;AACvD,yFAAyF;AACzF,MAAM,UAAU,WAAW,CAAC,QAAyC;IACnE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC;IAC1D,MAAM,UAAU,GAAG,2BAA2B,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,CAAC;IAClF,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAU,CAAC,CAAC,CAAC,CAAC;IAC3F,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAc,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAc,CAAC,CAAC;IACpD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAE,CAAC;QAC5C,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC7B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK;YAAE,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACrE,CAAC;IACD,MAAM,YAAY,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,GAAG,EAAU,CAAC,CAAC;IAC7D,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC;QACvB,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAE,EAAE,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAE,CAAC;QACvF,IAAI,QAAQ,KAAK,UAAU;YAAE,YAAY,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACtE,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC3C,4EAA4E;IAC5E,wEAAwE;IACxE,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QACvD,MAAM,MAAM,GAAG,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;QAClF,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC;YAAE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChE,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -19,12 +19,13 @@ export { pruneProject, type PruneResult } from './prune.js';
|
|
|
19
19
|
export { createBroker } from '../broker/index.js';
|
|
20
20
|
export { createExecutorRegistry } from '../executors/index.js';
|
|
21
21
|
/** Explicit CLI query: briefly observe the current workspace without creating a store. */
|
|
22
|
-
export declare function inspectProject<D extends ResultDetail = 'compact'>({ detail, repoPath, stateDir, selection, recursive, force, signal, identityConcurrency, workspaceIntegrity }: {
|
|
22
|
+
export declare function inspectProject<D extends ResultDetail = 'compact'>({ detail, repoPath, stateDir, selection, recursive, force, ignoreGates, signal, identityConcurrency, workspaceIntegrity }: {
|
|
23
23
|
repoPath: string;
|
|
24
24
|
stateDir: string;
|
|
25
25
|
selection?: ProjectSelection;
|
|
26
26
|
recursive?: boolean;
|
|
27
27
|
force?: boolean;
|
|
28
|
+
ignoreGates?: boolean;
|
|
28
29
|
signal?: AbortSignal;
|
|
29
30
|
identityConcurrency?: number;
|
|
30
31
|
workspaceIntegrity?: WorkspaceIntegrity;
|
|
@@ -19,13 +19,13 @@ export { pruneProject } from './prune.js';
|
|
|
19
19
|
export { createBroker } from '../broker/index.js';
|
|
20
20
|
export { createExecutorRegistry } from '../executors/index.js';
|
|
21
21
|
/** Explicit CLI query: briefly observe the current workspace without creating a store. */
|
|
22
|
-
export async function inspectProject({ detail, repoPath, stateDir, selection, recursive = false, force = false, signal, identityConcurrency = DEFAULT_IDENTITY_CONCURRENCY, workspaceIntegrity = 'content' }) {
|
|
22
|
+
export async function inspectProject({ detail, repoPath, stateDir, selection, recursive = false, force = false, ignoreGates = false, signal, identityConcurrency = DEFAULT_IDENTITY_CONCURRENCY, workspaceIntegrity = 'content' }) {
|
|
23
23
|
positiveConcurrency(identityConcurrency, 'identityConcurrency');
|
|
24
24
|
const workspace = await prepareWorkspace({ repoPath, stateDir, signal, integrity: workspaceIntegrity });
|
|
25
25
|
try {
|
|
26
26
|
const { config } = await readWorkspaceConfig(workspace.descriptor.path, workspace.signal);
|
|
27
27
|
const snapshot = await createProjectSnapshot(config, workspace.descriptor.path, workspace.descriptor.hash, workspace.signal, workspace.descriptor.integrity, selection, { identityConcurrency });
|
|
28
|
-
const plan = currentProjectPlan(stateDir, snapshot, { selection, recursive, force });
|
|
28
|
+
const plan = currentProjectPlan(stateDir, snapshot, { selection, recursive, force, ignoreGates });
|
|
29
29
|
await workspace.assertUnchanged();
|
|
30
30
|
return resultView({ detail }, { snapshot, plan }, () => ({ plan: requesterPlan(plan, stateDir) }));
|
|
31
31
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/project/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAA2B,MAAM,wBAAwB,CAAC;AACnF,OAAO,EAAE,qBAAqB,EAAE,4BAA4B,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACzG,OAAO,EAAE,WAAW,IAAI,QAAQ,EAAE,YAAY,IAAI,SAAS,EAAE,MAAM,YAAY,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,UAAU,EAAyC,MAAM,mBAAmB,CAAC;AAErH,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAIhD,OAAO,EAAE,qBAAqB,EAAwB,MAAM,eAAe,CAAC;AAG5E,gGAAgG;AAChG,MAAM,UAAU,YAAY,CAAqC,QAAyB,EAAE,OAAsC,EAAE,OAA+D;IACjM,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACpD,OAAO,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;AACnF,CAAC;AACD,MAAM,UAAU,WAAW,CAAqC,QAAyB,EAAE,OAAsC,EAAE,OAAqG;IACtO,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAClD,OAAO,UAAU,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;AAChF,CAAC;AACD,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACtF,OAAO,EAAE,YAAY,EAAoB,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,0FAA0F;AAC1F,MAAM,CAAC,KAAK,UAAU,cAAc,CAAqC,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,GAAG,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,MAAM,EAAE,mBAAmB,GAAG,4BAA4B,EAAE,kBAAkB,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/project/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { criticGates } from './gates.js';
|
|
1
2
|
import { createGraphDefinition } from '../broker/graph.js';
|
|
2
3
|
import { dependencyClosure } from '../artifacts/scope.js';
|
|
3
4
|
export function selectedCritics(snapshot, selection) {
|
|
@@ -48,9 +49,9 @@ export function queryProject(snapshot, history, options = {}) {
|
|
|
48
49
|
const key = `${id}:${input.key}`, evidence = (input.reusable && !forced.has(id) ? byKey : byRunKey).get(key) ?? null;
|
|
49
50
|
const attempt = attempts.get(id), ownPass = evidence?.verdict === 'GREEN';
|
|
50
51
|
let status, reason;
|
|
51
|
-
if (attempt && ['QUEUED', 'RUNNING', 'WAITING_HUMAN'].includes(attempt.status)) {
|
|
52
|
+
if (attempt && ['QUEUED', 'RUNNING', 'WAITING_HUMAN', 'WAIT_DEPENDENCY', 'BLOCKED'].includes(attempt.status)) {
|
|
52
53
|
status = attempt.status;
|
|
53
|
-
reason = 'A review of this input is in progress.';
|
|
54
|
+
reason = 'blockedReason' in attempt && typeof attempt.blockedReason === 'string' && attempt.blockedReason ? attempt.blockedReason : 'A review of this input is in progress.';
|
|
54
55
|
}
|
|
55
56
|
else if (attempt?.status === 'ERROR') {
|
|
56
57
|
status = 'ERROR';
|
|
@@ -83,7 +84,31 @@ export function queryProject(snapshot, history, options = {}) {
|
|
|
83
84
|
return { id, title: definition.title, target: definition.target, deps: [...definition.deps], status, isStale: status !== 'PASS', needsReview: !evidence,
|
|
84
85
|
canExecute: !evidence && !attempt, blockedBy: [], reason, input, result: evidence, requestId: attempt?.id ?? null };
|
|
85
86
|
});
|
|
86
|
-
|
|
87
|
+
if (!options.ignoreGates) {
|
|
88
|
+
const gates = criticGates(snapshot);
|
|
89
|
+
const original = new Map(critics.map(c => [c.id, c.status]));
|
|
90
|
+
const byId = new Map(critics.map(c => [c.id, c]));
|
|
91
|
+
for (const [id, dependencies] of gates) {
|
|
92
|
+
const critic = byId.get(id);
|
|
93
|
+
if (!critic)
|
|
94
|
+
continue;
|
|
95
|
+
const unmet = dependencies.filter(id => original.get(id) !== 'PASS');
|
|
96
|
+
if (!unmet.length)
|
|
97
|
+
continue;
|
|
98
|
+
const red = unmet.filter(id => original.get(id) === 'RED' || original.get(id) === 'BLOCKED');
|
|
99
|
+
critic.status = red.length ? 'BLOCKED' : 'WAIT_DEPENDENCY';
|
|
100
|
+
critic.canExecute = false;
|
|
101
|
+
critic.isStale = true;
|
|
102
|
+
critic.blockedBy = unmet;
|
|
103
|
+
critic.reason = `${red.length ? 'Dependency verdict RED' : 'Waiting for current GREEN dependency evidence'}: ${unmet.map(id => `${id} (${original.get(id) ?? 'UNREVIEWED'})`).join(', ')}`;
|
|
104
|
+
// The own result remains auditable but cannot masquerade as current satisfaction.
|
|
105
|
+
critic.result = null;
|
|
106
|
+
original.set(critic.id, critic.status);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
const own = new Map(required.map(id => [id, []]));
|
|
110
|
+
for (const critic of critics)
|
|
111
|
+
own.get(critic.target).push(critic);
|
|
87
112
|
const ownSatisfied = (id) => snapshot.config.artifacts[id].basis === true || own.get(id).length > 0 && own.get(id).every(c => c.status === 'PASS');
|
|
88
113
|
const scopeMemo = new Map();
|
|
89
114
|
const scope = (id) => { if (!scopeMemo.has(id))
|
|
@@ -91,24 +116,26 @@ export function queryProject(snapshot, history, options = {}) {
|
|
|
91
116
|
const artifacts = Object.keys(snapshot.config.artifacts).filter(id => requiredSet.has(id)).map((id) => {
|
|
92
117
|
const evaluations = own.get(id), satisfied = scope(id).every(ownSatisfied);
|
|
93
118
|
const status = satisfied ? snapshot.config.artifacts[id].basis ? 'BASIS' : 'PASS' :
|
|
94
|
-
['RUNNING', 'QUEUED', 'WAITING_HUMAN', 'ERROR', 'RED', 'STALE', 'UNREVIEWED'].find(s => evaluations.some(c => c.status === s)) ?? (ownSatisfied(id) ? 'INCOMPLETE' : 'UNREVIEWED');
|
|
119
|
+
['RUNNING', 'QUEUED', 'WAITING_HUMAN', 'ERROR', 'RED', 'BLOCKED', 'WAIT_DEPENDENCY', 'STALE', 'UNREVIEWED'].find(s => evaluations.some(c => c.status === s)) ?? (ownSatisfied(id) ? 'INCOMPLETE' : 'UNREVIEWED');
|
|
95
120
|
return { id, hash: snapshot.artifactHashes[id], ...snapshot.artifactIdentities?.[id], status, isStale: !satisfied, criticIds: evaluations.map(c => c.id), passed: evaluations.filter(c => c.status === 'PASS').length, total: evaluations.length };
|
|
96
121
|
});
|
|
97
122
|
// These are unmet final obligations, not reasons to delay executing a Critic.
|
|
98
123
|
for (const critic of critics)
|
|
99
|
-
|
|
124
|
+
if (!critic.blockedBy.length)
|
|
125
|
+
critic.blockedBy = scope(critic.target).filter(id => id !== critic.target && !ownSatisfied(id));
|
|
100
126
|
return { snapshotHash: snapshot.snapshotHash, workspaceIntegrity: snapshot.workspaceIntegrity ?? 'content', selection, satisfied: required.every(ownSatisfied), artifacts, critics };
|
|
101
127
|
}
|
|
102
128
|
export function planProject(snapshot, history, options = {}, coalesce) {
|
|
103
129
|
const selection = options.selection ?? { kind: 'all' }, selectedCriticIds = selectedCritics(snapshot, selection), includedCriticIds = includedCritics(snapshot, selection, Boolean(options.recursive));
|
|
104
130
|
const query = queryProject(snapshot, history, { ...options, selection, forceCriticIds: options.force ? selectedCriticIds : options.forceCriticIds });
|
|
105
|
-
const
|
|
106
|
-
|
|
131
|
+
const includedSet = new Set(includedCriticIds);
|
|
132
|
+
const items = query.critics.filter(c => includedSet.has(c.id)).map(c => {
|
|
133
|
+
const action = (c.status === 'BLOCKED' || c.status === 'WAIT_DEPENDENCY' ? c.status : c.result ? 'REUSE' : ['QUEUED', 'RUNNING', 'WAITING_HUMAN'].includes(c.status) ? 'ACTIVE' : c.canExecute ? 'EXECUTE' : c.requestId ? 'FAILED' : 'WAIT');
|
|
107
134
|
// Force bypasses adoption for the whole submission, matching the Broker.
|
|
108
135
|
const source = action === 'EXECUTE' && !options.force && !options.forceCriticIds?.includes(c.id) ? coalesce?.(c) : null;
|
|
109
136
|
return source ? { ...c, ...source, canExecute: false, reason: 'An identical active request can supply this review.', action: 'COALESCE' } : { ...c, action };
|
|
110
137
|
});
|
|
111
138
|
return { ...query, recursive: Boolean(options.recursive), force: Boolean(options.force), selectedCriticIds, includedCriticIds, items,
|
|
112
|
-
counts: { reuse: items.filter(c => c.action === 'REUSE').length, coalesce: items.filter(c => c.action === 'COALESCE').length, execute: items.filter(c => c.action === 'EXECUTE').length, wait: items.filter(c => c.action === 'WAIT').length, active: items.filter(c => c.action === 'ACTIVE').length, failed: items.filter(c => c.action === 'FAILED').length } };
|
|
139
|
+
counts: { gated: items.filter(c => c.action === 'BLOCKED' || c.action === 'WAIT_DEPENDENCY').length, reuse: items.filter(c => c.action === 'REUSE').length, coalesce: items.filter(c => c.action === 'COALESCE').length, execute: items.filter(c => c.action === 'EXECUTE').length, wait: items.filter(c => c.action === 'WAIT').length, active: items.filter(c => c.action === 'ACTIVE').length, failed: items.filter(c => c.action === 'FAILED').length } };
|
|
113
140
|
}
|
|
114
141
|
//# sourceMappingURL=query.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../../src/project/query.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../../src/project/query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAG1D,MAAM,UAAU,eAAe,CAAC,QAAyC,EAAE,SAA2B;IACpG,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;IAC/B,IAAI,SAAS,CAAC,IAAI,KAAK,KAAK;QAAE,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACnE,IAAI,SAAS,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAChC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,CAAC,QAAQ,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;QACrH,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,UAAU,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC;IACzH,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACtF,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,QAAyC,EAAE,SAA2B;IACtG,eAAe,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,CAAC,QAAQ,CAAE,CAAC,MAAM,CAAC,CAAC;IACpN,OAAO,iBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,QAAyC,EAAE,SAA2B,EAAE,SAAkB;IACxH,MAAM,QAAQ,GAAG,eAAe,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACtD,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,KAAK;QAAE,OAAO,QAAQ,CAAC;IAC5D,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,iBAAiB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;IAC9D,OAAO,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACjF,CAAC;AAED,+FAA+F;AAC/F,MAAM,UAAU,YAAY,CAAC,QAAyB,EAAE,OAAsC,EAAE,OAAO,GAAiB,EAAE;IACxH,IAAI,QAAQ,CAAC,OAAO,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IAChF,qBAAqB,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,QAAQ,GAAG,iBAAiB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC1G,MAAM,KAAK,GAAG,IAAI,GAAG,EAA8B,EAAE,QAAQ,GAAG,IAAI,GAAG,EAA8B,EAAE,QAAQ,GAAG,IAAI,GAAG,EAA8B,CAAC;IACxJ,KAAK,MAAM,QAAQ,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;QAClI,MAAM,GAAG,GAAG,GAAG,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QACzD,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACpE,IAAI,QAAQ,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,mBAAmB,EAAE,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC;YAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACjI,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC;IACxI,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,OAAO,GAAuB,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;QACpI,MAAM,EAAE,GAAG,UAAU,CAAC,EAAE,EAAE,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,EAAE,EAAE,CAAC,CAAC;QAC9F,MAAM,GAAG,GAAG,GAAG,EAAE,IAAI,KAAK,CAAC,GAAG,EAAE,EAAE,QAAQ,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;QACrH,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,OAAO,GAAG,QAAQ,EAAE,OAAO,KAAK,OAAO,CAAC;QAC1E,IAAI,MAAwB,EAAE,MAAc,CAAC;QAC7C,IAAI,OAAO,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE,iBAAiB,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7G,MAAM,GAAG,OAAO,CAAC,MAA0B,CAAC;YAAC,MAAM,GAAG,eAAe,IAAI,OAAO,IAAI,OAAO,OAAO,CAAC,aAAa,KAAK,QAAQ,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,wCAAwC,CAAC;QAC5N,CAAC;aAAM,IAAI,OAAO,EAAE,MAAM,KAAK,OAAO,EAAE,CAAC;YACvC,MAAM,GAAG,OAAO,CAAC;YAAC,MAAM,GAAG,OAAO,CAAC,KAAK,IAAI,gCAAgC,CAAC;QAC/E,CAAC;aAAM,IAAI,OAAO,EAAE,CAAC;YAAC,MAAM,GAAG,MAAM,CAAC;YAAC,MAAM,GAAG,wBAAwB,QAAS,CAAC,SAAS,sBAAsB,CAAC;QAAC,CAAC;aAC/G,IAAI,QAAQ,EAAE,OAAO,KAAK,KAAK,EAAE,CAAC;YAAC,MAAM,GAAG,KAAK,CAAC;YAAC,MAAM,GAAG,uBAAuB,QAAQ,CAAC,SAAS,sBAAsB,CAAC;QAAC,CAAC;aAC9H,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YAAC,MAAM,GAAG,OAAO,CAAC;YAAC,MAAM,GAAG,gDAAgD,CAAC;QAAC,CAAC;aACpG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YAAC,MAAM,GAAG,OAAO,CAAC;YAAC,MAAM,GAAG,mEAAmE,CAAC;QAAC,CAAC;aACxH,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YAAC,MAAM,GAAG,OAAO,CAAC;YAAC,MAAM,GAAG,oEAAoE,CAAC;QAAC,CAAC;aAC1H,CAAC;YAAC,MAAM,GAAG,YAAY,CAAC;YAAC,MAAM,GAAG,oDAAoD,CAAC;QAAC,CAAC;QAC9F,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,MAAM,EAAE,WAAW,EAAE,CAAC,QAAQ;YACrJ,UAAU,EAAE,CAAC,QAAQ,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC;IACxH,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;QACpC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC7D,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAClD,KAAK,MAAM,CAAC,EAAE,EAAE,YAAY,CAAC,IAAI,KAAK,EAAE,CAAC;YACvC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAAC,IAAI,CAAC,MAAM;gBAAE,SAAS;YACnD,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,CAAC;YACrE,IAAI,CAAC,KAAK,CAAC,MAAM;gBAAE,SAAS;YAC5B,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,KAAK,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,SAAS,CAAC,CAAC;YAC7F,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC;YAAC,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC;YAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;YAC7G,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC;YACzB,MAAM,CAAC,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,+CAA+C,KAAK,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3L,kFAAkF;YAClF,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;YACrB,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,GAAG,CAA6B,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9E,KAAK,MAAM,MAAM,IAAI,OAAO;QAAE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnE,MAAM,YAAY,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,KAAK,KAAK,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;IAC7J,MAAM,SAAS,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC9C,MAAM,KAAK,GAAG,CAAC,EAAU,EAAE,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;QAAE,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,iBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,SAAS,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC,CAAC,CAAC,CAAC;IAC5J,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAsB,EAAE;QACxH,MAAM,WAAW,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAE,EAAE,SAAS,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC5E,MAAM,MAAM,GAAqB,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YAClG,CAAC,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,OAAO,EAAE,YAAY,CAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;QAC9N,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,GAAG,QAAQ,CAAC,kBAAkB,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC;IACrP,CAAC,CAAC,CAAC;IACH,8EAA8E;IAC9E,KAAK,MAAM,MAAM,IAAI,OAAO;QAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM;YAAE,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,MAAM,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5J,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC,YAAY,EAAE,kBAAkB,EAAE,QAAQ,CAAC,kBAAkB,IAAI,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;AACvL,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,QAAyB,EAAE,OAAsC,EAAE,OAAO,GAA4D,EAAE,EAAE,QAA8F;IAClQ,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,iBAAiB,GAAG,eAAe,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,iBAAiB,GAAG,eAAe,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IACvM,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IACrJ,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;QACrE,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAA2C,CAAC;QACxR,yEAAyE;QACzE,MAAM,MAAM,GAAG,MAAM,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACxH,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,qDAAqD,EAAE,MAAM,EAAE,UAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACxK,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,KAAK;QAClI,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,iBAAiB,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;AAClc,CAAC"}
|
|
@@ -4,7 +4,7 @@ import type { ReviewRequest } from '../contracts.js';
|
|
|
4
4
|
import type { RunView } from '../broker/index.js';
|
|
5
5
|
import type { ValidationEvidence, ProjectPlan } from './types.js';
|
|
6
6
|
import { planProject } from './query.js';
|
|
7
|
-
export declare function readEvidence(database: DatabaseSync): ValidationEvidence[];
|
|
7
|
+
export declare function readEvidence(database: DatabaseSync, runId?: string): ValidationEvidence[];
|
|
8
8
|
/** Existing databases only; no migrations, ownership reconciliation or write connection. */
|
|
9
9
|
export declare function withProjectStore<T>(stateDir: string, read: (database: DatabaseSync) => T, empty: T): T;
|
|
10
10
|
export declare function projectHistory<D extends ResultDetail = 'compact'>(stateDir: string, options?: ResultOptions<D>): import("../result-view.js").ResultView<D, ValidationEvidence, import("../result-view.js").RequesterResult>[];
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { records } from '../broker/storage.js';
|
|
1
2
|
import { assertStateFormat } from '../state-format.js';
|
|
2
3
|
import { semanticResult } from '../response-schema.js';
|
|
3
4
|
import { requesterRun, requesterRequest, requesterEvidence, resultView } from '../result-view.js';
|
|
@@ -6,13 +7,21 @@ import { existsSync } from 'node:fs';
|
|
|
6
7
|
import { join } from 'node:path';
|
|
7
8
|
import { planProject } from './query.js';
|
|
8
9
|
import { findCoalescibleRequest } from '../broker/coalescing.js';
|
|
9
|
-
export function readEvidence(database) {
|
|
10
|
-
const
|
|
10
|
+
export function readEvidence(database, runId) {
|
|
11
|
+
const store = records(database);
|
|
12
|
+
const rows = runId === undefined
|
|
13
|
+
? database.prepare("SELECT data FROM requests WHERE status IN ('GREEN','RED') ORDER BY json_extract(data,'$.completedAt'),rowid").all()
|
|
14
|
+
: database.prepare("SELECT q.data FROM requests q JOIN (SELECT DISTINCT evidence_id FROM run_members WHERE run_id=? AND evidence_id IS NOT NULL) m ON q.id=m.evidence_id WHERE q.status IN ('GREEN','RED') ORDER BY json_extract(q.data,'$.completedAt'),q.rowid").all(runId);
|
|
11
15
|
return rows.flatMap(row => {
|
|
12
|
-
const
|
|
13
|
-
if (!
|
|
16
|
+
const header = JSON.parse(String(row.data));
|
|
17
|
+
if (!header.inputRef || !header.resultRef || !header.completedAt)
|
|
14
18
|
return [];
|
|
15
|
-
|
|
19
|
+
const input = store.get(header.inputRef), result = store.get(header.semanticRef);
|
|
20
|
+
if (!result || result.verdict !== header.status)
|
|
21
|
+
throw new Error('Stored result/status mismatch.');
|
|
22
|
+
if (input.version !== 3 || !/^[a-f0-9]{64}$/.test(input.key))
|
|
23
|
+
return [];
|
|
24
|
+
return [{ requestId: header.id, runId: header.runId, criticId: header.criticId, input, completedAt: header.completedAt, verdict: result.verdict, result: semanticResult(result) }];
|
|
16
25
|
});
|
|
17
26
|
}
|
|
18
27
|
/** Existing databases only; no migrations, ownership reconciliation or write connection. */
|
|
@@ -35,20 +44,18 @@ export function withProjectStore(stateDir, read, empty) {
|
|
|
35
44
|
}
|
|
36
45
|
export function projectHistory(stateDir, options = {}) { return withProjectStore(stateDir, db => readEvidence(db).map(evidence => resultView(options, evidence, () => requesterEvidence(evidence, stateDir))), []); }
|
|
37
46
|
// Compact/status consumers do not hydrate request manifests or duplicated Run
|
|
38
|
-
// templates/graph. Full audit lookup
|
|
47
|
+
// templates/graph. Full audit lookup reconstructs the admitted current-format record.
|
|
39
48
|
const requestProjection = "json_remove(data, '$.artifacts', '$.configManifest', '$.payload', '$.references')";
|
|
40
49
|
function readRun(database, id, full) {
|
|
41
|
-
const
|
|
42
|
-
|
|
43
|
-
if (!row)
|
|
50
|
+
const store = records(database), run = store.run(id, full);
|
|
51
|
+
if (!run)
|
|
44
52
|
return null;
|
|
45
|
-
const
|
|
46
|
-
const
|
|
47
|
-
const
|
|
48
|
-
const events = database.prepare('SELECT * FROM (SELECT * FROM events WHERE run_id = ? ORDER BY id DESC LIMIT 500) ORDER BY id').all(id).map(event => ({ id: Number(event.id), runId: String(event.run_id), requestId: event.request_id === null ? null : String(event.request_id), createdAt: String(event.created_at), type: String(event.type), message: String(event.message), ...(event.data ? { data: JSON.parse(String(event.data)) } : {}) }));
|
|
53
|
+
const requests = database.prepare('SELECT id FROM requests WHERE run_id=? ORDER BY ordinal').all(id).map(row => store.request(String(row.id), full));
|
|
54
|
+
const shared = (run.project?.coalescedRequestIds ?? []).map(id => store.request(id, false));
|
|
55
|
+
const events = full ? database.prepare('SELECT * FROM (SELECT * FROM events WHERE run_id = ? ORDER BY id DESC LIMIT 500) ORDER BY id').all(id).map(event => ({ id: Number(event.id), runId: String(event.run_id), requestId: event.request_id === null ? null : String(event.request_id), createdAt: String(event.created_at), type: String(event.type), message: String(event.message), ...(event.data ? { data: JSON.parse(String(event.data)) } : {}) })) : [];
|
|
49
56
|
const owner = database.prepare('SELECT pid, claimed_at FROM run_owners WHERE run_id = ?').get(id);
|
|
50
57
|
return { ...run, scope: run.scope ?? { kind: run.graph ? 'graph' : 'chain' }, requests, events, owner: owner ? { pid: Number(owner.pid), claimedAt: String(owner.claimed_at) } : null,
|
|
51
|
-
...(run.project?.version === 3 ? { validation: planProject(run.project.snapshot, readEvidence(database).filter(e => !run.project.evidenceRequestIds || run.project.evidenceRequestIds.includes(e.requestId)), { selection: run.project.selection, recursive: run.project.recursive, force: run.project.force, runId: id, coalescedRequestIds: run.project.coalescedRequestIds, attempts: [...requests, ...shared] }) } : {}) };
|
|
58
|
+
...(run.project?.version === 3 ? { validation: planProject(run.project.snapshot, readEvidence(database, id).filter(e => !run.project.evidenceRequestIds || run.project.evidenceRequestIds.includes(e.requestId)), { selection: run.project.selection, recursive: run.project.recursive, force: run.project.force, ignoreGates: run.project.ignoreGates, runId: id, coalescedRequestIds: run.project.coalescedRequestIds, attempts: [...requests, ...shared] }) } : {}) };
|
|
52
59
|
}
|
|
53
60
|
export function storedRun(database, id) { return readRun(database, id, true); }
|
|
54
61
|
export function storedRequesterRun(database, id, stateDir) {
|
|
@@ -59,13 +66,18 @@ export function storedValidation(database, id) { return readRun(database, id, fa
|
|
|
59
66
|
export function projectRun(stateDir, id) { return withProjectStore(stateDir, db => storedRun(db, id), null); }
|
|
60
67
|
export function projectRuns(stateDir, options = {}) { return withProjectStore(stateDir, db => db.prepare('SELECT id FROM runs ORDER BY created_at DESC, rowid DESC').all().map(row => { const run = readRun(db, String(row.id), options.detail === 'full'); return resultView(options, run, () => requesterRun(run, stateDir)); }), []); }
|
|
61
68
|
export function projectRequests(stateDir, runId, options = {}) {
|
|
62
|
-
|
|
63
|
-
|
|
69
|
+
return withProjectStore(stateDir, db => {
|
|
70
|
+
const store = records(db);
|
|
71
|
+
return (runId ? db.prepare('SELECT id FROM requests WHERE run_id=? ORDER BY ordinal').all(runId) : db.prepare('SELECT id FROM requests ORDER BY rowid').all()).map(row => {
|
|
72
|
+
const request = store.request(String(row.id), options.detail === 'full');
|
|
73
|
+
return resultView(options, request, () => requesterRequest(request, stateDir));
|
|
74
|
+
});
|
|
75
|
+
}, []);
|
|
64
76
|
}
|
|
65
77
|
/** Evidence and active candidates belong to one readonly snapshot; never reconcile stored owners. */
|
|
66
78
|
export function currentProjectPlan(stateDir, snapshot, options) {
|
|
67
79
|
return withProjectStore(stateDir, db => planProject(snapshot, readEvidence(db), options, critic => {
|
|
68
|
-
const source = findCoalescibleRequest(db, critic.id, critic.input.key);
|
|
80
|
+
const source = findCoalescibleRequest(db, critic.id, critic.input.key, { ignoreGates: options?.ignoreGates });
|
|
69
81
|
return source ? { requestId: source.request.id, ...(source.leaseExpiresAt ? { leaseExpiresAt: source.leaseExpiresAt } : {}) } : null;
|
|
70
82
|
}), null) ?? planProject(snapshot, [], options);
|
|
71
83
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/project/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,UAAU,EAAyC,MAAM,mBAAmB,CAAC;AACzI,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAIjC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,MAAM,UAAU,YAAY,CAAC,QAAsB;
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/project/store.ts"],"names":[],"mappings":"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"}
|
|
@@ -53,6 +53,7 @@ export interface ProjectRunDefinition {
|
|
|
53
53
|
selection: ProjectSelection;
|
|
54
54
|
recursive: boolean;
|
|
55
55
|
force: boolean;
|
|
56
|
+
ignoreGates?: boolean;
|
|
56
57
|
/** Prepared definitions, not tickets or persisted stale states. */
|
|
57
58
|
templates: ReviewEnvelope[];
|
|
58
59
|
/** Original evidence consumed by a completed execution; never a cached stale flag. */
|
|
@@ -60,7 +61,7 @@ export interface ProjectRunDefinition {
|
|
|
60
61
|
/** Existing active requests adopted by this Run; never duplicate executions. */
|
|
61
62
|
coalescedRequestIds?: string[];
|
|
62
63
|
}
|
|
63
|
-
export type ValidationStatus = 'PASS' | 'BASIS' | 'UNREVIEWED' | 'STALE' | 'RED' | 'ERROR' | 'INCOMPLETE' | 'QUEUED' | 'RUNNING' | 'WAITING_HUMAN';
|
|
64
|
+
export type ValidationStatus = 'BLOCKED' | 'WAIT_DEPENDENCY' | 'PASS' | 'BASIS' | 'UNREVIEWED' | 'STALE' | 'RED' | 'ERROR' | 'INCOMPLETE' | 'QUEUED' | 'RUNNING' | 'WAITING_HUMAN';
|
|
64
65
|
export interface CriticValidation {
|
|
65
66
|
id: string;
|
|
66
67
|
title: string;
|
|
@@ -98,13 +99,15 @@ export interface ProjectQuery {
|
|
|
98
99
|
export interface ProjectPlan extends ProjectQuery {
|
|
99
100
|
recursive: boolean;
|
|
100
101
|
force: boolean;
|
|
102
|
+
ignoreGates?: boolean;
|
|
101
103
|
selectedCriticIds: string[];
|
|
102
104
|
includedCriticIds: string[];
|
|
103
105
|
items: (CriticValidation & {
|
|
104
|
-
action: 'REUSE' | 'COALESCE' | 'EXECUTE' | 'WAIT' | 'ACTIVE' | 'FAILED';
|
|
106
|
+
action: 'BLOCKED' | 'WAIT_DEPENDENCY' | 'REUSE' | 'COALESCE' | 'EXECUTE' | 'WAIT' | 'ACTIVE' | 'FAILED';
|
|
105
107
|
leaseExpiresAt?: string;
|
|
106
108
|
})[];
|
|
107
109
|
counts: {
|
|
110
|
+
gated: number;
|
|
108
111
|
reuse: number;
|
|
109
112
|
coalesce: number;
|
|
110
113
|
execute: number;
|
|
@@ -115,8 +118,9 @@ export interface ProjectPlan extends ProjectQuery {
|
|
|
115
118
|
}
|
|
116
119
|
export interface QueryOptions {
|
|
117
120
|
selection?: ProjectSelection;
|
|
121
|
+
ignoreGates?: boolean;
|
|
118
122
|
forceCriticIds?: readonly string[];
|
|
119
123
|
runId?: string;
|
|
120
124
|
coalescedRequestIds?: readonly string[];
|
|
121
|
-
attempts?: readonly Pick<ReviewRequest, 'id' | 'criticId' | 'status' | 'error'>[];
|
|
125
|
+
attempts?: readonly Pick<ReviewRequest, 'id' | 'criticId' | 'status' | 'error' | 'blockedReason'>[];
|
|
122
126
|
}
|
package/dist/src/state-format.js
CHANGED
|
@@ -3,7 +3,7 @@ export class StateFormatError extends Error {
|
|
|
3
3
|
}
|
|
4
4
|
/** No legacy reads or migrations: all entry points use the same format gate. */
|
|
5
5
|
export function assertStateFormat(database) {
|
|
6
|
-
if (database.prepare('PRAGMA user_version').get()?.user_version !==
|
|
6
|
+
if (database.prepare('PRAGMA user_version').get()?.user_version !== 6)
|
|
7
7
|
throw new StateFormatError();
|
|
8
8
|
}
|
|
9
9
|
/** Called inside the initialization transaction, before creating any tables. */
|
|
@@ -11,7 +11,7 @@ export function initializeStateFormat(database) {
|
|
|
11
11
|
const version = database.prepare('PRAGMA user_version').get()?.user_version;
|
|
12
12
|
const existing = database.prepare("SELECT 1 FROM sqlite_master WHERE type='table' LIMIT 1").get();
|
|
13
13
|
if (version === 0 && !existing)
|
|
14
|
-
database.exec('PRAGMA user_version=
|
|
14
|
+
database.exec('PRAGMA user_version=6');
|
|
15
15
|
else
|
|
16
16
|
assertStateFormat(database);
|
|
17
17
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ccdd/project",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "6.0.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public",
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"prepack": "npm run build"
|
|
38
38
|
},
|
|
39
39
|
"peerDependencies": {
|
|
40
|
-
"@ccdd/core": ">=
|
|
40
|
+
"@ccdd/core": ">=6.0.0 <7"
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {
|
|
43
43
|
"@earendil-works/pi-agent-core": "0.85.1",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.validation-view[data-v-40366581]{background:#fff;border:1px solid #e4e7e6;border-radius:14px;padding:24px}.validation-heading[data-v-40366581]{justify-content:space-between;align-items:center;gap:20px;display:flex}h2[data-v-40366581]{margin:0 0 8px;font-size:19px}p[data-v-40366581]{line-height:1.65}.validation-heading p[data-v-40366581],.validation-empty[data-v-40366581]{color:#67716c}.inspect-button[data-v-40366581]{color:#fff;cursor:pointer;white-space:nowrap;background:#264d40;border:0;border-radius:8px;padding:11px 18px}.inspect-button[data-v-40366581]:disabled{opacity:.55;cursor:default}.validation-summary[data-v-40366581]{border-top:1px solid #e4e7e6;padding-top:16px}.validation-summary span[data-v-40366581]{color:#67716c;font-size:12px;display:block}.validation-counts[data-v-40366581]{font-size:13px}.validation-table-wrap[data-v-40366581]{overflow-x:auto}table[data-v-40366581]{border-collapse:collapse;text-align:left;width:100%;font-size:13px}.validation-artifacts[data-v-40366581]{color:#67716c;padding-left:18px;font-size:12px;line-height:1.8}th[data-v-40366581],td[data-v-40366581]{vertical-align:top;border-bottom:1px solid #e8ecea;padding:15px 12px}thead th[data-v-40366581]{color:#67716c;font-size:12px}td p[data-v-40366581]{margin:6px 0}small[data-v-40366581]{color:#67716c;margin-top:7px;font-weight:400;display:block}.validation-status[data-v-40366581]{background:#f3efe3;border-radius:5px;padding:4px 7px;font-size:11px;display:inline-block}.validation-status.passed[data-v-40366581]{color:#246740;background:#e6f1e9}@media (max-width:650px){.validation-view[data-v-40366581]{padding:16px}.validation-heading[data-v-40366581]{flex-direction:column;align-items:flex-start}}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{A as e,B as t,N as n,X as r,a as i,b as a,f as o,h as s,it as c,j as l,l as u,m as d,n as f,nt as p,o as m,r as h,s as g,tt as _,v}from"./index-Drtw0yLv.js";var y=[`aria-busy`],b={class:`validation-heading`},x=[`disabled`],S={key:0},C={key:1,class:`validation-empty`},w={key:2,class:`inline-error`,role:`alert`},T={class:`validation-summary`,role:`status`},E={class:`validation-counts`},D={class:`validation-artifacts`,"aria-label":`Artifact validation requirements`},O={key:0},k={class:`validation-table-wrap`},A={scope:`row`},j={key:0},M={key:0},N={key:1},P={key:2},F=[`onClick`],I=f(a({__name:`ValidationView`,props:{projectId:{},session:{}},emits:[`open-request`,`session-expired`],setup(a,{emit:f}){let I=a,L=f,R=r(null),z=r(!1),B=r(``),V,H=0;t(()=>I.projectId,()=>{H++,V?.abort(),R.value=null,z.value=!1,B.value=``}),e(()=>{H++,V?.abort()});async function U(){if(!I.projectId||!I.session||z.value)return;V=new AbortController;let e=++H;z.value=!0,B.value=``;try{let t=await m(`/api/projects/${encodeURIComponent(I.projectId)}/validation`,{body:{},csrfToken:I.session.csrfToken,signal:V.signal});e===H&&(R.value=t)}catch(t){if(e!==H)return;B.value=g(t),t instanceof i&&t.status===403&&L(`session-expired`)}finally{e===H&&(z.value=!1)}}let W={REUSE:`Reuse verdict`,COALESCE:`Share active review`,EXECUTE:`Ready to review`,WAIT:`Execution not ready`,ACTIVE:`In progress`,FAILED:`Execution needs attention`};return(e,t)=>(l(),s(`section`,{class:`validation-view`,"aria-label":`Current input validation status`,"aria-busy":z.value},[o(`div`,b,[t[0]||=o(`div`,null,[o(`h2`,null,`Current input`),o(`p`,null,`Read the project's current configuration and files to determine the reviews needed.`)],-1),o(`button`,{type:`button`,class:`inspect-button`,disabled:!a.projectId||!a.session||z.value,onClick:U},c(z.value?`Inspecting input…`:`Inspect current input`),9,x)]),a.projectId?!R.value&&!B.value?(l(),s(`p`,C,`Select Inspect current input to see reusable verdicts and required reviews.`)):d(``,!0):(l(),s(`p`,S,`Select a project to inspect.`)),B.value?(l(),s(`p`,w,c(B.value),1)):d(``,!0),R.value?(l(),s(u,{key:3},[o(`p`,T,[o(`strong`,null,c(R.value.plan.satisfied?`PASS · All required reviews are satisfied.`:`More reviews are needed.`),1),o(`span`,null,`Observed at `+c(_(h)(R.value.observedAt))+` · Inspect again after editing files or completing reviews.`,1)]),o(`p`,E,`Reuse `+c(R.value.plan.counts.reuse)+` · Coalesce `+c(R.value.plan.counts.coalesce)+` · Ready to review `+c(R.value.plan.counts.execute)+` · Execution not ready `+c(R.value.plan.counts.wait),1),o(`ul`,D,[(l(!0),s(u,null,n(R.value.plan.artifacts,e=>(l(),s(`li`,{key:e.id},[o(`strong`,null,c(e.id),1),v(` · `+c(e.status)+` · `+c(e.passed)+`/`+c(e.total)+` Critics passed`,1),e.status===`UNREVIEWED`&&!e.total?(l(),s(`span`,O,` · No Critics or explicit basis`)):d(``,!0)]))),128))]),o(`div`,k,[o(`table`,null,[t[1]||=o(`thead`,null,[o(`tr`,null,[o(`th`,{scope:`col`},`Critic / Target`),o(`th`,{scope:`col`},`Status`),o(`th`,{scope:`col`},`Next action and reason`)])],-1),o(`tbody`,null,[(l(!0),s(u,null,n(R.value.plan.items,e=>(l(),s(`tr`,{key:e.id},[o(`th`,A,[v(c(e.title),1),o(`small`,null,c(e.id)+` → `+c(e.target),1)]),o(`td`,null,[o(`span`,{class:p([`validation-status`,{passed:e.status===`PASS`}])},c(e.status),3)]),o(`td`,null,[o(`strong`,null,c(W[e.action]),1),o(`p`,null,c(e.reason),1),e.action===`COALESCE`?(l(),s(`p`,j,[v(`Request: `+c(e.requestId),1),e.leaseExpiresAt?(l(),s(`span`,M,` · Lease expires: `+c(_(h)(e.leaseExpiresAt)),1)):d(``,!0)])):d(``,!0),e.blockedBy.length?(l(),s(`p`,N,`Final validation still needs: `+c(e.blockedBy.join(`, `))+`. This does not delay this Critic's execution.`,1)):d(``,!0),e.result?(l(),s(`p`,P,c(JSON.stringify(R.value.plan.results.find(t=>t.reference.requestId===e.result?.requestId))),1)):d(``,!0),e.result?.requestId?(l(),s(`button`,{key:3,type:`button`,class:`text-button`,onClick:t=>L(`open-request`,{projectId:a.projectId,id:e.result.requestId})},`View recorded verdict`,8,F)):d(``,!0)])]))),128))])])])],64)):d(``,!0)],8,y))}}),[[`__scopeId`,`data-v-40366581`]]);export{I as default};
|