@sudosandwich/limps 2.6.0 → 2.7.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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Paul Breuler
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,529 @@
1
+ # limps
2
+
3
+ **L**ocal **I**ntelligent **M**CP **P**lanning **S**erver — A document and planning layer for AI assistants. No subscriptions, no cloud. Point limps at **any folder** (local, synced, or in git). One shared source of truth across Claude, Cursor, Codex, and any MCP-compatible tool.
4
+
5
+ [![npm](https://img.shields.io/npm/v/@sudosandwich/limps)](https://www.npmjs.com/package/@sudosandwich/limps)
6
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
7
+ ![Tests](https://img.shields.io/badge/Tests-899%20passing-brightgreen)
8
+ ![Coverage](https://img.shields.io/badge/Coverage-%3E70%25-brightgreen)
9
+
10
+ ![limps in action](https://github.com/paulbreuler/limps/blob/main/.github/assets/limps-a-lol-longer.gif?raw=true)
11
+
12
+ ## Quick Start
13
+
14
+ ```bash
15
+ # Install globally
16
+ npm install -g @sudosandwich/limps
17
+
18
+ # Initialize a project
19
+ limps init my-project --docs-path ~/Documents/my-planning-docs
20
+
21
+ # Add to your AI assistant (picks up all registered projects)
22
+ limps config sync-mcp --client cursor
23
+ limps config sync-mcp --client claude-code
24
+ ```
25
+
26
+ Run this in the folder where you want to keep the docs and that's it. Your AI assistant now has access to your documents and nothing else. The folder can be anywhere—local, synced, or in a repo; limps does not require a git repository or a `plans/` directory.
27
+
28
+ ### What to know before you start
29
+
30
+ - **Local only** — Your data stays on disk (SQLite index + your files). No cloud, no subscription.
31
+ - **Restart after changes** — If you change the indexed folder or config, restart the MCP server (or rely on the file watcher) so the index and tools reflect the current state.
32
+ - **Sandboxed user code** — `process_doc` and `process_docs` run your JavaScript in a QuickJS sandbox with time and memory limits; no network or Node APIs.
33
+ - **One optional network call** — `limps version --check` fetches from the npm registry to compare versions. All other commands (serve, init, list, search, create/update/delete docs, process_doc, etc.) do **not** contact the internet. Omit `version --check` if you want zero external calls.
34
+
35
+ ## How I Use limps
36
+
37
+ I use `limps` as a local planning layer across multiple AI tools, focused on **create → read → update → closure** for plans and tasks. The MCP server points at whatever directory I want (not necessarily a git repo), so any client reads and updates the same source of truth.
38
+
39
+ Typical flow:
40
+
41
+ 1. Point limps at a docs directory (any folder, local or synced).
42
+ 2. Use CLI + MCP tools to create plans/docs, read the current status, update tasks, and close work when done.
43
+ 3. Sync MCP configs so Cursor/Claude/Codex all see the same plans.
44
+
45
+ Commands and tools I use most often:
46
+
47
+ - **Create**: `limps init`, `create_plan`, `create_doc`
48
+ - **Read**: `list_plans`, `list_agents`, `list_docs`, `search_docs`, `get_plan_status`
49
+ - **Update**: `update_doc`, `update_task_status`, `manage_tags`
50
+ - **Close**: `update_task_status` (e.g., `PASS`), `delete_doc` if needed
51
+
52
+ Full lists are below in "CLI Commands" and "MCP Tools."
53
+
54
+ ## How You Can Use It
55
+
56
+ `limps` is designed to be generic and portable. Point it at **any folder** with Markdown files and use it from any MCP-compatible client. **No git repo required.** **Not limited to planning**—planning (plans, agents, task status) is one use case; the same layer gives you document CRUD, full-text search, and programmable processing on any indexed folder.
57
+
58
+ Common setups:
59
+
60
+ - **Single project**: One docs folder for a product.
61
+ - **Multi-project**: Register multiple folders and switch with `limps config use`.
62
+ - **Shared team folder**: Put plans in a shared location and review changes like code.
63
+ - **Local-first**: Keep everything on disk, no hosted service required.
64
+
65
+ Key ideas:
66
+
67
+ - **Any folder** — You choose the path; if there’s no `plans/` subdir, the whole directory is indexed. Use generic tools (`list_docs`, `search_docs`, `create_doc`, `update_doc`, `delete_doc`, `process_doc`, `process_docs`) or plan-specific ones (`create_plan`, `list_plans`, `list_agents`, `get_plan_status`, `update_task_status`, `get_next_task`).
68
+ - **One source of truth** — MCP tools give structured access; multiple clients share the same docs.
69
+
70
+ ## Why limps?
71
+
72
+ **The problem:** Each AI assistant maintains its own context. Planning documents, task status, and decisions get fragmented across Claude, Cursor, ChatGPT, and Copilot conversations.
73
+
74
+ **The solution:** limps provides a standardized MCP interface that any tool can access. Your docs live in one place—a folder you choose. Use git (or any sync) if you want version control; limps is not tied to a repository.
75
+
76
+ ### Supported Clients
77
+
78
+ | Client | Config Location | Command |
79
+ |--------|----------------|---------|
80
+ | **Cursor** | `.cursor/mcp.json` (local) | `limps config sync-mcp --client cursor` |
81
+ | **Claude Code** | `.mcp.json` (local) | `limps config sync-mcp --client claude-code` |
82
+ | **Claude Desktop** | Global config | `limps config sync-mcp --client claude --global` |
83
+ | **OpenAI Codex** | `~/.codex/config.toml` | `limps config sync-mcp --client codex --global` |
84
+ | **ChatGPT** | Manual setup | `limps config sync-mcp --client chatgpt --print` |
85
+
86
+ > **Note:** By default, `sync-mcp` writes to local/project configs. Use `--global` for user-level configs.
87
+
88
+ ## Installation
89
+
90
+ ```bash
91
+ npm install -g @sudosandwich/limps
92
+ ```
93
+
94
+ ## Project Setup
95
+
96
+ ### Initialize a New Project
97
+
98
+ ```bash
99
+ limps init my-project --docs-path ~/Documents/my-planning-docs
100
+ ```
101
+
102
+ This creates a config file and outputs setup instructions.
103
+
104
+ ### Register an Existing Directory
105
+
106
+ ```bash
107
+ limps config add my-project ~/Documents/existing-docs
108
+ ```
109
+
110
+ If the directory contains a `plans/` subdirectory, limps uses it. Otherwise, it indexes the entire directory.
111
+
112
+ ### Multiple Projects
113
+
114
+ ```bash
115
+ # Register multiple projects
116
+ limps init project-a --docs-path ~/docs/project-a
117
+ limps init project-b --docs-path ~/docs/project-b
118
+
119
+ # Switch between them
120
+ limps config use project-a
121
+
122
+ # Or use environment variable
123
+ LIMPS_PROJECT=project-b limps list-plans
124
+ ```
125
+
126
+ ## Client Setup
127
+
128
+ ### Automatic (Recommended)
129
+
130
+ ```bash
131
+ # Add all projects to a client's local config
132
+ limps config sync-mcp --client cursor
133
+
134
+ # Preview changes without writing
135
+ limps config sync-mcp --client cursor --print
136
+
137
+ # Write to global config instead of local
138
+ limps config sync-mcp --client cursor --global
139
+
140
+ # Custom config path
141
+ limps config sync-mcp --client cursor --path ./custom-mcp.json
142
+ ```
143
+
144
+ ### Manual Setup
145
+
146
+ <details>
147
+ <summary><b>Cursor</b></summary>
148
+
149
+ Add to `.cursor/mcp.json` in your project:
150
+
151
+ ```json
152
+ {
153
+ "mcpServers": {
154
+ "limps": {
155
+ "command": "limps",
156
+ "args": ["serve", "--config", "/path/to/config.json"]
157
+ }
158
+ }
159
+ }
160
+ ```
161
+
162
+ </details>
163
+
164
+ <details>
165
+ <summary><b>Claude Code</b></summary>
166
+
167
+ Add to `.mcp.json` in your project root:
168
+
169
+ ```json
170
+ {
171
+ "mcpServers": {
172
+ "limps": {
173
+ "command": "limps",
174
+ "args": ["serve", "--config", "/path/to/config.json"]
175
+ }
176
+ }
177
+ }
178
+ ```
179
+
180
+ </details>
181
+
182
+ <details>
183
+ <summary><b>Claude Desktop</b></summary>
184
+
185
+ Claude Desktop runs in a sandbox—use `npx` instead of global binaries.
186
+
187
+ Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:
188
+
189
+ ```json
190
+ {
191
+ "mcpServers": {
192
+ "limps": {
193
+ "command": "npx",
194
+ "args": ["-y", "@sudosandwich/limps", "serve", "--config", "/path/to/config.json"]
195
+ }
196
+ }
197
+ }
198
+ ```
199
+
200
+ </details>
201
+
202
+ <details>
203
+ <summary><b>OpenAI Codex</b></summary>
204
+
205
+ Add to `~/.codex/config.toml`:
206
+
207
+ ```toml
208
+ [mcp_servers.limps]
209
+ command = "limps"
210
+ args = ["serve", "--config", "/path/to/config.json"]
211
+ ```
212
+
213
+ </details>
214
+
215
+ <details>
216
+ <summary><b>ChatGPT</b></summary>
217
+
218
+ ChatGPT requires a remote MCP server over HTTPS. Deploy limps behind an MCP-compatible HTTP/SSE proxy.
219
+
220
+ In ChatGPT → Settings → Connectors → Add custom connector:
221
+
222
+ - **Server URL**: `https://your-domain.example/mcp`
223
+ - **Authentication**: Configure as needed
224
+
225
+ Print setup instructions:
226
+
227
+ ```bash
228
+ limps config sync-mcp --client chatgpt --print
229
+ ```
230
+
231
+ </details>
232
+
233
+ ## CLI Commands
234
+
235
+ ### Viewing Plans
236
+
237
+ ```bash
238
+ limps list-plans # List all plans with status
239
+ limps list-agents <plan> # List agents in a plan
240
+ limps status <plan> # Show plan progress summary
241
+ limps next-task <plan> # Get highest-priority available task
242
+ ```
243
+
244
+ ### Project Management
245
+
246
+ ```bash
247
+ limps init <name> # Initialize new project
248
+ limps serve # Start MCP server
249
+ limps config list # Show registered projects
250
+ limps config use <name> # Switch active project
251
+ limps config show # Display current config
252
+ limps config sync-mcp # Add projects to MCP clients
253
+ ```
254
+
255
+ ## Configuration
256
+
257
+ Config location varies by OS:
258
+
259
+ | OS | Path |
260
+ |----|------|
261
+ | macOS | `~/Library/Application Support/limps/config.json` |
262
+ | Linux | `~/.config/limps/config.json` |
263
+ | Windows | `%APPDATA%\limps\config.json` |
264
+
265
+ ### Config Options
266
+
267
+ ```json
268
+ {
269
+ "plansPath": "~/Documents/my-plans",
270
+ "docsPaths": ["~/Documents/my-plans"],
271
+ "fileExtensions": [".md"],
272
+ "dataPath": "~/Library/Application Support/limps/data",
273
+ "extensions": ["@sudosandwich/limps-headless"],
274
+ "scoring": {
275
+ "weights": { "dependency": 40, "priority": 30, "workload": 30 },
276
+ "biases": {}
277
+ }
278
+ }
279
+ ```
280
+
281
+ | Option | Description |
282
+ |--------|-------------|
283
+ | `plansPath` | Directory for structured plans (`NNNN-name/` with agents) |
284
+ | `docsPaths` | Additional directories to index |
285
+ | `fileExtensions` | File types to index (default: `.md`) |
286
+ | `dataPath` | SQLite database location |
287
+ | `extensions` | Extension packages to load |
288
+ | `scoring` | Task prioritization weights and biases |
289
+
290
+ ## MCP Tools
291
+
292
+ limps exposes 15 MCP tools for AI assistants:
293
+
294
+ | Category | Tools |
295
+ |----------|-------|
296
+ | **Documents** | `process_doc`, `process_docs`, `create_doc`, `update_doc`, `delete_doc`, `list_docs`, `search_docs`, `manage_tags`, `open_document_in_cursor` |
297
+ | **Plans** | `create_plan`, `list_plans`, `list_agents`, `get_plan_status` |
298
+ | **Tasks** | `get_next_task`, `update_task_status` |
299
+
300
+ ## Extensions
301
+
302
+ Extensions add MCP tools and resources. Install from npm:
303
+
304
+ ```bash
305
+ npm install -g @sudosandwich/limps-headless
306
+ ```
307
+
308
+ Add to config:
309
+
310
+ ```json
311
+ {
312
+ "extensions": ["@sudosandwich/limps-headless"],
313
+ "limps-headless": {
314
+ "cacheDir": "~/Library/Application Support/limps-headless"
315
+ }
316
+ }
317
+ ```
318
+
319
+ **Available extensions:**
320
+
321
+ - `@sudosandwich/limps-headless` — Headless UI contract extraction, semantic analysis, and drift detection (Radix UI and Base UI migration).
322
+
323
+ ## Obsidian Compatibility
324
+
325
+ limps works with Obsidian vaults. Open your `plans/` directory as a vault for visual editing:
326
+
327
+ - Full YAML frontmatter support
328
+ - Tag management (frontmatter and inline `#tag`)
329
+ - Automatic exclusion of `.obsidian/`, `.git/`, `node_modules/`
330
+
331
+ ![Obsidian vault with limps plans](https://github.com/paulbreuler/limps/blob/main/.github/assets/obsidian-vault.png?raw=true)
332
+
333
+ ## Development
334
+
335
+ ```bash
336
+ git clone https://github.com/paulbreuler/limps.git
337
+ cd limps
338
+ npm install
339
+ npm run build
340
+ npm test
341
+ ```
342
+
343
+ This is a monorepo with:
344
+
345
+ - `packages/limps` — Core MCP server
346
+ - `packages/limps-headless` — Headless UI extension (Radix/Base UI contract extraction and audit)
347
+
348
+ ## Used in Production
349
+
350
+ limps manages planning for [runi](https://github.com/paulbreuler/runi), using a separate folder (in this case a git repo) for plans.
351
+
352
+ ---
353
+
354
+ ## Creating a feature plan
355
+
356
+ This flow is used by the **create-feature-plan** command you can find in [claude/commands](/.claude/commands/) along with other useful commands and skills. These can be followed manually with MCP tools. The docs path is whatever folder limps is pointed at (any directory, not necessarily a repo).
357
+
358
+ 1. **Gather context** — Project name and scope, work type (`refactor` | `overhaul` | `features`), tech stack, prototype/reference docs, known gotchas.
359
+ 2. **Create planning docs** — Use MCP:
360
+ - `list_docs` on `plans/` to get the next plan number (max existing + 1).
361
+ - `create_plan` with name `NNNN-descriptive-name` and a short description.
362
+ - `create_doc` for: `{plan-name}-plan.md` (full specs), `interfaces.md`, `README.md`, `gotchas.md` (template). Use template `none` for plan/interfaces/README, `addendum` for gotchas if available.
363
+ 3. **Assign features to agents** — Group by file ownership and dependencies; 2–4 features per agent; minimize cross-agent conflicts.
364
+ 4. **Distill agent files** — For each agent, `create_doc` at `plans/NNNN-name/agents/NNN_agent_descriptive-name.agent.md` (template `none`). Extract from the plan: feature IDs + TL;DRs, interface contracts, files to create/modify, test IDs, TDD one-liners, brief gotchas. Target ~200–400 lines per agent.
365
+ 5. **Validate** — Agent files self-contained; interfaces consistent; dependency graph and file ownership correct; each agent file <500 lines.
366
+
367
+ Resulting layout:
368
+
369
+ ```
370
+ NNNN-descriptive-name/
371
+ ├── README.md
372
+ ├── {plan-name}-plan.md
373
+ ├── interfaces.md
374
+ ├── gotchas.md
375
+ └── agents/
376
+ ├── 000_agent_infrastructure.agent.md
377
+ ├── 001_agent_....agent.md
378
+ └── ...
379
+ ```
380
+
381
+ ### Why the prefixes?
382
+
383
+ I chose this to keep things lexicographically ordered and easier to reference in chat. "Show me the next agent or agents we can run now in plan NNNN-plan-name", and the MCP will run the tool to process the agents applying weights and biases to choose the next best task or tasks that can run in parallel.
384
+
385
+ ## Deep Dive
386
+
387
+ <details>
388
+ <summary><b>Plan Structure</b></summary>
389
+
390
+ ```
391
+ plans/
392
+ ├── 0001-feature-name/
393
+ │ ├── 0001-feature-name-plan.md # Main plan with specs
394
+ │ ├── interfaces.md # Interface contracts
395
+ │ ├── README.md # Status index
396
+ │ └── agents/ # Task files
397
+ │ ├── 000-setup.md
398
+ │ ├── 001-implement.md
399
+ │ └── 002-test.md
400
+ └── 0002-another-feature/
401
+ └── ...
402
+ ```
403
+
404
+ Agent files use frontmatter to track status:
405
+
406
+ ```yaml
407
+ ---
408
+ status: GAP | WIP | PASS | BLOCKED
409
+ persona: coder | reviewer | pm | customer
410
+ depends_on: ["000-setup"]
411
+ files:
412
+ - src/components/Feature.tsx
413
+ ---
414
+ ```
415
+
416
+ </details>
417
+
418
+ <details>
419
+ <summary><b>Task Scoring Algorithm</b></summary>
420
+
421
+ `get_next_task` returns tasks scored by:
422
+
423
+ | Component | Max Points | Description |
424
+ |-----------|------------|-------------|
425
+ | Dependency | 40 | All dependencies satisfied = 40, else 0 |
426
+ | Priority | 30 | Based on agent number (lower = higher priority) |
427
+ | Workload | 30 | Based on file count (fewer = higher score) |
428
+
429
+ **Biases** adjust final scores:
430
+
431
+ ```json
432
+ {
433
+ "scoring": {
434
+ "biases": {
435
+ "plans": { "0030-urgent-feature": 20 },
436
+ "personas": { "coder": 5, "reviewer": -10 },
437
+ "statuses": { "GAP": 5, "WIP": -5 }
438
+ }
439
+ }
440
+ }
441
+ ```
442
+
443
+ </details>
444
+
445
+ <details>
446
+ <summary><b>RLM (Recursive Language Model) Support</b></summary>
447
+
448
+ `process_doc` and `process_docs` execute JavaScript in a secure QuickJS sandbox. User-provided code is statically validated and cannot use `require`, `import`, `eval`, `fetch`, `XMLHttpRequest`, `WebSocket`, `process`, timers, or other host/network APIs—so it cannot make external calls or access the host.
449
+
450
+ ```typescript
451
+ await process_doc({
452
+ path: 'plans/0001-feature/plan.md',
453
+ code: `
454
+ const features = extractFeatures(doc.content);
455
+ return features.filter(f => f.status === 'GAP');
456
+ `
457
+ });
458
+ ```
459
+
460
+ **Available extractors:**
461
+
462
+ - `extractSections()` — Markdown headings
463
+ - `extractFrontmatter()` — YAML frontmatter
464
+ - `extractFeatures()` — Plan features with status
465
+ - `extractAgents()` — Agent metadata
466
+ - `extractCodeBlocks()` — Fenced code blocks
467
+
468
+ **LLM sub-queries** (opt-in):
469
+
470
+ ```typescript
471
+ await process_doc({
472
+ path: 'plans/0001/plan.md',
473
+ code: 'extractFeatures(doc.content)',
474
+ sub_query: 'Summarize each feature',
475
+ allow_llm: true,
476
+ llm_policy: 'force' // or 'auto' (skips small results)
477
+ });
478
+ ```
479
+
480
+ </details>
481
+
482
+ <details>
483
+ <summary><b>MCP Resources</b></summary>
484
+
485
+ Progressive disclosure via resources:
486
+
487
+ | Resource | Description |
488
+ |----------|-------------|
489
+ | `plans://index` | List of all plans (minimal) |
490
+ | `plans://summary` | Plan summaries with key info |
491
+ | `plans://full` | Full plan documents |
492
+ | `decisions://log` | Decision log entries |
493
+ | `agents://status` | Agent status and tasks |
494
+
495
+ </details>
496
+
497
+ <details>
498
+ <summary><b>Example: Custom Cursor Commands</b></summary>
499
+
500
+ Create `.cursor/commands/run-agent.md`:
501
+
502
+ ```markdown
503
+ # Run Agent
504
+
505
+ Start work on the next available task.
506
+
507
+ ## Instructions
508
+
509
+ 1. Use `get_next_task` to find the highest-priority task
510
+ 2. Use `process_doc` to read the agent file
511
+ 3. Use `update_task_status` to mark it WIP
512
+ 4. Follow the agent's instructions
513
+ ```
514
+
515
+ This integrates with limps MCP tools for seamless task management.
516
+ </details>
517
+
518
+ ---
519
+
520
+ ## What is MCP?
521
+
522
+ **Model Context Protocol** is a standardized protocol for AI applications to connect to external systems. Originally from Anthropic (Nov 2024), now part of the Linux Foundation's Agentic AI Foundation.
523
+
524
+ - [MCP Specification](https://modelcontextprotocol.io/)
525
+ - [MCP Documentation](https://modelcontextprotocol.io/docs)
526
+
527
+ ## License
528
+
529
+ MIT
@@ -2,8 +2,9 @@ import type { ExtensionContext } from './types.js';
2
2
  import type { ServerConfig } from '../config.js';
3
3
  /**
4
4
  * Create extension context for an extension.
5
+ * Extension-specific config is read from config[extensionName] (e.g. config['limps-headless']).
5
6
  *
6
- * @param extensionName - Name of the extension (e.g., 'limps-radix')
7
+ * @param extensionName - Name of the extension (e.g., 'limps-headless')
7
8
  * @param config - Server configuration
8
9
  * @returns Extension context with dataDir, config, and logger
9
10
  */
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/extensions/context.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAU,MAAM,YAAY,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AA0BjD;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,YAAY,GACnB,gBAAgB,CA6BlB"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/extensions/context.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAU,MAAM,YAAY,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AA0BjD;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,YAAY,GACnB,gBAAgB,CA6BlB"}
@@ -23,8 +23,9 @@ class ConsoleLogger {
23
23
  }
24
24
  /**
25
25
  * Create extension context for an extension.
26
+ * Extension-specific config is read from config[extensionName] (e.g. config['limps-headless']).
26
27
  *
27
- * @param extensionName - Name of the extension (e.g., 'limps-radix')
28
+ * @param extensionName - Name of the extension (e.g., 'limps-headless')
28
29
  * @param config - Server configuration
29
30
  * @returns Extension context with dataDir, config, and logger
30
31
  */
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/extensions/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAI7B;;GAEG;AACH,MAAM,aAAa;IACjB,KAAK,CAAC,OAAe,EAAE,GAAG,IAAe;QACvC,OAAO,CAAC,KAAK,CAAC,eAAe,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,GAAG,IAAe;QACtC,OAAO,CAAC,KAAK,CAAC,qBAAqB,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;IACzD,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,GAAG,IAAe;QACtC,OAAO,CAAC,KAAK,CAAC,eAAe,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,GAAG,IAAe;QACvC,gCAAgC;QAChC,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE,CAAC;YAC1C,OAAO,CAAC,KAAK,CAAC,sBAAsB,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;CACF;AAED;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CACpC,aAAqB,EACrB,MAAoB;IAEpB,6BAA6B;IAC7B,MAAM,WAAW,GAAG,CAAC,IAAY,EAAU,EAAE;QAC3C,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YAC1C,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QACvC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,wDAAwD;IACxD,MAAM,WAAW,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;IAC5C,MAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC;IAExE,0BAA0B;IAC1B,SAAS,CAAC,gBAAgB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEjD,uDAAuD;IACvD,gDAAgD;IAChD,MAAM,eAAe,GAAI,MAA6C,CAAC,aAAa,CAEvE,CAAC;IAEd,MAAM,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;IAEnC,OAAO;QACL,OAAO,EAAE,gBAAgB;QACzB,MAAM,EAAE,eAAe,IAAI,EAAE;QAC7B,MAAM;KACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/extensions/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAI7B;;GAEG;AACH,MAAM,aAAa;IACjB,KAAK,CAAC,OAAe,EAAE,GAAG,IAAe;QACvC,OAAO,CAAC,KAAK,CAAC,eAAe,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,GAAG,IAAe;QACtC,OAAO,CAAC,KAAK,CAAC,qBAAqB,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;IACzD,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,GAAG,IAAe;QACtC,OAAO,CAAC,KAAK,CAAC,eAAe,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,GAAG,IAAe;QACvC,gCAAgC;QAChC,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE,CAAC;YAC1C,OAAO,CAAC,KAAK,CAAC,sBAAsB,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;CACF;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,sBAAsB,CACpC,aAAqB,EACrB,MAAoB;IAEpB,6BAA6B;IAC7B,MAAM,WAAW,GAAG,CAAC,IAAY,EAAU,EAAE;QAC3C,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YAC1C,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QACvC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,wDAAwD;IACxD,MAAM,WAAW,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;IAC5C,MAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC;IAExE,0BAA0B;IAC1B,SAAS,CAAC,gBAAgB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEjD,uDAAuD;IACvD,gDAAgD;IAChD,MAAM,eAAe,GAAI,MAA6C,CAAC,aAAa,CAEvE,CAAC;IAEd,MAAM,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;IAEnC,OAAO;QACL,OAAO,EAAE,gBAAgB;QACzB,MAAM,EAAE,eAAe,IAAI,EAAE;QAC7B,MAAM;KACP,CAAC;AACJ,CAAC"}
@@ -81,7 +81,9 @@ export declare function extractFrontmatter(content: string): {
81
81
  export declare function extractCodeBlocks(content: string, lang?: string): CodeBlock[];
82
82
  /**
83
83
  * Extract features from plan documents.
84
- * Parses "### #N: Feature Name" patterns with optional TL;DR and Status.
84
+ * Parses feature headers in two formats for backward compatibility:
85
+ * - New format: "### #N: Feature Name" with "Status: `GAP`"
86
+ * - Legacy format: "## Feature N: Feature Name" with "**Status:** GAP"
85
87
  *
86
88
  * @param content - Plan document content
87
89
  * @returns Array of features
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/rlm/helpers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,CAAC;IAC3C,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAmCvE;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG;IACnD,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;CACd,CAyBA;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,EAAE,CAgD7E;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,EAAE,CAyD1D;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,EAAE,CAkGtD;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,EAAE,CAmCpD;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,KAAK,EAAE,CAyBrE;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,SAAK,GAAG,MAAM,CAyB7D"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/rlm/helpers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,CAAC;IAC3C,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAmCvE;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG;IACnD,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;CACd,CAyBA;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,EAAE,CAgD7E;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,EAAE,CAoE1D;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,EAAE,CAkGtD;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,EAAE,CAmCpD;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,KAAK,EAAE,CAyBrE;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,SAAK,GAAG,MAAM,CAyB7D"}
@@ -130,7 +130,9 @@ export function extractCodeBlocks(content, lang) {
130
130
  }
131
131
  /**
132
132
  * Extract features from plan documents.
133
- * Parses "### #N: Feature Name" patterns with optional TL;DR and Status.
133
+ * Parses feature headers in two formats for backward compatibility:
134
+ * - New format: "### #N: Feature Name" with "Status: `GAP`"
135
+ * - Legacy format: "## Feature N: Feature Name" with "**Status:** GAP"
134
136
  *
135
137
  * @param content - Plan document content
136
138
  * @returns Array of features
@@ -141,8 +143,11 @@ export function extractFeatures(content) {
141
143
  let currentFeature = null;
142
144
  for (const line of lines) {
143
145
  const trimmed = line.trim();
144
- // Match "### #N: Feature Name"
145
- const featureMatch = trimmed.match(/^###\s+#(\d+):\s*(.+)$/);
146
+ // Match "### #N: Feature Name" (new format)
147
+ const newFormatMatch = trimmed.match(/^###\s+#(\d+):\s*(.+)$/);
148
+ // Match "## Feature N: Feature Name" (legacy format)
149
+ const legacyFormatMatch = trimmed.match(/^##\s+Feature\s+(\d+):\s*(.+)$/);
150
+ const featureMatch = newFormatMatch || legacyFormatMatch;
146
151
  if (featureMatch) {
147
152
  // Save previous feature if exists
148
153
  if (currentFeature && currentFeature.id && currentFeature.name) {
@@ -165,13 +170,18 @@ export function extractFeatures(content) {
165
170
  currentFeature.description = trimmed.slice(6).trim();
166
171
  continue;
167
172
  }
168
- // Match "Status: `GAP`" or "Status: `WIP`" etc.
169
- if (currentFeature && /^Status:\s*`([^`]+)`/.test(trimmed)) {
170
- const statusMatch = trimmed.match(/^Status:\s*`([^`]+)`/);
173
+ // Match "Status: `GAP`" (new format) or "**Status:** GAP" (legacy format)
174
+ if (currentFeature) {
175
+ // Try new format first - use \w+ to match valid status values (GAP, WIP, PASS, BLOCKED)
176
+ let statusMatch = trimmed.match(/^Status:\s*`(\w+)`/);
177
+ // Try legacy format if new format didn't match
178
+ if (!statusMatch) {
179
+ statusMatch = trimmed.match(/^\*\*Status:\*\*\s+(\w+)/);
180
+ }
171
181
  if (statusMatch) {
172
182
  currentFeature.status = statusMatch[1];
183
+ continue;
173
184
  }
174
- continue;
175
185
  }
176
186
  }
177
187
  // Don't forget the last feature
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/rlm/helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/rlm/helpers.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"create-plan.d.ts","sourceRoot":"","sources":["../../src/tools/create-plan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAaxB,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAM3D;;GAEG;AACH,eAAO,MAAM,qBAAqB;;;iBAGhC,CAAC;AAiHH;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,EAC5C,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC,CAiErB"}
1
+ {"version":3,"file":"create-plan.d.ts","sourceRoot":"","sources":["../../src/tools/create-plan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAaxB,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAM3D;;GAEG;AACH,eAAO,MAAM,qBAAqB;;;iBAGhC,CAAC;AA4HH;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,EAC5C,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC,CAkErB"}
@@ -47,6 +47,13 @@ function findNextPlanNumber(plansPath) {
47
47
  const maxNum = Math.max(...planNumbers);
48
48
  return maxNum + 1;
49
49
  }
50
+ /**
51
+ * True if name already has a numeric prefix (e.g. 0042-foo or 1-foo).
52
+ * Callers use name as-is for directory name when this is true to avoid double prefix.
53
+ */
54
+ function hasNumberPrefix(name) {
55
+ return /^\d+-.+/.test(name);
56
+ }
50
57
  /**
51
58
  * Check if a plan with the given name already exists.
52
59
  */
@@ -57,11 +64,14 @@ function planExists(plansPath, name) {
57
64
  const dirs = readdirSync(plansPath, { withFileTypes: true })
58
65
  .filter((dirent) => dirent.isDirectory())
59
66
  .map((dirent) => dirent.name);
60
- // Check if any directory contains the name (case-insensitive)
61
67
  const normalizedName = name.toLowerCase();
68
+ // Exact directory name match (e.g. name "0042-limps-headless-pivot" matches dir "0042-limps-headless-pivot")
69
+ if (dirs.some((dir) => dir.toLowerCase() === normalizedName)) {
70
+ return true;
71
+ }
72
+ // Match by name part after number prefix (e.g. name "my-plan" matches dir "0001-my-plan")
62
73
  return dirs.some((dir) => {
63
74
  const dirName = dir.toLowerCase();
64
- // Extract name part after number prefix
65
75
  const nameMatch = dirName.match(/^\d+-(.+)$/);
66
76
  if (nameMatch) {
67
77
  return nameMatch[1] === normalizedName;
@@ -133,10 +143,11 @@ export async function handleCreatePlan(input, context) {
133
143
  isError: true,
134
144
  };
135
145
  }
136
- // Find next plan number
137
- const planNumber = findNextPlanNumber(plansPath);
138
- const paddedNumber = planNumber.toString().padStart(4, '0');
139
- const planDirName = `${paddedNumber}-${name}`;
146
+ // Use name as-is when it already has a number prefix (e.g. 0042-limps-headless-pivot) to avoid double prefix
147
+ const planDirName = hasNumberPrefix(name)
148
+ ? name
149
+ : `${findNextPlanNumber(plansPath).toString().padStart(4, '0')}-${name}`;
150
+ const planNumber = extractPlanNumber(planDirName) ?? findNextPlanNumber(plansPath);
140
151
  const planDir = join(plansPath, planDirName);
141
152
  try {
142
153
  // Create plan directory atomically (create temp, then rename)
@@ -144,7 +155,7 @@ export async function handleCreatePlan(input, context) {
144
155
  mkdirSync(tempDir, { recursive: true });
145
156
  // Create plan file with descriptive name (e.g., 0004-integration-tests-plan.md)
146
157
  const planFileName = `${planDirName}-plan.md`;
147
- const planContent = loadTemplate(planNumber, name, description);
158
+ const planContent = loadTemplate(planNumber, planDirName, description);
148
159
  const tempPlanFilePath = join(tempDir, planFileName);
149
160
  writeFileSync(tempPlanFilePath, planContent, 'utf-8');
150
161
  // Atomic rename
@@ -156,7 +167,7 @@ export async function handleCreatePlan(input, context) {
156
167
  content: [
157
168
  {
158
169
  type: 'text',
159
- text: `Plan "${name}" created successfully at ${planDir}`,
170
+ text: `Plan "${planDirName}" created successfully at ${planDir}`,
160
171
  },
161
172
  ],
162
173
  };
@@ -1 +1 @@
1
- {"version":3,"file":"create-plan.js","sourceRoot":"","sources":["../../src/tools/create-plan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-plan.js","sourceRoot":"","sources":["../../src/tools/create-plan.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"update-task-status.d.ts","sourceRoot":"","sources":["../../src/tools/update-task-status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE3D;;GAEG;AACH,eAAO,MAAM,2BAA2B;;;;;;;;;;iBAKtC,CAAC;AAmIH;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,EAClD,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC,CAmGrB"}
1
+ {"version":3,"file":"update-task-status.d.ts","sourceRoot":"","sources":["../../src/tools/update-task-status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE3D;;GAEG;AACH,eAAO,MAAM,2BAA2B;;;;;;;;;;iBAKtC,CAAC;AA4KH;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,EAClD,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC,CAmGrB"}
@@ -29,52 +29,82 @@ function isValidTransition(from, to) {
29
29
  /**
30
30
  * Find task in document by feature number.
31
31
  * Returns the content section for the task.
32
+ * Supports both new format (### #N:) and legacy format (## Feature N:).
32
33
  */
33
34
  function findTaskSection(content, featureNumber) {
34
- const featureRegex = new RegExp(`^###\\s+#${featureNumber}:`, 'm');
35
- const match = content.match(featureRegex);
35
+ // Try new format first: "### #N:"
36
+ let featureRegex = new RegExp(`^###\\s+#${featureNumber}:`, 'm');
37
+ let match = content.match(featureRegex);
38
+ let nextFeaturePattern = '### #';
39
+ // Try legacy format if new format not found: "## Feature N:"
40
+ if (!match || match.index === undefined) {
41
+ featureRegex = new RegExp(`^##\\s+Feature\\s+${featureNumber}:`, 'm');
42
+ match = content.match(featureRegex);
43
+ nextFeaturePattern = '## Feature ';
44
+ }
36
45
  if (!match || match.index === undefined) {
37
46
  return null;
38
47
  }
39
48
  const start = match.index;
40
- // Find next feature or end of document
41
- const nextFeatureMatch = content.indexOf('### #', start + 1);
49
+ // Find next feature or end of document (using the same pattern as matched)
50
+ const nextFeatureMatch = content.indexOf(nextFeaturePattern, start + 1);
42
51
  const end = nextFeatureMatch > 0 ? nextFeatureMatch : content.length;
43
52
  const section = content.substring(start, end);
44
53
  return { start, end, section };
45
54
  }
46
55
  /**
47
56
  * Extract current status from a task section.
57
+ * Supports both new format (Status: `GAP`) and legacy format (**Status:** GAP).
48
58
  */
49
59
  function extractStatusFromSection(section) {
50
- const statusRegex = /Status:\s*`?(\w+)`?/i;
51
- const match = section.match(statusRegex);
60
+ // Try new format first: "Status: `GAP`"
61
+ let statusRegex = /Status:\s*`(\w+)`/i;
62
+ let match = section.match(statusRegex);
63
+ // Try legacy format if new format not found: "**Status:** GAP"
64
+ if (!match) {
65
+ statusRegex = /\*\*Status:\*\*\s+(\w+)/i;
66
+ match = section.match(statusRegex);
67
+ }
52
68
  return match ? match[1].toUpperCase() : null;
53
69
  }
54
70
  /**
55
71
  * Update status in task section.
56
72
  * Preserves formatting and other content.
73
+ * Maintains the same format as the original (new or legacy).
57
74
  */
58
75
  function updateStatusInSection(section, newStatus) {
59
- // Match status line: "Status: `GAP`" or "Status: `WIP`" etc.
60
- const statusRegex = /Status:\s*`?(\w+)`?/i;
61
- const match = section.match(statusRegex);
76
+ // Try new format first: "Status: `GAP`"
77
+ let statusRegex = /Status:\s*`(\w+)`/i;
78
+ let match = section.match(statusRegex);
62
79
  if (match) {
63
- // Replace existing status
80
+ // Replace existing status in new format
64
81
  return section.replace(statusRegex, `Status: \`${newStatus}\``);
65
82
  }
66
- else {
67
- // Add status line if not found (shouldn't happen, but handle gracefully)
68
- // Insert after feature title
69
- const titleMatch = section.match(/^###\s+#\d+:\s+(.+)$/m);
70
- if (titleMatch) {
71
- const titleEnd = section.indexOf('\n', titleMatch.index || 0);
72
- return (section.substring(0, titleEnd + 1) +
73
- `\nStatus: \`${newStatus}\`\n` +
74
- section.substring(titleEnd + 1));
75
- }
76
- return section;
83
+ // Try legacy format: "**Status:** GAP"
84
+ statusRegex = /\*\*Status:\*\*\s+(\w+)/i;
85
+ match = section.match(statusRegex);
86
+ if (match) {
87
+ // Replace existing status in legacy format
88
+ return section.replace(statusRegex, `**Status:** ${newStatus}`);
89
+ }
90
+ // Add status line if not found (shouldn't happen, but handle gracefully)
91
+ // Insert after feature title (try both formats)
92
+ let titleMatch = section.match(/^###\s+#\d+:\s+(.+)$/m);
93
+ if (titleMatch) {
94
+ const titleEnd = section.indexOf('\n', titleMatch.index || 0);
95
+ return (section.substring(0, titleEnd + 1) +
96
+ `\nStatus: \`${newStatus}\`\n` +
97
+ section.substring(titleEnd + 1));
98
+ }
99
+ // Try legacy format title
100
+ titleMatch = section.match(/^##\s+Feature\s+\d+:\s+(.+)$/m);
101
+ if (titleMatch) {
102
+ const titleEnd = section.indexOf('\n', titleMatch.index || 0);
103
+ return (section.substring(0, titleEnd + 1) +
104
+ `\n**Status:** ${newStatus}\n` +
105
+ section.substring(titleEnd + 1));
77
106
  }
107
+ return section;
78
108
  }
79
109
  /**
80
110
  * Parse task ID to extract plan ID and feature number.
@@ -1 +1 @@
1
- {"version":3,"file":"update-task-status.js","sourceRoot":"","sources":["../../src/tools/update-task-status.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"update-task-status.js","sourceRoot":"","sources":["../../src/tools/update-task-status.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sudosandwich/limps",
3
- "version": "2.6.0",
3
+ "version": "2.7.0",
4
4
  "description": "Local Intelligent MCP Planning Server - AI agent plan management and coordination",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -23,7 +23,10 @@
23
23
  "format": "prettier --write \"src/**/*.{ts,tsx}\" \"tests/**/*.{ts,tsx}\"",
24
24
  "format:check": "prettier --check \"src/**/*.{ts,tsx}\" \"tests/**/*.{ts,tsx}\"",
25
25
  "validate": "npm run format:check && npm run lint && npm run type-check && npm run build && npm test",
26
- "ci": "npm run validate"
26
+ "migrate:plan-feature-format": "npx tsx scripts/migrate-plan-feature-format.ts",
27
+ "ci": "npm run validate",
28
+ "prepublishOnly": "npm run build && node scripts/prepare-publish.cjs",
29
+ "postpublish": "node scripts/cleanup-publish.cjs"
27
30
  },
28
31
  "keywords": [
29
32
  "mcp",