@qaick/runner 0.32.2 → 0.32.3
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/package-dist/package.json +5 -5
- package/package-dist/src/demo/RunnerWalkthrough.js +4 -4
- package/package-dist/src/demo/RunnerWalkthrough.js.map +1 -1
- package/package-dist/src/runner/RunnerModule.d.ts +4 -3
- package/package-dist/src/runner/RunnerModule.d.ts.map +1 -1
- package/package-dist/src/runner/RunnerModule.js +228 -63
- package/package-dist/src/runner/RunnerModule.js.map +1 -1
- package/package-dist/src/runner/catalog.js +1 -1
- package/package-dist/src/runner/execution-context.d.ts +1 -1
- package/package-dist/src/runner/execution-context.d.ts.map +1 -1
- package/package-dist/src/runner/execution-context.js +3 -3
- package/package-dist/src/runner/execution-context.js.map +1 -1
- package/package-dist/src/runner/history.d.ts +20 -1
- package/package-dist/src/runner/history.d.ts.map +1 -1
- package/package-dist/src/runner/history.js +14 -0
- package/package-dist/src/runner/history.js.map +1 -1
- package/package-dist/src/runner/invocation-inputs.d.ts +6 -2
- package/package-dist/src/runner/invocation-inputs.d.ts.map +1 -1
- package/package-dist/src/runner/invocation-inputs.js.map +1 -1
- package/package-dist/src/runner/loop-presentation.d.ts +4 -4
- package/package-dist/src/runner/loop-presentation.d.ts.map +1 -1
- package/package-dist/src/runner/loop-presentation.js +4 -4
- package/package-dist/src/runner/loop-presentation.js.map +1 -1
- package/package-dist/src/runner/presentation-state.d.ts +19 -4
- package/package-dist/src/runner/presentation-state.d.ts.map +1 -1
- package/package-dist/src/runner/presentation-state.js +68 -3
- package/package-dist/src/runner/presentation-state.js.map +1 -1
- package/package-dist/src/runner/runtime-client-adapter.d.ts +1 -1
- package/package-dist/src/runner/studio-execution-document.d.ts +4 -0
- package/package-dist/src/runner/studio-execution-document.d.ts.map +1 -0
- package/package-dist/src/runner/studio-execution-document.js +239 -0
- package/package-dist/src/runner/studio-execution-document.js.map +1 -0
- package/package-dist/src/runner/studio-hierarchy-loader.js +2 -2
- package/package-dist/src/runner/types.d.ts +26 -6
- package/package-dist/src/runner/types.d.ts.map +1 -1
- package/package-dist/styles.css +55 -27
- package/package.json +5 -5
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
export function eventPresentationEvidence(events) {
|
|
1
|
+
export function eventPresentationEvidence(events, requestId) {
|
|
2
2
|
const latest = new Map();
|
|
3
3
|
for (const e of events)
|
|
4
|
-
if (e.structuralAddress && e.
|
|
5
|
-
|
|
4
|
+
if ((requestId === undefined || e.requestId === requestId) && e.stepId && (e.structuralAddress || 'occurrence' in e && e.occurrence)) {
|
|
5
|
+
const occurrence = 'occurrence' in e ? e.occurrence : undefined;
|
|
6
|
+
latest.set(JSON.stringify([occurrence ?? e.structuralAddress, e.iterations ?? []]), { occurrence, structuralAddress: e.structuralAddress, iterations: e.iterations, state: e.state });
|
|
7
|
+
}
|
|
6
8
|
return [...latest.values()];
|
|
7
9
|
}
|
|
8
10
|
const key = (value) => JSON.stringify(value);
|
|
@@ -30,6 +32,8 @@ export function presentationState(row, results, terminal, fallback = 'pending')
|
|
|
30
32
|
matches = results.filter(r => prefix(r.structuralAddress, branch) && (parent.iterations ?? []).every((selection, i) => key(selection) === key((r.iterations ?? [])[i])));
|
|
31
33
|
}
|
|
32
34
|
}
|
|
35
|
+
else if (row.occurrence)
|
|
36
|
+
matches = results.filter(r => r.occurrence === row.occurrence);
|
|
33
37
|
else if (row.structuralAddress)
|
|
34
38
|
matches = results.filter(r => key(r.structuralAddress) === key(row.structuralAddress));
|
|
35
39
|
if (matches.length)
|
|
@@ -38,4 +42,65 @@ export function presentationState(row, results, terminal, fallback = 'pending')
|
|
|
38
42
|
return 'not executed';
|
|
39
43
|
return fallback;
|
|
40
44
|
}
|
|
45
|
+
export function scopeIncludes(context, root, key) {
|
|
46
|
+
const rootKey = root.kind === 'document' ? context.root : root.key;
|
|
47
|
+
let node = context.nodes.find(n => n.key === key);
|
|
48
|
+
while (node) {
|
|
49
|
+
if (node.key === rootKey)
|
|
50
|
+
return true;
|
|
51
|
+
const parent = node.parent ? context.nodes.find(n => n.key === node.parent) : undefined;
|
|
52
|
+
if (parent?.sequence && !parent.sequence.includes(node.key))
|
|
53
|
+
return false;
|
|
54
|
+
node = parent;
|
|
55
|
+
}
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
58
|
+
/** Read-only projection. Actual outcomes are never replaced with descendant summaries. */
|
|
59
|
+
export function rowPresentation(row, evidence, terminal, fallback = 'pending', options = {}) {
|
|
60
|
+
const display = (state, source, label = state.toUpperCase()) => ({ state, label, source });
|
|
61
|
+
const { context, scope, result } = options;
|
|
62
|
+
if (row.occurrence && context && scope && !scopeIncludes(context, scope, row.occurrence))
|
|
63
|
+
return display('not executed', 'outside');
|
|
64
|
+
const node = context?.nodes.find(n => n.key === row.occurrence);
|
|
65
|
+
if (node?.kind === 'flow' && result) {
|
|
66
|
+
// Selection identifies an isolated Flow even when target retains its Project identity.
|
|
67
|
+
let outcome;
|
|
68
|
+
if (scope?.kind === 'occurrence' && scope.key === node.key)
|
|
69
|
+
outcome = result;
|
|
70
|
+
else if (node.locator.kind === 'source') {
|
|
71
|
+
const sourceId = node.locator.path.at(-1);
|
|
72
|
+
const id = sourceId?.kind === 'flow' ? sourceId.id : node.locator.path.length === 0 && node.locator.root.kind === 'flow' ? node.locator.root.id : undefined;
|
|
73
|
+
const candidates = (result.children ?? (result.target.kind === 'flow' ? [result] : [])).filter(r => r.target.kind === 'flow' && r.target.id === id);
|
|
74
|
+
if (candidates.length === 1)
|
|
75
|
+
outcome = candidates[0];
|
|
76
|
+
}
|
|
77
|
+
if (outcome)
|
|
78
|
+
return display(outcome.state === 'completed' ? 'finished' : outcome.state, 'flow-result', outcome.state.toUpperCase());
|
|
79
|
+
}
|
|
80
|
+
const own = row.occurrence ? evidence.filter(r => r.occurrence === row.occurrence) : [];
|
|
81
|
+
if (own.length)
|
|
82
|
+
return display(presentationState(row, [own.at(-1)], terminal, fallback), 'invocation');
|
|
83
|
+
if (node && node.kind !== 'action' && context) {
|
|
84
|
+
let descendants = evidence.filter(r => r.occurrence && r.occurrence !== node.key && scopeIncludes(context, { kind: 'occurrence', key: node.key }, r.occurrence));
|
|
85
|
+
// Branch summaries belong to the latest actual owning Control invocation only.
|
|
86
|
+
if (node.kind === 'branch') {
|
|
87
|
+
const owner = evidence.filter(r => r.occurrence === node.parent).at(-1);
|
|
88
|
+
descendants = owner ? descendants.filter(r => (owner.iterations ?? []).every((value, i) => key(value) === key(r.iterations?.[i]))) : [];
|
|
89
|
+
}
|
|
90
|
+
if (descendants.length) {
|
|
91
|
+
// The same occurrence may run repeatedly; earlier invocations cannot recolor the latest one.
|
|
92
|
+
const latest = new Map();
|
|
93
|
+
for (const item of descendants)
|
|
94
|
+
latest.set(item.occurrence, item);
|
|
95
|
+
const state = aggregate([...latest.values()].map(r => r.state));
|
|
96
|
+
if (!terminal && (state === 'finished' || state === 'skipped'))
|
|
97
|
+
return display('pending', 'descendants', 'RECORDED ACTIVITY');
|
|
98
|
+
return display(state, 'descendants', `RECORDED STEPS: ${state.toUpperCase()}`);
|
|
99
|
+
}
|
|
100
|
+
if (node.kind === 'branch' && terminal)
|
|
101
|
+
return display('not executed', 'none', 'NO RECORDED EXECUTION');
|
|
102
|
+
}
|
|
103
|
+
const state = presentationState(row, evidence, terminal, fallback);
|
|
104
|
+
return display(state, row.branchOwner && state !== 'not executed' && state !== 'pending' ? 'descendants' : 'none', row.branchOwner && state !== 'not executed' && state !== 'pending' ? `RECORDED STEPS: ${state.toUpperCase()}` : state.toUpperCase());
|
|
105
|
+
}
|
|
41
106
|
//# sourceMappingURL=presentation-state.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presentation-state.js","sourceRoot":"","sources":["../../../src/runner/presentation-state.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,yBAAyB,CAAC,MAAuB;
|
|
1
|
+
{"version":3,"file":"presentation-state.js","sourceRoot":"","sources":["../../../src/runner/presentation-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,7 +26,7 @@ export declare function createBrowserRuntimeBridge(): {
|
|
|
26
26
|
cancel: (id: string) => Promise<void>;
|
|
27
27
|
control: (id: string, command: import("@qaick/runtime").ControlCommand) => Promise<void>;
|
|
28
28
|
controlState: (id: string) => Promise<import("@qaick/executor").ExecutionControlState | undefined>;
|
|
29
|
-
getResult: (id: string) => Promise<import("@qaick/executor").
|
|
29
|
+
getResult: (id: string) => Promise<import("@qaick/executor").AcceptedExecutorResult>;
|
|
30
30
|
subscribe(id: string, listener: (event: ExecutionEvent) => void): () => void;
|
|
31
31
|
getRuntimeInfo: () => Promise<import("@qaick/runtime").RuntimeInfo>;
|
|
32
32
|
retryAction: () => Promise<never>;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ExecutionDocumentV8, ExecutionRoot } from '@qaick/contract';
|
|
2
|
+
/** Existing authoring lowering boundary: retain the source, prepare only its selected closure. */
|
|
3
|
+
export declare function prepareStudioDocument(serialized: string, selection?: ExecutionRoot): Promise<ExecutionDocumentV8>;
|
|
4
|
+
//# sourceMappingURL=studio-execution-document.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"studio-execution-document.d.ts","sourceRoot":"","sources":["../../../src/runner/studio-execution-document.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAc,mBAAmB,EAAqG,aAAa,EAAC,MAAM,iBAAiB,CAAC;AASxL,kGAAkG;AAClG,wBAAsB,qBAAqB,CAAC,UAAU,EAAC,MAAM,EAAE,SAAS,GAAC,aAA+B,GAAE,OAAO,CAAC,mBAAmB,CAAC,CAgJrI"}
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
import { hashCanonicalJson, migrateArtifact, occurrenceKey, validateExecutionDocumentV8 } from '@qaick/contract';
|
|
2
|
+
import { lowerStudioActionOccurrence, runtimeTemplates } from "./action-template-lowering.js";
|
|
3
|
+
import { PackageLoadError } from "./package-load-error.js";
|
|
4
|
+
const record = (v) => !!v && typeof v === 'object' && !Array.isArray(v);
|
|
5
|
+
const records = (v) => Array.isArray(v) ? v.filter(record) : [];
|
|
6
|
+
const literal = (v) => record(v) && v.type === 'literal' ? v.value : undefined;
|
|
7
|
+
const clean = (v) => JSON.parse(JSON.stringify(v));
|
|
8
|
+
const declarations = (v) => records(v.inputs).map(i => ({ name: String(i.name), type: (i.type ?? 'string'), required: i.required === true, ...(Object.hasOwn(i, 'defaultValue') ? { defaultValue: i.defaultValue } : {}) }));
|
|
9
|
+
/** Existing authoring lowering boundary: retain the source, prepare only its selected closure. */
|
|
10
|
+
export async function prepareStudioDocument(serialized, selection = { kind: 'document' }) {
|
|
11
|
+
const source = migrateArtifact(JSON.parse(serialized)).artifact;
|
|
12
|
+
// Saved canonical bindings are not re-migrated through ordinal-only traversal: drafts have no such order.
|
|
13
|
+
const migrated = source;
|
|
14
|
+
const sourceValue = source;
|
|
15
|
+
const project = record(migrated.project) ? migrated.project : undefined;
|
|
16
|
+
const loaded = project ?? (record(migrated.flow) ? migrated.flow : undefined);
|
|
17
|
+
if (!loaded)
|
|
18
|
+
throw new PackageLoadError('Expected a saved Project or Flow.');
|
|
19
|
+
const rootIdentity = { kind: project ? 'project' : 'flow', id: String(loaded.id) };
|
|
20
|
+
const context = { coverage: project ? 'complete-project' : 'loaded-root', root: '', nodes: [], edges: [] };
|
|
21
|
+
const values = new Map(), byKey = new Map();
|
|
22
|
+
const issue = (node, code, message) => node.issues.push({ at: node.key, code, message });
|
|
23
|
+
function add(value, kind, name, parent, path) {
|
|
24
|
+
const locator = { kind: 'source', root: rootIdentity, path };
|
|
25
|
+
const node = { key: occurrenceKey(locator), locator, kind, name, parent: parent?.key ?? null, children: [], sequence: null, orderState: 'not-applicable', issues: [] };
|
|
26
|
+
if (byKey.has(node.key))
|
|
27
|
+
throw new PackageLoadError('Duplicate source occurrence identity.');
|
|
28
|
+
context.nodes.push(node);
|
|
29
|
+
byKey.set(node.key, node);
|
|
30
|
+
values.set(node.key, value);
|
|
31
|
+
parent?.children.push(node.key);
|
|
32
|
+
return node;
|
|
33
|
+
}
|
|
34
|
+
const path = (n) => n.locator.path;
|
|
35
|
+
function container(value, node) {
|
|
36
|
+
for (const child of records(value.nodes))
|
|
37
|
+
visit(child, node, [...path(node), { kind: 'node', id: String(child.id) }]);
|
|
38
|
+
const ids = Array.isArray(value.sequence) ? value.sequence : undefined;
|
|
39
|
+
const children = records(value.nodes);
|
|
40
|
+
if (ids && ids.length === children.length && new Set(ids).size === ids.length && ids.every(id => children.some(c => c.id === id))) {
|
|
41
|
+
node.orderState = 'ordered';
|
|
42
|
+
node.sequence = ids.map(id => node.children.find(k => values.get(k)?.id === id));
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
node.orderState = 'draft';
|
|
46
|
+
issue(node, 'MISSING_EXECUTION_ORDER', 'This location has no valid execution order. Check its steps in Studio.');
|
|
47
|
+
}
|
|
48
|
+
for (const edge of records(value.edges)) {
|
|
49
|
+
const from = record(edge.source) ? edge.source.nodeId : edge.source, to = record(edge.target) ? edge.target.nodeId : edge.target;
|
|
50
|
+
const source = node.children.find(k => values.get(k)?.id === from), target = node.children.find(k => values.get(k)?.id === to);
|
|
51
|
+
if (!source || !target)
|
|
52
|
+
throw new PackageLoadError('A saved connection has an unavailable endpoint.');
|
|
53
|
+
context.edges.push({ id: String(edge.id), container: node.key, source, target });
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
function visit(value, parent, path) {
|
|
57
|
+
const kind = value.type === 'action' ? 'action' : value.type === 'operation' ? 'operation' : value.type === 'block' || value.type === 'control-block' ? 'control-block' : undefined;
|
|
58
|
+
if (!kind)
|
|
59
|
+
throw new PackageLoadError('Unsupported authoring node kind.');
|
|
60
|
+
const node = add(value, kind, String(value.label), parent, path);
|
|
61
|
+
if (kind === 'operation') {
|
|
62
|
+
if (!record(value.body))
|
|
63
|
+
throw new PackageLoadError('Operation has no owned body.');
|
|
64
|
+
const body = add(value.body, 'body', String(value.body.name ?? value.label), node, [...path, { kind: 'body' }]);
|
|
65
|
+
container(value.body, body);
|
|
66
|
+
}
|
|
67
|
+
else if (kind === 'control-block') {
|
|
68
|
+
const branches = records(record(value.settings) ? value.settings.branches : undefined);
|
|
69
|
+
for (const [i, branch] of branches.entries()) {
|
|
70
|
+
const b = add(branch, 'branch', String(branch.name ?? 'Unnamed Branch'), node, [...path, { kind: 'branch', id: String(branch.id) }]);
|
|
71
|
+
b.originalPosition = i + 1;
|
|
72
|
+
container(branch, b);
|
|
73
|
+
}
|
|
74
|
+
const body = add(value, 'body', String(value.label), node, [...path, { kind: 'body' }]);
|
|
75
|
+
container(value, body);
|
|
76
|
+
node.orderState = 'ordered';
|
|
77
|
+
node.sequence = branches.length ? node.children.filter(k => byKey.get(k).kind === 'branch') : [...node.children];
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
const root = add(loaded, rootIdentity.kind, String(loaded.name), undefined, []);
|
|
81
|
+
context.root = root.key;
|
|
82
|
+
if (project) {
|
|
83
|
+
const flows = records(project.flows), refs = records(project.flowReferences);
|
|
84
|
+
const order = refs.length ? refs.map(r => r.flowId) : flows.map(f => f.id);
|
|
85
|
+
for (const flow of flows) {
|
|
86
|
+
const f = add(flow, 'flow', String(flow.name), root, [{ kind: 'flow', id: String(flow.id) }]);
|
|
87
|
+
container(flow, f);
|
|
88
|
+
}
|
|
89
|
+
if (order.length !== root.children.length || new Set(order).size !== order.length || order.some(id => !flows.some(f => f.id === id)))
|
|
90
|
+
throw new PackageLoadError('Project Flow ownership is inconsistent.');
|
|
91
|
+
root.orderState = 'ordered';
|
|
92
|
+
root.sequence = order.map(id => root.children.find(k => values.get(k)?.id === id));
|
|
93
|
+
root.sequence.forEach((key, i) => byKey.get(key).originalPosition = i + 1);
|
|
94
|
+
}
|
|
95
|
+
else
|
|
96
|
+
container(loaded, root);
|
|
97
|
+
function addresses(node, prefix) {
|
|
98
|
+
if (['action', 'operation', 'control-block'].includes(node.kind) && prefix)
|
|
99
|
+
node.originalAddress = { scope: project ? 'routine' : 'flow', segments: prefix };
|
|
100
|
+
for (const key of node.children) {
|
|
101
|
+
const child = byKey.get(key);
|
|
102
|
+
const index = node.sequence?.indexOf(key);
|
|
103
|
+
const segment = child.kind === 'body' ? { kind: 'body' } : index !== undefined && index >= 0 ? { kind: child.kind === 'flow' ? 'flow' : child.kind === 'branch' ? 'branch' : 'step', position: index + 1 } : undefined;
|
|
104
|
+
addresses(child, prefix && segment ? [...prefix, segment] : undefined);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
addresses(root, []);
|
|
108
|
+
const selected = selection.kind === 'document' ? root : byKey.get(selection.key);
|
|
109
|
+
if (!selected || !['project', 'flow', 'action', 'operation', 'control-block'].includes(selected.kind))
|
|
110
|
+
throw new PackageLoadError('Selected execution root is unavailable.');
|
|
111
|
+
const closure = new Set();
|
|
112
|
+
const collect = (n) => { closure.add(n.key); (n.sequence ?? n.children).forEach(k => collect(byKey.get(k))); };
|
|
113
|
+
collect(selected);
|
|
114
|
+
const selectedIssues = [];
|
|
115
|
+
const payloads = [], flows = [];
|
|
116
|
+
// Resolve aliases only from their persisted declaration and original ownership. No ID-only fallback.
|
|
117
|
+
function aliases(node) {
|
|
118
|
+
const chain = [];
|
|
119
|
+
let current = node;
|
|
120
|
+
while (current) {
|
|
121
|
+
chain.unshift(current);
|
|
122
|
+
current = current.parent ? byKey.get(current.parent) : undefined;
|
|
123
|
+
}
|
|
124
|
+
const result = new Map();
|
|
125
|
+
for (const owner of chain) {
|
|
126
|
+
const value = values.get(owner.key);
|
|
127
|
+
for (const variable of records(value.variables)) {
|
|
128
|
+
const link = record(variable.link) ? variable.link : undefined;
|
|
129
|
+
if (!link)
|
|
130
|
+
continue;
|
|
131
|
+
if (link.sourceKind === 'input') {
|
|
132
|
+
result.set(String(variable.name), { type: 'input', path: [String(variable.name)] });
|
|
133
|
+
continue;
|
|
134
|
+
}
|
|
135
|
+
const candidates = owner.children.map(k => byKey.get(k)).filter(n => n.kind === 'action' && values.get(n.key)?.id === link.sourceNodeId);
|
|
136
|
+
const producer = candidates.length === 1 ? candidates[0] : undefined;
|
|
137
|
+
const definition = producer ? values.get(producer.key)?.actionDefinition : undefined;
|
|
138
|
+
const outputs = records(record(definition) ? definition.outputs : undefined).filter(o => o.id === link.sourceId);
|
|
139
|
+
if (producer && outputs.length === 1 && typeof outputs[0].name === 'string')
|
|
140
|
+
result.set(String(variable.name), { type: 'occurrence-output', producer: producer.key, iterations: [], outputName: outputs[0].name });
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
return result;
|
|
144
|
+
}
|
|
145
|
+
function operand(value, node) {
|
|
146
|
+
if (!record(value))
|
|
147
|
+
throw new PackageLoadError('Expected a persisted binding.');
|
|
148
|
+
if (value.type === 'variable')
|
|
149
|
+
return aliases(node).get(String(value.variableName)) ?? { type: 'input', path: [String(value.variableName)] };
|
|
150
|
+
if (value.type === 'hierarchy-output')
|
|
151
|
+
return clean({ type: 'hierarchy-output', address: value.address, iterations: value.iterations, outputName: value.outputName });
|
|
152
|
+
if (value.type === 'broken-output')
|
|
153
|
+
return { type: 'unresolved-output', code: 'needs-repair', reason: 'The saved output reference requires repair in Studio.', former: clean(value.former) };
|
|
154
|
+
// Resolve legacy references only within their original lexical ownership. The
|
|
155
|
+
// canonical preflight still proves ordering, declarations and iteration scope.
|
|
156
|
+
// Broken operands above are never recovered through this resolution.
|
|
157
|
+
if (value.type === 'output') {
|
|
158
|
+
const candidates = [];
|
|
159
|
+
let owner = node;
|
|
160
|
+
while (owner) {
|
|
161
|
+
candidates.push(...owner.children.map(k => byKey.get(k)).filter(n => values.get(n.key)?.id === value.nodeId && ['action', 'operation'].includes(n.kind)));
|
|
162
|
+
owner = owner.parent ? byKey.get(owner.parent) : undefined;
|
|
163
|
+
}
|
|
164
|
+
if (candidates.length === 1)
|
|
165
|
+
return { type: 'occurrence-output', producer: candidates[0].key, iterations: [], outputName: String(value.outputName) };
|
|
166
|
+
return { type: 'unresolved-output', code: 'needs-repair', reason: 'The saved output reference has no unique source in its original context.', former: clean(value) };
|
|
167
|
+
}
|
|
168
|
+
if (value.type === 'input' || value.type === 'occurrence-output' || value.type === 'unresolved-output')
|
|
169
|
+
return clean(value);
|
|
170
|
+
throw new PackageLoadError('Unsupported saved execution operand.');
|
|
171
|
+
}
|
|
172
|
+
function bindings(value, node) { const bindings = {}, staticInputs = {}; for (const [name, v] of Object.entries(record(value) ? value : {})) {
|
|
173
|
+
if (record(v) && v.type === 'literal')
|
|
174
|
+
staticInputs[name] = runtimeTemplates(v.value);
|
|
175
|
+
else
|
|
176
|
+
bindings[name] = operand(v, node);
|
|
177
|
+
} return { bindings, staticInputs }; }
|
|
178
|
+
function condition(v, node) { const l = literal(v); if (typeof l === 'boolean')
|
|
179
|
+
return l; if (v === undefined)
|
|
180
|
+
return undefined; return { binding: operand(v, node) }; }
|
|
181
|
+
function compile(node) {
|
|
182
|
+
const value = values.get(node.key);
|
|
183
|
+
if (node.kind === 'flow') {
|
|
184
|
+
flows.push({ occurrence: node.key, children: node.sequence, inputDeclarations: declarations(value), requiredInputs: declarations(value).filter(d => d.required).map(d => d.name) });
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
if (!['action', 'operation', 'control-block'].includes(node.kind))
|
|
188
|
+
return;
|
|
189
|
+
const supplied = bindings(value.inputs, node);
|
|
190
|
+
if (node.kind === 'action') {
|
|
191
|
+
const action = lowerStudioActionOccurrence(value, [], { bindings: {}, staticInputs: supplied.staticInputs });
|
|
192
|
+
payloads.push({ ...action, kind: 'action', occurrence: node.key, bindings: supplied.bindings });
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
const body = node.children.map(k => byKey.get(k)).find(n => n.kind === 'body');
|
|
196
|
+
if (node.kind === 'operation') {
|
|
197
|
+
const bodyValue = values.get(body.key);
|
|
198
|
+
const returns = bindings(bodyValue.outputBindings, body);
|
|
199
|
+
const locals = Object.fromEntries(records(bodyValue.variables).filter(v => Object.hasOwn(v, 'initialValue')).map(v => [String(v.name), v.initialValue]));
|
|
200
|
+
payloads.push({ occurrence: node.key, id: String(value.id), name: node.name, kind: 'operation', action: `operation:${value.operationId}`, output: Object.fromEntries(records(bodyValue.outputs).map(o => [String(o.name), null])), children: body.sequence, inputDeclarations: declarations(bodyValue), ...supplied, staticInputs: { ...locals, ...supplied.staticInputs }, outputBindings: returns.bindings, staticOutputs: returns.staticInputs });
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
203
|
+
const settings = record(value.settings) ? value.settings : {};
|
|
204
|
+
if (record(settings.count) && settings.count.type !== 'literal')
|
|
205
|
+
throw new PackageLoadError('Runtime-bound counts remain unsupported.');
|
|
206
|
+
const branchNodes = node.children.map(k => byKey.get(k)).filter(n => n.kind === 'branch');
|
|
207
|
+
const parallel = settings.parallel === true || settings.mode === 'parallel';
|
|
208
|
+
const branches = branchNodes.map(b => { const val = values.get(b.key); const c = val.condition === undefined && parallel ? true : condition(val.condition, node); if (c === undefined)
|
|
209
|
+
throw new PackageLoadError('A Branch has no supported condition.'); return { occurrence: b.key, condition: c, children: b.sequence }; });
|
|
210
|
+
const count = literal(settings.count), iterations = typeof count === 'number' && Number.isInteger(count) ? count : undefined;
|
|
211
|
+
const c = condition(settings.condition, node), minutes = literal(settings.durationMinutes), millis = literal(settings.durationMs), duration = typeof millis === 'number' ? millis : typeof minutes === 'number' ? minutes * 60000 : undefined;
|
|
212
|
+
const delay = literal(settings.iterationDelaySeconds);
|
|
213
|
+
const control = { type: parallel && branches.length ? 'parallel' : branches.length ? 'branch' : iterations && iterations > 1 || duration !== undefined || c !== undefined ? 'repeat' : 'sequence', ...(settings.onError !== undefined ? { onError: settings.onError } : {}), ...(iterations !== undefined ? { iterations } : {}), ...(c !== undefined ? { condition: c } : {}), ...(duration !== undefined ? { durationMs: duration } : {}), ...(typeof delay === 'number' ? { iterationDelayMs: delay * 1000 } : {}), ...(parallel ? { join: 'all', merge: settings.merge === 'first' || settings.merge === 'last' ? settings.merge : 'collect', ...(record(settings.mergeBindings) ? { mergeBindings: Object.fromEntries(Object.entries(settings.mergeBindings).map(([name, v]) => [name, operand(v, node)])) } : {}) } : {}), ...(branches.length ? { branches } : {}) };
|
|
214
|
+
payloads.push({ occurrence: node.key, id: String(value.id), name: node.name, kind: 'control-block', action: parallel ? 'control.parallel' : branches.length ? 'control.branch' : 'control.sequence', output: {}, children: branches.length ? branches.flatMap(b => b.children) : body.sequence, control });
|
|
215
|
+
}
|
|
216
|
+
// Complete payloads may be indexed outside the selected scope; only the selected root dispatches.
|
|
217
|
+
// Draft containers stay structural context, while valid descendants remain independently selectable.
|
|
218
|
+
const incomplete = (n) => n.issues.length > 0 || (n.sequence ?? n.children).some(k => incomplete(byKey.get(k)));
|
|
219
|
+
for (const n of [...context.nodes].reverse()) {
|
|
220
|
+
if (incomplete(n))
|
|
221
|
+
continue;
|
|
222
|
+
try {
|
|
223
|
+
compile(n);
|
|
224
|
+
}
|
|
225
|
+
catch (error) {
|
|
226
|
+
issue(n, 'UNSUPPORTED_PREPARATION', error instanceof PackageLoadError ? error.message : 'This scope cannot be prepared.');
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
selectedIssues.push(...context.nodes.filter(n => closure.has(n.key)).flatMap(n => n.issues));
|
|
230
|
+
const selectedValue = values.get(selected.key);
|
|
231
|
+
const entryValue = selected.kind === 'operation' ? values.get(selected.children[0]) : selected.kind === 'action' && record(selectedValue.actionDefinition) ? selectedValue.actionDefinition : selectedValue;
|
|
232
|
+
const inputs = declarations(entryValue);
|
|
233
|
+
const doc = clean({ schemaVersion: 8, packageId: `studio-${project ? 'project' : 'flow'}-${loaded.id}`, target: { kind: project ? 'project' : 'flow', id: String(loaded.id), name: String(loaded.name) }, source: { kind: 'authoring', id: String(loaded.id), schemaVersion: Number(sourceValue.schemaVersion), contentHash: await hashCanonicalJson(source) }, context, selection: { root: selection, inputDeclarations: inputs, requiredInputs: inputs.filter(d => d.required).map(d => d.name), executable: !selectedIssues.length, issues: selectedIssues }, nodes: payloads, flows });
|
|
234
|
+
const errors = validateExecutionDocumentV8(doc);
|
|
235
|
+
if (errors.length)
|
|
236
|
+
throw new PackageLoadError('Execution document preparation failed.', errors);
|
|
237
|
+
return doc;
|
|
238
|
+
}
|
|
239
|
+
//# sourceMappingURL=studio-execution-document.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"studio-execution-document.js","sourceRoot":"","sources":["../../../src/runner/studio-execution-document.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,iBAAiB,EAAE,eAAe,EAAE,aAAa,EAAE,2BAA2B,EAAC,MAAM,iBAAiB,CAAC;AAE/G,OAAO,EAAC,2BAA2B,EAAE,gBAAgB,EAAC,MAAM,4BAA4B,CAAC;AACzF,OAAO,EAAC,gBAAgB,EAAC,MAAM,sBAAsB,CAAC;AAEtD,MAAM,MAAM,GAAC,CAAC,CAAS,EAAQ,EAAE,CAAA,CAAC,CAAC,CAAC,IAAE,OAAO,CAAC,KAAG,QAAQ,IAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC7E,MAAM,OAAO,GAAC,CAAC,CAAS,EAAK,EAAE,CAAA,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,CAAC,CAAA,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA,CAAC,CAAA,EAAE,CAAC;AACpE,MAAM,OAAO,GAAC,CAAC,CAAS,EAAC,EAAE,CAAA,MAAM,CAAC,CAAC,CAAC,IAAE,CAAC,CAAC,IAAI,KAAG,SAAS,CAAA,CAAC,CAAA,CAAC,CAAC,KAAK,CAAA,CAAC,CAAA,SAAS,CAAC;AAC3E,MAAM,KAAK,GAAC,CAAK,CAAG,EAAG,EAAE,CAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACvD,MAAM,YAAY,GAAC,CAAC,CAAG,EAAmB,EAAE,CAAA,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,EAAC,IAAI,EAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAC,IAAI,EAAC,CAAC,CAAC,CAAC,IAAI,IAAE,QAAQ,CAA4B,EAAC,QAAQ,EAAC,CAAC,CAAC,QAAQ,KAAG,IAAI,EAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAC,cAAc,CAAC,CAAA,CAAC,CAAA,EAAC,YAAY,EAAC,CAAC,CAAC,YAAY,EAAC,CAAA,CAAC,CAAA,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC;AAClP,kGAAkG;AAClG,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,UAAiB,EAAE,YAAwB,EAAC,IAAI,EAAC,UAAU,EAAC;IACvG,MAAM,MAAM,GAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC9D,0GAA0G;IAC1G,MAAM,QAAQ,GAAC,MAAsB,CAAC;IACtC,MAAM,WAAW,GAAC,MAAsB,CAAC;IACzC,MAAM,OAAO,GAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA,CAAC,CAAA,QAAQ,CAAC,OAAO,CAAA,CAAC,CAAA,SAAS,CAAC;IAClE,MAAM,MAAM,GAAC,OAAO,IAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA,CAAC,CAAA,QAAQ,CAAC,IAAI,CAAA,CAAC,CAAA,SAAS,CAAC,CAAC;IACtE,IAAG,CAAC,MAAM;QAAC,MAAM,IAAI,gBAAgB,CAAC,mCAAmC,CAAC,CAAC;IAC3E,MAAM,YAAY,GAAC,EAAC,IAAI,EAAC,OAAO,CAAA,CAAC,CAAA,SAAkB,CAAA,CAAC,CAAA,MAAe,EAAC,EAAE,EAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAC,CAAC;IAC1F,MAAM,OAAO,GAAgC,EAAC,QAAQ,EAAC,OAAO,CAAA,CAAC,CAAA,kBAAkB,CAAA,CAAC,CAAA,aAAa,EAAC,IAAI,EAAC,EAAE,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,EAAE,EAAC,CAAC;IAC3H,MAAM,MAAM,GAAC,IAAI,GAAG,EAAY,EAAC,KAAK,GAAC,IAAI,GAAG,EAAsB,CAAC;IACrE,MAAM,KAAK,GAAC,CAAC,IAAgB,EAAC,IAAW,EAAC,OAAc,EAAC,EAAE,CAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAC,EAAE,EAAC,IAAI,CAAC,GAAG,EAAC,IAAI,EAAC,OAAO,EAAC,CAAC,CAAC;IACxG,SAAS,GAAG,CAAC,KAAO,EAAC,IAAwB,EAAC,IAAW,EAAC,MAA4B,EAAC,IAAoB;QAC1G,MAAM,OAAO,GAAC,EAAC,IAAI,EAAC,QAAiB,EAAC,IAAI,EAAC,YAAY,EAAC,IAAI,EAAC,CAAC;QAC9D,MAAM,IAAI,GAAa,EAAC,GAAG,EAAC,aAAa,CAAC,OAAO,CAAC,EAAC,OAAO,EAAC,IAAI,EAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAE,GAAG,IAAE,IAAI,EAAC,QAAQ,EAAC,EAAE,EAAC,QAAQ,EAAC,IAAI,EAAC,UAAU,EAAC,gBAAgB,EAAC,MAAM,EAAC,EAAE,EAAC,CAAC;QAC/J,IAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;YAAC,MAAM,IAAI,gBAAgB,CAAC,uCAAuC,CAAC,CAAC;QAC3F,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAAA,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAC,IAAI,CAAC,CAAC;QAAA,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAC,KAAK,CAAC,CAAC;QAAA,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAAA,OAAO,IAAI,CAAC;IAC1H,CAAC;IACD,MAAM,IAAI,GAAC,CAAC,CAAa,EAAC,EAAE,CAAC,CAAC,CAAC,OAA2D,CAAC,IAAI,CAAC;IAChG,SAAS,SAAS,CAAC,KAAO,EAAC,IAAgB;QAC1C,KAAI,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;YAAC,KAAK,CAAC,KAAK,EAAC,IAAI,EAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,EAAC,EAAC,IAAI,EAAC,MAAM,EAAC,EAAE,EAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC;QAC5G,MAAM,GAAG,GAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA,CAAC,CAAA,KAAK,CAAC,QAAQ,CAAA,CAAC,CAAA,SAAS,CAAC;QACjE,MAAM,QAAQ,GAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACpC,IAAG,GAAG,IAAE,GAAG,CAAC,MAAM,KAAG,QAAQ,CAAC,MAAM,IAAE,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,KAAG,GAAG,CAAC,MAAM,IAAE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAA,EAAE,CAAA,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,CAAC,EAAE,KAAG,EAAE,CAAC,CAAC,EAAC,CAAC;YACjH,IAAI,CAAC,UAAU,GAAC,SAAS,CAAC;YAAA,IAAI,CAAC,QAAQ,GAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAA,EAAE,CAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA,EAAE,CAAA,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,KAAG,EAAE,CAAE,CAAC,CAAC;QACrG,CAAC;aAAI,CAAC;YAAA,IAAI,CAAC,UAAU,GAAC,OAAO,CAAC;YAAA,KAAK,CAAC,IAAI,EAAC,yBAAyB,EAAC,wEAAwE,CAAC,CAAC;QAAA,CAAC;QAC9I,KAAI,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAC,CAAC;YACvC,MAAM,IAAI,GAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA,CAAC,CAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAA,CAAC,CAAA,IAAI,CAAC,MAAM,EAAC,EAAE,GAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA,CAAC,CAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAA,CAAC,CAAA,IAAI,CAAC,MAAM,CAAC;YACpH,MAAM,MAAM,GAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA,EAAE,CAAA,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,KAAG,IAAI,CAAC,EAAC,MAAM,GAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA,EAAE,CAAA,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,KAAG,EAAE,CAAC,CAAC;YAClH,IAAG,CAAC,MAAM,IAAE,CAAC,MAAM;gBAAC,MAAM,IAAI,gBAAgB,CAAC,iDAAiD,CAAC,CAAC;YAClG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAC,EAAE,EAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAC,SAAS,EAAC,IAAI,CAAC,GAAG,EAAC,MAAM,EAAC,MAAM,EAAC,CAAC,CAAC;QAC3E,CAAC;IACF,CAAC;IACD,SAAS,KAAK,CAAC,KAAO,EAAC,MAAkB,EAAC,IAAoB;QAC7D,MAAM,IAAI,GAAC,KAAK,CAAC,IAAI,KAAG,QAAQ,CAAA,CAAC,CAAA,QAAQ,CAAA,CAAC,CAAA,KAAK,CAAC,IAAI,KAAG,WAAW,CAAA,CAAC,CAAA,WAAW,CAAA,CAAC,CAAA,KAAK,CAAC,IAAI,KAAG,OAAO,IAAE,KAAK,CAAC,IAAI,KAAG,eAAe,CAAA,CAAC,CAAA,eAAe,CAAA,CAAC,CAAA,SAAS,CAAC;QAC5J,IAAG,CAAC,IAAI;YAAC,MAAM,IAAI,gBAAgB,CAAC,kCAAkC,CAAC,CAAC;QACxE,MAAM,IAAI,GAAC,GAAG,CAAC,KAAK,EAAC,IAAI,EAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAC,MAAM,EAAC,IAAI,CAAC,CAAC;QAC3D,IAAG,IAAI,KAAG,WAAW,EAAC,CAAC;YACtB,IAAG,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;gBAAC,MAAM,IAAI,gBAAgB,CAAC,8BAA8B,CAAC,CAAC;YAClF,MAAM,IAAI,GAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAC,MAAM,EAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAE,KAAK,CAAC,KAAK,CAAC,EAAC,IAAI,EAAC,CAAC,GAAG,IAAI,EAAC,EAAC,IAAI,EAAC,MAAM,EAAC,CAAC,CAAC,CAAC;YAAA,SAAS,CAAC,KAAK,CAAC,IAAI,EAAC,IAAI,CAAC,CAAC;QAChI,CAAC;aAAK,IAAG,IAAI,KAAG,eAAe,EAAC,CAAC;YAChC,MAAM,QAAQ,GAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA,CAAC,CAAA,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAA,CAAC,CAAA,SAAS,CAAC,CAAC;YACjF,KAAI,MAAM,CAAC,CAAC,EAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAC,CAAC;gBAAA,MAAM,CAAC,GAAC,GAAG,CAAC,MAAM,EAAC,QAAQ,EAAC,MAAM,CAAC,MAAM,CAAC,IAAI,IAAE,gBAAgB,CAAC,EAAC,IAAI,EAAC,CAAC,GAAG,IAAI,EAAC,EAAC,IAAI,EAAC,QAAQ,EAAC,EAAE,EAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC;gBAAA,CAAC,CAAC,gBAAgB,GAAC,CAAC,GAAC,CAAC,CAAC;gBAAA,SAAS,CAAC,MAAM,EAAC,CAAC,CAAC,CAAC;YAAA,CAAC;YAC/M,MAAM,IAAI,GAAC,GAAG,CAAC,KAAK,EAAC,MAAM,EAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAC,IAAI,EAAC,CAAC,GAAG,IAAI,EAAC,EAAC,IAAI,EAAC,MAAM,EAAC,CAAC,CAAC,CAAC;YAAA,SAAS,CAAC,KAAK,EAAC,IAAI,CAAC,CAAC;YACpG,IAAI,CAAC,UAAU,GAAC,SAAS,CAAC;YAAA,IAAI,CAAC,QAAQ,GAAC,QAAQ,CAAC,MAAM,CAAA,CAAC,CAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA,EAAE,CAAA,KAAK,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,IAAI,KAAG,QAAQ,CAAC,CAAA,CAAC,CAAA,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnI,CAAC;IACF,CAAC;IACD,MAAM,IAAI,GAAC,GAAG,CAAC,MAAM,EAAC,YAAY,CAAC,IAAI,EAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,EAAE,CAAC,CAAC;IAAA,OAAO,CAAC,IAAI,GAAC,IAAI,CAAC,GAAG,CAAC;IAChG,IAAG,OAAO,EAAC,CAAC;QACX,MAAM,KAAK,GAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAC,IAAI,GAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QACxE,MAAM,KAAK,GAAC,IAAI,CAAC,MAAM,CAAA,CAAC,CAAA,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,CAAC,MAAM,CAAC,CAAA,CAAC,CAAA,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,CAAC,EAAE,CAAC,CAAC;QACjE,KAAI,MAAM,IAAI,IAAI,KAAK,EAAC,CAAC;YAAA,MAAM,CAAC,GAAC,GAAG,CAAC,IAAI,EAAC,MAAM,EAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,MAAM,EAAC,EAAE,EAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC;YAAA,SAAS,CAAC,IAAI,EAAC,CAAC,CAAC,CAAC;QAAA,CAAC;QAC/H,IAAG,KAAK,CAAC,MAAM,KAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAE,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,KAAG,KAAK,CAAC,MAAM,IAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAA,EAAE,CAAA,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,CAAC,EAAE,KAAG,EAAE,CAAC,CAAC;YAAC,MAAM,IAAI,gBAAgB,CAAC,yCAAyC,CAAC,CAAC;QAC5L,IAAI,CAAC,UAAU,GAAC,SAAS,CAAC;QAAA,IAAI,CAAC,QAAQ,GAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAA,EAAE,CAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA,EAAE,CAAA,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,KAAG,EAAE,CAAE,CAAC,CAAC;QACtG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,EAAC,CAAC,EAAC,EAAE,CAAA,KAAK,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,gBAAgB,GAAC,CAAC,GAAC,CAAC,CAAC,CAAC;IACtE,CAAC;;QAAK,SAAS,CAAC,MAAM,EAAC,IAAI,CAAC,CAAC;IAC7B,SAAS,SAAS,CAAC,IAAgB,EAAC,MAA6C;QAChF,IAAG,CAAC,QAAQ,EAAC,WAAW,EAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAE,MAAM;YAAC,IAAI,CAAC,eAAe,GAAC,EAAC,KAAK,EAAC,OAAO,CAAA,CAAC,CAAA,SAAS,CAAA,CAAC,CAAA,MAAM,EAAC,QAAQ,EAAC,MAAM,EAAC,CAAC;QAC5I,KAAI,MAAM,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAC,CAAC;YAAA,MAAM,KAAK,GAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;YAAA,MAAM,KAAK,GAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;YAAA,MAAM,OAAO,GAAC,KAAK,CAAC,IAAI,KAAG,MAAM,CAAA,CAAC,CAAA,EAAC,IAAI,EAAC,MAAe,EAAC,CAAA,CAAC,CAAA,KAAK,KAAG,SAAS,IAAE,KAAK,IAAE,CAAC,CAAA,CAAC,CAAA,EAAC,IAAI,EAAC,KAAK,CAAC,IAAI,KAAG,MAAM,CAAA,CAAC,CAAA,MAAe,CAAA,CAAC,CAAA,KAAK,CAAC,IAAI,KAAG,QAAQ,CAAA,CAAC,CAAA,QAAiB,CAAA,CAAC,CAAA,MAAe,EAAC,QAAQ,EAAC,KAAK,GAAC,CAAC,EAAC,CAAA,CAAC,CAAA,SAAS,CAAC;YACtT,SAAS,CAAC,KAAK,EAAC,MAAM,IAAE,OAAO,CAAA,CAAC,CAAA,CAAC,GAAG,MAAM,EAAC,OAAO,CAAC,CAAA,CAAC,CAAA,SAAS,CAAC,CAAC;QAChE,CAAC;IACF,CAAC;IACD,SAAS,CAAC,IAAI,EAAC,EAAE,CAAC,CAAC;IACnB,MAAM,QAAQ,GAAC,SAAS,CAAC,IAAI,KAAG,UAAU,CAAA,CAAC,CAAA,IAAI,CAAA,CAAC,CAAA,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACzE,IAAG,CAAC,QAAQ,IAAE,CAAC,CAAC,SAAS,EAAC,MAAM,EAAC,QAAQ,EAAC,WAAW,EAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAC,MAAM,IAAI,gBAAgB,CAAC,yCAAyC,CAAC,CAAC;IACrK,MAAM,OAAO,GAAC,IAAI,GAAG,EAAU,CAAC;IAAA,MAAM,OAAO,GAAC,CAAC,CAAa,EAAC,EAAE,GAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA,CAAC,CAAC,CAAC,QAAQ,IAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAA,EAAE,CAAA,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAA,CAAC,CAAC;IAAA,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnK,MAAM,cAAc,GAA4C,EAAE,CAAC;IACnE,MAAM,QAAQ,GAAoB,EAAE,EAAC,KAAK,GAA8B,EAAE,CAAC;IAC3E,qGAAqG;IACrG,SAAS,OAAO,CAAC,IAAgB;QAChC,MAAM,KAAK,GAAe,EAAE,CAAC;QAAA,IAAI,OAAO,GAAuB,IAAI,CAAC;QACpE,OAAM,OAAO,EAAC,CAAC;YAAA,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAAA,OAAO,GAAC,OAAO,CAAC,MAAM,CAAA,CAAC,CAAA,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA,CAAC,CAAA,SAAS,CAAC;QAAA,CAAC;QAClG,MAAM,MAAM,GAAC,IAAI,GAAG,EAA6B,CAAC;QAClD,KAAI,MAAM,KAAK,IAAI,KAAK,EAAC,CAAC;YAAA,MAAM,KAAK,GAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAE,CAAC;YAC5D,KAAI,MAAM,QAAQ,IAAI,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,EAAC,CAAC;gBAC/C,MAAM,IAAI,GAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA,CAAC,CAAA,QAAQ,CAAC,IAAI,CAAA,CAAC,CAAA,SAAS,CAAC;gBAAA,IAAG,CAAC,IAAI;oBAAC,SAAS;gBAC3E,IAAG,IAAI,CAAC,UAAU,KAAG,OAAO,EAAC,CAAC;oBAAA,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAC,EAAC,IAAI,EAAC,OAAO,EAAC,IAAI,EAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC,CAAC;oBAAA,SAAS;gBAAA,CAAC;gBACtH,MAAM,UAAU,GAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAA,EAAE,CAAA,KAAK,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,CAAC,IAAI,KAAG,QAAQ,IAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,KAAG,IAAI,CAAC,YAAY,CAAC,CAAC;gBAC9H,MAAM,QAAQ,GAAC,UAAU,CAAC,MAAM,KAAG,CAAC,CAAA,CAAC,CAAA,UAAU,CAAC,CAAC,CAAC,CAAA,CAAC,CAAA,SAAS,CAAC;gBAC7D,MAAM,UAAU,GAAC,QAAQ,CAAA,CAAC,CAAA,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,gBAAgB,CAAA,CAAC,CAAA,SAAS,CAAC;gBAC/E,MAAM,OAAO,GAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA,CAAC,CAAA,UAAU,CAAC,OAAO,CAAA,CAAC,CAAA,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,CAAC,EAAE,KAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACvG,IAAG,QAAQ,IAAE,OAAO,CAAC,MAAM,KAAG,CAAC,IAAE,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,KAAG,QAAQ;oBAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAC,EAAC,IAAI,EAAC,mBAAmB,EAAC,QAAQ,EAAC,QAAQ,CAAC,GAAG,EAAC,UAAU,EAAC,EAAE,EAAC,UAAU,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAC,CAAC,CAAC;YAChM,CAAC;QACF,CAAC;QAAA,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,SAAS,OAAO,CAAC,KAAa,EAAC,IAAgB;QAC9C,IAAG,CAAC,MAAM,CAAC,KAAK,CAAC;YAAC,MAAM,IAAI,gBAAgB,CAAC,+BAA+B,CAAC,CAAC;QAC9E,IAAG,KAAK,CAAC,IAAI,KAAG,UAAU;YAAC,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,IAAE,EAAC,IAAI,EAAC,OAAO,EAAC,IAAI,EAAC,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,EAAC,CAAC;QAClI,IAAG,KAAK,CAAC,IAAI,KAAG,kBAAkB;YAAC,OAAO,KAAK,CAAC,EAAC,IAAI,EAAC,kBAAkB,EAAC,OAAO,EAAC,KAAK,CAAC,OAAO,EAAC,UAAU,EAAC,KAAK,CAAC,UAAU,EAAC,UAAU,EAAC,KAAK,CAAC,UAAU,EAAC,CAAkC,CAAC;QAC1L,IAAG,KAAK,CAAC,IAAI,KAAG,eAAe;YAAC,OAAO,EAAC,IAAI,EAAC,mBAAmB,EAAC,IAAI,EAAC,cAAc,EAAC,MAAM,EAAC,uDAAuD,EAAC,MAAM,EAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAU,EAAC,CAAC;QACzL,8EAA8E;QAC9E,+EAA+E;QAC/E,qEAAqE;QACrE,IAAG,KAAK,CAAC,IAAI,KAAG,QAAQ,EAAC,CAAC;YACzB,MAAM,UAAU,GAAe,EAAE,CAAC;YAAA,IAAI,KAAK,GAAuB,IAAI,CAAC;YACvE,OAAM,KAAK,EAAC,CAAC;gBACZ,UAAU,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAA,EAAE,CAAA,KAAK,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA,EAAE,CAAA,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,KAAG,KAAK,CAAC,MAAM,IAAE,CAAC,QAAQ,EAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClJ,KAAK,GAAC,KAAK,CAAC,MAAM,CAAA,CAAC,CAAA,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA,CAAC,CAAA,SAAS,CAAC;YACtD,CAAC;YACD,IAAG,UAAU,CAAC,MAAM,KAAG,CAAC;gBAAC,OAAO,EAAC,IAAI,EAAC,mBAAmB,EAAC,QAAQ,EAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,EAAC,UAAU,EAAC,EAAE,EAAC,UAAU,EAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,EAAC,CAAC;YACxI,OAAO,EAAC,IAAI,EAAC,mBAAmB,EAAC,IAAI,EAAC,cAAc,EAAC,MAAM,EAAC,0EAA0E,EAAC,MAAM,EAAC,KAAK,CAAC,KAAK,CAAU,EAAC,CAAC;QACtK,CAAC;QACD,IAAG,KAAK,CAAC,IAAI,KAAG,OAAO,IAAE,KAAK,CAAC,IAAI,KAAG,mBAAmB,IAAE,KAAK,CAAC,IAAI,KAAG,mBAAmB;YAAC,OAAO,KAAK,CAAC,KAAK,CAAkC,CAAC;QACjJ,MAAM,IAAI,gBAAgB,CAAC,sCAAsC,CAAC,CAAC;IACpE,CAAC;IACD,SAAS,QAAQ,CAAC,KAAa,EAAC,IAAgB,IAAE,MAAM,QAAQ,GAAmC,EAAE,EAAC,YAAY,GAAG,EAAE,CAAC,CAAA,KAAI,MAAM,CAAC,IAAI,EAAC,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA,CAAC,CAAA,KAAK,CAAA,CAAC,CAAA,EAAE,CAAC,EAAC,CAAC;QAAA,IAAG,MAAM,CAAC,CAAC,CAAC,IAAE,CAAC,CAAC,IAAI,KAAG,SAAS;YAAC,YAAY,CAAC,IAAI,CAAC,GAAC,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;;YAAK,QAAQ,CAAC,IAAI,CAAC,GAAC,OAAO,CAAC,CAAC,EAAC,IAAI,CAAC,CAAC;IAAA,CAAC,CAAA,OAAO,EAAC,QAAQ,EAAC,YAAY,EAAC,CAAC,CAAA,CAAC;IACzU,SAAS,SAAS,CAAC,CAAS,EAAC,IAAgB,IAAyB,MAAM,CAAC,GAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA,IAAG,OAAO,CAAC,KAAG,SAAS;QAAC,OAAO,CAAC,CAAC,CAAA,IAAG,CAAC,KAAG,SAAS;QAAC,OAAO,SAAS,CAAC,CAAA,OAAO,EAAC,OAAO,EAAC,OAAO,CAAC,CAAC,EAAC,IAAI,CAAC,EAAC,CAAC,CAAA,CAAC;IAC9L,SAAS,OAAO,CAAC,IAAgB;QAChC,MAAM,KAAK,GAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAE,CAAC;QAClC,IAAG,IAAI,CAAC,IAAI,KAAG,MAAM,EAAC,CAAC;YAAA,KAAK,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,IAAI,CAAC,GAAG,EAAC,QAAQ,EAAC,IAAI,CAAC,QAAS,EAAC,iBAAiB,EAAC,YAAY,CAAC,KAAK,CAAC,EAAC,cAAc,EAAC,YAAY,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;YAAA,OAAO;QAAA,CAAC;QACvM,IAAG,CAAC,CAAC,QAAQ,EAAC,WAAW,EAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;YAAC,OAAO;QACtE,MAAM,QAAQ,GAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAC,IAAI,CAAC,CAAC;QAC3C,IAAG,IAAI,CAAC,IAAI,KAAG,QAAQ,EAAC,CAAC;YAAA,MAAM,MAAM,GAAC,2BAA2B,CAAC,KAAK,EAAC,EAAE,EAAC,EAAC,QAAQ,EAAC,EAAE,EAAC,YAAY,EAAC,QAAQ,CAAC,YAAY,EAAC,CAAC,CAAC;YAAA,QAAQ,CAAC,IAAI,CAAC,EAAC,GAAG,MAAM,EAAC,IAAI,EAAC,QAAQ,EAAC,UAAU,EAAC,IAAI,CAAC,GAAG,EAAC,QAAQ,EAAC,QAAQ,CAAC,QAAQ,EAAC,CAAC,CAAC;YAAA,OAAO;QAAA,CAAC;QAC7N,MAAM,IAAI,GAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAA,EAAE,CAAA,KAAK,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,CAAC,IAAI,KAAG,MAAM,CAAC,CAAC;QACxE,IAAG,IAAI,CAAC,IAAI,KAAG,WAAW,EAAC,CAAC;YAC3B,MAAM,SAAS,GAAC,MAAM,CAAC,GAAG,CAAC,IAAK,CAAC,GAAG,CAAE,CAAC;YAAA,MAAM,OAAO,GAAC,QAAQ,CAAC,SAAS,CAAC,cAAc,EAAC,IAAK,CAAC,CAAC;YAC9F,MAAM,MAAM,GAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA,EAAE,CAAA,MAAM,CAAC,MAAM,CAAC,CAAC,EAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACjJ,QAAQ,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,IAAI,CAAC,GAAG,EAAC,EAAE,EAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,EAAC,IAAI,EAAC,IAAI,CAAC,IAAI,EAAC,IAAI,EAAC,WAAW,EAAC,MAAM,EAAC,aAAa,KAAK,CAAC,WAAW,EAAE,EAAC,MAAM,EAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAC,IAAI,CAAC,CAAC,CAAC,EAAC,QAAQ,EAAC,IAAK,CAAC,QAAS,EAAC,iBAAiB,EAAC,YAAY,CAAC,SAAS,CAAC,EAAC,GAAG,QAAQ,EAAC,YAAY,EAAC,EAAC,GAAG,MAAM,EAAC,GAAG,QAAQ,CAAC,YAAY,EAAC,EAAC,cAAc,EAAC,OAAO,CAAC,QAAQ,EAAC,aAAa,EAAC,OAAO,CAAC,YAAY,EAAC,CAAC,CAAC;YAAA,OAAO;QACja,CAAC;QACD,MAAM,QAAQ,GAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA,CAAC,CAAA,KAAK,CAAC,QAAQ,CAAA,CAAC,CAAA,EAAE,CAAC;QACxD,IAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAG,SAAS;YAAC,MAAM,IAAI,gBAAgB,CAAC,0CAA0C,CAAC,CAAC;QAClI,MAAM,WAAW,GAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAA,EAAE,CAAA,KAAK,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,CAAC,IAAI,KAAG,QAAQ,CAAC,CAAC;QACnF,MAAM,QAAQ,GAAC,QAAQ,CAAC,QAAQ,KAAG,IAAI,IAAE,QAAQ,CAAC,IAAI,KAAG,UAAU,CAAC;QACpE,MAAM,QAAQ,GAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAA,EAAE,GAAC,MAAM,GAAG,GAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAE,CAAC,CAAA,MAAM,CAAC,GAAC,GAAG,CAAC,SAAS,KAAG,SAAS,IAAE,QAAQ,CAAA,CAAC,CAAA,IAAI,CAAA,CAAC,CAAA,SAAS,CAAC,GAAG,CAAC,SAAS,EAAC,IAAI,CAAC,CAAC,CAAA,IAAG,CAAC,KAAG,SAAS;YAAC,MAAM,IAAI,gBAAgB,CAAC,sCAAsC,CAAC,CAAC,CAAA,OAAO,EAAC,UAAU,EAAC,CAAC,CAAC,GAAG,EAAC,SAAS,EAAC,CAAC,EAAC,QAAQ,EAAC,CAAC,CAAC,QAAS,EAAC,CAAC,CAAA,CAAC,CAAC,CAAC;QACjS,MAAM,KAAK,GAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAC,UAAU,GAAC,OAAO,KAAK,KAAG,QAAQ,IAAE,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA,CAAC,CAAA,KAAK,CAAA,CAAC,CAAA,SAAS,CAAC;QAChH,MAAM,CAAC,GAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAC,IAAI,CAAC,EAAC,OAAO,GAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAC,MAAM,GAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAC,QAAQ,GAAC,OAAO,MAAM,KAAG,QAAQ,CAAA,CAAC,CAAA,MAAM,CAAA,CAAC,CAAA,OAAO,OAAO,KAAG,QAAQ,CAAA,CAAC,CAAA,OAAO,GAAC,KAAK,CAAA,CAAC,CAAA,SAAS,CAAC;QACpN,MAAM,KAAK,GAAC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC;QACpD,MAAM,OAAO,GAAW,EAAC,IAAI,EAAC,QAAQ,IAAE,QAAQ,CAAC,MAAM,CAAA,CAAC,CAAA,UAAU,CAAA,CAAC,CAAA,QAAQ,CAAC,MAAM,CAAA,CAAC,CAAA,QAAQ,CAAA,CAAC,CAAA,UAAU,IAAE,UAAU,GAAC,CAAC,IAAE,QAAQ,KAAG,SAAS,IAAE,CAAC,KAAG,SAAS,CAAA,CAAC,CAAA,QAAQ,CAAA,CAAC,CAAA,UAAU,EAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,KAAG,SAAS,CAAA,CAAC,CAAA,EAAC,OAAO,EAAC,QAAQ,CAAC,OAA4B,EAAC,CAAA,CAAC,CAAA,EAAE,CAAC,EAAC,GAAG,CAAC,UAAU,KAAG,SAAS,CAAA,CAAC,CAAA,EAAC,UAAU,EAAC,CAAA,CAAC,CAAA,EAAE,CAAC,EAAC,GAAG,CAAC,CAAC,KAAG,SAAS,CAAA,CAAC,CAAA,EAAC,SAAS,EAAC,CAAC,EAAC,CAAA,CAAC,CAAA,EAAE,CAAC,EAAC,GAAG,CAAC,QAAQ,KAAG,SAAS,CAAA,CAAC,CAAA,EAAC,UAAU,EAAC,QAAQ,EAAC,CAAA,CAAC,CAAA,EAAE,CAAC,EAAC,GAAG,CAAC,OAAO,KAAK,KAAG,QAAQ,CAAA,CAAC,CAAA,EAAC,gBAAgB,EAAC,KAAK,GAAC,IAAI,EAAC,CAAA,CAAC,CAAA,EAAE,CAAC,EAAC,GAAG,CAAC,QAAQ,CAAA,CAAC,CAAA,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,QAAQ,CAAC,KAAK,KAAG,OAAO,IAAE,QAAQ,CAAC,KAAK,KAAG,MAAM,CAAA,CAAC,CAAA,QAAQ,CAAC,KAAK,CAAA,CAAC,CAAA,SAAS,EAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAA,CAAC,CAAA,EAAC,aAAa,EAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAC,CAAC,CAAC,EAAC,EAAE,CAAA,CAAC,IAAI,EAAC,OAAO,CAAC,CAAC,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAC,CAAA,CAAC,CAAC,EAAE,CAAC,EAAC,CAAA,CAAC,CAAA,EAAE,CAAC,EAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAA,CAAC,CAAA,EAAC,QAAQ,EAAC,CAAA,CAAC,CAAA,EAAE,CAAC,EAAC,CAAC;QAClvB,QAAQ,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,IAAI,CAAC,GAAG,EAAC,EAAE,EAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,EAAC,IAAI,EAAC,IAAI,CAAC,IAAI,EAAC,IAAI,EAAC,eAAe,EAAC,MAAM,EAAC,QAAQ,CAAA,CAAC,CAAA,kBAAkB,CAAA,CAAC,CAAA,QAAQ,CAAC,MAAM,CAAA,CAAC,CAAA,gBAAgB,CAAA,CAAC,CAAA,kBAAkB,EAAC,MAAM,EAAC,EAAE,EAAC,QAAQ,EAAC,QAAQ,CAAC,MAAM,CAAA,CAAC,CAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,CAAC,QAAQ,CAAC,CAAA,CAAC,CAAA,IAAK,CAAC,QAAS,EAAC,OAAO,EAAC,CAAC,CAAC;IAChR,CAAC;IACD,kGAAkG;IAClG,qGAAqG;IACrG,MAAM,UAAU,GAAC,CAAC,CAAa,EAAS,EAAE,CAAA,CAAC,CAAC,MAAM,CAAC,MAAM,GAAC,CAAC,IAAE,CAAC,CAAC,CAAC,QAAQ,IAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA,EAAE,CAAA,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC;IACzH,KAAI,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,EAAC,CAAC;QAC5C,IAAG,UAAU,CAAC,CAAC,CAAC;YAAC,SAAS;QAC1B,IAAG,CAAC;YAAA,OAAO,CAAC,CAAC,CAAC,CAAC;QAAA,CAAC;QAAA,OAAM,KAAK,EAAC,CAAC;YAAA,KAAK,CAAC,CAAC,EAAC,yBAAyB,EAAC,KAAK,YAAY,gBAAgB,CAAA,CAAC,CAAA,KAAK,CAAC,OAAO,CAAA,CAAC,CAAA,gCAAgC,CAAC,CAAC;QAAA,CAAC;IACnJ,CAAC;IACD,cAAc,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA,EAAE,CAAA,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IACzF,MAAM,aAAa,GAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAE,CAAC;IAC9C,MAAM,UAAU,GAAC,QAAQ,CAAC,IAAI,KAAG,WAAW,CAAA,CAAC,CAAA,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAE,CAAA,CAAC,CAAA,QAAQ,CAAC,IAAI,KAAG,QAAQ,IAAE,MAAM,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAA,CAAC,CAAA,aAAa,CAAC,gBAAgB,CAAA,CAAC,CAAA,aAAa,CAAC;IAC7L,MAAM,MAAM,GAAC,YAAY,CAAC,UAAU,CAAC,CAAC;IACtC,MAAM,GAAG,GAAqB,KAAK,CAAC,EAAC,aAAa,EAAC,CAAC,EAAC,SAAS,EAAC,UAAU,OAAO,CAAA,CAAC,CAAA,SAAS,CAAA,CAAC,CAAA,MAAM,IAAI,MAAM,CAAC,EAAE,EAAE,EAAC,MAAM,EAAC,EAAC,IAAI,EAAC,OAAO,CAAA,CAAC,CAAA,SAAS,CAAA,CAAC,CAAA,MAAM,EAAC,EAAE,EAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAC,IAAI,EAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAC,EAAC,MAAM,EAAC,EAAC,IAAI,EAAC,WAAW,EAAC,EAAE,EAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAC,aAAa,EAAC,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAC,MAAM,CAAC,EAAC,EAAC,OAAO,EAAC,SAAS,EAAC,EAAC,IAAI,EAAC,SAAS,EAAC,iBAAiB,EAAC,MAAM,EAAC,cAAc,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,cAAc,CAAC,MAAM,EAAC,MAAM,EAAC,cAAc,EAAC,EAAC,KAAK,EAAC,QAAQ,EAAC,KAAK,EAAC,CAAC,CAAC;IACvhB,MAAM,MAAM,GAAC,2BAA2B,CAAC,GAAG,CAAC,CAAC;IAAA,IAAG,MAAM,CAAC,MAAM;QAAC,MAAM,IAAI,gBAAgB,CAAC,wCAAwC,EAAC,MAAM,CAAC,CAAC;IAC3I,OAAO,GAAG,CAAC;AACZ,CAAC"}
|
|
@@ -298,10 +298,10 @@ export function loadHierarchyExecutionPackage(serialized, options = {}) {
|
|
|
298
298
|
}
|
|
299
299
|
if (record(value) && value.schemaVersion === 7 && typeof value.packageId === 'string') {
|
|
300
300
|
if (options.flowId)
|
|
301
|
-
throw new PackageLoadError('Select isolated target while lowering the saved Routine, not by rebasing an existing
|
|
301
|
+
throw new PackageLoadError('Select isolated target while lowering the saved Routine, not by rebasing an existing Project.');
|
|
302
302
|
const issues = validateExecutionPackageV7(value);
|
|
303
303
|
if (issues.length)
|
|
304
|
-
throw new PackageLoadError('Invalid Execution v7
|
|
304
|
+
throw new PackageLoadError('Invalid Execution v7 Project.', issues);
|
|
305
305
|
return value;
|
|
306
306
|
}
|
|
307
307
|
return lowerStudioHierarchy(value, options);
|
|
@@ -78,15 +78,35 @@ declare module '@qaick/contract' {
|
|
|
78
78
|
}
|
|
79
79
|
}
|
|
80
80
|
export type { ExecutionPackageV7 as ExecutionPackage, ExecutionStepV7 as ExecutionStep, ExecutionFlowV7 as ExecutionFlow } from '@qaick/contract';
|
|
81
|
-
export type {
|
|
81
|
+
export type { AcceptedExecutorRequest as RunnerRequest, ExecutorResult, ExecutorStepResult } from '@qaick/runtime';
|
|
82
|
+
export type ExecutionEvent = import('@qaick/runtime').AcceptedExecutorEvent;
|
|
82
83
|
export interface RunnerEngine {
|
|
83
|
-
submit(request: import('@qaick/runtime').
|
|
84
|
+
submit(request: import('@qaick/runtime').AcceptedExecutorRequest): Promise<import('@qaick/contract').RunAccepted>;
|
|
84
85
|
cancel(requestId: string): Promise<void>;
|
|
85
|
-
events(requestId: string): AsyncIterable<
|
|
86
|
-
result(requestId: string): Promise<
|
|
86
|
+
events(requestId: string): AsyncIterable<ExecutionEvent>;
|
|
87
|
+
result(requestId: string): Promise<ExecutionResult>;
|
|
87
88
|
}
|
|
88
|
-
export type StepResult = import('@qaick/runtime').ExecutorStepResult & {
|
|
89
|
+
export type StepResult = Omit<import('@qaick/runtime').ExecutorStepResult, 'iterations' | 'children' | 'attempts' | 'iteration'> & {
|
|
90
|
+
occurrence?: string;
|
|
91
|
+
iteration?: {
|
|
92
|
+
loop?: string;
|
|
93
|
+
loopId?: string;
|
|
94
|
+
current: number;
|
|
95
|
+
total: number;
|
|
96
|
+
};
|
|
97
|
+
iterations?: Array<import('@qaick/contract').IterationSelection | import('@qaick/contract').ScopeIteration>;
|
|
98
|
+
children?: StepResult[];
|
|
99
|
+
attempts?: Array<Omit<NonNullable<import('@qaick/runtime').ExecutorStepResult['attempts']>[number], 'children'> & {
|
|
100
|
+
children?: StepResult[];
|
|
101
|
+
}>;
|
|
89
102
|
transportTiming?: import('./legacy-types.js').StepTransportTiming;
|
|
90
103
|
};
|
|
91
|
-
export type ExecutionResult = import('@qaick/runtime').ExecutorResult
|
|
104
|
+
export type ExecutionResult = Omit<import('@qaick/runtime').ExecutorResult, 'steps' | 'children'> & {
|
|
105
|
+
steps: StepResult[];
|
|
106
|
+
children?: ExecutionResult[];
|
|
107
|
+
resultVersion?: 2;
|
|
108
|
+
source?: import('@qaick/contract').DocumentSource;
|
|
109
|
+
scope?: import('@qaick/contract').ExecutionRoot;
|
|
110
|
+
documentHash?: string;
|
|
111
|
+
} & Pick<import('@qaick/contract').ExecutionResult, 'warnings' | 'artifactHash' | 'provenance'>;
|
|
92
112
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/runner/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/runner/types.ts"],"names":[],"mappings":"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"}
|
package/package-dist/styles.css
CHANGED
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
.panel { margin-top: 24px; border: 1px solid #e5e7eb; border-radius: 8px; background: white; overflow: hidden; } .panel-heading { display: flex; align-items: center; gap: 10px; padding: 10px 12px; border-bottom: 1px solid #e5e7eb; } h2 { margin: 0; font-size: 16px; } .running { color: #14804a; font-size: 12px; font-weight: 600; } .stopped { color: #b33a30; font-size: 12px; font-weight: 600; }
|
|
19
19
|
table { width: 100%; border-collapse: collapse; font-size: 13px; } th { padding: 10px 14px; color: #7b899d; background: #fafbfd; font-size: 11px; text-align: left; text-transform: uppercase; letter-spacing: .04em; } td { padding: 10px 12px; border-top: 1px solid #edf0f7; } tr.parent-row td { background: #ffffff; } tr.nested-row td { background: #f3f7fd; } tr.selected td { background: #dce8ff !important; border-top-color: #9db9ed; } tr.selected td:first-child { border-left: 4px solid #4f46d8; } tr.selected .hierarchy-name { color: #173e91; font-weight: 500; } tbody tr { cursor: pointer; }
|
|
20
20
|
.hierarchy-hint { display: flex; align-items: center; gap: 10px; padding: 9px 16px; border-bottom: 1px solid #dbe6fa; color: #315da9; background: #f2f6ff; font-size: 11px; } .hierarchy-hint span { color: #637897; } .hierarchy-action { padding: 4px 7px; border: 1px solid #b9cbed; border-radius: 4px; color: #315da9; background: #fff; font-size: 10px; font-weight: 500; cursor: pointer; } .hierarchy-action:first-of-type { margin-left: auto; } .hierarchy-name { display: inline-flex; align-items: center; gap: 7px; min-height: 22px; } .collapse-toggle { display: inline-grid; width: 18px; height: 18px; place-items: center; padding: 0; border: 1px solid #9eb5df; border-radius: 4px; color: #315da9; background: #eaf1ff; font-size: 14px; line-height: 1; cursor: pointer; } .branch-marker { color: #5d82ca; font-size: 18px; font-weight: 400; } .kind-label { display: inline-flex; padding: 3px 5px; border-radius: 4px; color: #6c7890; background: #edf0f7; font-size: 9px; font-weight: 600; letter-spacing: .05em; } .nested-label { color: #315da9; background: #e5efff; } .nested-row td:first-child { border-left: 3px solid #8eaded; } .parent-row td:first-child { border-left: 3px solid transparent; }
|
|
21
|
-
.step-icon { display: inline-grid; width: 20px; height: 20px; margin-right: 7px; place-items: center; border-radius: 50%; color: white; background: var(--runner-surface-3); font-size: 11px; } .nested-row .step-icon { margin-left: 18px; } .
|
|
21
|
+
.step-icon { display: inline-grid; width: 20px; height: 20px; margin-right: 7px; place-items: center; border-radius: 50%; color: white; background: var(--runner-surface-3); font-size: 11px; } .nested-row .step-icon { margin-left: 18px; } .step-icon.waiting { background: #efaa18; } .step-icon.skipped { color: #62738c; background: #edf1f6; } .step-icon.failed, .step-icon.cancelled { background: #c94b42; } .step-icon.pending { border: 2px solid #aab6c7; background: transparent; }
|
|
22
22
|
.selected-label { display: inline-flex; margin-left: 8px; padding: 3px 5px; border-radius: 4px; color: #3f37b8; background: #c4d7ff; font-size: 9px; font-weight: 600; letter-spacing: .05em; }
|
|
23
23
|
.status { display: inline-flex; padding: 4px 8px; border-radius: 5px; font-size: 10px; font-weight: 600; letter-spacing: .03em; } .status.finished { color: #14804a; background: #e7f6ed; } .status.waiting { color: #98660b; background: #fff2d5; } .status.pending, .status.skipped { color: #62738c; background: #edf1f6; } .status.failed, .status.cancelled { color: #a33a32; background: #ffebe8; }
|
|
24
24
|
.loop-row td { background: #f5f8fe; border-top: 1px solid #c8d7f0; border-bottom: 1px solid #dce6f6; } .loop-row td:first-child { border-left: 3px solid #668bd2; border-radius: 9px 0 0 0; } .loop-row td:last-child { border-right: 1px solid #c8d7f0; border-radius: 0 9px 0 0; } .loop-icon { color: #fff; background: #668bd2; font-size: 15px; } .loop-label { color: #315da9; background: #e7efff; } .loop-progress { display: flex; align-items: center; flex-wrap: wrap; gap: 5px 8px; min-width: 220px; margin-bottom: 4px; color: #315da9; font-size: 10px; letter-spacing: .02em; } .loop-progress small { flex-basis: 100%; color: #71839c; font-size: 10px; } .loop-bar { width: 92px; height: 6px; overflow: hidden; border-radius: 99px; background: #dce6f6; } .loop-bar i { display: block; height: 100%; border-radius: inherit; background: #668bd2; transition: width .2s ease; } .loop-content td { border-top: 0; border-bottom: 0; background: #ffffff; } .loop-content td:first-child { border-left: 3px solid #c8d7f0; } .loop-content td:last-child { border-right: 1px solid #c8d7f0; } .loop-end td { border-bottom: 1px solid #c8d7f0; } .loop-end td:first-child { border-radius: 0 0 0 9px; } .loop-end td:last-child { border-radius: 0 0 9px 0; }
|
|
@@ -339,7 +339,7 @@ select { color: var(--runner-ink); }
|
|
|
339
339
|
.runner-nav, .inspector { scrollbar-gutter: stable; }
|
|
340
340
|
.runner-nav .nav-item { white-space: nowrap; }
|
|
341
341
|
.run-controls { display: grid; gap: 12px; margin-top: 18px; }
|
|
342
|
-
.run-settings { display: grid; grid-template-columns: minmax(180px, 2fr)
|
|
342
|
+
.run-settings { display: grid; grid-template-columns: minmax(180px, 2fr) minmax(120px, 1fr); gap: 8px 12px; }
|
|
343
343
|
.run-settings label { min-width: 0; font-weight: 500; gap: 5px; }
|
|
344
344
|
.run-settings select { min-width: 0; width: 100%; }
|
|
345
345
|
.run-actions { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; padding-bottom: 4px; }
|
|
@@ -386,31 +386,6 @@ select { color: var(--runner-ink); }
|
|
|
386
386
|
.run-settings { grid-template-columns: repeat(2, minmax(0, 1fr)); }
|
|
387
387
|
}
|
|
388
388
|
@media (max-width: 1100px) {
|
|
389
|
-
.runner-main {
|
|
390
|
-
grid-template-columns: 170px minmax(0, 1fr);
|
|
391
|
-
grid-template-rows: max-content max-content;
|
|
392
|
-
align-content: start;
|
|
393
|
-
overflow-y: auto;
|
|
394
|
-
}
|
|
395
|
-
.runner-workspace { grid-column: 2; padding: 16px; overflow: visible; }
|
|
396
|
-
.runner-nav {
|
|
397
|
-
grid-column: 1;
|
|
398
|
-
grid-row: 1 / span 2;
|
|
399
|
-
position: sticky;
|
|
400
|
-
top: 0;
|
|
401
|
-
align-self: start;
|
|
402
|
-
max-height: 100%;
|
|
403
|
-
padding: 14px 8px;
|
|
404
|
-
}
|
|
405
|
-
.nav-item { gap: 6px; padding-inline: 8px; }
|
|
406
|
-
.inspector {
|
|
407
|
-
grid-column: 2;
|
|
408
|
-
grid-row: 2;
|
|
409
|
-
padding: 16px 12px;
|
|
410
|
-
overflow: visible;
|
|
411
|
-
border-left: 0;
|
|
412
|
-
border-top: 1px solid var(--runner-line);
|
|
413
|
-
}
|
|
414
389
|
.input-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
|
|
415
390
|
.panel-heading .panel-spacer { display: none; }
|
|
416
391
|
.panel-heading h2 { flex: 1 1 auto; }
|
|
@@ -432,6 +407,59 @@ select { color: var(--runner-ink); }
|
|
|
432
407
|
.runner-authoring-source .run-settings { max-width: 40rem; }
|
|
433
408
|
.runner-authoring-source .notice, .runner-authoring-source [role="alert"] { max-width: 80ch; }
|
|
434
409
|
|
|
410
|
+
/* Execution and History share the loaded artifact context and live lifecycle. */
|
|
411
|
+
.runner-shell { grid-template-rows: auto auto auto minmax(0, 1fr); }
|
|
412
|
+
.runner-tabs { display: flex; gap: 6px; padding: 8px 16px; border-bottom: 1px solid var(--runner-line); background: var(--runner-chrome); }
|
|
413
|
+
.runner-tabs [role="tab"] { padding: 6px 14px; border: 1px solid transparent; border-radius: 4px; background: transparent; color: var(--runner-ink); font: inherit; cursor: pointer; }
|
|
414
|
+
.runner-tabs [aria-selected="true"] { background: var(--runner-blue); color: var(--runner-primary-label); }
|
|
415
|
+
.runner-tabs [role="tab"]:hover:not([aria-selected="true"]) { background: var(--runner-surface-3); }
|
|
416
|
+
.runner-tabs [role="tab"]:focus-visible { outline: 2px solid var(--runner-blue); outline-offset: 2px; }
|
|
417
|
+
.runner-project-context { display: flex; flex-wrap: wrap; align-items: baseline; gap: 8px 16px; padding: 10px 16px; background: var(--runner-surface-2); border-bottom: 1px solid var(--runner-line); font-size: 12px; min-width: 0; }
|
|
418
|
+
.runner-project-context .loaded-identity { min-width: 0; overflow-wrap: anywhere; color: var(--runner-muted); }
|
|
419
|
+
.runner-pane-scroll { min-height: 0; min-width: 0; overflow: auto; }
|
|
420
|
+
.runner-pane-scroll:focus-visible { outline: 2px solid var(--runner-blue); outline-offset: -2px; }
|
|
421
|
+
.runner-main.runner-tabbed-main { height: 100%; grid-template-rows: minmax(0, 1fr); }
|
|
422
|
+
.runner-tabbed-main > .runner-workspace { grid-column: 1; grid-row: 1; }
|
|
423
|
+
.runner-tabbed-main > .inspector { grid-column: 3; grid-row: 1; border-left: 0; }
|
|
424
|
+
.inspector-divider { position: relative; grid-column: 2; grid-row: 1; min-height: 0; background: var(--runner-pane-properties); cursor: col-resize; touch-action: none; user-select: none; }
|
|
425
|
+
.inspector-divider::before { content: ''; position: absolute; inset-block: 0; left: 3px; width: 1px; background: var(--runner-divider); }
|
|
426
|
+
.inspector-divider:hover::before, .inspector-divider:focus-visible::before { width: 2px; background: var(--runner-blue); }
|
|
427
|
+
.inspector-divider:focus-visible { outline: 2px solid var(--runner-blue); outline-offset: -2px; }
|
|
428
|
+
.runner-shell [hidden] { display: none !important; }
|
|
429
|
+
|
|
430
|
+
/* Live evidence belongs below execution; History retains its Inspector disclosure. */
|
|
431
|
+
.runner-event-log > summary { cursor: pointer; color: var(--runner-ink); font-size: 13px; font-weight: 600; }
|
|
432
|
+
.runner-event-log .event-log-content { margin-top: 10px; min-width: 0; }
|
|
433
|
+
.runner-event-log .event-log-tools { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 10px; }
|
|
434
|
+
.runner-event-log .event-search { flex: 1 1 120px; width: auto; max-width: none; }
|
|
435
|
+
.runner-event-log .event-filter { flex: 1 1 110px; min-width: 0; }
|
|
436
|
+
.runner-event-log .event-log-scroll { max-height: 320px; overflow: auto; }
|
|
437
|
+
.runner-event-log .event-log-list { margin: 0; padding: 0; list-style: none; }
|
|
438
|
+
.runner-event-log .event-log-list > li + li { border-top: 1px solid var(--runner-line); }
|
|
439
|
+
.runner-event-log .event-row { display: grid; gap: 4px; width: 100%; min-width: 0; padding: 10px 4px; border: 0; border-radius: 0; background: transparent; color: var(--runner-ink); font: inherit; font-size: 12px; text-align: left; white-space: normal; overflow-wrap: anywhere; cursor: pointer; }
|
|
440
|
+
.runner-event-log .event-row:hover { background: var(--runner-surface-3); }
|
|
441
|
+
.runner-event-log .event-row:focus-visible { outline-offset: -2px; }
|
|
442
|
+
.runner-event-log .event-row-meta { display: flex; flex-wrap: wrap; align-items: baseline; gap: 3px 8px; min-width: 0; font-size: 10px; }
|
|
443
|
+
.runner-event-log .event-row-meta time, .runner-event-log .event-state { color: var(--runner-muted); }
|
|
444
|
+
.runner-event-log .event-row-meta code { min-width: 0; }
|
|
445
|
+
.runner-event-log .event-message, .runner-event-log .parallel-event { min-width: 0; }
|
|
446
|
+
.runner-event-log .empty-state { padding: 0; overflow-wrap: anywhere; }
|
|
447
|
+
|
|
448
|
+
.execution-event-log { padding: 12px; }
|
|
449
|
+
|
|
450
|
+
.input-lock-fields { margin: 0; border: 0; min-width: 0; }
|
|
451
|
+
|
|
452
|
+
/* Keep names aligned at each hierarchy depth, including leaves without a toggle. */
|
|
453
|
+
.collapse-spacer { display: inline-block; flex: 0 0 18px; width: 18px; }
|
|
454
|
+
.collapse-toggle { flex: 0 0 18px; }
|
|
455
|
+
|
|
456
|
+
/* Outside the submitted execution scope: retain inspection and focus affordances. */
|
|
457
|
+
.table-scroll tr.outside-scope td,
|
|
458
|
+
.table-scroll tr.outside-scope .hierarchy-name,
|
|
459
|
+
.table-scroll tr.outside-scope .branch-marker,
|
|
460
|
+
.table-scroll tr.outside-scope .kind-label,
|
|
461
|
+
.table-scroll tr.outside-scope .selected-label { color: var(--runner-muted); }
|
|
462
|
+
|
|
435
463
|
.runner-demo { min-height: 100vh; padding: 24px 32px 34px; box-sizing: border-box; background: #edf2f8; color: #243654; }
|
|
436
464
|
.runner-demo-title { display: flex; align-items: center; justify-content: space-between; max-width: 1420px; margin: 0 auto 24px; }
|
|
437
465
|
.runner-demo-title div { display: flex; align-items: baseline; gap: 14px; }
|