@troykelly/openclaw-projects 0.0.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 (120) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +389 -0
  3. package/dist/api-client.d.ts +81 -0
  4. package/dist/api-client.d.ts.map +1 -0
  5. package/dist/api-client.js +216 -0
  6. package/dist/api-client.js.map +1 -0
  7. package/dist/cli.d.ts +112 -0
  8. package/dist/cli.d.ts.map +1 -0
  9. package/dist/cli.js +233 -0
  10. package/dist/cli.js.map +1 -0
  11. package/dist/config.d.ts +324 -0
  12. package/dist/config.d.ts.map +1 -0
  13. package/dist/config.js +287 -0
  14. package/dist/config.js.map +1 -0
  15. package/dist/context.d.ts +87 -0
  16. package/dist/context.d.ts.map +1 -0
  17. package/dist/context.js +144 -0
  18. package/dist/context.js.map +1 -0
  19. package/dist/gateway/rpc-methods.d.ts +93 -0
  20. package/dist/gateway/rpc-methods.d.ts.map +1 -0
  21. package/dist/gateway/rpc-methods.js +145 -0
  22. package/dist/gateway/rpc-methods.js.map +1 -0
  23. package/dist/hooks.d.ts +86 -0
  24. package/dist/hooks.d.ts.map +1 -0
  25. package/dist/hooks.js +314 -0
  26. package/dist/hooks.js.map +1 -0
  27. package/dist/index.d.ts +106 -0
  28. package/dist/index.d.ts.map +1 -0
  29. package/dist/index.js +221 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/logger.d.ts +22 -0
  32. package/dist/logger.d.ts.map +1 -0
  33. package/dist/logger.js +78 -0
  34. package/dist/logger.js.map +1 -0
  35. package/dist/register-openclaw.d.ts +43 -0
  36. package/dist/register-openclaw.d.ts.map +1 -0
  37. package/dist/register-openclaw.js +1838 -0
  38. package/dist/register-openclaw.js.map +1 -0
  39. package/dist/secrets.d.ts +56 -0
  40. package/dist/secrets.d.ts.map +1 -0
  41. package/dist/secrets.js +161 -0
  42. package/dist/secrets.js.map +1 -0
  43. package/dist/services/notification-service.d.ts +60 -0
  44. package/dist/services/notification-service.d.ts.map +1 -0
  45. package/dist/services/notification-service.js +145 -0
  46. package/dist/services/notification-service.js.map +1 -0
  47. package/dist/tools/contacts.d.ts +139 -0
  48. package/dist/tools/contacts.d.ts.map +1 -0
  49. package/dist/tools/contacts.js +333 -0
  50. package/dist/tools/contacts.js.map +1 -0
  51. package/dist/tools/email-send.d.ts +71 -0
  52. package/dist/tools/email-send.d.ts.map +1 -0
  53. package/dist/tools/email-send.js +132 -0
  54. package/dist/tools/email-send.js.map +1 -0
  55. package/dist/tools/file-share.d.ts +64 -0
  56. package/dist/tools/file-share.d.ts.map +1 -0
  57. package/dist/tools/file-share.js +133 -0
  58. package/dist/tools/file-share.js.map +1 -0
  59. package/dist/tools/index.d.ts +22 -0
  60. package/dist/tools/index.d.ts.map +1 -0
  61. package/dist/tools/index.js +33 -0
  62. package/dist/tools/index.js.map +1 -0
  63. package/dist/tools/memory-forget.d.ts +69 -0
  64. package/dist/tools/memory-forget.d.ts.map +1 -0
  65. package/dist/tools/memory-forget.js +224 -0
  66. package/dist/tools/memory-forget.js.map +1 -0
  67. package/dist/tools/memory-recall.d.ts +82 -0
  68. package/dist/tools/memory-recall.d.ts.map +1 -0
  69. package/dist/tools/memory-recall.js +161 -0
  70. package/dist/tools/memory-recall.js.map +1 -0
  71. package/dist/tools/memory-store.d.ts +80 -0
  72. package/dist/tools/memory-store.d.ts.map +1 -0
  73. package/dist/tools/memory-store.js +172 -0
  74. package/dist/tools/memory-store.js.map +1 -0
  75. package/dist/tools/message-search.d.ts +85 -0
  76. package/dist/tools/message-search.d.ts.map +1 -0
  77. package/dist/tools/message-search.js +137 -0
  78. package/dist/tools/message-search.js.map +1 -0
  79. package/dist/tools/notebooks.d.ts +155 -0
  80. package/dist/tools/notebooks.d.ts.map +1 -0
  81. package/dist/tools/notebooks.js +287 -0
  82. package/dist/tools/notebooks.js.map +1 -0
  83. package/dist/tools/notes.d.ts +272 -0
  84. package/dist/tools/notes.d.ts.map +1 -0
  85. package/dist/tools/notes.js +530 -0
  86. package/dist/tools/notes.js.map +1 -0
  87. package/dist/tools/projects.d.ts +139 -0
  88. package/dist/tools/projects.d.ts.map +1 -0
  89. package/dist/tools/projects.js +280 -0
  90. package/dist/tools/projects.js.map +1 -0
  91. package/dist/tools/relationships.d.ts +133 -0
  92. package/dist/tools/relationships.d.ts.map +1 -0
  93. package/dist/tools/relationships.js +281 -0
  94. package/dist/tools/relationships.js.map +1 -0
  95. package/dist/tools/sms-send.d.ts +62 -0
  96. package/dist/tools/sms-send.d.ts.map +1 -0
  97. package/dist/tools/sms-send.js +121 -0
  98. package/dist/tools/sms-send.js.map +1 -0
  99. package/dist/tools/threads.d.ts +127 -0
  100. package/dist/tools/threads.d.ts.map +1 -0
  101. package/dist/tools/threads.js +202 -0
  102. package/dist/tools/threads.js.map +1 -0
  103. package/dist/tools/todos.d.ts +142 -0
  104. package/dist/tools/todos.d.ts.map +1 -0
  105. package/dist/tools/todos.js +308 -0
  106. package/dist/tools/todos.js.map +1 -0
  107. package/dist/types/openclaw-api.d.ts +215 -0
  108. package/dist/types/openclaw-api.d.ts.map +1 -0
  109. package/dist/types/openclaw-api.js +10 -0
  110. package/dist/types/openclaw-api.js.map +1 -0
  111. package/dist/utils/zod-to-json-schema.d.ts +19 -0
  112. package/dist/utils/zod-to-json-schema.d.ts.map +1 -0
  113. package/dist/utils/zod-to-json-schema.js +132 -0
  114. package/dist/utils/zod-to-json-schema.js.map +1 -0
  115. package/openclaw.plugin.json +229 -0
  116. package/package.json +69 -0
  117. package/skills/contact-lookup/SKILL.md +30 -0
  118. package/skills/daily-summary/SKILL.md +23 -0
  119. package/skills/project-status/SKILL.md +33 -0
  120. package/skills/send-reminder/SKILL.md +42 -0
