@agent-native/core 0.15.13 → 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (411) hide show
  1. package/README.md +37 -0
  2. package/dist/agent/app-model-defaults.d.ts +37 -0
  3. package/dist/agent/app-model-defaults.d.ts.map +1 -0
  4. package/dist/agent/app-model-defaults.js +136 -0
  5. package/dist/agent/app-model-defaults.js.map +1 -0
  6. package/dist/agent/engine/registry.d.ts +12 -7
  7. package/dist/agent/engine/registry.d.ts.map +1 -1
  8. package/dist/agent/engine/registry.js +28 -8
  9. package/dist/agent/engine/registry.js.map +1 -1
  10. package/dist/agent/production-agent.d.ts +2 -0
  11. package/dist/agent/production-agent.d.ts.map +1 -1
  12. package/dist/agent/production-agent.js +3 -1
  13. package/dist/agent/production-agent.js.map +1 -1
  14. package/dist/browser-sessions/actions.d.ts +7 -0
  15. package/dist/browser-sessions/actions.d.ts.map +1 -0
  16. package/dist/browser-sessions/actions.js +223 -0
  17. package/dist/browser-sessions/actions.js.map +1 -0
  18. package/dist/browser-sessions/routes.d.ts +7 -0
  19. package/dist/browser-sessions/routes.d.ts.map +1 -0
  20. package/dist/browser-sessions/routes.js +159 -0
  21. package/dist/browser-sessions/routes.js.map +1 -0
  22. package/dist/browser-sessions/store.d.ts +33 -0
  23. package/dist/browser-sessions/store.d.ts.map +1 -0
  24. package/dist/browser-sessions/store.js +506 -0
  25. package/dist/browser-sessions/store.js.map +1 -0
  26. package/dist/browser-sessions/types.d.ts +68 -0
  27. package/dist/browser-sessions/types.d.ts.map +1 -0
  28. package/dist/browser-sessions/types.js +2 -0
  29. package/dist/browser-sessions/types.js.map +1 -0
  30. package/dist/cli/code-agent-commands.d.ts +36 -0
  31. package/dist/cli/code-agent-commands.d.ts.map +1 -0
  32. package/dist/cli/code-agent-commands.js +192 -0
  33. package/dist/cli/code-agent-commands.js.map +1 -0
  34. package/dist/cli/code-agent-connector.d.ts +17 -0
  35. package/dist/cli/code-agent-connector.d.ts.map +1 -0
  36. package/dist/cli/code-agent-connector.js +724 -0
  37. package/dist/cli/code-agent-connector.js.map +1 -0
  38. package/dist/cli/code-agent-executor.d.ts +31 -0
  39. package/dist/cli/code-agent-executor.d.ts.map +1 -0
  40. package/dist/cli/code-agent-executor.js +921 -0
  41. package/dist/cli/code-agent-executor.js.map +1 -0
  42. package/dist/cli/code-agent-runs.d.ts +102 -0
  43. package/dist/cli/code-agent-runs.d.ts.map +1 -0
  44. package/dist/cli/code-agent-runs.js +277 -0
  45. package/dist/cli/code-agent-runs.js.map +1 -0
  46. package/dist/cli/code.d.ts +66 -0
  47. package/dist/cli/code.d.ts.map +1 -0
  48. package/dist/cli/code.js +1306 -0
  49. package/dist/cli/code.js.map +1 -0
  50. package/dist/cli/create.d.ts +2 -1
  51. package/dist/cli/create.d.ts.map +1 -1
  52. package/dist/cli/create.js +11 -1
  53. package/dist/cli/create.js.map +1 -1
  54. package/dist/cli/index.js +26 -1
  55. package/dist/cli/index.js.map +1 -1
  56. package/dist/cli/migrate.d.ts +27 -0
  57. package/dist/cli/migrate.d.ts.map +1 -1
  58. package/dist/cli/migrate.js +1328 -20
  59. package/dist/cli/migrate.js.map +1 -1
  60. package/dist/cli/templates-meta.d.ts.map +1 -1
  61. package/dist/cli/templates-meta.js +26 -2
  62. package/dist/cli/templates-meta.js.map +1 -1
  63. package/dist/cli/workspacify.d.ts +2 -0
  64. package/dist/cli/workspacify.d.ts.map +1 -1
  65. package/dist/cli/workspacify.js +2 -1
  66. package/dist/cli/workspacify.js.map +1 -1
  67. package/dist/client/AgentNative.d.ts +32 -0
  68. package/dist/client/AgentNative.d.ts.map +1 -0
  69. package/dist/client/AgentNative.js +79 -0
  70. package/dist/client/AgentNative.js.map +1 -0
  71. package/dist/client/AgentNativeEmbedded.d.ts +47 -0
  72. package/dist/client/AgentNativeEmbedded.d.ts.map +1 -0
  73. package/dist/client/AgentNativeEmbedded.js +148 -0
  74. package/dist/client/AgentNativeEmbedded.js.map +1 -0
  75. package/dist/client/AgentNativeFrame.d.ts +25 -0
  76. package/dist/client/AgentNativeFrame.d.ts.map +1 -0
  77. package/dist/client/AgentNativeFrame.js +68 -0
  78. package/dist/client/AgentNativeFrame.js.map +1 -0
  79. package/dist/client/AgentPanel.d.ts +19 -2
  80. package/dist/client/AgentPanel.d.ts.map +1 -1
  81. package/dist/client/AgentPanel.js +15 -4
  82. package/dist/client/AgentPanel.js.map +1 -1
  83. package/dist/client/AssistantChat.d.ts +1 -1
  84. package/dist/client/AssistantChat.d.ts.map +1 -1
  85. package/dist/client/AssistantChat.js +79 -48
  86. package/dist/client/AssistantChat.js.map +1 -1
  87. package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
  88. package/dist/client/MultiTabAssistantChat.js +2 -1
  89. package/dist/client/MultiTabAssistantChat.js.map +1 -1
  90. package/dist/client/NewWorkspaceAppFlow.d.ts.map +1 -1
  91. package/dist/client/NewWorkspaceAppFlow.js +3 -2
  92. package/dist/client/NewWorkspaceAppFlow.js.map +1 -1
  93. package/dist/client/browser-session-bridge.d.ts +44 -0
  94. package/dist/client/browser-session-bridge.d.ts.map +1 -0
  95. package/dist/client/browser-session-bridge.js +339 -0
  96. package/dist/client/browser-session-bridge.js.map +1 -0
  97. package/dist/client/client-action.d.ts +7 -0
  98. package/dist/client/client-action.d.ts.map +1 -0
  99. package/dist/client/client-action.js +4 -0
  100. package/dist/client/client-action.js.map +1 -0
  101. package/dist/client/components/ui/tooltip.d.ts.map +1 -1
  102. package/dist/client/components/ui/tooltip.js +1 -1
  103. package/dist/client/components/ui/tooltip.js.map +1 -1
  104. package/dist/client/composer/AgentComposerFrame.d.ts +17 -0
  105. package/dist/client/composer/AgentComposerFrame.d.ts.map +1 -0
  106. package/dist/client/composer/AgentComposerFrame.js +14 -0
  107. package/dist/client/composer/AgentComposerFrame.js.map +1 -0
  108. package/dist/client/composer/MentionPopover.d.ts.map +1 -1
  109. package/dist/client/composer/MentionPopover.js +2 -2
  110. package/dist/client/composer/MentionPopover.js.map +1 -1
  111. package/dist/client/composer/PromptComposer.d.ts +35 -2
  112. package/dist/client/composer/PromptComposer.d.ts.map +1 -1
  113. package/dist/client/composer/PromptComposer.js +31 -17
  114. package/dist/client/composer/PromptComposer.js.map +1 -1
  115. package/dist/client/composer/TiptapComposer.d.ts +20 -2
  116. package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
  117. package/dist/client/composer/TiptapComposer.js +112 -22
  118. package/dist/client/composer/TiptapComposer.js.map +1 -1
  119. package/dist/client/composer/index.d.ts +3 -2
  120. package/dist/client/composer/index.d.ts.map +1 -1
  121. package/dist/client/composer/index.js +1 -0
  122. package/dist/client/composer/index.js.map +1 -1
  123. package/dist/client/composer/types.d.ts +1 -0
  124. package/dist/client/composer/types.d.ts.map +1 -1
  125. package/dist/client/composer/types.js.map +1 -1
  126. package/dist/client/extensions/AgentNativeExtensionFrame.d.ts +58 -0
  127. package/dist/client/extensions/AgentNativeExtensionFrame.d.ts.map +1 -0
  128. package/dist/client/extensions/AgentNativeExtensionFrame.e2e-host.d.ts +2 -0
  129. package/dist/client/extensions/AgentNativeExtensionFrame.e2e-host.d.ts.map +1 -0
  130. package/dist/client/extensions/AgentNativeExtensionFrame.e2e-host.js +110 -0
  131. package/dist/client/extensions/AgentNativeExtensionFrame.e2e-host.js.map +1 -0
  132. package/dist/client/extensions/AgentNativeExtensionFrame.js +354 -0
  133. package/dist/client/extensions/AgentNativeExtensionFrame.js.map +1 -0
  134. package/dist/client/extensions/AgentNativeExtensionFrame.spec.d.ts +2 -0
  135. package/dist/client/extensions/AgentNativeExtensionFrame.spec.d.ts.map +1 -0
  136. package/dist/client/extensions/AgentNativeExtensionFrame.spec.js +68 -0
  137. package/dist/client/extensions/AgentNativeExtensionFrame.spec.js.map +1 -0
  138. package/dist/client/extensions/agent-native-extension-runtime.d.ts +69 -0
  139. package/dist/client/extensions/agent-native-extension-runtime.d.ts.map +1 -0
  140. package/dist/client/extensions/agent-native-extension-runtime.js +348 -0
  141. package/dist/client/extensions/agent-native-extension-runtime.js.map +1 -0
  142. package/dist/client/extensions/index.d.ts +2 -0
  143. package/dist/client/extensions/index.d.ts.map +1 -1
  144. package/dist/client/extensions/index.js +2 -0
  145. package/dist/client/extensions/index.js.map +1 -1
  146. package/dist/client/extensions/portable-extension.d.ts +86 -0
  147. package/dist/client/extensions/portable-extension.d.ts.map +1 -0
  148. package/dist/client/extensions/portable-extension.js +480 -0
  149. package/dist/client/extensions/portable-extension.js.map +1 -0
  150. package/dist/client/host-bridge.d.ts +266 -0
  151. package/dist/client/host-bridge.d.ts.map +1 -0
  152. package/dist/client/host-bridge.js +745 -0
  153. package/dist/client/host-bridge.js.map +1 -0
  154. package/dist/client/host-tools.d.ts +40 -0
  155. package/dist/client/host-tools.d.ts.map +1 -0
  156. package/dist/client/host-tools.js +94 -0
  157. package/dist/client/host-tools.js.map +1 -0
  158. package/dist/client/index.d.ts +13 -2
  159. package/dist/client/index.d.ts.map +1 -1
  160. package/dist/client/index.js +11 -2
  161. package/dist/client/index.js.map +1 -1
  162. package/dist/client/resources/BuiltinCapabilityDetail.d.ts +10 -0
  163. package/dist/client/resources/BuiltinCapabilityDetail.d.ts.map +1 -0
  164. package/dist/client/resources/BuiltinCapabilityDetail.js +51 -0
  165. package/dist/client/resources/BuiltinCapabilityDetail.js.map +1 -0
  166. package/dist/client/resources/ResourceEditor.d.ts +3 -1
  167. package/dist/client/resources/ResourceEditor.d.ts.map +1 -1
  168. package/dist/client/resources/ResourceEditor.js +40 -17
  169. package/dist/client/resources/ResourceEditor.js.map +1 -1
  170. package/dist/client/resources/ResourceTree.d.ts.map +1 -1
  171. package/dist/client/resources/ResourceTree.js +23 -2
  172. package/dist/client/resources/ResourceTree.js.map +1 -1
  173. package/dist/client/resources/ResourcesPanel.d.ts.map +1 -1
  174. package/dist/client/resources/ResourcesPanel.js +77 -17
  175. package/dist/client/resources/ResourcesPanel.js.map +1 -1
  176. package/dist/client/resources/index.d.ts +1 -0
  177. package/dist/client/resources/index.d.ts.map +1 -1
  178. package/dist/client/resources/index.js +1 -0
  179. package/dist/client/resources/index.js.map +1 -1
  180. package/dist/client/resources/use-builtin-capabilities.d.ts +62 -0
  181. package/dist/client/resources/use-builtin-capabilities.d.ts.map +1 -0
  182. package/dist/client/resources/use-builtin-capabilities.js +54 -0
  183. package/dist/client/resources/use-builtin-capabilities.js.map +1 -0
  184. package/dist/client/resources/use-resources.d.ts +30 -2
  185. package/dist/client/resources/use-resources.d.ts.map +1 -1
  186. package/dist/client/resources/use-resources.js +42 -1
  187. package/dist/client/resources/use-resources.js.map +1 -1
  188. package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
  189. package/dist/client/settings/SettingsPanel.js +151 -2
  190. package/dist/client/settings/SettingsPanel.js.map +1 -1
  191. package/dist/client/use-chat-models.d.ts.map +1 -1
  192. package/dist/client/use-chat-models.js +20 -0
  193. package/dist/client/use-chat-models.js.map +1 -1
  194. package/dist/client/use-chat-threads.d.ts.map +1 -1
  195. package/dist/client/use-chat-threads.js +46 -2
  196. package/dist/client/use-chat-threads.js.map +1 -1
  197. package/dist/client/use-chat-threads.spec.js +77 -0
  198. package/dist/client/use-chat-threads.spec.js.map +1 -1
  199. package/dist/code-agents/index.d.ts +4 -0
  200. package/dist/code-agents/index.d.ts.map +1 -0
  201. package/dist/code-agents/index.js +4 -0
  202. package/dist/code-agents/index.js.map +1 -0
  203. package/dist/connections/catalog.d.ts +134 -0
  204. package/dist/connections/catalog.d.ts.map +1 -0
  205. package/dist/connections/catalog.js +180 -0
  206. package/dist/connections/catalog.js.map +1 -0
  207. package/dist/connections/index.d.ts +2 -0
  208. package/dist/connections/index.d.ts.map +1 -0
  209. package/dist/connections/index.js +2 -0
  210. package/dist/connections/index.js.map +1 -0
  211. package/dist/extensions/change-marker.d.ts +10 -0
  212. package/dist/extensions/change-marker.d.ts.map +1 -0
  213. package/dist/extensions/change-marker.js +42 -0
  214. package/dist/extensions/change-marker.js.map +1 -0
  215. package/dist/extensions/routes.d.ts.map +1 -1
  216. package/dist/extensions/routes.js +1 -7
  217. package/dist/extensions/routes.js.map +1 -1
  218. package/dist/extensions/schema.d.ts +1 -0
  219. package/dist/extensions/schema.d.ts.map +1 -1
  220. package/dist/extensions/schema.js +1 -0
  221. package/dist/extensions/schema.js.map +1 -1
  222. package/dist/extensions/slots/routes.js +1 -1
  223. package/dist/extensions/slots/routes.js.map +1 -1
  224. package/dist/extensions/store.d.ts +3 -0
  225. package/dist/extensions/store.d.ts.map +1 -1
  226. package/dist/extensions/store.js +112 -4
  227. package/dist/extensions/store.js.map +1 -1
  228. package/dist/index.d.ts +4 -1
  229. package/dist/index.d.ts.map +1 -1
  230. package/dist/index.js +6 -1
  231. package/dist/index.js.map +1 -1
  232. package/dist/integrations/adapters/telegram.d.ts.map +1 -1
  233. package/dist/integrations/adapters/telegram.js +1 -0
  234. package/dist/integrations/adapters/telegram.js.map +1 -1
  235. package/dist/integrations/index.d.ts +5 -1
  236. package/dist/integrations/index.d.ts.map +1 -1
  237. package/dist/integrations/index.js +4 -1
  238. package/dist/integrations/index.js.map +1 -1
  239. package/dist/integrations/plugin.d.ts +8 -0
  240. package/dist/integrations/plugin.d.ts.map +1 -1
  241. package/dist/integrations/plugin.js +760 -32
  242. package/dist/integrations/plugin.js.map +1 -1
  243. package/dist/integrations/remote-commands-store.d.ts +36 -0
  244. package/dist/integrations/remote-commands-store.d.ts.map +1 -0
  245. package/dist/integrations/remote-commands-store.js +273 -0
  246. package/dist/integrations/remote-commands-store.js.map +1 -0
  247. package/dist/integrations/remote-devices-store.d.ts +43 -0
  248. package/dist/integrations/remote-devices-store.d.ts.map +1 -0
  249. package/dist/integrations/remote-devices-store.js +315 -0
  250. package/dist/integrations/remote-devices-store.js.map +1 -0
  251. package/dist/integrations/remote-push-store.d.ts +37 -0
  252. package/dist/integrations/remote-push-store.d.ts.map +1 -0
  253. package/dist/integrations/remote-push-store.js +299 -0
  254. package/dist/integrations/remote-push-store.js.map +1 -0
  255. package/dist/integrations/remote-retry-job.d.ts +7 -0
  256. package/dist/integrations/remote-retry-job.d.ts.map +1 -0
  257. package/dist/integrations/remote-retry-job.js +45 -0
  258. package/dist/integrations/remote-retry-job.js.map +1 -0
  259. package/dist/integrations/remote-run-events-store.d.ts +18 -0
  260. package/dist/integrations/remote-run-events-store.d.ts.map +1 -0
  261. package/dist/integrations/remote-run-events-store.js +82 -0
  262. package/dist/integrations/remote-run-events-store.js.map +1 -0
  263. package/dist/integrations/remote-types.d.ts +101 -0
  264. package/dist/integrations/remote-types.d.ts.map +1 -0
  265. package/dist/integrations/remote-types.js +2 -0
  266. package/dist/integrations/remote-types.js.map +1 -0
  267. package/dist/integrations/webhook-handler.d.ts +2 -0
  268. package/dist/integrations/webhook-handler.d.ts.map +1 -1
  269. package/dist/integrations/webhook-handler.js +4 -1
  270. package/dist/integrations/webhook-handler.js.map +1 -1
  271. package/dist/jobs/scheduler.d.ts +4 -2
  272. package/dist/jobs/scheduler.d.ts.map +1 -1
  273. package/dist/jobs/scheduler.js +9 -3
  274. package/dist/jobs/scheduler.js.map +1 -1
  275. package/dist/mcp-client/builtin-capabilities.d.ts +20 -0
  276. package/dist/mcp-client/builtin-capabilities.d.ts.map +1 -0
  277. package/dist/mcp-client/builtin-capabilities.js +75 -0
  278. package/dist/mcp-client/builtin-capabilities.js.map +1 -0
  279. package/dist/mcp-client/builtin-store.d.ts +10 -0
  280. package/dist/mcp-client/builtin-store.d.ts.map +1 -0
  281. package/dist/mcp-client/builtin-store.js +55 -0
  282. package/dist/mcp-client/builtin-store.js.map +1 -0
  283. package/dist/mcp-client/index.d.ts +3 -1
  284. package/dist/mcp-client/index.d.ts.map +1 -1
  285. package/dist/mcp-client/index.js +3 -1
  286. package/dist/mcp-client/index.js.map +1 -1
  287. package/dist/mcp-client/routes.d.ts +28 -0
  288. package/dist/mcp-client/routes.d.ts.map +1 -1
  289. package/dist/mcp-client/routes.js +195 -1
  290. package/dist/mcp-client/routes.js.map +1 -1
  291. package/dist/org/context.d.ts.map +1 -1
  292. package/dist/org/context.js +34 -0
  293. package/dist/org/context.js.map +1 -1
  294. package/dist/resources/handlers.d.ts +4 -0
  295. package/dist/resources/handlers.d.ts.map +1 -1
  296. package/dist/resources/handlers.js +46 -7
  297. package/dist/resources/handlers.js.map +1 -1
  298. package/dist/resources/script-helpers.d.ts +8 -1
  299. package/dist/resources/script-helpers.d.ts.map +1 -1
  300. package/dist/resources/script-helpers.js +18 -8
  301. package/dist/resources/script-helpers.js.map +1 -1
  302. package/dist/resources/store.d.ts +19 -0
  303. package/dist/resources/store.d.ts.map +1 -1
  304. package/dist/resources/store.js +86 -3
  305. package/dist/resources/store.js.map +1 -1
  306. package/dist/scripts/agent-engines/list-agent-engines.d.ts +1 -1
  307. package/dist/scripts/agent-engines/list-agent-engines.d.ts.map +1 -1
  308. package/dist/scripts/agent-engines/list-agent-engines.js +18 -7
  309. package/dist/scripts/agent-engines/list-agent-engines.js.map +1 -1
  310. package/dist/scripts/agent-engines/manage-agent-engine.d.ts.map +1 -1
  311. package/dist/scripts/agent-engines/manage-agent-engine.js +100 -7
  312. package/dist/scripts/agent-engines/manage-agent-engine.js.map +1 -1
  313. package/dist/scripts/resources/delete.d.ts.map +1 -1
  314. package/dist/scripts/resources/delete.js +4 -1
  315. package/dist/scripts/resources/delete.js.map +1 -1
  316. package/dist/scripts/resources/effective.d.ts +11 -0
  317. package/dist/scripts/resources/effective.d.ts.map +1 -0
  318. package/dist/scripts/resources/effective.js +54 -0
  319. package/dist/scripts/resources/effective.js.map +1 -0
  320. package/dist/scripts/resources/index.d.ts.map +1 -1
  321. package/dist/scripts/resources/index.js +1 -0
  322. package/dist/scripts/resources/index.js.map +1 -1
  323. package/dist/scripts/resources/list.d.ts +1 -1
  324. package/dist/scripts/resources/list.d.ts.map +1 -1
  325. package/dist/scripts/resources/list.js +17 -5
  326. package/dist/scripts/resources/list.js.map +1 -1
  327. package/dist/scripts/resources/read.d.ts +1 -1
  328. package/dist/scripts/resources/read.d.ts.map +1 -1
  329. package/dist/scripts/resources/read.js +20 -5
  330. package/dist/scripts/resources/read.js.map +1 -1
  331. package/dist/scripts/resources/write.d.ts.map +1 -1
  332. package/dist/scripts/resources/write.js +4 -1
  333. package/dist/scripts/resources/write.js.map +1 -1
  334. package/dist/scripts/runner.d.ts +11 -1
  335. package/dist/scripts/runner.d.ts.map +1 -1
  336. package/dist/scripts/runner.js +75 -27
  337. package/dist/scripts/runner.js.map +1 -1
  338. package/dist/server/action-discovery.d.ts.map +1 -1
  339. package/dist/server/action-discovery.js +5 -0
  340. package/dist/server/action-discovery.js.map +1 -1
  341. package/dist/server/agent-chat-plugin.d.ts +24 -0
  342. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  343. package/dist/server/agent-chat-plugin.js +608 -54
  344. package/dist/server/agent-chat-plugin.js.map +1 -1
  345. package/dist/server/core-routes-plugin.d.ts.map +1 -1
  346. package/dist/server/core-routes-plugin.js +2 -0
  347. package/dist/server/core-routes-plugin.js.map +1 -1
  348. package/dist/server/embedded.d.ts +72 -0
  349. package/dist/server/embedded.d.ts.map +1 -0
  350. package/dist/server/embedded.js +119 -0
  351. package/dist/server/embedded.js.map +1 -0
  352. package/dist/server/index.d.ts +8 -1
  353. package/dist/server/index.d.ts.map +1 -1
  354. package/dist/server/index.js +7 -1
  355. package/dist/server/index.js.map +1 -1
  356. package/dist/server/poll.d.ts.map +1 -1
  357. package/dist/server/poll.js +184 -13
  358. package/dist/server/poll.js.map +1 -1
  359. package/dist/server/resources-plugin.d.ts.map +1 -1
  360. package/dist/server/resources-plugin.js +11 -2
  361. package/dist/server/resources-plugin.js.map +1 -1
  362. package/dist/sharing/actions/extension-change.d.ts +4 -0
  363. package/dist/sharing/actions/extension-change.d.ts.map +1 -0
  364. package/dist/sharing/actions/extension-change.js +13 -0
  365. package/dist/sharing/actions/extension-change.js.map +1 -0
  366. package/dist/sharing/actions/set-resource-visibility.d.ts.map +1 -1
  367. package/dist/sharing/actions/set-resource-visibility.js +3 -0
  368. package/dist/sharing/actions/set-resource-visibility.js.map +1 -1
  369. package/dist/sharing/actions/share-resource.d.ts.map +1 -1
  370. package/dist/sharing/actions/share-resource.js +4 -0
  371. package/dist/sharing/actions/share-resource.js.map +1 -1
  372. package/dist/sharing/actions/unshare-resource.d.ts.map +1 -1
  373. package/dist/sharing/actions/unshare-resource.js +3 -0
  374. package/dist/sharing/actions/unshare-resource.js.map +1 -1
  375. package/dist/templates/default/AGENTS.md +3 -3
  376. package/dist/templates/workspace-core/AGENTS.md +7 -0
  377. package/dist/templates/workspace-root/AGENTS.md +7 -0
  378. package/dist/templates/workspace-root/README.md +25 -0
  379. package/dist/triggers/dispatcher.d.ts +3 -1
  380. package/dist/triggers/dispatcher.d.ts.map +1 -1
  381. package/dist/triggers/dispatcher.js +9 -3
  382. package/dist/triggers/dispatcher.js.map +1 -1
  383. package/dist/workspace-connections/index.d.ts +2 -0
  384. package/dist/workspace-connections/index.d.ts.map +1 -0
  385. package/dist/workspace-connections/index.js +2 -0
  386. package/dist/workspace-connections/index.js.map +1 -0
  387. package/dist/workspace-connections/store.d.ts +229 -0
  388. package/dist/workspace-connections/store.d.ts.map +1 -0
  389. package/dist/workspace-connections/store.js +938 -0
  390. package/dist/workspace-connections/store.js.map +1 -0
  391. package/docs/content/agent-teams.md +6 -0
  392. package/docs/content/cloneable-saas.md +1 -0
  393. package/docs/content/code-agents-ui.md +261 -0
  394. package/docs/content/dispatch.md +40 -3
  395. package/docs/content/embedding-sdk.md +459 -0
  396. package/docs/content/faq.md +1 -0
  397. package/docs/content/getting-started.md +1 -0
  398. package/docs/content/mcp-clients.md +41 -3
  399. package/docs/content/migration-workbench.md +237 -54
  400. package/docs/content/multi-app-workspace.md +41 -0
  401. package/docs/content/multi-tenancy.md +1 -1
  402. package/docs/content/template-brain.md +418 -0
  403. package/docs/content/template-dispatch.md +30 -0
  404. package/docs/content/workspace-connections.md +509 -0
  405. package/docs/content/workspace-management.md +12 -12
  406. package/docs/content/workspace.md +180 -40
  407. package/package.json +7 -2
  408. package/src/templates/default/AGENTS.md +3 -3
  409. package/src/templates/workspace-core/AGENTS.md +7 -0
  410. package/src/templates/workspace-root/AGENTS.md +7 -0
  411. package/src/templates/workspace-root/README.md +25 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BuiltinCapabilityDetail.js","sourceRoot":"","sources":["../../../src/client/resources/BuiltinCapabilityDetail.tsx"],"names":[],"mappings":";AACA,OAAO,EACL,iBAAiB,EACjB,WAAW,EACX,SAAS,EACT,iBAAiB,EACjB,WAAW,EACX,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAEjC,OAAO,EACL,0BAA0B,GAG3B,MAAM,+BAA+B,CAAC;AAQvC,MAAM,UAAU,uBAAuB,CAAC,EACtC,UAAU,EACV,KAAK,EACL,UAAU,GACmB;IAC7B,MAAM,MAAM,GAAG,0BAA0B,EAAE,CAAC;IAC5C,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,SAAS,GACb,UAAU,CAAC,SAAS;QACpB,CAAC,KAAK,KAAK,MAAM,IAAI,UAAU,CAAC;QAChC,CAAC,MAAM,CAAC,SAAS,CAAC;IACpB,MAAM,SAAS,GAAG,UAAU,CAAC,cAAc,KAAK,SAAS,CAAC;IAE1D,MAAM,QAAQ,GAAG,GAAG,EAAE;QACpB,IAAI,CAAC,SAAS;YAAE,OAAO;QACvB,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;IACjE,CAAC,CAAC;IAEF,OAAO,CACL,cAAK,SAAS,EAAC,sCAAsC,YACnD,eAAK,SAAS,EAAC,WAAW,aACxB,eAAK,SAAS,EAAC,8BAA8B,aAC1C,SAAS,CAAC,CAAC,CAAC,CACX,KAAC,WAAW,IAAC,SAAS,EAAC,+BAA+B,GAAG,CAC1D,CAAC,CAAC,CAAC,CACF,KAAC,iBAAiB,IAAC,SAAS,EAAC,+BAA+B,GAAG,CAChE,EACD,aAAI,SAAS,EAAC,iEAAiE,YAC5E,UAAU,CAAC,IAAI,GACb,EACL,KAAC,WAAW,IAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAI,IAC7C,EAEN,YAAG,SAAS,EAAC,wDAAwD,YAClE,UAAU,CAAC,WAAW,GACrB,EAEJ,eAAK,SAAS,EAAC,sDAAsD,aACnE,eAAK,SAAS,EAAC,yCAAyC,aACtD,eAAK,SAAS,EAAC,SAAS,aACtB,eAAK,SAAS,EAAC,yCAAyC,aACrD,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,eAC3C,EACN,YAAG,SAAS,EAAC,0DAA0D,YACpE,KAAK,KAAK,MAAM;gDACf,CAAC,CAAC,wCAAwC;gDAC1C,CAAC,CAAC,iDAAiD,GACnD,IACA,EACN,iBACE,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,QAAQ,kBACC,OAAO,EACrB,QAAQ,EAAE,CAAC,SAAS,EACpB,OAAO,EAAE,QAAQ,EACjB,SAAS,EAAE,EAAE,CACX,6GAA6G,EAC7G,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,wBAAwB,EACjD,CAAC,SAAS,IAAI,+BAA+B,CAC9C,YAED,eACE,SAAS,EAAE,EAAE,CACX,yEAAyE,EACzE,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,iBAAiB,CAC9C,GACD,GACK,IACL,EAEL,MAAM,CAAC,SAAS,IAAI,CACnB,eAAK,SAAS,EAAC,uEAAuE,aACpF,KAAC,WAAW,IAAC,SAAS,EAAC,sBAAsB,GAAG,4BAE5C,CACP,EACA,MAAM,CAAC,KAAK,IAAI,CACf,cAAK,SAAS,EAAC,iDAAiD,YAC7D,MAAM,CAAC,KAAK,YAAY,KAAK;gCAC5B,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO;gCACtB,CAAC,CAAC,mCAAmC,GACnC,CACP,IACG,EAEN,cAAI,SAAS,EAAC,WAAW,aACvB,KAAC,KAAK,IAAC,KAAK,EAAC,SAAS,YACpB,gBAAM,SAAS,EAAC,sEAAsE,aACnF,UAAU,CAAC,OAAO,OAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAC1C,GACD,EAEP,UAAU,CAAC,KAAK,IAAI,CACnB,KAAC,KAAK,IAAC,KAAK,EAAC,cAAc,YACzB,YAAG,SAAS,EAAC,mDAAmD,YAC7D,UAAU,CAAC,KAAK,GACf,GACE,CACT,EAEA,CAAC,UAAU,CAAC,SAAS,IAAI,CACxB,KAAC,KAAK,IAAC,KAAK,EAAC,cAAc,YACzB,YAAG,SAAS,EAAC,4DAA4D,YACtE,UAAU,CAAC,iBAAiB,IAAI,6BAA6B,GAC5D,GACE,CACT,EAED,KAAC,KAAK,IAAC,KAAK,EAAC,OAAO,YAClB,KAAC,YAAY,IAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAI,GAC5C,IACL,EAEJ,UAAU,CAAC,EAAE,KAAK,cAAc,IAAI,CACnC,YAAG,SAAS,EAAC,0GAA0G,6LAInH,CACL,EAEA,UAAU,CAAC,EAAE,KAAK,yBAAyB,IAAI,CAC9C,YAAG,SAAS,EAAC,0GAA0G,kKAInH,CACL,IACG,GACF,CACP,CAAC;AACJ,CAAC;AAED,SAAS,KAAK,CAAC,EACb,KAAK,EACL,QAAQ,GAIT;IACC,OAAO,CACL,0BACE,aAAI,SAAS,EAAC,iFAAiF,YAC5F,KAAK,GACH,EACL,uBAAK,QAAQ,GAAM,IACf,CACP,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,EACnB,OAAO,EACP,MAAM,GAIP;IACC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CACL,eAAM,SAAS,EAAC,gHAAgH,oBAEzH,CACR,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,EAAE,KAAK,KAAK,WAAW,EAAE,CAAC;QAClC,OAAO,CACL,gBAAM,SAAS,EAAC,oIAAoI,aAClJ,KAAC,SAAS,IAAC,SAAS,EAAC,aAAa,GAAG,iBAEhC,CACR,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,EAAE,KAAK,KAAK,OAAO,EAAE,CAAC;QAC9B,OAAO,CACL,gBACE,SAAS,EAAC,8HAA8H,EACxI,KAAK,EAAE,MAAM,CAAC,KAAK,aAEnB,KAAC,iBAAiB,IAAC,SAAS,EAAC,aAAa,GAAG,aAExC,CACR,CAAC;IACJ,CAAC;IACD,OAAO,CACL,gBAAM,SAAS,EAAC,gHAAgH,aAC9H,KAAC,iBAAiB,IAAC,SAAS,EAAC,aAAa,GAAG,aAExC,CACR,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,EACpB,OAAO,EACP,MAAM,GAIP;IACC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CACL,eAAM,SAAS,EAAC,mCAAmC,yEAE5C,CACR,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,EAAE,KAAK,KAAK,WAAW,EAAE,CAAC;QAClC,OAAO,CACL,gBAAM,SAAS,EAAC,6BAA6B,aAC1C,MAAM,CAAC,SAAS,WAAO,MAAM,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,gBACpD,CACR,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,EAAE,KAAK,KAAK,OAAO,EAAE,CAAC;QAC9B,OAAO,CACL,eAAM,SAAS,EAAC,4CAA4C,YACzD,MAAM,CAAC,KAAK,GACR,CACR,CAAC;IACJ,CAAC;IACD,OAAO,CACL,eAAM,SAAS,EAAC,mCAAmC,2EAE5C,CACR,CAAC;AACJ,CAAC","sourcesContent":["import React from \"react\";\nimport {\n IconAlertTriangle,\n IconBrowser,\n IconCheck,\n IconDeviceDesktop,\n IconLoader2,\n IconPlugConnected,\n} from \"@tabler/icons-react\";\nimport { cn } from \"../utils.js\";\nimport type { McpServerScope } from \"./use-mcp-servers.js\";\nimport {\n useToggleBuiltinCapability,\n type BuiltinCapability,\n type BuiltinCapabilityStatus,\n} from \"./use-builtin-capabilities.js\";\n\ninterface BuiltinCapabilityDetailProps {\n capability: BuiltinCapability;\n scope: McpServerScope;\n canEditOrg: boolean;\n}\n\nexport function BuiltinCapabilityDetail({\n capability,\n scope,\n canEditOrg,\n}: BuiltinCapabilityDetailProps) {\n const toggle = useToggleBuiltinCapability();\n const enabled = capability.enabled[scope];\n const status = capability.status[scope];\n const canToggle =\n capability.available &&\n (scope === \"user\" || canEditOrg) &&\n !toggle.isPending;\n const isBrowser = capability.exclusiveGroup === \"browser\";\n\n const onToggle = () => {\n if (!canToggle) return;\n toggle.mutate({ id: capability.id, scope, enabled: !enabled });\n };\n\n return (\n <div className=\"flex h-full flex-col overflow-y-auto\">\n <div className=\"px-4 py-4\">\n <div className=\"mb-3 flex items-center gap-2\">\n {isBrowser ? (\n <IconBrowser className=\"h-4 w-4 text-muted-foreground\" />\n ) : (\n <IconDeviceDesktop className=\"h-4 w-4 text-muted-foreground\" />\n )}\n <h2 className=\"min-w-0 flex-1 truncate text-[14px] font-medium text-foreground\">\n {capability.name}\n </h2>\n <StatusBadge enabled={enabled} status={status} />\n </div>\n\n <p className=\"mb-4 text-[12px] leading-relaxed text-muted-foreground\">\n {capability.description}\n </p>\n\n <div className=\"mb-4 rounded-md border border-border bg-muted/30 p-3\">\n <div className=\"flex items-center justify-between gap-3\">\n <div className=\"min-w-0\">\n <div className=\"text-[12px] font-medium text-foreground\">\n {scope === \"user\" ? \"Personal\" : \"Organization\"} access\n </div>\n <p className=\"mt-0.5 text-[11px] leading-relaxed text-muted-foreground\">\n {scope === \"user\"\n ? \"Available only to your agent sessions.\"\n : \"Available to agents in the active organization.\"}\n </p>\n </div>\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={enabled}\n disabled={!canToggle}\n onClick={onToggle}\n className={cn(\n \"relative inline-flex h-5 w-9 shrink-0 items-center rounded-full border border-transparent transition-colors\",\n enabled ? \"bg-primary\" : \"bg-muted-foreground/25\",\n !canToggle && \"cursor-not-allowed opacity-60\",\n )}\n >\n <span\n className={cn(\n \"block h-4 w-4 rounded-full bg-background shadow-sm transition-transform\",\n enabled ? \"translate-x-4\" : \"translate-x-0.5\",\n )}\n />\n </button>\n </div>\n\n {toggle.isPending && (\n <div className=\"mt-2 inline-flex items-center gap-1 text-[11px] text-muted-foreground\">\n <IconLoader2 className=\"h-3 w-3 animate-spin\" />\n Updating tools…\n </div>\n )}\n {toggle.error && (\n <div className=\"mt-2 text-[11px] text-red-600 dark:text-red-400\">\n {toggle.error instanceof Error\n ? toggle.error.message\n : \"Could not update this capability.\"}\n </div>\n )}\n </div>\n\n <dl className=\"space-y-3\">\n <Field label=\"Command\">\n <code className=\"rounded bg-muted px-1.5 py-0.5 text-[11px] text-foreground break-all\">\n {capability.command} {capability.args.join(\" \")}\n </code>\n </Field>\n\n {capability.notes && (\n <Field label=\"Requirements\">\n <p className=\"text-[12px] leading-relaxed text-muted-foreground\">\n {capability.notes}\n </p>\n </Field>\n )}\n\n {!capability.available && (\n <Field label=\"Availability\">\n <p className=\"text-[12px] leading-relaxed text-red-600 dark:text-red-400\">\n {capability.unavailableReason ?? \"Not available on this host.\"}\n </p>\n </Field>\n )}\n\n <Field label=\"Tools\">\n <ToolsSummary enabled={enabled} status={status} />\n </Field>\n </dl>\n\n {capability.id === \"computer-use\" && (\n <p className=\"mt-6 rounded-md border border-border bg-muted/40 p-2.5 text-[11px] leading-relaxed text-muted-foreground\">\n macOS may ask for Screen Recording and Accessibility permission\n before the tools can control local apps. The agent should still ask\n before taking sensitive desktop actions.\n </p>\n )}\n\n {capability.id === \"browser-chrome-devtools\" && (\n <p className=\"mt-6 rounded-md border border-border bg-muted/40 p-2.5 text-[11px] leading-relaxed text-muted-foreground\">\n Chrome DevTools attaches to your live Chrome profile when remote\n debugging is available, so it can verify pages that rely on your\n existing login.\n </p>\n )}\n </div>\n </div>\n );\n}\n\nfunction Field({\n label,\n children,\n}: {\n label: string;\n children: React.ReactNode;\n}) {\n return (\n <div>\n <dt className=\"mb-1 text-[10px] font-semibold uppercase tracking-wide text-muted-foreground/70\">\n {label}\n </dt>\n <dd>{children}</dd>\n </div>\n );\n}\n\nfunction StatusBadge({\n enabled,\n status,\n}: {\n enabled: boolean;\n status?: BuiltinCapabilityStatus;\n}) {\n if (!enabled) {\n return (\n <span className=\"inline-flex items-center gap-1 rounded-full bg-muted px-2 py-0.5 text-[10px] font-medium text-muted-foreground\">\n Off\n </span>\n );\n }\n if (status?.state === \"connected\") {\n return (\n <span className=\"inline-flex items-center gap-1 rounded-full bg-green-500/10 px-2 py-0.5 text-[10px] font-medium text-green-600 dark:text-green-400\">\n <IconCheck className=\"h-2.5 w-2.5\" />\n Connected\n </span>\n );\n }\n if (status?.state === \"error\") {\n return (\n <span\n className=\"inline-flex items-center gap-1 rounded-full bg-red-500/10 px-2 py-0.5 text-[10px] font-medium text-red-600 dark:text-red-400\"\n title={status.error}\n >\n <IconAlertTriangle className=\"h-2.5 w-2.5\" />\n Error\n </span>\n );\n }\n return (\n <span className=\"inline-flex items-center gap-1 rounded-full bg-muted px-2 py-0.5 text-[10px] font-medium text-muted-foreground\">\n <IconPlugConnected className=\"h-2.5 w-2.5\" />\n Ready\n </span>\n );\n}\n\nfunction ToolsSummary({\n enabled,\n status,\n}: {\n enabled: boolean;\n status?: BuiltinCapabilityStatus;\n}) {\n if (!enabled) {\n return (\n <span className=\"text-[12px] text-muted-foreground\">\n Disabled. Toggle it on to expose MCP tools to the agent.\n </span>\n );\n }\n if (status?.state === \"connected\") {\n return (\n <span className=\"text-[12px] text-foreground\">\n {status.toolCount} tool{status.toolCount === 1 ? \"\" : \"s\"} exposed\n </span>\n );\n }\n if (status?.state === \"error\") {\n return (\n <span className=\"text-[12px] text-red-600 dark:text-red-400\">\n {status.error}\n </span>\n );\n }\n return (\n <span className=\"text-[12px] text-muted-foreground\">\n Enabled. Tools will appear after the MCP manager connects.\n </span>\n );\n}\n"]}
