aimeat 1.5.0 → 1.7.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 (385) hide show
  1. package/dist/.env.example +15 -0
  2. package/dist/bin/aimeat.js +0 -0
  3. package/dist/locales/en.json +291 -8
  4. package/dist/locales/fi.json +291 -8
  5. package/dist/public/css/views/admin.css +97 -0
  6. package/dist/public/css/views/agents-detail.css +563 -0
  7. package/dist/public/css/views/foundry.css +1 -0
  8. package/dist/public/css/views/marketplace.css +1 -0
  9. package/dist/public/css/views/profile.css +2 -0
  10. package/dist/public/js/services/admin.js +20 -1
  11. package/dist/public/js/services/agent-activity.js +20 -0
  12. package/dist/public/js/services/agent-capabilities.js +15 -0
  13. package/dist/public/js/services/agent-directives.js +28 -0
  14. package/dist/public/js/services/agent-messages.js +34 -0
  15. package/dist/public/js/services/agent-services.js +17 -0
  16. package/dist/public/js/services/agent-tasks.js +46 -0
  17. package/dist/public/js/services/memory.js +6 -3
  18. package/dist/public/js/services/sharing-groups.js +51 -0
  19. package/dist/public/spa.html +21 -2
  20. package/dist/public/views/admin/agent-tasks-tab.js +156 -0
  21. package/dist/public/views/admin/federation-tab.js +60 -0
  22. package/dist/public/views/admin/memory-tab.js +1 -0
  23. package/dist/public/views/admin/overview-tab.js +25 -0
  24. package/dist/public/views/admin/sharing-groups-tab.js +86 -0
  25. package/dist/public/views/admin/stats-tab.js +480 -187
  26. package/dist/public/views/admin.js +4 -0
  27. package/dist/public/views/profile/access-tab.js +511 -5
  28. package/dist/public/views/profile/agents-activity-subtab.js +242 -0
  29. package/dist/public/views/profile/agents-capabilities-subtab.js +165 -0
  30. package/dist/public/views/profile/agents-directives-subtab.js +292 -0
  31. package/dist/public/views/profile/agents-messages-subtab.js +222 -0
  32. package/dist/public/views/profile/agents-services-subtab.js +111 -0
  33. package/dist/public/views/profile/agents-tab.js +94 -47
  34. package/dist/public/views/profile/agents-tasks-subtab.js +254 -0
  35. package/dist/public/views/profile/knowledge-tab.js +5 -5
  36. package/dist/public/views/profile/memory-tab.js +90 -25
  37. package/dist/src/auth/node-keys.d.ts.map +1 -1
  38. package/dist/src/auth/node-keys.js +3 -0
  39. package/dist/src/auth/node-keys.js.map +1 -1
  40. package/dist/src/config.d.ts +18 -0
  41. package/dist/src/config.d.ts.map +1 -1
  42. package/dist/src/config.js +23 -2
  43. package/dist/src/config.js.map +1 -1
  44. package/dist/src/index.js +41 -2
  45. package/dist/src/index.js.map +1 -1
  46. package/dist/src/mcp/agent-capabilities.d.ts +18 -0
  47. package/dist/src/mcp/agent-capabilities.d.ts.map +1 -0
  48. package/dist/src/mcp/agent-capabilities.js +85 -0
  49. package/dist/src/mcp/agent-capabilities.js.map +1 -0
  50. package/dist/src/mcp/agent-messages.d.ts +15 -0
  51. package/dist/src/mcp/agent-messages.d.ts.map +1 -0
  52. package/dist/src/mcp/agent-messages.js +81 -0
  53. package/dist/src/mcp/agent-messages.js.map +1 -0
  54. package/dist/src/mcp/agent-tasks.d.ts +16 -0
  55. package/dist/src/mcp/agent-tasks.d.ts.map +1 -0
  56. package/dist/src/mcp/agent-tasks.js +350 -0
  57. package/dist/src/mcp/agent-tasks.js.map +1 -0
  58. package/dist/src/mcp/core.d.ts.map +1 -1
  59. package/dist/src/mcp/core.js +8 -4
  60. package/dist/src/mcp/core.js.map +1 -1
  61. package/dist/src/mcp/extensions.js +1 -1
  62. package/dist/src/mcp/extensions.js.map +1 -1
  63. package/dist/src/mcp/index.d.ts.map +1 -1
  64. package/dist/src/mcp/index.js +8 -0
  65. package/dist/src/mcp/index.js.map +1 -1
  66. package/dist/src/mcp/memory-extended.js +1 -1
  67. package/dist/src/mcp/memory-extended.js.map +1 -1
  68. package/dist/src/mcp/sharing-groups.d.ts +16 -0
  69. package/dist/src/mcp/sharing-groups.d.ts.map +1 -0
  70. package/dist/src/mcp/sharing-groups.js +240 -0
  71. package/dist/src/mcp/sharing-groups.js.map +1 -0
  72. package/dist/src/middleware/rate-limit.d.ts.map +1 -1
  73. package/dist/src/middleware/rate-limit.js +4 -1
  74. package/dist/src/middleware/rate-limit.js.map +1 -1
  75. package/dist/src/models/agent-capabilities-schemas.d.ts +20 -0
  76. package/dist/src/models/agent-capabilities-schemas.d.ts.map +1 -0
  77. package/dist/src/models/agent-capabilities-schemas.js +16 -0
  78. package/dist/src/models/agent-capabilities-schemas.js.map +1 -0
  79. package/dist/src/models/agent-directives-schemas.d.ts +44 -0
  80. package/dist/src/models/agent-directives-schemas.d.ts.map +1 -0
  81. package/dist/src/models/agent-directives-schemas.js +41 -0
  82. package/dist/src/models/agent-directives-schemas.js.map +1 -0
  83. package/dist/src/models/agent-message-schemas.d.ts +32 -0
  84. package/dist/src/models/agent-message-schemas.d.ts.map +1 -0
  85. package/dist/src/models/agent-message-schemas.js +25 -0
  86. package/dist/src/models/agent-message-schemas.js.map +1 -0
  87. package/dist/src/models/agent-task-schemas.d.ts +133 -0
  88. package/dist/src/models/agent-task-schemas.d.ts.map +1 -0
  89. package/dist/src/models/agent-task-schemas.js +84 -0
  90. package/dist/src/models/agent-task-schemas.js.map +1 -0
  91. package/dist/src/models/schemas.d.ts +50 -0
  92. package/dist/src/models/schemas.d.ts.map +1 -1
  93. package/dist/src/models/schemas.js +42 -4
  94. package/dist/src/models/schemas.js.map +1 -1
  95. package/dist/src/models/sharing-group-schemas.d.ts +52 -0
  96. package/dist/src/models/sharing-group-schemas.d.ts.map +1 -0
  97. package/dist/src/models/sharing-group-schemas.js +46 -0
  98. package/dist/src/models/sharing-group-schemas.js.map +1 -0
  99. package/dist/src/routes/actions.d.ts.map +1 -1
  100. package/dist/src/routes/actions.js +1 -0
  101. package/dist/src/routes/actions.js.map +1 -1
  102. package/dist/src/routes/admin-agent-tasks.d.ts +12 -0
  103. package/dist/src/routes/admin-agent-tasks.d.ts.map +1 -0
  104. package/dist/src/routes/admin-agent-tasks.js +62 -0
  105. package/dist/src/routes/admin-agent-tasks.js.map +1 -0
  106. package/dist/src/routes/admin-monitoring.d.ts +2 -1
  107. package/dist/src/routes/admin-monitoring.d.ts.map +1 -1
  108. package/dist/src/routes/admin-monitoring.js +82 -2
  109. package/dist/src/routes/admin-monitoring.js.map +1 -1
  110. package/dist/src/routes/admin-sharing-groups.d.ts +12 -0
  111. package/dist/src/routes/admin-sharing-groups.d.ts.map +1 -0
  112. package/dist/src/routes/admin-sharing-groups.js +37 -0
  113. package/dist/src/routes/admin-sharing-groups.js.map +1 -0
  114. package/dist/src/routes/admin.d.ts +1 -1
  115. package/dist/src/routes/admin.d.ts.map +1 -1
  116. package/dist/src/routes/admin.js +35 -17
  117. package/dist/src/routes/admin.js.map +1 -1
  118. package/dist/src/routes/agent-activity.d.ts +17 -0
  119. package/dist/src/routes/agent-activity.d.ts.map +1 -0
  120. package/dist/src/routes/agent-activity.js +130 -0
  121. package/dist/src/routes/agent-activity.js.map +1 -0
  122. package/dist/src/routes/agent-capabilities.d.ts +17 -0
  123. package/dist/src/routes/agent-capabilities.d.ts.map +1 -0
  124. package/dist/src/routes/agent-capabilities.js +106 -0
  125. package/dist/src/routes/agent-capabilities.js.map +1 -0
  126. package/dist/src/routes/agent-directives.d.ts +17 -0
  127. package/dist/src/routes/agent-directives.d.ts.map +1 -0
  128. package/dist/src/routes/agent-directives.js +206 -0
  129. package/dist/src/routes/agent-directives.js.map +1 -0
  130. package/dist/src/routes/agent-integration.d.ts +17 -0
  131. package/dist/src/routes/agent-integration.d.ts.map +1 -0
  132. package/dist/src/routes/agent-integration.js +169 -0
  133. package/dist/src/routes/agent-integration.js.map +1 -0
  134. package/dist/src/routes/agent-messages.d.ts +17 -0
  135. package/dist/src/routes/agent-messages.d.ts.map +1 -0
  136. package/dist/src/routes/agent-messages.js +168 -0
  137. package/dist/src/routes/agent-messages.js.map +1 -0
  138. package/dist/src/routes/agent-tasks.d.ts +24 -0
  139. package/dist/src/routes/agent-tasks.d.ts.map +1 -0
  140. package/dist/src/routes/agent-tasks.js +425 -0
  141. package/dist/src/routes/agent-tasks.js.map +1 -0
  142. package/dist/src/routes/agents.js +2 -2
  143. package/dist/src/routes/agents.js.map +1 -1
  144. package/dist/src/routes/apps.d.ts.map +1 -1
  145. package/dist/src/routes/apps.js +5 -1
  146. package/dist/src/routes/apps.js.map +1 -1
  147. package/dist/src/routes/auth.d.ts.map +1 -1
  148. package/dist/src/routes/auth.js +19 -1
  149. package/dist/src/routes/auth.js.map +1 -1
  150. package/dist/src/routes/boards.js +2 -2
  151. package/dist/src/routes/boards.js.map +1 -1
  152. package/dist/src/routes/capabilities.js +4 -4
  153. package/dist/src/routes/capabilities.js.map +1 -1
  154. package/dist/src/routes/consent.d.ts.map +1 -1
  155. package/dist/src/routes/consent.js +2 -1
  156. package/dist/src/routes/consent.js.map +1 -1
  157. package/dist/src/routes/cortex.d.ts.map +1 -1
  158. package/dist/src/routes/cortex.js +1 -2
  159. package/dist/src/routes/cortex.js.map +1 -1
  160. package/dist/src/routes/disputes.js +4 -4
  161. package/dist/src/routes/disputes.js.map +1 -1
  162. package/dist/src/routes/extensions.d.ts.map +1 -1
  163. package/dist/src/routes/extensions.js +73 -23
  164. package/dist/src/routes/extensions.js.map +1 -1
  165. package/dist/src/routes/federation-auth.d.ts.map +1 -1
  166. package/dist/src/routes/federation-auth.js +2 -62
  167. package/dist/src/routes/federation-auth.js.map +1 -1
  168. package/dist/src/routes/federation-peer.d.ts.map +1 -1
  169. package/dist/src/routes/federation-peer.js +13 -1
  170. package/dist/src/routes/federation-peer.js.map +1 -1
  171. package/dist/src/routes/flags.d.ts.map +1 -1
  172. package/dist/src/routes/flags.js +2 -1
  173. package/dist/src/routes/flags.js.map +1 -1
  174. package/dist/src/routes/foundry.d.ts.map +1 -1
  175. package/dist/src/routes/foundry.js +2 -2
  176. package/dist/src/routes/foundry.js.map +1 -1
  177. package/dist/src/routes/generator.d.ts.map +1 -1
  178. package/dist/src/routes/generator.js +35 -7
  179. package/dist/src/routes/generator.js.map +1 -1
  180. package/dist/src/routes/ghii.d.ts.map +1 -1
  181. package/dist/src/routes/ghii.js +67 -31
  182. package/dist/src/routes/ghii.js.map +1 -1
  183. package/dist/src/routes/knowledge.d.ts.map +1 -1
  184. package/dist/src/routes/knowledge.js +4 -3
  185. package/dist/src/routes/knowledge.js.map +1 -1
  186. package/dist/src/routes/memory.d.ts.map +1 -1
  187. package/dist/src/routes/memory.js +10 -4
  188. package/dist/src/routes/memory.js.map +1 -1
  189. package/dist/src/routes/owners.d.ts.map +1 -1
  190. package/dist/src/routes/owners.js +104 -8
  191. package/dist/src/routes/owners.js.map +1 -1
  192. package/dist/src/routes/packages.js +1 -1
  193. package/dist/src/routes/packages.js.map +1 -1
  194. package/dist/src/routes/permissions.js +1 -1
  195. package/dist/src/routes/permissions.js.map +1 -1
  196. package/dist/src/routes/prompts.d.ts +9 -0
  197. package/dist/src/routes/prompts.d.ts.map +1 -1
  198. package/dist/src/routes/prompts.js +57 -1
  199. package/dist/src/routes/prompts.js.map +1 -1
  200. package/dist/src/routes/sharing-groups.d.ts +20 -0
  201. package/dist/src/routes/sharing-groups.d.ts.map +1 -0
  202. package/dist/src/routes/sharing-groups.js +297 -0
  203. package/dist/src/routes/sharing-groups.js.map +1 -0
  204. package/dist/src/routes/stats.d.ts +14 -0
  205. package/dist/src/routes/stats.d.ts.map +1 -1
  206. package/dist/src/routes/stats.js +79 -4
  207. package/dist/src/routes/stats.js.map +1 -1
  208. package/dist/src/routes/storage-files.d.ts.map +1 -1
  209. package/dist/src/routes/storage-files.js +8 -1
  210. package/dist/src/routes/storage-files.js.map +1 -1
  211. package/dist/src/routes/upload.js +2 -2
  212. package/dist/src/routes/upload.js.map +1 -1
  213. package/dist/src/routes/wallet.d.ts.map +1 -1
  214. package/dist/src/routes/wallet.js +2 -1
  215. package/dist/src/routes/wallet.js.map +1 -1
  216. package/dist/src/routes/work.d.ts.map +1 -1
  217. package/dist/src/routes/work.js +5 -1
  218. package/dist/src/routes/work.js.map +1 -1
  219. package/dist/src/schemas/knowledge-package.js +1 -1
  220. package/dist/src/schemas/knowledge-package.js.map +1 -1
  221. package/dist/src/server-bootstrap/routes-loader.d.ts +1 -1
  222. package/dist/src/server-bootstrap/routes-loader.d.ts.map +1 -1
  223. package/dist/src/server-bootstrap/routes-loader.js +24 -4
  224. package/dist/src/server-bootstrap/routes-loader.js.map +1 -1
  225. package/dist/src/server-bootstrap/service-init.d.ts.map +1 -1
  226. package/dist/src/server-bootstrap/service-init.js +2 -0
  227. package/dist/src/server-bootstrap/service-init.js.map +1 -1
  228. package/dist/src/server-bootstrap/static-files.d.ts.map +1 -1
  229. package/dist/src/server-bootstrap/static-files.js +10 -7
  230. package/dist/src/server-bootstrap/static-files.js.map +1 -1
  231. package/dist/src/server.d.ts.map +1 -1
  232. package/dist/src/server.js +4 -2
  233. package/dist/src/server.js.map +1 -1
  234. package/dist/src/services/activity-recorder.d.ts +16 -0
  235. package/dist/src/services/activity-recorder.d.ts.map +1 -0
  236. package/dist/src/services/activity-recorder.js +59 -0
  237. package/dist/src/services/activity-recorder.js.map +1 -0
  238. package/dist/src/services/capability-invoke.d.ts.map +1 -1
  239. package/dist/src/services/capability-invoke.js +5 -18
  240. package/dist/src/services/capability-invoke.js.map +1 -1
  241. package/dist/src/services/config-schema.d.ts.map +1 -1
  242. package/dist/src/services/config-schema.js +18 -0
  243. package/dist/src/services/config-schema.js.map +1 -1
  244. package/dist/src/services/consent.d.ts +1 -1
  245. package/dist/src/services/consent.d.ts.map +1 -1
  246. package/dist/src/services/consent.js +29 -11
  247. package/dist/src/services/consent.js.map +1 -1
  248. package/dist/src/services/core-jobs.d.ts.map +1 -1
  249. package/dist/src/services/core-jobs.js +5 -0
  250. package/dist/src/services/core-jobs.js.map +1 -1
  251. package/dist/src/services/directory.d.ts.map +1 -1
  252. package/dist/src/services/directory.js +10 -4
  253. package/dist/src/services/directory.js.map +1 -1
  254. package/dist/src/services/email.d.ts +17 -4
  255. package/dist/src/services/email.d.ts.map +1 -1
  256. package/dist/src/services/email.js +30 -12
  257. package/dist/src/services/email.js.map +1 -1
  258. package/dist/src/services/extension-runtime.d.ts.map +1 -1
  259. package/dist/src/services/extension-runtime.js +5 -0
  260. package/dist/src/services/extension-runtime.js.map +1 -1
  261. package/dist/src/services/federation.d.ts +2 -0
  262. package/dist/src/services/federation.d.ts.map +1 -1
  263. package/dist/src/services/federation.js.map +1 -1
  264. package/dist/src/services/job-seeding.d.ts.map +1 -1
  265. package/dist/src/services/job-seeding.js +2 -0
  266. package/dist/src/services/job-seeding.js.map +1 -1
  267. package/dist/src/services/mailbox-notification.d.ts +17 -0
  268. package/dist/src/services/mailbox-notification.d.ts.map +1 -1
  269. package/dist/src/services/mailbox-notification.js +25 -0
  270. package/dist/src/services/mailbox-notification.js.map +1 -1
  271. package/dist/src/services/morsel.d.ts.map +1 -1
  272. package/dist/src/services/morsel.js +10 -9
  273. package/dist/src/services/morsel.js.map +1 -1
  274. package/dist/src/services/password.d.ts +1 -6
  275. package/dist/src/services/password.d.ts.map +1 -1
  276. package/dist/src/services/password.js +19 -10
  277. package/dist/src/services/password.js.map +1 -1
  278. package/dist/src/services/push.d.ts +16 -0
  279. package/dist/src/services/push.d.ts.map +1 -1
  280. package/dist/src/services/push.js +20 -0
  281. package/dist/src/services/push.js.map +1 -1
  282. package/dist/src/services/quota.d.ts.map +1 -1
  283. package/dist/src/services/quota.js +2 -1
  284. package/dist/src/services/quota.js.map +1 -1
  285. package/dist/src/services/scheduler.d.ts.map +1 -1
  286. package/dist/src/services/scheduler.js +17 -1
  287. package/dist/src/services/scheduler.js.map +1 -1
  288. package/dist/src/services/stats.d.ts +43 -2
  289. package/dist/src/services/stats.d.ts.map +1 -1
  290. package/dist/src/services/stats.js +177 -1
  291. package/dist/src/services/stats.js.map +1 -1
  292. package/dist/src/services/task-stall-detector.d.ts +10 -0
  293. package/dist/src/services/task-stall-detector.d.ts.map +1 -0
  294. package/dist/src/services/task-stall-detector.js +38 -0
  295. package/dist/src/services/task-stall-detector.js.map +1 -0
  296. package/dist/src/services/totp.js +2 -2
  297. package/dist/src/services/work-task-bridge.d.ts +10 -0
  298. package/dist/src/services/work-task-bridge.d.ts.map +1 -0
  299. package/dist/src/services/work-task-bridge.js +53 -0
  300. package/dist/src/services/work-task-bridge.js.map +1 -0
  301. package/dist/src/storage/interface.d.ts +175 -5
  302. package/dist/src/storage/interface.d.ts.map +1 -1
  303. package/dist/src/storage/providers/mongodb/index.d.ts +105 -2
  304. package/dist/src/storage/providers/mongodb/index.d.ts.map +1 -1
  305. package/dist/src/storage/providers/mongodb/index.js +738 -8
  306. package/dist/src/storage/providers/mongodb/index.js.map +1 -1
  307. package/dist/src/storage/providers/sqlite/index.d.ts +83 -1
  308. package/dist/src/storage/providers/sqlite/index.d.ts.map +1 -1
  309. package/dist/src/storage/providers/sqlite/index.js +204 -5
  310. package/dist/src/storage/providers/sqlite/index.js.map +1 -1
  311. package/dist/src/storage/providers/sqlite/repos/agent-activity.d.ts +14 -0
  312. package/dist/src/storage/providers/sqlite/repos/agent-activity.d.ts.map +1 -0
  313. package/dist/src/storage/providers/sqlite/repos/agent-activity.js +44 -0
  314. package/dist/src/storage/providers/sqlite/repos/agent-activity.js.map +1 -0
  315. package/dist/src/storage/providers/sqlite/repos/agent-directives.d.ts +14 -0
  316. package/dist/src/storage/providers/sqlite/repos/agent-directives.d.ts.map +1 -0
  317. package/dist/src/storage/providers/sqlite/repos/agent-directives.js +65 -0
  318. package/dist/src/storage/providers/sqlite/repos/agent-directives.js.map +1 -0
  319. package/dist/src/storage/providers/sqlite/repos/agent-message.d.ts +28 -0
  320. package/dist/src/storage/providers/sqlite/repos/agent-message.d.ts.map +1 -0
  321. package/dist/src/storage/providers/sqlite/repos/agent-message.js +93 -0
  322. package/dist/src/storage/providers/sqlite/repos/agent-message.js.map +1 -0
  323. package/dist/src/storage/providers/sqlite/repos/agent-task.d.ts +45 -0
  324. package/dist/src/storage/providers/sqlite/repos/agent-task.d.ts.map +1 -0
  325. package/dist/src/storage/providers/sqlite/repos/agent-task.js +155 -0
  326. package/dist/src/storage/providers/sqlite/repos/agent-task.js.map +1 -0
  327. package/dist/src/storage/providers/sqlite/repos/consent.d.ts +1 -0
  328. package/dist/src/storage/providers/sqlite/repos/consent.d.ts.map +1 -1
  329. package/dist/src/storage/providers/sqlite/repos/consent.js +4 -0
  330. package/dist/src/storage/providers/sqlite/repos/consent.js.map +1 -1
  331. package/dist/src/storage/providers/sqlite/repos/sharing-group.d.ts +16 -0
  332. package/dist/src/storage/providers/sqlite/repos/sharing-group.d.ts.map +1 -0
  333. package/dist/src/storage/providers/sqlite/repos/sharing-group.js +68 -0
  334. package/dist/src/storage/providers/sqlite/repos/sharing-group.js.map +1 -0
  335. package/dist/src/storage/providers/sqlite/schema.d.ts.map +1 -1
  336. package/dist/src/storage/providers/sqlite/schema.js +121 -0
  337. package/dist/src/storage/providers/sqlite/schema.js.map +1 -1
  338. package/dist/src/storage/repositories/agent-activity.repository.d.ts +15 -0
  339. package/dist/src/storage/repositories/agent-activity.repository.d.ts.map +1 -0
  340. package/dist/src/storage/repositories/agent-activity.repository.js +8 -0
  341. package/dist/src/storage/repositories/agent-activity.repository.js.map +1 -0
  342. package/dist/src/storage/repositories/agent-directives.repository.d.ts +15 -0
  343. package/dist/src/storage/repositories/agent-directives.repository.d.ts.map +1 -0
  344. package/dist/src/storage/repositories/agent-directives.repository.js +8 -0
  345. package/dist/src/storage/repositories/agent-directives.repository.js.map +1 -0
  346. package/dist/src/storage/repositories/agent-message.repository.d.ts +29 -0
  347. package/dist/src/storage/repositories/agent-message.repository.d.ts.map +1 -0
  348. package/dist/src/storage/repositories/agent-message.repository.js +8 -0
  349. package/dist/src/storage/repositories/agent-message.repository.js.map +1 -0
  350. package/dist/src/storage/repositories/agent-task.repository.d.ts +46 -0
  351. package/dist/src/storage/repositories/agent-task.repository.d.ts.map +1 -0
  352. package/dist/src/storage/repositories/agent-task.repository.js +8 -0
  353. package/dist/src/storage/repositories/agent-task.repository.js.map +1 -0
  354. package/dist/src/storage/repositories/consent.repository.d.ts +1 -0
  355. package/dist/src/storage/repositories/consent.repository.d.ts.map +1 -1
  356. package/dist/src/storage/repositories/device-auth.repository.d.ts +1 -0
  357. package/dist/src/storage/repositories/device-auth.repository.d.ts.map +1 -1
  358. package/dist/src/storage/repositories/extension-instance.repository.d.ts +1 -0
  359. package/dist/src/storage/repositories/extension-instance.repository.d.ts.map +1 -1
  360. package/dist/src/storage/repositories/index.d.ts +6 -0
  361. package/dist/src/storage/repositories/index.d.ts.map +1 -1
  362. package/dist/src/storage/repositories/knowledge.repository.d.ts +2 -0
  363. package/dist/src/storage/repositories/knowledge.repository.d.ts.map +1 -1
  364. package/dist/src/storage/repositories/moderation.repository.d.ts +1 -0
  365. package/dist/src/storage/repositories/moderation.repository.d.ts.map +1 -1
  366. package/dist/src/storage/repositories/sharing-group.repository.d.ts +17 -0
  367. package/dist/src/storage/repositories/sharing-group.repository.d.ts.map +1 -0
  368. package/dist/src/storage/repositories/sharing-group.repository.js +8 -0
  369. package/dist/src/storage/repositories/sharing-group.repository.js.map +1 -0
  370. package/dist/src/storage/repositories/stats.repository.d.ts +12 -0
  371. package/dist/src/storage/repositories/stats.repository.d.ts.map +1 -0
  372. package/dist/src/storage/repositories/stats.repository.js +7 -0
  373. package/dist/src/storage/repositories/stats.repository.js.map +1 -0
  374. package/dist/src/storage/storage-factory.js +1 -0
  375. package/dist/src/storage/storage-factory.js.map +1 -1
  376. package/dist/src/utils/password-validation.d.ts +8 -0
  377. package/dist/src/utils/password-validation.d.ts.map +1 -0
  378. package/dist/src/utils/password-validation.js +25 -0
  379. package/dist/src/utils/password-validation.js.map +1 -0
  380. package/dist/src/utils/service-summary.d.ts +6 -1
  381. package/dist/src/utils/service-summary.d.ts.map +1 -1
  382. package/dist/src/utils/service-summary.js +6 -1
  383. package/dist/src/utils/service-summary.js.map +1 -1
  384. package/package.json +97 -77
  385. package/prisma/schema.prisma +128 -10
