@aiderdesk/aiderdesk 0.61.0-dev → 0.61.1

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 (196) hide show
  1. package/out/renderer/assets/__vite-browser-external-2447137e-DYxpcVy9.js +4 -0
  2. package/out/renderer/assets/{_baseUniq-Z8t1Ab1g.js → _baseUniq-BPF2Herp.js} +21 -197
  3. package/out/renderer/assets/{arc-CwESpVYE.js → arc-DfPLteHF.js} +1 -1
  4. package/out/renderer/assets/{architectureDiagram-2XIMDMQ5-C490EQr5.js → architectureDiagram-Q4EWVU46-Bw0u-sSH.js} +34 -20
  5. package/out/renderer/assets/{blockDiagram-WCTKOSBZ-DbHssxrQ.js → blockDiagram-DXYQGD6D-CkfB9if8.js} +21 -8
  6. package/out/renderer/assets/{c4Diagram-IC4MRINW-BxE3GUKu.js → c4Diagram-AHTNJAMY-DweK9Liz.js} +31 -35
  7. package/out/renderer/assets/{channel-C9hJq_Xr.js → channel-C5wwrRof.js} +1 -1
  8. package/out/renderer/assets/{chunk-4BX2VUAB-ChcKNpL6.js → chunk-4BX2VUAB-0KM14cFd.js} +1 -1
  9. package/out/renderer/assets/{chunk-WL4C6EOR-vhby2fZi.js → chunk-4TB4RGXK-CmVtCVL4.js} +121 -82
  10. package/out/renderer/assets/{chunk-55IACEB6-oLT9lXTt.js → chunk-55IACEB6-BzVYZvBM.js} +1 -1
  11. package/out/renderer/assets/{chunk-KX2RTZJC-D32tV7H-.js → chunk-EDXVE4YY-BryQl5Kv.js} +1 -1
  12. package/out/renderer/assets/{chunk-FMBD7UC4-B5k8rETe.js → chunk-FMBD7UC4-CRiLea_e.js} +1 -1
  13. package/out/renderer/assets/{chunk-NQ4KR5QH-Bmqo2FpL.js → chunk-OYMX7WX6-Cpi4N3NO.js} +32 -15
  14. package/out/renderer/assets/{chunk-QZHKN3VN-8BpGifjS.js → chunk-QZHKN3VN-BT8kABWC.js} +1 -1
  15. package/out/renderer/assets/{chunk-JSJVCQXG-DtjSx6Cj.js → chunk-YZCP3GAM-OLZV_Sef.js} +1 -1
  16. package/out/renderer/assets/{classDiagram-VBA2DB6C-BxRSSb9e.js → classDiagram-6PBFFD2Q-VdE6G90i.js} +6 -6
  17. package/out/renderer/assets/{classDiagram-v2-RAHNMMFH-BxRSSb9e.js → classDiagram-v2-HSJHXN6E-VdE6G90i.js} +6 -6
  18. package/out/renderer/assets/{clone-D9a-uIZa.js → clone-DwQZ86nS.js} +1 -1
  19. package/out/renderer/assets/{cose-bilkent-S5V4N54A-CUqqQ-6R.js → cose-bilkent-S5V4N54A-BEcAKM9H.js} +1 -1
  20. package/out/renderer/assets/{dagre-KLK3FWXG-ORIwMMhq.js → dagre-KV5264BT-BcFQYL1M.js} +6 -6
  21. package/out/renderer/assets/diagram-5BDNPKRD-GrUNdC1u.js +171 -0
  22. package/out/renderer/assets/{diagram-E7M64L7V-bS9HcoDQ.js → diagram-G4DWMVQ6-CG4S-ov5.js} +15 -13
  23. package/out/renderer/assets/{diagram-IFDJBPK2-BRlTIR0J.js → diagram-MMDJMWI5-9ogY3MRC.js} +5 -6
  24. package/out/renderer/assets/{diagram-P4PSJMXO-jsjGwH-p.js → diagram-TYMM5635-Ck7mI1bS.js} +5 -6
  25. package/out/renderer/assets/{erDiagram-INFDFZHY-DGlgjHOQ.js → erDiagram-SMLLAGMA-Dvf_c-7M.js} +81 -35
  26. package/out/renderer/assets/{flowDiagram-PKNHOUZH-CzLC87bM.js → flowDiagram-DWJPFMVM-CPDjOXYp.js} +27 -45
  27. package/out/renderer/assets/{ganttDiagram-A5KZAMGK-BbDv36wT.js → ganttDiagram-T4ZO3ILL-B4dJrK-3.js} +17 -8
  28. package/out/renderer/assets/{gitGraphDiagram-K3NZZRJ6-CBQnBjEi.js → gitGraphDiagram-UUTBAWPF-De2eCfMN.js} +244 -67
  29. package/out/renderer/assets/{graph-Dl5N6maZ.js → graph-BFn23kR_.js} +175 -3
  30. package/out/renderer/assets/{index-MDHavDF9.js → index-BL-57WPa.js} +15877 -20787
  31. package/out/renderer/assets/{index-CDCy_DhA.css → index-BkntVzTm.css} +114 -301
  32. package/out/renderer/assets/{infoDiagram-LFFYTUFH-GtEDBEmz.js → infoDiagram-42DDH7IO-BIt9B6mQ.js} +5 -6
  33. package/out/renderer/assets/{ishikawaDiagram-PHBUUO56-Uj90gr3I.js → ishikawaDiagram-UXIWVN3A-CXZs0KGV.js} +3 -3
  34. package/out/renderer/assets/{journeyDiagram-4ABVD52K-DekFuOwS.js → journeyDiagram-VCZTEJTY-B-EXuj5b.js} +14 -13
  35. package/out/renderer/assets/{kanban-definition-K7BYSVSG-Hfz2L6NS.js → kanban-definition-6JOO6SKY-ByvN0qaD.js} +5 -2
  36. package/out/renderer/assets/{layout-B9K2VT39.js → layout-BpybWUv6.js} +117 -4
  37. package/out/renderer/assets/min-DB8ixvoT.js +41 -0
  38. package/out/renderer/assets/{mindmap-definition-YRQLILUH-DDcS7_GH.js → mindmap-definition-QFDTVHPH-Do-I-At8.js} +69 -13
  39. package/out/renderer/assets/{pieDiagram-SKSYHLDU-DwjEcJ0Q.js → pieDiagram-DEJITSTG-Cnpf6Gt6.js} +20 -13
  40. package/out/renderer/assets/{quadrantDiagram-337W2JSQ-CpGqN7vo.js → quadrantDiagram-34T5L4WZ-VcOb1qLd.js} +1 -1
  41. package/out/renderer/assets/{requirementDiagram-Z7DCOOCP-qDRUf1ip.js → requirementDiagram-MS252O5E-VJs9Hpaw.js} +42 -11
  42. package/out/renderer/assets/{sankeyDiagram-WA2Y5GQK-DRKS8C1H.js → sankeyDiagram-XADWPNL6-BoXxgLvi.js} +1 -1
  43. package/out/renderer/assets/{sequenceDiagram-2WXFIKYE-DhVN2ug2.js → sequenceDiagram-FGHM5R23-b69hQjSp.js} +446 -220
  44. package/out/renderer/assets/{stateDiagram-RAJIS63D-BpP4eSqu.js → stateDiagram-FHFEXIEX-BK7E-REm.js} +10 -9
  45. package/out/renderer/assets/{stateDiagram-v2-FVOUBMTO-B_qQJqra.js → stateDiagram-v2-QKLJ7IA2-Cd2wfCQu.js} +4 -4
  46. package/out/renderer/assets/{timeline-definition-YZTLITO2-UoWXE_76.js → timeline-definition-GMOUNBTQ-Bl-MTfK5.js} +445 -71
  47. package/out/renderer/assets/{vennDiagram-LZ73GAT5-Dp1FZ609.js → vennDiagram-DHZGUBPP-DNmr1k2L.js} +1 -1
  48. package/out/renderer/assets/{treemap-KZPCXAKY-W2a2L6ff.js → wardley-RL74JXVD-DTbxPMj9.js} +1474 -977
  49. package/out/renderer/assets/wardleyDiagram-NUSXRM2D-BWw08wtD.js +901 -0
  50. package/out/renderer/assets/{xychartDiagram-JWTSCODW-CTzYHTbD.js → xychartDiagram-5P7HB3ND-EEYPnLDT.js} +20 -4
  51. package/out/renderer/index.html +3 -3
  52. package/out/renderer/progress.html +212 -62
  53. package/out/resources/mcp-server/aider-desk-mcp-server.js +642 -402
  54. package/out/resources/skills/extension-creator/SKILL.md +320 -0
  55. package/out/resources/skills/extension-creator/assets/templates/Component.jsx.template +76 -0
  56. package/out/resources/skills/extension-creator/assets/templates/ConfigComponent.jsx.template +38 -0
  57. package/out/resources/skills/extension-creator/assets/templates/folder-extension/config.ts.template +29 -0
  58. package/out/resources/skills/extension-creator/assets/templates/folder-extension/index.ts.template +42 -0
  59. package/out/resources/skills/extension-creator/assets/templates/folder-extension/package.json +12 -0
  60. package/out/resources/skills/extension-creator/assets/templates/folder-extension/tsconfig.json +23 -0
  61. package/out/resources/skills/extension-creator/assets/templates/folder-extension-with-config/index.ts.template +80 -0
  62. package/out/resources/skills/extension-creator/assets/templates/single-file.ts.template +30 -0
  63. package/out/resources/skills/extension-creator/assets/templates/ui-component-external.ts.template +91 -0
  64. package/out/resources/skills/extension-creator/assets/templates/ui-component.ts.template +79 -0
  65. package/out/resources/skills/extension-creator/references/command-definition.md +170 -0
  66. package/out/resources/skills/extension-creator/references/config-components.md +427 -0
  67. package/out/resources/skills/extension-creator/references/event-types.md +156 -0
  68. package/out/resources/skills/extension-creator/references/examples-gallery.md +583 -0
  69. package/out/resources/skills/extension-creator/references/extension-interface.md +240 -0
  70. package/out/resources/skills/extension-creator/references/extension-types.md +186 -0
  71. package/out/resources/skills/extension-creator/references/in-repo-flow.md +132 -0
  72. package/out/resources/skills/extension-creator/references/install-targets.md +96 -0
  73. package/out/resources/skills/extension-creator/references/project-global-flow.md +76 -0
  74. package/out/resources/skills/extension-creator/references/ui-components.md +663 -0
  75. package/out/runner.js +976 -386
  76. package/package.json +2 -3
  77. package/out/renderer/assets/_basePickBy-BWoXHZ8Z.js +0 -161
  78. package/out/renderer/assets/apl-fqmucPXA.js +0 -140
  79. package/out/renderer/assets/asciiarmor-DucZyvP0.js +0 -56
  80. package/out/renderer/assets/asn1-BnOEsgAm.js +0 -144
  81. package/out/renderer/assets/asterisk-QAlztEwS.js +0 -345
  82. package/out/renderer/assets/brainfuck-DZVCuF_t.js +0 -53
  83. package/out/renderer/assets/clike-xqXYL6ge.js +0 -805
  84. package/out/renderer/assets/clojure-BhXMqnxz.js +0 -849
  85. package/out/renderer/assets/cmake-BGaNd9E7.js +0 -71
  86. package/out/renderer/assets/cobol-4yqQntpt.js +0 -120
  87. package/out/renderer/assets/coffeescript-D2dXvhEc.js +0 -308
  88. package/out/renderer/assets/commonlisp-CF_VNHQR.js +0 -130
  89. package/out/renderer/assets/crystal-DyuLTqLs.js +0 -398
  90. package/out/renderer/assets/css-c-jst79C.js +0 -1783
  91. package/out/renderer/assets/cypher-Dlu_3r4V.js +0 -121
  92. package/out/renderer/assets/d-UURgV0Ux.js +0 -179
  93. package/out/renderer/assets/diff-B_Bi2Crb.js +0 -25
  94. package/out/renderer/assets/dockerfile-Bvk733Ga.js +0 -201
  95. package/out/renderer/assets/dtd-Dy74G54E.js +0 -114
  96. package/out/renderer/assets/dylan-TSb-Nfix.js +0 -314
  97. package/out/renderer/assets/ebnf-4fKAGW3a.js +0 -140
  98. package/out/renderer/assets/ecl-B59qGGVg.js +0 -178
  99. package/out/renderer/assets/eiffel-Dze7nlu3.js +0 -134
  100. package/out/renderer/assets/elm-DG7jkhNZ.js +0 -176
  101. package/out/renderer/assets/erlang-BO6gOnGA.js +0 -674
  102. package/out/renderer/assets/factor-CMxFHDqz.js +0 -65
  103. package/out/renderer/assets/fcl-CDDUNjTj.js +0 -141
  104. package/out/renderer/assets/forth-B9D2JCeE.js +0 -116
  105. package/out/renderer/assets/fortran-CAG2BFbe.js +0 -467
  106. package/out/renderer/assets/gas-d3KEcW3x.js +0 -294
  107. package/out/renderer/assets/gherkin-DhZlEZiy.js +0 -115
  108. package/out/renderer/assets/groovy-CpwJiBl7.js +0 -223
  109. package/out/renderer/assets/haskell-ySd-OUo8.js +0 -459
  110. package/out/renderer/assets/haxe-7MlzfeYV.js +0 -514
  111. package/out/renderer/assets/http-BqypyemW.js +0 -79
  112. package/out/renderer/assets/idl-4HIGJlDI.js +0 -985
  113. package/out/renderer/assets/index-6qedlt0q.js +0 -689
  114. package/out/renderer/assets/index-86jDpUJn.js +0 -385
  115. package/out/renderer/assets/index-BRjO8ber.js +0 -332
  116. package/out/renderer/assets/index-BVgw7j0d.js +0 -312
  117. package/out/renderer/assets/index-BhkyI1q3.js +0 -642
  118. package/out/renderer/assets/index-BqrmLPkg.js +0 -82
  119. package/out/renderer/assets/index-BuPbw4xM.js +0 -178
  120. package/out/renderer/assets/index-CTO-LPBg.js +0 -311
  121. package/out/renderer/assets/index-CTO4SzlI.js +0 -97
  122. package/out/renderer/assets/index-CZ9IQK_0.js +0 -2488
  123. package/out/renderer/assets/index-CZxsVxBZ.js +0 -1765
  124. package/out/renderer/assets/index-DIXV-3Xn.js +0 -406
  125. package/out/renderer/assets/index-DNzOtZX5.js +0 -61
  126. package/out/renderer/assets/index-DZtJe7oC.js +0 -1019
  127. package/out/renderer/assets/index-DaWjZz_g.js +0 -291
  128. package/out/renderer/assets/index-De056HHR.js +0 -151
  129. package/out/renderer/assets/index-Dk3wSDSN.js +0 -117
  130. package/out/renderer/assets/index-Dy4VRsnA.js +0 -1041
  131. package/out/renderer/assets/index-FnnayPBc.js +0 -82
  132. package/out/renderer/assets/index-MZb_zy6R.js +0 -704
  133. package/out/renderer/assets/index-chzQl8rJ.js +0 -157
  134. package/out/renderer/assets/index-s-Owx3Pm.js +0 -327
  135. package/out/renderer/assets/javascript-C_OHM9hj.js +0 -994
  136. package/out/renderer/assets/julia-Bs6JJhYG.js +0 -407
  137. package/out/renderer/assets/livescript-DmzgM3Yt.js +0 -296
  138. package/out/renderer/assets/lua-8cJgIlqe.js +0 -256
  139. package/out/renderer/assets/mathematica-DNLOL9PQ.js +0 -110
  140. package/out/renderer/assets/mbox-Ga7d4MMN.js +0 -117
  141. package/out/renderer/assets/mirc-Dma3B8rS.js +0 -107
  142. package/out/renderer/assets/mllike-DHn7xckP.js +0 -334
  143. package/out/renderer/assets/modelica-0d55jYY0.js +0 -147
  144. package/out/renderer/assets/mscgen-DdqZYINH.js +0 -135
  145. package/out/renderer/assets/mumps-Btr8VblO.js +0 -93
  146. package/out/renderer/assets/nginx-DTDtBDVN.js +0 -141
  147. package/out/renderer/assets/nsis-3zG7tgur.js +0 -62
  148. package/out/renderer/assets/ntriples-CvgOYMpL.js +0 -153
  149. package/out/renderer/assets/octave-DYBj3-tl.js +0 -200
  150. package/out/renderer/assets/oz-R_e8WMIi.js +0 -231
  151. package/out/renderer/assets/pascal-GD8iposT.js +0 -105
  152. package/out/renderer/assets/perl-DL9mHpoi.js +0 -1105
  153. package/out/renderer/assets/pig-C_4T4YIV.js +0 -101
  154. package/out/renderer/assets/powershell-B0suO7Vd.js +0 -328
  155. package/out/renderer/assets/properties-BR-vP1aU.js +0 -58
  156. package/out/renderer/assets/protobuf-BxgpyhoW.js +0 -77
  157. package/out/renderer/assets/pug-CTXt1f8z.js +0 -405
  158. package/out/renderer/assets/puppet-Bdao66PW.js +0 -137
  159. package/out/renderer/assets/python-CvWbmiX4.js +0 -427
  160. package/out/renderer/assets/q-CrbCVq4a.js +0 -131
  161. package/out/renderer/assets/r-V7nswm59.js +0 -170
  162. package/out/renderer/assets/rpm-C-DLY-If.js +0 -109
  163. package/out/renderer/assets/ruby-JDKLJNK0.js +0 -330
  164. package/out/renderer/assets/sas-D2UG-yhZ.js +0 -207
  165. package/out/renderer/assets/scheme-BKzrkGJD.js +0 -222
  166. package/out/renderer/assets/shell-BlsXDxCn.js +0 -222
  167. package/out/renderer/assets/sieve-CjwBwOY5.js +0 -135
  168. package/out/renderer/assets/simple-mode-DMneyfDu.js +0 -130
  169. package/out/renderer/assets/smalltalk-BOIGQuhN.js +0 -121
  170. package/out/renderer/assets/solr-CwD7U71z.js +0 -69
  171. package/out/renderer/assets/sparql-DYskk2vE.js +0 -249
  172. package/out/renderer/assets/spreadsheet-Bgtt3oLP.js +0 -87
  173. package/out/renderer/assets/sql-BSrOzCRI.js +0 -354
  174. package/out/renderer/assets/stex-B6LNC55o.js +0 -231
  175. package/out/renderer/assets/stylus-BkS-boTH.js +0 -565
  176. package/out/renderer/assets/swift-FRZi1uvB.js +0 -291
  177. package/out/renderer/assets/tcl-CUcaCdmq.js +0 -114
  178. package/out/renderer/assets/textile-BnFpjsrl.js +0 -414
  179. package/out/renderer/assets/tiddlywiki-CjprD-Qp.js +0 -218
  180. package/out/renderer/assets/tiki-DK9DOeWn.js +0 -268
  181. package/out/renderer/assets/toml-BOuWGMcf.js +0 -76
  182. package/out/renderer/assets/troff-E1bJ0PPL.js +0 -61
  183. package/out/renderer/assets/ttcn-cfg-Dc39-fIP.js +0 -133
  184. package/out/renderer/assets/ttcn-tKd4HLu4.js +0 -192
  185. package/out/renderer/assets/turtle-Dq7-1WAf.js +0 -124
  186. package/out/renderer/assets/vb-Dp90gtsv.js +0 -196
  187. package/out/renderer/assets/vbscript-CI6_mxxU.js +0 -479
  188. package/out/renderer/assets/velocity-BwIZK1TH.js +0 -149
  189. package/out/renderer/assets/verilog-DDCYnHN8.js +0 -430
  190. package/out/renderer/assets/vhdl-DCkMIyT9.js +0 -158
  191. package/out/renderer/assets/webidl-BTLTThCm.js +0 -204
  192. package/out/renderer/assets/xquery-BrBUuxMR.js +0 -525
  193. package/out/renderer/assets/yacas-b5lAVEIl.js +0 -130
  194. package/out/renderer/assets/z80-BZV19vqv.js +0 -93
  195. package/scripts/download-uv.mjs +0 -147
  196. /package/patches/{ai+5.0.161.patch → ai+5.0.167.patch} +0 -0