@@ -9,6 +9,8 @@ export interface ResourceEditorProps {
9
9
  onSaveStatusChange?: (status: "idle" | "saving" | "saved") => void;
10
10
  /** When true, the editor's internal toolbar row is hidden */
11
11
  hideToolbar?: boolean;
12
+ /** When true, content can be viewed and selected but not modified */
13
+ readOnly?: boolean;
12
14
  }
13
- export declare function ResourceEditor({ resource, onSave, view: controlledView, onViewChange, onSaveStatusChange, hideToolbar, }: ResourceEditorProps): import("react/jsx-runtime").JSX.Element;
15
+ export declare function ResourceEditor({ resource, onSave, view: controlledView, onViewChange, onSaveStatusChange, hideToolbar, readOnly, }: ResourceEditorProps): import("react/jsx-runtime").JSX.Element;
14
16
  //# sourceMappingURL=ResourceEditor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ResourceEditor.d.ts","sourceRoot":"","sources":["../../../src/client/resources/ResourceEditor.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAiBnD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,qFAAqF;IACrF,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,GAAG,MAAM,KAAK,IAAI,CAAC;IAC9C,0CAA0C;IAC1C,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,KAAK,IAAI,CAAC;IACnE,6DAA6D;IAC7D,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAkiCD,wBAAgB,cAAc,CAAC,EAC7B,QAAQ,EACR,MAAM,EACN,IAAI,EAAE,cAAc,EACpB,YAAY,EACZ,kBAAkB,EAClB,WAAW,GACZ,EAAE,mBAAmB,2CAuLrB"}
