@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.
Files changed (334) hide show
  1. package/corpus/README.md +2 -2
  2. package/corpus/core/CHANGELOG.md +16 -0
  3. package/corpus/core/docs/content/agent-native-toolkit.mdx +46 -13
  4. package/corpus/core/docs/content/locales/ar-SA/agent-native-toolkit.mdx +79 -55
  5. package/corpus/core/docs/content/locales/ar-SA/toolkit-capability-packages.mdx +21 -0
  6. package/corpus/core/docs/content/locales/ar-SA/toolkit-context-knowledge.mdx +12 -0
  7. package/corpus/core/docs/content/locales/ar-SA/toolkit-editors-canvases.mdx +17 -0
  8. package/corpus/core/docs/content/locales/de-DE/agent-native-toolkit.mdx +82 -54
  9. package/corpus/core/docs/content/locales/de-DE/toolkit-capability-packages.mdx +21 -0
  10. package/corpus/core/docs/content/locales/de-DE/toolkit-context-knowledge.mdx +12 -0
  11. package/corpus/core/docs/content/locales/de-DE/toolkit-editors-canvases.mdx +17 -0
  12. package/corpus/core/docs/content/locales/es-ES/agent-native-toolkit.mdx +81 -52
  13. package/corpus/core/docs/content/locales/es-ES/toolkit-capability-packages.mdx +21 -0
  14. package/corpus/core/docs/content/locales/es-ES/toolkit-context-knowledge.mdx +12 -0
  15. package/corpus/core/docs/content/locales/es-ES/toolkit-editors-canvases.mdx +21 -0
  16. package/corpus/core/docs/content/locales/fr-FR/agent-native-toolkit.mdx +84 -54
  17. package/corpus/core/docs/content/locales/fr-FR/toolkit-capability-packages.mdx +21 -0
  18. package/corpus/core/docs/content/locales/fr-FR/toolkit-context-knowledge.mdx +12 -0
  19. package/corpus/core/docs/content/locales/fr-FR/toolkit-editors-canvases.mdx +21 -0
  20. package/corpus/core/docs/content/locales/hi-IN/agent-native-toolkit.mdx +69 -62
  21. package/corpus/core/docs/content/locales/hi-IN/toolkit-capability-packages.mdx +21 -0
  22. package/corpus/core/docs/content/locales/hi-IN/toolkit-context-knowledge.mdx +12 -0
  23. package/corpus/core/docs/content/locales/hi-IN/toolkit-editors-canvases.mdx +17 -0
  24. package/corpus/core/docs/content/locales/ja-JP/agent-native-toolkit.mdx +69 -62
  25. package/corpus/core/docs/content/locales/ja-JP/toolkit-capability-packages.mdx +21 -0
  26. package/corpus/core/docs/content/locales/ja-JP/toolkit-context-knowledge.mdx +12 -0
  27. package/corpus/core/docs/content/locales/ja-JP/toolkit-editors-canvases.mdx +17 -0
  28. package/corpus/core/docs/content/locales/ko-KR/agent-native-toolkit.mdx +69 -62
  29. package/corpus/core/docs/content/locales/ko-KR/toolkit-capability-packages.mdx +21 -0
  30. package/corpus/core/docs/content/locales/ko-KR/toolkit-context-knowledge.mdx +12 -0
  31. package/corpus/core/docs/content/locales/ko-KR/toolkit-editors-canvases.mdx +17 -0
  32. package/corpus/core/docs/content/locales/pt-BR/agent-native-toolkit.mdx +82 -54
  33. package/corpus/core/docs/content/locales/pt-BR/toolkit-capability-packages.mdx +21 -0
  34. package/corpus/core/docs/content/locales/pt-BR/toolkit-context-knowledge.mdx +12 -0
  35. package/corpus/core/docs/content/locales/pt-BR/toolkit-editors-canvases.mdx +17 -0
  36. package/corpus/core/docs/content/locales/zh-CN/agent-native-toolkit.mdx +69 -62
  37. package/corpus/core/docs/content/locales/zh-CN/toolkit-capability-packages.mdx +21 -0
  38. package/corpus/core/docs/content/locales/zh-CN/toolkit-context-knowledge.mdx +12 -0
  39. package/corpus/core/docs/content/locales/zh-CN/toolkit-editors-canvases.mdx +17 -0
  40. package/corpus/core/docs/content/locales/zh-TW/agent-native-toolkit.mdx +69 -62
  41. package/corpus/core/docs/content/locales/zh-TW/toolkit-capability-packages.mdx +21 -0
  42. package/corpus/core/docs/content/locales/zh-TW/toolkit-context-knowledge.mdx +12 -0
  43. package/corpus/core/docs/content/locales/zh-TW/toolkit-editors-canvases.mdx +17 -0
  44. package/corpus/core/docs/content/toolkit-capability-packages.mdx +52 -0
  45. package/corpus/core/docs/content/toolkit-context-knowledge.mdx +46 -0
  46. package/corpus/core/docs/content/toolkit-editors-canvases.mdx +55 -0
  47. package/corpus/core/package.json +35 -34
  48. package/corpus/core/src/cli/create.ts +57 -15
  49. package/corpus/core/src/cli/package-lifecycle.ts +2 -0
  50. package/corpus/core/src/cli/skills-content/visual-plan-skill.ts +2 -0
  51. package/corpus/core/src/client/context-xray/ContextMeter.tsx +31 -111
  52. package/corpus/core/src/client/context-xray/ContextSegmentRow.tsx +8 -111
  53. package/corpus/core/src/client/context-xray/ContextTreemap.tsx +6 -111
  54. package/corpus/core/src/client/context-xray/ContextXRayPanel.tsx +31 -391
  55. package/corpus/core/src/client/context-xray/SegmentProvenancePopover.tsx +4 -52
  56. package/corpus/core/src/client/context-xray/format.ts +0 -33
  57. package/corpus/core/src/client/require-session.tsx +19 -3
  58. package/corpus/core/src/client/rich-markdown-editor/index.ts +42 -57
  59. package/corpus/core/src/client/rich-markdown-editor/uploadEditorImage.ts +2 -1
  60. package/corpus/core/src/client/use-action.ts +145 -2
  61. package/corpus/core/src/client/use-session.ts +79 -48
  62. package/corpus/core/src/client/visual-style-controls.tsx +1 -1088
  63. package/corpus/core/src/collab/agent-identity.ts +5 -22
  64. package/corpus/core/src/collab/client.ts +1 -53
  65. package/corpus/core/src/db/client.ts +13 -7
  66. package/corpus/core/src/db/create-get-db.ts +20 -13
  67. package/corpus/core/src/db/request-telemetry.ts +154 -0
  68. package/corpus/core/src/integrations/index.ts +1 -0
  69. package/corpus/core/src/integrations/plugin.ts +9 -3
  70. package/corpus/core/src/integrations/remote-push-delivery-job.ts +48 -0
  71. package/corpus/core/src/integrations/remote-push-delivery.ts +370 -0
  72. package/corpus/core/src/integrations/remote-push-store.ts +275 -26
  73. package/corpus/core/src/server/better-auth-instance.ts +11 -3
  74. package/corpus/core/src/server/core-routes-plugin.ts +36 -14
  75. package/corpus/core/src/server/framework-request-handler.ts +11 -1
  76. package/corpus/core/src/server/http-response-telemetry.ts +233 -31
  77. package/corpus/core/src/styles/rich-markdown-editor.css +1 -510
  78. package/corpus/core/src/templates/workspace-core/.agents/skills/tracking/SKILL.md +19 -0
  79. package/corpus/core/src/testing.ts +1 -1
  80. package/corpus/core/src/vite/client.ts +3 -0
  81. package/corpus/templates/clips/actions/finalize-recording.ts +3 -1
  82. package/corpus/templates/clips/actions/set-mobile-capture-state.ts +4 -1
  83. package/corpus/templates/clips/app/components/library/library-layout.tsx +1 -6
  84. package/corpus/templates/clips/changelog/2026-07-18-new-recording-is-now-emphasized-as-the-primary-action-in-the.md +6 -0
  85. package/corpus/templates/clips/changelog/2026-07-18-recordings-now-remain-safely-recoverable-until-the-stored-me.md +6 -0
  86. package/corpus/templates/content/app/components/editor/VisualEditor.tsx +5 -3
  87. package/corpus/templates/content/app/components/editor/extensions/DragHandle.tsx +4 -4
  88. package/corpus/templates/content/package.json +25 -25
  89. package/corpus/templates/design/app/components/design/TweaksPanel.tsx +2 -1
  90. package/corpus/templates/design/package.json +1 -1
  91. package/corpus/templates/mail/package.json +9 -9
  92. package/corpus/templates/plan/.agents/skills/visual-plan/SKILL.md +2 -0
  93. package/corpus/templates/plan/app/components/editor/PlanDocumentEditor.tsx +8 -8
  94. package/corpus/templates/plan/app/components/editor/planSlashCommands.ts +6 -6
  95. package/corpus/templates/plan/app/components/plan/PlanImageNode.tsx +4 -7
  96. package/corpus/templates/plan/app/components/plan/PlanMarkdownEditor.tsx +6 -4
  97. package/corpus/templates/plan/app/components/plan/PlanVisualSurface.tsx +1 -1
  98. package/corpus/templates/plan/changelog/2026-07-18-visual-plans-now-open-on-wireframes-by-default-when-a-protot.md +6 -0
  99. package/corpus/templates/plan/package.json +3 -3
  100. package/corpus/templates/slides/app/components/editor/SlideStyleInspector.tsx +2 -2
  101. package/corpus/templates/slides/app/components/editor/TweaksPanel.tsx +2 -2
  102. package/corpus/templates/slides/package.json +13 -13
  103. package/corpus/templates/tasks/AGENTS.md +3 -0
  104. package/corpus/templates/tasks/actions/render-task-list-inline.ts +202 -0
  105. package/corpus/templates/tasks/changelog/2026-07-18-task-lists-can-now-appear-as-interactive-widgets-inline-in-c.md +6 -0
  106. package/corpus/templates/tasks/docs/features/f8-chat.mdx +2 -0
  107. package/corpus/templates/tasks/server/plugins/agent-chat.ts +2 -0
  108. package/dist/catalog.json +39 -1
  109. package/dist/cli/create.d.ts +10 -1
  110. package/dist/cli/create.d.ts.map +1 -1
  111. package/dist/cli/create.js +49 -16
  112. package/dist/cli/create.js.map +1 -1
  113. package/dist/cli/package-lifecycle.d.ts.map +1 -1
  114. package/dist/cli/package-lifecycle.js +2 -0
  115. package/dist/cli/package-lifecycle.js.map +1 -1
  116. package/dist/cli/skills-content/visual-plan-skill.d.ts +1 -1
  117. package/dist/cli/skills-content/visual-plan-skill.d.ts.map +1 -1
  118. package/dist/cli/skills-content/visual-plan-skill.js +2 -0
  119. package/dist/cli/skills-content/visual-plan-skill.js.map +1 -1
  120. package/dist/client/context-xray/ContextMeter.d.ts.map +1 -1
  121. package/dist/client/context-xray/ContextMeter.js +8 -23
  122. package/dist/client/context-xray/ContextMeter.js.map +1 -1
  123. package/dist/client/context-xray/ContextSegmentRow.d.ts.map +1 -1
  124. package/dist/client/context-xray/ContextSegmentRow.js +3 -19
  125. package/dist/client/context-xray/ContextSegmentRow.js.map +1 -1
  126. package/dist/client/context-xray/ContextTreemap.d.ts.map +1 -1
  127. package/dist/client/context-xray/ContextTreemap.js +3 -54
  128. package/dist/client/context-xray/ContextTreemap.js.map +1 -1
  129. package/dist/client/context-xray/ContextXRayPanel.d.ts.map +1 -1
  130. package/dist/client/context-xray/ContextXRayPanel.js +21 -163
  131. package/dist/client/context-xray/ContextXRayPanel.js.map +1 -1
  132. package/dist/client/context-xray/SegmentProvenancePopover.d.ts.map +1 -1
  133. package/dist/client/context-xray/SegmentProvenancePopover.js +3 -4
  134. package/dist/client/context-xray/SegmentProvenancePopover.js.map +1 -1
  135. package/dist/client/context-xray/format.d.ts +0 -4
  136. package/dist/client/context-xray/format.d.ts.map +1 -1
  137. package/dist/client/context-xray/format.js +0 -49
  138. package/dist/client/context-xray/format.js.map +1 -1
  139. package/dist/client/require-session.d.ts.map +1 -1
  140. package/dist/client/require-session.js +6 -3
  141. package/dist/client/require-session.js.map +1 -1
  142. package/dist/client/rich-markdown-editor/index.d.ts +1 -12
  143. package/dist/client/rich-markdown-editor/index.d.ts.map +1 -1
  144. package/dist/client/rich-markdown-editor/index.js +1 -12
  145. package/dist/client/rich-markdown-editor/index.js.map +1 -1
  146. package/dist/client/rich-markdown-editor/uploadEditorImage.d.ts +1 -1
  147. package/dist/client/rich-markdown-editor/uploadEditorImage.d.ts.map +1 -1
  148. package/dist/client/rich-markdown-editor/uploadEditorImage.js.map +1 -1
  149. package/dist/client/use-action.d.ts.map +1 -1
  150. package/dist/client/use-action.js +117 -1
  151. package/dist/client/use-action.js.map +1 -1
  152. package/dist/client/use-session.d.ts.map +1 -1
  153. package/dist/client/use-session.js +72 -50
  154. package/dist/client/use-session.js.map +1 -1
  155. package/dist/client/visual-style-controls.d.ts +1 -89
  156. package/dist/client/visual-style-controls.d.ts.map +1 -1
  157. package/dist/client/visual-style-controls.js +1 -498
  158. package/dist/client/visual-style-controls.js.map +1 -1
  159. package/dist/collab/agent-identity.d.ts +1 -14
  160. package/dist/collab/agent-identity.d.ts.map +1 -1
  161. package/dist/collab/agent-identity.js +1 -13
  162. package/dist/collab/agent-identity.js.map +1 -1
  163. package/dist/collab/awareness.d.ts +2 -2
  164. package/dist/collab/awareness.d.ts.map +1 -1
  165. package/dist/collab/client.d.ts +1 -19
  166. package/dist/collab/client.d.ts.map +1 -1
  167. package/dist/collab/client.js +1 -53
  168. package/dist/collab/client.js.map +1 -1
  169. package/dist/collab/struct-routes.d.ts +1 -1
  170. package/dist/db/client.d.ts.map +1 -1
  171. package/dist/db/client.js +7 -1
  172. package/dist/db/client.js.map +1 -1
  173. package/dist/db/create-get-db.d.ts +3 -6
  174. package/dist/db/create-get-db.d.ts.map +1 -1
  175. package/dist/db/create-get-db.js +9 -2
  176. package/dist/db/create-get-db.js.map +1 -1
  177. package/dist/db/request-telemetry.d.ts +23 -0
  178. package/dist/db/request-telemetry.d.ts.map +1 -0
  179. package/dist/db/request-telemetry.js +95 -0
  180. package/dist/db/request-telemetry.js.map +1 -0
  181. package/dist/integrations/index.d.ts +1 -0
  182. package/dist/integrations/index.d.ts.map +1 -1
  183. package/dist/integrations/index.js +1 -0
  184. package/dist/integrations/index.js.map +1 -1
  185. package/dist/integrations/plugin.d.ts.map +1 -1
  186. package/dist/integrations/plugin.js +8 -3
  187. package/dist/integrations/plugin.js.map +1 -1
  188. package/dist/integrations/remote-push-delivery-job.d.ts +4 -0
  189. package/dist/integrations/remote-push-delivery-job.d.ts.map +1 -0
  190. package/dist/integrations/remote-push-delivery-job.js +44 -0
  191. package/dist/integrations/remote-push-delivery-job.js.map +1 -0
  192. package/dist/integrations/remote-push-delivery.d.ts +11 -0
  193. package/dist/integrations/remote-push-delivery.d.ts.map +1 -0
  194. package/dist/integrations/remote-push-delivery.js +265 -0
  195. package/dist/integrations/remote-push-delivery.js.map +1 -0
  196. package/dist/integrations/remote-push-store.d.ts +33 -0
  197. package/dist/integrations/remote-push-store.d.ts.map +1 -1
  198. package/dist/integrations/remote-push-store.js +195 -26
  199. package/dist/integrations/remote-push-store.js.map +1 -1
  200. package/dist/notifications/routes.d.ts +3 -3
  201. package/dist/progress/routes.d.ts +1 -1
  202. package/dist/provider-api/corpus-jobs.d.ts +2 -2
  203. package/dist/resources/handlers.d.ts +3 -3
  204. package/dist/secrets/routes.d.ts +9 -9
  205. package/dist/server/agent-engine-api-key-route.d.ts +1 -1
  206. package/dist/server/better-auth-instance.js +7 -3
  207. package/dist/server/better-auth-instance.js.map +1 -1
  208. package/dist/server/core-routes-plugin.d.ts +8 -0
  209. package/dist/server/core-routes-plugin.d.ts.map +1 -1
  210. package/dist/server/core-routes-plugin.js +23 -8
  211. package/dist/server/core-routes-plugin.js.map +1 -1
  212. package/dist/server/framework-request-handler.d.ts.map +1 -1
  213. package/dist/server/framework-request-handler.js +9 -1
  214. package/dist/server/framework-request-handler.js.map +1 -1
  215. package/dist/server/http-response-telemetry.d.ts +3 -2
  216. package/dist/server/http-response-telemetry.d.ts.map +1 -1
  217. package/dist/server/http-response-telemetry.js +160 -27
  218. package/dist/server/http-response-telemetry.js.map +1 -1
  219. package/dist/server/transcribe-voice.d.ts +1 -1
  220. package/dist/styles/rich-markdown-editor.css +1 -510
  221. package/dist/templates/workspace-core/.agents/skills/tracking/SKILL.md +19 -0
  222. package/dist/testing.d.ts +1 -1
  223. package/dist/testing.d.ts.map +1 -1
  224. package/dist/testing.js +1 -1
  225. package/dist/testing.js.map +1 -1
  226. package/dist/vite/client.d.ts.map +1 -1
  227. package/dist/vite/client.js +3 -0
  228. package/dist/vite/client.js.map +1 -1
  229. package/docs/content/agent-native-toolkit.mdx +46 -13
  230. package/docs/content/locales/ar-SA/agent-native-toolkit.mdx +79 -55
  231. package/docs/content/locales/ar-SA/toolkit-capability-packages.mdx +21 -0
  232. package/docs/content/locales/ar-SA/toolkit-context-knowledge.mdx +12 -0
  233. package/docs/content/locales/ar-SA/toolkit-editors-canvases.mdx +17 -0
  234. package/docs/content/locales/de-DE/agent-native-toolkit.mdx +82 -54
  235. package/docs/content/locales/de-DE/toolkit-capability-packages.mdx +21 -0
  236. package/docs/content/locales/de-DE/toolkit-context-knowledge.mdx +12 -0
  237. package/docs/content/locales/de-DE/toolkit-editors-canvases.mdx +17 -0
  238. package/docs/content/locales/es-ES/agent-native-toolkit.mdx +81 -52
  239. package/docs/content/locales/es-ES/toolkit-capability-packages.mdx +21 -0
  240. package/docs/content/locales/es-ES/toolkit-context-knowledge.mdx +12 -0
  241. package/docs/content/locales/es-ES/toolkit-editors-canvases.mdx +21 -0
  242. package/docs/content/locales/fr-FR/agent-native-toolkit.mdx +84 -54
  243. package/docs/content/locales/fr-FR/toolkit-capability-packages.mdx +21 -0
  244. package/docs/content/locales/fr-FR/toolkit-context-knowledge.mdx +12 -0
  245. package/docs/content/locales/fr-FR/toolkit-editors-canvases.mdx +21 -0
  246. package/docs/content/locales/hi-IN/agent-native-toolkit.mdx +69 -62
  247. package/docs/content/locales/hi-IN/toolkit-capability-packages.mdx +21 -0
  248. package/docs/content/locales/hi-IN/toolkit-context-knowledge.mdx +12 -0
  249. package/docs/content/locales/hi-IN/toolkit-editors-canvases.mdx +17 -0
  250. package/docs/content/locales/ja-JP/agent-native-toolkit.mdx +69 -62
  251. package/docs/content/locales/ja-JP/toolkit-capability-packages.mdx +21 -0
  252. package/docs/content/locales/ja-JP/toolkit-context-knowledge.mdx +12 -0
  253. package/docs/content/locales/ja-JP/toolkit-editors-canvases.mdx +17 -0
  254. package/docs/content/locales/ko-KR/agent-native-toolkit.mdx +69 -62
  255. package/docs/content/locales/ko-KR/toolkit-capability-packages.mdx +21 -0
  256. package/docs/content/locales/ko-KR/toolkit-context-knowledge.mdx +12 -0
  257. package/docs/content/locales/ko-KR/toolkit-editors-canvases.mdx +17 -0
  258. package/docs/content/locales/pt-BR/agent-native-toolkit.mdx +82 -54
  259. package/docs/content/locales/pt-BR/toolkit-capability-packages.mdx +21 -0
  260. package/docs/content/locales/pt-BR/toolkit-context-knowledge.mdx +12 -0
  261. package/docs/content/locales/pt-BR/toolkit-editors-canvases.mdx +17 -0
  262. package/docs/content/locales/zh-CN/agent-native-toolkit.mdx +69 -62
  263. package/docs/content/locales/zh-CN/toolkit-capability-packages.mdx +21 -0
  264. package/docs/content/locales/zh-CN/toolkit-context-knowledge.mdx +12 -0
  265. package/docs/content/locales/zh-CN/toolkit-editors-canvases.mdx +17 -0
  266. package/docs/content/locales/zh-TW/agent-native-toolkit.mdx +69 -62
  267. package/docs/content/locales/zh-TW/toolkit-capability-packages.mdx +21 -0
  268. package/docs/content/locales/zh-TW/toolkit-context-knowledge.mdx +12 -0
  269. package/docs/content/locales/zh-TW/toolkit-editors-canvases.mdx +17 -0
  270. package/docs/content/toolkit-capability-packages.mdx +52 -0
  271. package/docs/content/toolkit-context-knowledge.mdx +46 -0
  272. package/docs/content/toolkit-editors-canvases.mdx +55 -0
  273. package/package.json +27 -26
  274. package/src/templates/workspace-core/.agents/skills/tracking/SKILL.md +19 -0
  275. package/corpus/core/src/client/rich-markdown-editor/BubbleToolbar.tsx +0 -253
  276. package/corpus/core/src/client/rich-markdown-editor/CodeBlockNode.tsx +0 -258
  277. package/corpus/core/src/client/rich-markdown-editor/DragHandle.ts +0 -1437
  278. package/corpus/core/src/client/rich-markdown-editor/ImageExtension.ts +0 -306
  279. package/corpus/core/src/client/rich-markdown-editor/RichMarkdownEditor.tsx +0 -80
  280. package/corpus/core/src/client/rich-markdown-editor/RunId.ts +0 -61
  281. package/corpus/core/src/client/rich-markdown-editor/SharedRichEditor.tsx +0 -321
  282. package/corpus/core/src/client/rich-markdown-editor/SlashCommandMenu.tsx +0 -310
  283. package/corpus/core/src/client/rich-markdown-editor/extensions.ts +0 -402
  284. package/corpus/core/src/client/rich-markdown-editor/gfmDoc.ts +0 -92
  285. package/corpus/core/src/client/rich-markdown-editor/surgical-apply.ts +0 -192
  286. package/corpus/core/src/client/rich-markdown-editor/useCollabReconcile.ts +0 -590
  287. package/dist/client/rich-markdown-editor/BubbleToolbar.d.ts +0 -37
  288. package/dist/client/rich-markdown-editor/BubbleToolbar.d.ts.map +0 -1
  289. package/dist/client/rich-markdown-editor/BubbleToolbar.js +0 -171
  290. package/dist/client/rich-markdown-editor/BubbleToolbar.js.map +0 -1
  291. package/dist/client/rich-markdown-editor/CodeBlockNode.d.ts +0 -49
  292. package/dist/client/rich-markdown-editor/CodeBlockNode.d.ts.map +0 -1
  293. package/dist/client/rich-markdown-editor/CodeBlockNode.js +0 -127
  294. package/dist/client/rich-markdown-editor/CodeBlockNode.js.map +0 -1
  295. package/dist/client/rich-markdown-editor/DragHandle.d.ts +0 -97
  296. package/dist/client/rich-markdown-editor/DragHandle.d.ts.map +0 -1
  297. package/dist/client/rich-markdown-editor/DragHandle.js +0 -1066
  298. package/dist/client/rich-markdown-editor/DragHandle.js.map +0 -1
  299. package/dist/client/rich-markdown-editor/ImageExtension.d.ts +0 -63
  300. package/dist/client/rich-markdown-editor/ImageExtension.d.ts.map +0 -1
  301. package/dist/client/rich-markdown-editor/ImageExtension.js +0 -243
  302. package/dist/client/rich-markdown-editor/ImageExtension.js.map +0 -1
  303. package/dist/client/rich-markdown-editor/RichMarkdownEditor.d.ts +0 -51
  304. package/dist/client/rich-markdown-editor/RichMarkdownEditor.d.ts.map +0 -1
  305. package/dist/client/rich-markdown-editor/RichMarkdownEditor.js +0 -37
  306. package/dist/client/rich-markdown-editor/RichMarkdownEditor.js.map +0 -1
  307. package/dist/client/rich-markdown-editor/RunId.d.ts +0 -28
  308. package/dist/client/rich-markdown-editor/RunId.d.ts.map +0 -1
  309. package/dist/client/rich-markdown-editor/RunId.js +0 -60
  310. package/dist/client/rich-markdown-editor/RunId.js.map +0 -1
  311. package/dist/client/rich-markdown-editor/SharedRichEditor.d.ts +0 -110
  312. package/dist/client/rich-markdown-editor/SharedRichEditor.d.ts.map +0 -1
  313. package/dist/client/rich-markdown-editor/SharedRichEditor.js +0 -144
  314. package/dist/client/rich-markdown-editor/SharedRichEditor.js.map +0 -1
  315. package/dist/client/rich-markdown-editor/SlashCommandMenu.d.ts +0 -41
  316. package/dist/client/rich-markdown-editor/SlashCommandMenu.d.ts.map +0 -1
  317. package/dist/client/rich-markdown-editor/SlashCommandMenu.js +0 -221
  318. package/dist/client/rich-markdown-editor/SlashCommandMenu.js.map +0 -1
  319. package/dist/client/rich-markdown-editor/extensions.d.ts +0 -178
  320. package/dist/client/rich-markdown-editor/extensions.d.ts.map +0 -1
  321. package/dist/client/rich-markdown-editor/extensions.js +0 -224
  322. package/dist/client/rich-markdown-editor/extensions.js.map +0 -1
  323. package/dist/client/rich-markdown-editor/gfmDoc.d.ts +0 -24
  324. package/dist/client/rich-markdown-editor/gfmDoc.d.ts.map +0 -1
  325. package/dist/client/rich-markdown-editor/gfmDoc.js +0 -83
  326. package/dist/client/rich-markdown-editor/gfmDoc.js.map +0 -1
  327. package/dist/client/rich-markdown-editor/surgical-apply.d.ts +0 -66
  328. package/dist/client/rich-markdown-editor/surgical-apply.d.ts.map +0 -1
  329. package/dist/client/rich-markdown-editor/surgical-apply.js +0 -147
  330. package/dist/client/rich-markdown-editor/surgical-apply.js.map +0 -1
  331. package/dist/client/rich-markdown-editor/useCollabReconcile.d.ts +0 -110
  332. package/dist/client/rich-markdown-editor/useCollabReconcile.d.ts.map +0 -1
  333. package/dist/client/rich-markdown-editor/useCollabReconcile.js +0 -441
  334. 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