@@ -0,0 +1,132 @@
1
+ /**
2
+ * email_send tool implementation.
3
+ * Sends email messages via Postmark.
4
+ */
5
+ import { z } from 'zod';
6
+ /** Email validation regex (simplified, allowing most valid emails) */
7
+ const EMAIL_REGEX = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
8
+ /** Maximum subject line length (RFC 2822 recommends 78, but we allow up to 998) */
9
+ const MAX_SUBJECT_LENGTH = 998;
10
+ /** Parameters for email_send tool */
11
+ export const EmailSendParamsSchema = z.object({
12
+ to: z
13
+ .string()
14
+ .regex(EMAIL_REGEX, 'Invalid email address format'),
15
+ subject: z
16
+ .string()
17
+ .min(1, 'Subject cannot be empty')
18
+ .max(MAX_SUBJECT_LENGTH, `Subject must be ${MAX_SUBJECT_LENGTH} characters or less`),
19
+ body: z
20
+ .string()
21
+ .min(1, 'Email body cannot be empty'),
22
+ htmlBody: z.string().optional(),
23
+ threadId: z.string().optional(),
24
+ idempotencyKey: z.string().optional(),
25
+ });
26
+ /**
27
+ * Sanitize email addresses from error messages for privacy.
28
+ */
29
+ function sanitizeErrorMessage(error) {
30
+ if (error instanceof Error) {
31
+ // Remove email addresses from error messages
32
+ const sanitized = error.message.replace(/[^\s@]+@[^\s@]+\.[^\s@]+/g, '[email]');
33
+ return sanitized;
34
+ }
35
+ return 'An unexpected error occurred while sending email.';
36
+ }
37
+ /**
38
+ * Check if Postmark is configured.
39
+ */
40
+ function isPostmarkConfigured(config) {
41
+ return !!(config.postmarkToken && config.postmarkFromEmail);
42
+ }
43
+ /**
44
+ * Creates the email_send tool.
45
+ */
46
+ export function createEmailSendTool(options) {
47
+ const { client, logger, config, userId } = options;
48
+ return {
49
+ name: 'email_send',
50
+ description: 'Send an email message. Use when you need to communicate via email. ' +
51
+ 'Requires the recipient email address, subject, and body.',
52
+ parameters: EmailSendParamsSchema,
53
+ async execute(params) {
54
+ // Validate parameters
55
+ const parseResult = EmailSendParamsSchema.safeParse(params);
56
+ if (!parseResult.success) {
57
+ const errorMessage = parseResult.error.errors
58
+ .map((e) => `${e.path.join('.')}: ${e.message}`)
59
+ .join(', ');
60
+ return { success: false, error: errorMessage };
61
+ }
62
+ const { to, subject, body, htmlBody, threadId, idempotencyKey } = parseResult.data;
63
+ // Check Postmark configuration
64
+ if (!isPostmarkConfigured(config)) {
65
+ return {
66
+ success: false,
67
+ error: 'Postmark is not configured. Please configure Postmark credentials.',
68
+ };
69
+ }
70
+ // Log invocation (without email address for privacy)
71
+ logger.info('email_send invoked', {
72
+ userId,
73
+ subjectLength: subject.length,
74
+ bodyLength: body.length,
75
+ hasHtmlBody: !!htmlBody,
76
+ hasThreadId: !!threadId,
77
+ hasIdempotencyKey: !!idempotencyKey,
78
+ });
79
+ try {
80
+ // Call API
81
+ const response = await client.post('/api/postmark/email/send', {
82
+ to,
83
+ subject,
84
+ body,
85
+ htmlBody,
86
+ threadId,
87
+ idempotencyKey,
88
+ }, { userId });
89
+ if (!response.success) {
90
+ logger.error('email_send API error', {
91
+ userId,
92
+ status: response.error.status,
93
+ code: response.error.code,
94
+ });
95
+ return {
96
+ success: false,
97
+ error: response.error.message || 'Failed to send email',
98
+ };
99
+ }
100
+ const { messageId, threadId: responseThreadId, status } = response.data;
101
+ logger.debug('email_send completed', {
102
+ userId,
103
+ messageId,
104
+ status,
105
+ });
106
+ return {
107
+ success: true,
108
+ data: {
109
+ content: `Email sent successfully (ID: ${messageId}, Status: ${status})`,
110
+ details: {
111
+ messageId,
112
+ threadId: responseThreadId,
113
+ status,
114
+ userId,
115
+ },
116
+ },
117
+ };
118
+ }
119
+ catch (error) {
120
+ logger.error('email_send failed', {
121
+ userId,
122
+ error: error instanceof Error ? error.message : String(error),
123
+ });
124
+ return {
125
+ success: false,
126
+ error: sanitizeErrorMessage(error),
127
+ };
128
+ }
129
+ },
130
+ };
131
+ }
132
+ //# sourceMappingURL=email-send.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email-send.js","sourceRoot":"","sources":["../../src/tools/email-send.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * file_share tool implementation.
3
+ * Generates shareable download links for file attachments.
4
+ * Part of Epic #574, Issue #584.
5
+ */
6
+ import { z } from 'zod';
7
+ import type { ApiClient } from '../api-client.js';
8
+ import type { Logger } from '../logger.js';
9
+ /** Parameters for file_share tool */
10
+ export declare const FileShareParamsSchema: z.ZodObject<{
11
+ fileId: z.ZodString;
12
+ expiresIn: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
13
+ maxDownloads: z.ZodOptional<z.ZodNumber>;
14
+ }, "strip", z.ZodTypeAny, {
15
+ fileId: string;
16
+ expiresIn: number;
17
+ maxDownloads?: number | undefined;
18
+ }, {
19
+ fileId: string;
20
+ expiresIn?: number | undefined;
21
+ maxDownloads?: number | undefined;
22
+ }>;
23
+ export type FileShareParams = z.infer<typeof FileShareParamsSchema>;
24
+ /** Successful tool result */
25
+ export interface FileShareSuccess {
26
+ success: true;
27
+ data: {
28
+ content: string;
29
+ details: {
30
+ url: string;
31
+ shareToken: string;
32
+ expiresAt: string;
33
+ expiresIn: number;
34
+ filename: string;
35
+ contentType: string;
36
+ sizeBytes: number;
37
+ };
38
+ };
39
+ }
40
+ /** Failed tool result */
41
+ export interface FileShareFailure {
42
+ success: false;
43
+ error: string;
44
+ }
45
+ /** Tool result type */
46
+ export type FileShareResult = FileShareSuccess | FileShareFailure;
47
+ /** Tool configuration */
48
+ export interface FileShareToolOptions {
49
+ client: ApiClient;
50
+ logger: Logger;
51
+ userId: string;
52
+ }
53
+ /** Tool definition */
54
+ export interface FileShareTool {
55
+ name: string;
56
+ description: string;
57
+ parameters: typeof FileShareParamsSchema;
58
+ execute: (params: FileShareParams) => Promise<FileShareResult>;
59
+ }
60
+ /**
61
+ * Creates the file_share tool.
62
+ */
63
+ export declare function createFileShareTool(options: FileShareToolOptions): FileShareTool;
64
+ //# sourceMappingURL=file-share.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-share.d.ts","sourceRoot":"","sources":["../../src/tools/file-share.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAE1C,qCAAqC;AACrC,eAAO,MAAM,qBAAqB;;;;;;;;;;;;EAchC,CAAA;AACF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAanE,6BAA6B;AAC7B,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,IAAI,CAAA;IACb,IAAI,EAAE;QACJ,OAAO,EAAE,MAAM,CAAA;QACf,OAAO,EAAE;YACP,GAAG,EAAE,MAAM,CAAA;YACX,UAAU,EAAE,MAAM,CAAA;YAClB,SAAS,EAAE,MAAM,CAAA;YACjB,SAAS,EAAE,MAAM,CAAA;YACjB,QAAQ,EAAE,MAAM,CAAA;YAChB,WAAW,EAAE,MAAM,CAAA;YACnB,SAAS,EAAE,MAAM,CAAA;SAClB,CAAA;KACF,CAAA;CACF;AAED,yBAAyB;AACzB,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,KAAK,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;CACd;AAED,uBAAuB;AACvB,MAAM,MAAM,eAAe,GAAG,gBAAgB,GAAG,gBAAgB,CAAA;AAEjE,yBAAyB;AACzB,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,SAAS,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;CACf;AAED,sBAAsB;AACtB,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,OAAO,qBAAqB,CAAA;IACxC,OAAO,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,OAAO,CAAC,eAAe,CAAC,CAAA;CAC/D;AAsBD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CAiGhF"}
@@ -0,0 +1,133 @@
1
+ /**
2
+ * file_share tool implementation.
3
+ * Generates shareable download links for file attachments.
4
+ * Part of Epic #574, Issue #584.
5
+ */
6
+ import { z } from 'zod';
7
+ /** Parameters for file_share tool */
8
+ export const FileShareParamsSchema = z.object({
9
+ fileId: z.string().uuid('File ID must be a valid UUID'),
10
+ expiresIn: z
11
+ .number()
12
+ .int()
13
+ .min(60, 'Expiry must be at least 60 seconds')
14
+ .max(604800, 'Expiry must be at most 604800 seconds (7 days)')
15
+ .optional()
16
+ .default(3600),
17
+ maxDownloads: z
18
+ .number()
19
+ .int()
20
+ .min(1, 'Max downloads must be at least 1')
21
+ .optional(),
22
+ });
23
+ /**
24
+ * Format file size for human readability.
25
+ */
26
+ function formatFileSize(bytes) {
27
+ if (bytes < 1024)
28
+ return `${bytes} B`;
29
+ if (bytes < 1024 * 1024)
30
+ return `${(bytes / 1024).toFixed(1)} KB`;
31
+ if (bytes < 1024 * 1024 * 1024)
32
+ return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
33
+ return `${(bytes / (1024 * 1024 * 1024)).toFixed(1)} GB`;
34
+ }
35
+ /**
36
+ * Format duration for human readability.
37
+ */
38
+ function formatDuration(seconds) {
39
+ if (seconds < 60)
40
+ return `${seconds} seconds`;
41
+ if (seconds < 3600)
42
+ return `${Math.floor(seconds / 60)} minutes`;
43
+ if (seconds < 86400)
44
+ return `${Math.floor(seconds / 3600)} hours`;
45
+ return `${Math.floor(seconds / 86400)} days`;
46
+ }
47
+ /**
48
+ * Creates the file_share tool.
49
+ */
50
+ export function createFileShareTool(options) {
51
+ const { client, logger, userId } = options;
52
+ return {
53
+ name: 'file_share',
54
+ description: 'Generate a shareable download link for a file. Use when you need to share a file with someone outside the system. ' +
55
+ 'The link is time-limited and can be configured with an expiry time and optional download limit.',
56
+ parameters: FileShareParamsSchema,
57
+ async execute(params) {
58
+ // Validate parameters
59
+ const parseResult = FileShareParamsSchema.safeParse(params);
60
+ if (!parseResult.success) {
61
+ const errorMessage = parseResult.error.errors
62
+ .map((e) => `${e.path.join('.')}: ${e.message}`)
63
+ .join(', ');
64
+ return { success: false, error: errorMessage };
65
+ }
66
+ const { fileId, expiresIn, maxDownloads } = parseResult.data;
67
+ // Log invocation
68
+ logger.info('file_share invoked', {
69
+ userId,
70
+ fileId,
71
+ expiresIn,
72
+ maxDownloads,
73
+ });
74
+ try {
75
+ // Call API
76
+ const response = await client.post(`/api/files/${fileId}/share`, {
77
+ expiresIn,
78
+ maxDownloads,
79
+ }, { userId });
80
+ if (!response.success) {
81
+ logger.error('file_share API error', {
82
+ userId,
83
+ fileId,
84
+ status: response.error.status,
85
+ code: response.error.code,
86
+ });
87
+ return {
88
+ success: false,
89
+ error: response.error.message || 'Failed to create share link',
90
+ };
91
+ }
92
+ const { url, shareToken, expiresAt, filename, contentType, sizeBytes } = response.data;
93
+ logger.debug('file_share completed', {
94
+ userId,
95
+ fileId,
96
+ shareToken,
97
+ expiresAt,
98
+ });
99
+ const expiryText = formatDuration(expiresIn);
100
+ const sizeText = formatFileSize(sizeBytes);
101
+ const downloadLimit = maxDownloads ? ` (max ${maxDownloads} downloads)` : '';
102
+ return {
103
+ success: true,
104
+ data: {
105
+ content: `Share link created for "${filename}" (${sizeText}). ` +
106
+ `Valid for ${expiryText}${downloadLimit}.\n\nURL: ${url}`,
107
+ details: {
108
+ url,
109
+ shareToken,
110
+ expiresAt,
111
+ expiresIn,
112
+ filename,
113
+ contentType,
114
+ sizeBytes,
115
+ },
116
+ },
117
+ };
118
+ }
119
+ catch (error) {
120
+ logger.error('file_share failed', {
121
+ userId,
122
+ fileId,
123
+ error: error instanceof Error ? error.message : String(error),
124
+ });
125
+ return {
126
+ success: false,
127
+ error: error instanceof Error ? error.message : 'An unexpected error occurred while creating share link.',
128
+ };
129
+ }
130
+ },
131
+ };
132
+ }
133
+ //# sourceMappingURL=file-share.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-share.js","sourceRoot":"","sources":["../../src/tools/file-share.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Tool registration barrel.
3
+ * Exports all available tools for the plugin.
4
+ */
5
+ export { createMemoryRecallTool, MemoryRecallParamsSchema, MemoryCategory, type MemoryRecallParams, type MemoryRecallTool, type MemoryRecallResult, type Memory, } from './memory-recall.js';
6
+ export { createMemoryStoreTool, MemoryStoreParamsSchema, type MemoryStoreParams, type MemoryStoreTool, type MemoryStoreResult, type StoredMemory, } from './memory-store.js';
7
+ export { createMemoryForgetTool, MemoryForgetParamsSchema, type MemoryForgetParams, type MemoryForgetTool, type MemoryForgetResult, } from './memory-forget.js';
8
+ export { createProjectListTool, createProjectGetTool, createProjectCreateTool, ProjectListParamsSchema, ProjectGetParamsSchema, ProjectCreateParamsSchema, ProjectStatus, type ProjectListParams, type ProjectGetParams, type ProjectCreateParams, type ProjectListTool, type ProjectGetTool, type ProjectCreateTool, type ProjectListResult, type ProjectGetResult, type ProjectCreateResult, type Project, type ProjectToolOptions, } from './projects.js';
9
+ export { createTodoListTool, createTodoCreateTool, createTodoCompleteTool, TodoListParamsSchema, TodoCreateParamsSchema, TodoCompleteParamsSchema, type TodoListParams, type TodoCreateParams, type TodoCompleteParams, type TodoListTool, type TodoCreateTool, type TodoCompleteTool, type TodoListResult, type TodoCreateResult, type TodoCompleteResult, type Todo, type TodoToolOptions, } from './todos.js';
10
+ export { createContactSearchTool, createContactGetTool, createContactCreateTool, ContactSearchParamsSchema, ContactGetParamsSchema, ContactCreateParamsSchema, type ContactSearchParams, type ContactGetParams, type ContactCreateParams, type ContactSearchTool, type ContactGetTool, type ContactCreateTool, type ContactSearchResult, type ContactGetResult, type ContactCreateResult, type Contact, type ContactToolOptions, } from './contacts.js';
11
+ export { createSmsSendTool, SmsSendParamsSchema, type SmsSendParams, type SmsSendTool, type SmsSendResult, type SmsSendToolOptions, } from './sms-send.js';
12
+ export { createEmailSendTool, EmailSendParamsSchema, type EmailSendParams, type EmailSendTool, type EmailSendResult, type EmailSendToolOptions, } from './email-send.js';
13
+ export { createMessageSearchTool, MessageSearchParamsSchema, type MessageSearchParams, type MessageSearchTool, type MessageSearchResult, type MessageSearchToolOptions, } from './message-search.js';
14
+ export { createThreadListTool, createThreadGetTool, ThreadListParamsSchema, ThreadGetParamsSchema, type ThreadListParams, type ThreadGetParams, type ThreadListTool, type ThreadGetTool, type ThreadListResult, type ThreadGetResult, type ThreadToolOptions, } from './threads.js';
15
+ export { createNoteCreateTool, createNoteGetTool, createNoteUpdateTool, createNoteDeleteTool, createNoteSearchTool, NoteCreateParamsSchema, NoteGetParamsSchema, NoteUpdateParamsSchema, NoteDeleteParamsSchema, NoteSearchParamsSchema, NoteVisibility, type NoteCreateParams, type NoteGetParams, type NoteUpdateParams, type NoteDeleteParams, type NoteSearchParams, type NoteCreateTool, type NoteGetTool, type NoteUpdateTool, type NoteDeleteTool, type NoteSearchTool, type NoteCreateResult, type NoteGetResult, type NoteUpdateResult, type NoteDeleteResult, type NoteSearchToolResult, type Note, type NoteToolOptions, } from './notes.js';
16
+ export { createRelationshipSetTool, createRelationshipQueryTool, RelationshipSetParamsSchema, RelationshipQueryParamsSchema, type RelationshipSetParams, type RelationshipQueryParams, type RelationshipSetTool, type RelationshipQueryTool, type RelationshipSetResult, type RelationshipQueryResult, type RelatedContact, type RelationshipToolOptions, } from './relationships.js';
17
+ export { createNotebookListTool, createNotebookCreateTool, createNotebookGetTool, NotebookListParamsSchema, NotebookCreateParamsSchema, NotebookGetParamsSchema, type NotebookListParams, type NotebookCreateParams, type NotebookGetParams, type NotebookListTool, type NotebookCreateTool, type NotebookGetTool, type NotebookListResult, type NotebookCreateResult, type NotebookGetResult, type Notebook, type NotebookToolOptions, } from './notebooks.js';
18
+ export { createFileShareTool, FileShareParamsSchema, type FileShareParams, type FileShareTool, type FileShareResult, type FileShareToolOptions, } from './file-share.js';
19
+ /** Tool factory types */
20
+ export interface ToolFactoryOptions {
21
+ }
22
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Tool registration barrel.
3
+ * Exports all available tools for the plugin.
4
+ */
5
+ // Memory tools
6
+ export { createMemoryRecallTool, MemoryRecallParamsSchema, MemoryCategory, } from './memory-recall.js';
7
+ // memory_store tool
8
+ export { createMemoryStoreTool, MemoryStoreParamsSchema, } from './memory-store.js';
9
+ // memory_forget tool
10
+ export { createMemoryForgetTool, MemoryForgetParamsSchema, } from './memory-forget.js';
11
+ // Project tools
12
+ export { createProjectListTool, createProjectGetTool, createProjectCreateTool, ProjectListParamsSchema, ProjectGetParamsSchema, ProjectCreateParamsSchema, ProjectStatus, } from './projects.js';
13
+ // Todo tools
14
+ export { createTodoListTool, createTodoCreateTool, createTodoCompleteTool, TodoListParamsSchema, TodoCreateParamsSchema, TodoCompleteParamsSchema, } from './todos.js';
15
+ // Contact tools
16
+ export { createContactSearchTool, createContactGetTool, createContactCreateTool, ContactSearchParamsSchema, ContactGetParamsSchema, ContactCreateParamsSchema, } from './contacts.js';
17
+ // SMS tools
18
+ export { createSmsSendTool, SmsSendParamsSchema, } from './sms-send.js';
19
+ // Email tools
20
+ export { createEmailSendTool, EmailSendParamsSchema, } from './email-send.js';
21
+ // Message search tools
22
+ export { createMessageSearchTool, MessageSearchParamsSchema, } from './message-search.js';
23
+ // Thread tools
24
+ export { createThreadListTool, createThreadGetTool, ThreadListParamsSchema, ThreadGetParamsSchema, } from './threads.js';
25
+ // Note tools
26
+ export { createNoteCreateTool, createNoteGetTool, createNoteUpdateTool, createNoteDeleteTool, createNoteSearchTool, NoteCreateParamsSchema, NoteGetParamsSchema, NoteUpdateParamsSchema, NoteDeleteParamsSchema, NoteSearchParamsSchema, NoteVisibility, } from './notes.js';
27
+ // Relationship tools
28
+ export { createRelationshipSetTool, createRelationshipQueryTool, RelationshipSetParamsSchema, RelationshipQueryParamsSchema, } from './relationships.js';
29
+ // Notebook tools
30
+ export { createNotebookListTool, createNotebookCreateTool, createNotebookGetTool, NotebookListParamsSchema, NotebookCreateParamsSchema, NotebookGetParamsSchema, } from './notebooks.js';
31
+ // File sharing tools
32
+ export { createFileShareTool, FileShareParamsSchema, } from './file-share.js';
33
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAe;AACf,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,cAAc,GAKf,MAAM,oBAAoB,CAAA;AAE3B,oBAAoB;AACpB,OAAO,EACL,qBAAqB,EACrB,uBAAuB,GAKxB,MAAM,mBAAmB,CAAA;AAE1B,qBAAqB;AACrB,OAAO,EACL,sBAAsB,EACtB,wBAAwB,GAIzB,MAAM,oBAAoB,CAAA;AAE3B,gBAAgB;AAChB,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,uBAAuB,EACvB,uBAAuB,EACvB,sBAAsB,EACtB,yBAAyB,EACzB,aAAa,GAYd,MAAM,eAAe,CAAA;AAEtB,aAAa;AACb,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,EACpB,sBAAsB,EACtB,wBAAwB,GAYzB,MAAM,YAAY,CAAA;AAEnB,gBAAgB;AAChB,OAAO,EACL,uBAAuB,EACvB,oBAAoB,EACpB,uBAAuB,EACvB,yBAAyB,EACzB,sBAAsB,EACtB,yBAAyB,GAY1B,MAAM,eAAe,CAAA;AAEtB,YAAY;AACZ,OAAO,EACL,iBAAiB,EACjB,mBAAmB,GAKpB,MAAM,eAAe,CAAA;AAEtB,cAAc;AACd,OAAO,EACL,mBAAmB,EACnB,qBAAqB,GAKtB,MAAM,iBAAiB,CAAA;AAExB,uBAAuB;AACvB,OAAO,EACL,uBAAuB,EACvB,yBAAyB,GAK1B,MAAM,qBAAqB,CAAA;AAE5B,eAAe;AACf,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,sBAAsB,EACtB,qBAAqB,GAQtB,MAAM,cAAc,CAAA;AAErB,aAAa;AACb,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EACtB,mBAAmB,EACnB,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,EACtB,cAAc,GAkBf,MAAM,YAAY,CAAA;AAEnB,qBAAqB;AACrB,OAAO,EACL,yBAAyB,EACzB,2BAA2B,EAC3B,2BAA2B,EAC3B,6BAA6B,GAS9B,MAAM,oBAAoB,CAAA;AAE3B,iBAAiB;AACjB,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,qBAAqB,EACrB,wBAAwB,EACxB,0BAA0B,EAC1B,uBAAuB,GAYxB,MAAM,gBAAgB,CAAA;AAEvB,qBAAqB;AACrB,OAAO,EACL,mBAAmB,EACnB,qBAAqB,GAKtB,MAAM,iBAAiB,CAAA"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * memory_forget tool implementation.
3
+ * Provides GDPR-compliant memory deletion.
4
+ */
5
+ import { z } from 'zod';
6
+ import type { ApiClient } from '../api-client.js';
7
+ import type { Logger } from '../logger.js';
8
+ import type { PluginConfig } from '../config.js';
9
+ /** Parameters for memory_forget tool */
10
+ export declare const MemoryForgetParamsSchema: z.ZodEffects<z.ZodObject<{
11
+ memoryId: z.ZodOptional<z.ZodString>;
12
+ query: z.ZodOptional<z.ZodString>;
13
+ confirmBulkDelete: z.ZodOptional<z.ZodBoolean>;
14
+ }, "strip", z.ZodTypeAny, {
15
+ query?: string | undefined;
16
+ memoryId?: string | undefined;
17
+ confirmBulkDelete?: boolean | undefined;
18
+ }, {
19
+ query?: string | undefined;
20
+ memoryId?: string | undefined;
21
+ confirmBulkDelete?: boolean | undefined;
22
+ }>, {
23
+ query?: string | undefined;
24
+ memoryId?: string | undefined;
25
+ confirmBulkDelete?: boolean | undefined;
26
+ }, {
27
+ query?: string | undefined;
28
+ memoryId?: string | undefined;
29
+ confirmBulkDelete?: boolean | undefined;
30
+ }>;
31
+ export type MemoryForgetParams = z.infer<typeof MemoryForgetParamsSchema>;
32
+ /** Successful tool result */
33
+ export interface MemoryForgetSuccess {
34
+ success: true;
35
+ data: {
36
+ content: string;
37
+ details: {
38
+ deletedCount: number;
39
+ deletedIds: string[];
40
+ userId: string;
41
+ };
42
+ };
43
+ }
44
+ /** Failed tool result */
45
+ export interface MemoryForgetFailure {
46
+ success: false;
47
+ error: string;
48
+ }
49
+ /** Tool result type */
50
+ export type MemoryForgetResult = MemoryForgetSuccess | MemoryForgetFailure;
51
+ /** Tool configuration */
52
+ export interface MemoryForgetToolOptions {
53
+ client: ApiClient;
54
+ logger: Logger;
55
+ config: PluginConfig;
56
+ userId: string;
57
+ }
58
+ /** Tool definition */
59
+ export interface MemoryForgetTool {
60
+ name: string;
61
+ description: string;
62
+ parameters: typeof MemoryForgetParamsSchema;
63
+ execute: (params: MemoryForgetParams) => Promise<MemoryForgetResult>;
64
+ }
65
+ /**
66
+ * Creates the memory_forget tool.
67
+ */
68
+ export declare function createMemoryForgetTool(options: MemoryForgetToolOptions): MemoryForgetTool;
69
+ //# sourceMappingURL=memory-forget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-forget.d.ts","sourceRoot":"","sources":["../../src/tools/memory-forget.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAGhD,wCAAwC;AACxC,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;EAQjC,CAAA;AACJ,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAA;AAEzE,6BAA6B;AAC7B,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,IAAI,CAAA;IACb,IAAI,EAAE;QACJ,OAAO,EAAE,MAAM,CAAA;QACf,OAAO,EAAE;YACP,YAAY,EAAE,MAAM,CAAA;YACpB,UAAU,EAAE,MAAM,EAAE,CAAA;YACpB,MAAM,EAAE,MAAM,CAAA;SACf,CAAA;KACF,CAAA;CACF;AAED,yBAAyB;AACzB,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,KAAK,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;CACd;AAED,uBAAuB;AACvB,MAAM,MAAM,kBAAkB,GAAG,mBAAmB,GAAG,mBAAmB,CAAA;AAE1E,yBAAyB;AACzB,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,SAAS,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,YAAY,CAAA;IACpB,MAAM,EAAE,MAAM,CAAA;CACf;AAED,sBAAsB;AACtB,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,OAAO,wBAAwB,CAAA;IAC3C,OAAO,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAA;CACrE;AAgCD;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,uBAAuB,GAAG,gBAAgB,CAsDzF"}