@the-agenticflow/openflows 0.1.3 → 0.1.6
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/.env.example +60 -0
- package/README.md +156 -113
- package/bin/LICENSE +21 -0
- package/bin/README.md +535 -0
- 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/openflows.js +285 -3
- package/bin/orchestration/agent/agents/forge.agent.md +110 -0
- package/bin/orchestration/agent/agents/lore.agent.md +27 -0
- package/bin/orchestration/agent/agents/nexus.agent.md +201 -0
- package/bin/orchestration/agent/agents/sentinel.agent.md +96 -0
- package/bin/orchestration/agent/agents/vessel.agent.md +38 -0
- package/bin/orchestration/agent/registry.json +10 -0
- package/bin/orchestration/agent/standards/CODING.md +22 -0
- package/bin/orchestration/agent/standards/REVIEW.md +15 -0
- package/bin/orchestration/agent/standards/SECURITY.md +72 -0
- package/bin/orchestration/plugin/commands/assign.md +45 -0
- package/bin/orchestration/plugin/commands/check-ci.md +26 -0
- package/bin/orchestration/plugin/commands/document-pr.md +32 -0
- package/bin/orchestration/plugin/commands/gate-approve.md +39 -0
- package/bin/orchestration/plugin/commands/handoff.md +75 -0
- package/bin/orchestration/plugin/commands/merge.md +47 -0
- package/bin/orchestration/plugin/commands/plan.md +66 -0
- package/bin/orchestration/plugin/commands/segment-done.md +50 -0
- package/bin/orchestration/plugin/commands/status-check.md +28 -0
- package/bin/orchestration/plugin/commands/status.md +94 -0
- package/bin/orchestration/plugin/commands/update-changelog.md +37 -0
- package/bin/orchestration/plugin/hooks/forge/post_write_lint.sh +76 -0
- package/bin/orchestration/plugin/hooks/forge/pre_bash_guard.sh +81 -0
- package/bin/orchestration/plugin/hooks/forge/pre_compact_handoff.sh +28 -0
- package/bin/orchestration/plugin/hooks/forge/pre_write_check.sh +77 -0
- package/bin/orchestration/plugin/hooks/forge/session_start.sh +59 -0
- package/bin/orchestration/plugin/hooks/forge/stop_require_artifact.sh +75 -0
- package/bin/orchestration/plugin/hooks/lore/session-start.sh +13 -0
- package/bin/orchestration/plugin/hooks/nexus/init-session.sh +23 -0
- package/bin/orchestration/plugin/hooks/nexus/log-decision.sh +10 -0
- package/bin/orchestration/plugin/hooks/sentinel/post_write_validate.sh +59 -0
- package/bin/orchestration/plugin/hooks/sentinel/pre_bash_readonly_guard.sh +107 -0
- package/bin/orchestration/plugin/hooks/sentinel/session_start.sh +74 -0
- package/bin/orchestration/plugin/hooks/sentinel/stop_require_eval.sh +57 -0
- package/bin/orchestration/plugin/hooks/vessel/log-merge-status.sh +7 -0
- package/bin/orchestration/plugin/hooks/vessel/session-start.sh +14 -0
- package/bin/orchestration/plugin/mcp/mcp.json.template +26 -0
- package/bin/orchestration/plugin/plugin.json +66 -0
- package/bin/orchestration/plugin/skills/forge-algorithmic-art.md +24 -0
- package/bin/orchestration/plugin/skills/forge-canvas-design.md +25 -0
- package/bin/orchestration/plugin/skills/forge-coding.md +161 -0
- package/bin/orchestration/plugin/skills/forge-frontend-design.md +30 -0
- package/bin/orchestration/plugin/skills/forge-mcp-builder.md +37 -0
- package/bin/orchestration/plugin/skills/forge-planning.md +102 -0
- package/bin/orchestration/plugin/skills/forge-skill-creator.md +25 -0
- package/bin/orchestration/plugin/skills/forge-web-artifacts-builder.md +29 -0
- package/bin/orchestration/plugin/skills/lore-brand-guidelines.md +33 -0
- package/bin/orchestration/plugin/skills/lore-changelog.md +69 -0
- package/bin/orchestration/plugin/skills/lore-doc-coauthoring.md +33 -0
- package/bin/orchestration/plugin/skills/lore-documentation.md +57 -0
- package/bin/orchestration/plugin/skills/lore-docx.md +20 -0
- package/bin/orchestration/plugin/skills/lore-pdf.md +20 -0
- package/bin/orchestration/plugin/skills/lore-pptx.md +23 -0
- package/bin/orchestration/plugin/skills/lore-theme-factory.md +20 -0
- package/bin/orchestration/plugin/skills/lore-xlsx.md +20 -0
- package/bin/orchestration/plugin/skills/nexus-doc-coauthoring.md +21 -0
- package/bin/orchestration/plugin/skills/nexus-internal-comms.md +28 -0
- package/bin/orchestration/plugin/skills/nexus-orchestration.md +63 -0
- package/bin/orchestration/plugin/skills/nexus-skill-creator.md +15 -0
- package/bin/orchestration/plugin/skills/nexus-slack-gif-creator.md +21 -0
- package/bin/orchestration/plugin/skills/nexus-triage.md +56 -0
- package/bin/orchestration/plugin/skills/nexus-xlsx.md +20 -0
- package/bin/orchestration/plugin/skills/sentinel-algorithmic-art.md +20 -0
- package/bin/orchestration/plugin/skills/sentinel-criteria.md +115 -0
- package/bin/orchestration/plugin/skills/sentinel-frontend-design.md +20 -0
- package/bin/orchestration/plugin/skills/sentinel-review.md +124 -0
- package/bin/orchestration/plugin/skills/sentinel-web-artifacts-builder.md +20 -0
- package/bin/orchestration/plugin/skills/sentinel-webapp-testing.md +34 -0
- package/bin/orchestration/plugin/skills/shared-claude-api.md +25 -0
- package/bin/orchestration/plugin/skills/vessel-ci-gate.md +68 -0
- package/bin/orchestration/plugin/skills/vessel-internal-comms.md +20 -0
- package/bin/orchestration/plugin/skills/vessel-mcp-builder.md +21 -0
- package/bin/orchestration/plugin/skills/vessel-merge-protocol.md +113 -0
- package/bin/orchestration/plugin/skills/vessel-pdf.md +20 -0
- package/bin/orchestration/plugin/skills/vessel-webapp-testing.md +34 -0
- package/package.json +8 -3
- package/scripts/install.js +162 -9
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@the-agenticflow/openflows",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.6",
|
|
4
4
|
"description": "Autonomous AI development team — turns GitHub issues into working PRs",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"bin": {
|
|
@@ -21,7 +21,10 @@
|
|
|
21
21
|
"autonomous",
|
|
22
22
|
"development",
|
|
23
23
|
"agents",
|
|
24
|
-
"github"
|
|
24
|
+
"github",
|
|
25
|
+
"claude",
|
|
26
|
+
"fireworks",
|
|
27
|
+
"anthropic"
|
|
25
28
|
],
|
|
26
29
|
"author": "The AgenticFlow Team",
|
|
27
30
|
"license": "MIT",
|
|
@@ -32,7 +35,8 @@
|
|
|
32
35
|
"files": [
|
|
33
36
|
"bin/",
|
|
34
37
|
"scripts/",
|
|
35
|
-
"README.md"
|
|
38
|
+
"README.md",
|
|
39
|
+
".env.example"
|
|
36
40
|
],
|
|
37
41
|
"engines": {
|
|
38
42
|
"node": ">=18.0.0"
|
|
@@ -45,6 +49,7 @@
|
|
|
45
49
|
"x64",
|
|
46
50
|
"arm64"
|
|
47
51
|
],
|
|
52
|
+
"dependencies": {},
|
|
48
53
|
"optionalDependencies": {
|
|
49
54
|
"@openflows/linux-x64-gnu": "0.1.0",
|
|
50
55
|
"@openflows/linux-x64-musl": "0.1.0",
|
package/scripts/install.js
CHANGED
|
@@ -1,16 +1,22 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
|
-
* Post-install script
|
|
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
|
|
4
9
|
*/
|
|
5
10
|
const https = require('https');
|
|
6
11
|
const http = require('http');
|
|
7
12
|
const fs = require('fs');
|
|
8
13
|
const path = require('path');
|
|
9
14
|
const os = require('os');
|
|
10
|
-
const { execSync } = require('child_process');
|
|
15
|
+
const { execSync, spawn } = require('child_process');
|
|
11
16
|
|
|
12
17
|
const REPO = 'The-AgenticFlow/AgentFlow';
|
|
13
18
|
const BIN_DIR = path.join(__dirname, '..', 'bin');
|
|
19
|
+
const POSTINSTALL_LOG = path.join(__dirname, '..', '.postinstall-done');
|
|
14
20
|
|
|
15
21
|
function detectPlatform() {
|
|
16
22
|
const platform = os.platform();
|
|
@@ -92,9 +98,124 @@ function extractTarGz(tarPath, destDir) {
|
|
|
92
98
|
});
|
|
93
99
|
}
|
|
94
100
|
|
|
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
|
+
}
|
|
175
|
+
|
|
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;
|
|
199
|
+
}
|
|
200
|
+
|
|
95
201
|
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
|
+
|
|
96
211
|
const platform = detectPlatform();
|
|
97
|
-
console.log(
|
|
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}`);
|
|
98
219
|
|
|
99
220
|
// Ensure bin directory exists
|
|
100
221
|
if (!fs.existsSync(BIN_DIR)) {
|
|
@@ -137,9 +258,9 @@ async function main() {
|
|
|
137
258
|
});
|
|
138
259
|
});
|
|
139
260
|
} catch (apiErr) {
|
|
140
|
-
console.error(`[
|
|
141
|
-
console.error('[
|
|
142
|
-
tag = 'v0.1.
|
|
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';
|
|
143
264
|
}
|
|
144
265
|
|
|
145
266
|
const archiveName = `openflows-${tag}-${platform}.tar.gz`;
|
|
@@ -152,6 +273,7 @@ async function main() {
|
|
|
152
273
|
const tmpFile = path.join(tmpDir, archiveName);
|
|
153
274
|
|
|
154
275
|
try {
|
|
276
|
+
console.log(`[openflows] Downloading binary for ${platform}...`);
|
|
155
277
|
await download(downloadUrl, tmpFile);
|
|
156
278
|
await extractTarGz(tmpFile, BIN_DIR);
|
|
157
279
|
} catch (err) {
|
|
@@ -160,7 +282,7 @@ async function main() {
|
|
|
160
282
|
const muslArchiveName = `openflows-${tag}-x86_64-unknown-linux-musl.tar.gz`;
|
|
161
283
|
const muslDownloadUrl = `https://github.com/${REPO}/releases/download/${tag}/${muslArchiveName}`;
|
|
162
284
|
const muslTmpFile = path.join(tmpDir, muslArchiveName);
|
|
163
|
-
console.log(`[
|
|
285
|
+
console.log(`[openflows] Trying musl fallback...`);
|
|
164
286
|
await download(muslDownloadUrl, muslTmpFile);
|
|
165
287
|
await extractTarGz(muslTmpFile, BIN_DIR);
|
|
166
288
|
fs.unlinkSync(muslTmpFile);
|
|
@@ -191,7 +313,38 @@ async function main() {
|
|
|
191
313
|
} catch (cleanupErr) {
|
|
192
314
|
// Ignore cleanup errors
|
|
193
315
|
}
|
|
194
|
-
|
|
316
|
+
|
|
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(``);
|
|
195
345
|
}
|
|
196
346
|
|
|
197
|
-
main()
|
|
347
|
+
main().catch(err => {
|
|
348
|
+
console.error('[openflows] Installation failed:', err.message);
|
|
349
|
+
process.exit(1);
|
|
350
|
+
});
|