@stigmer/runner 3.1.1 → 3.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (166) hide show
  1. package/dist/.build-fingerprint +1 -1
  2. package/dist/activities/execute-cursor/attachment-resolver.d.ts +49 -8
  3. package/dist/activities/execute-cursor/attachment-resolver.js +83 -26
  4. package/dist/activities/execute-cursor/attachment-resolver.js.map +1 -1
  5. package/dist/activities/execute-cursor/capture-flow.d.ts +18 -0
  6. package/dist/activities/execute-cursor/capture-flow.js +21 -0
  7. package/dist/activities/execute-cursor/capture-flow.js.map +1 -1
  8. package/dist/activities/execute-cursor/cas-observations.d.ts +13 -0
  9. package/dist/activities/execute-cursor/cas-observations.js +39 -5
  10. package/dist/activities/execute-cursor/cas-observations.js.map +1 -1
  11. package/dist/activities/execute-cursor/hook-script.js +19 -1
  12. package/dist/activities/execute-cursor/hook-script.js.map +1 -1
  13. package/dist/activities/execute-cursor/index.d.ts +5 -0
  14. package/dist/activities/execute-cursor/index.js +222 -160
  15. package/dist/activities/execute-cursor/index.js.map +1 -1
  16. package/dist/activities/execute-cursor/message-translator.js +10 -1
  17. package/dist/activities/execute-cursor/message-translator.js.map +1 -1
  18. package/dist/activities/execute-cursor/prompt-builder.d.ts +32 -7
  19. package/dist/activities/execute-cursor/prompt-builder.js +38 -20
  20. package/dist/activities/execute-cursor/prompt-builder.js.map +1 -1
  21. package/dist/activities/execute-cursor/skill-resolver.d.ts +1 -10
  22. package/dist/activities/execute-cursor/skill-resolver.js +3 -55
  23. package/dist/activities/execute-cursor/skill-resolver.js.map +1 -1
  24. package/dist/activities/execute-cursor/stigmer-link.d.ts +35 -0
  25. package/dist/activities/execute-cursor/stigmer-link.js +73 -0
  26. package/dist/activities/execute-cursor/stigmer-link.js.map +1 -0
  27. package/dist/activities/execute-cursor/turn-boundary.d.ts +108 -0
  28. package/dist/activities/execute-cursor/turn-boundary.js +163 -0
  29. package/dist/activities/execute-cursor/turn-boundary.js.map +1 -0
  30. package/dist/activities/execute-cursor/workspace-provision.d.ts +3 -2
  31. package/dist/activities/execute-cursor/workspace-provision.js +5 -3
  32. package/dist/activities/execute-cursor/workspace-provision.js.map +1 -1
  33. package/dist/activities/execute-deep-agent/index.js +89 -5
  34. package/dist/activities/execute-deep-agent/index.js.map +1 -1
  35. package/dist/activities/execute-deep-agent/prompt-builder.d.ts +17 -0
  36. package/dist/activities/execute-deep-agent/prompt-builder.js +16 -0
  37. package/dist/activities/execute-deep-agent/prompt-builder.js.map +1 -1
  38. package/dist/activities/execute-deep-agent/setup.js +22 -16
  39. package/dist/activities/execute-deep-agent/setup.js.map +1 -1
  40. package/dist/activities/execute-deep-agent/streaming-v3.js +6 -1
  41. package/dist/activities/execute-deep-agent/streaming-v3.js.map +1 -1
  42. package/dist/activities/execute-deep-agent/streaming.d.ts +7 -0
  43. package/dist/activities/execute-deep-agent/streaming.js +5 -1
  44. package/dist/activities/execute-deep-agent/streaming.js.map +1 -1
  45. package/dist/config.d.ts +7 -0
  46. package/dist/config.js +9 -0
  47. package/dist/config.js.map +1 -1
  48. package/dist/middleware/approval-gate.js +36 -6
  49. package/dist/middleware/approval-gate.js.map +1 -1
  50. package/dist/runner-manager.d.ts +2 -0
  51. package/dist/runner-manager.js +2 -1
  52. package/dist/runner-manager.js.map +1 -1
  53. package/dist/runner.d.ts +2 -0
  54. package/dist/runner.js +2 -1
  55. package/dist/runner.js.map +1 -1
  56. package/dist/shared/artifact-storage.d.ts +32 -0
  57. package/dist/shared/artifact-storage.js +74 -1
  58. package/dist/shared/artifact-storage.js.map +1 -1
  59. package/dist/shared/filereview/capture.d.ts +18 -1
  60. package/dist/shared/filereview/capture.js +105 -28
  61. package/dist/shared/filereview/capture.js.map +1 -1
  62. package/dist/shared/filereview/cas-substrate.d.ts +9 -0
  63. package/dist/shared/filereview/cas-substrate.js +9 -1
  64. package/dist/shared/filereview/cas-substrate.js.map +1 -1
  65. package/dist/shared/filereview/events.d.ts +16 -0
  66. package/dist/shared/filereview/events.js +37 -0
  67. package/dist/shared/filereview/events.js.map +1 -1
  68. package/dist/shared/filereview/git-substrate.d.ts +42 -0
  69. package/dist/shared/filereview/git-substrate.js +78 -0
  70. package/dist/shared/filereview/git-substrate.js.map +1 -1
  71. package/dist/shared/filereview/index.d.ts +3 -1
  72. package/dist/shared/filereview/index.js +3 -1
  73. package/dist/shared/filereview/index.js.map +1 -1
  74. package/dist/shared/filereview/line-counts.d.ts +48 -0
  75. package/dist/shared/filereview/line-counts.js +72 -0
  76. package/dist/shared/filereview/line-counts.js.map +1 -0
  77. package/dist/shared/filereview/progress.d.ts +96 -0
  78. package/dist/shared/filereview/progress.js +134 -0
  79. package/dist/shared/filereview/progress.js.map +1 -0
  80. package/dist/shared/implement-plan-prompt.d.ts +44 -0
  81. package/dist/shared/implement-plan-prompt.js +98 -0
  82. package/dist/shared/implement-plan-prompt.js.map +1 -0
  83. package/dist/shared/plan-artifact.d.ts +59 -11
  84. package/dist/shared/plan-artifact.js +144 -16
  85. package/dist/shared/plan-artifact.js.map +1 -1
  86. package/dist/shared/plan-mode-prompt.d.ts +32 -0
  87. package/dist/shared/plan-mode-prompt.js +56 -0
  88. package/dist/shared/plan-mode-prompt.js.map +1 -0
  89. package/dist/shared/status.d.ts +11 -0
  90. package/dist/shared/status.js +12 -2
  91. package/dist/shared/status.js.map +1 -1
  92. package/dist/shared/tool-row.d.ts +30 -1
  93. package/dist/shared/tool-row.js +53 -4
  94. package/dist/shared/tool-row.js.map +1 -1
  95. package/dist/shared/workspace/session-root.d.ts +35 -0
  96. package/dist/shared/workspace/session-root.js +53 -0
  97. package/dist/shared/workspace/session-root.js.map +1 -0
  98. package/dist/shared/workspace/workspace-lock.d.ts +86 -0
  99. package/dist/shared/workspace/workspace-lock.js +187 -0
  100. package/dist/shared/workspace/workspace-lock.js.map +1 -0
  101. package/package.json +8 -5
  102. package/src/__tests__/config.test.ts +8 -0
  103. package/src/activities/__tests__/classify-tool-approvals.test.ts +1 -0
  104. package/src/activities/__tests__/discover-mcp-server.test.ts +1 -0
  105. package/src/activities/execute-cursor/__tests__/attachment-resolver.test.ts +161 -0
  106. package/src/activities/execute-cursor/__tests__/build-prompt.test.ts +132 -2
  107. package/src/activities/execute-cursor/__tests__/cas-observations.test.ts +55 -0
  108. package/src/activities/execute-cursor/__tests__/delta-enricher.test.ts +68 -0
  109. package/src/activities/execute-cursor/__tests__/hitl-ledger.test.ts +28 -0
  110. package/src/activities/execute-cursor/__tests__/hook-script.test.ts +63 -4
  111. package/src/activities/execute-cursor/__tests__/turn-boundary.test.ts +280 -0
  112. package/src/activities/execute-cursor/__tests__/workspace-provision.test.ts +36 -2
  113. package/src/activities/execute-cursor/attachment-resolver.ts +116 -34
  114. package/src/activities/execute-cursor/capture-flow.ts +32 -0
  115. package/src/activities/execute-cursor/cas-observations.ts +41 -5
  116. package/src/activities/execute-cursor/hook-script.ts +19 -1
  117. package/src/activities/execute-cursor/index.ts +243 -178
  118. package/src/activities/execute-cursor/message-translator.ts +9 -1
  119. package/src/activities/execute-cursor/prompt-builder.ts +60 -22
  120. package/src/activities/execute-cursor/skill-resolver.ts +3 -59
  121. package/src/activities/execute-cursor/stigmer-link.ts +78 -0
  122. package/src/activities/execute-cursor/turn-boundary.ts +274 -0
  123. package/src/activities/execute-cursor/workspace-provision.ts +5 -3
  124. package/src/activities/execute-deep-agent/__tests__/hitl-resume-approve-all.test.ts +7 -2
  125. package/src/activities/execute-deep-agent/__tests__/hitl-resume-history.test.ts +7 -2
  126. package/src/activities/execute-deep-agent/__tests__/index.test.ts +4 -1
  127. package/src/activities/execute-deep-agent/__tests__/prompt-builder.test.ts +99 -0
  128. package/src/activities/execute-deep-agent/__tests__/sequential-gate-resume.test.ts +7 -2
  129. package/src/activities/execute-deep-agent/index.ts +104 -5
  130. package/src/activities/execute-deep-agent/prompt-builder.ts +39 -0
  131. package/src/activities/execute-deep-agent/setup.ts +25 -17
  132. package/src/activities/execute-deep-agent/streaming-v3.ts +6 -1
  133. package/src/activities/execute-deep-agent/streaming.ts +12 -1
  134. package/src/config.ts +17 -0
  135. package/src/middleware/__tests__/approval-gate.test.ts +77 -12
  136. package/src/middleware/approval-gate.ts +39 -7
  137. package/src/runner-manager.ts +6 -1
  138. package/src/runner.ts +6 -1
  139. package/src/shared/__tests__/artifact-storage.test.ts +111 -1
  140. package/src/shared/__tests__/implement-plan-prompt.test.ts +86 -0
  141. package/src/shared/__tests__/plan-artifact.test.ts +142 -9
  142. package/src/shared/__tests__/secret-leak-scan.test.ts +105 -0
  143. package/src/shared/__tests__/status.test.ts +7 -2
  144. package/src/shared/__tests__/tool-row.test.ts +136 -1
  145. package/src/shared/artifact-storage.ts +83 -1
  146. package/src/shared/filereview/__tests__/capture.test.ts +182 -1
  147. package/src/shared/filereview/__tests__/cas-substrate.test.ts +34 -0
  148. package/src/shared/filereview/__tests__/events.test.ts +105 -0
  149. package/src/shared/filereview/__tests__/line-counts.test.ts +73 -0
  150. package/src/shared/filereview/__tests__/progress.test.ts +236 -0
  151. package/src/shared/filereview/capture.ts +134 -30
  152. package/src/shared/filereview/cas-substrate.ts +17 -1
  153. package/src/shared/filereview/events.ts +50 -0
  154. package/src/shared/filereview/git-substrate.ts +108 -0
  155. package/src/shared/filereview/index.ts +22 -1
  156. package/src/shared/filereview/line-counts.ts +83 -0
  157. package/src/shared/filereview/progress.ts +186 -0
  158. package/src/shared/implement-plan-prompt.ts +104 -0
  159. package/src/shared/plan-artifact.ts +152 -16
  160. package/src/shared/plan-mode-prompt.ts +56 -0
  161. package/src/shared/status.ts +11 -1
  162. package/src/shared/tool-row.ts +58 -5
  163. package/src/shared/workspace/__tests__/session-root.test.ts +42 -0
  164. package/src/shared/workspace/__tests__/workspace-lock.test.ts +200 -0
  165. package/src/shared/workspace/session-root.ts +60 -0
  166. package/src/shared/workspace/workspace-lock.ts +241 -0
