@inhuman.tools/harness-sdk 0.0.0-stage → 0.2.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/LICENSE.md +7 -0
- package/dist/client-agents-tree.d.ts +123 -0
- package/dist/client-agents-tree.d.ts.map +1 -0
- package/dist/client-agents-tree.js +504 -0
- package/dist/client-agents-tree.js.map +1 -0
- package/dist/client-agents.d.ts +50 -0
- package/dist/client-agents.d.ts.map +1 -0
- package/dist/client-agents.js +299 -0
- package/dist/client-agents.js.map +1 -0
- package/dist/client.d.ts +89 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +589 -0
- package/dist/client.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/launch/continue-pick.d.ts +17 -0
- package/dist/launch/continue-pick.d.ts.map +1 -0
- package/dist/launch/continue-pick.js +20 -0
- package/dist/launch/continue-pick.js.map +1 -0
- package/dist/launch/index.d.ts +6 -0
- package/dist/launch/index.d.ts.map +1 -0
- package/dist/launch/index.js +6 -0
- package/dist/launch/index.js.map +1 -0
- package/dist/launch/model-flags.d.ts +44 -0
- package/dist/launch/model-flags.d.ts.map +1 -0
- package/dist/launch/model-flags.js +216 -0
- package/dist/launch/model-flags.js.map +1 -0
- package/dist/launch/streams.d.ts +15 -0
- package/dist/launch/streams.d.ts.map +1 -0
- package/dist/launch/streams.js +2 -0
- package/dist/launch/streams.js.map +1 -0
- package/dist/launch/term-continue.d.ts +13 -0
- package/dist/launch/term-continue.d.ts.map +1 -0
- package/dist/launch/term-continue.js +17 -0
- package/dist/launch/term-continue.js.map +1 -0
- package/dist/launch/term-session-key.d.ts +8 -0
- package/dist/launch/term-session-key.d.ts.map +1 -0
- package/dist/launch/term-session-key.js +76 -0
- package/dist/launch/term-session-key.js.map +1 -0
- package/dist/observable-abort-signal.d.ts +7 -0
- package/dist/observable-abort-signal.d.ts.map +1 -0
- package/dist/observable-abort-signal.js +56 -0
- package/dist/observable-abort-signal.js.map +1 -0
- package/dist/open-external.d.ts +2 -0
- package/dist/open-external.d.ts.map +1 -0
- package/dist/open-external.js +24 -0
- package/dist/open-external.js.map +1 -0
- package/dist/paths.d.ts +7 -0
- package/dist/paths.d.ts.map +1 -0
- package/dist/paths.js +16 -0
- package/dist/paths.js.map +1 -0
- package/dist/text/agent-cover.d.ts +43 -0
- package/dist/text/agent-cover.d.ts.map +1 -0
- package/dist/text/agent-cover.js +123 -0
- package/dist/text/agent-cover.js.map +1 -0
- package/dist/text/format-shell.d.ts +5 -0
- package/dist/text/format-shell.d.ts.map +1 -0
- package/dist/text/format-shell.js +53 -0
- package/dist/text/format-shell.js.map +1 -0
- package/dist/text/identity.d.ts +67 -0
- package/dist/text/identity.d.ts.map +1 -0
- package/dist/text/identity.js +433 -0
- package/dist/text/identity.js.map +1 -0
- package/dist/text/index.d.ts +14 -0
- package/dist/text/index.d.ts.map +1 -0
- package/dist/text/index.js +15 -0
- package/dist/text/index.js.map +1 -0
- package/dist/text/liveness.d.ts +62 -0
- package/dist/text/liveness.d.ts.map +1 -0
- package/dist/text/liveness.js +270 -0
- package/dist/text/liveness.js.map +1 -0
- package/dist/text/mcp-identity.d.ts +25 -0
- package/dist/text/mcp-identity.d.ts.map +1 -0
- package/dist/text/mcp-identity.js +133 -0
- package/dist/text/mcp-identity.js.map +1 -0
- package/dist/text/pretty-identity.d.ts +15 -0
- package/dist/text/pretty-identity.d.ts.map +1 -0
- package/dist/text/pretty-identity.js +112 -0
- package/dist/text/pretty-identity.js.map +1 -0
- package/dist/text/sugarcoat.d.ts +29 -0
- package/dist/text/sugarcoat.d.ts.map +1 -0
- package/dist/text/sugarcoat.js +148 -0
- package/dist/text/sugarcoat.js.map +1 -0
- package/dist/text/unwrap-program.d.ts +2 -0
- package/dist/text/unwrap-program.d.ts.map +1 -0
- package/dist/text/unwrap-program.js +137 -0
- package/dist/text/unwrap-program.js.map +1 -0
- package/dist/text/work-text.d.ts +72 -0
- package/dist/text/work-text.d.ts.map +1 -0
- package/dist/text/work-text.js +337 -0
- package/dist/text/work-text.js.map +1 -0
- package/dist/transport/unix.d.ts +19 -0
- package/dist/transport/unix.d.ts.map +1 -0
- package/dist/transport/unix.js +68 -0
- package/dist/transport/unix.js.map +1 -0
- package/package.json +79 -3
- package/src/client-agents-tree.ts +642 -0
- package/src/client-agents.ts +230 -0
- package/src/client.ts +686 -0
- package/src/index.ts +27 -0
- package/src/launch/continue-pick.ts +28 -0
- package/src/launch/index.ts +5 -0
- package/src/launch/model-flags.ts +273 -0
- package/src/launch/streams.ts +13 -0
- package/src/launch/term-continue.ts +31 -0
- package/src/launch/term-session-key.ts +70 -0
- package/src/observable-abort-signal.ts +66 -0
- package/src/open-external.ts +22 -0
- package/src/paths.ts +20 -0
- package/src/text/agent-cover.ts +136 -0
- package/src/text/format-shell.ts +52 -0
- package/src/text/identity.ts +473 -0
- package/src/text/index.ts +29 -0
- package/src/text/liveness.ts +322 -0
- package/src/text/mcp-identity.ts +148 -0
- package/src/text/pretty-identity.ts +120 -0
- package/src/text/sugarcoat.ts +165 -0
- package/src/text/unwrap-program.ts +133 -0
- package/src/text/work-text.ts +388 -0
- package/src/transport/unix.ts +84 -0
- package/README.md +0 -3
package/dist/client.js
ADDED
|
@@ -0,0 +1,589 @@
|
|
|
1
|
+
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
|
|
2
|
+
var useValue = arguments.length > 2;
|
|
3
|
+
for (var i = 0; i < initializers.length; i++) {
|
|
4
|
+
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
|
|
5
|
+
}
|
|
6
|
+
return useValue ? value : void 0;
|
|
7
|
+
};
|
|
8
|
+
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
|
|
9
|
+
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
|
|
10
|
+
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
|
|
11
|
+
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
|
|
12
|
+
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
|
|
13
|
+
var _, done = false;
|
|
14
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
15
|
+
var context = {};
|
|
16
|
+
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
|
|
17
|
+
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
|
|
18
|
+
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
|
|
19
|
+
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
|
|
20
|
+
if (kind === "accessor") {
|
|
21
|
+
if (result === void 0) continue;
|
|
22
|
+
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
|
|
23
|
+
if (_ = accept(result.get)) descriptor.get = _;
|
|
24
|
+
if (_ = accept(result.set)) descriptor.set = _;
|
|
25
|
+
if (_ = accept(result.init)) initializers.unshift(_);
|
|
26
|
+
}
|
|
27
|
+
else if (_ = accept(result)) {
|
|
28
|
+
if (kind === "field") initializers.unshift(_);
|
|
29
|
+
else descriptor[key] = _;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
if (target) Object.defineProperty(target, contextIn.name, descriptor);
|
|
33
|
+
done = true;
|
|
34
|
+
};
|
|
35
|
+
var __setFunctionName = (this && this.__setFunctionName) || function (f, name, prefix) {
|
|
36
|
+
if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : "";
|
|
37
|
+
return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name });
|
|
38
|
+
};
|
|
39
|
+
import { randomUUID } from "node:crypto";
|
|
40
|
+
import { realpath } from "node:fs/promises";
|
|
41
|
+
import { DefaultedMap } from "@here.build/collections";
|
|
42
|
+
import { trace } from "@inhuman.tools/harness-diagnostics";
|
|
43
|
+
import { KERNEL_DOC_GUID, KernelPlexus, ProjectPlexus, publishKernelSeat, } from "@inhuman.tools/harness-model/kernel";
|
|
44
|
+
import { CallJob, delegatesPermissionMode, deskPermissionSnap, permissionDeskSessionId, ProgrammaticJob, projectWorkerPermissions, SessionPlexus, } from "@inhuman.tools/harness-model/session";
|
|
45
|
+
import { awarenessBytes, bindJsonRpc, bindProviderAwareness, destroyProvider, encodeQueryAwareness, MESSAGE_AWARENESS, MESSAGE_QUERY_AWARENESS, peekMessageType, } from "@inhuman.tools/harness-peer";
|
|
46
|
+
import { revalidationDemandRefFromSpec, collectRevalidationDemandRefs, publishRevalidationDemand, publishRevalidationDemandFocus, } from "@inhuman.tools/plexus-expectations";
|
|
47
|
+
import { comparer, computed, reaction } from "mobx";
|
|
48
|
+
import * as Y from "yjs";
|
|
49
|
+
import { ClientAgent } from "./client-agents.js";
|
|
50
|
+
import { daemonSocketPath } from "./paths.js";
|
|
51
|
+
import { openUnixRoom, RoomNotFound } from "./transport/unix.js";
|
|
52
|
+
function step(message) {
|
|
53
|
+
trace("harness:client", message);
|
|
54
|
+
}
|
|
55
|
+
/** sessionId-only upgrade 404. Daemon-down is not this. */
|
|
56
|
+
export class RestoreNotFound extends Error {
|
|
57
|
+
sessionId;
|
|
58
|
+
constructor(sessionId) {
|
|
59
|
+
super(`session not found: ${sessionId}`);
|
|
60
|
+
this.sessionId = sessionId;
|
|
61
|
+
this.name = "RestoreNotFound";
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
let Client = (() => {
|
|
65
|
+
var _a;
|
|
66
|
+
var _b, _c;
|
|
67
|
+
let _instanceExtraInitializers = [];
|
|
68
|
+
let _get_botsRoster_decorators;
|
|
69
|
+
let _get_agentCalls_decorators;
|
|
70
|
+
let _get_programs_decorators;
|
|
71
|
+
let _private_get_workerIds_decorators;
|
|
72
|
+
let _private_get_workerIds_descriptor;
|
|
73
|
+
let _get_agents_decorators;
|
|
74
|
+
let _get_sessionAgents_decorators;
|
|
75
|
+
let _get_projectAgents_decorators;
|
|
76
|
+
let _get_globalAgents_decorators;
|
|
77
|
+
let _get_oneShotAgents_decorators;
|
|
78
|
+
return class Client {
|
|
79
|
+
static {
|
|
80
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
|
|
81
|
+
__esDecorate(this, null, _get_botsRoster_decorators, { kind: "getter", name: "botsRoster", static: false, private: false, access: { has: obj => "botsRoster" in obj, get: obj => obj.botsRoster }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
82
|
+
__esDecorate(this, null, _get_agentCalls_decorators, { kind: "getter", name: "agentCalls", static: false, private: false, access: { has: obj => "agentCalls" in obj, get: obj => obj.agentCalls }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
83
|
+
__esDecorate(this, null, _get_programs_decorators, { kind: "getter", name: "programs", static: false, private: false, access: { has: obj => "programs" in obj, get: obj => obj.programs }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
84
|
+
__esDecorate(this, _private_get_workerIds_descriptor = { get: __setFunctionName(function () {
|
|
85
|
+
const ids = [];
|
|
86
|
+
const seen = new Set();
|
|
87
|
+
const add = (id) => {
|
|
88
|
+
if (id === "" || seen.has(id))
|
|
89
|
+
return;
|
|
90
|
+
seen.add(id);
|
|
91
|
+
ids.push(id);
|
|
92
|
+
};
|
|
93
|
+
for (const row of this.botsRoster)
|
|
94
|
+
add(row.sessionId);
|
|
95
|
+
for (const call of this.agentCalls) {
|
|
96
|
+
if (!call.completed)
|
|
97
|
+
add(call.workerSessionId.trim());
|
|
98
|
+
}
|
|
99
|
+
return ids;
|
|
100
|
+
}, "#workerIds", "get") }, _private_get_workerIds_decorators, { kind: "getter", name: "#workerIds", static: false, private: true, access: { has: obj => #workerIds in obj, get: obj => obj.#workerIds }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
101
|
+
__esDecorate(this, null, _get_agents_decorators, { kind: "getter", name: "agents", static: false, private: false, access: { has: obj => "agents" in obj, get: obj => obj.agents }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
102
|
+
__esDecorate(this, null, _get_sessionAgents_decorators, { kind: "getter", name: "sessionAgents", static: false, private: false, access: { has: obj => "sessionAgents" in obj, get: obj => obj.sessionAgents }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
103
|
+
__esDecorate(this, null, _get_projectAgents_decorators, { kind: "getter", name: "projectAgents", static: false, private: false, access: { has: obj => "projectAgents" in obj, get: obj => obj.projectAgents }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
104
|
+
__esDecorate(this, null, _get_globalAgents_decorators, { kind: "getter", name: "globalAgents", static: false, private: false, access: { has: obj => "globalAgents" in obj, get: obj => obj.globalAgents }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
105
|
+
__esDecorate(this, null, _get_oneShotAgents_decorators, { kind: "getter", name: "oneShotAgents", static: false, private: false, access: { has: obj => "oneShotAgents" in obj, get: obj => obj.oneShotAgents }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
106
|
+
if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
107
|
+
}
|
|
108
|
+
kernelPath = __runInitializers(this, _instanceExtraInitializers);
|
|
109
|
+
projectPath;
|
|
110
|
+
sessionId;
|
|
111
|
+
kernelPlexus;
|
|
112
|
+
projectPlexus;
|
|
113
|
+
sessionPlexus;
|
|
114
|
+
sessionProvider;
|
|
115
|
+
static start(kernelPath, projectPath, phase) {
|
|
116
|
+
return Client.#attach({ kernelPath, projectPath, phase });
|
|
117
|
+
}
|
|
118
|
+
static connect(kernelPath, projectPath, sessionId, phase) {
|
|
119
|
+
return Client.#attach({ kernelPath, projectPath, sessionId, phase });
|
|
120
|
+
}
|
|
121
|
+
static restore(kernelPath, sessionId, phase) {
|
|
122
|
+
return Client.#attach({ kernelPath, sessionId, restore: true, phase });
|
|
123
|
+
}
|
|
124
|
+
/** Kernel room only. Caller must `ensure()` the daemon first — except completion, which must not spawn. */
|
|
125
|
+
static async kernel(kernelPath, opts) {
|
|
126
|
+
step(`client kernel ${kernelPath}`);
|
|
127
|
+
const kernel = await realpath(kernelPath);
|
|
128
|
+
const socketPath = daemonSocketPath(kernel);
|
|
129
|
+
const providers = [];
|
|
130
|
+
const awarenessStops = [];
|
|
131
|
+
try {
|
|
132
|
+
const plexus = await Client.#open(socketPath, "kernel", {}, new Y.Doc({ guid: KERNEL_DOC_GUID }), (doc) => KernelPlexus.connect(doc), providers, awarenessStops, opts == null
|
|
133
|
+
? undefined
|
|
134
|
+
: {
|
|
135
|
+
reconnect: opts.reconnect,
|
|
136
|
+
syncTimeoutMs: opts.syncTimeoutMs,
|
|
137
|
+
}, opts?.awarenessWaitMs);
|
|
138
|
+
const provider = providers.at(-1);
|
|
139
|
+
if (provider == null)
|
|
140
|
+
throw new Error("client kernel: no provider");
|
|
141
|
+
const rpc = bindJsonRpc(provider);
|
|
142
|
+
return {
|
|
143
|
+
plexus,
|
|
144
|
+
request: (method, params) => rpc.request(method, params),
|
|
145
|
+
async [Symbol.asyncDispose]() {
|
|
146
|
+
rpc.rejectAll(new Error("kernel rpc disposed"));
|
|
147
|
+
for (const stop of awarenessStops.splice(0))
|
|
148
|
+
stop();
|
|
149
|
+
for (const item of providers.splice(0))
|
|
150
|
+
destroyProvider(item);
|
|
151
|
+
plexus.destroy();
|
|
152
|
+
},
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
catch (error) {
|
|
156
|
+
for (const stop of awarenessStops)
|
|
157
|
+
stop();
|
|
158
|
+
for (const provider of providers)
|
|
159
|
+
destroyProvider(provider);
|
|
160
|
+
throw error;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
/** sessionId-only upgrade. False on 404; other failures throw. */
|
|
164
|
+
static async sessionExists(kernelPath, sessionId) {
|
|
165
|
+
const kernel = await realpath(kernelPath);
|
|
166
|
+
const socketPath = daemonSocketPath(kernel);
|
|
167
|
+
const doc = new Y.Doc({ guid: `harness:session:${sessionId}` });
|
|
168
|
+
try {
|
|
169
|
+
const provider = await openUnixRoom(socketPath, "session", { sessionId }, doc, {
|
|
170
|
+
reconnect: false,
|
|
171
|
+
});
|
|
172
|
+
destroyProvider(provider);
|
|
173
|
+
doc.destroy();
|
|
174
|
+
return true;
|
|
175
|
+
}
|
|
176
|
+
catch (error) {
|
|
177
|
+
doc.destroy();
|
|
178
|
+
if (error instanceof RoomNotFound)
|
|
179
|
+
return false;
|
|
180
|
+
throw error;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
static async #attach(opts) {
|
|
184
|
+
const restore = opts.restore === true;
|
|
185
|
+
step(`client ${restore ? "restore" : opts.sessionId === undefined ? "start" : "connect"} ${opts.kernelPath}`);
|
|
186
|
+
const kernel = await realpath(opts.kernelPath);
|
|
187
|
+
const socketPath = daemonSocketPath(kernel);
|
|
188
|
+
step(`client sock ${socketPath}`);
|
|
189
|
+
const providers = [];
|
|
190
|
+
const awarenessStops = [];
|
|
191
|
+
try {
|
|
192
|
+
let project;
|
|
193
|
+
let session;
|
|
194
|
+
let sessionParams;
|
|
195
|
+
let unixOpts;
|
|
196
|
+
if (restore) {
|
|
197
|
+
session = opts.sessionId ?? "";
|
|
198
|
+
if (session === "")
|
|
199
|
+
throw new Error("client restore: missing sessionId");
|
|
200
|
+
sessionParams = { sessionId: session };
|
|
201
|
+
unixOpts = { reconnect: false };
|
|
202
|
+
project = "";
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
if (opts.projectPath == null)
|
|
206
|
+
throw new Error("client attach: missing projectPath");
|
|
207
|
+
project = await realpath(opts.projectPath);
|
|
208
|
+
session = opts.sessionId ?? randomUUID();
|
|
209
|
+
sessionParams = { path: project, sessionId: session };
|
|
210
|
+
}
|
|
211
|
+
opts.phase?.("syncing the session...");
|
|
212
|
+
const sessionPlexus = await Client.#open(socketPath, "session", sessionParams, new Y.Doc({ guid: `harness:session:${session}` }), (doc) => SessionPlexus.connect(doc), providers, awarenessStops, unixOpts);
|
|
213
|
+
if (restore) {
|
|
214
|
+
const path = sessionPlexus.root.path;
|
|
215
|
+
if (path === "")
|
|
216
|
+
throw new Error("client restore: session has no path");
|
|
217
|
+
project = await realpath(path);
|
|
218
|
+
}
|
|
219
|
+
const sessionProvider = providers.at(-1) ?? null;
|
|
220
|
+
opts.phase?.("syncing the kernel...");
|
|
221
|
+
const kernelPlexus = await Client.#open(socketPath, "kernel", {}, new Y.Doc({ guid: KERNEL_DOC_GUID }), (doc) => KernelPlexus.connect(doc), providers, awarenessStops, undefined, undefined, () => opts.phase?.("reading kernel occupancy..."));
|
|
222
|
+
const kernelProvider = providers.at(-1) ?? null;
|
|
223
|
+
opts.phase?.("syncing the project...");
|
|
224
|
+
const projectPlexus = await Client.#open(socketPath, "project", { path: project }, new Y.Doc(), (doc) => ProjectPlexus.connect(doc), providers, awarenessStops);
|
|
225
|
+
const client = new Client(kernel, project, sessionPlexus.root.sessionId, kernelPlexus, projectPlexus, sessionPlexus, sessionProvider, kernelProvider);
|
|
226
|
+
client.#providers.push(...providers);
|
|
227
|
+
client.#awarenessStops.push(...awarenessStops);
|
|
228
|
+
return client;
|
|
229
|
+
}
|
|
230
|
+
catch (error) {
|
|
231
|
+
for (const stop of awarenessStops)
|
|
232
|
+
stop();
|
|
233
|
+
for (const provider of providers)
|
|
234
|
+
destroyProvider(provider);
|
|
235
|
+
if (restore && error instanceof RoomNotFound) {
|
|
236
|
+
throw new RestoreNotFound(opts.sessionId ?? "");
|
|
237
|
+
}
|
|
238
|
+
throw error;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
// HTTPServer upgrades only after the host is ready. y-websocket starts the handshake.
|
|
242
|
+
static async #open(socketPath, room, params, doc, attach, providers, awarenessStops, unixOptions, awarenessWaitMs, onAwareness) {
|
|
243
|
+
step(`client sync ${room}`);
|
|
244
|
+
const provider = await openUnixRoom(socketPath, room, params, doc, unixOptions);
|
|
245
|
+
providers.push(provider);
|
|
246
|
+
step(`client synced ${room}`);
|
|
247
|
+
const instance = attach(doc);
|
|
248
|
+
const hub = instance.awareness;
|
|
249
|
+
if (hub !== undefined) {
|
|
250
|
+
awarenessStops.push(bindProviderAwareness(hub, provider));
|
|
251
|
+
if (room === "kernel") {
|
|
252
|
+
onAwareness?.();
|
|
253
|
+
await awaitAwarenessDump(provider, awarenessWaitMs ?? 2000);
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
return instance;
|
|
257
|
+
}
|
|
258
|
+
#providers = [];
|
|
259
|
+
#awarenessStops = [];
|
|
260
|
+
#rpc;
|
|
261
|
+
#kernelRpc;
|
|
262
|
+
#attentionStop = null;
|
|
263
|
+
#revalidationDemandFocusStop = null;
|
|
264
|
+
/** Intern table for `ClientAgent` rows. Not observable. */
|
|
265
|
+
#agents = new DefaultedMap((id) => new ClientAgent(this, id));
|
|
266
|
+
/** Viewer intern for sneak-peek. Does not publish a kernel seat. */
|
|
267
|
+
#peek = null;
|
|
268
|
+
/** Approval intern for one-shot / session-scope workers. Does not seat. */
|
|
269
|
+
#ask = null;
|
|
270
|
+
#viewGen = { peek: 0, ask: 0 };
|
|
271
|
+
#askDeskStop = null;
|
|
272
|
+
constructor(kernelPath, projectPath, sessionId, kernelPlexus, projectPlexus, sessionPlexus, sessionProvider = null, kernelProvider = null) {
|
|
273
|
+
this.kernelPath = kernelPath;
|
|
274
|
+
this.projectPath = projectPath;
|
|
275
|
+
this.sessionId = sessionId;
|
|
276
|
+
this.kernelPlexus = kernelPlexus;
|
|
277
|
+
this.projectPlexus = projectPlexus;
|
|
278
|
+
this.sessionPlexus = sessionPlexus;
|
|
279
|
+
this.sessionProvider = sessionProvider;
|
|
280
|
+
this.#rpc = sessionProvider === null ? null : bindJsonRpc(sessionProvider);
|
|
281
|
+
this.#kernelRpc = kernelProvider === null ? null : bindJsonRpc(kernelProvider);
|
|
282
|
+
publishKernelSeat(this.kernelPlexus.awareness, sessionId);
|
|
283
|
+
}
|
|
284
|
+
get kernelRoot() {
|
|
285
|
+
return this.kernelPlexus.root;
|
|
286
|
+
}
|
|
287
|
+
get projectRoot() {
|
|
288
|
+
return this.projectPlexus.root;
|
|
289
|
+
}
|
|
290
|
+
get sessionRoot() {
|
|
291
|
+
return this.sessionPlexus.root;
|
|
292
|
+
}
|
|
293
|
+
/** Peeked worker tape. Null when no sneak-peek is interned. */
|
|
294
|
+
get peekPlexus() {
|
|
295
|
+
return this.#peek?.plexus ?? null;
|
|
296
|
+
}
|
|
297
|
+
/** Asking worker tape for the host cover. Null when none is interned. */
|
|
298
|
+
get askPlexus() {
|
|
299
|
+
return this.#ask?.plexus ?? null;
|
|
300
|
+
}
|
|
301
|
+
/** Local intern. Tests / already-open plexus. Does not own destroy. */
|
|
302
|
+
adoptPeek(plexus) {
|
|
303
|
+
this.#adoptView("peek", plexus);
|
|
304
|
+
}
|
|
305
|
+
/** Local intern for the host cover. Tests / already-open plexus. */
|
|
306
|
+
adoptAsk(plexus) {
|
|
307
|
+
this.#adoptView("ask", plexus);
|
|
308
|
+
}
|
|
309
|
+
/**
|
|
310
|
+
* Open the worker session room without seating. No-op on a local test
|
|
311
|
+
* Client (`sessionProvider == null`) — those use {@link adoptPeek}.
|
|
312
|
+
*/
|
|
313
|
+
watchPeek(sessionId) {
|
|
314
|
+
return this.#watchView("peek", sessionId);
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* Open the asking worker without seating. Local tests use {@link adoptAsk}.
|
|
318
|
+
*/
|
|
319
|
+
watchAsk(sessionId) {
|
|
320
|
+
return this.#watchView("ask", sessionId);
|
|
321
|
+
}
|
|
322
|
+
releasePeek() {
|
|
323
|
+
this.#releaseView("peek");
|
|
324
|
+
}
|
|
325
|
+
releaseAsk() {
|
|
326
|
+
this.#releaseView("ask");
|
|
327
|
+
}
|
|
328
|
+
#adoptView(slot, plexus) {
|
|
329
|
+
this.#releaseView(slot);
|
|
330
|
+
this.#setView(slot, { sessionId: plexus.root.sessionId, plexus, stop: null });
|
|
331
|
+
}
|
|
332
|
+
#releaseView(slot) {
|
|
333
|
+
this.#viewGen[slot] += 1;
|
|
334
|
+
const view = slot === "peek" ? this.#peek : this.#ask;
|
|
335
|
+
this.#setView(slot, null);
|
|
336
|
+
view?.stop?.();
|
|
337
|
+
}
|
|
338
|
+
#setView(slot, view) {
|
|
339
|
+
if (slot === "peek")
|
|
340
|
+
this.#peek = view;
|
|
341
|
+
else {
|
|
342
|
+
this.#ask = view;
|
|
343
|
+
this.#bindAskDesk();
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
/** Host cover intern: project remainder inputs when this session is the desk. */
|
|
347
|
+
#bindAskDesk() {
|
|
348
|
+
this.#askDeskStop?.();
|
|
349
|
+
this.#askDeskStop = null;
|
|
350
|
+
const worker = this.#ask?.plexus.root;
|
|
351
|
+
if (worker == null)
|
|
352
|
+
return;
|
|
353
|
+
this.#askDeskStop = reaction(() => {
|
|
354
|
+
if (!delegatesPermissionMode(worker))
|
|
355
|
+
return null;
|
|
356
|
+
const deskId = permissionDeskSessionId(worker, this.kernelRoot);
|
|
357
|
+
if (deskId !== "" && deskId !== this.sessionId)
|
|
358
|
+
return null;
|
|
359
|
+
return deskPermissionSnap(this.sessionRoot);
|
|
360
|
+
}, (snap) => {
|
|
361
|
+
if (snap == null)
|
|
362
|
+
return;
|
|
363
|
+
projectWorkerPermissions(worker, this.sessionRoot);
|
|
364
|
+
}, { equals: comparer.structural, fireImmediately: true });
|
|
365
|
+
}
|
|
366
|
+
async #watchView(slot, sessionId) {
|
|
367
|
+
const id = sessionId.trim();
|
|
368
|
+
const current = slot === "peek" ? this.#peek : this.#ask;
|
|
369
|
+
if (id === "" || current?.sessionId === id)
|
|
370
|
+
return;
|
|
371
|
+
this.#releaseView(slot);
|
|
372
|
+
if (this.sessionProvider == null)
|
|
373
|
+
return;
|
|
374
|
+
const gen = this.#viewGen[slot];
|
|
375
|
+
const kernel = await realpath(this.kernelPath);
|
|
376
|
+
const providers = [];
|
|
377
|
+
const awarenessStops = [];
|
|
378
|
+
const drop = () => {
|
|
379
|
+
for (const stop of awarenessStops.splice(0))
|
|
380
|
+
stop();
|
|
381
|
+
for (const provider of providers.splice(0))
|
|
382
|
+
destroyProvider(provider);
|
|
383
|
+
};
|
|
384
|
+
try {
|
|
385
|
+
const plexus = await Client.#open(daemonSocketPath(kernel), "session", { sessionId: id }, new Y.Doc({ guid: `harness:session:${id}` }), (doc) => SessionPlexus.connect(doc), providers, awarenessStops, { reconnect: false });
|
|
386
|
+
if (gen !== this.#viewGen[slot]) {
|
|
387
|
+
drop();
|
|
388
|
+
plexus.destroy();
|
|
389
|
+
return;
|
|
390
|
+
}
|
|
391
|
+
this.#setView(slot, {
|
|
392
|
+
sessionId: id,
|
|
393
|
+
plexus,
|
|
394
|
+
stop: () => {
|
|
395
|
+
drop();
|
|
396
|
+
plexus.destroy();
|
|
397
|
+
},
|
|
398
|
+
});
|
|
399
|
+
}
|
|
400
|
+
catch (error) {
|
|
401
|
+
drop();
|
|
402
|
+
throw error;
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
get botsRoster() {
|
|
406
|
+
return [
|
|
407
|
+
...rosterRows("session", this.sessionRoot.botsRoster),
|
|
408
|
+
...rosterRows("project", this.projectRoot.botsRoster),
|
|
409
|
+
...rosterRows("global", this.kernelRoot.botsRoster),
|
|
410
|
+
];
|
|
411
|
+
}
|
|
412
|
+
get agentCalls() {
|
|
413
|
+
const out = [];
|
|
414
|
+
const seen = new Set();
|
|
415
|
+
const take = (job) => {
|
|
416
|
+
if (seen.has(job) || job.workerSessionId.trim() === "")
|
|
417
|
+
return;
|
|
418
|
+
seen.add(job);
|
|
419
|
+
out.push(job);
|
|
420
|
+
};
|
|
421
|
+
for (const turn of this.sessionRoot.liveTurns) {
|
|
422
|
+
for (const job of turnCallJobs(turn))
|
|
423
|
+
take(job);
|
|
424
|
+
}
|
|
425
|
+
return out;
|
|
426
|
+
}
|
|
427
|
+
get programs() {
|
|
428
|
+
const out = [];
|
|
429
|
+
const seen = new Set();
|
|
430
|
+
for (const turn of this.sessionRoot.liveTurns) {
|
|
431
|
+
for (const node of turn.openBackgroundWork) {
|
|
432
|
+
if (!(node instanceof ProgrammaticJob) || seen.has(node))
|
|
433
|
+
continue;
|
|
434
|
+
seen.add(node);
|
|
435
|
+
out.push(node);
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
return out;
|
|
439
|
+
}
|
|
440
|
+
get #workerIds() { return _private_get_workerIds_descriptor.get.call(this); }
|
|
441
|
+
get agents() {
|
|
442
|
+
return this.#workerIds.map((id) => this.#agents.get(id));
|
|
443
|
+
}
|
|
444
|
+
get sessionAgents() {
|
|
445
|
+
return this.agents.filter((agent) => agent.scope === "session");
|
|
446
|
+
}
|
|
447
|
+
get projectAgents() {
|
|
448
|
+
return this.agents.filter((agent) => agent.scope === "project");
|
|
449
|
+
}
|
|
450
|
+
get globalAgents() {
|
|
451
|
+
return this.agents.filter((agent) => agent.scope === "global");
|
|
452
|
+
}
|
|
453
|
+
get oneShotAgents() {
|
|
454
|
+
return this.agents.filter((agent) => agent.oneShot);
|
|
455
|
+
}
|
|
456
|
+
/**
|
|
457
|
+
* Ambient looking: specs currently in a list. Tracked as a MobX computed —
|
|
458
|
+
* occupancy retracts when the getter stops returning them. Kernel-plane:
|
|
459
|
+
* interned connections outlive a session wrap.
|
|
460
|
+
*/
|
|
461
|
+
setComputedAttention(fn) {
|
|
462
|
+
this.#attentionStop?.();
|
|
463
|
+
this.#attentionStop = reaction(() => collectRevalidationDemandRefs(fn()), (refs) => publishRevalidationDemand(this.kernelPlexus.awareness, refs), { equals: comparer.structural, fireImmediately: true });
|
|
464
|
+
}
|
|
465
|
+
/**
|
|
466
|
+
* Focused looking: the one-of-a-kind spec in the UI. Tracked as a MobX
|
|
467
|
+
* computed — occupancy retracts when the getter returns null. Kernel-plane:
|
|
468
|
+
* interned connections outlive a session wrap.
|
|
469
|
+
*/
|
|
470
|
+
setComputedAttentionFocus(fn) {
|
|
471
|
+
this.#revalidationDemandFocusStop?.();
|
|
472
|
+
this.#revalidationDemandFocusStop = reaction(() => {
|
|
473
|
+
const spec = fn();
|
|
474
|
+
return spec == null ? null : revalidationDemandRefFromSpec(spec);
|
|
475
|
+
}, (ref) => publishRevalidationDemandFocus(this.kernelPlexus.awareness, ref), { equals: comparer.structural, fireImmediately: true });
|
|
476
|
+
}
|
|
477
|
+
get lost() {
|
|
478
|
+
return this.#rpc === null || this.#rpc.lost;
|
|
479
|
+
}
|
|
480
|
+
request(method, params = {}) {
|
|
481
|
+
if (this.#rpc === null) {
|
|
482
|
+
return Promise.reject(new Error("client: session socket is not open"));
|
|
483
|
+
}
|
|
484
|
+
return this.#rpc.request(method, params);
|
|
485
|
+
}
|
|
486
|
+
/** Kernel-plane JSON-RPC. Kernel/project docs are lenses; writes go through this. */
|
|
487
|
+
kernelRequest(method, params = {}) {
|
|
488
|
+
if (this.#kernelRpc === null) {
|
|
489
|
+
return Promise.reject(new Error("client: kernel socket is not open"));
|
|
490
|
+
}
|
|
491
|
+
return this.#kernelRpc.request(method, params);
|
|
492
|
+
}
|
|
493
|
+
async [(_get_botsRoster_decorators = [(_b = computed).struct.bind(_b)], _get_agentCalls_decorators = [computed], _get_programs_decorators = [computed], _private_get_workerIds_decorators = [(_c = computed).struct.bind(_c)], _get_agents_decorators = [computed], _get_sessionAgents_decorators = [computed], _get_projectAgents_decorators = [computed], _get_globalAgents_decorators = [computed], _get_oneShotAgents_decorators = [computed], Symbol.asyncDispose)]() {
|
|
494
|
+
this.releasePeek();
|
|
495
|
+
this.releaseAsk();
|
|
496
|
+
this.#askDeskStop?.();
|
|
497
|
+
this.#askDeskStop = null;
|
|
498
|
+
this.#attentionStop?.();
|
|
499
|
+
this.#attentionStop = null;
|
|
500
|
+
this.#revalidationDemandFocusStop?.();
|
|
501
|
+
this.#revalidationDemandFocusStop = null;
|
|
502
|
+
publishKernelSeat(this.kernelPlexus.awareness, null);
|
|
503
|
+
publishRevalidationDemand(this.kernelPlexus.awareness, []);
|
|
504
|
+
publishRevalidationDemandFocus(this.kernelPlexus.awareness, null);
|
|
505
|
+
for (const stop of this.#awarenessStops.splice(0))
|
|
506
|
+
stop();
|
|
507
|
+
this.#rpc?.rejectAll(new Error("client disposed"));
|
|
508
|
+
this.#kernelRpc?.rejectAll(new Error("client disposed"));
|
|
509
|
+
for (const provider of this.#providers.splice(0)) {
|
|
510
|
+
destroyProvider(provider);
|
|
511
|
+
}
|
|
512
|
+
this.#agents.clear();
|
|
513
|
+
this.kernelPlexus.destroy();
|
|
514
|
+
this.projectPlexus.destroy();
|
|
515
|
+
this.sessionPlexus.destroy();
|
|
516
|
+
}
|
|
517
|
+
};
|
|
518
|
+
})();
|
|
519
|
+
export { Client };
|
|
520
|
+
const turnCallJobsCache = new WeakMap();
|
|
521
|
+
function turnCallJobs(turn) {
|
|
522
|
+
let box = turnCallJobsCache.get(turn);
|
|
523
|
+
if (box === undefined) {
|
|
524
|
+
box = computed(() => {
|
|
525
|
+
const out = [];
|
|
526
|
+
const seen = new Set();
|
|
527
|
+
const take = (job) => {
|
|
528
|
+
if (seen.has(job) || job.workerSessionId.trim() === "")
|
|
529
|
+
return;
|
|
530
|
+
seen.add(job);
|
|
531
|
+
out.push(job);
|
|
532
|
+
};
|
|
533
|
+
for (const chunk of turn.doneWork) {
|
|
534
|
+
if (chunk instanceof CallJob)
|
|
535
|
+
take(chunk);
|
|
536
|
+
}
|
|
537
|
+
for (const chunk of turn.queue) {
|
|
538
|
+
if (chunk instanceof CallJob)
|
|
539
|
+
take(chunk);
|
|
540
|
+
}
|
|
541
|
+
for (const node of turn.subtreeWork) {
|
|
542
|
+
if (node instanceof CallJob)
|
|
543
|
+
take(node);
|
|
544
|
+
}
|
|
545
|
+
return out;
|
|
546
|
+
}, { equals: comparer.shallow });
|
|
547
|
+
turnCallJobsCache.set(turn, box);
|
|
548
|
+
}
|
|
549
|
+
return box.get();
|
|
550
|
+
}
|
|
551
|
+
function rosterRows(scope, record) {
|
|
552
|
+
const out = [];
|
|
553
|
+
for (const [name, sessionId] of Object.entries(record)) {
|
|
554
|
+
const id = sessionId.trim();
|
|
555
|
+
if (name.trim() === "" || id === "")
|
|
556
|
+
continue;
|
|
557
|
+
out.push({ scope, name, sessionId: id });
|
|
558
|
+
}
|
|
559
|
+
return out;
|
|
560
|
+
}
|
|
561
|
+
/** Join snapshot can arrive before bind; QUERY fetches occupancy for `--continue`. */
|
|
562
|
+
async function awaitAwarenessDump(provider, ms = 2000) {
|
|
563
|
+
const socket = provider.ws;
|
|
564
|
+
if (socket == null || socket.readyState !== socket.OPEN)
|
|
565
|
+
return;
|
|
566
|
+
await new Promise((resolve) => {
|
|
567
|
+
let done = false;
|
|
568
|
+
const finish = () => {
|
|
569
|
+
if (done)
|
|
570
|
+
return;
|
|
571
|
+
done = true;
|
|
572
|
+
clearTimeout(timer);
|
|
573
|
+
socket.removeEventListener("message", onMessage);
|
|
574
|
+
resolve();
|
|
575
|
+
};
|
|
576
|
+
const timer = setTimeout(finish, ms);
|
|
577
|
+
const onMessage = (event) => {
|
|
578
|
+
const bytes = awarenessBytes(event.data);
|
|
579
|
+
if (bytes == null)
|
|
580
|
+
return;
|
|
581
|
+
const type = peekMessageType(bytes);
|
|
582
|
+
if (type === MESSAGE_AWARENESS || type === MESSAGE_QUERY_AWARENESS)
|
|
583
|
+
finish();
|
|
584
|
+
};
|
|
585
|
+
socket.addEventListener("message", onMessage);
|
|
586
|
+
socket.send(encodeQueryAwareness());
|
|
587
|
+
});
|
|
588
|
+
}
|
|
589
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export { mintProjectDocGuid as mintProjectDocGuid, PROJECT_DOC_KIND as PROJECT_DOC_KIND, ProjectPlexus as ProjectPlexus, } from "@inhuman.tools/harness-model/kernel";
|
|
2
|
+
export * from "./paths.js";
|
|
3
|
+
export { Client as Client, RestoreNotFound as RestoreNotFound, type KernelRpc as KernelRpc } from "./client.js";
|
|
4
|
+
export { hostAskEscalateSessionId as hostAskEscalateSessionId } from "./client-agents.js";
|
|
5
|
+
export { delegatesPermissionMode as delegatesPermissionMode, deskPermissionSnap as deskPermissionSnap, permissionDeskSessionId as permissionDeskSessionId, projectWorkerPermissions as projectWorkerPermissions, type DeskPermissionSnap as DeskPermissionSnap, } from "@inhuman.tools/harness-model/session";
|
|
6
|
+
export { SESSION_FACE_ASK as SESSION_FACE_ASK, flattenAgentDrawer as flattenAgentDrawer, mentionedAgentCall as mentionedAgentCall, projectAgentDrawer as projectAgentDrawer, projectAgentMeter as projectAgentMeter, projectRecentSessions as projectRecentSessions, type AgentDrawerRow as AgentDrawerRow, } from "./client-agents-tree.js";
|
|
7
|
+
export { openUnixRoom as openUnixRoom } from "./transport/unix.js";
|
|
8
|
+
export * from "./observable-abort-signal.js";
|
|
9
|
+
export * from "./open-external.js";
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,IAAI,kBAAkB,EACxC,gBAAgB,IAAI,gBAAgB,EACpC,aAAa,IAAI,aAAa,GAC/B,MAAM,qCAAqC,CAAC;AAC7C,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,MAAM,IAAI,MAAM,EAAE,eAAe,IAAI,eAAe,EAAE,KAAK,SAAS,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AAChH,OAAO,EAAE,wBAAwB,IAAI,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC1F,OAAO,EACL,uBAAuB,IAAI,uBAAuB,EAClD,kBAAkB,IAAI,kBAAkB,EACxC,uBAAuB,IAAI,uBAAuB,EAClD,wBAAwB,IAAI,wBAAwB,EACpD,KAAK,kBAAkB,IAAI,kBAAkB,GAC9C,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EACL,gBAAgB,IAAI,gBAAgB,EACpC,kBAAkB,IAAI,kBAAkB,EACxC,kBAAkB,IAAI,kBAAkB,EACxC,kBAAkB,IAAI,kBAAkB,EACxC,iBAAiB,IAAI,iBAAiB,EACtC,qBAAqB,IAAI,qBAAqB,EAC9C,KAAK,cAAc,IAAI,cAAc,GACtC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,YAAY,IAAI,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnE,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oBAAoB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export { mintProjectDocGuid as mintProjectDocGuid, PROJECT_DOC_KIND as PROJECT_DOC_KIND, ProjectPlexus as ProjectPlexus, } from "@inhuman.tools/harness-model/kernel";
|
|
2
|
+
export * from "./paths.js";
|
|
3
|
+
export { Client as Client, RestoreNotFound as RestoreNotFound } from "./client.js";
|
|
4
|
+
export { hostAskEscalateSessionId as hostAskEscalateSessionId } from "./client-agents.js";
|
|
5
|
+
export { delegatesPermissionMode as delegatesPermissionMode, deskPermissionSnap as deskPermissionSnap, permissionDeskSessionId as permissionDeskSessionId, projectWorkerPermissions as projectWorkerPermissions, } from "@inhuman.tools/harness-model/session";
|
|
6
|
+
export { SESSION_FACE_ASK as SESSION_FACE_ASK, flattenAgentDrawer as flattenAgentDrawer, mentionedAgentCall as mentionedAgentCall, projectAgentDrawer as projectAgentDrawer, projectAgentMeter as projectAgentMeter, projectRecentSessions as projectRecentSessions, } from "./client-agents-tree.js";
|
|
7
|
+
export { openUnixRoom as openUnixRoom } from "./transport/unix.js";
|
|
8
|
+
export * from "./observable-abort-signal.js";
|
|
9
|
+
export * from "./open-external.js";
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,IAAI,kBAAkB,EACxC,gBAAgB,IAAI,gBAAgB,EACpC,aAAa,IAAI,aAAa,GAC/B,MAAM,qCAAqC,CAAC;AAC7C,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,MAAM,IAAI,MAAM,EAAE,eAAe,IAAI,eAAe,EAA+B,MAAM,aAAa,CAAC;AAChH,OAAO,EAAE,wBAAwB,IAAI,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC1F,OAAO,EACL,uBAAuB,IAAI,uBAAuB,EAClD,kBAAkB,IAAI,kBAAkB,EACxC,uBAAuB,IAAI,uBAAuB,EAClD,wBAAwB,IAAI,wBAAwB,GAErD,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EACL,gBAAgB,IAAI,gBAAgB,EACpC,kBAAkB,IAAI,kBAAkB,EACxC,kBAAkB,IAAI,kBAAkB,EACxC,kBAAkB,IAAI,kBAAkB,EACxC,iBAAiB,IAAI,iBAAiB,EACtC,qBAAqB,IAAI,qBAAqB,GAE/C,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,YAAY,IAAI,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnE,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oBAAoB,CAAC"}
|