@troykelly/openclaw-projects 0.0.11 → 0.0.13

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 (97) hide show
  1. package/dist/config.d.ts +16 -0
  2. package/dist/config.d.ts.map +1 -1
  3. package/dist/config.js +11 -0
  4. package/dist/config.js.map +1 -1
  5. package/dist/hooks.d.ts.map +1 -1
  6. package/dist/hooks.js +22 -3
  7. package/dist/hooks.js.map +1 -1
  8. package/dist/register-openclaw.d.ts +3 -1
  9. package/dist/register-openclaw.d.ts.map +1 -1
  10. package/dist/register-openclaw.js +640 -55
  11. package/dist/register-openclaw.js.map +1 -1
  12. package/dist/tools/context-search.d.ts +79 -0
  13. package/dist/tools/context-search.d.ts.map +1 -0
  14. package/dist/tools/context-search.js +267 -0
  15. package/dist/tools/context-search.js.map +1 -0
  16. package/dist/tools/email-send.d.ts.map +1 -1
  17. package/dist/tools/email-send.js +1 -14
  18. package/dist/tools/email-send.js.map +1 -1
  19. package/dist/tools/entity-links.d.ts +117 -0
  20. package/dist/tools/entity-links.d.ts.map +1 -0
  21. package/dist/tools/entity-links.js +446 -0
  22. package/dist/tools/entity-links.js.map +1 -0
  23. package/dist/tools/index.d.ts +4 -0
  24. package/dist/tools/index.d.ts.map +1 -1
  25. package/dist/tools/index.js +8 -0
  26. package/dist/tools/index.js.map +1 -1
  27. package/dist/tools/memory-recall.d.ts +28 -0
  28. package/dist/tools/memory-recall.d.ts.map +1 -1
  29. package/dist/tools/memory-recall.js +42 -3
  30. package/dist/tools/memory-recall.js.map +1 -1
  31. package/dist/tools/memory-store.d.ts +57 -0
  32. package/dist/tools/memory-store.d.ts.map +1 -1
  33. package/dist/tools/memory-store.js +29 -2
  34. package/dist/tools/memory-store.js.map +1 -1
  35. package/dist/tools/message-search.d.ts +2 -2
  36. package/dist/tools/message-search.d.ts.map +1 -1
  37. package/dist/tools/message-search.js +36 -3
  38. package/dist/tools/message-search.js.map +1 -1
  39. package/dist/tools/notes.d.ts +2 -2
  40. package/dist/tools/project-search.d.ts +92 -0
  41. package/dist/tools/project-search.d.ts.map +1 -0
  42. package/dist/tools/project-search.js +160 -0
  43. package/dist/tools/project-search.js.map +1 -0
  44. package/dist/tools/skill-store.d.ts +6 -6
  45. package/dist/tools/threads.d.ts +3 -3
  46. package/dist/tools/threads.d.ts.map +1 -1
  47. package/dist/tools/threads.js +45 -7
  48. package/dist/tools/threads.js.map +1 -1
  49. package/dist/tools/todo-search.d.ts +95 -0
  50. package/dist/tools/todo-search.d.ts.map +1 -0
  51. package/dist/tools/todo-search.js +164 -0
  52. package/dist/tools/todo-search.js.map +1 -0
  53. package/dist/types/openclaw-api.d.ts +15 -0
  54. package/dist/types/openclaw-api.d.ts.map +1 -1
  55. package/dist/utils/auto-linker.d.ts +66 -0
  56. package/dist/utils/auto-linker.d.ts.map +1 -0
  57. package/dist/utils/auto-linker.js +354 -0
  58. package/dist/utils/auto-linker.js.map +1 -0
  59. package/dist/utils/geo.d.ts +24 -0
  60. package/dist/utils/geo.d.ts.map +1 -0
  61. package/dist/utils/geo.js +38 -0
  62. package/dist/utils/geo.js.map +1 -0
  63. package/dist/utils/inbound-gate.d.ts +85 -0
  64. package/dist/utils/inbound-gate.d.ts.map +1 -0
  65. package/dist/utils/inbound-gate.js +133 -0
  66. package/dist/utils/inbound-gate.js.map +1 -0
  67. package/dist/utils/injection-log-rate-limiter.d.ts +62 -0
  68. package/dist/utils/injection-log-rate-limiter.d.ts.map +1 -0
  69. package/dist/utils/injection-log-rate-limiter.js +106 -0
  70. package/dist/utils/injection-log-rate-limiter.js.map +1 -0
  71. package/dist/utils/injection-protection.d.ts +133 -0
  72. package/dist/utils/injection-protection.d.ts.map +1 -0
  73. package/dist/utils/injection-protection.js +252 -0
  74. package/dist/utils/injection-protection.js.map +1 -0
  75. package/dist/utils/nominatim.d.ts +18 -0
  76. package/dist/utils/nominatim.d.ts.map +1 -0
  77. package/dist/utils/nominatim.js +56 -0
  78. package/dist/utils/nominatim.js.map +1 -0
  79. package/dist/utils/prompt-guard-client.d.ts +59 -0
  80. package/dist/utils/prompt-guard-client.d.ts.map +1 -0
  81. package/dist/utils/prompt-guard-client.js +99 -0
  82. package/dist/utils/prompt-guard-client.js.map +1 -0
  83. package/dist/utils/rate-limiter.d.ts +81 -0
  84. package/dist/utils/rate-limiter.d.ts.map +1 -0
  85. package/dist/utils/rate-limiter.js +188 -0
  86. package/dist/utils/rate-limiter.js.map +1 -0
  87. package/dist/utils/spam-filter.d.ts +79 -0
  88. package/dist/utils/spam-filter.d.ts.map +1 -0
  89. package/dist/utils/spam-filter.js +237 -0
  90. package/dist/utils/spam-filter.js.map +1 -0
  91. package/dist/utils/token-budget.d.ts +68 -0
  92. package/dist/utils/token-budget.d.ts.map +1 -0
  93. package/dist/utils/token-budget.js +142 -0
  94. package/dist/utils/token-budget.js.map +1 -0
  95. package/openclaw.plugin.json +25 -3
  96. package/package.json +12 -11
  97. package/LICENSE +0 -21
