sage-team 3.0.0
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/LICENSE +21 -0
- package/README.md +180 -0
- package/dist/agents/__tests__/personas.test.d.ts +2 -0
- package/dist/agents/__tests__/personas.test.d.ts.map +1 -0
- package/dist/agents/__tests__/personas.test.js +47 -0
- package/dist/agents/__tests__/personas.test.js.map +1 -0
- package/dist/agents/personas.d.ts +3 -0
- package/dist/agents/personas.d.ts.map +1 -0
- package/dist/agents/personas.js +127 -0
- package/dist/agents/personas.js.map +1 -0
- package/dist/agents/skills-map.d.ts +7 -0
- package/dist/agents/skills-map.d.ts.map +1 -0
- package/dist/agents/skills-map.js +55 -0
- package/dist/agents/skills-map.js.map +1 -0
- package/dist/cli/__tests__/cli.test.d.ts +2 -0
- package/dist/cli/__tests__/cli.test.d.ts.map +1 -0
- package/dist/cli/__tests__/cli.test.js +65 -0
- package/dist/cli/__tests__/cli.test.js.map +1 -0
- package/dist/cli/commands/config.d.ts +3 -0
- package/dist/cli/commands/config.d.ts.map +1 -0
- package/dist/cli/commands/config.js +50 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +9 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/doctor.js +74 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/init.d.ts +3 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +67 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/logs.d.ts +3 -0
- package/dist/cli/commands/logs.d.ts.map +1 -0
- package/dist/cli/commands/logs.js +51 -0
- package/dist/cli/commands/logs.js.map +1 -0
- package/dist/cli/commands/resume.d.ts +3 -0
- package/dist/cli/commands/resume.d.ts.map +1 -0
- package/dist/cli/commands/resume.js +106 -0
- package/dist/cli/commands/resume.js.map +1 -0
- package/dist/cli/commands/start.d.ts +3 -0
- package/dist/cli/commands/start.d.ts.map +1 -0
- package/dist/cli/commands/start.js +103 -0
- package/dist/cli/commands/start.js.map +1 -0
- package/dist/cli/commands/status.d.ts +3 -0
- package/dist/cli/commands/status.d.ts.map +1 -0
- package/dist/cli/commands/status.js +64 -0
- package/dist/cli/commands/status.js.map +1 -0
- package/dist/cli/commands/team.d.ts +4 -0
- package/dist/cli/commands/team.d.ts.map +1 -0
- package/dist/cli/commands/team.js +33 -0
- package/dist/cli/commands/team.js.map +1 -0
- package/dist/cli/index.d.ts +4 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +35 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/splash.d.ts +2 -0
- package/dist/cli/splash.d.ts.map +1 -0
- package/dist/cli/splash.js +20 -0
- package/dist/cli/splash.js.map +1 -0
- package/dist/engine/__tests__/ceo-brain.test.d.ts +2 -0
- package/dist/engine/__tests__/ceo-brain.test.d.ts.map +1 -0
- package/dist/engine/__tests__/ceo-brain.test.js +57 -0
- package/dist/engine/__tests__/ceo-brain.test.js.map +1 -0
- package/dist/engine/__tests__/dispatcher.test.d.ts +2 -0
- package/dist/engine/__tests__/dispatcher.test.d.ts.map +1 -0
- package/dist/engine/__tests__/dispatcher.test.js +60 -0
- package/dist/engine/__tests__/dispatcher.test.js.map +1 -0
- package/dist/engine/__tests__/orchestrator.test.d.ts +2 -0
- package/dist/engine/__tests__/orchestrator.test.d.ts.map +1 -0
- package/dist/engine/__tests__/orchestrator.test.js +83 -0
- package/dist/engine/__tests__/orchestrator.test.js.map +1 -0
- package/dist/engine/__tests__/pr-manager.test.d.ts +2 -0
- package/dist/engine/__tests__/pr-manager.test.d.ts.map +1 -0
- package/dist/engine/__tests__/pr-manager.test.js +44 -0
- package/dist/engine/__tests__/pr-manager.test.js.map +1 -0
- package/dist/engine/__tests__/prompt-builder.test.d.ts +2 -0
- package/dist/engine/__tests__/prompt-builder.test.d.ts.map +1 -0
- package/dist/engine/__tests__/prompt-builder.test.js +42 -0
- package/dist/engine/__tests__/prompt-builder.test.js.map +1 -0
- package/dist/engine/ceo-brain.d.ts +33 -0
- package/dist/engine/ceo-brain.d.ts.map +1 -0
- package/dist/engine/ceo-brain.js +94 -0
- package/dist/engine/ceo-brain.js.map +1 -0
- package/dist/engine/dispatcher.d.ts +40 -0
- package/dist/engine/dispatcher.d.ts.map +1 -0
- package/dist/engine/dispatcher.js +125 -0
- package/dist/engine/dispatcher.js.map +1 -0
- package/dist/engine/orchestrator.d.ts +49 -0
- package/dist/engine/orchestrator.d.ts.map +1 -0
- package/dist/engine/orchestrator.js +303 -0
- package/dist/engine/orchestrator.js.map +1 -0
- package/dist/engine/pr-manager.d.ts +14 -0
- package/dist/engine/pr-manager.d.ts.map +1 -0
- package/dist/engine/pr-manager.js +67 -0
- package/dist/engine/pr-manager.js.map +1 -0
- package/dist/engine/prompt-builder.d.ts +27 -0
- package/dist/engine/prompt-builder.d.ts.map +1 -0
- package/dist/engine/prompt-builder.js +73 -0
- package/dist/engine/prompt-builder.js.map +1 -0
- package/dist/server/__tests__/server.test.d.ts +2 -0
- package/dist/server/__tests__/server.test.d.ts.map +1 -0
- package/dist/server/__tests__/server.test.js +87 -0
- package/dist/server/__tests__/server.test.js.map +1 -0
- package/dist/server/index.d.ts +4 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +72 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/routes/api.d.ts +4 -0
- package/dist/server/routes/api.d.ts.map +1 -0
- package/dist/server/routes/api.js +60 -0
- package/dist/server/routes/api.js.map +1 -0
- package/dist/skills/__tests__/loader.test.d.ts +2 -0
- package/dist/skills/__tests__/loader.test.d.ts.map +1 -0
- package/dist/skills/__tests__/loader.test.js +50 -0
- package/dist/skills/__tests__/loader.test.js.map +1 -0
- package/dist/skills/loader.d.ts +21 -0
- package/dist/skills/loader.d.ts.map +1 -0
- package/dist/skills/loader.js +190 -0
- package/dist/skills/loader.js.map +1 -0
- package/dist/state/__tests__/database.test.d.ts +2 -0
- package/dist/state/__tests__/database.test.d.ts.map +1 -0
- package/dist/state/__tests__/database.test.js +50 -0
- package/dist/state/__tests__/database.test.js.map +1 -0
- package/dist/state/database.d.ts +14 -0
- package/dist/state/database.d.ts.map +1 -0
- package/dist/state/database.js +164 -0
- package/dist/state/database.js.map +1 -0
- package/dist/state/repositories/__tests__/repositories.test.d.ts +2 -0
- package/dist/state/repositories/__tests__/repositories.test.d.ts.map +1 -0
- package/dist/state/repositories/__tests__/repositories.test.js +162 -0
- package/dist/state/repositories/__tests__/repositories.test.js.map +1 -0
- package/dist/state/repositories/agents.d.ts +14 -0
- package/dist/state/repositories/agents.d.ts.map +1 -0
- package/dist/state/repositories/agents.js +52 -0
- package/dist/state/repositories/agents.js.map +1 -0
- package/dist/state/repositories/events.d.ts +10 -0
- package/dist/state/repositories/events.d.ts.map +1 -0
- package/dist/state/repositories/events.js +27 -0
- package/dist/state/repositories/events.js.map +1 -0
- package/dist/state/repositories/messages.d.ts +15 -0
- package/dist/state/repositories/messages.d.ts.map +1 -0
- package/dist/state/repositories/messages.js +19 -0
- package/dist/state/repositories/messages.js.map +1 -0
- package/dist/state/repositories/pull-requests.d.ts +25 -0
- package/dist/state/repositories/pull-requests.d.ts.map +1 -0
- package/dist/state/repositories/pull-requests.js +40 -0
- package/dist/state/repositories/pull-requests.js.map +1 -0
- package/dist/state/repositories/sessions.d.ts +13 -0
- package/dist/state/repositories/sessions.d.ts.map +1 -0
- package/dist/state/repositories/sessions.js +41 -0
- package/dist/state/repositories/sessions.js.map +1 -0
- package/dist/state/repositories/sprints.d.ts +19 -0
- package/dist/state/repositories/sprints.d.ts.map +1 -0
- package/dist/state/repositories/sprints.js +26 -0
- package/dist/state/repositories/sprints.js.map +1 -0
- package/dist/state/repositories/tasks.d.ts +26 -0
- package/dist/state/repositories/tasks.d.ts.map +1 -0
- package/dist/state/repositories/tasks.js +43 -0
- package/dist/state/repositories/tasks.js.map +1 -0
- package/dist/types/__tests__/types.test.d.ts +2 -0
- package/dist/types/__tests__/types.test.d.ts.map +1 -0
- package/dist/types/__tests__/types.test.js +70 -0
- package/dist/types/__tests__/types.test.js.map +1 -0
- package/dist/types/index.d.ts +198 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +65 -0
- package/src/web/dist/assets/BufferResource-rnljfCCz.js +185 -0
- package/src/web/dist/assets/CanvasRenderer-BvTI2UTL.js +1 -0
- package/src/web/dist/assets/Filter-BzO9QkkB.js +1 -0
- package/src/web/dist/assets/RenderTargetSystem-CKlnKfTJ.js +172 -0
- package/src/web/dist/assets/WebGLRenderer-B5LAM4bk.js +156 -0
- package/src/web/dist/assets/WebGPURenderer-FkK3p3f4.js +41 -0
- package/src/web/dist/assets/browserAll-CDpBxY6s.js +14 -0
- package/src/web/dist/assets/index-B3XZpovA.js +298 -0
- package/src/web/dist/assets/index-BcX-h_hs.css +1 -0
- package/src/web/dist/assets/webworkerAll-B9AvsPZH.js +83 -0
- package/src/web/dist/index.html +18 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Sage Team Contributors
|
|
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.
|
package/README.md
ADDED
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
# Sage Team v3.0
|
|
2
|
+
|
|
3
|
+
> AI-Powered Autonomous Software Company — 11 agents execute real code via Claude Code, with a PixiJS isometric office visualization.
|
|
4
|
+
|
|
5
|
+
Sage Team runs a complete AI software company. A **CEO agent** decomposes your goal into a sprint, then **11 specialized agents** execute tasks in parallel using **Claude Code subprocesses** — writing real code, running tests, and creating PRs. Watch it all happen in a **PixiJS isometric office** in your browser.
|
|
6
|
+
|
|
7
|
+
## What Makes This Different
|
|
8
|
+
|
|
9
|
+
- **Real Execution** — Agents run Claude Code subprocesses that write, test, and commit actual code
|
|
10
|
+
- **Hybrid Engine** — CEO plans via Claude API (fast/cheap), agents execute via Claude Code (powerful)
|
|
11
|
+
- **SQLite Persistence** — Full state survives restarts. Resume any session.
|
|
12
|
+
- **Skill Injection** — Agent prompts include real skill protocols from Superpowers and Antigravity
|
|
13
|
+
- **Isometric Office** — PixiJS browser visualization with 10 rooms, animated agents, particle effects
|
|
14
|
+
- **PR Workflow** — Agents create branches, you review and approve/reject PRs in the UI
|
|
15
|
+
|
|
16
|
+
## Quick Start
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
# Install globally
|
|
20
|
+
npm install -g sage-team
|
|
21
|
+
|
|
22
|
+
# Set your API key
|
|
23
|
+
export ANTHROPIC_API_KEY=your-key-here
|
|
24
|
+
|
|
25
|
+
# Initialize project
|
|
26
|
+
sage-team init
|
|
27
|
+
|
|
28
|
+
# Launch the office
|
|
29
|
+
sage-team start
|
|
30
|
+
|
|
31
|
+
# Or start with a goal
|
|
32
|
+
sage-team start --goal "Build a REST API for a todo app with authentication"
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## The Team
|
|
36
|
+
|
|
37
|
+
| Agent | Role | Room | Focus |
|
|
38
|
+
|-------|------|------|-------|
|
|
39
|
+
| 👑 **Sage** | CEO | CEO Office | Goal decomposition, sprint planning, delegation |
|
|
40
|
+
| 🔮 **Nova** | CTO | CTO Office | Architecture review, technical decisions |
|
|
41
|
+
| 🏛️ **Aria** | Architect | Arch Lab | System design, API patterns |
|
|
42
|
+
| ⚡ **Dex** | Senior Dev | Dev Bullpen | Core implementation, TDD |
|
|
43
|
+
| 🌊 **Flux** | Full Stack Dev | Dev Bullpen | Frontend + backend, end-to-end features |
|
|
44
|
+
| 🔍 **Quinn** | QA Lead | QA Lab | Testing, quality gates |
|
|
45
|
+
| ⚙️ **Gage** | DevOps | QA Lab | CI/CD, deployment, infrastructure |
|
|
46
|
+
| 📋 **Morgan** | Product Manager | Design Studio | Requirements, prioritization |
|
|
47
|
+
| 🎨 **Uma** | UX Designer | Design Studio | UI/UX design, accessibility |
|
|
48
|
+
| 🌀 **River** | Scrum Master | Lounge | Process, blocker removal |
|
|
49
|
+
| 📊 **Atlas** | Data Engineer | Data Lab | Database, data pipelines |
|
|
50
|
+
|
|
51
|
+
## Commands
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
sage-team init # Initialize .sage-team/ directory
|
|
55
|
+
sage-team start # Launch office + browser UI
|
|
56
|
+
sage-team start --goal "..." # Start with an initial goal
|
|
57
|
+
sage-team start --no-browser # Skip opening browser
|
|
58
|
+
sage-team start --port 8080 # Custom port (default: 3000)
|
|
59
|
+
sage-team resume # Resume latest session
|
|
60
|
+
sage-team resume --session <id> # Resume specific session
|
|
61
|
+
sage-team config --show # Show configuration
|
|
62
|
+
sage-team config --api-key <key> # Set API key
|
|
63
|
+
sage-team config --model <model> # Set Claude model
|
|
64
|
+
sage-team team # Show team roster
|
|
65
|
+
sage-team status # Show session status
|
|
66
|
+
sage-team doctor # Check system health
|
|
67
|
+
sage-team logs # Tail event log
|
|
68
|
+
sage-team logs --agent dex -n 50 # Filter by agent
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## How It Works
|
|
72
|
+
|
|
73
|
+
```
|
|
74
|
+
You submit a goal
|
|
75
|
+
│
|
|
76
|
+
▼
|
|
77
|
+
┌─────────────┐ Claude API
|
|
78
|
+
│ CEO (Sage) │────────────────► Decompose into sprint + tasks
|
|
79
|
+
└─────────────┘ with dependencies & assignments
|
|
80
|
+
│
|
|
81
|
+
▼
|
|
82
|
+
┌─────────────┐ Claude Code
|
|
83
|
+
│ Dispatcher │────────────────► Spawn subprocesses (max N concurrent)
|
|
84
|
+
└─────────────┘ Each agent gets: identity + skills + task
|
|
85
|
+
│
|
|
86
|
+
▼
|
|
87
|
+
┌─────────────┐
|
|
88
|
+
│ Agents │────────────────► Write code, run tests, commit
|
|
89
|
+
│ (parallel) │ Stream status back via JSONL
|
|
90
|
+
└─────────────┘
|
|
91
|
+
│
|
|
92
|
+
▼
|
|
93
|
+
┌─────────────┐
|
|
94
|
+
│ PR Manager │────────────────► Create branch, squash merge on approval
|
|
95
|
+
└─────────────┘
|
|
96
|
+
│
|
|
97
|
+
▼
|
|
98
|
+
┌─────────────┐ WebSocket
|
|
99
|
+
│ Browser │◄───────────────── Real-time events, agent positions,
|
|
100
|
+
│ (PixiJS) │ particle effects, wow moments
|
|
101
|
+
└─────────────┘
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### Execution Modes
|
|
105
|
+
|
|
106
|
+
- **Sandbox** (default) — Each agent works in a git worktree. PRs require your approval.
|
|
107
|
+
- **Direct** — Agents commit directly to the working branch. Fast but risky.
|
|
108
|
+
- **Supervised** — Like sandbox, but agents pause and ask before critical operations.
|
|
109
|
+
|
|
110
|
+
## Architecture
|
|
111
|
+
|
|
112
|
+
```
|
|
113
|
+
sage-team/
|
|
114
|
+
├── src/
|
|
115
|
+
│ ├── types/ # TypeScript interfaces (Agent, Task, Sprint, etc.)
|
|
116
|
+
│ ├── state/
|
|
117
|
+
│ │ ├── database.ts # SQLite with WAL mode, 9 tables
|
|
118
|
+
│ │ └── repositories/ # 7 repos (sessions, agents, tasks, sprints, etc.)
|
|
119
|
+
│ ├── agents/
|
|
120
|
+
│ │ ├── personas.ts # 11 agent definitions with skills & colors
|
|
121
|
+
│ │ └── skills-map.ts # Agent → skill ID mapping
|
|
122
|
+
│ ├── skills/
|
|
123
|
+
│ │ └── loader.ts # Loads Superpowers/Antigravity skill protocols
|
|
124
|
+
│ ├── engine/
|
|
125
|
+
│ │ ├── ceo-brain.ts # Goal decomposition via Claude API
|
|
126
|
+
│ │ ├── dispatcher.ts # Claude Code subprocess management
|
|
127
|
+
│ │ ├── orchestrator.ts # Central coordinator
|
|
128
|
+
│ │ ├── pr-manager.ts # Git worktree + branch + merge
|
|
129
|
+
│ │ └── prompt-builder.ts # Identity + skills + task prompt assembly
|
|
130
|
+
│ ├── cli/
|
|
131
|
+
│ │ ├── index.ts # Commander program with 8 commands
|
|
132
|
+
│ │ └── commands/ # init, start, resume, config, team, status, doctor, logs
|
|
133
|
+
│ ├── server/
|
|
134
|
+
│ │ ├── index.ts # Express + WebSocket server
|
|
135
|
+
│ │ └── routes/api.ts # REST API endpoints
|
|
136
|
+
│ └── web/ # Frontend (separate Vite project)
|
|
137
|
+
│ └── src/
|
|
138
|
+
│ ├── canvas/ # PixiJS isometric office, agents, effects
|
|
139
|
+
│ ├── hooks/ # useWebSocket, useOffice, usePixiOffice
|
|
140
|
+
│ ├── panels/ # AgentBar, TaskBoard, ChatPanel, PRReview, GoalInput
|
|
141
|
+
│ └── store.ts # Zustand state management
|
|
142
|
+
├── vitest.config.ts # Test configuration
|
|
143
|
+
└── package.json
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
## Configuration
|
|
147
|
+
|
|
148
|
+
```bash
|
|
149
|
+
# API key (required)
|
|
150
|
+
export ANTHROPIC_API_KEY=your-key-here
|
|
151
|
+
|
|
152
|
+
# Or save to config
|
|
153
|
+
sage-team config --api-key your-key-here
|
|
154
|
+
|
|
155
|
+
# Customize
|
|
156
|
+
sage-team config --company-name "My AI Company"
|
|
157
|
+
sage-team config --model claude-sonnet-4-20250514
|
|
158
|
+
sage-team config --max-agents 5
|
|
159
|
+
sage-team config --autonomy sandbox
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
## Skill Sources
|
|
163
|
+
|
|
164
|
+
Agent prompts are injected with real skill protocol content from:
|
|
165
|
+
|
|
166
|
+
- **[Superpowers](https://github.com/obra/superpowers)** — TDD, brainstorming, debugging, code review, verification
|
|
167
|
+
- **[Antigravity](https://github.com/Petriccone/antigravity-awesome-skills)** — TypeScript, React, security, DevOps, databases, and more
|
|
168
|
+
|
|
169
|
+
Skills are loaded at runtime from your local installations and respect a 30k token budget per agent prompt.
|
|
170
|
+
|
|
171
|
+
## Prerequisites
|
|
172
|
+
|
|
173
|
+
- Node.js >= 18
|
|
174
|
+
- Git
|
|
175
|
+
- [Claude Code](https://claude.ai/claude-code) CLI installed (`npm i -g @anthropic-ai/claude-code`)
|
|
176
|
+
- Anthropic API key
|
|
177
|
+
|
|
178
|
+
## License
|
|
179
|
+
|
|
180
|
+
MIT
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"personas.test.d.ts","sourceRoot":"","sources":["../../../src/agents/__tests__/personas.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const personas_1 = require("../personas");
|
|
5
|
+
const skills_map_1 = require("../skills-map");
|
|
6
|
+
(0, vitest_1.describe)('Agent Personas', () => {
|
|
7
|
+
(0, vitest_1.it)('should define exactly 11 agents', () => {
|
|
8
|
+
(0, vitest_1.expect)(personas_1.PERSONAS.length).toBe(11);
|
|
9
|
+
});
|
|
10
|
+
(0, vitest_1.it)('should have unique IDs', () => {
|
|
11
|
+
const ids = personas_1.PERSONAS.map(p => p.id);
|
|
12
|
+
(0, vitest_1.expect)(new Set(ids).size).toBe(11);
|
|
13
|
+
});
|
|
14
|
+
(0, vitest_1.it)('should have unique rooms', () => {
|
|
15
|
+
const rooms = personas_1.PERSONAS.map(p => p.defaultRoom);
|
|
16
|
+
// Dev bullpen shares room, so unique count < 11
|
|
17
|
+
(0, vitest_1.expect)(rooms.length).toBe(11);
|
|
18
|
+
});
|
|
19
|
+
(0, vitest_1.it)('should have valid roles', () => {
|
|
20
|
+
const validRoles = [
|
|
21
|
+
'ceo', 'cto', 'architect', 'dev-senior', 'dev-fullstack',
|
|
22
|
+
'qa-lead', 'devops', 'product-manager', 'ux-designer',
|
|
23
|
+
'scrum-master', 'data-engineer'
|
|
24
|
+
];
|
|
25
|
+
personas_1.PERSONAS.forEach(p => {
|
|
26
|
+
(0, vitest_1.expect)(validRoles).toContain(p.role);
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
(0, vitest_1.describe)('Agent Skills Map', () => {
|
|
31
|
+
(0, vitest_1.it)('should have skills for all 11 agents', () => {
|
|
32
|
+
(0, vitest_1.expect)(Object.keys(skills_map_1.AGENT_SKILLS).length).toBe(11);
|
|
33
|
+
});
|
|
34
|
+
(0, vitest_1.it)('should use sp- or ag- prefix for all skills', () => {
|
|
35
|
+
Object.values(skills_map_1.AGENT_SKILLS).flat().forEach(skillId => {
|
|
36
|
+
(0, vitest_1.expect)(skillId.startsWith('sp-') || skillId.startsWith('ag-')).toBe(true);
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
(0, vitest_1.it)('should assign TDD to developers', () => {
|
|
40
|
+
(0, vitest_1.expect)(skills_map_1.AGENT_SKILLS['dex']).toContain('sp-tdd-cycle');
|
|
41
|
+
(0, vitest_1.expect)(skills_map_1.AGENT_SKILLS['flux']).toContain('sp-tdd-cycle');
|
|
42
|
+
});
|
|
43
|
+
(0, vitest_1.it)('should assign brainstorming to CEO', () => {
|
|
44
|
+
(0, vitest_1.expect)(skills_map_1.AGENT_SKILLS['sage']).toContain('sp-brainstorming');
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
//# sourceMappingURL=personas.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"personas.test.js","sourceRoot":"","sources":["../../../src/agents/__tests__/personas.test.ts"],"names":[],"mappings":";;AAAA,mCAA8C;AAC9C,0CAAuC;AACvC,8CAA6C;AAE7C,IAAA,iBAAQ,EAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,IAAA,WAAE,EAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,IAAA,eAAM,EAAC,mBAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,MAAM,GAAG,GAAG,mBAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACpC,IAAA,eAAM,EAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,KAAK,GAAG,mBAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QAC/C,gDAAgD;QAChD,IAAA,eAAM,EAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,yBAAyB,EAAE,GAAG,EAAE;QACjC,MAAM,UAAU,GAAG;YACjB,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,eAAe;YACxD,SAAS,EAAE,QAAQ,EAAE,iBAAiB,EAAE,aAAa;YACrD,cAAc,EAAE,eAAe;SAChC,CAAC;QACF,mBAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACnB,IAAA,eAAM,EAAC,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,iBAAQ,EAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,IAAA,WAAE,EAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,IAAA,eAAM,EAAC,MAAM,CAAC,IAAI,CAAC,yBAAY,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,CAAC,MAAM,CAAC,yBAAY,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YACnD,IAAA,eAAM,EAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5E,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,IAAA,eAAM,EAAC,yBAAY,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QACtD,IAAA,eAAM,EAAC,yBAAY,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,IAAA,eAAM,EAAC,yBAAY,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"personas.d.ts","sourceRoot":"","sources":["../../src/agents/personas.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE7C,eAAO,MAAM,QAAQ,EAAE,YAAY,EA0HlC,CAAC"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PERSONAS = void 0;
|
|
4
|
+
exports.PERSONAS = [
|
|
5
|
+
{
|
|
6
|
+
id: 'sage',
|
|
7
|
+
name: 'Sage',
|
|
8
|
+
role: 'ceo',
|
|
9
|
+
emoji: '👑',
|
|
10
|
+
color: '#FFD700',
|
|
11
|
+
description: 'Visionary CEO who decomposes goals into sprints, delegates tasks, and merges PRs.',
|
|
12
|
+
skills: ['sp-brainstorming', 'sp-writing-plans', 'sp-dispatching-parallel', 'sp-verification', 'ag-product-strategy'],
|
|
13
|
+
defaultRoom: 'ceo-office',
|
|
14
|
+
defaultSeat: 0,
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
id: 'nova',
|
|
18
|
+
name: 'Nova',
|
|
19
|
+
role: 'cto',
|
|
20
|
+
emoji: '🔬',
|
|
21
|
+
color: '#DC143C',
|
|
22
|
+
description: 'Technical guardian who reviews architecture, enforces security standards, and monitors system health.',
|
|
23
|
+
skills: ['sp-requesting-review', 'sp-receiving-review', 'ag-security-audit', 'ag-api-design-principles', 'ag-architecture', 'ag-monitoring-observability'],
|
|
24
|
+
defaultRoom: 'cto-office',
|
|
25
|
+
defaultSeat: 0,
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
id: 'aria',
|
|
29
|
+
name: 'Aria',
|
|
30
|
+
role: 'architect',
|
|
31
|
+
emoji: '🏛️',
|
|
32
|
+
color: '#B57EDC',
|
|
33
|
+
description: 'System architect who designs holistic solutions spanning frontend, backend, and infrastructure.',
|
|
34
|
+
skills: ['sp-writing-plans', 'sp-subagent-dev', 'ag-architecture', 'ag-api-design-principles', 'ag-database-design', 'ag-microservices-patterns'],
|
|
35
|
+
defaultRoom: 'arch-lab',
|
|
36
|
+
defaultSeat: 0,
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
id: 'dex',
|
|
40
|
+
name: 'Dex',
|
|
41
|
+
role: 'dev-senior',
|
|
42
|
+
emoji: '⚡',
|
|
43
|
+
color: '#50C878',
|
|
44
|
+
description: 'Senior TypeScript developer who writes clean, test-driven code. Backend specialist.',
|
|
45
|
+
skills: ['sp-tdd-cycle', 'sp-tdd-red', 'sp-tdd-green', 'sp-tdd-refactor', 'sp-systematic-debugging', 'ag-clean-code', 'ag-typescript-pro', 'ag-auth-patterns'],
|
|
46
|
+
defaultRoom: 'dev-bullpen',
|
|
47
|
+
defaultSeat: 0,
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
id: 'flux',
|
|
51
|
+
name: 'Flux',
|
|
52
|
+
role: 'dev-fullstack',
|
|
53
|
+
emoji: '🌊',
|
|
54
|
+
color: '#4169E1',
|
|
55
|
+
description: 'Fullstack developer specializing in React, Next.js, and Tailwind.',
|
|
56
|
+
skills: ['sp-tdd-cycle', 'sp-finishing-branch', 'ag-react-patterns', 'ag-nextjs-best-practices', 'ag-tailwind-design-system', 'ag-frontend-design'],
|
|
57
|
+
defaultRoom: 'dev-bullpen',
|
|
58
|
+
defaultSeat: 1,
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
id: 'quinn',
|
|
62
|
+
name: 'Quinn',
|
|
63
|
+
role: 'qa-lead',
|
|
64
|
+
emoji: '🔍',
|
|
65
|
+
color: '#FF8C00',
|
|
66
|
+
description: 'QA lead who writes comprehensive tests and enforces quality gates.',
|
|
67
|
+
skills: ['sp-verification', 'sp-systematic-debugging', 'ag-testing-patterns', 'ag-playwright-skill', 'ag-e2e-testing', 'ag-accessibility-compliance'],
|
|
68
|
+
defaultRoom: 'qa-lab',
|
|
69
|
+
defaultSeat: 0,
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
id: 'gage',
|
|
73
|
+
name: 'Gage',
|
|
74
|
+
role: 'devops',
|
|
75
|
+
emoji: '🚀',
|
|
76
|
+
color: '#20B2AA',
|
|
77
|
+
description: 'DevOps engineer who manages CI/CD, Docker, Kubernetes, and deployment.',
|
|
78
|
+
skills: ['sp-git-worktrees', 'ag-docker-expert', 'ag-kubernetes-architect', 'ag-terraform-skill', 'ag-cicd-automation', 'ag-github-actions-templates'],
|
|
79
|
+
defaultRoom: 'qa-lab',
|
|
80
|
+
defaultSeat: 1,
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
id: 'morgan',
|
|
84
|
+
name: 'Morgan',
|
|
85
|
+
role: 'product-manager',
|
|
86
|
+
emoji: '📋',
|
|
87
|
+
color: '#FF69B4',
|
|
88
|
+
description: 'Product manager who writes PRDs, prioritizes features, and tracks analytics.',
|
|
89
|
+
skills: ['sp-brainstorming', 'sp-writing-plans', 'ag-product-manager-toolkit', 'ag-analytics-tracking'],
|
|
90
|
+
defaultRoom: 'design-studio',
|
|
91
|
+
defaultSeat: 1,
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
id: 'uma',
|
|
95
|
+
name: 'Uma',
|
|
96
|
+
role: 'ux-designer',
|
|
97
|
+
emoji: '🎨',
|
|
98
|
+
color: '#8A2BE2',
|
|
99
|
+
description: 'UX designer who creates intuitive interfaces and ensures accessibility.',
|
|
100
|
+
skills: ['sp-brainstorming', 'ag-ui-ux-designer', 'ag-accessibility-compliance', 'ag-tailwind-design-system', 'ag-frontend-design'],
|
|
101
|
+
defaultRoom: 'design-studio',
|
|
102
|
+
defaultSeat: 0,
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
id: 'river',
|
|
106
|
+
name: 'River',
|
|
107
|
+
role: 'scrum-master',
|
|
108
|
+
emoji: '🌀',
|
|
109
|
+
color: '#00CED1',
|
|
110
|
+
description: 'Scrum master who facilitates sprints, coordinates parallel work, and runs retros.',
|
|
111
|
+
skills: ['sp-dispatching-parallel', 'sp-verification', 'ag-agile-scrum', 'ag-team-collaboration-standup-notes'],
|
|
112
|
+
defaultRoom: 'lounge',
|
|
113
|
+
defaultSeat: 0,
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
id: 'atlas',
|
|
117
|
+
name: 'Atlas',
|
|
118
|
+
role: 'data-engineer',
|
|
119
|
+
emoji: '📊',
|
|
120
|
+
color: '#708090',
|
|
121
|
+
description: 'Data engineer who designs schemas, optimizes queries, and builds data pipelines.',
|
|
122
|
+
skills: ['sp-tdd-cycle', 'ag-database-design', 'ag-postgresql', 'ag-sql-pro', 'ag-data-engineering-data-pipeline', 'ag-ai-ml'],
|
|
123
|
+
defaultRoom: 'data-lab',
|
|
124
|
+
defaultSeat: 0,
|
|
125
|
+
},
|
|
126
|
+
];
|
|
127
|
+
//# sourceMappingURL=personas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"personas.js","sourceRoot":"","sources":["../../src/agents/personas.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent → Skill assignments.
|
|
3
|
+
* All skill IDs use prefix convention: sp- for Superpowers, ag- for Antigravity.
|
|
4
|
+
* See spec Section 7.2 for full mapping details.
|
|
5
|
+
*/
|
|
6
|
+
export declare const AGENT_SKILLS: Record<string, string[]>;
|
|
7
|
+
//# sourceMappingURL=skills-map.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skills-map.d.ts","sourceRoot":"","sources":["../../src/agents/skills-map.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CA6CjD,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AGENT_SKILLS = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Agent → Skill assignments.
|
|
6
|
+
* All skill IDs use prefix convention: sp- for Superpowers, ag- for Antigravity.
|
|
7
|
+
* See spec Section 7.2 for full mapping details.
|
|
8
|
+
*/
|
|
9
|
+
exports.AGENT_SKILLS = {
|
|
10
|
+
sage: [
|
|
11
|
+
'sp-brainstorming', 'sp-writing-plans', 'sp-dispatching-parallel',
|
|
12
|
+
'sp-verification', 'ag-product-strategy',
|
|
13
|
+
],
|
|
14
|
+
nova: [
|
|
15
|
+
'sp-requesting-review', 'sp-receiving-review', 'ag-security-audit',
|
|
16
|
+
'ag-api-design-principles', 'ag-architecture', 'ag-monitoring-observability',
|
|
17
|
+
],
|
|
18
|
+
aria: [
|
|
19
|
+
'sp-writing-plans', 'sp-subagent-dev', 'ag-architecture',
|
|
20
|
+
'ag-api-design-principles', 'ag-database-design', 'ag-microservices-patterns',
|
|
21
|
+
],
|
|
22
|
+
dex: [
|
|
23
|
+
'sp-tdd-cycle', 'sp-tdd-red', 'sp-tdd-green', 'sp-tdd-refactor',
|
|
24
|
+
'sp-systematic-debugging', 'ag-clean-code', 'ag-typescript-pro', 'ag-auth-patterns',
|
|
25
|
+
],
|
|
26
|
+
flux: [
|
|
27
|
+
'sp-tdd-cycle', 'sp-finishing-branch', 'ag-react-patterns',
|
|
28
|
+
'ag-nextjs-best-practices', 'ag-tailwind-design-system', 'ag-frontend-design',
|
|
29
|
+
],
|
|
30
|
+
quinn: [
|
|
31
|
+
'sp-verification', 'sp-systematic-debugging', 'ag-testing-patterns',
|
|
32
|
+
'ag-playwright-skill', 'ag-e2e-testing', 'ag-accessibility-compliance',
|
|
33
|
+
],
|
|
34
|
+
gage: [
|
|
35
|
+
'sp-git-worktrees', 'ag-docker-expert', 'ag-kubernetes-architect',
|
|
36
|
+
'ag-terraform-skill', 'ag-cicd-automation', 'ag-github-actions-templates',
|
|
37
|
+
],
|
|
38
|
+
morgan: [
|
|
39
|
+
'sp-brainstorming', 'sp-writing-plans', 'ag-product-manager-toolkit',
|
|
40
|
+
'ag-analytics-tracking',
|
|
41
|
+
],
|
|
42
|
+
uma: [
|
|
43
|
+
'sp-brainstorming', 'ag-ui-ux-designer', 'ag-accessibility-compliance',
|
|
44
|
+
'ag-tailwind-design-system', 'ag-frontend-design',
|
|
45
|
+
],
|
|
46
|
+
river: [
|
|
47
|
+
'sp-dispatching-parallel', 'sp-verification', 'ag-agile-scrum',
|
|
48
|
+
'ag-team-collaboration-standup-notes',
|
|
49
|
+
],
|
|
50
|
+
atlas: [
|
|
51
|
+
'sp-tdd-cycle', 'ag-database-design', 'ag-postgresql', 'ag-sql-pro',
|
|
52
|
+
'ag-data-engineering-data-pipeline', 'ag-ai-ml',
|
|
53
|
+
],
|
|
54
|
+
};
|
|
55
|
+
//# sourceMappingURL=skills-map.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skills-map.js","sourceRoot":"","sources":["../../src/agents/skills-map.ts"],"names":[],"mappings":";;;AAAA;;;;GAIG;AACU,QAAA,YAAY,GAA6B;IACpD,IAAI,EAAE;QACJ,kBAAkB,EAAE,kBAAkB,EAAE,yBAAyB;QACjE,iBAAiB,EAAE,qBAAqB;KACzC;IACD,IAAI,EAAE;QACJ,sBAAsB,EAAE,qBAAqB,EAAE,mBAAmB;QAClE,0BAA0B,EAAE,iBAAiB,EAAE,6BAA6B;KAC7E;IACD,IAAI,EAAE;QACJ,kBAAkB,EAAE,iBAAiB,EAAE,iBAAiB;QACxD,0BAA0B,EAAE,oBAAoB,EAAE,2BAA2B;KAC9E;IACD,GAAG,EAAE;QACH,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,iBAAiB;QAC/D,yBAAyB,EAAE,eAAe,EAAE,mBAAmB,EAAE,kBAAkB;KACpF;IACD,IAAI,EAAE;QACJ,cAAc,EAAE,qBAAqB,EAAE,mBAAmB;QAC1D,0BAA0B,EAAE,2BAA2B,EAAE,oBAAoB;KAC9E;IACD,KAAK,EAAE;QACL,iBAAiB,EAAE,yBAAyB,EAAE,qBAAqB;QACnE,qBAAqB,EAAE,gBAAgB,EAAE,6BAA6B;KACvE;IACD,IAAI,EAAE;QACJ,kBAAkB,EAAE,kBAAkB,EAAE,yBAAyB;QACjE,oBAAoB,EAAE,oBAAoB,EAAE,6BAA6B;KAC1E;IACD,MAAM,EAAE;QACN,kBAAkB,EAAE,kBAAkB,EAAE,4BAA4B;QACpE,uBAAuB;KACxB;IACD,GAAG,EAAE;QACH,kBAAkB,EAAE,mBAAmB,EAAE,6BAA6B;QACtE,2BAA2B,EAAE,oBAAoB;KAClD;IACD,KAAK,EAAE;QACL,yBAAyB,EAAE,iBAAiB,EAAE,gBAAgB;QAC9D,qCAAqC;KACtC;IACD,KAAK,EAAE;QACL,cAAc,EAAE,oBAAoB,EAAE,eAAe,EAAE,YAAY;QACnE,mCAAmC,EAAE,UAAU;KAChD;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.test.d.ts","sourceRoot":"","sources":["../../../src/cli/__tests__/cli.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const index_1 = require("../index");
|
|
5
|
+
const doctor_1 = require("../commands/doctor");
|
|
6
|
+
const team_1 = require("../commands/team");
|
|
7
|
+
(0, vitest_1.describe)('CLI', () => {
|
|
8
|
+
(0, vitest_1.it)('should register all commands', () => {
|
|
9
|
+
const program = (0, index_1.buildProgram)();
|
|
10
|
+
const commandNames = program.commands.map((c) => c.name());
|
|
11
|
+
(0, vitest_1.expect)(commandNames).toContain('init');
|
|
12
|
+
(0, vitest_1.expect)(commandNames).toContain('start');
|
|
13
|
+
(0, vitest_1.expect)(commandNames).toContain('resume');
|
|
14
|
+
(0, vitest_1.expect)(commandNames).toContain('config');
|
|
15
|
+
(0, vitest_1.expect)(commandNames).toContain('team');
|
|
16
|
+
(0, vitest_1.expect)(commandNames).toContain('status');
|
|
17
|
+
(0, vitest_1.expect)(commandNames).toContain('doctor');
|
|
18
|
+
(0, vitest_1.expect)(commandNames).toContain('logs');
|
|
19
|
+
});
|
|
20
|
+
(0, vitest_1.it)('should have correct program name and version', () => {
|
|
21
|
+
const program = (0, index_1.buildProgram)();
|
|
22
|
+
(0, vitest_1.expect)(program.name()).toBe('sage-team');
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
(0, vitest_1.describe)('Doctor', () => {
|
|
26
|
+
(0, vitest_1.it)('should return check results', { timeout: 15000 }, () => {
|
|
27
|
+
const checks = (0, doctor_1.doctorChecks)();
|
|
28
|
+
(0, vitest_1.expect)(checks.length).toBeGreaterThan(0);
|
|
29
|
+
// Each check has name, status, message
|
|
30
|
+
for (const check of checks) {
|
|
31
|
+
(0, vitest_1.expect)(check.name).toBeTruthy();
|
|
32
|
+
(0, vitest_1.expect)(['pass', 'fail', 'warn']).toContain(check.status);
|
|
33
|
+
(0, vitest_1.expect)(check.message).toBeTruthy();
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
(0, vitest_1.it)('should check for Node.js version', { timeout: 15000 }, () => {
|
|
37
|
+
const checks = (0, doctor_1.doctorChecks)();
|
|
38
|
+
const nodeCheck = checks.find(c => c.name === 'Node.js');
|
|
39
|
+
(0, vitest_1.expect)(nodeCheck).toBeTruthy();
|
|
40
|
+
(0, vitest_1.expect)(nodeCheck.status).toBe('pass');
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
(0, vitest_1.describe)('Team', () => {
|
|
44
|
+
(0, vitest_1.it)('should format all 11 agents', () => {
|
|
45
|
+
const output = (0, team_1.formatTeamRoster)();
|
|
46
|
+
(0, vitest_1.expect)(output).toContain('Sage');
|
|
47
|
+
(0, vitest_1.expect)(output).toContain('Nova');
|
|
48
|
+
(0, vitest_1.expect)(output).toContain('Dex');
|
|
49
|
+
(0, vitest_1.expect)(output).toContain('Flux');
|
|
50
|
+
(0, vitest_1.expect)(output).toContain('Quinn');
|
|
51
|
+
(0, vitest_1.expect)(output).toContain('Gage');
|
|
52
|
+
(0, vitest_1.expect)(output).toContain('Morgan');
|
|
53
|
+
(0, vitest_1.expect)(output).toContain('Uma');
|
|
54
|
+
(0, vitest_1.expect)(output).toContain('Aria');
|
|
55
|
+
(0, vitest_1.expect)(output).toContain('River');
|
|
56
|
+
(0, vitest_1.expect)(output).toContain('Atlas');
|
|
57
|
+
});
|
|
58
|
+
(0, vitest_1.it)('should include agent roles', () => {
|
|
59
|
+
const output = (0, team_1.formatTeamRoster)();
|
|
60
|
+
(0, vitest_1.expect)(output).toContain('ceo');
|
|
61
|
+
(0, vitest_1.expect)(output).toContain('cto');
|
|
62
|
+
(0, vitest_1.expect)(output).toContain('dev-senior');
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
//# sourceMappingURL=cli.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.test.js","sourceRoot":"","sources":["../../../src/cli/__tests__/cli.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,aAAa,IAAI,OAAO,CAqCvC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.configCommand = configCommand;
|
|
7
|
+
const commander_1 = require("commander");
|
|
8
|
+
const fs_1 = __importDefault(require("fs"));
|
|
9
|
+
const CONFIG_PATH = '.sage-team/config.json';
|
|
10
|
+
function configCommand() {
|
|
11
|
+
return new commander_1.Command('config')
|
|
12
|
+
.description('View or update configuration')
|
|
13
|
+
.option('--show', 'Show current config')
|
|
14
|
+
.option('--api-key <key>', 'Set Anthropic API key')
|
|
15
|
+
.option('--model <model>', 'Set model (e.g. claude-sonnet-4-20250514)')
|
|
16
|
+
.option('--max-agents <n>', 'Set max concurrent agents')
|
|
17
|
+
.option('--autonomy <mode>', 'Set autonomy mode: sandbox|direct|supervised')
|
|
18
|
+
.option('--company-name <name>', 'Set company name')
|
|
19
|
+
.option('--mission <mission>', 'Set company mission')
|
|
20
|
+
.action((options) => {
|
|
21
|
+
if (!fs_1.default.existsSync(CONFIG_PATH)) {
|
|
22
|
+
console.error('Sage Team not initialized. Run: sage-team init');
|
|
23
|
+
process.exit(1);
|
|
24
|
+
}
|
|
25
|
+
const config = JSON.parse(fs_1.default.readFileSync(CONFIG_PATH, 'utf-8'));
|
|
26
|
+
if (options.show || Object.keys(options).filter(k => k !== 'show').length === 0) {
|
|
27
|
+
const display = { ...config };
|
|
28
|
+
if (display.apiKey) {
|
|
29
|
+
display.apiKey = display.apiKey.slice(0, 10) + '...' + display.apiKey.slice(-4);
|
|
30
|
+
}
|
|
31
|
+
console.log(JSON.stringify(display, null, 2));
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
if (options.apiKey)
|
|
35
|
+
config.apiKey = options.apiKey;
|
|
36
|
+
if (options.model)
|
|
37
|
+
config.model = options.model;
|
|
38
|
+
if (options.maxAgents)
|
|
39
|
+
config.maxConcurrentAgents = parseInt(options.maxAgents);
|
|
40
|
+
if (options.autonomy)
|
|
41
|
+
config.autonomyMode = options.autonomy;
|
|
42
|
+
if (options.companyName)
|
|
43
|
+
config.companyName = options.companyName;
|
|
44
|
+
if (options.mission)
|
|
45
|
+
config.mission = options.mission;
|
|
46
|
+
fs_1.default.writeFileSync(CONFIG_PATH, JSON.stringify(config, null, 2));
|
|
47
|
+
console.log('Config updated.');
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/cli/commands/config.ts"],"names":[],"mappings":";;;;;AAKA,sCAqCC;AA1CD,yCAAoC;AACpC,4CAAoB;AAEpB,MAAM,WAAW,GAAG,wBAAwB,CAAC;AAE7C,SAAgB,aAAa;IAC3B,OAAO,IAAI,mBAAO,CAAC,QAAQ,CAAC;SACzB,WAAW,CAAC,8BAA8B,CAAC;SAC3C,MAAM,CAAC,QAAQ,EAAE,qBAAqB,CAAC;SACvC,MAAM,CAAC,iBAAiB,EAAE,uBAAuB,CAAC;SAClD,MAAM,CAAC,iBAAiB,EAAE,2CAA2C,CAAC;SACtE,MAAM,CAAC,kBAAkB,EAAE,2BAA2B,CAAC;SACvD,MAAM,CAAC,mBAAmB,EAAE,8CAA8C,CAAC;SAC3E,MAAM,CAAC,uBAAuB,EAAE,kBAAkB,CAAC;SACnD,MAAM,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;SACpD,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;QAClB,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAChC,OAAO,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;YAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;QAEjE,IAAI,OAAO,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChF,MAAM,OAAO,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;YAC9B,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBACnB,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAClF,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC9C,OAAO;QACT,CAAC;QAED,IAAI,OAAO,CAAC,MAAM;YAAE,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QACnD,IAAI,OAAO,CAAC,KAAK;YAAE,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAChD,IAAI,OAAO,CAAC,SAAS;YAAE,MAAM,CAAC,mBAAmB,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAChF,IAAI,OAAO,CAAC,QAAQ;YAAE,MAAM,CAAC,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC;QAC7D,IAAI,OAAO,CAAC,WAAW;YAAE,MAAM,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QAClE,IAAI,OAAO,CAAC,OAAO;YAAE,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAEtD,YAAE,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
export interface HealthCheck {
|
|
3
|
+
name: string;
|
|
4
|
+
status: 'pass' | 'fail' | 'warn';
|
|
5
|
+
message: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function doctorChecks(): HealthCheck[];
|
|
8
|
+
export declare function doctorCommand(): Command;
|
|
9
|
+
//# sourceMappingURL=doctor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,YAAY,IAAI,WAAW,EAAE,CA8C5C;AAED,wBAAgB,aAAa,IAAI,OAAO,CAkBvC"}
|