asyar-sdk 2.5.0 → 2.6.0
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/contracts/runs.d.ts +48 -0
- package/dist/contracts/runs.d.ts.map +1 -0
- package/dist/contracts/runs.js +2 -0
- package/dist/contracts/runs.js.map +1 -0
- package/dist/contracts/runs.test.d.ts +2 -0
- package/dist/contracts/runs.test.d.ts.map +1 -0
- package/dist/contracts/runs.test.js +27 -0
- package/dist/contracts/runs.test.js.map +1 -0
- package/dist/contracts/tools.d.ts +22 -0
- package/dist/contracts/tools.d.ts.map +1 -0
- package/dist/contracts/tools.js +2 -0
- package/dist/contracts/tools.js.map +1 -0
- package/dist/contracts/tools.test.d.ts +2 -0
- package/dist/contracts/tools.test.d.ts.map +1 -0
- package/dist/contracts/tools.test.js +96 -0
- package/dist/contracts/tools.test.js.map +1 -0
- package/dist/contracts.d.ts +3 -0
- package/dist/contracts.d.ts.map +1 -1
- package/dist/contracts.js +1 -0
- package/dist/contracts.js.map +1 -1
- package/dist/icons/IconRenderer.test.js +12 -0
- package/dist/icons/IconRenderer.test.js.map +1 -1
- package/dist/icons/iconData.d.ts.map +1 -1
- package/dist/icons/iconData.js +10 -0
- package/dist/icons/iconData.js.map +1 -1
- package/dist/ipc/namespaces.d.ts +1 -1
- package/dist/ipc/namespaces.d.ts.map +1 -1
- package/dist/ipc/namespaces.js +2 -0
- package/dist/ipc/namespaces.js.map +1 -1
- package/dist/ipc/namespaces.test.js +1 -1
- package/dist/ipc/namespaces.test.js.map +1 -1
- package/dist/ipc/namespaces.tools.test.d.ts +2 -0
- package/dist/ipc/namespaces.tools.test.d.ts.map +1 -0
- package/dist/ipc/namespaces.tools.test.js +8 -0
- package/dist/ipc/namespaces.tools.test.js.map +1 -0
- package/dist/services/BaseServiceProxy.d.ts.map +1 -1
- package/dist/services/BaseServiceProxy.js +8 -0
- package/dist/services/BaseServiceProxy.js.map +1 -1
- package/dist/services/RunServiceProxy.d.ts +9 -0
- package/dist/services/RunServiceProxy.d.ts.map +1 -0
- package/dist/services/RunServiceProxy.js +93 -0
- package/dist/services/RunServiceProxy.js.map +1 -0
- package/dist/services/RunServiceProxy.test.d.ts +2 -0
- package/dist/services/RunServiceProxy.test.d.ts.map +1 -0
- package/dist/services/RunServiceProxy.test.js +180 -0
- package/dist/services/RunServiceProxy.test.js.map +1 -0
- package/dist/services/ToolsServiceProxy.d.ts +11 -0
- package/dist/services/ToolsServiceProxy.d.ts.map +1 -0
- package/dist/services/ToolsServiceProxy.js +45 -0
- package/dist/services/ToolsServiceProxy.js.map +1 -0
- package/dist/services/ToolsServiceProxy.test.d.ts +2 -0
- package/dist/services/ToolsServiceProxy.test.d.ts.map +1 -0
- package/dist/services/ToolsServiceProxy.test.js +142 -0
- package/dist/services/ToolsServiceProxy.test.js.map +1 -0
- package/dist/types/ExtensionType.d.ts +3 -0
- package/dist/types/ExtensionType.d.ts.map +1 -1
- package/dist/types/ExtensionType.tools.test.d.ts +2 -0
- package/dist/types/ExtensionType.tools.test.d.ts.map +1 -0
- package/dist/types/ExtensionType.tools.test.js +57 -0
- package/dist/types/ExtensionType.tools.test.js.map +1 -0
- package/dist/worker.d.ts.map +1 -1
- package/dist/worker.js +62 -1
- package/dist/worker.js.map +1 -1
- package/dist/worker.test.js +2 -0
- package/dist/worker.test.js.map +1 -1
- package/dist/worker.tools.test.d.ts +2 -0
- package/dist/worker.tools.test.d.ts.map +1 -0
- package/dist/worker.tools.test.js +100 -0
- package/dist/worker.tools.test.js.map +1 -0
- package/package.json +1 -1
package/dist/worker.js
CHANGED
|
@@ -9,6 +9,15 @@
|
|
|
9
9
|
* of the worker's import graph so the worker bundle stays small and is
|
|
10
10
|
* mechanically incapable of touching the document.
|
|
11
11
|
*/
|
|
12
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
13
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
14
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
15
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
16
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
17
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
18
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
19
|
+
});
|
|
20
|
+
};
|
|
12
21
|
if (typeof window === 'undefined' ||
|
|
13
22
|
window.__ASYAR_ROLE__ !== 'worker') {
|
|
14
23
|
throw new Error('[asyar-sdk/worker] Imported outside a worker context. ' +
|
|
@@ -36,6 +45,8 @@ import { ExtensionStateProxy } from './services/ExtensionStateProxy';
|
|
|
36
45
|
import { ActionServiceProxy } from './services/ActionServiceProxy';
|
|
37
46
|
import { DiagnosticsServiceProxy } from './services/DiagnosticsServiceProxy';
|
|
38
47
|
import { OnboardingServiceProxy } from './services/OnboardingServiceProxy';
|
|
48
|
+
import { RunServiceProxy } from './services/RunServiceProxy';
|
|
49
|
+
import { ToolsServiceProxy } from './services/ToolsServiceProxy';
|
|
39
50
|
import { extensionRpc } from './services/ExtensionRpc';
|
|
40
51
|
import { ExtensionContextCore } from './ExtensionContextCore';
|
|
41
52
|
function buildWorkerProxyBag() {
|
|
@@ -59,6 +70,8 @@ function buildWorkerProxyBag() {
|
|
|
59
70
|
state: new ExtensionStateProxy(),
|
|
60
71
|
diagnostics: new DiagnosticsServiceProxy(),
|
|
61
72
|
onboarding: new OnboardingServiceProxy(),
|
|
73
|
+
runs: new RunServiceProxy(),
|
|
74
|
+
tools: new ToolsServiceProxy(),
|
|
62
75
|
// Role-neutral: pure postMessage forwarder. Exposes registerAction,
|
|
63
76
|
// unregisterAction, and registerActionHandler so manifest root actions
|
|
64
77
|
// (send-notification, show-hud, notification callbacks) can register
|
|
@@ -94,6 +107,50 @@ function installWorkerRpcInterceptor() {
|
|
|
94
107
|
});
|
|
95
108
|
}
|
|
96
109
|
installWorkerRpcInterceptor();
|
|
110
|
+
installToolsInvokeInterceptor();
|
|
111
|
+
/**
|
|
112
|
+
* Module-level reference to the ToolsServiceProxy installed in this worker.
|
|
113
|
+
* Set once when the first `ExtensionContext` is constructed; the
|
|
114
|
+
* `asyar:tools:invoke` listener reads it when dispatching to local handlers.
|
|
115
|
+
*/
|
|
116
|
+
let _workerToolsProxy;
|
|
117
|
+
/**
|
|
118
|
+
* Worker-side: intercept every `asyar:tools:invoke` postMessage, dispatch to
|
|
119
|
+
* the ToolsServiceProxy's local handler map, and post the response back to
|
|
120
|
+
* the parent. Installed eagerly at module load so even the first
|
|
121
|
+
* `registerTool` call is covered without a bootstrap ordering hazard.
|
|
122
|
+
*/
|
|
123
|
+
function installToolsInvokeInterceptor() {
|
|
124
|
+
if (typeof window === 'undefined')
|
|
125
|
+
return;
|
|
126
|
+
window.addEventListener('message', (event) => __awaiter(this, void 0, void 0, function* () {
|
|
127
|
+
const data = event.data;
|
|
128
|
+
if (!data || typeof data !== 'object')
|
|
129
|
+
return;
|
|
130
|
+
const d = data;
|
|
131
|
+
if (d.type !== 'asyar:tools:invoke')
|
|
132
|
+
return;
|
|
133
|
+
const messageId = d.messageId;
|
|
134
|
+
const payload = d.payload;
|
|
135
|
+
const toolId = payload === null || payload === void 0 ? void 0 : payload.id;
|
|
136
|
+
const args = payload === null || payload === void 0 ? void 0 : payload.args;
|
|
137
|
+
if (typeof messageId !== 'string' || typeof toolId !== 'string')
|
|
138
|
+
return;
|
|
139
|
+
if (!_workerToolsProxy)
|
|
140
|
+
return;
|
|
141
|
+
try {
|
|
142
|
+
const result = yield _workerToolsProxy.invokeHandler(toolId, args);
|
|
143
|
+
window.parent.postMessage({ type: 'asyar:tools:invoke:response', messageId, result }, '*');
|
|
144
|
+
}
|
|
145
|
+
catch (err) {
|
|
146
|
+
window.parent.postMessage({
|
|
147
|
+
type: 'asyar:tools:invoke:response',
|
|
148
|
+
messageId,
|
|
149
|
+
error: err instanceof Error ? err.message : String(err),
|
|
150
|
+
}, '*');
|
|
151
|
+
}
|
|
152
|
+
}));
|
|
153
|
+
}
|
|
97
154
|
// Auto-report uncaught errors / rejections to host parent (Task 24).
|
|
98
155
|
if (typeof window !== 'undefined' && window.parent !== window) {
|
|
99
156
|
window.addEventListener('error', (e) => {
|
|
@@ -118,7 +175,11 @@ if (typeof window !== 'undefined' && window.parent !== window) {
|
|
|
118
175
|
}
|
|
119
176
|
export class ExtensionContext extends ExtensionContextCore {
|
|
120
177
|
constructor() {
|
|
121
|
-
|
|
178
|
+
const proxies = buildWorkerProxyBag();
|
|
179
|
+
super({ role: 'worker', proxies });
|
|
180
|
+
// Wire up the module-level tools proxy reference so the
|
|
181
|
+
// asyar:tools:invoke interceptor can dispatch to local handlers.
|
|
182
|
+
_workerToolsProxy = proxies.tools;
|
|
122
183
|
}
|
|
123
184
|
notifyRpcIfAvailable(id) {
|
|
124
185
|
// Patch the extensionRpc singleton's broker so worker-side
|
package/dist/worker.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG
|
|
1
|
+
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;;;;;;;;;;AAEH,IACE,OAAO,MAAM,KAAK,WAAW;IAC5B,MAAuC,CAAC,cAAc,KAAK,QAAQ,EACpE,CAAC;IACD,MAAM,IAAI,KAAK,CACb,wDAAwD;QACxD,+DAA+D;QAC/D,2CAA2C;QAC3C,+CAA+C,CAChD,CAAC;AACJ,CAAC;AAKD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,6BAA6B,EAAE,MAAM,qCAAqC,CAAC;AACpF,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,SAAS,mBAAmB;IAC1B,OAAO;QACL,GAAG,EAAE,IAAI,eAAe,EAAE;QAC1B,aAAa,EAAE,IAAI,wBAAwB,EAAE;QAC7C,OAAO,EAAE,IAAI,mBAAmB,EAAE;QAClC,KAAK,EAAE,IAAI,iBAAiB,EAAE;QAC9B,OAAO,EAAE,IAAI,mBAAmB,EAAE;QAClC,KAAK,EAAE,IAAI,iBAAiB,EAAE;QAC9B,EAAE,EAAE,IAAI,cAAc,EAAE;QACxB,KAAK,EAAE,IAAI,iBAAiB,EAAE;QAC9B,EAAE,EAAE,IAAI,uBAAuB,EAAE;QACjC,WAAW,EAAE,IAAI,uBAAuB,EAAE;QAC1C,KAAK,EAAE,IAAI,iBAAiB,EAAE;QAC9B,YAAY,EAAE,IAAI,wBAAwB,EAAE;QAC5C,MAAM,EAAE,IAAI,iBAAiB,EAAE;QAC/B,SAAS,EAAE,IAAI,6BAA6B,EAAE;QAC9C,SAAS,EAAE,IAAI,qBAAqB,EAAE;QACtC,QAAQ,EAAE,IAAI,mBAAmB,EAAE;QACnC,KAAK,EAAE,IAAI,mBAAmB,EAAE;QAChC,WAAW,EAAE,IAAI,uBAAuB,EAAE;QAC1C,UAAU,EAAE,IAAI,sBAAsB,EAAE;QACxC,IAAI,EAAE,IAAI,eAAe,EAAE;QAC3B,KAAK,EAAE,IAAI,iBAAiB,EAAE;QAC9B,oEAAoE;QACpE,uEAAuE;QACvE,qEAAqE;QACrE,4CAA4C;QAC5C,OAAO,EAAE,IAAI,kBAAkB,EAAE;KAClC,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,2BAA2B;IAClC,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO;IAC1C,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,KAAmB,EAAE,EAAE;QACzD,MAAM,IAAI,GAAI,KAA+B,CAAC,IAAI,CAAC;QACnD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,OAAO;QAC9C,MAAM,CAAC,GAAG,IAA6C,CAAC;QACxD,IAAI,CAAC,CAAC,IAAI,KAAK,sBAAsB;YAAE,OAAO;QAC9C,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;QAC1B,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;YAAE,OAAO;QACpD,IAAK,OAAiC,CAAC,OAAO,KAAK,SAAS;YAAE,OAAO;QACrE,YAAY,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACL,CAAC;AAED,2BAA2B,EAAE,CAAC;AAC9B,6BAA6B,EAAE,CAAC;AAEhC;;;;GAIG;AACH,IAAI,iBAAgD,CAAC;AAErD;;;;;GAKG;AACH,SAAS,6BAA6B;IACpC,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO;IAC1C,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAO,KAAmB,EAAE,EAAE;QAC/D,MAAM,IAAI,GAAI,KAA+B,CAAC,IAAI,CAAC;QACnD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,OAAO;QAC9C,MAAM,CAAC,GAAG,IAAkE,CAAC;QAC7E,IAAI,CAAC,CAAC,IAAI,KAAK,oBAAoB;YAAE,OAAO;QAC5C,MAAM,SAAS,GAAG,CAAC,CAAC,SAA+B,CAAC;QACpD,MAAM,OAAO,GAAG,CAAC,CAAC,OAAsD,CAAC;QACzE,MAAM,MAAM,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,CAAC;QAC3B,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,OAAO,MAAM,KAAK,QAAQ;YAAE,OAAO;QACxE,IAAI,CAAC,iBAAiB;YAAE,OAAO;QAC/B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YACnE,MAAM,CAAC,MAAM,CAAC,WAAW,CACvB,EAAE,IAAI,EAAE,6BAA6B,EAAE,SAAS,EAAE,MAAM,EAAE,EAC1D,GAAG,CACJ,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,MAAM,CAAC,WAAW,CACvB;gBACE,IAAI,EAAE,6BAA6B;gBACnC,SAAS;gBACT,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;aACxD,EACD,GAAG,CACJ,CAAC;QACJ,CAAC;IACH,CAAC,CAAA,CAAC,CAAC;AACL,CAAC;AAED,qEAAqE;AACrE,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;IAC9D,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAa,EAAE,EAAE;;QACjD,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;YACxB,IAAI,EAAE,4BAA4B;YAClC,OAAO,EAAE;gBACP,IAAI,EAAE,iBAAiB;gBACvB,eAAe,EAAE,MAAA,MAAA,CAAC,CAAC,KAAK,0CAAE,KAAK,mCAAI,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;aACrD;SACF,EAAE,GAAG,CAAC,CAAC;IACV,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,gBAAgB,CAAC,oBAAoB,EAAE,CAAC,CAAwB,EAAE,EAAE;QACzE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;YACxB,IAAI,EAAE,4BAA4B;YAClC,OAAO,EAAE;gBACP,IAAI,EAAE,4BAA4B;gBAClC,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;aAClC;SACF,EAAE,GAAG,CAAC,CAAC;IACV,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,OAAO,gBAAiB,SAAQ,oBAAoB;IACxD;QACE,MAAM,OAAO,GAAG,mBAAmB,EAAE,CAAC;QACtC,KAAK,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;QACnC,wDAAwD;QACxD,iEAAiE;QACjE,iBAAiB,GAAG,OAAO,CAAC,KAAsC,CAAC;IACrE,CAAC;IAEkB,oBAAoB,CAAC,EAAU;QAChD,2DAA2D;QAC3D,+DAA+D;QAC/D,mEAAmE;QACnE,qEAAqE;QACrE,YAAY,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IAClC,CAAC;IAED;;;;;;;;;;;OAWG;IACH,SAAS,CACP,EAAU,EACV,OAAqE;QAErE,OAAO,YAAY,CAAC,SAAS,CAC3B,EAAE,EACF,OAAiF,CAClF,CAAC;IACJ,CAAC;CACF;AAED,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEnE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE3D,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC"}
|
package/dist/worker.test.js
CHANGED
package/dist/worker.test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.test.js","sourceRoot":"","sources":["../src/worker.test.ts"],"names":[],"mappings":";;;;;;;;;AAAA,gCAAgC;AAChC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAEzE,MAAM,uBAAuB,GAAG;IAC9B,KAAK;IACL,eAAe;IACf,SAAS;IACT,OAAO;IACP,SAAS;IACT,OAAO;IACP,IAAI;IACJ,OAAO;IACP,IAAI;IACJ,WAAW;IACX,aAAa;IACb,OAAO;IACP,cAAc;IACd,QAAQ;IACR,WAAW;IACX,UAAU;IACV,OAAO;IACP,SAAS;IACT,aAAa;IACb,YAAY;
|
|
1
|
+
{"version":3,"file":"worker.test.js","sourceRoot":"","sources":["../src/worker.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker.tools.test.d.ts","sourceRoot":"","sources":["../src/worker.tools.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
/** @vitest-environment jsdom */
|
|
11
|
+
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
|
|
12
|
+
function setRole(role) {
|
|
13
|
+
if (role === undefined) {
|
|
14
|
+
delete window.__ASYAR_ROLE__;
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
window.__ASYAR_ROLE__ = role;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
describe('worker proxy bag — tools service', () => {
|
|
21
|
+
beforeEach(() => {
|
|
22
|
+
vi.resetModules();
|
|
23
|
+
setRole('worker');
|
|
24
|
+
});
|
|
25
|
+
afterEach(() => {
|
|
26
|
+
setRole(undefined);
|
|
27
|
+
});
|
|
28
|
+
it('ExtensionContext.proxies exposes a tools entry', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
29
|
+
const { ExtensionContext } = yield import('./worker');
|
|
30
|
+
const ctx = new ExtensionContext();
|
|
31
|
+
expect(ctx.proxies.tools).toBeDefined();
|
|
32
|
+
}));
|
|
33
|
+
it('tools entry has registerTool method', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
34
|
+
const { ExtensionContext } = yield import('./worker');
|
|
35
|
+
const ctx = new ExtensionContext();
|
|
36
|
+
expect(typeof ctx.proxies.tools.registerTool).toBe('function');
|
|
37
|
+
}));
|
|
38
|
+
it('tools entry has unregisterTool method', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
39
|
+
const { ExtensionContext } = yield import('./worker');
|
|
40
|
+
const ctx = new ExtensionContext();
|
|
41
|
+
expect(typeof ctx.proxies.tools.unregisterTool).toBe('function');
|
|
42
|
+
}));
|
|
43
|
+
it('tools entry has listTools method', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
44
|
+
const { ExtensionContext } = yield import('./worker');
|
|
45
|
+
const ctx = new ExtensionContext();
|
|
46
|
+
expect(typeof ctx.proxies.tools.listTools).toBe('function');
|
|
47
|
+
}));
|
|
48
|
+
});
|
|
49
|
+
// ── Item 7: worker dispatches asyar:tools:invoke to ToolsServiceProxy ─────────
|
|
50
|
+
describe('worker — asyar:tools:invoke dispatch', () => {
|
|
51
|
+
beforeEach(() => {
|
|
52
|
+
vi.resetModules();
|
|
53
|
+
setRole('worker');
|
|
54
|
+
});
|
|
55
|
+
afterEach(() => {
|
|
56
|
+
setRole(undefined);
|
|
57
|
+
vi.restoreAllMocks();
|
|
58
|
+
});
|
|
59
|
+
it('dispatches asyar:tools:invoke to ToolsServiceProxy.invokeHandler and posts response', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
60
|
+
// Patch the MessageBroker before importing the worker so registerTool
|
|
61
|
+
// resolves immediately without a real host round-trip.
|
|
62
|
+
const { messageBroker } = yield import('./ipc/MessageBroker');
|
|
63
|
+
vi.spyOn(messageBroker, 'invoke').mockResolvedValue(undefined);
|
|
64
|
+
const { ExtensionContext } = yield import('./worker');
|
|
65
|
+
const ctx = new ExtensionContext();
|
|
66
|
+
ctx.setExtensionId('com.example.test');
|
|
67
|
+
const handler = vi.fn().mockResolvedValue({ result: 'ok' });
|
|
68
|
+
const tool = {
|
|
69
|
+
id: 't1',
|
|
70
|
+
name: 'T1',
|
|
71
|
+
description: 'Test tool',
|
|
72
|
+
parameters: {},
|
|
73
|
+
};
|
|
74
|
+
// Register the handler — broker.invoke is mocked so this resolves fast.
|
|
75
|
+
yield ctx.proxies.tools.registerTool(tool, handler);
|
|
76
|
+
const postedMessages = [];
|
|
77
|
+
vi.spyOn(window.parent, 'postMessage').mockImplementation((msg) => {
|
|
78
|
+
postedMessages.push(msg);
|
|
79
|
+
});
|
|
80
|
+
// Simulate the host posting an asyar:tools:invoke envelope.
|
|
81
|
+
window.dispatchEvent(new MessageEvent('message', {
|
|
82
|
+
data: {
|
|
83
|
+
type: 'asyar:tools:invoke',
|
|
84
|
+
messageId: 'm1',
|
|
85
|
+
payload: { id: 't1', args: { x: 7 } },
|
|
86
|
+
},
|
|
87
|
+
}));
|
|
88
|
+
// Allow microtasks to flush.
|
|
89
|
+
yield new Promise((r) => setTimeout(r, 20));
|
|
90
|
+
// RED: handler not called because the worker has no asyar:tools:invoke listener yet.
|
|
91
|
+
expect(handler).toHaveBeenCalledWith({ x: 7 });
|
|
92
|
+
const response = postedMessages.find((m) => m !== null &&
|
|
93
|
+
typeof m === 'object' &&
|
|
94
|
+
m.type === 'asyar:tools:invoke:response' &&
|
|
95
|
+
m.messageId === 'm1');
|
|
96
|
+
// RED: no response posted because no listener dispatched to handler.
|
|
97
|
+
expect(response).toBeDefined();
|
|
98
|
+
}));
|
|
99
|
+
});
|
|
100
|
+
//# sourceMappingURL=worker.tools.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker.tools.test.js","sourceRoot":"","sources":["../src/worker.tools.test.ts"],"names":[],"mappings":";;;;;;;;;AAAA,gCAAgC;AAChC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAEzE,SAAS,OAAO,CAAC,IAAwB;IACvC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAQ,MAAc,CAAC,cAAc,CAAC;IACxC,CAAC;SAAM,CAAC;QACL,MAAc,CAAC,cAAc,GAAG,IAAI,CAAC;IACxC,CAAC;AACH,CAAC;AAED,QAAQ,CAAC,kCAAkC,EAAE,GAAG,EAAE;IAChD,UAAU,CAAC,GAAG,EAAE;QACd,EAAE,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,CAAC,QAAQ,CAAC,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,CAAC,SAAS,CAAC,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAS,EAAE;QAC9D,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;QACtD,MAAM,GAAG,GAAG,IAAI,gBAAgB,EAAE,CAAC;QACnC,MAAM,CAAE,GAAG,CAAC,OAAe,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;IACnD,CAAC,CAAA,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,GAAS,EAAE;QACnD,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;QACtD,MAAM,GAAG,GAAG,IAAI,gBAAgB,EAAE,CAAC;QACnC,MAAM,CAAC,OAAQ,GAAG,CAAC,OAAe,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC1E,CAAC,CAAA,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAS,EAAE;QACrD,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;QACtD,MAAM,GAAG,GAAG,IAAI,gBAAgB,EAAE,CAAC;QACnC,MAAM,CAAC,OAAQ,GAAG,CAAC,OAAe,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC5E,CAAC,CAAA,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,GAAS,EAAE;QAChD,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;QACtD,MAAM,GAAG,GAAG,IAAI,gBAAgB,EAAE,CAAC;QACnC,MAAM,CAAC,OAAQ,GAAG,CAAC,OAAe,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACvE,CAAC,CAAA,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,iFAAiF;AAEjF,QAAQ,CAAC,sCAAsC,EAAE,GAAG,EAAE;IACpD,UAAU,CAAC,GAAG,EAAE;QACd,EAAE,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,CAAC,QAAQ,CAAC,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,CAAC,SAAS,CAAC,CAAC;QACnB,EAAE,CAAC,eAAe,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qFAAqF,EAAE,GAAS,EAAE;QACnG,sEAAsE;QACtE,uDAAuD;QACvD,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;QAC9D,EAAE,CAAC,KAAK,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC,iBAAiB,CAAC,SAAkB,CAAC,CAAC;QAExE,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;QACtD,MAAM,GAAG,GAAG,IAAI,gBAAgB,EAAE,CAAC;QACnC,GAAG,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;QAEvC,MAAM,OAAO,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5D,MAAM,IAAI,GAAG;YACX,EAAE,EAAE,IAAI;YACR,IAAI,EAAE,IAAI;YACV,WAAW,EAAE,WAAW;YACxB,UAAU,EAAE,EAAE;SACf,CAAC;QACF,wEAAwE;QACxE,MAAO,GAAG,CAAC,OAAe,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAE7D,MAAM,cAAc,GAAc,EAAE,CAAC;QACrC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,kBAAkB,CAAC,CAAC,GAAY,EAAE,EAAE;YACzE,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEH,4DAA4D;QAC5D,MAAM,CAAC,aAAa,CAClB,IAAI,YAAY,CAAC,SAAS,EAAE;YAC1B,IAAI,EAAE;gBACJ,IAAI,EAAE,oBAAoB;gBAC1B,SAAS,EAAE,IAAI;gBACf,OAAO,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;aACtC;SACF,CAAC,CACH,CAAC;QAEF,6BAA6B;QAC7B,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAE5C,qFAAqF;QACrF,MAAM,CAAC,OAAO,CAAC,CAAC,oBAAoB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAE/C,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAClC,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,KAAK,IAAI;YACV,OAAO,CAAC,KAAK,QAAQ;YACpB,CAAwB,CAAC,IAAI,KAAK,6BAA6B;YAC/D,CAA6B,CAAC,SAAS,KAAK,IAAI,CACpD,CAAC;QACF,qEAAqE;QACrE,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;IACjC,CAAC,CAAA,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|