agent-scope 0.1.1 → 0.2.1
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 +69 -253
- package/dist/cli.js +58 -26
- package/dist/cli.js.map +1 -1
- package/dist/core/logParser.js +9 -2
- package/dist/core/logParser.js.map +1 -1
- package/dist/core/queueParser.d.ts +8 -1
- package/dist/core/queueParser.d.ts.map +1 -1
- package/dist/core/queueParser.js +67 -6
- package/dist/core/queueParser.js.map +1 -1
- package/dist/core/stateEngine.js +5 -1
- package/dist/core/stateEngine.js.map +1 -1
- package/dist/core/todoReader.d.ts +11 -0
- package/dist/core/todoReader.d.ts.map +1 -0
- package/dist/core/todoReader.js +120 -0
- package/dist/core/todoReader.js.map +1 -0
- package/dist/core/types.d.ts +18 -1
- package/dist/core/types.d.ts.map +1 -1
- package/dist/public/404/index.html +1 -1
- package/dist/public/404.html +1 -1
- package/dist/public/_next/static/A6N9GtF30z_GVyVzO-PGY/_buildManifest.js +1 -0
- package/dist/public/_next/static/chunks/46-3b308c2fb194eb7d.js +1 -0
- package/dist/public/_next/static/chunks/app/page-525816f75fc4208f.js +1 -0
- package/dist/public/_next/static/css/9056dd3cc8c03e80.css +5 -0
- package/dist/public/index.html +1 -1
- package/dist/public/index.txt +2 -2
- package/dist/server/server.d.ts +6 -1
- package/dist/server/server.d.ts.map +1 -1
- package/dist/server/server.js +94 -30
- package/dist/server/server.js.map +1 -1
- package/dist/server/watcher.d.ts +19 -0
- package/dist/server/watcher.d.ts.map +1 -0
- package/dist/server/watcher.js +76 -0
- package/dist/server/watcher.js.map +1 -0
- package/package.json +2 -1
- package/dist/public/_next/static/T3xW0JlDHZRgq8cYrd_K-/_buildManifest.js +0 -1
- package/dist/public/_next/static/chunks/758-ab07c9ea623e4759.js +0 -1
- package/dist/public/_next/static/chunks/app/page-b95a4c5030b9d7e5.js +0 -1
- package/dist/public/_next/static/css/e8837d74ddf8b412.css +0 -5
- /package/dist/public/_next/static/{T3xW0JlDHZRgq8cYrd_K- → A6N9GtF30z_GVyVzO-PGY}/_ssgManifest.js +0 -0
package/README.md
CHANGED
|
@@ -1,51 +1,73 @@
|
|
|
1
1
|
# agent-scope
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
See what your AI agent is actually doing.
|
|
4
4
|
|
|
5
|
+
[](https://www.npmjs.com/package/agent-scope)
|
|
5
6
|
[](https://opensource.org/licenses/MIT)
|
|
6
|
-
[](https://www.typescriptlang.org/)
|
|
7
|
-
[](https://vitest.dev/)
|
|
8
7
|
|
|
9
|
-
|
|
8
|
+
---
|
|
10
9
|
|
|
11
|
-
##
|
|
10
|
+
## The problem
|
|
12
11
|
|
|
13
|
-
|
|
14
|
-
- 📁 **File-based** - No database, just markdown + JSONL
|
|
15
|
-
- 👀 **Observer-only** - Passive monitoring, not an agent wrapper
|
|
16
|
-
- 🤖 **Model-agnostic** - Works with any AI agent or framework
|
|
17
|
-
- 📊 **Real-time dashboard** - Track progress, blockers, and failures
|
|
18
|
-
- 🔒 **Local-first** - All data stays on your machine
|
|
19
|
-
- ✅ **Type-safe** - Built with TypeScript in strict mode
|
|
12
|
+
You tell Claude Code to refactor your auth system. It says "on it." You wait. Terminal scrolls. Minutes pass. You have no idea if it's on task 2 of 12 or stuck in a loop. You're flying blind.
|
|
20
13
|
|
|
21
|
-
|
|
14
|
+
agent-scope fixes that. One command, zero config. It reads Claude Code's own task files and gives you a live Kanban board.
|
|
22
15
|
|
|
23
16
|
```bash
|
|
24
|
-
|
|
17
|
+
npx agent-scope start
|
|
25
18
|
```
|
|
26
19
|
|
|
27
|
-
|
|
20
|
+
That's it. Open `localhost:4317`. Watch your agent work.
|
|
21
|
+
|
|
22
|
+

|
|
23
|
+
|
|
24
|
+
## How it works
|
|
25
|
+
|
|
26
|
+
Claude Code already writes task state to `~/.claude/tasks/` via TodoWrite. agent-scope reads those files, watches for changes, and streams updates to your browser via SSE. No database. No auth. No cloud. Just files.
|
|
27
|
+
|
|
28
|
+
## Two modes
|
|
29
|
+
|
|
30
|
+
| | Live | Plan |
|
|
31
|
+
|---|---|---|
|
|
32
|
+
| **What** | Watch Claude Code work | Structured project planning |
|
|
33
|
+
| **Source** | `~/.claude/tasks/` | `.agent-scope/queue.md` |
|
|
34
|
+
| **Setup** | None | `npx agent-scope init` |
|
|
35
|
+
| **Use when** | You want visibility | You want control |
|
|
36
|
+
|
|
37
|
+
Live mode is the default. Plan mode adds dependencies, acceptance criteria, and execution tracking on top.
|
|
38
|
+
|
|
39
|
+
| Live mode | Plan mode |
|
|
40
|
+
|---|---|
|
|
41
|
+
|  |  |
|
|
42
|
+
|
|
43
|
+
## Install
|
|
28
44
|
|
|
29
45
|
```bash
|
|
30
|
-
|
|
31
|
-
|
|
46
|
+
# Run directly
|
|
47
|
+
npx agent-scope start
|
|
32
48
|
|
|
33
|
-
|
|
49
|
+
# Or install globally
|
|
50
|
+
npm i -g agent-scope
|
|
51
|
+
```
|
|
34
52
|
|
|
35
|
-
###
|
|
53
|
+
### Plan mode setup
|
|
36
54
|
|
|
37
55
|
```bash
|
|
38
|
-
|
|
56
|
+
agent-scope init # Creates .agent-scope/ with queue.md template
|
|
57
|
+
# Edit .agent-scope/queue.md with your tasks
|
|
58
|
+
agent-scope start
|
|
39
59
|
```
|
|
40
60
|
|
|
41
|
-
|
|
42
|
-
- `queue.md` - Task definitions in markdown
|
|
43
|
-
- `execution.log` - JSONL event log
|
|
44
|
-
- `config.json` - Configuration
|
|
61
|
+
## CLI
|
|
45
62
|
|
|
46
|
-
|
|
63
|
+
```bash
|
|
64
|
+
agent-scope start # Auto-detect modes, open dashboard
|
|
65
|
+
agent-scope start --claude-dir /path # Custom Claude directory
|
|
66
|
+
agent-scope start -p 3000 # Custom port
|
|
67
|
+
agent-scope init # Init plan mode in current dir
|
|
68
|
+
```
|
|
47
69
|
|
|
48
|
-
|
|
70
|
+
## Queue format (Plan mode)
|
|
49
71
|
|
|
50
72
|
```markdown
|
|
51
73
|
# Slice S1
|
|
@@ -63,250 +85,44 @@ Description: Implement user authentication
|
|
|
63
85
|
AC: Login and registration endpoints working
|
|
64
86
|
```
|
|
65
87
|
|
|
66
|
-
|
|
88
|
+
Validates: required fields, duplicate IDs, unknown deps, circular deps.
|
|
89
|
+
|
|
90
|
+
## Execution log (Plan mode)
|
|
67
91
|
|
|
68
|
-
|
|
92
|
+
Append-only JSONL:
|
|
69
93
|
|
|
70
94
|
```json
|
|
71
95
|
{"task_id":"S1-T1","status":"DONE","timestamp":"2026-02-16T14:31:22Z","agent":"claude"}
|
|
72
96
|
{"task_id":"S1-T2","status":"FAILED","timestamp":"2026-02-16T14:33:10Z","agent":"claude","meta":{"reason":"timeout"}}
|
|
97
|
+
{"task_id":"S1-T3","status":"BLOCKED","reason":"API key missing","timestamp":"2026-02-16T14:35:00Z","agent":"claude"}
|
|
73
98
|
```
|
|
74
99
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
```bash
|
|
78
|
-
npx agent-scope start
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
Opens `http://localhost:4317` with live progress visualization.
|
|
82
|
-
|
|
83
|
-
## Dashboard Features
|
|
84
|
-
|
|
85
|
-
### Executive Summary
|
|
86
|
-
- Total tasks, done, failed, blocked, ready counts
|
|
87
|
-
- Overall success rate calculation
|
|
88
|
-
- Last updated timestamp
|
|
89
|
-
|
|
90
|
-
### Slice Progress
|
|
91
|
-
- Visual progress bars per slice
|
|
92
|
-
- Percentage completion tracking
|
|
93
|
-
- Task distribution breakdown
|
|
94
|
-
|
|
95
|
-
### Task Table
|
|
96
|
-
- Filter by status (READY, BLOCKED, DONE, FAILED)
|
|
97
|
-
- View dependencies and blockers
|
|
98
|
-
- Click any task for full details
|
|
99
|
-
|
|
100
|
-
### Task Details
|
|
101
|
-
- Acceptance criteria
|
|
102
|
-
- Dependency graph
|
|
103
|
-
- Reverse dependencies (who depends on this)
|
|
104
|
-
- Last event information
|
|
105
|
-
|
|
106
|
-
## Task Queue Format
|
|
107
|
-
|
|
108
|
-
### Markdown DSL
|
|
109
|
-
|
|
110
|
-
```markdown
|
|
111
|
-
# Slice S1
|
|
112
|
-
|
|
113
|
-
## S1-T1
|
|
114
|
-
Area: <category>
|
|
115
|
-
Depends: - # No dependencies, or comma-separated IDs
|
|
116
|
-
Description: <what to do>
|
|
117
|
-
AC: <acceptance criteria>
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
### Validation
|
|
121
|
-
|
|
122
|
-
agent-scope validates:
|
|
123
|
-
- ✅ All required fields present
|
|
124
|
-
- ✅ No duplicate task IDs
|
|
125
|
-
- ✅ No unknown dependencies
|
|
126
|
-
- ✅ No circular dependencies (DFS detection)
|
|
127
|
-
|
|
128
|
-
## Execution Log Format
|
|
129
|
-
|
|
130
|
-
### JSONL Schema
|
|
131
|
-
|
|
132
|
-
```typescript
|
|
133
|
-
{
|
|
134
|
-
"task_id": "S1-T1", // Required: matches task in queue
|
|
135
|
-
"status": "DONE" | "FAILED", // Required: outcome
|
|
136
|
-
"timestamp": "ISO-8601", // Required: when it happened
|
|
137
|
-
"agent": "string", // Required: agent name
|
|
138
|
-
"meta": {...} // Optional: additional context
|
|
139
|
-
}
|
|
140
|
-
```
|
|
141
|
-
|
|
142
|
-
### Behavior
|
|
143
|
-
|
|
144
|
-
- Latest event per task wins (by timestamp)
|
|
145
|
-
- Invalid lines collected as warnings
|
|
146
|
-
- Malformed JSON doesn't crash the system
|
|
147
|
-
|
|
148
|
-
## Architecture
|
|
149
|
-
|
|
150
|
-
### Core Principles
|
|
151
|
-
|
|
152
|
-
1. **Deterministic** - Same inputs always produce same output
|
|
153
|
-
2. **Stateless** - Server recomputes on every request (no cache in v0.1)
|
|
154
|
-
3. **Error-tolerant** - Collects errors instead of crashing
|
|
155
|
-
4. **Type-safe** - Strict TypeScript throughout
|
|
156
|
-
|
|
157
|
-
### Status Computation
|
|
158
|
-
|
|
159
|
-
```
|
|
160
|
-
For each task:
|
|
161
|
-
if lastEvent.status === FAILED → FAILED
|
|
162
|
-
else if lastEvent.status === DONE → DONE
|
|
163
|
-
else if any dependency.status !== DONE → BLOCKED
|
|
164
|
-
else → READY
|
|
165
|
-
```
|
|
166
|
-
|
|
167
|
-
Priority: `FAILED > DONE > BLOCKED > READY`
|
|
100
|
+
## API
|
|
168
101
|
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
102
|
+
| Endpoint | Description |
|
|
103
|
+
|---|---|
|
|
104
|
+
| `GET /health` | Status + available modes |
|
|
105
|
+
| `GET /sessions` | All Claude Code sessions |
|
|
106
|
+
| `GET /sessions/:id` | Tasks for a session |
|
|
107
|
+
| `GET /events` | SSE stream |
|
|
108
|
+
| `GET /snapshot` | Plan mode state |
|
|
176
109
|
|
|
177
110
|
## Development
|
|
178
111
|
|
|
179
|
-
### Setup
|
|
180
|
-
|
|
181
112
|
```bash
|
|
182
|
-
git clone https://github.com/
|
|
183
|
-
cd agent-scope
|
|
184
|
-
npm install
|
|
113
|
+
git clone https://github.com/yunusemrgrl/agent-scope.git
|
|
114
|
+
cd agent-scope && npm install
|
|
185
115
|
cd dashboard && npm install && cd ..
|
|
186
|
-
```
|
|
187
|
-
|
|
188
|
-
### Build
|
|
189
|
-
|
|
190
|
-
```bash
|
|
191
|
-
npm run build # Builds core + dashboard
|
|
192
|
-
npm run build:core # Only TypeScript
|
|
193
|
-
npm run build:dashboard # Only Next.js UI
|
|
194
|
-
```
|
|
195
|
-
|
|
196
|
-
### Test
|
|
197
|
-
|
|
198
|
-
```bash
|
|
199
|
-
npm test # Run tests in watch mode
|
|
200
|
-
npm run test:coverage # Generate coverage report
|
|
201
|
-
```
|
|
202
|
-
|
|
203
|
-
### Project Structure
|
|
204
|
-
|
|
205
|
-
```
|
|
206
|
-
agent-scope/
|
|
207
|
-
├─ src/
|
|
208
|
-
│ ├─ core/
|
|
209
|
-
│ │ ├─ types.ts # Domain model
|
|
210
|
-
│ │ ├─ queueParser.ts # Markdown parser
|
|
211
|
-
│ │ ├─ logParser.ts # JSONL parser
|
|
212
|
-
│ │ └─ stateEngine.ts # Snapshot computation
|
|
213
|
-
│ ├─ server/
|
|
214
|
-
│ │ └─ server.ts # Fastify API
|
|
215
|
-
│ └─ cli.ts # Commander CLI
|
|
216
|
-
├─ tests/core/ # Unit tests (62 tests)
|
|
217
|
-
├─ dashboard/ # Next.js UI
|
|
218
|
-
│ └─ src/
|
|
219
|
-
│ ├─ app/ # App Router pages
|
|
220
|
-
│ └─ components/ # React components
|
|
221
|
-
├─ dist/ # Build output
|
|
222
|
-
└─ .agent-scope/ # Created by init (gitignored)
|
|
223
|
-
```
|
|
224
|
-
|
|
225
|
-
## API Reference
|
|
226
116
|
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
```typescript
|
|
232
|
-
{
|
|
233
|
-
snapshot: Snapshot | null,
|
|
234
|
-
queueErrors: string[], // Fatal queue parse errors
|
|
235
|
-
logErrors: string[], // Non-fatal log warnings
|
|
236
|
-
meta: {
|
|
237
|
-
generatedAt: string, // ISO-8601
|
|
238
|
-
totalTasks: number
|
|
239
|
-
}
|
|
240
|
-
}
|
|
117
|
+
npm run build # Build core + dashboard
|
|
118
|
+
npm test # 97 tests
|
|
119
|
+
npm run dev # Dev server with watch
|
|
241
120
|
```
|
|
242
121
|
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
Health check endpoint:
|
|
246
|
-
|
|
247
|
-
```json
|
|
248
|
-
{"status": "ok"}
|
|
249
|
-
```
|
|
250
|
-
|
|
251
|
-
## Use Cases
|
|
252
|
-
|
|
253
|
-
- **AI Agent Development** - Monitor multi-step agent workflows
|
|
254
|
-
- **Task Automation** - Track long-running automation pipelines
|
|
255
|
-
- **Project Management** - Visualize task dependencies and progress
|
|
256
|
-
- **Testing** - Observe test execution flows
|
|
257
|
-
- **CI/CD Monitoring** - Track deployment task completion
|
|
258
|
-
|
|
259
|
-
## Non-Goals (v0.1)
|
|
260
|
-
|
|
261
|
-
- ❌ Real-time streaming (manual refresh only)
|
|
262
|
-
- ❌ Agent execution wrapper
|
|
263
|
-
- ❌ Git integration
|
|
264
|
-
- ❌ SaaS/cloud mode
|
|
265
|
-
- ❌ Authentication
|
|
266
|
-
- ❌ Task editing UI
|
|
267
|
-
- ❌ WebSocket updates
|
|
268
|
-
|
|
269
|
-
agent-scope is an **observer**, not an orchestrator. It watches your workflow, it doesn't run it.
|
|
122
|
+
## Stack
|
|
270
123
|
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
### v0.2 (Planned)
|
|
274
|
-
- Incremental state updates
|
|
275
|
-
- File watching for auto-refresh
|
|
276
|
-
- Export reports (JSON, CSV)
|
|
277
|
-
- Performance optimizations
|
|
278
|
-
|
|
279
|
-
### v0.3 (Planned)
|
|
280
|
-
- Historical snapshots
|
|
281
|
-
- Time-series progress tracking
|
|
282
|
-
- Multiple project support
|
|
283
|
-
- Search and filters
|
|
284
|
-
|
|
285
|
-
## Contributing
|
|
286
|
-
|
|
287
|
-
Contributions welcome! Please:
|
|
288
|
-
|
|
289
|
-
1. Fork the repository
|
|
290
|
-
2. Create a feature branch (`git checkout -b feature/amazing`)
|
|
291
|
-
3. Write tests for new functionality
|
|
292
|
-
4. Ensure `npm test` passes with 95%+ coverage
|
|
293
|
-
5. Submit a pull request
|
|
124
|
+
TypeScript, Fastify, chokidar, SSE, Next.js, Tailwind, Vitest.
|
|
294
125
|
|
|
295
126
|
## License
|
|
296
127
|
|
|
297
|
-
MIT
|
|
298
|
-
|
|
299
|
-
## Credits
|
|
300
|
-
|
|
301
|
-
Built with ❤️ by the agent-scope team
|
|
302
|
-
|
|
303
|
-
Powered by:
|
|
304
|
-
- [TypeScript](https://www.typescriptlang.org/)
|
|
305
|
-
- [Fastify](https://www.fastify.io/)
|
|
306
|
-
- [Next.js](https://nextjs.org/)
|
|
307
|
-
- [Commander](https://github.com/tj/commander.js)
|
|
308
|
-
- [Vitest](https://vitest.dev/)
|
|
309
|
-
|
|
310
|
-
---
|
|
311
|
-
|
|
312
|
-
**Note**: This is v0.1 - a minimal viable product focused on core functionality. Features are intentionally limited to ensure stability and simplicity.
|
|
128
|
+
MIT
|
package/dist/cli.js
CHANGED
|
@@ -8,7 +8,7 @@ const program = new Command();
|
|
|
8
8
|
program
|
|
9
9
|
.name('agent-scope')
|
|
10
10
|
.description('Deterministic, local, passive execution observer for AI agent workflows')
|
|
11
|
-
.version('0.1
|
|
11
|
+
.version('0.2.1');
|
|
12
12
|
program
|
|
13
13
|
.command('init')
|
|
14
14
|
.description('Initialize agent-scope in current directory')
|
|
@@ -40,7 +40,20 @@ AC: Task completed successfully
|
|
|
40
40
|
const config = {
|
|
41
41
|
queueFile: 'queue.md',
|
|
42
42
|
logFile: 'execution.log',
|
|
43
|
-
port: 4317
|
|
43
|
+
port: 4317,
|
|
44
|
+
taskModel: {
|
|
45
|
+
fields: [
|
|
46
|
+
{ name: 'Area', type: 'enum', required: true, values: ['Core'] },
|
|
47
|
+
{ name: 'Depends', type: 'refs', required: false },
|
|
48
|
+
{ name: 'Description', type: 'text', required: true },
|
|
49
|
+
{ name: 'AC', type: 'text', required: true }
|
|
50
|
+
],
|
|
51
|
+
id: '{slice}-T{n}',
|
|
52
|
+
headings: {
|
|
53
|
+
slice: '# Slice {name}',
|
|
54
|
+
task: '## {id}'
|
|
55
|
+
}
|
|
56
|
+
}
|
|
44
57
|
};
|
|
45
58
|
writeFileSync(join(agentScopeDir, 'config.json'), JSON.stringify(config, null, 2));
|
|
46
59
|
console.log('✓ Created config.json');
|
|
@@ -58,18 +71,25 @@ Each completed task should be logged as a single line:
|
|
|
58
71
|
{"task_id":"S1-T1","status":"DONE","timestamp":"2026-02-16T14:31:22Z","agent":"claude"}
|
|
59
72
|
\`\`\`
|
|
60
73
|
|
|
61
|
-
|
|
74
|
+
For failures:
|
|
62
75
|
|
|
63
76
|
\`\`\`json
|
|
64
77
|
{"task_id":"S1-T2","status":"FAILED","timestamp":"2026-02-16T14:33:10Z","agent":"claude","meta":{"reason":"timeout"}}
|
|
65
78
|
\`\`\`
|
|
66
79
|
|
|
80
|
+
For blockers (when a task cannot proceed):
|
|
81
|
+
|
|
82
|
+
\`\`\`json
|
|
83
|
+
{"task_id":"S1-T3","status":"BLOCKED","reason":"API key missing","timestamp":"2026-02-16T14:35:00Z","agent":"claude"}
|
|
84
|
+
\`\`\`
|
|
85
|
+
|
|
67
86
|
## Required Fields
|
|
68
87
|
|
|
69
88
|
- \`task_id\`: Task identifier from queue.md (e.g., "S1-T1")
|
|
70
|
-
- \`status\`:
|
|
89
|
+
- \`status\`: "DONE", "FAILED", or "BLOCKED"
|
|
71
90
|
- \`timestamp\`: ISO-8601 timestamp (use \`new Date().toISOString()\`)
|
|
72
91
|
- \`agent\`: Your agent name (e.g., "claude")
|
|
92
|
+
- \`reason\`: (Required for BLOCKED) Why the task is blocked
|
|
73
93
|
- \`meta\`: (Optional) Additional context
|
|
74
94
|
|
|
75
95
|
Run \`npx agent-scope start\` to view the dashboard.
|
|
@@ -85,36 +105,48 @@ Run \`npx agent-scope start\` to view the dashboard.
|
|
|
85
105
|
program
|
|
86
106
|
.command('start')
|
|
87
107
|
.description('Start the agent-scope server and dashboard')
|
|
88
|
-
.
|
|
108
|
+
.option('--claude-dir <path>', 'Path to Claude directory', join(process.env.HOME || '~', '.claude'))
|
|
109
|
+
.option('-p, --port <number>', 'Port number', '4317')
|
|
110
|
+
.action(async (opts) => {
|
|
111
|
+
const claudeDir = opts.claudeDir;
|
|
89
112
|
const agentScopeDir = join(process.cwd(), '.agent-scope');
|
|
90
|
-
//
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
if (!existsSync(configPath)) {
|
|
98
|
-
console.error('❌ config.json not found in .agent-scope/');
|
|
113
|
+
// Detect available modes
|
|
114
|
+
const hasLive = existsSync(join(claudeDir, 'tasks'));
|
|
115
|
+
const hasPlan = existsSync(agentScopeDir);
|
|
116
|
+
if (!hasLive && !hasPlan) {
|
|
117
|
+
console.error('❌ No data sources found.');
|
|
118
|
+
console.error(` Live mode: ${claudeDir}/tasks/ not found`);
|
|
119
|
+
console.error(' Plan mode: .agent-scope/ not found (run "agent-scope init")');
|
|
99
120
|
process.exit(1);
|
|
100
121
|
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
122
|
+
// Read port from config if plan mode available, otherwise use CLI option
|
|
123
|
+
let port = parseInt(opts.port, 10);
|
|
124
|
+
if (hasPlan) {
|
|
125
|
+
const configPath = join(agentScopeDir, 'config.json');
|
|
126
|
+
if (existsSync(configPath)) {
|
|
127
|
+
try {
|
|
128
|
+
const configContent = await import('fs').then(fs => fs.promises.readFile(configPath, 'utf-8'));
|
|
129
|
+
const config = JSON.parse(configContent);
|
|
130
|
+
if (config.port && opts.port === '4317') {
|
|
131
|
+
port = config.port;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
catch { /* use default port */ }
|
|
135
|
+
}
|
|
109
136
|
}
|
|
110
|
-
const port = config.port || 4317;
|
|
111
137
|
const url = `http://localhost:${port}`;
|
|
112
138
|
try {
|
|
113
|
-
|
|
114
|
-
|
|
139
|
+
await startServer({
|
|
140
|
+
claudeDir,
|
|
141
|
+
port,
|
|
142
|
+
agentScopeDir: hasPlan ? agentScopeDir : undefined
|
|
143
|
+
});
|
|
115
144
|
console.log(`✓ Server running on ${url}`);
|
|
145
|
+
if (hasLive)
|
|
146
|
+
console.log(` Live mode: watching ${claudeDir}/tasks/`);
|
|
147
|
+
if (hasPlan)
|
|
148
|
+
console.log(' Plan mode: reading .agent-scope/');
|
|
116
149
|
console.log('✓ Opening browser...');
|
|
117
|
-
// Auto-open browser
|
|
118
150
|
const platform = process.platform;
|
|
119
151
|
const openCommand = platform === 'darwin' ? 'open' :
|
|
120
152
|
platform === 'win32' ? 'start' :
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,aAAa,CAAC;KACnB,WAAW,CAAC,yEAAyE,CAAC;KACtF,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,6CAA6C,CAAC;KAC1D,MAAM,CAAC,GAAG,EAAE;IACX,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC;IAE1D,iCAAiC;IACjC,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;QAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC;QACH,SAAS,CAAC,aAAa,CAAC,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAE9C,2BAA2B;QAC3B,MAAM,aAAa,GAAG;;;;;;;CAO3B,CAAC;QACI,aAAa,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,EAAE,aAAa,CAAC,CAAC;QAC9D,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAE3C,6BAA6B;QAC7B,aAAa,CAAC,IAAI,CAAC,aAAa,EAAE,eAAe,CAAC,EAAE,EAAE,CAAC,CAAC;QACxD,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;QAEvC,qBAAqB;QACrB,MAAM,MAAM,GAAG;YACb,SAAS,EAAE,UAAU;YACrB,OAAO,EAAE,eAAe;YACxB,IAAI,EAAE,IAAI;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/core/logParser.js
CHANGED
|
@@ -55,8 +55,14 @@ function validateLogEvent(obj, lineNumber) {
|
|
|
55
55
|
errors.push(`Line ${lineNumber}: Missing or invalid task_id`);
|
|
56
56
|
}
|
|
57
57
|
// Validate status
|
|
58
|
-
if (event.status !== 'DONE' && event.status !== 'FAILED') {
|
|
59
|
-
errors.push(`Line ${lineNumber}: Invalid status (must be DONE or
|
|
58
|
+
if (event.status !== 'DONE' && event.status !== 'FAILED' && event.status !== 'BLOCKED') {
|
|
59
|
+
errors.push(`Line ${lineNumber}: Invalid status (must be DONE, FAILED, or BLOCKED)`);
|
|
60
|
+
}
|
|
61
|
+
// Validate reason (required for BLOCKED)
|
|
62
|
+
if (event.status === 'BLOCKED') {
|
|
63
|
+
if (typeof event.reason !== 'string' || !event.reason) {
|
|
64
|
+
errors.push(`Line ${lineNumber}: reason is required when status is BLOCKED`);
|
|
65
|
+
}
|
|
60
66
|
}
|
|
61
67
|
// Validate timestamp
|
|
62
68
|
if (typeof event.timestamp !== 'string' || !isValidISO8601(event.timestamp)) {
|
|
@@ -81,6 +87,7 @@ function validateLogEvent(obj, lineNumber) {
|
|
|
81
87
|
status: event.status,
|
|
82
88
|
timestamp: event.timestamp,
|
|
83
89
|
agent: event.agent,
|
|
90
|
+
...(event.reason !== undefined && { reason: event.reason }),
|
|
84
91
|
...(event.meta !== undefined && { meta: event.meta })
|
|
85
92
|
};
|
|
86
93
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logParser.js","sourceRoot":"","sources":["../../src/core/logParser.ts"],"names":[],"mappings":"AAOA;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,OAAe;IACtC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,YAAY,GAAG,IAAI,GAAG,EAAoB,CAAC;IAEjD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAElC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7B,MAAM,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC;QAEzB,mBAAmB;QACnB,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,SAAS;QACX,CAAC;QAED,oBAAoB;QACpB,IAAI,MAAe,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,QAAQ,UAAU,gBAAgB,CAAC,CAAC;YAChD,SAAS;QACX,CAAC;QAED,kBAAkB;QAClB,MAAM,UAAU,GAAG,gBAAgB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACxD,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;YAClC,SAAS;QACX,CAAC;QAED,MAAM,KAAK,GAAG,UAAU,CAAC,KAAM,CAAC;QAEhC,kCAAkC;QAClC,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACjD,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAC;YACtD,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAED,OAAO;QACL,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;QACzC,MAAM;KACP,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAC,GAAY,EAAE,UAAkB;IACxD,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QAC5C,MAAM,CAAC,IAAI,CAAC,QAAQ,UAAU,2BAA2B,CAAC,CAAC;QAC3D,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IACjC,CAAC;IAED,MAAM,KAAK,GAAG,GAA8B,CAAC;IAE7C,mBAAmB;IACnB,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QACxD,MAAM,CAAC,IAAI,CAAC,QAAQ,UAAU,8BAA8B,CAAC,CAAC;IAChE,CAAC;IAED,kBAAkB;IAClB,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"logParser.js","sourceRoot":"","sources":["../../src/core/logParser.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
import type { Task } from './types.js';
|
|
2
|
+
export interface QueueParseConfig {
|
|
3
|
+
id?: string;
|
|
4
|
+
headings?: {
|
|
5
|
+
slice?: string;
|
|
6
|
+
task?: string;
|
|
7
|
+
};
|
|
8
|
+
}
|
|
2
9
|
export interface QueueParseResult {
|
|
3
10
|
tasks: Task[];
|
|
4
11
|
errors: string[];
|
|
@@ -7,5 +14,5 @@ export interface QueueParseResult {
|
|
|
7
14
|
* Parses a markdown queue file into structured tasks.
|
|
8
15
|
* Returns both tasks and any validation errors encountered.
|
|
9
16
|
*/
|
|
10
|
-
export declare function parseQueue(content: string): QueueParseResult;
|
|
17
|
+
export declare function parseQueue(content: string, config?: QueueParseConfig): QueueParseResult;
|
|
11
18
|
//# sourceMappingURL=queueParser.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queueParser.d.ts","sourceRoot":"","sources":["../../src/core/queueParser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEvC,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,
|
|
1
|
+
{"version":3,"file":"queueParser.d.ts","sourceRoot":"","sources":["../../src/core/queueParser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEvC,MAAM,WAAW,gBAAgB;IAC/B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE;QACT,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAgED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,gBAAgB,GAAG,gBAAgB,CA4HvF"}
|