agentera 3.0.0-dev.25 → 3.0.0-dev.26

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 (270) hide show
  1. package/README.md +16 -20
  2. package/bundle/CHANGELOG.md +15 -25
  3. package/bundle/README.md +13 -34
  4. package/bundle/UPGRADE.md +71 -165
  5. package/bundle/references/adapters/package-manifest-interface-model.yaml +40 -241
  6. package/bundle/references/adapters/package-registry.yaml +0 -145
  7. package/bundle/references/adapters/package-surface-characterization.md +13 -38
  8. package/bundle/references/adapters/runtime-lifecycle-adapters.yaml +5 -219
  9. package/bundle/references/adapters/runtime-lifecycle-authority.yaml +2 -29
  10. package/bundle/references/adapters/runtime-lifecycle-operation-contract.yaml +1 -1
  11. package/bundle/references/artifacts/state-storage-authority.yaml +43 -447
  12. package/bundle/references/cli/agent-ready-state-contract.yaml +9 -9
  13. package/bundle/references/cli/app-lifecycle-vocabulary.yaml +3 -4
  14. package/bundle/references/cli/bundle-skill-vocabulary.yaml +9 -18
  15. package/bundle/references/cli/capability-tool-classification.yaml +2 -2
  16. package/bundle/references/cli/prime-consumer-compatibility.yaml +28 -98
  17. package/bundle/references/cli/routing-execution-vocabulary.yaml +4 -22
  18. package/bundle/references/cli/upgrade-repair-wording.md +8 -28
  19. package/bundle/references/cli/v3-handoff-manifest.schema.yaml +2 -3
  20. package/bundle/references/cli/vocabulary.md +18 -23
  21. package/bundle/references/meta/documentation-inventory.md +1 -1
  22. package/bundle/skills/agentera/schemas/artifacts/docs.yaml +3 -11
  23. package/bundle/skills/agentera/schemas/artifacts/plan.yaml +1 -1
  24. package/dist/cli/capabilityContext/bespoke.js +8 -2
  25. package/dist/cli/capabilityContext/bespoke.js.map +1 -1
  26. package/dist/cli/capabilityContext/closeout.js +3 -3
  27. package/dist/cli/capabilityContext/closeout.js.map +1 -1
  28. package/dist/cli/capabilityContext/evidence.js +52 -40
  29. package/dist/cli/capabilityContext/evidence.js.map +1 -1
  30. package/dist/cli/capabilityContext/startup.js +1 -1
  31. package/dist/cli/capabilityContext/startup.js.map +1 -1
  32. package/dist/cli/commands/doctor.js +6 -64
  33. package/dist/cli/commands/doctor.js.map +1 -1
  34. package/dist/cli/commands/durability.js +12 -48
  35. package/dist/cli/commands/durability.js.map +1 -1
  36. package/dist/cli/commands/prime/briefOrientation.js +2 -19
  37. package/dist/cli/commands/prime/briefOrientation.js.map +1 -1
  38. package/dist/cli/commands/prime/bundleStatus.js +8 -2
  39. package/dist/cli/commands/prime/bundleStatus.js.map +1 -1
  40. package/dist/cli/commands/prime/collectEntityOrientation.js +27 -14
  41. package/dist/cli/commands/prime/collectEntityOrientation.js.map +1 -1
  42. package/dist/cli/commands/prime/collectOrientationState.js +31 -52
  43. package/dist/cli/commands/prime/collectOrientationState.js.map +1 -1
  44. package/dist/cli/commands/prime/orientationOutput.js +3 -11
  45. package/dist/cli/commands/prime/orientationOutput.js.map +1 -1
  46. package/dist/cli/commands/prime.js +0 -5
  47. package/dist/cli/commands/prime.js.map +1 -1
  48. package/dist/cli/commands/query.js +17 -49
  49. package/dist/cli/commands/query.js.map +1 -1
  50. package/dist/cli/commands/schema.js +19 -78
  51. package/dist/cli/commands/schema.js.map +1 -1
  52. package/dist/cli/commands/state/decisions.js +11 -57
  53. package/dist/cli/commands/state/decisions.js.map +1 -1
  54. package/dist/cli/commands/state/docs.js +56 -120
  55. package/dist/cli/commands/state/docs.js.map +1 -1
  56. package/dist/cli/commands/state/experimentRecords.js +22 -121
  57. package/dist/cli/commands/state/experimentRecords.js.map +1 -1
  58. package/dist/cli/commands/state/experiments.js +9 -75
  59. package/dist/cli/commands/state/experiments.js.map +1 -1
  60. package/dist/cli/commands/state/get.js +62 -143
  61. package/dist/cli/commands/state/get.js.map +1 -1
  62. package/dist/cli/commands/state/health.js +9 -123
  63. package/dist/cli/commands/state/health.js.map +1 -1
  64. package/dist/cli/commands/state/index.js +2 -2
  65. package/dist/cli/commands/state/index.js.map +1 -1
  66. package/dist/cli/commands/state/list.js +20 -36
  67. package/dist/cli/commands/state/list.js.map +1 -1
  68. package/dist/cli/commands/state/objective.js +19 -86
  69. package/dist/cli/commands/state/objective.js.map +1 -1
  70. package/dist/cli/commands/state/plan.js +9 -388
  71. package/dist/cli/commands/state/plan.js.map +1 -1
  72. package/dist/cli/commands/state/planTasks.js +58 -93
  73. package/dist/cli/commands/state/planTasks.js.map +1 -1
  74. package/dist/cli/commands/state/plans.js +13 -40
  75. package/dist/cli/commands/state/plans.js.map +1 -1
  76. package/dist/cli/commands/state/progress.js +10 -55
  77. package/dist/cli/commands/state/progress.js.map +1 -1
  78. package/dist/cli/commands/state/todo.js +24 -133
  79. package/dist/cli/commands/state/todo.js.map +1 -1
  80. package/dist/cli/commands/state/write.js +11 -33
  81. package/dist/cli/commands/state/write.js.map +1 -1
  82. package/dist/cli/commands/upgrade.js +48 -18
  83. package/dist/cli/commands/upgrade.js.map +1 -1
  84. package/dist/cli/commands/upgradeVerify.js +21 -15
  85. package/dist/cli/commands/upgradeVerify.js.map +1 -1
  86. package/dist/cli/commands/validate.js +1 -9
  87. package/dist/cli/commands/validate.js.map +1 -1
  88. package/dist/cli/dispatch/check.js +5 -12
  89. package/dist/cli/dispatch/check.js.map +1 -1
  90. package/dist/cli/dispatch/index.js +30 -29
  91. package/dist/cli/dispatch/index.js.map +1 -1
  92. package/dist/cli/dispatch/lifecycle.js +23 -40
  93. package/dist/cli/dispatch/lifecycle.js.map +1 -1
  94. package/dist/cli/help.js +20 -100
  95. package/dist/cli/help.js.map +1 -1
  96. package/dist/cli/migrationRequired.js +22 -19
  97. package/dist/cli/migrationRequired.js.map +1 -1
  98. package/dist/cli/orientation/attention.js +1 -97
  99. package/dist/cli/orientation/attention.js.map +1 -1
  100. package/dist/cli/stateQuery.js +1 -2
  101. package/dist/cli/stateQuery.js.map +1 -1
  102. package/dist/core/skillIdentity.js +24 -0
  103. package/dist/core/skillIdentity.js.map +1 -0
  104. package/dist/hooks/common.js +1 -1
  105. package/dist/hooks/common.js.map +1 -1
  106. package/dist/hooks/compaction/status.js +2 -1
  107. package/dist/hooks/compaction/status.js.map +1 -1
  108. package/dist/hooks/cursorSessionStart.js +4 -25
  109. package/dist/hooks/cursorSessionStart.js.map +1 -1
  110. package/dist/hooks/projectHookInput.js +26 -0
  111. package/dist/hooks/projectHookInput.js.map +1 -0
  112. package/dist/hooks/sessionStart.js +23 -239
  113. package/dist/hooks/sessionStart.js.map +1 -1
  114. package/dist/hooks/sessionStop.js +4 -12
  115. package/dist/hooks/sessionStop.js.map +1 -1
  116. package/dist/hooks/validateArtifact/traversal.js +1 -1
  117. package/dist/hooks/validateArtifact/traversal.js.map +1 -1
  118. package/dist/registries/artifactRegistry.js +2 -1
  119. package/dist/registries/artifactRegistry.js.map +1 -1
  120. package/dist/registries/packageRegistry.js +57 -231
  121. package/dist/registries/packageRegistry.js.map +1 -1
  122. package/dist/release/releaseMetadata.js +1 -13
  123. package/dist/release/releaseMetadata.js.map +1 -1
  124. package/dist/runtime/lifecycleAdapterContract.js +4 -4
  125. package/dist/runtime/lifecycleAdapterContract.js.map +1 -1
  126. package/dist/runtime/lifecycleAdapters.js +14 -2
  127. package/dist/runtime/lifecycleAdapters.js.map +1 -1
  128. package/dist/runtime/lifecycleAuthority.js +5 -43
  129. package/dist/runtime/lifecycleAuthority.js.map +1 -1
  130. package/dist/runtime/lifecycleOperationContract.js +3 -2
  131. package/dist/runtime/lifecycleOperationContract.js.map +1 -1
  132. package/dist/runtime/lifecyclePublication.js +21 -0
  133. package/dist/runtime/lifecyclePublication.js.map +1 -1
  134. package/dist/setup/opencode.js +20 -12
  135. package/dist/setup/opencode.js.map +1 -1
  136. package/dist/setup/sharedSkill.js +46 -0
  137. package/dist/setup/sharedSkill.js.map +1 -0
  138. package/dist/setup/smokeChecks.js +16 -43
  139. package/dist/setup/smokeChecks.js.map +1 -1
  140. package/dist/state/decisionEntities.js +7 -4
  141. package/dist/state/decisionEntities.js.map +1 -1
  142. package/dist/state/durability.js +4 -240
  143. package/dist/state/durability.js.map +1 -1
  144. package/dist/state/entityCutover.js +90 -186
  145. package/dist/state/entityCutover.js.map +1 -1
  146. package/dist/state/entityStorage.js +27 -8
  147. package/dist/state/entityStorage.js.map +1 -1
  148. package/dist/state/healthEntities.js +7 -4
  149. package/dist/state/healthEntities.js.map +1 -1
  150. package/dist/state/objectiveExperimentEntities.js +7 -5
  151. package/dist/state/objectiveExperimentEntities.js.map +1 -1
  152. package/dist/state/planEntities.js +14 -10
  153. package/dist/state/planEntities.js.map +1 -1
  154. package/dist/state/progressEntities.js +4 -2
  155. package/dist/state/progressEntities.js.map +1 -1
  156. package/dist/state/startupProjection.js +3 -2
  157. package/dist/state/startupProjection.js.map +1 -1
  158. package/dist/state/stateMode.js +7 -0
  159. package/dist/state/stateMode.js.map +1 -1
  160. package/dist/state/todoDocsEntities.js +6 -4
  161. package/dist/state/todoDocsEntities.js.map +1 -1
  162. package/dist/state/write/explain.js +1 -9
  163. package/dist/state/write/explain.js.map +1 -1
  164. package/dist/state/write/transaction.js +22 -532
  165. package/dist/state/write/transaction.js.map +1 -1
  166. package/dist/upgrade/appContentRefresh.js +43 -28
  167. package/dist/upgrade/appContentRefresh.js.map +1 -1
  168. package/dist/upgrade/doctor.js +5 -1
  169. package/dist/upgrade/doctor.js.map +1 -1
  170. package/dist/upgrade/installedHooksRetirement.js +46 -39
  171. package/dist/upgrade/installedHooksRetirement.js.map +1 -1
  172. package/dist/upgrade/legacyAgentCleanup.js +132 -32
  173. package/dist/upgrade/legacyAgentCleanup.js.map +1 -1
  174. package/dist/upgrade/lifecycleUpgrade.js +65 -378
  175. package/dist/upgrade/lifecycleUpgrade.js.map +1 -1
  176. package/dist/upgrade/migrateArtifactsV2ToV3.js +151 -52
  177. package/dist/upgrade/migrateArtifactsV2ToV3.js.map +1 -1
  178. package/dist/upgrade/migrationPublication.js +123 -0
  179. package/dist/upgrade/migrationPublication.js.map +1 -0
  180. package/dist/upgrade/projectIntegration.js +46 -113
  181. package/dist/upgrade/projectIntegration.js.map +1 -1
  182. package/dist/upgrade/projectIntegrationDecision.js +6 -96
  183. package/dist/upgrade/projectIntegrationDecision.js.map +1 -1
  184. package/dist/upgrade/runtimeMigration.js +222 -402
  185. package/dist/upgrade/runtimeMigration.js.map +1 -1
  186. package/dist/upgrade/upgradeCommands.js +5 -4
  187. package/dist/upgrade/upgradeCommands.js.map +1 -1
  188. package/dist/upgrade/upgradeLock.js +73 -41
  189. package/dist/upgrade/upgradeLock.js.map +1 -1
  190. package/dist/upgrade/upgradeOrchestrator.js +91 -158
  191. package/dist/upgrade/upgradeOrchestrator.js.map +1 -1
  192. package/dist/upgrade/v3CapabilitySurface.js +2 -2
  193. package/dist/validate/appHomeContract.js +0 -4
  194. package/dist/validate/appHomeContract.js.map +1 -1
  195. package/package.json +7 -5
  196. package/bundle/.codex-plugin/plugin.json +0 -92
  197. package/bundle/.cursor/agents/agentera.md +0 -7
  198. package/bundle/.cursor/hooks.json +0 -32
  199. package/bundle/.cursor-plugin/plugin.json +0 -34
  200. package/bundle/.github/hooks/postToolUse.json +0 -9
  201. package/bundle/.github/hooks/preToolUse.json +0 -8
  202. package/bundle/.github/hooks/sessionEnd.json +0 -8
  203. package/bundle/.github/hooks/sessionStart.json +0 -8
  204. package/bundle/.github/plugin/plugin.json +0 -7
  205. package/bundle/.opencode/agents/agentera.md +0 -12
  206. package/bundle/.opencode/commands/agentera.md +0 -5
  207. package/bundle/.opencode/package.json +0 -31
  208. package/bundle/.opencode/plugins/agentera.js +0 -820
  209. package/bundle/agents/openai.yaml +0 -87
  210. package/bundle/hooks/codex-hooks.json +0 -31
  211. package/bundle/hooks/codex-plugin-hooks.json +0 -31
  212. package/bundle/plugin.json +0 -13
  213. package/bundle/references/adapters/cursor.md +0 -224
  214. package/bundle/references/adapters/opencode.md +0 -529
  215. package/bundle/references/adapters/runtime-adapter-characterization.md +0 -44
  216. package/bundle/references/adapters/runtime-adapter-interface-model.yaml +0 -200
  217. package/bundle/references/adapters/runtime-adapter-registry.yaml +0 -387
  218. package/bundle/references/adapters/runtime-feature-parity.md +0 -129
  219. package/dist/cli/commands/backfill.js +0 -231
  220. package/dist/cli/commands/backfill.js.map +0 -1
  221. package/dist/cli/commands/migrate.js +0 -681
  222. package/dist/cli/commands/migrate.js.map +0 -1
  223. package/dist/registries/runtimeAdapterRegistry.js +0 -324
  224. package/dist/registries/runtimeAdapterRegistry.js.map +0 -1
  225. package/dist/setup/copilot.js +0 -227
  226. package/dist/setup/copilot.js.map +0 -1
  227. package/dist/setup/cursor.js +0 -129
  228. package/dist/setup/cursor.js.map +0 -1
  229. package/dist/setup/cursorSurfaces.js +0 -67
  230. package/dist/setup/cursorSurfaces.js.map +0 -1
  231. package/dist/setup/doctor/core.js +0 -296
  232. package/dist/setup/doctor/core.js.map +0 -1
  233. package/dist/setup/doctor/diagnostics.js +0 -201
  234. package/dist/setup/doctor/diagnostics.js.map +0 -1
  235. package/dist/setup/doctor/opencode.js +0 -301
  236. package/dist/setup/doctor/opencode.js.map +0 -1
  237. package/dist/setup/doctor/report.js +0 -425
  238. package/dist/setup/doctor/report.js.map +0 -1
  239. package/dist/setup/doctor.js +0 -10
  240. package/dist/setup/doctor.js.map +0 -1
  241. package/dist/state/gitBackfill.js +0 -561
  242. package/dist/state/gitBackfill.js.map +0 -1
  243. package/dist/state/gitBackfillAuthority.js +0 -141
  244. package/dist/state/gitBackfillAuthority.js.map +0 -1
  245. package/dist/state/gitBackfillHistory.js +0 -278
  246. package/dist/state/gitBackfillHistory.js.map +0 -1
  247. package/dist/state/gitBackfillOutput.js +0 -209
  248. package/dist/state/gitBackfillOutput.js.map +0 -1
  249. package/dist/state/legacyMigration.js +0 -516
  250. package/dist/state/legacyMigration.js.map +0 -1
  251. package/dist/state/legacyMigrationParser.js +0 -489
  252. package/dist/state/legacyMigrationParser.js.map +0 -1
  253. package/dist/state/migrationAuthority.js +0 -413
  254. package/dist/state/migrationAuthority.js.map +0 -1
  255. package/dist/state/migrationEnrichment.js +0 -35
  256. package/dist/state/migrationEnrichment.js.map +0 -1
  257. package/dist/state/projectionRecovery.js +0 -458
  258. package/dist/state/projectionRecovery.js.map +0 -1
  259. package/dist/upgrade/migrateArtifactsV1ToV2.js +0 -568
  260. package/dist/upgrade/migrateArtifactsV1ToV2.js.map +0 -1
  261. package/dist/validate/lifecycleAdapters/legacyPythonParity.js +0 -93
  262. package/dist/validate/lifecycleAdapters/legacyPythonParity.js.map +0 -1
  263. package/dist/validate/lifecycleAdapters/lifecycleMain.js +0 -154
  264. package/dist/validate/lifecycleAdapters/lifecycleMain.js.map +0 -1
  265. package/dist/validate/lifecycleAdapters/nodeFormChecks.js +0 -481
  266. package/dist/validate/lifecycleAdapters/nodeFormChecks.js.map +0 -1
  267. package/dist/validate/lifecycleAdapters/shared.js +0 -198
  268. package/dist/validate/lifecycleAdapters/shared.js.map +0 -1
  269. package/dist/validate/lifecycleAdapters.js +0 -10
  270. package/dist/validate/lifecycleAdapters.js.map +0 -1
