@aphexcms/cms-core 9.6.0 → 9.8.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 (491) hide show
  1. package/dist/agent-chat-state.svelte.d.ts +38 -0
  2. package/dist/agent-chat-state.svelte.d.ts.map +1 -0
  3. package/dist/agent-chat-state.svelte.js +86 -0
  4. package/dist/ai/content-workspace-tools.d.ts +3 -0
  5. package/dist/ai/content-workspace-tools.d.ts.map +1 -0
  6. package/dist/ai/content-workspace-tools.js +50 -0
  7. package/dist/ai/default-system-prompt.d.ts +2 -0
  8. package/dist/ai/default-system-prompt.d.ts.map +1 -0
  9. package/dist/ai/default-system-prompt.js +15 -0
  10. package/dist/ai/index.d.ts +2 -0
  11. package/dist/ai/index.d.ts.map +1 -0
  12. package/dist/ai/index.js +4 -0
  13. package/dist/ai/interfaces/ai-provider.d.ts +67 -0
  14. package/dist/ai/interfaces/ai-provider.d.ts.map +1 -0
  15. package/dist/ai/interfaces/ai-provider.js +16 -0
  16. package/dist/ai/run-agent-turn.d.ts +29 -0
  17. package/dist/ai/run-agent-turn.d.ts.map +1 -0
  18. package/dist/ai/run-agent-turn.js +166 -0
  19. package/dist/api/agent-chat.d.ts +27 -0
  20. package/dist/api/agent-chat.d.ts.map +1 -0
  21. package/dist/api/agent-chat.js +64 -0
  22. package/dist/api/documents.d.ts +36 -3
  23. package/dist/api/documents.d.ts.map +1 -1
  24. package/dist/api/documents.js +24 -6
  25. package/dist/api/schemas/agent-chat.d.ts +45 -0
  26. package/dist/api/schemas/agent-chat.d.ts.map +1 -0
  27. package/dist/api/schemas/agent-chat.js +35 -0
  28. package/dist/api/schemas/agent-operations.d.ts +13 -0
  29. package/dist/api/schemas/agent-operations.d.ts.map +1 -0
  30. package/dist/api/schemas/agent-operations.js +15 -0
  31. package/dist/api/schemas/documents.d.ts +41 -0
  32. package/dist/api/schemas/documents.d.ts.map +1 -1
  33. package/dist/api/schemas/documents.js +38 -2
  34. package/dist/chunk-recovery.d.ts +33 -0
  35. package/dist/chunk-recovery.d.ts.map +1 -0
  36. package/dist/chunk-recovery.js +131 -0
  37. package/dist/client/index.d.ts +1 -0
  38. package/dist/client/index.d.ts.map +1 -1
  39. package/dist/client/index.js +1 -0
  40. package/dist/client/ui.d.ts +2 -0
  41. package/dist/client/ui.d.ts.map +1 -1
  42. package/dist/client/ui.js +3 -0
  43. package/dist/components/AdminApp.svelte +37 -3
  44. package/dist/components/AdminApp.svelte.d.ts.map +1 -1
  45. package/dist/components/admin/ActivityView.svelte +436 -0
  46. package/dist/components/admin/ActivityView.svelte.d.ts +4 -0
  47. package/dist/components/admin/ActivityView.svelte.d.ts.map +1 -0
  48. package/dist/components/admin/AgentChat.svelte +977 -0
  49. package/dist/components/admin/AgentChat.svelte.d.ts +17 -0
  50. package/dist/components/admin/AgentChat.svelte.d.ts.map +1 -0
  51. package/dist/components/admin/DocumentEditor.svelte +469 -70
  52. package/dist/components/admin/DocumentEditor.svelte.d.ts +6 -0
  53. package/dist/components/admin/DocumentEditor.svelte.d.ts.map +1 -1
  54. package/dist/components/admin/ObjectModal.svelte +4 -2
  55. package/dist/components/admin/ScheduleDialog.svelte +174 -0
  56. package/dist/components/admin/ScheduleDialog.svelte.d.ts +20 -0
  57. package/dist/components/admin/ScheduleDialog.svelte.d.ts.map +1 -0
  58. package/dist/components/admin/fields/ArrayField.svelte +4 -1
  59. package/dist/components/admin/fields/ReferenceField.svelte +12 -1
  60. package/dist/components/admin/fields/ReferenceField.svelte.d.ts.map +1 -1
  61. package/dist/components/index.d.ts +1 -0
  62. package/dist/components/index.d.ts.map +1 -1
  63. package/dist/components/index.js +1 -0
  64. package/dist/components/layout/OrganizationSwitcher.svelte +3 -3
  65. package/dist/components/layout/Sidebar.svelte +26 -2
  66. package/dist/components/layout/Sidebar.svelte.d.ts +1 -0
  67. package/dist/components/layout/Sidebar.svelte.d.ts.map +1 -1
  68. package/dist/components/layout/sidebar/NavUser.svelte +5 -5
  69. package/dist/db/interfaces/agent-change-sets.d.ts +17 -0
  70. package/dist/db/interfaces/agent-change-sets.d.ts.map +1 -0
  71. package/dist/db/interfaces/agent-change-sets.js +1 -0
  72. package/dist/db/interfaces/document.d.ts +25 -3
  73. package/dist/db/interfaces/document.d.ts.map +1 -1
  74. package/dist/db/interfaces/document.js +19 -1
  75. package/dist/db/interfaces/events.d.ts +55 -0
  76. package/dist/db/interfaces/events.d.ts.map +1 -0
  77. package/dist/db/interfaces/events.js +1 -0
  78. package/dist/db/interfaces/index.d.ts +13 -2
  79. package/dist/db/interfaces/index.d.ts.map +1 -1
  80. package/dist/db/interfaces/index.js +1 -1
  81. package/dist/db/interfaces/plugin-storage.d.ts +39 -0
  82. package/dist/db/interfaces/plugin-storage.d.ts.map +1 -0
  83. package/dist/db/interfaces/plugin-storage.js +1 -0
  84. package/dist/document-refresh.svelte.d.ts +2 -0
  85. package/dist/document-refresh.svelte.d.ts.map +1 -1
  86. package/dist/document-refresh.svelte.js +15 -0
  87. package/dist/document-workspace-registry.svelte.d.ts +15 -0
  88. package/dist/document-workspace-registry.svelte.d.ts.map +1 -0
  89. package/dist/document-workspace-registry.svelte.js +30 -0
  90. package/dist/events/catalog.d.ts +8 -0
  91. package/dist/events/catalog.d.ts.map +1 -0
  92. package/dist/events/catalog.js +11 -0
  93. package/dist/events/consumer.d.ts +79 -0
  94. package/dist/events/consumer.d.ts.map +1 -0
  95. package/dist/events/consumer.js +76 -0
  96. package/dist/events/define-event.d.ts +17 -0
  97. package/dist/events/define-event.d.ts.map +1 -0
  98. package/dist/events/define-event.js +7 -0
  99. package/dist/events/emit.d.ts +11 -0
  100. package/dist/events/emit.d.ts.map +1 -0
  101. package/dist/events/emit.js +20 -0
  102. package/dist/events/index.d.ts +4 -0
  103. package/dist/events/index.d.ts.map +1 -0
  104. package/dist/events/index.js +3 -0
  105. package/dist/field-validation/rule.d.ts.map +1 -1
  106. package/dist/field-validation/rule.js +15 -0
  107. package/dist/field-validation/utils.d.ts.map +1 -1
  108. package/dist/field-validation/utils.js +211 -29
  109. package/dist/forms/define-form.d.ts +25 -0
  110. package/dist/forms/define-form.d.ts.map +1 -0
  111. package/dist/forms/define-form.js +22 -0
  112. package/dist/forms/index.d.ts +4 -0
  113. package/dist/forms/index.d.ts.map +1 -0
  114. package/dist/forms/index.js +5 -0
  115. package/dist/forms/types.d.ts +49 -0
  116. package/dist/forms/types.d.ts.map +1 -0
  117. package/dist/forms/types.js +1 -0
  118. package/dist/forms/validate.d.ts +9 -0
  119. package/dist/forms/validate.d.ts.map +1 -0
  120. package/dist/forms/validate.js +18 -0
  121. package/dist/hooks.d.ts +2 -0
  122. package/dist/hooks.d.ts.map +1 -1
  123. package/dist/hooks.js +17 -0
  124. package/dist/index.d.ts +2 -0
  125. package/dist/index.d.ts.map +1 -1
  126. package/dist/index.js +6 -0
  127. package/dist/jobs/document-jobs.d.ts +27 -0
  128. package/dist/jobs/document-jobs.d.ts.map +1 -0
  129. package/dist/jobs/document-jobs.js +42 -0
  130. package/dist/jobs/embedded-runner.d.ts +25 -0
  131. package/dist/jobs/embedded-runner.d.ts.map +1 -0
  132. package/dist/jobs/embedded-runner.js +46 -0
  133. package/dist/jobs/index.d.ts +7 -0
  134. package/dist/jobs/index.d.ts.map +1 -0
  135. package/dist/jobs/index.js +8 -0
  136. package/dist/jobs/relay.d.ts +27 -0
  137. package/dist/jobs/relay.d.ts.map +1 -0
  138. package/dist/jobs/relay.js +60 -0
  139. package/dist/jobs/run-batch.d.ts +52 -0
  140. package/dist/jobs/run-batch.d.ts.map +1 -0
  141. package/dist/jobs/run-batch.js +61 -0
  142. package/dist/jobs/run-due-jobs.d.ts +30 -0
  143. package/dist/jobs/run-due-jobs.d.ts.map +1 -0
  144. package/dist/jobs/run-due-jobs.js +69 -0
  145. package/dist/jobs/types.d.ts +18 -0
  146. package/dist/jobs/types.d.ts.map +1 -0
  147. package/dist/jobs/types.js +1 -0
  148. package/dist/lib/agent-chat-state.svelte.d.ts +38 -0
  149. package/dist/lib/agent-chat-state.svelte.d.ts.map +1 -0
  150. package/dist/lib/agent-chat-state.svelte.js +87 -0
  151. package/dist/lib/agent-chat-state.svelte.js.map +1 -0
  152. package/dist/lib/ai/content-workspace-tools.d.ts +3 -0
  153. package/dist/lib/ai/content-workspace-tools.d.ts.map +1 -0
  154. package/dist/lib/ai/content-workspace-tools.js +51 -0
  155. package/dist/lib/ai/content-workspace-tools.js.map +1 -0
  156. package/dist/lib/ai/default-system-prompt.d.ts +2 -0
  157. package/dist/lib/ai/default-system-prompt.d.ts.map +1 -0
  158. package/dist/lib/ai/default-system-prompt.js +16 -0
  159. package/dist/lib/ai/default-system-prompt.js.map +1 -0
  160. package/dist/lib/ai/index.d.ts +2 -0
  161. package/dist/lib/ai/index.d.ts.map +1 -0
  162. package/dist/lib/ai/index.js +5 -0
  163. package/dist/lib/ai/index.js.map +1 -0
  164. package/dist/lib/ai/interfaces/ai-provider.d.ts +67 -0
  165. package/dist/lib/ai/interfaces/ai-provider.d.ts.map +1 -0
  166. package/dist/lib/ai/interfaces/ai-provider.js +17 -0
  167. package/dist/lib/ai/interfaces/ai-provider.js.map +1 -0
  168. package/dist/lib/ai/run-agent-turn.d.ts +29 -0
  169. package/dist/lib/ai/run-agent-turn.d.ts.map +1 -0
  170. package/dist/lib/ai/run-agent-turn.js +167 -0
  171. package/dist/lib/ai/run-agent-turn.js.map +1 -0
  172. package/dist/lib/api/agent-chat.d.ts +27 -0
  173. package/dist/lib/api/agent-chat.d.ts.map +1 -0
  174. package/dist/lib/api/agent-chat.js +65 -0
  175. package/dist/lib/api/agent-chat.js.map +1 -0
  176. package/dist/lib/api/documents.d.ts +36 -3
  177. package/dist/lib/api/documents.d.ts.map +1 -1
  178. package/dist/lib/api/documents.js +24 -6
  179. package/dist/lib/api/documents.js.map +1 -1
  180. package/dist/lib/api/schemas/agent-chat.d.ts +45 -0
  181. package/dist/lib/api/schemas/agent-chat.d.ts.map +1 -0
  182. package/dist/lib/api/schemas/agent-chat.js +36 -0
  183. package/dist/lib/api/schemas/agent-chat.js.map +1 -0
  184. package/dist/lib/api/schemas/agent-operations.d.ts +13 -0
  185. package/dist/lib/api/schemas/agent-operations.d.ts.map +1 -0
  186. package/dist/lib/api/schemas/agent-operations.js +16 -0
  187. package/dist/lib/api/schemas/agent-operations.js.map +1 -0
  188. package/dist/lib/api/schemas/documents.d.ts +41 -0
  189. package/dist/lib/api/schemas/documents.d.ts.map +1 -1
  190. package/dist/lib/api/schemas/documents.js +38 -2
  191. package/dist/lib/api/schemas/documents.js.map +1 -1
  192. package/dist/lib/chunk-recovery.d.ts +33 -0
  193. package/dist/lib/chunk-recovery.d.ts.map +1 -0
  194. package/dist/lib/chunk-recovery.js +132 -0
  195. package/dist/lib/chunk-recovery.js.map +1 -0
  196. package/dist/lib/client/index.d.ts +1 -0
  197. package/dist/lib/client/index.d.ts.map +1 -1
  198. package/dist/lib/client/index.js +1 -0
  199. package/dist/lib/client/index.js.map +1 -1
  200. package/dist/lib/client/ui.d.ts +2 -0
  201. package/dist/lib/client/ui.d.ts.map +1 -1
  202. package/dist/lib/client/ui.js +3 -0
  203. package/dist/lib/client/ui.js.map +1 -1
  204. package/dist/lib/components/index.d.ts +1 -0
  205. package/dist/lib/components/index.d.ts.map +1 -1
  206. package/dist/lib/components/index.js +1 -0
  207. package/dist/lib/components/index.js.map +1 -1
  208. package/dist/lib/db/interfaces/agent-change-sets.d.ts +17 -0
  209. package/dist/lib/db/interfaces/agent-change-sets.d.ts.map +1 -0
  210. package/dist/lib/db/interfaces/agent-change-sets.js +2 -0
  211. package/dist/lib/db/interfaces/agent-change-sets.js.map +1 -0
  212. package/dist/lib/db/interfaces/document.d.ts +25 -3
  213. package/dist/lib/db/interfaces/document.d.ts.map +1 -1
  214. package/dist/lib/db/interfaces/document.js +19 -1
  215. package/dist/lib/db/interfaces/document.js.map +1 -1
  216. package/dist/lib/db/interfaces/events.d.ts +55 -0
  217. package/dist/lib/db/interfaces/events.d.ts.map +1 -0
  218. package/dist/lib/db/interfaces/events.js +2 -0
  219. package/dist/lib/db/interfaces/events.js.map +1 -0
  220. package/dist/lib/db/interfaces/index.d.ts +13 -2
  221. package/dist/lib/db/interfaces/index.d.ts.map +1 -1
  222. package/dist/lib/db/interfaces/index.js +1 -1
  223. package/dist/lib/db/interfaces/index.js.map +1 -1
  224. package/dist/lib/db/interfaces/plugin-storage.d.ts +39 -0
  225. package/dist/lib/db/interfaces/plugin-storage.d.ts.map +1 -0
  226. package/dist/lib/db/interfaces/plugin-storage.js +2 -0
  227. package/dist/lib/db/interfaces/plugin-storage.js.map +1 -0
  228. package/dist/lib/document-refresh.svelte.d.ts +2 -0
  229. package/dist/lib/document-refresh.svelte.d.ts.map +1 -1
  230. package/dist/lib/document-refresh.svelte.js +15 -0
  231. package/dist/lib/document-refresh.svelte.js.map +1 -1
  232. package/dist/lib/document-workspace-registry.svelte.d.ts +15 -0
  233. package/dist/lib/document-workspace-registry.svelte.d.ts.map +1 -0
  234. package/dist/lib/document-workspace-registry.svelte.js +31 -0
  235. package/dist/lib/document-workspace-registry.svelte.js.map +1 -0
  236. package/dist/lib/events/catalog.d.ts +8 -0
  237. package/dist/lib/events/catalog.d.ts.map +1 -0
  238. package/dist/lib/events/catalog.js +12 -0
  239. package/dist/lib/events/catalog.js.map +1 -0
  240. package/dist/lib/events/consumer.d.ts +79 -0
  241. package/dist/lib/events/consumer.d.ts.map +1 -0
  242. package/dist/lib/events/consumer.js +77 -0
  243. package/dist/lib/events/consumer.js.map +1 -0
  244. package/dist/lib/events/define-event.d.ts +17 -0
  245. package/dist/lib/events/define-event.d.ts.map +1 -0
  246. package/dist/lib/events/define-event.js +8 -0
  247. package/dist/lib/events/define-event.js.map +1 -0
  248. package/dist/lib/events/emit.d.ts +11 -0
  249. package/dist/lib/events/emit.d.ts.map +1 -0
  250. package/dist/lib/events/emit.js +21 -0
  251. package/dist/lib/events/emit.js.map +1 -0
  252. package/dist/lib/events/index.d.ts +4 -0
  253. package/dist/lib/events/index.d.ts.map +1 -0
  254. package/dist/lib/events/index.js +4 -0
  255. package/dist/lib/events/index.js.map +1 -0
  256. package/dist/lib/field-validation/rule.d.ts.map +1 -1
  257. package/dist/lib/field-validation/rule.js +15 -0
  258. package/dist/lib/field-validation/rule.js.map +1 -1
  259. package/dist/lib/field-validation/utils.d.ts.map +1 -1
  260. package/dist/lib/field-validation/utils.js +211 -29
  261. package/dist/lib/field-validation/utils.js.map +1 -1
  262. package/dist/lib/forms/define-form.d.ts +25 -0
  263. package/dist/lib/forms/define-form.d.ts.map +1 -0
  264. package/dist/lib/forms/define-form.js +23 -0
  265. package/dist/lib/forms/define-form.js.map +1 -0
  266. package/dist/lib/forms/index.d.ts +4 -0
  267. package/dist/lib/forms/index.d.ts.map +1 -0
  268. package/dist/lib/forms/index.js +6 -0
  269. package/dist/lib/forms/index.js.map +1 -0
  270. package/dist/lib/forms/types.d.ts +49 -0
  271. package/dist/lib/forms/types.d.ts.map +1 -0
  272. package/dist/lib/forms/types.js +2 -0
  273. package/dist/lib/forms/types.js.map +1 -0
  274. package/dist/lib/forms/validate.d.ts +9 -0
  275. package/dist/lib/forms/validate.d.ts.map +1 -0
  276. package/dist/lib/forms/validate.js +19 -0
  277. package/dist/lib/forms/validate.js.map +1 -0
  278. package/dist/lib/hooks.d.ts +2 -0
  279. package/dist/lib/hooks.d.ts.map +1 -1
  280. package/dist/lib/hooks.js +17 -0
  281. package/dist/lib/hooks.js.map +1 -1
  282. package/dist/lib/index.d.ts +2 -0
  283. package/dist/lib/index.d.ts.map +1 -1
  284. package/dist/lib/index.js +6 -0
  285. package/dist/lib/index.js.map +1 -1
  286. package/dist/lib/jobs/document-jobs.d.ts +27 -0
  287. package/dist/lib/jobs/document-jobs.d.ts.map +1 -0
  288. package/dist/lib/jobs/document-jobs.js +43 -0
  289. package/dist/lib/jobs/document-jobs.js.map +1 -0
  290. package/dist/lib/jobs/embedded-runner.d.ts +25 -0
  291. package/dist/lib/jobs/embedded-runner.d.ts.map +1 -0
  292. package/dist/lib/jobs/embedded-runner.js +47 -0
  293. package/dist/lib/jobs/embedded-runner.js.map +1 -0
  294. package/dist/lib/jobs/index.d.ts +7 -0
  295. package/dist/lib/jobs/index.d.ts.map +1 -0
  296. package/dist/lib/jobs/index.js +9 -0
  297. package/dist/lib/jobs/index.js.map +1 -0
  298. package/dist/lib/jobs/relay.d.ts +27 -0
  299. package/dist/lib/jobs/relay.d.ts.map +1 -0
  300. package/dist/lib/jobs/relay.js +61 -0
  301. package/dist/lib/jobs/relay.js.map +1 -0
  302. package/dist/lib/jobs/run-batch.d.ts +52 -0
  303. package/dist/lib/jobs/run-batch.d.ts.map +1 -0
  304. package/dist/lib/jobs/run-batch.js +62 -0
  305. package/dist/lib/jobs/run-batch.js.map +1 -0
  306. package/dist/lib/jobs/run-due-jobs.d.ts +30 -0
  307. package/dist/lib/jobs/run-due-jobs.d.ts.map +1 -0
  308. package/dist/lib/jobs/run-due-jobs.js +70 -0
  309. package/dist/lib/jobs/run-due-jobs.js.map +1 -0
  310. package/dist/lib/jobs/types.d.ts +18 -0
  311. package/dist/lib/jobs/types.d.ts.map +1 -0
  312. package/dist/lib/jobs/types.js +2 -0
  313. package/dist/lib/jobs/types.js.map +1 -0
  314. package/dist/lib/local-api/collection-api.d.ts +49 -2
  315. package/dist/lib/local-api/collection-api.d.ts.map +1 -1
  316. package/dist/lib/local-api/collection-api.js +193 -27
  317. package/dist/lib/local-api/collection-api.js.map +1 -1
  318. package/dist/lib/mcp/tools.d.ts +39 -4
  319. package/dist/lib/mcp/tools.d.ts.map +1 -1
  320. package/dist/lib/mcp/tools.js +546 -362
  321. package/dist/lib/mcp/tools.js.map +1 -1
  322. package/dist/lib/plugins/resolver.d.ts +19 -1
  323. package/dist/lib/plugins/resolver.d.ts.map +1 -1
  324. package/dist/lib/plugins/resolver.js +17 -1
  325. package/dist/lib/plugins/resolver.js.map +1 -1
  326. package/dist/lib/plugins/types.d.ts +68 -2
  327. package/dist/lib/plugins/types.d.ts.map +1 -1
  328. package/dist/lib/plugins/types.js.map +1 -1
  329. package/dist/lib/preview/stega.d.ts +2 -2
  330. package/dist/lib/preview/stega.d.ts.map +1 -1
  331. package/dist/lib/preview/stega.js +52 -29
  332. package/dist/lib/preview/stega.js.map +1 -1
  333. package/dist/lib/schema-utils/validator.d.ts.map +1 -1
  334. package/dist/lib/schema-utils/validator.js +5 -2
  335. package/dist/lib/schema-utils/validator.js.map +1 -1
  336. package/dist/lib/server/api/index.d.ts.map +1 -1
  337. package/dist/lib/server/api/index.js +16 -0
  338. package/dist/lib/server/api/index.js.map +1 -1
  339. package/dist/lib/server/api/routes/agent-change-sets.d.ts +4 -0
  340. package/dist/lib/server/api/routes/agent-change-sets.d.ts.map +1 -0
  341. package/dist/lib/server/api/routes/agent-change-sets.js +132 -0
  342. package/dist/lib/server/api/routes/agent-change-sets.js.map +1 -0
  343. package/dist/lib/server/api/routes/agent-chat.d.ts +14 -0
  344. package/dist/lib/server/api/routes/agent-chat.d.ts.map +1 -0
  345. package/dist/lib/server/api/routes/agent-chat.js +224 -0
  346. package/dist/lib/server/api/routes/agent-chat.js.map +1 -0
  347. package/dist/lib/server/api/routes/document-versions.d.ts.map +1 -1
  348. package/dist/lib/server/api/routes/document-versions.js +16 -2
  349. package/dist/lib/server/api/routes/document-versions.js.map +1 -1
  350. package/dist/lib/server/api/routes/documents-by-id.d.ts.map +1 -1
  351. package/dist/lib/server/api/routes/documents-by-id.js +11 -1
  352. package/dist/lib/server/api/routes/documents-by-id.js.map +1 -1
  353. package/dist/lib/server/api/routes/documents-publish.d.ts.map +1 -1
  354. package/dist/lib/server/api/routes/documents-publish.js +145 -2
  355. package/dist/lib/server/api/routes/documents-publish.js.map +1 -1
  356. package/dist/lib/server/api/routes/jobs.d.ts +4 -0
  357. package/dist/lib/server/api/routes/jobs.d.ts.map +1 -0
  358. package/dist/lib/server/api/routes/jobs.js +95 -0
  359. package/dist/lib/server/api/routes/jobs.js.map +1 -0
  360. package/dist/lib/server/api/routes/resolve-created-by.d.ts +13 -0
  361. package/dist/lib/server/api/routes/resolve-created-by.d.ts.map +1 -0
  362. package/dist/lib/server/api/routes/resolve-created-by.js +31 -0
  363. package/dist/lib/server/api/routes/resolve-created-by.js.map +1 -0
  364. package/dist/lib/server/api/routes/workers-run.d.ts +4 -0
  365. package/dist/lib/server/api/routes/workers-run.d.ts.map +1 -0
  366. package/dist/lib/server/api/routes/workers-run.js +41 -0
  367. package/dist/lib/server/api/routes/workers-run.js.map +1 -0
  368. package/dist/lib/server/index.d.ts +2 -0
  369. package/dist/lib/server/index.d.ts.map +1 -1
  370. package/dist/lib/server/index.js +3 -0
  371. package/dist/lib/server/index.js.map +1 -1
  372. package/dist/lib/services/version-service.d.ts +19 -3
  373. package/dist/lib/services/version-service.d.ts.map +1 -1
  374. package/dist/lib/services/version-service.js +75 -69
  375. package/dist/lib/services/version-service.js.map +1 -1
  376. package/dist/lib/type-gen.d.ts.map +1 -1
  377. package/dist/lib/type-gen.js +11 -0
  378. package/dist/lib/type-gen.js.map +1 -1
  379. package/dist/lib/types/agent-change-sets.d.ts +70 -0
  380. package/dist/lib/types/agent-change-sets.d.ts.map +1 -0
  381. package/dist/lib/types/agent-change-sets.js +7 -0
  382. package/dist/lib/types/agent-change-sets.js.map +1 -0
  383. package/dist/lib/types/agent-stream.d.ts +60 -0
  384. package/dist/lib/types/agent-stream.d.ts.map +1 -0
  385. package/dist/lib/types/agent-stream.js +12 -0
  386. package/dist/lib/types/agent-stream.js.map +1 -0
  387. package/dist/lib/types/agent-tools.d.ts +65 -0
  388. package/dist/lib/types/agent-tools.d.ts.map +1 -0
  389. package/dist/lib/types/agent-tools.js +2 -0
  390. package/dist/lib/types/agent-tools.js.map +1 -0
  391. package/dist/lib/types/config.d.ts +62 -0
  392. package/dist/lib/types/config.d.ts.map +1 -1
  393. package/dist/lib/types/document-workspace.d.ts +53 -0
  394. package/dist/lib/types/document-workspace.d.ts.map +1 -0
  395. package/dist/lib/types/document-workspace.js +15 -0
  396. package/dist/lib/types/document-workspace.js.map +1 -0
  397. package/dist/lib/types/document.d.ts +5 -0
  398. package/dist/lib/types/document.d.ts.map +1 -1
  399. package/dist/lib/types/events.d.ts +134 -0
  400. package/dist/lib/types/events.d.ts.map +1 -0
  401. package/dist/lib/types/events.js +4 -0
  402. package/dist/lib/types/events.js.map +1 -0
  403. package/dist/lib/types/index.d.ts +3 -0
  404. package/dist/lib/types/index.d.ts.map +1 -1
  405. package/dist/lib/types/index.js +3 -0
  406. package/dist/lib/types/index.js.map +1 -1
  407. package/dist/lib/types/schemas.js +1 -1
  408. package/dist/lib/types/schemas.js.map +1 -1
  409. package/dist/lib/utils/fetch-remote-file.d.ts +11 -0
  410. package/dist/lib/utils/fetch-remote-file.d.ts.map +1 -0
  411. package/dist/lib/utils/fetch-remote-file.js +169 -0
  412. package/dist/lib/utils/fetch-remote-file.js.map +1 -0
  413. package/dist/lib/utils/index.d.ts +1 -1
  414. package/dist/lib/utils/index.d.ts.map +1 -1
  415. package/dist/lib/utils/index.js.map +1 -1
  416. package/dist/local-api/collection-api.d.ts +49 -2
  417. package/dist/local-api/collection-api.d.ts.map +1 -1
  418. package/dist/local-api/collection-api.js +193 -27
  419. package/dist/mcp/tools.d.ts +39 -4
  420. package/dist/mcp/tools.d.ts.map +1 -1
  421. package/dist/mcp/tools.js +546 -362
  422. package/dist/plugins/resolver.d.ts +19 -1
  423. package/dist/plugins/resolver.d.ts.map +1 -1
  424. package/dist/plugins/resolver.js +17 -1
  425. package/dist/plugins/types.d.ts +68 -2
  426. package/dist/plugins/types.d.ts.map +1 -1
  427. package/dist/preview/stega.d.ts +2 -2
  428. package/dist/preview/stega.d.ts.map +1 -1
  429. package/dist/preview/stega.js +52 -29
  430. package/dist/schema-utils/validator.d.ts.map +1 -1
  431. package/dist/schema-utils/validator.js +5 -2
  432. package/dist/server/api/index.d.ts.map +1 -1
  433. package/dist/server/api/index.js +16 -0
  434. package/dist/server/api/routes/agent-change-sets.d.ts +4 -0
  435. package/dist/server/api/routes/agent-change-sets.d.ts.map +1 -0
  436. package/dist/server/api/routes/agent-change-sets.js +131 -0
  437. package/dist/server/api/routes/agent-chat.d.ts +14 -0
  438. package/dist/server/api/routes/agent-chat.d.ts.map +1 -0
  439. package/dist/server/api/routes/agent-chat.js +223 -0
  440. package/dist/server/api/routes/document-versions.d.ts.map +1 -1
  441. package/dist/server/api/routes/document-versions.js +16 -2
  442. package/dist/server/api/routes/documents-by-id.d.ts.map +1 -1
  443. package/dist/server/api/routes/documents-by-id.js +11 -1
  444. package/dist/server/api/routes/documents-publish.d.ts.map +1 -1
  445. package/dist/server/api/routes/documents-publish.js +145 -2
  446. package/dist/server/api/routes/jobs.d.ts +4 -0
  447. package/dist/server/api/routes/jobs.d.ts.map +1 -0
  448. package/dist/server/api/routes/jobs.js +94 -0
  449. package/dist/server/api/routes/resolve-created-by.d.ts +13 -0
  450. package/dist/server/api/routes/resolve-created-by.d.ts.map +1 -0
  451. package/dist/server/api/routes/resolve-created-by.js +30 -0
  452. package/dist/server/api/routes/workers-run.d.ts +4 -0
  453. package/dist/server/api/routes/workers-run.d.ts.map +1 -0
  454. package/dist/server/api/routes/workers-run.js +40 -0
  455. package/dist/server/index.d.ts +2 -0
  456. package/dist/server/index.d.ts.map +1 -1
  457. package/dist/server/index.js +3 -0
  458. package/dist/services/version-service.d.ts +19 -3
  459. package/dist/services/version-service.d.ts.map +1 -1
  460. package/dist/services/version-service.js +75 -69
  461. package/dist/type-gen.d.ts.map +1 -1
  462. package/dist/type-gen.js +11 -0
  463. package/dist/types/agent-change-sets.d.ts +70 -0
  464. package/dist/types/agent-change-sets.d.ts.map +1 -0
  465. package/dist/types/agent-change-sets.js +6 -0
  466. package/dist/types/agent-stream.d.ts +60 -0
  467. package/dist/types/agent-stream.d.ts.map +1 -0
  468. package/dist/types/agent-stream.js +11 -0
  469. package/dist/types/agent-tools.d.ts +65 -0
  470. package/dist/types/agent-tools.d.ts.map +1 -0
  471. package/dist/types/agent-tools.js +1 -0
  472. package/dist/types/config.d.ts +62 -0
  473. package/dist/types/config.d.ts.map +1 -1
  474. package/dist/types/document-workspace.d.ts +53 -0
  475. package/dist/types/document-workspace.d.ts.map +1 -0
  476. package/dist/types/document-workspace.js +14 -0
  477. package/dist/types/document.d.ts +5 -0
  478. package/dist/types/document.d.ts.map +1 -1
  479. package/dist/types/events.d.ts +134 -0
  480. package/dist/types/events.d.ts.map +1 -0
  481. package/dist/types/events.js +3 -0
  482. package/dist/types/index.d.ts +3 -0
  483. package/dist/types/index.d.ts.map +1 -1
  484. package/dist/types/index.js +3 -0
  485. package/dist/types/schemas.js +1 -1
  486. package/dist/utils/fetch-remote-file.d.ts +11 -0
  487. package/dist/utils/fetch-remote-file.d.ts.map +1 -0
  488. package/dist/utils/fetch-remote-file.js +168 -0
  489. package/dist/utils/index.d.ts +1 -1
  490. package/dist/utils/index.d.ts.map +1 -1
  491. package/package.json +5 -1
