@troykelly/openclaw-projects 0.0.16 → 0.0.20
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/dist/api-client.d.ts +1 -1
- package/dist/api-client.d.ts.map +1 -1
- package/dist/api-client.js +3 -3
- package/dist/api-client.js.map +1 -1
- package/dist/cli.d.ts +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +10 -10
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +82 -7
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +56 -5
- package/dist/config.js.map +1 -1
- package/dist/context.d.ts +3 -3
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +3 -3
- package/dist/context.js.map +1 -1
- package/dist/gateway/oauth-rpc-methods.d.ts +44 -44
- package/dist/gateway/oauth-rpc-methods.d.ts.map +1 -1
- package/dist/gateway/oauth-rpc-methods.js +106 -106
- package/dist/gateway/oauth-rpc-methods.js.map +1 -1
- package/dist/gateway/rpc-methods.d.ts +3 -3
- package/dist/gateway/rpc-methods.d.ts.map +1 -1
- package/dist/gateway/rpc-methods.js +11 -11
- package/dist/gateway/rpc-methods.js.map +1 -1
- package/dist/hooks.d.ts +3 -3
- package/dist/hooks.d.ts.map +1 -1
- package/dist/hooks.js +42 -42
- package/dist/hooks.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -19
- package/dist/index.js.map +1 -1
- package/dist/register-openclaw.d.ts.map +1 -1
- package/dist/register-openclaw.js +741 -262
- package/dist/register-openclaw.js.map +1 -1
- package/dist/services/notification-service.d.ts +1 -1
- package/dist/services/notification-service.d.ts.map +1 -1
- package/dist/services/notification-service.js +11 -11
- package/dist/services/notification-service.js.map +1 -1
- package/dist/tools/contacts.d.ts +7 -7
- package/dist/tools/contacts.d.ts.map +1 -1
- package/dist/tools/contacts.js +30 -30
- package/dist/tools/contacts.js.map +1 -1
- package/dist/tools/context-search.d.ts +2 -2
- package/dist/tools/context-search.d.ts.map +1 -1
- package/dist/tools/context-search.js +14 -14
- package/dist/tools/context-search.js.map +1 -1
- package/dist/tools/email-send.d.ts +13 -13
- package/dist/tools/email-send.d.ts.map +1 -1
- package/dist/tools/email-send.js +22 -22
- package/dist/tools/email-send.js.map +1 -1
- package/dist/tools/entity-links.d.ts +1 -1
- package/dist/tools/entity-links.d.ts.map +1 -1
- package/dist/tools/entity-links.js +33 -33
- package/dist/tools/entity-links.js.map +1 -1
- package/dist/tools/file-share.d.ts +15 -15
- package/dist/tools/file-share.d.ts.map +1 -1
- package/dist/tools/file-share.js +30 -30
- package/dist/tools/file-share.js.map +1 -1
- package/dist/tools/memory-forget.d.ts +7 -7
- package/dist/tools/memory-forget.d.ts.map +1 -1
- package/dist/tools/memory-forget.js +34 -34
- package/dist/tools/memory-forget.js.map +1 -1
- package/dist/tools/memory-recall.d.ts +4 -4
- package/dist/tools/memory-recall.d.ts.map +1 -1
- package/dist/tools/memory-recall.js +9 -9
- package/dist/tools/memory-recall.js.map +1 -1
- package/dist/tools/memory-store.d.ts +3 -3
- package/dist/tools/memory-store.d.ts.map +1 -1
- package/dist/tools/memory-store.js +13 -13
- package/dist/tools/memory-store.js.map +1 -1
- package/dist/tools/message-search.d.ts +8 -8
- package/dist/tools/message-search.d.ts.map +1 -1
- package/dist/tools/message-search.js +19 -19
- package/dist/tools/message-search.js.map +1 -1
- package/dist/tools/notebooks.d.ts +20 -20
- package/dist/tools/notebooks.d.ts.map +1 -1
- package/dist/tools/notebooks.js +40 -40
- package/dist/tools/notebooks.js.map +1 -1
- package/dist/tools/notes.d.ts +35 -35
- package/dist/tools/notes.d.ts.map +1 -1
- package/dist/tools/notes.js +67 -67
- package/dist/tools/notes.js.map +1 -1
- package/dist/tools/project-search.d.ts +3 -3
- package/dist/tools/project-search.d.ts.map +1 -1
- package/dist/tools/project-search.js +15 -15
- package/dist/tools/project-search.js.map +1 -1
- package/dist/tools/projects.d.ts +6 -6
- package/dist/tools/projects.d.ts.map +1 -1
- package/dist/tools/projects.js +25 -25
- package/dist/tools/projects.js.map +1 -1
- package/dist/tools/relationships.d.ts +19 -19
- package/dist/tools/relationships.d.ts.map +1 -1
- package/dist/tools/relationships.js +38 -38
- package/dist/tools/relationships.js.map +1 -1
- package/dist/tools/skill-store.d.ts +11 -11
- package/dist/tools/skill-store.d.ts.map +1 -1
- package/dist/tools/skill-store.js +51 -51
- package/dist/tools/skill-store.js.map +1 -1
- package/dist/tools/sms-send.d.ts +7 -7
- package/dist/tools/sms-send.d.ts.map +1 -1
- package/dist/tools/sms-send.js +16 -16
- package/dist/tools/sms-send.js.map +1 -1
- package/dist/tools/threads.d.ts +18 -18
- package/dist/tools/threads.d.ts.map +1 -1
- package/dist/tools/threads.js +33 -33
- package/dist/tools/threads.js.map +1 -1
- package/dist/tools/todo-search.d.ts +3 -3
- package/dist/tools/todo-search.d.ts.map +1 -1
- package/dist/tools/todo-search.js +15 -15
- package/dist/tools/todo-search.js.map +1 -1
- package/dist/tools/todos.d.ts +13 -13
- package/dist/tools/todos.d.ts.map +1 -1
- package/dist/tools/todos.js +37 -37
- package/dist/tools/todos.js.map +1 -1
- package/dist/types/openclaw-api.d.ts +2 -2
- package/dist/types/openclaw-api.d.ts.map +1 -1
- package/dist/utils/auto-linker.d.ts +2 -2
- package/dist/utils/auto-linker.d.ts.map +1 -1
- package/dist/utils/auto-linker.js +40 -40
- package/dist/utils/auto-linker.js.map +1 -1
- package/dist/utils/injection-log-rate-limiter.d.ts +1 -1
- package/dist/utils/injection-log-rate-limiter.js +1 -1
- package/dist/utils/nominatim.d.ts +1 -1
- package/dist/utils/nominatim.d.ts.map +1 -1
- package/dist/utils/nominatim.js +1 -1
- package/dist/utils/nominatim.js.map +1 -1
- package/openclaw.plugin.json +40 -4
- package/package.json +2 -2
|
@@ -33,8 +33,8 @@ const TODO_KINDS = new Set(['task', 'issue', 'epic', 'initiative']);
|
|
|
33
33
|
* and does not yet include a 'message_thread' type.
|
|
34
34
|
* TODO(#1223): Add a proper 'message_thread' entity type to entity-links schema.
|
|
35
35
|
*/
|
|
36
|
-
function buildThreadRef(
|
|
37
|
-
return `thread:${
|
|
36
|
+
function buildThreadRef(thread_id) {
|
|
37
|
+
return `thread:${thread_id}`;
|
|
38
38
|
}
|
|
39
39
|
/**
|
|
40
40
|
* Build a composite key for a link (matches entity-links.ts pattern).
|
|
@@ -45,14 +45,14 @@ function buildLinkKey(sourceType, sourceRef, targetType, targetRef) {
|
|
|
45
45
|
/**
|
|
46
46
|
* Build a tag for source-entity lookup (matches entity-links.ts pattern).
|
|
47
47
|
*/
|
|
48
|
-
function buildSourceTag(
|
|
49
|
-
return `src:${
|
|
48
|
+
function buildSourceTag(entity_type, entityRef) {
|
|
49
|
+
return `src:${entity_type}:${entityRef}`;
|
|
50
50
|
}
|
|
51
51
|
/**
|
|
52
52
|
* Create a bidirectional entity link via skill_store.
|
|
53
53
|
* Returns true if both directions were created successfully.
|
|
54
54
|
*/
|
|
55
|
-
async function createEntityLink(client,
|
|
55
|
+
async function createEntityLink(client, user_id, logger, sourceType, sourceId, targetType, targetRef, label) {
|
|
56
56
|
const now = new Date().toISOString();
|
|
57
57
|
const forwardKey = buildLinkKey(sourceType, sourceId, targetType, targetRef);
|
|
58
58
|
const reverseKey = buildLinkKey(targetType, targetRef, sourceType, sourceId);
|
|
@@ -81,10 +81,10 @@ async function createEntityLink(client, userId, logger, sourceType, sourceId, ta
|
|
|
81
81
|
key: forwardKey,
|
|
82
82
|
data: forwardData,
|
|
83
83
|
tags: [buildSourceTag(sourceType, sourceId)],
|
|
84
|
-
}, {
|
|
84
|
+
}, { user_id });
|
|
85
85
|
if (!forwardResponse.success) {
|
|
86
86
|
logger.error('auto-linker: forward link creation failed', {
|
|
87
|
-
|
|
87
|
+
user_id,
|
|
88
88
|
sourceType,
|
|
89
89
|
targetType,
|
|
90
90
|
status: forwardResponse.error.status,
|
|
@@ -98,19 +98,19 @@ async function createEntityLink(client, userId, logger, sourceType, sourceId, ta
|
|
|
98
98
|
key: reverseKey,
|
|
99
99
|
data: reverseData,
|
|
100
100
|
tags: [buildSourceTag(targetType, targetRef)],
|
|
101
|
-
}, {
|
|
101
|
+
}, { user_id });
|
|
102
102
|
if (!reverseResponse.success) {
|
|
103
103
|
logger.error('auto-linker: reverse link creation failed', {
|
|
104
|
-
|
|
104
|
+
user_id,
|
|
105
105
|
sourceType,
|
|
106
106
|
targetType,
|
|
107
107
|
status: reverseResponse.error.status,
|
|
108
108
|
});
|
|
109
109
|
// Best-effort rollback of orphaned forward link
|
|
110
|
-
const rollbackResponse = await client.delete(`/api/skill-store/items/${forwardResponse.data.id}`, {
|
|
110
|
+
const rollbackResponse = await client.delete(`/api/skill-store/items/${forwardResponse.data.id}`, { user_id });
|
|
111
111
|
if (!rollbackResponse.success) {
|
|
112
112
|
logger.error('auto-linker: rollback of orphaned forward link failed — partial state', {
|
|
113
|
-
|
|
113
|
+
user_id,
|
|
114
114
|
forwardId: forwardResponse.data.id,
|
|
115
115
|
rollbackStatus: rollbackResponse.error.status,
|
|
116
116
|
});
|
|
@@ -126,7 +126,7 @@ async function createEntityLink(client, userId, logger, sourceType, sourceId, ta
|
|
|
126
126
|
* then deduplicates matched contact IDs.
|
|
127
127
|
* Returns matched contact IDs and creates links for each match.
|
|
128
128
|
*/
|
|
129
|
-
async function matchSenderToContacts(client, logger,
|
|
129
|
+
async function matchSenderToContacts(client, logger, user_id, thread_id, senderEmail, senderPhone) {
|
|
130
130
|
if (!senderEmail && !senderPhone) {
|
|
131
131
|
return [];
|
|
132
132
|
}
|
|
@@ -142,12 +142,12 @@ async function matchSenderToContacts(client, logger, userId, threadId, senderEma
|
|
|
142
142
|
const queryParams = new URLSearchParams({
|
|
143
143
|
search: searchQuery,
|
|
144
144
|
limit: '5',
|
|
145
|
-
user_email:
|
|
145
|
+
user_email: user_id,
|
|
146
146
|
});
|
|
147
|
-
const response = await client.get(`/api/contacts?${queryParams.toString()}`, {
|
|
147
|
+
const response = await client.get(`/api/contacts?${queryParams.toString()}`, { user_id });
|
|
148
148
|
if (!response.success) {
|
|
149
149
|
logger.error('auto-linker: contact search failed', {
|
|
150
|
-
|
|
150
|
+
user_id,
|
|
151
151
|
status: response.error.status,
|
|
152
152
|
code: response.error.code,
|
|
153
153
|
});
|
|
@@ -172,21 +172,21 @@ async function matchSenderToContacts(client, logger, userId, threadId, senderEma
|
|
|
172
172
|
matchedContacts.push(c);
|
|
173
173
|
}
|
|
174
174
|
}
|
|
175
|
-
const threadRef = buildThreadRef(
|
|
175
|
+
const threadRef = buildThreadRef(thread_id);
|
|
176
176
|
const linkedContactIds = [];
|
|
177
177
|
for (const contact of matchedContacts) {
|
|
178
178
|
try {
|
|
179
179
|
// Use 'url' type with thread: URI since entity-links schema does not have
|
|
180
180
|
// a 'message_thread' type yet. See buildThreadRef() for details.
|
|
181
|
-
const linked = await createEntityLink(client,
|
|
181
|
+
const linked = await createEntityLink(client, user_id, logger, 'contact', contact.id, 'url', threadRef, 'inbound-message-sender');
|
|
182
182
|
if (linked) {
|
|
183
183
|
linkedContactIds.push(contact.id);
|
|
184
184
|
}
|
|
185
185
|
}
|
|
186
186
|
catch (error) {
|
|
187
187
|
logger.error('auto-linker: failed to create contact link', {
|
|
188
|
-
|
|
189
|
-
|
|
188
|
+
user_id,
|
|
189
|
+
contact_id: contact.id,
|
|
190
190
|
error: sanitizeErrorMessage(error),
|
|
191
191
|
});
|
|
192
192
|
}
|
|
@@ -198,7 +198,7 @@ async function matchSenderToContacts(client, logger, userId, threadId, senderEma
|
|
|
198
198
|
* Search for projects and todos matching the message content.
|
|
199
199
|
* Returns matched entity IDs by type and creates links for each match.
|
|
200
200
|
*/
|
|
201
|
-
async function matchContentToWorkItems(client, logger,
|
|
201
|
+
async function matchContentToWorkItems(client, logger, user_id, thread_id, content, similarityThreshold) {
|
|
202
202
|
// Sanitize external content before using it in search queries.
|
|
203
203
|
// Removes control characters, unicode invisibles, and potential injection payloads.
|
|
204
204
|
const sanitizedContent = sanitizeExternalMessage(content);
|
|
@@ -212,12 +212,12 @@ async function matchContentToWorkItems(client, logger, userId, threadId, content
|
|
|
212
212
|
types: 'work_item',
|
|
213
213
|
limit: '10',
|
|
214
214
|
semantic: 'true',
|
|
215
|
-
user_email:
|
|
215
|
+
user_email: user_id,
|
|
216
216
|
});
|
|
217
|
-
const response = await client.get(`/api/search?${queryParams.toString()}`, {
|
|
217
|
+
const response = await client.get(`/api/search?${queryParams.toString()}`, { user_id });
|
|
218
218
|
if (!response.success) {
|
|
219
219
|
logger.error('auto-linker: content search failed', {
|
|
220
|
-
|
|
220
|
+
user_id,
|
|
221
221
|
status: response.error.status,
|
|
222
222
|
code: response.error.code,
|
|
223
223
|
});
|
|
@@ -228,14 +228,14 @@ async function matchContentToWorkItems(client, logger, userId, threadId, content
|
|
|
228
228
|
const highConfidenceResults = results.filter((r) => r.score >= similarityThreshold);
|
|
229
229
|
if (highConfidenceResults.length === 0) {
|
|
230
230
|
logger.debug('auto-linker: no content matches above threshold', {
|
|
231
|
-
|
|
231
|
+
user_id,
|
|
232
232
|
threshold: similarityThreshold,
|
|
233
233
|
totalResults: results.length,
|
|
234
234
|
topScore: results[0]?.score ?? 0,
|
|
235
235
|
});
|
|
236
236
|
return { projects: [], todos: [] };
|
|
237
237
|
}
|
|
238
|
-
const threadRef = buildThreadRef(
|
|
238
|
+
const threadRef = buildThreadRef(thread_id);
|
|
239
239
|
const linkedProjects = [];
|
|
240
240
|
const linkedTodos = [];
|
|
241
241
|
for (const item of highConfidenceResults) {
|
|
@@ -249,7 +249,7 @@ async function matchContentToWorkItems(client, logger, userId, threadId, content
|
|
|
249
249
|
try {
|
|
250
250
|
// Use 'url' type with thread: URI since entity-links schema does not have
|
|
251
251
|
// a 'message_thread' type yet. See buildThreadRef() for details.
|
|
252
|
-
const linked = await createEntityLink(client,
|
|
252
|
+
const linked = await createEntityLink(client, user_id, logger, sourceType, item.id, 'url', threadRef, `auto-linked:${item.title.substring(0, 50)}`);
|
|
253
253
|
if (linked) {
|
|
254
254
|
if (isProject) {
|
|
255
255
|
linkedProjects.push(item.id);
|
|
@@ -261,8 +261,8 @@ async function matchContentToWorkItems(client, logger, userId, threadId, content
|
|
|
261
261
|
}
|
|
262
262
|
catch (error) {
|
|
263
263
|
logger.error('auto-linker: failed to create work item link', {
|
|
264
|
-
|
|
265
|
-
|
|
264
|
+
user_id,
|
|
265
|
+
item_id: item.id,
|
|
266
266
|
itemKind: kind,
|
|
267
267
|
error: sanitizeErrorMessage(error),
|
|
268
268
|
});
|
|
@@ -284,23 +284,23 @@ async function matchContentToWorkItems(client, logger, userId, threadId, content
|
|
|
284
284
|
* @returns Summary of links created and entities matched
|
|
285
285
|
*/
|
|
286
286
|
export async function autoLinkInboundMessage(options) {
|
|
287
|
-
const { client, logger,
|
|
287
|
+
const { client, logger, user_id, message, similarityThreshold = DEFAULT_SIMILARITY_THRESHOLD, } = options;
|
|
288
288
|
const emptyResult = {
|
|
289
289
|
linksCreated: 0,
|
|
290
290
|
matches: { contacts: [], projects: [], todos: [] },
|
|
291
291
|
};
|
|
292
292
|
try {
|
|
293
293
|
logger.info('auto-linker: processing inbound message', {
|
|
294
|
-
|
|
295
|
-
|
|
294
|
+
user_id,
|
|
295
|
+
thread_id: message.thread_id,
|
|
296
296
|
hasSenderEmail: !!message.senderEmail,
|
|
297
297
|
hasSenderPhone: !!message.senderPhone,
|
|
298
298
|
contentLength: message.content.length,
|
|
299
299
|
});
|
|
300
300
|
// Step 1: Sender matching — always runs when sender info is available
|
|
301
|
-
const contactMatches = await matchSenderToContacts(client, logger,
|
|
301
|
+
const contactMatches = await matchSenderToContacts(client, logger, user_id, message.thread_id, message.senderEmail, message.senderPhone).catch((error) => {
|
|
302
302
|
logger.error('auto-linker: sender matching failed', {
|
|
303
|
-
|
|
303
|
+
user_id,
|
|
304
304
|
error: sanitizeErrorMessage(error),
|
|
305
305
|
});
|
|
306
306
|
return [];
|
|
@@ -311,9 +311,9 @@ export async function autoLinkInboundMessage(options) {
|
|
|
311
311
|
// to the user's projects and todos.
|
|
312
312
|
let contentMatches = { projects: [], todos: [] };
|
|
313
313
|
if (contactMatches.length > 0) {
|
|
314
|
-
contentMatches = await matchContentToWorkItems(client, logger,
|
|
314
|
+
contentMatches = await matchContentToWorkItems(client, logger, user_id, message.thread_id, message.content, similarityThreshold).catch((error) => {
|
|
315
315
|
logger.error('auto-linker: content matching failed', {
|
|
316
|
-
|
|
316
|
+
user_id,
|
|
317
317
|
error: sanitizeErrorMessage(error),
|
|
318
318
|
});
|
|
319
319
|
return { projects: [], todos: [] };
|
|
@@ -321,8 +321,8 @@ export async function autoLinkInboundMessage(options) {
|
|
|
321
321
|
}
|
|
322
322
|
else {
|
|
323
323
|
logger.debug('auto-linker: skipping content matching — no known sender contact', {
|
|
324
|
-
|
|
325
|
-
|
|
324
|
+
user_id,
|
|
325
|
+
thread_id: message.thread_id,
|
|
326
326
|
});
|
|
327
327
|
}
|
|
328
328
|
const result = {
|
|
@@ -334,8 +334,8 @@ export async function autoLinkInboundMessage(options) {
|
|
|
334
334
|
},
|
|
335
335
|
};
|
|
336
336
|
logger.info('auto-linker: completed', {
|
|
337
|
-
|
|
338
|
-
|
|
337
|
+
user_id,
|
|
338
|
+
thread_id: message.thread_id,
|
|
339
339
|
linksCreated: result.linksCreated,
|
|
340
340
|
contactMatches: result.matches.contacts.length,
|
|
341
341
|
projectMatches: result.matches.projects.length,
|
|
@@ -345,7 +345,7 @@ export async function autoLinkInboundMessage(options) {
|
|
|
345
345
|
}
|
|
346
346
|
catch (error) {
|
|
347
347
|
logger.error('auto-linker: unexpected failure', {
|
|
348
|
-
|
|
348
|
+
user_id,
|
|
349
349
|
error: sanitizeErrorMessage(error),
|
|
350
350
|
});
|
|
351
351
|
return emptyResult;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auto-linker.js","sourceRoot":"","sources":["../../src/utils/auto-linker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAErD,sDAAsD;AAEtD,wDAAwD;AACxD,MAAM,CAAC,MAAM,4BAA4B,GAAG,IAAI,CAAC;AAEjD,iEAAiE;AACjE,MAAM,QAAQ,GAAG,cAAc,CAAC;AAEhC,iEAAiE;AACjE,MAAM,UAAU,GAAG,cAAc,CAAC;AAElC,mDAAmD;AACnD,MAAM,uBAAuB,GAAG,GAAG,CAAC;AAEpC,uDAAuD;AACvD,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AAE3C,oDAAoD;AACpD,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;AAyEpE,oDAAoD;AAEpD;;;;;GAKG;AACH,SAAS,cAAc,CAAC,
|
|
1
|
+
{"version":3,"file":"auto-linker.js","sourceRoot":"","sources":["../../src/utils/auto-linker.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Rate limiter for injection detection logging.
|
|
3
3
|
*
|
|
4
4
|
* Prevents log flooding when an attacker sends many injection-containing
|
|
5
|
-
* messages. Logs the first N detections per key (sender/
|
|
5
|
+
* messages. Logs the first N detections per key (sender/user_id) per window,
|
|
6
6
|
* then samples at a configurable rate. Emits summary entries for suppressed
|
|
7
7
|
* counts when a new window begins.
|
|
8
8
|
*
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Rate limiter for injection detection logging.
|
|
3
3
|
*
|
|
4
4
|
* Prevents log flooding when an attacker sends many injection-containing
|
|
5
|
-
* messages. Logs the first N detections per key (sender/
|
|
5
|
+
* messages. Logs the first N detections per key (sender/user_id) per window,
|
|
6
6
|
* then samples at a configurable rate. Emits summary entries for suppressed
|
|
7
7
|
* counts when a new window begins.
|
|
8
8
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nominatim.d.ts","sourceRoot":"","sources":["../../src/utils/nominatim.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,
|
|
1
|
+
{"version":3,"file":"nominatim.d.ts","sourceRoot":"","sources":["../../src/utils/nominatim.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAYD;;;GAGG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CA2ClC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAExC"}
|
package/dist/utils/nominatim.js
CHANGED
|
@@ -31,7 +31,7 @@ export async function reverseGeocode(lat, lng, nominatimUrl) {
|
|
|
31
31
|
const data = (await response.json());
|
|
32
32
|
const result = {
|
|
33
33
|
address: data.display_name ?? '',
|
|
34
|
-
|
|
34
|
+
place_label: data.name || data.address?.suburb || data.address?.city || '',
|
|
35
35
|
};
|
|
36
36
|
if (geocodeCache.size >= MAX_CACHE_SIZE) {
|
|
37
37
|
const oldest = geocodeCache.keys().next().value;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nominatim.js","sourceRoot":"","sources":["../../src/utils/nominatim.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,MAAM,YAAY,GAAG,IAAI,GAAG,EAA4B,CAAC;AACzD,MAAM,cAAc,GAAG,GAAG,CAAC;AAE3B;;GAEG;AACH,SAAS,QAAQ,CAAC,GAAW,EAAE,GAAW;IACxC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;AAC7E,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,GAAW,EACX,GAAW,EACX,YAAoB;IAEpB,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC/B,IAAI,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO,YAAY,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;IAEzD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,GAAG,YAAY,8BAA8B,GAAG,QAAQ,GAAG,EAAE,CAAC;QAC1E,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,OAAO,EAAE,EAAE,YAAY,EAAE,uBAAuB,EAAE;YAClD,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;SAClC,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,4CAA4C,QAAQ,CAAC,MAAM,SAAS,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC;YACjG,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAUlC,CAAC;QAEF,MAAM,MAAM,GAAqB;YAC/B,OAAO,EAAE,IAAI,CAAC,YAAY,IAAI,EAAE;YAChC,
|
|
1
|
+
{"version":3,"file":"nominatim.js","sourceRoot":"","sources":["../../src/utils/nominatim.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,MAAM,YAAY,GAAG,IAAI,GAAG,EAA4B,CAAC;AACzD,MAAM,cAAc,GAAG,GAAG,CAAC;AAE3B;;GAEG;AACH,SAAS,QAAQ,CAAC,GAAW,EAAE,GAAW;IACxC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;AAC7E,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,GAAW,EACX,GAAW,EACX,YAAoB;IAEpB,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC/B,IAAI,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO,YAAY,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;IAEzD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,GAAG,YAAY,8BAA8B,GAAG,QAAQ,GAAG,EAAE,CAAC;QAC1E,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,OAAO,EAAE,EAAE,YAAY,EAAE,uBAAuB,EAAE;YAClD,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;SAClC,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,4CAA4C,QAAQ,CAAC,MAAM,SAAS,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC;YACjG,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAUlC,CAAC;QAEF,MAAM,MAAM,GAAqB;YAC/B,OAAO,EAAE,IAAI,CAAC,YAAY,IAAI,EAAE;YAChC,WAAW,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,EAAE;SAC3E,CAAC;QAEF,IAAI,YAAY,CAAC,IAAI,IAAI,cAAc,EAAE,CAAC;YACxC,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;YAChD,IAAI,MAAM,KAAK,SAAS;gBAAE,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACxD,CAAC;QACD,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAC9B,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnE,OAAO,CAAC,IAAI,CAAC,0CAA0C,GAAG,KAAK,GAAG,MAAM,GAAG,EAAE,CAAC,CAAC;QAC/E,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,YAAY,CAAC,KAAK,EAAE,CAAC;AACvB,CAAC"}
|
package/openclaw.plugin.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "openclaw-projects",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.20",
|
|
4
4
|
"name": "OpenClaw Projects Plugin",
|
|
5
5
|
"description": "Memory provider with projects, todos, and contacts integration",
|
|
6
6
|
"kind": "memory",
|
|
@@ -106,7 +106,7 @@
|
|
|
106
106
|
"type": "string",
|
|
107
107
|
"enum": ["agent", "identity", "session"],
|
|
108
108
|
"default": "agent",
|
|
109
|
-
"description": "
|
|
109
|
+
"description": "@deprecated — replaced by namespace config. Kept for backward compatibility."
|
|
110
110
|
},
|
|
111
111
|
"maxRecallMemories": {
|
|
112
112
|
"type": "integer",
|
|
@@ -155,6 +155,37 @@
|
|
|
155
155
|
"type": "string",
|
|
156
156
|
"pattern": "^https?://",
|
|
157
157
|
"description": "PromptGuard-2 classifier URL for multilingual injection detection (e.g., http://prompt-guard:8190)"
|
|
158
|
+
},
|
|
159
|
+
"namespace": {
|
|
160
|
+
"oneOf": [
|
|
161
|
+
{
|
|
162
|
+
"type": "object",
|
|
163
|
+
"properties": {
|
|
164
|
+
"default": {
|
|
165
|
+
"type": "string",
|
|
166
|
+
"pattern": "^[a-z0-9][a-z0-9._-]*$",
|
|
167
|
+
"maxLength": 63,
|
|
168
|
+
"description": "Namespace for store/create when none specified"
|
|
169
|
+
},
|
|
170
|
+
"recall": {
|
|
171
|
+
"type": "array",
|
|
172
|
+
"items": {
|
|
173
|
+
"type": "string",
|
|
174
|
+
"pattern": "^[a-z0-9][a-z0-9._-]*$",
|
|
175
|
+
"maxLength": 63
|
|
176
|
+
},
|
|
177
|
+
"description": "Namespaces to search when none specified"
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
"type": "string",
|
|
183
|
+
"pattern": "^[a-z0-9][a-z0-9._-]*$",
|
|
184
|
+
"maxLength": 63,
|
|
185
|
+
"description": "Shorthand: string treated as { default: value }"
|
|
186
|
+
}
|
|
187
|
+
],
|
|
188
|
+
"description": "Namespace configuration for data scoping"
|
|
158
189
|
}
|
|
159
190
|
},
|
|
160
191
|
"additionalProperties": false,
|
|
@@ -264,8 +295,8 @@
|
|
|
264
295
|
"group": "Memory"
|
|
265
296
|
},
|
|
266
297
|
"userScoping": {
|
|
267
|
-
"label": "User Scoping",
|
|
268
|
-
"help": "
|
|
298
|
+
"label": "User Scoping (deprecated)",
|
|
299
|
+
"help": "Deprecated — replaced by namespace config",
|
|
269
300
|
"group": "Memory"
|
|
270
301
|
},
|
|
271
302
|
"maxRecallMemories": {
|
|
@@ -310,6 +341,11 @@
|
|
|
310
341
|
"placeholder": "http://prompt-guard:8190",
|
|
311
342
|
"help": "URL for PromptGuard-2 classifier service (enables multilingual prompt injection detection)",
|
|
312
343
|
"group": "Advanced"
|
|
344
|
+
},
|
|
345
|
+
"namespace": {
|
|
346
|
+
"label": "Namespace",
|
|
347
|
+
"help": "Namespace config for data scoping. Can be a string (shorthand for default) or { default, recall[] }.",
|
|
348
|
+
"group": "Advanced"
|
|
313
349
|
}
|
|
314
350
|
}
|
|
315
351
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@troykelly/openclaw-projects",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.20",
|
|
4
4
|
"description": "OpenClaw memory plugin with projects, todos, and contacts integration",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
"devDependencies": {
|
|
54
54
|
"@types/node": "^22.0.0",
|
|
55
55
|
"@vitest/coverage-v8": "^4.0.18",
|
|
56
|
-
"openclaw": "2026.2.
|
|
56
|
+
"openclaw": "2026.2.19",
|
|
57
57
|
"typescript": "^5.0.0",
|
|
58
58
|
"vitest": "^4.0.0"
|
|
59
59
|
},
|