multiclaw 0.1.0 → 0.3.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/README.md +327 -0
- package/dist/index.js +8 -1
- package/package.json +13 -4
- package/src/commands/run.ts +6 -1
- package/src/index.ts +9 -1
- package/dist/commands/init.d.ts +0 -1
- package/dist/commands/init.js +0 -117
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/run.d.ts +0 -7
- package/dist/commands/run.js +0 -70
- package/dist/commands/run.js.map +0 -1
- package/dist/commands/serve.d.ts +0 -4
- package/dist/commands/serve.js +0 -9
- package/dist/commands/serve.js.map +0 -1
- package/dist/commands/upgrade.d.ts +0 -1
- package/dist/commands/upgrade.js +0 -31
- package/dist/commands/upgrade.js.map +0 -1
- package/dist/index.d.ts +0 -2
- package/dist/index.js.map +0 -1
- package/dist/lib.d.ts +0 -2
- package/dist/lib.js.map +0 -1
- package/dist/loader/loadConfig.d.ts +0 -2
- package/dist/loader/loadConfig.js +0 -42
- package/dist/loader/loadConfig.js.map +0 -1
- package/dist/reporters/ConsoleReporter.d.ts +0 -5
- package/dist/reporters/ConsoleReporter.js +0 -87
- package/dist/reporters/ConsoleReporter.js.map +0 -1
- package/dist/reporters/FileLogWriter.d.ts +0 -10
- package/dist/reporters/FileLogWriter.js +0 -33
- package/dist/reporters/FileLogWriter.js.map +0 -1
- package/tsconfig.tsbuildinfo +0 -1
package/README.md
ADDED
|
@@ -0,0 +1,327 @@
|
|
|
1
|
+
# multiclaw
|
|
2
|
+
|
|
3
|
+
[](https://www.npmjs.com/package/multiclaw)
|
|
4
|
+
[](https://github.com/shipengqi/multiclaw)
|
|
5
|
+
|
|
6
|
+
[中文](https://github.com/shipengqi/multiclaw/blob/main/README.zh-CN.md)
|
|
7
|
+
|
|
8
|
+
Multi-agent orchestration CLI. Define a pipeline of AI agents, give them a requirement, and watch them run in parallel or in sequence based on the dependency graph you declare.
|
|
9
|
+
|
|
10
|
+
## Prerequisites
|
|
11
|
+
|
|
12
|
+
At least one AI runtime must be installed:
|
|
13
|
+
|
|
14
|
+
| Runtime | Install |
|
|
15
|
+
|---------|---------|
|
|
16
|
+
| `claude` (default) | `npm install -g @anthropic-ai/claude-code` |
|
|
17
|
+
|
|
18
|
+
> **Future support:** We plan to add support for additional runtimes (Codex, OpenCode, Cursor) in upcoming releases.
|
|
19
|
+
|
|
20
|
+
## Install
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
npm install -g multiclaw
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Quick start
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
# 1. Scaffold a config in the current directory
|
|
30
|
+
multiclaw init
|
|
31
|
+
|
|
32
|
+
# 2. Run an orchestration
|
|
33
|
+
multiclaw run "Build a REST API for a todo list" --ui
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
`--ui` opens a real-time Dashboard in the browser. Omit it to run headless.
|
|
37
|
+
|
|
38
|
+
## Commands
|
|
39
|
+
|
|
40
|
+
### `multiclaw init`
|
|
41
|
+
|
|
42
|
+
Interactive scaffold. Creates `multiclaw.config.ts` in the current directory.
|
|
43
|
+
|
|
44
|
+
Prompts:
|
|
45
|
+
- **Project name** — defaults to the current directory name
|
|
46
|
+
- **Preset** — pipeline template (see [Presets](#presets))
|
|
47
|
+
- **Work directory** — where agents read and write files
|
|
48
|
+
|
|
49
|
+
### `multiclaw run <requirement> [options]`
|
|
50
|
+
|
|
51
|
+
Runs the orchestration defined in your config file.
|
|
52
|
+
|
|
53
|
+
| Option | Description |
|
|
54
|
+
|--------|-------------|
|
|
55
|
+
| `--config <path>` | Path to config file. Auto-discovers `multiclaw.config.ts` if omitted. |
|
|
56
|
+
| `--ui` | Start the Dashboard server and open it in the browser. |
|
|
57
|
+
| `--port <port>` | Dashboard port. Requires `--ui`. Default: `3210`. |
|
|
58
|
+
| `--server-url <url>` | Stream events to a running `multiclaw serve` instance. |
|
|
59
|
+
| `--no-leader` | Skip the leader agent and use the default pipeline directly. |
|
|
60
|
+
|
|
61
|
+
The `<requirement>` string is injected into every agent's prompt as `{{requirement}}`.
|
|
62
|
+
|
|
63
|
+
Each run creates an isolated timestamped subdirectory inside `workDir` (e.g. `workspace/run-2026-10-08T12-00-00`).
|
|
64
|
+
|
|
65
|
+
### `multiclaw serve [options]`
|
|
66
|
+
|
|
67
|
+
Start a persistent Dashboard server. Useful for CI or when you want a permanent URL to monitor runs.
|
|
68
|
+
|
|
69
|
+
| Option | Description |
|
|
70
|
+
|--------|-------------|
|
|
71
|
+
| `--port <port>` | Port to listen on. Default: `3210`. |
|
|
72
|
+
|
|
73
|
+
Connect a run to it with `multiclaw run "..." --server-url http://localhost:3210`.
|
|
74
|
+
|
|
75
|
+
## Config file
|
|
76
|
+
|
|
77
|
+
```typescript
|
|
78
|
+
// multiclaw.config.ts
|
|
79
|
+
import { defineConfig, agents } from "multiclaw"
|
|
80
|
+
|
|
81
|
+
export default defineConfig({
|
|
82
|
+
name: "My Project",
|
|
83
|
+
workDir: "./workspace",
|
|
84
|
+
|
|
85
|
+
// Variables available as {{key}} in every agent's taskPrompt.
|
|
86
|
+
// `requirement` is automatically injected from the CLI argument.
|
|
87
|
+
context: {
|
|
88
|
+
projectName: "My App",
|
|
89
|
+
},
|
|
90
|
+
|
|
91
|
+
// Optional: runs before the main pipeline to decide which agents are needed.
|
|
92
|
+
// The leader reads the requirement and the codebase, then outputs the agent IDs to run.
|
|
93
|
+
leader: agents.leader(),
|
|
94
|
+
|
|
95
|
+
logDir: "./logs", // optional; default: workDir/.multiclaw/logs
|
|
96
|
+
continueOnError: false, // optional; keep running if an agent fails
|
|
97
|
+
maxConcurrency: 4, // optional; max agents running at once
|
|
98
|
+
|
|
99
|
+
dashboard: {
|
|
100
|
+
port: 3210,
|
|
101
|
+
autoOpen: true,
|
|
102
|
+
},
|
|
103
|
+
|
|
104
|
+
agents: [
|
|
105
|
+
{
|
|
106
|
+
id: "architect", // unique identifier, used in dependsOn
|
|
107
|
+
name: "Architect", // display name
|
|
108
|
+
icon: "◆", // optional; shown in terminal and dashboard
|
|
109
|
+
runtime: "claude", // optional; default: "claude"
|
|
110
|
+
model: "opus", // optional; override default model for this agent
|
|
111
|
+
systemPrompt: "You are a software architect.", // optional
|
|
112
|
+
taskPrompt: `Design the system for {{requirement}}.
|
|
113
|
+
Read the brief at {{file:brief.md}} and write architecture.md.`,
|
|
114
|
+
tools: ["Read", "Write"],
|
|
115
|
+
dependsOn: [], // optional; list of agent ids this agent waits for
|
|
116
|
+
timeout: 600_000, // optional; ms, default: 600 000 (10 min)
|
|
117
|
+
retries: 0, // optional; retry count on failure, default: 0
|
|
118
|
+
workDir: "architect", // optional; subdirectory relative to global workDir
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
id: "developer",
|
|
122
|
+
name: "Developer",
|
|
123
|
+
model: "sonnet", // override model for this agent
|
|
124
|
+
taskPrompt: "Read architecture.md and implement the code.",
|
|
125
|
+
tools: ["Read", "Write", "Bash"],
|
|
126
|
+
dependsOn: ["architect"],
|
|
127
|
+
},
|
|
128
|
+
],
|
|
129
|
+
})
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### Top-level config fields
|
|
133
|
+
|
|
134
|
+
| Field | Type | Required | Description |
|
|
135
|
+
|-------|------|----------|-------------|
|
|
136
|
+
| `name` | string | ✓ | Project name, shown in the dashboard. |
|
|
137
|
+
| `workDir` | string | ✓ | Base directory where agents read and write files. |
|
|
138
|
+
| `agents` | AgentDefinition[] | ✓ | The agent pipeline (see Agent fields below). |
|
|
139
|
+
| `leader` | AgentDefinition | | Optional routing agent (see [Leader](#leader)). |
|
|
140
|
+
| `useLeader` | boolean | | Enable or disable the leader agent. Default: `true` when leader is configured. |
|
|
141
|
+
| `context` | Record<string, string> | | Variables available as `{{key}}` in every prompt. `requirement` is injected automatically. |
|
|
142
|
+
| `logDir` | string | | Log output directory. Default: `workDir/.multiclaw/logs`. |
|
|
143
|
+
| `continueOnError` | boolean | | Keep running when an agent fails. Default: `false`. |
|
|
144
|
+
| `maxConcurrency` | number | | Max agents running in parallel. Default: unlimited. |
|
|
145
|
+
| `dashboard.port` | number | | Dashboard port. Default: `3210`. |
|
|
146
|
+
| `dashboard.autoOpen` | boolean | | Open the dashboard in a browser automatically. Default: `true`. |
|
|
147
|
+
|
|
148
|
+
### Agent fields
|
|
149
|
+
|
|
150
|
+
| Field | Type | Required | Description |
|
|
151
|
+
|-------|------|----------|-------------|
|
|
152
|
+
| `id` | string | ✓ | Unique identifier. Used in `dependsOn`. |
|
|
153
|
+
| `name` | string | ✓ | Display name shown in terminal and dashboard. |
|
|
154
|
+
| `taskPrompt` | string | ✓ | Prompt sent to the AI runtime. Supports template variables. |
|
|
155
|
+
| `systemPrompt` | string | | Optional system prompt prepended to `taskPrompt`. |
|
|
156
|
+
| `icon` | string | | Unicode icon shown next to the agent name. |
|
|
157
|
+
| `runtime` | string | | `claude` (default). Additional runtimes coming soon. |
|
|
158
|
+
| `model` | string | | Override the default model for this agent. E.g. `"opus"`, `"sonnet"`, `"haiku"`. Takes precedence over `models`. |
|
|
159
|
+
| `models` | Record<string, string> | | Map of runtime names to model names. Used when `model` is not set. E.g. `{ claude: "opus", openai: "gpt-4" }`. |
|
|
160
|
+
| `tools` | string[] | | Allowed tools. Default: `["Read", "Write", "Bash"]`. |
|
|
161
|
+
| `dependsOn` | string[] | | Agent ids that must complete before this agent starts. |
|
|
162
|
+
| `timeout` | number | | Per-agent timeout in ms. Default: `600000` (10 min). |
|
|
163
|
+
| `retries` | number | | Number of retry attempts on failure. Default: `0`. |
|
|
164
|
+
| `workDir` | string | | Subdirectory (relative to global `workDir`) for this agent's CWD. |
|
|
165
|
+
|
|
166
|
+
### Template variables
|
|
167
|
+
|
|
168
|
+
Two syntaxes are supported in `taskPrompt` and `systemPrompt`:
|
|
169
|
+
|
|
170
|
+
| Syntax | Replaced with |
|
|
171
|
+
|--------|--------------|
|
|
172
|
+
| `{{key}}` | The value of `context.key` (or `requirement` from the CLI). |
|
|
173
|
+
| `{{file:path/to/file}}` | The contents of that file, resolved relative to `workDir`. |
|
|
174
|
+
| `{{pipelineAgents}}` | List of all agents running in this pipeline (id: name). Auto-injected; useful for the architect to decompose tasks per agent. |
|
|
175
|
+
|
|
176
|
+
## Parallelism
|
|
177
|
+
|
|
178
|
+
Agents are grouped into stages by their dependency graph (topological sort). All agents within the same stage run concurrently. `maxConcurrency` caps how many run at once globally.
|
|
179
|
+
|
|
180
|
+
```
|
|
181
|
+
Stage 1: product-manager
|
|
182
|
+
Stage 2: architect
|
|
183
|
+
Stage 3: backend-developer │ ui-designer ← parallel
|
|
184
|
+
Stage 4: code-reviewer │ devops ← parallel
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
## Dashboard
|
|
188
|
+
|
|
189
|
+
The real-time web UI shows:
|
|
190
|
+
|
|
191
|
+
- Stage timeline with agent status (running / done / failed / skipped)
|
|
192
|
+
- Live streaming logs per agent
|
|
193
|
+
- Per-agent duration and retry count
|
|
194
|
+
- Elapsed time while running; total time on completion
|
|
195
|
+
|
|
196
|
+
Start it with `--ui` on `run`, or run `multiclaw serve` for a persistent instance.
|
|
197
|
+
|
|
198
|
+
## Logs
|
|
199
|
+
|
|
200
|
+
After each run, all generated files are written under `workDir/.multiclaw/runs/run-<timestamp>/` (or `logDir` if set):
|
|
201
|
+
|
|
202
|
+
```
|
|
203
|
+
workDir/
|
|
204
|
+
└── .multiclaw/
|
|
205
|
+
└── runs/
|
|
206
|
+
└── run-2026-10-08T12-00-00/
|
|
207
|
+
├── <agent output files> ← files agents write (e.g. architecture.md)
|
|
208
|
+
└── logs/
|
|
209
|
+
├── <agentId>.log ← raw stdout per agent
|
|
210
|
+
└── report.json ← full orchestration result
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
| File | Contents |
|
|
214
|
+
|------|----------|
|
|
215
|
+
| `<agentId>.log` | Raw stdout from that agent's process |
|
|
216
|
+
| `report.json` | Full orchestration result (status, duration, output per agent) |
|
|
217
|
+
|
|
218
|
+
The log path is printed to the terminal at the start of every run.
|
|
219
|
+
|
|
220
|
+
## Presets
|
|
221
|
+
|
|
222
|
+
Presets are pipeline templates you can pick during `multiclaw init`:
|
|
223
|
+
|
|
224
|
+
| Preset | Pipeline | Agents |
|
|
225
|
+
|--------|----------|--------|
|
|
226
|
+
| `simple` | Architect → Arch Design Reviewer → Backend Developer → Code Reviewer | 4 |
|
|
227
|
+
| `backend` | Product Manager → Architect → Arch Design Reviewer → Backend Developer → Tester → Code Reviewer + DevOps | 7 |
|
|
228
|
+
| `fullstack` | Product Manager → Architect → Arch Design Reviewer → Backend Developer + UI Designer → UI Design Reviewer → Frontend Developer → Code Reviewer + DevOps | 9 |
|
|
229
|
+
|
|
230
|
+
## Leader
|
|
231
|
+
|
|
232
|
+
The `leader` field adds a routing agent that runs **before** the main pipeline. It reads the requirement and inspects the codebase, then decides which agents are actually needed for this task. Agents the leader omits are skipped.
|
|
233
|
+
|
|
234
|
+
```typescript
|
|
235
|
+
export default defineConfig({
|
|
236
|
+
leader: agents.leader(),
|
|
237
|
+
agents: [
|
|
238
|
+
agents.architect(),
|
|
239
|
+
agents.archDesignReviewer({ dependsOn: ["architect"] }),
|
|
240
|
+
agents.backendDeveloper({ dependsOn: ["arch-design-reviewer"] }),
|
|
241
|
+
agents.codeReviewer({ dependsOn: ["backend-developer"] }),
|
|
242
|
+
],
|
|
243
|
+
})
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
For a minor bug fix the leader might decide only `backend-developer` and `code-reviewer` are needed, skipping the design stages. For a greenfield feature it runs the full pipeline.
|
|
247
|
+
|
|
248
|
+
If the leader fails or produces invalid output, multiclaw falls back to running all agents.
|
|
249
|
+
|
|
250
|
+
### Disabling the leader
|
|
251
|
+
|
|
252
|
+
You can skip the leader and use the default pipeline directly in three ways:
|
|
253
|
+
|
|
254
|
+
1. **CLI option** (for a single run):
|
|
255
|
+
```bash
|
|
256
|
+
multiclaw run "your requirement" --no-leader
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
2. **Config file** (per-run, via environment variable or config override):
|
|
260
|
+
```typescript
|
|
261
|
+
export default defineConfig({
|
|
262
|
+
leader: agents.leader(),
|
|
263
|
+
useLeader: false, // disable leader
|
|
264
|
+
agents: [...],
|
|
265
|
+
})
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
3. **Remove the leader from config** (always use the default pipeline):
|
|
269
|
+
```typescript
|
|
270
|
+
export default defineConfig({
|
|
271
|
+
// leader field omitted
|
|
272
|
+
agents: [...],
|
|
273
|
+
})
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
## Architect and Task Decomposition
|
|
277
|
+
|
|
278
|
+
When the **architect** agent is in your pipeline, it produces three outputs:
|
|
279
|
+
|
|
280
|
+
1. **architecture.md** — architecture plan and module breakdown
|
|
281
|
+
2. **api-spec.md** — complete API specification
|
|
282
|
+
3. **task-plan.json** — structured task breakdown for all implementation agents in the pipeline
|
|
283
|
+
|
|
284
|
+
The `task-plan.json` file helps coordinate work across parallel agents by explicitly assigning scope to each agent. Each implementation agent (backend-developer, frontend-developer, ui-designer, devops, tester, etc.) reads this file to understand its specific responsibilities and dependencies.
|
|
285
|
+
|
|
286
|
+
**Example task-plan.json:**
|
|
287
|
+
```json
|
|
288
|
+
{
|
|
289
|
+
"projectName": "My App",
|
|
290
|
+
"requirement": "Build a todo list API with React UI",
|
|
291
|
+
"tasks": [
|
|
292
|
+
{
|
|
293
|
+
"id": "backend-developer",
|
|
294
|
+
"title": "REST API",
|
|
295
|
+
"scope": "Implement all endpoints per api-spec.md",
|
|
296
|
+
"dependsOn": []
|
|
297
|
+
},
|
|
298
|
+
{
|
|
299
|
+
"id": "frontend-developer",
|
|
300
|
+
"title": "React UI",
|
|
301
|
+
"scope": "Build React components following ui-design.md",
|
|
302
|
+
"dependsOn": []
|
|
303
|
+
},
|
|
304
|
+
{
|
|
305
|
+
"id": "devops",
|
|
306
|
+
"title": "Deployment",
|
|
307
|
+
"scope": "Containerize and set up CI/CD",
|
|
308
|
+
"dependsOn": ["backend-developer", "frontend-developer"]
|
|
309
|
+
}
|
|
310
|
+
]
|
|
311
|
+
}
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
If the architect is not in your pipeline, dev agents fall back to reading `architecture.md` and `api-spec.md` directly.
|
|
315
|
+
|
|
316
|
+
## Example
|
|
317
|
+
|
|
318
|
+
See [`examples/dev-team/`](https://github.com/shipengqi/multiclaw/tree/main/examples/dev-team) for a working three-agent pipeline (Architect → Developer → Reviewer).
|
|
319
|
+
|
|
320
|
+
```bash
|
|
321
|
+
cd examples/dev-team
|
|
322
|
+
pnpm dev
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
## License
|
|
326
|
+
|
|
327
|
+
[MIT](https://github.com/shipengqi/multiclaw/blob/main/LICENSE)
|
package/dist/index.js
CHANGED
|
@@ -1,14 +1,20 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { Command } from "commander";
|
|
3
|
+
import { readFileSync } from "fs";
|
|
4
|
+
import { dirname, join } from "path";
|
|
5
|
+
import { fileURLToPath } from "url";
|
|
3
6
|
import { runCommand } from "./commands/run";
|
|
4
7
|
import { initCommand } from "./commands/init";
|
|
5
8
|
import { serveCommand } from "./commands/serve";
|
|
6
9
|
import { upgradeCommand } from "./commands/upgrade";
|
|
10
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
11
|
+
const __dirname = dirname(__filename);
|
|
12
|
+
const pkg = JSON.parse(readFileSync(join(__dirname, "../package.json"), "utf-8"));
|
|
7
13
|
const program = new Command();
|
|
8
14
|
program
|
|
9
15
|
.name("multiclaw")
|
|
10
16
|
.description("Multi-agent orchestration CLI")
|
|
11
|
-
.version(
|
|
17
|
+
.version(pkg.version, "-v, --version", "Display version number");
|
|
12
18
|
program
|
|
13
19
|
.command("init")
|
|
14
20
|
.description("Scaffold a config file (interactive)")
|
|
@@ -20,6 +26,7 @@ program
|
|
|
20
26
|
.option("--ui", "Start Dashboard and open in browser")
|
|
21
27
|
.option("--port <port>", "Dashboard port (requires --ui)", (v) => parseInt(v, 10))
|
|
22
28
|
.option("--server-url <url>", "Connect to a running serve process")
|
|
29
|
+
.option("--no-leader", "Skip the leader agent and use the default pipeline")
|
|
23
30
|
.action((requirement, opts) => runCommand(requirement, opts));
|
|
24
31
|
program
|
|
25
32
|
.command("serve")
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "multiclaw",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"bin": {
|
|
6
6
|
"multiclaw": "dist/index.js"
|
|
@@ -13,14 +13,23 @@
|
|
|
13
13
|
"default": "./dist/lib.js"
|
|
14
14
|
}
|
|
15
15
|
},
|
|
16
|
+
"repository": {
|
|
17
|
+
"type": "git",
|
|
18
|
+
"url": "https://github.com/shipengqi/multiclaw.git",
|
|
19
|
+
"directory": "packages/cli"
|
|
20
|
+
},
|
|
21
|
+
"homepage": "https://github.com/shipengqi/multiclaw#readme",
|
|
22
|
+
"bugs": {
|
|
23
|
+
"url": "https://github.com/shipengqi/multiclaw/issues"
|
|
24
|
+
},
|
|
16
25
|
"dependencies": {
|
|
17
26
|
"@inquirer/prompts": "^8.7.3",
|
|
27
|
+
"@multiclawcli/core": "0.3.0",
|
|
28
|
+
"@multiclawcli/dashboard": "0.3.0",
|
|
18
29
|
"commander": "^12.0.0",
|
|
19
30
|
"open": "^10.0.0",
|
|
20
31
|
"tsx": "^4.7.0",
|
|
21
|
-
"ws": "^8.16.0"
|
|
22
|
-
"@multiclawcli/core": "0.1.0",
|
|
23
|
-
"@multiclawcli/dashboard": "0.1.0"
|
|
32
|
+
"ws": "^8.16.0"
|
|
24
33
|
},
|
|
25
34
|
"devDependencies": {
|
|
26
35
|
"@types/node": "^20.11.0",
|
package/src/commands/run.ts
CHANGED
|
@@ -10,11 +10,16 @@ export interface RunOptions {
|
|
|
10
10
|
ui?: boolean
|
|
11
11
|
serverUrl?: string
|
|
12
12
|
port?: number
|
|
13
|
+
noLeader?: boolean
|
|
13
14
|
}
|
|
14
15
|
|
|
15
16
|
export async function runCommand(requirement: string, options: RunOptions): Promise<void> {
|
|
16
17
|
const config = await loadConfig(options.config, requirement)
|
|
17
18
|
|
|
19
|
+
if (options.noLeader) {
|
|
20
|
+
config.useLeader = false
|
|
21
|
+
}
|
|
22
|
+
|
|
18
23
|
const ts = new Date().toISOString().replace(/[:.]/g, "-").slice(0, 19)
|
|
19
24
|
config.workDir = path.join(config.workDir, ".multiclaw", "runs", `run-${ts}`)
|
|
20
25
|
|
|
@@ -22,7 +27,7 @@ export async function runCommand(requirement: string, options: RunOptions): Prom
|
|
|
22
27
|
for (const name of runtimeNames) {
|
|
23
28
|
let rt
|
|
24
29
|
try { rt = runtimeRegistry.get(name) } catch {
|
|
25
|
-
console.error(`\x1b[31mError: Unknown runtime "${name}". Supported: claude
|
|
30
|
+
console.error(`\x1b[31mError: Unknown runtime "${name}". Supported: claude\x1b[0m`)
|
|
26
31
|
process.exit(1)
|
|
27
32
|
}
|
|
28
33
|
if (!(await rt.checkAvailable())) {
|
package/src/index.ts
CHANGED
|
@@ -1,16 +1,23 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { Command } from "commander"
|
|
3
|
+
import { readFileSync } from "fs"
|
|
4
|
+
import { dirname, join } from "path"
|
|
5
|
+
import { fileURLToPath } from "url"
|
|
3
6
|
import { runCommand } from "./commands/run"
|
|
4
7
|
import { initCommand } from "./commands/init"
|
|
5
8
|
import { serveCommand } from "./commands/serve"
|
|
6
9
|
import { upgradeCommand } from "./commands/upgrade"
|
|
7
10
|
|
|
11
|
+
const __filename = fileURLToPath(import.meta.url)
|
|
12
|
+
const __dirname = dirname(__filename)
|
|
13
|
+
const pkg = JSON.parse(readFileSync(join(__dirname, "../package.json"), "utf-8"))
|
|
14
|
+
|
|
8
15
|
const program = new Command()
|
|
9
16
|
|
|
10
17
|
program
|
|
11
18
|
.name("multiclaw")
|
|
12
19
|
.description("Multi-agent orchestration CLI")
|
|
13
|
-
.version(
|
|
20
|
+
.version(pkg.version, "-v, --version", "Display version number")
|
|
14
21
|
|
|
15
22
|
program
|
|
16
23
|
.command("init")
|
|
@@ -24,6 +31,7 @@ program
|
|
|
24
31
|
.option("--ui", "Start Dashboard and open in browser")
|
|
25
32
|
.option("--port <port>", "Dashboard port (requires --ui)", (v) => parseInt(v, 10))
|
|
26
33
|
.option("--server-url <url>", "Connect to a running serve process")
|
|
34
|
+
.option("--no-leader", "Skip the leader agent and use the default pipeline")
|
|
27
35
|
.action((requirement, opts) => runCommand(requirement, opts))
|
|
28
36
|
|
|
29
37
|
program
|
package/dist/commands/init.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function initCommand(): Promise<void>;
|
package/dist/commands/init.js
DELETED
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
import * as fs from "fs";
|
|
2
|
-
import * as path from "path";
|
|
3
|
-
import { execSync } from "child_process";
|
|
4
|
-
import { select, input } from "@inquirer/prompts";
|
|
5
|
-
// ─── Agent Block Definitions ──────────────────────────────────────────────────
|
|
6
|
-
const AGENT_BLOCKS = {
|
|
7
|
-
simple: ` agents.architect(),
|
|
8
|
-
agents.archDesignReviewer({ dependsOn: ["architect"] }),
|
|
9
|
-
agents.backendDeveloper({ dependsOn: ["arch-design-reviewer"] }),
|
|
10
|
-
agents.codeReviewer({ dependsOn: ["backend-developer"] }),`,
|
|
11
|
-
backend: ` agents.productManager(),
|
|
12
|
-
agents.architect({ dependsOn: ["product-manager"] }),
|
|
13
|
-
agents.archDesignReviewer({ dependsOn: ["architect"] }),
|
|
14
|
-
agents.backendDeveloper({ dependsOn: ["arch-design-reviewer"] }),
|
|
15
|
-
agents.tester({ dependsOn: ["backend-developer"] }),
|
|
16
|
-
agents.codeReviewer({ dependsOn: ["tester"] }),
|
|
17
|
-
agents.devops({ dependsOn: ["tester"] }),`,
|
|
18
|
-
fullstack: ` agents.productManager(),
|
|
19
|
-
agents.architect({ dependsOn: ["product-manager"] }),
|
|
20
|
-
agents.archDesignReviewer({ dependsOn: ["architect"] }),
|
|
21
|
-
agents.backendDeveloper({ dependsOn: ["arch-design-reviewer"] }),
|
|
22
|
-
agents.uiDesigner({ dependsOn: ["arch-design-reviewer"] }),
|
|
23
|
-
agents.uiDesignReviewer({ dependsOn: ["ui-designer"] }),
|
|
24
|
-
agents.frontendDeveloper({ dependsOn: ["ui-design-reviewer"] }),
|
|
25
|
-
agents.codeReviewer({ dependsOn: ["backend-developer", "frontend-developer"] }),
|
|
26
|
-
agents.devops({ dependsOn: ["backend-developer", "frontend-developer"] }),`,
|
|
27
|
-
};
|
|
28
|
-
const PRESET_DESCRIPTIONS = {
|
|
29
|
-
simple: "Architect → Arch Design Reviewer → Backend Developer → Code Reviewer (4 agents)",
|
|
30
|
-
backend: "Product Manager → Architect → Arch Design Reviewer → Backend Developer → Tester → Code Reviewer + DevOps (7 agents)",
|
|
31
|
-
fullstack: "Product Manager → Architect → Arch Design Reviewer → Backend Developer + UI Designer → UI Design Reviewer → Frontend Developer → Code Reviewer + DevOps (9 agents)",
|
|
32
|
-
};
|
|
33
|
-
const RUNTIME_INSTALL = {
|
|
34
|
-
claude: "npm install -g @anthropic-ai/claude-code",
|
|
35
|
-
codex: "npm install -g @openai/codex",
|
|
36
|
-
opencode: "npm install -g opencode",
|
|
37
|
-
cursor: "curl https://cursor.com/install | bash",
|
|
38
|
-
};
|
|
39
|
-
// ─── Config Generator ─────────────────────────────────────────────────────────
|
|
40
|
-
function generateConfig(opts) {
|
|
41
|
-
return `import { defineConfig, agents } from "multiclaw"
|
|
42
|
-
|
|
43
|
-
export default defineConfig({
|
|
44
|
-
name: "${opts.projectName}",
|
|
45
|
-
workDir: "${opts.workDir}",
|
|
46
|
-
context: {
|
|
47
|
-
projectName: "${opts.projectName}",
|
|
48
|
-
},
|
|
49
|
-
dashboard: { port: 3210, autoOpen: true },
|
|
50
|
-
agents: [
|
|
51
|
-
${AGENT_BLOCKS[opts.preset]}
|
|
52
|
-
],
|
|
53
|
-
})
|
|
54
|
-
`;
|
|
55
|
-
}
|
|
56
|
-
// ─── Command ──────────────────────────────────────────────────────────────────
|
|
57
|
-
export async function initCommand() {
|
|
58
|
-
const configPath = path.resolve(process.cwd(), "multiclaw.config.ts");
|
|
59
|
-
if (fs.existsSync(configPath)) {
|
|
60
|
-
console.error("\x1b[31mError: multiclaw.config.ts already exists\x1b[0m");
|
|
61
|
-
process.exit(1);
|
|
62
|
-
}
|
|
63
|
-
const defaultProjectName = path.basename(process.cwd());
|
|
64
|
-
const projectName = await input({
|
|
65
|
-
message: "Project name:",
|
|
66
|
-
default: defaultProjectName,
|
|
67
|
-
});
|
|
68
|
-
const preset = await select({
|
|
69
|
-
message: "Select a preset:",
|
|
70
|
-
choices: [
|
|
71
|
-
{ value: "simple", name: `simple — ${PRESET_DESCRIPTIONS.simple}` },
|
|
72
|
-
{ value: "backend", name: `backend — ${PRESET_DESCRIPTIONS.backend}` },
|
|
73
|
-
{ value: "fullstack", name: `fullstack — ${PRESET_DESCRIPTIONS.fullstack}` },
|
|
74
|
-
],
|
|
75
|
-
});
|
|
76
|
-
const workDir = await input({
|
|
77
|
-
message: "Work directory (where agents read and write files):",
|
|
78
|
-
default: ".",
|
|
79
|
-
});
|
|
80
|
-
try {
|
|
81
|
-
fs.writeFileSync(configPath, generateConfig({ preset, workDir, projectName }));
|
|
82
|
-
if (workDir !== ".") {
|
|
83
|
-
fs.mkdirSync(path.resolve(process.cwd(), workDir), { recursive: true });
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
catch (err) {
|
|
87
|
-
console.error(`\x1b[31mError: Failed to create files: ${err.message}\x1b[0m`);
|
|
88
|
-
process.exit(1);
|
|
89
|
-
}
|
|
90
|
-
console.log("");
|
|
91
|
-
console.log(`\x1b[32m✓\x1b[0m Created multiclaw.config.ts`);
|
|
92
|
-
console.log(` preset: ${preset} (${PRESET_DESCRIPTIONS[preset]})`);
|
|
93
|
-
console.log(` workDir: ${workDir}`);
|
|
94
|
-
console.log("");
|
|
95
|
-
console.log(`> Run: multiclaw run "describe your requirement" --ui`);
|
|
96
|
-
checkRuntime();
|
|
97
|
-
}
|
|
98
|
-
function checkRuntime() {
|
|
99
|
-
const runtimes = ["claude", "codex", "opencode"];
|
|
100
|
-
const available = runtimes.filter((r) => {
|
|
101
|
-
try {
|
|
102
|
-
execSync(`${r} --version`, { stdio: "ignore" });
|
|
103
|
-
return true;
|
|
104
|
-
}
|
|
105
|
-
catch {
|
|
106
|
-
return false;
|
|
107
|
-
}
|
|
108
|
-
});
|
|
109
|
-
if (available.length === 0) {
|
|
110
|
-
console.log("");
|
|
111
|
-
console.log("\x1b[33mWarning: No AI runtime detected. Install at least one:\x1b[0m");
|
|
112
|
-
for (const [name, cmd] of Object.entries(RUNTIME_INSTALL)) {
|
|
113
|
-
console.log(` \x1b[2m${name.padEnd(12)} ${cmd}\x1b[0m`);
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
//# sourceMappingURL=init.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/run.d.ts
DELETED
package/dist/commands/run.js
DELETED
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import * as path from "path";
|
|
2
|
-
import { Orchestrator as OrchestratorImpl, runtimeRegistry } from "@multiclawcli/core";
|
|
3
|
-
import { loadConfig } from "../loader/loadConfig";
|
|
4
|
-
import { ConsoleReporter } from "../reporters/ConsoleReporter";
|
|
5
|
-
import { FileLogWriter } from "../reporters/FileLogWriter";
|
|
6
|
-
export async function runCommand(requirement, options) {
|
|
7
|
-
const config = await loadConfig(options.config, requirement);
|
|
8
|
-
const ts = new Date().toISOString().replace(/[:.]/g, "-").slice(0, 19);
|
|
9
|
-
config.workDir = path.join(config.workDir, ".multiclaw", "runs", `run-${ts}`);
|
|
10
|
-
const runtimeNames = new Set(config.agents.map((a) => a.runtime ?? "claude"));
|
|
11
|
-
for (const name of runtimeNames) {
|
|
12
|
-
let rt;
|
|
13
|
-
try {
|
|
14
|
-
rt = runtimeRegistry.get(name);
|
|
15
|
-
}
|
|
16
|
-
catch {
|
|
17
|
-
console.error(`\x1b[31mError: Unknown runtime "${name}". Supported: claude, codex, opencode, cursor\x1b[0m`);
|
|
18
|
-
process.exit(1);
|
|
19
|
-
}
|
|
20
|
-
if (!(await rt.checkAvailable())) {
|
|
21
|
-
console.error(`\x1b[31mError: Runtime "${name}" is not available. Make sure the CLI is installed.\x1b[0m`);
|
|
22
|
-
process.exit(1);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
const orchestrator = new OrchestratorImpl(config);
|
|
26
|
-
new ConsoleReporter().attach(orchestrator.eventBus);
|
|
27
|
-
const logDir = config.logDir ?? path.join(config.workDir, "logs");
|
|
28
|
-
new FileLogWriter(logDir).attach(orchestrator.eventBus);
|
|
29
|
-
console.log(`\x1b[2mLogs: ${logDir}\x1b[0m`);
|
|
30
|
-
if (options.ui && options.serverUrl) {
|
|
31
|
-
console.warn("\x1b[33mWarning: --ui and --server-url cannot be used together. Using --ui.\x1b[0m");
|
|
32
|
-
}
|
|
33
|
-
if (options.ui) {
|
|
34
|
-
await attachDashboard(orchestrator, config, options);
|
|
35
|
-
}
|
|
36
|
-
else if (options.serverUrl) {
|
|
37
|
-
await attachRemoteServer(orchestrator, options.serverUrl);
|
|
38
|
-
}
|
|
39
|
-
const result = await orchestrator.run();
|
|
40
|
-
process.exit(result.success ? 0 : 1);
|
|
41
|
-
}
|
|
42
|
-
async function attachDashboard(orchestrator, config, options) {
|
|
43
|
-
const { DashboardServer } = await import("@multiclawcli/dashboard/server");
|
|
44
|
-
const port = options.port ?? config.dashboard?.port ?? 3210;
|
|
45
|
-
const server = new DashboardServer({ port });
|
|
46
|
-
await server.start();
|
|
47
|
-
server.bindEventBus(orchestrator.eventBus);
|
|
48
|
-
const url = `http://localhost:${port}`;
|
|
49
|
-
console.log(`\x1b[36mDashboard: ${url}\x1b[0m`);
|
|
50
|
-
if (config.dashboard?.autoOpen ?? true) {
|
|
51
|
-
const { default: open } = await import("open");
|
|
52
|
-
await open(url);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
async function attachRemoteServer(orchestrator, serverUrl) {
|
|
56
|
-
const { WebSocket } = await import("ws");
|
|
57
|
-
const wsUrl = serverUrl.replace(/^https?/, (p) => p === "https" ? "wss" : "ws");
|
|
58
|
-
const ws = new WebSocket(wsUrl);
|
|
59
|
-
await new Promise((resolve, reject) => {
|
|
60
|
-
const timer = setTimeout(() => reject(new Error(`Connection to serve timed out: ${serverUrl}`)), 5000);
|
|
61
|
-
ws.on("open", () => { clearTimeout(timer); resolve(); });
|
|
62
|
-
ws.on("error", (err) => { clearTimeout(timer); reject(err); });
|
|
63
|
-
});
|
|
64
|
-
console.log(`\x1b[36mConnected to Dashboard server: ${serverUrl}\x1b[0m`);
|
|
65
|
-
orchestrator.eventBus.subscribe((e) => {
|
|
66
|
-
if (ws.readyState === ws.OPEN)
|
|
67
|
-
ws.send(JSON.stringify(e));
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
//# sourceMappingURL=run.js.map
|
package/dist/commands/run.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/serve.d.ts
DELETED
package/dist/commands/serve.js
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
export async function serveCommand(options) {
|
|
2
|
-
const { DashboardServer } = await import("@multiclawcli/dashboard/server");
|
|
3
|
-
const port = options.port ?? 3210;
|
|
4
|
-
const server = new DashboardServer({ port, acceptClientEvents: true });
|
|
5
|
-
await server.start();
|
|
6
|
-
console.log(`\x1b[36mDashboard running at: http://localhost:${port}\x1b[0m`);
|
|
7
|
-
console.log(` In another terminal run: multiclaw run "<requirement>" --server-url http://localhost:${port}`);
|
|
8
|
-
}
|
|
9
|
-
//# sourceMappingURL=serve.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"serve.js","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAqB;IACtD,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,gCAAgC,CAAC,CAAA;IAC1E,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAA;IACjC,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAA;IACtE,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;IACpB,OAAO,CAAC,GAAG,CAAC,kDAAkD,IAAI,SAAS,CAAC,CAAA;IAC5E,OAAO,CAAC,GAAG,CAAC,0FAA0F,IAAI,EAAE,CAAC,CAAA;AAC/G,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function upgradeCommand(): Promise<void>;
|
package/dist/commands/upgrade.js
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { execSync } from "child_process";
|
|
2
|
-
import { createRequire } from "module";
|
|
3
|
-
const require = createRequire(import.meta.url);
|
|
4
|
-
export async function upgradeCommand() {
|
|
5
|
-
const { version: currentVersion } = require("../../package.json");
|
|
6
|
-
console.log(`Current version: v${currentVersion}`);
|
|
7
|
-
console.log("Checking for updates...");
|
|
8
|
-
let latestVersion;
|
|
9
|
-
try {
|
|
10
|
-
latestVersion = execSync("npm show multiclaw version", { encoding: "utf8" }).trim();
|
|
11
|
-
}
|
|
12
|
-
catch {
|
|
13
|
-
console.error("\x1b[31mError: Failed to fetch latest version from npm registry\x1b[0m");
|
|
14
|
-
process.exit(1);
|
|
15
|
-
return;
|
|
16
|
-
}
|
|
17
|
-
if (latestVersion === currentVersion) {
|
|
18
|
-
console.log(`\x1b[32m✓\x1b[0m Already on the latest version (v${currentVersion})`);
|
|
19
|
-
return;
|
|
20
|
-
}
|
|
21
|
-
console.log(`Upgrading multiclaw v${currentVersion} → v${latestVersion}...`);
|
|
22
|
-
try {
|
|
23
|
-
execSync("npm install -g multiclaw@latest", { stdio: "inherit" });
|
|
24
|
-
console.log(`\x1b[32m✓\x1b[0m Successfully upgraded to v${latestVersion}`);
|
|
25
|
-
}
|
|
26
|
-
catch {
|
|
27
|
-
console.error("\x1b[31mError: Upgrade failed. Try running manually: npm install -g multiclaw@latest\x1b[0m");
|
|
28
|
-
process.exit(1);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
//# sourceMappingURL=upgrade.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"upgrade.js","sourceRoot":"","sources":["../../src/commands/upgrade.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAA;AAEtC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAE9C,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAwB,CAAA;IAExF,OAAO,CAAC,GAAG,CAAC,qBAAqB,cAAc,EAAE,CAAC,CAAA;IAClD,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAA;IAEtC,IAAI,aAAqB,CAAA;IACzB,IAAI,CAAC;QACH,aAAa,GAAG,QAAQ,CAAC,4BAA4B,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;IACrF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,KAAK,CAAC,wEAAwE,CAAC,CAAA;QACvF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACf,OAAM;IACR,CAAC;IAED,IAAI,aAAa,KAAK,cAAc,EAAE,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,oDAAoD,cAAc,GAAG,CAAC,CAAA;QAClF,OAAM;IACR,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,wBAAwB,cAAc,OAAO,aAAa,KAAK,CAAC,CAAA;IAE5E,IAAI,CAAC;QACH,QAAQ,CAAC,iCAAiC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAA;QACjE,OAAO,CAAC,GAAG,CAAC,8CAA8C,aAAa,EAAE,CAAC,CAAA;IAC5E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,KAAK,CAAC,6FAA6F,CAAC,CAAA;QAC5G,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC"}
|
package/dist/index.d.ts
DELETED
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAEnD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;AAE7B,OAAO;KACJ,IAAI,CAAC,WAAW,CAAC;KACjB,WAAW,CAAC,+BAA+B,CAAC;KAC5C,OAAO,CAAC,OAAO,CAAC,CAAA;AAEnB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,sCAAsC,CAAC;KACnD,MAAM,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,CAAA;AAE9B,OAAO;KACJ,OAAO,CAAC,mBAAmB,CAAC;KAC5B,WAAW,CAAC,sBAAsB,CAAC;KACnC,MAAM,CAAC,iBAAiB,EAAE,iEAAiE,CAAC;KAC5F,MAAM,CAAC,MAAM,EAAE,qCAAqC,CAAC;KACrD,MAAM,CAAC,eAAe,EAAE,gCAAgC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;KACjF,MAAM,CAAC,oBAAoB,EAAE,oCAAoC,CAAC;KAClE,MAAM,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAA;AAE/D,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,qCAAqC,CAAC;KAClD,MAAM,CAAC,eAAe,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;KACvD,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAA;AAEvC,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,yCAAyC,CAAC;KACtD,MAAM,CAAC,GAAG,EAAE,CAAC,cAAc,EAAE,CAAC,CAAA;AAEjC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;IACtD,OAAO,CAAC,KAAK,CAAC,kBAAmB,GAAa,CAAC,OAAO,IAAI,GAAG,SAAS,CAAC,CAAA;IACvE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC,CAAC,CAAA"}
|
package/dist/lib.d.ts
DELETED
package/dist/lib.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lib.js","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA"}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import * as path from "path";
|
|
2
|
-
import * as fs from "fs";
|
|
3
|
-
const DEFAULT_CONFIG_NAMES = ["multiclaw.config.ts", "multiclaw.config.js"];
|
|
4
|
-
function findConfig(configPath) {
|
|
5
|
-
if (configPath) {
|
|
6
|
-
const abs = path.resolve(process.cwd(), configPath);
|
|
7
|
-
if (!fs.existsSync(abs))
|
|
8
|
-
throw new Error(`Config file not found: ${abs}`);
|
|
9
|
-
return abs;
|
|
10
|
-
}
|
|
11
|
-
for (const name of DEFAULT_CONFIG_NAMES) {
|
|
12
|
-
const abs = path.resolve(process.cwd(), name);
|
|
13
|
-
if (fs.existsSync(abs))
|
|
14
|
-
return abs;
|
|
15
|
-
}
|
|
16
|
-
throw new Error(`No config file found. Create multiclaw.config.ts in the current directory or use --config to specify a path.`);
|
|
17
|
-
}
|
|
18
|
-
export async function loadConfig(configPath, requirement) {
|
|
19
|
-
const absPath = findConfig(configPath);
|
|
20
|
-
// The compiled CLI cannot natively import .ts files — register tsx ESM hook
|
|
21
|
-
// so dynamic import can handle TypeScript config files.
|
|
22
|
-
const { register } = await import("tsx/esm/api");
|
|
23
|
-
const unregister = register();
|
|
24
|
-
let mod;
|
|
25
|
-
try {
|
|
26
|
-
mod = await import(absPath);
|
|
27
|
-
}
|
|
28
|
-
finally {
|
|
29
|
-
unregister();
|
|
30
|
-
}
|
|
31
|
-
const config = (mod.default ?? mod.config);
|
|
32
|
-
if (!config || !Array.isArray(config.agents)) {
|
|
33
|
-
throw new Error(`Invalid config format — expected: export default defineConfig({...})`);
|
|
34
|
-
}
|
|
35
|
-
const configDir = path.dirname(absPath);
|
|
36
|
-
config.workDir = path.resolve(configDir, config.workDir);
|
|
37
|
-
if (requirement !== undefined) {
|
|
38
|
-
config.context = { ...config.context, requirement };
|
|
39
|
-
}
|
|
40
|
-
return config;
|
|
41
|
-
}
|
|
42
|
-
//# sourceMappingURL=loadConfig.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"loadConfig.js","sourceRoot":"","sources":["../../src/loader/loadConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAC5B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AAGxB,MAAM,oBAAoB,GAAG,CAAC,qBAAqB,EAAE,qBAAqB,CAAC,CAAA;AAE3E,SAAS,UAAU,CAAC,UAAmB;IACrC,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,CAAC,CAAA;QACnD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,EAAE,CAAC,CAAA;QACzE,OAAO,GAAG,CAAA;IACZ,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,oBAAoB,EAAE,CAAC;QACxC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAA;QAC7C,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,GAAG,CAAA;IACpC,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,8GAA8G,CAAC,CAAA;AACjI,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,UAAmB,EAAE,WAAoB;IACxE,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,CAAC,CAAA;IAEtC,4EAA4E;IAC5E,wDAAwD;IACxD,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAA;IAChD,MAAM,UAAU,GAAG,QAAQ,EAAE,CAAA;IAC7B,IAAI,GAA4B,CAAA;IAChC,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,CAAA;IAC7B,CAAC;YAAS,CAAC;QACT,UAAU,EAAE,CAAA;IACd,CAAC;IACD,MAAM,MAAM,GAAoB,CAAC,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,MAAM,CAAoB,CAAA;IAE9E,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAA;IACzF,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IACvC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;IAExD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,MAAM,CAAC,OAAO,GAAG,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,CAAA;IACrD,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC"}
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
// Degraded to plain ASCII when NO_COLOR is set, TERM=dumb, or stdout is not a TTY (pipe/CI).
|
|
2
|
-
const isFancy = !process.env.NO_COLOR &&
|
|
3
|
-
process.env.TERM !== "dumb" &&
|
|
4
|
-
process.stdout.isTTY === true;
|
|
5
|
-
const S = isFancy
|
|
6
|
-
? { ok: "✓", fail: "✗", run: "›", retry: "↻", skip: "⊘", warn: "⚠", bullet: "·" }
|
|
7
|
-
: { ok: "+", fail: "x", run: ">", retry: "~", skip: "-", warn: "!", bullet: "*" };
|
|
8
|
-
const C = isFancy
|
|
9
|
-
? {
|
|
10
|
-
reset: "\x1b[0m", bold: "\x1b[1m", dim: "\x1b[2m",
|
|
11
|
-
cyan: "\x1b[36m", green: "\x1b[32m",
|
|
12
|
-
yellow: "\x1b[33m", red: "\x1b[31m", purple: "\x1b[35m",
|
|
13
|
-
}
|
|
14
|
-
: {
|
|
15
|
-
reset: "", bold: "", dim: "",
|
|
16
|
-
cyan: "", green: "",
|
|
17
|
-
yellow: "", red: "", purple: "",
|
|
18
|
-
};
|
|
19
|
-
export class ConsoleReporter {
|
|
20
|
-
attach(eventBus) {
|
|
21
|
-
return eventBus.subscribe((e) => this.handle(e));
|
|
22
|
-
}
|
|
23
|
-
handle(e) {
|
|
24
|
-
switch (e.type) {
|
|
25
|
-
case "orchestration:start": {
|
|
26
|
-
const line = (isFancy ? "═" : "=").repeat(50);
|
|
27
|
-
const edge = isFancy ? ["╔", "║", "╚", "╗", "╝"] : ["+", "|", "+", "+", "+"];
|
|
28
|
-
console.log(`\n${C.bold}${C.purple}${edge[0]}${line}${edge[3]}`);
|
|
29
|
-
console.log(`${edge[1]} ${S.run} ${e.payload.name.padEnd(46)}${edge[1]}`);
|
|
30
|
-
console.log(`${edge[2]}${line}${edge[4]}${C.reset}`);
|
|
31
|
-
console.log(`${C.cyan}${S.bullet} Agents: ${e.payload.totalAgents} Stages: ${e.payload.stages.length}${C.reset}\n`);
|
|
32
|
-
break;
|
|
33
|
-
}
|
|
34
|
-
case "stage:start": {
|
|
35
|
-
const dash = (isFancy ? "─" : "-").repeat(16);
|
|
36
|
-
console.log(`${C.cyan}${dash} Stage ${e.payload.stageIndex + 1} ${dash}${C.reset}`);
|
|
37
|
-
break;
|
|
38
|
-
}
|
|
39
|
-
case "agent:start": {
|
|
40
|
-
console.log(`${C.purple}${S.run} [${e.payload.agentName}] starting...${C.reset}`);
|
|
41
|
-
break;
|
|
42
|
-
}
|
|
43
|
-
case "agent:output": {
|
|
44
|
-
process.stdout.write(` ${e.payload.chunk}`);
|
|
45
|
-
break;
|
|
46
|
-
}
|
|
47
|
-
case "agent:complete": {
|
|
48
|
-
const d = (e.payload.duration / 1000).toFixed(1);
|
|
49
|
-
console.log(`${C.green}${S.ok} ${e.payload.agentName} done (${d}s)${C.reset}`);
|
|
50
|
-
break;
|
|
51
|
-
}
|
|
52
|
-
case "agent:failed": {
|
|
53
|
-
console.log(`${C.red}${S.fail} ${e.payload.agentName} failed: ${e.payload.error}${C.reset}`);
|
|
54
|
-
break;
|
|
55
|
-
}
|
|
56
|
-
case "agent:skipped": {
|
|
57
|
-
console.log(`${C.yellow}${S.skip} ${e.payload.agentName} skipped${C.reset}`);
|
|
58
|
-
break;
|
|
59
|
-
}
|
|
60
|
-
case "agent:retrying": {
|
|
61
|
-
console.log(`${C.yellow}${S.retry} ${e.payload.agentName} retry ${e.payload.attempt}/${e.payload.maxAttempts}: ${e.payload.error}${C.reset}`);
|
|
62
|
-
break;
|
|
63
|
-
}
|
|
64
|
-
case "orchestration:complete": {
|
|
65
|
-
const { success, totalDuration, agentResults } = e.payload;
|
|
66
|
-
const line = (isFancy ? "═" : "=").repeat(50);
|
|
67
|
-
const edge = isFancy ? ["╔", "║", "╚", "╗", "╝"] : ["+", "|", "+", "+", "+"];
|
|
68
|
-
const title = success ? `${S.ok} All done` : `${S.warn} Done (with failures)`;
|
|
69
|
-
console.log(`\n${C.bold}${C.purple}${edge[0]}${line}${edge[3]}`);
|
|
70
|
-
console.log(`${edge[1]} ${title.padEnd(48)}${edge[1]}`);
|
|
71
|
-
console.log(`${edge[2]}${line}${edge[4]}${C.reset}`);
|
|
72
|
-
const nameWidth = Math.max(8, ...agentResults.map((r) => r.agentName.length));
|
|
73
|
-
const totalStr = `${(totalDuration / 1000).toFixed(1)}s`;
|
|
74
|
-
console.log(` ~ ${"Total".padEnd(nameWidth)} ${totalStr.padStart(7)}`);
|
|
75
|
-
for (const r of agentResults) {
|
|
76
|
-
const icon = r.status === "success" ? S.ok : S.fail;
|
|
77
|
-
const color = r.status === "success" ? C.green : C.red;
|
|
78
|
-
const dur = `${(r.duration / 1000).toFixed(1)}s`;
|
|
79
|
-
console.log(` ${color}${icon}${C.reset} ${r.agentName.padEnd(nameWidth)} ${dur.padStart(7)}`);
|
|
80
|
-
}
|
|
81
|
-
console.log();
|
|
82
|
-
break;
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
//# sourceMappingURL=ConsoleReporter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ConsoleReporter.js","sourceRoot":"","sources":["../../src/reporters/ConsoleReporter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import type { EventBus } from "@multiclawcli/core";
|
|
2
|
-
export declare class FileLogWriter {
|
|
3
|
-
private logDir;
|
|
4
|
-
private streams;
|
|
5
|
-
constructor(logDir: string);
|
|
6
|
-
attach(eventBus: EventBus): () => void;
|
|
7
|
-
private handle;
|
|
8
|
-
private getStream;
|
|
9
|
-
private closeAll;
|
|
10
|
-
}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import * as fs from "fs";
|
|
2
|
-
import * as path from "path";
|
|
3
|
-
export class FileLogWriter {
|
|
4
|
-
constructor(logDir) {
|
|
5
|
-
this.logDir = logDir;
|
|
6
|
-
this.streams = new Map();
|
|
7
|
-
fs.mkdirSync(logDir, { recursive: true });
|
|
8
|
-
}
|
|
9
|
-
attach(eventBus) {
|
|
10
|
-
return eventBus.subscribe((e) => this.handle(e));
|
|
11
|
-
}
|
|
12
|
-
handle(e) {
|
|
13
|
-
if (e.type === "agent:output") {
|
|
14
|
-
this.getStream(e.payload.agentId).write(e.payload.chunk);
|
|
15
|
-
}
|
|
16
|
-
if (e.type === "orchestration:complete") {
|
|
17
|
-
fs.writeFileSync(path.join(this.logDir, "report.json"), JSON.stringify(e.payload, null, 2));
|
|
18
|
-
this.closeAll();
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
getStream(agentId) {
|
|
22
|
-
if (!this.streams.has(agentId)) {
|
|
23
|
-
this.streams.set(agentId, fs.createWriteStream(path.join(this.logDir, `${agentId}.log`)));
|
|
24
|
-
}
|
|
25
|
-
return this.streams.get(agentId);
|
|
26
|
-
}
|
|
27
|
-
closeAll() {
|
|
28
|
-
for (const s of this.streams.values())
|
|
29
|
-
s.end();
|
|
30
|
-
this.streams.clear();
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
//# sourceMappingURL=FileLogWriter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FileLogWriter.js","sourceRoot":"","sources":["../../src/reporters/FileLogWriter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AACxB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAG5B,MAAM,OAAO,aAAa;IAGxB,YAAoB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;QAF1B,YAAO,GAAG,IAAI,GAAG,EAA0B,CAAA;QAGjD,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC3C,CAAC;IAED,MAAM,CAAC,QAAkB;QACvB,OAAO,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;IAClD,CAAC;IAEO,MAAM,CAAC,CAAiB;QAC9B,IAAI,CAAC,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YAC9B,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAC1D,CAAC;QACD,IAAI,CAAC,CAAC,IAAI,KAAK,wBAAwB,EAAE,CAAC;YACxC,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,EACrC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CACnC,CAAA;YACD,IAAI,CAAC,QAAQ,EAAE,CAAA;QACjB,CAAC;IACH,CAAC;IAEO,SAAS,CAAC,OAAe;QAC/B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,OAAO,CAAC,GAAG,CACd,OAAO,EACP,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,OAAO,MAAM,CAAC,CAAC,CAC/D,CAAA;QACH,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAE,CAAA;IACnC,CAAC;IAEO,QAAQ;QACd,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YAAE,CAAC,CAAC,GAAG,EAAE,CAAA;QAC9C,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;IACtB,CAAC;CACF"}
|
package/tsconfig.tsbuildinfo
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"fileNames":["../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.dom.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.string.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.decorators.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../node_modules/.pnpm/commander@12.1.0/node_modules/commander/typings/index.d.ts","../../node_modules/.pnpm/commander@12.1.0/node_modules/commander/typings/esm.d.mts","../core/dist/types/agent.d.ts","../core/dist/types/runtime.d.ts","../core/dist/types/config.d.ts","../core/dist/types/event.d.ts","../core/dist/types/index.d.ts","../core/dist/event/eventbus.d.ts","../core/dist/orchestrator/orchestrator.d.ts","../core/dist/orchestrator/stagebuilder.d.ts","../core/dist/runtime/runtimebase.d.ts","../core/dist/runtime/clauderuntime.d.ts","../core/dist/runtime/codexruntime.d.ts","../core/dist/runtime/opencoderuntime.d.ts","../core/dist/runtime/cursorruntime.d.ts","../core/dist/runtime/index.d.ts","../core/dist/config/defineconfig.d.ts","../core/dist/agents/architect.d.ts","../core/dist/agents/product-manager.d.ts","../core/dist/agents/backend-developer.d.ts","../core/dist/agents/frontend-developer.d.ts","../core/dist/agents/tester.d.ts","../core/dist/agents/reviewer.d.ts","../core/dist/agents/arch-design-reviewer.d.ts","../core/dist/agents/ui-designer.d.ts","../core/dist/agents/ui-design-reviewer.d.ts","../core/dist/agents/code-reviewer.d.ts","../core/dist/agents/devops.d.ts","../core/dist/agents/index.d.ts","../core/dist/index.d.ts","../../node_modules/.pnpm/tsx@4.23.15/node_modules/tsx/dist/esm/api/index.d.mts","./src/loader/loadconfig.ts","./src/reporters/consolereporter.ts","./src/reporters/filelogwriter.ts","../dashboard/dist/server/dashboardserver.d.ts","../dashboard/dist/server/index.d.ts","../../node_modules/.pnpm/open@10.2.0/node_modules/open/index.d.ts","../../node_modules/.pnpm/@types+node@20.19.43/node_modules/@types/node/compatibility/disposable.d.ts","../../node_modules/.pnpm/@types+node@20.19.43/node_modules/@types/node/compatibility/indexable.d.ts","../../node_modules/.pnpm/@types+node@20.19.43/node_modules/@types/node/compatibility/iterators.d.ts","../../node_modules/.pnpm/@types+node@20.19.43/node_modules/@types/node/compatibility/index.d.ts","../../node_modules/.pnpm/@types+node@20.19.43/node_modules/@types/node/globals.typedarray.d.ts","../../node_modules/.pnpm/@types+node@20.19.43/node_modules/@types/node/buffer.buffer.d.ts","../../node_modules/.pnpm/@types+node@20.19.43/node_modules/@types/node/globals.d.ts","../../node_modules/.pnpm/@types+node@20.19.43/node_modules/@types/node/web-globals/abortcontroller.d.ts","../../node_modules/.pnpm/@types+node@20.19.43/node_modules/@types/node/web-globals/domexception.d.ts","../../node_modules/.pnpm/@types+node@20.19.43/node_modules/@types/node/web-globals/events.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/header.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/readable.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/file.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/fetch.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/formdata.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/connector.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/client.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/errors.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/dispatcher.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/global-dispatcher.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/global-origin.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/pool-stats.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/pool.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/handlers.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/balanced-pool.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/agent.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-interceptor.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-agent.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-client.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-pool.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-errors.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/proxy-agent.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/env-http-proxy-agent.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/retry-handler.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/retry-agent.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/api.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/interceptors.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/util.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/cookies.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/patch.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/websocket.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/eventsource.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/filereader.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/diagnostics-channel.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/content-type.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/cache.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/index.d.ts","../../node_modules/.pnpm/@types+node@20.19.43/node_modules/@types/node/web-globals/fetch.d.ts","../../node_modules/.pnpm/@types+node@20.19.43/node_modules/@types/node/assert.d.ts","../../node_modules/.pnpm/@types+node@20.19.43/node_modules/@types/node/assert/strict.d.ts","../../node_modules/.pnpm/@types+node@20.19.43/node_modules/@types/node/async_hooks.d.ts","../../node_modules/.pnpm/@types+node@20.19.43/node_modules/@types/node/buffer.d.ts","../../node_modules/.pnpm/@types+node@20.19.43/node_modules/@types/node/child_process.d.ts","../../node_modules/.pnpm/@types+node@20.19.43/node_modules/@types/node/cluster.d.ts","../../node_modules/.pnpm/@types+node@20.19.43/node_modules/@types/node/console.d.ts","../../node_modules/.pnpm/@types+node@20.19.43/node_modules/@types/node/constants.d.ts","../../node_modules/.pnpm/@types+node@20.19.43/node_modules/@types/node/crypto.d.ts","../../node_modules/.pnpm/@types+node@20.19.43/node_modules/@types/node/dgram.d.ts","../../node_modules/.pnpm/@types+node@20.19.43/node_modules/@types/node/diagnostics_channel.d.ts","../../node_modules/.pnpm/@types+node@20.19.43/node_modules/@types/node/dns.d.ts","../../node_modules/.pnpm/@types+node@20.19.43/node_modules/@types/node/dns/promises.d.ts","../../node_modules/.pnpm/@types+node@20.19.43/node_modules/@types/node/domain.d.ts","../../node_modules/.pnpm/@types+node@20.19.43/node_modules/@types/node/events.d.ts","../../node_modules/.pnpm/@types+node@20.19.43/node_modules/@types/node/fs.d.ts","../../node_modules/.pnpm/@types+node@20.19.43/node_modules/@types/node/fs/promises.d.ts","../../node_modules/.pnpm/@types+node@20.19.43/node_modules/@types/node/http.d.ts","../../node_modules/.pnpm/@types+node@20.19.43/node_modules/@types/node/http2.d.ts","../../node_modules/.pnpm/@types+node@20.19.43/node_modules/@types/node/https.d.ts","../../node_modules/.pnpm/@types+node@20.19.43/node_modules/@types/node/inspector.generated.d.ts","../../node_modules/.pnpm/@types+node@20.19.43/node_modules/@types/node/module.d.ts","../../node_modules/.pnpm/@types+node@20.19.43/node_modules/@types/node/net.d.ts","../../node_modules/.pnpm/@types+node@20.19.43/node_modules/@types/node/os.d.ts","../../node_modules/.pnpm/@types+node@20.19.43/node_modules/@types/node/path.d.ts","../../node_modules/.pnpm/@types+node@20.19.43/node_modules/@types/node/perf_hooks.d.ts","../../node_modules/.pnpm/@types+node@20.19.43/node_modules/@types/node/process.d.ts","../../node_modules/.pnpm/@types+node@20.19.43/node_modules/@types/node/punycode.d.ts","../../node_modules/.pnpm/@types+node@20.19.43/node_modules/@types/node/querystring.d.ts","../../node_modules/.pnpm/@types+node@20.19.43/node_modules/@types/node/readline.d.ts","../../node_modules/.pnpm/@types+node@20.19.43/node_modules/@types/node/readline/promises.d.ts","../../node_modules/.pnpm/@types+node@20.19.43/node_modules/@types/node/repl.d.ts","../../node_modules/.pnpm/@types+node@20.19.43/node_modules/@types/node/sea.d.ts","../../node_modules/.pnpm/@types+node@20.19.43/node_modules/@types/node/stream.d.ts","../../node_modules/.pnpm/@types+node@20.19.43/node_modules/@types/node/stream/promises.d.ts","../../node_modules/.pnpm/@types+node@20.19.43/node_modules/@types/node/stream/consumers.d.ts","../../node_modules/.pnpm/@types+node@20.19.43/node_modules/@types/node/stream/web.d.ts","../../node_modules/.pnpm/@types+node@20.19.43/node_modules/@types/node/string_decoder.d.ts","../../node_modules/.pnpm/@types+node@20.19.43/node_modules/@types/node/test.d.ts","../../node_modules/.pnpm/@types+node@20.19.43/node_modules/@types/node/timers.d.ts","../../node_modules/.pnpm/@types+node@20.19.43/node_modules/@types/node/timers/promises.d.ts","../../node_modules/.pnpm/@types+node@20.19.43/node_modules/@types/node/tls.d.ts","../../node_modules/.pnpm/@types+node@20.19.43/node_modules/@types/node/trace_events.d.ts","../../node_modules/.pnpm/@types+node@20.19.43/node_modules/@types/node/tty.d.ts","../../node_modules/.pnpm/@types+node@20.19.43/node_modules/@types/node/url.d.ts","../../node_modules/.pnpm/@types+node@20.19.43/node_modules/@types/node/util.d.ts","../../node_modules/.pnpm/@types+node@20.19.43/node_modules/@types/node/v8.d.ts","../../node_modules/.pnpm/@types+node@20.19.43/node_modules/@types/node/vm.d.ts","../../node_modules/.pnpm/@types+node@20.19.43/node_modules/@types/node/wasi.d.ts","../../node_modules/.pnpm/@types+node@20.19.43/node_modules/@types/node/worker_threads.d.ts","../../node_modules/.pnpm/@types+node@20.19.43/node_modules/@types/node/zlib.d.ts","../../node_modules/.pnpm/@types+node@20.19.43/node_modules/@types/node/index.d.ts","../../node_modules/.pnpm/@types+ws@8.18.2/node_modules/@types/ws/index.d.mts","./src/commands/run.ts","../../node_modules/.pnpm/@inquirer+core@12.0.4_@types+node@20.19.43/node_modules/@inquirer/core/dist/lib/key.d.ts","../../node_modules/.pnpm/@inquirer+core@12.0.4_@types+node@20.19.43/node_modules/@inquirer/core/dist/lib/errors.d.ts","../../node_modules/.pnpm/@inquirer+type@4.2.0_@types+node@20.19.43/node_modules/@inquirer/type/dist/inquirer.d.ts","../../node_modules/.pnpm/@inquirer+type@4.2.0_@types+node@20.19.43/node_modules/@inquirer/type/dist/utils.d.ts","../../node_modules/.pnpm/@inquirer+type@4.2.0_@types+node@20.19.43/node_modules/@inquirer/type/dist/index.d.ts","../../node_modules/.pnpm/@inquirer+core@12.0.4_@types+node@20.19.43/node_modules/@inquirer/core/dist/lib/theme.d.ts","../../node_modules/.pnpm/@inquirer+core@12.0.4_@types+node@20.19.43/node_modules/@inquirer/core/dist/lib/use-prefix.d.ts","../../node_modules/.pnpm/@inquirer+core@12.0.4_@types+node@20.19.43/node_modules/@inquirer/core/dist/lib/use-state.d.ts","../../node_modules/.pnpm/@inquirer+core@12.0.4_@types+node@20.19.43/node_modules/@inquirer/core/dist/lib/use-effect.d.ts","../../node_modules/.pnpm/@inquirer+core@12.0.4_@types+node@20.19.43/node_modules/@inquirer/core/dist/lib/use-memo.d.ts","../../node_modules/.pnpm/@inquirer+core@12.0.4_@types+node@20.19.43/node_modules/@inquirer/core/dist/lib/use-ref.d.ts","../../node_modules/.pnpm/@inquirer+core@12.0.4_@types+node@20.19.43/node_modules/@inquirer/core/dist/lib/use-keypress.d.ts","../../node_modules/.pnpm/@inquirer+core@12.0.4_@types+node@20.19.43/node_modules/@inquirer/core/dist/lib/make-theme.d.ts","../../node_modules/.pnpm/@inquirer+core@12.0.4_@types+node@20.19.43/node_modules/@inquirer/core/dist/lib/pagination/use-pagination.d.ts","../../node_modules/.pnpm/@inquirer+core@12.0.4_@types+node@20.19.43/node_modules/@inquirer/core/dist/lib/create-prompt.d.ts","../../node_modules/.pnpm/@inquirer+core@12.0.4_@types+node@20.19.43/node_modules/@inquirer/core/dist/lib/separator.d.ts","../../node_modules/.pnpm/@inquirer+core@12.0.4_@types+node@20.19.43/node_modules/@inquirer/core/dist/index.d.ts","../../node_modules/.pnpm/@inquirer+checkbox@5.2.6_@types+node@20.19.43/node_modules/@inquirer/checkbox/dist/index.d.ts","../../node_modules/.pnpm/@inquirer+external-editor@3.0.6_@types+node@20.19.43/node_modules/@inquirer/external-editor/dist/errors.d.ts","../../node_modules/.pnpm/@inquirer+external-editor@3.0.6_@types+node@20.19.43/node_modules/@inquirer/external-editor/dist/parse-editor-command.d.ts","../../node_modules/.pnpm/@inquirer+external-editor@3.0.6_@types+node@20.19.43/node_modules/@inquirer/external-editor/dist/index.d.ts","../../node_modules/.pnpm/@inquirer+editor@5.3.4_@types+node@20.19.43/node_modules/@inquirer/editor/dist/index.d.ts","../../node_modules/.pnpm/@inquirer+confirm@6.3.3_@types+node@20.19.43/node_modules/@inquirer/confirm/dist/index.d.ts","../../node_modules/.pnpm/@inquirer+input@5.1.7_@types+node@20.19.43/node_modules/@inquirer/input/dist/index.d.ts","../../node_modules/.pnpm/@inquirer+number@4.2.4_@types+node@20.19.43/node_modules/@inquirer/number/dist/index.d.ts","../../node_modules/.pnpm/@inquirer+expand@5.1.6_@types+node@20.19.43/node_modules/@inquirer/expand/dist/index.d.ts","../../node_modules/.pnpm/@inquirer+rawlist@5.3.6_@types+node@20.19.43/node_modules/@inquirer/rawlist/dist/index.d.ts","../../node_modules/.pnpm/@inquirer+password@5.2.3_@types+node@20.19.43/node_modules/@inquirer/password/dist/index.d.ts","../../node_modules/.pnpm/@inquirer+search@4.3.4_@types+node@20.19.43/node_modules/@inquirer/search/dist/index.d.ts","../../node_modules/.pnpm/@inquirer+select@5.2.6_@types+node@20.19.43/node_modules/@inquirer/select/dist/index.d.ts","../../node_modules/.pnpm/@inquirer+prompts@8.7.3_@types+node@20.19.43/node_modules/@inquirer/prompts/dist/index.d.ts","./src/commands/init.ts","./src/commands/serve.ts","./src/commands/upgrade.ts","./src/index.ts","./src/lib.ts","../../node_modules/.pnpm/@types+ws@8.18.2/node_modules/@types/ws/index.d.ts"],"fileIdsList":[[94,140,195,207],[94,140,191,192,196,197,198,199,200,201,202,203,204,205,206],[94,140,195],[94,140],[94,140,195,196],[94,140,191,195],[94,140,196],[94,140,195,207,211],[94,140,209,210],[94,140,208,212,213,214,215,216,217,218,219,220],[94,140,193,194],[94,140,170],[94,137,140],[94,139,140],[140],[94,140,145,173],[94,140,141,146,151,159,170,181],[94,140,141,142,151,159],[89,90,91,94,140],[94,140,143,182],[94,140,144,145,152,160],[94,140,145,170,178],[94,140,146,148,151,159],[94,139,140,147],[94,140,148,149],[94,140,150,151],[94,139,140,151],[94,140,151,152,153,170,181],[94,140,151,152,153,166,170,173],[94,140,148,151,154,159,170,181],[94,140,151,152,154,155,159,170,178,181],[94,140,154,156,170,178,181],[92,93,94,95,96,97,98,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187],[94,140,151,157],[94,140,158,181,186],[94,140,148,151,159,170],[94,140,160],[94,140,161],[94,139,140,162],[94,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187],[94,140,164],[94,140,165],[94,140,151,166,167],[94,140,166,168,182,184],[94,140,151,170,171,173],[94,140,172,173],[94,140,170,171],[94,140,173],[94,140,174],[94,137,140,170,175],[94,140,151,176,177],[94,140,176,177],[94,140,145,159,170,178],[94,140,179],[94,140,159,180],[94,140,154,165,181],[94,140,145,182],[94,140,170,183],[94,140,158,184],[94,140,185],[94,135,140],[94,135,140,151,153,162,170,173,181,184,186],[94,140,170,187],[94,140,151,154,156,159,170,178,181,187,188],[52,94,140],[94,140,141],[94,140,186],[94,107,111,140,181],[94,107,140,170,181],[94,102,140],[94,104,107,140,178,181],[94,140,159,178],[94,140,188],[94,102,140,188],[94,104,107,140,159,181],[94,99,100,103,106,140,151,170,181],[94,107,114,140],[94,99,105,140],[94,107,128,129,140],[94,103,107,140,173,181,188],[94,128,140,188],[94,101,102,140,188],[94,107,140],[94,101,102,103,104,105,106,107,108,109,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,129,130,131,132,133,134,140],[94,107,122,140],[94,107,114,115,140],[94,105,107,115,116,140],[94,106,140],[94,99,102,107,140],[94,107,111,115,116,140],[94,111,140],[94,105,107,110,140,181],[94,99,104,107,114,140],[94,102,107,128,140,186,188],[94,140,141,152,161,221],[81,83,84,85,87,88,94,140,161,189],[87,94,140],[94,140,141,158],[53,94,140,190,222,223,224],[81,94,140],[81,82,94,140,152,161],[81,94,140,152,161],[54,94,140],[69,70,71,72,73,74,75,76,77,78,79,94,140],[56,94,140],[57,94,140],[58,59,60,61,62,67,68,80,94,140],[56,59,94,140],[55,62,94,140],[55,63,64,65,66,94,140],[55,94,140],[58,94,140],[54,55,56,57,94,140],[86,94,140]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"a722a71d8f3cb0028857b12579c7eca55acc76bf34e5db7eaf6fe817b985f9c3","impliedFormat":1},{"version":"b124c0624b15412ace7d54644ade38d7a69db7e25488a1a4d2a8df6e11696538","impliedFormat":99},"8f1b5cc4cbc2eba6e36c117050045d6b9c5dadbfc0cffcd0b663fd4900b80bd2","0eb7a3c2ee7354ad68482be79e2d30d960c2f3607957e93f90f77151d940a757","70d14d04e097fa10400879eb538fe21e6eed2e24ccdc9de20dcb104481cc9584","4b755ca0b3d83f192b9681de1fecd631cd145077eb38c214419243198aabe951","58704f5874da72f5278bbccd44961ce2f64dcf1482f4e4297c919df70479f64d","345f21d66d810208f554d54f63b8b6c20f2dc569806fcb8261fd8080a7acec12","a8f59adf3db8d3c1d72529b51e4cfe50b2057f902694f3195e401b575744d91d","b365466413098ee1e520dc8885bfecb5aa03be91a2800f8e8e967901e77de06d","e7af282b106d6146cdbe9dbc2f7e71548ff7fec4e5823beab08e93c703839ee4","97794e46581e420be8e6cda502c6e318b40f283e5a92ff53246413fdc9544fe4","889b57e5f2a6ae6c157ccaeeea5393608941f194719832f35abd81654b5edd4c","137dc56c00eae739144bb89eba686a4b5d612e07d213ff9a3d5e178bb6b9bdce","ee9d6d2b66c09cf49c3d8d5b52899b0a3807cb2c4bc21dcf683e916060fda78a","27f1574cb987154f86f95e743088c3ae28bc0b8cbc92d950cbae0a7f0041df6b","b5f3bf0aa133ff4bda53983c155d9d4a7c4ef66839a35f399f6921435590fcba","929dbd7bfc4b3c800c4c9ab682828ac98e53a26349fd06d84b264378e3c84baa","cb2dfb31663226d5d90572e788cbc022bfa07ba4e23369c293c23bf144e2facc","af186ddcff394a99d73b2951277cbc95f5bfcc9be26f31cb8b3e27738c718b2e","6c38e917fd39d6eed104d9a4fb075b0426a770bb82d67a78a235fc53c96415e5","7f8d8c681d2b4e685f6029a0bebaadf859d275be99c8356657d4faa677862408","5b76e8ee0af73041dce14791fd832ffb2b3610308930455e85fee6c4a7150319","f566ab50d1fc7212b65a239d04909e5ae4fd6bf6d84eacae22d5299943c72db1","c5e990d1e456d7ed7b44ba66b799ff63b00c0e04d528e20f54c2e0b8ab683511","475f60ed5caffea2926a7d06fa3df8b2f6f76c54edf4b847a8f780442c91c2b0","8bdb9334bfe581ccd31d8acbfcf665637c66c43c5fe3fdb9c5706b1803d82559","daeece8bd21abf8b5c2fc360c2eee0a358ce3a40b5fca255b1c99acb8a2ec792","228faf4fda64aa944b99af939f0fade400fd4ddac7d9462bf541a95293136fb2","4494a982f066f1e3c9d6668fcacd560d46456d97f6efce36cb362e20bee03044",{"version":"800928ec427376cde9efffbfba8667fdd3893b68fdea6c22abc19d44eb2e6efa","impliedFormat":99},{"version":"2185c1165dadedba864b9699d2aa8f65bed117c4ed3ddc9d409f403da9cccf70","signature":"03d06730cfc28472d514f511c551b50502a6691610b5202f7884b0e573b624c4"},{"version":"6ca65c80a8749918d6eb988a48e4e0af30bf9a581c7648ee92c350fb8b1f5fbc","signature":"4d7d40d67bf40edad63ea4c42324e9d7952cf6ab039f398c9ec90ba1dc6a1d11"},{"version":"d4e064f301c349121a9601c8178069dbaaf06152e1656ea2480f844c83bfc60f","signature":"6ac69e6152c022e11d0b2df43b4a25c70774b0d5c6b4b9308966e848407dff18"},"e5b1afbe083d6b83f5750f03a84f20f24b3c15f56c617fad39b7cfaafa2c2df6","9329bc15ed3324ac279791b02cba2219f37b571af9ec0b8e07e56f20d3916a50",{"version":"0132e7a32bd600a3b6e0a5e59171a3706df2d1375ffbf6b2239f326a9b0dbaaf","impliedFormat":99},{"version":"70521b6ab0dcba37539e5303104f29b721bfb2940b2776da4cc818c07e1fefc1","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true,"impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"98cffbf06d6bab333473c70a893770dbe990783904002c4f1a960447b4b53dca","affectsGlobalScope":true,"impliedFormat":1},{"version":"ba481bca06f37d3f2c137ce343c7d5937029b2468f8e26111f3c9d9963d6568d","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d9ef24f9a22a88e3e9b3b3d8c40ab1ddb0853f1bfbd5c843c37800138437b61","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"b52476feb4a0cbcb25e5931b930fc73cb6643fb1a5060bf8a3dda0eeae5b4b68","affectsGlobalScope":true,"impliedFormat":1},{"version":"e2677634fe27e87348825bb041651e22d50a613e2fdf6a4a3ade971d71bac37e","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"8c0bcd6c6b67b4b503c11e91a1fb91522ed585900eab2ab1f61bba7d7caa9d6f","impliedFormat":1},{"version":"8cd19276b6590b3ebbeeb030ac271871b9ed0afc3074ac88a94ed2449174b776","affectsGlobalScope":true,"impliedFormat":1},{"version":"696eb8d28f5949b87d894b26dc97318ef944c794a9a4e4f62360cd1d1958014b","impliedFormat":1},{"version":"3f8fa3061bd7402970b399300880d55257953ee6d3cd408722cb9ac20126460c","impliedFormat":1},{"version":"35ec8b6760fd7138bbf5809b84551e31028fb2ba7b6dc91d95d098bf212ca8b4","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"68bd56c92c2bd7d2339457eb84d63e7de3bd56a69b25f3576e1568d21a162398","affectsGlobalScope":true,"impliedFormat":1},{"version":"3e93b123f7c2944969d291b35fed2af79a6e9e27fdd5faa99748a51c07c02d28","impliedFormat":1},{"version":"9d19808c8c291a9010a6c788e8532a2da70f811adb431c97520803e0ec649991","impliedFormat":1},{"version":"87aad3dd9752067dc875cfaa466fc44246451c0c560b820796bdd528e29bef40","impliedFormat":1},{"version":"4aacb0dd020eeaef65426153686cc639a78ec2885dc72ad220be1d25f1a439df","impliedFormat":1},{"version":"f0bd7e6d931657b59605c44112eaf8b980ba7f957a5051ed21cb93d978cf2f45","impliedFormat":1},{"version":"8db0ae9cb14d9955b14c214f34dae1b9ef2baee2fe4ce794a4cd3ac2531e3255","affectsGlobalScope":true,"impliedFormat":1},{"version":"15fc6f7512c86810273af28f224251a5a879e4261b4d4c7e532abfbfc3983134","impliedFormat":1},{"version":"58adba1a8ab2d10b54dc1dced4e41f4e7c9772cbbac40939c0dc8ce2cdb1d442","impliedFormat":1},{"version":"641942a78f9063caa5d6b777c99304b7d1dc7328076038c6d94d8a0b81fc95c1","impliedFormat":1},{"version":"1123a83f35cf56c97de746f0a7250012153c61a167e4a61668bf50e558162d14","impliedFormat":1},{"version":"855cd5f7eb396f5f1ab1bc0f8580339bff77b68a770f84c6b254e319bbfd1ac7","impliedFormat":1},{"version":"5650cf3dace09e7c25d384e3e6b818b938f68f4e8de96f52d9c5a1b3db068e86","impliedFormat":1},{"version":"1354ca5c38bd3fd3836a68e0f7c9f91f172582ba30ab15bb8c075891b91502b7","affectsGlobalScope":true,"impliedFormat":1},{"version":"7e20d899c28ca26a2a7afc98beaa69e63ff7fba0a8bc47b4e3bf3ede5e09e424","impliedFormat":1},{"version":"2d2fcaab481b31a5882065c7951255703ddbe1c0e507af56ea42d79ac3911201","impliedFormat":1},{"version":"a192fe8ec33f75edbc8d8f3ed79f768dfae11ff5735e7fe52bfa69956e46d78d","impliedFormat":1},{"version":"ca867399f7db82df981d6915bcbb2d81131d7d1ef683bc782b59f71dda59bc85","affectsGlobalScope":true,"impliedFormat":1},{"version":"372413016d17d804e1d139418aca0c68e47a83fb6669490857f4b318de8cccb3","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e043a1bc8fbf2a255bccf9bf27e0f1caf916c3b0518ea34aa72357c0afd42ec","impliedFormat":1},{"version":"b4f70ec656a11d570e1a9edce07d118cd58d9760239e2ece99306ee9dfe61d02","impliedFormat":1},{"version":"3bc2f1e2c95c04048212c569ed38e338873f6a8593930cf5a7ef24ffb38fc3b6","impliedFormat":1},{"version":"6e70e9570e98aae2b825b533aa6292b6abd542e8d9f6e9475e88e1d7ba17c866","impliedFormat":1},{"version":"f9d9d753d430ed050dc1bf2667a1bab711ccbb1c1507183d794cc195a5b085cc","impliedFormat":1},{"version":"9eece5e586312581ccd106d4853e861aaaa1a39f8e3ea672b8c3847eedd12f6e","impliedFormat":1},{"version":"085f552d005479e2e6a7311cdbbe5d8c55c497b4d19274285df161ee9684cd9c","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee","impliedFormat":1},{"version":"007faacc9268357caa21d24169f3f3f2497af3e9241308df2d89f6e6d9bb3f2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"74cf591a0f63db318651e0e04cb55f8791385f86e987a67fd4d2eaab8191f730","impliedFormat":1},{"version":"5eab9b3dc9b34f185417342436ec3f106898da5f4801992d8ff38ab3aff346b5","impliedFormat":1},{"version":"12ed4559eba17cd977aa0db658d25c4047067444b51acfdcbf38470630642b23","affectsGlobalScope":true,"impliedFormat":1},{"version":"f3ffabc95802521e1e4bcba4c88d8615176dc6e09111d920c7a213bdda6e1d65","impliedFormat":1},{"version":"809821b8a065e3234a55b3a9d7846231ed18d66dd749f2494c66288d890daf7f","impliedFormat":1},{"version":"ae56f65caf3be91108707bd8dfbccc2a57a91feb5daabf7165a06a945545ed26","impliedFormat":1},{"version":"a136d5de521da20f31631a0a96bf712370779d1c05b7015d7019a9b2a0446ca9","impliedFormat":1},{"version":"c3b41e74b9a84b88b1dca61ec39eee25c0dbc8e7d519ba11bb070918cfacf656","affectsGlobalScope":true,"impliedFormat":1},{"version":"4737a9dc24d0e68b734e6cfbcea0c15a2cfafeb493485e27905f7856988c6b29","affectsGlobalScope":true,"impliedFormat":1},{"version":"36d8d3e7506b631c9582c251a2c0b8a28855af3f76719b12b534c6edf952748d","impliedFormat":1},{"version":"1ca69210cc42729e7ca97d3a9ad48f2e9cb0042bada4075b588ae5387debd318","impliedFormat":1},{"version":"f5ebe66baaf7c552cfa59d75f2bfba679f329204847db3cec385acda245e574e","impliedFormat":1},{"version":"ed59add13139f84da271cafd32e2171876b0a0af2f798d0c663e8eeb867732cf","affectsGlobalScope":true,"impliedFormat":1},{"version":"b7c5e2ea4a9749097c347454805e933844ed207b6eefec6b7cfd418b5f5f7b28","impliedFormat":1},{"version":"b1810689b76fd473bd12cc9ee219f8e62f54a7d08019a235d07424afbf074d25","impliedFormat":1},{"version":"41b2a25018200d1deef82999c2f44a23bd4b8618aa788fff90292ce25366fa68","impliedFormat":99},{"version":"03abb31e94dd76f9f1d62bfd1a05d991d13644d04d106f58665af0541e75aca8","signature":"e1880a675204e78cb1bf8ff0a4976915cf0361e30d9a0ac4868bd2e1b95b39a9"},{"version":"10043f2974346ba2baca701cd0a2bca1bda974d626a5d7eb92b741757a42443e","impliedFormat":99},{"version":"cc2d9ba9d5434882cfb9bc2954fe433b5538fa78a40be504c9833a45d1a732ad","impliedFormat":99},{"version":"f496804f1238bfdf19b67ac9ce7825d50920a958994fc29a80697b8a63eeed6d","impliedFormat":99},{"version":"1de74d27c48e696d95e2fcfcd116e868a5479d7b175180e628448d3e99413af7","impliedFormat":99},{"version":"4e3592aed54bd51d840e6d078794b45a8388d0accf38efa3267a16742ce88041","impliedFormat":99},{"version":"c8c43f3c6f59572906c077ddd96a1856fc5c6519c30f356d6c9c511b9dadc9c0","impliedFormat":99},{"version":"988be2b47c162ddfc4ac289de0bc50b52fd425d4408cb4bc40fcc9b81f4957c6","impliedFormat":99},{"version":"bf2b86c4d2d7db6fdbb14098c247526ef334ee62e8f06e3d790891b5d0d10090","impliedFormat":99},{"version":"8da95d257be3f2d83c21c555dedda9c96869e5f855652523cf52dc98ca8c57de","impliedFormat":99},{"version":"aa9494cb36743567c0f6ce385ce869358b59193c9b61612e0d70e4de500424c3","impliedFormat":99},{"version":"904964129f1ef4797282d4ea4411eaf26d4b22bb481b8b8ab3e920d4cfc79ecf","impliedFormat":99},{"version":"ce6ada7f4eb4cda3ccfe28a0201608828fc6ee2d3204101976831100d9550d47","impliedFormat":99},{"version":"5a7fe6ef136e88ee70d3cd0b1aa0d6875178b2682542ca340875a2711c81d779","impliedFormat":99},{"version":"6efe6725728024c1b6cf22b47fe1dcaecc951444e7cb6fe0037d96123bb75667","impliedFormat":99},{"version":"673acd99a4a6296577959626d31fe5cabf5bb3441e973e3e8cea71ffece1ff81","impliedFormat":99},{"version":"ab37b1199441c7ecb602defe46f72099d3d4555f7911bd865f51657f419779ab","impliedFormat":99},{"version":"e1d6ddd0c300ba35bd166063d5b2456e9d84fe96bdb7c16ad9379e50dca5dcda","impliedFormat":99},{"version":"a62624c7f04fc4566f8f8b96f6d39110125263e4f79c6b496cef28c51975ad0f","impliedFormat":99},{"version":"1fafbe092dcff4279f40c140ee7ef57b0ed6e33c38801cb15d651e1d3426839d","impliedFormat":99},{"version":"09fe85d6587216cbada86dc91d3455362b1d9cb920057f2b66f91a213feb7efa","impliedFormat":99},{"version":"9c2c6e6e88146156919cd137d4a3e16bd564e26d97c9ff4f8a90d72f072340be","impliedFormat":99},{"version":"de08edfcbb08bef6bc7c0ca3ed67a1c5d075c496b24ec01925b615116bf6ad51","impliedFormat":99},{"version":"41c92a78709f75e0503240a0b6c8c20c7eb8def3d3addcfd4acce59894e66bc3","impliedFormat":99},{"version":"d0c11d125aaf28eb474e687e2feca74d800f3a1fe219882d3c0281c3f4eda88f","impliedFormat":99},{"version":"d4ae1eac1a6bb40a8c75ca85307ba0f1a553dcf08fdd4e53e145aa33c036fbfd","impliedFormat":99},{"version":"d025246eb8ebb217daf58b0021dc105478597e413bac4f2d24e54c76f17317e8","impliedFormat":99},{"version":"c52f72d727413b36bea9f11b47d5e1cf2e930280215124341e5562889192710e","impliedFormat":99},{"version":"28dd7ac76b7c96c1587847929ebacb0420cee78c09a65ebfa976db66e3548303","impliedFormat":99},{"version":"fd08177d605519700feb0b2457f58bf77096c9d79ba4989adbf7eb01968245ab","impliedFormat":99},{"version":"a432730d0b21d8482d94d49853107fc26f01b97dcfea82accd3fbb80f3b108ad","impliedFormat":99},{"version":"736a3485c9e96b87b11fe6e55b5455e9f85ef59edc09bff1eb2f114ef661d1e5","impliedFormat":99},{"version":"03baa84dcfd1630fc5b499e83d214c29ef110a0a5c429b182c2a67a3b2593b15","signature":"6fccbab119402955793694f2b6c4bf1f55f07075ffa7a7a3255ddb9f3905fe5f"},{"version":"f84c4d1920d405d8870f72bf3428d3d375f44c020488ab7ac46a374eb164b85c","signature":"1ed31a78e480efa5e25a98f5df52a4d0869bc65c0e6cfaf46611316700ae4384"},{"version":"fa5d14d53f2de5e3579ce194f88dcba9d877b675056b049b6b0a737709b33af2","signature":"03e482be44d5396a4e3c2a68d63afa1760221f86cc2c8b43525c6805580915f6"},{"version":"d23db615b70cf583454ddd7171f2962845511e6f320a1e7cf0ae96e06520d62d","signature":"43e818adf60173644896298637f47b01d5819b17eda46eaa32d0c7d64724d012"},{"version":"09dd8398a947ab9af9ab9220ab2c6d4145d1332c2068fb771ff5225a65fde2ef","signature":"27f6a540bc5e08937c670895e756dd3ea33235808a53b93c996afd3195f834c7"},{"version":"0143cefdb56a076f7f6cc2520a60469e0b349452f7882c5c2688f69032a8424c","impliedFormat":1}],"root":[[83,85],190,[222,226]],"options":{"composite":true,"declaration":true,"esModuleInterop":true,"module":99,"outDir":"./dist","rootDir":"./src","skipLibCheck":true,"sourceMap":true,"strict":true,"target":8},"referencedMap":[[208,1],[213,1],[207,2],[205,3],[192,4],[191,4],[203,5],[204,4],[206,4],[196,6],[199,3],[202,6],[200,4],[197,7],[201,4],[198,4],[212,8],[216,1],[209,4],[211,9],[210,4],[214,1],[215,1],[218,1],[221,10],[217,1],[219,1],[220,1],[195,11],[193,12],[194,4],[137,13],[138,13],[139,14],[94,15],[140,16],[141,17],[142,18],[89,4],[92,19],[90,4],[91,4],[143,20],[144,21],[145,22],[146,23],[147,24],[148,25],[149,25],[150,26],[151,27],[152,28],[153,29],[95,4],[93,4],[154,30],[155,31],[156,32],[188,33],[157,34],[158,35],[159,36],[160,37],[161,38],[162,39],[163,40],[164,41],[165,42],[166,43],[167,43],[168,44],[169,4],[170,45],[172,46],[171,47],[173,48],[174,49],[175,50],[176,51],[177,52],[178,53],[179,54],[180,55],[181,56],[182,57],[183,58],[184,59],[185,60],[96,4],[97,4],[98,4],[136,61],[186,62],[187,63],[189,64],[227,64],[53,65],[52,4],[88,66],[82,67],[50,4],[51,4],[9,4],[11,4],[10,4],[2,4],[12,4],[13,4],[14,4],[15,4],[16,4],[17,4],[18,4],[19,4],[3,4],[20,4],[21,4],[4,4],[22,4],[26,4],[23,4],[24,4],[25,4],[27,4],[28,4],[29,4],[5,4],[30,4],[31,4],[32,4],[33,4],[6,4],[37,4],[34,4],[35,4],[36,4],[38,4],[7,4],[39,4],[44,4],[45,4],[40,4],[41,4],[42,4],[43,4],[8,4],[49,4],[46,4],[47,4],[48,4],[1,4],[114,68],[124,69],[113,68],[134,70],[105,71],[104,72],[133,73],[127,74],[132,75],[107,76],[121,77],[106,78],[130,79],[102,80],[101,73],[131,81],[103,82],[108,83],[109,4],[112,83],[99,4],[135,84],[125,85],[116,86],[117,87],[119,88],[115,89],[118,90],[128,73],[110,91],[111,92],[120,93],[100,12],[123,85],[122,83],[126,4],[129,94],[222,95],[190,96],[223,97],[224,98],[225,99],[226,100],[83,101],[84,100],[85,102],[75,103],[69,103],[71,103],[78,103],[79,103],[72,103],[80,104],[70,103],[74,103],[73,103],[77,103],[76,103],[68,105],[59,106],[81,107],[60,108],[61,103],[63,109],[64,109],[66,109],[67,110],[65,109],[62,111],[54,4],[56,103],[57,112],[58,113],[55,4],[86,100],[87,114]],"latestChangedDtsFile":"./dist/lib.d.ts","version":"5.9.3"}
|