@@ -0,0 +1,563 @@
1
+ /**
2
+ * @file agents-detail.css
3
+ * @description Styles for agent detail view sub-tabs (tasks, directives).
4
+ * Uses agd- prefix to avoid collisions with other profile styles.
5
+ * All colors use CSS variables from theme.css.
6
+ * @version-history
7
+ * v1.0.0 -- 2026-05-21 -- Initial creation for Agent Dashboard Phase 1
8
+ * v1.1.0 -- 2026-05-22 -- Add capability badge styles for Capabilities sub-tab
9
+ * v1.2.0 -- 2026-05-22 -- Add Activity sub-tab styles (stats cards, chart, jobs, event log)
10
+ * v1.3.0 -- 2026-05-22 -- Add Services and Messages sub-tab styles
11
+ */
12
+
13
+ /* Sub-tab bar */
14
+ .pf .agd-subtab-bar {
15
+ display: flex;
16
+ gap: 0.25rem;
17
+ border-bottom: 1px solid var(--border, #E5E7EB);
18
+ margin-top: 1rem;
19
+ padding-bottom: 0;
20
+ }
21
+ .pf .agd-subtab {
22
+ padding: 0.35rem 1rem;
23
+ background: none;
24
+ border: none;
25
+ border-bottom: 2px solid transparent;
26
+ color: var(--text-dim, #6B7280);
27
+ cursor: pointer;
28
+ font-size: 0.875rem;
29
+ transition: color 0.15s, border-color 0.15s;
30
+ }
31
+ .pf .agd-subtab:hover { color: var(--text, #1A1A2E); }
32
+ .pf .agd-subtab-active {
33
+ color: var(--accent, #E8564A);
34
+ border-bottom-color: var(--accent, #E8564A);
35
+ font-weight: 600;
36
+ }
37
+
38
+ /* Sub-tab content area */
39
+ .pf .agd-subtab-content {
40
+ padding: 1rem 0 0.5rem;
41
+ min-height: 120px;
42
+ }
43
+
44
+ /* Section headers inside sub-tabs */
45
+ .pf .agd-section-header {
46
+ display: flex;
47
+ align-items: center;
48
+ justify-content: space-between;
49
+ margin-bottom: 0.5rem;
50
+ }
51
+ .pf .agd-section-title {
52
+ font-size: 0.8rem;
53
+ font-weight: 600;
54
+ color: var(--text-dim, #6B7280);
55
+ text-transform: uppercase;
56
+ letter-spacing: 0.5px;
57
+ }
58
+
59
+ /* Task list items */
60
+ .pf .agd-task-item {
61
+ display: flex;
62
+ align-items: center;
63
+ justify-content: space-between;
64
+ padding: 0.5rem 0.75rem;
65
+ border: 1px solid var(--border, #E5E7EB);
66
+ border-radius: var(--radius-xs, 6px);
67
+ margin-bottom: 0.35rem;
68
+ background: var(--card-bg, #FFFFFF);
69
+ cursor: pointer;
70
+ transition: background 0.15s;
71
+ }
72
+ .pf .agd-task-item:hover { background: var(--card-bg-alt, #F3F4F6); }
73
+ .pf .agd-task-title { font-weight: 500; flex: 1; font-size: 0.85rem; }
74
+ .pf .agd-task-meta { display: flex; gap: 0.5rem; align-items: center; flex-shrink: 0; }
75
+ .pf .agd-task-time { font-size: 0.75rem; color: var(--text-dim, #6B7280); }
76
+
77
+ /* Status badges */
78
+ .pf .agd-status {
79
+ font-size: 0.7rem;
80
+ padding: 2px 8px;
81
+ border-radius: 12px;
82
+ font-weight: 500;
83
+ white-space: nowrap;
84
+ }
85
+ .pf .agd-status-draft { background: var(--card-bg-alt, #F3F4F6); color: var(--text-dim, #6B7280); }
86
+ .pf .agd-status-queued { background: rgba(217, 119, 6, 0.1); color: #d97706; }
87
+ .pf .agd-status-active { background: rgba(37, 99, 235, 0.1); color: #2563eb; }
88
+ .pf .agd-status-done { background: rgba(16, 185, 129, 0.1); color: var(--success, #10b981); }
89
+ .pf .agd-status-failed { background: rgba(239, 68, 68, 0.1); color: var(--danger, #ef4444); }
90
+ .pf .agd-status-stalled { background: rgba(239, 68, 68, 0.1); color: #d97706; }
91
+
92
+ /* Task creation form */
93
+ .pf .agd-create-form {
94
+ padding: 0.75rem;
95
+ border: 1px solid var(--border, #E5E7EB);
96
+ border-radius: var(--radius-xs, 6px);
97
+ margin-top: 0.5rem;
98
+ background: var(--card-bg, #FFFFFF);
99
+ }
100
+ .pf .agd-form-field { margin-bottom: 0.65rem; }
101
+ .pf .agd-form-field label {
102
+ display: block;
103
+ font-size: 0.8rem;
104
+ font-weight: 600;
105
+ margin-bottom: 0.25rem;
106
+ color: var(--text-dim, #6B7280);
107
+ }
108
+ .pf .agd-form-field input,
109
+ .pf .agd-form-field textarea,
110
+ .pf .agd-form-field select {
111
+ width: 100%;
112
+ padding: 0.35rem 0.5rem;
113
+ border: 1px solid var(--border, #E5E7EB);
114
+ border-radius: var(--radius-xs, 6px);
115
+ background: var(--card-bg, #FFFFFF);
116
+ color: var(--text, #1A1A2E);
117
+ font-size: 0.85rem;
118
+ font-family: inherit;
119
+ box-sizing: border-box;
120
+ }
121
+ .pf .agd-form-field input:focus,
122
+ .pf .agd-form-field textarea:focus,
123
+ .pf .agd-form-field select:focus {
124
+ outline: none;
125
+ border-color: var(--accent, #E8564A);
126
+ }
127
+ .pf .agd-form-field textarea { min-height: 70px; resize: vertical; }
128
+ .pf .agd-form-actions { display: flex; gap: 0.5rem; margin-top: 0.75rem; }
129
+
130
+ /* Task expanded detail / event log */
131
+ .pf .agd-task-expanded {
132
+ padding: 0.5rem 0.75rem;
133
+ border: 1px solid var(--border, #E5E7EB);
134
+ border-top: none;
135
+ border-radius: 0 0 var(--radius-xs, 6px) var(--radius-xs, 6px);
136
+ margin-top: -0.35rem;
137
+ margin-bottom: 0.35rem;
138
+ background: var(--card-bg-alt, #F3F4F6);
139
+ font-size: 0.85rem;
140
+ }
141
+ .pf .agd-task-desc { color: var(--text-dim, #6B7280); margin-bottom: 0.5rem; line-height: 1.4; }
142
+ .pf .agd-task-actions { display: flex; gap: 0.5rem; margin-top: 0.5rem; }
143
+
144
+ .pf .agd-event-log { max-height: 200px; overflow-y: auto; margin-top: 0.5rem; }
145
+ .pf .agd-event-item {
146
+ padding: 0.25rem 0;
147
+ border-bottom: 1px solid var(--border, #E5E7EB);
148
+ font-size: 0.8rem;
149
+ display: flex;
150
+ gap: 0.5rem;
151
+ align-items: baseline;
152
+ }
153
+ .pf .agd-event-item:last-child { border-bottom: none; }
154
+ .pf .agd-event-time { color: var(--text-dim, #6B7280); font-size: 0.7rem; flex-shrink: 0; }
155
+ .pf .agd-event-type { font-weight: 500; flex-shrink: 0; }
156
+
157
+ /* Empty state */
158
+ .pf .agd-empty {
159
+ text-align: center;
160
+ padding: 1.5rem;
161
+ color: var(--text-dim, #6B7280);
162
+ font-size: 0.85rem;
163
+ }
164
+
165
+ /* Directives display */
166
+ .pf .agd-directive-section { margin-bottom: 1rem; }
167
+ .pf .agd-directive-section h4 {
168
+ font-size: 0.8rem;
169
+ font-weight: 600;
170
+ margin-bottom: 0.35rem;
171
+ color: var(--text-dim, #6B7280);
172
+ text-transform: uppercase;
173
+ letter-spacing: 0.5px;
174
+ }
175
+ .pf .agd-purpose-text {
176
+ font-size: 0.85rem;
177
+ color: var(--text, #1A1A2E);
178
+ line-height: 1.5;
179
+ padding: 0.35rem 0;
180
+ }
181
+ .pf .agd-rule-item {
182
+ display: flex;
183
+ align-items: flex-start;
184
+ gap: 0.5rem;
185
+ padding: 0.3rem 0;
186
+ font-size: 0.85rem;
187
+ line-height: 1.4;
188
+ }
189
+ .pf .agd-rule-text { flex: 1; }
190
+ .pf .agd-rule-source {
191
+ font-size: 0.65rem;
192
+ padding: 1px 6px;
193
+ border-radius: 8px;
194
+ white-space: nowrap;
195
+ flex-shrink: 0;
196
+ font-weight: 500;
197
+ margin-top: 2px;
198
+ }
199
+ .pf .agd-source-system { background: var(--card-bg-alt, #F3F4F6); color: var(--text-dim, #6B7280); }
200
+ .pf .agd-source-owner { background: rgba(37, 99, 235, 0.1); color: #2563eb; }
201
+ .pf .agd-source-agent { background: rgba(16, 185, 129, 0.1); color: var(--success, #10b981); }
202
+
203
+ /* Resource / memory area lists */
204
+ .pf .agd-list-item {
205
+ padding: 0.25rem 0;
206
+ font-size: 0.85rem;
207
+ color: var(--text, #1A1A2E);
208
+ border-bottom: 1px solid rgba(0, 0, 0, 0.04);
209
+ }
210
+ .pf .agd-list-item:last-child { border-bottom: none; }
211
+ .pf .agd-list-item code {
212
+ font-family: 'JetBrains Mono', monospace;
213
+ font-size: 0.78rem;
214
+ background: rgba(0, 0, 0, 0.04);
215
+ padding: 1px 5px;
216
+ border-radius: 3px;
217
+ }
218
+
219
+ /* Editable rule input row */
220
+ .pf .agd-rule-edit-row {
221
+ display: flex;
222
+ gap: 0.5rem;
223
+ align-items: center;
224
+ margin-bottom: 0.35rem;
225
+ }
226
+ .pf .agd-rule-edit-row input {
227
+ flex: 1;
228
+ padding: 0.3rem 0.5rem;
229
+ border: 1px solid var(--border, #E5E7EB);
230
+ border-radius: var(--radius-xs, 6px);
231
+ font-size: 0.85rem;
232
+ background: var(--card-bg, #FFFFFF);
233
+ color: var(--text, #1A1A2E);
234
+ font-family: inherit;
235
+ }
236
+ .pf .agd-rule-edit-row input:focus {
237
+ outline: none;
238
+ border-color: var(--accent, #E8564A);
239
+ }
240
+ .pf .agd-remove-btn {
241
+ background: none;
242
+ border: none;
243
+ color: var(--danger, #ef4444);
244
+ cursor: pointer;
245
+ font-size: 1rem;
246
+ padding: 0 0.25rem;
247
+ opacity: 0.6;
248
+ transition: opacity 0.15s;
249
+ }
250
+ .pf .agd-remove-btn:hover { opacity: 1; }
251
+ .pf .agd-add-btn {
252
+ background: none;
253
+ border: 1px dashed var(--border, #E5E7EB);
254
+ color: var(--text-dim, #6B7280);
255
+ cursor: pointer;
256
+ font-size: 0.8rem;
257
+ padding: 0.3rem 0.75rem;
258
+ border-radius: var(--radius-xs, 6px);
259
+ transition: border-color 0.15s, color 0.15s;
260
+ margin-top: 0.25rem;
261
+ }
262
+ .pf .agd-add-btn:hover {
263
+ border-color: var(--accent, #E8564A);
264
+ color: var(--accent, #E8564A);
265
+ }
266
+
267
+ /* Group picker popup (memory tab visibility cycling) */
268
+ .agd-group-picker {
269
+ position: absolute;
270
+ z-index: 10;
271
+ background: var(--card, #FFFFFF);
272
+ border: 1px solid var(--border, #E5E7EB);
273
+ border-radius: var(--radius, 6px);
274
+ padding: var(--space-sm, 0.5rem);
275
+ box-shadow: 0 4px 12px rgba(0,0,0,0.15);
276
+ min-width: 200px;
277
+ }
278
+ .agd-group-option {
279
+ display: block;
280
+ width: 100%;
281
+ text-align: left;
282
+ padding: var(--space-xs, 0.25rem) var(--space-sm, 0.5rem);
283
+ }
284
+
285
+ /* ── Capabilities sub-tab ── */
286
+
287
+ /* Badge list container */
288
+ .pf .agd-cap-list {
289
+ display: flex;
290
+ flex-wrap: wrap;
291
+ gap: 0.35rem;
292
+ margin-bottom: 0.5rem;
293
+ }
294
+
295
+ /* Individual capability badge */
296
+ .pf .agd-cap-badge {
297
+ display: inline-flex;
298
+ align-items: center;
299
+ gap: 0.35rem;
300
+ padding: 0.25rem 0.6rem;
301
+ border: 1px solid var(--border, #E5E7EB);
302
+ border-radius: 12px;
303
+ font-size: 0.8rem;
304
+ background: var(--card-bg, #FFFFFF);
305
+ color: var(--text, #1A1A2E);
306
+ }
307
+ .pf .agd-cap-name {
308
+ font-weight: 500;
309
+ }
310
+
311
+ /* Type badges (MCP / skill / tool) */
312
+ .pf .agd-cap-type {
313
+ font-size: 0.65rem;
314
+ padding: 1px 6px;
315
+ border-radius: 8px;
316
+ font-weight: 600;
317
+ text-transform: uppercase;
318
+ letter-spacing: 0.3px;
319
+ background: var(--card-bg-alt, #F3F4F6);
320
+ color: var(--text-dim, #6B7280);
321
+ }
322
+ .pf .agd-cap-type-mcp {
323
+ background: rgba(37, 99, 235, 0.1);
324
+ color: #2563eb;
325
+ }
326
+ .pf .agd-cap-type-skill {
327
+ background: rgba(16, 185, 129, 0.1);
328
+ color: var(--success, #10b981);
329
+ }
330
+ .pf .agd-cap-type-tool {
331
+ background: rgba(217, 119, 6, 0.1);
332
+ color: #d97706;
333
+ }
334
+
335
+ /* Verified / self-reported badges */
336
+ .pf .agd-cap-verified {
337
+ font-size: 0.65rem;
338
+ padding: 1px 6px;
339
+ border-radius: 8px;
340
+ font-weight: 500;
341
+ background: rgba(16, 185, 129, 0.1);
342
+ color: var(--success, #10b981);
343
+ }
344
+ .pf .agd-cap-unverified {
345
+ font-size: 0.65rem;
346
+ padding: 1px 6px;
347
+ border-radius: 8px;
348
+ font-weight: 500;
349
+ background: var(--card-bg-alt, #F3F4F6);
350
+ color: var(--text-dim, #6B7280);
351
+ }
352
+
353
+ /* Domain badge variant */
354
+ .pf .agd-cap-domain {
355
+ background: var(--card-bg-alt, #F3F4F6);
356
+ }
357
+
358
+ /* Language tags row */
359
+ .pf .agd-cap-langs {
360
+ display: flex;
361
+ flex-wrap: wrap;
362
+ align-items: center;
363
+ gap: 0.35rem;
364
+ margin-top: 0.5rem;
365
+ }
366
+ .pf .agd-cap-lang-label {
367
+ font-size: 0.8rem;
368
+ color: var(--text-dim, #6B7280);
369
+ font-weight: 500;
370
+ }
371
+ .pf .agd-cap-lang {
372
+ background: rgba(37, 99, 235, 0.08);
373
+ color: #2563eb;
374
+ font-weight: 500;
375
+ }
376
+
377
+ /* Action queue support list */
378
+ .pf .agd-cap-queue-list {
379
+ display: flex;
380
+ flex-direction: column;
381
+ gap: 0.25rem;
382
+ }
383
+ .pf .agd-cap-queue-item {
384
+ display: flex;
385
+ align-items: center;
386
+ gap: 0.5rem;
387
+ font-size: 0.85rem;
388
+ color: var(--text, #1A1A2E);
389
+ }
390
+ .pf .agd-cap-check {
391
+ color: var(--success, #10b981);
392
+ font-weight: 700;
393
+ }
394
+
395
+ /* ── Activity sub-tab ── */
396
+
397
+ /* Activity stats cards */
398
+ .pf .agd-stats-grid { display: flex; gap: 8px; margin-bottom: 16px; }
399
+ .pf .agd-stat-card { flex: 1; background: var(--card-bg, #FFFFFF); border: 1px solid var(--border, #E5E7EB); border-radius: 8px; padding: 12px; text-align: center; }
400
+ .pf .agd-stat-value { font-size: 1.5rem; font-weight: 600; color: var(--text, #1A1A2E); }
401
+ .pf .agd-stat-label { font-size: 0.75rem; color: var(--text-muted, #9CA3AF); }
402
+
403
+ /* Activity chart area */
404
+ .pf .agd-chart-container { background: var(--card-bg, #FFFFFF); border: 1px solid var(--border, #E5E7EB); border-radius: 8px; padding: 12px; margin-bottom: 16px; }
405
+ .pf .agd-chart-rows { display: flex; flex-direction: column; gap: 4px; }
406
+ .pf .agd-chart-row { display: flex; align-items: center; gap: 8px; font-size: 0.75rem; }
407
+ .pf .agd-chart-date { min-width: 52px; color: var(--text-muted, #9CA3AF); text-align: right; }
408
+ .pf .agd-chart-bar-track { flex: 1; height: 14px; background: var(--card-bg-alt, #F3F4F6); border-radius: 3px; overflow: hidden; }
409
+ .pf .agd-chart-bar-fill { height: 100%; background: var(--accent, #E8564A); border-radius: 3px; transition: width 0.2s; }
410
+ .pf .agd-chart-count { min-width: 24px; text-align: right; font-weight: 600; color: var(--text-dim, #6B7280); }
411
+
412
+ /* Event log entries */
413
+ .pf .agd-log-entry { display: flex; gap: 8px; padding: 6px 10px; background: var(--card-bg, #FFFFFF); border: 1px solid var(--border, #E5E7EB); border-radius: 6px; margin-bottom: 3px; font-size: 0.8rem; align-items: center; }
414
+ .pf .agd-log-time { color: var(--text-muted, #9CA3AF); white-space: nowrap; min-width: 80px; }
415
+ .pf .agd-log-type { font-weight: 600; min-width: 80px; color: var(--text, #1A1A2E); }
416
+ .pf .agd-log-msg { flex: 1; color: var(--text-dim, #6B7280); }
417
+ .pf .agd-event-log-scroll { max-height: 300px; overflow-y: auto; margin-bottom: 4px; }
418
+
419
+ /* Scheduled jobs badges */
420
+ .pf .agd-job-badge-aimeat { background: var(--card-bg-alt, #F3F4F6); color: var(--success, #10B981); padding: 2px 6px; border-radius: 3px; font-size: 0.7rem; white-space: nowrap; flex-shrink: 0; }
421
+ .pf .agd-job-badge-agent { background: var(--card-bg-alt, #F3F4F6); color: var(--warn, #F59E0B); padding: 2px 6px; border-radius: 3px; font-size: 0.7rem; white-space: nowrap; flex-shrink: 0; }
422
+
423
+ /* Time range selector */
424
+ .pf .agd-range-bar { display: flex; gap: 4px; margin-bottom: 8px; }
425
+ .pf .agd-range-btn { padding: 2px 8px; border: 1px solid var(--border, #E5E7EB); border-radius: 4px; background: none; cursor: pointer; font-size: 0.75rem; color: var(--text-dim, #6B7280); }
426
+ .pf .agd-range-btn.active { background: var(--accent, #E8564A); color: #FFFFFF; border-color: var(--accent, #E8564A); }
427
+
428
+ /* ── Services sub-tab ── */
429
+
430
+ .pf .agd-services-info {
431
+ background: var(--bg-dim, #F9FAFB);
432
+ border: 1px solid var(--border, #E5E7EB);
433
+ border-radius: 8px;
434
+ padding: 0.75rem 1rem;
435
+ font-size: 0.8rem;
436
+ color: var(--text-dim, #6B7280);
437
+ margin-bottom: 1rem;
438
+ }
439
+ .pf .agd-services-list {
440
+ display: flex;
441
+ flex-direction: column;
442
+ gap: 0.5rem;
443
+ }
444
+ .pf .agd-service-card {
445
+ background: var(--card, #FFFFFF);
446
+ border: 1px solid var(--border, #E5E7EB);
447
+ border-radius: 8px;
448
+ padding: 0.75rem 1rem;
449
+ }
450
+ .pf .agd-service-name {
451
+ font-weight: 600;
452
+ font-size: 0.9rem;
453
+ }
454
+ .pf .agd-service-desc {
455
+ font-size: 0.8rem;
456
+ color: var(--text-dim, #6B7280);
457
+ margin-top: 0.25rem;
458
+ }
459
+ .pf .agd-service-meta {
460
+ display: flex;
461
+ gap: 0.75rem;
462
+ font-size: 0.75rem;
463
+ color: var(--text-muted, #9CA3AF);
464
+ margin-top: 0.5rem;
465
+ }
466
+
467
+ /* ── Messages sub-tab ── */
468
+
469
+ .pf .agd-msg-status-bar {
470
+ display: flex;
471
+ justify-content: space-between;
472
+ align-items: center;
473
+ padding: 0.5rem 0;
474
+ border-bottom: 1px solid var(--border, #E5E7EB);
475
+ font-size: 0.75rem;
476
+ color: var(--text-dim, #6B7280);
477
+ margin-bottom: 0.75rem;
478
+ }
479
+ .pf .agd-msg-history {
480
+ max-height: 400px;
481
+ overflow-y: auto;
482
+ padding: 0.5rem 0;
483
+ display: flex;
484
+ flex-direction: column;
485
+ gap: 0.5rem;
486
+ }
487
+ .pf .agd-msg-bubble {
488
+ max-width: 80%;
489
+ padding: 0.625rem 0.875rem;
490
+ border-radius: 12px;
491
+ font-size: 0.85rem;
492
+ line-height: 1.5;
493
+ }
494
+ .pf .agd-msg-inbound {
495
+ align-self: flex-end;
496
+ background: var(--accent-dim, #FEF2F1);
497
+ border-bottom-right-radius: 4px;
498
+ }
499
+ .pf .agd-msg-outbound {
500
+ align-self: flex-start;
501
+ background: var(--surface, #F3F4F6);
502
+ border: 1px solid var(--border, #E5E7EB);
503
+ border-bottom-left-radius: 4px;
504
+ }
505
+ .pf .agd-msg-meta {
506
+ font-size: 0.7rem;
507
+ color: var(--text-muted, #9CA3AF);
508
+ margin-top: 0.25rem;
509
+ }
510
+ .pf .agd-msg-meta-right {
511
+ text-align: right;
512
+ }
513
+ .pf .agd-msg-input {
514
+ display: flex;
515
+ gap: 0.5rem;
516
+ padding: 0.75rem 0;
517
+ border-top: 1px solid var(--border, #E5E7EB);
518
+ margin-top: 0.75rem;
519
+ }
520
+ .pf .agd-msg-input textarea {
521
+ flex: 1;
522
+ resize: none;
523
+ border: 1px solid var(--border, #E5E7EB);
524
+ border-radius: 8px;
525
+ padding: 0.5rem 0.75rem;
526
+ font-size: 0.85rem;
527
+ min-height: 2.5rem;
528
+ max-height: 6rem;
529
+ font-family: inherit;
530
+ }
531
+ .pf .agd-msg-proposed-task {
532
+ background: var(--card, #FFFFFF);
533
+ border: 1px solid var(--accent, #E8564A);
534
+ border-radius: 8px;
535
+ padding: 0.625rem;
536
+ margin-top: 0.5rem;
537
+ font-size: 0.8rem;
538
+ }
539
+ .pf .agd-msg-proposed-task h5 {
540
+ margin: 0 0 0.25rem;
541
+ font-size: 0.8rem;
542
+ color: var(--accent, #E8564A);
543
+ }
544
+ .pf .agd-msg-threads {
545
+ display: flex;
546
+ gap: 0.5rem;
547
+ flex-wrap: wrap;
548
+ margin-bottom: 0.75rem;
549
+ }
550
+ .pf .agd-msg-thread-btn {
551
+ background: var(--surface, #F3F4F6);
552
+ border: 1px solid var(--border, #E5E7EB);
553
+ border-radius: 6px;
554
+ padding: 0.375rem 0.75rem;
555
+ font-size: 0.75rem;
556
+ cursor: pointer;
557
+ transition: border-color 0.15s;
558
+ }
559
+ .pf .agd-msg-thread-btn:hover,
560
+ .pf .agd-msg-thread-btn-active {
561
+ border-color: var(--accent, #E8564A);
562
+ color: var(--accent, #E8564A);
563
+ }
@@ -347,6 +347,7 @@
347
347
  .pf .vis-pill:hover { opacity: 0.8; }
348
348
  .pf .vis-public { background: rgba(74, 222, 128, .15); color: #4ade80; }
349
349
  .pf .vis-owner { background: rgba(96, 165, 250, .15); color: #60a5fa; }
350
+ .pf .vis-group { background: rgba(16, 185, 129, .15); color: var(--success, #10b981); }
350
351
  .pf .vis-private { background: rgba(192, 132, 252, .15); color: #c084fc; }
351
352
  .pf .vis-protected { background: rgba(96, 165, 250, .15); color: #60a5fa; }
352
353
 
@@ -124,6 +124,7 @@
124
124
  .mk-vis-public { background: rgba(34,197,94,0.15); color: #22c55e; }
125
125
  .mk-vis-password { background: rgba(234,179,8,0.15); color: #eab308; }
126
126
  .mk-vis-invite { background: rgba(129,140,248,0.15); color: #818cf8; }
127
+ .mk-vis-group { background: rgba(16,185,129,0.15); color: #10b981; }
127
128
  .mk-back-link { cursor: pointer; color: var(--accent, #06b6d4); margin-bottom: 16px; display: inline-block; }
128
129
 
129
130
  @media (max-width: 600px) {
@@ -823,6 +823,7 @@
823
823
  .pf .vis-pill:hover { opacity: 0.8; }
824
824
  .pf .vis-public { background: rgba(74, 222, 128, .15); color: #4ade80; }
825
825
  .pf .vis-owner { background: rgba(96, 165, 250, .15); color: #60a5fa; }
826
+ .pf .vis-group { background: rgba(16, 185, 129, .15); color: var(--success, #10b981); }
826
827
  .pf .vis-private { background: rgba(192, 132, 252, .15); color: #c084fc; }
827
828
  .pf .vis-protected { background: rgba(96, 165, 250, .15); color: #60a5fa; }
828
829
 
@@ -1664,6 +1665,7 @@
1664
1665
  .pf .pf-view-item-vis { font-size: .62rem; font-weight: 500; padding: 1px 6px; border-radius: 4px; }
1665
1666
  .pf .pf-view-item-vis.pf-vis-private { background: var(--accent-soft, #FFF0EE); color: var(--accent, #E8564A); }
1666
1667
  .pf .pf-view-item-vis.pf-vis-public { background: rgba(34,197,94,.1); color: var(--success, #22c55e); }
1668
+ .pf .pf-view-item-vis.pf-vis-group { background: rgba(16,185,129,.1); color: var(--success, #10b981); }
1667
1669
  .pf .pf-view-item-vis.pf-vis-shared { background: #EEF0FF; color: #6366F1; }
1668
1670
 
1669
1671
  /* Agent status dots in panels */
@@ -173,7 +173,13 @@ export const getAdminMemory = (params = {}) => {
173
173
  export const deleteAdminMemory = (owner, key) => apiDelete(`/v1/admin/memory/${encodeURIComponent(owner)}/${encodeURIComponent(key)}`);
174
174
 
175
175
  // ── Stats ──
176
- export const getStats = () => apiGet('/v1/stats');
176
+ export const getStats = (from, to) => {
177
+ const params = new URLSearchParams();
178
+ if (from) params.set('from', from);
179
+ if (to) params.set('to', to);
180
+ const qs = params.toString();
181
+ return apiGet('/v1/stats' + (qs ? '?' + qs : ''));
182
+ };
177
183
 
178
184
  // ── Extensions & Instances ──
179
185
  export const getAvailableExtensions = () => apiGet('/v1/admin/extensions/available');
@@ -243,3 +249,16 @@ export const resetAllSystemPrompts = () => apiPost('/v1/admin/prompts/reset-
243
249
  export const resetPromptGroup = (group) => apiPost(`/v1/admin/prompts/reset-group/${encodeURIComponent(group)}`);
244
250
  export const getPromptVersions = (id) => apiGet(`/v1/admin/prompts/${encodeURIComponent(id)}/versions`);
245
251
  export const restorePromptVersion = (id, v) => apiPost(`/v1/admin/prompts/${encodeURIComponent(id)}/versions/${v}/restore`);
252
+
253
+ // ── Agent Tasks (admin) ──
254
+ export const getAdminAgentTasks = (params = {}) => {
255
+ const q = new URLSearchParams();
256
+ if (params.status) q.set('status', params.status);
257
+ if (params.agent) q.set('agent', params.agent);
258
+ if (params.page) q.set('page', String(params.page));
259
+ if (params.per_page) q.set('per_page', String(params.per_page));
260
+ return apiGet('/v1/admin/agent-tasks?' + q.toString());
261
+ };
262
+
263
+ // ── Sharing Groups (admin) ──
264
+ export const getAdminSharingGroups = () => apiGet('/v1/admin/sharing-groups');
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @file agent-activity.js
3
+ * @description Frontend API service for agent activity stats and history.
4
+ * Provides access to activity statistics (tasks completed, tokens used,
5
+ * success rate), daily activity history, and event log entries.
6
+ * @structure
7
+ * - getActivity() -- fetch activity stats and daily history
8
+ * - getActivityLog() -- fetch paginated event log
9
+ * @version-history
10
+ * v1.0.0 -- 2026-05-22 -- Initial creation for Agent Dashboard Phase 2
11
+ */
12
+ import { apiGet } from '/js/api.js';
13
+
14
+ export async function getActivity(agentName, days = 30, granularity = 'daily') {
15
+ return apiGet(`/v1/agents/${encodeURIComponent(agentName)}/activity?days=${days}&granularity=${granularity}`);
16
+ }
17
+
18
+ export async function getActivityLog(agentName, page = 1, perPage = 20) {
19
+ return apiGet(`/v1/agents/${encodeURIComponent(agentName)}/activity/log?page=${page}&per_page=${perPage}`);
20
+ }
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @file agent-capabilities.js
3
+ * @description Frontend API service for agent capability reporting and retrieval
4
+ * @version-history
5
+ * v1.0.0 -- 2026-05-22 -- Initial creation for Agent Dashboard Phase 2
6
+ */
7
+ import { apiGet, apiPut } from '/js/api.js';
8
+
9
+ export async function getCapabilities(agentName) {
10
+ return apiGet(`/v1/agents/${encodeURIComponent(agentName)}/capabilities`);
11
+ }
12
+
13
+ export async function updateCapabilities(agentName, data) {
14
+ return apiPut(`/v1/agents/${encodeURIComponent(agentName)}/capabilities`, data);
15
+ }
@@ -0,0 +1,28 @@
1
+ /**
2
+ * @file agent-directives.js
3
+ * @description Frontend API service for agent directives operations.
4
+ * Provides get/upsert/delete for per-agent directives and owner-level defaults.
5
+ * @version-history
6
+ * v1.0.0 -- 2026-05-21 -- Initial creation for Agent Dashboard Phase 1
7
+ */
8
+ import { apiGet, apiPut, apiDelete } from '/js/api.js';
9
+
10
+ export async function getDirectives(agentName) {
11
+ return apiGet(`/v1/agents/${encodeURIComponent(agentName)}/directives`);
12
+ }
13
+
14
+ export async function upsertDirectives(agentName, data) {
15
+ return apiPut(`/v1/agents/${encodeURIComponent(agentName)}/directives`, data);
16
+ }
17
+
18
+ export async function deleteDirectives(agentName) {
19
+ return apiDelete(`/v1/agents/${encodeURIComponent(agentName)}/directives`);
20
+ }
21
+
22
+ export async function getOwnerDefaults() {
23
+ return apiGet('/v1/owner/agent-defaults');
24
+ }
25
+
26
+ export async function upsertOwnerDefaults(data) {
27
+ return apiPut('/v1/owner/agent-defaults', data);
28
+ }