singleton-pipeline 0.4.0-beta.6 → 0.4.0-beta.8
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/package.json +1 -1
- package/packages/cli/package.json +1 -1
- package/packages/cli/src/commands/repl.js +1 -1
- package/packages/cli/src/index.js +1 -1
- package/packages/cli/src/runners/claude.js +5 -2
- package/packages/cli/src/runners/codex.js +5 -2
- package/packages/cli/src/runners/copilot.js +14 -3
- package/packages/server/package.json +1 -1
- package/packages/web/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Singleton Pipeline Builder (v0.4.0-beta.
|
|
1
|
+
# Singleton Pipeline Builder (v0.4.0-beta.8)
|
|
2
2
|
|
|
3
3
|
[](https://www.npmjs.com/package/singleton-pipeline)
|
|
4
4
|
[](https://www.npmjs.com/package/singleton-pipeline)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "singleton-pipeline",
|
|
3
|
-
"version": "0.4.0-beta.
|
|
3
|
+
"version": "0.4.0-beta.8",
|
|
4
4
|
"description": "Visual pipeline builder for multi-agent AI workflows. Orchestrates Claude Code, Codex, Copilot, and OpenCode under a unified security policy.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ai",
|
|
@@ -202,7 +202,7 @@ const SINGLETON_RAW = [
|
|
|
202
202
|
];
|
|
203
203
|
|
|
204
204
|
const ART_WIDTH = Math.max(...SINGLETON_RAW.map((l) => l.length));
|
|
205
|
-
const APP_VERSION = 'v0.4.0-beta.
|
|
205
|
+
const APP_VERSION = 'v0.4.0-beta.8';
|
|
206
206
|
|
|
207
207
|
async function showWelcome(root, shell) {
|
|
208
208
|
const now = new Date();
|
|
@@ -97,8 +97,11 @@ export const claudeRunner = {
|
|
|
97
97
|
}
|
|
98
98
|
});
|
|
99
99
|
|
|
100
|
-
child.stdin.
|
|
101
|
-
|
|
100
|
+
child.stdin.on('error', () => { /* surfaced via close handler */ });
|
|
101
|
+
try {
|
|
102
|
+
child.stdin.write(userPrompt);
|
|
103
|
+
child.stdin.end();
|
|
104
|
+
} catch { /* same */ }
|
|
102
105
|
});
|
|
103
106
|
|
|
104
107
|
return {
|
|
@@ -128,8 +128,11 @@ export const codexRunner = {
|
|
|
128
128
|
resolve({ events, stderr: stderrText });
|
|
129
129
|
});
|
|
130
130
|
|
|
131
|
-
child.stdin.
|
|
132
|
-
|
|
131
|
+
child.stdin.on('error', () => { /* surfaced via close handler */ });
|
|
132
|
+
try {
|
|
133
|
+
child.stdin.write(prompt);
|
|
134
|
+
child.stdin.end();
|
|
135
|
+
} catch { /* same */ }
|
|
133
136
|
});
|
|
134
137
|
|
|
135
138
|
let text = '';
|
|
@@ -146,7 +146,12 @@ export const copilotRunner = {
|
|
|
146
146
|
securityPolicy,
|
|
147
147
|
timeoutMs = DEFAULT_TIMEOUT_MS,
|
|
148
148
|
}) {
|
|
149
|
-
|
|
149
|
+
// When --agent is used, Copilot loads the system prompt from .github/agents/<name>.md.
|
|
150
|
+
// Sending Singleton's combined <system>...<user>...</user> stdin in that case
|
|
151
|
+
// duplicates the system instructions and buries the user inputs in noise. So we
|
|
152
|
+
// pipe ONLY the user prompt when runnerAgent is set — this matches the pattern
|
|
153
|
+
// `copilot -p "<user_message>" --agent <name>` used in standalone bash scripts.
|
|
154
|
+
const prompt = runnerAgent ? userPrompt : buildPrompt(systemPrompt, userPrompt);
|
|
150
155
|
const args = buildCopilotArgs({ model, runnerAgent, securityPolicy });
|
|
151
156
|
|
|
152
157
|
const { events, stderr } = await new Promise((resolve, reject) => {
|
|
@@ -161,8 +166,14 @@ export const copilotRunner = {
|
|
|
161
166
|
setTimeout(() => child.kill('SIGKILL'), 5000).unref();
|
|
162
167
|
}, timeoutMs);
|
|
163
168
|
|
|
164
|
-
child
|
|
165
|
-
|
|
169
|
+
// Silence EPIPE/EOF if the child process exits before consuming stdin
|
|
170
|
+
// (e.g. copilot rejects the args, hits an internal limit, or crashes).
|
|
171
|
+
// We surface the real reason via the 'close' handler with exit code + stderr.
|
|
172
|
+
child.stdin.on('error', () => { /* swallowed — see close handler */ });
|
|
173
|
+
try {
|
|
174
|
+
child.stdin.write(prompt);
|
|
175
|
+
child.stdin.end();
|
|
176
|
+
} catch { /* same */ }
|
|
166
177
|
|
|
167
178
|
child.stdout.on('data', (d) => stdoutChunks.push(d.toString()));
|
|
168
179
|
child.stderr.on('data', (d) => (stderrText += d.toString()));
|