@sudosandwich/limps 1.1.0 → 2.0.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.
Files changed (127) hide show
  1. package/README.md +46 -82
  2. package/dist/cli/config-cmd.d.ts +38 -0
  3. package/dist/cli/config-cmd.d.ts.map +1 -1
  4. package/dist/cli/config-cmd.js +40 -4
  5. package/dist/cli/config-cmd.js.map +1 -1
  6. package/dist/cli/index.d.ts +1 -0
  7. package/dist/cli/index.d.ts.map +1 -1
  8. package/dist/cli/index.js +2 -0
  9. package/dist/cli/index.js.map +1 -1
  10. package/dist/cli/init-project.d.ts.map +1 -1
  11. package/dist/cli/init-project.js +1 -6
  12. package/dist/cli/init-project.js.map +1 -1
  13. package/dist/cli/json-output.d.ts +71 -0
  14. package/dist/cli/json-output.d.ts.map +1 -0
  15. package/dist/cli/json-output.js +83 -0
  16. package/dist/cli/json-output.js.map +1 -0
  17. package/dist/cli/next-task.d.ts +4 -5
  18. package/dist/cli/next-task.d.ts.map +1 -1
  19. package/dist/cli/next-task.js +17 -35
  20. package/dist/cli/next-task.js.map +1 -1
  21. package/dist/cli/status.d.ts +47 -2
  22. package/dist/cli/status.d.ts.map +1 -1
  23. package/dist/cli/status.js +67 -1
  24. package/dist/cli/status.js.map +1 -1
  25. package/dist/cli/task-resolver.d.ts +67 -0
  26. package/dist/cli/task-resolver.d.ts.map +1 -0
  27. package/dist/cli/task-resolver.js +217 -0
  28. package/dist/cli/task-resolver.js.map +1 -0
  29. package/dist/commands/config/list.d.ts +9 -1
  30. package/dist/commands/config/list.d.ts.map +1 -1
  31. package/dist/commands/config/list.js +11 -2
  32. package/dist/commands/config/list.js.map +1 -1
  33. package/dist/commands/config/show.d.ts +9 -1
  34. package/dist/commands/config/show.d.ts.map +1 -1
  35. package/dist/commands/config/show.js +13 -2
  36. package/dist/commands/config/show.js.map +1 -1
  37. package/dist/commands/index.d.ts.map +1 -1
  38. package/dist/commands/index.js +16 -2
  39. package/dist/commands/index.js.map +1 -1
  40. package/dist/commands/list-agents.d.ts +1 -0
  41. package/dist/commands/list-agents.d.ts.map +1 -1
  42. package/dist/commands/list-agents.js +18 -1
  43. package/dist/commands/list-agents.js.map +1 -1
  44. package/dist/commands/list-plans.d.ts +1 -0
  45. package/dist/commands/list-plans.d.ts.map +1 -1
  46. package/dist/commands/list-plans.js +13 -0
  47. package/dist/commands/list-plans.js.map +1 -1
  48. package/dist/commands/next-task.d.ts +1 -0
  49. package/dist/commands/next-task.d.ts.map +1 -1
  50. package/dist/commands/next-task.js +27 -1
  51. package/dist/commands/next-task.js.map +1 -1
  52. package/dist/commands/status.d.ts +4 -1
  53. package/dist/commands/status.d.ts.map +1 -1
  54. package/dist/commands/status.js +67 -6
  55. package/dist/commands/status.js.map +1 -1
  56. package/dist/components/AgentStatus.d.ts +11 -0
  57. package/dist/components/AgentStatus.d.ts.map +1 -0
  58. package/dist/components/AgentStatus.js +45 -0
  59. package/dist/components/AgentStatus.js.map +1 -0
  60. package/dist/components/WhatsNew.d.ts +10 -0
  61. package/dist/components/WhatsNew.d.ts.map +1 -0
  62. package/dist/components/WhatsNew.js +49 -0
  63. package/dist/components/WhatsNew.js.map +1 -0
  64. package/dist/config.d.ts +5 -4
  65. package/dist/config.d.ts.map +1 -1
  66. package/dist/config.js +6 -19
  67. package/dist/config.js.map +1 -1
  68. package/dist/resources/agents-status.d.ts +7 -8
  69. package/dist/resources/agents-status.d.ts.map +1 -1
  70. package/dist/resources/agents-status.js +10 -55
  71. package/dist/resources/agents-status.js.map +1 -1
  72. package/dist/server-main.d.ts.map +1 -1
  73. package/dist/server-main.js +3 -7
  74. package/dist/server-main.js.map +1 -1
  75. package/dist/server.d.ts +1 -3
  76. package/dist/server.d.ts.map +1 -1
  77. package/dist/server.js +1 -4
  78. package/dist/server.js.map +1 -1
  79. package/dist/tools/get-next-task.d.ts +4 -30
  80. package/dist/tools/get-next-task.d.ts.map +1 -1
  81. package/dist/tools/get-next-task.js +5 -212
  82. package/dist/tools/get-next-task.js.map +1 -1
  83. package/dist/tools/index.d.ts.map +1 -1
  84. package/dist/tools/index.js +3 -16
  85. package/dist/tools/index.js.map +1 -1
  86. package/dist/tools/update-task-status.d.ts.map +1 -1
  87. package/dist/tools/update-task-status.js +32 -122
  88. package/dist/tools/update-task-status.js.map +1 -1
  89. package/dist/types.d.ts +0 -3
  90. package/dist/types.d.ts.map +1 -1
  91. package/dist/utils/changelog.d.ts +20 -0
  92. package/dist/utils/changelog.d.ts.map +1 -0
  93. package/dist/utils/changelog.js +104 -0
  94. package/dist/utils/changelog.js.map +1 -0
  95. package/dist/utils/errors.d.ts +47 -0
  96. package/dist/utils/errors.d.ts.map +1 -1
  97. package/dist/utils/errors.js +91 -0
  98. package/dist/utils/errors.js.map +1 -1
  99. package/dist/utils/index.d.ts +2 -0
  100. package/dist/utils/index.d.ts.map +1 -1
  101. package/dist/utils/index.js +2 -0
  102. package/dist/utils/index.js.map +1 -1
  103. package/dist/utils/os-paths.d.ts +0 -11
  104. package/dist/utils/os-paths.d.ts.map +1 -1
  105. package/dist/utils/os-paths.js +0 -21
  106. package/dist/utils/os-paths.js.map +1 -1
  107. package/dist/utils/suggestions.d.ts +38 -0
  108. package/dist/utils/suggestions.d.ts.map +1 -0
  109. package/dist/utils/suggestions.js +71 -0
  110. package/dist/utils/suggestions.js.map +1 -0
  111. package/dist/utils/version-state.d.ts +30 -0
  112. package/dist/utils/version-state.d.ts.map +1 -0
  113. package/dist/utils/version-state.js +106 -0
  114. package/dist/utils/version-state.js.map +1 -0
  115. package/package.json +1 -1
  116. package/dist/coordination.d.ts +0 -102
  117. package/dist/coordination.d.ts.map +0 -1
  118. package/dist/coordination.js +0 -157
  119. package/dist/coordination.js.map +0 -1
  120. package/dist/tools/claim-task.d.ts +0 -25
  121. package/dist/tools/claim-task.d.ts.map +0 -1
  122. package/dist/tools/claim-task.js +0 -288
  123. package/dist/tools/claim-task.js.map +0 -1
  124. package/dist/tools/release-task.d.ts +0 -23
  125. package/dist/tools/release-task.d.ts.map +0 -1
  126. package/dist/tools/release-task.js +0 -154
  127. package/dist/tools/release-task.js.map +0 -1
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # limps
2
2
 
