@sweny-ai/providers 0.2.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 (283) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +260 -0
  3. package/dist/access/allow-all.d.ts +3 -0
  4. package/dist/access/allow-all.d.ts.map +1 -0
  5. package/dist/access/allow-all.js +19 -0
  6. package/dist/access/allow-all.js.map +1 -0
  7. package/dist/access/index.d.ts +5 -0
  8. package/dist/access/index.d.ts.map +1 -0
  9. package/dist/access/index.js +4 -0
  10. package/dist/access/index.js.map +1 -0
  11. package/dist/access/role-based.d.ts +8 -0
  12. package/dist/access/role-based.d.ts.map +1 -0
  13. package/dist/access/role-based.js +42 -0
  14. package/dist/access/role-based.js.map +1 -0
  15. package/dist/access/types.d.ts +41 -0
  16. package/dist/access/types.d.ts.map +1 -0
  17. package/dist/access/types.js +20 -0
  18. package/dist/access/types.js.map +1 -0
  19. package/dist/agent-tool/factory.d.ts +4 -0
  20. package/dist/agent-tool/factory.d.ts.map +1 -0
  21. package/dist/agent-tool/factory.js +4 -0
  22. package/dist/agent-tool/factory.js.map +1 -0
  23. package/dist/agent-tool/index.d.ts +3 -0
  24. package/dist/agent-tool/index.d.ts.map +1 -0
  25. package/dist/agent-tool/index.js +2 -0
  26. package/dist/agent-tool/index.js.map +1 -0
  27. package/dist/agent-tool/types.d.ts +15 -0
  28. package/dist/agent-tool/types.d.ts.map +1 -0
  29. package/dist/agent-tool/types.js +2 -0
  30. package/dist/agent-tool/types.js.map +1 -0
  31. package/dist/auth/api-key.d.ts +6 -0
  32. package/dist/auth/api-key.d.ts.map +1 -0
  33. package/dist/auth/api-key.js +36 -0
  34. package/dist/auth/api-key.js.map +1 -0
  35. package/dist/auth/index.d.ts +4 -0
  36. package/dist/auth/index.d.ts.map +1 -0
  37. package/dist/auth/index.js +3 -0
  38. package/dist/auth/index.js.map +1 -0
  39. package/dist/auth/no-auth.d.ts +3 -0
  40. package/dist/auth/no-auth.d.ts.map +1 -0
  41. package/dist/auth/no-auth.js +21 -0
  42. package/dist/auth/no-auth.js.map +1 -0
  43. package/dist/auth/types.d.ts +58 -0
  44. package/dist/auth/types.d.ts.map +1 -0
  45. package/dist/auth/types.js +2 -0
  46. package/dist/auth/types.js.map +1 -0
  47. package/dist/coding-agent/claude-code.d.ts +10 -0
  48. package/dist/coding-agent/claude-code.d.ts.map +1 -0
  49. package/dist/coding-agent/claude-code.js +38 -0
  50. package/dist/coding-agent/claude-code.js.map +1 -0
  51. package/dist/coding-agent/google-gemini.d.ts +10 -0
  52. package/dist/coding-agent/google-gemini.d.ts.map +1 -0
  53. package/dist/coding-agent/google-gemini.js +29 -0
  54. package/dist/coding-agent/google-gemini.js.map +1 -0
  55. package/dist/coding-agent/index.d.ts +8 -0
  56. package/dist/coding-agent/index.d.ts.map +1 -0
  57. package/dist/coding-agent/index.js +4 -0
  58. package/dist/coding-agent/index.js.map +1 -0
  59. package/dist/coding-agent/openai-codex.d.ts +10 -0
  60. package/dist/coding-agent/openai-codex.d.ts.map +1 -0
  61. package/dist/coding-agent/openai-codex.js +29 -0
  62. package/dist/coding-agent/openai-codex.js.map +1 -0
  63. package/dist/coding-agent/shared.d.ts +10 -0
  64. package/dist/coding-agent/shared.d.ts.map +1 -0
  65. package/dist/coding-agent/shared.js +44 -0
  66. package/dist/coding-agent/shared.js.map +1 -0
  67. package/dist/coding-agent/types.d.ts +10 -0
  68. package/dist/coding-agent/types.d.ts.map +1 -0
  69. package/dist/coding-agent/types.js +2 -0
  70. package/dist/coding-agent/types.js.map +1 -0
  71. package/dist/credential-vault/aws-secrets-manager.d.ts +19 -0
  72. package/dist/credential-vault/aws-secrets-manager.d.ts.map +1 -0
  73. package/dist/credential-vault/aws-secrets-manager.js +96 -0
  74. package/dist/credential-vault/aws-secrets-manager.js.map +1 -0
  75. package/dist/credential-vault/env-vault.d.ts +15 -0
  76. package/dist/credential-vault/env-vault.d.ts.map +1 -0
  77. package/dist/credential-vault/env-vault.js +25 -0
  78. package/dist/credential-vault/env-vault.js.map +1 -0
  79. package/dist/credential-vault/index.d.ts +6 -0
  80. package/dist/credential-vault/index.d.ts.map +1 -0
  81. package/dist/credential-vault/index.js +3 -0
  82. package/dist/credential-vault/index.js.map +1 -0
  83. package/dist/credential-vault/types.d.ts +30 -0
  84. package/dist/credential-vault/types.d.ts.map +1 -0
  85. package/dist/credential-vault/types.js +2 -0
  86. package/dist/credential-vault/types.js.map +1 -0
  87. package/dist/errors.d.ts +18 -0
  88. package/dist/errors.d.ts.map +1 -0
  89. package/dist/errors.js +35 -0
  90. package/dist/errors.js.map +1 -0
  91. package/dist/incident/index.d.ts +4 -0
  92. package/dist/incident/index.d.ts.map +1 -0
  93. package/dist/incident/index.js +3 -0
  94. package/dist/incident/index.js.map +1 -0
  95. package/dist/incident/opsgenie.d.ts +19 -0
  96. package/dist/incident/opsgenie.d.ts.map +1 -0
  97. package/dist/incident/opsgenie.js +104 -0
  98. package/dist/incident/opsgenie.js.map +1 -0
  99. package/dist/incident/pagerduty.d.ts +19 -0
  100. package/dist/incident/pagerduty.d.ts.map +1 -0
  101. package/dist/incident/pagerduty.js +115 -0
  102. package/dist/incident/pagerduty.js.map +1 -0
  103. package/dist/incident/types.d.ts +67 -0
  104. package/dist/incident/types.d.ts.map +1 -0
  105. package/dist/incident/types.js +2 -0
  106. package/dist/incident/types.js.map +1 -0
  107. package/dist/index.d.ts +28 -0
  108. package/dist/index.d.ts.map +1 -0
  109. package/dist/index.js +16 -0
  110. package/dist/index.js.map +1 -0
  111. package/dist/issue-tracking/github-issues.d.ts +22 -0
  112. package/dist/issue-tracking/github-issues.d.ts.map +1 -0
  113. package/dist/issue-tracking/github-issues.js +136 -0
  114. package/dist/issue-tracking/github-issues.js.map +1 -0
  115. package/dist/issue-tracking/index.d.ts +6 -0
  116. package/dist/issue-tracking/index.d.ts.map +1 -0
  117. package/dist/issue-tracking/index.js +5 -0
  118. package/dist/issue-tracking/index.js.map +1 -0
  119. package/dist/issue-tracking/jira.d.ts +22 -0
  120. package/dist/issue-tracking/jira.d.ts.map +1 -0
  121. package/dist/issue-tracking/jira.js +225 -0
  122. package/dist/issue-tracking/jira.js.map +1 -0
  123. package/dist/issue-tracking/linear.d.ts +16 -0
  124. package/dist/issue-tracking/linear.d.ts.map +1 -0
  125. package/dist/issue-tracking/linear.js +311 -0
  126. package/dist/issue-tracking/linear.js.map +1 -0
  127. package/dist/issue-tracking/types.d.ts +163 -0
  128. package/dist/issue-tracking/types.d.ts.map +1 -0
  129. package/dist/issue-tracking/types.js +28 -0
  130. package/dist/issue-tracking/types.js.map +1 -0
  131. package/dist/logger.d.ts +8 -0
  132. package/dist/logger.d.ts.map +1 -0
  133. package/dist/logger.js +7 -0
  134. package/dist/logger.js.map +1 -0
  135. package/dist/messaging/index.d.ts +6 -0
  136. package/dist/messaging/index.d.ts.map +1 -0
  137. package/dist/messaging/index.js +3 -0
  138. package/dist/messaging/index.js.map +1 -0
  139. package/dist/messaging/slack.d.ts +16 -0
  140. package/dist/messaging/slack.d.ts.map +1 -0
  141. package/dist/messaging/slack.js +41 -0
  142. package/dist/messaging/slack.js.map +1 -0
  143. package/dist/messaging/teams.d.ts +22 -0
  144. package/dist/messaging/teams.d.ts.map +1 -0
  145. package/dist/messaging/teams.js +125 -0
  146. package/dist/messaging/teams.js.map +1 -0
  147. package/dist/messaging/types.d.ts +30 -0
  148. package/dist/messaging/types.d.ts.map +1 -0
  149. package/dist/messaging/types.js +2 -0
  150. package/dist/messaging/types.js.map +1 -0
  151. package/dist/notification/discord-webhook.d.ts +16 -0
  152. package/dist/notification/discord-webhook.d.ts.map +1 -0
  153. package/dist/notification/discord-webhook.js +104 -0
  154. package/dist/notification/discord-webhook.js.map +1 -0
  155. package/dist/notification/email.d.ts +22 -0
  156. package/dist/notification/email.d.ts.map +1 -0
  157. package/dist/notification/email.js +127 -0
  158. package/dist/notification/email.js.map +1 -0
  159. package/dist/notification/github-summary.d.ts +13 -0
  160. package/dist/notification/github-summary.d.ts.map +1 -0
  161. package/dist/notification/github-summary.js +67 -0
  162. package/dist/notification/github-summary.js.map +1 -0
  163. package/dist/notification/index.d.ts +8 -0
  164. package/dist/notification/index.d.ts.map +1 -0
  165. package/dist/notification/index.js +7 -0
  166. package/dist/notification/index.js.map +1 -0
  167. package/dist/notification/slack-webhook.d.ts +16 -0
  168. package/dist/notification/slack-webhook.d.ts.map +1 -0
  169. package/dist/notification/slack-webhook.js +123 -0
  170. package/dist/notification/slack-webhook.js.map +1 -0
  171. package/dist/notification/teams-webhook.d.ts +16 -0
  172. package/dist/notification/teams-webhook.d.ts.map +1 -0
  173. package/dist/notification/teams-webhook.js +125 -0
  174. package/dist/notification/teams-webhook.js.map +1 -0
  175. package/dist/notification/types.d.ts +47 -0
  176. package/dist/notification/types.d.ts.map +1 -0
  177. package/dist/notification/types.js +2 -0
  178. package/dist/notification/types.js.map +1 -0
  179. package/dist/notification/webhook.d.ts +28 -0
  180. package/dist/notification/webhook.d.ts.map +1 -0
  181. package/dist/notification/webhook.js +64 -0
  182. package/dist/notification/webhook.js.map +1 -0
  183. package/dist/observability/cloudwatch.d.ts +19 -0
  184. package/dist/observability/cloudwatch.d.ts.map +1 -0
  185. package/dist/observability/cloudwatch.js +182 -0
  186. package/dist/observability/cloudwatch.js.map +1 -0
  187. package/dist/observability/datadog.d.ts +22 -0
  188. package/dist/observability/datadog.d.ts.map +1 -0
  189. package/dist/observability/datadog.js +139 -0
  190. package/dist/observability/datadog.js.map +1 -0
  191. package/dist/observability/elastic.d.ts +42 -0
  192. package/dist/observability/elastic.d.ts.map +1 -0
  193. package/dist/observability/elastic.js +244 -0
  194. package/dist/observability/elastic.js.map +1 -0
  195. package/dist/observability/file.d.ts +16 -0
  196. package/dist/observability/file.d.ts.map +1 -0
  197. package/dist/observability/file.js +92 -0
  198. package/dist/observability/file.js.map +1 -0
  199. package/dist/observability/index.d.ts +10 -0
  200. package/dist/observability/index.d.ts.map +1 -0
  201. package/dist/observability/index.js +9 -0
  202. package/dist/observability/index.js.map +1 -0
  203. package/dist/observability/loki.d.ts +22 -0
  204. package/dist/observability/loki.d.ts.map +1 -0
  205. package/dist/observability/loki.js +206 -0
  206. package/dist/observability/loki.js.map +1 -0
  207. package/dist/observability/newrelic.d.ts +22 -0
  208. package/dist/observability/newrelic.d.ts.map +1 -0
  209. package/dist/observability/newrelic.js +147 -0
  210. package/dist/observability/newrelic.js.map +1 -0
  211. package/dist/observability/sentry.d.ts +25 -0
  212. package/dist/observability/sentry.d.ts.map +1 -0
  213. package/dist/observability/sentry.js +151 -0
  214. package/dist/observability/sentry.js.map +1 -0
  215. package/dist/observability/splunk.d.ts +22 -0
  216. package/dist/observability/splunk.d.ts.map +1 -0
  217. package/dist/observability/splunk.js +178 -0
  218. package/dist/observability/splunk.js.map +1 -0
  219. package/dist/observability/types.d.ts +54 -0
  220. package/dist/observability/types.d.ts.map +1 -0
  221. package/dist/observability/types.js +2 -0
  222. package/dist/observability/types.js.map +1 -0
  223. package/dist/source-control/github.d.ts +11 -0
  224. package/dist/source-control/github.d.ts.map +1 -0
  225. package/dist/source-control/github.js +162 -0
  226. package/dist/source-control/github.js.map +1 -0
  227. package/dist/source-control/gitlab.d.ts +25 -0
  228. package/dist/source-control/gitlab.d.ts.map +1 -0
  229. package/dist/source-control/gitlab.js +224 -0
  230. package/dist/source-control/gitlab.js.map +1 -0
  231. package/dist/source-control/index.d.ts +6 -0
  232. package/dist/source-control/index.d.ts.map +1 -0
  233. package/dist/source-control/index.js +3 -0
  234. package/dist/source-control/index.js.map +1 -0
  235. package/dist/source-control/types.d.ts +115 -0
  236. package/dist/source-control/types.d.ts.map +1 -0
  237. package/dist/source-control/types.js +2 -0
  238. package/dist/source-control/types.js.map +1 -0
  239. package/dist/storage/csi.d.ts +36 -0
  240. package/dist/storage/csi.d.ts.map +1 -0
  241. package/dist/storage/csi.js +39 -0
  242. package/dist/storage/csi.js.map +1 -0
  243. package/dist/storage/fs.d.ts +5 -0
  244. package/dist/storage/fs.d.ts.map +1 -0
  245. package/dist/storage/fs.js +11 -0
  246. package/dist/storage/fs.js.map +1 -0
  247. package/dist/storage/index.d.ts +13 -0
  248. package/dist/storage/index.d.ts.map +1 -0
  249. package/dist/storage/index.js +14 -0
  250. package/dist/storage/index.js.map +1 -0
  251. package/dist/storage/memory/fs.d.ts +15 -0
  252. package/dist/storage/memory/fs.d.ts.map +1 -0
  253. package/dist/storage/memory/fs.js +65 -0
  254. package/dist/storage/memory/fs.js.map +1 -0
  255. package/dist/storage/memory/s3.d.ts +17 -0
  256. package/dist/storage/memory/s3.d.ts.map +1 -0
  257. package/dist/storage/memory/s3.js +77 -0
  258. package/dist/storage/memory/s3.js.map +1 -0
  259. package/dist/storage/s3.d.ts +7 -0
  260. package/dist/storage/s3.d.ts.map +1 -0
  261. package/dist/storage/s3.js +12 -0
  262. package/dist/storage/s3.js.map +1 -0
  263. package/dist/storage/session/fs.d.ts +16 -0
  264. package/dist/storage/session/fs.d.ts.map +1 -0
  265. package/dist/storage/session/fs.js +81 -0
  266. package/dist/storage/session/fs.js.map +1 -0
  267. package/dist/storage/session/s3.d.ts +18 -0
  268. package/dist/storage/session/s3.d.ts.map +1 -0
  269. package/dist/storage/session/s3.js +121 -0
  270. package/dist/storage/session/s3.js.map +1 -0
  271. package/dist/storage/types.d.ts +206 -0
  272. package/dist/storage/types.d.ts.map +1 -0
  273. package/dist/storage/types.js +10 -0
  274. package/dist/storage/types.js.map +1 -0
  275. package/dist/storage/workspace/fs.d.ts +18 -0
  276. package/dist/storage/workspace/fs.d.ts.map +1 -0
  277. package/dist/storage/workspace/fs.js +153 -0
  278. package/dist/storage/workspace/fs.js.map +1 -0
  279. package/dist/storage/workspace/s3.d.ts +20 -0
  280. package/dist/storage/workspace/s3.d.ts.map +1 -0
  281. package/dist/storage/workspace/s3.js +180 -0
  282. package/dist/storage/workspace/s3.js.map +1 -0
  283. package/package.json +137 -0
