@kynetic-ai/spec 0.11.0 → 0.12.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 (501) hide show
  1. package/README.md +55 -455
  2. package/dist/agent-runtime/bootstrap.d.ts +31 -0
  3. package/dist/agent-runtime/bootstrap.d.ts.map +1 -0
  4. package/dist/agent-runtime/bootstrap.js +302 -0
  5. package/dist/agent-runtime/bootstrap.js.map +1 -0
  6. package/dist/agent-runtime/dispatch.d.ts +119 -10
  7. package/dist/agent-runtime/dispatch.d.ts.map +1 -1
  8. package/dist/agent-runtime/dispatch.js +1154 -219
  9. package/dist/agent-runtime/dispatch.js.map +1 -1
  10. package/dist/agent-runtime/invocation.d.ts +28 -1
  11. package/dist/agent-runtime/invocation.d.ts.map +1 -1
  12. package/dist/agent-runtime/invocation.js +171 -59
  13. package/dist/agent-runtime/invocation.js.map +1 -1
  14. package/dist/agent-runtime/prompts.d.ts +9 -0
  15. package/dist/agent-runtime/prompts.d.ts.map +1 -1
  16. package/dist/agent-runtime/prompts.js +42 -7
  17. package/dist/agent-runtime/prompts.js.map +1 -1
  18. package/dist/agent-runtime/session-event-accumulator.d.ts +83 -0
  19. package/dist/agent-runtime/session-event-accumulator.d.ts.map +1 -0
  20. package/dist/agent-runtime/session-event-accumulator.js +203 -0
  21. package/dist/agent-runtime/session-event-accumulator.js.map +1 -0
  22. package/dist/agent-runtime/session-event-types.d.ts +67 -0
  23. package/dist/agent-runtime/session-event-types.d.ts.map +1 -0
  24. package/dist/agent-runtime/session-event-types.js +13 -0
  25. package/dist/agent-runtime/session-event-types.js.map +1 -0
  26. package/dist/agent-runtime/workspace.d.ts +244 -0
  27. package/dist/agent-runtime/workspace.d.ts.map +1 -0
  28. package/dist/agent-runtime/workspace.js +2025 -0
  29. package/dist/agent-runtime/workspace.js.map +1 -0
  30. package/dist/agents/adapters.d.ts.map +1 -1
  31. package/dist/agents/adapters.js +58 -13
  32. package/dist/agents/adapters.js.map +1 -1
  33. package/dist/agents/spawner.d.ts +8 -0
  34. package/dist/agents/spawner.d.ts.map +1 -1
  35. package/dist/agents/spawner.js +25 -3
  36. package/dist/agents/spawner.js.map +1 -1
  37. package/dist/cli/batch-exec.js +1 -1
  38. package/dist/cli/batch-exec.js.map +1 -1
  39. package/dist/cli/command-annotations.d.ts +15 -3
  40. package/dist/cli/command-annotations.d.ts.map +1 -1
  41. package/dist/cli/command-annotations.js +23 -3
  42. package/dist/cli/command-annotations.js.map +1 -1
  43. package/dist/cli/commands/agent.d.ts +2 -0
  44. package/dist/cli/commands/agent.d.ts.map +1 -1
  45. package/dist/cli/commands/agent.js +144 -27
  46. package/dist/cli/commands/agent.js.map +1 -1
  47. package/dist/cli/commands/agents.d.ts.map +1 -1
  48. package/dist/cli/commands/agents.js +5 -5
  49. package/dist/cli/commands/agents.js.map +1 -1
  50. package/dist/cli/commands/derive.d.ts.map +1 -1
  51. package/dist/cli/commands/derive.js +118 -3
  52. package/dist/cli/commands/derive.js.map +1 -1
  53. package/dist/cli/commands/guard.d.ts.map +1 -1
  54. package/dist/cli/commands/guard.js +8 -6
  55. package/dist/cli/commands/guard.js.map +1 -1
  56. package/dist/cli/commands/index.d.ts +1 -0
  57. package/dist/cli/commands/index.d.ts.map +1 -1
  58. package/dist/cli/commands/index.js +1 -0
  59. package/dist/cli/commands/index.js.map +1 -1
  60. package/dist/cli/commands/init.d.ts.map +1 -1
  61. package/dist/cli/commands/init.js +20 -0
  62. package/dist/cli/commands/init.js.map +1 -1
  63. package/dist/cli/commands/item.d.ts.map +1 -1
  64. package/dist/cli/commands/item.js +205 -47
  65. package/dist/cli/commands/item.js.map +1 -1
  66. package/dist/cli/commands/log.d.ts.map +1 -1
  67. package/dist/cli/commands/log.js +24 -10
  68. package/dist/cli/commands/log.js.map +1 -1
  69. package/dist/cli/commands/plan-import.d.ts +3 -3
  70. package/dist/cli/commands/plan-import.d.ts.map +1 -1
  71. package/dist/cli/commands/plan-import.js +213 -528
  72. package/dist/cli/commands/plan-import.js.map +1 -1
  73. package/dist/cli/commands/plan.d.ts.map +1 -1
  74. package/dist/cli/commands/plan.js +533 -83
  75. package/dist/cli/commands/plan.js.map +1 -1
  76. package/dist/cli/commands/review.d.ts +14 -0
  77. package/dist/cli/commands/review.d.ts.map +1 -0
  78. package/dist/cli/commands/review.js +1142 -0
  79. package/dist/cli/commands/review.js.map +1 -0
  80. package/dist/cli/commands/serve.d.ts +1 -0
  81. package/dist/cli/commands/serve.d.ts.map +1 -1
  82. package/dist/cli/commands/serve.js +33 -10
  83. package/dist/cli/commands/serve.js.map +1 -1
  84. package/dist/cli/commands/session/checkpoint.d.ts +2 -4
  85. package/dist/cli/commands/session/checkpoint.d.ts.map +1 -1
  86. package/dist/cli/commands/session/checkpoint.js +6 -107
  87. package/dist/cli/commands/session/checkpoint.js.map +1 -1
  88. package/dist/cli/commands/session/commands.d.ts.map +1 -1
  89. package/dist/cli/commands/session/commands.js +33 -23
  90. package/dist/cli/commands/session/commands.js.map +1 -1
  91. package/dist/cli/commands/session/compact.js +4 -4
  92. package/dist/cli/commands/session/compact.js.map +1 -1
  93. package/dist/cli/commands/session/create.js +2 -2
  94. package/dist/cli/commands/session/create.js.map +1 -1
  95. package/dist/cli/commands/session/format.d.ts.map +1 -1
  96. package/dist/cli/commands/session/format.js +1 -6
  97. package/dist/cli/commands/session/format.js.map +1 -1
  98. package/dist/cli/commands/session/log.d.ts +32 -7
  99. package/dist/cli/commands/session/log.d.ts.map +1 -1
  100. package/dist/cli/commands/session/log.js +166 -60
  101. package/dist/cli/commands/session/log.js.map +1 -1
  102. package/dist/cli/commands/session/migrate.d.ts +9 -0
  103. package/dist/cli/commands/session/migrate.d.ts.map +1 -0
  104. package/dist/cli/commands/session/migrate.js +46 -0
  105. package/dist/cli/commands/session/migrate.js.map +1 -0
  106. package/dist/cli/commands/session/stale-close.d.ts.map +1 -1
  107. package/dist/cli/commands/session/stale-close.js +5 -8
  108. package/dist/cli/commands/session/stale-close.js.map +1 -1
  109. package/dist/cli/commands/session/types.d.ts +1 -1
  110. package/dist/cli/commands/session/types.d.ts.map +1 -1
  111. package/dist/cli/commands/setup.d.ts +2 -2
  112. package/dist/cli/commands/setup.d.ts.map +1 -1
  113. package/dist/cli/commands/setup.js +287 -257
  114. package/dist/cli/commands/setup.js.map +1 -1
  115. package/dist/cli/commands/shadow.d.ts.map +1 -1
  116. package/dist/cli/commands/shadow.js +147 -31
  117. package/dist/cli/commands/shadow.js.map +1 -1
  118. package/dist/cli/commands/skill-crud.d.ts +7 -0
  119. package/dist/cli/commands/skill-crud.d.ts.map +1 -1
  120. package/dist/cli/commands/skill-crud.js +41 -18
  121. package/dist/cli/commands/skill-crud.js.map +1 -1
  122. package/dist/cli/commands/skill-diff.d.ts.map +1 -1
  123. package/dist/cli/commands/skill-diff.js +29 -3
  124. package/dist/cli/commands/skill-diff.js.map +1 -1
  125. package/dist/cli/commands/skill-install.d.ts.map +1 -1
  126. package/dist/cli/commands/skill-install.js +5 -4
  127. package/dist/cli/commands/skill-install.js.map +1 -1
  128. package/dist/cli/commands/task.d.ts.map +1 -1
  129. package/dist/cli/commands/task.js +359 -49
  130. package/dist/cli/commands/task.js.map +1 -1
  131. package/dist/cli/commands/trait.d.ts.map +1 -1
  132. package/dist/cli/commands/trait.js +5 -27
  133. package/dist/cli/commands/trait.js.map +1 -1
  134. package/dist/cli/commands/validate.d.ts.map +1 -1
  135. package/dist/cli/commands/validate.js +113 -52
  136. package/dist/cli/commands/validate.js.map +1 -1
  137. package/dist/cli/index.d.ts.map +1 -1
  138. package/dist/cli/index.js +69 -2
  139. package/dist/cli/index.js.map +1 -1
  140. package/dist/cli/output.d.ts +26 -0
  141. package/dist/cli/output.d.ts.map +1 -1
  142. package/dist/cli/output.js +108 -1
  143. package/dist/cli/output.js.map +1 -1
  144. package/dist/cli/sync-mode.d.ts +44 -0
  145. package/dist/cli/sync-mode.d.ts.map +1 -0
  146. package/dist/cli/sync-mode.js +64 -0
  147. package/dist/cli/sync-mode.js.map +1 -0
  148. package/dist/daemon/middleware/project-context.ts +25 -7
  149. package/dist/daemon/project-context.ts +18 -0
  150. package/dist/daemon/routes/agent-dispatch.ts +99 -22
  151. package/dist/daemon/routes/aggregation.ts +184 -0
  152. package/dist/daemon/routes/inbox.ts +5 -0
  153. package/dist/daemon/routes/items.ts +145 -0
  154. package/dist/daemon/routes/meta.ts +1 -1
  155. package/dist/daemon/routes/projects.ts +28 -6
  156. package/dist/daemon/routes/ref-resolution.ts +119 -0
  157. package/dist/daemon/routes/refs.ts +42 -0
  158. package/dist/daemon/routes/session-related.ts +140 -0
  159. package/dist/daemon/routes/sessions.ts +420 -19
  160. package/dist/daemon/routes/tasks.ts +62 -5
  161. package/dist/daemon/routes/triage.ts +40 -1
  162. package/dist/daemon/server.ts +143 -49
  163. package/dist/daemon/session-sync.ts +11 -0
  164. package/dist/daemon/shadow-sync.ts +11 -0
  165. package/dist/daemon/watcher.ts +56 -5
  166. package/dist/daemon/websocket/project-resolution.ts +77 -0
  167. package/dist/export/json.d.ts.map +1 -1
  168. package/dist/export/json.js +104 -1
  169. package/dist/export/json.js.map +1 -1
  170. package/dist/export/types.d.ts +52 -1
  171. package/dist/export/types.d.ts.map +1 -1
  172. package/dist/index.d.ts +1 -0
  173. package/dist/index.d.ts.map +1 -1
  174. package/dist/index.js +1 -0
  175. package/dist/index.js.map +1 -1
  176. package/dist/parser/agent-detection.d.ts +1 -1
  177. package/dist/parser/agent-detection.d.ts.map +1 -1
  178. package/dist/parser/agent-detection.js +10 -0
  179. package/dist/parser/agent-detection.js.map +1 -1
  180. package/dist/parser/config.d.ts +397 -2
  181. package/dist/parser/config.d.ts.map +1 -1
  182. package/dist/parser/config.js +125 -3
  183. package/dist/parser/config.js.map +1 -1
  184. package/dist/parser/dispatch-workspaces.d.ts +18 -0
  185. package/dist/parser/dispatch-workspaces.d.ts.map +1 -0
  186. package/dist/parser/dispatch-workspaces.js +209 -0
  187. package/dist/parser/dispatch-workspaces.js.map +1 -0
  188. package/dist/parser/doctor.d.ts.map +1 -1
  189. package/dist/parser/doctor.js +27 -8
  190. package/dist/parser/doctor.js.map +1 -1
  191. package/dist/parser/file-lock.d.ts.map +1 -1
  192. package/dist/parser/file-lock.js +9 -2
  193. package/dist/parser/file-lock.js.map +1 -1
  194. package/dist/parser/index.d.ts +6 -0
  195. package/dist/parser/index.d.ts.map +1 -1
  196. package/dist/parser/index.js +6 -0
  197. package/dist/parser/index.js.map +1 -1
  198. package/dist/parser/plans.d.ts.map +1 -1
  199. package/dist/parser/plans.js +1 -0
  200. package/dist/parser/plans.js.map +1 -1
  201. package/dist/parser/refs.d.ts +8 -1
  202. package/dist/parser/refs.d.ts.map +1 -1
  203. package/dist/parser/refs.js +27 -1
  204. package/dist/parser/refs.js.map +1 -1
  205. package/dist/parser/review-operations.d.ts +72 -0
  206. package/dist/parser/review-operations.d.ts.map +1 -0
  207. package/dist/parser/review-operations.js +185 -0
  208. package/dist/parser/review-operations.js.map +1 -0
  209. package/dist/parser/review-task-integration.d.ts +78 -0
  210. package/dist/parser/review-task-integration.d.ts.map +1 -0
  211. package/dist/parser/review-task-integration.js +173 -0
  212. package/dist/parser/review-task-integration.js.map +1 -0
  213. package/dist/parser/review-threads.d.ts +101 -0
  214. package/dist/parser/review-threads.d.ts.map +1 -0
  215. package/dist/parser/review-threads.js +222 -0
  216. package/dist/parser/review-threads.js.map +1 -0
  217. package/dist/parser/review-validation.d.ts +69 -0
  218. package/dist/parser/review-validation.d.ts.map +1 -0
  219. package/dist/parser/review-validation.js +207 -0
  220. package/dist/parser/review-validation.js.map +1 -0
  221. package/dist/parser/reviews.d.ts +58 -0
  222. package/dist/parser/reviews.d.ts.map +1 -0
  223. package/dist/parser/reviews.js +230 -0
  224. package/dist/parser/reviews.js.map +1 -0
  225. package/dist/parser/session-branch.d.ts +91 -0
  226. package/dist/parser/session-branch.d.ts.map +1 -0
  227. package/dist/parser/session-branch.js +565 -0
  228. package/dist/parser/session-branch.js.map +1 -0
  229. package/dist/parser/session-sync-scheduler.d.ts +53 -0
  230. package/dist/parser/session-sync-scheduler.d.ts.map +1 -0
  231. package/dist/parser/session-sync-scheduler.js +100 -0
  232. package/dist/parser/session-sync-scheduler.js.map +1 -0
  233. package/dist/parser/setup-status.d.ts +7 -1
  234. package/dist/parser/setup-status.d.ts.map +1 -1
  235. package/dist/parser/setup-status.js +104 -39
  236. package/dist/parser/setup-status.js.map +1 -1
  237. package/dist/parser/shadow-sync-scheduler.d.ts +71 -0
  238. package/dist/parser/shadow-sync-scheduler.d.ts.map +1 -0
  239. package/dist/parser/shadow-sync-scheduler.js +139 -0
  240. package/dist/parser/shadow-sync-scheduler.js.map +1 -0
  241. package/dist/parser/shadow.d.ts +121 -14
  242. package/dist/parser/shadow.d.ts.map +1 -1
  243. package/dist/parser/shadow.js +752 -27
  244. package/dist/parser/shadow.js.map +1 -1
  245. package/dist/parser/skill-render.d.ts +24 -0
  246. package/dist/parser/skill-render.d.ts.map +1 -1
  247. package/dist/parser/skill-render.js +98 -26
  248. package/dist/parser/skill-render.js.map +1 -1
  249. package/dist/parser/validate.d.ts +43 -3
  250. package/dist/parser/validate.d.ts.map +1 -1
  251. package/dist/parser/validate.js +204 -30
  252. package/dist/parser/validate.js.map +1 -1
  253. package/dist/parser/yaml.d.ts +47 -11
  254. package/dist/parser/yaml.d.ts.map +1 -1
  255. package/dist/parser/yaml.js +329 -149
  256. package/dist/parser/yaml.js.map +1 -1
  257. package/dist/review/checks.d.ts +97 -0
  258. package/dist/review/checks.d.ts.map +1 -0
  259. package/dist/review/checks.js +175 -0
  260. package/dist/review/checks.js.map +1 -0
  261. package/dist/review/index.d.ts +3 -0
  262. package/dist/review/index.d.ts.map +1 -0
  263. package/dist/review/index.js +3 -0
  264. package/dist/review/index.js.map +1 -0
  265. package/dist/review/subject-bindings.d.ts +83 -0
  266. package/dist/review/subject-bindings.d.ts.map +1 -0
  267. package/dist/review/subject-bindings.js +175 -0
  268. package/dist/review/subject-bindings.js.map +1 -0
  269. package/dist/schema/common.d.ts +26 -0
  270. package/dist/schema/common.d.ts.map +1 -1
  271. package/dist/schema/common.js +13 -0
  272. package/dist/schema/common.js.map +1 -1
  273. package/dist/schema/dispatch-workspace.d.ts +2643 -0
  274. package/dist/schema/dispatch-workspace.d.ts.map +1 -0
  275. package/dist/schema/dispatch-workspace.js +187 -0
  276. package/dist/schema/dispatch-workspace.js.map +1 -0
  277. package/dist/schema/inbox.d.ts +8 -8
  278. package/dist/schema/index.d.ts +2 -0
  279. package/dist/schema/index.d.ts.map +1 -1
  280. package/dist/schema/index.js +2 -0
  281. package/dist/schema/index.js.map +1 -1
  282. package/dist/schema/meta.d.ts +648 -116
  283. package/dist/schema/meta.d.ts.map +1 -1
  284. package/dist/schema/meta.js +27 -0
  285. package/dist/schema/meta.js.map +1 -1
  286. package/dist/schema/plan.d.ts +30 -19
  287. package/dist/schema/plan.d.ts.map +1 -1
  288. package/dist/schema/plan.js +3 -1
  289. package/dist/schema/plan.js.map +1 -1
  290. package/dist/schema/review-records.d.ts +2676 -0
  291. package/dist/schema/review-records.d.ts.map +1 -0
  292. package/dist/schema/review-records.js +232 -0
  293. package/dist/schema/review-records.js.map +1 -0
  294. package/dist/schema/spec.d.ts +32 -14
  295. package/dist/schema/spec.d.ts.map +1 -1
  296. package/dist/schema/spec.js +5 -0
  297. package/dist/schema/spec.js.map +1 -1
  298. package/dist/schema/task.d.ts +187 -29
  299. package/dist/schema/task.d.ts.map +1 -1
  300. package/dist/schema/task.js +12 -2
  301. package/dist/schema/task.js.map +1 -1
  302. package/dist/schema/triage.d.ts +22 -22
  303. package/dist/sessions/cache.d.ts +119 -0
  304. package/dist/sessions/cache.d.ts.map +1 -0
  305. package/dist/sessions/cache.js +284 -0
  306. package/dist/sessions/cache.js.map +1 -0
  307. package/dist/sessions/index.d.ts +1 -0
  308. package/dist/sessions/index.d.ts.map +1 -1
  309. package/dist/sessions/index.js +2 -0
  310. package/dist/sessions/index.js.map +1 -1
  311. package/dist/sessions/legacy.d.ts +77 -0
  312. package/dist/sessions/legacy.d.ts.map +1 -0
  313. package/dist/sessions/legacy.js +146 -0
  314. package/dist/sessions/legacy.js.map +1 -0
  315. package/dist/sessions/store.d.ts +103 -73
  316. package/dist/sessions/store.d.ts.map +1 -1
  317. package/dist/sessions/store.js +335 -186
  318. package/dist/sessions/store.js.map +1 -1
  319. package/dist/sessions/types.d.ts +44 -16
  320. package/dist/sessions/types.d.ts.map +1 -1
  321. package/dist/sessions/types.js +11 -2
  322. package/dist/sessions/types.js.map +1 -1
  323. package/dist/strings/errors.d.ts +32 -0
  324. package/dist/strings/errors.d.ts.map +1 -1
  325. package/dist/strings/errors.js +17 -0
  326. package/dist/strings/errors.js.map +1 -1
  327. package/dist/strings/labels.d.ts +1 -0
  328. package/dist/strings/labels.d.ts.map +1 -1
  329. package/dist/strings/labels.js +1 -0
  330. package/dist/strings/labels.js.map +1 -1
  331. package/dist/utils/activity.d.ts +101 -0
  332. package/dist/utils/activity.d.ts.map +1 -0
  333. package/dist/utils/activity.js +408 -0
  334. package/dist/utils/activity.js.map +1 -0
  335. package/dist/utils/git.d.ts +31 -0
  336. package/dist/utils/git.d.ts.map +1 -1
  337. package/dist/utils/git.js +87 -0
  338. package/dist/utils/git.js.map +1 -1
  339. package/dist/utils/index.d.ts +2 -0
  340. package/dist/utils/index.d.ts.map +1 -1
  341. package/dist/utils/index.js +1 -0
  342. package/dist/utils/index.js.map +1 -1
  343. package/dist/web-ui/_app/immutable/assets/0.tmlwn-Ih.css +1 -0
  344. package/dist/web-ui/_app/immutable/assets/9.BwwJybWx.css +1 -0
  345. package/dist/web-ui/_app/immutable/chunks/2KqE8gtn.js +1 -0
  346. package/dist/web-ui/_app/immutable/chunks/70-t_QvE.js +1 -0
  347. package/dist/web-ui/_app/immutable/chunks/AiWQj974.js +1 -0
  348. package/dist/web-ui/_app/immutable/chunks/{CPPfDSei.js → B25nWFyA.js} +4 -4
  349. package/dist/web-ui/_app/immutable/chunks/{DBYE9jOd.js → B2bcA_Q_.js} +1 -1
  350. package/dist/web-ui/_app/immutable/chunks/B5e5HYyB.js +1 -0
  351. package/dist/web-ui/_app/immutable/chunks/B7-5z6eA.js +1 -0
  352. package/dist/web-ui/_app/immutable/chunks/B7bGmhK0.js +1 -0
  353. package/dist/web-ui/_app/immutable/chunks/{DzO4hlg9.js → B8tYZKAE.js} +1 -1
  354. package/dist/web-ui/_app/immutable/chunks/{B5LJFxqa.js → BFGAyJjD.js} +1 -1
  355. package/dist/web-ui/_app/immutable/chunks/BG0850zf.js +1 -0
  356. package/dist/web-ui/_app/immutable/chunks/{DAMmvwn4.js → BG8eSzAd.js} +1 -1
  357. package/dist/web-ui/_app/immutable/chunks/BIMxXS8I.js +1 -0
  358. package/dist/web-ui/_app/immutable/chunks/BSzL1fpU.js +1 -0
  359. package/dist/web-ui/_app/immutable/chunks/BYtjHfeq.js +1 -0
  360. package/dist/web-ui/_app/immutable/chunks/{DxCk-KHc.js → Bp5pFYXL.js} +1 -1
  361. package/dist/web-ui/_app/immutable/chunks/{B8a0xDxR.js → BsJFsuAT.js} +1 -1
  362. package/dist/web-ui/_app/immutable/chunks/BvpNHcD6.js +1 -0
  363. package/dist/web-ui/_app/immutable/chunks/BypqA25-.js +1 -0
  364. package/dist/web-ui/_app/immutable/chunks/{BVA9Exy-.js → C0w6WDm5.js} +1 -1
  365. package/dist/web-ui/_app/immutable/chunks/C5_PAZ0y.js +1 -0
  366. package/dist/web-ui/_app/immutable/chunks/CDRO15Iv.js +1 -0
  367. package/dist/web-ui/_app/immutable/chunks/CF1CoqD5.js +1 -0
  368. package/dist/web-ui/_app/immutable/chunks/CS2sa4_m.js +1 -0
  369. package/dist/web-ui/_app/immutable/chunks/{BJ0JX3ea.js → CWUQwB9H.js} +1 -1
  370. package/dist/web-ui/_app/immutable/chunks/CY5FDdSU.js +1 -0
  371. package/dist/web-ui/_app/immutable/chunks/C_7MTDoj.js +1 -0
  372. package/dist/web-ui/_app/immutable/chunks/{D3vxvonu.js → CaAJD3dl.js} +1 -1
  373. package/dist/web-ui/_app/immutable/chunks/{BP352uRn.js → ChB5iyEL.js} +1 -1
  374. package/dist/web-ui/_app/immutable/chunks/{pE6cYWlS.js → ChQD-6N8.js} +1 -1
  375. package/dist/web-ui/_app/immutable/chunks/{Eo4gF7ih.js → CqbsoCwA.js} +1 -1
  376. package/dist/web-ui/_app/immutable/chunks/DCeJW50p.js +1 -0
  377. package/dist/web-ui/_app/immutable/chunks/{Cncwi6fQ.js → DJtZNgcs.js} +1 -1
  378. package/dist/web-ui/_app/immutable/chunks/DKIeaprD.js +1 -0
  379. package/dist/web-ui/_app/immutable/chunks/DLd2uVIA.js +1 -0
  380. package/dist/web-ui/_app/immutable/chunks/{DjcCz-PU.js → DW_subyT.js} +2 -2
  381. package/dist/web-ui/_app/immutable/chunks/DbU6lVn0.js +1 -0
  382. package/dist/web-ui/_app/immutable/chunks/Dc7ZCC5m.js +1 -0
  383. package/dist/web-ui/_app/immutable/chunks/Dd5umPsk.js +2 -0
  384. package/dist/web-ui/_app/immutable/chunks/{BysXJlZb.js → Dg_zDpDS.js} +1 -1
  385. package/dist/web-ui/_app/immutable/chunks/Dgqu8Yuc.js +1 -0
  386. package/dist/web-ui/_app/immutable/chunks/DmxsPZTB.js +1 -0
  387. package/dist/web-ui/_app/immutable/chunks/DphTaFUB.js +1 -0
  388. package/dist/web-ui/_app/immutable/chunks/DqK4iHp0.js +1 -0
  389. package/dist/web-ui/_app/immutable/chunks/{D9QNBZM2.js → DqT6OH_u.js} +2 -2
  390. package/dist/web-ui/_app/immutable/chunks/Ds9I9wQb.js +1 -0
  391. package/dist/web-ui/_app/immutable/chunks/Du5ng3u4.js +1 -0
  392. package/dist/web-ui/_app/immutable/chunks/DxJw79Wi.js +1 -0
  393. package/dist/web-ui/_app/immutable/chunks/GFTX8GgV.js +1 -0
  394. package/dist/web-ui/_app/immutable/chunks/{C076q4JN.js → HNjs76Zz.js} +1 -1
  395. package/dist/web-ui/_app/immutable/chunks/HVMjDi4_.js +1 -0
  396. package/dist/web-ui/_app/immutable/chunks/{BkOJ8DkV.js → P0A_fJvS.js} +1 -1
  397. package/dist/web-ui/_app/immutable/chunks/T3vGWjIL.js +1 -0
  398. package/dist/web-ui/_app/immutable/chunks/VTmrX9Qu.js +1 -0
  399. package/dist/web-ui/_app/immutable/chunks/{k_Qegko0.js → Xvwhx_F1.js} +1 -1
  400. package/dist/web-ui/_app/immutable/chunks/Yyz1XMQA.js +1 -0
  401. package/dist/web-ui/_app/immutable/chunks/{62JVKtnb.js → dh5HeqUr.js} +1 -1
  402. package/dist/web-ui/_app/immutable/chunks/fZMteyca.js +62 -0
  403. package/dist/web-ui/_app/immutable/chunks/{D82RulSH.js → gPrj-hqC.js} +1 -1
  404. package/dist/web-ui/_app/immutable/chunks/htcWMiYN.js +1 -0
  405. package/dist/web-ui/_app/immutable/chunks/{CwELQvbx.js → oTsvd9y4.js} +1 -1
  406. package/dist/web-ui/_app/immutable/chunks/qJfLUwU4.js +1 -0
  407. package/dist/web-ui/_app/immutable/chunks/xCtiO_JE.js +1 -0
  408. package/dist/web-ui/_app/immutable/chunks/{DvA-KON-.js → y4GeEH6k.js} +1 -1
  409. package/dist/web-ui/_app/immutable/entry/app.C4h_eOn6.js +2 -0
  410. package/dist/web-ui/_app/immutable/entry/start.CQFTf9ep.js +1 -0
  411. package/dist/web-ui/_app/immutable/nodes/0.Dh1xO970.js +1 -0
  412. package/dist/web-ui/_app/immutable/nodes/1.l75D3Opx.js +1 -0
  413. package/dist/web-ui/_app/immutable/nodes/10.DBidBPc-.js +1 -0
  414. package/dist/web-ui/_app/immutable/nodes/11.Ab0gUKWe.js +1 -0
  415. package/dist/web-ui/_app/immutable/nodes/12.CMsnoxfs.js +1 -0
  416. package/dist/web-ui/_app/immutable/nodes/13.D8YKuknB.js +1 -0
  417. package/dist/web-ui/_app/immutable/nodes/14.DZ0aan7y.js +1 -0
  418. package/dist/web-ui/_app/immutable/nodes/15.CUIKreDL.js +2 -0
  419. package/dist/web-ui/_app/immutable/nodes/16.BWc8--BO.js +1 -0
  420. package/dist/web-ui/_app/immutable/nodes/2.CDUonbuh.js +1 -0
  421. package/dist/web-ui/_app/immutable/nodes/3.Ctg3M00i.js +1 -0
  422. package/dist/web-ui/_app/immutable/nodes/4.Ci-JDwbA.js +2 -0
  423. package/dist/web-ui/_app/immutable/nodes/5.CTyEDAq0.js +1 -0
  424. package/dist/web-ui/_app/immutable/nodes/6.BTZZqsAb.js +1 -0
  425. package/dist/web-ui/_app/immutable/nodes/7.BI52g_Jo.js +137 -0
  426. package/dist/web-ui/_app/immutable/nodes/8.3hZPaB9x.js +1 -0
  427. package/dist/web-ui/_app/immutable/nodes/9.DS49kvwl.js +29 -0
  428. package/dist/web-ui/_app/version.json +1 -1
  429. package/dist/web-ui/favicon-192.png +0 -0
  430. package/dist/web-ui/favicon-32.png +0 -0
  431. package/dist/web-ui/favicon.ico +0 -0
  432. package/dist/web-ui/index.html +14 -14
  433. package/package.json +12 -6
  434. package/plugin/.claude-plugin/marketplace.json +1 -1
  435. package/plugin/.claude-plugin/plugin.json +1 -1
  436. package/plugin/plugins/kspec/skills/merge/SKILL.md +127 -0
  437. package/plugin/plugins/kspec/skills/plan/SKILL.md +55 -26
  438. package/plugin/plugins/kspec/skills/review/SKILL.md +350 -133
  439. package/plugin/plugins/kspec/skills/task-work/SKILL.md +96 -106
  440. package/templates/agents-sections/04-pr-workflow.md +15 -12
  441. package/templates/agents-sections/06-ralph-loop.md +15 -10
  442. package/templates/skills/manifest.yaml +25 -7
  443. package/templates/skills/merge/SKILL.md +120 -0
  444. package/templates/skills/plan/SKILL.md +55 -26
  445. package/templates/skills/review/SKILL.md +346 -130
  446. package/templates/skills/task-work/SKILL.md +93 -103
  447. package/dist/web-ui/_app/immutable/assets/0.BJaYkGW2.css +0 -1
  448. package/dist/web-ui/_app/immutable/assets/9.SzGLxi4x.css +0 -1
  449. package/dist/web-ui/_app/immutable/chunks/-lc0BifF.js +0 -1
  450. package/dist/web-ui/_app/immutable/chunks/8RBjHMN1.js +0 -1
  451. package/dist/web-ui/_app/immutable/chunks/B5wTVqxm.js +0 -1
  452. package/dist/web-ui/_app/immutable/chunks/B6VSmczZ.js +0 -1
  453. package/dist/web-ui/_app/immutable/chunks/BEOQc37C.js +0 -1
  454. package/dist/web-ui/_app/immutable/chunks/BHtYorjv.js +0 -1
  455. package/dist/web-ui/_app/immutable/chunks/BMuCqDX8.js +0 -1
  456. package/dist/web-ui/_app/immutable/chunks/BUZujXJ2.js +0 -1
  457. package/dist/web-ui/_app/immutable/chunks/BWET-efb.js +0 -1
  458. package/dist/web-ui/_app/immutable/chunks/BXkNecpt.js +0 -1
  459. package/dist/web-ui/_app/immutable/chunks/BYzrIfX8.js +0 -1
  460. package/dist/web-ui/_app/immutable/chunks/BpuwufMc.js +0 -1
  461. package/dist/web-ui/_app/immutable/chunks/BwMO4RrG.js +0 -1
  462. package/dist/web-ui/_app/immutable/chunks/C33JaVbg.js +0 -1
  463. package/dist/web-ui/_app/immutable/chunks/CGtqifKp.js +0 -1
  464. package/dist/web-ui/_app/immutable/chunks/CHDZZ7OG.js +0 -1
  465. package/dist/web-ui/_app/immutable/chunks/CUir3f4J.js +0 -60
  466. package/dist/web-ui/_app/immutable/chunks/CrCIbn0C.js +0 -1
  467. package/dist/web-ui/_app/immutable/chunks/D6TVmR9T.js +0 -1
  468. package/dist/web-ui/_app/immutable/chunks/D7LTux4W.js +0 -1
  469. package/dist/web-ui/_app/immutable/chunks/DAh4Wfku.js +0 -1
  470. package/dist/web-ui/_app/immutable/chunks/DAx07bEQ.js +0 -1
  471. package/dist/web-ui/_app/immutable/chunks/DOno4cA2.js +0 -1
  472. package/dist/web-ui/_app/immutable/chunks/DQA8NZIH.js +0 -2
  473. package/dist/web-ui/_app/immutable/chunks/DRfPm2bo.js +0 -1
  474. package/dist/web-ui/_app/immutable/chunks/DhQhksaB.js +0 -1
  475. package/dist/web-ui/_app/immutable/chunks/DjG7s6hm.js +0 -1
  476. package/dist/web-ui/_app/immutable/chunks/DkltRNvh.js +0 -1
  477. package/dist/web-ui/_app/immutable/chunks/DlaTnPKL.js +0 -1
  478. package/dist/web-ui/_app/immutable/chunks/ExCq5swK.js +0 -1
  479. package/dist/web-ui/_app/immutable/chunks/T3zZGv51.js +0 -1
  480. package/dist/web-ui/_app/immutable/chunks/XZumBYeP.js +0 -1
  481. package/dist/web-ui/_app/immutable/chunks/_ySfNjkF.js +0 -1
  482. package/dist/web-ui/_app/immutable/chunks/iEtR5cV6.js +0 -1
  483. package/dist/web-ui/_app/immutable/entry/app.Cgu6uKeS.js +0 -2
  484. package/dist/web-ui/_app/immutable/entry/start.9XifnLoB.js +0 -1
  485. package/dist/web-ui/_app/immutable/nodes/0.DISwcKSK.js +0 -1
  486. package/dist/web-ui/_app/immutable/nodes/1.Cx2Ufqp1.js +0 -1
  487. package/dist/web-ui/_app/immutable/nodes/10.C3z8ijXL.js +0 -1
  488. package/dist/web-ui/_app/immutable/nodes/11.DZdIjZmM.js +0 -1
  489. package/dist/web-ui/_app/immutable/nodes/12.FsIGfAOa.js +0 -1
  490. package/dist/web-ui/_app/immutable/nodes/13.DZoFwagf.js +0 -1
  491. package/dist/web-ui/_app/immutable/nodes/14.DaIzDKbQ.js +0 -1
  492. package/dist/web-ui/_app/immutable/nodes/15.BYyt4XWF.js +0 -2
  493. package/dist/web-ui/_app/immutable/nodes/16.CQkSqpOe.js +0 -1
  494. package/dist/web-ui/_app/immutable/nodes/2.Bkf_j2UJ.js +0 -1
  495. package/dist/web-ui/_app/immutable/nodes/3.kaMCurJG.js +0 -1
  496. package/dist/web-ui/_app/immutable/nodes/4.BSsFPTHG.js +0 -2
  497. package/dist/web-ui/_app/immutable/nodes/5.CpPlcCEZ.js +0 -1
  498. package/dist/web-ui/_app/immutable/nodes/6.BN4FqQmY.js +0 -1
  499. package/dist/web-ui/_app/immutable/nodes/7.9kBYIZik.js +0 -1
  500. package/dist/web-ui/_app/immutable/nodes/8.BuijtZ6B.js +0 -1
  501. package/dist/web-ui/_app/immutable/nodes/9.C-Weba8R.js +0 -1
