@ai-ecoverse/slicc-spectrum 1.104.2 → 1.105.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 (246) hide show
  1. package/README.md +14 -21
  2. package/dist/{chunk-D2HYQOCH.js → chunk-2GER7OHY.js} +4 -4
  3. package/dist/{chunk-JPIG5BAD.js → chunk-2JLDRHGH.js} +2 -2
  4. package/dist/chunk-2PTCZ3HU.js +177 -0
  5. package/dist/chunk-2PTCZ3HU.js.map +7 -0
  6. package/dist/chunk-2QGVEUM3.js +218 -0
  7. package/dist/chunk-2QGVEUM3.js.map +7 -0
  8. package/dist/chunk-2QTNHBD6.js +236 -0
  9. package/dist/chunk-2QTNHBD6.js.map +7 -0
  10. package/dist/chunk-3HYCVQIZ.js +2135 -0
  11. package/dist/chunk-3HYCVQIZ.js.map +7 -0
  12. package/dist/chunk-3TKJZ3WO.js +211 -0
  13. package/dist/chunk-3TKJZ3WO.js.map +7 -0
  14. package/dist/chunk-45RRK5H7.js +218 -0
  15. package/dist/chunk-45RRK5H7.js.map +7 -0
  16. package/dist/chunk-4LHTT5CM.js +260 -0
  17. package/dist/chunk-4LHTT5CM.js.map +7 -0
  18. package/dist/chunk-4LNENAB3.js +84 -0
  19. package/dist/chunk-4LNENAB3.js.map +7 -0
  20. package/dist/chunk-4UVLBBK5.js +229 -0
  21. package/dist/chunk-4UVLBBK5.js.map +7 -0
  22. package/dist/chunk-4V2XWPVI.js +260 -0
  23. package/dist/chunk-4V2XWPVI.js.map +7 -0
  24. package/dist/chunk-4VL4W65X.js +218 -0
  25. package/dist/chunk-4VL4W65X.js.map +7 -0
  26. package/dist/{chunk-442GNVWR.js → chunk-57NDK5DC.js} +2805 -2630
  27. package/dist/chunk-57NDK5DC.js.map +7 -0
  28. package/dist/chunk-5DQGKJYU.js +231 -0
  29. package/dist/chunk-5DQGKJYU.js.map +7 -0
  30. package/dist/chunk-5PPA6KWN.js +166 -0
  31. package/dist/chunk-5PPA6KWN.js.map +7 -0
  32. package/dist/chunk-5RPMYYR5.js +9 -0
  33. package/dist/chunk-5RPMYYR5.js.map +7 -0
  34. package/dist/chunk-5TKCBABJ.js +169 -0
  35. package/dist/chunk-5TKCBABJ.js.map +7 -0
  36. package/dist/chunk-5YPJDKI6.js +170 -0
  37. package/dist/chunk-5YPJDKI6.js.map +7 -0
  38. package/dist/{chunk-GHS6XYSQ.js → chunk-6FZ7EIP5.js} +6 -6
  39. package/dist/{chunk-LMH4BAKD.js → chunk-6JS2SZJ5.js} +12 -10
  40. package/dist/{chunk-LMH4BAKD.js.map → chunk-6JS2SZJ5.js.map} +2 -2
  41. package/dist/chunk-6UISDSQ6.js +229 -0
  42. package/dist/chunk-6UISDSQ6.js.map +7 -0
  43. package/dist/chunk-AADI6MVB.js +245 -0
  44. package/dist/chunk-AADI6MVB.js.map +7 -0
  45. package/dist/{chunk-22NCU4NL.js → chunk-AL43JFHF.js} +2 -2
  46. package/dist/chunk-ALX3M6E3.js +368 -0
  47. package/dist/chunk-ALX3M6E3.js.map +7 -0
  48. package/dist/chunk-APWLBR4J.js +173 -0
  49. package/dist/chunk-APWLBR4J.js.map +7 -0
  50. package/dist/chunk-B26VSXYC.js +297 -0
  51. package/dist/chunk-B26VSXYC.js.map +7 -0
  52. package/dist/chunk-B3ZH3IZR.js +82 -0
  53. package/dist/chunk-B3ZH3IZR.js.map +7 -0
  54. package/dist/chunk-BA2ER7NA.js +169 -0
  55. package/dist/chunk-BA2ER7NA.js.map +7 -0
  56. package/dist/chunk-BAVPQSVQ.js +190 -0
  57. package/dist/chunk-BAVPQSVQ.js.map +7 -0
  58. package/dist/{chunk-44HPUTOU.js → chunk-CEAD4W2I.js} +6 -6
  59. package/dist/chunk-CTBCZ6QP.js +368 -0
  60. package/dist/chunk-CTBCZ6QP.js.map +7 -0
  61. package/dist/chunk-D2BSCPOZ.js +204 -0
  62. package/dist/chunk-D2BSCPOZ.js.map +7 -0
  63. package/dist/chunk-DBTSLS2U.js +171 -0
  64. package/dist/chunk-DBTSLS2U.js.map +7 -0
  65. package/dist/chunk-DUHSH5IA.js +392 -0
  66. package/dist/chunk-DUHSH5IA.js.map +7 -0
  67. package/dist/chunk-E3XF2JYD.js +175 -0
  68. package/dist/chunk-E3XF2JYD.js.map +7 -0
  69. package/dist/chunk-E6FGQYBA.js +2 -0
  70. package/dist/{chunk-Y7O6BIKA.js → chunk-EAVYCN2X.js} +3 -3
  71. package/dist/chunk-EG2LH2D6.js +368 -0
  72. package/dist/chunk-EG2LH2D6.js.map +7 -0
  73. package/dist/chunk-EJCS2A67.js +248 -0
  74. package/dist/chunk-EJCS2A67.js.map +7 -0
  75. package/dist/chunk-ENK72MDX.js +247 -0
  76. package/dist/chunk-ENK72MDX.js.map +7 -0
  77. package/dist/chunk-ETY2K3PP.js +185 -0
  78. package/dist/chunk-ETY2K3PP.js.map +7 -0
  79. package/dist/chunk-FVU5ETHN.js +244 -0
  80. package/dist/chunk-FVU5ETHN.js.map +7 -0
  81. package/dist/chunk-FWORTALJ.js +392 -0
  82. package/dist/chunk-FWORTALJ.js.map +7 -0
  83. package/dist/chunk-G3AQILQL.js +377 -0
  84. package/dist/chunk-G3AQILQL.js.map +7 -0
  85. package/dist/chunk-GFOHPOWP.js +8 -0
  86. package/dist/chunk-GG2YLBBY.js +211 -0
  87. package/dist/chunk-GG2YLBBY.js.map +7 -0
  88. package/dist/chunk-GULF27HF.js +204 -0
  89. package/dist/chunk-GULF27HF.js.map +7 -0
  90. package/dist/chunk-I54HXPPH.js +242 -0
  91. package/dist/chunk-I54HXPPH.js.map +7 -0
  92. package/dist/chunk-I67XBOU7.js +241 -0
  93. package/dist/chunk-I67XBOU7.js.map +7 -0
  94. package/dist/chunk-I7E74Y7Y.js +368 -0
  95. package/dist/chunk-I7E74Y7Y.js.map +7 -0
  96. package/dist/chunk-IGMG5I7K.js +204 -0
  97. package/dist/chunk-IGMG5I7K.js.map +7 -0
  98. package/dist/chunk-JSVDUJOF.js +418 -0
  99. package/dist/chunk-JSVDUJOF.js.map +7 -0
  100. package/dist/chunk-JWEDQMOH.js +204 -0
  101. package/dist/chunk-JWEDQMOH.js.map +7 -0
  102. package/dist/chunk-K7CQ2PRH.js +243 -0
  103. package/dist/chunk-K7CQ2PRH.js.map +7 -0
  104. package/dist/chunk-KIDTSHLT.js +3239 -0
  105. package/dist/chunk-KIDTSHLT.js.map +7 -0
  106. package/dist/chunk-KIKLCSNJ.js +3 -0
  107. package/dist/chunk-KIKLCSNJ.js.map +7 -0
  108. package/dist/chunk-KUTFS7K7.js +170 -0
  109. package/dist/chunk-KUTFS7K7.js.map +7 -0
  110. package/dist/chunk-L25HPU52.js +229 -0
  111. package/dist/chunk-L25HPU52.js.map +7 -0
  112. package/dist/{chunk-WXAII75O.js → chunk-LJ5HWLFA.js} +2 -2
  113. package/dist/{chunk-WXAII75O.js.map → chunk-LJ5HWLFA.js.map} +1 -1
  114. package/dist/chunk-LNZHKQQB.js +175 -0
  115. package/dist/chunk-LNZHKQQB.js.map +7 -0
  116. package/dist/{chunk-LVH4CKV3.js → chunk-LSXQD3LS.js} +3 -3
  117. package/dist/chunk-LW7FUR35.js +368 -0
  118. package/dist/chunk-LW7FUR35.js.map +7 -0
  119. package/dist/chunk-MCIHORAJ.js +229 -0
  120. package/dist/chunk-MCIHORAJ.js.map +7 -0
  121. package/dist/chunk-MD3SFR65.js +418 -0
  122. package/dist/chunk-MD3SFR65.js.map +7 -0
  123. package/dist/chunk-MGYKF4CA.js +175 -0
  124. package/dist/chunk-MGYKF4CA.js.map +7 -0
  125. package/dist/chunk-N7NGXLLM.js +368 -0
  126. package/dist/chunk-N7NGXLLM.js.map +7 -0
  127. package/dist/chunk-NEW2Q7FF.js +101 -0
  128. package/dist/chunk-NEW2Q7FF.js.map +7 -0
  129. package/dist/chunk-NQH6RQYV.js +250 -0
  130. package/dist/chunk-NQH6RQYV.js.map +7 -0
  131. package/dist/chunk-NSXLBNK4.js +238 -0
  132. package/dist/chunk-NSXLBNK4.js.map +7 -0
  133. package/dist/chunk-OIEY3JII.js +233 -0
  134. package/dist/chunk-OIEY3JII.js.map +7 -0
  135. package/dist/chunk-OKPKENUF.js +211 -0
  136. package/dist/chunk-OKPKENUF.js.map +7 -0
  137. package/dist/chunk-OY4ZZY7W.js +218 -0
  138. package/dist/chunk-OY4ZZY7W.js.map +7 -0
  139. package/dist/chunk-QQNGYZLJ.js +173 -0
  140. package/dist/chunk-QQNGYZLJ.js.map +7 -0
  141. package/dist/chunk-RE5FCGM4.js +233 -0
  142. package/dist/chunk-RE5FCGM4.js.map +7 -0
  143. package/dist/chunk-RTUIJYIL.js +368 -0
  144. package/dist/chunk-RTUIJYIL.js.map +7 -0
  145. package/dist/chunk-RVP4DE3X.js +368 -0
  146. package/dist/chunk-RVP4DE3X.js.map +7 -0
  147. package/dist/chunk-RZNHWRZX.js +175 -0
  148. package/dist/chunk-RZNHWRZX.js.map +7 -0
  149. package/dist/chunk-SI4KACA7.js +368 -0
  150. package/dist/chunk-SI4KACA7.js.map +7 -0
  151. package/dist/chunk-SIN26ESQ.js +392 -0
  152. package/dist/chunk-SIN26ESQ.js.map +7 -0
  153. package/dist/chunk-SXLM67S4.js +185 -0
  154. package/dist/chunk-SXLM67S4.js.map +7 -0
  155. package/dist/chunk-SZDSSMHM.js +218 -0
  156. package/dist/chunk-SZDSSMHM.js.map +7 -0
  157. package/dist/chunk-TIVNHKKC.js +418 -0
  158. package/dist/chunk-TIVNHKKC.js.map +7 -0
  159. package/dist/chunk-TXJNAXHT.js +418 -0
  160. package/dist/chunk-TXJNAXHT.js.map +7 -0
  161. package/dist/chunk-U2CRYG2Y.js +368 -0
  162. package/dist/chunk-U2CRYG2Y.js.map +7 -0
  163. package/dist/chunk-UAZ7ATZ5.js +770 -0
  164. package/dist/chunk-UAZ7ATZ5.js.map +7 -0
  165. package/dist/chunk-UFGJPRGL.js +104 -0
  166. package/dist/chunk-UFGJPRGL.js.map +7 -0
  167. package/dist/chunk-UI7G5S4O.js +211 -0
  168. package/dist/chunk-UI7G5S4O.js.map +7 -0
  169. package/dist/{chunk-MZMRYCS6.js → chunk-WQ7OXFOF.js} +2 -2
  170. package/dist/chunk-WVWSLJ4A.js +160 -0
  171. package/dist/chunk-WVWSLJ4A.js.map +7 -0
  172. package/dist/chunk-X2FGXM6T.js +657 -0
  173. package/dist/chunk-X2FGXM6T.js.map +7 -0
  174. package/dist/chunk-XJ4X6OZN.js +175 -0
  175. package/dist/chunk-XJ4X6OZN.js.map +7 -0
  176. package/dist/chunk-YCSUWIOE.js +218 -0
  177. package/dist/chunk-YCSUWIOE.js.map +7 -0
  178. package/dist/chunk-YG7YEPYG.js +238 -0
  179. package/dist/chunk-YG7YEPYG.js.map +7 -0
  180. package/dist/chunk-YMUYQTBG.js +170 -0
  181. package/dist/chunk-YMUYQTBG.js.map +7 -0
  182. package/dist/chunk-YYRMCQGB.js +347 -0
  183. package/dist/chunk-YYRMCQGB.js.map +7 -0
  184. package/dist/chunk-YYU64C2K.js +233 -0
  185. package/dist/chunk-YYU64C2K.js.map +7 -0
  186. package/dist/{chunk-OS3ZND7O.js → chunk-ZSLV7QHA.js} +2 -2
  187. package/dist/chunk-ZYWHNLZW.js +200 -0
  188. package/dist/chunk-ZYWHNLZW.js.map +7 -0
  189. package/dist/slicc-ui.js +4868 -18113
  190. package/dist/slicc-ui.js.map +4 -4
  191. package/dist/types/app/app.d.ts +0 -2
  192. package/dist/types/components/code-theme.d.ts +12 -0
  193. package/dist/types/components/code-view.d.ts +3 -2
  194. package/dist/types/ui.d.ts +0 -2
  195. package/package.json +23 -33
  196. package/dist/chunk-442GNVWR.js.map +0 -7
  197. package/dist/chunk-5G3X76IR.js +0 -8
  198. package/dist/chunk-64K5VONJ.js +0 -11
  199. package/dist/chunk-64K5VONJ.js.map +0 -7
  200. package/dist/chunk-6T3O5K6R.js +0 -8
  201. package/dist/chunk-BHAGWMDD.js +0 -8
  202. package/dist/chunk-BHAGWMDD.js.map +0 -7
  203. package/dist/chunk-CGS66GRP.js +0 -11
  204. package/dist/chunk-CGS66GRP.js.map +0 -7
  205. package/dist/chunk-CONYKGKV.js +0 -11
  206. package/dist/chunk-CONYKGKV.js.map +0 -7
  207. package/dist/chunk-CU7BC2RI.js +0 -11
  208. package/dist/chunk-CU7BC2RI.js.map +0 -7
  209. package/dist/chunk-FXM4K5WL.js +0 -19
  210. package/dist/chunk-FXM4K5WL.js.map +0 -7
  211. package/dist/chunk-I4OYHPAU.js +0 -11
  212. package/dist/chunk-I4OYHPAU.js.map +0 -7
  213. package/dist/chunk-KMP5HO3E.js +0 -11
  214. package/dist/chunk-KMP5HO3E.js.map +0 -7
  215. package/dist/chunk-KWPU2PY3.js +0 -14
  216. package/dist/chunk-KWPU2PY3.js.map +0 -7
  217. package/dist/chunk-LBXW6XNL.js +0 -18
  218. package/dist/chunk-LBXW6XNL.js.map +0 -7
  219. package/dist/chunk-LII3WY6Y.js +0 -11
  220. package/dist/chunk-LII3WY6Y.js.map +0 -7
  221. package/dist/chunk-LY7WVBCB.js +0 -10
  222. package/dist/chunk-LY7WVBCB.js.map +0 -7
  223. package/dist/chunk-NLDFGCIL.js +0 -11
  224. package/dist/chunk-NLDFGCIL.js.map +0 -7
  225. package/dist/chunk-S5EGO4NA.js +0 -11
  226. package/dist/chunk-S5EGO4NA.js.map +0 -7
  227. package/dist/chunk-TAZBKRHT.js +0 -10
  228. package/dist/chunk-TAZBKRHT.js.map +0 -7
  229. package/dist/chunk-UCIBH53C.js +0 -11
  230. package/dist/chunk-UCIBH53C.js.map +0 -7
  231. package/dist/chunk-XZM23TK4.js +0 -11
  232. package/dist/chunk-XZM23TK4.js.map +0 -7
  233. package/dist/chunk-YX6SI5VA.js +0 -11
  234. package/dist/chunk-YX6SI5VA.js.map +0 -7
  235. package/dist/types/app/grammars.d.ts +0 -6
  236. /package/dist/{chunk-D2HYQOCH.js.map → chunk-2GER7OHY.js.map} +0 -0
  237. /package/dist/{chunk-JPIG5BAD.js.map → chunk-2JLDRHGH.js.map} +0 -0
  238. /package/dist/{chunk-GHS6XYSQ.js.map → chunk-6FZ7EIP5.js.map} +0 -0
  239. /package/dist/{chunk-22NCU4NL.js.map → chunk-AL43JFHF.js.map} +0 -0
  240. /package/dist/{chunk-44HPUTOU.js.map → chunk-CEAD4W2I.js.map} +0 -0
  241. /package/dist/{chunk-5G3X76IR.js.map → chunk-E6FGQYBA.js.map} +0 -0
  242. /package/dist/{chunk-Y7O6BIKA.js.map → chunk-EAVYCN2X.js.map} +0 -0
  243. /package/dist/{chunk-6T3O5K6R.js.map → chunk-GFOHPOWP.js.map} +0 -0
  244. /package/dist/{chunk-LVH4CKV3.js.map → chunk-LSXQD3LS.js.map} +0 -0
  245. /package/dist/{chunk-MZMRYCS6.js.map → chunk-WQ7OXFOF.js.map} +0 -0
  246. /package/dist/{chunk-OS3ZND7O.js.map → chunk-ZSLV7QHA.js.map} +0 -0
