@agentuity/cli 0.0.51 → 0.0.52

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 (299) hide show
  1. package/dist/api.js +68 -0
  2. package/dist/api.js.map +1 -0
  3. package/dist/auth.js +225 -0
  4. package/dist/auth.js.map +1 -0
  5. package/dist/banner.js +35 -0
  6. package/dist/banner.js.map +1 -0
  7. package/dist/cli-logger.js +72 -0
  8. package/dist/cli-logger.js.map +1 -0
  9. package/dist/cli.js +822 -0
  10. package/dist/cli.js.map +1 -0
  11. package/dist/cmd/ai/capabilities/index.js +10 -0
  12. package/dist/cmd/ai/capabilities/index.js.map +1 -0
  13. package/dist/cmd/ai/capabilities/show.js +221 -0
  14. package/dist/cmd/ai/capabilities/show.js.map +1 -0
  15. package/dist/cmd/ai/index.js +11 -0
  16. package/dist/cmd/ai/index.js.map +1 -0
  17. package/dist/cmd/ai/prompt/index.js +10 -0
  18. package/dist/cmd/ai/prompt/index.js.map +1 -0
  19. package/dist/cmd/ai/prompt/llm.js +365 -0
  20. package/dist/cmd/ai/prompt/llm.js.map +1 -0
  21. package/dist/cmd/ai/schema/index.js +10 -0
  22. package/dist/cmd/ai/schema/index.js.map +1 -0
  23. package/dist/cmd/ai/schema/show.js +23 -0
  24. package/dist/cmd/ai/schema/show.js.map +1 -0
  25. package/dist/cmd/auth/api.js +85 -0
  26. package/dist/cmd/auth/api.js.map +1 -0
  27. package/dist/cmd/auth/index.js +13 -0
  28. package/dist/cmd/auth/index.js.map +1 -0
  29. package/dist/cmd/auth/login.js +84 -0
  30. package/dist/cmd/auth/login.js.map +1 -0
  31. package/dist/cmd/auth/logout.js +17 -0
  32. package/dist/cmd/auth/logout.js.map +1 -0
  33. package/dist/cmd/auth/signup.js +55 -0
  34. package/dist/cmd/auth/signup.js.map +1 -0
  35. package/dist/cmd/auth/ssh/add.js +239 -0
  36. package/dist/cmd/auth/ssh/add.js.map +1 -0
  37. package/dist/cmd/auth/ssh/api.js +53 -0
  38. package/dist/cmd/auth/ssh/api.js.map +1 -0
  39. package/dist/cmd/auth/ssh/delete.js +126 -0
  40. package/dist/cmd/auth/ssh/delete.js.map +1 -0
  41. package/dist/cmd/auth/ssh/index.js +11 -0
  42. package/dist/cmd/auth/ssh/index.js.map +1 -0
  43. package/dist/cmd/auth/ssh/list.js +70 -0
  44. package/dist/cmd/auth/ssh/list.js.map +1 -0
  45. package/dist/cmd/auth/whoami.js +68 -0
  46. package/dist/cmd/auth/whoami.js.map +1 -0
  47. package/dist/cmd/build/ast.js +608 -0
  48. package/dist/cmd/build/ast.js.map +1 -0
  49. package/dist/cmd/build/ast.test.js +389 -0
  50. package/dist/cmd/build/ast.test.js.map +1 -0
  51. package/dist/cmd/build/bundler.js +304 -0
  52. package/dist/cmd/build/bundler.js.map +1 -0
  53. package/dist/cmd/build/file.js +10 -0
  54. package/dist/cmd/build/file.js.map +1 -0
  55. package/dist/cmd/build/fix-duplicate-exports.js +167 -0
  56. package/dist/cmd/build/fix-duplicate-exports.js.map +1 -0
  57. package/dist/cmd/build/fix-duplicate-exports.test.js +300 -0
  58. package/dist/cmd/build/fix-duplicate-exports.test.js.map +1 -0
  59. package/dist/cmd/build/index.d.ts.map +1 -1
  60. package/dist/cmd/build/index.js +79 -0
  61. package/dist/cmd/build/index.js.map +1 -0
  62. package/dist/cmd/build/patch/_util.js +42 -0
  63. package/dist/cmd/build/patch/_util.js.map +1 -0
  64. package/dist/cmd/build/patch/aisdk.js +65 -0
  65. package/dist/cmd/build/patch/aisdk.js.map +1 -0
  66. package/dist/cmd/build/patch/index.js +97 -0
  67. package/dist/cmd/build/patch/index.js.map +1 -0
  68. package/dist/cmd/build/patch/llm.js +18 -0
  69. package/dist/cmd/build/patch/llm.js.map +1 -0
  70. package/dist/cmd/build/plugin.d.ts.map +1 -1
  71. package/dist/cmd/build/plugin.js +556 -0
  72. package/dist/cmd/build/plugin.js.map +1 -0
  73. package/dist/cmd/cloud/agents/index.js +133 -0
  74. package/dist/cmd/cloud/agents/index.js.map +1 -0
  75. package/dist/cmd/cloud/deploy.js +341 -0
  76. package/dist/cmd/cloud/deploy.js.map +1 -0
  77. package/dist/cmd/cloud/deployment/index.js +20 -0
  78. package/dist/cmd/cloud/deployment/index.js.map +1 -0
  79. package/dist/cmd/cloud/deployment/list.js +89 -0
  80. package/dist/cmd/cloud/deployment/list.js.map +1 -0
  81. package/dist/cmd/cloud/deployment/remove.js +60 -0
  82. package/dist/cmd/cloud/deployment/remove.js.map +1 -0
  83. package/dist/cmd/cloud/deployment/rollback.js +80 -0
  84. package/dist/cmd/cloud/deployment/rollback.js.map +1 -0
  85. package/dist/cmd/cloud/deployment/show.js +106 -0
  86. package/dist/cmd/cloud/deployment/show.js.map +1 -0
  87. package/dist/cmd/cloud/deployment/undeploy.js +45 -0
  88. package/dist/cmd/cloud/deployment/undeploy.js.map +1 -0
  89. package/dist/cmd/cloud/deployment/utils.js +10 -0
  90. package/dist/cmd/cloud/deployment/utils.js.map +1 -0
  91. package/dist/cmd/cloud/domain.js +77 -0
  92. package/dist/cmd/cloud/domain.js.map +1 -0
  93. package/dist/cmd/cloud/env/delete.js +50 -0
  94. package/dist/cmd/cloud/env/delete.js.map +1 -0
  95. package/dist/cmd/cloud/env/get.js +65 -0
  96. package/dist/cmd/cloud/env/get.js.map +1 -0
  97. package/dist/cmd/cloud/env/import.js +113 -0
  98. package/dist/cmd/cloud/env/import.js.map +1 -0
  99. package/dist/cmd/cloud/env/index.js +24 -0
  100. package/dist/cmd/cloud/env/index.js.map +1 -0
  101. package/dist/cmd/cloud/env/list.js +58 -0
  102. package/dist/cmd/cloud/env/list.js.map +1 -0
  103. package/dist/cmd/cloud/env/pull.js +81 -0
  104. package/dist/cmd/cloud/env/pull.js.map +1 -0
  105. package/dist/cmd/cloud/env/push.js +61 -0
  106. package/dist/cmd/cloud/env/push.js.map +1 -0
  107. package/dist/cmd/cloud/env/set.js +73 -0
  108. package/dist/cmd/cloud/env/set.js.map +1 -0
  109. package/dist/cmd/cloud/index.js +31 -0
  110. package/dist/cmd/cloud/index.js.map +1 -0
  111. package/dist/cmd/cloud/keyvalue/create-namespace.js +41 -0
  112. package/dist/cmd/cloud/keyvalue/create-namespace.js.map +1 -0
  113. package/dist/cmd/cloud/keyvalue/delete-namespace.js +64 -0
  114. package/dist/cmd/cloud/keyvalue/delete-namespace.js.map +1 -0
  115. package/dist/cmd/cloud/keyvalue/delete.js +47 -0
  116. package/dist/cmd/cloud/keyvalue/delete.js.map +1 -0
  117. package/dist/cmd/cloud/keyvalue/get.js +65 -0
  118. package/dist/cmd/cloud/keyvalue/get.js.map +1 -0
  119. package/dist/cmd/cloud/keyvalue/index.js +32 -0
  120. package/dist/cmd/cloud/keyvalue/index.js.map +1 -0
  121. package/dist/cmd/cloud/keyvalue/keys.js +50 -0
  122. package/dist/cmd/cloud/keyvalue/keys.js.map +1 -0
  123. package/dist/cmd/cloud/keyvalue/list-namespaces.js +37 -0
  124. package/dist/cmd/cloud/keyvalue/list-namespaces.js.map +1 -0
  125. package/dist/cmd/cloud/keyvalue/repl.js +277 -0
  126. package/dist/cmd/cloud/keyvalue/repl.js.map +1 -0
  127. package/dist/cmd/cloud/keyvalue/search.js +72 -0
  128. package/dist/cmd/cloud/keyvalue/search.js.map +1 -0
  129. package/dist/cmd/cloud/keyvalue/set.js +59 -0
  130. package/dist/cmd/cloud/keyvalue/set.js.map +1 -0
  131. package/dist/cmd/cloud/keyvalue/stats.js +82 -0
  132. package/dist/cmd/cloud/keyvalue/stats.js.map +1 -0
  133. package/dist/cmd/cloud/keyvalue/util.js +19 -0
  134. package/dist/cmd/cloud/keyvalue/util.js.map +1 -0
  135. package/dist/cmd/cloud/objectstore/delete-bucket.js +66 -0
  136. package/dist/cmd/cloud/objectstore/delete-bucket.js.map +1 -0
  137. package/dist/cmd/cloud/objectstore/delete.js +56 -0
  138. package/dist/cmd/cloud/objectstore/delete.js.map +1 -0
  139. package/dist/cmd/cloud/objectstore/get.js +64 -0
  140. package/dist/cmd/cloud/objectstore/get.js.map +1 -0
  141. package/dist/cmd/cloud/objectstore/index.js +28 -0
  142. package/dist/cmd/cloud/objectstore/index.js.map +1 -0
  143. package/dist/cmd/cloud/objectstore/list-buckets.js +37 -0
  144. package/dist/cmd/cloud/objectstore/list-buckets.js.map +1 -0
  145. package/dist/cmd/cloud/objectstore/list-keys.js +52 -0
  146. package/dist/cmd/cloud/objectstore/list-keys.js.map +1 -0
  147. package/dist/cmd/cloud/objectstore/put.js +57 -0
  148. package/dist/cmd/cloud/objectstore/put.js.map +1 -0
  149. package/dist/cmd/cloud/objectstore/repl.js +219 -0
  150. package/dist/cmd/cloud/objectstore/repl.js.map +1 -0
  151. package/dist/cmd/cloud/objectstore/url.js +55 -0
  152. package/dist/cmd/cloud/objectstore/url.js.map +1 -0
  153. package/dist/cmd/cloud/objectstore/util.js +18 -0
  154. package/dist/cmd/cloud/objectstore/util.js.map +1 -0
  155. package/dist/cmd/cloud/resource/add.js +70 -0
  156. package/dist/cmd/cloud/resource/add.js.map +1 -0
  157. package/dist/cmd/cloud/resource/delete.js +126 -0
  158. package/dist/cmd/cloud/resource/delete.js.map +1 -0
  159. package/dist/cmd/cloud/resource/index.js +12 -0
  160. package/dist/cmd/cloud/resource/index.js.map +1 -0
  161. package/dist/cmd/cloud/resource/list.js +89 -0
  162. package/dist/cmd/cloud/resource/list.js.map +1 -0
  163. package/dist/cmd/cloud/scp/download.js +72 -0
  164. package/dist/cmd/cloud/scp/download.js.map +1 -0
  165. package/dist/cmd/cloud/scp/index.js +10 -0
  166. package/dist/cmd/cloud/scp/index.js.map +1 -0
  167. package/dist/cmd/cloud/scp/upload.js +75 -0
  168. package/dist/cmd/cloud/scp/upload.js.map +1 -0
  169. package/dist/cmd/cloud/secret/delete.js +50 -0
  170. package/dist/cmd/cloud/secret/delete.js.map +1 -0
  171. package/dist/cmd/cloud/secret/get.js +69 -0
  172. package/dist/cmd/cloud/secret/get.js.map +1 -0
  173. package/dist/cmd/cloud/secret/import.js +88 -0
  174. package/dist/cmd/cloud/secret/import.js.map +1 -0
  175. package/dist/cmd/cloud/secret/index.js +24 -0
  176. package/dist/cmd/cloud/secret/index.js.map +1 -0
  177. package/dist/cmd/cloud/secret/list.js +58 -0
  178. package/dist/cmd/cloud/secret/list.js.map +1 -0
  179. package/dist/cmd/cloud/secret/pull.js +81 -0
  180. package/dist/cmd/cloud/secret/pull.js.map +1 -0
  181. package/dist/cmd/cloud/secret/push.js +61 -0
  182. package/dist/cmd/cloud/secret/push.js.map +1 -0
  183. package/dist/cmd/cloud/secret/set.js +57 -0
  184. package/dist/cmd/cloud/secret/set.js.map +1 -0
  185. package/dist/cmd/cloud/session/get.d.ts.map +1 -1
  186. package/dist/cmd/cloud/session/get.js +155 -0
  187. package/dist/cmd/cloud/session/get.js.map +1 -0
  188. package/dist/cmd/cloud/session/index.js +11 -0
  189. package/dist/cmd/cloud/session/index.js.map +1 -0
  190. package/dist/cmd/cloud/session/list.js +132 -0
  191. package/dist/cmd/cloud/session/list.js.map +1 -0
  192. package/dist/cmd/cloud/session/logs.js +56 -0
  193. package/dist/cmd/cloud/session/logs.js.map +1 -0
  194. package/dist/cmd/cloud/ssh.js +67 -0
  195. package/dist/cmd/cloud/ssh.js.map +1 -0
  196. package/dist/cmd/dev/agents.js +103 -0
  197. package/dist/cmd/dev/agents.js.map +1 -0
  198. package/dist/cmd/dev/api.js +26 -0
  199. package/dist/cmd/dev/api.js.map +1 -0
  200. package/dist/cmd/dev/download.js +77 -0
  201. package/dist/cmd/dev/download.js.map +1 -0
  202. package/dist/cmd/dev/index.js +745 -0
  203. package/dist/cmd/dev/index.js.map +1 -0
  204. package/dist/cmd/dev/sync.js +229 -0
  205. package/dist/cmd/dev/sync.js.map +1 -0
  206. package/dist/cmd/dev/templates.js +75 -0
  207. package/dist/cmd/dev/templates.js.map +1 -0
  208. package/dist/cmd/index.js +49 -0
  209. package/dist/cmd/index.js.map +1 -0
  210. package/dist/cmd/profile/create.js +89 -0
  211. package/dist/cmd/profile/create.js.map +1 -0
  212. package/dist/cmd/profile/delete.js +63 -0
  213. package/dist/cmd/profile/delete.js.map +1 -0
  214. package/dist/cmd/profile/index.js +14 -0
  215. package/dist/cmd/profile/index.js.map +1 -0
  216. package/dist/cmd/profile/list.js +28 -0
  217. package/dist/cmd/profile/list.js.map +1 -0
  218. package/dist/cmd/profile/show.js +68 -0
  219. package/dist/cmd/profile/show.js.map +1 -0
  220. package/dist/cmd/profile/use.js +37 -0
  221. package/dist/cmd/profile/use.js.map +1 -0
  222. package/dist/cmd/project/create.js +92 -0
  223. package/dist/cmd/project/create.js.map +1 -0
  224. package/dist/cmd/project/delete.js +117 -0
  225. package/dist/cmd/project/delete.js.map +1 -0
  226. package/dist/cmd/project/download.js +217 -0
  227. package/dist/cmd/project/download.js.map +1 -0
  228. package/dist/cmd/project/index.js +12 -0
  229. package/dist/cmd/project/index.js.map +1 -0
  230. package/dist/cmd/project/list.js +51 -0
  231. package/dist/cmd/project/list.js.map +1 -0
  232. package/dist/cmd/project/show.js +54 -0
  233. package/dist/cmd/project/show.js.map +1 -0
  234. package/dist/cmd/project/template-flow.js +315 -0
  235. package/dist/cmd/project/template-flow.js.map +1 -0
  236. package/dist/cmd/project/templates.js +31 -0
  237. package/dist/cmd/project/templates.js.map +1 -0
  238. package/dist/cmd/repl/index.js +444 -0
  239. package/dist/cmd/repl/index.js.map +1 -0
  240. package/dist/cmd/version/index.js +29 -0
  241. package/dist/cmd/version/index.js.map +1 -0
  242. package/dist/command-prefix.js +37 -0
  243. package/dist/command-prefix.js.map +1 -0
  244. package/dist/config.js +536 -0
  245. package/dist/config.js.map +1 -0
  246. package/dist/crypto/box.js +382 -0
  247. package/dist/crypto/box.js.map +1 -0
  248. package/dist/crypto/box.test.js +317 -0
  249. package/dist/crypto/box.test.js.map +1 -0
  250. package/dist/download.js +64 -0
  251. package/dist/download.js.map +1 -0
  252. package/dist/env-util.js +219 -0
  253. package/dist/env-util.js.map +1 -0
  254. package/dist/env-util.test.js +146 -0
  255. package/dist/env-util.test.js.map +1 -0
  256. package/dist/errors.js +177 -0
  257. package/dist/errors.js.map +1 -0
  258. package/dist/explain.js +90 -0
  259. package/dist/explain.js.map +1 -0
  260. package/dist/index.js +23 -0
  261. package/dist/index.js.map +1 -0
  262. package/dist/json.js +29 -0
  263. package/dist/json.js.map +1 -0
  264. package/dist/legacy-check.js +104 -0
  265. package/dist/legacy-check.js.map +1 -0
  266. package/dist/output.js +207 -0
  267. package/dist/output.js.map +1 -0
  268. package/dist/repl.js +1176 -0
  269. package/dist/repl.js.map +1 -0
  270. package/dist/runtime.js +19 -0
  271. package/dist/runtime.js.map +1 -0
  272. package/dist/schema-generator.js +289 -0
  273. package/dist/schema-generator.js.map +1 -0
  274. package/dist/schema-parser.js +145 -0
  275. package/dist/schema-parser.js.map +1 -0
  276. package/dist/sound.js +44 -0
  277. package/dist/sound.js.map +1 -0
  278. package/dist/steps.js +293 -0
  279. package/dist/steps.js.map +1 -0
  280. package/dist/terminal.js +130 -0
  281. package/dist/terminal.js.map +1 -0
  282. package/dist/tui.js +1124 -0
  283. package/dist/tui.js.map +1 -0
  284. package/dist/types.js +163 -0
  285. package/dist/types.js.map +1 -0
  286. package/dist/utils/detectSubagent.js +25 -0
  287. package/dist/utils/detectSubagent.js.map +1 -0
  288. package/dist/utils/format.js +21 -0
  289. package/dist/utils/format.js.map +1 -0
  290. package/dist/utils/zip.js +33 -0
  291. package/dist/utils/zip.js.map +1 -0
  292. package/dist/version.js +24 -0
  293. package/dist/version.js.map +1 -0
  294. package/package.json +6 -6
  295. package/src/banner.ts +1 -1
  296. package/src/cmd/build/index.ts +15 -21
  297. package/src/cmd/build/plugin.ts +2 -1
  298. package/src/cmd/cloud/session/get.ts +20 -14
  299. package/src/cmd/cloud/session/list.ts +1 -1
