codeloop-mcp-server 0.1.20 → 0.1.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/evidence/interaction_coverage.d.ts +47 -3
- package/dist/evidence/interaction_coverage.d.ts.map +1 -1
- package/dist/evidence/interaction_coverage.js +234 -17
- package/dist/evidence/interaction_coverage.js.map +1 -1
- package/dist/evidence/verification_log.d.ts +77 -0
- package/dist/evidence/verification_log.d.ts.map +1 -0
- package/dist/evidence/verification_log.js +160 -0
- package/dist/evidence/verification_log.js.map +1 -0
- package/dist/index.js +281 -39
- package/dist/index.js.map +1 -1
- package/dist/runners/base.d.ts.map +1 -1
- package/dist/runners/base.js +122 -6
- package/dist/runners/base.js.map +1 -1
- package/dist/runners/win_accessibility.d.ts +40 -0
- package/dist/runners/win_accessibility.d.ts.map +1 -1
- package/dist/runners/win_accessibility.js +198 -29
- package/dist/runners/win_accessibility.js.map +1 -1
- package/dist/runners/window_manager.d.ts +1 -0
- package/dist/runners/window_manager.d.ts.map +1 -1
- package/dist/runners/window_manager.js +33 -3
- package/dist/runners/window_manager.js.map +1 -1
- package/dist/tools/design_compare.d.ts.map +1 -1
- package/dist/tools/design_compare.js +116 -8
- package/dist/tools/design_compare.js.map +1 -1
- package/dist/tools/discover_interactions.d.ts +59 -0
- package/dist/tools/discover_interactions.d.ts.map +1 -0
- package/dist/tools/discover_interactions.js +392 -0
- package/dist/tools/discover_interactions.js.map +1 -0
- package/dist/tools/gate_check.d.ts.map +1 -1
- package/dist/tools/gate_check.js +62 -4
- package/dist/tools/gate_check.js.map +1 -1
- package/dist/tools/interaction_replay.d.ts.map +1 -1
- package/dist/tools/interaction_replay.js +75 -0
- package/dist/tools/interaction_replay.js.map +1 -1
- package/package.json +1 -1
|
@@ -34,6 +34,16 @@ export interface InteractionCoverage {
|
|
|
34
34
|
unique_screens: number;
|
|
35
35
|
/** Aggregate "depth points" — successful actions in buckets that exercise app state. */
|
|
36
36
|
depth_actions: number;
|
|
37
|
+
/**
|
|
38
|
+
* Sub-categories of `input` used by the discovery-driven gate:
|
|
39
|
+
* - ai_prompts: successful `type` / setValue actions whose text payload
|
|
40
|
+
* is >= 30 characters (proxy for "this is a real prompt, not just
|
|
41
|
+
* a one-character field-fill").
|
|
42
|
+
* - datagrid_edits: best-effort count of inputs whose selector hints
|
|
43
|
+
* a grid/cell/datagrid context.
|
|
44
|
+
*/
|
|
45
|
+
substantive_prompts: number;
|
|
46
|
+
datagrid_edits: number;
|
|
37
47
|
}
|
|
38
48
|
export interface DepthMinimums {
|
|
39
49
|
enabled: boolean;
|
|
@@ -45,6 +55,12 @@ export interface DepthMinimums {
|
|
|
45
55
|
toggle: number;
|
|
46
56
|
gesture: number;
|
|
47
57
|
upload: number;
|
|
58
|
+
discovery_coverage: {
|
|
59
|
+
input_fraction: number;
|
|
60
|
+
ai_prompts: number;
|
|
61
|
+
upload_when_drop_zone: number;
|
|
62
|
+
datagrid_edits: number;
|
|
63
|
+
};
|
|
48
64
|
}
|
|
49
65
|
export declare const DEFAULT_DEPTH_MINIMUMS: DepthMinimums;
|
|
50
66
|
/**
|
|
@@ -52,11 +68,17 @@ export declare const DEFAULT_DEPTH_MINIMUMS: DepthMinimums;
|
|
|
52
68
|
* directory. Runs without logs are skipped silently.
|
|
53
69
|
*/
|
|
54
70
|
export declare function collectInteractionCoverage(cwd: string): InteractionCoverage;
|
|
71
|
+
export interface DiscoverySnapshot {
|
|
72
|
+
inputs: number;
|
|
73
|
+
upload_areas: number;
|
|
74
|
+
datagrids: number;
|
|
75
|
+
ai_features_detected: boolean;
|
|
76
|
+
}
|
|
55
77
|
export interface DepthVerdict {
|
|
56
78
|
passed: boolean;
|
|
57
79
|
reason: string;
|
|
58
80
|
shortfalls: Array<{
|
|
59
|
-
bucket: keyof InteractionBuckets | "total_successful";
|
|
81
|
+
bucket: keyof InteractionBuckets | "total_successful" | "input_coverage" | "ai_prompts" | "upload_when_drop_zone" | "datagrid_edits";
|
|
60
82
|
required: number;
|
|
61
83
|
have: number;
|
|
62
84
|
}>;
|
|
@@ -66,10 +88,32 @@ export interface DepthVerdict {
|
|
|
66
88
|
* the verdict plus a human-readable reason that lists EVERY shortfall —
|
|
67
89
|
* the agent uses this to know which buckets to fill in before re-gating.
|
|
68
90
|
*/
|
|
69
|
-
export declare function evaluateDepth(coverage: InteractionCoverage, minimums: DepthMinimums): DepthVerdict;
|
|
91
|
+
export declare function evaluateDepth(coverage: InteractionCoverage, minimums: DepthMinimums, discovery?: DiscoverySnapshot): DepthVerdict;
|
|
70
92
|
/**
|
|
71
93
|
* Merge user-supplied minimums onto DEFAULT_DEPTH_MINIMUMS. Unknown / non-numeric
|
|
72
94
|
* fields fall back to the default.
|
|
73
95
|
*/
|
|
74
|
-
|
|
96
|
+
/**
|
|
97
|
+
* Permissive shape for user overrides — every field is optional, and
|
|
98
|
+
* `discovery_coverage` itself can be partial (a project that only wants
|
|
99
|
+
* to override `ai_prompts` shouldn't have to declare the others).
|
|
100
|
+
*/
|
|
101
|
+
export type DepthMinimumsOverride = {
|
|
102
|
+
enabled?: boolean;
|
|
103
|
+
total_successful?: number;
|
|
104
|
+
input?: number;
|
|
105
|
+
commit?: number;
|
|
106
|
+
click?: number;
|
|
107
|
+
navigation?: number;
|
|
108
|
+
toggle?: number;
|
|
109
|
+
gesture?: number;
|
|
110
|
+
upload?: number;
|
|
111
|
+
discovery_coverage?: {
|
|
112
|
+
input_fraction?: number;
|
|
113
|
+
ai_prompts?: number;
|
|
114
|
+
upload_when_drop_zone?: number;
|
|
115
|
+
datagrid_edits?: number;
|
|
116
|
+
};
|
|
117
|
+
};
|
|
118
|
+
export declare function resolveDepthMinimums(override: DepthMinimumsOverride | undefined): DepthMinimums;
|
|
75
119
|
//# sourceMappingURL=interaction_coverage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interaction_coverage.d.ts","sourceRoot":"","sources":["../../src/evidence/interaction_coverage.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,kBAAkB,CAAC;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,wFAAwF;IACxF,aAAa,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"interaction_coverage.d.ts","sourceRoot":"","sources":["../../src/evidence/interaction_coverage.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,12 @@ export const DEFAULT_DEPTH_MINIMUMS = {
|
|
|
11
11
|
toggle: 0,
|
|
12
12
|
gesture: 0,
|
|
13
13
|
upload: 0,
|
|
14
|
+
discovery_coverage: {
|
|
15
|
+
input_fraction: 0.30,
|
|
16
|
+
ai_prompts: 3,
|
|
17
|
+
upload_when_drop_zone: 1,
|
|
18
|
+
datagrid_edits: 1,
|
|
19
|
+
},
|
|
14
20
|
};
|
|
15
21
|
function emptyBuckets() {
|
|
16
22
|
return {
|
|
@@ -66,10 +72,36 @@ function bucketOne(entry, buckets) {
|
|
|
66
72
|
const action = (entry.action ?? "").toLowerCase();
|
|
67
73
|
const args = entry.input_args ?? {};
|
|
68
74
|
const success = entry.success !== false; // default to true when absent
|
|
69
|
-
// `sequence` is a batch wrapper
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
75
|
+
// `sequence` is a batch wrapper. The runner records each child step as
|
|
76
|
+
// `inputArgs.steps = [{ action, input_args }, ...]` so the classifier
|
|
77
|
+
// can credit each child into its proper bucket. (Older recordings only
|
|
78
|
+
// carried `step_count` — for those we fall back to crediting clicks.)
|
|
79
|
+
if (action === "sequence") {
|
|
80
|
+
const stepsField = args.steps;
|
|
81
|
+
if (Array.isArray(stepsField)) {
|
|
82
|
+
for (const child of stepsField)
|
|
83
|
+
bucketOne(child, buckets);
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
const sc = args.step_count;
|
|
87
|
+
if (typeof sc === "number" && sc > 0 && success)
|
|
88
|
+
buckets.click += sc;
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
// `maestro_flow` is the mobile equivalent — a single MCP call runs N
|
|
92
|
+
// child gestures. We persist `maestro_steps: [{ action }, ...]` so each
|
|
93
|
+
// Maestro action (tapOn, inputText, swipeUp, scroll, …) maps into the
|
|
94
|
+
// right bucket. Fallback to `maestro_step_count` clicks for older logs.
|
|
95
|
+
if (action === "maestro_flow") {
|
|
96
|
+
const maestroSteps = args.maestro_steps;
|
|
97
|
+
if (Array.isArray(maestroSteps)) {
|
|
98
|
+
for (const child of maestroSteps)
|
|
99
|
+
bucketMaestroStep(child, buckets, success);
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
const mc = args.maestro_step_count;
|
|
103
|
+
if (typeof mc === "number" && mc > 0 && success)
|
|
104
|
+
buckets.click += mc;
|
|
73
105
|
return;
|
|
74
106
|
}
|
|
75
107
|
if (!success) {
|
|
@@ -96,8 +128,12 @@ function bucketOne(entry, buckets) {
|
|
|
96
128
|
buckets.commit += 1;
|
|
97
129
|
return;
|
|
98
130
|
case "fill_form": {
|
|
99
|
-
|
|
100
|
-
|
|
131
|
+
// The runner logs `field_count` (scalar). Older snapshots carried a
|
|
132
|
+
// `fields` array — accept either so we don't regress on existing logs.
|
|
133
|
+
const fc = typeof args.field_count === "number" ? args.field_count : undefined;
|
|
134
|
+
const arr = Array.isArray(args.fields) ? args.fields.length : undefined;
|
|
135
|
+
const n = fc ?? arr ?? 1;
|
|
136
|
+
buckets.input += Math.max(1, n);
|
|
101
137
|
if (args.submit_selector || args.submit)
|
|
102
138
|
buckets.commit += 1;
|
|
103
139
|
return;
|
|
@@ -143,8 +179,12 @@ function bucketOne(entry, buckets) {
|
|
|
143
179
|
buckets.keystroke += 1;
|
|
144
180
|
return;
|
|
145
181
|
case "win_ui_automate": {
|
|
146
|
-
// Sub-action
|
|
147
|
-
|
|
182
|
+
// Sub-action is logged as `automation_action` (the runner uses
|
|
183
|
+
// `params.automation_action`; we also accept the older `action`
|
|
184
|
+
// synonym just in case a hand-built log entry uses it).
|
|
185
|
+
const sub = args.automation_action?.toLowerCase() ??
|
|
186
|
+
args.action?.toLowerCase() ??
|
|
187
|
+
"";
|
|
148
188
|
if (sub === "setvalue" || sub === "set_value") {
|
|
149
189
|
buckets.input += 1;
|
|
150
190
|
}
|
|
@@ -163,11 +203,85 @@ function bucketOne(entry, buckets) {
|
|
|
163
203
|
}
|
|
164
204
|
return;
|
|
165
205
|
}
|
|
206
|
+
// Mobile OS-level prompts — the user is tapping OK on a permission
|
|
207
|
+
// dialog or unlocking with biometrics. These ARE interactions with
|
|
208
|
+
// the running app, so credit a click.
|
|
209
|
+
case "grant_permission":
|
|
210
|
+
case "biometric_auth":
|
|
211
|
+
buckets.click += 1;
|
|
212
|
+
return;
|
|
213
|
+
// Mobile lifecycle / test-fixture actions. They configure the device
|
|
214
|
+
// or test environment but don't exercise the app's UI, so they stay
|
|
215
|
+
// in `other` and don't satisfy any depth bucket.
|
|
216
|
+
case "launch_app":
|
|
217
|
+
case "clear_app_data":
|
|
218
|
+
case "mock_location":
|
|
219
|
+
case "simulate_network":
|
|
220
|
+
buckets.other += 1;
|
|
221
|
+
return;
|
|
166
222
|
default:
|
|
167
223
|
buckets.other += 1;
|
|
168
224
|
return;
|
|
169
225
|
}
|
|
170
226
|
}
|
|
227
|
+
/**
|
|
228
|
+
* Bucket a single Maestro child step. Maestro YAML uses a different
|
|
229
|
+
* vocabulary than codeloop_interact: `tapOn`, `inputText`, `swipeUp`,
|
|
230
|
+
* `scroll`, `back`, `launchApp`, `waitForElement`, etc.
|
|
231
|
+
*/
|
|
232
|
+
/**
|
|
233
|
+
* The runner records Maestro children either as Maestro-YAML camelCase
|
|
234
|
+
* keys (`tapOn`, `inputText`, `pressBack`, `launchApp`, …) when the agent
|
|
235
|
+
* sends explicit objects, OR as the natural-language first word the user
|
|
236
|
+
* passed (`tap`, `type`, `swipe`, `scroll`, `launch`, `press`, `back`)
|
|
237
|
+
* after we tokenise the `maestro_steps: string[]` payload. This function
|
|
238
|
+
* handles both surfaces.
|
|
239
|
+
*/
|
|
240
|
+
function bucketMaestroStep(child, buckets, parentOk) {
|
|
241
|
+
if (!parentOk)
|
|
242
|
+
return;
|
|
243
|
+
const action = (child.action ?? "").toLowerCase();
|
|
244
|
+
// tap / tapOn / doubleTapOn (string-form: "tap")
|
|
245
|
+
if (action === "tap" || action === "tapon" || action === "doubletapon") {
|
|
246
|
+
buckets.click += 1;
|
|
247
|
+
return;
|
|
248
|
+
}
|
|
249
|
+
// type (string-form) / inputText (yaml-form)
|
|
250
|
+
if (action === "type" || action === "inputtext" || action === "input_text" || action === "enter_text") {
|
|
251
|
+
buckets.input += 1;
|
|
252
|
+
return;
|
|
253
|
+
}
|
|
254
|
+
// back / pressBack / press_back
|
|
255
|
+
if (action === "back" || action === "pressback" || action === "press_back") {
|
|
256
|
+
buckets.navigation += 1;
|
|
257
|
+
return;
|
|
258
|
+
}
|
|
259
|
+
// launch / launchApp
|
|
260
|
+
if (action === "launch" || action === "launchapp" || action === "launch_app") {
|
|
261
|
+
buckets.other += 1;
|
|
262
|
+
return;
|
|
263
|
+
}
|
|
264
|
+
// swipe / scroll / longPress (string-form first word)
|
|
265
|
+
if (action === "swipe" ||
|
|
266
|
+
action === "scroll" ||
|
|
267
|
+
action === "longpress" ||
|
|
268
|
+
action === "long_press" ||
|
|
269
|
+
action.startsWith("swipe") ||
|
|
270
|
+
action.startsWith("scroll")) {
|
|
271
|
+
buckets.gesture += 1;
|
|
272
|
+
return;
|
|
273
|
+
}
|
|
274
|
+
// open / openUrl / deeplink
|
|
275
|
+
if (action === "open" || action === "openurl" || action === "open_url" || action === "deeplink") {
|
|
276
|
+
buckets.navigation += 1;
|
|
277
|
+
return;
|
|
278
|
+
}
|
|
279
|
+
if (action === "press" || action === "presskey" || action === "press_key") {
|
|
280
|
+
buckets.keystroke += 1;
|
|
281
|
+
return;
|
|
282
|
+
}
|
|
283
|
+
buckets.other += 1;
|
|
284
|
+
}
|
|
171
285
|
function parseLogFile(path) {
|
|
172
286
|
try {
|
|
173
287
|
const raw = readFileSync(path, "utf-8");
|
|
@@ -210,7 +324,15 @@ export function collectInteractionCoverage(cwd) {
|
|
|
210
324
|
const buckets = emptyBuckets();
|
|
211
325
|
const allEntries = [];
|
|
212
326
|
if (!existsSync(baseDir)) {
|
|
213
|
-
return {
|
|
327
|
+
return {
|
|
328
|
+
total: 0,
|
|
329
|
+
successful: 0,
|
|
330
|
+
buckets,
|
|
331
|
+
unique_screens: 0,
|
|
332
|
+
depth_actions: 0,
|
|
333
|
+
substantive_prompts: 0,
|
|
334
|
+
datagrid_edits: 0,
|
|
335
|
+
};
|
|
214
336
|
}
|
|
215
337
|
const runs = listRuns(baseDir);
|
|
216
338
|
for (const runId of runs) {
|
|
@@ -235,12 +357,51 @@ export function collectInteractionCoverage(cwd) {
|
|
|
235
357
|
buckets.upload +
|
|
236
358
|
buckets.click +
|
|
237
359
|
buckets.keystroke;
|
|
360
|
+
// Substantive-prompt and datagrid-edit accounting. Walk every type-y
|
|
361
|
+
// entry (and every win_ui_automate setValue) — including children of
|
|
362
|
+
// sequence batches — to credit AI prompts and grid cell edits.
|
|
363
|
+
let substantivePrompts = 0;
|
|
364
|
+
let datagridEdits = 0;
|
|
365
|
+
function inspect(entry) {
|
|
366
|
+
const action = (entry.action ?? "").toLowerCase();
|
|
367
|
+
const args = entry.input_args ?? {};
|
|
368
|
+
if (entry.success === false)
|
|
369
|
+
return;
|
|
370
|
+
if (action === "sequence") {
|
|
371
|
+
const stepsField = args.steps;
|
|
372
|
+
if (Array.isArray(stepsField))
|
|
373
|
+
for (const c of stepsField)
|
|
374
|
+
inspect(c);
|
|
375
|
+
return;
|
|
376
|
+
}
|
|
377
|
+
const text = typeof args.text === "string" ? args.text : "";
|
|
378
|
+
const sub = args.automation_action?.toLowerCase() ?? "";
|
|
379
|
+
const valueText = action === "win_ui_automate" && (sub === "setvalue" || sub === "set_value")
|
|
380
|
+
? (typeof args.value === "string" ? args.value : typeof args.text === "string" ? args.text : "")
|
|
381
|
+
: "";
|
|
382
|
+
const isTypeAction = action === "type" || action === "type_and_submit" || action === "type_and_tab" || action === "fill";
|
|
383
|
+
const effectiveText = isTypeAction ? text : valueText;
|
|
384
|
+
if (effectiveText.length >= 30)
|
|
385
|
+
substantivePrompts += 1;
|
|
386
|
+
const selectorHints = [args.selector, args.target, args.app_name]
|
|
387
|
+
.filter((v) => typeof v === "string")
|
|
388
|
+
.map((v) => v.toLowerCase())
|
|
389
|
+
.join(" ");
|
|
390
|
+
if ((isTypeAction || (action === "win_ui_automate" && (sub === "setvalue" || sub === "set_value"))) &&
|
|
391
|
+
/\b(datagrid|grid|cell|row[\d_]|column[\d_]|tablerow|datatable)\b/.test(selectorHints)) {
|
|
392
|
+
datagridEdits += 1;
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
for (const e of allEntries)
|
|
396
|
+
inspect(e);
|
|
238
397
|
return {
|
|
239
398
|
total,
|
|
240
399
|
successful,
|
|
241
400
|
buckets,
|
|
242
401
|
unique_screens: uniqueScreens(allEntries),
|
|
243
402
|
depth_actions: depthActions,
|
|
403
|
+
substantive_prompts: substantivePrompts,
|
|
404
|
+
datagrid_edits: datagridEdits,
|
|
244
405
|
};
|
|
245
406
|
}
|
|
246
407
|
/**
|
|
@@ -248,7 +409,7 @@ export function collectInteractionCoverage(cwd) {
|
|
|
248
409
|
* the verdict plus a human-readable reason that lists EVERY shortfall —
|
|
249
410
|
* the agent uses this to know which buckets to fill in before re-gating.
|
|
250
411
|
*/
|
|
251
|
-
export function evaluateDepth(coverage, minimums) {
|
|
412
|
+
export function evaluateDepth(coverage, minimums, discovery) {
|
|
252
413
|
if (!minimums.enabled) {
|
|
253
414
|
return {
|
|
254
415
|
passed: true,
|
|
@@ -267,9 +428,42 @@ export function evaluateDepth(coverage, minimums) {
|
|
|
267
428
|
{ bucket: "gesture", required: minimums.gesture, have: coverage.buckets.gesture },
|
|
268
429
|
{ bucket: "upload", required: minimums.upload, have: coverage.buckets.upload },
|
|
269
430
|
];
|
|
431
|
+
// Discovery-driven minimums — only apply when a snapshot was passed
|
|
432
|
+
// in. The snapshot comes from codeloop_discover_interactions; the
|
|
433
|
+
// gate calls it (cached) and includes counts here so a project with
|
|
434
|
+
// 30 input fields can't pass with input=3, an AI-feature project
|
|
435
|
+
// can't pass without real prompts, etc.
|
|
436
|
+
if (discovery) {
|
|
437
|
+
if (minimums.discovery_coverage.input_fraction > 0 && discovery.inputs > 0) {
|
|
438
|
+
const required = Math.max(minimums.input, Math.ceil(discovery.inputs * minimums.discovery_coverage.input_fraction));
|
|
439
|
+
if (coverage.buckets.input < required) {
|
|
440
|
+
checks.push({ bucket: "input_coverage", required, have: coverage.buckets.input });
|
|
441
|
+
shortfalls.push({ bucket: "input_coverage", required, have: coverage.buckets.input });
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
if (discovery.ai_features_detected && minimums.discovery_coverage.ai_prompts > 0) {
|
|
445
|
+
const required = minimums.discovery_coverage.ai_prompts;
|
|
446
|
+
if (coverage.substantive_prompts < required) {
|
|
447
|
+
shortfalls.push({ bucket: "ai_prompts", required, have: coverage.substantive_prompts });
|
|
448
|
+
}
|
|
449
|
+
}
|
|
450
|
+
if (discovery.upload_areas > 0 && minimums.discovery_coverage.upload_when_drop_zone > 0) {
|
|
451
|
+
const required = minimums.discovery_coverage.upload_when_drop_zone;
|
|
452
|
+
if (coverage.buckets.upload < required) {
|
|
453
|
+
shortfalls.push({ bucket: "upload_when_drop_zone", required, have: coverage.buckets.upload });
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
if (discovery.datagrids > 0 && minimums.discovery_coverage.datagrid_edits > 0) {
|
|
457
|
+
const required = minimums.discovery_coverage.datagrid_edits;
|
|
458
|
+
if (coverage.datagrid_edits < required) {
|
|
459
|
+
shortfalls.push({ bucket: "datagrid_edits", required, have: coverage.datagrid_edits });
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
}
|
|
270
463
|
for (const c of checks) {
|
|
271
|
-
if (c.required > 0 && c.have < c.required)
|
|
464
|
+
if (c.required > 0 && c.have < c.required && !shortfalls.some((s) => s.bucket === c.bucket)) {
|
|
272
465
|
shortfalls.push(c);
|
|
466
|
+
}
|
|
273
467
|
}
|
|
274
468
|
if (shortfalls.length === 0) {
|
|
275
469
|
const b = coverage.buckets;
|
|
@@ -293,6 +487,18 @@ function buildHint(shortfalls) {
|
|
|
293
487
|
if (has("input")) {
|
|
294
488
|
tips.push('Fill input fields with codeloop_interact action: "type" or "fill_form" (or "win_ui_automate" with action: "setValue" on a WPF TextBox).');
|
|
295
489
|
}
|
|
490
|
+
if (has("input_coverage")) {
|
|
491
|
+
tips.push('Discovery found more input fields than you typed into. Call codeloop_discover_interactions to enumerate them, then exercise at least 30% with type / setValue actions.');
|
|
492
|
+
}
|
|
493
|
+
if (has("ai_prompts")) {
|
|
494
|
+
tips.push('Discovery detected AI features in the source. Type at least one substantive prompt (>= 30 characters) into the AI input and submit it; repeat for at least 3 prompts to exercise the AI loop (multi-turn / tool routing / RAG scoping).');
|
|
495
|
+
}
|
|
496
|
+
if (has("upload_when_drop_zone")) {
|
|
497
|
+
tips.push('Discovery found a file-upload / drop zone. Call codeloop_interact with action: "upload_file" (web) or drag-drop a sample file from artifacts/test_files/ to exercise the upload path.');
|
|
498
|
+
}
|
|
499
|
+
if (has("datagrid_edits")) {
|
|
500
|
+
tips.push('Discovery found a DataGrid / DataTable. Click a cell and type into it, OR use win_ui_automate with action: "setValue" on a Cell automationId, OR use fill_form on a grid row.');
|
|
501
|
+
}
|
|
296
502
|
if (has("commit")) {
|
|
297
503
|
tips.push('Submit at least one form: click a button whose name contains submit/save/update/login/signup, or send action "type_and_submit" / "hotkey" enter after typing.');
|
|
298
504
|
}
|
|
@@ -316,14 +522,13 @@ function buildHint(shortfalls) {
|
|
|
316
522
|
}
|
|
317
523
|
return tips.length > 0 ? `Next steps:\n * ${tips.join("\n * ")}` : "";
|
|
318
524
|
}
|
|
319
|
-
/**
|
|
320
|
-
* Merge user-supplied minimums onto DEFAULT_DEPTH_MINIMUMS. Unknown / non-numeric
|
|
321
|
-
* fields fall back to the default.
|
|
322
|
-
*/
|
|
323
525
|
export function resolveDepthMinimums(override) {
|
|
324
526
|
if (!override)
|
|
325
|
-
return DEFAULT_DEPTH_MINIMUMS;
|
|
326
|
-
const out = {
|
|
527
|
+
return { ...DEFAULT_DEPTH_MINIMUMS, discovery_coverage: { ...DEFAULT_DEPTH_MINIMUMS.discovery_coverage } };
|
|
528
|
+
const out = {
|
|
529
|
+
...DEFAULT_DEPTH_MINIMUMS,
|
|
530
|
+
discovery_coverage: { ...DEFAULT_DEPTH_MINIMUMS.discovery_coverage },
|
|
531
|
+
};
|
|
327
532
|
if (typeof override.enabled === "boolean")
|
|
328
533
|
out.enabled = override.enabled;
|
|
329
534
|
const numFields = [
|
|
@@ -342,6 +547,18 @@ export function resolveDepthMinimums(override) {
|
|
|
342
547
|
out[k] = v;
|
|
343
548
|
}
|
|
344
549
|
}
|
|
550
|
+
if (override.discovery_coverage) {
|
|
551
|
+
const dc = override.discovery_coverage;
|
|
552
|
+
const dcOut = out.discovery_coverage;
|
|
553
|
+
if (typeof dc.input_fraction === "number" && dc.input_fraction >= 0 && dc.input_fraction <= 1)
|
|
554
|
+
dcOut.input_fraction = dc.input_fraction;
|
|
555
|
+
if (typeof dc.ai_prompts === "number" && dc.ai_prompts >= 0)
|
|
556
|
+
dcOut.ai_prompts = dc.ai_prompts;
|
|
557
|
+
if (typeof dc.upload_when_drop_zone === "number" && dc.upload_when_drop_zone >= 0)
|
|
558
|
+
dcOut.upload_when_drop_zone = dc.upload_when_drop_zone;
|
|
559
|
+
if (typeof dc.datagrid_edits === "number" && dc.datagrid_edits >= 0)
|
|
560
|
+
dcOut.datagrid_edits = dc.datagrid_edits;
|
|
561
|
+
}
|
|
345
562
|
return out;
|
|
346
563
|
}
|
|
347
564
|
//# sourceMappingURL=interaction_coverage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interaction_coverage.js","sourceRoot":"","sources":["../../src/evidence/interaction_coverage.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"interaction_coverage.js","sourceRoot":"","sources":["../../src/evidence/interaction_coverage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* verification_log.jsonl
|
|
3
|
+
* ──────────────────────
|
|
4
|
+
*
|
|
5
|
+
* One structured event per CodeLoop MCP tool call, written to:
|
|
6
|
+
* artifacts/runs/<latest_run>/logs/verification_log.jsonl
|
|
7
|
+
*
|
|
8
|
+
* This complements interaction_log.jsonl (which only tracks
|
|
9
|
+
* codeloop_interact calls) by recording the entire verification chain
|
|
10
|
+
* — verify, diagnose, gate_check, capture_screenshot, start_recording,
|
|
11
|
+
* stop_recording, interaction_replay, design_compare, visual_review,
|
|
12
|
+
* discover_screens, discover_interactions, generate_dev_report — so the
|
|
13
|
+
* dev report and any post-hoc analysis can replay exactly what
|
|
14
|
+
* happened and how long each step took.
|
|
15
|
+
*
|
|
16
|
+
* Events have a small, stable shape so a downstream parser doesn't
|
|
17
|
+
* need the MCP-server source to make sense of them:
|
|
18
|
+
*
|
|
19
|
+
* {
|
|
20
|
+
* timestamp: ISO 8601,
|
|
21
|
+
* tool: "codeloop_verify",
|
|
22
|
+
* input: { ...summarised params },
|
|
23
|
+
* success: boolean,
|
|
24
|
+
* duration_ms: number,
|
|
25
|
+
* run_id?: string, // when discoverable
|
|
26
|
+
* output_excerpt?: string // first 240 chars of stringified result
|
|
27
|
+
* error?: string // when success === false
|
|
28
|
+
* }
|
|
29
|
+
*
|
|
30
|
+
* Recording is best-effort: we never fail a tool call because the log
|
|
31
|
+
* couldn't be written.
|
|
32
|
+
*/
|
|
33
|
+
export interface VerificationEvent {
|
|
34
|
+
timestamp: string;
|
|
35
|
+
tool: string;
|
|
36
|
+
input?: Record<string, unknown>;
|
|
37
|
+
success: boolean;
|
|
38
|
+
duration_ms: number;
|
|
39
|
+
run_id?: string;
|
|
40
|
+
output_excerpt?: string;
|
|
41
|
+
error?: string;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Pick the freshest run directory in the project's artifacts/ tree.
|
|
45
|
+
* Falls back to a synthetic `pre-run/` bucket when no real run exists
|
|
46
|
+
* yet (e.g. the very first codeloop_verify in a fresh workspace logs
|
|
47
|
+
* its own bootstrap into `artifacts/pre-run/logs/`).
|
|
48
|
+
*/
|
|
49
|
+
declare function resolveVerificationLogPath(cwd: string): {
|
|
50
|
+
path: string;
|
|
51
|
+
runId: string | null;
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Summarise the params object so we don't write secrets / 50KB strings
|
|
55
|
+
* to disk. Truncates long string values, drops `api_key`-shaped fields.
|
|
56
|
+
*/
|
|
57
|
+
declare function summariseInput(input: unknown): Record<string, unknown> | undefined;
|
|
58
|
+
declare function summariseOutput(output: unknown): string | undefined;
|
|
59
|
+
export declare function appendVerificationEvent(cwd: string, evt: Omit<VerificationEvent, "timestamp">): void;
|
|
60
|
+
/**
|
|
61
|
+
* Higher-order wrapper. Records start / finish / duration / outcome
|
|
62
|
+
* for a single tool call without disturbing the return value. Callers
|
|
63
|
+
* can pass `cwdProvider` so multi-tenant tests can override the
|
|
64
|
+
* project root that determines where the log lands.
|
|
65
|
+
*/
|
|
66
|
+
export declare function withVerificationLog<T>(toolName: string, cwd: string, input: unknown, fn: () => Promise<T>): Promise<T>;
|
|
67
|
+
/**
|
|
68
|
+
* Read every verification event for a run. Used by generate_dev_report.
|
|
69
|
+
*/
|
|
70
|
+
export declare function readVerificationEvents(cwd: string, runId?: string): VerificationEvent[];
|
|
71
|
+
export declare const __testHelpers: {
|
|
72
|
+
resolveVerificationLogPath: typeof resolveVerificationLogPath;
|
|
73
|
+
summariseInput: typeof summariseInput;
|
|
74
|
+
summariseOutput: typeof summariseOutput;
|
|
75
|
+
};
|
|
76
|
+
export {};
|
|
77
|
+
//# sourceMappingURL=verification_log.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verification_log.d.ts","sourceRoot":"","sources":["../../src/evidence/verification_log.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;GAKG;AACH,iBAAS,0BAA0B,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAQvF;AAED;;;GAGG;AACH,iBAAS,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAmB3E;AAED,iBAAS,eAAe,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAQ5D;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,iBAAiB,EAAE,WAAW,CAAC,GAAG,IAAI,CAapG;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,CAAC,EACzC,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,OAAO,EACd,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC,CAsBZ;AAiBD;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAoBvF;AAGD,eAAO,MAAM,aAAa;;;;CAIzB,CAAC"}
|