@aiderdesk/aiderdesk 0.61.0 → 0.62.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 (382) hide show
  1. package/out/renderer/assets/{_baseUniq-BPF2Herp.js → _baseUniq-B7TxjYgy.js} +1 -1
  2. package/out/renderer/assets/abap-B7h4dtBh.js +7 -0
  3. package/out/renderer/assets/actionscript-3-DtnkuHN2.js +7 -0
  4. package/out/renderer/assets/ada-BZS802Se.js +7 -0
  5. package/out/renderer/assets/andromeeda-C847lm7Z.js +4 -0
  6. package/out/renderer/assets/angular-html-BYG42TJr.js +42 -0
  7. package/out/renderer/assets/angular-ts-BftcHvZ6.js +29 -0
  8. package/out/renderer/assets/apache-D4roVlsU.js +7 -0
  9. package/out/renderer/assets/apex-B-mI3Md2.js +7 -0
  10. package/out/renderer/assets/apl-CGZawg-A.js +18 -0
  11. package/out/renderer/assets/applescript-C43Knf0G.js +7 -0
  12. package/out/renderer/assets/ara-DRBH84ND.js +7 -0
  13. package/out/renderer/assets/{arc-DfPLteHF.js → arc-TuVjX2tH.js} +1 -1
  14. package/out/renderer/assets/{architectureDiagram-Q4EWVU46-Bw0u-sSH.js → architectureDiagram-Q4EWVU46-CnAcyRvO.js} +5 -5
  15. package/out/renderer/assets/asciidoc-CT8_dLUs.js +7 -0
  16. package/out/renderer/assets/asm-3tg4MVib.js +7 -0
  17. package/out/renderer/assets/astro-BxdWOZvM.js +19 -0
  18. package/out/renderer/assets/aurora-x-wJ4-eM2h.js +4 -0
  19. package/out/renderer/assets/awk-ChreaG-G.js +7 -0
  20. package/out/renderer/assets/ayu-dark-rtpbXCNg.js +4 -0
  21. package/out/renderer/assets/ayu-light-BCZDSyV8.js +4 -0
  22. package/out/renderer/assets/ayu-mirage-BVoH71sA.js +4 -0
  23. package/out/renderer/assets/ballerina-B0yt0TYU.js +7 -0
  24. package/out/renderer/assets/bat-BzNgQIA7.js +7 -0
  25. package/out/renderer/assets/beancount-aZWrE5WV.js +7 -0
  26. package/out/renderer/assets/berry--Qc8OslH.js +7 -0
  27. package/out/renderer/assets/bibtex-BLeFwAes.js +7 -0
  28. package/out/renderer/assets/bicep-DbBeGdXQ.js +7 -0
  29. package/out/renderer/assets/bird2-aXhIUHPg.js +7 -0
  30. package/out/renderer/assets/blade-BbH7YAUi.js +22 -0
  31. package/out/renderer/assets/{blockDiagram-DXYQGD6D-CkfB9if8.js → blockDiagram-DXYQGD6D-DBoJhGAM.js} +6 -6
  32. package/out/renderer/assets/bsl-DwPS0BId.js +9 -0
  33. package/out/renderer/assets/c-C4VtT7JA.js +7 -0
  34. package/out/renderer/assets/c3-CWHczQMq.js +7 -0
  35. package/out/renderer/assets/{c4Diagram-AHTNJAMY-DweK9Liz.js → c4Diagram-AHTNJAMY-BzW0gKwX.js} +2 -2
  36. package/out/renderer/assets/cadence-S_NtR5Dy.js +7 -0
  37. package/out/renderer/assets/cairo-BtYx2aM5.js +9 -0
  38. package/out/renderer/assets/catppuccin-frappe-C21OPQfC.js +4 -0
  39. package/out/renderer/assets/catppuccin-latte-0ZtXlsrX.js +4 -0
  40. package/out/renderer/assets/catppuccin-macchiato-BD_FR4sl.js +4 -0
  41. package/out/renderer/assets/catppuccin-mocha-C653csR5.js +4 -0
  42. package/out/renderer/assets/{channel-C5wwrRof.js → channel-CqR4FAVX.js} +1 -1
  43. package/out/renderer/assets/{chunk-4BX2VUAB-0KM14cFd.js → chunk-4BX2VUAB-DQjg_Naa.js} +1 -1
  44. package/out/renderer/assets/{chunk-4TB4RGXK-CmVtCVL4.js → chunk-4TB4RGXK-DkcI1yaW.js} +5 -5
  45. package/out/renderer/assets/{chunk-55IACEB6-BzVYZvBM.js → chunk-55IACEB6-pFPEMTmI.js} +1 -1
  46. package/out/renderer/assets/{chunk-EDXVE4YY-BryQl5Kv.js → chunk-EDXVE4YY-DRk838hn.js} +1 -1
  47. package/out/renderer/assets/{chunk-FMBD7UC4-CRiLea_e.js → chunk-FMBD7UC4-BagQdd5u.js} +1 -1
  48. package/out/renderer/assets/{chunk-OYMX7WX6-Cpi4N3NO.js → chunk-OYMX7WX6-DOGJ-XHp.js} +3 -3
  49. package/out/renderer/assets/{chunk-QZHKN3VN-BT8kABWC.js → chunk-QZHKN3VN-CdzjbbBk.js} +1 -1
  50. package/out/renderer/assets/{chunk-YZCP3GAM-OLZV_Sef.js → chunk-YZCP3GAM-BKZRTlUj.js} +1 -1
  51. package/out/renderer/assets/clarity-D2ViJC0i.js +7 -0
  52. package/out/renderer/assets/{classDiagram-6PBFFD2Q-VdE6G90i.js → classDiagram-6PBFFD2Q-CjVhmlxb.js} +6 -6
  53. package/out/renderer/assets/{classDiagram-v2-HSJHXN6E-VdE6G90i.js → classDiagram-v2-HSJHXN6E-CjVhmlxb.js} +6 -6
  54. package/out/renderer/assets/clojure-C_G4_w5x.js +7 -0
  55. package/out/renderer/assets/{clone-DwQZ86nS.js → clone-B-kqpcr4.js} +1 -1
  56. package/out/renderer/assets/cmake-CDfQILeU.js +7 -0
  57. package/out/renderer/assets/cobol-B8r1pfPr.js +13 -0
  58. package/out/renderer/assets/codeowners-awy7PWCD.js +7 -0
  59. package/out/renderer/assets/codeql-lfK8ppuq.js +7 -0
  60. package/out/renderer/assets/coffee-XLjtuEYs.js +9 -0
  61. package/out/renderer/assets/common-lisp-DAq1kaby.js +7 -0
  62. package/out/renderer/assets/coq-l_JvzFJl.js +7 -0
  63. package/out/renderer/assets/{cose-bilkent-S5V4N54A-BEcAKM9H.js → cose-bilkent-S5V4N54A-CZLRecVB.js} +1 -1
  64. package/out/renderer/assets/cpp-zh2ePAE_.js +22 -0
  65. package/out/renderer/assets/crystal-BqBRy7Ec.js +19 -0
  66. package/out/renderer/assets/csharp-DxX_6tHh.js +7 -0
  67. package/out/renderer/assets/css-BtVcDqlU.js +7 -0
  68. package/out/renderer/assets/csv-Ba84L8e5.js +7 -0
  69. package/out/renderer/assets/cue-BFSVLV6N.js +7 -0
  70. package/out/renderer/assets/cypher-DbUmWIxC.js +7 -0
  71. package/out/renderer/assets/d-9qSZPw74.js +7 -0
  72. package/out/renderer/assets/{dagre-KV5264BT-BcFQYL1M.js → dagre-KV5264BT-BUAzC7Um.js} +6 -6
  73. package/out/renderer/assets/dark-plus-DmZ1Dzd4.js +4 -0
  74. package/out/renderer/assets/dart-CCSsOg9l.js +7 -0
  75. package/out/renderer/assets/dax-CvsmLV-B.js +7 -0
  76. package/out/renderer/assets/desktop-_xiGZ9X1.js +7 -0
  77. package/out/renderer/assets/{diagram-5BDNPKRD-GrUNdC1u.js → diagram-5BDNPKRD-DNQEDszc.js} +6 -6
  78. package/out/renderer/assets/{diagram-G4DWMVQ6-CG4S-ov5.js → diagram-G4DWMVQ6-D9YY6W2O.js} +6 -6
  79. package/out/renderer/assets/{diagram-MMDJMWI5-9ogY3MRC.js → diagram-MMDJMWI5-B5H49OVD.js} +5 -5
  80. package/out/renderer/assets/{diagram-TYMM5635-Ck7mI1bS.js → diagram-TYMM5635-Bw7r467p.js} +5 -5
  81. package/out/renderer/assets/diff-BEdzuHlE.js +7 -0
  82. package/out/renderer/assets/docker-CUaLOm2I.js +7 -0
  83. package/out/renderer/assets/dotenv-Bb4iNxXK.js +7 -0
  84. package/out/renderer/assets/dracula-B8-AVrwI.js +4 -0
  85. package/out/renderer/assets/dracula-soft-BHeefow7.js +4 -0
  86. package/out/renderer/assets/dream-maker-CNLQpoF-.js +7 -0
  87. package/out/renderer/assets/edge-CnHxQ_FD.js +15 -0
  88. package/out/renderer/assets/elixir-B_LIBv5J.js +11 -0
  89. package/out/renderer/assets/elm-BlO7pcFp.js +10 -0
  90. package/out/renderer/assets/emacs-lisp-4gdXY_g3.js +7 -0
  91. package/out/renderer/assets/{erDiagram-SMLLAGMA-Dvf_c-7M.js → erDiagram-SMLLAGMA-Bz4ALNLp.js} +4 -4
  92. package/out/renderer/assets/erb-Bzn22wO6.js +28 -0
  93. package/out/renderer/assets/erlang-Ch5kuXHm.js +9 -0
  94. package/out/renderer/assets/everforest-dark-Cg1xdODP.js +4 -0
  95. package/out/renderer/assets/everforest-light-BmTD3bxe.js +4 -0
  96. package/out/renderer/assets/fennel-BTELNkeT.js +7 -0
  97. package/out/renderer/assets/fish-kGF2-4SL.js +7 -0
  98. package/out/renderer/assets/{flowDiagram-DWJPFMVM-CPDjOXYp.js → flowDiagram-DWJPFMVM-Uqg1ZeN2.js} +6 -6
  99. package/out/renderer/assets/fluent-YyC28MRr.js +7 -0
  100. package/out/renderer/assets/fortran-fixed-form-CpmOyvS5.js +9 -0
  101. package/out/renderer/assets/fortran-free-form-5X94ETMi.js +7 -0
  102. package/out/renderer/assets/fsharp-5vtGqRR9.js +9 -0
  103. package/out/renderer/assets/{ganttDiagram-T4ZO3ILL-B4dJrK-3.js → ganttDiagram-T4ZO3ILL-Dm0tRLCH.js} +1 -1
  104. package/out/renderer/assets/gdresource-B5TLWiFO.js +11 -0
  105. package/out/renderer/assets/gdscript-CNW3Aj-d.js +7 -0
  106. package/out/renderer/assets/gdshader-BEzE4j_3.js +7 -0
  107. package/out/renderer/assets/genie-BvhtM5Ga.js +7 -0
  108. package/out/renderer/assets/gherkin-xCNF9gh8.js +7 -0
  109. package/out/renderer/assets/git-commit-PP9xCApN.js +9 -0
  110. package/out/renderer/assets/git-rebase-D-XQSvDj.js +9 -0
  111. package/out/renderer/assets/{gitGraphDiagram-UUTBAWPF-De2eCfMN.js → gitGraphDiagram-UUTBAWPF-R8imfIrj.js} +6 -6
  112. package/out/renderer/assets/github-dark-O22yVQaY.js +4 -0
  113. package/out/renderer/assets/github-dark-default-DB2Hkvqn.js +4 -0
  114. package/out/renderer/assets/github-dark-dimmed-CMZ_OfqC.js +4 -0
  115. package/out/renderer/assets/github-dark-high-contrast-DmxWVmCU.js +4 -0
  116. package/out/renderer/assets/github-light-BTbR9xVK.js +4 -0
  117. package/out/renderer/assets/github-light-default-DWEonwFe.js +4 -0
  118. package/out/renderer/assets/github-light-high-contrast-WJ_cPDts.js +4 -0
  119. package/out/renderer/assets/gleam-LmNxrMsN.js +7 -0
  120. package/out/renderer/assets/glimmer-js-h2QNNiD7.js +15 -0
  121. package/out/renderer/assets/glimmer-ts-Bk3uX6Ae.js +15 -0
  122. package/out/renderer/assets/glsl-CGsiYPcu.js +9 -0
  123. package/out/renderer/assets/gn-OUMx7fqt.js +7 -0
  124. package/out/renderer/assets/gnuplot-tV8vezdE.js +7 -0
  125. package/out/renderer/assets/go-DRMr3iML.js +7 -0
  126. package/out/renderer/assets/{graph-BFn23kR_.js → graph-B5YWEnt0.js} +2 -2
  127. package/out/renderer/assets/graphql-CwmtR1ib.js +15 -0
  128. package/out/renderer/assets/groovy-Bn4MhXgW.js +7 -0
  129. package/out/renderer/assets/gruvbox-dark-hard-DVsRsETr.js +4 -0
  130. package/out/renderer/assets/gruvbox-dark-medium-B5JBrQdg.js +4 -0
  131. package/out/renderer/assets/gruvbox-dark-soft-Db-YOqRx.js +4 -0
  132. package/out/renderer/assets/gruvbox-light-hard-CXzJt7DI.js +4 -0
  133. package/out/renderer/assets/gruvbox-light-medium-B89RAI1Y.js +4 -0
  134. package/out/renderer/assets/gruvbox-light-soft-Cs0hTZYv.js +4 -0
  135. package/out/renderer/assets/hack-BTX3ICIE.js +13 -0
  136. package/out/renderer/assets/haml-DrIklt7F.js +11 -0
  137. package/out/renderer/assets/handlebars-yWFGGD2R.js +15 -0
  138. package/out/renderer/assets/haskell-CzPS7wjM.js +7 -0
  139. package/out/renderer/assets/haxe-BpobLYM9.js +7 -0
  140. package/out/renderer/assets/hcl-axoq0Ycu.js +7 -0
  141. package/out/renderer/assets/hjson-I7LcauIB.js +7 -0
  142. package/out/renderer/assets/hlsl-TRzjajlb.js +7 -0
  143. package/out/renderer/assets/horizon-DWzh3z5C.js +4 -0
  144. package/out/renderer/assets/horizon-bright-C1AFkPsv.js +4 -0
  145. package/out/renderer/assets/houston-CF_ws8Cq.js +4 -0
  146. package/out/renderer/assets/html-GC16tDh9.js +11 -0
  147. package/out/renderer/assets/html-derivative-HU9p64q4.js +11 -0
  148. package/out/renderer/assets/http-DjsOm9E4.js +20 -0
  149. package/out/renderer/assets/hurl-Am2cDU4f.js +18 -0
  150. package/out/renderer/assets/hxml-Jle7oGdm.js +9 -0
  151. package/out/renderer/assets/hy-B1k9U6S8.js +7 -0
  152. package/out/renderer/assets/imba-C4923lSV.js +7 -0
  153. package/out/renderer/assets/{index-BkntVzTm.css → index-B6Zj03wk.css} +82 -24
  154. package/out/renderer/assets/{index-BL-57WPa.js → index-D7Xi0GX5.js} +30034 -9238
  155. package/out/renderer/assets/{infoDiagram-42DDH7IO-BIt9B6mQ.js → infoDiagram-42DDH7IO-CWPYNP1k.js} +4 -4
  156. package/out/renderer/assets/ini-B84Ha1bx.js +7 -0
  157. package/out/renderer/assets/{ishikawaDiagram-UXIWVN3A-CXZs0KGV.js → ishikawaDiagram-UXIWVN3A-CFTrc-S6.js} +1 -1
  158. package/out/renderer/assets/java-BfXh-0uJ.js +7 -0
  159. package/out/renderer/assets/javascript-BsAkV7mL.js +7 -0
  160. package/out/renderer/assets/jinja-FkIlHBgj.js +16 -0
  161. package/out/renderer/assets/jison-BkdOIOd4.js +9 -0
  162. package/out/renderer/assets/{journeyDiagram-VCZTEJTY-B-EXuj5b.js → journeyDiagram-VCZTEJTY-Dfd-piIf.js} +4 -4
  163. package/out/renderer/assets/json-TjWBGEk1.js +7 -0
  164. package/out/renderer/assets/json5-DCGCKrmX.js +7 -0
  165. package/out/renderer/assets/jsonc-DLVLp8id.js +7 -0
  166. package/out/renderer/assets/jsonl-B-R_pDGg.js +7 -0
  167. package/out/renderer/assets/jsonnet-Cs8BnnC6.js +7 -0
  168. package/out/renderer/assets/jssm-DDuANZ2u.js +7 -0
  169. package/out/renderer/assets/jsx-BPmvoin2.js +7 -0
  170. package/out/renderer/assets/julia-CU_UwNb8.js +20 -0
  171. package/out/renderer/assets/just-tGFryTtU.js +34 -0
  172. package/out/renderer/assets/kanagawa-dragon-DU8n2NNT.js +4 -0
  173. package/out/renderer/assets/kanagawa-lotus-Byd0CDet.js +4 -0
  174. package/out/renderer/assets/kanagawa-wave-DExoagcR.js +4 -0
  175. package/out/renderer/assets/{kanban-definition-6JOO6SKY-ByvN0qaD.js → kanban-definition-6JOO6SKY-BocrfAtb.js} +2 -2
  176. package/out/renderer/assets/kdl-DzNQTDs7.js +7 -0
  177. package/out/renderer/assets/kotlin-BM2ZNTMh.js +7 -0
  178. package/out/renderer/assets/kusto-dtpuxMFE.js +7 -0
  179. package/out/renderer/assets/laserwave-DF03wMlf.js +4 -0
  180. package/out/renderer/assets/latex-B0gTO9uZ.js +10 -0
  181. package/out/renderer/assets/{layout-BpybWUv6.js → layout-DHzrXVin.js} +4 -4
  182. package/out/renderer/assets/lean-CTow-IzD.js +7 -0
  183. package/out/renderer/assets/less-BAzLMJNR.js +7 -0
  184. package/out/renderer/assets/light-plus-DS08Xg5J.js +4 -0
  185. package/out/renderer/assets/liquid-QmJ_LYTW.js +15 -0
  186. package/out/renderer/assets/llvm-CTKcAHbb.js +7 -0
  187. package/out/renderer/assets/log-BF22rfM9.js +7 -0
  188. package/out/renderer/assets/logo-D9l7oEJ8.js +7 -0
  189. package/out/renderer/assets/lua-BVbbqwZC.js +9 -0
  190. package/out/renderer/assets/luau-CdZ6BoEa.js +7 -0
  191. package/out/renderer/assets/make-DLtqaK4D.js +7 -0
  192. package/out/renderer/assets/markdown-F_EULe_G.js +7 -0
  193. package/out/renderer/assets/marko-BAWrmNIa.js +15 -0
  194. package/out/renderer/assets/material-theme-B8B2U48Q.js +4 -0
  195. package/out/renderer/assets/material-theme-darker-BV0iY_T3.js +4 -0
  196. package/out/renderer/assets/material-theme-lighter-DrzybSTF.js +4 -0
  197. package/out/renderer/assets/material-theme-ocean-BRPLVReX.js +4 -0
  198. package/out/renderer/assets/material-theme-palenight-DSJwsR_D.js +4 -0
  199. package/out/renderer/assets/matlab-7XHduepk.js +7 -0
  200. package/out/renderer/assets/mdc-Ca0ft0PS.js +16 -0
  201. package/out/renderer/assets/mdx-D5wExp-O.js +7 -0
  202. package/out/renderer/assets/mermaid-z_1ejSlp.js +7 -0
  203. package/out/renderer/assets/{min-DB8ixvoT.js → min-D6g96v7R.js} +2 -2
  204. package/out/renderer/assets/min-dark-BNaN9fWk.js +4 -0
  205. package/out/renderer/assets/min-light-CMrjentn.js +4 -0
  206. package/out/renderer/assets/{mindmap-definition-QFDTVHPH-Do-I-At8.js → mindmap-definition-QFDTVHPH-D9cyK1Gb.js} +3 -3
  207. package/out/renderer/assets/mipsasm-BQyyUrpa.js +7 -0
  208. package/out/renderer/assets/mojo-ByCRDvCf.js +7 -0
  209. package/out/renderer/assets/monokai-DelygWXa.js +4 -0
  210. package/out/renderer/assets/moonbit-CqjK87KZ.js +7 -0
  211. package/out/renderer/assets/move-DhTNmxqC.js +7 -0
  212. package/out/renderer/assets/narrat-CLjGcbCy.js +7 -0
  213. package/out/renderer/assets/nextflow-B166B-y1.js +9 -0
  214. package/out/renderer/assets/nextflow-groovy-BOO9s0iq.js +7 -0
  215. package/out/renderer/assets/nginx-BFAkI5_-.js +10 -0
  216. package/out/renderer/assets/night-owl-DSS199ra.js +4 -0
  217. package/out/renderer/assets/night-owl-light-gC6E-Eh2.js +4 -0
  218. package/out/renderer/assets/nim-B3PAIZ4D.js +22 -0
  219. package/out/renderer/assets/nix-ByWcmvXF.js +12 -0
  220. package/out/renderer/assets/nord-CvDbBq5M.js +4 -0
  221. package/out/renderer/assets/nushell-DB8ZUEbK.js +7 -0
  222. package/out/renderer/assets/objective-c-BRoNQF42.js +7 -0
  223. package/out/renderer/assets/objective-cpp-DEoN9Fe5.js +7 -0
  224. package/out/renderer/assets/ocaml-B1kfGk9Y.js +7 -0
  225. package/out/renderer/assets/odin-CNQ56Ay2.js +7 -0
  226. package/out/renderer/assets/one-dark-pro-CsMf0BoJ.js +4 -0
  227. package/out/renderer/assets/one-light-B0cTzZyr.js +4 -0
  228. package/out/renderer/assets/openscad-C_m7ehZF.js +7 -0
  229. package/out/renderer/assets/pascal-CU8Kjkr_.js +7 -0
  230. package/out/renderer/assets/perl-HITCDkgu.js +18 -0
  231. package/out/renderer/assets/php-C2HieitX.js +20 -0
  232. package/out/renderer/assets/{pieDiagram-DEJITSTG-Cnpf6Gt6.js → pieDiagram-DEJITSTG-LUWwVJA5.js} +6 -6
  233. package/out/renderer/assets/pierre-dark-DADY5eR0.js +4 -0
  234. package/out/renderer/assets/pierre-light-DUjirxKp.js +4 -0
  235. package/out/renderer/assets/pkl-BsByaYax.js +7 -0
  236. package/out/renderer/assets/plastic-BjwMpBc0.js +4 -0
  237. package/out/renderer/assets/plsql-B3Na24V4.js +7 -0
  238. package/out/renderer/assets/po-BajfNjc5.js +7 -0
  239. package/out/renderer/assets/poimandres-ChWyhPrn.js +4 -0
  240. package/out/renderer/assets/polar-BB-dlxnO.js +7 -0
  241. package/out/renderer/assets/postcss-kj1IbjVd.js +7 -0
  242. package/out/renderer/assets/powerquery-B-e1fO-k.js +7 -0
  243. package/out/renderer/assets/powershell-BcMVbGpk.js +7 -0
  244. package/out/renderer/assets/prisma-bmxcSDxq.js +7 -0
  245. package/out/renderer/assets/prolog-BT9GCzqD.js +7 -0
  246. package/out/renderer/assets/proto-Ds-m32NR.js +7 -0
  247. package/out/renderer/assets/pug-BwQB43qN.js +13 -0
  248. package/out/renderer/assets/puppet-N15G4Usj.js +7 -0
  249. package/out/renderer/assets/purescript-DrwsEYNH.js +7 -0
  250. package/out/renderer/assets/python-CrdIx4PZ.js +7 -0
  251. package/out/renderer/assets/qml-jtL8okyu.js +9 -0
  252. package/out/renderer/assets/qmldir-DuMSk0Oz.js +7 -0
  253. package/out/renderer/assets/qss-BFrB6p4y.js +7 -0
  254. package/out/renderer/assets/{quadrantDiagram-34T5L4WZ-VcOb1qLd.js → quadrantDiagram-34T5L4WZ-DdWTi9yW.js} +1 -1
  255. package/out/renderer/assets/r-Dpdc-Kyk.js +7 -0
  256. package/out/renderer/assets/racket-DbA06HL7.js +7 -0
  257. package/out/renderer/assets/raku-6v-Y17bs.js +7 -0
  258. package/out/renderer/assets/razor-gBXW6YBJ.js +13 -0
  259. package/out/renderer/assets/red-DByOl5N0.js +4 -0
  260. package/out/renderer/assets/reg-CULnG2WX.js +7 -0
  261. package/out/renderer/assets/regexp-BxWeO75u.js +7 -0
  262. package/out/renderer/assets/rel-CHRwzjd4.js +7 -0
  263. package/out/renderer/assets/{requirementDiagram-MS252O5E-VJs9Hpaw.js → requirementDiagram-MS252O5E-BoLT3tay.js} +3 -3
  264. package/out/renderer/assets/riscv-BNQ9cVpw.js +7 -0
  265. package/out/renderer/assets/ron-CUEPaFZU.js +7 -0
  266. package/out/renderer/assets/rose-pine-B-kZ4Z9q.js +4 -0
  267. package/out/renderer/assets/rose-pine-dawn-efeVGdSI.js +4 -0
  268. package/out/renderer/assets/rose-pine-moon-DmodZNzl.js +4 -0
  269. package/out/renderer/assets/rosmsg-Bfahr6vb.js +7 -0
  270. package/out/renderer/assets/rst-by6KAwTb.js +37 -0
  271. package/out/renderer/assets/ruby-C13Bjepi.js +37 -0
  272. package/out/renderer/assets/rust-CMNYZh5a.js +7 -0
  273. package/out/renderer/assets/{sankeyDiagram-XADWPNL6-BoXxgLvi.js → sankeyDiagram-XADWPNL6-B4gY_QI-.js} +1 -1
  274. package/out/renderer/assets/sas-BLBgC3TA.js +9 -0
  275. package/out/renderer/assets/sass-BheygBdF.js +7 -0
  276. package/out/renderer/assets/scala-B-_7vFVn.js +7 -0
  277. package/out/renderer/assets/scheme-BSHdPinv.js +7 -0
  278. package/out/renderer/assets/scss-Dq-LbI_c.js +9 -0
  279. package/out/renderer/assets/sdbl-BBUhycGU.js +7 -0
  280. package/out/renderer/assets/{sequenceDiagram-FGHM5R23-b69hQjSp.js → sequenceDiagram-FGHM5R23-B-JJvxQW.js} +3 -3
  281. package/out/renderer/assets/shaderlab-C07uO3dL.js +9 -0
  282. package/out/renderer/assets/shellscript-CQ8MXh-D.js +7 -0
  283. package/out/renderer/assets/shellsession-CkeTp4M1.js +9 -0
  284. package/out/renderer/assets/slack-dark-BEe10hxO.js +4 -0
  285. package/out/renderer/assets/slack-ochin-BKmu9pBc.js +4 -0
  286. package/out/renderer/assets/smalltalk-qxcGy4fT.js +7 -0
  287. package/out/renderer/assets/snazzy-light-Dcvd-ZyI.js +4 -0
  288. package/out/renderer/assets/solarized-dark-BBl5y5sR.js +4 -0
  289. package/out/renderer/assets/solarized-light-DW9b_AY8.js +4 -0
  290. package/out/renderer/assets/solidity-CSTQ0FCC.js +7 -0
  291. package/out/renderer/assets/soy-BHaHgMUy.js +11 -0
  292. package/out/renderer/assets/sparql-DswowMAp.js +9 -0
  293. package/out/renderer/assets/splunk-DcGJXIDa.js +7 -0
  294. package/out/renderer/assets/sql-DzUuSofg.js +7 -0
  295. package/out/renderer/assets/ssh-config-Bk_I5wDR.js +7 -0
  296. package/out/renderer/assets/stata-Dl7wDdBE.js +9 -0
  297. package/out/renderer/assets/{stateDiagram-FHFEXIEX-BK7E-REm.js → stateDiagram-FHFEXIEX-BntwOBUs.js} +8 -8
  298. package/out/renderer/assets/{stateDiagram-v2-QKLJ7IA2-Cd2wfCQu.js → stateDiagram-v2-QKLJ7IA2-C__eWVIe.js} +4 -4
  299. package/out/renderer/assets/stylus-DXFa_2Jl.js +7 -0
  300. package/out/renderer/assets/surrealql-Bs3vUeKA.js +9 -0
  301. package/out/renderer/assets/svelte-fC0HkEkx.js +15 -0
  302. package/out/renderer/assets/swift-Cohr-WZC.js +7 -0
  303. package/out/renderer/assets/synthwave-84-CoUef9sh.js +4 -0
  304. package/out/renderer/assets/system-verilog-BcESSvRn.js +7 -0
  305. package/out/renderer/assets/systemd-DJPFjU02.js +7 -0
  306. package/out/renderer/assets/talonscript-CEEMXJTH.js +7 -0
  307. package/out/renderer/assets/tasl-DfOr2qHi.js +7 -0
  308. package/out/renderer/assets/tcl-CTsc4-t7.js +7 -0
  309. package/out/renderer/assets/templ-CSEiQwNm.js +13 -0
  310. package/out/renderer/assets/terraform-CeztUfUr.js +7 -0
  311. package/out/renderer/assets/tex-CGVqF8nD.js +9 -0
  312. package/out/renderer/assets/{timeline-definition-GMOUNBTQ-Bl-MTfK5.js → timeline-definition-GMOUNBTQ-C7ch2INk.js} +2 -2
  313. package/out/renderer/assets/tokyo-night-DjtLpAEY.js +4 -0
  314. package/out/renderer/assets/toml-vHPzWDj6.js +7 -0
  315. package/out/renderer/assets/ts-tags-cG2hZuda.js +54 -0
  316. package/out/renderer/assets/tsv-ChRVFvMy.js +7 -0
  317. package/out/renderer/assets/tsx-CmGGo4Hm.js +7 -0
  318. package/out/renderer/assets/turtle-BnC7StHY.js +7 -0
  319. package/out/renderer/assets/twig-CwEEYIBf.js +36 -0
  320. package/out/renderer/assets/typescript-CP6ECzON.js +7 -0
  321. package/out/renderer/assets/typespec-CkDVVIcK.js +7 -0
  322. package/out/renderer/assets/typst-XYLFxYau.js +7 -0
  323. package/out/renderer/assets/v-BSYXvR4g.js +7 -0
  324. package/out/renderer/assets/vala-qJa5rry9.js +7 -0
  325. package/out/renderer/assets/vb-Bzg9rspf.js +7 -0
  326. package/out/renderer/assets/{vennDiagram-DHZGUBPP-DNmr1k2L.js → vennDiagram-DHZGUBPP-CQ__NSue.js} +1 -1
  327. package/out/renderer/assets/verilog-CCb_iTfF.js +7 -0
  328. package/out/renderer/assets/vesper-4Q1cEwPL.js +4 -0
  329. package/out/renderer/assets/vhdl-DMqk4T2s.js +7 -0
  330. package/out/renderer/assets/viml--FINbfoq.js +7 -0
  331. package/out/renderer/assets/vitesse-black-BqNLki8b.js +4 -0
  332. package/out/renderer/assets/vitesse-dark-jJ32WhwH.js +4 -0
  333. package/out/renderer/assets/vitesse-light-476zM4e6.js +4 -0
  334. package/out/renderer/assets/vue-K-7Ga-y8.js +40 -0
  335. package/out/renderer/assets/vue-html-DhreShjd.js +9 -0
  336. package/out/renderer/assets/vue-vine-rMIwOpFf.js +19 -0
  337. package/out/renderer/assets/vyper-DP4whl13.js +7 -0
  338. package/out/renderer/assets/{wardley-RL74JXVD-DTbxPMj9.js → wardley-RL74JXVD-Kh6mNiRV.js} +3 -3
  339. package/out/renderer/assets/{wardleyDiagram-NUSXRM2D-BWw08wtD.js → wardleyDiagram-NUSXRM2D-CfRYzJMU.js} +5 -5
  340. package/out/renderer/assets/wasm-BBh6f151.js +7 -0
  341. package/out/renderer/assets/wasm-DDgzZJey.js +10 -0
  342. package/out/renderer/assets/wenyan-BdqozpMZ.js +7 -0
  343. package/out/renderer/assets/wgsl-Vo-hHVWH.js +7 -0
  344. package/out/renderer/assets/wikitext-BDjE6pmL.js +7 -0
  345. package/out/renderer/assets/wit-C_nQzOkY.js +7 -0
  346. package/out/renderer/assets/wolfram-CRmjUoI4.js +7 -0
  347. package/out/renderer/assets/xml-BMzZeaqs.js +9 -0
  348. package/out/renderer/assets/xsl-CnwVr_6q.js +10 -0
  349. package/out/renderer/assets/{xychartDiagram-5P7HB3ND-EEYPnLDT.js → xychartDiagram-5P7HB3ND-BFq2zIne.js} +1 -1
  350. package/out/renderer/assets/yaml-B_vW5iTY.js +7 -0
  351. package/out/renderer/assets/zenscript-DFINJL6j.js +7 -0
  352. package/out/renderer/assets/zig-CS4FMAZp.js +7 -0
  353. package/out/renderer/index.html +2 -2
  354. package/out/resources/linux/probe +0 -0
  355. package/out/resources/linux-x64/probe +0 -0
  356. package/out/resources/mcp-server/aider-desk-mcp-server.js +16 -1
  357. package/out/resources/prompts/code-change-requests.hbs +21 -0
  358. package/out/resources/skills/extension-creator/SKILL.md +345 -0
  359. package/out/resources/skills/extension-creator/assets/templates/Component.jsx.template +76 -0
  360. package/out/resources/skills/extension-creator/assets/templates/ConfigComponent.jsx.template +38 -0
  361. package/out/resources/skills/extension-creator/assets/templates/folder-extension/config.ts.template +29 -0
  362. package/out/resources/skills/extension-creator/assets/templates/folder-extension/index.ts.template +42 -0
  363. package/out/resources/skills/extension-creator/assets/templates/folder-extension/package.json +12 -0
  364. package/out/resources/skills/extension-creator/assets/templates/folder-extension/tsconfig.json +23 -0
  365. package/out/resources/skills/extension-creator/assets/templates/folder-extension-with-config/index.ts.template +80 -0
  366. package/out/resources/skills/extension-creator/assets/templates/single-file.ts.template +30 -0
  367. package/out/resources/skills/extension-creator/assets/templates/ui-component-external.ts.template +91 -0
  368. package/out/resources/skills/extension-creator/assets/templates/ui-component.ts.template +79 -0
  369. package/out/resources/skills/extension-creator/references/command-definition.md +170 -0
  370. package/out/resources/skills/extension-creator/references/config-components.md +427 -0
  371. package/out/resources/skills/extension-creator/references/event-types.md +156 -0
  372. package/out/resources/skills/extension-creator/references/examples-gallery.md +583 -0
  373. package/out/resources/skills/extension-creator/references/extension-interface.md +306 -0
  374. package/out/resources/skills/extension-creator/references/extension-types.md +186 -0
  375. package/out/resources/skills/extension-creator/references/in-repo-flow.md +132 -0
  376. package/out/resources/skills/extension-creator/references/install-targets.md +96 -0
  377. package/out/resources/skills/extension-creator/references/project-global-flow.md +76 -0
  378. package/out/resources/skills/extension-creator/references/ui-components.md +663 -0
  379. package/out/runner.js +509 -164
  380. package/package.json +11 -9
  381. package/out/resources/prompts/code-inline-request.hbs +0 -16
  382. /package/patches/{ai+5.0.167.patch → ai+5.0.172.patch} +0 -0