@@ -0,0 +1,58 @@
1
+ /** Represents an authenticated user's identity. */
2
+ export interface UserIdentity {
3
+ /** Unique user identifier. */
4
+ userId: string;
5
+ /** Tenant identifier for multi-tenant deployments. */
6
+ tenantId?: string;
7
+ /** Human-readable display name. */
8
+ displayName: string;
9
+ /** User's email address. */
10
+ email?: string;
11
+ /** Roles assigned to the user (e.g., "admin", "viewer"). */
12
+ roles: string[];
13
+ /** Additional provider-specific metadata. */
14
+ metadata: Record<string, unknown>;
15
+ }
16
+ /** Describes a single field in a login form. */
17
+ export interface LoginField {
18
+ /** Field key used in the credentials record. */
19
+ key: string;
20
+ /** Human-readable label shown in the UI. */
21
+ label: string;
22
+ /** HTML input type for the field. */
23
+ type: "text" | "email" | "password";
24
+ /** Placeholder text for the input field. */
25
+ placeholder?: string;
26
+ }
27
+ /** Provider interface for authentication and session management. */
28
+ export interface AuthProvider {
29
+ /** Human-readable name of the auth provider (e.g., "Google", "GitHub"). */
30
+ readonly displayName: string;
31
+ /** Login form field definitions; omit if the provider uses external OAuth. */
32
+ readonly loginFields?: LoginField[];
33
+ /**
34
+ * Authenticate a user by their ID (e.g., from a session token).
35
+ * @param userId - User identifier to authenticate.
36
+ * @returns The user's identity, or null if authentication fails.
37
+ */
38
+ authenticate(userId: string): Promise<UserIdentity | null>;
39
+ /**
40
+ * Log in a user with explicit credentials.
41
+ * @param userId - User identifier.
42
+ * @param credentials - Key-value credential pairs matching loginFields.
43
+ * @returns The authenticated user's identity.
44
+ */
45
+ login?(userId: string, credentials: Record<string, string>): Promise<UserIdentity>;
46
+ /**
47
+ * Check whether a user has a valid active session.
48
+ * @param userId - User identifier.
49
+ * @returns True if the session is valid.
50
+ */
51
+ hasValidSession(userId: string): Promise<boolean>;
52
+ /**
53
+ * Clear / invalidate a user's session.
54
+ * @param userId - User identifier.
55
+ */
56
+ clearSession(userId: string): Promise<void>;
57
+ }
58
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/auth/types.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,MAAM,WAAW,YAAY;IAC3B,8BAA8B;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,sDAAsD;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mCAAmC;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,4BAA4B;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4DAA4D;IAC5D,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,gDAAgD;AAChD,MAAM,WAAW,UAAU;IACzB,gDAAgD;IAChD,GAAG,EAAE,MAAM,CAAC;IACZ,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,qCAAqC;IACrC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,UAAU,CAAC;IACpC,4CAA4C;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,oEAAoE;AACpE,MAAM,WAAW,YAAY;IAC3B,2EAA2E;IAC3E,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,8EAA8E;IAC9E,QAAQ,CAAC,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAEpC;;;;OAIG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IAE3D;;;;;OAKG;IACH,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAEnF;;;;OAIG;IACH,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAElD;;;OAGG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7C"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/auth/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ import type { CodingAgent } from "./types.js";
2
+ import type { Logger } from "../logger.js";
3
+ export interface ClaudeCodeConfig {
4
+ cliFlags?: string[];
5
+ logger?: Logger;
6
+ /** Suppress agent stdout; forward stderr through logger */
7
+ quiet?: boolean;
8
+ }
9
+ export declare function claudeCode(config?: ClaudeCodeConfig): CodingAgent;
10
+ //# sourceMappingURL=claude-code.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-code.d.ts","sourceRoot":"","sources":["../../src/coding-agent/claude-code.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAyB,MAAM,YAAY,CAAC;AACrE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAI3C,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2DAA2D;IAC3D,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAgB,UAAU,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,WAAW,CAsCjE"}
@@ -0,0 +1,38 @@
1
+ import { consoleLogger } from "../logger.js";
2
+ import { execCommand, isCliInstalled } from "./shared.js";
3
+ export function claudeCode(config) {
4
+ const log = config?.logger ?? consoleLogger;
5
+ const extraFlags = config?.cliFlags ?? [];
6
+ const quiet = config?.quiet ?? false;
7
+ return {
8
+ async install() {
9
+ if (isCliInstalled("claude")) {
10
+ log.info("Claude Code CLI already installed, skipping");
11
+ return;
12
+ }
13
+ log.info("Installing Claude Code CLI...");
14
+ await execCommand("npm", ["install", "-g", "@anthropic-ai/claude-code"], { quiet });
15
+ log.info("Claude Code CLI installed");
16
+ },
17
+ async run(opts) {
18
+ log.info("Running Claude Code agent...");
19
+ const args = [
20
+ "-p",
21
+ opts.prompt,
22
+ "--allowedTools",
23
+ "*",
24
+ "--dangerously-skip-permissions",
25
+ "--max-turns",
26
+ String(opts.maxTurns),
27
+ ...extraFlags,
28
+ ];
29
+ return await execCommand("claude", args, {
30
+ env: { ...process.env, ...opts.env },
31
+ ignoreReturnCode: true,
32
+ quiet,
33
+ onStderr: quiet ? (line) => log.debug(line) : undefined,
34
+ });
35
+ },
36
+ };
37
+ }
38
+ //# sourceMappingURL=claude-code.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../../src/coding-agent/claude-code.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAS1D,MAAM,UAAU,UAAU,CAAC,MAAyB;IAClD,MAAM,GAAG,GAAG,MAAM,EAAE,MAAM,IAAI,aAAa,CAAC;IAC5C,MAAM,UAAU,GAAG,MAAM,EAAE,QAAQ,IAAI,EAAE,CAAC;IAC1C,MAAM,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,KAAK,CAAC;IAErC,OAAO;QACL,KAAK,CAAC,OAAO;YACX,IAAI,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC7B,GAAG,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;gBACxD,OAAO;YACT,CAAC;YACD,GAAG,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;YAC1C,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,2BAA2B,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YACpF,GAAG,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QACxC,CAAC;QAED,KAAK,CAAC,GAAG,CAAC,IAA2B;YACnC,GAAG,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;YAEzC,MAAM,IAAI,GAAG;gBACX,IAAI;gBACJ,IAAI,CAAC,MAAM;gBACX,gBAAgB;gBAChB,GAAG;gBACH,gCAAgC;gBAChC,aAAa;gBACb,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;gBACrB,GAAG,UAAU;aACd,CAAC;YAEF,OAAO,MAAM,WAAW,CAAC,QAAQ,EAAE,IAAI,EAAE;gBACvC,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,EAA4B;gBAC9D,gBAAgB,EAAE,IAAI;gBACtB,KAAK;gBACL,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;aACxD,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { CodingAgent } from "./types.js";
2
+ import type { Logger } from "../logger.js";
3
+ export interface GoogleGeminiConfig {
4
+ cliFlags?: string[];
5
+ logger?: Logger;
6
+ /** Suppress agent stdout; forward stderr through logger */
7
+ quiet?: boolean;
8
+ }
9
+ export declare function googleGemini(config?: GoogleGeminiConfig): CodingAgent;
10
+ //# sourceMappingURL=google-gemini.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"google-gemini.d.ts","sourceRoot":"","sources":["../../src/coding-agent/google-gemini.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAyB,MAAM,YAAY,CAAC;AACrE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAI3C,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2DAA2D;IAC3D,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAgB,YAAY,CAAC,MAAM,CAAC,EAAE,kBAAkB,GAAG,WAAW,CA6BrE"}
@@ -0,0 +1,29 @@
1
+ import { consoleLogger } from "../logger.js";
2
+ import { execCommand, isCliInstalled } from "./shared.js";
3
+ export function googleGemini(config) {
4
+ const log = config?.logger ?? consoleLogger;
5
+ const extraFlags = config?.cliFlags ?? [];
6
+ const quiet = config?.quiet ?? false;
7
+ return {
8
+ async install() {
9
+ if (isCliInstalled("gemini")) {
10
+ log.info("Google Gemini CLI already installed, skipping");
11
+ return;
12
+ }
13
+ log.info("Installing Google Gemini CLI...");
14
+ await execCommand("npm", ["install", "-g", "@google/gemini-cli"], { quiet });
15
+ log.info("Google Gemini CLI installed");
16
+ },
17
+ async run(opts) {
18
+ log.info("Running Google Gemini agent...");
19
+ const args = ["-y", "-p", opts.prompt, ...extraFlags];
20
+ return execCommand("gemini", args, {
21
+ env: { ...process.env, ...opts.env },
22
+ ignoreReturnCode: true,
23
+ quiet,
24
+ onStderr: quiet ? (line) => log.debug(line) : undefined,
25
+ });
26
+ },
27
+ };
28
+ }
29
+ //# sourceMappingURL=google-gemini.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"google-gemini.js","sourceRoot":"","sources":["../../src/coding-agent/google-gemini.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAS1D,MAAM,UAAU,YAAY,CAAC,MAA2B;IACtD,MAAM,GAAG,GAAG,MAAM,EAAE,MAAM,IAAI,aAAa,CAAC;IAC5C,MAAM,UAAU,GAAG,MAAM,EAAE,QAAQ,IAAI,EAAE,CAAC;IAC1C,MAAM,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,KAAK,CAAC;IAErC,OAAO;QACL,KAAK,CAAC,OAAO;YACX,IAAI,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC7B,GAAG,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;gBAC1D,OAAO;YACT,CAAC;YACD,GAAG,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;YAC5C,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,oBAAoB,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YAC7E,GAAG,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAC1C,CAAC;QAED,KAAK,CAAC,GAAG,CAAC,IAA2B;YACnC,GAAG,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;YAE3C,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC;YAEtD,OAAO,WAAW,CAAC,QAAQ,EAAE,IAAI,EAAE;gBACjC,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,EAA4B;gBAC9D,gBAAgB,EAAE,IAAI;gBACtB,KAAK;gBACL,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;aACxD,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ export type { CodingAgent, CodingAgentRunOptions } from "./types.js";
2
+ export type { ClaudeCodeConfig } from "./claude-code.js";
3
+ export type { OpenAICodexConfig } from "./openai-codex.js";
4
+ export type { GoogleGeminiConfig } from "./google-gemini.js";
5
+ export { claudeCode } from "./claude-code.js";
6
+ export { openaiCodex } from "./openai-codex.js";
7
+ export { googleGemini } from "./google-gemini.js";
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/coding-agent/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACrE,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,YAAY,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { claudeCode } from "./claude-code.js";
2
+ export { openaiCodex } from "./openai-codex.js";
3
+ export { googleGemini } from "./google-gemini.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/coding-agent/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { CodingAgent } from "./types.js";
2
+ import type { Logger } from "../logger.js";
3
+ export interface OpenAICodexConfig {
4
+ cliFlags?: string[];
5
+ logger?: Logger;
6
+ /** Suppress agent stdout; forward stderr through logger */
7
+ quiet?: boolean;
8
+ }
9
+ export declare function openaiCodex(config?: OpenAICodexConfig): CodingAgent;
10
+ //# sourceMappingURL=openai-codex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai-codex.d.ts","sourceRoot":"","sources":["../../src/coding-agent/openai-codex.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAyB,MAAM,YAAY,CAAC;AACrE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAI3C,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2DAA2D;IAC3D,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAgB,WAAW,CAAC,MAAM,CAAC,EAAE,iBAAiB,GAAG,WAAW,CA6BnE"}
@@ -0,0 +1,29 @@
1
+ import { consoleLogger } from "../logger.js";
2
+ import { execCommand, isCliInstalled } from "./shared.js";
3
+ export function openaiCodex(config) {
4
+ const log = config?.logger ?? consoleLogger;
5
+ const extraFlags = config?.cliFlags ?? [];
6
+ const quiet = config?.quiet ?? false;
7
+ return {
8
+ async install() {
9
+ if (isCliInstalled("codex")) {
10
+ log.info("OpenAI Codex CLI already installed, skipping");
11
+ return;
12
+ }
13
+ log.info("Installing OpenAI Codex CLI...");
14
+ await execCommand("npm", ["install", "-g", "@openai/codex"], { quiet });
15
+ log.info("OpenAI Codex CLI installed");
16
+ },
17
+ async run(opts) {
18
+ log.info("Running OpenAI Codex agent...");
19
+ const args = ["exec", "--full-auto", opts.prompt, ...extraFlags];
20
+ return execCommand("codex", args, {
21
+ env: { ...process.env, ...opts.env },
22
+ ignoreReturnCode: true,
23
+ quiet,
24
+ onStderr: quiet ? (line) => log.debug(line) : undefined,
25
+ });
26
+ },
27
+ };
28
+ }
29
+ //# sourceMappingURL=openai-codex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai-codex.js","sourceRoot":"","sources":["../../src/coding-agent/openai-codex.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAS1D,MAAM,UAAU,WAAW,CAAC,MAA0B;IACpD,MAAM,GAAG,GAAG,MAAM,EAAE,MAAM,IAAI,aAAa,CAAC;IAC5C,MAAM,UAAU,GAAG,MAAM,EAAE,QAAQ,IAAI,EAAE,CAAC;IAC1C,MAAM,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,KAAK,CAAC;IAErC,OAAO;QACL,KAAK,CAAC,OAAO;YACX,IAAI,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC5B,GAAG,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;gBACzD,OAAO;YACT,CAAC;YACD,GAAG,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;YAC3C,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,eAAe,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YACxE,GAAG,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QACzC,CAAC;QAED,KAAK,CAAC,GAAG,CAAC,IAA2B;YACnC,GAAG,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;YAE1C,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC;YAEjE,OAAO,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE;gBAChC,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,EAA4B;gBAC9D,gBAAgB,EAAE,IAAI;gBACtB,KAAK;gBACL,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;aACxD,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,10 @@
1
+ export interface ExecOptions {
2
+ env?: Record<string, string>;
3
+ ignoreReturnCode?: boolean;
4
+ /** Suppress stdout; pipe stderr through onStderr callback */
5
+ quiet?: boolean;
6
+ onStderr?: (line: string) => void;
7
+ }
8
+ export declare function execCommand(cmd: string, args: string[], opts?: ExecOptions): Promise<number>;
9
+ export declare function isCliInstalled(cmd: string): boolean;
10
+ //# sourceMappingURL=shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/coding-agent/shared.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,6DAA6D;IAC7D,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CA+B5F;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAOnD"}
@@ -0,0 +1,44 @@
1
+ import { spawn, execSync } from "node:child_process";
2
+ export function execCommand(cmd, args, opts) {
3
+ return new Promise((resolve, reject) => {
4
+ const child = spawn(cmd, args, {
5
+ env: opts?.env ?? process.env,
6
+ stdio: opts?.quiet ? ["ignore", "ignore", "pipe"] : "inherit",
7
+ });
8
+ if (opts?.quiet && child.stderr) {
9
+ let buf = "";
10
+ child.stderr.on("data", (chunk) => {
11
+ buf += chunk.toString();
12
+ const lines = buf.split("\n");
13
+ buf = lines.pop() ?? "";
14
+ for (const line of lines) {
15
+ if (line.trim())
16
+ opts.onStderr?.(line.trim());
17
+ }
18
+ });
19
+ child.stderr.on("end", () => {
20
+ if (buf.trim())
21
+ opts.onStderr?.(buf.trim());
22
+ });
23
+ }
24
+ child.on("error", (err) => reject(err));
25
+ child.on("close", (code) => {
26
+ if (code !== 0 && !opts?.ignoreReturnCode) {
27
+ reject(new Error(`${cmd} exited with code ${code}`));
28
+ }
29
+ else {
30
+ resolve(code ?? 0);
31
+ }
32
+ });
33
+ });
34
+ }
35
+ export function isCliInstalled(cmd) {
36
+ try {
37
+ execSync(`${cmd} --version`, { stdio: "ignore" });
38
+ return true;
39
+ }
40
+ catch {
41
+ return false;
42
+ }
43
+ }
44
+ //# sourceMappingURL=shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/coding-agent/shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAUrD,MAAM,UAAU,WAAW,CAAC,GAAW,EAAE,IAAc,EAAE,IAAkB;IACzE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE;YAC7B,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,OAAO,CAAC,GAAG;YAC7B,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;SAC9D,CAAC,CAAC;QAEH,IAAI,IAAI,EAAE,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YAChC,IAAI,GAAG,GAAG,EAAE,CAAC;YACb,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;gBACxC,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACxB,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC9B,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;gBACxB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,IAAI,IAAI,CAAC,IAAI,EAAE;wBAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;gBAChD,CAAC;YACH,CAAC,CAAC,CAAC;YACH,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;gBAC1B,IAAI,GAAG,CAAC,IAAI,EAAE;oBAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;YAC9C,CAAC,CAAC,CAAC;QACL,CAAC;QAED,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QACxC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACzB,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,gBAAgB,EAAE,CAAC;gBAC1C,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,GAAG,qBAAqB,IAAI,EAAE,CAAC,CAAC,CAAC;YACvD,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;YACrB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,IAAI,CAAC;QACH,QAAQ,CAAC,GAAG,GAAG,YAAY,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
@@ -0,0 +1,10 @@
1
+ export interface CodingAgentRunOptions {
2
+ prompt: string;
3
+ maxTurns: number;
4
+ env?: Record<string, string>;
5
+ }
6
+ export interface CodingAgent {
7
+ install(): Promise<void>;
8
+ run(opts: CodingAgentRunOptions): Promise<number>;
9
+ }
10
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/coding-agent/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,GAAG,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACnD"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/coding-agent/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,19 @@
1
+ import { z } from "zod";
2
+ import type { Logger } from "../logger.js";
3
+ import type { CredentialVaultProvider } from "./types.js";
4
+ export declare const awsSecretsManagerConfigSchema: z.ZodObject<{
5
+ region: z.ZodDefault<z.ZodString>;
6
+ prefix: z.ZodDefault<z.ZodString>;
7
+ logger: z.ZodOptional<z.ZodType<Logger, z.ZodTypeDef, Logger>>;
8
+ }, "strip", z.ZodTypeAny, {
9
+ region: string;
10
+ prefix: string;
11
+ logger?: Logger | undefined;
12
+ }, {
13
+ logger?: Logger | undefined;
14
+ region?: string | undefined;
15
+ prefix?: string | undefined;
16
+ }>;
17
+ export type AwsSecretsManagerConfig = z.infer<typeof awsSecretsManagerConfigSchema>;
18
+ export declare function awsSecretsManager(config?: AwsSecretsManagerConfig): CredentialVaultProvider;
19
+ //# sourceMappingURL=aws-secrets-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aws-secrets-manager.d.ts","sourceRoot":"","sources":["../../src/credential-vault/aws-secrets-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAE1D,eAAO,MAAM,6BAA6B;;;;;;;;;;;;EAIxC,CAAC;AAEH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AAEpF,wBAAgB,iBAAiB,CAAC,MAAM,CAAC,EAAE,uBAAuB,GAAG,uBAAuB,CAG3F"}
@@ -0,0 +1,96 @@
1
+ import { z } from "zod";
2
+ import { consoleLogger } from "../logger.js";
3
+ export const awsSecretsManagerConfigSchema = z.object({
4
+ region: z.string().default("us-east-1"),
5
+ prefix: z.string().default("sweny"),
6
+ logger: z.custom().optional(),
7
+ });
8
+ export function awsSecretsManager(config) {
9
+ const parsed = awsSecretsManagerConfigSchema.parse(config ?? {});
10
+ return new AwsSecretsManagerProvider(parsed);
11
+ }
12
+ class AwsSecretsManagerProvider {
13
+ region;
14
+ prefix;
15
+ log;
16
+ client = null;
17
+ constructor(config) {
18
+ this.region = config.region ?? "us-east-1";
19
+ this.prefix = config.prefix ?? "sweny";
20
+ this.log = config.logger ?? consoleLogger;
21
+ }
22
+ async getClient() {
23
+ if (!this.client) {
24
+ const { SecretsManagerClient } = await import("@aws-sdk/client-secrets-manager");
25
+ this.client = new SecretsManagerClient({ region: this.region });
26
+ }
27
+ return this.client;
28
+ }
29
+ secretName(tenantId, key) {
30
+ return `${this.prefix}/${tenantId}/${key}`;
31
+ }
32
+ async getSecret(tenantId, key) {
33
+ const client = await this.getClient();
34
+ const { GetSecretValueCommand } = await import("@aws-sdk/client-secrets-manager");
35
+ try {
36
+ const result = await client.send(new GetSecretValueCommand({ SecretId: this.secretName(tenantId, key) }));
37
+ this.log.info(`Retrieved secret ${this.secretName(tenantId, key)}`);
38
+ return result.SecretString ?? null;
39
+ }
40
+ catch (err) {
41
+ if (err instanceof Error && err.name === "ResourceNotFoundException") {
42
+ return null;
43
+ }
44
+ throw err;
45
+ }
46
+ }
47
+ async setSecret(tenantId, key, value) {
48
+ const client = await this.getClient();
49
+ const { CreateSecretCommand, PutSecretValueCommand } = await import("@aws-sdk/client-secrets-manager");
50
+ const name = this.secretName(tenantId, key);
51
+ try {
52
+ await client.send(new CreateSecretCommand({ Name: name, SecretString: value }));
53
+ }
54
+ catch (err) {
55
+ if (err instanceof Error && err.name === "ResourceExistsException") {
56
+ await client.send(new PutSecretValueCommand({ SecretId: name, SecretString: value }));
57
+ }
58
+ else {
59
+ throw err;
60
+ }
61
+ }
62
+ this.log.info(`Set secret ${name}`);
63
+ }
64
+ async deleteSecret(tenantId, key) {
65
+ const client = await this.getClient();
66
+ const { DeleteSecretCommand } = await import("@aws-sdk/client-secrets-manager");
67
+ const name = this.secretName(tenantId, key);
68
+ await client.send(new DeleteSecretCommand({
69
+ SecretId: name,
70
+ ForceDeleteWithoutRecovery: true,
71
+ }));
72
+ this.log.info(`Deleted secret ${name}`);
73
+ }
74
+ async listKeys(tenantId) {
75
+ const client = await this.getClient();
76
+ const { ListSecretsCommand } = await import("@aws-sdk/client-secrets-manager");
77
+ const namePrefix = `${this.prefix}/${tenantId}/`;
78
+ const keys = [];
79
+ let nextToken;
80
+ do {
81
+ const result = await client.send(new ListSecretsCommand({
82
+ Filters: [{ Key: "name", Values: [namePrefix] }],
83
+ NextToken: nextToken,
84
+ }));
85
+ for (const secret of result.SecretList ?? []) {
86
+ if (secret.Name?.startsWith(namePrefix)) {
87
+ keys.push(secret.Name.slice(namePrefix.length));
88
+ }
89
+ }
90
+ nextToken = result.NextToken;
91
+ } while (nextToken);
92
+ this.log.info(`Listed ${keys.length} keys for tenant ${tenantId}`);
93
+ return keys;
94
+ }
95
+ }
96
+ //# sourceMappingURL=aws-secrets-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aws-secrets-manager.js","sourceRoot":"","sources":["../../src/credential-vault/aws-secrets-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { CredentialVaultProvider } from "./types.js";
2
+ /**
3
+ * Reads secrets from environment variables.
4
+ *
5
+ * Key lookup: `{PREFIX}_{TENANT_ID}_{KEY}` (uppercased, hyphens → underscores).
6
+ * Falls back to `{PREFIX}_{KEY}` if the tenant-scoped var is not set.
7
+ *
8
+ * This is useful for local development and the open-source GitHub Action
9
+ * where secrets come from env vars rather than a database.
10
+ */
11
+ export interface EnvVaultConfig {
12
+ prefix?: string;
13
+ }
14
+ export declare function envVault(config?: EnvVaultConfig): CredentialVaultProvider;
15
+ //# sourceMappingURL=env-vault.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env-vault.d.ts","sourceRoot":"","sources":["../../src/credential-vault/env-vault.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAE1D;;;;;;;;GAQG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,QAAQ,CAAC,MAAM,CAAC,EAAE,cAAc,GAAG,uBAAuB,CA6BzE"}
@@ -0,0 +1,25 @@
1
+ export function envVault(config) {
2
+ const prefix = config?.prefix ?? "SWENY";
3
+ function envKey(tenantId, key) {
4
+ const normalized = `${prefix}_${tenantId}_${key}`.toUpperCase().replace(/-/g, "_");
5
+ return normalized;
6
+ }
7
+ function fallbackKey(key) {
8
+ return `${prefix}_${key}`.toUpperCase().replace(/-/g, "_");
9
+ }
10
+ return {
11
+ async getSecret(tenantId, key) {
12
+ return process.env[envKey(tenantId, key)] ?? process.env[fallbackKey(key)] ?? null;
13
+ },
14
+ async setSecret(_tenantId, _key, _value) {
15
+ throw new Error("envVault is read-only. Use a database-backed vault for writes.");
16
+ },
17
+ async deleteSecret(_tenantId, _key) {
18
+ throw new Error("envVault is read-only. Use a database-backed vault for deletes.");
19
+ },
20
+ async listKeys(_tenantId) {
21
+ throw new Error("envVault does not support listing keys. Use a database-backed vault.");
22
+ },
23
+ };
24
+ }
25
+ //# sourceMappingURL=env-vault.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env-vault.js","sourceRoot":"","sources":["../../src/credential-vault/env-vault.ts"],"names":[],"mappings":"AAeA,MAAM,UAAU,QAAQ,CAAC,MAAuB;IAC9C,MAAM,MAAM,GAAG,MAAM,EAAE,MAAM,IAAI,OAAO,CAAC;IAEzC,SAAS,MAAM,CAAC,QAAgB,EAAE,GAAW;QAC3C,MAAM,UAAU,GAAG,GAAG,MAAM,IAAI,QAAQ,IAAI,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACnF,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,SAAS,WAAW,CAAC,GAAW;QAC9B,OAAO,GAAG,MAAM,IAAI,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC7D,CAAC;IAED,OAAO;QACL,KAAK,CAAC,SAAS,CAAC,QAAgB,EAAE,GAAW;YAC3C,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC;QACrF,CAAC;QAED,KAAK,CAAC,SAAS,CAAC,SAAiB,EAAE,IAAY,EAAE,MAAc;YAC7D,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;QACpF,CAAC;QAED,KAAK,CAAC,YAAY,CAAC,SAAiB,EAAE,IAAY;YAChD,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;QACrF,CAAC;QAED,KAAK,CAAC,QAAQ,CAAC,SAAiB;YAC9B,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;QAC1F,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,6 @@
1
+ export type { CredentialVaultProvider } from "./types.js";
2
+ export type { EnvVaultConfig } from "./env-vault.js";
3
+ export { envVault } from "./env-vault.js";
4
+ export type { AwsSecretsManagerConfig } from "./aws-secrets-manager.js";
5
+ export { awsSecretsManager, awsSecretsManagerConfigSchema } from "./aws-secrets-manager.js";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/credential-vault/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAC1D,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,YAAY,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,6BAA6B,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { envVault } from "./env-vault.js";
2
+ export { awsSecretsManager, awsSecretsManagerConfigSchema } from "./aws-secrets-manager.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/credential-vault/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,EAAE,iBAAiB,EAAE,6BAA6B,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,30 @@
1
+ /** Provider interface for securely storing and retrieving tenant secrets. */
2
+ export interface CredentialVaultProvider {
3
+ /**
4
+ * Retrieve a secret value.
5
+ * @param tenantId - Tenant identifier.
6
+ * @param key - Secret key name.
7
+ * @returns The secret value, or null if not found.
8
+ */
9
+ getSecret(tenantId: string, key: string): Promise<string | null>;
10
+ /**
11
+ * Store or update a secret value.
12
+ * @param tenantId - Tenant identifier.
13
+ * @param key - Secret key name.
14
+ * @param value - Secret value to store.
15
+ */
16
+ setSecret(tenantId: string, key: string, value: string): Promise<void>;
17
+ /**
18
+ * Delete a secret.
19
+ * @param tenantId - Tenant identifier.
20
+ * @param key - Secret key name.
21
+ */
22
+ deleteSecret(tenantId: string, key: string): Promise<void>;
23
+ /**
24
+ * List all secret key names for a tenant.
25
+ * @param tenantId - Tenant identifier.
26
+ * @returns Array of secret key names.
27
+ */
28
+ listKeys(tenantId: string): Promise<string[]>;
29
+ }
30
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/credential-vault/types.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,MAAM,WAAW,uBAAuB;IACtC;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAEjE;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvE;;;;OAIG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3D;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CAC/C"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/credential-vault/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,18 @@
1
+ export declare class ProviderError extends Error {
2
+ readonly provider: string;
3
+ readonly cause?: unknown | undefined;
4
+ constructor(message: string, provider: string, cause?: unknown | undefined);
5
+ }
6
+ export declare class ProviderAuthError extends ProviderError {
7
+ constructor(provider: string, message?: string, cause?: unknown);
8
+ }
9
+ export declare class ProviderApiError extends ProviderError {
10
+ readonly statusCode: number;
11
+ readonly statusText: string;
12
+ readonly responseBody?: string | undefined;
13
+ constructor(provider: string, statusCode: number, statusText: string, responseBody?: string | undefined);
14
+ }
15
+ export declare class ProviderConfigError extends ProviderError {
16
+ constructor(provider: string, message: string);
17
+ }
18
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,aAAc,SAAQ,KAAK;aAGpB,QAAQ,EAAE,MAAM;aAChB,KAAK,CAAC,EAAE,OAAO;gBAF/B,OAAO,EAAE,MAAM,EACC,QAAQ,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,OAAO,YAAA;CAKlC;AAED,qBAAa,iBAAkB,SAAQ,aAAa;gBACtC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAIhE;AAED,qBAAa,gBAAiB,SAAQ,aAAa;aAG/B,UAAU,EAAE,MAAM;aAClB,UAAU,EAAE,MAAM;aAClB,YAAY,CAAC,EAAE,MAAM;gBAHrC,QAAQ,EAAE,MAAM,EACA,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,YAAY,CAAC,EAAE,MAAM,YAAA;CAKxC;AAED,qBAAa,mBAAoB,SAAQ,aAAa;gBACxC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAI9C"}