@wenathlan/devthink 1.1.16 → 2.0.9
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/CHANGELOG.md +1374 -0
- package/README.md +6 -0
- package/bridge.d.ts +698 -0
- package/bridge.d.ts.map +1 -0
- package/bridge.js +1877 -0
- package/bun.d.ts +8 -0
- package/bun.d.ts.map +1 -0
- package/bun.js +52329 -0
- package/caps/background.json +712 -0
- package/caps/cli.json +360 -0
- package/caps/library.json +3611 -0
- package/caps/mcp.json +126 -0
- package/caps/pagebridge.json +377 -0
- package/caps/popup.json +51 -0
- package/caps/sidepanel.json +522 -0
- package/checksums.txt +142 -0
- package/cli.d.ts +187 -0
- package/cli.d.ts.map +1 -0
- package/cli.js +18197 -0
- package/companion.d.ts +19 -0
- package/companion.d.ts.map +1 -0
- package/companion.js +389 -0
- package/crossbrowser.d.ts +277 -0
- package/crossbrowser.d.ts.map +1 -0
- package/crossbrowser.js +1191 -0
- package/dashdone.d.ts +273 -0
- package/dashdone.d.ts.map +1 -0
- package/dashdone.js +368 -0
- package/deno.d.ts +11 -0
- package/deno.d.ts.map +1 -0
- package/deno.js +52325 -0
- package/devthink.umd.js +52346 -0
- package/fixtures/bun.ts +7 -0
- package/fixtures/cjs.js +6 -0
- package/fixtures/deno.ts +6 -0
- package/fixtures/example-org-pagestate.json +22 -0
- package/fixtures/importers/automa-workflow.json +18 -0
- package/fixtures/importers/selenium-side.json +20 -0
- package/fixtures/importers/tabular-plan.csv +7 -0
- package/fixtures/importers/uivision-macro.json +10 -0
- package/fixtures/importers/v1-plan.json +13 -0
- package/fixtures/mcp-client.mjs +14 -0
- package/fixtures/pages/checkout.html +192 -0
- package/fixtures/pages/dashboard.html +110 -0
- package/fixtures/pages/feed.html +113 -0
- package/fixtures/pages/product-grid.html +150 -0
- package/fixtures/plans/form-inventory-plan.json +11 -0
- package/fixtures/plans/release-notes-plan.json +11 -0
- package/fixtures/recipes/agentscompete.json +11 -0
- package/fixtures/recipes/agentsforms.json +11 -0
- package/fixtures/recipes/agentsmonitor.json +11 -0
- package/fixtures/recipes/agentsreview.json +29 -0
- package/fixtures/recipes/agentswarm.json +11 -0
- package/fixtures/recipes/fillcalendar.json +12 -0
- package/fixtures/recipes/fillcheckout.json +13 -0
- package/fixtures/recipes/filldependentdropdowns.json +12 -0
- package/fixtures/recipes/fillfromcsv.json +13 -0
- package/fixtures/recipes/fillloginform.json +12 -0
- package/fixtures/recipes/fillmultistepwizard.json +13 -0
- package/fixtures/recipes/fillregistration.json +12 -0
- package/fixtures/recipes/fillsearchfilters.json +12 -0
- package/fixtures/recipes/filltypeahead.json +11 -0
- package/fixtures/recipes/monitoralerts.json +12 -0
- package/fixtures/recipes/monitoravailability.json +11 -0
- package/fixtures/recipes/monitornetworkquiet.json +12 -0
- package/fixtures/recipes/monitorpagechanges.json +11 -0
- package/fixtures/recipes/monitorpricechange.json +11 -0
- package/fixtures/recipes/monitorschedule.json +12 -0
- package/fixtures/recipes/scrapedynamicprices.json +13 -0
- package/fixtures/recipes/scrapeimagegallery.json +12 -0
- package/fixtures/recipes/scrapeinfinitefeed.json +13 -0
- package/fixtures/recipes/scrapenestedlists.json +12 -0
- package/fixtures/recipes/scrapeproductgrid.json +12 -0
- package/fixtures/recipes/scrapereviews.json +12 -0
- package/fixtures/recipes/scrapesearchresults.json +12 -0
- package/fixtures/recipes/scrapetablepagination.json +12 -0
- package/fixtures/recipes/testaccessibility.json +34 -0
- package/fixtures/recipes/testconsoleerrors.json +12 -0
- package/fixtures/recipes/testdeeplinks.json +12 -0
- package/fixtures/recipes/testformvalidation.json +13 -0
- package/fixtures/recipes/testlayoutshift.json +12 -0
- package/fixtures/recipes/testlinkcheck.json +12 -0
- package/fixtures/recipes/testloadtiming.json +12 -0
- package/fixtures/recipes/testvisualdiff.json +12 -0
- package/fixtures/workflows/changelog-digest-workflow.json +13 -0
- package/fixtures/workflows/form-survey-workflow.json +13 -0
- package/gallery.json +706 -0
- package/hardening.d.ts +81 -0
- package/hardening.d.ts.map +1 -0
- package/hardening.js +188 -0
- package/headless.d.ts +114 -0
- package/headless.d.ts.map +1 -0
- package/headless.js +11522 -0
- package/http.d.ts +636 -0
- package/http.d.ts.map +1 -0
- package/http.js +2165 -0
- package/index.cjs +54682 -0
- package/index.d.ts +40 -0
- package/index.d.ts.map +1 -0
- package/index.js +52310 -0
- package/index.neutral.js +46343 -0
- package/manifest.json +199 -0
- package/mcp.d.ts +501 -0
- package/mcp.d.ts.map +1 -0
- package/mcp.js +20515 -0
- package/memory.d.ts +2397 -0
- package/memory.d.ts.map +1 -0
- package/memory.js +5782 -0
- package/nativehost.template.json +10 -0
- package/node.cjs +54686 -0
- package/node.d.ts +8 -0
- package/node.d.ts.map +1 -0
- package/pack.d.ts +211 -0
- package/pack.d.ts.map +1 -0
- package/pack.js +805 -0
- package/package.json +111 -51
- package/policy.d.ts +1854 -0
- package/policy.d.ts.map +1 -0
- package/policy.js +12580 -0
- package/progress.d.ts +390 -0
- package/progress.d.ts.map +1 -0
- package/progress.js +645 -0
- package/protocol.d.ts +2336 -0
- package/protocol.d.ts.map +1 -0
- package/protocol.js +8334 -0
- package/schemas/audit.schema.json +226 -0
- package/schemas/capability.schema.json +113 -0
- package/schemas/envelope.schema.json +162 -0
- package/schemas/memory.schema.json +51 -0
- package/schemas/observation.schema.json +113 -0
- package/schemas/plan.schema.json +208 -0
- package/schemas/progress.schema.json +126 -0
- package/schemas/proposal.schema.json +68 -0
- package/schemas/session.schema.json +82 -0
- package/schemas/tool.schema.json +94 -0
- package/server.d.ts +435 -0
- package/server.d.ts.map +1 -0
- package/server.js +28877 -0
- package/umd-example.html +18 -0
- package/umd.d.ts +6 -0
- package/umd.d.ts.map +1 -0
- package/build.ts +0 -41
- package/check-secrets.ts +0 -52
- package/compatibility.ts +0 -37
- package/config.ts +0 -246
- package/devthink.ts +0 -397
- package/identity.ts +0 -156
- package/ids.ts +0 -22
- package/memory.ts +0 -95
- package/modes.ts +0 -43
- package/plugin.ts +0 -68
- package/providers.ts +0 -179
- package/server.ts +0 -264
- package/session.ts +0 -155
- package/storage.ts +0 -82
- package/stream.ts +0 -130
- package/sync.ts +0 -27
- package/terminal-ui.tsx +0 -155
- package/ui.ts +0 -143
- package/workspace.ts +0 -20
package/progress.js
ADDED
|
@@ -0,0 +1,645 @@
|
|
|
1
|
+
/*! devthink 2.0.9 — consent-first browser agent library — GPL-3.0-only — https://github.com/wenathlan/devthink */
|
|
2
|
+
|
|
3
|
+
// version.ts
|
|
4
|
+
var packageversion = "2.0.9";
|
|
5
|
+
var protocolmajor = 2;
|
|
6
|
+
|
|
7
|
+
// progress.ts
|
|
8
|
+
function provenancestampof() {
|
|
9
|
+
return { release: packageversion, protocolmajor };
|
|
10
|
+
}
|
|
11
|
+
function progressnow(clock) {
|
|
12
|
+
return clock.now();
|
|
13
|
+
}
|
|
14
|
+
function recordoutcomewithclock(progress, planid, outcome, clock) {
|
|
15
|
+
return recordoutcome(progress, planid, outcome, clock.now());
|
|
16
|
+
}
|
|
17
|
+
function emptyprogress(planid, now) {
|
|
18
|
+
return { planid, completedsteps: [], provenance: provenancestampof(), updatedat: now };
|
|
19
|
+
}
|
|
20
|
+
function recordstep(progress, planid, stepid, now) {
|
|
21
|
+
const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
|
|
22
|
+
if (base.completedsteps.includes(stepid)) return { ...base, updatedat: now };
|
|
23
|
+
return { planid, completedsteps: [...base.completedsteps, stepid], provenance: provenancestampof(), updatedat: now };
|
|
24
|
+
}
|
|
25
|
+
function recordoutcome(progress, planid, outcome, now) {
|
|
26
|
+
const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
|
|
27
|
+
return {
|
|
28
|
+
...base,
|
|
29
|
+
outcomes: [...base.outcomes ?? [], { ...outcome, provenance: provenancestampof() }],
|
|
30
|
+
updatedat: now
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
function recordenvironment(progress, planid, stepid, environment, now) {
|
|
34
|
+
const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
|
|
35
|
+
return { ...base, environments: { ...base.environments ?? {}, [stepid]: environment }, updatedat: now };
|
|
36
|
+
}
|
|
37
|
+
function environmentof(progress, planid, stepid) {
|
|
38
|
+
if (!progress || progress.planid !== planid) return void 0;
|
|
39
|
+
return (progress.environments ?? {})[stepid];
|
|
40
|
+
}
|
|
41
|
+
function recordturnaround(progress, planid, stepid, milliseconds, now) {
|
|
42
|
+
const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
|
|
43
|
+
return { ...base, turnarounds: { ...base.turnarounds ?? {}, [stepid]: milliseconds }, updatedat: now };
|
|
44
|
+
}
|
|
45
|
+
function turnaroundof(progress, planid, stepid) {
|
|
46
|
+
if (!progress || progress.planid !== planid) return void 0;
|
|
47
|
+
return (progress.turnarounds ?? {})[stepid];
|
|
48
|
+
}
|
|
49
|
+
function recordgatewait(progress, planid, stepid, entry, now) {
|
|
50
|
+
const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
|
|
51
|
+
return { ...base, gatewaits: { ...base.gatewaits ?? {}, [stepid]: entry }, updatedat: now };
|
|
52
|
+
}
|
|
53
|
+
function gatewaitof(progress, planid, stepid) {
|
|
54
|
+
if (!progress || progress.planid !== planid) return void 0;
|
|
55
|
+
return (progress.gatewaits ?? {})[stepid];
|
|
56
|
+
}
|
|
57
|
+
function recordperf(progress, planid, stepid, record, now) {
|
|
58
|
+
const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
|
|
59
|
+
return { ...base, perf: { ...base.perf ?? {}, [stepid]: record }, updatedat: now };
|
|
60
|
+
}
|
|
61
|
+
function perfof(progress, planid, stepid) {
|
|
62
|
+
if (!progress || progress.planid !== planid) return void 0;
|
|
63
|
+
return (progress.perf ?? {})[stepid];
|
|
64
|
+
}
|
|
65
|
+
function recorddeltas(progress, planid, stepid, changes, now) {
|
|
66
|
+
const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
|
|
67
|
+
return { ...base, deltas: { ...base.deltas ?? {}, [stepid]: changes }, updatedat: now };
|
|
68
|
+
}
|
|
69
|
+
function deltasof(progress, planid, stepid) {
|
|
70
|
+
if (!progress || progress.planid !== planid) return [];
|
|
71
|
+
return (progress.deltas ?? {})[stepid] ?? [];
|
|
72
|
+
}
|
|
73
|
+
function iscomplete(progress, plan) {
|
|
74
|
+
if (!progress || progress.planid !== plan.id) return false;
|
|
75
|
+
const required = plan.steps.map((step) => step.id);
|
|
76
|
+
return required.length > 0 && required.every((id) => progress.completedsteps.includes(id));
|
|
77
|
+
}
|
|
78
|
+
function resetforplan(progress, plan, now) {
|
|
79
|
+
if (progress && progress.planid === plan.id) return progress;
|
|
80
|
+
if (!progress) return emptyprogress(plan.id, now);
|
|
81
|
+
const snapshot = {
|
|
82
|
+
planid: progress.planid,
|
|
83
|
+
completedsteps: progress.completedsteps,
|
|
84
|
+
...progress.outcomes ? { outcomes: progress.outcomes } : {},
|
|
85
|
+
updatedat: progress.updatedat
|
|
86
|
+
};
|
|
87
|
+
return {
|
|
88
|
+
planid: plan.id,
|
|
89
|
+
completedsteps: [],
|
|
90
|
+
outcomes: [],
|
|
91
|
+
prior: [...progress.prior ?? [], snapshot],
|
|
92
|
+
provenance: provenancestampof(),
|
|
93
|
+
updatedat: now
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
function watchclosed(startedat, lifetime, now) {
|
|
97
|
+
return now >= startedat + lifetime;
|
|
98
|
+
}
|
|
99
|
+
function recordwatchcompletion(progress, planid, stepid, startedat, lifetime, now) {
|
|
100
|
+
const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
|
|
101
|
+
if (!watchclosed(startedat, lifetime, now)) return base;
|
|
102
|
+
return recordstep(base, planid, stepid, now);
|
|
103
|
+
}
|
|
104
|
+
function recordnaventry(progress, planid, stepid, entry, now) {
|
|
105
|
+
const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
|
|
106
|
+
const outcome = {
|
|
107
|
+
stepid,
|
|
108
|
+
ok: entry.ok,
|
|
109
|
+
summary: `Navigation list entry ${entry.index + 1} of ${entry.url} ${entry.ok ? "completed" : "failed"}.`,
|
|
110
|
+
details: { naventry: entry },
|
|
111
|
+
at: now
|
|
112
|
+
};
|
|
113
|
+
return recordoutcome(base, planid, outcome, now);
|
|
114
|
+
}
|
|
115
|
+
function naventries(progress, planid, stepid) {
|
|
116
|
+
if (!progress || progress.planid !== planid) return [];
|
|
117
|
+
return (progress.outcomes ?? []).filter((outcome) => outcome.stepid === stepid && outcome.details?.naventry !== void 0).map((outcome) => outcome.details?.naventry);
|
|
118
|
+
}
|
|
119
|
+
function assigntasktab(progress, planid, tabid, now) {
|
|
120
|
+
const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
|
|
121
|
+
if ((base.tasktabs ?? []).includes(tabid)) return { ...base, updatedat: now };
|
|
122
|
+
return { ...base, tasktabs: [...base.tasktabs ?? [], tabid], updatedat: now };
|
|
123
|
+
}
|
|
124
|
+
function releasetasktab(progress, planid, tabid, now) {
|
|
125
|
+
const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
|
|
126
|
+
const remaining = (base.tasktabs ?? []).filter((id) => id !== tabid);
|
|
127
|
+
const { tasktabs: released, ...rest } = base;
|
|
128
|
+
void released;
|
|
129
|
+
return { ...rest, ...remaining.length > 0 ? { tasktabs: remaining } : {}, updatedat: now };
|
|
130
|
+
}
|
|
131
|
+
function tasktabs(progress, planid) {
|
|
132
|
+
if (!progress || progress.planid !== planid) return [];
|
|
133
|
+
return progress.tasktabs ?? [];
|
|
134
|
+
}
|
|
135
|
+
function wizardcompletion(state) {
|
|
136
|
+
if (state.steps <= 0) return 0;
|
|
137
|
+
return Math.min(1, state.completed.filter(Boolean).length / state.steps);
|
|
138
|
+
}
|
|
139
|
+
function extractionshare(rowscollected, estimatedtotal) {
|
|
140
|
+
if (!Number.isFinite(estimatedtotal) || estimatedtotal <= 0) return 0;
|
|
141
|
+
return Math.min(1, Math.max(0, rowscollected) / estimatedtotal);
|
|
142
|
+
}
|
|
143
|
+
function recordextraction(progress, planid, stepid, entry, now) {
|
|
144
|
+
const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
|
|
145
|
+
const outcome = {
|
|
146
|
+
stepid,
|
|
147
|
+
ok: true,
|
|
148
|
+
summary: `Extraction page ${entry.page} collected ${entry.rows} row${entry.rows === 1 ? "" : "s"} at cursor ${entry.cursor}.`,
|
|
149
|
+
details: { extraction: entry },
|
|
150
|
+
at: now
|
|
151
|
+
};
|
|
152
|
+
return recordoutcome(base, planid, outcome, now);
|
|
153
|
+
}
|
|
154
|
+
function extractionentries(progress, planid, stepid) {
|
|
155
|
+
if (!progress || progress.planid !== planid) return [];
|
|
156
|
+
return (progress.outcomes ?? []).filter((outcome) => outcome.stepid === stepid && outcome.details?.extraction !== void 0).map((outcome) => outcome.details?.extraction);
|
|
157
|
+
}
|
|
158
|
+
function recordwizardstep(progress, planid, stepid, state, now) {
|
|
159
|
+
const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
|
|
160
|
+
const executed = Math.min(state.index, state.steps);
|
|
161
|
+
const done = executed >= state.steps;
|
|
162
|
+
const outcome = {
|
|
163
|
+
stepid,
|
|
164
|
+
ok: done,
|
|
165
|
+
summary: `Wizard step ${executed} of ${state.steps} ${done ? "completed the wizard" : "executed"}.`,
|
|
166
|
+
details: { wizard: { index: state.index, steps: state.steps, completed: [...state.completed] } },
|
|
167
|
+
at: now
|
|
168
|
+
};
|
|
169
|
+
return recordoutcome(base, planid, outcome, now);
|
|
170
|
+
}
|
|
171
|
+
function downloadshare(completed, total) {
|
|
172
|
+
if (!Number.isFinite(total) || total <= 0) return 0;
|
|
173
|
+
return Math.min(1, Math.max(0, completed) / total);
|
|
174
|
+
}
|
|
175
|
+
function recorddownload(progress, planid, stepid, entry, now) {
|
|
176
|
+
const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
|
|
177
|
+
const outcome = {
|
|
178
|
+
stepid,
|
|
179
|
+
ok: entry.state === "complete",
|
|
180
|
+
summary: `Download ${entry.index + 1} of ${entry.url} ended in the ${entry.state} state.`,
|
|
181
|
+
details: { download: entry },
|
|
182
|
+
at: now
|
|
183
|
+
};
|
|
184
|
+
return recordoutcome(base, planid, outcome, now);
|
|
185
|
+
}
|
|
186
|
+
function downloadentries(progress, planid, stepid) {
|
|
187
|
+
if (!progress || progress.planid !== planid) return [];
|
|
188
|
+
return (progress.outcomes ?? []).filter((outcome) => outcome.stepid === stepid && outcome.details?.download !== void 0).map((outcome) => outcome.details?.download);
|
|
189
|
+
}
|
|
190
|
+
function recordcapture(progress, planid, stepid, capture, now) {
|
|
191
|
+
const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
|
|
192
|
+
const bytes = capture.bytes?.length ?? 0;
|
|
193
|
+
const outcome = {
|
|
194
|
+
stepid,
|
|
195
|
+
ok: true,
|
|
196
|
+
summary: `Captured a ${capture.format} ${capture.kind} shot of ${capture.width} by ${capture.height} pixels with ${bytes} character${bytes === 1 ? "" : "s"} of image data.`,
|
|
197
|
+
details: {
|
|
198
|
+
capture: {
|
|
199
|
+
id: capture.id,
|
|
200
|
+
kind: capture.kind,
|
|
201
|
+
format: capture.format,
|
|
202
|
+
width: capture.width,
|
|
203
|
+
height: capture.height,
|
|
204
|
+
bytes
|
|
205
|
+
}
|
|
206
|
+
},
|
|
207
|
+
at: now
|
|
208
|
+
};
|
|
209
|
+
return recordoutcome(base, planid, outcome, now);
|
|
210
|
+
}
|
|
211
|
+
function recordpair(progress, planid, stepid, pair, now) {
|
|
212
|
+
const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
|
|
213
|
+
const outcome = {
|
|
214
|
+
stepid,
|
|
215
|
+
ok: true,
|
|
216
|
+
summary: `Paired the before shot ${pair.beforeid} with the after shot ${pair.afterid} around the ${pair.actionkind} action.`,
|
|
217
|
+
details: {
|
|
218
|
+
shotpair: {
|
|
219
|
+
id: pair.id,
|
|
220
|
+
beforeid: pair.beforeid,
|
|
221
|
+
afterid: pair.afterid,
|
|
222
|
+
actionkind: pair.actionkind,
|
|
223
|
+
...pair.target !== void 0 ? { target: pair.target } : {},
|
|
224
|
+
...pair.domsnapshotid !== void 0 ? { domsnapshotid: pair.domsnapshotid } : {}
|
|
225
|
+
}
|
|
226
|
+
},
|
|
227
|
+
at: now
|
|
228
|
+
};
|
|
229
|
+
return recordoutcome(base, planid, outcome, now);
|
|
230
|
+
}
|
|
231
|
+
function captureentries(progress, planid, stepid) {
|
|
232
|
+
if (!progress || progress.planid !== planid) return [];
|
|
233
|
+
return (progress.outcomes ?? []).filter((outcome) => outcome.stepid === stepid && outcome.details?.capture !== void 0).map(
|
|
234
|
+
(outcome) => outcome.details?.capture
|
|
235
|
+
);
|
|
236
|
+
}
|
|
237
|
+
function pairentries(progress, planid, stepid) {
|
|
238
|
+
if (!progress || progress.planid !== planid) return [];
|
|
239
|
+
return (progress.outcomes ?? []).filter((outcome) => outcome.stepid === stepid && outcome.details?.shotpair !== void 0).map(
|
|
240
|
+
(outcome) => outcome.details?.shotpair
|
|
241
|
+
);
|
|
242
|
+
}
|
|
243
|
+
function recordmedia(progress, planid, stepid, media, now) {
|
|
244
|
+
const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
|
|
245
|
+
const outcome = {
|
|
246
|
+
stepid,
|
|
247
|
+
ok: true,
|
|
248
|
+
summary: `Captured a ${media.kind} media record of ${media.scope} scope with ${media.bytes} character${media.bytes === 1 ? "" : "s"} of media data.`,
|
|
249
|
+
details: { media },
|
|
250
|
+
at: now
|
|
251
|
+
};
|
|
252
|
+
return recordoutcome(base, planid, outcome, now);
|
|
253
|
+
}
|
|
254
|
+
function mediaentries(progress, planid, stepid) {
|
|
255
|
+
if (!progress || progress.planid !== planid) return [];
|
|
256
|
+
return (progress.outcomes ?? []).filter((outcome) => outcome.stepid === stepid && outcome.details?.media !== void 0).map((outcome) => outcome.details?.media);
|
|
257
|
+
}
|
|
258
|
+
function recordcall(progress, planid, stepid, entry, now) {
|
|
259
|
+
const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
|
|
260
|
+
const outcome = {
|
|
261
|
+
stepid,
|
|
262
|
+
ok: entry.statusclass === "success",
|
|
263
|
+
summary: `Outbound ${entry.method} ${entry.kind} call to ${entry.origin} ended in the ${entry.status} ${entry.statusclass} class after ${entry.retries} retr${entry.retries === 1 ? "y" : "ies"} and ${entry.bytes} byte${entry.bytes === 1 ? "" : "s"}.`,
|
|
264
|
+
details: { call: entry },
|
|
265
|
+
at: now
|
|
266
|
+
};
|
|
267
|
+
return recordoutcome(base, planid, outcome, now);
|
|
268
|
+
}
|
|
269
|
+
function callentries(progress, planid, stepid) {
|
|
270
|
+
if (!progress || progress.planid !== planid) return [];
|
|
271
|
+
return (progress.outcomes ?? []).filter((outcome) => outcome.stepid === stepid && outcome.details?.call !== void 0).map((outcome) => outcome.details?.call);
|
|
272
|
+
}
|
|
273
|
+
function recordfetchretry(progress, planid, stepid, retry, now) {
|
|
274
|
+
const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
|
|
275
|
+
const outcome = {
|
|
276
|
+
stepid,
|
|
277
|
+
ok: false,
|
|
278
|
+
summary: `Fetch attempt ${retry.attempt} of ${retry.url} failed (${retry.reason}); retrying after a ${retry.wait} millisecond backoff.`,
|
|
279
|
+
details: { fetchretry: retry },
|
|
280
|
+
at: now
|
|
281
|
+
};
|
|
282
|
+
return recordoutcome(base, planid, outcome, now);
|
|
283
|
+
}
|
|
284
|
+
function fetchretryentries(progress, planid, stepid) {
|
|
285
|
+
if (!progress || progress.planid !== planid) return [];
|
|
286
|
+
return (progress.outcomes ?? []).filter((outcome) => outcome.stepid === stepid && outcome.details?.fetchretry !== void 0).map((outcome) => outcome.details?.fetchretry);
|
|
287
|
+
}
|
|
288
|
+
function recordchannel(progress, planid, stepid, entry, now) {
|
|
289
|
+
const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
|
|
290
|
+
const outcome = {
|
|
291
|
+
stepid,
|
|
292
|
+
ok: entry.state !== "failed",
|
|
293
|
+
summary: `The ${entry.kind} channel of ${entry.url} is ${entry.state} after ${entry.sent} sent and ${entry.received} received message${entry.received === 1 ? "" : "s"}.`,
|
|
294
|
+
details: { channel: entry },
|
|
295
|
+
at: now
|
|
296
|
+
};
|
|
297
|
+
return recordoutcome(base, planid, outcome, now);
|
|
298
|
+
}
|
|
299
|
+
function channelentries(progress, planid, stepid) {
|
|
300
|
+
if (!progress || progress.planid !== planid) return [];
|
|
301
|
+
return (progress.outcomes ?? []).filter((outcome) => outcome.stepid === stepid && outcome.details?.channel !== void 0).map((outcome) => outcome.details?.channel);
|
|
302
|
+
}
|
|
303
|
+
function recordexchange(progress, planid, stepid, entry, now) {
|
|
304
|
+
const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
|
|
305
|
+
const outcome = {
|
|
306
|
+
stepid,
|
|
307
|
+
ok: entry.errorclass === void 0 && entry.statusclass === "success",
|
|
308
|
+
summary: `Observed the ${entry.method} request of ${entry.url} as exchange ${entry.correlationid} in the ${entry.status} ${entry.statusclass} class over ${entry.duration} millisecond${entry.duration === 1 ? "" : "s"}${entry.errorclass !== void 0 ? ` failing with the ${entry.errorclass} class` : ""}.`,
|
|
309
|
+
details: { exchange: entry },
|
|
310
|
+
at: now
|
|
311
|
+
};
|
|
312
|
+
return recordoutcome(base, planid, outcome, now);
|
|
313
|
+
}
|
|
314
|
+
function exchangeentries(progress, planid, stepid) {
|
|
315
|
+
if (!progress || progress.planid !== planid) return [];
|
|
316
|
+
return (progress.outcomes ?? []).filter((outcome) => outcome.stepid === stepid && outcome.details?.exchange !== void 0).map((outcome) => outcome.details?.exchange);
|
|
317
|
+
}
|
|
318
|
+
function recordevent(progress, planid, stepid, entry, now) {
|
|
319
|
+
const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
|
|
320
|
+
const outcome = {
|
|
321
|
+
stepid,
|
|
322
|
+
ok: true,
|
|
323
|
+
summary: `The event stream of ${entry.url} observed ${entry.events} ${entry.name || "message"} event${entry.events === 1 ? "" : "s"}${entry.lasteventid !== void 0 ? ` resuming from ${entry.lasteventid}` : ""}.`,
|
|
324
|
+
details: { event: entry },
|
|
325
|
+
at: now
|
|
326
|
+
};
|
|
327
|
+
return recordoutcome(base, planid, outcome, now);
|
|
328
|
+
}
|
|
329
|
+
function evententries(progress, planid, stepid) {
|
|
330
|
+
if (!progress || progress.planid !== planid) return [];
|
|
331
|
+
return (progress.outcomes ?? []).filter((outcome) => outcome.stepid === stepid && outcome.details?.event !== void 0).map((outcome) => outcome.details?.event);
|
|
332
|
+
}
|
|
333
|
+
function recordpoll(progress, planid, stepid, entry, now) {
|
|
334
|
+
const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
|
|
335
|
+
const outcome = {
|
|
336
|
+
stepid,
|
|
337
|
+
ok: true,
|
|
338
|
+
summary: `Long poll ${entry.poll} returned the ${entry.status} status${entry.cursor !== void 0 ? ` at cursor ${entry.cursor}` : ""} and ${entry.stopped ? `stopped: ${entry.reason}` : "continues"}.`,
|
|
339
|
+
details: { poll: entry },
|
|
340
|
+
at: now
|
|
341
|
+
};
|
|
342
|
+
return recordoutcome(base, planid, outcome, now);
|
|
343
|
+
}
|
|
344
|
+
function pollentries(progress, planid, stepid) {
|
|
345
|
+
if (!progress || progress.planid !== planid) return [];
|
|
346
|
+
return (progress.outcomes ?? []).filter((outcome) => outcome.stepid === stepid && outcome.details?.poll !== void 0).map((outcome) => outcome.details?.poll);
|
|
347
|
+
}
|
|
348
|
+
function recordcontrol(progress, planid, stepid, entry, now) {
|
|
349
|
+
const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
|
|
350
|
+
const outcome = {
|
|
351
|
+
stepid,
|
|
352
|
+
ok: true,
|
|
353
|
+
summary: `${entry.reason}: ${entry.applied} applied rule${entry.applied === 1 ? "" : "s"}, ${entry.blocked} blocked request${entry.blocked === 1 ? "" : "s"}, ${entry.mocked} mocked response${entry.mocked === 1 ? "" : "s"} and ${entry.reverts} reverted rule${entry.reverts === 1 ? "" : "s"}.`,
|
|
354
|
+
details: { control: entry },
|
|
355
|
+
at: now
|
|
356
|
+
};
|
|
357
|
+
return recordoutcome(base, planid, outcome, now);
|
|
358
|
+
}
|
|
359
|
+
function controlentries(progress, planid, stepid) {
|
|
360
|
+
if (!progress || progress.planid !== planid) return [];
|
|
361
|
+
return (progress.outcomes ?? []).filter((outcome) => outcome.stepid === stepid && outcome.details?.control !== void 0).map((outcome) => outcome.details?.control);
|
|
362
|
+
}
|
|
363
|
+
function recordupload(progress, planid, stepid, entry, now) {
|
|
364
|
+
const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
|
|
365
|
+
const outcome = {
|
|
366
|
+
stepid,
|
|
367
|
+
ok: true,
|
|
368
|
+
summary: `The multipart upload moved chunk ${entry.chunk} of ${entry.chunks} with ${entry.uploaded} of ${entry.bytes} bytes sent.`,
|
|
369
|
+
details: { upload: entry },
|
|
370
|
+
at: now
|
|
371
|
+
};
|
|
372
|
+
return recordoutcome(base, planid, outcome, now);
|
|
373
|
+
}
|
|
374
|
+
function uploadentries(progress, planid, stepid) {
|
|
375
|
+
if (!progress || progress.planid !== planid) return [];
|
|
376
|
+
return (progress.outcomes ?? []).filter((outcome) => outcome.stepid === stepid && outcome.details?.upload !== void 0).map((outcome) => outcome.details?.upload);
|
|
377
|
+
}
|
|
378
|
+
function recordtimeline(progress, planid, stepid, entry, now) {
|
|
379
|
+
const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
|
|
380
|
+
const outcome = {
|
|
381
|
+
stepid,
|
|
382
|
+
ok: true,
|
|
383
|
+
summary: `Captured ${entry.entries} timeline entr${entry.entries === 1 ? "y" : "ies"} with ${entry.collapsed} collapsed repeat${entry.collapsed === 1 ? "" : "s"}, ${entry.errors} error${entry.errors === 1 ? "" : "s"}, ${entry.rejections} rejection${entry.rejections === 1 ? "" : "s"} and ${entry.longtasks} long task${entry.longtasks === 1 ? "" : "s"}.`,
|
|
384
|
+
details: { timeline: entry },
|
|
385
|
+
at: now
|
|
386
|
+
};
|
|
387
|
+
return recordoutcome(base, planid, outcome, now);
|
|
388
|
+
}
|
|
389
|
+
function timelineevidences(progress, planid, stepid) {
|
|
390
|
+
if (!progress || progress.planid !== planid) return [];
|
|
391
|
+
return (progress.outcomes ?? []).filter((outcome) => outcome.stepid === stepid && outcome.details?.timeline !== void 0).map((outcome) => outcome.details?.timeline);
|
|
392
|
+
}
|
|
393
|
+
function recordcdp(progress, planid, stepid, entry, now) {
|
|
394
|
+
const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
|
|
395
|
+
const summary = entry.family === "command" ? `The reviewed ${entry.method ?? "raw"} command of the ${entry.domain ?? "unknown"} domain returned in ${entry.duration ?? 0} millisecond${(entry.duration ?? 0) === 1 ? "" : "s"}${entry.errorclass !== void 0 ? ` with the ${entry.errorclass} error class` : ""}.` : `The devtools ${entry.family} step ran${entry.domain !== void 0 ? ` on the ${entry.domain} domain` : ""}${entry.events !== void 0 ? ` and matched ${entry.events} event${entry.events === 1 ? "" : "s"}` : ""}${entry.hits !== void 0 ? ` with ${entry.hits} hit${entry.hits === 1 ? "" : "s"}` : ""}${entry.frames !== void 0 ? ` capturing ${entry.frames} call frame${entry.frames === 1 ? "" : "s"}` : ""}.`;
|
|
396
|
+
const outcome = {
|
|
397
|
+
stepid,
|
|
398
|
+
ok: entry.errorclass === void 0,
|
|
399
|
+
summary,
|
|
400
|
+
details: { cdp: entry },
|
|
401
|
+
at: now
|
|
402
|
+
};
|
|
403
|
+
return recordoutcome(base, planid, outcome, now);
|
|
404
|
+
}
|
|
405
|
+
function cdpevidences(progress, planid, stepid) {
|
|
406
|
+
if (!progress || progress.planid !== planid) return [];
|
|
407
|
+
return (progress.outcomes ?? []).filter((outcome) => outcome.stepid === stepid && outcome.details?.cdp !== void 0).map((outcome) => outcome.details?.cdp);
|
|
408
|
+
}
|
|
409
|
+
function recordprofile(progress, planid, stepid, entry, now) {
|
|
410
|
+
const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
|
|
411
|
+
const counts = `${entry.metrics !== void 0 ? `${entry.metrics} metric${entry.metrics === 1 ? "" : "s"}, ` : ""}${entry.samples !== void 0 ? `${entry.samples} sample${entry.samples === 1 ? "" : "s"}, ` : ""}${entry.nodes !== void 0 ? `${entry.nodes} node${entry.nodes === 1 ? "" : "s"}, ` : ""}${entry.events !== void 0 ? `${entry.events} event${entry.events === 1 ? "" : "s"}, ` : ""}${entry.bytes !== void 0 ? `${entry.bytes} byte${entry.bytes === 1 ? "" : "s"}, ` : ""}${entry.flagged !== void 0 ? `${entry.flagged} flagged step${entry.flagged === 1 ? "" : "s"}, ` : ""}`.replace(
|
|
412
|
+
/, $/,
|
|
413
|
+
""
|
|
414
|
+
);
|
|
415
|
+
const outcome = {
|
|
416
|
+
stepid,
|
|
417
|
+
ok: true,
|
|
418
|
+
summary: `The profiling ${entry.family} capture ran${counts.length > 0 ? ` with ${counts}` : ""}.`,
|
|
419
|
+
details: { profile: entry },
|
|
420
|
+
at: now
|
|
421
|
+
};
|
|
422
|
+
return recordoutcome(base, planid, outcome, now);
|
|
423
|
+
}
|
|
424
|
+
function profileevidences(progress, planid, stepid) {
|
|
425
|
+
if (!progress || progress.planid !== planid) return [];
|
|
426
|
+
return (progress.outcomes ?? []).filter((outcome) => outcome.stepid === stepid && outcome.details?.profile !== void 0).map((outcome) => outcome.details?.profile);
|
|
427
|
+
}
|
|
428
|
+
function recordemulation(progress, planid, stepid, entry, now) {
|
|
429
|
+
const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
|
|
430
|
+
const outcome = {
|
|
431
|
+
stepid,
|
|
432
|
+
ok: true,
|
|
433
|
+
summary: `${entry.reason}: ${entry.applied.length} applied layer${entry.applied.length === 1 ? "" : "s"}${entry.applied.length > 0 ? ` (${entry.applied.join(", ")})` : ""} and ${entry.reverted.length} reverted layer${entry.reverted.length === 1 ? "" : "s"}${entry.reverted.length > 0 ? ` (${entry.reverted.join(", ")})` : ""}.`,
|
|
434
|
+
details: { emulation: entry },
|
|
435
|
+
at: now
|
|
436
|
+
};
|
|
437
|
+
return recordoutcome(base, planid, outcome, now);
|
|
438
|
+
}
|
|
439
|
+
function emulationevidences(progress, planid, stepid) {
|
|
440
|
+
if (!progress || progress.planid !== planid) return [];
|
|
441
|
+
return (progress.outcomes ?? []).filter((outcome) => outcome.stepid === stepid && outcome.details?.emulation !== void 0).map((outcome) => outcome.details?.emulation);
|
|
442
|
+
}
|
|
443
|
+
function recordsession(progress, planid, stepid, entry, now) {
|
|
444
|
+
const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
|
|
445
|
+
const counts = `${entry.sections !== void 0 ? `${entry.sections} section${entry.sections === 1 ? "" : "s"}, ` : ""}${entry.matches !== void 0 ? `${entry.matches} match${entry.matches === 1 ? "" : "es"}, ` : ""}${entry.restored !== void 0 ? `${entry.restored} restored tab${entry.restored === 1 ? "" : "s"}, ` : ""}${entry.skipped !== void 0 ? `${entry.skipped} skipped origin${entry.skipped === 1 ? "" : "s"}, ` : ""}${entry.cursor !== void 0 ? `cursor ${entry.cursor}, ` : ""}${entry.bytes !== void 0 ? `${entry.bytes} byte${entry.bytes === 1 ? "" : "s"}, ` : ""}`.replace(
|
|
446
|
+
/, $/,
|
|
447
|
+
""
|
|
448
|
+
);
|
|
449
|
+
const outcome = {
|
|
450
|
+
stepid,
|
|
451
|
+
ok: true,
|
|
452
|
+
summary: `${entry.detail}${counts.length > 0 ? ` with ${counts}` : ""}.`,
|
|
453
|
+
details: { session: entry },
|
|
454
|
+
at: now
|
|
455
|
+
};
|
|
456
|
+
return recordoutcome(base, planid, outcome, now);
|
|
457
|
+
}
|
|
458
|
+
function sessionevidences(progress, planid, stepid) {
|
|
459
|
+
if (!progress || progress.planid !== planid) return [];
|
|
460
|
+
return (progress.outcomes ?? []).filter((outcome) => outcome.stepid === stepid && outcome.details?.session !== void 0).map((outcome) => outcome.details?.session);
|
|
461
|
+
}
|
|
462
|
+
function recordworkflow(progress, planid, stepid, entry, now) {
|
|
463
|
+
const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
|
|
464
|
+
const counts = `${entry.executed !== void 0 ? `${entry.executed} executed step${entry.executed === 1 ? "" : "s"}, ` : ""}${entry.refused !== void 0 ? `${entry.refused} refused step${entry.refused === 1 ? "" : "s"}, ` : ""}${entry.total !== void 0 ? `${entry.total} total step${entry.total === 1 ? "" : "s"}, ` : ""}${entry.iterations !== void 0 ? `${entry.iterations} iteration${entry.iterations === 1 ? "" : "s"}, ` : ""}${entry.denominator !== void 0 ? `denominator ${entry.denominator}, ` : ""}`.replace(
|
|
465
|
+
/, $/,
|
|
466
|
+
""
|
|
467
|
+
);
|
|
468
|
+
const outcome = {
|
|
469
|
+
stepid,
|
|
470
|
+
ok: true,
|
|
471
|
+
summary: `${entry.detail}${counts.length > 0 ? ` with ${counts}` : ""}.`,
|
|
472
|
+
details: { workflow: entry },
|
|
473
|
+
at: now
|
|
474
|
+
};
|
|
475
|
+
return recordoutcome(base, planid, outcome, now);
|
|
476
|
+
}
|
|
477
|
+
function workflowevidences(progress, planid, stepid) {
|
|
478
|
+
if (!progress || progress.planid !== planid) return [];
|
|
479
|
+
return (progress.outcomes ?? []).filter((outcome) => outcome.stepid === stepid && outcome.details?.workflow !== void 0).map((outcome) => outcome.details?.workflow);
|
|
480
|
+
}
|
|
481
|
+
function workflowshare(executed, total) {
|
|
482
|
+
if (total <= 0) return 0;
|
|
483
|
+
return Math.min(1, Math.max(0, executed / total));
|
|
484
|
+
}
|
|
485
|
+
function loopshare(iterations, denominator) {
|
|
486
|
+
if (denominator <= 0) return 0;
|
|
487
|
+
return Math.min(1, Math.max(0, iterations / denominator));
|
|
488
|
+
}
|
|
489
|
+
function recordtrigger(progress, planid, stepid, entry, now) {
|
|
490
|
+
const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
|
|
491
|
+
const counts = `${entry.fires !== void 0 ? `${entry.fires} fire${entry.fires === 1 ? "" : "s"}, ` : ""}${entry.launches !== void 0 ? `${entry.launches} launch${entry.launches === 1 ? "" : "es"}, ` : ""}${entry.suppressions !== void 0 ? `${entry.suppressions} suppression${entry.suppressions === 1 ? "" : "s"}, ` : ""}${entry.queued !== void 0 ? `${entry.queued} queued fire${entry.queued === 1 ? "" : "s"}, ` : ""}`.replace(
|
|
492
|
+
/, $/,
|
|
493
|
+
""
|
|
494
|
+
);
|
|
495
|
+
const outcome = {
|
|
496
|
+
stepid,
|
|
497
|
+
ok: true,
|
|
498
|
+
summary: `${entry.detail}${counts.length > 0 ? ` with ${counts}` : ""}.`,
|
|
499
|
+
details: { trigger: entry },
|
|
500
|
+
at: now
|
|
501
|
+
};
|
|
502
|
+
return recordoutcome(base, planid, outcome, now);
|
|
503
|
+
}
|
|
504
|
+
function triggerevidences(progress, planid, stepid) {
|
|
505
|
+
if (!progress || progress.planid !== planid) return [];
|
|
506
|
+
return (progress.outcomes ?? []).filter((outcome) => outcome.stepid === stepid && outcome.details?.trigger !== void 0).map((outcome) => outcome.details?.trigger);
|
|
507
|
+
}
|
|
508
|
+
function recordtoolcall(progress, planid, stepid, entry, now) {
|
|
509
|
+
const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
|
|
510
|
+
const outcome = {
|
|
511
|
+
stepid,
|
|
512
|
+
ok: entry.ok,
|
|
513
|
+
summary: `The ${entry.tool} tool call of the client ${entry.clientid} ${entry.ok ? "ran behind the consent gates" : `was refused${entry.code !== void 0 ? ` with the ${entry.code} error` : ""}`}.`,
|
|
514
|
+
details: { tool: entry },
|
|
515
|
+
at: now
|
|
516
|
+
};
|
|
517
|
+
return recordoutcome(base, planid, outcome, now);
|
|
518
|
+
}
|
|
519
|
+
function toolcallevidences(progress, planid, stepid) {
|
|
520
|
+
if (!progress || progress.planid !== planid) return [];
|
|
521
|
+
return (progress.outcomes ?? []).filter((outcome) => outcome.stepid === stepid && outcome.details?.tool !== void 0).map((outcome) => outcome.details?.tool);
|
|
522
|
+
}
|
|
523
|
+
function recorddenied(progress, planid, stepid, entry, now) {
|
|
524
|
+
const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
|
|
525
|
+
const outcome = {
|
|
526
|
+
stepid,
|
|
527
|
+
ok: false,
|
|
528
|
+
summary: `The ${entry.kind} step on ${entry.origin} was denied: ${entry.reason}`,
|
|
529
|
+
details: { denied: entry },
|
|
530
|
+
at: now
|
|
531
|
+
};
|
|
532
|
+
return recordoutcome(base, planid, outcome, now);
|
|
533
|
+
}
|
|
534
|
+
function deniedevidences(progress, planid, stepid) {
|
|
535
|
+
if (!progress || progress.planid !== planid) return [];
|
|
536
|
+
return (progress.outcomes ?? []).filter((outcome) => outcome.stepid === stepid && outcome.details?.denied !== void 0).map((outcome) => outcome.details?.denied);
|
|
537
|
+
}
|
|
538
|
+
function recordrevocation(progress, planid, stepid, entry, now) {
|
|
539
|
+
const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
|
|
540
|
+
const outcome = {
|
|
541
|
+
stepid,
|
|
542
|
+
ok: false,
|
|
543
|
+
summary: `The run halted at the step ${stepid}${entry.haltedstepids.length > 1 ? ` with ${entry.haltedstepids.length - 1} queued step${entry.haltedstepids.length === 2 ? "" : "s"} rolled back` : ""}: ${entry.reason}`,
|
|
544
|
+
details: { revoked: entry },
|
|
545
|
+
at: now
|
|
546
|
+
};
|
|
547
|
+
return recordoutcome(base, planid, outcome, now);
|
|
548
|
+
}
|
|
549
|
+
function revocationevidences(progress, planid, stepid) {
|
|
550
|
+
if (!progress || progress.planid !== planid) return [];
|
|
551
|
+
return (progress.outcomes ?? []).filter((outcome) => outcome.stepid === stepid && outcome.details?.revoked !== void 0).map((outcome) => outcome.details?.revoked);
|
|
552
|
+
}
|
|
553
|
+
function replayprogress(progress, planid) {
|
|
554
|
+
if (!progress || progress.planid !== planid) return { planid, entries: [] };
|
|
555
|
+
const entries = (progress.outcomes ?? []).map((outcome, index) => ({
|
|
556
|
+
index,
|
|
557
|
+
stepid: outcome.stepid,
|
|
558
|
+
ok: outcome.ok,
|
|
559
|
+
summary: outcome.summary,
|
|
560
|
+
at: outcome.at,
|
|
561
|
+
...outcome.provenance !== void 0 ? { provenance: outcome.provenance } : {}
|
|
562
|
+
}));
|
|
563
|
+
return { planid, entries, ...progress.provenance !== void 0 ? { provenance: progress.provenance } : {} };
|
|
564
|
+
}
|
|
565
|
+
export {
|
|
566
|
+
assigntasktab,
|
|
567
|
+
callentries,
|
|
568
|
+
captureentries,
|
|
569
|
+
cdpevidences,
|
|
570
|
+
channelentries,
|
|
571
|
+
controlentries,
|
|
572
|
+
deltasof,
|
|
573
|
+
deniedevidences,
|
|
574
|
+
downloadentries,
|
|
575
|
+
downloadshare,
|
|
576
|
+
emptyprogress,
|
|
577
|
+
emulationevidences,
|
|
578
|
+
environmentof,
|
|
579
|
+
evententries,
|
|
580
|
+
exchangeentries,
|
|
581
|
+
extractionentries,
|
|
582
|
+
extractionshare,
|
|
583
|
+
fetchretryentries,
|
|
584
|
+
gatewaitof,
|
|
585
|
+
iscomplete,
|
|
586
|
+
loopshare,
|
|
587
|
+
mediaentries,
|
|
588
|
+
naventries,
|
|
589
|
+
pairentries,
|
|
590
|
+
perfof,
|
|
591
|
+
pollentries,
|
|
592
|
+
profileevidences,
|
|
593
|
+
progressnow,
|
|
594
|
+
provenancestampof,
|
|
595
|
+
recordcall,
|
|
596
|
+
recordcapture,
|
|
597
|
+
recordcdp,
|
|
598
|
+
recordchannel,
|
|
599
|
+
recordcontrol,
|
|
600
|
+
recorddeltas,
|
|
601
|
+
recorddenied,
|
|
602
|
+
recorddownload,
|
|
603
|
+
recordemulation,
|
|
604
|
+
recordenvironment,
|
|
605
|
+
recordevent,
|
|
606
|
+
recordexchange,
|
|
607
|
+
recordextraction,
|
|
608
|
+
recordfetchretry,
|
|
609
|
+
recordgatewait,
|
|
610
|
+
recordmedia,
|
|
611
|
+
recordnaventry,
|
|
612
|
+
recordoutcome,
|
|
613
|
+
recordoutcomewithclock,
|
|
614
|
+
recordpair,
|
|
615
|
+
recordperf,
|
|
616
|
+
recordpoll,
|
|
617
|
+
recordprofile,
|
|
618
|
+
recordrevocation,
|
|
619
|
+
recordsession,
|
|
620
|
+
recordstep,
|
|
621
|
+
recordtimeline,
|
|
622
|
+
recordtoolcall,
|
|
623
|
+
recordtrigger,
|
|
624
|
+
recordturnaround,
|
|
625
|
+
recordupload,
|
|
626
|
+
recordwatchcompletion,
|
|
627
|
+
recordwizardstep,
|
|
628
|
+
recordworkflow,
|
|
629
|
+
releasetasktab,
|
|
630
|
+
replayprogress,
|
|
631
|
+
resetforplan,
|
|
632
|
+
revocationevidences,
|
|
633
|
+
sessionevidences,
|
|
634
|
+
tasktabs,
|
|
635
|
+
timelineevidences,
|
|
636
|
+
toolcallevidences,
|
|
637
|
+
triggerevidences,
|
|
638
|
+
turnaroundof,
|
|
639
|
+
uploadentries,
|
|
640
|
+
watchclosed,
|
|
641
|
+
wizardcompletion,
|
|
642
|
+
workflowevidences,
|
|
643
|
+
workflowshare
|
|
644
|
+
};
|
|
645
|
+
//# sourceMappingURL=progress.js.map
|