@@ -0,0 +1,427 @@
1
+ # Config Components Reference
2
+
3
+ Config components provide a **per-extension settings UI** that appears in the Extension Settings dialog when users click the gear icon on an extension card. Unlike placement-based UI components (which render inside task pages), config components render in a dedicated settings modal with Save/Cancel buttons.
4
+
5
+ ## Overview
6
+
7
+ ```
8
+ User clicks extension gear icon
9
+ → ExtensionSettingsDialog opens
10
+ → Calls api.getExtensionConfigComponent(extensionId)
11
+ → Extension.getConfigComponent(context) returns JSX string
12
+ → Calls api.getExtensionConfig(extensionId)
13
+ → Extension.getConfigData(context) returns current config data
14
+ → Renders JSX with { config, updateConfig } props
15
+ → User edits values, clicks Save
16
+ → Calls api.saveExtensionConfig(extensionId, config)
17
+ → Extension.saveConfigData(configData, context) persists data
18
+ ```
19
+
20
+ ## The Three Methods
21
+
22
+ ### `getConfigComponent(context)` — Return Settings JSX
23
+
24
+ Returns a JSX string for the settings UI. The component receives `{ config, updateConfig }` as props:
25
+
26
+ - **`config`** — The current config data loaded from `getConfigData()`
27
+ - **`updateConfig`** — Callback to mutate the in-memory config state
28
+
29
+ ```typescript
30
+ getConfigComponent(_context: ExtensionContext): string | undefined {
31
+ // Option A: Inline JSX string
32
+ return `({ config, updateConfig }) => { ... }`;
33
+
34
+ // Option B: Load from external .jsx file (recommended for > 20 lines)
35
+ return readFileSync(join(__dirname, './ConfigComponent.jsx'), 'utf-8');
36
+ }
37
+ ```
38
+
39
+ Return `undefined` if your extension has no settings UI.
40
+
41
+ ### `getConfigData(context)` — Load Current Config
42
+
43
+ Called when the settings dialog opens. Returns the persisted configuration data:
44
+
45
+ ```typescript
46
+ async getConfigData(_context: ExtensionContext): Promise<unknown> {
47
+ try {
48
+ if (existsSync(this.configPath)) {
49
+ const data = readFileSync(this.configPath, 'utf-8');
50
+ const parsed = JSON.parse(data);
51
+ return { ...DEFAULT_CONFIG, ...parsed };
52
+ }
53
+ } catch {
54
+ // Ignore errors, fall back to defaults
55
+ }
56
+ return { ...DEFAULT_CONFIG };
57
+ }
58
+ ```
59
+
60
+ ### `saveConfigData(configData, context)` — Persist Config
61
+
62
+ Called when user clicks **Save** in the dialog:
63
+
64
+ ```typescript
65
+ async saveConfigData(configData: unknown, _context: ExtensionContext): Promise<unknown> {
66
+ const merged = { ...DEFAULT_CONFIG, ...configData as Partial<MyConfig> };
67
+ writeFileSync(this.configPath, JSON.stringify(merged, null, 2), 'utf-8');
68
+ return merged;
69
+ }
70
+ ```
71
+
72
+ ## Prefer ui Components Over Raw HTML
73
+
74
+ Always use the `ui` prop components (`ui.Input`, `ui.TextArea`, `ui.Select`, `ui.Checkbox`, etc.) instead of raw HTML `<input>`, `<textarea>`, `<select>` elements. This ensures consistent styling, accessibility, and theming across the application.
75
+
76
+ **Do this:**
77
+ ```jsx
78
+ ({ config, updateConfig, ui }) => {
79
+ const { Input } = ui;
80
+
81
+ return (
82
+ <Input
83
+ label="My Setting"
84
+ value={config?.mySetting || ''}
85
+ onChange={(value) => updateConfig({ ...config, mySetting: value })}
86
+ />
87
+ );
88
+ };
89
+ ```
90
+
91
+ **Not this:**
92
+ ```jsx
93
+ // Avoid raw HTML — inconsistent styling, no theme support
94
+ <input
95
+ type="text"
96
+ value={config?.mySetting || ''}
97
+ onChange={(e) => updateConfig({ ...config, mySetting: e.target.value })}
98
+ className="w-full px-3 py-2 ..."
99
+ />
100
+ ```
101
+
102
+ The `ui` components handle their own labels, styling, focus states, and dark mode automatically.
103
+
104
+ ## When Inner State Is (and Isn't) Needed
105
+
106
+ Config components receive `config` that is kept in sync by the parent dialog. **You do NOT need local state for simple form fields.**
107
+
108
+ ### No inner state needed (most cases)
109
+
110
+ When your component just reads from `config` and calls `updateConfig` on change — use `config` directly:
111
+
112
+ ```jsx
113
+ ({ config, updateConfig, ui }) => {
114
+ const { Input } = ui;
115
+ return <Input label="Folders" value={config?.folders || ''} onChange={(v) => updateConfig({ ...config, folders: v })} />;
116
+ };
117
+ ```
118
+
119
+ This works because `updateConfig` triggers a re-render with the updated `config` prop, so the input always shows the current value.
120
+
121
+ ### Inner state IS needed
122
+
123
+ Only introduce local state when you need behavior that goes beyond simple read/write:
124
+
125
+ - **Derived/computed values**: Displaying a transformed version of config (e.g., splitting a comma string into tags)
126
+ - **Transient UI state**: Expand/collapse sections, active tabs, modal visibility
127
+ - **Debounced input**: Delaying updates until user stops typing
128
+ - **Validation state**: Showing per-field error messages
129
+
130
+ ```jsx
131
+ ({ config, updateConfig, ui }) => {
132
+ const { useState } = React;
133
+ const { Input } = ui;
134
+
135
+ // Only needed because we transform config into tag-like items for editing
136
+ const [tags, setTags] = useState((config?.folders || '').split(',').filter(Boolean));
137
+
138
+ // ...
139
+ };
140
+ ```
141
+
142
+ ## Config Component Props
143
+
144
+ The JSX component receives these props:
145
+
146
+ ```typescript
147
+ {
148
+ // Current config data from getConfigData()
149
+ config: unknown,
150
+
151
+ // Callback to update in-memory config (does NOT persist!)
152
+ updateConfig: (newConfig: unknown) => void,
153
+
154
+ // All standard extension props (from useExtensions())
155
+ ui: UIComponents,
156
+ icons: Record<string, unknown>,
157
+ models: Model[],
158
+ providers: ProviderProfile[],
159
+ projectDir?: string,
160
+ task?: TaskData,
161
+ agentProfile?: AgentProfile,
162
+ mode: string,
163
+ api: ApplicationAPI,
164
+ }
165
+ ```
166
+
167
+ **Important:** `updateConfig` only updates the local React state. Persistence happens only when the user clicks **Save**, which triggers `saveConfigData()`.
168
+
169
+ ## Config Component JSX Format
170
+
171
+ Config components follow the same format as all other extension JSX files:
172
+
173
+ - Pure arrow function with destructured props
174
+ - React hooks accessed via `React.useState`, `React.useEffect`, etc.
175
+ - No imports — everything is available via props or globals
176
+ - Use Tailwind CSS for styling
177
+
178
+ ### Example: Text Input (no inner state, using ui.Input)
179
+
180
+ ```jsx
181
+ ({ config, updateConfig, ui }) => {
182
+ const { Input } = ui;
183
+
184
+ return (
185
+ <div className="flex flex-col gap-4">
186
+ <Input
187
+ label="My Setting"
188
+ value={config?.mySetting || ''}
189
+ onChange={(value) => updateConfig({ ...config, mySetting: value })}
190
+ placeholder="Enter value..."
191
+ />
192
+ <p className="text-xs text-text-secondary -mt-2">
193
+ Description of what this setting does.
194
+ </p>
195
+ </div>
196
+ );
197
+ };
198
+ ```
199
+
200
+ ### Example: Checkbox Toggle (no inner state)
201
+
202
+ ```jsx
203
+ ({ config, updateConfig, ui }) => {
204
+ const { Checkbox } = ui;
205
+
206
+ return (
207
+ <Checkbox
208
+ label="Enable feature"
209
+ checked={config?.enabled ?? false}
210
+ onChange={(checked) => updateConfig({ ...config, enabled: checked })}
211
+ />
212
+ );
213
+ };
214
+ ```
215
+
216
+ ### Example: Multiple Fields (no inner state)
217
+
218
+ ```jsx
219
+ ({ config, updateConfig, ui }) => {
220
+ const { Input, Checkbox } = ui;
221
+
222
+ return (
223
+ <div className="flex flex-col gap-4">
224
+ <Input
225
+ label="Rule Folders"
226
+ value={config?.ruleFolders || ''}
227
+ onChange={(value) => updateConfig({ ...config, ruleFolders: value })}
228
+ placeholder=".custom-rules, .ai/rules"
229
+ />
230
+ <Input
231
+ label="Max Depth"
232
+ type="number"
233
+ value={String(config?.maxDepth ?? 3)}
234
+ onChange={(value) => updateConfig({ ...config, maxDepth: Number(value) })}
235
+ />
236
+ <Checkbox
237
+ label="Include hidden directories"
238
+ checked={config?.includeHidden ?? false}
239
+ onChange={(checked) => updateConfig({ ...config, includeHidden: checked })}
240
+ />
241
+ </div>
242
+ );
243
+ };
244
+ ```
245
+
246
+ ### Example: With Inner State (derived/transient UI only)
247
+
248
+ Only use local state when you need behavior beyond simple read/write — such as derived display values or transient UI state:
249
+
250
+ ```jsx
251
+ ({ config, updateConfig, ui }) => {
252
+ const { useState, useMemo } = React;
253
+ const { Input } = ui;
254
+
255
+ // Inner state needed: splitting comma string into editable tag-like items
256
+ const rawValue = config?.folders || '';
257
+ const tags = useMemo(() => rawValue.split(',').map(t => t.trim()).filter(Boolean), [rawValue]);
258
+ const [activeTag, setActiveTag] = useState(null);
259
+
260
+ return (
261
+ <div className="flex flex-col gap-4">
262
+ <Input
263
+ label="Folders (comma-separated)"
264
+ value={rawValue}
265
+ onChange={(value) => updateConfig({ ...config, folders: value })}
266
+ />
267
+ {/* Tag preview — derived from config, uses inner state for UI interaction */}
268
+ <div className="flex flex-wrap gap-1">
269
+ {tags.map((tag) => (
270
+ <span
271
+ key={tag}
272
+ onClick={() => setActiveTag(tag === activeTag ? null : tag)}
273
+ className={`px-2 py-0.5 rounded text-xs cursor-pointer ${
274
+ tag === activeTag ? 'bg-accent text-white' : 'bg-bg-secondary'
275
+ }`}
276
+ >
277
+ {tag}
278
+ </span>
279
+ ))}
280
+ </div>
281
+ </div>
282
+ );
283
+ };
284
+ ```
285
+
286
+ ## File Structure Pattern
287
+
288
+ Recommended structure for extensions with config components:
289
+
290
+ ```
291
+ my-extension/
292
+ ├── index.ts # Main extension (loads JSX, implements 3 methods)
293
+ ├── ConfigComponent.jsx # Settings UI (pure arrow function)
294
+ └── config.json # Default/persisted config file
295
+ ```
296
+
297
+ ### index.ts Pattern
298
+
299
+ ```typescript
300
+ import { existsSync, readFileSync, writeFileSync } from 'node:fs';
301
+ import { join } from 'node:path';
302
+ import type { Extension, ExtensionContext } from '@aiderdesk/extensions';
303
+
304
+ // Load config JSX at module level (read once)
305
+ const configComponentJsx = readFileSync(join(__dirname, './ConfigComponent.jsx'), 'utf-8');
306
+
307
+ interface MyExtensionConfig {
308
+ ruleFolders: string;
309
+ enabled: boolean;
310
+ }
311
+
312
+ const DEFAULT_CONFIG: MyExtensionConfig = {
313
+ ruleFolders: '',
314
+ enabled: true,
315
+ };
316
+
317
+ export default class MyExtension implements Extension {
318
+ static metadata = {
319
+ name: 'My Extension',
320
+ version: '1.0.0',
321
+ description: 'Description here',
322
+ author: 'author-name',
323
+ capabilities: ['context'],
324
+ };
325
+
326
+ private configPath: string;
327
+
328
+ constructor() {
329
+ this.configPath = join(__dirname, 'config.json');
330
+ }
331
+
332
+ async onLoad(context: ExtensionContext): Promise<void> {
333
+ context.log('My Extension loaded', 'info');
334
+ }
335
+
336
+ getConfigComponent(_context: ExtensionContext): string {
337
+ return configComponentJsx;
338
+ }
339
+
340
+ async getConfigData(_context: ExtensionContext): Promise<MyExtensionConfig> {
341
+ try {
342
+ if (existsSync(this.configPath)) {
343
+ const data = readFileSync(this.configPath, 'utf-8');
344
+ return { ...DEFAULT_CONFIG, ...JSON.parse(data) };
345
+ }
346
+ } catch {
347
+ // Ignore errors
348
+ }
349
+ return { ...DEFAULT_CONFIG };
350
+ }
351
+
352
+ async saveConfigData(configData: unknown, _context: ExtensionContext): Promise<unknown> {
353
+ const merged: MyExtensionConfig = { ...DEFAULT_CONFIG, ...configData as Partial<MyExtensionConfig> };
354
+ writeFileSync(this.configPath, JSON.stringify(merged, null, 2), 'utf-8');
355
+ return merged;
356
+ }
357
+ }
358
+ ```
359
+
360
+ ### config.json (default)
361
+
362
+ ```json
363
+ {
364
+ "ruleFolders": "",
365
+ "enabled": true
366
+ }
367
+ ```
368
+
369
+ ## How hasConfig is Determined
370
+
371
+ The `InstalledExtension.metadata.hasConfig` flag is set by checking whether `instance.getConfigComponent` exists and returns a truthy (non-empty) JSX string. This means:
372
+
373
+ - If you implement `getConfigComponent` and return a non-empty string → `hasConfig: true` → gear icon appears on the extension card
374
+ - If you don't implement it, or return `undefined`/empty string → `hasConfig: false` → no settings entry point
375
+
376
+ ## Differences from Placement-Based UI Components
377
+
378
+ | Aspect | Config Components | Placement UI Components |
379
+ |--------|-------------------|------------------------|
380
+ | **Where they render** | ExtensionSettingsDialog modal | Task page placements |
381
+ | **Registration method** | `getConfigComponent()` | `getUIComponents()` |
382
+ | **Props received** | `{ config, updateConfig, ui, icons, ... }` | `{ data, task, ui, icons, ... }` |
383
+ | **Data loading** | `getConfigData()` always called | `getUIExtensionData()` only if `loadData: true` |
384
+ | **Persistence** | `saveConfigData()` on Save click | Via `executeExtensionAction()` |
385
+ | **Placement enum** | Not applicable | `UIComponentPlacement` enum |
386
+ | **One per extension** | Yes (single) | No (multiple allowed) |
387
+
388
+ ## Best Practices
389
+
390
+ ### Prefer ui.* components over raw HTML elements
391
+
392
+ Always use components from the `ui` prop (`Input`, `TextArea`, `Select`, `Checkbox`, etc.) instead of raw `<input>`, `<textarea>`, or `<select>` elements. The ui components handle labels, styling, focus states, dark mode, and accessibility automatically.
393
+
394
+ ### Avoid unnecessary inner state
395
+
396
+ For simple form fields, read directly from `config` and call `updateConfig` on change — no `useState`/`useEffect` needed. The parent re-renders with updated `config` after each `updateConfig` call. Only introduce local state for derived values, transient UI state (tabs, expand/collapse), debounced input, or validation.
397
+
398
+ ### Call updateConfig on every change
399
+
400
+ Don't wait for blur/submit — call `updateConfig` immediately so the Save button persists the latest value:
401
+
402
+ ```jsx
403
+ onChange={(e) => {
404
+ setValue(e.target.value);
405
+ updateConfig({ ...config, myValue: e.target.value });
406
+ }}
407
+ ```
408
+
409
+ ### Merge with defaults in both load and save
410
+
411
+ Always merge incoming data with defaults to handle missing fields gracefully:
412
+
413
+ ```typescript
414
+ // In getConfigData
415
+ return { ...DEFAULT_CONFIG, ...parsed };
416
+
417
+ // In saveConfigData
418
+ const merged = { ...DEFAULT_CONFIG, ...configData };
419
+ ```
420
+
421
+ ### Store config in the extension directory
422
+
423
+ Use `join(__dirname, 'config.json')` so config lives alongside the extension code. Never write outside the extension directory.
424
+
425
+ ### Keep config serializable
426
+
427
+ Only use primitive types (string, number, boolean, arrays, plain objects) that can be safely JSON-stringified.
@@ -0,0 +1,156 @@
1
+ # Event Types
2
+
3
+ All event types and their payloads for extension event handlers.
4
+
5
+ ## Event Modification Modes
6
+
7
+ | Mode | Events | Can Block | Can Modify |
8
+ |------|--------|-----------|------------|
9
+ | Read-Only | onTaskCreated, onTaskClosed, onFileAdded, etc. | No | No |
10
+ | Blocking | onToolApproval, onToolCalled, onPromptSubmitted, onHandleApproval, onSubagentStarted | Yes | Some |
11
+ | Modifying | onToolFinished, onResponseMessageProcessed, onAgentStarted | No | Yes |
12
+
13
+ ## Agent Events
14
+
15
+ ### AgentStartedEvent (Modifying)
16
+
17
+ ```typescript
18
+ interface AgentStartedEvent {
19
+ readonly mode: Mode;
20
+ prompt: string | null;
21
+ agentProfile: AgentProfile;
22
+ providerProfile: ProviderProfile;
23
+ model: string;
24
+ promptContext?: PromptContext;
25
+ systemPrompt: string | undefined;
26
+ contextMessages: ContextMessage[];
27
+ contextFiles: ContextFile[];
28
+ blocked?: boolean;
29
+ }
30
+ ```
31
+
32
+ ### AgentFinishedEvent
33
+
34
+ ```typescript
35
+ interface AgentFinishedEvent {
36
+ readonly mode: Mode;
37
+ readonly agentProfile: AgentProfile;
38
+ resultMessages: ContextMessage[];
39
+ }
40
+ ```
41
+
42
+ ### AgentStepFinishedEvent (Modifying)
43
+
44
+ ```typescript
45
+ interface AgentStepFinishedEvent {
46
+ readonly mode: Mode;
47
+ readonly agentProfile: AgentProfile;
48
+ readonly currentResponseId: string;
49
+ readonly stepResult: AgentStepResult;
50
+ finishReason: 'stop' | 'length' | 'content-filter' | 'tool-calls' | 'error' | 'other' | 'unknown';
51
+ responseMessages: ContextMessage[];
52
+ }
53
+ ```
54
+
55
+ ## Tool Events
56
+
57
+ ### ToolCalledEvent (Blocking)
58
+
59
+ ```typescript
60
+ interface ToolCalledEvent {
61
+ readonly tool: string;
62
+ readonly toolInput: Record<string, unknown>;
63
+ readonly agentProfile: AgentProfile;
64
+ blocked?: boolean;
65
+ }
66
+ ```
67
+
68
+ ### ToolFinishedEvent (Modifying)
69
+
70
+ ```typescript
71
+ interface ToolFinishedEvent {
72
+ readonly tool: string;
73
+ readonly toolInput: Record<string, unknown>;
74
+ readonly agentProfile: AgentProfile;
75
+ toolResult: unknown;
76
+ metadata?: Record<string, unknown>;
77
+ }
78
+ ```
79
+
80
+ ## Prompt Events
81
+
82
+ ### PromptSubmittedEvent (Blocking/Modifying)
83
+
84
+ ```typescript
85
+ interface PromptSubmittedEvent {
86
+ prompt: string;
87
+ mode: Mode;
88
+ promptContext: PromptContext;
89
+ blocked?: boolean;
90
+ }
91
+ ```
92
+
93
+ ## File Events
94
+
95
+ ### FileAddedEvent
96
+
97
+ ```typescript
98
+ interface FileAddedEvent {
99
+ files: string[];
100
+ }
101
+ ```
102
+
103
+ ## Subagent Events
104
+
105
+ ### SubagentStartedEvent (Blocking/Modifying)
106
+
107
+ ```typescript
108
+ interface SubagentStartedEvent {
109
+ subagentProfile: AgentProfile;
110
+ prompt: string;
111
+ promptContext?: PromptContext;
112
+ contextMessages: ContextMessage[];
113
+ contextFiles: ContextFile[];
114
+ systemPrompt?: string;
115
+ blocked?: boolean;
116
+ }
117
+ ```
118
+
119
+ ## Common Patterns
120
+
121
+ ### Blocking Execution
122
+
123
+ ```typescript
124
+ async onToolCalled(event: ToolCalledEvent): Promise<Partial<ToolCalledEvent>> {
125
+ if (event.tool === 'power---bash' && isDangerous(event.toolInput)) {
126
+ return { blocked: true };
127
+ }
128
+ return {};
129
+ }
130
+ ```
131
+
132
+ ### Modifying Messages
133
+
134
+ ```typescript
135
+ async onAgentStarted(event: AgentStartedEvent): Promise<Partial<AgentStartedEvent>> {
136
+ return {
137
+ contextMessages: [
138
+ { id: 'custom', role: 'user', content: 'Custom instruction' },
139
+ ...event.contextMessages
140
+ ]
141
+ };
142
+ }
143
+ ```
144
+
145
+ ### Modifying Profile
146
+
147
+ ```typescript
148
+ async onAgentStarted(event: AgentStartedEvent): Promise<Partial<AgentStartedEvent>> {
149
+ return {
150
+ agentProfile: {
151
+ ...event.agentProfile,
152
+ includeRepoMap: false
153
+ }
154
+ };
155
+ }
156
+ ```