@sweny-ai/providers 0.3.1 → 1.0.1

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 (75) hide show
  1. package/dist/agent-tool/types.d.ts +1 -0
  2. package/dist/agent-tool/types.d.ts.map +1 -1
  3. package/dist/catalog.d.ts +39 -0
  4. package/dist/catalog.d.ts.map +1 -0
  5. package/dist/catalog.js +400 -0
  6. package/dist/catalog.js.map +1 -0
  7. package/dist/coding-agent/claude-code.d.ts.map +1 -1
  8. package/dist/coding-agent/claude-code.js +38 -27
  9. package/dist/coding-agent/claude-code.js.map +1 -1
  10. package/dist/coding-agent/google-gemini.d.ts.map +1 -1
  11. package/dist/coding-agent/google-gemini.js +25 -13
  12. package/dist/coding-agent/google-gemini.js.map +1 -1
  13. package/dist/coding-agent/openai-codex.d.ts.map +1 -1
  14. package/dist/coding-agent/openai-codex.js +25 -13
  15. package/dist/coding-agent/openai-codex.js.map +1 -1
  16. package/dist/coding-agent/shared.d.ts +11 -0
  17. package/dist/coding-agent/shared.d.ts.map +1 -1
  18. package/dist/coding-agent/shared.js +40 -0
  19. package/dist/coding-agent/shared.js.map +1 -1
  20. package/dist/coding-agent/types.d.ts +15 -0
  21. package/dist/coding-agent/types.d.ts.map +1 -1
  22. package/dist/factories.d.ts +30 -0
  23. package/dist/factories.d.ts.map +1 -0
  24. package/dist/factories.js +64 -0
  25. package/dist/factories.js.map +1 -0
  26. package/dist/index.d.ts +8 -3
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +5 -1
  29. package/dist/index.js.map +1 -1
  30. package/dist/issue-tracking/file.d.ts +2 -2
  31. package/dist/issue-tracking/file.d.ts.map +1 -1
  32. package/dist/issue-tracking/file.js +4 -4
  33. package/dist/issue-tracking/file.js.map +1 -1
  34. package/dist/issue-tracking/index.d.ts +2 -2
  35. package/dist/issue-tracking/index.d.ts.map +1 -1
  36. package/dist/issue-tracking/index.js +1 -1
  37. package/dist/issue-tracking/index.js.map +1 -1
  38. package/dist/issue-tracking/jira.d.ts +2 -2
  39. package/dist/issue-tracking/jira.d.ts.map +1 -1
  40. package/dist/issue-tracking/jira.js +5 -27
  41. package/dist/issue-tracking/jira.js.map +1 -1
  42. package/dist/issue-tracking/linear.d.ts +2 -2
  43. package/dist/issue-tracking/linear.d.ts.map +1 -1
  44. package/dist/issue-tracking/linear.js +14 -77
  45. package/dist/issue-tracking/linear.js.map +1 -1
  46. package/dist/issue-tracking/types.d.ts +39 -38
  47. package/dist/issue-tracking/types.d.ts.map +1 -1
  48. package/dist/issue-tracking/types.js +4 -12
  49. package/dist/issue-tracking/types.js.map +1 -1
  50. package/dist/mcp/client.d.ts +58 -0
  51. package/dist/mcp/client.d.ts.map +1 -0
  52. package/dist/mcp/client.js +113 -0
  53. package/dist/mcp/client.js.map +1 -0
  54. package/dist/mcp/index.d.ts +2 -0
  55. package/dist/mcp/index.d.ts.map +1 -0
  56. package/dist/mcp/index.js +2 -0
  57. package/dist/mcp/index.js.map +1 -0
  58. package/dist/source-control/index.d.ts +1 -1
  59. package/dist/source-control/index.d.ts.map +1 -1
  60. package/dist/source-control/index.js.map +1 -1
  61. package/dist/source-control/types.d.ts +36 -10
  62. package/dist/source-control/types.d.ts.map +1 -1
  63. package/dist/storage/memory/s3.d.ts +7 -5
  64. package/dist/storage/memory/s3.d.ts.map +1 -1
  65. package/dist/storage/memory/s3.js +13 -5
  66. package/dist/storage/memory/s3.js.map +1 -1
  67. package/dist/storage/session/s3.d.ts +6 -4
  68. package/dist/storage/session/s3.d.ts.map +1 -1
  69. package/dist/storage/session/s3.js +23 -11
  70. package/dist/storage/session/s3.js.map +1 -1
  71. package/dist/storage/workspace/s3.d.ts +7 -5
  72. package/dist/storage/workspace/s3.d.ts.map +1 -1
  73. package/dist/storage/workspace/s3.js +33 -24
  74. package/dist/storage/workspace/s3.js.map +1 -1
  75. package/package.json +11 -2
