@ai-ecoverse/slicc-kernel 1.65.1 → 1.66.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/README.md +26 -10
- package/dist/driver-worker.js +1 -1
- package/dist/driver-worker.js.map +1 -1
- package/dist/index.js +53 -22
- package/dist/index.js.map +2 -2
- package/dist/kernel-worker.js +780 -183
- package/dist/kernel-worker.js.map +4 -4
- package/dist/node-driver-worker.js +1 -1
- package/dist/node-driver-worker.js.map +1 -1
- package/dist/node-process-worker.js +6 -0
- package/dist/node-process-worker.js.map +2 -2
- package/dist/node.js +747 -174
- package/dist/node.js.map +4 -4
- package/dist/process-worker.js +6 -0
- package/dist/process-worker.js.map +2 -2
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -1095,7 +1095,7 @@ var RemoteTransport = class {
|
|
|
1095
1095
|
};
|
|
1096
1096
|
|
|
1097
1097
|
// src/client/protocol.ts
|
|
1098
|
-
var PROTOCOL = [1,
|
|
1098
|
+
var PROTOCOL = [1, 9];
|
|
1099
1099
|
function locksOf(scope = globalThis) {
|
|
1100
1100
|
const locks = scope.navigator?.locks;
|
|
1101
1101
|
return typeof locks?.request === "function" ? locks : void 0;
|
|
@@ -1799,6 +1799,7 @@ function initCall(options, transport) {
|
|
|
1799
1799
|
...options.hostname !== void 0 ? { hostname: options.hostname } : {},
|
|
1800
1800
|
...options.users !== void 0 ? { users: options.users } : {},
|
|
1801
1801
|
...options.onDenial ? { denials: true } : {},
|
|
1802
|
+
...options.approve ? { approve: true } : {},
|
|
1802
1803
|
...options.processMounts !== void 0 ? {
|
|
1803
1804
|
processMounts: typeof options.processMounts === "function" ? "ask" : options.processMounts
|
|
1804
1805
|
} : {}
|
|
@@ -1853,6 +1854,38 @@ async function mountPolicy(options, worker, { id, req }) {
|
|
|
1853
1854
|
}
|
|
1854
1855
|
worker.postMessage({ mountAllowed: { id, allowed } });
|
|
1855
1856
|
}
|
|
1857
|
+
function approver(approve, worker) {
|
|
1858
|
+
const asked = /* @__PURE__ */ new Map();
|
|
1859
|
+
const handlers = {
|
|
1860
|
+
handle(data) {
|
|
1861
|
+
if ("sudoAsk" in data) void handlers.ask(data.sudoAsk);
|
|
1862
|
+
else if ("sudoAbort" in data) handlers.abort(data.sudoAbort);
|
|
1863
|
+
else return false;
|
|
1864
|
+
return true;
|
|
1865
|
+
},
|
|
1866
|
+
async ask(req) {
|
|
1867
|
+
const control = new AbortController();
|
|
1868
|
+
asked.set(req.id, control);
|
|
1869
|
+
let answer = "deny";
|
|
1870
|
+
try {
|
|
1871
|
+
answer = await approve?.(req, { signal: control.signal });
|
|
1872
|
+
} catch {
|
|
1873
|
+
}
|
|
1874
|
+
asked.delete(req.id);
|
|
1875
|
+
if (control.signal.aborted) return;
|
|
1876
|
+
worker.postMessage({ sudoAnswer: { id: req.id, answer } });
|
|
1877
|
+
},
|
|
1878
|
+
abort({ id, reason }) {
|
|
1879
|
+
asked.get(id)?.abort(reason);
|
|
1880
|
+
asked.delete(id);
|
|
1881
|
+
},
|
|
1882
|
+
close() {
|
|
1883
|
+
for (const control of asked.values()) control.abort("withdrawn");
|
|
1884
|
+
asked.clear();
|
|
1885
|
+
}
|
|
1886
|
+
};
|
|
1887
|
+
return handlers;
|
|
1888
|
+
}
|
|
1856
1889
|
async function createKernel(options = {}) {
|
|
1857
1890
|
if (!globalThis.crossOriginIsolated) throw new Error(ISOLATION);
|
|
1858
1891
|
if (options.hostname !== void 0 && !isHostname(options.hostname)) {
|
|
@@ -1865,9 +1898,11 @@ async function createKernel(options = {}) {
|
|
|
1865
1898
|
let failure3;
|
|
1866
1899
|
const dials = dialer((req) => call(req));
|
|
1867
1900
|
const cdp = cdpBridge(options.cdp);
|
|
1901
|
+
const approvals = approver(options.approve, worker);
|
|
1868
1902
|
const fail = (error) => {
|
|
1869
1903
|
dials.reset();
|
|
1870
1904
|
cdp.close();
|
|
1905
|
+
approvals.close();
|
|
1871
1906
|
failure3 = error;
|
|
1872
1907
|
bridge?.close();
|
|
1873
1908
|
uplinks?.close();
|
|
@@ -1902,27 +1937,23 @@ async function createKernel(options = {}) {
|
|
|
1902
1937
|
source,
|
|
1903
1938
|
insert: async () => void await call({ op: "insert", target, source, handle: await chosen(handle) })
|
|
1904
1939
|
});
|
|
1905
|
-
worker.addEventListener(
|
|
1906
|
-
"
|
|
1907
|
-
(
|
|
1908
|
-
|
|
1909
|
-
|
|
1910
|
-
|
|
1911
|
-
|
|
1912
|
-
|
|
1913
|
-
|
|
1914
|
-
|
|
1915
|
-
|
|
1916
|
-
|
|
1917
|
-
|
|
1918
|
-
|
|
1919
|
-
|
|
1920
|
-
|
|
1921
|
-
|
|
1922
|
-
if (data.error !== void 0) call2.reject(failed(data.error, data.code));
|
|
1923
|
-
else call2.resolve(data.result);
|
|
1924
|
-
}
|
|
1925
|
-
);
|
|
1940
|
+
worker.addEventListener("message", ({ data }) => {
|
|
1941
|
+
if ("denial" in data) return void options.onDenial?.(data.denial);
|
|
1942
|
+
if (approvals.handle(data)) return;
|
|
1943
|
+
if ("net" in data) return bridge?.answer(data);
|
|
1944
|
+
if ("uplink" in data) return uplinks?.answer(data);
|
|
1945
|
+
if ("cdpOpen" in data) return cdp.open(data);
|
|
1946
|
+
if ("mountPolicy" in data) return void policy(data.mountPolicy);
|
|
1947
|
+
if ("medium" in data) return pendingMedium(data.medium);
|
|
1948
|
+
if ("hostfs" in data) return void grantHostfs(data.hostfs);
|
|
1949
|
+
const call2 = pending.get(data.id);
|
|
1950
|
+
if (!call2) return;
|
|
1951
|
+
if (data.fd !== void 0) return call2.output?.(data.fd, data.bytes);
|
|
1952
|
+
if (data.started !== void 0) return call2.started?.(data.started);
|
|
1953
|
+
pending.delete(data.id);
|
|
1954
|
+
if (data.error !== void 0) call2.reject(failed(data.error, data.code));
|
|
1955
|
+
else call2.resolve(data.result);
|
|
1956
|
+
});
|
|
1926
1957
|
worker.addEventListener("error", (event) => {
|
|
1927
1958
|
event.preventDefault();
|
|
1928
1959
|
fail(new Error(`slicc-kernel worker failed: ${event.message}`));
|