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.
Files changed (58) hide show
  1. package/README.md +217 -0
  2. package/dist/index.js +2 -1
  3. package/dist/index.js.map +1 -1
  4. package/node_modules/@io/shared/dist/config.d.ts +25 -0
  5. package/node_modules/@io/shared/dist/config.d.ts.map +1 -0
  6. package/node_modules/@io/shared/dist/config.js +47 -0
  7. package/node_modules/@io/shared/dist/config.js.map +1 -0
  8. package/node_modules/@io/shared/dist/constants.d.ts +13 -0
  9. package/node_modules/@io/shared/dist/constants.d.ts.map +1 -0
  10. package/node_modules/@io/shared/dist/constants.js +34 -0
  11. package/node_modules/@io/shared/dist/constants.js.map +1 -0
  12. package/node_modules/@io/shared/dist/index.d.ts +11 -0
  13. package/node_modules/@io/shared/dist/index.d.ts.map +1 -0
  14. package/node_modules/@io/shared/dist/index.js +3 -0
  15. package/node_modules/@io/shared/dist/index.js.map +1 -0
  16. package/node_modules/@io/shared/dist/types/agents.d.ts +3 -0
  17. package/node_modules/@io/shared/dist/types/agents.d.ts.map +1 -0
  18. package/node_modules/@io/shared/dist/types/agents.js +2 -0
  19. package/node_modules/@io/shared/dist/types/agents.js.map +1 -0
  20. package/node_modules/@io/shared/dist/types/api.d.ts +33 -0
  21. package/node_modules/@io/shared/dist/types/api.d.ts.map +1 -0
  22. package/node_modules/@io/shared/dist/types/api.js +2 -0
  23. package/node_modules/@io/shared/dist/types/api.js.map +1 -0
  24. package/node_modules/@io/shared/dist/types/attachments.d.ts +10 -0
  25. package/node_modules/@io/shared/dist/types/attachments.d.ts.map +1 -0
  26. package/node_modules/@io/shared/dist/types/attachments.js +2 -0
  27. package/node_modules/@io/shared/dist/types/attachments.js.map +1 -0
  28. package/node_modules/@io/shared/dist/types/events.d.ts +44 -0
  29. package/node_modules/@io/shared/dist/types/events.d.ts.map +1 -0
  30. package/node_modules/@io/shared/dist/types/events.js +2 -0
  31. package/node_modules/@io/shared/dist/types/events.js.map +1 -0
  32. package/node_modules/@io/shared/dist/types/messages.d.ts +15 -0
  33. package/node_modules/@io/shared/dist/types/messages.d.ts.map +1 -0
  34. package/node_modules/@io/shared/dist/types/messages.js +2 -0
  35. package/node_modules/@io/shared/dist/types/messages.js.map +1 -0
  36. package/node_modules/@io/shared/dist/types/squads.d.ts +43 -0
  37. package/node_modules/@io/shared/dist/types/squads.d.ts.map +1 -0
  38. package/node_modules/@io/shared/dist/types/squads.js +2 -0
  39. package/node_modules/@io/shared/dist/types/squads.js.map +1 -0
  40. package/node_modules/@io/shared/dist/types/tokens.d.ts +19 -0
  41. package/node_modules/@io/shared/dist/types/tokens.d.ts.map +1 -0
  42. package/node_modules/@io/shared/dist/types/tokens.js +2 -0
  43. package/node_modules/@io/shared/dist/types/tokens.js.map +1 -0
  44. package/node_modules/@io/shared/package.json +18 -0
  45. package/node_modules/@io/shared/src/config.ts +74 -0
  46. package/node_modules/@io/shared/src/constants.ts +36 -0
  47. package/node_modules/@io/shared/src/index.ts +37 -0
  48. package/node_modules/@io/shared/src/types/agents.ts +3 -0
  49. package/node_modules/@io/shared/src/types/api.ts +35 -0
  50. package/node_modules/@io/shared/src/types/attachments.ts +9 -0
  51. package/node_modules/@io/shared/src/types/events.ts +81 -0
  52. package/node_modules/@io/shared/src/types/messages.ts +15 -0
  53. package/node_modules/@io/shared/src/types/squads.ts +53 -0
  54. package/node_modules/@io/shared/src/types/tokens.ts +19 -0
  55. package/node_modules/@io/shared/tsconfig.json +9 -0
  56. package/node_modules/@io/shared/tsconfig.tsbuildinfo +1 -0
  57. package/package.json +6 -2
  58. 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":"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"}
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,3 @@
1
+ export { AUTONOMY_TIERS, DEFAULT_CONFIG } from './constants.js';
2
+ export { loadConfig } from './config.js';
3
+ //# sourceMappingURL=index.js.map
@@ -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,3 @@
1
+ export type AgentRole = 'team-lead' | 'scribe' | 'qa-tester' | string;
2
+ export type AgentStatus = 'idle' | 'working' | 'meeting' | 'blocked' | 'error';
3
+ //# sourceMappingURL=agents.d.ts.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=agents.js.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/types/api.ts"],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ export interface Attachment {
2
+ id: string;
3
+ messageId?: string;
4
+ filename: string;
5
+ mimeType?: string;
6
+ sizeBytes?: number;
7
+ diskPath: string;
8
+ createdAt: Date;
9
+ }
10
+ //# sourceMappingURL=attachments.d.ts.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=attachments.js.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=events.js.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=messages.js.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=squads.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"squads.js","sourceRoot":"","sources":["../../src/types/squads.ts"],"names":[],"mappings":""}