@agent-native/core 0.30.6 → 0.31.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/a2a/client.d.ts +2 -0
- package/dist/a2a/client.d.ts.map +1 -1
- package/dist/a2a/client.js +6 -4
- package/dist/a2a/client.js.map +1 -1
- package/dist/a2a/handlers.d.ts.map +1 -1
- package/dist/a2a/handlers.js +3 -0
- package/dist/a2a/handlers.js.map +1 -1
- package/dist/a2a/server.d.ts.map +1 -1
- package/dist/a2a/server.js.map +1 -1
- package/dist/a2a/task-store.js.map +1 -1
- package/dist/agent/engine/anthropic-engine.d.ts.map +1 -1
- package/dist/agent/engine/anthropic-engine.js +0 -7
- package/dist/agent/engine/anthropic-engine.js.map +1 -1
- package/dist/agent/engine/registry.d.ts.map +1 -1
- package/dist/agent/engine/registry.js.map +1 -1
- package/dist/agent/engine/translate-ai-sdk.d.ts.map +1 -1
- package/dist/agent/engine/translate-ai-sdk.js +5 -3
- package/dist/agent/engine/translate-ai-sdk.js.map +1 -1
- package/dist/agent/production-agent.js +7 -3
- package/dist/agent/production-agent.js.map +1 -1
- package/dist/agent/run-manager.d.ts.map +1 -1
- package/dist/agent/run-manager.js +14 -6
- package/dist/agent/run-manager.js.map +1 -1
- package/dist/application-state/store.d.ts.map +1 -1
- package/dist/application-state/store.js.map +1 -1
- package/dist/brand-kit/brand-signals.d.ts +31 -0
- package/dist/brand-kit/brand-signals.d.ts.map +1 -0
- package/dist/brand-kit/brand-signals.js +101 -0
- package/dist/brand-kit/brand-signals.js.map +1 -0
- package/dist/brand-kit/index.d.ts +21 -0
- package/dist/brand-kit/index.d.ts.map +1 -0
- package/dist/brand-kit/index.js +34 -0
- package/dist/brand-kit/index.js.map +1 -0
- package/dist/brand-kit/types.d.ts +103 -0
- package/dist/brand-kit/types.d.ts.map +1 -0
- package/dist/brand-kit/types.js +17 -0
- package/dist/brand-kit/types.js.map +1 -0
- package/dist/cli/code-agent-executor.d.ts.map +1 -1
- package/dist/cli/code-agent-executor.js.map +1 -1
- package/dist/cli/create.d.ts.map +1 -1
- package/dist/cli/create.js +0 -1
- package/dist/cli/create.js.map +1 -1
- package/dist/client/AgentNative.js.map +1 -1
- package/dist/client/AgentPanel.d.ts.map +1 -1
- package/dist/client/AgentPanel.js +0 -2
- package/dist/client/AgentPanel.js.map +1 -1
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js +69 -17
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/client/IframeEmbed.d.ts.map +1 -1
- package/dist/client/IframeEmbed.js.map +1 -1
- package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
- package/dist/client/MultiTabAssistantChat.js +1 -1
- package/dist/client/MultiTabAssistantChat.js.map +1 -1
- package/dist/client/RunStuckBanner.js.map +1 -1
- package/dist/client/agent-chat.d.ts.map +1 -1
- package/dist/client/agent-chat.js.map +1 -1
- package/dist/client/builder-mark.d.ts.map +1 -1
- package/dist/client/builder-mark.js.map +1 -1
- package/dist/client/components/MissingKeyCard.d.ts.map +1 -1
- package/dist/client/components/MissingKeyCard.js.map +1 -1
- package/dist/client/composer/PromptComposer.d.ts.map +1 -1
- package/dist/client/composer/PromptComposer.js +6 -3
- package/dist/client/composer/PromptComposer.js.map +1 -1
- package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
- package/dist/client/composer/TiptapComposer.js +5 -0
- package/dist/client/composer/TiptapComposer.js.map +1 -1
- package/dist/client/composer/VoiceButton.d.ts.map +1 -1
- package/dist/client/composer/VoiceButton.js +9 -0
- package/dist/client/composer/VoiceButton.js.map +1 -1
- package/dist/client/composer/extensions/FileReference.d.ts.map +1 -1
- package/dist/client/composer/extensions/FileReference.js.map +1 -1
- package/dist/client/composer/extensions/MentionReference.d.ts.map +1 -1
- package/dist/client/composer/extensions/MentionReference.js.map +1 -1
- package/dist/client/composer/extensions/SkillReference.d.ts.map +1 -1
- package/dist/client/composer/extensions/SkillReference.js.map +1 -1
- package/dist/client/conversation/AgentConversation.js +8 -6
- package/dist/client/conversation/AgentConversation.js.map +1 -1
- package/dist/client/conversation/use-near-bottom-autoscroll.d.ts.map +1 -1
- package/dist/client/conversation/use-near-bottom-autoscroll.js +133 -35
- package/dist/client/conversation/use-near-bottom-autoscroll.js.map +1 -1
- package/dist/client/db-admin/DbAdminPage.js.map +1 -1
- package/dist/client/dev-overlay/DevOverlay.d.ts.map +1 -1
- package/dist/client/dev-overlay/DevOverlay.js +0 -1
- package/dist/client/dev-overlay/DevOverlay.js.map +1 -1
- package/dist/client/extensions/EmbeddedExtension.d.ts.map +1 -1
- package/dist/client/extensions/EmbeddedExtension.js +19 -0
- package/dist/client/extensions/EmbeddedExtension.js.map +1 -1
- package/dist/client/extensions/ExtensionViewer.d.ts.map +1 -1
- package/dist/client/extensions/ExtensionViewer.js +11 -3
- package/dist/client/extensions/ExtensionViewer.js.map +1 -1
- package/dist/client/integrations/IntegrationsPanel.d.ts.map +1 -1
- package/dist/client/integrations/IntegrationsPanel.js.map +1 -1
- package/dist/client/mcp-app-host.d.ts.map +1 -1
- package/dist/client/mcp-app-host.js +6 -1
- package/dist/client/mcp-app-host.js.map +1 -1
- package/dist/client/mcp-apps/McpAppRenderer.d.ts.map +1 -1
- package/dist/client/mcp-apps/McpAppRenderer.js +1 -1
- package/dist/client/mcp-apps/McpAppRenderer.js.map +1 -1
- package/dist/client/notifications/NotificationsBell.js.map +1 -1
- package/dist/client/onboarding/SetupButton.d.ts.map +1 -1
- package/dist/client/onboarding/SetupButton.js +6 -0
- package/dist/client/onboarding/SetupButton.js.map +1 -1
- package/dist/client/progress/RunsTray.js.map +1 -1
- package/dist/client/resources/McpServerDetail.d.ts.map +1 -1
- package/dist/client/resources/McpServerDetail.js.map +1 -1
- package/dist/client/settings/AgentsSection.d.ts.map +1 -1
- package/dist/client/settings/AgentsSection.js +1 -1
- package/dist/client/settings/AgentsSection.js.map +1 -1
- package/dist/client/settings/AutomationsSection.js.map +1 -1
- package/dist/client/sharing/ShareButton.d.ts.map +1 -1
- package/dist/client/sharing/ShareButton.js +0 -4
- package/dist/client/sharing/ShareButton.js.map +1 -1
- package/dist/client/terminal/AgentTerminal.d.ts.map +1 -1
- package/dist/client/terminal/AgentTerminal.js +1 -1
- package/dist/client/terminal/AgentTerminal.js.map +1 -1
- package/dist/client/use-agent-chat.d.ts.map +1 -1
- package/dist/client/use-agent-chat.js +20 -4
- package/dist/client/use-agent-chat.js.map +1 -1
- package/dist/client/use-chat-threads.d.ts.map +1 -1
- package/dist/client/use-chat-threads.js +39 -25
- package/dist/client/use-chat-threads.js.map +1 -1
- package/dist/client/use-db-sync.d.ts.map +1 -1
- package/dist/client/use-db-sync.js +8 -0
- package/dist/client/use-db-sync.js.map +1 -1
- package/dist/client/use-dev-mode.d.ts.map +1 -1
- package/dist/client/use-dev-mode.js +25 -9
- package/dist/client/use-dev-mode.js.map +1 -1
- package/dist/client/useProductionAgent.d.ts.map +1 -1
- package/dist/client/useProductionAgent.js +6 -2
- package/dist/client/useProductionAgent.js.map +1 -1
- package/dist/collab/agent-presence.d.ts.map +1 -1
- package/dist/collab/agent-presence.js +1 -1
- package/dist/collab/agent-presence.js.map +1 -1
- package/dist/collab/awareness.d.ts.map +1 -1
- package/dist/collab/awareness.js +8 -0
- package/dist/collab/awareness.js.map +1 -1
- package/dist/collab/client-struct.js.map +1 -1
- package/dist/deploy/build.js +0 -5
- package/dist/deploy/build.js.map +1 -1
- package/dist/extensions/fetch-tool.d.ts.map +1 -1
- package/dist/extensions/fetch-tool.js +4 -1
- package/dist/extensions/fetch-tool.js.map +1 -1
- package/dist/file-upload/actions/upload-image.d.ts.map +1 -1
- package/dist/file-upload/actions/upload-image.js +39 -4
- package/dist/file-upload/actions/upload-image.js.map +1 -1
- package/dist/integrations/adapters/slack.d.ts.map +1 -1
- package/dist/integrations/adapters/slack.js.map +1 -1
- package/dist/integrations/google-docs-poller.d.ts.map +1 -1
- package/dist/integrations/google-docs-poller.js +14 -1
- package/dist/integrations/google-docs-poller.js.map +1 -1
- package/dist/integrations/plugin.d.ts.map +1 -1
- package/dist/integrations/plugin.js.map +1 -1
- package/dist/integrations/webhook-handler.d.ts.map +1 -1
- package/dist/integrations/webhook-handler.js +10 -1
- package/dist/integrations/webhook-handler.js.map +1 -1
- package/dist/jobs/scheduler.d.ts.map +1 -1
- package/dist/jobs/scheduler.js.map +1 -1
- package/dist/mcp/build-server.d.ts.map +1 -1
- package/dist/mcp/build-server.js +20 -8
- package/dist/mcp/build-server.js.map +1 -1
- package/dist/mcp/connect-store.d.ts.map +1 -1
- package/dist/mcp/connect-store.js +1 -1
- package/dist/mcp/connect-store.js.map +1 -1
- package/dist/notifications/channels.d.ts.map +1 -1
- package/dist/notifications/channels.js +3 -2
- package/dist/notifications/channels.js.map +1 -1
- package/dist/oauth-tokens/store.js.map +1 -1
- package/dist/observability/evals.d.ts.map +1 -1
- package/dist/observability/evals.js +7 -7
- package/dist/observability/evals.js.map +1 -1
- package/dist/observability/traces.d.ts.map +1 -1
- package/dist/observability/traces.js +15 -5
- package/dist/observability/traces.js.map +1 -1
- package/dist/org/handlers.d.ts.map +1 -1
- package/dist/org/handlers.js +3 -2
- package/dist/org/handlers.js.map +1 -1
- package/dist/resources/handlers.d.ts +5 -5
- package/dist/resources/handlers.d.ts.map +1 -1
- package/dist/resources/handlers.js.map +1 -1
- package/dist/scripts/db/schema.js.map +1 -1
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +0 -6
- package/dist/server/agent-chat-plugin.js.map +1 -1
- package/dist/server/auth.d.ts.map +1 -1
- package/dist/server/auth.js.map +1 -1
- package/dist/server/better-auth-instance.d.ts.map +1 -1
- package/dist/server/better-auth-instance.js +0 -3
- package/dist/server/better-auth-instance.js.map +1 -1
- package/dist/server/core-routes-plugin.d.ts.map +1 -1
- package/dist/server/core-routes-plugin.js +1 -2
- package/dist/server/core-routes-plugin.js.map +1 -1
- package/dist/server/create-server.d.ts.map +1 -1
- package/dist/server/create-server.js +0 -23
- package/dist/server/create-server.js.map +1 -1
- package/dist/server/google-oauth.d.ts.map +1 -1
- package/dist/server/google-oauth.js +0 -3
- package/dist/server/google-oauth.js.map +1 -1
- package/dist/server/poll.d.ts.map +1 -1
- package/dist/server/poll.js +49 -18
- package/dist/server/poll.js.map +1 -1
- package/dist/settings/store.js.map +1 -1
- package/dist/sharing/access.d.ts.map +1 -1
- package/dist/sharing/access.js +25 -4
- package/dist/sharing/access.js.map +1 -1
- package/dist/triggers/dispatcher.d.ts.map +1 -1
- package/dist/triggers/dispatcher.js.map +1 -1
- package/dist/vite/client.d.ts.map +1 -1
- package/dist/vite/client.js +2 -0
- package/dist/vite/client.js.map +1 -1
- package/package.json +3 -2
- package/dist/client/conversation/AgentConversation.spec.d.ts +0 -2
- package/dist/client/conversation/AgentConversation.spec.d.ts.map +0 -1
- package/dist/client/conversation/AgentConversation.spec.js +0 -69
- package/dist/client/conversation/AgentConversation.spec.js.map +0 -1
- package/dist/client/extensions/AgentNativeExtensionFrame.e2e-host.d.ts +0 -2
- package/dist/client/extensions/AgentNativeExtensionFrame.e2e-host.d.ts.map +0 -1
- package/dist/client/extensions/AgentNativeExtensionFrame.e2e-host.js +0 -110
- package/dist/client/extensions/AgentNativeExtensionFrame.e2e-host.js.map +0 -1
- package/dist/client/extensions/AgentNativeExtensionFrame.spec.d.ts +0 -2
- package/dist/client/extensions/AgentNativeExtensionFrame.spec.d.ts.map +0 -1
- package/dist/client/extensions/AgentNativeExtensionFrame.spec.js +0 -68
- package/dist/client/extensions/AgentNativeExtensionFrame.spec.js.map +0 -1
- package/dist/client/extensions/ExtensionViewer.spec.d.ts +0 -2
- package/dist/client/extensions/ExtensionViewer.spec.d.ts.map +0 -1
- package/dist/client/extensions/ExtensionViewer.spec.js +0 -94
- package/dist/client/extensions/ExtensionViewer.spec.js.map +0 -1
- package/dist/client/guided-questions.flow.spec.d.ts +0 -2
- package/dist/client/guided-questions.flow.spec.d.ts.map +0 -1
- package/dist/client/guided-questions.flow.spec.js +0 -147
- package/dist/client/guided-questions.flow.spec.js.map +0 -1
- package/dist/client/settings/useBuilderStatus.spec.d.ts +0 -2
- package/dist/client/settings/useBuilderStatus.spec.d.ts.map +0 -1
- package/dist/client/settings/useBuilderStatus.spec.js +0 -487
- package/dist/client/settings/useBuilderStatus.spec.js.map +0 -1
- package/dist/client/sharing/ShareButton.spec.d.ts +0 -2
- package/dist/client/sharing/ShareButton.spec.d.ts.map +0 -1
- package/dist/client/sharing/ShareButton.spec.js +0 -196
- package/dist/client/sharing/ShareButton.spec.js.map +0 -1
- package/dist/client/use-chat-models.spec.d.ts +0 -2
- package/dist/client/use-chat-models.spec.d.ts.map +0 -1
- package/dist/client/use-chat-models.spec.js +0 -39
- package/dist/client/use-chat-models.spec.js.map +0 -1
- package/dist/client/use-chat-threads.spec.d.ts +0 -2
- package/dist/client/use-chat-threads.spec.d.ts.map +0 -1
- package/dist/client/use-chat-threads.spec.js +0 -760
- package/dist/client/use-chat-threads.spec.js.map +0 -1
- package/dist/client/use-db-sync.spec.d.ts +0 -2
- package/dist/client/use-db-sync.spec.d.ts.map +0 -1
- package/dist/client/use-db-sync.spec.js +0 -107
- package/dist/client/use-db-sync.spec.js.map +0 -1
- package/dist/server/script-discovery.d.ts +0 -6
- package/dist/server/script-discovery.d.ts.map +0 -1
- package/dist/server/script-discovery.js +0 -6
- package/dist/server/script-discovery.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-struct.js","sourceRoot":"","sources":["../../src/collab/client-struct.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Client-side React hooks for collaborative structured data (JSON)\n * editing via Yjs Y.Map and Y.Array.\n *\n * Composes on the existing useCollaborativeDoc() hook for transport/sync.\n */\n\nimport { useState, useEffect, useCallback, useMemo } from \"react\";\nimport * as Y from \"yjs\";\nimport {\n useCollaborativeDoc,\n type UseCollaborativeDocOptions,\n type UseCollaborativeDocResult,\n type CollabUser,\n} from \"./client.js\";\n\n// ─── Client-side Y.Map/Y.Array → JSON converters ───────────────────\n// Duplicated from json-to-yjs.ts since this is a client module and\n// cannot import server modules.\n\nfunction yMapToJson(ymap: Y.Map<any>): Record<string, any> {\n const result: Record<string, any> = {};\n ymap.forEach((value, key) => {\n result[key] = yTypeToJson(value);\n });\n return result;\n}\n\nfunction yArrayToJson(yarray: Y.Array<any>): any[] {\n const result: any[] = [];\n for (let i = 0; i < yarray.length; i++) {\n result.push(yTypeToJson(yarray.get(i)));\n }\n return result;\n}\n\nfunction yTypeToJson(value: any): any {\n if (value instanceof Y.Map) return yMapToJson(value);\n if (value instanceof Y.Array) return yArrayToJson(value);\n return value;\n}\n\n/** Recursively convert a plain JS value into a Yjs shared type. */\nfunction jsonToYType(value: any): any {\n if (value === null || value === undefined) return value;\n if (Array.isArray(value)) {\n const yarray = new Y.Array();\n const items = value.map((item) => jsonToYType(item));\n yarray.push(items);\n return yarray;\n }\n if (typeof value === \"object\") {\n const ymap = new Y.Map();\n for (const [k, v] of Object.entries(value)) {\n ymap.set(k, jsonToYType(v));\n }\n return ymap;\n }\n return value;\n}\n\n// ─── useCollaborativeMap ────────────────────────────────────────────\n\nexport interface UseCollaborativeMapOptions extends UseCollaborativeDocOptions {\n /** Name of the shared Y.Map field. Default: \"data\" */\n fieldName?: string;\n}\n\nexport interface UseCollaborativeMapResult<\n T extends Record<string, any>,\n> extends UseCollaborativeDocResult {\n /** Reactive plain JS snapshot of the Y.Map state. Null until loaded. */\n data: T | null;\n /** Replace the full map state via diff. */\n update: (newData: T) => void;\n /** Set a single value at a \"/\" separated path. */\n patch: (path: string, value: any) => void;\n}\n\nexport function useCollaborativeMap<T extends Record<string, any>>(\n options: UseCollaborativeMapOptions,\n): UseCollaborativeMapResult<T> {\n const { fieldName = \"data\", ...docOptions } = options;\n const collabResult = useCollaborativeDoc(docOptions);\n const { ydoc } = collabResult;\n\n const [data, setData] = useState<T | null>(null);\n\n // Get the Y.Map and observe deep changes\n useEffect(() => {\n if (!ydoc) {\n setData(null);\n return;\n }\n\n const ymap = ydoc.getMap(fieldName);\n\n const syncState = () => {\n if (ymap.size > 0) {\n setData(yMapToJson(ymap) as T);\n } else {\n setData(null);\n }\n };\n\n // Initial sync\n syncState();\n\n // Observe deep changes (nested maps/arrays)\n const handler = () => syncState();\n ymap.observeDeep(handler);\n\n return () => {\n ymap.unobserveDeep(handler);\n };\n }, [ydoc, fieldName]);\n\n const update = useCallback(\n (newData: T) => {\n if (!ydoc) return;\n const ymap = ydoc.getMap(fieldName);\n ydoc.transact(() => {\n // Remove keys not in newData\n const keysToDelete: string[] = [];\n ymap.forEach((_v, k) => {\n if (!(k in newData)) keysToDelete.push(k);\n });\n for (const k of keysToDelete) ymap.delete(k);\n\n // Set changed values\n for (const [k, v] of Object.entries(newData)) {\n const existing = ymap.get(k);\n const existingJson = yTypeToJson(existing);\n if (!deepEqual(existingJson, v)) {\n ymap.set(k, jsonToYType(v));\n }\n }\n });\n },\n [ydoc, fieldName],\n );\n\n const patch = useCallback(\n (path: string, value: any) => {\n if (!ydoc) return;\n const segments = path.split(\"/\");\n if (segments.length === 0) return;\n\n ydoc.transact(() => {\n let current: any = ydoc.getMap(fieldName);\n // Navigate to parent\n for (let i = 0; i < segments.length - 1; i++) {\n const seg = segments[i];\n if (current instanceof Y.Map) {\n current = current.get(seg);\n } else if (current instanceof Y.Array) {\n const idx = parseInt(seg, 10);\n if (isNaN(idx) || idx < 0 || idx >= current.length) return;\n current = current.get(idx);\n } else {\n return;\n }\n }\n\n const lastSeg = segments[segments.length - 1];\n if (current instanceof Y.Map) {\n current.set(lastSeg, jsonToYType(value));\n } else if (current instanceof Y.Array) {\n const idx = parseInt(lastSeg, 10);\n if (!isNaN(idx) && idx >= 0 && idx < current.length) {\n current.delete(idx, 1);\n current.insert(idx, [jsonToYType(value)]);\n }\n }\n });\n },\n [ydoc, fieldName],\n );\n\n return { ...collabResult, data, update, patch };\n}\n\n// ─── useCollaborativeArray ──────────────────────────────────────────\n\nexport interface UseCollaborativeArrayOptions extends UseCollaborativeDocOptions {\n /** Name of the shared Y.Array field. Default: \"data\" */\n fieldName?: string;\n}\n\nexport interface UseCollaborativeArrayResult<\n T,\n> extends UseCollaborativeDocResult {\n /** Reactive plain JS snapshot of the Y.Array state. */\n data: T[];\n /** Append an item to the end. */\n push: (item: T) => void;\n /** Insert an item at a specific index. */\n insert: (index: number, item: T) => void;\n /** Remove an item at a specific index. */\n remove: (index: number) => void;\n /** Move an item from one index to another. */\n move: (from: number, to: number) => void;\n /** Update fields on the Y.Map at a specific array index. */\n updateItem: (index: number, patch: Partial<T>) => void;\n /** Replace the entire array contents. */\n replace: (items: T[]) => void;\n}\n\nexport function useCollaborativeArray<T>(\n options: UseCollaborativeArrayOptions,\n): UseCollaborativeArrayResult<T> {\n const { fieldName = \"data\", ...docOptions } = options;\n const collabResult = useCollaborativeDoc(docOptions);\n const { ydoc } = collabResult;\n\n const [data, setData] = useState<T[]>([]);\n\n // Get the Y.Array and observe deep changes\n useEffect(() => {\n if (!ydoc) {\n setData([]);\n return;\n }\n\n const yarray = ydoc.getArray(fieldName);\n\n const syncState = () => {\n setData(yArrayToJson(yarray) as T[]);\n };\n\n // Initial sync\n syncState();\n\n // Observe deep changes\n const handler = () => syncState();\n yarray.observeDeep(handler);\n\n return () => {\n yarray.unobserveDeep(handler);\n };\n }, [ydoc, fieldName]);\n\n const push = useCallback(\n (item: T) => {\n if (!ydoc) return;\n const yarray = ydoc.getArray(fieldName);\n yarray.push([jsonToYType(item)]);\n },\n [ydoc, fieldName],\n );\n\n const insert = useCallback(\n (index: number, item: T) => {\n if (!ydoc) return;\n const yarray = ydoc.getArray(fieldName);\n const idx = Math.min(Math.max(0, index), yarray.length);\n yarray.insert(idx, [jsonToYType(item)]);\n },\n [ydoc, fieldName],\n );\n\n const remove = useCallback(\n (index: number) => {\n if (!ydoc) return;\n const yarray = ydoc.getArray(fieldName);\n if (index >= 0 && index < yarray.length) {\n yarray.delete(index, 1);\n }\n },\n [ydoc, fieldName],\n );\n\n const move = useCallback(\n (from: number, to: number) => {\n if (!ydoc) return;\n const yarray = ydoc.getArray(fieldName);\n if (from < 0 || from >= yarray.length) return;\n const clampedTo = Math.min(Math.max(0, to), yarray.length - 1);\n if (from === clampedTo) return;\n\n ydoc.transact(() => {\n const itemJson = yTypeToJson(yarray.get(from));\n yarray.delete(from, 1);\n const insertIdx = Math.min(clampedTo, yarray.length);\n yarray.insert(insertIdx, [jsonToYType(itemJson)]);\n });\n },\n [ydoc, fieldName],\n );\n\n const updateItem = useCallback(\n (index: number, patchData: Partial<T>) => {\n if (!ydoc) return;\n const yarray = ydoc.getArray(fieldName);\n if (index < 0 || index >= yarray.length) return;\n\n const item = yarray.get(index);\n if (item instanceof Y.Map) {\n ydoc.transact(() => {\n for (const [k, v] of Object.entries(patchData as any)) {\n item.set(k, jsonToYType(v));\n }\n });\n }\n },\n [ydoc, fieldName],\n );\n\n const replace = useCallback(\n (items: T[]) => {\n if (!ydoc) return;\n const yarray = ydoc.getArray(fieldName);\n ydoc.transact(() => {\n yarray.delete(0, yarray.length);\n const yItems = items.map((item) => jsonToYType(item));\n yarray.push(yItems);\n });\n },\n [ydoc, fieldName],\n );\n\n return {\n ...collabResult,\n data,\n push,\n insert,\n remove,\n move,\n updateItem,\n replace,\n };\n}\n\n// ─── Utility ────────────────────────────────────────────────────────\n\nfunction deepEqual(a: any, b: any): boolean {\n if (a === b) return true;\n if (a === null || b === null) return false;\n if (typeof a !== typeof b) return false;\n if (typeof a !== \"object\") return false;\n\n if (Array.isArray(a) !== Array.isArray(b)) return false;\n if (Array.isArray(a)) {\n if (a.length !== b.length) return false;\n for (let i = 0; i < a.length; i++) {\n if (!deepEqual(a[i], b[i])) return false;\n }\n return true;\n }\n\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n if (keysA.length !== keysB.length) return false;\n for (const key of keysA) {\n if (!deepEqual(a[key], b[key])) return false;\n }\n return true;\n}\n\n// Re-export types from client.ts for convenience\nexport type {\n CollabUser,\n UseCollaborativeDocOptions,\n UseCollaborativeDocResult,\n};\n"]}
|
|
1
|
+
{"version":3,"file":"client-struct.js","sourceRoot":"","sources":["../../src/collab/client-struct.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Client-side React hooks for collaborative structured data (JSON)\n * editing via Yjs Y.Map and Y.Array.\n *\n * Composes on the existing useCollaborativeDoc() hook for transport/sync.\n */\n\nimport { useState, useEffect, useCallback } from \"react\";\nimport * as Y from \"yjs\";\nimport {\n useCollaborativeDoc,\n type UseCollaborativeDocOptions,\n type UseCollaborativeDocResult,\n type CollabUser,\n} from \"./client.js\";\n\n// ─── Client-side Y.Map/Y.Array → JSON converters ───────────────────\n// Duplicated from json-to-yjs.ts since this is a client module and\n// cannot import server modules.\n\nfunction yMapToJson(ymap: Y.Map<any>): Record<string, any> {\n const result: Record<string, any> = {};\n ymap.forEach((value, key) => {\n result[key] = yTypeToJson(value);\n });\n return result;\n}\n\nfunction yArrayToJson(yarray: Y.Array<any>): any[] {\n const result: any[] = [];\n for (let i = 0; i < yarray.length; i++) {\n result.push(yTypeToJson(yarray.get(i)));\n }\n return result;\n}\n\nfunction yTypeToJson(value: any): any {\n if (value instanceof Y.Map) return yMapToJson(value);\n if (value instanceof Y.Array) return yArrayToJson(value);\n return value;\n}\n\n/** Recursively convert a plain JS value into a Yjs shared type. */\nfunction jsonToYType(value: any): any {\n if (value === null || value === undefined) return value;\n if (Array.isArray(value)) {\n const yarray = new Y.Array();\n const items = value.map((item) => jsonToYType(item));\n yarray.push(items);\n return yarray;\n }\n if (typeof value === \"object\") {\n const ymap = new Y.Map();\n for (const [k, v] of Object.entries(value)) {\n ymap.set(k, jsonToYType(v));\n }\n return ymap;\n }\n return value;\n}\n\n// ─── useCollaborativeMap ────────────────────────────────────────────\n\nexport interface UseCollaborativeMapOptions extends UseCollaborativeDocOptions {\n /** Name of the shared Y.Map field. Default: \"data\" */\n fieldName?: string;\n}\n\nexport interface UseCollaborativeMapResult<\n T extends Record<string, any>,\n> extends UseCollaborativeDocResult {\n /** Reactive plain JS snapshot of the Y.Map state. Null until loaded. */\n data: T | null;\n /** Replace the full map state via diff. */\n update: (newData: T) => void;\n /** Set a single value at a \"/\" separated path. */\n patch: (path: string, value: any) => void;\n}\n\nexport function useCollaborativeMap<T extends Record<string, any>>(\n options: UseCollaborativeMapOptions,\n): UseCollaborativeMapResult<T> {\n const { fieldName = \"data\", ...docOptions } = options;\n const collabResult = useCollaborativeDoc(docOptions);\n const { ydoc } = collabResult;\n\n const [data, setData] = useState<T | null>(null);\n\n // Get the Y.Map and observe deep changes\n useEffect(() => {\n if (!ydoc) {\n setData(null);\n return;\n }\n\n const ymap = ydoc.getMap(fieldName);\n\n const syncState = () => {\n if (ymap.size > 0) {\n setData(yMapToJson(ymap) as T);\n } else {\n setData(null);\n }\n };\n\n // Initial sync\n syncState();\n\n // Observe deep changes (nested maps/arrays)\n const handler = () => syncState();\n ymap.observeDeep(handler);\n\n return () => {\n ymap.unobserveDeep(handler);\n };\n }, [ydoc, fieldName]);\n\n const update = useCallback(\n (newData: T) => {\n if (!ydoc) return;\n const ymap = ydoc.getMap(fieldName);\n ydoc.transact(() => {\n // Remove keys not in newData\n const keysToDelete: string[] = [];\n ymap.forEach((_v, k) => {\n if (!(k in newData)) keysToDelete.push(k);\n });\n for (const k of keysToDelete) ymap.delete(k);\n\n // Set changed values\n for (const [k, v] of Object.entries(newData)) {\n const existing = ymap.get(k);\n const existingJson = yTypeToJson(existing);\n if (!deepEqual(existingJson, v)) {\n ymap.set(k, jsonToYType(v));\n }\n }\n });\n },\n [ydoc, fieldName],\n );\n\n const patch = useCallback(\n (path: string, value: any) => {\n if (!ydoc) return;\n const segments = path.split(\"/\");\n if (segments.length === 0) return;\n\n ydoc.transact(() => {\n let current: any = ydoc.getMap(fieldName);\n // Navigate to parent\n for (let i = 0; i < segments.length - 1; i++) {\n const seg = segments[i];\n if (current instanceof Y.Map) {\n current = current.get(seg);\n } else if (current instanceof Y.Array) {\n const idx = parseInt(seg, 10);\n if (isNaN(idx) || idx < 0 || idx >= current.length) return;\n current = current.get(idx);\n } else {\n return;\n }\n }\n\n const lastSeg = segments[segments.length - 1];\n if (current instanceof Y.Map) {\n current.set(lastSeg, jsonToYType(value));\n } else if (current instanceof Y.Array) {\n const idx = parseInt(lastSeg, 10);\n if (!isNaN(idx) && idx >= 0 && idx < current.length) {\n current.delete(idx, 1);\n current.insert(idx, [jsonToYType(value)]);\n }\n }\n });\n },\n [ydoc, fieldName],\n );\n\n return { ...collabResult, data, update, patch };\n}\n\n// ─── useCollaborativeArray ──────────────────────────────────────────\n\nexport interface UseCollaborativeArrayOptions extends UseCollaborativeDocOptions {\n /** Name of the shared Y.Array field. Default: \"data\" */\n fieldName?: string;\n}\n\nexport interface UseCollaborativeArrayResult<\n T,\n> extends UseCollaborativeDocResult {\n /** Reactive plain JS snapshot of the Y.Array state. */\n data: T[];\n /** Append an item to the end. */\n push: (item: T) => void;\n /** Insert an item at a specific index. */\n insert: (index: number, item: T) => void;\n /** Remove an item at a specific index. */\n remove: (index: number) => void;\n /** Move an item from one index to another. */\n move: (from: number, to: number) => void;\n /** Update fields on the Y.Map at a specific array index. */\n updateItem: (index: number, patch: Partial<T>) => void;\n /** Replace the entire array contents. */\n replace: (items: T[]) => void;\n}\n\nexport function useCollaborativeArray<T>(\n options: UseCollaborativeArrayOptions,\n): UseCollaborativeArrayResult<T> {\n const { fieldName = \"data\", ...docOptions } = options;\n const collabResult = useCollaborativeDoc(docOptions);\n const { ydoc } = collabResult;\n\n const [data, setData] = useState<T[]>([]);\n\n // Get the Y.Array and observe deep changes\n useEffect(() => {\n if (!ydoc) {\n setData([]);\n return;\n }\n\n const yarray = ydoc.getArray(fieldName);\n\n const syncState = () => {\n setData(yArrayToJson(yarray) as T[]);\n };\n\n // Initial sync\n syncState();\n\n // Observe deep changes\n const handler = () => syncState();\n yarray.observeDeep(handler);\n\n return () => {\n yarray.unobserveDeep(handler);\n };\n }, [ydoc, fieldName]);\n\n const push = useCallback(\n (item: T) => {\n if (!ydoc) return;\n const yarray = ydoc.getArray(fieldName);\n yarray.push([jsonToYType(item)]);\n },\n [ydoc, fieldName],\n );\n\n const insert = useCallback(\n (index: number, item: T) => {\n if (!ydoc) return;\n const yarray = ydoc.getArray(fieldName);\n const idx = Math.min(Math.max(0, index), yarray.length);\n yarray.insert(idx, [jsonToYType(item)]);\n },\n [ydoc, fieldName],\n );\n\n const remove = useCallback(\n (index: number) => {\n if (!ydoc) return;\n const yarray = ydoc.getArray(fieldName);\n if (index >= 0 && index < yarray.length) {\n yarray.delete(index, 1);\n }\n },\n [ydoc, fieldName],\n );\n\n const move = useCallback(\n (from: number, to: number) => {\n if (!ydoc) return;\n const yarray = ydoc.getArray(fieldName);\n if (from < 0 || from >= yarray.length) return;\n const clampedTo = Math.min(Math.max(0, to), yarray.length - 1);\n if (from === clampedTo) return;\n\n ydoc.transact(() => {\n const itemJson = yTypeToJson(yarray.get(from));\n yarray.delete(from, 1);\n const insertIdx = Math.min(clampedTo, yarray.length);\n yarray.insert(insertIdx, [jsonToYType(itemJson)]);\n });\n },\n [ydoc, fieldName],\n );\n\n const updateItem = useCallback(\n (index: number, patchData: Partial<T>) => {\n if (!ydoc) return;\n const yarray = ydoc.getArray(fieldName);\n if (index < 0 || index >= yarray.length) return;\n\n const item = yarray.get(index);\n if (item instanceof Y.Map) {\n ydoc.transact(() => {\n for (const [k, v] of Object.entries(patchData as any)) {\n item.set(k, jsonToYType(v));\n }\n });\n }\n },\n [ydoc, fieldName],\n );\n\n const replace = useCallback(\n (items: T[]) => {\n if (!ydoc) return;\n const yarray = ydoc.getArray(fieldName);\n ydoc.transact(() => {\n yarray.delete(0, yarray.length);\n const yItems = items.map((item) => jsonToYType(item));\n yarray.push(yItems);\n });\n },\n [ydoc, fieldName],\n );\n\n return {\n ...collabResult,\n data,\n push,\n insert,\n remove,\n move,\n updateItem,\n replace,\n };\n}\n\n// ─── Utility ────────────────────────────────────────────────────────\n\nfunction deepEqual(a: any, b: any): boolean {\n if (a === b) return true;\n if (a === null || b === null) return false;\n if (typeof a !== typeof b) return false;\n if (typeof a !== \"object\") return false;\n\n if (Array.isArray(a) !== Array.isArray(b)) return false;\n if (Array.isArray(a)) {\n if (a.length !== b.length) return false;\n for (let i = 0; i < a.length; i++) {\n if (!deepEqual(a[i], b[i])) return false;\n }\n return true;\n }\n\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n if (keysA.length !== keysB.length) return false;\n for (const key of keysA) {\n if (!deepEqual(a[key], b[key])) return false;\n }\n return true;\n}\n\n// Re-export types from client.ts for convenience\nexport type {\n CollabUser,\n UseCollaborativeDocOptions,\n UseCollaborativeDocResult,\n};\n"]}
|
package/dist/deploy/build.js
CHANGED
|
@@ -1327,11 +1327,6 @@ export default bundle;
|
|
|
1327
1327
|
for (const mod of bareImports) {
|
|
1328
1328
|
const outFile = path.join(libsDir, `${mod.replace(/[/@]/g, "_")}.mjs`);
|
|
1329
1329
|
try {
|
|
1330
|
-
// Try resolving from both template dir and workspace root
|
|
1331
|
-
const nodePaths = [
|
|
1332
|
-
path.join(cwd, "node_modules"),
|
|
1333
|
-
path.resolve(cwd, "../../node_modules"),
|
|
1334
|
-
].filter((p) => fs.existsSync(p));
|
|
1335
1330
|
// Resolve the module — check workspace node_modules and pnpm store
|
|
1336
1331
|
let resolvedMod = mod;
|
|
1337
1332
|
const _require = createRequire(cwd + "/");
|