agi-farm 1.10.0 → 3.3.1
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 +58 -0
- package/dist/index.d.ts +13 -22
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +44 -59
- package/dist/index.js.map +1 -1
- package/openclaw.plugin.json +67 -38
- package/package.json +12 -25
- package/scripts/agi-farm.js +48 -32
- package/scripts/lib/blueprints.js +421 -0
- package/scripts/lib/cron-defs.js +42 -0
- package/scripts/paperclip.js +68 -0
- package/scripts/setup.js +616 -360
- package/scripts/sync-lobsterboard-upstream.js +7 -1
- package/server/paperclip-bridge.js +390 -0
- package/server/paperclip-sync.js +132 -0
- package/skills/agi-farm/tools/create_company.js +94 -0
- package/skills/agi-farm/tools/create_project.js +88 -0
- package/skills/agi-farm/tools/create_task.js +106 -0
- package/skills/agi-farm/tools/hire_specialist.js +138 -0
- package/skills/agi-farm/tools/lib/resolve-company.js +90 -0
- package/skills/agi-farm/tools/list_projects.js +63 -0
- package/skills/agi-farm/tools/manage_board.js +110 -0
- package/skills/agi-farm/tools/update_task.js +126 -0
- package/templates/SOUL.md.main +84 -0
- package/dashboard-dist/assets/Agents-s1Pcdrga.js +0 -1
- package/dashboard-dist/assets/Alerts-T-KcEJKx.js +0 -1
- package/dashboard-dist/assets/Approvals-e-y0qIwz.js +0 -1
- package/dashboard-dist/assets/AuditLog-Cc1GUGYz.js +0 -1
- package/dashboard-dist/assets/Budget-DRJWqsop.js +0 -1
- package/dashboard-dist/assets/Comms-DT2o5TCi.js +0 -1
- package/dashboard-dist/assets/Crons-BsUNSrso.js +0 -1
- package/dashboard-dist/assets/Decisions-B3i1Rijg.js +0 -3
- package/dashboard-dist/assets/Failures-CaEvQ0t1.js +0 -2
- package/dashboard-dist/assets/HITL-BX5-FQjS.js +0 -1
- package/dashboard-dist/assets/Jobs-Ch4D8P85.js +0 -1
- package/dashboard-dist/assets/Knowledge-C92uZhl9.js +0 -1
- package/dashboard-dist/assets/Memory-DFU5CtTT.js +0 -2
- package/dashboard-dist/assets/OKRs-Dt0HzTQQ.js +0 -1
- package/dashboard-dist/assets/Overview-Cp6HOIJF.js +0 -2
- package/dashboard-dist/assets/Policies-CbemgLkX.js +0 -1
- package/dashboard-dist/assets/Processes-btq7Pyex.js +0 -1
- package/dashboard-dist/assets/Projects-DGWbAWDb.js +0 -1
- package/dashboard-dist/assets/Security-BVLBAnlu.js +0 -1
- package/dashboard-dist/assets/Settings-DWsfHIfK.js +0 -1
- package/dashboard-dist/assets/Tasks-DFJ-nyg0.js +0 -1
- package/dashboard-dist/assets/Usage-Cvfmkgit.js +0 -1
- package/dashboard-dist/assets/Velocity-DzCZH_YB.js +0 -1
- package/dashboard-dist/assets/charts-CjCN_e1M.js +0 -36
- package/dashboard-dist/assets/index-Cti3NWck.css +0 -1
- package/dashboard-dist/assets/index-DUjHkafG.js +0 -2
- package/dashboard-dist/assets/vendor-gUVFsxOc.js +0 -9
- package/dashboard-dist/index.html +0 -16
- package/dashboard-dist/vite.svg +0 -1
- package/scripts/dashboard.js +0 -49
- package/server/dashboard.js +0 -2523
- package/server/services/audit.js +0 -17
- package/server/services/intake.js +0 -156
- package/server/services/metering.js +0 -64
- package/server/services/projects.js +0 -220
- package/server/services/timeline.js +0 -71
- package/server/updater.js +0 -154
package/README.md
CHANGED
|
@@ -17,6 +17,9 @@
|
|
|
17
17
|
|
|
18
18
|
---
|
|
19
19
|
|
|
20
|
+
> [!WARNING]
|
|
21
|
+
> **Notice: AGI Farm is currently under active development and still has known bugs.** Please use with caution in production environments.
|
|
22
|
+
|
|
20
23
|
## 🎯 What It Does
|
|
21
24
|
|
|
22
25
|
**AGI Farm** is an [OpenClaw](https://docs.openclaw.ai) plugin that bootstraps a fully operational multi-agent AI system with everything you need:
|
|
@@ -60,6 +63,56 @@ This keeps upstream diffs visible in PRs so feature ports can be done continuous
|
|
|
60
63
|
|
|
61
64
|
---
|
|
62
65
|
|
|
66
|
+
## 🧙 What's New in v3.3.0
|
|
67
|
+
|
|
68
|
+
### 🚀 Automated Release & Workflow Hardening
|
|
69
|
+
|
|
70
|
+
Version 3.3.0 standardizes the release process and ensures all GitHub workflows are production-ready.
|
|
71
|
+
|
|
72
|
+
#### 🏗️ Automated Dashboard Launch
|
|
73
|
+
- **One-Click Wizard**: The `agi-farm setup` wizard now automatically opens the Paperclip dashboard in your default browser upon successful configuration.
|
|
74
|
+
- **Direct Dependencies**: Added `express` as a core dependency for improved dashboard server stability.
|
|
75
|
+
|
|
76
|
+
#### 🛡️ Workflow & Compatibility Hardening
|
|
77
|
+
- **OpenClaw Compatibility**: Improved version scrubbing (handles `v` prefixes and revision suffixes) for more robust integration testing.
|
|
78
|
+
- **Graceful Installation**: Workflows now handle missing NPM versions gracefully, skipping integration tests if a specific version is not yet published.
|
|
79
|
+
- **Global PATH Reliability**: Ensured global `npm` bin directories are correctly added to `GITHUB_PATH` across all workflow steps.
|
|
80
|
+
|
|
81
|
+
#### 🔐 Security Enhancements
|
|
82
|
+
- **Automated Secret Scrubbing**: Upstream sync scripts (`scripts/sync-lobsterboard-upstream.js`) now redact Google OAuth Client IDs and Secrets to prevent GitHub Push Protection violations.
|
|
83
|
+
- **Refined Command Execution**: All `agi-farm` commands in workflows now use `npx` for guaranteed executability.
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## 🧙 What's New in v1.9.0
|
|
88
|
+
|
|
89
|
+
### 🚀 Advanced Wizard 2.0 — Industry-Driven Automation
|
|
90
|
+
|
|
91
|
+
The setup wizard has been completely overhauled from a basic 4-template system to a sophisticated, 6-phase onboarding experience that activates the full depth of the AGI Farm plugin.
|
|
92
|
+
|
|
93
|
+
#### 🏗️ 15 Industry-Specific Blueprints
|
|
94
|
+
Choose from professional team compositions across 5 major verticals:
|
|
95
|
+
- **Software Engineering**: Startup MVP, Full-Stack Product, Mobile-First App, AI/ML System.
|
|
96
|
+
- **Marketing & Growth**: Marketing Campaign, Brand Launch, Performance Marketing.
|
|
97
|
+
- **Enterprise & Regulated**: Enterprise Feature, Security-Critical, Compliance & Audit.
|
|
98
|
+
- **Research & Development**: Quality-First, Research & Discovery.
|
|
99
|
+
- **Creative & Content**: Content Studio, Product Design Sprint.
|
|
100
|
+
|
|
101
|
+
#### ⚙️ Deep Plugin Integration
|
|
102
|
+
The wizard now automates what used to be manual post-setup tasks:
|
|
103
|
+
- **Budget & OKRs**: Set monthly spend limits and seed your team with industry-specific OKRs immediately.
|
|
104
|
+
- **Operational Automation**: Select and activate pre-built cron jobs (daily security scans, weekly velocity reports, auto-dispatcher heartbeats).
|
|
105
|
+
- **HITL Security Policy**: Choose your "Human-in-the-Loop" sensitivity level (Low/Medium/High) during setup.
|
|
106
|
+
- **Project Seeding**: Start with a pre-populated project and task backlog tailored to your chosen blueprint.
|
|
107
|
+
- **AgentShield Integration**: One-click initial security scan to baseline your new workspace.
|
|
108
|
+
|
|
109
|
+
#### 🧹 Consolidated Architecture
|
|
110
|
+
- Legacy `setup-enhanced.js` has been consolidated into the main `setup.js`.
|
|
111
|
+
- Performance improvements in agent creation and SOUL.md template generation.
|
|
112
|
+
- Expanded `WORKFLOW_TEMPLATES.md` documentation covering all 15 new blueprints.
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
63
116
|
## 🆕 What's New in v1.8.0
|
|
64
117
|
|
|
65
118
|
### 🎨 Complete Dashboard Redesign — Day Theme (Minimalism 3.0 + Glassmorphism 2.0)
|
|
@@ -665,6 +718,11 @@ The dashboard enables direct control over team operations via authenticated REST
|
|
|
665
718
|
- `GET /api/templates` / `GET /api/templates/:id` — List and inspect dashboard templates
|
|
666
719
|
- `POST /api/templates/export` / `POST /api/templates/import` — Export/import template settings
|
|
667
720
|
|
|
721
|
+
**Integrated LobsterBoard Runtime (same host/process):**
|
|
722
|
+
- Full LobsterBoard runtime is mounted internally at `GET /lobsterboard/`
|
|
723
|
+
- Dashboard tab `LobsterBoard` loads this internal route (no separate user-facing port required)
|
|
724
|
+
- API/static calls from LobsterBoard are proxied through AGI Farm server under the same origin
|
|
725
|
+
|
|
668
726
|
**Auto-Update:**
|
|
669
727
|
- `GET /api/update-check` — Force a fresh GitHub release check
|
|
670
728
|
- `POST /api/update-install` — Install latest version via npm
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* AGI Farm - OpenClaw Plugin
|
|
3
3
|
*
|
|
4
|
-
* Multi-agent AI team builder
|
|
4
|
+
* Multi-agent AI team builder powered by Paperclip dashboard.
|
|
5
5
|
*
|
|
6
6
|
* @packageDocumentation
|
|
7
7
|
*/
|
|
@@ -32,30 +32,30 @@ export interface OpenClawExtension {
|
|
|
32
32
|
onUnload(): Promise<void>;
|
|
33
33
|
}
|
|
34
34
|
export interface AGIFarmConfig {
|
|
35
|
-
/** Port for
|
|
36
|
-
|
|
37
|
-
/** Host to bind
|
|
38
|
-
|
|
39
|
-
/** Auto-start
|
|
40
|
-
|
|
35
|
+
/** Port for Paperclip dashboard */
|
|
36
|
+
paperclipPort: number;
|
|
37
|
+
/** Host to bind Paperclip server */
|
|
38
|
+
paperclipHost: string;
|
|
39
|
+
/** Auto-start Paperclip on plugin load */
|
|
40
|
+
autoStartPaperclip: boolean;
|
|
41
41
|
/** Check GitHub for plugin updates on startup */
|
|
42
42
|
autoCheckUpdates: boolean;
|
|
43
43
|
/** Path to OpenClaw workspace */
|
|
44
44
|
workspacePath?: string;
|
|
45
45
|
/** Path to AGI Farm bundle */
|
|
46
46
|
bundlePath?: string;
|
|
47
|
+
/** Paperclip deployment mode */
|
|
48
|
+
paperclipDeploymentMode?: "local_trusted" | "authenticated";
|
|
47
49
|
/** Feature flags */
|
|
48
50
|
featureJobs?: boolean;
|
|
49
51
|
featureSkills?: boolean;
|
|
50
52
|
featureMemory?: boolean;
|
|
51
53
|
featurePolicy?: boolean;
|
|
52
|
-
featureMetering?: boolean;
|
|
53
|
-
featureApprovals?: boolean;
|
|
54
54
|
}
|
|
55
55
|
/**
|
|
56
56
|
* AGI Farm Plugin Extension
|
|
57
57
|
*
|
|
58
|
-
* Provides multi-agent team bootstrapping
|
|
58
|
+
* Provides multi-agent team bootstrapping with Paperclip-powered dashboard.
|
|
59
59
|
*/
|
|
60
60
|
declare class AGIFarmExtension implements OpenClawExtension {
|
|
61
61
|
id: string;
|
|
@@ -63,7 +63,7 @@ declare class AGIFarmExtension implements OpenClawExtension {
|
|
|
63
63
|
version: string;
|
|
64
64
|
private config;
|
|
65
65
|
private context;
|
|
66
|
-
private
|
|
66
|
+
private paperclipProcess;
|
|
67
67
|
constructor(config?: Partial<AGIFarmConfig>);
|
|
68
68
|
/**
|
|
69
69
|
* Called when plugin is loaded by OpenClaw
|
|
@@ -74,24 +74,15 @@ declare class AGIFarmExtension implements OpenClawExtension {
|
|
|
74
74
|
*/
|
|
75
75
|
onUnload(): Promise<void>;
|
|
76
76
|
/**
|
|
77
|
-
* Start the
|
|
78
|
-
*/
|
|
79
|
-
private startDashboard;
|
|
80
|
-
/**
|
|
81
|
-
* Register plugin commands (stub)
|
|
77
|
+
* Start the Paperclip server as a child process
|
|
82
78
|
*/
|
|
79
|
+
private startPaperclip;
|
|
83
80
|
private registerCommands;
|
|
84
81
|
/**
|
|
85
82
|
* Check GitHub for plugin updates (non-blocking, best-effort)
|
|
86
83
|
*/
|
|
87
84
|
private checkForUpdates;
|
|
88
|
-
/**
|
|
89
|
-
* Get dashboard URL
|
|
90
|
-
*/
|
|
91
85
|
getDashboardUrl(): string;
|
|
92
|
-
/**
|
|
93
|
-
* Check if dashboard is running
|
|
94
|
-
*/
|
|
95
86
|
isDashboardRunning(): boolean;
|
|
96
87
|
}
|
|
97
88
|
/**
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAaH,MAAM,WAAW,MAAM;IACrB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACtC,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE;QAC1B,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;QAClC,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;KAClC,KAAK,IAAI,CAAC;CACZ;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAED,MAAM,WAAW,aAAa;IAC5B,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAaH,MAAM,WAAW,MAAM;IACrB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACtC,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE;QAC1B,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;QAClC,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;KAClC,KAAK,IAAI,CAAC;CACZ;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAED,MAAM,WAAW,aAAa;IAC5B,mCAAmC;IACnC,aAAa,EAAE,MAAM,CAAC;IACtB,oCAAoC;IACpC,aAAa,EAAE,MAAM,CAAC;IACtB,0CAA0C;IAC1C,kBAAkB,EAAE,OAAO,CAAC;IAC5B,iDAAiD;IACjD,gBAAgB,EAAE,OAAO,CAAC;IAC1B,iCAAiC;IACjC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,8BAA8B;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gCAAgC;IAChC,uBAAuB,CAAC,EAAE,eAAe,GAAG,eAAe,CAAC;IAC5D,oBAAoB;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAoBD;;;;GAIG;AACH,cAAM,gBAAiB,YAAW,iBAAiB;IACjD,EAAE,SAAc;IAChB,IAAI,SAAyC;IAC7C,OAAO,SAAe;IAEtB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,OAAO,CAAiC;IAChD,OAAO,CAAC,gBAAgB,CAA6B;gBAEzC,MAAM,GAAE,OAAO,CAAC,aAAa,CAAM;IAI/C;;OAEG;IACG,MAAM,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBtD;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ/B;;OAEG;YACW,cAAc;IAiD5B,OAAO,CAAC,gBAAgB;IAIxB;;OAEG;YACW,eAAe;IA4C7B,eAAe,IAAI,MAAM;IAIzB,kBAAkB,IAAI,OAAO;CAG9B;AAED;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,iBAAiB,CAEzF;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CA4BrD;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* AGI Farm - OpenClaw Plugin
|
|
3
3
|
*
|
|
4
|
-
* Multi-agent AI team builder
|
|
4
|
+
* Multi-agent AI team builder powered by Paperclip dashboard.
|
|
5
5
|
*
|
|
6
6
|
* @packageDocumentation
|
|
7
7
|
*/
|
|
@@ -12,23 +12,22 @@ const require = createRequire(import.meta.url);
|
|
|
12
12
|
const PKG_VERSION = require("../package.json").version;
|
|
13
13
|
// ── Constants ─────────────────────────────────────────────────────────────────
|
|
14
14
|
const DEFAULT_CONFIG = {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
paperclipPort: 3100,
|
|
16
|
+
paperclipHost: "127.0.0.1",
|
|
17
|
+
autoStartPaperclip: true,
|
|
18
18
|
autoCheckUpdates: true,
|
|
19
|
+
paperclipDeploymentMode: "local_trusted",
|
|
19
20
|
featureJobs: true,
|
|
20
21
|
featureSkills: true,
|
|
21
22
|
featureMemory: true,
|
|
22
23
|
featurePolicy: true,
|
|
23
|
-
featureMetering: true,
|
|
24
|
-
featureApprovals: true,
|
|
25
24
|
};
|
|
26
25
|
const GITHUB_RELEASES_URL = "https://api.github.com/repos/oabdelmaksoud/AGI-FARM-PLUGIN/releases/latest";
|
|
27
26
|
// ── AGI Farm Extension ────────────────────────────────────────────────────────
|
|
28
27
|
/**
|
|
29
28
|
* AGI Farm Plugin Extension
|
|
30
29
|
*
|
|
31
|
-
* Provides multi-agent team bootstrapping
|
|
30
|
+
* Provides multi-agent team bootstrapping with Paperclip-powered dashboard.
|
|
32
31
|
*/
|
|
33
32
|
class AGIFarmExtension {
|
|
34
33
|
id = "agi-farm";
|
|
@@ -36,7 +35,7 @@ class AGIFarmExtension {
|
|
|
36
35
|
version = PKG_VERSION;
|
|
37
36
|
config;
|
|
38
37
|
context = null;
|
|
39
|
-
|
|
38
|
+
paperclipProcess = null;
|
|
40
39
|
constructor(config = {}) {
|
|
41
40
|
this.config = { ...DEFAULT_CONFIG, ...config };
|
|
42
41
|
}
|
|
@@ -46,13 +45,11 @@ class AGIFarmExtension {
|
|
|
46
45
|
async onLoad(context) {
|
|
47
46
|
this.context = context;
|
|
48
47
|
context.logger.info(`[agi-farm] Plugin loaded (v${this.version})`);
|
|
49
|
-
context.logger.info(`[agi-farm]
|
|
50
|
-
if (this.config.
|
|
51
|
-
await this.
|
|
48
|
+
context.logger.info(`[agi-farm] Paperclip: port=${this.config.paperclipPort}, autoStart=${this.config.autoStartPaperclip}`);
|
|
49
|
+
if (this.config.autoStartPaperclip) {
|
|
50
|
+
await this.startPaperclip();
|
|
52
51
|
}
|
|
53
|
-
// Register commands
|
|
54
52
|
this.registerCommands(context);
|
|
55
|
-
// Non-blocking update check
|
|
56
53
|
if (this.config.autoCheckUpdates) {
|
|
57
54
|
this.checkForUpdates().catch(() => { });
|
|
58
55
|
}
|
|
@@ -61,57 +58,53 @@ class AGIFarmExtension {
|
|
|
61
58
|
* Called when OpenClaw is shutting down
|
|
62
59
|
*/
|
|
63
60
|
async onUnload() {
|
|
64
|
-
if (this.
|
|
65
|
-
this.context?.logger.info("[agi-farm] Stopping
|
|
66
|
-
this.
|
|
67
|
-
this.
|
|
61
|
+
if (this.paperclipProcess) {
|
|
62
|
+
this.context?.logger.info("[agi-farm] Stopping Paperclip server...");
|
|
63
|
+
this.paperclipProcess.kill("SIGTERM");
|
|
64
|
+
this.paperclipProcess = null;
|
|
68
65
|
}
|
|
69
66
|
}
|
|
70
67
|
/**
|
|
71
|
-
* Start the
|
|
68
|
+
* Start the Paperclip server as a child process
|
|
72
69
|
*/
|
|
73
|
-
async
|
|
70
|
+
async startPaperclip() {
|
|
74
71
|
const { spawn } = await import("child_process");
|
|
75
72
|
const { join } = await import("path");
|
|
76
|
-
const
|
|
77
|
-
|
|
78
|
-
this.
|
|
73
|
+
const paperclipDir = join(__dirname, "..", "paperclip");
|
|
74
|
+
const paperclipEntry = join(paperclipDir, "server", "src", "index.ts");
|
|
75
|
+
this.context?.logger.info(`[agi-farm] Starting Paperclip on ${this.config.paperclipHost}:${this.config.paperclipPort}`);
|
|
76
|
+
this.paperclipProcess = spawn("node", ["--import", "tsx/esm", paperclipEntry], {
|
|
77
|
+
cwd: paperclipDir,
|
|
79
78
|
env: {
|
|
80
79
|
...process.env,
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
AGI_FARM_FEATURE_APPROVALS: this.config.featureApprovals ? "1" : "0",
|
|
80
|
+
PAPERCLIP_HOST: this.config.paperclipHost,
|
|
81
|
+
PORT: String(this.config.paperclipPort),
|
|
82
|
+
PAPERCLIP_PORT: String(this.config.paperclipPort),
|
|
83
|
+
PAPERCLIP_DEPLOYMENT_MODE: this.config.paperclipDeploymentMode || "local_trusted",
|
|
84
|
+
PAPERCLIP_DEPLOYMENT_EXPOSURE: "private",
|
|
85
|
+
SERVE_UI: "true",
|
|
86
|
+
PAPERCLIP_MIGRATION_AUTO_APPLY: "true",
|
|
87
|
+
PAPERCLIP_MIGRATION_PROMPT: "never",
|
|
90
88
|
},
|
|
91
89
|
stdio: ["ignore", "pipe", "pipe"],
|
|
92
90
|
});
|
|
93
|
-
this.
|
|
94
|
-
this.context?.logger.debug(`[agi-farm:
|
|
91
|
+
this.paperclipProcess.stdout?.on("data", (data) => {
|
|
92
|
+
this.context?.logger.debug(`[agi-farm:paperclip] ${data.toString().trim()}`);
|
|
95
93
|
});
|
|
96
|
-
this.
|
|
97
|
-
this.context?.logger.error(`[agi-farm:
|
|
94
|
+
this.paperclipProcess.stderr?.on("data", (data) => {
|
|
95
|
+
this.context?.logger.error(`[agi-farm:paperclip] ${data.toString().trim()}`);
|
|
98
96
|
});
|
|
99
|
-
this.
|
|
100
|
-
this.context?.logger.error(`[agi-farm:
|
|
97
|
+
this.paperclipProcess.on("error", (err) => {
|
|
98
|
+
this.context?.logger.error(`[agi-farm:paperclip] Failed to start: ${err.message}`);
|
|
101
99
|
});
|
|
102
|
-
this.
|
|
100
|
+
this.paperclipProcess.on("exit", (code) => {
|
|
103
101
|
if (code !== 0 && code !== null) {
|
|
104
|
-
this.context?.logger.warn(`[agi-farm:
|
|
102
|
+
this.context?.logger.warn(`[agi-farm:paperclip] Exited with code ${code}`);
|
|
105
103
|
}
|
|
106
|
-
this.
|
|
104
|
+
this.paperclipProcess = null;
|
|
107
105
|
});
|
|
108
106
|
}
|
|
109
|
-
/**
|
|
110
|
-
* Register plugin commands (stub)
|
|
111
|
-
*/
|
|
112
107
|
registerCommands(context) {
|
|
113
|
-
// Commands in this plugin are statically defined in openclaw.plugin.json
|
|
114
|
-
// This method stub exists for future programmatic runtime command registration if needed
|
|
115
108
|
context.logger.debug("[agi-farm] Commands registered statically via openclaw.plugin.json");
|
|
116
109
|
}
|
|
117
110
|
/**
|
|
@@ -132,7 +125,6 @@ class AGIFarmExtension {
|
|
|
132
125
|
const latest = (data.tag_name || "").replace(/^v/, "");
|
|
133
126
|
if (!latest)
|
|
134
127
|
return;
|
|
135
|
-
// Simple SemVer compare
|
|
136
128
|
const cur = this.version.split(".").map(Number);
|
|
137
129
|
const lat = latest.split(".").map(Number);
|
|
138
130
|
let isNewer = false;
|
|
@@ -145,7 +137,7 @@ class AGIFarmExtension {
|
|
|
145
137
|
break;
|
|
146
138
|
}
|
|
147
139
|
if (isNewer) {
|
|
148
|
-
this.context?.logger.info(`[agi-farm]
|
|
140
|
+
this.context?.logger.info(`[agi-farm] Update available: v${this.version} -> v${latest}`);
|
|
149
141
|
if (data.html_url) {
|
|
150
142
|
this.context?.logger.info(`[agi-farm] Release: ${data.html_url}`);
|
|
151
143
|
}
|
|
@@ -153,20 +145,14 @@ class AGIFarmExtension {
|
|
|
153
145
|
}
|
|
154
146
|
}
|
|
155
147
|
catch {
|
|
156
|
-
// Network errors silently ignored
|
|
148
|
+
// Network errors silently ignored
|
|
157
149
|
}
|
|
158
150
|
}
|
|
159
|
-
/**
|
|
160
|
-
* Get dashboard URL
|
|
161
|
-
*/
|
|
162
151
|
getDashboardUrl() {
|
|
163
|
-
return `http://${this.config.
|
|
152
|
+
return `http://${this.config.paperclipHost}:${this.config.paperclipPort}`;
|
|
164
153
|
}
|
|
165
|
-
/**
|
|
166
|
-
* Check if dashboard is running
|
|
167
|
-
*/
|
|
168
154
|
isDashboardRunning() {
|
|
169
|
-
return this.
|
|
155
|
+
return this.paperclipProcess !== null;
|
|
170
156
|
}
|
|
171
157
|
}
|
|
172
158
|
/**
|
|
@@ -185,14 +171,14 @@ export function register(context) {
|
|
|
185
171
|
logger: context.logger,
|
|
186
172
|
config: {},
|
|
187
173
|
});
|
|
188
|
-
context.logger.info(`[agi-farm]
|
|
174
|
+
context.logger.info(`[agi-farm] Paperclip URL: ${extension.getDashboardUrl()}`);
|
|
189
175
|
};
|
|
190
176
|
const stop = async () => {
|
|
191
177
|
await extension.onUnload();
|
|
192
178
|
};
|
|
193
179
|
if (typeof context.registerService === "function") {
|
|
194
180
|
context.registerService({
|
|
195
|
-
id: "agi-farm-
|
|
181
|
+
id: "agi-farm-paperclip",
|
|
196
182
|
start,
|
|
197
183
|
stop,
|
|
198
184
|
});
|
|
@@ -203,6 +189,5 @@ export function register(context) {
|
|
|
203
189
|
context.logger.error(`[agi-farm] Failed to initialize: ${message}`);
|
|
204
190
|
});
|
|
205
191
|
}
|
|
206
|
-
// Export types
|
|
207
192
|
export { AGIFarmExtension };
|
|
208
193
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAEvC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,aAAa,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAEtF,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,WAAW,GAAY,OAAO,CAAC,iBAAiB,CAAyB,CAAC,OAAO,CAAC;AAwDxF,iFAAiF;AAEjF,MAAM,cAAc,GAAkB;IACpC,aAAa,EAAE,IAAI;IACnB,aAAa,EAAE,WAAW;IAC1B,kBAAkB,EAAE,IAAI;IACxB,gBAAgB,EAAE,IAAI;IACtB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/openclaw.plugin.json
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
"id": "agi-farm",
|
|
3
3
|
"kind": "team-orchestration",
|
|
4
4
|
"name": "AGI Farm — Multi-Agent Team Builder",
|
|
5
|
-
"version": "
|
|
6
|
-
"description": "Bootstrap complete multi-agent AI teams with auto-dispatcher,
|
|
5
|
+
"version": "3.3.1",
|
|
6
|
+
"description": "Bootstrap complete multi-agent AI teams with Paperclip dashboard, auto-dispatcher, and infrastructure. Includes interactive wizard, SOUL.md generation, comms setup, cron registration, and OpenClaw gateway integration.",
|
|
7
7
|
"author": "oabdelmaksoud",
|
|
8
8
|
"homepage": "https://github.com/oabdelmaksoud/AGI-FARM-PLUGIN",
|
|
9
9
|
"openclawVersion": ">=1.0.0",
|
|
@@ -15,22 +15,28 @@
|
|
|
15
15
|
"type": "object",
|
|
16
16
|
"additionalProperties": false,
|
|
17
17
|
"properties": {
|
|
18
|
-
"
|
|
18
|
+
"paperclipPort": {
|
|
19
19
|
"type": "number",
|
|
20
|
-
"default":
|
|
20
|
+
"default": 3100,
|
|
21
21
|
"minimum": 1024,
|
|
22
22
|
"maximum": 65535,
|
|
23
|
-
"description": "Port for the
|
|
23
|
+
"description": "Port for the Paperclip dashboard server"
|
|
24
24
|
},
|
|
25
|
-
"
|
|
25
|
+
"paperclipHost": {
|
|
26
26
|
"type": "string",
|
|
27
27
|
"default": "127.0.0.1",
|
|
28
|
-
"description": "Bind address for the
|
|
28
|
+
"description": "Bind address for the Paperclip server"
|
|
29
29
|
},
|
|
30
|
-
"
|
|
30
|
+
"autoStartPaperclip": {
|
|
31
31
|
"type": "boolean",
|
|
32
32
|
"default": true,
|
|
33
|
-
"description": "Automatically start
|
|
33
|
+
"description": "Automatically start Paperclip when plugin loads"
|
|
34
|
+
},
|
|
35
|
+
"paperclipDeploymentMode": {
|
|
36
|
+
"type": "string",
|
|
37
|
+
"enum": ["local_trusted", "authenticated"],
|
|
38
|
+
"default": "local_trusted",
|
|
39
|
+
"description": "Paperclip deployment mode (local_trusted for dev, authenticated for production)"
|
|
34
40
|
},
|
|
35
41
|
"workspacePath": {
|
|
36
42
|
"type": "string",
|
|
@@ -64,32 +70,26 @@
|
|
|
64
70
|
"type": "boolean",
|
|
65
71
|
"default": true,
|
|
66
72
|
"description": "Enable policy engine for runtime actions"
|
|
67
|
-
},
|
|
68
|
-
"featureMetering": {
|
|
69
|
-
"type": "boolean",
|
|
70
|
-
"default": true,
|
|
71
|
-
"description": "Enable usage metering APIs and dashboard data"
|
|
72
|
-
},
|
|
73
|
-
"featureApprovals": {
|
|
74
|
-
"type": "boolean",
|
|
75
|
-
"default": true,
|
|
76
|
-
"description": "Enable approval workflows for policy-gated actions"
|
|
77
73
|
}
|
|
78
74
|
},
|
|
79
75
|
"required": []
|
|
80
76
|
},
|
|
81
77
|
"uiHints": {
|
|
82
|
-
"
|
|
83
|
-
"label": "
|
|
84
|
-
"description": "Port for the
|
|
78
|
+
"paperclipPort": {
|
|
79
|
+
"label": "Paperclip Port",
|
|
80
|
+
"description": "Port for the Paperclip dashboard server"
|
|
81
|
+
},
|
|
82
|
+
"paperclipHost": {
|
|
83
|
+
"label": "Paperclip Host",
|
|
84
|
+
"description": "Bind address for the Paperclip server"
|
|
85
85
|
},
|
|
86
|
-
"
|
|
87
|
-
"label": "
|
|
88
|
-
"description": "
|
|
86
|
+
"autoStartPaperclip": {
|
|
87
|
+
"label": "Auto-Start Paperclip",
|
|
88
|
+
"description": "Automatically start Paperclip when OpenClaw loads"
|
|
89
89
|
},
|
|
90
|
-
"
|
|
91
|
-
"label": "
|
|
92
|
-
"description": "
|
|
90
|
+
"paperclipDeploymentMode": {
|
|
91
|
+
"label": "Deployment Mode",
|
|
92
|
+
"description": "Paperclip deployment mode"
|
|
93
93
|
},
|
|
94
94
|
"workspacePath": {
|
|
95
95
|
"label": "Workspace Path",
|
|
@@ -118,14 +118,6 @@
|
|
|
118
118
|
"featurePolicy": {
|
|
119
119
|
"label": "Feature: Policy",
|
|
120
120
|
"description": "Enable policy engine for runtime actions"
|
|
121
|
-
},
|
|
122
|
-
"featureMetering": {
|
|
123
|
-
"label": "Feature: Metering",
|
|
124
|
-
"description": "Enable usage metering APIs and dashboard data"
|
|
125
|
-
},
|
|
126
|
-
"featureApprovals": {
|
|
127
|
-
"label": "Feature: Approvals",
|
|
128
|
-
"description": "Enable approval workflows for policy-gated actions"
|
|
129
121
|
}
|
|
130
122
|
},
|
|
131
123
|
"skills": [
|
|
@@ -140,6 +132,43 @@
|
|
|
140
132
|
"hooks/git-push-reminder",
|
|
141
133
|
"hooks/build-analyzer"
|
|
142
134
|
],
|
|
135
|
+
"tools": [
|
|
136
|
+
{
|
|
137
|
+
"name": "hire_specialist",
|
|
138
|
+
"description": "Autonomously hire and provision a new specialized agent to the team.",
|
|
139
|
+
"executable": "./skills/agi-farm/tools/hire_specialist.js"
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
"name": "create_company",
|
|
143
|
+
"description": "Create a new company/team in Paperclip dashboard. Use when starting a new venture or when no company exists.",
|
|
144
|
+
"executable": "./skills/agi-farm/tools/create_company.js"
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
"name": "create_project",
|
|
148
|
+
"description": "Create a new project in Paperclip. Auto-creates company if none exists.",
|
|
149
|
+
"executable": "./skills/agi-farm/tools/create_project.js"
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
"name": "create_task",
|
|
153
|
+
"description": "Create a task (issue) in Paperclip and assign to an agent. Auto-creates company if none exists.",
|
|
154
|
+
"executable": "./skills/agi-farm/tools/create_task.js"
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
"name": "update_task",
|
|
158
|
+
"description": "Update task status, reassign, change priority, or add comments in Paperclip.",
|
|
159
|
+
"executable": "./skills/agi-farm/tools/update_task.js"
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
"name": "list_projects",
|
|
163
|
+
"description": "List all projects in Paperclip. Use before creating a new project to avoid duplicates.",
|
|
164
|
+
"executable": "./skills/agi-farm/tools/list_projects.js"
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
"name": "manage_board",
|
|
168
|
+
"description": "Query board state — see tasks by status, agent, or project. Get stats and overview.",
|
|
169
|
+
"executable": "./skills/agi-farm/tools/manage_board.js"
|
|
170
|
+
}
|
|
171
|
+
],
|
|
143
172
|
"commands": [
|
|
144
173
|
{
|
|
145
174
|
"name": "agi-farm setup",
|
|
@@ -163,8 +192,8 @@
|
|
|
163
192
|
},
|
|
164
193
|
{
|
|
165
194
|
"name": "agi-farm dashboard",
|
|
166
|
-
"description": "Launch
|
|
167
|
-
"handler": "./scripts/
|
|
195
|
+
"description": "Launch Paperclip dashboard for team management",
|
|
196
|
+
"handler": "./scripts/paperclip.js"
|
|
168
197
|
},
|
|
169
198
|
{
|
|
170
199
|
"name": "agi-farm dispatch",
|