@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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-native/core",
3
- "version": "0.109.2",
3
+ "version": "0.109.4",
4
4
  "description": "Framework for agent-native application development — where AI agents and UI share SQL state, actions, and context",
5
5
  "homepage": "https://github.com/BuilderIO/agent-native#readme",
6
6
  "bugs": {
@@ -31,6 +31,7 @@
31
31
  "type": "module",
32
32
  "sideEffects": [
33
33
  "*.css",
34
+ "dist/client/index.js",
34
35
  "dist/client/chat/widgets/builtin-tool-renderers.js",
35
36
  "dist/client/dev-overlay/builtins.js"
36
37
  ],
@@ -280,12 +281,12 @@
280
281
  "@mozilla/readability": "0.6.0",
281
282
  "@neondatabase/serverless": "^1.1.0",
282
283
  "@opentelemetry/sdk-trace-base": "^2.8.0",
283
- "@radix-ui/react-dialog": "1.1.15",
284
- "@radix-ui/react-dropdown-menu": "^2.1.16",
285
- "@radix-ui/react-hover-card": "^1.1.15",
286
- "@radix-ui/react-popover": "^1.1.15",
287
- "@radix-ui/react-select": "^2.2.6",
288
- "@radix-ui/react-tooltip": "^1.2.8",
284
+ "@radix-ui/react-dialog": "catalog:",
285
+ "@radix-ui/react-dropdown-menu": "catalog:",
286
+ "@radix-ui/react-hover-card": "catalog:",
287
+ "@radix-ui/react-popover": "catalog:",
288
+ "@radix-ui/react-select": "catalog:",
289
+ "@radix-ui/react-tooltip": "catalog:",
289
290
  "@react-router/dev": "^8.1.0",
290
291
  "@react-router/fs-routes": "^8.1.0",
291
292
  "@resvg/resvg-js": "^2.6.2",
@@ -295,63 +296,63 @@
295
296
  "@shadcn/react": "^0.2.0",
296
297
  "@standard-schema/spec": "^1.1.0",
297
298
  "@tanstack/react-table": "^8.21.3",
298
- "@tiptap/core": "3.27.1",
299
- "@tiptap/extension-code-block-lowlight": "3.27.1",
300
- "@tiptap/extension-collaboration": "3.27.1",
301
- "@tiptap/extension-collaboration-caret": "3.27.1",
302
- "@tiptap/extension-image": "3.27.1",
303
- "@tiptap/extension-link": "3.27.1",
304
- "@tiptap/extension-placeholder": "3.27.1",
305
- "@tiptap/extension-table": "3.27.1",
306
- "@tiptap/extension-table-cell": "3.27.1",
307
- "@tiptap/extension-table-header": "3.27.1",
308
- "@tiptap/extension-table-row": "3.27.1",
309
- "@tiptap/extension-task-item": "3.27.1",
310
- "@tiptap/extension-task-list": "3.27.1",
311
- "@tiptap/pm": "3.27.1",
312
- "@tiptap/react": "3.27.1",
313
- "@tiptap/starter-kit": "3.27.1",
314
- "@tiptap/y-tiptap": "^3.0.5",
299
+ "@tiptap/core": "catalog:",
300
+ "@tiptap/extension-code-block-lowlight": "catalog:",
301
+ "@tiptap/extension-collaboration": "catalog:",
302
+ "@tiptap/extension-collaboration-caret": "catalog:",
303
+ "@tiptap/extension-image": "catalog:",
304
+ "@tiptap/extension-link": "catalog:",
305
+ "@tiptap/extension-placeholder": "catalog:",
306
+ "@tiptap/extension-table": "catalog:",
307
+ "@tiptap/extension-table-cell": "catalog:",
308
+ "@tiptap/extension-table-header": "catalog:",
309
+ "@tiptap/extension-table-row": "catalog:",
310
+ "@tiptap/extension-task-item": "catalog:",
311
+ "@tiptap/extension-task-list": "catalog:",
312
+ "@tiptap/pm": "catalog:",
313
+ "@tiptap/react": "catalog:",
314
+ "@tiptap/starter-kit": "catalog:",
315
+ "@tiptap/y-tiptap": "catalog:",
315
316
  "@uiw/react-codemirror": "^4.25.10",
316
317
  "ajv": "^8.20.0",
317
318
  "better-auth": "1.6.16",
318
319
  "better-sqlite3": "^12.8.0",
319
320
  "botframework-connector": "^4.23.3",
320
- "clsx": "^2.1.1",
321
+ "clsx": "catalog:",
321
322
  "cron-parser": "^5.5.0",
322
323
  "diff-match-patch": "^1.0.5",
323
324
  "dotenv": "^17.2.1",
324
325
  "drizzle-orm": "^0.45.2",
325
326
  "h3": "^2.0.1-rc.20",
326
- "highlight.js": "^11.11.1",
327
+ "highlight.js": "catalog:",
327
328
  "i18next": "26.3.1",
328
329
  "isbot": "^5",
329
330
  "jiti": "^2.6.1",
330
331
  "jose": "^6.2.2",
331
332
  "linkedom": "0.18.12",
332
- "lowlight": "^3.3.0",
333
+ "lowlight": "catalog:",
333
334
  "minimatch": "^10.0.0",
334
335
  "nanoid": "^5.1.9",
335
- "next-themes": "^0.4.6",
336
+ "next-themes": "catalog:",
336
337
  "nf3": "0.3.17",
337
338
  "nitro": "3.0.260415-beta",
338
339
  "p-limit": "^7.3.0",
339
340
  "prettier": "^3.8.3",
340
341
  "react-i18next": "17.0.8",
341
342
  "react-markdown": "^10.1.0",
342
- "recharts": "^3.8.1",
343
+ "recharts": "catalog:",
343
344
  "remark-gfm": "^4.0.1",
344
345
  "roughjs": "4.6.6",
345
346
  "safe-regex2": "5.1.1",
346
347
  "shiki": "^4.0.2",
347
- "sonner": "^2.0.7",
348
- "tailwind-merge": "^3.5.0",
349
- "tiptap-markdown": "^0.9.0",
348
+ "sonner": "catalog:",
349
+ "tailwind-merge": "catalog:",
350
+ "tiptap-markdown": "catalog:",
350
351
  "turndown": "7.2.4",
351
352
  "tw-animate-css": "1.4.0",
352
353
  "tweetnacl": "^1.0.3",
353
- "y-protocols": "^1.0.7",
354
- "yjs": "^13.6.31",
354
+ "y-protocols": "catalog:",
355
+ "yjs": "catalog:",
355
356
  "zod": "^4.3.6"
356
357
  },
