@specship/specship 0.11.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 (879) hide show
  1. package/.claude-plugin/plugin.json +6 -0
  2. package/LICENSE +21 -0
  3. package/README.md +583 -0
  4. package/agents/specship-explorer.md +29 -0
  5. package/commands/ss-behaviour.md +116 -0
  6. package/commands/ss-check.md +43 -0
  7. package/commands/ss-design-implement.md +84 -0
  8. package/commands/ss-design-loop.md +125 -0
  9. package/commands/ss-explore.md +43 -0
  10. package/commands/ss-spec.md +118 -0
  11. package/dist/activation/starter-prompt.d.ts +57 -0
  12. package/dist/activation/starter-prompt.d.ts.map +1 -0
  13. package/dist/activation/starter-prompt.js +164 -0
  14. package/dist/activation/starter-prompt.js.map +1 -0
  15. package/dist/analytics/specship-impact.d.ts +72 -0
  16. package/dist/analytics/specship-impact.d.ts.map +1 -0
  17. package/dist/analytics/specship-impact.js +216 -0
  18. package/dist/analytics/specship-impact.js.map +1 -0
  19. package/dist/behaviour/behaviour-surface.d.ts +59 -0
  20. package/dist/behaviour/behaviour-surface.d.ts.map +1 -0
  21. package/dist/behaviour/behaviour-surface.js +112 -0
  22. package/dist/behaviour/behaviour-surface.js.map +1 -0
  23. package/dist/bin/node-version-check.d.ts +37 -0
  24. package/dist/bin/node-version-check.d.ts.map +1 -0
  25. package/dist/bin/node-version-check.js +79 -0
  26. package/dist/bin/node-version-check.js.map +1 -0
  27. package/dist/bin/specship.d.ts +25 -0
  28. package/dist/bin/specship.d.ts.map +1 -0
  29. package/dist/bin/specship.js +2823 -0
  30. package/dist/bin/specship.js.map +1 -0
  31. package/dist/bin/uninstall.d.ts +13 -0
  32. package/dist/bin/uninstall.d.ts.map +1 -0
  33. package/dist/bin/uninstall.js +35 -0
  34. package/dist/bin/uninstall.js.map +1 -0
  35. package/dist/context/formatter.d.ts +30 -0
  36. package/dist/context/formatter.d.ts.map +1 -0
  37. package/dist/context/formatter.js +263 -0
  38. package/dist/context/formatter.js.map +1 -0
  39. package/dist/context/index.d.ts +119 -0
  40. package/dist/context/index.d.ts.map +1 -0
  41. package/dist/context/index.js +1289 -0
  42. package/dist/context/index.js.map +1 -0
  43. package/dist/context/markers.d.ts +19 -0
  44. package/dist/context/markers.d.ts.map +1 -0
  45. package/dist/context/markers.js +22 -0
  46. package/dist/context/markers.js.map +1 -0
  47. package/dist/db/index.d.ts +103 -0
  48. package/dist/db/index.d.ts.map +1 -0
  49. package/dist/db/index.js +279 -0
  50. package/dist/db/index.js.map +1 -0
  51. package/dist/db/migrations.d.ts +44 -0
  52. package/dist/db/migrations.d.ts.map +1 -0
  53. package/dist/db/migrations.js +503 -0
  54. package/dist/db/migrations.js.map +1 -0
  55. package/dist/db/queries.d.ts +357 -0
  56. package/dist/db/queries.d.ts.map +1 -0
  57. package/dist/db/queries.js +1504 -0
  58. package/dist/db/queries.js.map +1 -0
  59. package/dist/db/schema.sql +451 -0
  60. package/dist/db/spec-queries.d.ts +130 -0
  61. package/dist/db/spec-queries.d.ts.map +1 -0
  62. package/dist/db/spec-queries.js +738 -0
  63. package/dist/db/spec-queries.js.map +1 -0
  64. package/dist/db/sqlite-adapter.d.ts +65 -0
  65. package/dist/db/sqlite-adapter.d.ts.map +1 -0
  66. package/dist/db/sqlite-adapter.js +214 -0
  67. package/dist/db/sqlite-adapter.js.map +1 -0
  68. package/dist/designer/artifact-store.js +54 -0
  69. package/dist/designer/browser.js +141 -0
  70. package/dist/designer/cdp-ensure.js +60 -0
  71. package/dist/designer/cdp-env.js +18 -0
  72. package/dist/designer/cdp-trace.js +599 -0
  73. package/dist/designer/cross-platform.js +74 -0
  74. package/dist/designer/designer-controller.js +1413 -0
  75. package/dist/designer/file-panel.js +39 -0
  76. package/dist/designer/interstitials.js +97 -0
  77. package/dist/designer/oopif-reader.js +176 -0
  78. package/dist/designer/package-meta.js +18 -0
  79. package/dist/designer/preview-host.js +50 -0
  80. package/dist/designer/repo-root.js +31 -0
  81. package/dist/designer/run-state.js +353 -0
  82. package/dist/designer/session-store.js +59 -0
  83. package/dist/designer/ui-anchors.js +651 -0
  84. package/dist/directory.d.ts +67 -0
  85. package/dist/directory.d.ts.map +1 -0
  86. package/dist/directory.js +267 -0
  87. package/dist/directory.js.map +1 -0
  88. package/dist/enforce/enforce.d.ts +70 -0
  89. package/dist/enforce/enforce.d.ts.map +1 -0
  90. package/dist/enforce/enforce.js +125 -0
  91. package/dist/enforce/enforce.js.map +1 -0
  92. package/dist/errors.d.ts +136 -0
  93. package/dist/errors.d.ts.map +1 -0
  94. package/dist/errors.js +219 -0
  95. package/dist/errors.js.map +1 -0
  96. package/dist/extraction/dfm-extractor.d.ts +31 -0
  97. package/dist/extraction/dfm-extractor.d.ts.map +1 -0
  98. package/dist/extraction/dfm-extractor.js +151 -0
  99. package/dist/extraction/dfm-extractor.js.map +1 -0
  100. package/dist/extraction/generated-detection.d.ts +30 -0
  101. package/dist/extraction/generated-detection.d.ts.map +1 -0
  102. package/dist/extraction/generated-detection.js +80 -0
  103. package/dist/extraction/generated-detection.js.map +1 -0
  104. package/dist/extraction/grammars.d.ts +100 -0
  105. package/dist/extraction/grammars.d.ts.map +1 -0
  106. package/dist/extraction/grammars.js +426 -0
  107. package/dist/extraction/grammars.js.map +1 -0
  108. package/dist/extraction/index.d.ts +138 -0
  109. package/dist/extraction/index.d.ts.map +1 -0
  110. package/dist/extraction/index.js +1394 -0
  111. package/dist/extraction/index.js.map +1 -0
  112. package/dist/extraction/languages/c-cpp.d.ts +4 -0
  113. package/dist/extraction/languages/c-cpp.d.ts.map +1 -0
  114. package/dist/extraction/languages/c-cpp.js +171 -0
  115. package/dist/extraction/languages/c-cpp.js.map +1 -0
  116. package/dist/extraction/languages/csharp.d.ts +3 -0
  117. package/dist/extraction/languages/csharp.d.ts.map +1 -0
  118. package/dist/extraction/languages/csharp.js +73 -0
  119. package/dist/extraction/languages/csharp.js.map +1 -0
  120. package/dist/extraction/languages/dart.d.ts +3 -0
  121. package/dist/extraction/languages/dart.d.ts.map +1 -0
  122. package/dist/extraction/languages/dart.js +192 -0
  123. package/dist/extraction/languages/dart.js.map +1 -0
  124. package/dist/extraction/languages/go.d.ts +3 -0
  125. package/dist/extraction/languages/go.d.ts.map +1 -0
  126. package/dist/extraction/languages/go.js +74 -0
  127. package/dist/extraction/languages/go.js.map +1 -0
  128. package/dist/extraction/languages/index.d.ts +10 -0
  129. package/dist/extraction/languages/index.d.ts.map +1 -0
  130. package/dist/extraction/languages/index.js +51 -0
  131. package/dist/extraction/languages/index.js.map +1 -0
  132. package/dist/extraction/languages/java.d.ts +3 -0
  133. package/dist/extraction/languages/java.d.ts.map +1 -0
  134. package/dist/extraction/languages/java.js +70 -0
  135. package/dist/extraction/languages/java.js.map +1 -0
  136. package/dist/extraction/languages/javascript.d.ts +3 -0
  137. package/dist/extraction/languages/javascript.d.ts.map +1 -0
  138. package/dist/extraction/languages/javascript.js +90 -0
  139. package/dist/extraction/languages/javascript.js.map +1 -0
  140. package/dist/extraction/languages/kotlin.d.ts +3 -0
  141. package/dist/extraction/languages/kotlin.d.ts.map +1 -0
  142. package/dist/extraction/languages/kotlin.js +259 -0
  143. package/dist/extraction/languages/kotlin.js.map +1 -0
  144. package/dist/extraction/languages/lua.d.ts +3 -0
  145. package/dist/extraction/languages/lua.d.ts.map +1 -0
  146. package/dist/extraction/languages/lua.js +150 -0
  147. package/dist/extraction/languages/lua.js.map +1 -0
  148. package/dist/extraction/languages/luau.d.ts +3 -0
  149. package/dist/extraction/languages/luau.d.ts.map +1 -0
  150. package/dist/extraction/languages/luau.js +37 -0
  151. package/dist/extraction/languages/luau.js.map +1 -0
  152. package/dist/extraction/languages/objc.d.ts +3 -0
  153. package/dist/extraction/languages/objc.d.ts.map +1 -0
  154. package/dist/extraction/languages/objc.js +133 -0
  155. package/dist/extraction/languages/objc.js.map +1 -0
  156. package/dist/extraction/languages/pascal.d.ts +3 -0
  157. package/dist/extraction/languages/pascal.d.ts.map +1 -0
  158. package/dist/extraction/languages/pascal.js +66 -0
  159. package/dist/extraction/languages/pascal.js.map +1 -0
  160. package/dist/extraction/languages/php.d.ts +3 -0
  161. package/dist/extraction/languages/php.d.ts.map +1 -0
  162. package/dist/extraction/languages/php.js +107 -0
  163. package/dist/extraction/languages/php.js.map +1 -0
  164. package/dist/extraction/languages/python.d.ts +3 -0
  165. package/dist/extraction/languages/python.d.ts.map +1 -0
  166. package/dist/extraction/languages/python.js +56 -0
  167. package/dist/extraction/languages/python.js.map +1 -0
  168. package/dist/extraction/languages/ruby.d.ts +3 -0
  169. package/dist/extraction/languages/ruby.d.ts.map +1 -0
  170. package/dist/extraction/languages/ruby.js +114 -0
  171. package/dist/extraction/languages/ruby.js.map +1 -0
  172. package/dist/extraction/languages/rust.d.ts +3 -0
  173. package/dist/extraction/languages/rust.d.ts.map +1 -0
  174. package/dist/extraction/languages/rust.js +109 -0
  175. package/dist/extraction/languages/rust.js.map +1 -0
  176. package/dist/extraction/languages/scala.d.ts +3 -0
  177. package/dist/extraction/languages/scala.d.ts.map +1 -0
  178. package/dist/extraction/languages/scala.js +139 -0
  179. package/dist/extraction/languages/scala.js.map +1 -0
  180. package/dist/extraction/languages/swift.d.ts +3 -0
  181. package/dist/extraction/languages/swift.d.ts.map +1 -0
  182. package/dist/extraction/languages/swift.js +91 -0
  183. package/dist/extraction/languages/swift.js.map +1 -0
  184. package/dist/extraction/languages/typescript.d.ts +3 -0
  185. package/dist/extraction/languages/typescript.d.ts.map +1 -0
  186. package/dist/extraction/languages/typescript.js +129 -0
  187. package/dist/extraction/languages/typescript.js.map +1 -0
  188. package/dist/extraction/liquid-extractor.d.ts +52 -0
  189. package/dist/extraction/liquid-extractor.d.ts.map +1 -0
  190. package/dist/extraction/liquid-extractor.js +313 -0
  191. package/dist/extraction/liquid-extractor.js.map +1 -0
  192. package/dist/extraction/mybatis-extractor.d.ts +48 -0
  193. package/dist/extraction/mybatis-extractor.d.ts.map +1 -0
  194. package/dist/extraction/mybatis-extractor.js +198 -0
  195. package/dist/extraction/mybatis-extractor.js.map +1 -0
  196. package/dist/extraction/parse-worker.d.ts +8 -0
  197. package/dist/extraction/parse-worker.d.ts.map +1 -0
  198. package/dist/extraction/parse-worker.js +94 -0
  199. package/dist/extraction/parse-worker.js.map +1 -0
  200. package/dist/extraction/specs/markdown-spec-extractor.d.ts +114 -0
  201. package/dist/extraction/specs/markdown-spec-extractor.d.ts.map +1 -0
  202. package/dist/extraction/specs/markdown-spec-extractor.js +699 -0
  203. package/dist/extraction/specs/markdown-spec-extractor.js.map +1 -0
  204. package/dist/extraction/specs/types.d.ts +39 -0
  205. package/dist/extraction/specs/types.d.ts.map +1 -0
  206. package/dist/extraction/specs/types.js +8 -0
  207. package/dist/extraction/specs/types.js.map +1 -0
  208. package/dist/extraction/svelte-extractor.d.ts +56 -0
  209. package/dist/extraction/svelte-extractor.d.ts.map +1 -0
  210. package/dist/extraction/svelte-extractor.js +272 -0
  211. package/dist/extraction/svelte-extractor.js.map +1 -0
  212. package/dist/extraction/tree-sitter-helpers.d.ts +28 -0
  213. package/dist/extraction/tree-sitter-helpers.d.ts.map +1 -0
  214. package/dist/extraction/tree-sitter-helpers.js +103 -0
  215. package/dist/extraction/tree-sitter-helpers.js.map +1 -0
  216. package/dist/extraction/tree-sitter-types.d.ts +193 -0
  217. package/dist/extraction/tree-sitter-types.d.ts.map +1 -0
  218. package/dist/extraction/tree-sitter-types.js +10 -0
  219. package/dist/extraction/tree-sitter-types.js.map +1 -0
  220. package/dist/extraction/tree-sitter.d.ts +317 -0
  221. package/dist/extraction/tree-sitter.d.ts.map +1 -0
  222. package/dist/extraction/tree-sitter.js +3092 -0
  223. package/dist/extraction/tree-sitter.js.map +1 -0
  224. package/dist/extraction/vue-extractor.d.ts +51 -0
  225. package/dist/extraction/vue-extractor.d.ts.map +1 -0
  226. package/dist/extraction/vue-extractor.js +251 -0
  227. package/dist/extraction/vue-extractor.js.map +1 -0
  228. package/dist/extraction/wasm/tree-sitter-lua.wasm +0 -0
  229. package/dist/extraction/wasm/tree-sitter-luau.wasm +0 -0
  230. package/dist/extraction/wasm/tree-sitter-pascal.wasm +0 -0
  231. package/dist/extraction/wasm/tree-sitter-scala.wasm +0 -0
  232. package/dist/extraction/wasm-runtime-flags.d.ts +38 -0
  233. package/dist/extraction/wasm-runtime-flags.d.ts.map +1 -0
  234. package/dist/extraction/wasm-runtime-flags.js +106 -0
  235. package/dist/extraction/wasm-runtime-flags.js.map +1 -0
  236. package/dist/fitness/fitness.d.ts +75 -0
  237. package/dist/fitness/fitness.d.ts.map +1 -0
  238. package/dist/fitness/fitness.js +204 -0
  239. package/dist/fitness/fitness.js.map +1 -0
  240. package/dist/graph/index.d.ts +8 -0
  241. package/dist/graph/index.d.ts.map +1 -0
  242. package/dist/graph/index.js +13 -0
  243. package/dist/graph/index.js.map +1 -0
  244. package/dist/graph/maintainability.d.ts +115 -0
  245. package/dist/graph/maintainability.d.ts.map +1 -0
  246. package/dist/graph/maintainability.js +299 -0
  247. package/dist/graph/maintainability.js.map +1 -0
  248. package/dist/graph/queries.d.ts +106 -0
  249. package/dist/graph/queries.d.ts.map +1 -0
  250. package/dist/graph/queries.js +366 -0
  251. package/dist/graph/queries.js.map +1 -0
  252. package/dist/graph/traversal.d.ts +127 -0
  253. package/dist/graph/traversal.d.ts.map +1 -0
  254. package/dist/graph/traversal.js +531 -0
  255. package/dist/graph/traversal.js.map +1 -0
  256. package/dist/health/smoke-check.d.ts +85 -0
  257. package/dist/health/smoke-check.d.ts.map +1 -0
  258. package/dist/health/smoke-check.js +246 -0
  259. package/dist/health/smoke-check.js.map +1 -0
  260. package/dist/index.d.ts +674 -0
  261. package/dist/index.d.ts.map +1 -0
  262. package/dist/index.js +1473 -0
  263. package/dist/index.js.map +1 -0
  264. package/dist/installer/config-writer.d.ts +28 -0
  265. package/dist/installer/config-writer.d.ts.map +1 -0
  266. package/dist/installer/config-writer.js +91 -0
  267. package/dist/installer/config-writer.js.map +1 -0
  268. package/dist/installer/index.d.ts +100 -0
  269. package/dist/installer/index.d.ts.map +1 -0
  270. package/dist/installer/index.js +442 -0
  271. package/dist/installer/index.js.map +1 -0
  272. package/dist/installer/init-offer.d.ts +31 -0
  273. package/dist/installer/init-offer.d.ts.map +1 -0
  274. package/dist/installer/init-offer.js +30 -0
  275. package/dist/installer/init-offer.js.map +1 -0
  276. package/dist/installer/instructions-template.d.ts +36 -0
  277. package/dist/installer/instructions-template.d.ts.map +1 -0
  278. package/dist/installer/instructions-template.js +57 -0
  279. package/dist/installer/instructions-template.js.map +1 -0
  280. package/dist/installer/targets/claude.d.ts +146 -0
  281. package/dist/installer/targets/claude.d.ts.map +1 -0
  282. package/dist/installer/targets/claude.js +864 -0
  283. package/dist/installer/targets/claude.js.map +1 -0
  284. package/dist/installer/targets/registry.d.ts +19 -0
  285. package/dist/installer/targets/registry.d.ts.map +1 -0
  286. package/dist/installer/targets/registry.js +31 -0
  287. package/dist/installer/targets/registry.js.map +1 -0
  288. package/dist/installer/targets/shared.d.ts +76 -0
  289. package/dist/installer/targets/shared.d.ts.map +1 -0
  290. package/dist/installer/targets/shared.js +260 -0
  291. package/dist/installer/targets/shared.js.map +1 -0
  292. package/dist/installer/targets/types.d.ts +95 -0
  293. package/dist/installer/targets/types.d.ts.map +1 -0
  294. package/dist/installer/targets/types.js +12 -0
  295. package/dist/installer/targets/types.js.map +1 -0
  296. package/dist/isolation/worktree.d.ts +65 -0
  297. package/dist/isolation/worktree.d.ts.map +1 -0
  298. package/dist/isolation/worktree.js +231 -0
  299. package/dist/isolation/worktree.js.map +1 -0
  300. package/dist/mcp/daemon-paths.d.ts +46 -0
  301. package/dist/mcp/daemon-paths.d.ts.map +1 -0
  302. package/dist/mcp/daemon-paths.js +125 -0
  303. package/dist/mcp/daemon-paths.js.map +1 -0
  304. package/dist/mcp/daemon.d.ts +161 -0
  305. package/dist/mcp/daemon.d.ts.map +1 -0
  306. package/dist/mcp/daemon.js +403 -0
  307. package/dist/mcp/daemon.js.map +1 -0
  308. package/dist/mcp/designer-tools.d.ts +33 -0
  309. package/dist/mcp/designer-tools.d.ts.map +1 -0
  310. package/dist/mcp/designer-tools.js +313 -0
  311. package/dist/mcp/designer-tools.js.map +1 -0
  312. package/dist/mcp/engine.d.ts +105 -0
  313. package/dist/mcp/engine.d.ts.map +1 -0
  314. package/dist/mcp/engine.js +270 -0
  315. package/dist/mcp/engine.js.map +1 -0
  316. package/dist/mcp/fitness-tool.d.ts +12 -0
  317. package/dist/mcp/fitness-tool.d.ts.map +1 -0
  318. package/dist/mcp/fitness-tool.js +46 -0
  319. package/dist/mcp/fitness-tool.js.map +1 -0
  320. package/dist/mcp/index.d.ts +112 -0
  321. package/dist/mcp/index.d.ts.map +1 -0
  322. package/dist/mcp/index.js +477 -0
  323. package/dist/mcp/index.js.map +1 -0
  324. package/dist/mcp/maintainability-tool.d.ts +13 -0
  325. package/dist/mcp/maintainability-tool.d.ts.map +1 -0
  326. package/dist/mcp/maintainability-tool.js +64 -0
  327. package/dist/mcp/maintainability-tool.js.map +1 -0
  328. package/dist/mcp/proxy.d.ts +81 -0
  329. package/dist/mcp/proxy.d.ts.map +1 -0
  330. package/dist/mcp/proxy.js +510 -0
  331. package/dist/mcp/proxy.js.map +1 -0
  332. package/dist/mcp/server-instructions.d.ts +18 -0
  333. package/dist/mcp/server-instructions.d.ts.map +1 -0
  334. package/dist/mcp/server-instructions.js +79 -0
  335. package/dist/mcp/server-instructions.js.map +1 -0
  336. package/dist/mcp/session.d.ts +77 -0
  337. package/dist/mcp/session.d.ts.map +1 -0
  338. package/dist/mcp/session.js +294 -0
  339. package/dist/mcp/session.js.map +1 -0
  340. package/dist/mcp/spec-tools.d.ts +39 -0
  341. package/dist/mcp/spec-tools.d.ts.map +1 -0
  342. package/dist/mcp/spec-tools.js +534 -0
  343. package/dist/mcp/spec-tools.js.map +1 -0
  344. package/dist/mcp/tools.d.ts +417 -0
  345. package/dist/mcp/tools.d.ts.map +1 -0
  346. package/dist/mcp/tools.js +3179 -0
  347. package/dist/mcp/tools.js.map +1 -0
  348. package/dist/mcp/transport.d.ts +188 -0
  349. package/dist/mcp/transport.d.ts.map +1 -0
  350. package/dist/mcp/transport.js +343 -0
  351. package/dist/mcp/transport.js.map +1 -0
  352. package/dist/mcp/version.d.ts +19 -0
  353. package/dist/mcp/version.d.ts.map +1 -0
  354. package/dist/mcp/version.js +71 -0
  355. package/dist/mcp/version.js.map +1 -0
  356. package/dist/reflect/apply.d.ts +31 -0
  357. package/dist/reflect/apply.d.ts.map +1 -0
  358. package/dist/reflect/apply.js +286 -0
  359. package/dist/reflect/apply.js.map +1 -0
  360. package/dist/reflect/hash.d.ts +20 -0
  361. package/dist/reflect/hash.d.ts.map +1 -0
  362. package/dist/reflect/hash.js +36 -0
  363. package/dist/reflect/hash.js.map +1 -0
  364. package/dist/reflect/index.d.ts +16 -0
  365. package/dist/reflect/index.d.ts.map +1 -0
  366. package/dist/reflect/index.js +43 -0
  367. package/dist/reflect/index.js.map +1 -0
  368. package/dist/reflect/miner.d.ts +21 -0
  369. package/dist/reflect/miner.d.ts.map +1 -0
  370. package/dist/reflect/miner.js +463 -0
  371. package/dist/reflect/miner.js.map +1 -0
  372. package/dist/reflect/store.d.ts +31 -0
  373. package/dist/reflect/store.d.ts.map +1 -0
  374. package/dist/reflect/store.js +101 -0
  375. package/dist/reflect/store.js.map +1 -0
  376. package/dist/reflect/sweep.d.ts +26 -0
  377. package/dist/reflect/sweep.d.ts.map +1 -0
  378. package/dist/reflect/sweep.js +42 -0
  379. package/dist/reflect/sweep.js.map +1 -0
  380. package/dist/reflect/targets.d.ts +52 -0
  381. package/dist/reflect/targets.d.ts.map +1 -0
  382. package/dist/reflect/targets.js +192 -0
  383. package/dist/reflect/targets.js.map +1 -0
  384. package/dist/reflect/types.d.ts +96 -0
  385. package/dist/reflect/types.d.ts.map +1 -0
  386. package/dist/reflect/types.js +13 -0
  387. package/dist/reflect/types.js.map +1 -0
  388. package/dist/resolution/brief-link-resolver.d.ts +114 -0
  389. package/dist/resolution/brief-link-resolver.d.ts.map +1 -0
  390. package/dist/resolution/brief-link-resolver.js +261 -0
  391. package/dist/resolution/brief-link-resolver.js.map +1 -0
  392. package/dist/resolution/callback-synthesizer.d.ts +10 -0
  393. package/dist/resolution/callback-synthesizer.d.ts.map +1 -0
  394. package/dist/resolution/callback-synthesizer.js +1300 -0
  395. package/dist/resolution/callback-synthesizer.js.map +1 -0
  396. package/dist/resolution/domain-gap-seed.d.ts +60 -0
  397. package/dist/resolution/domain-gap-seed.d.ts.map +1 -0
  398. package/dist/resolution/domain-gap-seed.js +87 -0
  399. package/dist/resolution/domain-gap-seed.js.map +1 -0
  400. package/dist/resolution/frameworks/cargo-workspace.d.ts +18 -0
  401. package/dist/resolution/frameworks/cargo-workspace.d.ts.map +1 -0
  402. package/dist/resolution/frameworks/cargo-workspace.js +225 -0
  403. package/dist/resolution/frameworks/cargo-workspace.js.map +1 -0
  404. package/dist/resolution/frameworks/csharp.d.ts +8 -0
  405. package/dist/resolution/frameworks/csharp.d.ts.map +1 -0
  406. package/dist/resolution/frameworks/csharp.js +241 -0
  407. package/dist/resolution/frameworks/csharp.js.map +1 -0
  408. package/dist/resolution/frameworks/drupal.d.ts +51 -0
  409. package/dist/resolution/frameworks/drupal.d.ts.map +1 -0
  410. package/dist/resolution/frameworks/drupal.js +367 -0
  411. package/dist/resolution/frameworks/drupal.js.map +1 -0
  412. package/dist/resolution/frameworks/expo-modules.d.ts +3 -0
  413. package/dist/resolution/frameworks/expo-modules.d.ts.map +1 -0
  414. package/dist/resolution/frameworks/expo-modules.js +143 -0
  415. package/dist/resolution/frameworks/expo-modules.js.map +1 -0
  416. package/dist/resolution/frameworks/express.d.ts +8 -0
  417. package/dist/resolution/frameworks/express.d.ts.map +1 -0
  418. package/dist/resolution/frameworks/express.js +308 -0
  419. package/dist/resolution/frameworks/express.js.map +1 -0
  420. package/dist/resolution/frameworks/fabric.d.ts +3 -0
  421. package/dist/resolution/frameworks/fabric.d.ts.map +1 -0
  422. package/dist/resolution/frameworks/fabric.js +354 -0
  423. package/dist/resolution/frameworks/fabric.js.map +1 -0
  424. package/dist/resolution/frameworks/go.d.ts +8 -0
  425. package/dist/resolution/frameworks/go.d.ts.map +1 -0
  426. package/dist/resolution/frameworks/go.js +161 -0
  427. package/dist/resolution/frameworks/go.js.map +1 -0
  428. package/dist/resolution/frameworks/index.d.ts +48 -0
  429. package/dist/resolution/frameworks/index.d.ts.map +1 -0
  430. package/dist/resolution/frameworks/index.js +161 -0
  431. package/dist/resolution/frameworks/index.js.map +1 -0
  432. package/dist/resolution/frameworks/java.d.ts +8 -0
  433. package/dist/resolution/frameworks/java.d.ts.map +1 -0
  434. package/dist/resolution/frameworks/java.js +504 -0
  435. package/dist/resolution/frameworks/java.js.map +1 -0
  436. package/dist/resolution/frameworks/laravel.d.ts +13 -0
  437. package/dist/resolution/frameworks/laravel.d.ts.map +1 -0
  438. package/dist/resolution/frameworks/laravel.js +257 -0
  439. package/dist/resolution/frameworks/laravel.js.map +1 -0
  440. package/dist/resolution/frameworks/nestjs.d.ts +26 -0
  441. package/dist/resolution/frameworks/nestjs.d.ts.map +1 -0
  442. package/dist/resolution/frameworks/nestjs.js +698 -0
  443. package/dist/resolution/frameworks/nestjs.js.map +1 -0
  444. package/dist/resolution/frameworks/play.d.ts +19 -0
  445. package/dist/resolution/frameworks/play.d.ts.map +1 -0
  446. package/dist/resolution/frameworks/play.js +111 -0
  447. package/dist/resolution/frameworks/play.js.map +1 -0
  448. package/dist/resolution/frameworks/python.d.ts +10 -0
  449. package/dist/resolution/frameworks/python.d.ts.map +1 -0
  450. package/dist/resolution/frameworks/python.js +396 -0
  451. package/dist/resolution/frameworks/python.js.map +1 -0
  452. package/dist/resolution/frameworks/react-native.d.ts +3 -0
  453. package/dist/resolution/frameworks/react-native.d.ts.map +1 -0
  454. package/dist/resolution/frameworks/react-native.js +360 -0
  455. package/dist/resolution/frameworks/react-native.js.map +1 -0
  456. package/dist/resolution/frameworks/react.d.ts +8 -0
  457. package/dist/resolution/frameworks/react.d.ts.map +1 -0
  458. package/dist/resolution/frameworks/react.js +365 -0
  459. package/dist/resolution/frameworks/react.js.map +1 -0
  460. package/dist/resolution/frameworks/ruby.d.ts +8 -0
  461. package/dist/resolution/frameworks/ruby.d.ts.map +1 -0
  462. package/dist/resolution/frameworks/ruby.js +302 -0
  463. package/dist/resolution/frameworks/ruby.js.map +1 -0
  464. package/dist/resolution/frameworks/rust.d.ts +8 -0
  465. package/dist/resolution/frameworks/rust.d.ts.map +1 -0
  466. package/dist/resolution/frameworks/rust.js +304 -0
  467. package/dist/resolution/frameworks/rust.js.map +1 -0
  468. package/dist/resolution/frameworks/svelte.d.ts +9 -0
  469. package/dist/resolution/frameworks/svelte.d.ts.map +1 -0
  470. package/dist/resolution/frameworks/svelte.js +249 -0
  471. package/dist/resolution/frameworks/svelte.js.map +1 -0
  472. package/dist/resolution/frameworks/swift-objc.d.ts +37 -0
  473. package/dist/resolution/frameworks/swift-objc.d.ts.map +1 -0
  474. package/dist/resolution/frameworks/swift-objc.js +252 -0
  475. package/dist/resolution/frameworks/swift-objc.js.map +1 -0
  476. package/dist/resolution/frameworks/swift.d.ts +10 -0
  477. package/dist/resolution/frameworks/swift.d.ts.map +1 -0
  478. package/dist/resolution/frameworks/swift.js +400 -0
  479. package/dist/resolution/frameworks/swift.js.map +1 -0
  480. package/dist/resolution/frameworks/vue.d.ts +9 -0
  481. package/dist/resolution/frameworks/vue.d.ts.map +1 -0
  482. package/dist/resolution/frameworks/vue.js +306 -0
  483. package/dist/resolution/frameworks/vue.js.map +1 -0
  484. package/dist/resolution/go-module.d.ts +26 -0
  485. package/dist/resolution/go-module.d.ts.map +1 -0
  486. package/dist/resolution/go-module.js +78 -0
  487. package/dist/resolution/go-module.js.map +1 -0
  488. package/dist/resolution/import-resolver.d.ts +68 -0
  489. package/dist/resolution/import-resolver.d.ts.map +1 -0
  490. package/dist/resolution/import-resolver.js +1275 -0
  491. package/dist/resolution/import-resolver.js.map +1 -0
  492. package/dist/resolution/index.d.ts +117 -0
  493. package/dist/resolution/index.d.ts.map +1 -0
  494. package/dist/resolution/index.js +895 -0
  495. package/dist/resolution/index.js.map +1 -0
  496. package/dist/resolution/lru-cache.d.ts +24 -0
  497. package/dist/resolution/lru-cache.d.ts.map +1 -0
  498. package/dist/resolution/lru-cache.js +62 -0
  499. package/dist/resolution/lru-cache.js.map +1 -0
  500. package/dist/resolution/name-matcher.d.ts +32 -0
  501. package/dist/resolution/name-matcher.d.ts.map +1 -0
  502. package/dist/resolution/name-matcher.js +596 -0
  503. package/dist/resolution/name-matcher.js.map +1 -0
  504. package/dist/resolution/path-aliases.d.ts +68 -0
  505. package/dist/resolution/path-aliases.d.ts.map +1 -0
  506. package/dist/resolution/path-aliases.js +238 -0
  507. package/dist/resolution/path-aliases.js.map +1 -0
  508. package/dist/resolution/spec-link-resolver.d.ts +148 -0
  509. package/dist/resolution/spec-link-resolver.d.ts.map +1 -0
  510. package/dist/resolution/spec-link-resolver.js +337 -0
  511. package/dist/resolution/spec-link-resolver.js.map +1 -0
  512. package/dist/resolution/strip-comments.d.ts +27 -0
  513. package/dist/resolution/strip-comments.d.ts.map +1 -0
  514. package/dist/resolution/strip-comments.js +441 -0
  515. package/dist/resolution/strip-comments.js.map +1 -0
  516. package/dist/resolution/swift-objc-bridge.d.ts +134 -0
  517. package/dist/resolution/swift-objc-bridge.d.ts.map +1 -0
  518. package/dist/resolution/swift-objc-bridge.js +256 -0
  519. package/dist/resolution/swift-objc-bridge.js.map +1 -0
  520. package/dist/resolution/types.d.ts +216 -0
  521. package/dist/resolution/types.d.ts.map +1 -0
  522. package/dist/resolution/types.js +8 -0
  523. package/dist/resolution/types.js.map +1 -0
  524. package/dist/resolution/workspace-packages.d.ts +48 -0
  525. package/dist/resolution/workspace-packages.d.ts.map +1 -0
  526. package/dist/resolution/workspace-packages.js +208 -0
  527. package/dist/resolution/workspace-packages.js.map +1 -0
  528. package/dist/search/query-parser.d.ts +57 -0
  529. package/dist/search/query-parser.d.ts.map +1 -0
  530. package/dist/search/query-parser.js +177 -0
  531. package/dist/search/query-parser.js.map +1 -0
  532. package/dist/search/query-utils.d.ts +71 -0
  533. package/dist/search/query-utils.d.ts.map +1 -0
  534. package/dist/search/query-utils.js +380 -0
  535. package/dist/search/query-utils.js.map +1 -0
  536. package/dist/server/cli.js +152 -0
  537. package/dist/server/index.js +12 -0
  538. package/dist/server/ingest/impact-backfill.js +69 -0
  539. package/dist/server/ingest/impact-query.js +343 -0
  540. package/dist/server/ingest/index.js +19 -0
  541. package/dist/server/ingest/ingestor.js +541 -0
  542. package/dist/server/ingest/parser.js +104 -0
  543. package/dist/server/ingest/pricing.js +78 -0
  544. package/dist/server/ingest/specship-classify.js +153 -0
  545. package/dist/server/ingest/types.js +9 -0
  546. package/dist/server/ingest/watcher.js +77 -0
  547. package/dist/server/package.json +3 -0
  548. package/dist/server/project-registry.js +101 -0
  549. package/dist/server/routes/claude.js +907 -0
  550. package/dist/server/routes/domain.js +0 -0
  551. package/dist/server/routes/events.js +134 -0
  552. package/dist/server/routes/graph.js +248 -0
  553. package/dist/server/routes/maintainability.js +18 -0
  554. package/dist/server/routes/memory.js +272 -0
  555. package/dist/server/routes/projects.js +197 -0
  556. package/dist/server/routes/reflect.js +93 -0
  557. package/dist/server/routes/spec.js +373 -0
  558. package/dist/server/routes/status.js +112 -0
  559. package/dist/server/routes/workflow.js +253 -0
  560. package/dist/server/server.js +238 -0
  561. package/dist/server/static-handler.js +87 -0
  562. package/dist/statusline/active-run.d.ts +16 -0
  563. package/dist/statusline/active-run.d.ts.map +1 -0
  564. package/dist/statusline/active-run.js +73 -0
  565. package/dist/statusline/active-run.js.map +1 -0
  566. package/dist/statusline/cache.d.ts +21 -0
  567. package/dist/statusline/cache.d.ts.map +1 -0
  568. package/dist/statusline/cache.js +34 -0
  569. package/dist/statusline/cache.js.map +1 -0
  570. package/dist/statusline/index.d.ts +24 -0
  571. package/dist/statusline/index.d.ts.map +1 -0
  572. package/dist/statusline/index.js +128 -0
  573. package/dist/statusline/index.js.map +1 -0
  574. package/dist/statusline/paths.d.ts +27 -0
  575. package/dist/statusline/paths.d.ts.map +1 -0
  576. package/dist/statusline/paths.js +101 -0
  577. package/dist/statusline/paths.js.map +1 -0
  578. package/dist/statusline/render.d.ts +25 -0
  579. package/dist/statusline/render.d.ts.map +1 -0
  580. package/dist/statusline/render.js +72 -0
  581. package/dist/statusline/render.js.map +1 -0
  582. package/dist/statusline/session-marker.d.ts +30 -0
  583. package/dist/statusline/session-marker.d.ts.map +1 -0
  584. package/dist/statusline/session-marker.js +71 -0
  585. package/dist/statusline/session-marker.js.map +1 -0
  586. package/dist/statusline/types.d.ts +67 -0
  587. package/dist/statusline/types.d.ts.map +1 -0
  588. package/dist/statusline/types.js +16 -0
  589. package/dist/statusline/types.js.map +1 -0
  590. package/dist/sync/git-hooks.d.ts +45 -0
  591. package/dist/sync/git-hooks.d.ts.map +1 -0
  592. package/dist/sync/git-hooks.js +225 -0
  593. package/dist/sync/git-hooks.js.map +1 -0
  594. package/dist/sync/index.d.ts +19 -0
  595. package/dist/sync/index.d.ts.map +1 -0
  596. package/dist/sync/index.js +35 -0
  597. package/dist/sync/index.js.map +1 -0
  598. package/dist/sync/watch-policy.d.ts +48 -0
  599. package/dist/sync/watch-policy.d.ts.map +1 -0
  600. package/dist/sync/watch-policy.js +124 -0
  601. package/dist/sync/watch-policy.js.map +1 -0
  602. package/dist/sync/watcher.d.ts +283 -0
  603. package/dist/sync/watcher.d.ts.map +1 -0
  604. package/dist/sync/watcher.js +606 -0
  605. package/dist/sync/watcher.js.map +1 -0
  606. package/dist/sync/worktree.d.ts +54 -0
  607. package/dist/sync/worktree.d.ts.map +1 -0
  608. package/dist/sync/worktree.js +137 -0
  609. package/dist/sync/worktree.js.map +1 -0
  610. package/dist/types.d.ts +625 -0
  611. package/dist/types.d.ts.map +1 -0
  612. package/dist/types.js +118 -0
  613. package/dist/types.js.map +1 -0
  614. package/dist/ui/glyphs.d.ts +42 -0
  615. package/dist/ui/glyphs.d.ts.map +1 -0
  616. package/dist/ui/glyphs.js +78 -0
  617. package/dist/ui/glyphs.js.map +1 -0
  618. package/dist/ui/shimmer-progress.d.ts +11 -0
  619. package/dist/ui/shimmer-progress.d.ts.map +1 -0
  620. package/dist/ui/shimmer-progress.js +90 -0
  621. package/dist/ui/shimmer-progress.js.map +1 -0
  622. package/dist/ui/shimmer-worker.d.ts +2 -0
  623. package/dist/ui/shimmer-worker.d.ts.map +1 -0
  624. package/dist/ui/shimmer-worker.js +118 -0
  625. package/dist/ui/shimmer-worker.js.map +1 -0
  626. package/dist/ui/types.d.ts +17 -0
  627. package/dist/ui/types.d.ts.map +1 -0
  628. package/dist/ui/types.js +3 -0
  629. package/dist/ui/types.js.map +1 -0
  630. package/dist/utils.d.ts +205 -0
  631. package/dist/utils.d.ts.map +1 -0
  632. package/dist/utils.js +549 -0
  633. package/dist/utils.js.map +1 -0
  634. package/dist/web/chunk-2AJCHB7P.js +1 -0
  635. package/dist/web/chunk-2CPLUFCH.js +2 -0
  636. package/dist/web/chunk-2I7L37NS.js +1 -0
  637. package/dist/web/chunk-2NAWAJB5.js +1 -0
  638. package/dist/web/chunk-2OJBIPE4.js +1 -0
  639. package/dist/web/chunk-372AYXK6.js +17 -0
  640. package/dist/web/chunk-3E2WB6D5.js +1 -0
  641. package/dist/web/chunk-3EBFYSCH.js +2 -0
  642. package/dist/web/chunk-3QCQ4BXS.js +1 -0
  643. package/dist/web/chunk-42XVAQ6I.js +1 -0
  644. package/dist/web/chunk-4IMMPEYM.js +1 -0
  645. package/dist/web/chunk-4JYHAP7B.js +1 -0
  646. package/dist/web/chunk-4TJQJPCZ.js +1 -0
  647. package/dist/web/chunk-4WZIHTPC.js +1 -0
  648. package/dist/web/chunk-4YVSYOSD.js +1 -0
  649. package/dist/web/chunk-52PO6IMB.js +2 -0
  650. package/dist/web/chunk-54D6RFSW.js +1 -0
  651. package/dist/web/chunk-5BQIOYKW.js +1 -0
  652. package/dist/web/chunk-5HGWHUJA.js +1 -0
  653. package/dist/web/chunk-5XRUOPZE.js +1 -0
  654. package/dist/web/chunk-5Y244R4G.js +1 -0
  655. package/dist/web/chunk-6O7Z3P2M.js +1 -0
  656. package/dist/web/chunk-6QXULGLG.js +1 -0
  657. package/dist/web/chunk-6RRDPT5Z.js +1 -0
  658. package/dist/web/chunk-6VKB2ZWM.js +1 -0
  659. package/dist/web/chunk-7DMFVTU4.js +1 -0
  660. package/dist/web/chunk-7P5CVBJZ.js +1 -0
  661. package/dist/web/chunk-7SMPKVEP.js +1 -0
  662. package/dist/web/chunk-AHLX543M.js +1 -0
  663. package/dist/web/chunk-AMGJBO7D.js +3 -0
  664. package/dist/web/chunk-AZJVTPLU.js +1 -0
  665. package/dist/web/chunk-B3CWIVBW.js +1 -0
  666. package/dist/web/chunk-BLBRMCN2.js +1 -0
  667. package/dist/web/chunk-BMIAXD2V.js +2 -0
  668. package/dist/web/chunk-BPCJLNBS.js +47 -0
  669. package/dist/web/chunk-BRHEUDLY.js +6 -0
  670. package/dist/web/chunk-BUXWEHIY.js +1 -0
  671. package/dist/web/chunk-CD5IZM7Y.js +1 -0
  672. package/dist/web/chunk-DLQPZWSI.css +1 -0
  673. package/dist/web/chunk-DSGNOCKQ.js +1 -0
  674. package/dist/web/chunk-DT5LJYFX.js +1 -0
  675. package/dist/web/chunk-DYRFLPJA.js +1 -0
  676. package/dist/web/chunk-E3J3CXR5.js +1 -0
  677. package/dist/web/chunk-E73OX2P7.js +1 -0
  678. package/dist/web/chunk-EAXRKDLV.js +1 -0
  679. package/dist/web/chunk-EBKKDHYI.js +1 -0
  680. package/dist/web/chunk-EE7V7Q5P.js +1 -0
  681. package/dist/web/chunk-EKY2FUHU.js +1 -0
  682. package/dist/web/chunk-EP6XOPXH.js +1 -0
  683. package/dist/web/chunk-ESGDLJOJ.js +1 -0
  684. package/dist/web/chunk-ETJG7NCY.js +1 -0
  685. package/dist/web/chunk-EUUEFEDI.js +1 -0
  686. package/dist/web/chunk-EX4ZHR4F.js +1 -0
  687. package/dist/web/chunk-F5UNCSXP.js +1 -0
  688. package/dist/web/chunk-FFGJXUHI.js +1 -0
  689. package/dist/web/chunk-FGNZDHTL.js +11 -0
  690. package/dist/web/chunk-FIJW2UNJ.js +1 -0
  691. package/dist/web/chunk-FMV5PXRC.js +5 -0
  692. package/dist/web/chunk-G7VZT5KB.js +3 -0
  693. package/dist/web/chunk-GCOM4JPR.js +2 -0
  694. package/dist/web/chunk-GEIIDO6C.js +1 -0
  695. package/dist/web/chunk-GRZYXPSO.js +7 -0
  696. package/dist/web/chunk-GWBABPZ5.js +1 -0
  697. package/dist/web/chunk-GYGPS3AN.js +1 -0
  698. package/dist/web/chunk-H4GLRD3Q.js +1 -0
  699. package/dist/web/chunk-H5TWEFYX.js +1 -0
  700. package/dist/web/chunk-H7AF7YS4.js +1 -0
  701. package/dist/web/chunk-HCB2N2KH.js +1 -0
  702. package/dist/web/chunk-HDZDQILN.js +1 -0
  703. package/dist/web/chunk-HMK6UO6N.js +1 -0
  704. package/dist/web/chunk-HVVXPI4D.js +1 -0
  705. package/dist/web/chunk-IHEE5NYJ.js +1 -0
  706. package/dist/web/chunk-IPB746BT.js +1 -0
  707. package/dist/web/chunk-ISNEBICW.js +1 -0
  708. package/dist/web/chunk-J2GZVLHH.js +1 -0
  709. package/dist/web/chunk-JTFXTIPE.js +903 -0
  710. package/dist/web/chunk-KHU5M2AL.js +1 -0
  711. package/dist/web/chunk-KW3DHCFV.js +1 -0
  712. package/dist/web/chunk-LB6JPLX2.js +1 -0
  713. package/dist/web/chunk-LBXLFPVN.js +1 -0
  714. package/dist/web/chunk-LGNSHRCE.js +1 -0
  715. package/dist/web/chunk-LNSVDHCI.js +1 -0
  716. package/dist/web/chunk-LVGIY3SO.js +1 -0
  717. package/dist/web/chunk-LXLHIHEN.js +1 -0
  718. package/dist/web/chunk-MFHO2F2U.js +4 -0
  719. package/dist/web/chunk-N5OSSQFZ.js +1 -0
  720. package/dist/web/chunk-N6SS4G6S.js +1 -0
  721. package/dist/web/chunk-NAJYJNHS.js +1 -0
  722. package/dist/web/chunk-NHD66NOI.js +1 -0
  723. package/dist/web/chunk-NNLJ55MY.js +1 -0
  724. package/dist/web/chunk-NTBJG6SJ.js +1 -0
  725. package/dist/web/chunk-NUDB3Q2Y.js +3 -0
  726. package/dist/web/chunk-OM7JVWQQ.js +1 -0
  727. package/dist/web/chunk-OXEF5E3E.js +1 -0
  728. package/dist/web/chunk-PGGJPDJG.js +1 -0
  729. package/dist/web/chunk-PUYSJNJR.js +1 -0
  730. package/dist/web/chunk-Q2RVFS45.js +1 -0
  731. package/dist/web/chunk-Q7L6LLAK.js +1 -0
  732. package/dist/web/chunk-QCMKJIWY.js +1 -0
  733. package/dist/web/chunk-QEQRY4QQ.js +1 -0
  734. package/dist/web/chunk-QH6CF3M3.js +1 -0
  735. package/dist/web/chunk-QQ5LD7PI.js +1 -0
  736. package/dist/web/chunk-QR6L3KAC.js +1 -0
  737. package/dist/web/chunk-QXJS6F3U.js +1 -0
  738. package/dist/web/chunk-R2DLK4HO.js +1 -0
  739. package/dist/web/chunk-RD6TVPOT.js +1 -0
  740. package/dist/web/chunk-RKY4EJYJ.js +1 -0
  741. package/dist/web/chunk-RONYWVY7.js +1 -0
  742. package/dist/web/chunk-RSZZWGGC.js +1 -0
  743. package/dist/web/chunk-RXKXYF2C.js +1 -0
  744. package/dist/web/chunk-SCNDZRN2.js +1 -0
  745. package/dist/web/chunk-SH6UVHQC.js +1 -0
  746. package/dist/web/chunk-SWKJRNYY.js +1 -0
  747. package/dist/web/chunk-T7AZ65JP.js +1 -0
  748. package/dist/web/chunk-TCZDVOHD.js +1 -0
  749. package/dist/web/chunk-TF5TF6IP.js +1 -0
  750. package/dist/web/chunk-TPTITA3V.js +1 -0
  751. package/dist/web/chunk-TR335633.js +1 -0
  752. package/dist/web/chunk-UR5KDXPX.js +1 -0
  753. package/dist/web/chunk-UR6O2GEH.js +1 -0
  754. package/dist/web/chunk-UTNMGWTP.js +1 -0
  755. package/dist/web/chunk-VECWMHJP.js +1 -0
  756. package/dist/web/chunk-VUACT35R.js +3 -0
  757. package/dist/web/chunk-VZI7H4SZ.js +1 -0
  758. package/dist/web/chunk-W22AVG3N.js +1 -0
  759. package/dist/web/chunk-W6NGHRHX.js +1 -0
  760. package/dist/web/chunk-WB6YHOD4.js +1 -0
  761. package/dist/web/chunk-WBT64AWV.js +1 -0
  762. package/dist/web/chunk-WFXJIXZE.js +4 -0
  763. package/dist/web/chunk-WTGYRH3Z.js +298 -0
  764. package/dist/web/chunk-WXTCVDTP.js +1 -0
  765. package/dist/web/chunk-XCDHWLVH.js +1 -0
  766. package/dist/web/chunk-Y3H6FFUZ.js +1 -0
  767. package/dist/web/chunk-Y4F5ULGJ.js +1 -0
  768. package/dist/web/chunk-YEGKAAEE.js +1 -0
  769. package/dist/web/chunk-YM2KU57F.js +1 -0
  770. package/dist/web/chunk-YRERBP6T.js +1 -0
  771. package/dist/web/chunk-ZLV4VCDG.js +3 -0
  772. package/dist/web/chunk-ZQUJMA5K.js +4 -0
  773. package/dist/web/chunk-ZTVI5KFF.js +1 -0
  774. package/dist/web/favicon-16.png +0 -0
  775. package/dist/web/favicon-180.png +0 -0
  776. package/dist/web/favicon-32.png +0 -0
  777. package/dist/web/favicon-512.png +0 -0
  778. package/dist/web/favicon-small.svg +15 -0
  779. package/dist/web/favicon.ico +0 -0
  780. package/dist/web/favicon.svg +20 -0
  781. package/dist/web/icon-192.png +0 -0
  782. package/dist/web/icon-512.png +0 -0
  783. package/dist/web/index.html +146 -0
  784. package/dist/web/main-ESADRXN2.css +1 -0
  785. package/dist/web/main-SQFUMVQA.js +1 -0
  786. package/dist/web/manifest.webmanifest +15 -0
  787. package/dist/web/media/codicon-LN6W7LCM.ttf +0 -0
  788. package/dist/web/styles-KSOPUVDA.css +1 -0
  789. package/dist/web/sw.js +69 -0
  790. package/dist/workflows/condition-evaluator.d.ts +75 -0
  791. package/dist/workflows/condition-evaluator.d.ts.map +1 -0
  792. package/dist/workflows/condition-evaluator.js +282 -0
  793. package/dist/workflows/condition-evaluator.js.map +1 -0
  794. package/dist/workflows/defaults/claude-design-implement.yaml +336 -0
  795. package/dist/workflows/defaults/index.d.ts +26 -0
  796. package/dist/workflows/defaults/index.d.ts.map +1 -0
  797. package/dist/workflows/defaults/index.js +94 -0
  798. package/dist/workflows/defaults/index.js.map +1 -0
  799. package/dist/workflows/defaults/spec-author.yaml +214 -0
  800. package/dist/workflows/defaults/spec-fix.yaml +110 -0
  801. package/dist/workflows/defaults/spec-implement.yaml +150 -0
  802. package/dist/workflows/defaults/spec-relink.yaml +81 -0
  803. package/dist/workflows/defaults/spec-verify.yaml +51 -0
  804. package/dist/workflows/discovery.d.ts +46 -0
  805. package/dist/workflows/discovery.d.ts.map +1 -0
  806. package/dist/workflows/discovery.js +193 -0
  807. package/dist/workflows/discovery.js.map +1 -0
  808. package/dist/workflows/executor.d.ts +98 -0
  809. package/dist/workflows/executor.d.ts.map +1 -0
  810. package/dist/workflows/executor.js +664 -0
  811. package/dist/workflows/executor.js.map +1 -0
  812. package/dist/workflows/runners/approval.d.ts +18 -0
  813. package/dist/workflows/runners/approval.d.ts.map +1 -0
  814. package/dist/workflows/runners/approval.js +34 -0
  815. package/dist/workflows/runners/approval.js.map +1 -0
  816. package/dist/workflows/runners/bash.d.ts +13 -0
  817. package/dist/workflows/runners/bash.d.ts.map +1 -0
  818. package/dist/workflows/runners/bash.js +143 -0
  819. package/dist/workflows/runners/bash.js.map +1 -0
  820. package/dist/workflows/runners/cancel.d.ts +10 -0
  821. package/dist/workflows/runners/cancel.d.ts.map +1 -0
  822. package/dist/workflows/runners/cancel.js +19 -0
  823. package/dist/workflows/runners/cancel.js.map +1 -0
  824. package/dist/workflows/runners/prompt.d.ts +51 -0
  825. package/dist/workflows/runners/prompt.d.ts.map +1 -0
  826. package/dist/workflows/runners/prompt.js +306 -0
  827. package/dist/workflows/runners/prompt.js.map +1 -0
  828. package/dist/workflows/runners/script.d.ts +17 -0
  829. package/dist/workflows/runners/script.d.ts.map +1 -0
  830. package/dist/workflows/runners/script.js +155 -0
  831. package/dist/workflows/runners/script.js.map +1 -0
  832. package/dist/workflows/runners/types.d.ts +57 -0
  833. package/dist/workflows/runners/types.d.ts.map +1 -0
  834. package/dist/workflows/runners/types.js +13 -0
  835. package/dist/workflows/runners/types.js.map +1 -0
  836. package/dist/workflows/schemas/workflow.d.ts +166 -0
  837. package/dist/workflows/schemas/workflow.d.ts.map +1 -0
  838. package/dist/workflows/schemas/workflow.js +437 -0
  839. package/dist/workflows/schemas/workflow.js.map +1 -0
  840. package/hooks/hooks.json +38 -0
  841. package/package.json +78 -0
  842. package/scripts/add-lang/bench.sh +60 -0
  843. package/scripts/add-lang/check-grammar.mjs +75 -0
  844. package/scripts/add-lang/dump-ast.mjs +103 -0
  845. package/scripts/add-lang/verify-extraction.mjs +70 -0
  846. package/scripts/agent-eval/arms-F.sh +21 -0
  847. package/scripts/agent-eval/arms-matrix.sh +37 -0
  848. package/scripts/agent-eval/audit.sh +68 -0
  849. package/scripts/agent-eval/bench-readme.sh +28 -0
  850. package/scripts/agent-eval/bench-why-repo.sh +22 -0
  851. package/scripts/agent-eval/block-read-hook.sh +19 -0
  852. package/scripts/agent-eval/hook-settings.json +15 -0
  853. package/scripts/agent-eval/itrun.sh +120 -0
  854. package/scripts/agent-eval/parse-arms.mjs +116 -0
  855. package/scripts/agent-eval/parse-bench-readme.mjs +84 -0
  856. package/scripts/agent-eval/parse-run.mjs +45 -0
  857. package/scripts/agent-eval/parse-session.mjs +93 -0
  858. package/scripts/agent-eval/probe-context.mjs +21 -0
  859. package/scripts/agent-eval/probe-explore.mjs +40 -0
  860. package/scripts/agent-eval/probe-node.mjs +20 -0
  861. package/scripts/agent-eval/probe-sweep.mjs +119 -0
  862. package/scripts/agent-eval/probe-trace.mjs +20 -0
  863. package/scripts/agent-eval/run-agent.sh +34 -0
  864. package/scripts/agent-eval/run-all.sh +67 -0
  865. package/scripts/agent-eval/run-arms.sh +56 -0
  866. package/scripts/agent-eval/seq-matrix.mjs +137 -0
  867. package/scripts/build-bundle.sh +118 -0
  868. package/scripts/build-server-bundle.mjs +80 -0
  869. package/scripts/build-web-bundle.mjs +66 -0
  870. package/scripts/extract-release-notes.mjs +130 -0
  871. package/scripts/local-install.sh +41 -0
  872. package/scripts/npm-sdk.js +75 -0
  873. package/scripts/npm-shim.js +246 -0
  874. package/scripts/offline-install.ps1 +148 -0
  875. package/scripts/offline-install.sh +149 -0
  876. package/scripts/pack-npm.sh +119 -0
  877. package/scripts/prepare-release.mjs +270 -0
  878. package/scripts/sync-shim-version.mjs +64 -0
  879. package/selectors.json +41 -0
