@rudderhq/server 0.7.2 → 0.7.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (512) hide show
  1. package/dist/agent-runtimes/registry.d.ts.map +1 -1
  2. package/dist/agent-runtimes/registry.js +0 -2
  3. package/dist/agent-runtimes/registry.js.map +1 -1
  4. package/dist/app.d.ts.map +1 -1
  5. package/dist/app.js +1 -5
  6. package/dist/app.js.map +1 -1
  7. package/dist/bootstrap/create-http-app.d.ts +1 -2
  8. package/dist/bootstrap/create-http-app.d.ts.map +1 -1
  9. package/dist/bootstrap/create-http-app.js +13 -12
  10. package/dist/bootstrap/create-http-app.js.map +1 -1
  11. package/dist/bootstrap/register-api-routes.d.ts +1 -2
  12. package/dist/bootstrap/register-api-routes.d.ts.map +1 -1
  13. package/dist/bootstrap/register-api-routes.js +22 -4
  14. package/dist/bootstrap/register-api-routes.js.map +1 -1
  15. package/dist/index.js +2 -0
  16. package/dist/index.js.map +1 -1
  17. package/dist/middleware/logger.js +2 -2
  18. package/dist/middleware/logger.js.map +1 -1
  19. package/dist/middleware/logger.test.js +26 -10
  20. package/dist/middleware/logger.test.js.map +1 -1
  21. package/dist/redaction.d.ts +4 -0
  22. package/dist/redaction.d.ts.map +1 -1
  23. package/dist/redaction.js +15 -0
  24. package/dist/redaction.js.map +1 -1
  25. package/dist/routes/agent-issue-creation.d.ts +25 -0
  26. package/dist/routes/agent-issue-creation.d.ts.map +1 -0
  27. package/dist/routes/agent-issue-creation.js +201 -0
  28. package/dist/routes/agent-issue-creation.js.map +1 -0
  29. package/dist/routes/app-builder.d.ts +3 -1
  30. package/dist/routes/app-builder.d.ts.map +1 -1
  31. package/dist/routes/app-builder.js +30 -22
  32. package/dist/routes/app-builder.js.map +1 -1
  33. package/dist/routes/approvals.d.ts.map +1 -1
  34. package/dist/routes/approvals.js +36 -9
  35. package/dist/routes/approvals.js.map +1 -1
  36. package/dist/routes/chats.d.ts.map +1 -1
  37. package/dist/routes/chats.js +23 -4
  38. package/dist/routes/chats.js.map +1 -1
  39. package/dist/routes/chats.preflight.d.ts +2 -1
  40. package/dist/routes/chats.preflight.d.ts.map +1 -1
  41. package/dist/routes/chats.preflight.js +7 -0
  42. package/dist/routes/chats.preflight.js.map +1 -1
  43. package/dist/routes/chats.stream-routes.d.ts.map +1 -1
  44. package/dist/routes/chats.stream-routes.js +14 -3
  45. package/dist/routes/chats.stream-routes.js.map +1 -1
  46. package/dist/routes/chats.stream-support.d.ts.map +1 -1
  47. package/dist/routes/chats.stream-support.js +8 -0
  48. package/dist/routes/chats.stream-support.js.map +1 -1
  49. package/dist/routes/computer.d.ts +30 -0
  50. package/dist/routes/computer.d.ts.map +1 -0
  51. package/dist/routes/computer.js +231 -0
  52. package/dist/routes/computer.js.map +1 -0
  53. package/dist/routes/goals.d.ts.map +1 -1
  54. package/dist/routes/goals.js +176 -27
  55. package/dist/routes/goals.js.map +1 -1
  56. package/dist/routes/health.d.ts.map +1 -1
  57. package/dist/routes/health.js +2 -0
  58. package/dist/routes/health.js.map +1 -1
  59. package/dist/routes/index.d.ts +1 -0
  60. package/dist/routes/index.d.ts.map +1 -1
  61. package/dist/routes/index.js +1 -0
  62. package/dist/routes/index.js.map +1 -1
  63. package/dist/routes/instance-settings.d.ts.map +1 -1
  64. package/dist/routes/instance-settings.js +3 -0
  65. package/dist/routes/instance-settings.js.map +1 -1
  66. package/dist/routes/issues.comments-attachments.d.ts.map +1 -1
  67. package/dist/routes/issues.comments-attachments.js +90 -8
  68. package/dist/routes/issues.comments-attachments.js.map +1 -1
  69. package/dist/routes/issues.d.ts.map +1 -1
  70. package/dist/routes/issues.js +14 -2
  71. package/dist/routes/issues.js.map +1 -1
  72. package/dist/routes/issues.mutations.d.ts.map +1 -1
  73. package/dist/routes/issues.mutations.js +206 -52
  74. package/dist/routes/issues.mutations.js.map +1 -1
  75. package/dist/routes/managed-mcp-runtime.d.ts.map +1 -1
  76. package/dist/routes/managed-mcp-runtime.js +109 -7
  77. package/dist/routes/managed-mcp-runtime.js.map +1 -1
  78. package/dist/routes/organization-skills.d.ts.map +1 -1
  79. package/dist/routes/organization-skills.js +23 -1
  80. package/dist/routes/organization-skills.js.map +1 -1
  81. package/dist/routes/requests.d.ts +3 -0
  82. package/dist/routes/requests.d.ts.map +1 -0
  83. package/dist/routes/requests.js +122 -0
  84. package/dist/routes/requests.js.map +1 -0
  85. package/dist/routes/rudder-plugins.d.ts +4 -0
  86. package/dist/routes/rudder-plugins.d.ts.map +1 -0
  87. package/dist/routes/rudder-plugins.js +203 -0
  88. package/dist/routes/rudder-plugins.js.map +1 -0
  89. package/dist/services/activity-log.d.ts +0 -3
  90. package/dist/services/activity-log.d.ts.map +1 -1
  91. package/dist/services/activity-log.js +19 -42
  92. package/dist/services/activity-log.js.map +1 -1
  93. package/dist/services/activity.d.ts +3 -3
  94. package/dist/services/agent-issue-creation.d.ts +344 -0
  95. package/dist/services/agent-issue-creation.d.ts.map +1 -0
  96. package/dist/services/agent-issue-creation.js +675 -0
  97. package/dist/services/agent-issue-creation.js.map +1 -0
  98. package/dist/services/agent-run-context.d.ts.map +1 -1
  99. package/dist/services/agent-run-context.js +10 -4
  100. package/dist/services/agent-run-context.js.map +1 -1
  101. package/dist/services/agents.d.ts +14 -14
  102. package/dist/services/agents.d.ts.map +1 -1
  103. package/dist/services/agents.js +2 -1
  104. package/dist/services/agents.js.map +1 -1
  105. package/dist/services/app-builder.d.ts.map +1 -1
  106. package/dist/services/app-builder.js +24 -3
  107. package/dist/services/app-builder.js.map +1 -1
  108. package/dist/services/chat-agent-runs.d.ts +1 -0
  109. package/dist/services/chat-agent-runs.d.ts.map +1 -1
  110. package/dist/services/chat-agent-runs.js +1 -0
  111. package/dist/services/chat-agent-runs.js.map +1 -1
  112. package/dist/services/chat-assistant.d.ts.map +1 -1
  113. package/dist/services/chat-assistant.helpers.d.ts +3 -1
  114. package/dist/services/chat-assistant.helpers.d.ts.map +1 -1
  115. package/dist/services/chat-assistant.helpers.js +25 -0
  116. package/dist/services/chat-assistant.helpers.js.map +1 -1
  117. package/dist/services/chat-assistant.js +57 -11
  118. package/dist/services/chat-assistant.js.map +1 -1
  119. package/dist/services/chat-generation-protocol.test.js +2 -2
  120. package/dist/services/chat-generation-protocol.test.js.map +1 -1
  121. package/dist/services/chat-queued-message-materialization.d.ts +1 -1
  122. package/dist/services/chats.create.d.ts +2 -2
  123. package/dist/services/chats.create.d.ts.map +1 -1
  124. package/dist/services/chats.d.ts +15 -15
  125. package/dist/services/chats.d.ts.map +1 -1
  126. package/dist/services/chats.helpers.d.ts +2 -2
  127. package/dist/services/chats.helpers.d.ts.map +1 -1
  128. package/dist/services/chats.helpers.goal-context.test.d.ts +2 -0
  129. package/dist/services/chats.helpers.goal-context.test.d.ts.map +1 -0
  130. package/dist/services/chats.helpers.goal-context.test.js +40 -0
  131. package/dist/services/chats.helpers.goal-context.test.js.map +1 -0
  132. package/dist/services/chats.helpers.js +27 -2
  133. package/dist/services/chats.helpers.js.map +1 -1
  134. package/dist/services/chats.js.map +1 -1
  135. package/dist/services/computer-broker.d.ts +35 -0
  136. package/dist/services/computer-broker.d.ts.map +1 -0
  137. package/dist/services/computer-broker.js +211 -0
  138. package/dist/services/computer-broker.js.map +1 -0
  139. package/dist/services/computer-broker.test.d.ts +2 -0
  140. package/dist/services/computer-broker.test.d.ts.map +1 -0
  141. package/dist/services/computer-broker.test.js +70 -0
  142. package/dist/services/computer-broker.test.js.map +1 -0
  143. package/dist/services/computer-capability.d.ts +13 -0
  144. package/dist/services/computer-capability.d.ts.map +1 -0
  145. package/dist/services/computer-capability.js +11 -0
  146. package/dist/services/computer-capability.js.map +1 -0
  147. package/dist/services/computer-capability.test.d.ts +2 -0
  148. package/dist/services/computer-capability.test.d.ts.map +1 -0
  149. package/dist/services/computer-capability.test.js +27 -0
  150. package/dist/services/computer-capability.test.js.map +1 -0
  151. package/dist/services/finance.d.ts +2 -2
  152. package/dist/services/goals.d.ts +267 -244
  153. package/dist/services/goals.d.ts.map +1 -1
  154. package/dist/services/goals.js +1279 -297
  155. package/dist/services/goals.js.map +1 -1
  156. package/dist/services/index.d.ts +3 -0
  157. package/dist/services/index.d.ts.map +1 -1
  158. package/dist/services/index.js +3 -0
  159. package/dist/services/index.js.map +1 -1
  160. package/dist/services/instance-settings.d.ts.map +1 -1
  161. package/dist/services/instance-settings.js +8 -3
  162. package/dist/services/instance-settings.js.map +1 -1
  163. package/dist/services/integrations/agent-integrations.d.ts +1 -1
  164. package/dist/services/issues.d.ts +86 -1
  165. package/dist/services/issues.d.ts.map +1 -1
  166. package/dist/services/issues.helpers.d.ts +4 -0
  167. package/dist/services/issues.helpers.d.ts.map +1 -1
  168. package/dist/services/issues.helpers.js +28 -6
  169. package/dist/services/issues.helpers.js.map +1 -1
  170. package/dist/services/issues.js +207 -127
  171. package/dist/services/issues.js.map +1 -1
  172. package/dist/services/knowledge-portability/organization-portability.files.d.ts +1 -1
  173. package/dist/services/knowledge-portability/organization-skills.catalog.d.ts +7 -1
  174. package/dist/services/knowledge-portability/organization-skills.catalog.d.ts.map +1 -1
  175. package/dist/services/knowledge-portability/organization-skills.catalog.js +10 -0
  176. package/dist/services/knowledge-portability/organization-skills.catalog.js.map +1 -1
  177. package/dist/services/knowledge-portability/organization-skills.d.ts +3 -1
  178. package/dist/services/knowledge-portability/organization-skills.d.ts.map +1 -1
  179. package/dist/services/knowledge-portability/organization-skills.js +80 -12
  180. package/dist/services/knowledge-portability/organization-skills.js.map +1 -1
  181. package/dist/services/mcp/managed-bindings.d.ts.map +1 -1
  182. package/dist/services/mcp/managed-bindings.js +18 -2
  183. package/dist/services/mcp/managed-bindings.js.map +1 -1
  184. package/dist/services/mcp/managed-client.d.ts +15 -0
  185. package/dist/services/mcp/managed-client.d.ts.map +1 -1
  186. package/dist/services/mcp/managed-client.js +23 -1
  187. package/dist/services/mcp/managed-client.js.map +1 -1
  188. package/dist/services/mcp/managed-client.test.js +73 -9
  189. package/dist/services/mcp/managed-client.test.js.map +1 -1
  190. package/dist/services/messenger.d.ts +3 -3
  191. package/dist/services/messenger.d.ts.map +1 -1
  192. package/dist/services/messenger.js +201 -65
  193. package/dist/services/messenger.js.map +1 -1
  194. package/dist/services/orgs.d.ts.map +1 -1
  195. package/dist/services/orgs.js +3 -1
  196. package/dist/services/orgs.js.map +1 -1
  197. package/dist/services/product-analytics.d.ts +2 -2
  198. package/dist/services/requests.d.ts +919 -0
  199. package/dist/services/requests.d.ts.map +1 -0
  200. package/dist/services/requests.js +532 -0
  201. package/dist/services/requests.js.map +1 -0
  202. package/dist/services/rudder-plugins.d.ts +107 -0
  203. package/dist/services/rudder-plugins.d.ts.map +1 -0
  204. package/dist/services/rudder-plugins.js +1760 -0
  205. package/dist/services/rudder-plugins.js.map +1 -0
  206. package/dist/services/rudder-plugins.test.d.ts +2 -0
  207. package/dist/services/rudder-plugins.test.d.ts.map +1 -0
  208. package/dist/services/rudder-plugins.test.js +191 -0
  209. package/dist/services/rudder-plugins.test.js.map +1 -0
  210. package/dist/services/runtime-kernel/heartbeat.core.d.ts +1 -0
  211. package/dist/services/runtime-kernel/heartbeat.core.d.ts.map +1 -1
  212. package/dist/services/runtime-kernel/heartbeat.core.js +1 -1
  213. package/dist/services/runtime-kernel/heartbeat.core.js.map +1 -1
  214. package/dist/services/runtime-kernel/heartbeat.d.ts +65 -0
  215. package/dist/services/runtime-kernel/heartbeat.d.ts.map +1 -1
  216. package/dist/services/runtime-kernel/heartbeat.execute.d.ts.map +1 -1
  217. package/dist/services/runtime-kernel/heartbeat.execute.js +21 -5
  218. package/dist/services/runtime-kernel/heartbeat.execute.js.map +1 -1
  219. package/dist/services/runtime-kernel/heartbeat.js +320 -108
  220. package/dist/services/runtime-kernel/heartbeat.js.map +1 -1
  221. package/dist/services/runtime-kernel/heartbeat.recovery.d.ts +1 -0
  222. package/dist/services/runtime-kernel/heartbeat.recovery.d.ts.map +1 -1
  223. package/dist/services/runtime-kernel/heartbeat.recovery.js +39 -4
  224. package/dist/services/runtime-kernel/heartbeat.recovery.js.map +1 -1
  225. package/dist/services/runtime-kernel/heartbeat.sessions.js +1 -1
  226. package/dist/services/runtime-kernel/heartbeat.sessions.js.map +1 -1
  227. package/dist/services/runtime-kernel/heartbeat.terminal.d.ts +14 -1
  228. package/dist/services/runtime-kernel/heartbeat.terminal.d.ts.map +1 -1
  229. package/dist/services/runtime-kernel/heartbeat.terminal.js +46 -1
  230. package/dist/services/runtime-kernel/heartbeat.terminal.js.map +1 -1
  231. package/dist/services/runtime-kernel/heartbeat.wakeup.d.ts +1 -0
  232. package/dist/services/runtime-kernel/heartbeat.wakeup.d.ts.map +1 -1
  233. package/dist/services/runtime-kernel/heartbeat.wakeup.js +124 -6
  234. package/dist/services/runtime-kernel/heartbeat.wakeup.js.map +1 -1
  235. package/dist/services/workspace-runtime.services.d.ts +1 -1
  236. package/package.json +18 -18
  237. package/resources/bundled-skills/app-builder/SKILL.md +39 -9
  238. package/resources/bundled-skills/app-builder/assets/scaffold/app/globals.css +109 -16
  239. package/resources/bundled-skills/app-builder/assets/scaffold/components/contacts-workspace.tsx +176 -152
  240. package/resources/bundled-skills/app-builder/assets/scaffold/components/ui/alert.tsx +12 -0
  241. package/resources/bundled-skills/app-builder/assets/scaffold/components/ui/badge.tsx +27 -0
  242. package/resources/bundled-skills/app-builder/assets/scaffold/components/ui/button.tsx +9 -7
  243. package/resources/bundled-skills/app-builder/assets/scaffold/components/ui/card.tsx +15 -3
  244. package/resources/bundled-skills/app-builder/assets/scaffold/components/ui/empty.tsx +18 -0
  245. package/resources/bundled-skills/app-builder/assets/scaffold/components/ui/field.tsx +23 -0
  246. package/resources/bundled-skills/app-builder/assets/scaffold/components/ui/input.tsx +1 -1
  247. package/resources/bundled-skills/app-builder/assets/scaffold/components/ui/label.tsx +1 -1
  248. package/resources/bundled-skills/app-builder/assets/scaffold/components/ui/separator.tsx +6 -0
  249. package/resources/bundled-skills/app-builder/assets/scaffold/components/ui/skeleton.tsx +6 -0
  250. package/resources/bundled-skills/app-builder/assets/scaffold/components/ui/table.tsx +30 -0
  251. package/resources/bundled-skills/app-builder/assets/scaffold/components.json +20 -0
  252. package/resources/bundled-skills/app-builder/assets/scaffold/next-env.d.ts +1 -1
  253. package/resources/bundled-skills/app-builder/assets/scaffold/next.config.ts +19 -0
  254. package/resources/bundled-skills/app-builder/assets/scaffold/package.json +2 -1
  255. package/resources/bundled-skills/app-builder/assets/scaffold/rudder.app.json +1 -1
  256. package/resources/bundled-skills/app-builder/assets/scaffold/rudder.ui.json +13 -0
  257. package/resources/bundled-skills/app-builder/assets/scaffold/scripts/validate-rudder-ui.mjs +50 -0
  258. package/resources/bundled-skills/app-builder/assets/scaffold/tests/e2e/app.spec.ts +35 -1
  259. package/resources/bundled-skills/app-builder/evals/evals.json +2 -1
  260. package/resources/bundled-skills/app-builder/references/design-guidelines.md +19 -2
  261. package/resources/bundled-skills/app-builder/references/rudder-ui-preset.md +73 -0
  262. package/resources/bundled-skills/app-builder/references/scaffold-contract.md +12 -0
  263. package/resources/bundled-skills/app-builder/references/verification.md +6 -0
  264. package/resources/bundled-skills/app-builder/scripts/report-build-status.mjs +83 -0
  265. package/resources/bundled-skills/rudder-docs/SKILL.md +2 -2
  266. package/resources/bundled-skills/rudder-docs/evals/retrieval-authority-evals.json +40 -0
  267. package/resources/bundled-skills/rudder-docs/evals/trigger-evals.json +2 -2
  268. package/resources/bundled-skills/rudder-docs/references/api-reference.md +0 -2
  269. package/resources/bundled-skills/rudder-docs/references/cli-reference.md +7 -2
  270. package/resources/bundled-skills/rudder-docs/references/operating-practices.md +10 -6
  271. package/resources/bundled-skills/rudder-docs/references/plugin-authoring.md +38 -114
  272. package/resources/bundled-skills/rudder-docs/references/source-map.md +2 -0
  273. package/skills/app-builder/SKILL.md +39 -9
  274. package/skills/app-builder/assets/scaffold/app/globals.css +109 -16
  275. package/skills/app-builder/assets/scaffold/components/contacts-workspace.tsx +176 -152
  276. package/skills/app-builder/assets/scaffold/components/ui/alert.tsx +12 -0
  277. package/skills/app-builder/assets/scaffold/components/ui/badge.tsx +27 -0
  278. package/skills/app-builder/assets/scaffold/components/ui/button.tsx +9 -7
  279. package/skills/app-builder/assets/scaffold/components/ui/card.tsx +15 -3
  280. package/skills/app-builder/assets/scaffold/components/ui/empty.tsx +18 -0
  281. package/skills/app-builder/assets/scaffold/components/ui/field.tsx +23 -0
  282. package/skills/app-builder/assets/scaffold/components/ui/input.tsx +1 -1
  283. package/skills/app-builder/assets/scaffold/components/ui/label.tsx +1 -1
  284. package/skills/app-builder/assets/scaffold/components/ui/separator.tsx +6 -0
  285. package/skills/app-builder/assets/scaffold/components/ui/skeleton.tsx +6 -0
  286. package/skills/app-builder/assets/scaffold/components/ui/table.tsx +30 -0
  287. package/skills/app-builder/assets/scaffold/components.json +20 -0
  288. package/skills/app-builder/assets/scaffold/next-env.d.ts +1 -1
  289. package/skills/app-builder/assets/scaffold/next.config.ts +19 -0
  290. package/skills/app-builder/assets/scaffold/package.json +2 -1
  291. package/skills/app-builder/assets/scaffold/rudder.app.json +1 -1
  292. package/skills/app-builder/assets/scaffold/rudder.ui.json +13 -0
  293. package/skills/app-builder/assets/scaffold/scripts/validate-rudder-ui.mjs +50 -0
  294. package/skills/app-builder/assets/scaffold/tests/e2e/app.spec.ts +35 -1
  295. package/skills/app-builder/evals/evals.json +2 -1
  296. package/skills/app-builder/references/design-guidelines.md +19 -2
  297. package/skills/app-builder/references/rudder-ui-preset.md +73 -0
  298. package/skills/app-builder/references/scaffold-contract.md +12 -0
  299. package/skills/app-builder/references/verification.md +6 -0
  300. package/skills/app-builder/scripts/report-build-status.mjs +83 -0
  301. package/skills/rudder-docs/SKILL.md +2 -2
  302. package/skills/rudder-docs/evals/retrieval-authority-evals.json +40 -0
  303. package/skills/rudder-docs/evals/trigger-evals.json +2 -2
  304. package/skills/rudder-docs/references/api-reference.md +0 -2
  305. package/skills/rudder-docs/references/cli-reference.md +7 -2
  306. package/skills/rudder-docs/references/operating-practices.md +10 -6
  307. package/skills/rudder-docs/references/plugin-authoring.md +38 -114
  308. package/skills/rudder-docs/references/source-map.md +2 -0
  309. package/ui-dist/assets/{LibraryLiveSurface-cHCJmmsl.js → LibraryLiveSurface-D4uCo0l0.js} +1 -1
  310. package/ui-dist/assets/{abnfDiagram-VRR7QNED-BORJvkew.js → abnfDiagram-VRR7QNED-FF2qcR6A.js} +1 -1
  311. package/ui-dist/assets/addon-fit-4gL7JXzc.js +1 -0
  312. package/ui-dist/assets/{arc-DPUzhx87.js → arc-D5pLjh6B.js} +1 -1
  313. package/ui-dist/assets/{architectureDiagram-ZJ3FMSHR-Bz_hY8LM.js → architectureDiagram-ZJ3FMSHR-BvqY-HXg.js} +1 -1
  314. package/ui-dist/assets/{blockDiagram-677ZJIJ3-Bq1X3YkP.js → blockDiagram-677ZJIJ3-BU6ZbJ0s.js} +1 -1
  315. package/ui-dist/assets/{c4Diagram-LMCZKHZV-BawEM9Pc.js → c4Diagram-LMCZKHZV-Cl5Gsovj.js} +1 -1
  316. package/ui-dist/assets/channel-HcmprA3I.js +1 -0
  317. package/ui-dist/assets/{chunk-2Q5K7J3B-D0D5ZOaA.js → chunk-2Q5K7J3B-4a2agt_p.js} +1 -1
  318. package/ui-dist/assets/{chunk-32BRIVSS-T90P7lug.js → chunk-32BRIVSS-CF0oOO2T.js} +1 -1
  319. package/ui-dist/assets/{chunk-5VM5RSS4-jcAERTgh.js → chunk-5VM5RSS4-CsSq2zX2.js} +1 -1
  320. package/ui-dist/assets/{chunk-EX3LRPZG-t9-JXwnR.js → chunk-EX3LRPZG-B6riETVZ.js} +1 -1
  321. package/ui-dist/assets/{chunk-JWPE2WC7-hqgD1saC.js → chunk-JWPE2WC7-S-p1xu0r.js} +1 -1
  322. package/ui-dist/assets/{chunk-MOJQB5TN-BsSUoYzd.js → chunk-MOJQB5TN-mVE4v_LV.js} +1 -1
  323. package/ui-dist/assets/{chunk-RYQCIY6F-YcdDh2Zn.js → chunk-RYQCIY6F-CElbgpgs.js} +1 -1
  324. package/ui-dist/assets/{chunk-V7JOEXUC-ChFyH9Su.js → chunk-V7JOEXUC-8XM3povP.js} +1 -1
  325. package/ui-dist/assets/{chunk-VR4S4FIN-BjVK8IyX.js → chunk-VR4S4FIN-LrThp3ht.js} +1 -1
  326. package/ui-dist/assets/{chunk-XXDRQBXY-D-TvO9vT.js → chunk-XXDRQBXY-D38vLb4t.js} +1 -1
  327. package/ui-dist/assets/classDiagram-OUVF2IWQ-Dpe8LaLf.js +1 -0
  328. package/ui-dist/assets/classDiagram-v2-EOCWNBFH-Dpe8LaLf.js +1 -0
  329. package/ui-dist/assets/{cose-bilkent-JH36ORCC-DBwhASJG.js → cose-bilkent-JH36ORCC-CmpZMaDV.js} +1 -1
  330. package/ui-dist/assets/{cynefin-VYW2F7L2-SlCRmwl2.js → cynefin-VYW2F7L2-D3RnbBvI.js} +1 -1
  331. package/ui-dist/assets/{cynefinDiagram-TSTJHNR4-DImV6N_p.js → cynefinDiagram-TSTJHNR4-DZTcUojp.js} +1 -1
  332. package/ui-dist/assets/{dagre-VKFMJZFB-FH4Wv8Zn.js → dagre-VKFMJZFB-6jXSDi0S.js} +1 -1
  333. package/ui-dist/assets/{diagram-FQU43EPY-CrZvQjId.js → diagram-FQU43EPY-DIMm3mfS.js} +1 -1
  334. package/ui-dist/assets/{diagram-G47NLZAW-B7IGl_T3.js → diagram-G47NLZAW-Cyo22v0_.js} +1 -1
  335. package/ui-dist/assets/{diagram-NH7WQ7WH-CB4i7H1a.js → diagram-NH7WQ7WH-CHDV0nSL.js} +1 -1
  336. package/ui-dist/assets/{diagram-OA4YK3LP-DNyWPYY9.js → diagram-OA4YK3LP-Jijx9vQO.js} +1 -1
  337. package/ui-dist/assets/{diagram-WEI45ONY-BAhxbhpi.js → diagram-WEI45ONY-CcL19HLE.js} +1 -1
  338. package/ui-dist/assets/{ebnfDiagram-CCIWWBDH-ClXtQ9qt.js → ebnfDiagram-CCIWWBDH-D94h-RFQ.js} +1 -1
  339. package/ui-dist/assets/{erDiagram-Q63AITRT-DGXiMYfn.js → erDiagram-Q63AITRT-B3ypUGZX.js} +1 -1
  340. package/ui-dist/assets/{flowDiagram-23GEKE2U-CdZ-02zc.js → flowDiagram-23GEKE2U-DjCT6Y1o.js} +1 -1
  341. package/ui-dist/assets/{ganttDiagram-NO4QXBWP-TxhzNpta.js → ganttDiagram-NO4QXBWP-C3QVhTc9.js} +1 -1
  342. package/ui-dist/assets/{gitGraphDiagram-IHSO6WYX-D6Q_w6wR.js → gitGraphDiagram-IHSO6WYX-D0trBzU5.js} +1 -1
  343. package/ui-dist/assets/{graph-CxNmbpl9.js → graph-D1zFmVUP.js} +1 -1
  344. package/ui-dist/assets/{index-Cx6oIZPm.js → index-B0GEsWui.js} +568 -593
  345. package/ui-dist/assets/{index-BA9tMBhO.js → index-B8bxQLfN.js} +1 -1
  346. package/ui-dist/assets/{index-C_nwI4Yj.js → index-BFktZ2tu.js} +1 -1
  347. package/ui-dist/assets/index-BT7dphT4.css +32 -0
  348. package/ui-dist/assets/{index-BoTz5S-X.js → index-Bk_yesiO.js} +1 -1
  349. package/ui-dist/assets/{index-CXnqg1Oq.js → index-BwutQLG1.js} +1 -1
  350. package/ui-dist/assets/{index-AkhgKOxC.js → index-CB4zr_Ku.js} +1 -1
  351. package/ui-dist/assets/{index-Rau2cGm0.js → index-CC89UPa-.js} +1 -1
  352. package/ui-dist/assets/{index-kbWUQ1um.js → index-CFWOO6yn.js} +1 -1
  353. package/ui-dist/assets/{index-DU2LI7f9.js → index-CK8u9b07.js} +1 -1
  354. package/ui-dist/assets/{index-C12QC1Ex.js → index-CRolpP90.js} +1 -1
  355. package/ui-dist/assets/{index-Bxz75ICF.js → index-CiCRRUVV.js} +1 -1
  356. package/ui-dist/assets/{index-Do78GymY.js → index-D8JG-IU9.js} +1 -1
  357. package/ui-dist/assets/{index-CW21qWFm.js → index-DKCiVvJo.js} +1 -1
  358. package/ui-dist/assets/{index-BujwWE3j.js → index-G2yfKEf_.js} +1 -1
  359. package/ui-dist/assets/{index-BQ87dGIq.js → index-or2C22bw.js} +1 -1
  360. package/ui-dist/assets/{infoDiagram-FWYZ7A6U-CnJd4-Jq.js → infoDiagram-FWYZ7A6U-Co0nkcV4.js} +1 -1
  361. package/ui-dist/assets/{ishikawaDiagram-FXEZZL3T-Bq-qc3pD.js → ishikawaDiagram-FXEZZL3T-CkIg1Jdu.js} +1 -1
  362. package/ui-dist/assets/{journeyDiagram-5HDEW3XC-NSmpUGUA.js → journeyDiagram-5HDEW3XC-AYUT6JuJ.js} +1 -1
  363. package/ui-dist/assets/{kanban-definition-HUTT4EX6-D7pgWtfA.js → kanban-definition-HUTT4EX6-C3H2XW08.js} +1 -1
  364. package/ui-dist/assets/{layout-BRuo6LWe.js → layout-sZWyqNOu.js} +1 -1
  365. package/ui-dist/assets/{linear-CkaWI9Nd.js → linear-BLTYou8N.js} +1 -1
  366. package/ui-dist/assets/{map-CgA6tTpZ.js → map-zKBdHkX8.js} +1 -1
  367. package/ui-dist/assets/{mermaid.core-DrXOt-P6.js → mermaid.core-DbjdFip8.js} +4 -4
  368. package/ui-dist/assets/{mindmap-definition-LN4V7U3C-D9ImeWBe.js → mindmap-definition-LN4V7U3C-DcDNQ4GQ.js} +1 -1
  369. package/ui-dist/assets/{pegDiagram-2B236MQR-Cq-zZ_zz.js → pegDiagram-2B236MQR-BGq1PngU.js} +1 -1
  370. package/ui-dist/assets/{pieDiagram-ENE6RG2P-FgNgy726.js → pieDiagram-ENE6RG2P-BfXWRzNb.js} +1 -1
  371. package/ui-dist/assets/{quadrantDiagram-ABIIQ3AL-BxQbmGmi.js → quadrantDiagram-ABIIQ3AL-AYMVAbo1.js} +1 -1
  372. package/ui-dist/assets/{railroadDiagram-RFXS5EU6-CrpbkPH2.js → railroadDiagram-RFXS5EU6-B0PoG0Ih.js} +1 -1
  373. package/ui-dist/assets/{requirementDiagram-TGXJPOKE-DQ-65ZW6.js → requirementDiagram-TGXJPOKE-Cuuu9wfw.js} +1 -1
  374. package/ui-dist/assets/{sankeyDiagram-HTMAVEWB-Bom0lMZm.js → sankeyDiagram-HTMAVEWB-BceAc42f.js} +1 -1
  375. package/ui-dist/assets/{sequenceDiagram-DBY2YBRQ-C1MSDLDj.js → sequenceDiagram-DBY2YBRQ-cqJ71-Rw.js} +1 -1
  376. package/ui-dist/assets/{sizeCapture-X5ZJPWSS-Bn1vxebD.js → sizeCapture-X5ZJPWSS-DQ6MibbA.js} +1 -1
  377. package/ui-dist/assets/{stateDiagram-2N3HPSRC-GRRQpmzI.js → stateDiagram-2N3HPSRC-Bdl-XY7t.js} +1 -1
  378. package/ui-dist/assets/stateDiagram-v2-6OUMAXLB-Cjj7yPIO.js +1 -0
  379. package/ui-dist/assets/{swimlanes-5IMT3BWC-BcOOCZ4q.js → swimlanes-5IMT3BWC-Dpo2HDtE.js} +2 -2
  380. package/ui-dist/assets/swimlanesDiagram-G3AALYLV-CPmIkNCu.js +8 -0
  381. package/ui-dist/assets/{timeline-definition-FHXFAJF6-gi6amswh.js → timeline-definition-FHXFAJF6-BzmJ-xnC.js} +1 -1
  382. package/ui-dist/assets/{vennDiagram-L72KCM5P-B9uqeyQt.js → vennDiagram-L72KCM5P-BF2EI7vn.js} +1 -1
  383. package/ui-dist/assets/{wardleyDiagram-EHGQE667-BnqWAMiE.js → wardleyDiagram-EHGQE667-DM65x1i1.js} +1 -1
  384. package/ui-dist/assets/xterm-DZP7bLZ5.js +9 -0
  385. package/ui-dist/assets/{xychartDiagram-FW5EYKEG-BJXKltIN.js → xychartDiagram-FW5EYKEG-3Q2t9pdU.js} +1 -1
  386. package/ui-dist/index.html +2 -2
  387. package/dist/bootstrap/plugin-host-runtime.d.ts +0 -116
  388. package/dist/bootstrap/plugin-host-runtime.d.ts.map +0 -1
  389. package/dist/bootstrap/plugin-host-runtime.js +0 -179
  390. package/dist/bootstrap/plugin-host-runtime.js.map +0 -1
  391. package/dist/bundled-plugins/plugin-linear/README.md +0 -22
  392. package/dist/bundled-plugins/plugin-linear/dist/manifest.js +0 -183
  393. package/dist/bundled-plugins/plugin-linear/dist/manifest.js.map +0 -7
  394. package/dist/bundled-plugins/plugin-linear/dist/ui/index.js +0 -1285
  395. package/dist/bundled-plugins/plugin-linear/dist/ui/index.js.map +0 -7
  396. package/dist/bundled-plugins/plugin-linear/dist/worker.js +0 -10699
  397. package/dist/bundled-plugins/plugin-linear/dist/worker.js.map +0 -7
  398. package/dist/bundled-plugins/plugin-linear/package.json +0 -42
  399. package/dist/routes/plugin-ui-static.d.ts +0 -70
  400. package/dist/routes/plugin-ui-static.d.ts.map +0 -1
  401. package/dist/routes/plugin-ui-static.js +0 -375
  402. package/dist/routes/plugin-ui-static.js.map +0 -1
  403. package/dist/routes/plugins.d.ts +0 -120
  404. package/dist/routes/plugins.d.ts.map +0 -1
  405. package/dist/routes/plugins.js +0 -1125
  406. package/dist/routes/plugins.js.map +0 -1
  407. package/dist/routes/plugins.operations-routes.d.ts +0 -28
  408. package/dist/routes/plugins.operations-routes.d.ts.map +0 -1
  409. package/dist/routes/plugins.operations-routes.js +0 -720
  410. package/dist/routes/plugins.operations-routes.js.map +0 -1
  411. package/dist/services/plugin-capability-validator.d.ts +0 -108
  412. package/dist/services/plugin-capability-validator.d.ts.map +0 -1
  413. package/dist/services/plugin-capability-validator.js +0 -268
  414. package/dist/services/plugin-capability-validator.js.map +0 -1
  415. package/dist/services/plugin-config-validator.d.ts +0 -26
  416. package/dist/services/plugin-config-validator.d.ts.map +0 -1
  417. package/dist/services/plugin-config-validator.js +0 -41
  418. package/dist/services/plugin-config-validator.js.map +0 -1
  419. package/dist/services/plugin-dev-watcher.d.ts +0 -47
  420. package/dist/services/plugin-dev-watcher.d.ts.map +0 -1
  421. package/dist/services/plugin-dev-watcher.js +0 -275
  422. package/dist/services/plugin-dev-watcher.js.map +0 -1
  423. package/dist/services/plugin-event-bus.d.ts +0 -149
  424. package/dist/services/plugin-event-bus.d.ts.map +0 -1
  425. package/dist/services/plugin-event-bus.js +0 -258
  426. package/dist/services/plugin-event-bus.js.map +0 -1
  427. package/dist/services/plugin-host-service-cleanup.d.ts +0 -14
  428. package/dist/services/plugin-host-service-cleanup.d.ts.map +0 -1
  429. package/dist/services/plugin-host-service-cleanup.js +0 -37
  430. package/dist/services/plugin-host-service-cleanup.js.map +0 -1
  431. package/dist/services/plugin-host-services.d.ts +0 -13
  432. package/dist/services/plugin-host-services.d.ts.map +0 -1
  433. package/dist/services/plugin-host-services.js +0 -933
  434. package/dist/services/plugin-host-services.js.map +0 -1
  435. package/dist/services/plugin-job-coordinator.d.ts +0 -81
  436. package/dist/services/plugin-job-coordinator.d.ts.map +0 -1
  437. package/dist/services/plugin-job-coordinator.js +0 -172
  438. package/dist/services/plugin-job-coordinator.js.map +0 -1
  439. package/dist/services/plugin-job-scheduler.d.ts +0 -163
  440. package/dist/services/plugin-job-scheduler.d.ts.map +0 -1
  441. package/dist/services/plugin-job-scheduler.js +0 -452
  442. package/dist/services/plugin-job-scheduler.js.map +0 -1
  443. package/dist/services/plugin-job-store.d.ts +0 -208
  444. package/dist/services/plugin-job-store.d.ts.map +0 -1
  445. package/dist/services/plugin-job-store.js +0 -350
  446. package/dist/services/plugin-job-store.js.map +0 -1
  447. package/dist/services/plugin-lifecycle.d.ts +0 -240
  448. package/dist/services/plugin-lifecycle.d.ts.map +0 -1
  449. package/dist/services/plugin-lifecycle.js +0 -439
  450. package/dist/services/plugin-lifecycle.js.map +0 -1
  451. package/dist/services/plugin-loader.core.d.ts +0 -40
  452. package/dist/services/plugin-loader.core.d.ts.map +0 -1
  453. package/dist/services/plugin-loader.core.js +0 -879
  454. package/dist/services/plugin-loader.core.js.map +0 -1
  455. package/dist/services/plugin-loader.d.ts +0 -30
  456. package/dist/services/plugin-loader.d.ts.map +0 -1
  457. package/dist/services/plugin-loader.helpers.d.ts +0 -495
  458. package/dist/services/plugin-loader.helpers.d.ts.map +0 -1
  459. package/dist/services/plugin-loader.helpers.js +0 -238
  460. package/dist/services/plugin-loader.helpers.js.map +0 -1
  461. package/dist/services/plugin-loader.js +0 -30
  462. package/dist/services/plugin-loader.js.map +0 -1
  463. package/dist/services/plugin-loader.worker-paths.d.ts +0 -37
  464. package/dist/services/plugin-loader.worker-paths.d.ts.map +0 -1
  465. package/dist/services/plugin-loader.worker-paths.js +0 -62
  466. package/dist/services/plugin-loader.worker-paths.js.map +0 -1
  467. package/dist/services/plugin-log-retention.d.ts +0 -20
  468. package/dist/services/plugin-log-retention.d.ts.map +0 -1
  469. package/dist/services/plugin-log-retention.js +0 -63
  470. package/dist/services/plugin-log-retention.js.map +0 -1
  471. package/dist/services/plugin-manifest-validator.d.ts +0 -90
  472. package/dist/services/plugin-manifest-validator.d.ts.map +0 -1
  473. package/dist/services/plugin-manifest-validator.js +0 -72
  474. package/dist/services/plugin-manifest-validator.js.map +0 -1
  475. package/dist/services/plugin-registry.d.ts +0 -2542
  476. package/dist/services/plugin-registry.d.ts.map +0 -1
  477. package/dist/services/plugin-registry.js +0 -536
  478. package/dist/services/plugin-registry.js.map +0 -1
  479. package/dist/services/plugin-runtime-sandbox.d.ts +0 -40
  480. package/dist/services/plugin-runtime-sandbox.d.ts.map +0 -1
  481. package/dist/services/plugin-runtime-sandbox.js +0 -154
  482. package/dist/services/plugin-runtime-sandbox.js.map +0 -1
  483. package/dist/services/plugin-secrets-handler.d.ts +0 -81
  484. package/dist/services/plugin-secrets-handler.d.ts.map +0 -1
  485. package/dist/services/plugin-secrets-handler.js +0 -275
  486. package/dist/services/plugin-secrets-handler.js.map +0 -1
  487. package/dist/services/plugin-state-store.d.ts +0 -92
  488. package/dist/services/plugin-state-store.d.ts.map +0 -1
  489. package/dist/services/plugin-state-store.js +0 -190
  490. package/dist/services/plugin-state-store.js.map +0 -1
  491. package/dist/services/plugin-stream-bus.d.ts +0 -29
  492. package/dist/services/plugin-stream-bus.d.ts.map +0 -1
  493. package/dist/services/plugin-stream-bus.js +0 -48
  494. package/dist/services/plugin-stream-bus.js.map +0 -1
  495. package/dist/services/plugin-tool-dispatcher.d.ts +0 -180
  496. package/dist/services/plugin-tool-dispatcher.d.ts.map +0 -1
  497. package/dist/services/plugin-tool-dispatcher.js +0 -224
  498. package/dist/services/plugin-tool-dispatcher.js.map +0 -1
  499. package/dist/services/plugin-tool-registry.d.ts +0 -192
  500. package/dist/services/plugin-tool-registry.d.ts.map +0 -1
  501. package/dist/services/plugin-tool-registry.js +0 -224
  502. package/dist/services/plugin-tool-registry.js.map +0 -1
  503. package/dist/services/plugin-worker-manager.d.ts +0 -260
  504. package/dist/services/plugin-worker-manager.d.ts.map +0 -1
  505. package/dist/services/plugin-worker-manager.js +0 -836
  506. package/dist/services/plugin-worker-manager.js.map +0 -1
  507. package/ui-dist/assets/channel-C08AyYJr.js +0 -1
  508. package/ui-dist/assets/classDiagram-OUVF2IWQ-BIXq6fec.js +0 -1
  509. package/ui-dist/assets/classDiagram-v2-EOCWNBFH-BIXq6fec.js +0 -1
  510. package/ui-dist/assets/index-BmXb0yC1.css +0 -1
  511. package/ui-dist/assets/stateDiagram-v2-6OUMAXLB-KvSJhiLM.js +0 -1
  512. package/ui-dist/assets/swimlanesDiagram-G3AALYLV-Cr92NnJ4.js +0 -8
