@particle-academy/agent-integrations 0.6.3 → 0.7.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/bridges/artboard.d.cts +78 -0
- package/dist/bridges/artboard.d.ts +78 -0
- package/dist/bridges-artboard.cjs +576 -0
- package/dist/bridges-artboard.cjs.map +1 -0
- package/dist/bridges-artboard.js +418 -0
- package/dist/bridges-artboard.js.map +1 -0
- package/dist/index.js +2 -2
- package/package.json +7 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/bridges/artboard.ts"],"names":[],"mappings":"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","file":"bridges-artboard.js","sourcesContent":["import { textResult, errorResult } from \"../mcp/server\";\nimport type { ToolHost } from \"../mcp/tool-host\";\nimport type { JsonObject } from \"../mcp/types\";\nimport type { Bridge } from \"./types\";\nimport { wrapToolWithActivity } from \"../presence/wrap-tool-with-activity\";\nimport type { AgentTarget } from \"../presence/types\";\nimport { pushUndoEntry } from \"../undo/undo-stack\";\nimport { ensureUndoToolsRegistered } from \"../undo/undo-tools\";\n\n/**\n * Transport-level JSON shapes. These intentionally mirror fancy-artboard's\n * public `ArtBoardValue` but are defined LOCALLY so this bridge builds\n * independently of the sibling package — they are plain JSON crossing the\n * MCP wire, not the live component types. Keep them in sync with\n * @particle-academy/fancy-artboard's public surface.\n */\ntype Viewport = { x: number; y: number; zoom: number };\ntype ArtPieceContent =\n | { kind: \"image\"; src: string; alt?: string }\n | { kind: \"html\"; html: string }\n | { kind: \"node\" };\ntype ArtPieceData = {\n id: string;\n label?: string;\n width?: number;\n height?: number;\n content: ArtPieceContent;\n pending?: boolean;\n};\ntype ArtSectionData = {\n id: string;\n title: string;\n subtitle?: string;\n pieces: ArtPieceData[];\n};\ntype ArtBoardValue = { sections: ArtSectionData[] };\n\n/**\n * State accessors / mutators the bridge needs from the host. The host owns\n * artboard state (controlled props on fancy-artboard components); the bridge\n * calls into these to read or change it.\n */\nexport type ArtboardBridgeAdapter = {\n getValue: () => ArtBoardValue;\n setValue: (next: ArtBoardValue | ((prev: ArtBoardValue) => ArtBoardValue)) => void;\n getViewport: () => Viewport;\n setViewport: (next: Viewport) => void;\n getFocus: () => string | null;\n setFocus: (id: string | null) => void;\n /** Optional: agent presence cursor (for the visualizer). */\n setAgentCursor?: (cursor: { x: number; y: number } | null) => void;\n};\n\nexport type ArtboardBridgeOptions = {\n adapter: ArtboardBridgeAdapter;\n /** Identity used when the agent stamps authorship / cursor. */\n agent?: { id: string; name?: string; color?: string };\n};\n\nconst DEFAULT_AGENT = { id: \"agent\", name: \"Agent\", color: \"#a855f7\" };\n\nconst num = (v: unknown, fallback?: number): number =>\n typeof v === \"number\" && Number.isFinite(v) ? v : fallback ?? 0;\nconst str = (v: unknown, fallback = \"\"): string => (typeof v === \"string\" ? v : fallback);\n\nconst newId = (prefix: string) =>\n `${prefix}_${Date.now().toString(36)}_${Math.random().toString(36).slice(2, 7)}`;\n\n/** Deep-clone helper for snapshotting pieces/sections for undo closures. */\nconst clone = <T,>(v: T): T => JSON.parse(JSON.stringify(v)) as T;\n\n/** Coerce arbitrary JSON into a valid ArtPieceContent, defaulting to a node. */\nconst coerceContent = (v: unknown): ArtPieceContent => {\n if (v && typeof v === \"object\") {\n const c = v as Record<string, unknown>;\n if (c.kind === \"image\") return { kind: \"image\", src: str(c.src), ...(c.alt !== undefined ? { alt: str(c.alt) } : {}) };\n if (c.kind === \"html\") return { kind: \"html\", html: str(c.html) };\n if (c.kind === \"node\") return { kind: \"node\" };\n }\n return { kind: \"node\" };\n};\n\n/**\n * registerArtboardBridge — wires a full MCP tool set against a fancy-artboard\n * session controlled by the host. Returns a Bridge handle the host can dispose\n * to tear everything down.\n */\nexport function registerArtboardBridge(\n host: ToolHost,\n options: ArtboardBridgeOptions,\n): Bridge {\n const { adapter } = options;\n const agent = { ...DEFAULT_AGENT, ...(options.agent ?? {}) };\n const disposers: Array<() => void> = [];\n\n // Register agent_undo / agent_redo / agent_history once per server. Idempotent.\n ensureUndoToolsRegistered(host, { defaultAgentId: agent.id });\n\n // Activity-target resolver shared by every mutation tool. Pulls the touched\n // piece/section id from the result (structuredContent) when present, falling\n // back to the args id for rename/remove/focus tools.\n const abTarget = (args: any, result: any): AgentTarget => ({\n kind: \"artboard\",\n id:\n (result?.structuredContent?.id as string | undefined) ??\n (args?.pieceId as string | undefined) ??\n (args?.sectionId as string | undefined),\n } as AgentTarget);\n\n const reg = (\n name: string,\n description: string,\n inputProperties: Record<string, unknown>,\n required: string[],\n handler: (args: JsonObject) => Promise<any> | any,\n /** Optional: resolve the activity target so the presence layer can render\n * a focus indicator on the touched element. Read tools omit this. */\n resolveTarget?: (args: JsonObject, result: any) => AgentTarget | null,\n ) => {\n const wrapped = async (args: JsonObject) => {\n try {\n return await handler(args);\n } catch (e) {\n return errorResult(e instanceof Error ? e.message : String(e));\n }\n };\n const final = resolveTarget\n ? wrapToolWithActivity(wrapped, {\n toolName: name,\n agent: { id: agent.id, name: agent.name, color: agent.color },\n kind: \"artboard\",\n resolveTarget: ({ args, result }) => resolveTarget(args, result),\n })\n : wrapped;\n disposers.push(\n host.registerTool(\n {\n name,\n description,\n inputSchema: {\n type: \"object\",\n properties: inputProperties as any,\n required,\n additionalProperties: false,\n },\n },\n final as any,\n ),\n );\n };\n\n // ───────────── Read tools ─────────────\n\n reg(\"artboard_get_state\", \"Get the full board state: viewport, focus, all sections and pieces.\", {}, [], () => {\n const state = {\n viewport: adapter.getViewport(),\n focus: adapter.getFocus(),\n sections: adapter.getValue().sections,\n };\n return textResult(JSON.stringify(state, null, 2), state);\n });\n\n reg(\"artboard_list_pieces\", \"List sections and their pieces with id, label, and content kind.\", {}, [], () => {\n const lines: string[] = [];\n const summary: Array<{ sectionId: string; title: string; pieces: Array<{ id: string; label?: string; kind: string; pending?: boolean }> }> = [];\n for (const s of adapter.getValue().sections) {\n lines.push(`section ${s.id}: \"${s.title}\"`);\n const pieces = s.pieces.map((p) => ({\n id: p.id,\n ...(p.label !== undefined ? { label: p.label } : {}),\n kind: p.content.kind,\n ...(p.pending ? { pending: true } : {}),\n }));\n for (const p of s.pieces) {\n lines.push(` piece ${p.id}: ${p.label ? `\"${p.label}\" ` : \"\"}[${p.content.kind}]${p.pending ? \" (pending)\" : \"\"}`);\n }\n summary.push({ sectionId: s.id, title: s.title, pieces });\n }\n return textResult(lines.join(\"\\n\") || \"(empty board)\", summary);\n });\n\n // ───────────── Piece tools ─────────────\n\n reg(\n \"artboard_add_piece\",\n \"Add a piece to a section. New agent-added pieces default to pending:true (trust-but-verify — a human confirms before it is final).\",\n {\n sectionId: { type: \"string\" },\n piece: {\n type: \"object\",\n description: \"Piece spec: { label?, width?, height?, content }. content is { kind: 'image', src, alt? } | { kind: 'html', html } | { kind: 'node' }.\",\n },\n index: { type: \"number\", description: \"Insertion index within the section. Defaults to the end.\" },\n },\n [\"sectionId\", \"piece\"],\n (args) => {\n const sectionId = str(args.sectionId);\n const section = adapter.getValue().sections.find((s) => s.id === sectionId);\n if (!section) return errorResult(`No section with id ${sectionId}`);\n const spec = (args.piece ?? {}) as Record<string, unknown>;\n const piece: ArtPieceData = {\n id: newId(\"p\"),\n ...(spec.label !== undefined ? { label: str(spec.label) } : {}),\n ...(spec.width !== undefined ? { width: num(spec.width) } : {}),\n ...(spec.height !== undefined ? { height: num(spec.height) } : {}),\n content: coerceContent(spec.content),\n pending: true,\n };\n const insertAt =\n args.index !== undefined ? Math.max(0, Math.min(num(args.index), section.pieces.length)) : section.pieces.length;\n adapter.setValue((prev) => ({\n sections: prev.sections.map((s) =>\n s.id !== sectionId ? s : { ...s, pieces: [...s.pieces.slice(0, insertAt), piece, ...s.pieces.slice(insertAt)] },\n ),\n }));\n pushUndoEntry(agent.id, {\n timestamp: Date.now(),\n bridgeId: \"artboard\",\n action: \"artboard_add_piece\",\n label: `Added piece ${piece.id} to ${sectionId}`,\n undo: () =>\n adapter.setValue((prev) => ({\n sections: prev.sections.map((s) =>\n s.id !== sectionId ? s : { ...s, pieces: s.pieces.filter((p) => p.id !== piece.id) },\n ),\n })),\n redo: () =>\n adapter.setValue((prev) => ({\n sections: prev.sections.map((s) =>\n s.id !== sectionId ? s : { ...s, pieces: [...s.pieces.slice(0, insertAt), piece, ...s.pieces.slice(insertAt)] },\n ),\n })),\n });\n return textResult(`Added piece ${piece.id} to section ${sectionId} (pending)`, piece);\n },\n abTarget,\n );\n\n reg(\n \"artboard_remove_piece\",\n \"Remove a piece by id.\",\n { pieceId: { type: \"string\" } },\n [\"pieceId\"],\n (args) => {\n const pieceId = str(args.pieceId);\n let removed: ArtPieceData | null = null;\n let fromSection: string | null = null;\n let oldIndex = -1;\n for (const s of adapter.getValue().sections) {\n const idx = s.pieces.findIndex((p) => p.id === pieceId);\n if (idx !== -1) {\n removed = clone(s.pieces[idx]);\n fromSection = s.id;\n oldIndex = idx;\n break;\n }\n }\n if (!removed || fromSection === null) return errorResult(`No piece with id ${pieceId}`);\n const sectionId = fromSection;\n const snapshot = removed;\n const at = oldIndex;\n adapter.setValue((prev) => ({\n sections: prev.sections.map((s) =>\n s.id !== sectionId ? s : { ...s, pieces: s.pieces.filter((p) => p.id !== pieceId) },\n ),\n }));\n pushUndoEntry(agent.id, {\n timestamp: Date.now(),\n bridgeId: \"artboard\",\n action: \"artboard_remove_piece\",\n label: `Removed piece ${pieceId}`,\n undo: () =>\n adapter.setValue((prev) => ({\n sections: prev.sections.map((s) =>\n s.id !== sectionId ? s : { ...s, pieces: [...s.pieces.slice(0, at), clone(snapshot), ...s.pieces.slice(at)] },\n ),\n })),\n redo: () =>\n adapter.setValue((prev) => ({\n sections: prev.sections.map((s) =>\n s.id !== sectionId ? s : { ...s, pieces: s.pieces.filter((p) => p.id !== pieceId) },\n ),\n })),\n });\n return textResult(`Removed piece ${pieceId}`, { id: pieceId });\n },\n abTarget,\n );\n\n reg(\n \"artboard_reorder_piece\",\n \"Move a piece to a new index, optionally into a different section.\",\n {\n pieceId: { type: \"string\" },\n sectionId: { type: \"string\", description: \"Target section id. Defaults to the piece's current section.\" },\n toIndex: { type: \"number\" },\n },\n [\"pieceId\", \"toIndex\"],\n (args) => {\n const pieceId = str(args.pieceId);\n const before = adapter.getValue();\n // Locate the piece.\n let piece: ArtPieceData | null = null;\n let srcSection: string | null = null;\n for (const s of before.sections) {\n const found = s.pieces.find((p) => p.id === pieceId);\n if (found) {\n piece = found;\n srcSection = s.id;\n break;\n }\n }\n if (!piece || srcSection === null) return errorResult(`No piece with id ${pieceId}`);\n const dstSection = args.sectionId !== undefined ? str(args.sectionId) : srcSection;\n if (!before.sections.some((s) => s.id === dstSection)) return errorResult(`No section with id ${dstSection}`);\n const toIndex = Math.max(0, num(args.toIndex));\n const moving = piece;\n const snapshot = clone(before);\n adapter.setValue((prev) => {\n // Remove from wherever it currently is.\n const stripped = prev.sections.map((s) => ({ ...s, pieces: s.pieces.filter((p) => p.id !== pieceId) }));\n return {\n sections: stripped.map((s) => {\n if (s.id !== dstSection) return s;\n const clamped = Math.min(toIndex, s.pieces.length);\n return { ...s, pieces: [...s.pieces.slice(0, clamped), moving, ...s.pieces.slice(clamped)] };\n }),\n };\n });\n pushUndoEntry(agent.id, {\n timestamp: Date.now(),\n bridgeId: \"artboard\",\n action: \"artboard_reorder_piece\",\n label: `Reordered piece ${pieceId}`,\n undo: () => adapter.setValue(() => clone(snapshot)),\n redo: () =>\n adapter.setValue((prev) => {\n const stripped = prev.sections.map((s) => ({ ...s, pieces: s.pieces.filter((p) => p.id !== pieceId) }));\n return {\n sections: stripped.map((s) => {\n if (s.id !== dstSection) return s;\n const clamped = Math.min(toIndex, s.pieces.length);\n return { ...s, pieces: [...s.pieces.slice(0, clamped), moving, ...s.pieces.slice(clamped)] };\n }),\n };\n }),\n });\n return textResult(`Reordered piece ${pieceId} → ${dstSection}[${toIndex}]`, { id: pieceId, sectionId: dstSection, toIndex });\n },\n abTarget,\n );\n\n reg(\n \"artboard_rename_piece\",\n \"Set a piece's label.\",\n { pieceId: { type: \"string\" }, label: { type: \"string\" } },\n [\"pieceId\", \"label\"],\n (args) => {\n const pieceId = str(args.pieceId);\n const label = str(args.label);\n const existing = adapter.getValue().sections.flatMap((s) => s.pieces).find((p) => p.id === pieceId);\n if (!existing) return errorResult(`No piece with id ${pieceId}`);\n const prevLabel = existing.label;\n const apply = (l: string | undefined) =>\n adapter.setValue((prev) => ({\n sections: prev.sections.map((s) => ({\n ...s,\n pieces: s.pieces.map((p) => (p.id !== pieceId ? p : { ...p, ...(l !== undefined ? { label: l } : {}) })),\n })),\n }));\n apply(label);\n pushUndoEntry(agent.id, {\n timestamp: Date.now(),\n bridgeId: \"artboard\",\n action: \"artboard_rename_piece\",\n label: `Renamed piece ${pieceId}`,\n undo: () => apply(prevLabel),\n redo: () => apply(label),\n });\n return textResult(`Renamed piece ${pieceId} → \"${label}\"`, { id: pieceId, label });\n },\n abTarget,\n );\n\n reg(\n \"artboard_set_piece_content\",\n \"Replace a piece's content. content is { kind: 'image', src, alt? } | { kind: 'html', html } | { kind: 'node' }.\",\n { pieceId: { type: \"string\" }, content: { type: \"object\" } },\n [\"pieceId\", \"content\"],\n (args) => {\n const pieceId = str(args.pieceId);\n const existing = adapter.getValue().sections.flatMap((s) => s.pieces).find((p) => p.id === pieceId);\n if (!existing) return errorResult(`No piece with id ${pieceId}`);\n const prevContent = clone(existing.content);\n const nextContent = coerceContent(args.content);\n const apply = (c: ArtPieceContent) =>\n adapter.setValue((prev) => ({\n sections: prev.sections.map((s) => ({\n ...s,\n pieces: s.pieces.map((p) => (p.id !== pieceId ? p : { ...p, content: clone(c) })),\n })),\n }));\n apply(nextContent);\n pushUndoEntry(agent.id, {\n timestamp: Date.now(),\n bridgeId: \"artboard\",\n action: \"artboard_set_piece_content\",\n label: `Set content of piece ${pieceId}`,\n undo: () => apply(prevContent),\n redo: () => apply(nextContent),\n });\n return textResult(`Set content of piece ${pieceId} → ${nextContent.kind}`, { id: pieceId, content: nextContent });\n },\n abTarget,\n );\n\n reg(\n \"artboard_focus_piece\",\n \"Focus a piece by id (or pass null to clear focus).\",\n { pieceId: { type: [\"string\", \"null\"] } },\n [],\n (args) => {\n const raw = args.pieceId;\n const pieceId = typeof raw === \"string\" ? raw : null;\n if (pieceId !== null && !adapter.getValue().sections.some((s) => s.pieces.some((p) => p.id === pieceId))) {\n return errorResult(`No piece with id ${pieceId}`);\n }\n adapter.setFocus(pieceId);\n return textResult(pieceId ? `Focused piece ${pieceId}` : \"Cleared focus\", { id: pieceId });\n },\n abTarget,\n );\n\n // ───────────── Section tools ─────────────\n\n reg(\n \"artboard_add_section\",\n \"Add a section. Provide an explicit id or one is generated.\",\n {\n section: { type: \"object\", description: \"Section spec: { id?, title, subtitle? }.\" },\n index: { type: \"number\", description: \"Insertion index. Defaults to the end.\" },\n },\n [\"section\"],\n (args) => {\n const spec = (args.section ?? {}) as Record<string, unknown>;\n const section: ArtSectionData = {\n id: spec.id !== undefined ? str(spec.id) : newId(\"sec\"),\n title: str(spec.title),\n ...(spec.subtitle !== undefined ? { subtitle: str(spec.subtitle) } : {}),\n pieces: [],\n };\n if (adapter.getValue().sections.some((s) => s.id === section.id)) {\n return errorResult(`Section id ${section.id} already exists`);\n }\n const insertAt =\n args.index !== undefined\n ? Math.max(0, Math.min(num(args.index), adapter.getValue().sections.length))\n : adapter.getValue().sections.length;\n adapter.setValue((prev) => ({\n sections: [...prev.sections.slice(0, insertAt), section, ...prev.sections.slice(insertAt)],\n }));\n pushUndoEntry(agent.id, {\n timestamp: Date.now(),\n bridgeId: \"artboard\",\n action: \"artboard_add_section\",\n label: `Added section ${section.id}`,\n undo: () => adapter.setValue((prev) => ({ sections: prev.sections.filter((s) => s.id !== section.id) })),\n redo: () =>\n adapter.setValue((prev) => ({\n sections: [...prev.sections.slice(0, insertAt), section, ...prev.sections.slice(insertAt)],\n })),\n });\n return textResult(`Added section ${section.id}`, section);\n },\n abTarget,\n );\n\n reg(\n \"artboard_rename_section\",\n \"Set a section's title and optionally its subtitle.\",\n { sectionId: { type: \"string\" }, title: { type: \"string\" }, subtitle: { type: \"string\" } },\n [\"sectionId\", \"title\"],\n (args) => {\n const sectionId = str(args.sectionId);\n const existing = adapter.getValue().sections.find((s) => s.id === sectionId);\n if (!existing) return errorResult(`No section with id ${sectionId}`);\n const prevTitle = existing.title;\n const prevSubtitle = existing.subtitle;\n const title = str(args.title);\n const hasSubtitle = args.subtitle !== undefined;\n const subtitle = hasSubtitle ? str(args.subtitle) : prevSubtitle;\n const apply = (t: string, sub: string | undefined) =>\n adapter.setValue((prev) => ({\n sections: prev.sections.map((s) =>\n s.id !== sectionId\n ? s\n : { ...s, title: t, ...(sub !== undefined ? { subtitle: sub } : {}) },\n ),\n }));\n apply(title, subtitle);\n pushUndoEntry(agent.id, {\n timestamp: Date.now(),\n bridgeId: \"artboard\",\n action: \"artboard_rename_section\",\n label: `Renamed section ${sectionId}`,\n undo: () => apply(prevTitle, prevSubtitle),\n redo: () => apply(title, subtitle),\n });\n return textResult(`Renamed section ${sectionId} → \"${title}\"`, { id: sectionId, title, subtitle });\n },\n abTarget,\n );\n\n // ───────────── Viewport ─────────────\n\n reg(\n \"artboard_set_viewport\",\n \"Pan / zoom the viewport.\",\n { x: { type: \"number\" }, y: { type: \"number\" }, zoom: { type: \"number\" } },\n [],\n (args) => {\n const v = adapter.getViewport();\n const next: Viewport = {\n x: args.x !== undefined ? num(args.x) : v.x,\n y: args.y !== undefined ? num(args.y) : v.y,\n zoom: args.zoom !== undefined ? num(args.zoom) : v.zoom,\n };\n adapter.setViewport(next);\n return textResult(`Viewport → ${JSON.stringify(next)}`, next);\n },\n abTarget,\n );\n\n return {\n id: \"artboard\",\n title: \"Artboard\",\n dispose: () => {\n for (const d of disposers) d();\n adapter.setAgentCursor?.(null);\n },\n };\n}\n"]}
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
export { useUndoStack } from './chunk-RGO42EQ6.js';
|
|
2
|
+
export { registerChartsBridge } from './chunk-NTDZWGYB.js';
|
|
1
3
|
export { registerSceneBridge } from './chunk-XRAJSOPS.js';
|
|
2
4
|
export { registerScreensBridge } from './chunk-57ZDHD53.js';
|
|
3
5
|
export { registerSlidesBridge } from './chunk-NE3GIGQD.js';
|
|
@@ -6,7 +8,6 @@ export { AgentActivityHighlight, AgentCursor, AgentPanel, ShareControls } from '
|
|
|
6
8
|
import './chunk-IJ6JX5VC.js';
|
|
7
9
|
export { SseRelayTransport, attachSseRelay, buildShareConfig, buildShareUrl, createSessionDescriptor, describeSession, readSessionFromUrl } from './chunk-LVQXIUJH.js';
|
|
8
10
|
export { useAgentActivity, useAgentActivityForScreen } from './chunk-X66JWQBB.js';
|
|
9
|
-
export { useUndoStack } from './chunk-RGO42EQ6.js';
|
|
10
11
|
export { RelayTransport, attachRelay } from './chunk-G6N2TQVO.js';
|
|
11
12
|
export { InProcessTransport, attachInProcess } from './chunk-AFUULW5E.js';
|
|
12
13
|
export { clearStack as clearUndoStack, ensureUndoToolsRegistered, pushUndoEntry, readHistory as readUndoHistory, redoOne, registerUndoTools, resetAllUndoStacks, undoOne } from './chunk-GQ7XXK7G.js';
|
|
@@ -14,7 +15,6 @@ import { registerFormBridge } from './chunk-4BL5M3U3.js';
|
|
|
14
15
|
export { registerFormBridge } from './chunk-4BL5M3U3.js';
|
|
15
16
|
export { registerSheetsBridge } from './chunk-IANI25IT.js';
|
|
16
17
|
export { registerCodeBridge } from './chunk-HSTW7ZNO.js';
|
|
17
|
-
export { registerChartsBridge } from './chunk-NTDZWGYB.js';
|
|
18
18
|
export { wrapToolWithActivity } from './chunk-52S7XYZK.js';
|
|
19
19
|
import { onActivity } from './chunk-JU2N4KK6.js';
|
|
20
20
|
export { emitActivity, onActivity, readActivityHistory, resetActivityRegistry } from './chunk-JU2N4KK6.js';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@particle-academy/agent-integrations",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"description": "MCP-driven agent presence in collab sessions: per-session micro-MCP server, pluggable bridges to fancy-* packages, and agent UX components (panel + on-canvas cursor).",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -29,6 +29,10 @@
|
|
|
29
29
|
"import": { "types": "./dist/bridges/whiteboard.d.ts", "default": "./dist/bridges-whiteboard.js" },
|
|
30
30
|
"require": { "types": "./dist/bridges/whiteboard.d.cts", "default": "./dist/bridges-whiteboard.cjs" }
|
|
31
31
|
},
|
|
32
|
+
"./bridges/artboard": {
|
|
33
|
+
"import": { "types": "./dist/bridges/artboard.d.ts", "default": "./dist/bridges-artboard.js" },
|
|
34
|
+
"require": { "types": "./dist/bridges/artboard.d.cts", "default": "./dist/bridges-artboard.cjs" }
|
|
35
|
+
},
|
|
32
36
|
"./bridges/flow": {
|
|
33
37
|
"import": { "types": "./dist/bridges/flow.d.ts", "default": "./dist/bridges-flow.js" },
|
|
34
38
|
"require": { "types": "./dist/bridges/flow.d.cts", "default": "./dist/bridges-flow.cjs" }
|
|
@@ -100,12 +104,14 @@
|
|
|
100
104
|
"react": "^18.0.0 || ^19.0.0",
|
|
101
105
|
"react-dom": "^18.0.0 || ^19.0.0",
|
|
102
106
|
"@particle-academy/fancy-whiteboard": "^0.1.0",
|
|
107
|
+
"@particle-academy/fancy-artboard": "^0.1.0",
|
|
103
108
|
"@particle-academy/fancy-flow": "^0.2.0 || ^0.3.0",
|
|
104
109
|
"@particle-academy/fancy-sheets": "^0.1.0",
|
|
105
110
|
"@particle-academy/fancy-slides": "^0.1.4"
|
|
106
111
|
},
|
|
107
112
|
"peerDependenciesMeta": {
|
|
108
113
|
"@particle-academy/fancy-whiteboard": { "optional": true },
|
|
114
|
+
"@particle-academy/fancy-artboard": { "optional": true },
|
|
109
115
|
"@particle-academy/fancy-flow": { "optional": true },
|
|
110
116
|
"@particle-academy/fancy-sheets": { "optional": true },
|
|
111
117
|
"@particle-academy/fancy-slides": { "optional": true }
|