agentera 3.0.0-dev.20 → 3.0.0-dev.21

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 (228) hide show
  1. package/README.md +19 -0
  2. package/bundle/CHANGELOG.md +63 -70
  3. package/bundle/README.md +17 -0
  4. package/bundle/UPGRADE.md +38 -0
  5. package/bundle/references/adapters/package-surface-characterization.md +7 -0
  6. package/bundle/references/artifacts/artifact-registry-interface-model.yaml +3 -3
  7. package/bundle/references/artifacts/state-storage-authority.yaml +1446 -0
  8. package/bundle/references/cli/agent-ready-state-contract.yaml +11 -39
  9. package/bundle/references/cli/audience-namespace-cli-migration.yaml +30 -15
  10. package/bundle/references/meta/documentation-inventory.md +1 -0
  11. package/bundle/skills/agentera/capabilities/audit/schemas/artifacts.yaml +18 -10
  12. package/bundle/skills/agentera/capabilities/audit/schemas/validation.yaml +10 -10
  13. package/bundle/skills/agentera/capabilities/build/schemas/artifacts.yaml +11 -6
  14. package/bundle/skills/agentera/capabilities/discuss/schemas/artifacts.yaml +3 -2
  15. package/bundle/skills/agentera/capabilities/document/schemas/artifacts.yaml +15 -8
  16. package/bundle/skills/agentera/capabilities/document/schemas/validation.yaml +13 -13
  17. package/bundle/skills/agentera/capabilities/orchestrate/schemas/artifacts.yaml +15 -9
  18. package/bundle/skills/agentera/references/contract.md +65 -23
  19. package/bundle/skills/agentera/schemas/artifacts/decisions.yaml +15 -10
  20. package/bundle/skills/agentera/schemas/artifacts/experiments.yaml +134 -3
  21. package/bundle/skills/agentera/schemas/artifacts/health.yaml +16 -10
  22. package/bundle/skills/agentera/schemas/artifacts/objective.yaml +18 -4
  23. package/bundle/skills/agentera/schemas/artifacts/plan.yaml +23 -1
  24. package/bundle/skills/agentera/schemas/artifacts/progress.yaml +16 -10
  25. package/bundle/skills/agentera/schemas/artifacts/todo.yaml +34 -0
  26. package/dist/capabilities/audit/instructions.js +1 -1
  27. package/dist/capabilities/audit/instructions.js.map +1 -1
  28. package/dist/capabilities/build/instructions.js +1 -1
  29. package/dist/capabilities/build/instructions.js.map +1 -1
  30. package/dist/capabilities/discuss/instructions.js +1 -1
  31. package/dist/capabilities/discuss/instructions.js.map +1 -1
  32. package/dist/capabilities/document/instructions.js +1 -1
  33. package/dist/capabilities/document/instructions.js.map +1 -1
  34. package/dist/capabilities/optimize/instructions.js +1 -1
  35. package/dist/capabilities/optimize/instructions.js.map +1 -1
  36. package/dist/capabilities/orchestrate/instructions.js +1 -1
  37. package/dist/capabilities/orchestrate/instructions.js.map +1 -1
  38. package/dist/capabilities/plan/instructions.js +1 -1
  39. package/dist/capabilities/plan/instructions.js.map +1 -1
  40. package/dist/capabilities/profile/instructions.js +1 -1
  41. package/dist/capabilities/profile/instructions.js.map +1 -1
  42. package/dist/capabilities/vision/instructions.js +1 -1
  43. package/dist/capabilities/vision/instructions.js.map +1 -1
  44. package/dist/cli/appContext.js +14 -6
  45. package/dist/cli/appContext.js.map +1 -1
  46. package/dist/cli/capabilityContext/bespoke.js +3 -1
  47. package/dist/cli/capabilityContext/bespoke.js.map +1 -1
  48. package/dist/cli/capabilityContext/build.js +5 -4
  49. package/dist/cli/capabilityContext/build.js.map +1 -1
  50. package/dist/cli/capabilityContext/closeout.js +2 -1
  51. package/dist/cli/capabilityContext/closeout.js.map +1 -1
  52. package/dist/cli/capabilityContext/contract.js +29 -0
  53. package/dist/cli/capabilityContext/contract.js.map +1 -1
  54. package/dist/cli/capabilityContext/evidence.js +21 -20
  55. package/dist/cli/capabilityContext/evidence.js.map +1 -1
  56. package/dist/cli/capabilityContext/orchestration.js +3 -2
  57. package/dist/cli/capabilityContext/orchestration.js.map +1 -1
  58. package/dist/cli/capabilityContext/progress.js +9 -4
  59. package/dist/cli/capabilityContext/progress.js.map +1 -1
  60. package/dist/cli/capabilityContext/slim.js +37 -6
  61. package/dist/cli/capabilityContext/slim.js.map +1 -1
  62. package/dist/cli/capabilityContext/startup.js +30 -6
  63. package/dist/cli/capabilityContext/startup.js.map +1 -1
  64. package/dist/cli/capabilityContext/types.js +14 -4
  65. package/dist/cli/capabilityContext/types.js.map +1 -1
  66. package/dist/cli/commands/backfill.js +194 -0
  67. package/dist/cli/commands/backfill.js.map +1 -0
  68. package/dist/cli/commands/compact.js +40 -11
  69. package/dist/cli/commands/compact.js.map +1 -1
  70. package/dist/cli/commands/durability.js +85 -0
  71. package/dist/cli/commands/durability.js.map +1 -0
  72. package/dist/cli/commands/migrate.js +677 -0
  73. package/dist/cli/commands/migrate.js.map +1 -0
  74. package/dist/cli/commands/prime/collectOrientationState.js +23 -0
  75. package/dist/cli/commands/prime/collectOrientationState.js.map +1 -1
  76. package/dist/cli/commands/prime/orientationOutput.js +4 -2
  77. package/dist/cli/commands/prime/orientationOutput.js.map +1 -1
  78. package/dist/cli/commands/query.js +20 -2
  79. package/dist/cli/commands/query.js.map +1 -1
  80. package/dist/cli/commands/schema.js +247 -69
  81. package/dist/cli/commands/schema.js.map +1 -1
  82. package/dist/cli/commands/state/decisions.js +28 -10
  83. package/dist/cli/commands/state/decisions.js.map +1 -1
  84. package/dist/cli/commands/state/experimentRecords.js +156 -0
  85. package/dist/cli/commands/state/experimentRecords.js.map +1 -0
  86. package/dist/cli/commands/state/get.js +141 -0
  87. package/dist/cli/commands/state/get.js.map +1 -0
  88. package/dist/cli/commands/state/index.js +2 -2
  89. package/dist/cli/commands/state/index.js.map +1 -1
  90. package/dist/cli/commands/state/list.js +159 -0
  91. package/dist/cli/commands/state/list.js.map +1 -0
  92. package/dist/cli/commands/state/plan.js +146 -41
  93. package/dist/cli/commands/state/plan.js.map +1 -1
  94. package/dist/cli/commands/state/planTasks.js +164 -0
  95. package/dist/cli/commands/state/planTasks.js.map +1 -0
  96. package/dist/cli/commands/state/plans.js +154 -0
  97. package/dist/cli/commands/state/plans.js.map +1 -0
  98. package/dist/cli/commands/state/write.js +8 -3
  99. package/dist/cli/commands/state/write.js.map +1 -1
  100. package/dist/cli/dispatch/check.js +71 -4
  101. package/dist/cli/dispatch/check.js.map +1 -1
  102. package/dist/cli/dispatch/index.js +48 -30
  103. package/dist/cli/dispatch/index.js.map +1 -1
  104. package/dist/cli/dispatch/lifecycle.js +4 -4
  105. package/dist/cli/dispatch/lifecycle.js.map +1 -1
  106. package/dist/cli/dispatch/state.js +23 -3
  107. package/dist/cli/dispatch/state.js.map +1 -1
  108. package/dist/cli/errors.js +13 -14
  109. package/dist/cli/errors.js.map +1 -1
  110. package/dist/cli/help.js +162 -3
  111. package/dist/cli/help.js.map +1 -1
  112. package/dist/cli/orientation.js +146 -34
  113. package/dist/cli/orientation.js.map +1 -1
  114. package/dist/cli/planArtifacts.js +31 -2
  115. package/dist/cli/planArtifacts.js.map +1 -1
  116. package/dist/cli/prime-blob.js +1 -0
  117. package/dist/cli/prime-blob.js.map +1 -1
  118. package/dist/cli/startupCompletenessContract.js +3 -2
  119. package/dist/cli/startupCompletenessContract.js.map +1 -1
  120. package/dist/cli/stateQuery.js +5 -3
  121. package/dist/cli/stateQuery.js.map +1 -1
  122. package/dist/core/text.js +11 -0
  123. package/dist/core/text.js.map +1 -0
  124. package/dist/hooks/compaction/apply.js +224 -46
  125. package/dist/hooks/compaction/apply.js.map +1 -1
  126. package/dist/hooks/compaction/dryRun.js +2 -0
  127. package/dist/hooks/compaction/dryRun.js.map +1 -1
  128. package/dist/hooks/compaction/index.js +4 -4
  129. package/dist/hooks/compaction/index.js.map +1 -1
  130. package/dist/hooks/compaction/parse.js +73 -5
  131. package/dist/hooks/compaction/parse.js.map +1 -1
  132. package/dist/hooks/compaction/retention.js +22 -21
  133. package/dist/hooks/compaction/retention.js.map +1 -1
  134. package/dist/hooks/compaction/status.js +116 -23
  135. package/dist/hooks/compaction/status.js.map +1 -1
  136. package/dist/hooks/sessionStart.js +39 -7
  137. package/dist/hooks/sessionStart.js.map +1 -1
  138. package/dist/hooks/validateArtifact/index.js +2 -2
  139. package/dist/hooks/validateArtifact/index.js.map +1 -1
  140. package/dist/hooks/validateArtifact/markdown.js +9 -9
  141. package/dist/hooks/validateArtifact/markdown.js.map +1 -1
  142. package/dist/hooks/validateArtifact/traversal.js +11 -9
  143. package/dist/hooks/validateArtifact/traversal.js.map +1 -1
  144. package/dist/registries/artifactRegistry.js +147 -44
  145. package/dist/registries/artifactRegistry.js.map +1 -1
  146. package/dist/release/releaseMetadata.js +95 -1
  147. package/dist/release/releaseMetadata.js.map +1 -1
  148. package/dist/state/archiveDiscovery.js +589 -0
  149. package/dist/state/archiveDiscovery.js.map +1 -0
  150. package/dist/state/archivePublication.js +225 -0
  151. package/dist/state/archivePublication.js.map +1 -0
  152. package/dist/state/archiveRecovery.js +238 -0
  153. package/dist/state/archiveRecovery.js.map +1 -0
  154. package/dist/state/archiveReplay.js +54 -0
  155. package/dist/state/archiveReplay.js.map +1 -0
  156. package/dist/state/decisionOverlay.js +255 -0
  157. package/dist/state/decisionOverlay.js.map +1 -0
  158. package/dist/state/directRetrieval.js +322 -0
  159. package/dist/state/directRetrieval.js.map +1 -0
  160. package/dist/state/durability.js +451 -0
  161. package/dist/state/durability.js.map +1 -0
  162. package/dist/state/experimentArchive.js +64 -0
  163. package/dist/state/experimentArchive.js.map +1 -0
  164. package/dist/state/experimentIdentity.js +191 -0
  165. package/dist/state/experimentIdentity.js.map +1 -0
  166. package/dist/state/experimentRetrieval.js +447 -0
  167. package/dist/state/experimentRetrieval.js.map +1 -0
  168. package/dist/state/gitBackfill.js +561 -0
  169. package/dist/state/gitBackfill.js.map +1 -0
  170. package/dist/state/gitBackfillAuthority.js +141 -0
  171. package/dist/state/gitBackfillAuthority.js.map +1 -0
  172. package/dist/state/gitBackfillHistory.js +278 -0
  173. package/dist/state/gitBackfillHistory.js.map +1 -0
  174. package/dist/state/gitBackfillOutput.js +209 -0
  175. package/dist/state/gitBackfillOutput.js.map +1 -0
  176. package/dist/state/healthRepair.js +70 -0
  177. package/dist/state/healthRepair.js.map +1 -0
  178. package/dist/state/legacyIdentity.js +48 -0
  179. package/dist/state/legacyIdentity.js.map +1 -0
  180. package/dist/state/legacyMigration.js +516 -0
  181. package/dist/state/legacyMigration.js.map +1 -0
  182. package/dist/state/legacyMigrationParser.js +489 -0
  183. package/dist/state/legacyMigrationParser.js.map +1 -0
  184. package/dist/state/listAccounting.js +55 -0
  185. package/dist/state/listAccounting.js.map +1 -0
  186. package/dist/state/listClassification.js +18 -0
  187. package/dist/state/listClassification.js.map +1 -0
  188. package/dist/state/listRetrieval.js +782 -0
  189. package/dist/state/listRetrieval.js.map +1 -0
  190. package/dist/state/migrationAuthority.js +413 -0
  191. package/dist/state/migrationAuthority.js.map +1 -0
  192. package/dist/state/migrationEnrichment.js +35 -0
  193. package/dist/state/migrationEnrichment.js.map +1 -0
  194. package/dist/state/planIdentity.js +45 -0
  195. package/dist/state/planIdentity.js.map +1 -0
  196. package/dist/state/planRetrieval.js +314 -0
  197. package/dist/state/planRetrieval.js.map +1 -0
  198. package/dist/state/planTaskRetrieval.js +285 -0
  199. package/dist/state/planTaskRetrieval.js.map +1 -0
  200. package/dist/state/projectionPolicy.js +184 -0
  201. package/dist/state/projectionPolicy.js.map +1 -0
  202. package/dist/state/retrievalAuthority.js +326 -0
  203. package/dist/state/retrievalAuthority.js.map +1 -0
  204. package/dist/state/startupProjection.js +498 -0
  205. package/dist/state/startupProjection.js.map +1 -0
  206. package/dist/state/write/experimentPublication.js +193 -0
  207. package/dist/state/write/experimentPublication.js.map +1 -0
  208. package/dist/state/write/explain.js +28 -14
  209. package/dist/state/write/explain.js.map +1 -1
  210. package/dist/state/write/helpers.js +8 -0
  211. package/dist/state/write/helpers.js.map +1 -0
  212. package/dist/state/write/index.js +1 -0
  213. package/dist/state/write/index.js.map +1 -1
  214. package/dist/state/write/lock.js +24 -1
  215. package/dist/state/write/lock.js.map +1 -1
  216. package/dist/state/write/mutation.js +190 -0
  217. package/dist/state/write/mutation.js.map +1 -0
  218. package/dist/state/write/operations.js +36 -2
  219. package/dist/state/write/operations.js.map +1 -1
  220. package/dist/state/write/planPublication.js +172 -0
  221. package/dist/state/write/planPublication.js.map +1 -0
  222. package/dist/state/write/transaction.js +238 -225
  223. package/dist/state/write/transaction.js.map +1 -1
  224. package/dist/upgrade/migrateArtifactsV2ToV3.js +2 -2
  225. package/dist/upgrade/migrateArtifactsV2ToV3.js.map +1 -1
  226. package/dist/validate/crossCapability.js +9 -6
  227. package/dist/validate/crossCapability.js.map +1 -1
  228. package/package.json +2 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"experimentRetrieval.js","sourceRoot":"","sources":["../../src/state/experimentRetrieval.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,561 @@
1
+ import { createHash } from "node:crypto";
2
+ import fs from "node:fs";
3
+ import path from "node:path";
4
+ import { spawnSync } from "node:child_process";
5
+ import { loadYamlMapping } from "../core/yaml.js";
6
+ import { resolveSourceRoot } from "../core/sourceRoot.js";
7
+ import { canonicalRecordJson, numberedArchiveArtifacts, numberedArchiveContract, stateCurrentProjectionPath, validateStateRecord, } from "./archiveDiscovery.js";
8
+ import { stateGitBackfillContract, } from "./gitBackfillAuthority.js";
9
+ import { archiveState, buildEntryOutput, buildResponse, provenanceFor, selectedOccurrence, sortedGroups, } from "./gitBackfillOutput.js";
10
+ import { publishNumberedArchive, } from "./archivePublication.js";
11
+ import { collectGitHistory } from "./gitBackfillHistory.js";
12
+ const GIT_TIMEOUT_MS = 1_000;
13
+ const GIT_MAX_BUFFER = 4 * 1024 * 1024;
14
+ function defaultGitRunner(args, cwd) {
15
+ const result = spawnSync("git", args, {
16
+ cwd,
17
+ encoding: "utf8",
18
+ timeout: GIT_TIMEOUT_MS,
19
+ maxBuffer: GIT_MAX_BUFFER,
20
+ shell: false,
21
+ windowsHide: true,
22
+ });
23
+ return {
24
+ status: result.status,
25
+ stdout: typeof result.stdout === "string" ? result.stdout : "",
26
+ timedOut: result.error?.code === "ETIMEDOUT" ||
27
+ result.signal === "SIGTERM",
28
+ ...(result.error?.code
29
+ ? { error: result.error.code }
30
+ : {}),
31
+ };
32
+ }
33
+ function successful(result) {
34
+ return result.status === 0 && !result.timedOut && !result.error;
35
+ }
36
+ function failureReason(result, fallback = "git_probe_error") {
37
+ if (result.timedOut)
38
+ return "git_probe_timeout";
39
+ if (result.error || result.status === null)
40
+ return "git_probe_error";
41
+ return fallback;
42
+ }
43
+ function textResult(run, args, cwd, fallback = "git_probe_error") {
44
+ const result = run(args, cwd);
45
+ if (successful(result))
46
+ return { value: result.stdout.trim(), reason: "available" };
47
+ return { reason: failureReason(result, fallback) };
48
+ }
49
+ function readHead(run, root) {
50
+ return textResult(run, ["rev-parse", "--verify", "HEAD^{commit}"], root, "missing_commit");
51
+ }
52
+ function safePath(relative) {
53
+ const normalized = path.posix.normalize(relative);
54
+ return (normalized === relative &&
55
+ !path.posix.isAbsolute(relative) &&
56
+ relative !== "" &&
57
+ !relative.split("/").includes(".."));
58
+ }
59
+ function projectGitPath(projectRoot, gitRoot, relative) {
60
+ const selected = path.relative(gitRoot, path.resolve(projectRoot, relative));
61
+ const normalized = selected.split(path.sep).join("/");
62
+ if (!safePath(normalized))
63
+ return undefined;
64
+ return normalized;
65
+ }
66
+ function displayPath(projectRoot, gitRoot, gitPath) {
67
+ const absolute = path.resolve(gitRoot, gitPath);
68
+ const relative = path.relative(projectRoot, absolute).split(path.sep).join("/");
69
+ return safePath(relative) ? relative : undefined;
70
+ }
71
+ function gitContext(projectRoot, run) {
72
+ const inside = textResult(run, ["rev-parse", "--is-inside-work-tree"], projectRoot);
73
+ if (inside.value !== "true")
74
+ return { refs: [], shallow: false, reason: inside.reason };
75
+ const rootValue = textResult(run, ["rev-parse", "--show-toplevel"], projectRoot);
76
+ if (!rootValue.value)
77
+ return { refs: [], shallow: false, reason: rootValue.reason };
78
+ const root = path.resolve(rootValue.value);
79
+ const head = readHead(run, root);
80
+ const refsResult = run(["for-each-ref", "--format=%(refname)", "refs/heads", "refs/tags"], root);
81
+ if (!successful(refsResult))
82
+ return { refs: [], shallow: false, reason: failureReason(refsResult) };
83
+ const refs = ["HEAD"];
84
+ for (const ref of refsResult.stdout.split(/\r?\n/).map((value) => value.trim())) {
85
+ if ((ref.startsWith("refs/heads/") || ref.startsWith("refs/tags/")) && !refs.includes(ref))
86
+ refs.push(ref);
87
+ }
88
+ const shallow = textResult(run, ["rev-parse", "--is-shallow-repository"], root);
89
+ return {
90
+ root,
91
+ ...(head.value ? { before: head.value } : {}),
92
+ refs,
93
+ shallow: shallow.value === "true",
94
+ ...(head.value ? {} : { reason: head.reason }),
95
+ };
96
+ }
97
+ function positiveNumber(value) {
98
+ if (typeof value === "number" && Number.isSafeInteger(value) && value > 0)
99
+ return value;
100
+ if (typeof value === "string" && /^[1-9][0-9]*$/.test(value)) {
101
+ const parsed = Number(value);
102
+ if (Number.isSafeInteger(parsed))
103
+ return parsed;
104
+ }
105
+ return undefined;
106
+ }
107
+ function isObject(value) {
108
+ return value !== null && typeof value === "object" && !Array.isArray(value);
109
+ }
110
+ function parseProjection(bytes, artifactId, sourceRoot) {
111
+ try {
112
+ const contract = numberedArchiveContract(artifactId, sourceRoot);
113
+ const root = loadYamlMapping(bytes);
114
+ const values = root[contract.entryCollection];
115
+ if (!Array.isArray(values))
116
+ return { records: [] };
117
+ const records = [];
118
+ for (const value of values) {
119
+ if (!isObject(value)) {
120
+ records.push({});
121
+ continue;
122
+ }
123
+ const entryNumber = positiveNumber(value[contract.entryNumberField]);
124
+ if (entryNumber === undefined) {
125
+ records.push({ record: value });
126
+ continue;
127
+ }
128
+ records.push({ entryNumber, record: value });
129
+ }
130
+ return { records };
131
+ }
132
+ catch (error) {
133
+ return { records: [], error: `cannot parse ${artifactId} projection: ${error.message}` };
134
+ }
135
+ }
136
+ function projectionTargets(projectRoot, sourceRoot, artifact, number) {
137
+ const targets = new Map();
138
+ const diagnostics = [];
139
+ const artifacts = artifact ? [artifact] : numberedArchiveArtifacts(sourceRoot);
140
+ for (const artifactId of artifacts) {
141
+ const projection = stateCurrentProjectionPath(projectRoot, artifactId, sourceRoot);
142
+ if (!fs.existsSync(projection)) {
143
+ if (number !== undefined) {
144
+ const entryId = `${artifactId}:${number}`;
145
+ targets.set(entryId, { artifactId, entryNumber: number, entryId });
146
+ }
147
+ continue;
148
+ }
149
+ let bytes;
150
+ try {
151
+ bytes = fs.readFileSync(projection, "utf8");
152
+ }
153
+ catch (error) {
154
+ diagnostics.push(`cannot read ${artifactId} projection: ${error.message}`);
155
+ continue;
156
+ }
157
+ const parsed = parseProjection(bytes, artifactId, sourceRoot);
158
+ if (parsed.error)
159
+ diagnostics.push(parsed.error);
160
+ for (const item of parsed.records) {
161
+ if (item.entryNumber === undefined || (number !== undefined && item.entryNumber !== number))
162
+ continue;
163
+ const entryId = `${artifactId}:${item.entryNumber}`;
164
+ targets.set(entryId, { artifactId, entryNumber: item.entryNumber, entryId });
165
+ }
166
+ if (number !== undefined) {
167
+ const entryId = `${artifactId}:${number}`;
168
+ targets.set(entryId, { artifactId, entryNumber: number, entryId });
169
+ }
170
+ }
171
+ return { targets, diagnostics };
172
+ }
173
+ function projectionHashes(projectRoot, sourceRoot) {
174
+ const hashes = {};
175
+ for (const artifactId of numberedArchiveArtifacts(sourceRoot)) {
176
+ const projection = stateCurrentProjectionPath(projectRoot, artifactId, sourceRoot);
177
+ let bytes = "<missing>";
178
+ try {
179
+ bytes = fs.readFileSync(projection, "utf8");
180
+ }
181
+ catch {
182
+ // A missing projection is part of the deterministic byte snapshot.
183
+ }
184
+ hashes[artifactId] = createHash("sha256").update(bytes, "utf8").digest("hex");
185
+ }
186
+ return hashes;
187
+ }
188
+ function parseTreeEntries(stdout) {
189
+ const entries = [];
190
+ for (const item of stdout.split("\0")) {
191
+ if (!item)
192
+ continue;
193
+ const tab = item.indexOf("\t");
194
+ if (tab < 0)
195
+ continue;
196
+ const metadata = item.slice(0, tab).trim().split(/\s+/);
197
+ const treePath = item.slice(tab + 1);
198
+ if (metadata[1] === "blob" && /^[0-9a-f]+$/.test(metadata[2] ?? "") && safePath(treePath)) {
199
+ entries.push({ blobId: metadata[2], path: treePath });
200
+ }
201
+ }
202
+ return entries;
203
+ }
204
+ function parseTreeEntry(stdout) {
205
+ return parseTreeEntries(stdout)[0];
206
+ }
207
+ function addHistoricalIssue(invalid, base, artifactId, entryId, message) {
208
+ const values = invalid.get(entryId) ?? [];
209
+ if (!values.some((value) => value.commit === base.commit && value.path === base.path && value.blobId === base.blobId)) {
210
+ values.push({
211
+ ...base,
212
+ artifactId,
213
+ entryId,
214
+ contentHash: null,
215
+ message,
216
+ });
217
+ }
218
+ invalid.set(entryId, values);
219
+ }
220
+ function targetIdsForArtifact(targetIds, artifactId) {
221
+ return [...targetIds].filter((entryId) => entryId.startsWith(`${artifactId}:`));
222
+ }
223
+ function occurrenceFromProjection(bytes, occurrence, artifactId, sourceRoot, targetIds, invalid, add) {
224
+ const parsed = parseProjection(bytes, artifactId, sourceRoot);
225
+ if (parsed.error) {
226
+ for (const entryId of targetIdsForArtifact(targetIds, artifactId)) {
227
+ addHistoricalIssue(invalid, occurrence, artifactId, entryId, parsed.error);
228
+ }
229
+ return;
230
+ }
231
+ for (const item of parsed.records) {
232
+ if (item.entryNumber === undefined) {
233
+ for (const entryId of targetIdsForArtifact(targetIds, artifactId)) {
234
+ addHistoricalIssue(invalid, occurrence, artifactId, entryId, "historical record has no valid entry number");
235
+ }
236
+ continue;
237
+ }
238
+ const entryId = `${artifactId}:${item.entryNumber}`;
239
+ if (!targetIds.has(entryId) && targetIds.size > 0)
240
+ continue;
241
+ if (!item.record) {
242
+ addHistoricalIssue(invalid, occurrence, artifactId, entryId, "historical record is not a mapping");
243
+ continue;
244
+ }
245
+ try {
246
+ const violations = validateStateRecord(sourceRoot, artifactId, item.record);
247
+ if (violations.length > 0) {
248
+ addHistoricalIssue(invalid, occurrence, artifactId, entryId, violations.join("; "));
249
+ continue;
250
+ }
251
+ const contentHash = createHash("sha256")
252
+ .update(canonicalRecordJson(item.record), "utf8")
253
+ .digest("hex");
254
+ add({
255
+ ...occurrence,
256
+ entryId,
257
+ artifactId,
258
+ entryNumber: item.entryNumber,
259
+ contentHash,
260
+ record: item.record,
261
+ });
262
+ }
263
+ catch (error) {
264
+ addHistoricalIssue(invalid, occurrence, artifactId, entryId, error.message);
265
+ }
266
+ }
267
+ }
268
+ function addGroup(groups, occurrence) {
269
+ let group = groups.get(occurrence.entryId);
270
+ if (!group) {
271
+ group = {
272
+ artifactId: occurrence.artifactId,
273
+ entryNumber: occurrence.entryNumber,
274
+ entryId: occurrence.entryId,
275
+ versions: new Map(),
276
+ };
277
+ groups.set(occurrence.entryId, group);
278
+ }
279
+ const version = group.versions.get(occurrence.contentHash) ?? [];
280
+ const duplicate = version.some((item) => item.commit === occurrence.commit && item.path === occurrence.path && item.blobId === occurrence.blobId);
281
+ if (!duplicate)
282
+ version.push(occurrence);
283
+ group.versions.set(occurrence.contentHash, version);
284
+ }
285
+ function markBounded(scan, reason) {
286
+ scan.bounded = true;
287
+ if (!scan.boundedReasons.includes(reason))
288
+ scan.boundedReasons.push(reason);
289
+ }
290
+ function consumeHistoryWork(scan) {
291
+ if (scan.historyWork >= scan.contract.maximumCommits) {
292
+ markBounded(scan, "commit_count");
293
+ const diagnostic = "history commit/probe budget exhausted; remaining Git history was not inspected";
294
+ if (!scan.diagnostics.includes(diagnostic))
295
+ scan.diagnostics.push(diagnostic);
296
+ return false;
297
+ }
298
+ scan.historyWork += 1;
299
+ return true;
300
+ }
301
+ function chargeHistoryBytes(scan, bytes) {
302
+ const size = Buffer.byteLength(bytes, "utf8");
303
+ if (scan.historyBytes + size > scan.contract.maximumHistoryBytes) {
304
+ markBounded(scan, "history_bytes");
305
+ scan.diagnostics.push("history byte budget exhausted; remaining Git history was not inspected");
306
+ return false;
307
+ }
308
+ scan.historyBytes += size;
309
+ return true;
310
+ }
311
+ function scanBackfill(project, args, options) {
312
+ const sourceRoot = options.sourceRoot ?? resolveSourceRoot();
313
+ const contract = stateGitBackfillContract(sourceRoot);
314
+ const projectRoot = path.resolve(project);
315
+ const run = options.runGit ?? defaultGitRunner;
316
+ const targetState = projectionTargets(projectRoot, sourceRoot, args.artifact, args.number);
317
+ const context = gitContext(projectRoot, run);
318
+ const hashes = projectionHashes(projectRoot, sourceRoot);
319
+ const scan = {
320
+ projectRoot,
321
+ sourceRoot,
322
+ contract,
323
+ ...(context.before ? { beforeHead: context.before } : {}),
324
+ afterHead: undefined,
325
+ headStatus: context.before ? "stable" : "unavailable",
326
+ ...(context.root ? { gitRoot: context.root } : {}),
327
+ ...(context.reason ? { gitReason: context.reason } : {}),
328
+ refs: context.refs,
329
+ shallow: context.shallow,
330
+ bounded: false,
331
+ boundedReasons: [],
332
+ historyWork: 0,
333
+ historyBytes: 0,
334
+ targets: targetState.targets,
335
+ groups: new Map(),
336
+ rewritten: new Map(),
337
+ invalid: new Map(),
338
+ reachableCommits: new Set(),
339
+ diagnostics: [...targetState.diagnostics, ...(context.reason ? [`Git unavailable: ${context.reason}`] : [])],
340
+ projectionHashes: hashes,
341
+ };
342
+ if (context.root && context.before) {
343
+ collectGitHistory(scan, run, context, {
344
+ projectionGitPath: (currentScan, gitRoot, artifactId) => projectGitPath(currentScan.projectRoot, gitRoot, path.relative(currentScan.projectRoot, stateCurrentProjectionPath(currentScan.projectRoot, artifactId, currentScan.sourceRoot))),
345
+ displayPath,
346
+ parseTreeEntry,
347
+ occurrenceFromProjection,
348
+ addGroup,
349
+ markBounded,
350
+ consumeHistoryWork,
351
+ chargeHistoryBytes,
352
+ });
353
+ }
354
+ const after = context.root ? readHead(run, context.root) : undefined;
355
+ if (after?.value)
356
+ scan.afterHead = after.value;
357
+ if (scan.beforeHead && !scan.afterHead) {
358
+ scan.headStatus = "unavailable";
359
+ scan.diagnostics.push(`Git HEAD could not be captured after the scan: ${after?.reason ?? "missing_commit"}`);
360
+ }
361
+ else if (scan.beforeHead && scan.afterHead && scan.beforeHead !== scan.afterHead) {
362
+ scan.headStatus = "changed";
363
+ scan.diagnostics.push("Git HEAD changed during the read-only history scan");
364
+ }
365
+ return scan;
366
+ }
367
+ function captureRefs(run, root) {
368
+ const result = run(["for-each-ref", "--format=%(refname)", "refs/heads", "refs/tags"], root);
369
+ if (!successful(result))
370
+ return undefined;
371
+ const refs = ["HEAD"];
372
+ for (const ref of result.stdout.split(/\r?\n/).map((value) => value.trim())) {
373
+ if ((ref.startsWith("refs/heads/") || ref.startsWith("refs/tags/")) && !refs.includes(ref))
374
+ refs.push(ref);
375
+ }
376
+ return refs;
377
+ }
378
+ function candidateReachable(run, root, commit, refs) {
379
+ for (const ref of refs) {
380
+ const result = run(["merge-base", "--is-ancestor", commit, ref], root);
381
+ if (result.status === 0 && !result.timedOut && !result.error)
382
+ return true;
383
+ if (result.timedOut || result.error)
384
+ return false;
385
+ }
386
+ return false;
387
+ }
388
+ function revalidate(scan, run, candidate) {
389
+ if (!scan.gitRoot || !scan.beforeHead)
390
+ return { ok: false, reason: "git_unavailable" };
391
+ const before = readHead(run, scan.gitRoot);
392
+ if (before.value !== scan.beforeHead)
393
+ return { ok: false, reason: "changed_head" };
394
+ const refs = captureRefs(run, scan.gitRoot);
395
+ if (!refs || !candidateReachable(run, scan.gitRoot, candidate.commit, refs)) {
396
+ return { ok: false, reason: "candidate_changed" };
397
+ }
398
+ const tree = run(["ls-tree", "-r", "-z", candidate.commit, "--", candidate.gitPath], scan.gitRoot);
399
+ const treeEntry = successful(tree) ? parseTreeEntry(tree.stdout) : undefined;
400
+ if (!treeEntry || treeEntry.blobId !== candidate.blobId)
401
+ return { ok: false, reason: "candidate_changed" };
402
+ const content = run(["cat-file", "-p", candidate.blobId], scan.gitRoot);
403
+ if (!successful(content))
404
+ return { ok: false, reason: "candidate_changed" };
405
+ if (!chargeHistoryBytes(scan, content.stdout))
406
+ return { ok: false, reason: "candidate_changed" };
407
+ let matched = false;
408
+ occurrenceFromProjection(content.stdout, candidate, candidate.artifactId, scan.sourceRoot, new Set([candidate.entryId]), new Map(), (value) => {
409
+ if (value.entryId === candidate.entryId && value.contentHash === candidate.contentHash)
410
+ matched = true;
411
+ });
412
+ if (!matched)
413
+ return { ok: false, reason: "candidate_changed" };
414
+ const after = readHead(run, scan.gitRoot);
415
+ if (!after.value || after.value !== scan.beforeHead) {
416
+ return { ok: false, reason: after.value ? "changed_head" : "git_unavailable" };
417
+ }
418
+ return { ok: true, afterHead: after.value };
419
+ }
420
+ export function inspectGitBackfill(project, args = {}, options = {}) {
421
+ const scan = scanBackfill(project, args, options);
422
+ const groups = sortedGroups(scan, args);
423
+ const allEntries = [];
424
+ for (const group of groups) {
425
+ allEntries.push(buildEntryOutput(scan, group, args, false));
426
+ for (const rewritten of scan.rewritten.get(group.entryId) ?? []) {
427
+ if (group.versions.size === 0) {
428
+ allEntries.push({
429
+ entry_id: group.entryId,
430
+ artifact_id: group.artifactId,
431
+ entry_number: group.entryNumber,
432
+ commit: rewritten.commit,
433
+ path: rewritten.path,
434
+ blob_id: rewritten.blobId,
435
+ content_hash: rewritten.contentHash,
436
+ ambiguity_reason: "history_rewritten",
437
+ eligible: false,
438
+ reachable: false,
439
+ provenance: provenanceFor([rewritten]),
440
+ operation: "refused",
441
+ });
442
+ }
443
+ }
444
+ }
445
+ const limit = Math.min(args.limit ?? scan.contract.defaultLimit, scan.contract.maximumLimit);
446
+ const entries = allEntries.slice(0, limit);
447
+ const omittedCount = allEntries.length - entries.length;
448
+ const status = !scan.gitRoot
449
+ ? "unavailable"
450
+ : entries.some((entry) => entry.ambiguity_reason === "no_matching_pin")
451
+ ? "blocked"
452
+ : omittedCount > 0 || scan.headStatus !== "stable" || scan.bounded || entries.some((entry) => entry.ambiguity_reason !== "none")
453
+ ? "degraded"
454
+ : "complete";
455
+ return buildResponse(scan, "inventory", entries, scan.diagnostics, status, omittedCount);
456
+ }
457
+ export function previewGitBackfill(project, args = {}, options = {}) {
458
+ const scan = scanBackfill(project, args, options);
459
+ const groups = sortedGroups(scan, args);
460
+ const allEntries = groups.map((group) => buildEntryOutput(scan, group, args, true));
461
+ const limit = Math.min(args.limit ?? scan.contract.defaultLimit, scan.contract.maximumLimit);
462
+ const entries = allEntries.slice(0, limit);
463
+ const omittedCount = allEntries.length - entries.length;
464
+ const status = entries.some((entry) => entry.ambiguity_reason === "no_matching_pin")
465
+ ? "blocked"
466
+ : omittedCount > 0
467
+ ? "degraded"
468
+ : entries.some((entry) => entry.proposed_archive_bytes !== undefined)
469
+ ? entries.some((entry) => !entry.eligible) || scan.headStatus !== "stable" || scan.bounded
470
+ ? "degraded"
471
+ : "complete"
472
+ : scan.gitRoot
473
+ ? entries.some((entry) => entry.ambiguity_reason !== "none")
474
+ ? "degraded"
475
+ : "blocked"
476
+ : "unavailable";
477
+ return buildResponse(scan, "preview", entries, scan.diagnostics, status, omittedCount);
478
+ }
479
+ export function applyGitBackfill(project, args, options = {}) {
480
+ const scan = scanBackfill(project, args, options);
481
+ const groups = sortedGroups(scan, args);
482
+ const group = groups[0];
483
+ const entries = [];
484
+ const beforeHashes = scan.projectionHashes;
485
+ if (!group || groups.length !== 1 || !args.artifact || args.number === undefined) {
486
+ const response = buildResponse(scan, "apply", group ? [buildEntryOutput(scan, group, args, true)] : [], [...scan.diagnostics, "apply requires exactly one --artifact and --number selector"], "blocked");
487
+ response.active_projections_unchanged = true;
488
+ return response;
489
+ }
490
+ const candidate = selectedOccurrence(scan, group, args);
491
+ const entry = buildEntryOutput(scan, group, args, true);
492
+ if (!candidate || !entry.eligible) {
493
+ entry.operation = "refused";
494
+ entry.refusal = entry.ambiguity_reason;
495
+ entries.push(entry);
496
+ const response = buildResponse(scan, "apply", entries, scan.diagnostics, "blocked");
497
+ response.active_projections_unchanged = true;
498
+ return response;
499
+ }
500
+ if (!entry.proposed_archive_bytes || !entry.record_sha256) {
501
+ entry.eligible = false;
502
+ entry.operation = "refused";
503
+ entry.refusal = "candidate did not produce immutable archive bytes";
504
+ entries.push(entry);
505
+ const response = buildResponse(scan, "apply", entries, scan.diagnostics, "blocked");
506
+ response.active_projections_unchanged = true;
507
+ return response;
508
+ }
509
+ const run = options.runGit ?? defaultGitRunner;
510
+ const archiveStatus = archiveState(scan.projectRoot, scan.sourceRoot, group);
511
+ if (archiveStatus === "conflict") {
512
+ entry.eligible = false;
513
+ entry.ambiguity_reason = "immutable_conflict";
514
+ entry.operation = "refused";
515
+ entry.refusal = "immutable archive content differs; existing bytes were preserved";
516
+ entries.push(entry);
517
+ const response = buildResponse(scan, "apply", entries, scan.diagnostics, "blocked");
518
+ response.active_projections_unchanged = true;
519
+ return response;
520
+ }
521
+ const valid = revalidate(scan, run, candidate);
522
+ if (!valid.ok) {
523
+ entry.eligible = false;
524
+ entry.operation = "refused";
525
+ entry.ambiguity_reason = valid.reason ?? "candidate_changed";
526
+ entry.refusal = valid.reason ?? "candidate_changed";
527
+ entries.push(entry);
528
+ const response = buildResponse(scan, "apply", entries, scan.diagnostics, "blocked");
529
+ response.active_projections_unchanged = true;
530
+ return response;
531
+ }
532
+ try {
533
+ const result = publishNumberedArchive(scan.projectRoot, group.artifactId, group.entryNumber, candidate.record, { sourceRoot: scan.sourceRoot });
534
+ entry.operation = result.replay ? "replayed" : "applied";
535
+ entries.push(entry);
536
+ const after = scan.gitRoot ? readHead(run, scan.gitRoot) : undefined;
537
+ if (after?.value)
538
+ scan.afterHead = after.value;
539
+ if (!after?.value || after.value !== scan.beforeHead) {
540
+ scan.headStatus = after?.value ? "changed" : "unavailable";
541
+ scan.diagnostics.push("Git HEAD changed or became unavailable after archive publication");
542
+ }
543
+ const response = buildResponse(scan, "apply", entries, scan.diagnostics, scan.headStatus === "stable" ? "complete" : "degraded");
544
+ response.active_projection_hashes = projectionHashes(scan.projectRoot, scan.sourceRoot);
545
+ response.active_projections_unchanged = JSON.stringify(beforeHashes) === JSON.stringify(response.active_projection_hashes);
546
+ return response;
547
+ }
548
+ catch (error) {
549
+ entry.operation = "refused";
550
+ entry.eligible = false;
551
+ entry.ambiguity_reason = /immutable archive|conflict/i.test(error.message)
552
+ ? "immutable_conflict"
553
+ : "candidate_changed";
554
+ entry.refusal = error.message;
555
+ entries.push(entry);
556
+ const response = buildResponse(scan, "apply", entries, scan.diagnostics, "blocked");
557
+ response.active_projections_unchanged = JSON.stringify(beforeHashes) === JSON.stringify(projectionHashes(scan.projectRoot, scan.sourceRoot));
558
+ return response;
559
+ }
560
+ }
561
+ //# sourceMappingURL=gitBackfill.js.map