@memtensor/memos-cloud-openclaw-plugin 0.1.20 → 0.1.21-beta.0

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 (46) hide show
  1. package/README.md +23 -32
  2. package/README_ZH.md +309 -0
  3. package/clawdbot.plugin.json +1 -1
  4. package/index.js +28 -15
  5. package/lib/config-ui-server.js +967 -967
  6. package/lib/memos-cloud-api.js +11 -37
  7. package/lib/memos-core/filter.d.ts +5 -0
  8. package/lib/memos-core/filter.d.ts.map +1 -0
  9. package/lib/memos-core/filter.js +213 -0
  10. package/lib/memos-core/filter.js.map +1 -0
  11. package/lib/memos-core/index.d.ts +9 -0
  12. package/lib/memos-core/index.d.ts.map +1 -0
  13. package/lib/memos-core/index.js +8 -0
  14. package/lib/memos-core/index.js.map +1 -0
  15. package/lib/memos-core/memos-client.d.ts +23 -0
  16. package/lib/memos-core/memos-client.d.ts.map +1 -0
  17. package/lib/memos-core/memos-client.js +173 -0
  18. package/lib/memos-core/memos-client.js.map +1 -0
  19. package/lib/memos-core/memos-errors.d.ts +14 -0
  20. package/lib/memos-core/memos-errors.d.ts.map +1 -0
  21. package/lib/memos-core/memos-errors.js +14 -0
  22. package/lib/memos-core/memos-errors.js.map +1 -0
  23. package/lib/memos-core/memos-response.d.ts +4 -0
  24. package/lib/memos-core/memos-response.d.ts.map +1 -0
  25. package/lib/memos-core/memos-response.js +84 -0
  26. package/lib/memos-core/memos-response.js.map +1 -0
  27. package/lib/memos-core/payloads.d.ts +31 -0
  28. package/lib/memos-core/payloads.d.ts.map +1 -0
  29. package/lib/memos-core/payloads.js +42 -0
  30. package/lib/memos-core/payloads.js.map +1 -0
  31. package/lib/memos-core/recall-projection.d.ts +35 -0
  32. package/lib/memos-core/recall-projection.d.ts.map +1 -0
  33. package/lib/memos-core/recall-projection.js +95 -0
  34. package/lib/memos-core/recall-projection.js.map +1 -0
  35. package/lib/memos-core/serialization.d.ts +5 -0
  36. package/lib/memos-core/serialization.d.ts.map +1 -0
  37. package/lib/memos-core/serialization.js +11 -0
  38. package/lib/memos-core/serialization.js.map +1 -0
  39. package/lib/memos-core/types.d.ts +114 -0
  40. package/lib/memos-core/types.d.ts.map +1 -0
  41. package/lib/memos-core/types.js +2 -0
  42. package/lib/memos-core/types.js.map +1 -0
  43. package/moltbot.plugin.json +1 -1
  44. package/openclaw.plugin.json +1 -1
  45. package/package.json +19 -15
  46. package/telemetry.credentials.json +0 -5
