@sudosandwich/limps 3.2.0 → 3.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (242) hide show
  1. package/README.md +165 -70
  2. package/dist/agent-parser.d.ts +1 -1
  3. package/dist/agent-parser.d.ts.map +1 -1
  4. package/dist/agent-parser.js +8 -4
  5. package/dist/agent-parser.js.map +1 -1
  6. package/dist/cli/config-cmd.js +1 -1
  7. package/dist/cli/config-cmd.js.map +1 -1
  8. package/dist/cli/docs-create.d.ts +34 -0
  9. package/dist/cli/docs-create.d.ts.map +1 -0
  10. package/dist/cli/docs-create.js +70 -0
  11. package/dist/cli/docs-create.js.map +1 -0
  12. package/dist/cli/docs-delete.d.ts +34 -0
  13. package/dist/cli/docs-delete.d.ts.map +1 -0
  14. package/dist/cli/docs-delete.js +84 -0
  15. package/dist/cli/docs-delete.js.map +1 -0
  16. package/dist/cli/docs-list.d.ts +35 -0
  17. package/dist/cli/docs-list.d.ts.map +1 -0
  18. package/dist/cli/docs-list.js +91 -0
  19. package/dist/cli/docs-list.js.map +1 -0
  20. package/dist/cli/docs-search.d.ts +35 -0
  21. package/dist/cli/docs-search.d.ts.map +1 -0
  22. package/dist/cli/docs-search.js +99 -0
  23. package/dist/cli/docs-search.js.map +1 -0
  24. package/dist/cli/docs-update.d.ts +40 -0
  25. package/dist/cli/docs-update.d.ts.map +1 -0
  26. package/dist/cli/docs-update.js +75 -0
  27. package/dist/cli/docs-update.js.map +1 -0
  28. package/dist/cli/init-project.js +4 -4
  29. package/dist/cli/init-project.js.map +1 -1
  30. package/dist/cli/next-task.js +1 -1
  31. package/dist/cli/next-task.js.map +1 -1
  32. package/dist/cli/status.d.ts +13 -0
  33. package/dist/cli/status.d.ts.map +1 -1
  34. package/dist/cli/status.js +64 -1
  35. package/dist/cli/status.js.map +1 -1
  36. package/dist/cli.js +22 -4
  37. package/dist/cli.js.map +1 -1
  38. package/dist/commands/completion.d.ts +13 -0
  39. package/dist/commands/completion.d.ts.map +1 -0
  40. package/dist/commands/completion.js +27 -0
  41. package/dist/commands/completion.js.map +1 -0
  42. package/dist/commands/config/index.d.ts.map +1 -1
  43. package/dist/commands/config/index.js +1 -0
  44. package/dist/commands/config/index.js.map +1 -1
  45. package/dist/commands/config/show-resolution.d.ts +11 -0
  46. package/dist/commands/config/show-resolution.d.ts.map +1 -0
  47. package/dist/commands/config/show-resolution.js +114 -0
  48. package/dist/commands/config/show-resolution.js.map +1 -0
  49. package/dist/commands/docs/create.d.ts +21 -0
  50. package/dist/commands/docs/create.d.ts.map +1 -0
  51. package/dist/commands/docs/create.js +96 -0
  52. package/dist/commands/docs/create.js.map +1 -0
  53. package/dist/commands/docs/delete.d.ts +16 -0
  54. package/dist/commands/docs/delete.d.ts.map +1 -0
  55. package/dist/commands/docs/delete.js +94 -0
  56. package/dist/commands/docs/delete.js.map +1 -0
  57. package/dist/commands/docs/index.d.ts +3 -0
  58. package/dist/commands/docs/index.d.ts.map +1 -0
  59. package/dist/commands/docs/index.js +39 -0
  60. package/dist/commands/docs/index.js.map +1 -0
  61. package/dist/commands/docs/list.d.ts +18 -0
  62. package/dist/commands/docs/list.d.ts.map +1 -0
  63. package/dist/commands/docs/list.js +80 -0
  64. package/dist/commands/docs/list.js.map +1 -0
  65. package/dist/commands/docs/process.d.ts +20 -0
  66. package/dist/commands/docs/process.d.ts.map +1 -0
  67. package/dist/commands/docs/process.js +254 -0
  68. package/dist/commands/docs/process.js.map +1 -0
  69. package/dist/commands/docs/reindex.d.ts.map +1 -0
  70. package/dist/commands/{reindex.js → docs/reindex.js} +4 -5
  71. package/dist/commands/docs/reindex.js.map +1 -0
  72. package/dist/commands/docs/search.d.ts +17 -0
  73. package/dist/commands/docs/search.d.ts.map +1 -0
  74. package/dist/commands/docs/search.js +106 -0
  75. package/dist/commands/docs/search.js.map +1 -0
  76. package/dist/commands/docs/tags/add.d.ts +16 -0
  77. package/dist/commands/docs/tags/add.d.ts.map +1 -0
  78. package/dist/commands/docs/tags/add.js +117 -0
  79. package/dist/commands/docs/tags/add.js.map +1 -0
  80. package/dist/commands/docs/tags/index.d.ts +3 -0
  81. package/dist/commands/docs/tags/index.d.ts.map +1 -0
  82. package/dist/commands/docs/tags/index.js +33 -0
  83. package/dist/commands/docs/tags/index.js.map +1 -0
  84. package/dist/commands/docs/tags/list.d.ts +15 -0
  85. package/dist/commands/docs/tags/list.d.ts.map +1 -0
  86. package/dist/commands/docs/tags/list.js +108 -0
  87. package/dist/commands/docs/tags/list.js.map +1 -0
  88. package/dist/commands/docs/tags/remove.d.ts +16 -0
  89. package/dist/commands/docs/tags/remove.d.ts.map +1 -0
  90. package/dist/commands/docs/tags/remove.js +117 -0
  91. package/dist/commands/docs/tags/remove.js.map +1 -0
  92. package/dist/commands/docs/update.d.ts +23 -0
  93. package/dist/commands/docs/update.d.ts.map +1 -0
  94. package/dist/commands/docs/update.js +141 -0
  95. package/dist/commands/docs/update.js.map +1 -0
  96. package/dist/commands/index.d.ts.map +1 -1
  97. package/dist/commands/index.js +1 -1
  98. package/dist/commands/index.js.map +1 -1
  99. package/dist/commands/{list-agents.d.ts → plan/agents.d.ts} +1 -1
  100. package/dist/commands/plan/agents.d.ts.map +1 -0
  101. package/dist/commands/{list-agents.js → plan/agents.js} +12 -15
  102. package/dist/commands/plan/agents.js.map +1 -0
  103. package/dist/commands/plan/create.d.ts +15 -0
  104. package/dist/commands/plan/create.d.ts.map +1 -0
  105. package/dist/commands/plan/create.js +71 -0
  106. package/dist/commands/plan/create.js.map +1 -0
  107. package/dist/commands/plan/index.d.ts +3 -0
  108. package/dist/commands/plan/index.d.ts.map +1 -0
  109. package/dist/commands/plan/index.js +39 -0
  110. package/dist/commands/plan/index.js.map +1 -0
  111. package/dist/commands/{list-plans.d.ts → plan/list.d.ts} +1 -1
  112. package/dist/commands/plan/list.d.ts.map +1 -0
  113. package/dist/commands/{list-plans.js → plan/list.js} +7 -10
  114. package/dist/commands/plan/list.js.map +1 -0
  115. package/dist/commands/{next-task.d.ts → plan/next.d.ts} +1 -1
  116. package/dist/commands/plan/next.d.ts.map +1 -0
  117. package/dist/commands/{next-task.js → plan/next.js} +10 -13
  118. package/dist/commands/plan/next.js.map +1 -0
  119. package/dist/commands/{repair-plans.d.ts → plan/repair.d.ts} +1 -1
  120. package/dist/commands/plan/repair.d.ts.map +1 -0
  121. package/dist/commands/{repair-plans.js → plan/repair.js} +6 -8
  122. package/dist/commands/plan/repair.js.map +1 -0
  123. package/dist/commands/{score-task.d.ts → plan/score.d.ts} +5 -3
  124. package/dist/commands/plan/score.d.ts.map +1 -0
  125. package/dist/commands/{score-task.js → plan/score.js} +44 -22
  126. package/dist/commands/plan/score.js.map +1 -0
  127. package/dist/commands/{score-all.d.ts → plan/scores.d.ts} +3 -2
  128. package/dist/commands/plan/scores.d.ts.map +1 -0
  129. package/dist/commands/{score-all.js → plan/scores.js} +27 -20
  130. package/dist/commands/plan/scores.js.map +1 -0
  131. package/dist/commands/{status.d.ts → plan/status.d.ts} +7 -0
  132. package/dist/commands/plan/status.d.ts.map +1 -0
  133. package/dist/commands/plan/status.js +205 -0
  134. package/dist/commands/plan/status.js.map +1 -0
  135. package/dist/commands/{serve.d.ts → server/bridge.d.ts} +1 -1
  136. package/dist/commands/server/bridge.d.ts.map +1 -0
  137. package/dist/commands/{serve.js → server/bridge.js} +9 -9
  138. package/dist/commands/server/bridge.js.map +1 -0
  139. package/dist/commands/server/index.d.ts +3 -0
  140. package/dist/commands/server/index.d.ts.map +1 -0
  141. package/dist/commands/server/index.js +35 -0
  142. package/dist/commands/server/index.js.map +1 -0
  143. package/dist/commands/server/start.d.ts.map +1 -0
  144. package/dist/commands/{start.js → server/start.js} +35 -19
  145. package/dist/commands/server/start.js.map +1 -0
  146. package/dist/commands/{status-server.d.ts → server/status.d.ts} +1 -1
  147. package/dist/commands/server/status.d.ts.map +1 -0
  148. package/dist/commands/{status-server.js → server/status.js} +40 -22
  149. package/dist/commands/server/status.js.map +1 -0
  150. package/dist/commands/server/stop.d.ts.map +1 -0
  151. package/dist/commands/{stop.js → server/stop.js} +4 -5
  152. package/dist/commands/server/stop.js.map +1 -0
  153. package/dist/core/command-context.d.ts +7 -0
  154. package/dist/core/command-context.d.ts.map +1 -0
  155. package/dist/core/command-context.js +8 -0
  156. package/dist/core/command-context.js.map +1 -0
  157. package/dist/core/completion.d.ts +7 -0
  158. package/dist/core/completion.d.ts.map +1 -0
  159. package/dist/core/completion.js +273 -0
  160. package/dist/core/completion.js.map +1 -0
  161. package/dist/core/task-target.d.ts +3 -0
  162. package/dist/core/task-target.d.ts.map +1 -0
  163. package/dist/core/task-target.js +9 -0
  164. package/dist/core/task-target.js.map +1 -0
  165. package/dist/extensions/context.d.ts.map +1 -1
  166. package/dist/extensions/context.js +10 -8
  167. package/dist/extensions/context.js.map +1 -1
  168. package/dist/extensions/loader.d.ts.map +1 -1
  169. package/dist/extensions/loader.js +3 -2
  170. package/dist/extensions/loader.js.map +1 -1
  171. package/dist/index.js +2 -1
  172. package/dist/index.js.map +1 -1
  173. package/dist/pidfile.d.ts +1 -0
  174. package/dist/pidfile.d.ts.map +1 -1
  175. package/dist/pidfile.js +4 -1
  176. package/dist/pidfile.js.map +1 -1
  177. package/dist/server-http-entry.d.ts +1 -1
  178. package/dist/server-http-entry.js +40 -7
  179. package/dist/server-http-entry.js.map +1 -1
  180. package/dist/server-http.d.ts +11 -1
  181. package/dist/server-http.d.ts.map +1 -1
  182. package/dist/server-http.js +34 -12
  183. package/dist/server-http.js.map +1 -1
  184. package/dist/server-main.d.ts.map +1 -1
  185. package/dist/server-main.js +2 -1
  186. package/dist/server-main.js.map +1 -1
  187. package/dist/server.d.ts.map +1 -1
  188. package/dist/server.js +8 -7
  189. package/dist/server.js.map +1 -1
  190. package/dist/tools/create-plan.d.ts +1 -0
  191. package/dist/tools/create-plan.d.ts.map +1 -1
  192. package/dist/tools/create-plan.js +20 -6
  193. package/dist/tools/create-plan.js.map +1 -1
  194. package/dist/tools/index.js +1 -1
  195. package/dist/tools/index.js.map +1 -1
  196. package/dist/tools/update-task-status.d.ts +1 -1
  197. package/dist/tools/update-task-status.d.ts.map +1 -1
  198. package/dist/tools/update-task-status.js +17 -187
  199. package/dist/tools/update-task-status.js.map +1 -1
  200. package/dist/utils/config-resolver.d.ts +1 -1
  201. package/dist/utils/config-resolver.d.ts.map +1 -1
  202. package/dist/utils/config-resolver.js +6 -4
  203. package/dist/utils/config-resolver.js.map +1 -1
  204. package/dist/utils/daemon-log.d.ts +13 -0
  205. package/dist/utils/daemon-log.d.ts.map +1 -0
  206. package/dist/utils/daemon-log.js +27 -0
  207. package/dist/utils/daemon-log.js.map +1 -0
  208. package/dist/utils/daemon-manager.js +1 -1
  209. package/dist/utils/daemon-manager.js.map +1 -1
  210. package/dist/utils/safe-logging.d.ts +24 -0
  211. package/dist/utils/safe-logging.d.ts.map +1 -0
  212. package/dist/utils/safe-logging.js +88 -0
  213. package/dist/utils/safe-logging.js.map +1 -0
  214. package/package.json +2 -2
  215. package/dist/commands/list-agents.d.ts.map +0 -1
  216. package/dist/commands/list-agents.js.map +0 -1
  217. package/dist/commands/list-plans.d.ts.map +0 -1
  218. package/dist/commands/list-plans.js.map +0 -1
  219. package/dist/commands/next-task.d.ts.map +0 -1
  220. package/dist/commands/next-task.js.map +0 -1
  221. package/dist/commands/reindex.d.ts.map +0 -1
  222. package/dist/commands/reindex.js.map +0 -1
  223. package/dist/commands/repair-plans.d.ts.map +0 -1
  224. package/dist/commands/repair-plans.js.map +0 -1
  225. package/dist/commands/score-all.d.ts.map +0 -1
  226. package/dist/commands/score-all.js.map +0 -1
  227. package/dist/commands/score-task.d.ts.map +0 -1
  228. package/dist/commands/score-task.js.map +0 -1
  229. package/dist/commands/serve.d.ts.map +0 -1
  230. package/dist/commands/serve.js.map +0 -1
  231. package/dist/commands/start.d.ts.map +0 -1
  232. package/dist/commands/start.js.map +0 -1
  233. package/dist/commands/status-server.d.ts.map +0 -1
  234. package/dist/commands/status-server.js.map +0 -1
  235. package/dist/commands/status.d.ts.map +0 -1
  236. package/dist/commands/status.js +0 -131
  237. package/dist/commands/status.js.map +0 -1
  238. package/dist/commands/stop.d.ts.map +0 -1
  239. package/dist/commands/stop.js.map +0 -1
  240. /package/dist/commands/{reindex.d.ts → docs/reindex.d.ts} +0 -0
  241. /package/dist/commands/{start.d.ts → server/start.d.ts} +0 -0
  242. /package/dist/commands/{stop.d.ts → server/stop.d.ts} +0 -0
@@ -0,0 +1,254 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useState } from 'react';
3
+ import { Text, Box } from 'ink';
4
+ import { z } from 'zod';
5
+ import { loadCommandContext } from '../../core/command-context.js';
6
+ import { buildHelpOutput } from '../../utils/cli-help.js';
7
+ import { handleJsonOutput, isJsonMode, outputJson, wrapError } from '../../cli/json-output.js';
8
+ import { handleProcessDoc, ProcessDocInputSchema, } from '../../tools/process-doc.js';
9
+ import { handleProcessDocs, ProcessDocsInputSchema, } from '../../tools/process-docs.js';
10
+ import { initializeDatabase, createSchema } from '../../indexer.js';
11
+ import { join } from 'path';
12
+ import { mkdirSync } from 'fs';
13
+ export const description = 'Process document(s) with JavaScript code';
14
+ export const args = z.tuple([z.string().describe('Document path').optional()]);
15
+ export const options = z.object({
16
+ config: z.string().optional().describe('Path to config file'),
17
+ pattern: z
18
+ .string()
19
+ .optional()
20
+ .describe('Glob pattern for multiple documents (e.g., "plans/*/*-plan.md")'),
21
+ code: z.string().describe('JavaScript code to execute'),
22
+ json: z.boolean().optional().describe('Output as JSON'),
23
+ timeout: z.number().optional().describe('Execution timeout in milliseconds (default: 5000)'),
24
+ 'max-docs': z.number().optional().describe('Maximum documents to load (default: 20)'),
25
+ pretty: z.boolean().optional().describe('Pretty-print JSON output'),
26
+ });
27
+ export default function ProcessCommand({ args, options }) {
28
+ const [path] = args;
29
+ const [result, setResult] = useState(null);
30
+ const [error, setError] = useState(null);
31
+ const help = buildHelpOutput({
32
+ usage: 'limps docs process <path> | limps docs process --pattern <glob> --code <code> [options]',
33
+ arguments: ['path Optional document path (mutually exclusive with --pattern)'],
34
+ options: [
35
+ '--config Path to config file',
36
+ '--pattern Glob pattern for multiple documents',
37
+ '--code JavaScript code to execute (required)',
38
+ '--json Output as JSON',
39
+ '--timeout Execution timeout in milliseconds (default: 5000)',
40
+ '--max-docs Maximum documents to load (default: 20)',
41
+ '--pretty Pretty-print JSON output',
42
+ ],
43
+ sections: [
44
+ {
45
+ title: 'Single Document Examples',
46
+ lines: [
47
+ 'limps docs process plans/0001-feature/plan.md --code "doc.content.length"',
48
+ 'limps docs process plan.md --code "extractFrontmatter(doc.content).meta.name"',
49
+ ],
50
+ },
51
+ {
52
+ title: 'Multiple Documents Examples',
53
+ lines: [
54
+ 'limps docs process --pattern "plans/*/*-plan.md" --code "docs.length"',
55
+ 'limps docs process --pattern "**/*.md" --code "docs.map(d => d.path)"',
56
+ ],
57
+ },
58
+ ],
59
+ });
60
+ const jsonMode = isJsonMode(options);
61
+ useEffect(() => {
62
+ if (!jsonMode) {
63
+ return undefined;
64
+ }
65
+ const timer = setTimeout(async () => {
66
+ try {
67
+ // Validation: must provide either path or pattern
68
+ if (!path && !options.pattern) {
69
+ outputJson(wrapError('Either path argument or --pattern option is required', {
70
+ code: 'MISSING_INPUT',
71
+ help: help.meta,
72
+ }), 1);
73
+ return;
74
+ }
75
+ // Validation: cannot provide both
76
+ if (path && options.pattern) {
77
+ outputJson(wrapError('Cannot provide both path argument and --pattern option', {
78
+ code: 'CONFLICTING_INPUT',
79
+ help: help.meta,
80
+ }), 1);
81
+ return;
82
+ }
83
+ // Validation: code is required
84
+ if (!options.code) {
85
+ outputJson(wrapError('--code option is required', {
86
+ code: 'MISSING_CODE',
87
+ help: help.meta,
88
+ }), 1);
89
+ return;
90
+ }
91
+ const { config } = loadCommandContext(options.config);
92
+ // Initialize database
93
+ mkdirSync(config.dataPath, { recursive: true });
94
+ const dbPath = join(config.dataPath, 'documents.sqlite');
95
+ const db = initializeDatabase(dbPath);
96
+ createSchema(db);
97
+ const context = { db, config };
98
+ if (path) {
99
+ // Single document processing
100
+ try {
101
+ const input = ProcessDocInputSchema.parse({
102
+ path,
103
+ code: options.code,
104
+ ...(options.timeout !== undefined && { timeout: options.timeout }),
105
+ prettyPrint: options.pretty ?? false,
106
+ });
107
+ const toolResult = await handleProcessDoc(input, context);
108
+ if (toolResult.isError) {
109
+ db.close();
110
+ outputJson(wrapError(toolResult.content[0].text, { code: 'PROCESS_DOC_ERROR' }), 1);
111
+ return;
112
+ }
113
+ const output = JSON.parse(toolResult.content[0].text);
114
+ db.close();
115
+ handleJsonOutput(() => output, 'PROCESS_DOC_ERROR');
116
+ }
117
+ catch (error) {
118
+ db.close();
119
+ throw error;
120
+ }
121
+ }
122
+ else if (options.pattern) {
123
+ // Multiple documents processing
124
+ try {
125
+ const input = ProcessDocsInputSchema.parse({
126
+ pattern: options.pattern,
127
+ code: options.code,
128
+ ...(options.timeout !== undefined && { timeout: options.timeout }),
129
+ ...(options['max-docs'] !== undefined && { max_docs: options['max-docs'] }),
130
+ });
131
+ const toolResult = await handleProcessDocs(input, context);
132
+ if (toolResult.isError) {
133
+ db.close();
134
+ outputJson(wrapError(toolResult.content[0].text, { code: 'PROCESS_DOCS_ERROR' }), 1);
135
+ return;
136
+ }
137
+ const output = JSON.parse(toolResult.content[0].text);
138
+ db.close();
139
+ handleJsonOutput(() => output, 'PROCESS_DOCS_ERROR');
140
+ }
141
+ catch (error) {
142
+ db.close();
143
+ throw error;
144
+ }
145
+ }
146
+ }
147
+ catch (err) {
148
+ outputJson(wrapError(err instanceof Error ? err.message : String(err), {
149
+ code: 'PROCESS_ERROR',
150
+ }), 1);
151
+ }
152
+ }, 0);
153
+ return () => clearTimeout(timer);
154
+ }, [jsonMode, path, options, help.meta]);
155
+ useEffect(() => {
156
+ if (jsonMode) {
157
+ return undefined;
158
+ }
159
+ const run = async () => {
160
+ let db = null;
161
+ try {
162
+ // Validation: must provide either path or pattern
163
+ if (!path && !options.pattern) {
164
+ setError('Either path argument or --pattern option is required');
165
+ return;
166
+ }
167
+ // Validation: cannot provide both
168
+ if (path && options.pattern) {
169
+ setError('Cannot provide both path argument and --pattern option');
170
+ return;
171
+ }
172
+ // Validation: code is required
173
+ if (!options.code) {
174
+ setError('--code option is required');
175
+ return;
176
+ }
177
+ const { config } = loadCommandContext(options.config);
178
+ // Initialize database
179
+ mkdirSync(config.dataPath, { recursive: true });
180
+ const dbPath = join(config.dataPath, 'documents.sqlite');
181
+ db = initializeDatabase(dbPath);
182
+ createSchema(db);
183
+ const context = { db, config };
184
+ if (path) {
185
+ // Single document processing
186
+ const input = ProcessDocInputSchema.parse({
187
+ path,
188
+ code: options.code,
189
+ ...(options.timeout !== undefined && { timeout: options.timeout }),
190
+ prettyPrint: options.pretty ?? false,
191
+ });
192
+ const toolResult = await handleProcessDoc(input, context);
193
+ if (toolResult.isError) {
194
+ setError(toolResult.content[0].text);
195
+ return;
196
+ }
197
+ const output = JSON.parse(toolResult.content[0].text);
198
+ setResult(output);
199
+ }
200
+ else if (options.pattern) {
201
+ // Multiple documents processing
202
+ const input = ProcessDocsInputSchema.parse({
203
+ pattern: options.pattern,
204
+ code: options.code,
205
+ ...(options.timeout !== undefined && { timeout: options.timeout }),
206
+ ...(options['max-docs'] !== undefined && { max_docs: options['max-docs'] }),
207
+ });
208
+ const toolResult = await handleProcessDocs(input, context);
209
+ if (toolResult.isError) {
210
+ setError(toolResult.content[0].text);
211
+ return;
212
+ }
213
+ const output = JSON.parse(toolResult.content[0].text);
214
+ setResult(output);
215
+ }
216
+ }
217
+ catch (err) {
218
+ setError(err.message);
219
+ }
220
+ finally {
221
+ if (db) {
222
+ db.close();
223
+ }
224
+ }
225
+ };
226
+ void run();
227
+ return undefined;
228
+ }, [path, options, jsonMode]);
229
+ if (jsonMode) {
230
+ return null;
231
+ }
232
+ if (!options.code) {
233
+ return _jsx(Text, { children: help.text });
234
+ }
235
+ if (!path && !options.pattern) {
236
+ return _jsx(Text, { children: help.text });
237
+ }
238
+ if (error) {
239
+ return _jsx(Text, { color: "red", children: error });
240
+ }
241
+ if (!result) {
242
+ return _jsx(Text, { children: "Processing..." });
243
+ }
244
+ // Display result based on type
245
+ if ('docs_loaded' in result) {
246
+ // ProcessDocsOutput
247
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { color: "green", children: ["\u2713 Processed ", result.docs_loaded, " documents"] }), _jsxs(Text, { dimColor: true, children: ["Execution time: ", result.execution_time_ms, "ms"] }), _jsxs(Text, { children: ['\n', "Result:"] }), _jsx(Text, { children: JSON.stringify(result.result, null, options.pretty ? 2 : undefined) })] }));
248
+ }
249
+ else {
250
+ // ProcessDocOutput
251
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { color: "green", children: ["\u2713 Processed document: ", result.metadata.path] }), _jsxs(Text, { dimColor: true, children: ["Execution time: ", result.execution_time_ms, "ms", result.tokens_saved ? ` | Tokens saved: ~${result.tokens_saved}` : ''] }), _jsxs(Text, { children: ['\n', "Result:"] }), _jsx(Text, { children: JSON.stringify(result.result, null, options.pretty ? 2 : undefined) })] }));
252
+ }
253
+ }
254
+ //# sourceMappingURL=process.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process.js","sourceRoot":"","sources":["../../../src/commands/docs/process.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reindex.d.ts","sourceRoot":"","sources":["../../../src/commands/docs/reindex.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,eAAO,MAAM,WAAW,gDAAgD,CAAC;AAEzE,eAAO,MAAM,OAAO;;iBAElB,CAAC;AAEH,UAAU,KAAK;IACb,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EAAE,OAAO,EAAE,EAAE,KAAK,GAAG,KAAK,CAAC,SAAS,CAkE1E"}
@@ -4,9 +4,9 @@ import { useEffect, useState } from 'react';
4
4
  import { z } from 'zod';
5
5
  import { resolve } from 'path';
6
6
  import { mkdirSync } from 'fs';
7
- import { loadConfig, getAllDocsPaths, getFileExtensions } from '../config.js';
8
- import { resolveConfigPath } from '../utils/config-resolver.js';
9
- import { initializeDatabase, createSchema, clearIndex, indexAllPaths } from '../indexer.js';
7
+ import { getAllDocsPaths, getFileExtensions } from '../../config.js';
8
+ import { loadCommandContext } from '../../core/command-context.js';
9
+ import { initializeDatabase, createSchema, clearIndex, indexAllPaths } from '../../indexer.js';
10
10
  export const description = 'Clear and rebuild the document search index';
11
11
  export const options = z.object({
12
12
  config: z.string().optional().describe('Path to config file'),
@@ -18,8 +18,7 @@ export default function ReindexCommand({ options }) {
18
18
  const run = async () => {
19
19
  let db = null;
20
20
  try {
21
- const configPath = resolveConfigPath(options.config);
22
- const config = loadConfig(configPath);
21
+ const { config } = loadCommandContext(options.config);
23
22
  mkdirSync(config.dataPath, { recursive: true });
24
23
  const dbPath = resolve(config.dataPath, 'documents.sqlite');
25
24
  db = initializeDatabase(dbPath);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reindex.js","sourceRoot":"","sources":["../../../src/commands/docs/reindex.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { z } from 'zod';
2
+ export declare const description = "Search documents using full-text search";
3
+ export declare const args: z.ZodTuple<[z.ZodString], null>;
4
+ export declare const options: z.ZodObject<{
5
+ config: z.ZodOptional<z.ZodString>;
6
+ limit: z.ZodOptional<z.ZodNumber>;
7
+ frontmatter: z.ZodOptional<z.ZodBoolean>;
8
+ caseSensitive: z.ZodOptional<z.ZodBoolean>;
9
+ json: z.ZodOptional<z.ZodBoolean>;
10
+ }, z.core.$strip>;
11
+ interface Props {
12
+ args: z.infer<typeof args>;
13
+ options: z.infer<typeof options>;
14
+ }
15
+ export default function SearchDocsCommand({ args, options }: Props): React.ReactNode;
16
+ export {};
17
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/commands/docs/search.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,WAAW,4CAA4C,CAAC;AAErE,eAAO,MAAM,IAAI,iCAAiD,CAAC;AAEnE,eAAO,MAAM,OAAO;;;;;;iBAMlB,CAAC;AAEH,UAAU,KAAK;IACb,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;IAC3B,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,KAAK,GAAG,KAAK,CAAC,SAAS,CAqGnF"}
@@ -0,0 +1,106 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Text } from 'ink';
3
+ import { useEffect, useState } from 'react';
4
+ import { z } from 'zod';
5
+ import { searchDocs, getSearchDocsData } from '../../cli/docs-search.js';
6
+ import { loadCommandContext } from '../../core/command-context.js';
7
+ import { buildHelpOutput } from '../../utils/cli-help.js';
8
+ import { handleJsonOutput, isJsonMode, outputJson, wrapError } from '../../cli/json-output.js';
9
+ export const description = 'Search documents using full-text search';
10
+ export const args = z.tuple([z.string().describe('search query')]);
11
+ export const options = z.object({
12
+ config: z.string().optional().describe('Path to config file'),
13
+ limit: z.number().int().positive().max(100).optional().describe('Max results (default: 20)'),
14
+ frontmatter: z.boolean().optional().describe('Search in frontmatter'),
15
+ caseSensitive: z.boolean().optional().describe('Case-sensitive search'),
16
+ json: z.boolean().optional().describe('Output as JSON'),
17
+ });
18
+ export default function SearchDocsCommand({ args, options }) {
19
+ const [query] = args;
20
+ const help = buildHelpOutput({
21
+ usage: 'limps docs search <query> [options]',
22
+ arguments: ['query Search query text'],
23
+ options: [
24
+ '--config Path to config file',
25
+ '--limit Max results (default: 20)',
26
+ '--frontmatter Search in frontmatter',
27
+ '--case-sensitive Case-sensitive search',
28
+ '--json Output as JSON',
29
+ ],
30
+ examples: [
31
+ 'limps docs search "authentication"',
32
+ 'limps docs search "API" --limit 10',
33
+ 'limps docs search "status" --frontmatter',
34
+ ],
35
+ });
36
+ const jsonMode = isJsonMode(options);
37
+ useEffect(() => {
38
+ if (!jsonMode) {
39
+ return;
40
+ }
41
+ const timer = setTimeout(() => {
42
+ (async () => {
43
+ try {
44
+ if (!query) {
45
+ outputJson(wrapError('Search query is required', { code: 'MISSING_QUERY', help: help.meta }), 1);
46
+ return;
47
+ }
48
+ const { config } = loadCommandContext(options.config);
49
+ const result = await getSearchDocsData(config, {
50
+ query,
51
+ limit: options.limit,
52
+ searchFrontmatter: options.frontmatter,
53
+ caseSensitive: options.caseSensitive,
54
+ });
55
+ handleJsonOutput(() => {
56
+ if ('error' in result) {
57
+ throw new Error(result.error);
58
+ }
59
+ return result;
60
+ }, 'SEARCH_DOCS_ERROR');
61
+ }
62
+ catch (error) {
63
+ outputJson(wrapError(error instanceof Error ? error.message : String(error), {
64
+ code: 'SEARCH_DOCS_ERROR',
65
+ }), 1);
66
+ }
67
+ })();
68
+ }, 0);
69
+ return () => clearTimeout(timer);
70
+ }, [
71
+ help.meta,
72
+ jsonMode,
73
+ options.config,
74
+ query,
75
+ options.limit,
76
+ options.frontmatter,
77
+ options.caseSensitive,
78
+ ]);
79
+ if (jsonMode) {
80
+ return null;
81
+ }
82
+ if (!query) {
83
+ return _jsx(Text, { children: help.text });
84
+ }
85
+ // Normal Ink rendering
86
+ const [output, setOutput] = useState('Searching...');
87
+ useEffect(() => {
88
+ (async () => {
89
+ try {
90
+ const { config } = loadCommandContext(options.config);
91
+ const result = await searchDocs(config, {
92
+ query,
93
+ limit: options.limit,
94
+ searchFrontmatter: options.frontmatter,
95
+ caseSensitive: options.caseSensitive,
96
+ });
97
+ setOutput(result);
98
+ }
99
+ catch (error) {
100
+ setOutput(`Error: ${error instanceof Error ? error.message : String(error)}`);
101
+ }
102
+ })();
103
+ }, [options.config, query, options.limit, options.frontmatter, options.caseSensitive]);
104
+ return _jsx(Text, { children: output });
105
+ }
106
+ //# sourceMappingURL=search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/commands/docs/search.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import React from 'react';
2
+ import { z } from 'zod';
3
+ export declare const description = "Add tags to a document";
4
+ export declare const args: z.ZodTuple<[z.ZodString], null>;
5
+ export declare const options: z.ZodObject<{
6
+ config: z.ZodOptional<z.ZodString>;
7
+ json: z.ZodOptional<z.ZodBoolean>;
8
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
9
+ }, z.core.$strip>;
10
+ interface Props {
11
+ args: z.infer<typeof args>;
12
+ options: z.infer<typeof options>;
13
+ }
14
+ export default function TagsAddCommand({ args, options }: Props): React.ReactNode;
15
+ export {};
16
+ //# sourceMappingURL=add.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../../../src/commands/docs/tags/add.tsx"],"names":[],"mappings":"AACA,OAAO,KAAoB,MAAM,OAAO,CAAC;AAEzC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB,eAAO,MAAM,WAAW,2BAA2B,CAAC;AAEpD,eAAO,MAAM,IAAI,iCAA4D,CAAC;AAE9E,eAAO,MAAM,OAAO;;;;iBAIlB,CAAC;AAEH,UAAU,KAAK;IACb,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;IAC3B,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,KAAK,GAAG,KAAK,CAAC,SAAS,CAyIhF"}
@@ -0,0 +1,117 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { Text } from 'ink';
3
+ import React, { useEffect } from 'react';
4
+ import { join } from 'path';
5
+ import { z } from 'zod';
6
+ import { handleManageTags } from '../../../tools/manage-tags.js';
7
+ import { loadCommandContext } from '../../../core/command-context.js';
8
+ import { initializeDatabase, createSchema } from '../../../indexer.js';
9
+ import { buildHelpOutput } from '../../../utils/cli-help.js';
10
+ import { isJsonMode, outputJson, wrapError, wrapSuccess } from '../../../cli/json-output.js';
11
+ export const description = 'Add tags to a document';
12
+ export const args = z.tuple([z.string().describe('path to document').min(1)]);
13
+ export const options = z.object({
14
+ config: z.string().optional().describe('Path to config file'),
15
+ json: z.boolean().optional().describe('Output as JSON'),
16
+ tags: z.array(z.string()).optional().describe('Tags to add (space-separated)'),
17
+ });
18
+ export default function TagsAddCommand({ args, options }) {
19
+ const path = args[0];
20
+ // Get tags from options or from remaining args
21
+ const tags = options.tags || args.slice(1);
22
+ const help = buildHelpOutput({
23
+ usage: 'limps docs tags add <path> [options]',
24
+ arguments: ['path Path to the document'],
25
+ options: [
26
+ '--config Path to config file',
27
+ '--json Output as JSON',
28
+ '--tags Tags to add (space-separated)',
29
+ ],
30
+ examples: [
31
+ 'limps docs tags add plans/0001-feature/000-agent.md --tags reviewed',
32
+ 'limps docs tags add plans/0001-feature/000-agent.md --tags urgent high-priority',
33
+ 'limps docs tags add plans/0001-feature/000-agent.md --tags reviewed --json',
34
+ ],
35
+ });
36
+ const jsonMode = isJsonMode(options);
37
+ useEffect(() => {
38
+ if (!jsonMode) {
39
+ return;
40
+ }
41
+ const timer = setTimeout(() => {
42
+ (async () => {
43
+ try {
44
+ if (!path) {
45
+ outputJson(wrapError('Path is required', { code: 'MISSING_PATH', help: help.meta }), 1);
46
+ return;
47
+ }
48
+ if (!tags || tags.length === 0) {
49
+ outputJson(wrapError('At least one tag is required', { code: 'MISSING_TAGS', help: help.meta }), 1);
50
+ return;
51
+ }
52
+ const { config } = loadCommandContext(options.config);
53
+ const dbPath = join(config.dataPath, 'documents.sqlite');
54
+ const db = initializeDatabase(dbPath);
55
+ createSchema(db);
56
+ const result = await handleManageTags({ path, operation: 'add', tags, prettyPrint: false }, { db, config });
57
+ db.close();
58
+ if (result.isError) {
59
+ outputJson(wrapError(result.content[0].text, { code: 'TAGS_ADD_ERROR' }), 1);
60
+ return;
61
+ }
62
+ const output = JSON.parse(result.content[0].text);
63
+ outputJson(wrapSuccess(output));
64
+ }
65
+ catch (error) {
66
+ outputJson(wrapError(error instanceof Error ? error.message : String(error), {
67
+ code: 'TAGS_ADD_ERROR',
68
+ }), 1);
69
+ }
70
+ })();
71
+ }, 0);
72
+ return () => clearTimeout(timer);
73
+ }, [help.meta, jsonMode, options.config, path, tags]);
74
+ if (jsonMode) {
75
+ return null;
76
+ }
77
+ if (!path || !tags || tags.length === 0) {
78
+ return _jsx(Text, { children: help.text });
79
+ }
80
+ const { config } = loadCommandContext(options.config);
81
+ const [result, setResult] = React.useState(null);
82
+ const [error, setError] = React.useState(null);
83
+ React.useEffect(() => {
84
+ const run = async () => {
85
+ let db;
86
+ try {
87
+ const dbPath = join(config.dataPath, 'documents.sqlite');
88
+ db = initializeDatabase(dbPath);
89
+ createSchema(db);
90
+ const toolResult = await handleManageTags({ path, operation: 'add', tags, prettyPrint: false }, { db, config });
91
+ if (toolResult.isError) {
92
+ setError(toolResult.content[0].text);
93
+ }
94
+ else {
95
+ setResult(JSON.parse(toolResult.content[0].text));
96
+ }
97
+ }
98
+ catch (err) {
99
+ setError(err.message);
100
+ }
101
+ finally {
102
+ if (db) {
103
+ db.close();
104
+ }
105
+ }
106
+ };
107
+ void run();
108
+ }, [config, path, tags]);
109
+ if (error) {
110
+ return _jsxs(Text, { color: "red", children: ["Error: ", error] });
111
+ }
112
+ if (!result) {
113
+ return _jsx(Text, { children: "Loading..." });
114
+ }
115
+ return (_jsxs(_Fragment, { children: [_jsxs(Text, { color: "green", children: ["\u2713 Successfully added tags to ", result.path] }), _jsx(Text, { color: "cyan", bold: true, children: "Current tags:" }), result.tags.map((tag) => (_jsxs(Text, { children: [" \u2022 ", tag] }, tag)))] }));
116
+ }
117
+ //# sourceMappingURL=add.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add.js","sourceRoot":"","sources":["../../../../src/commands/docs/tags/add.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare const description = "Manage document tags";
2
+ export default function TagsCommand(): React.ReactNode;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/docs/tags/index.tsx"],"names":[],"mappings":"AAGA,eAAO,MAAM,WAAW,yBAAyB,CAAC;AAElD,MAAM,CAAC,OAAO,UAAU,WAAW,IAAI,KAAK,CAAC,SAAS,CA4BrD"}
@@ -0,0 +1,33 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Text } from 'ink';
3
+ import { buildHelpOutput } from '../../../utils/cli-help.js';
4
+ export const description = 'Manage document tags';
5
+ export default function TagsCommand() {
6
+ const help = buildHelpOutput({
7
+ usage: 'limps docs tags <command>',
8
+ sections: [
9
+ {
10
+ title: 'Commands',
11
+ lines: [
12
+ 'list <path> List tags in a document',
13
+ 'add <path> Add tags to a document (use --tags)',
14
+ 'remove <path> Remove tags from a document (use --tags)',
15
+ ],
16
+ },
17
+ {
18
+ title: 'Examples',
19
+ lines: [
20
+ 'limps docs tags list plans/0001-feature/000-agent.md',
21
+ 'limps docs tags add plans/0001-feature/000-agent.md --tags reviewed urgent',
22
+ 'limps docs tags remove plans/0001-feature/000-agent.md --tags urgent',
23
+ ],
24
+ },
25
+ {
26
+ title: 'Help',
27
+ lines: ['Run `limps docs tags <command> --help` for more information.'],
28
+ },
29
+ ],
30
+ });
31
+ return _jsx(Text, { children: help.text });
32
+ }
33
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/docs/tags/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D,MAAM,CAAC,MAAM,WAAW,GAAG,sBAAsB,CAAC;AAElD,MAAM,CAAC,OAAO,UAAU,WAAW;IACjC,MAAM,IAAI,GAAG,eAAe,CAAC;QAC3B,KAAK,EAAE,2BAA2B;QAClC,QAAQ,EAAE;YACR;gBACE,KAAK,EAAE,UAAU;gBACjB,KAAK,EAAE;oBACL,6CAA6C;oBAC7C,yDAAyD;oBACzD,8DAA8D;iBAC/D;aACF;YACD;gBACE,KAAK,EAAE,UAAU;gBACjB,KAAK,EAAE;oBACL,sDAAsD;oBACtD,4EAA4E;oBAC5E,sEAAsE;iBACvE;aACF;YACD;gBACE,KAAK,EAAE,MAAM;gBACb,KAAK,EAAE,CAAC,8DAA8D,CAAC;aACxE;SACF;KACF,CAAC,CAAC;IAEH,OAAO,KAAC,IAAI,cAAE,IAAI,CAAC,IAAI,GAAQ,CAAC;AAClC,CAAC"}