@@ -1,5 +1,6 @@
1
1
  import type { ZodRawShape } from "zod";
2
2
  export interface ToolResult {
3
+ [x: string]: unknown;
3
4
  content: {
4
5
  type: "text";
5
6
  text: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/agent-tool/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,KAAK,CAAC;AAEvC,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC1C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,SAAS,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,CAAC,CAAC;IACV,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;CAC7D"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/agent-tool/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,KAAK,CAAC;AAEvC,MAAM,WAAW,UAAU;IACzB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACrB,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC1C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,SAAS,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,CAAC,CAAC;IACV,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;CAC7D"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Browser-safe provider catalog.
3
+ * Pure data — no Node.js imports, no factory function calls.
4
+ * Used by Studio to surface provider options and required env vars per step.
5
+ */
6
+ export interface EnvVarSpec {
7
+ key: string;
8
+ description: string;
9
+ required: boolean;
10
+ example?: string;
11
+ /** If true, the value should be masked in UI displays. */
12
+ secret: boolean;
13
+ }
14
+ export interface ProviderOption {
15
+ /** Machine-readable ID matching the factory function name. */
16
+ id: string;
17
+ /** Display name shown in the UI. */
18
+ name: string;
19
+ /** Provider category — matches StateDefinition.provider. */
20
+ category: string;
21
+ /** One-line description of what this provider connects to. */
22
+ description: string;
23
+ /** Hex color for icon/badge rendering. */
24
+ color: string;
25
+ /** Emoji or short text icon. */
26
+ icon: string;
27
+ /** Required and optional environment variables for this provider. */
28
+ envVars: EnvVarSpec[];
29
+ /** Import path for the factory function. */
30
+ importPath: string;
31
+ /** Factory function name. */
32
+ factoryFn: string;
33
+ }
34
+ export declare const PROVIDER_CATALOG: ProviderOption[];
35
+ /** Get all provider options for a given category. */
36
+ export declare function getProvidersForCategory(category: string): ProviderOption[];
37
+ /** Get a provider option by its unique id. */
38
+ export declare function getProviderById(id: string): ProviderOption | undefined;
39
+ //# sourceMappingURL=catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,0DAA0D;IAC1D,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,8DAA8D;IAC9D,EAAE,EAAE,MAAM,CAAC;IACX,oCAAoC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,4DAA4D;IAC5D,QAAQ,EAAE,MAAM,CAAC;IACjB,8DAA8D;IAC9D,WAAW,EAAE,MAAM,CAAC;IACpB,0CAA0C;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,qEAAqE;IACrE,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,4CAA4C;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,gBAAgB,EAAE,cAAc,EA0Y5C,CAAC;AAEF,qDAAqD;AACrD,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,EAAE,CAE1E;AAED,8CAA8C;AAC9C,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAEtE"}
@@ -0,0 +1,400 @@
1
+ /**
2
+ * Browser-safe provider catalog.
3
+ * Pure data — no Node.js imports, no factory function calls.
4
+ * Used by Studio to surface provider options and required env vars per step.
5
+ */
6
+ export const PROVIDER_CATALOG = [
7
+ // ── Observability ──────────────────────────────────────────────────────────
8
+ {
9
+ id: "datadog",
10
+ name: "Datadog",
11
+ category: "observability",
12
+ description: "Query logs and metrics from Datadog APM and log management.",
13
+ color: "#632CA6",
14
+ icon: "🐶",
15
+ importPath: "@sweny-ai/providers/observability",
16
+ factoryFn: "datadog",
17
+ envVars: [
18
+ { key: "DATADOG_API_KEY", description: "Datadog API key", required: true, secret: true, example: "abc123..." },
19
+ { key: "DATADOG_APP_KEY", description: "Datadog application key", required: true, secret: true },
20
+ {
21
+ key: "DATADOG_SITE",
22
+ description: "Datadog site (default: datadoghq.com)",
23
+ required: false,
24
+ secret: false,
25
+ example: "datadoghq.eu",
26
+ },
27
+ ],
28
+ },
29
+ {
30
+ id: "sentry",
31
+ name: "Sentry",
32
+ category: "observability",
33
+ description: "Aggregate and query error events from Sentry.",
34
+ color: "#362D59",
35
+ icon: "🔭",
36
+ importPath: "@sweny-ai/providers/observability",
37
+ factoryFn: "sentry",
38
+ envVars: [
39
+ { key: "SENTRY_AUTH_TOKEN", description: "Sentry auth token", required: true, secret: true },
40
+ {
41
+ key: "SENTRY_ORG",
42
+ description: "Sentry organization slug",
43
+ required: true,
44
+ secret: false,
45
+ example: "my-company",
46
+ },
47
+ {
48
+ key: "SENTRY_PROJECT",
49
+ description: "Sentry project slug (leave empty for all)",
50
+ required: false,
51
+ secret: false,
52
+ },
53
+ ],
54
+ },
55
+ {
56
+ id: "cloudwatch",
57
+ name: "AWS CloudWatch",
58
+ category: "observability",
59
+ description: "Query CloudWatch Logs Insights for structured log data.",
60
+ color: "#FF9900",
61
+ icon: "☁️",
62
+ importPath: "@sweny-ai/providers/observability",
63
+ factoryFn: "cloudwatch",
64
+ envVars: [
65
+ { key: "AWS_ACCESS_KEY_ID", description: "AWS access key ID", required: true, secret: true },
66
+ { key: "AWS_SECRET_ACCESS_KEY", description: "AWS secret access key", required: true, secret: true },
67
+ { key: "AWS_REGION", description: "AWS region", required: true, secret: false, example: "us-east-1" },
68
+ {
69
+ key: "CLOUDWATCH_LOG_GROUP",
70
+ description: "Default log group name",
71
+ required: false,
72
+ secret: false,
73
+ example: "/aws/lambda/my-service",
74
+ },
75
+ ],
76
+ },
77
+ {
78
+ id: "elastic",
79
+ name: "Elasticsearch",
80
+ category: "observability",
81
+ description: "Query logs and traces from an Elasticsearch / Elastic Cloud cluster.",
82
+ color: "#005571",
83
+ icon: "🔍",
84
+ importPath: "@sweny-ai/providers/observability",
85
+ factoryFn: "elastic",
86
+ envVars: [
87
+ {
88
+ key: "ELASTICSEARCH_URL",
89
+ description: "Elasticsearch endpoint",
90
+ required: true,
91
+ secret: false,
92
+ example: "https://my-cluster.es.io:9200",
93
+ },
94
+ { key: "ELASTICSEARCH_API_KEY", description: "Elasticsearch API key", required: true, secret: true },
95
+ {
96
+ key: "ELASTICSEARCH_INDEX",
97
+ description: "Default index pattern",
98
+ required: false,
99
+ secret: false,
100
+ example: "logs-*",
101
+ },
102
+ ],
103
+ },
104
+ {
105
+ id: "newrelic",
106
+ name: "New Relic",
107
+ category: "observability",
108
+ description: "Query events and metrics from New Relic NRDB via NRQL.",
109
+ color: "#008C99",
110
+ icon: "📡",
111
+ importPath: "@sweny-ai/providers/observability",
112
+ factoryFn: "newrelic",
113
+ envVars: [
114
+ { key: "NEW_RELIC_API_KEY", description: "New Relic user API key", required: true, secret: true },
115
+ { key: "NEW_RELIC_ACCOUNT_ID", description: "New Relic account ID", required: true, secret: false },
116
+ ],
117
+ },
118
+ {
119
+ id: "loki",
120
+ name: "Grafana Loki",
121
+ category: "observability",
122
+ description: "Query log streams from a Grafana Loki or Grafana Cloud instance.",
123
+ color: "#F05A28",
124
+ icon: "📊",
125
+ importPath: "@sweny-ai/providers/observability",
126
+ factoryFn: "loki",
127
+ envVars: [
128
+ { key: "LOKI_URL", description: "Loki endpoint URL", required: true, secret: false, example: "http://loki:3100" },
129
+ {
130
+ key: "LOKI_USERNAME",
131
+ description: "Grafana Cloud username (leave empty for self-hosted)",
132
+ required: false,
133
+ secret: false,
134
+ },
135
+ { key: "LOKI_PASSWORD", description: "Grafana Cloud API key", required: false, secret: true },
136
+ ],
137
+ },
138
+ // ── Issue Tracking ─────────────────────────────────────────────────────────
139
+ {
140
+ id: "linear",
141
+ name: "Linear",
142
+ category: "issueTracking",
143
+ description: "Create, update, and search issues in Linear projects.",
144
+ color: "#5E6AD2",
145
+ icon: "◈",
146
+ importPath: "@sweny-ai/providers/issue-tracking",
147
+ factoryFn: "linear",
148
+ envVars: [
149
+ { key: "LINEAR_API_KEY", description: "Linear personal API key", required: true, secret: true },
150
+ { key: "LINEAR_TEAM_ID", description: "Default team ID for new issues", required: true, secret: false },
151
+ { key: "LINEAR_PROJECT_ID", description: "Default project ID (optional)", required: false, secret: false },
152
+ ],
153
+ },
154
+ {
155
+ id: "github-issues",
156
+ name: "GitHub Issues",
157
+ category: "issueTracking",
158
+ description: "Create and manage issues directly in a GitHub repository.",
159
+ color: "#24292F",
160
+ icon: "🐙",
161
+ importPath: "@sweny-ai/providers/issue-tracking",
162
+ factoryFn: "githubIssues",
163
+ envVars: [
164
+ { key: "GITHUB_TOKEN", description: "GitHub personal access token or app token", required: true, secret: true },
165
+ {
166
+ key: "GITHUB_OWNER",
167
+ description: "Repository owner (org or user)",
168
+ required: true,
169
+ secret: false,
170
+ example: "my-org",
171
+ },
172
+ { key: "GITHUB_REPO", description: "Repository name", required: true, secret: false, example: "my-repo" },
173
+ ],
174
+ },
175
+ {
176
+ id: "jira",
177
+ name: "Jira",
178
+ category: "issueTracking",
179
+ description: "Create and update issues in Jira Cloud or Server.",
180
+ color: "#0052CC",
181
+ icon: "🔷",
182
+ importPath: "@sweny-ai/providers/issue-tracking",
183
+ factoryFn: "jira",
184
+ envVars: [
185
+ {
186
+ key: "JIRA_URL",
187
+ description: "Jira instance base URL",
188
+ required: true,
189
+ secret: false,
190
+ example: "https://mycompany.atlassian.net",
191
+ },
192
+ { key: "JIRA_EMAIL", description: "Jira account email", required: true, secret: false },
193
+ { key: "JIRA_API_TOKEN", description: "Jira API token", required: true, secret: true },
194
+ { key: "JIRA_PROJECT_KEY", description: "Target project key", required: true, secret: false, example: "ENG" },
195
+ ],
196
+ },
197
+ // ── Source Control ─────────────────────────────────────────────────────────
198
+ {
199
+ id: "github",
200
+ name: "GitHub",
201
+ category: "sourceControl",
202
+ description: "Push branches, open PRs, and dispatch workflows on GitHub.",
203
+ color: "#24292F",
204
+ icon: "🐙",
205
+ importPath: "@sweny-ai/providers/source-control",
206
+ factoryFn: "github",
207
+ envVars: [
208
+ {
209
+ key: "GITHUB_TOKEN",
210
+ description: "GitHub personal access token (needs repo + workflow scopes)",
211
+ required: true,
212
+ secret: true,
213
+ },
214
+ {
215
+ key: "GITHUB_OWNER",
216
+ description: "Repository owner (org or user)",
217
+ required: true,
218
+ secret: false,
219
+ example: "my-org",
220
+ },
221
+ { key: "GITHUB_REPO", description: "Repository name", required: true, secret: false, example: "my-repo" },
222
+ ],
223
+ },
224
+ {
225
+ id: "gitlab",
226
+ name: "GitLab",
227
+ category: "sourceControl",
228
+ description: "Push branches and open merge requests on GitLab.",
229
+ color: "#FC6D26",
230
+ icon: "🦊",
231
+ importPath: "@sweny-ai/providers/source-control",
232
+ factoryFn: "gitlab",
233
+ envVars: [
234
+ { key: "GITLAB_TOKEN", description: "GitLab personal access token", required: true, secret: true },
235
+ {
236
+ key: "GITLAB_URL",
237
+ description: "GitLab instance URL (default: https://gitlab.com)",
238
+ required: false,
239
+ secret: false,
240
+ },
241
+ {
242
+ key: "GITLAB_PROJECT_ID",
243
+ description: "GitLab project ID or path",
244
+ required: true,
245
+ secret: false,
246
+ example: "123",
247
+ },
248
+ ],
249
+ },
250
+ // ── Coding Agent ───────────────────────────────────────────────────────────
251
+ {
252
+ id: "claude-code",
253
+ name: "Claude Code",
254
+ category: "codingAgent",
255
+ description: "Claude Code CLI — Anthropic's agentic coding tool. Reads context, writes code, runs tests.",
256
+ color: "#D97706",
257
+ icon: "🤖",
258
+ importPath: "@sweny-ai/providers/coding-agent",
259
+ factoryFn: "claudeCode",
260
+ envVars: [
261
+ {
262
+ key: "ANTHROPIC_API_KEY",
263
+ description: "Anthropic API key",
264
+ required: true,
265
+ secret: true,
266
+ example: "sk-ant-...",
267
+ },
268
+ ],
269
+ },
270
+ {
271
+ id: "openai-codex",
272
+ name: "OpenAI Codex",
273
+ category: "codingAgent",
274
+ description: "OpenAI's code-focused models for autonomous coding tasks.",
275
+ color: "#10A37F",
276
+ icon: "✦",
277
+ importPath: "@sweny-ai/providers/coding-agent",
278
+ factoryFn: "openaiCodex",
279
+ envVars: [
280
+ { key: "OPENAI_API_KEY", description: "OpenAI API key", required: true, secret: true, example: "sk-..." },
281
+ ],
282
+ },
283
+ {
284
+ id: "google-gemini",
285
+ name: "Google Gemini",
286
+ category: "codingAgent",
287
+ description: "Google Gemini models for autonomous coding tasks.",
288
+ color: "#4285F4",
289
+ icon: "✦",
290
+ importPath: "@sweny-ai/providers/coding-agent",
291
+ factoryFn: "googleGemini",
292
+ envVars: [{ key: "GOOGLE_API_KEY", description: "Google AI Studio API key", required: true, secret: true }],
293
+ },
294
+ // ── Notification ───────────────────────────────────────────────────────────
295
+ {
296
+ id: "slack-webhook",
297
+ name: "Slack Webhook",
298
+ category: "notification",
299
+ description: "Post rich Block Kit messages to a Slack channel via an incoming webhook.",
300
+ color: "#4A154B",
301
+ icon: "💬",
302
+ importPath: "@sweny-ai/providers/notification",
303
+ factoryFn: "slackWebhook",
304
+ envVars: [
305
+ {
306
+ key: "SLACK_WEBHOOK_URL",
307
+ description: "Slack incoming webhook URL",
308
+ required: true,
309
+ secret: true,
310
+ example: "https://hooks.slack.com/services/...",
311
+ },
312
+ ],
313
+ },
314
+ {
315
+ id: "discord-webhook",
316
+ name: "Discord Webhook",
317
+ category: "notification",
318
+ description: "Post embed messages to a Discord channel via a webhook.",
319
+ color: "#5865F2",
320
+ icon: "🎮",
321
+ importPath: "@sweny-ai/providers/notification",
322
+ factoryFn: "discordWebhook",
323
+ envVars: [
324
+ {
325
+ key: "DISCORD_WEBHOOK_URL",
326
+ description: "Discord webhook URL",
327
+ required: true,
328
+ secret: true,
329
+ example: "https://discord.com/api/webhooks/...",
330
+ },
331
+ ],
332
+ },
333
+ {
334
+ id: "teams-webhook",
335
+ name: "Microsoft Teams",
336
+ category: "notification",
337
+ description: "Post Adaptive Card messages to a Teams channel via a webhook.",
338
+ color: "#6264A7",
339
+ icon: "💼",
340
+ importPath: "@sweny-ai/providers/notification",
341
+ factoryFn: "teamsWebhook",
342
+ envVars: [{ key: "TEAMS_WEBHOOK_URL", description: "Teams incoming webhook URL", required: true, secret: true }],
343
+ },
344
+ {
345
+ id: "email",
346
+ name: "Email (SMTP)",
347
+ category: "notification",
348
+ description: "Send HTML or plain-text notification emails via SMTP.",
349
+ color: "#EA4335",
350
+ icon: "📧",
351
+ importPath: "@sweny-ai/providers/notification",
352
+ factoryFn: "email",
353
+ envVars: [
354
+ {
355
+ key: "SMTP_HOST",
356
+ description: "SMTP server hostname",
357
+ required: true,
358
+ secret: false,
359
+ example: "smtp.sendgrid.net",
360
+ },
361
+ { key: "SMTP_PORT", description: "SMTP port (default: 587)", required: false, secret: false, example: "587" },
362
+ { key: "SMTP_USER", description: "SMTP username", required: true, secret: false },
363
+ { key: "SMTP_PASS", description: "SMTP password or API key", required: true, secret: true },
364
+ {
365
+ key: "SMTP_FROM",
366
+ description: "Sender email address",
367
+ required: true,
368
+ secret: false,
369
+ example: "alerts@mycompany.com",
370
+ },
371
+ {
372
+ key: "SMTP_TO",
373
+ description: "Recipient email address(es)",
374
+ required: true,
375
+ secret: false,
376
+ example: "oncall@mycompany.com",
377
+ },
378
+ ],
379
+ },
380
+ {
381
+ id: "github-summary",
382
+ name: "GitHub Step Summary",
383
+ category: "notification",
384
+ description: "Write a markdown summary to the GitHub Actions job summary page.",
385
+ color: "#24292F",
386
+ icon: "📋",
387
+ importPath: "@sweny-ai/providers/notification",
388
+ factoryFn: "githubSummary",
389
+ envVars: [],
390
+ },
391
+ ];
392
+ /** Get all provider options for a given category. */
393
+ export function getProvidersForCategory(category) {
394
+ return PROVIDER_CATALOG.filter((p) => p.category === category);
395
+ }
396
+ /** Get a provider option by its unique id. */
397
+ export function getProviderById(id) {
398
+ return PROVIDER_CATALOG.find((p) => p.id === id);
399
+ }
400
+ //# sourceMappingURL=catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"claude-code.d.ts","sourceRoot":"","sources":["../../src/coding-agent/claude-code.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAqC,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpG,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;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;;OAIG;IACH,OAAO,CAAC,EAAE,iBAAiB,CAAC;CAC7B;AA2ED,wBAAgB,UAAU,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,WAAW,CA6DjE"}
1
+ {"version":3,"file":"claude-code.d.ts","sourceRoot":"","sources":["../../src/coding-agent/claude-code.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAqC,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpG,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;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;;OAIG;IACH,OAAO,CAAC,EAAE,iBAAiB,CAAC;CAC7B;AA2ED,wBAAgB,UAAU,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,WAAW,CAyEjE"}
@@ -1,5 +1,5 @@
1
1
  import { consoleLogger } from "../logger.js";
2
- import { execCommand, spawnLines, isCliInstalled } from "./shared.js";
2
+ import { execCommand, spawnLines, isCliInstalled, writeMcpConfig } from "./shared.js";
3
3
  /**
4
4
  * Stateful parser for Claude stream-json NDJSON events.
5
5
  *
@@ -98,35 +98,46 @@ export function claudeCode(config) {
98
98
  String(opts.maxTurns),
99
99
  ...extraFlags,
100
100
  ];
101
- if (onEvent) {
102
- // --output-format stream-json requires --verbose; omitting it causes
103
- // the CLI to exit with "stream-json requires --verbose" error.
104
- args.push("--output-format", "stream-json", "--verbose");
105
- const parse = makeClaudeEventParser();
106
- return spawnLines("claude", args, {
107
- env: opts.env,
101
+ const mcpServers = opts.mcpServers;
102
+ const mcpConfig = mcpServers && Object.keys(mcpServers).length > 0 ? writeMcpConfig(mcpServers) : null;
103
+ if (mcpConfig && mcpServers) {
104
+ args.push("--mcp-config", mcpConfig.path);
105
+ log.info(`Injecting ${Object.keys(mcpServers).length} MCP server(s): ${Object.keys(mcpServers).join(", ")}`);
106
+ }
107
+ try {
108
+ if (onEvent) {
109
+ // --output-format stream-json requires --verbose; omitting it causes
110
+ // the CLI to exit with "stream-json requires --verbose" error.
111
+ args.push("--output-format", "stream-json", "--verbose");
112
+ const parse = makeClaudeEventParser();
113
+ return await spawnLines("claude", args, {
114
+ env: opts.env,
115
+ timeoutMs: opts.timeoutMs,
116
+ logger: log,
117
+ onLine(line) {
118
+ try {
119
+ const evt = JSON.parse(line);
120
+ const mapped = parse(evt);
121
+ if (mapped)
122
+ return onEvent(mapped);
123
+ }
124
+ catch {
125
+ /* skip malformed JSON lines */
126
+ }
127
+ },
128
+ });
129
+ }
130
+ return await execCommand("claude", args, {
131
+ env: { ...process.env, ...opts.env },
132
+ ignoreReturnCode: true,
133
+ quiet,
108
134
  timeoutMs: opts.timeoutMs,
109
- logger: log,
110
- onLine(line) {
111
- try {
112
- const evt = JSON.parse(line);
113
- const mapped = parse(evt);
114
- if (mapped)
115
- return onEvent(mapped);
116
- }
117
- catch {
118
- /* skip malformed JSON lines */
119
- }
120
- },
135
+ onStderr: quiet ? (line) => log.debug(line) : undefined,
121
136
  });
