@praveencs/agent 0.1.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 (279) hide show
  1. package/README.md +1007 -0
  2. package/bin/agent.ts +6 -0
  3. package/dist/bin/agent.d.ts +3 -0
  4. package/dist/bin/agent.d.ts.map +1 -0
  5. package/dist/bin/agent.js +5 -0
  6. package/dist/bin/agent.js.map +1 -0
  7. package/dist/src/cli/commands/config.d.ts +3 -0
  8. package/dist/src/cli/commands/config.d.ts.map +1 -0
  9. package/dist/src/cli/commands/config.js +54 -0
  10. package/dist/src/cli/commands/config.js.map +1 -0
  11. package/dist/src/cli/commands/daemon.d.ts +3 -0
  12. package/dist/src/cli/commands/daemon.d.ts.map +1 -0
  13. package/dist/src/cli/commands/daemon.js +43 -0
  14. package/dist/src/cli/commands/daemon.js.map +1 -0
  15. package/dist/src/cli/commands/doctor.d.ts +3 -0
  16. package/dist/src/cli/commands/doctor.d.ts.map +1 -0
  17. package/dist/src/cli/commands/doctor.js +84 -0
  18. package/dist/src/cli/commands/doctor.js.map +1 -0
  19. package/dist/src/cli/commands/init.d.ts +8 -0
  20. package/dist/src/cli/commands/init.d.ts.map +1 -0
  21. package/dist/src/cli/commands/init.js +112 -0
  22. package/dist/src/cli/commands/init.js.map +1 -0
  23. package/dist/src/cli/commands/mcp.d.ts +3 -0
  24. package/dist/src/cli/commands/mcp.d.ts.map +1 -0
  25. package/dist/src/cli/commands/mcp.js +26 -0
  26. package/dist/src/cli/commands/mcp.js.map +1 -0
  27. package/dist/src/cli/commands/plan.d.ts +3 -0
  28. package/dist/src/cli/commands/plan.d.ts.map +1 -0
  29. package/dist/src/cli/commands/plan.js +220 -0
  30. package/dist/src/cli/commands/plan.js.map +1 -0
  31. package/dist/src/cli/commands/run.d.ts +3 -0
  32. package/dist/src/cli/commands/run.d.ts.map +1 -0
  33. package/dist/src/cli/commands/run.js +192 -0
  34. package/dist/src/cli/commands/run.js.map +1 -0
  35. package/dist/src/cli/commands/skills.d.ts +3 -0
  36. package/dist/src/cli/commands/skills.d.ts.map +1 -0
  37. package/dist/src/cli/commands/skills.js +143 -0
  38. package/dist/src/cli/commands/skills.js.map +1 -0
  39. package/dist/src/cli/index.d.ts +6 -0
  40. package/dist/src/cli/index.d.ts.map +1 -0
  41. package/dist/src/cli/index.js +33 -0
  42. package/dist/src/cli/index.js.map +1 -0
  43. package/dist/src/cli/ui/progress.d.ts +17 -0
  44. package/dist/src/cli/ui/progress.d.ts.map +1 -0
  45. package/dist/src/cli/ui/progress.js +43 -0
  46. package/dist/src/cli/ui/progress.js.map +1 -0
  47. package/dist/src/cli/ui/prompt.d.ts +10 -0
  48. package/dist/src/cli/ui/prompt.d.ts.map +1 -0
  49. package/dist/src/cli/ui/prompt.js +53 -0
  50. package/dist/src/cli/ui/prompt.js.map +1 -0
  51. package/dist/src/cli/ui/report.d.ts +6 -0
  52. package/dist/src/cli/ui/report.d.ts.map +1 -0
  53. package/dist/src/cli/ui/report.js +81 -0
  54. package/dist/src/cli/ui/report.js.map +1 -0
  55. package/dist/src/config/defaults.d.ts +3 -0
  56. package/dist/src/config/defaults.d.ts.map +1 -0
  57. package/dist/src/config/defaults.js +82 -0
  58. package/dist/src/config/defaults.js.map +1 -0
  59. package/dist/src/config/loader.d.ts +33 -0
  60. package/dist/src/config/loader.d.ts.map +1 -0
  61. package/dist/src/config/loader.js +161 -0
  62. package/dist/src/config/loader.js.map +1 -0
  63. package/dist/src/config/schema.d.ts +530 -0
  64. package/dist/src/config/schema.d.ts.map +1 -0
  65. package/dist/src/config/schema.js +97 -0
  66. package/dist/src/config/schema.js.map +1 -0
  67. package/dist/src/config/secrets.d.ts +31 -0
  68. package/dist/src/config/secrets.d.ts.map +1 -0
  69. package/dist/src/config/secrets.js +98 -0
  70. package/dist/src/config/secrets.js.map +1 -0
  71. package/dist/src/daemon/manager.d.ts +28 -0
  72. package/dist/src/daemon/manager.d.ts.map +1 -0
  73. package/dist/src/daemon/manager.js +77 -0
  74. package/dist/src/daemon/manager.js.map +1 -0
  75. package/dist/src/daemon/scheduler.d.ts +6 -0
  76. package/dist/src/daemon/scheduler.d.ts.map +1 -0
  77. package/dist/src/daemon/scheduler.js +82 -0
  78. package/dist/src/daemon/scheduler.js.map +1 -0
  79. package/dist/src/daemon/watcher.d.ts +16 -0
  80. package/dist/src/daemon/watcher.d.ts.map +1 -0
  81. package/dist/src/daemon/watcher.js +59 -0
  82. package/dist/src/daemon/watcher.js.map +1 -0
  83. package/dist/src/engine/executor.d.ts +51 -0
  84. package/dist/src/engine/executor.d.ts.map +1 -0
  85. package/dist/src/engine/executor.js +189 -0
  86. package/dist/src/engine/executor.js.map +1 -0
  87. package/dist/src/engine/rollback.d.ts +37 -0
  88. package/dist/src/engine/rollback.d.ts.map +1 -0
  89. package/dist/src/engine/rollback.js +95 -0
  90. package/dist/src/engine/rollback.js.map +1 -0
  91. package/dist/src/engine/types.d.ts +31 -0
  92. package/dist/src/engine/types.d.ts.map +1 -0
  93. package/dist/src/engine/types.js +2 -0
  94. package/dist/src/engine/types.js.map +1 -0
  95. package/dist/src/engine/verification.d.ts +27 -0
  96. package/dist/src/engine/verification.d.ts.map +1 -0
  97. package/dist/src/engine/verification.js +75 -0
  98. package/dist/src/engine/verification.js.map +1 -0
  99. package/dist/src/index.d.ts +17 -0
  100. package/dist/src/index.d.ts.map +1 -0
  101. package/dist/src/index.js +13 -0
  102. package/dist/src/index.js.map +1 -0
  103. package/dist/src/llm/cache.d.ts +20 -0
  104. package/dist/src/llm/cache.d.ts.map +1 -0
  105. package/dist/src/llm/cache.js +45 -0
  106. package/dist/src/llm/cache.js.map +1 -0
  107. package/dist/src/llm/providers/anthropic.d.ts +13 -0
  108. package/dist/src/llm/providers/anthropic.d.ts.map +1 -0
  109. package/dist/src/llm/providers/anthropic.js +69 -0
  110. package/dist/src/llm/providers/anthropic.js.map +1 -0
  111. package/dist/src/llm/providers/azure.d.ts +14 -0
  112. package/dist/src/llm/providers/azure.d.ts.map +1 -0
  113. package/dist/src/llm/providers/azure.js +98 -0
  114. package/dist/src/llm/providers/azure.js.map +1 -0
  115. package/dist/src/llm/providers/ollama.d.ts +13 -0
  116. package/dist/src/llm/providers/ollama.d.ts.map +1 -0
  117. package/dist/src/llm/providers/ollama.js +80 -0
  118. package/dist/src/llm/providers/ollama.js.map +1 -0
  119. package/dist/src/llm/providers/openai.d.ts +13 -0
  120. package/dist/src/llm/providers/openai.d.ts.map +1 -0
  121. package/dist/src/llm/providers/openai.js +74 -0
  122. package/dist/src/llm/providers/openai.js.map +1 -0
  123. package/dist/src/llm/router.d.ts +26 -0
  124. package/dist/src/llm/router.d.ts.map +1 -0
  125. package/dist/src/llm/router.js +104 -0
  126. package/dist/src/llm/router.js.map +1 -0
  127. package/dist/src/llm/types.d.ts +44 -0
  128. package/dist/src/llm/types.d.ts.map +1 -0
  129. package/dist/src/llm/types.js +2 -0
  130. package/dist/src/llm/types.js.map +1 -0
  131. package/dist/src/logging/audit-log.d.ts +89 -0
  132. package/dist/src/logging/audit-log.d.ts.map +1 -0
  133. package/dist/src/logging/audit-log.js +132 -0
  134. package/dist/src/logging/audit-log.js.map +1 -0
  135. package/dist/src/logging/logger.d.ts +13 -0
  136. package/dist/src/logging/logger.d.ts.map +1 -0
  137. package/dist/src/logging/logger.js +57 -0
  138. package/dist/src/logging/logger.js.map +1 -0
  139. package/dist/src/logging/redactor.d.ts +14 -0
  140. package/dist/src/logging/redactor.d.ts.map +1 -0
  141. package/dist/src/logging/redactor.js +48 -0
  142. package/dist/src/logging/redactor.js.map +1 -0
  143. package/dist/src/mcp/handlers.d.ts +21 -0
  144. package/dist/src/mcp/handlers.d.ts.map +1 -0
  145. package/dist/src/mcp/handlers.js +156 -0
  146. package/dist/src/mcp/handlers.js.map +1 -0
  147. package/dist/src/mcp/server.d.ts +8 -0
  148. package/dist/src/mcp/server.d.ts.map +1 -0
  149. package/dist/src/mcp/server.js +40 -0
  150. package/dist/src/mcp/server.js.map +1 -0
  151. package/dist/src/mcp/types.d.ts +20 -0
  152. package/dist/src/mcp/types.d.ts.map +1 -0
  153. package/dist/src/mcp/types.js +2 -0
  154. package/dist/src/mcp/types.js.map +1 -0
  155. package/dist/src/plans/parser.d.ts +33 -0
  156. package/dist/src/plans/parser.d.ts.map +1 -0
  157. package/dist/src/plans/parser.js +93 -0
  158. package/dist/src/plans/parser.js.map +1 -0
  159. package/dist/src/plans/propose.d.ts +26 -0
  160. package/dist/src/plans/propose.d.ts.map +1 -0
  161. package/dist/src/plans/propose.js +85 -0
  162. package/dist/src/plans/propose.js.map +1 -0
  163. package/dist/src/plans/runner.d.ts +19 -0
  164. package/dist/src/plans/runner.d.ts.map +1 -0
  165. package/dist/src/plans/runner.js +159 -0
  166. package/dist/src/plans/runner.js.map +1 -0
  167. package/dist/src/plans/triggers.d.ts +12 -0
  168. package/dist/src/plans/triggers.d.ts.map +1 -0
  169. package/dist/src/plans/triggers.js +43 -0
  170. package/dist/src/plans/triggers.js.map +1 -0
  171. package/dist/src/plans/types.d.ts +454 -0
  172. package/dist/src/plans/types.d.ts.map +1 -0
  173. package/dist/src/plans/types.js +56 -0
  174. package/dist/src/plans/types.js.map +1 -0
  175. package/dist/src/policy/audit.d.ts +35 -0
  176. package/dist/src/policy/audit.d.ts.map +1 -0
  177. package/dist/src/policy/audit.js +39 -0
  178. package/dist/src/policy/audit.js.map +1 -0
  179. package/dist/src/policy/engine.d.ts +35 -0
  180. package/dist/src/policy/engine.d.ts.map +1 -0
  181. package/dist/src/policy/engine.js +134 -0
  182. package/dist/src/policy/engine.js.map +1 -0
  183. package/dist/src/policy/scope.d.ts +27 -0
  184. package/dist/src/policy/scope.d.ts.map +1 -0
  185. package/dist/src/policy/scope.js +89 -0
  186. package/dist/src/policy/scope.js.map +1 -0
  187. package/dist/src/policy/types.d.ts +15 -0
  188. package/dist/src/policy/types.d.ts.map +1 -0
  189. package/dist/src/policy/types.js +2 -0
  190. package/dist/src/policy/types.js.map +1 -0
  191. package/dist/src/self-extend/generator.d.ts +27 -0
  192. package/dist/src/self-extend/generator.d.ts.map +1 -0
  193. package/dist/src/self-extend/generator.js +107 -0
  194. package/dist/src/self-extend/generator.js.map +1 -0
  195. package/dist/src/self-extend/publisher.d.ts +5 -0
  196. package/dist/src/self-extend/publisher.d.ts.map +1 -0
  197. package/dist/src/self-extend/publisher.js +40 -0
  198. package/dist/src/self-extend/publisher.js.map +1 -0
  199. package/dist/src/self-extend/sandbox.d.ts +10 -0
  200. package/dist/src/self-extend/sandbox.d.ts.map +1 -0
  201. package/dist/src/self-extend/sandbox.js +22 -0
  202. package/dist/src/self-extend/sandbox.js.map +1 -0
  203. package/dist/src/skills/hub/lockfile.d.ts +15 -0
  204. package/dist/src/skills/hub/lockfile.d.ts.map +1 -0
  205. package/dist/src/skills/hub/lockfile.js +13 -0
  206. package/dist/src/skills/hub/lockfile.js.map +1 -0
  207. package/dist/src/skills/hub/publisher.d.ts +7 -0
  208. package/dist/src/skills/hub/publisher.d.ts.map +1 -0
  209. package/dist/src/skills/hub/publisher.js +10 -0
  210. package/dist/src/skills/hub/publisher.js.map +1 -0
  211. package/dist/src/skills/hub/registry.d.ts +16 -0
  212. package/dist/src/skills/hub/registry.d.ts.map +1 -0
  213. package/dist/src/skills/hub/registry.js +24 -0
  214. package/dist/src/skills/hub/registry.js.map +1 -0
  215. package/dist/src/skills/index.d.ts +12 -0
  216. package/dist/src/skills/index.d.ts.map +1 -0
  217. package/dist/src/skills/index.js +82 -0
  218. package/dist/src/skills/index.js.map +1 -0
  219. package/dist/src/skills/lifecycle.d.ts +19 -0
  220. package/dist/src/skills/lifecycle.d.ts.map +1 -0
  221. package/dist/src/skills/lifecycle.js +48 -0
  222. package/dist/src/skills/lifecycle.js.map +1 -0
  223. package/dist/src/skills/loader.d.ts +43 -0
  224. package/dist/src/skills/loader.d.ts.map +1 -0
  225. package/dist/src/skills/loader.js +142 -0
  226. package/dist/src/skills/loader.js.map +1 -0
  227. package/dist/src/skills/runner.d.ts +43 -0
  228. package/dist/src/skills/runner.d.ts.map +1 -0
  229. package/dist/src/skills/runner.js +198 -0
  230. package/dist/src/skills/runner.js.map +1 -0
  231. package/dist/src/skills/types.d.ts +150 -0
  232. package/dist/src/skills/types.d.ts.map +1 -0
  233. package/dist/src/skills/types.js +31 -0
  234. package/dist/src/skills/types.js.map +1 -0
  235. package/dist/src/skills/validator.d.ts +19 -0
  236. package/dist/src/skills/validator.d.ts.map +1 -0
  237. package/dist/src/skills/validator.js +92 -0
  238. package/dist/src/skills/validator.js.map +1 -0
  239. package/dist/src/tools/core/cmd.d.ts +24 -0
  240. package/dist/src/tools/core/cmd.d.ts.map +1 -0
  241. package/dist/src/tools/core/cmd.js +55 -0
  242. package/dist/src/tools/core/cmd.js.map +1 -0
  243. package/dist/src/tools/core/fs.d.ts +76 -0
  244. package/dist/src/tools/core/fs.d.ts.map +1 -0
  245. package/dist/src/tools/core/fs.js +173 -0
  246. package/dist/src/tools/core/fs.js.map +1 -0
  247. package/dist/src/tools/core/git.d.ts +62 -0
  248. package/dist/src/tools/core/git.d.ts.map +1 -0
  249. package/dist/src/tools/core/git.js +138 -0
  250. package/dist/src/tools/core/git.js.map +1 -0
  251. package/dist/src/tools/core/project.d.ts +17 -0
  252. package/dist/src/tools/core/project.d.ts.map +1 -0
  253. package/dist/src/tools/core/project.js +104 -0
  254. package/dist/src/tools/core/project.js.map +1 -0
  255. package/dist/src/tools/plugins/loader.d.ts +13 -0
  256. package/dist/src/tools/plugins/loader.d.ts.map +1 -0
  257. package/dist/src/tools/plugins/loader.js +36 -0
  258. package/dist/src/tools/plugins/loader.js.map +1 -0
  259. package/dist/src/tools/registry.d.ts +38 -0
  260. package/dist/src/tools/registry.d.ts.map +1 -0
  261. package/dist/src/tools/registry.js +118 -0
  262. package/dist/src/tools/registry.js.map +1 -0
  263. package/dist/src/tools/types.d.ts +46 -0
  264. package/dist/src/tools/types.d.ts.map +1 -0
  265. package/dist/src/tools/types.js +10 -0
  266. package/dist/src/tools/types.js.map +1 -0
  267. package/dist/src/utils/hash.d.ts +13 -0
  268. package/dist/src/utils/hash.d.ts.map +1 -0
  269. package/dist/src/utils/hash.js +22 -0
  270. package/dist/src/utils/hash.js.map +1 -0
  271. package/dist/src/utils/paths.d.ts +45 -0
  272. package/dist/src/utils/paths.d.ts.map +1 -0
  273. package/dist/src/utils/paths.js +71 -0
  274. package/dist/src/utils/paths.js.map +1 -0
  275. package/dist/src/utils/schema.d.ts +16 -0
  276. package/dist/src/utils/schema.d.ts.map +1 -0
  277. package/dist/src/utils/schema.js +66 -0
  278. package/dist/src/utils/schema.js.map +1 -0
  279. package/package.json +77 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../src/engine/executor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import type { FileDiff } from './types.js';
