@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/dist/index.js
CHANGED
|
@@ -1,256 +1,19 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { loadConfig, getAllDocsPaths, getFileExtensions } from './config.js';
|
|
3
|
-
import { createServer, startServer } from './server.js';
|
|
4
|
-
import { resolve, dirname } from 'path';
|
|
5
|
-
import { fileURLToPath } from 'url';
|
|
6
|
-
import { mkdirSync, existsSync, writeFileSync } from 'fs';
|
|
7
|
-
import { homedir } from 'os';
|
|
8
|
-
import which from 'which';
|
|
9
2
|
/**
|
|
10
|
-
*
|
|
11
|
-
*/
|
|
12
|
-
function expandTilde(path) {
|
|
13
|
-
if (path.startsWith('~/')) {
|
|
14
|
-
return resolve(homedir(), path.slice(2));
|
|
15
|
-
}
|
|
16
|
-
return resolve(path);
|
|
17
|
-
}
|
|
18
|
-
import { initializeDatabase, createSchema, indexAllPaths, indexDocument, removeDocument, } from './indexer.js';
|
|
19
|
-
import { startWatcher, stopWatcher } from './watcher.js';
|
|
20
|
-
import { readCoordination } from './coordination.js';
|
|
21
|
-
import { getOSConfigPath, getOSBasePath, getOSDataPath, getOSCoordinationPath, } from './utils/os-paths.js';
|
|
22
|
-
// Global references for graceful shutdown
|
|
23
|
-
let watcher = null;
|
|
24
|
-
let db = null;
|
|
25
|
-
/**
|
|
26
|
-
* Parse command line arguments.
|
|
3
|
+
* MCP Planning Server entry point.
|
|
27
4
|
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
* - limps --config <path> (start server with custom config)
|
|
31
|
-
* - limps init <project-name> [--docs-path <path>] (initialize new project)
|
|
32
|
-
*
|
|
33
|
-
* @returns Parsed arguments
|
|
5
|
+
* This file is kept for backwards compatibility and direct server invocation.
|
|
6
|
+
* For CLI usage, see src/cli.tsx which provides the full Pastel-based CLI.
|
|
34
7
|
*/
|
|
35
|
-
|
|
8
|
+
import { startMcpServer } from './server-main.js';
|
|
9
|
+
// Parse --config argument for backwards compatibility
|
|
10
|
+
function getConfigArg() {
|
|
36
11
|
const args = process.argv.slice(2);
|
|
37
|
-
// Check for init command
|
|
38
|
-
if (args[0] === 'init') {
|
|
39
|
-
const projectName = args[1];
|
|
40
|
-
const docsPathIndex = args.indexOf('--docs-path');
|
|
41
|
-
const docsPath = docsPathIndex !== -1 ? args[docsPathIndex + 1] : undefined;
|
|
42
|
-
return { command: 'init', projectName, docsPath };
|
|
43
|
-
}
|
|
44
|
-
// Check for --config flag
|
|
45
12
|
const configIndex = args.indexOf('--config');
|
|
46
|
-
|
|
47
|
-
return { configPath: args[configIndex + 1] };
|
|
48
|
-
}
|
|
49
|
-
return {};
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Get the full path to the limps executable.
|
|
53
|
-
* Falls back to 'limps' if not found in PATH.
|
|
54
|
-
*/
|
|
55
|
-
function getLocalPlannerPath() {
|
|
56
|
-
try {
|
|
57
|
-
return which.sync('limps');
|
|
58
|
-
}
|
|
59
|
-
catch {
|
|
60
|
-
// Fallback to command name if not in PATH
|
|
61
|
-
return 'limps';
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Initialize a new project configuration.
|
|
66
|
-
*
|
|
67
|
-
* @param projectName - Name of the project (e.g., "runi-planning")
|
|
68
|
-
* @param docsPath - Optional path to documentation directory
|
|
69
|
-
*/
|
|
70
|
-
function initProject(projectName, docsPath) {
|
|
71
|
-
const basePath = getOSBasePath(projectName);
|
|
72
|
-
const configPath = getOSConfigPath(projectName);
|
|
73
|
-
const dataPath = getOSDataPath(projectName);
|
|
74
|
-
const coordinationPath = getOSCoordinationPath(projectName);
|
|
75
|
-
// Expand tilde in docsPath if provided
|
|
76
|
-
const resolvedDocsPath = docsPath ? expandTilde(docsPath) : null;
|
|
77
|
-
const defaultDocsPath = resolve(homedir(), 'Documents', projectName);
|
|
78
|
-
// Create directory
|
|
79
|
-
mkdirSync(basePath, { recursive: true });
|
|
80
|
-
// Check if config already exists
|
|
81
|
-
if (existsSync(configPath)) {
|
|
82
|
-
console.log(`Config already exists at: ${configPath}`);
|
|
83
|
-
console.log('To reconfigure, delete the existing config file first.');
|
|
84
|
-
process.exit(1);
|
|
85
|
-
}
|
|
86
|
-
// Create default config with absolute paths
|
|
87
|
-
const config = {
|
|
88
|
-
plansPath: resolvedDocsPath ? resolve(resolvedDocsPath, 'plans') : resolve(defaultDocsPath, 'plans'),
|
|
89
|
-
docsPaths: [resolvedDocsPath || defaultDocsPath],
|
|
90
|
-
fileExtensions: ['.md'],
|
|
91
|
-
dataPath: dataPath,
|
|
92
|
-
coordinationPath: coordinationPath,
|
|
93
|
-
heartbeatTimeout: 300000,
|
|
94
|
-
debounceDelay: 200,
|
|
95
|
-
maxHandoffIterations: 3,
|
|
96
|
-
};
|
|
97
|
-
writeFileSync(configPath, JSON.stringify(config, null, 2));
|
|
98
|
-
// Get the full path to limps executable
|
|
99
|
-
const localPlannerPath = getLocalPlannerPath();
|
|
100
|
-
console.log(`\n✓ Created ${projectName} configuration\n`);
|
|
101
|
-
console.log(`Config: ${configPath}`);
|
|
102
|
-
console.log(`Data: ${dataPath}`);
|
|
103
|
-
console.log('');
|
|
104
|
-
// Output Cursor settings snippet
|
|
105
|
-
console.log('Add this to your Cursor settings (Cmd+Shift+P → "Preferences: Open User Settings (JSON)"):\n');
|
|
106
|
-
console.log(JSON.stringify({
|
|
107
|
-
'mcp.servers': {
|
|
108
|
-
[projectName]: {
|
|
109
|
-
command: localPlannerPath,
|
|
110
|
-
args: ['--config', configPath],
|
|
111
|
-
},
|
|
112
|
-
},
|
|
113
|
-
}, null, 2));
|
|
114
|
-
console.log('');
|
|
115
|
-
// Output Claude Desktop config snippet (uses npx because Claude Desktop is sandboxed)
|
|
116
|
-
console.log('For Claude Desktop, add this to ~/Library/Application Support/Claude/claude_desktop_config.json:\n');
|
|
117
|
-
console.log(JSON.stringify({
|
|
118
|
-
mcpServers: {
|
|
119
|
-
[projectName]: {
|
|
120
|
-
command: 'npx',
|
|
121
|
-
args: ['-y', '@sudosandwich/limps', '--config', configPath],
|
|
122
|
-
},
|
|
123
|
-
},
|
|
124
|
-
}, null, 2));
|
|
125
|
-
console.log('');
|
|
126
|
-
// Test command
|
|
127
|
-
console.log('To test the server:');
|
|
128
|
-
console.log(` ${localPlannerPath} --config "${configPath}"`);
|
|
129
|
-
}
|
|
130
|
-
/**
|
|
131
|
-
* Resolve configuration file path with priority:
|
|
132
|
-
* 1. CLI argument --config
|
|
133
|
-
* 2. Environment variable MCP_PLANNING_CONFIG
|
|
134
|
-
* 3. OS-specific default path
|
|
135
|
-
*
|
|
136
|
-
* Falls back to repo-local config.json if no config exists at determined path.
|
|
137
|
-
*
|
|
138
|
-
* @param cliConfigPath - Config path from CLI argument (if provided)
|
|
139
|
-
* @returns Resolved absolute path to config file
|
|
140
|
-
*/
|
|
141
|
-
function resolveConfigPath(cliConfigPath) {
|
|
142
|
-
// Priority 1: CLI argument
|
|
143
|
-
if (cliConfigPath) {
|
|
144
|
-
return resolve(cliConfigPath);
|
|
145
|
-
}
|
|
146
|
-
// Priority 2: Environment variable
|
|
147
|
-
const envConfigPath = process.env.MCP_PLANNING_CONFIG;
|
|
148
|
-
if (envConfigPath) {
|
|
149
|
-
return resolve(envConfigPath);
|
|
150
|
-
}
|
|
151
|
-
// Priority 3: OS-specific default
|
|
152
|
-
const osConfigPath = getOSConfigPath();
|
|
153
|
-
if (existsSync(osConfigPath)) {
|
|
154
|
-
return osConfigPath;
|
|
155
|
-
}
|
|
156
|
-
// Fallback: repo-local config.json (for development/backwards compatibility)
|
|
157
|
-
const currentFile = fileURLToPath(import.meta.url);
|
|
158
|
-
const currentDir = dirname(currentFile);
|
|
159
|
-
const srcDir = dirname(currentDir);
|
|
160
|
-
const repoRoot = dirname(srcDir);
|
|
161
|
-
const repoConfigPath = resolve(repoRoot, 'config.json');
|
|
162
|
-
// If neither OS config nor repo config exists, use OS path (will be created)
|
|
163
|
-
if (existsSync(repoConfigPath)) {
|
|
164
|
-
return repoConfigPath;
|
|
165
|
-
}
|
|
166
|
-
return osConfigPath;
|
|
167
|
-
}
|
|
168
|
-
/**
|
|
169
|
-
* Entry point for the MCP Planning Server.
|
|
170
|
-
* Loads configuration and starts the server.
|
|
171
|
-
*/
|
|
172
|
-
async function main() {
|
|
173
|
-
try {
|
|
174
|
-
// Parse CLI arguments
|
|
175
|
-
const args = parseArgs();
|
|
176
|
-
// Handle init command
|
|
177
|
-
if (args.command === 'init') {
|
|
178
|
-
if (!args.projectName) {
|
|
179
|
-
console.error('Usage: limps init <project-name> [--docs-path <path>]');
|
|
180
|
-
console.error('');
|
|
181
|
-
console.error('Example:');
|
|
182
|
-
console.error(' limps init my-project --docs-path ~/Documents/my-project');
|
|
183
|
-
process.exit(1);
|
|
184
|
-
}
|
|
185
|
-
initProject(args.projectName, args.docsPath);
|
|
186
|
-
return;
|
|
187
|
-
}
|
|
188
|
-
// Resolve config path for server mode
|
|
189
|
-
const configPath = resolveConfigPath(args.configPath);
|
|
190
|
-
// Load configuration
|
|
191
|
-
const config = loadConfig(configPath);
|
|
192
|
-
// Ensure data directory exists
|
|
193
|
-
mkdirSync(config.dataPath, { recursive: true });
|
|
194
|
-
// Initialize database
|
|
195
|
-
const dbPath = resolve(config.dataPath, 'documents.sqlite');
|
|
196
|
-
db = initializeDatabase(dbPath);
|
|
197
|
-
createSchema(db);
|
|
198
|
-
console.error(`Database initialized at ${dbPath}`);
|
|
199
|
-
// Load coordination state
|
|
200
|
-
const coordination = await readCoordination(config.coordinationPath);
|
|
201
|
-
console.error(`Coordination state loaded from ${config.coordinationPath}`);
|
|
202
|
-
// Get all paths and extensions to index
|
|
203
|
-
const docsPaths = getAllDocsPaths(config);
|
|
204
|
-
const fileExtensions = getFileExtensions(config);
|
|
205
|
-
const ignorePatterns = ['.git', 'node_modules', '.tmp'];
|
|
206
|
-
// Initial indexing (#19)
|
|
207
|
-
const result = await indexAllPaths(db, docsPaths, fileExtensions, ignorePatterns);
|
|
208
|
-
console.error(`Indexed ${result.indexed} documents (${result.updated} updated, ${result.skipped} skipped)`);
|
|
209
|
-
console.error(`Paths: ${docsPaths.join(', ')}`);
|
|
210
|
-
console.error(`Extensions: ${fileExtensions.join(', ')}`);
|
|
211
|
-
if (result.errors.length > 0) {
|
|
212
|
-
console.error(`Indexing errors: ${result.errors.length}`);
|
|
213
|
-
for (const err of result.errors) {
|
|
214
|
-
console.error(` - ${err.path}: ${err.error}`);
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
// Capture db reference for watcher callback
|
|
218
|
-
const dbRef = db;
|
|
219
|
-
// Start file watcher (#4)
|
|
220
|
-
watcher = startWatcher(docsPaths, async (path, event) => {
|
|
221
|
-
if (event === 'unlink') {
|
|
222
|
-
await removeDocument(dbRef, path);
|
|
223
|
-
console.error(`Removed document: ${path}`);
|
|
224
|
-
}
|
|
225
|
-
else {
|
|
226
|
-
await indexDocument(dbRef, path);
|
|
227
|
-
console.error(`Indexed document: ${path} (${event})`);
|
|
228
|
-
}
|
|
229
|
-
}, fileExtensions, ignorePatterns, config.debounceDelay);
|
|
230
|
-
console.error(`File watcher started for ${docsPaths.length} path(s)`);
|
|
231
|
-
// Create and start server (pass db and coordination for tools)
|
|
232
|
-
const server = createServer(config, db, coordination);
|
|
233
|
-
await startServer(server, async () => {
|
|
234
|
-
// Graceful shutdown callback
|
|
235
|
-
if (watcher) {
|
|
236
|
-
await stopWatcher(watcher);
|
|
237
|
-
console.error('File watcher stopped');
|
|
238
|
-
watcher = null;
|
|
239
|
-
}
|
|
240
|
-
if (db) {
|
|
241
|
-
db.close();
|
|
242
|
-
console.error('Database connection closed');
|
|
243
|
-
db = null;
|
|
244
|
-
}
|
|
245
|
-
});
|
|
246
|
-
}
|
|
247
|
-
catch (error) {
|
|
248
|
-
console.error('Fatal error in main():', error);
|
|
249
|
-
process.exit(1);
|
|
250
|
-
}
|
|
13
|
+
return configIndex !== -1 && args[configIndex + 1] ? args[configIndex + 1] : undefined;
|
|
251
14
|
}
|
|
252
|
-
|
|
253
|
-
console.error('
|
|
15
|
+
startMcpServer(getConfigArg()).catch((error) => {
|
|
16
|
+
console.error('Fatal error:', error);
|
|
254
17
|
process.exit(1);
|
|
255
18
|
});
|
|
256
19
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,sDAAsD;AACtD,SAAS,YAAY;IACnB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC7C,OAAO,WAAW,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACzF,CAAC;AAED,cAAc,CAAC,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IAC7C,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Server startup logic.
|
|
3
|
+
* Extracted from index.ts for use by CLI commands.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Start the MCP Planning Server.
|
|
7
|
+
*
|
|
8
|
+
* @param configPathArg - Optional config path from CLI argument
|
|
9
|
+
*/
|
|
10
|
+
export declare function startMcpServer(configPathArg?: string): Promise<void>;
|
|
11
|
+
//# sourceMappingURL=server-main.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-main.d.ts","sourceRoot":"","sources":["../src/server-main.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAuBH;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA2E1E"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Server startup logic.
|
|
3
|
+
* Extracted from index.ts for use by CLI commands.
|
|
4
|
+
*/
|
|
5
|
+
import { loadConfig, getAllDocsPaths, getFileExtensions } from './config.js';
|
|
6
|
+
import { createServer, startServer } from './server.js';
|
|
7
|
+
import { resolve } from 'path';
|
|
8
|
+
import { mkdirSync } from 'fs';
|
|
9
|
+
import { initializeDatabase, createSchema, indexAllPaths, indexDocument, removeDocument, } from './indexer.js';
|
|
10
|
+
import { startWatcher, stopWatcher } from './watcher.js';
|
|
11
|
+
import { readCoordination } from './coordination.js';
|
|
12
|
+
import { resolveConfigPath } from './utils/config-resolver.js';
|
|
13
|
+
// Global references for graceful shutdown
|
|
14
|
+
let watcher = null;
|
|
15
|
+
let db = null;
|
|
16
|
+
/**
|
|
17
|
+
* Start the MCP Planning Server.
|
|
18
|
+
*
|
|
19
|
+
* @param configPathArg - Optional config path from CLI argument
|
|
20
|
+
*/
|
|
21
|
+
export async function startMcpServer(configPathArg) {
|
|
22
|
+
// Resolve config path
|
|
23
|
+
const configPath = resolveConfigPath(configPathArg);
|
|
24
|
+
// Load configuration
|
|
25
|
+
const config = loadConfig(configPath);
|
|
26
|
+
// Ensure data directory exists
|
|
27
|
+
mkdirSync(config.dataPath, { recursive: true });
|
|
28
|
+
// Initialize database
|
|
29
|
+
const dbPath = resolve(config.dataPath, 'documents.sqlite');
|
|
30
|
+
db = initializeDatabase(dbPath);
|
|
31
|
+
createSchema(db);
|
|
32
|
+
console.error(`Database initialized at ${dbPath}`);
|
|
33
|
+
// Load coordination state
|
|
34
|
+
const coordination = await readCoordination(config.coordinationPath);
|
|
35
|
+
console.error(`Coordination state loaded from ${config.coordinationPath}`);
|
|
36
|
+
// Get all paths and extensions to index
|
|
37
|
+
const docsPaths = getAllDocsPaths(config);
|
|
38
|
+
const fileExtensions = getFileExtensions(config);
|
|
39
|
+
const ignorePatterns = ['.git', 'node_modules', '.tmp'];
|
|
40
|
+
// Initial indexing
|
|
41
|
+
const result = await indexAllPaths(db, docsPaths, fileExtensions, ignorePatterns);
|
|
42
|
+
console.error(`Indexed ${result.indexed} documents (${result.updated} updated, ${result.skipped} skipped)`);
|
|
43
|
+
console.error(`Paths: ${docsPaths.join(', ')}`);
|
|
44
|
+
console.error(`Extensions: ${fileExtensions.join(', ')}`);
|
|
45
|
+
if (result.errors.length > 0) {
|
|
46
|
+
console.error(`Indexing errors: ${result.errors.length}`);
|
|
47
|
+
for (const err of result.errors) {
|
|
48
|
+
console.error(` - ${err.path}: ${err.error}`);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
// Capture db reference for watcher callback
|
|
52
|
+
const dbRef = db;
|
|
53
|
+
// Start file watcher
|
|
54
|
+
watcher = startWatcher(docsPaths, async (path, event) => {
|
|
55
|
+
if (event === 'unlink') {
|
|
56
|
+
await removeDocument(dbRef, path);
|
|
57
|
+
console.error(`Removed document: ${path}`);
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
await indexDocument(dbRef, path);
|
|
61
|
+
console.error(`Indexed document: ${path} (${event})`);
|
|
62
|
+
}
|
|
63
|
+
}, fileExtensions, ignorePatterns, config.debounceDelay);
|
|
64
|
+
console.error(`File watcher started for ${docsPaths.length} path(s)`);
|
|
65
|
+
// Create and start server
|
|
66
|
+
const server = createServer(config, db, coordination);
|
|
67
|
+
await startServer(server, async () => {
|
|
68
|
+
// Graceful shutdown callback
|
|
69
|
+
if (watcher) {
|
|
70
|
+
await stopWatcher(watcher);
|
|
71
|
+
console.error('File watcher stopped');
|
|
72
|
+
watcher = null;
|
|
73
|
+
}
|
|
74
|
+
if (db) {
|
|
75
|
+
db.close();
|
|
76
|
+
console.error('Database connection closed');
|
|
77
|
+
db = null;
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=server-main.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-main.js","sourceRoot":"","sources":["../src/server-main.ts"],"names":[],"mappings":"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"}
|
package/dist/server.js
CHANGED
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAKjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAC1B,MAAoB,EACpB,EAAgB,EAChB,YAA+B;IAE/B,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Global color theme following Radix color principles.
|
|
3
|
+
*
|
|
4
|
+
* Radix-inspired palette:
|
|
5
|
+
* - Neutral grays for text hierarchy
|
|
6
|
+
* - Semantic colors for status/meaning
|
|
7
|
+
* - Consistent contrast ratios
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Text color roles following Radix principles.
|
|
11
|
+
* Radix uses scales 1-12 where higher numbers are lighter.
|
|
12
|
+
* For terminal, we map to available Ink/chalk colors.
|
|
13
|
+
*/
|
|
14
|
+
export declare const textColors: {
|
|
15
|
+
/** Primary text - highest contrast (Radix gray 12) */
|
|
16
|
+
readonly primary: "white";
|
|
17
|
+
/** Secondary text - medium contrast, readable (Radix gray 9-10) */
|
|
18
|
+
readonly secondary: string | undefined;
|
|
19
|
+
/** Muted text - lower contrast for less important info (Radix gray 7-8) */
|
|
20
|
+
readonly muted: "gray";
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Semantic status colors following Radix palette.
|
|
24
|
+
* Radix recommends:
|
|
25
|
+
* - Success: green/teal
|
|
26
|
+
* - Warning: yellow/amber
|
|
27
|
+
* - Error: red/ruby
|
|
28
|
+
* - Info: blue/indigo
|
|
29
|
+
*/
|
|
30
|
+
export declare const statusColors: {
|
|
31
|
+
/** Success/Complete status */
|
|
32
|
+
readonly success: "green";
|
|
33
|
+
/** Warning/In Progress status */
|
|
34
|
+
readonly warning: "yellow";
|
|
35
|
+
/** Error/Blocked status */
|
|
36
|
+
readonly error: "red";
|
|
37
|
+
/** Info/Neutral status */
|
|
38
|
+
readonly info: "blue";
|
|
39
|
+
/** Default/Unknown status */
|
|
40
|
+
readonly default: "white";
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* Work type colors following Radix semantic approach.
|
|
44
|
+
*/
|
|
45
|
+
export declare const workTypeColors: {
|
|
46
|
+
readonly feature: "cyan";
|
|
47
|
+
readonly bug: "red";
|
|
48
|
+
readonly refactor: "yellow";
|
|
49
|
+
readonly docs: "blue";
|
|
50
|
+
readonly unknown: "gray";
|
|
51
|
+
};
|
|
52
|
+
/**
|
|
53
|
+
* Get status color based on status value.
|
|
54
|
+
*/
|
|
55
|
+
export declare function getStatusColor(status: 'GAP' | 'WIP' | 'PASS' | 'BLOCKED'): string;
|
|
56
|
+
/**
|
|
57
|
+
* Get work type color.
|
|
58
|
+
*/
|
|
59
|
+
export declare function getWorkTypeColor(workType: 'feature' | 'bug' | 'refactor' | 'docs' | 'unknown'): string;
|
|
60
|
+
/**
|
|
61
|
+
* Get score color based on percentage (for progress indicators).
|
|
62
|
+
*/
|
|
63
|
+
export declare function getScoreColor(score: number, max: number): string;
|
|
64
|
+
//# sourceMappingURL=colors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"colors.d.ts","sourceRoot":"","sources":["../../src/theme/colors.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;;GAIG;AACH,eAAO,MAAM,UAAU;IACrB,sDAAsD;;IAEtD,mEAAmE;wBAC3C,MAAM,GAAG,SAAS;IAC1C,2EAA2E;;CAEnE,CAAC;AAEX;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY;IACvB,8BAA8B;;IAE9B,iCAAiC;;IAEjC,2BAA2B;;IAE3B,0BAA0B;;IAE1B,6BAA6B;;CAErB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;;CAMjB,CAAC;AAEX;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAYjF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,SAAS,GAAG,KAAK,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,GAC5D,MAAM,CAER;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAKhE"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Global color theme following Radix color principles.
|
|
3
|
+
*
|
|
4
|
+
* Radix-inspired palette:
|
|
5
|
+
* - Neutral grays for text hierarchy
|
|
6
|
+
* - Semantic colors for status/meaning
|
|
7
|
+
* - Consistent contrast ratios
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Text color roles following Radix principles.
|
|
11
|
+
* Radix uses scales 1-12 where higher numbers are lighter.
|
|
12
|
+
* For terminal, we map to available Ink/chalk colors.
|
|
13
|
+
*/
|
|
14
|
+
export const textColors = {
|
|
15
|
+
/** Primary text - highest contrast (Radix gray 12) */
|
|
16
|
+
primary: 'white',
|
|
17
|
+
/** Secondary text - medium contrast, readable (Radix gray 9-10) */
|
|
18
|
+
secondary: undefined, // Use dimColor prop instead
|
|
19
|
+
/** Muted text - lower contrast for less important info (Radix gray 7-8) */
|
|
20
|
+
muted: 'gray',
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Semantic status colors following Radix palette.
|
|
24
|
+
* Radix recommends:
|
|
25
|
+
* - Success: green/teal
|
|
26
|
+
* - Warning: yellow/amber
|
|
27
|
+
* - Error: red/ruby
|
|
28
|
+
* - Info: blue/indigo
|
|
29
|
+
*/
|
|
30
|
+
export const statusColors = {
|
|
31
|
+
/** Success/Complete status */
|
|
32
|
+
success: 'green',
|
|
33
|
+
/** Warning/In Progress status */
|
|
34
|
+
warning: 'yellow',
|
|
35
|
+
/** Error/Blocked status */
|
|
36
|
+
error: 'red',
|
|
37
|
+
/** Info/Neutral status */
|
|
38
|
+
info: 'blue',
|
|
39
|
+
/** Default/Unknown status */
|
|
40
|
+
default: 'white',
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* Work type colors following Radix semantic approach.
|
|
44
|
+
*/
|
|
45
|
+
export const workTypeColors = {
|
|
46
|
+
feature: 'cyan', // Info variant
|
|
47
|
+
bug: 'red', // Error variant
|
|
48
|
+
refactor: 'yellow', // Warning variant
|
|
49
|
+
docs: 'blue', // Info
|
|
50
|
+
unknown: 'gray', // Muted
|
|
51
|
+
};
|
|
52
|
+
/**
|
|
53
|
+
* Get status color based on status value.
|
|
54
|
+
*/
|
|
55
|
+
export function getStatusColor(status) {
|
|
56
|
+
switch (status) {
|
|
57
|
+
case 'PASS':
|
|
58
|
+
return statusColors.success;
|
|
59
|
+
case 'WIP':
|
|
60
|
+
return statusColors.warning;
|
|
61
|
+
case 'BLOCKED':
|
|
62
|
+
return statusColors.error;
|
|
63
|
+
case 'GAP':
|
|
64
|
+
default:
|
|
65
|
+
return statusColors.default;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Get work type color.
|
|
70
|
+
*/
|
|
71
|
+
export function getWorkTypeColor(workType) {
|
|
72
|
+
return workTypeColors[workType];
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Get score color based on percentage (for progress indicators).
|
|
76
|
+
*/
|
|
77
|
+
export function getScoreColor(score, max) {
|
|
78
|
+
const percentage = (score / max) * 100;
|
|
79
|
+
if (percentage >= 80)
|
|
80
|
+
return statusColors.success;
|
|
81
|
+
if (percentage >= 50)
|
|
82
|
+
return statusColors.warning;
|
|
83
|
+
return statusColors.error;
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=colors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"colors.js","sourceRoot":"","sources":["../../src/theme/colors.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,sDAAsD;IACtD,OAAO,EAAE,OAAO;IAChB,mEAAmE;IACnE,SAAS,EAAE,SAA+B,EAAE,4BAA4B;IACxE,2EAA2E;IAC3E,KAAK,EAAE,MAAM;CACL,CAAC;AAEX;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,8BAA8B;IAC9B,OAAO,EAAE,OAAO;IAChB,iCAAiC;IACjC,OAAO,EAAE,QAAQ;IACjB,2BAA2B;IAC3B,KAAK,EAAE,KAAK;IACZ,0BAA0B;IAC1B,IAAI,EAAE,MAAM;IACZ,6BAA6B;IAC7B,OAAO,EAAE,OAAO;CACR,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,OAAO,EAAE,MAAM,EAAE,eAAe;IAChC,GAAG,EAAE,KAAK,EAAE,gBAAgB;IAC5B,QAAQ,EAAE,QAAQ,EAAE,kBAAkB;IACtC,IAAI,EAAE,MAAM,EAAE,OAAO;IACrB,OAAO,EAAE,MAAM,EAAE,QAAQ;CACjB,CAAC;AAEX;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,MAA0C;IACvE,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,MAAM;YACT,OAAO,YAAY,CAAC,OAAO,CAAC;QAC9B,KAAK,KAAK;YACR,OAAO,YAAY,CAAC,OAAO,CAAC;QAC9B,KAAK,SAAS;YACZ,OAAO,YAAY,CAAC,KAAK,CAAC;QAC5B,KAAK,KAAK,CAAC;QACX;YACE,OAAO,YAAY,CAAC,OAAO,CAAC;IAChC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,QAA6D;IAE7D,OAAO,cAAc,CAAC,QAAQ,CAAC,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,KAAa,EAAE,GAAW;IACtD,MAAM,UAAU,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;IACvC,IAAI,UAAU,IAAI,EAAE;QAAE,OAAO,YAAY,CAAC,OAAO,CAAC;IAClD,IAAI,UAAU,IAAI,EAAE;QAAE,OAAO,YAAY,CAAC,OAAO,CAAC;IAClD,OAAO,YAAY,CAAC,KAAK,CAAC;AAC5B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/theme/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/theme/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,aAAa,CAAC"}
|
|
@@ -6,16 +6,13 @@ import type { ToolContext, ToolResult } from '../types.js';
|
|
|
6
6
|
export declare const ClaimTaskInputSchema: z.ZodObject<{
|
|
7
7
|
taskId: z.ZodString;
|
|
8
8
|
agentId: z.ZodString;
|
|
9
|
-
persona: z.ZodOptional<z.ZodEnum<
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
agentId: string;
|
|
17
|
-
persona?: "coder" | "reviewer" | "pm" | "customer" | undefined;
|
|
18
|
-
}>;
|
|
9
|
+
persona: z.ZodOptional<z.ZodEnum<{
|
|
10
|
+
coder: "coder";
|
|
11
|
+
reviewer: "reviewer";
|
|
12
|
+
pm: "pm";
|
|
13
|
+
customer: "customer";
|
|
14
|
+
}>>;
|
|
15
|
+
}, z.core.$strip>;
|
|
19
16
|
/**
|
|
20
17
|
* Handle claim_task tool request.
|
|
21
18
|
* Marks a task as in-progress by a specific agent with file locks.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claim-task.d.ts","sourceRoot":"","sources":["../../src/tools/claim-task.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE3D;;GAEG;AACH,eAAO,MAAM,oBAAoB
|
|
1
|
+
{"version":3,"file":"claim-task.d.ts","sourceRoot":"","sources":["../../src/tools/claim-task.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE3D;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;iBAI/B,CAAC;AAiHH;;;;;;;GAOG;AACH,wBAAsB,eAAe,CACnC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,EAC3C,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC,CAgMrB"}
|
|
@@ -10,16 +10,13 @@ import type { ToolContext, ToolResult } from '../types.js';
|
|
|
10
10
|
export declare const CreateDocInputSchema: z.ZodObject<{
|
|
11
11
|
path: z.ZodString;
|
|
12
12
|
content: z.ZodString;
|
|
13
|
-
template: z.ZodDefault<z.ZodEnum<
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
content: string;
|
|
21
|
-
template?: "none" | "research" | "addendum" | "example" | undefined;
|
|
22
|
-
}>;
|
|
13
|
+
template: z.ZodDefault<z.ZodEnum<{
|
|
14
|
+
none: "none";
|
|
15
|
+
research: "research";
|
|
16
|
+
addendum: "addendum";
|
|
17
|
+
example: "example";
|
|
18
|
+
}>>;
|
|
19
|
+
}, z.core.$strip>;
|
|
23
20
|
export type CreateDocInput = z.infer<typeof CreateDocInputSchema>;
|
|
24
21
|
/**
|
|
25
22
|
* Output interface for create_doc tool.
|