acmecode 1.0.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 (131) hide show
  1. package/.acmecode/config.json +6 -0
  2. package/README.md +124 -0
  3. package/dist/agent/index.js +161 -0
  4. package/dist/cli/bin/acmecode.js +3 -0
  5. package/dist/cli/package.json +25 -0
  6. package/dist/cli/src/index.d.ts +1 -0
  7. package/dist/cli/src/index.js +53 -0
  8. package/dist/config/index.js +92 -0
  9. package/dist/context/index.js +30 -0
  10. package/dist/core/src/agent/index.d.ts +52 -0
  11. package/dist/core/src/agent/index.js +476 -0
  12. package/dist/core/src/config/index.d.ts +83 -0
  13. package/dist/core/src/config/index.js +318 -0
  14. package/dist/core/src/context/index.d.ts +1 -0
  15. package/dist/core/src/context/index.js +30 -0
  16. package/dist/core/src/llm/provider.d.ts +27 -0
  17. package/dist/core/src/llm/provider.js +202 -0
  18. package/dist/core/src/llm/vision.d.ts +7 -0
  19. package/dist/core/src/llm/vision.js +37 -0
  20. package/dist/core/src/mcp/index.d.ts +10 -0
  21. package/dist/core/src/mcp/index.js +84 -0
  22. package/dist/core/src/prompt/anthropic.d.ts +1 -0
  23. package/dist/core/src/prompt/anthropic.js +32 -0
  24. package/dist/core/src/prompt/architect.d.ts +1 -0
  25. package/dist/core/src/prompt/architect.js +17 -0
  26. package/dist/core/src/prompt/autopilot.d.ts +1 -0
  27. package/dist/core/src/prompt/autopilot.js +18 -0
  28. package/dist/core/src/prompt/beast.d.ts +1 -0
  29. package/dist/core/src/prompt/beast.js +83 -0
  30. package/dist/core/src/prompt/gemini.d.ts +1 -0
  31. package/dist/core/src/prompt/gemini.js +45 -0
  32. package/dist/core/src/prompt/index.d.ts +18 -0
  33. package/dist/core/src/prompt/index.js +239 -0
  34. package/dist/core/src/prompt/zen.d.ts +1 -0
  35. package/dist/core/src/prompt/zen.js +13 -0
  36. package/dist/core/src/session/index.d.ts +18 -0
  37. package/dist/core/src/session/index.js +97 -0
  38. package/dist/core/src/skills/index.d.ts +6 -0
  39. package/dist/core/src/skills/index.js +72 -0
  40. package/dist/core/src/tools/batch.d.ts +2 -0
  41. package/dist/core/src/tools/batch.js +65 -0
  42. package/dist/core/src/tools/browser.d.ts +7 -0
  43. package/dist/core/src/tools/browser.js +86 -0
  44. package/dist/core/src/tools/edit.d.ts +11 -0
  45. package/dist/core/src/tools/edit.js +312 -0
  46. package/dist/core/src/tools/index.d.ts +13 -0
  47. package/dist/core/src/tools/index.js +980 -0
  48. package/dist/core/src/tools/lsp-client.d.ts +11 -0
  49. package/dist/core/src/tools/lsp-client.js +224 -0
  50. package/dist/index.js +41 -0
  51. package/dist/llm/provider.js +34 -0
  52. package/dist/mcp/index.js +84 -0
  53. package/dist/session/index.js +74 -0
  54. package/dist/skills/index.js +32 -0
  55. package/dist/tools/index.js +96 -0
  56. package/dist/tui/App.js +297 -0
  57. package/dist/tui/Spinner.js +16 -0
  58. package/dist/tui/TextInput.js +98 -0
  59. package/dist/tui/src/App.d.ts +11 -0
  60. package/dist/tui/src/App.js +1211 -0
  61. package/dist/tui/src/CatLogo.d.ts +10 -0
  62. package/dist/tui/src/CatLogo.js +99 -0
  63. package/dist/tui/src/OptionList.d.ts +15 -0
  64. package/dist/tui/src/OptionList.js +60 -0
  65. package/dist/tui/src/Spinner.d.ts +7 -0
  66. package/dist/tui/src/Spinner.js +18 -0
  67. package/dist/tui/src/TextInput.d.ts +28 -0
  68. package/dist/tui/src/TextInput.js +139 -0
  69. package/dist/tui/src/Tips.d.ts +2 -0
  70. package/dist/tui/src/Tips.js +62 -0
  71. package/dist/tui/src/Toast.d.ts +19 -0
  72. package/dist/tui/src/Toast.js +39 -0
  73. package/dist/tui/src/TodoItem.d.ts +7 -0
  74. package/dist/tui/src/TodoItem.js +21 -0
  75. package/dist/tui/src/i18n.d.ts +172 -0
  76. package/dist/tui/src/i18n.js +189 -0
  77. package/dist/tui/src/markdown.d.ts +6 -0
  78. package/dist/tui/src/markdown.js +356 -0
  79. package/dist/tui/src/theme.d.ts +31 -0
  80. package/dist/tui/src/theme.js +239 -0
  81. package/output.txt +0 -0
  82. package/package.json +44 -0
  83. package/packages/cli/package.json +25 -0
  84. package/packages/cli/src/index.ts +59 -0
  85. package/packages/cli/tsconfig.json +26 -0
  86. package/packages/core/package.json +39 -0
  87. package/packages/core/src/agent/index.ts +588 -0
  88. package/packages/core/src/config/index.ts +383 -0
  89. package/packages/core/src/context/index.ts +34 -0
  90. package/packages/core/src/llm/provider.ts +237 -0
  91. package/packages/core/src/llm/vision.ts +43 -0
  92. package/packages/core/src/mcp/index.ts +110 -0
  93. package/packages/core/src/prompt/anthropic.ts +32 -0
  94. package/packages/core/src/prompt/architect.ts +17 -0
  95. package/packages/core/src/prompt/autopilot.ts +18 -0
  96. package/packages/core/src/prompt/beast.ts +83 -0
  97. package/packages/core/src/prompt/gemini.ts +45 -0
  98. package/packages/core/src/prompt/index.ts +267 -0
  99. package/packages/core/src/prompt/zen.ts +13 -0
  100. package/packages/core/src/session/index.ts +129 -0
  101. package/packages/core/src/skills/index.ts +86 -0
  102. package/packages/core/src/tools/batch.ts +73 -0
  103. package/packages/core/src/tools/browser.ts +95 -0
  104. package/packages/core/src/tools/edit.ts +317 -0
  105. package/packages/core/src/tools/index.ts +1112 -0
  106. package/packages/core/src/tools/lsp-client.ts +303 -0
  107. package/packages/core/tsconfig.json +19 -0
  108. package/packages/tui/package.json +24 -0
  109. package/packages/tui/src/App.tsx +1702 -0
  110. package/packages/tui/src/CatLogo.tsx +134 -0
  111. package/packages/tui/src/OptionList.tsx +95 -0
  112. package/packages/tui/src/Spinner.tsx +28 -0
  113. package/packages/tui/src/TextInput.tsx +202 -0
  114. package/packages/tui/src/Tips.tsx +64 -0
  115. package/packages/tui/src/Toast.tsx +60 -0
  116. package/packages/tui/src/TodoItem.tsx +29 -0
  117. package/packages/tui/src/i18n.ts +203 -0
  118. package/packages/tui/src/markdown.ts +403 -0
  119. package/packages/tui/src/theme.ts +287 -0
  120. package/packages/tui/tsconfig.json +24 -0
  121. package/tsconfig.json +18 -0
  122. package/vscode-acmecode/.vscodeignore +11 -0
  123. package/vscode-acmecode/README.md +57 -0
  124. package/vscode-acmecode/esbuild.js +46 -0
  125. package/vscode-acmecode/images/button-dark.svg +5 -0
  126. package/vscode-acmecode/images/button-light.svg +5 -0
  127. package/vscode-acmecode/images/icon.png +1 -0
  128. package/vscode-acmecode/package-lock.json +490 -0
  129. package/vscode-acmecode/package.json +87 -0
  130. package/vscode-acmecode/src/extension.ts +128 -0
  131. package/vscode-acmecode/tsconfig.json +16 -0
