@xopcai/xopc 0.0.247 → 0.0.248
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/browser-ext/manifest.json +1 -1
- package/dist/extensions/telegram/src/update-offset-store.js +17 -54
- package/dist/extensions/telegram/xopc.extension.json +1 -1
- package/dist/extensions/weixin/src/auth/accounts.js +3 -5
- package/dist/extensions/weixin/src/monitor/monitor.js +3 -5
- package/dist/extensions/weixin/src/storage/sync-buf.d.ts +3 -6
- package/dist/extensions/weixin/src/storage/sync-buf.js +9 -22
- package/dist/gateway/static/root/assets/{activity-store-BlxqErph.js → activity-store-etpmyV7S.js} +1 -1
- package/dist/gateway/static/root/assets/{agent-avatar-dicebear-DmaFeojS.js → agent-avatar-dicebear-BmKxSM1k.js} +1 -1
- package/dist/gateway/static/root/assets/agent-defaults-settings-panel-CUXApfcE.js +1 -0
- package/dist/gateway/static/root/assets/{agents-CZwf1mgZ.js → agents-DNq_GKuc.js} +1 -1
- package/dist/gateway/static/root/assets/{api-BbXzyQMj.js → api-B0-hLuZ1.js} +1 -1
- package/dist/gateway/static/root/assets/{app-management-settings-panel-BODskFTb.js → app-management-settings-panel-qfwAgyhQ.js} +1 -1
- package/dist/gateway/static/root/assets/{appearance-settings-DeaVvaYZ.js → appearance-settings-DqQVUpCC.js} +1 -1
- package/dist/gateway/static/root/assets/apps-page-dwIqYmXk.js +1 -0
- package/dist/gateway/static/root/assets/{archive-plugin-DD2SweEH.js → archive-plugin-BnMSgZvR.js} +1 -1
- package/dist/gateway/static/root/assets/{attachment-load-BG82bNBQ.js → attachment-load-CejsQMev.js} +1 -1
- package/dist/gateway/static/root/assets/{automations-page-CqBZ89He.js → automations-page-RC8EyoAf.js} +1 -1
- package/dist/gateway/static/root/assets/automations-workspace-SkdcSZ0i.js +6 -0
- package/dist/gateway/static/root/assets/{binary-plugins-B6LKm5Zv.js → binary-plugins-DGjppLSG.js} +1 -1
- package/dist/gateway/static/root/assets/{block-editor-BJKvGVXd.js → block-editor-CWdP4bUc.js} +44 -44
- package/dist/gateway/static/root/assets/browser-settings-page-CKCa6TvG.js +8 -0
- package/dist/gateway/static/root/assets/{browser-workflow-inputs-BAAc151l.js → browser-workflow-inputs-BQ1Ilw_o.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-workflows-page-DoE4Uuns.js → browser-workflows-page-CJh4NyxT.js} +2 -2
- package/dist/gateway/static/root/assets/{capabilities-settings-panel-Cg7zCxEH.js → capabilities-settings-panel-DSp--zIZ.js} +5 -5
- package/dist/gateway/static/root/assets/channels-settings-CMd2dDrI.js +1 -0
- package/dist/gateway/static/root/assets/{channels-status-swr-CCBCtLDg.js → channels-status-swr-Ohhee4vm.js} +1 -1
- package/dist/gateway/static/root/assets/{chat-terminal-dock-BsRWnz7M.js → chat-terminal-dock-BOtoKTK3.js} +2 -2
- package/dist/gateway/static/root/assets/connectors-page-udWs5Kdm.js +2 -0
- package/dist/gateway/static/root/assets/{cron-expression-DdCgsH2c.js → cron-expression-DTj1V3Sw.js} +1 -1
- package/dist/gateway/static/root/assets/{date-picker-dt37Lt8e.js → date-picker-Yr6OCvGL.js} +1 -1
- package/dist/gateway/static/root/assets/{dependency-picker-oi7cdv2C.js → dependency-picker-DpN3XZg9.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-Nw_Pgkk3.js → desktop-pet-DbGzggPF.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-settings-D9OO-exo.js → desktop-pet-settings-DinCToZh.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-debug-page-BHSst0WN.js → extension-debug-page-DgTtk4KC.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-DXbL4cQZ.js → extension-page-DtQeiP6f.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-settings-page-FTD7nE8v.js → extension-settings-page-DcguCgsH.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-config-api-c-8ENciH.js → gateway-config-api-Br7lSf6H.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-config-swr-826dipyU.js → gateway-config-swr-DXuXtU1w.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-settings-BxvyTRl0.js → gateway-settings-CdPoDMuj.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-startup-retry-DyvcAIMm.js → gateway-startup-retry-CzBzglzQ.js} +1 -1
- package/dist/gateway/static/root/assets/{heartbeat-settings-C1S2Ccui.js → heartbeat-settings-DHk1hawP.js} +1 -1
- package/dist/gateway/static/root/assets/home-page-YGipe_W6.js +1 -0
- package/dist/gateway/static/root/assets/{image-generation-api-D7cyfks6.js → image-generation-api-TIgsn04n.js} +1 -1
- package/dist/gateway/static/root/assets/{index-Cif1_3Jx.js → index-D5TQQpeb.js} +44 -44
- package/dist/gateway/static/root/assets/index-DReBaaTX.css +2 -0
- package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-EY4cu-6W.js → keyboard-shortcuts-settings-wsWuoa8p.js} +1 -1
- package/dist/gateway/static/root/assets/local-app-workbench-page-CpyvYyrb.js +2 -0
- package/dist/gateway/static/root/assets/{local-apps-page-Dh7OxX0S.js → local-apps-page-CXrbrGo8.js} +1 -1
- package/dist/gateway/static/root/assets/local-context-graph-BjUf7fQ9.js +1 -0
- package/dist/gateway/static/root/assets/{locale-store-CBoCuIMx.js → locale-store-BJFLQY8O.js} +1 -1
- package/dist/gateway/static/root/assets/{logs-page-DUsxXdDp.js → logs-page-CXKy6E_l.js} +2 -2
- package/dist/gateway/static/root/assets/{management-settings-ZjiL3A-S.js → management-settings-BdJZFR7U.js} +1 -1
- package/dist/gateway/static/root/assets/{markdown-split-B4BxkTpU.js → markdown-split-NK3ACVG2.js} +1 -1
- package/dist/gateway/static/root/assets/{markdown-view-BXsHghJd.js → markdown-view-DTF9v1gg.js} +1 -1
- package/dist/gateway/static/root/assets/{media-plugins-D15XBiEo.js → media-plugins-F0jcUxyl.js} +1 -1
- package/dist/gateway/static/root/assets/messages-CHNYp8EQ.js +3 -0
- package/dist/gateway/static/root/assets/{mobile-pairing-wizard-Dv87XewB.js → mobile-pairing-wizard-3NKCniSp.js} +1 -1
- package/dist/gateway/static/root/assets/models-hub-cache-nCfkBN8M.js +1 -0
- package/dist/gateway/static/root/assets/{notes-page-DOe0lOcQ.js → notes-page-DuqLahi6.js} +1 -1
- package/dist/gateway/static/root/assets/notes-workbench-C7j9EdQk.js +5 -0
- package/dist/gateway/static/root/assets/{oauth-api-BjSUDIgq.js → oauth-api-8lP_qJpq.js} +1 -1
- package/dist/gateway/static/root/assets/{product-open-page-CAJeUXeU.js → product-open-page-CxGGlWA8.js} +1 -1
- package/dist/gateway/static/root/assets/project-detail-page-CfebYVX0.js +1 -0
- package/dist/gateway/static/root/assets/projects-page-48GvzSVa.js +1 -0
- package/dist/gateway/static/root/assets/{registry-api-BhGKnvLP.js → registry-api-CIsNlSBi.js} +1 -1
- package/dist/gateway/static/root/assets/remote-access-hub-64xj_s2m.js +1 -0
- package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-BhKcyEId.js → runtime-tools-settings-panel-YkjhiQfA.js} +2 -2
- package/dist/gateway/static/root/assets/{schema-form-L0s7RWCi.js → schema-form-oFGf3G3s.js} +1 -1
- package/dist/gateway/static/root/assets/sessions-page-CcwcdRN8.js +1 -0
- package/dist/gateway/static/root/assets/settings-advanced-gate-BaN84CyW.js +1 -0
- package/dist/gateway/static/root/assets/{settings-page-CTKoztlF.js → settings-page-C7VWs0IT.js} +1 -1
- package/dist/gateway/static/root/assets/setup-status-panel-DVVOCNbr.js +1 -0
- package/dist/gateway/static/root/assets/{share-preview-page-CiiLLz5A.js → share-preview-page-t5oz18rh.js} +1 -1
- package/dist/gateway/static/root/assets/shares-settings-DUYbYLi7.js +1 -0
- package/dist/gateway/static/root/assets/skill-reload-api-BGyD0gB9.js +1 -0
- package/dist/gateway/static/root/assets/{skills-page-cBT9jCof.js → skills-page-CjF8DTsN.js} +1 -1
- package/dist/gateway/static/root/assets/{skills-page.utils-CwRekJSJ.js → skills-page.utils-DEDTYs2W.js} +1 -1
- package/dist/gateway/static/root/assets/{system-settings-panel-Byrk4DQy.js → system-settings-panel-BSYuRgFI.js} +1 -1
- package/dist/gateway/static/root/assets/task-detail-page-YZYSTJH7.js +1 -0
- package/dist/gateway/static/root/assets/{theme-store-hybK3oC9.js → theme-store-O597U8q_.js} +1 -1
- package/dist/gateway/static/root/assets/{tunnel-api-jKzujxFU.js → tunnel-api-FKUi9wDL.js} +1 -1
- package/dist/gateway/static/root/assets/{use-autosave-DX5YZ3Nn.js → use-autosave-B5eUJ6Zq.js} +1 -1
- package/dist/gateway/static/root/assets/user-context-page-BCyiduKd.js +2 -0
- package/dist/gateway/static/root/assets/{voice-api-key-field-ocnZbAyi.js → voice-api-key-field-CMKSwz4C.js} +1 -1
- package/dist/gateway/static/root/assets/{voice-config-api-CBbiF1T3.js → voice-config-api-q7B6fOFB.js} +1 -1
- package/dist/gateway/static/root/assets/{work-discovery-overlay-DE4_YpDn.js → work-discovery-overlay-jhT2EzeH.js} +1 -1
- package/dist/gateway/static/root/assets/{workflow-run-setup-panel-DaErGvxO.js → workflow-run-setup-panel-DZmvLZjb.js} +2 -2
- package/dist/gateway/static/root/assets/workflows-page-DQC0TpMa.js +5 -0
- package/dist/gateway/static/root/index.html +12 -12
- package/dist/package.js +1 -1
- package/dist/src/agent/commands/command-registry.d.ts +1 -0
- package/dist/src/agent/commands/command-registry.js +12 -22
- package/dist/src/agent/ipc/inbox.d.ts +8 -31
- package/dist/src/agent/ipc/inbox.js +64 -133
- package/dist/src/agent/service/process-direct-one-shot.js +15 -10
- package/dist/src/agent/workflow/catalog.d.ts +1 -8
- package/dist/src/agent/workflow/catalog.js +44 -102
- package/dist/src/agent/workflow/index.d.ts +1 -1
- package/dist/src/agent/workflow/index.js +2 -2
- package/dist/src/automations/domain/types.d.ts +1 -0
- package/dist/src/automations/service/action-executor.js +2 -2
- package/dist/src/automations/service/automation-service.js +2 -2
- package/dist/src/channels/manager.d.ts +1 -1
- package/dist/src/channels/manager.js +2 -2
- package/dist/src/channels/outbound/persist-store.d.ts +2 -8
- package/dist/src/channels/outbound/persist-store.js +11 -38
- package/dist/src/channels/outbound-sender.d.ts +1 -1
- package/dist/src/channels/outbound-sender.js +2 -2
- package/dist/src/cli/commands/connectors.js +1 -1
- package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
- package/dist/src/config/schema.js +2 -2
- package/dist/src/connectors/auth-provider-registry.js +1 -1
- package/dist/src/connectors/composio-triggers.d.ts +2 -2
- package/dist/src/connectors/composio-triggers.js +8 -15
- package/dist/src/connectors/connected-source-ingestion.js +1 -1
- package/dist/src/connectors/health.js +1 -1
- package/dist/src/gateway/automation-agent-session.js +3 -0
- package/dist/src/gateway/hono/lib/extension-store.js +8 -25
- package/dist/src/gateway/hono/routes/capabilities.js +1 -1
- package/dist/src/gateway/hono/routes/connectors.js +3 -3
- package/dist/src/gateway/hono/routes/mcp.js +1 -1
- package/dist/src/gateway/hono/routes/projects.js +1 -1
- package/dist/src/gateway/hono/routes/workflows.js +2 -2
- package/dist/src/gateway/hono/routes/you.js +16 -2
- package/dist/src/gateway/service.js +4 -5
- package/dist/src/notes/index.d.ts +1 -1
- package/dist/src/notes/index.js +2 -2
- package/dist/src/notes/paths.d.ts +0 -3
- package/dist/src/notes/paths.js +1 -10
- package/dist/src/notes/service.d.ts +0 -1
- package/dist/src/notes/service.js +0 -3
- package/dist/src/notes/store.d.ts +0 -2
- package/dist/src/notes/store.js +33 -80
- package/dist/src/share/hosted-session-share.d.ts +1 -4
- package/dist/src/share/hosted-session-share.js +14 -47
- package/dist/src/share/share-auto.d.ts +1 -1
- package/dist/src/share/share-auto.js +2 -2
- package/dist/src/share/share-store.d.ts +2 -7
- package/dist/src/share/share-store.js +153 -195
- package/dist/src/share/share-types.d.ts +0 -4
- package/dist/src/share/site-share-store.d.ts +3 -8
- package/dist/src/share/site-share-store.js +94 -153
- package/dist/src/share/site-share-types.d.ts +0 -4
- package/dist/src/storage/sqlite/connection.d.ts +1 -2
- package/dist/src/storage/sqlite/connection.js +50 -47
- package/dist/src/storage/sqlite/durable-queue.d.ts +16 -0
- package/dist/src/storage/sqlite/durable-queue.js +52 -0
- package/dist/src/storage/sqlite/durable-state.d.ts +16 -0
- package/dist/src/storage/sqlite/durable-state.js +43 -0
- package/dist/src/storage/sqlite/migrations/146_understanding_focus_exclusions.sql +9 -0
- package/dist/src/storage/sqlite/migrations/147_durable_application_state.sql +39 -0
- package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
- package/dist/src/storage/sqlite/migrations/runner.js +3 -3
- package/dist/src/storage/sqlite/migrations/runner.ts +1 -1
- package/dist/src/storage/sqlite/schema.js +1 -1
- package/dist/src/storage/sqlite/understanding-focus-exclusions.d.ts +2 -0
- package/dist/src/storage/sqlite/understanding-focus-exclusions.js +24 -0
- package/dist/src/tui/tui-scoped-models.js +9 -6
- package/dist/src/tui/tui-startup-resources.js +1 -1
- package/dist/src/voice/realtime/agentEngine.js +63 -18
- package/dist/src/voice/realtime/conversationTurn.d.ts +20 -0
- package/dist/src/voice/realtime/conversationTurn.js +83 -0
- package/dist/src/voice/realtime/omniEngine.js +72 -18
- package/dist/src/workflows/authoring/workflow-draft-store.d.ts +1 -5
- package/dist/src/workflows/authoring/workflow-draft-store.js +23 -43
- package/dist/src/workflows/index.js +2 -2
- package/dist/src/workflows/store/event-store.d.ts +1 -2
- package/dist/src/workflows/store/event-store.js +19 -64
- package/dist/src/workflows/store/paths.d.ts +0 -2
- package/dist/src/workflows/store/paths.js +1 -7
- package/dist/src/workflows/store/run-store.d.ts +0 -1
- package/dist/src/workflows/store/run-store.js +1 -24
- package/package.json +3 -3
- package/dist/gateway/static/root/assets/agent-defaults-settings-panel-eG49pM-z.js +0 -1
- package/dist/gateway/static/root/assets/apps-page-BZG3BK7f.js +0 -1
- package/dist/gateway/static/root/assets/automations-workspace-CB7Yl2_B.js +0 -6
- package/dist/gateway/static/root/assets/browser-settings-page-Bu42Ljfw.js +0 -8
- package/dist/gateway/static/root/assets/channels-settings-EDTZ8P3y.js +0 -1
- package/dist/gateway/static/root/assets/connectors-page-kh7PEkSS.js +0 -2
- package/dist/gateway/static/root/assets/home-page-Bqx-SMWV.js +0 -1
- package/dist/gateway/static/root/assets/index-Dbh5SXyV.css +0 -2
- package/dist/gateway/static/root/assets/local-app-workbench-page-sDdw7Y3Q.js +0 -2
- package/dist/gateway/static/root/assets/messages-BbdwoxVo.js +0 -3
- package/dist/gateway/static/root/assets/models-hub-cache-88f4fzYS.js +0 -1
- package/dist/gateway/static/root/assets/notes-workbench-Cy0oYbWP.js +0 -4
- package/dist/gateway/static/root/assets/project-detail-page-fgD1xc4O.js +0 -1
- package/dist/gateway/static/root/assets/projects-page-CiTiEcOc.js +0 -1
- package/dist/gateway/static/root/assets/remote-access-hub-Dc0GrNSp.js +0 -1
- package/dist/gateway/static/root/assets/sessions-page-BPOW3yaM.js +0 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-Bz4s9BBY.js +0 -1
- package/dist/gateway/static/root/assets/setup-status-panel-rllj-j7k.js +0 -1
- package/dist/gateway/static/root/assets/shares-settings-DMj7onCX.js +0 -1
- package/dist/gateway/static/root/assets/skill-reload-api-DRB366nS.js +0 -1
- package/dist/gateway/static/root/assets/task-detail-page-CheX3zmK.js +0 -1
- package/dist/gateway/static/root/assets/user-context-page-CWy3Pqtk.js +0 -1
- package/dist/gateway/static/root/assets/workflows-page-y4O9-BTf.js +0 -5
|
@@ -1,64 +1,27 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { init_paths } from "../../../src/config/paths.js";
|
|
3
|
-
import { join } from "node:path";
|
|
4
|
-
import { mkdirSync, readFileSync, renameSync, writeFileSync } from "node:fs";
|
|
1
|
+
import { DurableState } from "../../../src/storage/sqlite/durable-state.js";
|
|
5
2
|
//#region extensions/telegram/src/update-offset-store.ts
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const trimmed = accountId?.trim();
|
|
10
|
-
if (!trimmed) return "default";
|
|
11
|
-
return trimmed.replace(/[^a-z0-9._-]+/gi, "_");
|
|
3
|
+
const state = new DurableState("telegram-offsets");
|
|
4
|
+
function accountKey(accountId) {
|
|
5
|
+
return accountId?.trim() || "default";
|
|
12
6
|
}
|
|
13
|
-
function
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
return join(dir, `update-offset-${normalizeAccountId(accountId)}.json`);
|
|
17
|
-
}
|
|
18
|
-
function extractBotIdFromToken(token) {
|
|
19
|
-
const trimmed = token?.trim();
|
|
20
|
-
if (!trimmed) return null;
|
|
21
|
-
const [rawBotId] = trimmed.split(":", 1);
|
|
22
|
-
if (!rawBotId || !/^\d+$/.test(rawBotId)) return null;
|
|
23
|
-
return rawBotId;
|
|
24
|
-
}
|
|
25
|
-
function safeParseState(raw) {
|
|
26
|
-
try {
|
|
27
|
-
const parsed = JSON.parse(raw);
|
|
28
|
-
if (parsed?.version !== STORE_VERSION && parsed?.version !== 1) return null;
|
|
29
|
-
if (parsed.lastUpdateId != null && (!Number.isSafeInteger(parsed.lastUpdateId) || parsed.lastUpdateId < 0)) return null;
|
|
30
|
-
return {
|
|
31
|
-
version: STORE_VERSION,
|
|
32
|
-
lastUpdateId: parsed.lastUpdateId ?? null,
|
|
33
|
-
botId: parsed.version === STORE_VERSION ? parsed.botId ?? null : null
|
|
34
|
-
};
|
|
35
|
-
} catch {
|
|
36
|
-
return null;
|
|
37
|
-
}
|
|
7
|
+
function botId(token) {
|
|
8
|
+
const id = token?.trim().split(":", 1)[0];
|
|
9
|
+
return id && /^\d+$/.test(id) ? id : null;
|
|
38
10
|
}
|
|
39
11
|
function readTelegramUpdateOffset(params) {
|
|
40
|
-
const
|
|
41
|
-
|
|
42
|
-
const state = safeParseState(readFileSync(path, "utf8"));
|
|
43
|
-
if (!state || state.lastUpdateId == null) return void 0;
|
|
44
|
-
const botId = extractBotIdFromToken(params.botToken);
|
|
45
|
-
if (state.botId && botId && state.botId !== botId) return void 0;
|
|
46
|
-
return state.lastUpdateId;
|
|
47
|
-
} catch {
|
|
48
|
-
return;
|
|
49
|
-
}
|
|
12
|
+
const record = state.get(accountKey(params.accountId));
|
|
13
|
+
return record && record.botId === botId(params.botToken) ? record.lastUpdateId : void 0;
|
|
50
14
|
}
|
|
51
15
|
function writeTelegramUpdateOffset(params) {
|
|
52
16
|
if (!Number.isSafeInteger(params.lastUpdateId) || params.lastUpdateId < 0) return;
|
|
53
|
-
const
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
renameSync(tmp, path);
|
|
17
|
+
const id = botId(params.botToken);
|
|
18
|
+
state.update(accountKey(params.accountId), (previous) => ({
|
|
19
|
+
value: {
|
|
20
|
+
botId: id,
|
|
21
|
+
lastUpdateId: previous?.botId === id ? Math.max(previous.lastUpdateId, params.lastUpdateId) : params.lastUpdateId
|
|
22
|
+
},
|
|
23
|
+
result: void 0
|
|
24
|
+
}));
|
|
62
25
|
}
|
|
63
26
|
//#endregion
|
|
64
27
|
export { readTelegramUpdateOffset, writeTelegramUpdateOffset };
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"id": "telegram",
|
|
3
3
|
"name": "Telegram Channel",
|
|
4
4
|
"description": "Bundled Telegram Bot channel (private workspace sources; ships inside @xopcai/xopc dist/)",
|
|
5
|
-
"version": "0.0.
|
|
5
|
+
"version": "0.0.248",
|
|
6
6
|
"kind": "channel",
|
|
7
7
|
"main": "src/index.js",
|
|
8
8
|
"channels": [
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { logger } from "../util/logger.js";
|
|
2
2
|
import { normalizeWeixinAccountId } from "./weixin-account-id.js";
|
|
3
3
|
import { resolveWeixinRootDir } from "../storage/state-dir.js";
|
|
4
|
+
import { deleteGetUpdatesBuf } from "../storage/sync-buf.js";
|
|
4
5
|
import path from "node:path";
|
|
5
6
|
import fs from "node:fs";
|
|
6
7
|
//#region extensions/weixin/src/auth/accounts.ts
|
|
@@ -87,12 +88,9 @@ function saveWeixinAccount(accountId, update) {
|
|
|
87
88
|
} catch {}
|
|
88
89
|
}
|
|
89
90
|
function clearWeixinAccount(accountId) {
|
|
91
|
+
deleteGetUpdatesBuf(accountId);
|
|
90
92
|
const dir = resolveAccountsDir();
|
|
91
|
-
const accountFiles = [
|
|
92
|
-
`${accountId}.json`,
|
|
93
|
-
`${accountId}.sync.json`,
|
|
94
|
-
`${accountId}.context-tokens.json`
|
|
95
|
-
];
|
|
93
|
+
const accountFiles = [`${accountId}.json`, `${accountId}.context-tokens.json`];
|
|
96
94
|
for (const file of accountFiles) try {
|
|
97
95
|
fs.unlinkSync(path.join(dir, file));
|
|
98
96
|
} catch {}
|
|
@@ -3,9 +3,9 @@ import { redactBody } from "../util/redact.js";
|
|
|
3
3
|
import { getUpdates } from "../api/api.js";
|
|
4
4
|
import { WeixinConfigManager } from "../api/config-cache.js";
|
|
5
5
|
import { getRemainingPauseMs, pauseSession } from "../api/session-guard.js";
|
|
6
|
+
import { loadGetUpdatesBuf, saveGetUpdatesBuf } from "../storage/sync-buf.js";
|
|
6
7
|
import { processWeixinInboundMessage } from "../messaging/process-message.js";
|
|
7
8
|
import { setWeixinTypingTicket } from "../messaging/typing-ticket-store.js";
|
|
8
|
-
import { getSyncBufFilePath, loadGetUpdatesBuf, saveGetUpdatesBuf } from "../storage/sync-buf.js";
|
|
9
9
|
//#region extensions/weixin/src/monitor/monitor.ts
|
|
10
10
|
const DEFAULT_LONG_POLL_TIMEOUT_MS = 35e3;
|
|
11
11
|
const MAX_CONSECUTIVE_FAILURES = 3;
|
|
@@ -22,9 +22,7 @@ async function monitorWeixinProvider(opts) {
|
|
|
22
22
|
const token = account.token;
|
|
23
23
|
const routeTag = account.routeTag;
|
|
24
24
|
const aLog = logger;
|
|
25
|
-
const
|
|
26
|
-
aLog.debug(`syncFilePath: ${syncFilePath}`);
|
|
27
|
-
const previousGetUpdatesBuf = loadGetUpdatesBuf(syncFilePath);
|
|
25
|
+
const previousGetUpdatesBuf = loadGetUpdatesBuf(accountId);
|
|
28
26
|
let getUpdatesBuf = previousGetUpdatesBuf ?? "";
|
|
29
27
|
if (previousGetUpdatesBuf) aLog.debug(`Using previous get_updates_buf (${getUpdatesBuf.length} bytes)`);
|
|
30
28
|
else aLog.info(`No previous get_updates_buf found, starting fresh`);
|
|
@@ -75,7 +73,7 @@ async function monitorWeixinProvider(opts) {
|
|
|
75
73
|
}
|
|
76
74
|
consecutiveFailures = 0;
|
|
77
75
|
if (resp.get_updates_buf != null && resp.get_updates_buf !== "") {
|
|
78
|
-
saveGetUpdatesBuf(
|
|
76
|
+
saveGetUpdatesBuf(accountId, resp.get_updates_buf);
|
|
79
77
|
getUpdatesBuf = resp.get_updates_buf;
|
|
80
78
|
aLog.debug(`Saved new get_updates_buf (${getUpdatesBuf.length} bytes)`);
|
|
81
79
|
}
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
export declare function
|
|
2
|
-
export
|
|
3
|
-
|
|
4
|
-
};
|
|
5
|
-
export declare function loadGetUpdatesBuf(filePath: string): string | undefined;
|
|
6
|
-
export declare function saveGetUpdatesBuf(filePath: string, getUpdatesBuf: string): void;
|
|
1
|
+
export declare function loadGetUpdatesBuf(accountId: string): string | undefined;
|
|
2
|
+
export declare function saveGetUpdatesBuf(accountId: string, cursor: string): void;
|
|
3
|
+
export declare function deleteGetUpdatesBuf(accountId: string): void;
|
|
@@ -1,27 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import path from "node:path";
|
|
3
|
-
import fs from "node:fs";
|
|
1
|
+
import { DurableState } from "../../../../src/storage/sqlite/durable-state.js";
|
|
4
2
|
//#region extensions/weixin/src/storage/sync-buf.ts
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
const state = new DurableState("weixin-cursors");
|
|
4
|
+
function loadGetUpdatesBuf(accountId) {
|
|
5
|
+
return state.get(accountId);
|
|
7
6
|
}
|
|
8
|
-
function
|
|
9
|
-
|
|
7
|
+
function saveGetUpdatesBuf(accountId, cursor) {
|
|
8
|
+
state.set(accountId, cursor);
|
|
10
9
|
}
|
|
11
|
-
function
|
|
12
|
-
|
|
13
|
-
const raw = fs.readFileSync(filePath, "utf-8");
|
|
14
|
-
const data = JSON.parse(raw);
|
|
15
|
-
if (typeof data.get_updates_buf === "string") return data.get_updates_buf;
|
|
16
|
-
} catch {}
|
|
17
|
-
}
|
|
18
|
-
function loadGetUpdatesBuf(filePath) {
|
|
19
|
-
return readSyncBufFile(filePath);
|
|
20
|
-
}
|
|
21
|
-
function saveGetUpdatesBuf(filePath, getUpdatesBuf) {
|
|
22
|
-
const dir = path.dirname(filePath);
|
|
23
|
-
fs.mkdirSync(dir, { recursive: true });
|
|
24
|
-
fs.writeFileSync(filePath, JSON.stringify({ get_updates_buf: getUpdatesBuf }, null, 0), "utf-8");
|
|
10
|
+
function deleteGetUpdatesBuf(accountId) {
|
|
11
|
+
state.delete(accountId);
|
|
25
12
|
}
|
|
26
13
|
//#endregion
|
|
27
|
-
export {
|
|
14
|
+
export { deleteGetUpdatesBuf, loadGetUpdatesBuf, saveGetUpdatesBuf };
|
package/dist/gateway/static/root/assets/{activity-store-BlxqErph.js → activity-store-etpmyV7S.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{f as e}from"./locale-store-
|
|
1
|
+
import{f as e}from"./locale-store-BJFLQY8O.js";var t=`xopc.activity-center.v1`,n=80,r=720*60*60*1e3;function i(e){return e===`error`?`failed`:e===`warning`?`attention`:`done`}function a(){if(!(typeof window>`u`))return window.location.hash.replace(/^#/,``)||`${window.location.pathname}${window.location.search}`||void 0}function o(){try{let e=globalThis.localStorage?.getItem(t);if(!e)return[];let i=JSON.parse(e);if(!Array.isArray(i.items))return[];let a=Date.now()-r,o=i.items.filter(e=>e&&typeof e.id==`string`&&typeof e.title==`string`).filter(e=>Number.isFinite(e.updatedAt)&&e.updatedAt>=a).slice(0,n);return o.length!==i.items.length&&s(o),o}catch{return[]}}function s(e){try{globalThis.localStorage?.setItem(t,JSON.stringify({items:e}))}catch{}}function c(e){return`${e.toString(36)}-${Math.random().toString(36).slice(2,8)}`}var l=e(e=>({items:o(),add:t=>e(e=>{let r=t.title.trim();if(!r)return e;let o=Date.now(),l=t.tone??`info`,u=t.dedupeKey?e.items.findIndex(e=>e.dedupeKey===t.dedupeKey):-1,d=[{id:u>=0?e.items[u].id:c(o),tone:l,status:t.status??i(l),title:r,message:t.message?.trim()||void 0,source:t.source?.trim()||void 0,href:t.href??a(),dedupeKey:t.dedupeKey,createdAt:u>=0?e.items[u].createdAt:o,updatedAt:o,read:t.read??!1,occurrences:u>=0?e.items[u].occurrences+1:1},...u>=0?e.items.filter((e,t)=>t!==u):e.items].slice(0,n);return s(d),{items:d}}),markAllRead:()=>e(e=>{let t=e.items.map(e=>({...e,read:!0}));return s(t),{items:t}}),remove:t=>e(e=>{let n=e.items.filter(e=>e.id!==t);return s(n),{items:n}}),clearFinished:()=>e(e=>{let t=e.items.filter(e=>e.status!==`done`);return s(t),{items:t}}),clear:()=>{s([]),e({items:[]})}}));function u(e){l.getState().add(e)}export{u as t};
|