@sudosandwich/limps 0.2.1 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +237 -14
- package/dist/cli/config-cmd.d.ts +68 -0
- package/dist/cli/config-cmd.d.ts.map +1 -0
- package/dist/cli/config-cmd.js +206 -0
- package/dist/cli/config-cmd.js.map +1 -0
- package/dist/cli/index.d.ts +11 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +12 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/init-project.d.ts +12 -0
- package/dist/cli/init-project.d.ts.map +1 -0
- package/dist/cli/init-project.js +104 -0
- package/dist/cli/init-project.js.map +1 -0
- package/dist/cli/list-agents.d.ts +66 -0
- package/dist/cli/list-agents.d.ts.map +1 -0
- package/dist/cli/list-agents.js +147 -0
- package/dist/cli/list-agents.js.map +1 -0
- package/dist/cli/list-plans.d.ts +63 -0
- package/dist/cli/list-plans.d.ts.map +1 -0
- package/dist/cli/list-plans.js +218 -0
- package/dist/cli/list-plans.js.map +1 -0
- package/dist/cli/next-task.d.ts +83 -0
- package/dist/cli/next-task.d.ts.map +1 -0
- package/dist/cli/next-task.js +201 -0
- package/dist/cli/next-task.js.map +1 -0
- package/dist/cli/registry.d.ts +94 -0
- package/dist/cli/registry.d.ts.map +1 -0
- package/dist/cli/registry.js +150 -0
- package/dist/cli/registry.js.map +1 -0
- package/dist/cli/status.d.ts +35 -0
- package/dist/cli/status.d.ts.map +1 -0
- package/dist/cli/status.js +110 -0
- package/dist/cli/status.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +10 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/config/add.d.ts +9 -0
- package/dist/commands/config/add.d.ts.map +1 -0
- package/dist/commands/config/add.js +20 -0
- package/dist/commands/config/add.js.map +1 -0
- package/dist/commands/config/discover.d.ts +3 -0
- package/dist/commands/config/discover.d.ts.map +1 -0
- package/dist/commands/config/discover.js +9 -0
- package/dist/commands/config/discover.js.map +1 -0
- package/dist/commands/config/index.d.ts +3 -0
- package/dist/commands/config/index.d.ts.map +1 -0
- package/dist/commands/config/index.js +7 -0
- package/dist/commands/config/index.js.map +1 -0
- package/dist/commands/config/list.d.ts +3 -0
- package/dist/commands/config/list.d.ts.map +1 -0
- package/dist/commands/config/list.js +9 -0
- package/dist/commands/config/list.js.map +1 -0
- package/dist/commands/config/path.d.ts +3 -0
- package/dist/commands/config/path.d.ts.map +1 -0
- package/dist/commands/config/path.js +10 -0
- package/dist/commands/config/path.js.map +1 -0
- package/dist/commands/config/remove.d.ts +9 -0
- package/dist/commands/config/remove.d.ts.map +1 -0
- package/dist/commands/config/remove.js +17 -0
- package/dist/commands/config/remove.js.map +1 -0
- package/dist/commands/config/set.d.ts +9 -0
- package/dist/commands/config/set.d.ts.map +1 -0
- package/dist/commands/config/set.js +17 -0
- package/dist/commands/config/set.js.map +1 -0
- package/dist/commands/config/show.d.ts +3 -0
- package/dist/commands/config/show.d.ts.map +1 -0
- package/dist/commands/config/show.js +15 -0
- package/dist/commands/config/show.js.map +1 -0
- package/dist/commands/config/use.d.ts +9 -0
- package/dist/commands/config/use.d.ts.map +1 -0
- package/dist/commands/config/use.js +17 -0
- package/dist/commands/config/use.js.map +1 -0
- package/dist/commands/index.d.ts +3 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +7 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/init.d.ts +13 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +20 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/list-agents.d.ts +13 -0
- package/dist/commands/list-agents.d.ts.map +1 -0
- package/dist/commands/list-agents.js +31 -0
- package/dist/commands/list-agents.js.map +1 -0
- package/dist/commands/list-plans.d.ts +11 -0
- package/dist/commands/list-plans.d.ts.map +1 -0
- package/dist/commands/list-plans.js +21 -0
- package/dist/commands/list-plans.js.map +1 -0
- package/dist/commands/next-task.d.ts +13 -0
- package/dist/commands/next-task.d.ts.map +1 -0
- package/dist/commands/next-task.js +46 -0
- package/dist/commands/next-task.js.map +1 -0
- package/dist/commands/serve.d.ts +11 -0
- package/dist/commands/serve.d.ts.map +1 -0
- package/dist/commands/serve.js +31 -0
- package/dist/commands/serve.js.map +1 -0
- package/dist/commands/status.d.ts +13 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +28 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/components/AgentsList.d.ts +19 -0
- package/dist/components/AgentsList.d.ts.map +1 -0
- package/dist/components/AgentsList.js +29 -0
- package/dist/components/AgentsList.js.map +1 -0
- package/dist/components/Error.d.ts +6 -0
- package/dist/components/Error.d.ts.map +1 -0
- package/dist/components/Error.js +6 -0
- package/dist/components/Error.js.map +1 -0
- package/dist/components/NextTask.d.ts +12 -0
- package/dist/components/NextTask.d.ts.map +1 -0
- package/dist/components/NextTask.js +11 -0
- package/dist/components/NextTask.js.map +1 -0
- package/dist/components/PlanStatus.d.ts +11 -0
- package/dist/components/PlanStatus.d.ts.map +1 -0
- package/dist/components/PlanStatus.js +18 -0
- package/dist/components/PlanStatus.js.map +1 -0
- package/dist/components/PlansList.d.ts +12 -0
- package/dist/components/PlansList.d.ts.map +1 -0
- package/dist/components/PlansList.js +23 -0
- package/dist/components/PlansList.js.map +1 -0
- package/dist/components/Success.d.ts +6 -0
- package/dist/components/Success.d.ts.map +1 -0
- package/dist/components/Success.js +6 -0
- package/dist/components/Success.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -246
- package/dist/index.js.map +1 -1
- package/dist/server-main.d.ts +11 -0
- package/dist/server-main.d.ts.map +1 -0
- package/dist/server-main.js +81 -0
- package/dist/server-main.js.map +1 -0
- package/dist/server.js +1 -1
- package/dist/server.js.map +1 -1
- package/dist/theme/colors.d.ts +64 -0
- package/dist/theme/colors.d.ts.map +1 -0
- package/dist/theme/colors.js +85 -0
- package/dist/theme/colors.js.map +1 -0
- package/dist/theme/index.d.ts +6 -0
- package/dist/theme/index.d.ts.map +1 -0
- package/dist/theme/index.js +6 -0
- package/dist/theme/index.js.map +1 -0
- package/dist/tools/claim-task.d.ts +7 -10
- package/dist/tools/claim-task.d.ts.map +1 -1
- package/dist/tools/create-doc.d.ts +7 -10
- package/dist/tools/create-doc.d.ts.map +1 -1
- package/dist/tools/create-plan.d.ts +1 -7
- package/dist/tools/create-plan.d.ts.map +1 -1
- package/dist/tools/delete-doc.d.ts +1 -9
- package/dist/tools/delete-doc.d.ts.map +1 -1
- package/dist/tools/get-next-task.d.ts +19 -9
- package/dist/tools/get-next-task.d.ts.map +1 -1
- package/dist/tools/get-next-task.js +64 -1
- package/dist/tools/get-next-task.js.map +1 -1
- package/dist/tools/get-plan-status.d.ts +24 -0
- package/dist/tools/get-plan-status.d.ts.map +1 -0
- package/dist/tools/get-plan-status.js +48 -0
- package/dist/tools/get-plan-status.js.map +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +66 -18
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/list-agents.d.ts +24 -0
- package/dist/tools/list-agents.d.ts.map +1 -0
- package/dist/tools/list-agents.js +60 -0
- package/dist/tools/list-agents.js.map +1 -0
- package/dist/tools/list-docs.d.ts +1 -11
- package/dist/tools/list-docs.d.ts.map +1 -1
- package/dist/tools/list-plans.d.ts +23 -0
- package/dist/tools/list-plans.d.ts.map +1 -0
- package/dist/tools/list-plans.js +44 -0
- package/dist/tools/list-plans.js.map +1 -0
- package/dist/tools/open-document-in-cursor.d.ts +1 -9
- package/dist/tools/open-document-in-cursor.d.ts.map +1 -1
- package/dist/tools/process-doc.d.ts +43 -0
- package/dist/tools/process-doc.d.ts.map +1 -0
- package/dist/tools/{rlm-query.js → process-doc.js} +7 -8
- package/dist/tools/process-doc.js.map +1 -0
- package/dist/tools/process-docs.d.ts +54 -0
- package/dist/tools/process-docs.d.ts.map +1 -0
- package/dist/tools/{rlm-multi-query.js → process-docs.js} +10 -10
- package/dist/tools/process-docs.js.map +1 -0
- package/dist/tools/release-task.d.ts +5 -10
- package/dist/tools/release-task.d.ts.map +1 -1
- package/dist/tools/search-docs.d.ts +1 -7
- package/dist/tools/search-docs.d.ts.map +1 -1
- package/dist/tools/update-doc.d.ts +6 -90
- package/dist/tools/update-doc.d.ts.map +1 -1
- package/dist/tools/update-task-status.d.ts +7 -12
- package/dist/tools/update-task-status.d.ts.map +1 -1
- package/dist/utils/config-resolver.d.ts +19 -0
- package/dist/utils/config-resolver.d.ts.map +1 -0
- package/dist/utils/config-resolver.js +65 -0
- package/dist/utils/config-resolver.js.map +1 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/markdown.d.ts +15 -0
- package/dist/utils/markdown.d.ts.map +1 -0
- package/dist/utils/markdown.js +20 -0
- package/dist/utils/markdown.js.map +1 -0
- package/dist/utils/os-paths.d.ts +4 -4
- package/dist/utils/os-paths.js +5 -5
- package/dist/utils/os-paths.js.map +1 -1
- package/package.json +22 -11
- package/dist/tools/read-doc.d.ts +0 -44
- package/dist/tools/read-doc.d.ts.map +0 -1
- package/dist/tools/read-doc.js +0 -174
- package/dist/tools/read-doc.js.map +0 -1
- package/dist/tools/rlm-multi-query.d.ts +0 -110
- package/dist/tools/rlm-multi-query.d.ts.map +0 -1
- package/dist/tools/rlm-multi-query.js.map +0 -1
- package/dist/tools/rlm-query.d.ts +0 -56
- package/dist/tools/rlm-query.d.ts.map +0 -1
- package/dist/tools/rlm-query.js.map +0 -1
package/README.md
CHANGED
|
@@ -2,6 +2,106 @@
|
|
|
2
2
|
|
|
3
3
|
**L**ocal **I**ntelligent **M**CP **P**lanning **S**erver - AI agent plan management and coordination.
|
|
4
4
|
|
|
5
|
+
[](https://www.npmjs.com/package/@sudosandwich/limps)
|
|
6
|
+
[](https://opensource.org/licenses/MIT)
|
|
7
|
+

|
|
8
|
+

|
|
9
|
+
|
|
10
|
+

|
|
11
|
+
|
|
12
|
+
*Claude Desktop accessing the planning MCP, talking to Runi project docs*
|
|
13
|
+
|
|
14
|
+
## The Problem limps Solves
|
|
15
|
+
|
|
16
|
+
**Context drift between LLM providers** — Each AI assistant (Claude, ChatGPT, Cursor, GitHub Copilot, etc.) maintains its own separate context. Without a shared source of truth, planning documents, task status, and decisions get fragmented across different conversations and sessions.
|
|
17
|
+
|
|
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
|
+
|
|
20
|
+
- **Claude Desktop** — Full access to search, read, update, create documents, claim tasks, and more
|
|
21
|
+
- **Cursor** — Integrated planning and task management via MCP tools
|
|
22
|
+
- **GitHub Copilot** — When MCP support is enabled
|
|
23
|
+
- **Any MCP-compatible tool** — Standard protocol means universal access
|
|
24
|
+
|
|
25
|
+
### Deployment Options
|
|
26
|
+
|
|
27
|
+
- **Local (Default)** — Run limps locally for secure, private access
|
|
28
|
+
- **Deployed** — You can deploy the MCP server for global access, but **research AUTH** to protect your endpoint and documents
|
|
29
|
+
|
|
30
|
+
## Used In Production
|
|
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.
|
|
33
|
+
|
|
34
|
+
### How runi Uses limps
|
|
35
|
+
|
|
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
|
+
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
**Core Commands:**
|
|
41
|
+
|
|
42
|
+
| Command | Description | MCP Tools Used |
|
|
43
|
+
|---------|-------------|----------------|
|
|
44
|
+
| `/create-feature-plan` | Generate TDD plan with docs and agent files | `create_plan`, `create_doc`, `list_docs` |
|
|
45
|
+
| `/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` |
|
|
48
|
+
| `/update-feature-plan` | Regenerate agents from updated plan | `process_doc`, `create_doc`, `process_docs` |
|
|
49
|
+
| `/plan-list-agents` | Show all agents with status | `list_docs`, `process_docs` |
|
|
50
|
+
|
|
51
|
+
**Example: `/create-feature-plan` using MCP tools:**
|
|
52
|
+
|
|
53
|
+
```typescript
|
|
54
|
+
// 1. Find next plan number
|
|
55
|
+
const plans = await list_docs({ path: 'plans/', pattern: '*' });
|
|
56
|
+
const nextNum = Math.max(...plans.map(p => parseInt(p.name))) + 1;
|
|
57
|
+
|
|
58
|
+
// 2. Create plan structure
|
|
59
|
+
await create_plan({ name: `${nextNum}-my-feature`, description: '...' });
|
|
60
|
+
|
|
61
|
+
// 3. Create planning documents
|
|
62
|
+
await create_doc({ path: `plans/${nextNum}-my-feature/plan.md`, content: '...' });
|
|
63
|
+
await create_doc({ path: `plans/${nextNum}-my-feature/interfaces.md`, content: '...' });
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
**Example: `/run-agent` using process_doc:**
|
|
67
|
+
|
|
68
|
+
```typescript
|
|
69
|
+
// Extract next GAP feature from plan
|
|
70
|
+
const nextGap = await process_doc({
|
|
71
|
+
path: `plans/${planName}/plan.md`,
|
|
72
|
+
code: `
|
|
73
|
+
const features = extractFeatures(doc.content);
|
|
74
|
+
const gaps = features.filter(f => f.status === 'GAP');
|
|
75
|
+
return gaps.sort((a, b) => a.priority - b.priority)[0];
|
|
76
|
+
`,
|
|
77
|
+
});
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
**Project Structure:**
|
|
81
|
+
|
|
82
|
+
```
|
|
83
|
+
runi/ # Main codebase
|
|
84
|
+
├── .cursor/commands/ # Cursor slash commands
|
|
85
|
+
│ ├── create-feature-plan.md
|
|
86
|
+
│ ├── list-feature-plans.md
|
|
87
|
+
│ ├── run-agent.md
|
|
88
|
+
│ ├── close-feature-agent.md
|
|
89
|
+
│ └── update-feature-plan.md
|
|
90
|
+
└── .claude/commands/ # Claude Code commands
|
|
91
|
+
└── pr.md
|
|
92
|
+
|
|
93
|
+
runi-planning-docs/ # Separate git repo for plans
|
|
94
|
+
├── plans/
|
|
95
|
+
│ ├── 0004-datagrid/ # Feature plan
|
|
96
|
+
│ │ ├── plan.md # Full specifications
|
|
97
|
+
│ │ ├── interfaces.md # Interface contracts
|
|
98
|
+
│ │ ├── README.md # Status index
|
|
99
|
+
│ │ ├── gotchas.md # Discovered issues
|
|
100
|
+
│ │ └── agents/ # Agent task files
|
|
101
|
+
│ └── ...
|
|
102
|
+
└── decisions/ # Decision log
|
|
103
|
+
```
|
|
104
|
+
|
|
5
105
|
## Installation
|
|
6
106
|
|
|
7
107
|
### Global Install (Recommended)
|
|
@@ -18,6 +118,82 @@ limps init my-project --docs-path ~/Documents/my-project
|
|
|
18
118
|
|
|
19
119
|
This creates a config and outputs the Cursor/Claude Desktop configuration snippets with full paths.
|
|
20
120
|
|
|
121
|
+
## CLI Commands
|
|
122
|
+
|
|
123
|
+
limps provides a full CLI for managing projects and viewing plans without needing an MCP client.
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
limps --help # Show all commands
|
|
127
|
+
limps <command> --help # Show command help
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### Project Management
|
|
131
|
+
|
|
132
|
+
| Command | Description |
|
|
133
|
+
|---------|-------------|
|
|
134
|
+
| `limps init <name>` | Initialize a new project |
|
|
135
|
+
| `limps serve` | Start the MCP server |
|
|
136
|
+
|
|
137
|
+
### Plan Commands
|
|
138
|
+
|
|
139
|
+
| Command | Description |
|
|
140
|
+
|---------|-------------|
|
|
141
|
+
| `limps list-plans` | List all plans with status |
|
|
142
|
+
| `limps list-agents <plan>` | List agents in a plan |
|
|
143
|
+
| `limps next-task <plan>` | Get the highest-priority available task |
|
|
144
|
+
| `limps status <plan>` | Show plan status summary |
|
|
145
|
+
|
|
146
|
+
### Configuration
|
|
147
|
+
|
|
148
|
+
| Command | Description |
|
|
149
|
+
|---------|-------------|
|
|
150
|
+
| `limps config list` | Show all registered projects |
|
|
151
|
+
| `limps config use <name>` | Switch to a different project |
|
|
152
|
+
| `limps config show` | Display resolved configuration |
|
|
153
|
+
| `limps config path` | Print the config file path |
|
|
154
|
+
| `limps config add <name> <path>` | Register an existing config |
|
|
155
|
+
| `limps config remove <name>` | Unregister a project |
|
|
156
|
+
| `limps config set <path>` | Set current from config path |
|
|
157
|
+
| `limps config discover` | Find configs in default locations |
|
|
158
|
+
|
|
159
|
+
### Multi-Project Workflow
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
# Register multiple projects
|
|
163
|
+
limps init project-a --docs-path ~/Documents/project-a
|
|
164
|
+
limps init project-b --docs-path ~/Documents/project-b
|
|
165
|
+
|
|
166
|
+
# Switch between projects
|
|
167
|
+
limps config use project-a
|
|
168
|
+
limps list-plans
|
|
169
|
+
|
|
170
|
+
limps config use project-b
|
|
171
|
+
limps list-plans
|
|
172
|
+
|
|
173
|
+
# Use environment variable
|
|
174
|
+
LIMPS_PROJECT=project-a limps list-plans
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
### Example: Git-based Document Versioning
|
|
178
|
+
|
|
179
|
+
Point limps at a git repository to version control your planning documents:
|
|
180
|
+
|
|
181
|
+
```bash
|
|
182
|
+
# Create a dedicated docs repo
|
|
183
|
+
mkdir ~/Documents/GitHub/my-planning-docs
|
|
184
|
+
cd ~/Documents/GitHub/my-planning-docs
|
|
185
|
+
git init
|
|
186
|
+
|
|
187
|
+
# Initialize limps with your docs repo
|
|
188
|
+
limps init my-project --docs-path ~/Documents/GitHub/my-planning-docs
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
This approach gives you:
|
|
192
|
+
- **Version history** for all plans and decisions
|
|
193
|
+
- **Branching** for experimental planning
|
|
194
|
+
- **Collaboration** via pull requests
|
|
195
|
+
- **Backup** through remote repositories
|
|
196
|
+
|
|
21
197
|
### Manual Configuration
|
|
22
198
|
|
|
23
199
|
The server automatically finds configuration at OS-specific locations:
|
|
@@ -31,8 +207,8 @@ The server automatically finds configuration at OS-specific locations:
|
|
|
31
207
|
### From Source
|
|
32
208
|
|
|
33
209
|
```bash
|
|
34
|
-
git clone https://github.com/paulbreuler/
|
|
35
|
-
cd
|
|
210
|
+
git clone https://github.com/paulbreuler/limps.git
|
|
211
|
+
cd limps
|
|
36
212
|
npm install
|
|
37
213
|
npm run build
|
|
38
214
|
```
|
|
@@ -111,24 +287,63 @@ Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:
|
|
|
111
287
|
|
|
112
288
|
## Features
|
|
113
289
|
|
|
114
|
-
###
|
|
290
|
+
### MCP Tools (16 Tools)
|
|
291
|
+
|
|
292
|
+
#### Document Operations
|
|
115
293
|
|
|
116
294
|
| Tool | Description |
|
|
117
295
|
|------|-------------|
|
|
118
|
-
| `
|
|
296
|
+
| `process_doc` | Process a document with JavaScript code (read, filter, transform, extract) |
|
|
297
|
+
| `process_docs` | Process multiple documents with JavaScript for cross-document analysis |
|
|
119
298
|
| `create_doc` | Create new documents |
|
|
120
299
|
| `update_doc` | Update with optimistic concurrency |
|
|
121
300
|
| `delete_doc` | Delete documents |
|
|
122
301
|
| `list_docs` | List files and directories |
|
|
123
302
|
| `search_docs` | Full-text search (SQLite FTS5) |
|
|
124
|
-
| `
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
303
|
+
| `open_document_in_cursor` | Open files in Cursor editor |
|
|
304
|
+
|
|
305
|
+
#### Plan Management
|
|
306
|
+
|
|
307
|
+
| Tool | Description |
|
|
308
|
+
|------|-------------|
|
|
309
|
+
| `create_plan` | Create feature plans with directory structure and agent files |
|
|
310
|
+
| `list_plans` | List all plans with status, workType, and overview |
|
|
311
|
+
| `list_agents` | List agents for a plan with status, persona, and file counts |
|
|
312
|
+
| `get_plan_status` | Get plan progress with completion %, blocked/WIP agents |
|
|
313
|
+
|
|
314
|
+
#### Task Coordination
|
|
315
|
+
|
|
316
|
+
| Tool | Description |
|
|
317
|
+
|------|-------------|
|
|
318
|
+
| `get_next_task` | Get highest-priority task with detailed score breakdown |
|
|
128
319
|
| `claim_task` | Claim tasks with file locks |
|
|
129
320
|
| `release_task` | Release tasks and locks |
|
|
130
|
-
| `
|
|
131
|
-
|
|
321
|
+
| `update_task_status` | Update task status (GAP → WIP → PASS/BLOCKED) |
|
|
322
|
+
|
|
323
|
+
#### Task Scoring Algorithm
|
|
324
|
+
|
|
325
|
+
When using `get_next_task` with a `planId`, returns a detailed score breakdown:
|
|
326
|
+
|
|
327
|
+
| Score Component | Max Points | Description |
|
|
328
|
+
|----------------|------------|-------------|
|
|
329
|
+
| Dependency Score | 40 | All dependencies satisfied = 40, otherwise 0 |
|
|
330
|
+
| Priority Score | 30 | Based on agent number (lower = higher priority) |
|
|
331
|
+
| Workload Score | 30 | Based on file count (fewer files = higher score) |
|
|
332
|
+
| **Total** | **100** | Sum of all components |
|
|
333
|
+
|
|
334
|
+
Example response:
|
|
335
|
+
```json
|
|
336
|
+
{
|
|
337
|
+
"taskId": "0001-feature#002",
|
|
338
|
+
"title": "Implement API endpoints",
|
|
339
|
+
"totalScore": 85,
|
|
340
|
+
"dependencyScore": 40,
|
|
341
|
+
"priorityScore": 24,
|
|
342
|
+
"workloadScore": 21,
|
|
343
|
+
"reasons": ["All 2 dependencies satisfied", "Agent #2 priority: 24/30", "3 files to modify: 21/30"],
|
|
344
|
+
"otherAvailableTasks": 3
|
|
345
|
+
}
|
|
346
|
+
```
|
|
132
347
|
|
|
133
348
|
### RLM (Recursive Language Model) Support
|
|
134
349
|
|
|
@@ -172,10 +387,16 @@ GitHub Actions automatically builds, tests, and creates releases with changelogs
|
|
|
172
387
|
|
|
173
388
|
## Architecture
|
|
174
389
|
|
|
175
|
-
-
|
|
176
|
-
-
|
|
177
|
-
-
|
|
178
|
-
-
|
|
390
|
+

|
|
391
|
+

|
|
392
|
+

|
|
393
|
+

|
|
394
|
+

|
|
395
|
+
|
|
396
|
+
- Full-text search with auto-indexing
|
|
397
|
+
- Real-time file watching (Chokidar)
|
|
398
|
+
- Multi-agent coordination with heartbeats
|
|
399
|
+
- RLM sandbox (QuickJS)
|
|
179
400
|
|
|
180
401
|
### Principles
|
|
181
402
|
|
|
@@ -190,6 +411,7 @@ GitHub Actions automatically builds, tests, and creates releases with changelogs
|
|
|
190
411
|
The server is designed for planning documents but the core is generic:
|
|
191
412
|
|
|
192
413
|
**Configuration-only:**
|
|
414
|
+
|
|
193
415
|
```json
|
|
194
416
|
{
|
|
195
417
|
"plansPath": "./your-docs",
|
|
@@ -199,6 +421,7 @@ The server is designed for planning documents but the core is generic:
|
|
|
199
421
|
```
|
|
200
422
|
|
|
201
423
|
**For different domains** (wikis, knowledge bases):
|
|
424
|
+
|
|
202
425
|
- Replace/remove planning-specific tools
|
|
203
426
|
- Customize document extractors in `src/rlm/extractors.ts`
|
|
204
427
|
- Modify coordination patterns or remove if single-agent
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Config subcommand handlers for limps CLI.
|
|
3
|
+
* Provides commands to manage the project registry and view configuration.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* List all registered projects.
|
|
7
|
+
*
|
|
8
|
+
* @returns Formatted list of projects
|
|
9
|
+
*/
|
|
10
|
+
export declare function configList(): string;
|
|
11
|
+
/**
|
|
12
|
+
* Switch to a different project.
|
|
13
|
+
*
|
|
14
|
+
* @param name - Project name to switch to
|
|
15
|
+
* @returns Success message
|
|
16
|
+
* @throws Error if project not found
|
|
17
|
+
*/
|
|
18
|
+
export declare function configUse(name: string): string;
|
|
19
|
+
/**
|
|
20
|
+
* Show the resolved configuration values.
|
|
21
|
+
*
|
|
22
|
+
* @param resolveConfigPathFn - Function to resolve config path (injected to avoid circular deps)
|
|
23
|
+
* @returns Formatted configuration
|
|
24
|
+
*/
|
|
25
|
+
export declare function configShow(resolveConfigPathFn: () => string): string;
|
|
26
|
+
/**
|
|
27
|
+
* Print the resolved config file path.
|
|
28
|
+
*
|
|
29
|
+
* @param resolveConfigPathFn - Function to resolve config path (injected to avoid circular deps)
|
|
30
|
+
* @returns The config path
|
|
31
|
+
*/
|
|
32
|
+
export declare function configPath(resolveConfigPathFn: () => string): string;
|
|
33
|
+
/**
|
|
34
|
+
* Add/register an existing config file to the registry.
|
|
35
|
+
*
|
|
36
|
+
* @param name - Project name to use
|
|
37
|
+
* @param configFilePath - Path to the config file
|
|
38
|
+
* @returns Success message
|
|
39
|
+
* @throws Error if config file doesn't exist
|
|
40
|
+
*/
|
|
41
|
+
export declare function configAdd(name: string, configFilePath: string): string;
|
|
42
|
+
/**
|
|
43
|
+
* Remove a project from the registry.
|
|
44
|
+
* Does not delete any files.
|
|
45
|
+
*
|
|
46
|
+
* @param name - Project name to remove
|
|
47
|
+
* @returns Success message
|
|
48
|
+
* @throws Error if project not found
|
|
49
|
+
*/
|
|
50
|
+
export declare function configRemove(name: string): string;
|
|
51
|
+
/**
|
|
52
|
+
* Set the current project from an existing config file path.
|
|
53
|
+
* Auto-derives the project name from the parent directory.
|
|
54
|
+
* Registers the project if not already registered.
|
|
55
|
+
*
|
|
56
|
+
* @param configFilePath - Path to the config file
|
|
57
|
+
* @returns Success message
|
|
58
|
+
* @throws Error if config file doesn't exist or is invalid
|
|
59
|
+
*/
|
|
60
|
+
export declare function configSet(configFilePath: string): string;
|
|
61
|
+
/**
|
|
62
|
+
* Discover and register config files from default OS locations.
|
|
63
|
+
* Scans the OS-specific application support directories for config.json files.
|
|
64
|
+
*
|
|
65
|
+
* @returns Summary of discovered projects
|
|
66
|
+
*/
|
|
67
|
+
export declare function configDiscover(): string;
|
|
68
|
+
//# sourceMappingURL=config-cmd.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Config subcommand handlers for limps CLI.
|
|
3
|
+
* Provides commands to manage the project registry and view configuration.
|
|
4
|
+
*/
|
|
5
|
+
import { existsSync, readdirSync } from 'fs';
|
|
6
|
+
import { resolve, dirname, basename } from 'path';
|
|
7
|
+
import { registerProject, unregisterProject, setCurrentProject, listProjects, loadRegistry, } from './registry.js';
|
|
8
|
+
import { loadConfig } from '../config.js';
|
|
9
|
+
/**
|
|
10
|
+
* List all registered projects.
|
|
11
|
+
*
|
|
12
|
+
* @returns Formatted list of projects
|
|
13
|
+
*/
|
|
14
|
+
export function configList() {
|
|
15
|
+
const projects = listProjects();
|
|
16
|
+
if (projects.length === 0) {
|
|
17
|
+
return 'No projects registered. Run `limps init <name>` to create one.';
|
|
18
|
+
}
|
|
19
|
+
const lines = [];
|
|
20
|
+
lines.push('CURRENT NAME PATH');
|
|
21
|
+
lines.push('------- ------------------- ----');
|
|
22
|
+
for (const project of projects) {
|
|
23
|
+
const current = project.current ? '*' : ' ';
|
|
24
|
+
const name = project.name.padEnd(19);
|
|
25
|
+
const exists = existsSync(project.configPath) ? '' : ' (missing)';
|
|
26
|
+
lines.push(` ${current} ${name} ${project.configPath}${exists}`);
|
|
27
|
+
}
|
|
28
|
+
return lines.join('\n');
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Switch to a different project.
|
|
32
|
+
*
|
|
33
|
+
* @param name - Project name to switch to
|
|
34
|
+
* @returns Success message
|
|
35
|
+
* @throws Error if project not found
|
|
36
|
+
*/
|
|
37
|
+
export function configUse(name) {
|
|
38
|
+
setCurrentProject(name);
|
|
39
|
+
return `Switched to project "${name}"`;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Show the resolved configuration values.
|
|
43
|
+
*
|
|
44
|
+
* @param resolveConfigPathFn - Function to resolve config path (injected to avoid circular deps)
|
|
45
|
+
* @returns Formatted configuration
|
|
46
|
+
*/
|
|
47
|
+
export function configShow(resolveConfigPathFn) {
|
|
48
|
+
const configPath = resolveConfigPathFn();
|
|
49
|
+
if (!existsSync(configPath)) {
|
|
50
|
+
return `Config file not found: ${configPath}\n\nRun \`limps init <name>\` to create a project.`;
|
|
51
|
+
}
|
|
52
|
+
const config = loadConfig(configPath);
|
|
53
|
+
const lines = [];
|
|
54
|
+
lines.push(`Config file: ${configPath}`);
|
|
55
|
+
lines.push('');
|
|
56
|
+
lines.push('Configuration:');
|
|
57
|
+
lines.push(` plansPath: ${config.plansPath}`);
|
|
58
|
+
lines.push(` dataPath: ${config.dataPath}`);
|
|
59
|
+
lines.push(` coordinationPath: ${config.coordinationPath}`);
|
|
60
|
+
if (config.docsPaths && config.docsPaths.length > 0) {
|
|
61
|
+
lines.push(` docsPaths:`);
|
|
62
|
+
for (const p of config.docsPaths) {
|
|
63
|
+
lines.push(` - ${p}`);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
if (config.fileExtensions) {
|
|
67
|
+
lines.push(` fileExtensions: ${config.fileExtensions.join(', ')}`);
|
|
68
|
+
}
|
|
69
|
+
lines.push(` heartbeatTimeout: ${config.heartbeatTimeout}ms`);
|
|
70
|
+
lines.push(` debounceDelay: ${config.debounceDelay}ms`);
|
|
71
|
+
lines.push(` maxHandoffIterations: ${config.maxHandoffIterations}`);
|
|
72
|
+
return lines.join('\n');
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Print the resolved config file path.
|
|
76
|
+
*
|
|
77
|
+
* @param resolveConfigPathFn - Function to resolve config path (injected to avoid circular deps)
|
|
78
|
+
* @returns The config path
|
|
79
|
+
*/
|
|
80
|
+
export function configPath(resolveConfigPathFn) {
|
|
81
|
+
return resolveConfigPathFn();
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Add/register an existing config file to the registry.
|
|
85
|
+
*
|
|
86
|
+
* @param name - Project name to use
|
|
87
|
+
* @param configFilePath - Path to the config file
|
|
88
|
+
* @returns Success message
|
|
89
|
+
* @throws Error if config file doesn't exist
|
|
90
|
+
*/
|
|
91
|
+
export function configAdd(name, configFilePath) {
|
|
92
|
+
const absolutePath = resolve(configFilePath);
|
|
93
|
+
if (!existsSync(absolutePath)) {
|
|
94
|
+
throw new Error(`Config file not found: ${absolutePath}`);
|
|
95
|
+
}
|
|
96
|
+
// Validate it's a valid config file
|
|
97
|
+
try {
|
|
98
|
+
loadConfig(absolutePath);
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
throw new Error(`Invalid config file: ${error instanceof Error ? error.message : 'unknown error'}`);
|
|
102
|
+
}
|
|
103
|
+
registerProject(name, absolutePath);
|
|
104
|
+
return `Registered project "${name}" with config: ${absolutePath}`;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Remove a project from the registry.
|
|
108
|
+
* Does not delete any files.
|
|
109
|
+
*
|
|
110
|
+
* @param name - Project name to remove
|
|
111
|
+
* @returns Success message
|
|
112
|
+
* @throws Error if project not found
|
|
113
|
+
*/
|
|
114
|
+
export function configRemove(name) {
|
|
115
|
+
unregisterProject(name);
|
|
116
|
+
return `Removed project "${name}" from registry (files not deleted)`;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Set the current project from an existing config file path.
|
|
120
|
+
* Auto-derives the project name from the parent directory.
|
|
121
|
+
* Registers the project if not already registered.
|
|
122
|
+
*
|
|
123
|
+
* @param configFilePath - Path to the config file
|
|
124
|
+
* @returns Success message
|
|
125
|
+
* @throws Error if config file doesn't exist or is invalid
|
|
126
|
+
*/
|
|
127
|
+
export function configSet(configFilePath) {
|
|
128
|
+
const absolutePath = resolve(configFilePath);
|
|
129
|
+
if (!existsSync(absolutePath)) {
|
|
130
|
+
throw new Error(`Config file not found: ${absolutePath}`);
|
|
131
|
+
}
|
|
132
|
+
// Validate it's a valid config file
|
|
133
|
+
try {
|
|
134
|
+
loadConfig(absolutePath);
|
|
135
|
+
}
|
|
136
|
+
catch (error) {
|
|
137
|
+
throw new Error(`Invalid config file: ${error instanceof Error ? error.message : 'unknown error'}`);
|
|
138
|
+
}
|
|
139
|
+
// Derive project name from parent directory
|
|
140
|
+
const projectName = basename(dirname(absolutePath));
|
|
141
|
+
// Check if already registered with this path
|
|
142
|
+
const registry = loadRegistry();
|
|
143
|
+
const existingEntry = Object.entries(registry.projects).find(([, project]) => project.configPath === absolutePath);
|
|
144
|
+
if (existingEntry) {
|
|
145
|
+
// Already registered, just set as current
|
|
146
|
+
setCurrentProject(existingEntry[0]);
|
|
147
|
+
return `Switched to project "${existingEntry[0]}"`;
|
|
148
|
+
}
|
|
149
|
+
// Register and set as current
|
|
150
|
+
registerProject(projectName, absolutePath);
|
|
151
|
+
setCurrentProject(projectName);
|
|
152
|
+
return `Registered and switched to project "${projectName}"`;
|
|
153
|
+
}
|
|
154
|
+
import { getOSBasePath } from '../utils/os-paths.js';
|
|
155
|
+
/**
|
|
156
|
+
* Discover and register config files from default OS locations.
|
|
157
|
+
* Scans the OS-specific application support directories for config.json files.
|
|
158
|
+
*
|
|
159
|
+
* @returns Summary of discovered projects
|
|
160
|
+
*/
|
|
161
|
+
export function configDiscover() {
|
|
162
|
+
// Get the parent directory of where limps stores its config
|
|
163
|
+
// This respects any mocking of getOSBasePath for testing
|
|
164
|
+
const limpsBasePath = getOSBasePath('limps');
|
|
165
|
+
const searchDir = dirname(limpsBasePath);
|
|
166
|
+
const registry = loadRegistry();
|
|
167
|
+
const registeredPaths = new Set(Object.values(registry.projects).map((p) => p.configPath));
|
|
168
|
+
const discovered = [];
|
|
169
|
+
if (!existsSync(searchDir)) {
|
|
170
|
+
return 'No new projects discovered.';
|
|
171
|
+
}
|
|
172
|
+
try {
|
|
173
|
+
const entries = readdirSync(searchDir, { withFileTypes: true });
|
|
174
|
+
for (const entry of entries) {
|
|
175
|
+
if (!entry.isDirectory())
|
|
176
|
+
continue;
|
|
177
|
+
const configPath = `${searchDir}/${entry.name}/config.json`;
|
|
178
|
+
// Skip if already registered or doesn't exist
|
|
179
|
+
if (registeredPaths.has(configPath) || !existsSync(configPath))
|
|
180
|
+
continue;
|
|
181
|
+
// Validate it's a valid limps config
|
|
182
|
+
try {
|
|
183
|
+
loadConfig(configPath);
|
|
184
|
+
registerProject(entry.name, configPath);
|
|
185
|
+
discovered.push({ name: entry.name, path: configPath });
|
|
186
|
+
}
|
|
187
|
+
catch {
|
|
188
|
+
// Not a valid limps config, skip
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
catch {
|
|
193
|
+
// Can't read directory, skip
|
|
194
|
+
}
|
|
195
|
+
if (discovered.length === 0) {
|
|
196
|
+
return 'No new projects discovered.';
|
|
197
|
+
}
|
|
198
|
+
const lines = [`Discovered ${discovered.length} project(s):`, ''];
|
|
199
|
+
for (const { name, path } of discovered) {
|
|
200
|
+
lines.push(` ${name}: ${path}`);
|
|
201
|
+
}
|
|
202
|
+
lines.push('');
|
|
203
|
+
lines.push('Run `limps config use <name>` to switch to a project.');
|
|
204
|
+
return lines.join('\n');
|
|
205
|
+
}
|
|
206
|
+
//# sourceMappingURL=config-cmd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-cmd.js","sourceRoot":"","sources":["../../src/cli/config-cmd.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI commands for limps.
|
|
3
|
+
* Provides terminal-based plan management without requiring an IDE.
|
|
4
|
+
*/
|
|
5
|
+
export { listPlans, type CliPlanEntry } from './list-plans.js';
|
|
6
|
+
export { listAgents, findPlanDirectory, getAgentFiles, type CliAgentEntry } from './list-agents.js';
|
|
7
|
+
export { nextTask, calculateDependencyScore, calculatePriorityScore, calculateWorkloadScore, isTaskEligible, scoreTask, type TaskScoreBreakdown, } from './next-task.js';
|
|
8
|
+
export { status, getPlanStatusSummary, type PlanStatusSummary } from './status.js';
|
|
9
|
+
export { getRegistryPath, loadRegistry, saveRegistry, registerProject, unregisterProject, setCurrentProject, getCurrentProjectPath, getProjectPath, listProjects, type RegisteredProject, type ProjectRegistry, } from './registry.js';
|
|
10
|
+
export { configList, configUse, configShow, configPath, configAdd, configRemove, configSet, configDiscover, } from './config-cmd.js';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI commands for limps.
|
|
3
|
+
* Provides terminal-based plan management without requiring an IDE.
|
|
4
|
+
*/
|
|
5
|
+
export { listPlans } from './list-plans.js';
|
|
6
|
+
export { listAgents, findPlanDirectory, getAgentFiles } from './list-agents.js';
|
|
7
|
+
export { nextTask, calculateDependencyScore, calculatePriorityScore, calculateWorkloadScore, isTaskEligible, scoreTask, } from './next-task.js';
|
|
8
|
+
export { status, getPlanStatusSummary } from './status.js';
|
|
9
|
+
// Registry and config management
|
|
10
|
+
export { getRegistryPath, loadRegistry, saveRegistry, registerProject, unregisterProject, setCurrentProject, getCurrentProjectPath, getProjectPath, listProjects, } from './registry.js';
|
|
11
|
+
export { configList, configUse, configShow, configPath, configAdd, configRemove, configSet, configDiscover, } from './config-cmd.js';
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Project initialization for limps CLI.
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Initialize a new project configuration.
|
|
6
|
+
*
|
|
7
|
+
* @param projectName - Name of the project (e.g., "runi-planning")
|
|
8
|
+
* @param docsPath - Optional path to documentation directory
|
|
9
|
+
* @returns Output message for the CLI
|
|
10
|
+
*/
|
|
11
|
+
export declare function initProject(projectName: string, docsPath?: string): string;
|
|
12
|
+
//# sourceMappingURL=init-project.d.ts.map
|
|
@@ -0,0 +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"}
|