heyio 3.0.0 → 3.0.2
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 +217 -0
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/node_modules/@io/shared/dist/config.d.ts +25 -0
- package/node_modules/@io/shared/dist/config.d.ts.map +1 -0
- package/node_modules/@io/shared/dist/config.js +47 -0
- package/node_modules/@io/shared/dist/config.js.map +1 -0
- package/node_modules/@io/shared/dist/constants.d.ts +13 -0
- package/node_modules/@io/shared/dist/constants.d.ts.map +1 -0
- package/node_modules/@io/shared/dist/constants.js +34 -0
- package/node_modules/@io/shared/dist/constants.js.map +1 -0
- package/node_modules/@io/shared/dist/index.d.ts +11 -0
- package/node_modules/@io/shared/dist/index.d.ts.map +1 -0
- package/node_modules/@io/shared/dist/index.js +3 -0
- package/node_modules/@io/shared/dist/index.js.map +1 -0
- package/node_modules/@io/shared/dist/types/agents.d.ts +3 -0
- package/node_modules/@io/shared/dist/types/agents.d.ts.map +1 -0
- package/node_modules/@io/shared/dist/types/agents.js +2 -0
- package/node_modules/@io/shared/dist/types/agents.js.map +1 -0
- package/node_modules/@io/shared/dist/types/api.d.ts +33 -0
- package/node_modules/@io/shared/dist/types/api.d.ts.map +1 -0
- package/node_modules/@io/shared/dist/types/api.js +2 -0
- package/node_modules/@io/shared/dist/types/api.js.map +1 -0
- package/node_modules/@io/shared/dist/types/attachments.d.ts +10 -0
- package/node_modules/@io/shared/dist/types/attachments.d.ts.map +1 -0
- package/node_modules/@io/shared/dist/types/attachments.js +2 -0
- package/node_modules/@io/shared/dist/types/attachments.js.map +1 -0
- package/node_modules/@io/shared/dist/types/events.d.ts +44 -0
- package/node_modules/@io/shared/dist/types/events.d.ts.map +1 -0
- package/node_modules/@io/shared/dist/types/events.js +2 -0
- package/node_modules/@io/shared/dist/types/events.js.map +1 -0
- package/node_modules/@io/shared/dist/types/messages.d.ts +15 -0
- package/node_modules/@io/shared/dist/types/messages.d.ts.map +1 -0
- package/node_modules/@io/shared/dist/types/messages.js +2 -0
- package/node_modules/@io/shared/dist/types/messages.js.map +1 -0
- package/node_modules/@io/shared/dist/types/squads.d.ts +43 -0
- package/node_modules/@io/shared/dist/types/squads.d.ts.map +1 -0
- package/node_modules/@io/shared/dist/types/squads.js +2 -0
- package/node_modules/@io/shared/dist/types/squads.js.map +1 -0
- package/node_modules/@io/shared/dist/types/tokens.d.ts +19 -0
- package/node_modules/@io/shared/dist/types/tokens.d.ts.map +1 -0
- package/node_modules/@io/shared/dist/types/tokens.js +2 -0
- package/node_modules/@io/shared/dist/types/tokens.js.map +1 -0
- package/node_modules/@io/shared/package.json +18 -0
- package/node_modules/@io/shared/src/config.ts +74 -0
- package/node_modules/@io/shared/src/constants.ts +36 -0
- package/node_modules/@io/shared/src/index.ts +37 -0
- package/node_modules/@io/shared/src/types/agents.ts +3 -0
- package/node_modules/@io/shared/src/types/api.ts +35 -0
- package/node_modules/@io/shared/src/types/attachments.ts +9 -0
- package/node_modules/@io/shared/src/types/events.ts +81 -0
- package/node_modules/@io/shared/src/types/messages.ts +15 -0
- package/node_modules/@io/shared/src/types/squads.ts +53 -0
- package/node_modules/@io/shared/src/types/tokens.ts +19 -0
- package/node_modules/@io/shared/tsconfig.json +9 -0
- package/node_modules/@io/shared/tsconfig.tsbuildinfo +1 -0
- package/package.json +6 -2
- package/src/index.ts +3 -2
package/README.md
ADDED
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="assets/IO-logo.svg" alt="IO Logo" width="200" />
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
<h1 align="center">IO</h1>
|
|
6
|
+
|
|
7
|
+
<p align="center">
|
|
8
|
+
<strong>AI Orchestrator Daemon — manage specialized agent squads for your software projects</strong>
|
|
9
|
+
</p>
|
|
10
|
+
|
|
11
|
+
<p align="center">
|
|
12
|
+
<a href="https://michaeljolley.github.io/io">Documentation</a> •
|
|
13
|
+
<a href="#getting-started">Getting Started</a> •
|
|
14
|
+
<a href="#architecture">Architecture</a>
|
|
15
|
+
</p>
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## What is IO?
|
|
20
|
+
|
|
21
|
+
IO is an always-running daemon that acts as your personal AI orchestrator. You talk to IO, and IO manages teams of specialized AI agents ("squads") that work on your codebases.
|
|
22
|
+
|
|
23
|
+
- **One conversation interface** — talk to IO via TUI, Telegram, or the web dashboard
|
|
24
|
+
- **Squad delegation** — IO automatically routes project questions to the right squad
|
|
25
|
+
- **Universe theming** — squads get pop-culture character names and personas via LLM
|
|
26
|
+
- **Web dashboard** — React SPA with real-time chat, squad management, and usage charts
|
|
27
|
+
- **Cron schedules** — automate recurring tasks like daily standups or issue triage
|
|
28
|
+
- **Inbox system** — squads can send you deliverables or ask blocking questions
|
|
29
|
+
- **Model management** — token tracking and configurable model selection per agent
|
|
30
|
+
|
|
31
|
+
## Architecture
|
|
32
|
+
|
|
33
|
+
```mermaid
|
|
34
|
+
graph TD
|
|
35
|
+
User["🧑 You<br/>(TUI / Telegram / Web)"]
|
|
36
|
+
Orch["🤖 Orchestrator<br/>(Copilot SDK · tool-calling)"]
|
|
37
|
+
Wiki["📚 Wiki<br/>(Knowledge Base)"]
|
|
38
|
+
Skills["🧩 Skills<br/>(SKILL.md)"]
|
|
39
|
+
Sched["⏰ Scheduler<br/>(cron jobs)"]
|
|
40
|
+
SquadA["👥 Squad A<br/>(Team Lead + Agents)"]
|
|
41
|
+
SquadB["👥 Squad B<br/>(Team Lead + Agents)"]
|
|
42
|
+
Web["🌐 Web Dashboard<br/>(React SPA)"]
|
|
43
|
+
|
|
44
|
+
User --> Orch
|
|
45
|
+
User --> Web
|
|
46
|
+
Web --> Orch
|
|
47
|
+
Orch --> SquadA
|
|
48
|
+
Orch --> SquadB
|
|
49
|
+
Orch --> Sched
|
|
50
|
+
Orch --> Wiki
|
|
51
|
+
Orch --> Skills
|
|
52
|
+
SquadA --> Wiki
|
|
53
|
+
SquadB --> Wiki
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Each squad has:
|
|
57
|
+
- **Team Lead** — receives objectives, creates plans, coordinates agents
|
|
58
|
+
- **Agents** — specialized workers (developer, reviewer, etc.) with pop-culture character names
|
|
59
|
+
- **Meetings** — structured collaboration between agents for planning and review
|
|
60
|
+
- **QA/Tester** — required veto-holding member who must approve before completion
|
|
61
|
+
|
|
62
|
+
## Getting Started
|
|
63
|
+
|
|
64
|
+
### Prerequisites
|
|
65
|
+
|
|
66
|
+
- Node.js 22+
|
|
67
|
+
- GitHub Copilot access (the daemon uses `@github/copilot-sdk`)
|
|
68
|
+
- Git
|
|
69
|
+
|
|
70
|
+
### Installation
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
git clone https://github.com/michaeljolley/io.git
|
|
74
|
+
cd io
|
|
75
|
+
npm install
|
|
76
|
+
npm run build
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Running
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
# Start the daemon
|
|
83
|
+
npm run dev
|
|
84
|
+
|
|
85
|
+
# Or build and start
|
|
86
|
+
npm run build
|
|
87
|
+
npm start
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
The daemon starts on port `7777` by default. The web dashboard is served at the same port — open `http://localhost:7777` in your browser.
|
|
91
|
+
|
|
92
|
+
### Configuration
|
|
93
|
+
|
|
94
|
+
Create `~/.io/config.json`:
|
|
95
|
+
|
|
96
|
+
```json
|
|
97
|
+
{
|
|
98
|
+
"apiPort": 7777,
|
|
99
|
+
"defaultModel": "claude-opus-4.6",
|
|
100
|
+
"logLevel": "info",
|
|
101
|
+
"maxInstancesPerSquad": 3,
|
|
102
|
+
"telegram": {
|
|
103
|
+
"botToken": "your-token-from-botfather",
|
|
104
|
+
"allowedChatIds": [12345678]
|
|
105
|
+
},
|
|
106
|
+
"supabase": {
|
|
107
|
+
"projectUrl": "https://your-project.supabase.co",
|
|
108
|
+
"anonKey": "eyJ...",
|
|
109
|
+
"jwtSecret": "your-jwt-secret"
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
All settings can also be controlled via environment variables (which take priority):
|
|
115
|
+
|
|
116
|
+
| Variable | Config Key | Default |
|
|
117
|
+
|----------|-----------|---------|
|
|
118
|
+
| `IO_PORT` | `apiPort` | `7777` |
|
|
119
|
+
| `IO_LOG_LEVEL` | `logLevel` | `info` |
|
|
120
|
+
| `IO_MODEL` | `defaultModel` | `claude-opus-4.6` |
|
|
121
|
+
| `IO_DATA_DIR` | `dataDir` | `~/.io` |
|
|
122
|
+
| `TELEGRAM_BOT_TOKEN` | `telegram.botToken` | — |
|
|
123
|
+
| `TELEGRAM_ALLOWED_CHAT_IDS` | `telegram.allowedChatIds` | — |
|
|
124
|
+
| `IO_SUPABASE_URL` | `supabase.projectUrl` | — |
|
|
125
|
+
| `IO_SUPABASE_ANON_KEY` | `supabase.anonKey` | — |
|
|
126
|
+
| `IO_SUPABASE_JWT_SECRET` | `supabase.jwtSecret` | — |
|
|
127
|
+
|
|
128
|
+
See the [Configuration Guide](https://michaeljolley.github.io/io/guides/configuration/) for full details.
|
|
129
|
+
|
|
130
|
+
### Authentication
|
|
131
|
+
|
|
132
|
+
When Supabase is configured, the web dashboard requires login and all API endpoints are secured with JWT verification. If Supabase is **not** configured, the API stays open (suitable for local-only use).
|
|
133
|
+
|
|
134
|
+
## Key Features
|
|
135
|
+
|
|
136
|
+
### Squads
|
|
137
|
+
|
|
138
|
+
Hire a squad for any project:
|
|
139
|
+
|
|
140
|
+
> "Hire a squad for https://github.com/org/my-app with the Star Wars universe"
|
|
141
|
+
|
|
142
|
+
IO creates a team with character names from your chosen universe (e.g., "Yoda" as Team Lead, "R2-D2" as DevOps). Each member gets a persona that influences their communication style.
|
|
143
|
+
|
|
144
|
+
### Web Dashboard
|
|
145
|
+
|
|
146
|
+
A full React SPA served by the daemon at the API port:
|
|
147
|
+
- **Chat** — real-time streaming conversation with IO
|
|
148
|
+
- **Squads** — view teams, members, active instances, and activity
|
|
149
|
+
- **Feed** — inbox of deliverables and blocking questions
|
|
150
|
+
- **Skills** — manage installed SKILL.md capabilities
|
|
151
|
+
- **Schedules** — CRUD for cron-based automation
|
|
152
|
+
- **Wiki** — knowledge base viewer and editor
|
|
153
|
+
- **Usage** — token and cost charts (by squad, model, time)
|
|
154
|
+
- **Settings** — configure all daemon options from the UI
|
|
155
|
+
|
|
156
|
+
### Schedules
|
|
157
|
+
|
|
158
|
+
Automate recurring work with cron expressions:
|
|
159
|
+
|
|
160
|
+
> "Create a daily standup for my-app at 9am on weekdays — have them review open issues and report progress"
|
|
161
|
+
|
|
162
|
+
### Inbox
|
|
163
|
+
|
|
164
|
+
Squads communicate back via the inbox:
|
|
165
|
+
- **Deliverables** — status reports, completed summaries
|
|
166
|
+
- **Blocking questions** — the squad pauses and waits for your answer
|
|
167
|
+
|
|
168
|
+
### Clients
|
|
169
|
+
|
|
170
|
+
| Client | Description |
|
|
171
|
+
|--------|-------------|
|
|
172
|
+
| Web Dashboard | React SPA at `http://localhost:7777` |
|
|
173
|
+
| TUI | Terminal interface built with Ink |
|
|
174
|
+
| Telegram | Bot integration via Grammy |
|
|
175
|
+
| REST API | HTTP endpoints at `/api/*` |
|
|
176
|
+
| WebSocket | Real-time streaming at `/ws` |
|
|
177
|
+
|
|
178
|
+
## Project Structure
|
|
179
|
+
|
|
180
|
+
```
|
|
181
|
+
packages/
|
|
182
|
+
├── shared/ # Types, constants, shared utilities
|
|
183
|
+
├── daemon/ # Core daemon (orchestrator, squads, API, scheduler)
|
|
184
|
+
├── web/ # Web dashboard (React + Vite + Tailwind)
|
|
185
|
+
├── tui/ # Terminal UI (Ink/React)
|
|
186
|
+
└── telegram/ # Telegram bot client
|
|
187
|
+
docs/ # Astro Starlight documentation site
|
|
188
|
+
.github/
|
|
189
|
+
└── workflows/
|
|
190
|
+
├── ci.yml # PR validation (lint, build, test)
|
|
191
|
+
├── release.yml # Tag-based release + npm publish
|
|
192
|
+
└── deploy-docs.yml # Docs site deployment
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
## Development
|
|
196
|
+
|
|
197
|
+
```bash
|
|
198
|
+
# Build all packages
|
|
199
|
+
npm run build
|
|
200
|
+
|
|
201
|
+
# Run daemon in dev mode (watches for changes)
|
|
202
|
+
npm run dev
|
|
203
|
+
|
|
204
|
+
# Run web dashboard dev server (with API proxy)
|
|
205
|
+
cd packages/web && npm run dev
|
|
206
|
+
|
|
207
|
+
# Build documentation
|
|
208
|
+
cd docs && npm run build
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
## Documentation
|
|
212
|
+
|
|
213
|
+
Full documentation is available at **[michaeljolley.github.io/io](https://michaeljolley.github.io/io)**.
|
|
214
|
+
|
|
215
|
+
## License
|
|
216
|
+
|
|
217
|
+
MIT
|
package/dist/index.js
CHANGED
|
@@ -17,11 +17,12 @@ import { initWiki } from './wiki/index.js';
|
|
|
17
17
|
const config = loadConfig();
|
|
18
18
|
// Ensure data directory exists
|
|
19
19
|
mkdirSync(config.dataDir, { recursive: true });
|
|
20
|
+
// Initialize logger first — other modules depend on it
|
|
21
|
+
const logger = initLogger(config);
|
|
20
22
|
// Initialize wiki directory structure
|
|
21
23
|
initWiki(config.dataDir);
|
|
22
24
|
// Initialize skills directory
|
|
23
25
|
initSkills(config.dataDir);
|
|
24
|
-
const logger = initLogger(config);
|
|
25
26
|
logger.info({ config: { ...config, dataDir: config.dataDir } }, 'IO daemon starting');
|
|
26
27
|
// Create API server
|
|
27
28
|
const apiServer = createApiServer(config);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAClF,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;AAE5B,+BAA+B;AAC/B,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAE/C,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export interface IOConfig {
|
|
2
|
+
apiPort: number;
|
|
3
|
+
logLevel: 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'fatal';
|
|
4
|
+
defaultModel: string;
|
|
5
|
+
maxInstancesPerSquad: number;
|
|
6
|
+
dataDir: string;
|
|
7
|
+
pricing: {
|
|
8
|
+
refreshIntervalHours: number;
|
|
9
|
+
};
|
|
10
|
+
telegram: {
|
|
11
|
+
botToken: string | null;
|
|
12
|
+
allowedChatIds: number[];
|
|
13
|
+
};
|
|
14
|
+
supabase: {
|
|
15
|
+
projectUrl: string | null;
|
|
16
|
+
anonKey: string | null;
|
|
17
|
+
jwtSecret: string | null;
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Load IO configuration. Priority: env vars > config file > defaults.
|
|
22
|
+
* Config file location: ~/.io/config.json (or IO_DATA_DIR/config.json).
|
|
23
|
+
*/
|
|
24
|
+
export declare function loadConfig(): IOConfig;
|
|
25
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,QAAQ;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;IAClE,YAAY,EAAE,MAAM,CAAC;IACrB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE;QACR,oBAAoB,EAAE,MAAM,CAAC;KAC7B,CAAC;IACF,QAAQ,EAAE;QACT,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QACxB,cAAc,EAAE,MAAM,EAAE,CAAC;KACzB,CAAC;IACF,QAAQ,EAAE;QACT,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;KACzB,CAAC;CACF;AASD;;;GAGG;AACH,wBAAgB,UAAU,IAAI,QAAQ,CAqCrC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
2
|
+
import { homedir } from 'node:os';
|
|
3
|
+
import { join } from 'node:path';
|
|
4
|
+
import { DEFAULT_CONFIG } from './constants.js';
|
|
5
|
+
function resolveDataDir(dir) {
|
|
6
|
+
if (dir.startsWith('~')) {
|
|
7
|
+
return join(homedir(), dir.slice(1));
|
|
8
|
+
}
|
|
9
|
+
return dir;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Load IO configuration. Priority: env vars > config file > defaults.
|
|
13
|
+
* Config file location: ~/.io/config.json (or IO_DATA_DIR/config.json).
|
|
14
|
+
*/
|
|
15
|
+
export function loadConfig() {
|
|
16
|
+
const dataDir = resolveDataDir(process.env.IO_DATA_DIR ?? DEFAULT_CONFIG.dataDir);
|
|
17
|
+
const configPath = join(dataDir, 'config.json');
|
|
18
|
+
let fileConfig = {};
|
|
19
|
+
if (existsSync(configPath)) {
|
|
20
|
+
const raw = readFileSync(configPath, 'utf-8');
|
|
21
|
+
fileConfig = JSON.parse(raw);
|
|
22
|
+
}
|
|
23
|
+
return {
|
|
24
|
+
apiPort: Number(process.env.IO_PORT) || fileConfig.apiPort || DEFAULT_CONFIG.apiPort,
|
|
25
|
+
logLevel: process.env.IO_LOG_LEVEL ||
|
|
26
|
+
fileConfig.logLevel ||
|
|
27
|
+
DEFAULT_CONFIG.logLevel,
|
|
28
|
+
defaultModel: process.env.IO_MODEL || fileConfig.defaultModel || DEFAULT_CONFIG.defaultModel,
|
|
29
|
+
maxInstancesPerSquad: fileConfig.maxInstancesPerSquad || DEFAULT_CONFIG.maxInstancesPerSquad,
|
|
30
|
+
dataDir,
|
|
31
|
+
pricing: {
|
|
32
|
+
refreshIntervalHours: fileConfig.pricing?.refreshIntervalHours || DEFAULT_CONFIG.pricing.refreshIntervalHours,
|
|
33
|
+
},
|
|
34
|
+
telegram: {
|
|
35
|
+
botToken: process.env.TELEGRAM_BOT_TOKEN || fileConfig.telegram?.botToken || null,
|
|
36
|
+
allowedChatIds: process.env.TELEGRAM_ALLOWED_CHAT_IDS
|
|
37
|
+
? process.env.TELEGRAM_ALLOWED_CHAT_IDS.split(',').map((id) => Number.parseInt(id.trim(), 10))
|
|
38
|
+
: fileConfig.telegram?.allowedChatIds || [],
|
|
39
|
+
},
|
|
40
|
+
supabase: {
|
|
41
|
+
projectUrl: process.env.IO_SUPABASE_URL || fileConfig.supabase?.projectUrl || null,
|
|
42
|
+
anonKey: process.env.IO_SUPABASE_ANON_KEY || fileConfig.supabase?.anonKey || null,
|
|
43
|
+
jwtSecret: process.env.IO_SUPABASE_JWT_SECRET || fileConfig.supabase?.jwtSecret || null,
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAsBhD,SAAS,cAAc,CAAC,GAAW;IAClC,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,GAAG,CAAC;AACZ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU;IACzB,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,cAAc,CAAC,OAAO,CAAC,CAAC;IAClF,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IAEhD,IAAI,UAAU,GAAwB,EAAE,CAAC;IACzC,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC9C,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO;QACN,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,OAAO,IAAI,cAAc,CAAC,OAAO;QACpF,QAAQ,EACN,OAAO,CAAC,GAAG,CAAC,YAAqC;YAClD,UAAU,CAAC,QAAQ;YACnB,cAAc,CAAC,QAAQ;QACxB,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,UAAU,CAAC,YAAY,IAAI,cAAc,CAAC,YAAY;QAC5F,oBAAoB,EAAE,UAAU,CAAC,oBAAoB,IAAI,cAAc,CAAC,oBAAoB;QAC5F,OAAO;QACP,OAAO,EAAE;YACR,oBAAoB,EACnB,UAAU,CAAC,OAAO,EAAE,oBAAoB,IAAI,cAAc,CAAC,OAAO,CAAC,oBAAoB;SACxF;QACD,QAAQ,EAAE;YACT,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,UAAU,CAAC,QAAQ,EAAE,QAAQ,IAAI,IAAI;YACjF,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,yBAAyB;gBACpD,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAC5D,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAC9B;gBACF,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,cAAc,IAAI,EAAE;SAC5C;QACD,QAAQ,EAAE;YACT,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,UAAU,CAAC,QAAQ,EAAE,UAAU,IAAI,IAAI;YAClF,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,UAAU,CAAC,QAAQ,EAAE,OAAO,IAAI,IAAI;YACjF,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,UAAU,CAAC,QAAQ,EAAE,SAAS,IAAI,IAAI;SACvF;KACD,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { AutonomyConfig } from './types/squads.js';
|
|
2
|
+
export declare const AUTONOMY_TIERS: Record<string, AutonomyConfig>;
|
|
3
|
+
export declare const DEFAULT_CONFIG: {
|
|
4
|
+
apiPort: number;
|
|
5
|
+
logLevel: "info";
|
|
6
|
+
defaultModel: string;
|
|
7
|
+
maxInstancesPerSquad: number;
|
|
8
|
+
dataDir: string;
|
|
9
|
+
pricing: {
|
|
10
|
+
refreshIntervalHours: number;
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAsBzD,CAAC;AAEF,eAAO,MAAM,cAAc;;;;;;;;;CAS1B,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export const AUTONOMY_TIERS = {
|
|
2
|
+
low: {
|
|
3
|
+
canMergePrs: false,
|
|
4
|
+
canCreateReleases: false,
|
|
5
|
+
canCloseIssues: false,
|
|
6
|
+
canSelfReview: false,
|
|
7
|
+
requiresUserApprovalFor: ['merge', 'release', 'close', 'review'],
|
|
8
|
+
},
|
|
9
|
+
medium: {
|
|
10
|
+
canMergePrs: false,
|
|
11
|
+
canCreateReleases: false,
|
|
12
|
+
canCloseIssues: true,
|
|
13
|
+
canSelfReview: true,
|
|
14
|
+
requiresUserApprovalFor: ['merge', 'release'],
|
|
15
|
+
},
|
|
16
|
+
high: {
|
|
17
|
+
canMergePrs: true,
|
|
18
|
+
canCreateReleases: true,
|
|
19
|
+
canCloseIssues: true,
|
|
20
|
+
canSelfReview: true,
|
|
21
|
+
requiresUserApprovalFor: [],
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
export const DEFAULT_CONFIG = {
|
|
25
|
+
apiPort: 7777,
|
|
26
|
+
logLevel: 'info',
|
|
27
|
+
defaultModel: 'claude-opus-4.6',
|
|
28
|
+
maxInstancesPerSquad: 3,
|
|
29
|
+
dataDir: '~/.io',
|
|
30
|
+
pricing: {
|
|
31
|
+
refreshIntervalHours: 24,
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,cAAc,GAAmC;IAC7D,GAAG,EAAE;QACJ,WAAW,EAAE,KAAK;QAClB,iBAAiB,EAAE,KAAK;QACxB,cAAc,EAAE,KAAK;QACrB,aAAa,EAAE,KAAK;QACpB,uBAAuB,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC;KAChE;IACD,MAAM,EAAE;QACP,WAAW,EAAE,KAAK;QAClB,iBAAiB,EAAE,KAAK;QACxB,cAAc,EAAE,IAAI;QACpB,aAAa,EAAE,IAAI;QACnB,uBAAuB,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;KAC7C;IACD,IAAI,EAAE;QACL,WAAW,EAAE,IAAI;QACjB,iBAAiB,EAAE,IAAI;QACvB,cAAc,EAAE,IAAI;QACpB,aAAa,EAAE,IAAI;QACnB,uBAAuB,EAAE,EAAE;KAC3B;CACD,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG;IAC7B,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,MAAe;IACzB,YAAY,EAAE,iBAAiB;IAC/B,oBAAoB,EAAE,CAAC;IACvB,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE;QACR,oBAAoB,EAAE,EAAE;KACxB;CACD,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export type { Message, Conversation } from './types/messages.js';
|
|
2
|
+
export type { Squad, SquadMember, SquadInstance, InstanceStatus, AutonomyTier, AutonomyConfig, } from './types/squads.js';
|
|
3
|
+
export type { AgentRole, AgentStatus } from './types/agents.js';
|
|
4
|
+
export type { TokenUsage, ModelPricing } from './types/tokens.js';
|
|
5
|
+
export type { Attachment } from './types/attachments.js';
|
|
6
|
+
export type { SquadEvent, SquadEventType, AgentEvent, AgentEventType, InstanceEvent, InstanceEventType, MeetingEvent, MeetingEventType, InboxEvent, InboxEventType, ScheduleEvent, ScheduleEventType, IOEvent, BaseEvent, } from './types/events.js';
|
|
7
|
+
export type { ApiMessage, ApiSquadResponse, ApiUsageResponse, ApiHealthResponse, } from './types/api.js';
|
|
8
|
+
export { AUTONOMY_TIERS, DEFAULT_CONFIG } from './constants.js';
|
|
9
|
+
export { loadConfig } from './config.js';
|
|
10
|
+
export type { IOConfig } from './config.js';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACjE,YAAY,EACX,KAAK,EACL,WAAW,EACX,aAAa,EACb,cAAc,EACd,YAAY,EACZ,cAAc,GACd,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAClE,YAAY,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,YAAY,EACX,UAAU,EACV,cAAc,EACd,UAAU,EACV,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,EAChB,UAAU,EACV,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,OAAO,EACP,SAAS,GACT,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACX,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,GACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,YAAY,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAkCA,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../src/types/agents.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,GAAG,MAAM,CAAC;AAEtE,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/types/agents.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export interface ApiMessage {
|
|
2
|
+
content: string;
|
|
3
|
+
source?: 'tui' | 'telegram' | 'web';
|
|
4
|
+
attachmentIds?: string[];
|
|
5
|
+
}
|
|
6
|
+
export interface ApiSquadResponse {
|
|
7
|
+
id: string;
|
|
8
|
+
name: string;
|
|
9
|
+
projectPath: string;
|
|
10
|
+
status: string;
|
|
11
|
+
autonomyTier: string;
|
|
12
|
+
memberCount: number;
|
|
13
|
+
activeInstances: number;
|
|
14
|
+
}
|
|
15
|
+
export interface ApiUsageResponse {
|
|
16
|
+
totalInputTokens: number;
|
|
17
|
+
totalOutputTokens: number;
|
|
18
|
+
totalEstimatedCost: number;
|
|
19
|
+
breakdown: {
|
|
20
|
+
model: string;
|
|
21
|
+
inputTokens: number;
|
|
22
|
+
outputTokens: number;
|
|
23
|
+
estimatedCost: number;
|
|
24
|
+
}[];
|
|
25
|
+
}
|
|
26
|
+
export interface ApiHealthResponse {
|
|
27
|
+
status: 'healthy' | 'degraded' | 'unhealthy';
|
|
28
|
+
uptime: number;
|
|
29
|
+
copilotConnected: boolean;
|
|
30
|
+
activeSquads: number;
|
|
31
|
+
activeInstances: number;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/types/api.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,KAAK,GAAG,UAAU,GAAG,KAAK,CAAC;IACpC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,gBAAgB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAChC,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,SAAS,EAAE;QACV,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,MAAM,CAAC;KACtB,EAAE,CAAC;CACJ;AAED,MAAM,WAAW,iBAAiB;IACjC,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,WAAW,CAAC;IAC7C,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,OAAO,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;CACxB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/types/api.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attachments.d.ts","sourceRoot":"","sources":["../../src/types/attachments.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,IAAI,CAAC;CAChB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attachments.js","sourceRoot":"","sources":["../../src/types/attachments.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export type SquadEventType = 'squad:created' | 'squad:disbanded' | 'squad:member_added' | 'squad:member_retired';
|
|
2
|
+
export type AgentEventType = 'agent:task_started' | 'agent:task_completed' | 'agent:tool_call' | 'agent:error' | 'agent:permission_denied';
|
|
3
|
+
export type InstanceEventType = 'instance:created' | 'instance:meeting_started' | 'instance:meeting_complete' | 'instance:work_started' | 'instance:pr_created' | 'instance:complete' | 'instance:failed';
|
|
4
|
+
export type MeetingEventType = 'meeting:contribution' | 'meeting:consensus_reached' | 'meeting:veto';
|
|
5
|
+
export type InboxEventType = 'inbox:new' | 'inbox:resolved';
|
|
6
|
+
export type ScheduleEventType = 'schedule:fired' | 'schedule:completed' | 'schedule:failed';
|
|
7
|
+
export interface BaseEvent {
|
|
8
|
+
id: string;
|
|
9
|
+
timestamp: Date;
|
|
10
|
+
squadId?: string;
|
|
11
|
+
instanceId?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface SquadEvent extends BaseEvent {
|
|
14
|
+
type: SquadEventType;
|
|
15
|
+
squadName: string;
|
|
16
|
+
data?: Record<string, unknown>;
|
|
17
|
+
}
|
|
18
|
+
export interface AgentEvent extends BaseEvent {
|
|
19
|
+
type: AgentEventType;
|
|
20
|
+
agentRole: string;
|
|
21
|
+
model?: string;
|
|
22
|
+
data?: Record<string, unknown>;
|
|
23
|
+
}
|
|
24
|
+
export interface InstanceEvent extends BaseEvent {
|
|
25
|
+
type: InstanceEventType;
|
|
26
|
+
data?: Record<string, unknown>;
|
|
27
|
+
}
|
|
28
|
+
export interface MeetingEvent extends BaseEvent {
|
|
29
|
+
type: MeetingEventType;
|
|
30
|
+
agentRole: string;
|
|
31
|
+
content: string;
|
|
32
|
+
}
|
|
33
|
+
export interface InboxEvent extends BaseEvent {
|
|
34
|
+
type: InboxEventType;
|
|
35
|
+
kind: 'deliverable' | 'question';
|
|
36
|
+
title: string;
|
|
37
|
+
entryId: string;
|
|
38
|
+
}
|
|
39
|
+
export interface ScheduleEvent extends BaseEvent {
|
|
40
|
+
type: ScheduleEventType;
|
|
41
|
+
data?: Record<string, unknown>;
|
|
42
|
+
}
|
|
43
|
+
export type IOEvent = SquadEvent | AgentEvent | InstanceEvent | MeetingEvent | InboxEvent | ScheduleEvent;
|
|
44
|
+
//# sourceMappingURL=events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/types/events.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GACvB,eAAe,GACf,iBAAiB,GACjB,oBAAoB,GACpB,sBAAsB,CAAC;AAE1B,MAAM,MAAM,cAAc,GACvB,oBAAoB,GACpB,sBAAsB,GACtB,iBAAiB,GACjB,aAAa,GACb,yBAAyB,CAAC;AAE7B,MAAM,MAAM,iBAAiB,GAC1B,kBAAkB,GAClB,0BAA0B,GAC1B,2BAA2B,GAC3B,uBAAuB,GACvB,qBAAqB,GACrB,mBAAmB,GACnB,iBAAiB,CAAC;AAErB,MAAM,MAAM,gBAAgB,GACzB,sBAAsB,GACtB,2BAA2B,GAC3B,cAAc,CAAC;AAElB,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,gBAAgB,CAAC;AAE5D,MAAM,MAAM,iBAAiB,GAAG,gBAAgB,GAAG,oBAAoB,GAAG,iBAAiB,CAAC;AAE5F,MAAM,WAAW,SAAS;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,IAAI,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,UAAW,SAAQ,SAAS;IAC5C,IAAI,EAAE,cAAc,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,UAAW,SAAQ,SAAS;IAC5C,IAAI,EAAE,cAAc,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,aAAc,SAAQ,SAAS;IAC/C,IAAI,EAAE,iBAAiB,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,YAAa,SAAQ,SAAS;IAC9C,IAAI,EAAE,gBAAgB,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAW,SAAQ,SAAS;IAC5C,IAAI,EAAE,cAAc,CAAC;IACrB,IAAI,EAAE,aAAa,GAAG,UAAU,CAAC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAc,SAAQ,SAAS;IAC/C,IAAI,EAAE,iBAAiB,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED,MAAM,MAAM,OAAO,GAChB,UAAU,GACV,UAAU,GACV,aAAa,GACb,YAAY,GACZ,UAAU,GACV,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/types/events.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface Message {
|
|
2
|
+
id: string;
|
|
3
|
+
role: 'user' | 'assistant' | 'system';
|
|
4
|
+
content: string;
|
|
5
|
+
source?: 'tui' | 'telegram' | 'web';
|
|
6
|
+
attachments?: string[];
|
|
7
|
+
createdAt: Date;
|
|
8
|
+
}
|
|
9
|
+
export interface Conversation {
|
|
10
|
+
id: string;
|
|
11
|
+
messages: Message[];
|
|
12
|
+
createdAt: Date;
|
|
13
|
+
updatedAt: Date;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=messages.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/types/messages.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,OAAO;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,KAAK,GAAG,UAAU,GAAG,KAAK,CAAC;IACpC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,IAAI,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;CAChB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/types/messages.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export type AutonomyTier = 'low' | 'medium' | 'high';
|
|
2
|
+
export interface AutonomyConfig {
|
|
3
|
+
canMergePrs: boolean;
|
|
4
|
+
canCreateReleases: boolean;
|
|
5
|
+
canCloseIssues: boolean;
|
|
6
|
+
canSelfReview: boolean;
|
|
7
|
+
requiresUserApprovalFor: string[];
|
|
8
|
+
}
|
|
9
|
+
export interface Squad {
|
|
10
|
+
id: string;
|
|
11
|
+
name: string;
|
|
12
|
+
projectPath: string;
|
|
13
|
+
repoUrl?: string;
|
|
14
|
+
universe?: string;
|
|
15
|
+
autonomyTier: AutonomyTier;
|
|
16
|
+
autonomyConfig: AutonomyConfig;
|
|
17
|
+
status: 'active' | 'paused' | 'disbanded';
|
|
18
|
+
createdAt: Date;
|
|
19
|
+
}
|
|
20
|
+
export interface SquadMember {
|
|
21
|
+
id: string;
|
|
22
|
+
squadId: string;
|
|
23
|
+
displayName: string;
|
|
24
|
+
roleName: string;
|
|
25
|
+
persona?: string;
|
|
26
|
+
skillFilePath?: string;
|
|
27
|
+
toolsAllowed: string[];
|
|
28
|
+
isVetoMember: boolean;
|
|
29
|
+
status: 'active' | 'retired';
|
|
30
|
+
createdAt: Date;
|
|
31
|
+
}
|
|
32
|
+
export type InstanceStatus = 'planning' | 'meeting' | 'working' | 'reviewing' | 'complete' | 'failed';
|
|
33
|
+
export interface SquadInstance {
|
|
34
|
+
id: string;
|
|
35
|
+
squadId: string;
|
|
36
|
+
issueRef?: string;
|
|
37
|
+
worktreePath?: string;
|
|
38
|
+
branchName?: string;
|
|
39
|
+
status: InstanceStatus;
|
|
40
|
+
createdAt: Date;
|
|
41
|
+
completedAt?: Date;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=squads.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"squads.d.ts","sourceRoot":"","sources":["../../src/types/squads.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;AAErD,MAAM,WAAW,cAAc;IAC9B,WAAW,EAAE,OAAO,CAAC;IACrB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,cAAc,EAAE,OAAO,CAAC;IACxB,aAAa,EAAE,OAAO,CAAC;IACvB,uBAAuB,EAAE,MAAM,EAAE,CAAC;CAClC;AAED,MAAM,WAAW,KAAK;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,YAAY,CAAC;IAC3B,cAAc,EAAE,cAAc,CAAC;IAC/B,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,WAAW,CAAC;IAC1C,SAAS,EAAE,IAAI,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;IACtB,MAAM,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC7B,SAAS,EAAE,IAAI,CAAC;CAChB;AAED,MAAM,MAAM,cAAc,GACvB,UAAU,GACV,SAAS,GACT,SAAS,GACT,WAAW,GACX,UAAU,GACV,QAAQ,CAAC;AAEZ,MAAM,WAAW,aAAa;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,cAAc,CAAC;IACvB,SAAS,EAAE,IAAI,CAAC;IAChB,WAAW,CAAC,EAAE,IAAI,CAAC;CACnB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"squads.js","sourceRoot":"","sources":["../../src/types/squads.ts"],"names":[],"mappings":""}
|