@shapeshift-labs/frontier-swarm-codex 0.5.40 → 0.5.42

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 (140) hide show
  1. package/README.md +1 -1
  2. package/dist/apply.d.ts +3 -0
  3. package/dist/apply.d.ts.map +1 -0
  4. package/dist/apply.js +127 -0
  5. package/dist/apply.js.map +1 -0
  6. package/dist/cli.js +7 -1
  7. package/dist/cli.js.map +1 -1
  8. package/dist/codex-events.d.ts +15 -0
  9. package/dist/codex-events.d.ts.map +1 -0
  10. package/dist/codex-events.js +108 -0
  11. package/dist/codex-events.js.map +1 -0
  12. package/dist/codex-evidence.d.ts +33 -0
  13. package/dist/codex-evidence.d.ts.map +1 -0
  14. package/dist/codex-evidence.js +143 -0
  15. package/dist/codex-evidence.js.map +1 -0
  16. package/dist/codex-executor.d.ts +5 -0
  17. package/dist/codex-executor.d.ts.map +1 -0
  18. package/dist/codex-executor.js +160 -0
  19. package/dist/codex-executor.js.map +1 -0
  20. package/dist/codex-prompt.d.ts +20 -0
  21. package/dist/codex-prompt.d.ts.map +1 -0
  22. package/dist/codex-prompt.js +238 -0
  23. package/dist/codex-prompt.js.map +1 -0
  24. package/dist/codex-run-scheduler.d.ts +9 -0
  25. package/dist/codex-run-scheduler.d.ts.map +1 -0
  26. package/dist/codex-run-scheduler.js +145 -0
  27. package/dist/codex-run-scheduler.js.map +1 -0
  28. package/dist/codex-run.d.ts +5 -0
  29. package/dist/codex-run.d.ts.map +1 -0
  30. package/dist/codex-run.js +278 -0
  31. package/dist/codex-run.js.map +1 -0
  32. package/dist/codex-workspace-changes.d.ts +28 -0
  33. package/dist/codex-workspace-changes.d.ts.map +1 -0
  34. package/dist/codex-workspace-changes.js +147 -0
  35. package/dist/codex-workspace-changes.js.map +1 -0
  36. package/dist/codex-workspace.d.ts +10 -0
  37. package/dist/codex-workspace.d.ts.map +1 -0
  38. package/dist/codex-workspace.js +210 -0
  39. package/dist/codex-workspace.js.map +1 -0
  40. package/dist/collect-bundles.d.ts +14 -0
  41. package/dist/collect-bundles.d.ts.map +1 -0
  42. package/dist/collect-bundles.js +173 -0
  43. package/dist/collect-bundles.js.map +1 -0
  44. package/dist/collect-evidence.d.ts +13 -0
  45. package/dist/collect-evidence.d.ts.map +1 -0
  46. package/dist/collect-evidence.js +131 -0
  47. package/dist/collect-evidence.js.map +1 -0
  48. package/dist/collect.d.ts +5 -0
  49. package/dist/collect.d.ts.map +1 -0
  50. package/dist/collect.js +189 -0
  51. package/dist/collect.js.map +1 -0
  52. package/dist/common.d.ts +37 -0
  53. package/dist/common.d.ts.map +1 -0
  54. package/dist/common.js +191 -0
  55. package/dist/common.js.map +1 -0
  56. package/dist/constants.d.ts +25 -0
  57. package/dist/constants.d.ts.map +1 -0
  58. package/dist/constants.js +26 -0
  59. package/dist/constants.js.map +1 -0
  60. package/dist/dashboard.d.ts +9 -0
  61. package/dist/dashboard.d.ts.map +1 -0
  62. package/dist/dashboard.js +80 -0
  63. package/dist/dashboard.js.map +1 -0
  64. package/dist/handoff-artifacts.d.ts +4 -0
  65. package/dist/handoff-artifacts.d.ts.map +1 -0
  66. package/dist/handoff-artifacts.js +67 -0
  67. package/dist/handoff-artifacts.js.map +1 -0
  68. package/dist/index.d.ts +14 -820
  69. package/dist/index.d.ts.map +1 -1
  70. package/dist/index.js +14 -3612
  71. package/dist/index.js.map +1 -1
  72. package/dist/patch-score-semantic.d.ts +4 -0
  73. package/dist/patch-score-semantic.d.ts.map +1 -0
  74. package/dist/patch-score-semantic.js +154 -0
  75. package/dist/patch-score-semantic.js.map +1 -0
  76. package/dist/score.d.ts +3 -0
  77. package/dist/score.d.ts.map +1 -0
  78. package/dist/score.js +219 -0
  79. package/dist/score.js.map +1 -0
  80. package/dist/semantic-import-layers.d.ts +9 -0
  81. package/dist/semantic-import-layers.d.ts.map +1 -0
  82. package/dist/semantic-import-layers.js +143 -0
  83. package/dist/semantic-import-layers.js.map +1 -0
  84. package/dist/semantic-import-paradigm.d.ts +6 -0
  85. package/dist/semantic-import-paradigm.d.ts.map +1 -0
  86. package/dist/semantic-import-paradigm.js +159 -0
  87. package/dist/semantic-import-paradigm.js.map +1 -0
  88. package/dist/semantic-import-proof.d.ts +7 -0
  89. package/dist/semantic-import-proof.d.ts.map +1 -0
  90. package/dist/semantic-import-proof.js +142 -0
  91. package/dist/semantic-import-proof.js.map +1 -0
  92. package/dist/semantic-import-quality.d.ts +6 -0
  93. package/dist/semantic-import-quality.d.ts.map +1 -0
  94. package/dist/semantic-import-quality.js +108 -0
  95. package/dist/semantic-import-quality.js.map +1 -0
  96. package/dist/semantic-import-select.d.ts +36 -0
  97. package/dist/semantic-import-select.d.ts.map +1 -0
  98. package/dist/semantic-import-select.js +132 -0
  99. package/dist/semantic-import-select.js.map +1 -0
  100. package/dist/semantic-import-sidecar.d.ts +7 -0
  101. package/dist/semantic-import-sidecar.d.ts.map +1 -0
  102. package/dist/semantic-import-sidecar.js +169 -0
  103. package/dist/semantic-import-sidecar.js.map +1 -0
  104. package/dist/semantic-import.d.ts +13 -0
  105. package/dist/semantic-import.d.ts.map +1 -0
  106. package/dist/semantic-import.js +122 -0
  107. package/dist/semantic-import.js.map +1 -0
  108. package/dist/trace-summary.d.ts +6 -0
  109. package/dist/trace-summary.d.ts.map +1 -0
  110. package/dist/trace-summary.js +61 -0
  111. package/dist/trace-summary.js.map +1 -0
  112. package/dist/types-collection.d.ts +166 -0
  113. package/dist/types-collection.d.ts.map +1 -0
  114. package/dist/types-collection.js +2 -0
  115. package/dist/types-collection.js.map +1 -0
  116. package/dist/types-evidence.d.ts +158 -0
  117. package/dist/types-evidence.d.ts.map +1 -0
  118. package/dist/types-evidence.js +2 -0
  119. package/dist/types-evidence.js.map +1 -0
  120. package/dist/types-run.d.ts +161 -0
  121. package/dist/types-run.d.ts.map +1 -0
  122. package/dist/types-run.js +2 -0
  123. package/dist/types-run.js.map +1 -0
  124. package/dist/types-semantic.d.ts +192 -0
  125. package/dist/types-semantic.d.ts.map +1 -0
  126. package/dist/types-semantic.js +2 -0
  127. package/dist/types-semantic.js.map +1 -0
  128. package/dist/types-workspace.d.ts +122 -0
  129. package/dist/types-workspace.d.ts.map +1 -0
  130. package/dist/types-workspace.js +2 -0
  131. package/dist/types-workspace.js.map +1 -0
  132. package/dist/types.d.ts +6 -0
  133. package/dist/types.d.ts.map +1 -0
  134. package/dist/types.js +2 -0
  135. package/dist/types.js.map +1 -0
  136. package/dist/workspace-link-repair.d.ts +3 -0
  137. package/dist/workspace-link-repair.d.ts.map +1 -0
  138. package/dist/workspace-link-repair.js +164 -0
  139. package/dist/workspace-link-repair.js.map +1 -0
  140. package/package.json +5 -4
