aitu-app 0.6.78 → 0.6.80
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 +3 -3
- package/assets/CanvasAudioPlayer-CSFENxi6.js +2 -0
- package/assets/ChatDrawer-CWZQP5R5.css +1 -0
- package/assets/ChatDrawer-sVEVW11M.js +11 -0
- package/assets/ChatMessagesArea-Cnb94V8-.js +7 -0
- package/assets/ChatMessagesArea-PlF5AwzD.css +1 -0
- package/assets/DeferredAIInputBar-D99l6sBS.js +8 -0
- package/assets/DrawnixDeferredFeatures-78cIu-ev.js +2 -0
- package/assets/{KnowledgeBaseContent-DcX5Jofx.js → KnowledgeBaseContent-DZ-1fPZa.js} +10 -10
- package/assets/{MVCreator-DllHozYg.js → MVCreator-BV8KDR6E.js} +8 -8
- package/assets/ModelBenchmarkWorkbench-DL6r0Z_5.js +2 -0
- package/assets/MusicAnalyzer-D9Bpmhym.css +1 -0
- package/assets/{MusicAnalyzer-DDeT6g3c.js → MusicAnalyzer-DQtjf36o.js} +2 -2
- package/assets/{MusicAnalyzer-CHcQ5t4P.js → MusicAnalyzer-u_5sy56T.js} +1 -1
- package/assets/PromptHistoryTool-B-ktaOpK.js +2 -0
- package/assets/PromptHistoryTool-BH7hq916.css +1 -0
- package/assets/ResizableDivider-BpUFdkte.js +1 -0
- package/assets/TaskQueuePanel-BLD1r7_I.js +1 -0
- package/assets/{VideoAnalyzer-BSLz1FaI.js → VideoAnalyzer-Bjv9pyDs.js} +2 -2
- package/assets/ai-generation-preferences-service-BSpgVCHz.js +1 -0
- package/assets/arc-CnA_FoJK.js +1 -0
- package/assets/{arc-BU2KKCa_.js → arc-DDvk_-VM.js} +1 -1
- package/assets/{batch-image-generation-Bg68r_Ql.js → batch-image-generation-N-lwbjRE.js} +3 -3
- package/assets/{blockDiagram-38ab4fdb-BCGEnMME.js → blockDiagram-38ab4fdb-B2G4wjZe.js} +6 -6
- package/assets/{blockDiagram-38ab4fdb-CsZR5uC5.js → blockDiagram-38ab4fdb-DBkZWrKk.js} +1 -1
- package/assets/{browser-DpICcNby.js → browser-ZXTF4AKv.js} +1 -1
- package/assets/{c4Diagram-3d4e48cf-9fuiuFdV.js → c4Diagram-3d4e48cf-BFg-wccg.js} +1 -1
- package/assets/{c4Diagram-3d4e48cf-WM4wd_GR.js → c4Diagram-3d4e48cf-CmyNnfip.js} +1 -1
- package/assets/{canvas-insertion-CdUQF7IV.js → canvas-insertion-CKIoVZ9a.js} +1 -1
- package/assets/channel-BQh3J7kz.js +1 -0
- package/assets/channel-CPsF_uSp.js +1 -0
- package/assets/{classDiagram-70f12bd4-DcYDedz1.js → classDiagram-70f12bd4-BoP-e23u.js} +2 -2
- package/assets/{classDiagram-70f12bd4-CBVHTwQu.js → classDiagram-70f12bd4-UTHJc2XA.js} +1 -1
- package/assets/classDiagram-v2-f2320105-BeBc2H-D.js +2 -0
- package/assets/{classDiagram-v2-f2320105-jpCwaHEd.js → classDiagram-v2-f2320105-Bjwz5ljW.js} +1 -1
- package/assets/{clipper-jvd5rF5a.js → clipper-NoHaeWV4.js} +1 -1
- package/assets/clone-CA2KqVCK.js +1 -0
- package/assets/createText-2e5e7dd3-Bsu7vT-L.js +8 -0
- package/assets/{createText-2e5e7dd3-x5lOIwut.js → createText-2e5e7dd3-DrWUfa-s.js} +1 -1
- package/assets/{edges-e0da2a9e-CbrF4nbD.js → edges-e0da2a9e-B9sYOHRt.js} +1 -1
- package/assets/{edges-e0da2a9e-Ch6PBwWs.js → edges-e0da2a9e-DX4IQMED.js} +1 -1
- package/assets/{erDiagram-9861fffd-DSlNVuAZ.js → erDiagram-9861fffd-B-LfsIMf.js} +1 -1
- package/assets/{erDiagram-9861fffd-Bq07elcI.js → erDiagram-9861fffd-DPdud_LA.js} +1 -1
- package/assets/{flowDb-956e92f1-Ti5YC4Vv.js → flowDb-956e92f1-C3xKlizM.js} +1 -1
- package/assets/{flowDb-956e92f1-BqPCJlZp.js → flowDb-956e92f1-Ck5oiEta.js} +1 -1
- package/assets/{flowDiagram-66a62f08-CPDuG3rY.js → flowDiagram-66a62f08-Bkt2NoHM.js} +4 -4
- package/assets/{flowDiagram-66a62f08-D3GSABFi.js → flowDiagram-66a62f08-CJnxo6dI.js} +1 -1
- package/assets/flowDiagram-v2-96b9c2cf-MnwxRDMO.js +1 -0
- package/assets/flowDiagram-v2-96b9c2cf-U7nNPvdl.js +1 -0
- package/assets/{flowchart-elk-definition-4a651766-BH09NeLA.js → flowchart-elk-definition-4a651766-2XkrsdKI.js} +2 -2
- package/assets/{flowchart-elk-definition-4a651766-BLaLPCDV.js → flowchart-elk-definition-4a651766-ec8y1a8S.js} +1 -1
- package/assets/{ganttDiagram-c361ad54-DL9ZeaEc.js → ganttDiagram-c361ad54-1TA0mZY_.js} +3 -3
- package/assets/{ganttDiagram-c361ad54-Sp9M1KHP.js → ganttDiagram-c361ad54-D-OrVtXV.js} +3 -3
- package/assets/{gitGraphDiagram-72cf32ee-BWwmRKo-.js → gitGraphDiagram-72cf32ee-Blt3RsBD.js} +1 -1
- package/assets/{gitGraphDiagram-72cf32ee-BSf1fsDV.js → gitGraphDiagram-72cf32ee-CKf6xgO1.js} +1 -1
- package/assets/{graph-g-2U7grQ.js → graph-CUYgHJmb.js} +1 -1
- package/assets/{graph--nPw8zXQ.js → graph-WeSRtsZO.js} +1 -1
- package/assets/{index-ZrVeQUWo.js → index--MqiaN5t.js} +1 -1
- package/assets/{index-C5eu4uSl.js → index-0b_TeH8L.js} +11 -11
- package/assets/{index-3862675e-BXwbZ2pz.js → index-3862675e-C2ipEQC8.js} +1 -1
- package/assets/{index-3862675e-D6Zy95zZ.js → index-3862675e-CeX6VlsU.js} +1 -1
- package/assets/{index-CLJUfzvO.js → index-B-J0JJak.js} +1 -1
- package/assets/{index-TkfyNewx.js → index-B7Hj7g41.js} +1 -1
- package/assets/{index-eZfwJ9bV.js → index-BS_v5cOh.js} +1 -1
- package/assets/index-Btk31p7r.js +1 -0
- package/assets/{index-DH12_HTj.js → index-C-Samsu3.js} +2 -2
- package/assets/index-C-llNX01.js +1 -0
- package/assets/index-C8c9icsH.js +2 -0
- package/assets/{index-D7b5fX1d.js → index-CAn2jfNg.js} +1 -1
- package/assets/{index-Dz8sghkK.js → index-CK2zt94U.js} +1 -1
- package/assets/{index-CfgvFFx3.js → index-CP51k4n6.js} +17 -17
- package/assets/{index-DI0OV6F8.js → index-CXBhIy30.js} +1 -1
- package/assets/index-C_Mj1wbj.js +2 -0
- package/assets/{index-BwSnJN93.js → index-CbfE0MBd.js} +1 -1
- package/assets/{index-C3qD42ws.js → index-CjeDxq0c.js} +1 -1
- package/assets/{index-DqMndQiP.js → index-Ct7OFnWK.js} +1 -1
- package/assets/{index-BaCHOxhI.js → index-CxxUIkx1.js} +1 -1
- package/assets/{index-B2dttXd7.js → index-D2Kc-3MO.js} +1 -1
- package/assets/{index-Bq8mPedC.js → index-DK0XEByD.js} +1 -1
- package/assets/{index-DllL1sx1.js → index-DQcV2DYj.js} +1 -1
- package/assets/{index-BP77pG9S.js → index-DSKRBuhn.js} +73 -73
- package/assets/{index-BXzGHPXz.js → index-DXqL8NRE.js} +2 -2
- package/assets/{index-B7V7-Vxz.js → index-DcLrRIlS.js} +1 -1
- package/assets/{index-D4pIkh3S.js → index-DdA-dF0D.js} +1 -1
- package/assets/{index-QkP3EC02.js → index-DdxTnVj5.js} +1 -1
- package/assets/{index-CmyOpFTN.js → index-DmrnShhc.js} +1 -1
- package/assets/{index-Bti3m-iW.js → index-QO0uGVDP.js} +1 -1
- package/assets/{index-BPR_DyGD.js → index-aIKXDB1M.js} +1 -1
- package/assets/{index-DIiIUyb-.js → index-n6JhNACm.js} +1 -1
- package/assets/{index-BWrcsh8u.js → index-qbS_W7PW.js} +1 -1
- package/assets/index-v7iKPBEu.css +1 -0
- package/assets/{infoDiagram-f8f76790-DpFqCCNv.js → infoDiagram-f8f76790-DEWQ3NXc.js} +1 -1
- package/assets/{infoDiagram-f8f76790-G2JpJJP7.js → infoDiagram-f8f76790-u_qjHFCm.js} +3 -3
- package/assets/{journeyDiagram-49397b02-DLLTobRM.js → journeyDiagram-49397b02-C8A30CBr.js} +1 -1
- package/assets/{journeyDiagram-49397b02-BdESGMrv.js → journeyDiagram-49397b02-hQJfqZih.js} +1 -1
- package/assets/{layout-WSR0vNPO.js → layout-CFKTKeqQ.js} +1 -1
- package/assets/{layout-CVkuImk4.js → layout-DvRyabpG.js} +1 -1
- package/assets/{line-D3bnG227.js → line-C72F34Po.js} +1 -1
- package/assets/{line-DQuMJveY.js → line-W5R41tQ1.js} +1 -1
- package/assets/{linear-CciP-97N.js → linear-7FXykgHM.js} +1 -1
- package/assets/{linear-Z6vFvuwc.js → linear-CVyOPUvz.js} +1 -1
- package/assets/main-BO0HWBB1.js +42 -0
- package/assets/{main-8DNjLY6L.css → main-DAuE07rf.css} +1 -1
- package/assets/{mermaid.core-CwZQb0ud.js → mermaid.core-2VcXhn43.js} +4 -4
- package/assets/{mindmap-definition-fc14e90a-BnJ8OOTI.js → mindmap-definition-fc14e90a-CcVXKGg4.js} +1 -1
- package/assets/{mindmap-definition-fc14e90a-CxQMydCW.js → mindmap-definition-fc14e90a-DRDYXe84.js} +2 -2
- package/assets/model-benchmark-launcher-C2qBiDlM.js +1 -0
- package/assets/{photo-wall-splitter-BZ88W5Zy.js → photo-wall-splitter-CFntSOdS.js} +1 -1
- package/assets/{pieDiagram-8a3498a8-BSDdkTeu.js → pieDiagram-8a3498a8-Be9dl9pU.js} +1 -1
- package/assets/{pieDiagram-8a3498a8-D6VtAoja.js → pieDiagram-8a3498a8-DXZOJYBv.js} +5 -5
- package/assets/ppt-generation-B5fKT_by.js +48 -0
- package/assets/{quadrantDiagram-120e2f19-C8k2xuBd.js → quadrantDiagram-120e2f19-DoU7aQSp.js} +3 -3
- package/assets/{quadrantDiagram-120e2f19-BbFV0VXY.js → quadrantDiagram-120e2f19-l5K9mx26.js} +1 -1
- package/assets/{requirementDiagram-deff3bca-C3xMdzJV.js → requirementDiagram-deff3bca-DN_87Wxe.js} +1 -1
- package/assets/{requirementDiagram-deff3bca-CpjqKjYZ.js → requirementDiagram-deff3bca-DOooq7kx.js} +1 -1
- package/assets/retry-image-BmIVuAVu.js +6 -0
- package/assets/{sankeyDiagram-04a897e0-Bjvig9bW.js → sankeyDiagram-04a897e0-BB33nO6_.js} +1 -1
- package/assets/{sankeyDiagram-04a897e0-BBJJgsFv.js → sankeyDiagram-04a897e0-CCa0hwml.js} +2 -2
- package/assets/{sequenceDiagram-704730f1-PFC_9IFI.js → sequenceDiagram-704730f1-CNhXZiix.js} +1 -1
- package/assets/{sequenceDiagram-704730f1-DX1MmBN_.js → sequenceDiagram-704730f1-ZqQ1QrY-.js} +1 -1
- package/assets/settings-dialog-BFuWTeQR.js +1 -0
- package/assets/{skill-dsl-parser-syNWYxFu.js → skill-dsl-parser-b-aB3P5u.js} +1 -1
- package/assets/{stateDiagram-587899a1-Dc3mI_B_.js → stateDiagram-587899a1-BBlOIJr7.js} +1 -1
- package/assets/{stateDiagram-587899a1-SFMUVAam.js → stateDiagram-587899a1-BhomZ0AN.js} +1 -1
- package/assets/{stateDiagram-v2-d93cdb3a-P4Yt2p_j.js → stateDiagram-v2-d93cdb3a-BpJsgMa0.js} +1 -1
- package/assets/stateDiagram-v2-d93cdb3a-CuOn9du2.js +1 -0
- package/assets/{styles-6aaf32cf-C3jnr3hV.js → styles-6aaf32cf-C2WEewoA.js} +1 -1
- package/assets/{styles-6aaf32cf-b6AdP7fu.js → styles-6aaf32cf-CTtf8moq.js} +1 -1
- package/assets/{styles-9a916d00-BUiD9iBe.js → styles-9a916d00-44Xi2-39.js} +1 -1
- package/assets/{styles-9a916d00-ii0XTdIm.js → styles-9a916d00-DUU3VgNe.js} +4 -4
- package/assets/{styles-c10674c1-DbTSpy3W.js → styles-c10674c1--AhWSGg7.js} +1 -1
- package/assets/styles-c10674c1-DS-wE3tK.js +116 -0
- package/assets/{svgDrawCommon-08f97a94-D4gIV05W.js → svgDrawCommon-08f97a94-CXcvtSSy.js} +1 -1
- package/assets/{svgDrawCommon-08f97a94-BK6lD4D6.js → svgDrawCommon-08f97a94-Dyqh4V2s.js} +1 -1
- package/assets/{timeline-definition-85554ec2-Bl2y548G.js → timeline-definition-85554ec2-k788753O.js} +1 -1
- package/assets/{timeline-definition-85554ec2-CWKg_JxG.js → timeline-definition-85554ec2-sw6-UuBe.js} +1 -1
- package/assets/tool-windows-BEnZdJqF.js +2948 -0
- package/assets/{tool-windows-CUNbW1Tz.css → tool-windows-D61Le6TE.css} +1 -1
- package/assets/ttd-dialog-BJzXAZ0l.js +99 -0
- package/assets/useCharacters-DRBoWvvj.css +1 -0
- package/assets/useCharacters-gsV4K8Hn.js +2 -0
- package/assets/{useWorkflowSubmission-BizuDmuw.js → useWorkflowSubmission-XRR21P6Y.js} +10 -10
- package/assets/{video-analyze-6v3Y-rUE.js → video-analyze-CpbnpSiI.js} +1 -1
- package/assets/{video-generation-DnmTlWnm.js → video-generation-BXhS7x-a.js} +2 -2
- package/assets/video-recovery-service-6G2lkWcu.js +1 -0
- package/assets/workflow-generation-utils-CYxtSHl0.js +3 -0
- package/assets/workflow-submission-service-DygSzydV.js +4 -0
- package/assets/{xychartDiagram-e933f94c-CJX9_9WF.js → xychartDiagram-e933f94c-CvTTDwPb.js} +3 -3
- package/assets/{xychartDiagram-e933f94c-Cep8CQEH.js → xychartDiagram-e933f94c-Ga9zi9ha.js} +1 -1
- package/changelog.json +45 -0
- package/idle-prefetch-manifest.json +310 -306
- package/manifest.json +3 -3
- package/package.json +1 -1
- package/precache-manifest.json +10 -10
- package/sitemap.xml +37 -0
- package/sw-debug/app.js +269 -156
- package/sw-debug/backup-restore.js +235 -103
- package/sw-debug/crypto-helper.js +116 -120
- package/sw-debug/duplex-client.js +33 -19
- package/sw-debug/gist-management.js +938 -655
- package/sw-debug/sw-communication.js +87 -50
- package/sw.js +5 -5
- package/version.json +7 -17
- package/assets/CanvasAudioPlayer-DutgwdiU.js +0 -2
- package/assets/ChatDrawer-0jNvKIoI.css +0 -1
- package/assets/ChatDrawer-E6Fog16I.js +0 -11
- package/assets/ChatMessagesArea-Bgwiz_XP.js +0 -250
- package/assets/ChatMessagesArea-DyR_wHFQ.css +0 -1
- package/assets/DeferredAIInputBar-CPkD8Cv9.js +0 -8
- package/assets/DrawnixDeferredFeatures-Cul76-88.js +0 -2
- package/assets/ModelBenchmarkWorkbench-Dv9SNYTi.js +0 -2
- package/assets/MusicAnalyzer-DhtRGpAp.css +0 -1
- package/assets/ResizableDivider-CaG9JQbJ.js +0 -1
- package/assets/TaskQueuePanel-BNhNzGp5.js +0 -1
- package/assets/ai-generation-preferences-service-BF7QkuJp.js +0 -1
- package/assets/arc-DmGoDCEL.js +0 -1
- package/assets/channel-CZjE-WNp.js +0 -1
- package/assets/channel-SXZD6bG3.js +0 -1
- package/assets/classDiagram-v2-f2320105-CsxWGkSy.js +0 -2
- package/assets/clone-C4mvvMDb.js +0 -1
- package/assets/createText-2e5e7dd3-CkXS3l7I.js +0 -5
- package/assets/flowDiagram-v2-96b9c2cf-BCcJ-cre.js +0 -1
- package/assets/flowDiagram-v2-96b9c2cf-DCVaFEgV.js +0 -1
- package/assets/index-3eqA7Bag.js +0 -1
- package/assets/index-7Q-aiwln.js +0 -4
- package/assets/index-B1XP5g7P.css +0 -1
- package/assets/index-BHPTfCZM.js +0 -1
- package/assets/index-BqHZCcen.js +0 -2
- package/assets/index-DcZrElEK.js +0 -2
- package/assets/index-gQ7LgvSv.js +0 -12
- package/assets/main-BFEkxCOK.js +0 -56
- package/assets/model-benchmark-launcher-Ct3lYXVq.js +0 -1
- package/assets/ppt-generation-FzjP_rp0.js +0 -48
- package/assets/settings-dialog-CQM4v791.js +0 -1
- package/assets/stateDiagram-v2-d93cdb3a-DmnBjHpC.js +0 -1
- package/assets/styles-c10674c1-Bt89Yy8Q.js +0 -116
- package/assets/tool-windows-DOIu9TAD.js +0 -2975
- package/assets/ttd-dialog-DI4kQSg8.js +0 -99
- package/assets/useCharacters-Chv4Ky7x.js +0 -7
- package/assets/useCharacters-OrDbG69o.css +0 -1
- package/assets/video-recovery-service-BeRoh0s2.js +0 -1
- package/assets/workflow-generation-utils-me381Cax.js +0 -3
- package/assets/workflow-submission-service-YOpo7g37.js +0 -4
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* SW Debug Panel - Service Worker Communication Module
|
|
3
|
-
*
|
|
3
|
+
*
|
|
4
4
|
* 使用 postmessage-duplex 实现可靠的点对点通信
|
|
5
5
|
*/
|
|
6
6
|
|
|
@@ -74,7 +74,7 @@ function trackOutgoingRequest(requestId, cmdname) {
|
|
|
74
74
|
requestIdToMethod.delete(id);
|
|
75
75
|
}
|
|
76
76
|
}
|
|
77
|
-
|
|
77
|
+
|
|
78
78
|
requestIdToMethod.set(requestId, { cmdname, timestamp: now });
|
|
79
79
|
}
|
|
80
80
|
|
|
@@ -102,14 +102,17 @@ let postMessageWrapped = false;
|
|
|
102
102
|
*/
|
|
103
103
|
function wrapPostMessage() {
|
|
104
104
|
if (postMessageWrapped) return;
|
|
105
|
-
|
|
105
|
+
|
|
106
106
|
// We need to wrap the postMessage on any controller that gets set
|
|
107
107
|
// Use a getter/setter on navigator.serviceWorker to catch controller changes
|
|
108
|
-
const originalDescriptor = Object.getOwnPropertyDescriptor(
|
|
109
|
-
|
|
108
|
+
const originalDescriptor = Object.getOwnPropertyDescriptor(
|
|
109
|
+
ServiceWorkerContainer.prototype,
|
|
110
|
+
'controller'
|
|
111
|
+
);
|
|
112
|
+
|
|
110
113
|
if (originalDescriptor && originalDescriptor.get) {
|
|
111
114
|
let lastController = null;
|
|
112
|
-
|
|
115
|
+
|
|
113
116
|
Object.defineProperty(navigator.serviceWorker, 'controller', {
|
|
114
117
|
get() {
|
|
115
118
|
const controller = originalDescriptor.get.call(this);
|
|
@@ -121,14 +124,16 @@ function wrapPostMessage() {
|
|
|
121
124
|
},
|
|
122
125
|
configurable: true,
|
|
123
126
|
});
|
|
124
|
-
|
|
127
|
+
|
|
125
128
|
// Also wrap the current controller if it exists
|
|
126
|
-
const currentController = originalDescriptor.get.call(
|
|
129
|
+
const currentController = originalDescriptor.get.call(
|
|
130
|
+
navigator.serviceWorker
|
|
131
|
+
);
|
|
127
132
|
if (currentController) {
|
|
128
133
|
wrapControllerPostMessage(currentController);
|
|
129
134
|
}
|
|
130
135
|
}
|
|
131
|
-
|
|
136
|
+
|
|
132
137
|
postMessageWrapped = true;
|
|
133
138
|
}
|
|
134
139
|
|
|
@@ -138,20 +143,25 @@ function wrapPostMessage() {
|
|
|
138
143
|
*/
|
|
139
144
|
function wrapControllerPostMessage(controller) {
|
|
140
145
|
if (controller._postMessageWrapped) return;
|
|
141
|
-
|
|
146
|
+
|
|
142
147
|
const originalPostMessage = controller.postMessage.bind(controller);
|
|
143
|
-
|
|
144
|
-
controller.postMessage = function(message, transfer) {
|
|
148
|
+
|
|
149
|
+
controller.postMessage = function (message, transfer) {
|
|
145
150
|
// Track duplex protocol messages (those with requestId and cmdname)
|
|
146
|
-
if (
|
|
151
|
+
if (
|
|
152
|
+
message &&
|
|
153
|
+
typeof message === 'object' &&
|
|
154
|
+
message.requestId &&
|
|
155
|
+
message.cmdname
|
|
156
|
+
) {
|
|
147
157
|
trackOutgoingRequest(message.requestId, message.cmdname);
|
|
148
158
|
// Log the outgoing message
|
|
149
159
|
logPostMessage('send', message.cmdname, message);
|
|
150
160
|
}
|
|
151
|
-
|
|
161
|
+
|
|
152
162
|
return originalPostMessage(message, transfer);
|
|
153
163
|
};
|
|
154
|
-
|
|
164
|
+
|
|
155
165
|
controller._postMessageWrapped = true;
|
|
156
166
|
}
|
|
157
167
|
|
|
@@ -188,7 +198,9 @@ function isDebugPanelMessage(messageType) {
|
|
|
188
198
|
if (!messageType || typeof messageType !== 'string') {
|
|
189
199
|
return false;
|
|
190
200
|
}
|
|
191
|
-
return DEBUG_PANEL_MESSAGE_PREFIXES.some(prefix =>
|
|
201
|
+
return DEBUG_PANEL_MESSAGE_PREFIXES.some((prefix) =>
|
|
202
|
+
messageType.startsWith(prefix)
|
|
203
|
+
);
|
|
192
204
|
}
|
|
193
205
|
|
|
194
206
|
/**
|
|
@@ -225,13 +237,12 @@ function logPostMessage(direction, messageType, data, response, error) {
|
|
|
225
237
|
*/
|
|
226
238
|
async function ensureDuplexInitialized() {
|
|
227
239
|
if (duplexInitialized) return true;
|
|
228
|
-
|
|
240
|
+
|
|
229
241
|
try {
|
|
230
242
|
const success = await initDuplexClient();
|
|
231
243
|
if (success) {
|
|
232
244
|
duplexInitialized = true;
|
|
233
245
|
setupDuplexEventHandlers();
|
|
234
|
-
console.log('[SW Communication] Duplex communication initialized');
|
|
235
246
|
}
|
|
236
247
|
return success;
|
|
237
248
|
} catch (error) {
|
|
@@ -294,7 +305,9 @@ function setupDuplexEventHandlers() {
|
|
|
294
305
|
* Enable debug mode
|
|
295
306
|
*/
|
|
296
307
|
export function enableDebug() {
|
|
297
|
-
try {
|
|
308
|
+
try {
|
|
309
|
+
sessionStorage.setItem('sw-debug-enabled', 'true');
|
|
310
|
+
} catch {}
|
|
298
311
|
enableDebugMode();
|
|
299
312
|
}
|
|
300
313
|
|
|
@@ -302,7 +315,9 @@ export function enableDebug() {
|
|
|
302
315
|
* Disable debug mode
|
|
303
316
|
*/
|
|
304
317
|
export function disableDebug() {
|
|
305
|
-
try {
|
|
318
|
+
try {
|
|
319
|
+
sessionStorage.setItem('sw-debug-enabled', 'false');
|
|
320
|
+
} catch {}
|
|
306
321
|
disableDebugMode();
|
|
307
322
|
}
|
|
308
323
|
|
|
@@ -318,7 +333,7 @@ export function heartbeat() {
|
|
|
318
333
|
*/
|
|
319
334
|
export async function refreshStatus() {
|
|
320
335
|
await ensureDuplexInitialized();
|
|
321
|
-
|
|
336
|
+
|
|
322
337
|
try {
|
|
323
338
|
const result = await getDebugStatus();
|
|
324
339
|
if (messageHandlers['SW_DEBUG_STATUS']) {
|
|
@@ -337,7 +352,7 @@ export async function refreshStatus() {
|
|
|
337
352
|
*/
|
|
338
353
|
export async function loadFetchLogs() {
|
|
339
354
|
await ensureDuplexInitialized();
|
|
340
|
-
|
|
355
|
+
|
|
341
356
|
try {
|
|
342
357
|
const result = await getFetchLogs();
|
|
343
358
|
if (messageHandlers['SW_DEBUG_LOGS']) {
|
|
@@ -354,7 +369,7 @@ export async function loadFetchLogs() {
|
|
|
354
369
|
*/
|
|
355
370
|
export async function clearFetchLogs() {
|
|
356
371
|
await ensureDuplexInitialized();
|
|
357
|
-
|
|
372
|
+
|
|
358
373
|
try {
|
|
359
374
|
await clearFetchLogsRPC();
|
|
360
375
|
if (messageHandlers['SW_DEBUG_LOGS_CLEARED']) {
|
|
@@ -371,7 +386,7 @@ export async function clearFetchLogs() {
|
|
|
371
386
|
*/
|
|
372
387
|
export async function clearConsoleLogs() {
|
|
373
388
|
await ensureDuplexInitialized();
|
|
374
|
-
|
|
389
|
+
|
|
375
390
|
try {
|
|
376
391
|
await clearConsoleLogsRPC();
|
|
377
392
|
if (messageHandlers['SW_DEBUG_CONSOLE_LOGS_CLEARED']) {
|
|
@@ -394,7 +409,10 @@ export async function loadConsoleLogs() {
|
|
|
394
409
|
messageHandlers['SW_DEBUG_CONSOLE_LOGS'](result);
|
|
395
410
|
}
|
|
396
411
|
} catch (error) {
|
|
397
|
-
console.error(
|
|
412
|
+
console.error(
|
|
413
|
+
'[SW Communication] Failed to load console logs directly, falling back to RPC:',
|
|
414
|
+
error
|
|
415
|
+
);
|
|
398
416
|
// Fallback to RPC
|
|
399
417
|
try {
|
|
400
418
|
await ensureDuplexInitialized();
|
|
@@ -413,7 +431,7 @@ export async function loadConsoleLogs() {
|
|
|
413
431
|
*/
|
|
414
432
|
export async function loadPostMessageLogs() {
|
|
415
433
|
await ensureDuplexInitialized();
|
|
416
|
-
|
|
434
|
+
|
|
417
435
|
try {
|
|
418
436
|
const result = await getPostMessageLogs(500);
|
|
419
437
|
if (messageHandlers['SW_DEBUG_POSTMESSAGE_LOGS']) {
|
|
@@ -430,14 +448,17 @@ export async function loadPostMessageLogs() {
|
|
|
430
448
|
*/
|
|
431
449
|
export async function clearPostMessageLogs() {
|
|
432
450
|
await ensureDuplexInitialized();
|
|
433
|
-
|
|
451
|
+
|
|
434
452
|
try {
|
|
435
453
|
await clearPostMessageLogsRPC();
|
|
436
454
|
if (messageHandlers['SW_DEBUG_POSTMESSAGE_LOGS_CLEARED']) {
|
|
437
455
|
messageHandlers['SW_DEBUG_POSTMESSAGE_LOGS_CLEARED']({});
|
|
438
456
|
}
|
|
439
457
|
} catch (error) {
|
|
440
|
-
console.error(
|
|
458
|
+
console.error(
|
|
459
|
+
'[SW Communication] Failed to clear postmessage logs:',
|
|
460
|
+
error
|
|
461
|
+
);
|
|
441
462
|
sendNativeMessage('SW_DEBUG_CLEAR_POSTMESSAGE_LOGS');
|
|
442
463
|
}
|
|
443
464
|
}
|
|
@@ -454,7 +475,10 @@ export async function loadLLMApiLogs(page = 1, pageSize = 20, filter = {}) {
|
|
|
454
475
|
const result = await getLLMApiLogsDirect(page, pageSize, filter);
|
|
455
476
|
return result;
|
|
456
477
|
} catch (error) {
|
|
457
|
-
console.error(
|
|
478
|
+
console.error(
|
|
479
|
+
'[SW Communication] Failed to load LLM API logs directly, falling back to RPC:',
|
|
480
|
+
error
|
|
481
|
+
);
|
|
458
482
|
// Fallback to RPC
|
|
459
483
|
try {
|
|
460
484
|
await ensureDuplexInitialized();
|
|
@@ -472,7 +496,7 @@ export async function loadLLMApiLogs(page = 1, pageSize = 20, filter = {}) {
|
|
|
472
496
|
*/
|
|
473
497
|
export async function clearLLMApiLogsInSW() {
|
|
474
498
|
await ensureDuplexInitialized();
|
|
475
|
-
|
|
499
|
+
|
|
476
500
|
try {
|
|
477
501
|
await clearLLMApiLogsRPC();
|
|
478
502
|
if (messageHandlers['SW_DEBUG_LLM_API_LOGS_CLEARED']) {
|
|
@@ -491,7 +515,7 @@ export async function clearLLMApiLogsInSW() {
|
|
|
491
515
|
*/
|
|
492
516
|
export async function deleteLLMApiLogsInSW(logIds) {
|
|
493
517
|
await ensureDuplexInitialized();
|
|
494
|
-
|
|
518
|
+
|
|
495
519
|
try {
|
|
496
520
|
const result = await deleteLLMApiLogsRPC(logIds);
|
|
497
521
|
return result;
|
|
@@ -517,7 +541,10 @@ export async function getLLMApiLogByIdInSW(logId) {
|
|
|
517
541
|
const linkedTask = await getLinkedTaskDebugDataForLLMLog(log);
|
|
518
542
|
return linkedTask ? { ...log, linkedTask } : log;
|
|
519
543
|
} catch (error) {
|
|
520
|
-
console.error(
|
|
544
|
+
console.error(
|
|
545
|
+
'[SW Communication] Failed to get LLM API log by ID directly, falling back to RPC:',
|
|
546
|
+
error
|
|
547
|
+
);
|
|
521
548
|
// Fallback to RPC
|
|
522
549
|
try {
|
|
523
550
|
await ensureDuplexInitialized();
|
|
@@ -548,7 +575,10 @@ export async function loadCrashSnapshots() {
|
|
|
548
575
|
}
|
|
549
576
|
return result;
|
|
550
577
|
} catch (error) {
|
|
551
|
-
console.error(
|
|
578
|
+
console.error(
|
|
579
|
+
'[SW Communication] Failed to load crash snapshots directly, falling back to RPC:',
|
|
580
|
+
error
|
|
581
|
+
);
|
|
552
582
|
// Fallback to RPC
|
|
553
583
|
try {
|
|
554
584
|
await ensureDuplexInitialized();
|
|
@@ -569,7 +599,7 @@ export async function loadCrashSnapshots() {
|
|
|
569
599
|
*/
|
|
570
600
|
export async function clearCrashSnapshotsInSW() {
|
|
571
601
|
await ensureDuplexInitialized();
|
|
572
|
-
|
|
602
|
+
|
|
573
603
|
try {
|
|
574
604
|
await clearCrashSnapshotsRPC();
|
|
575
605
|
if (messageHandlers['SW_DEBUG_CRASH_SNAPSHOTS_CLEARED']) {
|
|
@@ -593,7 +623,10 @@ export async function loadCacheStats() {
|
|
|
593
623
|
}
|
|
594
624
|
return result;
|
|
595
625
|
} catch (error) {
|
|
596
|
-
console.error(
|
|
626
|
+
console.error(
|
|
627
|
+
'[SW Communication] Failed to load cache stats directly, falling back to RPC:',
|
|
628
|
+
error
|
|
629
|
+
);
|
|
597
630
|
// Fallback to RPC
|
|
598
631
|
try {
|
|
599
632
|
await ensureDuplexInitialized();
|
|
@@ -621,16 +654,16 @@ export async function checkSwReady() {
|
|
|
621
654
|
if (!('serviceWorker' in navigator)) {
|
|
622
655
|
return false;
|
|
623
656
|
}
|
|
624
|
-
|
|
657
|
+
|
|
625
658
|
const registration = await navigator.serviceWorker.ready;
|
|
626
659
|
cachedRegistration = registration;
|
|
627
|
-
|
|
660
|
+
|
|
628
661
|
// If SW is active, initialize duplex communication
|
|
629
662
|
if (registration.active) {
|
|
630
663
|
await ensureDuplexInitialized();
|
|
631
664
|
return true;
|
|
632
665
|
}
|
|
633
|
-
|
|
666
|
+
|
|
634
667
|
return false;
|
|
635
668
|
}
|
|
636
669
|
|
|
@@ -656,10 +689,10 @@ export function getActiveSW() {
|
|
|
656
689
|
*/
|
|
657
690
|
export function registerMessageHandlers(handlers) {
|
|
658
691
|
messageHandlers = handlers;
|
|
659
|
-
|
|
692
|
+
|
|
660
693
|
// Initialize postMessage wrapper to track outgoing requests
|
|
661
694
|
wrapPostMessage();
|
|
662
|
-
|
|
695
|
+
|
|
663
696
|
// Also listen for native messages (for backward compatibility)
|
|
664
697
|
navigator.serviceWorker.addEventListener('message', (event) => {
|
|
665
698
|
// Extract message type from different message formats:
|
|
@@ -667,16 +700,21 @@ export function registerMessageHandlers(handlers) {
|
|
|
667
700
|
// - postmessage-duplex requests: event.data.cmdname
|
|
668
701
|
// - postmessage-duplex responses: event.data.req.cmdname
|
|
669
702
|
// - postmessage-duplex responses without req: lookup by requestId
|
|
670
|
-
let messageType =
|
|
671
|
-
|| event.data?.cmdname
|
|
672
|
-
|
|
673
|
-
|
|
703
|
+
let messageType =
|
|
704
|
+
event.data?.type || event.data?.cmdname || event.data?.req?.cmdname;
|
|
705
|
+
|
|
674
706
|
// For duplex responses without embedded request info, try to look up the method
|
|
675
|
-
if (
|
|
707
|
+
if (
|
|
708
|
+
!messageType &&
|
|
709
|
+
event.data?.requestId &&
|
|
710
|
+
event.data?.ret !== undefined
|
|
711
|
+
) {
|
|
676
712
|
const trackedMethod = lookupRequestMethod(event.data.requestId);
|
|
677
|
-
messageType = trackedMethod
|
|
713
|
+
messageType = trackedMethod
|
|
714
|
+
? `${trackedMethod} [response]`
|
|
715
|
+
: '[response]';
|
|
678
716
|
}
|
|
679
|
-
|
|
717
|
+
|
|
680
718
|
messageType = messageType || 'unknown';
|
|
681
719
|
const { type, cmdname, req, ...data } = event.data || {};
|
|
682
720
|
|
|
@@ -691,16 +729,15 @@ export function registerMessageHandlers(handlers) {
|
|
|
691
729
|
|
|
692
730
|
/**
|
|
693
731
|
* Register controller change handler
|
|
694
|
-
* @param {Function} callback
|
|
732
|
+
* @param {Function} callback
|
|
695
733
|
*/
|
|
696
734
|
export function onControllerChange(callback) {
|
|
697
735
|
navigator.serviceWorker.addEventListener('controllerchange', async () => {
|
|
698
736
|
if (navigator.serviceWorker.controller) {
|
|
699
|
-
console.log('[SW Communication] Controller changed, resetting duplex client');
|
|
700
737
|
// 完全重置 duplex 客户端
|
|
701
738
|
resetDuplexClient();
|
|
702
739
|
duplexInitialized = false;
|
|
703
|
-
|
|
740
|
+
|
|
704
741
|
// 重新初始化
|
|
705
742
|
await ensureDuplexInitialized();
|
|
706
743
|
callback();
|