@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,17 @@
1
+ import{a as j}from"./chunk-G7VZT5KB.js";import{a as G}from"./chunk-RSZZWGGC.js";import{c as V}from"./chunk-B3CWIVBW.js";import{a as H}from"./chunk-W22AVG3N.js";import{a as $}from"./chunk-4JYHAP7B.js";import{Aa as c,Ga as E,I as z,Ia as P,Ka as m,M as w,N as k,Ta as _,Ua as S,Va as l,W as T,Wa as p,X as A,Xa as y,aa as I,bb as R,ea as o,ka as B,lb as u,qa as M,ra as x,sa as v,ua as N,va as C,wa as h,xa as d,ya as i,yb as U,za as r,zb as K}from"./chunk-MFHO2F2U.js";import"./chunk-Q7L6LLAK.js";var J=()=>[1,2,3,4,5],Y=(n,t)=>t.key,F=(n,t)=>t.id;function X(n,t){n&1&&(i(0,"span",20),c(1,"span",33),l(2," Seed "),r())}function W(n,t){n&1&&(i(0,"span",21),c(1,"span",33),l(2," Live "),r())}function Z(n,t){if(n&1){let e=E();i(0,"div",24),c(1,"app-icon",34),i(2,"div",35)(3,"div",5),l(4,"Couldn't load memory"),r(),i(5,"div",36),l(6),r()(),i(7,"button",37),P("click",function(){w(e);let s=m();return k(s.reload())}),l(8,"Retry"),r()()}n&2&&(o(),d("size",16),o(5),p(t))}function ee(n,t){n&1&&(i(0,"div",25),c(1,"app-icon",38),i(2,"div",35)(3,"div",5),l(4,"No project selected"),r(),i(5,"div",36),l(6,"Pick a project from the top bar to see its CLAUDE.md hierarchy and saved notes."),r()()()),n&2&&(o(),d("size",16))}function te(n,t){n&1&&(i(0,"div",26),c(1,"app-icon",38),i(2,"div",35)(3,"div",5),l(4,"Showing example memory"),r(),i(5,"div",36),l(6,"The selected project has no CLAUDE.md or saved notes yet. The cards below illustrate what real data would look like."),r()()()),n&2&&(o(),d("size",16))}function ne(n,t){if(n&1&&c(0,"span",33),n&2){let e=m().$implicit;_("background",e.color)}}function oe(n,t){if(n&1&&(i(0,"span",41),l(1),r()),n&2){let e=m().$implicit;o(),p(e.count)}}function ie(n,t){if(n&1){let e=E();i(0,"button",39),P("click",function(){let s=w(e).$implicit,g=m();return k(g.onTypeFilter(s.key))}),x(1,ne,1,2,"span",40),l(2),x(3,oe,2,1,"span",41),r()}if(n&2){let e=t.$implicit,a=m();_("--chip-color",e.color)("--chip-bg",e.soft),S("active",a.typeFilter()===e.key),M("aria-pressed",a.typeFilter()===e.key),o(),v(e.key!=="all"?1:-1),o(),y(" ",e.label," "),o(),v(e.count!==void 0?3:-1)}}function re(n,t){if(n&1&&(i(0,"span",30),l(1),r()),n&2){let e=m();o(),p(e.typeDesc())}}function ae(n,t){n&1&&(i(0,"div",48),c(1,"div",49),i(2,"div",50),c(3,"div",51)(4,"div",52),r(),c(5,"div",53),r())}function le(n,t){n&1&&C(0,ae,6,0,"div",48,N),n&2&&h(R(0,J))}function ce(n,t){if(n&1){let e=E();i(0,"button",37),P("click",function(){w(e);let s=m(3);return k(s.clearFilter())}),l(1,"Show all types"),r()}}function de(n,t){if(n&1&&(i(0,"div",44)(1,"div",54),l(2,"Nothing here"),r(),i(3,"div"),l(4),r(),x(5,ce,2,0,"button",55),r()),n&2){let e=m(2);o(4),y("No ",e.filterEmptyNoun()," loaded for this project."),o(),v(e.typeFilter()!=="all"?5:-1)}}function se(n,t){n&1&&c(0,"app-icon",67),n&2&&d("size",10)}function pe(n,t){if(n&1){let e=E();i(0,"button",62),P("click",function(){let s=w(e).$implicit,g=m(4);return k(g.onSelectByObj(s))}),c(1,"span",63)(2,"app-icon",64),i(3,"span",65)(4,"span",66),l(5),x(6,se,1,1,"app-icon",67),r(),i(7,"span",68),l(8),r()(),i(9,"span",69),l(10),r()()}if(n&2){let e=t.$implicit,a=m(4);S("selected",a.selectedId()===e.id)("indent",a.isIndented(e)),M("aria-pressed",a.selectedId()===e.id)("aria-label",a.nameFor(e)+" \u2014 "+a.L[e.level].label),o(),_("background",a.L[e.level].color),o(),d("name",a.iconFor(e))("size",13),o(3),y(" ",a.nameFor(e)," "),o(),v(e.readOnly?6:-1),o(),d("title",a.shortPath(e)),o(),p(a.shortPath(e)),o(2),p(a.fmtK(e.tokens))}}function me(n,t){if(n&1&&(i(0,"div",56)(1,"div",57)(2,"span",58),l(3),r(),i(4,"span",59),l(5),r()(),i(6,"div",60),l(7),r(),C(8,pe,11,15,"button",61,F),r()),n&2){let e=t.$implicit,a=m(3);o(3),p(a.L[e.key].label),o(2),p(a.rowItems(e).length),o(2),p(a.L[e.key].desc),o(),h(a.rowItems(e))}}function ge(n,t){if(n&1&&C(0,me,10,3,"div",56,Y),n&2){let e=m(2);h(e.railGroups())}}function ue(n,t){n&1&&(i(0,"span",72),c(1,"app-icon",86),l(2," read-only"),r()),n&2&&(o(),d("size",10))}function xe(n,t){if(n&1&&(i(0,"div",77)(1,"div",12),l(2,"Saved in"),r(),i(3,"button",87),l(4),r()()),n&2){let e=m();o(3),M("aria-label","Jump to session "+e.session),o(),p(e.session)}}function ve(n,t){if(n&1&&(i(0,"span",88),l(1),r()),n&2){let e=t.$implicit;o(),y("#",e)}}function fe(n,t){if(n&1&&(i(0,"div",79),C(1,ve,2,1,"span",88,N),r()),n&2){let e=m();o(),h(e.tags)}}function _e(n,t){if(n&1&&(i(0,"div",90),c(1,"app-icon",91),i(2,"span",92),l(3),r(),i(4,"span",93),l(5),r()()),n&2){let e=t.$implicit,a=m(4);o(),d("size",12),o(),d("title",e.path),o(),p(e.path),o(2),p(a.fmtK(e.tokens))}}function ye(n,t){if(n&1&&(i(0,"div",81)(1,"div",58),l(2),r(),i(3,"div",89),C(4,_e,6,4,"div",90,F),r()()),n&2){let e=m(3);o(2),y("Imports \xB7 ",e.currentImports().length),o(2),h(e.currentImports())}}function be(n,t){if(n&1&&(i(0,"button",55),c(1,"app-icon",94),l(2),r()),n&2){let e=m();M("aria-label",(e.type==="note"?"Edit note":"Edit memory")+" "+e.path),o(),d("size",13),o(),y(" ",e.type==="note"?"Edit note":"Edit memory"," ")}}function Ce(n,t){if(n&1&&(i(0,"button",85),c(1,"app-icon",95),l(2," Forget "),r()),n&2){let e=m();M("aria-label","Forget note "+e.path),o(),d("size",13)}}function he(n,t){if(n&1&&(i(0,"div",46)(1,"div",70)(2,"span",71),c(3,"app-icon",64),l(4),r(),i(5,"span",71),l(6),r(),i(7,"span",30),l(8),r(),c(9,"span",19),x(10,ue,3,1,"span",72),r(),i(11,"div",73)(12,"span",74),l(13),r(),c(14,"app-copy-btn",75),r(),i(15,"div",76)(16,"div",77)(17,"div",12),l(18,"Tokens"),r(),i(19,"div",78),l(20),r()(),i(21,"div",77)(22,"div",12),l(23,"Lines"),r(),i(24,"div",78),l(25),r()(),i(26,"div",77)(27,"div",12),l(28,"Scope"),r(),i(29,"div",78),l(30),r()(),i(31,"div",77)(32,"div",12),l(33,"Modified"),r(),i(34,"div",78),l(35),r()(),x(36,xe,5,2,"div",77),r(),x(37,fe,3,0,"div",79),c(38,"div",80),x(39,ye,6,1,"div",81),i(40,"div",82),x(41,be,3,3,"button",55),i(42,"button",83),c(43,"app-icon",84),l(44," Copy contents "),r(),x(45,Ce,3,2,"button",85),r()()),n&2){let e=t,a=m(2);o(2),_("background",a.T[e.type].soft)("color",a.T[e.type].color),o(),d("name",a.T[e.type].icon)("size",10),o(),y(" ",a.T[e.type].label," "),o(),_("background",a.L[e.level].soft)("color",a.L[e.level].color),o(),p(a.L[e.level].label),o(2),p(a.L[e.level].desc),o(2),v(e.readOnly?10:-1),o(2),d("title",e.path),o(),p(e.path),o(),d("text",e.path),o(6),p(a.fmtK(e.tokens)),o(5),p(e.lines),o(5),p(a.L[e.level].label),o(5),p(e.modified),o(),v(e.type==="note"&&e.session?36:-1),o(),v(e.type==="note"&&(e.tags!=null&&e.tags.length)?37:-1),o(),d("innerHTML",a.currentBody(),I),o(),v(a.currentImports().length>0?39:-1),o(2),v(e.readOnly?-1:41),o(2),d("size",13),o(2),v(e.type==="note"?45:-1)}}function Me(n,t){n&1&&(i(0,"div",47),c(1,"app-icon",3),i(2,"div"),l(3,"Pick an item from the rail to see its contents."),r()()),n&2&&(o(),d("size",32))}function Pe(n,t){if(n&1&&(i(0,"div",31)(1,"div",42)(2,"div",43),x(3,le,2,1)(4,de,6,2,"div",44)(5,ge,2,0),r()(),i(6,"div",45),x(7,he,46,28,"div",46)(8,Me,4,1,"div",47),r()()),n&2){let e,a=m();o(3),v(a.loading()&&a.source()==="seed"?3:a.visibleCount()===0?4:5),o(4),v((e=a.current())?7:8,e)}}function Oe(n,t){n&1&&c(0,"app-icon",109),n&2&&d("size",11)}function we(n,t){if(n&1&&(i(0,"div",103),c(1,"div",104),i(2,"div",105)(3,"div",106)(4,"span",107),l(5),r(),i(6,"span",71),l(7),r(),i(8,"span",108),l(9),r(),c(10,"span",19),x(11,Oe,1,1,"app-icon",109),i(12,"span",110),l(13),r()(),c(14,"div",111),r()()),n&2){let e=t.$implicit,a=t.$index,s=m(3);o(),_("background",s.L[e.level].color),o(4),p(a+1),o(),_("background",s.L[e.level].soft)("color",s.L[e.level].color),o(),p(s.L[e.level].label),o(),d("title",e.path),o(),p(e.path),o(2),v(e.readOnly?11:-1),o(2),p(s.fmtK(e.tokens)),o(),d("innerHTML",s.renderBody(e.body),I)}}function ke(n,t){if(n&1&&(i(0,"div",101),l(1,"Instructions \xB7 precedence order"),r(),i(2,"div",102),C(3,we,15,13,"div",103,F),r()),n&2){let e=m(2);o(3),h(e.effectiveInstructions())}}function Ee(n,t){n&1&&(i(0,"div",100)(1,"div",54),l(2,"No instructions loaded"),r(),i(3,"div"),l(4,"This project has no CLAUDE.md hierarchy yet."),r()())}function Se(n,t){if(n&1&&(i(0,"div",103),c(1,"div",104),i(2,"div",105)(3,"div",106)(4,"span",71),l(5),r(),i(6,"span",108),l(7),r(),c(8,"span",19),i(9,"span",110),l(10),r()(),c(11,"div",111),r()()),n&2){let e=t.$implicit,a=m(3);o(),_("background",a.L[e.level].color),o(3),_("background",a.L[e.level].soft)("color",a.L[e.level].color),o(),p(a.L[e.level].label),o(),d("title",e.path),o(),p(e.path),o(3),p(a.fmtK(e.tokens)),o(),d("innerHTML",a.renderBody(e.body),I)}}function ze(n,t){if(n&1&&(i(0,"div",112)(1,"span"),l(2,"Notes \xB7 memory tool"),r(),i(3,"span",113),l(4,"retrieved facts, not precedence-ranked"),r()(),i(5,"div",102),C(6,Se,12,11,"div",103,F),r()),n&2){let e=m(2);o(6),h(e.effectiveNotes())}}function Te(n,t){if(n&1&&(i(0,"div",32)(1,"div",96),c(2,"app-icon",97),i(3,"span",98),l(4,"Effective memory"),r(),i(5,"span",30),l(6,"\xB7 everything the agent loads"),r()(),i(7,"div",99),l(8," Instructions merge in precedence order \u2014 managed policy is authoritative, and lower blocks fill in where higher ones are silent. Saved notes are appended as retrieved context. "),r(),x(9,ke,5,0)(10,Ee,5,0,"div",100),x(11,ze,8,0),r()),n&2){let e=m();o(2),d("size",15),o(7),v(e.effectiveInstructions().length>0?9:10),o(2),v(e.effectiveNotes().length>0?11:-1)}}var Q={enterprise:{key:"enterprise",label:"Managed",color:"#E5A50A",soft:"rgba(229,165,10,0.14)",desc:"Organization policy \xB7 cannot be overridden"},user:{key:"user",label:"User",color:"#29D2BE",soft:"rgba(41,210,190,0.14)",desc:"Personal \xB7 applies to every project"},project:{key:"project",label:"Project",color:"#5B93F2",soft:"rgba(91,147,242,0.14)",desc:"Team-shared \xB7 checked into the repo"},subdir:{key:"subdir",label:"Directory",color:"#A586F5",soft:"rgba(165,134,245,0.14)",desc:"Scoped to a subtree \xB7 loaded when cwd is inside"},import:{key:"import",label:"Import",color:"#7B8696",soft:"rgba(123,134,150,0.12)",desc:"Pulled in via @path reference"},note:{key:"note",label:"Notes",color:"#46C26B",soft:"rgba(70,194,107,0.14)",desc:"Agent-written \xB7 memory tool"}},f={instruction:{key:"instruction",label:"Instructions",color:"#5B93F2",soft:"rgba(91,147,242,0.14)",icon:"memory",desc:"Directives & rules from CLAUDE.md"},note:{key:"note",label:"Notes",color:"#46C26B",soft:"rgba(70,194,107,0.14)",icon:"tips",desc:"Facts the agent saved via the memory tool"},import:{key:"import",label:"Imports",color:"#29D2BE",soft:"rgba(41,210,190,0.14)",icon:"external",desc:"Files pulled in via @path"}},Ie=["enterprise","project","subdir","import","user"],Fe=[{id:"m-ent",level:"enterprise",type:"instruction",name:"CLAUDE.md",scope:"managed",readOnly:!0,path:"/Library/Application Support/ClaudeCode/CLAUDE.md",tokens:210,lines:9,modified:"managed",body:"# Engineering policy (managed)\n\n- All code must pass `pnpm lint` and `pnpm typecheck` before commit.\n- Never commit secrets, API keys, or `.env` files.\n- Prefer dependency-free solutions; new deps require review.\n- Validate all external input at trust boundaries.\n- Production logs must not contain user content."},{id:"m-user",level:"user",type:"instruction",name:"CLAUDE.md",scope:"~/.claude",path:"~/.claude/CLAUDE.md",tokens:280,lines:12,modified:"3d ago",body:"# Personal preferences\n\n- Before reading a file, try `specship_explore` for structure first.\n- Use conventional commits (`feat:`, `fix:`, `chore:`).\n- Prefer `rg` over `grep`, `fd` over `find`.\n- Keep responses terse \u2014 show diffs, not whole files.\n- Editor open command: `cursor`.\n- Default model for read/edit turns: Sonnet."},{id:"m-proj",level:"project",type:"instruction",name:"CLAUDE.md",scope:"project root",path:"~/dev/specship/CLAUDE.md",tokens:760,lines:28,modified:"2h ago",imports:["m-imp-conv","m-imp-style"],body:"# SpecShip \u2014 project memory\n\n## Architecture\n- Electron + Angular renderer in `packages/web-ng`.\n- MCP server in `src/mcp`, graph engine in `src/graph`.\n- SQLite via better-sqlite3; migrations in `src/db/migrations.ts`.\n\n## Commands\n- `npm run dev` \u2014 renderer + MCP in watch mode.\n- `npm test` \u2014 vitest; `npm run eval` \u2014 evaluation runner.\n- `npm run cli` \u2014 local SpecShip binary.\n\n## Conventions\n- Spec IDs are stable: `REQ-<AREA>-<NNN>`.\n- Never edit generated files under `src/graph/_gen`.\n\n@docs/conventions.md\n@specs/STYLE.md"},{id:"m-sub",level:"subdir",type:"instruction",name:"CLAUDE.md",scope:"src/graph",path:"~/dev/specship/src/graph/CLAUDE.md",tokens:190,lines:7,modified:"1d ago",body:`# Graph engine notes
2
+
3
+ - Layout runs in a worker \u2014 keep \`applyLayout\` pure.
4
+ - Node positions are cached by content hash.
5
+ - Above 5k nodes, cull to viewport + 1-hop (REQ-GRAPH-006).
6
+ - Synthesized edges are dashed; never persist them.`},{id:"m-imp-conv",level:"import",type:"import",name:"conventions.md",scope:"@import",path:"docs/conventions.md",tokens:120,lines:6,modified:"5d ago",body:"# Conventions\n\n- One component per file; co-locate styles.\n- Name event handlers `onX`; booleans `isX`/`hasX`.\n- No default exports in shared modules."},{id:"m-imp-style",level:"import",type:"import",name:"STYLE.md",scope:"@import",path:"specs/STYLE.md",tokens:100,lines:5,modified:"5d ago",body:`# Spec style
7
+
8
+ - Requirements use MUST / SHOULD / MAY.
9
+ - Each requirement gets one acceptance block.
10
+ - Keep titles under 8 words.`},{id:"n-build",level:"note",type:"note",name:"build-system.md",scope:"memory tool",path:"~/.claude/memory/build-system.md",tokens:64,lines:4,modified:"today 14:31",session:"a3f9c1d2",tags:["build","tooling"],body:"# Build system\n\n- Package manager is **npm**, never pnpm in this fork.\n- `npm run dev` runs renderer + MCP in watch mode.\n- Run `npm run build` after any schema change."},{id:"n-auth",level:"note",type:"note",name:"auth-jwt.md",scope:"memory tool",path:"~/.claude/memory/auth-jwt.md",tokens:58,lines:4,modified:"today 15:38",session:"a3f9c1d2",tags:["auth","REQ-AUTH-005"],body:"# Auth model\n\n- Session tokens are signed **JWTs**.\n- `checkExpiry` tolerates 30s clock skew (REQ-AUTH-005).\n- Expired tokens return 401 with `code: token_expired`."},{id:"n-graph",level:"note",type:"note",name:"graph-perf.md",scope:"memory tool",path:"~/.claude/memory/graph-perf.md",tokens:52,lines:4,modified:"yest 16:44",session:"f04a8b13",tags:["graph","perf"],body:`# Graph performance
11
+
12
+ - Above 5k nodes, layout culls to viewport + 1-hop.
13
+ - \`applyLayout\` must stay pure (runs in a worker).
14
+ - Node positions cached by content hash.`},{id:"n-cost",level:"note",type:"note",name:"cost-prefs.md",scope:"memory tool",path:"~/.claude/memory/cost-prefs.md",tokens:44,lines:3,modified:"Jun 4 09:20",session:"b5f2c8d9",tags:["cost","model"],body:`# Cost preferences
15
+
16
+ - Route read/edit-only turns to Sonnet.
17
+ - Pin a stable system-prompt prefix to keep the 1h cache warm.`}],q=class n{sanitizer=z(U);api=z($);projects=z(H);view=T("sources");typeFilter=T("all");selectedId=T("m-proj");L=Q;T=f;resource=V(this.api,()=>`/api/memory${this.projects.projectQuery()}`);files=u(()=>{let t=this.resource.state().data;return t?.files?.length?t.files:Fe});source=u(()=>this.resource.state().data?.files?.length?"api":"seed");loading=u(()=>this.resource.state().loading);errorMessage=u(()=>{let t=this.resource.state().error;return t?t.message:null});noProject=u(()=>this.resource.state().noProject);totalTokens=u(()=>this.files().reduce((t,e)=>t+e.tokens,0));instructionCount=u(()=>this.files().filter(t=>t.type==="instruction").length);noteCount=u(()=>this.files().filter(t=>t.type==="note").length);importCount=u(()=>this.files().filter(t=>t.type==="import").length);autoSelect=A(()=>{let t=this.files();if(t.length&&!t.find(e=>e.id===this.selectedId())){let e=t.find(a=>a.level==="project")??t[0];e&&this.selectedId.set(e.id)}});current=u(()=>this.files().find(t=>t.id===this.selectedId()));currentLevel=u(()=>{let t=this.current();return t?Q[t.level]:null});currentBody=u(()=>{let t=this.current();return this.sanitizer.bypassSecurityTrustHtml(t?j(t.body):"")});currentImports=u(()=>{let t=this.current();if(!t?.imports)return[];let e=this.files();return t.imports.map(a=>e.find(s=>s.id===a)).filter(a=>!!a)});typeDesc=u(()=>{let t=this.typeFilter();return t==="all"?"":f[t].desc});filterEmptyNoun=u(()=>{let t=this.typeFilter();return t==="all"?"memory files":f[t].label.toLowerCase()});typeChips=u(()=>[{key:"all",label:"All",color:"var(--text-secondary)",soft:"var(--bg-active)"},{key:"instruction",label:f.instruction.label,color:f.instruction.color,soft:f.instruction.soft,count:this.instructionCount()},{key:"note",label:f.note.label,color:f.note.color,soft:f.note.soft,count:this.noteCount()},{key:"import",label:f.import.label,color:f.import.color,soft:f.import.soft,count:this.importCount()}]);railGroups=u(()=>{let t=this.typeFilter(),e=this.files(),a=g=>t==="all"||g.type===t;return[{key:"enterprise",items:e.filter(g=>g.level==="enterprise")},{key:"user",items:e.filter(g=>g.level==="user")},{key:"project",items:e.filter(g=>g.level==="project"||g.level==="subdir")},{key:"note",items:e.filter(g=>g.level==="note")}].filter(g=>g.items.length>0).filter(g=>g.items.some(b=>a(b)||(b.imports??[]).some(L=>{let O=e.find(D=>D.id===L);return O?a(O):!1})))});visibleCount=u(()=>this.railGroups().reduce((e,a)=>e+this.rowItems(a).length,0));effectiveInstructions=u(()=>{let t=this.typeFilter(),e=this.files(),a=[];for(let s of Ie)for(let g of e)g.level===s&&a.push(g);return a.filter(s=>t==="all"||s.type===t)});effectiveNotes=u(()=>{let t=this.typeFilter();return this.files().filter(e=>e.type==="note"&&(t==="all"||t==="note"))});rowItems(t){let e=this.typeFilter(),a=this.files(),s=b=>e==="all"||b.type===e,g=[];for(let b of t.items)if(s(b)&&g.push(b),b.imports)for(let L of b.imports){let O=a.find(D=>D.id===L);O&&s(O)&&g.push(O)}return g}isIndented(t){return t.level==="import"}iconFor(t){return t.level==="import"?"external":t.level==="note"?"tips":"memory"}nameFor(t){return t.level==="import"||t.level==="note"?t.name:t.scope}shortPath(t){return t.path}fmtK(t){return t>=1e3?`${(t/1e3).toFixed(1)}k`:`${t}`}renderBody(t){return this.sanitizer.bypassSecurityTrustHtml(j(t))}onSelect(t){this.selectedId.set(t)}onViewChange(t){this.view.set(t)}onTypeFilter(t){this.typeFilter.set(t)}onSelectByObj(t){this.selectedId.set(t.id)}reload(){this.resource.refetch()}clearFilter(){this.typeFilter.set("all")}static \u0275fac=function(e){return new(e||n)};static \u0275cmp=B({type:n,selectors:[["app-memory"]],decls:60,vars:23,consts:[[1,"memory-page","col"],[1,"page-head"],[1,"row","gap-10"],["name","memory",3,"size"],[1,"col","gap-2","grow"],[1,"title"],[1,"sub"],["role","tablist","aria-label","Memory view",1,"seg"],["role","tab",1,"seg-btn",3,"click"],[1,"stat-strip","row","gap-10"],[1,"stat"],["name","memory",2,"color","var(--accent)",3,"size"],[1,"lbl"],[1,"val","mono"],["name","memory",2,"color","var(--node-spec)",3,"size"],[1,"stat","icon-tips"],["name","tips",3,"size"],[1,"stat","icon-import"],["name","external",3,"size"],[1,"grow"],["title","No /api/memory data \u2014 showing illustrative seed",1,"source-pill","seed"],["title","Live from /api/memory",1,"source-pill","ok"],["aria-label","Reload memory",1,"btn","btn-secondary","btn-sm",3,"click","disabled"],["name","refresh",3,"size"],["role","alert",1,"state-banner","error"],[1,"state-banner","no-project"],[1,"state-banner","seed"],[1,"filter-bar","row","gap-6"],["name","filter",2,"color","var(--text-muted)",3,"size"],[1,"chip",3,"active","--chip-color","--chip-bg"],[1,"secondary","xs"],[1,"split","row"],[1,"eff-scroll","scroll-y"],[1,"dot"],["name","warning",3,"size"],[1,"body"],[1,"desc"],[1,"btn","btn-secondary","btn-sm",3,"click"],["name","info",3,"size"],[1,"chip",3,"click"],[1,"dot",3,"background"],[1,"cnt","mono","tabular"],[1,"rail","col"],[1,"rail-scroll","scroll-y"],[1,"rail-empty"],[1,"detail","col"],[1,"detail-scroll","scroll-y"],[1,"detail-empty"],[1,"skeleton-row"],[1,"skeleton","skeleton-line"],[1,"col","gap-6","grow"],[1,"skeleton","skeleton-line",2,"width","60%"],[1,"skeleton","skeleton-line",2,"width","85%","height","8px"],[1,"skeleton","skeleton-line",2,"width","30px"],[1,"empty-title"],[1,"btn","btn-secondary","btn-sm"],[1,"rail-group"],[1,"rail-group-head"],[1,"eyebrow"],[1,"count","mono","tabular"],[1,"rail-group-desc"],[1,"src-row",3,"selected","indent"],[1,"src-row",3,"click"],[1,"pill-dot"],[3,"name","size"],[1,"src-text"],[1,"src-name"],["name","lock",2,"color","var(--warn)","margin-left","4px",3,"size"],[1,"src-path",3,"title"],[1,"src-tokens","mono","tabular"],[1,"row","gap-8","head-pills"],[1,"pill"],[1,"pill","warn"],[1,"path-row"],[1,"path",3,"title"],[3,"text"],[1,"kv-strip"],[1,"kv"],[1,"val","mono","tabular"],[1,"tags"],[1,"body-card","md-content",3,"innerHTML"],[1,"imports"],[1,"actions","row","gap-8"],["aria-label","Copy contents to clipboard",1,"btn","btn-secondary","btn-sm"],["name","copy",3,"size"],[1,"btn","btn-ghost","btn-sm","danger"],["name","lock",3,"size"],[1,"val","mono","session-link"],[1,"tag","mono"],[1,"col","gap-6"],[1,"import-row"],["name","external",2,"color","var(--node-route)",3,"size"],[1,"mono","grow",3,"title"],[1,"mono","tabular"],["name","reveal",3,"size"],["name","x",3,"size"],[1,"row","gap-8","eff-head"],["name","layers",2,"color","var(--accent)",3,"size"],[1,"eff-title"],[1,"eff-desc"],[1,"rail-empty",2,"margin","0"],[1,"eff-section-head"],[1,"col","gap-10"],[1,"eff-block"],[1,"bar"],[1,"body","col"],[1,"row","gap-8","head"],[1,"ord","mono","tabular"],[1,"path","mono",3,"title"],["name","lock",2,"color","var(--warn)",3,"size"],[1,"mono","tabular","muted"],[1,"md","md-content",3,"innerHTML"],[1,"row","gap-6","eff-section-head","notes-head"],[1,"muted","xs"]],template:function(e,a){if(e&1&&(i(0,"div",0)(1,"div",1)(2,"div",2),c(3,"app-icon",3),i(4,"div",4)(5,"div",5),l(6,"Memory"),r(),i(7,"div",6),l(8,"Everything the agent remembers \u2014 across levels and types"),r()(),i(9,"div",7)(10,"button",8),P("click",function(){return a.onViewChange("sources")}),l(11,"Sources"),r(),i(12,"button",8),P("click",function(){return a.onViewChange("effective")}),l(13,"Effective"),r()()()(),i(14,"div",9)(15,"div",10),c(16,"app-icon",11),i(17,"div")(18,"div",12),l(19,"Loaded"),r(),i(20,"div",13),l(21),r()()(),i(22,"div",10),c(23,"app-icon",14),i(24,"div")(25,"div",12),l(26,"Instructions"),r(),i(27,"div",13),l(28),r()()(),i(29,"div",15),c(30,"app-icon",16),i(31,"div")(32,"div",12),l(33,"Notes"),r(),i(34,"div",13),l(35),r()()(),i(36,"div",17),c(37,"app-icon",18),i(38,"div")(39,"div",12),l(40,"Imports"),r(),i(41,"div",13),l(42),r()()(),c(43,"span",19),x(44,X,3,0,"span",20)(45,W,3,0,"span",21),i(46,"button",22),P("click",function(){return a.reload()}),c(47,"app-icon",23),l(48),r()(),x(49,Z,9,2,"div",24)(50,ee,7,1,"div",25)(51,te,7,1,"div",26),i(52,"div",27),c(53,"app-icon",28),C(54,ie,4,10,"button",29,Y),c(56,"span",19),x(57,re,2,1,"span",30),r(),x(58,Pe,9,2,"div",31)(59,Te,12,3,"div",32),r()),e&2){let s;o(3),d("size",18),o(7),S("active",a.view()==="sources"),M("aria-pressed",a.view()==="sources"),o(2),S("active",a.view()==="effective"),M("aria-pressed",a.view()==="effective"),o(4),d("size",14),o(5),y("",a.fmtK(a.totalTokens())," tokens"),o(2),d("size",14),o(5),p(a.instructionCount()),o(2),d("size",14),o(5),p(a.noteCount()),o(2),d("size",14),o(5),p(a.importCount()),o(2),v(a.source()==="seed"?44:45),o(2),d("disabled",a.loading()),o(),d("size",13),o(),y(" ",a.loading()?"Loading\u2026":"Reload"," "),o(),v((s=a.errorMessage())?49:a.noProject()?50:a.source()==="seed"&&!a.loading()?51:-1,s),o(4),d("size",13),o(),h(a.typeChips()),o(3),v(a.typeFilter()!=="all"?57:-1),o(),v(a.view()==="sources"?58:59)}},dependencies:[K,G],styles:['@charset "UTF-8";[_nghost-%COMP%]{display:flex;flex-direction:column;flex:1;min-height:0}.memory-page[_ngcontent-%COMP%]{display:flex;flex-direction:column;flex:1;min-height:0;min-width:0;overflow:hidden}.xs[_ngcontent-%COMP%]{font-size:11px}.muted[_ngcontent-%COMP%]{color:var(--text-muted)}.secondary[_ngcontent-%COMP%]{color:var(--text-secondary)}.grow[_ngcontent-%COMP%]{flex:1}.eyebrow[_ngcontent-%COMP%]{color:var(--text-muted);font-size:10.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase}.page-head[_ngcontent-%COMP%]{flex-shrink:0;padding:16px 18px 4px}.page-head[_ngcontent-%COMP%] .title[_ngcontent-%COMP%]{font-size:16px;font-weight:650;letter-spacing:-.01em}.page-head[_ngcontent-%COMP%] .sub[_ngcontent-%COMP%]{color:var(--text-secondary);font-size:12px}.seg[_ngcontent-%COMP%]{display:inline-flex;gap:2px;padding:3px;border:1px solid var(--border-subtle);border-radius:8px;background:var(--bg-panel)}.seg-btn[_ngcontent-%COMP%]{background:transparent;border:0;padding:4px 11px;height:24px;border-radius:5px;color:var(--text-muted);font-family:var(--font-ui);font-size:12px;font-weight:500;cursor:pointer;transition:background .12s,color .12s}.seg-btn[_ngcontent-%COMP%]:hover{color:var(--text-secondary)}.seg-btn[_ngcontent-%COMP%]:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.seg-btn.active[_ngcontent-%COMP%]{background:var(--bg-active);color:var(--text-primary)}.stat-strip[_ngcontent-%COMP%]{display:flex;flex-direction:row;align-items:center;flex-wrap:wrap;flex-shrink:0;padding:12px 18px}.stat[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:8px;padding:8px 12px;background:var(--bg-panel);border:1px solid var(--border-subtle);border-radius:9px;color:var(--accent)}.stat[_ngcontent-%COMP%] .lbl[_ngcontent-%COMP%]{color:var(--text-muted);font-size:10px;line-height:1.2;text-transform:uppercase;letter-spacing:.04em}.stat[_ngcontent-%COMP%] .val[_ngcontent-%COMP%]{font-size:13px;font-weight:600;color:var(--text-primary);margin-top:1px;white-space:nowrap}.stat.icon-tips[_ngcontent-%COMP%] app-icon[_ngcontent-%COMP%]{color:var(--node-test)}.stat.icon-import[_ngcontent-%COMP%] app-icon[_ngcontent-%COMP%]{color:var(--node-route)}.source-pill[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border-radius:999px;font-size:11px;font-weight:600;white-space:nowrap}.source-pill[_ngcontent-%COMP%] .dot[_ngcontent-%COMP%]{width:7px;height:7px;border-radius:50%}.source-pill.ok[_ngcontent-%COMP%]{color:var(--success);background:var(--success-soft)}.source-pill.ok[_ngcontent-%COMP%] .dot[_ngcontent-%COMP%]{background:var(--success)}.source-pill.seed[_ngcontent-%COMP%]{color:var(--warn);background:var(--warn-soft)}.source-pill.seed[_ngcontent-%COMP%] .dot[_ngcontent-%COMP%]{background:var(--warn)}.filter-bar[_ngcontent-%COMP%]{display:flex;flex-direction:row;align-items:center;flex-wrap:wrap;flex-shrink:0;padding:0 18px 14px}.chip[_ngcontent-%COMP%]{height:26px;padding:0 11px;border-radius:999px;border:1px solid var(--border-subtle);background:var(--bg-panel);color:var(--text-muted);font-family:var(--font-ui);font-size:11.5px;font-weight:500;cursor:pointer;display:inline-flex;align-items:center;gap:6px;transition:background .12s,color .12s,border-color .12s}.chip[_ngcontent-%COMP%]:hover{border-color:var(--border-strong);color:var(--text-secondary)}.chip[_ngcontent-%COMP%]:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.chip.active[_ngcontent-%COMP%]{border-color:transparent;background:var(--chip-bg);color:var(--chip-color)}.chip[_ngcontent-%COMP%] .dot[_ngcontent-%COMP%]{width:7px;height:7px;border-radius:50%}.chip[_ngcontent-%COMP%] .cnt[_ngcontent-%COMP%]{opacity:.7;font-size:11px}.state-banner[_ngcontent-%COMP%]{flex-shrink:0;margin:0 18px 14px;padding:10px 14px;border-radius:8px;border:1px solid;font-size:12.5px;line-height:1.5;display:flex;align-items:flex-start;gap:10px}.state-banner[_ngcontent-%COMP%] .body[_ngcontent-%COMP%]{flex:1;min-width:0}.state-banner[_ngcontent-%COMP%] .title[_ngcontent-%COMP%]{font-weight:600;font-size:12.5px}.state-banner[_ngcontent-%COMP%] .desc[_ngcontent-%COMP%]{color:var(--text-secondary);font-size:12px;margin-top:1px}.state-banner[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{white-space:nowrap}.state-banner.seed[_ngcontent-%COMP%]{background:var(--warn-soft);border-color:#e5a50a59;color:var(--warn)}.state-banner.error[_ngcontent-%COMP%]{background:var(--error-soft);border-color:#ff5a5a59;color:var(--error)}.state-banner.no-project[_ngcontent-%COMP%]{background:var(--bg-panel);border-color:var(--border-subtle);color:var(--text-secondary)}.state-banner.no-project[_ngcontent-%COMP%] .title[_ngcontent-%COMP%]{color:var(--text-primary)}.split[_ngcontent-%COMP%]{display:flex;flex-direction:row;align-items:stretch;flex:1;min-height:0;min-width:0;border-top:1px solid var(--border-subtle)}.rail[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:320px;flex-shrink:0;min-width:0;min-height:0;overflow:hidden;border-right:1px solid var(--border-subtle);background:var(--bg-panel)}.rail-scroll[_ngcontent-%COMP%]{flex:1;min-height:0;padding:10px 8px 16px;overflow-y:auto;overflow-x:hidden}.rail-group[_ngcontent-%COMP%]{margin-bottom:14px}.rail-group-head[_ngcontent-%COMP%]{padding:8px 10px 4px;display:flex;align-items:baseline;justify-content:space-between;gap:8px}.rail-group-head[_ngcontent-%COMP%] .count[_ngcontent-%COMP%]{font-size:10.5px;color:var(--text-faint)}.rail-group-desc[_ngcontent-%COMP%]{padding:0 10px 6px;color:var(--text-faint);font-size:10.5px;line-height:1.45}.src-row[_ngcontent-%COMP%]{appearance:none;background:transparent;border:0;width:100%;text-align:left;cursor:pointer;color:inherit;display:grid;grid-template-columns:8px 14px 1fr auto;align-items:center;column-gap:10px;padding:8px 10px;border-radius:7px;min-width:0;transition:background .12s}.src-row.indent[_ngcontent-%COMP%]{padding-left:26px}.src-row[_ngcontent-%COMP%]:hover{background:var(--bg-hover)}.src-row[_ngcontent-%COMP%]:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.src-row.selected[_ngcontent-%COMP%]{background:var(--accent-soft)}.src-row.selected[_ngcontent-%COMP%] app-icon[_ngcontent-%COMP%]{color:var(--accent)}.src-row.selected[_ngcontent-%COMP%] .src-name[_ngcontent-%COMP%]{color:var(--accent)}.src-row[_ngcontent-%COMP%] app-icon[_ngcontent-%COMP%]{color:var(--text-muted);flex-shrink:0}.src-row[_ngcontent-%COMP%] .src-text[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:2px;min-width:0}.src-name[_ngcontent-%COMP%]{font-size:12px;color:var(--text-primary);font-family:var(--font-mono);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.src-path[_ngcontent-%COMP%]{font-size:10.5px;color:var(--text-muted);font-family:var(--font-mono);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;direction:rtl;text-align:left;unicode-bidi:plaintext}.src-tokens[_ngcontent-%COMP%]{font-size:10.5px;flex-shrink:0;color:var(--text-muted)}.pill-dot[_ngcontent-%COMP%]{width:6px;height:6px;border-radius:50%;flex-shrink:0}.rail-empty[_ngcontent-%COMP%]{margin:12px 10px;padding:16px 14px;border:1px dashed var(--border-subtle);border-radius:8px;text-align:center;color:var(--text-secondary);font-size:12px}.rail-empty[_ngcontent-%COMP%] .empty-title[_ngcontent-%COMP%]{color:var(--text-primary);font-weight:600;font-size:12.5px;margin-bottom:4px}.rail-empty[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{margin-top:8px}.detail[_ngcontent-%COMP%]{display:flex;flex-direction:column;flex:1;min-width:0;min-height:0}.detail-scroll[_ngcontent-%COMP%]{flex:1;min-height:0;padding:20px 24px;overflow-y:auto}.detail-empty[_ngcontent-%COMP%]{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--text-secondary);gap:6px;font-size:13px}.detail-empty[_ngcontent-%COMP%] app-icon[_ngcontent-%COMP%]{color:var(--text-faint)}.head-pills[_ngcontent-%COMP%]{margin-bottom:8px;flex-wrap:wrap;align-items:center;row-gap:6px}.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}.pill.warn[_ngcontent-%COMP%]{color:var(--warn);background:var(--warn-soft)}.pill.ok[_ngcontent-%COMP%]{color:var(--success);background:var(--success-soft)}.path-row[_ngcontent-%COMP%]{margin-bottom:14px;display:flex;align-items:center;gap:8px;min-width:0}.path[_ngcontent-%COMP%]{font-size:13.5px;font-weight:600;color:var(--text-primary);font-family:var(--font-mono);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;direction:rtl;text-align:left;unicode-bidi:plaintext}.kv-strip[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:12px 24px;padding:12px 0;border-top:1px solid var(--border-subtle);border-bottom:1px solid var(--border-subtle);margin-bottom:18px}.kv[_ngcontent-%COMP%] .lbl[_ngcontent-%COMP%]{color:var(--text-muted);font-size:10.5px;text-transform:uppercase;letter-spacing:.04em;font-weight:600}.kv[_ngcontent-%COMP%] .val[_ngcontent-%COMP%]{font-size:13px;font-weight:600;color:var(--text-primary);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.session-link[_ngcontent-%COMP%]{background:none;border:0;padding:0;cursor:pointer;color:var(--accent);font-family:var(--font-mono);font-size:13px;font-weight:600}.session-link[_ngcontent-%COMP%]:hover{text-decoration:underline}.session-link[_ngcontent-%COMP%]:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:2px}.tags[_ngcontent-%COMP%]{margin-bottom:14px;flex-wrap:wrap;gap:6px;display:flex}.tag[_ngcontent-%COMP%]{font-size:10.5px;color:var(--node-test);background:var(--node-test-soft);padding:2px 8px;border-radius:5px;white-space:nowrap;font-family:var(--font-mono)}.body-card[_ngcontent-%COMP%]{background:var(--bg-panel);border:1px solid var(--border-subtle);border-radius:10px;padding:18px 22px;margin-bottom:18px}.imports[_ngcontent-%COMP%]{margin-bottom:18px}.imports[_ngcontent-%COMP%] .eyebrow[_ngcontent-%COMP%]{margin-bottom:8px}.import-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;padding:8px 12px;border-radius:7px;border:1px solid var(--border-subtle);font-size:11.5px;min-width:0}.import-row[_ngcontent-%COMP%] .mono[_ngcontent-%COMP%]{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.import-row[_ngcontent-%COMP%] .mono.tabular[_ngcontent-%COMP%]{font-size:10.5px;color:var(--text-muted)}.actions[_ngcontent-%COMP%]{margin-top:18px;flex-wrap:wrap}.btn-ghost.danger[_ngcontent-%COMP%]{color:var(--error)}.btn-ghost.danger[_ngcontent-%COMP%]:hover{background:var(--error-soft)}.eff-scroll[_ngcontent-%COMP%]{flex:1;min-height:0;padding:20px 24px;overflow-y:auto}.eff-head[_ngcontent-%COMP%]{margin-bottom:6px;align-items:center}.eff-title[_ngcontent-%COMP%]{font-weight:600;font-size:14px}.eff-desc[_ngcontent-%COMP%]{font-size:12.5px;line-height:1.55;margin-bottom:18px;color:var(--text-secondary)}.eff-section-head[_ngcontent-%COMP%]{margin-bottom:10px;color:var(--text-muted);font-size:10.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase}.notes-head[_ngcontent-%COMP%]{margin-top:22px;align-items:baseline}.eff-block[_ngcontent-%COMP%]{display:flex;overflow:hidden;border:1px solid var(--border-subtle);border-radius:10px;background:var(--bg-panel)}.eff-block[_ngcontent-%COMP%] .bar[_ngcontent-%COMP%]{width:4px;flex-shrink:0}.eff-block[_ngcontent-%COMP%] .body[_ngcontent-%COMP%]{flex:1;min-width:0;padding:14px 16px}.eff-block[_ngcontent-%COMP%] .head[_ngcontent-%COMP%]{margin-bottom:10px;align-items:center;row-gap:6px}.eff-block[_ngcontent-%COMP%] .ord[_ngcontent-%COMP%]{font-size:10.5px;color:var(--text-muted);width:18px;text-align:center;background:var(--bg-canvas);border-radius:4px;padding:1px 0}.eff-block[_ngcontent-%COMP%] .head[_ngcontent-%COMP%] .path[_ngcontent-%COMP%]{font-size:11.5px;color:var(--text-secondary);font-weight:400;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.eff-block[_ngcontent-%COMP%] .md[_ngcontent-%COMP%]{padding-left:24px}.md-content[_ngcontent-%COMP%] .md-h1[_ngcontent-%COMP%]{font-size:15px;font-weight:650;color:var(--text-primary);letter-spacing:-.01em;margin:0 0 10px}.md-content[_ngcontent-%COMP%] .md-h2[_ngcontent-%COMP%]{font-size:13px;font-weight:650;color:var(--text-primary);letter-spacing:-.005em;margin:18px 0 6px;padding-bottom:4px;border-bottom:1px solid var(--border-subtle)}.md-content[_ngcontent-%COMP%] .md-h3[_ngcontent-%COMP%]{font-size:12px;font-weight:650;color:var(--text-primary);margin:14px 0 6px}.md-content[_ngcontent-%COMP%] .md-h4[_ngcontent-%COMP%]{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin:12px 0 4px}.md-content[_ngcontent-%COMP%] .md-p[_ngcontent-%COMP%]{font-size:12.5px;line-height:1.6;color:var(--text-secondary);margin:0 0 4px;overflow-wrap:anywhere}.md-content[_ngcontent-%COMP%] .md-p[_ngcontent-%COMP%] strong[_ngcontent-%COMP%]{color:var(--text-primary)}.md-content[_ngcontent-%COMP%] .md-list[_ngcontent-%COMP%], .md-content[_ngcontent-%COMP%] .md-ol[_ngcontent-%COMP%]{padding:0;margin:4px 0 6px}.md-content[_ngcontent-%COMP%] .md-list[_ngcontent-%COMP%] li[_ngcontent-%COMP%], .md-content[_ngcontent-%COMP%] .md-ol[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{position:relative;padding:2px 0 2px 22px;font-size:12.5px;line-height:1.6;color:var(--text-secondary);overflow-wrap:anywhere}.md-content[_ngcontent-%COMP%] .md-list[_ngcontent-%COMP%] li[_ngcontent-%COMP%] strong[_ngcontent-%COMP%], .md-content[_ngcontent-%COMP%] .md-ol[_ngcontent-%COMP%] li[_ngcontent-%COMP%] strong[_ngcontent-%COMP%]{color:var(--text-primary)}.md-content[_ngcontent-%COMP%] .md-list[_ngcontent-%COMP%]{list-style:none}.md-content[_ngcontent-%COMP%] .md-list[_ngcontent-%COMP%] li[_ngcontent-%COMP%]:before{content:"\\2022";position:absolute;left:6px;top:2px;color:var(--text-faint)}.md-content[_ngcontent-%COMP%] .md-ol[_ngcontent-%COMP%]{list-style:none;counter-reset:md-ol}.md-content[_ngcontent-%COMP%] .md-ol[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{counter-increment:md-ol}.md-content[_ngcontent-%COMP%] .md-ol[_ngcontent-%COMP%] li[_ngcontent-%COMP%]:before{content:counter(md-ol) ".";position:absolute;left:0;top:2px;color:var(--text-faint);font-family:var(--font-mono);font-size:11.5px;min-width:18px;text-align:right}.md-content[_ngcontent-%COMP%] .md-spacer[_ngcontent-%COMP%]{height:6px}.md-content[_ngcontent-%COMP%] .md-import[_ngcontent-%COMP%]{display:inline-block;font-size:11.5px;color:var(--node-route);background:var(--node-route-soft);padding:2px 8px;border-radius:5px;margin:4px 0}.md-content[_ngcontent-%COMP%] .md-inline-code[_ngcontent-%COMP%]{font-size:11.5px;background:var(--bg-canvas);padding:1px 6px;border-radius:4px;border:1px solid var(--border-subtle);color:var(--node-spec)}.md-content[_ngcontent-%COMP%] .md-blockquote[_ngcontent-%COMP%]{margin:6px 0;padding:8px 12px;border-left:3px solid var(--accent);background:var(--accent-soft);color:var(--text-secondary);font-size:12.5px;line-height:1.55;border-radius:0 6px 6px 0}.md-content[_ngcontent-%COMP%] .md-pre[_ngcontent-%COMP%]{position:relative;margin:8px 0 10px;padding:12px 14px;background:var(--bg-canvas);border:1px solid var(--border-subtle);border-radius:8px;overflow-x:auto;max-width:100%}.md-content[_ngcontent-%COMP%] .md-pre[_ngcontent-%COMP%] code[_ngcontent-%COMP%]{display:block;font-size:11.5px;line-height:1.55;color:var(--text-primary);white-space:pre}.md-content[_ngcontent-%COMP%] .md-pre-lang[_ngcontent-%COMP%]{position:absolute;top:6px;right:10px;font-size:10px;font-weight:600;color:var(--text-muted);text-transform:lowercase;background:var(--bg-panel);padding:1px 6px;border-radius:4px;border:1px solid var(--border-subtle)}.md-content[_ngcontent-%COMP%] .md-table-scroll[_ngcontent-%COMP%]{max-width:100%;overflow-x:auto;margin:10px 0;border:1px solid var(--border-subtle);border-radius:8px}.md-content[_ngcontent-%COMP%] .md-table[_ngcontent-%COMP%]{width:100%;border-collapse:collapse;font-size:11.5px}.md-content[_ngcontent-%COMP%] .md-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%], .md-content[_ngcontent-%COMP%] .md-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding:8px 12px;text-align:left;vertical-align:top;border-bottom:1px solid var(--border-subtle)}.md-content[_ngcontent-%COMP%] .md-table[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] th[_ngcontent-%COMP%]{background:var(--bg-panel);font-weight:650;color:var(--text-primary);font-size:10.5px;text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid var(--border-strong);white-space:nowrap}.md-content[_ngcontent-%COMP%] .md-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{color:var(--text-secondary)}.md-content[_ngcontent-%COMP%] .md-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:last-child td[_ngcontent-%COMP%]{border-bottom:0}.md-content[_ngcontent-%COMP%] .md-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover{background:var(--bg-hover)}.md-content[_ngcontent-%COMP%] > [_ngcontent-%COMP%]:first-child{margin-top:0}.skeleton[_ngcontent-%COMP%]{background:var(--bg-panel);border-radius:6px;animation:_ngcontent-%COMP%_pulse 1.4s ease-in-out infinite}.skeleton-row[_ngcontent-%COMP%]{display:grid;grid-template-columns:14px 1fr auto;gap:10px;padding:10px}.skeleton-line[_ngcontent-%COMP%]{height:10px;border-radius:4px}@keyframes _ngcontent-%COMP%_pulse{0%,to{opacity:.55}50%{opacity:.85}}'],changeDetection:0})};export{q as Memory};
@@ -0,0 +1 @@
1
+ import"./chunk-Q7L6LLAK.js";var e={comments:{lineComment:"#",blockComment:["=begin","=end"]},brackets:[["(",")"],["{","}"],["[","]"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],indentationRules:{increaseIndentPattern:new RegExp(`^\\s*((begin|class|(private|protected)\\s+def|def|else|elsif|ensure|for|if|module|rescue|unless|until|when|while|case)|([^#]*\\sdo\\b)|([^#]*=\\s*(case|if|unless)))\\b([^#\\{;]|("|'|/).*\\4)*(#.*)?$`),decreaseIndentPattern:new RegExp("^\\s*([}\\]]([,)]?\\s*(#|$)|\\.[a-zA-Z_]\\w*\\b)|(end|rescue|ensure|else|elsif|when)\\b)")}},t={tokenPostfix:".ruby",keywords:["__LINE__","__ENCODING__","__FILE__","BEGIN","END","alias","and","begin","break","case","class","def","defined?","do","else","elsif","end","ensure","for","false","if","in","module","next","nil","not","or","redo","rescue","retry","return","self","super","then","true","undef","unless","until","when","while","yield"],keywordops:["::","..","...","?",":","=>"],builtins:["require","public","private","include","extend","attr_reader","protected","private_class_method","protected_class_method","new"],declarations:["module","class","def","case","do","begin","for","if","while","until","unless"],linedecls:["def","case","do","begin","for","if","while","until","unless"],operators:["^","&","|","<=>","==","===","!~","=~",">",">=","<","<=","<<",">>","+","-","*","/","%","**","~","+@","-@","[]","[]=","`","+=","-=","*=","**=","/=","^=","%=","<<=",">>=","&=","&&=","||=","|="],brackets:[{open:"(",close:")",token:"delimiter.parenthesis"},{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.square"}],symbols:/[=><!~?:&|+\-*\/\^%\.]+/,escape:/(?:[abefnrstv\\"'\n\r]|[0-7]{1,3}|x[0-9A-Fa-f]{1,2}|u[0-9A-Fa-f]{4})/,escapes:/\\(?:C\-(@escape|.)|c(@escape|.)|@escape)/,decpart:/\d(_?\d)*/,decimal:/0|@decpart/,delim:/[^a-zA-Z0-9\s\n\r]/,heredelim:/(?:\w+|'[^']*'|"[^"]*"|`[^`]*`)/,regexpctl:/[(){}\[\]\$\^|\-*+?\.]/,regexpesc:/\\(?:[AzZbBdDfnrstvwWn0\\\/]|@regexpctl|c[A-Z]|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4})?/,tokenizer:{root:[[/^(\s*)([a-z_]\w*[!?=]?)/,["white",{cases:{"for|until|while":{token:"keyword.$2",next:"@dodecl.$2"},"@declarations":{token:"keyword.$2",next:"@root.$2"},end:{token:"keyword.$S2",next:"@pop"},"@keywords":"keyword","@builtins":"predefined","@default":"identifier"}}]],[/[a-z_]\w*[!?=]?/,{cases:{"if|unless|while|until":{token:"keyword.$0x",next:"@modifier.$0x"},for:{token:"keyword.$2",next:"@dodecl.$2"},"@linedecls":{token:"keyword.$0",next:"@root.$0"},end:{token:"keyword.$S2",next:"@pop"},"@keywords":"keyword","@builtins":"predefined","@default":"identifier"}}],[/[A-Z][\w]*[!?=]?/,"constructor.identifier"],[/\$[\w]*/,"global.constant"],[/@[\w]*/,"namespace.instance.identifier"],[/@@@[\w]*/,"namespace.class.identifier"],[/<<[-~](@heredelim).*/,{token:"string.heredoc.delimiter",next:"@heredoc.$1"}],[/[ \t\r\n]+<<(@heredelim).*/,{token:"string.heredoc.delimiter",next:"@heredoc.$1"}],[/^<<(@heredelim).*/,{token:"string.heredoc.delimiter",next:"@heredoc.$1"}],{include:"@whitespace"},[/"/,{token:"string.d.delim",next:'@dstring.d."'}],[/'/,{token:"string.sq.delim",next:"@sstring.sq"}],[/%([rsqxwW]|Q?)/,{token:"@rematch",next:"pstring"}],[/`/,{token:"string.x.delim",next:"@dstring.x.`"}],[/:(\w|[$@])\w*[!?=]?/,"string.s"],[/:"/,{token:"string.s.delim",next:'@dstring.s."'}],[/:'/,{token:"string.s.delim",next:"@sstring.s"}],[/\/(?=(\\\/|[^\/\n])+\/)/,{token:"regexp.delim",next:"@regexp"}],[/[{}()\[\]]/,"@brackets"],[/@symbols/,{cases:{"@keywordops":"keyword","@operators":"operator","@default":""}}],[/[;,]/,"delimiter"],[/0[xX][0-9a-fA-F](_?[0-9a-fA-F])*/,"number.hex"],[/0[_oO][0-7](_?[0-7])*/,"number.octal"],[/0[bB][01](_?[01])*/,"number.binary"],[/0[dD]@decpart/,"number"],[/@decimal((\.@decpart)?([eE][\-+]?@decpart)?)/,{cases:{$1:"number.float","@default":"number"}}]],dodecl:[[/^/,{token:"",switchTo:"@root.$S2"}],[/[a-z_]\w*[!?=]?/,{cases:{end:{token:"keyword.$S2",next:"@pop"},do:{token:"keyword",switchTo:"@root.$S2"},"@linedecls":{token:"@rematch",switchTo:"@root.$S2"},"@keywords":"keyword","@builtins":"predefined","@default":"identifier"}}],{include:"@root"}],modifier:[[/^/,"","@pop"],[/[a-z_]\w*[!?=]?/,{cases:{end:{token:"keyword.$S2",next:"@pop"},"then|else|elsif|do":{token:"keyword",switchTo:"@root.$S2"},"@linedecls":{token:"@rematch",switchTo:"@root.$S2"},"@keywords":"keyword","@builtins":"predefined","@default":"identifier"}}],{include:"@root"}],sstring:[[/[^\\']+/,"string.$S2"],[/\\\\|\\'|\\$/,"string.$S2.escape"],[/\\./,"string.$S2.invalid"],[/'/,{token:"string.$S2.delim",next:"@pop"}]],dstring:[[/[^\\`"#]+/,"string.$S2"],[/#/,"string.$S2.escape","@interpolated"],[/\\$/,"string.$S2.escape"],[/@escapes/,"string.$S2.escape"],[/\\./,"string.$S2.escape.invalid"],[/[`"]/,{cases:{"$#==$S3":{token:"string.$S2.delim",next:"@pop"},"@default":"string.$S2"}}]],heredoc:[[/^(\s*)(@heredelim)$/,{cases:{"$2==$S2":["string.heredoc",{token:"string.heredoc.delimiter",next:"@pop"}],"@default":["string.heredoc","string.heredoc"]}}],[/.*/,"string.heredoc"]],interpolated:[[/\$\w*/,"global.constant","@pop"],[/@\w*/,"namespace.class.identifier","@pop"],[/@@@\w*/,"namespace.instance.identifier","@pop"],[/[{]/,{token:"string.escape.curly",switchTo:"@interpolated_compound"}],["","","@pop"]],interpolated_compound:[[/[}]/,{token:"string.escape.curly",next:"@pop"}],{include:"@root"}],pregexp:[{include:"@whitespace"},[/[^\(\{\[\\]/,{cases:{"$#==$S3":{token:"regexp.delim",next:"@pop"},"$#==$S2":{token:"regexp.delim",next:"@push"},"~[)}\\]]":"@brackets.regexp.escape.control","~@regexpctl":"regexp.escape.control","@default":"regexp"}}],{include:"@regexcontrol"}],regexp:[{include:"@regexcontrol"},[/[^\\\/]/,"regexp"],["/[ixmp]*",{token:"regexp.delim"},"@pop"]],regexcontrol:[[/(\{)(\d+(?:,\d*)?)(\})/,["@brackets.regexp.escape.control","regexp.escape.control","@brackets.regexp.escape.control"]],[/(\[)(\^?)/,["@brackets.regexp.escape.control",{token:"regexp.escape.control",next:"@regexrange"}]],[/(\()(\?[:=!])/,["@brackets.regexp.escape.control","regexp.escape.control"]],[/\(\?#/,{token:"regexp.escape.control",next:"@regexpcomment"}],[/[()]/,"@brackets.regexp.escape.control"],[/@regexpctl/,"regexp.escape.control"],[/\\$/,"regexp.escape"],[/@regexpesc/,"regexp.escape"],[/\\\./,"regexp.invalid"],[/#/,"regexp.escape","@interpolated"]],regexrange:[[/-/,"regexp.escape.control"],[/\^/,"regexp.invalid"],[/\\$/,"regexp.escape"],[/@regexpesc/,"regexp.escape"],[/[^\]]/,"regexp"],[/\]/,"@brackets.regexp.escape.control","@pop"]],regexpcomment:[[/[^)]+/,"comment"],[/\)/,{token:"regexp.escape.control",next:"@pop"}]],pstring:[[/%([qws])\(/,{token:"string.$1.delim",switchTo:"@qstring.$1.(.)"}],[/%([qws])\[/,{token:"string.$1.delim",switchTo:"@qstring.$1.[.]"}],[/%([qws])\{/,{token:"string.$1.delim",switchTo:"@qstring.$1.{.}"}],[/%([qws])</,{token:"string.$1.delim",switchTo:"@qstring.$1.<.>"}],[/%([qws])(@delim)/,{token:"string.$1.delim",switchTo:"@qstring.$1.$2.$2"}],[/%r\(/,{token:"regexp.delim",switchTo:"@pregexp.(.)"}],[/%r\[/,{token:"regexp.delim",switchTo:"@pregexp.[.]"}],[/%r\{/,{token:"regexp.delim",switchTo:"@pregexp.{.}"}],[/%r</,{token:"regexp.delim",switchTo:"@pregexp.<.>"}],[/%r(@delim)/,{token:"regexp.delim",switchTo:"@pregexp.$1.$1"}],[/%(x|W|Q?)\(/,{token:"string.$1.delim",switchTo:"@qqstring.$1.(.)"}],[/%(x|W|Q?)\[/,{token:"string.$1.delim",switchTo:"@qqstring.$1.[.]"}],[/%(x|W|Q?)\{/,{token:"string.$1.delim",switchTo:"@qqstring.$1.{.}"}],[/%(x|W|Q?)</,{token:"string.$1.delim",switchTo:"@qqstring.$1.<.>"}],[/%(x|W|Q?)(@delim)/,{token:"string.$1.delim",switchTo:"@qqstring.$1.$2.$2"}],[/%([rqwsxW]|Q?)./,{token:"invalid",next:"@pop"}],[/./,{token:"invalid",next:"@pop"}]],qstring:[[/\\$/,"string.$S2.escape"],[/\\./,"string.$S2.escape"],[/./,{cases:{"$#==$S4":{token:"string.$S2.delim",next:"@pop"},"$#==$S3":{token:"string.$S2.delim",next:"@push"},"@default":"string.$S2"}}]],qqstring:[[/#/,"string.$S2.escape","@interpolated"],{include:"@qstring"}],whitespace:[[/[ \t\r\n]+/,""],[/^\s*=begin\b/,"comment","@comment"],[/#.*$/,"comment"]],comment:[[/[^=]+/,"comment"],[/^\s*=begin\b/,"comment.invalid"],[/^\s*=end\b.*/,"comment","@pop"],[/[=]/,"comment"]]}};export{e as conf,t as language};
@@ -0,0 +1,2 @@
1
+ import"./chunk-Q7L6LLAK.js";var e={wordPattern:/(#?-?\d*\.\d\w*%?)|([@#!.:]?[\w-?]+%?)|[@#!.]/g,comments:{blockComment:["/*","*/"],lineComment:"//"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}",notIn:["string","comment"]},{open:"[",close:"]",notIn:["string","comment"]},{open:"(",close:")",notIn:["string","comment"]},{open:'"',close:'"',notIn:["string","comment"]},{open:"'",close:"'",notIn:["string","comment"]}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],folding:{markers:{start:new RegExp("^\\s*\\/\\*\\s*#region\\b\\s*(.*?)\\s*\\*\\/"),end:new RegExp("^\\s*\\/\\*\\s*#endregion\\b.*\\*\\/")}}},t={defaultToken:"",tokenPostfix:".less",identifier:"-?-?([a-zA-Z]|(\\\\(([0-9a-fA-F]{1,6}\\s?)|[^[0-9a-fA-F])))([\\w\\-]|(\\\\(([0-9a-fA-F]{1,6}\\s?)|[^[0-9a-fA-F])))*",identifierPlus:"-?-?([a-zA-Z:.]|(\\\\(([0-9a-fA-F]{1,6}\\s?)|[^[0-9a-fA-F])))([\\w\\-:.]|(\\\\(([0-9a-fA-F]{1,6}\\s?)|[^[0-9a-fA-F])))*",brackets:[{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.bracket"},{open:"(",close:")",token:"delimiter.parenthesis"},{open:"<",close:">",token:"delimiter.angle"}],tokenizer:{root:[{include:"@nestedJSBegin"},["[ \\t\\r\\n]+",""],{include:"@comments"},{include:"@keyword"},{include:"@strings"},{include:"@numbers"},["[*_]?[a-zA-Z\\-\\s]+(?=:.*(;|(\\\\$)))","attribute.name","@attribute"],["url(\\-prefix)?\\(",{token:"tag",next:"@urldeclaration"}],["[{}()\\[\\]]","@brackets"],["[,:;]","delimiter"],["#@identifierPlus","tag.id"],["&","tag"],["\\.@identifierPlus(?=\\()","tag.class","@attribute"],["\\.@identifierPlus","tag.class"],["@identifierPlus","tag"],{include:"@operators"},["@(@identifier(?=[:,\\)]))","variable","@attribute"],["@(@identifier)","variable"],["@","key","@atRules"]],nestedJSBegin:[["``","delimiter.backtick"],["`",{token:"delimiter.backtick",next:"@nestedJSEnd",nextEmbedded:"text/javascript"}]],nestedJSEnd:[["`",{token:"delimiter.backtick",next:"@pop",nextEmbedded:"@pop"}]],operators:[["[<>=\\+\\-\\*\\/\\^\\|\\~]","operator"]],keyword:[["(@[\\s]*import|![\\s]*important|true|false|when|iscolor|isnumber|isstring|iskeyword|isurl|ispixel|ispercentage|isem|hue|saturation|lightness|alpha|lighten|darken|saturate|desaturate|fadein|fadeout|fade|spin|mix|round|ceil|floor|percentage)\\b","keyword"]],urldeclaration:[{include:"@strings"},[`[^)\r
2
+ ]+`,"string"],["\\)",{token:"tag",next:"@pop"}]],attribute:[{include:"@nestedJSBegin"},{include:"@comments"},{include:"@strings"},{include:"@numbers"},{include:"@keyword"},["[a-zA-Z\\-]+(?=\\()","attribute.value","@attribute"],[">","operator","@pop"],["@identifier","attribute.value"],{include:"@operators"},["@(@identifier)","variable"],["[)\\}]","@brackets","@pop"],["[{}()\\[\\]>]","@brackets"],["[;]","delimiter","@pop"],["[,=:]","delimiter"],["\\s",""],[".","attribute.value"]],comments:[["\\/\\*","comment","@comment"],["\\/\\/+.*","comment"]],comment:[["\\*\\/","comment","@pop"],[".","comment"]],numbers:[["(\\d*\\.)?\\d+([eE][\\-+]?\\d+)?",{token:"attribute.value.number",next:"@units"}],["#[0-9a-fA-F_]+(?!\\w)","attribute.value.hex"]],units:[["(em|ex|ch|rem|fr|vmin|vmax|vw|vh|vm|cm|mm|in|px|pt|pc|deg|grad|rad|turn|s|ms|Hz|kHz|%)?","attribute.value.unit","@pop"]],strings:[['~?"',{token:"string.delimiter",next:"@stringsEndDoubleQuote"}],["~?'",{token:"string.delimiter",next:"@stringsEndQuote"}]],stringsEndDoubleQuote:[['\\\\"',"string"],['"',{token:"string.delimiter",next:"@popall"}],[".","string"]],stringsEndQuote:[["\\\\'","string"],["'",{token:"string.delimiter",next:"@popall"}],[".","string"]],atRules:[{include:"@comments"},{include:"@strings"},["[()]","delimiter"],["[\\{;]","delimiter","@pop"],[".","key"]]}};export{e as conf,t as language};
@@ -0,0 +1 @@
1
+ import"./chunk-Q7L6LLAK.js";var e={comments:{lineComment:"'"},brackets:[["(",")"],["[","]"],["If","EndIf"],["While","EndWhile"],["For","EndFor"],["Sub","EndSub"]],autoClosingPairs:[{open:'"',close:'"',notIn:["string","comment"]},{open:"(",close:")",notIn:["string","comment"]},{open:"[",close:"]",notIn:["string","comment"]}]},o={defaultToken:"",tokenPostfix:".sb",ignoreCase:!0,brackets:[{token:"delimiter.array",open:"[",close:"]"},{token:"delimiter.parenthesis",open:"(",close:")"},{token:"keyword.tag-if",open:"If",close:"EndIf"},{token:"keyword.tag-while",open:"While",close:"EndWhile"},{token:"keyword.tag-for",open:"For",close:"EndFor"},{token:"keyword.tag-sub",open:"Sub",close:"EndSub"}],keywords:["Else","ElseIf","EndFor","EndIf","EndSub","EndWhile","For","Goto","If","Step","Sub","Then","To","While"],tagwords:["If","Sub","While","For"],operators:[">","<","<>","<=",">=","And","Or","+","-","*","/","="],identifier:/[a-zA-Z_][\w]*/,symbols:/[=><:+\-*\/%\.,]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[{include:"@whitespace"},[/(@identifier)(?=[.])/,"type"],[/@identifier/,{cases:{"@keywords":{token:"keyword.$0"},"@operators":"operator","@default":"variable.name"}}],[/([.])(@identifier)/,{cases:{$2:["delimiter","type.member"],"@default":""}}],[/\d*\.\d+/,"number.float"],[/\d+/,"number"],[/[()\[\]]/,"@brackets"],[/@symbols/,{cases:{"@operators":"operator","@default":"delimiter"}}],[/"([^"\\]|\\.)*$/,"string.invalid"],[/"/,"string","@string"]],whitespace:[[/[ \t\r\n]+/,""],[/(\').*$/,"comment"]],string:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"C?/,"string","@pop"]]}};export{e as conf,o 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:"'"}]},T={defaultToken:"",tokenPostfix:".sql",ignoreCase:!0,brackets:[{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"}],keywords:["ACCESSIBLE","ADD","ALL","ALTER","ANALYZE","AND","AS","ASC","ASENSITIVE","BEFORE","BETWEEN","BIGINT","BINARY","BLOB","BOTH","BY","CALL","CASCADE","CASE","CHANGE","CHAR","CHARACTER","CHECK","COLLATE","COLUMN","CONDITION","CONSTRAINT","CONTINUE","CONVERT","CREATE","CROSS","CUBE","CUME_DIST","CURRENT_DATE","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_USER","CURSOR","DATABASE","DATABASES","DAY_HOUR","DAY_MICROSECOND","DAY_MINUTE","DAY_SECOND","DEC","DECIMAL","DECLARE","DEFAULT","DELAYED","DELETE","DENSE_RANK","DESC","DESCRIBE","DETERMINISTIC","DISTINCT","DISTINCTROW","DIV","DOUBLE","DROP","DUAL","EACH","ELSE","ELSEIF","EMPTY","ENCLOSED","ESCAPED","EXCEPT","EXISTS","EXIT","EXPLAIN","FALSE","FETCH","FIRST_VALUE","FLOAT","FLOAT4","FLOAT8","FOR","FORCE","FOREIGN","FROM","FULLTEXT","FUNCTION","GENERATED","GET","GRANT","GROUP","GROUPING","GROUPS","HAVING","HIGH_PRIORITY","HOUR_MICROSECOND","HOUR_MINUTE","HOUR_SECOND","IF","IGNORE","IN","INDEX","INFILE","INNER","INOUT","INSENSITIVE","INSERT","INT","INT1","INT2","INT3","INT4","INT8","INTEGER","INTERVAL","INTO","IO_AFTER_GTIDS","IO_BEFORE_GTIDS","IS","ITERATE","JOIN","JSON_TABLE","KEY","KEYS","KILL","LAG","LAST_VALUE","LATERAL","LEAD","LEADING","LEAVE","LEFT","LIKE","LIMIT","LINEAR","LINES","LOAD","LOCALTIME","LOCALTIMESTAMP","LOCK","LONG","LONGBLOB","LONGTEXT","LOOP","LOW_PRIORITY","MASTER_BIND","MASTER_SSL_VERIFY_SERVER_CERT","MATCH","MAXVALUE","MEDIUMBLOB","MEDIUMINT","MEDIUMTEXT","MIDDLEINT","MINUTE_MICROSECOND","MINUTE_SECOND","MOD","MODIFIES","NATURAL","NOT","NO_WRITE_TO_BINLOG","NTH_VALUE","NTILE","NULL","NUMERIC","OF","ON","OPTIMIZE","OPTIMIZER_COSTS","OPTION","OPTIONALLY","OR","ORDER","OUT","OUTER","OUTFILE","OVER","PARTITION","PERCENT_RANK","PRECISION","PRIMARY","PROCEDURE","PURGE","RANGE","RANK","READ","READS","READ_WRITE","REAL","RECURSIVE","REFERENCES","REGEXP","RELEASE","RENAME","REPEAT","REPLACE","REQUIRE","RESIGNAL","RESTRICT","RETURN","REVOKE","RIGHT","RLIKE","ROW","ROWS","ROW_NUMBER","SCHEMA","SCHEMAS","SECOND_MICROSECOND","SELECT","SENSITIVE","SEPARATOR","SET","SHOW","SIGNAL","SMALLINT","SPATIAL","SPECIFIC","SQL","SQLEXCEPTION","SQLSTATE","SQLWARNING","SQL_BIG_RESULT","SQL_CALC_FOUND_ROWS","SQL_SMALL_RESULT","SSL","STARTING","STORED","STRAIGHT_JOIN","SYSTEM","TABLE","TERMINATED","THEN","TINYBLOB","TINYINT","TINYTEXT","TO","TRAILING","TRIGGER","TRUE","UNDO","UNION","UNIQUE","UNLOCK","UNSIGNED","UPDATE","USAGE","USE","USING","UTC_DATE","UTC_TIME","UTC_TIMESTAMP","VALUES","VARBINARY","VARCHAR","VARCHARACTER","VARYING","VIRTUAL","WHEN","WHERE","WHILE","WINDOW","WITH","WRITE","XOR","YEAR_MONTH","ZEROFILL"],operators:["AND","BETWEEN","IN","LIKE","NOT","OR","IS","NULL","INTERSECT","UNION","INNER","JOIN","LEFT","OUTER","RIGHT"],builtinFunctions:["ABS","ACOS","ADDDATE","ADDTIME","AES_DECRYPT","AES_ENCRYPT","ANY_VALUE","Area","AsBinary","AsWKB","ASCII","ASIN","AsText","AsWKT","ASYMMETRIC_DECRYPT","ASYMMETRIC_DERIVE","ASYMMETRIC_ENCRYPT","ASYMMETRIC_SIGN","ASYMMETRIC_VERIFY","ATAN","ATAN2","ATAN","AVG","BENCHMARK","BIN","BIT_AND","BIT_COUNT","BIT_LENGTH","BIT_OR","BIT_XOR","Buffer","CAST","CEIL","CEILING","Centroid","CHAR","CHAR_LENGTH","CHARACTER_LENGTH","CHARSET","COALESCE","COERCIBILITY","COLLATION","COMPRESS","CONCAT","CONCAT_WS","CONNECTION_ID","Contains","CONV","CONVERT","CONVERT_TZ","ConvexHull","COS","COT","COUNT","CRC32","CREATE_ASYMMETRIC_PRIV_KEY","CREATE_ASYMMETRIC_PUB_KEY","CREATE_DH_PARAMETERS","CREATE_DIGEST","Crosses","CUME_DIST","CURDATE","CURRENT_DATE","CURRENT_ROLE","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_USER","CURTIME","DATABASE","DATE","DATE_ADD","DATE_FORMAT","DATE_SUB","DATEDIFF","DAY","DAYNAME","DAYOFMONTH","DAYOFWEEK","DAYOFYEAR","DECODE","DEFAULT","DEGREES","DES_DECRYPT","DES_ENCRYPT","DENSE_RANK","Dimension","Disjoint","Distance","ELT","ENCODE","ENCRYPT","EndPoint","Envelope","Equals","EXP","EXPORT_SET","ExteriorRing","EXTRACT","ExtractValue","FIELD","FIND_IN_SET","FIRST_VALUE","FLOOR","FORMAT","FORMAT_BYTES","FORMAT_PICO_TIME","FOUND_ROWS","FROM_BASE64","FROM_DAYS","FROM_UNIXTIME","GEN_RANGE","GEN_RND_EMAIL","GEN_RND_PAN","GEN_RND_SSN","GEN_RND_US_PHONE","GeomCollection","GeomCollFromText","GeometryCollectionFromText","GeomCollFromWKB","GeometryCollectionFromWKB","GeometryCollection","GeometryN","GeometryType","GeomFromText","GeometryFromText","GeomFromWKB","GeometryFromWKB","GET_FORMAT","GET_LOCK","GLength","GREATEST","GROUP_CONCAT","GROUPING","GTID_SUBSET","GTID_SUBTRACT","HEX","HOUR","ICU_VERSION","IF","IFNULL","INET_ATON","INET_NTOA","INET6_ATON","INET6_NTOA","INSERT","INSTR","InteriorRingN","Intersects","INTERVAL","IS_FREE_LOCK","IS_IPV4","IS_IPV4_COMPAT","IS_IPV4_MAPPED","IS_IPV6","IS_USED_LOCK","IS_UUID","IsClosed","IsEmpty","ISNULL","IsSimple","JSON_APPEND","JSON_ARRAY","JSON_ARRAY_APPEND","JSON_ARRAY_INSERT","JSON_ARRAYAGG","JSON_CONTAINS","JSON_CONTAINS_PATH","JSON_DEPTH","JSON_EXTRACT","JSON_INSERT","JSON_KEYS","JSON_LENGTH","JSON_MERGE","JSON_MERGE_PATCH","JSON_MERGE_PRESERVE","JSON_OBJECT","JSON_OBJECTAGG","JSON_OVERLAPS","JSON_PRETTY","JSON_QUOTE","JSON_REMOVE","JSON_REPLACE","JSON_SCHEMA_VALID","JSON_SCHEMA_VALIDATION_REPORT","JSON_SEARCH","JSON_SET","JSON_STORAGE_FREE","JSON_STORAGE_SIZE","JSON_TABLE","JSON_TYPE","JSON_UNQUOTE","JSON_VALID","LAG","LAST_DAY","LAST_INSERT_ID","LAST_VALUE","LCASE","LEAD","LEAST","LEFT","LENGTH","LineFromText","LineStringFromText","LineFromWKB","LineStringFromWKB","LineString","LN","LOAD_FILE","LOCALTIME","LOCALTIMESTAMP","LOCATE","LOG","LOG10","LOG2","LOWER","LPAD","LTRIM","MAKE_SET","MAKEDATE","MAKETIME","MASK_INNER","MASK_OUTER","MASK_PAN","MASK_PAN_RELAXED","MASK_SSN","MASTER_POS_WAIT","MAX","MBRContains","MBRCoveredBy","MBRCovers","MBRDisjoint","MBREqual","MBREquals","MBRIntersects","MBROverlaps","MBRTouches","MBRWithin","MD5","MEMBER OF","MICROSECOND","MID","MIN","MINUTE","MLineFromText","MultiLineStringFromText","MLineFromWKB","MultiLineStringFromWKB","MOD","MONTH","MONTHNAME","MPointFromText","MultiPointFromText","MPointFromWKB","MultiPointFromWKB","MPolyFromText","MultiPolygonFromText","MPolyFromWKB","MultiPolygonFromWKB","MultiLineString","MultiPoint","MultiPolygon","NAME_CONST","NOT IN","NOW","NTH_VALUE","NTILE","NULLIF","NumGeometries","NumInteriorRings","NumPoints","OCT","OCTET_LENGTH","OLD_PASSWORD","ORD","Overlaps","PASSWORD","PERCENT_RANK","PERIOD_ADD","PERIOD_DIFF","PI","Point","PointFromText","PointFromWKB","PointN","PolyFromText","PolygonFromText","PolyFromWKB","PolygonFromWKB","Polygon","POSITION","POW","POWER","PS_CURRENT_THREAD_ID","PS_THREAD_ID","PROCEDURE ANALYSE","QUARTER","QUOTE","RADIANS","RAND","RANDOM_BYTES","RANK","REGEXP_INSTR","REGEXP_LIKE","REGEXP_REPLACE","REGEXP_REPLACE","RELEASE_ALL_LOCKS","RELEASE_LOCK","REPEAT","REPLACE","REVERSE","RIGHT","ROLES_GRAPHML","ROUND","ROW_COUNT","ROW_NUMBER","RPAD","RTRIM","SCHEMA","SEC_TO_TIME","SECOND","SESSION_USER","SHA1","SHA","SHA2","SIGN","SIN","SLEEP","SOUNDEX","SOURCE_POS_WAIT","SPACE","SQRT","SRID","ST_Area","ST_AsBinary","ST_AsWKB","ST_AsGeoJSON","ST_AsText","ST_AsWKT","ST_Buffer","ST_Buffer_Strategy","ST_Centroid","ST_Collect","ST_Contains","ST_ConvexHull","ST_Crosses","ST_Difference","ST_Dimension","ST_Disjoint","ST_Distance","ST_Distance_Sphere","ST_EndPoint","ST_Envelope","ST_Equals","ST_ExteriorRing","ST_FrechetDistance","ST_GeoHash","ST_GeomCollFromText","ST_GeometryCollectionFromText","ST_GeomCollFromTxt","ST_GeomCollFromWKB","ST_GeometryCollectionFromWKB","ST_GeometryN","ST_GeometryType","ST_GeomFromGeoJSON","ST_GeomFromText","ST_GeometryFromText","ST_GeomFromWKB","ST_GeometryFromWKB","ST_HausdorffDistance","ST_InteriorRingN","ST_Intersection","ST_Intersects","ST_IsClosed","ST_IsEmpty","ST_IsSimple","ST_IsValid","ST_LatFromGeoHash","ST_Length","ST_LineFromText","ST_LineStringFromText","ST_LineFromWKB","ST_LineStringFromWKB","ST_LineInterpolatePoint","ST_LineInterpolatePoints","ST_LongFromGeoHash","ST_Longitude","ST_MakeEnvelope","ST_MLineFromText","ST_MultiLineStringFromText","ST_MLineFromWKB","ST_MultiLineStringFromWKB","ST_MPointFromText","ST_MultiPointFromText","ST_MPointFromWKB","ST_MultiPointFromWKB","ST_MPolyFromText","ST_MultiPolygonFromText","ST_MPolyFromWKB","ST_MultiPolygonFromWKB","ST_NumGeometries","ST_NumInteriorRing","ST_NumInteriorRings","ST_NumPoints","ST_Overlaps","ST_PointAtDistance","ST_PointFromGeoHash","ST_PointFromText","ST_PointFromWKB","ST_PointN","ST_PolyFromText","ST_PolygonFromText","ST_PolyFromWKB","ST_PolygonFromWKB","ST_Simplify","ST_SRID","ST_StartPoint","ST_SwapXY","ST_SymDifference","ST_Touches","ST_Transform","ST_Union","ST_Validate","ST_Within","ST_X","ST_Y","StartPoint","STATEMENT_DIGEST","STATEMENT_DIGEST_TEXT","STD","STDDEV","STDDEV_POP","STDDEV_SAMP","STR_TO_DATE","STRCMP","SUBDATE","SUBSTR","SUBSTRING","SUBSTRING_INDEX","SUBTIME","SUM","SYSDATE","SYSTEM_USER","TAN","TIME","TIME_FORMAT","TIME_TO_SEC","TIMEDIFF","TIMESTAMP","TIMESTAMPADD","TIMESTAMPDIFF","TO_BASE64","TO_DAYS","TO_SECONDS","Touches","TRIM","TRUNCATE","UCASE","UNCOMPRESS","UNCOMPRESSED_LENGTH","UNHEX","UNIX_TIMESTAMP","UpdateXML","UPPER","USER","UTC_DATE","UTC_TIME","UTC_TIMESTAMP","UUID","UUID_SHORT","UUID_TO_BIN","VALIDATE_PASSWORD_STRENGTH","VALUES","VAR_POP","VAR_SAMP","VARIANCE","VERSION","WAIT_FOR_EXECUTED_GTID_SET","WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS","WEEK","WEEKDAY","WEEKOFYEAR","WEIGHT_STRING","Within","X","Y","YEAR","YEARWEEK"],builtinVariables:[],tokenizer:{root:[{include:"@comments"},{include:"@whitespace"},{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"],[/#+.*/,"comment"],[/\/\*/,{token:"comment.quote",next:"@comment"}]],comment:[[/[^*/]+/,"comment"],[/\*\//,{token:"comment.quote",next:"@pop"}],[/./,"comment"]],numbers:[[/0[xX][0-9a-fA-F]*/,"number"],[/[$][+-]*\d*(\.\d*)?/,"number"],[/((\d+(\.\d*)?)|(\.\d+))([eE][\-+]?\d+)?/,"number"]],strings:[[/'/,{token:"string",next:"@string"}],[/"/,{token:"string.double",next:"@stringDouble"}]],string:[[/\\'/,"string"],[/[^']+/,"string"],[/''/,"string"],[/'/,{token:"string",next:"@pop"}]],stringDouble:[[/[^"]+/,"string.double"],[/""/,"string.double"],[/"/,{token:"string.double",next:"@pop"}]],complexIdentifiers:[[/`/,{token:"identifier.quote",next:"@quotedIdentifier"}]],quotedIdentifier:[[/[^`]+/,"identifier"],[/``/,"identifier"],[/`/,{token:"identifier.quote",next:"@pop"}]],scopes:[]}};export{E as conf,T 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:"`",notIn:["string"]},{open:'"',close:'"',notIn:["string"]},{open:"'",close:"'",notIn:["string","comment"]}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"`",close:"`"},{open:'"',close:'"'},{open:"'",close:"'"}]},n={defaultToken:"",tokenPostfix:".go",keywords:["break","case","chan","const","continue","default","defer","else","fallthrough","for","func","go","goto","if","import","interface","map","package","range","return","select","struct","switch","type","var","bool","true","false","uint8","uint16","uint32","uint64","int8","int16","int32","int64","float32","float64","complex64","complex128","byte","rune","uint","int","uintptr","string","nil"],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:{"@keywords":{token:"keyword.$0"},"@default":"identifier"}}],{include:"@whitespace"},[/\[\[.*\]\]/,"annotation"],[/^\s*#\w+/,"keyword"],[/[{}()\[\]]/,"@brackets"],[/[<>](?!@symbols)/,"@brackets"],[/@symbols/,{cases:{"@operators":"delimiter","@default":""}}],[/\d*\d+[eE]([\-+]?\d+)?/,"number.float"],[/\d*\.\d+([eE][\-+]?\d+)?/,"number.float"],[/0[xX][0-9a-fA-F']*[0-9a-fA-F]/,"number.hex"],[/0[0-7']*[0-7]/,"number.octal"],[/0[bB][0-1']*[0-1]/,"number.binary"],[/\d[\d']*/,"number"],[/\d/,"number"],[/[;,.]/,"delimiter"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/"/,"string","@string"],[/`/,"string","@rawstring"],[/'[^\\']'/,"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.invalid"],[/\*\//,"comment.doc","@pop"],[/[\/*]/,"comment.doc"]],string:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,"string","@pop"]],rawstring:[[/[^\`]/,"string"],[/`/,"string","@pop"]]}};export{e as conf,n as language};
@@ -0,0 +1 @@
1
+ import{E as f}from"./chunk-MFHO2F2U.js";var g="specship.api",w=class i{base;constructor(){this.base=this.resolveBase()}resolveBase(){if(typeof window>"u")return null;try{let t=new URLSearchParams(window.location.search).get("api");if(t){try{window.localStorage.setItem(g,t)}catch{}return t.replace(/\/$/,"")}}catch{}try{let t=window.localStorage.getItem(g);if(t)return t.replace(/\/$/,"")}catch{}let e=window.SPECSHIP_API_URL;if(typeof e=="string")return e.replace(/\/$/,"");let n=window.location.hostname;return n==="localhost"||n==="127.0.0.1"?"http://localhost:4242":null}get apiBase(){return this.base}get isConfigured(){return this.base!==null}async get(e,n){if(!this.base)throw new Error("no API base configured");let t=this.base+(e.startsWith("/")?e:"/"+e),r=await fetch(t,{method:"GET",headers:{Accept:"application/json"},signal:n});if(!r.ok)throw await l("GET",e,r);return r.json()}async post(e,n,t){if(!this.base)throw new Error("no API base configured");let r=this.base+(e.startsWith("/")?e:"/"+e),s=await fetch(r,{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},body:n==null?void 0:JSON.stringify(n),signal:t});if(!s.ok)throw await l("POST",e,s);return s.json()}async put(e,n,t){if(!this.base)throw new Error("no API base configured");let r=this.base+(e.startsWith("/")?e:"/"+e),s=await fetch(r,{method:"PUT",headers:{Accept:"application/json","Content-Type":"application/json"},body:n==null?void 0:JSON.stringify(n),signal:t});if(!s.ok)throw await l("PUT",e,s);return s.json()}openEventStream(e,n,t,r){if(!this.base)return t?.(new Error("no API base configured")),()=>{};let s=this.base+(e.startsWith("/")?e:"/"+e),a=new EventSource(s),h=r??b,d=o=>{try{return JSON.parse(o.data)}catch{return o.data}},p=[];for(let o of h){let c=y=>n(o,d(y));a.addEventListener(o,c),p.push([o,c])}return a.onmessage=o=>n("message",d(o)),a.onerror=o=>{t?.(o)},()=>{for(let[o,c]of p)a.removeEventListener(o,c);a.close()}}static \u0275fac=function(n){return new(n||i)};static \u0275prov=f({token:i,factory:i.\u0275fac,providedIn:"root"})},u=class extends Error{constructor(n,t,r,s,a){super(a);this.status=n;this.code=t;this.path=r;this.payload=s}name="ApiError"};async function l(i,e,n){let t=await n.text().catch(()=>""),r=null,s=null;if(t)try{if(r=JSON.parse(t),r&&typeof r=="object"&&"code"in r){let a=r.code;typeof a=="string"&&(s=a)}}catch{r=t}return new u(n.status,s,e,r,`${i} ${e} \u2192 ${n.status} ${t.slice(0,200)}`)}var b=["run_started","run_completed","run_failed","run_cancelled","run_paused","step_started","step_completed","step_failed","step_skipped","tool_called","artifact_created","approval_requested","approval_granted","approval_rejected","done"];export{w as a,u as b};
@@ -0,0 +1 @@
1
+ import"./chunk-Q7L6LLAK.js";var t={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\@\$\^\&\*\(\)\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\s]+)/g,comments:{blockComment:["{#","#}"]},brackets:[["{#","#}"],["{%","%}"],["{{","}}"],["(",")"],["[","]"],["<!--","-->"],["<",">"]],autoClosingPairs:[{open:"{# ",close:" #}"},{open:"{% ",close:" %}"},{open:"{{ ",close:" }}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:'"',close:'"'},{open:"'",close:"'"},{open:"<",close:">"}]},e={defaultToken:"",tokenPostfix:"",ignoreCase:!0,keywords:["apply","autoescape","block","deprecated","do","embed","extends","flush","for","from","if","import","include","macro","sandbox","set","use","verbatim","with","endapply","endautoescape","endblock","endembed","endfor","endif","endmacro","endsandbox","endset","endwith","true","false"],tokenizer:{root:[[/\s+/],[/{#/,"comment.twig","@commentState"],[/{%[-~]?/,"delimiter.twig","@blockState"],[/{{[-~]?/,"delimiter.twig","@variableState"],[/<!DOCTYPE/,"metatag.html","@doctype"],[/<!--/,"comment.html","@comment"],[/(<)((?:[\w\-]+:)?[\w\-]+)(\s*)(\/>)/,["delimiter.html","tag.html","","delimiter.html"]],[/(<)(script)/,["delimiter.html",{token:"tag.html",next:"@script"}]],[/(<)(style)/,["delimiter.html",{token:"tag.html",next:"@style"}]],[/(<)((?:[\w\-]+:)?[\w\-]+)/,["delimiter.html",{token:"tag.html",next:"@otherTag"}]],[/(<\/)((?:[\w\-]+:)?[\w\-]+)/,["delimiter.html",{token:"tag.html",next:"@otherTag"}]],[/</,"delimiter.html"],[/[^<{]+/]],commentState:[[/#}/,"comment.twig","@pop"],[/./,"comment.twig"]],blockState:[[/[-~]?%}/,"delimiter.twig","@pop"],[/\s+/],[/(verbatim)(\s*)([-~]?%})/,["keyword.twig","",{token:"delimiter.twig",next:"@rawDataState"}]],{include:"expression"}],rawDataState:[[/({%[-~]?)(\s*)(endverbatim)(\s*)([-~]?%})/,["delimiter.twig","","keyword.twig","",{token:"delimiter.twig",next:"@popall"}]],[/./,"string.twig"]],variableState:[[/[-~]?}}/,"delimiter.twig","@pop"],{include:"expression"}],stringState:[[/"/,"string.twig","@pop"],[/#{\s*/,"string.twig","@interpolationState"],[/[^#"\\]*(?:(?:\\.|#(?!\{))[^#"\\]*)*/,"string.twig"]],interpolationState:[[/}/,"string.twig","@pop"],{include:"expression"}],expression:[[/\s+/],[/\+|-|\/{1,2}|%|\*{1,2}/,"operators.twig"],[/(and|or|not|b-and|b-xor|b-or)(\s+)/,["operators.twig",""]],[/==|!=|<|>|>=|<=/,"operators.twig"],[/(starts with|ends with|matches)(\s+)/,["operators.twig",""]],[/(in)(\s+)/,["operators.twig",""]],[/(is)(\s+)/,["operators.twig",""]],[/\||~|:|\.{1,2}|\?{1,2}/,"operators.twig"],[/[^\W\d][\w]*/,{cases:{"@keywords":"keyword.twig","@default":"variable.twig"}}],[/\d+(\.\d+)?/,"number.twig"],[/\(|\)|\[|\]|{|}|,/,"delimiter.twig"],[/"([^#"\\]*(?:\\.[^#"\\]*)*)"|\'([^\'\\]*(?:\\.[^\'\\]*)*)\'/,"string.twig"],[/"/,"string.twig","@stringState"],[/=>/,"operators.twig"],[/=/,"operators.twig"]],doctype:[[/[^>]+/,"metatag.content.html"],[/>/,"metatag.html","@pop"]],comment:[[/-->/,"comment.html","@pop"],[/[^-]+/,"comment.content.html"],[/./,"comment.content.html"]],otherTag:[[/\/?>/,"delimiter.html","@pop"],[/"([^"]*)"/,"attribute.value.html"],[/'([^']*)'/,"attribute.value.html"],[/[\w\-]+/,"attribute.name.html"],[/=/,"delimiter.html"],[/[ \t\r\n]+/]],script:[[/type/,"attribute.name.html","@scriptAfterType"],[/"([^"]*)"/,"attribute.value.html"],[/'([^']*)'/,"attribute.value.html"],[/[\w\-]+/,"attribute.name.html"],[/=/,"delimiter.html"],[/>/,{token:"delimiter.html",next:"@scriptEmbedded",nextEmbedded:"text/javascript"}],[/[ \t\r\n]+/],[/(<\/)(script\s*)(>)/,["delimiter.html","tag.html",{token:"delimiter.html",next:"@pop"}]]],scriptAfterType:[[/=/,"delimiter.html","@scriptAfterTypeEquals"],[/>/,{token:"delimiter.html",next:"@scriptEmbedded",nextEmbedded:"text/javascript"}],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:"@rematch",next:"@pop"}]],scriptAfterTypeEquals:[[/"([^"]*)"/,{token:"attribute.value.html",switchTo:"@scriptWithCustomType.$1"}],[/'([^']*)'/,{token:"attribute.value.html",switchTo:"@scriptWithCustomType.$1"}],[/>/,{token:"delimiter.html",next:"@scriptEmbedded",nextEmbedded:"text/javascript"}],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:"@rematch",next:"@pop"}]],scriptWithCustomType:[[/>/,{token:"delimiter.html",next:"@scriptEmbedded.$S2",nextEmbedded:"$S2"}],[/"([^"]*)"/,"attribute.value.html"],[/'([^']*)'/,"attribute.value.html"],[/[\w\-]+/,"attribute.name.html"],[/=/,"delimiter.html"],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:"@rematch",next:"@pop"}]],scriptEmbedded:[[/<\/script/,{token:"@rematch",next:"@pop",nextEmbedded:"@pop"}],[/[^<]+/,""]],style:[[/type/,"attribute.name.html","@styleAfterType"],[/"([^"]*)"/,"attribute.value.html"],[/'([^']*)'/,"attribute.value.html"],[/[\w\-]+/,"attribute.name.html"],[/=/,"delimiter.html"],[/>/,{token:"delimiter.html",next:"@styleEmbedded",nextEmbedded:"text/css"}],[/[ \t\r\n]+/],[/(<\/)(style\s*)(>)/,["delimiter.html","tag.html",{token:"delimiter.html",next:"@pop"}]]],styleAfterType:[[/=/,"delimiter.html","@styleAfterTypeEquals"],[/>/,{token:"delimiter.html",next:"@styleEmbedded",nextEmbedded:"text/css"}],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:"@rematch",next:"@pop"}]],styleAfterTypeEquals:[[/"([^"]*)"/,{token:"attribute.value.html",switchTo:"@styleWithCustomType.$1"}],[/'([^']*)'/,{token:"attribute.value.html",switchTo:"@styleWithCustomType.$1"}],[/>/,{token:"delimiter.html",next:"@styleEmbedded",nextEmbedded:"text/css"}],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:"@rematch",next:"@pop"}]],styleWithCustomType:[[/>/,{token:"delimiter.html",next:"@styleEmbedded.$S2",nextEmbedded:"$S2"}],[/"([^"]*)"/,"attribute.value.html"],[/'([^']*)'/,"attribute.value.html"],[/[\w\-]+/,"attribute.name.html"],[/=/,"delimiter.html"],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:"@rematch",next:"@pop"}]],styleEmbedded:[[/<\/style/,{token:"@rematch",next:"@pop",nextEmbedded:"@pop"}],[/[^<]+/,""]]}};export{t as conf,e as language};
@@ -0,0 +1 @@
1
+ import"./chunk-Q7L6LLAK.js";var e={comments:{blockComment:["(*","*)"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"[",close:"]"},{open:"{",close:"}"},{open:"(",close:")"},{open:"(*",close:"*)"},{open:"<*",close:"*>"},{open:"'",close:"'",notIn:["string","comment"]},{open:'"',close:'"',notIn:["string","comment"]}]},o={defaultToken:"",tokenPostfix:".m3",brackets:[{token:"delimiter.curly",open:"{",close:"}"},{token:"delimiter.parenthesis",open:"(",close:")"},{token:"delimiter.square",open:"[",close:"]"}],keywords:["AND","ANY","ARRAY","AS","BEGIN","BITS","BRANDED","BY","CASE","CONST","DIV","DO","ELSE","ELSIF","END","EVAL","EXCEPT","EXCEPTION","EXIT","EXPORTS","FINALLY","FOR","FROM","GENERIC","IF","IMPORT","IN","INTERFACE","LOCK","LOOP","METHODS","MOD","MODULE","NOT","OBJECT","OF","OR","OVERRIDES","PROCEDURE","RAISE","RAISES","READONLY","RECORD","REF","REPEAT","RETURN","REVEAL","SET","THEN","TO","TRY","TYPE","TYPECASE","UNSAFE","UNTIL","UNTRACED","VALUE","VAR","WHILE","WITH"],reservedConstNames:["ABS","ADR","ADRSIZE","BITSIZE","BYTESIZE","CEILING","DEC","DISPOSE","FALSE","FIRST","FLOAT","FLOOR","INC","ISTYPE","LAST","LOOPHOLE","MAX","MIN","NARROW","NEW","NIL","NUMBER","ORD","ROUND","SUBARRAY","TRUE","TRUNC","TYPECODE","VAL"],reservedTypeNames:["ADDRESS","ANY","BOOLEAN","CARDINAL","CHAR","EXTENDED","INTEGER","LONGCARD","LONGINT","LONGREAL","MUTEX","NULL","REAL","REFANY","ROOT","TEXT"],operators:["+","-","*","/","&","^","."],relations:["=","#","<","<=",">",">=","<:",":"],delimiters:["|","..","=>",",",";",":="],symbols:/[>=<#.,:;+\-*/&^]+/,escapes:/\\(?:[\\fnrt"']|[0-7]{3})/,tokenizer:{root:[[/_\w*/,"invalid"],[/[a-zA-Z][a-zA-Z0-9_]*/,{cases:{"@keywords":{token:"keyword.$0"},"@reservedConstNames":{token:"constant.reserved.$0"},"@reservedTypeNames":{token:"type.reserved.$0"},"@default":"identifier"}}],{include:"@whitespace"},[/[{}()\[\]]/,"@brackets"],[/[0-9]+\.[0-9]+(?:[DdEeXx][\+\-]?[0-9]+)?/,"number.float"],[/[0-9]+(?:\_[0-9a-fA-F]+)?L?/,"number"],[/@symbols/,{cases:{"@operators":"operators","@relations":"operators","@delimiters":"delimiter","@default":"invalid"}}],[/'[^\\']'/,"string.char"],[/(')(@escapes)(')/,["string.char","string.escape","string.char"]],[/'/,"invalid"],[/"([^"\\]|\\.)*$/,"invalid"],[/"/,"string.text","@text"]],text:[[/[^\\"]+/,"string.text"],[/@escapes/,"string.escape"],[/\\./,"invalid"],[/"/,"string.text","@pop"]],comment:[[/\(\*/,"comment","@push"],[/\*\)/,"comment","@pop"],[/./,"comment"]],pragma:[[/<\*/,"keyword.pragma","@push"],[/\*>/,"keyword.pragma","@pop"],[/./,"keyword.pragma"]],whitespace:[[/[ \t\r\n]+/,"white"],[/\(\*/,"comment","@comment"],[/<\*/,"keyword.pragma","@pragma"]]}};export{e as conf,o as language};
@@ -0,0 +1 @@
1
+ import{n as t}from"./chunk-JTFXTIPE.js";import"./chunk-Q7L6LLAK.js";var e=["area","base","br","col","embed","hr","img","input","keygen","link","menuitem","meta","param","source","track","wbr"],St={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\@\$\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\s]+)/g,comments:{blockComment:["<!--","-->"]},brackets:[["<!--","-->"],["<",">"],["{","}"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:'"',close:'"'},{open:"'",close:"'"},{open:"<",close:">"}],onEnterRules:[{beforeText:new RegExp(`<(?!(?:${e.join("|")}))(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$`,"i"),afterText:/^<\/(\w[\w\d]*)\s*>$/i,action:{indentAction:t.IndentAction.IndentOutdent}},{beforeText:new RegExp(`<(?!(?:${e.join("|")}))(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$`,"i"),action:{indentAction:t.IndentAction.Indent}}]},ft={defaultToken:"",tokenPostfix:"",tokenizer:{root:[[/@@@@/],[/@[^@]/,{token:"@rematch",switchTo:"@razorInSimpleState.root"}],[/<!DOCTYPE/,"metatag.html","@doctype"],[/<!--/,"comment.html","@comment"],[/(<)([\w\-]+)(\/>)/,["delimiter.html","tag.html","delimiter.html"]],[/(<)(script)/,["delimiter.html",{token:"tag.html",next:"@script"}]],[/(<)(style)/,["delimiter.html",{token:"tag.html",next:"@style"}]],[/(<)([:\w\-]+)/,["delimiter.html",{token:"tag.html",next:"@otherTag"}]],[/(<\/)([\w\-]+)/,["delimiter.html",{token:"tag.html",next:"@otherTag"}]],[/</,"delimiter.html"],[/[ \t\r\n]+/],[/[^<@]+/]],doctype:[[/@[^@]/,{token:"@rematch",switchTo:"@razorInSimpleState.comment"}],[/[^>]+/,"metatag.content.html"],[/>/,"metatag.html","@pop"]],comment:[[/@[^@]/,{token:"@rematch",switchTo:"@razorInSimpleState.comment"}],[/-->/,"comment.html","@pop"],[/[^-]+/,"comment.content.html"],[/./,"comment.content.html"]],otherTag:[[/@[^@]/,{token:"@rematch",switchTo:"@razorInSimpleState.otherTag"}],[/\/?>/,"delimiter.html","@pop"],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/[ \t\r\n]+/]],script:[[/@[^@]/,{token:"@rematch",switchTo:"@razorInSimpleState.script"}],[/type/,"attribute.name","@scriptAfterType"],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/>/,{token:"delimiter.html",next:"@scriptEmbedded.text/javascript",nextEmbedded:"text/javascript"}],[/[ \t\r\n]+/],[/(<\/)(script\s*)(>)/,["delimiter.html","tag.html",{token:"delimiter.html",next:"@pop"}]]],scriptAfterType:[[/@[^@]/,{token:"@rematch",switchTo:"@razorInSimpleState.scriptAfterType"}],[/=/,"delimiter","@scriptAfterTypeEquals"],[/>/,{token:"delimiter.html",next:"@scriptEmbedded.text/javascript",nextEmbedded:"text/javascript"}],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:"@rematch",next:"@pop"}]],scriptAfterTypeEquals:[[/@[^@]/,{token:"@rematch",switchTo:"@razorInSimpleState.scriptAfterTypeEquals"}],[/"([^"]*)"/,{token:"attribute.value",switchTo:"@scriptWithCustomType.$1"}],[/'([^']*)'/,{token:"attribute.value",switchTo:"@scriptWithCustomType.$1"}],[/>/,{token:"delimiter.html",next:"@scriptEmbedded.text/javascript",nextEmbedded:"text/javascript"}],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:"@rematch",next:"@pop"}]],scriptWithCustomType:[[/@[^@]/,{token:"@rematch",switchTo:"@razorInSimpleState.scriptWithCustomType.$S2"}],[/>/,{token:"delimiter.html",next:"@scriptEmbedded.$S2",nextEmbedded:"$S2"}],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:"@rematch",next:"@pop"}]],scriptEmbedded:[[/@[^@]/,{token:"@rematch",switchTo:"@razorInEmbeddedState.scriptEmbedded.$S2",nextEmbedded:"@pop"}],[/<\/script/,{token:"@rematch",next:"@pop",nextEmbedded:"@pop"}]],style:[[/@[^@]/,{token:"@rematch",switchTo:"@razorInSimpleState.style"}],[/type/,"attribute.name","@styleAfterType"],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/>/,{token:"delimiter.html",next:"@styleEmbedded.text/css",nextEmbedded:"text/css"}],[/[ \t\r\n]+/],[/(<\/)(style\s*)(>)/,["delimiter.html","tag.html",{token:"delimiter.html",next:"@pop"}]]],styleAfterType:[[/@[^@]/,{token:"@rematch",switchTo:"@razorInSimpleState.styleAfterType"}],[/=/,"delimiter","@styleAfterTypeEquals"],[/>/,{token:"delimiter.html",next:"@styleEmbedded.text/css",nextEmbedded:"text/css"}],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:"@rematch",next:"@pop"}]],styleAfterTypeEquals:[[/@[^@]/,{token:"@rematch",switchTo:"@razorInSimpleState.styleAfterTypeEquals"}],[/"([^"]*)"/,{token:"attribute.value",switchTo:"@styleWithCustomType.$1"}],[/'([^']*)'/,{token:"attribute.value",switchTo:"@styleWithCustomType.$1"}],[/>/,{token:"delimiter.html",next:"@styleEmbedded.text/css",nextEmbedded:"text/css"}],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:"@rematch",next:"@pop"}]],styleWithCustomType:[[/@[^@]/,{token:"@rematch",switchTo:"@razorInSimpleState.styleWithCustomType.$S2"}],[/>/,{token:"delimiter.html",next:"@styleEmbedded.$S2",nextEmbedded:"$S2"}],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:"@rematch",next:"@pop"}]],styleEmbedded:[[/@[^@]/,{token:"@rematch",switchTo:"@razorInEmbeddedState.styleEmbedded.$S2",nextEmbedded:"@pop"}],[/<\/style/,{token:"@rematch",next:"@pop",nextEmbedded:"@pop"}]],razorInSimpleState:[[/@\*/,"comment.cs","@razorBlockCommentTopLevel"],[/@[{(]/,"metatag.cs","@razorRootTopLevel"],[/(@)(\s*[\w]+)/,["metatag.cs",{token:"identifier.cs",switchTo:"@$S2.$S3"}]],[/[})]/,{token:"metatag.cs",switchTo:"@$S2.$S3"}],[/\*@/,{token:"comment.cs",switchTo:"@$S2.$S3"}]],razorInEmbeddedState:[[/@\*/,"comment.cs","@razorBlockCommentTopLevel"],[/@[{(]/,"metatag.cs","@razorRootTopLevel"],[/(@)(\s*[\w]+)/,["metatag.cs",{token:"identifier.cs",switchTo:"@$S2.$S3",nextEmbedded:"$S3"}]],[/[})]/,{token:"metatag.cs",switchTo:"@$S2.$S3",nextEmbedded:"$S3"}],[/\*@/,{token:"comment.cs",switchTo:"@$S2.$S3",nextEmbedded:"$S3"}]],razorBlockCommentTopLevel:[[/\*@/,"@rematch","@pop"],[/[^*]+/,"comment.cs"],[/./,"comment.cs"]],razorBlockComment:[[/\*@/,"comment.cs","@pop"],[/[^*]+/,"comment.cs"],[/./,"comment.cs"]],razorRootTopLevel:[[/\{/,"delimiter.bracket.cs","@razorRoot"],[/\(/,"delimiter.parenthesis.cs","@razorRoot"],[/[})]/,"@rematch","@pop"],{include:"razorCommon"}],razorRoot:[[/\{/,"delimiter.bracket.cs","@razorRoot"],[/\(/,"delimiter.parenthesis.cs","@razorRoot"],[/\}/,"delimiter.bracket.cs","@pop"],[/\)/,"delimiter.parenthesis.cs","@pop"],{include:"razorCommon"}],razorCommon:[[/[a-zA-Z_]\w*/,{cases:{"@razorKeywords":{token:"keyword.cs"},"@default":"identifier.cs"}}],[/[\[\]]/,"delimiter.array.cs"],[/[ \t\r\n]+/],[/\/\/.*$/,"comment.cs"],[/@\*/,"comment.cs","@razorBlockComment"],[/"([^"]*)"/,"string.cs"],[/'([^']*)'/,"string.cs"],[/(<)([\w\-]+)(\/>)/,["delimiter.html","tag.html","delimiter.html"]],[/(<)([\w\-]+)(>)/,["delimiter.html","tag.html","delimiter.html"]],[/(<\/)([\w\-]+)(>)/,["delimiter.html","tag.html","delimiter.html"]],[/[\+\-\*\%\&\|\^\~\!\=\<\>\/\?\;\:\.\,]/,"delimiter.cs"],[/\d*\d+[eE]([\-+]?\d+)?/,"number.float.cs"],[/\d*\.\d+([eE][\-+]?\d+)?/,"number.float.cs"],[/0[xX][0-9a-fA-F']*[0-9a-fA-F]/,"number.hex.cs"],[/0[0-7']*[0-7]/,"number.octal.cs"],[/0[bB][0-1']*[0-1]/,"number.binary.cs"],[/\d[\d']*/,"number.cs"],[/\d/,"number.cs"]]},razorKeywords:["abstract","as","async","await","base","bool","break","by","byte","case","catch","char","checked","class","const","continue","decimal","default","delegate","do","double","descending","explicit","event","extern","else","enum","false","finally","fixed","float","for","foreach","from","goto","group","if","implicit","in","int","interface","internal","into","is","lock","long","nameof","new","null","namespace","object","operator","out","override","orderby","params","private","protected","public","readonly","ref","return","switch","struct","sbyte","sealed","short","sizeof","stackalloc","static","string","select","this","throw","true","try","typeof","uint","ulong","unchecked","unsafe","ushort","using","var","virtual","volatile","void","when","while","where","yield","model","inject"],escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/};export{St as conf,ft as language};
@@ -0,0 +1,2 @@
1
+ import{a as X}from"./chunk-LBXLFPVN.js";import{a as L,b as J,c as Q}from"./chunk-CD5IZM7Y.js";import{a as G}from"./chunk-SH6UVHQC.js";import{a as W}from"./chunk-KHU5M2AL.js";import{a as q}from"./chunk-N5OSSQFZ.js";import{c as T}from"./chunk-B3CWIVBW.js";import"./chunk-W22AVG3N.js";import{a as K}from"./chunk-4JYHAP7B.js";import{Aa as p,Ea as P,Fa as N,Ga as E,I as H,Ia as w,Ka as c,M as C,N as S,Ta as k,Ua as R,Va as o,W as M,Wa as u,Xa as v,Ya as z,bb as f,db as O,ea as a,fb as $,gb as V,hb as j,ka as F,lb as x,ra as _,sa as h,ta as I,va as b,vb as A,wa as y,xa as m,ya as i,za as n,zb as U}from"./chunk-MFHO2F2U.js";import"./chunk-Q7L6LLAK.js";var te=()=>({value:"today",label:"Today"}),ne=()=>({value:"week",label:"This week"}),ie=()=>({value:"month",label:"This month"}),ae=()=>({value:"all",label:"All time"}),oe=(r,e,t,l)=>[r,e,t,l],le=()=>({value:"calls",label:"Calls"}),re=()=>({value:"tokens",label:"Tokens"}),de=(r,e)=>[r,e],se=()=>[],Z=(r,e)=>e.name,ee=(r,e)=>e.session_id;function pe(r,e){r&1&&(i(0,"div",23),o(1,"No file-targeted tool calls in this window."),n())}function me(r,e){if(r&1){let t=E();i(0,"app-treemap",45),w("pick",function(s){C(t);let d=c();return S(d.openFile(s))}),n(),i(1,"div",46)(2,"span",47),o(3,"tokens / call"),n(),p(4,"div",48),i(5,"span",49),o(6,"efficient \u2192 wasteful"),n(),p(7,"div",22),i(8,"span",47),o(9,"click a tile to drill in"),n()()}if(r&2){let t,l=c();m("items",l.treemapItems())("height",268)("selKey",((t=l.drill())==null?null:t.kind)==="file"?l.drill().key:null)}}function ce(r,e){if(r&1){let t=E();i(0,"button",50),w("click",function(){let s=C(t).$implicit,d=c();return S(d.openToolByName(s.name))}),i(1,"span",51),o(2),n(),i(3,"div",52),p(4,"div",53),n(),i(5,"span",54),o(6),n(),i(7,"span",55),o(8),n(),i(9,"span",56),o(10),n(),p(11,"app-icon",57),n()}if(r&2){let t,l,s=e.$implicit,d=c();R("sel",((t=d.drill())==null?null:t.kind)==="tool"&&d.drill().key===s.name),a(),k("color",((l=d.drill())==null?null:l.kind)==="tool"&&d.drill().key===s.name?"var(--accent)":"var(--text-secondary)"),a(),u(s.name),a(2),k("width",s.resultBytes/d.maxToolTokens()*100,"%")("background",d.effColor(s.resultBytes/d.Math.max(1,s.calls))),a(2),v("\xD7",s.calls),a(),k("color",d.effColor(s.resultBytes/d.Math.max(1,s.calls))),a(),v("",d.fmtTokens(d.Math.round(s.resultBytes/d.Math.max(1,s.calls))),"/call"),a(2),u(d.fmtTokens(s.resultBytes)),a(),m("size",12)}}function ue(r,e){r&1&&(i(0,"div",23),o(1,"No Task tool calls \u2014 no subagents dispatched."),n())}function xe(r,e){if(r&1){let t=E();i(0,"app-h-bars",58),w("itemClick",function(s){C(t);let d=c();return S(d.openSubagent(s.name))}),n()}if(r&2){let t,l=c();m("items",l.subagentByName())("fmt",l.fmtTokens)("selectedKey",((t=l.drill())==null?null:t.kind)==="subagent"?l.drill().key:null)}}function ge(r,e){r&1&&(i(0,"div",65),o(1,"Loading\u2026"),n())}function ve(r,e){if(r&1&&(i(0,"div",73)(1,"span",78),o(2),n(),i(3,"div",22),p(4,"app-bar",79),n(),i(5,"span",80),o(6),n(),i(7,"span",81),o(8),n()()),r&2){let t=e.$implicit,l=c(),s=c(2);a(2),u(t.name),a(2),m("frac",t.bytes/s.Math.max(1,l.byTool[0].bytes))("color",t.bytes>4e4?"var(--error)":t.bytes>12e3?"var(--warn)":"var(--node-code)"),a(2),v("\xD7",t.calls),a(2),u(s.fmtTokens(t.bytes))}}function _e(r,e){if(r&1&&(i(0,"div",75)(1,"span",82),o(2),n(),i(3,"span",83),o(4),n(),p(5,"app-icon",84),n()),r&2){let t,l=e.$implicit,s=c(3);a(2),u(s.shortId(l.session_id)),a(2),z(" ",(l.project_path==null||(t=l.project_path.split("/"))==null?null:t.pop())||""," \xB7 ",s.timeAgo(l.lastTs)," "),a(),m("size",12)}}function he(r,e){if(r&1&&(i(0,"div",66)(1,"div",67)(2,"div")(3,"div",47),o(4,"Tool calls"),n(),i(5,"div",68),o(6),n()(),i(7,"div",22)(8,"div",69),o(9,"7-day trend"),n(),p(10,"app-sparkline",70),n()(),i(11,"div",71),o(12,"Tool breakdown"),n(),i(13,"div",72),b(14,ve,9,5,"div",73,Z),n(),i(16,"div",71),o(17),n(),i(18,"div",74),b(19,_e,6,4,"div",75,ee),n(),i(21,"button",76),p(22,"app-icon",77),o(23,"Reveal in editor "),n()()),r&2){let t=e,l=c(),s=c();a(6),u(s.fileTotalCalls(t.sessions)),a(4),m("data",s.fileTrendFor(l.key))("fill",!0)("width",150)("height",30),a(4),y(t.byTool),a(3),z("Touched in ",t.sessions.length," session",t.sessions.length!==1?"s":""),a(2),y(t.sessions),a(3),m("size",13)}}function fe(r,e){if(r&1&&(i(0,"div",60)(1,"span",93),o(2),n(),i(3,"span",94),o(4),n(),i(5,"span",95),o(6),n()()),r&2){let t=e.$implicit,l=c(3);a(2),u(l.truncate(t.input,140)),a(2),v("\xD7",t.calls),a(2),u(l.fmtTokens(t.bytes))}}function be(r,e){r&1&&(i(0,"div",91),o(1,"No inputs captured."),n())}function ye(r,e){if(r&1&&(i(0,"div",75)(1,"span",82),o(2),n(),i(3,"span",83),o(4),n(),p(5,"app-icon",84),n()),r&2){let t,l=e.$implicit,s=c(3);a(2),u(s.shortId(l.session_id)),a(2),z(" ",(l.project_path==null||(t=l.project_path.split("/"))==null?null:t.pop())||""," \xB7 ",s.timeAgo(l.lastTs)," "),a(),m("size",12)}}function we(r,e){if(r&1&&(i(0,"div",66)(1,"div",85)(2,"div")(3,"div",47),o(4,"Calls"),n(),i(5,"div",86),o(6),n()(),i(7,"div")(8,"div",47),o(9,"Result tokens"),n(),i(10,"div",86),o(11),n()(),i(12,"div",22)(13,"div",69),o(14,"7-day"),n(),p(15,"app-sparkline",87),n()(),i(16,"div",88)(17,"span",21),o(18,"avg per call"),n(),i(19,"span",89),o(20),n()(),i(21,"div",71),o(22,"Top inputs"),n(),i(23,"div",90),b(24,fe,7,3,"div",60,I,!1,be,2,0,"div",91),n(),i(27,"div",71),o(28),n(),i(29,"div",92),b(30,ye,6,4,"div",75,ee),n()()),r&2){let t=e,l=c(2);a(6),u(t.totals.calls),a(4),k("color",t.totals.bytes>1e6?"var(--error)":"var(--text-primary)"),a(),u(l.fmtTokens(t.totals.bytes)),a(4),m("data",f(13,se))("fill",!0)("width",110)("height",28),a(4),k("color",t.totals.calls>0&&t.totals.bytes/t.totals.calls>3e4?"var(--error)":t.totals.calls>0&&t.totals.bytes/t.totals.calls>8e3?"var(--warn)":"var(--text-secondary)"),a(),v(" ",l.fmtTokens(t.totals.calls>0?l.Math.round(t.totals.bytes/t.totals.calls):0)," tokens "),a(4),y(t.inputs),a(4),v("Used in ",t.totals.sessions," sessions"),a(2),y(t.recentSessions)}}function ke(r,e){if(r&1&&(i(0,"div",104),o(1),n()),r&2){let t=c().$implicit,l=c(3);a(),u(l.truncate(t.description,160))}}function Ce(r,e){if(r&1&&(i(0,"div",105),o(1),n()),r&2){let t=c().$implicit,l=c(3);a(),u(l.truncate(t.prompt,200))}}function Se(r,e){if(r&1&&(i(0,"div",98)(1,"div",101)(2,"span",102),o(3),n(),i(4,"span",103),o(5),n()(),_(6,ke,2,1,"div",104),_(7,Ce,2,1,"div",105),n()),r&2){let t=e.$implicit,l=c(3);a(3),u(l.shortId(t.session_id)),a(2),u(l.timeAgo(t.ts)),a(),h(t.description?6:-1),a(),h(t.prompt?7:-1)}}function Ee(r,e){r&1&&(i(0,"div",99),o(1,"No invocations in window."),n())}function Te(r,e){if(r&1&&(i(0,"div",66)(1,"div",85)(2,"div")(3,"div",47),o(4,"Invocations"),n(),i(5,"div",96),o(6),n()(),i(7,"div")(8,"div",47),o(9,"Sessions"),n(),i(10,"div",96),o(11),n()()(),i(12,"div",71),o(13,"Invocations"),n(),i(14,"div",97),b(15,Se,8,4,"div",98,I,!1,Ee,2,0,"div",99),n(),i(18,"button",76),p(19,"app-icon",100),o(20,"See related tips "),n()()),r&2){let t=e;a(6),u(t.totals.calls),a(5),u(t.totals.sessions),a(4),y(t.invocations),a(4),m("size",13)}}function Me(r,e){if(r&1){let t=E();i(0,"aside",44)(1,"header",59)(2,"div",60),p(3,"app-icon",61),i(4,"span",62),o(5),n()(),i(6,"button",63),w("click",function(){C(t);let s=c();return S(s.closeDrill())}),p(7,"app-icon",64),n()(),_(8,ge,2,0,"div",65),_(9,he,24,8,"div",66),_(10,we,32,14,"div",66),_(11,Te,21,4,"div",66),n()}if(r&2){let t,l,s,d=e,g=c();a(3),k("color",d.kind==="file"?"var(--warn)":d.kind==="tool"?"var(--node-code)":"var(--node-route)"),m("name",d.kind==="file"?"box":d.kind==="tool"?"wrench":"bot")("size",14),a(2),u(g.drillTitle()),a(2),m("size",14),a(),h(g.drillLoading()?8:-1),a(),h((t=d.kind==="file"&&g.fileDrill.state().data)?9:-1,t),a(),h((l=d.kind==="tool"&&g.toolDrill.state().data)?10:-1,l),a(),h((s=d.kind==="subagent"&&g.subagentDrill.state().data)?11:-1,s)}}var Y=class r{Math=Math;api=H(K);range=M("week");metric=M("calls");resource=T(this.api,()=>`/api/claude/heatmap?range=${this.range()}`);files=x(()=>this.resource.state().data?.files??[]);tools=x(()=>this.resource.state().data?.tools??[]);subagents=x(()=>this.resource.state().data?.subagents??[]);subagentByName=x(()=>this.resource.state().data?.subagentByName??[]);totalCalls=x(()=>this.tools().reduce((e,t)=>e+t.calls,0));totalResultTokens=x(()=>this.tools().reduce((e,t)=>e+(t.resultBytes||0),0));busiestFile=x(()=>[...this.files()].sort((e,t)=>t.calls-e.calls)[0]??null);heaviestTool=x(()=>[...this.tools()].sort((e,t)=>(t.resultBytes||0)-(e.resultBytes||0))[0]??null);toolsByTokens=x(()=>[...this.tools()].sort((e,t)=>(t.resultBytes||0)-(e.resultBytes||0)));maxToolTokens=x(()=>Math.max(1,...this.toolsByTokens().map(e=>e.resultBytes||0)));treemapItems=x(()=>{let e=this.metric(),t=d=>e==="tokens"?d.resultBytes||0:d.calls,l=[...this.files()].sort((d,g)=>t(g)-t(d)).slice(0,48);if(!l.length)return[];let s=Math.max(1,...l.map(d=>(d.resultBytes||0)/Math.max(1,d.calls)));return l.map(d=>{let g=(d.resultBytes||0)/Math.max(1,d.calls);return{key:d.path,label:L(d.path),value:t(d),intensity:g/s,sub:e==="tokens"?this.fmtTokens(d.resultBytes||0):d.calls+" calls",title:`${d.path}
2
+ ${d.calls} calls \xB7 ${this.fmtTokens(d.resultBytes||0)} result tokens \xB7 ${this.fmtTokens(Math.round(g))}/call`}})});drill=M(null);fileDrill=T(this.api,()=>{let e=this.drill();return e?.kind==="file"?`/api/claude/heatmap/file?path=${encodeURIComponent(e.key)}&range=${this.range()}`:null});toolDrill=T(this.api,()=>{let e=this.drill();return e?.kind==="tool"?`/api/claude/heatmap/tool?name=${encodeURIComponent(e.key)}&range=${this.range()}`:null});subagentDrill=T(this.api,()=>{let e=this.drill();return e?.kind==="subagent"?`/api/claude/heatmap/subagent?type=${encodeURIComponent(e.key)}&range=${this.range()}`:null});drillTitle=x(()=>{let e=this.drill();return e?e.key:""});drillLoading=x(()=>{let e=this.drill();return e?e.kind==="file"?this.fileDrill.state().loading:e.kind==="tool"?this.toolDrill.state().loading:this.subagentDrill.state().loading:!1});setRange(e){this.range.set(e)}setMetric(e){this.metric.set(e)}openFile(e){this.drill.set({kind:"file",key:e})}openToolByName(e){this.drill.set({kind:"tool",key:e})}openSubagent(e){this.drill.set({kind:"subagent",key:e})}closeDrill(){this.drill.set(null)}fileTrendFor(e){return this.files().find(t=>t.path===e)?.trend??[]}fileTotalCalls(e){return e.reduce((t,l)=>t+l.calls,0)}effColor(e){return e>2e4?"var(--error)":e>8e3?"var(--warn)":"var(--success)"}fmtTokens=e=>e>=1e6?(e/1e6).toFixed(1)+"M":e>=1e3?(e/1e3).toFixed(0)+"k":String(e);fmtBytes(e){return e>=1e6?(e/1e6).toFixed(1)+"MB":e>=1e3?(e/1e3).toFixed(0)+"kB":e+"B"}timeAgo(e){let t=Date.now()-e;return t<6e4?"just now":t<36e5?Math.round(t/6e4)+"m ago":t<864e5?Math.round(t/36e5)+"h ago":Math.round(t/864e5)+"d ago"}shortId(e){return e.slice(0,8)}shortFile(e){return e?e.split("/").filter(Boolean).slice(-2).join("/")||e:"\u2014"}truncate(e,t=120){return e.length>t?e.slice(0,t)+"\u2026":e}static \u0275fac=function(t){return new(t||r)};static \u0275cmp=F({type:r,selectors:[["app-heatmap"]],decls:98,vars:38,consts:[[1,"hm-root"],[1,"page","scroll-y"],[2,"margin-bottom","18px"],["icon","heatmap","title","Heatmap","sub","Where tool calls land \u2014 files, tools, subagents"],["actions",""],["size","sm",3,"change","value","options"],[1,"sum-grid",2,"margin-bottom","14px"],[1,"card","sum-card"],[1,"row","gap-6",2,"color","var(--text-muted)","white-space","nowrap","margin-bottom","3px"],["name","wrench",2,"color","var(--node-spec)","flex-shrink","0",3,"size"],[1,"eyebrow"],[1,"mono","tabular",2,"font-size","18px","font-weight","650","letter-spacing","-0.01em"],[1,"mono","muted",2,"font-size","10px"],["name","database",2,"color","var(--node-route)","flex-shrink","0",3,"size"],["name","box",2,"color","var(--warn)","flex-shrink","0",3,"size"],[1,"mono","tabular",2,"font-size","18px","font-weight","650","letter-spacing","-0.01em","overflow","hidden","text-overflow","ellipsis","white-space","nowrap"],["name","flame",2,"color","var(--error)","flex-shrink","0",3,"size"],[1,"card","card-pad",2,"margin-bottom","14px"],[1,"row","gap-8",2,"margin-bottom","12px"],["name","box",2,"color","var(--warn)",3,"size"],[2,"font-weight","600","font-size","12.5px"],[1,"muted",2,"font-size","11px"],[1,"grow"],[1,"empty"],[1,"bottom-grid"],[1,"card","card-pad"],[1,"row","gap-8",2,"margin-bottom","4px"],["name","wrench",2,"color","var(--node-code)",3,"size"],[1,"row",2,"padding","8px 0 4px","font-size","9.5px","color","var(--text-muted)","text-transform","uppercase","letter-spacing","0.05em","font-weight","600"],[2,"width","116px"],[2,"width","36px","text-align","right"],[2,"width","64px","text-align","right"],[2,"width","48px","text-align","right"],[2,"width","14px"],[1,"col","gap-2"],["type","button",1,"tool-eff-row","row","gap-8",3,"sel"],[1,"muted","row","gap-12",2,"font-size","10.5px","margin-top","10px"],[1,"row","gap-4"],[2,"width","8px","height","8px","border-radius","2px","background","var(--error)"],[2,"width","8px","height","8px","border-radius","2px","background","var(--warn)"],[2,"width","8px","height","8px","border-radius","2px","background","var(--success)"],[1,"row","gap-8",2,"margin-bottom","14px"],["name","bot",2,"color","var(--node-route)",3,"size"],["valueKey","calls","color","var(--node-route)",3,"items","fmt","selectedKey"],[1,"hm-drawer"],["variant","detailed",3,"pick","items","height","selKey"],[1,"row","gap-12",2,"margin-top","10px","align-items","center"],[1,"muted",2,"font-size","10.5px"],[1,"row",2,"width","120px","height","7px","border-radius","999px","overflow","hidden","background","linear-gradient(90deg, var(--node-route), var(--warn), var(--error))"],[1,"muted",2,"font-size","10px"],["type","button",1,"tool-eff-row","row","gap-8",3,"click"],[1,"mono",2,"width","116px","flex-shrink","0","font-size","11.5px","overflow","hidden","text-overflow","ellipsis","white-space","nowrap"],[1,"grow",2,"height","16px","background","var(--bg-hover)","border-radius","4px","overflow","hidden"],[2,"height","100%","border-radius","4px"],[1,"mono","tabular","muted",2,"width","36px","text-align","right","font-size","10.5px","flex-shrink","0"],[1,"mono","tabular",2,"width","64px","text-align","right","font-size","10.5px","flex-shrink","0"],[1,"mono","tabular",2,"width","48px","text-align","right","font-size","11.5px","font-weight","600","flex-shrink","0"],["name","chevronRight",2,"color","var(--text-faint)","flex-shrink","0",3,"size"],["valueKey","calls","color","var(--node-route)",3,"itemClick","items","fmt","selectedKey"],[1,"hm-drawer-head"],[1,"row","gap-8"],[3,"name","size"],[1,"mono","grow",2,"font-size","13px","font-weight","600","overflow","hidden","text-overflow","ellipsis","white-space","nowrap"],["type","button","aria-label","Close",1,"btn","btn-ghost","btn-xs",3,"click"],["name","x",3,"size"],[1,"muted","hm-pad"],[1,"scroll-y",2,"flex","1","padding","14px"],[1,"row",2,"gap","20px","margin-bottom","16px"],[1,"tabular",2,"font-size","26px","font-weight","700","line-height","1"],[1,"muted",2,"font-size","10.5px","margin-bottom","4px"],["color","var(--warn)",3,"data","fill","width","height"],[1,"eyebrow",2,"margin-bottom","8px"],[1,"col","gap-8",2,"margin-bottom","18px"],[1,"row","gap-10"],[1,"col","gap-6",2,"margin-bottom","18px"],[1,"session-link","row","gap-8"],[1,"btn","btn-secondary","btn-sm",2,"width","100%","justify-content","center"],["name","reveal",3,"size"],[1,"mono",2,"font-size","11.5px","width","92px","flex-shrink","0","overflow","hidden","text-overflow","ellipsis","white-space","nowrap"],[3,"frac","color"],[1,"mono","tabular","muted",2,"font-size","10.5px","width","22px","text-align","right"],[1,"mono","tabular",2,"font-size","10.5px","width","44px","text-align","right"],[1,"mono",2,"font-size","11.5px","flex-shrink","0"],[1,"muted","grow",2,"font-size","10.5px","overflow","hidden","text-overflow","ellipsis","white-space","nowrap"],["name","chevronRight",2,"color","var(--text-muted)","flex-shrink","0",3,"size"],[1,"row",2,"gap","16px","margin-bottom","16px"],[1,"tabular",2,"font-size","24px","font-weight","700","line-height","1"],["color","var(--node-code)",3,"data","fill","width","height"],[1,"row","gap-8",2,"margin-bottom","16px"],[1,"mono","tabular",2,"font-size","12px"],[1,"col","gap-7",2,"margin-bottom","18px"],[1,"muted",2,"padding","8px 0","font-size","11.5px"],[1,"col","gap-6"],[1,"mono",2,"font-size","11px","flex","1","min-width","0","overflow","hidden","text-overflow","ellipsis","white-space","nowrap","color","var(--text-secondary)"],[1,"mono","tabular","muted",2,"font-size","10px","width","20px","text-align","right"],[1,"mono","tabular",2,"font-size","10px","width","40px","text-align","right"],[1,"tabular",2,"font-size","22px","font-weight","700","line-height","1"],[1,"col","gap-6",2,"margin-bottom","16px"],[1,"inv-card"],[1,"muted",2,"font-size","11.5px","padding","8px 0"],["name","tips",3,"size"],[1,"row","gap-8",2,"margin-bottom","4px","font-size","11px"],[1,"mono"],[1,"muted"],[2,"font-size","12px","line-height","1.45"],[1,"muted","mono",2,"font-size","11px","line-height","1.45","margin-top","4px","overflow-wrap","anywhere"]],template:function(t,l){if(t&1&&(i(0,"div",0)(1,"div",1)(2,"div",2)(3,"app-page-head",3),P(4,4),i(5,"app-segmented",5),w("change",function(d){return l.setRange(d)}),n(),N(),n()(),i(6,"div",6)(7,"div",7)(8,"div",8),p(9,"app-icon",9),i(10,"span",10),o(11,"Tool calls"),n()(),i(12,"div",11),o(13),V(14,"number"),n(),i(15,"div",12),o(16),n()(),i(17,"div",7)(18,"div",8),p(19,"app-icon",13),i(20,"span",10),o(21,"Result tokens"),n()(),i(22,"div",11),o(23),n(),i(24,"div",12),o(25,"returned to context"),n()(),i(26,"div",7)(27,"div",8),p(28,"app-icon",14),i(29,"span",10),o(30,"Busiest file"),n()(),i(31,"div",15),o(32),n(),i(33,"div",12),o(34),n()(),i(35,"div",7)(36,"div",8),p(37,"app-icon",16),i(38,"span",10),o(39,"Heaviest tool"),n()(),i(40,"div",11),o(41),n(),i(42,"div",12),o(43),n()()(),i(44,"div",17)(45,"div",18),p(46,"app-icon",19),i(47,"span",20),o(48,"Files"),n(),i(49,"span",21),o(50),n(),p(51,"div",22),i(52,"app-segmented",5),w("change",function(d){return l.setMetric(d)}),n()(),_(53,pe,2,0,"div",23)(54,me,10,3),n(),i(55,"div",24)(56,"div",25)(57,"div",26),p(58,"app-icon",27),i(59,"span",20),o(60,"Tools"),n(),i(61,"span",21),o(62,"\xB7 by result tokens, ranked"),n()(),i(63,"div",28)(64,"span",29),o(65,"Tool"),n(),i(66,"span",22),o(67,"Result tokens"),n(),i(68,"span",30),o(69,"Calls"),n(),i(70,"span",31),o(71,"Per call"),n(),i(72,"span",32),o(73,"Total"),n(),p(74,"span",33),n(),i(75,"div",34),b(76,ce,12,15,"button",35,Z),n(),i(78,"div",36)(79,"span",37),p(80,"span",38),o(81,">20k / call"),n(),i(82,"span",37),p(83,"span",39),o(84,">8k"),n(),i(85,"span",37),p(86,"span",40),o(87,"lean"),n()()(),i(88,"div",25)(89,"div",41),p(90,"app-icon",42),i(91,"span",20),o(92,"Subagents"),n(),i(93,"span",21),o(94,"\xB7 by sidechain attribution"),n()(),_(95,ue,2,0,"div",23)(96,xe,1,3,"app-h-bars",43),n()()(),_(97,Me,12,10,"aside",44),n()),t&2){let s,d,g,B,D;a(5),m("value",l.range())("options",$(28,oe,f(24,te),f(25,ne),f(26,ie),f(27,ae))),a(4),m("size",12),a(4),u(j(14,22,l.totalCalls())),a(3),v("this ",l.range()),a(3),m("size",12),a(4),u(l.fmtTokens(l.totalResultTokens())),a(5),m("size",12),a(4),v(" ",l.shortFile((s=l.busiestFile())==null?null:s.path)," "),a(2),v("",((d=l.busiestFile())==null?null:d.calls)||0," calls"),a(3),m("size",12),a(4),u(((g=l.heaviestTool())==null?null:g.name)||"\u2014"),a(2),v("",l.fmtTokens(((B=l.heaviestTool())==null?null:B.resultBytes)||0)," tokens"),a(3),m("size",14),a(4),v("\xB7 area = ",l.metric()==="tokens"?"result tokens":"tool calls",", color = tokens / call"),a(2),m("value",l.metric())("options",O(35,de,f(33,le),f(34,re))),a(),h(l.files().length===0?53:54),a(5),m("size",14),a(18),y(l.toolsByTokens()),a(14),m("size",14),a(5),h(l.subagentByName().length===0?95:96),a(2),h((D=l.drill())?97:-1,D)}},dependencies:[W,q,G,X,Q,J,U,A],styles:["[_nghost-%COMP%]{display:contents}.hm-root[_ngcontent-%COMP%]{flex:1;display:flex;min-height:0;min-width:0}.page[_ngcontent-%COMP%]{flex:1;min-width:0;padding:18px}.muted[_ngcontent-%COMP%]{color:var(--text-muted)}.mono[_ngcontent-%COMP%]{font-family:var(--font-mono)}.tabular[_ngcontent-%COMP%]{font-variant-numeric:tabular-nums}.empty[_ngcontent-%COMP%]{color:var(--text-muted);padding:18px;text-align:center;font-size:12.5px}.card[_ngcontent-%COMP%]{background:var(--bg-panel);border:1px solid var(--border-subtle);border-radius:var(--r-lg)}.card-pad[_ngcontent-%COMP%]{padding:14px}.sum-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.sum-card[_ngcontent-%COMP%]{padding:10px 13px;display:flex;flex-direction:column;gap:3px;min-width:0}.bottom-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:1fr 1fr;gap:14px}@media(max-width:1100px){.bottom-grid[_ngcontent-%COMP%]{grid-template-columns:1fr}}.tool-eff-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;padding:6px 8px;margin:0 -8px;border-radius:6px;cursor:pointer;background:transparent;border:none;color:inherit;font-family:inherit;text-align:left}.tool-eff-row[_ngcontent-%COMP%]:hover{background:var(--bg-hover)}.tool-eff-row.sel[_ngcontent-%COMP%]{background:var(--accent-soft)}.hm-drawer[_ngcontent-%COMP%]{width:360px;flex-shrink:0;border-left:1px solid var(--border-subtle);background:var(--bg-panel);display:flex;flex-direction:column;height:100%;overflow:hidden;animation:_ngcontent-%COMP%_hm-slide-in .16s ease-out}@keyframes _ngcontent-%COMP%_hm-slide-in{0%{transform:translate(20px);opacity:0}to{transform:translate(0);opacity:1}}.hm-drawer-head[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 14px;border-bottom:1px solid var(--border-subtle);flex-shrink:0;position:sticky;top:0;background:var(--bg-panel);z-index:1}.hm-pad[_ngcontent-%COMP%]{padding:16px}.session-link[_ngcontent-%COMP%]{padding:7px 9px;border-radius:7px;border:1px solid var(--border-subtle);cursor:pointer}.session-link[_ngcontent-%COMP%]:hover{background:var(--bg-hover)}.inv-card[_ngcontent-%COMP%]{background:var(--bg-canvas);border:1px solid var(--border-subtle);border-radius:6px;padding:8px 10px;margin-bottom:8px}.inv-card[_ngcontent-%COMP%]:last-child{margin-bottom:0}"],changeDetection:0})};export{Y as Heatmap};
@@ -0,0 +1 @@
1
+ import{a as U}from"./chunk-SCNDZRN2.js";import{a as G}from"./chunk-G7VZT5KB.js";import{a as q}from"./chunk-HVVXPI4D.js";import{a as Q}from"./chunk-OM7JVWQQ.js";import{a as B}from"./chunk-RSZZWGGC.js";import{a as h,b as j}from"./chunk-AHLX543M.js";import{a as N,c as $,d as V}from"./chunk-DSGNOCKQ.js";import{c as A}from"./chunk-B3CWIVBW.js";import{a as F}from"./chunk-W22AVG3N.js";import{a as R}from"./chunk-4JYHAP7B.js";import{Aa as s,Ga as P,I as v,Ia as C,Ka as c,M as f,N as b,Ta as M,Ua as w,Va as l,W as E,Wa as _,Xa as y,Ya as O,aa as T,ea as i,ka as z,lb as m,qa as I,ra as g,sa as u,va as k,wa as S,xa as p,ya as a,yb as L,za as r,zb as H}from"./chunk-MFHO2F2U.js";import"./chunk-Q7L6LLAK.js";var D=(n,e)=>e.id;function W(n,e){n&1&&(a(0,"div",1),s(1,"div",3)(2,"div",4)(3,"div",5)(4,"div",6)(5,"div",7),r())}function X(n,e){if(n&1&&(a(0,"app-empty",2)(1,"a",8),s(2,"app-icon",9),l(3," Back to Specs "),r()()),n&2){let t=c();p("body","No spec matches "+t.specId()+"."),i(2),p("size",12)}}function Y(n,e){if(n&1&&(a(0,"app-pill",20),l(1),r()),n&2){let t=c();p("color","var(--node-code)")("bg","var(--node-code-soft)"),i(),_(t.priority)}}function Z(n,e){if(n&1&&(a(0,"span",22),l(1,"owned by "),a(2,"span",37),l(3),r()()),n&2){let t=c();i(3),_(t.owner)}}function ee(n,e){if(n&1&&(a(0,"span",22),l(1),r()),n&2){let t=c(2);i(),y("verified ",t.relTime(e))}}function te(n,e){if(n&1&&s(0,"span",43),n&2){let t=e.$implicit,o=c(3);M("background",o.critColor(t.state)),w("pending",t.state==="pending"),p("title",t.id+" \xB7 "+o.stateLabel(t.state))}}function ne(n,e){n&1&&s(0,"app-icon",45),n&2&&p("name",e)("size",12)}function ie(n,e){if(n&1&&s(0,"span",49),n&2){let t=c().$implicit,o=c(3);M("border-color",o.critColor(t.state))}}function oe(n,e){if(n&1&&(a(0,"div",42)(1,"span",44),g(2,ne,1,2,"app-icon",45)(3,ie,1,2,"span",46),r(),a(4,"span",47),l(5),r(),a(6,"span",48),l(7),r()()),n&2){let t,o=e.$implicit,d=e.$index,x=c(3);i(),M("background",x.critBg(o.state))("color",x.critColor(o.state)),p("title",x.stateLabel(o.state)),i(),u((t=x.critIcon(o.state))?2:3,t),i(3),y("A",d+1),i(2),_(o.title)}}function re(n,e){if(n&1&&(a(0,"section",23)(1,"div",26)(2,"div",24),l(3,"Acceptance criteria"),r(),a(4,"div",38),l(5),r()(),a(6,"div",39),k(7,te,1,5,"span",40,D),r(),a(9,"div",41),k(10,oe,8,8,"div",42,D),r()()),n&2){let t=c(2);i(4),w("all-met",t.metCount()===t.criteria().length),i(),O(" ",t.metCount()," / ",t.criteria().length," met "),i(2),S(t.criteria()),i(3),S(t.criteria())}}function ae(n,e){if(n&1&&(a(0,"div",27),l(1),r()),n&2){let t=c(2);i(),O("",t.links().length," ",t.links().length===1?"symbol":"symbols")}}function de(n,e){if(n&1&&(a(0,"div",28),l(1,"No linked code yet \u2014 run "),a(2,"span",50),l(3),r(),l(4," to link it."),r()),n&2){let t,o=c(2);i(3),y("/ss-spec implement ",(t=o.spec())==null?null:t.id)}}function le(n,e){if(n&1&&(a(0,"app-pill"),l(1),r()),n&2){let t=c().$implicit;i(),_(t.provenance)}}function ce(n,e){if(n&1){let t=P();a(0,"div",51),s(1,"app-state-pill",52),a(2,"span",53),l(3),r(),s(4,"span",54),g(5,le,2,1,"app-pill"),a(6,"button",55),C("click",function(){let d=f(t).$implicit,x=c(3);return b(x.revealLink(d))}),s(7,"app-icon",56),l(8," Reveal "),r()()}if(n&2){let t=e.$implicit,o=c(3);i(),p("state",t.state),i(2),_(o.linkTarget(t)),i(2),u(t.provenance?5:-1),i(),I("aria-label","Reveal "+o.linkTarget(t)),i(),p("size",12)}}function pe(n,e){if(n&1&&(a(0,"div",29),k(1,ce,9,5,"div",51,D),r()),n&2){let t=c(2);i(),S(t.links())}}function se(n,e){if(n&1){let t=P();a(0,"div",10)(1,"a",11),s(2,"app-icon",12),l(3," Specs "),r(),a(4,"span",13),l(5,"/"),r(),a(6,"span",14),l(7),r(),a(8,"span",13),l(9,"\xB7"),r(),a(10,"span",15),l(11),r(),s(12,"app-copy-btn",16),r(),a(13,"h1",17),l(14),r(),a(15,"div",18),s(16,"app-state-pill",19),g(17,Y,2,3,"app-pill",20),a(18,"span",21),l(19),r(),g(20,Z,4,1,"span",22),g(21,ee,2,1,"span",22),r(),a(22,"section",23)(23,"div",24),l(24,"Requirement"),r(),s(25,"div",25),r(),g(26,re,12,4,"section",23),a(27,"section",23)(28,"div",26)(29,"div",24),l(30,"Linked code"),r(),g(31,ae,2,2,"div",27),r(),g(32,de,5,1,"div",28)(33,pe,3,0,"div",29),r(),a(34,"div",30)(35,"button",31),C("click",function(){f(t);let d=c();return b(d.onImplement())}),s(36,"app-icon",32),l(37),r(),a(38,"button",33),C("click",function(){f(t);let d=c();return b(d.onVerify())}),s(39,"app-icon",34),l(40),r(),a(41,"button",33),C("click",function(){f(t);let d=c();return b(d.onEdit())}),s(42,"app-icon",35),l(43," Edit spec "),r(),a(44,"button",33),C("click",function(){f(t);let d=c();return b(d.onShowInGraph())}),s(45,"app-icon",36),l(46," Show in graph "),r()()}if(n&2){let t,o=e,d=c();i(2),p("size",13),i(5),_(o.sourcePath),i(4),_(o.id),i(),p("text",o.id),i(2),_(o.title),i(2),p("state",d.overallState())("withDot",!0),i(),u(o.priority?17:-1),i(2),_(o.kind),i(),u(o.owner?20:-1),i(),u((t=d.verifiedAt())?21:-1,t),i(4),p("innerHTML",d.bodyHtml(),T),i(),u(d.criteria().length>0?26:-1),i(5),u(d.links().length>0?31:-1),i(),u(d.links().length===0?32:33),i(4),p("size",12),i(),y(" ",d.copied()==="implement"?"Copied!":"Implement"," "),i(2),p("size",12),i(),y(" ",d.copied()==="verify"?"Copied!":"Verify"," "),i(2),p("size",12),i(3),p("size",12)}}function K(n){return n.replace(/<!--[\s\S]*?-->/g,"")}var me=["broken","orphaned","drifted","drafted","implementing","implemented","verified"],xe={verified:"check",implemented:"check",completed:"check",drifted:"drift",broken:"cancel",orphaned:"cancel",failed:"cancel"};function ge(n){return n.length?n.some(e=>e.state==="broken")?"broken":n.some(e=>e.state==="orphaned")?"orphaned":n.some(e=>e.state==="drifted")?"drifted":n.every(e=>e.state==="verified")?"verified":"implemented":"pending"}var J=class n{api=v(R);projects=v(F);router=v($);route=v(N);sanitizer=v(L);paramMap=U(this.route.paramMap,{initialValue:this.route.snapshot.paramMap});specId=m(()=>this.paramMap().get("id")??"");detail=A(this.api,()=>{let e=this.specId();return e?`/api/spec/${encodeURIComponent(e)}${this.projects.projectQuery()}`:null});loading=m(()=>this.detail.state().loading);spec=m(()=>this.detail.state().data?.spec??null);links=m(()=>this.detail.state().data?.links??[]);children=m(()=>this.detail.state().data?.children??[]);childLinks=m(()=>this.detail.state().data?.childLinks??{});notFound=m(()=>!this.loading()&&!!this.specId()&&!this.spec());overallState=m(()=>{let e=this.links();if(!e.length)return"drafted";for(let t of me)if(e.some(o=>o.state===t))return t;return"implemented"});verifiedAt=m(()=>{let e=this.links().filter(t=>t.state==="verified").map(t=>t.updatedAt);return e.length?Math.max(...e):null});criteria=m(()=>{let e=this.childLinks();return this.children().filter(t=>t.kind==="acceptance").map(t=>{let o=e[t.id]??[],d=ge(o);return{id:t.id,title:K(t.title).trim(),state:d,hasLinks:o.length>0,met:d==="verified"}})});metCount=m(()=>this.criteria().filter(e=>e.met).length);critIcon(e){return xe[e]??null}critColor(e){return h[e]?.color??"var(--text-muted)"}critBg(e){return h[e]?.bg??"rgba(255,255,255,0.05)"}bodyHtml=m(()=>this.sanitizer.bypassSecurityTrustHtml(G(K(this.spec()?.body??""))));stateColor(e){return h[e]?.color??"var(--node-spec)"}stateLabel(e){return h[e]?.label??e}relTime(e){let t=Date.now()-e,o=Math.max(0,Math.round(t/1e3));if(o<60)return`${o}s ago`;let d=Math.round(o/60);if(d<60)return`${d}m ago`;let x=Math.round(d/60);return x<24?`${x}h ago`:`${Math.round(x/24)}d ago`}linkTarget(e){return`${e.targetFilePath}:${e.targetQualifiedName}`}copied=E(null);copyCmd(e,t){try{navigator.clipboard?.writeText(e)}catch{}this.copied.set(t),setTimeout(()=>{this.copied()===t&&this.copied.set(null)},1800)}onImplement(){let e=this.spec()?.id;e&&this.copyCmd(`/ss-spec implement ${e}`,"implement")}onVerify(){this.copyCmd("/ss-check","verify")}onEdit(){this.router.navigate(["/specs"])}onShowInGraph(){let e=this.spec()?.id;this.router.navigate(["/graph"],{queryParams:e?{focus:"spec:"+e}:{}})}revealLink(e){this.router.navigate(["/graph"],{queryParams:{focus:this.linkTarget(e)}})}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=z({type:n,selectors:[["app-spec-detail"]],decls:4,vars:1,consts:[[1,"scroll-y","spec-detail"],[1,"sd-skel"],["icon","book","title","Spec not found",3,"body"],[1,"skel",2,"height","16px","width","220px","border-radius","5px"],[1,"skel",2,"height","34px","width","60%","border-radius","7px","margin-top","14px"],[1,"skel",2,"height","20px","width","340px","border-radius","6px","margin-top","12px"],[1,"skel",2,"height","120px","border-radius","10px","margin-top","22px"],[1,"skel",2,"height","160px","border-radius","10px","margin-top","14px"],["action","","routerLink","/specs",1,"btn","btn-secondary","btn-sm"],["name","arrowRight",3,"size"],[1,"sd-crumb"],["routerLink","/specs",1,"sd-back"],["name","chevronLeft",3,"size"],[1,"sd-sep"],[1,"mono","sd-path"],[1,"mono","sd-id"],["label","Copy spec id",3,"text"],[1,"sd-title"],[1,"sd-meta"],[3,"state","withDot"],[3,"color","bg"],[1,"sd-meta-kind"],[1,"sd-meta-dim"],[1,"sd-section"],[1,"sd-eyebrow"],[1,"sd-prose",3,"innerHTML"],[1,"sd-section-head"],[1,"sd-count"],[1,"sd-empty-row"],[1,"sd-links"],[1,"sd-actions"],["type","button",1,"btn","btn-primary","btn-sm",3,"click"],["name","play",3,"size"],["type","button",1,"btn","btn-secondary","btn-sm",3,"click"],["name","check",3,"size"],["name","book",3,"size"],["name","graph",3,"size"],[1,"sd-meta-owner"],[1,"sd-rollup"],[1,"sd-crit-bars"],[1,"sd-crit-seg",3,"pending","background","title"],[1,"sd-criteria"],[1,"sd-crit"],[1,"sd-crit-seg",3,"title"],[1,"sd-crit-mark",3,"title"],[3,"name","size"],[1,"sd-crit-dot",3,"border-color"],[1,"sd-crit-id","mono"],[1,"sd-crit-text"],[1,"sd-crit-dot"],[1,"mono"],[1,"sd-link"],[3,"state"],[1,"mono","sd-link-target"],[1,"grow"],["type","button",1,"btn","btn-ghost","btn-xs",3,"click"],["name","reveal",3,"size"]],template:function(t,o){if(t&1&&(a(0,"div",0),g(1,W,6,0,"div",1)(2,X,4,2,"app-empty",2)(3,se,47,21),r()),t&2){let d;i(),u(o.loading()?1:o.notFound()?2:(d=o.spec())?3:-1,d)}},dependencies:[V,H,j,Q,B,q],styles:['@charset "UTF-8";[_nghost-%COMP%]{display:contents}.spec-detail[_ngcontent-%COMP%]{flex:1;padding:22px 26px 40px;color:var(--text-primary);background:var(--bg-canvas);max-width:920px}.sd-skel[_ngcontent-%COMP%]{display:flex;flex-direction:column}.sd-crumb[_ngcontent-%COMP%]{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--text-muted);margin-bottom:12px}.sd-back[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:3px;color:var(--text-secondary);text-decoration:none;cursor:pointer}.sd-back[_ngcontent-%COMP%]:hover{color:var(--text-primary)}.sd-sep[_ngcontent-%COMP%]{color:var(--text-faint)}.sd-path[_ngcontent-%COMP%]{color:var(--text-secondary)}.sd-id[_ngcontent-%COMP%]{color:var(--node-spec)}.sd-title[_ngcontent-%COMP%]{font-size:24px;font-weight:650;letter-spacing:-.02em;line-height:1.18;margin:0 0 12px;color:var(--text-primary)}.sd-meta[_ngcontent-%COMP%]{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin-bottom:26px;font-size:12px}.sd-meta-kind[_ngcontent-%COMP%]{font-size:11px;color:var(--text-secondary);background:var(--bg-hover);border:1px solid var(--border-subtle);padding:2px 8px;border-radius:5px}.sd-meta-dim[_ngcontent-%COMP%]{color:var(--text-muted)}.sd-meta-owner[_ngcontent-%COMP%]{color:var(--text-secondary)}.sd-section[_ngcontent-%COMP%]{margin-bottom:24px}.sd-section-head[_ngcontent-%COMP%]{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:10px}.sd-eyebrow[_ngcontent-%COMP%]{font-size:10.5px;font-weight:650;letter-spacing:.09em;text-transform:uppercase;color:var(--text-muted);margin-bottom:10px}.sd-section-head[_ngcontent-%COMP%] .sd-eyebrow[_ngcontent-%COMP%]{margin-bottom:0}.sd-prose[_ngcontent-%COMP%]{font-size:14px;line-height:1.62;color:var(--text-secondary)}.sd-prose[_ngcontent-%COMP%] [_ngcontent-%COMP%]:global(strong){color:var(--text-primary);font-weight:600}.sd-prose[_ngcontent-%COMP%] [_ngcontent-%COMP%]:global(code){font-family:ui-monospace,Geist Mono,monospace;font-size:.86em;color:var(--node-spec);background:var(--node-spec-soft);padding:1px 5px;border-radius:4px}.sd-prose[_ngcontent-%COMP%] [_ngcontent-%COMP%]:global(p){margin:0 0 10px}.sd-rollup[_ngcontent-%COMP%]{font-size:11px;font-weight:600;color:var(--text-muted);font-family:ui-monospace,monospace}.sd-rollup.all-met[_ngcontent-%COMP%]{color:var(--success)}.sd-crit-bars[_ngcontent-%COMP%]{display:flex;gap:4px;margin-bottom:12px}.sd-crit-seg[_ngcontent-%COMP%]{flex:1;height:4px;border-radius:999px;opacity:.9}.sd-crit-seg.pending[_ngcontent-%COMP%]{opacity:.25}.sd-criteria[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:6px}.sd-crit[_ngcontent-%COMP%]{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:8px;background:var(--bg-panel);border:1px solid var(--border-subtle)}.sd-crit-mark[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:5px;flex-shrink:0}.sd-crit-dot[_ngcontent-%COMP%]{width:7px;height:7px;border-radius:50%;border:1.6px solid currentColor;box-sizing:border-box}.sd-crit-id[_ngcontent-%COMP%]{font-size:10px;color:var(--text-muted);flex-shrink:0;width:22px}.sd-crit-text[_ngcontent-%COMP%]{font-size:13px;color:var(--text-secondary);line-height:1.45}.sd-count[_ngcontent-%COMP%]{font-size:11px;color:var(--text-muted);font-family:ui-monospace,monospace}.sd-empty-row[_ngcontent-%COMP%]{font-size:12.5px;color:var(--text-muted);padding:12px;border-radius:8px;background:var(--bg-panel);border:1px dashed var(--border-subtle)}.sd-empty-row[_ngcontent-%COMP%] .mono[_ngcontent-%COMP%]{color:var(--text-secondary)}.sd-links[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:5px}.sd-link[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;padding:9px 12px;border-radius:8px;background:var(--bg-panel);border:1px solid var(--border-subtle);font-size:12.5px}.sd-link-state[_ngcontent-%COMP%]{display:inline-flex;align-items:center;flex-shrink:0}.sd-link-target[_ngcontent-%COMP%]{color:var(--text-primary)}.grow[_ngcontent-%COMP%]{flex:1}.sd-prov[_ngcontent-%COMP%]{font-size:10px;color:var(--text-muted);background:var(--bg-hover);border:1px solid var(--border-subtle);padding:1px 6px;border-radius:4px}.sd-link-statelabel[_ngcontent-%COMP%]{font-size:11px;font-weight:600}.sd-actions[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:8px;margin-top:28px;padding-top:18px;border-top:1px solid var(--border-subtle)}.mono[_ngcontent-%COMP%]{font-family:ui-monospace,Geist Mono,monospace}'],changeDetection:0})};export{J as SpecDetail};
@@ -0,0 +1 @@
1
+ import{n as e}from"./chunk-JTFXTIPE.js";var we={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\@\#\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g,comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],onEnterRules:[{beforeText:/^\s*\/\*\*(?!\/)([^\*]|\*(?!\/))*$/,afterText:/^\s*\*\/$/,action:{indentAction:e.IndentAction.IndentOutdent,appendText:" * "}},{beforeText:/^\s*\/\*\*(?!\/)([^\*]|\*(?!\/))*$/,action:{indentAction:e.IndentAction.None,appendText:" * "}},{beforeText:/^(\t|(\ \ ))*\ \*(\ ([^\*]|\*(?!\/))*)?$/,action:{indentAction:e.IndentAction.None,appendText:"* "}},{beforeText:/^(\t|(\ \ ))*\ \*\/\s*$/,action:{indentAction:e.IndentAction.None,removeText:1}}],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"',notIn:["string"]},{open:"'",close:"'",notIn:["string","comment"]},{open:"`",close:"`",notIn:["string","comment"]},{open:"/**",close:" */",notIn:["string"]}],folding:{markers:{start:new RegExp("^\\s*//\\s*#?region\\b"),end:new RegExp("^\\s*//\\s*#?endregion\\b")}}},Ae={defaultToken:"invalid",tokenPostfix:".ts",keywords:["abstract","any","as","asserts","bigint","boolean","break","case","catch","class","continue","const","constructor","debugger","declare","default","delete","do","else","enum","export","extends","false","finally","for","from","function","get","if","implements","import","in","infer","instanceof","interface","is","keyof","let","module","namespace","never","new","null","number","object","out","package","private","protected","public","override","readonly","require","global","return","satisfies","set","static","string","super","switch","symbol","this","throw","true","try","type","typeof","undefined","unique","unknown","var","void","while","with","yield","async","await","of"],operators:["<=",">=","==","!=","===","!==","=>","+","-","**","*","/","%","++","--","<<","</",">>",">>>","&","|","^","!","~","&&","||","??","?",":","=","+=","-=","*=","**=","/=","%=","<<=",">>=",">>>=","&=","|=","^=","@"],symbols:/[=><!~?:&|+\-*\/\^%]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,digits:/\d+(_+\d+)*/,octaldigits:/[0-7]+(_+[0-7]+)*/,binarydigits:/[0-1]+(_+[0-1]+)*/,hexdigits:/[[0-9a-fA-F]+(_+[0-9a-fA-F]+)*/,regexpctl:/[(){}\[\]\$\^|\-*+?\.]/,regexpesc:/\\(?:[bBdDfnrstvwWn0\\\/]|@regexpctl|c[A-Z]|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4})/,tokenizer:{root:[[/[{}]/,"delimiter.bracket"],{include:"common"}],common:[[/#?[a-z_$][\w$]*/,{cases:{"@keywords":"keyword","@default":"identifier"}}],[/[A-Z][\w\$]*/,"type.identifier"],{include:"@whitespace"},[/\/(?=([^\\\/]|\\.)+\/([dgimsuy]*)(\s*)(\.|;|,|\)|\]|\}|$))/,{token:"regexp",bracket:"@open",next:"@regexp"}],[/[()\[\]]/,"@brackets"],[/[<>](?!@symbols)/,"@brackets"],[/!(?=([^=]|$))/,"delimiter"],[/@symbols/,{cases:{"@operators":"delimiter","@default":""}}],[/(@digits)[eE]([\-+]?(@digits))?/,"number.float"],[/(@digits)\.(@digits)([eE][\-+]?(@digits))?/,"number.float"],[/0[xX](@hexdigits)n?/,"number.hex"],[/0[oO]?(@octaldigits)n?/,"number.octal"],[/0[bB](@binarydigits)n?/,"number.binary"],[/(@digits)n?/,"number"],[/[;,.]/,"delimiter"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/'([^'\\]|\\.)*$/,"string.invalid"],[/"/,"string","@string_double"],[/'/,"string","@string_single"],[/`/,"string","@string_backtick"]],whitespace:[[/[ \t\r\n]+/,""],[/\/\*\*(?!\/)/,"comment.doc","@jsdoc"],[/\/\*/,"comment","@comment"],[/\/\/.*$/,"comment"]],comment:[[/[^\/*]+/,"comment"],[/\*\//,"comment","@pop"],[/[\/*]/,"comment"]],jsdoc:[[/[^\/*]+/,"comment.doc"],[/\*\//,"comment.doc","@pop"],[/[\/*]/,"comment.doc"]],regexp:[[/(\{)(\d+(?:,\d*)?)(\})/,["regexp.escape.control","regexp.escape.control","regexp.escape.control"]],[/(\[)(\^?)(?=(?:[^\]\\\/]|\\.)+)/,["regexp.escape.control",{token:"regexp.escape.control",next:"@regexrange"}]],[/(\()(\?:|\?=|\?!)/,["regexp.escape.control","regexp.escape.control"]],[/[()]/,"regexp.escape.control"],[/@regexpctl/,"regexp.escape.control"],[/[^\\\/]/,"regexp"],[/@regexpesc/,"regexp.escape"],[/\\\./,"regexp.invalid"],[/(\/)([dgimsuy]*)/,[{token:"regexp",bracket:"@close",next:"@pop"},"keyword.other"]]],regexrange:[[/-/,"regexp.escape.control"],[/\^/,"regexp.invalid"],[/@regexpesc/,"regexp.escape"],[/[^\]]/,"regexp"],[/\]/,{token:"regexp.escape.control",next:"@pop",bracket:"@close"}]],string_double:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,"string","@pop"]],string_single:[[/[^\\']+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/'/,"string","@pop"]],string_backtick:[[/\$\{/,{token:"delimiter.bracket",next:"@bracketCounting"}],[/[^\\`$]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/`/,"string","@pop"]],bracketCounting:[[/\{/,"delimiter.bracket","@bracketCounting"],[/\}/,"delimiter.bracket","@pop"],{include:"common"}]}};export{we as a,Ae as b};
@@ -0,0 +1 @@
1
+ import"./chunk-Q7L6LLAK.js";var e={comments:{blockComment:["/*","*/"],lineComment:"//"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}",notIn:["string"]},{open:"[",close:"]",notIn:["string"]},{open:"(",close:")",notIn:["string"]},{open:'"',close:'"',notIn:["string"]},{open:"'",close:"'",notIn:["string"]}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"},{open:"<",close:">"}]},o={defaultToken:"",tokenPostfix:".flow",keywords:["import","require","export","forbid","native","if","else","cast","unsafe","switch","default"],types:["io","mutable","bool","int","double","string","flow","void","ref","true","false","with"],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:{"@keywords":"keyword","@types":"type","@default":"identifier"}}],{include:"@whitespace"},[/[{}()\[\]]/,"delimiter"],[/[<>](?!@symbols)/,"delimiter"],[/@symbols/,{cases:{"@operators":"delimiter","@default":""}}],[/((0(x|X)[0-9a-fA-F]*)|(([0-9]+\.?[0-9]*)|(\.[0-9]+))((e|E)(\+|-)?[0-9]+)?)/,"number"],[/[;,.]/,"delimiter"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/"/,"string","@string"]],whitespace:[[/[ \t\r\n]+/,""],[/\/\*/,"comment","@comment"],[/\/\/.*$/,"comment"]],comment:[[/[^\/*]+/,"comment"],[/\*\//,"comment","@pop"],[/[\/*]/,"comment"]],string:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,"string","@pop"]]}};export{e as conf,o as language};
@@ -0,0 +1 @@
1
+ import{a as k}from"./chunk-OM7JVWQQ.js";import{a as _}from"./chunk-KHU5M2AL.js";import{a as C}from"./chunk-RSZZWGGC.js";import{b as S}from"./chunk-AHLX543M.js";import{Aa as l,Ka as x,Ta as c,Va as a,Wa as m,Xa as y,ea as o,ka as f,ra as u,sa as b,ua as g,va as p,wa as s,xa as v,ya as t,za as n,zb as h}from"./chunk-MFHO2F2U.js";import"./chunk-Q7L6LLAK.js";var w=(i,r)=>r.name,P=(i,r)=>r.label;function M(i,r){if(i&1&&(t(0,"div",5),l(1,"div",34),t(2,"div",35)(3,"div",36),a(4),n(),t(5,"div",37),a(6),n()()()),i&2){let e=r.$implicit;o(),c("background","var("+e.varName+")"),o(3),m(e.name),o(2),m(e.hex)}}function O(i,r){if(i&1&&(t(0,"div",5),l(1,"div",34),t(2,"div",35)(3,"div",36),a(4),n(),t(5,"div",37),a(6),n()()()),i&2){let e=r.$implicit;o(),c("background","var("+e.varName+")"),o(3),m(e.name),o(2),m(e.hex)}}function B(i,r){if(i&1&&l(0,"span",38),i&2){let e=r.$implicit;c("background","var("+e+")")}}function D(i,r){if(i&1&&(t(0,"div",9),l(1,"app-state-pill",22),n()),i&2){let e=r.$implicit;o(),v("state",e)}}function T(i,r){if(i&1&&l(0,"app-state-pill",22),i&2){let e=r.$implicit;v("state",e)}}function N(i,r){if(i&1&&l(0,"app-state-pill",22),i&2){let e=r.$implicit;v("state",e)}}function $(i,r){if(i&1&&(t(0,"div",39),l(1,"span",41),t(2,"span",42),a(3),n()()),i&2){let e=x().$implicit,d=x();o(),c("background",d.nodeColor(e.kind,e.state))("box-shadow","0 0 8px "+d.nodeColor(e.kind,e.state)),o(2),m(e.label)}}function F(i,r){if(i&1&&l(0,"span",46),i&2){let e=x(2).$implicit;c("background",e.state==="drifted"?"var(--warn)":"var(--error)")}}function I(i,r){if(i&1&&(t(0,"div",43),l(1,"span",44),a(2),u(3,F,1,2,"span",45),n()),i&2){let e=x().$implicit,d=x();c("background",d.nodeBg(e.kind,e.state))("border",d.nodeBorder(e.kind,e.state))("border-radius",e.kind==="spec"?"7px":"999px"),o(),c("background",d.nodeColor(e.kind,e.state))("border-radius",e.kind==="spec"?"2px":"50%"),o(),y(" ",e.label," "),o(),b(e.state?3:-1)}}function z(i,r){if(i&1&&u(0,$,4,5,"div",39)(1,I,4,12,"div",40),i&2){let e=r.$implicit;b(e.kind==="route"?0:1)}}function A(i,r){if(i&1&&(t(0,"div",33),l(1,"app-icon",47),t(2,"span",48),a(3),n()()),i&2){let e=r.$implicit;o(),v("name",e)("size",18),o(2),m(e)}}var E=class i{surfaceSwatches=[{name:"bg/canvas",varName:"--bg-canvas",hex:"#0E1014"},{name:"bg/panel",varName:"--bg-panel",hex:"#161A21"},{name:"bg/elevated",varName:"--bg-elevated",hex:"#20262F"},{name:"text/primary",varName:"--text-primary",hex:"#E8EBF0"},{name:"text/secondary",varName:"--text-secondary",hex:"#9AA3B2"},{name:"accent/primary",varName:"--accent",hex:"#3B82F6"}];nodeSwatches=[{name:"accent/code",varName:"--node-code",hex:"purple"},{name:"accent/spec",varName:"--node-spec",hex:"blue"},{name:"accent/test",varName:"--node-test",hex:"green"},{name:"accent/route",varName:"--node-route",hex:"teal"}];nodeColorVars=["--node-code","--node-spec","--node-test","--node-route"];specLinkStates=["verified","implemented","implementing","drifted","broken","orphaned"];runStates=["pending","running","paused","completed","failed","cancelled"];semanticStates=["success","warn","error","info"];nodeSamples=[{label:"exploreGraph",kind:"code"},{label:"REQ-AUTH-005",kind:"spec",state:"drifted"},{label:"auth.test",kind:"test"},{label:"/explore",kind:"route"},{label:"REQ-GRAPH-009",kind:"spec",state:"orphaned"}];iconSample=["dashboard","graph","book","drift","workflow","play","chat","sessions","heatmap","dollar","compare","tips","memory","settings","box","search","command","refresh","filter","reveal","copy","recenter","plus","minus","check","x","arrowRight","sparkles","sun","moon"];nodeColor(r,e){return e==="drifted"?"var(--warn)":e==="orphaned"?"var(--error)":{code:"var(--node-code)",spec:"var(--node-spec)",test:"var(--node-test)",route:"var(--node-route)"}[r]??"var(--accent)"}nodeBg(r,e){return`color-mix(in srgb, ${this.nodeColor(r,e)} 16%, var(--bg-panel))`}nodeBorder(r,e){let d=this.nodeColor(r,e);return e?`1.5px solid ${d}`:`1.5px solid color-mix(in srgb, ${d} 45%, transparent)`}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=f({type:i,selectors:[["app-design"]],decls:96,vars:0,consts:[[1,"design-page","scroll-y"],["icon","layers","title","Design system","sub","Tokens, components and states \u2014 dark mode, WCAG AA"],[1,"ds-grid"],[1,"card","card-pad","ds-block"],[1,"eyebrow",2,"margin-bottom","12px"],[1,"swatch-row","row","gap-8"],[1,"row","gap-6",2,"margin-top","10px"],[1,"node-bar",3,"background"],[1,"muted",2,"font-size","10.5px","align-self","center","margin-left","4px"],[2,"margin-bottom","6px"],[2,"font-size","22px","font-weight","650","letter-spacing","-0.01em"],[2,"font-size","13px","margin-top","4px"],[1,"mono",2,"font-size","12px","margin-top","4px","color","var(--text-secondary)"],[1,"mono","tabular",2,"font-size","12px","margin-top","4px","color","var(--text-secondary)"],[1,"col","gap-8"],[1,"row","gap-6"],[1,"btn","btn-primary","btn-sm"],[1,"btn","btn-secondary","btn-sm"],[1,"btn","btn-ghost","btn-sm"],[1,"btn","btn-destructive","btn-sm"],["disabled","",1,"btn","btn-primary","btn-sm"],[1,"row","gap-6",2,"flex-wrap","wrap"],[3,"state"],["color","var(--node-code)","bg","var(--node-code-soft)"],["color","var(--warn)","bg","var(--warn-soft)"],["text","example","label","Copy"],[1,"muted",2,"font-size","11.5px","line-height","1.7"],[1,"card","card-pad","ds-block","ds-block-full"],[1,"row","gap-16",2,"flex-wrap","wrap","align-items","center"],[1,"col","gap-10",2,"max-width","320px"],["placeholder","Default input \u2014 try focusing",1,"input"],["value","3B82F6",1,"input"],[1,"icons-grid"],[1,"icon-cell","col","gap-4"],[1,"swatch-sq"],[2,"min-width","0"],[2,"font-size","12px"],[1,"mono","muted",2,"font-size","10px"],[1,"node-bar"],[1,"row","gap-8"],[1,"node-chip","row","gap-7",3,"background","border","border-radius"],[1,"route-dot"],[1,"mono","muted",2,"font-size","11px"],[1,"node-chip","row","gap-7"],[1,"node-dot"],[1,"node-state-dot",3,"background"],[1,"node-state-dot"],[3,"name","size"],[1,"mono","muted","xs"]],template:function(e,d){e&1&&(t(0,"div",0),l(1,"app-page-head",1),t(2,"div",2)(3,"div",3)(4,"div",4),a(5,"Surfaces & text"),n(),p(6,M,7,4,"div",5,w),n(),t(8,"div",3)(9,"div",4),a(10,"Node colors \xB7 distinct at 4px"),n(),p(11,O,7,4,"div",5,w),t(13,"div",6),p(14,B,1,2,"span",7,g),t(16,"span",8),a(17,"4px legibility test"),n()()(),t(18,"div",3)(19,"div",4),a(20,"Semantic states"),n(),p(21,D,2,1,"div",9,g),n(),t(23,"div",3)(24,"div",4),a(25,"Typography"),n(),t(26,"div",10),a(27,"Page title \xB7 22px"),n(),t(28,"div",11),a(29,"Body & labels \xB7 13px Geist"),n(),t(30,"div",12),a(31,"mono \xB7 validateSession()"),n(),t(32,"div",13),a(33,"tabular \xB7 $1,184.42"),n()(),t(34,"div",3)(35,"div",4),a(36,"Buttons"),n(),t(37,"div",14)(38,"div",15)(39,"button",16),a(40,"Primary"),n(),t(41,"button",17),a(42,"Secondary"),n(),t(43,"button",18),a(44,"Ghost"),n()(),t(45,"div",15)(46,"button",19),a(47,"Destructive"),n(),t(48,"button",20),a(49,"Disabled"),n()()()(),t(50,"div",3)(51,"div",4),a(52,"Spec link states"),n(),t(53,"div",21),p(54,T,1,1,"app-state-pill",22,g),n()(),t(56,"div",3)(57,"div",4),a(58,"Run states"),n(),t(59,"div",21),p(60,N,1,1,"app-state-pill",22,g),n()(),t(62,"div",3)(63,"div",4),a(64,"Pills & badges"),n(),t(65,"div",21)(66,"app-pill",23),a(67,"function"),n(),t(68,"app-pill"),a(69,"ts"),n(),t(70,"app-pill",24),a(71,"code drift"),n(),l(72,"app-copy-btn",25),n()(),t(73,"div",3)(74,"div",4),a(75,"Density"),n(),t(76,"div",26),a(77," List rows 36\u201340px \xB7 sidebar items 32px \xB7 card padding ~14px. Higher than a marketing site, lower than a trading terminal. "),n()(),t(78,"div",27)(79,"div",4),a(80,"Graph nodes"),n(),t(81,"div",28),p(82,z,2,1,null,null,P),n()(),t(84,"div",27)(85,"div",4),a(86,"Inputs"),n(),t(87,"div",29),l(88,"input",30)(89,"input",31),n()(),t(90,"div",27)(91,"div",4),a(92,"Iconography \xB7 Lucide"),n(),t(93,"div",32),p(94,A,4,3,"div",33,g),n()()()()),e&2&&(o(6),s(d.surfaceSwatches),o(5),s(d.nodeSwatches),o(3),s(d.nodeColorVars),o(7),s(d.semanticStates),o(33),s(d.specLinkStates),o(6),s(d.runStates),o(22),s(d.nodeSamples),o(12),s(d.iconSample))},dependencies:[h,_,S,k,C],styles:["[_nghost-%COMP%]{display:flex;flex:1;min-height:0}.design-page[_ngcontent-%COMP%]{flex:1;padding:18px;overflow-y:auto}.ds-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:1fr 1fr 1fr;gap:14px;max-width:1100px}.ds-block-full[_ngcontent-%COMP%]{grid-column:1/-1}.swatch-row[_ngcontent-%COMP%]{padding:5px 0;align-items:center}.swatch-sq[_ngcontent-%COMP%]{width:28px;height:28px;border-radius:7px;border:1px solid var(--border-subtle);flex-shrink:0}.node-bar[_ngcontent-%COMP%]{width:4px;height:28px;border-radius:2px;display:inline-block}.route-dot[_ngcontent-%COMP%]{width:16px;height:16px;border-radius:50%;flex-shrink:0}.node-chip[_ngcontent-%COMP%]{height:30px;padding:0 12px;font-family:var(--font-mono);font-size:12px;display:inline-flex;align-items:center;gap:7px}.node-dot[_ngcontent-%COMP%]{width:7px;height:7px;flex-shrink:0}.node-state-dot[_ngcontent-%COMP%]{width:6px;height:6px;border-radius:50%;flex-shrink:0}.icons-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fill,minmax(80px,1fr));gap:12px}.icon-cell[_ngcontent-%COMP%]{align-items:center;justify-content:center;padding:10px 6px;border:1px solid var(--border-subtle);border-radius:8px;background:var(--bg-panel);color:var(--text-secondary)}.icon-cell[_ngcontent-%COMP%]:hover{color:var(--text-primary);background:var(--bg-hover)}.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)}.tabular[_ngcontent-%COMP%]{font-variant-numeric:tabular-nums}.xs[_ngcontent-%COMP%]{font-size:11px}.col[_ngcontent-%COMP%]{display:flex;flex-direction:column}.row[_ngcontent-%COMP%]{display:flex;flex-direction:row}.gap-4[_ngcontent-%COMP%]{gap:4px}.gap-6[_ngcontent-%COMP%]{gap:6px}.gap-7[_ngcontent-%COMP%]{gap:7px}.gap-8[_ngcontent-%COMP%]{gap:8px}.gap-10[_ngcontent-%COMP%]{gap:10px}.gap-16[_ngcontent-%COMP%]{gap:16px}"],changeDetection:0})};export{E as Design};
@@ -0,0 +1 @@
1
+ import"./chunk-Q7L6LLAK.js";var e={brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}]},t={tokenPostfix:".julia",keywords:["begin","while","if","for","try","return","break","continue","function","macro","quote","let","local","global","const","do","struct","module","baremodule","using","import","export","end","else","elseif","catch","finally","mutable","primitive","abstract","type","in","isa","where","new"],types:["LinRange","LineNumberNode","LinearIndices","LoadError","MIME","Matrix","Method","MethodError","Missing","MissingException","Module","NTuple","NamedTuple","Nothing","Number","OrdinalRange","OutOfMemoryError","OverflowError","Pair","PartialQuickSort","PermutedDimsArray","Pipe","Ptr","QuoteNode","Rational","RawFD","ReadOnlyMemoryError","Real","ReentrantLock","Ref","Regex","RegexMatch","RoundingMode","SegmentationFault","Set","Signed","Some","StackOverflowError","StepRange","StepRangeLen","StridedArray","StridedMatrix","StridedVecOrMat","StridedVector","String","StringIndexError","SubArray","SubString","SubstitutionString","Symbol","SystemError","Task","Text","TextDisplay","Timer","Tuple","Type","TypeError","TypeVar","UInt","UInt128","UInt16","UInt32","UInt64","UInt8","UndefInitializer","AbstractArray","UndefKeywordError","AbstractChannel","UndefRefError","AbstractChar","UndefVarError","AbstractDict","Union","AbstractDisplay","UnionAll","AbstractFloat","UnitRange","AbstractIrrational","Unsigned","AbstractMatrix","AbstractRange","Val","AbstractSet","Vararg","AbstractString","VecElement","AbstractUnitRange","VecOrMat","AbstractVecOrMat","Vector","AbstractVector","VersionNumber","Any","WeakKeyDict","ArgumentError","WeakRef","Array","AssertionError","BigFloat","BigInt","BitArray","BitMatrix","BitSet","BitVector","Bool","BoundsError","CapturedException","CartesianIndex","CartesianIndices","Cchar","Cdouble","Cfloat","Channel","Char","Cint","Cintmax_t","Clong","Clonglong","Cmd","Colon","Complex","ComplexF16","ComplexF32","ComplexF64","CompositeException","Condition","Cptrdiff_t","Cshort","Csize_t","Cssize_t","Cstring","Cuchar","Cuint","Cuintmax_t","Culong","Culonglong","Cushort","Cvoid","Cwchar_t","Cwstring","DataType","DenseArray","DenseMatrix","DenseVecOrMat","DenseVector","Dict","DimensionMismatch","Dims","DivideError","DomainError","EOFError","Enum","ErrorException","Exception","ExponentialBackOff","Expr","Float16","Float32","Float64","Function","GlobalRef","HTML","IO","IOBuffer","IOContext","IOStream","IdDict","IndexCartesian","IndexLinear","IndexStyle","InexactError","InitError","Int","Int128","Int16","Int32","Int64","Int8","Integer","InterruptException","InvalidStateException","Irrational","KeyError"],keywordops:["<:",">:",":","=>","...",".","->","?"],allops:/[^\w\d\s()\[\]{}"'#]+/,constants:["true","false","nothing","missing","undef","Inf","pi","NaN","\u03C0","\u212F","ans","PROGRAM_FILE","ARGS","C_NULL","VERSION","DEPOT_PATH","LOAD_PATH"],operators:["!","!=","!==","%","&","*","+","-","/","//","<","<<","<=","==","===","=>",">",">=",">>",">>>","\\","^","|","|>","~","\xF7","\u2208","\u2209","\u220B","\u220C","\u2218","\u221A","\u221B","\u2229","\u222A","\u2248","\u2249","\u2260","\u2261","\u2262","\u2264","\u2265","\u2286","\u2287","\u2288","\u2289","\u228A","\u228B","\u22BB"],brackets:[{open:"(",close:")",token:"delimiter.parenthesis"},{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.square"}],ident:/π|ℯ|\b(?!\d)\w+\b/,escape:/(?:[abefnrstv\\"'\n\r]|[0-7]{1,3}|x[0-9A-Fa-f]{1,2}|u[0-9A-Fa-f]{4})/,escapes:/\\(?:C\-(@escape|.)|c(@escape|.)|@escape)/,tokenizer:{root:[[/(::)\s*|\b(isa)\s+/,"keyword","@typeanno"],[/\b(isa)(\s*\(@ident\s*,\s*)/,["keyword",{token:"",next:"@typeanno"}]],[/\b(type|struct)[ \t]+/,"keyword","@typeanno"],[/^\s*:@ident[!?]?/,"metatag"],[/(return)(\s*:@ident[!?]?)/,["keyword","metatag"]],[/(\(|\[|\{|@allops)(\s*:@ident[!?]?)/,["","metatag"]],[/:\(/,"metatag","@quote"],[/r"""/,"regexp.delim","@tregexp"],[/r"/,"regexp.delim","@sregexp"],[/raw"""/,"string.delim","@rtstring"],[/[bv]?"""/,"string.delim","@dtstring"],[/raw"/,"string.delim","@rsstring"],[/[bv]?"/,"string.delim","@dsstring"],[/(@ident)\{/,{cases:{"$1@types":{token:"type",next:"@gen"},"@default":{token:"type",next:"@gen"}}}],[/@ident[!?'']?(?=\.?\()/,{cases:{"@types":"type","@keywords":"keyword","@constants":"variable","@default":"keyword.flow"}}],[/@ident[!?']?/,{cases:{"@types":"type","@keywords":"keyword","@constants":"variable","@default":"identifier"}}],[/\$\w+/,"key"],[/\$\(/,"key","@paste"],[/@@@ident/,"annotation"],{include:"@whitespace"},[/'(?:@escapes|.)'/,"string.character"],[/[()\[\]{}]/,"@brackets"],[/@allops/,{cases:{"@keywordops":"keyword","@operators":"operator"}}],[/[;,]/,"delimiter"],[/0[xX][0-9a-fA-F](_?[0-9a-fA-F])*/,"number.hex"],[/0[_oO][0-7](_?[0-7])*/,"number.octal"],[/0[bB][01](_?[01])*/,"number.binary"],[/[+\-]?\d+(\.\d+)?(im?|[eE][+\-]?\d+(\.\d+)?)?/,"number"]],typeanno:[[/[a-zA-Z_]\w*(?:\.[a-zA-Z_]\w*)*\{/,"type","@gen"],[/([a-zA-Z_]\w*(?:\.[a-zA-Z_]\w*)*)(\s*<:\s*)/,["type","keyword"]],[/[a-zA-Z_]\w*(?:\.[a-zA-Z_]\w*)*/,"type","@pop"],["","","@pop"]],gen:[[/[a-zA-Z_]\w*(?:\.[a-zA-Z_]\w*)*\{/,"type","@push"],[/[a-zA-Z_]\w*(?:\.[a-zA-Z_]\w*)*/,"type"],[/<:/,"keyword"],[/(\})(\s*<:\s*)/,["type",{token:"keyword",next:"@pop"}]],[/\}/,"type","@pop"],{include:"@root"}],quote:[[/\$\(/,"key","@paste"],[/\(/,"@brackets","@paren"],[/\)/,"metatag","@pop"],{include:"@root"}],paste:[[/:\(/,"metatag","@quote"],[/\(/,"@brackets","@paren"],[/\)/,"key","@pop"],{include:"@root"}],paren:[[/\$\(/,"key","@paste"],[/:\(/,"metatag","@quote"],[/\(/,"@brackets","@push"],[/\)/,"@brackets","@pop"],{include:"@root"}],sregexp:[[/^.*/,"invalid"],[/[^\\"()\[\]{}]/,"regexp"],[/[()\[\]{}]/,"@brackets"],[/\\./,"operator.scss"],[/"[imsx]*/,"regexp.delim","@pop"]],tregexp:[[/[^\\"()\[\]{}]/,"regexp"],[/[()\[\]{}]/,"@brackets"],[/\\./,"operator.scss"],[/"(?!"")/,"string"],[/"""[imsx]*/,"regexp.delim","@pop"]],rsstring:[[/^.*/,"invalid"],[/[^\\"]/,"string"],[/\\./,"string.escape"],[/"/,"string.delim","@pop"]],rtstring:[[/[^\\"]/,"string"],[/\\./,"string.escape"],[/"(?!"")/,"string"],[/"""/,"string.delim","@pop"]],dsstring:[[/^.*/,"invalid"],[/[^\\"\$]/,"string"],[/\$/,"","@interpolated"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,"string.delim","@pop"]],dtstring:[[/[^\\"\$]/,"string"],[/\$/,"","@interpolated"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"(?!"")/,"string"],[/"""/,"string.delim","@pop"]],interpolated:[[/\(/,{token:"",switchTo:"@interpolated_compound"}],[/[a-zA-Z_]\w*/,"identifier"],["","","@pop"]],interpolated_compound:[[/\)/,"","@pop"],{include:"@root"}],whitespace:[[/[ \t\r\n]+/,""],[/#=/,"comment","@multi_comment"],[/#.*$/,"comment"]],multi_comment:[[/#=/,"comment","@push"],[/=#/,"comment","@pop"],[/=(?!#)|#(?!=)/,"comment"],[/[^#=]+/,"comment"]]}};export{e as conf,t as language};