@@ -2,7 +2,6 @@ import { createHash, randomUUID } from "node:crypto";
2
2
  import fs from "node:fs";
3
3
  import path from "node:path";
4
4
  import { dumpYamlMapping, loadYamlMapping } from "../core/yaml.js";
5
- import { writeFileAtomic } from "../upgrade/atomicWriter.js";
6
5
  import { canonicalRecordJson } from "./archiveDiscovery.js";
7
6
  import { verifyEntityCutoverGitSource } from "./entityCutoverGit.js";
8
7
  import { canonicalEntityEnvelopeBytes, validateEntityState } from "./entityStorage.js";
@@ -12,12 +11,10 @@ import { validateRealProjectRoot } from "./projectRoot.js";
12
11
  import { readProjectFileSnapshot } from "./safeProjectFile.js";
13
12
  import { acquireWriterLock } from "./write/lock.js";
14
13
  export const MIGRATION_ROOT = ".agentera/migrations/entities";
15
- export const MIGRATION_STAGING = `${MIGRATION_ROOT}/staging`;
16
14
  export const FORWARD_MANIFEST = `${MIGRATION_ROOT}/forward.yaml`;
17
15
  export const ENTITY_MODE_MARKER = ".agentera/state-mode.yaml";
18
- const STAGING_PROJECT = `${MIGRATION_STAGING}/project`;
19
16
  const MANIFEST_SCHEMA = "agentera.entityCutoverManifest.v1";