@@ -0,0 +1,84 @@
1
+ import { MemosClientError } from './memos-errors.js';
2
+ const SUCCESS_CODES = new Set([0, '0', 200, '200']);
3
+ const isRecord = (value) => (value !== null && typeof value === 'object' && !Array.isArray(value));
4
+ const sanitizedMessage = (value, apiKey) => {
5
+ if (typeof value !== 'string' || value.trim().length === 0)
6
+ return undefined;
7
+ const withoutControls = value.replace(/[\u0000-\u001f\u007f]/g, ' ').slice(0, 160);
8
+ return withoutControls.split(apiKey).join('[redacted]');
9
+ };
10
+ const parseBody = async (response) => {
11
+ const body = await response.text();
12
+ try {
13
+ return JSON.parse(body);
14
+ }
15
+ catch (cause) {
16
+ throw new MemosClientError('MemOS returned invalid JSON', { kind: 'response', cause });
17
+ }
18
+ };
19
+ const validateEnvelope = (value, apiKey, validateData) => {
20
+ if (!isRecord(value)) {
21
+ throw new MemosClientError('MemOS returned an invalid response envelope', { kind: 'response' });
22
+ }
23
+ if (!SUCCESS_CODES.has(value.code)) {
24
+ const detail = sanitizedMessage(value.message, apiKey);
25
+ throw new MemosClientError(`MemOS rejected the request${detail === undefined ? '' : `: ${detail}`}`, { kind: 'business' });
26
+ }
27
+ if (!validateData(value.data)) {
28
+ throw new MemosClientError('MemOS returned an invalid data shape', { kind: 'response' });
29
+ }
30
+ return value.data;
31
+ };
32
+ const isRecordArray = (value) => (Array.isArray(value) && value.every(isRecord));
33
+ const isSearchData = (value) => {
34
+ if (!isRecord(value))
35
+ return false;
36
+ for (const key of [
37
+ 'memory_detail_list',
38
+ 'preference_detail_list',
39
+ 'tool_memory_detail_list',
40
+ ]) {
41
+ if (value[key] !== undefined && !isRecordArray(value[key]))
42
+ return false;
43
+ }
44
+ if (value.preference_note !== undefined && typeof value.preference_note !== 'string')
45
+ return false;
46
+ return true;
47
+ };
48
+ const isAddData = (value) => {
49
+ if (!isRecord(value))
50
+ return false;
51
+ if (value.success !== undefined && typeof value.success !== 'boolean')
52
+ return false;
53
+ if (value.task_id !== undefined && typeof value.task_id !== 'string')
54
+ return false;
55
+ if (value.status !== undefined && typeof value.status !== 'string')
56
+ return false;
57
+ return true;
58
+ };
59
+ const httpError = async (response, apiKey) => {
60
+ let detail;
61
+ try {
62
+ const value = await parseBody(response);
63
+ if (isRecord(value))
64
+ detail = sanitizedMessage(value.message, apiKey);
65
+ }
66
+ catch {
67
+ // The HTTP status is sufficient when the error body is not JSON.
68
+ }
69
+ const retryable = response.status === 408 || response.status === 429 || response.status >= 500;
70
+ throw new MemosClientError(`MemOS HTTP ${response.status}${detail === undefined ? '' : `: ${detail}`}`, { kind: 'http', status: response.status, retryable });
71
+ };
72
+ export const parseSearchResponse = async (response, apiKey) => {
73
+ if (!response.ok)
74
+ return httpError(response, apiKey);
75
+ const envelope = await parseBody(response);
76
+ return validateEnvelope(envelope, apiKey, isSearchData);
77
+ };
78
+ export const parseAddResponse = async (response, apiKey) => {
79
+ if (!response.ok)
80
+ return httpError(response, apiKey);
81
+ const envelope = await parseBody(response);
82
+ return validateEnvelope(envelope, apiKey, isAddData);
83
+ };
84
+ //# sourceMappingURL=memos-response.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memos-response.js","sourceRoot":"","sources":["../src/memos-response.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import type { JsonObject, MemosAddRequest, MemosInfo, MemosMessage, MemosSearchRequest } from './types.js';
2
+ export interface BuildMemosSearchRequestInput {
3
+ userId: string;
4
+ query: string;
5
+ source: string;
6
+ conversationId?: string;
7
+ memoryLimitNumber: number;
8
+ includePreference: boolean;
9
+ preferenceLimitNumber: number;
10
+ includeToolMemory: boolean;
11
+ toolMemoryLimitNumber: number;
12
+ relativity: number;
13
+ filter?: JsonObject;
14
+ knowledgebaseIds?: readonly string[];
15
+ }
16
+ export declare const buildMemosSearchRequest: (input: BuildMemosSearchRequestInput) => MemosSearchRequest;
17
+ export interface BuildMemosAddRequestInput {
18
+ userId: string;
19
+ conversationId: string;
20
+ messages: readonly MemosMessage[];
21
+ source: string;
22
+ asyncMode: boolean;
23
+ allowPublic: boolean;
24
+ tags?: readonly string[];
25
+ info?: MemosInfo;
26
+ agentId?: string;
27
+ appId?: string;
28
+ allowKnowledgebaseIds?: readonly string[];
29
+ }
30
+ export declare const buildMemosAddRequest: (input: BuildMemosAddRequestInput) => MemosAddRequest;
31
+ //# sourceMappingURL=payloads.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payloads.d.ts","sourceRoot":"","sources":["../src/payloads.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,eAAe,EACf,SAAS,EACT,YAAY,EACZ,kBAAkB,EACnB,MAAM,YAAY,CAAA;AAEnB,MAAM,WAAW,4BAA4B;IAC3C,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,iBAAiB,EAAE,MAAM,CAAA;IACzB,iBAAiB,EAAE,OAAO,CAAA;IAC1B,qBAAqB,EAAE,MAAM,CAAA;IAC7B,iBAAiB,EAAE,OAAO,CAAA;IAC1B,qBAAqB,EAAE,MAAM,CAAA;IAC7B,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CACrC;AAED,eAAO,MAAM,uBAAuB,GAClC,OAAO,4BAA4B,KAClC,kBAeD,CAAA;AACF,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,EAAE,MAAM,CAAA;IACtB,QAAQ,EAAE,SAAS,YAAY,EAAE,CAAA;IACjC,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,OAAO,CAAA;IAClB,WAAW,EAAE,OAAO,CAAA;IACpB,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACxB,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,qBAAqB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAC1C;AAeD,eAAO,MAAM,oBAAoB,GAC/B,OAAO,yBAAyB,KAC/B,eAcD,CAAA"}
@@ -0,0 +1,42 @@
1
+ export const buildMemosSearchRequest = (input) => ({
2
+ user_id: input.userId,
3
+ query: input.query,
4
+ ...(input.conversationId === undefined ? {} : { conversation_id: input.conversationId }),
5
+ source: input.source,
6
+ memory_limit_number: input.memoryLimitNumber,
7
+ include_preference: input.includePreference,
8
+ preference_limit_number: input.preferenceLimitNumber,
9
+ include_tool_memory: input.includeToolMemory,
10
+ tool_memory_limit_number: input.toolMemoryLimitNumber,
11
+ relativity: input.relativity,
12
+ ...(input.filter === undefined ? {} : { filter: structuredClone(input.filter) }),
13
+ ...(input.knowledgebaseIds === undefined || input.knowledgebaseIds.length === 0
14
+ ? {}
15
+ : { knowledgebase_ids: [...input.knowledgebaseIds] }),
16
+ });
17
+ const normalizeAddMessage = (message) => {
18
+ const cloned = structuredClone(message);
19
+ if (cloned.role === 'assistant'
20
+ && cloned.content === undefined
21
+ && cloned.tool_calls !== undefined
22
+ && cloned.tool_calls.length > 0) {
23
+ cloned.content = '';
24
+ }
25
+ return cloned;
26
+ };
27
+ export const buildMemosAddRequest = (input) => ({
28
+ user_id: input.userId,
29
+ conversation_id: input.conversationId,
30
+ messages: input.messages.map(normalizeAddMessage),
31
+ source: input.source,
32
+ async_mode: input.asyncMode,
33
+ allow_public: input.allowPublic,
34
+ ...(input.tags === undefined || input.tags.length === 0 ? {} : { tags: [...input.tags] }),
35
+ ...(input.info === undefined ? {} : { info: structuredClone(input.info) }),
36
+ ...(input.agentId === undefined ? {} : { agent_id: input.agentId }),
37
+ ...(input.appId === undefined ? {} : { app_id: input.appId }),
38
+ ...(input.allowKnowledgebaseIds === undefined || input.allowKnowledgebaseIds.length === 0
39
+ ? {}
40
+ : { allow_knowledgebase_ids: [...input.allowKnowledgebaseIds] }),
41
+ });
42
+ //# sourceMappingURL=payloads.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payloads.js","sourceRoot":"","sources":["../src/payloads.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import type { MemosSearchData } from './types.js';
2
+ export interface RecallLimits {
3
+ maxItemChars: number;
4
+ maxTotalChars: number;
5
+ }
6
+ export interface RecallFact {
7
+ text: string;
8
+ id?: string;
9
+ createdAt?: number | string;
10
+ updatedAt?: number | string;
11
+ relativity?: number;
12
+ }
13
+ export interface RecallPreference {
14
+ text: string;
15
+ id?: string;
16
+ type?: string;
17
+ createdAt?: number | string;
18
+ updatedAt?: number | string;
19
+ relativity?: number;
20
+ }
21
+ export interface RecallSupplement {
22
+ text: string;
23
+ id?: string;
24
+ type?: string;
25
+ createdAt?: number | string;
26
+ updatedAt?: number | string;
27
+ relativity?: number;
28
+ }
29
+ export interface RecallProjection {
30
+ facts: RecallFact[];
31
+ preferences: RecallPreference[];
32
+ tools?: RecallSupplement[];
33
+ }
34
+ export declare const projectRecall: (data: MemosSearchData, limits: RecallLimits) => RecallProjection | undefined;
35
+ //# sourceMappingURL=recall-projection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recall-projection.d.ts","sourceRoot":"","sources":["../src/recall-projection.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAA4C,eAAe,EAAyB,MAAM,YAAY,CAAA;AAElH,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAC3B,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAC3B,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAC3B,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,UAAU,EAAE,CAAA;IACnB,WAAW,EAAE,gBAAgB,EAAE,CAAA;IAC/B,KAAK,CAAC,EAAE,gBAAgB,EAAE,CAAA;CAC3B;AA6DD,eAAO,MAAM,aAAa,GACxB,MAAM,eAAe,EACrB,QAAQ,YAAY,KACnB,gBAAgB,GAAG,SAsCrB,CAAA"}
@@ -0,0 +1,95 @@
1
+ import { truncateUnicode, unicodeLength } from './serialization.js';
2
+ const nonBlank = (value) => {
3
+ if (value === undefined || value.trim().length === 0)
4
+ return undefined;
5
+ return value.trim();
6
+ };
7
+ const safeTime = (value) => {
8
+ if (typeof value === 'number')
9
+ return Number.isFinite(value) ? value : undefined;
10
+ return nonBlank(value);
11
+ };
12
+ const factMetadata = (detail) => {
13
+ const id = nonBlank(detail.id);
14
+ const createdAt = safeTime(detail.create_time);
15
+ const updatedAt = safeTime(detail.update_time);
16
+ const relativity = Number.isFinite(detail.relativity) ? detail.relativity : undefined;
17
+ return {
18
+ ...(id === undefined ? {} : { id }),
19
+ ...(createdAt === undefined ? {} : { createdAt }),
20
+ ...(updatedAt === undefined ? {} : { updatedAt }),
21
+ ...(relativity === undefined ? {} : { relativity }),
22
+ };
23
+ };
24
+ const preferenceMetadata = (detail) => {
25
+ const id = nonBlank(detail.id);
26
+ const type = nonBlank(detail.preference_type);
27
+ const createdAt = safeTime(detail.create_time);
28
+ const updatedAt = safeTime(detail.update_time);
29
+ const relativity = Number.isFinite(detail.relativity) ? detail.relativity : undefined;
30
+ return {
31
+ ...(id === undefined ? {} : { id }),
32
+ ...(type === undefined ? {} : { type }),
33
+ ...(createdAt === undefined ? {} : { createdAt }),
34
+ ...(updatedAt === undefined ? {} : { updatedAt }),
35
+ ...(relativity === undefined ? {} : { relativity }),
36
+ };
37
+ };
38
+ const supplementMetadata = (detail, typeValue, createdValue, updatedValue) => {
39
+ const id = nonBlank(detail.id);
40
+ const type = nonBlank(typeValue);
41
+ const createdAt = safeTime(createdValue);
42
+ const updatedAt = safeTime(updatedValue);
43
+ const numericRelativity = typeof detail.relativity === 'number' ? detail.relativity : undefined;
44
+ const relativity = Number.isFinite(numericRelativity) ? numericRelativity : undefined;
45
+ return {
46
+ ...(id === undefined ? {} : { id }),
47
+ ...(type === undefined ? {} : { type }),
48
+ ...(createdAt === undefined ? {} : { createdAt }),
49
+ ...(updatedAt === undefined ? {} : { updatedAt }),
50
+ ...(relativity === undefined ? {} : { relativity }),
51
+ };
52
+ };
53
+ export const projectRecall = (data, limits) => {
54
+ const facts = [];
55
+ const preferences = [];
56
+ const tools = [];
57
+ let remaining = Math.max(0, limits.maxTotalChars);
58
+ const takeText = (value) => {
59
+ const text = nonBlank(value);
60
+ if (text === undefined || remaining === 0)
61
+ return undefined;
62
+ const bounded = truncateUnicode(text, Math.min(limits.maxItemChars, remaining));
63
+ if (bounded.length === 0)
64
+ return undefined;
65
+ remaining -= unicodeLength(bounded);
66
+ return bounded;
67
+ };
68
+ for (const detail of data.memory_detail_list ?? []) {
69
+ const text = takeText(nonBlank(detail.memory_value) ?? detail.memory_key);
70
+ if (text !== undefined)
71
+ facts.push({ text, ...factMetadata(detail) });
72
+ }
73
+ for (const detail of data.preference_detail_list ?? []) {
74
+ const text = takeText(detail.preference);
75
+ if (text !== undefined)
76
+ preferences.push({ text, ...preferenceMetadata(detail) });
77
+ }
78
+ for (const detail of data.tool_memory_detail_list ?? []) {
79
+ const text = takeText(nonBlank(detail.tool_value) ?? detail.experience);
80
+ if (text !== undefined)
81
+ tools.push({
82
+ text,
83
+ ...supplementMetadata(detail, detail.tool_type, detail.create_time, detail.update_time),
84
+ });
85
+ }
86
+ if ([facts, preferences, tools].every((items) => items.length === 0)) {
87
+ return undefined;
88
+ }
89
+ return {
90
+ facts,
91
+ preferences,
92
+ ...(tools.length === 0 ? {} : { tools }),
93
+ };
94
+ };
95
+ //# sourceMappingURL=recall-projection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recall-projection.js","sourceRoot":"","sources":["../src/recall-projection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { JsonValue } from './types.js';
2
+ export declare const stringifyTagSafeJson: (value: JsonValue) => string;
3
+ export declare const unicodeLength: (value: string) => number;
4
+ export declare const truncateUnicode: (value: string, maxChars: number) => string;
5
+ //# sourceMappingURL=serialization.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serialization.d.ts","sourceRoot":"","sources":["../src/serialization.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAE3C,eAAO,MAAM,oBAAoB,GAAI,OAAO,SAAS,KAAG,MAEvD,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,OAAO,MAAM,KAAG,MAAkC,CAAA;AAEhF,eAAO,MAAM,eAAe,GAAI,OAAO,MAAM,EAAE,UAAU,MAAM,KAAG,MAKjE,CAAA"}
@@ -0,0 +1,11 @@
1
+ export const stringifyTagSafeJson = (value) => ((JSON.stringify(value) ?? 'null').replace(/</g, '\\u003c'));
2
+ export const unicodeLength = (value) => Array.from(value).length;
3
+ export const truncateUnicode = (value, maxChars) => {
4
+ if (maxChars <= 0)
5
+ return '';
6
+ const characters = Array.from(value);
7
+ if (characters.length <= maxChars)
8
+ return value;
9
+ return characters.slice(0, maxChars).join('');
10
+ };
11
+ //# sourceMappingURL=serialization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serialization.js","sourceRoot":"","sources":["../src/serialization.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,KAAgB,EAAU,EAAE,CAAC,CAChE,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAC3D,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAA;AAEhF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,KAAa,EAAE,QAAgB,EAAU,EAAE;IACzE,IAAI,QAAQ,IAAI,CAAC;QAAE,OAAO,EAAE,CAAA;IAC5B,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACpC,IAAI,UAAU,CAAC,MAAM,IAAI,QAAQ;QAAE,OAAO,KAAK,CAAA;IAC/C,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AAC/C,CAAC,CAAA"}
@@ -0,0 +1,114 @@
1
+ export type JsonPrimitive = string | number | boolean | null;
2
+ export type JsonValue = JsonPrimitive | JsonObject | JsonValue[];
3
+ export interface JsonObject {
4
+ [key: string]: JsonValue;
5
+ }
6
+ export type MemosInfo = Record<string, string>;
7
+ export interface MemosToolCall {
8
+ id: string;
9
+ type: 'function';
10
+ function: {
11
+ name: string;
12
+ arguments: string;
13
+ };
14
+ }
15
+ export interface MemosTextContentBlock {
16
+ type: 'text';
17
+ text: string;
18
+ }
19
+ interface MemosMessageMetadata {
20
+ id?: string;
21
+ chat_time?: string;
22
+ }
23
+ export interface MemosUserMessage extends MemosMessageMetadata {
24
+ role: 'user';
25
+ content: string;
26
+ }
27
+ export interface MemosAssistantMessage extends MemosMessageMetadata {
28
+ role: 'assistant';
29
+ content?: string;
30
+ tool_calls?: MemosToolCall[];
31
+ }
32
+ export interface MemosToolMessage extends MemosMessageMetadata {
33
+ role: 'tool';
34
+ tool_call_id: string;
35
+ content: MemosTextContentBlock[];
36
+ }
37
+ export type MemosMessage = MemosUserMessage | MemosAssistantMessage | MemosToolMessage;
38
+ export interface MemosSearchRequest {
39
+ user_id: string;
40
+ query: string;
41
+ conversation_id?: string;
42
+ source: string;
43
+ memory_limit_number: number;
44
+ include_preference: boolean;
45
+ preference_limit_number: number;
46
+ include_tool_memory: boolean;
47
+ tool_memory_limit_number: number;
48
+ relativity: number;
49
+ filter?: JsonObject;
50
+ knowledgebase_ids?: string[];
51
+ }
52
+ export interface MemosAddRequest {
53
+ user_id: string;
54
+ conversation_id: string;
55
+ messages: MemosMessage[];
56
+ source: string;
57
+ async_mode: boolean;
58
+ allow_public: boolean;
59
+ tags?: string[];
60
+ info?: MemosInfo;
61
+ agent_id?: string;
62
+ app_id?: string;
63
+ allow_knowledgebase_ids?: string[];
64
+ }
65
+ export interface MemosMemoryDetail {
66
+ id?: string;
67
+ memory_key?: string;
68
+ memory_value?: string;
69
+ memory_type?: string;
70
+ create_time?: number | string;
71
+ update_time?: number | string;
72
+ relativity?: number;
73
+ tags?: string[];
74
+ [key: string]: JsonValue | undefined;
75
+ }
76
+ export interface MemosPreferenceDetail {
77
+ id?: string;
78
+ memory_value?: string;
79
+ preference?: string;
80
+ preference_type?: string;
81
+ reasoning?: string;
82
+ create_time?: number | string;
83
+ update_time?: number | string;
84
+ relativity?: number;
85
+ [key: string]: JsonValue | undefined;
86
+ }
87
+ export interface MemosToolMemoryDetail {
88
+ id?: string;
89
+ tool_type?: string;
90
+ tool_value?: string;
91
+ experience?: string;
92
+ create_time?: number | string;
93
+ update_time?: number | string;
94
+ relativity?: number;
95
+ [key: string]: JsonValue | undefined;
96
+ }
97
+ export interface MemosSearchData {
98
+ memory_detail_list?: MemosMemoryDetail[];
99
+ preference_detail_list?: MemosPreferenceDetail[];
100
+ tool_memory_detail_list?: MemosToolMemoryDetail[];
101
+ preference_note?: string;
102
+ }
103
+ export interface MemosAddData {
104
+ success?: boolean;
105
+ task_id?: string;
106
+ status?: string;
107
+ }
108
+ export interface BaseResponse<T> {
109
+ code: number | string;
110
+ data?: T;
111
+ message?: string;
112
+ }
113
+ export {};
114
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -2,7 +2,7 @@
2
2
  "id": "memos-cloud-openclaw-plugin",