@@ -0,0 +1,210 @@
1
+ import fs from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ import { FRONTIER_SWARM_CODEX_WORKSPACE_MANIFEST_KIND, FRONTIER_SWARM_CODEX_WORKSPACE_MANIFEST_VERSION, FRONTIER_SWARM_CODEX_WORKSPACE_PROOF_KIND, FRONTIER_SWARM_CODEX_WORKSPACE_PROOF_VERSION } from './constants.js';
4
+ import { copyWorkspacePath, isObject, normalizeWorkspacePath, pathExists, readStringArray, runProcess, stableHash, uniqueWorkspacePaths } from './common.js';
5
+ const DEFAULT_WORKSPACE_INCLUDES = ['AGENTS.md', 'package.json', 'package-lock.json', 'pnpm-lock.yaml', 'yarn.lock', 'config'];
6
+ const DEFAULT_WORKSPACE_EXCLUDES = [
7
+ '.git',
8
+ 'node_modules',
9
+ 'dist',
10
+ 'coverage',
11
+ '.frontier-framework',
12
+ 'agent-runs',
13
+ 'target'
14
+ ];
15
+ export async function prepareCodexWorkspace(job, options) {
16
+ const cwd = path.resolve(options.cwd ?? process.cwd());
17
+ const plan = createCodexWorkspacePlan(job, options);
18
+ if (plan.mode === 'current')
19
+ return plan.path;
20
+ if (plan.mode === 'git-worktree') {
21
+ if (await pathExists(plan.path))
22
+ return plan.path;
23
+ if (options.workspace?.create === false)
24
+ throw new Error(`missing worktree for ${job.id}: ${plan.path}`);
25
+ await fs.mkdir(path.dirname(plan.path), { recursive: true });
26
+ await runProcess('git', ['worktree', 'add', '--detach', plan.path, 'HEAD'], { cwd });
27
+ return plan.path;
28
+ }
29
+ if (await pathExists(plan.path)) {
30
+ if (!plan.replace)
31
+ return plan.path;
32
+ assertGeneratedWorkspacePath(plan);
33
+ await fs.rm(plan.path, { recursive: true, force: true });
34
+ }
35
+ await fs.mkdir(plan.path, { recursive: true });
36
+ for (const include of plan.includes)
37
+ await copyWorkspacePath(cwd, plan.path, include, plan.excludes);
38
+ for (const include of plan.artifactIncludes)
39
+ await copyWorkspacePath(cwd, plan.path, include, []);
40
+ for (const linkPath of plan.linkPaths)
41
+ await linkWorkspacePath(cwd, plan.path, linkPath);
42
+ if (plan.linkNodeModules)
43
+ await linkWorkspacePath(cwd, plan.path, 'node_modules');
44
+ return plan.path;
45
+ }
46
+ export function createCodexWorkspacePlan(job, options) {
47
+ const cwd = path.resolve(options.cwd ?? process.cwd());
48
+ const workspace = options.workspace ?? { mode: 'current' };
49
+ const mode = workspace.mode ?? 'current';
50
+ const root = path.resolve(cwd, workspace.root ?? path.join('agent-worktrees', 'frontier-swarm-codex'));
51
+ const rawTask = readRawTask(job);
52
+ if (mode === 'current') {
53
+ const currentPath = path.resolve(cwd, job.worktreePath ?? '.');
54
+ return {
55
+ mode,
56
+ root,
57
+ path: currentPath,
58
+ includes: [],
59
+ excludes: [],
60
+ artifactIncludes: [],
61
+ linkPaths: [],
62
+ requiredIncludes: [],
63
+ optionalIncludes: [],
64
+ strategy: workspace.strategy ?? 'fs-cp',
65
+ ...(workspace.guardRoot ? { guardRoot: path.resolve(cwd, workspace.guardRoot) } : {}),
66
+ linkNodeModules: false,
67
+ replace: false,
68
+ skipGitRepoCheck: workspace.skipGitRepoCheck ?? false
69
+ };
70
+ }
71
+ const includes = uniqueWorkspacePaths([
72
+ ...DEFAULT_WORKSPACE_INCLUDES,
73
+ ...readStringArray(workspace.includes),
74
+ ...readStringArray(rawTask.snapshotIncludes),
75
+ ...readStringArray(rawTask.files),
76
+ ...job.task.sourceRefs,
77
+ ...job.task.targetRefs
78
+ ]);
79
+ const excludes = uniqueWorkspacePaths([
80
+ ...DEFAULT_WORKSPACE_EXCLUDES,
81
+ ...readStringArray(workspace.excludes),
82
+ ...readStringArray(rawTask.snapshotExcludes)
83
+ ]);
84
+ const artifactIncludes = uniqueWorkspacePaths([
85
+ ...readStringArray(workspace.artifactIncludes),
86
+ ...readStringArray(rawTask.snapshotArtifactIncludes)
87
+ ]);
88
+ const linkPaths = uniqueWorkspacePaths([
89
+ ...readStringArray(workspace.linkPaths),
90
+ ...readStringArray(rawTask.snapshotLinkPaths),
91
+ ...readStringArray(rawTask.linkPaths)
92
+ ]);
93
+ const requiredIncludes = uniqueWorkspacePaths([
94
+ ...readStringArray(workspace.requiredIncludes),
95
+ ...readStringArray(rawTask.requiredIncludes),
96
+ ...readStringArray(rawTask.snapshotRequiredIncludes)
97
+ ]);
98
+ const optionalIncludes = uniqueWorkspacePaths([
99
+ ...readStringArray(workspace.optionalIncludes),
100
+ ...readStringArray(rawTask.optionalIncludes),
101
+ ...readStringArray(rawTask.snapshotOptionalIncludes)
102
+ ]);
103
+ const replaceGeneratedWorkspace = mode === 'copy' || mode === 'snapshot';
104
+ return {
105
+ mode,
106
+ root,
107
+ path: path.resolve(root, job.id),
108
+ includes,
109
+ excludes,
110
+ artifactIncludes,
111
+ linkPaths,
112
+ requiredIncludes,
113
+ optionalIncludes,
114
+ strategy: workspace.strategy ?? 'fs-cp',
115
+ guardRoot: path.resolve(cwd, workspace.guardRoot ?? workspace.root ?? path.join('agent-worktrees', 'frontier-swarm-codex')),
116
+ linkNodeModules: workspace.linkNodeModules ?? (mode !== 'git-worktree'),
117
+ replace: workspace.replace ?? replaceGeneratedWorkspace,
118
+ skipGitRepoCheck: workspace.skipGitRepoCheck ?? (mode === 'copy' || mode === 'snapshot')
119
+ };
120
+ }
121
+ export function createSwarmWorkspaceManifest(plan) {
122
+ return {
123
+ kind: FRONTIER_SWARM_CODEX_WORKSPACE_MANIFEST_KIND,
124
+ version: FRONTIER_SWARM_CODEX_WORKSPACE_MANIFEST_VERSION,
125
+ id: 'codex-workspace:' + stableHash([plan.mode, plan.root, plan.path, plan.includes, plan.linkPaths]),
126
+ mode: plan.mode,
127
+ root: plan.root,
128
+ path: plan.path,
129
+ includes: [...plan.includes],
130
+ excludes: [...plan.excludes],
131
+ artifactIncludes: [...plan.artifactIncludes],
132
+ linkPaths: [...plan.linkPaths],
133
+ requiredIncludes: [...plan.requiredIncludes],
134
+ optionalIncludes: [...plan.optionalIncludes],
135
+ strategy: plan.strategy,
136
+ ...(plan.guardRoot ? { guardRoot: plan.guardRoot } : {}),
137
+ linkNodeModules: plan.linkNodeModules,
138
+ skipGitRepoCheck: plan.skipGitRepoCheck
139
+ };
140
+ }
141
+ export async function createSwarmWorkspaceProof(plan, input = {}) {
142
+ const generatedAt = input.generatedAt ?? Date.now();
143
+ const manifest = createSwarmWorkspaceManifest(plan);
144
+ const copiedCandidates = uniqueWorkspacePaths([...plan.includes, ...plan.artifactIncludes, ...plan.requiredIncludes]);
145
+ const optionalCandidates = uniqueWorkspacePaths(plan.optionalIncludes);
146
+ const copiedPaths = [];
147
+ const missingRequired = [];
148
+ const missingOptional = [];
149
+ for (const include of copiedCandidates) {
150
+ if (await pathExists(path.join(plan.path, include)))
151
+ copiedPaths.push(include);
152
+ else if (plan.requiredIncludes.includes(include))
153
+ missingRequired.push(include);
154
+ }
155
+ for (const include of optionalCandidates) {
156
+ if (await pathExists(path.join(plan.path, include)))
157
+ copiedPaths.push(include);
158
+ else
159
+ missingOptional.push(include);
160
+ }
161
+ const linkedPaths = [];
162
+ for (const linkPath of uniqueWorkspacePaths([...plan.linkPaths, ...(plan.linkNodeModules ? ['node_modules'] : [])])) {
163
+ const stat = await fs.lstat(path.join(plan.path, linkPath)).catch(() => undefined);
164
+ if (stat?.isSymbolicLink())
165
+ linkedPaths.push(linkPath);
166
+ }
167
+ const ignoredChangedPaths = uniqueWorkspacePaths(input.ignoredChangedPaths ?? []);
168
+ return {
169
+ kind: FRONTIER_SWARM_CODEX_WORKSPACE_PROOF_KIND,
170
+ version: FRONTIER_SWARM_CODEX_WORKSPACE_PROOF_VERSION,
171
+ id: 'codex-workspace-proof:' + stableHash([manifest.id, copiedPaths, linkedPaths, missingRequired, missingOptional, generatedAt]),
172
+ generatedAt,
173
+ manifest,
174
+ copiedPaths: uniqueWorkspacePaths(copiedPaths),
175
+ linkedPaths,
176
+ missingRequired,
177
+ missingOptional,
178
+ ignoredChangedPaths,
179
+ summary: {
180
+ copiedCount: uniqueWorkspacePaths(copiedPaths).length,
181
+ linkedCount: linkedPaths.length,
182
+ missingRequiredCount: missingRequired.length,
183
+ missingOptionalCount: missingOptional.length,
184
+ ignoredChangedPathCount: ignoredChangedPaths.length
185
+ }
186
+ };
187
+ }
188
+ async function linkWorkspacePath(cwd, workspacePath, include) {
189
+ const relative = normalizeWorkspacePath(include);
190
+ if (!relative)
191
+ return;
192
+ const from = path.resolve(cwd, relative);
193
+ const to = path.resolve(workspacePath, relative);
194
+ if (!await pathExists(from) || await pathExists(to))
195
+ return;
196
+ await fs.mkdir(path.dirname(to), { recursive: true });
197
+ const stat = await fs.lstat(from);
198
+ await fs.symlink(from, to, stat.isDirectory() ? 'dir' : 'file').catch(() => { });
199
+ }
200
+ function assertGeneratedWorkspacePath(plan) {
201
+ const relative = path.relative(plan.guardRoot ?? plan.root, plan.path);
202
+ if (relative.startsWith('..') || path.isAbsolute(relative) || relative === '') {
203
+ throw new Error(`Refusing to replace workspace outside generated root: ${plan.path}`);
204
+ }
205
+ }
206
+ function readRawTask(job) {
207
+ const metadata = isObject(job.task.metadata) ? job.task.metadata : {};
208
+ return isObject(metadata.source) ? metadata.source : {};
209
+ }
210
+ //# sourceMappingURL=codex-workspace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-workspace.js","sourceRoot":"","sources":["../src/codex-workspace.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { type FrontierSwarmMergeBundle, type FrontierSwarmPatchStatus } from '@shapeshift-labs/frontier-swarm';
2
+ import type { FrontierCodexCollectBucket } from './index.js';
3
+ export declare function bundlePatchStaleness(bundle: FrontierSwarmMergeBundle, mergePath: string, cwd: string): Promise<{
4
+ stale: boolean;
5
+ patchStatus: FrontierSwarmPatchStatus;
6
+ reasons: string[];
7
+ }>;
8
+ export declare function normalizeCollectedMergeBundle(value: unknown, mergePath: string): FrontierSwarmMergeBundle;
9
+ export declare function mergeRecordScore(record: {
10
+ mergePath: string;
11
+ bundle: FrontierSwarmMergeBundle;
12
+ }): number;
13
+ export declare function classifyCodexCollectBucket(bundle: FrontierSwarmMergeBundle, staleAgainstHead: boolean): FrontierCodexCollectBucket;
14
+ //# sourceMappingURL=collect-bundles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collect-bundles.d.ts","sourceRoot":"","sources":["../src/collect-bundles.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,wBAAwB,EAC7B,KAAK,wBAAwB,EAC9B,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAI7D,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,wBAAwB,EAChC,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,wBAAwB,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAmCvF;AA4DD,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,wBAAwB,CAiDzG;AAGD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,wBAAwB,CAAA;CAAE,GAAG,MAAM,CAMxG;AAQD,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,OAAO,GAAG,0BAA0B,CAOlI"}
@@ -0,0 +1,173 @@
1
+ import fs from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ import { FRONTIER_SWARM_MERGE_BUNDLE_KIND, FRONTIER_SWARM_MERGE_BUNDLE_VERSION } from '@shapeshift-labs/frontier-swarm';
4
+ import { isObject, pathExists, resolveBundlePatchPath, runProcess, tail, uniqueStrings } from './common.js';
5
+ export async function bundlePatchStaleness(bundle, mergePath, cwd) {
6
+ const patchPath = resolveBundlePatchPath(bundle, mergePath);
7
+ if (!patchPath || !await pathExists(patchPath))
8
+ return { stale: false, patchStatus: 'missing', reasons: ['missing patch'] };
9
+ const patch = await fs.readFile(patchPath, 'utf8').catch(() => '');
10
+ if (!patch.trim())
11
+ return { stale: false, patchStatus: 'missing', reasons: ['empty patch'] };
12
+ const result = await runProcess('git', ['apply', '--check', patchPath], { cwd, allowFailure: true });
13
+ if (result.status === 0)
14
+ return { stale: false, patchStatus: 'applies', reasons: ['patch applies to working tree'] };
15
+ const cached = await runProcess('git', ['apply', '--check', '--cached', patchPath], { cwd, allowFailure: true });
16
+ if (cached.status === 0) {
17
+ return {
18
+ stale: false,
19
+ patchStatus: 'dirty-workspace-conflict',
20
+ reasons: ['patch applies to index but not dirty working tree']
21
+ };
22
+ }
23
+ const baseStatus = await patchBaseHashStatus(patch, cwd);
24
+ if (!baseStatus.known) {
25
+ return {
26
+ stale: false,
27
+ patchStatus: 'needs-port',
28
+ reasons: ['patch does not expose comparable base hashes; coordinator review must port it', ...baseStatus.reasons]
29
+ };
30
+ }
31
+ if (baseStatus.known && baseStatus.mismatched === 0) {
32
+ return {
33
+ stale: false,
34
+ patchStatus: 'needs-port',
35
+ reasons: ['patch base hashes match HEAD but textual apply failed', ...baseStatus.reasons]
36
+ };
37
+ }
38
+ return {
39
+ stale: false,
40
+ patchStatus: 'needs-port',
41
+ reasons: uniqueStrings(['patch base hashes differ from HEAD; manual port required', ...baseStatus.reasons, ...tail(result.stderr || result.stdout, 3)])
42
+ };
43
+ }
44
+ async function patchBaseHashStatus(patch, cwd) {
45
+ const entries = parsePatchBaseHashes(patch, cwd);
46
+ if (entries.length === 0)
47
+ return { known: false, mismatched: 0, reasons: ['no patch base hashes available'] };
48
+ let mismatched = 0;
49
+ const reasons = [];
50
+ for (const entry of entries) {
51
+ const head = await runProcess('git', ['rev-parse', `HEAD:${entry.path}`], { cwd, allowFailure: true });
52
+ if (head.status !== 0) {
53
+ mismatched += 1;
54
+ reasons.push(`missing HEAD blob for ${entry.path}`);
55
+ continue;
56
+ }
57
+ const headHash = head.stdout.trim();
58
+ if (!headHash.startsWith(entry.oldHash)) {
59
+ mismatched += 1;
60
+ reasons.push(`base hash mismatch for ${entry.path}`);
61
+ }
62
+ }
63
+ return { known: true, mismatched, reasons };
64
+ }
65
+ function parsePatchBaseHashes(patch, cwd) {
66
+ const lines = patch.split(/\r?\n/);
67
+ const entries = [];
68
+ let currentPath;
69
+ for (const line of lines) {
70
+ if (line.startsWith('diff --git ')) {
71
+ const parts = line.split(/\s+/);
72
+ currentPath = normalizePatchBasePath(parts[2], cwd) ?? normalizePatchBasePath(parts[3], cwd);
73
+ continue;
74
+ }
75
+ if (!currentPath || !line.startsWith('index '))
76
+ continue;
77
+ const match = /^index\s+([0-9a-f]+)\.\.([0-9a-f]+)/i.exec(line);
78
+ if (match?.[1] && match[1] !== '0000000')
79
+ entries.push({ path: currentPath, oldHash: match[1] });
80
+ }
81
+ return entries;
82
+ }
83
+ function normalizePatchBasePath(token, cwd) {
84
+ if (!token || token === '/dev/null')
85
+ return undefined;
86
+ let value = token;
87
+ if (value.startsWith('a/') || value.startsWith('b/'))
88
+ value = value.slice(2);
89
+ if (value === '/dev/null')
90
+ return undefined;
91
+ if (path.isAbsolute(value)) {
92
+ const relative = path.relative(cwd, value);
93
+ if (relative && !relative.startsWith('..') && !path.isAbsolute(relative))
94
+ return relative.replace(/\\/g, '/');
95
+ return undefined;
96
+ }
97
+ const rootedValue = path.join(path.parse(cwd).root, value);
98
+ const rootedRelative = path.relative(cwd, rootedValue);
99
+ if (rootedRelative && !rootedRelative.startsWith('..') && !path.isAbsolute(rootedRelative))
100
+ return rootedRelative.replace(/\\/g, '/');
101
+ return value.replace(/\\/g, '/');
102
+ }
103
+ export function normalizeCollectedMergeBundle(value, mergePath) {
104
+ const input = typeof value === 'object' && value !== null ? value : {};
105
+ const jobId = typeof input.jobId === 'string' && input.jobId ? input.jobId : path.basename(path.dirname(mergePath));
106
+ const changedPaths = stringArray(input.changedPaths);
107
+ const status = typeof input.status === 'string' ? input.status : 'completed';
108
+ const autoMergeable = Boolean(input.autoMergeable);
109
+ const disposition = typeof input.disposition === 'string'
110
+ ? input.disposition
111
+ : autoMergeable ? 'auto-mergeable' : status === 'failed' ? 'rejected' : 'needs-port';
112
+ const bundle = {
113
+ kind: typeof input.kind === 'string' ? input.kind : FRONTIER_SWARM_MERGE_BUNDLE_KIND,
114
+ version: typeof input.version === 'number' ? input.version : FRONTIER_SWARM_MERGE_BUNDLE_VERSION,
115
+ id: typeof input.id === 'string' && input.id ? input.id : `swarm-merge-bundle:${jobId}`,
116
+ ...(typeof input.runId === 'string' ? { runId: input.runId } : {}),
117
+ ...(typeof input.planId === 'string' ? { planId: input.planId } : {}),
118
+ jobId,
119
+ ...(typeof input.taskId === 'string' ? { taskId: input.taskId } : {}),
120
+ ...(typeof input.lane === 'string' ? { lane: input.lane } : {}),
121
+ ...(typeof input.title === 'string' ? { title: input.title } : {}),
122
+ generatedAt: typeof input.generatedAt === 'number' ? input.generatedAt : Date.now(),
123
+ status,
124
+ mergeReadiness: typeof input.mergeReadiness === 'string'
125
+ ? input.mergeReadiness
126
+ : changedPaths.length ? 'patch-candidate' : 'discovery-only',
127
+ disposition,
128
+ riskLevel: typeof input.riskLevel === 'string' ? input.riskLevel : 'unknown',
129
+ autoMergeable,
130
+ changedPaths,
131
+ changedRegions: stringArray(input.changedRegions),
132
+ ownedFilesTouched: stringArray(input.ownedFilesTouched),
133
+ allowedWrites: stringArray(input.allowedWrites),
134
+ ownershipViolations: stringArray(input.ownershipViolations),
135
+ ...(typeof input.patchPath === 'string' ? { patchPath: input.patchPath } : {}),
136
+ ...(typeof input.patchHash === 'string' ? { patchHash: input.patchHash } : {}),
137
+ evidencePaths: stringArray(input.evidencePaths),
138
+ commandsPassed: Array.isArray(input.commandsPassed) ? input.commandsPassed : [],
139
+ commandsFailed: Array.isArray(input.commandsFailed) ? input.commandsFailed : [],
140
+ queueItemIds: stringArray(input.queueItemIds),
141
+ ...(typeof input.branchName === 'string' ? { branchName: input.branchName } : {}),
142
+ ...(typeof input.commit === 'string' ? { commit: input.commit } : {}),
143
+ staleAgainstHead: Boolean(input.staleAgainstHead),
144
+ reasons: stringArray(input.reasons),
145
+ ...(isObject(input.semanticImport) ? { semanticImport: input.semanticImport } : {}),
146
+ ...(isObject(input.metadata) ? { metadata: input.metadata } : {})
147
+ };
148
+ if (Array.isArray(input.traceShards)) {
149
+ bundle.traceShards = input.traceShards;
150
+ }
151
+ return bundle;
152
+ }
153
+ export function mergeRecordScore(record) {
154
+ return (record.mergePath.includes('/evidence/') ? 100 : 0)
155
+ + record.bundle.changedPaths.length
156
+ + record.bundle.evidencePaths.length
157
+ + record.bundle.commandsPassed.length
158
+ + record.bundle.commandsFailed.length;
159
+ }
160
+ function stringArray(value) {
161
+ return Array.isArray(value) ? value.filter((entry) => typeof entry === 'string') : [];
162
+ }
163
+ export function classifyCodexCollectBucket(bundle, staleAgainstHead) {
164
+ if (staleAgainstHead || bundle.staleAgainstHead || bundle.disposition === 'stale-against-head')
165
+ return 'stale-against-head';
166
+ if (bundle.disposition === 'rejected' || bundle.disposition === 'blocked' || bundle.commandsFailed.length > 0 || bundle.status === 'failed') {
167
+ return 'failed-evidence';
168
+ }
169
+ if (bundle.disposition === 'auto-mergeable' && bundle.autoMergeable)
170
+ return 'ready-to-apply';
171
+ return 'needs-human-port';
172
+ }
173
+ //# sourceMappingURL=collect-bundles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collect-bundles.js","sourceRoot":"","sources":["../src/collect-bundles.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { FrontierSwarmEvidenceIndexEntryInput, FrontierSwarmMergeBundle } from '@shapeshift-labs/frontier-swarm';
2
+ import type { FrontierCodexCollectBucket } from './index.js';
3
+ export declare function copyOrWriteCollectedEvidenceSummary(input: {
4
+ file: string;
5
+ bundle: FrontierSwarmMergeBundle;
6
+ bucket: FrontierCodexCollectBucket;
7
+ mergePath: string;
8
+ patchPath?: string;
9
+ patchStatus: string;
10
+ staleReasons?: readonly string[];
11
+ }): Promise<void>;
12
+ export declare function createCollectedEvidenceEntries(bundle: FrontierSwarmMergeBundle, collectedEvidencePath: string, bucket: FrontierCodexCollectBucket): FrontierSwarmEvidenceIndexEntryInput[];
13
+ //# sourceMappingURL=collect-evidence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collect-evidence.d.ts","sourceRoot":"","sources":["../src/collect-evidence.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oCAAoC,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAEtH,OAAO,KAAK,EAAE,0BAA0B,EAAkG,MAAM,YAAY,CAAC;AAU7J,wBAAsB,mCAAmC,CAAC,KAAK,EAAE;IAC/D,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,wBAAwB,CAAC;IACjC,MAAM,EAAE,0BAA0B,CAAC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAClC,GAAG,OAAO,CAAC,IAAI,CAAC,CAiDhB;AAeD,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,wBAAwB,EAChC,qBAAqB,EAAE,MAAM,EAC7B,MAAM,EAAE,0BAA0B,GACjC,oCAAoC,EAAE,CAuDxC"}
@@ -0,0 +1,131 @@
1
+ import fs from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ import { FRONTIER_SWARM_CODEX_JOB_EVIDENCE_KIND, FRONTIER_SWARM_CODEX_JOB_EVIDENCE_VERSION } from './constants.js';
4
+ import { isObject, pathExists, uniqueStrings } from './common.js';
5
+ import { readPatchHunks, createCodexEvidenceSourceCitations } from './codex-evidence.js';
6
+ import { classifyCodexHandoffArtifact } from './handoff-artifacts.js';
7
+ import { semanticImportParadigmSemanticsSummary } from './semantic-import-paradigm.js';
8
+ import { semanticImportUniversalAstLayerSummary } from './semantic-import-layers.js';
9
+ import { semanticImportProofSpecSummary } from './semantic-import-proof.js';
10
+ import { codexBundleTraceSummary } from './trace-summary.js';
11
+ export async function copyOrWriteCollectedEvidenceSummary(input) {
12
+ const existing = input.bundle.evidencePaths.find((entry) => path.basename(entry) === 'evidence.json' && entry !== input.file);
13
+ const traceSummary = codexBundleTraceSummary(input.bundle);
14
+ await fs.mkdir(path.dirname(input.file), { recursive: true });
15
+ if (existing && await pathExists(existing)) {
16
+ await fs.copyFile(existing, input.file).catch(() => { });
17
+ if (await pathExists(input.file)) {
18
+ if (traceSummary.shardCount)
19
+ await augmentCollectedEvidenceTraceSummary(input.file, traceSummary);
20
+ return;
21
+ }
22
+ }
23
+ const patchHunks = input.patchPath ? await readPatchHunks(input.patchPath) : [];
24
+ const evidence = {
25
+ kind: FRONTIER_SWARM_CODEX_JOB_EVIDENCE_KIND,
26
+ version: FRONTIER_SWARM_CODEX_JOB_EVIDENCE_VERSION,
27
+ generatedAt: Date.now(),
28
+ jobId: input.bundle.jobId,
29
+ taskId: input.bundle.taskId ?? input.bundle.jobId,
30
+ lane: input.bundle.lane ?? 'unknown',
31
+ status: input.bundle.status,
32
+ mergeReadiness: input.bundle.mergeReadiness,
33
+ disposition: input.bundle.disposition,
34
+ riskLevel: input.bundle.riskLevel,
35
+ changedPaths: [...input.bundle.changedPaths],
36
+ changedRegions: [...input.bundle.changedRegions],
37
+ ownershipViolations: [...input.bundle.ownershipViolations],
38
+ ...(input.patchPath ? { patchPath: input.patchPath } : {}),
39
+ mergeBundlePath: input.mergePath,
40
+ evidencePaths: uniqueStrings(input.bundle.evidencePaths),
41
+ handoffArtifacts: input.bundle.evidencePaths.map((entry) => ({ path: entry, kind: classifyCodexHandoffArtifact(entry) ?? 'evidence' })),
42
+ commands: {
43
+ passed: input.bundle.commandsPassed.map((command) => ({ name: command.name, command: [...command.command], ...(command.status !== undefined ? { status: command.status } : {}) })),
44
+ failed: input.bundle.commandsFailed.map((command) => ({ name: command.name, command: [...command.command], ...(command.status !== undefined ? { status: command.status } : {}) }))
45
+ },
46
+ patchHunks,
47
+ readyToPortHunkCount: input.bucket === 'needs-human-port' || input.bucket === 'ready-to-apply' ? patchHunks.length : 0,
48
+ ...(input.bundle.semanticImport ? { semanticImport: input.bundle.semanticImport } : {}),
49
+ ...(traceSummary.shardCount ? { traceSummary } : {}),
50
+ sourceCitations: createCodexEvidenceSourceCitations(input.bundle),
51
+ metadata: {
52
+ bucket: input.bucket,
53
+ patchStatus: input.patchStatus,
54
+ staleReasons: input.staleReasons ?? [],
55
+ autoMergeable: input.bundle.autoMergeable,
56
+ staleAgainstHead: input.bundle.staleAgainstHead,
57
+ reasons: input.bundle.reasons
58
+ }
59
+ };
60
+ await fs.writeFile(input.file, JSON.stringify(evidence, null, 2) + '\n');
61
+ }
62
+ async function augmentCollectedEvidenceTraceSummary(file, traceSummary) {
63
+ try {
64
+ const parsed = JSON.parse(await fs.readFile(file, 'utf8'));
65
+ if (!isObject(parsed))
66
+ return;
67
+ parsed.traceSummary = traceSummary;
68
+ await fs.writeFile(file, JSON.stringify(parsed, null, 2) + '\n');
69
+ }
70
+ catch {
71
+ // Keep collection best-effort when a worker evidence file is not JSON.
72
+ }
73
+ }
74
+ export function createCollectedEvidenceEntries(bundle, collectedEvidencePath, bucket) {
75
+ const confidence = bucket === 'ready-to-apply' ? 0.95 : bucket === 'needs-human-port' ? 0.7 : bucket === 'failed-evidence' ? 0.25 : 0.2;
76
+ const universalAstLayers = semanticImportUniversalAstLayerSummary(bundle.semanticImport);
77
+ const traceSummary = codexBundleTraceSummary(bundle);
78
+ const entries = [{
79
+ jobId: bundle.jobId,
80
+ queueItemId: bundle.queueItemIds[0],
81
+ lane: bundle.lane,
82
+ topic: 'merge-admission',
83
+ path: collectedEvidencePath,
84
+ kind: 'evidence',
85
+ status: bucket,
86
+ confidence,
87
+ tags: ['coordinator-query', bucket],
88
+ facets: {
89
+ bucket,
90
+ disposition: bundle.disposition,
91
+ riskLevel: bundle.riskLevel,
92
+ autoMergeable: bundle.autoMergeable,
93
+ staleAgainstHead: bundle.staleAgainstHead,
94
+ semanticSymbols: bundle.semanticImport?.semanticIndex.symbols ?? 0,
95
+ semanticRegions: bundle.semanticImport?.semanticSidecars.ownershipRegions ?? 0,
96
+ universalAstLayers: universalAstLayers.total,
97
+ universalAstLayerNames: universalAstLayers.names.join(','),
98
+ proofSpecObligations: semanticImportProofSpecSummary(bundle.semanticImport).obligations,
99
+ proofSpecFailedObligations: semanticImportProofSpecSummary(bundle.semanticImport).failed,
100
+ paradigmSemanticsRecords: semanticImportParadigmSemanticsSummary(bundle.semanticImport).total,
101
+ paradigmSemanticsGroups: semanticImportParadigmSemanticsSummary(bundle.semanticImport).groups.length,
102
+ paradigmSemanticsLoweringRecords: semanticImportParadigmSemanticsSummary(bundle.semanticImport).loweringRecords,
103
+ traceShards: traceSummary.shardCount,
104
+ traceDivergences: traceSummary.divergenceCount,
105
+ traceOpenDivergences: traceSummary.openDivergenceCount,
106
+ traceRowWindows: traceSummary.rowWindowCount,
107
+ traceHypotheses: traceSummary.hypothesisCount,
108
+ traceExecutableOwnershipRegions: traceSummary.executableOwnershipRegionCount,
109
+ traceFocusedTests: traceSummary.focusedTestCount,
110
+ traceReferenceEvidence: traceSummary.referenceEvidenceCount
111
+ }
112
+ }];
113
+ for (const file of bundle.evidencePaths) {
114
+ if (file === collectedEvidencePath)
115
+ continue;
116
+ entries.push({
117
+ jobId: bundle.jobId,
118
+ queueItemId: bundle.queueItemIds[0],
119
+ lane: bundle.lane,
120
+ topic: path.basename(file),
121
+ path: file,
122
+ kind: classifyCodexHandoffArtifact(file) ?? 'evidence',
123
+ status: bucket,
124
+ confidence,
125
+ tags: [bucket],
126
+ facets: { bucket, disposition: bundle.disposition }
127
+ });
128
+ }
129
+ return entries;
130
+ }
131
+ //# sourceMappingURL=collect-evidence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collect-evidence.js","sourceRoot":"","sources":["../src/collect-evidence.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { type FrontierSwarmCoordinatorProcessInput } from '@shapeshift-labs/frontier-swarm';
2
+ import type { FrontierCodexCollectInput, FrontierCodexCollectResult } from './index.js';
3
+ export declare function collectCodexSwarmRun(input: FrontierCodexCollectInput): Promise<FrontierCodexCollectResult>;
4
+ export declare function readCodexPidProcesses(file: string): Promise<FrontierSwarmCoordinatorProcessInput[]>;
5
+ //# sourceMappingURL=collect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collect.d.ts","sourceRoot":"","sources":["../src/collect.ts"],"names":[],"mappings":"AAEA,OAAO,EAML,KAAK,oCAAoC,EAI1C,MAAM,iCAAiC,CAAC;AAEzC,OAAO,KAAK,EAA8B,yBAAyB,EAAgC,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAOlJ,wBAAsB,oBAAoB,CAAC,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAmJhH;AAED,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,oCAAoC,EAAE,CAAC,CAWzG"}