fission-worker 0.2.0 → 0.2.2
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/dist/docker.d.ts +1 -1
- package/dist/docker.js +74 -51
- package/dist/docker.js.map +1 -1
- package/package.json +1 -1
package/dist/docker.d.ts
CHANGED
|
@@ -16,7 +16,7 @@ export interface PipelineJob {
|
|
|
16
16
|
}
|
|
17
17
|
/**
|
|
18
18
|
* Start a pipeline session on the host machine (no Docker).
|
|
19
|
-
* Clones repo to a temp workspace, runs
|
|
19
|
+
* Clones repo to a temp workspace, runs the pipeline engine directly,
|
|
20
20
|
* cleans up when done. Uses the host's Claude subscription auth.
|
|
21
21
|
*/
|
|
22
22
|
export declare function startSession(job: PipelineJob, config: WorkerConfig, activeSessions: Map<string, ChildProcess>): void;
|
package/dist/docker.js
CHANGED
|
@@ -6,7 +6,7 @@ const fs_1 = require("fs");
|
|
|
6
6
|
const path_1 = require("path");
|
|
7
7
|
/**
|
|
8
8
|
* Start a pipeline session on the host machine (no Docker).
|
|
9
|
-
* Clones repo to a temp workspace, runs
|
|
9
|
+
* Clones repo to a temp workspace, runs the pipeline engine directly,
|
|
10
10
|
* cleans up when done. Uses the host's Claude subscription auth.
|
|
11
11
|
*/
|
|
12
12
|
function startSession(job, config, activeSessions) {
|
|
@@ -44,78 +44,101 @@ function startSession(job, config, activeSessions) {
|
|
|
44
44
|
return;
|
|
45
45
|
}
|
|
46
46
|
console.log(`[${tag}] Clone complete, starting pipeline...`);
|
|
47
|
-
//
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
"
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
}
|
|
47
|
+
// Find the pipeline runner script (built from Fission repo)
|
|
48
|
+
const runnerScript = findRunnerScript();
|
|
49
|
+
// Environment for the pipeline process
|
|
50
|
+
const pipelineEnv = {
|
|
51
|
+
...process.env,
|
|
52
|
+
FISSION_API_URL: config.fissionUrl,
|
|
53
|
+
FISSION_API_KEY: config.apiKey,
|
|
54
|
+
SESSION_ID: job.sessionId,
|
|
55
|
+
PROJECT_ID: job.projectId,
|
|
56
|
+
REPO_URL: repo.repoUrl,
|
|
57
|
+
REPO_BRANCH: repo.branch || "main",
|
|
58
|
+
GITHUB_TOKEN: gitToken || "",
|
|
59
|
+
// Override workspace for the runner — it clones again but we already did it
|
|
60
|
+
FISSION_REPO_PATH: repoDir,
|
|
61
|
+
};
|
|
62
|
+
let proc;
|
|
63
|
+
if (runnerScript) {
|
|
64
|
+
// Full pipeline engine — runs CTO → Tech Lead → Workers loop
|
|
65
|
+
console.log(`[${tag}] Using pipeline runner: ${runnerScript}`);
|
|
66
|
+
proc = (0, child_process_1.spawn)("node", [runnerScript], {
|
|
67
|
+
cwd: repoDir,
|
|
68
|
+
env: pipelineEnv,
|
|
69
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
// Fallback — run Claude directly with a comprehensive prompt
|
|
74
|
+
console.log(`[${tag}] Pipeline runner not found, using Claude directly`);
|
|
75
|
+
const prompt = `You are an autonomous R&D pipeline. Analyze this codebase and do the following:\n\n` +
|
|
76
|
+
`1. REVIEW: Scan for the top 3-5 issues (bugs, security, performance, improvements)\n` +
|
|
77
|
+
`2. PLAN: For each issue, create a concrete implementation task\n` +
|
|
78
|
+
`3. BUILD: Implement the highest priority task — make the changes and commit\n` +
|
|
79
|
+
`4. REVIEW: Check your work for correctness\n\n` +
|
|
80
|
+
`Work autonomously. Make real code changes and commit them with descriptive messages.\n` +
|
|
81
|
+
`When done, report what you accomplished as JSON:\n` +
|
|
82
|
+
`{summary: string, tasksCompleted: string[], filesChanged: string[], commits: string[]}\n` +
|
|
83
|
+
`Return ONLY valid JSON.`;
|
|
84
|
+
proc = (0, child_process_1.spawn)("claude", ["-p", prompt, "--output-format", "json", "--verbose"], {
|
|
85
|
+
cwd: repoDir,
|
|
86
|
+
env: pipelineEnv,
|
|
87
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
88
|
+
});
|
|
89
|
+
}
|
|
72
90
|
activeSessions.set(job.sessionId, proc);
|
|
73
91
|
let stdout = "";
|
|
74
92
|
proc.stdout?.on("data", (chunk) => {
|
|
93
|
+
const text = chunk.toString().trim();
|
|
75
94
|
stdout += chunk.toString();
|
|
95
|
+
if (text)
|
|
96
|
+
console.log(`[${tag}] ${text.slice(0, 300)}`);
|
|
76
97
|
});
|
|
77
98
|
proc.stderr?.on("data", (chunk) => {
|
|
78
99
|
const text = chunk.toString().trim();
|
|
79
100
|
if (text) {
|
|
80
101
|
console.log(`[${tag}] ${text.slice(0, 200)}`);
|
|
81
|
-
|
|
82
|
-
emitEvent(config, job.projectId, "claude_output", {
|
|
83
|
-
text,
|
|
84
|
-
phase: "BUILD",
|
|
85
|
-
});
|
|
102
|
+
emitEvent(config, job.projectId, "claude_output", { text, phase: "BUILD" });
|
|
86
103
|
}
|
|
87
104
|
});
|
|
88
105
|
proc.on("close", (code) => {
|
|
89
106
|
console.log(`[${tag}] Pipeline exited with code ${code}`);
|
|
90
107
|
activeSessions.delete(job.sessionId);
|
|
91
|
-
//
|
|
108
|
+
// Push commits back to GitHub (if any were made)
|
|
92
109
|
try {
|
|
93
|
-
const
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
console.log(`[${tag}]
|
|
98
|
-
emitEvent(config, job.projectId, "pipeline_summary", {
|
|
99
|
-
sessionId: job.sessionId,
|
|
100
|
-
summary: {
|
|
101
|
-
sessionId: job.sessionId,
|
|
102
|
-
projectName: job.project.name,
|
|
103
|
-
duration: "unknown",
|
|
104
|
-
tasksCompleted: (result.tasksCompleted || []).map((t) => ({ title: t })),
|
|
105
|
-
tasksFailed: [],
|
|
106
|
-
findingsCreated: 0,
|
|
107
|
-
filesChanged: result.filesChanged || [],
|
|
108
|
-
commitMessages: result.commits || [],
|
|
109
|
-
},
|
|
110
|
-
});
|
|
110
|
+
const hasCommits = (0, child_process_1.execSync)("git log --oneline @{u}..HEAD 2>/dev/null || echo ''", { cwd: repoDir, encoding: "utf-8" }).trim();
|
|
111
|
+
if (hasCommits) {
|
|
112
|
+
console.log(`[${tag}] Pushing ${hasCommits.split("\n").length} commit(s)...`);
|
|
113
|
+
(0, child_process_1.execSync)("git push", { cwd: repoDir, stdio: "pipe" });
|
|
114
|
+
console.log(`[${tag}] Push complete`);
|
|
111
115
|
}
|
|
112
116
|
}
|
|
113
|
-
catch {
|
|
117
|
+
catch (pushErr) {
|
|
118
|
+
console.error(`[${tag}] Push failed: ${pushErr}`);
|
|
119
|
+
}
|
|
114
120
|
emitEvent(config, job.projectId, "pipeline_complete", { sessionId: job.sessionId });
|
|
115
121
|
cleanup(workspaceDir);
|
|
116
122
|
reportCompletion(config, job.sessionId, code ?? 1);
|
|
117
123
|
});
|
|
118
124
|
}
|
|
125
|
+
/**
|
|
126
|
+
* Find the built pipeline-runner script on the host.
|
|
127
|
+
*/
|
|
128
|
+
function findRunnerScript() {
|
|
129
|
+
const home = process.env.HOME || "";
|
|
130
|
+
const candidates = [
|
|
131
|
+
(0, path_1.join)(home, "Documents/GitHub/fission/dist-runner/pipeline-runner/index.js"),
|
|
132
|
+
(0, path_1.join)(home, "Documents/GitHub/Fission/dist-runner/pipeline-runner/index.js"),
|
|
133
|
+
(0, path_1.join)(home, ".fission/runner/pipeline-runner/index.js"),
|
|
134
|
+
(0, path_1.join)(home, "fission/dist-runner/pipeline-runner/index.js"),
|
|
135
|
+
];
|
|
136
|
+
for (const candidate of candidates) {
|
|
137
|
+
if ((0, fs_1.existsSync)(candidate))
|
|
138
|
+
return candidate;
|
|
139
|
+
}
|
|
140
|
+
return null;
|
|
141
|
+
}
|
|
119
142
|
function emitEvent(config, projectId, type, data) {
|
|
120
143
|
fetch(`${config.fissionUrl}/api/v1/worker/events`, {
|
|
121
144
|
method: "POST",
|
package/dist/docker.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docker.js","sourceRoot":"","sources":["../src/docker.ts"],"names":[],"mappings":";;AAoBA,
|
|
1
|
+
{"version":3,"file":"docker.js","sourceRoot":"","sources":["../src/docker.ts"],"names":[],"mappings":"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"}
|