alchemy 0.1.8 → 0.1.10

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 (242) hide show
  1. package/lib/$.d.ts +7 -0
  2. package/lib/$.d.ts.map +1 -0
  3. package/lib/$.js +31 -0
  4. package/lib/$.js.map +1 -0
  5. package/lib/agent/ai.d.ts +40 -0
  6. package/lib/agent/ai.d.ts.map +1 -0
  7. package/lib/agent/ai.js +132 -0
  8. package/lib/agent/ai.js.map +1 -0
  9. package/lib/agent/anthropic.d.ts +9 -0
  10. package/lib/agent/anthropic.d.ts.map +1 -0
  11. package/lib/agent/anthropic.js +25 -0
  12. package/lib/agent/anthropic.js.map +1 -0
  13. package/lib/agent/dependencies.d.ts +4 -0
  14. package/lib/agent/dependencies.d.ts.map +1 -0
  15. package/lib/agent/dependencies.js +48 -0
  16. package/lib/agent/dependencies.js.map +1 -0
  17. package/lib/agent/file-context.d.ts +13 -0
  18. package/lib/agent/file-context.d.ts.map +1 -0
  19. package/lib/agent/file-context.js +6 -0
  20. package/lib/agent/file-context.js.map +1 -0
  21. package/lib/agent/index.d.ts +10 -0
  22. package/lib/agent/index.d.ts.map +1 -0
  23. package/lib/agent/index.js +10 -0
  24. package/lib/agent/index.js.map +1 -0
  25. package/lib/agent/model.d.ts +8 -0
  26. package/lib/agent/model.d.ts.map +1 -0
  27. package/lib/agent/model.js +29 -0
  28. package/lib/agent/model.js.map +1 -0
  29. package/lib/agent/module.d.ts +81 -0
  30. package/lib/agent/module.d.ts.map +1 -0
  31. package/lib/agent/module.js +309 -0
  32. package/lib/agent/module.js.map +1 -0
  33. package/lib/agent/openai.d.ts +6 -0
  34. package/lib/agent/openai.d.ts.map +1 -0
  35. package/lib/agent/openai.js +41 -0
  36. package/lib/agent/openai.js.map +1 -0
  37. package/lib/agent/program.d.ts +12 -0
  38. package/lib/agent/program.d.ts.map +1 -0
  39. package/lib/agent/program.js +21 -0
  40. package/lib/agent/program.js.map +1 -0
  41. package/lib/agent/prompts.d.ts +4 -0
  42. package/lib/agent/prompts.d.ts.map +1 -0
  43. package/lib/agent/prompts.js +11 -0
  44. package/lib/agent/prompts.js.map +1 -0
  45. package/lib/agent/scrape.d.ts +71 -0
  46. package/lib/agent/scrape.d.ts.map +1 -0
  47. package/lib/agent/scrape.js +45 -0
  48. package/lib/agent/scrape.js.map +1 -0
  49. package/lib/alchemize.d.ts +43 -0
  50. package/lib/alchemize.d.ts.map +1 -0
  51. package/lib/alchemize.js +105 -0
  52. package/lib/alchemize.js.map +1 -0
  53. package/lib/apply.d.ts +23 -0
  54. package/lib/apply.d.ts.map +1 -0
  55. package/lib/apply.js +84 -0
  56. package/lib/apply.js.map +1 -0
  57. package/lib/aws/auto/docs.d.ts +11 -0
  58. package/lib/aws/auto/docs.d.ts.map +1 -0
  59. package/lib/aws/auto/docs.js +56 -0
  60. package/lib/aws/auto/docs.js.map +1 -0
  61. package/lib/aws/auto/index.d.ts +5 -0
  62. package/lib/aws/auto/index.d.ts.map +1 -0
  63. package/lib/aws/auto/index.js +5 -0
  64. package/lib/aws/auto/index.js.map +1 -0
  65. package/lib/aws/auto/resource.d.ts +24 -0
  66. package/lib/aws/auto/resource.d.ts.map +1 -0
  67. package/lib/aws/auto/resource.js +194 -0
  68. package/lib/aws/auto/resource.js.map +1 -0
  69. package/lib/aws/auto/service.d.ts +10 -0
  70. package/lib/aws/auto/service.d.ts.map +1 -0
  71. package/lib/aws/auto/service.js +34 -0
  72. package/lib/aws/auto/service.js.map +1 -0
  73. package/lib/aws/auto/spec.d.ts +83 -0
  74. package/lib/aws/auto/spec.d.ts.map +1 -0
  75. package/lib/aws/auto/spec.js +58 -0
  76. package/lib/aws/auto/spec.js.map +1 -0
  77. package/lib/aws/bucket.d.ts +21 -0
  78. package/lib/aws/bucket.d.ts.map +1 -0
  79. package/lib/aws/bucket.js +114 -0
  80. package/lib/aws/bucket.js.map +1 -0
  81. package/lib/aws/function.d.ts +53 -0
  82. package/lib/aws/function.d.ts.map +1 -0
  83. package/lib/aws/function.js +195 -0
  84. package/lib/aws/function.js.map +1 -0
  85. package/lib/aws/index.d.ts +7 -0
  86. package/lib/aws/index.d.ts.map +1 -0
  87. package/lib/aws/index.js +7 -0
  88. package/lib/aws/index.js.map +1 -0
  89. package/lib/aws/policy.d.ts +46 -0
  90. package/lib/aws/policy.d.ts.map +1 -0
  91. package/lib/aws/policy.js +139 -0
  92. package/lib/aws/policy.js.map +1 -0
  93. package/lib/aws/queue.d.ts +38 -0
  94. package/lib/aws/queue.d.ts.map +1 -0
  95. package/lib/aws/queue.js +162 -0
  96. package/lib/aws/queue.js.map +1 -0
  97. package/lib/aws/role.d.ts +27 -0
  98. package/lib/aws/role.d.ts.map +1 -0
  99. package/lib/aws/role.js +149 -0
  100. package/lib/aws/role.js.map +1 -0
  101. package/lib/aws/table.d.ts +26 -0
  102. package/lib/aws/table.d.ts.map +1 -0
  103. package/lib/aws/table.js +120 -0
  104. package/lib/aws/table.js.map +1 -0
  105. package/lib/destroy.d.ts +19 -0
  106. package/lib/destroy.d.ts.map +1 -0
  107. package/lib/destroy.js +47 -0
  108. package/lib/destroy.js.map +1 -0
  109. package/lib/error.d.ts +2 -0
  110. package/lib/error.d.ts.map +1 -0
  111. package/lib/error.js +13 -0
  112. package/lib/error.js.map +1 -0
  113. package/lib/esbuild.d.ts +70 -0
  114. package/lib/esbuild.d.ts.map +1 -0
  115. package/lib/esbuild.js +58 -0
  116. package/lib/esbuild.js.map +1 -0
  117. package/lib/fs.d.ts +12 -0
  118. package/lib/fs.d.ts.map +1 -0
  119. package/lib/fs.js +41 -0
  120. package/lib/fs.js.map +1 -0
  121. package/lib/global.d.ts +18 -0
  122. package/lib/global.d.ts.map +1 -0
  123. package/lib/global.js +42 -0
  124. package/lib/global.js.map +1 -0
  125. package/lib/index.d.ts +9 -0
  126. package/lib/index.d.ts.map +1 -0
  127. package/lib/index.js +8 -0
  128. package/lib/index.js.map +1 -0
  129. package/lib/input.d.ts +6 -0
  130. package/lib/input.d.ts.map +1 -0
  131. package/lib/input.js +2 -0
  132. package/lib/input.js.map +1 -0
  133. package/lib/main.d.ts +3 -0
  134. package/lib/main.d.ts.map +1 -0
  135. package/lib/main.js +32 -0
  136. package/lib/main.js.map +1 -0
  137. package/lib/markdown/design.d.ts +17 -0
  138. package/lib/markdown/design.d.ts.map +1 -0
  139. package/lib/markdown/design.js +92 -0
  140. package/lib/markdown/design.js.map +1 -0
  141. package/lib/markdown/extract.d.ts +7 -0
  142. package/lib/markdown/extract.d.ts.map +1 -0
  143. package/lib/markdown/extract.js +10 -0
  144. package/lib/markdown/extract.js.map +1 -0
  145. package/lib/markdown/index.d.ts +4 -0
  146. package/lib/markdown/index.d.ts.map +1 -0
  147. package/lib/markdown/index.js +4 -0
  148. package/lib/markdown/index.js.map +1 -0
  149. package/lib/markdown/requirements.d.ts +79 -0
  150. package/lib/markdown/requirements.d.ts.map +1 -0
  151. package/lib/markdown/requirements.js +105 -0
  152. package/lib/markdown/requirements.js.map +1 -0
  153. package/lib/output.d.ts +19 -0
  154. package/lib/output.d.ts.map +1 -0
  155. package/lib/output.js +16 -0
  156. package/lib/output.js.map +1 -0
  157. package/lib/resource.d.ts +66 -0
  158. package/lib/resource.d.ts.map +1 -0
  159. package/lib/resource.js +242 -0
  160. package/lib/resource.js.map +1 -0
  161. package/lib/scope.d.ts +15 -0
  162. package/lib/scope.d.ts.map +1 -0
  163. package/lib/scope.js +38 -0
  164. package/lib/scope.js.map +1 -0
  165. package/lib/slug.d.ts +2 -0
  166. package/lib/slug.d.ts.map +1 -0
  167. package/lib/slug.js +4 -0
  168. package/lib/slug.js.map +1 -0
  169. package/lib/state.d.ts +40 -0
  170. package/lib/state.d.ts.map +1 -0
  171. package/lib/state.js +73 -0
  172. package/lib/state.js.map +1 -0
  173. package/lib/stripe/index.d.ts +4 -0
  174. package/lib/stripe/index.d.ts.map +1 -0
  175. package/lib/stripe/index.js +4 -0
  176. package/lib/stripe/index.js.map +1 -0
  177. package/lib/stripe/price.d.ts +109 -0
  178. package/lib/stripe/price.d.ts.map +1 -0
  179. package/lib/stripe/price.js +112 -0
  180. package/lib/stripe/price.js.map +1 -0
  181. package/lib/stripe/product.d.ts +86 -0
  182. package/lib/stripe/product.d.ts.map +1 -0
  183. package/lib/stripe/product.js +90 -0
  184. package/lib/stripe/product.js.map +1 -0
  185. package/lib/stripe/webhook.d.ts +73 -0
  186. package/lib/stripe/webhook.d.ts.map +1 -0
  187. package/lib/stripe/webhook.js +94 -0
  188. package/lib/stripe/webhook.js.map +1 -0
  189. package/lib/typescript/check-omission.d.ts +2 -0
  190. package/lib/typescript/check-omission.d.ts.map +1 -0
  191. package/lib/typescript/check-omission.js +43 -0
  192. package/lib/typescript/check-omission.js.map +1 -0
  193. package/lib/typescript/debug-type-errors.d.ts +3 -0
  194. package/lib/typescript/debug-type-errors.d.ts.map +1 -0
  195. package/lib/typescript/debug-type-errors.js +35 -0
  196. package/lib/typescript/debug-type-errors.js.map +1 -0
  197. package/lib/typescript/extract.d.ts +7 -0
  198. package/lib/typescript/extract.d.ts.map +1 -0
  199. package/lib/typescript/extract.js +10 -0
  200. package/lib/typescript/extract.js.map +1 -0
  201. package/lib/typescript/index.d.ts +7 -0
  202. package/lib/typescript/index.d.ts.map +1 -0
  203. package/lib/typescript/index.js +7 -0
  204. package/lib/typescript/index.js.map +1 -0
  205. package/lib/typescript/install-dependencies.d.ts +29 -0
  206. package/lib/typescript/install-dependencies.d.ts.map +1 -0
  207. package/lib/typescript/install-dependencies.js +52 -0
  208. package/lib/typescript/install-dependencies.js.map +1 -0
  209. package/lib/typescript/package.d.ts +157 -0
  210. package/lib/typescript/package.d.ts.map +1 -0
  211. package/lib/typescript/package.js +115 -0
  212. package/lib/typescript/package.js.map +1 -0
  213. package/lib/typescript/repair-omissions.d.ts +3 -0
  214. package/lib/typescript/repair-omissions.d.ts.map +1 -0
  215. package/lib/typescript/repair-omissions.js +23 -0
  216. package/lib/typescript/repair-omissions.js.map +1 -0
  217. package/lib/typescript/repair.d.ts +3 -0
  218. package/lib/typescript/repair.d.ts.map +1 -0
  219. package/lib/typescript/repair.js +34 -0
  220. package/lib/typescript/repair.js.map +1 -0
  221. package/lib/typescript/tsconfig.d.ts +469 -0
  222. package/lib/typescript/tsconfig.d.ts.map +1 -0
  223. package/lib/typescript/tsconfig.js +143 -0
  224. package/lib/typescript/tsconfig.js.map +1 -0
  225. package/lib/typescript/typescript.d.ts +107 -0
  226. package/lib/typescript/typescript.d.ts.map +1 -0
  227. package/lib/typescript/typescript.js +180 -0
  228. package/lib/typescript/typescript.js.map +1 -0
  229. package/lib/typescript/validate.d.ts +10 -0
  230. package/lib/typescript/validate.d.ts.map +1 -0
  231. package/lib/typescript/validate.js +49 -0
  232. package/lib/typescript/validate.js.map +1 -0
  233. package/package.json +4 -3
  234. package/test/aws/function.test.ts +0 -144
  235. package/test/aws/queue.test.ts +0 -85
  236. package/test/aws/role.test.ts +0 -153
  237. package/test/aws/table.test.ts +0 -73
  238. package/test/esbuild.test.ts +0 -41
  239. package/test/handler.ts +0 -9
  240. package/test/scope.test.ts +0 -67
  241. package/test/stripe/stripe.test.ts +0 -136
  242. package/tsconfig.json +0 -33