@@ -0,0 +1,490 @@
1
+ {
2
+ "name": "acmecode",
3
+ "version": "1.0.0",
4
+ "lockfileVersion": 3,
5
+ "requires": true,
6
+ "packages": {
7
+ "": {
8
+ "name": "acmecode",
9
+ "version": "1.0.0",
10
+ "license": "MIT",
11
+ "devDependencies": {
12
+ "@types/node": "^20.0.0",
13
+ "@types/vscode": "^1.94.0",
14
+ "esbuild": "^0.20.0",
15
+ "typescript": "^5.4.0"
16
+ },
17
+ "engines": {
18
+ "vscode": "^1.94.0"
19
+ }
20
+ },
21
+ "node_modules/@esbuild/aix-ppc64": {
22
+ "version": "0.20.2",
23
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz",
24
+ "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==",
25
+ "cpu": [
26
+ "ppc64"
27
+ ],
28
+ "dev": true,
29
+ "license": "MIT",
30
+ "optional": true,
31
+ "os": [
32
+ "aix"
33
+ ],
34
+ "engines": {
35
+ "node": ">=12"
36
+ }
37
+ },
38
+ "node_modules/@esbuild/android-arm": {
39
+ "version": "0.20.2",
40
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz",
41
+ "integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==",
42
+ "cpu": [
43
+ "arm"
44
+ ],
45
+ "dev": true,
46
+ "license": "MIT",
47
+ "optional": true,
48
+ "os": [
49
+ "android"
50
+ ],
51
+ "engines": {
52
+ "node": ">=12"
53
+ }
54
+ },
55
+ "node_modules/@esbuild/android-arm64": {
56
+ "version": "0.20.2",
57
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz",
58
+ "integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==",
59
+ "cpu": [
60
+ "arm64"
61
+ ],
62
+ "dev": true,
63
+ "license": "MIT",
64
+ "optional": true,
65
+ "os": [
66
+ "android"
67
+ ],
68
+ "engines": {
69
+ "node": ">=12"
70
+ }
71
+ },
72
+ "node_modules/@esbuild/android-x64": {
73
+ "version": "0.20.2",
74
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz",
75
+ "integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==",
76
+ "cpu": [
77
+ "x64"
78
+ ],
79
+ "dev": true,
80
+ "license": "MIT",
81
+ "optional": true,
82
+ "os": [
83
+ "android"
84
+ ],
85
+ "engines": {
86
+ "node": ">=12"
87
+ }
88
+ },
89
+ "node_modules/@esbuild/darwin-arm64": {
90
+ "version": "0.20.2",
91
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz",
92
+ "integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==",
93
+ "cpu": [
94
+ "arm64"
95
+ ],
96
+ "dev": true,
97
+ "license": "MIT",
98
+ "optional": true,
99
+ "os": [
100
+ "darwin"
101
+ ],
102
+ "engines": {
103
+ "node": ">=12"
104
+ }
105
+ },
106
+ "node_modules/@esbuild/darwin-x64": {
107
+ "version": "0.20.2",
108
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz",
109
+ "integrity": "sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==",
110
+ "cpu": [
111
+ "x64"
112
+ ],
113
+ "dev": true,
114
+ "license": "MIT",
115
+ "optional": true,
116
+ "os": [
117
+ "darwin"
118
+ ],
119
+ "engines": {
120
+ "node": ">=12"
121
+ }
122
+ },
123
+ "node_modules/@esbuild/freebsd-arm64": {
124
+ "version": "0.20.2",
125
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz",
126
+ "integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==",
127
+ "cpu": [
128
+ "arm64"
129
+ ],
130
+ "dev": true,
131
+ "license": "MIT",
132
+ "optional": true,
133
+ "os": [
134
+ "freebsd"
135
+ ],
136
+ "engines": {
137
+ "node": ">=12"
138
+ }
139
+ },
140
+ "node_modules/@esbuild/freebsd-x64": {
141
+ "version": "0.20.2",
142
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz",
143
+ "integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==",
144
+ "cpu": [
145
+ "x64"
146
+ ],
147
+ "dev": true,
148
+ "license": "MIT",
149
+ "optional": true,
150
+ "os": [
151
+ "freebsd"
152
+ ],
153
+ "engines": {
154
+ "node": ">=12"
155
+ }
156
+ },
157
+ "node_modules/@esbuild/linux-arm": {
158
+ "version": "0.20.2",
159
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz",
160
+ "integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==",
161
+ "cpu": [
162
+ "arm"
163
+ ],
164
+ "dev": true,
165
+ "license": "MIT",
166
+ "optional": true,
167
+ "os": [
168
+ "linux"
169
+ ],
170
+ "engines": {
171
+ "node": ">=12"
172
+ }
173
+ },
174
+ "node_modules/@esbuild/linux-arm64": {
175
+ "version": "0.20.2",
176
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz",
177
+ "integrity": "sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==",
178
+ "cpu": [
179
+ "arm64"
180
+ ],
181
+ "dev": true,
182
+ "license": "MIT",
183
+ "optional": true,
184
+ "os": [
185
+ "linux"
186
+ ],
187
+ "engines": {
188
+ "node": ">=12"
189
+ }
190
+ },
191
+ "node_modules/@esbuild/linux-ia32": {
192
+ "version": "0.20.2",
193
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz",
194
+ "integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==",
195
+ "cpu": [
196
+ "ia32"
197
+ ],
198
+ "dev": true,
199
+ "license": "MIT",
200
+ "optional": true,
201
+ "os": [
202
+ "linux"
203
+ ],
204
+ "engines": {
205
+ "node": ">=12"
206
+ }
207
+ },
208
+ "node_modules/@esbuild/linux-loong64": {
209
+ "version": "0.20.2",
210
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz",
211
+ "integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==",
212
+ "cpu": [
213
+ "loong64"
214
+ ],
215
+ "dev": true,
216
+ "license": "MIT",
217
+ "optional": true,
218
+ "os": [
219
+ "linux"
220
+ ],
221
+ "engines": {
222
+ "node": ">=12"
223
+ }
224
+ },
225
+ "node_modules/@esbuild/linux-mips64el": {
226
+ "version": "0.20.2",
227
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz",
228
+ "integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==",
229
+ "cpu": [
230
+ "mips64el"
231
+ ],
232
+ "dev": true,
233
+ "license": "MIT",
234
+ "optional": true,
235
+ "os": [
236
+ "linux"
237
+ ],
238
+ "engines": {
239
+ "node": ">=12"
240
+ }
241
+ },
242
+ "node_modules/@esbuild/linux-ppc64": {
243
+ "version": "0.20.2",
244
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz",
245
+ "integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==",
246
+ "cpu": [
247
+ "ppc64"
248
+ ],
249
+ "dev": true,
250
+ "license": "MIT",
251
+ "optional": true,
252
+ "os": [
253
+ "linux"
254
+ ],
255
+ "engines": {
256
+ "node": ">=12"
257
+ }
258
+ },
259
+ "node_modules/@esbuild/linux-riscv64": {
260
+ "version": "0.20.2",
261
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz",
262
+ "integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==",
263
+ "cpu": [
264
+ "riscv64"
265
+ ],
266
+ "dev": true,
267
+ "license": "MIT",
268
+ "optional": true,
269
+ "os": [
270
+ "linux"
271
+ ],
272
+ "engines": {
273
+ "node": ">=12"
274
+ }
275
+ },
276
+ "node_modules/@esbuild/linux-s390x": {
277
+ "version": "0.20.2",
278
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz",
279
+ "integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==",
280
+ "cpu": [
281
+ "s390x"
282
+ ],
283
+ "dev": true,
284
+ "license": "MIT",
285
+ "optional": true,
286
+ "os": [
287
+ "linux"
288
+ ],
289
+ "engines": {
290
+ "node": ">=12"
291
+ }
292
+ },
293
+ "node_modules/@esbuild/linux-x64": {
294
+ "version": "0.20.2",
295
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz",
296
+ "integrity": "sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==",
297
+ "cpu": [
298
+ "x64"
299
+ ],
300
+ "dev": true,
301
+ "license": "MIT",
302
+ "optional": true,
303
+ "os": [
304
+ "linux"
305
+ ],
306
+ "engines": {
307
+ "node": ">=12"
308
+ }
309
+ },
310
+ "node_modules/@esbuild/netbsd-x64": {
311
+ "version": "0.20.2",
312
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz",
313
+ "integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==",
314
+ "cpu": [
315
+ "x64"
316
+ ],
317
+ "dev": true,
318
+ "license": "MIT",
319
+ "optional": true,
320
+ "os": [
321
+ "netbsd"
322
+ ],
323
+ "engines": {
324
+ "node": ">=12"
325
+ }
326
+ },
327
+ "node_modules/@esbuild/openbsd-x64": {
328
+ "version": "0.20.2",
329
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz",
330
+ "integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==",
331
+ "cpu": [
332
+ "x64"
333
+ ],
334
+ "dev": true,
335
+ "license": "MIT",
336
+ "optional": true,
337
+ "os": [
338
+ "openbsd"
339
+ ],
340
+ "engines": {
341
+ "node": ">=12"
342
+ }
343
+ },
344
+ "node_modules/@esbuild/sunos-x64": {
345
+ "version": "0.20.2",
346
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz",
347
+ "integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==",
348
+ "cpu": [
349
+ "x64"
350
+ ],
351
+ "dev": true,
352
+ "license": "MIT",
353
+ "optional": true,
354
+ "os": [
355
+ "sunos"
356
+ ],
357
+ "engines": {
358
+ "node": ">=12"
359
+ }
360
+ },
361
+ "node_modules/@esbuild/win32-arm64": {
362
+ "version": "0.20.2",
363
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz",
364
+ "integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==",
365
+ "cpu": [
366
+ "arm64"
367
+ ],
368
+ "dev": true,
369
+ "license": "MIT",
370
+ "optional": true,
371
+ "os": [
372
+ "win32"
373
+ ],
374
+ "engines": {
375
+ "node": ">=12"
376
+ }
377
+ },
378
+ "node_modules/@esbuild/win32-ia32": {
379
+ "version": "0.20.2",
380
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz",
381
+ "integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==",
382
+ "cpu": [
383
+ "ia32"
384
+ ],
385
+ "dev": true,
386
+ "license": "MIT",
387
+ "optional": true,
388
+ "os": [
389
+ "win32"
390
+ ],
391
+ "engines": {
392
+ "node": ">=12"
393
+ }
394
+ },
395
+ "node_modules/@esbuild/win32-x64": {
396
+ "version": "0.20.2",
397
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz",
398
+ "integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==",
399
+ "cpu": [
400
+ "x64"
401
+ ],
402
+ "dev": true,
403
+ "license": "MIT",
404
+ "optional": true,
405
+ "os": [
406
+ "win32"
407
+ ],
408
+ "engines": {
409
+ "node": ">=12"
410
+ }
411
+ },
412
+ "node_modules/@types/node": {
413
+ "version": "20.19.33",
414
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.33.tgz",
415
+ "integrity": "sha512-Rs1bVAIdBs5gbTIKza/tgpMuG1k3U/UMJLWecIMxNdJFDMzcM5LOiLVRYh3PilWEYDIeUDv7bpiHPLPsbydGcw==",
416
+ "dev": true,
417
+ "license": "MIT",
418
+ "dependencies": {
419
+ "undici-types": "~6.21.0"
420
+ }
421
+ },
422
+ "node_modules/@types/vscode": {
423
+ "version": "1.109.0",
424
+ "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.109.0.tgz",
425
+ "integrity": "sha512-0Pf95rnwEIwDbmXGC08r0B4TQhAbsHQ5UyTIgVgoieDe4cOnf92usuR5dEczb6bTKEp7ziZH4TV1TRGPPCExtw==",
426
+ "dev": true,
427
+ "license": "MIT"
428
+ },
429
+ "node_modules/esbuild": {
430
+ "version": "0.20.2",
431
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz",
432
+ "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==",
433
+ "dev": true,
434
+ "hasInstallScript": true,
435
+ "license": "MIT",
436
+ "bin": {
437
+ "esbuild": "bin/esbuild"
438
+ },
439
+ "engines": {
440
+ "node": ">=12"
441
+ },
442
+ "optionalDependencies": {
443
+ "@esbuild/aix-ppc64": "0.20.2",
444
+ "@esbuild/android-arm": "0.20.2",
445
+ "@esbuild/android-arm64": "0.20.2",
446
+ "@esbuild/android-x64": "0.20.2",
447
+ "@esbuild/darwin-arm64": "0.20.2",
448
+ "@esbuild/darwin-x64": "0.20.2",
449
+ "@esbuild/freebsd-arm64": "0.20.2",
450
+ "@esbuild/freebsd-x64": "0.20.2",
451
+ "@esbuild/linux-arm": "0.20.2",
452
+ "@esbuild/linux-arm64": "0.20.2",
453
+ "@esbuild/linux-ia32": "0.20.2",
454
+ "@esbuild/linux-loong64": "0.20.2",
455
+ "@esbuild/linux-mips64el": "0.20.2",
456
+ "@esbuild/linux-ppc64": "0.20.2",
457
+ "@esbuild/linux-riscv64": "0.20.2",
458
+ "@esbuild/linux-s390x": "0.20.2",
459
+ "@esbuild/linux-x64": "0.20.2",
460
+ "@esbuild/netbsd-x64": "0.20.2",
461
+ "@esbuild/openbsd-x64": "0.20.2",
462
+ "@esbuild/sunos-x64": "0.20.2",
463
+ "@esbuild/win32-arm64": "0.20.2",
464
+ "@esbuild/win32-ia32": "0.20.2",
465
+ "@esbuild/win32-x64": "0.20.2"
466
+ }
467
+ },
468
+ "node_modules/typescript": {
469
+ "version": "5.9.3",
470
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
471
+ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
472
+ "dev": true,
473
+ "license": "Apache-2.0",
474
+ "bin": {
475
+ "tsc": "bin/tsc",
476
+ "tsserver": "bin/tsserver"
477
+ },
478
+ "engines": {
479
+ "node": ">=14.17"
480
+ }
481
+ },
482
+ "node_modules/undici-types": {
483
+ "version": "6.21.0",
484
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz",
485
+ "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==",
486
+ "dev": true,
487
+ "license": "MIT"
488
+ }
489
+ }
490
+ }
@@ -0,0 +1,87 @@
1
+ {
2
+ "name": "acmecode",
3
+ "displayName": "AcmeCode",
4
+ "description": "AcmeCode - AI Coding Assistant for VS Code",
5
+ "version": "1.0.0",
6
+ "publisher": "acmecode",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://github.com/acmecode/acmecode"
10
+ },
11
+ "license": "MIT",
12
+ "icon": "images/icon.png",
13
+ "galleryBanner": {
14
+ "color": "#0d1117",
15
+ "theme": "dark"
16
+ },
17
+ "engines": {
18
+ "vscode": "^1.94.0"
19
+ },
20
+ "categories": [
21
+ "Other"
22
+ ],
23
+ "activationEvents": [],
24
+ "main": "./dist/extension.js",
25
+ "contributes": {
26
+ "commands": [
27
+ {
28
+ "command": "acmecode.openTerminal",
29
+ "title": "Open AcmeCode",
30
+ "icon": {
31
+ "light": "images/button-dark.svg",
32
+ "dark": "images/button-light.svg"
33
+ }
34
+ },
35
+ {
36
+ "command": "acmecode.openNewTerminal",
37
+ "title": "Open AcmeCode in new tab",
38
+ "icon": {
39
+ "light": "images/button-dark.svg",
40
+ "dark": "images/button-light.svg"
41
+ }
42
+ },
43
+ {
44
+ "command": "acmecode.addFilepath",
45
+ "title": "Add Filepath to AcmeCode"
46
+ }
47
+ ],
48
+ "menus": {
49
+ "editor/title": [
50
+ {
51
+ "command": "acmecode.openNewTerminal",
52
+ "group": "navigation"
53
+ }
54
+ ]
55
+ },
56
+ "keybindings": [
57
+ {
58
+ "command": "acmecode.openTerminal",
59
+ "key": "ctrl+escape",
60
+ "mac": "cmd+escape"
61
+ },
62
+ {
63
+ "command": "acmecode.openNewTerminal",
64
+ "key": "ctrl+shift+escape",
65
+ "mac": "cmd+shift+escape"
66
+ },
67
+ {
68
+ "command": "acmecode.addFilepath",
69
+ "key": "ctrl+alt+k",
70
+ "mac": "cmd+alt+k"
71
+ }
72
+ ]
73
+ },
74
+ "scripts": {
75
+ "vscode:prepublish": "npm run package",
76
+ "compile": "node esbuild.js",
77
+ "watch": "node esbuild.js --watch",
78
+ "package": "node esbuild.js --production",
79
+ "check-types": "tsc --noEmit"
80
+ },
81
+ "devDependencies": {
82
+ "@types/node": "^20.0.0",
83
+ "@types/vscode": "^1.94.0",
84
+ "esbuild": "^0.20.0",
85
+ "typescript": "^5.4.0"
86
+ }
87
+ }
@@ -0,0 +1,128 @@
1
+ import * as vscode from "vscode";
2
+
3
+ const TERMINAL_NAME = "AcmeCode";
4
+
5
+ export function activate(context: vscode.ExtensionContext) {
6
+ // Open AcmeCode terminal (reuse existing or create new)
7
+ const openTerminalDisposable = vscode.commands.registerCommand(
8
+ "acmecode.openTerminal",
9
+ async () => {
10
+ const existingTerminal = vscode.window.terminals.find(
11
+ (t) => t.name === TERMINAL_NAME,
12
+ );
13
+ if (existingTerminal) {
14
+ existingTerminal.show();
15
+ return;
16
+ }
17
+ await createTerminal();
18
+ },
19
+ );
20
+
21
+ // Open new AcmeCode terminal in sidebar
22
+ const openNewTerminalDisposable = vscode.commands.registerCommand(
23
+ "acmecode.openNewTerminal",
24
+ async () => {
25
+ await createTerminal();
26
+ },
27
+ );
28
+
29
+ // Add filepath to terminal
30
+ const addFilepathDisposable = vscode.commands.registerCommand(
31
+ "acmecode.addFilepath",
32
+ async () => {
33
+ const fileRef = getActiveFile();
34
+ if (!fileRef) {
35
+ vscode.window.showWarningMessage("No active file to add");
36
+ return;
37
+ }
38
+
39
+ const terminal = vscode.window.activeTerminal;
40
+ if (!terminal) {
41
+ vscode.window.showWarningMessage("No active terminal");
42
+ return;
43
+ }
44
+
45
+ terminal.sendText(fileRef, false);
46
+ terminal.show();
47
+ },
48
+ );
49
+
50
+ context.subscriptions.push(
51
+ openTerminalDisposable,
52
+ openNewTerminalDisposable,
53
+ addFilepathDisposable,
54
+ );
55
+ }
56
+
57
+ export function deactivate() {}
58
+
59
+ async function createTerminal() {
60
+ // Get workspace folder
61
+ const workspaceFolder = vscode.workspace.workspaceFolders?.[0];
62
+ const cwd = workspaceFolder?.uri?.fsPath;
63
+
64
+ // Create terminal in sidebar
65
+ const terminal = vscode.window.createTerminal({
66
+ name: TERMINAL_NAME,
67
+ iconPath: {
68
+ light: vscode.Uri.file(
69
+ vscode.extensions.getExtension("acmecode.acmecode")?.extensionPath +
70
+ "/images/button-dark.svg",
71
+ ),
72
+ dark: vscode.Uri.file(
73
+ vscode.extensions.getExtension("acmecode.acmecode")?.extensionPath +
74
+ "/images/button-light.svg",
75
+ ),
76
+ },
77
+ cwd: cwd,
78
+ location: {
79
+ viewColumn: vscode.ViewColumn.Beside,
80
+ preserveFocus: false,
81
+ },
82
+ });
83
+
84
+ terminal.show();
85
+
86
+ // Run acmecode command
87
+ terminal.sendText("acmecode");
88
+
89
+ // Add current file reference if available
90
+ const fileRef = getActiveFile();
91
+ if (fileRef) {
92
+ // Wait a bit for terminal to start
93
+ await new Promise((resolve) => setTimeout(resolve, 500));
94
+ terminal.sendText(fileRef, false);
95
+ }
96
+ }
97
+
98
+ function getActiveFile(): string | undefined {
99
+ const activeEditor = vscode.window.activeTextEditor;
100
+ if (!activeEditor) {
101
+ return undefined;
102
+ }
103
+
104
+ const document = activeEditor.document;
105
+ const workspaceFolder = vscode.workspace.getWorkspaceFolder(document.uri);
106
+ if (!workspaceFolder) {
107
+ return undefined;
108
+ }
109
+
110
+ // Get relative path
111
+ const relativePath = vscode.workspace.asRelativePath(document.uri);
112
+ let filepathWithAt = `@${relativePath}`;
113
+
114
+ // Add line numbers if there's a selection
115
+ const selection = activeEditor.selection;
116
+ if (!selection.isEmpty) {
117
+ const startLine = selection.start.line + 1;
118
+ const endLine = selection.end.line + 1;
119
+
120
+ if (startLine === endLine) {
121
+ filepathWithAt += `#L${startLine}`;
122
+ } else {
123
+ filepathWithAt += `#L${startLine}-${endLine}`;
124
+ }
125
+ }
126
+
127
+ return filepathWithAt;
128
+ }