3
3
  "name": "MemOS Cloud OpenClaw Plugin",
4
4
  "description": "MemOS Cloud recall + add memory via lifecycle hooks",
5
- "version": "0.1.20",
5
+ "version": "0.1.21-beta.0",
6
6
  "kind": "lifecycle",
7
7
  "main": "./index.js",
8
8
  "activation": {
@@ -2,7 +2,7 @@
2
2
  "id": "memos-cloud-openclaw-plugin",
3
3
  "name": "MemOS Cloud OpenClaw Plugin",
4
4
  "description": "MemOS Cloud recall + add memory via lifecycle hooks",
5
- "version": "0.1.20",
5
+ "version": "0.1.21-beta.0",
6
6
  "kind": "lifecycle",
7
7
  "main": "./index.js",
8
8
  "activation": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@memtensor/memos-cloud-openclaw-plugin",
3
- "version": "0.1.20",
3
+ "version": "0.1.21-beta.0",
4
4
  "description": "OpenClaw lifecycle plugin for MemOS Cloud (add + recall memory)",
5
5
  "files": [
6
6
  "index.js",
@@ -8,18 +8,10 @@
8
8
  "openclaw.plugin.json",
9
9
  "moltbot.plugin.json",
10
10
  "clawdbot.plugin.json",
11
- "telemetry.credentials.json"
11
+ "telemetry.credentials.json",
12
+ "README_ZH.md",
13
+ "LICENSE"
12
14
  ],
13
- "scripts": {
14
- "test": "node --test .github/scripts/*.test.mjs test/*.test.mjs",
15
- "generate-telemetry-credentials": "node scripts/generate-telemetry-credentials.cjs",
16
- "sync-version": "node scripts/sync-version.js",
17
- "version": "npm run sync-version && git add openclaw.plugin.json moltbot.plugin.json clawdbot.plugin.json",
18
- "publish-beta": "npm publish --tag beta",
19
- "publish-beta-patch": "npm version prepatch --preid=beta && npm publish --tag beta",
20
- "publish-latest": "npm version $(node -p \"require('./package.json').version.split('-')[0]\") && npm publish",
21
- "publish-latest-patch": "npm version patch && npm publish"
22
- },
23
15
  "keywords": [
24
16
  "memos",
25
17
  "memos-cloud",
@@ -27,17 +19,21 @@
27
19
  "plugin",
28
20
  "memory"
29
21
  ],
30
- "homepage": "https://github.com/MemTensor/MemOS-Cloud-OpenClaw-Plugin#readme",
22
+ "homepage": "https://github.com/MemTensor/MemOS-Cloud-OpenClaw-Plugin/tree/main/packages/openclaw#readme",
31
23
  "bugs": {
32
24
  "url": "https://github.com/MemTensor/MemOS-Cloud-OpenClaw-Plugin/issues"
33
25
  },
34
26
  "repository": {
35
27
  "type": "git",
36
- "url": "git+https://github.com/MemTensor/MemOS-Cloud-OpenClaw-Plugin.git"
28
+ "url": "git+https://github.com/MemTensor/MemOS-Cloud-OpenClaw-Plugin.git",
29
+ "directory": "packages/openclaw"
37
30
  },
38
31
  "type": "module",
39
32
  "author": "MemTensor",
40
33
  "license": "MIT",
34
+ "publishConfig": {
35
+ "access": "public"
36
+ },
41
37
  "openclaw": {
42
38
  "extensions": [
43
39
  "./index.js"
@@ -52,5 +48,13 @@
52
48
  "extensions": [
53
49
  "./index.js"
54
50
  ]
51
+ },
52
+ "scripts": {
53
+ "build": "pnpm --filter @memtensor/memos-cloud-plugin-core build && node scripts/sync-core.mjs",
54
+ "test": "pnpm build && node --test test/*.test.mjs",
55
+ "generate-telemetry-credentials": "node scripts/generate-telemetry-credentials.cjs",
56
+ "sync-version": "node scripts/sync-version.js",
57
+ "pack:local": "node ../../scripts/pack-package.mjs openclaw",
58
+ "version": "pnpm sync-version && git add openclaw.plugin.json moltbot.plugin.json clawdbot.plugin.json"
55
59
  }
56
- }
60
+ }
@@ -1,5 +0,0 @@
1
- {
2
- "endpoint": "https://proj-xtrace-e218d9316b328f196a3c640cc7ca84-cn-hangzhou.cn-hangzhou.log.aliyuncs.com/rum/web/v2?workspace=default-cms-1026429231103299-cn-hangzhou&service_id=a3u72ukxmr@bed68dd882dd823439015",
3
- "pid": "a3u72ukxmr@c42a249fb14f4d9",
4
- "env": "prod"
5
- }