@openge/forge-release-vercel 0.1.1 → 0.3.0

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 (92) hide show
  1. package/README.md +32 -5
  2. package/dist/cli-arguments.d.ts +2 -0
  3. package/dist/cli-arguments.d.ts.map +1 -1
  4. package/dist/cli-arguments.js +6 -3
  5. package/dist/cli-arguments.js.map +1 -1
  6. package/dist/cli-runner.js +1 -1
  7. package/dist/cli-runner.js.map +1 -1
  8. package/dist/contracts.d.ts +14 -3
  9. package/dist/contracts.d.ts.map +1 -1
  10. package/dist/node/managed-budget.d.ts +2 -1
  11. package/dist/node/managed-budget.d.ts.map +1 -1
  12. package/dist/node/managed-budget.js +4 -2
  13. package/dist/node/managed-budget.js.map +1 -1
  14. package/dist/node/managed-closure.d.ts +2 -0
  15. package/dist/node/managed-closure.d.ts.map +1 -1
  16. package/dist/node/managed-closure.js +11 -0
  17. package/dist/node/managed-closure.js.map +1 -1
  18. package/dist/node/managed-disposition.d.ts +36 -0
  19. package/dist/node/managed-disposition.d.ts.map +1 -0
  20. package/dist/node/managed-disposition.js +114 -0
  21. package/dist/node/managed-disposition.js.map +1 -0
  22. package/dist/node/managed-history.d.ts +6 -0
  23. package/dist/node/managed-history.d.ts.map +1 -0
  24. package/dist/node/managed-history.js +48 -0
  25. package/dist/node/managed-history.js.map +1 -0
  26. package/dist/node/managed-io.d.ts +3 -2
  27. package/dist/node/managed-io.d.ts.map +1 -1
  28. package/dist/node/managed-io.js +36 -10
  29. package/dist/node/managed-io.js.map +1 -1
  30. package/dist/node/managed-metadata.d.ts +12 -0
  31. package/dist/node/managed-metadata.d.ts.map +1 -0
  32. package/dist/node/managed-metadata.js +73 -0
  33. package/dist/node/managed-metadata.js.map +1 -0
  34. package/dist/node/managed-paths.d.ts.map +1 -1
  35. package/dist/node/managed-paths.js +14 -5
  36. package/dist/node/managed-paths.js.map +1 -1
  37. package/dist/node/managed-process.d.ts.map +1 -1
  38. package/dist/node/managed-process.js +48 -13
  39. package/dist/node/managed-process.js.map +1 -1
  40. package/dist/node/managed-recovery-lock.d.ts +1 -1
  41. package/dist/node/managed-recovery-lock.d.ts.map +1 -1
  42. package/dist/node/managed-recovery-lock.js +28 -7
  43. package/dist/node/managed-recovery-lock.js.map +1 -1
  44. package/dist/node/managed-recovery.d.ts +15 -2
  45. package/dist/node/managed-recovery.d.ts.map +1 -1
  46. package/dist/node/managed-recovery.js +87 -72
  47. package/dist/node/managed-recovery.js.map +1 -1
  48. package/dist/node/managed-release.d.ts.map +1 -1
  49. package/dist/node/managed-release.js +18 -3
  50. package/dist/node/managed-release.js.map +1 -1
  51. package/dist/node/managed-remote-state.d.ts +8 -0
  52. package/dist/node/managed-remote-state.d.ts.map +1 -0
  53. package/dist/node/managed-remote-state.js +63 -0
  54. package/dist/node/managed-remote-state.js.map +1 -0
  55. package/dist/node/managed-retirement.d.ts +5 -0
  56. package/dist/node/managed-retirement.d.ts.map +1 -0
  57. package/dist/node/managed-retirement.js +166 -0
  58. package/dist/node/managed-retirement.js.map +1 -0
  59. package/dist/node/managed-state.d.ts.map +1 -1
  60. package/dist/node/managed-state.js +29 -5
  61. package/dist/node/managed-state.js.map +1 -1
  62. package/dist/node/managed-terminal.d.ts +42 -0
  63. package/dist/node/managed-terminal.d.ts.map +1 -0
  64. package/dist/node/managed-terminal.js +163 -0
  65. package/dist/node/managed-terminal.js.map +1 -0
  66. package/dist/node/publication.d.ts.map +1 -1
  67. package/dist/node/publication.js +5 -1
  68. package/dist/node/publication.js.map +1 -1
  69. package/dist/node/release-context.d.ts +22 -4
  70. package/dist/node/release-context.d.ts.map +1 -1
  71. package/dist/node/release.d.ts.map +1 -1
  72. package/dist/node/release.js +9 -1
  73. package/dist/node/release.js.map +1 -1
  74. package/dist/node/retirement-claim.d.ts +8 -0
  75. package/dist/node/retirement-claim.d.ts.map +1 -0
  76. package/dist/node/retirement-claim.js +47 -0
  77. package/dist/node/retirement-claim.js.map +1 -0
  78. package/dist/node/retirement-host.d.ts +11 -0
  79. package/dist/node/retirement-host.d.ts.map +1 -0
  80. package/dist/node/retirement-host.js +55 -0
  81. package/dist/node/retirement-host.js.map +1 -0
  82. package/dist/node/retirement-lease.d.ts +9 -0
  83. package/dist/node/retirement-lease.d.ts.map +1 -0
  84. package/dist/node/retirement-lease.js +88 -0
  85. package/dist/node/retirement-lease.js.map +1 -0
  86. package/dist/node/retirement-record.d.ts +40 -0
  87. package/dist/node/retirement-record.d.ts.map +1 -0
  88. package/dist/node/retirement-record.js +109 -0
  89. package/dist/node/retirement-record.js.map +1 -0
  90. package/dist/node/workspace-release.js +2 -2
  91. package/dist/node/workspace-release.js.map +1 -1
  92. package/package.json +4 -3