package/README.md CHANGED
@@ -220,7 +220,7 @@ Neither Adobe Clean can ship in a public package.
220
220
  The legacy faces come from `fontBase` (`AdobeClean-{Regular,Medium,Bold,ExtraBold}.otf`), which defaults to `/fonts/` on the current origin.
221
221
  Every `*.sliccy.ai` host passes it through to v6, and `npm start` proxies it from `seven.sliccy.ai`.
222
222
  The sans stack (`--swc-sans-font-family-stack`, also used by the 1.12 components) is the variable face, then Adobe Clean, then the system font stack, so text falls back face by face wherever a file doesn't load.
223
- `?delay=` sets the dummy's tick in milliseconds (default 30) , `?color=light|dark|system` the theme, and `?grammars=` the grammar base.
223
+ `?delay=` sets the dummy's tick in milliseconds (default 30) and `?color=light|dark|system` the theme.
224
224
 
225
225
  ### Elements
226
226
 
@@ -550,7 +550,7 @@ A rejection shows the error card with its sentence (a check without a `preview`
550
550
  #### `<slicc-sprinkle>`
551
551
 
552
552
  A SLICC sprinkle (`.shtml`), as a panel or, with `inline`, as a dip in the chat that grows to fit, even when it loads out of view (the frame measures itself on load, after icons and fonts arrive, and on every resize).
553
- A dip has a tab-like handle: drag it into the dock (or onto a rail, or use its open-as-panel button, `data-action="detach-sprinkle"`) and it lives on as a sprinkle panel, with a note in the chat where it was and a **Show** button (`data-action="show-sprinkle"`) that brings the panel forward; which dips are out is saved in `slicc-ui.dips`.
553
+ A dip has a tab-like handle: drag it into the dock (or onto a rail, or use its open-as-panel button, `data-action="detach-sprinkle"`, an extra-small action button whose tap target pads out to 24 × 24 px on a coarse pointer while it looks the same) and it lives on as a sprinkle panel, with a note in the chat where it was and a **Show** button (`data-action="show-sprinkle"`) that brings the panel forward; which dips are out is saved in `slicc-ui.dips`.
554
554
  It runs in a sandboxed frame (`allow-scripts` only) with SLICC's sprinkle theme (the `--s2-*` tokens and `.sprinkle-*` classes), the app's fonts, and Lucide icons (`<i data-lucide>`, `LucideIcons.render()`).
555
555
  It talks back through `slicc.lick({ action, data })`, which reaches the owning cone as a `sprinkle` lick, and, when the port has `call`, reads files and keeps state (see [Sprinkle bridge](#sprinkle-bridge)).
556
556
  Panel sprinkles sit at the top of the right rail with their Lucide icon.
@@ -1136,13 +1136,11 @@ Replay plays a longer run across ten replies, with long commands whose arguments
1136
1136
  ### Distribution
1137
1137
 
1138
1138
  The UI is ESM with code splitting: `slicc-ui.js`, `slicc-dummy.js` and `chunk-*.js` next to them in `dist/`, with no bare imports, so the folder can be served as plain files from OPFS. dockview's ESM build has no CSS; the build takes it from dockview's UMD bundle.
1139
- `@pierre/diffs` highlights with Shiki.
1140
- `dist/` carries the grammars SLICC needs most (CSS, diff, HTML, JavaScript, JSON, JSX, Markdown, Python, shell, SQL, TOML, TSX, TypeScript, XML, YAML); every other grammar and theme stays out of `dist/` and loads the first time a file needs it.
1141
- It loads from `grammarBase` first, if set, and then from `https://cdn.jsdelivr.net/npm/@shikijs/` (pinned to the installed version, CORS and CORP headers set).
1142
- For offline use, install the optional peer dependencies `@shikijs/langs` and `@shikijs/themes` (pinned to the same version; plain relative ESM, no bare imports), serve them, and point `grammarBase` (on `<slicc-app>`, or `setGrammarBase()`) at the folder holding `langs/` and `themes/`, for example `/node_modules/@shikijs/`.
1143
- The build fails if the peer versions drift from the installed ones.
1144
- `SLICC_GRAMMAR_BASE` points the build at another CDN.
1145
- `dist/` is about 55 files and 5.5 MB of JavaScript.
1139
+ `@pierre/diffs` highlights with [`@pierre/highlights`](https://diffs.com/highlights) (`preferredHighlighter: 'highlights'`), whose lexers for every language it knows are in one WebAssembly module inside `dist/`, so nothing loads from a CDN and highlighting works offline.
1140
+ Files in a language Highlights doesn't know (it has about 80, so not ini, dotenv, nginx or CSV, for example) show as plain text.
1141
+ The themes are `slicc-light` and `slicc-dark`: Pierre Light and Pierre Dark with every syntax colour shaded until it keeps 4.5:1 contrast on the code background, on the added and deleted line tints, and on the changed-word highlights inside them.
1142
+ Shiki stays out of `dist/`: the build replaces `shiki` and `@shikijs/*` with a module that throws.
1143
+ `dist/` is about 130 files and 7 MB of JavaScript.
1146
1144
  The build fails if React is bundled; `@pierre/trees` lists React as a peer dependency, so npm installs it, but the `web-components` entry runs on Preact.
1147
1145
  Types are in `dist/types/ui.d.ts`, `dist/types/dummy.d.ts` and `dist/types/kernel.d.ts`, exported as `@ai-ecoverse/slicc-spectrum/ui`, `/dummy` and `/kernel`.
1148
1146
 
@@ -1160,7 +1158,7 @@ npm run lint
1160
1158
  npm test
1161
1159
  ```
1162
1160
 
1163
- `npm test` builds `dist/` and runs the integration tests in headless Chromium over raw CDP, through the [harness from slicc-shared-web](https://github.com/ai-ecoverse/slicc-shared-web#integration-test-harness), against a fake backend (`test/integration/page/fake-backend.js`).
1161
+ `npm test` builds `dist/`, installs Chrome for Testing with `slicc-cdp install-browser` and runs the integration tests over raw CDP (headless on a developer machine, with a window on CI), through the [harness from slicc-shared-web](https://github.com/ai-ecoverse/slicc-shared-web#integration-test-harness), against a fake backend (`test/integration/page/fake-backend.js`).
1164
1162
  It writes CPU profiles, screenshots and console logs to `artifacts/`, and V8 coverage of `dist/` to `coverage/` only with `SLICC_COVERAGE=1` (CI leaves it off, since nothing reads it; the unit tests' diff coverage is separate).
1165
1163
  The test page is served cross-origin isolated (COOP/COEP), as slicc-kernel requires.
1166
1164
  `test/integration/kernel.test.mjs` runs `bash -i` end to end on `@ai-ecoverse/slicc-kernel` (a pinned dev dependency), with `@ai-ecoverse/wasm-bash` and `@ai-ecoverse/wasm-coreutils` installed into OPFS by the page (`/kernel.html`).
@@ -1177,19 +1175,14 @@ The pre-commit hook runs them in Node against happy-dom under monocart and fails
1177
1175
  `unit-setup.mjs` registers happy-dom's globals and turns `.css`, `.shtml` and `dockview-core/css` imports into text modules, as the build does, so a fresh unit test can import any module in `src/`.
1178
1176
  The glob's `**` skips dot directories, so in a checkout under one (a bb worktree in `~/.bb/`) untested files were left out of the report and the hook passed on lines no unit test ran.
1179
1177
 
1180
- ## Design review
1178
+ ## CI and reviews
1181
1179
 
1182
- [`.github/workflows/design-review.yml`](.github/workflows/design-review.yml) has Claude review every ready, same-repo pull request visually, against Spectrum 2 and general design guidelines, and leave a comment with screenshots.
1183
- It also runs on `workflow_dispatch` with `pr_number`; fork pull requests and drafts are skipped.
1180
+ [`.github/workflows/ci.yml`](.github/workflows/ci.yml) is one caller of slicc-shared-web's [pipeline](https://github.com/ai-ecoverse/slicc-shared-web#pipeline), on pull requests, in the merge queue and on pushes to main, which cancel nothing.
1184
1181
 
1185
- - **Setup** (`CERT_RUNNER`): main and the pull request are each built and served by `test/integration/chrome.mjs`, and each is open in a Chrome with a window under Xvfb, so hover works: main on CDP 9301 (`:8301/ui/?delay=0`), the pull request on CDP 9302 (`:8302`).
1186
- Claude drives both with `playwright-core`, shoots the same states side by side (light and dark, desktop and a 420×860 mobile viewport), and reads spectrum.adobe.com, seeded with every URL in its sitemap.
1187
- - **What it checks:** tokens only, never colour alone, contrast in dark, focus, copy, typography, icons, layout at 420, and the `data-*` hooks embedders test on.
1188
- The prompt carries the setup pitfalls too: wait for fonts, blur focus, compare at the same scroll anchor, and use a real mobile viewport.
1189
- - **The comment:** Claude writes `comment.md` and its screenshots, uploaded as the run's `design-review-comment-<pr>` and `design-review-shots-<pr>` artifacts.
1190
- A separate `post` job on a fresh runner, the only one with the Cloudflare token, puts the screenshots in the R2 bucket slicc uses for PR screenshots (`slicc-pr-screenshots`, under `slicc-spectrum/pr-<n>/<run>/`) and posts the comment with them inline from its public URL.
1191
- A screenshot that doesn't upload is linked to the artifact instead.
1192
- The token is the org secret `CLOUDFLARE_API_TOKEN`; `CLOUDFLARE_ACCOUNT_ID`, `R2_BUCKET` and `R2_PUBLIC_BASE_URL` default to slicc's values.
1182
+ - **Lint** runs on every event through `.github/scripts/gate.mjs lint`, which fails unless `npm run lint` ends with `slicc-lint: PASS`.
1183
+ - **Tests** run on pull requests and in the merge queue, on Chrome with a window under Xvfb, split across four shards by timings, each with `TEST_CONCURRENCY=4` and `--max-old-space-size=8192`. `ci / integration` passes only when the shards' JUnit reports hold a test that ran and no failure.
1184
+ - **Reviews:** every push to a pull request gets a Claude and a Codex review on Bedrock, with this repo's code and design guidance in `review-prompt`. Each side of the change (`head`, `base`) has two review browsers; `npm run review:browser` (`.github/scripts/review-browser.mjs`) builds that side if `dist/` is missing, serves its test page once (`head` on port 8301, `base` on 8302) and opens `/ui/?delay=0` in a 1440×900 window, light in the `extension` browser and dark in the `cli` one. The reviewers shoot base and head side by side, light and dark, desktop and a 420×860 phone viewport, and the pipeline's `post` job, the only one with `CLOUDFLARE_API_TOKEN`, puts their screenshots in R2 (`slicc-pr-screenshots`). `ci / review` passes when both approve.
1185
+ - **Release:** semantic-release publishes on a push to main only, with npm trusted publishing registered for `ci.yml` (`npm run trust`).
1193
1186
 
1194
1187
  ## License
1195
1188
 
@@ -9,14 +9,14 @@ import {
9
9
  } from "./chunk-ZMBN6APP.js";
10
10
  import {
11
11
  o
12
- } from "./chunk-22NCU4NL.js";
12
+ } from "./chunk-AL43JFHF.js";
13
13
  import {
14
14
  SpectrumElement,
15
15
  b,
16
16
  e2 as e,
17
17
  i,
18
18
  n
19
- } from "./chunk-WXAII75O.js";
19
+ } from "./chunk-LJ5HWLFA.js";
20
20
  import "./chunk-AXQFWXYZ.js";
21
21
 
22
22
  // node_modules/@spectrum-web-components/tooltip/src/tooltip.css.js
@@ -146,7 +146,7 @@ var Tooltip = class extends SpectrumElement {
146
146
  <span id="tip" aria-hidden="true"></span>
147
147
  </sp-tooltip-openable>
148
148
  `;
149
- return this.selfManaged ? (this.dependencyManager.add("sp-overlay"), import("./chunk-GHS6XYSQ.js"), b`
149
+ return this.selfManaged ? (this.dependencyManager.add("sp-overlay"), import("./chunk-6FZ7EIP5.js"), b`
150
150
  <sp-overlay
151
151
  ?open=${this.open && !this.disabled && this.dependencyManager.loaded}
152
152
  ?delayed=${this.delayed}
@@ -178,4 +178,4 @@ o3([n({ type: Boolean })], Tooltip.prototype, "delayed", 2), o3([n({ type: Boole
178
178
 
179
179
  // node_modules/@spectrum-web-components/tooltip/sp-tooltip.js
180
180
  defineElement("sp-tooltip", Tooltip);
181
- //# sourceMappingURL=chunk-D2HYQOCH.js.map
181
+ //# sourceMappingURL=chunk-2GER7OHY.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  n
3
- } from "./chunk-WXAII75O.js";
3
+ } from "./chunk-LJ5HWLFA.js";
4
4
 
5
5
  // node_modules/@lit/reactive-element/decorators/state.js
6
6
  function r(r2) {
@@ -19,4 +19,4 @@ export {
19
19
  * SPDX-License-Identifier: BSD-3-Clause
20
20
  *)
21
21
  */
22
- //# sourceMappingURL=chunk-JPIG5BAD.js.map
22
+ //# sourceMappingURL=chunk-2JLDRHGH.js.map
@@ -0,0 +1,177 @@
1
+ import "./chunk-AXQFWXYZ.js";
2
+
3
+ // node_modules/@pierre/highlights/dist/themes/vesper.js
4
+ var vesper_default = {
5
+ "name": "Vesper",
6
+ "appearance": "dark",
7
+ "style": {
8
+ "background": "#101010",
9
+ "text": "#FFFFFF",
10
+ "editor.background": "#101010",
11
+ "editor.foreground": "#FFFFFF",
12
+ "editor.active_line.background": "#101010",
13
+ "search.match_background": "#575757",
14
+ "players": [
15
+ {
16
+ "cursor": "#FFC799ff",
17
+ "background": "#FFC799ff",
18
+ "selection": "#FFC7993d"
19
+ },
20
+ {
21
+ "cursor": "#99FFE4ff",
22
+ "background": "#99FFE4ff",
23
+ "selection": "#99FFE43d"
24
+ }
25
+ ],
26
+ "error": "#FF8080ff",
27
+ "warning": "#FFC799ff",
28
+ "info": "#7E7E7Eff",
29
+ "hint": "#A0A0A0",
30
+ "syntax": {
31
+ "attribute": {
32
+ "color": "#A0A0A0"
33
+ },
34
+ "comment": {
35
+ "color": "#8b8b8b94"
36
+ },
37
+ "comment.doc": {
38
+ "color": "#8b8b8b94"
39
+ },
40
+ "constant": {
41
+ "color": "#FFC799"
42
+ },
43
+ "constructor": {
44
+ "color": "#FFC799"
45
+ },
46
+ "emphasis": {
47
+ "color": "#FFFFFF",
48
+ "font_style": "italic"
49
+ },
50
+ "emphasis.strong": {
51
+ "color": "#FFFFFF",
52
+ "font_weight": 700
53
+ },
54
+ "function": {
55
+ "color": "#FFC799"
56
+ },
57
+ "keyword": {
58
+ "color": "#A0A0A0"
59
+ },
60
+ "label": {
61
+ "color": "#FFC799"
62
+ },
63
+ "link_text": {
64
+ "color": "#FFFFFF"
65
+ },
66
+ "link_uri": {
67
+ "color": "#FFFFFF"
68
+ },
69
+ "number": {
70
+ "color": "#FFC799"
71
+ },
72
+ "operator": {
73
+ "color": "#A0A0A0"
74
+ },
75
+ "punctuation": {
76
+ "color": "#A0A0A0"
77
+ },
78
+ "punctuation.bracket": {
79
+ "color": "#A0A0A0"
80
+ },
81
+ "punctuation.delimiter": {
82
+ "color": "#A0A0A0"
83
+ },
84
+ "punctuation.list_marker": {
85
+ "color": "#A0A0A0"
86
+ },
87
+ "punctuation.special": {
88
+ "color": "#A0A0A0"
89
+ },
90
+ "string": {
91
+ "color": "#99FFE4"
92
+ },
93
+ "string.escape": {
94
+ "color": "#FFC799"
95
+ },
96
+ "string.regex": {
97
+ "color": "#99FFE4"
98
+ },
99
+ "string.special": {
100
+ "color": "#99FFE4"
101
+ },
102
+ "string.special.symbol": {
103
+ "color": "#99FFE4"
104
+ },
105
+ "tag": {
106
+ "color": "#FFC799"
107
+ },
108
+ "text.literal": {
109
+ "color": "#99FFE4"
110
+ },
111
+ "title": {
112
+ "color": "#FFC799"
113
+ },
114
+ "type": {
115
+ "color": "#FFC799"
116
+ },
117
+ "variable": {
118
+ "color": "#FFFFFF"
119
+ },
120
+ "variable.special": {
121
+ "color": "#A0A0A0"
122
+ },
123
+ "boolean": {
124
+ "color": "#FFC799"
125
+ },
126
+ "embedded": {
127
+ "color": "#FFFFFF"
128
+ },
129
+ "namespace": {
130
+ "color": "#FFC799"
131
+ },
132
+ "predictive": {
133
+ "color": "#8b8b8b94"
134
+ },
135
+ "preproc": {
136
+ "color": "#A0A0A0"
137
+ },
138
+ "primary": {
139
+ "color": "#FFFFFF"
140
+ },
141
+ "property": {
142
+ "color": "#FFF"
143
+ },
144
+ "selector": {
145
+ "color": "#FFC799"
146
+ },
147
+ "enum": {
148
+ "color": "#FFC799"
149
+ },
150
+ "hint": {
151
+ "color": "#A0A0A0"
152
+ },
153
+ "variant": {
154
+ "color": "#FFF"
155
+ },
156
+ "diff.minus": {
157
+ "color": "#FF8080"
158
+ },
159
+ "diff.plus": {
160
+ "color": "#99FFE4"
161
+ },
162
+ "property.json_key": {
163
+ "color": "#FFC799"
164
+ },
165
+ "selector.pseudo": {
166
+ "color": "#A0A0A0"
167
+ }
168
+ },
169
+ "created": "#81b88b",
170
+ "deleted": "#c74e39",
171
+ "modified": "#E2C08D"
172
+ }
173
+ };
174
+ export {
175
+ vesper_default as default
176
+ };
177
+ //# sourceMappingURL=chunk-2PTCZ3HU.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../node_modules/@pierre/highlights/dist/themes/vesper.js"],
4
+ "sourcesContent": ["export default {\n \"name\": \"Vesper\",\n \"appearance\": \"dark\",\n \"style\": {\n \"background\": \"#101010\",\n \"text\": \"#FFFFFF\",\n \"editor.background\": \"#101010\",\n \"editor.foreground\": \"#FFFFFF\",\n \"editor.active_line.background\": \"#101010\",\n \"search.match_background\": \"#575757\",\n \"players\": [\n {\n \"cursor\": \"#FFC799ff\",\n \"background\": \"#FFC799ff\",\n \"selection\": \"#FFC7993d\"\n },\n {\n \"cursor\": \"#99FFE4ff\",\n \"background\": \"#99FFE4ff\",\n \"selection\": \"#99FFE43d\"\n }\n ],\n \"error\": \"#FF8080ff\",\n \"warning\": \"#FFC799ff\",\n \"info\": \"#7E7E7Eff\",\n \"hint\": \"#A0A0A0\",\n \"syntax\": {\n \"attribute\": {\n \"color\": \"#A0A0A0\"\n },\n \"comment\": {\n \"color\": \"#8b8b8b94\"\n },\n \"comment.doc\": {\n \"color\": \"#8b8b8b94\"\n },\n \"constant\": {\n \"color\": \"#FFC799\"\n },\n \"constructor\": {\n \"color\": \"#FFC799\"\n },\n \"emphasis\": {\n \"color\": \"#FFFFFF\",\n \"font_style\": \"italic\"\n },\n \"emphasis.strong\": {\n \"color\": \"#FFFFFF\",\n \"font_weight\": 700\n },\n \"function\": {\n \"color\": \"#FFC799\"\n },\n \"keyword\": {\n \"color\": \"#A0A0A0\"\n },\n \"label\": {\n \"color\": \"#FFC799\"\n },\n \"link_text\": {\n \"color\": \"#FFFFFF\"\n },\n \"link_uri\": {\n \"color\": \"#FFFFFF\"\n },\n \"number\": {\n \"color\": \"#FFC799\"\n },\n \"operator\": {\n \"color\": \"#A0A0A0\"\n },\n \"punctuation\": {\n \"color\": \"#A0A0A0\"\n },\n \"punctuation.bracket\": {\n \"color\": \"#A0A0A0\"\n },\n \"punctuation.delimiter\": {\n \"color\": \"#A0A0A0\"\n },\n \"punctuation.list_marker\": {\n \"color\": \"#A0A0A0\"\n },\n \"punctuation.special\": {\n \"color\": \"#A0A0A0\"\n },\n \"string\": {\n \"color\": \"#99FFE4\"\n },\n \"string.escape\": {\n \"color\": \"#FFC799\"\n },\n \"string.regex\": {\n \"color\": \"#99FFE4\"\n },\n \"string.special\": {\n \"color\": \"#99FFE4\"\n },\n \"string.special.symbol\": {\n \"color\": \"#99FFE4\"\n },\n \"tag\": {\n \"color\": \"#FFC799\"\n },\n \"text.literal\": {\n \"color\": \"#99FFE4\"\n },\n \"title\": {\n \"color\": \"#FFC799\"\n },\n \"type\": {\n \"color\": \"#FFC799\"\n },\n \"variable\": {\n \"color\": \"#FFFFFF\"\n },\n \"variable.special\": {\n \"color\": \"#A0A0A0\"\n },\n \"boolean\": {\n \"color\": \"#FFC799\"\n },\n \"embedded\": {\n \"color\": \"#FFFFFF\"\n },\n \"namespace\": {\n \"color\": \"#FFC799\"\n },\n \"predictive\": {\n \"color\": \"#8b8b8b94\"\n },\n \"preproc\": {\n \"color\": \"#A0A0A0\"\n },\n \"primary\": {\n \"color\": \"#FFFFFF\"\n },\n \"property\": {\n \"color\": \"#FFF\"\n },\n \"selector\": {\n \"color\": \"#FFC799\"\n },\n \"enum\": {\n \"color\": \"#FFC799\"\n },\n \"hint\": {\n \"color\": \"#A0A0A0\"\n },\n \"variant\": {\n \"color\": \"#FFF\"\n },\n \"diff.minus\": {\n \"color\": \"#FF8080\"\n },\n \"diff.plus\": {\n \"color\": \"#99FFE4\"\n },\n \"property.json_key\": {\n \"color\": \"#FFC799\"\n },\n \"selector.pseudo\": {\n \"color\": \"#A0A0A0\"\n }\n },\n \"created\": \"#81b88b\",\n \"deleted\": \"#c74e39\",\n \"modified\": \"#E2C08D\"\n }\n};\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,218 @@
1
+ import "./chunk-AXQFWXYZ.js";
2
+
3
+ // node_modules/@pierre/highlights/dist/themes/gruvbox-dark-hard.js
4
+ var gruvbox_dark_hard_default = {
5
+ "name": "Gruvbox Dark Hard",
6
+ "appearance": "dark",
7
+ "style": {
8
+ "background": "#4c4642ff",
9
+ "text": "#fbf1c7ff",
10
+ "editor.background": "#1d2021ff",
11
+ "editor.foreground": "#ebdbb2ff",
12
+ "editor.active_line.background": "#393634bf",
13
+ "search.match_background": "#83a59866",
14
+ "players": [
15
+ {
16
+ "cursor": "#83a598ff",
17
+ "background": "#83a598ff",
18
+ "selection": "#83a5983d"
19
+ },
20
+ {
21
+ "cursor": "#a89984ff",
22
+ "background": "#a89984ff",
23
+ "selection": "#a899843d"
24
+ },
25
+ {
26
+ "cursor": "#fd801bff",
27
+ "background": "#fd801bff",
28
+ "selection": "#fd801b3d"
29
+ },
30
+ {
31
+ "cursor": "#d3869bff",
32
+ "background": "#d3869bff",
33
+ "selection": "#d3869b3d"
34
+ },
35
+ {
36
+ "cursor": "#8ec07cff",
37
+ "background": "#8ec07cff",
38
+ "selection": "#8ec07c3d"
39
+ },
40
+ {
41
+ "cursor": "#fb4a35ff",
42
+ "background": "#fb4a35ff",
43
+ "selection": "#fb4a353d"
44
+ },
45
+ {
46
+ "cursor": "#f9bd2fff",
47
+ "background": "#f9bd2fff",
48
+ "selection": "#f9bd2f3d"
49
+ },
50
+ {
51
+ "cursor": "#b7bb26ff",
52
+ "background": "#b7bb26ff",
53
+ "selection": "#b7bb263d"
54
+ }
55
+ ],
56
+ "error": "#fb4a35ff",
57
+ "warning": "#f9bd2fff",
58
+ "info": "#83a598ff",
59
+ "hint": "#6a695bff",
60
+ "created": "#ebdbb2",
61
+ "deleted": "#cc241d",
62
+ "modified": "#d79921",
63
+ "terminal.ansi.green": "#98971a",
64
+ "terminal.ansi.red": "#cc241d",
65
+ "terminal.ansi.blue": "#458588",
66
+ "syntax": {
67
+ "attribute": {
68
+ "color": "#83a598ff"
69
+ },
70
+ "boolean": {
71
+ "color": "#d3869bff"
72
+ },
73
+ "comment": {
74
+ "color": "#a89984ff"
75
+ },
76
+ "comment.doc": {
77
+ "color": "#c6b697ff"
78
+ },
79
+ "constant": {
80
+ "color": "#fabd2eff"
81
+ },
82
+ "constructor": {
83
+ "color": "#83a598ff"
84
+ },
85
+ "embedded": {
86
+ "color": "#8ec07cff"
87
+ },
88
+ "emphasis": {
89
+ "color": "#83a598ff"
90
+ },
91
+ "emphasis.strong": {
92
+ "color": "#83a598ff",
93
+ "font_weight": 700
94
+ },
95
+ "enum": {
96
+ "color": "#fe7f18ff"
97
+ },
98
+ "function": {
99
+ "color": "#b8bb25ff"
100
+ },
101
+ "function.builtin": {
102
+ "color": "#fb4833ff"
103
+ },
104
+ "hint": {
105
+ "color": "#8c957dff"
106
+ },
107
+ "keyword": {
108
+ "color": "#fb4833ff"
109
+ },
110
+ "label": {
111
+ "color": "#83a598ff"
112
+ },
113
+ "link_text": {
114
+ "color": "#8ec07cff",
115
+ "font_style": "italic"
116
+ },
117
+ "link_uri": {
118
+ "color": "#d3869bff"
119
+ },
120
+ "namespace": {
121
+ "color": "#83a598ff"
122
+ },
123
+ "number": {
124
+ "color": "#d3869bff"
125
+ },
126
+ "operator": {
127
+ "color": "#8ec07cff"
128
+ },
129
+ "predictive": {
130
+ "color": "#717363ff",
131
+ "font_style": "italic"
132
+ },
133
+ "preproc": {
134
+ "color": "#fb4833ff"
135
+ },
136
+ "primary": {
137
+ "color": "#ebdbb2ff"
138
+ },
139
+ "property": {
140
+ "color": "#ebdbb2ff"
141
+ },
142
+ "punctuation": {
143
+ "color": "#d5c4a1ff"
144
+ },
145
+ "punctuation.bracket": {
146
+ "color": "#a89984ff"
147
+ },
148
+ "punctuation.delimiter": {
149
+ "color": "#e5d5adff"
150
+ },
151
+ "punctuation.list_marker": {
152
+ "color": "#ebdbb2ff"
153
+ },
154
+ "punctuation.markup": {
155
+ "color": "#83a598ff"
156
+ },
157
+ "punctuation.special": {
158
+ "color": "#e5d5adff"
159
+ },
160
+ "selector": {
161
+ "color": "#fabd2eff"
162
+ },
163
+ "selector.pseudo": {
164
+ "color": "#83a598ff"
165
+ },
166
+ "string": {
167
+ "color": "#b8bb25ff"
168
+ },
169
+ "string.escape": {
170
+ "color": "#c6b697ff"
171
+ },
172
+ "string.regex": {
173
+ "color": "#fe7f18ff"
174
+ },
175
+ "string.special": {
176
+ "color": "#d3869bff"
177
+ },
178
+ "string.special.symbol": {
179
+ "color": "#8ec07cff"
180
+ },
181
+ "tag": {
182
+ "color": "#8ec07cff"
183
+ },
184
+ "text.literal": {
185
+ "color": "#83a598ff"
186
+ },
187
+ "title": {
188
+ "color": "#b8bb25ff",
189
+ "font_weight": 700
190
+ },
191
+ "type": {
192
+ "color": "#fabd2eff"
193
+ },
194
+ "variable": {
195
+ "color": "#ebdbb2ff"
196
+ },
197
+ "variable.parameter": {
198
+ "color": "#ebdbb2ff"
199
+ },
200
+ "variable.special": {
201
+ "color": "#83a598ff"
202
+ },
203
+ "variant": {
204
+ "color": "#83a598ff"
205
+ },
206
+ "diff.plus": {
207
+ "color": "#b8bb26ff"
208
+ },
209
+ "diff.minus": {
210
+ "color": "#fb4934ff"
211
+ }
212
+ }
213
+ }
214
+ };
215
+ export {
216
+ gruvbox_dark_hard_default as default
217
+ };
218
+ //# sourceMappingURL=chunk-2QGVEUM3.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../node_modules/@pierre/highlights/dist/themes/gruvbox-dark-hard.js"],
4
+ "sourcesContent": ["export default {\n \"name\": \"Gruvbox Dark Hard\",\n \"appearance\": \"dark\",\n \"style\": {\n \"background\": \"#4c4642ff\",\n \"text\": \"#fbf1c7ff\",\n \"editor.background\": \"#1d2021ff\",\n \"editor.foreground\": \"#ebdbb2ff\",\n \"editor.active_line.background\": \"#393634bf\",\n \"search.match_background\": \"#83a59866\",\n \"players\": [\n {\n \"cursor\": \"#83a598ff\",\n \"background\": \"#83a598ff\",\n \"selection\": \"#83a5983d\"\n },\n {\n \"cursor\": \"#a89984ff\",\n \"background\": \"#a89984ff\",\n \"selection\": \"#a899843d\"\n },\n {\n \"cursor\": \"#fd801bff\",\n \"background\": \"#fd801bff\",\n \"selection\": \"#fd801b3d\"\n },\n {\n \"cursor\": \"#d3869bff\",\n \"background\": \"#d3869bff\",\n \"selection\": \"#d3869b3d\"\n },\n {\n \"cursor\": \"#8ec07cff\",\n \"background\": \"#8ec07cff\",\n \"selection\": \"#8ec07c3d\"\n },\n {\n \"cursor\": \"#fb4a35ff\",\n \"background\": \"#fb4a35ff\",\n \"selection\": \"#fb4a353d\"\n },\n {\n \"cursor\": \"#f9bd2fff\",\n \"background\": \"#f9bd2fff\",\n \"selection\": \"#f9bd2f3d\"\n },\n {\n \"cursor\": \"#b7bb26ff\",\n \"background\": \"#b7bb26ff\",\n \"selection\": \"#b7bb263d\"\n }\n ],\n \"error\": \"#fb4a35ff\",\n \"warning\": \"#f9bd2fff\",\n \"info\": \"#83a598ff\",\n \"hint\": \"#6a695bff\",\n \"created\": \"#ebdbb2\",\n \"deleted\": \"#cc241d\",\n \"modified\": \"#d79921\",\n \"terminal.ansi.green\": \"#98971a\",\n \"terminal.ansi.red\": \"#cc241d\",\n \"terminal.ansi.blue\": \"#458588\",\n \"syntax\": {\n \"attribute\": {\n \"color\": \"#83a598ff\"\n },\n \"boolean\": {\n \"color\": \"#d3869bff\"\n },\n \"comment\": {\n \"color\": \"#a89984ff\"\n },\n \"comment.doc\": {\n \"color\": \"#c6b697ff\"\n },\n \"constant\": {\n \"color\": \"#fabd2eff\"\n },\n \"constructor\": {\n \"color\": \"#83a598ff\"\n },\n \"embedded\": {\n \"color\": \"#8ec07cff\"\n },\n \"emphasis\": {\n \"color\": \"#83a598ff\"\n },\n \"emphasis.strong\": {\n \"color\": \"#83a598ff\",\n \"font_weight\": 700\n },\n \"enum\": {\n \"color\": \"#fe7f18ff\"\n },\n \"function\": {\n \"color\": \"#b8bb25ff\"\n },\n \"function.builtin\": {\n \"color\": \"#fb4833ff\"\n },\n \"hint\": {\n \"color\": \"#8c957dff\"\n },\n \"keyword\": {\n \"color\": \"#fb4833ff\"\n },\n \"label\": {\n \"color\": \"#83a598ff\"\n },\n \"link_text\": {\n \"color\": \"#8ec07cff\",\n \"font_style\": \"italic\"\n },\n \"link_uri\": {\n \"color\": \"#d3869bff\"\n },\n \"namespace\": {\n \"color\": \"#83a598ff\"\n },\n \"number\": {\n \"color\": \"#d3869bff\"\n },\n \"operator\": {\n \"color\": \"#8ec07cff\"\n },\n \"predictive\": {\n \"color\": \"#717363ff\",\n \"font_style\": \"italic\"\n },\n \"preproc\": {\n \"color\": \"#fb4833ff\"\n },\n \"primary\": {\n \"color\": \"#ebdbb2ff\"\n },\n \"property\": {\n \"color\": \"#ebdbb2ff\"\n },\n \"punctuation\": {\n \"color\": \"#d5c4a1ff\"\n },\n \"punctuation.bracket\": {\n \"color\": \"#a89984ff\"\n },\n \"punctuation.delimiter\": {\n \"color\": \"#e5d5adff\"\n },\n \"punctuation.list_marker\": {\n \"color\": \"#ebdbb2ff\"\n },\n \"punctuation.markup\": {\n \"color\": \"#83a598ff\"\n },\n \"punctuation.special\": {\n \"color\": \"#e5d5adff\"\n },\n \"selector\": {\n \"color\": \"#fabd2eff\"\n },\n \"selector.pseudo\": {\n \"color\": \"#83a598ff\"\n },\n \"string\": {\n \"color\": \"#b8bb25ff\"\n },\n \"string.escape\": {\n \"color\": \"#c6b697ff\"\n },\n \"string.regex\": {\n \"color\": \"#fe7f18ff\"\n },\n \"string.special\": {\n \"color\": \"#d3869bff\"\n },\n \"string.special.symbol\": {\n \"color\": \"#8ec07cff\"\n },\n \"tag\": {\n \"color\": \"#8ec07cff\"\n },\n \"text.literal\": {\n \"color\": \"#83a598ff\"\n },\n \"title\": {\n \"color\": \"#b8bb25ff\",\n \"font_weight\": 700\n },\n \"type\": {\n \"color\": \"#fabd2eff\"\n },\n \"variable\": {\n \"color\": \"#ebdbb2ff\"\n },\n \"variable.parameter\": {\n \"color\": \"#ebdbb2ff\"\n },\n \"variable.special\": {\n \"color\": \"#83a598ff\"\n },\n \"variant\": {\n \"color\": \"#83a598ff\"\n },\n \"diff.plus\": {\n \"color\": \"#b8bb26ff\"\n },\n \"diff.minus\": {\n \"color\": \"#fb4934ff\"\n }\n }\n }\n};\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }