@compilr-dev/cli 0.5.1 → 0.5.3

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 (56) hide show
  1. package/LICENSE +108 -0
  2. package/README.md +2 -2
  3. package/dist/.tsbuildinfo.app +1 -1
  4. package/dist/.tsbuildinfo.data +1 -1
  5. package/dist/.tsbuildinfo.domain +1 -1
  6. package/dist/.tsbuildinfo.foundation +1 -1
  7. package/dist/agent.js +8 -6
  8. package/dist/commands-v2/handlers/context.js +20 -0
  9. package/dist/commands-v2/handlers/core.js +26 -1
  10. package/dist/commands-v2/handlers/project.js +88 -12
  11. package/dist/commands-v2/handlers/reset.js +19 -6
  12. package/dist/commands-v2/handlers/session.d.ts +5 -1
  13. package/dist/commands-v2/handlers/session.js +54 -16
  14. package/dist/commands-v2/types.d.ts +5 -0
  15. package/dist/compilr-diff-companion.vsix +0 -0
  16. package/dist/db/repositories/document-repository.js +1 -0
  17. package/dist/db/schema.d.ts +1 -1
  18. package/dist/index.js +99 -30
  19. package/dist/models/providers.d.ts +3 -1
  20. package/dist/models/providers.js +9 -0
  21. package/dist/repl-helpers.js +2 -0
  22. package/dist/repl-v2.d.ts +12 -0
  23. package/dist/repl-v2.js +27 -11
  24. package/dist/tool-names.d.ts +9 -0
  25. package/dist/tool-names.js +36 -0
  26. package/dist/tools/db-tools.d.ts +6 -1
  27. package/dist/tools/db-tools.js +6 -2
  28. package/dist/tools/meta-tools.d.ts +1 -1
  29. package/dist/tools/platform-adapter.d.ts +6 -0
  30. package/dist/tools/platform-adapter.js +10 -0
  31. package/dist/tools.d.ts +14 -4
  32. package/dist/tools.js +60 -20
  33. package/dist/ui/constants/labels.js +1 -0
  34. package/dist/ui/overlay/impl/workflow-overlay-v2.d.ts +1 -0
  35. package/dist/ui/overlay/impl/workflow-overlay-v2.js +5 -3
  36. package/dist/ui/terminal-ui.d.ts +7 -7
  37. package/dist/ui/terminal-ui.js +1 -1
  38. package/dist/ui/tool-formatters.js +190 -6
  39. package/dist/ui/turn-metrics.d.ts +10 -10
  40. package/dist/ui/turn-metrics.js +5 -5
  41. package/dist/ui/types.d.ts +4 -4
  42. package/package.json +6 -5
  43. package/dist/tools/anchor-tools.d.ts +0 -31
  44. package/dist/tools/anchor-tools.js +0 -255
  45. package/dist/tools/artifact-tools.d.ts +0 -42
  46. package/dist/tools/artifact-tools.js +0 -328
  47. package/dist/tools/backlog-wrappers.d.ts +0 -56
  48. package/dist/tools/backlog-wrappers.js +0 -353
  49. package/dist/tools/document-db.d.ts +0 -43
  50. package/dist/tools/document-db.js +0 -220
  51. package/dist/tools/plan-tools.d.ts +0 -54
  52. package/dist/tools/plan-tools.js +0 -338
  53. package/dist/tools/recall-work-tool.d.ts +0 -18
  54. package/dist/tools/recall-work-tool.js +0 -82
  55. package/dist/tools/workitem-db.d.ts +0 -135
  56. package/dist/tools/workitem-db.js +0 -730