2
+ /**
3
+ * Rollback tracker — captures file states and generates patches for undo
4
+ */
5
+ export declare class RollbackTracker {
6
+ private beforeStates;
7
+ private diffs;
8
+ /**
9
+ * Capture file state before modification
10
+ */
11
+ captureBeforeState(stepId: string, filePath: string, cwd: string): Promise<void>;
12
+ /**
13
+ * Capture file state after modification and generate diff
14
+ */
15
+ captureAfterState(stepId: string, filePath: string, cwd: string): Promise<void>;
16
+ /**
17
+ * Get all diffs captured during execution
18
+ */
19
+ getDiffs(): FileDiff[];
20
+ /**
21
+ * Rollback a specific step
22
+ */
23
+ rollbackStep(stepId: string): Promise<string[]>;
24
+ /**
25
+ * Rollback all steps in reverse order
26
+ */
27
+ rollbackAll(): Promise<string[]>;
28
+ /**
29
+ * Export all patches for manual rollback
30
+ */
31
+ exportPatches(): string;
32
+ /**
33
+ * Clear all tracked state
34
+ */
35
+ clear(): void;
36
+ }
37
+ //# sourceMappingURL=rollback.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rollback.d.ts","sourceRoot":"","sources":["../../../src/engine/rollback.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C;;GAEG;AACH,qBAAa,eAAe;IACxB,OAAO,CAAC,YAAY,CAA+C;IACnE,OAAO,CAAC,KAAK,CAAkB;IAE/B;;OAEG;IACG,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBtF;;OAEG;IACG,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBrF;;OAEG;IACH,QAAQ,IAAI,QAAQ,EAAE;IAItB;;OAEG;IACG,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAarD;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAYtC;;OAEG;IACH,aAAa,IAAI,MAAM;IAIvB;;OAEG;IACH,KAAK,IAAI,IAAI;CAIhB"}
@@ -0,0 +1,95 @@
1
+ import { readFile, writeFile, access } from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ import { createPatch } from 'diff';
4
+ /**
5
+ * Rollback tracker — captures file states and generates patches for undo
6
+ */
7
+ export class RollbackTracker {
8
+ beforeStates = new Map(); // stepId → (file → content)
9
+ diffs = [];
10
+ /**
11
+ * Capture file state before modification
12
+ */
13
+ async captureBeforeState(stepId, filePath, cwd) {
14
+ const absPath = path.resolve(cwd, filePath);
15
+ let content = '';
16
+ try {
17
+ await access(absPath);
18
+ content = await readFile(absPath, 'utf-8');
19
+ }
20
+ catch {
21
+ content = ''; // File doesn't exist yet
22
+ }
23
+ if (!this.beforeStates.has(stepId)) {
24
+ this.beforeStates.set(stepId, new Map());
25
+ }
26
+ this.beforeStates.get(stepId).set(absPath, content);
27
+ }
28
+ /**
29
+ * Capture file state after modification and generate diff
30
+ */
31
+ async captureAfterState(stepId, filePath, cwd) {
32
+ const absPath = path.resolve(cwd, filePath);
33
+ const beforeMap = this.beforeStates.get(stepId);
34
+ if (!beforeMap)
35
+ return;
36
+ const before = beforeMap.get(absPath) ?? '';
37
+ let after = '';
38
+ try {
39
+ after = await readFile(absPath, 'utf-8');
40
+ }
41
+ catch {
42
+ after = '';
43
+ }
44
+ if (before !== after) {
45
+ const patch = createPatch(absPath, before, after, 'before', 'after');
46
+ this.diffs.push({ file: absPath, before, after, patch });
47
+ }
48
+ }
49
+ /**
50
+ * Get all diffs captured during execution
51
+ */
52
+ getDiffs() {
53
+ return this.diffs;
54
+ }
55
+ /**
56
+ * Rollback a specific step
57
+ */
58
+ async rollbackStep(stepId) {
59
+ const beforeMap = this.beforeStates.get(stepId);
60
+ if (!beforeMap)
61
+ return [];
62
+ const restored = [];
63
+ for (const [filePath, content] of beforeMap) {
64
+ await writeFile(filePath, content, 'utf-8');
65
+ restored.push(filePath);
66
+ }
67
+ return restored;
68
+ }
69
+ /**
70
+ * Rollback all steps in reverse order
71
+ */
72
+ async rollbackAll() {
73
+ const allRestored = [];
74
+ const stepIds = Array.from(this.beforeStates.keys()).reverse();
75
+ for (const stepId of stepIds) {
76
+ const restored = await this.rollbackStep(stepId);
77
+ allRestored.push(...restored);
78
+ }
79
+ return allRestored;
80
+ }
81
+ /**
82
+ * Export all patches for manual rollback
83
+ */
84
+ exportPatches() {
85
+ return this.diffs.map((d) => d.patch).join('\n');
86
+ }
87
+ /**
88
+ * Clear all tracked state
89
+ */
90
+ clear() {
91
+ this.beforeStates.clear();
92
+ this.diffs.length = 0;
93
+ }
94
+ }
95
+ //# sourceMappingURL=rollback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rollback.js","sourceRoot":"","sources":["../../../src/engine/rollback.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import type { ToolResult, ExecutionContext } from '../tools/types.js';
2
+ /**
3
+ * Result of executing a single step
4
+ */
5
+ export interface StepResult {
6
+ success: boolean;
7
+ output?: unknown;
8
+ error?: string;
9
+ durationMs: number;
10
+ toolCalls?: {
11
+ tool: string;
12
+ input: unknown;
13
+ result: ToolResult;
14
+ }[];
15
+ diffs?: FileDiff[];
16
+ }
17
+ /**
18
+ * File diff captured during execution
19
+ */
20
+ export interface FileDiff {
21
+ file: string;
22
+ before: string;
23
+ after: string;
24
+ patch: string;
25
+ }
26
+ /**
27
+ * Execution state per step
28
+ */
29
+ export type StepState = 'pending' | 'precondition_check' | 'executing' | 'verifying' | 'retrying' | 'completed' | 'failed' | 'skipped';
30
+ export type { ExecutionContext, ToolResult };
31
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/engine/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAEtE;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,UAAU,CAAA;KAAE,EAAE,CAAC;IACnE,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,MAAM,SAAS,GACf,SAAS,GACT,oBAAoB,GACpB,WAAW,GACX,WAAW,GACX,UAAU,GACV,WAAW,GACX,QAAQ,GACR,SAAS,CAAC;AAGhB,YAAY,EAAE,gBAAgB,EAAE,UAAU,EAAE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/engine/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Deterministic verification helpers
3
+ */
4
+ export declare class VerificationEngine {
5
+ /**
6
+ * Verify that a file exists
7
+ */
8
+ fileExists(filePath: string, cwd: string): Promise<{
9
+ passed: boolean;
10
+ details: string;
11
+ }>;
12
+ /**
13
+ * Verify that a command exits successfully
14
+ */
15
+ commandExits(command: string, cwd: string, expectedCode?: number, timeout?: number): Promise<{
16
+ passed: boolean;
17
+ details: string;
18
+ }>;
19
+ /**
20
+ * Verify output contains expected string
21
+ */
22
+ outputContains(command: string, expected: string, cwd: string): Promise<{
23
+ passed: boolean;
24
+ details: string;
25
+ }>;
26
+ }
27
+ //# sourceMappingURL=verification.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verification.d.ts","sourceRoot":"","sources":["../../../src/engine/verification.ts"],"names":[],"mappings":"AAOA;;GAEG;AACH,qBAAa,kBAAkB;IAC3B;;OAEG;IACG,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAU9F;;OAEG;IACG,YAAY,CACd,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,YAAY,GAAE,MAAU,EACxB,OAAO,GAAE,MAAc,GACxB,OAAO,CAAC;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAqBhD;;OAEG;IACG,cAAc,CAChB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,GACZ,OAAO,CAAC;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAuBnD"}
@@ -0,0 +1,75 @@
1
+ import { access } from 'node:fs/promises';
2
+ import { execFile } from 'node:child_process';
3
+ import { promisify } from 'node:util';
4
+ import path from 'node:path';
5
+ const execFileAsync = promisify(execFile);
6
+ /**
7
+ * Deterministic verification helpers
8
+ */
9
+ export class VerificationEngine {
10
+ /**
11
+ * Verify that a file exists
12
+ */
13
+ async fileExists(filePath, cwd) {
14
+ const absPath = path.resolve(cwd, filePath);
15
+ try {
16
+ await access(absPath);
17
+ return { passed: true, details: `File exists: ${filePath}` };
18
+ }
19
+ catch {
20
+ return { passed: false, details: `File not found: ${filePath}` };
21
+ }
22
+ }
23
+ /**
24
+ * Verify that a command exits successfully
25
+ */
26
+ async commandExits(command, cwd, expectedCode = 0, timeout = 30000) {
27
+ try {
28
+ const parts = command.split(' ');
29
+ const { stdout } = await execFileAsync(parts[0], parts.slice(1), {
30
+ cwd,
31
+ timeout,
32
+ shell: true,
33
+ });
34
+ return {
35
+ passed: true,
36
+ details: `Command succeeded (exit 0)\nstdout: ${stdout.toString().substring(0, 500)}`,
37
+ };
38
+ }
39
+ catch (err) {
40
+ const error = err;
41
+ return {
42
+ passed: error.code === expectedCode,
43
+ details: `Command exited with code ${error.code ?? 'unknown'}: ${error.message ?? ''}`,
44
+ };
45
+ }
46
+ }
47
+ /**
48
+ * Verify output contains expected string
49
+ */
50
+ async outputContains(command, expected, cwd) {
51
+ try {
52
+ const parts = command.split(' ');
53
+ const { stdout } = await execFileAsync(parts[0], parts.slice(1), {
54
+ cwd,
55
+ timeout: 30000,
56
+ shell: true,
57
+ });
58
+ const output = stdout.toString();
59
+ const contains = output.includes(expected);
60
+ return {
61
+ passed: contains,
62
+ details: contains
63
+ ? `Output contains "${expected}"`
64
+ : `Output does not contain "${expected}"\nActual: ${output.substring(0, 300)}`,
65
+ };
66
+ }
67
+ catch (err) {
68
+ return {
69
+ passed: false,
70
+ details: `Command failed: ${err.message}`,
71
+ };
72
+ }
73
+ }
74
+ }
75
+ //# sourceMappingURL=verification.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verification.js","sourceRoot":"","sources":["../../../src/engine/verification.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ export { createCLI } from './cli/index.js';
2
+ export { ToolRegistry } from './tools/registry.js';
3
+ export { PolicyEngine } from './policy/engine.js';
4
+ export { SkillLoader } from './skills/loader.js';
5
+ export { SkillRunner } from './skills/runner.js';
6
+ export { PlanParser } from './plans/parser.js';
7
+ export { PlanRunner } from './plans/runner.js';
8
+ export { ExecutionEngine } from './engine/executor.js';
9
+ export { LLMRouter } from './llm/router.js';
10
+ export { AuditLogger } from './logging/audit-log.js';
11
+ export { ConfigLoader } from './config/loader.js';
12
+ export type { ToolDefinition, ToolResult } from './tools/types.js';
13
+ export type { SkillManifest } from './skills/types.js';
14
+ export type { Plan, PlanStep, Goal } from './plans/types.js';
15
+ export type { AgentConfig } from './config/schema.js';
16
+ export type { ExecutionContext, StepResult } from './engine/types.js';
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnE,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC7D,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,YAAY,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,13 @@
1
+ // Agent Runtime — Public API Surface
2
+ export { createCLI } from './cli/index.js';
3
+ export { ToolRegistry } from './tools/registry.js';
4
+ export { PolicyEngine } from './policy/engine.js';
5
+ export { SkillLoader } from './skills/loader.js';
6
+ export { SkillRunner } from './skills/runner.js';
7
+ export { PlanParser } from './plans/parser.js';
8
+ export { PlanRunner } from './plans/runner.js';
9
+ export { ExecutionEngine } from './engine/executor.js';
10
+ export { LLMRouter } from './llm/router.js';
11
+ export { AuditLogger } from './logging/audit-log.js';
12
+ export { ConfigLoader } from './config/loader.js';
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Get a cached response
3
+ */
4
+ export declare function getCachedResponse(key: string, ttl?: number): unknown | null;
5
+ /**
6
+ * Cache a response
7
+ */
8
+ export declare function setCachedResponse(key: string, response: unknown): void;
9
+ /**
10
+ * Clear the cache
11
+ */
12
+ export declare function clearCache(): void;
13
+ /**
14
+ * Generate a cache key from a request
15
+ */
16
+ export declare function generateCacheKey(messages: {
17
+ role: string;
18
+ content: string;
19
+ }[]): string;
20
+ //# sourceMappingURL=cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../src/llm/cache.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,GAAE,MAAoB,GAAG,OAAO,GAAG,IAAI,CAQxF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI,CAEtE;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,IAAI,CAEjC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,MAAM,CAUtF"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Prompt and response cache for LLM calls
3
+ */
4
+ const cache = new Map();
5
+ const DEFAULT_TTL = 60 * 60 * 1000; // 1 hour
6
+ /**
7
+ * Get a cached response
8
+ */
9
+ export function getCachedResponse(key, ttl = DEFAULT_TTL) {
10
+ const entry = cache.get(key);
11
+ if (!entry)
12
+ return null;
13
+ if (Date.now() - entry.timestamp > ttl) {
14
+ cache.delete(key);
15
+ return null;
16
+ }
17
+ return entry.response;
18
+ }
19
+ /**
20
+ * Cache a response
21
+ */
22
+ export function setCachedResponse(key, response) {
23
+ cache.set(key, { response, timestamp: Date.now() });
24
+ }
25
+ /**
26
+ * Clear the cache
27
+ */
28
+ export function clearCache() {
29
+ cache.clear();
30
+ }
31
+ /**
32
+ * Generate a cache key from a request
33
+ */
34
+ export function generateCacheKey(messages) {
35
+ const content = messages.map((m) => `${m.role}:${m.content}`).join('|');
36
+ // Simple hash
37
+ let hash = 0;
38
+ for (let i = 0; i < content.length; i++) {
39
+ const char = content.charCodeAt(i);
40
+ hash = ((hash << 5) - hash) + char;
41
+ hash = hash & hash; // Convert to 32bit integer
42
+ }
43
+ return `llm_${Math.abs(hash).toString(36)}`;
44
+ }
45
+ //# sourceMappingURL=cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../src/llm/cache.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,KAAK,GAAG,IAAI,GAAG,EAAoD,CAAC;AAC1E,MAAM,WAAW,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,SAAS;AAE7C;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAW,EAAE,MAAc,WAAW;IACpE,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,GAAG,GAAG,EAAE,CAAC;QACrC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAClB,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,OAAO,KAAK,CAAC,QAAQ,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAW,EAAE,QAAiB;IAC5D,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AACxD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU;IACtB,KAAK,CAAC,KAAK,EAAE,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAA6C;IAC1E,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxE,cAAc;IACd,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACnC,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;QACnC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,2BAA2B;IACnD,CAAC;IACD,OAAO,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { LLMProvider, LLMRequest, LLMResponse } from '../types.js';
2
+ import type { ModelProvider } from '../../config/schema.js';
3
+ /**
4
+ * Anthropic provider adapter
5
+ */
6
+ export declare class AnthropicProvider implements LLMProvider {
7
+ name: string;
8
+ private config;
9
+ constructor(config: ModelProvider);
10
+ chat(request: LLMRequest): Promise<LLMResponse>;
11
+ isAvailable(): Promise<boolean>;
12
+ }
13
+ //# sourceMappingURL=anthropic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../../../src/llm/providers/anthropic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAe,MAAM,aAAa,CAAC;AACrF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE5D;;GAEG;AACH,qBAAa,iBAAkB,YAAW,WAAW;IACjD,IAAI,SAAe;IACnB,OAAO,CAAC,MAAM,CAAgB;gBAElB,MAAM,EAAE,aAAa;IAI3B,IAAI,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;IA4D/C,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;CAIxC"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Anthropic provider adapter
3
+ */
4
+ export class AnthropicProvider {
5
+ name = 'anthropic';
6
+ config;
7
+ constructor(config) {
8
+ this.config = config;
9
+ }
10
+ async chat(request) {
11
+ const { default: Anthropic } = await import('@anthropic-ai/sdk');
12
+ const client = new Anthropic({
13
+ apiKey: this.config.apiKey ?? process.env['ANTHROPIC_API_KEY'],
14
+ });
15
+ // Separate system message
16
+ const systemMessage = request.messages.find((m) => m.role === 'system')?.content ?? '';
17
+ const messages = request.messages
18
+ .filter((m) => m.role !== 'system')
19
+ .map((m) => ({
20
+ role: m.role === 'tool' ? 'user' : m.role,
21
+ content: m.role === 'tool'
22
+ ? `[Tool Result]: ${m.content}`
23
+ : m.content,
24
+ }));
25
+ const tools = request.tools?.map((t) => ({
26
+ name: t.name,
27
+ description: t.description,
28
+ input_schema: { type: 'object', ...t.inputSchema },
29
+ }));
30
+ const response = await client.messages.create({
31
+ model: this.config.model,
32
+ system: systemMessage,
33
+ messages,
34
+ tools: tools && tools.length > 0 ? tools : undefined,
35
+ max_tokens: request.maxTokens ?? this.config.maxTokens,
36
+ temperature: request.temperature ?? this.config.temperature,
37
+ });
38
+ let content = '';
39
+ const toolCalls = [];
40
+ for (const block of response.content) {
41
+ if (block.type === 'text') {
42
+ content += block.text;
43
+ }
44
+ else if (block.type === 'tool_use') {
45
+ toolCalls.push({
46
+ id: block.id,
47
+ name: block.name,
48
+ args: block.input,
49
+ });
50
+ }
51
+ }
52
+ return {
53
+ content,
54
+ toolCalls: toolCalls.length > 0 ? toolCalls : undefined,
55
+ usage: {
56
+ promptTokens: response.usage.input_tokens,
57
+ completionTokens: response.usage.output_tokens,
58
+ totalTokens: response.usage.input_tokens + response.usage.output_tokens,
59
+ },
60
+ provider: 'anthropic',
61
+ model: this.config.model,
62
+ };
63
+ }
64
+ async isAvailable() {
65
+ const key = this.config.apiKey ?? process.env['ANTHROPIC_API_KEY'];
66
+ return !!key;
67
+ }
68
+ }
69
+ //# sourceMappingURL=anthropic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../../../src/llm/providers/anthropic.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { LLMProvider, LLMRequest, LLMResponse } from '../types.js';
2
+ import type { ModelProvider } from '../../config/schema.js';
3
+ /**
4
+ * Azure OpenAI provider adapter
5
+ * Uses the OpenAI SDK with Azure-specific configuration (deployment, API version, base URL)
6
+ */
7
+ export declare class AzureOpenAIProvider implements LLMProvider {
8
+ name: string;
9
+ private config;
10
+ constructor(config: ModelProvider);
11
+ chat(request: LLMRequest): Promise<LLMResponse>;
12
+ isAvailable(): Promise<boolean>;
13
+ }
14
+ //# sourceMappingURL=azure.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"azure.d.ts","sourceRoot":"","sources":["../../../../src/llm/providers/azure.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAe,MAAM,aAAa,CAAC;AACrF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE5D;;;GAGG;AACH,qBAAa,mBAAoB,YAAW,WAAW;IACnD,IAAI,SAAW;IACf,OAAO,CAAC,MAAM,CAAgB;gBAElB,MAAM,EAAE,aAAa;IAI3B,IAAI,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;IAkG/C,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;CAKxC"}
@@ -0,0 +1,98 @@
1
+ /**
2
+ * Azure OpenAI provider adapter
3
+ * Uses the OpenAI SDK with Azure-specific configuration (deployment, API version, base URL)
4
+ */
5
+ export class AzureOpenAIProvider {
6
+ name = 'azure';
7
+ config;
8
+ constructor(config) {
9
+ this.config = config;
10
+ }
11
+ async chat(request) {
12
+ const openaiModule = await import('openai');
13
+ const AzureOpenAI = openaiModule.AzureOpenAI;
14
+ const apiKey = this.config.apiKey ?? process.env['AZURE_API_KEY'];
15
+ const endpoint = this.config.baseUrl ?? process.env['AZURE_API_BASE'] ?? '';
16
+ const apiVersion = this.config.apiVersion ?? process.env['AZURE_API_VERSION'] ?? '2024-02-15-preview';
17
+ const deploymentName = this.config.deploymentName ?? process.env['AZURE_DEPLOYMENT_NAME'] ?? this.config.model;
18
+ const client = new AzureOpenAI({
19
+ apiKey,
20
+ endpoint,
21
+ apiVersion,
22
+ deployment: deploymentName,
23
+ });
24
+ const tools = request.tools?.map((t) => ({
25
+ type: 'function',
26
+ function: {
27
+ name: t.name,
28
+ description: t.description,
29
+ parameters: t.inputSchema,
30
+ },
31
+ }));
32
+ const messages = request.messages.map((m) => {
33
+ if (m.role === 'tool') {
34
+ return {
35
+ role: 'tool',
36
+ content: m.content,
37
+ tool_call_id: m.toolCallId ?? '',
38
+ };
39
+ }
40
+ const msg = {
41
+ role: m.role,
42
+ content: m.content,
43
+ };
44
+ if (m.toolCalls && m.toolCalls.length > 0) {
45
+ msg.tool_calls = m.toolCalls.map((tc) => ({
46
+ id: tc.id,
47
+ type: 'function',
48
+ function: {
49
+ name: tc.name,
50
+ arguments: JSON.stringify(tc.args),
51
+ },
52
+ }));
53
+ }
54
+ return msg;
55
+ });
56
+ const createParams = {
57
+ model: deploymentName,
58
+ messages,
59
+ tools: tools && tools.length > 0 ? tools : undefined,
60
+ max_completion_tokens: request.maxTokens ?? this.config.maxTokens,
61
+ };
62
+ // Only include temperature if explicitly set in the request (some models reject non-default values)
63
+ if (request.temperature !== undefined) {
64
+ createParams.temperature = request.temperature;
65
+ }
66
+ const response = await client.chat.completions.create(createParams);
67
+ const choice = response.choices[0];
68
+ const toolCalls = [];
69
+ if (choice.message.tool_calls) {
70
+ for (const tc of choice.message.tool_calls) {
71
+ toolCalls.push({
72
+ id: tc.id,
73
+ name: tc.function.name,
74
+ args: JSON.parse(tc.function.arguments),
75
+ });
76
+ }
77
+ }
78
+ return {
79
+ content: choice.message.content ?? '',
80
+ toolCalls: toolCalls.length > 0 ? toolCalls : undefined,
81
+ usage: response.usage
82
+ ? {
83
+ promptTokens: response.usage.prompt_tokens,
84
+ completionTokens: response.usage.completion_tokens,
85
+ totalTokens: response.usage.total_tokens,
86
+ }
87
+ : undefined,
88
+ provider: 'azure',
89
+ model: deploymentName,
90
+ };
91
+ }
92
+ async isAvailable() {
93
+ const key = this.config.apiKey ?? process.env['AZURE_API_KEY'];
94
+ const base = this.config.baseUrl ?? process.env['AZURE_API_BASE'];
95
+ return !!(key && base);
96
+ }
97
+ }
98
+ //# sourceMappingURL=azure.js.map