octie-cli 1.0.3 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/README.md +0 -523
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "octie-cli",
3
- "version": "1.0.3",
3
+ "version": "1.0.4",
4
4
  "description": "A graph-based task management system with CLI and web UI for atomic, verifiable tasks",
5
5
  "main": "dist/core/index.js",
6
6
  "types": "dist/core/index.d.ts",
package/README.md DELETED
@@ -1,523 +0,0 @@
1
- # Octie
2
-
3
- A graph-based task management system with CLI and web UI.
4
-
5
- ## Overview
6
-
7
- Octie is a project-oriented task management tool that uses directed graphs to represent task dependencies. It provides both a command-line interface for power users and a web interface for visualization.
8
-
9
- ## Features
10
-
11
- - **Graph-based task structure**: Tasks are nodes in a directed graph (DAG with optional loops)
12
- - **Atomic task definitions**: Each task has comprehensive context including:
13
- - Success criteria (quantitative, measurable)
14
- - Deliverables (specific outputs)
15
- - Blockers and dependencies
16
- - Related files and notes
17
- - Auto-managed timestamps (created_at, updated_at, completed_at)
18
- - **Fast retrieval**: JSON-based storage with indexing for O(1) lookups
19
- - **Dual output formats**: Markdown for AI consumption, JSON for visualization
20
- - **CLI + Web UI**: Command-line tool with web-based visualization
21
- - **Graph operations**: Add, remove, reconnect edges; cut, insert, merge tasks
22
- - **Topological sorting**: Validated task ordering with cycle detection
23
-
24
- ## Installation
25
-
26
- ```bash
27
- npm install -g octie
28
- ```
29
-
30
- ## Quick Start
31
-
32
- ```bash
33
- # Initialize a new project
34
- octie init
35
-
36
- # Create a task (interactive mode recommended)
37
- octie create --interactive
38
-
39
- # Create with flags
40
- octie create \
41
- --title "Setup database" \
42
- --description "Create PostgreSQL database with migrations" \
43
- --priority top \
44
- --success-criterion "Database accepts connections" \
45
- --success-criterion "Migrations run successfully" \
46
- --deliverable "src/db/schema.sql"
47
-
48
- # List tasks
49
- octie list --status pending --priority top
50
-
51
- # Get task details (multiple formats)
52
- octie get <task-id> # Default table format
53
- octie get <task-id> --format md # Markdown for AI
54
- octie get <task-id> --format json # JSON for parsing
55
-
56
- # Update task
57
- octie update <task-id> --status in_progress
58
-
59
- # Delete task
60
- octie delete <task-id> --reconnect --force
61
-
62
- # Start web UI
63
- octie serve
64
- ```
65
-
66
- ## Development
67
-
68
- ```bash
69
- # Clone repository
70
- git clone <repo-url>
71
- cd task-driver/octie
72
-
73
- # Install dependencies
74
- npm install
75
-
76
- # Build TypeScript
77
- npm run build
78
-
79
- # Run tests
80
- npm test
81
-
82
- # Run CLI in development mode
83
- node dist/cli/index.js --help
84
-
85
- # Start web UI server
86
- npm run serve
87
- ```
88
-
89
- ## Project Structure
90
-
91
- ```
92
- octie/
93
- ├── src/ # Source files
94
- │ ├── cli/ # CLI interface
95
- │ │ ├── commands/ # CLI commands (init, create, list, get, update, delete, merge, export, import, graph, serve)
96
- │ │ └── utils/ # CLI helpers
97
- │ ├── core/ # Core functionality
98
- │ │ ├── graph/ # Graph data structures and algorithms
99
- │ │ ├── models/ # Task node model
100
- │ │ └── storage/ # File I/O and atomic writes
101
- │ └── types/ # TypeScript type definitions
102
- ├── tests/ # Test files
103
- │ └── unit/cli/commands/ # CLI command tests
104
- ├── web-ui/ # Web UI (React + Vite)
105
- ├── dist/ # Compiled JavaScript
106
- ├── cli.js # CLI entry point
107
- ├── server.js # Web UI server
108
- └── package.json
109
- ```
110
-
111
- ## CLI Commands Reference
112
-
113
- ### Global Options
114
-
115
- These options apply to all commands:
116
-
117
- | Option | Description |
118
- |--------|-------------|
119
- | `--project <path>` | Specify project directory (default: current directory) |
120
- | `--format <type>` | Output format: `table`, `json`, `md` |
121
- | `--verbose` | Show detailed output |
122
- | `--quiet` | Suppress non-essential output |
123
-
124
- ### `octie init`
125
-
126
- Initialize a new Octie project in the current or specified directory.
127
-
128
- ```bash
129
- octie init # Initialize in current directory
130
- octie init --project ./my-project # Initialize in specific directory
131
- ```
132
-
133
- **Options:**
134
- | Flag | Description |
135
- |------|-------------|
136
- | `--project <path>` | Directory to initialize (default: current) |
137
-
138
- ### `octie create`
139
-
140
- Create a new atomic task. All required fields must be provided.
141
-
142
- ```bash
143
- # Interactive mode (recommended)
144
- octie create --interactive
145
-
146
- # Command-line mode (all required fields)
147
- octie create \
148
- --title "Implement user authentication" \
149
- --description "Create JWT-based authentication system with login, logout, and token refresh endpoints" \
150
- --success-criterion "Login returns valid JWT on correct credentials" \
151
- --success-criterion "Token refresh works correctly" \
152
- --deliverable "src/auth/login.ts" \
153
- --deliverable "tests/auth/login.test.ts" \
154
- --priority top
155
- ```
156
-
157
- **Required Options:**
158
- | Flag | Description | Validation |
159
- |------|-------------|------------|
160
- | `--title <string>` | Task title | 1-200 chars, must contain action verb |
161
- | `--description <string>` | Detailed description | 50-10000 chars |
162
- | `--success-criterion <text>` | Quantitative success criterion (repeatable) | Min 1, Max 10 |
163
- | `--deliverable <text>` | Expected output (repeatable) | Min 1, Max 5 |
164
-
165
- **Optional Options:**
166
- | Flag | Description |
167
- |------|-------------|
168
- | `--priority <level>` | `top`, `second`, or `later` (default: `second`) |
169
- | `--blockers <ids>` | Comma-separated task IDs that block this task |
170
- | `--dependencies <ids>` | Comma-separated soft dependency task IDs |
171
- | `--related-files <paths>` | Comma-separated file paths |
172
- | `--notes <text>` | Additional context |
173
- | `--interactive` | Use interactive prompts |
174
-
175
- **Atomic Task Validation:**
176
- Tasks must be specific, executable, and verifiable. The CLI will reject:
177
- - Titles without action verbs (implement, create, fix, etc.)
178
- - Vague titles ("fix stuff", "do things")
179
- - Descriptions under 50 characters
180
- - More than 10 success criteria (suggests non-atomic)
181
- - More than 5 deliverables (suggests non-atomic)
182
- - Subjective criteria ("make it better", "good performance")
183
-
184
- ### `octie list`
185
-
186
- List all tasks with optional filtering.
187
-
188
- ```bash
189
- octie list # List all tasks
190
- octie list --status pending # Filter by status
191
- octie list --priority top # Filter by priority
192
- octie list --tree # Show as tree view
193
- octie list --graph # Show graph structure
194
- octie list --format json # JSON output
195
- ```
196
-
197
- **Options:**
198
- | Flag | Description |
199
- |------|-------------|
200
- | `--status <status>` | Filter by: `not_started`, `pending`, `in_progress`, `completed`, `blocked` |
201
- | `--priority <level>` | Filter by: `top`, `second`, `later` |
202
- | `--format <type>` | Output format: `table`, `json`, `md` |
203
- | `--tree` | Display as hierarchical tree |
204
- | `--graph` | Display graph structure |
205
-
206
- ### `octie get`
207
-
208
- Get detailed information about a specific task.
209
-
210
- ```bash
211
- octie get <task-id> # Table format (default)
212
- octie get <task-id> --format md # Markdown format
213
- octie get <task-id> --format json # JSON format
214
- ```
215
-
216
- **Options:**
217
- | Flag | Description |
218
- |------|-------------|
219
- | `--format <type>` | Output format: `table`, `json`, `md` |
220
-
221
- ### `octie update`
222
-
223
- Update an existing task.
224
-
225
- ```bash
226
- octie update <task-id> --status in_progress
227
- octie update <task-id> --priority top
228
- octie update <task-id> --complete-criterion <criterion-id>
229
- octie update <task-id> --complete-deliverable <deliverable-id>
230
- octie update <task-id> --notes "Additional context"
231
- ```
232
-
233
- **Options:**
234
- | Flag | Description |
235
- |------|-------------|
236
- | `--status <status>` | Set status: `not_started`, `pending`, `in_progress`, `completed`, `blocked` |
237
- | `--priority <level>` | Set priority: `top`, `second`, `later` |
238
- | `--add-success-criterion <text>` | Add a new success criterion |
239
- | `--complete-criterion <id>` | Mark criterion as complete |
240
- | `--add-deliverable <text>` | Add a new deliverable |
241
- | `--complete-deliverable <id>` | Mark deliverable as complete |
242
- | `--block <task-id>` | Add blocker |
243
- | `--unblock <task-id>` | Remove blocker |
244
- | `--add-dependency <task-id>` | Add dependency |
245
- | `--notes <text>` | Append to notes |
246
-
247
- **Auto-managed Timestamps:**
248
- - `updated_at` is automatically updated on any field change
249
- - `completed_at` is automatically set when ALL success criteria AND deliverables are complete
250
-
251
- ### `octie delete`
252
-
253
- Delete a task with optional edge reconnection.
254
-
255
- ```bash
256
- octie delete <task-id> # Interactive deletion
257
- octie delete <task-id> --force # Skip confirmation
258
- octie delete <task-id> --reconnect # Reconnect edges (A→B→C becomes A→C)
259
- octie delete <task-id> --cascade # Delete all dependent tasks
260
- ```
261
-
262
- **Options:**
263
- | Flag | Description |
264
- |------|-------------|
265
- | `--reconnect` | Reconnect incoming to outgoing edges after deletion |
266
- | `--cascade` | Delete all tasks that depend on this task |
267
- | `--force` | Skip confirmation prompt |
268
-
269
- ### `octie merge`
270
-
271
- Merge two tasks into one.
272
-
273
- ```bash
274
- octie merge <source-id> <target-id> # Merge source into target
275
- ```
276
-
277
- The merge combines:
278
- - Description (concatenated)
279
- - Success criteria (deduplicated by ID)
280
- - Deliverables (deduplicated by ID)
281
- - Related files (deduplicated)
282
- - Notes (concatenated)
283
-
284
- Edges are reconnected from source to target.
285
-
286
- ### `octie export`
287
-
288
- Export project data to file.
289
-
290
- ```bash
291
- octie export # Export to stdout
292
- octie export --type json --output backup.json
293
- octie export --type md --output tasks.md
294
- ```
295
-
296
- **Options:**
297
- | Flag | Description |
298
- |------|-------------|
299
- | `--type <format>` | Export format: `json`, `md` (default: `json`) |
300
- | `--output <path>` | Output file path |
301
-
302
- ### `octie import`
303
-
304
- Import tasks from file.
305
-
306
- ```bash
307
- octie import backup.json # Import from JSON file
308
- octie import tasks.md --format md # Import from Markdown
309
- octie import backup.json --merge # Merge with existing tasks
310
- ```
311
-
312
- **Options:**
313
- | Flag | Description |
314
- |------|-------------|
315
- | `--file <path>` | Input file path (required) |
316
- | `--format <type>` | Input format: `json`, `md` (auto-detected from extension) |
317
- | `--merge` | Merge with existing tasks instead of replacing |
318
-
319
- ### `octie graph`
320
-
321
- Graph analysis and validation commands.
322
-
323
- ```bash
324
- octie graph validate # Check graph integrity
325
- octie graph cycles # Detect and display cycles
326
- octie graph topology # Show topological order
327
- octie graph critical-path # Show longest dependency path
328
- octie graph orphans # Show disconnected tasks
329
- octie graph stats # Display graph statistics
330
- ```
331
-
332
- ### `octie serve`
333
-
334
- Start the web UI server.
335
-
336
- ```bash
337
- octie serve # Default: localhost:3000
338
- octie serve --port 8080 # Custom port
339
- octie serve --host 0.0.0.0 # Listen on all interfaces
340
- ```
341
-
342
- **Options:**
343
- | Flag | Description |
344
- |------|-------------|
345
- | `--port <number>` | Server port (default: 3000) |
346
- | `--host <address>` | Host address (default: localhost) |
347
- | `--no-cors` | Disable CORS headers |
348
-
349
- ### `octie wire`
350
-
351
- Insert an existing task between two connected tasks on a blocker chain.
352
-
353
- ```bash
354
- # Wire task B between A and C
355
- octie wire <task-b-id> \
356
- --after <task-a-id> \
357
- --before <task-c-id> \
358
- --dep-on-after "Why B depends on A" \
359
- --dep-on-before "Why C depends on B"
360
- ```
361
-
362
- **Visual Example:**
363
- ```
364
- Before: A → C (A blocks C)
365
- After: A → B → C (A blocks B, B blocks C)
366
- ```
367
-
368
- **Workflow:**
369
- 1. Create the intermediate task first (using `octie create`)
370
- 2. Wire it into the chain using `octie wire`
371
-
372
- **Required Options:**
373
- | Flag | Description |
374
- |------|-------------|
375
- | `--after <id>` | Source task ID - will become the inserted task's blocker |
376
- | `--before <id>` | Target task ID - will block on the inserted task instead |
377
- | `--dep-on-after <text>` | Why the inserted task depends on the --after task (twin validation) |
378
- | `--dep-on-before <text>` | Why the --before task depends on the inserted task |
379
-
380
- **Example:**
381
- ```bash
382
- # Step 1: Create the intermediate task
383
- octie create --title "Review API spec" --description "..." \
384
- --success-criterion "..." --deliverable "..."
385
-
386
- # Step 2: Wire it between two connected tasks
387
- octie wire xyz789 \
388
- --after abc123 \
389
- --before def456 \
390
- --dep-on-after "Needs API spec to create TypeScript models" \
391
- --dep-on-before "Frontend needs TypeScript models for implementation"
392
- ```
393
-
394
- ## Web API Reference
395
-
396
- When the server is running, the following REST API endpoints are available.
397
-
398
- > **Full API documentation**: See [openapi.yaml](./openapi.yaml) for the complete OpenAPI 3.0 specification.
399
-
400
- ### Task Endpoints
401
-
402
- | Method | Endpoint | Description |
403
- |--------|----------|-------------|
404
- | `GET` | `/api/tasks` | List all tasks (supports `?status=`, `?priority=`, `?search=`) |
405
- | `GET` | `/api/tasks/:id` | Get task by ID |
406
- | `POST` | `/api/tasks` | Create new task |
407
- | `PUT` | `/api/tasks/:id` | Update task |
408
- | `DELETE` | `/api/tasks/:id` | Delete task (supports `?reconnect=true`) |
409
- | `POST` | `/api/tasks/:id/merge` | Merge tasks (body: `{ "targetId": "uuid" }`) |
410
-
411
- ### Graph Endpoints
412
-
413
- | Method | Endpoint | Description |
414
- |--------|----------|-------------|
415
- | `GET` | `/api/graph` | Get full graph structure |
416
- | `GET` | `/api/graph/topology` | Get topological order |
417
- | `POST` | `/api/graph/validate` | Validate graph structure |
418
- | `GET` | `/api/graph/cycles` | Detect cycles |
419
- | `GET` | `/api/graph/critical-path` | Get critical path |
420
- | `GET` | `/api/stats` | Get project statistics |
421
-
422
- ### Health Endpoints
423
-
424
- | Method | Endpoint | Description |
425
- |--------|----------|-------------|
426
- | `GET` | `/health` | Health check |
427
- | `GET` | `/api` | API info |
428
- | `GET` | `/api/project` | Project metadata |
429
-
430
- ## Data Format
431
-
432
- Tasks are stored in `.octie/project.json` with the following structure:
433
-
434
- ```json
435
- {
436
- "version": "1.0.0",
437
- "format": "octie-project",
438
- "metadata": {
439
- "project_name": "my-project",
440
- "version": "1.0.0",
441
- "created_at": "2026-02-16T12:00:00Z",
442
- "updated_at": "2026-02-16T14:30:00Z",
443
- "task_count": 5
444
- },
445
- "tasks": {
446
- "task-id": {
447
- "id": "uuid",
448
- "title": "Task title",
449
- "description": "Detailed description",
450
- "status": "not_started|pending|in_progress|completed|blocked",
451
- "priority": "top|second|later",
452
- "success_criteria": [...],
453
- "deliverables": [...],
454
- "blockers": [],
455
- "dependencies": [],
456
- "edges": [],
457
- "related_files": [],
458
- "notes": "",
459
- "created_at": "ISO-8601",
460
- "updated_at": "ISO-8601",
461
- "completed_at": "ISO-8601|null"
462
- }
463
- },
464
- "edges": [
465
- {"from": "task-id-1", "to": "task-id-2", "type": "blocks"}
466
- ],
467
- "indexes": {
468
- "byStatus": {...},
469
- "byPriority": {...},
470
- "rootTasks": [...],
471
- "orphans": []
472
- }
473
- }
474
- ```
475
-
476
- ## Testing
477
-
478
- ```bash
479
- # Run all tests
480
- npm test
481
-
482
- # Run specific test file
483
- npx vitest run tests/unit/cli/commands/create.test.ts
484
-
485
- # Run with coverage
486
- npm run test:coverage
487
-
488
- # Run benchmarks
489
- npm run bench
490
- ```
491
-
492
- **Test Coverage**:
493
- - Unit tests: 388 passed (8 skipped for unimplemented features)
494
- - Integration tests: Full CLI workflow, concurrent access, file corruption recovery
495
- - Web API tests: 48 comprehensive endpoint tests
496
- - Performance benchmarks: All operations under target thresholds
497
-
498
- ## Project Status
499
-
500
- **Current Version**: 1.0.0
501
-
502
- **Completed Features**:
503
- - ✅ Core data structures (TaskNode, TaskGraphStore with O(1) lookup)
504
- - ✅ Storage layer with atomic writes and backup rotation
505
- - ✅ Graph algorithms (topological sort, cycle detection, traversal, operations)
506
- - ✅ CLI commands (init, create, list, get, update, delete, merge, export, import, graph, serve)
507
- - ✅ Output formatters (Markdown, JSON, Table)
508
- - ✅ Web API server with RESTful endpoints (Express.js)
509
- - ✅ Web UI (React + ReactFlow + Zustand + Tailwind CSS)
510
- - ✅ Unit tests (388 passing)
511
- - ✅ Integration tests (CLI workflow, concurrent access, recovery)
512
- - ✅ Web API tests (48 comprehensive tests)
513
- - ✅ Performance benchmarks (all under target thresholds)
514
-
515
- **Future Enhancements** (post-v1.0.0):
516
- - 📋 Real-time collaboration (WebSocket)
517
- - 📋 Task templates
518
- - 📋 Advanced filtering and search
519
- - 📋 Export to other formats (PDF, CSV)
520
-
521
- ## License
522
-
523
- MIT