@xopcai/xopc 0.0.253 → 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.
Files changed (159) hide show
  1. package/dist/browser-ext/dist/background.js +59 -13
  2. package/dist/browser-ext/dist/content.js +0 -5
  3. package/dist/browser-ext/manifest.json +2 -1
  4. package/dist/extensions/telegram/xopc.extension.json +1 -1
  5. package/dist/gateway/static/root/assets/{activity-store-CeS1bgXP.js → activity-store-Ci5Rxmi_.js} +1 -1
  6. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-BdF3HhCW.js → agent-avatar-dicebear-D82jpmFL.js} +1 -1
  7. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-vul32IsP.js +1 -0
  8. package/dist/gateway/static/root/assets/{agents-DARlgjTm.js → agents-p3kWyz1T.js} +1 -1
  9. package/dist/gateway/static/root/assets/{api-zMPeC0yU.js → api-CXIzQJ2Z.js} +1 -1
  10. package/dist/gateway/static/root/assets/{app-management-settings-panel-BaAFln8W.js → app-management-settings-panel-mhxcQpkQ.js} +1 -1
  11. package/dist/gateway/static/root/assets/{appearance-settings-CXvsoBlw.js → appearance-settings-BIMwACUF.js} +1 -1
  12. package/dist/gateway/static/root/assets/apps-page-CJFJKNwS.js +1 -0
  13. package/dist/gateway/static/root/assets/{archive-plugin-C0o_mVQI.js → archive-plugin-C63Xp_sU.js} +1 -1
  14. package/dist/gateway/static/root/assets/{attachment-load-B5Ry3tGL.js → attachment-load-D12KYOav.js} +1 -1
  15. package/dist/gateway/static/root/assets/{automations-page-DY5QAEQd.js → automations-page-DXj0o5CY.js} +1 -1
  16. package/dist/gateway/static/root/assets/automations-workspace-B2wxcpgq.js +6 -0
  17. package/dist/gateway/static/root/assets/{binary-plugins-BydpEgBA.js → binary-plugins-Bcv8hun6.js} +1 -1
  18. package/dist/gateway/static/root/assets/{block-editor-D0CpUOMo.js → block-editor-C61LqK_-.js} +50 -50
  19. package/dist/gateway/static/root/assets/{browser-automation-inputs-DzbTsGI6.js → browser-automation-inputs-CAclu735.js} +1 -1
  20. package/dist/gateway/static/root/assets/{browser-automations-page-D7fZYjni.js → browser-automations-page-BITfKX8L.js} +2 -2
  21. package/dist/gateway/static/root/assets/browser-settings-page-BMjY8cyv.js +8 -0
  22. package/dist/gateway/static/root/assets/capabilities-settings-panel-wB3Vgmp3.js +7 -0
  23. package/dist/gateway/static/root/assets/{channels-settings-bdRLT9KA.js → channels-settings-U5ffzu4r.js} +1 -1
  24. package/dist/gateway/static/root/assets/{channels-status-swr-BGGRTkn6.js → channels-status-swr-Cmbx0E8O.js} +1 -1
  25. package/dist/gateway/static/root/assets/{chat-terminal-dock-_CP4nvlg.js → chat-terminal-dock-CNBgHN9U.js} +1 -1
  26. package/dist/gateway/static/root/assets/connectors-page-BGaF--m5.js +2 -0
  27. package/dist/gateway/static/root/assets/{cron-expression-g2U8Rllf.js → cron-expression-DCTN4QAG.js} +1 -1
  28. package/dist/gateway/static/root/assets/{date-picker-SmVlhtj_.js → date-picker-BuEyUxZn.js} +1 -1
  29. package/dist/gateway/static/root/assets/{dependency-picker-D-0gcbbM.js → dependency-picker-l6IXzk0C.js} +1 -1
  30. package/dist/gateway/static/root/assets/{desktop-pet-Cl3JRIu6.js → desktop-pet-cGn_20DO.js} +1 -1
  31. package/dist/gateway/static/root/assets/{desktop-pet-settings-D7kvWQ9H.js → desktop-pet-settings-DIfccDKS.js} +1 -1
  32. package/dist/gateway/static/root/assets/{extension-debug-page-DtP2tJHY.js → extension-debug-page-CTS5RP_D.js} +1 -1
  33. package/dist/gateway/static/root/assets/{extension-page-CphZDdoT.js → extension-page-Dg9YssYH.js} +1 -1
  34. package/dist/gateway/static/root/assets/{extension-settings-page-CsxVLV4-.js → extension-settings-page-CWZYL8Fi.js} +1 -1
  35. package/dist/gateway/static/root/assets/{gateway-config-swr-BW3Bx-aV.js → gateway-config-swr-Chsr5wGH.js} +1 -1
  36. package/dist/gateway/static/root/assets/{gateway-settings-DxBZ05dX.js → gateway-settings-vHI_Que8.js} +1 -1
  37. package/dist/gateway/static/root/assets/{gateway-startup-retry-DAq74TZe.js → gateway-startup-retry-C9ynH6VV.js} +1 -1
  38. package/dist/gateway/static/root/assets/{heartbeat-settings-DWcKsIoZ.js → heartbeat-settings-WUhSfvob.js} +1 -1
  39. package/dist/gateway/static/root/assets/home-page-CYjlMzPx.js +1 -0
  40. package/dist/gateway/static/root/assets/{image-generation-api-MPuaXDRs.js → image-generation-api-D_TsVe7h.js} +1 -1
  41. package/dist/gateway/static/root/assets/{index-C7RDs6S-.js → index-BBlJYVxR.js} +18 -18
  42. package/dist/gateway/static/root/assets/index-_I0dD2LN.css +2 -0
  43. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-CfhaTqgE.js → keyboard-shortcuts-settings-DGBf6YfD.js} +1 -1
  44. package/dist/gateway/static/root/assets/local-app-workbench-page-CLlIl83V.js +2 -0
  45. package/dist/gateway/static/root/assets/{local-apps-page-g01W3kEK.js → local-apps-page-DGWP_xsQ.js} +1 -1
  46. package/dist/gateway/static/root/assets/{locale-store-BkeaPZpn.js → locale-store-B2v8mNJw.js} +1 -1
  47. package/dist/gateway/static/root/assets/logs-page-DuhCigiB.js +2 -0
  48. package/dist/gateway/static/root/assets/{management-settings-DeGxJF_Z.js → management-settings-DUAZ-dtt.js} +1 -1
  49. package/dist/gateway/static/root/assets/{markdown-view-Ca7BRBLL.js → markdown-view-DBWu9d_n.js} +1 -1
  50. package/dist/gateway/static/root/assets/{media-plugins-FmOhmzlD.js → media-plugins-CsUjcIBy.js} +1 -1
  51. package/dist/gateway/static/root/assets/messages-ChSTFZR5.js +3 -0
  52. package/dist/gateway/static/root/assets/{mobile-pairing-wizard-BXNbn05L.js → mobile-pairing-wizard-Dxu8twiQ.js} +1 -1
  53. package/dist/gateway/static/root/assets/note-detail-panel-DMdbaTZp.js +5 -0
  54. package/dist/gateway/static/root/assets/notes-page-xe_vX0nM.js +8 -0
  55. package/dist/gateway/static/root/assets/{page-tabs-pyukZ1PJ.js → page-tabs-YeJKwV-7.js} +1 -1
  56. package/dist/gateway/static/root/assets/{preview-open-alternatives-slFHoMUe.js → preview-open-alternatives-BfJ3jMDG.js} +1 -1
  57. package/dist/gateway/static/root/assets/{product-open-page-CXa3FNNk.js → product-open-page-B7NRGPox.js} +1 -1
  58. package/dist/gateway/static/root/assets/{project-detail-page-BDF88VdN.js → project-detail-page-hG7ELibZ.js} +1 -1
  59. package/dist/gateway/static/root/assets/projects-page-C5G2ET4w.js +1 -0
  60. package/dist/gateway/static/root/assets/{registry-api-CviQoUBf.js → registry-api-B9OZUdwC.js} +1 -1
  61. package/dist/gateway/static/root/assets/remote-access-hub-DTO-faxH.js +1 -0
  62. package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-O9D9o7-O.js → runtime-tools-settings-panel-uJ8Br3ZL.js} +1 -1
  63. package/dist/gateway/static/root/assets/{schema-form-8FesicnL.js → schema-form-CXwn6up5.js} +1 -1
  64. package/dist/gateway/static/root/assets/sessions-page-CwzsUCgP.js +1 -0
  65. package/dist/gateway/static/root/assets/settings-advanced-gate-Djc3EdoO.js +1 -0
  66. package/dist/gateway/static/root/assets/{settings-form-section-CBic9TFH.js → settings-form-section-YVNYsR0U.js} +1 -1
  67. package/dist/gateway/static/root/assets/{settings-page-Xz66_Mjg.js → settings-page-cHqrIdVR.js} +1 -1
  68. package/dist/gateway/static/root/assets/{setup-status-panel-C6DuwrP5.js → setup-status-panel-MUAMcZLD.js} +1 -1
  69. package/dist/gateway/static/root/assets/{share-preview-page--JpjwB58.js → share-preview-page-DnjSDQru.js} +1 -1
  70. package/dist/gateway/static/root/assets/shares-settings-C7A0aywX.js +1 -0
  71. package/dist/gateway/static/root/assets/skill-reload-api-D1xSGJAQ.js +1 -0
  72. package/dist/gateway/static/root/assets/{skills-page-fVKExKv5.js → skills-page-DkrGEdiY.js} +1 -1
  73. package/dist/gateway/static/root/assets/{skills-page.utils-Yv9u3uJp.js → skills-page.utils-CqZbiZuK.js} +1 -1
  74. package/dist/gateway/static/root/assets/{system-settings-panel-CCWjVdc2.js → system-settings-panel-Dmw0RfxZ.js} +1 -1
  75. package/dist/gateway/static/root/assets/task-detail-page-BvZSCLUH.js +1 -0
  76. package/dist/gateway/static/root/assets/{theme-store-BtkaVpMm.js → theme-store-CubltMKm.js} +1 -1
  77. package/dist/gateway/static/root/assets/{tunnel-api-C__W9BaN.js → tunnel-api-CiieC6HP.js} +1 -1
  78. package/dist/gateway/static/root/assets/{use-autosave-Dow9RRcq.js → use-autosave-XQ3SuyB9.js} +1 -1
  79. package/dist/gateway/static/root/assets/{user-model-page-CU6nxmoM.js → user-model-page-BKJC7tyW.js} +2 -2
  80. package/dist/gateway/static/root/assets/{voice-api-key-field-CvF3lEyx.js → voice-api-key-field-D4QzVgdt.js} +1 -1
  81. package/dist/gateway/static/root/assets/{voice-config-api-BEUVAyM6.js → voice-config-api-B1ZbyVmF.js} +1 -1
  82. package/dist/gateway/static/root/assets/{work-discovery-overlay-B9PDfReq.js → work-discovery-overlay-D5Tf8GRZ.js} +1 -1
  83. package/dist/gateway/static/root/assets/{workflow-run-setup-panel-kWGFkhjz.js → workflow-run-setup-panel-BW9p8Maz.js} +2 -2
  84. package/dist/gateway/static/root/assets/workflows-page-DuqRodIc.js +5 -0
  85. package/dist/gateway/static/root/index.html +10 -10
  86. package/dist/package.js +1 -1
  87. package/dist/src/agent/agent-manager.js +4 -4
  88. package/dist/src/agent/background-review/run-background-review.js +1 -1
  89. package/dist/src/agent/embedded/model-runtime.js +1 -1
  90. package/dist/src/agent/embedded/run-for-session.js +1 -1
  91. package/dist/src/agent/image/tool-model-config.js +1 -1
  92. package/dist/src/agent/mcp/oauth/mcp-oauth-store.js +1 -1
  93. package/dist/src/agent/service.js +2 -2
  94. package/dist/src/agent/session/session-inspector.js +1 -1
  95. package/dist/src/agent/skills/hub-lock.js +1 -1
  96. package/dist/src/agent/tasks/task-judge-service.js +3 -3
  97. package/dist/src/agent/tools/browser/tool/browser-use-tool.js +17 -2
  98. package/dist/src/agent/tools/browser/tool/schemas.d.ts +85 -1
  99. package/dist/src/agent/tools/browser/tool/schemas.js +212 -5
  100. package/dist/src/ai-assist/text-assist.js +1 -1
  101. package/dist/src/auth/credentials.js +2 -2
  102. package/dist/src/auth/oauth/xopc-cloud.js +1 -1
  103. package/dist/src/auth/profiles/store.js +1 -1
  104. package/dist/src/auth/sync-provider-auth.js +2 -2
  105. package/dist/src/browser/drivers/extension-driver.d.ts +4 -4
  106. package/dist/src/browser/drivers/extension-driver.js +20 -8
  107. package/dist/src/browser/drivers/playwright-driver.js +1 -1
  108. package/dist/src/browser/providers/browser-ext-install.d.ts +3 -0
  109. package/dist/src/browser/providers/browser-ext-install.js +19 -4
  110. package/dist/src/browser/providers/extension.d.ts +14 -1
  111. package/dist/src/browser/providers/extension.js +89 -11
  112. package/dist/src/browser/providers/playwright-install.js +8 -12
  113. package/dist/src/cli/commands/doctor/checks/provider-auth.js +1 -1
  114. package/dist/src/cli/commands/models.js +1 -1
  115. package/dist/src/config/index.js +4 -4
  116. package/dist/src/config/loader.js +2 -2
  117. package/dist/src/config/models-json.js +1 -1
  118. package/dist/src/extensions/lockfile.js +1 -1
  119. package/dist/src/gateway/agents-admin.js +1 -1
  120. package/dist/src/gateway/file-path-classifier.js +1 -1
  121. package/dist/src/gateway/heartbeat/service.js +1 -1
  122. package/dist/src/gateway/hono/lib/config-payload.js +1 -1
  123. package/dist/src/gateway/hono/routes/browser.js +149 -27
  124. package/dist/src/gateway/hono/routes/lazy-bundles.js +1 -1
  125. package/dist/src/gateway/hono/routes/models.js +1 -1
  126. package/dist/src/gateway/service/config-coordinator.js +1 -1
  127. package/dist/src/gateway/service.js +10 -10
  128. package/dist/src/heartbeat/index.js +1 -1
  129. package/dist/src/providers/auth-runtime/resolve-auth.js +1 -1
  130. package/dist/src/providers/index.js +2 -2
  131. package/dist/src/providers/model-registry.js +1 -1
  132. package/dist/src/providers/model-thinking.js +57 -20
  133. package/dist/src/providers/register-runtime-providers.js +1 -1
  134. package/dist/src/tui/tui-startup-resources.js +1 -1
  135. package/dist/src/tui/tui.js +1 -1
  136. package/dist/src/work-discovery/service.js +1 -1
  137. package/dist/src/workflows/service/workflow-run-service.js +1 -1
  138. package/package.json +2 -2
  139. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-Bs34Kp0K.js +0 -1
  140. package/dist/gateway/static/root/assets/apps-page-BhgvfBJT.js +0 -1
  141. package/dist/gateway/static/root/assets/automations-workspace-BzX4lILP.js +0 -6
  142. package/dist/gateway/static/root/assets/browser-settings-page-BBdMqxl0.js +0 -3
  143. package/dist/gateway/static/root/assets/capabilities-settings-panel-D_WfftDW.js +0 -7
  144. package/dist/gateway/static/root/assets/connectors-page-CPDjU5wU.js +0 -2
  145. package/dist/gateway/static/root/assets/home-page-BdvLZKQZ.js +0 -1
  146. package/dist/gateway/static/root/assets/index-Cu8xqZQ9.css +0 -2
  147. package/dist/gateway/static/root/assets/local-app-workbench-page-CR6asX7L.js +0 -2
  148. package/dist/gateway/static/root/assets/logs-page-ZP4QTWoC.js +0 -2
  149. package/dist/gateway/static/root/assets/messages-C72stReU.js +0 -3
  150. package/dist/gateway/static/root/assets/note-detail-panel-EeVeF4II.js +0 -5
  151. package/dist/gateway/static/root/assets/notes-page-D7bMff96.js +0 -8
  152. package/dist/gateway/static/root/assets/projects-page-DeTD6pu1.js +0 -1
  153. package/dist/gateway/static/root/assets/remote-access-hub-CxKrdQ6a.js +0 -1
  154. package/dist/gateway/static/root/assets/sessions-page-DUFJN-2t.js +0 -1
  155. package/dist/gateway/static/root/assets/settings-advanced-gate-CcSYDjaH.js +0 -1
  156. package/dist/gateway/static/root/assets/shares-settings-CovcdHSC.js +0 -1
  157. package/dist/gateway/static/root/assets/skill-reload-api-CrHagTsE.js +0 -1
  158. package/dist/gateway/static/root/assets/task-detail-page-I8hueJnG.js +0 -1
  159. package/dist/gateway/static/root/assets/workflows-page-B4Is5E42.js +0 -5
@@ -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
- ws = new WebSocket(XOPC_EXT_WS_URL);
533
- ws.onopen = () => {
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
- ws.onmessage = async (event) => {
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
- ws?.send(JSON.stringify(result));
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
- ws.onclose = () => {
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 if (message.type === "content/heartbeat") sendResponse({ ok: true });
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();
@@ -189,8 +189,3 @@ chrome.runtime.onMessage.addListener(
189
189
  return true;
190
190
  }
191
191
  );
192
- setInterval(() => {
193
- if (!chrome.runtime?.id) return;
194
- chrome.runtime.sendMessage({ type: "content/heartbeat" }).catch(() => {
195
- });
196
- }, 3e4);
@@ -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.253",
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",
@@ -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.253",
5
+ "version": "0.0.254",
6
6
  "kind": "channel",
7
7
  "main": "src/index.js",
8
8
  "channels": [
@@ -1 +1 @@
1
- import{f as e}from"./locale-store-BkeaPZpn.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};
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};