122
137
  }
123
- return execCommand("claude", args, {
124
- env: { ...process.env, ...opts.env },
125
- ignoreReturnCode: true,
126
- quiet,
127
- timeoutMs: opts.timeoutMs,
128
- onStderr: quiet ? (line) => log.debug(line) : undefined,
129
- });
138
+ finally {
139
+ mcpConfig?.cleanup();
140
+ }
130
141
  },
131
142
  };
132
143
  }
@@ -1 +1 @@
1
- {"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../../src/coding-agent/claude-code.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../../src/coding-agent/claude-code.ts"],"names":[],"mappings":"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"}
@@ -1 +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,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACxF,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,4DAA4D;IAC5D,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,OAAO,CAAC,EAAE,iBAAiB,CAAC;CAC7B;AAED,wBAAgB,YAAY,CAAC,MAAM,CAAC,EAAE,kBAAkB,GAAG,WAAW,CAwCrE"}
1
+ {"version":3,"file":"google-gemini.d.ts","sourceRoot":"","sources":["../../src/coding-agent/google-gemini.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAyB,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACxF,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,4DAA4D;IAC5D,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,OAAO,CAAC,EAAE,iBAAiB,CAAC;CAC7B;AAED,wBAAgB,YAAY,CAAC,MAAM,CAAC,EAAE,kBAAkB,GAAG,WAAW,CAqDrE"}
@@ -1,5 +1,5 @@
1
1
  import { consoleLogger } from "../logger.js";
2
- import { execCommand, spawnLines, isCliInstalled } from "./shared.js";
2
+ import { execCommand, spawnLines, isCliInstalled, writeMcpConfig } from "./shared.js";
3
3
  export function googleGemini(config) {
4
4
  const log = config?.logger ?? consoleLogger;
5
5
  const extraFlags = config?.cliFlags ?? [];
@@ -17,22 +17,34 @@ export function googleGemini(config) {
17
17
  },
18
18
  async run(opts) {
19
19
  log.info("Running Google Gemini agent...");
20
+ // Gemini CLI uses --mcp-config <path> with the same JSON format as Claude Code.
20
21
  const args = ["-y", "-p", opts.prompt, ...extraFlags];
21
- if (onEvent) {
22
- return spawnLines("gemini", args, {
23
- env: opts.env,
22
+ const mcpServers = opts.mcpServers;
23
+ const mcpConfig = mcpServers && Object.keys(mcpServers).length > 0 ? writeMcpConfig(mcpServers) : null;
24
+ if (mcpConfig && mcpServers) {
25
+ args.push("--mcp-config", mcpConfig.path);
26
+ log.info(`Injecting ${Object.keys(mcpServers).length} MCP server(s): ${Object.keys(mcpServers).join(", ")}`);
27
+ }
28
+ try {
29
+ if (onEvent) {
30
+ return await spawnLines("gemini", args, {
31
+ env: opts.env,
32
+ timeoutMs: opts.timeoutMs,
33
+ logger: log,
34
+ onLine: (line) => onEvent({ type: "text", text: line }),
35
+ });
36
+ }
37
+ return await execCommand("gemini", args, {
38
+ env: { ...process.env, ...opts.env },
39
+ ignoreReturnCode: true,
40
+ quiet,
24
41
  timeoutMs: opts.timeoutMs,
25
- logger: log,
26
- onLine: (line) => onEvent({ type: "text", text: line }),
42
+ onStderr: quiet ? (line) => log.debug(line) : undefined,
27
43
  });
28
44
  }
29
- return execCommand("gemini", args, {
30
- env: { ...process.env, ...opts.env },
31
- ignoreReturnCode: true,
32
- quiet,
33
- timeoutMs: opts.timeoutMs,
34
- onStderr: quiet ? (line) => log.debug(line) : undefined,
35
- });
45
+ finally {
46
+ mcpConfig?.cleanup();
47
+ }
36
48
  },
37
49
  };
38
50
  }