@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.
- package/README.md +1 -1
- package/dist/apply.d.ts +3 -0
- package/dist/apply.d.ts.map +1 -0
- package/dist/apply.js +127 -0
- package/dist/apply.js.map +1 -0
- package/dist/cli.js +7 -1
- package/dist/cli.js.map +1 -1
- package/dist/codex-events.d.ts +15 -0
- package/dist/codex-events.d.ts.map +1 -0
- package/dist/codex-events.js +108 -0
- package/dist/codex-events.js.map +1 -0
- package/dist/codex-evidence.d.ts +33 -0
- package/dist/codex-evidence.d.ts.map +1 -0
- package/dist/codex-evidence.js +143 -0
- package/dist/codex-evidence.js.map +1 -0
- package/dist/codex-executor.d.ts +5 -0
- package/dist/codex-executor.d.ts.map +1 -0
- package/dist/codex-executor.js +160 -0
- package/dist/codex-executor.js.map +1 -0
- package/dist/codex-prompt.d.ts +20 -0
- package/dist/codex-prompt.d.ts.map +1 -0
- package/dist/codex-prompt.js +238 -0
- package/dist/codex-prompt.js.map +1 -0
- package/dist/codex-run-scheduler.d.ts +9 -0
- package/dist/codex-run-scheduler.d.ts.map +1 -0
- package/dist/codex-run-scheduler.js +145 -0
- package/dist/codex-run-scheduler.js.map +1 -0
- package/dist/codex-run.d.ts +5 -0
- package/dist/codex-run.d.ts.map +1 -0
- package/dist/codex-run.js +278 -0
- package/dist/codex-run.js.map +1 -0
- package/dist/codex-workspace-changes.d.ts +28 -0
- package/dist/codex-workspace-changes.d.ts.map +1 -0
- package/dist/codex-workspace-changes.js +147 -0
- package/dist/codex-workspace-changes.js.map +1 -0
- package/dist/codex-workspace.d.ts +10 -0
- package/dist/codex-workspace.d.ts.map +1 -0
- package/dist/codex-workspace.js +210 -0
- package/dist/codex-workspace.js.map +1 -0
- package/dist/collect-bundles.d.ts +14 -0
- package/dist/collect-bundles.d.ts.map +1 -0
- package/dist/collect-bundles.js +173 -0
- package/dist/collect-bundles.js.map +1 -0
- package/dist/collect-evidence.d.ts +13 -0
- package/dist/collect-evidence.d.ts.map +1 -0
- package/dist/collect-evidence.js +131 -0
- package/dist/collect-evidence.js.map +1 -0
- package/dist/collect.d.ts +5 -0
- package/dist/collect.d.ts.map +1 -0
- package/dist/collect.js +189 -0
- package/dist/collect.js.map +1 -0
- package/dist/common.d.ts +37 -0
- package/dist/common.d.ts.map +1 -0
- package/dist/common.js +191 -0
- package/dist/common.js.map +1 -0
- package/dist/constants.d.ts +25 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +26 -0
- package/dist/constants.js.map +1 -0
- package/dist/dashboard.d.ts +9 -0
- package/dist/dashboard.d.ts.map +1 -0
- package/dist/dashboard.js +80 -0
- package/dist/dashboard.js.map +1 -0
- package/dist/handoff-artifacts.d.ts +4 -0
- package/dist/handoff-artifacts.d.ts.map +1 -0
- package/dist/handoff-artifacts.js +67 -0
- package/dist/handoff-artifacts.js.map +1 -0
- package/dist/index.d.ts +14 -820
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -3612
- package/dist/index.js.map +1 -1
- package/dist/patch-score-semantic.d.ts +4 -0
- package/dist/patch-score-semantic.d.ts.map +1 -0
- package/dist/patch-score-semantic.js +154 -0
- package/dist/patch-score-semantic.js.map +1 -0
- package/dist/score.d.ts +3 -0
- package/dist/score.d.ts.map +1 -0
- package/dist/score.js +219 -0
- package/dist/score.js.map +1 -0
- package/dist/semantic-import-layers.d.ts +9 -0
- package/dist/semantic-import-layers.d.ts.map +1 -0
- package/dist/semantic-import-layers.js +143 -0
- package/dist/semantic-import-layers.js.map +1 -0
- package/dist/semantic-import-paradigm.d.ts +6 -0
- package/dist/semantic-import-paradigm.d.ts.map +1 -0
- package/dist/semantic-import-paradigm.js +159 -0
- package/dist/semantic-import-paradigm.js.map +1 -0
- package/dist/semantic-import-proof.d.ts +7 -0
- package/dist/semantic-import-proof.d.ts.map +1 -0
- package/dist/semantic-import-proof.js +142 -0
- package/dist/semantic-import-proof.js.map +1 -0
- package/dist/semantic-import-quality.d.ts +6 -0
- package/dist/semantic-import-quality.d.ts.map +1 -0
- package/dist/semantic-import-quality.js +108 -0
- package/dist/semantic-import-quality.js.map +1 -0
- package/dist/semantic-import-select.d.ts +36 -0
- package/dist/semantic-import-select.d.ts.map +1 -0
- package/dist/semantic-import-select.js +132 -0
- package/dist/semantic-import-select.js.map +1 -0
- package/dist/semantic-import-sidecar.d.ts +7 -0
- package/dist/semantic-import-sidecar.d.ts.map +1 -0
- package/dist/semantic-import-sidecar.js +169 -0
- package/dist/semantic-import-sidecar.js.map +1 -0
- package/dist/semantic-import.d.ts +13 -0
- package/dist/semantic-import.d.ts.map +1 -0
- package/dist/semantic-import.js +122 -0
- package/dist/semantic-import.js.map +1 -0
- package/dist/trace-summary.d.ts +6 -0
- package/dist/trace-summary.d.ts.map +1 -0
- package/dist/trace-summary.js +61 -0
- package/dist/trace-summary.js.map +1 -0
- package/dist/types-collection.d.ts +166 -0
- package/dist/types-collection.d.ts.map +1 -0
- package/dist/types-collection.js +2 -0
- package/dist/types-collection.js.map +1 -0
- package/dist/types-evidence.d.ts +158 -0
- package/dist/types-evidence.d.ts.map +1 -0
- package/dist/types-evidence.js +2 -0
- package/dist/types-evidence.js.map +1 -0
- package/dist/types-run.d.ts +161 -0
- package/dist/types-run.d.ts.map +1 -0
- package/dist/types-run.js +2 -0
- package/dist/types-run.js.map +1 -0
- package/dist/types-semantic.d.ts +192 -0
- package/dist/types-semantic.d.ts.map +1 -0
- package/dist/types-semantic.js +2 -0
- package/dist/types-semantic.js.map +1 -0
- package/dist/types-workspace.d.ts +122 -0
- package/dist/types-workspace.d.ts.map +1 -0
- package/dist/types-workspace.js +2 -0
- package/dist/types-workspace.js.map +1 -0
- package/dist/types.d.ts +6 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/workspace-link-repair.d.ts +3 -0
- package/dist/workspace-link-repair.d.ts.map +1 -0
- package/dist/workspace-link-repair.js +164 -0
- package/dist/workspace-link-repair.js.map +1 -0
- 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"}
|