@@ -0,0 +1,48 @@
1
+ import { opendir } from 'node:fs/promises';
2
+ import { resolve } from 'node:path';
3
+ import { assertPathChain, pathExists, readBoundedJson } from './managed-io.js';
4
+ import { assertMetadataFile, assertMetadataPaths, inspectMetadataFile } from './managed-metadata.js';
5
+ import { parseManagedDisposition } from './managed-disposition.js';
6
+ import { parseRetirementRecord } from './retirement-record.js';
7
+ import { ReleaseError } from './errors.js';
8
+ export const historyFileLimit = 8_388_608;
9
+ /** 新活动状态绑定已有历史的内容与文件身份;清单缺失不能被理解为没有旧意图。 */
10
+ export async function captureManagedHistory(paths) {
11
+ await assertMetadataPaths(paths);
12
+ const result = [];
13
+ for (const kind of ['history', 'retired']) {
14
+ const directory = resolve(paths.slotRoot, kind);
15
+ await assertPathChain(paths.slotRoot, directory);
16
+ if (!await pathExists(directory))
17
+ continue;
18
+ for await (const entry of await opendir(directory)) {
19
+ if (result.length >= 10_000)
20
+ throw new ReleaseError('SLOT_STATE', { reason: 'HISTORY_LIMIT' });
21
+ if (!entry.isFile() || !/^[a-f0-9-]{36}\.json$/u.test(entry.name))
22
+ throw new ReleaseError('SLOT_STATE', { reason: 'HISTORY_ENTRY' });
23
+ const name = `${kind}/${entry.name}`, path = resolve(paths.slotRoot, name), file = await inspectMetadataFile(path, historyFileLimit);
24
+ if (!file)
25
+ throw new ReleaseError('SLOT_STATE', { reason: 'HISTORY_MISSING' });
26
+ const value = await readBoundedJson(path, historyFileLimit);
27
+ const evidence = kind === 'history' ? parseManagedDisposition(value) : parseRetirementRecord(value);
28
+ if (`${evidence.runId}.json` !== entry.name)
29
+ throw new ReleaseError('SLOT_STATE', { reason: 'HISTORY_NAME' });
30
+ await assertMetadataFile(path, file, historyFileLimit);
31
+ result.push({ path: name, file });
32
+ }
33
+ }
34
+ return result.sort((a, b) => a.path.localeCompare(b.path));
35
+ }
36
+ export async function assertManagedHistory(paths, state) {
37
+ await assertMetadataPaths(paths);
38
+ if (state.schemaVersion === 2)
39
+ return;
40
+ if (!state.history)
41
+ throw new ReleaseError('SLOT_STATE', { reason: 'HISTORY_BINDING_MISSING' });
42
+ for (const entry of state.history) {
43
+ const path = resolve(paths.slotRoot, entry.path);
44
+ await assertPathChain(paths.slotRoot, path);
45
+ await assertMetadataFile(path, entry.file, historyFileLimit);
46
+ }
47
+ }
48
+ //# sourceMappingURL=managed-history.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"managed-history.js","sourceRoot":"","sources":["../../src/node/managed-history.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { FileIdentity, ManagedPaths } from './release-context.js';
1
+ import type { FileIdentity, ManagedPaths, MetadataFile } from './release-context.js';
2
2
  export declare const within: (root: string, path: string) => boolean;
3
3
  export declare const fileIdentity: (path: string) => Promise<FileIdentity>;