@@ -0,0 +1,160 @@
1
+ /**
2
+ * project_search tool implementation.
3
+ * Provides semantic search specifically for projects (kind=project work items).
4
+ * Uses the unified search API with work_item type filter and client-side kind filtering.
5
+ * Geo-contextual ranking added in Issue #1218.
6
+ *
7
+ * Part of Issue #1217.
8
+ */
9
+ import { z } from 'zod';
10
+ import { sanitizeErrorMessage } from '../utils/sanitize.js';
11
+ import { reverseGeocode } from '../utils/nominatim.js';
12
+ /** Parameters for project_search tool */
13
+ export const ProjectSearchParamsSchema = z.object({
14
+ query: z.string().min(1, 'Query cannot be empty').max(1000, 'Query must be 1000 characters or less'),
15
+ limit: z.number().int().min(1).max(50).optional(),
16
+ status: z.enum(['active', 'completed', 'archived']).optional(),
17
+ location: z.object({
18
+ lat: z.number().min(-90).max(90),
19
+ lng: z.number().min(-180).max(180),
20
+ }).optional(),
21
+ });
22
+ /**
23
+ * Sanitize query input to prevent injection and remove control characters.
24
+ */
25
+ function sanitizeQuery(query) {
26
+ return query.replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]/g, '').trim();
27
+ }
28
+ /**
29
+ * Creates the project_search tool.
30
+ */
31
+ export function createProjectSearchTool(options) {
32
+ const { client, logger, config, userId } = options;
33
+ return {
34
+ name: 'project_search',
35
+ description: 'Search projects by natural language query. Uses semantic and text search to find relevant projects. ' +
36
+ 'Optionally filter by status (active, completed, archived). ' +
37
+ 'Provide location (lat/lng) to boost results relevant to the current location.',
38
+ parameters: ProjectSearchParamsSchema,
39
+ async execute(params) {
40
+ const parseResult = ProjectSearchParamsSchema.safeParse(params);
41
+ if (!parseResult.success) {
42
+ const errorMessage = parseResult.error.errors.map((e) => `${e.path.join('.')}: ${e.message}`).join(', ');
43
+ return { success: false, error: errorMessage };
44
+ }
45
+ const { query, limit = 10, status, location } = parseResult.data;
46
+ const sanitizedQuery = sanitizeQuery(query);
47
+ if (sanitizedQuery.length === 0) {
48
+ return { success: false, error: 'Query cannot be empty after sanitization' };
49
+ }
50
+ logger.info('project_search invoked', {
51
+ userId,
52
+ queryLength: sanitizedQuery.length,
53
+ limit,
54
+ status: status ?? 'all',
55
+ hasLocation: !!location,
56
+ });
57
+ try {
58
+ // Augment query with location context for geo-contextual ranking (Issue #1218)
59
+ let searchQuery = sanitizedQuery;
60
+ if (location && config.nominatimUrl) {
61
+ try {
62
+ const geo = await reverseGeocode(location.lat, location.lng, config.nominatimUrl);
63
+ if (geo?.placeLabel) {
64
+ const augmented = `${sanitizedQuery} near ${geo.placeLabel}`;
65
+ if (augmented.length <= 1000) {
66
+ searchQuery = augmented;
67
+ }
68
+ }
69
+ }
70
+ catch {
71
+ logger.warn('Reverse geocode failed, proceeding without location augmentation', { userId });
72
+ }
73
+ }
74
+ // Always over-fetch by 3x since we always filter to kind=project client-side
75
+ const fetchLimit = Math.min(limit * 3, 50);
76
+ const queryParams = new URLSearchParams({
77
+ q: searchQuery,
78
+ types: 'work_item',
79
+ limit: String(fetchLimit),
80
+ semantic: 'true',
81
+ user_email: userId,
82
+ });
83
+ const response = await client.get(`/api/search?${queryParams.toString()}`, { userId });
84
+ if (!response.success) {
85
+ logger.error('project_search API error', {
86
+ userId,
87
+ status: response.error.status,
88
+ code: response.error.code,
89
+ });
90
+ return {
91
+ success: false,
92
+ error: response.error.message || 'Failed to search projects',
93
+ };
94
+ }
95
+ let results = response.data.results ?? [];
96
+ // Always filter to kind=project since this is a project-specific search tool
97
+ results = results.filter((r) => r.metadata?.kind === 'project');
98
+ // Additional client-side filtering by status if specified
99
+ if (status) {
100
+ results = results.filter((r) => r.metadata?.status === status);
101
+ }
102
+ results = results.slice(0, limit);
103
+ const items = results.map((r) => ({
104
+ id: r.id,
105
+ title: r.title,
106
+ snippet: r.snippet,
107
+ score: r.score,
108
+ kind: r.metadata?.kind,
109
+ status: r.metadata?.status,
110
+ }));
111
+ if (items.length === 0) {
112
+ return {
113
+ success: true,
114
+ data: {
115
+ content: 'No matching projects found.',
116
+ details: {
117
+ count: 0,
118
+ results: [],
119
+ searchType: response.data.search_type,
120
+ userId,
121
+ },
122
+ },
123
+ };
124
+ }
125
+ const content = items
126
+ .map((item) => {
127
+ const statusStr = item.status ? ` (${item.status})` : '';
128
+ const snippetStr = item.snippet ? ` - ${item.snippet}` : '';
129
+ return `- **${item.title}**${statusStr}${snippetStr}`;
130
+ })
131
+ .join('\n');
132
+ logger.debug('project_search completed', {
133
+ userId,
134
+ resultCount: items.length,
135
+ searchType: response.data.search_type,
136
+ });
137
+ return {
138
+ success: true,
139
+ data: {
140
+ content,
141
+ details: {
142
+ count: items.length,
143
+ results: items,
144
+ searchType: response.data.search_type,
145
+ userId,
146
+ },
147
+ },
148
+ };
149
+ }
150
+ catch (error) {
151
+ logger.error('project_search failed', {
152
+ userId,
153
+ error: error instanceof Error ? error.message : String(error),
154
+ });
155
+ return { success: false, error: sanitizeErrorMessage(error) };
156
+ }
157
+ },
158
+ };
159
+ }
160
+ //# sourceMappingURL=project-search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-search.js","sourceRoot":"","sources":["../../src/tools/project-search.ts"],"names":[],"mappings":"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"}
@@ -35,8 +35,8 @@ export declare const SkillStorePutParamsSchema: z.ZodObject<{
35
35
  tags?: string[] | undefined;
36
36
  content?: string | undefined;
37
37
  title?: string | undefined;
38
- summary?: string | undefined;
39
38
  user_email?: string | undefined;
39
+ summary?: string | undefined;
40
40
  collection?: string | undefined;
41
41
  media_url?: string | undefined;
42
42
  media_type?: string | undefined;
@@ -51,8 +51,8 @@ export declare const SkillStorePutParamsSchema: z.ZodObject<{
51
51
  tags?: string[] | undefined;
52
52
  content?: string | undefined;
53
53
  title?: string | undefined;
54
- summary?: string | undefined;
55
54
  user_email?: string | undefined;
55
+ summary?: string | undefined;
56
56
  collection?: string | undefined;
57
57
  media_url?: string | undefined;
58
58
  media_type?: string | undefined;
@@ -95,21 +95,21 @@ export declare const SkillStoreListParamsSchema: z.ZodObject<{
95
95
  skill_id: string;
96
96
  status?: "active" | "archived" | "processing" | undefined;
97
97
  limit?: number | undefined;
98
+ since?: string | undefined;
98
99
  tags?: string[] | undefined;
99
100
  offset?: number | undefined;
100
101
  user_email?: string | undefined;
101
102
  collection?: string | undefined;
102
- since?: string | undefined;
103
103
  order_by?: "title" | "priority" | "created_at" | "updated_at" | undefined;
104
104
  }, {
105
105
  skill_id: string;
106
106
  status?: "active" | "archived" | "processing" | undefined;
107
107
  limit?: number | undefined;
108
+ since?: string | undefined;
108
109
  tags?: string[] | undefined;
109
110
  offset?: number | undefined;
110
111
  user_email?: string | undefined;
111
112
  collection?: string | undefined;
112
- since?: string | undefined;
113
113
  order_by?: "title" | "priority" | "created_at" | "updated_at" | undefined;
114
114
  }>;
115
115
  export type SkillStoreListParams = z.infer<typeof SkillStoreListParamsSchema>;
@@ -249,16 +249,16 @@ export declare const SkillStoreAggregateParamsSchema: z.ZodObject<{
249
249
  }, "strip", z.ZodTypeAny, {
250
250
  skill_id: string;
251
251
  operation: "count" | "count_by_tag" | "count_by_status" | "latest" | "oldest";
252
+ since?: string | undefined;
252
253
  user_email?: string | undefined;
253
254
  collection?: string | undefined;
254
- since?: string | undefined;
255
255
  until?: string | undefined;
256
256
  }, {
257
257
  skill_id: string;
258
258
  operation: "count" | "count_by_tag" | "count_by_status" | "latest" | "oldest";
259
+ since?: string | undefined;
259
260
  user_email?: string | undefined;
260
261
  collection?: string | undefined;
261
- since?: string | undefined;
262
262
  until?: string | undefined;
263
263
  }>;
264
264
  export type SkillStoreAggregateParams = z.infer<typeof SkillStoreAggregateParamsSchema>;
@@ -4,8 +4,8 @@
4
4
  */
5
5
  import { z } from 'zod';
6
6
  import type { ApiClient } from '../api-client.js';
7
- import type { Logger } from '../logger.js';
8
7
  import type { PluginConfig } from '../config.js';
8
+ import type { Logger } from '../logger.js';
9
9
  /** Parameters for thread_list tool */
10
10
  export declare const ThreadListParamsSchema: z.ZodObject<{
11
11
  channel: z.ZodOptional<z.ZodEnum<["sms", "email"]>>;
@@ -13,12 +13,12 @@ export declare const ThreadListParamsSchema: z.ZodObject<{
13
13
  limit: z.ZodDefault<z.ZodNumber>;
14
14
  }, "strip", z.ZodTypeAny, {
15
15
  limit: number;
16
- contactId?: string | undefined;
17
16
  channel?: "email" | "sms" | undefined;
17
+ contactId?: string | undefined;
18
18
  }, {
19
19
  limit?: number | undefined;
20
- contactId?: string | undefined;
21
20
  channel?: "email" | "sms" | undefined;
21
+ contactId?: string | undefined;
22
22
  }>;
23
23
  export type ThreadListParams = z.infer<typeof ThreadListParamsSchema>;
24
24
  /** Thread in list response (mapped from search results) */
@@ -1 +1 @@
1
- {"version":3,"file":"threads.d.ts","sourceRoot":"","sources":["../../src/tools/threads.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"threads.d.ts","sourceRoot":"","sources":["../../src/tools/threads.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,8 @@
3
3
  * Provides thread_list and thread_get tools for viewing message threads.
4
4
  */
5
5
  import { z } from 'zod';
6
+ import { injectionLogLimiter } from '../utils/injection-log-rate-limiter.js';
7
+ import { createBoundaryMarkers, detectInjectionPatternsAsync, sanitizeMessageForContext, sanitizeMetadataField, wrapExternalMessage, } from '../utils/injection-protection.js';
6
8
  /** Channel type enum */
7
9
  const ChannelType = z.enum(['sms', 'email']);
8
10
  /** Default and max limits */
@@ -82,11 +84,16 @@ export function createThreadListTool(options) {
82
84
  resultCount: threadItems.length,
83
85
  total,
84
86
  });
85
- // Format content for display
87
+ // Format content for display with injection protection.
88
+ // Sanitize snippet/title since they may contain external message content.
89
+ // Generate a per-invocation nonce for boundary markers (#1255)
90
+ const { nonce } = createBoundaryMarkers();
86
91
  const content = threadItems.length > 0
87
92
  ? threadItems
88
93
  .map((t) => {
89
- return `${t.title}: ${t.snippet}`;
94
+ const safeTitle = sanitizeMetadataField(t.title, nonce);
95
+ const wrappedSnippet = wrapExternalMessage(t.snippet, { nonce });
96
+ return `${safeTitle}: ${wrappedSnippet}`;
90
97
  })
91
98
  .join('\n')
92
99
  : 'No threads found.';
@@ -128,7 +135,7 @@ export const ThreadGetParamsSchema = z.object({
128
135
  * Creates the thread_get tool.
129
136
  */
130
137
  export function createThreadGetTool(options) {
131
- const { client, logger, userId } = options;
138
+ const { client, logger, config, userId } = options;
132
139
  return {
133
140
  name: 'thread_get',
134
141
  description: 'Get a thread with its message history. Use to view the full conversation in a thread.',
@@ -168,15 +175,46 @@ export function createThreadGetTool(options) {
168
175
  threadId,
169
176
  messageCount: messages.length,
170
177
  });
171
- // Format content for display
172
- const contact = thread.contact?.displayName || 'Unknown';
173
- const header = `Thread with ${contact} [${thread.channel}]`;
178
+ // Format content for display — sanitize metadata fields interpolated outside boundary wrappers
179
+ // Generate a per-invocation nonce for boundary markers (#1255)
180
+ const { nonce: threadGetNonce } = createBoundaryMarkers();
181
+ const contact = sanitizeMetadataField(thread.contact?.displayName || 'Unknown', threadGetNonce);
182
+ const safeChannel = sanitizeMetadataField(thread.channel, threadGetNonce);
183
+ const header = `Thread with ${contact} [${safeChannel}]`;
184
+ // Detect and log potential injection patterns in inbound messages
185
+ // Rate-limited to prevent log flooding from volume attacks. (#1257)
186
+ for (const m of messages) {
187
+ if (m.direction === 'inbound' && m.body) {
188
+ const detection = await detectInjectionPatternsAsync(m.body, {
189
+ promptGuardUrl: config.promptGuardUrl,
190
+ });
191
+ if (detection.detected) {
192
+ const logDecision = injectionLogLimiter.shouldLog(userId);
193
+ if (logDecision.log) {
194
+ logger.warn(logDecision.summary ? 'injection detection log summary for previous window' : 'potential prompt injection detected in thread_get result', {
195
+ userId,
196
+ threadId,
197
+ messageId: m.id,
198
+ patterns: detection.patterns,
199
+ source: detection.source,
200
+ ...(logDecision.suppressed > 0 && { suppressedCount: logDecision.suppressed }),
201
+ });
202
+ }
203
+ }
204
+ }
205
+ }
174
206
  const messageContent = messages.length > 0
175
207
  ? messages
176
208
  .map((m) => {
177
209
  const prefix = m.direction === 'inbound' ? '←' : '→';
178
210
  const timestamp = new Date(m.createdAt).toLocaleString();
179
- return `${prefix} [${timestamp}] ${m.body || ''}`;
211
+ const body = sanitizeMessageForContext(m.body || '', {
212
+ direction: m.direction,
213
+ channel: thread.channel,
214
+ sender: contact,
215
+ nonce: threadGetNonce,
216
+ });
217
+ return `${prefix} [${timestamp}] ${body}`;
180
218
  })
181
219
  .join('\n')
182
220
  : 'No messages in this thread.';
@@ -1 +1 @@
1
- {"version":3,"file":"threads.js","sourceRoot":"","sources":["../../src/tools/threads.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"threads.js","sourceRoot":"","sources":["../../src/tools/threads.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,95 @@
1
+ /**
2
+ * todo_search tool implementation.
3
+ * Provides semantic search through work items (todos and projects).
4
+ * Uses the unified search API with work_item type filter.
5
+ * Geo-contextual ranking added in Issue #1218.
6
+ *
7
+ * Part of Issue #1216.
8
+ */
9
+ import { z } from 'zod';
10
+ import type { ApiClient } from '../api-client.js';
11
+ import type { Logger } from '../logger.js';
12
+ import type { PluginConfig } from '../config.js';
13
+ /** Parameters for todo_search tool */
14
+ export declare const TodoSearchParamsSchema: z.ZodObject<{
15
+ query: z.ZodString;
16
+ limit: z.ZodOptional<z.ZodNumber>;
17
+ kind: z.ZodOptional<z.ZodEnum<["task", "project", "initiative", "epic", "issue"]>>;
18
+ status: z.ZodOptional<z.ZodString>;
19
+ location: z.ZodOptional<z.ZodObject<{
20
+ lat: z.ZodNumber;
21
+ lng: z.ZodNumber;
22
+ }, "strip", z.ZodTypeAny, {
23
+ lat: number;
24
+ lng: number;
25
+ }, {
26
+ lat: number;
27
+ lng: number;
28
+ }>>;
29
+ }, "strip", z.ZodTypeAny, {
30
+ query: string;
31
+ status?: string | undefined;
32
+ limit?: number | undefined;
33
+ location?: {
34
+ lat: number;
35
+ lng: number;
36
+ } | undefined;
37
+ kind?: "project" | "task" | "initiative" | "epic" | "issue" | undefined;
38
+ }, {
39
+ query: string;
40
+ status?: string | undefined;
41
+ limit?: number | undefined;
42
+ location?: {
43
+ lat: number;
44
+ lng: number;
45
+ } | undefined;
46
+ kind?: "project" | "task" | "initiative" | "epic" | "issue" | undefined;
47
+ }>;
48
+ export type TodoSearchParams = z.infer<typeof TodoSearchParamsSchema>;
49
+ /** Search result item */
50
+ export interface TodoSearchItem {
51
+ id: string;
52
+ title: string;
53
+ snippet: string;
54
+ score: number;
55
+ kind?: string;
56
+ status?: string;
57
+ }
58
+ /** Successful search result */
59
+ export interface TodoSearchSuccess {
60
+ success: true;
61
+ data: {
62
+ content: string;
63
+ details: {
64
+ count: number;
65
+ results: TodoSearchItem[];
66
+ searchType: string;
67
+ userId: string;
68
+ };
69
+ };
70
+ }
71
+ /** Failed result */
72
+ export interface TodoSearchFailure {
73
+ success: false;
74
+ error: string;
75
+ }
76
+ export type TodoSearchResult = TodoSearchSuccess | TodoSearchFailure;
77
+ /** Tool configuration */
78
+ export interface TodoSearchToolOptions {
79
+ client: ApiClient;
80
+ logger: Logger;
81
+ config: PluginConfig;
82
+ userId: string;
83
+ }
84
+ /** Tool definition */
85
+ export interface TodoSearchTool {
86
+ name: string;
87
+ description: string;
88
+ parameters: typeof TodoSearchParamsSchema;
89
+ execute: (params: TodoSearchParams) => Promise<TodoSearchResult>;
90
+ }
91
+ /**
92
+ * Creates the todo_search tool.
93
+ */
94
+ export declare function createTodoSearchTool(options: TodoSearchToolOptions): TodoSearchTool;
95
+ //# sourceMappingURL=todo-search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"todo-search.d.ts","sourceRoot":"","sources":["../../src/tools/todo-search.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAIjD,sCAAsC;AACtC,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EASjC,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE,yBAAyB;AACzB,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,+BAA+B;AAC/B,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,IAAI,CAAC;IACd,IAAI,EAAE;QACJ,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE;YACP,KAAK,EAAE,MAAM,CAAC;YACd,OAAO,EAAE,cAAc,EAAE,CAAC;YAC1B,UAAU,EAAE,MAAM,CAAC;YACnB,MAAM,EAAE,MAAM,CAAC;SAChB,CAAC;KACH,CAAC;CACH;AAED,oBAAoB;AACpB,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,KAAK,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,gBAAgB,GAAG,iBAAiB,GAAG,iBAAiB,CAAC;AAErE,yBAAyB;AACzB,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,SAAS,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,sBAAsB;AACtB,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,OAAO,sBAAsB,CAAC;IAC1C,OAAO,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;CAClE;AASD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,qBAAqB,GAAG,cAAc,CA8JnF"}