@@ -0,0 +1 @@
1
+ import{a as W}from"./chunk-OM7JVWQQ.js";import{a as Q}from"./chunk-KHU5M2AL.js";import{a as U}from"./chunk-N5OSSQFZ.js";import{d as B}from"./chunk-DSGNOCKQ.js";import{b as Y,c as G}from"./chunk-B3CWIVBW.js";import{a as H}from"./chunk-W22AVG3N.js";import{a as $}from"./chunk-4JYHAP7B.js";import{Aa as m,Ea as T,Fa as O,I as c,Ia as S,Ka as C,R,Ta as D,Ua as I,Va as s,W as f,Wa as g,X as E,Xa as h,Za as z,bb as u,cb as F,ea as a,eb as j,gb as L,ib as N,ka as P,lb as w,qa as M,ra as v,sa as x,ua as k,va as y,vb as A,wa as b,xa as d,ya as r,za as o,zb as J}from"./chunk-MFHO2F2U.js";import"./chunk-Q7L6LLAK.js";var K=()=>({value:"time",label:"Latest"}),V=()=>({value:"cost",label:"Cost"}),X=()=>({value:"prompts",label:"Prompts"}),Z=(i,e,t)=>[i,e,t],ee=()=>[0,1,2,3,4],te=i=>["/sessions",i],ne=(i,e)=>e.fullId;function ie(i,e){i&1&&(r(0,"span",10),s(1,"\u26A0 refresh failed"),o()),i&2&&d("title",e)}function re(i,e){i&1&&(r(0,"div",20),m(1,"div",21),o())}function oe(i,e){i&1&&y(0,re,2,0,"div",20,k),i&2&&b(u(0,ee))}function se(i,e){i&1&&(r(0,"div",19),s(1," No sessions in this range. Either nothing's been logged yet, or the JSONL ingest watcher hasn't caught up \u2014 click Refresh. "),o())}function ae(i,e){if(i&1&&(r(0,"a",22)(1,"span",23),s(2),o(),r(3,"span",17)(4,"app-pill"),s(5),o()(),r(6,"span",24),s(7),o(),r(8,"span",25),s(9),o(),r(10,"span",25),s(11),L(12,"number"),o(),r(13,"span",26),s(14),o()()),i&2){let t=e.$implicit,n=C(2);d("routerLink",F(15,te,t.fullId)),M("aria-label","Open session "+t.id),a(2),g(t.id),a(3),g(t.project),a(2),z(" ",t.started," \u2013 ",t.ended," \xB7 ",t.model," "),a(2),g(t.prompts),a(),D("color",n.cacheColor(t.cache)),a(),h(" ",N(12,12,t.cache*100,"1.0-0"),"% "),a(3),h(" $",t.cost.toFixed(2)," ")}}function le(i,e){if(i&1&&y(0,ae,15,17,"a",22,ne),i&2){let t=C();b(t.sorted())}}var de=1e4,q=class i{api=c($);projects=c(H);refresh=c(Y);destroyRef=c(R);range=f("all");sort=f("time");ranges=["today","week","month","all"];localRefreshing=f(!1);resource=G(this.api,()=>`/api/claude/sessions?range=${this.range()}&limit=200${this.projects.projectQuery("&")}`);rows=w(()=>(this.resource.state().data?.sessions??[]).map(t=>this.adapt(t)));sorted=w(()=>{let e=this.sort();return[...this.rows()].sort((t,n)=>e==="cost"?n.cost-t.cost:e==="prompts"?n.prompts-t.prompts:n.startedAt-t.startedAt)});constructor(){let e=null,t=()=>{e===null&&(e=setInterval(()=>{typeof document<"u"&&document.visibilityState==="visible"&&this.resource.refetch()},de))},n=()=>{e!==null&&(clearInterval(e),e=null)},l=()=>{typeof document>"u"||document.visibilityState==="visible"&&this.resource.refetch()};t(),typeof document<"u"&&document.addEventListener("visibilitychange",l),this.destroyRef.onDestroy(()=>{n(),typeof document<"u"&&document.removeEventListener("visibilitychange",l)}),E(()=>{!this.resource.state().loading&&this.localRefreshing()&&this.localRefreshing.set(!1)})}async forceRefresh(){this.localRefreshing.set(!0),await this.refresh.triggerGlobalRefresh()}adapt(e){let t=(e.total_input_tokens||0)+(e.total_cache_creation_tokens||0)+(e.total_cache_read_tokens||0);return{id:(e.id||"").slice(0,8),fullId:e.id,project:(e.project_path||"").split("/").filter(Boolean).pop()||"?",startedAt:e.started_at||0,started:this.fmtTime(e.started_at),ended:this.fmtTime(e.ended_at).split(" ").pop()||"",prompts:e.prompt_count||0,cost:e.total_cost_usd||0,cache:t>0?(e.total_cache_read_tokens||0)/t:0,model:e.last_model||"unknown"}}fmtTime(e){if(!e)return"";try{let t=new Date(e),n=new Date;n.setHours(0,0,0,0);let l=864e5,p=n.getTime()-new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime(),_=t.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"});return p===0?"Today "+_:p===l?"Yest "+_:t.toLocaleDateString([],{month:"short",day:"numeric"})+" "+_}catch{return String(e)}}setSort(e){this.sort.set(e)}setRange(e){this.range.set(e)}cacheColor(e){return e>=.7?"var(--success)":e>=.5?"var(--warn)":"var(--error)"}static \u0275fac=function(t){return new(t||i)};static \u0275cmp=P({type:i,selectors:[["app-sessions"]],decls:35,vars:18,consts:[[1,"page"],[2,"padding","16px 18px 12px"],["icon","sessions","title","Sessions",3,"sub"],["actions",""],["type","button","title","Force refresh: sync the index + re-ingest Claude Code transcripts","aria-label","Refresh sessions",1,"btn","btn-secondary","btn-sm","refresh-btn",3,"click","disabled"],["name","refresh",3,"size"],[1,"filter-bar",2,"padding","0 18px 12px"],["name","filter",2,"color","var(--text-muted)",3,"size"],[1,"input",2,"font-size","12px","padding","4px 8px"],[1,"grow"],[2,"color","var(--warn)","font-size","11.5px","cursor","help",3,"title"],[1,"muted",2,"font-size","11.5px"],["size","sm",3,"change","value","options"],[1,"scroll-y",2,"flex","1","padding","0 18px 18px"],[1,"card",2,"overflow","hidden"],[1,"row",2,"padding","8px 14px","font-size","10.5px","color","var(--text-muted)","text-transform","uppercase","letter-spacing","0.05em","font-weight","600","border-bottom","1px solid var(--border-subtle)"],[2,"width","90px"],[2,"width","110px"],[2,"width","70px","text-align","right"],[2,"padding","28px 18px","text-align","center","color","var(--text-secondary)","font-size","12.5px","line-height","1.5"],[1,"row",2,"padding","10px 14px","border-top","1px solid var(--border-subtle)"],[1,"skel",2,"flex","1","height","18px"],[1,"row","session-row",2,"padding","11px 14px","border-top","1px solid var(--border-subtle)","display","flex","align-items","center","gap","0","text-decoration","none","color","inherit","cursor","pointer",3,"routerLink"],[1,"mono",2,"width","90px","font-size","12px"],[1,"mono","muted","grow",2,"font-size","11.5px","overflow","hidden","text-overflow","ellipsis","white-space","nowrap"],[1,"mono","tabular",2,"width","70px","text-align","right","font-size","12px"],[1,"mono","tabular",2,"width","70px","text-align","right","font-size","12.5px","font-weight","600"]],template:function(t,n){if(t&1&&(r(0,"div",0)(1,"div",1)(2,"app-page-head",2),T(3,3),r(4,"button",4),S("click",function(){return n.forceRefresh()}),m(5,"app-icon",5),s(6),o(),O(),o()(),r(7,"div",6),m(8,"app-icon",7),r(9,"select",8)(10,"option"),s(11,"All models"),o()(),m(12,"div",9),v(13,ie,2,1,"span",10),r(14,"span",11),s(15,"sort"),o(),r(16,"app-segmented",12),S("change",function(p){return n.setSort(p)}),o()(),r(17,"div",13)(18,"div",14)(19,"div",15)(20,"span",16),s(21,"Session"),o(),r(22,"span",17),s(23,"Project"),o(),r(24,"span",9),s(25,"Window"),o(),r(26,"span",18),s(27,"Prompts"),o(),r(28,"span",18),s(29,"Cache"),o(),r(30,"span",18),s(31,"Cost"),o()(),v(32,oe,2,1)(33,se,2,0,"div",19)(34,le,2,0),o()()()),t&2){let l;a(2),d("sub",n.resource.state().loading?"loading\u2026":n.sorted().length+" sessions \xB7 across all projects"),a(2),I("spinning",n.localRefreshing()||n.refresh.loading()),d("disabled",n.refresh.loading()),a(),d("size",13),a(),h(" ",n.localRefreshing()||n.refresh.loading()?"Refreshing\u2026":"Refresh"," "),a(2),d("size",13),a(5),x((l=n.refresh.error())?13:-1,l),a(3),d("value",n.sort())("options",j(14,Z,u(11,K),u(12,V),u(13,X))),a(16),x(n.resource.state().loading&&n.sorted().length===0?32:n.sorted().length===0?33:34)}},dependencies:[B,J,Q,U,W,A],styles:["[_nghost-%COMP%]{display:contents}.page[_ngcontent-%COMP%]{flex:1;display:flex;flex-direction:column;min-height:0}.filter-bar[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px}.card[_ngcontent-%COMP%]{background:var(--bg-panel);border:1px solid var(--border-subtle);border-radius:var(--r-lg)}.row[_ngcontent-%COMP%]{display:flex;align-items:center}.session-row[_ngcontent-%COMP%]:hover{background:var(--bg-hover)}.session-row[_ngcontent-%COMP%]:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.skel[_ngcontent-%COMP%]{background:var(--bg-elevated);border-radius:5px;animation:_ngcontent-%COMP%_skeleton 1.4s ease-in-out infinite}@keyframes _ngcontent-%COMP%_skeleton{0%,to{opacity:.5}50%{opacity:.9}}.refresh-btn[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:6px}.refresh-btn.spinning[_ngcontent-%COMP%] app-icon[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_spin .9s linear infinite;color:var(--accent)}.refresh-btn[_ngcontent-%COMP%]:disabled{cursor:progress;opacity:.8}@keyframes _ngcontent-%COMP%_spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}"],changeDetection:0})};export{q as Sessions};
@@ -0,0 +1 @@
1
+ import{a as Q}from"./chunk-G7VZT5KB.js";import{a as q}from"./chunk-RSZZWGGC.js";import{b as G}from"./chunk-AHLX543M.js";import{a as B,c as V}from"./chunk-DSGNOCKQ.js";import{a as L}from"./chunk-W22AVG3N.js";import{a as W}from"./chunk-4JYHAP7B.js";import{Aa as p,Ga as M,I as w,Ia as y,Ka as c,M as h,N as C,O,P as N,R as z,Ta as T,Ua as R,Va as s,W as g,Wa as v,X as A,Xa as E,aa as $,ea as r,ka as F,lb as b,qa as P,ra as u,sa as m,va as k,wa as D,xa as f,ya as d,yb as j,za as o,zb as H}from"./chunk-MFHO2F2U.js";import"./chunk-Q7L6LLAK.js";var K=(i,t)=>t.from+t.to,I=(i,t)=>t.id,X=(i,t)=>t.nodeId;function Y(i,t){if(i&1){let e=M();d(0,"button",23),y("click",function(){h(e);let a=c(2);return C(a.cancel())}),p(1,"app-icon",24),s(2," Cancel "),o()}if(i&2){let e=c(2);f("disabled",e.actionPending()!==null),r(),f("size",12)}}function Z(i,t){if(i&1&&(d(0,"span",16),s(1),o(),d(2,"span",17),s(3),o(),p(4,"app-state-pill",18)(5,"span",19),d(6,"span",20),p(7,"app-icon",21),s(8),o(),u(9,Y,3,2,"button",22)),i&2){let e=t,n=c();r(),v(e.workflowName),r(2),v(e.id.slice(0,8)),r(),f("state",e.status)("pulse",e.status==="running"),r(3),f("size",11),r(),E(" ",n.fmtDuration(e.startedAt,e.completedAt)," "),r(),m(e.status==="running"||e.status==="paused"?9:-1)}}function ee(i,t){i&1&&(d(0,"span",25),s(1,"Loading\u2026"),o(),p(2,"span",19))}function te(i,t){if(i&1&&(d(0,"span",26),s(1),o(),p(2,"span",19)),i&2){let e=c();r(),v(e.error())}}function ne(i,t){if(i&1&&(d(0,"div",4),s(1),o()),i&2){let e=c();r(),E("Action failed: ",e.actionError())}}function ie(i,t){i&1&&(d(0,"div",4),s(1),o()),i&2&&(r(),v(t))}function re(i,t){if(i&1){let e=M();d(0,"div",5)(1,"span",27),p(2,"app-icon",28),o(),d(3,"div",19)(4,"div",29),s(5,"Approval required \u2014 review diff before merge"),o(),d(6,"div",30),s(7," Review the artifacts carefully before approving. "),o()(),d(8,"button",31),y("click",function(){h(e);let a=c();return C(a.activeTab.set("artifacts"))}),s(9," Inspect artifacts "),o(),d(10,"button",23),y("click",function(){h(e);let a=c();return C(a.reject())}),s(11," Reject "),o(),d(12,"button",32),y("click",function(){h(e);let a=c();return C(a.approve())}),p(13,"app-icon",33),s(14," Approve "),o()()}if(i&2){let e=c();r(2),f("size",18),r(8),f("disabled",e.actionPending()!==null),r(2),f("disabled",e.actionPending()!==null),r(),f("size",13)}}function ae(i,t){if(i&1&&(O(),p(0,"path",34)),i&2){let e=c(),n=c(2);P("d",n.edgePath(e,t))("stroke",e.status==="completed"?"var(--success)":"rgba(150,160,180,0.4)")("opacity",e.status==="completed"?"0.7":"0.5")}}function oe(i,t){if(i&1&&u(0,ae,1,3,":svg:path",34),i&2){let e,n=c().$implicit,a=c();m((e=a.nodeMap()[n.to])?0:-1,e)}}function de(i,t){if(i&1&&u(0,oe,1,1),i&2){let e,n=t.$implicit,a=c();m((e=a.nodeMap()[n.from])?0:-1,e)}}function se(i,t){i&1&&p(0,"app-icon",37),i&2&&f("size",11)}function le(i,t){i&1&&p(0,"app-icon",38),i&2&&f("size",11)}function ce(i,t){i&1&&p(0,"app-icon",39),i&2&&f("size",10)}function pe(i,t){if(i&1){let e=M();d(0,"div",35),y("click",function(){let a=h(e).$implicit,l=c();return C(l.selectedNode.set(a.id))}),d(1,"span",36),u(2,se,1,1,"app-icon",37)(3,le,1,1,"app-icon",38)(4,ce,1,1,"app-icon",39),o(),d(5,"div",40)(6,"div",41),s(7),o(),d(8,"div",42),s(9),o()()()}if(i&2){let e=t.$implicit,n=c();T("left",e.x/n.DAG_W*100,"%")("top",e.y,"px")("border-color",n.nodeBorderColor(e))("box-shadow",n.nodeBoxShadow(e)),R("rd-node-running",e.status==="running")("rd-node-selected",n.selectedNode()===e.id)("rd-node-pending",e.status==="pending")("rd-node-skipped",e.status==="skipped"),P("aria-label",e.id),r(),T("background",n.nodeDotBg(e))("border",n.nodeDotBorder(e)),R("rd-dot-spin",e.status==="running"),r(),m(e.status==="completed"?2:e.status==="failed"?3:e.status==="paused"?4:-1),r(5),v(e.label),r(2),v(e.kind)}}function ue(i,t){i&1&&(d(0,"span",44),s(1,"live"),o())}function me(i,t){if(i&1){let e=M();d(0,"button",43),y("click",function(){let a=h(e).$implicit,l=c();return C(l.activeTab.set(a.id))}),s(1),u(2,ue,2,0,"span",44),o()}if(i&2){let e=t.$implicit,n=c();R("rd-tab-active",n.activeTab()===e.id),r(),E(" ",e.label," "),r(),m(e.id==="events"&&n.streamStatus()==="live"?2:-1)}}function fe(i,t){if(i&1&&(d(0,"div",45)(1,"span",47),s(2),o(),d(3,"span",48),s(4),o(),d(5,"span",49),s(6),o(),d(7,"span",50),s(8),o()()),i&2){let e=t.$implicit,n=c(2);P("data-event-type",e.eventType),r(2),v(n.fmtTime(e.createdAt)),r(),T("color",n.evColor(e.eventType)),r(),v(e.eventType),r(2),v(n.stepIdOf(e)),r(2),v(n.eventDetail(e))}}function ge(i,t){i&1&&(d(0,"div",46),p(1,"span",51),s(2," streaming\u2026 "),o())}function ve(i,t){if(i&1&&(d(0,"div",14),k(1,fe,9,7,"div",45,I),u(3,ge,3,0,"div",46),o()),i&2){let e=c();r(),D(e.events()),r(2),m(e.streamStatus()==="live"||e.streamStatus()==="connecting"?3:-1)}}function _e(i,t){i&1&&(d(0,"div",52)(1,"div",53),s(2,"Loading artifacts\u2026"),o()())}function xe(i,t){if(i&1&&(d(0,"div",52)(1,"div",53),s(2),o()()),i&2){let e=c(2);r(2),E("Couldn\u2019t load artifacts: ",e.artifactsError())}}function be(i,t){i&1&&(d(0,"div",52)(1,"div",53),s(2,"No artifacts yet \u2014 nodes write their output here as they complete."),o()())}function ye(i,t){if(i&1){let e=M();d(0,"button",57),y("click",function(){let a=h(e).$implicit,l=c(3);return C(l.selectArtifact(a.nodeId))}),p(1,"app-icon",58),d(2,"span",59)(3,"span",60),s(4),o(),d(5,"span",61),s(6),o()()()}if(i&2){let e,n=t.$implicit,a=c(3);R("active",((e=a.selectedArtifact())==null?null:e.nodeId)===n.nodeId),r(),f("size",13),r(3),v(n.name),r(2),v(n.nodeId)}}function he(i,t){if(i&1&&(d(0,"span",64),s(1),o()),i&2){let e=c();r(),v(e.kind)}}function Ce(i,t){if(i&1&&(d(0,"div",62)(1,"span",63),s(2),o(),u(3,he,2,1,"span",64),p(4,"span",19),d(5,"span",65),s(6),o(),p(7,"app-copy-btn",66),o(),p(8,"div",67)),i&2){let e=t,n=c(3);r(2),v(e.name),r(),m(e.kind?3:-1),r(3),v(n.fmtArtifactBytes(e.length)),r(),f("text",e.body),r(),f("innerHTML",n.artifactBodyHtml(),$)}}function we(i,t){if(i&1&&(d(0,"div",52)(1,"div",54),k(2,ye,7,5,"button",55,X),o(),d(4,"div",56),u(5,Ce,9,5),o()()),i&2){let e,n=c(2);r(2),D(n.artifacts()),r(3),m((e=n.selectedArtifact())?5:-1,e)}}function ke(i,t){if(i&1&&u(0,_e,3,0,"div",52)(1,xe,3,1,"div",52)(2,be,3,0,"div",52)(3,we,6,1,"div",52),i&2){let e=c();m(e.artifactsLoading()&&e.artifacts().length===0?0:e.artifactsError()?1:e.artifacts().length===0?2:3)}}function De(i,t){i&1&&(d(0,"div",15)(1,"div",68),p(2,"app-icon",69),d(3,"div",70),s(4,"Cost isn\u2019t tracked for workflow runs yet"),o(),d(5,"div",71),s(6," Per-node and per-run cost require capturing model token-usage as each node executes \u2014 that instrumentation isn\u2019t wired into the workflow engine. The Claude-analytics pages (Sessions, Costs) track cost for interactive sessions today. "),o()()()),i&2&&(r(2),f("size",18))}var Me={step_started:"var(--info)",step_completed:"var(--success)",tool_called:"var(--node-code)",agent_message:"var(--node-spec)",artifact_created:"var(--node-route)",approval_requested:"var(--warn)",run_started:"var(--info)",run_completed:"var(--success)",run_failed:"var(--error)",run_cancelled:"var(--text-muted)",run_paused:"var(--warn)"},U=class i{api=w(W);projects=w(L);route=w(B);router=w(V);destroyRef=w(z);sanitizer=w(j);constructor(){A(()=>{let t=this.events().filter(e=>e.eventType==="step_completed").length;this.activeTab()==="artifacts"&&this.runId()&&t!==this.artifactsFor()&&this.loadArtifacts(t)})}runId=g("");run=g(null);events=g([]);loading=g(!0);error=g(null);streamStatus=g("connecting");actionPending=g(null);actionError=g(null);closeStream=null;status=b(()=>this.run()?.status??null);isTerminal=b(()=>{let t=this.status();return t==="completed"||t==="failed"||t==="cancelled"});approvalPending=b(()=>[...this.events()].reverse().find(e=>e.eventType==="approval_requested"||e.eventType==="approval_granted"||e.eventType==="approval_rejected")?.eventType==="approval_requested");TABS=[{id:"events",label:"Events"},{id:"artifacts",label:"Artifacts"},{id:"cost",label:"Cost"}];activeTab=g("events");artifacts=g([]);artifactsLoading=g(!1);artifactsError=g(null);artifactsFor=g(-1);selectedArtifactId=g("");selectedArtifact=b(()=>{let t=this.artifacts();return t.length?t.find(e=>e.nodeId===this.selectedArtifactId())??t[0]:null});artifactBodyHtml=b(()=>{let t=this.selectedArtifact();return this.sanitizer.bypassSecurityTrustHtml(Q(t?.body??""))});async loadArtifacts(t){let e=this.runId();if(e){this.artifactsFor.set(t),this.artifactsLoading.set(!0),this.artifactsError.set(null);try{let n=await this.api.get(`/api/workflows/runs/${encodeURIComponent(e)}/artifacts${this.projects.projectQuery()}`);this.artifacts.set(n.artifacts??[]),!this.selectedArtifactId()&&n.artifacts?.length&&this.selectedArtifactId.set(n.artifacts[0].nodeId)}catch(n){this.artifactsError.set(n instanceof Error?n.message:String(n)),this.artifactsFor.set(-1)}finally{this.artifactsLoading.set(!1)}}}selectArtifact(t){this.selectedArtifactId.set(t)}fmtArtifactBytes(t){return t<1024?`${t} B`:t<1024*1024?`${(t/1024).toFixed(1)} kB`:`${(t/(1024*1024)).toFixed(1)} MB`}DAG_W=920;DAG_H=180;dagNodes=b(()=>{let t=this.run(),e=this.stepStatusMap(),n=t?.metadata?.nodes;if(n?.length){let _=this.layoutCols(n.map(x=>x.id));return n.map((x,S)=>{let J=_[S]??S;return{id:x.id,label:x.id,kind:x.kind??"agent",status:e[x.id]??"pending",x:J*160+20,y:72}})}let a=[...new Set(this.events().map(_=>_.data?.stepId??_.stepId??"").filter(Boolean))];if(!a.length)return[];let l=Math.min(160,(this.DAG_W-40)/Math.max(a.length,1));return a.map((_,x)=>({id:_,label:_,kind:this.events().find(S=>(S.data?.stepId??S.stepId)===_)?.stepKind??"step",status:e[_]??"pending",x:x*l+20,y:72}))});dagEdges=b(()=>{let e=this.run()?.metadata?.edges;if(e?.length)return e;let n=this.dagNodes();return n.slice(0,-1).map((a,l)=>({from:a.id,to:n[l+1].id}))});nodeMap=b(()=>{let t={};for(let e of this.dagNodes())t[e.id]=e;return t});selectedNode=g("");stepStatusMap=b(()=>{let t={};for(let e of this.events()){let n=e.data?.stepId??e.stepId??"";if(n)switch(e.eventType){case"step_started":t[n]="running";break;case"step_completed":t[n]="completed";break;case"step_failed":t[n]="failed";break;case"step_skipped":t[n]="skipped";break}}if(this.status()==="paused")for(let e of Object.keys(t))t[e]==="running"&&(t[e]="paused");return t});ngOnInit(){let t=this.route.snapshot.paramMap.get("id")??"";if(!t){this.error.set("No run id"),this.loading.set(!1);return}this.runId.set(t),this.bootstrap(t)}ngOnDestroy(){this.closeStream?.(),this.closeStream=null}async bootstrap(t){try{let e=await this.api.get(`/api/workflows/runs/${encodeURIComponent(t)}${this.projects.projectQuery()}`);this.run.set(e.run),this.events.set(e.events??[]),this.loading.set(!1),this.isTerminal()?this.streamStatus.set("closed"):this.openStream(t)}catch(e){this.error.set(e instanceof Error?e.message:String(e)),this.loading.set(!1)}}openStream(t){this.streamStatus.set("connecting");let e=this.api.openEventStream(`/api/workflows/runs/${encodeURIComponent(t)}/events${this.projects.projectQuery()}`,(n,a)=>{if(n==="done"){this.streamStatus.set("closed"),this.refreshRun();return}let l=a;!l||typeof l!="object"||l.id==null||(this.streamStatus.set("live"),this.appendEvent(l),n.startsWith("run_")&&this.refreshRun())},()=>{this.streamStatus.set("error")});this.closeStream=e,this.destroyRef.onDestroy(()=>e())}appendEvent(t){this.events.update(e=>{if(e.some(a=>a.id===t.id))return e;let n=[...e,t];return n.sort((a,l)=>a.id-l.id),n})}async refreshRun(){try{let t=this.runId();if(!t)return;let e=await this.api.get(`/api/workflows/runs/${encodeURIComponent(t)}${this.projects.projectQuery()}`);this.run.set(e.run)}catch{}}async approve(){await this.action("approve")}async reject(){let t=prompt("Reason for rejecting?")??void 0;await this.action("reject",t?{reason:t}:void 0)}async cancel(){confirm("Cancel this run?")&&await this.action("cancel")}async resume(){await this.action("resume")}async action(t,e){this.actionPending.set(t),this.actionError.set(null);try{await this.api.post(`/api/workflows/runs/${encodeURIComponent(this.runId())}/${t}${this.projects.projectQuery()}`,e??{}),await this.refreshRun(),(t==="resume"||t==="approve")&&!this.isTerminal()&&!this.closeStream&&this.openStream(this.runId())}catch(n){this.actionError.set(n instanceof Error?n.message:String(n))}finally{this.actionPending.set(null)}}fmtTime(t){return t?new Date(t).toLocaleTimeString():"\u2014"}fmtDuration(t,e){if(!t)return"\u2014";let a=(e??Date.now())-t;return a>=6e4?Math.round(a/6e4)+"m "+Math.round(a%6e4/1e3)+"s":a>=1e3?(a/1e3).toFixed(1)+"s":a+"ms"}eventDetail(t){let e=t.data;if(!e)return"";let n=l=>l.length>200?l.slice(0,200)+"\u2026":l;if(typeof e.error=="string")return e.error;if(typeof e.text=="string")return n(e.text);if(typeof e.name=="string"){let l=typeof e.input=="string"?e.input:"";return n(l?`${e.name} ${l}`:e.name)}let a=e.output;if(typeof a=="string")return n(a);if(a!=null)try{return n(JSON.stringify(a))}catch{return""}return""}stepIdOf(t){return t.data?.stepId??t.stepId??""}evColor(t){return Me[t]??"var(--text-secondary)"}back(){this.router.navigate(["/runs"])}edgePath(t,e){let n=t.x+150,a=t.y+18,l=e.x,_=e.y+18,x=(n+l)/2;return`M ${n} ${a} C ${x} ${a}, ${x} ${_}, ${l} ${_}`}nodeBorderColor(t){return this.selectedNode()===t.id?"var(--accent)":t.status==="pending"||t.status==="skipped"?"var(--border-subtle)":{running:"var(--info)",completed:"var(--success)",failed:"var(--error)",paused:"var(--warn)"}[t.status]??"var(--border-subtle)"}nodeBoxShadow(t){return t.status==="running"?"0 0 0 3px var(--info-soft)":this.selectedNode()===t.id?"0 4px 14px rgba(0,0,0,0.4)":"none"}nodeDotBg(t){return t.status==="completed"?"var(--success)":t.status==="failed"?"var(--error)":t.status==="paused"?"var(--warn)":"transparent"}nodeDotBorder(t){return t.status==="pending"||t.status==="running"||t.status==="skipped"?`1.5px solid ${{pending:"var(--text-muted)",running:"var(--info)",skipped:"var(--text-muted)"}[t.status]}`:"none"}layoutCols(t){return t.map((e,n)=>n)}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=F({type:i,selectors:[["app-run-detail"]],decls:27,vars:10,consts:[[1,"col","rd-root"],[1,"row","gap-10","rd-head"],["type","button",1,"btn","btn-ghost","btn-sm",3,"click"],["name","chevronLeft",3,"size"],[1,"rd-banner","rd-banner-error"],[1,"row","gap-12","rd-approval"],[1,"rd-dag"],["width","100%",1,"rd-dag-svg"],["id","rarrow","viewBox","0 0 10 10","refX","8","refY","5","markerWidth","6","markerHeight","6","orient","auto-start-reverse"],["d","M0 0 L10 5 L0 10 z","fill","rgba(160,170,190,0.6)"],["role","button",1,"rd-node",3,"rd-node-running","rd-node-selected","rd-node-pending","rd-node-skipped","left","top","border-color","box-shadow"],[1,"col","rd-panel"],[1,"row","gap-2","rd-tabs"],["type","button",1,"rd-tab",3,"rd-tab-active"],["aria-live","polite",1,"scroll-y","rd-events"],[1,"rd-cost-wrap"],[1,"mono","rd-wf-name"],[1,"mono","muted",2,"font-size","11.5px"],[3,"state","pulse"],[1,"grow"],[1,"mono","muted","row","gap-4",2,"font-size","11.5px"],["name","clock",3,"size"],["type","button",1,"btn","btn-destructive","btn-sm",3,"disabled"],["type","button",1,"btn","btn-destructive","btn-sm",3,"click","disabled"],["name","cancel",3,"size"],[1,"muted",2,"font-size","12px"],[1,"rd-error"],[2,"color","var(--warn)","flex-shrink","0"],["name","pause",3,"size"],[2,"font-weight","600","font-size","13px"],[1,"secondary",2,"font-size","12px","margin-top","1px"],["type","button",1,"btn","btn-secondary","btn-sm",3,"click"],["type","button",1,"btn","btn-primary","btn-sm",3,"click","disabled"],["name","check",3,"size"],["fill","none","stroke-width","1.6","marker-end","url(#rarrow)"],["role","button",1,"rd-node",3,"click"],[1,"rd-node-dot"],["name","check",2,"color","#fff",3,"size"],["name","x",2,"color","#fff",3,"size"],["name","pause",2,"color","#fff",3,"size"],[1,"grow",2,"min-width","0"],[1,"rd-node-label"],[1,"mono","muted","rd-node-type"],["type","button",1,"rd-tab",3,"click"],[1,"pill","rd-live-pill"],[1,"row","gap-10","rd-event-row"],[1,"row","gap-6","muted",2,"padding","6px 0"],[1,"muted","tabular","rd-event-time"],[1,"rd-event-kind"],[1,"muted","rd-event-node"],[1,"secondary","rd-event-text"],[1,"rd-stream-dot"],[1,"rd-artifacts"],[1,"muted","rd-art-empty"],[1,"rd-art-list"],["type","button",1,"rd-art-item",3,"active"],[1,"rd-art-body","scroll-y"],["type","button",1,"rd-art-item",3,"click"],["name","box",2,"color","var(--node-route)","flex-shrink","0",3,"size"],[1,"rd-art-meta"],[1,"mono","rd-art-name"],[1,"muted","rd-art-node"],[1,"row","gap-8","rd-art-bodyhead"],[1,"mono","rd-art-bodyname"],[1,"pill","rd-art-kind"],[1,"mono","muted","rd-art-bytes"],[3,"text"],[1,"md-content","rd-art-md",3,"innerHTML"],[1,"rd-cost-empty"],["name","dollar",2,"color","var(--text-muted)",3,"size"],[1,"rd-cost-empty-title"],[1,"muted","rd-cost-empty-body"]],template:function(e,n){if(e&1&&(d(0,"div",0)(1,"div",1)(2,"button",2),y("click",function(){return n.back()}),p(3,"app-icon",3),s(4," Runs "),o(),u(5,Z,10,7)(6,ee,3,0)(7,te,3,1),o(),u(8,ne,2,1,"div",4),u(9,ie,2,1,"div",4),u(10,re,15,4,"div",5),d(11,"div",6),O(),d(12,"svg",7)(13,"defs")(14,"marker",8),p(15,"path",9),o()(),k(16,de,1,1,null,null,K),o(),k(18,pe,10,26,"div",10,I),o(),N(),d(20,"div",11)(21,"div",12),k(22,me,3,4,"button",13,I),o(),u(24,ve,4,1,"div",14),u(25,ke,4,1),u(26,De,7,1,"div",15),o()()),e&2){let a,l;r(3),f("size",14),r(2),m((a=n.run())?5:n.loading()?6:n.error()?7:-1,a),r(3),m(n.actionError()?8:-1),r(),m((l=(l=n.run())==null?null:l.errorMessage)?9:-1,l),r(),m(n.approvalPending()?10:-1),r(2),P("height",n.DAG_H)("viewBox","0 0 "+n.DAG_W+" "+n.DAG_H),r(4),D(n.dagEdges()),r(2),D(n.dagNodes()),r(4),D(n.TABS),r(2),m(n.activeTab()==="events"?24:-1),r(),m(n.activeTab()==="artifacts"?25:-1),r(),m(n.activeTab()==="cost"?26:-1)}},dependencies:[G,q,H],styles:["[_nghost-%COMP%]{display:contents}.rd-root[_ngcontent-%COMP%]{flex:1;min-height:0}.rd-head[_ngcontent-%COMP%]{padding:12px 16px;border-bottom:1px solid var(--border-subtle);flex-shrink:0}.rd-wf-name[_ngcontent-%COMP%]{font-weight:600;font-size:14px}.rd-error[_ngcontent-%COMP%]{color:var(--error);font-size:12px}.rd-banner[_ngcontent-%COMP%]{padding:10px 16px;font-size:12.5px;flex-shrink:0}.rd-banner-error[_ngcontent-%COMP%]{background:var(--error-soft);color:var(--error);border-bottom:1px solid color-mix(in srgb,var(--error) 30%,transparent)}.rd-approval[_ngcontent-%COMP%]{padding:12px 16px;background:var(--warn-soft);border-bottom:1px solid rgba(229,165,10,.3);flex-shrink:0}.rd-dag[_ngcontent-%COMP%]{position:relative;height:180px;background:var(--bg-canvas-2, var(--bg-canvas));background-image:radial-gradient(circle,var(--dot-grid, rgba(255, 255, 255, .07)) 1px,transparent 1px);background-size:20px 20px;border-bottom:1px solid var(--border-subtle);overflow:hidden;flex-shrink:0}.rd-dag-svg[_ngcontent-%COMP%]{position:absolute;inset:0;pointer-events:none}.rd-node[_ngcontent-%COMP%]{position:absolute;width:150px;height:36px;display:flex;align-items:center;gap:8px;padding:0 11px;border-radius:8px;background:var(--bg-panel);border:1.5px solid var(--border-subtle);cursor:pointer;transition:border-color .12s,box-shadow .12s}.rd-node[_ngcontent-%COMP%]:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.rd-node-running[_ngcontent-%COMP%]{background:var(--info-soft)}.rd-node-pending[_ngcontent-%COMP%]{opacity:.6}.rd-node-skipped[_ngcontent-%COMP%]{border-style:dotted}.rd-node-dot[_ngcontent-%COMP%]{width:18px;height:18px;border-radius:50%;display:grid;place-items:center;flex-shrink:0}.rd-dot-spin[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_rd-spin 1.4s linear infinite;border-top-color:transparent!important}@keyframes _ngcontent-%COMP%_rd-spin{to{transform:rotate(360deg)}}.rd-node-label[_ngcontent-%COMP%]{font-size:12px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rd-node-type[_ngcontent-%COMP%]{font-size:9px}.rd-panel[_ngcontent-%COMP%]{flex:1;min-height:0}.rd-tabs[_ngcontent-%COMP%]{padding:8px 14px 0;border-bottom:1px solid var(--border-subtle);flex-shrink:0}.rd-tab[_ngcontent-%COMP%]{padding:7px 13px;border:none;background:transparent;cursor:pointer;font-size:12.5px;font-weight:500;font-family:var(--font-ui);text-transform:capitalize;color:var(--text-muted);border-bottom:2px solid transparent;margin-bottom:-1px;display:inline-flex;align-items:center;gap:6px;transition:color .1s}.rd-tab[_ngcontent-%COMP%]:hover{color:var(--text-secondary)}.rd-tab-active[_ngcontent-%COMP%]{color:var(--text-primary);border-bottom-color:var(--accent)}.rd-live-pill[_ngcontent-%COMP%]{font-size:9px;background:var(--info-soft);color:var(--info)}.rd-events[_ngcontent-%COMP%]{flex:1;padding:8px 14px;font-family:var(--font-mono);font-size:11.5px;min-height:0}.rd-event-row[_ngcontent-%COMP%]{padding:4px 0;border-bottom:1px solid rgba(255,255,255,.03)}.rd-event-time[_ngcontent-%COMP%]{flex-shrink:0;width:80px;font-size:11px}.rd-event-kind[_ngcontent-%COMP%]{width:132px;flex-shrink:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rd-event-node[_ngcontent-%COMP%]{flex-shrink:0;width:80px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px}.rd-event-text[_ngcontent-%COMP%]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.rd-stream-dot[_ngcontent-%COMP%]{width:6px;height:6px;border-radius:50%;background:var(--info);animation:_ngcontent-%COMP%_rd-pulse 1s infinite}@keyframes _ngcontent-%COMP%_rd-pulse{0%,to{opacity:1}50%{opacity:.3}}.rd-artifacts[_ngcontent-%COMP%]{flex:1;min-height:0;display:flex}.rd-art-empty[_ngcontent-%COMP%]{margin:auto;padding:40px;text-align:center;font-size:12.5px}.rd-art-list[_ngcontent-%COMP%]{width:180px;flex-shrink:0;border-right:1px solid var(--border-subtle);padding:8px;overflow-y:auto;display:flex;flex-direction:column;gap:2px}.rd-art-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;width:100%;padding:7px 9px;border-radius:6px;background:transparent;border:0;cursor:pointer;text-align:left;color:inherit}.rd-art-item[_ngcontent-%COMP%]:hover, .rd-art-item.active[_ngcontent-%COMP%]{background:var(--bg-hover)}.rd-art-item[_ngcontent-%COMP%]:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.rd-art-meta[_ngcontent-%COMP%]{min-width:0;display:flex;flex-direction:column}.rd-art-name[_ngcontent-%COMP%]{font-size:11.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rd-art-node[_ngcontent-%COMP%]{font-size:9.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rd-art-body[_ngcontent-%COMP%]{flex:1;min-width:0;padding:14px 16px}.rd-art-bodyhead[_ngcontent-%COMP%]{align-items:center;margin-bottom:10px}.rd-art-bodyname[_ngcontent-%COMP%]{font-size:12.5px;font-weight:600}.rd-art-kind[_ngcontent-%COMP%]{font-size:10px;color:var(--text-secondary);background:var(--bg-canvas);border:1px solid var(--border-subtle)}.rd-art-bytes[_ngcontent-%COMP%]{font-size:10.5px}.rd-art-md[_ngcontent-%COMP%]{font-size:12.5px;line-height:1.65}.rd-cost-wrap[_ngcontent-%COMP%]{flex:1;min-height:0;display:flex;padding:16px}.rd-cost-empty[_ngcontent-%COMP%]{margin:auto;max-width:420px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:8px}.rd-cost-empty-title[_ngcontent-%COMP%]{font-size:13px;font-weight:600}.rd-cost-empty-body[_ngcontent-%COMP%]{font-size:12px;line-height:1.55}"],changeDetection:0})};export{U as RunDetail};
@@ -0,0 +1 @@
1
+ import"./chunk-Q7L6LLAK.js";var e={comments:{lineComment:"#"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"'",close:"'",notIn:["string"]},{open:'"',close:'"',notIn:["string"]},{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"}]},s={defaultToken:"",tokenPostfix:".rq",brackets:[{token:"delimiter.curly",open:"{",close:"}"},{token:"delimiter.parenthesis",open:"(",close:")"},{token:"delimiter.square",open:"[",close:"]"},{token:"delimiter.angle",open:"<",close:">"}],keywords:["add","as","asc","ask","base","by","clear","construct","copy","create","data","delete","desc","describe","distinct","drop","false","filter","from","graph","group","having","in","insert","limit","load","minus","move","named","not","offset","optional","order","prefix","reduced","select","service","silent","to","true","undef","union","using","values","where","with"],builtinFunctions:["a","abs","avg","bind","bnode","bound","ceil","coalesce","concat","contains","count","datatype","day","encode_for_uri","exists","floor","group_concat","hours","if","iri","isblank","isiri","isliteral","isnumeric","isuri","lang","langmatches","lcase","max","md5","min","minutes","month","now","rand","regex","replace","round","sameterm","sample","seconds","sha1","sha256","sha384","sha512","str","strafter","strbefore","strdt","strends","strlang","strlen","strstarts","struuid","substr","sum","timezone","tz","ucase","uri","uuid","year"],ignoreCase:!0,tokenizer:{root:[[/<[^\s\u00a0>]*>?/,"tag"],{include:"@strings"},[/#.*/,"comment"],[/[{}()\[\]]/,"@brackets"],[/[;,.]/,"delimiter"],[/[_\w\d]+:(\.(?=[\w_\-\\%])|[:\w_-]|\\[-\\_~.!$&'()*+,;=/?#@%]|%[a-f\d][a-f\d])*/,"tag"],[/:(\.(?=[\w_\-\\%])|[:\w_-]|\\[-\\_~.!$&'()*+,;=/?#@%]|%[a-f\d][a-f\d])+/,"tag"],[/[$?]?[_\w\d]+/,{cases:{"@keywords":{token:"keyword"},"@builtinFunctions":{token:"predefined.sql"},"@default":"identifier"}}],[/\^\^/,"operator.sql"],[/\^[*+\-<>=&|^\/!?]*/,"operator.sql"],[/[*+\-<>=&|\/!?]/,"operator.sql"],[/@[a-z\d\-]*/,"metatag.html"],[/\s+/,"white"]],strings:[[/'([^'\\]|\\.)*$/,"string.invalid"],[/'$/,"string.sql","@pop"],[/'/,"string.sql","@stringBody"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/"$/,"string.sql","@pop"],[/"/,"string.sql","@dblStringBody"]],stringBody:[[/[^\\']+/,"string.sql"],[/\\./,"string.escape"],[/'/,"string.sql","@pop"]],dblStringBody:[[/[^\\"]+/,"string.sql"],[/\\./,"string.escape"],[/"/,"string.sql","@pop"]]}};export{e as conf,s as language};
@@ -0,0 +1 @@
1
+ import"./chunk-Q7L6LLAK.js";var e={comments:{lineComment:"--",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}]},_={defaultToken:"",tokenPostfix:".sql",ignoreCase:!0,brackets:[{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"}],keywords:["ALL","ANALYSE","ANALYZE","AND","ANY","ARRAY","AS","ASC","ASYMMETRIC","AUTHORIZATION","BINARY","BOTH","CASE","CAST","CHECK","COLLATE","COLLATION","COLUMN","CONCURRENTLY","CONSTRAINT","CREATE","CROSS","CURRENT_CATALOG","CURRENT_DATE","CURRENT_ROLE","CURRENT_SCHEMA","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_USER","DEFAULT","DEFERRABLE","DESC","DISTINCT","DO","ELSE","END","EXCEPT","FALSE","FETCH","FOR","FOREIGN","FREEZE","FROM","FULL","GRANT","GROUP","HAVING","ILIKE","IN","INITIALLY","INNER","INTERSECT","INTO","IS","ISNULL","JOIN","LATERAL","LEADING","LEFT","LIKE","LIMIT","LOCALTIME","LOCALTIMESTAMP","NATURAL","NOT","NOTNULL","NULL","OFFSET","ON","ONLY","OR","ORDER","OUTER","OVERLAPS","PLACING","PRIMARY","REFERENCES","RETURNING","RIGHT","SELECT","SESSION_USER","SIMILAR","SOME","SYMMETRIC","TABLE","TABLESAMPLE","THEN","TO","TRAILING","TRUE","UNION","UNIQUE","USER","USING","VARIADIC","VERBOSE","WHEN","WHERE","WINDOW","WITH"],operators:["AND","BETWEEN","IN","LIKE","NOT","OR","IS","NULL","INTERSECT","UNION","INNER","JOIN","LEFT","OUTER","RIGHT"],builtinFunctions:["abbrev","abs","acldefault","aclexplode","acos","acosd","acosh","age","any","area","array_agg","array_append","array_cat","array_dims","array_fill","array_length","array_lower","array_ndims","array_position","array_positions","array_prepend","array_remove","array_replace","array_to_json","array_to_string","array_to_tsvector","array_upper","ascii","asin","asind","asinh","atan","atan2","atan2d","atand","atanh","avg","bit","bit_and","bit_count","bit_length","bit_or","bit_xor","bool_and","bool_or","bound_box","box","brin_desummarize_range","brin_summarize_new_values","brin_summarize_range","broadcast","btrim","cardinality","cbrt","ceil","ceiling","center","char_length","character_length","chr","circle","clock_timestamp","coalesce","col_description","concat","concat_ws","convert","convert_from","convert_to","corr","cos","cosd","cosh","cot","cotd","count","covar_pop","covar_samp","cume_dist","current_catalog","current_database","current_date","current_query","current_role","current_schema","current_schemas","current_setting","current_time","current_timestamp","current_user","currval","cursor_to_xml","cursor_to_xmlschema","date_bin","date_part","date_trunc","database_to_xml","database_to_xml_and_xmlschema","database_to_xmlschema","decode","degrees","dense_rank","diagonal","diameter","div","encode","enum_first","enum_last","enum_range","every","exp","extract","factorial","family","first_value","floor","format","format_type","gcd","gen_random_uuid","generate_series","generate_subscripts","get_bit","get_byte","get_current_ts_config","gin_clean_pending_list","greatest","grouping","has_any_column_privilege","has_column_privilege","has_database_privilege","has_foreign_data_wrapper_privilege","has_function_privilege","has_language_privilege","has_schema_privilege","has_sequence_privilege","has_server_privilege","has_table_privilege","has_tablespace_privilege","has_type_privilege","height","host","hostmask","inet_client_addr","inet_client_port","inet_merge","inet_same_family","inet_server_addr","inet_server_port","initcap","isclosed","isempty","isfinite","isopen","json_agg","json_array_elements","json_array_elements_text","json_array_length","json_build_array","json_build_object","json_each","json_each_text","json_extract_path","json_extract_path_text","json_object","json_object_agg","json_object_keys","json_populate_record","json_populate_recordset","json_strip_nulls","json_to_record","json_to_recordset","json_to_tsvector","json_typeof","jsonb_agg","jsonb_array_elements","jsonb_array_elements_text","jsonb_array_length","jsonb_build_array","jsonb_build_object","jsonb_each","jsonb_each_text","jsonb_extract_path","jsonb_extract_path_text","jsonb_insert","jsonb_object","jsonb_object_agg","jsonb_object_keys","jsonb_path_exists","jsonb_path_match","jsonb_path_query","jsonb_path_query_array","jsonb_path_exists_tz","jsonb_path_query_first","jsonb_path_query_array_tz","jsonb_path_query_first_tz","jsonb_path_query_tz","jsonb_path_match_tz","jsonb_populate_record","jsonb_populate_recordset","jsonb_pretty","jsonb_set","jsonb_set_lax","jsonb_strip_nulls","jsonb_to_record","jsonb_to_recordset","jsonb_to_tsvector","jsonb_typeof","justify_days","justify_hours","justify_interval","lag","last_value","lastval","lcm","lead","least","left","length","line","ln","localtime","localtimestamp","log","log10","lower","lower_inc","lower_inf","lpad","lseg","ltrim","macaddr8_set7bit","make_date","make_interval","make_time","make_timestamp","make_timestamptz","makeaclitem","masklen","max","md5","min","min_scale","mod","mode","multirange","netmask","network","nextval","normalize","now","npoints","nth_value","ntile","nullif","num_nonnulls","num_nulls","numnode","obj_description","octet_length","overlay","parse_ident","path","pclose","percent_rank","percentile_cont","percentile_disc","pg_advisory_lock","pg_advisory_lock_shared","pg_advisory_unlock","pg_advisory_unlock_all","pg_advisory_unlock_shared","pg_advisory_xact_lock","pg_advisory_xact_lock_shared","pg_backend_pid","pg_backup_start_time","pg_blocking_pids","pg_cancel_backend","pg_client_encoding","pg_collation_actual_version","pg_collation_is_visible","pg_column_compression","pg_column_size","pg_conf_load_time","pg_control_checkpoint","pg_control_init","pg_control_recovery","pg_control_system","pg_conversion_is_visible","pg_copy_logical_replication_slot","pg_copy_physical_replication_slot","pg_create_logical_replication_slot","pg_create_physical_replication_slot","pg_create_restore_point","pg_current_logfile","pg_current_snapshot","pg_current_wal_flush_lsn","pg_current_wal_insert_lsn","pg_current_wal_lsn","pg_current_xact_id","pg_current_xact_id_if_assigned","pg_current_xlog_flush_location","pg_current_xlog_insert_location","pg_current_xlog_location","pg_database_size","pg_describe_object","pg_drop_replication_slot","pg_event_trigger_ddl_commands","pg_event_trigger_dropped_objects","pg_event_trigger_table_rewrite_oid","pg_event_trigger_table_rewrite_reason","pg_export_snapshot","pg_filenode_relation","pg_function_is_visible","pg_get_catalog_foreign_keys","pg_get_constraintdef","pg_get_expr","pg_get_function_arguments","pg_get_function_identity_arguments","pg_get_function_result","pg_get_functiondef","pg_get_indexdef","pg_get_keywords","pg_get_object_address","pg_get_owned_sequence","pg_get_ruledef","pg_get_serial_sequence","pg_get_statisticsobjdef","pg_get_triggerdef","pg_get_userbyid","pg_get_viewdef","pg_get_wal_replay_pause_state","pg_has_role","pg_identify_object","pg_identify_object_as_address","pg_import_system_collations","pg_index_column_has_property","pg_index_has_property","pg_indexam_has_property","pg_indexes_size","pg_is_in_backup","pg_is_in_recovery","pg_is_other_temp_schema","pg_is_wal_replay_paused","pg_is_xlog_replay_paused","pg_jit_available","pg_last_committed_xact","pg_last_wal_receive_lsn","pg_last_wal_replay_lsn","pg_last_xact_replay_timestamp","pg_last_xlog_receive_location","pg_last_xlog_replay_location","pg_listening_channels","pg_log_backend_memory_contexts","pg_logical_emit_message","pg_logical_slot_get_binary_changes","pg_logical_slot_get_changes","pg_logical_slot_peek_binary_changes","pg_logical_slot_peek_changes","pg_ls_archive_statusdir","pg_ls_dir","pg_ls_logdir","pg_ls_tmpdir","pg_ls_waldir","pg_mcv_list_items","pg_my_temp_schema","pg_notification_queue_usage","pg_opclass_is_visible","pg_operator_is_visible","pg_opfamily_is_visible","pg_options_to_table","pg_partition_ancestors","pg_partition_root","pg_partition_tree","pg_postmaster_start_time","pg_promote","pg_read_binary_file","pg_read_file","pg_relation_filenode","pg_relation_filepath","pg_relation_size","pg_reload_conf","pg_replication_origin_advance","pg_replication_origin_create","pg_replication_origin_drop","pg_replication_origin_oid","pg_replication_origin_progress","pg_replication_origin_session_is_setup","pg_replication_origin_session_progress","pg_replication_origin_session_reset","pg_replication_origin_session_setup","pg_replication_origin_xact_reset","pg_replication_origin_xact_setup","pg_replication_slot_advance","pg_rotate_logfile","pg_safe_snapshot_blocking_pids","pg_size_bytes","pg_size_pretty","pg_sleep","pg_sleep_for","pg_sleep_until","pg_snapshot_xip","pg_snapshot_xmax","pg_snapshot_xmin","pg_start_backup","pg_stat_file","pg_statistics_obj_is_visible","pg_stop_backup","pg_switch_wal","pg_switch_xlog","pg_table_is_visible","pg_table_size","pg_tablespace_databases","pg_tablespace_location","pg_tablespace_size","pg_terminate_backend","pg_total_relation_size","pg_trigger_depth","pg_try_advisory_lock","pg_try_advisory_lock_shared","pg_try_advisory_xact_lock","pg_try_advisory_xact_lock_shared","pg_ts_config_is_visible","pg_ts_dict_is_visible","pg_ts_parser_is_visible","pg_ts_template_is_visible","pg_type_is_visible","pg_typeof","pg_visible_in_snapshot","pg_wal_lsn_diff","pg_wal_replay_pause","pg_wal_replay_resume","pg_walfile_name","pg_walfile_name_offset","pg_xact_commit_timestamp","pg_xact_commit_timestamp_origin","pg_xact_status","pg_xlog_location_diff","pg_xlog_replay_pause","pg_xlog_replay_resume","pg_xlogfile_name","pg_xlogfile_name_offset","phraseto_tsquery","pi","plainto_tsquery","point","polygon","popen","position","power","pqserverversion","query_to_xml","query_to_xml_and_xmlschema","query_to_xmlschema","querytree","quote_ident","quote_literal","quote_nullable","radians","radius","random","range_agg","range_intersect_agg","range_merge","rank","regexp_count","regexp_instr","regexp_like","regexp_match","regexp_matches","regexp_replace","regexp_split_to_array","regexp_split_to_table","regexp_substr","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","repeat","replace","reverse","right","round","row_number","row_security_active","row_to_json","rpad","rtrim","scale","schema_to_xml","schema_to_xml_and_xmlschema","schema_to_xmlschema","session_user","set_bit","set_byte","set_config","set_masklen","setseed","setval","setweight","sha224","sha256","sha384","sha512","shobj_description","sign","sin","sind","sinh","slope","split_part","sprintf","sqrt","starts_with","statement_timestamp","stddev","stddev_pop","stddev_samp","string_agg","string_to_array","string_to_table","strip","strpos","substr","substring","sum","suppress_redundant_updates_trigger","table_to_xml","table_to_xml_and_xmlschema","table_to_xmlschema","tan","tand","tanh","text","timeofday","timezone","to_ascii","to_char","to_date","to_hex","to_json","to_number","to_regclass","to_regcollation","to_regnamespace","to_regoper","to_regoperator","to_regproc","to_regprocedure","to_regrole","to_regtype","to_timestamp","to_tsquery","to_tsvector","transaction_timestamp","translate","trim","trim_array","trim_scale","trunc","ts_debug","ts_delete","ts_filter","ts_headline","ts_lexize","ts_parse","ts_rank","ts_rank_cd","ts_rewrite","ts_stat","ts_token_type","tsquery_phrase","tsvector_to_array","tsvector_update_trigger","tsvector_update_trigger_column","txid_current","txid_current_if_assigned","txid_current_snapshot","txid_snapshot_xip","txid_snapshot_xmax","txid_snapshot_xmin","txid_status","txid_visible_in_snapshot","unistr","unnest","upper","upper_inc","upper_inf","user","var_pop","var_samp","variance","version","websearch_to_tsquery","width","width_bucket","xml_is_well_formed","xml_is_well_formed_content","xml_is_well_formed_document","xmlagg","xmlcomment","xmlconcat","xmlelement","xmlexists","xmlforest","xmlparse","xmlpi","xmlroot","xmlserialize","xpath","xpath_exists"],builtinVariables:[],pseudoColumns:[],tokenizer:{root:[{include:"@comments"},{include:"@whitespace"},{include:"@pseudoColumns"},{include:"@numbers"},{include:"@strings"},{include:"@complexIdentifiers"},{include:"@scopes"},[/[;,.]/,"delimiter"],[/[()]/,"@brackets"],[/[\w@#$]+/,{cases:{"@operators":"operator","@builtinVariables":"predefined","@builtinFunctions":"predefined","@keywords":"keyword","@default":"identifier"}}],[/[<>=!%&+\-*/|~^]/,"operator"]],whitespace:[[/\s+/,"white"]],comments:[[/--+.*/,"comment"],[/\/\*/,{token:"comment.quote",next:"@comment"}]],comment:[[/[^*/]+/,"comment"],[/\*\//,{token:"comment.quote",next:"@pop"}],[/./,"comment"]],pseudoColumns:[[/[$][A-Za-z_][\w@#$]*/,{cases:{"@pseudoColumns":"predefined","@default":"identifier"}}]],numbers:[[/0[xX][0-9a-fA-F]*/,"number"],[/[$][+-]*\d*(\.\d*)?/,"number"],[/((\d+(\.\d*)?)|(\.\d+))([eE][\-+]?\d+)?/,"number"]],strings:[[/'/,{token:"string",next:"@string"}]],string:[[/[^']+/,"string"],[/''/,"string"],[/'/,{token:"string",next:"@pop"}]],complexIdentifiers:[[/"/,{token:"identifier.quote",next:"@quotedIdentifier"}]],quotedIdentifier:[[/[^"]+/,"identifier"],[/""/,"identifier"],[/"/,{token:"identifier.quote",next:"@pop"}]],scopes:[]}};export{e as conf,_ as language};
@@ -0,0 +1 @@
1
+ import"./chunk-Q7L6LLAK.js";var e={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\#\$\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g,comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"'",close:"'",notIn:["string","comment"]},{open:'"',close:'"',notIn:["string","comment"]}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"<",close:">"},{open:"'",close:"'"},{open:'"',close:'"'}],folding:{markers:{start:new RegExp("^\\s*#region\\b"),end:new RegExp("^\\s*#endregion\\b")}}},t={defaultToken:"",tokenPostfix:".cs",brackets:[{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"},{open:"<",close:">",token:"delimiter.angle"}],keywords:["extern","alias","using","bool","decimal","sbyte","byte","short","ushort","int","uint","long","ulong","char","float","double","object","dynamic","string","assembly","is","as","ref","out","this","base","new","typeof","void","checked","unchecked","default","delegate","var","const","if","else","switch","case","while","do","for","foreach","in","break","continue","goto","return","throw","try","catch","finally","lock","yield","from","let","where","join","on","equals","into","orderby","ascending","descending","select","group","by","namespace","partial","class","field","event","method","param","public","protected","internal","private","abstract","sealed","static","struct","readonly","volatile","virtual","override","params","get","set","add","remove","operator","true","false","implicit","explicit","interface","enum","null","async","await","fixed","sizeof","stackalloc","unsafe","nameof","when"],namespaceFollows:["namespace","using"],parenFollows:["if","for","while","switch","foreach","using","catch","when"],operators:["=","??","||","&&","|","^","&","==","!=","<=",">=","<<","+","-","*","/","%","!","~","++","--","+=","-=","*=","/=","%=","&=","|=","^=","<<=",">>=",">>","=>"],symbols:/[=><!~?:&|+\-*\/\^%]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[[/\@?[a-zA-Z_]\w*/,{cases:{"@namespaceFollows":{token:"keyword.$0",next:"@namespace"},"@keywords":{token:"keyword.$0",next:"@qualified"},"@default":{token:"identifier",next:"@qualified"}}}],{include:"@whitespace"},[/}/,{cases:{"$S2==interpolatedstring":{token:"string.quote",next:"@pop"},"$S2==litinterpstring":{token:"string.quote",next:"@pop"},"@default":"@brackets"}}],[/[{}()\[\]]/,"@brackets"],[/[<>](?!@symbols)/,"@brackets"],[/@symbols/,{cases:{"@operators":"delimiter","@default":""}}],[/[0-9_]*\.[0-9_]+([eE][\-+]?\d+)?[fFdD]?/,"number.float"],[/0[xX][0-9a-fA-F_]+/,"number.hex"],[/0[bB][01_]+/,"number.hex"],[/[0-9_]+/,"number"],[/[;,.]/,"delimiter"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/"/,{token:"string.quote",next:"@string"}],[/\$\@"/,{token:"string.quote",next:"@litinterpstring"}],[/\@"/,{token:"string.quote",next:"@litstring"}],[/\$"/,{token:"string.quote",next:"@interpolatedstring"}],[/'[^\\']'/,"string"],[/(')(@escapes)(')/,["string","string.escape","string"]],[/'/,"string.invalid"]],qualified:[[/[a-zA-Z_][\w]*/,{cases:{"@keywords":{token:"keyword.$0"},"@default":"identifier"}}],[/\./,"delimiter"],["","","@pop"]],namespace:[{include:"@whitespace"},[/[A-Z]\w*/,"namespace"],[/[\.=]/,"delimiter"],["","","@pop"]],comment:[[/[^\/*]+/,"comment"],["\\*/","comment","@pop"],[/[\/*]/,"comment"]],string:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,{token:"string.quote",next:"@pop"}]],litstring:[[/[^"]+/,"string"],[/""/,"string.escape"],[/"/,{token:"string.quote",next:"@pop"}]],litinterpstring:[[/[^"{]+/,"string"],[/""/,"string.escape"],[/{{/,"string.escape"],[/}}/,"string.escape"],[/{/,{token:"string.quote",next:"root.litinterpstring"}],[/"/,{token:"string.quote",next:"@pop"}]],interpolatedstring:[[/[^\\"{]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/{{/,"string.escape"],[/}}/,"string.escape"],[/{/,{token:"string.quote",next:"root.interpolatedstring"}],[/"/,{token:"string.quote",next:"@pop"}]],whitespace:[[/^[ \t\v\f]*#((r)|(load))(?=\s)/,"directive.csx"],[/^[ \t\v\f]*#\w.*$/,"namespace.cpp"],[/[ \t\v\f\r\n]+/,""],[/\/\*/,"comment","@comment"],[/\/\/.*$/,"comment"]]}};export{e as conf,t as language};
@@ -0,0 +1 @@
1
+ import{a as F,b as R,c as f}from"./chunk-BPCJLNBS.js";import{a as N}from"./chunk-OM7JVWQQ.js";import{a as D}from"./chunk-KHU5M2AL.js";import{d as z}from"./chunk-DSGNOCKQ.js";import{c as T}from"./chunk-B3CWIVBW.js";import"./chunk-W22AVG3N.js";import{a as k}from"./chunk-4JYHAP7B.js";import{Aa as l,I as h,Ia as S,Ka as m,Ta as g,Ua as b,Va as c,Wa as s,Xa as v,Ya as O,bb as w,cb as E,ea as n,ka as C,lb as d,qa as y,ra as u,sa as x,ua as P,va as M,wa as _,xa as p,ya as o,za as i,zb as I}from"./chunk-MFHO2F2U.js";import"./chunk-Q7L6LLAK.js";var $=()=>[0,1,2,3],j=a=>["/mcp",a],L=(a,t)=>t.key,B=(a,t)=>t.id;function G(a,t){if(a&1&&(o(0,"div",7),l(1,"app-icon",20),o(2,"span"),c(3),i()()),a&2){let e=m();n(),p("size",12),n(2),v(" ",e.errored()?"Couldn\u2019t reach the MCP endpoint \u2014 showing":"No live MCP data yet \u2014 showing"," seed servers (illustrative). ")}}function H(a,t){a&1&&l(0,"div",21)}function U(a,t){a&1&&(o(0,"div",18),M(1,H,1,0,"div",21,P),i()),a&2&&(n(),_(w(0,$)))}function q(a,t){if(a&1&&l(0,"span",43),a&2){let e=m().$implicit,r=m(3);g("background",r.stateMeta(e.state).color)}}function J(a,t){if(a&1&&(o(0,"a",28)(1,"span",29),l(2,"app-icon",24)(3,"span",30),i(),o(4,"span",31)(5,"span",32)(6,"span",33),c(7),i(),o(8,"app-pill",34),l(9,"app-icon",24),c(10),i()(),o(11,"span",35),c(12),i()(),o(13,"span",36)(14,"span",37)(15,"span",38),c(16),i(),o(17,"span",39),c(18),i()(),o(19,"span",40),u(20,q,1,2,"span",41),c(21),i(),l(22,"app-icon",42),i()()),a&2){let e=t.$implicit,r=m(3);p("routerLink",E(32,j,e.id)),y("aria-label",e.name+" \u2014 "+r.stateMeta(e.state).label+", "+r.scopeMeta(e.scope).label),n(),g("background",r.mix(e.color))("color",e.color),n(),p("name",e.icon)("size",18),n(),g("background",r.stateMeta(e.state).color),b("dot-glow",e.state==="running"),n(4),s(e.name),n(),p("color",r.scopeMeta(e.scope).color)("bg",r.mix(r.scopeMeta(e.scope).color)),n(),p("name",r.scopeMeta(e.scope).icon)("size",10),n(),v(" ",r.scopeMeta(e.scope).label," "),n(2),s(e.command),n(3),b("cold",e.tools.length===0),n(),s(e.tools.length),n(2),s(r.toolLabel(e.tools.length)),n(),g("color",r.stateMeta(e.state).color)("background",r.mix(r.stateMeta(e.state).color)),b("pulse",e.state==="running"),n(),x(r.stateMeta(e.state).dot?20:-1),n(),v(" ",r.stateMeta(e.state).label," "),n(),p("size",15)}}function K(a,t){if(a&1&&(o(0,"div",22)(1,"div",23),l(2,"app-icon",24),o(3,"span",12),c(4),i(),o(5,"span",25),c(6),i(),o(7,"span",26),c(8),i()(),o(9,"div",27),M(10,J,23,34,"a",28,B),i()()),a&2){let e=t.$implicit;n(2),g("color",e.meta.color),p("name",e.meta.icon)("size",13),n(2),s(e.meta.label),n(2),s(e.meta.hint),n(2),v("\xB7 ",e.servers.length),n(2),_(e.servers)}}function Q(a,t){if(a&1&&M(0,K,12,7,"div",22,L),a&2){let e=m();_(e.groups())}}var A=class a{api=h(k);resource=T(this.api,()=>"/api/mcp/servers");loading=d(()=>this.resource.state().loading);servers=d(()=>{let t=this.resource.state();if(t.loading)return[];let e=t.data?.servers;return e&&e.length?e:F.servers});isSeed=d(()=>{let t=this.resource.state();return!t.loading&&!t.data?.servers?.length});errored=d(()=>this.resource.state().error!==null);total=d(()=>this.servers().length);running=d(()=>this.servers().filter(t=>t.state==="running").length);totalTools=d(()=>this.servers().reduce((t,e)=>t+e.tools.length,0));needsAttention=d(()=>this.servers().filter(t=>t.state==="error").length);groups=d(()=>{let t=this.servers();return["global","project"].map(e=>({key:e,meta:f[e],servers:t.filter(r=>r.scope===e)})).filter(e=>e.servers.length>0)});scopeMeta(t){return f[t]}stateMeta(t){return R[t]}mix(t,e=14){return`color-mix(in srgb, ${t} ${e}%, transparent)`}toolLabel(t){return t===1?"tool":"tools"}onReload(){this.resource.refetch()}static \u0275fac=function(e){return new(e||a)};static \u0275cmp=C({type:a,selectors:[["app-mcp"]],decls:50,vars:13,consts:[[1,"scroll-y","mcp-list"],["icon","plug","title","MCP servers","sub","Model Context Protocol servers configured at the global and project level"],["actions","",1,"row","gap-6"],["type","button",1,"btn","btn-ghost","btn-sm",3,"click"],["name","refresh",3,"size"],["type","button",1,"btn","btn-secondary","btn-sm"],["name","plus",3,"size"],[1,"mcp-seed-note","row","gap-8"],[1,"mcp-tile-grid"],[1,"card","mcp-tile"],[1,"row","gap-6","tile-eyebrow"],["name","plug",2,"color","var(--accent)",3,"size"],[1,"eyebrow"],[1,"mono","tabular","tile-value"],[1,"mono","muted","tile-sub"],["name","circle",2,"color","var(--success)",3,"size"],["name","wrench",2,"color","var(--node-code)",3,"size"],["name","drift",2,"color","var(--error)",3,"size"],[1,"col","gap-8","mcp-group"],[2,"height","20px"],["name","circle",3,"size"],[1,"skel",2,"height","62px","border-radius","10px"],[1,"mcp-group"],[1,"row","gap-8","group-head"],[3,"name","size"],[1,"mono","muted","group-hint"],[1,"muted","group-count"],[1,"col","gap-8"],[1,"card","server-row",3,"routerLink"],[1,"server-avatar"],[1,"server-dot"],[1,"grow","server-main"],[1,"row","gap-8","server-name-row"],[1,"mono","server-name"],[3,"color","bg"],[1,"mono","muted","server-command"],[1,"row","gap-16","server-meta"],[1,"server-toolcount"],[1,"mono","tabular","count-n"],[1,"muted","count-label"],[1,"pill","state-pill"],[1,"pill-dot",3,"background"],["name","chevronRight",2,"color","var(--text-muted)",3,"size"],[1,"pill-dot"]],template:function(e,r){e&1&&(o(0,"div",0)(1,"app-page-head",1)(2,"div",2)(3,"button",3),S("click",function(){return r.onReload()}),l(4,"app-icon",4),c(5," Reload "),i(),o(6,"button",5),l(7,"app-icon",6),c(8," Add server "),i()()(),u(9,G,4,2,"div",7),o(10,"div",8)(11,"div",9)(12,"div",10),l(13,"app-icon",11),o(14,"span",12),c(15,"Servers"),i()(),o(16,"div",13),c(17),i(),o(18,"div",14),c(19,"global + project"),i()(),o(20,"div",9)(21,"div",10),l(22,"app-icon",15),o(23,"span",12),c(24,"Running"),i()(),o(25,"div",13),c(26),i(),o(27,"div",14),c(28,"connected now"),i()(),o(29,"div",9)(30,"div",10),l(31,"app-icon",16),o(32,"span",12),c(33,"Tools"),i()(),o(34,"div",13),c(35),i(),o(36,"div",14),c(37,"exposed to agents"),i()(),o(38,"div",9)(39,"div",10),l(40,"app-icon",17),o(41,"span",12),c(42,"Needs attention"),i()(),o(43,"div",13),c(44),i(),o(45,"div",14),c(46,"auth / connection"),i()()(),u(47,U,3,1,"div",18)(48,Q,2,0),l(49,"div",19),i()),e&2&&(n(4),p("size",13),n(3),p("size",13),n(2),x(r.isSeed()?9:-1),n(4),p("size",12),n(4),s(r.total()),n(5),p("size",12),n(4),O("",r.running()," / ",r.total()),n(5),p("size",12),n(4),s(r.totalTools()),n(5),p("size",12),n(4),s(r.needsAttention()),n(3),x(r.loading()?47:48))},dependencies:[z,D,N,I],styles:['@charset "UTF-8";[_nghost-%COMP%]{display:flex;flex-direction:column;min-height:0;flex:1}.mcp-list[_ngcontent-%COMP%]{flex:1;min-height:0;padding:18px}.mcp-seed-note[_ngcontent-%COMP%]{margin:-6px 0 16px;padding:8px 11px;border-radius:8px;font-size:11.5px;color:var(--text-secondary);background:var(--bg-panel-2);border:1px solid var(--border-subtle)}.mcp-seed-note[_ngcontent-%COMP%] app-icon[_ngcontent-%COMP%]{color:var(--text-muted)}.mcp-tile-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-bottom:18px}.mcp-tile[_ngcontent-%COMP%]{padding:11px 13px;display:flex;flex-direction:column;gap:3px}.mcp-tile[_ngcontent-%COMP%] .tile-eyebrow[_ngcontent-%COMP%]{color:var(--text-muted)}.mcp-tile[_ngcontent-%COMP%] .eyebrow[_ngcontent-%COMP%]{letter-spacing:.03em}.mcp-tile[_ngcontent-%COMP%] .tile-value[_ngcontent-%COMP%]{font-size:19px;font-weight:650;letter-spacing:-.01em}.mcp-tile[_ngcontent-%COMP%] .tile-sub[_ngcontent-%COMP%]{font-size:10px}.mcp-group[_ngcontent-%COMP%]{margin-bottom:18px}.group-head[_ngcontent-%COMP%]{margin-bottom:9px}.group-head[_ngcontent-%COMP%] .group-hint[_ngcontent-%COMP%], .group-head[_ngcontent-%COMP%] .group-count[_ngcontent-%COMP%]{font-size:11px}.server-row[_ngcontent-%COMP%]{padding:12px 14px;display:flex;align-items:center;gap:12px;cursor:pointer;text-decoration:none;color:inherit;transition:background .1s,border-color .1s}.server-row[_ngcontent-%COMP%]:hover{background:var(--bg-panel-2);border-color:var(--border-strong)}.server-row[_ngcontent-%COMP%]:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.server-avatar[_ngcontent-%COMP%]{position:relative;width:36px;height:36px;border-radius:9px;display:grid;place-items:center;flex-shrink:0}.server-dot[_ngcontent-%COMP%]{position:absolute;right:-2px;bottom:-2px;width:11px;height:11px;border-radius:50%;border:2px solid var(--bg-panel)}.server-dot.dot-glow[_ngcontent-%COMP%]{box-shadow:0 0 6px var(--success)}.server-main[_ngcontent-%COMP%]{min-width:0;display:flex;flex-direction:column}.server-name-row[_ngcontent-%COMP%]{display:flex;align-items:center}.server-name[_ngcontent-%COMP%]{font-size:13.5px;font-weight:600}.server-command[_ngcontent-%COMP%]{font-size:11px;margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.server-meta[_ngcontent-%COMP%]{flex-shrink:0}.server-toolcount[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:flex-end;width:56px}.server-toolcount[_ngcontent-%COMP%] .count-n[_ngcontent-%COMP%]{font-size:14px;font-weight:600}.server-toolcount[_ngcontent-%COMP%] .count-n.cold[_ngcontent-%COMP%]{color:var(--text-muted)}.server-toolcount[_ngcontent-%COMP%] .count-label[_ngcontent-%COMP%]{font-size:10px}.state-pill[_ngcontent-%COMP%]{width:92px;justify-content:center}.state-pill.pulse[_ngcontent-%COMP%] .pill-dot[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_mcpPulse 1.6s ease-out infinite}@keyframes _ngcontent-%COMP%_mcpPulse{0%{box-shadow:0 0 color-mix(in srgb,var(--success) 60%,transparent)}70%{box-shadow:0 0 0 5px transparent}to{box-shadow:0 0 0 0 transparent}}'],changeDetection:0})};export{A as Mcp};
@@ -0,0 +1 @@
1
+ import"./chunk-Q7L6LLAK.js";var x={comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"],["<",">"]],autoClosingPairs:[{open:'"',close:'"',notIn:["string","comment"]},{open:"{",close:"}",notIn:["string","comment"]},{open:"[",close:"]",notIn:["string","comment"]},{open:"(",close:")",notIn:["string","comment"]}]},e={defaultToken:"",tokenPostfix:".sol",brackets:[{token:"delimiter.curly",open:"{",close:"}"},{token:"delimiter.parenthesis",open:"(",close:")"},{token:"delimiter.square",open:"[",close:"]"},{token:"delimiter.angle",open:"<",close:">"}],keywords:["pragma","solidity","contract","library","using","struct","function","modifier","constructor","address","string","bool","Int","Uint","Byte","Fixed","Ufixed","int","int8","int16","int24","int32","int40","int48","int56","int64","int72","int80","int88","int96","int104","int112","int120","int128","int136","int144","int152","int160","int168","int176","int184","int192","int200","int208","int216","int224","int232","int240","int248","int256","uint","uint8","uint16","uint24","uint32","uint40","uint48","uint56","uint64","uint72","uint80","uint88","uint96","uint104","uint112","uint120","uint128","uint136","uint144","uint152","uint160","uint168","uint176","uint184","uint192","uint200","uint208","uint216","uint224","uint232","uint240","uint248","uint256","byte","bytes","bytes1","bytes2","bytes3","bytes4","bytes5","bytes6","bytes7","bytes8","bytes9","bytes10","bytes11","bytes12","bytes13","bytes14","bytes15","bytes16","bytes17","bytes18","bytes19","bytes20","bytes21","bytes22","bytes23","bytes24","bytes25","bytes26","bytes27","bytes28","bytes29","bytes30","bytes31","bytes32","fixed","fixed0x8","fixed0x16","fixed0x24","fixed0x32","fixed0x40","fixed0x48","fixed0x56","fixed0x64","fixed0x72","fixed0x80","fixed0x88","fixed0x96","fixed0x104","fixed0x112","fixed0x120","fixed0x128","fixed0x136","fixed0x144","fixed0x152","fixed0x160","fixed0x168","fixed0x176","fixed0x184","fixed0x192","fixed0x200","fixed0x208","fixed0x216","fixed0x224","fixed0x232","fixed0x240","fixed0x248","fixed0x256","fixed8x8","fixed8x16","fixed8x24","fixed8x32","fixed8x40","fixed8x48","fixed8x56","fixed8x64","fixed8x72","fixed8x80","fixed8x88","fixed8x96","fixed8x104","fixed8x112","fixed8x120","fixed8x128","fixed8x136","fixed8x144","fixed8x152","fixed8x160","fixed8x168","fixed8x176","fixed8x184","fixed8x192","fixed8x200","fixed8x208","fixed8x216","fixed8x224","fixed8x232","fixed8x240","fixed8x248","fixed16x8","fixed16x16","fixed16x24","fixed16x32","fixed16x40","fixed16x48","fixed16x56","fixed16x64","fixed16x72","fixed16x80","fixed16x88","fixed16x96","fixed16x104","fixed16x112","fixed16x120","fixed16x128","fixed16x136","fixed16x144","fixed16x152","fixed16x160","fixed16x168","fixed16x176","fixed16x184","fixed16x192","fixed16x200","fixed16x208","fixed16x216","fixed16x224","fixed16x232","fixed16x240","fixed24x8","fixed24x16","fixed24x24","fixed24x32","fixed24x40","fixed24x48","fixed24x56","fixed24x64","fixed24x72","fixed24x80","fixed24x88","fixed24x96","fixed24x104","fixed24x112","fixed24x120","fixed24x128","fixed24x136","fixed24x144","fixed24x152","fixed24x160","fixed24x168","fixed24x176","fixed24x184","fixed24x192","fixed24x200","fixed24x208","fixed24x216","fixed24x224","fixed24x232","fixed32x8","fixed32x16","fixed32x24","fixed32x32","fixed32x40","fixed32x48","fixed32x56","fixed32x64","fixed32x72","fixed32x80","fixed32x88","fixed32x96","fixed32x104","fixed32x112","fixed32x120","fixed32x128","fixed32x136","fixed32x144","fixed32x152","fixed32x160","fixed32x168","fixed32x176","fixed32x184","fixed32x192","fixed32x200","fixed32x208","fixed32x216","fixed32x224","fixed40x8","fixed40x16","fixed40x24","fixed40x32","fixed40x40","fixed40x48","fixed40x56","fixed40x64","fixed40x72","fixed40x80","fixed40x88","fixed40x96","fixed40x104","fixed40x112","fixed40x120","fixed40x128","fixed40x136","fixed40x144","fixed40x152","fixed40x160","fixed40x168","fixed40x176","fixed40x184","fixed40x192","fixed40x200","fixed40x208","fixed40x216","fixed48x8","fixed48x16","fixed48x24","fixed48x32","fixed48x40","fixed48x48","fixed48x56","fixed48x64","fixed48x72","fixed48x80","fixed48x88","fixed48x96","fixed48x104","fixed48x112","fixed48x120","fixed48x128","fixed48x136","fixed48x144","fixed48x152","fixed48x160","fixed48x168","fixed48x176","fixed48x184","fixed48x192","fixed48x200","fixed48x208","fixed56x8","fixed56x16","fixed56x24","fixed56x32","fixed56x40","fixed56x48","fixed56x56","fixed56x64","fixed56x72","fixed56x80","fixed56x88","fixed56x96","fixed56x104","fixed56x112","fixed56x120","fixed56x128","fixed56x136","fixed56x144","fixed56x152","fixed56x160","fixed56x168","fixed56x176","fixed56x184","fixed56x192","fixed56x200","fixed64x8","fixed64x16","fixed64x24","fixed64x32","fixed64x40","fixed64x48","fixed64x56","fixed64x64","fixed64x72","fixed64x80","fixed64x88","fixed64x96","fixed64x104","fixed64x112","fixed64x120","fixed64x128","fixed64x136","fixed64x144","fixed64x152","fixed64x160","fixed64x168","fixed64x176","fixed64x184","fixed64x192","fixed72x8","fixed72x16","fixed72x24","fixed72x32","fixed72x40","fixed72x48","fixed72x56","fixed72x64","fixed72x72","fixed72x80","fixed72x88","fixed72x96","fixed72x104","fixed72x112","fixed72x120","fixed72x128","fixed72x136","fixed72x144","fixed72x152","fixed72x160","fixed72x168","fixed72x176","fixed72x184","fixed80x8","fixed80x16","fixed80x24","fixed80x32","fixed80x40","fixed80x48","fixed80x56","fixed80x64","fixed80x72","fixed80x80","fixed80x88","fixed80x96","fixed80x104","fixed80x112","fixed80x120","fixed80x128","fixed80x136","fixed80x144","fixed80x152","fixed80x160","fixed80x168","fixed80x176","fixed88x8","fixed88x16","fixed88x24","fixed88x32","fixed88x40","fixed88x48","fixed88x56","fixed88x64","fixed88x72","fixed88x80","fixed88x88","fixed88x96","fixed88x104","fixed88x112","fixed88x120","fixed88x128","fixed88x136","fixed88x144","fixed88x152","fixed88x160","fixed88x168","fixed96x8","fixed96x16","fixed96x24","fixed96x32","fixed96x40","fixed96x48","fixed96x56","fixed96x64","fixed96x72","fixed96x80","fixed96x88","fixed96x96","fixed96x104","fixed96x112","fixed96x120","fixed96x128","fixed96x136","fixed96x144","fixed96x152","fixed96x160","fixed104x8","fixed104x16","fixed104x24","fixed104x32","fixed104x40","fixed104x48","fixed104x56","fixed104x64","fixed104x72","fixed104x80","fixed104x88","fixed104x96","fixed104x104","fixed104x112","fixed104x120","fixed104x128","fixed104x136","fixed104x144","fixed104x152","fixed112x8","fixed112x16","fixed112x24","fixed112x32","fixed112x40","fixed112x48","fixed112x56","fixed112x64","fixed112x72","fixed112x80","fixed112x88","fixed112x96","fixed112x104","fixed112x112","fixed112x120","fixed112x128","fixed112x136","fixed112x144","fixed120x8","fixed120x16","fixed120x24","fixed120x32","fixed120x40","fixed120x48","fixed120x56","fixed120x64","fixed120x72","fixed120x80","fixed120x88","fixed120x96","fixed120x104","fixed120x112","fixed120x120","fixed120x128","fixed120x136","fixed128x8","fixed128x16","fixed128x24","fixed128x32","fixed128x40","fixed128x48","fixed128x56","fixed128x64","fixed128x72","fixed128x80","fixed128x88","fixed128x96","fixed128x104","fixed128x112","fixed128x120","fixed128x128","fixed136x8","fixed136x16","fixed136x24","fixed136x32","fixed136x40","fixed136x48","fixed136x56","fixed136x64","fixed136x72","fixed136x80","fixed136x88","fixed136x96","fixed136x104","fixed136x112","fixed136x120","fixed144x8","fixed144x16","fixed144x24","fixed144x32","fixed144x40","fixed144x48","fixed144x56","fixed144x64","fixed144x72","fixed144x80","fixed144x88","fixed144x96","fixed144x104","fixed144x112","fixed152x8","fixed152x16","fixed152x24","fixed152x32","fixed152x40","fixed152x48","fixed152x56","fixed152x64","fixed152x72","fixed152x80","fixed152x88","fixed152x96","fixed152x104","fixed160x8","fixed160x16","fixed160x24","fixed160x32","fixed160x40","fixed160x48","fixed160x56","fixed160x64","fixed160x72","fixed160x80","fixed160x88","fixed160x96","fixed168x8","fixed168x16","fixed168x24","fixed168x32","fixed168x40","fixed168x48","fixed168x56","fixed168x64","fixed168x72","fixed168x80","fixed168x88","fixed176x8","fixed176x16","fixed176x24","fixed176x32","fixed176x40","fixed176x48","fixed176x56","fixed176x64","fixed176x72","fixed176x80","fixed184x8","fixed184x16","fixed184x24","fixed184x32","fixed184x40","fixed184x48","fixed184x56","fixed184x64","fixed184x72","fixed192x8","fixed192x16","fixed192x24","fixed192x32","fixed192x40","fixed192x48","fixed192x56","fixed192x64","fixed200x8","fixed200x16","fixed200x24","fixed200x32","fixed200x40","fixed200x48","fixed200x56","fixed208x8","fixed208x16","fixed208x24","fixed208x32","fixed208x40","fixed208x48","fixed216x8","fixed216x16","fixed216x24","fixed216x32","fixed216x40","fixed224x8","fixed224x16","fixed224x24","fixed224x32","fixed232x8","fixed232x16","fixed232x24","fixed240x8","fixed240x16","fixed248x8","ufixed","ufixed0x8","ufixed0x16","ufixed0x24","ufixed0x32","ufixed0x40","ufixed0x48","ufixed0x56","ufixed0x64","ufixed0x72","ufixed0x80","ufixed0x88","ufixed0x96","ufixed0x104","ufixed0x112","ufixed0x120","ufixed0x128","ufixed0x136","ufixed0x144","ufixed0x152","ufixed0x160","ufixed0x168","ufixed0x176","ufixed0x184","ufixed0x192","ufixed0x200","ufixed0x208","ufixed0x216","ufixed0x224","ufixed0x232","ufixed0x240","ufixed0x248","ufixed0x256","ufixed8x8","ufixed8x16","ufixed8x24","ufixed8x32","ufixed8x40","ufixed8x48","ufixed8x56","ufixed8x64","ufixed8x72","ufixed8x80","ufixed8x88","ufixed8x96","ufixed8x104","ufixed8x112","ufixed8x120","ufixed8x128","ufixed8x136","ufixed8x144","ufixed8x152","ufixed8x160","ufixed8x168","ufixed8x176","ufixed8x184","ufixed8x192","ufixed8x200","ufixed8x208","ufixed8x216","ufixed8x224","ufixed8x232","ufixed8x240","ufixed8x248","ufixed16x8","ufixed16x16","ufixed16x24","ufixed16x32","ufixed16x40","ufixed16x48","ufixed16x56","ufixed16x64","ufixed16x72","ufixed16x80","ufixed16x88","ufixed16x96","ufixed16x104","ufixed16x112","ufixed16x120","ufixed16x128","ufixed16x136","ufixed16x144","ufixed16x152","ufixed16x160","ufixed16x168","ufixed16x176","ufixed16x184","ufixed16x192","ufixed16x200","ufixed16x208","ufixed16x216","ufixed16x224","ufixed16x232","ufixed16x240","ufixed24x8","ufixed24x16","ufixed24x24","ufixed24x32","ufixed24x40","ufixed24x48","ufixed24x56","ufixed24x64","ufixed24x72","ufixed24x80","ufixed24x88","ufixed24x96","ufixed24x104","ufixed24x112","ufixed24x120","ufixed24x128","ufixed24x136","ufixed24x144","ufixed24x152","ufixed24x160","ufixed24x168","ufixed24x176","ufixed24x184","ufixed24x192","ufixed24x200","ufixed24x208","ufixed24x216","ufixed24x224","ufixed24x232","ufixed32x8","ufixed32x16","ufixed32x24","ufixed32x32","ufixed32x40","ufixed32x48","ufixed32x56","ufixed32x64","ufixed32x72","ufixed32x80","ufixed32x88","ufixed32x96","ufixed32x104","ufixed32x112","ufixed32x120","ufixed32x128","ufixed32x136","ufixed32x144","ufixed32x152","ufixed32x160","ufixed32x168","ufixed32x176","ufixed32x184","ufixed32x192","ufixed32x200","ufixed32x208","ufixed32x216","ufixed32x224","ufixed40x8","ufixed40x16","ufixed40x24","ufixed40x32","ufixed40x40","ufixed40x48","ufixed40x56","ufixed40x64","ufixed40x72","ufixed40x80","ufixed40x88","ufixed40x96","ufixed40x104","ufixed40x112","ufixed40x120","ufixed40x128","ufixed40x136","ufixed40x144","ufixed40x152","ufixed40x160","ufixed40x168","ufixed40x176","ufixed40x184","ufixed40x192","ufixed40x200","ufixed40x208","ufixed40x216","ufixed48x8","ufixed48x16","ufixed48x24","ufixed48x32","ufixed48x40","ufixed48x48","ufixed48x56","ufixed48x64","ufixed48x72","ufixed48x80","ufixed48x88","ufixed48x96","ufixed48x104","ufixed48x112","ufixed48x120","ufixed48x128","ufixed48x136","ufixed48x144","ufixed48x152","ufixed48x160","ufixed48x168","ufixed48x176","ufixed48x184","ufixed48x192","ufixed48x200","ufixed48x208","ufixed56x8","ufixed56x16","ufixed56x24","ufixed56x32","ufixed56x40","ufixed56x48","ufixed56x56","ufixed56x64","ufixed56x72","ufixed56x80","ufixed56x88","ufixed56x96","ufixed56x104","ufixed56x112","ufixed56x120","ufixed56x128","ufixed56x136","ufixed56x144","ufixed56x152","ufixed56x160","ufixed56x168","ufixed56x176","ufixed56x184","ufixed56x192","ufixed56x200","ufixed64x8","ufixed64x16","ufixed64x24","ufixed64x32","ufixed64x40","ufixed64x48","ufixed64x56","ufixed64x64","ufixed64x72","ufixed64x80","ufixed64x88","ufixed64x96","ufixed64x104","ufixed64x112","ufixed64x120","ufixed64x128","ufixed64x136","ufixed64x144","ufixed64x152","ufixed64x160","ufixed64x168","ufixed64x176","ufixed64x184","ufixed64x192","ufixed72x8","ufixed72x16","ufixed72x24","ufixed72x32","ufixed72x40","ufixed72x48","ufixed72x56","ufixed72x64","ufixed72x72","ufixed72x80","ufixed72x88","ufixed72x96","ufixed72x104","ufixed72x112","ufixed72x120","ufixed72x128","ufixed72x136","ufixed72x144","ufixed72x152","ufixed72x160","ufixed72x168","ufixed72x176","ufixed72x184","ufixed80x8","ufixed80x16","ufixed80x24","ufixed80x32","ufixed80x40","ufixed80x48","ufixed80x56","ufixed80x64","ufixed80x72","ufixed80x80","ufixed80x88","ufixed80x96","ufixed80x104","ufixed80x112","ufixed80x120","ufixed80x128","ufixed80x136","ufixed80x144","ufixed80x152","ufixed80x160","ufixed80x168","ufixed80x176","ufixed88x8","ufixed88x16","ufixed88x24","ufixed88x32","ufixed88x40","ufixed88x48","ufixed88x56","ufixed88x64","ufixed88x72","ufixed88x80","ufixed88x88","ufixed88x96","ufixed88x104","ufixed88x112","ufixed88x120","ufixed88x128","ufixed88x136","ufixed88x144","ufixed88x152","ufixed88x160","ufixed88x168","ufixed96x8","ufixed96x16","ufixed96x24","ufixed96x32","ufixed96x40","ufixed96x48","ufixed96x56","ufixed96x64","ufixed96x72","ufixed96x80","ufixed96x88","ufixed96x96","ufixed96x104","ufixed96x112","ufixed96x120","ufixed96x128","ufixed96x136","ufixed96x144","ufixed96x152","ufixed96x160","ufixed104x8","ufixed104x16","ufixed104x24","ufixed104x32","ufixed104x40","ufixed104x48","ufixed104x56","ufixed104x64","ufixed104x72","ufixed104x80","ufixed104x88","ufixed104x96","ufixed104x104","ufixed104x112","ufixed104x120","ufixed104x128","ufixed104x136","ufixed104x144","ufixed104x152","ufixed112x8","ufixed112x16","ufixed112x24","ufixed112x32","ufixed112x40","ufixed112x48","ufixed112x56","ufixed112x64","ufixed112x72","ufixed112x80","ufixed112x88","ufixed112x96","ufixed112x104","ufixed112x112","ufixed112x120","ufixed112x128","ufixed112x136","ufixed112x144","ufixed120x8","ufixed120x16","ufixed120x24","ufixed120x32","ufixed120x40","ufixed120x48","ufixed120x56","ufixed120x64","ufixed120x72","ufixed120x80","ufixed120x88","ufixed120x96","ufixed120x104","ufixed120x112","ufixed120x120","ufixed120x128","ufixed120x136","ufixed128x8","ufixed128x16","ufixed128x24","ufixed128x32","ufixed128x40","ufixed128x48","ufixed128x56","ufixed128x64","ufixed128x72","ufixed128x80","ufixed128x88","ufixed128x96","ufixed128x104","ufixed128x112","ufixed128x120","ufixed128x128","ufixed136x8","ufixed136x16","ufixed136x24","ufixed136x32","ufixed136x40","ufixed136x48","ufixed136x56","ufixed136x64","ufixed136x72","ufixed136x80","ufixed136x88","ufixed136x96","ufixed136x104","ufixed136x112","ufixed136x120","ufixed144x8","ufixed144x16","ufixed144x24","ufixed144x32","ufixed144x40","ufixed144x48","ufixed144x56","ufixed144x64","ufixed144x72","ufixed144x80","ufixed144x88","ufixed144x96","ufixed144x104","ufixed144x112","ufixed152x8","ufixed152x16","ufixed152x24","ufixed152x32","ufixed152x40","ufixed152x48","ufixed152x56","ufixed152x64","ufixed152x72","ufixed152x80","ufixed152x88","ufixed152x96","ufixed152x104","ufixed160x8","ufixed160x16","ufixed160x24","ufixed160x32","ufixed160x40","ufixed160x48","ufixed160x56","ufixed160x64","ufixed160x72","ufixed160x80","ufixed160x88","ufixed160x96","ufixed168x8","ufixed168x16","ufixed168x24","ufixed168x32","ufixed168x40","ufixed168x48","ufixed168x56","ufixed168x64","ufixed168x72","ufixed168x80","ufixed168x88","ufixed176x8","ufixed176x16","ufixed176x24","ufixed176x32","ufixed176x40","ufixed176x48","ufixed176x56","ufixed176x64","ufixed176x72","ufixed176x80","ufixed184x8","ufixed184x16","ufixed184x24","ufixed184x32","ufixed184x40","ufixed184x48","ufixed184x56","ufixed184x64","ufixed184x72","ufixed192x8","ufixed192x16","ufixed192x24","ufixed192x32","ufixed192x40","ufixed192x48","ufixed192x56","ufixed192x64","ufixed200x8","ufixed200x16","ufixed200x24","ufixed200x32","ufixed200x40","ufixed200x48","ufixed200x56","ufixed208x8","ufixed208x16","ufixed208x24","ufixed208x32","ufixed208x40","ufixed208x48","ufixed216x8","ufixed216x16","ufixed216x24","ufixed216x32","ufixed216x40","ufixed224x8","ufixed224x16","ufixed224x24","ufixed224x32","ufixed232x8","ufixed232x16","ufixed232x24","ufixed240x8","ufixed240x16","ufixed248x8","event","enum","let","mapping","private","public","external","inherited","payable","true","false","var","import","constant","if","else","for","else","for","while","do","break","continue","throw","returns","return","suicide","new","is","this","super"],operators:["=",">","<","!","~","?",":","==","<=",">=","!=","&&","||","++","--","+","-","*","/","&","|","^","%","<<",">>",">>>","+=","-=","*=","/=","&=","|=","^=","%=","<<=",">>=",">>>="],symbols:/[=><!~?:&|+\-*\/\^%]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,integersuffix:/(ll|LL|u|U|l|L)?(ll|LL|u|U|l|L)?/,floatsuffix:/[fFlL]?/,tokenizer:{root:[[/[a-zA-Z_]\w*/,{cases:{"@keywords":{token:"keyword.$0"},"@default":"identifier"}}],{include:"@whitespace"},[/\[\[.*\]\]/,"annotation"],[/^\s*#\w+/,"keyword"],[/int\d*/,"keyword"],[/[{}()\[\]]/,"@brackets"],[/[<>](?!@symbols)/,"@brackets"],[/@symbols/,{cases:{"@operators":"delimiter","@default":""}}],[/\d*\d+[eE]([\-+]?\d+)?(@floatsuffix)/,"number.float"],[/\d*\.\d+([eE][\-+]?\d+)?(@floatsuffix)/,"number.float"],[/0[xX][0-9a-fA-F']*[0-9a-fA-F](@integersuffix)/,"number.hex"],[/0[0-7']*[0-7](@integersuffix)/,"number.octal"],[/0[bB][0-1']*[0-1](@integersuffix)/,"number.binary"],[/\d[\d']*\d(@integersuffix)/,"number"],[/\d(@integersuffix)/,"number"],[/[;,.]/,"delimiter"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/"/,"string","@string"],[/'[^\\']'/,"string"],[/(')(@escapes)(')/,["string","string.escape","string"]],[/'/,"string.invalid"]],whitespace:[[/[ \t\r\n]+/,""],[/\/\*\*(?!\/)/,"comment.doc","@doccomment"],[/\/\*/,"comment","@comment"],[/\/\/.*$/,"comment"]],comment:[[/[^\/*]+/,"comment"],[/\*\//,"comment","@pop"],[/[\/*]/,"comment"]],doccomment:[[/[^\/*]+/,"comment.doc"],[/\*\//,"comment.doc","@pop"],[/[\/*]/,"comment.doc"]],string:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,"string","@pop"]]}};export{x as conf,e as language};
@@ -0,0 +1 @@
1
+ import{Aa as l,Ka as i,Ta as s,Va as m,Xa as y,ea as a,ka as p,lb as c,pb as o,ra as f,sa as g,xa as u,ya as b,za as v,zb as h}from"./chunk-MFHO2F2U.js";var d={pending:{label:"Pending",color:"var(--text-muted)",bg:"rgba(255,255,255,0.05)"},running:{label:"Running",color:"var(--info)",bg:"var(--info-soft)"},paused:{label:"Paused",color:"var(--warn)",bg:"var(--warn-soft)"},completed:{label:"Completed",color:"var(--success)",bg:"var(--success-soft)"},failed:{label:"Failed",color:"var(--error)",bg:"var(--error-soft)"},cancelled:{label:"Cancelled",color:"var(--text-muted)",bg:"rgba(255,255,255,0.05)"},skipped:{label:"Skipped",color:"var(--text-muted)",bg:"rgba(255,255,255,0.05)"},drafted:{label:"Drafted",color:"var(--text-secondary)",bg:"rgba(255,255,255,0.05)"},implementing:{label:"Implementing",color:"var(--info)",bg:"var(--info-soft)"},implemented:{label:"Implemented",color:"var(--node-spec)",bg:"var(--node-spec-soft)"},verified:{label:"Verified",color:"var(--success)",bg:"var(--success-soft)"},drifted:{label:"Drifted",color:"var(--warn)",bg:"var(--warn-soft)"},broken:{label:"Broken",color:"var(--error)",bg:"var(--error-soft)"},orphaned:{label:"Orphaned",color:"var(--error)",bg:"var(--error-soft)"},success:{label:"Success",color:"var(--success)",bg:"var(--success-soft)"},warn:{label:"Warn",color:"var(--warn)",bg:"var(--warn-soft)"},error:{label:"Error",color:"var(--error)",bg:"var(--error-soft)"},info:{label:"Info",color:"var(--info)",bg:"var(--info-soft)"}},C={drifted:"drift",broken:"cancel",orphaned:"drift",failed:"cancel",verified:"check",completed:"check",paused:"pause",running:"circle"};function S(e,n){if(e&1&&l(0,"span",3),e&2){let r=i();s("background",r.cfg().color)}}function w(e,n){if(e&1&&l(0,"app-icon",2),e&2){let r=i();u("name",r.icon())("size",11)}}var D=class e{state=o.required();pulse=o(!1);withDot=o(!1);cfg=c(()=>d[this.state()]??d.info);icon=c(()=>this.withDot()?void 0:C[this.state()]);static \u0275fac=function(r){return new(r||e)};static \u0275cmp=p({type:e,selectors:[["app-state-pill"]],inputs:{state:[1,"state"],pulse:[1,"pulse"],withDot:[1,"withDot"]},decls:4,vars:8,consts:[[1,"pill"],[1,"pill-dot",3,"background"],[3,"name","size"],[1,"pill-dot"]],template:function(r,t){r&1&&(b(0,"span",0),f(1,S,1,2,"span",1)(2,w,1,2,"app-icon",2),m(3),v()),r&2&&(s("color",t.cfg().color)("background",t.cfg().bg)("animation",t.pulse()?"pulsePill 600ms ease-out":null),a(),g(t.withDot()?1:t.icon()?2:-1),a(2),y(" ",t.cfg().label," "))},dependencies:[h],styles:["[_nghost-%COMP%]{display:inline-flex}"],changeDetection:0})};export{d as a,D as b};
@@ -0,0 +1,3 @@
1
+ import{a as L}from"./chunk-OM7JVWQQ.js";import{a as j}from"./chunk-H5TWEFYX.js";import{a as N}from"./chunk-N5OSSQFZ.js";import{a as V}from"./chunk-4JYHAP7B.js";import{Aa as c,Ga as v,I as k,Ia as u,Ka as s,M as _,N as f,Ra as P,Sa as D,Ta as I,Ua as $,Va as l,W as b,Wa as h,Xa as C,aa as M,ea as i,ka as z,lb as T,qa as S,qb as A,ra as x,sa as g,ta as E,ua as O,va as y,wa as w,xa as d,ya as o,yb as F,za as a,zb as H}from"./chunk-MFHO2F2U.js";import"./chunk-Q7L6LLAK.js";var W=["listEl"],q=(n,t)=>t.name,G=(n,t)=>t.cmd;function U(n,t){if(n&1&&(o(0,"div",22),c(1,"div",24),a()),n&2){let e=s().$implicit,r=s();i(),d("innerHTML",r.renderMd(e.text),M)}}function J(n,t){if(n&1&&(o(0,"span",28),l(1),a()),n&2){let e=s(2).$implicit;i(),h(e.model)}}function X(n,t){if(n&1&&(o(0,"div",40)(1,"div",41),l(2,"output"),a(),o(3,"div",42),l(4),a()()),n&2){let e=s().$implicit;i(4),h(e.output)}}function Y(n,t){if(n&1){let e=v();o(0,"div",32)(1,"button",33),u("click",function(){let p=_(e).$implicit,m=s(3).$implicit,Q=s();return f(Q.toggleToolCall(m,p))}),c(2,"app-icon",34)(3,"app-icon",35),o(4,"span",36),l(5),o(6,"span",37),l(7),a()(),o(8,"span",38),c(9,"app-icon",39),l(10),a()(),x(11,X,5,1,"div",40),a()}if(n&2){let e=t.$implicit;i(),S("aria-expanded",e.open),i(),d("name",e.open?"chevronDown":"chevronRight")("size",12),i(),d("size",12),i(2),C(" ",e.name),i(2),C("(",e.input,")"),i(2),d("size",9),i(),C(" ",e.status," "),i(),g(e.open?11:-1)}}function Z(n,t){if(n&1&&y(0,Y,12,9,"div",32,q),n&2){let e=s(2).$implicit;w(e.tools)}}function ee(n,t){if(n&1&&(o(0,"div",31),c(1,"app-icon",43),l(2),o(3,"span"),l(4,"\xB7"),a(),l(5),a()),n&2){let e=s(2).$implicit,r=s();i(),d("size",11),i(),C(" $",e.cost.toFixed(2)," "),i(3),C(" ",r.fmtK(e.tokens)," tokens ")}}function te(n,t){if(n&1&&(o(0,"div",23)(1,"div",25),c(2,"app-logo-mark",26),o(3,"span",27),l(4,"specship"),a(),x(5,J,2,1,"span",28),a(),o(6,"div",29),c(7,"div",30),x(8,Z,2,0),x(9,ee,6,3,"div",31),a()()),n&2){let e=s().$implicit,r=s();i(2),d("size",22)("glow",!1),i(3),g(e.model?5:-1),i(2),d("innerHTML",r.renderMd(e.text),M),i(),g(e.tools!=null&&e.tools.length?8:-1),i(),g(e.cost!=null?9:-1)}}function ne(n,t){if(n&1&&x(0,U,2,1,"div",22)(1,te,10,6,"div",23),n&2){let e=t.$implicit;g(e.role==="user"?0:1)}}function ie(n,t){n&1&&(o(0,"div",5),c(1,"span",44),l(2," thinking with specship context\u2026 "),a())}function oe(n,t){if(n&1&&(o(0,"span",48),l(1),a()),n&2){let e=s().$implicit;i(),h(e.arg)}}function ae(n,t){if(n&1){let e=v();o(0,"button",46),u("click",function(){let p=_(e).$implicit,m=s(2);return f(m.pickSlash(p.cmd))}),o(1,"span",47),l(2),a(),x(3,oe,2,1,"span",48),o(4,"span",49),l(5),a()()}if(n&2){let e=t.$implicit;i(2),h(e.cmd),i(),g(e.arg?3:-1),i(2),h(e.desc)}}function re(n,t){if(n&1&&(o(0,"div",8),y(1,ae,6,3,"button",45,G),a()),n&2){let e=s();i(),w(e.filteredSlash())}}function le(n,t){if(n&1){let e=v();o(0,"div",20)(1,"button",50),u("click",function(){_(e);let p=s();return f(p.toggleContext())}),c(2,"app-icon",51),a()()}n&2&&(i(2),d("size",14))}function se(n,t){if(n&1){let e=v();o(0,"div",66)(1,"button",70),u("click",function(){let p=_(e).$implicit,m=s(2);return f(m.toggleTool(p))}),c(2,"span",71),a(),o(3,"span",72),l(4),a()()}if(n&2){let e=t.$implicit,r=s(2);i(),$("on",r.enabledTools().has(e)),S("aria-pressed",r.enabledTools().has(e))("aria-label",e+(r.enabledTools().has(e)?" enabled":" disabled")),i(2),I("color",r.enabledTools().has(e)?"var(--text-primary)":"var(--text-muted)"),i(),h(e)}}function de(n,t){if(n&1){let e=v();o(0,"aside",21)(1,"div",52)(2,"span",53),l(3,"Context"),a(),o(4,"button",54),u("click",function(){_(e);let p=s();return f(p.toggleContext())}),c(5,"app-icon",55),a()(),o(6,"div",56)(7,"div",57),c(8,"app-icon",58),o(9,"div",59)(10,"div",60),l(11,"Project"),a(),o(12,"div",61),l(13,"~/dev/specship"),a()()(),o(14,"div",57),c(15,"app-icon",62),o(16,"div",59)(17,"div",60),l(18,"Indexed files"),a(),o(19,"div",63),l(20),a()()(),o(21,"div",57),c(22,"app-icon",64),o(23,"div",59)(24,"div",60),l(25,"Drift queue"),a(),o(26,"div",63),l(27,"\u2013 links"),a()()(),o(28,"div",65),l(29,"MCP tools"),a(),y(30,se,5,7,"div",66,O),a(),o(32,"div",67)(33,"div",68),l(34,"Tool access"),a(),o(35,"app-segmented",69),u("change",function(p){_(e);let m=s();return f(m.setToolAccess(p))}),a()()()}if(n&2){let e=s();i(5),d("size",13),i(3),d("size",13),i(7),d("size",13),i(5),h(e.api.isConfigured?"\u2013":"offline"),i(2),d("size",13),i(8),w(e.mcpTools),i(5),d("value",e.toolAccess())("options",e.toolAccessOptions)}}var B=[{cmd:"/ss-spec",arg:"REQ-ID | new <desc>",desc:"Intent door \u2014 view, author, implement, or review a spec"},{cmd:"/ss-explore",arg:"symbols | from\u2192to",desc:"Reads door \u2014 explore an area, trace a flow, or get impact"},{cmd:"/ss-check",arg:"(gate) | drifted | health",desc:"Gate & health door \u2014 run the gate, review drift, or see health"}],R=["specship_explore","specship_search","specship_spec","specship_link_verify"],K=class n{sanitizer=k(F);api=k(V);listEl=A("listEl");messages=b([{role:"assistant",model:"Opus 4",text:`Hi \u2014 ask anything about your specs, code, or recent Claude Code sessions.
2
+
3
+ Try **/ss-spec REQ-AUTH-005** to inspect a requirement, or **/ss-explore validateSession** to walk its callers.`}]);draft=b("");thinking=b(!1);contextCollapsed=b(!1);enabledTools=b(new Set(R));toolAccess=b("safe");slashCommands=B;mcpTools=R;toolAccessOptions=[{value:"ask",label:"Ask"},{value:"safe",label:"Auto-safe"},{value:"all",label:"All"}];showSlash=T(()=>{let t=this.draft();return t.startsWith("/")&&!t.includes(" ")});filteredSlash=T(()=>{let t=this.draft();return B.filter(e=>e.cmd.startsWith(t))});setDraft(t){this.draft.set(t)}onKey(t){t.key==="Enter"&&!t.shiftKey&&(t.preventDefault(),this.send())}send(){let t=this.draft().trim();t&&(this.draft.set(""),this.messages.update(e=>[...e,{role:"user",text:t}]),this.thinking.set(!0),this.scrollToBottom(),setTimeout(()=>{this.thinking.set(!1);let e=t.startsWith("/ss-spec")?"specship_spec":"specship_explore",r=t.split(" ")[1]||"validateSession";this.messages.update(p=>[...p,{role:"assistant",model:"Opus 4",text:t.startsWith("/ss-spec")?"Looking that up in the graph \u2014 the spec resolves to one link. See the **state** pill and linked code below for whether it's drifted.":"Got it. I'll use the specship tools to answer that with structural context rather than re-reading files. Here's what I found in the current project's graph.",tools:[{name:e,input:r,output:"3 nodes \xB7 2 edges returned",status:"ok"}],cost:+(Math.random()*.3+.15).toFixed(2),tokens:Math.round(Math.random()*8e3+6e3)}]),this.scrollToBottom()},1100))}pickSlash(t){this.draft.set(t+" ")}toggleTool(t){this.enabledTools.update(e=>{let r=new Set(e);return r.has(t)?r.delete(t):r.add(t),r})}setToolAccess(t){this.toolAccess.set(t)}toggleContext(){this.contextCollapsed.update(t=>!t)}toggleToolCall(t,e){e.open=!e.open,this.messages.update(r=>[...r])}fmtK(t){return t>=1e3?`${(t/1e3).toFixed(1)}k`:`${t}`}renderMd(t){let e=t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/\*\*(.+?)\*\*/g,'<strong style="color:var(--text-primary)">$1</strong>').replace(/`(.+?)`/g,'<code class="mono" style="font-size:12px;background:var(--bg-canvas);padding:1px 5px;border-radius:4px;border:1px solid var(--border-subtle);color:var(--node-spec)">$1</code>').replace(/\n\n/g,"<br/><br/>").replace(/\n/g,"<br/>");return this.sanitizer.bypassSecurityTrustHtml(e)}scrollToBottom(){setTimeout(()=>{let t=this.listEl()?.nativeElement;t&&(t.scrollTop=t.scrollHeight)},0)}static \u0275fac=function(e){return new(e||n)};static \u0275cmp=z({type:n,selectors:[["app-chat"]],viewQuery:function(e,r){e&1&&P(r.listEl,W,5),e&2&&D()},decls:29,vars:8,consts:[["listEl",""],[1,"chat-page"],[1,"chat-col"],[1,"thread","scroll-y"],[1,"thread-inner"],[1,"row","gap-8","muted","thinking"],[1,"composer"],[1,"composer-inner"],["role","listbox","aria-label","Slash commands",1,"slash-menu"],[1,"composer-box","row"],["type","button","title","Attach files or spec IDs",1,"btn","btn-ghost","btn-sm","attach-btn"],["name","paperclip",3,"size"],["placeholder","Ask with specship context\u2026 / for commands, Tab to complete spec IDs","rows","1",1,"composer-ta",3,"input","keydown","value"],["type","button","aria-label","Send message",1,"btn","btn-primary","btn-sm","send-btn",3,"click","disabled"],["name","send",3,"size"],[1,"composer-footer","row","gap-8"],[1,"row","gap-6"],["name","bot",3,"size"],[1,"muted",2,"font-size","10.5px"],[1,"grow"],[1,"ctx-collapsed"],["aria-label","Context panel",1,"ctx-panel","col"],[1,"msg-user"],[1,"msg-assistant"],[1,"bubble-user",3,"innerHTML"],[1,"row","gap-8","asst-meta"],["aria-hidden","true",3,"size","glow"],[2,"font-size","12px","font-weight","600"],[1,"mono","muted",2,"font-size","10.5px"],[1,"asst-body"],[1,"bubble-asst",3,"innerHTML"],[1,"row","gap-8","muted",2,"margin-top","10px","font-size","10.5px","font-family","var(--font-mono)"],[1,"tool-call"],["type","button",1,"tool-header","row","gap-8",3,"click"],[2,"color","var(--text-muted)",3,"name","size"],["name","wrench",2,"color","var(--node-code)",3,"size"],[1,"mono","grow",2,"font-size","11.5px"],[1,"muted"],[1,"pill",2,"font-size","9.5px","color","var(--success)","background","var(--success-soft)"],["name","check",3,"size"],[1,"tool-output"],[1,"mono","muted",2,"font-size","10.5px","margin-bottom","3px"],[1,"mono",2,"font-size","11.5px","color","var(--text-secondary)"],["name","coins",3,"size"],[1,"thinking-dot"],["type","button","role","option",1,"slash-item","row","gap-8"],["type","button","role","option",1,"slash-item","row","gap-8",3,"click"],[1,"mono",2,"font-size","12px","color","var(--accent)"],[1,"mono","muted",2,"font-size","11px"],[1,"muted","grow",2,"font-size","11px","text-align","right"],["type","button","title","Show context",1,"btn","btn-ghost","btn-xs",3,"click"],["name","chevronLeft",3,"size"],[1,"ctx-header","row"],[1,"eyebrow","grow"],["type","button",1,"btn","btn-ghost","btn-xs",3,"click"],["name","chevronRight",3,"size"],[1,"ctx-body","scroll-y"],[1,"ctx-row","row","gap-8"],["name","folder",2,"color","var(--text-muted)","flex-shrink","0",3,"size"],[2,"min-width","0"],[1,"muted",2,"font-size","10px"],[1,"mono",2,"font-size","11.5px","overflow","hidden","text-overflow","ellipsis","white-space","nowrap"],["name","box",2,"color","var(--text-muted)","flex-shrink","0",3,"size"],[1,"mono",2,"font-size","11.5px"],["name","drift",2,"color","var(--warn)","flex-shrink","0",3,"size"],[1,"eyebrow",2,"margin","16px 0 8px"],[1,"row","gap-8",2,"padding","5px 0"],[1,"ctx-footer"],[1,"eyebrow",2,"margin-bottom","6px"],["size","sm",3,"change","value","options"],["type","button",1,"toggle-btn",3,"click"],[1,"toggle-thumb"],[1,"mono",2,"font-size","11px"]],template:function(e,r){e&1&&(o(0,"div",1)(1,"div",2)(2,"div",3,0)(4,"div",4),y(5,ne,2,1,null,null,E),x(7,ie,3,0,"div",5),a()(),o(8,"div",6)(9,"div",7),x(10,re,3,0,"div",8),o(11,"div",9)(12,"button",10),c(13,"app-icon",11),a(),o(14,"textarea",12),u("input",function(m){return r.setDraft(m.target.value)})("keydown",function(m){return r.onKey(m)}),a(),o(15,"button",13),u("click",function(){return r.send()}),c(16,"app-icon",14),a()(),o(17,"div",15)(18,"div",16)(19,"app-pill"),c(20,"app-icon",17),l(21," Opus 4 "),a(),o(22,"span",18),l(23,"single thread \xB7 this project"),a()(),c(24,"span",19),o(25,"span",18),l(26,"Enter to send \xB7 Shift+Enter for newline"),a()()()()(),x(27,le,3,1,"div",20)(28,de,36,7,"aside",21),a()),e&2&&(i(5),w(r.messages()),i(2),g(r.thinking()?7:-1),i(3),g(r.showSlash()&&r.filteredSlash().length>0?10:-1),i(3),d("size",15),i(),d("value",r.draft()),i(),d("disabled",!r.draft().trim()),i(),d("size",14),i(4),d("size",10),i(7),g(r.contextCollapsed()?27:28))},dependencies:[H,L,N,j],styles:["[_nghost-%COMP%]{display:flex;flex:1;min-height:0}.chat-page[_ngcontent-%COMP%]{display:flex;flex:1;min-height:0;min-width:0}.chat-col[_ngcontent-%COMP%]{display:flex;flex-direction:column;flex:1;min-width:0;min-height:0}.thread[_ngcontent-%COMP%]{flex:1;padding:20px 24px;overflow-y:auto}.thread-inner[_ngcontent-%COMP%]{max-width:760px;margin:0 auto}.msg-user[_ngcontent-%COMP%]{display:flex;justify-content:flex-end;margin-bottom:18px}.bubble-user[_ngcontent-%COMP%]{max-width:76%;background:var(--bg-elevated);border:1px solid var(--border-subtle);border-radius:12px 12px 4px;padding:9px 13px;font-size:13.5px;line-height:1.55}.msg-assistant[_ngcontent-%COMP%]{margin-bottom:22px}.asst-meta[_ngcontent-%COMP%]{align-items:center;margin-bottom:8px}.asst-logo[_ngcontent-%COMP%]{display:inline-grid;place-items:center;width:22px;height:22px;border-radius:50%;background:var(--accent);color:#fff;font-size:11px;font-weight:700;flex-shrink:0}.asst-body[_ngcontent-%COMP%]{padding-left:30px}.bubble-asst[_ngcontent-%COMP%]{font-size:13.5px;line-height:1.62;color:var(--text-secondary);text-wrap:pretty;margin-bottom:4px}.tool-call[_ngcontent-%COMP%]{border:1px solid var(--border-subtle);border-radius:7px;margin-top:8px;overflow:hidden;background:var(--bg-canvas)}.tool-header[_ngcontent-%COMP%]{width:100%;background:transparent;border:none;cursor:pointer;padding:6px 10px;text-align:left;color:inherit;font-family:var(--font-ui)}.tool-header[_ngcontent-%COMP%]:hover{background:var(--bg-hover)}.tool-header[_ngcontent-%COMP%]:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.tool-output[_ngcontent-%COMP%]{padding:8px 10px 10px 30px;border-top:1px solid var(--border-subtle)}.thinking[_ngcontent-%COMP%]{padding-left:30px;font-size:12px}.thinking-dot[_ngcontent-%COMP%]{width:6px;height:6px;border-radius:50%;background:var(--accent);animation:skeleton 1s infinite;flex-shrink:0}.composer[_ngcontent-%COMP%]{padding:12px 24px 18px;border-top:1px solid var(--border-subtle);flex-shrink:0}.composer-inner[_ngcontent-%COMP%]{max-width:760px;margin:0 auto;position:relative}.composer-box[_ngcontent-%COMP%]{align-items:flex-end;background:var(--bg-panel);border:1px solid var(--border-subtle);border-radius:12px;padding:8px;gap:8px}.attach-btn[_ngcontent-%COMP%]{padding:7px;flex-shrink:0}.send-btn[_ngcontent-%COMP%]{padding:7px 10px;flex-shrink:0}.composer-ta[_ngcontent-%COMP%]{flex:1;resize:none;background:transparent;border:none;outline:none;color:var(--text-primary);font-size:13.5px;font-family:var(--font-ui);line-height:1.5;padding:5px 2px;max-height:120px}.composer-ta[_ngcontent-%COMP%]::placeholder{color:var(--text-muted)}.composer-footer[_ngcontent-%COMP%]{margin-top:8px;align-items:center}.slash-menu[_ngcontent-%COMP%]{position:absolute;bottom:100%;left:0;margin-bottom:8px;background:var(--bg-elevated);border:1px solid var(--border-strong);border-radius:8px;box-shadow:var(--shadow-pop);padding:5px;width:320px;z-index:10}.slash-item[_ngcontent-%COMP%]{width:100%;background:transparent;border:none;cursor:pointer;padding:6px 9px;border-radius:5px;text-align:left;color:inherit;font-family:var(--font-ui)}.slash-item[_ngcontent-%COMP%]:hover{background:var(--bg-hover)}.slash-item[_ngcontent-%COMP%]:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.ctx-collapsed[_ngcontent-%COMP%]{width:40px;flex-shrink:0;border-left:1px solid var(--border-subtle);display:flex;justify-content:center;padding-top:12px}.ctx-panel[_ngcontent-%COMP%]{width:264px;flex-shrink:0;border-left:1px solid var(--border-subtle);background:var(--bg-panel);display:flex;flex-direction:column;min-height:0}.ctx-header[_ngcontent-%COMP%]{padding:11px 13px;border-bottom:1px solid var(--border-subtle);align-items:center}.ctx-body[_ngcontent-%COMP%]{flex:1;padding:13px;overflow-y:auto;min-height:0}.ctx-row[_ngcontent-%COMP%]{padding:5px 0;align-items:flex-start}.ctx-footer[_ngcontent-%COMP%]{padding:12px;border-top:1px solid var(--border-subtle)}.toggle-btn[_ngcontent-%COMP%]{width:30px;height:17px;border-radius:999px;border:none;cursor:pointer;padding:2px;background:var(--bg-elevated);display:flex;justify-content:flex-start;align-items:center;transition:background .12s,justify-content .12s;flex-shrink:0}.toggle-btn.on[_ngcontent-%COMP%]{background:var(--accent);justify-content:flex-end}.toggle-btn[_ngcontent-%COMP%]:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.toggle-thumb[_ngcontent-%COMP%]{width:13px;height:13px;border-radius:50%;background:#fff;flex-shrink:0}.eyebrow[_ngcontent-%COMP%]{color:var(--text-muted);font-size:10.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase}.muted[_ngcontent-%COMP%]{color:var(--text-muted)}.mono[_ngcontent-%COMP%]{font-family:var(--font-mono)}.pill[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:600;padding:3px 9px;border-radius:999px;line-height:1.4;white-space:nowrap}.grow[_ngcontent-%COMP%]{flex:1}"],changeDetection:0})};export{K as Chat};
@@ -0,0 +1 @@
1
+ import{m}from"./chunk-JTFXTIPE.js";function p(r,t){let o=globalThis.MonacoEnvironment;if(o?.createTrustedTypesPolicy)try{return o.createTrustedTypesPolicy(r,t)}catch(e){console.error(e);return}try{return globalThis.trustedTypes?.createPolicy(r,t)}catch(e){console.error(e);return}}var i;typeof self=="object"&&self.constructor&&self.constructor.name==="DedicatedWorkerGlobalScope"&&globalThis.workerttPolicy!==void 0?i=globalThis.workerttPolicy:i=p("defaultWorkerFactory",{createScriptURL:r=>r});function n(r){let t=r.label,o=globalThis.MonacoEnvironment;if(o){if(typeof o.getWorker=="function")return o.getWorker("workerMain.js",t);if(typeof o.getWorkerUrl=="function"){let e=o.getWorkerUrl("workerMain.js",t);return new Worker(i?i.createScriptURL(e):e,{name:t,type:"module"})}}if(r.createWorker)return r.createWorker();throw new Error("You must define a function MonacoEnvironment.getWorkerUrl or MonacoEnvironment.getWorker")}function Ur(r){let t=Promise.resolve(n({label:r.label??"monaco-editor-worker",moduleId:r.moduleId,createWorker:r.createWorker})).then(o=>(o.postMessage("ignore"),o.postMessage(r.createData),o));return m.createWebWorker({worker:t,host:r.host,keepIdleModels:r.keepIdleModels})}export{Ur as a};
@@ -0,0 +1 @@
1
+ import{a as j}from"./chunk-W22AVG3N.js";import{a as A,b as R}from"./chunk-4JYHAP7B.js";import{E as u,I as i,R as b,W as o,X as v,lb as g}from"./chunk-MFHO2F2U.js";import{a as y,b as m}from"./chunk-Q7L6LLAK.js";var w="specship.lastOnline",l=class r{onlineSig=o(!0);lastOnlineAtSig=o(null);online=this.onlineSig.asReadonly();lastOnlineAt=this.lastOnlineAtSig.asReadonly();lastOnlineLabel=g(()=>{let t=this.lastOnlineAtSig();if(t===null)return null;let e=Date.now()-t;return e<1e4?"just now":e<6e4?`${Math.round(e/1e3)}s ago`:e<36e5?`${Math.round(e/6e4)}m ago`:e<864e5?`${Math.round(e/36e5)}h ago`:`${Math.round(e/864e5)}d ago`});constructor(){if(typeof localStorage<"u")try{let t=localStorage.getItem(w),e=t?Number(t):NaN;Number.isFinite(e)&&this.lastOnlineAtSig.set(e)}catch{}typeof window<"u"&&window.addEventListener("offline",()=>this.onlineSig.set(!1))}noteSuccess(){let t=Date.now();if(this.lastOnlineAtSig.set(t),typeof localStorage<"u")try{localStorage.setItem(w,String(t))}catch{}this.onlineSig()||this.onlineSig.set(!0)}noteOffline(){this.onlineSig()&&this.onlineSig.set(!1)}static \u0275fac=function(e){return new(e||r)};static \u0275prov=u({token:r,factory:r.\u0275fac,providedIn:"root"})};var f=class r{api=i(A);projects=i(j);connection=i(l);tickSig=o(0);loadingSig=o(!1);errorSig=o(null);lastRefreshSig=o(null);tick=this.tickSig.asReadonly();loading=this.loadingSig.asReadonly();error=this.errorSig.asReadonly();lastRefreshAt=this.lastRefreshSig.asReadonly();lastRefreshLabel=g(()=>{let t=this.lastRefreshSig();if(t===null)return null;let e=Date.now()-t;return e<5e3?"just now":e<6e4?`${Math.round(e/1e3)}s ago`:e<36e5?`${Math.round(e/6e4)}m ago`:`${Math.round(e/36e5)}h ago`});async triggerGlobalRefresh(){if(!this.loadingSig()){if(!this.connection.online()){this.errorSig.set("Offline \u2014 reconnect to refresh");return}this.loadingSig.set(!0),this.errorSig.set(null);try{let t=this.projects.projectQuery(),e=await this.api.post(`/api/refresh${t}`,{});(e.syncError||e.ingestError)&&this.errorSig.set([e.syncError,e.ingestError].filter(Boolean).join(" \xB7 ")),this.lastRefreshSig.set(Date.now()),this.tickSig.update(d=>d+1)}catch(t){this.errorSig.set(t instanceof Error?t.message:String(t))}finally{this.loadingSig.set(!1)}}}notifyLocalChange(){this.lastRefreshSig.set(Date.now()),this.tickSig.update(t=>t+1)}static \u0275fac=function(e){return new(e||r)};static \u0275prov=u({token:r,factory:r.\u0275fac,providedIn:"root"})};var _="specship.cache:";function M(r){if(typeof localStorage>"u")return null;try{let t=localStorage.getItem(_+r);if(!t)return null;let e=JSON.parse(t);if(e&&typeof e.ts=="number"&&"data"in e)return e}catch{}return null}function O(r,t){let e=Date.now();if(typeof localStorage>"u")return e;try{localStorage.setItem(_+r,JSON.stringify({data:t,ts:e}))}catch{}return e}function K(r,t){let e=o({data:null,loading:!0,error:null,source:"init",noProject:!1,stale:!1,cachedAt:null}),d=i(b),E=i(f),h=i(l),S=o(0),D=()=>{let a=t();if(!a){e.set({data:null,loading:!1,error:null,source:"init",noProject:!1,stale:!1,cachedAt:null});return}s&&s.abort(),s=new AbortController,e.update(n=>m(y({},n),{loading:!0,error:null,noProject:!1})),r.get(a,s.signal).then(n=>{let c=O(a,n);h.noteSuccess(),e.set({data:n,loading:!1,error:null,source:"api",noProject:!1,stale:!1,cachedAt:c})}).catch(n=>{if(n instanceof Error&&n.name==="AbortError")return;if(n instanceof R){h.noteSuccess();let p=n.status===409&&(n.code==="no_project"||n.code==="no_primary");e.set({data:null,loading:!1,error:p?null:n,source:"api",noProject:p,stale:!1,cachedAt:null});return}h.noteOffline();let c=M(a);c?e.set({data:c.data,loading:!1,error:null,source:"api",noProject:!1,stale:!0,cachedAt:c.ts}):e.set({data:null,loading:!1,error:n instanceof Error?n:new Error(String(n)),source:"api",noProject:!1,stale:!0,cachedAt:null})})},s=null;return v(()=>{t(),S(),E.tick(),D()}),d.onDestroy(()=>{s?.abort()}),{state:e,refetch:()=>S.update(a=>a+1)}}export{l as a,f as b,K as c};
@@ -0,0 +1 @@
1
+ import{n as t}from"./chunk-JTFXTIPE.js";import"./chunk-Q7L6LLAK.js";var qt={comments:{blockComment:["<!--","-->"]},brackets:[["<",">"]],autoClosingPairs:[{open:"<",close:">"},{open:"'",close:"'"},{open:'"',close:'"'}],surroundingPairs:[{open:"<",close:">"},{open:"'",close:"'"},{open:'"',close:'"'}],onEnterRules:[{beforeText:new RegExp("<([_:\\w][_:\\w-.\\d]*)([^/>]*(?!/)>)[^<]*$","i"),afterText:/^<\/([_:\w][_:\w-.\d]*)\s*>$/i,action:{indentAction:t.IndentAction.IndentOutdent}},{beforeText:new RegExp("<(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$","i"),action:{indentAction:t.IndentAction.Indent}}]},Nt={defaultToken:"",tokenPostfix:".xml",ignoreCase:!0,qualifiedName:/(?:[\w\.\-]+:)?[\w\.\-]+/,tokenizer:{root:[[/[^<&]+/,""],{include:"@whitespace"},[/(<)(@qualifiedName)/,[{token:"delimiter"},{token:"tag",next:"@tag"}]],[/(<\/)(@qualifiedName)(\s*)(>)/,[{token:"delimiter"},{token:"tag"},"",{token:"delimiter"}]],[/(<\?)(@qualifiedName)/,[{token:"delimiter"},{token:"metatag",next:"@tag"}]],[/(<\!)(@qualifiedName)/,[{token:"delimiter"},{token:"metatag",next:"@tag"}]],[/<\!\[CDATA\[/,{token:"delimiter.cdata",next:"@cdata"}],[/&\w+;/,"string.escape"]],cdata:[[/[^\]]+/,""],[/\]\]>/,{token:"delimiter.cdata",next:"@pop"}],[/\]/,""]],tag:[[/[ \t\r\n]+/,""],[/(@qualifiedName)(\s*=\s*)("[^"]*"|'[^']*')/,["attribute.name","","attribute.value"]],[/(@qualifiedName)(\s*=\s*)("[^">?\/]*|'[^'>?\/]*)(?=[\?\/]\>)/,["attribute.name","","attribute.value"]],[/(@qualifiedName)(\s*=\s*)("[^">]*|'[^'>]*)/,["attribute.name","","attribute.value"]],[/@qualifiedName/,"attribute.name"],[/\?>/,{token:"delimiter",next:"@pop"}],[/(\/)(>)/,[{token:"tag"},{token:"delimiter",next:"@pop"}]],[/>/,{token:"delimiter",next:"@pop"}]],whitespace:[[/[ \t\r\n]+/,""],[/<!--/,{token:"comment",next:"@comment"}]],comment:[[/[^<\-]+/,"comment.content"],[/-->/,{token:"comment",next:"@pop"}],[/<!--/,"comment.content.invalid"],[/[<\-]/,"comment.content"]]}};export{qt as conf,Nt as language};
@@ -0,0 +1,2 @@
1
+ import"./chunk-Q7L6LLAK.js";var e=["true","false"],t={comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"],["<",">"]],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"<",close:">"},{open:'"',close:'"'},{open:"'",close:"'"}],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"<",close:">"},{open:'"',close:'"',notIn:["string"]},{open:"'",close:"'",notIn:["string"]}],autoCloseBefore:`.,=}])>'
2
+ `,indentationRules:{increaseIndentPattern:new RegExp("^((?!\\/\\/).)*(\\{[^}\"'`]*|\\([^)\"'`]*|\\[[^\\]\"'`]*)$"),decreaseIndentPattern:new RegExp("^((?!.*?\\/\\*).*\\*/)?\\s*[\\}\\]].*$")}},n={defaultToken:"",tokenPostfix:".proto",brackets:[{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"},{open:"<",close:">",token:"delimiter.angle"}],symbols:/[=><!~?:&|+\-*/^%]+/,keywords:["syntax","import","weak","public","package","option","repeated","oneof","map","reserved","to","max","enum","message","service","rpc","stream","returns","package","optional","true","false"],builtinTypes:["double","float","int32","int64","uint32","uint64","sint32","sint64","fixed32","fixed64","sfixed32","sfixed64","bool","string","bytes"],operators:["=","+","-"],namedLiterals:e,escapes:"\\\\(u{[0-9A-Fa-f]+}|n|r|t|\\\\|'|\\${)",identifier:/[a-zA-Z]\w*/,fullIdentifier:/@identifier(?:\s*\.\s*@identifier)*/,optionName:/(?:@identifier|\(\s*@fullIdentifier\s*\))(?:\s*\.\s*@identifier)*/,messageName:/@identifier/,enumName:/@identifier/,messageType:/\.?\s*(?:@identifier\s*\.\s*)*@messageName/,enumType:/\.?\s*(?:@identifier\s*\.\s*)*@enumName/,floatLit:/[0-9]+\s*\.\s*[0-9]*(?:@exponent)?|[0-9]+@exponent|\.[0-9]+(?:@exponent)?/,exponent:/[eE]\s*[+-]?\s*[0-9]+/,boolLit:/true\b|false\b/,decimalLit:/[1-9][0-9]*/,octalLit:/0[0-7]*/,hexLit:/0[xX][0-9a-fA-F]+/,type:/double|float|int32|int64|uint32|uint64|sint32|sint64|fixed32|fixed64|sfixed32|sfixed64|bool|string|bytes|@messageType|@enumType/,keyType:/int32|int64|uint32|uint64|sint32|sint64|fixed32|fixed64|sfixed32|sfixed64|bool|string/,tokenizer:{root:[{include:"@whitespace"},[/syntax/,"keyword"],[/=/,"operators"],[/;/,"delimiter"],[/(")(proto3)(")/,["string.quote","string",{token:"string.quote",switchTo:"@topLevel.proto3"}]],[/(")(proto2)(")/,["string.quote","string",{token:"string.quote",switchTo:"@topLevel.proto2"}]],[/.*?/,{token:"",switchTo:"@topLevel.proto2"}]],topLevel:[{include:"@whitespace"},{include:"@constant"},[/=/,"operators"],[/[;.]/,"delimiter"],[/@fullIdentifier/,{cases:{option:{token:"keyword",next:"@option.$S2"},enum:{token:"keyword",next:"@enumDecl.$S2"},message:{token:"keyword",next:"@messageDecl.$S2"},service:{token:"keyword",next:"@serviceDecl.$S2"},extend:{cases:{"$S2==proto2":{token:"keyword",next:"@extendDecl.$S2"}}},"@keywords":"keyword","@default":"identifier"}}]],enumDecl:[{include:"@whitespace"},[/@identifier/,"type.identifier"],[/{/,{token:"@brackets",bracket:"@open",switchTo:"@enumBody.$S2"}]],enumBody:[{include:"@whitespace"},{include:"@constant"},[/=/,"operators"],[/;/,"delimiter"],[/option\b/,"keyword","@option.$S2"],[/@identifier/,"identifier"],[/\[/,{token:"@brackets",bracket:"@open",next:"@options.$S2"}],[/}/,{token:"@brackets",bracket:"@close",next:"@pop"}]],messageDecl:[{include:"@whitespace"},[/@identifier/,"type.identifier"],[/{/,{token:"@brackets",bracket:"@open",switchTo:"@messageBody.$S2"}]],messageBody:[{include:"@whitespace"},{include:"@constant"},[/=/,"operators"],[/;/,"delimiter"],["(map)(s*)(<)",["keyword","white",{token:"@brackets",bracket:"@open",next:"@map.$S2"}]],[/@identifier/,{cases:{option:{token:"keyword",next:"@option.$S2"},enum:{token:"keyword",next:"@enumDecl.$S2"},message:{token:"keyword",next:"@messageDecl.$S2"},oneof:{token:"keyword",next:"@oneofDecl.$S2"},extensions:{cases:{"$S2==proto2":{token:"keyword",next:"@reserved.$S2"}}},reserved:{token:"keyword",next:"@reserved.$S2"},"(?:repeated|optional)":{token:"keyword",next:"@field.$S2"},required:{cases:{"$S2==proto2":{token:"keyword",next:"@field.$S2"}}},"$S2==proto3":{token:"@rematch",next:"@field.$S2"}}}],[/\[/,{token:"@brackets",bracket:"@open",next:"@options.$S2"}],[/}/,{token:"@brackets",bracket:"@close",next:"@pop"}]],extendDecl:[{include:"@whitespace"},[/@identifier/,"type.identifier"],[/{/,{token:"@brackets",bracket:"@open",switchTo:"@extendBody.$S2"}]],extendBody:[{include:"@whitespace"},{include:"@constant"},[/;/,"delimiter"],[/(?:repeated|optional|required)/,"keyword","@field.$S2"],[/\[/,{token:"@brackets",bracket:"@open",next:"@options.$S2"}],[/}/,{token:"@brackets",bracket:"@close",next:"@pop"}]],options:[{include:"@whitespace"},{include:"@constant"},[/;/,"delimiter"],[/@optionName/,"annotation"],[/[()]/,"annotation.brackets"],[/=/,"operator"],[/\]/,{token:"@brackets",bracket:"@close",next:"@pop"}]],option:[{include:"@whitespace"},[/@optionName/,"annotation"],[/[()]/,"annotation.brackets"],[/=/,"operator","@pop"]],oneofDecl:[{include:"@whitespace"},[/@identifier/,"identifier"],[/{/,{token:"@brackets",bracket:"@open",switchTo:"@oneofBody.$S2"}]],oneofBody:[{include:"@whitespace"},{include:"@constant"},[/;/,"delimiter"],[/(@identifier)(\s*)(=)/,["identifier","white","delimiter"]],[/@fullIdentifier|\./,{cases:{"@builtinTypes":"keyword","@default":"type.identifier"}}],[/\[/,{token:"@brackets",bracket:"@open",next:"@options.$S2"}],[/}/,{token:"@brackets",bracket:"@close",next:"@pop"}]],reserved:[{include:"@whitespace"},[/,/,"delimiter"],[/;/,"delimiter","@pop"],{include:"@constant"},[/to\b|max\b/,"keyword"]],map:[{include:"@whitespace"},[/@fullIdentifier|\./,{cases:{"@builtinTypes":"keyword","@default":"type.identifier"}}],[/,/,"delimiter"],[/>/,{token:"@brackets",bracket:"@close",switchTo:"identifier"}]],field:[{include:"@whitespace"},["group",{cases:{"$S2==proto2":{token:"keyword",switchTo:"@groupDecl.$S2"}}}],[/(@identifier)(\s*)(=)/,["identifier","white",{token:"delimiter",next:"@pop"}]],[/@fullIdentifier|\./,{cases:{"@builtinTypes":"keyword","@default":"type.identifier"}}]],groupDecl:[{include:"@whitespace"},[/@identifier/,"identifier"],["=","operator"],[/{/,{token:"@brackets",bracket:"@open",switchTo:"@messageBody.$S2"}],{include:"@constant"}],type:[{include:"@whitespace"},[/@identifier/,"type.identifier","@pop"],[/./,"delimiter"]],identifier:[{include:"@whitespace"},[/@identifier/,"identifier","@pop"]],serviceDecl:[{include:"@whitespace"},[/@identifier/,"identifier"],[/{/,{token:"@brackets",bracket:"@open",switchTo:"@serviceBody.$S2"}]],serviceBody:[{include:"@whitespace"},{include:"@constant"},[/;/,"delimiter"],[/option\b/,"keyword","@option.$S2"],[/rpc\b/,"keyword","@rpc.$S2"],[/\[/,{token:"@brackets",bracket:"@open",next:"@options.$S2"}],[/}/,{token:"@brackets",bracket:"@close",next:"@pop"}]],rpc:[{include:"@whitespace"},[/@identifier/,"identifier"],[/\(/,{token:"@brackets",bracket:"@open",switchTo:"@request.$S2"}],[/{/,{token:"@brackets",bracket:"@open",next:"@methodOptions.$S2"}],[/;/,"delimiter","@pop"]],request:[{include:"@whitespace"},[/@messageType/,{cases:{stream:{token:"keyword",next:"@type.$S2"},"@default":"type.identifier"}}],[/\)/,{token:"@brackets",bracket:"@close",switchTo:"@returns.$S2"}]],returns:[{include:"@whitespace"},[/returns\b/,"keyword"],[/\(/,{token:"@brackets",bracket:"@open",switchTo:"@response.$S2"}]],response:[{include:"@whitespace"},[/@messageType/,{cases:{stream:{token:"keyword",next:"@type.$S2"},"@default":"type.identifier"}}],[/\)/,{token:"@brackets",bracket:"@close",switchTo:"@rpc.$S2"}]],methodOptions:[{include:"@whitespace"},{include:"@constant"},[/;/,"delimiter"],["option","keyword"],[/@optionName/,"annotation"],[/[()]/,"annotation.brackets"],[/=/,"operator"],[/}/,{token:"@brackets",bracket:"@close",next:"@pop"}]],comment:[[/[^\/*]+/,"comment"],[/\/\*/,"comment","@push"],["\\*/","comment","@pop"],[/[\/*]/,"comment"]],string:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,{token:"string.quote",bracket:"@close",next:"@pop"}]],stringSingle:[[/[^\\']+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/'/,{token:"string.quote",bracket:"@close",next:"@pop"}]],constant:[["@boolLit","keyword.constant"],["@hexLit","number.hex"],["@octalLit","number.octal"],["@decimalLit","number"],["@floatLit","number.float"],[/("([^"\\]|\\.)*|'([^'\\]|\\.)*)$/,"string.invalid"],[/"/,{token:"string.quote",bracket:"@open",next:"@string"}],[/'/,{token:"string.quote",bracket:"@open",next:"@stringSingle"}],[/{/,{token:"@brackets",bracket:"@open",next:"@prototext"}],[/identifier/,"identifier"]],whitespace:[[/[ \t\r\n]+/,"white"],[/\/\*/,"comment","@comment"],[/\/\/.*$/,"comment"]],prototext:[{include:"@whitespace"},{include:"@constant"},[/@identifier/,"identifier"],[/[:;]/,"delimiter"],[/}/,{token:"@brackets",bracket:"@close",next:"@pop"}]]}};export{t as conf,n as language};
@@ -0,0 +1,47 @@
1
+ var e={servers:[{id:"specship",name:"specship",scope:"project",icon:"graph",color:"var(--node-spec)",state:"running",version:"0.4.0",protocol:"2025-06-18",uptime:"4h 12m",transport:"stdio",command:"npx specship mcp",desc:"SpecShip\u2019s own server \u2014 structural code intelligence over the spec\u2194code graph.",tools:[{name:"specship_explore",icon:"graph",color:"var(--node-code)",desc:"Return the callers, callees and linked specs for a symbol \u2014 the structural alternative to re-reading files.",params:[{name:"symbol",type:"string",required:!0},{name:"depth",type:"int",required:!1,hint:"2"},{name:"include",type:"enum",required:!1,hint:"callers|callees|specs"}],example:"specship_explore --symbol validateSession --depth 2",stat:{calls:88,tokens:54e4},drill:!0},{name:"specship_search",icon:"search",color:"var(--node-spec)",desc:"Indexed structural search across the graph for call sites, definitions and references \u2014 returns qualified symbols, not raw lines.",params:[{name:"query",type:"string",required:!0},{name:"kind",type:"enum",required:!1,hint:"call-site|def|ref"},{name:"limit",type:"int",required:!1,hint:"50"}],example:"specship_search 'parseTranscript' --kind call-site",stat:{calls:64,tokens:21e4},drill:!0},{name:"specship_links",icon:"book",color:"var(--node-route)",desc:"List spec\u2194code links and their verification state. Filter by requirement id or state.",params:[{name:"spec",type:"string",required:!1},{name:"state",type:"enum",required:!1,hint:"verified|drifted|broken"}],example:"specship_links --spec REQ-AUTH-005",stat:{calls:31,tokens:74e3}},{name:"specship_drift",icon:"drift",color:"var(--warn)",desc:"Detect links that have drifted since they were last verified. Powers the drift queue.",params:[{name:"path",type:"string",required:!1},{name:"since",type:"string",required:!1,hint:"HEAD~1"}],example:"specship_drift --path src/ingest/",stat:{calls:19,tokens:28e3}},{name:"specship_impact",icon:"compare",color:"var(--node-test)",desc:"Trace the blast radius of a change \u2014 every symbol, test and spec downstream of an edit.",params:[{name:"symbol",type:"string",required:!0},{name:"depth",type:"int",required:!1,hint:"3"}],example:"specship_impact --symbol tailFrom",stat:{calls:12,tokens:51e3}}],usedBy:[{name:"Claude Code",host:"stdio \xB7 ~/dev/specship",state:"active",last:"active now"},{name:"Claude Desktop",host:"stdio \xB7 global",state:"connected",last:"12m ago"},{name:"Cursor",host:"stdio \xB7 workspace",state:"idle",last:"3h ago"}],config:`{
2
+ "mcpServers": {
3
+ "specship": {
4
+ "command": "npx",
5
+ "args": ["specship", "mcp"],
6
+ "env": { "SPECSHIP_ROOT": "~/dev/specship" }
7
+ }
8
+ }
9
+ }`},{id:"filesystem",name:"filesystem",scope:"global",icon:"folder",color:"var(--node-route)",state:"running",version:"0.6.2",protocol:"2025-06-18",uptime:"1d 6h",transport:"stdio",command:"npx -y @modelcontextprotocol/server-filesystem ~/dev",desc:"Sandboxed read/write access to files under an allowed root directory.",tools:[{name:"read_file",icon:"book",color:"var(--node-route)",desc:"Read the complete contents of a file from the allowed directories.",params:[{name:"path",type:"string",required:!0}],example:"read_file --path src/index.ts",stat:{calls:142,tokens:98e4}},{name:"write_file",icon:"reveal",color:"var(--node-route)",desc:"Create a new file or overwrite an existing one with new contents.",params:[{name:"path",type:"string",required:!0},{name:"content",type:"string",required:!0}],example:"write_file --path notes.md",stat:{calls:24,tokens:6e4}},{name:"list_directory",icon:"folder",color:"var(--node-route)",desc:"List files and directories at a given path with type annotations.",params:[{name:"path",type:"string",required:!0}],example:"list_directory --path src/",stat:{calls:58,tokens:12e4}},{name:"search_files",icon:"search",color:"var(--node-route)",desc:"Recursively search for files matching a pattern under a directory.",params:[{name:"path",type:"string",required:!0},{name:"pattern",type:"string",required:!0}],example:"search_files --pattern '*.test.ts'",stat:{calls:33,tokens:21e4}}],usedBy:[{name:"Claude Desktop",host:"stdio \xB7 global",state:"active",last:"active now"},{name:"Claude Code",host:"stdio \xB7 inherited",state:"connected",last:"20m ago"}],config:`{
10
+ "mcpServers": {
11
+ "filesystem": {
12
+ "command": "npx",
13
+ "args": ["-y", "@modelcontextprotocol/server-filesystem", "~/dev"]
14
+ }
15
+ }
16
+ }`},{id:"github",name:"github",scope:"global",icon:"external",color:"var(--node-code)",state:"running",version:"0.5.0",protocol:"2025-06-18",uptime:"1d 6h",transport:"stdio",command:"npx -y @modelcontextprotocol/server-github",desc:"Read and write GitHub repos, issues and pull requests via a personal access token.",tools:[{name:"search_repositories",icon:"search",color:"var(--node-code)",desc:"Search GitHub repositories by query, language and stars.",params:[{name:"query",type:"string",required:!0},{name:"perPage",type:"int",required:!1,hint:"30"}],example:"search_repositories --query 'mcp server'",stat:{calls:14,tokens:88e3}},{name:"get_file_contents",icon:"book",color:"var(--node-code)",desc:"Fetch the contents of a file or directory from a repository.",params:[{name:"owner",type:"string",required:!0},{name:"repo",type:"string",required:!0},{name:"path",type:"string",required:!0}],example:"get_file_contents --repo anthropics/mcp",stat:{calls:22,tokens:14e4}},{name:"create_issue",icon:"drift",color:"var(--node-code)",desc:"Open a new issue on a repository with a title, body and labels.",params:[{name:"owner",type:"string",required:!0},{name:"repo",type:"string",required:!0},{name:"title",type:"string",required:!0}],example:"create_issue --title 'Drifted link'",stat:{calls:4,tokens:12e3}},{name:"create_pull_request",icon:"compare",color:"var(--node-code)",desc:"Create a pull request from a head branch into a base branch.",params:[{name:"owner",type:"string",required:!0},{name:"repo",type:"string",required:!0},{name:"head",type:"string",required:!0},{name:"base",type:"string",required:!0}],example:"create_pull_request --head feat/mcp",stat:{calls:3,tokens:9e3}}],usedBy:[{name:"Claude Code",host:"stdio \xB7 ~/dev/specship",state:"connected",last:"1h ago"}],config:`{
17
+ "mcpServers": {
18
+ "github": {
19
+ "command": "npx",
20
+ "args": ["-y", "@modelcontextprotocol/server-github"],
21
+ "env": { "GITHUB_TOKEN": "\${GITHUB_TOKEN}" }
22
+ }
23
+ }
24
+ }`},{id:"postgres",name:"postgres",scope:"project",icon:"database",color:"var(--node-test)",state:"running",version:"0.6.2",protocol:"2025-06-18",uptime:"4h 12m",transport:"stdio",command:"npx -y @modelcontextprotocol/server-postgres postgresql://localhost/specship",desc:"Read-only SQL access to the local SpecShip database for schema-aware queries.",tools:[{name:"query",icon:"database",color:"var(--node-test)",desc:"Run a read-only SQL query against the connected database and return rows.",params:[{name:"sql",type:"string",required:!0}],example:"query --sql 'select count(*) from nodes'",stat:{calls:27,tokens:64e3}}],usedBy:[{name:"Claude Code",host:"stdio \xB7 ~/dev/specship",state:"connected",last:"40m ago"}],config:`{
25
+ "mcpServers": {
26
+ "postgres": {
27
+ "command": "npx",
28
+ "args": ["-y", "@modelcontextprotocol/server-postgres",
29
+ "postgresql://localhost/specship"]
30
+ }
31
+ }
32
+ }`},{id:"sentry",name:"sentry",scope:"global",icon:"drift",color:"var(--error)",state:"error",version:"remote",protocol:"\u2014",uptime:"\u2014",transport:"http (sse)",command:"https://mcp.sentry.dev/sse",desc:"Pull issues and stack traces from Sentry. Connection is failing \u2014 the OAuth token has expired.",error:"401 Unauthorized \u2014 token expired. Re-authenticate to restore the connection.",tools:[],usedBy:[{name:"Claude Code",host:"http \xB7 remote",state:"idle",last:"failed 8m ago"}],config:`{
33
+ "mcpServers": {
34
+ "sentry": {
35
+ "type": "http",
36
+ "url": "https://mcp.sentry.dev/sse"
37
+ }
38
+ }
39
+ }`},{id:"playwright",name:"playwright",scope:"project",icon:"reveal",color:"var(--text-muted)",state:"disabled",version:"0.0.27",protocol:"\u2014",uptime:"\u2014",transport:"stdio",command:"npx -y @playwright/mcp",desc:"Drive a real browser for end-to-end checks. Disabled in this workspace \u2014 enable to expose its tools.",tools:[{name:"browser_navigate",icon:"external",color:"var(--text-muted)",desc:"Navigate the browser to a URL.",params:[{name:"url",type:"string",required:!0}],example:"browser_navigate --url http://localhost:3000",stat:{calls:0,tokens:0}},{name:"browser_snapshot",icon:"reveal",color:"var(--text-muted)",desc:"Capture an accessibility snapshot of the current page.",params:[],example:"browser_snapshot",stat:{calls:0,tokens:0}},{name:"browser_click",icon:"box",color:"var(--text-muted)",desc:"Click an element identified by its accessibility ref.",params:[{name:"ref",type:"string",required:!0}],example:"browser_click --ref button-submit",stat:{calls:0,tokens:0}}],usedBy:[],config:`{
40
+ "mcpServers": {
41
+ "playwright": {
42
+ "command": "npx",
43
+ "args": ["-y", "@playwright/mcp"],
44
+ "disabled": true
45
+ }
46
+ }
47
+ }`}]};var r={running:{color:"var(--success)",label:"Running",dot:!0},error:{color:"var(--error)",label:"Failed",dot:!0},disabled:{color:"var(--text-muted)",label:"Disabled",dot:!1}},s={global:{color:"var(--node-route)",label:"Global",hint:"~/.claude.json",icon:"database"},project:{color:"var(--accent)",label:"Project",hint:".mcp.json",icon:"folder"}},a={active:{color:"var(--success)",label:"Active"},connected:{color:"var(--node-spec)",label:"Connected"},idle:{color:"var(--text-muted)",label:"Idle"}};export{e as a,r as b,s as c,a as d};