4
4
  export declare const sameIdentity: (a: {
@@ -10,6 +10,7 @@ export declare const sameIdentity: (a: {
10
10
  }) => boolean;
11
11
  export declare function pathExists(path: string): Promise<boolean>;
12
12
  export declare function assertPathChain(root: string, path: string): Promise<void>;
13
+ export declare function readBoundedText(path: string, maxBytes?: number): Promise<string | undefined>;
13
14
  export declare function readBoundedJson(path: string, maxBytes?: number): Promise<unknown>;
14
15
  export declare function measureManagedUsageOnce(paths: ManagedPaths, signal?: AbortSignal): Promise<{
15
16
  bytes: number;
@@ -19,5 +20,5 @@ export declare function measureManagedUsage(paths: ManagedPaths, signal?: AbortS
19
20
  bytes: number;
20
21
  freeBytes: number;
21
22
  }>;
22
- export declare function atomicJson(path: string, value: unknown, maxBytes: number, paths: ManagedPaths, guard: () => Promise<void>, maxTotal: number, minFree: number): Promise<void>;
23
+ export declare function atomicJson(path: string, value: unknown, maxBytes: number, paths: ManagedPaths, guard: () => Promise<void>, maxTotal: number, minFree: number, beforeCommit?: (prepared: MetadataFile) => Promise<void>): Promise<void>;
23
24
  //# sourceMappingURL=managed-io.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"managed-io.d.ts","sourceRoot":"","sources":["../../src/node/managed-io.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGvE,eAAO,MAAM,MAAM,GAAI,MAAM,MAAM,EAAE,MAAM,MAAM,KAAG,OAEnD,CAAC;AACF,eAAO,MAAM,YAAY,GAAU,MAAM,MAAM,KAAG,OAAO,CAAC,YAAY,CAAyH,CAAC;AAChM,eAAO,MAAM,YAAY,GAAI,GAAG;IAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,EAAE,GAAG;IAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,KAAG,OAG3I,CAAC;AACF,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE/D;AACD,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAY/E;AACD,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,SAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAiB1F;AA8CD,wBAAsB,uBAAuB,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAsCtI;AACD,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,WAAW,EAAE,IAAI,iCAA0B,GAAG,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAQlK;AACD,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAclL"}
1
+ {"version":3,"file":"managed-io.d.ts","sourceRoot":"","sources":["../../src/node/managed-io.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGrF,eAAO,MAAM,MAAM,GAAI,MAAM,MAAM,EAAE,MAAM,MAAM,KAAG,OAEnD,CAAC;AACF,eAAO,MAAM,YAAY,GAAU,MAAM,MAAM,KAAG,OAAO,CAAC,YAAY,CAAyH,CAAC;AAChM,eAAO,MAAM,YAAY,GAAI,GAAG;IAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,EAAE,GAAG;IAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,KAAG,OAG3I,CAAC;AACF,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE/D;AACD,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAY/E;AACD,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,SAAY,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAiBrG;AACD,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,SAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAI1F;AA8CD,wBAAsB,uBAAuB,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAsCtI;AACD,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,WAAW,EAAE,IAAI,iCAA0B,GAAG,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAQlK;AACD,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EACjK,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CA0BzE"}
@@ -1,4 +1,5 @@
1
1
  import { lstat, open, opendir, readlink, realpath, rename, statfs, unlink } from 'node:fs/promises';
2
+ import { createHash } from 'node:crypto';
2
3
  import { dirname, isAbsolute, relative, resolve } from 'node:path';
3
4
  import { record, ReleaseError } from './errors.js';
4
5
  export const within = (root, path) => {
@@ -44,7 +45,7 @@ export async function assertPathChain(root, path) {
44
45
  }
45
46
  }
46
47
  }
47
- export async function readBoundedJson(path, maxBytes = 1_048_576) {
48
+ export async function readBoundedText(path, maxBytes = 1_048_576) {
48
49
  let handle;
49
50
  try {
50
51
  const before = await lstat(path, { bigint: true });
@@ -64,7 +65,7 @@ export async function readBoundedJson(path, maxBytes = 1_048_576) {
64
65
  }
65
66
  if (offset > maxBytes)
66
67
  throw new ReleaseError('SLOT_STATE', { reason: 'FILE_SIZE' });
67
- return JSON.parse(new TextDecoder('utf-8', { fatal: true }).decode(bytes.subarray(0, offset)));
68
+ return new TextDecoder('utf-8', { fatal: true }).decode(bytes.subarray(0, offset));
68
69
  }
69
70
  catch (error) {
70
71
  if (record(error).code === 'ENOENT')
@@ -77,6 +78,15 @@ export async function readBoundedJson(path, maxBytes = 1_048_576) {
77
78
  await handle?.close();
78
79
  }
79
80
  }
81
+ export async function readBoundedJson(path, maxBytes = 1_048_576) {
82
+ const text = await readBoundedText(path, maxBytes);
83
+ try {
84
+ return text === undefined ? undefined : JSON.parse(text);
85
+ }
86
+ catch {
87
+ throw new ReleaseError('SLOT_STATE', { reason: 'JSON_READ' });
88
+ }
89
+ }
80
90
  async function assertInternalLink(root, path, active) {
81
91
  try {
82
92
  if (!within(root, await realpath(path)))
@@ -213,7 +223,7 @@ export async function measureManagedUsage(paths, signal, scan = measureManagedUs
213
223
  }
214
224
  }
215
225
  }
216
- export async function atomicJson(path, value, maxBytes, paths, guard, maxTotal, minFree) {
226
+ export async function atomicJson(path, value, maxBytes, paths, guard, maxTotal, minFree, beforeCommit) {
217
227
  const bytes = Buffer.from(`${JSON.stringify(value)}\n`, 'utf8');
218
228
  if (bytes.length > maxBytes)
219
229
  throw new ReleaseError('BUDGET_EXCEEDED', { reason: 'METADATA_LIMIT' });
@@ -223,18 +233,34 @@ export async function atomicJson(path, value, maxBytes, paths, guard, maxTotal,
223
233
  if (usage.bytes + bytes.length > maxTotal || usage.freeBytes - bytes.length < minFree)
224
234
  throw new ReleaseError('BUDGET_EXCEEDED', { reason: 'METADATA_ADMISSION' });
225
235
  const temporary = resolve(dirname(path), `.${path.slice(dirname(path).length + 1)}.next`);
226
- const handle = await open(temporary, 'wx');
236
+ const handle = await open(temporary, 'wx'), created = await handle.stat({ bigint: true });
237
+ const prepared = { identity: { dev: created.dev.toString(), ino: created.ino.toString() }, sha256: createHash('sha256').update(bytes).digest('hex') };
238
+ let renamed = false;
239
+ const intact = async () => sameIdentity(created, await lstat(temporary, { bigint: true }))
240
+ && await readBoundedText(temporary, maxBytes) === bytes.toString('utf8');
227
241
  try {
228
242
  await handle.writeFile(bytes);
229
243
  await handle.sync();
244
+ await handle.close();
245
+ // 在目标替换前持久预告暂存文件的精确身份,恢复可区分 rename 两侧的合法状态。
246
+ await beforeCommit?.(prepared);
247
+ await guard();
248
+ if (!await intact())
249
+ throw new ReleaseError('SLOT_STATE', { reason: 'METADATA_TEMP_REPLACED' });
250
+ await rename(temporary, path);
251
+ renamed = true;
230
252
  }
231
- catch (error) {
253
+ finally {
232
254
  await handle.close();
233
- await unlink(temporary);
234
- throw error;
255
+ if (!renamed) {
256
+ // 已知失败不遗留本次完整暂存文件;未知归属/内容与崩溃残留仍由恢复门禁处理。
257
+ try {
258
+ await guard();
259
+ if (await pathExists(temporary) && await intact())
260
+ await unlink(temporary);
261
+ }
262
+ catch { /* 保留首错,不清理无法证明归属的文件。 */ }
263
+ }
235
264
  }
236
- await handle.close();
237
- await guard();
238
- await rename(temporary, path);
239
265
  }
240
266
  //# sourceMappingURL=managed-io.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"managed-io.js","sourceRoot":"","sources":["../../src/node/managed-io.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"managed-io.js","sourceRoot":"","sources":["../../src/node/managed-io.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACpG,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEnE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEnD,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,IAAY,EAAW,EAAE;IAC5D,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAAC,OAAO,KAAK,KAAK,EAAE,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAC3K,CAAC,CAAC;AACF,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAAE,IAAY,EAAyB,EAAE,GAAG,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AAChM,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAqD,EAAE,CAAqD,EAAW,EAAE;IACpJ,MAAM,SAAS,GAAG,CAAC,KAAc,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3J,MAAM,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAAC,OAAO,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC9J,CAAC,CAAC;AACF,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAY;IAC3C,IAAI,CAAC;QAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;QAAC,OAAO,IAAI,CAAC;IAAC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QAAC,MAAM,KAAK,CAAC;IAAC,CAAC;AAC3H,CAAC;AACD,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAY,EAAE,IAAY;IAC9D,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC;QAAE,MAAM,IAAI,YAAY,CAAC,WAAW,CAAC,CAAC;IAC7D,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACnE,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,KAAK,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QACnD,IAAI,KAAK,IAAI,CAAC;YAAE,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/D,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC;YAClC,IAAI,IAAI,CAAC,cAAc,EAAE,IAAI,MAAM,QAAQ,CAAC,OAAO,CAAC,KAAK,OAAO;gBAAE,MAAM,IAAI,YAAY,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;YACnI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC;gBAAE,MAAM,IAAI,YAAY,CAAC,WAAW,CAAC,CAAC;QAC3F,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,QAAQ;gBAAE,OAAO;YAAC,MAAM,KAAK,CAAC;QAAC,CAAC;IAC/E,CAAC;AACH,CAAC;AACD,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAY,EAAE,QAAQ,GAAG,SAAS;IACtE,IAAI,MAAM,CAAC;IACX,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QACnD,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC;YAAE,MAAM,IAAI,YAAY,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC,CAAC;QAC9H,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC/B,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC;YAAE,MAAM,IAAI,YAAY,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;QACpG,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;QAAC,IAAI,MAAM,GAAG,CAAC,CAAC;QACzD,OAAO,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;YAAC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,EAAE,IAAI,CAAC,CAAC;YAAC,IAAI,MAAM,CAAC,SAAS,KAAK,CAAC;gBAAE,MAAM;YAAC,MAAM,IAAI,MAAM,CAAC,SAAS,CAAC;QAAC,CAAC;QAC9K,IAAI,MAAM,GAAG,QAAQ;YAAE,MAAM,IAAI,YAAY,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QACrF,OAAO,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACrF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAC;QACtD,IAAI,KAAK,YAAY,YAAY;YAAE,MAAM,KAAK,CAAC;QAC/C,MAAM,IAAI,YAAY,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;IAChE,CAAC;YAAS,CAAC;QAAC,MAAM,MAAM,EAAE,KAAK,EAAE,CAAC;IAAC,CAAC;AACtC,CAAC;AACD,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAY,EAAE,QAAQ,GAAG,SAAS;IACtE,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACnD,IAAI,CAAC;QAAC,OAAO,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAY,CAAC;IAAC,CAAC;IAC5E,MAAM,CAAC;QAAC,MAAM,IAAI,YAAY,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;IAAC,CAAC;AAC1E,CAAC;AACD,KAAK,UAAU,kBAAkB,CAAC,IAAY,EAAE,IAAY,EAAE,MAAkB;IAC9E,IAAI,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;YAAE,MAAM,IAAI,YAAY,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;QAC/G,OAAO;IACT,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,QAAQ;YAAE,MAAM,KAAK,CAAC;IAAC,CAAC;IACrE,MAAM,UAAU,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACzG,MAAM,OAAO,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;IAC9F,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,GAAa,EAAE,EAAE,IAAI,GAAG,CAAC,CAAC;IAC9D,MAAM,MAAM,GAAG,CAAC,MAAc,EAAE,EAAE;QAChC,IAAI,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;QAC/B,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACvB,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAAE,MAAM,IAAI,YAAY,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;YACvK,OAAO,GAAG,IAAI,CAAC;YAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACvD,CAAC;aAAM,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,MAAM,IAAI,YAAY,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAC,CAAC;QAChJ,OAAO,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC;IAC9D,CAAC,CAAC;IACF,MAAM,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7B,uCAAuC;IACvC,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,EAAE,CAAC;QAAC,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;QACvC,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,GAAG;YAAE,SAAS;QACpC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;YAC3B,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC;gBAAE,MAAM,IAAI,YAAY,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;YAClG,SAAS;QACX,CAAC;QACD,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC;YAAE,MAAM,IAAI,YAAY,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;QACpG,IAAI,IAAI,CAAC;QACT,IAAI,CAAC;YAAC,IAAI,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,CAAC;QAAC,CAAC;QACtC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,QAAQ;gBAAE,MAAM,KAAK,CAAC;YACjD,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAAE,MAAM,IAAI,YAAY,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAC,CAAC;YACxG,OAAO;QACT,CAAC;QACD,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;YAC1B,IAAI,IAAI,EAAE,IAAI,EAAE;gBAAE,MAAM,IAAI,YAAY,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,uBAAuB,EAAE,CAAC,CAAC;YAChG,MAAM,CAAC,MAAM,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;QACpC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;gBAAE,MAAM,IAAI,YAAY,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAC,CAAC;YAC1H,OAAO,GAAG,SAAS,CAAC;QACtB,CAAC;IACH,CAAC;AACH,CAAC;AACD,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,KAAmB,EAAE,MAAoB;IACrF,IAAI,KAAK,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC;IAC3B,MAAM,MAAM,GAAG,GAAG,EAAE,GAAG,IAAI,MAAM,EAAE,OAAO;QAAE,MAAM,IAAI,YAAY,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,sBAAsB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5H,MAAM,KAAK,GAAG,KAAK,EAAE,IAAY,EAAiB,EAAE;QAClD,MAAM,EAAE,CAAC;QACT,IAAI,EAAE,OAAO,GAAG,OAAO;YAAE,MAAM,IAAI,YAAY,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;QAC7F,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QACjD,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;YAC1B,MAAM,kBAAkB,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YACvD,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,KAAK,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;gBAAE,MAAM,IAAI,YAAY,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;YACpI,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;aAAM,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YAC9B,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;YACtC,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;gBAAC,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC;gBAAC,MAAM,EAAE,CAAC;YAAC,CAAC;YAC3D,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,SAAS;gBAAE,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9E,CAAC;aAAM,IAAI,IAAI,CAAC,MAAM,EAAE;YAAE,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;YAChD,MAAM,IAAI,YAAY,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QACvE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC;YAAE,MAAM,IAAI,YAAY,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;IAC1G,CAAC,CAAC;IACF,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,KAAK,IAAI,EAAE;YAC5B,IAAI,CAAC,YAAY,CAAC,MAAM,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,IAAI,MAAM,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,KAAK,CAAC,QAAQ;gBAAE,MAAM,IAAI,YAAY,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;QACxM,CAAC,CAAC;QACF,MAAM,UAAU,EAAE,CAAC;QACnB,MAAM,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC5B,IAAI,MAAM,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;YACvC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAC3C,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBAAE,MAAM,IAAI,YAAY,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;YACxF,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC;QACrB,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9D,MAAM,UAAU,EAAE,CAAC;QACnB,MAAM,EAAE,CAAC;QACT,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;QAC/C,IAAI,SAAS,GAAG,EAAE,IAAI,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC;YAAE,MAAM,IAAI,YAAY,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;QACvI,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;IACjD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAAC,IAAI,KAAK,YAAY,YAAY;YAAE,MAAM,KAAK,CAAC;QAAC,MAAM,IAAI,YAAY,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI;YAC/J,KAAK,EAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;IAAC,CAAC;AAC1H,CAAC;AACD,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,KAAmB,EAAE,MAAoB,EAAE,IAAI,GAAG,uBAAuB;IACjH,KAAK,IAAI,OAAO,GAAG,CAAC,GAAI,OAAO,EAAE,EAAE,CAAC;QAClC,IAAI,CAAC;YAAC,OAAO,MAAM,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAAC,CAAC;QACzC,OAAO,KAAK,EAAE,CAAC;YACb,uCAAuC;YACvC,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,YAAY,YAAY,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,gBAAgB,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,QAAQ;gBAAE,MAAM,KAAK,CAAC;QACtJ,CAAC;IACH,CAAC;AACH,CAAC;AACD,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAY,EAAE,KAAc,EAAE,QAAgB,EAAE,KAAmB,EAAE,KAA0B,EAAE,QAAgB,EAAE,OAAe,EACjK,YAAwD;IACxD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAChE,IAAI,KAAK,CAAC,MAAM,GAAG,QAAQ;QAAE,MAAM,IAAI,YAAY,CAAC,iBAAiB,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;IACrG,MAAM,KAAK,EAAE,CAAC;IACd,MAAM,KAAK,GAAG,MAAM,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC/C,8BAA8B;IAC9B,IAAI,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,QAAQ,IAAI,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,OAAO;QAAE,MAAM,IAAI,YAAY,CAAC,iBAAiB,EAAE,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAC,CAAC;IACnK,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;IAC1F,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1F,MAAM,QAAQ,GAAG,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;IACtJ,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,MAAM,MAAM,GAAG,KAAK,IAAI,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;WACrF,MAAM,eAAe,CAAC,SAAS,EAAE,QAAQ,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC3E,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAAC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QAAC,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACzE,4CAA4C;QAC5C,MAAM,YAAY,EAAE,CAAC,QAAQ,CAAC,CAAC;QAAC,MAAM,KAAK,EAAE,CAAC;QAC9C,IAAI,CAAC,MAAM,MAAM,EAAE;YAAE,MAAM,IAAI,YAAY,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,wBAAwB,EAAE,CAAC,CAAC;QAChG,MAAM,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAAC,OAAO,GAAG,IAAI,CAAC;IAChD,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,wCAAwC;YACxC,IAAI,CAAC;gBAAC,MAAM,KAAK,EAAE,CAAC;gBAAC,IAAI,MAAM,UAAU,CAAC,SAAS,CAAC,IAAI,MAAM,MAAM,EAAE;oBAAE,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,wBAAwB,CAAC,CAAC;QACvI,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { ManagedPaths, MetadataFile } from './release-context.js';
2
+ export type { MetadataFile } from './release-context.js';
3
+ export declare const metadataReserveBytes = 1048576;
4
+ export declare const terminalLimit = 262144;
5
+ export declare const metadataDigest: (value: string) => string;
6
+ export declare const sameMetadataFile: (left: MetadataFile | null, right: MetadataFile | null) => boolean;
7
+ export declare function inspectMetadataFile(path: string, limit?: number): Promise<MetadataFile | null>;
8
+ export declare function assertMetadataFile(path: string, expected: MetadataFile | null, limit?: number): Promise<void>;
9
+ /** 仅核对元数据边界;故障 payload 仍由独立的执行/预算门禁拒绝。 */
10
+ export declare function assertMetadataPaths(paths: ManagedPaths): Promise<void>;
11
+ export declare function writeReservedMetadata(path: string, value: unknown, paths: ManagedPaths, minFreeBytes: number, guard: () => Promise<void>): Promise<void>;
12
+ //# sourceMappingURL=managed-metadata.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"managed-metadata.d.ts","sourceRoot":"","sources":["../../src/node/managed-metadata.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACvE,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAIzD,eAAO,MAAM,oBAAoB,UAAY,CAAC;AAC9C,eAAO,MAAM,aAAa,SAAU,CAAC;AACrC,eAAO,MAAM,cAAc,GAAI,OAAO,MAAM,KAAG,MAA0D,CAAC;AAC1G,eAAO,MAAM,gBAAgB,GAAI,MAAM,YAAY,GAAG,IAAI,EAAE,OAAO,YAAY,GAAG,IAAI,KAAG,OACuC,CAAC;AACjI,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,SAAY,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAMvG;AACD,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,GAAG,IAAI,EAAE,KAAK,SAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAKtH;AACD,0CAA0C;AAC1C,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAK5E;AACD,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAsB9J"}
@@ -0,0 +1,73 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { lstat, open, rename, statfs, unlink } from 'node:fs/promises';
3
+ import { dirname, resolve } from 'node:path';
4
+ import { assertPathChain, fileIdentity, pathExists, readBoundedText, sameIdentity } from './managed-io.js';
5
+ import { ReleaseError } from './errors.js';
6
+ export const metadataReserveBytes = 1_048_576;
7
+ export const terminalLimit = 262_144;
8
+ export const metadataDigest = (value) => createHash('sha256').update(value).digest('hex');
9
+ export const sameMetadataFile = (left, right) => left === null ? right === null : right !== null && left.sha256 === right.sha256 && sameIdentity(left.identity, right.identity);
10
+ export async function inspectMetadataFile(path, limit = 1_048_576) {
11
+ const before = await pathExists(path) ? await fileIdentity(path) : undefined;
12
+ const text = await readBoundedText(path, limit);
13
+ const after = await pathExists(path) ? await fileIdentity(path) : undefined;
14
+ if (before ? !after || !sameIdentity(before, after) || text === undefined : after || text !== undefined)
15
+ throw new ReleaseError('SLOT_STATE', { reason: 'METADATA_REPLACED' });
16
+ return text === undefined || !after ? null : { identity: after, sha256: metadataDigest(text) };
17
+ }
18
+ export async function assertMetadataFile(path, expected, limit = 1_048_576) {
19
+ const current = await inspectMetadataFile(path, limit);
20
+ if (!sameMetadataFile(current, expected)) {
21
+ throw new ReleaseError('SLOT_STATE', { reason: 'METADATA_REPLACED' });
22
+ }
23
+ }
24
+ /** 仅核对元数据边界;故障 payload 仍由独立的执行/预算门禁拒绝。 */
25
+ export async function assertMetadataPaths(paths) {
26
+ await assertPathChain(paths.sourceRoot, paths.slotRoot);
27
+ await assertPathChain(paths.sourceRoot, paths.anchorPath);
28
+ if (!sameIdentity(await fileIdentity(paths.sourceRoot), paths.sourceIdentity) || !sameIdentity(await fileIdentity(paths.slotRoot), paths.slotIdentity)
29
+ || paths.sourceIdentity.dev !== paths.slotIdentity.dev)
30
+ throw new ReleaseError('SLOT_PATH', { reason: 'ROOT_REPLACED' });
31
+ for (const path of [paths.ownershipPath, paths.statePath, paths.lockPath, paths.recoveryLockPath])
32
+ await assertPathChain(paths.slotRoot, path);
33
+ }
34
+ export async function writeReservedMetadata(path, value, paths, minFreeBytes, guard) {
35
+ const bytes = Buffer.from(`${JSON.stringify(value)}\n`);
36
+ if (bytes.length > terminalLimit)
37
+ throw new ReleaseError('BUDGET_EXCEEDED', { reason: 'TERMINAL_LIMIT' });
38
+ await guard();
39
+ await assertMetadataPaths(paths);
40
+ await assertPathChain(paths.slotRoot, path);
41
+ const volume = await statfs(paths.slotRoot, { bigint: true });
42
+ if (volume.bavail * volume.bsize - BigInt(bytes.length) < BigInt(minFreeBytes))
43
+ throw new ReleaseError('BUDGET_EXCEEDED', { reason: 'TERMINAL_FREE_SPACE' });
44
+ const temporary = resolve(dirname(path), `.${path.slice(dirname(path).length + 1)}.next`);
45
+ await assertPathChain(paths.slotRoot, temporary);
46
+ const handle = await open(temporary, 'wx'), created = await handle.stat({ bigint: true });
47
+ let renamed = false;
48
+ try {
49
+ await handle.writeFile(bytes);
50
+ await handle.sync();
51
+ await handle.close();
52
+ await guard();
53
+ await assertMetadataPaths(paths);
54
+ await assertPathChain(paths.slotRoot, path);
55
+ if (!sameIdentity(created, await lstat(temporary, { bigint: true })))
56
+ throw new ReleaseError('SLOT_STATE', { reason: 'TERMINAL_TEMP_REPLACED' });
57
+ await rename(temporary, path);
58
+ renamed = true;
59
+ }
60
+ finally {
61
+ await handle.close();
62
+ if (!renamed) {
63
+ // 仅回收本次创建且身份仍匹配的暂存文件;异常边界下保留证据。
64
+ try {
65
+ await assertMetadataPaths(paths);
66
+ if (await pathExists(temporary) && sameIdentity(created, await lstat(temporary, { bigint: true })))
67
+ await unlink(temporary);
68
+ }
69
+ catch { /* 不掩盖原始写入失败。 */ }
70
+ }
71
+ }
72
+ }
73
+ //# sourceMappingURL=managed-metadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"managed-metadata.js","sourceRoot":"","sources":["../../src/node/managed-metadata.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"managed-paths.d.ts","sourceRoot":"","sources":["../../src/node/managed-paths.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AASpF,wBAAsB,yBAAyB,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAmCzG;AAgBD,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,CAe3G;AACD,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAY3E;AACD,wBAAsB,eAAe,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,CAkDtG"}
1
+ {"version":3,"file":"managed-paths.d.ts","sourceRoot":"","sources":["../../src/node/managed-paths.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAapF,wBAAsB,yBAAyB,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAmCzG;AAgBD,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,CAe3G;AACD,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAY3E;AACD,wBAAsB,eAAe,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,CAsDtG"}
@@ -10,6 +10,10 @@ import { createManagedStateStore } from './managed-state.js';
10
10
  import { currentCoordinator } from './process-identities.js';
11
11
  import { assertNoGitContext } from './git-context.js';
12
12
  import { hasVerifiedManagedClosure } from './managed-closure.js';
13
+ import { hasFinalizedRetirement } from './retirement-record.js';
14
+ import { metadataReserveBytes } from './managed-metadata.js';
15
+ import { archiveManagedDisposition, hasManagedDisposition } from './managed-disposition.js';
16
+ import { assertManagedHistory } from './managed-history.js';
13
17
  export async function assertManagementUntracked(source, execution) {
14
18
  assertNoGitContext();
15
19
  if (source.config.source.mode !== 'managed-commit')
@@ -154,7 +158,7 @@ export async function openManagedSlot(source, execution) {
154
158
  slotId = owner.slotId;
155
159
  if (anchored && existingAnchor.slotId !== slotId)
156
160
  throw new ReleaseError('SLOT_STATE', { reason: 'ANCHOR_SLOT_ID' });
157
- const allowed = ['ownership.json', 'run.lock', 'recover.lock', 'state.json', 'checkout', 'latest-check.json', 'latest-publish.json', 'command-gate.json', 'command-result.json'];
161
+ const allowed = ['ownership.json', 'run.lock', 'recover.lock', 'state.json', 'checkout', 'latest-check.json', 'latest-publish.json', 'command-gate.json', 'command-result.json', 'retirement.json', 'retirement-work', 'retired', 'history', 'terminal.json', '.terminal.json.next'];
158
162
  if ((await readdir(paths.slotRoot)).some(name => !allowed.includes(name)))
159
163
  throw new ReleaseError('SLOT_FOREIGN', { reason: 'UNKNOWN_ENTRY' });
160
164
  }
@@ -166,7 +170,7 @@ export async function openManagedSlot(source, execution) {
166
170
  const usage = await measureManagedUsage(paths), budget = source.config.source;
167
171
  const ownerJson = JSON.stringify({ schemaVersion: 2, slotId, sourceRoot: source.root,
168
172
  configPath: source.configPath, repository: source.config.git.repository, sourceIdentity: paths.sourceIdentity, slotIdentity: paths.slotIdentity });
169
- const admissionBytes = 1024 + (created ? Buffer.byteLength(ownerJson) : 0);
173
+ const admissionBytes = 1024 + metadataReserveBytes + (created ? Buffer.byteLength(ownerJson) : 0);
170
174
  if (Buffer.byteLength(ownerJson) > 65_536 || usage.bytes + admissionBytes > budget.maxBytes || usage.freeBytes - admissionBytes < budget.minFreeBytes)
171
175
  throw new ReleaseError('BUDGET_EXCEEDED', { reason: 'SLOT_ADMISSION' });
172
176
  const rawLock = await acquireLock(paths.lockPath, { runId, identity: coordinator });
@@ -181,9 +185,14 @@ export async function openManagedSlot(source, execution) {
181
185
  const guard = async () => { await assertManagedPaths(paths); await lock.assertOwned(); };
182
186
  const store = createManagedStateStore(paths, source, slotId, guard);
183
187
  const state = await store.read();
184
- if (state && (state.status !== 'closed' || state.pendingPush || Object.values(state.effects).includes('unknown') || !state.processes.every(hasVerifiedManagedClosure)))
185
- throw new ReleaseError('RECOVERY_REQUIRED', { runId: state.runId });
186
- return { paths, source, slotId, lock, store, runId, coordinator };
188
+ if (state)
189
+ await assertManagedHistory(paths, state);
190
+ if (state && !await hasManagedDisposition(paths, state) && !await hasFinalizedRetirement(paths, state)) {
191
+ if (state.status !== 'closed' || state.pendingPush || Object.values(state.effects).includes('unknown') || !state.processes.every(hasVerifiedManagedClosure))
192
+ throw new ReleaseError('RECOVERY_REQUIRED', { runId: state.runId });
193
+ await archiveManagedDisposition(paths, state, state, guard, undefined, true);
194
+ }
195
+ return { paths, source, slotId, lock, store, runId, coordinator, assertMetadataOwned: () => rawLock.assertOwned() };
187
196
  }
188
197
  catch (error) {
189
198
  await lock.release();
@@ -1 +1 @@
1
- {"version":3,"file":"managed-paths.js","sourceRoot":"","sources":["../../src/node/managed-paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC9E,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,mBAAmB,EAAE,UAAU,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACxI,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEjE,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,MAAoB,EAAE,SAAoB;IACxF,kBAAkB,EAAE,CAAC;IACrB,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,gBAAgB;QAAE,MAAM,IAAI,YAAY,CAAC,oBAAoB,CAAC,CAAC;IACjG,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC,CAAC,aAAa,IAAI,EAAE,CAAC;IAClH,MAAM,eAAe,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,2BAA2B,CAAC,EAAE,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC5H,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,MAAM,UAAU,CAAC,SAAS,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3F,uDAAuD;IACvD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAyD,CAAC;IAC/E,MAAM,OAAO,GAAG,KAAK,EAAE,IAAY,EAAE,EAAE;QACrC,IAAI,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,GAAG,EAAE,CAAC;YACZ,MAAM,UAAU,CAAC,SAAS,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,EAAE;gBAC5D,MAAM,KAAK,GAAG,uDAAuD,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACnF,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;oBAAE,MAAM,IAAI,YAAY,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;gBACxG,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAClE,CAAC,CAAC,CAAC;YACH,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC1B,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IACF,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC;QACnC,IAAI,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC;QAAC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACpD,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;YAC5C,MAAM,IAAI,GAAa,EAAE,CAAC;YAC1B,KAAK,MAAM,IAAI,IAAI,KAAK;gBAAE,KAAK,MAAM,KAAK,IAAI,MAAM,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;oBAClE,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;wBAAE,SAAS;oBACpJ,IAAI,KAAK,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;wBAAE,OAAO,GAAG,IAAI,CAAC;;wBACnE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC5B,CAAC;YACD,KAAK,GAAG,IAAI,CAAC;QACf,CAAC;IACH,CAAC;IACD,IAAI,OAAO;QAAE,MAAM,IAAI,YAAY,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,yBAAyB,EAAE,CAAC,CAAC;AAC1F,CAAC;AAED,KAAK,UAAU,qBAAqB,CAAC,MAAoB,EAAE,SAAoB,EAAE,IAAY;IAC3F,IAAI,MAAc,CAAC;IACnB,IAAI,CAAC;QAAC,MAAM,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,sBAAsB,EAAE,cAAc,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAAC,CAAC;IACrH,OAAO,KAAK,EAAE,CAAC;QAAC,IAAI,KAAK,YAAY,YAAY,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,KAAK,CAAC;YAAE,MAAM,IAAI,YAAY,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;QAAC,MAAM,KAAK,CAAC;IAAC,CAAC;IACjK,MAAM,MAAM,GAAG,+CAA+C,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5E,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;IAClD,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,MAAM,IAAI,YAAY,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,uBAAuB,EAAE,CAAC,CAAC;IACjN,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5G,2DAA2D;QAC3D,MAAM,KAAK,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACnF,IAAI,KAAK,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,MAAM,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;YAAE,MAAM,IAAI,YAAY,CAAC,WAAW,CAAC,CAAC;IACxI,CAAC;IAAC,MAAM,CAAC;QAAC,MAAM,IAAI,YAAY,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,sBAAsB,EAAE,CAAC,CAAC;IAAC,CAAC;AACtF,CAAC;AACD,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,MAAoB,EAAE,SAAoB;IAClF,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,gBAAgB;QAAE,MAAM,IAAI,YAAY,CAAC,oBAAoB,CAAC,CAAC;IACjG,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,wCAAwC,CAAC,CAAC;IAClJ,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,QAAQ,KAAK,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC;QAAE,MAAM,IAAI,YAAY,CAAC,WAAW,CAAC,CAAC;IAC7K,MAAM,eAAe,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAAC,MAAM,eAAe,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC7F,MAAM,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC;IACpF,MAAM,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;IACxG,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,MAAM,UAAU,CAAC,SAAS,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5H,IAAI,OAAO;QAAE,MAAM,IAAI,YAAY,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC;IAC7E,MAAM,yBAAyB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACnD,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,UAAU;QACjG,aAAa,EAAE,OAAO,CAAC,QAAQ,EAAE,gBAAgB,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,QAAQ,EAAE,YAAY,CAAC;QAC9F,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,gBAAgB,EAAE,OAAO,CAAC,QAAQ,EAAE,cAAc,CAAC;QAC5F,cAAc,EAAE,MAAM,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;AACtJ,CAAC;AACD,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,KAAmB;IAC1D,MAAM,eAAe,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAAC,MAAM,eAAe,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IACnH,IAAI,CAAC,YAAY,CAAC,MAAM,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC;WACjJ,KAAK,CAAC,cAAc,CAAC,GAAG,KAAK,KAAK,CAAC,YAAY,CAAC,GAAG;QAAE,MAAM,IAAI,YAAY,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;IAC3H,IAAI,MAAM,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;QACzC,MAAM,eAAe,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;QAC1D,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QACpD,IAAI,MAAM,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9B,MAAM,eAAe,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC/C,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,MAAM,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,IAAI,MAAM,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,yBAAyB,CAAC,CAAC;gBAAE,MAAM,IAAI,YAAY,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC;QACjO,CAAC;IACH,CAAC;AACH,CAAC;AACD,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,MAAoB,EAAE,SAAoB;IAC9E,IAAI,KAAK,GAAG,MAAM,mBAAmB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACzD,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,eAAe,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;IAC/E,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IACxD,IAAI,QAAQ,IAAI,CAAC,cAAc,CAAC,aAAa,KAAK,CAAC,IAAI,cAAc,CAAC,UAAU,KAAK,MAAM,CAAC,IAAI,IAAI,cAAc,CAAC,UAAU,KAAK,MAAM,CAAC,UAAU,IAAI,cAAc,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnM,MAAM,IAAI,YAAY,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,sBAAsB,EAAE,CAAC,CAAC;IAC3E,CAAC;IACD,IAAI,QAAQ,IAAI,CAAC,MAAM,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC;QAAE,MAAM,IAAI,YAAY,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,uBAAuB,EAAE,CAAC,CAAC;IAC/H,MAAM,KAAK,GAAG,UAAU,EAAE,EAAE,WAAW,GAAG,MAAM,kBAAkB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACrF,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1D,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,CAAC;QAAC,MAAM,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAAC,OAAO,GAAG,IAAI,CAAC;IAAC,CAAC;IACpD,OAAO,KAAK,EAAE,CAAC;QAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,QAAQ;YAAE,MAAM,KAAK,CAAC;IAAC,CAAC;IACnE,KAAK,GAAG,EAAE,GAAG,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;IACvE,IAAI,MAAM,GAAW,UAAU,EAAE,CAAC;IAClC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,IAAI,KAAK,CAAC;QACV,IAAI,CAAC;YAAC,KAAK,GAAG,MAAM,CAAC,MAAM,eAAe,CAAC,KAAK,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC;QAAC,CAAC;QAC3E,MAAM,CAAC;YAAC,MAAM,IAAI,YAAY,CAAC,cAAc,CAAC,CAAC;QAAC,CAAC;QACjD,IAAI,KAAK,CAAC,aAAa,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;eACtG,KAAK,CAAC,UAAU,KAAK,MAAM,CAAC,IAAI,IAAI,KAAK,CAAC,UAAU,KAAK,MAAM,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,KAAK,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU;eAC/H,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC;eACjE,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC;YAAE,MAAM,IAAI,YAAY,CAAC,cAAc,CAAC,CAAC;QAC3G,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QACtB,IAAI,QAAQ,IAAI,cAAc,CAAC,MAAM,KAAK,MAAM;YAAE,MAAM,IAAI,YAAY,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;QACrH,MAAM,OAAO,GAAG,CAAC,gBAAgB,EAAE,UAAU,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,qBAAqB,CAAC,CAAC;QACjL,IAAI,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAAE,MAAM,IAAI,YAAY,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;IACjJ,CAAC;IACD,MAAM,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAChC,IAAI,MAAM,UAAU,CAAC,KAAK,CAAC,gBAAgB,CAAC;QAAE,MAAM,IAAI,YAAY,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC,CAAC;IAC9G,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,gBAAgB;QAAE,MAAM,IAAI,YAAY,CAAC,oBAAoB,CAAC,CAAC;IACjG,MAAM,KAAK,GAAG,MAAM,mBAAmB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IAC9E,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI;QAClF,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;IACrJ,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3E,IAAI,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,MAAM,IAAI,KAAK,CAAC,KAAK,GAAG,cAAc,GAAG,MAAM,CAAC,QAAQ,IAAI,KAAK,CAAC,SAAS,GAAG,cAAc,GAAG,MAAM,CAAC,YAAY;QAAE,MAAM,IAAI,YAAY,CAAC,iBAAiB,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAC/N,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC;IACpF,MAAM,UAAU,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;IAC5E,MAAM,WAAW,GAAG,KAAK,IAAI,EAAE,GAAG,MAAM,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,yBAAyB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;IACvJ,MAAM,IAAI,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE,GAAG,MAAM,WAAW,EAAE,CAAC,CAAC,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACrG,IAAI,CAAC;QACH,IAAI,MAAM,UAAU,CAAC,KAAK,CAAC,gBAAgB,CAAC;YAAE,MAAM,IAAI,YAAY,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAC9G,IAAI,OAAO;YAAE,MAAM,SAAS,CAAC,KAAK,CAAC,aAAa,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/F,MAAM,KAAK,GAAG,KAAK,IAAI,EAAE,GAAG,MAAM,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;QACzF,MAAM,KAAK,GAAG,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QACpE,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;QACjC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,WAAW,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;YAAE,MAAM,IAAI,YAAY,CAAC,mBAAmB,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;QAC5O,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;IACpE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QAAC,MAAM,KAAK,CAAC;IAAC,CAAC;AACxD,CAAC"}
1
+ {"version":3,"file":"managed-paths.js","sourceRoot":"","sources":["../../src/node/managed-paths.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"managed-process.d.ts","sourceRoot":"","sources":["../../src/node/managed-process.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAsC,cAAc,EAAE,WAAW,EAAgB,MAAM,sBAAsB,CAAC;AA2E1H,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,GAAG,SAAS,GAAG,QAAQ,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,CASpJ"}
1
+ {"version":3,"file":"managed-process.d.ts","sourceRoot":"","sources":["../../src/node/managed-process.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAsC,cAAc,EAAE,WAAW,EAAgB,MAAM,sBAAsB,CAAC;AAoG1H,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,GAAG,SAAS,GAAG,QAAQ,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,CASpJ"}
@@ -9,7 +9,11 @@ import { assertManagedPaths } from './managed-paths.js';
9
9
  import { BudgetMonitor } from './managed-budget.js';
10
10
  import { Execution } from './execution.js';
11
11
  import { assertNoGitContext, isolatedGitEnvironment } from './git-context.js';
12
- import { hasVerifiedManagedClosure } from './managed-closure.js';
12
+ import { hasVerifiedManagedClosure, hasVerifiedManagedStop } from './managed-closure.js';
13
+ import { readRetirementHost } from './retirement-host.js';
14
+ import { createTerminalWriter, restoreManagedTerminal } from './managed-terminal.js';
15
+ import { metadataReserveBytes } from './managed-metadata.js';
16
+ import { assertManagedHistory, captureManagedHistory } from './managed-history.js';
13
17
  const knownCauseCodes = new Set([...getSystemErrorMap().values()].map(([code]) => code)
14
18
  .concat(Object.values(commandErrorCodes), Object.values(processControlErrorCodes)));
15
19
  function lifecycleError(error, reason, step) {
@@ -24,27 +28,47 @@ class ManagedProcess {
24
28
  state;
25
29
  budget;
26
30
  tail = Promise.resolve();
31
+ terminal;
27
32
  constructor(slot, state, budget) {
28
33
  this.slot = slot;
29
34
  this.state = state;
30
35
  this.budget = budget;
31
36
  }
32
- async persist() { await this.slot.store.writeState(this.state); }
33
- async guard() { assertNoGitContext(); await assertManagedPaths(this.slot.paths); await this.slot.lock.assertOwned(); }
37
+ async persist() {
38
+ await this.terminal?.assertOwned();
39
+ await this.slot.store.writeState(this.state, async (prepared) => { await this.terminal?.prepareState(prepared); });
40
+ await this.terminal?.acceptState(this.state);
41
+ }
42
+ async guard() { assertNoGitContext(); await assertManagedPaths(this.slot.paths); await this.slot.lock.assertOwned(); await assertManagedHistory(this.slot.paths, this.state); }
34
43
  async assertClosed() {
35
44
  if (!this.state.processes.every(hasVerifiedManagedClosure))
36
45
  throw new ReleaseError('PROCESS_STATE_UNKNOWN');
37
46
  }
47
+ async assertStopped() {
48
+ if (!this.state.processes.every(hasVerifiedManagedStop))
49
+ throw new ReleaseError('PROCESS_STATE_UNKNOWN');
50
+ await this.guard();
51
+ await this.terminal?.assertOwned();
52
+ const disk = await this.slot.store.read();
53
+ if (!disk || disk.runId !== this.state.runId)
54
+ throw new ReleaseError('SLOT_STATE', { reason: 'RUN_CHANGED' });
55
+ const restored = await restoreManagedTerminal(this.slot.paths, disk);
56
+ if (!restored.state.processes.every(hasVerifiedManagedStop))
57
+ throw new ReleaseError('PROCESS_STATE_UNKNOWN');
58
+ }
38
59
  async execute(runner, name, spec, observer) {
39
60
  await this.guard();
40
61
  await this.assertClosed();
41
62
  const command = { id: randomUUID(), name, status: 'intent', descendants: [], observationComplete: false };
42
63
  const binding = `${this.state.runId}:${command.id}:${randomUUID()}`;
64
+ const terminal = await createTerminalWriter(this.slot, this.state, command);
65
+ this.terminal = terminal;
43
66
  this.state.processes.push(command);
44
67
  await this.persist();
45
68
  return this.budget.run(async (signal) => {
46
69
  const failed = new AbortController(), combined = AbortSignal.any([signal, failed.signal]);
47
70
  let failure, running;
71
+ let requestedTermination;
48
72
  const enqueue = (operation) => {
49
73
  this.tail = this.tail.then(operation).catch((error) => { failure ??= error; command.observationComplete = false; failed.abort(); });
50
74
  };
@@ -53,6 +77,8 @@ class ManagedProcess {
53
77
  running = runner.start({ ...spec, signal: combined, ownedScope: { start: 'manual', binding },
54
78
  environment: { ...environment, values: { ...environment.values, ...isolatedGitEnvironment(), FORGE_RELEASE_COMMAND: this.state.command, FORGE_RELEASE_SHA: this.slot.source.sha } } }, event => {
55
79
  observer?.(event);
80
+ if (event.type === 'termination-requested' && (event.reason === 'abort' || event.reason === 'timeout'))
81
+ requestedTermination = event.reason;
56
82
  if (event.type === 'spawned')
57
83
  enqueue(async () => { command.pid = event.pid; command.status = 'spawned'; await this.persist(); });
58
84
  if (event.type === 'scope-ready')
@@ -74,30 +100,39 @@ class ManagedProcess {
74
100
  });
75
101
  const result = await running.result;
76
102
  await this.tail;
77
- command.observationComplete = failure === undefined && result.ownedScope?.status === 'closed';
103
+ command.observationComplete = !!result.ownedScope;
78
104
  command.closure = { observedAt: new Date().toISOString(), exitCode: result.exitCode, termination: result.terminationReason,
105
+ ...(requestedTermination ? { requestedTermination } : {}),
79
106
  ...(result.ownedScope ? { ownedScope: result.ownedScope } : {}) };
80
107
  command.status = result.terminationReason === 'exit' && command.observationComplete ? 'closed' : 'unknown';
81
- if (!hasVerifiedManagedClosure(command)) {
108
+ if (!hasVerifiedManagedClosure(command) && requestedTermination
109
+ && !result.diagnostics.some(item => ['COMMAND_SCOPE_FAILED', 'COMMAND_TERMINATION_FAILED', 'COMMAND_OBSERVER_FAILED'].includes(item.code)))
110
+ command.status = 'stopped';
111
+ if (!hasVerifiedManagedStop(command)) {
82
112
  command.status = 'unknown';
83
113
  command.observationComplete = false;
84
114
  }
115
+ if (hasVerifiedManagedStop(command))
116
+ command.terminalSha256 = await terminal.write(command);
85
117
  if (failure !== undefined)
86
118
  throw lifecycleError(failure, 'JOURNAL_FAILED', name);
87
119
  await this.persist();
88
- if (command.status !== 'closed')
120
+ if (!hasVerifiedManagedStop(command))
89
121
  throw new ReleaseError('PROCESS_STATE_UNKNOWN', { reason: 'CLOSURE_UNPROVEN', commandId: command.id, step: name,
90
122
  termination: result.terminationReason, exitCode: result.exitCode, identified: !!command.identity,
91
123
  ...(result.ownedScope ? { scopeReason: result.ownedScope.reason, empty: result.ownedScope.empty } : {}),
92
124
  diagnostics: result.diagnostics.map(item => ({ code: item.code, stage: item.details.stage })) });
93
- return result;
125
+ // runner 的原始分类保存在回执;已验证受控停止时,执行结果仍保留取消/超时的原意。
126
+ return command.status === 'stopped' && requestedTermination ? { ...result, terminationReason: requestedTermination } : result;
94
127
  }
95
128
  catch (error) {
96
129
  failed.abort();
97
130
  await running?.terminate();
98
131
  await this.tail;
99
- command.status = 'unknown';
100
- command.observationComplete = false;
132
+ if (!command.terminalSha256) {
133
+ command.status = 'unknown';
134
+ command.observationComplete = false;
135
+ }
101
136
  try {
102
137
  await this.persist();
103
138
  }
@@ -110,12 +145,12 @@ class ManagedProcess {
110
145
  export async function createManagedSession(slot, command, signal) {
111
146
  if (slot.source.config.source.mode !== 'managed-commit')
112
147
  throw new ReleaseError('SOURCE_UNSUPPORTED');
113
- const state = { schemaVersion: 2, slotId: slot.slotId, runId: slot.runId, source: slot.source, command,
114
- coordinator: slot.coordinator, stage: 'admission', status: 'running', processes: [], effects: { developmentPush: 'not-attempted', releasePush: 'not-attempted' } };
115
- const budget = new BudgetMonitor(slot.paths, slot.source.config.source), lifecycle = new ManagedProcess(slot, state, budget), steps = [];
148
+ const state = { schemaVersion: 3, slotId: slot.slotId, runId: slot.runId, source: slot.source, command,
149
+ coordinator: slot.coordinator, host: await readRetirementHost(signal), history: await captureManagedHistory(slot.paths), stage: 'admission', status: 'running', processes: [], effects: { developmentPush: 'not-attempted', releasePush: 'not-attempted' } };
150
+ const budget = new BudgetMonitor(slot.paths, slot.source.config.source, undefined, metadataReserveBytes), lifecycle = new ManagedProcess(slot, state, budget), steps = [];
116
151
  await lifecycle.persist();
117
152
  return { slot, command, state, budget, steps, execution: new Execution(slot.paths.checkoutRoot, slot.source.config, signal, steps, lifecycle),
118
- persist: () => lifecycle.persist(), assertClosed: () => lifecycle.assertClosed(),
153
+ persist: () => lifecycle.persist(), assertClosed: () => lifecycle.assertClosed(), assertStopped: () => lifecycle.assertStopped(),
119
154
  executionAt: cwd => { if (!within(slot.paths.slotRoot, resolve(cwd)))
120
155
  throw new ReleaseError('SLOT_PATH'); return new Execution(cwd, slot.source.config, signal, steps, lifecycle); } };
121
156
  }