1
+ {"version":3,"file":"ResourceEditor.d.ts","sourceRoot":"","sources":["../../../src/client/resources/ResourceEditor.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAiBnD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,qFAAqF;IACrF,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,GAAG,MAAM,KAAK,IAAI,CAAC;IAC9C,0CAA0C;IAC1C,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,KAAK,IAAI,CAAC;IACnE,6DAA6D;IAC7D,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAskCD,wBAAgB,cAAc,CAAC,EAC7B,QAAQ,EACR,MAAM,EACN,IAAI,EAAE,cAAc,EACpB,YAAY,EACZ,kBAAkB,EAClB,WAAW,EACX,QAAQ,GACT,EAAE,mBAAmB,2CAgMrB"}
@@ -36,9 +36,11 @@ const FM_INPUT_STYLE = {
36
36
  width: "100%",
37
37
  padding: 0,
38
38
  };
39
- function FrontmatterBar({ resourcePath, frontmatter, onChange, }) {
39
+ function FrontmatterBar({ resourcePath, frontmatter, onChange, readOnly, }) {
40
40
  const getField = (key) => getFrontmatterValue(frontmatter, key) ?? "";
41
41
  const updateField = (key, value) => {
42
+ if (readOnly)
43
+ return;
42
44
  const exists = frontmatter.fields.some((f) => f.key === key);
43
45
  const newFields = exists
44
46
  ? frontmatter.fields.map((f) => (f.key === key ? { ...f, value } : f))
@@ -66,7 +68,7 @@ function FrontmatterBar({ resourcePath, frontmatter, onChange, }) {
66
68
  fontSize: 12,
67
69
  lineHeight: 1.5,
68
70
  color: "hsl(var(--muted-foreground))",
69
- }, children: [_jsxs("div", { style: { display: "flex", alignItems: "center", gap: 6 }, children: [_jsx("input", { value: name, onChange: (e) => updateField("name", e.target.value), placeholder: isCustomAgent ? "Agent name" : "Skill name", style: {
71
+ }, children: [_jsxs("div", { style: { display: "flex", alignItems: "center", gap: 6 }, children: [_jsx("input", { value: name, onChange: (e) => updateField("name", e.target.value), readOnly: readOnly, placeholder: isCustomAgent ? "Agent name" : "Skill name", style: {
70
72
  ...FM_INPUT_STYLE,
71
73
  fontWeight: 600,
72
74
  color: "hsl(var(--foreground))",
@@ -92,14 +94,14 @@ function FrontmatterBar({ resourcePath, frontmatter, onChange, }) {
92
94
  ? "none"
93
95
  : "1px dashed hsl(var(--border))",
94
96
  fontWeight: 500,
95
- }, children: [_jsx("input", { type: "checkbox", checked: isUserInvocable, onChange: (e) => updateField("user-invocable", e.target.checked ? "true" : "false"), style: { display: "none" } }), "/", name || "command"] })) : null, isCustomAgent ? (_jsxs("select", { value: model, onChange: (e) => updateField("model", e.target.value), style: {
97
+ }, children: [_jsx("input", { type: "checkbox", checked: isUserInvocable, disabled: readOnly, onChange: (e) => updateField("user-invocable", e.target.checked ? "true" : "false"), style: { display: "none" } }), "/", name || "command"] })) : null, isCustomAgent ? (_jsxs("select", { value: model, disabled: readOnly, onChange: (e) => updateField("model", e.target.value), style: {
96
98
  borderRadius: 4,
97
99
  border: "1px solid hsl(var(--border))",
98
100
  background: "hsl(var(--background))",
99
101
  color: "hsl(var(--foreground))",
100
102
  fontSize: 11,
101
103
  padding: "2px 6px",
102
- }, children: [_jsx("option", { value: "inherit", children: "Default model" }), _jsx("option", { value: "claude-sonnet-4-6", children: "Claude Sonnet 4.6" }), _jsx("option", { value: "claude-haiku-4-5-20251001", children: "Claude Haiku 4.5" })] })) : null] }), _jsx("input", { value: description, onChange: (e) => updateField("description", e.target.value), placeholder: isCustomAgent
104
+ }, children: [_jsx("option", { value: "inherit", children: "Default model" }), _jsx("option", { value: "claude-sonnet-4-6", children: "Claude Sonnet 4.6" }), _jsx("option", { value: "claude-haiku-4-5-20251001", children: "Claude Haiku 4.5" })] })) : null] }), _jsx("input", { value: description, readOnly: readOnly, onChange: (e) => updateField("description", e.target.value), placeholder: isCustomAgent
103
105
  ? "Description — what this agent should handle"
104
106
  : "Description — what this skill does", style: {
105
107
  ...FM_INPUT_STYLE,
@@ -115,7 +117,7 @@ function FrontmatterBar({ resourcePath, frontmatter, onChange, }) {
115
117
  fontSize: 10,
116
118
  color: "hsl(var(--muted-foreground))",
117
119
  minWidth: 28,
118
- }, children: "Tools" }), _jsxs("select", { value: tools, onChange: (e) => updateField("tools", e.target.value), style: {
120
+ }, children: "Tools" }), _jsxs("select", { value: tools, disabled: readOnly, onChange: (e) => updateField("tools", e.target.value), style: {
119
121
  borderRadius: 4,
120
122
  border: "1px solid hsl(var(--border))",
121
123
  background: "hsl(var(--background))",
@@ -487,7 +489,7 @@ const shStyles = `
487
489
  .sh-num { color: #fca5a5; }
488
490
  .sh-lit { color: #c4b5fd; }
489
491
  `;
490
- function SyntaxHighlightEditor({ value, onChange, language: _language, }) {
492
+ function SyntaxHighlightEditor({ value, onChange, language: _language, readOnly, }) {
491
493
  const textareaRef = useRef(null);
492
494
  const preRef = useRef(null);
493
495
  const highlighted = useMemo(() => highlightJson(value), [value]);
@@ -518,7 +520,10 @@ function SyntaxHighlightEditor({ value, onChange, language: _language, }) {
518
520
  pointerEvents: "none",
519
521
  color: "hsl(var(--muted-foreground))",
520
522
  background: "transparent",
521
- }, dangerouslySetInnerHTML: { __html: highlighted + "\n" } }), _jsx("textarea", { ref: textareaRef, value: value, onChange: (e) => onChange(e.target.value), onScroll: syncScroll, spellCheck: false, style: {
523
+ }, dangerouslySetInnerHTML: { __html: highlighted + "\n" } }), _jsx("textarea", { ref: textareaRef, value: value, onChange: (e) => {
524
+ if (!readOnly)
525
+ onChange(e.target.value);
526
+ }, onScroll: syncScroll, readOnly: readOnly, spellCheck: false, style: {
522
527
  ...sharedStyle,
523
528
  position: "absolute",
524
529
  inset: 0,
@@ -533,7 +538,7 @@ function SyntaxHighlightEditor({ value, onChange, language: _language, }) {
533
538
  WebkitTextFillColor: "transparent",
534
539
  } })] })] }));
535
540
  }
536
- function VisualMarkdownEditor({ content, onChange, resourcePath, }) {
541
+ function VisualMarkdownEditor({ content, onChange, resourcePath, readOnly, }) {
537
542
  const isSettingContent = useRef(false);
538
543
  const onChangeRef = useRef(onChange);
539
544
  onChangeRef.current = onChange;
@@ -575,12 +580,15 @@ function VisualMarkdownEditor({ content, onChange, resourcePath, }) {
575
580
  }),
576
581
  ],
577
582
  content: parsed?.body ?? content,
583
+ editable: !readOnly,
578
584
  editorProps: {
579
585
  attributes: {
580
586
  class: "re-prose",
581
587
  },
582
588
  },
583
589
  onUpdate: ({ editor }) => {
590
+ if (readOnly)
591
+ return;
584
592
  if (isSettingContent.current)
585
593
  return;
586
594
  try {
@@ -595,6 +603,11 @@ function VisualMarkdownEditor({ content, onChange, resourcePath, }) {
595
603
  }
596
604
  },
597
605
  });
606
+ useEffect(() => {
607
+ if (!editor || editor.isDestroyed)
608
+ return;
609
+ editor.setEditable(!readOnly);
610
+ }, [editor, readOnly]);
598
611
  useEffect(() => {
599
612
  if (!editor || editor.isDestroyed)
600
613
  return;
@@ -622,7 +635,13 @@ function VisualMarkdownEditor({ content, onChange, resourcePath, }) {
622
635
  editor.chain().focus("end").run();
623
636
  }
624
637
  };
625
- return (_jsxs("div", { className: "re-editor-wrapper re-editor-clickable", onClick: handleWrapperClick, style: { position: "relative", minHeight: "100%", cursor: "text" }, children: [parsed && (_jsx(FrontmatterBar, { resourcePath: resourcePath, frontmatter: parsed, onChange: (updated) => {
638
+ return (_jsxs("div", { className: "re-editor-wrapper re-editor-clickable", onClick: handleWrapperClick, style: {
639
+ position: "relative",
640
+ minHeight: "100%",
641
+ cursor: readOnly ? "default" : "text",
642
+ }, children: [parsed && (_jsx(FrontmatterBar, { resourcePath: resourcePath, frontmatter: parsed, readOnly: readOnly, onChange: (updated) => {
643
+ if (readOnly)
644
+ return;
626
645
  frontmatterRef.current = updated;
627
646
  // Get current body and combine with updated frontmatter
628
647
  try {
@@ -632,7 +651,7 @@ function VisualMarkdownEditor({ content, onChange, resourcePath, }) {
632
651
  catch {
633
652
  // fallback
634
653
  }
635
- } })), _jsx(InlineBubbleToolbar, { editor: editor }), _jsx(SlashMenu, { editor: editor }), _jsx(EditorContent, { editor: editor })] }));
654
+ } })), !readOnly && _jsx(InlineBubbleToolbar, { editor: editor }), !readOnly && _jsx(SlashMenu, { editor: editor }), _jsx(EditorContent, { editor: editor })] }));
636
655
  }
637
656
  function parseRemoteAgentContent(content, path) {
638
657
  const fallbackId = getRemoteAgentIdFromPath(path);
@@ -665,7 +684,7 @@ function serializeRemoteAgent(value) {
665
684
  color: value.color,
666
685
  }, null, 2) + "\n");
667
686
  }
668
- function RemoteAgentFormEditor({ resource, onChange, }) {
687
+ function RemoteAgentFormEditor({ resource, onChange, readOnly, }) {
669
688
  const [value, setValue] = useState(() => parseRemoteAgentContent(resource.content, resource.path));
670
689
  const prevIdRef = useRef(resource.id);
671
690
  useEffect(() => {
@@ -675,15 +694,17 @@ function RemoteAgentFormEditor({ resource, onChange, }) {
675
694
  }
676
695
  }, [resource.id, resource.content, resource.path]);
677
696
  const update = (patch) => {
697
+ if (readOnly)
698
+ return;
678
699
  const next = { ...value, ...patch };
679
700
  setValue(next);
680
701
  onChange(serializeRemoteAgent(next));
681
702
  };
682
703
  const inputClass = "w-full rounded-md border border-border bg-background px-2.5 py-1.5 text-[13px] text-foreground outline-none placeholder:text-muted-foreground/50 focus:ring-1 focus:ring-accent";
683
704
  const labelClass = "block text-[11px] font-medium text-muted-foreground mb-1";
684
- return (_jsx("div", { className: "flex flex-1 min-h-0 flex-col overflow-y-auto p-4", children: _jsxs("div", { className: "max-w-md space-y-3", children: [_jsx("p", { className: "text-[11px] text-muted-foreground/70 leading-snug", children: "Connected remote agent over the A2A protocol. @-mention it in chat to delegate tasks." }), _jsxs("div", { children: [_jsx("label", { className: labelClass, children: "Name" }), _jsx("input", { className: inputClass, value: value.name, onChange: (e) => update({ name: e.target.value }), placeholder: "Analytics" })] }), _jsxs("div", { children: [_jsx("label", { className: labelClass, children: "URL" }), _jsx("input", { className: inputClass, value: value.url, onChange: (e) => update({ url: e.target.value }), placeholder: "https://analytics.example.com" }), _jsxs("p", { className: "mt-1 text-[10px] text-muted-foreground/50", children: ["A2A endpoint. The agent card is served at", " ", _jsx("code", { children: "/.well-known/agent-card.json" }), "."] })] }), _jsxs("div", { children: [_jsx("label", { className: labelClass, children: "Description" }), _jsx("textarea", { className: cn(inputClass, "resize-y"), rows: 3, value: value.description, onChange: (e) => update({ description: e.target.value }), placeholder: "What this agent is good at \u2014 helps the main agent decide when to delegate." })] }), _jsxs("div", { children: [_jsx("label", { className: labelClass, children: "Color" }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx("input", { type: "color", value: value.color, onChange: (e) => update({ color: e.target.value }), className: "h-8 w-10 cursor-pointer rounded border border-border bg-transparent" }), _jsx("input", { className: cn(inputClass, "flex-1"), value: value.color, onChange: (e) => update({ color: e.target.value }), placeholder: "#6B7280" })] })] })] }) }));
705
+ return (_jsx("div", { className: "flex flex-1 min-h-0 flex-col overflow-y-auto p-4", children: _jsxs("div", { className: "max-w-md space-y-3", children: [_jsx("p", { className: "text-[11px] text-muted-foreground/70 leading-snug", children: "Connected remote agent over the A2A protocol. @-mention it in chat to delegate tasks." }), _jsxs("div", { children: [_jsx("label", { className: labelClass, children: "Name" }), _jsx("input", { className: inputClass, value: value.name, readOnly: readOnly, onChange: (e) => update({ name: e.target.value }), placeholder: "Analytics" })] }), _jsxs("div", { children: [_jsx("label", { className: labelClass, children: "URL" }), _jsx("input", { className: inputClass, value: value.url, readOnly: readOnly, onChange: (e) => update({ url: e.target.value }), placeholder: "https://analytics.example.com" }), _jsxs("p", { className: "mt-1 text-[10px] text-muted-foreground/50", children: ["A2A endpoint. The agent card is served at", " ", _jsx("code", { children: "/.well-known/agent-card.json" }), "."] })] }), _jsxs("div", { children: [_jsx("label", { className: labelClass, children: "Description" }), _jsx("textarea", { className: cn(inputClass, "resize-y"), rows: 3, value: value.description, readOnly: readOnly, onChange: (e) => update({ description: e.target.value }), placeholder: "What this agent is good at \u2014 helps the main agent decide when to delegate." })] }), _jsxs("div", { children: [_jsx("label", { className: labelClass, children: "Color" }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx("input", { type: "color", value: value.color, disabled: readOnly, onChange: (e) => update({ color: e.target.value }), className: "h-8 w-10 cursor-pointer rounded border border-border bg-transparent" }), _jsx("input", { className: cn(inputClass, "flex-1"), value: value.color, readOnly: readOnly, onChange: (e) => update({ color: e.target.value }), placeholder: "#6B7280" })] })] })] }) }));
685
706
  }
