@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.
Files changed (87) hide show
  1. package/bin/openflows-dashboard.js +1 -1
  2. package/bin/openflows-setup.js +1 -1
  3. package/bin/openflows.js +4 -286
  4. package/package.json +3 -21
  5. package/scripts/install.js +59 -209
  6. package/.env.example +0 -60
  7. package/README.md +0 -217
  8. package/bin/LICENSE +0 -21
  9. package/bin/README.md +0 -535
  10. package/bin/agentflow-bin +0 -0
  11. package/bin/agentflow-dashboard-bin +0 -0
  12. package/bin/agentflow-doctor-bin +0 -0
  13. package/bin/agentflow-setup-bin +0 -0
  14. package/bin/orchestration/agent/agents/forge.agent.md +0 -110
  15. package/bin/orchestration/agent/agents/lore.agent.md +0 -27
  16. package/bin/orchestration/agent/agents/nexus.agent.md +0 -201
  17. package/bin/orchestration/agent/agents/sentinel.agent.md +0 -96
  18. package/bin/orchestration/agent/agents/vessel.agent.md +0 -38
  19. package/bin/orchestration/agent/registry.json +0 -10
  20. package/bin/orchestration/agent/standards/CODING.md +0 -22
  21. package/bin/orchestration/agent/standards/REVIEW.md +0 -15
  22. package/bin/orchestration/agent/standards/SECURITY.md +0 -72
  23. package/bin/orchestration/plugin/commands/assign.md +0 -45
  24. package/bin/orchestration/plugin/commands/check-ci.md +0 -26
  25. package/bin/orchestration/plugin/commands/document-pr.md +0 -32
  26. package/bin/orchestration/plugin/commands/gate-approve.md +0 -39
  27. package/bin/orchestration/plugin/commands/handoff.md +0 -75
  28. package/bin/orchestration/plugin/commands/merge.md +0 -47
  29. package/bin/orchestration/plugin/commands/plan.md +0 -66
  30. package/bin/orchestration/plugin/commands/segment-done.md +0 -50
  31. package/bin/orchestration/plugin/commands/status-check.md +0 -28
  32. package/bin/orchestration/plugin/commands/status.md +0 -94
  33. package/bin/orchestration/plugin/commands/update-changelog.md +0 -37
  34. package/bin/orchestration/plugin/hooks/forge/post_write_lint.sh +0 -76
  35. package/bin/orchestration/plugin/hooks/forge/pre_bash_guard.sh +0 -81
  36. package/bin/orchestration/plugin/hooks/forge/pre_compact_handoff.sh +0 -28
  37. package/bin/orchestration/plugin/hooks/forge/pre_write_check.sh +0 -77
  38. package/bin/orchestration/plugin/hooks/forge/session_start.sh +0 -59
  39. package/bin/orchestration/plugin/hooks/forge/stop_require_artifact.sh +0 -75
  40. package/bin/orchestration/plugin/hooks/lore/session-start.sh +0 -13
  41. package/bin/orchestration/plugin/hooks/nexus/init-session.sh +0 -23
  42. package/bin/orchestration/plugin/hooks/nexus/log-decision.sh +0 -10
  43. package/bin/orchestration/plugin/hooks/sentinel/post_write_validate.sh +0 -59
  44. package/bin/orchestration/plugin/hooks/sentinel/pre_bash_readonly_guard.sh +0 -107
  45. package/bin/orchestration/plugin/hooks/sentinel/session_start.sh +0 -74
  46. package/bin/orchestration/plugin/hooks/sentinel/stop_require_eval.sh +0 -57
  47. package/bin/orchestration/plugin/hooks/vessel/log-merge-status.sh +0 -7
  48. package/bin/orchestration/plugin/hooks/vessel/session-start.sh +0 -14
  49. package/bin/orchestration/plugin/mcp/mcp.json.template +0 -26
  50. package/bin/orchestration/plugin/plugin.json +0 -66
  51. package/bin/orchestration/plugin/skills/forge-algorithmic-art.md +0 -24
  52. package/bin/orchestration/plugin/skills/forge-canvas-design.md +0 -25
  53. package/bin/orchestration/plugin/skills/forge-coding.md +0 -161
  54. package/bin/orchestration/plugin/skills/forge-frontend-design.md +0 -30
  55. package/bin/orchestration/plugin/skills/forge-mcp-builder.md +0 -37
  56. package/bin/orchestration/plugin/skills/forge-planning.md +0 -102
  57. package/bin/orchestration/plugin/skills/forge-skill-creator.md +0 -25
  58. package/bin/orchestration/plugin/skills/forge-web-artifacts-builder.md +0 -29
  59. package/bin/orchestration/plugin/skills/lore-brand-guidelines.md +0 -33
  60. package/bin/orchestration/plugin/skills/lore-changelog.md +0 -69
  61. package/bin/orchestration/plugin/skills/lore-doc-coauthoring.md +0 -33
  62. package/bin/orchestration/plugin/skills/lore-documentation.md +0 -57
  63. package/bin/orchestration/plugin/skills/lore-docx.md +0 -20
  64. package/bin/orchestration/plugin/skills/lore-pdf.md +0 -20
  65. package/bin/orchestration/plugin/skills/lore-pptx.md +0 -23
  66. package/bin/orchestration/plugin/skills/lore-theme-factory.md +0 -20
  67. package/bin/orchestration/plugin/skills/lore-xlsx.md +0 -20
  68. package/bin/orchestration/plugin/skills/nexus-doc-coauthoring.md +0 -21
  69. package/bin/orchestration/plugin/skills/nexus-internal-comms.md +0 -28
  70. package/bin/orchestration/plugin/skills/nexus-orchestration.md +0 -63
  71. package/bin/orchestration/plugin/skills/nexus-skill-creator.md +0 -15
  72. package/bin/orchestration/plugin/skills/nexus-slack-gif-creator.md +0 -21
  73. package/bin/orchestration/plugin/skills/nexus-triage.md +0 -56
  74. package/bin/orchestration/plugin/skills/nexus-xlsx.md +0 -20
  75. package/bin/orchestration/plugin/skills/sentinel-algorithmic-art.md +0 -20
  76. package/bin/orchestration/plugin/skills/sentinel-criteria.md +0 -115
  77. package/bin/orchestration/plugin/skills/sentinel-frontend-design.md +0 -20
  78. package/bin/orchestration/plugin/skills/sentinel-review.md +0 -124
  79. package/bin/orchestration/plugin/skills/sentinel-web-artifacts-builder.md +0 -20
  80. package/bin/orchestration/plugin/skills/sentinel-webapp-testing.md +0 -34
  81. package/bin/orchestration/plugin/skills/shared-claude-api.md +0 -25
  82. package/bin/orchestration/plugin/skills/vessel-ci-gate.md +0 -68
  83. package/bin/orchestration/plugin/skills/vessel-internal-comms.md +0 -20
  84. package/bin/orchestration/plugin/skills/vessel-mcp-builder.md +0 -21
  85. package/bin/orchestration/plugin/skills/vessel-merge-protocol.md +0 -113
  86. package/bin/orchestration/plugin/skills/vessel-pdf.md +0 -20
  87. package/bin/orchestration/plugin/skills/vessel-webapp-testing.md +0 -34
