ideaco 1.1.6 → 1.1.7
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 +63 -76
- package/bin/ideaco.js +33 -2
- package/next.config.mjs +7 -0
- package/package.json +1 -1
- package/public/demo/demo.gif +0 -0
package/README.md
CHANGED
|
@@ -17,12 +17,15 @@
|
|
|
17
17
|
|
|
18
18
|
<p align="center">
|
|
19
19
|
<a href="#-quick-start">Quick Start</a> ·
|
|
20
|
-
<a href="#-features">Features</a> ·
|
|
21
20
|
<a href="#-architecture">Architecture</a> ·
|
|
22
21
|
<a href="#-download">Download</a> ·
|
|
23
22
|
<a href="ARCHITECTURE.md">Full Architecture Doc</a>
|
|
24
23
|
</p>
|
|
25
24
|
|
|
25
|
+
<p align="center">
|
|
26
|
+
<img src="public/demo/demo.gif" width="100%" alt="IdeaCo Demo" />
|
|
27
|
+
</p>
|
|
28
|
+
|
|
26
29
|
---
|
|
27
30
|
|
|
28
31
|
## What is IdeaCo?
|
|
@@ -35,74 +38,24 @@ Each employee has **persistent memory**, a **unique personality**, **social rela
|
|
|
35
38
|
|
|
36
39
|
---
|
|
37
40
|
|
|
38
|
-
##
|
|
39
|
-
|
|
40
|
-
Most agent frameworks create **stateless workflows**. IdeaCo manages **long-living AI employees with memory, personality, and social bonds**.
|
|
41
|
-
|
|
42
|
-
| | Typical Agent Framework | IdeaCo |
|
|
43
|
-
|---|---|---|
|
|
44
|
-
| **Agents** | Ephemeral, per-task | Persistent employees with memory & personality |
|
|
45
|
-
| **Memory** | None or simple RAG | Layered: long-term + short-term + social impressions + rolling summary |
|
|
46
|
-
| **Social** | Agents don't know each other | Employees form opinions, track affinity, and remember coworkers |
|
|
47
|
-
| **Orchestration** | DAG / workflow graph | Company org structure — departments, teams, roles |
|
|
48
|
-
| **Backend** | Single LLM | Mix LLMs + CLI tools (Claude Code, Codex, CodeBuddy) |
|
|
49
|
-
| **Autonomy** | Triggered by code | Employees poll, think, decide to speak or stay silent on their own |
|
|
50
|
-
| **Interface** | Code / YAML | Visual — pixel office, group chats, dashboards |
|
|
51
|
-
|
|
52
|
-
---
|
|
53
|
-
|
|
54
|
-
## ✨ Features
|
|
55
|
-
|
|
56
|
-
| Screenshot | Feature | Description |
|
|
57
|
-
|:---:|---|---|
|
|
58
|
-
| <img src="public/demo/dashboard.png" width="280" /> | **Dashboard** | Company overview — departments, employees, budget, requirements, and task forces at a glance |
|
|
59
|
-
| <img src="public/demo/office.png" width="280" /> | **Pixel Office** | Pixel-art virtual office where AI agents wander, work at desks, and show real-time chat bubbles |
|
|
60
|
-
| <img src="public/demo/employee.png" width="280" /> | **Employee Profile** | Detailed card — personality, memory (long/short-term), social relationships, affinity scores, performance, and cost tracking |
|
|
61
|
-
| <img src="public/demo/messages.png" width="280" /> | **Group Chat** | Department chats where agents discuss, debate, and collaborate autonomously with flow-of-thought reasoning |
|
|
62
|
-
| <img src="public/demo/requirement.png" width="280" /> | **Requirements** | Assign tasks to departments — agents auto-decompose, execute with real tools, and produce deliverables |
|
|
41
|
+
## 🚀 Quick Start
|
|
63
42
|
|
|
64
|
-
###
|
|
43
|
+
### Option 1: NPM (Recommended)
|
|
65
44
|
|
|
66
|
-
|
|
67
|
-
- 💾 **Layered Memory** — Long-term memory (facts, preferences), short-term memory (TTL-based), rolling history summaries, and AI-managed memory ops (add/delete)
|
|
68
|
-
- 👥 **Social Memory** — Every employee maintains impressions and affinity scores for coworkers. They remember who helped them, who they disagree with, and who they like
|
|
69
|
-
- 🎭 **12 Personality Archetypes** — From "Chatterbox" to "Zen Slacker" to "Anxious Perfectionist", each employee has a unique voice and behavior pattern
|
|
70
|
-
- 🔌 **Multi-Backend** — Mix cloud LLMs (OpenAI, DeepSeek, Anthropic), CLI tools (Claude Code, Codex, CodeBuddy), and web agents (ChatGPT Web) in one company
|
|
71
|
-
- 🏢 **Org Structure** — Departments, teams, roles, talent market, HR hiring — a complete company simulation
|
|
45
|
+
Requires Node.js 20+
|
|
72
46
|
|
|
73
|
-
|
|
47
|
+
```bash
|
|
48
|
+
# Install globally
|
|
49
|
+
npm install -g ideaco
|
|
74
50
|
|
|
75
|
-
|
|
51
|
+
# Start your company (opens dashboard automatically)
|
|
52
|
+
ideaco start
|
|
76
53
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
│ 👤 User (Boss) │
|
|
80
|
-
├───────────────────────────────────────────────────┤
|
|
81
|
-
│ 🧑💼 Secretary │
|
|
82
|
-
│ Intent Parsing · HR · Task Dispatch · Reports │
|
|
83
|
-
├───────────────────────────────────────────────────┤
|
|
84
|
-
│ 🏢 Organization │
|
|
85
|
-
│ Company · Department · Team · Requirement │
|
|
86
|
-
├───────────────────────────────────────────────────┤
|
|
87
|
-
│ 👥 Employee │
|
|
88
|
-
│ Memory · Personality · Skills · Lifecycle │
|
|
89
|
-
├───────────────────────────────────────────────────┤
|
|
90
|
-
│ 🤖 Agent │
|
|
91
|
-
│ LLM Agent · CLI Agent · Web Agent │
|
|
92
|
-
│ (Unified interface, zero business logic) │
|
|
93
|
-
└───────────────────────────────────────────────────┘
|
|
54
|
+
# Open the dashboard
|
|
55
|
+
ideaco ui
|
|
94
56
|
```
|
|
95
57
|
|
|
96
|
-
|
|
97
|
-
- **Employee** — The atomic unit. Wraps an Agent with persistent memory, personality, skills, and autonomous poll-think-reply behavior.
|
|
98
|
-
- **Organization** — Company structure: departments, teams, group chats, requirements workflow.
|
|
99
|
-
- **Secretary** — Boss's AI assistant that understands intent, manages HR, and coordinates departments.
|
|
100
|
-
|
|
101
|
-
> 📖 See [ARCHITECTURE.md](ARCHITECTURE.md) for the full deep-dive — employee lifecycle, memory system design, flow-of-thought pipeline, anti-spam gates, and social memory details.
|
|
102
|
-
|
|
103
|
-
---
|
|
104
|
-
|
|
105
|
-
## ⬇ Download
|
|
58
|
+
### Option 2: Desktop Client (Mac/Windows/Linux)
|
|
106
59
|
|
|
107
60
|
Grab the latest release for your platform:
|
|
108
61
|
|
|
@@ -125,11 +78,7 @@ Since IdeaCo is not signed with an Apple Developer certificate, macOS will show
|
|
|
125
78
|
3. **Or via Terminal**: `xattr -cr /Applications/IdeaCo.app`
|
|
126
79
|
</details>
|
|
127
80
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
## 🚀 Quick Start
|
|
131
|
-
|
|
132
|
-
### From Source
|
|
81
|
+
### Option 3: From Source
|
|
133
82
|
|
|
134
83
|
```bash
|
|
135
84
|
git clone https://github.com/ymssx/IdeaCo.git
|
|
@@ -138,9 +87,7 @@ yarn install
|
|
|
138
87
|
yarn dev
|
|
139
88
|
```
|
|
140
89
|
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
### Docker
|
|
90
|
+
### Option 4: Docker
|
|
144
91
|
|
|
145
92
|
```bash
|
|
146
93
|
docker compose up -d
|
|
@@ -150,6 +97,52 @@ Data is persisted via Docker volumes (`app-data`, `app-workspace`).
|
|
|
150
97
|
|
|
151
98
|
---
|
|
152
99
|
|
|
100
|
+
## 🧬 Why IdeaCo?
|
|
101
|
+
|
|
102
|
+
Most agent frameworks create **stateless workflows**. IdeaCo manages **long-living AI employees with memory, personality, and social bonds**.
|
|
103
|
+
|
|
104
|
+
| | Typical Agent Framework | IdeaCo |
|
|
105
|
+
|---|---|---|
|
|
106
|
+
| **Agents** | Ephemeral, per-task | Persistent employees with memory & personality |
|
|
107
|
+
| **Memory** | None or simple RAG | Layered: long-term + short-term + social impressions + rolling summary |
|
|
108
|
+
| **Social** | Agents don't know each other | Employees form opinions, track affinity, and remember coworkers |
|
|
109
|
+
| **Orchestration** | DAG / workflow graph | Company org structure — departments, teams, roles |
|
|
110
|
+
| **Backend** | Single LLM | Mix LLMs + CLI tools (Claude Code, Codex, CodeBuddy) |
|
|
111
|
+
| **Autonomy** | Triggered by code | Employees poll, think, decide to speak or stay silent on their own |
|
|
112
|
+
| **Interface** | Code / YAML | Visual — pixel office, group chats, dashboards |
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
## Architecture
|
|
117
|
+
|
|
118
|
+
```
|
|
119
|
+
┌───────────────────────────────────────────────────┐
|
|
120
|
+
│ 👤 User (Boss) │
|
|
121
|
+
├───────────────────────────────────────────────────┤
|
|
122
|
+
│ 🧑💼 Secretary │
|
|
123
|
+
│ Intent Parsing · HR · Task Dispatch · Reports │
|
|
124
|
+
├───────────────────────────────────────────────────┤
|
|
125
|
+
│ 🏢 Organization │
|
|
126
|
+
│ Company · Department · Team · Requirement │
|
|
127
|
+
├───────────────────────────────────────────────────┤
|
|
128
|
+
│ 👥 Employee │
|
|
129
|
+
│ Memory · Personality · Skills · Lifecycle │
|
|
130
|
+
├───────────────────────────────────────────────────┤
|
|
131
|
+
│ 🤖 Agent │
|
|
132
|
+
│ LLM Agent · CLI Agent · Web Agent │
|
|
133
|
+
│ (Unified interface, zero business logic) │
|
|
134
|
+
└───────────────────────────────────────────────────┘
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
- **Agent** — Pure LLM communication engine. Supports API, CLI, and Web backends behind a single `chat()` interface. Zero business logic.
|
|
138
|
+
- **Employee** — The atomic unit. Wraps an Agent with persistent memory, personality, skills, and autonomous poll-think-reply behavior.
|
|
139
|
+
- **Organization** — Company structure: departments, teams, group chats, requirements workflow.
|
|
140
|
+
- **Secretary** — Boss's AI assistant that understands intent, manages HR, and coordinates departments.
|
|
141
|
+
|
|
142
|
+
> 📖 See [ARCHITECTURE.md](ARCHITECTURE.md) for the full deep-dive — employee lifecycle, memory system design, flow-of-thought pipeline, anti-spam gates, and social memory details.
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
153
146
|
## ⚙ Configuration
|
|
154
147
|
|
|
155
148
|
### LLM Providers
|
|
@@ -198,9 +191,3 @@ IdeaCo/
|
|
|
198
191
|
├── electron/ # Electron desktop app shell
|
|
199
192
|
└── package.json
|
|
200
193
|
```
|
|
201
|
-
|
|
202
|
-
---
|
|
203
|
-
|
|
204
|
-
## License
|
|
205
|
-
|
|
206
|
-
[MIT](LICENSE)
|
package/bin/ideaco.js
CHANGED
|
@@ -496,6 +496,37 @@ async function openElectron(port) {
|
|
|
496
496
|
child.on('exit', (code) => process.exit(code ?? 0));
|
|
497
497
|
}
|
|
498
498
|
|
|
499
|
+
async function handleUiCommand() {
|
|
500
|
+
const pid = readPid();
|
|
501
|
+
const port = readPort() ?? PORT;
|
|
502
|
+
|
|
503
|
+
// Check if service is already running
|
|
504
|
+
if (pid && isPidRunning(pid)) {
|
|
505
|
+
try {
|
|
506
|
+
// Simple check if port is responding
|
|
507
|
+
await new Promise((resolve, reject) => {
|
|
508
|
+
const socket = new net.Socket();
|
|
509
|
+
socket.setTimeout(1000);
|
|
510
|
+
socket.on('connect', () => { socket.destroy(); resolve(); });
|
|
511
|
+
socket.on('timeout', () => { socket.destroy(); reject(new Error('timeout')); });
|
|
512
|
+
socket.on('error', (err) => reject(err));
|
|
513
|
+
socket.connect(port, '127.0.0.1');
|
|
514
|
+
});
|
|
515
|
+
|
|
516
|
+
// Service is running, open Electron directly
|
|
517
|
+
console.log(chalk.cyan(`Opening Electron UI on port ${port}...`));
|
|
518
|
+
await openElectron(port);
|
|
519
|
+
return;
|
|
520
|
+
} catch (e) {
|
|
521
|
+
// Port check failed, service might be dead
|
|
522
|
+
}
|
|
523
|
+
}
|
|
524
|
+
|
|
525
|
+
// Service not running, start it (which will auto-open Electron)
|
|
526
|
+
console.log(chalk.yellow('Service not running. Starting...'));
|
|
527
|
+
await startServer();
|
|
528
|
+
}
|
|
529
|
+
|
|
499
530
|
function printHelp() {
|
|
500
531
|
console.log(`
|
|
501
532
|
${t('cli.helpTitle')}
|
|
@@ -512,8 +543,8 @@ async function main() {
|
|
|
512
543
|
if (command === 'stop') return await stopServer();
|
|
513
544
|
if (command === 'web') return await openWeb();
|
|
514
545
|
if (command === 'banner') return await runBanner(args[1]);
|
|
515
|
-
if (command === 'ui') return await
|
|
516
|
-
if (command === 'electron') return await
|
|
546
|
+
if (command === 'ui') return await handleUiCommand();
|
|
547
|
+
if (command === 'electron') return await handleUiCommand();
|
|
517
548
|
return printHelp();
|
|
518
549
|
}
|
|
519
550
|
|
package/next.config.mjs
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
|
|
1
3
|
/** @type {import('next').NextConfig} */
|
|
2
4
|
const nextConfig = {
|
|
3
5
|
output: 'standalone', // Required for Docker deployment
|
|
@@ -11,6 +13,11 @@ const nextConfig = {
|
|
|
11
13
|
],
|
|
12
14
|
},
|
|
13
15
|
webpack: (config, { isServer }) => {
|
|
16
|
+
config.resolve = config.resolve || {};
|
|
17
|
+
config.resolve.alias = {
|
|
18
|
+
...(config.resolve.alias || {}),
|
|
19
|
+
'@': path.resolve(process.cwd(), 'src'),
|
|
20
|
+
};
|
|
14
21
|
if (isServer) {
|
|
15
22
|
// 将可选依赖标记为 external,避免 webpack 尝试解析/打包它们
|
|
16
23
|
const optionalDeps = ['puppeteer', 'puppeteer-core', 'pdf-parse', 'openai'];
|
package/package.json
CHANGED
|
Binary file
|