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.
- package/README.md +16 -20
- package/bundle/CHANGELOG.md +15 -25
- package/bundle/README.md +13 -34
- package/bundle/UPGRADE.md +71 -165
- package/bundle/references/adapters/package-manifest-interface-model.yaml +40 -241
- package/bundle/references/adapters/package-registry.yaml +0 -145
- package/bundle/references/adapters/package-surface-characterization.md +13 -38
- package/bundle/references/adapters/runtime-lifecycle-adapters.yaml +5 -219
- package/bundle/references/adapters/runtime-lifecycle-authority.yaml +2 -29
- package/bundle/references/adapters/runtime-lifecycle-operation-contract.yaml +1 -1
- package/bundle/references/artifacts/state-storage-authority.yaml +43 -447
- package/bundle/references/cli/agent-ready-state-contract.yaml +9 -9
- package/bundle/references/cli/app-lifecycle-vocabulary.yaml +3 -4
- package/bundle/references/cli/bundle-skill-vocabulary.yaml +9 -18
- package/bundle/references/cli/capability-tool-classification.yaml +2 -2
- package/bundle/references/cli/prime-consumer-compatibility.yaml +28 -98
- package/bundle/references/cli/routing-execution-vocabulary.yaml +4 -22
- package/bundle/references/cli/upgrade-repair-wording.md +8 -28
- package/bundle/references/cli/v3-handoff-manifest.schema.yaml +2 -3
- package/bundle/references/cli/vocabulary.md +18 -23
- package/bundle/references/meta/documentation-inventory.md +1 -1
- package/bundle/skills/agentera/schemas/artifacts/docs.yaml +3 -11
- package/bundle/skills/agentera/schemas/artifacts/plan.yaml +1 -1
- package/dist/cli/capabilityContext/bespoke.js +8 -2
- package/dist/cli/capabilityContext/bespoke.js.map +1 -1
- package/dist/cli/capabilityContext/closeout.js +3 -3
- package/dist/cli/capabilityContext/closeout.js.map +1 -1
- package/dist/cli/capabilityContext/evidence.js +52 -40
- package/dist/cli/capabilityContext/evidence.js.map +1 -1
- package/dist/cli/capabilityContext/startup.js +1 -1
- package/dist/cli/capabilityContext/startup.js.map +1 -1
- package/dist/cli/commands/doctor.js +6 -64
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/durability.js +12 -48
- package/dist/cli/commands/durability.js.map +1 -1
- package/dist/cli/commands/prime/briefOrientation.js +2 -19
- package/dist/cli/commands/prime/briefOrientation.js.map +1 -1
- package/dist/cli/commands/prime/bundleStatus.js +8 -2
- package/dist/cli/commands/prime/bundleStatus.js.map +1 -1
- package/dist/cli/commands/prime/collectEntityOrientation.js +27 -14
- package/dist/cli/commands/prime/collectEntityOrientation.js.map +1 -1
- package/dist/cli/commands/prime/collectOrientationState.js +31 -52
- package/dist/cli/commands/prime/collectOrientationState.js.map +1 -1
- package/dist/cli/commands/prime/orientationOutput.js +3 -11
- package/dist/cli/commands/prime/orientationOutput.js.map +1 -1
- package/dist/cli/commands/prime.js +0 -5
- package/dist/cli/commands/prime.js.map +1 -1
- package/dist/cli/commands/query.js +17 -49
- package/dist/cli/commands/query.js.map +1 -1
- package/dist/cli/commands/schema.js +19 -78
- package/dist/cli/commands/schema.js.map +1 -1
- package/dist/cli/commands/state/decisions.js +11 -57
- package/dist/cli/commands/state/decisions.js.map +1 -1
- package/dist/cli/commands/state/docs.js +56 -120
- package/dist/cli/commands/state/docs.js.map +1 -1
- package/dist/cli/commands/state/experimentRecords.js +22 -121
- package/dist/cli/commands/state/experimentRecords.js.map +1 -1
- package/dist/cli/commands/state/experiments.js +9 -75
- package/dist/cli/commands/state/experiments.js.map +1 -1
- package/dist/cli/commands/state/get.js +62 -143
- package/dist/cli/commands/state/get.js.map +1 -1
- package/dist/cli/commands/state/health.js +9 -123
- package/dist/cli/commands/state/health.js.map +1 -1
- package/dist/cli/commands/state/index.js +2 -2
- package/dist/cli/commands/state/index.js.map +1 -1
- package/dist/cli/commands/state/list.js +20 -36
- package/dist/cli/commands/state/list.js.map +1 -1
- package/dist/cli/commands/state/objective.js +19 -86
- package/dist/cli/commands/state/objective.js.map +1 -1
- package/dist/cli/commands/state/plan.js +9 -388
- package/dist/cli/commands/state/plan.js.map +1 -1
- package/dist/cli/commands/state/planTasks.js +58 -93
- package/dist/cli/commands/state/planTasks.js.map +1 -1
- package/dist/cli/commands/state/plans.js +13 -40
- package/dist/cli/commands/state/plans.js.map +1 -1
- package/dist/cli/commands/state/progress.js +10 -55
- package/dist/cli/commands/state/progress.js.map +1 -1
- package/dist/cli/commands/state/todo.js +24 -133
- package/dist/cli/commands/state/todo.js.map +1 -1
- package/dist/cli/commands/state/write.js +11 -33
- package/dist/cli/commands/state/write.js.map +1 -1
- package/dist/cli/commands/upgrade.js +48 -18
- package/dist/cli/commands/upgrade.js.map +1 -1
- package/dist/cli/commands/upgradeVerify.js +21 -15
- package/dist/cli/commands/upgradeVerify.js.map +1 -1
- package/dist/cli/commands/validate.js +1 -9
- package/dist/cli/commands/validate.js.map +1 -1
- package/dist/cli/dispatch/check.js +5 -12
- package/dist/cli/dispatch/check.js.map +1 -1
- package/dist/cli/dispatch/index.js +30 -29
- package/dist/cli/dispatch/index.js.map +1 -1
- package/dist/cli/dispatch/lifecycle.js +23 -40
- package/dist/cli/dispatch/lifecycle.js.map +1 -1
- package/dist/cli/help.js +20 -100
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/migrationRequired.js +22 -19
- package/dist/cli/migrationRequired.js.map +1 -1
- package/dist/cli/orientation/attention.js +1 -97
- package/dist/cli/orientation/attention.js.map +1 -1
- package/dist/cli/stateQuery.js +1 -2
- package/dist/cli/stateQuery.js.map +1 -1
- package/dist/core/skillIdentity.js +24 -0
- package/dist/core/skillIdentity.js.map +1 -0
- package/dist/hooks/common.js +1 -1
- package/dist/hooks/common.js.map +1 -1
- package/dist/hooks/compaction/status.js +2 -1
- package/dist/hooks/compaction/status.js.map +1 -1
- package/dist/hooks/cursorSessionStart.js +4 -25
- package/dist/hooks/cursorSessionStart.js.map +1 -1
- package/dist/hooks/projectHookInput.js +26 -0
- package/dist/hooks/projectHookInput.js.map +1 -0
- package/dist/hooks/sessionStart.js +23 -239
- package/dist/hooks/sessionStart.js.map +1 -1
- package/dist/hooks/sessionStop.js +4 -12
- package/dist/hooks/sessionStop.js.map +1 -1
- package/dist/hooks/validateArtifact/traversal.js +1 -1
- package/dist/hooks/validateArtifact/traversal.js.map +1 -1
- package/dist/registries/artifactRegistry.js +2 -1
- package/dist/registries/artifactRegistry.js.map +1 -1
- package/dist/registries/packageRegistry.js +57 -231
- package/dist/registries/packageRegistry.js.map +1 -1
- package/dist/release/releaseMetadata.js +1 -13
- package/dist/release/releaseMetadata.js.map +1 -1
- package/dist/runtime/lifecycleAdapterContract.js +4 -4
- package/dist/runtime/lifecycleAdapterContract.js.map +1 -1
- package/dist/runtime/lifecycleAdapters.js +14 -2
- package/dist/runtime/lifecycleAdapters.js.map +1 -1
- package/dist/runtime/lifecycleAuthority.js +5 -43
- package/dist/runtime/lifecycleAuthority.js.map +1 -1
- package/dist/runtime/lifecycleOperationContract.js +3 -2
- package/dist/runtime/lifecycleOperationContract.js.map +1 -1
- package/dist/runtime/lifecyclePublication.js +21 -0
- package/dist/runtime/lifecyclePublication.js.map +1 -1
- package/dist/setup/opencode.js +20 -12
- package/dist/setup/opencode.js.map +1 -1
- package/dist/setup/sharedSkill.js +46 -0
- package/dist/setup/sharedSkill.js.map +1 -0
- package/dist/setup/smokeChecks.js +16 -43
- package/dist/setup/smokeChecks.js.map +1 -1
- package/dist/state/decisionEntities.js +7 -4
- package/dist/state/decisionEntities.js.map +1 -1
- package/dist/state/durability.js +4 -240
- package/dist/state/durability.js.map +1 -1
- package/dist/state/entityCutover.js +90 -186
- package/dist/state/entityCutover.js.map +1 -1
- package/dist/state/entityStorage.js +27 -8
- package/dist/state/entityStorage.js.map +1 -1
- package/dist/state/healthEntities.js +7 -4
- package/dist/state/healthEntities.js.map +1 -1
- package/dist/state/objectiveExperimentEntities.js +7 -5
- package/dist/state/objectiveExperimentEntities.js.map +1 -1
- package/dist/state/planEntities.js +14 -10
- package/dist/state/planEntities.js.map +1 -1
- package/dist/state/progressEntities.js +4 -2
- package/dist/state/progressEntities.js.map +1 -1
- package/dist/state/startupProjection.js +3 -2
- package/dist/state/startupProjection.js.map +1 -1
- package/dist/state/stateMode.js +7 -0
- package/dist/state/stateMode.js.map +1 -1
- package/dist/state/todoDocsEntities.js +6 -4
- package/dist/state/todoDocsEntities.js.map +1 -1
- package/dist/state/write/explain.js +1 -9
- package/dist/state/write/explain.js.map +1 -1
- package/dist/state/write/transaction.js +22 -532
- package/dist/state/write/transaction.js.map +1 -1
- package/dist/upgrade/appContentRefresh.js +43 -28
- package/dist/upgrade/appContentRefresh.js.map +1 -1
- package/dist/upgrade/doctor.js +5 -1
- package/dist/upgrade/doctor.js.map +1 -1
- package/dist/upgrade/installedHooksRetirement.js +46 -39
- package/dist/upgrade/installedHooksRetirement.js.map +1 -1
- package/dist/upgrade/legacyAgentCleanup.js +132 -32
- package/dist/upgrade/legacyAgentCleanup.js.map +1 -1
- package/dist/upgrade/lifecycleUpgrade.js +65 -378
- package/dist/upgrade/lifecycleUpgrade.js.map +1 -1
- package/dist/upgrade/migrateArtifactsV2ToV3.js +151 -52
- package/dist/upgrade/migrateArtifactsV2ToV3.js.map +1 -1
- package/dist/upgrade/migrationPublication.js +123 -0
- package/dist/upgrade/migrationPublication.js.map +1 -0
- package/dist/upgrade/projectIntegration.js +46 -113
- package/dist/upgrade/projectIntegration.js.map +1 -1
- package/dist/upgrade/projectIntegrationDecision.js +6 -96
- package/dist/upgrade/projectIntegrationDecision.js.map +1 -1
- package/dist/upgrade/runtimeMigration.js +222 -402
- package/dist/upgrade/runtimeMigration.js.map +1 -1
- package/dist/upgrade/upgradeCommands.js +5 -4
- package/dist/upgrade/upgradeCommands.js.map +1 -1
- package/dist/upgrade/upgradeLock.js +73 -41
- package/dist/upgrade/upgradeLock.js.map +1 -1
- package/dist/upgrade/upgradeOrchestrator.js +91 -158
- package/dist/upgrade/upgradeOrchestrator.js.map +1 -1
- package/dist/upgrade/v3CapabilitySurface.js +2 -2
- package/dist/validate/appHomeContract.js +0 -4
- package/dist/validate/appHomeContract.js.map +1 -1
- package/package.json +7 -5
- package/bundle/.codex-plugin/plugin.json +0 -92
- package/bundle/.cursor/agents/agentera.md +0 -7
- package/bundle/.cursor/hooks.json +0 -32
- package/bundle/.cursor-plugin/plugin.json +0 -34
- package/bundle/.github/hooks/postToolUse.json +0 -9
- package/bundle/.github/hooks/preToolUse.json +0 -8
- package/bundle/.github/hooks/sessionEnd.json +0 -8
- package/bundle/.github/hooks/sessionStart.json +0 -8
- package/bundle/.github/plugin/plugin.json +0 -7
- package/bundle/.opencode/agents/agentera.md +0 -12
- package/bundle/.opencode/commands/agentera.md +0 -5
- package/bundle/.opencode/package.json +0 -31
- package/bundle/.opencode/plugins/agentera.js +0 -820
- package/bundle/agents/openai.yaml +0 -87
- package/bundle/hooks/codex-hooks.json +0 -31
- package/bundle/hooks/codex-plugin-hooks.json +0 -31
- package/bundle/plugin.json +0 -13
- package/bundle/references/adapters/cursor.md +0 -224
- package/bundle/references/adapters/opencode.md +0 -529
- package/bundle/references/adapters/runtime-adapter-characterization.md +0 -44
- package/bundle/references/adapters/runtime-adapter-interface-model.yaml +0 -200
- package/bundle/references/adapters/runtime-adapter-registry.yaml +0 -387
- package/bundle/references/adapters/runtime-feature-parity.md +0 -129
- package/dist/cli/commands/backfill.js +0 -231
- package/dist/cli/commands/backfill.js.map +0 -1
- package/dist/cli/commands/migrate.js +0 -681
- package/dist/cli/commands/migrate.js.map +0 -1
- package/dist/registries/runtimeAdapterRegistry.js +0 -324
- package/dist/registries/runtimeAdapterRegistry.js.map +0 -1
- package/dist/setup/copilot.js +0 -227
- package/dist/setup/copilot.js.map +0 -1
- package/dist/setup/cursor.js +0 -129
- package/dist/setup/cursor.js.map +0 -1
- package/dist/setup/cursorSurfaces.js +0 -67
- package/dist/setup/cursorSurfaces.js.map +0 -1
- package/dist/setup/doctor/core.js +0 -296
- package/dist/setup/doctor/core.js.map +0 -1
- package/dist/setup/doctor/diagnostics.js +0 -201
- package/dist/setup/doctor/diagnostics.js.map +0 -1
- package/dist/setup/doctor/opencode.js +0 -301
- package/dist/setup/doctor/opencode.js.map +0 -1
- package/dist/setup/doctor/report.js +0 -425
- package/dist/setup/doctor/report.js.map +0 -1
- package/dist/setup/doctor.js +0 -10
- package/dist/setup/doctor.js.map +0 -1
- package/dist/state/gitBackfill.js +0 -561
- package/dist/state/gitBackfill.js.map +0 -1
- package/dist/state/gitBackfillAuthority.js +0 -141
- package/dist/state/gitBackfillAuthority.js.map +0 -1
- package/dist/state/gitBackfillHistory.js +0 -278
- package/dist/state/gitBackfillHistory.js.map +0 -1
- package/dist/state/gitBackfillOutput.js +0 -209
- package/dist/state/gitBackfillOutput.js.map +0 -1
- package/dist/state/legacyMigration.js +0 -516
- package/dist/state/legacyMigration.js.map +0 -1
- package/dist/state/legacyMigrationParser.js +0 -489
- package/dist/state/legacyMigrationParser.js.map +0 -1
- package/dist/state/migrationAuthority.js +0 -413
- package/dist/state/migrationAuthority.js.map +0 -1
- package/dist/state/migrationEnrichment.js +0 -35
- package/dist/state/migrationEnrichment.js.map +0 -1
- package/dist/state/projectionRecovery.js +0 -458
- package/dist/state/projectionRecovery.js.map +0 -1
- package/dist/upgrade/migrateArtifactsV1ToV2.js +0 -568
- package/dist/upgrade/migrateArtifactsV1ToV2.js.map +0 -1
- package/dist/validate/lifecycleAdapters/legacyPythonParity.js +0 -93
- package/dist/validate/lifecycleAdapters/legacyPythonParity.js.map +0 -1
- package/dist/validate/lifecycleAdapters/lifecycleMain.js +0 -154
- package/dist/validate/lifecycleAdapters/lifecycleMain.js.map +0 -1
- package/dist/validate/lifecycleAdapters/nodeFormChecks.js +0 -481
- package/dist/validate/lifecycleAdapters/nodeFormChecks.js.map +0 -1
- package/dist/validate/lifecycleAdapters/shared.js +0 -198
- package/dist/validate/lifecycleAdapters/shared.js.map +0 -1
- package/dist/validate/lifecycleAdapters.js +0 -10
- 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"
|
|
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
|
|
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
|
-
||
|
|
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 !==
|
|
50
|
+
|| typeof value.marker.sha256 !== "string"
|
|
51
|
+
|| !SHA256.test(value.marker.sha256)
|
|
66
52
|
|| !Array.isArray(value.targets)) {
|
|
67
|
-
throw new EntityCutoverError(`
|
|
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(`
|
|
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
|
-
|
|
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
|
|
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(`
|
|
93
|
-
return
|
|
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(`
|
|
100
|
-
const
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
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("
|
|
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(`
|
|
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(`
|
|
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(`
|
|
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(`
|
|
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
|
|
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
|
-
|
|
151
|
-
|
|
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(`
|
|
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 =
|
|
194
|
-
if (!manifest || manifest.
|
|
195
|
-
throw new EntityCutoverError("one-way entity marker has no matching completed
|
|
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
|
|
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(`
|
|
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
|
-
|
|
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
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
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:
|
|
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(`
|
|
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
|
|
271
|
-
|
|
272
|
-
|
|
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
|
|
298
|
-
for (const
|
|
299
|
-
const
|
|
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) !==
|
|
303
|
-
throw new EntityCutoverError(`
|
|
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(`
|
|
308
|
-
ensureDirectory(project, path.relative(project, path.dirname(
|
|
309
|
-
|
|
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(`
|
|
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(`
|
|
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(`
|
|
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
|
|
341
|
-
|
|
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("
|
|
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("
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
if (!
|
|
361
|
-
|
|
362
|
-
|
|
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(
|
|
383
|
-
|
|
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
|
|
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,
|
|
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, {
|
|
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) {
|