@anweat/dsh-browser 0.1.17 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (169) hide show
  1. package/README.md +266 -88
  2. package/assets/skills/dsh-browser/SKILL.md +120 -0
  3. package/assets/skills/dsh-browser/references/develop.md +48 -0
  4. package/assets/skills/dsh-browser/references/observe.md +91 -0
  5. package/assets/skills/dsh-browser/references/opencli.md +25 -0
  6. package/assets/skills/dsh-browser/references/recipes.md +149 -0
  7. package/assets/skills/dsh-browser/references/userscripts.md +44 -0
  8. package/cordis.patch.yml +11 -3
  9. package/lib/actions/act.d.ts +3 -0
  10. package/lib/actions/act.js +147 -0
  11. package/lib/actions/act.js.map +1 -0
  12. package/lib/actions/automation.d.ts +3 -0
  13. package/lib/actions/automation.js +356 -0
  14. package/lib/actions/automation.js.map +1 -0
  15. package/lib/actions/crawl.d.ts +3 -0
  16. package/lib/actions/crawl.js +28 -0
  17. package/lib/actions/crawl.js.map +1 -0
  18. package/lib/actions/errors.d.ts +53 -0
  19. package/lib/actions/errors.js +178 -0
  20. package/lib/actions/errors.js.map +1 -0
  21. package/lib/actions/index-view.d.ts +42 -0
  22. package/lib/actions/index-view.js +268 -0
  23. package/lib/actions/index-view.js.map +1 -0
  24. package/lib/actions/inspect.d.ts +3 -0
  25. package/lib/actions/inspect.js +35 -0
  26. package/lib/actions/inspect.js.map +1 -0
  27. package/lib/actions/observe.d.ts +3 -0
  28. package/lib/actions/observe.js +121 -0
  29. package/lib/actions/observe.js.map +1 -0
  30. package/lib/actions/opencli.d.ts +3 -0
  31. package/lib/actions/opencli.js +51 -0
  32. package/lib/actions/opencli.js.map +1 -0
  33. package/lib/actions/registry.d.ts +35 -0
  34. package/lib/actions/registry.js +89 -0
  35. package/lib/actions/registry.js.map +1 -0
  36. package/lib/actions/run.d.ts +34 -0
  37. package/lib/actions/run.js +226 -0
  38. package/lib/actions/run.js.map +1 -0
  39. package/lib/actions/runtime.d.ts +3 -0
  40. package/lib/actions/runtime.js +33 -0
  41. package/lib/actions/runtime.js.map +1 -0
  42. package/lib/actions/schema.d.ts +31 -0
  43. package/lib/actions/schema.js +309 -0
  44. package/lib/actions/schema.js.map +1 -0
  45. package/lib/actions/script.d.ts +3 -0
  46. package/lib/actions/script.js +97 -0
  47. package/lib/actions/script.js.map +1 -0
  48. package/lib/actions/shared.d.ts +31 -0
  49. package/lib/actions/shared.js +45 -0
  50. package/lib/actions/shared.js.map +1 -0
  51. package/lib/actions/surface.d.ts +22 -0
  52. package/lib/actions/surface.js +18 -0
  53. package/lib/actions/surface.js.map +1 -0
  54. package/lib/actions/target.d.ts +3 -0
  55. package/lib/actions/target.js +66 -0
  56. package/lib/actions/target.js.map +1 -0
  57. package/lib/actions/types.d.ts +181 -0
  58. package/lib/actions/types.js +48 -0
  59. package/lib/actions/types.js.map +1 -0
  60. package/lib/activation-rules.d.ts +29 -0
  61. package/lib/activation-rules.js +33 -0
  62. package/lib/activation-rules.js.map +1 -0
  63. package/lib/approval-policy.d.ts +40 -2
  64. package/lib/approval-policy.js +184 -97
  65. package/lib/approval-policy.js.map +1 -1
  66. package/lib/automation-assets-rpc.d.ts +8 -2
  67. package/lib/automation-assets-rpc.js +68 -10
  68. package/lib/automation-assets-rpc.js.map +1 -1
  69. package/lib/automation-assets.d.ts +152 -4
  70. package/lib/automation-assets.js +255 -15
  71. package/lib/automation-assets.js.map +1 -1
  72. package/lib/automation-convert.d.ts +23 -0
  73. package/lib/automation-convert.js +110 -0
  74. package/lib/automation-convert.js.map +1 -0
  75. package/lib/automation-development.d.ts +26 -0
  76. package/lib/automation-development.js +47 -0
  77. package/lib/automation-development.js.map +1 -1
  78. package/lib/automation-execution.d.ts +57 -1
  79. package/lib/automation-execution.js +167 -11
  80. package/lib/automation-execution.js.map +1 -1
  81. package/lib/automation-journal.d.ts +92 -0
  82. package/lib/automation-journal.js +449 -0
  83. package/lib/automation-journal.js.map +1 -0
  84. package/lib/automation-v2.d.ts +138 -0
  85. package/lib/automation-v2.js +631 -0
  86. package/lib/automation-v2.js.map +1 -0
  87. package/lib/automation.d.ts +82 -5
  88. package/lib/automation.js +239 -82
  89. package/lib/automation.js.map +1 -1
  90. package/lib/browser-service.d.ts +309 -32
  91. package/lib/browser-service.js +636 -182
  92. package/lib/browser-service.js.map +1 -1
  93. package/lib/client/SettingsCard.js +95 -57
  94. package/lib/client/SettingsCard.js.map +1 -1
  95. package/lib/client/asset-editor.d.ts +55 -0
  96. package/lib/client/asset-editor.js +101 -0
  97. package/lib/client/asset-editor.js.map +1 -0
  98. package/lib/client/automation-assets-client.d.ts +99 -2
  99. package/lib/client/automation-assets-client.js +243 -10
  100. package/lib/client/automation-assets-client.js.map +1 -1
  101. package/lib/client/form.d.ts +48 -4
  102. package/lib/client/form.js +142 -29
  103. package/lib/client/form.js.map +1 -1
  104. package/lib/client/index.d.ts +25 -2
  105. package/lib/client/index.js +5 -1
  106. package/lib/client/index.js.map +1 -1
  107. package/lib/client/locales.d.ts +85 -6
  108. package/lib/client/locales.js +64 -12
  109. package/lib/client/locales.js.map +1 -1
  110. package/lib/client/prompts-form.d.ts +67 -0
  111. package/lib/client/prompts-form.js +140 -0
  112. package/lib/client/prompts-form.js.map +1 -0
  113. package/lib/client/prompts-status-client.d.ts +34 -0
  114. package/lib/client/prompts-status-client.js +53 -0
  115. package/lib/client/prompts-status-client.js.map +1 -0
  116. package/lib/client/settings-namespace.d.ts +1 -1
  117. package/lib/client/settings-namespace.js +1 -1
  118. package/lib/client/settings-namespace.js.map +1 -1
  119. package/lib/client.js +1915 -330
  120. package/lib/client.js.map +1 -1
  121. package/lib/config.d.ts +50 -1
  122. package/lib/config.js +31 -1
  123. package/lib/config.js.map +1 -1
  124. package/lib/dialogs.d.ts +37 -0
  125. package/lib/dialogs.js +73 -0
  126. package/lib/dialogs.js.map +1 -0
  127. package/lib/freedom.d.ts +23 -7
  128. package/lib/freedom.js +48 -59
  129. package/lib/freedom.js.map +1 -1
  130. package/lib/index.d.ts +5 -13
  131. package/lib/index.js +51 -30
  132. package/lib/index.js.map +1 -1
  133. package/lib/journal.d.ts +109 -0
  134. package/lib/journal.js +238 -0
  135. package/lib/journal.js.map +1 -0
  136. package/lib/locator.d.ts +82 -0
  137. package/lib/locator.js +190 -0
  138. package/lib/locator.js.map +1 -0
  139. package/lib/observe-script.d.ts +27 -0
  140. package/lib/observe-script.js +565 -0
  141. package/lib/observe-script.js.map +1 -0
  142. package/lib/observe.d.ts +179 -0
  143. package/lib/observe.js +368 -0
  144. package/lib/observe.js.map +1 -0
  145. package/lib/policy-keys.d.ts +30 -0
  146. package/lib/policy-keys.js +34 -0
  147. package/lib/policy-keys.js.map +1 -0
  148. package/lib/prompt-limits.d.ts +30 -0
  149. package/lib/prompt-limits.js +31 -0
  150. package/lib/prompt-limits.js.map +1 -0
  151. package/lib/prompts.d.ts +131 -0
  152. package/lib/prompts.js +295 -0
  153. package/lib/prompts.js.map +1 -0
  154. package/lib/skill.d.ts +100 -0
  155. package/lib/skill.js +181 -0
  156. package/lib/skill.js.map +1 -0
  157. package/lib/tool-defs.d.ts +72 -0
  158. package/lib/tool-defs.js +67 -0
  159. package/lib/tool-defs.js.map +1 -0
  160. package/lib/tools.d.ts +19 -4
  161. package/lib/tools.js +124 -922
  162. package/lib/tools.js.map +1 -1
  163. package/package.json +15 -11
  164. package/scripts/check-host-rpc.mjs +11 -4
  165. package/scripts/dump-prompts.mjs +29 -0
  166. package/scripts/measure-tool-surface.mjs +190 -0
  167. package/lib/settings-scope.d.ts +0 -56
  168. package/lib/settings-scope.js +0 -51
  169. package/lib/settings-scope.js.map +0 -1
@@ -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
- export async function executeAutomationAsset(service, store, id, url, rawInputs, requiredStatus, options = {}) {
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
- const inputs = automationInputs(asset, rawInputs);
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
- const value = asset.kind === 'recipe'
39
- ? await service.recipe(materializeRecipe(asset.recipe ?? [], inputs), { url, signal: options.signal, ...options.authProfile ? { authProfile: options.authProfile } : {}, ...options.rulePack ? { rulePack: options.rulePack } : {} })
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":"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"}
1
+ {"version":3,"file":"automation-execution.js","sourceRoot":"","sources":["../src/automation-execution.ts"],"names":[],"mappings":"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"}
@@ -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 };