- type TopLevelDiff,
23
- } from "./surgical-apply.js";
24
- export {
25
- SlashCommandMenu,
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
- type ImageUploadFn,
36
- type SharedImageOptions,
37
- } from "./ImageExtension.js";
38
- export { uploadEditorImage } from "./uploadEditorImage.js";
39
- export {
40
- BubbleToolbar,
41
- buildDefaultBubbleItems,
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
- } from "./RichMarkdownEditor.js";
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
- } from "./DragHandle.js";
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,
@@ -1,5 +1,6 @@
1
+ import type { ImageUploadFn } from "@agent-native/toolkit/editor";
2
+
1
3
  import { callAction } from "../use-action.js";
2
- import type { ImageUploadFn } from "./ImageExtension.js";
3
4
 
4
5
  /**
5
6
  * Read a {@link File} as a base64 data URL (`data:image/...;base64,...`).
@@ -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 actionFetch<T>(
259
+ async function performActionFetch<T>(
255
260
  name: string,
256
261
  method: string,
257
262
  params?: Record<string, any>,
258
- options?: ActionFetchOptions,
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 { useState, useEffect, useRef } from "react";
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 [session, setSession] = useState<AuthSession | null>(null);
25
- const [isLoading, setIsLoading] = useState(true);
26
- const trackedRef = useRef(false);
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 function fetchSession() {
32
- let signedIn = false;
33
- let resolved: AuthSession | null = null;
34
- try {
35
- const res = await fetch(agentNativePath("/_agent-native/auth/session"));
36
- if (!res.ok) {
37
- setSession(null);
38
- return;
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
- fetchSession();
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