@memtensor/memos-local-openclaw-plugin 1.0.4-beta.7 → 1.0.4-beta.8
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/README.md +1 -1
- package/dist/capture/index.d.ts.map +1 -1
- package/dist/capture/index.js +6 -0
- package/dist/capture/index.js.map +1 -1
- package/dist/client/connector.d.ts.map +1 -1
- package/dist/client/connector.js +17 -4
- package/dist/client/connector.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +0 -2
- package/dist/config.js.map +1 -1
- package/dist/hub/server.d.ts +7 -0
- package/dist/hub/server.d.ts.map +1 -1
- package/dist/hub/server.js +160 -5
- package/dist/hub/server.js.map +1 -1
- package/dist/ingest/providers/index.d.ts.map +1 -1
- package/dist/ingest/providers/index.js +37 -6
- package/dist/ingest/providers/index.js.map +1 -1
- package/dist/shared/llm-call.d.ts +1 -0
- package/dist/shared/llm-call.d.ts.map +1 -1
- package/dist/shared/llm-call.js +82 -8
- package/dist/shared/llm-call.js.map +1 -1
- package/dist/skill/evolver.d.ts +2 -0
- package/dist/skill/evolver.d.ts.map +1 -1
- package/dist/skill/evolver.js +3 -0
- package/dist/skill/evolver.js.map +1 -1
- package/dist/storage/sqlite.d.ts +4 -1
- package/dist/storage/sqlite.d.ts.map +1 -1
- package/dist/storage/sqlite.js +8 -4
- package/dist/storage/sqlite.js.map +1 -1
- package/dist/telemetry.d.ts +12 -5
- package/dist/telemetry.d.ts.map +1 -1
- package/dist/telemetry.js +135 -38
- package/dist/telemetry.js.map +1 -1
- package/dist/types.d.ts +1 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/viewer/html.d.ts.map +1 -1
- package/dist/viewer/html.js +473 -191
- package/dist/viewer/html.js.map +1 -1
- package/dist/viewer/server.d.ts +14 -0
- package/dist/viewer/server.d.ts.map +1 -1
- package/dist/viewer/server.js +233 -20
- package/dist/viewer/server.js.map +1 -1
- package/index.ts +26 -2
- package/openclaw.plugin.json +1 -1
- package/package.json +1 -2
- package/scripts/postinstall.cjs +1 -1
- package/src/capture/index.ts +8 -0
- package/src/client/connector.ts +17 -4
- package/src/config.ts +0 -2
- package/src/hub/server.ts +157 -5
- package/src/ingest/providers/index.ts +41 -7
- package/src/shared/llm-call.ts +97 -9
- package/src/skill/evolver.ts +5 -0
- package/src/storage/sqlite.ts +11 -6
- package/src/telemetry.ts +152 -39
- package/src/types.ts +1 -2
- package/src/viewer/html.ts +473 -191
- package/src/viewer/server.ts +208 -20
package/README.md
CHANGED
|
@@ -521,7 +521,7 @@ TELEMETRY_ENABLED=false
|
|
|
521
521
|
|
|
522
522
|
### Technical details
|
|
523
523
|
|
|
524
|
-
- Uses
|
|
524
|
+
- Uses Aliyun ARMS RUM for event collection
|
|
525
525
|
- Each installation gets a random anonymous UUID (stored at `~/.openclaw/memos-local/.anonymous-id`)
|
|
526
526
|
- Events are batched and sent in the background; failures are silently ignored
|
|
527
527
|
- The anonymous ID is never linked to any personal information
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/capture/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAQ,MAAM,EAAE,MAAM,UAAU,CAAC;AAsClE;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,EACrE,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,MAAM,EACX,KAAK,CAAC,EAAE,MAAM,EACd,cAAc,CAAC,EAAE,MAAM,GACtB,mBAAmB,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/capture/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAQ,MAAM,EAAE,MAAM,UAAU,CAAC;AAsClE;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,EACrE,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,MAAM,EACX,KAAK,CAAC,EAAE,MAAM,EACd,cAAc,CAAC,EAAE,MAAM,GACtB,mBAAmB,EAAE,CAmDvB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA+CzD"}
|
package/dist/capture/index.js
CHANGED
|
@@ -57,6 +57,7 @@ function captureMessages(messages, sessionKey, turnId, evidenceTag, log, owner,
|
|
|
57
57
|
content = stripInboundMetadata(content);
|
|
58
58
|
}
|
|
59
59
|
else {
|
|
60
|
+
content = stripThinkingTags(content);
|
|
60
61
|
content = stripEvidenceWrappers(content, evidenceTag);
|
|
61
62
|
}
|
|
62
63
|
if (!content.trim())
|
|
@@ -135,6 +136,11 @@ function stripInboundMetadata(text) {
|
|
|
135
136
|
}
|
|
136
137
|
return stripEnvelopePrefix(result.join("\n")).trim();
|
|
137
138
|
}
|
|
139
|
+
/** Strip <think…>…</think> blocks emitted by DeepSeek-style reasoning models. */
|
|
140
|
+
const THINKING_TAG_RE = /<think[\s>][\s\S]*?<\/think>\s*/gi;
|
|
141
|
+
function stripThinkingTags(text) {
|
|
142
|
+
return text.replace(THINKING_TAG_RE, "");
|
|
143
|
+
}
|
|
138
144
|
function extractEnvelopeTimestamp(text) {
|
|
139
145
|
const m = ENVELOPE_EXTRACT_RE.exec(text);
|
|
140
146
|
if (!m)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/capture/index.ts"],"names":[],"mappings":";;AA6CA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/capture/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connector.d.ts","sourceRoot":"","sources":["../../src/client/connector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrD,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,QAAQ,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,IAAI,GAAG;QACX,EAAE,EAAE,MAAM,CAAC;QACX,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,QAAQ,CAAC;QACf,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC;KAC7B,CAAC;CACH;AAED,wBAAsB,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,gBAAgB,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CA6BtH;AAED,wBAAsB,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,aAAa,CAAC,
|
|
1
|
+
{"version":3,"file":"connector.d.ts","sourceRoot":"","sources":["../../src/client/connector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrD,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,QAAQ,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,IAAI,GAAG;QACX,EAAE,EAAE,MAAM,CAAC;QACX,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,QAAQ,CAAC;QACf,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC;KAC7B,CAAC;CACH;AAED,wBAAsB,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,gBAAgB,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CA6BtH;AAED,wBAAsB,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,aAAa,CAAC,CA8FvG;AAED,wBAAsB,WAAW,CAC/B,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,gBAAgB,EACxB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,cAAc,CAAC,CA2DzB;AAED,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,SAAgB,MAAM,EAAE,MAAM,CAAC;gBACnB,MAAM,EAAE,MAAM;CAK3B"}
|
package/dist/client/connector.js
CHANGED
|
@@ -76,7 +76,7 @@ async function getHubStatus(store, config) {
|
|
|
76
76
|
try {
|
|
77
77
|
const result = await (0, hub_1.hubRequestJson)((0, hub_1.normalizeHubUrl)(hubAddress), "", "/api/v1/hub/join", {
|
|
78
78
|
method: "POST",
|
|
79
|
-
body: JSON.stringify({ teamToken, username: conn.username || "user" }),
|
|
79
|
+
body: JSON.stringify({ teamToken, username: config.sharing?.client?.nickname || conn.username || "user" }),
|
|
80
80
|
});
|
|
81
81
|
if (result.status === "pending") {
|
|
82
82
|
return {
|
|
@@ -133,13 +133,25 @@ async function getHubStatus(store, config) {
|
|
|
133
133
|
}
|
|
134
134
|
try {
|
|
135
135
|
const me = await (0, hub_1.hubRequestJson)((0, hub_1.normalizeHubUrl)(hubAddress), userToken, "/api/v1/hub/me", { method: "GET" });
|
|
136
|
+
const latestUsername = String(me.username ?? "");
|
|
137
|
+
const latestRole = String(me.role ?? "member");
|
|
138
|
+
if (conn && (conn.username !== latestUsername || conn.role !== latestRole)) {
|
|
139
|
+
store.setClientHubConnection({
|
|
140
|
+
hubUrl: conn.hubUrl,
|
|
141
|
+
userId: conn.userId,
|
|
142
|
+
username: latestUsername,
|
|
143
|
+
userToken: conn.userToken,
|
|
144
|
+
role: latestRole,
|
|
145
|
+
connectedAt: conn.connectedAt,
|
|
146
|
+
});
|
|
147
|
+
}
|
|
136
148
|
return {
|
|
137
149
|
connected: true,
|
|
138
150
|
hubUrl: (0, hub_1.normalizeHubUrl)(hubAddress),
|
|
139
151
|
user: {
|
|
140
152
|
id: String(me.id),
|
|
141
|
-
username:
|
|
142
|
-
role:
|
|
153
|
+
username: latestUsername,
|
|
154
|
+
role: latestRole,
|
|
143
155
|
status: String(me.status ?? "active"),
|
|
144
156
|
},
|
|
145
157
|
};
|
|
@@ -157,7 +169,8 @@ async function autoJoinHub(store, config, log) {
|
|
|
157
169
|
const hubUrl = (0, hub_1.normalizeHubUrl)(hubAddress);
|
|
158
170
|
const osModule = typeof globalThis.process !== "undefined" ? await Promise.resolve().then(() => __importStar(require("os"))) : null;
|
|
159
171
|
const hostname = osModule ? osModule.hostname() : "unknown";
|
|
160
|
-
const
|
|
172
|
+
const nickname = config.sharing?.client?.nickname;
|
|
173
|
+
const username = nickname || (osModule ? osModule.userInfo().username : "user");
|
|
161
174
|
let clientIp = "";
|
|
162
175
|
if (osModule) {
|
|
163
176
|
const nets = osModule.networkInterfaces();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connector.js","sourceRoot":"","sources":["../../src/client/connector.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyBA,oCA6BC;AAED,
|
|
1
|
+
{"version":3,"file":"connector.js","sourceRoot":"","sources":["../../src/client/connector.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,KAAK,gBAAgB,EAAE,KAAK,aAAa,EAAE,KAAK,MAAM,EAA+C,MAAM,SAAS,CAAC;AACxI,OAAO,EAAqB,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAuC1E,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,gBAAgB,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,KAAK,gBAAgB,EAAE,KAAK,aAAa,EAAE,KAAK,MAAM,EAA+C,MAAM,SAAS,CAAC;AACxI,OAAO,EAAqB,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAuC1E,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CA6F5G;AAED,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,SAAS,EAChD,GAAG,CAAC,EAAE,MAAM,EACZ,UAAU,CAAC,EAAE,gBAAgB,GAC5B,aAAa,CAuBf"}
|
package/dist/config.js
CHANGED
|
@@ -100,8 +100,6 @@ function resolveConfig(raw, stateDir) {
|
|
|
100
100
|
},
|
|
101
101
|
telemetry: {
|
|
102
102
|
enabled: telemetryEnabled,
|
|
103
|
-
posthogApiKey: cfg.telemetry?.posthogApiKey ?? process.env.POSTHOG_API_KEY ?? "",
|
|
104
|
-
posthogHost: cfg.telemetry?.posthogHost ?? process.env.POSTHOG_HOST ?? "",
|
|
105
103
|
},
|
|
106
104
|
summarizer: (() => {
|
|
107
105
|
const summarizerConfig = resolveProviderFallback(cfg.summarizer, "openclaw", sharingCapabilities.hostCompletion);
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCA,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/hub/server.d.ts
CHANGED
|
@@ -19,6 +19,10 @@ export declare class HubServer {
|
|
|
19
19
|
private static readonly RATE_LIMIT_DEFAULT;
|
|
20
20
|
private static readonly RATE_LIMIT_SEARCH;
|
|
21
21
|
private rateBuckets;
|
|
22
|
+
private static readonly OFFLINE_THRESHOLD_MS;
|
|
23
|
+
private static readonly OFFLINE_CHECK_INTERVAL_MS;
|
|
24
|
+
private offlineCheckTimer?;
|
|
25
|
+
private knownOnlineUsers;
|
|
22
26
|
constructor(opts: HubServerOptions);
|
|
23
27
|
private checkRateLimit;
|
|
24
28
|
start(): Promise<string>;
|
|
@@ -32,6 +36,9 @@ export declare class HubServer {
|
|
|
32
36
|
private embedChunksAsync;
|
|
33
37
|
private embedMemoryAsync;
|
|
34
38
|
private handle;
|
|
39
|
+
private notifyAdmins;
|
|
40
|
+
private initOnlineTracking;
|
|
41
|
+
private checkOfflineUsers;
|
|
35
42
|
private authenticate;
|
|
36
43
|
private static readonly MAX_BODY_BYTES;
|
|
37
44
|
private readJson;
|
package/dist/hub/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/hub/server.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAIzD,KAAK,gBAAgB,GAAG;IACtB,KAAK,EAAE,WAAW,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,gBAAgB,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB,CAAC;AAQF,qBAAa,SAAS;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/hub/server.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAIzD,KAAK,gBAAgB,GAAG;IACtB,KAAK,EAAE,WAAW,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,gBAAgB,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB,CAAC;AAQF,qBAAa,SAAS;IAiBR,OAAO,CAAC,IAAI;IAhBxB,OAAO,CAAC,MAAM,CAAC,CAAc;IAC7B,OAAO,CAAC,YAAY,CAAgH;IACpI,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAiB;IAC7C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,SAAS,CAAe;IAEhC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAU;IAChD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAM;IAChD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAM;IAC/C,OAAO,CAAC,WAAW,CAA6D;IAEhF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAiB;IAC7D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,yBAAyB,CAAa;IAC9D,OAAO,CAAC,iBAAiB,CAAC,CAAiC;IAC3D,OAAO,CAAC,gBAAgB,CAAqB;gBAEzB,IAAI,EAAE,gBAAgB;IAM1C,OAAO,CAAC,cAAc;IAahB,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IAsDxB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ3B,OAAO,KAAK,IAAI,GAEf;IAED,OAAO,KAAK,QAAQ,GAEnB;IAED,OAAO,KAAK,SAAS,GAEpB;IAED,OAAO,KAAK,UAAU,GAErB;IAED,OAAO,CAAC,aAAa;IAYrB,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,gBAAgB;IAgBxB,OAAO,CAAC,gBAAgB;YAcV,MAAM;IA2mBpB,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,kBAAkB;IAc1B,OAAO,CAAC,iBAAiB;IAiCzB,OAAO,CAAC,YAAY;IAsBpB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAoB;YAE5C,QAAQ;IAgBtB,OAAO,CAAC,IAAI;CAKb"}
|
package/dist/hub/server.js
CHANGED
|
@@ -51,6 +51,10 @@ class HubServer {
|
|
|
51
51
|
static RATE_LIMIT_DEFAULT = 60;
|
|
52
52
|
static RATE_LIMIT_SEARCH = 30;
|
|
53
53
|
rateBuckets = new Map();
|
|
54
|
+
static OFFLINE_THRESHOLD_MS = 2 * 60 * 1000;
|
|
55
|
+
static OFFLINE_CHECK_INTERVAL_MS = 30 * 1000;
|
|
56
|
+
offlineCheckTimer;
|
|
57
|
+
knownOnlineUsers = new Set();
|
|
54
58
|
constructor(opts) {
|
|
55
59
|
this.opts = opts;
|
|
56
60
|
this.userManager = new user_manager_1.HubUserManager(opts.store, opts.log);
|
|
@@ -109,9 +113,15 @@ class HubServer {
|
|
|
109
113
|
this.saveAuthState();
|
|
110
114
|
this.opts.log.info(`memos-local: bootstrap admin token persisted to ${this.authStatePath}`);
|
|
111
115
|
}
|
|
116
|
+
this.initOnlineTracking();
|
|
117
|
+
this.offlineCheckTimer = setInterval(() => this.checkOfflineUsers(), HubServer.OFFLINE_CHECK_INTERVAL_MS);
|
|
112
118
|
return `http://127.0.0.1:${this.port}`;
|
|
113
119
|
}
|
|
114
120
|
async stop() {
|
|
121
|
+
if (this.offlineCheckTimer) {
|
|
122
|
+
clearInterval(this.offlineCheckTimer);
|
|
123
|
+
this.offlineCheckTimer = undefined;
|
|
124
|
+
}
|
|
115
125
|
if (!this.server)
|
|
116
126
|
return;
|
|
117
127
|
const server = this.server;
|
|
@@ -227,6 +237,7 @@ class HubServer {
|
|
|
227
237
|
}
|
|
228
238
|
catch { /* best-effort */ }
|
|
229
239
|
this.opts.log.info(`Hub: user "${username}" (${user.id}) registered as pending, awaiting admin approval`);
|
|
240
|
+
this.notifyAdmins("user_join_request", "user", username, "");
|
|
230
241
|
return this.json(res, 200, { status: "pending", userId: user.id });
|
|
231
242
|
}
|
|
232
243
|
if (req.method === "POST" && routePath === "/api/v1/hub/registration-status") {
|
|
@@ -260,6 +271,19 @@ class HubServer {
|
|
|
260
271
|
if (!this.checkRateLimit(auth.userId, endpointKey)) {
|
|
261
272
|
return this.json(res, 429, { error: "rate_limit_exceeded", retryAfterMs: HubServer.RATE_WINDOW_MS });
|
|
262
273
|
}
|
|
274
|
+
if (req.method === "POST" && routePath === "/api/v1/hub/heartbeat") {
|
|
275
|
+
return this.json(res, 200, { ok: true });
|
|
276
|
+
}
|
|
277
|
+
if (req.method === "POST" && routePath === "/api/v1/hub/leave") {
|
|
278
|
+
try {
|
|
279
|
+
this.opts.store.updateHubUserActivity(auth.userId, "", 0);
|
|
280
|
+
}
|
|
281
|
+
catch { /* best-effort */ }
|
|
282
|
+
this.knownOnlineUsers.delete(auth.userId);
|
|
283
|
+
this.notifyAdmins("user_offline", "user", auth.username, auth.userId);
|
|
284
|
+
this.opts.log.info(`Hub: user "${auth.username}" (${auth.userId}) left voluntarily`);
|
|
285
|
+
return this.json(res, 200, { ok: true });
|
|
286
|
+
}
|
|
263
287
|
if (req.method === "GET" && routePath === "/api/v1/hub/me") {
|
|
264
288
|
const user = this.opts.store.getHubUser(auth.userId);
|
|
265
289
|
if (!user)
|
|
@@ -299,6 +323,10 @@ class HubServer {
|
|
|
299
323
|
const approved = this.userManager.approveUser(String(body.userId), token);
|
|
300
324
|
if (!approved)
|
|
301
325
|
return this.json(res, 404, { error: "not_found" });
|
|
326
|
+
try {
|
|
327
|
+
this.opts.store.updateHubUserActivity(String(body.userId), "");
|
|
328
|
+
}
|
|
329
|
+
catch { /* best-effort */ }
|
|
302
330
|
return this.json(res, 200, { status: "active", token });
|
|
303
331
|
}
|
|
304
332
|
if (req.method === "POST" && routePath === "/api/v1/hub/admin/reject-user") {
|
|
@@ -315,12 +343,16 @@ class HubServer {
|
|
|
315
343
|
return this.json(res, 403, { error: "forbidden" });
|
|
316
344
|
const users = this.opts.store.listHubUsers().filter(u => u.status === "active");
|
|
317
345
|
const contribs = this.opts.store.getHubUserContributions();
|
|
346
|
+
const ownerId = this.authState.bootstrapAdminUserId || "";
|
|
347
|
+
const now = Date.now();
|
|
318
348
|
return this.json(res, 200, { users: users.map(u => {
|
|
319
349
|
const c = contribs[u.id] || { memoryCount: 0, taskCount: 0, skillCount: 0 };
|
|
350
|
+
const isOnline = u.id === ownerId || (!!u.lastActiveAt && now - u.lastActiveAt < HubServer.OFFLINE_THRESHOLD_MS);
|
|
320
351
|
return {
|
|
321
352
|
id: u.id, username: u.username, role: u.role, status: u.status,
|
|
322
353
|
deviceName: u.deviceName, createdAt: u.createdAt, approvedAt: u.approvedAt,
|
|
323
354
|
lastIp: u.lastIp || "", lastActiveAt: u.lastActiveAt,
|
|
355
|
+
isOwner: u.id === ownerId, isOnline,
|
|
324
356
|
memoryCount: c.memoryCount, taskCount: c.taskCount, skillCount: c.skillCount,
|
|
325
357
|
};
|
|
326
358
|
}) });
|
|
@@ -333,6 +365,9 @@ class HubServer {
|
|
|
333
365
|
const newRole = String(body?.role || "");
|
|
334
366
|
if (!userId || (newRole !== "admin" && newRole !== "member"))
|
|
335
367
|
return this.json(res, 400, { error: "invalid_params" });
|
|
368
|
+
if (newRole === "member" && userId === this.authState.bootstrapAdminUserId) {
|
|
369
|
+
return this.json(res, 403, { error: "cannot_demote_owner", message: "The hub owner cannot be demoted" });
|
|
370
|
+
}
|
|
336
371
|
const user = this.opts.store.getHubUser(userId);
|
|
337
372
|
if (!user || user.status !== "active")
|
|
338
373
|
return this.json(res, 404, { error: "not_found" });
|
|
@@ -356,8 +391,12 @@ class HubServer {
|
|
|
356
391
|
const user = this.opts.store.getHubUser(userId);
|
|
357
392
|
if (!user || user.status !== "active")
|
|
358
393
|
return this.json(res, 404, { error: "not_found" });
|
|
359
|
-
const
|
|
360
|
-
|
|
394
|
+
const ttlMs = user.role === "admin" ? 3650 * 24 * 60 * 60 * 1000 : undefined;
|
|
395
|
+
const newToken = (0, auth_1.issueUserToken)({ userId: user.id, username: newUsername, role: user.role, status: user.status }, this.authSecret, ttlMs);
|
|
396
|
+
this.userManager.approveUser(user.id, newToken);
|
|
397
|
+
const updated = this.opts.store.getHubUser(userId);
|
|
398
|
+
const finalUser = { ...updated, username: newUsername };
|
|
399
|
+
this.opts.store.upsertHubUser(finalUser);
|
|
361
400
|
this.opts.log.info(`Hub: admin "${auth.userId}" renamed user "${userId}" to "${newUsername}"`);
|
|
362
401
|
return this.json(res, 200, { ok: true, username: newUsername });
|
|
363
402
|
}
|
|
@@ -370,6 +409,8 @@ class HubServer {
|
|
|
370
409
|
return this.json(res, 400, { error: "missing_user_id" });
|
|
371
410
|
if (userId === auth.userId)
|
|
372
411
|
return this.json(res, 400, { error: "cannot_remove_self" });
|
|
412
|
+
if (userId === this.authState.bootstrapAdminUserId)
|
|
413
|
+
return this.json(res, 403, { error: "cannot_remove_owner", message: "The hub owner cannot be removed" });
|
|
373
414
|
const cleanResources = body?.cleanResources === true;
|
|
374
415
|
const deleted = this.opts.store.deleteHubUser(userId, cleanResources);
|
|
375
416
|
if (!deleted)
|
|
@@ -382,6 +423,7 @@ class HubServer {
|
|
|
382
423
|
if (!body?.task)
|
|
383
424
|
return this.json(res, 400, { error: "invalid_payload" });
|
|
384
425
|
const task = { ...body.task, sourceUserId: auth.userId };
|
|
426
|
+
const existingTask = task.sourceTaskId ? this.opts.store.getHubTaskBySource(auth.userId, task.sourceTaskId) : null;
|
|
385
427
|
this.opts.store.upsertHubTask(task);
|
|
386
428
|
const chunks = Array.isArray(body.chunks) ? body.chunks : [];
|
|
387
429
|
const chunkIds = [];
|
|
@@ -389,15 +431,22 @@ class HubServer {
|
|
|
389
431
|
this.opts.store.upsertHubChunk({ ...chunk, sourceUserId: auth.userId });
|
|
390
432
|
chunkIds.push(chunk.id);
|
|
391
433
|
}
|
|
392
|
-
// Async embedding: don't block the response
|
|
393
434
|
if (this.opts.embedder && chunkIds.length > 0) {
|
|
394
435
|
this.embedChunksAsync(chunkIds, chunks);
|
|
395
436
|
}
|
|
437
|
+
if (!existingTask) {
|
|
438
|
+
this.notifyAdmins("resource_shared", "task", String(task.title || task.sourceTaskId || ""), auth.userId);
|
|
439
|
+
}
|
|
396
440
|
return this.json(res, 200, { ok: true, chunks: chunkIds.length });
|
|
397
441
|
}
|
|
398
442
|
if (req.method === "POST" && routePath === "/api/v1/hub/tasks/unshare") {
|
|
399
443
|
const body = await this.readJson(req);
|
|
400
|
-
|
|
444
|
+
const srcTaskId = String(body.sourceTaskId);
|
|
445
|
+
const existing = this.opts.store.getHubTaskBySource(auth.userId, srcTaskId);
|
|
446
|
+
this.opts.store.deleteHubTaskBySource(auth.userId, srcTaskId);
|
|
447
|
+
if (existing) {
|
|
448
|
+
this.notifyAdmins("resource_unshared", "task", existing.title || srcTaskId, auth.userId);
|
|
449
|
+
}
|
|
401
450
|
return this.json(res, 200, { ok: true });
|
|
402
451
|
}
|
|
403
452
|
if (req.method === "POST" && routePath === "/api/v1/hub/memories/share") {
|
|
@@ -429,6 +478,9 @@ class HubServer {
|
|
|
429
478
|
if (this.opts.embedder) {
|
|
430
479
|
this.embedMemoryAsync(memoryId, String(m.summary || ""), String(m.content || ""));
|
|
431
480
|
}
|
|
481
|
+
if (!existing) {
|
|
482
|
+
this.notifyAdmins("resource_shared", "memory", String(m.summary || m.content?.slice(0, 60) || memoryId), auth.userId);
|
|
483
|
+
}
|
|
432
484
|
return this.json(res, 200, { ok: true, memoryId, visibility });
|
|
433
485
|
}
|
|
434
486
|
if (req.method === "POST" && routePath === "/api/v1/hub/memories/unshare") {
|
|
@@ -436,7 +488,11 @@ class HubServer {
|
|
|
436
488
|
const sourceChunkId = String(body?.sourceChunkId || "");
|
|
437
489
|
if (!sourceChunkId)
|
|
438
490
|
return this.json(res, 400, { error: "missing_source_chunk_id" });
|
|
491
|
+
const existing = this.opts.store.getHubMemoryBySource(auth.userId, sourceChunkId);
|
|
439
492
|
this.opts.store.deleteHubMemoryBySource(auth.userId, sourceChunkId);
|
|
493
|
+
if (existing) {
|
|
494
|
+
this.notifyAdmins("resource_unshared", "memory", existing.summary || existing.content?.slice(0, 60) || sourceChunkId, auth.userId);
|
|
495
|
+
}
|
|
440
496
|
return this.json(res, 200, { ok: true });
|
|
441
497
|
}
|
|
442
498
|
if (req.method === "GET" && routePath === "/api/v1/hub/memories") {
|
|
@@ -588,6 +644,9 @@ class HubServer {
|
|
|
588
644
|
createdAt: existing?.createdAt ?? Date.now(),
|
|
589
645
|
updatedAt: Date.now(),
|
|
590
646
|
});
|
|
647
|
+
if (!existing) {
|
|
648
|
+
this.notifyAdmins("resource_shared", "skill", String(metadata.name || sourceSkillId), auth.userId);
|
|
649
|
+
}
|
|
591
650
|
return this.json(res, 200, { ok: true, skillId, visibility });
|
|
592
651
|
}
|
|
593
652
|
const skillBundleMatch = req.method === "GET" ? routePath.match(/^\/api\/v1\/hub\/skills\/([^/]+)\/bundle$/) : null;
|
|
@@ -609,7 +668,12 @@ class HubServer {
|
|
|
609
668
|
}
|
|
610
669
|
if (req.method === "POST" && routePath === "/api/v1/hub/skills/unpublish") {
|
|
611
670
|
const body = await this.readJson(req);
|
|
612
|
-
|
|
671
|
+
const srcSkillId = String(body?.sourceSkillId || "");
|
|
672
|
+
const existing = this.opts.store.getHubSkillBySource(auth.userId, srcSkillId);
|
|
673
|
+
this.opts.store.deleteHubSkillBySource(auth.userId, srcSkillId);
|
|
674
|
+
if (existing) {
|
|
675
|
+
this.notifyAdmins("resource_unshared", "skill", existing.name || srcSkillId, auth.userId);
|
|
676
|
+
}
|
|
613
677
|
return this.json(res, 200, { ok: true });
|
|
614
678
|
}
|
|
615
679
|
// ── Admin: shared tasks & skills management ──
|
|
@@ -619,6 +683,39 @@ class HubServer {
|
|
|
619
683
|
const tasks = this.opts.store.listAllHubTasks();
|
|
620
684
|
return this.json(res, 200, { tasks });
|
|
621
685
|
}
|
|
686
|
+
const hubTaskDetailMatch = req.method === "GET" ? routePath.match(/^\/api\/v1\/hub\/shared-tasks\/([^/]+)\/detail$/) : null;
|
|
687
|
+
if (hubTaskDetailMatch) {
|
|
688
|
+
const taskId = decodeURIComponent(hubTaskDetailMatch[1]);
|
|
689
|
+
const task = this.opts.store.getHubTaskById(taskId);
|
|
690
|
+
if (!task)
|
|
691
|
+
return this.json(res, 404, { error: "not_found" });
|
|
692
|
+
const chunks = this.opts.store.listHubChunksByTaskId(taskId);
|
|
693
|
+
return this.json(res, 200, {
|
|
694
|
+
id: task.id, title: task.title, summary: task.summary,
|
|
695
|
+
startedAt: task.createdAt, endedAt: task.updatedAt,
|
|
696
|
+
chunks: chunks.map(c => ({ role: c.role, content: c.content, summary: c.summary, kind: c.kind, createdAt: c.createdAt })),
|
|
697
|
+
});
|
|
698
|
+
}
|
|
699
|
+
const hubSkillDetailMatch = req.method === "GET" ? routePath.match(/^\/api\/v1\/hub\/shared-skills\/([^/]+)\/detail$/) : null;
|
|
700
|
+
if (hubSkillDetailMatch) {
|
|
701
|
+
const skillId = decodeURIComponent(hubSkillDetailMatch[1]);
|
|
702
|
+
const skill = this.opts.store.getHubSkillById(skillId);
|
|
703
|
+
if (!skill)
|
|
704
|
+
return this.json(res, 404, { error: "not_found" });
|
|
705
|
+
let files = [];
|
|
706
|
+
try {
|
|
707
|
+
const bundle = JSON.parse(skill.bundle || "{}");
|
|
708
|
+
if (Array.isArray(bundle.files)) {
|
|
709
|
+
files = bundle.files.map((f) => ({ path: f.path ?? f.name ?? "unknown", type: f.type ?? "file", size: f.size ?? (f.content ? f.content.length : 0) }));
|
|
710
|
+
}
|
|
711
|
+
}
|
|
712
|
+
catch { /* ignore parse error */ }
|
|
713
|
+
return this.json(res, 200, {
|
|
714
|
+
skill: { id: skill.id, name: skill.name, description: skill.description, version: skill.version, qualityScore: skill.qualityScore, status: "published" },
|
|
715
|
+
files,
|
|
716
|
+
versions: [],
|
|
717
|
+
});
|
|
718
|
+
}
|
|
622
719
|
const adminTaskDeleteMatch = req.method === "DELETE" ? routePath.match(/^\/api\/v1\/hub\/admin\/shared-tasks\/([^/]+)$/) : null;
|
|
623
720
|
if (adminTaskDeleteMatch) {
|
|
624
721
|
if (auth.role !== "admin")
|
|
@@ -713,6 +810,64 @@ class HubServer {
|
|
|
713
810
|
}
|
|
714
811
|
return this.json(res, 404, { error: "not_found" });
|
|
715
812
|
}
|
|
813
|
+
notifyAdmins(type, resource, title, fromUserId) {
|
|
814
|
+
try {
|
|
815
|
+
const admins = this.opts.store.listHubUsers("active").filter(u => u.role === "admin" && u.id !== fromUserId);
|
|
816
|
+
for (const admin of admins) {
|
|
817
|
+
this.opts.store.insertHubNotification({ id: (0, crypto_1.randomUUID)(), userId: admin.id, type, resource, title });
|
|
818
|
+
}
|
|
819
|
+
}
|
|
820
|
+
catch { /* best-effort */ }
|
|
821
|
+
}
|
|
822
|
+
initOnlineTracking() {
|
|
823
|
+
try {
|
|
824
|
+
const ownerId = this.authState.bootstrapAdminUserId || "";
|
|
825
|
+
const users = this.opts.store.listHubUsers("active");
|
|
826
|
+
const now = Date.now();
|
|
827
|
+
for (const u of users) {
|
|
828
|
+
if (u.id === ownerId)
|
|
829
|
+
continue;
|
|
830
|
+
if (u.lastActiveAt && now - u.lastActiveAt < HubServer.OFFLINE_THRESHOLD_MS) {
|
|
831
|
+
this.knownOnlineUsers.add(u.id);
|
|
832
|
+
}
|
|
833
|
+
}
|
|
834
|
+
}
|
|
835
|
+
catch { /* best-effort */ }
|
|
836
|
+
}
|
|
837
|
+
checkOfflineUsers() {
|
|
838
|
+
try {
|
|
839
|
+
const ownerId = this.authState.bootstrapAdminUserId || "";
|
|
840
|
+
const users = this.opts.store.listHubUsers("active");
|
|
841
|
+
const now = Date.now();
|
|
842
|
+
const currentlyOnline = new Set();
|
|
843
|
+
for (const u of users) {
|
|
844
|
+
if (u.id === ownerId)
|
|
845
|
+
continue;
|
|
846
|
+
if (u.lastActiveAt && now - u.lastActiveAt < HubServer.OFFLINE_THRESHOLD_MS) {
|
|
847
|
+
currentlyOnline.add(u.id);
|
|
848
|
+
}
|
|
849
|
+
}
|
|
850
|
+
for (const uid of this.knownOnlineUsers) {
|
|
851
|
+
if (!currentlyOnline.has(uid)) {
|
|
852
|
+
const user = users.find(u => u.id === uid);
|
|
853
|
+
if (user) {
|
|
854
|
+
this.notifyAdmins("user_offline", "user", user.username, uid);
|
|
855
|
+
this.opts.log.info(`Hub: user "${user.username}" (${uid}) went offline`);
|
|
856
|
+
}
|
|
857
|
+
}
|
|
858
|
+
}
|
|
859
|
+
for (const uid of currentlyOnline) {
|
|
860
|
+
if (!this.knownOnlineUsers.has(uid)) {
|
|
861
|
+
const user = users.find(u => u.id === uid);
|
|
862
|
+
if (user) {
|
|
863
|
+
this.notifyAdmins("user_online", "user", user.username, uid);
|
|
864
|
+
}
|
|
865
|
+
}
|
|
866
|
+
}
|
|
867
|
+
this.knownOnlineUsers = currentlyOnline;
|
|
868
|
+
}
|
|
869
|
+
catch { /* best-effort */ }
|
|
870
|
+
}
|
|
716
871
|
authenticate(req) {
|
|
717
872
|
const header = req.headers.authorization;
|
|
718
873
|
if (!header || !header.startsWith("Bearer "))
|