@particle-academy/agent-integrations 0.50.0 → 0.51.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/CHANGELOG.md +51 -0
- package/README.md +11 -0
- package/dist/bridges/artboard.d.cts +3 -3
- package/dist/bridges/artboard.d.ts +3 -3
- package/dist/bridges/catalog.d.cts +3 -3
- package/dist/bridges/catalog.d.ts +3 -3
- package/dist/bridges/charts.d.cts +3 -3
- package/dist/bridges/charts.d.ts +3 -3
- package/dist/bridges/cms.d.cts +3 -3
- package/dist/bridges/cms.d.ts +3 -3
- package/dist/bridges/code.d.cts +3 -3
- package/dist/bridges/code.d.ts +3 -3
- package/dist/bridges/doc.d.cts +3 -3
- package/dist/bridges/doc.d.ts +3 -3
- package/dist/bridges/features.d.cts +3 -3
- package/dist/bridges/features.d.ts +3 -3
- package/dist/bridges/files.d.cts +3 -3
- package/dist/bridges/files.d.ts +3 -3
- package/dist/bridges/flow.d.cts +3 -3
- package/dist/bridges/flow.d.ts +3 -3
- package/dist/bridges/forms.d.cts +3 -3
- package/dist/bridges/forms.d.ts +3 -3
- package/dist/bridges/git.d.cts +3 -3
- package/dist/bridges/git.d.ts +3 -3
- package/dist/bridges/grid.d.cts +3 -3
- package/dist/bridges/grid.d.ts +3 -3
- package/dist/bridges/map.d.cts +3 -3
- package/dist/bridges/map.d.ts +3 -3
- package/dist/bridges/navigation.d.cts +3 -3
- package/dist/bridges/navigation.d.ts +3 -3
- package/dist/bridges/passkeys.d.cts +3 -3
- package/dist/bridges/passkeys.d.ts +3 -3
- package/dist/bridges/scene.d.cts +3 -3
- package/dist/bridges/scene.d.ts +3 -3
- package/dist/bridges/screen-doc.d.cts +3 -3
- package/dist/bridges/screen-doc.d.ts +3 -3
- package/dist/bridges/screens.d.cts +3 -3
- package/dist/bridges/screens.d.ts +3 -3
- package/dist/bridges/sheets.d.cts +3 -3
- package/dist/bridges/sheets.d.ts +3 -3
- package/dist/bridges/slides.d.cts +3 -3
- package/dist/bridges/slides.d.ts +3 -3
- package/dist/bridges/terminal.d.cts +3 -3
- package/dist/bridges/terminal.d.ts +3 -3
- package/dist/bridges/tui.d.cts +2 -2
- package/dist/bridges/tui.d.ts +2 -2
- package/dist/bridges/whiteboard.d.cts +3 -3
- package/dist/bridges/whiteboard.d.ts +3 -3
- package/dist/bridges-artboard.cjs +11 -5
- package/dist/bridges-artboard.cjs.map +1 -1
- package/dist/bridges-artboard.js +6 -4
- package/dist/bridges-artboard.js.map +1 -1
- package/dist/bridges-catalog.cjs +11 -5
- package/dist/bridges-catalog.cjs.map +1 -1
- package/dist/bridges-catalog.js +3 -3
- package/dist/bridges-charts.cjs +11 -5
- package/dist/bridges-charts.cjs.map +1 -1
- package/dist/bridges-charts.js +3 -3
- package/dist/bridges-cms.cjs +11 -5
- package/dist/bridges-cms.cjs.map +1 -1
- package/dist/bridges-cms.js +4 -4
- package/dist/bridges-code.cjs +11 -5
- package/dist/bridges-code.cjs.map +1 -1
- package/dist/bridges-code.js +3 -3
- package/dist/bridges-doc.cjs +11 -5
- package/dist/bridges-doc.cjs.map +1 -1
- package/dist/bridges-doc.js +3 -3
- package/dist/bridges-features.cjs +11 -5
- package/dist/bridges-features.cjs.map +1 -1
- package/dist/bridges-features.js +3 -3
- package/dist/bridges-files.cjs +11 -5
- package/dist/bridges-files.cjs.map +1 -1
- package/dist/bridges-files.js +3 -3
- package/dist/bridges-flow.cjs +11 -5
- package/dist/bridges-flow.cjs.map +1 -1
- package/dist/bridges-flow.js +6 -4
- package/dist/bridges-flow.js.map +1 -1
- package/dist/bridges-forms.cjs +11 -5
- package/dist/bridges-forms.cjs.map +1 -1
- package/dist/bridges-forms.js +3 -3
- package/dist/bridges-git.cjs +10 -5
- package/dist/bridges-git.cjs.map +1 -1
- package/dist/bridges-git.js +3 -3
- package/dist/bridges-grid.cjs +11 -5
- package/dist/bridges-grid.cjs.map +1 -1
- package/dist/bridges-grid.js +3 -3
- package/dist/bridges-map.cjs +11 -5
- package/dist/bridges-map.cjs.map +1 -1
- package/dist/bridges-map.js +3 -3
- package/dist/bridges-navigation.cjs +11 -5
- package/dist/bridges-navigation.cjs.map +1 -1
- package/dist/bridges-navigation.js +3 -3
- package/dist/bridges-passkeys.cjs +11 -5
- package/dist/bridges-passkeys.cjs.map +1 -1
- package/dist/bridges-passkeys.js +3 -3
- package/dist/bridges-scene.cjs +11 -5
- package/dist/bridges-scene.cjs.map +1 -1
- package/dist/bridges-scene.js +3 -3
- package/dist/bridges-screen-doc.cjs +14 -6
- package/dist/bridges-screen-doc.cjs.map +1 -1
- package/dist/bridges-screen-doc.js +4 -4
- package/dist/bridges-screens.cjs +11 -5
- package/dist/bridges-screens.cjs.map +1 -1
- package/dist/bridges-screens.js +3 -3
- package/dist/bridges-sheets.cjs +11 -5
- package/dist/bridges-sheets.cjs.map +1 -1
- package/dist/bridges-sheets.js +3 -3
- package/dist/bridges-slides.cjs +11 -5
- package/dist/bridges-slides.cjs.map +1 -1
- package/dist/bridges-slides.js +3 -3
- package/dist/bridges-terminal.cjs +11 -5
- package/dist/bridges-terminal.cjs.map +1 -1
- package/dist/bridges-terminal.js +3 -3
- package/dist/bridges-tui.cjs +1 -1
- package/dist/bridges-tui.cjs.map +1 -1
- package/dist/bridges-tui.js +2 -2
- package/dist/bridges-whiteboard.cjs +11 -5
- package/dist/bridges-whiteboard.cjs.map +1 -1
- package/dist/bridges-whiteboard.js +3 -3
- package/dist/{chunk-CZV3WUW5.js → chunk-3GFKC6OK.js} +20 -7
- package/dist/chunk-3GFKC6OK.js.map +1 -0
- package/dist/{chunk-JLHVQWOV.js → chunk-6Q3PMT7K.js} +4 -4
- package/dist/chunk-6Q3PMT7K.js.map +1 -0
- package/dist/{chunk-AXWMWYH5.js → chunk-C4AQ2YBW.js} +7 -6
- package/dist/chunk-C4AQ2YBW.js.map +1 -0
- package/dist/{chunk-NH6HUVXQ.js → chunk-CI5ZVHDY.js} +8 -6
- package/dist/chunk-CI5ZVHDY.js.map +1 -0
- package/dist/{chunk-5ZWNCHZS.js → chunk-CKJL5C7A.js} +8 -6
- package/dist/chunk-CKJL5C7A.js.map +1 -0
- package/dist/{chunk-HOZCDDRA.js → chunk-CP3EHLZJ.js} +8 -6
- package/dist/chunk-CP3EHLZJ.js.map +1 -0
- package/dist/{chunk-VFWFT3OK.js → chunk-DNF3QVTW.js} +8 -6
- package/dist/chunk-DNF3QVTW.js.map +1 -0
- package/dist/{chunk-BG3QXNM6.js → chunk-HNVHAY4A.js} +8 -6
- package/dist/chunk-HNVHAY4A.js.map +1 -0
- package/dist/{chunk-5M5ELTHE.js → chunk-KAEPC6N4.js} +8 -6
- package/dist/chunk-KAEPC6N4.js.map +1 -0
- package/dist/{chunk-3WVXAB3D.js → chunk-M423JOQ3.js} +3 -3
- package/dist/{chunk-3WVXAB3D.js.map → chunk-M423JOQ3.js.map} +1 -1
- package/dist/{chunk-SWWJUOCY.js → chunk-MKC633WU.js} +3 -3
- package/dist/{chunk-SWWJUOCY.js.map → chunk-MKC633WU.js.map} +1 -1
- package/dist/{chunk-LQB42OSA.js → chunk-MKJE6V4Z.js} +8 -6
- package/dist/chunk-MKJE6V4Z.js.map +1 -0
- package/dist/{chunk-MIDZWKIF.js → chunk-NB5AQIR2.js} +8 -6
- package/dist/chunk-NB5AQIR2.js.map +1 -0
- package/dist/{chunk-VMRUW4B4.js → chunk-OUUHFR4N.js} +8 -6
- package/dist/chunk-OUUHFR4N.js.map +1 -0
- package/dist/{chunk-FCXSR7I5.js → chunk-P6SJBP5T.js} +8 -6
- package/dist/chunk-P6SJBP5T.js.map +1 -0
- package/dist/{chunk-5JLTXHX6.js → chunk-PMPBI6I3.js} +7 -5
- package/dist/chunk-PMPBI6I3.js.map +1 -0
- package/dist/{chunk-4WVLZ6YP.js → chunk-PV4FZDYX.js} +8 -6
- package/dist/chunk-PV4FZDYX.js.map +1 -0
- package/dist/{chunk-3UUF5KKZ.js → chunk-QEVSNDJW.js} +8 -6
- package/dist/chunk-QEVSNDJW.js.map +1 -0
- package/dist/{chunk-VOCUGTZB.js → chunk-S4DA2UTJ.js} +8 -6
- package/dist/chunk-S4DA2UTJ.js.map +1 -0
- package/dist/{chunk-RVMM4BHK.js → chunk-V6EHKHSF.js} +8 -6
- package/dist/chunk-V6EHKHSF.js.map +1 -0
- package/dist/{chunk-36MKPTVD.js → chunk-VE7TRWZR.js} +8 -6
- package/dist/chunk-VE7TRWZR.js.map +1 -0
- package/dist/{chunk-Z5NL5D4J.js → chunk-VFUKZ6UA.js} +8 -6
- package/dist/chunk-VFUKZ6UA.js.map +1 -0
- package/dist/{chunk-3HVYUMQF.js → chunk-VHB3VE53.js} +8 -6
- package/dist/chunk-VHB3VE53.js.map +1 -0
- package/dist/{chunk-R4XXOGQH.js → chunk-ZDKYKJFH.js} +10 -6
- package/dist/chunk-ZDKYKJFH.js.map +1 -0
- package/dist/components-shared-whiteboard.cjs +29 -10
- package/dist/components-shared-whiteboard.cjs.map +1 -1
- package/dist/components-shared-whiteboard.js +3 -3
- package/dist/dom-navigation/index.d.cts +3 -3
- package/dist/dom-navigation/index.d.ts +3 -3
- package/dist/index.cjs +96 -44
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +5 -5
- package/dist/index.d.ts +5 -5
- package/dist/index.js +26 -26
- package/dist/mcp/index.d.cts +5 -5
- package/dist/mcp/index.d.ts +5 -5
- package/dist/mcp/stdio.d.cts +3 -3
- package/dist/mcp/stdio.d.ts +3 -3
- package/dist/mcp.cjs +18 -5
- package/dist/mcp.cjs.map +1 -1
- package/dist/mcp.js +1 -1
- package/dist/presence/index.d.cts +1 -1
- package/dist/presence/index.d.ts +1 -1
- package/dist/{server-1y0n61R5.d.cts → server-DJJygNo1.d.cts} +2 -2
- package/dist/{server-vq6qVl3T.d.ts → server-Dwo9LOxh.d.ts} +2 -2
- package/dist/sharing/index.d.cts +3 -3
- package/dist/sharing/index.d.ts +3 -3
- package/dist/sheets-adapter.d.cts +3 -3
- package/dist/sheets-adapter.d.ts +3 -3
- package/dist/{tool-host-LYfdPE8u.d.ts → tool-host-BBSaU7IJ.d.cts} +10 -4
- package/dist/{tool-host-D67N2a2h.d.cts → tool-host-BqJRPr_T.d.ts} +10 -4
- package/dist/{types-DP5yQZQU.d.cts → types-D_H2f-wF.d.cts} +1 -1
- package/dist/{types-VX_9je7w.d.ts → types-D_TzdBsK.d.ts} +1 -1
- package/dist/{types-gzIpsUDE.d.cts → types-ITRQFAir.d.cts} +26 -1
- package/dist/{types-gzIpsUDE.d.ts → types-ITRQFAir.d.ts} +26 -1
- package/dist/undo/index.d.cts +2 -2
- package/dist/undo/index.d.ts +2 -2
- package/dist/undo.cjs +7 -3
- package/dist/undo.cjs.map +1 -1
- package/dist/undo.js +3 -3
- package/package.json +1 -1
- package/dist/chunk-36MKPTVD.js.map +0 -1
- package/dist/chunk-3HVYUMQF.js.map +0 -1
- package/dist/chunk-3UUF5KKZ.js.map +0 -1
- package/dist/chunk-4WVLZ6YP.js.map +0 -1
- package/dist/chunk-5JLTXHX6.js.map +0 -1
- package/dist/chunk-5M5ELTHE.js.map +0 -1
- package/dist/chunk-5ZWNCHZS.js.map +0 -1
- package/dist/chunk-AXWMWYH5.js.map +0 -1
- package/dist/chunk-BG3QXNM6.js.map +0 -1
- package/dist/chunk-CZV3WUW5.js.map +0 -1
- package/dist/chunk-FCXSR7I5.js.map +0 -1
- package/dist/chunk-HOZCDDRA.js.map +0 -1
- package/dist/chunk-JLHVQWOV.js.map +0 -1
- package/dist/chunk-LQB42OSA.js.map +0 -1
- package/dist/chunk-MIDZWKIF.js.map +0 -1
- package/dist/chunk-NH6HUVXQ.js.map +0 -1
- package/dist/chunk-R4XXOGQH.js.map +0 -1
- package/dist/chunk-RVMM4BHK.js.map +0 -1
- package/dist/chunk-VFWFT3OK.js.map +0 -1
- package/dist/chunk-VMRUW4B4.js.map +0 -1
- package/dist/chunk-VOCUGTZB.js.map +0 -1
- package/dist/chunk-Z5NL5D4J.js.map +0 -1
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { ShareControls, AgentCursor, AgentActivityHighlight, AgentPanel } from './chunk-QDC7MXBH.js';
|
|
2
2
|
import { createSessionDescriptor, attachSseRelay } from './chunk-6TZ5IBRN.js';
|
|
3
3
|
import { attachInProcess } from './chunk-AFUULW5E.js';
|
|
4
|
-
import { registerWhiteboardBridge } from './chunk-
|
|
5
|
-
import './chunk-
|
|
4
|
+
import { registerWhiteboardBridge } from './chunk-MKJE6V4Z.js';
|
|
5
|
+
import './chunk-ZDKYKJFH.js';
|
|
6
6
|
import './chunk-2VENWGLZ.js';
|
|
7
7
|
import './chunk-C3TYI5TJ.js';
|
|
8
|
-
import { MicroMcpServer } from './chunk-
|
|
8
|
+
import { MicroMcpServer } from './chunk-3GFKC6OK.js';
|
|
9
9
|
import { useState, useRef, useEffect, useCallback, useMemo } from 'react';
|
|
10
10
|
import { Board, Connector, Shape, StickyNote, CursorLayer } from '@particle-academy/fancy-whiteboard';
|
|
11
11
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { PageSnapshot, PageReadout, NavigationConfirmRequest, NavigationBridgeAdapter } from '../bridges/navigation.cjs';
|
|
2
2
|
export { PageAction } from '../bridges/navigation.cjs';
|
|
3
|
-
import '../tool-host-
|
|
4
|
-
import '../types-
|
|
5
|
-
import '../types-
|
|
3
|
+
import '../tool-host-BBSaU7IJ.cjs';
|
|
4
|
+
import '../types-ITRQFAir.cjs';
|
|
5
|
+
import '../types-D_H2f-wF.cjs';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* The in-page half of DOM co-browsing: a framework-free walker that turns a
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { PageSnapshot, PageReadout, NavigationConfirmRequest, NavigationBridgeAdapter } from '../bridges/navigation.js';
|
|
2
2
|
export { PageAction } from '../bridges/navigation.js';
|
|
3
|
-
import '../tool-host-
|
|
4
|
-
import '../types-
|
|
5
|
-
import '../types-
|
|
3
|
+
import '../tool-host-BqJRPr_T.js';
|
|
4
|
+
import '../types-ITRQFAir.js';
|
|
5
|
+
import '../types-D_TzdBsK.js';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* The in-page half of DOM co-browsing: a framework-free walker that turns a
|
package/dist/index.cjs
CHANGED
|
@@ -60,13 +60,23 @@ var ToolRegistry = class {
|
|
|
60
60
|
*/
|
|
61
61
|
this.withdrawn = /* @__PURE__ */ new Set();
|
|
62
62
|
}
|
|
63
|
-
registerTool(definition, handler) {
|
|
64
|
-
|
|
65
|
-
|
|
63
|
+
registerTool(definition, handler, options = {}) {
|
|
64
|
+
const name = definition.name;
|
|
65
|
+
const { owner, replace = false } = options;
|
|
66
|
+
const held = this.tools.get(name);
|
|
67
|
+
if (held && !replace && (owner === void 0 || held.owner !== owner)) {
|
|
68
|
+
throw new Error(
|
|
69
|
+
`Tool "${name}" is already registered by ${describeOwner(held.owner)}; ${describeOwner(owner)} cannot register it too. Two registrants for one name would leave the first one listed but unreachable. Give one of them a different tool name, dispose the first registration, or pass { replace: true } to take the name over deliberately.`
|
|
70
|
+
);
|
|
71
|
+
}
|
|
72
|
+
const record = owner === void 0 ? { definition, handler } : { definition, handler, owner };
|
|
73
|
+
this.tools.set(name, record);
|
|
74
|
+
this.withdrawn.delete(name);
|
|
66
75
|
this.onToolsChanged();
|
|
67
76
|
return () => {
|
|
68
|
-
if (this.tools.
|
|
69
|
-
this.
|
|
77
|
+
if (this.tools.get(name) === record) {
|
|
78
|
+
this.tools.delete(name);
|
|
79
|
+
this.withdrawn.add(name);
|
|
70
80
|
this.onToolsChanged();
|
|
71
81
|
}
|
|
72
82
|
};
|
|
@@ -95,6 +105,9 @@ var ToolRegistry = class {
|
|
|
95
105
|
onToolsChanged() {
|
|
96
106
|
}
|
|
97
107
|
};
|
|
108
|
+
function describeOwner(owner) {
|
|
109
|
+
return owner === void 0 ? "an unnamed registrant (pass { owner } to registerTool to identify it)" : `"${owner}"`;
|
|
110
|
+
}
|
|
98
111
|
|
|
99
112
|
// src/mcp/server.ts
|
|
100
113
|
var MicroMcpServer = class extends ToolRegistry {
|
|
@@ -434,7 +447,7 @@ function registerTuiBridge(host, options) {
|
|
|
434
447
|
} catch (error) {
|
|
435
448
|
return errorResult(error instanceof Error ? error.message : String(error));
|
|
436
449
|
}
|
|
437
|
-
}));
|
|
450
|
+
}, { owner: "tui" }));
|
|
438
451
|
};
|
|
439
452
|
const publish = async (surfaceId, type, payload, actor = defaultActor, priority = "normal") => options.eventStore.append({ appId: options.appId, sessionId: options.sessionId, surfaceId, type, payload, actor, priority });
|
|
440
453
|
register("tui_surfaces_list", "List addressable Fancy TUI surfaces and commands.", {}, [], () => options.registry.list().map((surface) => ({ id: surface.id, kind: surface.kind, label: surface.label, commands: surface.commands?.map((command) => ({ name: command.name, description: command.description, policy: command.policy ?? "execute", inputSchema: command.inputSchema })) ?? [] })));
|
|
@@ -514,6 +527,7 @@ function registerTuiBridge(host, options) {
|
|
|
514
527
|
|
|
515
528
|
// src/undo/undo-tools.ts
|
|
516
529
|
var installedHosts = /* @__PURE__ */ new WeakSet();
|
|
530
|
+
var UNDO_TOOLS_OWNER = "agent-undo";
|
|
517
531
|
function ensureUndoToolsRegistered(host, options = {}) {
|
|
518
532
|
if (installedHosts.has(host)) return;
|
|
519
533
|
installedHosts.add(host);
|
|
@@ -538,7 +552,8 @@ function registerUndoTools(host, options = {}) {
|
|
|
538
552
|
const entry = await fancyAutoCommon.undoOne(agentOf(args));
|
|
539
553
|
if (!entry) return errorResult("Nothing to undo.");
|
|
540
554
|
return textResult(`Undid: ${entry.label}`, { entry: serialize(entry) });
|
|
541
|
-
}
|
|
555
|
+
},
|
|
556
|
+
{ owner: UNDO_TOOLS_OWNER }
|
|
542
557
|
)
|
|
543
558
|
);
|
|
544
559
|
disposers.push(
|
|
@@ -556,7 +571,8 @@ function registerUndoTools(host, options = {}) {
|
|
|
556
571
|
const entry = await fancyAutoCommon.redoOne(agentOf(args));
|
|
557
572
|
if (!entry) return errorResult("Nothing to redo.");
|
|
558
573
|
return textResult(`Redid: ${entry.label}`, { entry: serialize(entry) });
|
|
559
|
-
}
|
|
574
|
+
},
|
|
575
|
+
{ owner: UNDO_TOOLS_OWNER }
|
|
560
576
|
)
|
|
561
577
|
);
|
|
562
578
|
disposers.push(
|
|
@@ -574,7 +590,8 @@ function registerUndoTools(host, options = {}) {
|
|
|
574
590
|
const history = fancyAutoCommon.readHistory(agentOf(args)).map(serialize);
|
|
575
591
|
const text = history.map((e) => `${new Date(e.timestamp).toISOString()} ${e.bridgeId} ${e.action}: ${e.label}`).join("\n");
|
|
576
592
|
return textResult(text || "(empty)", history);
|
|
577
|
-
}
|
|
593
|
+
},
|
|
594
|
+
{ owner: UNDO_TOOLS_OWNER }
|
|
578
595
|
)
|
|
579
596
|
);
|
|
580
597
|
return () => disposers.forEach((d) => d());
|
|
@@ -595,6 +612,7 @@ function registerFormBridge(host, options) {
|
|
|
595
612
|
const agent = { ...DEFAULT_AGENT, ...options.agent ?? {} };
|
|
596
613
|
const pendingMode = options.pendingMode ?? true;
|
|
597
614
|
const disposers = [];
|
|
615
|
+
const bridgeId = `form:${adapter.id}`;
|
|
598
616
|
ensureUndoToolsRegistered(host, { defaultAgentId: agent.id });
|
|
599
617
|
const formId = adapter.id;
|
|
600
618
|
const target = (args) => ({
|
|
@@ -625,7 +643,8 @@ function registerFormBridge(host, options) {
|
|
|
625
643
|
description,
|
|
626
644
|
inputSchema: { type: "object", properties, required, additionalProperties: false }
|
|
627
645
|
},
|
|
628
|
-
final
|
|
646
|
+
final,
|
|
647
|
+
{ owner: bridgeId }
|
|
629
648
|
)
|
|
630
649
|
);
|
|
631
650
|
};
|
|
@@ -743,7 +762,7 @@ function registerFormBridge(host, options) {
|
|
|
743
762
|
true
|
|
744
763
|
);
|
|
745
764
|
return {
|
|
746
|
-
id:
|
|
765
|
+
id: bridgeId,
|
|
747
766
|
title: adapter.title ?? formId,
|
|
748
767
|
dispose: () => {
|
|
749
768
|
for (const d of disposers) d();
|
|
@@ -757,6 +776,7 @@ function registerSheetsBridge(host, options) {
|
|
|
757
776
|
const { adapter } = options;
|
|
758
777
|
const agent = { ...DEFAULT_AGENT2, ...options.agent ?? {} };
|
|
759
778
|
const disposers = [];
|
|
779
|
+
const bridgeId = "sheets";
|
|
760
780
|
ensureUndoToolsRegistered(host, { defaultAgentId: agent.id });
|
|
761
781
|
const target = (sheetId, address) => ({
|
|
762
782
|
kind: "sheet",
|
|
@@ -786,7 +806,8 @@ function registerSheetsBridge(host, options) {
|
|
|
786
806
|
description,
|
|
787
807
|
inputSchema: { type: "object", properties, required, additionalProperties: false }
|
|
788
808
|
},
|
|
789
|
-
final
|
|
809
|
+
final,
|
|
810
|
+
{ owner: bridgeId }
|
|
790
811
|
)
|
|
791
812
|
);
|
|
792
813
|
};
|
|
@@ -966,7 +987,7 @@ function registerSheetsBridge(host, options) {
|
|
|
966
987
|
(args) => target(getSheetId(args), String(args.address ?? ""))
|
|
967
988
|
);
|
|
968
989
|
return {
|
|
969
|
-
id:
|
|
990
|
+
id: bridgeId,
|
|
970
991
|
title: "Sheets",
|
|
971
992
|
dispose: () => {
|
|
972
993
|
for (const d of disposers) d();
|
|
@@ -1105,6 +1126,7 @@ function registerCodeBridge(host, options) {
|
|
|
1105
1126
|
const { adapter } = options;
|
|
1106
1127
|
const agent = { ...DEFAULT_AGENT3, ...options.agent ?? {} };
|
|
1107
1128
|
const disposers = [];
|
|
1129
|
+
const bridgeId = `code:${adapter.id}`;
|
|
1108
1130
|
ensureUndoToolsRegistered(host, { defaultAgentId: agent.id });
|
|
1109
1131
|
const target = {
|
|
1110
1132
|
kind: "code",
|
|
@@ -1144,7 +1166,8 @@ function registerCodeBridge(host, options) {
|
|
|
1144
1166
|
description,
|
|
1145
1167
|
inputSchema: { type: "object", properties, required, additionalProperties: false }
|
|
1146
1168
|
},
|
|
1147
|
-
final
|
|
1169
|
+
final,
|
|
1170
|
+
{ owner: bridgeId }
|
|
1148
1171
|
)
|
|
1149
1172
|
);
|
|
1150
1173
|
};
|
|
@@ -1292,7 +1315,7 @@ function registerCodeBridge(host, options) {
|
|
|
1292
1315
|
false
|
|
1293
1316
|
);
|
|
1294
1317
|
return {
|
|
1295
|
-
id:
|
|
1318
|
+
id: bridgeId,
|
|
1296
1319
|
title: adapter.title ?? adapter.id,
|
|
1297
1320
|
dispose: () => {
|
|
1298
1321
|
for (const d of disposers) d();
|
|
@@ -1306,6 +1329,7 @@ function registerChartsBridge(host, options) {
|
|
|
1306
1329
|
const { adapter } = options;
|
|
1307
1330
|
const agent = { ...DEFAULT_AGENT4, ...options.agent ?? {} };
|
|
1308
1331
|
const disposers = [];
|
|
1332
|
+
const bridgeId = `chart:${adapter.id}`;
|
|
1309
1333
|
ensureUndoToolsRegistered(host, { defaultAgentId: agent.id });
|
|
1310
1334
|
const target = {
|
|
1311
1335
|
kind: "chart",
|
|
@@ -1331,7 +1355,8 @@ function registerChartsBridge(host, options) {
|
|
|
1331
1355
|
disposers.push(
|
|
1332
1356
|
host.registerTool(
|
|
1333
1357
|
{ name, description, inputSchema: { type: "object", properties, required, additionalProperties: false } },
|
|
1334
|
-
final
|
|
1358
|
+
final,
|
|
1359
|
+
{ owner: bridgeId }
|
|
1335
1360
|
)
|
|
1336
1361
|
);
|
|
1337
1362
|
};
|
|
@@ -1407,7 +1432,7 @@ function registerChartsBridge(host, options) {
|
|
|
1407
1432
|
true
|
|
1408
1433
|
);
|
|
1409
1434
|
return {
|
|
1410
|
-
id:
|
|
1435
|
+
id: bridgeId,
|
|
1411
1436
|
title: adapter.title ?? adapter.id,
|
|
1412
1437
|
dispose: () => {
|
|
1413
1438
|
for (const d of disposers) d();
|
|
@@ -1421,6 +1446,7 @@ function registerGridBridge(host, options) {
|
|
|
1421
1446
|
const { adapter } = options;
|
|
1422
1447
|
const agent = { ...DEFAULT_AGENT5, ...options.agent ?? {} };
|
|
1423
1448
|
const disposers = [];
|
|
1449
|
+
const bridgeId = `grid:${adapter.id}`;
|
|
1424
1450
|
ensureUndoToolsRegistered(host, { defaultAgentId: agent.id });
|
|
1425
1451
|
const target = (part) => ({
|
|
1426
1452
|
kind: "grid",
|
|
@@ -1450,7 +1476,8 @@ function registerGridBridge(host, options) {
|
|
|
1450
1476
|
description,
|
|
1451
1477
|
inputSchema: { type: "object", properties, required, additionalProperties: false }
|
|
1452
1478
|
},
|
|
1453
|
-
final
|
|
1479
|
+
final,
|
|
1480
|
+
{ owner: bridgeId }
|
|
1454
1481
|
)
|
|
1455
1482
|
);
|
|
1456
1483
|
};
|
|
@@ -1608,7 +1635,7 @@ function registerGridBridge(host, options) {
|
|
|
1608
1635
|
);
|
|
1609
1636
|
}
|
|
1610
1637
|
return {
|
|
1611
|
-
id:
|
|
1638
|
+
id: bridgeId,
|
|
1612
1639
|
title: adapter.title ?? adapter.id,
|
|
1613
1640
|
dispose: () => {
|
|
1614
1641
|
for (const d of disposers) d();
|
|
@@ -1623,6 +1650,7 @@ function registerSceneBridge(host, options) {
|
|
|
1623
1650
|
const { adapter } = options;
|
|
1624
1651
|
const agent = { ...DEFAULT_AGENT6, ...options.agent ?? {} };
|
|
1625
1652
|
const disposers = [];
|
|
1653
|
+
const bridgeId = `scene:${adapter.id}`;
|
|
1626
1654
|
ensureUndoToolsRegistered(host, { defaultAgentId: agent.id });
|
|
1627
1655
|
const target = (objectId) => ({
|
|
1628
1656
|
kind: "scene",
|
|
@@ -1648,7 +1676,8 @@ function registerSceneBridge(host, options) {
|
|
|
1648
1676
|
disposers.push(
|
|
1649
1677
|
host.registerTool(
|
|
1650
1678
|
{ name, description, inputSchema: { type: "object", properties, required, additionalProperties: false } },
|
|
1651
|
-
final
|
|
1679
|
+
final,
|
|
1680
|
+
{ owner: bridgeId }
|
|
1652
1681
|
)
|
|
1653
1682
|
);
|
|
1654
1683
|
};
|
|
@@ -1801,7 +1830,7 @@ function registerSceneBridge(host, options) {
|
|
|
1801
1830
|
true
|
|
1802
1831
|
);
|
|
1803
1832
|
return {
|
|
1804
|
-
id:
|
|
1833
|
+
id: bridgeId,
|
|
1805
1834
|
title: adapter.title ?? adapter.id,
|
|
1806
1835
|
dispose: () => {
|
|
1807
1836
|
for (const d of disposers) d();
|
|
@@ -1845,6 +1874,7 @@ function registerScreensBridge(host, options) {
|
|
|
1845
1874
|
const { adapter } = options;
|
|
1846
1875
|
const agent = { ...DEFAULT_AGENT7, ...options.agent ?? {} };
|
|
1847
1876
|
const disposers = [];
|
|
1877
|
+
const bridgeId = "screens";
|
|
1848
1878
|
ensureUndoToolsRegistered(host, { defaultAgentId: agent.id });
|
|
1849
1879
|
const target = (screenId) => ({
|
|
1850
1880
|
kind: "screens",
|
|
@@ -1868,7 +1898,8 @@ function registerScreensBridge(host, options) {
|
|
|
1868
1898
|
disposers.push(
|
|
1869
1899
|
host.registerTool(
|
|
1870
1900
|
{ name, description, inputSchema: { type: "object", properties, required, additionalProperties: false } },
|
|
1871
|
-
final
|
|
1901
|
+
final,
|
|
1902
|
+
{ owner: bridgeId }
|
|
1872
1903
|
)
|
|
1873
1904
|
);
|
|
1874
1905
|
};
|
|
@@ -2037,7 +2068,7 @@ function registerScreensBridge(host, options) {
|
|
|
2037
2068
|
(args) => target(String(args.screen ?? ""))
|
|
2038
2069
|
);
|
|
2039
2070
|
return {
|
|
2040
|
-
id:
|
|
2071
|
+
id: bridgeId,
|
|
2041
2072
|
title: "Screens",
|
|
2042
2073
|
dispose: () => {
|
|
2043
2074
|
for (const d of disposers) d();
|
|
@@ -2051,6 +2082,7 @@ function registerSlidesBridge(host, options) {
|
|
|
2051
2082
|
const { adapter } = options;
|
|
2052
2083
|
const agent = { ...DEFAULT_AGENT8, ...options.agent ?? {} };
|
|
2053
2084
|
const disposers = [];
|
|
2085
|
+
const bridgeId = "slides";
|
|
2054
2086
|
ensureUndoToolsRegistered(host, { defaultAgentId: agent.id });
|
|
2055
2087
|
const deckTarget = () => ({
|
|
2056
2088
|
kind: "deck",
|
|
@@ -2097,7 +2129,8 @@ function registerSlidesBridge(host, options) {
|
|
|
2097
2129
|
additionalProperties: false
|
|
2098
2130
|
}
|
|
2099
2131
|
},
|
|
2100
|
-
final
|
|
2132
|
+
final,
|
|
2133
|
+
{ owner: bridgeId }
|
|
2101
2134
|
)
|
|
2102
2135
|
);
|
|
2103
2136
|
};
|
|
@@ -2462,7 +2495,7 @@ function registerSlidesBridge(host, options) {
|
|
|
2462
2495
|
(args) => elementTarget(str(args?.slideId), str(args?.elementId))
|
|
2463
2496
|
);
|
|
2464
2497
|
return {
|
|
2465
|
-
id:
|
|
2498
|
+
id: bridgeId,
|
|
2466
2499
|
title: "Slides",
|
|
2467
2500
|
dispose: () => {
|
|
2468
2501
|
for (const d of disposers.splice(0)) d();
|
|
@@ -2497,6 +2530,7 @@ function registerMapBridge(host, options) {
|
|
|
2497
2530
|
const { adapter } = options;
|
|
2498
2531
|
const agent = { ...DEFAULT_AGENT9, ...options.agent ?? {} };
|
|
2499
2532
|
const disposers = [];
|
|
2533
|
+
const bridgeId = "map";
|
|
2500
2534
|
ensureUndoToolsRegistered(host, { defaultAgentId: agent.id });
|
|
2501
2535
|
const mTarget = (args, result) => ({
|
|
2502
2536
|
kind: "map",
|
|
@@ -2528,7 +2562,8 @@ function registerMapBridge(host, options) {
|
|
|
2528
2562
|
additionalProperties: false
|
|
2529
2563
|
}
|
|
2530
2564
|
},
|
|
2531
|
-
final
|
|
2565
|
+
final,
|
|
2566
|
+
{ owner: bridgeId }
|
|
2532
2567
|
)
|
|
2533
2568
|
);
|
|
2534
2569
|
};
|
|
@@ -2807,7 +2842,7 @@ function registerMapBridge(host, options) {
|
|
|
2807
2842
|
}
|
|
2808
2843
|
);
|
|
2809
2844
|
return {
|
|
2810
|
-
id:
|
|
2845
|
+
id: bridgeId,
|
|
2811
2846
|
title: "Map",
|
|
2812
2847
|
dispose: () => {
|
|
2813
2848
|
for (const d of disposers) d();
|
|
@@ -2819,6 +2854,7 @@ function registerMapBridge(host, options) {
|
|
|
2819
2854
|
function registerGitBridge(host, options) {
|
|
2820
2855
|
const agent = { id: "agent", name: "Agent", color: "#a855f7", ...options.agent ?? {} };
|
|
2821
2856
|
const disposers = [];
|
|
2857
|
+
const bridgeId = "git";
|
|
2822
2858
|
ensureUndoToolsRegistered(host, { defaultAgentId: agent.id });
|
|
2823
2859
|
const reg = (name, description, properties, required, handler, mutation2 = false) => {
|
|
2824
2860
|
const wrapped = async (args) => {
|
|
@@ -2838,7 +2874,7 @@ function registerGitBridge(host, options) {
|
|
|
2838
2874
|
name,
|
|
2839
2875
|
description,
|
|
2840
2876
|
inputSchema: { type: "object", properties, required, additionalProperties: false }
|
|
2841
|
-
}, final));
|
|
2877
|
+
}, final, { owner: bridgeId }));
|
|
2842
2878
|
};
|
|
2843
2879
|
reg("git_status", "Read normalized working-tree and branch status.", {}, [], async () => {
|
|
2844
2880
|
const result = await options.adapter.status();
|
|
@@ -2899,7 +2935,7 @@ function registerGitBridge(host, options) {
|
|
|
2899
2935
|
draft: { type: "boolean" },
|
|
2900
2936
|
apply: { type: "boolean" }
|
|
2901
2937
|
}, ["title", "sourceBranch", "targetBranch"]);
|
|
2902
|
-
return { id:
|
|
2938
|
+
return { id: bridgeId, title: "Git", dispose: () => disposers.forEach((dispose) => dispose()) };
|
|
2903
2939
|
}
|
|
2904
2940
|
|
|
2905
2941
|
// src/bridges/files.ts
|
|
@@ -2943,6 +2979,7 @@ function registerFilesBridge(host, options) {
|
|
|
2943
2979
|
const agent = { ...DEFAULT_AGENT10, ...options.agent ?? {} };
|
|
2944
2980
|
const pendingMode = options.pendingMode ?? true;
|
|
2945
2981
|
const disposers = [];
|
|
2982
|
+
const bridgeId = "files";
|
|
2946
2983
|
const guard = (path) => {
|
|
2947
2984
|
if (options.root !== void 0) assertPathWithinRoot(options.root, path);
|
|
2948
2985
|
return path;
|
|
@@ -2978,7 +3015,8 @@ function registerFilesBridge(host, options) {
|
|
|
2978
3015
|
additionalProperties: false
|
|
2979
3016
|
}
|
|
2980
3017
|
},
|
|
2981
|
-
final
|
|
3018
|
+
final,
|
|
3019
|
+
{ owner: bridgeId }
|
|
2982
3020
|
)
|
|
2983
3021
|
);
|
|
2984
3022
|
};
|
|
@@ -3168,7 +3206,7 @@ function registerFilesBridge(host, options) {
|
|
|
3168
3206
|
fTarget
|
|
3169
3207
|
);
|
|
3170
3208
|
return {
|
|
3171
|
-
id:
|
|
3209
|
+
id: bridgeId,
|
|
3172
3210
|
title: "Files",
|
|
3173
3211
|
dispose: () => {
|
|
3174
3212
|
for (const d of disposers) d();
|
|
@@ -3184,6 +3222,7 @@ function registerTerminalBridge(host, options) {
|
|
|
3184
3222
|
const pendingMode = options.pendingMode ?? true;
|
|
3185
3223
|
const screenId = options.screenId ?? options.adapter?.screenId;
|
|
3186
3224
|
const disposers = [];
|
|
3225
|
+
const bridgeId = "terminal";
|
|
3187
3226
|
const staged = /* @__PURE__ */ new Map();
|
|
3188
3227
|
let seq = 0;
|
|
3189
3228
|
ensureUndoToolsRegistered(host);
|
|
@@ -3250,7 +3289,8 @@ function registerTerminalBridge(host, options) {
|
|
|
3250
3289
|
description,
|
|
3251
3290
|
inputSchema: { type: "object", properties, required, additionalProperties: false }
|
|
3252
3291
|
},
|
|
3253
|
-
final
|
|
3292
|
+
final,
|
|
3293
|
+
{ owner: bridgeId }
|
|
3254
3294
|
)
|
|
3255
3295
|
);
|
|
3256
3296
|
};
|
|
@@ -3447,7 +3487,7 @@ function registerTerminalBridge(host, options) {
|
|
|
3447
3487
|
);
|
|
3448
3488
|
}
|
|
3449
3489
|
return {
|
|
3450
|
-
id:
|
|
3490
|
+
id: bridgeId,
|
|
3451
3491
|
title: "Terminal",
|
|
3452
3492
|
dispose: () => {
|
|
3453
3493
|
disposers.forEach((d) => d());
|
|
@@ -3492,6 +3532,7 @@ function registerNavigationBridge(host, options) {
|
|
|
3492
3532
|
const agent = { ...DEFAULT_AGENT12, ...options.agent ?? {} };
|
|
3493
3533
|
const pendingMode = options.pendingMode ?? true;
|
|
3494
3534
|
const disposers = [];
|
|
3535
|
+
const bridgeId = "navigation";
|
|
3495
3536
|
let groundedRevision = null;
|
|
3496
3537
|
const staleIntent = async () => {
|
|
3497
3538
|
const current = await adapter.getRevision?.();
|
|
@@ -3535,7 +3576,8 @@ function registerNavigationBridge(host, options) {
|
|
|
3535
3576
|
description,
|
|
3536
3577
|
inputSchema: { type: "object", properties, required, additionalProperties: false }
|
|
3537
3578
|
},
|
|
3538
|
-
final
|
|
3579
|
+
final,
|
|
3580
|
+
{ owner: bridgeId }
|
|
3539
3581
|
)
|
|
3540
3582
|
);
|
|
3541
3583
|
};
|
|
@@ -3771,7 +3813,7 @@ function registerNavigationBridge(host, options) {
|
|
|
3771
3813
|
(args) => target(`Submit ${String(args.handle ?? "")}`, String(args.handle ?? ""))
|
|
3772
3814
|
);
|
|
3773
3815
|
return {
|
|
3774
|
-
id:
|
|
3816
|
+
id: bridgeId,
|
|
3775
3817
|
title: "Co-browsing",
|
|
3776
3818
|
dispose: () => {
|
|
3777
3819
|
for (const d of disposers) d();
|
|
@@ -3789,6 +3831,7 @@ function registerCatalogBridge(host, options) {
|
|
|
3789
3831
|
const pendingMode = options.pendingMode ?? true;
|
|
3790
3832
|
const catalogId = adapter.id ?? "catalog";
|
|
3791
3833
|
const disposers = [];
|
|
3834
|
+
const bridgeId = `catalog:${catalogId}`;
|
|
3792
3835
|
ensureUndoToolsRegistered(host, { defaultAgentId: agent.id });
|
|
3793
3836
|
const target = (elementId, label) => ({
|
|
3794
3837
|
kind: "custom",
|
|
@@ -3814,7 +3857,8 @@ function registerCatalogBridge(host, options) {
|
|
|
3814
3857
|
disposers.push(
|
|
3815
3858
|
host.registerTool(
|
|
3816
3859
|
{ name, description, inputSchema: { type: "object", properties, required, additionalProperties: false } },
|
|
3817
|
-
final
|
|
3860
|
+
final,
|
|
3861
|
+
{ owner: bridgeId }
|
|
3818
3862
|
)
|
|
3819
3863
|
);
|
|
3820
3864
|
};
|
|
@@ -4088,7 +4132,7 @@ function registerCatalogBridge(host, options) {
|
|
|
4088
4132
|
(args) => target(str4(args.priceId), `checkout ${str4(args.priceId)}`)
|
|
4089
4133
|
);
|
|
4090
4134
|
return {
|
|
4091
|
-
id:
|
|
4135
|
+
id: bridgeId,
|
|
4092
4136
|
title: adapter.title ?? "Catalog",
|
|
4093
4137
|
dispose: () => {
|
|
4094
4138
|
for (const d of disposers.splice(0)) d();
|
|
@@ -4106,6 +4150,7 @@ function registerFeaturesBridge(host, options) {
|
|
|
4106
4150
|
const pendingMode = options.pendingMode ?? true;
|
|
4107
4151
|
const featuresId = adapter.id ?? "features";
|
|
4108
4152
|
const disposers = [];
|
|
4153
|
+
const bridgeId = `features:${featuresId}`;
|
|
4109
4154
|
ensureUndoToolsRegistered(host, { defaultAgentId: agent.id });
|
|
4110
4155
|
const target = (elementId, label) => ({
|
|
4111
4156
|
kind: "custom",
|
|
@@ -4131,7 +4176,8 @@ function registerFeaturesBridge(host, options) {
|
|
|
4131
4176
|
disposers.push(
|
|
4132
4177
|
host.registerTool(
|
|
4133
4178
|
{ name, description, inputSchema: { type: "object", properties, required, additionalProperties: false } },
|
|
4134
|
-
final
|
|
4179
|
+
final,
|
|
4180
|
+
{ owner: bridgeId }
|
|
4135
4181
|
)
|
|
4136
4182
|
);
|
|
4137
4183
|
};
|
|
@@ -4306,7 +4352,7 @@ function registerFeaturesBridge(host, options) {
|
|
|
4306
4352
|
(args) => target(str5(args.feature), `consume ${str5(args.feature)}`)
|
|
4307
4353
|
);
|
|
4308
4354
|
return {
|
|
4309
|
-
id:
|
|
4355
|
+
id: bridgeId,
|
|
4310
4356
|
title: adapter.title ?? "Features",
|
|
4311
4357
|
dispose: () => {
|
|
4312
4358
|
for (const d of disposers.splice(0)) d();
|
|
@@ -4341,6 +4387,7 @@ function registerPasskeyBridge(host, options) {
|
|
|
4341
4387
|
const agent = { ...DEFAULT_AGENT15, ...options.agent ?? {} };
|
|
4342
4388
|
const surfaceId = adapter.id ?? "passkeys";
|
|
4343
4389
|
const disposers = [];
|
|
4390
|
+
const bridgeId = `passkeys:${surfaceId}`;
|
|
4344
4391
|
ensureUndoToolsRegistered(host, { defaultAgentId: agent.id });
|
|
4345
4392
|
const target = (elementId, label) => ({
|
|
4346
4393
|
kind: "custom",
|
|
@@ -4375,7 +4422,8 @@ function registerPasskeyBridge(host, options) {
|
|
|
4375
4422
|
additionalProperties: false
|
|
4376
4423
|
}
|
|
4377
4424
|
},
|
|
4378
|
-
final
|
|
4425
|
+
final,
|
|
4426
|
+
{ owner: bridgeId }
|
|
4379
4427
|
)
|
|
4380
4428
|
);
|
|
4381
4429
|
};
|
|
@@ -4496,7 +4544,7 @@ function registerPasskeyBridge(host, options) {
|
|
|
4496
4544
|
(args) => target(void 0, `begin enrollment${args.name ? ` (${str6(args.name)})` : ""}`)
|
|
4497
4545
|
);
|
|
4498
4546
|
return {
|
|
4499
|
-
id:
|
|
4547
|
+
id: bridgeId,
|
|
4500
4548
|
title: adapter.title ?? "Passkeys",
|
|
4501
4549
|
dispose: () => {
|
|
4502
4550
|
for (const d of disposers.splice(0)) d();
|
|
@@ -4512,6 +4560,7 @@ function registerDocBridge(host, options) {
|
|
|
4512
4560
|
const makeNode = options.makeNode ?? (({ id, type, parent, order }, props) => ({ id, type, parent, order, props }));
|
|
4513
4561
|
const describeNode = options.describeNode ?? ((n) => ({ id: n.id, type: n.type, parent: n.parent, props: Object.keys(n.props ?? {}) }));
|
|
4514
4562
|
const disposers = [];
|
|
4563
|
+
const bridgeId = surface;
|
|
4515
4564
|
ensureUndoToolsRegistered(host, { defaultAgentId: agent.id });
|
|
4516
4565
|
let idSeq = 0;
|
|
4517
4566
|
const mintId = () => {
|
|
@@ -4572,7 +4621,8 @@ function registerDocBridge(host, options) {
|
|
|
4572
4621
|
disposers.push(
|
|
4573
4622
|
host.registerTool(
|
|
4574
4623
|
{ name, description, inputSchema: { type: "object", properties, required, additionalProperties: false } },
|
|
4575
|
-
final
|
|
4624
|
+
final,
|
|
4625
|
+
{ owner: bridgeId }
|
|
4576
4626
|
)
|
|
4577
4627
|
);
|
|
4578
4628
|
};
|
|
@@ -4747,7 +4797,7 @@ function registerDocBridge(host, options) {
|
|
|
4747
4797
|
false
|
|
4748
4798
|
);
|
|
4749
4799
|
return {
|
|
4750
|
-
id:
|
|
4800
|
+
id: bridgeId,
|
|
4751
4801
|
title: surface,
|
|
4752
4802
|
dispose: () => {
|
|
4753
4803
|
for (const d of disposers) d();
|
|
@@ -4900,7 +4950,9 @@ function registerScreenDocBridge(host, options) {
|
|
|
4900
4950
|
authored.length ? `${authored.length} addressable, ${syntheticCount} positional` : `no addressable ids \u2014 all ${syntheticCount} nodes are positional`,
|
|
4901
4951
|
{ addressable: authored, syntheticCount }
|
|
4902
4952
|
);
|
|
4903
|
-
})
|
|
4953
|
+
}),
|
|
4954
|
+
// Same registrant as the doc bridge above, which registers under its surface.
|
|
4955
|
+
{ owner: surface }
|
|
4904
4956
|
);
|
|
4905
4957
|
return {
|
|
4906
4958
|
id: surface,
|