@@ -1,32 +1,125 @@
1
1
  @import "tailwindcss";
2
2
 
3
+ @custom-variant dark (&:is(.dark *));
4
+
3
5
  :root {
4
- --background: #f8fafc;
5
- --foreground: #172033;
6
- --card: #ffffff;
7
- --card-foreground: #172033;
8
- --muted: #eef2f7;
9
- --muted-foreground: #64748b;
10
- --primary: #2563eb;
11
- --primary-foreground: #ffffff;
12
- --destructive: #dc2626;
13
- --border: #dbe3ee;
14
- --ring: #3b82f6;
15
- --radius: 0.75rem;
6
+ color-scheme: light;
7
+ --background: oklch(0.975 0.008 80);
8
+ --foreground: oklch(0.22 0.012 75);
9
+ --card: oklch(0.992 0.004 80);
10
+ --card-foreground: oklch(0.22 0.012 75);
11
+ --popover: oklch(0.992 0.004 80);
12
+ --popover-foreground: oklch(0.22 0.012 75);
13
+ --primary: oklch(0.53 0.135 162);
14
+ --primary-foreground: oklch(0.985 0.01 160);
15
+ --secondary: oklch(0.94 0.009 78);
16
+ --secondary-foreground: oklch(0.29 0.012 75);
17
+ --muted: oklch(0.945 0.008 78);
18
+ --muted-foreground: oklch(0.52 0.014 75);
19
+ --accent: oklch(0.925 0.025 162);
20
+ --accent-foreground: oklch(0.32 0.08 162);
21
+ --destructive: oklch(0.56 0.2 27);
22
+ --destructive-foreground: oklch(0.985 0.005 27);
23
+ --border: oklch(0.875 0.01 75);
24
+ --input: oklch(0.875 0.01 75);
25
+ --ring: oklch(0.58 0.12 162);
26
+ --radius: 0.375rem;
16
27
  }