@@ -0,0 +1,2 @@
1
+ import{c as se,a,f as d,t as ue}from"../chunks/y4GeEH6k.js";import{f as c,p as _t,a as mt,s as o,c as r,g as e,u as P,r as s,n as M,t as b}from"../chunks/CaAJD3dl.js";import{d as pt,s as _}from"../chunks/DqT6OH_u.js";import{l as _e,s as me,i as q}from"../chunks/Dg_zDpDS.js";import{u as gt,a as Ye,b as Ze,K as $t,q as Ve,a1 as ht,h as we,j as Ce,B as Pe,y as Se,A as et}from"../chunks/Dd5umPsk.js";import{C as ve}from"../chunks/CF1CoqD5.js";import{C as ce}from"../chunks/Du5ng3u4.js";import{C as fe}from"../chunks/DKIeaprD.js";import{C as Me}from"../chunks/B7bGmhK0.js";import{R as xt,S as yt}from"../chunks/HNjs76Zz.js";import"../chunks/DxJw79Wi.js";import{I as pe,s as ge}from"../chunks/DLd2uVIA.js";import{T as je}from"../chunks/BFGAyJjD.js";function Fe(K,g){const L=_e(g,["children","$$slots","$$events","$$legacy"]);const I=[["circle",{cx:"12",cy:"12",r:"10"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16"}]];pe(K,me({name:"circle-alert"},()=>L,{get iconNode(){return I},children:(A,l)=>{var n=se(),N=c(n);ge(N,g,"default",{}),a(A,n)},$$slots:{default:!0}}))}function Ke(K,g){const L=_e(g,["children","$$slots","$$events","$$legacy"]);const I=[["circle",{cx:"12",cy:"12",r:"10"}],["path",{d:"m9 12 2 2 4-4"}]];pe(K,me({name:"circle-check"},()=>L,{get iconNode(){return I},children:(A,l)=>{var n=se(),N=c(n);ge(N,g,"default",{}),a(A,n)},$$slots:{default:!0}}))}function bt(K,g){const L=_e(g,["children","$$slots","$$events","$$legacy"]);const I=[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z"}],["path",{d:"M12 9v4"}],["path",{d:"M12 17h.01"}]];pe(K,me({name:"file-exclamation-point"},()=>L,{get iconNode(){return I},children:(A,l)=>{var n=se(),N=c(n);ge(N,g,"default",{}),a(A,n)},$$slots:{default:!0}}))}function tt(K,g){const L=_e(g,["children","$$slots","$$events","$$legacy"]);const I=[["circle",{cx:"12",cy:"12",r:"10"}],["path",{d:"M12 16v-4"}],["path",{d:"M12 8h.01"}]];pe(K,me({name:"info"},()=>L,{get iconNode(){return I},children:(A,l)=>{var n=se(),N=c(n);ge(N,g,"default",{}),a(A,n)},$$slots:{default:!0}}))}function wt(K,g){const L=_e(g,["children","$$slots","$$events","$$legacy"]);const I=[["path",{d:"M9 17H7A5 5 0 0 1 7 7"}],["path",{d:"M15 7h2a5 5 0 0 1 4 8"}],["line",{x1:"8",x2:"12",y1:"12",y2:"12"}],["line",{x1:"2",x2:"22",y1:"2",y2:"22"}]];pe(K,me({name:"link-2-off"},()=>L,{get iconNode(){return I},children:(A,l)=>{var n=se(),N=c(n);ge(N,g,"default",{}),a(A,n)},$$slots:{default:!0}}))}function Ct(K,g){const L=_e(g,["children","$$slots","$$events","$$legacy"]);const I=[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"}],["path",{d:"M12 8v4"}],["path",{d:"M12 16h.01"}]];pe(K,me({name:"shield-alert"},()=>L,{get iconNode(){return I},children:(A,l)=>{var n=se(),N=c(n);ge(N,g,"default",{}),a(A,n)},$$slots:{default:!0}}))}var Pt=d("<!> Valid",1),kt=d("<!> Issues Found",1),St=d(`<button class="inline-flex items-center gap-1.5 rounded-md border px-3 py-1.5 text-sm
2
+ text-muted-foreground transition-colors hover:bg-muted/50" data-testid="refresh-btn"><!> Refresh</button>`),Mt=d('<div class="rounded-md bg-severity-error-muted p-4 text-sm text-severity-error-muted-fg" role="alert" data-testid="error"> </div>'),It=d('<div class="h-4 w-24 rounded bg-muted ds-shimmer"></div>'),At=d('<div class="h-8 w-16 rounded bg-muted ds-shimmer"></div>'),Nt=d("<!> <!>",1),zt=d('<div class="h-4 w-32 rounded bg-muted ds-shimmer"></div>'),Tt=d('<div class="h-4 w-full rounded bg-muted ds-shimmer"></div>'),Et=d("<!> <!>",1),Wt=d('<div class="space-y-4" data-testid="loading"><div class="grid gap-4 md:grid-cols-3"></div> <!></div>'),qt=d('<div class="text-center text-muted-foreground py-12" data-testid="empty"><!> <p>No validation data available.</p> <p class="text-sm">Connect to a running daemon to run validation.</p></div>'),Rt=d("<!> <!>",1),Vt=d('<div> </div> <p class="text-xs text-muted-foreground">Schema, reference, and trait cycle errors</p>',1),jt=d("<!> <!>",1),Ft=d("<!> <!>",1),Kt=d('<div> </div> <p class="text-xs text-muted-foreground">Completeness, orphans, and reference warnings</p>',1),Lt=d("<!> <!>",1),Qt=d("<!> <!>",1),Ot=d('<div class="text-2xl font-bold" data-testid="valid-item-count"> </div> <p class="text-xs text-muted-foreground"> </p>',1),Bt=d("<!> <!>",1),Ut=d("<!> Alignment",1),Dt=d('<div class="grid gap-4 sm:grid-cols-2 lg:grid-cols-4"><div class="space-y-1" data-testid="spec-coverage"><p class="text-sm text-muted-foreground">Spec Coverage</p> <div class="flex items-baseline gap-2"><span class="text-2xl font-bold"> </span> <span class="text-xs text-muted-foreground"> </span></div> <div class="h-2 w-full rounded-full bg-muted overflow-hidden"><div class="h-full rounded-full transition-all bg-severity-success"></div></div></div> <div class="space-y-1" data-testid="ac-coverage"><p class="text-sm text-muted-foreground">AC Coverage</p> <div class="flex items-baseline gap-2"><span class="text-2xl font-bold"> </span> <span class="text-xs text-muted-foreground"> </span></div> <div class="h-2 w-full rounded-full bg-muted overflow-hidden"><div class="h-full rounded-full transition-all bg-severity-info"></div></div></div> <div class="space-y-1" data-testid="orphaned-tasks"><p class="text-sm text-muted-foreground">Orphaned Tasks</p> <div class="flex items-baseline gap-2"><span> </span> <span class="text-xs text-muted-foreground">tasks without linked specs</span></div></div> <div class="space-y-1" data-testid="orphaned-specs"><p class="text-sm text-muted-foreground">Orphaned Specs</p> <div class="flex items-baseline gap-2"><span> </span> <span class="text-xs text-muted-foreground">specs without linked tasks</span></div></div></div>'),Ht=d("<!> <!>",1),Gt=d('<p class="text-xs text-muted-foreground mt-1 font-mono truncate"> </p>'),Jt=d('<div class="rounded-md border p-3 bg-severity-error-muted border-severity-error-border" data-testid="issue-error"><div class="flex items-start gap-2"><!> <div class="min-w-0"><div class="flex items-center gap-2 flex-wrap"><!> <span class="text-sm font-medium"> </span></div> <!></div></div></div>'),Xt=d('<div data-testid="error-issues"><h3 class="text-sm font-medium text-severity-error mb-2 flex items-center gap-1.5"><!> </h3> <div class="space-y-2"></div></div>'),Yt=d('<p class="text-xs text-muted-foreground mt-1 font-mono truncate"> </p>'),Zt=d('<div class="rounded-md border p-3 bg-severity-warning-muted border-severity-warning-border" data-testid="issue-warning"><div class="flex items-start gap-2"><!> <div class="min-w-0"><div class="flex items-center gap-2 flex-wrap"><!> <span class="text-sm font-medium"> </span></div> <!></div></div></div>'),es=d('<div data-testid="warning-issues"><h3 class="text-sm font-medium text-severity-warning-muted-fg mb-2 flex items-center gap-1.5"><!> </h3> <div class="space-y-2"></div></div>'),ts=d('<p class="text-xs text-muted-foreground mt-1 font-mono truncate"> </p>'),ss=d('<div class="rounded-md border p-3 bg-severity-info-muted border-severity-info-border" data-testid="issue-info"><div class="flex items-start gap-2"><!> <div class="min-w-0"><div class="flex items-center gap-2 flex-wrap"><!> <span class="text-sm font-medium"> </span></div> <!></div></div></div>'),rs=d('<div data-testid="info-issues"><h3 class="text-sm font-medium text-severity-info mb-2 flex items-center gap-1.5"><!> </h3> <div class="space-y-2"></div></div>'),as=d('<div class="space-y-4" data-testid="issues-list"><h2 class="text-xl font-semibold flex items-center gap-2"><!> </h2> <!> <!> <!></div>'),os=d('<div class="text-center text-muted-foreground"><!> <p class="font-medium">No issues found</p> <p class="text-sm">All validation checks passed.</p></div>'),is=d('<div class="grid gap-4 md:grid-cols-3" data-testid="summary-cards"><!> <!> <!></div> <!> <!>',1),ds=d('<div class="flex flex-col gap-6" data-testid="validate-page"><div class="flex items-center justify-between"><div class="flex items-center gap-3"><h1 class="text-3xl font-bold">Validate</h1> <!></div> <!></div> <!> <!></div>');function ys(K,g){_t(g,!0);const L=gt(),I=Ye(()=>({queryKey:Ve.validation.results(),queryFn:()=>$t(),enabled:Ze()})),A=Ye(()=>({queryKey:Ve.validation.aggregation(),queryFn:()=>ht(),enabled:Ze()}));let l=P(()=>I.data??null),n=P(()=>A.data??null),N=P(()=>I.isLoading||A.isLoading),ke=P(()=>I.error?.message??A.error?.message??""),Ie=P(()=>e(l)?e(l).schemaErrors.length+e(l).refErrors.length+e(l).traitCycles.length:0),Le=P(()=>e(l)?e(l).refWarnings.length+e(l).completenessWarnings.length+e(l).orphans.length:0),Qe=P(()=>e(n)?.entity_counts.items??0),$e=P(()=>e(n)?.ac_counts.total??0),Oe=P(()=>e(n)?.ac_counts.uncovered??0),Be=P(()=>e(n)?.orphan_count??0),Ue=P(()=>{if(!e(l))return 0;const i=new Set;for(const t of e(l).schemaErrors)t.file&&i.add(t.file);for(const t of e(l).refErrors){const R=t.sourceUlid??t.sourceFile;R&&i.add(R)}for(const t of e(l).traitCycles)t.traitRef&&i.add(t.traitRef);return Math.max(0,e(Qe)-i.size)}),De=P(()=>!e(n)||e(n).stats.totalSpecs===0?0:Math.round(e(n).stats.specsWithTasks/e(n).stats.totalSpecs*100)),He=P(()=>{if(e($e)===0)return 100;const i=e($e)-e(Oe);return Math.round(i/e($e)*100)}),he=P(()=>{if(!e(l)&&!e(n))return[];const i=[];if(e(l)){for(const t of e(l).schemaErrors)i.push({severity:"error",category:"Schema",message:t.message,detail:t.file+(t.path?` (${t.path})`:"")});for(const t of e(l).refErrors)i.push({severity:"error",category:"Reference",message:t.message,detail:`${t.ref} in ${t.field}`});for(const t of e(l).traitCycles)i.push({severity:"error",category:"Trait Cycle",message:t.message,detail:t.cycle.join(" → ")});for(const t of e(l).refWarnings)i.push({severity:"warning",category:"Reference",message:t.message,detail:`${t.ref} in ${t.field}`});for(const t of e(l).completenessWarnings)i.push({severity:"warning",category:rt(t.type),message:t.message,detail:t.details??`${t.itemRef} — ${t.itemTitle}`});for(const t of e(l).orphans)i.push({severity:"info",category:"Orphan",message:`${t.title} (${t.type})`,detail:t.file??t.ulid})}if(e(n))for(const t of e(n).warnings)i.push({severity:t.type==="status_mismatch"?"warning":"info",category:at(t.type),message:t.message,detail:t.specTitle??t.specUlid});return i}),Ae=P(()=>e(he).filter(i=>i.severity==="error")),Ne=P(()=>e(he).filter(i=>i.severity==="warning")),ze=P(()=>e(he).filter(i=>i.severity==="info"));function st(){L.invalidateQueries({queryKey:Ve.validation.all})}function rt(i){return{missing_acceptance_criteria:"Missing AC",missing_description:"Missing Description",status_inconsistency:"Status Inconsistency",missing_test_coverage:"Test Coverage",automation_eligible_no_spec:"No Spec",ac_schema_field_mismatch:"AC Schema Mismatch"}[i]??i}function at(i){return{orphaned_spec:"Orphaned Spec",status_mismatch:"Status Mismatch",stale_implementation:"Stale Implementation"}[i]??i}var Te=ds(),Ee=r(Te),We=r(Ee),ot=o(r(We),2);{var it=i=>{var t=se(),R=c(t);{var xe=z=>{Pe(z,{class:"bg-severity-success text-severity-success-fg","data-testid":"status-valid",children:(T,D)=>{var Q=Pt(),O=c(Q);Ke(O,{class:"mr-1 h-3 w-3"}),M(),a(T,Q)},$$slots:{default:!0}})},ne=z=>{Pe(z,{class:"bg-severity-error text-severity-error-fg","data-testid":"status-invalid",children:(T,D)=>{var Q=kt(),O=c(Q);Ct(O,{class:"mr-1 h-3 w-3"}),M(),a(T,Q)},$$slots:{default:!0}})};q(R,z=>{e(l).valid&&e(Ie)===0?z(xe):z(ne,!1)})}a(i,t)};q(ot,i=>{!e(N)&&e(l)&&i(it)})}s(We);var dt=o(We,2);{var nt=i=>{var t=St();t.__click=st;var R=r(t);xt(R,{class:"h-3.5 w-3.5"}),M(),s(t),a(i,t)};q(dt,i=>{e(N)||i(nt)})}s(Ee);var Ge=o(Ee,2);{var lt=i=>{var t=Mt(),R=r(t,!0);s(t),b(()=>_(R,e(ke))),a(i,t)};q(Ge,i=>{e(ke)&&i(lt)})}var vt=o(Ge,2);{var ct=i=>{var t=Wt(),R=r(t);we(R,20,()=>Array(3),Ce,(ne,z)=>{ve(ne,{children:(T,D)=>{var Q=Nt(),O=c(Q);fe(O,{class:"pb-2",children:(H,be)=>{var le=It();a(H,le)},$$slots:{default:!0}});var ye=o(O,2);ce(ye,{children:(H,be)=>{var le=At();a(H,le)},$$slots:{default:!0}}),a(T,Q)},$$slots:{default:!0}})}),s(R);var xe=o(R,2);ve(xe,{children:(ne,z)=>{var T=Et(),D=c(T);fe(D,{class:"pb-2",children:(O,ye)=>{var H=zt();a(O,H)},$$slots:{default:!0}});var Q=o(D,2);ce(Q,{class:"space-y-3",children:(O,ye)=>{var H=se(),be=c(H);we(be,16,()=>Array(3),Ce,(le,Je)=>{var qe=Tt();a(le,qe)}),a(O,H)},$$slots:{default:!0}}),a(ne,T)},$$slots:{default:!0}}),s(t),a(i,t)},ut=i=>{var t=se(),R=c(t);{var xe=z=>{var T=qt(),D=r(T);yt(D,{class:"mx-auto h-12 w-12 mb-4 opacity-50"}),M(4),s(T),a(z,T)},ne=z=>{var T=is(),D=c(T),Q=r(D);ve(Q,{"data-testid":"error-count-card",children:(k,G)=>{var E=jt(),S=c(E);fe(S,{class:"flex flex-row items-center justify-between pb-2 space-y-0",children:(x,B)=>{var u=Rt(),v=c(u);Me(v,{class:"text-sm font-medium",children:(m,p)=>{M();var $=ue("Errors");a(m,$)},$$slots:{default:!0}});var f=o(v,2);Fe(f,{class:"h-4 w-4 text-severity-error"}),a(x,u)},$$slots:{default:!0}});var V=o(S,2);ce(V,{children:(x,B)=>{var u=Vt(),v=c(u);let f;var m=r(v,!0);s(v),M(2),b(()=>{f=Se(v,1,"text-2xl font-bold",null,f,{"text-severity-error":e(Ie)>0}),_(m,e(Ie))}),a(x,u)},$$slots:{default:!0}}),a(k,E)},$$slots:{default:!0}});var O=o(Q,2);ve(O,{"data-testid":"warning-count-card",children:(k,G)=>{var E=Lt(),S=c(E);fe(S,{class:"flex flex-row items-center justify-between pb-2 space-y-0",children:(x,B)=>{var u=Ft(),v=c(u);Me(v,{class:"text-sm font-medium",children:(m,p)=>{M();var $=ue("Warnings");a(m,$)},$$slots:{default:!0}});var f=o(v,2);je(f,{class:"h-4 w-4 text-severity-warning"}),a(x,u)},$$slots:{default:!0}});var V=o(S,2);ce(V,{children:(x,B)=>{var u=Kt(),v=c(u);let f;var m=r(v,!0);s(v),M(2),b(()=>{f=Se(v,1,"text-2xl font-bold",null,f,{"text-severity-warning":e(Le)>0}),_(m,e(Le))}),a(x,u)},$$slots:{default:!0}}),a(k,E)},$$slots:{default:!0}});var ye=o(O,2);ve(ye,{"data-testid":"valid-count-card",children:(k,G)=>{var E=Bt(),S=c(E);fe(S,{class:"flex flex-row items-center justify-between pb-2 space-y-0",children:(x,B)=>{var u=Qt(),v=c(u);Me(v,{class:"text-sm font-medium",children:(m,p)=>{M();var $=ue("Valid Items");a(m,$)},$$slots:{default:!0}});var f=o(v,2);Ke(f,{class:"h-4 w-4 text-severity-success"}),a(x,u)},$$slots:{default:!0}});var V=o(S,2);ce(V,{children:(x,B)=>{var u=Ot(),v=c(u),f=r(v,!0);s(v);var m=o(v,2),p=r(m);s(m),b(()=>{_(f,e(Ue)),_(p,`${e(Ue)??""} of ${e(Qe)??""} items passing validation`)}),a(x,u)},$$slots:{default:!0}}),a(k,E)},$$slots:{default:!0}}),s(D);var H=o(D,2);{var be=k=>{ve(k,{"data-testid":"alignment-section",children:(G,E)=>{var S=Ht(),V=c(S);fe(V,{children:(B,u)=>{Me(B,{class:"flex items-center gap-2",children:(v,f)=>{var m=Ut(),p=c(m);wt(p,{class:"h-5 w-5"}),M(),a(v,m)},$$slots:{default:!0}})},$$slots:{default:!0}});var x=o(V,2);ce(x,{children:(B,u)=>{var v=Dt(),f=r(v),m=o(r(f),2),p=r(m),$=r(p);s(p);var j=o(p,2),X=r(j);s(j),s(m);var oe=o(m,2),Y=r(oe);s(oe),s(f);var re=o(f,2),y=o(r(re),2),W=r(y),Z=r(W);s(W);var J=o(W,2),ee=r(J);s(J),s(y);var F=o(y,2),te=r(F);s(F),s(re);var U=o(re,2),ie=o(r(U),2),ae=r(ie);let de;var h=r(ae,!0);s(ae),M(2),s(ie),s(U);var w=o(U,2),C=o(r(w),2),Re=r(C);let Xe;var ft=r(Re,!0);s(Re),M(2),s(C),s(w),s(v),b(()=>{_($,`${e(De)??""}%`),_(X,`${e(n).stats.specsWithTasks??""}/${e(n).stats.totalSpecs??""} specs with tasks`),et(Y,`width: ${e(De)??""}%`),_(Z,`${e(He)??""}%`),_(ee,`${e($e)-e(Oe)}/${e($e)??""} ACs with tests`),et(te,`width: ${e(He)??""}%`),de=Se(ae,1,"text-2xl font-bold",null,de,{"text-severity-warning":e(Be)>0}),_(h,e(Be)),Xe=Se(Re,1,"text-2xl font-bold",null,Xe,{"text-severity-warning":e(n).stats.orphanedSpecs>0}),_(ft,e(n).stats.orphanedSpecs)}),a(B,v)},$$slots:{default:!0}}),a(G,S)},$$slots:{default:!0}})};q(H,k=>{e(n)&&k(be)})}var le=o(H,2);{var Je=k=>{var G=as(),E=r(G),S=r(E);bt(S,{class:"h-5 w-5"});var V=o(S);s(E);var x=o(E,2);{var B=p=>{var $=Xt(),j=r($),X=r(j);Fe(X,{class:"h-4 w-4"});var oe=o(X);s(j);var Y=o(j,2);we(Y,21,()=>e(Ae),Ce,(re,y)=>{var W=Jt(),Z=r(W),J=r(Z);Fe(J,{class:"h-4 w-4 mt-0.5 text-severity-error shrink-0"});var ee=o(J,2),F=r(ee),te=r(F);Pe(te,{variant:"outline",class:"text-xs",children:(h,w)=>{M();var C=ue();b(()=>_(C,e(y).category)),a(h,C)},$$slots:{default:!0}});var U=o(te,2),ie=r(U,!0);s(U),s(F);var ae=o(F,2);{var de=h=>{var w=Gt(),C=r(w,!0);s(w),b(()=>_(C,e(y).detail)),a(h,w)};q(ae,h=>{e(y).detail&&h(de)})}s(ee),s(Z),s(W),b(()=>_(ie,e(y).message)),a(re,W)}),s(Y),s($),b(()=>_(oe,` Errors (${e(Ae).length??""})`)),a(p,$)};q(x,p=>{e(Ae).length>0&&p(B)})}var u=o(x,2);{var v=p=>{var $=es(),j=r($),X=r(j);je(X,{class:"h-4 w-4"});var oe=o(X);s(j);var Y=o(j,2);we(Y,21,()=>e(Ne),Ce,(re,y)=>{var W=Zt(),Z=r(W),J=r(Z);je(J,{class:"h-4 w-4 mt-0.5 text-severity-warning-muted-fg shrink-0"});var ee=o(J,2),F=r(ee),te=r(F);Pe(te,{variant:"outline",class:"text-xs",children:(h,w)=>{M();var C=ue();b(()=>_(C,e(y).category)),a(h,C)},$$slots:{default:!0}});var U=o(te,2),ie=r(U,!0);s(U),s(F);var ae=o(F,2);{var de=h=>{var w=Yt(),C=r(w,!0);s(w),b(()=>_(C,e(y).detail)),a(h,w)};q(ae,h=>{e(y).detail&&h(de)})}s(ee),s(Z),s(W),b(()=>_(ie,e(y).message)),a(re,W)}),s(Y),s($),b(()=>_(oe,` Warnings (${e(Ne).length??""})`)),a(p,$)};q(u,p=>{e(Ne).length>0&&p(v)})}var f=o(u,2);{var m=p=>{var $=rs(),j=r($),X=r(j);tt(X,{class:"h-4 w-4"});var oe=o(X);s(j);var Y=o(j,2);we(Y,21,()=>e(ze),Ce,(re,y)=>{var W=ss(),Z=r(W),J=r(Z);tt(J,{class:"h-4 w-4 mt-0.5 text-severity-info shrink-0"});var ee=o(J,2),F=r(ee),te=r(F);Pe(te,{variant:"outline",class:"text-xs",children:(h,w)=>{M();var C=ue();b(()=>_(C,e(y).category)),a(h,C)},$$slots:{default:!0}});var U=o(te,2),ie=r(U,!0);s(U),s(F);var ae=o(F,2);{var de=h=>{var w=ts(),C=r(w,!0);s(w),b(()=>_(C,e(y).detail)),a(h,w)};q(ae,h=>{e(y).detail&&h(de)})}s(ee),s(Z),s(W),b(()=>_(ie,e(y).message)),a(re,W)}),s(Y),s($),b(()=>_(oe,` Info (${e(ze).length??""})`)),a(p,$)};q(f,p=>{e(ze).length>0&&p(m)})}s(G),b(()=>_(V,` Issues (${e(he).length??""})`)),a(k,G)},qe=k=>{var G=se(),E=c(G);{var S=V=>{ve(V,{"data-testid":"no-issues",children:(x,B)=>{ce(x,{class:"py-8",children:(u,v)=>{var f=os(),m=r(f);Ke(m,{class:"mx-auto h-12 w-12 mb-4 text-severity-success opacity-75"}),M(4),s(f),a(u,f)},$$slots:{default:!0}})},$$slots:{default:!0}})};q(E,V=>{e(ke)||V(S)},!0)}a(k,G)};q(le,k=>{e(he).length>0?k(Je):k(qe,!1)})}a(z,T)};q(R,z=>{!e(l)&&!e(n)&&!e(ke)?z(xe):z(ne,!1)},!0)}a(i,t)};q(vt,i=>{e(N)?i(ct):i(ut,!1)})}s(Te),a(K,Te),mt()}pt(["click"]);export{ys as component};
@@ -0,0 +1 @@
1
+ import{c as q,a as e,f as s,t as mt}from"../chunks/y4GeEH6k.js";import{p as H,f as u,e as st,a as R,s as l,c as o,g as t,u as kt,r,t as P,n as E,b as Zt,d as Mt}from"../chunks/CaAJD3dl.js";import{s as C}from"../chunks/DqT6OH_u.js";import{s as ot,r as it,i as c}from"../chunks/Dg_zDpDS.js";import{l as dt,a as Dt,b as Ft,a2 as Ht,q as Rt,h as at,j as pt,d as jt,B as rt}from"../chunks/Dd5umPsk.js";import{h as Vt,r as Yt}from"../chunks/fZMteyca.js";import{C as Gt}from"../chunks/CF1CoqD5.js";import{C as Jt}from"../chunks/Du5ng3u4.js";import{C as Ut}from"../chunks/DKIeaprD.js";import{B as Xt}from"../chunks/P0A_fJvS.js";import{I as lt}from"../chunks/C5_PAZ0y.js";import{Z as te}from"../chunks/B5e5HYyB.js";import{P as ee}from"../chunks/2KqE8gtn.js";import{C as ae}from"../chunks/DbU6lVn0.js";const re=!1,He=Object.freeze(Object.defineProperty({__proto__:null,ssr:re},Symbol.toStringTag,{value:"Module"}));function se(b,i){H(i,!0);let h=it(i,["$$slots","$$events","$$legacy"]);const $=[["rect",{width:"8",height:"8",x:"3",y:"3",rx:"2"}],["path",{d:"M7 11v4a2 2 0 0 0 2 2h4"}],["rect",{width:"8",height:"8",x:"13",y:"13",rx:"2"}]];lt(b,ot({name:"workflow"},()=>h,{get iconNode(){return $},children:(_,B)=>{var n=q(),y=u(n);dt(y,()=>i.children??st),e(_,n)},$$slots:{default:!0}})),R()}function oe(b,i){H(i,!0);let h=it(i,["$$slots","$$events","$$legacy"]);const $=[["path",{d:"m17 2 4 4-4 4"}],["path",{d:"M3 11v-1a4 4 0 0 1 4-4h14"}],["path",{d:"m7 22-4-4 4-4"}],["path",{d:"M21 13v1a4 4 0 0 1-4 4H3"}]];lt(b,ot({name:"repeat"},()=>h,{get iconNode(){return $},children:(_,B)=>{var n=q(),y=u(n);dt(y,()=>i.children??st),e(_,n)},$$slots:{default:!0}})),R()}function ie(b,i){H(i,!0);let h=it(i,["$$slots","$$events","$$legacy"]);const $=[["circle",{cx:"12",cy:"12",r:"10"}],["circle",{cx:"12",cy:"12",r:"1"}]];lt(b,ot({name:"circle-dot"},()=>h,{get iconNode(){return $},children:(_,B)=>{var n=q(),y=u(n);dt(y,()=>i.children??st),e(_,n)},$$slots:{default:!0}})),R()}function de(b,i){H(i,!0);let h=it(i,["$$slots","$$events","$$legacy"]);const $=[["circle",{cx:"12",cy:"12",r:"10"}]];lt(b,ot({name:"circle"},()=>h,{get iconNode(){return $},children:(_,B)=>{var n=q(),y=u(n);dt(y,()=>i.children??st),e(_,n)},$$slots:{default:!0}})),R()}function le(b,i){H(i,!0);let h=it(i,["$$slots","$$events","$$legacy"]);const $=[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"}]];lt(b,ot({name:"copy"},()=>h,{get iconNode(){return $},children:(_,B)=>{var n=q(),y=u(n);dt(y,()=>i.children??st),e(_,n)},$$slots:{default:!0}})),R()}var ne=s('<p class="text-sm text-muted-foreground" data-testid="workflows-summary"> </p>'),ve=s('<div class="bg-destructive/10 text-destructive p-4 rounded-lg text-sm" data-testid="workflows-error" role="alert"> </div>'),ce=s('<div class="h-36 rounded-lg bg-muted ds-shimmer"></div>'),fe=s('<div class="flex flex-col gap-3" data-testid="workflows-loading"></div>'),me=s('Define workflows in <code class="text-xs bg-muted px-1 py-0.5 rounded">kynetic.meta.yaml</code> to see them here.',1),pe=s('<div class="flex flex-col items-center justify-center py-16" data-testid="workflows-empty"><!> <h2 class="text-lg font-medium text-muted-foreground mb-1">No workflows defined</h2> <p class="text-sm text-muted-foreground"><!></p></div>'),ue=s("<!> ",1),_e=s("<!> Loop",1),xe=s('<div class="text-sm text-muted-foreground break-words leading-relaxed prose prose-sm dark:prose-invert max-w-none" data-testid="workflow-description"><!></div>'),ge=s("<!> Copied!",1),he=s("<!> Start",1),$e=s('<div class="flex items-start justify-between gap-4"><div class="flex-1 min-w-0"><div class="flex items-center gap-2 mb-1 flex-wrap"><h3 class="text-sm font-semibold" data-testid="workflow-id"> </h3> <!> <!> <!> <!></div> <!></div> <!></div>'),ye=s('<span class="text-xs text-destructive/80 ml-1"> </span>'),we=s('<li class="text-xs text-muted-foreground list-disc"> </li>'),be=s('<ul class="mt-1 ml-4 space-y-0.5"></ul>'),ke=s('<li class="flex items-start gap-2 text-sm" data-testid="workflow-step"><span class="flex items-center gap-1.5 shrink-0 mt-0.5"><span class="text-xs text-muted-foreground font-mono w-4 text-right"></span> <!></span> <span class="min-w-0"><span class="text-muted-foreground"> </span> <!> <!></span></li>'),Pe=s('<div class="flex flex-col gap-1.5" data-testid="workflow-steps"><h4 class="text-xs font-medium text-muted-foreground uppercase tracking-wider"> </h4> <ol class="flex flex-col gap-1"></ol></div>'),Ce=s('<p class="text-xs text-muted-foreground italic">No steps defined</p>'),Ne=s("<span>&middot;</span> <!>",1),Se=s('<!> <div class="flex items-center gap-2 text-xs text-muted-foreground mt-3 pt-3 border-t"><code class="bg-muted px-1 py-0.5 rounded" data-testid="workflow-ulid"> </code> <!></div>',1),ze=s("<!> <!>",1),Me=s('<div class="flex flex-col gap-3" data-testid="workflows-list"></div>'),je=s('<div class="flex flex-col gap-4 p-6"><div class="flex items-center justify-between"><div><h1 class="text-2xl font-bold">Workflows</h1> <!></div></div> <!> <!></div>');function Re(b,i){H(i,!0);const h={action:"text-severity-success",check:"text-severity-info",decision:"text-severity-warning"},$=Dt(()=>({queryKey:Rt.workflows.all,queryFn:()=>Ht(),enabled:Ft()}));let _=kt(()=>$.data?.items??[]),B=kt(()=>$.isLoading),n=kt(()=>$.error?.message??""),y=Zt(null);async function Tt(v){const f=`kspec workflow start @${v}`;try{await navigator.clipboard.writeText(f),Mt(y,v,!0),setTimeout(()=>{Mt(y,null)},2e3)}catch{}}var ut=je(),_t=o(ut),Pt=o(_t),qt=l(o(Pt),2);{var Bt=v=>{var f=ne(),I=o(f);r(f),P(()=>C(I,`${t(_).length??""} workflow${t(_).length===1?"":"s"} defined`)),e(v,f)};c(qt,v=>{t(B)||v(Bt)})}r(Pt),r(_t);var Ct=l(_t,2);{var It=v=>{var f=ve(),I=o(f,!0);r(f),P(()=>C(I,t(n))),e(v,f)};c(Ct,v=>{t(n)&&v(It)})}var Lt=l(Ct,2);{var Wt=v=>{var f=fe();at(f,20,()=>Array(3),pt,(I,Nt)=>{var xt=ce();e(I,xt)}),r(f),e(v,f)},At=v=>{var f=q(),I=u(f);{var Nt=K=>{var L=pe(),O=o(L);se(O,{class:"size-12 text-muted-foreground/30 mb-4"});var d=l(O,4),gt=o(d);{var St=z=>{var V=mt("No workflow data available in the snapshot.");e(z,V)},nt=z=>{var V=me();E(2),e(z,V)};c(gt,z=>{jt()?z(St):z(nt,!1)})}r(d),r(L),e(K,L)},xt=K=>{var L=Me();at(L,21,()=>t(_),O=>O._ulid,(O,d)=>{Gt(O,{class:"transition-all duration-200 hover:shadow-md","data-testid":"workflow-card",children:(gt,St)=>{var nt=ze(),z=u(nt);Ut(z,{class:"pb-3",children:(ht,Et)=>{var Q=$e(),Z=o(Q),Y=o(Z),G=o(Y),vt=o(G,!0);r(G);var D=l(G,2);rt(D,{variant:"secondary",class:"text-xs gap-1","data-testid":"workflow-trigger",children:(a,m)=>{var w=ue(),p=u(w);te(p,{class:"h-3 w-3"});var A=l(p);P(()=>C(A,` ${t(d).trigger??""}`)),e(a,w)},$$slots:{default:!0}});var ct=l(D,2);{var $t=a=>{rt(a,{variant:"outline",class:"text-xs gap-1","data-testid":"workflow-loop",children:(m,w)=>{var p=_e(),A=u(p);oe(A,{class:"h-3 w-3"}),E(),e(m,p)},$$slots:{default:!0}})};c(ct,a=>{t(d).mode==="loop"&&a($t)})}var ft=l(ct,2);{var x=a=>{rt(a,{variant:"outline",class:"text-xs gap-1","data-testid":"workflow-variant",children:(m,w)=>{E();var p=mt();P(()=>C(p,`variant of @${t(d).based_on??""}`)),e(m,p)},$$slots:{default:!0}})};c(ft,a=>{t(d).based_on&&a(x)})}var N=l(ft,2);{var W=a=>{rt(a,{class:"text-xs bg-status-blocked text-status-blocked-fg",children:(m,w)=>{E();var p=mt("Strict");e(m,p)},$$slots:{default:!0}})};c(N,a=>{t(d).enforcement==="strict"&&a(W)})}r(Y);var J=l(Y,2);{var F=a=>{var m=xe(),w=o(m);Vt(w,()=>Yt(t(d).description.trim())),r(m),e(a,m)};c(J,a=>{t(d).description&&a(F)})}r(Z);var U=l(Z,2);{var k=a=>{Xt(a,{variant:"outline",size:"sm",class:"h-8 gap-1.5 text-xs shrink-0","data-testid":"workflow-start-btn",onclick:()=>Tt(t(d).id),children:(m,w)=>{var p=q(),A=u(p);{var yt=M=>{var j=ge(),X=u(j);le(X,{class:"size-3.5"}),E(),e(M,j)},wt=M=>{var j=he(),X=u(j);ee(X,{class:"size-3.5"}),E(),e(M,j)};c(A,M=>{t(y)===t(d).id?M(yt):M(wt,!1)})}e(m,p)},$$slots:{default:!0}})};c(U,a=>{jt()||a(k)})}r(Q),P(()=>C(vt,t(d).id)),e(ht,Q)},$$slots:{default:!0}});var V=l(z,2);Jt(V,{class:"pt-0",children:(ht,Et)=>{var Q=Se(),Z=u(Q);{var Y=x=>{var N=Pe(),W=o(N),J=o(W);r(W);var F=l(W,2);at(F,21,()=>t(d).steps,pt,(U,k,a)=>{var m=ke(),w=o(m),p=o(w);p.textContent=`${a+1}.`;var A=l(p,2);{var yt=g=>{ae(g,{get class(){return`size-3.5 ${h.check}`}})},wt=g=>{var S=q(),tt=u(S);{var bt=T=>{ie(T,{get class(){return`size-3.5 ${h.decision}`}})},et=T=>{de(T,{get class(){return`size-3.5 ${h.action}`}})};c(tt,T=>{t(k).type==="decision"?T(bt):T(et,!1)},!0)}e(g,S)};c(A,g=>{t(k).type==="check"?g(yt):g(wt,!1)})}r(w);var M=l(w,2),j=o(M),X=o(j,!0);r(j);var zt=l(j,2);{var Kt=g=>{var S=ye(),tt=o(S);r(S),P(()=>C(tt,`(on fail: ${t(k).on_fail??""})`)),e(g,S)};c(zt,g=>{t(k).on_fail&&g(Kt)})}var Ot=l(zt,2);{var Qt=g=>{var S=be();at(S,21,()=>t(k).options,pt,(tt,bt)=>{var et=we(),T=o(et,!0);r(et),P(()=>C(T,t(bt))),e(tt,et)}),r(S),e(g,S)};c(Ot,g=>{t(k).options&&t(k).options.length>0&&g(Qt)})}r(M),r(m),P(()=>C(X,t(k).content)),e(U,m)}),r(F),r(N),P(()=>C(J,`Steps (${t(d).steps.length??""})`)),e(x,N)},G=x=>{var N=Ce();e(x,N)};c(Z,x=>{t(d).steps.length>0?x(Y):x(G,!1)})}var vt=l(Z,2),D=o(vt),ct=o(D,!0);r(D);var $t=l(D,2);{var ft=x=>{var N=Ne(),W=l(u(N),2);at(W,17,()=>t(d).tags,pt,(J,F)=>{rt(J,{variant:"secondary",class:"text-xs",children:(U,k)=>{E();var a=mt();P(()=>C(a,t(F))),e(U,a)},$$slots:{default:!0}})}),e(x,N)};c($t,x=>{t(d).tags&&t(d).tags.length>0&&x(ft)})}r(vt),P(x=>C(ct,x),[()=>t(d)._ulid.slice(0,8)]),e(ht,Q)},$$slots:{default:!0}}),e(gt,nt)},$$slots:{default:!0}})}),r(L),e(K,L)};c(I,K=>{t(_).length===0?K(Nt):K(xt,!1)},!0)}e(v,f)};c(Lt,v=>{t(B)?v(Wt):v(At,!1)})}r(ut),e(b,ut),R()}export{Re as component,He as universal};
@@ -0,0 +1 @@
1
+ import{c as ke,a as n,f as v,t as he}from"../chunks/y4GeEH6k.js";import{o as ot,a as nt}from"../chunks/oTsvd9y4.js";import{p as $e,f as F,e as Be,a as we,Q as it,s as r,c as s,g as e,u as g,r as t,t as x,n as ne}from"../chunks/CaAJD3dl.js";import{d as dt,s as q}from"../chunks/DqT6OH_u.js";import{s as Ne,r as Fe,i as z}from"../chunks/Dg_zDpDS.js";import{l as Re,u as lt,a as ie,b as de,H as ct,q as k,I as vt,J as ut,K as ft,L as pt,d as ye,h as V,j as le,y as mt,p as O,B as Pe}from"../chunks/Dd5umPsk.js";import{c as gt}from"../chunks/Ds9I9wQb.js";import{g as _t}from"../chunks/BsJFsuAT.js";import{b as H}from"../chunks/CDRO15Iv.js";import{c as bt,p as xt,T as ht,B as yt}from"../chunks/DW_subyT.js";import{C as Me}from"../chunks/CF1CoqD5.js";import{C as Te}from"../chunks/Du5ng3u4.js";import{C as kt}from"../chunks/DKIeaprD.js";import{C as $t}from"../chunks/B7bGmhK0.js";import{S as J}from"../chunks/BG8eSzAd.js";import{R as wt}from"../chunks/DJtZNgcs.js";import{s as Ct,o as St,a as qt,u as At}from"../chunks/ChB5iyEL.js";import{A as Ee}from"../chunks/B2bcA_Q_.js";import{B as Qt}from"../chunks/C_7MTDoj.js";import{E as Kt}from"../chunks/BIMxXS8I.js";import{T as zt}from"../chunks/DqK4iHp0.js";import{I as It}from"../chunks/CWUQwB9H.js";import{I as Ue}from"../chunks/C5_PAZ0y.js";function Pt(G,A){$e(A,!0);let $=Fe(A,["$$slots","$$events","$$legacy"]);const Q=[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0"}],["circle",{cx:"12",cy:"12",r:"3"}]];Ue(G,Ne({name:"eye"},()=>$,{get iconNode(){return Q},children:(K,R)=>{var I=ke(),P=F(I);Re(P,()=>A.children??Be),n(K,I)},$$slots:{default:!0}})),we()}function Mt(G,A){$e(A,!0);let $=Fe(A,["$$slots","$$events","$$legacy"]);const Q=[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"}],["path",{d:"M12 8v4"}],["path",{d:"M12 16h.01"}]];Ue(G,Ne({name:"shield-alert"},()=>$,{get iconNode(){return Q},children:(K,R)=>{var I=ke(),P=F(I);Re(P,()=>A.children??Be),n(K,I)},$$slots:{default:!0}})),we()}var Tt=v('<div class="flex items-center gap-3 rounded-lg border border-destructive/50 bg-destructive/10 p-4" role="alert" data-testid="dashboard-error"><!> <div><p class="text-sm font-medium text-destructive">Failed to load dashboard</p> <p class="text-xs text-muted-foreground"> </p></div> <button class="ml-auto text-xs text-muted-foreground underline hover:text-foreground">Retry</button></div>'),Et=v('<div data-testid="dashboard-skeleton"><div class="mb-6"><!> <div class="flex gap-3"><!></div></div> <div class="mb-6"><!> <div class="grid gap-4 md:grid-cols-4 lg:grid-cols-7"></div></div> <div><!> <div class="grid gap-3 md:grid-cols-2 lg:grid-cols-4"></div></div></div>'),Bt=v('<div class="truncate mb-1"><!></div>'),Nt=v('<div class="truncate"> </div>'),Ft=v('<div class="mt-1.5 rounded bg-muted/50 p-1.5 font-mono text-[10px] leading-tight text-muted-foreground overflow-hidden max-h-10" aria-live="polite" data-testid="fleet-output"></div>'),Rt=v('<div class="mt-1.5 flex items-center gap-1 text-[10px] text-muted-foreground/50" aria-live="polite" data-testid="fleet-output-empty"><!> <span>Awaiting output...</span></div>'),Ut=v('<div class="flex-shrink-0 w-72 rounded-lg border bg-card p-3 ds-breathe" data-testid="fleet-card"><div class="flex items-center gap-2 mb-1.5"><!> <span class="text-xs font-medium truncate"> </span></div> <!> <div class="flex items-center justify-between text-[10px] text-muted-foreground"><div class="flex items-center gap-1.5"><span class="relative flex size-2"><span class="absolute inline-flex h-full w-full rounded-full bg-status-in-progress opacity-75 ds-breathe"></span> <span class="relative inline-flex size-2 rounded-full bg-status-in-progress"></span></span> <span> </span></div> <a class="inline-flex items-center gap-1 text-primary hover:underline">Stream <!></a></div> <!></div>'),Wt=v('<div class="mb-4"><div class="flex items-center gap-2 mb-2"><!> <h2 class="text-sm font-medium">Active Fleet</h2> <!></div> <div class="flex gap-3 overflow-x-auto pb-2" data-testid="active-fleet-row"></div></div>'),Lt=v('<div class="flex items-center gap-2 rounded-lg border border-dashed p-4 text-sm text-muted-foreground" data-testid="no-active-work"><!> <span>No agents currently running</span></div>'),jt=v("<!> <span></span>",1),Dt=v('<div class="text-2xl font-bold tabular-nums"> </div>'),Vt=v("<!> <!>",1),Ot=v('<button class="text-left"><!></button>'),Ht=v('<div class="flex items-center gap-2 rounded-lg border border-dashed p-4 text-sm text-muted-foreground" data-testid="no-attention-needed"><span>Nothing needs attention right now</span></div>'),Jt=v('<div class="rounded-md bg-muted p-2"><!></div> <div><p class="text-2xl font-bold tabular-nums"> </p> <p class="text-xs text-muted-foreground"> </p></div>',1),Gt=v('<a class="block"><!></a>'),Xt=v('<div class="grid gap-3 md:grid-cols-2 lg:grid-cols-4" data-testid="attention-cards"></div>'),Yt=v('<section data-testid="active-work-section"><!></section> <section data-testid="status-summary-section"><h2 class="mb-3 text-sm font-medium text-muted-foreground">Status Summary</h2> <div class="grid gap-3 md:grid-cols-4 lg:grid-cols-7" data-testid="dashboard-counts"></div></section> <section data-testid="needs-attention-section"><div class="mb-3 flex items-center gap-2"><h2 class="text-sm font-medium text-muted-foreground">Needs Attention</h2> <!></div> <!></section>',1),Zt=v('<div class="flex flex-col gap-6 p-6" data-testid="dashboard"><h1 class="text-2xl font-bold">Dashboard</h1> <!> <!></div>');function $s(G,A){$e(A,!0);const $=lt(),Q=ie(()=>({queryKey:k.tasks.list({}),queryFn:()=>ct(),enabled:de()})),K=ie(()=>({queryKey:k.inbox.count(),queryFn:()=>vt({limit:0}),enabled:de()})),R=ie(()=>({queryKey:k.observations.list({resolved:!1}),queryFn:()=>ut({resolved:!1}),enabled:de()})),I=ie(()=>({queryKey:k.validation.results(),queryFn:()=>ft(),enabled:de()})),P=ie(()=>({queryKey:k.agents.status(),queryFn:()=>pt(),enabled:de()&&!ye(),staleTime:10*1e3}));let Ce=g(()=>{const a=Q.data?.items??[],i={ready:0,in_progress:0,needs_work:0,pending_review:0,blocked:0,completed:0,cancelled:0},d=new Set(a.filter(o=>o.status==="completed").flatMap(o=>[o._ulid,...o.slugs||[]]));for(const o of a)switch(o.status){case"completed":i.completed++;break;case"in_progress":i.in_progress++;break;case"pending_review":i.pending_review++;break;case"blocked":i.blocked++;break;case"needs_work":i.needs_work++;break;case"cancelled":i.cancelled++;break;case"pending":{(o.depends_on||[]).some(_=>{const M=_.startsWith("@")?_.slice(1):_;return!d.has(M)})||i.ready++;break}}return i}),ce=g(()=>P.data??null),We=g(()=>e(ce)?.dispatch_enabled&&(e(ce)?.active_invocations?.length??0)>0),X=it({}),Se=g(()=>K.data?.total??0),qe=g(()=>R.data?.total??0),Ae=g(()=>{const a=I.data;return a?a.refWarnings.length+a.completenessWarnings.length+a.schemaErrors.length+a.refErrors.length:0}),Qe=g(()=>e(Ce).blocked),pe=g(()=>e(Se)+e(qe)+e(Ae)+e(Qe)),Ke=g(()=>Q.error?Q.error.message:K.error?K.error.message:R.error?R.error.message:null),Le=g(()=>Q.isLoading||K.isLoading||R.isLoading);const je=[{key:"ready",label:"Ready",dotClass:"bg-status-pending",filterStatus:"pending"},{key:"in_progress",label:"In Progress",dotClass:"bg-status-in-progress",filterStatus:"in_progress"},{key:"needs_work",label:"Needs Work",dotClass:"bg-status-needs-work",filterStatus:"needs_work"},{key:"pending_review",label:"Review",dotClass:"bg-status-pending-review",filterStatus:"pending_review"},{key:"blocked",label:"Blocked",dotClass:"bg-status-blocked",filterStatus:"blocked"},{key:"completed",label:"Completed",dotClass:"bg-status-completed",filterStatus:"completed"},{key:"cancelled",label:"Cancelled",dotClass:"bg-status-cancelled",filterStatus:"cancelled"}],De=g(()=>[{key:"inbox",label:"Untriaged inbox",count:e(Se),icon:It,href:`${H}/inbox`,colorClass:"text-status-pending-review"},{key:"observations",label:"Unresolved observations",count:e(qe),icon:Pt,href:`${H}/observations`,colorClass:"text-status-in-progress"},{key:"validation",label:"Validation warnings",count:e(Ae),icon:Mt,href:`${H}/validate`,colorClass:"text-status-needs-work"},{key:"blocked",label:"Blocked tasks",count:e(Qe),icon:yt,href:`${H}/tasks?status=blocked`,colorClass:"text-status-blocked"}]);function Ve(a){const i=Math.floor(a/1e3),d=Math.floor(i/60),o=Math.floor(d/60);return o>0?`${o}h ${d%60}m`:d>0?`${d}m ${i%60}s`:`${i}s`}function Oe(a){_t(`${H}/tasks?status=${a}`)}function He(){$.invalidateQueries({queryKey:k.tasks.all}),$.invalidateQueries({queryKey:k.inbox.all}),$.invalidateQueries({queryKey:k.observations.all}),$.invalidateQueries({queryKey:k.validation.all}),$.invalidateQueries({queryKey:k.agents.all})}function ze(a){if(new Set(["message_progress","message_complete","thinking_progress","thinking_complete"]).has(a.event)&&a.data?.session_id&&a.data?.text){const d=a.data.session_id,o=a.data.text,w=X[d]??bt();X[d]=xt(w,o);return}if($.invalidateQueries({queryKey:k.agents.status()}),P.data){const d=new Set(P.data.active_invocations.map(o=>o.session_id));for(const o of Object.keys(X))d.has(o)||delete X[o]}}ot(()=>{ye()||(Ct(["agents"]),St("agents",ze))}),nt(()=>{ye()||(qt("agents",ze),At(["agents"]))});var me=Zt(),Ie=r(s(me),2);{var Je=a=>{var i=Tt(),d=s(i);ht(d,{class:"size-5 text-destructive"});var o=r(d,2),w=r(s(o),2),U=s(w,!0);t(w),t(o);var _=r(o,2);_.__click=He,t(i),x(()=>q(U,e(Ke))),n(a,i)};z(Ie,a=>{e(Ke)&&a(Je)})}var Ge=r(Ie,2);{var Xe=a=>{var i=Et(),d=s(i),o=s(d);J(o,{class:"mb-2 h-5 w-32 ds-shimmer"});var w=r(o,2),U=s(w);J(U,{class:"h-20 w-72 ds-shimmer"}),t(w),t(d);var _=r(d,2),M=s(_);J(M,{class:"mb-3 h-5 w-40 ds-shimmer"});var Y=r(M,2);V(Y,20,()=>Array(7),le,(Z,ge)=>{J(Z,{class:"h-24 ds-shimmer"})}),t(Y),t(_);var W=r(_,2),ve=s(W);J(ve,{class:"mb-3 h-5 w-40 ds-shimmer"});var ue=r(ve,2);V(ue,20,()=>Array(4),le,(Z,ge)=>{J(Z,{class:"h-20 ds-shimmer"})}),t(ue),t(W),t(i),n(a,i)},Ye=a=>{var i=Yt(),d=F(i),o=s(d);{var w=c=>{var l=Wt(),p=s(l),f=s(p);Ee(f,{class:"size-4 text-status-in-progress"});var L=r(f,4);Pe(L,{variant:"secondary",class:"text-[10px]",children:(C,u)=>{ne();var m=he();x(()=>q(m,`${e(ce)?.active_invocations.length??""} running`)),n(C,m)},$$slots:{default:!0}}),t(p);var ee=r(p,2);V(ee,21,()=>e(ce)?.active_invocations??[],C=>C.session_id,(C,u)=>{const m=g(()=>e(u).task_title??void 0),T=g(()=>X[e(u).session_id]),j=g(()=>e(T)?.lines??[]);var y=Ut(),S=s(y),te=s(S);Qt(te,{class:"size-4 text-muted-foreground"});var E=r(te,2),D=s(E,!0);t(E),t(S);var B=r(S,2);{var fe=h=>{var b=Bt(),oe=s(b);wt(oe,{get ref(){return e(u).task_ref},type:"task",get title(){return e(m)},class:"text-xs"}),t(b),n(h,b)};z(B,h=>{e(u).task_ref&&h(fe)})}var N=r(B,2),se=s(N),ae=r(s(se),2),_e=s(ae,!0);t(ae),t(se);var re=r(se,2),be=r(s(re));Kt(be,{class:"size-3"}),t(re),t(N);var et=r(N,2);{var tt=h=>{var b=Ft();V(b,21,()=>e(j).slice(-2),le,(oe,at)=>{var xe=Nt(),rt=s(xe,!0);t(xe),x(()=>q(rt,e(at))),n(oe,xe)}),t(b),x(()=>O(b,"aria-label",`Agent output for ${e(m)??e(u).agent_id??""}`)),n(h,b)},st=h=>{var b=Rt(),oe=s(b);zt(oe,{class:"size-3"}),ne(2),t(b),x(()=>O(b,"aria-label",`Agent output for ${e(m)??e(u).agent_id??""}`)),n(h,b)};z(et,h=>{e(j).length>0?h(tt):h(st,!1)})}t(y),x(h=>{q(D,e(u).agent_id),q(_e,h),O(re,"href",`${H??""}/sessions/${e(u).session_id??""}`)},[()=>Ve(e(u).elapsed_ms)]),n(C,y)}),t(ee),t(l),n(c,l)},U=c=>{var l=Lt(),p=s(l);Ee(p,{class:"size-4"}),ne(2),t(l),n(c,l)};z(o,c=>{e(We)?c(w):c(U,!1)})}t(d);var _=r(d,2),M=r(s(_),2);V(M,21,()=>je,le,(c,l)=>{var p=Ot();p.__click=()=>Oe(e(l).filterStatus);var f=s(p);Me(f,{class:"transition-colors hover:bg-muted/50 cursor-pointer h-full",children:(L,ee)=>{var C=Vt(),u=F(C);kt(u,{class:"flex flex-row items-center justify-between pb-1 pt-3 px-3 space-y-0",children:(T,j)=>{var y=jt(),S=F(y);$t(S,{class:"text-xs font-medium text-muted-foreground",children:(E,D)=>{ne();var B=he();x(()=>q(B,e(l).label)),n(E,B)},$$slots:{default:!0}});var te=r(S,2);x(()=>mt(te,1,`inline-block size-2.5 rounded-full ${e(l).dotClass??""}`)),n(T,y)},$$slots:{default:!0}});var m=r(u,2);Te(m,{class:"px-3 pb-3",children:(T,j)=>{var y=Dt(),S=s(y,!0);t(y),x(()=>q(S,e(Ce)[e(l).key])),n(T,y)},$$slots:{default:!0}}),n(L,C)},$$slots:{default:!0}}),t(p),x(()=>O(p,"data-testid",`task-count-${e(l).key??""}`)),n(c,p)}),t(M),t(_);var Y=r(_,2),W=s(Y),ve=r(s(W),2);{var ue=c=>{Pe(c,{variant:"secondary",class:"text-[10px]",children:(l,p)=>{ne();var f=he();x(()=>q(f,e(pe))),n(l,f)},$$slots:{default:!0}})};z(ve,c=>{e(pe)>0&&c(ue)})}t(W);var Z=r(W,2);{var ge=c=>{var l=Ht();n(c,l)},Ze=c=>{var l=Xt();V(l,21,()=>e(De),le,(p,f)=>{var L=ke(),ee=F(L);{var C=u=>{var m=Gt(),T=s(m);Me(T,{class:"transition-colors hover:bg-muted/50 cursor-pointer h-full",children:(j,y)=>{Te(j,{class:"flex items-center gap-3 p-4",children:(S,te)=>{var E=Jt(),D=F(E),B=s(D);gt(B,()=>e(f).icon,(re,be)=>{be(re,{get class(){return`size-4 ${e(f).colorClass??""}`}})}),t(D);var fe=r(D,2),N=s(fe),se=s(N,!0);t(N);var ae=r(N,2),_e=s(ae,!0);t(ae),t(fe),x(()=>{q(se,e(f).count),q(_e,e(f).label)}),n(S,E)},$$slots:{default:!0}})},$$slots:{default:!0}}),t(m),x(()=>{O(m,"href",e(f).href),O(m,"data-testid",`attention-${e(f).key??""}`)}),n(u,m)};z(ee,u=>{e(f).count>0&&u(C)})}n(p,L)}),t(l),n(c,l)};z(Z,c=>{e(pe)===0?c(ge):c(Ze,!1)})}t(Y),n(a,i)};z(Ge,a=>{e(Le)?a(Xe):a(Ye,!1)})}t(me),n(G,me),we()}dt(["click"]);export{$s as component};
@@ -0,0 +1 @@
1
+ import{c as ht,a as r,f as d,t as G}from"../chunks/y4GeEH6k.js";import{o as $a,a as ya}from"../chunks/oTsvd9y4.js";import{b as O,Q as jt,g as t,u as tt,C as Ue,d as n,p as Mt,f as b,e as ie,a as Rt,c as i,s as e,r as s,t as F,n as T,y as ta}from"../chunks/CaAJD3dl.js";import{s as N,d as ka}from"../chunks/DqT6OH_u.js";import{s as Wt,r as ne,i as q,p as ea}from"../chunks/Dg_zDpDS.js";import{a4 as wa,a5 as Pa,a6 as He,n as aa,a7 as Ve,u as sa,a8 as Aa,l as oe,d as Qt,h as Tt,j as Ft,B as _t,p as St,P as Sa,a9 as Ta,g as ra,a as Ze,b as Ge,L as Ca,q as re,aa as Da,ab as Na}from"../chunks/Dd5umPsk.js";import{s as Ea,o as Ma,a as Ra,u as qa}from"../chunks/ChB5iyEL.js";import{B as At}from"../chunks/P0A_fJvS.js";import{C as Oa}from"../chunks/CF1CoqD5.js";import{B as ia}from"../chunks/C_7MTDoj.js";import{I as le}from"../chunks/C5_PAZ0y.js";import{Z as na}from"../chunks/B5e5HYyB.js";import{c as Et}from"../chunks/Ds9I9wQb.js";import{c as Fa}from"../chunks/qJfLUwU4.js";import{a as ja,b as za,c as Ia,d as Ka,D as La}from"../chunks/AiWQj974.js";import{D as Ba}from"../chunks/BSzL1fpU.js";import{I as Pt}from"../chunks/CqbsoCwA.js";import{T as Xe}from"../chunks/Xvwhx_F1.js";import{S as Gt}from"../chunks/htcWMiYN.js";import{S as Qa,a as Ua,b as Ha,c as Pe}from"../chunks/B8tYZKAE.js";import{X as Jt}from"../chunks/GFTX8GgV.js";import{T as Va,a as Za,b as Ga}from"../chunks/HVMjDi4_.js";import{L as Je}from"../chunks/Dgqu8Yuc.js";import{P as Xa}from"../chunks/2KqE8gtn.js";import{b as Ja}from"../chunks/CDRO15Iv.js";import{R as Wa}from"../chunks/DJtZNgcs.js";import{C as Ya}from"../chunks/T3vGWjIL.js";import{E as ts}from"../chunks/BIMxXS8I.js";import{S as Ae}from"../chunks/BG8eSzAd.js";import{g as es}from"../chunks/DphTaFUB.js";var We=class extends wa{#e;#s=void 0;#t;#a;constructor(u,a){super(),this.#e=u,this.setOptions(a),this.bindMethods(),this.#r()}bindMethods(){this.mutate=this.mutate.bind(this),this.reset=this.reset.bind(this)}setOptions(u){const a=this.options;this.options=this.#e.defaultMutationOptions(u),Pa(this.options,a)||this.#e.getMutationCache().notify({type:"observerOptionsUpdated",mutation:this.#t,observer:this}),a?.mutationKey&&this.options.mutationKey&&He(a.mutationKey)!==He(this.options.mutationKey)?this.reset():this.#t?.state.status==="pending"&&this.#t.setOptions(this.options)}onUnsubscribe(){this.hasListeners()||this.#t?.removeObserver(this)}onMutationUpdate(u){this.#r(),this.#i(u)}getCurrentResult(){return this.#s}reset(){this.#t?.removeObserver(this),this.#t=void 0,this.#r(),this.#i()}mutate(u,a){return this.#a=a,this.#t?.removeObserver(this),this.#t=this.#e.getMutationCache().build(this.#e,this.options),this.#t.addObserver(this),this.#t.execute(u)}#r(){const u=this.#t?.state??es();this.#s={...u,isPending:u.status==="pending",isSuccess:u.status==="success",isError:u.status==="error",isIdle:u.status==="idle",mutate:this.mutate,reset:this.reset}}#i(u){aa.batch(()=>{if(this.#a&&this.hasListeners()){const a=this.#s.variables,y=this.#s.context,g={client:this.#e,meta:this.options.meta,mutationKey:this.options.mutationKey};if(u?.type==="success"){try{this.#a.onSuccess?.(u.data,a,y,g)}catch(p){Promise.reject(p)}try{this.#a.onSettled?.(u.data,null,a,y,g)}catch(p){Promise.reject(p)}}else if(u?.type==="error"){try{this.#a.onError?.(u.error,a,y,g)}catch(p){Promise.reject(p)}try{this.#a.onSettled?.(void 0,u.error,a,y,g)}catch(p){Promise.reject(p)}}}this.listeners.forEach(a=>{a(this.#s)})})}};function as(u,a){const y=tt(()=>sa());let g=O(jt(new We(t(y),u())));Ve(()=>t(y),"pre",()=>{n(g,new We(t(y),u()),!0)}),Ue(()=>{t(g).setOptions(u())});const p=(P,C)=>{t(g).mutate(P,C).catch(Aa)};let $=O(jt(t(g).getCurrentResult()));Ve(()=>t(g),"pre",()=>{n($,t(g).getCurrentResult(),!0)}),Ue(()=>t(g).subscribe(C=>{aa.batchCalls(()=>{Object.assign(t($),C)})()}));const v=tt(()=>new Proxy(t($),{get:(P,C)=>{const z={...t($),mutate:p,mutateAsync:t($).mutate};return C=="value"?z:z[C]}}));return t(v)}function ss(u,a){Mt(a,!0);let y=ne(a,["$$slots","$$events","$$legacy"]);const g=[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z"}],["path",{d:"m15 5 4 4"}]];le(u,Wt({name:"pencil"},()=>y,{get iconNode(){return g},children:(p,$)=>{var v=ht(),P=b(v);oe(P,()=>a.children??ie),r(p,v)},$$slots:{default:!0}})),Rt()}var rs=d('<span class="ds-breathe inline-flex items-center rounded-full px-2 py-0.5 text-xs font-medium bg-status-in-progress text-status-in-progress-fg" data-testid="agent-active-badge"> </span>'),is=d('<p class="text-sm text-muted-foreground"> </p>'),ns=d("<!> ",1),os=d("<!> <!> <!>",1),ls=d("<!> <!>",1),ds=d('<span class="text-xs text-muted-foreground">No triggers configured</span>'),us=d('<div class="flex items-start justify-between gap-2"><div class="flex items-center gap-2 min-w-0"><!> <div class="min-w-0"><h3 class="font-semibold truncate" data-testid="agent-name"> </h3> <p class="text-xs text-muted-foreground font-mono" data-testid="agent-id"> </p></div></div> <div class="flex items-center gap-1.5 shrink-0"><!> <!></div></div> <!> <div class="flex flex-wrap gap-1.5"><!></div> <div class="flex items-center gap-4 text-sm border-t pt-3 mt-auto"><div class="flex items-center gap-1.5" data-testid="agent-active-count"><span class="inline-block h-2 w-2 rounded-full bg-status-in-progress"></span> <span class="text-muted-foreground">Active:</span> <span class="font-medium"> </span></div> <div class="flex items-center gap-1.5" data-testid="agent-completed-count"><span class="inline-block h-2 w-2 rounded-full bg-status-completed"></span> <span class="text-muted-foreground">Completed:</span> <span class="font-medium"> </span></div></div>',1);function vs(u,a){Mt(a,!0),Oa(u,{class:"p-4 flex flex-col gap-3",get"data-testid"(){return`agent-card-${a.agent.id??""}`},children:(y,g)=>{var p=us(),$=b(p),v=i($),P=i(v);ia(P,{class:"h-5 w-5 shrink-0 text-muted-foreground"});var C=e(P,2),z=i(C),ot=i(z,!0);s(z);var et=e(z,2),X=i(et,!0);s(et),s(C),s(v);var ft=e(v,2),A=i(ft);{var D=w=>{var Q=rs(),mt=i(Q);s(Q),F(()=>N(mt,`${a.activeCount??""} active`)),r(w,Q)};q(A,w=>{a.activeCount>0&&w(D)})}var B=e(A,2);{var S=w=>{At(w,{size:"sm",variant:"ghost",class:"h-7 w-7 p-0",get onclick(){return a.onEdit},get"aria-label"(){return`Edit agent ${a.agent.name??""}`},get"data-testid"(){return`agent-edit-button-${a.agent.id??""}`},children:(Q,mt)=>{ss(Q,{class:"h-4 w-4"})},$$slots:{default:!0}})};q(B,w=>{!Qt()&&a.onEdit&&w(S)})}s(ft),s($);var k=e($,2);{var m=w=>{var Q=is(),mt=i(Q,!0);s(Q),F(()=>N(mt,a.agent.description)),r(w,Q)};q(k,w=>{a.agent.description&&w(m)})}var I=e(k,2),H=i(I);{var at=w=>{var Q=ht(),mt=b(Q);Tt(mt,17,()=>a.agent.dispatch,Ft,(h,x)=>{var M=ls(),lt=b(M);_t(lt,{variant:"secondary",class:"text-xs gap-1","data-testid":"agent-trigger",children:(pt,zt)=>{var Ct=ns(),It=b(Ct);na(It,{class:"h-3 w-3"});var Dt=e(It);F(qt=>N(Dt,` ${qt??""}`),[()=>t(x).on.replace("task.","")]),r(pt,Ct)},$$slots:{default:!0}});var ct=e(lt,2);{var st=pt=>{var zt=os(),Ct=b(zt);{var It=j=>{_t(j,{variant:"outline",class:"text-xs","data-testid":"filter-badge-automation",children:(it,Nt)=>{T();var Z=G();F(()=>N(Z,t(x).filter.automation)),r(it,Z)},$$slots:{default:!0}})};q(Ct,j=>{t(x).filter.automation&&j(It)})}var Dt=e(Ct,2);{var qt=j=>{var it=ht(),Nt=b(it);Tt(Nt,17,()=>t(x).filter.tags,Ft,(Z,$t)=>{_t(Z,{variant:"outline",class:"text-xs","data-testid":"filter-badge-tag",children:(yt,Xt)=>{T();var Kt=G();F(()=>N(Kt,t($t))),r(yt,Kt)},$$slots:{default:!0}})}),r(j,it)};q(Dt,j=>{t(x).filter.tags?.length&&j(qt)})}var L=e(Dt,2);{var W=j=>{_t(j,{variant:"outline",class:"text-xs","data-testid":"filter-badge-priority",children:(it,Nt)=>{T();var Z=G();F(()=>N(Z,`p≤${t(x).filter.priority??""}`)),r(it,Z)},$$slots:{default:!0}})};q(L,j=>{t(x).filter.priority!==void 0&&j(W)})}r(pt,zt)};q(ct,pt=>{t(x).filter&&pt(st)})}r(h,M)}),r(w,Q)},bt=w=>{var Q=ds();r(w,Q)};q(H,w=>{a.agent.dispatch.length>0?w(at):w(bt,!1)})}s(I);var vt=e(I,2),V=i(vt),E=e(i(V),4),J=i(E,!0);s(E),s(V);var K=e(V,2),c=e(i(K),4),_=i(c,!0);s(c),s(K),s(vt),F(()=>{N(ot,a.agent.name),N(X,a.agent.id),N(J,a.activeCount),N(_,a.completedCount)}),r(y,p)},$$slots:{default:!0}}),Rt()}const cs=["task.in_progress","task.ready","task.needs_work","task.pending_review"];function Ye(u,a){Mt(a,!0);let y=ne(a,["$$slots","$$events","$$legacy"]);const g=[["path",{d:"M5 12h14"}],["path",{d:"M12 5v14"}]];le(u,Wt({name:"plus"},()=>y,{get iconNode(){return g},children:(p,$)=>{var v=ht(),P=b(v);oe(P,()=>a.children??ie),r(p,v)},$$slots:{default:!0}})),Rt()}function fs(u,a){Mt(a,!0);let y=ne(a,["$$slots","$$events","$$legacy"]);const g=[["path",{d:"M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z"}]];le(u,Wt({name:"funnel"},()=>y,{get iconNode(){return g},children:(p,$)=>{var v=ht(),P=b(v);oe(P,()=>a.children??ie),r(p,v)},$$slots:{default:!0}})),Rt()}var gs=d("<!> <!>",1),ms=d('<div class="bg-destructive/10 text-destructive p-3 rounded-lg text-sm" data-testid="agent-edit-error" role="alert"> </div>'),ps=d('<span class="text-muted-foreground">any</span>'),_s=d("<!> <!> <!>",1),hs=d("<!> <!>",1),xs=d(' <button type="button" class="ml-0.5 rounded-full p-0.5 hover:bg-muted-foreground/20"><!></button>',1),bs=d('<div class="border rounded-lg p-3 bg-muted/30"><div class="flex items-center justify-between mb-2"><!> <button type="button" class="rounded-full p-1 hover:bg-muted-foreground/20"><!></button></div> <div class="flex flex-col gap-2"><div class="flex items-center gap-2"><label class="text-xs text-muted-foreground w-20 shrink-0"><!>Automation</label> <!></div> <div class="flex items-start gap-2"><label class="text-xs text-muted-foreground w-20 shrink-0 mt-1.5">Tags</label> <div class="flex-1"><div class="flex flex-wrap gap-1 mb-1"></div> <div class="flex gap-1"><!> <!></div></div></div> <div class="flex items-center gap-2"><label class="text-xs text-muted-foreground w-20 shrink-0">Priority &#x2264;</label> <!></div></div></div>'),$s=d("<!> ",1),ys=d('<div class="flex flex-wrap gap-1.5" data-testid="agent-edit-available-triggers"></div>'),ks=d(' <button type="button" class="ml-0.5 rounded-full p-0.5 hover:bg-muted-foreground/20"><!></button>',1),ws=d(' <button type="button" class="ml-0.5 rounded-full p-0.5 hover:bg-muted-foreground/20"><!></button>',1),Ps=d(' <button type="button" class="ml-0.5 rounded-full p-0.5 hover:bg-muted-foreground/20"><!></button>',1),As=d("<!> <!>",1),Ss=d('<!> <!> <div class="flex flex-col gap-4"><div><label for="agent-name" class="text-sm font-medium">Name</label> <!></div> <div><label for="agent-description" class="text-sm font-medium">Description</label> <!></div> <div><label for="agent-adapter" class="text-sm font-medium">Adapter</label> <!></div> <!> <div><p class="text-sm font-medium mb-2">Dispatch Triggers</p> <div class="flex flex-col gap-3 mb-2" data-testid="agent-edit-triggers"></div> <!></div> <!> <div><p class="text-sm font-medium mb-1">Capabilities</p> <div class="flex flex-wrap gap-1 mb-2" data-testid="agent-edit-capabilities"></div> <div class="flex gap-2"><!> <!></div></div> <div><p class="text-sm font-medium mb-1">Tools</p> <div class="flex flex-wrap gap-1 mb-2" data-testid="agent-edit-tools"></div> <div class="flex gap-2"><!> <!></div></div> <div><p class="text-sm font-medium mb-1">Skills</p> <div class="flex flex-wrap gap-1 mb-2" data-testid="agent-edit-skills"></div> <div class="flex gap-2"><!> <!></div></div> <!> <div><p class="text-sm font-medium mb-2">Budget</p> <div class="grid grid-cols-3 gap-3"><div><label for="agent-max-tasks" class="text-xs text-muted-foreground">Max Tasks</label> <!></div> <div><label for="agent-max-retries" class="text-xs text-muted-foreground">Max Retries</label> <!></div> <div><label for="agent-timeout" class="text-xs text-muted-foreground">Timeout (min)</label> <!></div></div></div> <div><label for="agent-concurrency" class="text-sm font-medium">Max Concurrent</label> <!></div> <div class="flex items-center gap-3"><input id="agent-auto-approve" type="checkbox" class="h-4 w-4 rounded border-input" data-testid="agent-edit-auto-approve"/> <label for="agent-auto-approve" class="text-sm font-medium">Auto Approve</label></div> <!> <div><label for="agent-prompt-template" class="text-sm font-medium">Prompt Template</label> <!></div></div> <!>',1);function Ts(u,a){Mt(a,!0);let y=ea(a,"open",15,!1),g=O(""),p=O(""),$=O(""),v=O(jt([])),P=O(jt([])),C=O(jt([])),z=O(jt([])),ot=O(void 0),et=O(void 0),X=O(void 0),ft=O(1),A=O(!1),D=O(""),B=O(!1),S=O(""),k=O(""),m=O(""),I=O(""),H=O(jt({}));ta(()=>{y()&&a.agent&&(n(g,a.agent.name,!0),n(p,a.agent.description??"",!0),n($,a.agent.adapter??"",!0),n(v,a.agent.dispatch.map(h=>({...h,filter:h.filter?{...h.filter}:void 0})),!0),n(P,[...a.agent.capabilities],!0),n(C,[...a.agent.tools],!0),n(z,[...a.agent.skills],!0),n(ot,a.agent.budget?.max_tasks,!0),n(et,a.agent.budget?.max_retries,!0),n(X,a.agent.budget?.timeout_minutes,!0),n(ft,a.agent.concurrency?.max_concurrent??1,!0),n(A,a.agent.auto_approve,!0),n(D,a.agent.prompt_template??"",!0),n(S,""),n(k,""),n(m,""),n(I,""),n(H,{},!0))});let at=tt(()=>cs.filter(h=>!t(v).some(x=>x.on===h)));function bt(h){const M=h==="task.ready"||h==="task.needs_work"?{automation:"eligible"}:void 0;n(v,[...t(v),{on:h,filter:M}],!0)}function vt(h){n(v,t(v).filter((x,M)=>M!==h),!0)}function V(h,x){n(v,t(v).map((M,lt)=>{if(lt!==h)return M;const st={...M.filter??{},...x};st.automation===void 0&&delete st.automation,(!st.tags||st.tags.length===0)&&delete st.tags,st.priority===void 0&&delete st.priority;const pt=Object.keys(st).length>0;return{...M,filter:pt?st:void 0}}),!0)}function E(h,x){const M=x.trim();if(!M)return;const lt=t(v)[h]?.filter?.tags??[];lt.includes(M)||V(h,{tags:[...lt,M]})}function J(h,x){const lt=(t(v)[h]?.filter?.tags??[]).filter((ct,st)=>st!==x);V(h,{tags:lt.length>0?lt:void 0})}function K(h,x,M,lt){const ct=x.trim();ct&&!h.includes(ct)&&(M([...h,ct]),lt())}function c(h,x,M){M(h.filter((lt,ct)=>ct!==x))}async function _(){n(B,!0),n(S,"");const h={name:t(g),description:t(p)||void 0,adapter:t($)||void 0,dispatch:t(v),capabilities:t(P),tools:t(C),skills:t(z),budget:t(ot)!==void 0||t(et)!==void 0||t(X)!==void 0?{max_tasks:t(ot),max_retries:t(et),timeout_minutes:t(X)}:void 0,concurrency:{max_concurrent:t(ft)},auto_approve:t(A),prompt_template:t(D)||void 0};try{const x=await Ta(a.agent.id,h);a.onSaved?.(x),y(!1)}catch(x){x instanceof ra?n(S,x.message,!0):n(S,x instanceof Error?x.message:"Failed to save agent",!0)}finally{n(B,!1)}}function w(){y(!1)}var Q=ht(),mt=b(Q);Et(mt,()=>La,(h,x)=>{x(h,{get open(){return y()},set open(M){y(M)},children:(M,lt)=>{var ct=ht(),st=b(ct);Et(st,()=>ja,(pt,zt)=>{zt(pt,{class:"max-w-2xl max-h-[85vh] overflow-y-auto","data-testid":"agent-edit-dialog",children:(Ct,It)=>{var Dt=Ss(),qt=b(Dt);Et(qt,()=>za,(o,l)=>{l(o,{children:(f,dt)=>{var gt=gs(),rt=b(gt);Et(rt,()=>Ia,(R,nt)=>{nt(R,{"data-testid":"agent-edit-title",children:(ut,Ot)=>{T();var Ut=G();F(()=>N(Ut,`Edit Agent: ${a.agent.id??""}`)),r(ut,Ut)},$$slots:{default:!0}})});var U=e(rt,2);Et(U,()=>Ka,(R,nt)=>{nt(R,{children:(ut,Ot)=>{T();var Ut=G("Modify agent definition fields. Changes are persisted to kynetic.meta.yaml.");r(ut,Ut)},$$slots:{default:!0}})}),r(f,gt)},$$slots:{default:!0}})});var L=e(qt,2);{var W=o=>{var l=ms(),f=i(l,!0);s(l),F(()=>N(f,t(S))),r(o,l)};q(L,o=>{t(S)&&o(W)})}var j=e(L,2),it=i(j),Nt=e(i(it),2);Pt(Nt,{id:"agent-name",placeholder:"Agent name","data-testid":"agent-edit-name",get value(){return t(g)},set value(o){n(g,o,!0)}}),s(it);var Z=e(it,2),$t=e(i(Z),2);Xe($t,{id:"agent-description",placeholder:"Agent description",rows:2,"data-testid":"agent-edit-description",get value(){return t(p)},set value(o){n(p,o,!0)}}),s(Z);var yt=e(Z,2),Xt=e(i(yt),2);Pt(Xt,{id:"agent-adapter",placeholder:"e.g. claude-code","data-testid":"agent-edit-adapter",get value(){return t($)},set value(o){n($,o,!0)}}),s(yt);var Kt=e(yt,2);Gt(Kt,{});var de=e(Kt,2),ue=e(i(de),2);Tt(ue,21,()=>t(v),Ft,(o,l,f)=>{var dt=bs(),gt=i(dt),rt=i(gt);_t(rt,{variant:"secondary",class:"gap-1",children:(kt,Y)=>{T();var wt=G();F(()=>N(wt,t(l).on)),r(kt,wt)},$$slots:{default:!0}});var U=e(rt,2);U.__click=()=>vt(f);var R=i(U);Jt(R,{class:"h-3.5 w-3.5"}),s(U),s(gt);var nt=e(gt,2),ut=i(nt),Ot=i(ut),Ut=i(Ot);fs(Ut,{class:"h-3 w-3 inline-block mr-1"}),T(),s(Ot);var ha=e(Ot,2);{let kt=tt(()=>t(l).filter?.automation??"any");Qa(ha,{get value(){return t(kt)},onValueChange:Y=>{const wt=Array.isArray(Y)?Y[Y.length-1]:Y;V(f,{automation:wt==="any"?void 0:wt})},children:(Y,wt)=>{var te=hs(),ke=b(te);Ua(ke,{class:"h-7 text-xs flex-1",get"data-testid"(){return`trigger-automation-${t(l).on??""}`},children:(Ht,Lt)=>{var Bt=ht(),ae=b(Bt);{var se=xt=>{_t(xt,{variant:"outline",class:"text-xs",children:(Vt,Zt)=>{T();var Qe=G();F(()=>N(Qe,t(l).filter.automation)),r(Vt,Qe)},$$slots:{default:!0}})},we=xt=>{var Vt=ps();r(xt,Vt)};q(ae,xt=>{t(l).filter?.automation?xt(se):xt(we,!1)})}r(Ht,Bt)},$$slots:{default:!0}});var ee=e(ke,2);Ha(ee,{children:(Ht,Lt)=>{var Bt=_s(),ae=b(Bt);Pe(ae,{value:"any",children:(xt,Vt)=>{T();var Zt=G("Any");r(xt,Zt)},$$slots:{default:!0}});var se=e(ae,2);Pe(se,{value:"eligible",children:(xt,Vt)=>{T();var Zt=G("Eligible");r(xt,Zt)},$$slots:{default:!0}});var we=e(se,2);Pe(we,{value:"ineligible",children:(xt,Vt)=>{T();var Zt=G("Ineligible");r(xt,Zt)},$$slots:{default:!0}}),r(Ht,Bt)},$$slots:{default:!0}}),r(Y,te)},$$slots:{default:!0}})}s(ut);var ye=e(ut,2),Ie=e(i(ye),2),Yt=i(Ie);Tt(Yt,21,()=>t(l).filter?.tags??[],Ft,(kt,Y,wt)=>{_t(kt,{variant:"outline",class:"text-xs gap-0.5 pr-0.5",children:(te,ke)=>{T();var ee=xs(),Ht=b(ee),Lt=e(Ht);Lt.__click=()=>J(f,wt);var Bt=i(Lt);Jt(Bt,{class:"h-2.5 w-2.5"}),s(Lt),F(()=>{N(Ht,`${t(Y)??""} `),St(Lt,"aria-label",`Remove tag ${t(Y)??""}`),St(Lt,"data-testid",`remove-filter-tag-${t(Y)??""}`)}),r(te,ee)},$$slots:{default:!0}})}),s(Yt);var Ke=e(Yt,2),Le=i(Ke);{let kt=tt(()=>t(H)[f]??"");Pt(Le,{class:"h-7 text-xs flex-1",placeholder:"Add tag...",get value(){return t(kt)},oninput:Y=>{t(H)[f]=Y.target.value},onkeydown:Y=>{Y.key==="Enter"&&(Y.preventDefault(),E(f,t(H)[f]??""),t(H)[f]="")},get"data-testid"(){return`trigger-tag-input-${t(l).on??""}`}})}var xa=e(Le,2);At(xa,{size:"sm",variant:"outline",class:"h-7 text-xs px-2",onclick:()=>{E(f,t(H)[f]??""),t(H)[f]=""},children:(kt,Y)=>{Ye(kt,{class:"h-3 w-3"})},$$slots:{default:!0}}),s(Ke),s(Ie),s(ye);var Be=e(ye,2),ba=e(i(Be),2);{let kt=tt(()=>t(l).filter?.priority??"");Pt(ba,{class:"h-7 text-xs flex-1",type:"number",min:0,placeholder:"any",get value(){return t(kt)},oninput:Y=>{const wt=Y.target.valueAsNumber;V(f,{priority:Number.isNaN(wt)?void 0:wt})},get"data-testid"(){return`trigger-priority-${t(l).on??""}`}})}s(Be),s(nt),s(dt),F(()=>{St(dt,"data-testid",`trigger-row-${t(l).on??""}`),St(U,"aria-label",`Remove trigger ${t(l).on??""}`),St(U,"data-testid",`remove-trigger-${t(l).on??""}`),St(Yt,"data-testid",`trigger-tags-${t(l).on??""}`)}),r(o,dt)}),s(ue);var oa=e(ue,2);{var la=o=>{var l=ys();Tt(l,21,()=>t(at),Ft,(f,dt)=>{At(f,{size:"sm",variant:"outline",class:"text-xs gap-1",onclick:()=>bt(t(dt)),get"data-testid"(){return`add-trigger-${t(dt)??""}`},children:(gt,rt)=>{var U=$s(),R=b(U);Ye(R,{class:"h-3 w-3"});var nt=e(R);F(()=>N(nt,` ${t(dt)??""}`)),r(gt,U)},$$slots:{default:!0}})}),s(l),r(o,l)};q(oa,o=>{t(at).length>0&&o(la)})}s(de);var Se=e(de,2);Gt(Se,{});var ve=e(Se,2),ce=e(i(ve),2);Tt(ce,21,()=>t(P),Ft,(o,l,f)=>{_t(o,{variant:"outline",class:"gap-1 pr-1",children:(dt,gt)=>{T();var rt=ks(),U=b(rt),R=e(U);R.__click=()=>c(t(P),f,ut=>n(P,ut,!0));var nt=i(R);Jt(nt,{class:"h-3 w-3"}),s(R),F(()=>{N(U,`${t(l)??""} `),St(R,"aria-label",`Remove capability ${t(l)??""}`)}),r(dt,rt)},$$slots:{default:!0}})}),s(ce);var Te=e(ce,2),Ce=i(Te);Pt(Ce,{placeholder:"Add capability...",class:"flex-1",onkeydown:o=>{o.key==="Enter"&&(o.preventDefault(),K(t(P),t(k),l=>n(P,l,!0),()=>n(k,"")))},"data-testid":"agent-edit-capability-input",get value(){return t(k)},set value(o){n(k,o,!0)}});var da=e(Ce,2);At(da,{size:"sm",variant:"outline",onclick:()=>K(t(P),t(k),o=>n(P,o,!0),()=>n(k,"")),children:(o,l)=>{T();var f=G("Add");r(o,f)},$$slots:{default:!0}}),s(Te),s(ve);var fe=e(ve,2),ge=e(i(fe),2);Tt(ge,21,()=>t(C),Ft,(o,l,f)=>{_t(o,{variant:"outline",class:"gap-1 pr-1",children:(dt,gt)=>{T();var rt=ws(),U=b(rt),R=e(U);R.__click=()=>c(t(C),f,ut=>n(C,ut,!0));var nt=i(R);Jt(nt,{class:"h-3 w-3"}),s(R),F(()=>{N(U,`${t(l)??""} `),St(R,"aria-label",`Remove tool ${t(l)??""}`)}),r(dt,rt)},$$slots:{default:!0}})}),s(ge);var De=e(ge,2),Ne=i(De);Pt(Ne,{placeholder:"Add tool...",class:"flex-1",onkeydown:o=>{o.key==="Enter"&&(o.preventDefault(),K(t(C),t(m),l=>n(C,l,!0),()=>n(m,"")))},"data-testid":"agent-edit-tool-input",get value(){return t(m)},set value(o){n(m,o,!0)}});var ua=e(Ne,2);At(ua,{size:"sm",variant:"outline",onclick:()=>K(t(C),t(m),o=>n(C,o,!0),()=>n(m,"")),children:(o,l)=>{T();var f=G("Add");r(o,f)},$$slots:{default:!0}}),s(De),s(fe);var me=e(fe,2),pe=e(i(me),2);Tt(pe,21,()=>t(z),Ft,(o,l,f)=>{_t(o,{variant:"outline",class:"gap-1 pr-1",children:(dt,gt)=>{T();var rt=Ps(),U=b(rt),R=e(U);R.__click=()=>c(t(z),f,ut=>n(z,ut,!0));var nt=i(R);Jt(nt,{class:"h-3 w-3"}),s(R),F(()=>{N(U,`${t(l)??""} `),St(R,"aria-label",`Remove skill ${t(l)??""}`)}),r(dt,rt)},$$slots:{default:!0}})}),s(pe);var Ee=e(pe,2),Me=i(Ee);Pt(Me,{placeholder:"Add skill...",class:"flex-1",onkeydown:o=>{o.key==="Enter"&&(o.preventDefault(),K(t(z),t(I),l=>n(z,l,!0),()=>n(I,"")))},"data-testid":"agent-edit-skill-input",get value(){return t(I)},set value(o){n(I,o,!0)}});var va=e(Me,2);At(va,{size:"sm",variant:"outline",onclick:()=>K(t(z),t(I),o=>n(z,o,!0),()=>n(I,"")),children:(o,l)=>{T();var f=G("Add");r(o,f)},$$slots:{default:!0}}),s(Ee),s(me);var Re=e(me,2);Gt(Re,{});var _e=e(Re,2),qe=e(i(_e),2),he=i(qe),ca=e(i(he),2);{let o=tt(()=>t(ot)??"");Pt(ca,{id:"agent-max-tasks",type:"number",min:1,get value(){return t(o)},oninput:l=>{const f=l.target.valueAsNumber;n(ot,Number.isNaN(f)?void 0:f,!0)},placeholder:"—","data-testid":"agent-edit-max-tasks"})}s(he);var xe=e(he,2),fa=e(i(xe),2);{let o=tt(()=>t(et)??"");Pt(fa,{id:"agent-max-retries",type:"number",min:0,get value(){return t(o)},oninput:l=>{const f=l.target.valueAsNumber;n(et,Number.isNaN(f)?void 0:f,!0)},placeholder:"—","data-testid":"agent-edit-max-retries"})}s(xe);var Oe=e(xe,2),ga=e(i(Oe),2);{let o=tt(()=>t(X)??"");Pt(ga,{id:"agent-timeout",type:"number",min:1,get value(){return t(o)},oninput:l=>{const f=l.target.valueAsNumber;n(X,Number.isNaN(f)?void 0:f,!0)},placeholder:"—","data-testid":"agent-edit-timeout"})}s(Oe),s(qe),s(_e);var be=e(_e,2),ma=e(i(be),2);Pt(ma,{id:"agent-concurrency",type:"number",min:1,"data-testid":"agent-edit-concurrency",get value(){return t(ft)},set value(o){n(ft,o,!0)}}),s(be);var $e=e(be,2),Fe=i($e);Sa(Fe),T(2),s($e);var je=e($e,2);Gt(je,{});var ze=e(je,2),pa=e(i(ze),2);Xe(pa,{id:"agent-prompt-template",placeholder:"Agent prompt template...",rows:4,class:"font-mono text-xs","data-testid":"agent-edit-prompt-template",get value(){return t(D)},set value(o){n(D,o,!0)}}),s(ze),s(j);var _a=e(j,2);Et(_a,()=>Ba,(o,l)=>{l(o,{class:"mt-4",children:(f,dt)=>{var gt=As(),rt=b(gt);At(rt,{variant:"ghost",onclick:w,get disabled(){return t(B)},"data-testid":"agent-edit-cancel",children:(R,nt)=>{T();var ut=G("Cancel");r(R,ut)},$$slots:{default:!0}});var U=e(rt,2);{let R=tt(()=>t(B)||!t(g).trim());At(U,{onclick:_,get disabled(){return t(R)},"data-testid":"agent-edit-save",children:(nt,ut)=>{T();var Ot=G();F(()=>N(Ot,t(B)?"Saving...":"Save")),r(nt,Ot)},$$slots:{default:!0}})}r(f,gt)},$$slots:{default:!0}})}),Fa(Fe,()=>t(A),o=>n(A,o)),r(Ct,Dt)},$$slots:{default:!0}})}),r(M,ct)},$$slots:{default:!0}})}),r(u,Q),Rt()}ka(["click"]);function Cs(u,a){Mt(a,!0);let y=ne(a,["$$slots","$$events","$$legacy"]);const g=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2"}]];le(u,Wt({name:"square"},()=>y,{get iconNode(){return g},children:(p,$)=>{var v=ht(),P=b(v);oe(P,()=>a.children??ie),r(p,v)},$$slots:{default:!0}})),Rt()}var Ds=d('<span class="relative flex h-3 w-3" data-testid="dispatch-indicator-running"><span class="absolute inline-flex h-full w-full animate-ping motion-reduce:animate-none rounded-full bg-status-completed opacity-75"></span> <span class="relative inline-flex h-3 w-3 rounded-full bg-status-completed"></span></span> <!>',1),Ns=d('<span class="inline-flex h-3 w-3 rounded-full bg-status-cancelled" data-testid="dispatch-indicator-stopped"></span> <!>',1),Es=d('<span class="text-sm text-muted-foreground" data-testid="dispatch-counts"> <!></span>'),Ms=d("<p>Read-only mode - use CLI to control dispatch</p>"),Rs=d("<!> <!>",1),qs=d("<!> Stopping...",1),Os=d("<!> Stop",1),Fs=d("<!> Starting...",1),js=d("<!> Start",1),zs=d('<div class="flex items-center justify-between rounded-lg border p-4" data-testid="dispatch-status"><div class="flex items-center gap-3"><div class="flex items-center gap-2"><!></div> <!></div> <div><!></div></div>');function Is(u,a){Mt(a,!0);var y=zs(),g=i(y),p=i(g),$=i(p);{var v=A=>{var D=Ds(),B=e(b(D),2);_t(B,{class:"bg-status-completed text-status-completed-fg","data-testid":"dispatch-status-badge",children:(S,k)=>{T();var m=G("Running");r(S,m)},$$slots:{default:!0}}),r(A,D)},P=A=>{var D=Ns(),B=e(b(D),2);_t(B,{variant:"secondary","data-testid":"dispatch-status-badge",children:(S,k)=>{T();var m=G("Stopped");r(S,m)},$$slots:{default:!0}}),r(A,D)};q($,A=>{a.enabled?A(v):A(P,!1)})}s(p);var C=e(p,2);{var z=A=>{var D=Es(),B=i(D),S=e(B);{var k=m=>{var I=G();F(()=>N(I,`, ${a.queueDepth??""} queued`)),r(m,I)};q(S,m=>{a.queueDepth>0&&m(k)})}s(D),F(()=>N(B,`${a.activeCount??""} active`)),r(A,D)};q(C,A=>{a.enabled&&A(z)})}s(g);var ot=e(g,2),et=i(ot);{var X=A=>{var D=ht(),B=b(D);Et(B,()=>Ga,(S,k)=>{k(S,{children:(m,I)=>{var H=Rs(),at=b(H);{const vt=(V,E)=>{At(V,Wt(()=>E?.().props,{size:"sm",variant:"outline",disabled:!0,"data-testid":"dispatch-toggle-button",children:(K,c)=>{T();var _=G();F(()=>N(_,a.enabled?"Stop":"Start")),r(K,_)},$$slots:{default:!0}}))};Et(at,()=>Va,(V,E)=>{E(V,{child:vt,$$slots:{child:!0}})})}var bt=e(at,2);Et(bt,()=>Za,(vt,V)=>{V(vt,{children:(E,J)=>{var K=Ms();r(E,K)},$$slots:{default:!0}})}),r(m,H)},$$slots:{default:!0}})}),r(A,D)},ft=A=>{var D=ht(),B=b(D);{var S=m=>{At(m,{size:"sm",variant:"destructive",get onclick(){return a.onStop},get disabled(){return a.isToggling},"data-testid":"dispatch-toggle-button",children:(I,H)=>{var at=ht(),bt=b(at);{var vt=E=>{var J=qs(),K=b(J);Je(K,{class:"h-4 w-4 animate-spin motion-reduce:animate-none mr-1"}),T(),r(E,J)},V=E=>{var J=Os(),K=b(J);Cs(K,{class:"h-4 w-4 mr-1"}),T(),r(E,J)};q(bt,E=>{a.isToggling?E(vt):E(V,!1)})}r(I,at)},$$slots:{default:!0}})},k=m=>{At(m,{size:"sm",get onclick(){return a.onStart},get disabled(){return a.isToggling},"data-testid":"dispatch-toggle-button",children:(I,H)=>{var at=ht(),bt=b(at);{var vt=E=>{var J=Fs(),K=b(J);Je(K,{class:"h-4 w-4 animate-spin motion-reduce:animate-none mr-1"}),T(),r(E,J)},V=E=>{var J=js(),K=b(J);Xa(K,{class:"h-4 w-4 mr-1"}),T(),r(E,J)};q(bt,E=>{a.isToggling?E(vt):E(V,!1)})}r(I,at)},$$slots:{default:!0}})};q(B,m=>{a.enabled?m(S):m(k,!1)},!0)}r(A,D)};q(et,A=>{Qt()?A(X):A(ft,!1)})}s(ot),s(y),r(u,y),Rt()}var Ks=d('<span data-testid="invocation-task-ref"><!></span>'),Ls=d('<span class="text-sm text-muted-foreground italic">No task</span>'),Bs=d('<div class="flex items-center justify-between rounded-md border px-3 py-2 ds-breathe" data-testid="active-invocation-row"><div class="flex items-center gap-3 min-w-0"><!> <!></div> <div class="flex items-center gap-3 shrink-0"><span class="flex items-center gap-1 text-xs text-muted-foreground" data-testid="invocation-elapsed"><!> </span> <a class="inline-flex items-center gap-1 text-xs text-primary hover:underline" data-testid="invocation-session-link">Stream <!></a></div></div>');function Qs(u,a){Mt(a,!0);let y=ea(a,"taskTitle",3,null),g=tt(()=>p(a.invocation.elapsed_ms));function p(S){const k=Math.floor(S/1e3);if(k<60)return`${k}s`;const m=Math.floor(k/60),I=k%60;if(m<60)return`${m}m ${I}s`;const H=Math.floor(m/60),at=m%60;return`${H}h ${at}m`}var $=Bs(),v=i($),P=i(v);_t(P,{class:"bg-status-in-progress text-status-in-progress-fg shrink-0",children:(S,k)=>{T();var m=G();F(()=>N(m,a.invocation.agent_id)),r(S,m)},$$slots:{default:!0}});var C=e(P,2);{var z=S=>{var k=Ks(),m=i(k);Wa(m,{get ref(){return a.invocation.task_ref},type:"task",get title(){return y()},class:"text-sm"}),s(k),r(S,k)},ot=S=>{var k=Ls();r(S,k)};q(C,S=>{a.invocation.task_ref?S(z):S(ot,!1)})}s(v);var et=e(v,2),X=i(et),ft=i(X);Ya(ft,{class:"h-3 w-3"});var A=e(ft);s(X);var D=e(X,2),B=e(i(D));ts(B,{class:"h-3 w-3"}),s(D),s(et),s($),F(()=>{N(A,` ${t(g)??""}`),St(D,"href",`${Ja??""}/sessions/${a.invocation.session_id??""}`)}),r(u,$),Rt()}var Us=d('<div class="bg-destructive/10 text-destructive p-4 rounded-lg" data-testid="error-message" role="alert"> </div>'),Hs=d('<div class="flex flex-col gap-4" data-testid="agents-loading"><!> <!> <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4"><!> <!></div></div>'),Vs=d('<div class="flex flex-col gap-2"></div>'),Zs=d('<div class="flex flex-col items-center justify-center py-8 text-center border rounded-lg" data-testid="active-invocations-empty"><!> <h3 class="text-sm font-medium mb-1">No active invocations</h3> <p class="text-xs text-muted-foreground max-w-sm">Dispatch is running and waiting for eligible tasks. Use <code class="bg-muted px-1 py-0.5 rounded">kspec tasks ready --eligible</code> to check for work.</p></div>'),Gs=d('<section data-testid="active-invocations-section" aria-live="polite" aria-relevant="additions removals"><h2 class="text-lg font-semibold mb-3">Active Invocations</h2> <!></section>'),Xs=d('<span class="text-sm font-normal text-muted-foreground"> </span>'),Js=d('<div class="flex flex-col items-center justify-center py-12 text-center border rounded-lg" data-testid="agents-empty-state"><!> <h3 class="text-lg font-medium mb-1">No agents defined</h3> <p class="text-sm text-muted-foreground max-w-sm">Agent definitions are configured in kynetic.meta.yaml. Use <code class="text-xs bg-muted px-1 py-0.5 rounded">kspec setup</code> to create default agent definitions.</p></div>'),Ws=d('<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4"></div>'),Ys=d('<section data-testid="dispatch-section"><h2 class="text-lg font-semibold mb-3">Dispatch Engine</h2> <!></section> <!> <div class="sr-only" aria-live="assertive" aria-atomic="true" data-testid="invocation-live-region"> </div> <!> <section data-testid="agent-definitions-section"><h2 class="text-lg font-semibold mb-3">Agent Definitions <!></h2> <!></section>',1),tr=d('<div class="flex flex-col gap-6 p-6"><div><h1 class="text-3xl font-bold mb-2">Agents</h1> <p class="text-muted-foreground">Agent definitions and dispatch engine status.</p></div> <!> <!> <!></div>');function Nr(u,a){Mt(a,!0);const y=sa(),g=Ze(()=>({queryKey:re.agents.status(),queryFn:()=>Ca(),enabled:Ge()&&!Qt(),staleTime:10*1e3})),p=Ze(()=>({queryKey:re.agents.definitions(),queryFn:()=>Da(),enabled:Ge()}));let $=tt(()=>g.data??null),v=tt(()=>p.data?.items??[]),P=tt(()=>g.isLoading||p.isLoading),C=O(""),z=O(!1),ot=O(null),et=O(""),X=O(jt({}));ta(()=>{if(g.data?.agent_definitions){const c={};for(const _ of g.data.agent_definitions)_.completed_sessions!=null&&_.completed_sessions>0&&(c[_.id]=_.completed_sessions);n(X,c,!0)}});let ft=tt(()=>{const c={};if(t($)?.active_invocations)for(const _ of t($).active_invocations)c[_.agent_id]=(c[_.agent_id]||0)+1;return c});const A=as(()=>({mutationFn:c=>Na(c),onSuccess:()=>{y.invalidateQueries({queryKey:re.agents.all})},onError:c=>{c instanceof ra?n(C,c.message,!0):n(C,c.message||"Failed to control dispatch",!0)}}));let D=tt(()=>A.isPending);function B(){Qt()||(n(C,""),A.mutate("start"))}function S(){Qt()||(n(C,""),A.mutate("stop"))}function k(c){if(c.event==="agent_invocation"){const _=c.data;(_.status==="completed"||_.status==="failed")&&n(X,{...t(X),[_.agent_id]:(t(X)[_.agent_id]||0)+1},!0);const w=_.agent_id||"Agent";_.status==="started"?n(et,`${w} invocation started`):_.status==="completed"?n(et,`${w} invocation completed`):_.status==="failed"&&n(et,`${w} invocation failed`)}}function m(c){n(ot,c,!0),n(z,!0)}function I(c){y.invalidateQueries({queryKey:re.agents.definitions()})}$a(()=>{Qt()||(Ea(["agents"]),Ma("agents",k))}),ya(()=>{Qt()||(Ra("agents",k),qa(["agents"]))});var H=tr(),at=e(i(H),2);{var bt=c=>{var _=Us(),w=i(_,!0);s(_),F(()=>N(w,t(C)||g.error?.message||p.error?.message)),r(c,_)};q(at,c=>{(t(C)||g.error||p.error)&&c(bt)})}var vt=e(at,2);{var V=c=>{var _=Hs(),w=i(_);Ae(w,{class:"h-16 w-full rounded-lg"});var Q=e(w,2);Gt(Q,{});var mt=e(Q,2),h=i(mt);Ae(h,{class:"h-40 rounded-lg"});var x=e(h,2);Ae(x,{class:"h-40 rounded-lg"}),s(mt),s(_),r(c,_)},E=c=>{var _=Ys(),w=b(_),Q=e(i(w),2);{var mt=L=>{Is(L,{get enabled(){return t($).dispatch_enabled},get activeCount(){return t($).active_invocations.length},get queueDepth(){return t($).queue_depth},onStart:B,onStop:S,get isToggling(){return t(D)}})};q(Q,L=>{t($)&&L(mt)})}s(w);var h=e(w,2);{var x=L=>{var W=Gs(),j=e(i(W),2);{var it=Z=>{var $t=Vs();Tt($t,21,()=>t($).active_invocations,yt=>yt.session_id,(yt,Xt)=>{{let Kt=tt(()=>t(Xt).task_title??null);Qs(yt,{get invocation(){return t(Xt)},get taskTitle(){return t(Kt)}})}}),s($t),r(Z,$t)},Nt=Z=>{var $t=Zs(),yt=i($t);na(yt,{class:"h-10 w-10 text-muted-foreground mb-3"}),T(4),s($t),r(Z,$t)};q(j,Z=>{t($).active_invocations.length>0?Z(it):Z(Nt,!1)})}s(W),r(L,W)};q(h,L=>{t($)?.dispatch_enabled&&L(x)})}var M=e(h,2),lt=i(M,!0);s(M);var ct=e(M,2);Gt(ct,{});var st=e(ct,2),pt=i(st),zt=e(i(pt));{var Ct=L=>{var W=Xs(),j=i(W);s(W),F(()=>N(j,`(${t(v).length??""})`)),r(L,W)};q(zt,L=>{t(v).length>0&&L(Ct)})}s(pt);var It=e(pt,2);{var Dt=L=>{var W=Js(),j=i(W);ia(j,{class:"h-12 w-12 text-muted-foreground mb-4"}),T(4),s(W),r(L,W)},qt=L=>{var W=Ws();Tt(W,21,()=>t(v),j=>j.id,(j,it)=>{{let Nt=tt(()=>t(ft)[t(it).id]||0),Z=tt(()=>t(X)[t(it).id]||0);vs(j,{get agent(){return t(it)},get activeCount(){return t(Nt)},get completedCount(){return t(Z)},onEdit:()=>m(t(it))})}}),s(W),r(L,W)};q(It,L=>{t(v).length===0?L(Dt):L(qt,!1)})}s(st),F(()=>N(lt,t(et))),r(c,_)};q(vt,c=>{t(P)?c(V):c(E,!1)})}var J=e(vt,2);{var K=c=>{Ts(c,{get agent(){return t(ot)},onSaved:I,get open(){return t(z)},set open(_){n(z,_,!0)}})};q(J,c=>{t(ot)&&c(K)})}s(H),r(u,H),Rt()}export{Nr as component};
@@ -0,0 +1,2 @@
1
+ import{f as g,a as r,t as T,c as xe}from"../chunks/y4GeEH6k.js";import{p as be,f as q,c as v,s,t as y,a as he,g as e,u as S,r as i,b as B,n as D,d}from"../chunks/CaAJD3dl.js";import{d as $e,s as P}from"../chunks/DqT6OH_u.js";import{i as b}from"../chunks/Dg_zDpDS.js";import{u as ye,a as Se,i as wt,b as we,f as Ie,q as It,d as V,s as Tt,e as Te,g as Qt,h as it,j as Pt,k as Pe,B as zt}from"../chunks/Dd5umPsk.js";import{h as Ae,r as De}from"../chunks/fZMteyca.js";import{g as Ce}from"../chunks/BsJFsuAT.js";import{b as At}from"../chunks/CDRO15Iv.js";import{p as nt}from"../chunks/dh5HeqUr.js";import{B as J}from"../chunks/P0A_fJvS.js";import{I as ke}from"../chunks/CqbsoCwA.js";import{C as Gt}from"../chunks/CF1CoqD5.js";import{C as Nt}from"../chunks/Du5ng3u4.js";import{C as Ee}from"../chunks/DKIeaprD.js";import{D as Le,a as Ue,b as Me,c as qe,d as je}from"../chunks/AiWQj974.js";import{D as Ke}from"../chunks/BSzL1fpU.js";import{I as Oe}from"../chunks/CWUQwB9H.js";var Re=g('<p class="text-sm text-muted-foreground" data-testid="inbox-summary"> <!></p>'),Be=g("<option> </option>"),Fe=g('<select class="rounded-md border bg-background px-3 py-1.5 text-sm" data-testid="inbox-tag-filter"><option>All Tags</option><!></select>'),Qe=g('<div class="bg-destructive/10 text-destructive p-4 rounded-lg text-sm" data-testid="error-message" role="alert"> </div>'),ze=g('<div class="flex gap-2"><!> <!></div>'),Ge=g('<div class="h-20 rounded-lg bg-muted ds-shimmer"></div>'),Ne=g('<div class="space-y-2" data-testid="inbox-loading"></div>'),He=g('<h2 class="text-lg font-medium text-muted-foreground mb-1">No inbox items</h2> <p class="text-sm text-muted-foreground"><!></p>',1),Ve=g('<h2 class="text-lg font-medium text-muted-foreground mb-1">No matching items</h2> <p class="text-sm text-muted-foreground">Try adjusting the filters above.</p>',1),Je=g('<div class="flex flex-col items-center justify-center py-16" data-testid="inbox-empty"><!> <!></div>'),We=g('<span class="text-xs text-muted-foreground" data-testid="inbox-triage-action"> </span>'),Xe=g('<div class="flex items-start justify-between gap-4"><div class="flex-1 min-w-0"><div class="flex items-center gap-2 mb-1"><!> <!></div> <div class="text-sm break-words leading-relaxed prose prose-sm dark:prose-invert max-w-none" data-testid="inbox-text"><!></div></div> <div class="flex items-center gap-1 flex-shrink-0"><!> <!></div></div>'),Ye=g('<span>&middot;</span> <div class="flex gap-1" data-testid="inbox-tags"></div>',1),Ze=g('<div class="flex items-center gap-2 text-xs text-muted-foreground"><span data-testid="inbox-created-at"> </span> <span>&middot;</span> <span data-testid="inbox-added-by"> </span> <!></div>'),ta=g("<!> <!>",1),ea=g('<div class="flex flex-col gap-3" data-testid="inbox-list"></div>'),aa=g("<!> <!>",1),ra=g('<div class="rounded-md bg-muted p-3 text-sm"> </div>'),sa=g("<!> <!>",1),oa=g("<!> <!> <!>",1),ia=g('<div class="flex flex-col gap-4 p-6"><div class="flex items-center justify-between"><div><h1 class="text-2xl font-bold">Inbox</h1> <!></div> <!></div> <div class="flex flex-wrap gap-2 items-center" data-testid="inbox-filters"><select class="rounded-md border bg-background px-3 py-1.5 text-sm" data-testid="inbox-status-filter"><option>All Status</option><option>Untriaged</option><option>Triaged</option><option>Acted On</option></select> <!> <select class="rounded-md border bg-background px-3 py-1.5 text-sm" data-testid="inbox-age-filter"><option>Any Age</option><option>Last 24 hours</option><option>Last 7 days</option><option>Last 30 days</option></select></div> <!> <!> <!></div> <!>',1);function wa(Ht,Vt){be(Vt,!0);const Dt=ye();let F=B(!1),Q=B(""),W=B(!1),z=B(!1),j=B(null),X=B(!1),C=B("");const Jt={untriaged:"Untriaged",triaged:"Triaged",acted_on:"Acted On"},Ct={untriaged:"bg-status-pending text-status-pending-fg",triaged:"bg-status-pending-review text-status-pending-review-fg",acted_on:"bg-status-completed text-status-completed-fg"},Y=Se(()=>({queryKey:It.inbox.merged(),queryFn:()=>Ie(),enabled:we()})),Wt=["all","untriaged","triaged","acted_on"];let G=S(()=>{const t=nt.url.searchParams.get("status");return t&&Wt.includes(t)?t:"all"}),Z=S(()=>nt.url.searchParams.get("tag")||""),tt=S(()=>nt.url.searchParams.get("age")||""),L=S(()=>(Y.data?.items??[]).map(a=>{const o=a.triage?a.triage.status==="pending"?"untriaged":a.triage.status:"untriaged";return{inbox:a,triageStatus:o}})),rt=S(()=>{let t=e(L);if(e(G)==="untriaged"?t=t.filter(a=>a.triageStatus==="untriaged"):e(G)==="triaged"?t=t.filter(a=>a.triageStatus==="triaged"):e(G)==="acted_on"&&(t=t.filter(a=>a.triageStatus==="acted_on")),e(Z)&&(t=t.filter(a=>a.inbox.tags.includes(e(Z)))),e(tt)){const a=Date.now(),c={"1d":864e5,"7d":6048e5,"30d":2592e6}[e(tt)];c&&(t=t.filter(l=>a-new Date(l.inbox.created_at).getTime()<=c))}return t}),kt=S(()=>{const t=Y.data?.items??[],a=new Set;return t.forEach(o=>o.tags.forEach(c=>a.add(c))),Array.from(a).sort()}),Xt=S(()=>e(L).filter(t=>t.triageStatus==="untriaged").length),Yt=S(()=>e(L).filter(t=>t.triageStatus==="triaged").length),Zt=S(()=>e(L).filter(t=>t.triageStatus==="acted_on").length),Et=S(()=>Y.isLoading),Lt=S(()=>e(C)||(Y.error?Y.error.message:""));function dt(t,a){const o=new URLSearchParams(nt.url.searchParams);!a||a==="all"?o.delete(t):o.set(t,a);const c=o.toString(),l=c?`${At}/inbox?${c}`:`${At}/inbox`;Ce(l,{replaceState:!1,keepFocus:!0,noScroll:!0})}async function Ut(){if(e(Q).trim()){if(V()){d(C,"Cannot add items in read-only mode. Use the kspec CLI.");return}try{d(W,!0),d(C,""),await Pe(e(Q).trim()),d(Q,""),d(F,!1),Dt.invalidateQueries({queryKey:It.inbox.all})}catch(t){t instanceof Qt?d(C,t.message,!0):d(C,t instanceof Error?t.message:"Failed to add item",!0)}finally{d(W,!1)}}}function te(t){t.key==="Enter"&&!t.shiftKey&&(t.preventDefault(),Ut())}function ee(t){d(j,t,!0),d(z,!0)}async function ae(){if(e(j)){if(V()){d(C,"Cannot delete items in read-only mode. Use the kspec CLI."),d(z,!1),d(j,null);return}try{d(X,!0),d(C,""),await Te(e(j)._ulid),d(z,!1),d(j,null),Dt.invalidateQueries({queryKey:It.inbox.all})}catch(t){t instanceof Qt?d(C,t.message,!0):d(C,t instanceof Error?t.message:"Failed to delete item",!0)}finally{d(X,!1)}}}function re(t){const a=new Date(t),c=new Date().getTime()-a.getTime(),l=Math.floor(c/6e4),n=Math.floor(c/36e5),u=Math.floor(c/864e5);return l<1?"just now":l<60?`${l}m ago`:n<24?`${n}h ago`:u<7?`${u}d ago`:a.toLocaleDateString()}function se(t){return Jt[t.triageStatus]||"Untriaged"}function oe(t){return Ct[t.triageStatus]||Ct.untriaged}var Mt=ia(),lt=q(Mt),ut=v(lt),vt=v(ut),ie=s(v(vt),2);{var ne=t=>{var a=Re(),o=v(a),c=s(o);{var l=n=>{var u=T();y(()=>P(u,`· Showing ${e(rt).length??""} filtered`)),r(n,u)};b(c,n=>{e(rt).length!==e(L).length&&n(l)})}i(a),y(()=>P(o,`${e(L).length??""} item${e(L).length===1?"":"s"}
2
+ · ${e(Xt)??""} untriaged, ${e(Yt)??""} triaged, ${e(Zt)??""} acted on `)),r(t,a)};b(ie,t=>{e(Et)||t(ne)})}i(vt);var de=s(vt,2);{var le=t=>{{let a=S(()=>e(F)?"secondary":"default");J(t,{"data-testid":"add-inbox-button",onclick:()=>d(F,!e(F)),get variant(){return e(a)},children:(o,c)=>{D();var l=T();y(()=>P(l,e(F)?"Cancel":"Add Item")),r(o,l)},$$slots:{default:!0}})}};b(de,t=>{V()||t(le)})}i(ut);var ct=s(ut,2),U=v(ct);U.__change=t=>dt("status",t.currentTarget.value);var ft=v(U);ft.value=ft.__value="all";var gt=s(ft);gt.value=gt.__value="untriaged";var _t=s(gt);_t.value=_t.__value="triaged";var qt=s(_t);qt.value=qt.__value="acted_on",i(U);var jt;wt(U);var Kt=s(U,2);{var ue=t=>{var a=Fe();a.__change=n=>dt("tag",n.currentTarget.value);var o=v(a);o.value=o.__value="";var c=s(o);it(c,17,()=>e(kt),Pt,(n,u)=>{var p=Be(),f=v(p,!0);i(p);var x={};y(()=>{P(f,e(u)),x!==(x=e(u))&&(p.value=(p.__value=e(u))??"")}),r(n,p)}),i(a);var l;wt(a),y(()=>{l!==(l=e(Z))&&(a.value=(a.__value=e(Z))??"",Tt(a,e(Z)))}),r(t,a)};b(Kt,t=>{e(kt).length>0&&t(ue)})}var K=s(Kt,2);K.__change=t=>dt("age",t.currentTarget.value);var mt=v(K);mt.value=mt.__value="";var pt=s(mt);pt.value=pt.__value="1d";var xt=s(pt);xt.value=xt.__value="7d";var Ot=s(xt);Ot.value=Ot.__value="30d",i(K);var Rt;wt(K),i(ct);var Bt=s(ct,2);{var ve=t=>{var a=Qe(),o=v(a,!0);i(a),y(()=>P(o,e(Lt))),r(t,a)};b(Bt,t=>{e(Lt)&&t(ve)})}var Ft=s(Bt,2);{var ce=t=>{Gt(t,{"data-testid":"inbox-add-form",children:(a,o)=>{Nt(a,{class:"pt-6",children:(c,l)=>{var n=ze(),u=v(n);ke(u,{"data-testid":"inbox-input",placeholder:"Enter inbox item text (press Enter to submit)",onkeydown:te,get disabled(){return e(W)},class:"flex-1",get value(){return e(Q)},set value(f){d(Q,f,!0)}});var p=s(u,2);{let f=S(()=>e(W)||!e(Q).trim());J(p,{"data-testid":"inbox-submit",onclick:Ut,get disabled(){return e(f)},children:(x,k)=>{D();var _=T();y(()=>P(_,e(W)?"Adding...":"Add")),r(x,_)},$$slots:{default:!0}})}i(n),r(c,n)},$$slots:{default:!0}})},$$slots:{default:!0}})};b(Ft,t=>{e(F)&&t(ce)})}var fe=s(Ft,2);{var ge=t=>{var a=Ne();it(a,20,()=>Array(5),Pt,(o,c)=>{var l=Ge();r(o,l)}),i(a),r(t,a)},_e=t=>{var a=xe(),o=q(a);{var c=n=>{var u=Je(),p=v(u);Oe(p,{class:"size-12 text-muted-foreground/30 mb-4"});var f=s(p,2);{var x=_=>{var w=He(),M=s(q(w),2),I=v(M);{var O=h=>{var E=T("No inbox items in the snapshot.");r(h,E)},m=h=>{var E=T('Click "Add Item" to capture ideas and thoughts.');r(h,E)};b(I,h=>{V()?h(O):h(m,!1)})}i(M),r(_,w)},k=_=>{var w=Ve();D(2),r(_,w)};b(f,_=>{e(L).length===0?_(x):_(k,!1)})}i(u),r(n,u)},l=n=>{var u=ea();it(u,21,()=>e(rt),p=>p.inbox._ulid,(p,f)=>{Gt(p,{class:"transition-all duration-200 hover:shadow-md","data-testid":"inbox-item",children:(x,k)=>{var _=ta(),w=q(_);Ee(w,{class:"pb-3",children:(I,O)=>{var m=Xe(),h=v(m),E=v(h),N=v(E);{let $=S(()=>oe(e(f)));zt(N,{get class(){return e($)},"data-testid":"inbox-triage-status",children:(A,ot)=>{D();var H=T();y(pe=>P(H,pe),[()=>se(e(f))]),r(A,H)},$$slots:{default:!0}})}var bt=s(N,2);{var ht=$=>{var A=We(),ot=v(A,!0);i(A),y(()=>P(ot,e(f).inbox.triage.action)),r($,A)};b(bt,$=>{e(f).inbox.triage?.action&&$(ht)})}i(E);var st=s(E,2),R=v(st);Ae(R,()=>De(e(f).inbox.text)),i(st),i(h);var et=s(h,2),at=v(et);{var $t=$=>{J($,{variant:"ghost",size:"sm",get href(){return`${At??""}/triage?status=untriaged`},"data-testid":"inbox-triage-link",class:"text-xs",children:(A,ot)=>{D();var H=T("Triage");r(A,H)},$$slots:{default:!0}})};b(at,$=>{!V()&&e(f).triageStatus==="untriaged"&&$($t)})}var yt=s(at,2);{var St=$=>{J($,{"data-testid":"delete-inbox-button",variant:"ghost",size:"sm",onclick:()=>ee(e(f).inbox),class:"text-destructive hover:text-destructive hover:bg-destructive/10",children:(A,ot)=>{D();var H=T("Delete");r(A,H)},$$slots:{default:!0}})};b(yt,$=>{V()||$(St)})}i(et),i(m),r(I,m)},$$slots:{default:!0}});var M=s(w,2);Nt(M,{class:"pt-0",children:(I,O)=>{var m=Ze(),h=v(m),E=v(h,!0);i(h);var N=s(h,4),bt=v(N,!0);i(N);var ht=s(N,2);{var st=R=>{var et=Ye(),at=s(q(et),2);it(at,21,()=>e(f).inbox.tags,Pt,($t,yt)=>{zt($t,{variant:"secondary",class:"text-xs",children:(St,$)=>{D();var A=T();y(()=>P(A,e(yt))),r(St,A)},$$slots:{default:!0}})}),i(at),r(R,et)};b(ht,R=>{e(f).inbox.tags.length>0&&R(st)})}i(m),y(R=>{P(E,R),P(bt,e(f).inbox.added_by)},[()=>re(e(f).inbox.created_at)]),r(I,m)},$$slots:{default:!0}}),r(x,_)},$$slots:{default:!0}})}),i(u),r(n,u)};b(o,n=>{e(rt).length===0?n(c):n(l,!1)},!0)}r(t,a)};b(fe,t=>{e(Et)?t(ge):t(_e,!1)})}i(lt);var me=s(lt,2);Le(me,{get open(){return e(z)},set open(t){d(z,t,!0)},children:(t,a)=>{Ue(t,{"data-testid":"confirm-delete-dialog",children:(o,c)=>{var l=oa(),n=q(l);Me(n,{children:(x,k)=>{var _=aa(),w=q(_);qe(w,{children:(I,O)=>{D();var m=T("Delete Inbox Item?");r(I,m)},$$slots:{default:!0}});var M=s(w,2);je(M,{children:(I,O)=>{D();var m=T("Are you sure you want to delete this inbox item? This action cannot be undone.");r(I,m)},$$slots:{default:!0}}),r(x,_)},$$slots:{default:!0}});var u=s(n,2);{var p=x=>{var k=ra(),_=v(k,!0);i(k),y(()=>P(_,e(j).text)),r(x,k)};b(u,x=>{e(j)&&x(p)})}var f=s(u,2);Ke(f,{children:(x,k)=>{var _=sa(),w=q(_);J(w,{"data-testid":"confirm-delete-no",variant:"outline",onclick:()=>d(z,!1),get disabled(){return e(X)},children:(I,O)=>{D();var m=T("Cancel");r(I,m)},$$slots:{default:!0}});var M=s(w,2);J(M,{"data-testid":"confirm-delete-yes",variant:"destructive",onclick:ae,get disabled(){return e(X)},children:(I,O)=>{D();var m=T();y(()=>P(m,e(X)?"Deleting...":"Delete")),r(I,m)},$$slots:{default:!0}}),r(x,_)},$$slots:{default:!0}}),r(o,l)},$$slots:{default:!0}})},$$slots:{default:!0}}),y(()=>{jt!==(jt=e(G))&&(U.value=(U.__value=e(G))??"",Tt(U,e(G))),Rt!==(Rt=e(tt))&&(K.value=(K.__value=e(tt))??"",Tt(K,e(tt)))}),r(Ht,Mt),he()}$e(["change"]);export{wa as component};
@@ -0,0 +1 @@
1
+ import{f as m,a as i}from"../chunks/y4GeEH6k.js";import"../chunks/DxJw79Wi.js";import{o as n}from"../chunks/oTsvd9y4.js";import{p as c,a as f}from"../chunks/CaAJD3dl.js";import{i as u}from"../chunks/C0w6WDm5.js";import{s as g,a as l}from"../chunks/ChQD-6N8.js";import{g as $}from"../chunks/BsJFsuAT.js";import{b as d}from"../chunks/CDRO15Iv.js";import{p as v}from"../chunks/gPrj-hqC.js";var h=m('<div class="flex items-center justify-center h-32"><span class="text-muted-foreground">Redirecting to Specs...</span></div>');function k(o,t){c(t,!1);const s=()=>l(v,"$page",r),[r,e]=g();n(()=>{const p=s().url.search;$(`${d}/specs${p}`,{replaceState:!0})}),u();var a=h();i(o,a),f(),e()}export{k as component};
@@ -0,0 +1 @@
1
+ import{c as O,a as s,f as u,t as H}from"../chunks/y4GeEH6k.js";import{f as Q,p as ct,a as ft,s as p,c as o,n as J,t as k,g as e,u as A,r}from"../chunks/CaAJD3dl.js";import{s as C}from"../chunks/DqT6OH_u.js";import{l as R,s as U,i as P}from"../chunks/Dg_zDpDS.js";import{a as pt,B as Z,b as ut,J as mt,q as _t,h as xt,y as gt}from"../chunks/Dd5umPsk.js";import{h as E,r as G}from"../chunks/fZMteyca.js";import{c as $t}from"../chunks/Ds9I9wQb.js";import{C as ht}from"../chunks/CF1CoqD5.js";import{C as bt}from"../chunks/DKIeaprD.js";import"../chunks/DxJw79Wi.js";import{I as V,s as W}from"../chunks/DLd2uVIA.js";import{C as yt}from"../chunks/Bp5pFYXL.js";import{T as wt}from"../chunks/BFGAyJjD.js";function Mt(_,v){const x=R(v,["children","$$slots","$$events","$$legacy"]);const g=[["path",{d:"M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5"}],["path",{d:"M9 18h6"}],["path",{d:"M10 22h4"}]];V(_,U({name:"lightbulb"},()=>x,{get iconNode(){return g},children:($,h)=>{var i=O(),b=Q(i);W(b,v,"default",{}),s($,i)},$$slots:{default:!0}}))}function qt(_,v){const x=R(v,["children","$$slots","$$events","$$legacy"]);const g=[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z"}]];V(_,U({name:"zap"},()=>x,{get iconNode(){return g},children:($,h)=>{var i=O(),b=Q(i);W(b,v,"default",{}),s($,i)},$$slots:{default:!0}}))}var kt=u('<div class="rounded-md bg-red-50 p-4 text-sm text-red-800" data-testid="error"> </div>'),Ct=u('<div class="text-center text-muted-foreground" data-testid="loading">Loading observations...</div>'),Pt=u('<div class="text-center text-muted-foreground" data-testid="observations-empty"><p>No unresolved observations.</p> <p class="text-sm">Observations are captured during work sessions.</p></div>'),zt=u('<div class="mt-2 text-xs text-muted-foreground border-l-2 border-muted pl-3 prose prose-sm dark:prose-invert max-w-none" data-testid="observation-context"><!></div>'),Dt=u('<div class="flex items-start gap-3"><div data-testid="observation-type-icon"><!></div> <div class="flex-1"><div class="flex items-center gap-2 mb-2"><!> <span class="text-xs text-muted-foreground"> </span></div> <div class="text-sm break-words leading-relaxed prose prose-sm dark:prose-invert max-w-none" data-testid="observation-content"><!></div> <!></div></div>'),It=u('<div class="flex flex-col gap-3"></div>'),Lt=u('<div class="flex flex-col gap-4" data-testid="observations-panel"><div class="flex items-center justify-between"><h1 class="text-3xl font-bold">Observations</h1> <!></div> <!> <!></div>');function Rt(_,v){ct(v,!0);const x={friction:wt,success:qt,question:yt,idea:Mt},g={friction:"text-red-600",success:"text-green-600",question:"text-blue-600",idea:"text-yellow-600"},$={friction:"Friction",success:"Success",question:"Question",idea:"Idea"},h=pt(()=>({queryKey:_t.observations.list({resolved:!1}),queryFn:()=>mt({resolved:!1}),enabled:ut()}));let i=A(()=>h.data?.items??[]),b=A(()=>h.isLoading),j=A(()=>h.error?.message??"");function X(t){const a=new Date(t),y=new Date().getTime()-a.getTime(),w=Math.floor(y/6e4),n=Math.floor(y/36e5),l=Math.floor(y/864e5);return w<1?"just now":w<60?`${w}m ago`:n<24?`${n}h ago`:l<7?`${l}d ago`:a.toLocaleDateString()}var z=Lt(),D=o(z),Y=p(o(D),2);Z(Y,{variant:"secondary","data-testid":"observations-count",children:(t,a)=>{J();var c=H();k(()=>C(c,`${e(i).length??""} unresolved`)),s(t,c)},$$slots:{default:!0}}),r(D);var B=p(D,2);{var tt=t=>{var a=kt(),c=o(a,!0);r(a),k(()=>C(c,e(j))),s(t,a)};P(B,t=>{e(j)&&t(tt)})}var et=p(B,2);{var at=t=>{var a=Ct();s(t,a)},st=t=>{var a=O(),c=Q(a);{var y=n=>{var l=Pt();s(n,l)},w=n=>{var l=It();xt(l,21,()=>e(i),I=>I._ulid,(I,f)=>{ht(I,{"data-testid":"observation-item",children:(rt,Nt)=>{bt(rt,{class:"pb-3",children:(ot,Tt)=>{var L=Dt(),M=o(L),it=o(M);$t(it,()=>x[e(f).type],(d,m)=>{m(d,{class:"h-5 w-5"})}),r(M);var F=p(M,2),N=o(F),K=o(N);Z(K,{variant:"outline","data-testid":"observation-type",children:(d,m)=>{J();var q=H();k(()=>C(q,$[e(f).type])),s(d,q)},$$slots:{default:!0}});var S=p(K,2),nt=o(S,!0);r(S),r(N);var T=p(N,2),dt=o(T);E(dt,()=>G(e(f).content)),r(T);var lt=p(T,2);{var vt=d=>{var m=zt(),q=o(m);E(q,()=>G(e(f).context)),r(m),s(d,m)};P(lt,d=>{e(f).context&&d(vt)})}r(F),r(L),k(d=>{gt(M,1,`mt-0.5 ${g[e(f).type]}`),C(nt,d)},[()=>X(e(f).created_at)]),s(ot,L)},$$slots:{default:!0}})},$$slots:{default:!0}})}),r(l),s(n,l)};P(c,n=>{e(i).length===0?n(y):n(w,!1)},!0)}s(t,a)};P(et,t=>{e(b)?t(at):t(st,!1)})}r(z),s(_,z),ft()}export{Rt as component};