@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.
- package/LICENSE +21 -0
- package/README.md +389 -0
- package/dist/api-client.d.ts +81 -0
- package/dist/api-client.d.ts.map +1 -0
- package/dist/api-client.js +216 -0
- package/dist/api-client.js.map +1 -0
- package/dist/cli.d.ts +112 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +233 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +324 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +287 -0
- package/dist/config.js.map +1 -0
- package/dist/context.d.ts +87 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +144 -0
- package/dist/context.js.map +1 -0
- package/dist/gateway/rpc-methods.d.ts +93 -0
- package/dist/gateway/rpc-methods.d.ts.map +1 -0
- package/dist/gateway/rpc-methods.js +145 -0
- package/dist/gateway/rpc-methods.js.map +1 -0
- package/dist/hooks.d.ts +86 -0
- package/dist/hooks.d.ts.map +1 -0
- package/dist/hooks.js +314 -0
- package/dist/hooks.js.map +1 -0
- package/dist/index.d.ts +106 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +221 -0
- package/dist/index.js.map +1 -0
- package/dist/logger.d.ts +22 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +78 -0
- package/dist/logger.js.map +1 -0
- package/dist/register-openclaw.d.ts +43 -0
- package/dist/register-openclaw.d.ts.map +1 -0
- package/dist/register-openclaw.js +1838 -0
- package/dist/register-openclaw.js.map +1 -0
- package/dist/secrets.d.ts +56 -0
- package/dist/secrets.d.ts.map +1 -0
- package/dist/secrets.js +161 -0
- package/dist/secrets.js.map +1 -0
- package/dist/services/notification-service.d.ts +60 -0
- package/dist/services/notification-service.d.ts.map +1 -0
- package/dist/services/notification-service.js +145 -0
- package/dist/services/notification-service.js.map +1 -0
- package/dist/tools/contacts.d.ts +139 -0
- package/dist/tools/contacts.d.ts.map +1 -0
- package/dist/tools/contacts.js +333 -0
- package/dist/tools/contacts.js.map +1 -0
- package/dist/tools/email-send.d.ts +71 -0
- package/dist/tools/email-send.d.ts.map +1 -0
- package/dist/tools/email-send.js +132 -0
- package/dist/tools/email-send.js.map +1 -0
- package/dist/tools/file-share.d.ts +64 -0
- package/dist/tools/file-share.d.ts.map +1 -0
- package/dist/tools/file-share.js +133 -0
- package/dist/tools/file-share.js.map +1 -0
- package/dist/tools/index.d.ts +22 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +33 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/memory-forget.d.ts +69 -0
- package/dist/tools/memory-forget.d.ts.map +1 -0
- package/dist/tools/memory-forget.js +224 -0
- package/dist/tools/memory-forget.js.map +1 -0
- package/dist/tools/memory-recall.d.ts +82 -0
- package/dist/tools/memory-recall.d.ts.map +1 -0
- package/dist/tools/memory-recall.js +161 -0
- package/dist/tools/memory-recall.js.map +1 -0
- package/dist/tools/memory-store.d.ts +80 -0
- package/dist/tools/memory-store.d.ts.map +1 -0
- package/dist/tools/memory-store.js +172 -0
- package/dist/tools/memory-store.js.map +1 -0
- package/dist/tools/message-search.d.ts +85 -0
- package/dist/tools/message-search.d.ts.map +1 -0
- package/dist/tools/message-search.js +137 -0
- package/dist/tools/message-search.js.map +1 -0
- package/dist/tools/notebooks.d.ts +155 -0
- package/dist/tools/notebooks.d.ts.map +1 -0
- package/dist/tools/notebooks.js +287 -0
- package/dist/tools/notebooks.js.map +1 -0
- package/dist/tools/notes.d.ts +272 -0
- package/dist/tools/notes.d.ts.map +1 -0
- package/dist/tools/notes.js +530 -0
- package/dist/tools/notes.js.map +1 -0
- package/dist/tools/projects.d.ts +139 -0
- package/dist/tools/projects.d.ts.map +1 -0
- package/dist/tools/projects.js +280 -0
- package/dist/tools/projects.js.map +1 -0
- package/dist/tools/relationships.d.ts +133 -0
- package/dist/tools/relationships.d.ts.map +1 -0
- package/dist/tools/relationships.js +281 -0
- package/dist/tools/relationships.js.map +1 -0
- package/dist/tools/sms-send.d.ts +62 -0
- package/dist/tools/sms-send.d.ts.map +1 -0
- package/dist/tools/sms-send.js +121 -0
- package/dist/tools/sms-send.js.map +1 -0
- package/dist/tools/threads.d.ts +127 -0
- package/dist/tools/threads.d.ts.map +1 -0
- package/dist/tools/threads.js +202 -0
- package/dist/tools/threads.js.map +1 -0
- package/dist/tools/todos.d.ts +142 -0
- package/dist/tools/todos.d.ts.map +1 -0
- package/dist/tools/todos.js +308 -0
- package/dist/tools/todos.js.map +1 -0
- package/dist/types/openclaw-api.d.ts +215 -0
- package/dist/types/openclaw-api.d.ts.map +1 -0
- package/dist/types/openclaw-api.js +10 -0
- package/dist/types/openclaw-api.js.map +1 -0
- package/dist/utils/zod-to-json-schema.d.ts +19 -0
- package/dist/utils/zod-to-json-schema.d.ts.map +1 -0
- package/dist/utils/zod-to-json-schema.js +132 -0
- package/dist/utils/zod-to-json-schema.js.map +1 -0
- package/openclaw.plugin.json +229 -0
- package/package.json +69 -0
- package/skills/contact-lookup/SKILL.md +30 -0
- package/skills/daily-summary/SKILL.md +23 -0
- package/skills/project-status/SKILL.md +33 -0
- package/skills/send-reminder/SKILL.md +42 -0
package/dist/hooks.js
ADDED
|
@@ -0,0 +1,314 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plugin lifecycle hooks implementation.
|
|
3
|
+
* Provides auto-recall and auto-capture functionality.
|
|
4
|
+
*/
|
|
5
|
+
/** Default timeout for auto-recall hook (5 seconds) */
|
|
6
|
+
const DEFAULT_RECALL_TIMEOUT_MS = 5000;
|
|
7
|
+
/** Default timeout for auto-capture hook (10 seconds) */
|
|
8
|
+
const DEFAULT_CAPTURE_TIMEOUT_MS = 10000;
|
|
9
|
+
/** Patterns that indicate sensitive content to filter */
|
|
10
|
+
const SENSITIVE_PATTERNS = [
|
|
11
|
+
/\b(?:password|passwd|pwd)\s*[:=]\s*\S+/gi,
|
|
12
|
+
/\b(?:api[_-]?key|apikey)\s*[:=]\s*\S+/gi,
|
|
13
|
+
/\bsk-[a-zA-Z0-9]{10,}/g, // API keys (10+ chars after sk-)
|
|
14
|
+
/\b(?:secret|token)\s*[:=]\s*\S+/gi,
|
|
15
|
+
/\b\d{4}[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b/, // Credit card numbers
|
|
16
|
+
/\b\d{3}-\d{2}-\d{4}\b/, // SSN
|
|
17
|
+
];
|
|
18
|
+
/**
|
|
19
|
+
* Create a promise that rejects after a timeout.
|
|
20
|
+
*/
|
|
21
|
+
function createTimeoutPromise(ms, timeoutResult) {
|
|
22
|
+
return new Promise((resolve) => {
|
|
23
|
+
setTimeout(() => resolve(timeoutResult), ms);
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Check if content contains sensitive patterns.
|
|
28
|
+
*/
|
|
29
|
+
function containsSensitiveContent(content) {
|
|
30
|
+
return SENSITIVE_PATTERNS.some((pattern) => pattern.test(content));
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Filter sensitive content from a string.
|
|
34
|
+
*/
|
|
35
|
+
function filterSensitiveContent(content) {
|
|
36
|
+
let filtered = content;
|
|
37
|
+
for (const pattern of SENSITIVE_PATTERNS) {
|
|
38
|
+
filtered = filtered.replace(pattern, '[REDACTED]');
|
|
39
|
+
}
|
|
40
|
+
return filtered;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Creates the auto-recall hook (before_agent_start).
|
|
44
|
+
*
|
|
45
|
+
* This hook fetches relevant context from the backend based on the user's prompt
|
|
46
|
+
* and returns it to be prepended to the conversation.
|
|
47
|
+
*/
|
|
48
|
+
export function createAutoRecallHook(options) {
|
|
49
|
+
const { client, logger, config, userId, timeoutMs = DEFAULT_RECALL_TIMEOUT_MS, } = options;
|
|
50
|
+
return async (event) => {
|
|
51
|
+
// Skip if auto-recall is disabled
|
|
52
|
+
if (!config.autoRecall) {
|
|
53
|
+
logger.debug('auto-recall skipped: disabled in config', { userId });
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
// Log without prompt content
|
|
57
|
+
logger.info('auto-recall invoked', {
|
|
58
|
+
userId,
|
|
59
|
+
promptLength: event.prompt.length,
|
|
60
|
+
});
|
|
61
|
+
try {
|
|
62
|
+
// Race between API call and timeout
|
|
63
|
+
const result = await Promise.race([
|
|
64
|
+
fetchContext(client, userId, event.prompt, logger, config.maxRecallMemories),
|
|
65
|
+
createTimeoutPromise(timeoutMs, null).then(() => {
|
|
66
|
+
logger.warn('auto-recall timeout exceeded', { userId, timeoutMs });
|
|
67
|
+
return null;
|
|
68
|
+
}),
|
|
69
|
+
]);
|
|
70
|
+
if (result === null) {
|
|
71
|
+
logger.debug('auto-recall returned no context', { userId });
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
logger.debug('auto-recall completed', {
|
|
75
|
+
userId,
|
|
76
|
+
contextLength: result.prependContext.length,
|
|
77
|
+
});
|
|
78
|
+
return result;
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
logger.error('auto-recall failed', {
|
|
82
|
+
userId,
|
|
83
|
+
error: error instanceof Error ? error.message : String(error),
|
|
84
|
+
});
|
|
85
|
+
return null;
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Fetch context from the backend API using semantic memory search.
|
|
91
|
+
*
|
|
92
|
+
* Uses the existing `/api/memories/search` endpoint (which works)
|
|
93
|
+
* instead of the non-existent `/api/context` endpoint.
|
|
94
|
+
* The user's actual prompt is passed as the search query for semantic matching.
|
|
95
|
+
*/
|
|
96
|
+
async function fetchContext(client, userId, prompt, logger, maxResults = 5) {
|
|
97
|
+
// Truncate prompt to a reasonable length for the search query
|
|
98
|
+
const searchQuery = prompt.substring(0, 500);
|
|
99
|
+
const queryParams = new URLSearchParams({
|
|
100
|
+
q: searchQuery,
|
|
101
|
+
limit: String(maxResults),
|
|
102
|
+
});
|
|
103
|
+
const response = await client.get(`/api/memories/search?${queryParams.toString()}`, { userId });
|
|
104
|
+
if (!response.success) {
|
|
105
|
+
logger.error('auto-recall API error', {
|
|
106
|
+
userId,
|
|
107
|
+
status: response.error.status,
|
|
108
|
+
code: response.error.code,
|
|
109
|
+
});
|
|
110
|
+
return null;
|
|
111
|
+
}
|
|
112
|
+
const memories = response.data.memories ?? [];
|
|
113
|
+
if (memories.length === 0) {
|
|
114
|
+
return null;
|
|
115
|
+
}
|
|
116
|
+
// Format memories as context to prepend to the conversation
|
|
117
|
+
const context = memories
|
|
118
|
+
.map((m) => `- [${m.category}] ${m.content}`)
|
|
119
|
+
.join('\n');
|
|
120
|
+
return {
|
|
121
|
+
prependContext: context,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Creates the auto-capture hook (agent_end).
|
|
126
|
+
*
|
|
127
|
+
* This hook analyzes the completed conversation and stores important
|
|
128
|
+
* information as memories.
|
|
129
|
+
*/
|
|
130
|
+
export function createAutoCaptureHook(options) {
|
|
131
|
+
const { client, logger, config, userId, timeoutMs = DEFAULT_CAPTURE_TIMEOUT_MS, } = options;
|
|
132
|
+
return async (event) => {
|
|
133
|
+
// Skip if auto-capture is disabled
|
|
134
|
+
if (!config.autoCapture) {
|
|
135
|
+
logger.debug('auto-capture skipped: disabled in config', { userId });
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
// Skip empty conversations
|
|
139
|
+
if (!event.messages || event.messages.length === 0) {
|
|
140
|
+
logger.debug('auto-capture skipped: no messages', { userId });
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
// Log without message content
|
|
144
|
+
logger.info('auto-capture invoked', {
|
|
145
|
+
userId,
|
|
146
|
+
messageCount: event.messages.length,
|
|
147
|
+
});
|
|
148
|
+
try {
|
|
149
|
+
// Race between API call and timeout
|
|
150
|
+
await Promise.race([
|
|
151
|
+
captureContext(client, userId, event.messages, logger),
|
|
152
|
+
createTimeoutPromise(timeoutMs, undefined).then(() => {
|
|
153
|
+
logger.warn('auto-capture timeout exceeded', { userId, timeoutMs });
|
|
154
|
+
}),
|
|
155
|
+
]);
|
|
156
|
+
logger.debug('auto-capture completed', { userId });
|
|
157
|
+
}
|
|
158
|
+
catch (error) {
|
|
159
|
+
logger.error('auto-capture failed', {
|
|
160
|
+
userId,
|
|
161
|
+
error: error instanceof Error ? error.message : String(error),
|
|
162
|
+
});
|
|
163
|
+
// Don't throw - hook errors should not crash the agent
|
|
164
|
+
}
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Capture context from conversation messages.
|
|
169
|
+
*/
|
|
170
|
+
async function captureContext(client, userId, messages, logger) {
|
|
171
|
+
// Filter out messages with sensitive content
|
|
172
|
+
const filteredMessages = messages.filter((msg) => {
|
|
173
|
+
if (containsSensitiveContent(msg.content)) {
|
|
174
|
+
logger.debug('auto-capture filtered sensitive message', { userId });
|
|
175
|
+
return false;
|
|
176
|
+
}
|
|
177
|
+
return true;
|
|
178
|
+
});
|
|
179
|
+
if (filteredMessages.length === 0) {
|
|
180
|
+
logger.debug('auto-capture skipped: all messages filtered', { userId });
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
// Prepare conversation summary for capture
|
|
184
|
+
const conversationSummary = filteredMessages
|
|
185
|
+
.map((msg) => filterSensitiveContent(msg.content))
|
|
186
|
+
.join('\n');
|
|
187
|
+
const response = await client.post('/api/context/capture', {
|
|
188
|
+
conversation: conversationSummary,
|
|
189
|
+
messageCount: filteredMessages.length,
|
|
190
|
+
}, { userId });
|
|
191
|
+
if (!response.success) {
|
|
192
|
+
logger.error('auto-capture API error', {
|
|
193
|
+
userId,
|
|
194
|
+
status: response.error.status,
|
|
195
|
+
code: response.error.code,
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Creates a graph-aware auto-recall hook (before_agent_start).
|
|
201
|
+
*
|
|
202
|
+
* This hook uses the graph-aware context retrieval API to fetch memories
|
|
203
|
+
* across the user's relationship graph (personal, contact, group, relationship
|
|
204
|
+
* scopes). Falls back to basic memory search if the graph-aware endpoint
|
|
205
|
+
* is unavailable.
|
|
206
|
+
*
|
|
207
|
+
* Part of Epic #486, Issue #497.
|
|
208
|
+
*/
|
|
209
|
+
export function createGraphAwareRecallHook(options) {
|
|
210
|
+
const { client, logger, config, userId, timeoutMs = DEFAULT_RECALL_TIMEOUT_MS, } = options;
|
|
211
|
+
return async (event) => {
|
|
212
|
+
// Skip if auto-recall is disabled
|
|
213
|
+
if (!config.autoRecall) {
|
|
214
|
+
logger.debug('graph-aware-recall skipped: disabled in config', { userId });
|
|
215
|
+
return null;
|
|
216
|
+
}
|
|
217
|
+
// Log without prompt content
|
|
218
|
+
logger.info('graph-aware-recall invoked', {
|
|
219
|
+
userId,
|
|
220
|
+
promptLength: event.prompt.length,
|
|
221
|
+
});
|
|
222
|
+
try {
|
|
223
|
+
// Race between API call and timeout
|
|
224
|
+
const result = await Promise.race([
|
|
225
|
+
fetchGraphAwareContext(client, userId, event.prompt, logger, config.maxRecallMemories),
|
|
226
|
+
createTimeoutPromise(timeoutMs, null).then(() => {
|
|
227
|
+
logger.warn('graph-aware-recall timeout exceeded', { userId, timeoutMs });
|
|
228
|
+
return null;
|
|
229
|
+
}),
|
|
230
|
+
]);
|
|
231
|
+
if (result === null) {
|
|
232
|
+
logger.debug('graph-aware-recall returned no context', { userId });
|
|
233
|
+
return null;
|
|
234
|
+
}
|
|
235
|
+
logger.debug('graph-aware-recall completed', {
|
|
236
|
+
userId,
|
|
237
|
+
contextLength: result.prependContext.length,
|
|
238
|
+
});
|
|
239
|
+
return result;
|
|
240
|
+
}
|
|
241
|
+
catch (error) {
|
|
242
|
+
logger.error('graph-aware-recall failed', {
|
|
243
|
+
userId,
|
|
244
|
+
error: error instanceof Error ? error.message : String(error),
|
|
245
|
+
});
|
|
246
|
+
return null;
|
|
247
|
+
}
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Fetch context using the graph-aware context retrieval API.
|
|
252
|
+
*
|
|
253
|
+
* Calls POST /api/context/graph-aware with the user's prompt for
|
|
254
|
+
* multi-scope semantic search across relationships.
|
|
255
|
+
* Falls back to basic /api/memories/search if the graph-aware endpoint fails.
|
|
256
|
+
*/
|
|
257
|
+
async function fetchGraphAwareContext(client, userId, prompt, logger, maxResults = 10) {
|
|
258
|
+
// Truncate prompt for the search query
|
|
259
|
+
const searchPrompt = prompt.substring(0, 500);
|
|
260
|
+
// Try graph-aware endpoint first
|
|
261
|
+
const graphResponse = await client.post('/api/context/graph-aware', {
|
|
262
|
+
prompt: searchPrompt,
|
|
263
|
+
maxMemories: maxResults,
|
|
264
|
+
maxDepth: 1,
|
|
265
|
+
}, { userId });
|
|
266
|
+
if (graphResponse.success && graphResponse.data.context) {
|
|
267
|
+
logger.debug('graph-aware context retrieved', {
|
|
268
|
+
userId,
|
|
269
|
+
memoryCount: graphResponse.data.memories.length,
|
|
270
|
+
scopeCount: graphResponse.data.metadata.scopeCount,
|
|
271
|
+
searchType: graphResponse.data.metadata.searchType,
|
|
272
|
+
queryTimeMs: graphResponse.data.metadata.queryTimeMs,
|
|
273
|
+
});
|
|
274
|
+
return {
|
|
275
|
+
prependContext: graphResponse.data.context,
|
|
276
|
+
};
|
|
277
|
+
}
|
|
278
|
+
// Fall back to basic memory search if graph-aware endpoint fails
|
|
279
|
+
logger.debug('graph-aware endpoint unavailable, falling back to basic recall', {
|
|
280
|
+
userId,
|
|
281
|
+
graphError: graphResponse.success ? 'no context' : graphResponse.error.code,
|
|
282
|
+
});
|
|
283
|
+
return fetchContext(client, userId, prompt, logger, maxResults);
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Creates the health check function.
|
|
287
|
+
*/
|
|
288
|
+
export function createHealthCheck(options) {
|
|
289
|
+
const { client, logger } = options;
|
|
290
|
+
return async () => {
|
|
291
|
+
try {
|
|
292
|
+
const response = await client.healthCheck();
|
|
293
|
+
if (!response.healthy) {
|
|
294
|
+
logger.warn('health check failed', { latencyMs: response.latencyMs });
|
|
295
|
+
return {
|
|
296
|
+
healthy: false,
|
|
297
|
+
error: 'Health check failed',
|
|
298
|
+
};
|
|
299
|
+
}
|
|
300
|
+
logger.debug('health check passed', { latencyMs: response.latencyMs });
|
|
301
|
+
return { healthy: true };
|
|
302
|
+
}
|
|
303
|
+
catch (error) {
|
|
304
|
+
logger.error('health check error', {
|
|
305
|
+
error: error instanceof Error ? error.message : String(error),
|
|
306
|
+
});
|
|
307
|
+
return {
|
|
308
|
+
healthy: false,
|
|
309
|
+
error: error instanceof Error ? error.message : 'Unknown error',
|
|
310
|
+
};
|
|
311
|
+
}
|
|
312
|
+
};
|
|
313
|
+
}
|
|
314
|
+
//# sourceMappingURL=hooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenClaw Projects Plugin
|
|
3
|
+
*
|
|
4
|
+
* This plugin provides memory management, projects, todos, and contacts
|
|
5
|
+
* integration for OpenClaw agents.
|
|
6
|
+
*
|
|
7
|
+
* Supports two registration patterns:
|
|
8
|
+
* 1. OpenClaw 2026 API: `export default (api) => { ... }` (recommended)
|
|
9
|
+
* 2. Legacy API: `register(ctx)` returns plugin instance (deprecated)
|
|
10
|
+
*/
|
|
11
|
+
export { default, registerOpenClaw, schemas } from './register-openclaw.js';
|
|
12
|
+
export type { OpenClawPluginAPI, PluginInitializer, PluginDefinition, ToolDefinition, ToolContext, ToolResult, JSONSchema, JSONSchemaProperty, HookEvent, HookHandler, PluginHookName, PluginHookBeforeAgentStartEvent, PluginHookAgentContext, PluginHookBeforeAgentStartResult, PluginHookAgentEndEvent, CliRegistrationCallback, CliRegistrationContext, ServiceDefinition, } from './types/openclaw-api.js';
|
|
13
|
+
import type { PluginConfig } from './config.js';
|
|
14
|
+
import { type Logger } from './logger.js';
|
|
15
|
+
import { type ApiClient } from './api-client.js';
|
|
16
|
+
import { type PluginContext } from './context.js';
|
|
17
|
+
import { type AutoRecallEvent, type AutoRecallResult, type AutoCaptureEvent, type HealthCheckResult } from './hooks.js';
|
|
18
|
+
import { type CliCommands } from './cli.js';
|
|
19
|
+
import { type MemoryRecallTool, type MemoryStoreTool, type MemoryForgetTool, type ProjectListTool, type ProjectGetTool, type ProjectCreateTool, type TodoListTool, type TodoCreateTool, type TodoCompleteTool, type ContactSearchTool, type ContactGetTool, type ContactCreateTool } from './tools/index.js';
|
|
20
|
+
/** Plugin registration context from OpenClaw runtime */
|
|
21
|
+
export interface RegistrationContext {
|
|
22
|
+
config: Record<string, unknown>;
|
|
23
|
+
logger?: Logger;
|
|
24
|
+
runtime?: unknown;
|
|
25
|
+
}
|
|
26
|
+
/** Tool instances created for the plugin */
|
|
27
|
+
export interface PluginTools {
|
|
28
|
+
memoryRecall: MemoryRecallTool;
|
|
29
|
+
memoryStore: MemoryStoreTool;
|
|
30
|
+
memoryForget: MemoryForgetTool;
|
|
31
|
+
projectList: ProjectListTool;
|
|
32
|
+
projectGet: ProjectGetTool;
|
|
33
|
+
projectCreate: ProjectCreateTool;
|
|
34
|
+
todoList: TodoListTool;
|
|
35
|
+
todoCreate: TodoCreateTool;
|
|
36
|
+
todoComplete: TodoCompleteTool;
|
|
37
|
+
contactSearch: ContactSearchTool;
|
|
38
|
+
contactGet: ContactGetTool;
|
|
39
|
+
contactCreate: ContactCreateTool;
|
|
40
|
+
}
|
|
41
|
+
/** Lifecycle hooks for the plugin */
|
|
42
|
+
export interface PluginHooks {
|
|
43
|
+
beforeAgentStart: (event: AutoRecallEvent) => Promise<AutoRecallResult | null>;
|
|
44
|
+
agentEnd: (event: AutoCaptureEvent) => Promise<void>;
|
|
45
|
+
}
|
|
46
|
+
/** Plugin instance after registration */
|
|
47
|
+
export interface PluginInstance {
|
|
48
|
+
id: string;
|
|
49
|
+
name: string;
|
|
50
|
+
kind: string;
|
|
51
|
+
config: PluginConfig;
|
|
52
|
+
apiClient: ApiClient;
|
|
53
|
+
context: PluginContext;
|
|
54
|
+
tools: PluginTools;
|
|
55
|
+
hooks: PluginHooks;
|
|
56
|
+
cli: CliCommands;
|
|
57
|
+
healthCheck: () => Promise<HealthCheckResult>;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Registers the plugin with OpenClaw (synchronous version).
|
|
61
|
+
*
|
|
62
|
+
* This function supports configurations with direct secret values only.
|
|
63
|
+
* For file or command-based secrets, use registerAsync instead.
|
|
64
|
+
*
|
|
65
|
+
* @deprecated Use registerAsync for flexible secret handling
|
|
66
|
+
*/
|
|
67
|
+
export declare function register(ctx: RegistrationContext): PluginInstance;
|
|
68
|
+
/**
|
|
69
|
+
* Registers the plugin with OpenClaw (asynchronous version).
|
|
70
|
+
*
|
|
71
|
+
* This function supports all secret loading methods:
|
|
72
|
+
* - Direct values (apiKey: "sk-xxx")
|
|
73
|
+
* - File references (apiKeyFile: "~/.secrets/api_key")
|
|
74
|
+
* - Command references (apiKeyCommand: "op read op://...")
|
|
75
|
+
*
|
|
76
|
+
* Preferred over register() for flexible secret handling.
|
|
77
|
+
*/
|
|
78
|
+
export declare function registerAsync(ctx: RegistrationContext): Promise<PluginInstance>;
|
|
79
|
+
/** Plugin definition object for OpenClaw */
|
|
80
|
+
export declare const plugin: {
|
|
81
|
+
id: string;
|
|
82
|
+
name: string;
|
|
83
|
+
kind: string;
|
|
84
|
+
register: typeof register;
|
|
85
|
+
};
|
|
86
|
+
export type { PluginConfig, RawPluginConfig } from './config.js';
|
|
87
|
+
export { validateConfig, safeValidateConfig, validateRawConfig, safeValidateRawConfig, resolveConfigSecrets, redactConfig, } from './config.js';
|
|
88
|
+
export type { SecretConfig } from './secrets.js';
|
|
89
|
+
export { resolveSecret, resolveSecrets, clearSecretCache, clearCachedSecret } from './secrets.js';
|
|
90
|
+
export type { Logger } from './logger.js';
|
|
91
|
+
export { createLogger, redactSensitive } from './logger.js';
|
|
92
|
+
export type { ApiClient, ApiResponse, ApiError } from './api-client.js';
|
|
93
|
+
export { createApiClient } from './api-client.js';
|
|
94
|
+
export type { PluginContext, UserContext, AgentContext, SessionContext, } from './context.js';
|
|
95
|
+
export { extractContext, getUserScopeKey } from './context.js';
|
|
96
|
+
export type { MemoryRecallTool, MemoryRecallParams, MemoryRecallResult, Memory, MemoryStoreTool, MemoryStoreParams, MemoryStoreResult, StoredMemory, MemoryForgetTool, MemoryForgetParams, MemoryForgetResult, ProjectListTool, ProjectGetTool, ProjectCreateTool, ProjectListParams, ProjectGetParams, ProjectCreateParams, ProjectListResult, ProjectGetResult, ProjectCreateResult, Project, ProjectToolOptions, TodoListTool, TodoCreateTool, TodoCompleteTool, TodoListParams, TodoCreateParams, TodoCompleteParams, TodoListResult, TodoCreateResult, TodoCompleteResult, Todo, TodoToolOptions, ContactSearchTool, ContactGetTool, ContactCreateTool, ContactSearchParams, ContactGetParams, ContactCreateParams, ContactSearchResult, ContactGetResult, ContactCreateResult, Contact, ContactToolOptions, } from './tools/index.js';
|
|
97
|
+
export { createMemoryRecallTool, createMemoryStoreTool, createMemoryForgetTool, createProjectListTool, createProjectGetTool, createProjectCreateTool, createTodoListTool, createTodoCreateTool, createTodoCompleteTool, createContactSearchTool, createContactGetTool, createContactCreateTool, MemoryRecallParamsSchema, MemoryStoreParamsSchema, MemoryForgetParamsSchema, MemoryCategory, ProjectListParamsSchema, ProjectGetParamsSchema, ProjectCreateParamsSchema, ProjectStatus, TodoListParamsSchema, TodoCreateParamsSchema, TodoCompleteParamsSchema, ContactSearchParamsSchema, ContactGetParamsSchema, ContactCreateParamsSchema, } from './tools/index.js';
|
|
98
|
+
export type { AutoRecallEvent, AutoRecallResult, AutoCaptureEvent, HealthCheckResult, AutoRecallHookOptions, AutoCaptureHookOptions, HealthCheckOptions, } from './hooks.js';
|
|
99
|
+
export { createAutoRecallHook, createAutoCaptureHook, createHealthCheck, } from './hooks.js';
|
|
100
|
+
export type { CliContext, CliCommands, CommandResult, RecallOptions, ExportOptions, StatusData, UsersData, RecallData, StatsData, ExportData, MemoryItem, } from './cli.js';
|
|
101
|
+
export { createCliCommands, createStatusCommand, createUsersCommand, createRecallCommand, createStatsCommand, createExportCommand, } from './cli.js';
|
|
102
|
+
export type { NotificationEvent, SubscribeParams, SubscribeResult, UnsubscribeParams, UnsubscribeResult, GetNotificationsParams, GetNotificationsResult, Notification, GatewayMethods, GatewayMethodsOptions, } from './gateway/rpc-methods.js';
|
|
103
|
+
export { createGatewayMethods, registerGatewayRpcMethods, } from './gateway/rpc-methods.js';
|
|
104
|
+
export type { NotificationServiceConfig, NotificationServiceEvents, NotificationServiceOptions, NotificationService, } from './services/notification-service.js';
|
|
105
|
+
export { createNotificationService, } from './services/notification-service.js';
|
|
106
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenClaw Projects Plugin
|
|
3
|
+
*
|
|
4
|
+
* This plugin provides memory management, projects, todos, and contacts
|
|
5
|
+
* integration for OpenClaw agents.
|
|
6
|
+
*
|
|
7
|
+
* Supports two registration patterns:
|
|
8
|
+
* 1. OpenClaw 2026 API: `export default (api) => { ... }` (recommended)
|
|
9
|
+
* 2. Legacy API: `register(ctx)` returns plugin instance (deprecated)
|
|
10
|
+
*/
|
|
11
|
+
// Re-export the OpenClaw 2026 API default export
|
|
12
|
+
export { default, registerOpenClaw, schemas } from './register-openclaw.js';
|
|
13
|
+
import { validateConfig, validateRawConfig, resolveConfigSecrets, redactConfig, } from './config.js';
|
|
14
|
+
import { createLogger } from './logger.js';
|
|
15
|
+
import { createApiClient } from './api-client.js';
|
|
16
|
+
import { extractContext, getUserScopeKey } from './context.js';
|
|
17
|
+
import { createAutoRecallHook, createAutoCaptureHook, createHealthCheck, } from './hooks.js';
|
|
18
|
+
import { createCliCommands, } from './cli.js';
|
|
19
|
+
import { createMemoryRecallTool, createMemoryStoreTool, createMemoryForgetTool, createProjectListTool, createProjectGetTool, createProjectCreateTool, createTodoListTool, createTodoCreateTool, createTodoCompleteTool, createContactSearchTool, createContactGetTool, createContactCreateTool, } from './tools/index.js';
|
|
20
|
+
/**
|
|
21
|
+
* Creates a plugin instance from resolved configuration.
|
|
22
|
+
* Internal helper used by both sync and async registration.
|
|
23
|
+
*/
|
|
24
|
+
function createPluginInstance(config, logger, runtime) {
|
|
25
|
+
// Create API client
|
|
26
|
+
const apiClient = createApiClient({ config, logger });
|
|
27
|
+
// Extract context
|
|
28
|
+
const context = extractContext(runtime);
|
|
29
|
+
// Determine user scope key based on config
|
|
30
|
+
const userId = getUserScopeKey({
|
|
31
|
+
agentId: context.agent.agentId,
|
|
32
|
+
sessionKey: context.session.sessionId,
|
|
33
|
+
}, config.userScoping);
|
|
34
|
+
// Create tools
|
|
35
|
+
const tools = {
|
|
36
|
+
memoryRecall: createMemoryRecallTool({
|
|
37
|
+
client: apiClient,
|
|
38
|
+
logger,
|
|
39
|
+
config,
|
|
40
|
+
userId,
|
|
41
|
+
}),
|
|
42
|
+
memoryStore: createMemoryStoreTool({
|
|
43
|
+
client: apiClient,
|
|
44
|
+
logger,
|
|
45
|
+
config,
|
|
46
|
+
userId,
|
|
47
|
+
}),
|
|
48
|
+
memoryForget: createMemoryForgetTool({
|
|
49
|
+
client: apiClient,
|
|
50
|
+
logger,
|
|
51
|
+
config,
|
|
52
|
+
userId,
|
|
53
|
+
}),
|
|
54
|
+
projectList: createProjectListTool({
|
|
55
|
+
client: apiClient,
|
|
56
|
+
logger,
|
|
57
|
+
config,
|
|
58
|
+
userId,
|
|
59
|
+
}),
|
|
60
|
+
projectGet: createProjectGetTool({
|
|
61
|
+
client: apiClient,
|
|
62
|
+
logger,
|
|
63
|
+
config,
|
|
64
|
+
userId,
|
|
65
|
+
}),
|
|
66
|
+
projectCreate: createProjectCreateTool({
|
|
67
|
+
client: apiClient,
|
|
68
|
+
logger,
|
|
69
|
+
config,
|
|
70
|
+
userId,
|
|
71
|
+
}),
|
|
72
|
+
todoList: createTodoListTool({
|
|
73
|
+
client: apiClient,
|
|
74
|
+
logger,
|
|
75
|
+
config,
|
|
76
|
+
userId,
|
|
77
|
+
}),
|
|
78
|
+
todoCreate: createTodoCreateTool({
|
|
79
|
+
client: apiClient,
|
|
80
|
+
logger,
|
|
81
|
+
config,
|
|
82
|
+
userId,
|
|
83
|
+
}),
|
|
84
|
+
todoComplete: createTodoCompleteTool({
|
|
85
|
+
client: apiClient,
|
|
86
|
+
logger,
|
|
87
|
+
config,
|
|
88
|
+
userId,
|
|
89
|
+
}),
|
|
90
|
+
contactSearch: createContactSearchTool({
|
|
91
|
+
client: apiClient,
|
|
92
|
+
logger,
|
|
93
|
+
config,
|
|
94
|
+
userId,
|
|
95
|
+
}),
|
|
96
|
+
contactGet: createContactGetTool({
|
|
97
|
+
client: apiClient,
|
|
98
|
+
logger,
|
|
99
|
+
config,
|
|
100
|
+
userId,
|
|
101
|
+
}),
|
|
102
|
+
contactCreate: createContactCreateTool({
|
|
103
|
+
client: apiClient,
|
|
104
|
+
logger,
|
|
105
|
+
config,
|
|
106
|
+
userId,
|
|
107
|
+
}),
|
|
108
|
+
};
|
|
109
|
+
// Create lifecycle hooks
|
|
110
|
+
const hooks = {
|
|
111
|
+
beforeAgentStart: createAutoRecallHook({
|
|
112
|
+
client: apiClient,
|
|
113
|
+
logger,
|
|
114
|
+
config,
|
|
115
|
+
userId,
|
|
116
|
+
}),
|
|
117
|
+
agentEnd: createAutoCaptureHook({
|
|
118
|
+
client: apiClient,
|
|
119
|
+
logger,
|
|
120
|
+
config,
|
|
121
|
+
userId,
|
|
122
|
+
}),
|
|
123
|
+
};
|
|
124
|
+
// Create health check
|
|
125
|
+
const healthCheck = createHealthCheck({ client: apiClient, logger });
|
|
126
|
+
// Create CLI commands
|
|
127
|
+
const cli = createCliCommands({
|
|
128
|
+
client: apiClient,
|
|
129
|
+
logger,
|
|
130
|
+
config,
|
|
131
|
+
userId,
|
|
132
|
+
});
|
|
133
|
+
logger.info('Plugin registered', {
|
|
134
|
+
agentId: context.agent.agentId,
|
|
135
|
+
sessionId: context.session.sessionId,
|
|
136
|
+
userId,
|
|
137
|
+
config: redactConfig(config),
|
|
138
|
+
});
|
|
139
|
+
return {
|
|
140
|
+
id: 'openclaw-projects',
|
|
141
|
+
name: 'OpenClaw Projects Plugin',
|
|
142
|
+
kind: 'memory',
|
|
143
|
+
config,
|
|
144
|
+
apiClient,
|
|
145
|
+
context,
|
|
146
|
+
tools,
|
|
147
|
+
hooks,
|
|
148
|
+
cli,
|
|
149
|
+
healthCheck,
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Registers the plugin with OpenClaw (synchronous version).
|
|
154
|
+
*
|
|
155
|
+
* This function supports configurations with direct secret values only.
|
|
156
|
+
* For file or command-based secrets, use registerAsync instead.
|
|
157
|
+
*
|
|
158
|
+
* @deprecated Use registerAsync for flexible secret handling
|
|
159
|
+
*/
|
|
160
|
+
export function register(ctx) {
|
|
161
|
+
const logger = ctx.logger ?? createLogger('openclaw-projects');
|
|
162
|
+
// Validate as raw config first to check structure
|
|
163
|
+
const rawConfig = validateRawConfig(ctx.config);
|
|
164
|
+
// For sync registration, we require direct values - file/command refs won't work
|
|
165
|
+
// Build a resolved config from direct values only
|
|
166
|
+
const config = validateConfig({
|
|
167
|
+
apiUrl: rawConfig.apiUrl,
|
|
168
|
+
apiKey: rawConfig.apiKey ?? '',
|
|
169
|
+
twilioAccountSid: rawConfig.twilioAccountSid,
|
|
170
|
+
twilioAuthToken: rawConfig.twilioAuthToken,
|
|
171
|
+
twilioPhoneNumber: rawConfig.twilioPhoneNumber,
|
|
172
|
+
postmarkToken: rawConfig.postmarkToken,
|
|
173
|
+
postmarkFromEmail: rawConfig.postmarkFromEmail,
|
|
174
|
+
secretCommandTimeout: rawConfig.secretCommandTimeout,
|
|
175
|
+
autoRecall: rawConfig.autoRecall,
|
|
176
|
+
autoCapture: rawConfig.autoCapture,
|
|
177
|
+
userScoping: rawConfig.userScoping,
|
|
178
|
+
maxRecallMemories: rawConfig.maxRecallMemories,
|
|
179
|
+
minRecallScore: rawConfig.minRecallScore,
|
|
180
|
+
timeout: rawConfig.timeout,
|
|
181
|
+
maxRetries: rawConfig.maxRetries,
|
|
182
|
+
debug: rawConfig.debug,
|
|
183
|
+
});
|
|
184
|
+
return createPluginInstance(config, logger, ctx.runtime);
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Registers the plugin with OpenClaw (asynchronous version).
|
|
188
|
+
*
|
|
189
|
+
* This function supports all secret loading methods:
|
|
190
|
+
* - Direct values (apiKey: "sk-xxx")
|
|
191
|
+
* - File references (apiKeyFile: "~/.secrets/api_key")
|
|
192
|
+
* - Command references (apiKeyCommand: "op read op://...")
|
|
193
|
+
*
|
|
194
|
+
* Preferred over register() for flexible secret handling.
|
|
195
|
+
*/
|
|
196
|
+
export async function registerAsync(ctx) {
|
|
197
|
+
const logger = ctx.logger ?? createLogger('openclaw-projects');
|
|
198
|
+
// Validate raw configuration
|
|
199
|
+
const rawConfig = validateRawConfig(ctx.config);
|
|
200
|
+
// Resolve all secrets
|
|
201
|
+
const config = await resolveConfigSecrets(rawConfig);
|
|
202
|
+
return createPluginInstance(config, logger, ctx.runtime);
|
|
203
|
+
}
|
|
204
|
+
/** Plugin definition object for OpenClaw */
|
|
205
|
+
export const plugin = {
|
|
206
|
+
id: 'openclaw-projects',
|
|
207
|
+
name: 'OpenClaw Projects Plugin',
|
|
208
|
+
kind: 'memory',
|
|
209
|
+
register,
|
|
210
|
+
};
|
|
211
|
+
export { validateConfig, safeValidateConfig, validateRawConfig, safeValidateRawConfig, resolveConfigSecrets, redactConfig, } from './config.js';
|
|
212
|
+
export { resolveSecret, resolveSecrets, clearSecretCache, clearCachedSecret } from './secrets.js';
|
|
213
|
+
export { createLogger, redactSensitive } from './logger.js';
|
|
214
|
+
export { createApiClient } from './api-client.js';
|
|
215
|
+
export { extractContext, getUserScopeKey } from './context.js';
|
|
216
|
+
export { createMemoryRecallTool, createMemoryStoreTool, createMemoryForgetTool, createProjectListTool, createProjectGetTool, createProjectCreateTool, createTodoListTool, createTodoCreateTool, createTodoCompleteTool, createContactSearchTool, createContactGetTool, createContactCreateTool, MemoryRecallParamsSchema, MemoryStoreParamsSchema, MemoryForgetParamsSchema, MemoryCategory, ProjectListParamsSchema, ProjectGetParamsSchema, ProjectCreateParamsSchema, ProjectStatus, TodoListParamsSchema, TodoCreateParamsSchema, TodoCompleteParamsSchema, ContactSearchParamsSchema, ContactGetParamsSchema, ContactCreateParamsSchema, } from './tools/index.js';
|
|
217
|
+
export { createAutoRecallHook, createAutoCaptureHook, createHealthCheck, } from './hooks.js';
|
|
218
|
+
export { createCliCommands, createStatusCommand, createUsersCommand, createRecallCommand, createStatsCommand, createExportCommand, } from './cli.js';
|
|
219
|
+
export { createGatewayMethods, registerGatewayRpcMethods, } from './gateway/rpc-methods.js';
|
|
220
|
+
export { createNotificationService, } from './services/notification-service.js';
|
|
221
|
+
//# sourceMappingURL=index.js.map
|