@shapeshift-labs/frontier-swarm-codex 0.5.123 → 0.5.125

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 (50) hide show
  1. package/README.md +8 -2
  2. package/dist/apply.d.ts.map +1 -1
  3. package/dist/apply.js +269 -237
  4. package/dist/apply.js.map +1 -1
  5. package/dist/cli-args.d.ts +2 -2
  6. package/dist/codex-workspace-changes.d.ts +6 -17
  7. package/dist/codex-workspace-changes.d.ts.map +1 -1
  8. package/dist/codex-workspace-changes.js +13 -82
  9. package/dist/codex-workspace-changes.js.map +1 -1
  10. package/dist/codex-workspace.d.ts +3 -3
  11. package/dist/codex-workspace.d.ts.map +1 -1
  12. package/dist/codex-workspace.js +16 -241
  13. package/dist/codex-workspace.js.map +1 -1
  14. package/dist/collect-bundle-staleness.d.ts.map +1 -1
  15. package/dist/collect-bundle-staleness.js +18 -15
  16. package/dist/collect-bundle-staleness.js.map +1 -1
  17. package/dist/collect-workspace-proof.js +2 -2
  18. package/dist/collect-workspace-proof.js.map +1 -1
  19. package/dist/common.d.ts +0 -7
  20. package/dist/common.d.ts.map +1 -1
  21. package/dist/common.js +0 -15
  22. package/dist/common.js.map +1 -1
  23. package/dist/score.d.ts.map +1 -1
  24. package/dist/score.js +16 -10
  25. package/dist/score.js.map +1 -1
  26. package/dist/semantic-import-base.d.ts.map +1 -1
  27. package/dist/semantic-import-base.js +12 -15
  28. package/dist/semantic-import-base.js.map +1 -1
  29. package/dist/types-apply-lease.d.ts +2 -25
  30. package/dist/types-apply-lease.d.ts.map +1 -1
  31. package/dist/types-collection.d.ts +12 -3
  32. package/dist/types-collection.d.ts.map +1 -1
  33. package/dist/types-workspace.d.ts +12 -126
  34. package/dist/types-workspace.d.ts.map +1 -1
  35. package/dist/workspace-link-repair.d.ts.map +1 -1
  36. package/dist/workspace-link-repair.js +2 -161
  37. package/dist/workspace-link-repair.js.map +1 -1
  38. package/package.json +4 -2
  39. package/dist/codex-workspace-change-paths.d.ts +0 -20
  40. package/dist/codex-workspace-change-paths.d.ts.map +0 -1
  41. package/dist/codex-workspace-change-paths.js +0 -215
  42. package/dist/codex-workspace-change-paths.js.map +0 -1
  43. package/dist/codex-workspace-restore.d.ts +0 -15
  44. package/dist/codex-workspace-restore.d.ts.map +0 -1
  45. package/dist/codex-workspace-restore.js +0 -66
  46. package/dist/codex-workspace-restore.js.map +0 -1
  47. package/dist/codex-workspace-write-fence.d.ts +0 -21
  48. package/dist/codex-workspace-write-fence.d.ts.map +0 -1
  49. package/dist/codex-workspace-write-fence.js +0 -155
  50. package/dist/codex-workspace-write-fence.js.map +0 -1