package/lib/$.d.ts ADDED
@@ -0,0 +1,7 @@
1
+ import type { Input } from "./input";
2
+ import { type Output } from "./output";
3
+ type Primitive = string | number | boolean;
4
+ type _Input = Primitive | Output<Primitive>;
5
+ export declare function $(template: TemplateStringsArray, ...args: _Input[]): Input<string>;
6
+ export {};
7
+ //# sourceMappingURL=$.d.ts.map
package/lib/$.d.ts.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"$.d.ts","sourceRoot":"","sources":["../src/$.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,KAAK,MAAM,EAAY,MAAM,UAAU,CAAC;AAEjD,KAAK,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAC3C,KAAK,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;AAE5C,wBAAgB,CAAC,CACf,QAAQ,EAAE,oBAAoB,EAC9B,GAAG,IAAI,EAAE,MAAM,EAAE,GAChB,KAAK,CAAC,MAAM,CAAC,CA0Bf"}
package/lib/$.js ADDED
@@ -0,0 +1,31 @@
1
+ import { isOutput } from "./output";
2
+ export function $(template, ...args) {
3
+ const inputs = args.reduce((acc, arg) => {
4
+ if (isOutput(arg)) {
5
+ if (arg === null) {
6
+ return acc;
7
+ }
8
+ else {
9
+ return arg.apply((arg) => [...acc, arg]);
10
+ }
11
+ }
12
+ else if (isOutput(acc)) {
13
+ return acc.apply((acc) => [...acc, arg]);
14
+ }
15
+ else {
16
+ return [...acc, arg];
17
+ }
18
+ }, null);
19
+ function interpolate(inputs) {
20
+ return template.reduce((acc, str, i) => {
21
+ return acc + str + (inputs[i] ?? "");
22
+ }, "");
23
+ }
24
+ if (isOutput(inputs)) {
25
+ return inputs.apply(interpolate);
26
+ }
27
+ else {
28
+ return interpolate(inputs);
29
+ }
30
+ }
31
+ //# sourceMappingURL=$.js.map
package/lib/$.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"$.js","sourceRoot":"","sources":["../src/$.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,QAAQ,EAAE,MAAM,UAAU,CAAC;AAKjD,MAAM,UAAU,CAAC,CACf,QAA8B,EAC9B,GAAG,IAAc;IAEjB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAoC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACzE,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAClB,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;gBACjB,OAAO,GAAG,CAAC;YACb,CAAC;iBAAM,CAAC;gBACN,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;aAAM,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QAC3C,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,EAAE,IAAW,CAAC,CAAC;IAEhB,SAAS,WAAW,CAAC,MAAmB;QACtC,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE;YACrC,OAAO,GAAG,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACvC,CAAC,EAAE,EAAE,CAAC,CAAC;IACT,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACrB,OAAO,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACnC,CAAC;SAAM,CAAC;QACN,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC"}
@@ -0,0 +1,40 @@
1
+ import { generateObject as _generateObject, generateText as _generateText } from "ai";
2
+ /**
3
+ * Rate-limited wrapper around generateText
4
+ */
5
+ export declare const generateText: typeof _generateText;
6
+ /**
7
+ * Rate-limited wrapper around generateObject
8
+ */
9
+ export declare const generateObject: typeof _generateObject;
10
+ /**
11
+ * Configuration for rate limiting and retries
12
+ */
13
+ export interface RateLimitConfig {
14
+ /**
15
+ * Maximum number of concurrent requests
16
+ * @default 3
17
+ */
18
+ maxConcurrent?: number;
19
+ /**
20
+ * Base delay for exponential backoff (in milliseconds)
21
+ * @default 1000
22
+ */
23
+ baseDelay?: number;
24
+ /**
25
+ * Maximum number of retries
26
+ * @default 3
27
+ */
28
+ maxRetries?: number;
29
+ /**
30
+ * Maximum delay for exponential backoff (in milliseconds)
31
+ * @default 30000
32
+ */
33
+ maxDelay?: number;
34
+ /**
35
+ * Jitter factor for randomizing delays (between 0 and 1)
36
+ * @default 0.1
37
+ */
38
+ jitter?: number;
39
+ }
40
+ //# sourceMappingURL=ai.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai.d.ts","sourceRoot":"","sources":["../../src/agent/ai.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,cAAc,IAAI,eAAe,EACjC,YAAY,IAAI,aAAa,EAC9B,MAAM,IAAI,CAAC;AAWZ;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,OAAO,aAEjC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,OAAO,eAM3B,CAAC;AAkCV;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
@@ -0,0 +1,132 @@
1
+ import { generateObject as _generateObject, generateText as _generateText, } from "ai";
2
+ import { isOpenAIModel } from "./openai";
3
+ /**
4
+ * Rate-limited wrapper around generateText
5
+ */
6
+ export const generateText = async (options) => {
7
+ return withRateLimit(() => _generateText(options), options);
8
+ };
9
+ /**
10
+ * Rate-limited wrapper around generateObject
11
+ */
12
+ export const generateObject = (async (options) => {
13
+ return withRateLimit(() => _generateObject(options), options);
14
+ });
15
+ /**
16
+ * A simple async semaphore implementation for rate limiting
17
+ */
18
+ class AsyncSemaphore {
19
+ permits;
20
+ queue = [];
21
+ constructor(permits) {
22
+ this.permits = permits;
23
+ }
24
+ async acquire() {
25
+ if (this.permits > 0) {
26
+ this.permits--;
27
+ return;
28
+ }
29
+ return new Promise((resolve) => {
30
+ this.queue.push(resolve);
31
+ });
32
+ }
33
+ release() {
34
+ if (this.queue.length > 0) {
35
+ const next = this.queue.shift();
36
+ next?.();
37
+ }
38
+ else {
39
+ this.permits++;
40
+ }
41
+ }
42
+ }
43
+ // Global semaphore instances per client configuration
44
+ const defaultConfig = {
45
+ maxConcurrent: 3,
46
+ baseDelay: 1000,
47
+ maxRetries: 10,
48
+ maxDelay: 30000,
49
+ jitter: 0.1,
50
+ };
51
+ // WeakMap to store semaphores per client
52
+ const clientSemaphores = new Map();
53
+ /**
54
+ * Gets or creates a semaphore for a specific client
55
+ */
56
+ function getSemaphore(client) {
57
+ let semaphore = clientSemaphores.get(client);
58
+ if (!semaphore) {
59
+ semaphore = new AsyncSemaphore(defaultConfig.maxConcurrent);
60
+ clientSemaphores.set(client, semaphore);
61
+ }
62
+ return semaphore;
63
+ }
64
+ /**
65
+ * Calculates the delay for exponential backoff with jitter
66
+ */
67
+ function calculateBackoffDelay(attempt, { baseDelay, maxDelay, jitter }) {
68
+ const exponentialDelay = Math.min(baseDelay * Math.pow(2, attempt), maxDelay);
69
+ const jitterAmount = exponentialDelay * jitter;
70
+ return exponentialDelay + (Math.random() * 2 - 1) * jitterAmount;
71
+ }
72
+ /**
73
+ * Checks if an error is a rate limit related error
74
+ */
75
+ function isRateLimitError(error) {
76
+ if (error.url === "https://api.anthropic.com/v1/messages") {
77
+ return error.status === 429;
78
+ }
79
+ const openAIError = error;
80
+ // Check for specific OpenAI rate limit error codes
81
+ if (openAIError.code) {
82
+ return [
83
+ "rate_limit_exceeded",
84
+ "insufficient_quota",
85
+ "tokens_quota_exceeded",
86
+ "requests_quota_exceeded",
87
+ ].includes(openAIError.code);
88
+ }
89
+ // Check for HTTP 429 status
90
+ if (openAIError.status === 429)
91
+ return true;
92
+ // Check error types
93
+ if (openAIError.type) {
94
+ return ["tokens", "requests", "rate_limit", "capacity"].includes(openAIError.type.toLowerCase());
95
+ }
96
+ // Fallback to message content check
97
+ return (openAIError.message.toLowerCase().includes("rate") ||
98
+ openAIError.message.toLowerCase().includes("quota") ||
99
+ openAIError.message.toLowerCase().includes("capacity") ||
100
+ openAIError.message.toLowerCase().includes("throttle"));
101
+ }
102
+ /**
103
+ * Wraps an async function with rate limiting and exponential backoff
104
+ */
105
+ async function withRateLimit(fn, options, config = {}) {
106
+ const finalConfig = { ...defaultConfig, ...config };
107
+ const client = options.model;
108
+ const semaphore = getSemaphore(isOpenAIModel(client.modelId) ? "openai" : "anthropic");
109
+ for (let attempt = 0; attempt <= finalConfig.maxRetries; attempt++) {
110
+ try {
111
+ await semaphore.acquire();
112
+ const result = await fn();
113
+ return result;
114
+ }
115
+ catch (error) {
116
+ if (attempt === finalConfig.maxRetries) {
117
+ throw error;
118
+ }
119
+ if (!isRateLimitError(error)) {
120
+ throw error;
121
+ }
122
+ const delay = calculateBackoffDelay(attempt, finalConfig);
123
+ console.log(`Rate limit error, retrying... (attempt ${attempt + 1}/${finalConfig.maxRetries + 1}, waiting ${Math.round(delay)}ms)`);
124
+ await new Promise((resolve) => setTimeout(resolve, delay));
125
+ }
126
+ finally {
127
+ semaphore.release();
128
+ }
129
+ }
130
+ throw new Error("Unexpected: Should not reach this point");
131
+ }
132
+ //# sourceMappingURL=ai.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai.js","sourceRoot":"","sources":["../../src/agent/ai.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,cAAc,IAAI,eAAe,EACjC,YAAY,IAAI,aAAa,GAC9B,MAAM,IAAI,CAAC;AAEZ,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AASzC;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAyB,KAAK,EAAE,OAAO,EAAE,EAAE;IAClE,OAAO,aAAa,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;AAC9D,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAA2B,CAAC,KAAK,EAC1D,OAEC,EACsC,EAAE;IACzC,OAAO,aAAa,CAAC,GAAG,EAAE,CAAC,eAAe,CAAS,OAAc,CAAC,EAAE,OAAO,CAAC,CAAC;AAC/E,CAAC,CAAQ,CAAC;AAEV;;GAEG;AACH,MAAM,cAAc;IACV,OAAO,CAAS;IAChB,KAAK,GAAsB,EAAE,CAAC;IAEtC,YAAY,OAAe;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;YACrB,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,OAAO;QACT,CAAC;QAED,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YACnC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YAChC,IAAI,EAAE,EAAE,CAAC;QACX,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,CAAC;IACH,CAAC;CACF;AAqCD,sDAAsD;AACtD,MAAM,aAAa,GAA8B;IAC/C,aAAa,EAAE,CAAC;IAChB,SAAS,EAAE,IAAI;IACf,UAAU,EAAE,EAAE;IACd,QAAQ,EAAE,KAAK;IACf,MAAM,EAAE,GAAG;CACZ,CAAC;AAEF,yCAAyC;AACzC,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAA0C,CAAC;AAE3E;;GAEG;AACH,SAAS,YAAY,CAAC,MAA8B;IAClD,IAAI,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7C,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,SAAS,GAAG,IAAI,cAAc,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;QAC5D,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,SAAS,qBAAqB,CAC5B,OAAe,EACf,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAA6B;IAE1D,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC9E,MAAM,YAAY,GAAG,gBAAgB,GAAG,MAAM,CAAC;IAC/C,OAAO,gBAAgB,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC;AACnE,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAC,KAAU;IAClC,IAAI,KAAK,CAAC,GAAG,KAAK,uCAAuC,EAAE,CAAC;QAC1D,OAAO,KAAK,CAAC,MAAM,KAAK,GAAG,CAAC;IAC9B,CAAC;IAED,MAAM,WAAW,GAAG,KAAoB,CAAC;IAEzC,mDAAmD;IACnD,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC;QACrB,OAAO;YACL,qBAAqB;YACrB,oBAAoB;YACpB,uBAAuB;YACvB,yBAAyB;SAC1B,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,4BAA4B;IAC5B,IAAI,WAAW,CAAC,MAAM,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC;IAE5C,oBAAoB;IACpB,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC;QACrB,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC,QAAQ,CAC9D,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,CAC/B,CAAC;IACJ,CAAC;IAED,oCAAoC;IACpC,OAAO,CACL,WAAW,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;QAClD,WAAW,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;QACnD,WAAW,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;QACtD,WAAW,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CACvD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,aAAa,CAC1B,EAAoB,EACpB,OAAmC,EACnC,SAA0B,EAAE;IAE5B,MAAM,WAAW,GAAG,EAAE,GAAG,aAAa,EAAE,GAAG,MAAM,EAAE,CAAC;IACpD,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAC7B,MAAM,SAAS,GAAG,YAAY,CAC5B,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CACvD,CAAC;IACF,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,WAAW,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC;QACnE,IAAI,CAAC;YACH,MAAM,SAAS,CAAC,OAAO,EAAE,CAAC;YAC1B,MAAM,MAAM,GAAG,MAAM,EAAE,EAAE,CAAC;YAC1B,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,OAAO,KAAK,WAAW,CAAC,UAAU,EAAE,CAAC;gBACvC,MAAM,KAAK,CAAC;YACd,CAAC;YAED,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC7B,MAAM,KAAK,CAAC;YACd,CAAC;YAED,MAAM,KAAK,GAAG,qBAAqB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YAC1D,OAAO,CAAC,GAAG,CACT,0CAA0C,OAAO,GAAG,CAAC,IAAI,WAAW,CAAC,UAAU,GAAG,CAAC,aAAa,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CACvH,CAAC;YACF,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;QAC7D,CAAC;gBAAS,CAAC;YACT,SAAS,CAAC,OAAO,EAAE,CAAC;QACtB,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;AAC7D,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * @see https://docs.anthropic.com/en/docs/about-claude/models#model-comparison-table
4
+ */
5
+ export declare const AnthropicModels: readonly ["claude-3-5-sonnet-latest", "claude-3-5-sonnet-20241022", "claude-3-5-sonnet-20240620", "claude-3-5-haiku-latest", "claude-3-5-haiku-20241022", "claude-3-opus", "claude-3-opus-20240229", "claude-3-sonnet", "claude-3-sonnet-20240229", "claude-3-haiku", "claude-3-haiku-20240307"];
6
+ export declare const AnthropicModel: z.ZodEnum<["claude-3-5-sonnet-latest", "claude-3-5-sonnet-20241022", "claude-3-5-sonnet-20240620", "claude-3-5-haiku-latest", "claude-3-5-haiku-20241022", "claude-3-opus", "claude-3-opus-20240229", "claude-3-sonnet", "claude-3-sonnet-20240229", "claude-3-haiku", "claude-3-haiku-20240307"]>;
7
+ export type AnthropicModelId = (typeof AnthropicModels)[number] | (string & {});
8
+ export declare function isAnthropicModel(model: string): model is AnthropicModelId;
9
+ //# sourceMappingURL=anthropic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../src/agent/anthropic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,eAAO,MAAM,eAAe,kSAiBlB,CAAC;AAEX,eAAO,MAAM,cAAc,oSAA0B,CAAC;AAEtD,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAEhF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,gBAAgB,CAEzE"}
@@ -0,0 +1,25 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * @see https://docs.anthropic.com/en/docs/about-claude/models#model-comparison-table
4
+ */
5
+ export const AnthropicModels = [
6
+ // Claude 3.5 Sonnet models
7
+ "claude-3-5-sonnet-latest",
8
+ "claude-3-5-sonnet-20241022",
9
+ "claude-3-5-sonnet-20240620",
10
+ // Claude 3.5 Haiku models
11
+ "claude-3-5-haiku-latest",
12
+ "claude-3-5-haiku-20241022",
13
+ // Claude 3 models
14
+ "claude-3-opus",
15
+ "claude-3-opus-20240229",
16
+ "claude-3-sonnet",
17
+ "claude-3-sonnet-20240229",
18
+ "claude-3-haiku",
19
+ "claude-3-haiku-20240307",
20
+ ];
21
+ export const AnthropicModel = z.enum(AnthropicModels);
22
+ export function isAnthropicModel(model) {
23
+ return model.startsWith("claude-");
24
+ }
25
+ //# sourceMappingURL=anthropic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../src/agent/anthropic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,2BAA2B;IAC3B,0BAA0B;IAC1B,4BAA4B;IAC5B,4BAA4B;IAE5B,0BAA0B;IAC1B,yBAAyB;IACzB,2BAA2B;IAE3B,kBAAkB;IAClB,eAAe;IACf,wBAAwB;IACxB,iBAAiB;IACjB,0BAA0B;IAC1B,gBAAgB;IAChB,yBAAyB;CACjB,CAAC;AAEX,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAItD,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,OAAO,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AACrC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { CoreMessage } from "ai";
2
+ import type { FileContext } from "./file-context";
3
+ export declare function dependenciesAsMessages(dependencies: FileContext[] | undefined): CoreMessage[];
4
+ //# sourceMappingURL=dependencies.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependencies.d.ts","sourceRoot":"","sources":["../../src/agent/dependencies.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,IAAI,CAAC;AACtC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,wBAAgB,sBAAsB,CACpC,YAAY,EAAE,WAAW,EAAE,GAAG,SAAS,GACtC,WAAW,EAAE,CAyBf"}
@@ -0,0 +1,48 @@
1
+ export function dependenciesAsMessages(dependencies) {
2
+ if (!dependencies?.length)
3
+ return [];
4
+ const fileTree = generateFileTree(dependencies);
5
+ return [
6
+ {
7
+ role: "user",
8
+ content: [
9
+ `Here are some relevant upstream files that you may need to reference.`,
10
+ `Existing file structure:`,
11
+ fileTree,
12
+ `File contents:`,
13
+ dependencies
14
+ .flatMap((dep) => dep.content ? [`// ${dep.path}\n${dep.content}`] : [])
15
+ .join("\n\n"),
16
+ ].join("\n"),
17
+ },
18
+ {
19
+ role: "assistant",
20
+ content: "Thanks, I'll refer to those where relevant.",
21
+ },
22
+ ];
23
+ }
24
+ function generateFileTree(dependencies) {
25
+ const tree = {};
26
+ // Sort dependencies by path for consistent ordering
27
+ dependencies.sort((a, b) => a.path.localeCompare(b.path));
28
+ for (const dep of dependencies) {
29
+ const parts = dep.path.split("/");
30
+ let currentPath = "";
31
+ for (let i = 0; i < parts.length; i++) {
32
+ const part = parts[i];
33
+ const newPath = currentPath ? `${currentPath}/${part}` : part;
34
+ tree[newPath] = true;
35
+ currentPath = newPath;
36
+ }
37
+ }
38
+ const paths = Object.keys(tree);
39
+ let result = "";
40
+ for (const path of paths) {
41
+ const depth = path.split("/").length - 1;
42
+ const prefix = " ".repeat(depth);
43
+ const name = path.split("/").pop();
44
+ result += `${prefix}${depth > 0 ? "└─ " : ""}${name}\n`;
45
+ }
46
+ return result;
47
+ }
48
+ //# sourceMappingURL=dependencies.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependencies.js","sourceRoot":"","sources":["../../src/agent/dependencies.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,sBAAsB,CACpC,YAAuC;IAEvC,IAAI,CAAC,YAAY,EAAE,MAAM;QAAE,OAAO,EAAE,CAAC;IAErC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAC;IAEhD,OAAO;QACL;YACE,IAAI,EAAE,MAAe;YACrB,OAAO,EAAE;gBACP,uEAAuE;gBACvE,0BAA0B;gBAC1B,QAAQ;gBACR,gBAAgB;gBAChB,YAAY;qBACT,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CACf,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CACtD;qBACA,IAAI,CAAC,MAAM,CAAC;aAChB,CAAC,IAAI,CAAC,IAAI,CAAC;SACb;QACD;YACE,IAAI,EAAE,WAAoB;YAC1B,OAAO,EAAE,6CAA6C;SACvD;KACF,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,YAA2B;IACnD,MAAM,IAAI,GAA+B,EAAE,CAAC;IAE5C,oDAAoD;IACpD,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAE1D,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,WAAW,GAAG,EAAE,CAAC;QAErB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YAC9D,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;YACrB,WAAW,GAAG,OAAO,CAAC;QACxB,CAAC;IACH,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,MAAM,GAAG,EAAE,CAAC;IAEhB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAG,CAAC;QACpC,MAAM,IAAI,GAAG,MAAM,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC;IAC1D,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { z } from "zod";
2
+ export type FileContext = z.infer<typeof FileContext>;
3
+ export declare const FileContext: z.ZodObject<{
4
+ path: z.ZodString;
5
+ content: z.ZodOptional<z.ZodString>;
6
+ }, "strip", z.ZodTypeAny, {
7
+ path: string;
8
+ content?: string | undefined;
9
+ }, {
10
+ path: string;
11
+ content?: string | undefined;
12
+ }>;
13
+ //# sourceMappingURL=file-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-context.d.ts","sourceRoot":"","sources":["../../src/agent/file-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEtD,eAAO,MAAM,WAAW;;;;;;;;;EAGtB,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { z } from "zod";
2
+ export const FileContext = z.object({
3
+ path: z.string(),
4
+ content: z.string().optional(),
5
+ });
6
+ //# sourceMappingURL=file-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-context.js","sourceRoot":"","sources":["../../src/agent/file-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC/B,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ export * from "./ai";
2
+ export * from "./anthropic";
3
+ export * from "./dependencies";
4
+ export * from "./file-context";
5
+ export * from "./model";
6
+ export * from "./module";
7
+ export * from "./openai";
8
+ export * from "./program";
9
+ export * from "./scrape";
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agent/index.ts"],"names":[],"mappings":"AAAA,cAAc,MAAM,CAAC;AACrB,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC"}
@@ -0,0 +1,10 @@
1
+ export * from "./ai";
2
+ export * from "./anthropic";
3
+ export * from "./dependencies";
4
+ export * from "./file-context";
5
+ export * from "./model";
6
+ export * from "./module";
7
+ export * from "./openai";
8
+ export * from "./program";
9
+ export * from "./scrape";
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agent/index.ts"],"names":[],"mappings":"AAAA,cAAc,MAAM,CAAC;AACrB,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { LanguageModelV1 } from "ai";
2
+ import { z } from "zod";
3
+ import { type AnthropicModelId } from "./anthropic";
4
+ import { type OpenAIChatModelId } from "./openai";
5
+ export type ModelId = OpenAIChatModelId | AnthropicModelId;
6
+ export declare const ModelId: z.ZodUnion<[z.ZodEnum<["o3-mini", "o1", "o1-2024-12-17", "o1-mini", "o1-mini-2024-09-12", "o1-preview", "o1-preview-2024-09-12", "gpt-4o", "gpt-4o-2024-05-13", "gpt-4o-2024-08-06", "gpt-4o-2024-11-20", "gpt-4o-audio-preview", "gpt-4o-audio-preview-2024-10-01", "gpt-4o-audio-preview-2024-12-17", "gpt-4o-mini", "gpt-4o-mini-2024-07-18", "gpt-4-turbo", "gpt-4-turbo-2024-04-09", "gpt-4-turbo-preview", "gpt-4-0125-preview", "gpt-4-1106-preview", "gpt-4", "gpt-4-0613", "gpt-3.5-turbo-0125", "gpt-3.5-turbo", "gpt-3.5-turbo-1106"]>, z.ZodEnum<["claude-3-5-sonnet-latest", "claude-3-5-sonnet-20241022", "claude-3-5-sonnet-20240620", "claude-3-5-haiku-latest", "claude-3-5-haiku-20241022", "claude-3-opus", "claude-3-opus-20240229", "claude-3-sonnet", "claude-3-sonnet-20240229", "claude-3-haiku", "claude-3-haiku-20240307"]>]>;
7
+ export declare function resolveModel(modelId: ModelId): Promise<LanguageModelV1>;
8
+ //# sourceMappingURL=model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/agent/model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,IAAI,CAAC;AAC1C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAEL,KAAK,gBAAgB,EAEtB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,KAAK,iBAAiB,EAA8B,MAAM,UAAU,CAAC;AAE9E,MAAM,MAAM,OAAO,GAAG,iBAAiB,GAAG,gBAAgB,CAAC;AAE3D,eAAO,MAAM,OAAO,yzBAAyC,CAAC;AAI9D,wBAAsB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,eAAe,CAAC,CAuB7E"}
@@ -0,0 +1,29 @@
1
+ import { z } from "zod";
2
+ import { AnthropicModel, isAnthropicModel, } from "./anthropic";
3
+ import { OpenAIModel, isOpenAIModel } from "./openai";
4
+ export const ModelId = z.union([OpenAIModel, AnthropicModel]);
5
+ const modelCache = new Map();
6
+ export async function resolveModel(modelId) {
7
+ const cached = modelCache.get(modelId);
8
+ if (cached) {
9
+ return await cached;
10
+ }
11
+ const client = (async () => {
12
+ let client;
13
+ if (isOpenAIModel(modelId)) {
14
+ const { openai } = await import("@ai-sdk/openai");
15
+ client = openai(modelId);
16
+ }
17
+ else if (isAnthropicModel(modelId)) {
18
+ const { anthropic } = await import("@ai-sdk/anthropic");
19
+ client = anthropic(modelId);
20
+ }
21
+ else {
22
+ throw new Error(`Unsupported model ID: ${modelId}`);
23
+ }
24
+ return client;
25
+ })();
26
+ modelCache.set(modelId, client);
27
+ return client;
28
+ }
29
+ //# sourceMappingURL=model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/agent/model.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,cAAc,EAEd,gBAAgB,GACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAA0B,WAAW,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAI9E,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC;AAE9D,MAAM,UAAU,GAAG,IAAI,GAAG,EAAqC,CAAC;AAEhE,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAgB;IACjD,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACvC,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,MAAM,MAAM,CAAC;IACtB,CAAC;IAED,MAAM,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE;QACzB,IAAI,MAAuB,CAAC;QAC5B,IAAI,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;YAClD,MAAM,GAAG,MAAM,CAAC,OAA4B,CAAC,CAAC;QAChD,CAAC;aAAM,IAAI,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;YACrC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;YACxD,MAAM,GAAG,SAAS,CAAC,OAA2B,CAAC,CAAC;QAClD,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,yBAAyB,OAAO,EAAE,CAAC,CAAC;QACtD,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,EAAE,CAAC;IAEL,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAChC,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,81 @@
1
+ import { z } from "zod";
2
+ import { Folder } from "../fs";
3
+ import { TypeScriptFile } from "../typescript";
4
+ import type { PackageJson } from "../typescript/package";
5
+ import type { TypeScriptConfig } from "../typescript/tsconfig";
6
+ import type { FileContext } from "./file-context";
7
+ import { type ModelId } from "./model";
8
+ export type CreatePlan = z.infer<typeof CreatePlan>;
9
+ export declare const CreatePlan: z.ZodObject<{
10
+ files: z.ZodRecord<z.ZodString, z.ZodObject<{
11
+ type: z.ZodEnum<["folder", "design", "typescript", "css", "scss", "javascript", "html"]>;
12
+ upstream: z.ZodArray<z.ZodString, "many">;
13
+ operation: z.ZodEnum<["create"]>;
14
+ }, "strip", z.ZodTypeAny, {
15
+ type: "design" | "folder" | "typescript" | "css" | "scss" | "javascript" | "html";
16
+ upstream: string[];
17
+ operation: "create";
18
+ }, {
19
+ type: "design" | "folder" | "typescript" | "css" | "scss" | "javascript" | "html";
20
+ upstream: string[];
21
+ operation: "create";
22
+ }>>;
23
+ }, "strip", z.ZodTypeAny, {
24
+ files: Record<string, {
25
+ type: "design" | "folder" | "typescript" | "css" | "scss" | "javascript" | "html";
26
+ upstream: string[];
27
+ operation: "create";
28
+ }>;
29
+ }, {
30
+ files: Record<string, {
31
+ type: "design" | "folder" | "typescript" | "css" | "scss" | "javascript" | "html";
32
+ upstream: string[];
33
+ operation: "create";
34
+ }>;
35
+ }>;
36
+ export type UpdatePlan = z.infer<typeof UpdatePlan>;
37
+ export declare const UpdatePlan: z.ZodObject<{
38
+ files: z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodObject<{
39
+ type: z.ZodEnum<["folder", "design", "typescript", "css", "scss", "javascript", "html"]>;
40
+ upstream: z.ZodArray<z.ZodString, "many">;
41
+ operation: z.ZodEnum<["create", "update"]>;
42
+ }, "strip", z.ZodTypeAny, {
43
+ type: "design" | "folder" | "typescript" | "css" | "scss" | "javascript" | "html";
44
+ upstream: string[];
45
+ operation: "create" | "update";
46
+ }, {
47
+ type: "design" | "folder" | "typescript" | "css" | "scss" | "javascript" | "html";
48
+ upstream: string[];
49
+ operation: "create" | "update";
50
+ }>, z.ZodEnum<["delete", "noop"]>]>>;
51
+ }, "strip", z.ZodTypeAny, {
52
+ files: Record<string, "delete" | {
53
+ type: "design" | "folder" | "typescript" | "css" | "scss" | "javascript" | "html";
54
+ upstream: string[];
55
+ operation: "create" | "update";
56
+ } | "noop">;
57
+ }, {
58
+ files: Record<string, "delete" | {
59
+ type: "design" | "folder" | "typescript" | "css" | "scss" | "javascript" | "html";
60
+ upstream: string[];
61
+ operation: "create" | "update";
62
+ } | "noop">;
63
+ }>;
64
+ type OutputFile = TypeScriptFile | PackageJson | TypeScriptConfig | Folder | Module;
65
+ export interface ModuleOutput {
66
+ path: string;
67
+ content: string;
68
+ plan: CreatePlan | UpdatePlan;
69
+ files: Record<string, OutputFile>;
70
+ }
71
+ export interface ModuleInput {
72
+ path: string;
73
+ content: string;
74
+ model?: ModelId;
75
+ dependencies?: FileContext[];
76
+ }
77
+ declare const Module_base: import("../resource").Provider<"Module", [props: ModuleInput], ModuleOutput>;
78
+ export declare class Module extends Module_base {
79
+ }
80
+ export {};
81
+ //# sourceMappingURL=module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../src/agent/module.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAW/B,OAAO,EAAE,cAAc,EAA4B,MAAM,eAAe,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,KAAK,OAAO,EAAgB,MAAM,SAAS,CAAC;AAqDrD,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AACpD,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;EAErB,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AACpD,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;EAErB,CAAC;AAEH,KAAK,UAAU,GACX,cAAc,GACd,WAAW,GACX,gBAAgB,GAChB,MAAM,GACN,MAAM,CAAC;AAEX,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,UAAU,GAAG,UAAU,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;CAC9B;;AAED,qBAAa,MAAO,SAAQ,WA8J3B;CAAG"}