20
- const MARKER_BYTES = dumpYamlMapping({ schemaVersion: "agentera.stateMode.v1", mode: "entities", cutover: "one_way_git" });
17
+ const MARKER_BYTES = dumpYamlMapping({ schemaVersion: "agentera.stateMode.v1", mode: "entities" });
21
18
  const SHA256 = /^[a-f0-9]{64}$/;
22
19
  export class EntityCutoverError extends Error {
23
20
  constructor(message) {
@@ -43,144 +40,105 @@ function safeTarget(value) {
43
40
  function markerSnapshot(project) {
44
41
  return readProjectFileSnapshot(validateRealProjectRoot(project), ENTITY_MODE_MARKER);
45
42
  }
46
- function manifestBytes(manifest) {
47
- return dumpYamlMapping(manifest);
48
- }
49
- function parseForwardManifest(bytes) {
43
+ function parseHistoricalForwardManifest(bytes) {
50
44
  const value = loadYamlMapping(bytes.toString("utf8"));
51
45
  if (!exactKeys(value, ["schemaVersion", "phase", "source", "targets", "marker"])
52
46
  || value.schemaVersion !== MANIFEST_SCHEMA
53
- || !["publishing_entities", "entities_published"].includes(String(value.phase))
54
- || !mapping(value.source)
55
- || !exactKeys(value.source, ["head", "source_fingerprint", "preview_digest"])
56
- || typeof value.source.head !== "string"
57
- || !/^[a-f0-9]{40,64}$/.test(value.source.head)
58
- || typeof value.source.source_fingerprint !== "string"
59
- || !SHA256.test(value.source.source_fingerprint)
60
- || typeof value.source.preview_digest !== "string"
61
- || !SHA256.test(value.source.preview_digest)
47
+ || value.phase !== "entities_published"
62
48
  || !mapping(value.marker)
63
- || !exactKeys(value.marker, ["path", "sha256"])
64
49
  || value.marker.path !== ENTITY_MODE_MARKER
65
- || value.marker.sha256 !== hash(MARKER_BYTES)
50
+ || typeof value.marker.sha256 !== "string"
51
+ || !SHA256.test(value.marker.sha256)
66
52
  || !Array.isArray(value.targets)) {
67
- throw new EntityCutoverError(`forward cutover manifest '${FORWARD_MANIFEST}' is invalid`);
53
+ throw new EntityCutoverError(`historical cutover manifest '${FORWARD_MANIFEST}' is invalid`);
68
54
  }
69
55
  const targets = value.targets.map((raw) => {
70
56
  if (!mapping(raw) || !exactKeys(raw, ["path", "sha256"]) || typeof raw.path !== "string" || !safeTarget(raw.path) || typeof raw.sha256 !== "string" || !SHA256.test(raw.sha256)) {
71
- throw new EntityCutoverError(`forward cutover manifest '${FORWARD_MANIFEST}' has an invalid target`);
57
+ throw new EntityCutoverError(`historical cutover manifest '${FORWARD_MANIFEST}' has an invalid target`);
72
58
  }
73
59
  return { path: raw.path, sha256: raw.sha256 };
74
60
  });
75
- if (new Set(targets.map(({ path: target }) => target)).size !== targets.length
76
- || canonicalRecordJson([...targets].sort((a, b) => a.path.localeCompare(b.path))) !== canonicalRecordJson(targets)) {
77
- throw new EntityCutoverError(`forward cutover manifest '${FORWARD_MANIFEST}' targets must be unique and sorted`);
78
- }
79
- return {
80
- schemaVersion: MANIFEST_SCHEMA,
81
- phase: value.phase,
82
- source: value.source,
83
- targets,
84
- marker: value.marker,
85
- };
61
+ return { schemaVersion: MANIFEST_SCHEMA, phase: "entities_published", targets, marker: value.marker };
86
62
  }
87
- function loadForwardManifest(project) {
63
+ function loadHistoricalForwardManifest(project) {
88
64
  const observed = readProjectFileSnapshot(validateRealProjectRoot(project), FORWARD_MANIFEST);
89
65
  if (observed.kind === "missing")
90
66
  return null;
91
67
  if (observed.kind !== "file")
92
- throw new EntityCutoverError(`forward cutover manifest '${FORWARD_MANIFEST}' is unsafe`);
93
- return parseForwardManifest(observed.bytes);
68
+ throw new EntityCutoverError(`historical cutover manifest '${FORWARD_MANIFEST}' is unsafe`);
69
+ return parseHistoricalForwardManifest(observed.bytes);
94
70
  }
95
71
  function targetsForPlan(plan) {
96
72
  const targets = plan.entries.map((entry) => {
97
73
  const target = entry.proposed_target;
98
74
  if (!target || typeof target.id !== "string" || typeof entry.artifact !== "string" || !safeTarget(target.path))
99
- throw new EntityCutoverError(`migration source '${entry.source_identity}' has no safe canonical target`);
100
- const id = target.id;
101
- const artifact = entry.artifact;
102
- const bytes = canonicalEntityEnvelopeBytes({ id, artifact, record: entry.record });
103
- const sha256 = hash(bytes);
104
- if (entry.target_sha256 !== sha256)
105
- throw new EntityCutoverError(`migration source '${entry.source_identity}' target digest is not deterministic`);
106
- return { path: target.path, sha256 };
75
+ throw new EntityCutoverError(`first unresolved path '${entry.source_paths[0] ?? ".agentera"}': source has no safe canonical target`);
76
+ const bytes = canonicalEntityEnvelopeBytes({ id: target.id, artifact: entry.artifact, record: entry.record });
77
+ if (entry.target_sha256 !== hash(bytes))
78
+ throw new EntityCutoverError(`first unresolved path '${target.path}': converted entity bytes are not deterministic`);
79
+ return { path: target.path, sha256: hash(bytes) };
107
80
  }).sort((a, b) => a.path.localeCompare(b.path));
108
81
  if (new Set(targets.map(({ path: target }) => target)).size !== targets.length)
109
- throw new EntityCutoverError("entity cutover target paths are not unique");
82
+ throw new EntityCutoverError("first unresolved path '.agentera/entities': converted target paths are not unique");
110
83
  return targets;
111
84
  }
112
85
  function assertPlanReady(plan, sourceRoot) {
86
+ const blocker = plan.diagnostics[0];
113
87
  if (plan.counts.blockers > 0)
114
- throw new EntityCutoverError(`entity migration inventory has ${plan.counts.blockers} blocker(s); repair the read-only preview before upgrade`);
88
+ throw new EntityCutoverError(`first unresolved path '${blocker?.path ?? ".agentera"}': ${blocker?.message ?? `${plan.counts.blockers} migration blocker(s)`}`);
115
89
  const invalid = validateEntityMigrationTargets(plan.project, plan.entries, sourceRoot)[0];
116
90
  if (invalid)
117
- throw new EntityCutoverError(`mapped record '${invalid.sourceIdentity}' is invalid: ${invalid.message}`);
91
+ throw new EntityCutoverError(`first unresolved path '${invalid.path}': ${invalid.message}`);
118
92
  }
119
93
  function listFiles(project, relativeRoot) {
120
94
  const absoluteRoot = path.join(project, relativeRoot);
121
95
  if (!fs.existsSync(absoluteRoot))
122
96
  return [];
123
- const rootStat = fs.lstatSync(absoluteRoot);
124
- if (!rootStat.isDirectory() || rootStat.isSymbolicLink() || fs.realpathSync(absoluteRoot) !== absoluteRoot)
125
- throw new EntityCutoverError(`cutover path '${relativeRoot}' must be a real project directory`);
126
97
  const found = [];
127
98
  const visit = (directory) => {
99
+ const stat = fs.lstatSync(directory);
100
+ if (!stat.isDirectory() || stat.isSymbolicLink() || fs.realpathSync(directory) !== directory)
101
+ throw new EntityCutoverError(`first unresolved path '${path.relative(project, directory)}': expected a real project directory`);
128
102
  for (const entry of fs.readdirSync(directory, { withFileTypes: true }).sort((a, b) => a.name.localeCompare(b.name))) {
129
103
  const absolute = path.join(directory, entry.name);
130
104
  const relative = path.relative(project, absolute).split(path.sep).join("/");
131
105
  if (entry.isSymbolicLink())
132
- throw new EntityCutoverError(`cutover path '${relative}' must not be a symbolic link`);
133
- if (entry.isDirectory()) {
134
- if (fs.realpathSync(absolute) !== absolute)
135
- throw new EntityCutoverError(`cutover directory '${relative}' is unsafe`);
106
+ throw new EntityCutoverError(`first unresolved path '${relative}': symbolic links are not import targets`);
107
+ if (entry.isDirectory())
136
108
  visit(absolute);
137
- }
138
109
  else if (entry.isFile())
139
110
  found.push(relative);
140
111
  else
141
- throw new EntityCutoverError(`cutover path '${relative}' must be a regular file or directory`);
112
+ throw new EntityCutoverError(`first unresolved path '${relative}': expected a regular file`);
142
113
  }
143
114
  };
144
115
  visit(absoluteRoot);
145
116
  return found.sort();
146
117
  }
147
- function validateExistingCanonicalTargets(project, targets, requireAll) {
118
+ function validateExistingTargets(project, targets) {
148
119
  const expected = new Map(targets.map((target) => [target.path, target]));
149
120
  for (const relative of listFiles(project, ".agentera/entities")) {
150
- const target = expected.get(relative);
151
- if (!target)
152
- throw new EntityCutoverError(`canonical entity '${relative}' is outside the bounded forward manifest`);
121
+ if (!expected.has(relative))
122
+ throw new EntityCutoverError(`first unresolved path '${relative}': entity is not part of the converted v2 input`);
153
123
  }
154
124
  for (const target of targets) {
155
125
  const observed = readProjectFileSnapshot(validateRealProjectRoot(project), target.path);
156
- if (observed.kind === "missing") {
157
- if (requireAll)
158
- throw new EntityCutoverError(`canonical entity '${target.path}' is missing after entity publication`);
126
+ if (observed.kind === "missing")
159
127
  continue;
160
- }
161
128
  if (observed.kind !== "file" || hash(observed.bytes) !== target.sha256)
162
- throw new EntityCutoverError(`canonical entity '${target.path}' diverges from the bounded forward manifest`);
163
- }
164
- }
165
- function assertManifestMatchesPlan(manifest, plan, head, targets) {
166
- if ((head !== null && manifest.source.head !== head)
167
- || manifest.source.source_fingerprint !== plan.source_fingerprint
168
- || manifest.source.preview_digest !== plan.preview_digest
169
- || canonicalRecordJson(manifest.targets) !== canonicalRecordJson(targets)) {
170
- throw new EntityCutoverError("forward cutover manifest does not match the current Git-pinned migration source");
129
+ throw new EntityCutoverError(`first unresolved path '${target.path}': existing target is not an exact converted match`);
171
130
  }
172
131
  }
173
132
  function validateActiveEntityCutover(project, markerBytes, sourceRoot) {
174
- const targets = loadEntityCutoverTargetsForMarker(project, markerBytes);
175
133
  const result = validateEntityState(project, sourceRoot);
176
- if (!result.valid)
177
- throw new EntityCutoverError(`active entity state is invalid: ${result.issues.map(({ message }) => message).join("; ")}`);
134
+ if (!result.valid || result.entityCount === 0)
135
+ throw new EntityCutoverError(`active entity state is invalid: ${result.entityCount === 0 ? "no canonical entities were published" : result.issues.map(({ message }) => message).join("; ")}`);
136
+ const targets = loadEntityCutoverTargetsForMarker(project, markerBytes);
178
137
  const byPath = new Map(result.entities.map((entity) => [entity.relativePath, entity]));
179
138
  for (const target of targets) {
180
139
  const entity = byPath.get(target.path);
181
- if (!entity || entity.classification !== "valid" || (target.id && entity.id !== target.id) || (target.artifact && entity.artifact !== target.artifact)) {
140
+ if (!entity || entity.classification !== "valid" || (target.id && entity.id !== target.id) || (target.artifact && entity.artifact !== target.artifact))
182
141
  throw new EntityCutoverError(`active entity target '${target.path}' is missing or invalid`);
183
- }
184
142
  }
185
143
  return result.entityCount;
186
144
  }
@@ -189,50 +147,47 @@ export function loadEntityCutoverTargetsForMarker(projectRoot, bytes) {
189
147
  const marker = loadYamlMapping(bytes.toString("utf8"));
190
148
  if (marker.schemaVersion !== "agentera.stateMode.v1" || marker.mode !== "entities")
191
149
  throw new EntityCutoverError("state marker is not valid entity authority");
150
+ if (marker.cutover === undefined && marker.migration_id === undefined)
151
+ return [];
192
152
  if (marker.cutover === "one_way_git") {
193
- const manifest = loadForwardManifest(project);
194
- if (!manifest || manifest.phase !== "entities_published" || manifest.marker.sha256 !== hash(bytes))
195
- throw new EntityCutoverError("one-way entity marker has no matching completed forward manifest");
153
+ const manifest = loadHistoricalForwardManifest(project);
154
+ if (!manifest || manifest.marker.sha256 !== hash(bytes))
155
+ throw new EntityCutoverError("historical one-way entity marker has no matching completed manifest");
196
156
  return manifest.targets;
197
157
  }
198
158
  if (typeof marker.migration_id === "string")
199
159
  return loadLegacyEntityCutoverTargets(project, bytes);
200
- throw new EntityCutoverError("entity marker has no supported one-way or historical cutover binding");
160
+ throw new EntityCutoverError("entity marker has no supported cutover binding");
201
161
  }
202
- function inspect(projectRoot, sourceRoot, requireGit, writerLockHeld = false) {
162
+ function inspect(projectRoot, sourceRoot, requireGit, writerLockHeld = false, activeUpgradeLockPaths = []) {
203
163
  const project = validateRealProjectRoot(projectRoot).path;
204
164
  const marker = markerSnapshot(project);
205
165
  if (marker.kind === "file")
206
166
  return { inspection: { phase: "active", entityCount: validateActiveEntityCutover(project, marker.bytes, sourceRoot) } };
207
167
  if (marker.kind !== "missing")
208
- throw new EntityCutoverError(`state marker '${ENTITY_MODE_MARKER}' is unsafe`);
168
+ throw new EntityCutoverError(`first unresolved path '${ENTITY_MODE_MARKER}': marker path is unsafe`);
209
169
  const plan = planEntityMigration(project, sourceRoot);
210
170
  assertPlanReady(plan, sourceRoot);
211
171
  const targets = targetsForPlan(plan);
212
- const manifest = loadForwardManifest(project);
213
- if (manifest)
214
- assertManifestMatchesPlan(manifest, plan, null, targets);
215
- validateExistingCanonicalTargets(project, targets, manifest?.phase === "entities_published");
216
- if (!manifest && listFiles(project, ".agentera/entities").length > 0)
217
- throw new EntityCutoverError("canonical entity state exists without the bounded forward manifest");
172
+ validateExistingTargets(project, targets);
218
173
  let head;
219
174
  if (requireGit) {
220
- const allowedPaths = new Set([FORWARD_MANIFEST, ENTITY_MODE_MARKER]);
221
- if (manifest)
222
- for (const target of targets)
223
- allowedPaths.add(target.path);
224
- const binding = verifyEntityCutoverGitSource(project, plan, { paths: allowedPaths, prefixes: [MIGRATION_STAGING, ...(writerLockHeld ? [".agentera/.writer.lock"] : [])] });
175
+ const allowedPaths = new Set([FORWARD_MANIFEST, ENTITY_MODE_MARKER, ...targets.map(({ path: target }) => target)]);
176
+ for (const activeLockPath of activeUpgradeLockPaths) {
177
+ const relative = path.relative(project, path.resolve(activeLockPath));
178
+ if (relative !== "" && !relative.startsWith(`..${path.sep}`) && !path.isAbsolute(relative))
179
+ allowedPaths.add(relative.split(path.sep).join("/"));
180
+ }
181
+ const binding = verifyEntityCutoverGitSource(project, plan, { paths: allowedPaths, prefixes: writerLockHeld ? [".agentera/.writer.lock"] : [] });
225
182
  head = binding.head;
226
- if (manifest)
227
- assertManifestMatchesPlan(manifest, plan, head, targets);
228
183
  }
229
- return { inspection: { phase: manifest?.phase ?? "ready", entityCount: targets.length }, plan, ...(head ? { head } : {}) };
184
+ return { inspection: { phase: "ready", entityCount: targets.length }, plan, ...(head ? { head } : {}) };
230
185
  }
231
- export function inspectEntityCutoverForUpgrade(projectRoot, sourceRoot, requireGit = false) {
232
- return inspect(projectRoot, sourceRoot, requireGit).inspection;
186
+ export function inspectEntityCutoverForUpgrade(projectRoot, sourceRoot, requireGit = false, activeUpgradeLockPaths = []) {
187
+ return inspect(projectRoot, sourceRoot, requireGit, false, activeUpgradeLockPaths).inspection;
233
188
  }
234
- export function prepareEntityCutoverForUpgrade(projectRoot, sourceRoot) {
235
- const current = inspect(projectRoot, sourceRoot, true);
189
+ export function prepareEntityCutoverForUpgrade(projectRoot, sourceRoot, activeUpgradeLockPaths = []) {
190
+ const current = inspect(projectRoot, sourceRoot, true, false, activeUpgradeLockPaths);
236
191
  if (current.inspection.phase === "active" || !current.plan || !current.head)
237
192
  throw new EntityCutoverError("entity authority is already active; no cutover preparation is available");
238
193
  return { project: current.plan.project, sourceRoot, head: current.head, sourceFingerprint: current.plan.source_fingerprint, previewDigest: current.plan.preview_digest };
@@ -245,18 +200,9 @@ function ensureDirectory(project, relativeDirectory) {
245
200
  fs.mkdirSync(current, { mode: 0o700 });
246
201
  const stat = fs.lstatSync(current);
247
202
  if (!stat.isDirectory() || stat.isSymbolicLink() || fs.realpathSync(current) !== current)
248
- throw new EntityCutoverError(`cutover directory '${path.relative(project, current)}' is unsafe`);
203
+ throw new EntityCutoverError(`first unresolved path '${path.relative(project, current)}': target directory is unsafe`);
249
204
  }
250
205
  }
251
- function removeStaging(project) {
252
- const staging = path.join(project, MIGRATION_STAGING);
253
- if (!fs.existsSync(staging))
254
- return;
255
- const stat = fs.lstatSync(staging);
256
- if (!stat.isDirectory() || stat.isSymbolicLink() || fs.realpathSync(staging) !== staging)
257
- throw new EntityCutoverError(`known cutover staging '${MIGRATION_STAGING}' is unsafe and was not removed`);
258
- fs.rmSync(staging, { recursive: true });
259
- }
260
206
  function writeDurable(file, bytes) {
261
207
  const fd = fs.openSync(file, fs.constants.O_WRONLY | fs.constants.O_CREAT | fs.constants.O_EXCL | (fs.constants.O_NOFOLLOW ?? 0), 0o600);
262
208
  try {
@@ -267,121 +213,79 @@ function writeDurable(file, bytes) {
267
213
  fs.closeSync(fd);
268
214
  }
269
215
  }
270
- function buildStaging(project, sourceRoot, plan, manifest) {
271
- removeStaging(project);
272
- ensureDirectory(project, STAGING_PROJECT);
273
- for (const entry of plan.entries) {
274
- const target = entry.proposed_target;
275
- if (typeof target.id !== "string" || typeof entry.artifact !== "string")
276
- throw new EntityCutoverError(`migration source '${entry.source_identity}' has no canonical identity`);
277
- const id = target.id;
278
- const artifact = entry.artifact;
279
- const staged = path.join(project, STAGING_PROJECT, target.path);
280
- ensureDirectory(project, path.relative(project, path.dirname(staged)).split(path.sep).join("/"));
281
- writeDurable(staged, canonicalEntityEnvelopeBytes({ id, artifact, record: entry.record }));
282
- }
283
- const validation = validateEntityState(path.join(project, STAGING_PROJECT), sourceRoot);
284
- if (!validation.valid || validation.entityCount !== manifest.targets.length)
285
- throw new EntityCutoverError(`staged entity graph is invalid (${validation.entityCount}/${manifest.targets.length})`);
286
- writeDurable(path.join(project, MIGRATION_STAGING, "forward.yaml"), manifestBytes(manifest));
287
- fault("staging_built");
288
- }
289
- function publishForwardManifest(project) {
290
- ensureDirectory(project, MIGRATION_ROOT);
291
- const target = path.join(project, FORWARD_MANIFEST);
292
- if (fs.existsSync(target))
293
- throw new EntityCutoverError(`forward cutover manifest '${FORWARD_MANIFEST}' already exists`);
294
- fs.renameSync(path.join(project, MIGRATION_STAGING, "forward.yaml"), target);
295
- fault("manifest_published");
216
+ function fault(phase) {
217
+ if (process.env.NODE_ENV === "test" && process.env.AGENTERA_FAULT_INJECT_ENTITY_MIGRATION_AFTER_PHASE === phase)
218
+ throw new EntityCutoverError(`simulated entity import interruption after ${phase}`);
296
219
  }
297
- function publishCanonicalTargets(project, manifest) {
298
- for (const target of manifest.targets) {
299
- const canonical = path.join(project, target.path);
220
+ function publishTargets(project, plan) {
221
+ for (const entry of plan.entries.slice().sort((a, b) => a.proposed_target.path.localeCompare(b.proposed_target.path))) {
222
+ const target = entry.proposed_target;
223
+ const bytes = canonicalEntityEnvelopeBytes({ id: target.id, artifact: entry.artifact, record: entry.record });
300
224
  const observed = readProjectFileSnapshot(validateRealProjectRoot(project), target.path);
301
225
  if (observed.kind === "file") {
302
- if (hash(observed.bytes) !== target.sha256)
303
- throw new EntityCutoverError(`canonical entity '${target.path}' diverges from the bounded forward manifest`);
226
+ if (hash(observed.bytes) !== hash(bytes))
227
+ throw new EntityCutoverError(`first unresolved path '${target.path}': existing target is not an exact converted match`);
304
228
  continue;
305
229
  }
306
230
  if (observed.kind !== "missing")
307
- throw new EntityCutoverError(`canonical entity '${target.path}' is unsafe`);
308
- ensureDirectory(project, path.relative(project, path.dirname(canonical)).split(path.sep).join("/"));
309
- fs.renameSync(path.join(project, STAGING_PROJECT, target.path), canonical);
231
+ throw new EntityCutoverError(`first unresolved path '${target.path}': target is unsafe`);
232
+ ensureDirectory(project, path.relative(project, path.dirname(path.join(project, target.path))).split(path.sep).join("/"));
233
+ try {
234
+ writeDurable(path.join(project, target.path), bytes);
235
+ }
236
+ catch (error) {
237
+ throw new EntityCutoverError(`first unresolved path '${target.path}': ${error.message}`);
238
+ }
310
239
  fault("entity_published");
311
240
  }
312
241
  }
313
- function validatePublishedGraph(project, sourceRoot, manifest) {
314
- validateExistingCanonicalTargets(project, manifest.targets, true);
315
- const validation = validateEntityState(project, sourceRoot);
316
- if (!validation.valid || validation.entityCount !== manifest.targets.length)
317
- throw new EntityCutoverError(`published entity graph is invalid (${validation.entityCount}/${manifest.targets.length})`);
318
- }
319
242
  function publishMarker(project) {
320
243
  const existing = markerSnapshot(project);
321
244
  if (existing.kind === "file") {
322
245
  if (!existing.bytes.equals(Buffer.from(MARKER_BYTES)))
323
- throw new EntityCutoverError(`state marker '${ENTITY_MODE_MARKER}' has unexpected bytes`);
246
+ throw new EntityCutoverError(`first unresolved path '${ENTITY_MODE_MARKER}': marker has unexpected bytes`);
324
247
  return;
325
248
  }
326
249
  if (existing.kind !== "missing")
327
- throw new EntityCutoverError(`state marker '${ENTITY_MODE_MARKER}' is unsafe`);
250
+ throw new EntityCutoverError(`first unresolved path '${ENTITY_MODE_MARKER}': marker path is unsafe`);
328
251
  ensureDirectory(project, ".agentera");
329
252
  const temporary = path.join(project, `.agentera/.state-mode-${randomUUID()}.tmp`);
330
253
  try {
331
254
  writeDurable(temporary, MARKER_BYTES);
255
+ fault("before_marker");
332
256
  if (fs.existsSync(path.join(project, ENTITY_MODE_MARKER)))
333
- throw new EntityCutoverError(`state marker '${ENTITY_MODE_MARKER}' appeared during publication`);
257
+ throw new EntityCutoverError(`first unresolved path '${ENTITY_MODE_MARKER}': marker appeared during publication`);
334
258
  fs.renameSync(temporary, path.join(project, ENTITY_MODE_MARKER));
335
259
  }
336
260
  finally {
337
261
  fs.rmSync(temporary, { force: true });
338
262
  }
339
263
  }
340
- function fault(phase) {
341
- if (process.env.NODE_ENV === "test" && process.env.AGENTERA_FAULT_INJECT_ENTITY_MIGRATION_AFTER_PHASE === phase)
342
- throw new EntityCutoverError(`simulated entity cutover interruption after ${phase}`);
343
- }
344
- export function applyPreparedEntityCutover(prepared) {
345
- const before = inspect(prepared.project, prepared.sourceRoot, true);
264
+ export function applyPreparedEntityCutover(prepared, activeUpgradeLockPaths = []) {
265
+ const before = inspect(prepared.project, prepared.sourceRoot, true, false, activeUpgradeLockPaths);
346
266
  if (before.inspection.phase === "active")
347
267
  return { status: "complete", phase: "active", idempotent: true, mutation_performed: false, entity_count: before.inspection.entityCount };
348
268
  if (!before.plan || before.head !== prepared.head || before.plan.source_fingerprint !== prepared.sourceFingerprint || before.plan.preview_digest !== prepared.previewDigest)
349
- throw new EntityCutoverError("Git-pinned entity cutover preparation changed before apply");
269
+ throw new EntityCutoverError("first unresolved path '.agentera': converted input changed before apply");
350
270
  const lock = acquireWriterLock(prepared.project, 2000);
351
271
  try {
352
- const current = inspect(prepared.project, prepared.sourceRoot, true, true);
272
+ const current = inspect(prepared.project, prepared.sourceRoot, true, true, activeUpgradeLockPaths);
353
273
  if (current.inspection.phase === "active")
354
274
  return { status: "complete", phase: "active", idempotent: true, mutation_performed: false, entity_count: current.inspection.entityCount };
355
275
  const plan = current.plan;
356
276
  if (current.head !== prepared.head || plan.source_fingerprint !== prepared.sourceFingerprint || plan.preview_digest !== prepared.previewDigest)
357
- throw new EntityCutoverError("Git-pinned entity cutover source changed before its first publication effect");
358
- const targets = targetsForPlan(plan);
359
- let manifest = loadForwardManifest(prepared.project);
360
- if (!manifest) {
361
- manifest = { schemaVersion: MANIFEST_SCHEMA, phase: "publishing_entities", source: { head: current.head, source_fingerprint: plan.source_fingerprint, preview_digest: plan.preview_digest }, targets, marker: { path: ENTITY_MODE_MARKER, sha256: hash(MARKER_BYTES) } };
362
- buildStaging(prepared.project, prepared.sourceRoot, plan, manifest);
363
- publishForwardManifest(prepared.project);
364
- }
365
- else if (manifest.phase === "publishing_entities") {
366
- buildStaging(prepared.project, prepared.sourceRoot, plan, manifest);
367
- }
368
- if (manifest.phase === "publishing_entities") {
369
- publishCanonicalTargets(prepared.project, manifest);
370
- validatePublishedGraph(prepared.project, prepared.sourceRoot, manifest);
371
- manifest = { ...manifest, phase: "entities_published" };
372
- writeFileAtomic(path.join(prepared.project, FORWARD_MANIFEST), manifestBytes(manifest));
373
- }
374
- else {
375
- validatePublishedGraph(prepared.project, prepared.sourceRoot, manifest);
277
+ throw new EntityCutoverError("first unresolved path '.agentera': converted input changed before its first effect");
278
+ publishTargets(prepared.project, plan);
279
+ const validation = validateEntityState(prepared.project, prepared.sourceRoot);
280
+ if (!validation.valid || validation.entityCount !== plan.entries.length) {
281
+ const issue = validation.issues[0];
282
+ throw new EntityCutoverError(`first unresolved path '${issue?.path ?? ".agentera/entities"}': converted entity graph is invalid (${validation.entityCount}/${plan.entries.length})${issue ? `: ${issue.message}` : ""}`);
376
283
  }
377
- removeStaging(prepared.project);
378
- fault("entities_published");
379
284
  publishMarker(prepared.project);
380
285
  const marker = markerSnapshot(prepared.project);
381
286
  if (marker.kind !== "file")
382
- throw new EntityCutoverError("entity authority marker was not published");
383
- const entityCount = validateActiveEntityCutover(prepared.project, marker.bytes, prepared.sourceRoot);
384
- return { status: "complete", phase: "active", idempotent: false, mutation_performed: true, entity_count: entityCount };
287
+ throw new EntityCutoverError(`first unresolved path '${ENTITY_MODE_MARKER}': marker was not published`);
288
+ return { status: "complete", phase: "active", idempotent: false, mutation_performed: true, entity_count: validateActiveEntityCutover(prepared.project, marker.bytes, prepared.sourceRoot) };
385
289
  }
386
290
  finally {
387
291
  lock.release();
@@ -1 +1 @@
1
- {"version":3,"file":"entityCutover.js","sourceRoot":"","sources":["../../src/state/entityCutover.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"entityCutover.js","sourceRoot":"","sources":["../../src/state/entityCutover.ts"],"names":[],"mappings":"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"}
@@ -409,18 +409,20 @@ function discoverFile(projectRoot, file, pathArtifact, boundary, model, issues,
409
409
  }
410
410
  export function discoverEntities(projectRoot, sourceRoot) {
411
411
  const root = path.resolve(projectRoot);
412
- const model = authority(sourceRoot);
412
+ const resolvedSourceRoot = path.resolve(sourceRoot ?? resolveSourceRoot());
413
+ const origin = { projectRoot: root, sourceRoot: resolvedSourceRoot };
414
+ const model = authority(resolvedSourceRoot);
413
415
  const storageRoot = path.join(root, model.entityRoot);
414
416
  const entities = [];
415
417
  const issues = [];
416
418
  const unsafePrefix = noSymlinkPrefix(root, storageRoot);
417
419
  if (unsafePrefix)
418
- return { entities: [unsafeEntity(root, unsafePrefix)], issues: [unsafeIssue(root, unsafePrefix)], validArtifactValues: model.artifacts };
420
+ return { origin, entities: [unsafeEntity(root, unsafePrefix)], issues: [unsafeIssue(root, unsafePrefix)], validArtifactValues: model.artifacts };
419
421
  if (!fs.existsSync(storageRoot))
420
- return { entities, issues, validArtifactValues: model.artifacts };
422
+ return { origin, entities, issues, validArtifactValues: model.artifacts };
421
423
  if (!fs.statSync(storageRoot).isDirectory()) {
422
424
  issues.push({ code: "malformed_entity", path: relative(root, storageRoot), message: `entity root '${relative(root, storageRoot)}' is not a directory`, recovery: recovery(root, `replace '${relative(root, storageRoot)}' with a directory`) });
423
- return { entities, issues, validArtifactValues: model.artifacts };
425
+ return { origin, entities, issues, validArtifactValues: model.artifacts };
424
426
  }
425
427
  for (const artifactEntry of listDirectories(storageRoot)) {
426
428
  const artifactPath = path.join(storageRoot, artifactEntry.name);
@@ -455,7 +457,7 @@ export function discoverEntities(projectRoot, sourceRoot) {
455
457
  issues.push({ code: "malformed_entity", path: relative(root, file), message: `entity path '${relative(root, file)}' is not a canonical YAML file`, recovery: recovery(root, `remove '${relative(root, file)}' or replace it with <ten-lowercase-letter-id>.yaml`) });
456
458
  continue;
457
459
  }
458
- entities.push(discoverFile(root, file, artifactEntry.name, boundaryEntry.name, model, issues, sourceRoot));
460
+ entities.push(discoverFile(root, file, artifactEntry.name, boundaryEntry.name, model, issues, resolvedSourceRoot));
459
461
  }
460
462
  }
461
463
  }
@@ -483,7 +485,18 @@ export function discoverEntities(projectRoot, sourceRoot) {
483
485
  const rank = { duplicate: 0, malformed: 1, unsafe: 2, valid: 3 };
484
486
  entities.sort((left, right) => rank[left.classification] - rank[right.classification] || left.relativePath.localeCompare(right.relativePath));
485
487
  issues.sort(diagnosticSort);
486
- return { entities, issues, validArtifactValues: model.artifacts };
488
+ return { origin, entities, issues, validArtifactValues: model.artifacts };
489
+ }
490
+ export function assertEntityDiscoveryOrigin(projectRoot, sourceRoot, discovery) {
491
+ const expected = {
492
+ projectRoot: path.resolve(projectRoot),
493
+ sourceRoot: path.resolve(sourceRoot ?? resolveSourceRoot()),
494
+ };
495
+ const actualProjectRoot = discovery.origin?.projectRoot ?? "<missing>";
496
+ const actualSourceRoot = discovery.origin?.sourceRoot ?? "<missing>";
497
+ if (actualProjectRoot === expected.projectRoot && actualSourceRoot === expected.sourceRoot)
498
+ return;
499
+ throw new Error(`supplied entity discovery origin does not match this request (expected project '${expected.projectRoot}' and source authority '${expected.sourceRoot}', received project '${actualProjectRoot}' and source authority '${actualSourceRoot}'); call discoverEntities with this request's project and source roots, then retry`);
487
500
  }
488
501
  function relationTargets(entity, relation) {
489
502
  const value = entity.record?.[relation.field];
@@ -493,7 +506,8 @@ function relationTargets(entity, relation) {
493
506
  return [];
494
507
  return Array.isArray(value) && value.every((item) => typeof item === "string") ? value : null;
495
508
  }
496
- function validateEntityDiscovery(projectRoot, sourceRoot, discovery, boundIssues = true) {
509
+ export function validateEntityDiscovery(projectRoot, sourceRoot, discovery, boundIssues = true) {
510
+ assertEntityDiscoveryOrigin(projectRoot, sourceRoot, discovery);
497
511
  const model = authority(sourceRoot);
498
512
  const issues = [...discovery.issues];
499
513
  const byId = new Map();
@@ -656,7 +670,12 @@ export function validateCanonicalEntityTargets(projectRoot, targets, sourceRoot)
656
670
  for (const target of duplicates)
657
671
  issues.push({ code: "duplicate_id", path: target.path, id: target.id, artifact: target.artifact, boundary: target.boundary, message: `entity ID '${target.id}' appears ${duplicates.length} times across proposed canonical targets`, recovery: recovery(projectRoot, `repair migration identity allocation for '${target.sourceIdentity}'`) });
658
672
  }
659
- const validation = validateEntityDiscovery(projectRoot, sourceRoot, { entities, issues, validArtifactValues: model.artifacts }, false);
673
+ const validation = validateEntityDiscovery(projectRoot, sourceRoot, {
674
+ origin: { projectRoot: path.resolve(projectRoot), sourceRoot: path.resolve(sourceRoot ?? resolveSourceRoot()) },
675
+ entities,
676
+ issues,
677
+ validArtifactValues: model.artifacts,
678
+ }, false);
660
679
  return validation.issues.map((issue) => ({ sourceIdentity: sourceByPath.get(issue.path) ?? issue.id ?? issue.path, path: issue.path, message: issue.message }));
661
680
  }
662
681
  function generatedId(model) {