@xopcai/xopc 0.0.252 → 0.0.254
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/dist/background.js +59 -13
- package/dist/browser-ext/dist/content.js +0 -5
- package/dist/browser-ext/manifest.json +2 -1
- package/dist/extensions/telegram/src/inbound-processor.js +2 -2
- package/dist/extensions/telegram/src/plugin.js +3 -2
- package/dist/extensions/telegram/xopc.extension.json +1 -1
- package/dist/gateway/static/root/assets/{activity-store-w3eq3YpP.js → activity-store-Ci5Rxmi_.js} +1 -1
- package/dist/gateway/static/root/assets/{agent-avatar-dicebear-k039rbUz.js → agent-avatar-dicebear-D82jpmFL.js} +1 -1
- package/dist/gateway/static/root/assets/agent-defaults-settings-panel-vul32IsP.js +1 -0
- package/dist/gateway/static/root/assets/{agents-Bmth_bSQ.js → agents-p3kWyz1T.js} +1 -1
- package/dist/gateway/static/root/assets/{api-2joIfbrH.js → api-CXIzQJ2Z.js} +1 -1
- package/dist/gateway/static/root/assets/{app-management-settings-panel-ByJ4kiD0.js → app-management-settings-panel-mhxcQpkQ.js} +1 -1
- package/dist/gateway/static/root/assets/{appearance-settings-BK2Jga-B.js → appearance-settings-BIMwACUF.js} +1 -1
- package/dist/gateway/static/root/assets/apps-page-CJFJKNwS.js +1 -0
- package/dist/gateway/static/root/assets/{archive-plugin-DMDKtYpi.js → archive-plugin-C63Xp_sU.js} +1 -1
- package/dist/gateway/static/root/assets/{attachment-load-B764Ql3Z.js → attachment-load-D12KYOav.js} +1 -1
- package/dist/gateway/static/root/assets/{automations-page-D-sO8CZe.js → automations-page-DXj0o5CY.js} +1 -1
- package/dist/gateway/static/root/assets/automations-workspace-B2wxcpgq.js +6 -0
- package/dist/gateway/static/root/assets/{binary-plugins-fxtzYRpv.js → binary-plugins-Bcv8hun6.js} +1 -1
- package/dist/gateway/static/root/assets/{block-editor-Bcjtvckh.js → block-editor-C61LqK_-.js} +50 -50
- package/dist/gateway/static/root/assets/{browser-automation-inputs-BSmnusjD.js → browser-automation-inputs-CAclu735.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-automations-page-DC_OQIBk.js → browser-automations-page-BITfKX8L.js} +2 -2
- package/dist/gateway/static/root/assets/browser-settings-page-BMjY8cyv.js +8 -0
- package/dist/gateway/static/root/assets/capabilities-settings-panel-wB3Vgmp3.js +7 -0
- package/dist/gateway/static/root/assets/channels-settings-U5ffzu4r.js +1 -0
- package/dist/gateway/static/root/assets/{channels-status-swr-BuWjIG_a.js → channels-status-swr-Cmbx0E8O.js} +1 -1
- package/dist/gateway/static/root/assets/{chat-terminal-dock-5SevEo_I.js → chat-terminal-dock-CNBgHN9U.js} +1 -1
- package/dist/gateway/static/root/assets/connectors-page-BGaF--m5.js +2 -0
- package/dist/gateway/static/root/assets/{cron-expression-DtsfalBM.js → cron-expression-DCTN4QAG.js} +1 -1
- package/dist/gateway/static/root/assets/{date-picker-tDEQV5TP.js → date-picker-BuEyUxZn.js} +1 -1
- package/dist/gateway/static/root/assets/{dependency-picker-HhNwg0Y2.js → dependency-picker-l6IXzk0C.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-acU4Li-C.js → desktop-pet-cGn_20DO.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-settings-R84AR0Pe.js → desktop-pet-settings-DIfccDKS.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-debug-page-CrLlRkSN.js → extension-debug-page-CTS5RP_D.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-BH5lmZXE.js → extension-page-Dg9YssYH.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-settings-page-BscjNAd1.js → extension-settings-page-CWZYL8Fi.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-config-swr-9HidFZUd.js → gateway-config-swr-Chsr5wGH.js} +1 -1
- package/dist/gateway/static/root/assets/gateway-settings-vHI_Que8.js +1 -0
- package/dist/gateway/static/root/assets/{gateway-startup-retry-DRCPXONr.js → gateway-startup-retry-C9ynH6VV.js} +1 -1
- package/dist/gateway/static/root/assets/{heartbeat-settings-K5Zhl2rx.js → heartbeat-settings-WUhSfvob.js} +1 -1
- package/dist/gateway/static/root/assets/home-page-CYjlMzPx.js +1 -0
- package/dist/gateway/static/root/assets/{image-generation-api-CR6Kle8H.js → image-generation-api-D_TsVe7h.js} +1 -1
- package/dist/gateway/static/root/assets/index-BBlJYVxR.js +74 -0
- package/dist/gateway/static/root/assets/index-_I0dD2LN.css +2 -0
- package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-B1QR49-7.js → keyboard-shortcuts-settings-DGBf6YfD.js} +1 -1
- package/dist/gateway/static/root/assets/local-app-workbench-page-CLlIl83V.js +2 -0
- package/dist/gateway/static/root/assets/{local-apps-page-C74It-T8.js → local-apps-page-DGWP_xsQ.js} +1 -1
- package/dist/gateway/static/root/assets/{locale-store-BfZGZKSs.js → locale-store-B2v8mNJw.js} +1 -1
- package/dist/gateway/static/root/assets/logs-page-DuhCigiB.js +2 -0
- package/dist/gateway/static/root/assets/{management-settings-1kNnYL97.js → management-settings-DUAZ-dtt.js} +1 -1
- package/dist/gateway/static/root/assets/markdown-view-DBWu9d_n.js +201 -0
- package/dist/gateway/static/root/assets/{media-plugins-B5c0AoS1.js → media-plugins-CsUjcIBy.js} +1 -1
- package/dist/gateway/static/root/assets/messages-ChSTFZR5.js +3 -0
- package/dist/gateway/static/root/assets/{mobile-pairing-wizard-CsIZqK51.js → mobile-pairing-wizard-Dxu8twiQ.js} +1 -1
- package/dist/gateway/static/root/assets/note-detail-panel-DMdbaTZp.js +5 -0
- package/dist/gateway/static/root/assets/notes-page-xe_vX0nM.js +8 -0
- package/dist/gateway/static/root/assets/{page-tabs-CqJN6Ljz.js → page-tabs-YeJKwV-7.js} +1 -1
- package/dist/gateway/static/root/assets/{preview-open-alternatives-DqRIGxf4.js → preview-open-alternatives-BfJ3jMDG.js} +1 -1
- package/dist/gateway/static/root/assets/{product-open-page-DE2nPE_K.js → product-open-page-B7NRGPox.js} +1 -1
- package/dist/gateway/static/root/assets/project-detail-page-hG7ELibZ.js +1 -0
- package/dist/gateway/static/root/assets/projects-page-C5G2ET4w.js +1 -0
- package/dist/gateway/static/root/assets/{registry-api-Bpy8XX-5.js → registry-api-B9OZUdwC.js} +1 -1
- package/dist/gateway/static/root/assets/{remote-access-hub-Dnd73xWt.js → remote-access-hub-DTO-faxH.js} +1 -1
- package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-Bb4b74-P.js → runtime-tools-settings-panel-uJ8Br3ZL.js} +1 -1
- package/dist/gateway/static/root/assets/{schema-form-DoPU5j3J.js → schema-form-CXwn6up5.js} +1 -1
- package/dist/gateway/static/root/assets/sessions-page-CwzsUCgP.js +1 -0
- package/dist/gateway/static/root/assets/settings-advanced-gate-Djc3EdoO.js +1 -0
- package/dist/gateway/static/root/assets/{settings-form-section-Ci-9WajJ.js → settings-form-section-YVNYsR0U.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-page-CL_2F95D.js → settings-page-cHqrIdVR.js} +1 -1
- package/dist/gateway/static/root/assets/setup-status-panel-MUAMcZLD.js +1 -0
- package/dist/gateway/static/root/assets/{share-preview-page-XUA3oKQX.js → share-preview-page-DnjSDQru.js} +1 -1
- package/dist/gateway/static/root/assets/shares-settings-C7A0aywX.js +1 -0
- package/dist/gateway/static/root/assets/skill-reload-api-D1xSGJAQ.js +1 -0
- package/dist/gateway/static/root/assets/{skills-page-sXXAZDc9.js → skills-page-DkrGEdiY.js} +1 -1
- package/dist/gateway/static/root/assets/{skills-page.utils-DD79Bl1I.js → skills-page.utils-CqZbiZuK.js} +1 -1
- package/dist/gateway/static/root/assets/{system-settings-panel-BEH64qBV.js → system-settings-panel-Dmw0RfxZ.js} +1 -1
- package/dist/gateway/static/root/assets/task-detail-page-BvZSCLUH.js +1 -0
- package/dist/gateway/static/root/assets/{theme-store-CISSxU1c.js → theme-store-CubltMKm.js} +1 -1
- package/dist/gateway/static/root/assets/{tunnel-api-DrKDhnJm.js → tunnel-api-CiieC6HP.js} +1 -1
- package/dist/gateway/static/root/assets/{use-autosave-CPYePL-Q.js → use-autosave-XQ3SuyB9.js} +1 -1
- package/dist/gateway/static/root/assets/user-model-page-BKJC7tyW.js +2 -0
- package/dist/gateway/static/root/assets/{voice-api-key-field-DKqzrCXx.js → voice-api-key-field-D4QzVgdt.js} +1 -1
- package/dist/gateway/static/root/assets/{voice-config-api-e9xWjwBX.js → voice-config-api-B1ZbyVmF.js} +1 -1
- package/dist/gateway/static/root/assets/{work-discovery-overlay-kTQug6bq.js → work-discovery-overlay-D5Tf8GRZ.js} +1 -1
- package/dist/gateway/static/root/assets/{workflow-run-setup-panel-m9SKj_GT.js → workflow-run-setup-panel-BW9p8Maz.js} +2 -2
- package/dist/gateway/static/root/assets/workflows-page-DuqRodIc.js +5 -0
- package/dist/gateway/static/root/index.html +10 -10
- package/dist/package.js +1 -1
- package/dist/packages/realtime-protocol/src/voice.js +6 -1
- package/dist/src/agent/agent-manager.js +24 -7
- package/dist/src/agent/background-review/run-background-review.js +1 -1
- package/dist/src/agent/embedded/execution-context.d.ts +2 -1
- package/dist/src/agent/embedded/execution-context.js +10 -4
- package/dist/src/agent/embedded/index.d.ts +1 -1
- package/dist/src/agent/embedded/index.js +2 -2
- package/dist/src/agent/embedded/model-runtime.js +1 -1
- package/dist/src/agent/embedded/run-for-session.js +5 -4
- package/dist/src/agent/embedded/run-turn.js +22 -3
- package/dist/src/agent/embedded/types.d.ts +1 -1
- package/dist/src/agent/image/tool-model-config.js +1 -1
- package/dist/src/agent/mcp/oauth/mcp-oauth-store.js +1 -1
- package/dist/src/agent/service/direct-turn-helpers.js +6 -3
- package/dist/src/agent/service/process-direct-streaming.js +6 -3
- package/dist/src/agent/service.d.ts +2 -0
- package/dist/src/agent/service.js +23 -9
- package/dist/src/agent/session/session-inspector.js +1 -1
- package/dist/src/agent/skills/hub-lock.js +1 -1
- package/dist/src/agent/tasks/task-judge-service.js +3 -3
- package/dist/src/agent/tools/browser/tool/browser-use-tool.js +17 -2
- package/dist/src/agent/tools/browser/tool/schemas.d.ts +85 -1
- package/dist/src/agent/tools/browser/tool/schemas.js +212 -5
- package/dist/src/agent/tools/clarify-tool.d.ts +17 -3
- package/dist/src/agent/tools/clarify-tool.js +27 -32
- package/dist/src/agent/tools/cli-clarify.js +23 -8
- package/dist/src/agent/tools/factory.js +14 -4
- package/dist/src/ai-assist/text-assist.js +1 -1
- package/dist/src/auth/credentials.js +2 -2
- package/dist/src/auth/oauth/xopc-cloud.js +1 -1
- package/dist/src/auth/profiles/store.js +1 -1
- package/dist/src/auth/sync-provider-auth.js +2 -2
- package/dist/src/automations/domain/validation.d.ts +4 -4
- package/dist/src/automations/draft/automation-draft-validator.d.ts +1 -1
- package/dist/src/browser/drivers/extension-driver.d.ts +4 -4
- package/dist/src/browser/drivers/extension-driver.js +20 -8
- package/dist/src/browser/drivers/playwright-driver.js +1 -1
- package/dist/src/browser/providers/browser-ext-install.d.ts +3 -0
- package/dist/src/browser/providers/browser-ext-install.js +19 -4
- package/dist/src/browser/providers/extension.d.ts +14 -1
- package/dist/src/browser/providers/extension.js +89 -11
- package/dist/src/browser/providers/playwright-install.js +8 -12
- package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
- package/dist/src/cli/commands/doctor/checks/provider-auth.js +1 -1
- package/dist/src/cli/commands/models.js +1 -1
- package/dist/src/config/index.js +4 -4
- package/dist/src/config/loader.js +2 -2
- package/dist/src/config/models-json.js +1 -1
- package/dist/src/extensions/lockfile.js +1 -1
- package/dist/src/gateway/agents-admin.js +1 -1
- package/dist/src/gateway/chat-stream/mapper.js +5 -1
- package/dist/src/gateway/chat-stream/protocol.d.ts +5 -1
- package/dist/src/gateway/clarify-runtime.d.ts +7 -5
- package/dist/src/gateway/clarify-runtime.js +8 -11
- package/dist/src/gateway/ephemeral-clarification-waiter.d.ts +17 -0
- package/dist/src/gateway/ephemeral-clarification-waiter.js +46 -0
- package/dist/src/gateway/file-path-classifier.js +1 -1
- package/dist/src/gateway/heartbeat/service.js +1 -1
- package/dist/src/gateway/hono/lib/config-payload.js +1 -1
- package/dist/src/gateway/hono/routes/agent-stream.js +44 -18
- package/dist/src/gateway/hono/routes/browser.js +149 -27
- package/dist/src/gateway/hono/routes/lazy-bundles.js +1 -1
- package/dist/src/gateway/hono/routes/models.js +1 -1
- package/dist/src/gateway/hono/routes/session-input-handler.d.ts +10 -2
- package/dist/src/gateway/hono/routes/side-chats.js +24 -4
- package/dist/src/gateway/security/gateway-scopes.js +1 -1
- package/dist/src/gateway/service/agent-runner.d.ts +25 -36
- package/dist/src/gateway/service/agent-runner.js +103 -32
- package/dist/src/gateway/service/config-coordinator.js +1 -1
- package/dist/src/gateway/service/run-gateway-agent.js +5 -2
- package/dist/src/gateway/service/session-input-coordinator.js +4 -1
- package/dist/src/gateway/service/sessions-api.js +1 -1
- package/dist/src/gateway/service.d.ts +4 -2
- package/dist/src/gateway/service.js +36 -20
- package/dist/src/gateway/side-chat/manager.d.ts +2 -1
- package/dist/src/gateway/side-chat/manager.js +5 -4
- package/dist/src/gateway/side-chat/run-service.d.ts +5 -1
- package/dist/src/gateway/side-chat/run-service.js +24 -23
- package/dist/src/gateway/side-chat/types.d.ts +3 -1
- package/dist/src/heartbeat/index.js +1 -1
- package/dist/src/providers/auth-runtime/resolve-auth.js +1 -1
- package/dist/src/providers/index.js +2 -2
- package/dist/src/providers/model-registry.js +1 -1
- package/dist/src/providers/model-thinking.js +57 -20
- package/dist/src/providers/register-runtime-providers.js +1 -1
- package/dist/src/storage/sqlite/clarification-wait-repository.d.ts +41 -0
- package/dist/src/storage/sqlite/clarification-wait-repository.js +418 -0
- package/dist/src/storage/sqlite/index.d.ts +2 -1
- package/dist/src/storage/sqlite/index.js +2 -1
- package/dist/src/storage/sqlite/migrations/154_session_clarification_waits.sql +60 -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/session-input-repository.d.ts +11 -6
- package/dist/src/tui/tui-startup-resources.js +1 -1
- package/dist/src/tui/tui.js +1 -1
- package/dist/src/voice/realtime/agentEngine.js +7 -2
- package/dist/src/voice/realtime/runtime.types.d.ts +5 -0
- package/dist/src/work-discovery/service.js +1 -1
- package/dist/src/workflows/service/workflow-run-service.js +1 -1
- package/package.json +3 -3
- package/skills/creative/hatch-pet/SKILL.md +1 -1
- package/dist/gateway/static/root/assets/agent-defaults-settings-panel-D4J4oq8p.js +0 -1
- package/dist/gateway/static/root/assets/apps-page-B3ky7cWU.js +0 -1
- package/dist/gateway/static/root/assets/automations-workspace-Ds5-_-9z.js +0 -6
- package/dist/gateway/static/root/assets/browser-settings-page-C1FojyG6.js +0 -3
- package/dist/gateway/static/root/assets/capabilities-settings-panel-Bs59UCut.js +0 -7
- package/dist/gateway/static/root/assets/channels-settings-CM9vNmoo.js +0 -1
- package/dist/gateway/static/root/assets/connectors-page-BPZ44D-V.js +0 -2
- package/dist/gateway/static/root/assets/gateway-settings-BxLcW6ij.js +0 -1
- package/dist/gateway/static/root/assets/home-page-CZAg9RBv.js +0 -1
- package/dist/gateway/static/root/assets/index-D4Ykja-U.js +0 -72
- package/dist/gateway/static/root/assets/index-zIJ3AXgR.css +0 -2
- package/dist/gateway/static/root/assets/local-app-workbench-page-wicoV-ti.js +0 -2
- package/dist/gateway/static/root/assets/logs-page-xX-7S49A.js +0 -2
- package/dist/gateway/static/root/assets/markdown-view-DjiwT28p.js +0 -201
- package/dist/gateway/static/root/assets/messages-DaIwVWar.js +0 -3
- package/dist/gateway/static/root/assets/note-detail-panel-CfWxopl4.js +0 -5
- package/dist/gateway/static/root/assets/notes-page-CYN-LCHJ.js +0 -8
- package/dist/gateway/static/root/assets/project-detail-page-B5G3LzDq.js +0 -1
- package/dist/gateway/static/root/assets/projects-page-CuVK2mKu.js +0 -1
- package/dist/gateway/static/root/assets/sessions-page-XL4LyKZe.js +0 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-0ForzDSS.js +0 -1
- package/dist/gateway/static/root/assets/setup-status-panel-DVws6XZc.js +0 -1
- package/dist/gateway/static/root/assets/shares-settings-BwDvcacF.js +0 -1
- package/dist/gateway/static/root/assets/skill-reload-api-BJjrATqE.js +0 -1
- package/dist/gateway/static/root/assets/task-detail-page-0jxMi75O.js +0 -1
- package/dist/gateway/static/root/assets/user-model-page-B6zLDfDl.js +0 -2
- package/dist/gateway/static/root/assets/workflows-page-Bcd1XqP7.js +0 -5
- package/dist/src/gateway/clarify-bridge.d.ts +0 -46
- package/dist/src/gateway/clarify-bridge.js +0 -111
|
@@ -1,3 +1,14 @@
|
|
|
1
|
+
const BROWSER_EXTENSION_PROTOCOL_VERSION = 3;
|
|
2
|
+
|
|
3
|
+
const XOPC_EXT_PORT = 19820;
|
|
4
|
+
const XOPC_EXT_HOST = "127.0.0.1";
|
|
5
|
+
const XOPC_EXT_WS_URL = `ws://${XOPC_EXT_HOST}:${XOPC_EXT_PORT}/browser-ext`;
|
|
6
|
+
const WS_RECONNECT_BASE_DELAY = 2e3;
|
|
7
|
+
const WS_RECONNECT_MAX_DELAY = 5e3;
|
|
8
|
+
const WS_KEEPALIVE_INTERVAL = 2e4;
|
|
9
|
+
const WS_WATCHDOG_ALARM = "xopc-ws-watchdog";
|
|
10
|
+
const WS_WATCHDOG_PERIOD_MINUTES = 0.5;
|
|
11
|
+
|
|
1
12
|
const LOG_COLORS = {
|
|
2
13
|
debug: "color: #888",
|
|
3
14
|
info: "color: #3b82f6",
|
|
@@ -270,6 +281,15 @@ async function closeAllSessions() {
|
|
|
270
281
|
const observations = /* @__PURE__ */ new Map();
|
|
271
282
|
async function executeBrowserCommand(command) {
|
|
272
283
|
const startedAt = Date.now();
|
|
284
|
+
if (command.protocolVersion !== BROWSER_EXTENSION_PROTOCOL_VERSION) {
|
|
285
|
+
return {
|
|
286
|
+
id: command.id,
|
|
287
|
+
result: fail(
|
|
288
|
+
"DRIVER_UNAVAILABLE",
|
|
289
|
+
`Browser protocol mismatch. Expected ${BROWSER_EXTENSION_PROTOCOL_VERSION}; reload the xopc extension.`
|
|
290
|
+
)
|
|
291
|
+
};
|
|
292
|
+
}
|
|
273
293
|
try {
|
|
274
294
|
const result = await execute(command.input, command.timeoutMs, command.visualFallback, startedAt);
|
|
275
295
|
return { id: command.id, result };
|
|
@@ -515,37 +535,42 @@ function diff(previous, next) {
|
|
|
515
535
|
};
|
|
516
536
|
}
|
|
517
537
|
|
|
518
|
-
const XOPC_EXT_PORT = 19820;
|
|
519
|
-
const XOPC_EXT_HOST = "127.0.0.1";
|
|
520
|
-
const XOPC_EXT_WS_URL = `ws://${XOPC_EXT_HOST}:${XOPC_EXT_PORT}/browser-ext`;
|
|
521
|
-
const WS_RECONNECT_BASE_DELAY = 2e3;
|
|
522
|
-
const WS_RECONNECT_MAX_DELAY = 5e3;
|
|
523
|
-
|
|
524
538
|
const log = createLogger("Background");
|
|
525
539
|
let ws = null;
|
|
526
540
|
let reconnectTimer = null;
|
|
541
|
+
let keepAliveTimer = null;
|
|
527
542
|
let reconnectDelay = WS_RECONNECT_BASE_DELAY;
|
|
528
543
|
let intentionalClose = false;
|
|
529
544
|
function connect() {
|
|
530
545
|
if (ws && (ws.readyState === WebSocket.OPEN || ws.readyState === WebSocket.CONNECTING)) return;
|
|
531
546
|
intentionalClose = false;
|
|
532
|
-
|
|
533
|
-
ws
|
|
547
|
+
const socket = new WebSocket(XOPC_EXT_WS_URL);
|
|
548
|
+
ws = socket;
|
|
549
|
+
socket.onopen = () => {
|
|
550
|
+
if (ws !== socket) {
|
|
551
|
+
socket.close();
|
|
552
|
+
return;
|
|
553
|
+
}
|
|
534
554
|
reconnectDelay = WS_RECONNECT_BASE_DELAY;
|
|
535
555
|
sendStatus();
|
|
556
|
+
startKeepAlive();
|
|
536
557
|
log.info("Connected to xopc daemon");
|
|
537
558
|
};
|
|
538
|
-
|
|
559
|
+
socket.onmessage = async (event) => {
|
|
560
|
+
if (ws !== socket) return;
|
|
539
561
|
try {
|
|
540
562
|
const command = JSON.parse(String(event.data));
|
|
541
563
|
const result = await executeBrowserCommand(command);
|
|
542
|
-
|
|
564
|
+
if (socket.readyState === WebSocket.OPEN) socket.send(JSON.stringify(result));
|
|
543
565
|
} catch (error) {
|
|
544
566
|
log.error("Failed to process browser command", { error: error instanceof Error ? error.message : String(error) });
|
|
545
567
|
}
|
|
546
568
|
};
|
|
547
|
-
|
|
569
|
+
socket.onclose = (event) => {
|
|
570
|
+
if (ws !== socket) return;
|
|
571
|
+
stopKeepAlive();
|
|
548
572
|
ws = null;
|
|
573
|
+
log.warn("Disconnected from xopc daemon", { code: event.code, reason: event.reason, wasClean: event.wasClean });
|
|
549
574
|
if (!intentionalClose) scheduleReconnect();
|
|
550
575
|
};
|
|
551
576
|
}
|
|
@@ -553,11 +578,28 @@ function sendStatus() {
|
|
|
553
578
|
if (ws?.readyState !== WebSocket.OPEN) return;
|
|
554
579
|
const status = {
|
|
555
580
|
type: "status",
|
|
581
|
+
protocolVersion: BROWSER_EXTENSION_PROTOCOL_VERSION,
|
|
582
|
+
extensionVersion: chrome.runtime.getManifest().version,
|
|
556
583
|
connected: true,
|
|
557
584
|
sessionCount: automationSessions.size
|
|
558
585
|
};
|
|
559
586
|
ws.send(JSON.stringify(status));
|
|
560
587
|
}
|
|
588
|
+
function startKeepAlive() {
|
|
589
|
+
stopKeepAlive();
|
|
590
|
+
keepAliveTimer = setInterval(() => {
|
|
591
|
+
if (ws?.readyState !== WebSocket.OPEN) {
|
|
592
|
+
stopKeepAlive();
|
|
593
|
+
return;
|
|
594
|
+
}
|
|
595
|
+
const message = { type: "keepalive", timestamp: Date.now() };
|
|
596
|
+
ws.send(JSON.stringify(message));
|
|
597
|
+
}, WS_KEEPALIVE_INTERVAL);
|
|
598
|
+
}
|
|
599
|
+
function stopKeepAlive() {
|
|
600
|
+
if (keepAliveTimer) clearInterval(keepAliveTimer);
|
|
601
|
+
keepAliveTimer = null;
|
|
602
|
+
}
|
|
561
603
|
function scheduleReconnect() {
|
|
562
604
|
if (reconnectTimer) clearTimeout(reconnectTimer);
|
|
563
605
|
reconnectTimer = setTimeout(() => {
|
|
@@ -568,6 +610,7 @@ function scheduleReconnect() {
|
|
|
568
610
|
}
|
|
569
611
|
function disconnect() {
|
|
570
612
|
intentionalClose = true;
|
|
613
|
+
stopKeepAlive();
|
|
571
614
|
if (reconnectTimer) clearTimeout(reconnectTimer);
|
|
572
615
|
reconnectTimer = null;
|
|
573
616
|
ws?.close();
|
|
@@ -581,12 +624,15 @@ chrome.runtime.onMessage.addListener((message, _sender, sendResponse) => {
|
|
|
581
624
|
} else if (message.type === "popup/disconnect") {
|
|
582
625
|
disconnect();
|
|
583
626
|
sendResponse({ ok: true });
|
|
584
|
-
} else
|
|
585
|
-
else sendResponse({ ok: false, error: `Unknown message: ${message.type}` });
|
|
627
|
+
} else sendResponse({ ok: false, error: `Unknown message: ${message.type}` });
|
|
586
628
|
return true;
|
|
587
629
|
});
|
|
588
630
|
chrome.runtime.onInstalled.addListener(connect);
|
|
589
631
|
chrome.runtime.onStartup.addListener(connect);
|
|
632
|
+
chrome.alarms.onAlarm.addListener((alarm) => {
|
|
633
|
+
if (alarm.name === WS_WATCHDOG_ALARM && !intentionalClose) connect();
|
|
634
|
+
});
|
|
635
|
+
void chrome.alarms.create(WS_WATCHDOG_ALARM, { periodInMinutes: WS_WATCHDOG_PERIOD_MINUTES });
|
|
590
636
|
connect();
|
|
591
637
|
self.addEventListener("beforeunload", () => {
|
|
592
638
|
disconnect();
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"manifest_version": 3,
|
|
3
|
+
"minimum_chrome_version": "120",
|
|
3
4
|
"name": "xopc Browser Bridge",
|
|
4
|
-
"version": "0.0.
|
|
5
|
+
"version": "0.0.254",
|
|
5
6
|
"description": "Browser automation bridge for xopc — executes commands in Chrome via the local xopc daemon.",
|
|
6
7
|
"permissions": [
|
|
7
8
|
"debugger",
|
|
@@ -3,7 +3,7 @@ import { init_logger } from "../../../src/utils/logger.js";
|
|
|
3
3
|
import { resolveRoute } from "../../../src/routing/resolve-route.js";
|
|
4
4
|
import { normalizeTelegramCommandName, parseSlashCommand } from "../../../src/chat-commands/command-parse.js";
|
|
5
5
|
import { checkMentionInTranscription } from "../../../src/voice/stt/mention.js";
|
|
6
|
-
import {
|
|
6
|
+
import { answerClarificationTextFromChannel } from "../../../src/gateway/clarify-runtime.js";
|
|
7
7
|
import { buildTelegramUpdateKey, telegramUpdateDedupe } from "./dedupe.js";
|
|
8
8
|
import "../../../src/routing/index.js";
|
|
9
9
|
import { resolveTelegramGroupContext } from "./group-config-resolver.js";
|
|
@@ -341,7 +341,7 @@ function createInboundProcessor(deps) {
|
|
|
341
341
|
attachmentCount: attachments.length,
|
|
342
342
|
isCommand
|
|
343
343
|
}, "Processing Telegram message");
|
|
344
|
-
if (finalContent.trim().length > 0 && !isCommand &&
|
|
344
|
+
if (finalContent.trim().length > 0 && !isCommand && answerClarificationTextFromChannel(sessionKey, finalContent.trim(), `telegram:${accountId}:${chatId}:message:${message.message_id}`)) {
|
|
345
345
|
log.debug({ sessionKey }, "Telegram: consumed message as clarify reply");
|
|
346
346
|
return;
|
|
347
347
|
}
|
|
@@ -8,7 +8,7 @@ import { resolveStandardPairingPath } from "../../../src/channels/pairing/paths.
|
|
|
8
8
|
import { issuePairingChallenge } from "../../../src/channels/pairing/pairing-challenge.js";
|
|
9
9
|
import { createStandardPairingAdapter } from "../../../src/channels/pairing/pairing-store-adapter.js";
|
|
10
10
|
import "./pairing-config-resolver.js";
|
|
11
|
-
import {
|
|
11
|
+
import { answerClarificationChoiceFromChannel } from "../../../src/gateway/clarify-runtime.js";
|
|
12
12
|
import { createTimeoutAbortSignal } from "./timeout-abort.js";
|
|
13
13
|
import { createInboundDebouncer } from "../../../src/infra/debounce.js";
|
|
14
14
|
import { getMimeType } from "../../../src/channels/media.js";
|
|
@@ -531,7 +531,8 @@ var TelegramChannelPlugin = class {
|
|
|
531
531
|
if (lastColon > 0) {
|
|
532
532
|
const requestId = rest.slice(0, lastColon);
|
|
533
533
|
const idx = Number.parseInt(rest.slice(lastColon + 1), 10);
|
|
534
|
-
|
|
534
|
+
const idempotencyKey = `telegram:${_accountId}:callback:${ctx.callbackQuery.id}`;
|
|
535
|
+
if (requestId && Number.isFinite(idx) && answerClarificationChoiceFromChannel(requestId, idx, idempotencyKey)) {
|
|
535
536
|
await ctx.answerCallbackQuery();
|
|
536
537
|
return;
|
|
537
538
|
}
|
|
@@ -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.254",
|
|
6
6
|
"kind": "channel",
|
|
7
7
|
"main": "src/index.js",
|
|
8
8
|
"channels": [
|
package/dist/gateway/static/root/assets/{activity-store-w3eq3YpP.js → activity-store-Ci5Rxmi_.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{f as e}from"./locale-store-
|
|
1
|
+
import{f as e}from"./locale-store-B2v8mNJw.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};
|