@@ -1,353 +0,0 @@
1
- /**
2
- * Backlog Tool Wrappers
3
- *
4
- * These wrappers provide `backlog_read` and `backlog_write` tools that skills expect,
5
- * but internally delegate to the `workitem_*` database tools.
6
- *
7
- * This allows library skills (which reference backlog_*) to work seamlessly
8
- * with the CLI's database-backed workitem system.
9
- */
10
- import { defineTool, createSuccessResult, createErrorResult } from '@compilr-dev/sdk';
11
- import { workItemRepository } from '../db/repositories/index.js';
12
- import { getActiveProject } from './project-db.js';
13
- // =============================================================================
14
- // Type Mappings (Library ↔ CLI)
15
- // =============================================================================
16
- // Library status → CLI status
17
- const STATUS_TO_CLI = {
18
- 'backlog': 'backlog',
19
- 'in-progress': 'in_progress',
20
- 'done': 'completed',
21
- 'blocked': 'skipped', // closest match
22
- };
23
- // CLI status → Library status
24
- const STATUS_TO_LIBRARY = {
25
- 'backlog': 'backlog',
26
- 'in_progress': 'in-progress',
27
- 'completed': 'done',
28
- 'skipped': 'blocked',
29
- };
30
- // Library type → CLI type
31
- const TYPE_TO_CLI = {
32
- 'feature': 'feature',
33
- 'bug': 'bug',
34
- 'chore': 'chore',
35
- 'spike': 'tech-debt', // closest match
36
- };
37
- // CLI type → Library type
38
- const TYPE_TO_LIBRARY = {
39
- 'feature': 'feature',
40
- 'bug': 'bug',
41
- 'chore': 'chore',
42
- 'tech-debt': 'spike',
43
- };
44
- export const backlogReadTool = defineTool({
45
- name: 'backlog_read',
46
- description: 'Read backlog items from the project. ' +
47
- 'Use filters to narrow results. Use id parameter to get a specific item. ' +
48
- 'Returns items sorted by priority (critical first) then by creation date.',
49
- inputSchema: {
50
- type: 'object',
51
- properties: {
52
- id: {
53
- type: 'string',
54
- description: 'Get a specific item by ID (e.g., "FEAT-001")',
55
- },
56
- status: {
57
- type: 'string',
58
- enum: ['backlog', 'in-progress', 'done', 'blocked'],
59
- description: 'Filter by status',
60
- },
61
- type: {
62
- type: 'string',
63
- enum: ['feature', 'bug', 'chore', 'spike'],
64
- description: 'Filter by item type',
65
- },
66
- search: {
67
- type: 'string',
68
- description: 'Search in title and description',
69
- },
70
- priority: {
71
- type: 'string',
72
- enum: ['critical', 'high', 'medium', 'low'],
73
- description: 'Filter by priority',
74
- },
75
- limit: {
76
- type: 'number',
77
- description: 'Maximum items to return (default: 20)',
78
- },
79
- },
80
- },
81
- execute: async (input) => {
82
- try {
83
- // Note: workItemRepository methods are synchronous, but we keep async for interface consistency
84
- await Promise.resolve();
85
- const projectId = getActiveProject()?.id;
86
- if (!projectId) {
87
- return createSuccessResult({
88
- items: [],
89
- total: 0,
90
- filtered: 0,
91
- message: 'No active project. Use /projects to select a project first.',
92
- });
93
- }
94
- // If specific ID requested, look it up directly
95
- if (input.id) {
96
- const item = workItemRepository.getByItemId(projectId, input.id);
97
- if (!item) {
98
- return createErrorResult(`Item not found: ${input.id}`);
99
- }
100
- return createSuccessResult({
101
- items: [{
102
- id: item.itemId,
103
- type: TYPE_TO_LIBRARY[item.type],
104
- title: item.title,
105
- description: item.description || '',
106
- status: STATUS_TO_LIBRARY[item.status],
107
- priority: item.priority,
108
- }],
109
- total: 1,
110
- filtered: 1,
111
- });
112
- }
113
- // Build query
114
- const queryInput = {
115
- project_id: projectId,
116
- status: input.status ? STATUS_TO_CLI[input.status] : 'all',
117
- type: input.type ? TYPE_TO_CLI[input.type] : 'all',
118
- priority: input.priority || 'all',
119
- search: input.search,
120
- limit: input.limit || 20,
121
- offset: 0,
122
- };
123
- const result = workItemRepository.query(queryInput);
124
- // Map items to library format
125
- const items = result.items.map((item) => ({
126
- id: item.itemId,
127
- type: TYPE_TO_LIBRARY[item.type],
128
- title: item.title,
129
- description: item.description || '',
130
- status: STATUS_TO_LIBRARY[item.status],
131
- priority: item.priority,
132
- createdAt: item.createdAt.toISOString(),
133
- updatedAt: item.createdAt.toISOString(), // DB doesn't track updatedAt separately
134
- }));
135
- return createSuccessResult({
136
- items,
137
- total: result.total,
138
- filtered: items.length,
139
- });
140
- }
141
- catch (error) {
142
- return createErrorResult(error instanceof Error ? error.message : String(error));
143
- }
144
- },
145
- });
146
- export const backlogWriteTool = defineTool({
147
- name: 'backlog_write',
148
- description: 'Create, update, or delete backlog items. ' +
149
- 'Actions: add (new item), update (modify existing), delete (remove), replace (full list). ' +
150
- 'IDs are auto-generated for new items based on type (e.g., FEAT-001, BUG-002).',
151
- inputSchema: {
152
- type: 'object',
153
- properties: {
154
- action: {
155
- type: 'string',
156
- enum: ['add', 'update', 'delete', 'replace'],
157
- description: 'Action to perform',
158
- },
159
- item: {
160
- type: 'object',
161
- description: 'Item to add or update (for add/update actions)',
162
- properties: {
163
- id: { type: 'string', description: 'Item ID (required for update)' },
164
- type: {
165
- type: 'string',
166
- enum: ['feature', 'bug', 'chore', 'spike'],
167
- description: 'Item type (required for add)',
168
- },
169
- title: { type: 'string', description: 'Item title' },
170
- description: { type: 'string', description: 'Detailed description' },
171
- status: {
172
- type: 'string',
173
- enum: ['backlog', 'in-progress', 'done', 'blocked'],
174
- description: 'Item status',
175
- },
176
- priority: {
177
- type: 'string',
178
- enum: ['critical', 'high', 'medium', 'low'],
179
- description: 'Priority level',
180
- },
181
- owner: {
182
- type: 'string',
183
- description: 'Owner/assignee of the item',
184
- },
185
- commit_hash: {
186
- type: 'string',
187
- description: 'Git commit hash associated with the item (for update)',
188
- },
189
- },
190
- },
191
- deleteId: {
192
- type: 'string',
193
- description: 'Item ID to delete (for delete action)',
194
- },
195
- items: {
196
- type: 'array',
197
- description: 'Full list of items (for replace action)',
198
- items: {
199
- type: 'object',
200
- },
201
- },
202
- },
203
- required: ['action'],
204
- },
205
- execute: async (input) => {
206
- try {
207
- // Note: workItemRepository methods are synchronous, but we keep async for interface consistency
208
- await Promise.resolve();
209
- const projectId = getActiveProject()?.id;
210
- if (!projectId) {
211
- return createErrorResult('No active project. Use /projects to select a project first.');
212
- }
213
- switch (input.action) {
214
- case 'add': {
215
- if (!input.item) {
216
- return createErrorResult('Item is required for add action');
217
- }
218
- if (!input.item.type) {
219
- return createErrorResult('Item type is required for add action');
220
- }
221
- if (!input.item.title) {
222
- return createErrorResult('Item title is required for add action');
223
- }
224
- const createInput = {
225
- project_id: projectId,
226
- type: TYPE_TO_CLI[input.item.type],
227
- title: input.item.title,
228
- description: input.item.description,
229
- priority: input.item.priority,
230
- owner: input.item.owner,
231
- };
232
- const item = workItemRepository.create(createInput);
233
- return createSuccessResult({
234
- success: true,
235
- action: 'add',
236
- itemId: item.itemId,
237
- message: `Created ${item.itemId}: "${item.title}"`,
238
- });
239
- }
240
- case 'update': {
241
- if (!input.item?.id) {
242
- return createErrorResult('Item ID is required for update action');
243
- }
244
- const existingItem = workItemRepository.getByItemId(projectId, input.item.id);
245
- if (!existingItem) {
246
- return createErrorResult(`Item not found: ${input.item.id}`);
247
- }
248
- const updateInput = {};
249
- if (input.item.status) {
250
- updateInput.status = STATUS_TO_CLI[input.item.status];
251
- }
252
- if (input.item.priority) {
253
- updateInput.priority = input.item.priority;
254
- }
255
- if (input.item.title) {
256
- updateInput.title = input.item.title;
257
- }
258
- if (input.item.description !== undefined) {
259
- updateInput.description = input.item.description;
260
- }
261
- if (input.item.owner !== undefined) {
262
- updateInput.owner = input.item.owner;
263
- }
264
- if (input.item.commit_hash) {
265
- updateInput.commit_hash = input.item.commit_hash;
266
- }
267
- const updated = workItemRepository.update(existingItem.id, updateInput);
268
- if (!updated) {
269
- return createErrorResult(`Failed to update item: ${input.item.id}`);
270
- }
271
- return createSuccessResult({
272
- success: true,
273
- action: 'update',
274
- itemId: input.item.id,
275
- message: `Updated ${input.item.id}`,
276
- });
277
- }
278
- case 'delete': {
279
- const deleteId = input.deleteId || input.item?.id;
280
- if (!deleteId) {
281
- return createErrorResult('deleteId or item.id is required for delete action');
282
- }
283
- const existingItem = workItemRepository.getByItemId(projectId, deleteId);
284
- if (!existingItem) {
285
- return createErrorResult(`Item not found: ${deleteId}`);
286
- }
287
- const deleted = workItemRepository.delete(existingItem.id);
288
- if (!deleted) {
289
- return createErrorResult(`Failed to delete item: ${deleteId}`);
290
- }
291
- return createSuccessResult({
292
- success: true,
293
- action: 'delete',
294
- itemId: deleteId,
295
- message: `Deleted ${deleteId}`,
296
- });
297
- }
298
- case 'replace': {
299
- if (!input.items) {
300
- return createErrorResult('Items array is required for replace action');
301
- }
302
- // Delete all existing items
303
- const existing = workItemRepository.query({
304
- project_id: projectId,
305
- limit: 1000,
306
- offset: 0,
307
- });
308
- for (const item of existing.items) {
309
- workItemRepository.delete(item.id);
310
- }
311
- // Add all new items
312
- const newIds = [];
313
- for (const newItem of input.items) {
314
- const createInput = {
315
- project_id: projectId,
316
- type: TYPE_TO_CLI[newItem.type],
317
- title: newItem.title,
318
- description: newItem.description,
319
- priority: newItem.priority,
320
- };
321
- const created = workItemRepository.create(createInput);
322
- newIds.push(created.itemId);
323
- // Update status if not backlog
324
- if (newItem.status && newItem.status !== 'backlog') {
325
- workItemRepository.update(created.id, {
326
- status: STATUS_TO_CLI[newItem.status],
327
- });
328
- }
329
- }
330
- return createSuccessResult({
331
- success: true,
332
- action: 'replace',
333
- itemCount: input.items.length,
334
- newIds,
335
- message: `Replaced backlog with ${String(input.items.length)} items`,
336
- });
337
- }
338
- default:
339
- return createErrorResult(`Unknown action: ${input.action}`);
340
- }
341
- }
342
- catch (error) {
343
- return createErrorResult(error instanceof Error ? error.message : String(error));
344
- }
345
- },
346
- });
347
- /**
348
- * All backlog wrapper tools
349
- */
350
- export const backlogWrapperTools = [
351
- backlogReadTool,
352
- backlogWriteTool,
353
- ];
@@ -1,43 +0,0 @@
1
- /**
2
- * Document Database Tools
3
- *
4
- * Tools for managing project documents (PRD, architecture, design notes) in the database.
5
- */
6
- /**
7
- * project_document_add - Add or update a project document
8
- */
9
- export declare const projectDocumentAddTool: import("@compilr-dev/sdk").Tool<{
10
- project_id?: number;
11
- doc_type: string;
12
- title: string;
13
- content: string;
14
- }>;
15
- /**
16
- * project_document_get - Get a project document
17
- */
18
- export declare const projectDocumentGetTool: import("@compilr-dev/sdk").Tool<{
19
- project_id?: number;
20
- doc_type: string;
21
- }>;
22
- /**
23
- * project_document_list - List all documents for a project
24
- */
25
- export declare const projectDocumentListTool: import("@compilr-dev/sdk").Tool<{
26
- project_id?: number;
27
- }>;
28
- /**
29
- * project_document_delete - Delete a project document
30
- */
31
- export declare const projectDocumentDeleteTool: import("@compilr-dev/sdk").Tool<{
32
- project_id?: number;
33
- doc_type: string;
34
- }>;
35
- /**
36
- * All document tools
37
- */
38
- export declare const documentDbTools: import("@compilr-dev/sdk").Tool<{
39
- project_id?: number;
40
- doc_type: string;
41
- title: string;
42
- content: string;
43
- }>[];
@@ -1,220 +0,0 @@
1
- /**
2
- * Document Database Tools
3
- *
4
- * Tools for managing project documents (PRD, architecture, design notes) in the database.
5
- */
6
- import { defineTool, createSuccessResult, createErrorResult } from '@compilr-dev/sdk';
7
- import { documentRepository } from '../db/repositories/index.js';
8
- import { getActiveProject } from './project-db.js';
9
- /**
10
- * project_document_add - Add or update a project document
11
- */
12
- export const projectDocumentAddTool = defineTool({
13
- name: 'project_document_add',
14
- description: 'Add or update a project document (PRD, architecture, design, notes). If a document of the same type exists, it will be updated.',
15
- inputSchema: {
16
- type: 'object',
17
- properties: {
18
- project_id: {
19
- type: 'number',
20
- description: 'Project ID (uses active project if not provided)',
21
- },
22
- doc_type: {
23
- type: 'string',
24
- enum: ['prd', 'architecture', 'design', 'notes'],
25
- description: 'Document type',
26
- },
27
- title: {
28
- type: 'string',
29
- description: 'Document title',
30
- },
31
- content: {
32
- type: 'string',
33
- description: 'Document content (markdown)',
34
- },
35
- },
36
- required: ['doc_type', 'title', 'content'],
37
- },
38
- execute: async (input) => {
39
- await Promise.resolve(); // Required for async type signature
40
- try {
41
- const projectId = input.project_id || getActiveProject()?.id;
42
- if (!projectId) {
43
- return createErrorResult('No project specified and no active project. Use project_get or /projects to select a project first.');
44
- }
45
- const createInput = {
46
- project_id: projectId,
47
- doc_type: input.doc_type,
48
- title: input.title,
49
- content: input.content,
50
- };
51
- const doc = documentRepository.upsert(createInput);
52
- return createSuccessResult({
53
- success: true,
54
- message: `Document "${doc.title}" saved`,
55
- document: {
56
- id: doc.id,
57
- docType: doc.docType,
58
- title: doc.title,
59
- contentLength: doc.content.length,
60
- updatedAt: doc.updatedAt.toISOString(),
61
- },
62
- });
63
- }
64
- catch (error) {
65
- return createErrorResult(`Failed to save document: ${error instanceof Error ? error.message : String(error)}`);
66
- }
67
- },
68
- });
69
- /**
70
- * project_document_get - Get a project document
71
- */
72
- export const projectDocumentGetTool = defineTool({
73
- name: 'project_document_get',
74
- description: 'Get a project document by type. Returns the document content.',
75
- inputSchema: {
76
- type: 'object',
77
- properties: {
78
- project_id: {
79
- type: 'number',
80
- description: 'Project ID (uses active project if not provided)',
81
- },
82
- doc_type: {
83
- type: 'string',
84
- enum: ['prd', 'architecture', 'design', 'notes'],
85
- description: 'Document type to retrieve',
86
- },
87
- },
88
- required: ['doc_type'],
89
- },
90
- execute: async (input) => {
91
- await Promise.resolve(); // Required for async type signature
92
- try {
93
- const projectId = input.project_id || getActiveProject()?.id;
94
- if (!projectId) {
95
- return createErrorResult('No project specified and no active project. Use project_get or /projects to select a project first.');
96
- }
97
- const doc = documentRepository.getByType(projectId, input.doc_type);
98
- if (!doc) {
99
- return createSuccessResult({
100
- success: true,
101
- document: null,
102
- message: `No ${input.doc_type} document found for this project`,
103
- });
104
- }
105
- return createSuccessResult({
106
- success: true,
107
- document: {
108
- id: doc.id,
109
- docType: doc.docType,
110
- title: doc.title,
111
- content: doc.content,
112
- createdAt: doc.createdAt.toISOString(),
113
- updatedAt: doc.updatedAt.toISOString(),
114
- },
115
- });
116
- }
117
- catch (error) {
118
- return createErrorResult(`Failed to get document: ${error instanceof Error ? error.message : String(error)}`);
119
- }
120
- },
121
- });
122
- /**
123
- * project_document_list - List all documents for a project
124
- */
125
- export const projectDocumentListTool = defineTool({
126
- name: 'project_document_list',
127
- description: 'List all documents for a project. Returns document metadata without full content.',
128
- inputSchema: {
129
- type: 'object',
130
- properties: {
131
- project_id: {
132
- type: 'number',
133
- description: 'Project ID (uses active project if not provided)',
134
- },
135
- },
136
- required: [],
137
- },
138
- execute: async (input) => {
139
- await Promise.resolve(); // Required for async type signature
140
- try {
141
- const projectId = input.project_id || getActiveProject()?.id;
142
- if (!projectId) {
143
- return createErrorResult('No project specified and no active project. Use project_get or /projects to select a project first.');
144
- }
145
- const docs = documentRepository.listByProject(projectId);
146
- const documents = docs.map((doc) => ({
147
- id: doc.id,
148
- docType: doc.docType,
149
- title: doc.title,
150
- contentLength: doc.content.length,
151
- createdAt: doc.createdAt.toISOString(),
152
- updatedAt: doc.updatedAt.toISOString(),
153
- }));
154
- return createSuccessResult({
155
- success: true,
156
- documents,
157
- count: documents.length,
158
- });
159
- }
160
- catch (error) {
161
- return createErrorResult(`Failed to list documents: ${error instanceof Error ? error.message : String(error)}`);
162
- }
163
- },
164
- });
165
- /**
166
- * project_document_delete - Delete a project document
167
- */
168
- export const projectDocumentDeleteTool = defineTool({
169
- name: 'project_document_delete',
170
- description: 'Delete a project document by type.',
171
- inputSchema: {
172
- type: 'object',
173
- properties: {
174
- project_id: {
175
- type: 'number',
176
- description: 'Project ID (uses active project if not provided)',
177
- },
178
- doc_type: {
179
- type: 'string',
180
- enum: ['prd', 'architecture', 'design', 'notes'],
181
- description: 'Document type to delete',
182
- },
183
- },
184
- required: ['doc_type'],
185
- },
186
- execute: async (input) => {
187
- await Promise.resolve(); // Required for async type signature
188
- try {
189
- const projectId = input.project_id || getActiveProject()?.id;
190
- if (!projectId) {
191
- return createErrorResult('No project specified and no active project. Use project_get or /projects to select a project first.');
192
- }
193
- // Find the document first
194
- const doc = documentRepository.getByType(projectId, input.doc_type);
195
- if (!doc) {
196
- return createErrorResult(`No ${input.doc_type} document found for this project`);
197
- }
198
- const deleted = documentRepository.delete(doc.id);
199
- if (!deleted) {
200
- return createErrorResult(`Failed to delete ${input.doc_type} document`);
201
- }
202
- return createSuccessResult({
203
- success: true,
204
- message: `Document "${doc.title}" deleted`,
205
- });
206
- }
207
- catch (error) {
208
- return createErrorResult(`Failed to delete document: ${error instanceof Error ? error.message : String(error)}`);
209
- }
210
- },
211
- });
212
- /**
213
- * All document tools
214
- */
215
- export const documentDbTools = [
216
- projectDocumentAddTool,
217
- projectDocumentGetTool,
218
- projectDocumentListTool,
219
- projectDocumentDeleteTool,
220
- ];
@@ -1,54 +0,0 @@
1
- /**
2
- * Plan Database Tools
3
- *
4
- * Tools for managing plans in the database.
5
- * Plans are used in Plan Mode for structured task planning before implementation.
6
- */
7
- export declare const planCreateTool: import("@compilr-dev/sdk").Tool<{
8
- name: string;
9
- content: string;
10
- work_item_id?: number;
11
- project_id?: number;
12
- }>;
13
- export declare const planUpdateTool: import("@compilr-dev/sdk").Tool<{
14
- plan_id: number;
15
- content?: string;
16
- status?: string;
17
- work_item_id?: number | null;
18
- }>;
19
- export declare const planGetTool: import("@compilr-dev/sdk").Tool<{
20
- plan_id?: number;
21
- name?: string;
22
- project_id?: number;
23
- }>;
24
- export declare const planListTool: import("@compilr-dev/sdk").Tool<{
25
- project_id?: number;
26
- status?: string;
27
- work_item_id?: number;
28
- limit?: number;
29
- order_by?: string;
30
- }>;
31
- export declare const planDeleteTool: import("@compilr-dev/sdk").Tool<{
32
- plan_id: number;
33
- }>;
34
- export declare const planDbTools: (import("@compilr-dev/sdk").Tool<{
35
- name: string;
36
- content: string;
37
- work_item_id?: number;
38
- project_id?: number;
39
- }> | import("@compilr-dev/sdk").Tool<{
40
- plan_id: number;
41
- content?: string;
42
- status?: string;
43
- work_item_id?: number | null;
44
- }> | import("@compilr-dev/sdk").Tool<{
45
- plan_id?: number;
46
- name?: string;
47
- project_id?: number;
48
- }> | import("@compilr-dev/sdk").Tool<{
49
- project_id?: number;
50
- status?: string;
51
- work_item_id?: number;
52
- limit?: number;
53
- order_by?: string;
54
- }>)[];