17
28
 
18
- * {
19
- border-color: var(--border);
29
+ .dark {
30
+ color-scheme: dark;
31
+ --background: oklch(0.18 0.012 75);
32
+ --foreground: oklch(0.93 0.008 75);
33
+ --card: oklch(0.215 0.012 75);
34
+ --card-foreground: oklch(0.93 0.008 75);
35
+ --popover: oklch(0.215 0.012 75);
36
+ --popover-foreground: oklch(0.93 0.008 75);
37
+ --primary: oklch(0.68 0.135 162);
38
+ --primary-foreground: oklch(0.17 0.03 162);
39
+ --secondary: oklch(0.27 0.012 75);
40
+ --secondary-foreground: oklch(0.91 0.008 75);
41
+ --muted: oklch(0.255 0.011 75);
42
+ --muted-foreground: oklch(0.69 0.012 75);
43
+ --accent: oklch(0.29 0.05 162);
44
+ --accent-foreground: oklch(0.88 0.06 162);
45
+ --destructive: oklch(0.66 0.18 27);
46
+ --destructive-foreground: oklch(0.98 0.005 27);
47
+ --border: oklch(0.34 0.012 75);
48
+ --input: oklch(0.34 0.012 75);
49
+ --ring: oklch(0.68 0.11 162);
50
+ }
51
+
52
+ @media (prefers-color-scheme: dark) {
53
+ :root:not(.light) {
54
+ color-scheme: dark;
55
+ --background: oklch(0.18 0.012 75);
56
+ --foreground: oklch(0.93 0.008 75);
57
+ --card: oklch(0.215 0.012 75);
58
+ --card-foreground: oklch(0.93 0.008 75);
59
+ --popover: oklch(0.215 0.012 75);
60
+ --popover-foreground: oklch(0.93 0.008 75);
61
+ --primary: oklch(0.68 0.135 162);
62
+ --primary-foreground: oklch(0.17 0.03 162);
63
+ --secondary: oklch(0.27 0.012 75);
64
+ --secondary-foreground: oklch(0.91 0.008 75);
65
+ --muted: oklch(0.255 0.011 75);
66
+ --muted-foreground: oklch(0.69 0.012 75);
67
+ --accent: oklch(0.29 0.05 162);
68
+ --accent-foreground: oklch(0.88 0.06 162);
69
+ --destructive: oklch(0.66 0.18 27);
70
+ --destructive-foreground: oklch(0.98 0.005 27);
71
+ --border: oklch(0.34 0.012 75);
72
+ --input: oklch(0.34 0.012 75);
73
+ --ring: oklch(0.68 0.11 162);
74
+ }
75
+ }
76
+
77
+ @theme inline {
78
+ --color-background: var(--background);
79
+ --color-foreground: var(--foreground);
80
+ --color-card: var(--card);
81
+ --color-card-foreground: var(--card-foreground);
82
+ --color-popover: var(--popover);
83
+ --color-popover-foreground: var(--popover-foreground);
84
+ --color-primary: var(--primary);
85
+ --color-primary-foreground: var(--primary-foreground);
86
+ --color-secondary: var(--secondary);
87
+ --color-secondary-foreground: var(--secondary-foreground);
88
+ --color-muted: var(--muted);
89
+ --color-muted-foreground: var(--muted-foreground);
90
+ --color-accent: var(--accent);
91
+ --color-accent-foreground: var(--accent-foreground);
92
+ --color-destructive: var(--destructive);
93
+ --color-destructive-foreground: var(--destructive-foreground);
94
+ --color-border: var(--border);
95
+ --color-input: var(--input);
96
+ --color-ring: var(--ring);
97
+ --radius-sm: calc(var(--radius) - 2px);
98
+ --radius-md: var(--radius);
99
+ --radius-lg: calc(var(--radius) + 2px);
20
100
  }
21
101
 
22
102
  body {
23
103
  margin: 0;
104
+ min-width: 320px;
24
105
  background: var(--background);
25
106
  color: var(--foreground);
26
107
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
108
+ text-rendering: optimizeLegibility;
27
109
  }
28
110
 
29
111
  button,
30
- input {
31
- font: inherit;
112
+ input,
113
+ select,
114
+ textarea {
115
+ color: inherit;
116
+ }
117
+
118
+ * {
119
+ border-color: var(--border);
120
+ }
121
+
122
+ ::selection {
123
+ background: var(--accent);
124
+ color: var(--accent-foreground);
32
125
  }
@@ -1,10 +1,15 @@
1
1
  "use client";
2
2
 
3
+ import { Alert } from "@/components/ui/alert";
4
+ import { Badge } from "@/components/ui/badge";
3
5
  import { Button } from "@/components/ui/button";
4
- import { Card, CardContent, CardHeader } from "@/components/ui/card";
6
+ import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card";
7
+ import { Empty, EmptyDescription, EmptyHeader, EmptyTitle } from "@/components/ui/empty";
8
+ import { Field, FieldGroup, FieldLabel } from "@/components/ui/field";
5
9
  import { Input } from "@/components/ui/input";
6
- import { Label } from "@/components/ui/label";
7
- import { Download, Plus, Search, Trash2, Upload } from "lucide-react";
10
+ import { Skeleton } from "@/components/ui/skeleton";
11
+ import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table";
12
+ import { Download, Plus, Search, Trash2, Upload, UsersRound } from "lucide-react";
8
13
  import { FormEvent, useCallback, useEffect, useMemo, useRef, useState } from "react";
9
14
 
10
15
  type Contact = {
@@ -25,6 +30,13 @@ type Draft = {
25
30
 
26
31
  const emptyDraft: Draft = { name: "", email: "", company: "" };
27
32
 
33
+ const statusVariant: Record<Contact["status"], "secondary" | "outline" | "success"> = {
34
+ new: "secondary",
35
+ contacted: "outline",
36
+ replied: "success",
37
+ paused: "outline",
38
+ };
39
+
28
40
  export function ContactsWorkspace() {
29
41
  const [contacts, setContacts] = useState<Contact[]>([]);
30
42
  const [draft, setDraft] = useState<Draft>(emptyDraft);
@@ -118,175 +130,187 @@ export function ContactsWorkspace() {
118
130
  }
119
131
 
120
132
  return (
121
- <div className="mx-auto grid max-w-7xl gap-6 px-4 py-6 lg:grid-cols-[minmax(0,1fr)_22rem] lg:px-8">
122
- <section className="min-w-0">
123
- <header className="mb-5 flex flex-col gap-4 sm:flex-row sm:items-end sm:justify-between">
124
- <div>
125
- <p className="mb-1 text-sm font-medium text-[var(--primary)]">Contacts</p>
126
- <h1 className="m-0 text-2xl font-semibold tracking-tight">Customer workspace</h1>
127
- <p className="mb-0 mt-2 text-sm text-[var(--muted-foreground)]">
128
- Keep the next conversation visible and every record on this device.
129
- </p>
130
- </div>
131
- <div className="flex flex-wrap gap-2">
132
- <input
133
- ref={importRef}
134
- aria-label="Import app data"
135
- className="sr-only"
136
- type="file"
137
- accept="application/json,.json"
138
- onChange={(event) => {
139
- const file = event.currentTarget.files?.[0];
140
- if (file) void importData(file);
141
- }}
142
- />
143
- <Button type="button" variant="outline" onClick={() => importRef.current?.click()}>
144
- <Upload aria-hidden size={16} />
145
- Import
146
- </Button>
147
- <Button asChild variant="outline">
148
- <a href="/api/data/export" download>
149
- <Download aria-hidden size={16} />
150
- Export
151
- </a>
152
- </Button>
133
+ <div className="min-h-screen bg-background text-foreground">
134
+ <header className="border-b bg-card/80">
135
+ <div className="mx-auto flex h-14 max-w-7xl items-center justify-between px-4 lg:px-6">
136
+ <div className="flex min-w-0 items-center gap-3">
137
+ <span className="flex size-8 shrink-0 items-center justify-center rounded-md bg-primary text-primary-foreground">
138
+ <UsersRound aria-hidden className="size-4" />
139
+ </span>
140
+ <div className="min-w-0">
141
+ <p className="m-0 truncate text-sm font-semibold">Pipeline Desk</p>
142
+ <p className="m-0 text-xs text-muted-foreground">Local customer workspace</p>
143
+ </div>
153
144
  </div>
154
- </header>
145
+ <Badge variant="outline">Development data</Badge>
146
+ </div>
147
+ </header>
155
148
 
156
- <Card>
157
- <CardHeader className="flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between">
149
+ <main className="mx-auto grid max-w-7xl gap-4 px-4 py-5 lg:grid-cols-[minmax(0,1fr)_20rem] lg:px-6">
150
+ <section className="min-w-0">
151
+ <div className="mb-4 flex flex-col gap-3 sm:flex-row sm:items-end sm:justify-between">
158
152
  <div>
159
- <h2 className="m-0 text-base font-semibold">All contacts</h2>
160
- <p className="mb-0 mt-1 text-sm text-[var(--muted-foreground)]">
161
- {contacts.length} {contacts.length === 1 ? "record" : "records"}
153
+ <h1 className="m-0 text-2xl font-semibold">Contacts</h1>
154
+ <p className="mb-0 mt-1 text-sm text-muted-foreground">
155
+ Keep the next conversation visible and every record on this device.
162
156
  </p>
163
157
  </div>
164
- <div className="relative w-full sm:w-72">
165
- <Search
166
- aria-hidden
167
- className="pointer-events-none absolute left-3 top-1/2 -translate-y-1/2 text-[var(--muted-foreground)]"
168
- size={16}
169
- />
170
- <Input
171
- aria-label="Search contacts"
172
- className="pl-9"
173
- placeholder="Search name, email, company…"
174
- value={query}
175
- onChange={(event) => setQuery(event.target.value)}
158
+ <div className="flex flex-wrap gap-2">
159
+ <input
160
+ ref={importRef}
161
+ aria-label="Import app data"
162
+ className="sr-only"
163
+ type="file"
164
+ accept="application/json,.json"
165
+ onChange={(event) => {
166
+ const file = event.currentTarget.files?.[0];
167
+ if (file) void importData(file);
168
+ }}
176
169
  />
170
+ <Button type="button" variant="outline" onClick={() => importRef.current?.click()}>
171
+ <Upload aria-hidden data-icon="inline-start" />
172
+ Import
173
+ </Button>
174
+ <Button asChild variant="outline">
175
+ <a href="/api/data/export" download>
176
+ <Download aria-hidden data-icon="inline-start" />
177
+ Export
178
+ </a>
179
+ </Button>
177
180
  </div>
178
- </CardHeader>
179
- <div aria-live="polite">
180
- {loading ? (
181
- <p className="p-8 text-center text-sm text-[var(--muted-foreground)]">
182
- Loading contacts…
183
- </p>
184
- ) : visibleContacts.length === 0 ? (
185
- <div className="p-10 text-center">
186
- <h3 className="m-0 text-base font-semibold">
187
- {contacts.length === 0 ? "No contacts yet" : "No matching contacts"}
188
- </h3>
189
- <p className="mb-0 mt-2 text-sm text-[var(--muted-foreground)]">
190
- {contacts.length === 0
191
- ? "Add the first contact with the form beside this list."
192
- : "Try a different name, email, company, or status."}
193
- </p>
181
+ </div>
182
+
183
+ <Card>
184
+ <CardHeader className="sm:flex-row sm:items-center sm:justify-between">
185
+ <div>
186
+ <CardTitle>All contacts</CardTitle>
187
+ <CardDescription>{contacts.length} {contacts.length === 1 ? "record" : "records"}</CardDescription>
188
+ </div>
189
+ <div className="relative w-full sm:w-64">
190
+ <Search aria-hidden className="pointer-events-none absolute left-3 top-1/2 size-4 -translate-y-1/2 text-muted-foreground" />
191
+ <Input
192
+ aria-label="Search contacts"
193
+ className="pl-9"
194
+ placeholder="Search contacts"
195
+ value={query}
196
+ onChange={(event) => setQuery(event.target.value)}
197
+ />
194
198
  </div>
195
- ) : (
196
- <div className="overflow-x-auto">
197
- <table className="w-full min-w-[42rem] border-collapse text-left text-sm">
198
- <thead className="bg-[var(--muted)] text-xs uppercase tracking-wide text-[var(--muted-foreground)]">
199
- <tr>
200
- <th className="px-5 py-3 font-medium" scope="col">Contact</th>
201
- <th className="px-5 py-3 font-medium" scope="col">Company</th>
202
- <th className="px-5 py-3 font-medium" scope="col">Status</th>
203
- <th className="px-5 py-3 text-right font-medium" scope="col">Actions</th>
204
- </tr>
205
- </thead>
206
- <tbody>
199
+ </CardHeader>
200
+ <div aria-live="polite">
201
+ {loading ? (
202
+ <div className="flex flex-col gap-3 p-4" aria-label="Loading contacts">
203
+ {[0, 1, 2].map((item) => <Skeleton className="h-11 w-full" key={item} />)}
204
+ </div>
205
+ ) : visibleContacts.length === 0 ? (
206
+ <Empty>
207
+ <EmptyHeader>
208
+ <EmptyTitle>{contacts.length === 0 ? "No contacts yet" : "No matching contacts"}</EmptyTitle>
209
+ <EmptyDescription>
210
+ {contacts.length === 0
211
+ ? "Add the first contact with the form beside this list."
212
+ : "Try a different name, email, company, or status."}
213
+ </EmptyDescription>
214
+ </EmptyHeader>
215
+ </Empty>
216
+ ) : (
217
+ <Table className="table-fixed sm:min-w-[40rem] sm:table-auto">
218
+ <TableHeader>
219
+ <TableRow>
220
+ <TableHead scope="col">Contact</TableHead>
221
+ <TableHead className="hidden sm:table-cell" scope="col">Company</TableHead>
222
+ <TableHead className="w-20 sm:w-auto" scope="col">Status</TableHead>
223
+ <TableHead aria-label="Actions" className="w-12 text-right sm:w-auto" scope="col">
224
+ <span className="hidden sm:inline">Actions</span>
225
+ </TableHead>
226
+ </TableRow>
227
+ </TableHeader>
228
+ <TableBody>
207
229
  {visibleContacts.map((contact) => (
208
- <tr className="border-t" key={contact.id}>
209
- <td className="px-5 py-4">
230
+ <TableRow key={contact.id}>
231
+ <TableCell>
210
232
  <strong className="block font-medium">{contact.name}</strong>
211
- <span className="text-[var(--muted-foreground)]">{contact.email}</span>
212
- </td>
213
- <td className="px-5 py-4">{contact.company || ""}</td>
214
- <td className="px-5 py-4">
215
- <span className="rounded-full bg-[var(--muted)] px-2.5 py-1 text-xs font-medium capitalize">
216
- {contact.status}
233
+ <span className="block break-all text-muted-foreground sm:inline">{contact.email}</span>
234
+ <span className="mt-1 block text-xs text-muted-foreground sm:hidden">
235
+ {contact.company || "Company not set"}
217
236
  </span>
218
- </td>
219
- <td className="px-5 py-4 text-right">
237
+ </TableCell>
238
+ <TableCell className="hidden sm:table-cell">{contact.company || "Not set"}</TableCell>
239
+ <TableCell>
240
+ <Badge variant={statusVariant[contact.status]}>{contact.status}</Badge>
241
+ </TableCell>
242
+ <TableCell className="text-right">
220
243
  <Button
221
244
  aria-label={`Delete ${contact.name}`}
222
- size="sm"
245
+ size="icon-sm"
223
246
  type="button"
224
247
  variant="ghost"
225
248
  onClick={() => void deleteContact(contact)}
226
249
  >
227
- <Trash2 aria-hidden size={16} />
250
+ <Trash2 aria-hidden />
228
251
  </Button>
229
- </td>
230
- </tr>
252
+ </TableCell>
253
+ </TableRow>
231
254
  ))}
232
- </tbody>
233
- </table>
234
- </div>
235
- )}
236
- </div>
237
- </Card>
238
- </section>
255
+ </TableBody>
256
+ </Table>
257
+ )}
258
+ </div>
259
+ </Card>
260
+ </section>
239
261
 
240
- <aside>
241
- <Card>
242
- <CardHeader>
243
- <h2 className="m-0 flex items-center gap-2 text-base font-semibold">
244
- <Plus aria-hidden size={18} />
245
- Add contact
246
- </h2>
247
- </CardHeader>
248
- <CardContent>
249
- <form className="grid gap-4" onSubmit={(event) => void createContact(event)}>
250
- <div className="grid gap-1.5">
251
- <Label htmlFor="contact-name">Name</Label>
252
- <Input
253
- id="contact-name"
254
- required
255
- autoComplete="name"
256
- value={draft.name}
257
- onChange={(event) => setDraft({ ...draft, name: event.target.value })}
258
- />
259
- </div>
260
- <div className="grid gap-1.5">
261
- <Label htmlFor="contact-email">Email</Label>
262
- <Input
263
- id="contact-email"
264
- required
265
- autoComplete="email"
266
- type="email"
267
- value={draft.email}
268
- onChange={(event) => setDraft({ ...draft, email: event.target.value })}
269
- />
270
- </div>
271
- <div className="grid gap-1.5">
272
- <Label htmlFor="contact-company">Company</Label>
273
- <Input
274
- id="contact-company"
275
- autoComplete="organization"
276
- value={draft.company}
277
- onChange={(event) => setDraft({ ...draft, company: event.target.value })}
278
- />
279
- </div>
280
- {error ? (
281
- <p className="m-0 text-sm text-[var(--destructive)]" role="alert">{error}</p>
282
- ) : null}
283
- <Button disabled={saving} type="submit">
284
- {saving ? "Adding" : "Add contact"}
285
- </Button>
286
- </form>
287
- </CardContent>
288
- </Card>
289
- </aside>
262
+ <aside>
263
+ <Card>
264
+ <CardHeader>
265
+ <CardTitle className="flex items-center gap-2">
266
+ <Plus aria-hidden className="size-4" />
267
+ Add contact
268
+ </CardTitle>
269
+ <CardDescription>Create a development record.</CardDescription>
270
+ </CardHeader>
271
+ <CardContent>
272
+ <form onSubmit={(event) => void createContact(event)}>
273
+ <FieldGroup>
274
+ <Field>
275
+ <FieldLabel htmlFor="contact-name">Name</FieldLabel>
276
+ <Input
277
+ id="contact-name"
278
+ required
279
+ autoComplete="name"
280
+ value={draft.name}
281
+ onChange={(event) => setDraft({ ...draft, name: event.target.value })}
282
+ />
283
+ </Field>
284
+ <Field>
285
+ <FieldLabel htmlFor="contact-email">Email</FieldLabel>
286
+ <Input
287
+ id="contact-email"
288
+ required
289
+ autoComplete="email"
290
+ type="email"
291
+ value={draft.email}
292
+ onChange={(event) => setDraft({ ...draft, email: event.target.value })}
293
+ />
294
+ </Field>
295
+ <Field>
296
+ <FieldLabel htmlFor="contact-company">Company</FieldLabel>
297
+ <Input
298
+ id="contact-company"
299
+ autoComplete="organization"
300
+ value={draft.company}
301
+ onChange={(event) => setDraft({ ...draft, company: event.target.value })}
302
+ />
303
+ </Field>
304
+ {error ? <Alert>{error}</Alert> : null}
305
+ <Button disabled={saving} type="submit">
306
+ {saving ? "Adding..." : "Add contact"}
307
+ </Button>
308
+ </FieldGroup>
309
+ </form>
310
+ </CardContent>
311
+ </Card>
312
+ </aside>
313
+ </main>
290
314
  </div>
291
315
  );
292
316
  }
@@ -0,0 +1,12 @@
1
+ import { cn } from "@/lib/utils";
2
+ import * as React from "react";
3
+
4
+ export function Alert({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {
5
+ return (
6
+ <div
7
+ role="alert"
8
+ className={cn("rounded-md border border-destructive/25 bg-destructive/10 px-3 py-2 text-sm text-destructive", className)}
9
+ {...props}
10
+ />
11
+ );
12
+ }
@@ -0,0 +1,27 @@
1
+ import { cn } from "@/lib/utils";
2
+ import { cva, type VariantProps } from "class-variance-authority";
3
+ import * as React from "react";
4
+
5
+ const badgeVariants = cva(
6
+ "inline-flex items-center rounded-sm border px-1.5 py-0.5 text-xs font-medium",
7
+ {
8
+ variants: {
9
+ variant: {
10
+ default: "border-transparent bg-primary text-primary-foreground",
11
+ secondary: "border-transparent bg-secondary text-secondary-foreground",
12
+ outline: "text-foreground",
13
+ success: "border-primary/20 bg-accent text-accent-foreground",
14
+ destructive: "border-destructive/20 bg-destructive/10 text-destructive",
15
+ },
16
+ },
17
+ defaultVariants: { variant: "secondary" },
18
+ },
19
+ );
20
+
21
+ export function Badge({
22
+ className,
23
+ variant,
24
+ ...props
25
+ }: React.HTMLAttributes<HTMLSpanElement> & VariantProps<typeof badgeVariants>) {
26
+ return <span className={cn(badgeVariants({ variant }), className)} {...props} />;
27
+ }
@@ -4,18 +4,20 @@ import { cva, type VariantProps } from "class-variance-authority";
4
4
  import * as React from "react";
5
5
 
6
6
  const buttonVariants = cva(
7
- "inline-flex min-h-10 items-center justify-center gap-2 rounded-lg px-4 text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] disabled:pointer-events-none disabled:opacity-50",
7
+ "inline-flex shrink-0 items-center justify-center gap-2 rounded-md text-foreground text-sm font-medium transition-colors outline-none focus-visible:ring-2 focus-visible:ring-ring/60 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4",
8
8
  {
9
9
  variants: {
10
10
  variant: {
11
- default: "bg-[var(--primary)] text-[var(--primary-foreground)] hover:brightness-95",
12
- outline: "border bg-[var(--card)] hover:bg-[var(--muted)]",
13
- ghost: "hover:bg-[var(--muted)]",
14
- destructive: "bg-[var(--destructive)] text-white hover:brightness-95",
11
+ default: "bg-primary text-primary-foreground hover:bg-primary/90",
12
+ outline: "border border-input bg-background hover:bg-accent hover:text-accent-foreground",
13
+ secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
14
+ ghost: "hover:bg-accent hover:text-accent-foreground",
15
+ destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
15
16
  },
16
17
  size: {
17
- default: "h-10",
18
- sm: "h-9 px-3",
18
+ default: "h-9 px-3.5",
19
+ sm: "h-8 px-3 text-xs",
20
+ "icon-sm": "size-8",
19
21
  },
20
22
  },
21
23
  defaultVariants: {
@@ -4,16 +4,28 @@ import * as React from "react";
4
4
  export function Card({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {
5
5
  return (
6
6
  <section
7
- className={cn("rounded-xl border bg-[var(--card)] text-[var(--card-foreground)] shadow-sm", className)}
7
+ className={cn("rounded-lg border bg-card text-card-foreground", className)}
8
8
  {...props}
9
9
  />
10
10
  );
11
11
  }
12
12
 
13
13
  export function CardHeader({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {
14
- return <div className={cn("border-b px-5 py-4", className)} {...props} />;
14
+ return <div className={cn("flex flex-col gap-1 border-b px-4 py-3", className)} {...props} />;
15
15
  }
16
16
 
17
17
  export function CardContent({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {
18
- return <div className={cn("p-5", className)} {...props} />;
18
+ return <div className={cn("p-4", className)} {...props} />;
19
+ }
20
+
21
+ export function CardTitle({ className, ...props }: React.HTMLAttributes<HTMLHeadingElement>) {
22
+ return <h2 className={cn("m-0 text-base font-semibold", className)} {...props} />;
23
+ }
24
+
25
+ export function CardDescription({ className, ...props }: React.HTMLAttributes<HTMLParagraphElement>) {
26
+ return <p className={cn("m-0 text-sm text-muted-foreground", className)} {...props} />;
27
+ }
28
+
29
+ export function CardFooter({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {
30
+ return <div className={cn("flex items-center border-t px-4 py-3", className)} {...props} />;
19
31
  }
@@ -0,0 +1,18 @@
1
+ import { cn } from "@/lib/utils";
2
+ import * as React from "react";
3
+
4
+ export function Empty({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {
5
+ return <div className={cn("flex min-h-44 flex-col items-center justify-center gap-3 p-6 text-center", className)} {...props} />;
6
+ }
7
+
8
+ export function EmptyHeader({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {
9
+ return <div className={cn("flex max-w-sm flex-col gap-1", className)} {...props} />;
10
+ }
11
+
12
+ export function EmptyTitle({ className, ...props }: React.HTMLAttributes<HTMLHeadingElement>) {
13
+ return <h3 className={cn("m-0 text-sm font-semibold", className)} {...props} />;
14
+ }
15
+
16
+ export function EmptyDescription({ className, ...props }: React.HTMLAttributes<HTMLParagraphElement>) {
17
+ return <p className={cn("m-0 text-sm text-muted-foreground", className)} {...props} />;
18
+ }