@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
|
@@ -95,14 +95,31 @@ export function RequireSession({
|
|
|
95
95
|
signedOut,
|
|
96
96
|
bypass = false,
|
|
97
97
|
}: RequireSessionProps) {
|
|
98
|
+
if (bypass) return <>{children}</>;
|
|
99
|
+
return (
|
|
100
|
+
<ResolvedSessionGate
|
|
101
|
+
fallback={fallback}
|
|
102
|
+
redirect={redirect}
|
|
103
|
+
signedOut={signedOut}
|
|
104
|
+
>
|
|
105
|
+
{children}
|
|
106
|
+
</ResolvedSessionGate>
|
|
107
|
+
);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
function ResolvedSessionGate({
|
|
111
|
+
children,
|
|
112
|
+
fallback,
|
|
113
|
+
redirect = true,
|
|
114
|
+
signedOut,
|
|
115
|
+
}: Omit<RequireSessionProps, "bypass">) {
|
|
98
116
|
const { session, isLoading } = useSession();
|
|
99
117
|
// Guard against firing the redirect more than once (effect re-runs, React
|
|
100
118
|
// StrictMode double-invoke) — a second navigation while the first is in
|
|
101
119
|
// flight is harmless but noisy.
|
|
102
120
|
const redirectedRef = useRef(false);
|
|
103
121
|
|
|
104
|
-
const mustRedirect =
|
|
105
|
-
!bypass && !isLoading && !session && redirect && !isOnSignInPage();
|
|
122
|
+
const mustRedirect = !isLoading && !session && redirect && !isOnSignInPage();
|
|
106
123
|
|
|
107
124
|
useEffect(() => {
|
|
108
125
|
if (!mustRedirect) return;
|
|
@@ -114,7 +131,6 @@ export function RequireSession({
|
|
|
114
131
|
window.location.replace(buildSignInReturnHref());
|
|
115
132
|
}, [mustRedirect]);
|
|
116
133
|
|
|
117
|
-
if (bypass) return <>{children}</>;
|
|
118
134
|
// Still resolving, or redirect already in flight: show the loading fallback
|
|
119
135
|
// rather than flashing app chrome the visitor can't use.
|
|
120
136
|
if (isLoading) return <>{fallback ?? <DefaultSpinner />}</>;
|
|
@@ -1,73 +1,58 @@
|
|
|
1
|
-
export {
|
|
2
|
-
createSharedEditorExtensions,
|
|
3
|
-
MARKDOWN_DIALECT_CONFIG,
|
|
4
|
-
type RichMarkdownDialect,
|
|
5
|
-
type RichMarkdownEditorPreset,
|
|
6
|
-
type RichMarkdownCollabUser,
|
|
7
|
-
type SharedEditorCollab,
|
|
8
|
-
type SharedEditorFeatures,
|
|
9
|
-
type CreateSharedEditorExtensionsOptions,
|
|
10
|
-
} from "./extensions.js";
|
|
11
|
-
export {
|
|
12
|
-
useCollabReconcile,
|
|
13
|
-
getEditorMarkdown,
|
|
14
|
-
RICH_MARKDOWN_PROGRAMMATIC_TRANSACTION,
|
|
15
|
-
type UseCollabReconcileOptions,
|
|
16
|
-
type UseCollabReconcileResult,
|
|
17
|
-
} from "./useCollabReconcile.js";
|
|
18
1
|
export {
|
|
19
2
|
applyDocSurgically,
|
|
3
|
+
BubbleToolbar,
|
|
4
|
+
buildDefaultBubbleItems,
|
|
5
|
+
createCodeBlockNode,
|
|
6
|
+
createImageExtension,
|
|
7
|
+
createImageSlashCommand,
|
|
8
|
+
createRichMarkdownExtensions,
|
|
9
|
+
createSharedEditorExtensions,
|
|
10
|
+
DEFAULT_CODE_LANGUAGES,
|
|
11
|
+
DEFAULT_DRAG_HANDLE_WRAPPER_SELECTOR,
|
|
12
|
+
DEFAULT_SLASH_COMMANDS,
|
|
20
13
|
defaultParseValue,
|
|
21
14
|
diffTopLevel,
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
DEFAULT_SLASH_COMMANDS,
|
|
27
|
-
createImageSlashCommand,
|
|
28
|
-
type SlashCommandItem,
|
|
29
|
-
type SlashCommandMenuProps,
|
|
30
|
-
} from "./SlashCommandMenu.js";
|
|
31
|
-
export {
|
|
32
|
-
SharedImage,
|
|
33
|
-
createImageExtension,
|
|
15
|
+
DragHandle,
|
|
16
|
+
getEditorMarkdown,
|
|
17
|
+
gfmToProseJSON,
|
|
18
|
+
MARKDOWN_DIALECT_CONFIG,
|
|
34
19
|
pickAndInsertImage,
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
20
|
+
proseJSONToGfm,
|
|
21
|
+
RICH_MARKDOWN_PROGRAMMATIC_TRANSACTION,
|
|
22
|
+
RichMarkdownEditor,
|
|
23
|
+
RunId,
|
|
24
|
+
RUN_ID_NODE_TYPES,
|
|
25
|
+
SharedImage,
|
|
26
|
+
SharedRichEditor,
|
|
27
|
+
SlashCommandMenu,
|
|
28
|
+
useCollabReconcile,
|
|
42
29
|
type BubbleToolbarItem,
|
|
43
30
|
type BubbleToolbarProps,
|
|
44
|
-
} from "./BubbleToolbar.js";
|
|
45
|
-
export {
|
|
46
|
-
SharedRichEditor,
|
|
47
|
-
type SharedRichEditorProps,
|
|
48
|
-
} from "./SharedRichEditor.js";
|
|
49
|
-
export {
|
|
50
|
-
createCodeBlockNode,
|
|
51
|
-
DEFAULT_CODE_LANGUAGES,
|
|
52
|
-
type CodeLanguageOption,
|
|
53
31
|
type CodeBlockClassNames,
|
|
32
|
+
type CodeLanguageOption,
|
|
54
33
|
type CreateCodeBlockNodeOptions,
|
|
55
|
-
} from "./CodeBlockNode.js";
|
|
56
|
-
export {
|
|
57
|
-
RichMarkdownEditor,
|
|
58
|
-
createRichMarkdownExtensions,
|
|
59
|
-
type RichMarkdownEditorProps,
|
|
60
34
|
type CreateRichMarkdownExtensionsOptions,
|
|
61
|
-
|
|
62
|
-
export { RunId, RUN_ID_NODE_TYPES } from "./RunId.js";
|
|
63
|
-
export { gfmToProseJSON, proseJSONToGfm } from "./gfmDoc.js";
|
|
64
|
-
export {
|
|
65
|
-
DragHandle,
|
|
66
|
-
DEFAULT_DRAG_HANDLE_WRAPPER_SELECTOR,
|
|
35
|
+
type CreateSharedEditorExtensionsOptions,
|
|
67
36
|
type DragHandleDropContext,
|
|
68
37
|
type DragHandleDropPlacement,
|
|
69
38
|
type DragHandleOptions,
|
|
70
|
-
|
|
39
|
+
type ImageUploadFn,
|
|
40
|
+
type RichMarkdownCollabUser,
|
|
41
|
+
type RichMarkdownDialect,
|
|
42
|
+
type RichMarkdownEditorPreset,
|
|
43
|
+
type RichMarkdownEditorProps,
|
|
44
|
+
type SharedEditorCollab,
|
|
45
|
+
type SharedEditorFeatures,
|
|
46
|
+
type SharedImageOptions,
|
|
47
|
+
type SharedRichEditorProps,
|
|
48
|
+
type SlashCommandItem,
|
|
49
|
+
type SlashCommandMenuProps,
|
|
50
|
+
type TopLevelDiff,
|
|
51
|
+
type UseCollabReconcileOptions,
|
|
52
|
+
type UseCollabReconcileResult,
|
|
53
|
+
} from "@agent-native/toolkit/editor";
|
|
54
|
+
|
|
55
|
+
export { uploadEditorImage } from "./uploadEditorImage.js";
|
|
71
56
|
export {
|
|
72
57
|
createRegistryBlockNode,
|
|
73
58
|
RegistryBlockNodeView,
|
|
@@ -27,6 +27,7 @@ import type {
|
|
|
27
27
|
UseMutationOptions,
|
|
28
28
|
} from "@tanstack/react-query";
|
|
29
29
|
|
|
30
|
+
import { trackEvent } from "./analytics.js";
|
|
30
31
|
import { agentNativePath } from "./api-path.js";
|
|
31
32
|
import { getBrowserTabId } from "./browser-tab-id.js";
|
|
32
33
|
import { ensureEmbedAuthFetchInterceptor } from "./embed-auth.js";
|
|
@@ -221,6 +222,10 @@ export interface ActionFetchOptions {
|
|
|
221
222
|
includeRequestSource?: boolean;
|
|
222
223
|
}
|
|
223
224
|
|
|
225
|
+
type InternalActionFetchOptions = ActionFetchOptions & {
|
|
226
|
+
onResponse?: (response: Response) => void;
|
|
227
|
+
};
|
|
228
|
+
|
|
224
229
|
/**
|
|
225
230
|
* Conservative per-document keepalive body budget. Browsers commonly enforce
|
|
226
231
|
* an approximately 64 KiB aggregate limit across every in-flight keepalive
|
|
@@ -251,11 +256,11 @@ function utf8ByteLength(value: string): number {
|
|
|
251
256
|
return bytes;
|
|
252
257
|
}
|
|
253
258
|
|
|
254
|
-
async function
|
|
259
|
+
async function performActionFetch<T>(
|
|
255
260
|
name: string,
|
|
256
261
|
method: string,
|
|
257
262
|
params?: Record<string, any>,
|
|
258
|
-
options?:
|
|
263
|
+
options?: InternalActionFetchOptions,
|
|
259
264
|
): Promise<T> {
|
|
260
265
|
ensureEmbedAuthFetchInterceptor();
|
|
261
266
|
let url = `${ACTION_PREFIX}/${name}`;
|
|
@@ -332,6 +337,7 @@ async function actionFetch<T>(
|
|
|
332
337
|
try {
|
|
333
338
|
try {
|
|
334
339
|
res = await fetch(url, init);
|
|
340
|
+
options?.onResponse?.(res);
|
|
335
341
|
} catch (err) {
|
|
336
342
|
if (timedOut) throwTimeout();
|
|
337
343
|
// Caller-initiated cancellation — rethrow untouched so React Query
|
|
@@ -418,6 +424,143 @@ async function actionFetch<T>(
|
|
|
418
424
|
return (data ?? (null as unknown)) as T;
|
|
419
425
|
}
|
|
420
426
|
|
|
427
|
+
function actionTelemetryNow(): number {
|
|
428
|
+
return typeof performance !== "undefined" ? performance.now() : Date.now();
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
function parseServerTiming(
|
|
432
|
+
response: Response | undefined,
|
|
433
|
+
): Map<string, number> {
|
|
434
|
+
const timings = new Map<string, number>();
|
|
435
|
+
const value = response?.headers.get("server-timing");
|
|
436
|
+
if (!value) return timings;
|
|
437
|
+
|
|
438
|
+
for (const entry of value.split(",")) {
|
|
439
|
+
const [rawName, ...params] = entry.trim().split(";");
|
|
440
|
+
const name = rawName?.trim();
|
|
441
|
+
if (!name) continue;
|
|
442
|
+
const duration = params
|
|
443
|
+
.map((param) => /^dur=(.+)$/i.exec(param.trim())?.[1])
|
|
444
|
+
.find(Boolean);
|
|
445
|
+
const parsed = duration === undefined ? NaN : Number(duration);
|
|
446
|
+
if (Number.isFinite(parsed)) timings.set(name, parsed);
|
|
447
|
+
}
|
|
448
|
+
return timings;
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
function shouldTrackActionResponse(
|
|
452
|
+
error: unknown,
|
|
453
|
+
durationMs: number,
|
|
454
|
+
response: Response | undefined,
|
|
455
|
+
): boolean {
|
|
456
|
+
if (error || durationMs >= 1_000) return true;
|
|
457
|
+
if (response && response.status >= 400 && response.status < 500) return true;
|
|
458
|
+
if (
|
|
459
|
+
/\bstartup(?:-db)?\s*;/i.test(response?.headers.get("server-timing") ?? "")
|
|
460
|
+
) {
|
|
461
|
+
return true;
|
|
462
|
+
}
|
|
463
|
+
const raw = (import.meta.env as Record<string, string | undefined>)
|
|
464
|
+
?.VITE_AGENT_NATIVE_ACTION_TELEMETRY_SAMPLE_RATE;
|
|
465
|
+
const parsed = raw === undefined ? 0.1 : Number(raw);
|
|
466
|
+
const rate = Number.isFinite(parsed) ? Math.max(0, Math.min(1, parsed)) : 0.1;
|
|
467
|
+
return Math.random() < rate;
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
async function actionFetch<T>(
|
|
471
|
+
name: string,
|
|
472
|
+
method: string,
|
|
473
|
+
params?: Record<string, any>,
|
|
474
|
+
options?: ActionFetchOptions,
|
|
475
|
+
): Promise<T> {
|
|
476
|
+
const startedAt = actionTelemetryNow();
|
|
477
|
+
let response: Response | undefined;
|
|
478
|
+
let responseAt: number | undefined;
|
|
479
|
+
let error: unknown;
|
|
480
|
+
|
|
481
|
+
try {
|
|
482
|
+
return await performActionFetch<T>(name, method, params, {
|
|
483
|
+
...options,
|
|
484
|
+
onResponse: (nextResponse) => {
|
|
485
|
+
response = nextResponse;
|
|
486
|
+
responseAt = actionTelemetryNow();
|
|
487
|
+
},
|
|
488
|
+
});
|
|
489
|
+
} catch (caught) {
|
|
490
|
+
error = caught;
|
|
491
|
+
throw caught;
|
|
492
|
+
} finally {
|
|
493
|
+
try {
|
|
494
|
+
const completedAt = actionTelemetryNow();
|
|
495
|
+
const durationMs = Math.max(0, completedAt - startedAt);
|
|
496
|
+
if (shouldTrackActionResponse(error, durationMs, response)) {
|
|
497
|
+
const ttfbMs =
|
|
498
|
+
responseAt === undefined
|
|
499
|
+
? undefined
|
|
500
|
+
: Math.max(0, responseAt - startedAt);
|
|
501
|
+
const serverTiming = parseServerTiming(response);
|
|
502
|
+
const serverDurationMs = serverTiming.get("app");
|
|
503
|
+
const errorStatus = Number(
|
|
504
|
+
(error as { status?: unknown } | undefined)?.status,
|
|
505
|
+
);
|
|
506
|
+
const statusCode =
|
|
507
|
+
response?.status ??
|
|
508
|
+
(Number.isFinite(errorStatus) ? errorStatus : undefined);
|
|
509
|
+
const timedOut =
|
|
510
|
+
(error as { timedOut?: unknown } | undefined)?.timedOut === true;
|
|
511
|
+
const cancelled = options?.signal?.aborted === true && !timedOut;
|
|
512
|
+
const contentLength = Number(response?.headers.get("content-length"));
|
|
513
|
+
|
|
514
|
+
trackEvent("action.response", {
|
|
515
|
+
request_id:
|
|
516
|
+
response?.headers.get("x-agent-native-request-id") ?? undefined,
|
|
517
|
+
action: name,
|
|
518
|
+
method,
|
|
519
|
+
status_code: statusCode,
|
|
520
|
+
status_class:
|
|
521
|
+
statusCode === undefined
|
|
522
|
+
? "network"
|
|
523
|
+
: `${Math.floor(statusCode / 100)}xx`,
|
|
524
|
+
success: !error,
|
|
525
|
+
outcome: !error
|
|
526
|
+
? "success"
|
|
527
|
+
: timedOut
|
|
528
|
+
? "timeout"
|
|
529
|
+
: cancelled
|
|
530
|
+
? "cancelled"
|
|
531
|
+
: response
|
|
532
|
+
? "http-error"
|
|
533
|
+
: "network-error",
|
|
534
|
+
duration_ms: Math.round(durationMs),
|
|
535
|
+
ttfb_ms: ttfbMs === undefined ? undefined : Math.round(ttfbMs),
|
|
536
|
+
body_ms:
|
|
537
|
+
ttfbMs === undefined ? undefined : Math.round(durationMs - ttfbMs),
|
|
538
|
+
server_duration_ms:
|
|
539
|
+
serverDurationMs === undefined
|
|
540
|
+
? undefined
|
|
541
|
+
: Math.round(serverDurationMs),
|
|
542
|
+
network_overhead_ms:
|
|
543
|
+
ttfbMs === undefined || serverDurationMs === undefined
|
|
544
|
+
? undefined
|
|
545
|
+
: Math.max(0, Math.round(ttfbMs - serverDurationMs)),
|
|
546
|
+
framework_ready_wait_ms: serverTiming.get("startup"),
|
|
547
|
+
db_operation_wall_ms: serverTiming.get("db"),
|
|
548
|
+
db_connect_total_ms: serverTiming.get("db-connect"),
|
|
549
|
+
db_slowest_operation_ms: serverTiming.get("db-slowest"),
|
|
550
|
+
startup_db_operation_wall_ms: serverTiming.get("startup-db"),
|
|
551
|
+
startup_db_connect_total_ms: serverTiming.get("startup-db-connect"),
|
|
552
|
+
response_bytes:
|
|
553
|
+
Number.isFinite(contentLength) && contentLength >= 0
|
|
554
|
+
? contentLength
|
|
555
|
+
: undefined,
|
|
556
|
+
});
|
|
557
|
+
}
|
|
558
|
+
} catch {
|
|
559
|
+
// Performance telemetry must never change the action result.
|
|
560
|
+
}
|
|
561
|
+
}
|
|
562
|
+
}
|
|
563
|
+
|
|
421
564
|
/**
|
|
422
565
|
* Imperatively call an action from browser/client code.
|
|
423
566
|
*
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { useEffect, useState } from "react";
|
|
2
2
|
|
|
3
3
|
import type { AuthSession } from "../server/auth.js";
|
|
4
4
|
import { setSentryUser, trackSessionStatus } from "./analytics.js";
|
|
@@ -11,6 +11,65 @@ interface UseSessionResult {
|
|
|
11
11
|
isLoading: boolean;
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
+
const SESSION_CACHE_TTL_MS = 30_000;
|
|
15
|
+
const SESSION_RETRY_DELAY_MS = 1_000;
|
|
16
|
+
let cachedSession: AuthSession | null | undefined;
|
|
17
|
+
let cachedSessionAt = 0;
|
|
18
|
+
let sessionRequest: Promise<AuthSession | null | undefined> | undefined;
|
|
19
|
+
let trackedSessionIdentity: string | null | undefined;
|
|
20
|
+
|
|
21
|
+
function hasFreshSessionCache(): boolean {
|
|
22
|
+
return (
|
|
23
|
+
cachedSession !== undefined &&
|
|
24
|
+
Date.now() - cachedSessionAt < SESSION_CACHE_TTL_MS
|
|
25
|
+
);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
function publishSessionIdentity(session: AuthSession | null): void {
|
|
29
|
+
const identity = session?.userId ?? session?.email ?? null;
|
|
30
|
+
if (trackedSessionIdentity !== identity) {
|
|
31
|
+
trackedSessionIdentity = identity;
|
|
32
|
+
if (session) {
|
|
33
|
+
setSentryUser(
|
|
34
|
+
{
|
|
35
|
+
id: session.userId,
|
|
36
|
+
email: session.email,
|
|
37
|
+
username: session.name,
|
|
38
|
+
},
|
|
39
|
+
session.orgId ?? null,
|
|
40
|
+
);
|
|
41
|
+
} else {
|
|
42
|
+
setSentryUser(null, null);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
trackSessionStatus(Boolean(session));
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
function fetchSharedSession(): Promise<AuthSession | null | undefined> {
|
|
49
|
+
if (hasFreshSessionCache()) return Promise.resolve(cachedSession ?? null);
|
|
50
|
+
if (sessionRequest) return sessionRequest;
|
|
51
|
+
|
|
52
|
+
sessionRequest = (async () => {
|
|
53
|
+
try {
|
|
54
|
+
const res = await fetch(agentNativePath("/_agent-native/auth/session"));
|
|
55
|
+
if (!res.ok) return undefined;
|
|
56
|
+
|
|
57
|
+
const data = await res.json();
|
|
58
|
+
const session = data.error ? null : (data as AuthSession);
|
|
59
|
+
cachedSession = session;
|
|
60
|
+
cachedSessionAt = Date.now();
|
|
61
|
+
publishSessionIdentity(session);
|
|
62
|
+
return session;
|
|
63
|
+
} catch {
|
|
64
|
+
return undefined;
|
|
65
|
+
}
|
|
66
|
+
})().finally(() => {
|
|
67
|
+
sessionRequest = undefined;
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
return sessionRequest;
|
|
71
|
+
}
|
|
72
|
+
|
|
14
73
|
/**
|
|
15
74
|
* Client-side hook to get the current auth session.
|
|
16
75
|
*
|
|
@@ -21,61 +80,33 @@ interface UseSessionResult {
|
|
|
21
80
|
* Templates should use this instead of building their own auth context.
|
|
22
81
|
*/
|
|
23
82
|
export function useSession(): UseSessionResult {
|
|
24
|
-
const
|
|
25
|
-
const [
|
|
26
|
-
const
|
|
83
|
+
const cached = hasFreshSessionCache() ? (cachedSession ?? null) : null;
|
|
84
|
+
const [session, setSession] = useState<AuthSession | null>(cached);
|
|
85
|
+
const [isLoading, setIsLoading] = useState(!hasFreshSessionCache());
|
|
27
86
|
|
|
28
87
|
useEffect(() => {
|
|
29
88
|
let cancelled = false;
|
|
89
|
+
let retryTimer: ReturnType<typeof setTimeout> | undefined;
|
|
30
90
|
|
|
31
|
-
async
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
const data = await res.json();
|
|
41
|
-
if (!cancelled) {
|
|
42
|
-
// The endpoint returns { error: "..." } when not authenticated
|
|
43
|
-
if (data.error) {
|
|
44
|
-
setSession(null);
|
|
45
|
-
} else {
|
|
46
|
-
resolved = data as AuthSession;
|
|
47
|
-
setSession(resolved);
|
|
48
|
-
signedIn = true;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
} catch {
|
|
52
|
-
if (!cancelled) setSession(null);
|
|
53
|
-
} finally {
|
|
54
|
-
if (!cancelled) {
|
|
55
|
-
setIsLoading(false);
|
|
56
|
-
if (resolved) {
|
|
57
|
-
setSentryUser(
|
|
58
|
-
{
|
|
59
|
-
id: resolved.userId,
|
|
60
|
-
email: resolved.email,
|
|
61
|
-
username: resolved.name,
|
|
62
|
-
},
|
|
63
|
-
resolved.orgId ?? null,
|
|
64
|
-
);
|
|
65
|
-
} else {
|
|
66
|
-
setSentryUser(null, null);
|
|
67
|
-
}
|
|
68
|
-
if (!trackedRef.current) {
|
|
69
|
-
trackedRef.current = true;
|
|
70
|
-
trackSessionStatus(signedIn);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
91
|
+
const resolveSession = async () => {
|
|
92
|
+
const resolved = await fetchSharedSession();
|
|
93
|
+
if (cancelled) return;
|
|
94
|
+
|
|
95
|
+
if (resolved === undefined) {
|
|
96
|
+
retryTimer = setTimeout(() => {
|
|
97
|
+
void resolveSession();
|
|
98
|
+
}, SESSION_RETRY_DELAY_MS);
|
|
99
|
+
return;
|
|
73
100
|
}
|
|
74
|
-
}
|
|
75
101
|
|
|
76
|
-
|
|
102
|
+
setSession(resolved);
|
|
103
|
+
setIsLoading(false);
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
void resolveSession();
|
|
77
107
|
return () => {
|
|
78
108
|
cancelled = true;
|
|
109
|
+
if (retryTimer) clearTimeout(retryTimer);
|
|
79
110
|
};
|
|
80
111
|
}, []);
|
|
81
112
|
|