@@ -1,15 +0,0 @@
1
- import { type FrontierCodexWorkspaceFileSnapshot } from './codex-workspace-change-paths.js';
2
- import type { FrontierCodexWorkspacePlan } from './index.js';
3
- export interface FrontierCodexWorkspaceRestoreRecord {
4
- path: string;
5
- action: 'restored' | 'deleted' | 'missing' | 'skipped';
6
- reason: string;
7
- }
8
- export declare function restoreWorkspaceChangedPaths(input: {
9
- workspace: string;
10
- sourceRoot: string;
11
- workspacePlan: FrontierCodexWorkspacePlan;
12
- baseline?: FrontierCodexWorkspaceFileSnapshot;
13
- changedPaths: readonly string[];
14
- }): Promise<FrontierCodexWorkspaceRestoreRecord[]>;
15
- //# sourceMappingURL=codex-workspace-restore.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"codex-workspace-restore.d.ts","sourceRoot":"","sources":["../src/codex-workspace-restore.ts"],"names":[],"mappings":"AAGA,OAAO,EAAiC,KAAK,kCAAkC,EAAE,MAAM,mCAAmC,CAAC;AAC3H,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAE7D,MAAM,WAAW,mCAAmC;IAClD,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IACvD,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,4BAA4B,CAAC,KAAK,EAAE;IACxD,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,0BAA0B,CAAC;IAC1C,QAAQ,CAAC,EAAE,kCAAkC,CAAC;IAC9C,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CACjC,GAAG,OAAO,CAAC,mCAAmC,EAAE,CAAC,CAwCjD"}
@@ -1,66 +0,0 @@
1
- import fs from 'node:fs/promises';
2
- import path from 'node:path';
3
- import { pathExists, uniqueWorkspacePaths } from './common.js';
4
- import { snapshotContainsWorkspacePath } from './codex-workspace-change-paths.js';
5
- export async function restoreWorkspaceChangedPaths(input) {
6
- const paths = uniqueWorkspacePaths(input.changedPaths);
7
- if (!paths.length)
8
- return [];
9
- if (input.workspacePlan.mode !== 'copy' && input.workspacePlan.mode !== 'snapshot') {
10
- return paths.map((file) => ({
11
- path: file,
12
- action: 'skipped',
13
- reason: `workspace mode ${input.workspacePlan.mode} is not isolated`
14
- }));
15
- }
16
- const records = [];
17
- for (const file of paths) {
18
- const source = path.join(input.sourceRoot, file);
19
- const target = path.join(input.workspace, file);
20
- const sourceExists = await pathExists(source);
21
- const targetExists = await pathExists(target);
22
- const existedAtBaseline = input.baseline ? snapshotContainsWorkspacePath(input.baseline, file) : undefined;
23
- if (input.baseline && !existedAtBaseline) {
24
- if (targetExists) {
25
- await fs.rm(target, { recursive: true, force: true });
26
- await pruneUnauthorizedEmptyParents(input.workspace, file, input.baseline);
27
- records.push({ path: file, action: 'deleted', reason: 'removed unauthorized new path' });
28
- }
29
- else {
30
- records.push({ path: file, action: 'missing', reason: 'path absent in workspace baseline and workspace' });
31
- }
32
- }
33
- else if (sourceExists) {
34
- await fs.rm(target, { recursive: true, force: true });
35
- await fs.mkdir(path.dirname(target), { recursive: true });
36
- await fs.cp(source, target, { recursive: true, force: true, verbatimSymlinks: true });
37
- records.push({ path: file, action: 'restored', reason: 'restored from source root' });
38
- }
39
- else if (targetExists) {
40
- await fs.rm(target, { recursive: true, force: true });
41
- if (input.baseline)
42
- await pruneUnauthorizedEmptyParents(input.workspace, file, input.baseline);
43
- records.push({ path: file, action: 'deleted', reason: 'removed unauthorized path missing from source root' });
44
- }
45
- else {
46
- records.push({ path: file, action: 'missing', reason: 'path absent in source and workspace' });
47
- }
48
- }
49
- return records;
50
- }
51
- async function pruneUnauthorizedEmptyParents(workspace, file, baseline) {
52
- let current = path.dirname(file);
53
- while (current && current !== '.' && !path.isAbsolute(current)) {
54
- if (snapshotContainsWorkspacePath(baseline, current))
55
- return;
56
- const absolute = path.join(workspace, current);
57
- try {
58
- await fs.rmdir(absolute);
59
- }
60
- catch {
61
- return;
62
- }
63
- current = path.dirname(current);
64
- }
65
- }
66
- //# sourceMappingURL=codex-workspace-restore.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"codex-workspace-restore.js","sourceRoot":"","sources":["../src/codex-workspace-restore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,6BAA6B,EAA2C,MAAM,mCAAmC,CAAC;AAS3H,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAAC,KAMlD;IACC,MAAM,KAAK,GAAG,oBAAoB,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACvD,IAAI,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IAC7B,IAAI,KAAK,CAAC,aAAa,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QACnF,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC1B,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,kBAAkB,KAAK,CAAC,aAAa,CAAC,IAAI,kBAAkB;SACrE,CAAC,CAAC,CAAC;IACN,CAAC;IAED,MAAM,OAAO,GAA0C,EAAE,CAAC;IAC1D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAChD,MAAM,YAAY,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;QAC9C,MAAM,YAAY,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;QAC9C,MAAM,iBAAiB,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,6BAA6B,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3G,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzC,IAAI,YAAY,EAAE,CAAC;gBACjB,MAAM,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;gBACtD,MAAM,6BAA6B,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;gBAC3E,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,+BAA+B,EAAE,CAAC,CAAC;YAC3F,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,iDAAiD,EAAE,CAAC,CAAC;YAC7G,CAAC;QACH,CAAC;aAAM,IAAI,YAAY,EAAE,CAAC;YACxB,MAAM,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACtD,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1D,MAAM,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC;YACtF,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,2BAA2B,EAAE,CAAC,CAAC;QACxF,CAAC;aAAM,IAAI,YAAY,EAAE,CAAC;YACxB,MAAM,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACtD,IAAI,KAAK,CAAC,QAAQ;gBAAE,MAAM,6BAA6B,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC/F,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,oDAAoD,EAAE,CAAC,CAAC;QAChH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,qCAAqC,EAAE,CAAC,CAAC;QACjG,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,KAAK,UAAU,6BAA6B,CAC1C,SAAiB,EACjB,IAAY,EACZ,QAA4C;IAE5C,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,OAAO,OAAO,IAAI,OAAO,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/D,IAAI,6BAA6B,CAAC,QAAQ,EAAE,OAAO,CAAC;YAAE,OAAO;QAC7D,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC/C,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC3B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;QACT,CAAC;QACD,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;AACH,CAAC"}
@@ -1,21 +0,0 @@
1
- import type { FrontierCodexWorkspacePlan, FrontierCodexWorkspaceWriteFenceSummary } from './index.js';
2
- export interface FrontierCodexWorkspaceWriteFenceRecord {
3
- path: string;
4
- absolutePath: string;
5
- kind: 'file' | 'directory';
6
- originalMode: number;
7
- fencedMode: number;
8
- }
9
- export interface FrontierCodexWorkspaceWriteFenceState {
10
- summary: FrontierCodexWorkspaceWriteFenceSummary;
11
- records: FrontierCodexWorkspaceWriteFenceRecord[];
12
- }
13
- export declare function applyWorkspacePreExecWriteFence(input: {
14
- workspace: string;
15
- workspacePlan: FrontierCodexWorkspacePlan;
16
- allowedWrites: readonly string[];
17
- writableRoots?: readonly string[];
18
- enabled?: boolean;
19
- }): Promise<FrontierCodexWorkspaceWriteFenceState>;
20
- export declare function restoreWorkspacePreExecWriteFence(state: FrontierCodexWorkspaceWriteFenceState): Promise<FrontierCodexWorkspaceWriteFenceSummary>;
21
- //# sourceMappingURL=codex-workspace-write-fence.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"codex-workspace-write-fence.d.ts","sourceRoot":"","sources":["../src/codex-workspace-write-fence.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,0BAA0B,EAAE,uCAAuC,EAAE,MAAM,YAAY,CAAC;AAEtG,MAAM,WAAW,sCAAsC;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,qCAAqC;IACpD,OAAO,EAAE,uCAAuC,CAAC;IACjD,OAAO,EAAE,sCAAsC,EAAE,CAAC;CACnD;AASD,wBAAsB,+BAA+B,CAAC,KAAK,EAAE;IAC3D,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,0BAA0B,CAAC;IAC1C,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,GAAG,OAAO,CAAC,qCAAqC,CAAC,CAgBjD;AAED,wBAAsB,iCAAiC,CACrD,KAAK,EAAE,qCAAqC,GAC3C,OAAO,CAAC,uCAAuC,CAAC,CAYlD"}
@@ -1,155 +0,0 @@
1
- import fs from 'node:fs/promises';
2
- import path from 'node:path';
3
- import { normalizeWorkspacePath, shouldPruneWorkspaceWriteFenceTraversal } from './common.js';
4
- const WRITE_FENCE_LIMITATIONS = [
5
- 'chmod-readonly is a best-effort pre-exec fence, not a security sandbox',
6
- 'a worker running as the same OS user can chmod owned paths back to writable',
7
- 'workspace root and allowed-write ancestors may remain writable so allowed new files can be created',
8
- 'symlinks and heavyweight dependency/run artifact trees are not traversed; strict post-exec restore is the durable enforcement'
9
- ];
10
- export async function applyWorkspacePreExecWriteFence(input) {
11
- const writableRoots = uniqueWriteFenceRoots(input.writableRoots ?? input.allowedWrites);
12
- const skipped = skippedWriteFenceReason(input.enabled !== false, input.workspacePlan);
13
- if (skipped)
14
- return { records: [], summary: createWriteFenceSummary({ mode: 'none', skippedReason: skipped, writableRoots }) };
15
- const records = [];
16
- await walkWorkspaceWriteFence(input.workspace, input.workspace, writableRoots, records);
17
- return {
18
- records,
19
- summary: createWriteFenceSummary({
20
- mode: 'chmod-readonly',
21
- applied: records.length > 0,
22
- lockedPathCount: records.length,
23
- sampleLockedPaths: records.slice(0, 20).map((entry) => entry.path),
24
- writableRoots
25
- })
26
- };
27
- }
28
- export async function restoreWorkspacePreExecWriteFence(state) {
29
- let restoredPathCount = 0;
30
- let failedRestoreCount = 0;
31
- for (const record of [...state.records].reverse()) {
32
- try {
33
- await fs.chmod(record.absolutePath, record.originalMode);
34
- restoredPathCount += 1;
35
- }
36
- catch {
37
- failedRestoreCount += 1;
38
- }
39
- }
40
- return { ...state.summary, restoredPathCount, failedRestoreCount };
41
- }
42
- async function walkWorkspaceWriteFence(root, current, allowedWrites, records) {
43
- const entries = await fs.readdir(current, { withFileTypes: true }).catch(() => []);
44
- for (const entry of entries) {
45
- const absolute = path.join(current, entry.name);
46
- const relative = path.relative(root, absolute).replace(/\\/g, '/');
47
- if (!relative || entry.isSymbolicLink())
48
- continue;
49
- if (entry.isDirectory()) {
50
- if (shouldPruneWorkspaceWriteFenceTraversal(relative)) {
51
- await fenceWorkspacePath(absolute, relative, 'directory', allowedWrites, records);
52
- continue;
53
- }
54
- await walkWorkspaceWriteFence(root, absolute, allowedWrites, records);
55
- await fenceWorkspacePath(absolute, relative, 'directory', allowedWrites, records);
56
- }
57
- else if (entry.isFile()) {
58
- await fenceWorkspacePath(absolute, relative, 'file', allowedWrites, records);
59
- }
60
- }
61
- }
62
- async function fenceWorkspacePath(absolutePath, relativePath, kind, allowedWrites, records) {
63
- const keepWritable = kind === 'directory'
64
- ? allowedWrites.some((entry) => writeEntryCoversDirectory(relativePath, entry))
65
- : allowedWrites.some((entry) => writeEntryCoversFile(relativePath, entry));
66
- if (keepWritable)
67
- return;
68
- const stat = await fs.lstat(absolutePath).catch(() => undefined);
69
- if (!stat)
70
- return;
71
- const originalMode = stat.mode & 0o7777;
72
- const fencedMode = originalMode & ~0o222;
73
- if (fencedMode === originalMode)
74
- return;
75
- await fs.chmod(absolutePath, fencedMode).catch(() => { });
76
- const after = await fs.lstat(absolutePath).catch(() => undefined);
77
- if (!after || (after.mode & 0o222) !== 0)
78
- return;
79
- records.push({ path: relativePath, absolutePath, kind, originalMode, fencedMode });
80
- }
81
- function writeEntryCoversFile(file, entry) {
82
- const parsed = parseWriteFenceEntry(entry);
83
- if (!parsed)
84
- return false;
85
- if (parsed.all)
86
- return true;
87
- return file === parsed.prefix || file.startsWith(parsed.prefix + '/');
88
- }
89
- function writeEntryCoversDirectory(directory, entry) {
90
- const parsed = parseWriteFenceEntry(entry);
91
- if (!parsed)
92
- return false;
93
- if (parsed.all)
94
- return true;
95
- return directory === parsed.prefix
96
- || directory.startsWith(parsed.prefix + '/')
97
- || parsed.prefix.startsWith(directory + '/');
98
- }
99
- function parseWriteFenceEntry(entry) {
100
- const raw = String(entry ?? '').trim().replace(/\\/g, '/').replace(/\/+$/, '');
101
- if (!raw || raw.includes('\0') || path.isAbsolute(raw) || path.win32.isAbsolute(raw))
102
- return undefined;
103
- if (raw === '*' || raw === '**' || raw === '**/*')
104
- return { all: true };
105
- const starIndex = raw.indexOf('*');
106
- const staticPart = writeFenceStaticRoot(raw, starIndex);
107
- const prefix = normalizeWorkspacePath(staticPart);
108
- return prefix ? { all: false, prefix } : undefined;
109
- }
110
- function writeFenceStaticRoot(raw, starIndex) {
111
- if (starIndex < 0)
112
- return raw.replace(/\/+$/, '');
113
- const staticPart = raw.slice(0, starIndex);
114
- if (staticPart.endsWith('/'))
115
- return staticPart.replace(/\/+$/, '');
116
- const segmentEnd = staticPart.lastIndexOf('/');
117
- if (segmentEnd < 0)
118
- return '';
119
- return staticPart.slice(0, segmentEnd).replace(/\/+$/, '');
120
- }
121
- function skippedWriteFenceReason(enabled, plan) {
122
- if (!enabled)
123
- return 'worker execution skipped';
124
- if (plan.allowedWritePolicy.mode !== 'strict')
125
- return 'allowed write policy is audit';
126
- if (plan.mode !== 'copy' && plan.mode !== 'snapshot')
127
- return `workspace mode ${plan.mode} is not isolated`;
128
- return undefined;
129
- }
130
- function createWriteFenceSummary(input) {
131
- return {
132
- mode: input.mode,
133
- applied: input.applied ?? false,
134
- ...(input.skippedReason ? { skippedReason: input.skippedReason } : {}),
135
- lockedPathCount: input.lockedPathCount ?? 0,
136
- restoredPathCount: 0,
137
- failedRestoreCount: 0,
138
- sampleLockedPaths: input.sampleLockedPaths ?? [],
139
- writableRoots: uniqueWriteFenceRoots(input.writableRoots),
140
- limitations: WRITE_FENCE_LIMITATIONS
141
- };
142
- }
143
- function uniqueWriteFenceRoots(values) {
144
- const out = [];
145
- const seen = new Set();
146
- for (const value of values) {
147
- const root = String(value ?? '').trim();
148
- if (!root || seen.has(root))
149
- continue;
150
- seen.add(root);
151
- out.push(root);
152
- }
153
- return out;
154
- }
155
- //# sourceMappingURL=codex-workspace-write-fence.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"codex-workspace-write-fence.js","sourceRoot":"","sources":["../src/codex-workspace-write-fence.ts"],"names":[],"mappings":"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"}