357
358
  "devDependencies": {
@@ -1,5 +1,6 @@
1
1
  import { execFile, execFileSync } from "child_process";
2
2
  import fs from "fs";
3
+ import os from "os";
3
4
  import path from "path";
4
5
  import { fileURLToPath, pathToFileURL } from "url";
5
6
 
@@ -44,6 +45,7 @@ const FIRST_PARTY_TARBALL_SYMLINK_EXCLUDES = [
44
45
  "*/CLAUDE.md",
45
46
  "*/.claude/skills",
46
47
  ];
48
+ const localPackageTarballs = new Map<string, string>();
47
49
 
48
50
  /**
49
51
  * Tagged error for input that fails CLI-level validation (repo names, app
@@ -200,31 +202,36 @@ export async function createApp(
200
202
  async function promptStartShape(
201
203
  clack: typeof import("@clack/prompts"),
202
204
  ): Promise<"template" | "chat" | "headless"> {
203
- const choice = await clack.select({
205
+ const choice = await clack.select(startShapePromptOptions());
206
+ if (clack.isCancel(choice)) {
207
+ clack.cancel("Cancelled.");
208
+ process.exit(0);
209
+ }
210
+ return choice as "template" | "chat" | "headless";
211
+ }
212
+
213
+ function startShapePromptOptions() {
214
+ return {
204
215
  message: "How do you want to start?",
216
+ initialValue: "chat",
205
217
  options: [
206
- {
207
- value: "template",
208
- label: "Full template(s)",
209
- hint: "Clone complete apps (Mail, Calendar, Slides, ...) into a workspace",
210
- },
211
218
  {
212
219
  value: "chat",
213
220
  label: "Chat",
214
221
  hint: "A single app with a minimal chat UI and the browser shell wired up",
215
222
  },
223
+ {
224
+ value: "template",
225
+ label: "Full template(s)",
226
+ hint: "Clone complete apps (Mail, Calendar, Slides, ...) into a workspace",
227
+ },
216
228
  {
217
229
  value: "headless",
218
230
  label: "Headless",
219
231
  hint: "A single action-first app with one primitive and no UI shell",
220
232
  },
221
233
  ],
222
- });
223
- if (clack.isCancel(choice)) {
224
- clack.cancel("Cancelled.");
225
- process.exit(0);
226
- }
227
- return choice as "template" | "chat" | "headless";
234
+ };
228
235
  }
229
236
 
230
237
  /**
@@ -898,6 +905,40 @@ function findLocalPackage(name: string): string | undefined {
898
905
  return undefined;
899
906
  }
900
907
 
908
+ /**
909
+ * Pack a local framework package before linking it into a generated app.
910
+ * Raw file: dependencies retain workspace-only catalog references, while a
911
+ * packed artifact has the publish-ready manifest that consumers receive.
912
+ */
913
+ function localPackageTarball(packageDir: string): string {
914
+ const cached = localPackageTarballs.get(packageDir);
915
+ if (cached) return cached;
916
+
917
+ const packDir = fs.mkdtempSync(
918
+ path.join(os.tmpdir(), "agent-native-local-package-"),
919
+ );
920
+ const pnpm = process.platform === "win32" ? "pnpm.cmd" : "pnpm";
921
+ execFileSync(pnpm, ["pack", "--pack-destination", packDir], {
922
+ cwd: packageDir,
923
+ encoding: "utf-8",
924
+ env: { ...process.env, npm_config_ignore_scripts: "true" },
925
+ stdio: "pipe",
926
+ });
927
+
928
+ const tarballs = fs
929
+ .readdirSync(packDir)
930
+ .filter((entry) => entry.endsWith(".tgz"));
931
+ if (tarballs.length !== 1) {
932
+ throw new Error(
933
+ `Expected one packed local package artifact in ${packDir}, found ${tarballs.length}.`,
934
+ );
935
+ }
936
+
937
+ const tarball = pathToFileURL(path.join(packDir, tarballs[0]!)).href;
938
+ localPackageTarballs.set(packageDir, tarball);
939
+ return tarball;
940
+ }
941
+
901
942
  /**
902
943
  * Scaffold internal workspace packages required by the selected templates.
903
944
  * Deduplicates so each package is only copied once even if multiple
@@ -1348,6 +1389,7 @@ export {
1348
1389
  githubTarballUrl as _githubTarballUrl,
1349
1390
  findLocalTemplateFrom as _findLocalTemplateFrom,
1350
1391
  workspaceAppNameForTemplateSelection as _workspaceAppNameForTemplateSelection,
1392
+ startShapePromptOptions as _startShapePromptOptions,
1351
1393
  shouldSkipScaffoldEntry as _shouldSkipScaffoldEntry,
1352
1394
  tarExtractArgs as _tarExtractArgs,
1353
1395
  };
@@ -1685,7 +1727,7 @@ function fixWebManifestName(
1685
1727
  function getCoreDependencyVersion(): string {
1686
1728
  if (process.env.AGENT_NATIVE_CREATE_USE_LOCAL_CORE === "1") {
1687
1729
  const localCore = findLocalPackage("core");
1688
- if (localCore) return pathToFileURL(localCore).href;
1730
+ if (localCore) return localPackageTarball(localCore);
1689
1731
  }
1690
1732
 
1691
1733
  // Generated apps must install before the current package version is
@@ -1707,7 +1749,7 @@ function getDispatchDependencyVersion(): string {
1707
1749
  function getToolkitDependencyVersion(): string {
1708
1750
  if (process.env.AGENT_NATIVE_CREATE_USE_LOCAL_CORE === "1") {
1709
1751
  const localToolkit = findLocalPackage("toolkit");
1710
- if (localToolkit) return pathToFileURL(localToolkit).href;
1752
+ if (localToolkit) return localPackageTarball(localToolkit);
1711
1753
  }
1712
1754
 
1713
1755
  return "latest";
@@ -1716,7 +1758,7 @@ function getToolkitDependencyVersion(): string {
1716
1758
  function localToolkitOverride(): string | null {
1717
1759
  if (process.env.AGENT_NATIVE_CREATE_USE_LOCAL_CORE !== "1") return null;
1718
1760
  const localToolkit = findLocalPackage("toolkit");
1719
- return localToolkit ? pathToFileURL(localToolkit).href : null;
1761
+ return localToolkit ? localPackageTarball(localToolkit) : null;
1720
1762
  }
1721
1763
 
1722
1764
  function localRecapCliOverride(): string | null {
@@ -139,6 +139,8 @@ function flagValue(args: string[], name: string): string | undefined {
139
139
 
140
140
  export function packageLifecycleUsage(): string {
141
141
  return [
142
+ "Install-on-demand Toolkit capability module lifecycle:",
143
+ "",
142
144
  "Usage:",
143
145
  " agent-native package inspect <package> [--root <dir>] [--app <name>] [--json]",
144
146
  " agent-native package add <package> [--root <dir>] [--app <name>] [--apply] [--json]",
@@ -290,6 +290,8 @@ folding framework chrome into the product UI.
290
290
  needs to operate the behavior. Keep the static wireframes in
291
291
  \`content.canvas\`, add the aligned functional prototype in
292
292
  \`content.prototype\`, and rely on the top visual tabs to switch between them.
293
+ When both surfaces are present, open the Wireframes tab by default; the
294
+ prototype remains available as the interactive follow-up view.
293
295
  - **Prototype-first** when the user asks to operate the UI or when interaction is
294
296
  the main question. Use \`create-prototype-plan\`, which still preserves static
295
297
  mocks where useful.
@@ -1,3 +1,4 @@
1
+ import { ContextMeterView } from "@agent-native/toolkit/context-ui";
1
2
  import { lazy, Suspense, useEffect, useRef, useState } from "react";
2
3
 
3
4
  import type {
@@ -8,20 +9,8 @@ import {
8
9
  manifestConversationTokens,
9
10
  manifestSystemTokens,
10
11
  } from "../../shared/context-xray.js";
11
- import {
12
- Popover,
13
- PopoverContent,
14
- PopoverTrigger,
15
- } from "../components/ui/popover.js";
16
- import {
17
- Tooltip,
18
- TooltipContent,
19
- TooltipProvider,
20
- TooltipTrigger,
21
- } from "../components/ui/tooltip.js";
22
12
  import { useActionMutation, useActionQuery } from "../use-action.js";
23
- import { cn } from "../utils.js";
24
- import { formatTokens, resolveContextWindow } from "./format.js";
13
+ import { resolveContextWindow } from "./format.js";
25
14
 
26
15
  const ContextXRayPanel = lazy(() =>
27
16
  import("./ContextXRayPanel.js").then((m) => ({
@@ -29,40 +18,6 @@ const ContextXRayPanel = lazy(() =>
29
18
  })),
30
19
  );
31
20
 
32
- function ContextDonut({ pct, advisory }: { pct: number; advisory: boolean }) {
33
- const radius = 7.5;
34
- const circumference = 2 * Math.PI * radius;
35
- const displayPct = Math.max(3, Math.min(100, pct));
36
- const dashOffset = circumference - (displayPct / 100) * circumference;
37
-
38
- return (
39
- <span className="relative flex size-5 items-center justify-center">
40
- <svg aria-hidden="true" viewBox="0 0 20 20" className="-rotate-90 size-5">
41
- <circle
42
- cx="10"
43
- cy="10"
44
- r={radius}
45
- className="stroke-muted"
46
- fill="none"
47
- strokeWidth="3"
48
- />
49
- <circle
50
- cx="10"
51
- cy="10"
52
- r={radius}
53
- className={cn(advisory ? "stroke-amber-500" : "stroke-[#00B5FF]")}
54
- fill="none"
55
- strokeLinecap="round"
56
- strokeWidth="3"
57
- strokeDasharray={circumference}
58
- strokeDashoffset={dashOffset}
59
- />
60
- </svg>
61
- <span className="absolute size-2 rounded-full bg-background" />
62
- </span>
63
- );
64
- }
65
-
66
21
  export function ContextMeter({
67
22
  threadId,
68
23
  manifest: providedManifest,
@@ -106,15 +61,6 @@ export function ContextMeter({
106
61
  }, [enabled, threadId]);
107
62
 
108
63
  const manifest = providedManifest ?? query.data;
109
- const contextWindow = resolveContextWindow(manifest?.model);
110
- const pct = manifest
111
- ? Math.min(100, Math.round((manifest.totalTokens / contextWindow) * 100))
112
- : 0;
113
- const systemTokens = manifest ? manifestSystemTokens(manifest) : 0;
114
- const conversationTokens = manifest
115
- ? manifestConversationTokens(manifest)
116
- : 0;
117
-
118
64
  if (
119
65
  (!shouldQuery && !providedManifest) ||
120
66
  !manifest ||
@@ -144,61 +90,35 @@ export function ContextMeter({
144
90
  };
145
91
 
146
92
  return (
147
- <TooltipProvider delayDuration={200}>
148
- <Popover open={open} onOpenChange={setOpen}>
149
- <Tooltip>
150
- <TooltipTrigger asChild>
151
- <PopoverTrigger asChild>
152
- <button
153
- type="button"
154
- aria-label={`Context ${pct}%, ${formatTokens(
155
- manifest.totalTokens,
156
- )}${systemTokens > 0 ? ` total: ${formatTokens(systemTokens)} system + ${formatTokens(conversationTokens)} conversation` : ""}. Open Context X-Ray.`}
157
- className={cn(
158
- "flex size-7 shrink-0 cursor-pointer items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent/50 hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",
159
- open && "bg-accent/60 text-foreground",
160
- )}
161
- >
162
- <ContextDonut pct={pct} advisory={!manifest.enforceable} />
163
- </button>
164
- </PopoverTrigger>
165
- </TooltipTrigger>
166
- <TooltipContent>
167
- Context {pct}% · {formatTokens(manifest.totalTokens)}
168
- {systemTokens > 0
169
- ? ` (${formatTokens(systemTokens)} system + ${formatTokens(conversationTokens)} conversation)`
170
- : ""}
171
- </TooltipContent>
172
- </Tooltip>
173
- <PopoverContent
174
- align="end"
175
- side="top"
176
- sideOffset={8}
177
- className="w-[min(92vw,380px)] overflow-hidden border-border/70 p-0"
93
+ <ContextMeterView
94
+ manifest={{
95
+ ...manifest,
96
+ systemTokens: manifestSystemTokens(manifest),
97
+ conversationTokens: manifestConversationTokens(manifest),
98
+ }}
99
+ contextWindow={resolveContextWindow(manifest.model)}
100
+ open={open}
101
+ onOpenChange={setOpen}
102
+ >
103
+ {open ? (
104
+ <Suspense
105
+ fallback={
106
+ <div className="flex h-52 items-center justify-center text-xs text-muted-foreground">
107
+ Loading context view…
108
+ </div>
109
+ }
178
110
  >
179
- {open ? (
180
- <Suspense
181
- fallback={
182
- <div className="flex h-52 items-center justify-center text-xs text-muted-foreground">
183
- Loading context view…
184
- </div>
185
- }
186
- >
187
- <ContextXRayPanel
188
- manifest={manifest}
189
- optimistic={optimistic}
190
- onPin={(segmentId) => mutateStatus(segmentId, "pinned", "pin")}
191
- onEvict={(segmentId) =>
192
- mutateStatus(segmentId, "evicted", "evict")
193
- }
194
- onRestore={(segmentId) =>
195
- mutateStatus(segmentId, "active", "restore")
196
- }
197
- />
198
- </Suspense>
199
- ) : null}
200
- </PopoverContent>
201
- </Popover>
202
- </TooltipProvider>
111
+ <ContextXRayPanel
112
+ manifest={manifest}
113
+ optimistic={optimistic}
114
+ onPin={(segmentId) => mutateStatus(segmentId, "pinned", "pin")}
115
+ onEvict={(segmentId) => mutateStatus(segmentId, "evicted", "evict")}
116
+ onRestore={(segmentId) =>
117
+ mutateStatus(segmentId, "active", "restore")
118
+ }
119
+ />
120
+ </Suspense>
121
+ ) : null}
122
+ </ContextMeterView>
203
123
  );
204
124
  }
@@ -1,14 +1,6 @@
1
- import { IconLock, IconPin, IconRotate2, IconX } from "@tabler/icons-react";
1
+ import { ContextSegmentRowView } from "@agent-native/toolkit/context-ui";
2
2
 
3
3
  import type { ContextManifestSegment } from "../../shared/context-xray.js";
4
- import {
5
- Tooltip,
6
- TooltipContent,
7
- TooltipTrigger,
8
- } from "../components/ui/tooltip.js";
9
- import { cn } from "../utils.js";
10
- import { formatTokens, statusLabel } from "./format.js";
11
- import { SegmentProvenancePopover } from "./SegmentProvenancePopover.js";
12
4
 
13
5
  export function ContextSegmentRow({
14
6
  segment,
@@ -23,108 +15,13 @@ export function ContextSegmentRow({
23
15
  onEvict: () => void;
24
16
  onRestore: () => void;
25
17
  }) {
26
- const disabled = segment.protected || segment.status === "evicted";
27
18
  return (
28
- <div
29
- tabIndex={0}
30
- onKeyDown={(event) => {
31
- if (event.key === "p") onPin();
32
- if (event.key === "e" && !disabled) onEvict();
33
- if (event.key === "u" && segment.status !== "active") onRestore();
34
- }}
35
- className={cn(
36
- "group flex min-h-11 items-center gap-2 rounded-sm px-2 py-1.5 outline-none transition-colors hover:bg-accent/35 focus-visible:bg-accent/35 focus-visible:ring-1 focus-visible:ring-ring",
37
- segment.status === "evicted" && "opacity-60",
38
- )}
39
- >
40
- <SegmentProvenancePopover segment={segment}>
41
- <button
42
- type="button"
43
- className="min-w-0 flex-1 text-left"
44
- aria-label={`Inspect ${segment.label}`}
45
- >
46
- <div
47
- className={cn(
48
- "truncate text-[13px] font-medium leading-5 text-foreground",
49
- segment.status === "evicted" && "line-through",
50
- )}
51
- >
52
- {segment.label}
53
- </div>
54
- <div className="flex items-center gap-1.5 text-[11px] text-muted-foreground">
55
- <span>{formatTokens(segment.tokenCount)}</span>
56
- {segment.tokenMethod === "estimate" && <span>~</span>}
57
- <span>·</span>
58
- <span>{statusLabel(segment)}</span>
59
- {advisory && <span>· advisory</span>}
60
- </div>
61
- </button>
62
- </SegmentProvenancePopover>
63
- <div className="flex shrink-0 items-center gap-1 opacity-100 sm:opacity-0 sm:group-hover:opacity-100 sm:group-focus-within:opacity-100">
64
- {segment.protected ? (
65
- <Tooltip>
66
- <TooltipTrigger asChild>
67
- <span className="flex size-6 items-center justify-center rounded-md text-muted-foreground">
68
- <IconLock className="h-3.5 w-3.5" />
69
- </span>
70
- </TooltipTrigger>
71
- <TooltipContent>Protected during active turn</TooltipContent>
72
- </Tooltip>
73
- ) : segment.status === "evicted" ||
74
- segment.status === "summarized" ||
75
- segment.status === "pinned" ? (
76
- <Tooltip>
77
- <TooltipTrigger asChild>
78
- <button
79
- type="button"
80
- onClick={onRestore}
81
- className="flex size-6 items-center justify-center rounded-md text-muted-foreground hover:bg-background hover:text-foreground"
82
- aria-label={
83
- segment.status === "pinned"
84
- ? "Unpin segment"
85
- : "Restore segment"
86
- }
87
- >
88
- <IconRotate2 className="h-3.5 w-3.5" />
89
- </button>
90
- </TooltipTrigger>
91
- <TooltipContent>
92
- {segment.status === "pinned" ? "Unpin" : "Restore"}
93
- </TooltipContent>
94
- </Tooltip>
95
- ) : (
96
- <>
97
- <Tooltip>
98
- <TooltipTrigger asChild>
99
- <button
100
- type="button"
101
- onClick={onPin}
102
- className="flex size-6 items-center justify-center rounded-md text-muted-foreground hover:bg-background hover:text-foreground"
103
- aria-label="Pin segment"
104
- >
105
- <IconPin className="h-3.5 w-3.5" />
106
- </button>
107
- </TooltipTrigger>
108
- <TooltipContent>Pin</TooltipContent>
109
- </Tooltip>
110
- <Tooltip>
111
- <TooltipTrigger asChild>
112
- <button
113
- type="button"
114
- onClick={onEvict}
115
- className="flex size-6 items-center justify-center rounded-md text-muted-foreground hover:bg-background hover:text-destructive"
116
- aria-label="Evict segment"
117
- >
118
- <IconX className="h-3.5 w-3.5" />
119
- </button>
120
- </TooltipTrigger>
121
- <TooltipContent>
122
- {advisory ? "Record eviction intent" : "Evict"}
123
- </TooltipContent>
124
- </Tooltip>
125
- </>
126
- )}
127
- </div>
128
- </div>
19
+ <ContextSegmentRowView
20
+ segment={segment}
21
+ advisory={advisory}
22
+ onPin={onPin}
23
+ onEvict={onEvict}
24
+ onRestore={onRestore}
25
+ />
129
26
  );
130
27
  }