@msn-control/liftoff 0.11.1 → 0.11.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/DEVELOPER.md +29 -10
- package/README.md +11 -6
- package/dist/adapters/filesystem/project-transaction.d.ts +2 -1
- package/dist/adapters/filesystem/project-transaction.js +25 -6
- package/dist/adapters/filesystem/project-transaction.js.map +1 -1
- package/dist/adapters/filesystem/reviewed-update-transaction.d.ts +53 -0
- package/dist/adapters/filesystem/reviewed-update-transaction.js +864 -0
- package/dist/adapters/filesystem/reviewed-update-transaction.js.map +1 -0
- package/dist/adapters/filesystem/update-previews.d.ts +50 -0
- package/dist/adapters/filesystem/update-previews.js +612 -0
- package/dist/adapters/filesystem/update-previews.js.map +1 -0
- package/dist/adapters/process/shell-command.d.ts +2 -0
- package/dist/adapters/process/shell-command.js +10 -1
- package/dist/adapters/process/shell-command.js.map +1 -1
- package/dist/application/context.d.ts +5 -0
- package/dist/application/diagnose/doctor.js +9 -15
- package/dist/application/diagnose/doctor.js.map +1 -1
- package/dist/application/update/approval.d.ts +39 -0
- package/dist/application/update/approval.js +54 -0
- package/dist/application/update/approval.js.map +1 -0
- package/dist/application/update/command-guidance.d.ts +19 -0
- package/dist/application/update/command-guidance.js +28 -0
- package/dist/application/update/command-guidance.js.map +1 -0
- package/dist/application/update/guidance-context.d.ts +2 -0
- package/dist/application/update/guidance-context.js +35 -0
- package/dist/application/update/guidance-context.js.map +1 -0
- package/dist/application/update/inspection.d.ts +40 -0
- package/dist/application/update/inspection.js +241 -0
- package/dist/application/update/inspection.js.map +1 -0
- package/dist/application/update/migration-runtime.d.ts +14 -0
- package/dist/application/update/migration-runtime.js +177 -0
- package/dist/application/update/migration-runtime.js.map +1 -0
- package/dist/application/update/output.d.ts +135 -0
- package/dist/application/update/output.js +182 -0
- package/dist/application/update/output.js.map +1 -0
- package/dist/application/update/preview.d.ts +58 -0
- package/dist/application/update/preview.js +242 -0
- package/dist/application/update/preview.js.map +1 -0
- package/dist/application/update/protected-source.d.ts +25 -0
- package/dist/application/update/protected-source.js +81 -0
- package/dist/application/update/protected-source.js.map +1 -0
- package/dist/application/update/reporting.d.ts +4 -4
- package/dist/application/update/reporting.js +14 -13
- package/dist/application/update/reporting.js.map +1 -1
- package/dist/application/update/revalidation-plan.d.ts +22 -0
- package/dist/application/update/revalidation-plan.js +107 -0
- package/dist/application/update/revalidation-plan.js.map +1 -0
- package/dist/application/update/revalidation.d.ts +70 -0
- package/dist/application/update/revalidation.js +337 -0
- package/dist/application/update/revalidation.js.map +1 -0
- package/dist/application/update/review-plan.d.ts +25 -0
- package/dist/application/update/review-plan.js +89 -0
- package/dist/application/update/review-plan.js.map +1 -0
- package/dist/application/update/transaction-approval.d.ts +29 -0
- package/dist/application/update/transaction-approval.js +82 -0
- package/dist/application/update/transaction-approval.js.map +1 -0
- package/dist/application/update/use-case.d.ts +1 -0
- package/dist/application/update/use-case.js +252 -568
- package/dist/application/update/use-case.js.map +1 -1
- package/dist/application/update/write-plan.d.ts +15 -0
- package/dist/application/update/write-plan.js +115 -0
- package/dist/application/update/write-plan.js.map +1 -0
- package/dist/cli/args/definitions.js +5 -4
- package/dist/cli/args/definitions.js.map +1 -1
- package/dist/cli/args/help.js +13 -1
- package/dist/cli/args/help.js.map +1 -1
- package/dist/cli/args/parser.js +22 -7
- package/dist/cli/args/parser.js.map +1 -1
- package/dist/cli/commands/update.js +1 -0
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/domain/governance/policy/identity.d.ts +1 -1
- package/dist/domain/governance/policy/identity.js +2 -2
- package/dist/domain/governance/policy/identity.js.map +1 -1
- package/dist/domain/project/infrastructure-layout.d.ts +1 -1
- package/dist/domain/project/infrastructure-layout.js +3 -1
- package/dist/domain/project/infrastructure-layout.js.map +1 -1
- package/dist/domain/project/reviewed-update-artifacts.d.ts +2 -0
- package/dist/domain/project/reviewed-update-artifacts.js +3 -0
- package/dist/domain/project/reviewed-update-artifacts.js.map +1 -0
- package/dist/generators/common/base.js +5 -1
- package/dist/generators/common/base.js.map +1 -1
- package/dist/governance-activation/activation-state.js +4 -1
- package/dist/governance-activation/activation-state.js.map +1 -1
- package/dist/governance-activation/commands.d.ts +5 -0
- package/dist/governance-activation/commands.js +65 -3
- package/dist/governance-activation/commands.js.map +1 -1
- package/dist/governance-activation/compatibility.d.ts +21 -4
- package/dist/governance-activation/compatibility.js +47 -8
- package/dist/governance-activation/compatibility.js.map +1 -1
- package/dist/governance-activation/doctor.js +32 -5
- package/dist/governance-activation/doctor.js.map +1 -1
- package/dist/governance-activation/historical-state.d.ts +81 -0
- package/dist/governance-activation/historical-state.js +817 -0
- package/dist/governance-activation/historical-state.js.map +1 -0
- package/dist/governance-activation/history-contracts.d.ts +109 -0
- package/dist/governance-activation/history-contracts.js +303 -0
- package/dist/governance-activation/history-contracts.js.map +1 -0
- package/dist/governance-activation/inputs.d.ts +2 -0
- package/dist/governance-activation/inputs.js +13 -1
- package/dist/governance-activation/inputs.js.map +1 -1
- package/dist/governance-activation/migration-history.d.ts +97 -0
- package/dist/governance-activation/migration-history.js +388 -0
- package/dist/governance-activation/migration-history.js.map +1 -0
- package/dist/governance-activation/migration.js +1 -1
- package/dist/governance-activation/migration.js.map +1 -1
- package/dist/governance-activation/proof-records.d.ts +3 -0
- package/dist/governance-activation/proof-records.js +78 -0
- package/dist/governance-activation/proof-records.js.map +1 -0
- package/dist/governance-activation/read-only.d.ts +4 -4
- package/dist/governance-activation/read-only.js +9 -69
- package/dist/governance-activation/read-only.js.map +1 -1
- package/dist/governance-activation/seed-lifecycle.d.ts +28 -6
- package/dist/governance-activation/seed-lifecycle.js +258 -25
- package/dist/governance-activation/seed-lifecycle.js.map +1 -1
- package/dist/governance-activation/transition-planning.d.ts +2 -0
- package/dist/governance-activation/transition-planning.js +12 -3
- package/dist/governance-activation/transition-planning.js.map +1 -1
- package/dist/governance-activation/transitions.d.ts +8 -2
- package/dist/governance-activation/transitions.js +36 -11
- package/dist/governance-activation/transitions.js.map +1 -1
- package/dist/governance-assessment/engine.js +30 -3
- package/dist/governance-assessment/engine.js.map +1 -1
- package/dist/governance-assessment/project.d.ts +7 -0
- package/dist/governance-assessment/project.js +44 -4
- package/dist/governance-assessment/project.js.map +1 -1
- package/dist/repository-governance.js +25 -12
- package/dist/repository-governance.js.map +1 -1
- package/docs/cli-reference.md +134 -28
- package/docs/configuration-and-manifests.md +27 -15
- package/docs/existing-repositories.md +19 -10
- package/docs/repository-governance.md +9 -5
- package/docs/safety-and-consent.md +27 -18
- package/docs/troubleshooting.md +37 -7
- package/docs/workloads.md +5 -4
- package/package.json +1 -1
package/DEVELOPER.md
CHANGED
|
@@ -51,7 +51,7 @@ and successful generated-file checks must not be described as those capabilities
|
|
|
51
51
|
|
|
52
52
|
## Activation version vector
|
|
53
53
|
|
|
54
|
-
Current deterministic setup contract, retained by the 0.11.
|
|
54
|
+
Current deterministic setup contract, retained by the 0.11.3 CLI patch:
|
|
55
55
|
|
|
56
56
|
```json
|
|
57
57
|
{
|
|
@@ -76,7 +76,7 @@ do not fabricate a historical value.
|
|
|
76
76
|
|
|
77
77
|
The generated `liftoff.manifest.json` records this as manifest `artifactVersion`
|
|
78
78
|
7 plus the activation identity fields shown above. Compatibility metadata uses
|
|
79
|
-
schema version
|
|
79
|
+
schema version 3 in its own document, not a new required manifest field.
|
|
80
80
|
Assessment report/catalog, graph, supersession, and credential-policy schemas
|
|
81
81
|
remain at version 1; normative policy remains 6.
|
|
82
82
|
|
|
@@ -126,9 +126,18 @@ changes in another.
|
|
|
126
126
|
- Manifest composition injects `validateReadableActivationIdentity` only at the
|
|
127
127
|
manifest boundary. Exact known v1 identities remain readable without retagging;
|
|
128
128
|
state, evidence, approval, readiness, and scope use strict current validation.
|
|
129
|
-
- Known v1 activation
|
|
130
|
-
|
|
131
|
-
|
|
129
|
+
- Known v1 activation remains non-executable. The exact packaged successor lane
|
|
130
|
+
requires update preview and approval, preserves original history, and creates
|
|
131
|
+
new v2 proof only through current validation. Never add v1 to the executable map.
|
|
132
|
+
- Compatibility metadata v3 distinguishes successor eligibility from execution;
|
|
133
|
+
retain strict schema-2 input reading without treating it as migration authority.
|
|
134
|
+
Update report v3 distinguishes local commit from incomplete revalidation.
|
|
135
|
+
- Preview receipts are external user-local metadata, never approval. Persist
|
|
136
|
+
transaction approval separately after explicit consent; recovery must validate
|
|
137
|
+
that external binding rather than trust project-local JSON claiming approval.
|
|
138
|
+
- Durable history stays inside the project and outside managed-core ownership.
|
|
139
|
+
It preserves historical state and evidence byte-for-byte. After migration
|
|
140
|
+
commits, repair/resume blocked v2 rather than restore v1.
|
|
132
141
|
- The eight flat-root OpenTofu identities are an explicit new-output-only
|
|
133
142
|
exception to append-only naming in 0.11.0. Preserve historical records and
|
|
134
143
|
files; use the exact [retirement inventory](docs/azure-deployment.md#explicit-flat-root-identity-retirement),
|
|
@@ -264,16 +273,22 @@ npm run verify:generated-containers
|
|
|
264
273
|
npm run verify:release-identity
|
|
265
274
|
```
|
|
266
275
|
|
|
267
|
-
## 0.11.
|
|
276
|
+
## 0.11.3 release checklist
|
|
268
277
|
|
|
269
278
|
- Package metadata, lockfile metadata, `liftoff --version`, and tag agree on
|
|
270
|
-
`0.11.
|
|
279
|
+
`0.11.3`. Preparing these files is not publication or permission to create a tag.
|
|
271
280
|
- Activation package identity remains `0.11.0`; no phase semantics or graph
|
|
272
281
|
identity change is introduced by patch-release preparation.
|
|
282
|
+
- Release notes identify context-aware update follow-ups, root-aware validation
|
|
283
|
+
guidance, and reason-specific preview errors. Mandatory matching preview and
|
|
284
|
+
exact-plan approval, schema-3 project-update reports, and exit 2 after committed
|
|
285
|
+
but incomplete local revalidation remain unchanged.
|
|
273
286
|
- Manifest writes use artifactVersion 7; readers accept v2-v7.
|
|
274
287
|
- Policy version is `"6"`; activation contract/state/evidence-header/approval
|
|
275
|
-
|
|
276
|
-
|
|
288
|
+
remain v2. Compatibility metadata and update reports are v3; preview receipts,
|
|
289
|
+
transaction approvals, history indexes, and migration journals are v1. Graph,
|
|
290
|
+
supersession, credential-policy, assessment report, and assessment catalog
|
|
291
|
+
schemas remain v1.
|
|
277
292
|
- The graph hash in code, docs, generated artifacts, compatibility metadata, and
|
|
278
293
|
release-integrity tests is
|
|
279
294
|
`ac160e3fc86f3e438141d985658e09f419508b3adbe176ddd13100d5dfdee47c`.
|
|
@@ -281,7 +296,11 @@ npm run verify:release-identity
|
|
|
281
296
|
B001–B006 bundle locally before separate publication and Phase 0 gates.
|
|
282
297
|
- Power Apps and the eight explicitly retired flat-root infrastructure IDs have
|
|
283
298
|
no positive new-generation lane. Old API/GenAI project provenance and v1
|
|
284
|
-
activation history remain preserved
|
|
299
|
+
activation history remain preserved. Only the exact approved migration lane
|
|
300
|
+
can create a linked v2 successor; it does not retag historical proof.
|
|
301
|
+
- Independent infrastructure provenance explicitly admits generation versions
|
|
302
|
+
`0.11.0`, `0.11.1`, `0.11.2`, and `0.11.3`, including mixed component histories.
|
|
303
|
+
Unknown releases remain blocked rather than being accepted through a version range.
|
|
285
304
|
- No setup-skill version exists in manifests, JSON status, docs, or generated
|
|
286
305
|
integrations.
|
|
287
306
|
- Doctor states and remedies cover seed-incomplete, phase-blocked,
|
package/README.md
CHANGED
|
@@ -38,7 +38,7 @@ automation.
|
|
|
38
38
|
After the first self-upgrade-capable release is installed globally through npm,
|
|
39
39
|
later CLI releases use `liftoff upgrade --check` followed by `liftoff upgrade`.
|
|
40
40
|
This replaces the CLI only; generated projects use `liftoff update` separately
|
|
41
|
-
for
|
|
41
|
+
for reviewed project maintenance. Useful project-read-only checks:
|
|
42
42
|
|
|
43
43
|
```bash
|
|
44
44
|
liftoff validate
|
|
@@ -47,11 +47,16 @@ liftoff upgrade --check
|
|
|
47
47
|
liftoff update --check
|
|
48
48
|
```
|
|
49
49
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
50
|
+
Start with `liftoff update --check`, then run `liftoff update` and approve the
|
|
51
|
+
matching plan. Check leaves project bytes unchanged and discloses a preview
|
|
52
|
+
receipt saved outside the repository. Missing or stale previews block apply.
|
|
53
|
+
Automation uses `--approve-plan <fingerprint>`; `--json` only selects formatting.
|
|
54
|
+
|
|
55
|
+
Supported activation-v1 migration preserves original records inside the project
|
|
56
|
+
and creates a linked v2 activation. Failed revalidation leaves v2 blocked and
|
|
57
|
+
resumable, not reset to v1. Application source, dependencies, schemas, containers,
|
|
58
|
+
environments, documentation, and infrastructure remain project-owned and outside
|
|
59
|
+
template replacement, including `--force`.
|
|
55
60
|
|
|
56
61
|
Older projects may display the retired `/liftoff-repository-governance` alias.
|
|
57
62
|
After upgrading the CLI, review `liftoff update --check`; `liftoff update --force`
|
|
@@ -40,7 +40,7 @@ async function assertProjectFileSnapshot(projectRoot, snapshot) {
|
|
|
40
40
|
throw new FileSystemError(`Project update target changed after review: ${snapshot.pathParts.join('/')}`);
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
|
-
async function assertAppliedMutationCurrent(projectRoot, mutation,
|
|
43
|
+
async function assertAppliedMutationCurrent(projectRoot, mutation, expectedMode) {
|
|
44
44
|
const current = await captureProjectFileSnapshot(projectRoot, mutation.pathParts);
|
|
45
45
|
if (mutation.type === 'delete') {
|
|
46
46
|
if (current.content !== undefined) {
|
|
@@ -49,8 +49,8 @@ async function assertAppliedMutationCurrent(projectRoot, mutation, original) {
|
|
|
49
49
|
return;
|
|
50
50
|
}
|
|
51
51
|
if (current.content === undefined ||
|
|
52
|
-
!current.content.equals(Buffer.from(mutation.content, 'utf8')) ||
|
|
53
|
-
|
|
52
|
+
!current.content.equals(typeof mutation.content === 'string' ? Buffer.from(mutation.content, 'utf8') : mutation.content) ||
|
|
53
|
+
expectedMode !== undefined && current.mode !== expectedMode) {
|
|
54
54
|
throw new FileSystemError(`Project update target changed before rollback: ${mutation.pathParts.join('/')}`);
|
|
55
55
|
}
|
|
56
56
|
}
|
|
@@ -88,6 +88,10 @@ export async function applyProjectFileTransaction(projectRoot, mutations, option
|
|
|
88
88
|
preconditions.set(key, snapshot);
|
|
89
89
|
}
|
|
90
90
|
for (const mutation of mutations) {
|
|
91
|
+
if (mutation.type === 'write' && mutation.mode !== undefined &&
|
|
92
|
+
(!Number.isInteger(mutation.mode) || mutation.mode < 0 || mutation.mode > 0o7777)) {
|
|
93
|
+
throw new FileSystemError(`Invalid project update mode for ${mutation.pathParts.join('/')}.`);
|
|
94
|
+
}
|
|
91
95
|
const key = mutation.pathParts.join('\0');
|
|
92
96
|
if (snapshots.has(key)) {
|
|
93
97
|
throw new FileSystemError(`Project update contains duplicate mutations for ${mutation.pathParts.join('/')}.`);
|
|
@@ -110,20 +114,35 @@ export async function applyProjectFileTransaction(projectRoot, mutations, option
|
|
|
110
114
|
await lease.assertHeld();
|
|
111
115
|
await assertProjectFileSnapshot(projectRoot, snapshots.get(mutation.pathParts.join('\0')));
|
|
112
116
|
if (mutation.type === 'write') {
|
|
117
|
+
const originalMode = snapshots.get(mutation.pathParts.join('\0')).mode;
|
|
118
|
+
const createdMode = 0o666 & ~process.umask();
|
|
119
|
+
const appliedMutation = {
|
|
120
|
+
mutation,
|
|
121
|
+
mode: originalMode ?? (mutation.mode === undefined ? undefined
|
|
122
|
+
: process.platform === 'win32' ? (createdMode & 0o200 ? 0o666 : 0o444) : createdMode)
|
|
123
|
+
};
|
|
113
124
|
await writeProjectFile(projectRoot, mutation.pathParts, mutation.content);
|
|
125
|
+
applied.push(appliedMutation);
|
|
126
|
+
if (mutation.mode !== undefined) {
|
|
127
|
+
await lease.assertHeld();
|
|
128
|
+
await assertAppliedMutationCurrent(projectRoot, mutation, appliedMutation.mode);
|
|
129
|
+
await chmod(await resolveProjectPath(projectRoot, mutation.pathParts), mutation.mode);
|
|
130
|
+
appliedMutation.mode = process.platform === 'win32'
|
|
131
|
+
? (mutation.mode & 0o200 ? 0o666 : 0o444) : mutation.mode;
|
|
132
|
+
}
|
|
114
133
|
}
|
|
115
134
|
else {
|
|
116
135
|
await deleteProjectFile(projectRoot, mutation.pathParts);
|
|
136
|
+
applied.push({ mutation });
|
|
117
137
|
}
|
|
118
|
-
applied.push(mutation);
|
|
119
138
|
}
|
|
120
139
|
}
|
|
121
140
|
catch (error) {
|
|
122
141
|
const rollbackFailures = [];
|
|
123
|
-
for (const mutation of [...applied].reverse()) {
|
|
142
|
+
for (const { mutation, mode } of [...applied].reverse()) {
|
|
124
143
|
const snapshot = snapshots.get(mutation.pathParts.join('\0'));
|
|
125
144
|
try {
|
|
126
|
-
await assertAppliedMutationCurrent(projectRoot, mutation,
|
|
145
|
+
await assertAppliedMutationCurrent(projectRoot, mutation, mode);
|
|
127
146
|
if (snapshot.content === undefined) {
|
|
128
147
|
await deleteProjectFile(projectRoot, mutation.pathParts);
|
|
129
148
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-transaction.js","sourceRoot":"","sources":["../../../src/adapters/filesystem/project-transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAMtD,MAAM,OAAO,2BAA4B,SAAQ,eAAe;IAG5C,gBAAgB;IAFlC,YACE,OAAe,EACC,gBAAmC;QAEnD,KAAK,CAAC,OAAO,CAAC,CAAC;gCAFC,gBAAgB;QAGhC,IAAI,CAAC,IAAI,GAAG,6BAA6B,CAAC;IAC5C,CAAC;CACF;AAQD,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,WAAmB,EACnB,SAAmB;IAEnB,MAAM,UAAU,GAAG,MAAM,kBAAkB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IACpE,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC,CAAC;QACxC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YACtB,MAAM,IAAI,eAAe,CACvB,iDAAiD,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CACvE,CAAC;QACJ,CAAC;QACD,OAAO;YACL,SAAS;YACT,OAAO,EAAE,MAAM,QAAQ,CAAC,UAAU,CAAC;YACnC,IAAI,EAAE,OAAO,CAAC,IAAI,GAAG,MAAM;SAC5B,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE,CAAC;YAClC,OAAO,EAAE,SAAS,EAAE,CAAC;QACvB,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,yBAAyB,CACtC,WAAmB,EACnB,QAA6B;IAE7B,MAAM,OAAO,GAAG,MAAM,0BAA0B,CAAC,WAAW,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;IAClF,IACE,CAAC,QAAQ,CAAC,OAAO,KAAK,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC;QACpE,QAAQ,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI;QAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,OAAQ,CAAC,KAAK,KAAK,EACpD,CAAC;QACD,MAAM,IAAI,eAAe,CACvB,+CAA+C,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAC9E,CAAC;IACJ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,4BAA4B,CACzC,WAAmB,EACnB,QAA6B,EAC7B,
|
|
1
|
+
{"version":3,"file":"project-transaction.js","sourceRoot":"","sources":["../../../src/adapters/filesystem/project-transaction.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { ProjectFileTransactionError } from './project-transaction.js';
|
|
2
|
+
import type { ProjectFileMutation, ProjectFileSnapshot } from './project-transaction.js';
|
|
3
|
+
export { reviewedUpdateTransactionPathParts, reviewedUpdateTransactionSchemaVersion } from '../../domain/project/reviewed-update-artifacts.js';
|
|
4
|
+
export interface ReviewedUpdateApprovalStore {
|
|
5
|
+
write(planFingerprint: string, transactionDigest: string): Promise<void>;
|
|
6
|
+
verify(planFingerprint: string, transactionDigest: string): Promise<boolean>;
|
|
7
|
+
remove(planFingerprint: string, transactionDigest: string): Promise<void>;
|
|
8
|
+
}
|
|
9
|
+
export interface ReviewedUpdateTransactionCheckpoint {
|
|
10
|
+
phase: 'prepared' | 'before-mutation' | 'staged' | 'after-mutation' | 'before-commit' | 'committed';
|
|
11
|
+
index?: number;
|
|
12
|
+
}
|
|
13
|
+
export interface ReviewedUpdateTransactionOptions {
|
|
14
|
+
planFingerprint: string;
|
|
15
|
+
approvalStore: ReviewedUpdateApprovalStore;
|
|
16
|
+
preconditions?: readonly ProjectFileSnapshot[];
|
|
17
|
+
validatePlan?: () => Promise<void>;
|
|
18
|
+
onBeforeMutation?: (mutation: ProjectFileMutation, index: number) => Promise<void>;
|
|
19
|
+
onCheckpoint?: (checkpoint: ReviewedUpdateTransactionCheckpoint) => Promise<void>;
|
|
20
|
+
}
|
|
21
|
+
export interface ReviewedUpdateRecoveryOptions {
|
|
22
|
+
approvalStore?: ReviewedUpdateApprovalStore;
|
|
23
|
+
}
|
|
24
|
+
export interface ReviewedUpdateTransactionDestination {
|
|
25
|
+
pathParts: string[];
|
|
26
|
+
attempted: boolean;
|
|
27
|
+
disposition: 'original' | 'target' | 'changed';
|
|
28
|
+
}
|
|
29
|
+
export interface ReviewedUpdateTransactionInspection {
|
|
30
|
+
status: 'absent' | 'interrupted' | 'committed' | 'blocked';
|
|
31
|
+
committed: boolean;
|
|
32
|
+
journalPath: string;
|
|
33
|
+
planFingerprint?: string;
|
|
34
|
+
transactionDigest?: string;
|
|
35
|
+
reason?: string;
|
|
36
|
+
destinations: ReviewedUpdateTransactionDestination[];
|
|
37
|
+
}
|
|
38
|
+
export interface ReviewedUpdateTransactionOutcome {
|
|
39
|
+
status: 'absent' | 'rolled-back' | 'committed' | 'blocked';
|
|
40
|
+
committed: boolean;
|
|
41
|
+
planFingerprint?: string;
|
|
42
|
+
transactionDigest?: string;
|
|
43
|
+
rollbackFailures: string[];
|
|
44
|
+
cleanupFailures: string[];
|
|
45
|
+
}
|
|
46
|
+
export declare class ReviewedUpdateTransactionError extends ProjectFileTransactionError {
|
|
47
|
+
readonly committed = false;
|
|
48
|
+
constructor(message: string, rollbackFailures?: readonly string[]);
|
|
49
|
+
}
|
|
50
|
+
export declare function reviewedUpdateTargetMode(mode: number | undefined, originalMode?: number): number;
|
|
51
|
+
export declare function inspectReviewedUpdateTransaction(projectRoot: string, options?: ReviewedUpdateRecoveryOptions): Promise<ReviewedUpdateTransactionInspection>;
|
|
52
|
+
export declare function recoverReviewedUpdateTransaction(projectRoot: string, options?: ReviewedUpdateRecoveryOptions): Promise<ReviewedUpdateTransactionOutcome>;
|
|
53
|
+
export declare function applyReviewedUpdateTransaction(projectRoot: string, mutations: readonly ProjectFileMutation[], options: ReviewedUpdateTransactionOptions): Promise<ReviewedUpdateTransactionOutcome>;
|