@@ -0,0 +1,91 @@
1
+ /**
2
+ * {{EXTENSION_NAME}} Extension
3
+ *
4
+ * {{DESCRIPTION}}
5
+ *
6
+ * This extension uses external JSX files for UI components.
7
+ */
8
+
9
+ import { readFileSync } from 'fs';
10
+ import { join } from 'path';
11
+ import type {
12
+ Extension,
13
+ ExtensionContext,
14
+ UIComponentDefinition
15
+ } from '@aiderdesk/extensions';
16
+
17
+ interface ComponentData {
18
+ // Define data structure passed to component
19
+ message: string;
20
+ count: number;
21
+ }
22
+
23
+ export default class {{CLASS_NAME}}Extension implements Extension {
24
+ static metadata = {
25
+ name: '{{EXTENSION_NAME}}',
26
+ version: '1.0.0',
27
+ description: '{{DESCRIPTION}}',
28
+ author: '{{AUTHOR}}',
29
+ capabilities: ['ui'],
30
+ };
31
+
32
+ private state = {
33
+ count: 0,
34
+ message: 'Hello!',
35
+ };
36
+
37
+ async onLoad(context: ExtensionContext): Promise<void> {
38
+ context.log('{{EXTENSION_NAME}} extension loaded', 'info');
39
+ }
40
+
41
+ getUIComponents(_context: ExtensionContext): UIComponentDefinition[] {
42
+ // Load JSX from external file
43
+ const jsx = readFileSync(join(__dirname, './Component.jsx'), 'utf-8');
44
+
45
+ return [
46
+ {
47
+ id: '{{COMPONENT_ID}}',
48
+ placement: '{{PLACEMENT}}',
49
+ jsx,
50
+ loadData: true,
51
+ noDataCache: false, // Set to true if data should always be fresh
52
+ },
53
+ ];
54
+ }
55
+
56
+ async getUIExtensionData(
57
+ componentId: string,
58
+ _context: ExtensionContext
59
+ ): Promise<ComponentData | undefined> {
60
+ if (componentId === '{{COMPONENT_ID}}') {
61
+ return {
62
+ message: this.state.message,
63
+ count: this.state.count,
64
+ };
65
+ }
66
+ return undefined;
67
+ }
68
+
69
+ async executeUIExtensionAction(
70
+ componentId: string,
71
+ action: string,
72
+ args: unknown[],
73
+ context: ExtensionContext
74
+ ): Promise<unknown> {
75
+ if (componentId !== '{{COMPONENT_ID}}') return;
76
+
77
+ if (action === 'increment') {
78
+ this.state.count++;
79
+ context.triggerUIDataRefresh('{{COMPONENT_ID}}');
80
+ return { success: true, count: this.state.count };
81
+ }
82
+
83
+ if (action === 'set-message') {
84
+ this.state.message = args[0] as string;
85
+ context.triggerUIDataRefresh('{{COMPONENT_ID}}');
86
+ return { success: true };
87
+ }
88
+
89
+ return undefined;
90
+ }
91
+ }
@@ -0,0 +1,79 @@
1
+ /**
2
+ * {{EXTENSION_NAME}} Extension
3
+ *
4
+ * {{DESCRIPTION}}
5
+ */
6
+
7
+ import type {
8
+ Extension,
9
+ ExtensionContext,
10
+ UIComponentDefinition
11
+ } from '@aiderdesk/extensions';
12
+
13
+ export default class {{CLASS_NAME}}Extension implements Extension {
14
+ static metadata = {
15
+ name: '{{EXTENSION_NAME}}',
16
+ version: '1.0.0',
17
+ description: '{{DESCRIPTION}}',
18
+ author: '{{AUTHOR}}',
19
+ capabilities: ['ui'],
20
+ };
21
+
22
+ async onLoad(context: ExtensionContext): Promise<void> {
23
+ context.log('{{EXTENSION_NAME}} extension loaded', 'info');
24
+ }
25
+
26
+ getUIComponents(_context: ExtensionContext): UIComponentDefinition[] {
27
+ return [
28
+ {
29
+ id: '{{COMPONENT_ID}}',
30
+ placement: '{{PLACEMENT}}', // e.g., 'task-status-bar-right'
31
+ jsx: `
32
+ ({ data, task, ui }) => {
33
+ // Component implementation
34
+ return (
35
+ <div className="flex items-center gap-2 text-sm">
36
+ <span>Hello from {{EXTENSION_NAME}}</span>
37
+ </div>
38
+ );
39
+ }
40
+ `,
41
+ loadData: false, // Set to true if component needs data
42
+ },
43
+ ];
44
+ }
45
+
46
+ // Optional: Provide data to components
47
+ async getUIExtensionData(
48
+ componentId: string,
49
+ _context: ExtensionContext
50
+ ): Promise<unknown> {
51
+ if (componentId === '{{COMPONENT_ID}}') {
52
+ return {
53
+ // Data to pass to component
54
+ message: 'Hello from extension!',
55
+ };
56
+ }
57
+ return undefined;
58
+ }
59
+
60
+ // Optional: Handle actions from components
61
+ async executeUIExtensionAction(
62
+ componentId: string,
63
+ action: string,
64
+ args: unknown[],
65
+ context: ExtensionContext
66
+ ): Promise<unknown> {
67
+ if (componentId === '{{COMPONENT_ID}}') {
68
+ if (action === 'my-action') {
69
+ context.log('Action executed with args: ' + JSON.stringify(args), 'info');
70
+
71
+ // Trigger UI refresh if needed
72
+ context.triggerUIDataRefresh('{{COMPONENT_ID}}');
73
+
74
+ return { success: true };
75
+ }
76
+ }
77
+ return undefined;
78
+ }
79
+ }
@@ -0,0 +1,170 @@
1
+ # Command Definition
2
+
3
+ Structure for defining slash commands in extensions.
4
+
5
+ ## CommandDefinition Interface
6
+
7
+ ```typescript
8
+ interface CommandDefinition {
9
+ name: string; // Command name (without /)
10
+ description: string; // Shown in command palette
11
+ arguments?: CommandArgument[];
12
+ execute(args: string[], context: ExtensionContext): Promise<void>;
13
+ }
14
+
15
+ interface CommandArgument {
16
+ description: string;
17
+ required: boolean;
18
+ options?: string[]; // Predefined options for autocomplete
19
+ }
20
+ ```
21
+
22
+ ## Simple Command Example
23
+
24
+ ```typescript
25
+ const HELLO_COMMAND: CommandDefinition = {
26
+ name: 'hello',
27
+ description: 'Say hello',
28
+ arguments: [
29
+ { description: 'Name to greet', required: true }
30
+ ],
31
+ async execute(args: string[], context: ExtensionContext): Promise<void> {
32
+ const taskContext = context.getTaskContext();
33
+ if (!taskContext) {
34
+ context.log('No task context', 'error');
35
+ return;
36
+ }
37
+
38
+ const name = args[0] || 'World';
39
+ taskContext.addLogMessage('info', `Hello, ${name}!`);
40
+ }
41
+ };
42
+ ```
43
+
44
+ ## Command with Options
45
+
46
+ ```typescript
47
+ const THEME_COMMAND: CommandDefinition = {
48
+ name: 'theme',
49
+ description: 'Switch the AiderDesk theme',
50
+ arguments: [
51
+ {
52
+ description: 'Name of the theme to apply',
53
+ required: true,
54
+ options: ['dark', 'light', 'ocean', 'forest']
55
+ }
56
+ ],
57
+ async execute(args: string[], context: ExtensionContext): Promise<void> {
58
+ const taskContext = context.getTaskContext();
59
+ const themeName = args[0];
60
+
61
+ if (!themeName) {
62
+ taskContext?.addLogMessage('warning', 'Usage: /theme <theme-name>');
63
+ return;
64
+ }
65
+
66
+ await context.updateSettings({ theme: themeName });
67
+ taskContext?.addLogMessage('info', `Theme changed to: ${themeName}`);
68
+ }
69
+ };
70
+ ```
71
+
72
+ ## Command with Config
73
+
74
+ ```typescript
75
+ // In extension class
76
+ private config: MyConfig;
77
+
78
+ async onLoad(context: ExtensionContext): Promise<void> {
79
+ this.config = await loadConfig();
80
+ }
81
+
82
+ getCommands(_context: ExtensionContext): CommandDefinition[] {
83
+ return [{
84
+ name: 'my-setting',
85
+ description: 'Get or set a value',
86
+ arguments: [
87
+ { description: 'Value to set (optional)', required: false }
88
+ ],
89
+ execute: async (args: string[], context: ExtensionContext) => {
90
+ const taskContext = context.getTaskContext();
91
+ const [value] = args;
92
+
93
+ if (!value) {
94
+ // Show current value
95
+ taskContext?.addLogMessage('info', `Current: ${this.config.mySetting}`);
96
+ } else {
97
+ // Update value
98
+ this.config.mySetting = value;
99
+ await saveConfig(this.config);
100
+ taskContext?.addLogMessage('info', `Updated to: ${value}`);
101
+ }
102
+ }
103
+ }];
104
+ }
105
+ ```
106
+
107
+ ## Multi-Argument Commands
108
+
109
+ ```typescript
110
+ const CONFIG_COMMAND: CommandDefinition = {
111
+ name: 'config',
112
+ description: 'Manage extension settings',
113
+ arguments: [
114
+ { description: 'Setting name', required: true },
115
+ { description: 'Setting value', required: false }
116
+ ],
117
+ async execute(args: string[], context: ExtensionContext): Promise<void> {
118
+ const taskContext = context.getTaskContext();
119
+ const [setting, value] = args;
120
+
121
+ if (!setting) {
122
+ // Show all settings
123
+ const config = await loadConfig();
124
+ taskContext?.addLogMessage('info', `Settings:\n${JSON.stringify(config, null, 2)}`);
125
+ return;
126
+ }
127
+
128
+ if (!value) {
129
+ // Show specific setting
130
+ const config = await loadConfig();
131
+ taskContext?.addLogMessage('info', `${setting}: ${config[setting]}`);
132
+ return;
133
+ }
134
+
135
+ // Update setting
136
+ const config = await loadConfig();
137
+ config[setting] = value;
138
+ await saveConfig(config);
139
+ taskContext?.addLogMessage('info', `${setting} updated to: ${value}`);
140
+ }
141
+ };
142
+ ```
143
+
144
+ ## Error Handling
145
+
146
+ ```typescript
147
+ execute: async (args: string[], context: ExtensionContext) => {
148
+ const taskContext = context.getTaskContext();
149
+ if (!taskContext) {
150
+ context.log('No active task context', 'error');
151
+ return;
152
+ }
153
+
154
+ try {
155
+ // Command logic
156
+ } catch (error) {
157
+ taskContext.addLogMessage('error', `Command failed: ${error}`);
158
+ }
159
+ }
160
+ ```
161
+
162
+ ## Registering Commands
163
+
164
+ ```typescript
165
+ class MyExtension implements Extension {
166
+ getCommands(_context: ExtensionContext): CommandDefinition[] {
167
+ return [COMMAND_1, COMMAND_2];
168
+ }
169
+ }
170
+ ```