@anweat/dsh-browser 0.1.17 → 0.2.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +238 -71
- package/assets/skills/dsh-browser/SKILL.md +120 -0
- package/assets/skills/dsh-browser/references/develop.md +48 -0
- package/assets/skills/dsh-browser/references/observe.md +91 -0
- package/assets/skills/dsh-browser/references/opencli.md +25 -0
- package/assets/skills/dsh-browser/references/recipes.md +149 -0
- package/assets/skills/dsh-browser/references/userscripts.md +44 -0
- package/cordis.patch.yml +4 -0
- package/lib/actions/act.d.ts +3 -0
- package/lib/actions/act.js +147 -0
- package/lib/actions/act.js.map +1 -0
- package/lib/actions/automation.d.ts +3 -0
- package/lib/actions/automation.js +356 -0
- package/lib/actions/automation.js.map +1 -0
- package/lib/actions/crawl.d.ts +3 -0
- package/lib/actions/crawl.js +28 -0
- package/lib/actions/crawl.js.map +1 -0
- package/lib/actions/errors.d.ts +53 -0
- package/lib/actions/errors.js +178 -0
- package/lib/actions/errors.js.map +1 -0
- package/lib/actions/index-view.d.ts +42 -0
- package/lib/actions/index-view.js +268 -0
- package/lib/actions/index-view.js.map +1 -0
- package/lib/actions/inspect.d.ts +3 -0
- package/lib/actions/inspect.js +35 -0
- package/lib/actions/inspect.js.map +1 -0
- package/lib/actions/observe.d.ts +3 -0
- package/lib/actions/observe.js +121 -0
- package/lib/actions/observe.js.map +1 -0
- package/lib/actions/opencli.d.ts +3 -0
- package/lib/actions/opencli.js +51 -0
- package/lib/actions/opencli.js.map +1 -0
- package/lib/actions/registry.d.ts +35 -0
- package/lib/actions/registry.js +89 -0
- package/lib/actions/registry.js.map +1 -0
- package/lib/actions/run.d.ts +34 -0
- package/lib/actions/run.js +226 -0
- package/lib/actions/run.js.map +1 -0
- package/lib/actions/runtime.d.ts +3 -0
- package/lib/actions/runtime.js +33 -0
- package/lib/actions/runtime.js.map +1 -0
- package/lib/actions/schema.d.ts +31 -0
- package/lib/actions/schema.js +309 -0
- package/lib/actions/schema.js.map +1 -0
- package/lib/actions/script.d.ts +3 -0
- package/lib/actions/script.js +97 -0
- package/lib/actions/script.js.map +1 -0
- package/lib/actions/shared.d.ts +31 -0
- package/lib/actions/shared.js +45 -0
- package/lib/actions/shared.js.map +1 -0
- package/lib/actions/surface.d.ts +22 -0
- package/lib/actions/surface.js +18 -0
- package/lib/actions/surface.js.map +1 -0
- package/lib/actions/target.d.ts +3 -0
- package/lib/actions/target.js +66 -0
- package/lib/actions/target.js.map +1 -0
- package/lib/actions/types.d.ts +181 -0
- package/lib/actions/types.js +48 -0
- package/lib/actions/types.js.map +1 -0
- package/lib/activation-rules.d.ts +29 -0
- package/lib/activation-rules.js +33 -0
- package/lib/activation-rules.js.map +1 -0
- package/lib/approval-policy.d.ts +40 -2
- package/lib/approval-policy.js +184 -97
- package/lib/approval-policy.js.map +1 -1
- package/lib/automation-assets-rpc.d.ts +8 -2
- package/lib/automation-assets-rpc.js +67 -6
- package/lib/automation-assets-rpc.js.map +1 -1
- package/lib/automation-assets.d.ts +152 -4
- package/lib/automation-assets.js +255 -15
- package/lib/automation-assets.js.map +1 -1
- package/lib/automation-convert.d.ts +23 -0
- package/lib/automation-convert.js +110 -0
- package/lib/automation-convert.js.map +1 -0
- package/lib/automation-development.d.ts +26 -0
- package/lib/automation-development.js +47 -0
- package/lib/automation-development.js.map +1 -1
- package/lib/automation-execution.d.ts +57 -1
- package/lib/automation-execution.js +167 -11
- package/lib/automation-execution.js.map +1 -1
- package/lib/automation-journal.d.ts +92 -0
- package/lib/automation-journal.js +449 -0
- package/lib/automation-journal.js.map +1 -0
- package/lib/automation-v2.d.ts +138 -0
- package/lib/automation-v2.js +631 -0
- package/lib/automation-v2.js.map +1 -0
- package/lib/automation.d.ts +82 -5
- package/lib/automation.js +239 -82
- package/lib/automation.js.map +1 -1
- package/lib/browser-service.d.ts +304 -32
- package/lib/browser-service.js +631 -182
- package/lib/browser-service.js.map +1 -1
- package/lib/client/SettingsCard.js +95 -57
- package/lib/client/SettingsCard.js.map +1 -1
- package/lib/client/asset-editor.d.ts +55 -0
- package/lib/client/asset-editor.js +101 -0
- package/lib/client/asset-editor.js.map +1 -0
- package/lib/client/automation-assets-client.d.ts +99 -2
- package/lib/client/automation-assets-client.js +243 -10
- package/lib/client/automation-assets-client.js.map +1 -1
- package/lib/client/form.d.ts +48 -4
- package/lib/client/form.js +142 -29
- package/lib/client/form.js.map +1 -1
- package/lib/client/index.d.ts +25 -2
- package/lib/client/index.js +5 -1
- package/lib/client/index.js.map +1 -1
- package/lib/client/locales.d.ts +85 -6
- package/lib/client/locales.js +64 -12
- package/lib/client/locales.js.map +1 -1
- package/lib/client/prompts-form.d.ts +67 -0
- package/lib/client/prompts-form.js +140 -0
- package/lib/client/prompts-form.js.map +1 -0
- package/lib/client/prompts-status-client.d.ts +34 -0
- package/lib/client/prompts-status-client.js +53 -0
- package/lib/client/prompts-status-client.js.map +1 -0
- package/lib/client.js +1914 -329
- package/lib/client.js.map +1 -1
- package/lib/config.d.ts +50 -1
- package/lib/config.js +31 -1
- package/lib/config.js.map +1 -1
- package/lib/dialogs.d.ts +37 -0
- package/lib/dialogs.js +73 -0
- package/lib/dialogs.js.map +1 -0
- package/lib/freedom.d.ts +23 -7
- package/lib/freedom.js +48 -59
- package/lib/freedom.js.map +1 -1
- package/lib/index.d.ts +4 -4
- package/lib/index.js +36 -10
- package/lib/index.js.map +1 -1
- package/lib/journal.d.ts +109 -0
- package/lib/journal.js +238 -0
- package/lib/journal.js.map +1 -0
- package/lib/locator.d.ts +82 -0
- package/lib/locator.js +190 -0
- package/lib/locator.js.map +1 -0
- package/lib/observe-script.d.ts +27 -0
- package/lib/observe-script.js +565 -0
- package/lib/observe-script.js.map +1 -0
- package/lib/observe.d.ts +179 -0
- package/lib/observe.js +368 -0
- package/lib/observe.js.map +1 -0
- package/lib/policy-keys.d.ts +30 -0
- package/lib/policy-keys.js +34 -0
- package/lib/policy-keys.js.map +1 -0
- package/lib/prompt-limits.d.ts +30 -0
- package/lib/prompt-limits.js +31 -0
- package/lib/prompt-limits.js.map +1 -0
- package/lib/prompts.d.ts +131 -0
- package/lib/prompts.js +295 -0
- package/lib/prompts.js.map +1 -0
- package/lib/skill.d.ts +100 -0
- package/lib/skill.js +181 -0
- package/lib/skill.js.map +1 -0
- package/lib/tool-defs.d.ts +72 -0
- package/lib/tool-defs.js +67 -0
- package/lib/tool-defs.js.map +1 -0
- package/lib/tools.d.ts +19 -4
- package/lib/tools.js +124 -922
- package/lib/tools.js.map +1 -1
- package/package.json +5 -1
- package/scripts/dump-prompts.mjs +29 -0
- package/scripts/measure-tool-surface.mjs +190 -0
|
@@ -1,4 +1,28 @@
|
|
|
1
1
|
/** Shared guarded execution for active assets and draft runtime replay. */
|
|
2
|
+
import { coerceInputs, materializeDeep } from "./automation-v2.js";
|
|
3
|
+
import { computeContentHash, digestInputs } from "./automation-assets.js";
|
|
4
|
+
import { mapError } from "./actions/errors.js";
|
|
5
|
+
import { INPUT_SET_MAX, INPUT_SET_MIN } from "./activation-rules.js";
|
|
6
|
+
const RUN_FIELDS = ['executionStatus', 'validationStatus', 'completedSteps', 'failedStep', 'effects', 'outputs', 'message', 'legacyFallback', 'steps'];
|
|
7
|
+
/** Split the service's recipe result into the run report and the page state. Tolerates a service that predates B2. */
|
|
8
|
+
function splitRecipeResult(raw) {
|
|
9
|
+
const record = (raw && typeof raw === 'object' ? raw : {});
|
|
10
|
+
const page = Object.fromEntries(Object.entries(record).filter(([key]) => !RUN_FIELDS.includes(key)));
|
|
11
|
+
if (typeof record.executionStatus !== 'string') {
|
|
12
|
+
return { run: { executionStatus: 'completed', validationStatus: 'not_checked', completedSteps: Array.isArray(record.steps) ? record.steps : [], effects: 'unknown', outputs: [] }, page };
|
|
13
|
+
}
|
|
14
|
+
const run = {
|
|
15
|
+
executionStatus: record.executionStatus,
|
|
16
|
+
validationStatus: (record.validationStatus ?? 'not_checked'),
|
|
17
|
+
completedSteps: (record.completedSteps ?? []),
|
|
18
|
+
...record.failedStep ? { failedStep: record.failedStep } : {},
|
|
19
|
+
effects: (record.effects ?? 'unknown'),
|
|
20
|
+
outputs: (record.outputs ?? []),
|
|
21
|
+
...typeof record.message === 'string' ? { message: record.message } : {},
|
|
22
|
+
...record.legacyFallback ? { legacyFallback: true } : {},
|
|
23
|
+
};
|
|
24
|
+
return { run, page };
|
|
25
|
+
}
|
|
2
26
|
function materialize(value, inputs) {
|
|
3
27
|
return value.replace(/\{\{([a-zA-Z][\w-]*)\}\}/g, (_match, name) => {
|
|
4
28
|
if (!(name in inputs))
|
|
@@ -28,28 +52,160 @@ export function automationInputs(asset, raw) {
|
|
|
28
52
|
throw new Error('undeclared automation inputs: ' + extra.join(', '));
|
|
29
53
|
return inputs;
|
|
30
54
|
}
|
|
31
|
-
|
|
55
|
+
/** A v2 asset can only count as tested when something checks the business result. */
|
|
56
|
+
const NO_VERIFIER = 'The steps ran, but this v2 recipe has no assert step and no postcondition, so nothing verified the result and the test cannot pass. Add an assert step or a postcondition that proves the outcome, save, and test again.';
|
|
57
|
+
function hasVerifier(asset) {
|
|
58
|
+
return (asset.recipe ?? []).some(step => step.type === 'assert') || (asset.postconditions?.length ?? 0) > 0;
|
|
59
|
+
}
|
|
60
|
+
/** Run the asset once with already-validated inputs. Throws when nothing ran (no page, bad navigation, malformed recipe). */
|
|
61
|
+
async function runAssetOnce(service, asset, v2, url, inputs, options) {
|
|
62
|
+
let value;
|
|
63
|
+
let run;
|
|
64
|
+
if (asset.kind === 'recipe') {
|
|
65
|
+
// legacyRecipe: stored assets keep their pre-B2 behaviour for an unknown extract mode (reported as legacyFallback).
|
|
66
|
+
const common = { url, signal: options.signal, ...options.authProfile ? { authProfile: options.authProfile } : {}, ...options.rulePack ? { rulePack: options.rulePack } : {}, session: options.session, ...options.isolated ? { isolated: true } : {} };
|
|
67
|
+
const result = v2
|
|
68
|
+
? await service.recipe(materializeDeep(asset.recipe ?? [], inputs), {
|
|
69
|
+
...common, schemaVersion: 2,
|
|
70
|
+
...asset.postconditions ? { postconditions: materializeDeep(asset.postconditions, inputs) } : {},
|
|
71
|
+
...asset.outputSchema ? { outputSchema: asset.outputSchema } : {},
|
|
72
|
+
allowedDomains: asset.domains,
|
|
73
|
+
})
|
|
74
|
+
: await service.recipe(materializeRecipe(asset.recipe ?? [], inputs), { ...common, legacyRecipe: true });
|
|
75
|
+
({ run, page: value } = splitRecipeResult(result));
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
try {
|
|
79
|
+
value = await service.runUserscript(url, asset.source ?? '', { signal: options.signal, inputs, ...options.authProfile ? { authProfile: options.authProfile } : {}, ...options.rulePack ? { rulePack: options.rulePack } : {} });
|
|
80
|
+
run = { executionStatus: 'completed', validationStatus: 'not_checked', completedSteps: [], effects: 'unknown', outputs: [] };
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
// A UserScript is one opaque step: a throw is a failed run, reported in the same structure as a recipe.
|
|
84
|
+
const body = mapError(error, 'script.run_userscript', { signal: options.signal });
|
|
85
|
+
value = undefined;
|
|
86
|
+
run = {
|
|
87
|
+
executionStatus: body.code === 'CANCELLED' ? 'cancelled' : 'failed', validationStatus: 'not_checked', completedSteps: [], effects: 'unknown', outputs: [],
|
|
88
|
+
failedStep: { index: 1, action: 'userscript', errorCode: body.code, message: body.message },
|
|
89
|
+
message: 'The UserScript ' + (body.code === 'CANCELLED' ? 'was cancelled' : 'threw') + '; its side effects, if any, are not rolled back.',
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return { value, run };
|
|
94
|
+
}
|
|
95
|
+
function loadAsset(store, id, requiredStatus, options) {
|
|
32
96
|
const asset = store.get(id);
|
|
33
97
|
if (!asset || asset.status !== requiredStatus)
|
|
34
98
|
throw new Error(`${requiredStatus} automation asset not found`);
|
|
35
|
-
|
|
99
|
+
if (options.expectedRevision !== undefined && options.expectedRevision !== asset.revision) {
|
|
100
|
+
throw new Error(`revision mismatch: asked to test revision ${options.expectedRevision}, but the asset is at revision ${asset.revision}; reload it and test again`);
|
|
101
|
+
}
|
|
102
|
+
const v2 = asset.kind === 'recipe' && asset.schemaVersion === 2;
|
|
103
|
+
// The credential left by a test names the revision and content that actually ran, even if the asset is saved again meanwhile.
|
|
104
|
+
return { asset, v2, tested: { revision: asset.revision, contentHash: asset.contentHash ?? computeContentHash(asset) } };
|
|
105
|
+
}
|
|
106
|
+
/** v2 assets with an inputSchema validate and convert inputs by type; everything else keeps the v1 string rules. */
|
|
107
|
+
function coerceFor(asset, v2, raw) {
|
|
108
|
+
return v2 && asset.inputSchema ? coerceInputs(asset.inputSchema, raw) : automationInputs(asset, raw);
|
|
109
|
+
}
|
|
110
|
+
export async function executeAutomationAsset(service, store, id, url, rawInputs, requiredStatus, options = {}) {
|
|
111
|
+
const { asset, v2, tested } = loadAsset(store, id, requiredStatus, options);
|
|
112
|
+
const inputs = coerceFor(asset, v2, rawInputs);
|
|
36
113
|
store.assertTarget(asset, url);
|
|
114
|
+
let value;
|
|
115
|
+
let run;
|
|
37
116
|
try {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
: await service.runUserscript(url, asset.source ?? '', { signal: options.signal, inputs, ...options.authProfile ? { authProfile: options.authProfile } : {}, ...options.rulePack ? { rulePack: options.rulePack } : {} });
|
|
41
|
-
if (requiredStatus === 'active')
|
|
42
|
-
store.noteRun(asset.id, true);
|
|
43
|
-
else
|
|
44
|
-
store.noteTestResult(asset.id, true, url);
|
|
45
|
-
return { asset: store.get(asset.id), value };
|
|
117
|
+
;
|
|
118
|
+
({ value, run } = await runAssetOnce(service, asset, v2, url, inputs, options));
|
|
46
119
|
}
|
|
47
120
|
catch (error) {
|
|
121
|
+
// Nothing ran: no page, navigation failure, or a malformed recipe.
|
|
48
122
|
if (requiredStatus === 'active')
|
|
49
123
|
store.noteRun(asset.id, false);
|
|
50
124
|
else
|
|
51
|
-
store.noteTestResult(asset.id, false, url);
|
|
125
|
+
store.noteTestResult(asset.id, false, url, 'legacy-unverified', undefined, { inputs, tested, executionStatus: 'failed', validationStatus: 'not_checked' });
|
|
52
126
|
throw error;
|
|
53
127
|
}
|
|
128
|
+
let succeeded = run.executionStatus === 'completed' && run.validationStatus !== 'failed';
|
|
129
|
+
const evidenceLevel = run.validationStatus === 'passed' ? 'verified' : 'legacy-unverified';
|
|
130
|
+
let failureReason;
|
|
131
|
+
let verifierMissing;
|
|
132
|
+
if (requiredStatus === 'draft' && v2 && succeeded && !hasVerifier(asset)) {
|
|
133
|
+
// v1 keeps its old gate (a passing test without asserts is legacy-unverified); a v2 asset must verify its result.
|
|
134
|
+
succeeded = false;
|
|
135
|
+
failureReason = NO_VERIFIER;
|
|
136
|
+
verifierMissing = { message: NO_VERIFIER };
|
|
137
|
+
run = { ...run, message: NO_VERIFIER };
|
|
138
|
+
}
|
|
139
|
+
if (requiredStatus === 'active')
|
|
140
|
+
store.noteRun(asset.id, succeeded);
|
|
141
|
+
else
|
|
142
|
+
store.noteTestResult(asset.id, succeeded, url, evidenceLevel, failureReason, { inputs, tested, executionStatus: run.executionStatus, validationStatus: run.validationStatus });
|
|
143
|
+
return { asset: store.get(asset.id), value, execution: { ...run, evidenceLevel }, succeeded, ...verifierMissing ? { verifierMissing } : {} };
|
|
144
|
+
}
|
|
145
|
+
// --- independent replay with several input sets --------------------------------
|
|
146
|
+
export { INPUT_SET_MIN, INPUT_SET_MAX };
|
|
147
|
+
export const PARAMETERIZATION_SUSPECT = 'PARAMETERIZATION_SUSPECT';
|
|
148
|
+
/**
|
|
149
|
+
* Test a draft with 2 to 5 input sets, each in its own fresh BrowserContext, never in the session's page.
|
|
150
|
+
* Every set must pass for the test to pass. A passing test is only suspicious (not failed) when different
|
|
151
|
+
* inputs gave identical outputs; the credential then carries `PARAMETERIZATION_SUSPECT`.
|
|
152
|
+
*/
|
|
153
|
+
export async function executeDraftInputSets(service, store, id, url, rawSets, options = {}) {
|
|
154
|
+
if (!Array.isArray(rawSets) || rawSets.length < INPUT_SET_MIN || rawSets.length > INPUT_SET_MAX)
|
|
155
|
+
throw new Error(`inputSets must list ${INPUT_SET_MIN} to ${INPUT_SET_MAX} input objects`);
|
|
156
|
+
const { asset, v2, tested } = loadAsset(store, id, 'draft', options);
|
|
157
|
+
// Every set is validated before the browser is touched, so a typo in the last one costs nothing.
|
|
158
|
+
const sets = rawSets.map(raw => coerceFor(asset, v2, raw));
|
|
159
|
+
const digests = sets.map(inputs => digestInputs(inputs));
|
|
160
|
+
if (new Set(digests).size !== digests.length)
|
|
161
|
+
throw new Error('inputSets must differ from each other: two sets have identical inputs, so they cannot show that the inputs change the result');
|
|
162
|
+
store.assertTarget(asset, url);
|
|
163
|
+
const results = [];
|
|
164
|
+
for (const [index, inputs] of sets.entries()) {
|
|
165
|
+
let outcome;
|
|
166
|
+
try {
|
|
167
|
+
outcome = await runAssetOnce(service, asset, v2, url, inputs, { ...options, isolated: true });
|
|
168
|
+
}
|
|
169
|
+
catch (error) {
|
|
170
|
+
const body = mapError(error, 'recipe.run', { signal: options.signal });
|
|
171
|
+
outcome = { value: undefined, run: { executionStatus: body.code === 'CANCELLED' ? 'cancelled' : 'failed', validationStatus: 'not_checked', completedSteps: [], effects: 'none', outputs: [], failedStep: { index: 1, action: 'goto', errorCode: body.code, message: body.message }, message: `Nothing ran for input set ${index + 1}: ${body.message}` } };
|
|
172
|
+
}
|
|
173
|
+
const { value, run } = outcome;
|
|
174
|
+
const passed = run.executionStatus === 'completed' && run.validationStatus !== 'failed';
|
|
175
|
+
const produced = asset.kind === 'recipe' ? run.outputs.filter(output => output.action === 'extract').map(output => ({ name: output.name, value: output.value })) : value;
|
|
176
|
+
results.push({ index, inputsDigest: digests[index], passed, execution: { ...run, evidenceLevel: run.validationStatus === 'passed' ? 'verified' : 'legacy-unverified' }, produced, outputsDigest: digestInputs(produced) });
|
|
177
|
+
if (!passed)
|
|
178
|
+
break;
|
|
179
|
+
}
|
|
180
|
+
const allPassed = results.length === sets.length && results.every(entry => entry.passed);
|
|
181
|
+
let succeeded = allPassed;
|
|
182
|
+
let verifierMissing;
|
|
183
|
+
let failureReason;
|
|
184
|
+
if (succeeded && v2 && !hasVerifier(asset)) {
|
|
185
|
+
succeeded = false;
|
|
186
|
+
verifierMissing = { message: NO_VERIFIER };
|
|
187
|
+
failureReason = NO_VERIFIER;
|
|
188
|
+
}
|
|
189
|
+
const failed = results.find(entry => !entry.passed);
|
|
190
|
+
if (failed && !failureReason)
|
|
191
|
+
failureReason = `Input set ${failed.index + 1} of ${sets.length} did not pass (${failed.execution.failedStep?.errorCode ?? failed.execution.executionStatus}); ${results.length < sets.length ? 'the remaining sets were not run' : 'no other set remained'}.`;
|
|
192
|
+
// Pairs of sets that got the same output from different inputs.
|
|
193
|
+
const identical = [];
|
|
194
|
+
if (allPassed) {
|
|
195
|
+
for (let a = 0; a < results.length; a += 1)
|
|
196
|
+
for (let b = a + 1; b < results.length; b += 1)
|
|
197
|
+
if (results[a].outputsDigest === results[b].outputsDigest)
|
|
198
|
+
identical.push([a, b]);
|
|
199
|
+
}
|
|
200
|
+
const suspect = identical.length > 0;
|
|
201
|
+
const evidenceLevel = allPassed && results.every(entry => entry.execution.validationStatus === 'passed') ? 'verified' : 'legacy-unverified';
|
|
202
|
+
const aggregate = failed ?? results[results.length - 1];
|
|
203
|
+
store.noteTestResult(asset.id, succeeded, url, evidenceLevel, failureReason, {
|
|
204
|
+
inputs: sets, tested, executionStatus: aggregate.execution.executionStatus, validationStatus: failed ? (failed.execution.validationStatus) : (evidenceLevel === 'verified' ? 'passed' : 'not_checked'),
|
|
205
|
+
inputSets: results.map(entry => ({ index: entry.index, inputsDigest: entry.inputsDigest, passed: entry.passed, executionStatus: entry.execution.executionStatus, validationStatus: entry.execution.validationStatus, outputsDigest: entry.outputsDigest })),
|
|
206
|
+
plannedSets: sets.length,
|
|
207
|
+
...suspect ? { warnings: [PARAMETERIZATION_SUSPECT] } : {},
|
|
208
|
+
});
|
|
209
|
+
return { asset: store.get(asset.id), succeeded, sets: results, planned: sets.length, ...verifierMissing ? { verifierMissing } : {}, identicalOutputs: identical, suspect };
|
|
54
210
|
}
|
|
55
211
|
//# sourceMappingURL=automation-execution.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"automation-execution.js","sourceRoot":"","sources":["../src/automation-execution.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAiB3E,SAAS,WAAW,CAAC,KAAa,EAAE,MAA8B;IAChE,OAAO,KAAK,CAAC,OAAO,CAAC,2BAA2B,EAAE,CAAC,MAAM,EAAE,IAAY,EAAE,EAAE;QACzE,IAAI,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,IAAI,EAAE,CAAC,CAAA;QAC3E,OAAO,MAAM,CAAC,IAAI,CAAE,CAAA;IACtB,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,KAA0B,EAAE,MAA8B;IACnF,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QACtB,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,CAA4B,CAAA;QAC7D,KAAK,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;YAAE,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,QAAQ;gBAAE,IAAI,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAA;QAClH,OAAO,IAAoC,CAAA;IAC7C,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAsB,EAAE,GAAY;IACnE,MAAM,MAAM,GAAG,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAClE,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IAC5F,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,EAAE,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAA;IAC1N,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC,CAAC,CAAA;IAClE,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;IAClF,IAAI,OAAO,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IAChG,IAAI,KAAK,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IACtF,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,OAAuB,EACvB,KAA2B,EAC3B,EAAU,EACV,GAAW,EACX,SAAkB,EAClB,cAAkC,EAClC,UAAsC,EAAE;IAExC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IAC3B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,cAAc;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,cAAc,6BAA6B,CAAC,CAAA;IAC9G,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;IACjD,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IAC9B,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,KAAK,QAAQ;YACnC,CAAC,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YACrO,CAAC,CAAC,MAAM,OAAO,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;QAC3N,IAAI,cAAc,KAAK,QAAQ;YAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;;YACzD,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,CAAA;QAC9C,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAE,EAAE,KAAK,EAAE,CAAA;IAC/C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,cAAc,KAAK,QAAQ;YAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;;YAC1D,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,CAAA;QAC/C,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"automation-execution.js","sourceRoot":"","sources":["../src/automation-execution.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAG3E,OAAO,EAAE,YAAY,EAAE,eAAe,EAA4B,MAAM,oBAAoB,CAAA;AAC5F,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAuE,MAAM,wBAAwB,CAAA;AAE9I,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAkCpE,MAAM,UAAU,GAAG,CAAC,iBAAiB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,EAAE,OAAO,CAAU,CAAA;AAE/J,sHAAsH;AACtH,SAAS,iBAAiB,CAAC,GAAY;IACrC,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAA4B,CAAA;IACrF,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAE,UAAgC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IAC3H,IAAI,OAAO,MAAM,CAAC,eAAe,KAAK,QAAQ,EAAE,CAAC;QAC/C,OAAO,EAAE,GAAG,EAAE,EAAE,eAAe,EAAE,WAAW,EAAE,gBAAgB,EAAE,aAAa,EAAE,cAAc,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAA;IAC3L,CAAC;IACD,MAAM,GAAG,GAAoB;QAC3B,eAAe,EAAE,MAAM,CAAC,eAAqD;QAC7E,gBAAgB,EAAE,CAAC,MAAM,CAAC,gBAAgB,IAAI,aAAa,CAAwC;QACnG,cAAc,EAAE,CAAC,MAAM,CAAC,cAAc,IAAI,EAAE,CAAsC;QAClF,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,UAA2C,EAAE,CAAC,CAAC,CAAC,EAAE;QAC9F,OAAO,EAAE,CAAC,MAAM,CAAC,OAAO,IAAI,SAAS,CAA+B;QACpE,OAAO,EAAE,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAA+B;QAC7D,GAAG,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE;QACxE,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,IAAa,EAAE,CAAC,CAAC,CAAC,EAAE;KAClE,CAAA;IACD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAA;AACtB,CAAC;AAED,SAAS,WAAW,CAAC,KAAa,EAAE,MAA8B;IAChE,OAAO,KAAK,CAAC,OAAO,CAAC,2BAA2B,EAAE,CAAC,MAAM,EAAE,IAAY,EAAE,EAAE;QACzE,IAAI,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,IAAI,EAAE,CAAC,CAAA;QAC3E,OAAO,MAAM,CAAC,IAAI,CAAE,CAAA;IACtB,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAsB,EAAE,MAA8B;IAC/E,OAAQ,KAA6B,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QAC/C,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,CAA4B,CAAA;QAC7D,KAAK,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;YAAE,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,QAAQ;gBAAE,IAAI,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAA;QAClH,OAAO,IAAoC,CAAA;IAC7C,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAsB,EAAE,GAAY;IACnE,MAAM,MAAM,GAAG,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAClE,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IAC5F,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,EAAE,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAA;IAC1N,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC,CAAC,CAAA;IAClE,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;IAClF,IAAI,OAAO,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IAChG,IAAI,KAAK,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IACtF,OAAO,MAAM,CAAA;AACf,CAAC;AAED,qFAAqF;AACrF,MAAM,WAAW,GAAG,0NAA0N,CAAA;AAE9O,SAAS,WAAW,CAAC,KAAsB;IACzC,OAAO,CAAC,KAAK,CAAC,MAA2C,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;AAClJ,CAAC;AAED,6HAA6H;AAC7H,KAAK,UAAU,YAAY,CAAC,OAAuB,EAAE,KAAsB,EAAE,EAAW,EAAE,GAAW,EAAE,MAA8B,EAAE,OAAmC;IACxK,IAAI,KAAc,CAAA;IAClB,IAAI,GAAoB,CAAA;IACxB,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC5B,oHAAoH;QACpH,MAAM,MAAM,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAa,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAA;QAC/P,MAAM,MAAM,GAAG,EAAE;YACf,CAAC,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,EAAE,MAAM,CAAmC,EAAE;gBACpG,GAAG,MAAM,EAAE,aAAa,EAAE,CAAC;gBAC3B,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,eAAe,CAAC,KAAK,CAAC,cAAc,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;gBAChG,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE;gBACjE,cAAc,EAAE,KAAK,CAAC,OAAO;aAC9B,CAAC;YACF,CAAC,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,GAAG,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CACzG;QAAA,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAA;IACrD,CAAC;SAAM,CAAC;QACN,IAAI,CAAC;YACH,KAAK,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;YAC/N,GAAG,GAAG,EAAE,eAAe,EAAE,WAAW,EAAE,gBAAgB,EAAE,aAAa,EAAE,cAAc,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE,CAAA;QAC9H,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,wGAAwG;YACxG,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,uBAAuB,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;YACjF,KAAK,GAAG,SAAS,CAAA;YACjB,GAAG,GAAG;gBACJ,eAAe,EAAE,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,gBAAgB,EAAE,aAAa,EAAE,cAAc,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE;gBACzJ,UAAU,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;gBAC3F,OAAO,EAAE,iBAAiB,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,kDAAkD;aAC1I,CAAA;QACH,CAAC;IACH,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAA;AACvB,CAAC;AAED,SAAS,SAAS,CAAC,KAA2B,EAAE,EAAU,EAAE,cAAkC,EAAE,OAAmC;IACjI,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IAC3B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,cAAc;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,cAAc,6BAA6B,CAAC,CAAA;IAC9G,IAAI,OAAO,CAAC,gBAAgB,KAAK,SAAS,IAAI,OAAO,CAAC,gBAAgB,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC1F,MAAM,IAAI,KAAK,CAAC,6CAA6C,OAAO,CAAC,gBAAgB,kCAAkC,KAAK,CAAC,QAAQ,4BAA4B,CAAC,CAAA;IACpK,CAAC;IACD,MAAM,EAAE,GAAG,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,aAAa,KAAK,CAAC,CAAA;IAC/D,8HAA8H;IAC9H,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,kBAAkB,CAAC,KAAK,CAAC,EAAE,EAAE,CAAA;AACzH,CAAC;AAED,oHAAoH;AACpH,SAAS,SAAS,CAAC,KAAsB,EAAE,EAAW,EAAE,GAAY;IAClE,OAAO,EAAE,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;AACtG,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,OAAuB,EACvB,KAA2B,EAC3B,EAAU,EACV,GAAW,EACX,SAAkB,EAClB,cAAkC,EAClC,UAAsC,EAAE;IAExC,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,KAAK,EAAE,EAAE,EAAE,cAAc,EAAE,OAAO,CAAC,CAAA;IAC3E,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE,EAAE,EAAE,SAAS,CAAC,CAAA;IAC9C,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IAC9B,IAAI,KAAc,CAAA;IAClB,IAAI,GAAoB,CAAA;IACxB,IAAI,CAAC;QACH,CAAC;QAAA,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IAClF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,mEAAmE;QACnE,IAAI,cAAc,KAAK,QAAQ;YAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;;YAC1D,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,mBAAmB,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,gBAAgB,EAAE,aAAa,EAAE,CAAC,CAAA;QAC/J,MAAM,KAAK,CAAA;IACb,CAAC;IACD,IAAI,SAAS,GAAG,GAAG,CAAC,eAAe,KAAK,WAAW,IAAI,GAAG,CAAC,gBAAgB,KAAK,QAAQ,CAAA;IACxF,MAAM,aAAa,GAAkB,GAAG,CAAC,gBAAgB,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAA;IACzG,IAAI,aAAiC,CAAA;IACrC,IAAI,eAA6D,CAAA;IACjE,IAAI,cAAc,KAAK,OAAO,IAAI,EAAE,IAAI,SAAS,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;QACzE,kHAAkH;QAClH,SAAS,GAAG,KAAK,CAAA;QACjB,aAAa,GAAG,WAAW,CAAA;QAC3B,eAAe,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,CAAA;QAC1C,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,CAAA;IACxC,CAAC;IACD,IAAI,cAAc,KAAK,QAAQ;QAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,SAAS,CAAC,CAAA;;QAC9D,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,aAAa,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,CAAC,eAAe,EAAE,gBAAgB,EAAE,GAAG,CAAC,gBAAgB,EAAE,CAAC,CAAA;IACnL,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAE,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,GAAG,GAAG,EAAE,aAAa,EAAE,EAAE,SAAS,EAAE,GAAG,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAA;AAC/I,CAAC;AAED,kFAAkF;AAElF,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,CAAA;AACvC,MAAM,CAAC,MAAM,wBAAwB,GAAG,0BAA0B,CAAA;AA0BlE;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,OAAuB,EACvB,KAA2B,EAC3B,EAAU,EACV,GAAW,EACX,OAAgB,EAChB,UAAsC,EAAE;IAExC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,aAAa,IAAI,OAAO,CAAC,MAAM,GAAG,aAAa;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,aAAa,OAAO,aAAa,gBAAgB,CAAC,CAAA;IAC1L,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;IACpE,iGAAiG;IACjG,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAA;IAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAA;IACxD,IAAI,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,8HAA8H,CAAC,CAAA;IAC7L,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IAC9B,MAAM,OAAO,GAAqB,EAAE,CAAA;IACpC,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;QAC7C,IAAI,OAAiD,CAAA;QACrD,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;QAC/F,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;YACtE,OAAO,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE,eAAe,EAAE,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,gBAAgB,EAAE,aAAa,EAAE,cAAc,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,MAAe,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,6BAA6B,KAAK,GAAG,CAAC,KAAK,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,CAAA;QACrW,CAAC;QACD,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,OAAO,CAAA;QAC9B,MAAM,MAAM,GAAG,GAAG,CAAC,eAAe,KAAK,WAAW,IAAI,GAAG,CAAC,gBAAgB,KAAK,QAAQ,CAAA;QACvF,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;QACxK,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,CAAC,KAAK,CAAE,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,GAAG,GAAG,EAAE,aAAa,EAAE,GAAG,CAAC,gBAAgB,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,mBAAmB,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;QAC3N,IAAI,CAAC,MAAM;YAAE,MAAK;IACpB,CAAC;IACD,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IACxF,IAAI,SAAS,GAAG,SAAS,CAAA;IACzB,IAAI,eAA4D,CAAA;IAChE,IAAI,aAAiC,CAAA;IACrC,IAAI,SAAS,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3C,SAAS,GAAG,KAAK,CAAA;QACjB,eAAe,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,CAAA;QAC1C,aAAa,GAAG,WAAW,CAAA;IAC7B,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IACnD,IAAI,MAAM,IAAI,CAAC,aAAa;QAAE,aAAa,GAAG,aAAa,MAAM,CAAC,KAAK,GAAG,CAAC,OAAO,IAAI,CAAC,MAAM,kBAAkB,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,eAAe,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,uBAAuB,GAAG,CAAA;IAC5R,gEAAgE;IAChE,MAAM,SAAS,GAAe,EAAE,CAAA;IAChC,IAAI,SAAS,EAAE,CAAC;QACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC;YAAE,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC;gBAAE,IAAI,OAAO,CAAC,CAAC,CAAE,CAAC,aAAa,KAAK,OAAO,CAAC,CAAC,CAAE,CAAC,aAAa;oBAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IACjL,CAAC;IACD,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAA;IACpC,MAAM,aAAa,GAAkB,SAAS,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,gBAAgB,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAA;IAC1J,MAAM,SAAS,GAAG,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAE,CAAA;IACxD,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,aAAa,EAAE,aAAa,EAAE;QAC3E,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE,SAAS,CAAC,SAAS,CAAC,eAAe,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,KAAK,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC;QACtM,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,CAAC,SAAS,CAAC,eAAe,EAAE,gBAAgB,EAAE,KAAK,CAAC,SAAS,CAAC,gBAAgB,EAAE,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC;QAC3P,WAAW,EAAE,IAAI,CAAC,MAAM;QACxB,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;KAC3D,CAAC,CAAA;IACF,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAE,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,gBAAgB,EAAE,SAAS,EAAE,OAAO,EAAE,CAAA;AAC7K,CAAC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Turn a slice of the exploration journal into a v2 recipe draft.
|
|
3
|
+
*
|
|
4
|
+
* The journal is evidence of one exploration, not a trusted recording (the same rule the recording notes in
|
|
5
|
+
* docs/browser-recipe-migration-and-cancellation.md apply): failed and purely observing calls are left out,
|
|
6
|
+
* an action the recipe cannot express is reported as `unmapped` and keeps the draft from being activated,
|
|
7
|
+
* typed values are never guessed (a value that was not retained becomes a required input), and every
|
|
8
|
+
* judgement the builder made is visible in the report. It does not decide that the draft is equivalent to
|
|
9
|
+
* the exploration; the independent replay (`test` with `inputSets`) is what shows that.
|
|
10
|
+
* @module dsh-browser/automation-journal
|
|
11
|
+
*/
|
|
12
|
+
import type { AutomationAsset } from './automation-assets.ts';
|
|
13
|
+
import type { InputSpec, PendingDisambiguation, Postcondition } from './automation-v2.ts';
|
|
14
|
+
import type { SessionJournal } from './journal.ts';
|
|
15
|
+
import type { BrowserLocatorSpec } from './locator.ts';
|
|
16
|
+
export interface JournalParameter {
|
|
17
|
+
seq: number;
|
|
18
|
+
field: string;
|
|
19
|
+
name: string;
|
|
20
|
+
type?: 'string' | 'number';
|
|
21
|
+
}
|
|
22
|
+
export interface JournalExtract {
|
|
23
|
+
seq: number;
|
|
24
|
+
as: string;
|
|
25
|
+
mode?: 'text' | 'html' | 'links';
|
|
26
|
+
limit?: number;
|
|
27
|
+
dedupe?: boolean;
|
|
28
|
+
}
|
|
29
|
+
export interface DraftFromJournalArgs {
|
|
30
|
+
fromSeq?: number;
|
|
31
|
+
toSeq?: number;
|
|
32
|
+
exclude?: number[];
|
|
33
|
+
parameters?: JournalParameter[];
|
|
34
|
+
extract?: JournalExtract[];
|
|
35
|
+
name: string;
|
|
36
|
+
description?: string;
|
|
37
|
+
domains?: string[];
|
|
38
|
+
postconditions?: unknown[];
|
|
39
|
+
}
|
|
40
|
+
export interface JournalWarning {
|
|
41
|
+
code: string;
|
|
42
|
+
seq?: number;
|
|
43
|
+
message: string;
|
|
44
|
+
}
|
|
45
|
+
export interface JournalDraftReport {
|
|
46
|
+
fromSeq: number;
|
|
47
|
+
toSeq: number;
|
|
48
|
+
steps: number;
|
|
49
|
+
/** False while any journaled action could not become a step. */
|
|
50
|
+
complete: boolean;
|
|
51
|
+
sourceMap: Record<string, number>;
|
|
52
|
+
/** Read-only observe calls: kept in the journal as observation points, never steps. */
|
|
53
|
+
observationPoints: number[];
|
|
54
|
+
excluded: {
|
|
55
|
+
seq: number;
|
|
56
|
+
reason: string;
|
|
57
|
+
}[];
|
|
58
|
+
unmapped: {
|
|
59
|
+
seq: number;
|
|
60
|
+
action: string;
|
|
61
|
+
reason: string;
|
|
62
|
+
}[];
|
|
63
|
+
inputSchema: InputSpec[];
|
|
64
|
+
pendingDisambiguation: {
|
|
65
|
+
step: number;
|
|
66
|
+
seq: number;
|
|
67
|
+
kind: 'positional-index';
|
|
68
|
+
locator: BrowserLocatorSpec;
|
|
69
|
+
}[];
|
|
70
|
+
parameterCandidates: {
|
|
71
|
+
seq: number;
|
|
72
|
+
field: string;
|
|
73
|
+
example: string;
|
|
74
|
+
suggestedName: string;
|
|
75
|
+
}[];
|
|
76
|
+
extractCandidates: {
|
|
77
|
+
seq: number;
|
|
78
|
+
locator?: BrowserLocatorSpec;
|
|
79
|
+
chars?: number;
|
|
80
|
+
}[];
|
|
81
|
+
suggestedPostconditions: Postcondition[];
|
|
82
|
+
suggestedTestUrl?: string;
|
|
83
|
+
domains: string[];
|
|
84
|
+
warnings: JournalWarning[];
|
|
85
|
+
}
|
|
86
|
+
export interface JournalDraft {
|
|
87
|
+
/** Input for `AutomationDevelopmentService.save`. */
|
|
88
|
+
draft: Partial<AutomationAsset> & Pick<AutomationAsset, 'kind' | 'name'>;
|
|
89
|
+
report: JournalDraftReport;
|
|
90
|
+
}
|
|
91
|
+
export declare function buildDraftFromJournal(journal: SessionJournal, args: DraftFromJournalArgs): JournalDraft;
|
|
92
|
+
export type { PendingDisambiguation };
|