@agent-native/core 0.109.2 → 0.109.4
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/corpus/README.md +2 -2
- package/corpus/core/CHANGELOG.md +16 -0
- package/corpus/core/docs/content/agent-native-toolkit.mdx +46 -13
- package/corpus/core/docs/content/locales/ar-SA/agent-native-toolkit.mdx +79 -55
- package/corpus/core/docs/content/locales/ar-SA/toolkit-capability-packages.mdx +21 -0
- package/corpus/core/docs/content/locales/ar-SA/toolkit-context-knowledge.mdx +12 -0
- package/corpus/core/docs/content/locales/ar-SA/toolkit-editors-canvases.mdx +17 -0
- package/corpus/core/docs/content/locales/de-DE/agent-native-toolkit.mdx +82 -54
- package/corpus/core/docs/content/locales/de-DE/toolkit-capability-packages.mdx +21 -0
- package/corpus/core/docs/content/locales/de-DE/toolkit-context-knowledge.mdx +12 -0
- package/corpus/core/docs/content/locales/de-DE/toolkit-editors-canvases.mdx +17 -0
- package/corpus/core/docs/content/locales/es-ES/agent-native-toolkit.mdx +81 -52
- package/corpus/core/docs/content/locales/es-ES/toolkit-capability-packages.mdx +21 -0
- package/corpus/core/docs/content/locales/es-ES/toolkit-context-knowledge.mdx +12 -0
- package/corpus/core/docs/content/locales/es-ES/toolkit-editors-canvases.mdx +21 -0
- package/corpus/core/docs/content/locales/fr-FR/agent-native-toolkit.mdx +84 -54
- package/corpus/core/docs/content/locales/fr-FR/toolkit-capability-packages.mdx +21 -0
- package/corpus/core/docs/content/locales/fr-FR/toolkit-context-knowledge.mdx +12 -0
- package/corpus/core/docs/content/locales/fr-FR/toolkit-editors-canvases.mdx +21 -0
- package/corpus/core/docs/content/locales/hi-IN/agent-native-toolkit.mdx +69 -62
- package/corpus/core/docs/content/locales/hi-IN/toolkit-capability-packages.mdx +21 -0
- package/corpus/core/docs/content/locales/hi-IN/toolkit-context-knowledge.mdx +12 -0
- package/corpus/core/docs/content/locales/hi-IN/toolkit-editors-canvases.mdx +17 -0
- package/corpus/core/docs/content/locales/ja-JP/agent-native-toolkit.mdx +69 -62
- package/corpus/core/docs/content/locales/ja-JP/toolkit-capability-packages.mdx +21 -0
- package/corpus/core/docs/content/locales/ja-JP/toolkit-context-knowledge.mdx +12 -0
- package/corpus/core/docs/content/locales/ja-JP/toolkit-editors-canvases.mdx +17 -0
- package/corpus/core/docs/content/locales/ko-KR/agent-native-toolkit.mdx +69 -62
- package/corpus/core/docs/content/locales/ko-KR/toolkit-capability-packages.mdx +21 -0
- package/corpus/core/docs/content/locales/ko-KR/toolkit-context-knowledge.mdx +12 -0
- package/corpus/core/docs/content/locales/ko-KR/toolkit-editors-canvases.mdx +17 -0
- package/corpus/core/docs/content/locales/pt-BR/agent-native-toolkit.mdx +82 -54
- package/corpus/core/docs/content/locales/pt-BR/toolkit-capability-packages.mdx +21 -0
- package/corpus/core/docs/content/locales/pt-BR/toolkit-context-knowledge.mdx +12 -0
- package/corpus/core/docs/content/locales/pt-BR/toolkit-editors-canvases.mdx +17 -0
- package/corpus/core/docs/content/locales/zh-CN/agent-native-toolkit.mdx +69 -62
- package/corpus/core/docs/content/locales/zh-CN/toolkit-capability-packages.mdx +21 -0
- package/corpus/core/docs/content/locales/zh-CN/toolkit-context-knowledge.mdx +12 -0
- package/corpus/core/docs/content/locales/zh-CN/toolkit-editors-canvases.mdx +17 -0
- package/corpus/core/docs/content/locales/zh-TW/agent-native-toolkit.mdx +69 -62
- package/corpus/core/docs/content/locales/zh-TW/toolkit-capability-packages.mdx +21 -0
- package/corpus/core/docs/content/locales/zh-TW/toolkit-context-knowledge.mdx +12 -0
- package/corpus/core/docs/content/locales/zh-TW/toolkit-editors-canvases.mdx +17 -0
- package/corpus/core/docs/content/toolkit-capability-packages.mdx +52 -0
- package/corpus/core/docs/content/toolkit-context-knowledge.mdx +46 -0
- package/corpus/core/docs/content/toolkit-editors-canvases.mdx +55 -0
- package/corpus/core/package.json +35 -34
- package/corpus/core/src/cli/create.ts +57 -15
- package/corpus/core/src/cli/package-lifecycle.ts +2 -0
- package/corpus/core/src/cli/skills-content/visual-plan-skill.ts +2 -0
- package/corpus/core/src/client/context-xray/ContextMeter.tsx +31 -111
- package/corpus/core/src/client/context-xray/ContextSegmentRow.tsx +8 -111
- package/corpus/core/src/client/context-xray/ContextTreemap.tsx +6 -111
- package/corpus/core/src/client/context-xray/ContextXRayPanel.tsx +31 -391
- package/corpus/core/src/client/context-xray/SegmentProvenancePopover.tsx +4 -52
- package/corpus/core/src/client/context-xray/format.ts +0 -33
- package/corpus/core/src/client/require-session.tsx +19 -3
- package/corpus/core/src/client/rich-markdown-editor/index.ts +42 -57
- package/corpus/core/src/client/rich-markdown-editor/uploadEditorImage.ts +2 -1
- package/corpus/core/src/client/use-action.ts +145 -2
- package/corpus/core/src/client/use-session.ts +79 -48
- package/corpus/core/src/client/visual-style-controls.tsx +1 -1088
- package/corpus/core/src/collab/agent-identity.ts +5 -22
- package/corpus/core/src/collab/client.ts +1 -53
- package/corpus/core/src/db/client.ts +13 -7
- package/corpus/core/src/db/create-get-db.ts +20 -13
- package/corpus/core/src/db/request-telemetry.ts +154 -0
- package/corpus/core/src/integrations/index.ts +1 -0
- package/corpus/core/src/integrations/plugin.ts +9 -3
- package/corpus/core/src/integrations/remote-push-delivery-job.ts +48 -0
- package/corpus/core/src/integrations/remote-push-delivery.ts +370 -0
- package/corpus/core/src/integrations/remote-push-store.ts +275 -26
- package/corpus/core/src/server/better-auth-instance.ts +11 -3
- package/corpus/core/src/server/core-routes-plugin.ts +36 -14
- package/corpus/core/src/server/framework-request-handler.ts +11 -1
- package/corpus/core/src/server/http-response-telemetry.ts +233 -31
- package/corpus/core/src/styles/rich-markdown-editor.css +1 -510
- package/corpus/core/src/templates/workspace-core/.agents/skills/tracking/SKILL.md +19 -0
- package/corpus/core/src/testing.ts +1 -1
- package/corpus/core/src/vite/client.ts +3 -0
- package/corpus/templates/clips/actions/finalize-recording.ts +3 -1
- package/corpus/templates/clips/actions/set-mobile-capture-state.ts +4 -1
- package/corpus/templates/clips/app/components/library/library-layout.tsx +1 -6
- package/corpus/templates/clips/changelog/2026-07-18-new-recording-is-now-emphasized-as-the-primary-action-in-the.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-18-recordings-now-remain-safely-recoverable-until-the-stored-me.md +6 -0
- package/corpus/templates/content/app/components/editor/VisualEditor.tsx +5 -3
- package/corpus/templates/content/app/components/editor/extensions/DragHandle.tsx +4 -4
- package/corpus/templates/content/package.json +25 -25
- package/corpus/templates/design/app/components/design/TweaksPanel.tsx +2 -1
- package/corpus/templates/design/package.json +1 -1
- package/corpus/templates/mail/package.json +9 -9
- package/corpus/templates/plan/.agents/skills/visual-plan/SKILL.md +2 -0
- package/corpus/templates/plan/app/components/editor/PlanDocumentEditor.tsx +8 -8
- package/corpus/templates/plan/app/components/editor/planSlashCommands.ts +6 -6
- package/corpus/templates/plan/app/components/plan/PlanImageNode.tsx +4 -7
- package/corpus/templates/plan/app/components/plan/PlanMarkdownEditor.tsx +6 -4
- package/corpus/templates/plan/app/components/plan/PlanVisualSurface.tsx +1 -1
- package/corpus/templates/plan/changelog/2026-07-18-visual-plans-now-open-on-wireframes-by-default-when-a-protot.md +6 -0
- package/corpus/templates/plan/package.json +3 -3
- package/corpus/templates/slides/app/components/editor/SlideStyleInspector.tsx +2 -2
- package/corpus/templates/slides/app/components/editor/TweaksPanel.tsx +2 -2
- package/corpus/templates/slides/package.json +13 -13
- package/corpus/templates/tasks/AGENTS.md +3 -0
- package/corpus/templates/tasks/actions/render-task-list-inline.ts +202 -0
- package/corpus/templates/tasks/changelog/2026-07-18-task-lists-can-now-appear-as-interactive-widgets-inline-in-c.md +6 -0
- package/corpus/templates/tasks/docs/features/f8-chat.mdx +2 -0
- package/corpus/templates/tasks/server/plugins/agent-chat.ts +2 -0
- package/dist/catalog.json +39 -1
- package/dist/cli/create.d.ts +10 -1
- package/dist/cli/create.d.ts.map +1 -1
- package/dist/cli/create.js +49 -16
- package/dist/cli/create.js.map +1 -1
- package/dist/cli/package-lifecycle.d.ts.map +1 -1
- package/dist/cli/package-lifecycle.js +2 -0
- package/dist/cli/package-lifecycle.js.map +1 -1
- package/dist/cli/skills-content/visual-plan-skill.d.ts +1 -1
- package/dist/cli/skills-content/visual-plan-skill.d.ts.map +1 -1
- package/dist/cli/skills-content/visual-plan-skill.js +2 -0
- package/dist/cli/skills-content/visual-plan-skill.js.map +1 -1
- package/dist/client/context-xray/ContextMeter.d.ts.map +1 -1
- package/dist/client/context-xray/ContextMeter.js +8 -23
- package/dist/client/context-xray/ContextMeter.js.map +1 -1
- package/dist/client/context-xray/ContextSegmentRow.d.ts.map +1 -1
- package/dist/client/context-xray/ContextSegmentRow.js +3 -19
- package/dist/client/context-xray/ContextSegmentRow.js.map +1 -1
- package/dist/client/context-xray/ContextTreemap.d.ts.map +1 -1
- package/dist/client/context-xray/ContextTreemap.js +3 -54
- package/dist/client/context-xray/ContextTreemap.js.map +1 -1
- package/dist/client/context-xray/ContextXRayPanel.d.ts.map +1 -1
- package/dist/client/context-xray/ContextXRayPanel.js +21 -163
- package/dist/client/context-xray/ContextXRayPanel.js.map +1 -1
- package/dist/client/context-xray/SegmentProvenancePopover.d.ts.map +1 -1
- package/dist/client/context-xray/SegmentProvenancePopover.js +3 -4
- package/dist/client/context-xray/SegmentProvenancePopover.js.map +1 -1
- package/dist/client/context-xray/format.d.ts +0 -4
- package/dist/client/context-xray/format.d.ts.map +1 -1
- package/dist/client/context-xray/format.js +0 -49
- package/dist/client/context-xray/format.js.map +1 -1
- package/dist/client/require-session.d.ts.map +1 -1
- package/dist/client/require-session.js +6 -3
- package/dist/client/require-session.js.map +1 -1
- package/dist/client/rich-markdown-editor/index.d.ts +1 -12
- package/dist/client/rich-markdown-editor/index.d.ts.map +1 -1
- package/dist/client/rich-markdown-editor/index.js +1 -12
- package/dist/client/rich-markdown-editor/index.js.map +1 -1
- package/dist/client/rich-markdown-editor/uploadEditorImage.d.ts +1 -1
- package/dist/client/rich-markdown-editor/uploadEditorImage.d.ts.map +1 -1
- package/dist/client/rich-markdown-editor/uploadEditorImage.js.map +1 -1
- package/dist/client/use-action.d.ts.map +1 -1
- package/dist/client/use-action.js +117 -1
- package/dist/client/use-action.js.map +1 -1
- package/dist/client/use-session.d.ts.map +1 -1
- package/dist/client/use-session.js +72 -50
- package/dist/client/use-session.js.map +1 -1
- package/dist/client/visual-style-controls.d.ts +1 -89
- package/dist/client/visual-style-controls.d.ts.map +1 -1
- package/dist/client/visual-style-controls.js +1 -498
- package/dist/client/visual-style-controls.js.map +1 -1
- package/dist/collab/agent-identity.d.ts +1 -14
- package/dist/collab/agent-identity.d.ts.map +1 -1
- package/dist/collab/agent-identity.js +1 -13
- package/dist/collab/agent-identity.js.map +1 -1
- package/dist/collab/awareness.d.ts +2 -2
- package/dist/collab/awareness.d.ts.map +1 -1
- package/dist/collab/client.d.ts +1 -19
- package/dist/collab/client.d.ts.map +1 -1
- package/dist/collab/client.js +1 -53
- package/dist/collab/client.js.map +1 -1
- package/dist/collab/struct-routes.d.ts +1 -1
- package/dist/db/client.d.ts.map +1 -1
- package/dist/db/client.js +7 -1
- package/dist/db/client.js.map +1 -1
- package/dist/db/create-get-db.d.ts +3 -6
- package/dist/db/create-get-db.d.ts.map +1 -1
- package/dist/db/create-get-db.js +9 -2
- package/dist/db/create-get-db.js.map +1 -1
- package/dist/db/request-telemetry.d.ts +23 -0
- package/dist/db/request-telemetry.d.ts.map +1 -0
- package/dist/db/request-telemetry.js +95 -0
- package/dist/db/request-telemetry.js.map +1 -0
- package/dist/integrations/index.d.ts +1 -0
- package/dist/integrations/index.d.ts.map +1 -1
- package/dist/integrations/index.js +1 -0
- package/dist/integrations/index.js.map +1 -1
- package/dist/integrations/plugin.d.ts.map +1 -1
- package/dist/integrations/plugin.js +8 -3
- package/dist/integrations/plugin.js.map +1 -1
- package/dist/integrations/remote-push-delivery-job.d.ts +4 -0
- package/dist/integrations/remote-push-delivery-job.d.ts.map +1 -0
- package/dist/integrations/remote-push-delivery-job.js +44 -0
- package/dist/integrations/remote-push-delivery-job.js.map +1 -0
- package/dist/integrations/remote-push-delivery.d.ts +11 -0
- package/dist/integrations/remote-push-delivery.d.ts.map +1 -0
- package/dist/integrations/remote-push-delivery.js +265 -0
- package/dist/integrations/remote-push-delivery.js.map +1 -0
- package/dist/integrations/remote-push-store.d.ts +33 -0
- package/dist/integrations/remote-push-store.d.ts.map +1 -1
- package/dist/integrations/remote-push-store.js +195 -26
- package/dist/integrations/remote-push-store.js.map +1 -1
- package/dist/notifications/routes.d.ts +3 -3
- package/dist/progress/routes.d.ts +1 -1
- package/dist/provider-api/corpus-jobs.d.ts +2 -2
- package/dist/resources/handlers.d.ts +3 -3
- package/dist/secrets/routes.d.ts +9 -9
- package/dist/server/agent-engine-api-key-route.d.ts +1 -1
- package/dist/server/better-auth-instance.js +7 -3
- package/dist/server/better-auth-instance.js.map +1 -1
- package/dist/server/core-routes-plugin.d.ts +8 -0
- package/dist/server/core-routes-plugin.d.ts.map +1 -1
- package/dist/server/core-routes-plugin.js +23 -8
- package/dist/server/core-routes-plugin.js.map +1 -1
- package/dist/server/framework-request-handler.d.ts.map +1 -1
- package/dist/server/framework-request-handler.js +9 -1
- package/dist/server/framework-request-handler.js.map +1 -1
- package/dist/server/http-response-telemetry.d.ts +3 -2
- package/dist/server/http-response-telemetry.d.ts.map +1 -1
- package/dist/server/http-response-telemetry.js +160 -27
- package/dist/server/http-response-telemetry.js.map +1 -1
- package/dist/server/transcribe-voice.d.ts +1 -1
- package/dist/styles/rich-markdown-editor.css +1 -510
- package/dist/templates/workspace-core/.agents/skills/tracking/SKILL.md +19 -0
- package/dist/testing.d.ts +1 -1
- package/dist/testing.d.ts.map +1 -1
- package/dist/testing.js +1 -1
- package/dist/testing.js.map +1 -1
- package/dist/vite/client.d.ts.map +1 -1
- package/dist/vite/client.js +3 -0
- package/dist/vite/client.js.map +1 -1
- package/docs/content/agent-native-toolkit.mdx +46 -13
- package/docs/content/locales/ar-SA/agent-native-toolkit.mdx +79 -55
- package/docs/content/locales/ar-SA/toolkit-capability-packages.mdx +21 -0
- package/docs/content/locales/ar-SA/toolkit-context-knowledge.mdx +12 -0
- package/docs/content/locales/ar-SA/toolkit-editors-canvases.mdx +17 -0
- package/docs/content/locales/de-DE/agent-native-toolkit.mdx +82 -54
- package/docs/content/locales/de-DE/toolkit-capability-packages.mdx +21 -0
- package/docs/content/locales/de-DE/toolkit-context-knowledge.mdx +12 -0
- package/docs/content/locales/de-DE/toolkit-editors-canvases.mdx +17 -0
- package/docs/content/locales/es-ES/agent-native-toolkit.mdx +81 -52
- package/docs/content/locales/es-ES/toolkit-capability-packages.mdx +21 -0
- package/docs/content/locales/es-ES/toolkit-context-knowledge.mdx +12 -0
- package/docs/content/locales/es-ES/toolkit-editors-canvases.mdx +21 -0
- package/docs/content/locales/fr-FR/agent-native-toolkit.mdx +84 -54
- package/docs/content/locales/fr-FR/toolkit-capability-packages.mdx +21 -0
- package/docs/content/locales/fr-FR/toolkit-context-knowledge.mdx +12 -0
- package/docs/content/locales/fr-FR/toolkit-editors-canvases.mdx +21 -0
- package/docs/content/locales/hi-IN/agent-native-toolkit.mdx +69 -62
- package/docs/content/locales/hi-IN/toolkit-capability-packages.mdx +21 -0
- package/docs/content/locales/hi-IN/toolkit-context-knowledge.mdx +12 -0
- package/docs/content/locales/hi-IN/toolkit-editors-canvases.mdx +17 -0
- package/docs/content/locales/ja-JP/agent-native-toolkit.mdx +69 -62
- package/docs/content/locales/ja-JP/toolkit-capability-packages.mdx +21 -0
- package/docs/content/locales/ja-JP/toolkit-context-knowledge.mdx +12 -0
- package/docs/content/locales/ja-JP/toolkit-editors-canvases.mdx +17 -0
- package/docs/content/locales/ko-KR/agent-native-toolkit.mdx +69 -62
- package/docs/content/locales/ko-KR/toolkit-capability-packages.mdx +21 -0
- package/docs/content/locales/ko-KR/toolkit-context-knowledge.mdx +12 -0
- package/docs/content/locales/ko-KR/toolkit-editors-canvases.mdx +17 -0
- package/docs/content/locales/pt-BR/agent-native-toolkit.mdx +82 -54
- package/docs/content/locales/pt-BR/toolkit-capability-packages.mdx +21 -0
- package/docs/content/locales/pt-BR/toolkit-context-knowledge.mdx +12 -0
- package/docs/content/locales/pt-BR/toolkit-editors-canvases.mdx +17 -0
- package/docs/content/locales/zh-CN/agent-native-toolkit.mdx +69 -62
- package/docs/content/locales/zh-CN/toolkit-capability-packages.mdx +21 -0
- package/docs/content/locales/zh-CN/toolkit-context-knowledge.mdx +12 -0
- package/docs/content/locales/zh-CN/toolkit-editors-canvases.mdx +17 -0
- package/docs/content/locales/zh-TW/agent-native-toolkit.mdx +69 -62
- package/docs/content/locales/zh-TW/toolkit-capability-packages.mdx +21 -0
- package/docs/content/locales/zh-TW/toolkit-context-knowledge.mdx +12 -0
- package/docs/content/locales/zh-TW/toolkit-editors-canvases.mdx +17 -0
- package/docs/content/toolkit-capability-packages.mdx +52 -0
- package/docs/content/toolkit-context-knowledge.mdx +46 -0
- package/docs/content/toolkit-editors-canvases.mdx +55 -0
- package/package.json +27 -26
- package/src/templates/workspace-core/.agents/skills/tracking/SKILL.md +19 -0
- package/corpus/core/src/client/rich-markdown-editor/BubbleToolbar.tsx +0 -253
- package/corpus/core/src/client/rich-markdown-editor/CodeBlockNode.tsx +0 -258
- package/corpus/core/src/client/rich-markdown-editor/DragHandle.ts +0 -1437
- package/corpus/core/src/client/rich-markdown-editor/ImageExtension.ts +0 -306
- package/corpus/core/src/client/rich-markdown-editor/RichMarkdownEditor.tsx +0 -80
- package/corpus/core/src/client/rich-markdown-editor/RunId.ts +0 -61
- package/corpus/core/src/client/rich-markdown-editor/SharedRichEditor.tsx +0 -321
- package/corpus/core/src/client/rich-markdown-editor/SlashCommandMenu.tsx +0 -310
- package/corpus/core/src/client/rich-markdown-editor/extensions.ts +0 -402
- package/corpus/core/src/client/rich-markdown-editor/gfmDoc.ts +0 -92
- package/corpus/core/src/client/rich-markdown-editor/surgical-apply.ts +0 -192
- package/corpus/core/src/client/rich-markdown-editor/useCollabReconcile.ts +0 -590
- package/dist/client/rich-markdown-editor/BubbleToolbar.d.ts +0 -37
- package/dist/client/rich-markdown-editor/BubbleToolbar.d.ts.map +0 -1
- package/dist/client/rich-markdown-editor/BubbleToolbar.js +0 -171
- package/dist/client/rich-markdown-editor/BubbleToolbar.js.map +0 -1
- package/dist/client/rich-markdown-editor/CodeBlockNode.d.ts +0 -49
- package/dist/client/rich-markdown-editor/CodeBlockNode.d.ts.map +0 -1
- package/dist/client/rich-markdown-editor/CodeBlockNode.js +0 -127
- package/dist/client/rich-markdown-editor/CodeBlockNode.js.map +0 -1
- package/dist/client/rich-markdown-editor/DragHandle.d.ts +0 -97
- package/dist/client/rich-markdown-editor/DragHandle.d.ts.map +0 -1
- package/dist/client/rich-markdown-editor/DragHandle.js +0 -1066
- package/dist/client/rich-markdown-editor/DragHandle.js.map +0 -1
- package/dist/client/rich-markdown-editor/ImageExtension.d.ts +0 -63
- package/dist/client/rich-markdown-editor/ImageExtension.d.ts.map +0 -1
- package/dist/client/rich-markdown-editor/ImageExtension.js +0 -243
- package/dist/client/rich-markdown-editor/ImageExtension.js.map +0 -1
- package/dist/client/rich-markdown-editor/RichMarkdownEditor.d.ts +0 -51
- package/dist/client/rich-markdown-editor/RichMarkdownEditor.d.ts.map +0 -1
- package/dist/client/rich-markdown-editor/RichMarkdownEditor.js +0 -37
- package/dist/client/rich-markdown-editor/RichMarkdownEditor.js.map +0 -1
- package/dist/client/rich-markdown-editor/RunId.d.ts +0 -28
- package/dist/client/rich-markdown-editor/RunId.d.ts.map +0 -1
- package/dist/client/rich-markdown-editor/RunId.js +0 -60
- package/dist/client/rich-markdown-editor/RunId.js.map +0 -1
- package/dist/client/rich-markdown-editor/SharedRichEditor.d.ts +0 -110
- package/dist/client/rich-markdown-editor/SharedRichEditor.d.ts.map +0 -1
- package/dist/client/rich-markdown-editor/SharedRichEditor.js +0 -144
- package/dist/client/rich-markdown-editor/SharedRichEditor.js.map +0 -1
- package/dist/client/rich-markdown-editor/SlashCommandMenu.d.ts +0 -41
- package/dist/client/rich-markdown-editor/SlashCommandMenu.d.ts.map +0 -1
- package/dist/client/rich-markdown-editor/SlashCommandMenu.js +0 -221
- package/dist/client/rich-markdown-editor/SlashCommandMenu.js.map +0 -1
- package/dist/client/rich-markdown-editor/extensions.d.ts +0 -178
- package/dist/client/rich-markdown-editor/extensions.d.ts.map +0 -1
- package/dist/client/rich-markdown-editor/extensions.js +0 -224
- package/dist/client/rich-markdown-editor/extensions.js.map +0 -1
- package/dist/client/rich-markdown-editor/gfmDoc.d.ts +0 -24
- package/dist/client/rich-markdown-editor/gfmDoc.d.ts.map +0 -1
- package/dist/client/rich-markdown-editor/gfmDoc.js +0 -83
- package/dist/client/rich-markdown-editor/gfmDoc.js.map +0 -1
- package/dist/client/rich-markdown-editor/surgical-apply.d.ts +0 -66
- package/dist/client/rich-markdown-editor/surgical-apply.d.ts.map +0 -1
- package/dist/client/rich-markdown-editor/surgical-apply.js +0 -147
- package/dist/client/rich-markdown-editor/surgical-apply.js.map +0 -1
- package/dist/client/rich-markdown-editor/useCollabReconcile.d.ts +0 -110
- package/dist/client/rich-markdown-editor/useCollabReconcile.d.ts.map +0 -1
- package/dist/client/rich-markdown-editor/useCollabReconcile.js +0 -441
- package/dist/client/rich-markdown-editor/useCollabReconcile.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../../src/client/context-xray/format.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../../src/client/context-xray/format.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,SAAU,CAAC;AAEhD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAGpE;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAO/D"}
|
|
@@ -23,53 +23,4 @@ export function formatTokens(tokens) {
|
|
|
23
23
|
}
|
|
24
24
|
return String(value);
|
|
25
25
|
}
|
|
26
|
-
export function statusLabel(segment) {
|
|
27
|
-
if (segment.protected)
|
|
28
|
-
return "Protected";
|
|
29
|
-
if (segment.status === "pinned")
|
|
30
|
-
return "Pinned";
|
|
31
|
-
if (segment.status === "evicted")
|
|
32
|
-
return "Evicted";
|
|
33
|
-
if (segment.status === "summarized")
|
|
34
|
-
return "Summarized";
|
|
35
|
-
return "Active";
|
|
36
|
-
}
|
|
37
|
-
export function groupColor(group) {
|
|
38
|
-
if (group === "Pinned")
|
|
39
|
-
return "bg-emerald-500";
|
|
40
|
-
if (group === "Tool results")
|
|
41
|
-
return "bg-amber-500";
|
|
42
|
-
if (group === "Files read")
|
|
43
|
-
return "bg-sky-500";
|
|
44
|
-
if (group === "Thinking")
|
|
45
|
-
return "bg-violet-500";
|
|
46
|
-
if (group === "Task & instructions")
|
|
47
|
-
return "bg-rose-500";
|
|
48
|
-
if (group === "System · required")
|
|
49
|
-
return "bg-slate-700";
|
|
50
|
-
if (group === "System · inherited")
|
|
51
|
-
return "bg-indigo-500";
|
|
52
|
-
if (group === "System · user")
|
|
53
|
-
return "bg-teal-500";
|
|
54
|
-
return "bg-slate-400";
|
|
55
|
-
}
|
|
56
|
-
export function groupFill(group) {
|
|
57
|
-
if (group === "Pinned")
|
|
58
|
-
return "#10b981";
|
|
59
|
-
if (group === "Tool results")
|
|
60
|
-
return "#f59e0b";
|
|
61
|
-
if (group === "Files read")
|
|
62
|
-
return "#0ea5e9";
|
|
63
|
-
if (group === "Thinking")
|
|
64
|
-
return "#8b5cf6";
|
|
65
|
-
if (group === "Task & instructions")
|
|
66
|
-
return "#f43f5e";
|
|
67
|
-
if (group === "System · required")
|
|
68
|
-
return "#334155";
|
|
69
|
-
if (group === "System · inherited")
|
|
70
|
-
return "#6366f1";
|
|
71
|
-
if (group === "System · user")
|
|
72
|
-
return "#14b8a6";
|
|
73
|
-
return "#94a3b8";
|
|
74
|
-
}
|
|
75
26
|
//# sourceMappingURL=format.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../../src/client/context-xray/format.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../../src/client/context-xray/format.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAEvE;;;;GAIG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,OAAO,CAAC;AAEhD;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAuB;IAC1D,IAAI,CAAC,OAAO;QAAE,OAAO,wBAAwB,CAAC;IAC9C,OAAO,wBAAwB,CAAC,OAAO,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAA0B;IACrD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC;IACnD,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QAClB,MAAM,OAAO,GAAG,KAAK,GAAG,IAAI,CAAC;QAC7B,OAAO,GAAG,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IACxE,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC","sourcesContent":["import { getContextWindowForModel } from \"../../agent/model-config.js\";\n\n/**\n * Fallback context-window limit used when no model ID is available.\n * Kept as a named export so existing callers that import this constant\n * directly still compile without changes.\n */\nexport const CONTEXT_XRAY_MODEL_LIMIT = 200_000;\n\n/**\n * Resolve the effective context-window limit for the given model ID.\n * Falls back to {@link CONTEXT_XRAY_MODEL_LIMIT} (200 K) when the model is\n * unknown or not provided — matching the pre-existing hard-coded behaviour.\n */\nexport function resolveContextWindow(modelId?: string | null): number {\n if (!modelId) return CONTEXT_XRAY_MODEL_LIMIT;\n return getContextWindowForModel(modelId);\n}\n\nexport function formatTokens(tokens: number | undefined): string {\n const value = Math.max(0, Math.round(tokens ?? 0));\n if (value >= 1000) {\n const compact = value / 1000;\n return `${compact >= 100 ? compact.toFixed(0) : compact.toFixed(1)}k`;\n }\n return String(value);\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"require-session.d.ts","sourceRoot":"","sources":["../../src/client/require-session.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,OAAO,KAA4B,MAAM,OAAO,CAAC;AAMjD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B;;;OAGG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,4EAA4E;AAC5E,wBAAgB,qBAAqB,IAAI,MAAM,CAM9C;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,IAAI,OAAO,CAGxC;AAED,wBAAgB,cAAc,CAAC,EAC7B,QAAQ,EACR,QAAQ,EACR,QAAe,EACf,SAAS,EACT,MAAc,GACf,EAAE,mBAAmB,
|
|
1
|
+
{"version":3,"file":"require-session.d.ts","sourceRoot":"","sources":["../../src/client/require-session.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,OAAO,KAA4B,MAAM,OAAO,CAAC;AAMjD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B;;;OAGG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,4EAA4E;AAC5E,wBAAgB,qBAAqB,IAAI,MAAM,CAM9C;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,IAAI,OAAO,CAGxC;AAED,wBAAgB,cAAc,CAAC,EAC7B,QAAQ,EACR,QAAQ,EACR,QAAe,EACf,SAAS,EACT,MAAc,GACf,EAAE,mBAAmB,qBAWrB"}
|
|
@@ -59,12 +59,17 @@ export function isOnSignInPage() {
|
|
|
59
59
|
return window.location.pathname === agentNativePath("/_agent-native/sign-in");
|
|
60
60
|
}
|
|
61
61
|
export function RequireSession({ children, fallback, redirect = true, signedOut, bypass = false, }) {
|
|
62
|
+
if (bypass)
|
|
63
|
+
return _jsx(_Fragment, { children: children });
|
|
64
|
+
return (_jsx(ResolvedSessionGate, { fallback: fallback, redirect: redirect, signedOut: signedOut, children: children }));
|
|
65
|
+
}
|
|
66
|
+
function ResolvedSessionGate({ children, fallback, redirect = true, signedOut, }) {
|
|
62
67
|
const { session, isLoading } = useSession();
|
|
63
68
|
// Guard against firing the redirect more than once (effect re-runs, React
|
|
64
69
|
// StrictMode double-invoke) — a second navigation while the first is in
|
|
65
70
|
// flight is harmless but noisy.
|
|
66
71
|
const redirectedRef = useRef(false);
|
|
67
|
-
const mustRedirect = !
|
|
72
|
+
const mustRedirect = !isLoading && !session && redirect && !isOnSignInPage();
|
|
68
73
|
useEffect(() => {
|
|
69
74
|
if (!mustRedirect)
|
|
70
75
|
return;
|
|
@@ -77,8 +82,6 @@ export function RequireSession({ children, fallback, redirect = true, signedOut,
|
|
|
77
82
|
// history — pressing Back after signing in shouldn't bounce here again.
|
|
78
83
|
window.location.replace(buildSignInReturnHref());
|
|
79
84
|
}, [mustRedirect]);
|
|
80
|
-
if (bypass)
|
|
81
|
-
return _jsx(_Fragment, { children: children });
|
|
82
85
|
// Still resolving, or redirect already in flight: show the loading fallback
|
|
83
86
|
// rather than flashing app chrome the visitor can't use.
|
|
84
87
|
if (isLoading)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"require-session.js","sourceRoot":"","sources":["../../src/client/require-session.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,OAAc,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAEjD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AA8B9C,4EAA4E;AAC5E,MAAM,UAAU,qBAAqB;IACnC,MAAM,IAAI,GAAG,eAAe,CAAC,wBAAwB,CAAC,CAAC;IACvD,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC;IAC/C,MAAM,GAAG,GACP,MAAM,CAAC,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC3E,OAAO,GAAG,IAAI,WAAW,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;AACrD,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,cAAc;IAC5B,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO,KAAK,CAAC;IAChD,OAAO,MAAM,CAAC,QAAQ,CAAC,QAAQ,KAAK,eAAe,CAAC,wBAAwB,CAAC,CAAC;AAChF,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,EAC7B,QAAQ,EACR,QAAQ,EACR,QAAQ,GAAG,IAAI,EACf,SAAS,EACT,MAAM,GAAG,KAAK,GACM;IACpB,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,UAAU,EAAE,CAAC;IAC5C,0EAA0E;IAC1E,wEAAwE;IACxE,gCAAgC;IAChC,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAEpC,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"require-session.js","sourceRoot":"","sources":["../../src/client/require-session.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,OAAc,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAEjD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AA8B9C,4EAA4E;AAC5E,MAAM,UAAU,qBAAqB;IACnC,MAAM,IAAI,GAAG,eAAe,CAAC,wBAAwB,CAAC,CAAC;IACvD,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC;IAC/C,MAAM,GAAG,GACP,MAAM,CAAC,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC3E,OAAO,GAAG,IAAI,WAAW,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;AACrD,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,cAAc;IAC5B,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO,KAAK,CAAC;IAChD,OAAO,MAAM,CAAC,QAAQ,CAAC,QAAQ,KAAK,eAAe,CAAC,wBAAwB,CAAC,CAAC;AAChF,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,EAC7B,QAAQ,EACR,QAAQ,EACR,QAAQ,GAAG,IAAI,EACf,SAAS,EACT,MAAM,GAAG,KAAK,GACM;IACpB,IAAI,MAAM;QAAE,OAAO,4BAAG,QAAQ,GAAI,CAAC;IACnC,OAAO,CACL,KAAC,mBAAmB,IAClB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,YAEnB,QAAQ,GACW,CACvB,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,EAC3B,QAAQ,EACR,QAAQ,EACR,QAAQ,GAAG,IAAI,EACf,SAAS,GAC2B;IACpC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,UAAU,EAAE,CAAC;IAC5C,0EAA0E;IAC1E,wEAAwE;IACxE,gCAAgC;IAChC,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAEpC,MAAM,YAAY,GAAG,CAAC,SAAS,IAAI,CAAC,OAAO,IAAI,QAAQ,IAAI,CAAC,cAAc,EAAE,CAAC;IAE7E,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,YAAY;YAAE,OAAO;QAC1B,IAAI,aAAa,CAAC,OAAO;YAAE,OAAO;QAClC,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE,OAAO;QAC1C,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC;QAC7B,yEAAyE;QACzE,wEAAwE;QACxE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC;IACnD,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;IAEnB,4EAA4E;IAC5E,yDAAyD;IACzD,IAAI,SAAS;QAAE,OAAO,4BAAG,QAAQ,IAAI,KAAC,cAAc,KAAG,GAAI,CAAC;IAC5D,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,IAAI,QAAQ;YAAE,OAAO,4BAAG,QAAQ,IAAI,KAAC,cAAc,KAAG,GAAI,CAAC;QAC3D,OAAO,4BAAG,SAAS,IAAI,IAAI,GAAI,CAAC;IAClC,CAAC;IACD,OAAO,4BAAG,QAAQ,GAAI,CAAC;AACzB,CAAC","sourcesContent":["/**\n * Client-side session gate for an authenticated app shell.\n *\n * Wrap a template's private app shell with <RequireSession> so a logged-out\n * visitor is sent to the framework sign-in page instead of being left staring\n * at an infinite loading spinner.\n *\n * Why this exists in addition to the server-side auth guard (`runAuthGuard`,\n * which serves the onboarding/sign-in HTML for unauthenticated requests):\n * the server guard only protects requests that actually reach the Nitro\n * function. A statically-served / CDN-cached SPA shell, or a client-side\n * (React Router) navigation made after the session expired, never re-hits the\n * guard — so the app boots with no session, every data query 401s, and the UI\n * sticks on its loading state forever. This component closes that gap by\n * resolving the session on the client and redirecting when there is none.\n *\n * Place it INSIDE your providers (so the fallback is themed) but AROUND the\n * routed app layout:\n *\n * <AppProviders ...>\n * <RequireSession>\n * <AppLayout><Outlet /></AppLayout>\n * </RequireSession>\n * </AppProviders>\n *\n * Templates with public/anonymous routes (share pages, embeds) must NOT wrap\n * their whole app — gate only the private subtree, or pass `bypass` for the\n * surfaces that authenticate by another mechanism.\n */\nimport React, { useEffect, useRef } from \"react\";\n\nimport { agentNativePath } from \"./api-path.js\";\nimport { DefaultSpinner } from \"./DefaultSpinner.js\";\nimport { useSession } from \"./use-session.js\";\n\nexport interface RequireSessionProps {\n children: React.ReactNode;\n /**\n * Rendered while the session is being resolved and while a redirect is in\n * flight. Defaults to the framework `<DefaultSpinner />`.\n */\n fallback?: React.ReactNode;\n /**\n * When true (default), unauthenticated visitors are redirected to the\n * framework sign-in entry point (`/_agent-native/sign-in`) with a `return`\n * query pointing back at the current URL — so they land back here once\n * signed in. When false, `signedOut` is rendered instead and no navigation\n * happens.\n */\n redirect?: boolean;\n /**\n * Rendered for unauthenticated visitors when `redirect` is false. Ignored\n * when `redirect` is true.\n */\n signedOut?: React.ReactNode;\n /**\n * Skip the gate entirely and always render children. Use for surfaces that\n * authenticate by another mechanism (e.g. an embed/popout iframe carrying\n * its own token) so they are never bounced to the sign-in page.\n */\n bypass?: boolean;\n}\n\n/** Build the framework sign-in URL that returns to the current location. */\nexport function buildSignInReturnHref(): string {\n const base = agentNativePath(\"/_agent-native/sign-in\");\n if (typeof window === \"undefined\") return base;\n const ret =\n window.location.pathname + window.location.search + window.location.hash;\n return `${base}?return=${encodeURIComponent(ret)}`;\n}\n\n/**\n * True when the browser is already sitting on the framework sign-in entry\n * point. Redirecting to sign-in from here would append the current sign-in\n * URL as a fresh `?return=`, re-encode it, and navigate again — an infinite\n * loop of ever-growing `…sign-in?return=%252F…sign-in%253Freturn%253D…` URLs.\n *\n * This happens when the authenticated app shell (wrapped in `RequireSession`)\n * is served at the sign-in path instead of the framework login HTML — e.g.\n * under a base-path deploy where the SPA shell answers `/<app>/_agent-native/\n * sign-in`. The sign-in page is the framework's job, not the gate's: never\n * redirect to ourselves. Compared against `agentNativePath(...)` so it matches\n * whether or not the app is mounted under a base path.\n */\nexport function isOnSignInPage(): boolean {\n if (typeof window === \"undefined\") return false;\n return window.location.pathname === agentNativePath(\"/_agent-native/sign-in\");\n}\n\nexport function RequireSession({\n children,\n fallback,\n redirect = true,\n signedOut,\n bypass = false,\n}: RequireSessionProps) {\n if (bypass) return <>{children}</>;\n return (\n <ResolvedSessionGate\n fallback={fallback}\n redirect={redirect}\n signedOut={signedOut}\n >\n {children}\n </ResolvedSessionGate>\n );\n}\n\nfunction ResolvedSessionGate({\n children,\n fallback,\n redirect = true,\n signedOut,\n}: Omit<RequireSessionProps, \"bypass\">) {\n const { session, isLoading } = useSession();\n // Guard against firing the redirect more than once (effect re-runs, React\n // StrictMode double-invoke) — a second navigation while the first is in\n // flight is harmless but noisy.\n const redirectedRef = useRef(false);\n\n const mustRedirect = !isLoading && !session && redirect && !isOnSignInPage();\n\n useEffect(() => {\n if (!mustRedirect) return;\n if (redirectedRef.current) return;\n if (typeof window === \"undefined\") return;\n redirectedRef.current = true;\n // `replace` (not `assign`) so the dead authenticated URL doesn't land in\n // history — pressing Back after signing in shouldn't bounce here again.\n window.location.replace(buildSignInReturnHref());\n }, [mustRedirect]);\n\n // Still resolving, or redirect already in flight: show the loading fallback\n // rather than flashing app chrome the visitor can't use.\n if (isLoading) return <>{fallback ?? <DefaultSpinner />}</>;\n if (!session) {\n if (redirect) return <>{fallback ?? <DefaultSpinner />}</>;\n return <>{signedOut ?? null}</>;\n }\n return <>{children}</>;\n}\n"]}
|
|
@@ -1,16 +1,5 @@
|
|
|
1
|
-
export { createSharedEditorExtensions, MARKDOWN_DIALECT_CONFIG, type RichMarkdownDialect, type RichMarkdownEditorPreset, type
|
|
2
|
-
export { useCollabReconcile, getEditorMarkdown, RICH_MARKDOWN_PROGRAMMATIC_TRANSACTION, type UseCollabReconcileOptions, type UseCollabReconcileResult, } from "./useCollabReconcile.js";
|
|
3
|
-
export { applyDocSurgically, defaultParseValue, diffTopLevel, type TopLevelDiff, } from "./surgical-apply.js";
|
|
4
|
-
export { SlashCommandMenu, DEFAULT_SLASH_COMMANDS, createImageSlashCommand, type SlashCommandItem, type SlashCommandMenuProps, } from "./SlashCommandMenu.js";
|
|
5
|
-
export { SharedImage, createImageExtension, pickAndInsertImage, type ImageUploadFn, type SharedImageOptions, } from "./ImageExtension.js";
|
|
1
|
+
export { applyDocSurgically, BubbleToolbar, buildDefaultBubbleItems, createCodeBlockNode, createImageExtension, createImageSlashCommand, createRichMarkdownExtensions, createSharedEditorExtensions, DEFAULT_CODE_LANGUAGES, DEFAULT_DRAG_HANDLE_WRAPPER_SELECTOR, DEFAULT_SLASH_COMMANDS, defaultParseValue, diffTopLevel, DragHandle, getEditorMarkdown, gfmToProseJSON, MARKDOWN_DIALECT_CONFIG, pickAndInsertImage, proseJSONToGfm, RICH_MARKDOWN_PROGRAMMATIC_TRANSACTION, RichMarkdownEditor, RunId, RUN_ID_NODE_TYPES, SharedImage, SharedRichEditor, SlashCommandMenu, useCollabReconcile, type BubbleToolbarItem, type BubbleToolbarProps, type CodeBlockClassNames, type CodeLanguageOption, type CreateCodeBlockNodeOptions, type CreateRichMarkdownExtensionsOptions, type CreateSharedEditorExtensionsOptions, type DragHandleDropContext, type DragHandleDropPlacement, type DragHandleOptions, type ImageUploadFn, type RichMarkdownCollabUser, type RichMarkdownDialect, type RichMarkdownEditorPreset, type RichMarkdownEditorProps, type SharedEditorCollab, type SharedEditorFeatures, type SharedImageOptions, type SharedRichEditorProps, type SlashCommandItem, type SlashCommandMenuProps, type TopLevelDiff, type UseCollabReconcileOptions, type UseCollabReconcileResult, } from "@agent-native/toolkit/editor";
|
|
6
2
|
export { uploadEditorImage } from "./uploadEditorImage.js";
|
|
7
|
-
export { BubbleToolbar, buildDefaultBubbleItems, type BubbleToolbarItem, type BubbleToolbarProps, } from "./BubbleToolbar.js";
|
|
8
|
-
export { SharedRichEditor, type SharedRichEditorProps, } from "./SharedRichEditor.js";
|
|
9
|
-
export { createCodeBlockNode, DEFAULT_CODE_LANGUAGES, type CodeLanguageOption, type CodeBlockClassNames, type CreateCodeBlockNodeOptions, } from "./CodeBlockNode.js";
|
|
10
|
-
export { RichMarkdownEditor, createRichMarkdownExtensions, type RichMarkdownEditorProps, type CreateRichMarkdownExtensionsOptions, } from "./RichMarkdownEditor.js";
|
|
11
|
-
export { RunId, RUN_ID_NODE_TYPES } from "./RunId.js";
|
|
12
|
-
export { gfmToProseJSON, proseJSONToGfm } from "./gfmDoc.js";
|
|
13
|
-
export { DragHandle, DEFAULT_DRAG_HANDLE_WRAPPER_SELECTOR, type DragHandleDropContext, type DragHandleDropPlacement, type DragHandleOptions, } from "./DragHandle.js";
|
|
14
3
|
export { createRegistryBlockNode, RegistryBlockNodeView, RegistryBlockDataProvider, useRegistryBlockData, type CreateRegistryBlockNodeOptions, type RegistryBlockDataValue, type RegistryBlockSideMapBlock, } from "./RegistryBlockNode.js";
|
|
15
4
|
export { buildRegistryBlockSlashItems, getRegistryBlockSlashDescription, getRegistryBlockSlashSearchText, type BuildRegistryBlockSlashItemsOptions, } from "./registrySlashCommands.js";
|
|
16
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/client/rich-markdown-editor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/client/rich-markdown-editor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,uBAAuB,EACvB,mBAAmB,EACnB,oBAAoB,EACpB,uBAAuB,EACvB,4BAA4B,EAC5B,4BAA4B,EAC5B,sBAAsB,EACtB,oCAAoC,EACpC,sBAAsB,EACtB,iBAAiB,EACjB,YAAY,EACZ,UAAU,EACV,iBAAiB,EACjB,cAAc,EACd,uBAAuB,EACvB,kBAAkB,EAClB,cAAc,EACd,sCAAsC,EACtC,kBAAkB,EAClB,KAAK,EACL,iBAAiB,EACjB,WAAW,EACX,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,0BAA0B,EAC/B,KAAK,mCAAmC,EACxC,KAAK,mCAAmC,EACxC,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,EAC5B,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,YAAY,EACjB,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,GAC9B,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,yBAAyB,EACzB,oBAAoB,EACpB,KAAK,8BAA8B,EACnC,KAAK,sBAAsB,EAC3B,KAAK,yBAAyB,GAC/B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,4BAA4B,EAC5B,gCAAgC,EAChC,+BAA+B,EAC/B,KAAK,mCAAmC,GACzC,MAAM,4BAA4B,CAAC"}
|
|
@@ -1,16 +1,5 @@
|
|
|
1
|
-
export { createSharedEditorExtensions, MARKDOWN_DIALECT_CONFIG, } from "
|
|
2
|
-
export { useCollabReconcile, getEditorMarkdown, RICH_MARKDOWN_PROGRAMMATIC_TRANSACTION, } from "./useCollabReconcile.js";
|
|
3
|
-
export { applyDocSurgically, defaultParseValue, diffTopLevel, } from "./surgical-apply.js";
|
|
4
|
-
export { SlashCommandMenu, DEFAULT_SLASH_COMMANDS, createImageSlashCommand, } from "./SlashCommandMenu.js";
|
|
5
|
-
export { SharedImage, createImageExtension, pickAndInsertImage, } from "./ImageExtension.js";
|
|
1
|
+
export { applyDocSurgically, BubbleToolbar, buildDefaultBubbleItems, createCodeBlockNode, createImageExtension, createImageSlashCommand, createRichMarkdownExtensions, createSharedEditorExtensions, DEFAULT_CODE_LANGUAGES, DEFAULT_DRAG_HANDLE_WRAPPER_SELECTOR, DEFAULT_SLASH_COMMANDS, defaultParseValue, diffTopLevel, DragHandle, getEditorMarkdown, gfmToProseJSON, MARKDOWN_DIALECT_CONFIG, pickAndInsertImage, proseJSONToGfm, RICH_MARKDOWN_PROGRAMMATIC_TRANSACTION, RichMarkdownEditor, RunId, RUN_ID_NODE_TYPES, SharedImage, SharedRichEditor, SlashCommandMenu, useCollabReconcile, } from "@agent-native/toolkit/editor";
|
|
6
2
|
export { uploadEditorImage } from "./uploadEditorImage.js";
|
|
7
|
-
export { BubbleToolbar, buildDefaultBubbleItems, } from "./BubbleToolbar.js";
|
|
8
|
-
export { SharedRichEditor, } from "./SharedRichEditor.js";
|
|
9
|
-
export { createCodeBlockNode, DEFAULT_CODE_LANGUAGES, } from "./CodeBlockNode.js";
|
|
10
|
-
export { RichMarkdownEditor, createRichMarkdownExtensions, } from "./RichMarkdownEditor.js";
|
|
11
|
-
export { RunId, RUN_ID_NODE_TYPES } from "./RunId.js";
|
|
12
|
-
export { gfmToProseJSON, proseJSONToGfm } from "./gfmDoc.js";
|
|
13
|
-
export { DragHandle, DEFAULT_DRAG_HANDLE_WRAPPER_SELECTOR, } from "./DragHandle.js";
|
|
14
3
|
export { createRegistryBlockNode, RegistryBlockNodeView, RegistryBlockDataProvider, useRegistryBlockData, } from "./RegistryBlockNode.js";
|
|
15
4
|
export { buildRegistryBlockSlashItems, getRegistryBlockSlashDescription, getRegistryBlockSlashSearchText, } from "./registrySlashCommands.js";
|
|
16
5
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/client/rich-markdown-editor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/client/rich-markdown-editor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,uBAAuB,EACvB,mBAAmB,EACnB,oBAAoB,EACpB,uBAAuB,EACvB,4BAA4B,EAC5B,4BAA4B,EAC5B,sBAAsB,EACtB,oCAAoC,EACpC,sBAAsB,EACtB,iBAAiB,EACjB,YAAY,EACZ,UAAU,EACV,iBAAiB,EACjB,cAAc,EACd,uBAAuB,EACvB,kBAAkB,EAClB,cAAc,EACd,sCAAsC,EACtC,kBAAkB,EAClB,KAAK,EACL,iBAAiB,EACjB,WAAW,EACX,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,GAyBnB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,yBAAyB,EACzB,oBAAoB,GAIrB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,4BAA4B,EAC5B,gCAAgC,EAChC,+BAA+B,GAEhC,MAAM,4BAA4B,CAAC","sourcesContent":["export {\n applyDocSurgically,\n BubbleToolbar,\n buildDefaultBubbleItems,\n createCodeBlockNode,\n createImageExtension,\n createImageSlashCommand,\n createRichMarkdownExtensions,\n createSharedEditorExtensions,\n DEFAULT_CODE_LANGUAGES,\n DEFAULT_DRAG_HANDLE_WRAPPER_SELECTOR,\n DEFAULT_SLASH_COMMANDS,\n defaultParseValue,\n diffTopLevel,\n DragHandle,\n getEditorMarkdown,\n gfmToProseJSON,\n MARKDOWN_DIALECT_CONFIG,\n pickAndInsertImage,\n proseJSONToGfm,\n RICH_MARKDOWN_PROGRAMMATIC_TRANSACTION,\n RichMarkdownEditor,\n RunId,\n RUN_ID_NODE_TYPES,\n SharedImage,\n SharedRichEditor,\n SlashCommandMenu,\n useCollabReconcile,\n type BubbleToolbarItem,\n type BubbleToolbarProps,\n type CodeBlockClassNames,\n type CodeLanguageOption,\n type CreateCodeBlockNodeOptions,\n type CreateRichMarkdownExtensionsOptions,\n type CreateSharedEditorExtensionsOptions,\n type DragHandleDropContext,\n type DragHandleDropPlacement,\n type DragHandleOptions,\n type ImageUploadFn,\n type RichMarkdownCollabUser,\n type RichMarkdownDialect,\n type RichMarkdownEditorPreset,\n type RichMarkdownEditorProps,\n type SharedEditorCollab,\n type SharedEditorFeatures,\n type SharedImageOptions,\n type SharedRichEditorProps,\n type SlashCommandItem,\n type SlashCommandMenuProps,\n type TopLevelDiff,\n type UseCollabReconcileOptions,\n type UseCollabReconcileResult,\n} from \"@agent-native/toolkit/editor\";\n\nexport { uploadEditorImage } from \"./uploadEditorImage.js\";\nexport {\n createRegistryBlockNode,\n RegistryBlockNodeView,\n RegistryBlockDataProvider,\n useRegistryBlockData,\n type CreateRegistryBlockNodeOptions,\n type RegistryBlockDataValue,\n type RegistryBlockSideMapBlock,\n} from \"./RegistryBlockNode.js\";\nexport {\n buildRegistryBlockSlashItems,\n getRegistryBlockSlashDescription,\n getRegistryBlockSlashSearchText,\n type BuildRegistryBlockSlashItemsOptions,\n} from \"./registrySlashCommands.js\";\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ImageUploadFn } from "
|
|
1
|
+
import type { ImageUploadFn } from "@agent-native/toolkit/editor";
|
|
2
2
|
/**
|
|
3
3
|
* The shared editor's default image uploader: upload a picked / pasted /
|
|
4
4
|
* dropped image File through the framework `upload-image` action and return the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uploadEditorImage.d.ts","sourceRoot":"","sources":["../../../src/client/rich-markdown-editor/uploadEditorImage.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"uploadEditorImage.d.ts","sourceRoot":"","sources":["../../../src/client/rich-markdown-editor/uploadEditorImage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAkClE;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,iBAAiB,EAAE,aAsB/B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uploadEditorImage.js","sourceRoot":"","sources":["../../../src/client/rich-markdown-editor/uploadEditorImage.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"uploadEditorImage.js","sourceRoot":"","sources":["../../../src/client/rich-markdown-editor/uploadEditorImage.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C;;;;;;GAMG;AACH,SAAS,aAAa,CAAC,IAAU;IAC/B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAChC,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE;YACnB,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;YAC7B,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC/B,OAAO,CAAC,MAAM,CAAC,CAAC;YAClB,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC,CAAC;YAClD,CAAC;QACH,CAAC,CAAC;QACF,MAAM,CAAC,OAAO,GAAG,GAAG,EAAE,CACpB,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC,CAAC;QAClE,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;AACL,CAAC;AAQD;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAkB,KAAK,EAAE,IAAU,EAAE,EAAE;IACnE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;IAE1C,MAAM,MAAM,GAAG,MAAM,UAAU,CAA0B,cAAc,EAAE;QACvE,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,IAAI,CAAC,IAAI,IAAI,SAAS;KACjC,CAAC,CAAC;IAEH,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QAC7D,MAAM,IAAI,KAAK,CACb,MAAM,EAAE,KAAK;YACX,qFAAqF,CACxF,CAAC;IACJ,CAAC;IAED,sEAAsE;IACtE,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAClE,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;AAClC,CAAC,CAAC","sourcesContent":["import type { ImageUploadFn } from \"@agent-native/toolkit/editor\";\n\nimport { callAction } from \"../use-action.js\";\n\n/**\n * Read a {@link File} as a base64 data URL (`data:image/...;base64,...`).\n *\n * The framework `upload-image` action accepts a data URL (`data`) or a remote\n * URL (`url`) — not raw multipart — so a browser file-picker must convert the\n * File to a data URL first.\n */\nfunction fileToDataUrl(file: File): Promise<string> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => {\n const result = reader.result;\n if (typeof result === \"string\") {\n resolve(result);\n } else {\n reject(new Error(\"Failed to read image file.\"));\n }\n };\n reader.onerror = () =>\n reject(reader.error ?? new Error(\"Failed to read image file.\"));\n reader.readAsDataURL(file);\n });\n}\n\ninterface UploadImageActionResult {\n url?: string;\n error?: string;\n configured?: boolean;\n}\n\n/**\n * The shared editor's default image uploader: upload a picked / pasted /\n * dropped image File through the framework `upload-image` action and return the\n * hosted CDN URL.\n *\n * This is the {@link ImageUploadFn} embedders pass to the shared image block so\n * any app gets a real uploading image block with zero per-app upload code. The\n * action re-hosts the bytes on the configured provider (Builder.io by default),\n * is session-scoped, and returns a stable `` source — so a plan's\n * inserted image autosaves as plain markdown through the existing\n * `update-rich-text` path with no new persistence channel.\n *\n * @throws when the file cannot be read, the action returns no URL, or upload is\n * not configured (with the action's \"connect Builder.io\" guidance).\n */\nexport const uploadEditorImage: ImageUploadFn = async (file: File) => {\n if (!file.type.startsWith(\"image/\")) {\n throw new Error(\"Only image files can be uploaded.\");\n }\n\n const dataUrl = await fileToDataUrl(file);\n\n const result = await callAction<UploadImageActionResult>(\"upload-image\", {\n data: dataUrl,\n filename: file.name || undefined,\n });\n\n if (!result || typeof result.url !== \"string\" || !result.url) {\n throw new Error(\n result?.error ||\n \"Image upload failed. Connect Builder.io in Settings → File uploads, then try again.\",\n );\n }\n\n // Use the filename (sans extension) as a reasonable default alt text.\n const alt = file.name ? file.name.replace(/\\.[^./\\\\]+$/, \"\") : \"\";\n return { src: result.url, alt };\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-action.d.ts","sourceRoot":"","sources":["../../src/client/use-action.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EACnB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"use-action.d.ts","sourceRoot":"","sources":["../../src/client/use-action.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
* compatibility.
|
|
23
23
|
*/
|
|
24
24
|
import { useQuery, useMutation, useQueryClient } from "@tanstack/react-query";
|
|
25
|
+
import { trackEvent } from "./analytics.js";
|
|
25
26
|
import { agentNativePath } from "./api-path.js";
|
|
26
27
|
import { getBrowserTabId } from "./browser-tab-id.js";
|
|
27
28
|
import { ensureEmbedAuthFetchInterceptor } from "./embed-auth.js";
|
|
@@ -156,7 +157,7 @@ function utf8ByteLength(value) {
|
|
|
156
157
|
}
|
|
157
158
|
return bytes;
|
|
158
159
|
}
|
|
159
|
-
async function
|
|
160
|
+
async function performActionFetch(name, method, params, options) {
|
|
160
161
|
ensureEmbedAuthFetchInterceptor();
|
|
161
162
|
let url = `${ACTION_PREFIX}/${name}`;
|
|
162
163
|
const headers = {
|
|
@@ -231,6 +232,7 @@ async function actionFetch(name, method, params, options) {
|
|
|
231
232
|
try {
|
|
232
233
|
try {
|
|
233
234
|
res = await fetch(url, init);
|
|
235
|
+
options?.onResponse?.(res);
|
|
234
236
|
}
|
|
235
237
|
catch (err) {
|
|
236
238
|
if (timedOut)
|
|
@@ -314,6 +316,120 @@ async function actionFetch(name, method, params, options) {
|
|
|
314
316
|
}
|
|
315
317
|
return (data ?? null);
|
|
316
318
|
}
|
|
319
|
+
function actionTelemetryNow() {
|
|
320
|
+
return typeof performance !== "undefined" ? performance.now() : Date.now();
|
|
321
|
+
}
|
|
322
|
+
function parseServerTiming(response) {
|
|
323
|
+
const timings = new Map();
|
|
324
|
+
const value = response?.headers.get("server-timing");
|
|
325
|
+
if (!value)
|
|
326
|
+
return timings;
|
|
327
|
+
for (const entry of value.split(",")) {
|
|
328
|
+
const [rawName, ...params] = entry.trim().split(";");
|
|
329
|
+
const name = rawName?.trim();
|
|
330
|
+
if (!name)
|
|
331
|
+
continue;
|
|
332
|
+
const duration = params
|
|
333
|
+
.map((param) => /^dur=(.+)$/i.exec(param.trim())?.[1])
|
|
334
|
+
.find(Boolean);
|
|
335
|
+
const parsed = duration === undefined ? NaN : Number(duration);
|
|
336
|
+
if (Number.isFinite(parsed))
|
|
337
|
+
timings.set(name, parsed);
|
|
338
|
+
}
|
|
339
|
+
return timings;
|
|
340
|
+
}
|
|
341
|
+
function shouldTrackActionResponse(error, durationMs, response) {
|
|
342
|
+
if (error || durationMs >= 1_000)
|
|
343
|
+
return true;
|
|
344
|
+
if (response && response.status >= 400 && response.status < 500)
|
|
345
|
+
return true;
|
|
346
|
+
if (/\bstartup(?:-db)?\s*;/i.test(response?.headers.get("server-timing") ?? "")) {
|
|
347
|
+
return true;
|
|
348
|
+
}
|
|
349
|
+
const raw = import.meta.env
|
|
350
|
+
?.VITE_AGENT_NATIVE_ACTION_TELEMETRY_SAMPLE_RATE;
|
|
351
|
+
const parsed = raw === undefined ? 0.1 : Number(raw);
|
|
352
|
+
const rate = Number.isFinite(parsed) ? Math.max(0, Math.min(1, parsed)) : 0.1;
|
|
353
|
+
return Math.random() < rate;
|
|
354
|
+
}
|
|
355
|
+
async function actionFetch(name, method, params, options) {
|
|
356
|
+
const startedAt = actionTelemetryNow();
|
|
357
|
+
let response;
|
|
358
|
+
let responseAt;
|
|
359
|
+
let error;
|
|
360
|
+
try {
|
|
361
|
+
return await performActionFetch(name, method, params, {
|
|
362
|
+
...options,
|
|
363
|
+
onResponse: (nextResponse) => {
|
|
364
|
+
response = nextResponse;
|
|
365
|
+
responseAt = actionTelemetryNow();
|
|
366
|
+
},
|
|
367
|
+
});
|
|
368
|
+
}
|
|
369
|
+
catch (caught) {
|
|
370
|
+
error = caught;
|
|
371
|
+
throw caught;
|
|
372
|
+
}
|
|
373
|
+
finally {
|
|
374
|
+
try {
|
|
375
|
+
const completedAt = actionTelemetryNow();
|
|
376
|
+
const durationMs = Math.max(0, completedAt - startedAt);
|
|
377
|
+
if (shouldTrackActionResponse(error, durationMs, response)) {
|
|
378
|
+
const ttfbMs = responseAt === undefined
|
|
379
|
+
? undefined
|
|
380
|
+
: Math.max(0, responseAt - startedAt);
|
|
381
|
+
const serverTiming = parseServerTiming(response);
|
|
382
|
+
const serverDurationMs = serverTiming.get("app");
|
|
383
|
+
const errorStatus = Number(error?.status);
|
|
384
|
+
const statusCode = response?.status ??
|
|
385
|
+
(Number.isFinite(errorStatus) ? errorStatus : undefined);
|
|
386
|
+
const timedOut = error?.timedOut === true;
|
|
387
|
+
const cancelled = options?.signal?.aborted === true && !timedOut;
|
|
388
|
+
const contentLength = Number(response?.headers.get("content-length"));
|
|
389
|
+
trackEvent("action.response", {
|
|
390
|
+
request_id: response?.headers.get("x-agent-native-request-id") ?? undefined,
|
|
391
|
+
action: name,
|
|
392
|
+
method,
|
|
393
|
+
status_code: statusCode,
|
|
394
|
+
status_class: statusCode === undefined
|
|
395
|
+
? "network"
|
|
396
|
+
: `${Math.floor(statusCode / 100)}xx`,
|
|
397
|
+
success: !error,
|
|
398
|
+
outcome: !error
|
|
399
|
+
? "success"
|
|
400
|
+
: timedOut
|
|
401
|
+
? "timeout"
|
|
402
|
+
: cancelled
|
|
403
|
+
? "cancelled"
|
|
404
|
+
: response
|
|
405
|
+
? "http-error"
|
|
406
|
+
: "network-error",
|
|
407
|
+
duration_ms: Math.round(durationMs),
|
|
408
|
+
ttfb_ms: ttfbMs === undefined ? undefined : Math.round(ttfbMs),
|
|
409
|
+
body_ms: ttfbMs === undefined ? undefined : Math.round(durationMs - ttfbMs),
|
|
410
|
+
server_duration_ms: serverDurationMs === undefined
|
|
411
|
+
? undefined
|
|
412
|
+
: Math.round(serverDurationMs),
|
|
413
|
+
network_overhead_ms: ttfbMs === undefined || serverDurationMs === undefined
|
|
414
|
+
? undefined
|
|
415
|
+
: Math.max(0, Math.round(ttfbMs - serverDurationMs)),
|
|
416
|
+
framework_ready_wait_ms: serverTiming.get("startup"),
|
|
417
|
+
db_operation_wall_ms: serverTiming.get("db"),
|
|
418
|
+
db_connect_total_ms: serverTiming.get("db-connect"),
|
|
419
|
+
db_slowest_operation_ms: serverTiming.get("db-slowest"),
|
|
420
|
+
startup_db_operation_wall_ms: serverTiming.get("startup-db"),
|
|
421
|
+
startup_db_connect_total_ms: serverTiming.get("startup-db-connect"),
|
|
422
|
+
response_bytes: Number.isFinite(contentLength) && contentLength >= 0
|
|
423
|
+
? contentLength
|
|
424
|
+
: undefined,
|
|
425
|
+
});
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
catch {
|
|
429
|
+
// Performance telemetry must never change the action result.
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
}
|
|
317
433
|
/**
|
|
318
434
|
* Imperatively call an action from browser/client code.
|
|
319
435
|
*
|