@stigmer/runner 3.1.2 → 3.1.4
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/.build-fingerprint +1 -1
- package/dist/activities/execute-cursor/attachment-resolver.d.ts +1 -1
- package/dist/activities/execute-cursor/attachment-resolver.js +1 -1
- package/dist/activities/execute-cursor/capture-flow.d.ts +29 -0
- package/dist/activities/execute-cursor/capture-flow.js +59 -0
- package/dist/activities/execute-cursor/capture-flow.js.map +1 -1
- package/dist/activities/execute-cursor/command-provenance.d.ts +11 -25
- package/dist/activities/execute-cursor/command-provenance.js +25 -115
- package/dist/activities/execute-cursor/command-provenance.js.map +1 -1
- package/dist/activities/execute-cursor/index.js +358 -557
- package/dist/activities/execute-cursor/index.js.map +1 -1
- package/dist/activities/execute-cursor/todo-tracker.d.ts +6 -1
- package/dist/activities/execute-cursor/todo-tracker.js +15 -43
- package/dist/activities/execute-cursor/todo-tracker.js.map +1 -1
- package/dist/activities/execute-cursor/turn-boundary.d.ts +108 -0
- package/dist/activities/execute-cursor/turn-boundary.js +163 -0
- package/dist/activities/execute-cursor/turn-boundary.js.map +1 -0
- package/dist/activities/execute-cursor/turn-stream.d.ts +141 -0
- package/dist/activities/execute-cursor/turn-stream.js +249 -0
- package/dist/activities/execute-cursor/turn-stream.js.map +1 -0
- package/dist/activities/execute-deep-agent/command-provenance.d.ts +61 -0
- package/dist/activities/execute-deep-agent/command-provenance.js +72 -0
- package/dist/activities/execute-deep-agent/command-provenance.js.map +1 -0
- package/dist/activities/execute-deep-agent/index.js +73 -4
- package/dist/activities/execute-deep-agent/index.js.map +1 -1
- package/dist/activities/execute-deep-agent/status-builder.js +8 -1
- package/dist/activities/execute-deep-agent/status-builder.js.map +1 -1
- package/dist/activities/execute-deep-agent/streaming-v3.js +6 -1
- package/dist/activities/execute-deep-agent/streaming-v3.js.map +1 -1
- package/dist/activities/execute-deep-agent/streaming.d.ts +7 -0
- package/dist/activities/execute-deep-agent/streaming.js +5 -1
- package/dist/activities/execute-deep-agent/streaming.js.map +1 -1
- package/dist/activities/execute-deep-agent/v3-status-builder.js +12 -1
- package/dist/activities/execute-deep-agent/v3-status-builder.js.map +1 -1
- package/dist/otel.js +10 -0
- package/dist/otel.js.map +1 -1
- package/dist/shared/filereview/capture.d.ts +18 -1
- package/dist/shared/filereview/capture.js +105 -28
- package/dist/shared/filereview/capture.js.map +1 -1
- package/dist/shared/filereview/cas-progress.d.ts +63 -0
- package/dist/shared/filereview/cas-progress.js +128 -0
- package/dist/shared/filereview/cas-progress.js.map +1 -0
- package/dist/shared/filereview/cas-substrate.d.ts +38 -0
- package/dist/shared/filereview/cas-substrate.js +48 -15
- package/dist/shared/filereview/cas-substrate.js.map +1 -1
- package/dist/shared/filereview/command-provenance.d.ts +93 -0
- package/dist/shared/filereview/command-provenance.js +132 -0
- package/dist/shared/filereview/command-provenance.js.map +1 -0
- package/dist/shared/filereview/events.d.ts +16 -0
- package/dist/shared/filereview/events.js +37 -0
- package/dist/shared/filereview/events.js.map +1 -1
- package/dist/shared/filereview/git-substrate.d.ts +48 -0
- package/dist/shared/filereview/git-substrate.js +78 -0
- package/dist/shared/filereview/git-substrate.js.map +1 -1
- package/dist/shared/filereview/index.d.ts +5 -2
- package/dist/shared/filereview/index.js +5 -2
- package/dist/shared/filereview/index.js.map +1 -1
- package/dist/shared/filereview/line-counts.d.ts +48 -0
- package/dist/shared/filereview/line-counts.js +72 -0
- package/dist/shared/filereview/line-counts.js.map +1 -0
- package/dist/shared/filereview/progress.d.ts +167 -0
- package/dist/shared/filereview/progress.js +196 -0
- package/dist/shared/filereview/progress.js.map +1 -0
- package/dist/shared/implement-plan-prompt.d.ts +6 -4
- package/dist/shared/implement-plan-prompt.js +38 -6
- package/dist/shared/implement-plan-prompt.js.map +1 -1
- package/dist/shared/plan-artifact.d.ts +59 -11
- package/dist/shared/plan-artifact.js +144 -16
- package/dist/shared/plan-artifact.js.map +1 -1
- package/dist/shared/plan-mode-prompt.d.ts +15 -4
- package/dist/shared/plan-mode-prompt.js +28 -5
- package/dist/shared/plan-mode-prompt.js.map +1 -1
- package/dist/shared/todos.d.ts +56 -0
- package/dist/shared/todos.js +98 -0
- package/dist/shared/todos.js.map +1 -0
- package/dist/shared/tool-row.d.ts +16 -0
- package/dist/shared/tool-row.js +31 -0
- package/dist/shared/tool-row.js.map +1 -1
- package/package.json +3 -2
- package/src/__tests__/otel-turn-span.test.ts +61 -0
- package/src/activities/execute-cursor/__tests__/build-prompt.test.ts +7 -0
- package/src/activities/execute-cursor/__tests__/delta-enricher.test.ts +68 -0
- package/src/activities/execute-cursor/__tests__/progress-substrate.test.ts +169 -0
- package/src/activities/execute-cursor/__tests__/turn-boundary.test.ts +280 -0
- package/src/activities/execute-cursor/__tests__/turn-stream.test.ts +349 -0
- package/src/activities/execute-cursor/attachment-resolver.ts +1 -1
- package/src/activities/execute-cursor/capture-flow.ts +78 -0
- package/src/activities/execute-cursor/command-provenance.ts +25 -120
- package/src/activities/execute-cursor/index.ts +419 -602
- package/src/activities/execute-cursor/todo-tracker.ts +17 -59
- package/src/activities/execute-cursor/turn-boundary.ts +274 -0
- package/src/activities/execute-cursor/turn-stream.ts +418 -0
- package/src/activities/execute-deep-agent/__tests__/command-provenance.test.ts +252 -0
- package/src/activities/execute-deep-agent/__tests__/prompt-builder.test.ts +11 -0
- package/src/activities/execute-deep-agent/__tests__/status-builder.test.ts +78 -0
- package/src/activities/execute-deep-agent/__tests__/v3-status-builder.test.ts +105 -1
- package/src/activities/execute-deep-agent/command-provenance.ts +102 -0
- package/src/activities/execute-deep-agent/index.ts +91 -4
- package/src/activities/execute-deep-agent/status-builder.ts +9 -0
- package/src/activities/execute-deep-agent/streaming-v3.ts +6 -1
- package/src/activities/execute-deep-agent/streaming.ts +12 -1
- package/src/activities/execute-deep-agent/v3-status-builder.ts +13 -0
- package/src/otel.ts +8 -0
- package/src/shared/__tests__/implement-plan-prompt.test.ts +40 -2
- package/src/shared/__tests__/plan-artifact.test.ts +142 -9
- package/src/shared/__tests__/todos.test.ts +216 -0
- package/src/shared/filereview/__tests__/capture.test.ts +182 -1
- package/src/shared/filereview/__tests__/cas-progress.test.ts +228 -0
- package/src/shared/filereview/__tests__/cas-substrate.test.ts +100 -0
- package/src/shared/filereview/__tests__/command-provenance.test.ts +252 -0
- package/src/shared/filereview/__tests__/events.test.ts +105 -0
- package/src/shared/filereview/__tests__/line-counts.test.ts +73 -0
- package/src/shared/filereview/__tests__/progress.test.ts +338 -0
- package/src/shared/filereview/capture.ts +134 -30
- package/src/shared/filereview/cas-progress.ts +170 -0
- package/src/shared/filereview/cas-substrate.ts +79 -18
- package/src/shared/filereview/command-provenance.ts +180 -0
- package/src/shared/filereview/events.ts +50 -0
- package/src/shared/filereview/git-substrate.ts +114 -0
- package/src/shared/filereview/index.ts +36 -1
- package/src/shared/filereview/line-counts.ts +83 -0
- package/src/shared/filereview/progress.ts +310 -0
- package/src/shared/implement-plan-prompt.ts +39 -8
- package/src/shared/plan-artifact.ts +152 -16
- package/src/shared/plan-mode-prompt.ts +28 -5
- package/src/shared/todos.ts +126 -0
- package/src/shared/tool-row.ts +34 -0
package/dist/otel.js
CHANGED
|
@@ -100,14 +100,24 @@ export async function startCursorTurnSpan(attrs) {
|
|
|
100
100
|
[ATTR_SESSION_ID]: attrs.sessionId,
|
|
101
101
|
},
|
|
102
102
|
});
|
|
103
|
+
// Guard against a double end / a late setTokens: the turn span is ended from
|
|
104
|
+
// the activity's finally (finishTurnTelemetry), and OTel warns when a span is
|
|
105
|
+
// ended twice or mutated after end. Making this a no-op keeps the caller free
|
|
106
|
+
// to end idempotently on every exit path.
|
|
107
|
+
let ended = false;
|
|
103
108
|
return {
|
|
104
109
|
setTokens(input, output) {
|
|
110
|
+
if (ended)
|
|
111
|
+
return;
|
|
105
112
|
if (input)
|
|
106
113
|
span.setAttribute(ATTR_LLM_INPUT_TOKENS, input);
|
|
107
114
|
if (output)
|
|
108
115
|
span.setAttribute(ATTR_LLM_OUTPUT_TOKENS, output);
|
|
109
116
|
},
|
|
110
117
|
end() {
|
|
118
|
+
if (ended)
|
|
119
|
+
return;
|
|
120
|
+
ended = true;
|
|
111
121
|
span.end();
|
|
112
122
|
},
|
|
113
123
|
};
|
package/dist/otel.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"otel.js","sourceRoot":"","sources":["../src/otel.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"otel.js","sourceRoot":"","sources":["../src/otel.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
* `${changeSetId}:${pathAfter||pathBefore}` so the resume can map a per-file
|
|
19
19
|
* decision back to its path without depending on any other identity.
|
|
20
20
|
*/
|
|
21
|
-
import { FileCaptureClass } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
|
|
21
|
+
import { FileCaptureClass, FileChangeKind, FileChangeType } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
|
|
22
22
|
import type { AgentExecutionStatus } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/api_pb";
|
|
23
23
|
import type { FileChangeSet, TurnCommandProvenance } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/filereview_pb";
|
|
24
24
|
import { type GitSubstrateChange as GitCapturedChange } from "./git-substrate.js";
|
|
@@ -200,3 +200,20 @@ export declare function applyCaptureDecisions(opts: {
|
|
|
200
200
|
*/
|
|
201
201
|
readonly gitWorkspace?: boolean;
|
|
202
202
|
}): Promise<CaptureResumeResult>;
|
|
203
|
+
/**
|
|
204
|
+
* Split a turn's git-tracked changes by the secret gate: a secret-like tracked
|
|
205
|
+
* path (a committed `credentials.json`, `.env.example`, `*.tfvars`, ...) goes to
|
|
206
|
+
* `secret` (authored content-less via {@link trackedSecretChangeInput}); every
|
|
207
|
+
* other tracked change stays in `safe` (its diff is captured normally). Pure and
|
|
208
|
+
* exported for direct unit testing. Keyed on the same {@link isSecretLikePath}
|
|
209
|
+
* classifier the CAS/gitignored path uses ({@link partitionIgnoredPathsBySecret}
|
|
210
|
+
* in secret-paths.ts), so a path is classified identically everywhere. NOTE: the
|
|
211
|
+
* classifier is path-based (DD-12 D2), so a rename to an innocuous name defeats
|
|
212
|
+
* it — an intentional, cross-substrate limitation, not introduced here.
|
|
213
|
+
*/
|
|
214
|
+
export declare function partitionGitChangesBySecret(changes: readonly GitCapturedChange[]): {
|
|
215
|
+
readonly safe: readonly GitCapturedChange[];
|
|
216
|
+
readonly secret: readonly GitCapturedChange[];
|
|
217
|
+
};
|
|
218
|
+
/** Map the git capture kind to the file-review {@link FileChangeKind}. */
|
|
219
|
+
export declare function toFileChangeKind(changeType: FileChangeType): FileChangeKind;
|
|
@@ -25,6 +25,7 @@ import { utcTimestamp } from "../status.js";
|
|
|
25
25
|
import { appendFileReviewEvents, buildBaselineCapturedEvent, buildCandidateCapturedEvent, buildCapturedFileChange, buildFailedEvent, buildReconciledEvent, contentSha256, } from "./events.js";
|
|
26
26
|
import { applyApprovedPaths, baselineRef, captureChangeSet, captureRef, dropCaptureRefs, recomputeChangeSet, restoreToBaseline, snapshotApproved, snapshotBaseline, } from "./git-substrate.js";
|
|
27
27
|
import { applyCasApproved, loadCasManifest, restoreCasToBaseline, snapshotCasChangeSet, } from "./cas-substrate.js";
|
|
28
|
+
import { isSecretLikePath } from "./secret-paths.js";
|
|
28
29
|
/**
|
|
29
30
|
* Whether a turn runs in apply-then-review CAPTURE mode (file edits flow and are
|
|
30
31
|
* reviewed post-hoc) rather than the classic pre-write DENY-GATE. Shared by BOTH
|
|
@@ -111,20 +112,38 @@ export async function captureCandidateToLedger(opts) {
|
|
|
111
112
|
casRef = snap.ref;
|
|
112
113
|
}
|
|
113
114
|
const unreviewable = unreviewablePaths ?? [];
|
|
115
|
+
// Secret handling is three-way across the substrates, and this is the last of
|
|
116
|
+
// the three (the other two happen upstream at the harness gate):
|
|
117
|
+
// 1. A gitignored secret WRITE never flows — hard-blocked at the gate /
|
|
118
|
+
// deny-gate (DD-12/DD-30). It arrives here only as a path in
|
|
119
|
+
// `unreviewablePaths` (recorded by the gate), authored content-less below.
|
|
120
|
+
// 2. A gitignored secret that flowed under the global bypass is withheld from
|
|
121
|
+
// CAS by `partitionIgnoredPathsBySecret` (secret-paths.ts), so its bytes
|
|
122
|
+
// never reach `casCaptures`.
|
|
123
|
+
// 3. A git-TRACKED secret DID flow (the capture-mode gate allows tracked
|
|
124
|
+
// mutations with no secret check) and is present in `gitChanges` with real
|
|
125
|
+
// bytes. We split it out here and author it content-less, so its content
|
|
126
|
+
// never reaches the ledger. Unlike a gitignored secret it HAS a reversible
|
|
127
|
+
// substrate (the git refs), so it is withheld-and-reverted rather than
|
|
128
|
+
// never-applied — same never-persisted guarantee, appropriate mechanism.
|
|
129
|
+
const { safe: safeGitChanges, secret: secretGitChanges } = partitionGitChangesBySecret(gitChanges);
|
|
114
130
|
// A turn that changed nothing (no tracked/ignored change and no blocked path)
|
|
115
|
-
// authors no event.
|
|
131
|
+
// authors no event. A secret-only tracked turn is NOT a no-op — its file is in
|
|
132
|
+
// `gitChanges`, so the guard below is false and it authors a blocked entry.
|
|
116
133
|
if (gitChanges.length === 0 && casFiles.length === 0 && unreviewable.length === 0) {
|
|
117
134
|
return gitChanges;
|
|
118
135
|
}
|
|
119
|
-
// One combined change set: git-tracked (inline bodies) +
|
|
120
|
-
// secret-blocked (content-less
|
|
121
|
-
// all (buildCandidateCapturedEvent sorts by file
|
|
122
|
-
// and its identity span every substrate.
|
|
123
|
-
// per-file signals up three ways: any
|
|
124
|
-
// PARTIAL_BLOCKED; a set blocked only by
|
|
125
|
-
// (keepable in one acknowledged action); else
|
|
136
|
+
// One combined change set: git-tracked (inline bodies) + git-tracked-secret
|
|
137
|
+
// (content-less) + CAS (blob refs) + gitignored-secret-blocked (content-less).
|
|
138
|
+
// The aggregate digest folds all (buildCandidateCapturedEvent sorts by file
|
|
139
|
+
// digest), so the reviewed diff and its identity span every substrate.
|
|
140
|
+
// deriveDiffCompleteness then rolls the per-file signals up three ways: any
|
|
141
|
+
// content-less (non-binary) entry forces PARTIAL_BLOCKED; a set blocked only by
|
|
142
|
+
// binaries is BINARY_SUMMARY_ONLY (keepable in one acknowledged action); else
|
|
143
|
+
// COMPLETE.
|
|
126
144
|
const captured = [
|
|
127
|
-
...
|
|
145
|
+
...safeGitChanges.map((c) => buildCapturedFileChange(toCapturedChangeInput(changeSetId, c))),
|
|
146
|
+
...secretGitChanges.map((c) => buildCapturedFileChange(trackedSecretChangeInput(changeSetId, c))),
|
|
128
147
|
...casFiles.map((f) => buildCapturedFileChange(casToCapturedChangeInput(changeSetId, f))),
|
|
129
148
|
...unreviewable.map((p) => buildCapturedFileChange(unreviewableChangeInput(changeSetId, p, unreviewableCaptureClass))),
|
|
130
149
|
];
|
|
@@ -405,7 +424,9 @@ function candidateCasRef(changeSet) {
|
|
|
405
424
|
* after bodies are carried as blob REFS (already offloaded to artifact storage
|
|
406
425
|
* by the CAS substrate), never re-inlined — so the CANDIDATE event stays small
|
|
407
426
|
* and the bytes are stored exactly once. Enforcement digests come from the blob
|
|
408
|
-
* content addresses, identical in form to the git path.
|
|
427
|
+
* content addresses, identical in form to the git path. The display line counts
|
|
428
|
+
* ride along explicitly — a ref side has no inline text for the producer to
|
|
429
|
+
* count, so the substrate's capture-time counts are the only honest source.
|
|
409
430
|
*/
|
|
410
431
|
function casToCapturedChangeInput(changeSetId, file) {
|
|
411
432
|
return {
|
|
@@ -414,6 +435,7 @@ function casToCapturedChangeInput(changeSetId, file) {
|
|
|
414
435
|
pathAfter: file.pathAfter,
|
|
415
436
|
kind: file.kind,
|
|
416
437
|
captureClass: file.captureClass,
|
|
438
|
+
lineCounts: file.lineCounts,
|
|
417
439
|
before: file.before
|
|
418
440
|
? {
|
|
419
441
|
kind: "ref",
|
|
@@ -436,32 +458,87 @@ function casToCapturedChangeInput(changeSetId, file) {
|
|
|
436
458
|
};
|
|
437
459
|
}
|
|
438
460
|
/**
|
|
439
|
-
*
|
|
440
|
-
*
|
|
441
|
-
*
|
|
442
|
-
*
|
|
443
|
-
*
|
|
444
|
-
*
|
|
445
|
-
*
|
|
446
|
-
*
|
|
447
|
-
*
|
|
448
|
-
*
|
|
449
|
-
*
|
|
450
|
-
*
|
|
461
|
+
* The single content-less `SECRET_WITHHELD` producer input — the one shape every
|
|
462
|
+
* secret-blocked change (gitignored OR git-tracked) is authored with, so the two
|
|
463
|
+
* producers can never drift (a divergence in `diffComplete`/`blockedReason` would
|
|
464
|
+
* make the backend gate treat one kind of secret differently from the other).
|
|
465
|
+
*
|
|
466
|
+
* Both sides are absent (empty enforcement digests) and `diffComplete=false`.
|
|
467
|
+
* Being non-binary incomplete with no keepable bytes, it forces the change set to
|
|
468
|
+
* PARTIAL_BLOCKED (never BINARY_SUMMARY_ONLY) — approval is blocked and the path
|
|
469
|
+
* is surfaced honestly, while its CONTENT never enters the ledger or storage.
|
|
470
|
+
* `blockedReason=SECRET_WITHHELD` records the honest cause so the review UI can say
|
|
471
|
+
* *why* rather than a cause-agnostic "unavailable" (doc 15). Callers supply the
|
|
472
|
+
* id / paths / kind / captureClass so each producer keeps its own honest identity.
|
|
451
473
|
*/
|
|
452
|
-
function
|
|
474
|
+
function secretWithheldChangeInput(id, pathBefore, pathAfter, kind, captureClass) {
|
|
453
475
|
return {
|
|
454
|
-
id
|
|
455
|
-
pathBefore
|
|
456
|
-
pathAfter
|
|
457
|
-
kind
|
|
476
|
+
id,
|
|
477
|
+
pathBefore,
|
|
478
|
+
pathAfter,
|
|
479
|
+
kind,
|
|
458
480
|
captureClass,
|
|
459
481
|
diffComplete: false,
|
|
460
482
|
blockedReason: FileReviewBlockReason.SECRET_WITHHELD,
|
|
461
483
|
};
|
|
462
484
|
}
|
|
485
|
+
/**
|
|
486
|
+
* Map a secret-blocked GITIGNORED path (the write never flowed — hard-blocked at
|
|
487
|
+
* the harness gate, design doc 12 / DD-E) to a content-less entry. The write was
|
|
488
|
+
* blocked before it ran, so create-vs-modify is unknown and irrelevant (nothing
|
|
489
|
+
* is ever applied or reconciled for this entry) — kind is MODIFY. `captureClass`
|
|
490
|
+
* is the turn's CAS substrate class (GIT_IGNORED_CAPTURED | NON_GIT_CAS).
|
|
491
|
+
*/
|
|
492
|
+
function unreviewableChangeInput(changeSetId, path, captureClass) {
|
|
493
|
+
return secretWithheldChangeInput(`${changeSetId}:${path}`, path, path, FileChangeKind.MODIFY, captureClass);
|
|
494
|
+
}
|
|
495
|
+
/**
|
|
496
|
+
* Map a secret-like GIT-TRACKED change to a content-less entry (DD-26 follow-up
|
|
497
|
+
* #3). Unlike a gitignored secret, a tracked secret write actually FLOWED (the
|
|
498
|
+
* capture-mode gate allows tracked mutations), so it is present in the git diff
|
|
499
|
+
* with real bytes — which must never be persisted into the ledger. We author it
|
|
500
|
+
* content-less here so its CONTENT never reaches the ledger / Temporal history /
|
|
501
|
+
* storage, while the honest kind + paths (a CREATE/MODIFY/DELETE, mirroring
|
|
502
|
+
* {@link toCapturedChangeInput}'s id/path derivation so the resume reconcile
|
|
503
|
+
* lookup matches) and `GIT_TRACKED` provenance are preserved. It is discard-only
|
|
504
|
+
* (PARTIAL_BLOCKED): on resume it can only be rejected, and the git substrate
|
|
505
|
+
* reverts it byte-exact from the baseline ref (the reversible substrate a
|
|
506
|
+
* gitignored secret lacks — so "withhold + revert" upholds never-persisted here
|
|
507
|
+
* without the gate hard-block). A DELETE is handled here too: the git diff
|
|
508
|
+
* resurrects the deleted file's baseline (secret) bytes as the `before` side, a
|
|
509
|
+
* leak only this seam can withhold (the gate sees no content for a delete).
|
|
510
|
+
*/
|
|
511
|
+
function trackedSecretChangeInput(changeSetId, change) {
|
|
512
|
+
const isCreate = change.changeType === FileChangeType.CREATE;
|
|
513
|
+
const isDelete = change.changeType === FileChangeType.DELETE;
|
|
514
|
+
const pathBefore = isCreate ? "" : change.path;
|
|
515
|
+
const pathAfter = isDelete ? "" : change.path;
|
|
516
|
+
return secretWithheldChangeInput(`${changeSetId}:${pathAfter || pathBefore}`, pathBefore, pathAfter, toFileChangeKind(change.changeType), FileCaptureClass.GIT_TRACKED);
|
|
517
|
+
}
|
|
518
|
+
/**
|
|
519
|
+
* Split a turn's git-tracked changes by the secret gate: a secret-like tracked
|
|
520
|
+
* path (a committed `credentials.json`, `.env.example`, `*.tfvars`, ...) goes to
|
|
521
|
+
* `secret` (authored content-less via {@link trackedSecretChangeInput}); every
|
|
522
|
+
* other tracked change stays in `safe` (its diff is captured normally). Pure and
|
|
523
|
+
* exported for direct unit testing. Keyed on the same {@link isSecretLikePath}
|
|
524
|
+
* classifier the CAS/gitignored path uses ({@link partitionIgnoredPathsBySecret}
|
|
525
|
+
* in secret-paths.ts), so a path is classified identically everywhere. NOTE: the
|
|
526
|
+
* classifier is path-based (DD-12 D2), so a rename to an innocuous name defeats
|
|
527
|
+
* it — an intentional, cross-substrate limitation, not introduced here.
|
|
528
|
+
*/
|
|
529
|
+
export function partitionGitChangesBySecret(changes) {
|
|
530
|
+
const safe = [];
|
|
531
|
+
const secret = [];
|
|
532
|
+
for (const change of changes) {
|
|
533
|
+
if (isSecretLikePath(change.path))
|
|
534
|
+
secret.push(change);
|
|
535
|
+
else
|
|
536
|
+
safe.push(change);
|
|
537
|
+
}
|
|
538
|
+
return { safe, secret };
|
|
539
|
+
}
|
|
463
540
|
/** Map the git capture kind to the file-review {@link FileChangeKind}. */
|
|
464
|
-
function toFileChangeKind(changeType) {
|
|
541
|
+
export function toFileChangeKind(changeType) {
|
|
465
542
|
switch (changeType) {
|
|
466
543
|
case FileChangeType.CREATE:
|
|
467
544
|
return FileChangeKind.ADD;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capture.js","sourceRoot":"","sources":["../../../src/shared/filereview/capture.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"capture.js","sourceRoot":"","sources":["../../../src/shared/filereview/capture.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mid-run progress substrate for the CAS (content-addressed) domain — the
|
|
3
|
+
* non-git and gitignored half of DD-33. The git substrate ({@link ./progress.js}
|
|
4
|
+
* `createGitProgressSubstrate`) covers git-tracked changes cheaply via
|
|
5
|
+
* `--numstat`; this covers the paths git cannot see, sourced from the same
|
|
6
|
+
* per-turn observer the turn-boundary CAS capture reads:
|
|
7
|
+
* - a non-git workspace: EVERY tool-mediated write (the whole change set), and
|
|
8
|
+
* - a git tree's gitignored writes (the CAS half of a HYBRID turn).
|
|
9
|
+
*
|
|
10
|
+
* COST MODEL (why this is not as cheap as git)
|
|
11
|
+
* --------------------------------------------
|
|
12
|
+
* `git --numstat` yields exact `+N −M` with zero byte reads; CAS has no such free
|
|
13
|
+
* lunch — kind, no-op exclusion, and counts all need the after-bytes. So we bound
|
|
14
|
+
* the work: only the sorted read-PREFIX (up to {@link PROGRESS_MAX_ENTRIES}) has
|
|
15
|
+
* its after-bytes read and counted; the tail contributes to `totalFilesChanged`
|
|
16
|
+
* (the honest count) only. `files_changed` is therefore net-exact for a normal
|
|
17
|
+
* turn (≤ the budget) and an upper bound beyond it — matching git where git is
|
|
18
|
+
* free, diverging only where the substrate cannot be. A `size+mtime` signature
|
|
19
|
+
* (the stats are collected anyway) short-circuits an unchanged capture.
|
|
20
|
+
*
|
|
21
|
+
* CONSISTENCY & SECRET SAFETY
|
|
22
|
+
* ---------------------------
|
|
23
|
+
* Counts come from {@link classifyCasChange} — the SAME classifier the reviewed
|
|
24
|
+
* set uses — so the strip and the change set never disagree. Secret-like paths
|
|
25
|
+
* are excluded up front via {@link partitionIgnoredPathsBySecret} (and zeroed
|
|
26
|
+
* again in `buildFileChangeProgress` as a backstop); no file bodies are ever
|
|
27
|
+
* carried on the wire. Only tool-mediated writes are observed, exactly the scope
|
|
28
|
+
* of the non-git / HYBRID turn-boundary capture — no new divergence.
|
|
29
|
+
*
|
|
30
|
+
* @since File-Change HITL Redesign (non-git + hybrid mid-run progress / DD-33)
|
|
31
|
+
*/
|
|
32
|
+
import { type ProgressSubstrate } from "./progress.js";
|
|
33
|
+
/**
|
|
34
|
+
* A snapshot of the turn's CAS-observed paths, read on each capture:
|
|
35
|
+
* - `before`: first-touched paths' pre-turn bytes (`null` = the path did not
|
|
36
|
+
* exist before → an ADD). The KEYS are the touched-path set.
|
|
37
|
+
* - `blockedSecretPaths`: paths the gate hard-blocked as secret-like — excluded
|
|
38
|
+
* from capture.
|
|
39
|
+
*
|
|
40
|
+
* Deep-agent supplies a synchronous copy of its live `CasCaptureObserver`; Cursor
|
|
41
|
+
* supplies a reader over the hook's on-disk sidecar. The reader MUST return an
|
|
42
|
+
* atomic snapshot (copy the live map before any await) so a concurrent sub-agent
|
|
43
|
+
* write cannot mutate it mid-capture.
|
|
44
|
+
*/
|
|
45
|
+
export interface CasTouchedSnapshot {
|
|
46
|
+
readonly before: ReadonlyMap<string, Uint8Array | null>;
|
|
47
|
+
readonly blockedSecretPaths: ReadonlySet<string>;
|
|
48
|
+
}
|
|
49
|
+
/** Produces a {@link CasTouchedSnapshot} for one capture. */
|
|
50
|
+
export type CasTouchedReader = () => CasTouchedSnapshot | Promise<CasTouchedSnapshot>;
|
|
51
|
+
/**
|
|
52
|
+
* The CAS progress substrate. Reads the touched set on each capture, computes
|
|
53
|
+
* kind + `+N −M` for the bounded read-prefix via {@link classifyCasChange}, and
|
|
54
|
+
* reports `totalFilesChanged` over the full capturable set. Owns a `size+mtime`
|
|
55
|
+
* signature so an unchanged capture returns `changed:false` (the cached delta is
|
|
56
|
+
* reused, letting the hybrid still merge it with a changed git slice).
|
|
57
|
+
*/
|
|
58
|
+
export declare function createCasProgressSubstrate(opts: {
|
|
59
|
+
readonly workspaceRoot: string;
|
|
60
|
+
readonly read: CasTouchedReader;
|
|
61
|
+
/** Read budget / display cap; defaults to {@link PROGRESS_MAX_ENTRIES}. Injectable for tests. */
|
|
62
|
+
readonly maxEntries?: number;
|
|
63
|
+
}): ProgressSubstrate;
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mid-run progress substrate for the CAS (content-addressed) domain — the
|
|
3
|
+
* non-git and gitignored half of DD-33. The git substrate ({@link ./progress.js}
|
|
4
|
+
* `createGitProgressSubstrate`) covers git-tracked changes cheaply via
|
|
5
|
+
* `--numstat`; this covers the paths git cannot see, sourced from the same
|
|
6
|
+
* per-turn observer the turn-boundary CAS capture reads:
|
|
7
|
+
* - a non-git workspace: EVERY tool-mediated write (the whole change set), and
|
|
8
|
+
* - a git tree's gitignored writes (the CAS half of a HYBRID turn).
|
|
9
|
+
*
|
|
10
|
+
* COST MODEL (why this is not as cheap as git)
|
|
11
|
+
* --------------------------------------------
|
|
12
|
+
* `git --numstat` yields exact `+N −M` with zero byte reads; CAS has no such free
|
|
13
|
+
* lunch — kind, no-op exclusion, and counts all need the after-bytes. So we bound
|
|
14
|
+
* the work: only the sorted read-PREFIX (up to {@link PROGRESS_MAX_ENTRIES}) has
|
|
15
|
+
* its after-bytes read and counted; the tail contributes to `totalFilesChanged`
|
|
16
|
+
* (the honest count) only. `files_changed` is therefore net-exact for a normal
|
|
17
|
+
* turn (≤ the budget) and an upper bound beyond it — matching git where git is
|
|
18
|
+
* free, diverging only where the substrate cannot be. A `size+mtime` signature
|
|
19
|
+
* (the stats are collected anyway) short-circuits an unchanged capture.
|
|
20
|
+
*
|
|
21
|
+
* CONSISTENCY & SECRET SAFETY
|
|
22
|
+
* ---------------------------
|
|
23
|
+
* Counts come from {@link classifyCasChange} — the SAME classifier the reviewed
|
|
24
|
+
* set uses — so the strip and the change set never disagree. Secret-like paths
|
|
25
|
+
* are excluded up front via {@link partitionIgnoredPathsBySecret} (and zeroed
|
|
26
|
+
* again in `buildFileChangeProgress` as a backstop); no file bodies are ever
|
|
27
|
+
* carried on the wire. Only tool-mediated writes are observed, exactly the scope
|
|
28
|
+
* of the non-git / HYBRID turn-boundary capture — no new divergence.
|
|
29
|
+
*
|
|
30
|
+
* @since File-Change HITL Redesign (non-git + hybrid mid-run progress / DD-33)
|
|
31
|
+
*/
|
|
32
|
+
import { readFile, stat } from "node:fs/promises";
|
|
33
|
+
import { join } from "node:path";
|
|
34
|
+
import { FileChangeKind } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
|
|
35
|
+
import { classifyCasChange } from "./cas-substrate.js";
|
|
36
|
+
import { LINE_COUNT_MAX_BYTES } from "./line-counts.js";
|
|
37
|
+
import { PROGRESS_MAX_ENTRIES, } from "./progress.js";
|
|
38
|
+
import { partitionIgnoredPathsBySecret } from "./secret-paths.js";
|
|
39
|
+
/**
|
|
40
|
+
* The CAS progress substrate. Reads the touched set on each capture, computes
|
|
41
|
+
* kind + `+N −M` for the bounded read-prefix via {@link classifyCasChange}, and
|
|
42
|
+
* reports `totalFilesChanged` over the full capturable set. Owns a `size+mtime`
|
|
43
|
+
* signature so an unchanged capture returns `changed:false` (the cached delta is
|
|
44
|
+
* reused, letting the hybrid still merge it with a changed git slice).
|
|
45
|
+
*/
|
|
46
|
+
export function createCasProgressSubstrate(opts) {
|
|
47
|
+
const maxEntries = opts.maxEntries ?? PROGRESS_MAX_ENTRIES;
|
|
48
|
+
let cachedFull = { entries: [], totalFilesChanged: 0 };
|
|
49
|
+
let lastSignature;
|
|
50
|
+
return {
|
|
51
|
+
async capture() {
|
|
52
|
+
const snapshot = await opts.read();
|
|
53
|
+
const { capturablePaths } = partitionIgnoredPathsBySecret(snapshot.before.keys(), snapshot.blockedSecretPaths);
|
|
54
|
+
// Deterministic order so the read prefix and entry order are stable.
|
|
55
|
+
const sorted = [...capturablePaths].sort();
|
|
56
|
+
const prefix = sorted.slice(0, maxEntries);
|
|
57
|
+
const entries = [];
|
|
58
|
+
// The signature keys on the capturable count (catches a new touch) plus the
|
|
59
|
+
// read prefix's size+mtime (catches a content edit to a shown file). A
|
|
60
|
+
// change to an UNshown tail file has no display effect, so it is not keyed.
|
|
61
|
+
const sigParts = [`${capturablePaths.length}`];
|
|
62
|
+
for (const relPath of prefix) {
|
|
63
|
+
const abs = join(opts.workspaceRoot, relPath);
|
|
64
|
+
const st = await statOrNull(abs);
|
|
65
|
+
sigParts.push(`${relPath}\u0000${st ? `${st.size}:${st.mtimeMs}` : "\u2205"}`);
|
|
66
|
+
const beforeBytes = snapshot.before.get(relPath) ?? null;
|
|
67
|
+
const beforeBuf = beforeBytes === null ? null : Buffer.from(beforeBytes);
|
|
68
|
+
// Oversized after: derive the kind without reading (bound the I/O) and
|
|
69
|
+
// leave counts at zero — the same "no stat" shape a binary/oversized side
|
|
70
|
+
// takes in the reviewed set. A same-size no-op cannot be excluded here; an
|
|
71
|
+
// accepted overstatement only for very large files.
|
|
72
|
+
if (st && st.size > LINE_COUNT_MAX_BYTES) {
|
|
73
|
+
const kind = beforeBuf === null ? FileChangeKind.ADD : FileChangeKind.MODIFY;
|
|
74
|
+
entries.push({
|
|
75
|
+
pathBefore: kind === FileChangeKind.ADD ? "" : relPath,
|
|
76
|
+
pathAfter: relPath,
|
|
77
|
+
kind,
|
|
78
|
+
linesAdded: 0,
|
|
79
|
+
linesRemoved: 0,
|
|
80
|
+
});
|
|
81
|
+
continue;
|
|
82
|
+
}
|
|
83
|
+
const afterBytes = st ? await readFileOrNull(abs) : null;
|
|
84
|
+
const afterBuf = afterBytes === null ? null : Buffer.from(afterBytes);
|
|
85
|
+
const cls = classifyCasChange(relPath, beforeBuf, afterBuf);
|
|
86
|
+
if (!cls)
|
|
87
|
+
continue; // no-op (unchanged touch) or both sides absent
|
|
88
|
+
entries.push({
|
|
89
|
+
pathBefore: cls.pathBefore,
|
|
90
|
+
pathAfter: cls.pathAfter,
|
|
91
|
+
kind: cls.kind,
|
|
92
|
+
linesAdded: cls.lineCounts?.linesAdded ?? 0,
|
|
93
|
+
linesRemoved: cls.lineCounts?.linesRemoved ?? 0,
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
// Honest total: the capturable set minus the no-ops detected in the read
|
|
97
|
+
// prefix. Net-exact for a turn within the read budget; an upper bound beyond
|
|
98
|
+
// it (tail no-ops are not read, so cannot be excluded).
|
|
99
|
+
const prefixNoOps = prefix.length - entries.length;
|
|
100
|
+
const totalFilesChanged = capturablePaths.length - prefixNoOps;
|
|
101
|
+
const signature = sigParts.join("|");
|
|
102
|
+
if (signature === lastSignature) {
|
|
103
|
+
return { delta: cachedFull, changed: false };
|
|
104
|
+
}
|
|
105
|
+
lastSignature = signature;
|
|
106
|
+
cachedFull = { entries, totalFilesChanged };
|
|
107
|
+
return { delta: cachedFull, changed: true };
|
|
108
|
+
},
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
async function statOrNull(abs) {
|
|
112
|
+
try {
|
|
113
|
+
const s = await stat(abs);
|
|
114
|
+
return { size: s.size, mtimeMs: s.mtimeMs };
|
|
115
|
+
}
|
|
116
|
+
catch {
|
|
117
|
+
return null;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
async function readFileOrNull(abs) {
|
|
121
|
+
try {
|
|
122
|
+
return await readFile(abs);
|
|
123
|
+
}
|
|
124
|
+
catch {
|
|
125
|
+
return null;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=cas-progress.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cas-progress.js","sourceRoot":"","sources":["../../../src/shared/filereview/cas-progress.ts"],"names":[],"mappings":"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"}
|
|
@@ -49,6 +49,7 @@
|
|
|
49
49
|
*/
|
|
50
50
|
import { FileCaptureClass, FileChangeKind } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
|
|
51
51
|
import type { ArtifactStorage } from "../artifact-storage.js";
|
|
52
|
+
import { type LineChangeCounts } from "./line-counts.js";
|
|
52
53
|
/**
|
|
53
54
|
* Reads an artifact's raw bytes back by storage key. Injected so this module
|
|
54
55
|
* stays free of HTTP/transport concerns and is trivially testable; production
|
|
@@ -80,6 +81,14 @@ export interface CasCapturedFile {
|
|
|
80
81
|
readonly after?: CasBlobRef;
|
|
81
82
|
/** False when a side is binary — the change set cannot be approved as complete. */
|
|
82
83
|
readonly diffComplete: boolean;
|
|
84
|
+
/**
|
|
85
|
+
* Display `+N −M` counted from the in-memory bytes at capture — the only
|
|
86
|
+
* moment a CAS change's text exists outside blob storage. Absent for binary
|
|
87
|
+
* or oversized sides. Carried in memory to the CANDIDATE event only, never
|
|
88
|
+
* persisted in the manifest: the manifest is the reconcile's source of truth,
|
|
89
|
+
* and display decoration does not belong in an enforcement record.
|
|
90
|
+
*/
|
|
91
|
+
readonly lineCounts?: LineChangeCounts;
|
|
83
92
|
}
|
|
84
93
|
/** The durable manifest for one change set — the reconcile's source of truth. */
|
|
85
94
|
export interface CasManifest {
|
|
@@ -130,6 +139,35 @@ export declare function snapshotCasChangeSet(opts: {
|
|
|
130
139
|
manifest: CasManifest;
|
|
131
140
|
ref: CasSnapshotRef;
|
|
132
141
|
}>;
|
|
142
|
+
/**
|
|
143
|
+
* The display-facing classification of one CAS path's before/after bytes: the
|
|
144
|
+
* change kind, whether either side is binary, and the `+N −M` line counts.
|
|
145
|
+
*/
|
|
146
|
+
export interface CasChangeClassification {
|
|
147
|
+
/** Path before the change (workspace-relative). Empty for ADD. */
|
|
148
|
+
readonly pathBefore: string;
|
|
149
|
+
/** Path after the change. Empty for DELETE. */
|
|
150
|
+
readonly pathAfter: string;
|
|
151
|
+
readonly kind: FileChangeKind;
|
|
152
|
+
/** A NUL byte on either side — the diff cannot render as text. */
|
|
153
|
+
readonly isBinary: boolean;
|
|
154
|
+
/** `+N −M` from the in-memory bytes; absent for a binary or oversized side. */
|
|
155
|
+
readonly lineCounts?: LineChangeCounts;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Classify one CAS path's before/after bytes. Returns `undefined` for a
|
|
159
|
+
* non-change — both sides absent, or a touch that left the bytes unchanged —
|
|
160
|
+
* exactly as the git substrate's diff omits unchanged files.
|
|
161
|
+
*
|
|
162
|
+
* This is the SINGLE classification authority for a CAS before/after pair: the
|
|
163
|
+
* turn-boundary capture ({@link buildCasCapturedFile}) and the mid-run progress
|
|
164
|
+
* producer ({@link ./cas-progress.js}) both route through it, so the live "N
|
|
165
|
+
* files changed so far" strip and the reviewed change set can never disagree on
|
|
166
|
+
* an edge case (the trailing-newline class of bug {@link ./line-counts.js}
|
|
167
|
+
* warns about). Kind, no-op detection, binary detection, and counting live here
|
|
168
|
+
* and nowhere else.
|
|
169
|
+
*/
|
|
170
|
+
export declare function classifyCasChange(path: string, beforeBuf: Buffer | null, afterBuf: Buffer | null): CasChangeClassification | undefined;
|
|
133
171
|
/**
|
|
134
172
|
* Load a change set's CAS manifest for the resume-time reconcile, digest-verified
|
|
135
173
|
* against the ledger's {@link CasSnapshotRef}.
|