@@ -1,22 +1,17 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * Post-install script for @the-agenticflow/openflows
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, spawn } = require('child_process');
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 POSTINSTALL_LOG = path.join(__dirname, '..', '.postinstall-done');
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
- * Install mcp-proxy - required for GitHub MCP connectivity
103
- *
104
- * mcp-proxy is a Python tool from PyPI (sparfenyuk/mcp-proxy)
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
- * Check if essential tools are available
178
- */
179
- function checkPrerequisites() {
180
- const checks = [
181
- { name: 'git', cmd: 'git --version' },
182
- { name: 'node', cmd: 'node --version' },
183
- ];
184
-
185
- console.log(`[openflows] Checking prerequisites...`);
186
-
187
- let allPassed = true;
188
- for (const check of checks) {
189
- try {
190
- execSync(check.cmd, { stdio: 'pipe' });
191
- console.log(`[openflows] ${check.name} available`);
192
- } catch {
193
- console.warn(`[openflows] ✗ ${check.name} not found - please install it`);
194
- allPassed = false;
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
- console.log(``);
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 latest release tag with better error handling
134
+ // Get release tag based on channel
226
135
  let tag;
227
136
  try {
228
- tag = await new Promise((resolve, reject) => {
229
- const req = https.get(`https://api.github.com/repos/${REPO}/releases/latest`, {
230
- headers: {
231
- 'User-Agent': 'openflows-npm-installer',
232
- 'Accept': 'application/vnd.github.v3+json'
233
- }
234
- }, (res) => {
235
- if (res.statusCode !== 200) {
236
- reject(new Error(`GitHub API returned ${res.statusCode}`));
237
- return;
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
- // Use package's temp directory instead of system /tmp to avoid permission issues
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(tmpDir, muslArchiveName);
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 = ['agentflow', 'agentflow-setup', 'agentflow-dashboard', 'agentflow-doctor'];
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
- if (fs.existsSync(tmpFile)) {
306
- fs.unlinkSync(tmpFile);
307
- }
308
- // Clean up temp directory if empty
309
- try {
310
- if (fs.existsSync(tmpDir) && fs.readdirSync(tmpDir).length === 0) {
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
- } catch (cleanupErr) {
314
- // Ignore cleanup errors
190
+ fs.renameSync(orchestrationSrc, orchestrationDst);
191
+ console.log('[openflows] Installed orchestration config');
315
192
  }
316
193
 
317
- console.log(`[openflows] ✓ Binaries installed`);
318
-
319
- // Install mcp-proxy
320
- await ensureMcpProxy();
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().catch(err => {
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.