686
- export function ResourceEditor({ resource, onSave, view: controlledView, onViewChange, onSaveStatusChange, hideToolbar, }) {
707
+ export function ResourceEditor({ resource, onSave, view: controlledView, onViewChange, onSaveStatusChange, hideToolbar, readOnly, }) {
687
708
  const [content, setContent] = useState(resource.content);
688
709
  const [internalView, setInternalView] = useState(getViewPref);
689
710
  const view = controlledView ?? internalView;
@@ -700,6 +721,8 @@ export function ResourceEditor({ resource, onSave, view: controlledView, onViewC
700
721
  }
701
722
  }, [resource.id, resource.content, onSaveStatusChange]);
702
723
  const handleChange = useCallback((newContent) => {
724
+ if (readOnly)
725
+ return;
703
726
  setContent(newContent);
704
727
  setSaveStatus("idle");
705
728
  onSaveStatusChange?.("idle");
@@ -714,7 +737,7 @@ export function ResourceEditor({ resource, onSave, view: controlledView, onViewC
714
737
  onSaveStatusChange?.("saved");
715
738
  }, 300);
716
739
  }, 1000);
717
- }, [onSave, onSaveStatusChange]);
740
+ }, [onSave, onSaveStatusChange, readOnly]);
718
741
  const switchView = useCallback((v) => {
719
742
  setInternalView(v);
720
743
  setViewPref(v);
@@ -732,7 +755,7 @@ export function ResourceEditor({ resource, onSave, view: controlledView, onViewC
732
755
  const isRemoteAgent = isRemoteAgentPath(resource.path);
733
756
  // Remote-agent manifest → form editor
734
757
  if (isRemoteAgent) {
735
- return (_jsx("div", { className: "flex h-full flex-col", children: _jsx(RemoteAgentFormEditor, { resource: resource, onChange: handleChange }) }));
758
+ return (_jsx("div", { className: "flex h-full flex-col", children: _jsx(RemoteAgentFormEditor, { resource: resource, onChange: handleChange, readOnly: readOnly }) }));
736
759
  }
737
760
  // Image preview
738
761
  if (isImage) {
@@ -748,14 +771,14 @@ export function ResourceEditor({ resource, onSave, view: controlledView, onViewC
748
771
  ? "Saving..."
749
772
  : saveStatus === "saved"
750
773
  ? "Saved"
751
- : "" })] })), view === "visual" ? (_jsx("div", { className: "flex-1 min-h-0 overflow-y-auto p-3", children: _jsx(VisualMarkdownEditor, { content: content, onChange: handleChange, resourcePath: resource.path }) }, resource.id + "-visual")) : (_jsx("textarea", { value: content, onChange: (e) => handleChange(e.target.value), className: "flex-1 min-h-0 resize-none bg-transparent p-3 text-[13px] text-foreground outline-none placeholder:text-muted-foreground/50", style: {
774
+ : "" })] })), view === "visual" ? (_jsx("div", { className: "flex-1 min-h-0 overflow-y-auto p-3", children: _jsx(VisualMarkdownEditor, { content: content, onChange: handleChange, resourcePath: resource.path, readOnly: readOnly }) }, resource.id + "-visual")) : (_jsx("textarea", { value: content, onChange: (e) => handleChange(e.target.value), readOnly: readOnly, className: "flex-1 min-h-0 resize-none bg-transparent p-3 text-[13px] text-foreground outline-none placeholder:text-muted-foreground/50", style: {
752
775
  fontFamily: 'ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace',
753
776
  lineHeight: 1.6,
754
777
  }, spellCheck: false }))] }));
755
778
  }
756
779
  // Non-markdown text files
757
780
  const isJson = resource.mimeType === "application/json" || resource.path.endsWith(".json");
758
- return (_jsx("div", { className: "flex h-full flex-col", children: isJson ? (_jsx(SyntaxHighlightEditor, { value: content, onChange: handleChange, language: "json" })) : (_jsx("textarea", { value: content, onChange: (e) => handleChange(e.target.value), className: "flex-1 min-h-0 resize-none bg-transparent p-3 text-[13px] text-foreground outline-none placeholder:text-muted-foreground/50", style: {
781
+ return (_jsx("div", { className: "flex h-full flex-col", children: isJson ? (_jsx(SyntaxHighlightEditor, { value: content, onChange: handleChange, language: "json", readOnly: readOnly })) : (_jsx("textarea", { value: content, onChange: (e) => handleChange(e.target.value), readOnly: readOnly, className: "flex-1 min-h-0 resize-none bg-transparent p-3 text-[13px] text-foreground outline-none placeholder:text-muted-foreground/50", style: {
759
782
  fontFamily: 'ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace',
760
783
  lineHeight: 1.6,
761
784
  }, spellCheck: false })) }));