@@ -0,0 +1,300 @@
1
+ import { describe, test, expect, beforeEach, afterEach } from 'bun:test';
2
+ import { join } from 'node:path';
3
+ import { mkdtemp, rm } from 'node:fs/promises';
4
+ import { tmpdir } from 'node:os';
5
+ import { fixDuplicateExportsInDirectory } from './fix-duplicate-exports';
6
+ describe('fix-duplicate-exports', () => {
7
+ let tempDir;
8
+ beforeEach(async () => {
9
+ tempDir = await mkdtemp(join(tmpdir(), 'fix-duplicate-exports-test-'));
10
+ });
11
+ afterEach(async () => {
12
+ await rm(tempDir, { recursive: true, force: true });
13
+ });
14
+ describe('export alias syntax preservation', () => {
15
+ test('preserves "qux as baz" when removing duplicate foo', async () => {
16
+ // This is the critical bug case from the feedback
17
+ const code = `export { foo };
18
+ export { qux as baz, foo };`;
19
+ const expected = `export { foo };
20
+ export { qux as baz };`;
21
+ const testFile = join(tempDir, 'test.js');
22
+ await Bun.write(testFile, code);
23
+ await fixDuplicateExportsInDirectory(tempDir, false);
24
+ const result = await Bun.file(testFile).text();
25
+ expect(result).toBe(expected);
26
+ });
27
+ test('preserves "foo as bar" when it is not duplicate', async () => {
28
+ const code = `export { foo as bar };
29
+ export { baz };`;
30
+ const testFile = join(tempDir, 'test.js');
31
+ await Bun.write(testFile, code);
32
+ await fixDuplicateExportsInDirectory(tempDir, false);
33
+ const result = await Bun.file(testFile).text();
34
+ // Should not change - no duplicates
35
+ expect(result).toBe(code);
36
+ });
37
+ test('handles multiple aliases in same export statement', async () => {
38
+ const code = `export { foo as bar, baz as qux };
39
+ export { bar, simple };`;
40
+ // "bar" is duplicate (exported in both statements)
41
+ const expected = `export { foo as bar, baz as qux };
42
+ export { simple };`;
43
+ const testFile = join(tempDir, 'test.js');
44
+ await Bun.write(testFile, code);
45
+ await fixDuplicateExportsInDirectory(tempDir, false);
46
+ const result = await Bun.file(testFile).text();
47
+ expect(result).toBe(expected);
48
+ });
49
+ test('preserves alias when removing from middle of export list', async () => {
50
+ const code = `export { alpha, beta };
51
+ export { alpha, gamma as delta, epsilon };`;
52
+ const expected = `export { alpha, beta };
53
+ export { gamma as delta, epsilon };`;
54
+ const testFile = join(tempDir, 'test.js');
55
+ await Bun.write(testFile, code);
56
+ await fixDuplicateExportsInDirectory(tempDir, false);
57
+ const result = await Bun.file(testFile).text();
58
+ expect(result).toBe(expected);
59
+ });
60
+ test('handles exported name being the duplicate (alias target)', async () => {
61
+ const code = `export { foo as bar };
62
+ export { bar };`;
63
+ // "bar" from first export and "bar" from second export are DIFFERENT
64
+ // First one exports the identifier "foo" with the name "bar"
65
+ // Second one exports the identifier "bar" with the name "bar"
66
+ // These are duplicates from export name perspective
67
+ const expected = `export { foo as bar };
68
+ `;
69
+ const testFile = join(tempDir, 'test.js');
70
+ await Bun.write(testFile, code);
71
+ await fixDuplicateExportsInDirectory(tempDir, false);
72
+ const result = await Bun.file(testFile).text();
73
+ expect(result).toBe(expected);
74
+ });
75
+ });
76
+ describe('duplicate removal', () => {
77
+ test('removes entire duplicate export statement', async () => {
78
+ const code = `export { foo, bar };
79
+ export { foo, bar };`;
80
+ const expected = `export { foo, bar };
81
+ `;
82
+ const testFile = join(tempDir, 'test.js');
83
+ await Bun.write(testFile, code);
84
+ await fixDuplicateExportsInDirectory(tempDir, false);
85
+ const result = await Bun.file(testFile).text();
86
+ expect(result).toBe(expected);
87
+ });
88
+ test('removes only duplicate names from partial duplicate', async () => {
89
+ const code = `export { foo, bar };
90
+ export { foo, baz };`;
91
+ const expected = `export { foo, bar };
92
+ export { baz };`;
93
+ const testFile = join(tempDir, 'test.js');
94
+ await Bun.write(testFile, code);
95
+ await fixDuplicateExportsInDirectory(tempDir, false);
96
+ const result = await Bun.file(testFile).text();
97
+ expect(result).toBe(expected);
98
+ });
99
+ test('handles three-way duplicates', async () => {
100
+ const code = `export { foo };
101
+ export { bar };
102
+ export { foo };`;
103
+ const expected = `export { foo };
104
+ export { bar };
105
+ `;
106
+ const testFile = join(tempDir, 'test.js');
107
+ await Bun.write(testFile, code);
108
+ await fixDuplicateExportsInDirectory(tempDir, false);
109
+ const result = await Bun.file(testFile).text();
110
+ expect(result).toBe(expected);
111
+ });
112
+ test('preserves non-duplicate exports', async () => {
113
+ const code = `export { foo };
114
+ export { bar };
115
+ export { baz };`;
116
+ const testFile = join(tempDir, 'test.js');
117
+ await Bun.write(testFile, code);
118
+ await fixDuplicateExportsInDirectory(tempDir, false);
119
+ const result = await Bun.file(testFile).text();
120
+ // Should not change - no duplicates
121
+ expect(result).toBe(code);
122
+ });
123
+ });
124
+ describe('__INVALID__REF__ removal', () => {
125
+ test('removes __INVALID__REF__ at start with comma', async () => {
126
+ const code = `export { __INVALID__REF__, foo, bar };`;
127
+ const expected = `export { foo, bar };`;
128
+ const testFile = join(tempDir, 'test.js');
129
+ await Bun.write(testFile, code);
130
+ await fixDuplicateExportsInDirectory(tempDir, false);
131
+ const result = await Bun.file(testFile).text();
132
+ expect(result).toBe(expected);
133
+ });
134
+ test('removes __INVALID__REF__ at end with comma', async () => {
135
+ const code = `export { foo, bar, __INVALID__REF__ };`;
136
+ const expected = `export { foo, bar };`;
137
+ const testFile = join(tempDir, 'test.js');
138
+ await Bun.write(testFile, code);
139
+ await fixDuplicateExportsInDirectory(tempDir, false);
140
+ const result = await Bun.file(testFile).text();
141
+ expect(result).toBe(expected);
142
+ });
143
+ test('removes __INVALID__REF__ in middle', async () => {
144
+ const code = `export { foo, __INVALID__REF__, bar };`;
145
+ const expected = `export { foo, bar };`;
146
+ const testFile = join(tempDir, 'test.js');
147
+ await Bun.write(testFile, code);
148
+ await fixDuplicateExportsInDirectory(tempDir, false);
149
+ const result = await Bun.file(testFile).text();
150
+ expect(result).toBe(expected);
151
+ });
152
+ test('removes __INVALID__REF__ from imports', async () => {
153
+ const code = `import { __INVALID__REF__, foo } from 'bar';
154
+ export { foo };`;
155
+ const expected = `import { foo } from 'bar';
156
+ export { foo };`;
157
+ const testFile = join(tempDir, 'test.js');
158
+ await Bun.write(testFile, code);
159
+ await fixDuplicateExportsInDirectory(tempDir, false);
160
+ const result = await Bun.file(testFile).text();
161
+ expect(result).toBe(expected);
162
+ });
163
+ });
164
+ describe('complex scenarios', () => {
165
+ test('handles combination of aliases and duplicates', async () => {
166
+ const code = `export { foo as exportedFoo, bar };
167
+ export { baz as exportedBaz };
168
+ export { bar, qux };`;
169
+ const expected = `export { foo as exportedFoo, bar };
170
+ export { baz as exportedBaz };
171
+ export { qux };`;
172
+ const testFile = join(tempDir, 'test.js');
173
+ await Bun.write(testFile, code);
174
+ await fixDuplicateExportsInDirectory(tempDir, false);
175
+ const result = await Bun.file(testFile).text();
176
+ expect(result).toBe(expected);
177
+ });
178
+ test('handles whitespace variations', async () => {
179
+ const code = `export { foo };
180
+ export { bar as baz , foo };`;
181
+ const expected = `export { foo };
182
+ export { bar as baz };`;
183
+ const testFile = join(tempDir, 'test.js');
184
+ await Bun.write(testFile, code);
185
+ await fixDuplicateExportsInDirectory(tempDir, false);
186
+ const result = await Bun.file(testFile).text();
187
+ expect(result).toBe(expected);
188
+ });
189
+ test('does not modify non-matching export patterns', async () => {
190
+ const code = `export default function foo() {}
191
+ export const bar = 1;
192
+ export { baz };
193
+ export * from './other';`;
194
+ const testFile = join(tempDir, 'test.js');
195
+ await Bun.write(testFile, code);
196
+ await fixDuplicateExportsInDirectory(tempDir, false);
197
+ const result = await Bun.file(testFile).text();
198
+ // Should only process export { ... } statements
199
+ expect(result).toBe(code);
200
+ });
201
+ test('handles multiple files in directory', async () => {
202
+ const file1 = join(tempDir, 'file1.js');
203
+ const file2 = join(tempDir, 'file2.js');
204
+ await Bun.write(file1, `export { foo };\nexport { foo };`);
205
+ await Bun.write(file2, `export { qux as baz };\nexport { baz };`);
206
+ await fixDuplicateExportsInDirectory(tempDir, false);
207
+ const result1 = await Bun.file(file1).text();
208
+ const result2 = await Bun.file(file2).text();
209
+ expect(result1).toBe(`export { foo };
210
+ `);
211
+ expect(result2).toBe(`export { qux as baz };
212
+ `);
213
+ });
214
+ });
215
+ describe('patch order edge cases', () => {
216
+ test('handles partial duplicate followed by full duplicate', async () => {
217
+ // This tests the scenario where modification shifts indices for subsequent removal
218
+ const code = `export { foo };
219
+ export { foo, bar };
220
+ export { foo };`;
221
+ // Expected: first foo kept, second becomes just bar, third removed
222
+ const expected = `export { foo };
223
+ export { bar };
224
+ `;
225
+ const testFile = join(tempDir, 'test.js');
226
+ await Bun.write(testFile, code);
227
+ await fixDuplicateExportsInDirectory(tempDir, false);
228
+ const result = await Bun.file(testFile).text();
229
+ expect(result).toBe(expected);
230
+ });
231
+ test('handles multiple partial duplicates with full duplicate at end', async () => {
232
+ const code = `export { foo };
233
+ export { foo, bar };
234
+ export { foo, baz };
235
+ export { foo };`;
236
+ // First foo kept, second becomes bar only, third becomes baz only, fourth removed
237
+ const expected = `export { foo };
238
+ export { bar };
239
+ export { baz };
240
+ `;
241
+ const testFile = join(tempDir, 'test.js');
242
+ await Bun.write(testFile, code);
243
+ await fixDuplicateExportsInDirectory(tempDir, false);
244
+ const result = await Bun.file(testFile).text();
245
+ expect(result).toBe(expected);
246
+ });
247
+ test('handles full duplicate followed by partial duplicate', async () => {
248
+ const code = `export { foo, bar };
249
+ export { foo, bar };
250
+ export { bar, baz };`;
251
+ // First kept, second removed (full dup - leaves blank line), third becomes just baz
252
+ const expected = `export { foo, bar };
253
+
254
+ export { baz };`;
255
+ const testFile = join(tempDir, 'test.js');
256
+ await Bun.write(testFile, code);
257
+ await fixDuplicateExportsInDirectory(tempDir, false);
258
+ const result = await Bun.file(testFile).text();
259
+ expect(result).toBe(expected);
260
+ });
261
+ });
262
+ describe('edge cases', () => {
263
+ test('handles empty file', async () => {
264
+ const code = '';
265
+ const testFile = join(tempDir, 'test.js');
266
+ await Bun.write(testFile, code);
267
+ await fixDuplicateExportsInDirectory(tempDir, false);
268
+ const result = await Bun.file(testFile).text();
269
+ expect(result).toBe(code);
270
+ });
271
+ test('handles file with no exports', async () => {
272
+ const code = `const foo = 1;\nconst bar = 2;`;
273
+ const testFile = join(tempDir, 'test.js');
274
+ await Bun.write(testFile, code);
275
+ await fixDuplicateExportsInDirectory(tempDir, false);
276
+ const result = await Bun.file(testFile).text();
277
+ expect(result).toBe(code);
278
+ });
279
+ test('handles single export with alias', async () => {
280
+ const code = `export { foo as bar };`;
281
+ const testFile = join(tempDir, 'test.js');
282
+ await Bun.write(testFile, code);
283
+ await fixDuplicateExportsInDirectory(tempDir, false);
284
+ const result = await Bun.file(testFile).text();
285
+ expect(result).toBe(code);
286
+ });
287
+ test('handles export with semicolon vs without', async () => {
288
+ const code = `export { foo }
289
+ export { foo };`;
290
+ const expected = `export { foo }
291
+ `;
292
+ const testFile = join(tempDir, 'test.js');
293
+ await Bun.write(testFile, code);
294
+ await fixDuplicateExportsInDirectory(tempDir, false);
295
+ const result = await Bun.file(testFile).text();
296
+ expect(result).toBe(expected);
297
+ });
298
+ });
299
+ });
300
+ //# sourceMappingURL=fix-duplicate-exports.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fix-duplicate-exports.test.js","sourceRoot":"","sources":["../../../src/cmd/build/fix-duplicate-exports.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cmd/build/index.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,OAAO,mCA0ElB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cmd/build/index.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,OAAO,mCAoElB,CAAC"}
@@ -0,0 +1,79 @@
1
+ import { createCommand } from '../../types';
2
+ import { z } from 'zod';
3
+ import { bundle } from './bundler';
4
+ import * as tui from '../../tui';
5
+ import { getCommand } from '../../command-prefix';
6
+ const BuildResponseSchema = z.object({
7
+ success: z.boolean().describe('Whether the build succeeded'),
8
+ bundlePath: z.string().describe('Path to the build directory'),
9
+ projectName: z.string().describe('Project name'),
10
+ dev: z.boolean().describe('Whether dev mode was enabled'),
11
+ size: z.number().optional().describe('Build size in bytes'),
12
+ });
13
+ export const command = createCommand({
14
+ name: 'build',
15
+ description: 'Build Agentuity application for deployment',
16
+ tags: ['read-only', 'slow', 'requires-project'],
17
+ aliases: ['bundle'],
18
+ optional: { project: true },
19
+ idempotent: false,
20
+ examples: [getCommand('build'), getCommand('build --dev'), getCommand('bundle')],
21
+ schema: {
22
+ options: z.object({
23
+ dev: z.boolean().optional().describe('Enable development mode'),
24
+ }),
25
+ response: BuildResponseSchema,
26
+ },
27
+ async handler(ctx) {
28
+ const { opts, projectDir, project } = ctx;
29
+ try {
30
+ tui.info(`Bundling project at: ${projectDir}`);
31
+ // Generate agent registry FIRST (so types exist for typecheck)
32
+ tui.info('Generating agent registry...');
33
+ await bundle({
34
+ rootDir: projectDir,
35
+ dev: opts.dev || false,
36
+ project,
37
+ });
38
+ // Run TypeScript type checking after registry generation (skip in dev mode)
39
+ if (!opts.dev) {
40
+ try {
41
+ tui.info('Running type check...');
42
+ const { resolve } = await import('node:path');
43
+ const absoluteProjectDir = resolve(projectDir);
44
+ const result = await Bun.$ `bunx tsc --noEmit --skipLibCheck`.cwd(absoluteProjectDir).nothrow();
45
+ if (result.exitCode === 0) {
46
+ tui.success('Type check passed');
47
+ }
48
+ else {
49
+ tui.error('Type check failed:\n');
50
+ console.error(result.stderr.toString());
51
+ tui.fatal('Fix type errors before building');
52
+ }
53
+ }
54
+ catch (error) {
55
+ // If tsc fails to run, show error and fail
56
+ const errorMsg = error instanceof Error ? error.message : String(error);
57
+ tui.error(`Type check failed to run: ${errorMsg}`);
58
+ tui.fatal('Unable to run TypeScript type checking. Ensure TypeScript is installed.');
59
+ }
60
+ }
61
+ tui.success('Bundle complete');
62
+ return {
63
+ success: true,
64
+ bundlePath: `${projectDir}/.agentuity`,
65
+ projectName: project?.projectId || 'unknown',
66
+ dev: opts.dev || false,
67
+ };
68
+ }
69
+ catch (error) {
70
+ if (error instanceof Error) {
71
+ tui.fatal(`Bundle failed: ${error.message}`);
72
+ }
73
+ else {
74
+ tui.fatal('Bundle failed');
75
+ }
76
+ }
77
+ },
78
+ });
79
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cmd/build/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ export function generateEnvWarning(envkey) {
2
+ return `if (process.env.AGENTUITY_ENVIRONMENT === 'development' || process.env.NODE_ENV !== 'production') {
3
+ console.error('The required environment variable ${envkey} must be set in your project .env file or in your local system environment.');
4
+ } else {
5
+ console.error('The required environment variable ${envkey} is required for this project. Use "agentuity env set ${envkey}" to set it and redeploy your project.');
6
+ }
7
+ `;
8
+ }
9
+ export function generateJSArgsPatch(index, inject) {
10
+ return `const _newargs = [...(_args ?? [])];
11
+ _newargs[${index}] = {..._newargs[${index}], ${inject}};
12
+ _args = _newargs;`;
13
+ }
14
+ export function generateEnvGuard(name, inject, alt) {
15
+ return `if (!process.env.${name} || process.env.${name} === process.env.AGENTUITY_SDK_KEY) {
16
+ ${inject}
17
+ } else {
18
+ ${alt ?? ''}}`;
19
+ }
20
+ export function generateGatewayEnvGuard(apikey, apikeyval, apibase, provider) {
21
+ return `{
22
+ const apikey = process.env.AGENTUITY_SDK_KEY;
23
+ const url = process.env.AGENTUITY_AIGATEWAY_URL || process.env.AGENTUITY_TRANSPORT_URL || (apikey ? 'https://agentuity.ai' : '');
24
+ if (url && apikey) {
25
+ process.env.${apikey} = ${apikeyval};
26
+ process.env.${apibase} = url + '/gateway/${provider}';
27
+ console.debug('Enabled Agentuity AI Gateway for ${provider}');
28
+ } else {
29
+ ${generateEnvWarning(apikey)}
30
+ }
31
+ }
32
+ `;
33
+ }
34
+ export function searchBackwards(contents, offset, val) {
35
+ for (let i = offset; i >= 0; i--) {
36
+ if (contents.charAt(i) == val) {
37
+ return i;
38
+ }
39
+ }
40
+ return -1;
41
+ }
42
+ //# sourceMappingURL=_util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_util.js","sourceRoot":"","sources":["../../../../src/cmd/build/patch/_util.ts"],"names":[],"mappings":"AAiBA,MAAM,UAAU,kBAAkB,CAAC,MAAc;IAChD,OAAO;yDACiD,MAAM;;yDAEN,MAAM,yDAAyD,MAAM;;CAE7H,CAAC;AACF,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAa,EAAE,MAAc;IAChE,OAAO;WACG,KAAK,oBAAoB,KAAK,MAAM,MAAM;kBACnC,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,MAAc,EAAE,GAAY;IAC1E,OAAO,oBAAoB,IAAI,mBAAmB,IAAI;EACrD,MAAM;;GAEL,GAAG,IAAI,EAAE,GAAG,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,uBAAuB,CACtC,MAAc,EACd,SAAiB,EACjB,OAAe,EACf,QAAgB;IAEhB,OAAO;;;;sBAIc,MAAM,MAAM,SAAS;sBACrB,OAAO,sBAAsB,QAAQ;0DACD,QAAQ;;OAE3D,kBAAkB,CAAC,MAAM,CAAC;;;CAGhC,CAAC;AACF,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,QAAgB,EAAE,MAAc,EAAE,GAAW;IAC5E,KAAK,IAAI,CAAC,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC;YAC/B,OAAO,CAAC,CAAC;QACV,CAAC;IACF,CAAC;IACD,OAAO,CAAC,CAAC,CAAC;AACX,CAAC"}
@@ -0,0 +1,65 @@
1
+ import { generateEnvWarning, generateEnvGuard, generateJSArgsPatch, } from './_util';
2
+ function generateAISDKPatch(patches) {
3
+ const vercelTelemetryPatch = generateJSArgsPatch(0, ` ` + '');
4
+ const enableTelemetryPatch = `
5
+ // Enable experimental telemetry to capture response text
6
+ const opts = {...(_args[0] ?? {}) };
7
+ opts.experimental_telemetry = { isEnabled: true };
8
+ _args[0] = opts;
9
+ `;
10
+ const comboPatch = vercelTelemetryPatch + enableTelemetryPatch;
11
+ const functionPatch = { before: comboPatch };
12
+ const patch = {
13
+ module: 'ai',
14
+ functions: {
15
+ generateText: functionPatch,
16
+ streamText: functionPatch,
17
+ generateObject: functionPatch,
18
+ streamObject: functionPatch,
19
+ embed: functionPatch,
20
+ embedMany: functionPatch,
21
+ },
22
+ };
23
+ patches.set('@vercel/ai', patch);
24
+ }
25
+ export function generatePatches() {
26
+ const patches = new Map();
27
+ generateAISDKPatch(patches);
28
+ createVercelAIProviderPatch(patches, '@ai-sdk/openai', 'createOpenAI', 'OPENAI_API_KEY', 'openai');
29
+ createVercelAIProviderPatch(patches, '@ai-sdk/anthropic', 'createAnthropic', 'ANTHROPIC_API_KEY', 'anthropic');
30
+ createVercelAIProviderPatch(patches, '@ai-sdk/cohere', 'createCohere', 'COHERE_API_KEY', 'cohere');
31
+ createVercelAIProviderPatch(patches, '@ai-sdk/deepseek', 'createDeepSeek', 'DEEPSEEK_API_KEY', 'deepseek');
32
+ createVercelAIProviderPatch(patches, '@ai-sdk/google', 'createGoogleGenerativeAI', 'GOOGLE_GENERATIVE_AI_API_KEY', 'google-ai-studio');
33
+ createVercelAIProviderPatch(patches, '@ai-sdk/xai', 'createXai', 'XAI_API_KEY', 'grok');
34
+ createVercelAIProviderPatch(patches, '@ai-sdk/groq', 'createGroq', 'GROQ_API_KEY', 'groq');
35
+ createVercelAIProviderPatch(patches, '@ai-sdk/mistral', 'createMistral', 'MISTRAL_API_KEY', 'mistral');
36
+ createVercelAIProviderPatch(patches, '@ai-sdk/perplexity', 'createPerplexity', 'PERPLEXITY_API_KEY', 'perplexity-ai');
37
+ return patches;
38
+ }
39
+ function generateVercelAIProvider(name, envkey) {
40
+ return (generateJSArgsPatch(0, '') +
41
+ `const opts = {...(_args[0] ?? {}) };
42
+ if (!opts.baseURL) {
43
+ const apikey = process.env.AGENTUITY_SDK_KEY;
44
+ const url = process.env.AGENTUITY_TRANSPORT_URL;
45
+ if (url && apikey) {
46
+ opts.apiKey = apikey;
47
+ opts.baseURL = url + '/gateway/${name}';
48
+ _args[0] = opts;
49
+ } else {
50
+ ${generateEnvWarning(envkey)}
51
+ }
52
+ }`);
53
+ }
54
+ function createVercelAIProviderPatch(patches, module, createFn, envkey, provider) {
55
+ const patch = {
56
+ module: module,
57
+ functions: {
58
+ [createFn]: {
59
+ before: generateEnvGuard(envkey, generateVercelAIProvider(provider, envkey), `if (!process.env.AGENTUITY_SDK_KEY) console.log("User provided ${provider} api key set. Use the Agentuity AI Gateway more features.");`),
60
+ },
61
+ },
62
+ };
63
+ patches.set(module, patch);
64
+ }
65
+ //# sourceMappingURL=aisdk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aisdk.js","sourceRoot":"","sources":["../../../../src/cmd/build/patch/aisdk.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,GACnB,MAAM,SAAS,CAAC;AAEjB,SAAS,kBAAkB,CAAC,OAAiC;IAC5D,MAAM,oBAAoB,GAAG,mBAAmB,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC;IAE9D,MAAM,oBAAoB,GAAG;;;;;GAK3B,CAAC;IAEH,MAAM,UAAU,GAAG,oBAAoB,GAAG,oBAAoB,CAAC;IAC/D,MAAM,aAAa,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IAE7C,MAAM,KAAK,GAAgB;QAC1B,MAAM,EAAE,IAAI;QACZ,SAAS,EAAE;YACV,YAAY,EAAE,aAAa;YAC3B,UAAU,EAAE,aAAa;YACzB,cAAc,EAAE,aAAa;YAC7B,YAAY,EAAE,aAAa;YAC3B,KAAK,EAAE,aAAa;YACpB,SAAS,EAAE,aAAa;SACxB;KACD,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,eAAe;IAC9B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC/C,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC5B,2BAA2B,CAC1B,OAAO,EACP,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,QAAQ,CACR,CAAC;IACF,2BAA2B,CAC1B,OAAO,EACP,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,WAAW,CACX,CAAC;IACF,2BAA2B,CAC1B,OAAO,EACP,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,QAAQ,CACR,CAAC;IACF,2BAA2B,CAC1B,OAAO,EACP,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,UAAU,CACV,CAAC;IACF,2BAA2B,CAC1B,OAAO,EACP,gBAAgB,EAChB,0BAA0B,EAC1B,8BAA8B,EAC9B,kBAAkB,CAClB,CAAC;IACF,2BAA2B,CAAC,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;IACxF,2BAA2B,CAAC,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;IAC3F,2BAA2B,CAC1B,OAAO,EACP,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,SAAS,CACT,CAAC;IACF,2BAA2B,CAC1B,OAAO,EACP,oBAAoB,EACpB,kBAAkB,EAClB,oBAAoB,EACpB,eAAe,CACf,CAAC;IACF,OAAO,OAAO,CAAC;AAChB,CAAC;AAED,SAAS,wBAAwB,CAAC,IAAY,EAAE,MAAc;IAC7D,OAAO,CACN,mBAAmB,CAAC,CAAC,EAAE,EAAE,CAAC;QAC1B;;;;;;mCAMiC,IAAI;;;KAGlC,kBAAkB,CAAC,MAAM,CAAC;;EAE7B,CACA,CAAC;AACH,CAAC;AAED,SAAS,2BAA2B,CACnC,OAAiC,EACjC,MAAc,EACd,QAAgB,EAChB,MAAc,EACd,QAAgB;IAEhB,MAAM,KAAK,GAAG;QACb,MAAM,EAAE,MAAM;QACd,SAAS,EAAE;YACV,CAAC,QAAQ,CAAC,EAAE;gBACX,MAAM,EAAE,gBAAgB,CACvB,MAAM,EACN,wBAAwB,CAAC,QAAQ,EAAE,MAAM,CAAC,EAC1C,kEAAkE,QAAQ,8DAA8D,CACxI;aACD;SACD;KACD,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAC5B,CAAC"}
@@ -0,0 +1,97 @@
1
+ import { generatePatches as aisdkGeneratePatches } from './aisdk';
2
+ import { generatePatches as llmGeneratePatches } from './llm';
3
+ import { searchBackwards } from './_util';
4
+ export function generatePatches() {
5
+ const patches = new Map();
6
+ for (const [name, patch] of aisdkGeneratePatches()) {
7
+ patches.set(name, patch);
8
+ }
9
+ for (const [name, patch] of llmGeneratePatches()) {
10
+ patches.set(name, patch);
11
+ }
12
+ return patches;
13
+ }
14
+ export async function applyPatch(filename, patch) {
15
+ let contents = await Bun.file(filename).text();
16
+ const isJS = filename.endsWith('.js') || filename.endsWith('.mjs');
17
+ let suffix = '';
18
+ if (patch.functions) {
19
+ for (const fn of Object.keys(patch.functions)) {
20
+ const mod = patch.functions[fn];
21
+ let fnname = `function ${fn}`;
22
+ let index = contents.indexOf(fnname);
23
+ let isConstVariable = false;
24
+ if (index === -1) {
25
+ fnname = 'const ' + fn + ' = ';
26
+ index = contents.indexOf(fnname);
27
+ isConstVariable = true;
28
+ if (index === -1) {
29
+ continue;
30
+ }
31
+ }
32
+ const eol = searchBackwards(contents, index, '\n');
33
+ if (eol < 0) {
34
+ continue;
35
+ }
36
+ const prefix = contents.substring(eol + 1, index).trim();
37
+ const isAsync = prefix.includes('async');
38
+ const isExport = prefix.includes('export');
39
+ const newname = '__agentuity_' + fn;
40
+ let newfnname;
41
+ if (isConstVariable) {
42
+ newfnname = 'const ' + newname + ' = ';
43
+ }
44
+ else {
45
+ newfnname = 'function ' + newname;
46
+ }
47
+ let fnprefix = '';
48
+ if (isAsync) {
49
+ fnprefix = 'async ';
50
+ }
51
+ if (isExport) {
52
+ fnprefix += 'export ' + fnprefix;
53
+ }
54
+ contents = contents.replace(fnname, newfnname);
55
+ if (isJS) {
56
+ suffix += fnprefix + 'function ' + fn + '() {\n';
57
+ suffix += 'let args = arguments;\n';
58
+ }
59
+ else {
60
+ suffix += fnprefix + fnname + '(...args) {\n';
61
+ }
62
+ suffix += '\tlet _args = args;\n';
63
+ if (mod.before) {
64
+ suffix += mod.before;
65
+ suffix += '\n';
66
+ }
67
+ if (isJS) {
68
+ // For JS: use .apply to preserve 'this' context
69
+ suffix += '\tlet result = ' + newname + '.apply(this, _args);\n';
70
+ }
71
+ else {
72
+ // For TS: use spread operator
73
+ suffix += '\tlet result = ' + newname + '(..._args);\n';
74
+ }
75
+ if (isAsync) {
76
+ suffix += '\tif (result instanceof Promise) {\n';
77
+ suffix += '\t\tresult = await result;\n';
78
+ suffix += '\t}\n';
79
+ }
80
+ if (mod.after) {
81
+ suffix += mod.after;
82
+ suffix += '\n';
83
+ }
84
+ suffix += '\treturn result;\n';
85
+ suffix += '}\n';
86
+ contents = contents + '\n' + suffix;
87
+ }
88
+ }
89
+ if (patch.body?.before) {
90
+ contents = patch.body.before + '\n' + contents;
91
+ }
92
+ if (patch.body?.after) {
93
+ contents = contents + '\n' + patch.body.after;
94
+ }
95
+ return [contents, isJS ? 'js' : 'ts'];
96
+ }
97
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/cmd/build/patch/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,IAAI,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,EAAE,eAAe,IAAI,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAC9D,OAAO,EAAoB,eAAe,EAAE,MAAM,SAAS,CAAC;AAE5D,MAAM,UAAU,eAAe;IAC9B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC/C,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,oBAAoB,EAAE,EAAE,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC1B,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,kBAAkB,EAAE,EAAE,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,OAAO,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAC/B,QAAgB,EAChB,KAAkB;IAElB,IAAI,QAAQ,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/C,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACnE,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QACrB,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;YAC/C,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YAChC,IAAI,MAAM,GAAG,YAAY,EAAE,EAAE,CAAC;YAC9B,IAAI,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACrC,IAAI,eAAe,GAAG,KAAK,CAAC;YAC5B,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;gBAClB,MAAM,GAAG,QAAQ,GAAG,EAAE,GAAG,KAAK,CAAC;gBAC/B,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBACjC,eAAe,GAAG,IAAI,CAAC;gBACvB,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;oBAClB,SAAS;gBACV,CAAC;YACF,CAAC;YACD,MAAM,GAAG,GAAG,eAAe,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YACnD,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;gBACb,SAAS;YACV,CAAC;YACD,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;YACzD,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACzC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAC3C,MAAM,OAAO,GAAG,cAAc,GAAG,EAAE,CAAC;YACpC,IAAI,SAAiB,CAAC;YACtB,IAAI,eAAe,EAAE,CAAC;gBACrB,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,KAAK,CAAC;YACxC,CAAC;iBAAM,CAAC;gBACP,SAAS,GAAG,WAAW,GAAG,OAAO,CAAC;YACnC,CAAC;YACD,IAAI,QAAQ,GAAG,EAAE,CAAC;YAClB,IAAI,OAAO,EAAE,CAAC;gBACb,QAAQ,GAAG,QAAQ,CAAC;YACrB,CAAC;YACD,IAAI,QAAQ,EAAE,CAAC;gBACd,QAAQ,IAAI,SAAS,GAAG,QAAQ,CAAC;YAClC,CAAC;YACD,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YAC/C,IAAI,IAAI,EAAE,CAAC;gBACV,MAAM,IAAI,QAAQ,GAAG,WAAW,GAAG,EAAE,GAAG,QAAQ,CAAC;gBACjD,MAAM,IAAI,yBAAyB,CAAC;YACrC,CAAC;iBAAM,CAAC;gBACP,MAAM,IAAI,QAAQ,GAAG,MAAM,GAAG,eAAe,CAAC;YAC/C,CAAC;YACD,MAAM,IAAI,uBAAuB,CAAC;YAElC,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;gBAChB,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC;gBACrB,MAAM,IAAI,IAAI,CAAC;YAChB,CAAC;YAED,IAAI,IAAI,EAAE,CAAC;gBACV,gDAAgD;gBAChD,MAAM,IAAI,iBAAiB,GAAG,OAAO,GAAG,wBAAwB,CAAC;YAClE,CAAC;iBAAM,CAAC;gBACP,8BAA8B;gBAC9B,MAAM,IAAI,iBAAiB,GAAG,OAAO,GAAG,eAAe,CAAC;YACzD,CAAC;YAED,IAAI,OAAO,EAAE,CAAC;gBACb,MAAM,IAAI,sCAAsC,CAAC;gBACjD,MAAM,IAAI,8BAA8B,CAAC;gBACzC,MAAM,IAAI,OAAO,CAAC;YACnB,CAAC;YACD,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;gBACf,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC;gBACpB,MAAM,IAAI,IAAI,CAAC;YAChB,CAAC;YACD,MAAM,IAAI,oBAAoB,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC;YAChB,QAAQ,GAAG,QAAQ,GAAG,IAAI,GAAG,MAAM,CAAC;QACrC,CAAC;IACF,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;QACxB,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,QAAQ,CAAC;IAChD,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;QACvB,QAAQ,GAAG,QAAQ,GAAG,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;IAC/C,CAAC;IACD,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC"}