@@ -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) + CAS (blob refs) +
120
- // secret-blocked (content-less, DIFF_UNREVIEWABLE). The aggregate digest folds
121
- // all (buildCandidateCapturedEvent sorts by file digest), so the reviewed diff
122
- // and its identity span every substrate. deriveDiffCompleteness then rolls the
123
- // per-file signals up three ways: any content-less (non-binary) entry forces
124
- // PARTIAL_BLOCKED; a set blocked only by binaries is BINARY_SUMMARY_ONLY
125
- // (keepable in one acknowledged action); else COMPLETE.
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
- ...gitChanges.map((c) => buildCapturedFileChange(toCapturedChangeInput(changeSetId, c))),
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
- * Map a secret-blocked gitignored path to a content-less producer input (design
440
- * doc 12, DD-E). The bytes are deliberately never captured, so both sides are
441
- * absent (empty enforcement digests) and `diffComplete=false`. Being non-binary
442
- * incomplete with no keepable bytes, it forces the change set to PARTIAL_BLOCKED
443
- * (never BINARY_SUMMARY_ONLY) — approval is blocked and the path is surfaced
444
- * honestly, while its CONTENT never enters the ledger or storage. `blockedReason` records
445
- * the honest cause (SECRET_WITHHELD) so the review UI can say *why* rather than
446
- * showing a cause-agnostic "unavailable" (doc 15). Kind is MODIFY: the write was
447
- * blocked before it ran, so create-vs-modify is unknown and irrelevant (nothing
448
- * is ever applied or reconciled for this entry). `captureClass` is the turn's CAS
449
- * substrate class (GIT_IGNORED_CAPTURED | NON_GIT_CAS) so the blocked path is
450
- * labeled with its true provenance.
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 unreviewableChangeInput(changeSetId, path, captureClass) {
474
+ function secretWithheldChangeInput(id, pathBefore, pathAfter, kind, captureClass) {
453
475
  return {
454
- id: `${changeSetId}:${path}`,
455
- pathBefore: path,
456
- pathAfter: path,
457
- kind: FileChangeKind.MODIFY,
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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"}
@@ -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 {
@@ -52,6 +52,7 @@ import { dirname, join } from "node:path";
52
52
  import { FileChangeKind, } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
53
53
  import { bytesLookBinary } from "../file-change.js";
54
54
  import { sha256Bytes, sha256Hex } from "./digest.js";
55
+ import { countLineChanges } from "./line-counts.js";
55
56
  // ---------------------------------------------------------------------------
56
57
  // Key namespace (design doc 08: execution-scoped, reuse existing authz)
57
58
  // ---------------------------------------------------------------------------
@@ -123,6 +124,7 @@ async function buildCasCapturedFile(storage, executionId, capture) {
123
124
  : FileChangeKind.MODIFY;
124
125
  const isCreate = kind === FileChangeKind.ADD;
125
126
  const isDelete = kind === FileChangeKind.DELETE;
127
+ const isBinary = beforeRef?.isBinary || afterRef?.isBinary;
126
128
  return {
127
129
  pathBefore: isCreate ? "" : path,
128
130
  pathAfter: isDelete ? "" : path,
@@ -132,7 +134,13 @@ async function buildCasCapturedFile(storage, executionId, capture) {
132
134
  after: afterRef,
133
135
  // Binary on either side means the diff cannot render as text; the change set
134
136
  // then cannot be approved as complete (parity with the git substrate).
135
- diffComplete: !(beforeRef?.isBinary || afterRef?.isBinary),
137
+ diffComplete: !isBinary,
138
+ // Display counts are taken NOW, while the text bytes are still in memory —
139
+ // after this they exist only as offloaded blobs. A binary change has no
140
+ // line diff to count.
141
+ lineCounts: isBinary
142
+ ? undefined
143
+ : countLineChanges(beforeBuf?.toString("utf8"), afterBuf?.toString("utf8")),
136
144
  };
137
145
  }
138
146
  /** Upload bytes under their content-address, skipping the write when present. */
@@ -1 +1 @@
1
- {"version":3,"file":"cas-substrate.js","sourceRoot":"","sources":["../../../src/shared/filereview/cas-substrate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cas-substrate.js","sourceRoot":"","sources":["../../../src/shared/filereview/cas-substrate.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,7 @@
13
13
  import type { AgentExecutionStatus } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/api_pb";
14
14
  import type { CapturedFileChange, FileReviewEvent, SnapshotRef, TurnCommandProvenance } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/filereview_pb";
15
15
  import { DiffCompleteness, FileCaptureClass, FileChangeKind, FileReviewBlockReason, FileReviewEventType, FileReviewFailureKind } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
16
+ import { type LineChangeCounts } from "./line-counts.js";
16
17
  /**
17
18
  * The deterministic idempotency key for a file-review event:
18
19
  * `changeSetId:scopeId:eventTypeName`. Capture/reconcile/failure events are
@@ -86,6 +87,15 @@ export interface CapturedChangeInput {
86
87
  * this UNSPECIFIED. See {@link FileReviewBlockReason}.
87
88
  */
88
89
  readonly blockedReason?: FileReviewBlockReason;
90
+ /**
91
+ * Display line counts for this change, for producers whose bodies are not
92
+ * inline here (the CAS substrate counts from the in-memory bytes before
93
+ * offloading them as blob refs). Omit for inline content —
94
+ * {@link buildCapturedFileChange} then counts the inline sides itself, with
95
+ * the same shared {@link countLineChanges}. Informational only, never folded
96
+ * into the digests.
97
+ */
98
+ readonly lineCounts?: LineChangeCounts;
89
99
  }
90
100
  /**
91
101
  * The enforcement digest of one content side. Inline text is hashed as UTF-8
@@ -101,6 +111,12 @@ export declare function contentSha256(content: CapturedContent): string;
101
111
  * `file_digest`) over the captured bytes. Content may be inline (git) or a blob
102
112
  * ref (CAS) — the digests are identical either way, so the aggregate digest and
103
113
  * the reconcile enforcement compose across both substrates.
114
+ *
115
+ * Display line counts are stamped here too — the single seam every substrate
116
+ * flows through — from `input.lineCounts` when the producer counted at its own
117
+ * source (CAS), else counted from the inline sides. Counting happens BEFORE any
118
+ * persist-time offload, so the counts survive a body being elided later. They
119
+ * never enter `fileDigest` (informational, not enforcement).
104
120
  */
105
121
  export declare function buildCapturedFileChange(input: CapturedChangeInput): CapturedFileChange;
106
122
  /** Coordinates a change set's lifecycle so every event carries one identity. */
@@ -15,6 +15,7 @@ import { CapturedFileChangeSchema, FileReviewBaselineCapturedSchema, FileReviewC
15
15
  import { FileContentSchema, ToolCallOutputRefSchema, } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/message_pb";
16
16
  import { DiffCompleteness, FileReviewBlockReason, FileReviewEventType, } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
17
17
  import { aggregateDigest, fileDigest, sha256Bytes } from "./digest.js";
18
+ import { countLineChanges } from "./line-counts.js";
18
19
  import { looksBinary } from "../file-change.js";
19
20
  // The runner is the author of capture/reconcile/failure events. "runner" (not
20
21
  // the generic "system") matches the cross-edition corpus fixtures and the
@@ -67,6 +68,33 @@ export function contentSha256(content) {
67
68
  return content.sha256;
68
69
  }
69
70
  }
71
+ /**
72
+ * Count the display `+N −M` from a change's inline sides, or `undefined` when
73
+ * counting is not honest here: a side that exists without inline text (a `ref`
74
+ * whose bytes were already offloaded, or a `binary` side with no body), or
75
+ * inline text that would render as binary (the UI shows "Binary file changed"
76
+ * for it, never a line diff — a count would describe a diff nobody sees).
77
+ * An absent side is fine — it is the empty document of an ADD/DELETE.
78
+ */
79
+ function countInlineSides(before, after) {
80
+ const beforeText = inlineTextOrNull(before);
81
+ const afterText = inlineTextOrNull(after);
82
+ if (beforeText === null || afterText === null)
83
+ return undefined;
84
+ return countLineChanges(beforeText, afterText);
85
+ }
86
+ /**
87
+ * A side's countable inline text: the text for a non-binary inline side,
88
+ * `undefined` for an absent side (countable as the empty document), and `null`
89
+ * when the side exists but cannot be counted (ref / binary / binary-looking).
90
+ */
91
+ function inlineTextOrNull(content) {
92
+ if (content === undefined)
93
+ return undefined;
94
+ if (content.kind !== "inline" || looksBinary(content.text))
95
+ return null;
96
+ return content.text;
97
+ }
70
98
  /** Build the proto {@link FileContent} for one content side (inline, ref, or binary). */
71
99
  function toFileContent(content) {
72
100
  if (content.kind === "inline") {
@@ -103,12 +131,19 @@ function toFileContent(content) {
103
131
  * `file_digest`) over the captured bytes. Content may be inline (git) or a blob
104
132
  * ref (CAS) — the digests are identical either way, so the aggregate digest and
105
133
  * the reconcile enforcement compose across both substrates.
134
+ *
135
+ * Display line counts are stamped here too — the single seam every substrate
136
+ * flows through — from `input.lineCounts` when the producer counted at its own
137
+ * source (CAS), else counted from the inline sides. Counting happens BEFORE any
138
+ * persist-time offload, so the counts survive a body being elided later. They
139
+ * never enter `fileDigest` (informational, not enforcement).
106
140
  */
107
141
  export function buildCapturedFileChange(input) {
108
142
  const before = normalizeContent(input.before);
109
143
  const after = normalizeContent(input.after);
110
144
  const beforeSha256 = before ? contentSha256(before) : "";
111
145
  const afterSha256 = after ? contentSha256(after) : "";
146
+ const counts = input.lineCounts ?? countInlineSides(before, after);
112
147
  const fc = create(CapturedFileChangeSchema, {
113
148
  id: input.id,
114
149
  pathBefore: input.pathBefore,
@@ -119,6 +154,8 @@ export function buildCapturedFileChange(input) {
119
154
  afterSha256,
120
155
  diffComplete: input.diffComplete ?? true,
121
156
  blockedReason: input.blockedReason ?? FileReviewBlockReason.UNSPECIFIED,
157
+ linesAdded: counts?.linesAdded ?? 0,
158
+ linesRemoved: counts?.linesRemoved ?? 0,
122
159
  fileDigest: fileDigest({
123
160
  pathBefore: input.pathBefore,
124
161
  pathAfter: input.pathAfter,
@@ -1 +1 @@
1
- {"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/shared/filereview/events.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/shared/filereview/events.ts"],"names":[],"mappings":"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"}
@@ -132,6 +132,48 @@ export declare function snapshotBaseline(gitRoot: string, executionId: string, e
132
132
  * review model.
133
133
  */
134
134
  export declare function captureChangeSet(gitRoot: string, executionId: string, baselineTree: string, excludePaths?: readonly string[]): Promise<CaptureResult>;
135
+ /**
136
+ * One file's slim, content-free progress delta: paths + kind + line counts, NO
137
+ * bytes. The mid-run analogue of {@link GitSubstrateChange} (which carries the
138
+ * before/after {@link CapturedContent}); this deliberately carries neither side,
139
+ * so it can never leak content. `linesAdded`/`linesRemoved` are 0 when
140
+ * uncountable (a binary file — numstat reports `-`).
141
+ */
142
+ export interface GitProgressEntry {
143
+ /** Path before the change (repo-relative). Empty for a CREATE. */
144
+ readonly pathBefore: string;
145
+ /** Path after the change (repo-relative). Empty for a DELETE. */
146
+ readonly pathAfter: string;
147
+ readonly changeType: FileChangeType;
148
+ readonly linesAdded: number;
149
+ readonly linesRemoved: number;
150
+ }
151
+ /** Result of {@link captureProgressDelta}. */
152
+ export interface ProgressDelta {
153
+ /** The post-diff working-tree sha, for the caller's short-circuit cache. */
154
+ readonly afterTree: string;
155
+ /** One count-only entry per changed file (no content). */
156
+ readonly entries: readonly GitProgressEntry[];
157
+ }
158
+ /**
159
+ * Capture a NON-AUTHORITATIVE, content-free snapshot of the working-tree delta
160
+ * against `baselineTree` — the substrate for the live "N files changed so far"
161
+ * surface (mid-run live capture). Unlike {@link captureChangeSet} this reads NO
162
+ * file bytes: it stages the working tree into a temp index, writes its tree, and
163
+ * asks git for `--numstat` + `--name-status` only. Cheap enough to run on a
164
+ * debounce during the turn.
165
+ *
166
+ * Short-circuit: returns `undefined` when the working tree is unchanged since
167
+ * `lastTreeSha` (the caller passes back the previous result's `afterTree`), so a
168
+ * quiet turn pays only one `write-tree`, never a diff.
169
+ *
170
+ * Uses a dedicated temp-index label ("progress") so it never collides with the
171
+ * `baseline`/`capture`/`approved` indexes. `--no-renames` matches
172
+ * {@link captureChangeSet} (a rename surfaces as delete + create). A torn read of
173
+ * a file being written mid-turn is acceptable — the snapshot is non-authoritative
174
+ * and self-corrects on the next capture.
175
+ */
176
+ export declare function captureProgressDelta(gitRoot: string, executionId: string, baselineTree: string, excludePaths?: readonly string[], lastTreeSha?: string): Promise<ProgressDelta | undefined>;
135
177
  /**
136
178
  * Restore the given files to their `baselineTree` (pre-turn) bytes. On resume
137
179
  * this reverts the REJECTED/undecided subset so a discarded change snaps back
@@ -240,6 +240,48 @@ export async function captureChangeSet(gitRoot, executionId, baselineTree, exclu
240
240
  }
241
241
  return { baselineTree, afterTree, changes };
242
242
  }
243
+ /**
244
+ * Capture a NON-AUTHORITATIVE, content-free snapshot of the working-tree delta
245
+ * against `baselineTree` — the substrate for the live "N files changed so far"
246
+ * surface (mid-run live capture). Unlike {@link captureChangeSet} this reads NO
247
+ * file bytes: it stages the working tree into a temp index, writes its tree, and
248
+ * asks git for `--numstat` + `--name-status` only. Cheap enough to run on a
249
+ * debounce during the turn.
250
+ *
251
+ * Short-circuit: returns `undefined` when the working tree is unchanged since
252
+ * `lastTreeSha` (the caller passes back the previous result's `afterTree`), so a
253
+ * quiet turn pays only one `write-tree`, never a diff.
254
+ *
255
+ * Uses a dedicated temp-index label ("progress") so it never collides with the
256
+ * `baseline`/`capture`/`approved` indexes. `--no-renames` matches
257
+ * {@link captureChangeSet} (a rename surfaces as delete + create). A torn read of
258
+ * a file being written mid-turn is acceptable — the snapshot is non-authoritative
259
+ * and self-corrects on the next capture.
260
+ */
261
+ export async function captureProgressDelta(gitRoot, executionId, baselineTree, excludePaths = [], lastTreeSha) {
262
+ const gitDir = await resolveGitDir(gitRoot);
263
+ const afterTree = await writeWorkingTree(gitRoot, gitDir, "progress", executionId, excludePaths);
264
+ if (lastTreeSha !== undefined && afterTree === lastTreeSha)
265
+ return undefined;
266
+ const [nameStatusRaw, numstatRaw] = await Promise.all([
267
+ git(gitRoot, ["diff", "--no-renames", "--name-status", "-z", baselineTree, afterTree]),
268
+ git(gitRoot, ["diff", "--no-renames", "--numstat", "-z", baselineTree, afterTree]),
269
+ ]);
270
+ const counts = parseNumstatZ(numstatRaw);
271
+ const entries = [];
272
+ for (const { status, path } of parseNameStatusZ(nameStatusRaw)) {
273
+ const changeType = nameStatusToChangeType(status);
274
+ const count = counts.get(path);
275
+ entries.push({
276
+ pathBefore: changeType === FileChangeType.CREATE ? "" : path,
277
+ pathAfter: changeType === FileChangeType.DELETE ? "" : path,
278
+ changeType,
279
+ linesAdded: count?.added ?? 0,
280
+ linesRemoved: count?.removed ?? 0,
281
+ });
282
+ }
283
+ return { afterTree, entries };
284
+ }
243
285
  /**
244
286
  * Restore the given files to their `baselineTree` (pre-turn) bytes. On resume
245
287
  * this reverts the REJECTED/undecided subset so a discarded change snaps back
@@ -365,6 +407,42 @@ function parseNameStatusZ(raw) {
365
407
  }
366
408
  return entries;
367
409
  }
410
+ /**
411
+ * Parse `git diff --numstat -z` into a path -> {added, removed} map. Each record
412
+ * is a NUL-terminated `<added>\t<removed>\t<path>` triple; a binary file reports
413
+ * `-` for both counts, which we surface as 0 (no count) per the display contract.
414
+ */
415
+ function parseNumstatZ(raw) {
416
+ const counts = new Map();
417
+ for (const record of raw.split("\u0000")) {
418
+ if (!record)
419
+ continue;
420
+ const tab = record.indexOf("\t");
421
+ const tab2 = record.indexOf("\t", tab + 1);
422
+ if (tab < 0 || tab2 < 0)
423
+ continue;
424
+ const addedStr = record.slice(0, tab);
425
+ const removedStr = record.slice(tab + 1, tab2);
426
+ const path = record.slice(tab2 + 1);
427
+ if (!path)
428
+ continue;
429
+ const added = addedStr === "-" ? 0 : Number.parseInt(addedStr, 10) || 0;
430
+ const removed = removedStr === "-" ? 0 : Number.parseInt(removedStr, 10) || 0;
431
+ counts.set(path, { added, removed });
432
+ }
433
+ return counts;
434
+ }
435
+ /**
436
+ * Map a `--name-status` status letter to a {@link FileChangeType} — the same
437
+ * A -> CREATE, D -> DELETE, else MODIFY rule {@link buildCapturedChange} uses.
438
+ */
439
+ function nameStatusToChangeType(status) {
440
+ if (status === "A")
441
+ return FileChangeType.CREATE;
442
+ if (status === "D")
443
+ return FileChangeType.DELETE;
444
+ return FileChangeType.MODIFY;
445
+ }
368
446
  /** Read a blob's exact BYTES from a tree, or `undefined` when absent. */
369
447
  async function readBlobBytes(gitRoot, tree, path) {
370
448
  try {