@the-agenticflow/openflows 0.1.6 → 0.1.8-dev.236.2151055
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/bin/openflows-dashboard.js +1 -1
- package/bin/openflows-setup.js +1 -1
- package/bin/openflows.js +4 -286
- package/package.json +3 -21
- package/scripts/install.js +59 -209
- package/.env.example +0 -60
- package/README.md +0 -217
- package/bin/LICENSE +0 -21
- package/bin/README.md +0 -535
- package/bin/agentflow-bin +0 -0
- package/bin/agentflow-dashboard-bin +0 -0
- package/bin/agentflow-doctor-bin +0 -0
- package/bin/agentflow-setup-bin +0 -0
- package/bin/orchestration/agent/agents/forge.agent.md +0 -110
- package/bin/orchestration/agent/agents/lore.agent.md +0 -27
- package/bin/orchestration/agent/agents/nexus.agent.md +0 -201
- package/bin/orchestration/agent/agents/sentinel.agent.md +0 -96
- package/bin/orchestration/agent/agents/vessel.agent.md +0 -38
- package/bin/orchestration/agent/registry.json +0 -10
- package/bin/orchestration/agent/standards/CODING.md +0 -22
- package/bin/orchestration/agent/standards/REVIEW.md +0 -15
- package/bin/orchestration/agent/standards/SECURITY.md +0 -72
- package/bin/orchestration/plugin/commands/assign.md +0 -45
- package/bin/orchestration/plugin/commands/check-ci.md +0 -26
- package/bin/orchestration/plugin/commands/document-pr.md +0 -32
- package/bin/orchestration/plugin/commands/gate-approve.md +0 -39
- package/bin/orchestration/plugin/commands/handoff.md +0 -75
- package/bin/orchestration/plugin/commands/merge.md +0 -47
- package/bin/orchestration/plugin/commands/plan.md +0 -66
- package/bin/orchestration/plugin/commands/segment-done.md +0 -50
- package/bin/orchestration/plugin/commands/status-check.md +0 -28
- package/bin/orchestration/plugin/commands/status.md +0 -94
- package/bin/orchestration/plugin/commands/update-changelog.md +0 -37
- package/bin/orchestration/plugin/hooks/forge/post_write_lint.sh +0 -76
- package/bin/orchestration/plugin/hooks/forge/pre_bash_guard.sh +0 -81
- package/bin/orchestration/plugin/hooks/forge/pre_compact_handoff.sh +0 -28
- package/bin/orchestration/plugin/hooks/forge/pre_write_check.sh +0 -77
- package/bin/orchestration/plugin/hooks/forge/session_start.sh +0 -59
- package/bin/orchestration/plugin/hooks/forge/stop_require_artifact.sh +0 -75
- package/bin/orchestration/plugin/hooks/lore/session-start.sh +0 -13
- package/bin/orchestration/plugin/hooks/nexus/init-session.sh +0 -23
- package/bin/orchestration/plugin/hooks/nexus/log-decision.sh +0 -10
- package/bin/orchestration/plugin/hooks/sentinel/post_write_validate.sh +0 -59
- package/bin/orchestration/plugin/hooks/sentinel/pre_bash_readonly_guard.sh +0 -107
- package/bin/orchestration/plugin/hooks/sentinel/session_start.sh +0 -74
- package/bin/orchestration/plugin/hooks/sentinel/stop_require_eval.sh +0 -57
- package/bin/orchestration/plugin/hooks/vessel/log-merge-status.sh +0 -7
- package/bin/orchestration/plugin/hooks/vessel/session-start.sh +0 -14
- package/bin/orchestration/plugin/mcp/mcp.json.template +0 -26
- package/bin/orchestration/plugin/plugin.json +0 -66
- package/bin/orchestration/plugin/skills/forge-algorithmic-art.md +0 -24
- package/bin/orchestration/plugin/skills/forge-canvas-design.md +0 -25
- package/bin/orchestration/plugin/skills/forge-coding.md +0 -161
- package/bin/orchestration/plugin/skills/forge-frontend-design.md +0 -30
- package/bin/orchestration/plugin/skills/forge-mcp-builder.md +0 -37
- package/bin/orchestration/plugin/skills/forge-planning.md +0 -102
- package/bin/orchestration/plugin/skills/forge-skill-creator.md +0 -25
- package/bin/orchestration/plugin/skills/forge-web-artifacts-builder.md +0 -29
- package/bin/orchestration/plugin/skills/lore-brand-guidelines.md +0 -33
- package/bin/orchestration/plugin/skills/lore-changelog.md +0 -69
- package/bin/orchestration/plugin/skills/lore-doc-coauthoring.md +0 -33
- package/bin/orchestration/plugin/skills/lore-documentation.md +0 -57
- package/bin/orchestration/plugin/skills/lore-docx.md +0 -20
- package/bin/orchestration/plugin/skills/lore-pdf.md +0 -20
- package/bin/orchestration/plugin/skills/lore-pptx.md +0 -23
- package/bin/orchestration/plugin/skills/lore-theme-factory.md +0 -20
- package/bin/orchestration/plugin/skills/lore-xlsx.md +0 -20
- package/bin/orchestration/plugin/skills/nexus-doc-coauthoring.md +0 -21
- package/bin/orchestration/plugin/skills/nexus-internal-comms.md +0 -28
- package/bin/orchestration/plugin/skills/nexus-orchestration.md +0 -63
- package/bin/orchestration/plugin/skills/nexus-skill-creator.md +0 -15
- package/bin/orchestration/plugin/skills/nexus-slack-gif-creator.md +0 -21
- package/bin/orchestration/plugin/skills/nexus-triage.md +0 -56
- package/bin/orchestration/plugin/skills/nexus-xlsx.md +0 -20
- package/bin/orchestration/plugin/skills/sentinel-algorithmic-art.md +0 -20
- package/bin/orchestration/plugin/skills/sentinel-criteria.md +0 -115
- package/bin/orchestration/plugin/skills/sentinel-frontend-design.md +0 -20
- package/bin/orchestration/plugin/skills/sentinel-review.md +0 -124
- package/bin/orchestration/plugin/skills/sentinel-web-artifacts-builder.md +0 -20
- package/bin/orchestration/plugin/skills/sentinel-webapp-testing.md +0 -34
- package/bin/orchestration/plugin/skills/shared-claude-api.md +0 -25
- package/bin/orchestration/plugin/skills/vessel-ci-gate.md +0 -68
- package/bin/orchestration/plugin/skills/vessel-internal-comms.md +0 -20
- package/bin/orchestration/plugin/skills/vessel-mcp-builder.md +0 -21
- package/bin/orchestration/plugin/skills/vessel-merge-protocol.md +0 -113
- package/bin/orchestration/plugin/skills/vessel-pdf.md +0 -20
- package/bin/orchestration/plugin/skills/vessel-webapp-testing.md +0 -34
package/scripts/install.js
CHANGED
|
@@ -1,22 +1,17 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
|
-
* Post-install script for
|
|
4
|
-
*
|
|
5
|
-
* This script:
|
|
6
|
-
* 1. Downloads the correct pre-built binary for the current platform
|
|
7
|
-
* 2. Installs mcp-proxy (required for GitHub MCP connectivity)
|
|
8
|
-
* 3. Verifies all dependencies are ready
|
|
3
|
+
* Post-install script: downloads the correct pre-built binary for the current platform.
|
|
9
4
|
*/
|
|
10
5
|
const https = require('https');
|
|
11
6
|
const http = require('http');
|
|
12
7
|
const fs = require('fs');
|
|
13
8
|
const path = require('path');
|
|
14
9
|
const os = require('os');
|
|
15
|
-
const { execSync
|
|
10
|
+
const { execSync } = require('child_process');
|
|
16
11
|
|
|
17
12
|
const REPO = 'The-AgenticFlow/AgentFlow';
|
|
18
13
|
const BIN_DIR = path.join(__dirname, '..', 'bin');
|
|
19
|
-
const
|
|
14
|
+
const PKG_DIR = path.join(__dirname, '..');
|
|
20
15
|
|
|
21
16
|
function detectPlatform() {
|
|
22
17
|
const platform = os.platform();
|
|
@@ -98,182 +93,65 @@ function extractTarGz(tarPath, destDir) {
|
|
|
98
93
|
});
|
|
99
94
|
}
|
|
100
95
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
* It bridges stdio to HTTP MCP servers like GitHub Copilot's MCP endpoint.
|
|
106
|
-
*
|
|
107
|
-
* Strategy:
|
|
108
|
-
* 1. Check if mcp-proxy is already available
|
|
109
|
-
* 2. Install via uv (fast) or pipx (alternative)
|
|
110
|
-
* 3. Fall back to Docker mode instructions if Python tools unavailable
|
|
111
|
-
*/
|
|
112
|
-
async function ensureMcpProxy() {
|
|
113
|
-
console.log(`[openflows] Checking mcp-proxy installation...`);
|
|
114
|
-
|
|
115
|
-
// Check if already installed
|
|
116
|
-
try {
|
|
117
|
-
execSync('which mcp-proxy', { stdio: 'pipe' });
|
|
118
|
-
console.log(`[openflows] ✓ mcp-proxy already installed`);
|
|
119
|
-
return true;
|
|
120
|
-
} catch {
|
|
121
|
-
// Not installed, proceed with installation
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
console.log(`[openflows] Installing mcp-proxy (required for GitHub MCP)...`);
|
|
125
|
-
|
|
126
|
-
// Try uv first (fastest)
|
|
127
|
-
try {
|
|
128
|
-
execSync('which uv', { stdio: 'pipe' });
|
|
129
|
-
console.log(`[openflows] Installing via uv...`);
|
|
130
|
-
execSync('uv tool install mcp-proxy', {
|
|
131
|
-
stdio: 'inherit',
|
|
132
|
-
timeout: 120000
|
|
133
|
-
});
|
|
134
|
-
console.log(`[openflows] ✓ mcp-proxy installed via uv`);
|
|
135
|
-
return true;
|
|
136
|
-
} catch (err) {
|
|
137
|
-
// uv failed or not available
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
// Try pipx as alternative
|
|
141
|
-
try {
|
|
142
|
-
execSync('which pipx', { stdio: 'pipe' });
|
|
143
|
-
console.log(`[openflows] Installing via pipx...`);
|
|
144
|
-
execSync('pipx install mcp-proxy', {
|
|
145
|
-
stdio: 'inherit',
|
|
146
|
-
timeout: 120000
|
|
147
|
-
});
|
|
148
|
-
console.log(`[openflows] ✓ mcp-proxy installed via pipx`);
|
|
149
|
-
return true;
|
|
150
|
-
} catch (err) {
|
|
151
|
-
// pipx failed or not available
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
// Try pip3 as last resort
|
|
155
|
-
try {
|
|
156
|
-
execSync('which pip3', { stdio: 'pipe' });
|
|
157
|
-
console.log(`[openflows] Installing via pip3...`);
|
|
158
|
-
execSync('pip3 install --user mcp-proxy', {
|
|
159
|
-
stdio: 'inherit',
|
|
160
|
-
timeout: 120000
|
|
161
|
-
});
|
|
162
|
-
console.log(`[openflows] ✓ mcp-proxy installed via pip3`);
|
|
163
|
-
return true;
|
|
164
|
-
} catch (err) {
|
|
165
|
-
// pip3 failed or not available
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
console.warn(`[openflows] ⚠ Could not install mcp-proxy automatically.`);
|
|
169
|
-
console.warn(`[openflows] Please install manually:`);
|
|
170
|
-
console.warn(`[openflows] uv tool install mcp-proxy`);
|
|
171
|
-
console.warn(`[openflows] Or use Docker mode:`);
|
|
172
|
-
console.warn(`[openflows] export GITHUB_MCP_TYPE=docker`);
|
|
173
|
-
return false;
|
|
174
|
-
}
|
|
96
|
+
async function fetchLatestTag(includePrerelease = false) {
|
|
97
|
+
const url = includePrerelease
|
|
98
|
+
? `https://api.github.com/repos/${REPO}/releases?per_page=10`
|
|
99
|
+
: `https://api.github.com/repos/${REPO}/releases/latest`;
|
|
175
100
|
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
return allPassed;
|
|
101
|
+
return new Promise((resolve, reject) => {
|
|
102
|
+
https.get(url, {
|
|
103
|
+
headers: { 'User-Agent': 'openflows-npm-installer' }
|
|
104
|
+
}, (res) => {
|
|
105
|
+
let data = '';
|
|
106
|
+
res.on('data', (chunk) => data += chunk);
|
|
107
|
+
res.on('end', () => {
|
|
108
|
+
try {
|
|
109
|
+
const json = JSON.parse(data);
|
|
110
|
+
if (includePrerelease) {
|
|
111
|
+
const pre = json.find(r => r.prerelease);
|
|
112
|
+
resolve(pre ? pre.tag_name : null);
|
|
113
|
+
} else {
|
|
114
|
+
resolve(json.tag_name);
|
|
115
|
+
}
|
|
116
|
+
} catch {
|
|
117
|
+
reject(new Error('Failed to parse release info'));
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
}).on('error', reject);
|
|
121
|
+
});
|
|
199
122
|
}
|
|
200
123
|
|
|
201
124
|
async function main() {
|
|
202
|
-
// Skip postinstall if already done (e.g., during npm link)
|
|
203
|
-
if (fs.existsSync(POSTINSTALL_LOG)) {
|
|
204
|
-
const age = Date.now() - fs.statSync(POSTINSTALL_LOG).mtimeMs;
|
|
205
|
-
if (age < 60000) { // Less than 1 minute old
|
|
206
|
-
console.log(`[openflows] Postinstall already completed, skipping...`);
|
|
207
|
-
return;
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
|
|
211
125
|
const platform = detectPlatform();
|
|
212
|
-
|
|
213
|
-
console.log(
|
|
214
|
-
console.log(`║ OpenFlows Installation ║`);
|
|
215
|
-
console.log(`║ Autonomous AI Development Team ║`);
|
|
216
|
-
console.log(`╚══════════════════════════════════════════════╝`);
|
|
217
|
-
console.log(``);
|
|
218
|
-
console.log(`[openflows] Platform: ${platform}`);
|
|
126
|
+
const channel = process.env.AGENTFLOW_CHANNEL || (process.env.npm_package_version?.includes('-dev.') ? 'edge' : 'stable');
|
|
127
|
+
console.log(`[@the-agenticflow/openflows] Downloading binary for ${platform} (${channel})...`);
|
|
219
128
|
|
|
220
129
|
// Ensure bin directory exists
|
|
221
130
|
if (!fs.existsSync(BIN_DIR)) {
|
|
222
131
|
fs.mkdirSync(BIN_DIR, { recursive: true });
|
|
223
132
|
}
|
|
224
133
|
|
|
225
|
-
// Get
|
|
134
|
+
// Get release tag based on channel
|
|
226
135
|
let tag;
|
|
227
136
|
try {
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
let data = '';
|
|
240
|
-
res.on('data', (chunk) => data += chunk);
|
|
241
|
-
res.on('end', () => {
|
|
242
|
-
try {
|
|
243
|
-
const json = JSON.parse(data);
|
|
244
|
-
if (!json.tag_name) {
|
|
245
|
-
reject(new Error('No tag_name in release response'));
|
|
246
|
-
} else {
|
|
247
|
-
resolve(json.tag_name);
|
|
248
|
-
}
|
|
249
|
-
} catch (parseErr) {
|
|
250
|
-
reject(new Error(`Failed to parse release info: ${parseErr.message}`));
|
|
251
|
-
}
|
|
252
|
-
});
|
|
253
|
-
});
|
|
254
|
-
req.on('error', reject);
|
|
255
|
-
req.setTimeout(30000, () => {
|
|
256
|
-
req.destroy();
|
|
257
|
-
reject(new Error('GitHub API request timeout'));
|
|
258
|
-
});
|
|
259
|
-
});
|
|
260
|
-
} catch (apiErr) {
|
|
261
|
-
console.error(`[openflows] GitHub API error: ${apiErr.message}`);
|
|
262
|
-
console.error('[openflows] Falling back to latest known version: v0.1.6');
|
|
263
|
-
tag = 'v0.1.6';
|
|
137
|
+
if (channel === 'edge') {
|
|
138
|
+
tag = await fetchLatestTag(true);
|
|
139
|
+
if (!tag) {
|
|
140
|
+
console.warn('[@the-agenticflow/openflows] No edge release found, falling back to latest stable');
|
|
141
|
+
tag = await fetchLatestTag(false);
|
|
142
|
+
}
|
|
143
|
+
} else {
|
|
144
|
+
tag = await fetchLatestTag(false);
|
|
145
|
+
}
|
|
146
|
+
} catch {
|
|
147
|
+
tag = await fetchLatestTag(false);
|
|
264
148
|
}
|
|
265
149
|
|
|
266
150
|
const archiveName = `openflows-${tag}-${platform}.tar.gz`;
|
|
267
151
|
const downloadUrl = `https://github.com/${REPO}/releases/download/${tag}/${archiveName}`;
|
|
268
|
-
|
|
269
|
-
const tmpDir = path.join(__dirname, '..', '.tmp');
|
|
270
|
-
if (!fs.existsSync(tmpDir)) {
|
|
271
|
-
fs.mkdirSync(tmpDir, { recursive: true });
|
|
272
|
-
}
|
|
273
|
-
const tmpFile = path.join(tmpDir, archiveName);
|
|
152
|
+
const tmpFile = path.join(os.tmpdir(), archiveName);
|
|
274
153
|
|
|
275
154
|
try {
|
|
276
|
-
console.log(`[openflows] Downloading binary for ${platform}...`);
|
|
277
155
|
await download(downloadUrl, tmpFile);
|
|
278
156
|
await extractTarGz(tmpFile, BIN_DIR);
|
|
279
157
|
} catch (err) {
|
|
@@ -281,8 +159,8 @@ async function main() {
|
|
|
281
159
|
if (platform === 'x86_64-unknown-linux-gnu') {
|
|
282
160
|
const muslArchiveName = `openflows-${tag}-x86_64-unknown-linux-musl.tar.gz`;
|
|
283
161
|
const muslDownloadUrl = `https://github.com/${REPO}/releases/download/${tag}/${muslArchiveName}`;
|
|
284
|
-
const muslTmpFile = path.join(
|
|
285
|
-
console.log(`[openflows] Trying musl fallback...`);
|
|
162
|
+
const muslTmpFile = path.join(os.tmpdir(), muslArchiveName);
|
|
163
|
+
console.log(`[@the-agenticflow/openflows] Trying musl fallback...`);
|
|
286
164
|
await download(muslDownloadUrl, muslTmpFile);
|
|
287
165
|
await extractTarGz(muslTmpFile, BIN_DIR);
|
|
288
166
|
fs.unlinkSync(muslTmpFile);
|
|
@@ -292,7 +170,7 @@ async function main() {
|
|
|
292
170
|
}
|
|
293
171
|
|
|
294
172
|
// Rename binaries to match expected names
|
|
295
|
-
const binaries = ['
|
|
173
|
+
const binaries = ['openflows', 'openflows-setup', 'openflows-dashboard', 'openflows-doctor', 'anthropic-proxy'];
|
|
296
174
|
for (const bin of binaries) {
|
|
297
175
|
const src = path.join(BIN_DIR, bin);
|
|
298
176
|
const dst = path.join(BIN_DIR, `${bin}-bin`);
|
|
@@ -302,49 +180,21 @@ async function main() {
|
|
|
302
180
|
}
|
|
303
181
|
}
|
|
304
182
|
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
fs.rmdirSync(tmpDir);
|
|
183
|
+
// Move orchestration config to package root so the binary can find it
|
|
184
|
+
const orchestrationSrc = path.join(BIN_DIR, 'orchestration');
|
|
185
|
+
const orchestrationDst = path.join(PKG_DIR, 'orchestration');
|
|
186
|
+
if (fs.existsSync(orchestrationSrc)) {
|
|
187
|
+
if (fs.existsSync(orchestrationDst)) {
|
|
188
|
+
fs.rmSync(orchestrationDst, { recursive: true });
|
|
312
189
|
}
|
|
313
|
-
|
|
314
|
-
|
|
190
|
+
fs.renameSync(orchestrationSrc, orchestrationDst);
|
|
191
|
+
console.log('[openflows] Installed orchestration config');
|
|
315
192
|
}
|
|
316
193
|
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
// Check prerequisites
|
|
323
|
-
checkPrerequisites();
|
|
324
|
-
|
|
325
|
-
// Mark postinstall as done
|
|
326
|
-
fs.writeFileSync(POSTINSTALL_LOG, new Date().toISOString());
|
|
327
|
-
|
|
328
|
-
console.log(``);
|
|
329
|
-
console.log(`╔══════════════════════════════════════════════╗`);
|
|
330
|
-
console.log(`║ Installation Complete! ║`);
|
|
331
|
-
console.log(`╚══════════════════════════════════════════════╝`);
|
|
332
|
-
console.log(``);
|
|
333
|
-
console.log(` Available commands:`);
|
|
334
|
-
console.log(` openflows - Start orchestration`);
|
|
335
|
-
console.log(` openflows-setup - Guided setup wizard`);
|
|
336
|
-
console.log(` openflows-dashboard - Live monitoring TUI`);
|
|
337
|
-
console.log(` openflows-doctor - Diagnostic checks`);
|
|
338
|
-
console.log(``);
|
|
339
|
-
console.log(` Quick start:`);
|
|
340
|
-
console.log(` 1. openflows-setup # Configure API keys`);
|
|
341
|
-
console.log(` 2. openflows # Start the autonomous team`);
|
|
342
|
-
console.log(``);
|
|
343
|
-
console.log(` Docs: https://openflows.dev`);
|
|
344
|
-
console.log(``);
|
|
194
|
+
if (fs.existsSync(tmpFile)) {
|
|
195
|
+
fs.unlinkSync(tmpFile);
|
|
196
|
+
}
|
|
197
|
+
console.log(`[openflows] Installation complete!`);
|
|
345
198
|
}
|
|
346
199
|
|
|
347
|
-
main()
|
|
348
|
-
console.error('[openflows] Installation failed:', err.message);
|
|
349
|
-
process.exit(1);
|
|
350
|
-
});
|
|
200
|
+
main();
|
package/.env.example
DELETED
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
# OpenFlows Configuration
|
|
2
|
-
# Copy this file to .env and fill in your values
|
|
3
|
-
#
|
|
4
|
-
# Quick Start Options:
|
|
5
|
-
# ===================
|
|
6
|
-
#
|
|
7
|
-
# Option 1: Fireworks AI (Recommended - no proxy needed)
|
|
8
|
-
# ------------------------------------------------------
|
|
9
|
-
# Get your key from: https://fireworks.ai
|
|
10
|
-
FIREWORKS_API_KEY=your-fireworks-api-key
|
|
11
|
-
|
|
12
|
-
# Option 2: Anthropic Direct
|
|
13
|
-
# --------------------------
|
|
14
|
-
# Get your key from: https://console.anthropic.com
|
|
15
|
-
# ANTHROPIC_API_KEY=your-anthropic-api-key
|
|
16
|
-
|
|
17
|
-
# Option 3: Custom Gateway (requires built-in proxy)
|
|
18
|
-
# --------------------------------------------------
|
|
19
|
-
# The proxy will auto-start when you use this option
|
|
20
|
-
# GATEWAY_URL=https://your-gateway.com/v1
|
|
21
|
-
# GATEWAY_API_KEY=your-gateway-api-key
|
|
22
|
-
|
|
23
|
-
# ===================
|
|
24
|
-
# Required Settings
|
|
25
|
-
# ===================
|
|
26
|
-
|
|
27
|
-
# GitHub Personal Access Token (required)
|
|
28
|
-
# Get from: https://github.com/settings/tokens
|
|
29
|
-
# Needs: repo, read:user, read:org
|
|
30
|
-
GITHUB_PERSONAL_ACCESS_TOKEN=your-github-pat
|
|
31
|
-
|
|
32
|
-
# Target repository (owner/repo format)
|
|
33
|
-
GITHUB_REPOSITORY=owner/repo-name
|
|
34
|
-
|
|
35
|
-
# ===================
|
|
36
|
-
# Optional Settings
|
|
37
|
-
# ===================
|
|
38
|
-
|
|
39
|
-
# Logging level (trace, debug, info, warn, error)
|
|
40
|
-
RUST_LOG=info
|
|
41
|
-
|
|
42
|
-
# Proxy port (if using built-in proxy)
|
|
43
|
-
# PROXY_PORT=8765
|
|
44
|
-
|
|
45
|
-
# GitHub MCP type: "hosted" (default) or "docker"
|
|
46
|
-
# GITHUB_MCP_TYPE=hosted
|
|
47
|
-
|
|
48
|
-
# ===================
|
|
49
|
-
# Advanced
|
|
50
|
-
# ===================
|
|
51
|
-
|
|
52
|
-
# Custom model backend (overrides registry)
|
|
53
|
-
# MODEL_BACKEND=accounts/fireworks/models/glm-5
|
|
54
|
-
|
|
55
|
-
# Model provider mapping (for proxy mode)
|
|
56
|
-
# Format: prefix=provider,prefix=provider
|
|
57
|
-
# MODEL_PROVIDER_MAP=glm=openai,gpt=openai,claude=anthropic
|
|
58
|
-
|
|
59
|
-
# Fallback order for direct mode
|
|
60
|
-
# LLM_FALLBACK=anthropic,gemini,openai
|
package/README.md
DELETED
|
@@ -1,217 +0,0 @@
|
|
|
1
|
-
# @the-agenticflow/openflows
|
|
2
|
-
|
|
3
|
-
**Autonomous AI Development Team** — Install and run with zero configuration knowledge required.
|
|
4
|
-
|
|
5
|
-
## Quick Start
|
|
6
|
-
|
|
7
|
-
```bash
|
|
8
|
-
# 1. Install globally
|
|
9
|
-
npm install -g @the-agenticflow/openflows
|
|
10
|
-
|
|
11
|
-
# 2. Run setup wizard (configures API keys)
|
|
12
|
-
openflows-setup
|
|
13
|
-
|
|
14
|
-
# 3. Start the autonomous team
|
|
15
|
-
openflows
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
That's it! The package handles everything automatically.
|
|
19
|
-
|
|
20
|
-
## How It Works
|
|
21
|
-
|
|
22
|
-
### Zero-Configuration Philosophy
|
|
23
|
-
|
|
24
|
-
You don't need to know about proxies, MCP servers, or backend routing. The package:
|
|
25
|
-
|
|
26
|
-
1. **Installs all dependencies** - Including `mcp-proxy` for GitHub connectivity
|
|
27
|
-
2. **Auto-detects your setup** - Fireworks key? Direct mode. Gateway? Proxy starts automatically
|
|
28
|
-
3. **Manages the proxy lifecycle** - Starts/stops the built-in proxy as needed
|
|
29
|
-
4. **Provides helpful errors** - Clear messages when something needs attention
|
|
30
|
-
|
|
31
|
-
### Configuration Modes
|
|
32
|
-
|
|
33
|
-
| Mode | What You Need | Proxy Required? |
|
|
34
|
-
|------|---------------|-----------------|
|
|
35
|
-
| **Fireworks Direct** | `FIREWORKS_API_KEY` | No |
|
|
36
|
-
| **Anthropic Direct** | `ANTHROPIC_API_KEY` | No |
|
|
37
|
-
| **Custom Gateway** | `GATEWAY_URL` + `GATEWAY_API_KEY` | Auto-started |
|
|
38
|
-
|
|
39
|
-
### Commands
|
|
40
|
-
|
|
41
|
-
```bash
|
|
42
|
-
openflows # Start orchestration
|
|
43
|
-
openflows-setup # Interactive setup wizard (TUI)
|
|
44
|
-
openflows-dashboard # Real-time monitoring (TUI)
|
|
45
|
-
openflows-doctor # System diagnostics
|
|
46
|
-
openflows --help # Show help
|
|
47
|
-
openflows --version # Show version
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
## What Gets Installed
|
|
51
|
-
|
|
52
|
-
The post-install script downloads platform-specific binaries from GitHub Releases:
|
|
53
|
-
|
|
54
|
-
| Binary | Purpose |
|
|
55
|
-
|--------|---------|
|
|
56
|
-
| `agentflow` | Main orchestration engine |
|
|
57
|
-
| `agentflow-setup` | Interactive TUI setup wizard |
|
|
58
|
-
| `agentflow-dashboard` | Real-time monitoring TUI |
|
|
59
|
-
| `agentflow-doctor` | System diagnostics tool |
|
|
60
|
-
| `anthropic-proxy` | Built-in Anthropic-to-OpenAI proxy |
|
|
61
|
-
|
|
62
|
-
Additionally:
|
|
63
|
-
- **mcp-proxy** is installed via npm for GitHub MCP connectivity
|
|
64
|
-
- **.env.example** is included for reference
|
|
65
|
-
|
|
66
|
-
## Environment Configuration
|
|
67
|
-
|
|
68
|
-
Create a `.env` file in your project directory:
|
|
69
|
-
|
|
70
|
-
```bash
|
|
71
|
-
# Required
|
|
72
|
-
GITHUB_PERSONAL_ACCESS_TOKEN=ghp_xxxxx
|
|
73
|
-
GITHUB_REPOSITORY=owner/repo-name
|
|
74
|
-
|
|
75
|
-
# Choose one API provider
|
|
76
|
-
FIREWORKS_API_KEY=fw_xxxxx # Recommended - direct mode
|
|
77
|
-
# ANTHROPIC_API_KEY=sk-ant-xxxx # Direct mode
|
|
78
|
-
# GATEWAY_URL=... # Proxy auto-starts
|
|
79
|
-
# GATEWAY_API_KEY=... # For custom gateways
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
Run `openflows-setup` for a guided configuration experience.
|
|
83
|
-
|
|
84
|
-
## Advanced Options
|
|
85
|
-
|
|
86
|
-
### Disable Auto-Proxy
|
|
87
|
-
|
|
88
|
-
```bash
|
|
89
|
-
openflows --no-proxy
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
### Proxy-Only Mode (Testing)
|
|
93
|
-
|
|
94
|
-
```bash
|
|
95
|
-
openflows --proxy-only
|
|
96
|
-
# Starts only the built-in proxy on port 8765
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
### Custom Proxy Port
|
|
100
|
-
|
|
101
|
-
```bash
|
|
102
|
-
PROXY_PORT=9000 openflows
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
### Docker MCP (Alternative)
|
|
106
|
-
|
|
107
|
-
If you prefer Docker for GitHub MCP:
|
|
108
|
-
|
|
109
|
-
```bash
|
|
110
|
-
export GITHUB_MCP_TYPE=docker
|
|
111
|
-
openflows
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
## Troubleshooting
|
|
115
|
-
|
|
116
|
-
### `mcp-proxy` Installation Issues
|
|
117
|
-
|
|
118
|
-
The post-install script attempts to install `mcp-proxy` (Python tool from PyPI) automatically. If you see errors:
|
|
119
|
-
|
|
120
|
-
1. **Install manually:**
|
|
121
|
-
```bash
|
|
122
|
-
# Recommended (fastest)
|
|
123
|
-
uv tool install mcp-proxy
|
|
124
|
-
|
|
125
|
-
# Alternative
|
|
126
|
-
pipx install mcp-proxy
|
|
127
|
-
```
|
|
128
|
-
|
|
129
|
-
2. **Use Docker mode instead:**
|
|
130
|
-
```bash
|
|
131
|
-
export GITHUB_MCP_TYPE=docker
|
|
132
|
-
openflows
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
The `mcp-proxy` tool bridges stdio to HTTP MCP servers like GitHub Copilot's MCP endpoint.
|
|
136
|
-
|
|
137
|
-
### Permission Denied
|
|
138
|
-
|
|
139
|
-
Ensure you're not using `sudo` for npm install:
|
|
140
|
-
|
|
141
|
-
```bash
|
|
142
|
-
# Configure npm to use user-writable directory
|
|
143
|
-
mkdir -p ~/.npm-global
|
|
144
|
-
npm config set prefix '~/.npm-global'
|
|
145
|
-
echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc
|
|
146
|
-
source ~/.bashrc
|
|
147
|
-
|
|
148
|
-
# Now install without sudo
|
|
149
|
-
npm install -g @the-agenticflow/openflows
|
|
150
|
-
```
|
|
151
|
-
|
|
152
|
-
### Network Issues
|
|
153
|
-
|
|
154
|
-
If GitHub API is unreachable:
|
|
155
|
-
|
|
156
|
-
1. The installer falls back to a known version
|
|
157
|
-
2. Or build from source:
|
|
158
|
-
```bash
|
|
159
|
-
git clone https://github.com/The-AgenticFlow/AgentFlow.git
|
|
160
|
-
cd AgentFlow
|
|
161
|
-
cargo build --release
|
|
162
|
-
```
|
|
163
|
-
|
|
164
|
-
### GitHub 401 Unauthorized
|
|
165
|
-
|
|
166
|
-
Ensure your `GITHUB_PERSONAL_ACCESS_TOKEN` is valid with these scopes:
|
|
167
|
-
- `repo` (full repository access)
|
|
168
|
-
- `read:user`
|
|
169
|
-
- `read:org`
|
|
170
|
-
|
|
171
|
-
## Platform Support
|
|
172
|
-
|
|
173
|
-
| OS | Architecture | Status |
|
|
174
|
-
|----|--------------|--------|
|
|
175
|
-
| macOS | x86_64 (Intel) | ✅ |
|
|
176
|
-
| macOS | aarch64 (M1/M2) | ✅ |
|
|
177
|
-
| Linux | x86_64 (glibc) | ✅ |
|
|
178
|
-
| Linux | x86_64 (musl) | ✅ |
|
|
179
|
-
| Linux | aarch64 | ✅ |
|
|
180
|
-
|
|
181
|
-
## Development
|
|
182
|
-
|
|
183
|
-
### Testing Locally
|
|
184
|
-
|
|
185
|
-
```bash
|
|
186
|
-
cd packaging/npm
|
|
187
|
-
npm pack
|
|
188
|
-
npm install -g the-agenticflow-openflows-0.1.4.tgz
|
|
189
|
-
openflows-setup --help
|
|
190
|
-
```
|
|
191
|
-
|
|
192
|
-
### Publishing
|
|
193
|
-
|
|
194
|
-
1. Update version in `package.json`
|
|
195
|
-
2. Update fallback version in `scripts/install.js`
|
|
196
|
-
3. Test locally with `npm pack`
|
|
197
|
-
4. Publish: `npm publish --access public`
|
|
198
|
-
|
|
199
|
-
## Files Included
|
|
200
|
-
|
|
201
|
-
```
|
|
202
|
-
@the-agenticflow/openflows/
|
|
203
|
-
├── package.json # Package metadata
|
|
204
|
-
├── README.md # This file
|
|
205
|
-
├── .env.example # Configuration template
|
|
206
|
-
├── bin/
|
|
207
|
-
│ ├── openflows.js # Main wrapper (handles proxy)
|
|
208
|
-
│ ├── openflows-setup.js # Setup wizard wrapper
|
|
209
|
-
│ ├── openflows-dashboard.js # Dashboard wrapper
|
|
210
|
-
│ └── openflows-doctor.js # Doctor wrapper
|
|
211
|
-
└── scripts/
|
|
212
|
-
└── install.js # Post-install script
|
|
213
|
-
```
|
|
214
|
-
|
|
215
|
-
## License
|
|
216
|
-
|
|
217
|
-
MIT - See [LICENSE](https://github.com/The-AgenticFlow/AgentFlow/blob/main/LICENSE)
|
package/bin/LICENSE
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2026 Christian Yemele
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|