@@ -0,0 +1,436 @@
1
+ <script lang="ts">
2
+ // Read-only operational history for the durable spine — the queryability Sanity's old
3
+ // out-of-dataset scheduling lacked. Jobs tab = scheduled/queued work and its outcome;
4
+ // Events tab = the append-only domain-event log; Agent Changes tab = the AI assistant's
5
+ // audit/undo trail (GET /api/agent/change-sets, gated on document.read like the others —
6
+ // undo itself is the one mutation here, gated separately on document.update server-side).
7
+ import { onMount } from 'svelte';
8
+ import { Button } from '@aphexcms/ui/shadcn/button';
9
+ import { Badge } from '@aphexcms/ui/shadcn/badge';
10
+ import { RefreshCw, CalendarClock, Radio, Sparkles, Undo2, ChevronDown } from '@lucide/svelte';
11
+ import { toast } from 'svelte-sonner';
12
+ import { apiClient } from '../../api/client';
13
+ import type { Job, DomainEvent, JobStatus } from '../../types/events';
14
+ import type {
15
+ AgentChangeSet,
16
+ AgentChangeSetWithOperations,
17
+ AgentChangeSetStatus
18
+ } from '../../types/agent-change-sets';
19
+
20
+ // The server resolves `createdBy` (a raw user id) to a display name — see
21
+ // `resolve-created-by.ts`, shared by GET /api/events and GET /api/agent/change-sets.
22
+ type WithCreatedByName<T> = T & { createdByName: string | null };
23
+
24
+ type Tab = 'jobs' | 'events' | 'agent';
25
+ let tab = $state<Tab>('jobs');
26
+
27
+ let jobs = $state<Job[]>([]);
28
+ let events = $state<WithCreatedByName<DomainEvent>[]>([]);
29
+ let changeSets = $state<WithCreatedByName<AgentChangeSetWithOperations>[]>([]);
30
+ let loading = $state(false);
31
+ let error = $state<string | null>(null);
32
+ let total = $state(0);
33
+
34
+ // Agent-changes tab: which row is expanded (fetches its operations lazily), and the
35
+ // per-change-set expanded detail + undo-in-flight state.
36
+ let expandedChangeSetId = $state<string | null>(null);
37
+ let expandedDetail = $state<WithCreatedByName<AgentChangeSetWithOperations> | null>(null);
38
+ let undoingId = $state<string | null>(null);
39
+
40
+ const changeSetStatusVariant: Record<
41
+ AgentChangeSetStatus,
42
+ 'default' | 'secondary' | 'destructive'
43
+ > = {
44
+ in_progress: 'secondary',
45
+ completed: 'default',
46
+ failed: 'destructive'
47
+ };
48
+
49
+ const statuses: Array<JobStatus | 'all'> = [
50
+ 'all',
51
+ 'pending',
52
+ 'leased',
53
+ 'completed',
54
+ 'failed',
55
+ 'cancelled'
56
+ ];
57
+ let statusFilter = $state<JobStatus | 'all'>('all');
58
+
59
+ // Badge colour per status — leased/pending are in-flight, completed good, failed bad.
60
+ const statusVariant: Record<JobStatus, 'default' | 'secondary' | 'destructive' | 'outline'> = {
61
+ pending: 'secondary',
62
+ leased: 'secondary',
63
+ completed: 'default',
64
+ failed: 'destructive',
65
+ cancelled: 'outline'
66
+ };
67
+
68
+ // The row's headline: what the turn actually did, not who ran it (createdBy is secondary
69
+ // metadata, shown further along the row) — unique tool names in first-use order, e.g.
70
+ // "create_document" or "create_document, update_document". A pure Q&A turn (no operations)
71
+ // falls back to its truncated first message, since there's no action to name.
72
+ function changeSetHeadline(changeSet: AgentChangeSetWithOperations): string {
73
+ if (changeSet.operations.length === 0) {
74
+ return changeSet.summary ?? 'No document changes';
75
+ }
76
+ const seen = new Set<string>();
77
+ const names: string[] = [];
78
+ for (const op of changeSet.operations) {
79
+ if (seen.has(op.toolName)) continue;
80
+ seen.add(op.toolName);
81
+ names.push(op.toolName);
82
+ }
83
+ return names.join(', ');
84
+ }
85
+
86
+ function fmt(d: string | Date | null | undefined): string {
87
+ if (!d) return '—';
88
+ const date = typeof d === 'string' ? new Date(d) : d;
89
+ return Number.isNaN(date.getTime()) ? '—' : date.toLocaleString();
90
+ }
91
+
92
+ async function load() {
93
+ loading = true;
94
+ error = null;
95
+ try {
96
+ if (tab === 'jobs') {
97
+ const params: Record<string, string> = { limit: '100' };
98
+ if (statusFilter !== 'all') params.status = statusFilter;
99
+ const res = await apiClient.get<Job[]>('/jobs', params);
100
+ if (res.success) {
101
+ jobs = res.data ?? [];
102
+ total = res.pagination?.total ?? jobs.length;
103
+ } else {
104
+ error = res.error ?? 'Failed to load jobs';
105
+ }
106
+ } else if (tab === 'events') {
107
+ const res = await apiClient.get<WithCreatedByName<DomainEvent>[]>('/events', {
108
+ limit: '100'
109
+ });
110
+ if (res.success) {
111
+ events = res.data ?? [];
112
+ total = res.pagination?.total ?? events.length;
113
+ } else {
114
+ error = res.error ?? 'Failed to load events';
115
+ }
116
+ } else {
117
+ const res = await apiClient.get<WithCreatedByName<AgentChangeSetWithOperations>[]>(
118
+ '/agent/change-sets',
119
+ { limit: '100' }
120
+ );
121
+ if (res.success) {
122
+ changeSets = res.data ?? [];
123
+ total = res.pagination?.total ?? changeSets.length;
124
+ } else {
125
+ error = res.error ?? 'Failed to load agent changes';
126
+ }
127
+ }
128
+ } catch (err) {
129
+ error = err instanceof Error ? err.message : 'Failed to load';
130
+ } finally {
131
+ loading = false;
132
+ }
133
+ }
134
+
135
+ function switchTab(next: Tab) {
136
+ if (tab === next) return;
137
+ tab = next;
138
+ load();
139
+ }
140
+
141
+ async function toggleExpand(changeSet: AgentChangeSet) {
142
+ if (expandedChangeSetId === changeSet.id) {
143
+ expandedChangeSetId = null;
144
+ expandedDetail = null;
145
+ return;
146
+ }
147
+ expandedChangeSetId = changeSet.id;
148
+ expandedDetail = null;
149
+ const res = await apiClient.get<WithCreatedByName<AgentChangeSetWithOperations>>(
150
+ `/agent/change-sets/${changeSet.id}`
151
+ );
152
+ if (res.success && res.data) expandedDetail = res.data;
153
+ }
154
+
155
+ async function undoChangeSet(changeSet: AgentChangeSet) {
156
+ if (undoingId) return;
157
+ undoingId = changeSet.id;
158
+ try {
159
+ const res = await apiClient.post<{
160
+ results: Array<{
161
+ operationId: string;
162
+ documentId: string;
163
+ success: boolean;
164
+ error?: string;
165
+ }>;
166
+ }>(`/agent/change-sets/${changeSet.id}/undo`);
167
+ if (!res.success || !res.data) {
168
+ toast.error(res.error ?? 'Undo failed');
169
+ return;
170
+ }
171
+ const failed = res.data.results.filter((r) => !r.success);
172
+ if (failed.length === 0) {
173
+ toast.success('Undone — reverted document(s) to their prior version.');
174
+ } else {
175
+ toast.error(`${failed.length} operation(s) couldn't be undone (see console).`);
176
+ // eslint-disable-next-line no-console -- surfaced only when an undo partially fails
177
+ console.warn('[agent-changes] undo results:', failed);
178
+ }
179
+ // Refresh the expanded detail (if open) and the list so status/timestamps update.
180
+ if (expandedChangeSetId === changeSet.id) {
181
+ const detailRes = await apiClient.get<WithCreatedByName<AgentChangeSetWithOperations>>(
182
+ `/agent/change-sets/${changeSet.id}`
183
+ );
184
+ if (detailRes.success && detailRes.data) expandedDetail = detailRes.data;
185
+ }
186
+ await load();
187
+ } finally {
188
+ undoingId = null;
189
+ }
190
+ }
191
+
192
+ // Reload jobs when the status filter changes (only relevant on the jobs tab).
193
+ $effect(() => {
194
+ // eslint-disable-next-line @typescript-eslint/no-unused-expressions -- reactive dependency: re-run when statusFilter changes
195
+ statusFilter;
196
+ if (tab === 'jobs') load();
197
+ });
198
+
199
+ onMount(load);
200
+ </script>
201
+
202
+ <div class="mx-auto w-full max-w-5xl p-4 sm:p-6">
203
+ <div class="mb-4 flex items-center justify-between gap-3">
204
+ <div>
205
+ <h1 class="text-lg font-semibold">Activity</h1>
206
+ <p class="text-muted-foreground text-sm">
207
+ Scheduled jobs, the domain-event log, and the AI assistant's audit trail.
208
+ </p>
209
+ </div>
210
+ <Button variant="outline" size="sm" onclick={load} disabled={loading} class="gap-1.5">
211
+ <RefreshCw class="h-3.5 w-3.5 {loading ? 'animate-spin' : ''}" /> Refresh
212
+ </Button>
213
+ </div>
214
+
215
+ <!-- Tabs -->
216
+ <div class="border-rule mb-3 flex gap-1 border-b">
217
+ <button
218
+ class="flex items-center gap-1.5 border-b-2 px-3 py-2 text-sm transition-colors {tab ===
219
+ 'jobs'
220
+ ? 'border-primary text-foreground'
221
+ : 'text-muted-foreground hover:text-foreground border-transparent'}"
222
+ onclick={() => switchTab('jobs')}
223
+ >
224
+ <CalendarClock class="h-3.5 w-3.5" /> Jobs
225
+ </button>
226
+ <button
227
+ class="flex items-center gap-1.5 border-b-2 px-3 py-2 text-sm transition-colors {tab ===
228
+ 'events'
229
+ ? 'border-primary text-foreground'
230
+ : 'text-muted-foreground hover:text-foreground border-transparent'}"
231
+ onclick={() => switchTab('events')}
232
+ >
233
+ <Radio class="h-3.5 w-3.5" /> Events
234
+ </button>
235
+ <button
236
+ class="flex items-center gap-1.5 border-b-2 px-3 py-2 text-sm transition-colors {tab ===
237
+ 'agent'
238
+ ? 'border-primary text-foreground'
239
+ : 'text-muted-foreground hover:text-foreground border-transparent'}"
240
+ onclick={() => switchTab('agent')}
241
+ >
242
+ <Sparkles class="h-3.5 w-3.5" /> Agent Changes
243
+ </button>
244
+ </div>
245
+
246
+ {#if tab === 'jobs'}
247
+ <div class="mb-3 flex flex-wrap items-center gap-1.5">
248
+ {#each statuses as s (s)}
249
+ <button
250
+ class="rounded-full border px-2.5 py-1 text-xs capitalize transition-colors {statusFilter ===
251
+ s
252
+ ? 'bg-primary text-primary-foreground border-transparent'
253
+ : 'text-muted-foreground hover:bg-muted'}"
254
+ onclick={() => (statusFilter = s)}
255
+ >
256
+ {s}
257
+ </button>
258
+ {/each}
259
+ </div>
260
+ {/if}
261
+
262
+ {#if error}
263
+ <div
264
+ class="border-destructive/40 bg-destructive/10 text-destructive rounded-md border p-3 text-sm"
265
+ >
266
+ {error}
267
+ </div>
268
+ {:else if loading && jobs.length === 0 && events.length === 0 && changeSets.length === 0}
269
+ <div class="text-muted-foreground p-8 text-center text-sm">Loading…</div>
270
+ {:else if tab === 'jobs'}
271
+ {#if jobs.length === 0}
272
+ <div class="text-muted-foreground p-8 text-center text-sm">No jobs.</div>
273
+ {:else}
274
+ <div class="border-rule overflow-x-auto rounded-md border">
275
+ <table class="w-full text-sm">
276
+ <thead class="bg-muted/50 text-muted-foreground text-xs">
277
+ <tr>
278
+ <th class="px-3 py-2 text-left font-medium">Type</th>
279
+ <th class="px-3 py-2 text-left font-medium">Status</th>
280
+ <th class="px-3 py-2 text-left font-medium">Run at</th>
281
+ <th class="px-3 py-2 text-left font-medium">Attempts</th>
282
+ <th class="px-3 py-2 text-left font-medium">Last error</th>
283
+ <th class="px-3 py-2 text-left font-medium">Created</th>
284
+ </tr>
285
+ </thead>
286
+ <tbody>
287
+ {#each jobs as job (job.id)}
288
+ <tr class="border-rule border-t">
289
+ <td class="px-3 py-2 font-mono text-xs">{job.type}</td>
290
+ <td class="px-3 py-2">
291
+ <Badge variant={statusVariant[job.status]} class="capitalize">{job.status}</Badge>
292
+ </td>
293
+ <td class="px-3 py-2 whitespace-nowrap">{fmt(job.runAt)}</td>
294
+ <td class="px-3 py-2">{job.attempts}/{job.maxAttempts}</td>
295
+ <td
296
+ class="text-muted-foreground max-w-[220px] truncate px-3 py-2"
297
+ title={job.lastError ?? ''}
298
+ >
299
+ {job.lastError ?? '—'}
300
+ </td>
301
+ <td class="text-muted-foreground px-3 py-2 whitespace-nowrap"
302
+ >{fmt(job.createdAt)}</td
303
+ >
304
+ </tr>
305
+ {/each}
306
+ </tbody>
307
+ </table>
308
+ </div>
309
+ <p class="text-muted-foreground mt-2 text-xs">Showing {jobs.length} of {total}.</p>
310
+ {/if}
311
+ {:else if tab === 'events'}
312
+ {#if events.length === 0}
313
+ <div class="text-muted-foreground p-8 text-center text-sm">No events.</div>
314
+ {:else}
315
+ <div class="border-rule overflow-x-auto rounded-md border">
316
+ <table class="w-full text-sm">
317
+ <thead class="bg-muted/50 text-muted-foreground text-xs">
318
+ <tr>
319
+ <th class="px-3 py-2 text-left font-medium">Type</th>
320
+ <th class="px-3 py-2 text-left font-medium">Payload</th>
321
+ <th class="px-3 py-2 text-left font-medium">By</th>
322
+ <th class="px-3 py-2 text-left font-medium">When</th>
323
+ </tr>
324
+ </thead>
325
+ <tbody>
326
+ {#each events as event (event.id)}
327
+ <tr class="border-rule border-t">
328
+ <td class="px-3 py-2 font-mono text-xs">{event.type}</td>
329
+ <td
330
+ class="text-muted-foreground max-w-[320px] truncate px-3 py-2 font-mono text-xs"
331
+ title={JSON.stringify(event.payload)}
332
+ >
333
+ {JSON.stringify(event.payload)}
334
+ </td>
335
+ <td class="text-muted-foreground px-3 py-2 font-mono text-xs"
336
+ >{event.createdByName ?? event.createdBy ?? '—'}</td
337
+ >
338
+ <td class="text-muted-foreground px-3 py-2 whitespace-nowrap"
339
+ >{fmt(event.createdAt)}</td
340
+ >
341
+ </tr>
342
+ {/each}
343
+ </tbody>
344
+ </table>
345
+ </div>
346
+ <p class="text-muted-foreground mt-2 text-xs">Showing {events.length} of {total}.</p>
347
+ {/if}
348
+ {:else if changeSets.length === 0}
349
+ <div class="text-muted-foreground p-8 text-center text-sm">No agent activity yet.</div>
350
+ {:else}
351
+ <div class="flex flex-col gap-2">
352
+ {#each changeSets as changeSet (changeSet.id)}
353
+ <div class="border-rule rounded-md border">
354
+ <Button
355
+ variant="ghost"
356
+ class="h-auto w-full items-center justify-start gap-3 rounded-b-none px-3 py-2.5 text-left text-sm font-normal"
357
+ onclick={() => toggleExpand(changeSet)}
358
+ >
359
+ <ChevronDown
360
+ class="text-muted-foreground h-3.5 w-3.5 shrink-0 transition-transform {expandedChangeSetId ===
361
+ changeSet.id
362
+ ? 'rotate-180'
363
+ : ''}"
364
+ />
365
+ <span class="min-w-0 flex-1 truncate font-mono">{changeSetHeadline(changeSet)}</span>
366
+ <Badge variant={changeSetStatusVariant[changeSet.status]} class="capitalize"
367
+ >{changeSet.status.replace('_', ' ')}</Badge
368
+ >
369
+ <span class="text-muted-foreground hidden shrink-0 text-xs sm:inline"
370
+ >{changeSet.createdByName ?? changeSet.createdBy ?? 'Unknown'}</span
371
+ >
372
+ <span class="text-muted-foreground hidden shrink-0 font-mono text-xs sm:inline"
373
+ >{changeSet.provider}/{changeSet.model}</span
374
+ >
375
+ <span
376
+ class="text-muted-foreground hidden shrink-0 font-mono text-xs sm:inline"
377
+ title="{changeSet.promptTokens} input tokens, {changeSet.completionTokens} output tokens"
378
+ >{changeSet.promptTokens.toLocaleString()} in / {changeSet.completionTokens.toLocaleString()}
379
+ out</span
380
+ >
381
+ <span class="text-muted-foreground shrink-0 text-xs whitespace-nowrap"
382
+ >{fmt(changeSet.createdAt)}</span
383
+ >
384
+ </Button>
385
+
386
+ {#if expandedChangeSetId === changeSet.id}
387
+ <div class="border-rule border-t p-3">
388
+ {#if !expandedDetail}
389
+ <p class="text-muted-foreground text-xs">Loading…</p>
390
+ {:else}
391
+ {#if expandedDetail.summary}
392
+ <p class="text-muted-foreground mb-3 border-l-2 pl-2 text-xs italic">
393
+ “{expandedDetail.summary}”
394
+ </p>
395
+ {/if}
396
+ {#if expandedDetail.operations.length === 0}
397
+ <p class="text-muted-foreground text-xs">
398
+ No document changes — a read-only conversation.
399
+ </p>
400
+ {:else}
401
+ <div class="flex flex-col gap-1.5">
402
+ {#each expandedDetail.operations as op (op.id)}
403
+ <div class="flex items-center gap-2 font-mono text-xs">
404
+ <Badge variant={op.success ? 'default' : 'destructive'} class="shrink-0"
405
+ >{op.success ? 'ok' : 'error'}</Badge
406
+ >
407
+ <span>{op.toolName}</span>
408
+ <span class="text-muted-foreground">{op.collection}/{op.documentId}</span>
409
+ {#if op.error}
410
+ <span class="text-destructive truncate">{op.error}</span>
411
+ {/if}
412
+ </div>
413
+ {/each}
414
+ </div>
415
+ {#if expandedDetail.operations.some((op) => op.success && op.versionBefore !== null)}
416
+ <Button
417
+ variant="outline"
418
+ size="sm"
419
+ class="mt-3 gap-1.5"
420
+ disabled={undoingId === changeSet.id}
421
+ onclick={() => undoChangeSet(changeSet)}
422
+ >
423
+ <Undo2 class="h-3.5 w-3.5" />
424
+ {undoingId === changeSet.id ? 'Undoing…' : 'Undo this turn'}
425
+ </Button>
426
+ {/if}
427
+ {/if}
428
+ {/if}
429
+ </div>
430
+ {/if}
431
+ </div>
432
+ {/each}
433
+ </div>
434
+ <p class="text-muted-foreground mt-2 text-xs">Showing {changeSets.length} of {total}.</p>
435
+ {/if}
436
+ </div>
@@ -0,0 +1,4 @@
1
+ declare const ActivityView: import("svelte").Component<Record<string, never>, {}, "">;
2
+ type ActivityView = ReturnType<typeof ActivityView>;
3
+ export default ActivityView;
4
+ //# sourceMappingURL=ActivityView.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActivityView.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/admin/ActivityView.svelte.ts"],"names":[],"mappings":"AAoZA,QAAA,MAAM,YAAY,2DAAwC,CAAC;AAC3D,KAAK,YAAY,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;AACpD,eAAe,YAAY,CAAC"}