3
- **L**ocal **I**ntelligent **M**CP **P**lanning **S**erver - AI agent plan management and coordination.
3
+ **L**ocal **I**ntelligent **M**CP **P**lanning **S**erver - AI agent plan management.
4
4
 
5
5
  [![npm](https://img.shields.io/npm/v/@sudosandwich/limps)](https://www.npmjs.com/package/@sudosandwich/limps)
6
6
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
@@ -17,7 +17,7 @@
17
17
 
18
18
  limps solves this by providing a **standardized MCP interface** that any MCP-compatible tool can access. Your planning documents, tasks, and decisions live in one place, accessible to:
19
19
 
20
- - **Claude Desktop** — Full access to search, read, update, create documents, claim tasks, and more
20
+ - **Claude Desktop** — Full access to search, read, update, create documents, and more
21
21
  - **Cursor** — Integrated planning and task management via MCP tools
22
22
  - **GitHub Copilot** — When MCP support is enabled
23
23
  - **Any MCP-compatible tool** — Standard protocol means universal access
@@ -29,22 +29,20 @@ limps solves this by providing a **standardized MCP interface** that any MCP-com
29
29
 
30
30
  ## Used In Production
31
31
 
32
- limps is actively used to build [runi](https://github.com/paulbreuler/runi) - managing planning documents, agent coordination, and task tracking across the development lifecycle.
32
+ limps is actively used to build [runi](https://github.com/paulbreuler/runi) - managing planning documents and task tracking across the development lifecycle.
33
33
 
34
34
  ### How runi Uses limps
35
35
 
36
36
  The [runi](https://github.com/paulbreuler/runi) project uses a separate git repository ([runi-planning-docs](https://github.com/paulbreuler/runi-planning-docs)) for version-controlled planning documents. Custom Cursor commands in `.cursor/commands/` integrate with limps tools:
37
37
 
38
-
39
-
40
38
  **Core Commands:**
41
39
 
42
40
  | Command | Description | MCP Tools Used |
43
41
  |---------|-------------|----------------|
44
42
  | `/create-feature-plan` | Generate TDD plan with docs and agent files | `create_plan`, `create_doc`, `list_docs` |
45
43
  | `/list-feature-plans` | List all plans with clickable file paths | `list_docs`, `process_doc` |
46
- | `/run-agent` | Start work on next agent task | `process_doc`, `claim_task` |
47
- | `/close-feature-agent` | Verify completion, sync status | `process_doc`, `update_doc`, `release_task` |
44
+ | `/run-agent` | Start work on next agent task | `process_doc`, `update_task_status` |
45
+ | `/close-feature-agent` | Verify completion, sync status | `process_doc`, `update_doc`, `update_task_status` |
48
46
  | `/update-feature-plan` | Regenerate agents from updated plan | `process_doc`, `create_doc`, `process_docs` |
49
47
  | `/plan-list-agents` | Show all agents with status | `list_docs`, `process_docs` |
50
48
 
@@ -204,15 +202,6 @@ The server automatically finds configuration at OS-specific locations:
204
202
  | Linux | `~/.config/limps/config.json` |
205
203
  | Windows | `%APPDATA%\limps\config.json` |
206
204
 
207
- ### From Source
208
-
209
- ```bash
210
- git clone https://github.com/paulbreuler/limps.git
211
- cd limps
212
- npm install
213
- npm run build
214
- ```
215
-
216
205
  ## Configuration
217
206
 
218
207
  Create a `config.json` at the OS-specific location or specify a path:
@@ -222,53 +211,59 @@ Create a `config.json` at the OS-specific location or specify a path:
222
211
  "plansPath": "~/Documents/my-plans",
223
212
  "docsPaths": ["~/Documents/my-plans"],
224
213
  "fileExtensions": [".md"],
225
- "dataPath": "~/Library/Application Support/limps/data",
226
- "coordinationPath": "~/Library/Application Support/limps/coordination.json",
227
- "heartbeatTimeout": 300000,
228
- "debounceDelay": 200,
229
- "maxHandoffIterations": 3
214
+ "dataPath": "~/Library/Application Support/limps/data"
230
215
  }
231
216
  ```
232
217
 
233
- **Config priority:**
234
- 1. CLI: `limps --config /path/to/config.json`
235
- 2. Environment: `MCP_PLANNING_CONFIG=/path/to/config.json`
236
- 3. OS-specific default location
218
+ ### Config Resolution Priority
237
219
 
238
- **Path options:**
239
- - Tilde expansion: `~/Documents/plans`
240
- - Absolute: `/Users/john/Documents/plans`
241
- - Relative (to config file): `./plans`
220
+ The server finds configuration in this order:
242
221
 
243
- ## Cursor Setup
222
+ 1. **CLI argument**: `limps serve --config /path/to/config.json`
223
+ 2. **Environment variable**: `MCP_PLANNING_CONFIG=/path/to/config.json`
224
+ 3. **Project environment**: `LIMPS_PROJECT=my-project` (looks up in registry)
225
+ 4. **Registry current project**: Set via `limps config use <name>`
226
+ 5. **OS-specific default**: See table above
244
227
 
245
- Add to Cursor settings (`Cmd+Shift+P` "Preferences: Open User Settings (JSON)"):
228
+ > **Note:** If no config exists at the resolved path, limps auto-creates a default config file.
246
229
 
247
- ```json
248
- {
249
- "mcp.servers": {
250
- "limps": {
251
- "command": "limps"
252
- }
253
- }
254
- }
255
- ```
230
+ ### Config Options
231
+
232
+ | Option | Type | Default | Description |
233
+ |--------|------|---------|-------------|
234
+ | `plansPath` | string | `./plans` | Primary directory for plan documents |
235
+ | `docsPaths` | string[] | `[]` | Additional directories to index |
236
+ | `fileExtensions` | string[] | `[".md"]` | File types to index |
237
+ | `dataPath` | string | `./data` | SQLite database location |
238
+
239
+ ### Path Options
240
+
241
+ - **Tilde expansion**: `~/Documents/plans` → `/Users/you/Documents/plans`
242
+ - **Absolute paths**: `/Users/john/Documents/plans`
243
+ - **Relative paths**: `./plans` (relative to config file location)
244
+
245
+ ## MCP Client Setup
246
+
247
+ > **Important:** MCP clients must use the `serve` subcommand. Run `limps init my-project` first to generate a config.
248
+
249
+ ### Cursor
250
+
251
+ Add to settings (`Cmd+Shift+P` → "Preferences: Open User Settings (JSON)"):
256
252
 
257
- With explicit config:
258
253
  ```json
259
254
  {
260
255
  "mcp.servers": {
261
256
  "limps": {
262
257
  "command": "limps",
263
- "args": ["--config", "/path/to/config.json"]
258
+ "args": ["serve", "--config", "/path/to/config.json"]
264
259
  }
265
260
  }
266
261
  }
267
262
  ```
268
263
 
269
- ## Claude Desktop Setup
264
+ ### Claude Desktop
270
265
 
271
- Claude Desktop runs in a macOS sandbox and cannot access global npm binaries. Use `npx` instead.
266
+ Claude Desktop runs in a macOS sandbox—use `npx` instead of global binaries.
272
267
 
273
268
  Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:
274
269
 
@@ -277,29 +272,15 @@ Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:
277
272
  "mcpServers": {
278
273
  "limps": {
279
274
  "command": "npx",
280
- "args": ["-y", "@sudosandwich/limps"]
275
+ "args": ["-y", "@sudosandwich/limps", "serve", "--config", "/path/to/config.json"]
281
276
  }
282
277
  }
283
278
  }
284
279
  ```
285
280
 
286
- With explicit config:
287
- ```json
288
- {
289
- "mcpServers": {
290
- "limps": {
291
- "command": "npx",
292
- "args": ["-y", "@sudosandwich/limps", "--config", "/path/to/config.json"]
293
- }
294
- }
295
- }
296
- ```
297
-
298
- > **Note:** Run `limps init my-project` first to generate a config, then use the full path above.
299
-
300
281
  ## Features
301
282
 
302
- ### MCP Tools (16 Tools)
283
+ ### MCP Tools (14 Tools)
303
284
 
304
285
  #### Document Operations
305
286
 
@@ -323,13 +304,11 @@ With explicit config:
323
304
  | `list_agents` | List agents for a plan with status, persona, and file counts |
324
305
  | `get_plan_status` | Get plan progress with completion %, blocked/WIP agents |
325
306
 
326
- #### Task Coordination
307
+ #### Task Management
327
308
 
328
309
  | Tool | Description |
329
310
  |------|-------------|
330
311
  | `get_next_task` | Get highest-priority task with detailed score breakdown |
331
- | `claim_task` | Claim tasks with file locks |
332
- | `release_task` | Release tasks and locks |
333
312
  | `update_task_status` | Update task status (GAP → WIP → PASS/BLOCKED) |
334
313
 
335
314
  #### Task Scoring Algorithm
@@ -377,9 +356,11 @@ Implements the [RLM pattern from MIT CSAIL](https://arxiv.org/abs/2512.24601) fo
377
356
  ## Development
378
357
 
379
358
  ```bash
359
+ git clone https://github.com/paulbreuler/limps.git
360
+ cd limps
380
361
  npm install # Install dependencies
381
- npm test # Run tests
382
362
  npm run build # Build TypeScript
363
+ npm test # Run tests
383
364
  npm run dev # Watch mode
384
365
  npm run lint # ESLint check
385
366
  npm run format # Prettier format
@@ -407,7 +388,6 @@ GitHub Actions automatically builds, tests, and creates releases with changelogs
407
388
 
408
389
  - Full-text search with auto-indexing
409
390
  - Real-time file watching (Chokidar)
410
- - Multi-agent coordination with heartbeats
411
391
  - RLM sandbox (QuickJS)
412
392
 
413
393
  ### Principles
@@ -420,23 +400,7 @@ GitHub Actions automatically builds, tests, and creates releases with changelogs
420
400
 
421
401
  ## Adapting for Other Uses
422
402
 
423
- The server is designed for planning documents but the core is generic:
424
-
425
- **Configuration-only:**
426
-
427
- ```json
428
- {
429
- "plansPath": "./your-docs",
430
- "docsPaths": ["./content", "./docs"],
431
- "fileExtensions": [".md", ".txt", ".rst"]
432
- }
433
- ```
434
-
435
- **For different domains** (wikis, knowledge bases):
436
-
437
- - Replace/remove planning-specific tools
438
- - Customize document extractors in `src/rlm/extractors.ts`
439
- - Modify coordination patterns or remove if single-agent
403
+ The server is designed for planning documents but the core is generic. For wikis or knowledge bases: configure `plansPath`/`docsPaths`/`fileExtensions` to point at your content, and optionally customize extractors in `src/rlm/extractors.ts`.
440
404
 
441
405
  ## What is MCP?
442
406
 
@@ -2,6 +2,24 @@
2
2
  * Config subcommand handlers for limps CLI.
3
3
  * Provides commands to manage the project registry and view configuration.
4
4
  */
5
+ /**
6
+ * Project data for JSON output.
7
+ */
8
+ export interface ProjectsData {
9
+ projects: {
10
+ name: string;
11
+ configPath: string;
12
+ current: boolean;
13
+ exists: boolean;
14
+ }[];
15
+ total: number;
16
+ }
17
+ /**
18
+ * Get projects data for JSON output.
19
+ *
20
+ * @returns Projects data object
21
+ */
22
+ export declare function getProjectsData(): ProjectsData;
5
23
  /**
6
24
  * List all registered projects.
7
25
  *
@@ -16,6 +34,26 @@ export declare function configList(): string;
16
34
  * @throws Error if project not found
17
35
  */
18
36
  export declare function configUse(name: string): string;
37
+ /**
38
+ * Configuration data for JSON output.
39
+ */
40
+ export interface ConfigData {
41
+ configPath: string;
42
+ config: {
43
+ plansPath: string;
44
+ dataPath: string;
45
+ docsPaths?: string[];
46
+ fileExtensions?: string[];
47
+ };
48
+ }
49
+ /**
50
+ * Get configuration data for JSON output.
51
+ *
52
+ * @param resolveConfigPathFn - Function to resolve config path (injected to avoid circular deps)
53
+ * @returns Configuration data object
54
+ * @throws Error if config file not found
55
+ */
56
+ export declare function getConfigData(resolveConfigPathFn: () => string): ConfigData;
19
57
  /**
20
58
  * Show the resolved configuration values.
21
59
  *
@@ -1 +1 @@
1
- {"version":3,"file":"config-cmd.d.ts","sourceRoot":"","sources":["../../src/cli/config-cmd.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAaH;;;;GAIG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAmBnC;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAG9C;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,mBAAmB,EAAE,MAAM,MAAM,GAAG,MAAM,CAiCpE;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,mBAAmB,EAAE,MAAM,MAAM,GAAG,MAAM,CAEpE;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAkBtE;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGjD;AAED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAmCxD;AAID;;;;;GAKG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAmDvC"}
1
+ {"version":3,"file":"config-cmd.d.ts","sourceRoot":"","sources":["../../src/cli/config-cmd.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAaH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,OAAO,CAAC;KACjB,EAAE,CAAC;IACJ,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,wBAAgB,eAAe,IAAI,YAAY,CAY9C;AAED;;;;GAIG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAmBnC;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAG9C;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE;QACN,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;QACrB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;KAC3B,CAAC;CACH;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,mBAAmB,EAAE,MAAM,MAAM,GAAG,UAAU,CAkB3E;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,mBAAmB,EAAE,MAAM,MAAM,GAAG,MAAM,CA4BpE;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,mBAAmB,EAAE,MAAM,MAAM,GAAG,MAAM,CAEpE;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAkBtE;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGjD;AAED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAmCxD;AAID;;;;;GAKG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAmDvC"}
@@ -6,6 +6,23 @@ import { existsSync, readdirSync } from 'fs';
6
6
  import { resolve, dirname, basename } from 'path';
7
7
  import { registerProject, unregisterProject, setCurrentProject, listProjects, loadRegistry, } from './registry.js';
8
8
  import { loadConfig } from '../config.js';
9
+ /**
10
+ * Get projects data for JSON output.
11
+ *
12
+ * @returns Projects data object
13
+ */
14
+ export function getProjectsData() {
15
+ const projects = listProjects();
16
+ return {
17
+ projects: projects.map((p) => ({
18
+ name: p.name,
19
+ configPath: p.configPath,
20
+ current: p.current,
21
+ exists: existsSync(p.configPath),
22
+ })),
23
+ total: projects.length,
24
+ };
25
+ }
9
26
  /**
10
27
  * List all registered projects.
11
28
  *
@@ -38,6 +55,29 @@ export function configUse(name) {
38
55
  setCurrentProject(name);
39
56
  return `Switched to project "${name}"`;
40
57
  }
58
+ /**
59
+ * Get configuration data for JSON output.
60
+ *
61
+ * @param resolveConfigPathFn - Function to resolve config path (injected to avoid circular deps)
62
+ * @returns Configuration data object
63
+ * @throws Error if config file not found
64
+ */
65
+ export function getConfigData(resolveConfigPathFn) {
66
+ const configPath = resolveConfigPathFn();
67
+ if (!existsSync(configPath)) {
68
+ throw new Error(`Config file not found: ${configPath}`);
69
+ }
70
+ const config = loadConfig(configPath);
71
+ return {
72
+ configPath,
73
+ config: {
74
+ plansPath: config.plansPath,
75
+ dataPath: config.dataPath,
76
+ docsPaths: config.docsPaths,
77
+ fileExtensions: config.fileExtensions,
78
+ },
79
+ };
80
+ }
41
81
  /**
42
82
  * Show the resolved configuration values.
43
83
  *
@@ -56,7 +96,6 @@ export function configShow(resolveConfigPathFn) {
56
96
  lines.push('Configuration:');
57
97
  lines.push(` plansPath: ${config.plansPath}`);
58
98
  lines.push(` dataPath: ${config.dataPath}`);
59
- lines.push(` coordinationPath: ${config.coordinationPath}`);
60
99
  if (config.docsPaths && config.docsPaths.length > 0) {
61
100
  lines.push(` docsPaths:`);
62
101
  for (const p of config.docsPaths) {
@@ -66,9 +105,6 @@ export function configShow(resolveConfigPathFn) {
66
105
  if (config.fileExtensions) {
67
106
  lines.push(` fileExtensions: ${config.fileExtensions.join(', ')}`);
68
107
  }
69
- lines.push(` heartbeatTimeout: ${config.heartbeatTimeout}ms`);
70
- lines.push(` debounceDelay: ${config.debounceDelay}ms`);
71
- lines.push(` maxHandoffIterations: ${config.maxHandoffIterations}`);
72
108
  return lines.join('\n');
73
109
  }
74
110
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"config-cmd.js","sourceRoot":"","sources":["../../src/cli/config-cmd.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config-cmd.js","sourceRoot":"","sources":["../../src/cli/config-cmd.ts"],"names":[],"mappings":"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"}
@@ -8,4 +8,5 @@ export { nextTask, calculateDependencyScore, calculatePriorityScore, calculateWo
8
8
  export { status, getPlanStatusSummary, type PlanStatusSummary } from './status.js';
9
9
  export { getRegistryPath, loadRegistry, saveRegistry, registerProject, unregisterProject, setCurrentProject, getCurrentProjectPath, getProjectPath, listProjects, type RegisteredProject, type ProjectRegistry, } from './registry.js';
10
10
  export { configList, configUse, configShow, configPath, configAdd, configRemove, configSet, configDiscover, } from './config-cmd.js';
11
+ export { wrapSuccess, wrapError, outputJson, isJsonMode, handleJsonOutput, type JsonSuccess, type JsonError, type JsonEnvelope, } from './json-output.js';
11
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACpG,OAAO,EACL,QAAQ,EACR,wBAAwB,EACxB,sBAAsB,EACtB,sBAAsB,EACtB,cAAc,EACd,SAAS,EACT,KAAK,kBAAkB,GACxB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAGnF,OAAO,EACL,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,cAAc,EACd,YAAY,EACZ,KAAK,iBAAiB,EACtB,KAAK,eAAe,GACrB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,UAAU,EACV,SAAS,EACT,UAAU,EACV,UAAU,EACV,SAAS,EACT,YAAY,EACZ,SAAS,EACT,cAAc,GACf,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACpG,OAAO,EACL,QAAQ,EACR,wBAAwB,EACxB,sBAAsB,EACtB,sBAAsB,EACtB,cAAc,EACd,SAAS,EACT,KAAK,kBAAkB,GACxB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAGnF,OAAO,EACL,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,cAAc,EACd,YAAY,EACZ,KAAK,iBAAiB,EACtB,KAAK,eAAe,GACrB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,UAAU,EACV,SAAS,EACT,UAAU,EACV,UAAU,EACV,SAAS,EACT,YAAY,EACZ,SAAS,EACT,cAAc,GACf,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,WAAW,EACX,SAAS,EACT,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,YAAY,GAClB,MAAM,kBAAkB,CAAC"}
package/dist/cli/index.js CHANGED
@@ -9,4 +9,6 @@ export { status, getPlanStatusSummary } from './status.js';
9
9
  // Registry and config management
10
10
  export { getRegistryPath, loadRegistry, saveRegistry, registerProject, unregisterProject, setCurrentProject, getCurrentProjectPath, getProjectPath, listProjects, } from './registry.js';
11
11
  export { configList, configUse, configShow, configPath, configAdd, configRemove, configSet, configDiscover, } from './config-cmd.js';
12
+ // JSON output utilities
13
+ export { wrapSuccess, wrapError, outputJson, isJsonMode, handleJsonOutput, } from './json-output.js';
12
14
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAqB,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,aAAa,EAAsB,MAAM,kBAAkB,CAAC;AACpG,OAAO,EACL,QAAQ,EACR,wBAAwB,EACxB,sBAAsB,EACtB,sBAAsB,EACtB,cAAc,EACd,SAAS,GAEV,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAA0B,MAAM,aAAa,CAAC;AAEnF,iCAAiC;AACjC,OAAO,EACL,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,cAAc,EACd,YAAY,GAGb,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,UAAU,EACV,SAAS,EACT,UAAU,EACV,UAAU,EACV,SAAS,EACT,YAAY,EACZ,SAAS,EACT,cAAc,GACf,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAqB,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,aAAa,EAAsB,MAAM,kBAAkB,CAAC;AACpG,OAAO,EACL,QAAQ,EACR,wBAAwB,EACxB,sBAAsB,EACtB,sBAAsB,EACtB,cAAc,EACd,SAAS,GAEV,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAA0B,MAAM,aAAa,CAAC;AAEnF,iCAAiC;AACjC,OAAO,EACL,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,cAAc,EACd,YAAY,GAGb,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,UAAU,EACV,SAAS,EACT,UAAU,EACV,UAAU,EACV,SAAS,EACT,YAAY,EACZ,SAAS,EACT,cAAc,GACf,MAAM,iBAAiB,CAAC;AAEzB,wBAAwB;AACxB,OAAO,EACL,WAAW,EACX,SAAS,EACT,UAAU,EACV,UAAU,EACV,gBAAgB,GAIjB,MAAM,kBAAkB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"init-project.d.ts","sourceRoot":"","sources":["../../src/cli/init-project.ts"],"names":[],"mappings":"AAAA;;GAEG;AAoCH;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CA+F1E"}
1
+ {"version":3,"file":"init-project.d.ts","sourceRoot":"","sources":["../../src/cli/init-project.ts"],"names":[],"mappings":"AAAA;;GAEG;AA+BH;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CA0F1E"}
@@ -5,7 +5,7 @@ import { resolve } from 'path';
5
5
  import { mkdirSync, existsSync, writeFileSync } from 'fs';
6
6
  import { homedir } from 'os';
7
7
  import which from 'which';
8
- import { getOSConfigPath, getOSBasePath, getOSDataPath, getOSCoordinationPath, } from '../utils/os-paths.js';
8
+ import { getOSConfigPath, getOSBasePath, getOSDataPath } from '../utils/os-paths.js';
9
9
  import { registerProject } from './registry.js';
10
10
  /**
11
11
  * Expand tilde in path to full home directory path.
@@ -39,7 +39,6 @@ export function initProject(projectName, docsPath) {
39
39
  const basePath = getOSBasePath(projectName);
40
40
  const configPath = getOSConfigPath(projectName);
41
41
  const dataPath = getOSDataPath(projectName);
42
- const coordinationPath = getOSCoordinationPath(projectName);
43
42
  // Expand tilde in docsPath if provided
44
43
  const resolvedDocsPath = docsPath ? expandTilde(docsPath) : null;
45
44
  const defaultDocsPath = resolve(homedir(), 'Documents', projectName);
@@ -57,10 +56,6 @@ export function initProject(projectName, docsPath) {
57
56
  docsPaths: [resolvedDocsPath || defaultDocsPath],
58
57
  fileExtensions: ['.md'],
59
58
  dataPath: dataPath,
60
- coordinationPath: coordinationPath,
61
- heartbeatTimeout: 300000,
62
- debounceDelay: 200,
63
- maxHandoffIterations: 3,
64
59
  };
65
60
  writeFileSync(configPath, JSON.stringify(config, null, 2));
66
61
  // Auto-register in the project registry
@@ -1 +1 @@
1
- {"version":3,"file":"init-project.js","sourceRoot":"","sources":["../../src/cli/init-project.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init-project.js","sourceRoot":"","sources":["../../src/cli/init-project.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * JSON output utilities for CLI commands.
3
+ *
4
+ * Provides consistent JSON envelope format for all CLI commands when --json flag is used.
5
+ * This enables scripting, CI/CD integration, and machine-readable output.
6
+ */
7
+ /**
8
+ * Success envelope for JSON output.
9
+ */
10
+ export interface JsonSuccess<T> {
11
+ success: true;
12
+ data: T;
13
+ }
14
+ /**
15
+ * Error envelope for JSON output.
16
+ */
17
+ export interface JsonError {
18
+ success: false;
19
+ error: string;
20
+ code?: string;
21
+ suggestions?: string[];
22
+ }
23
+ /**
24
+ * Union type for all JSON responses.
25
+ */
26
+ export type JsonEnvelope<T> = JsonSuccess<T> | JsonError;
27
+ /**
28
+ * Wrap data in success envelope.
29
+ *
30
+ * @param data - The data to wrap
31
+ * @returns Success envelope with data
32
+ */
33
+ export declare function wrapSuccess<T>(data: T): JsonSuccess<T>;
34
+ /**
35
+ * Wrap error in error envelope.
36
+ *
37
+ * @param message - Error message
38
+ * @param options - Optional code and suggestions
39
+ * @returns Error envelope
40
+ */
41
+ export declare function wrapError(message: string, options?: {
42
+ code?: string;
43
+ suggestions?: string[];
44
+ }): JsonError;
45
+ /**
46
+ * Output JSON to stdout and exit.
47
+ * Bypasses Ink rendering entirely for clean JSON output.
48
+ *
49
+ * @param envelope - JSON envelope to output
50
+ * @param exitCode - Exit code (default: 0 for success, 1 for error)
51
+ */
52
+ export declare function outputJson<T>(envelope: JsonEnvelope<T>, exitCode?: number): never;
53
+ /**
54
+ * Check if JSON output mode is requested.
55
+ * Useful for early bailout in command handlers.
56
+ *
57
+ * @param options - Command options
58
+ * @returns True if --json flag is set
59
+ */
60
+ export declare function isJsonMode(options: {
61
+ json?: boolean;
62
+ }): boolean;
63
+ /**
64
+ * Handle JSON output for a command.
65
+ * Executes the data getter and outputs JSON, catching errors.
66
+ *
67
+ * @param getData - Function that returns data or throws
68
+ * @param errorCode - Optional error code for failures
69
+ */
70
+ export declare function handleJsonOutput<T>(getData: () => T, errorCode?: string): never;
71
+ //# sourceMappingURL=json-output.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-output.d.ts","sourceRoot":"","sources":["../../src/cli/json-output.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,OAAO,EAAE,IAAI,CAAC;IACd,IAAI,EAAE,CAAC,CAAC;CACT;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,KAAK,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;AAEzD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAKtD;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CACvB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GAClD,SAAS,CAeX;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,KAAK,CAQjF;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAE/D;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,KAAK,CAa/E"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * JSON output utilities for CLI commands.
3
+ *
4
+ * Provides consistent JSON envelope format for all CLI commands when --json flag is used.
5
+ * This enables scripting, CI/CD integration, and machine-readable output.
6
+ */
7
+ /**
8
+ * Wrap data in success envelope.
9
+ *
10
+ * @param data - The data to wrap
11
+ * @returns Success envelope with data
12
+ */
13
+ export function wrapSuccess(data) {
14
+ return {
15
+ success: true,
16
+ data,
17
+ };
18
+ }
19
+ /**
20
+ * Wrap error in error envelope.
21
+ *
22
+ * @param message - Error message
23
+ * @param options - Optional code and suggestions
24
+ * @returns Error envelope
25
+ */
26
+ export function wrapError(message, options) {
27
+ const envelope = {
28
+ success: false,
29
+ error: message,
30
+ };
31
+ if (options?.code) {
32
+ envelope.code = options.code;
33
+ }
34
+ if (options?.suggestions && options.suggestions.length > 0) {
35
+ envelope.suggestions = options.suggestions;
36
+ }
37
+ return envelope;
38
+ }
39
+ /**
40
+ * Output JSON to stdout and exit.
41
+ * Bypasses Ink rendering entirely for clean JSON output.
42
+ *
43
+ * @param envelope - JSON envelope to output
44
+ * @param exitCode - Exit code (default: 0 for success, 1 for error)
45
+ */
46
+ export function outputJson(envelope, exitCode) {
47
+ const code = exitCode ?? (envelope.success ? 0 : 1);
48
+ // Write JSON to stdout
49
+ console.log(JSON.stringify(envelope, null, 2));
50
+ // Exit with appropriate code
51
+ process.exit(code);
52
+ }
53
+ /**
54
+ * Check if JSON output mode is requested.
55
+ * Useful for early bailout in command handlers.
56
+ *
57
+ * @param options - Command options
58
+ * @returns True if --json flag is set
59
+ */
60
+ export function isJsonMode(options) {
61
+ return options.json === true;
62
+ }
63
+ /**
64
+ * Handle JSON output for a command.
65
+ * Executes the data getter and outputs JSON, catching errors.
66
+ *
67
+ * @param getData - Function that returns data or throws
68
+ * @param errorCode - Optional error code for failures
69
+ */
70
+ export function handleJsonOutput(getData, errorCode) {
71
+ try {
72
+ const data = getData();
73
+ outputJson(wrapSuccess(data));
74
+ }
75
+ catch (error) {
76
+ const message = error instanceof Error ? error.message : String(error);
77
+ const suggestions = error instanceof Error && 'suggestions' in error
78
+ ? error.suggestions
79
+ : undefined;
80
+ outputJson(wrapError(message, { code: errorCode, suggestions }), 1);
81
+ }
82
+ }
83
+ //# sourceMappingURL=json-output.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-output.js","sourceRoot":"","sources":["../../src/cli/json-output.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAyBH;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAI,IAAO;IACpC,OAAO;QACL,OAAO,EAAE,IAAI;QACb,IAAI;KACL,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,SAAS,CACvB,OAAe,EACf,OAAmD;IAEnD,MAAM,QAAQ,GAAc;QAC1B,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,OAAO;KACf,CAAC;IAEF,IAAI,OAAO,EAAE,IAAI,EAAE,CAAC;QAClB,QAAQ,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC/B,CAAC;IAED,IAAI,OAAO,EAAE,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3D,QAAQ,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAC7C,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CAAI,QAAyB,EAAE,QAAiB;IACxE,MAAM,IAAI,GAAG,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEpD,uBAAuB;IACvB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAE/C,6BAA6B;IAC7B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CAAC,OAA2B;IACpD,OAAO,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC;AAC/B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAI,OAAgB,EAAE,SAAkB;IACtE,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;QACvB,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IAChC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,WAAW,GACf,KAAK,YAAY,KAAK,IAAI,aAAa,IAAI,KAAK;YAC9C,CAAC,CAAE,KAA4C,CAAC,WAAW;YAC3D,CAAC,CAAC,SAAS,CAAC;QAEhB,UAAU,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACtE,CAAC;AACH,CAAC"}