@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.
- package/LICENSE +21 -0
- package/README.md +260 -0
- package/dist/access/allow-all.d.ts +3 -0
- package/dist/access/allow-all.d.ts.map +1 -0
- package/dist/access/allow-all.js +19 -0
- package/dist/access/allow-all.js.map +1 -0
- package/dist/access/index.d.ts +5 -0
- package/dist/access/index.d.ts.map +1 -0
- package/dist/access/index.js +4 -0
- package/dist/access/index.js.map +1 -0
- package/dist/access/role-based.d.ts +8 -0
- package/dist/access/role-based.d.ts.map +1 -0
- package/dist/access/role-based.js +42 -0
- package/dist/access/role-based.js.map +1 -0
- package/dist/access/types.d.ts +41 -0
- package/dist/access/types.d.ts.map +1 -0
- package/dist/access/types.js +20 -0
- package/dist/access/types.js.map +1 -0
- package/dist/agent-tool/factory.d.ts +4 -0
- package/dist/agent-tool/factory.d.ts.map +1 -0
- package/dist/agent-tool/factory.js +4 -0
- package/dist/agent-tool/factory.js.map +1 -0
- package/dist/agent-tool/index.d.ts +3 -0
- package/dist/agent-tool/index.d.ts.map +1 -0
- package/dist/agent-tool/index.js +2 -0
- package/dist/agent-tool/index.js.map +1 -0
- package/dist/agent-tool/types.d.ts +15 -0
- package/dist/agent-tool/types.d.ts.map +1 -0
- package/dist/agent-tool/types.js +2 -0
- package/dist/agent-tool/types.js.map +1 -0
- package/dist/auth/api-key.d.ts +6 -0
- package/dist/auth/api-key.d.ts.map +1 -0
- package/dist/auth/api-key.js +36 -0
- package/dist/auth/api-key.js.map +1 -0
- package/dist/auth/index.d.ts +4 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +3 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/no-auth.d.ts +3 -0
- package/dist/auth/no-auth.d.ts.map +1 -0
- package/dist/auth/no-auth.js +21 -0
- package/dist/auth/no-auth.js.map +1 -0
- package/dist/auth/types.d.ts +58 -0
- package/dist/auth/types.d.ts.map +1 -0
- package/dist/auth/types.js +2 -0
- package/dist/auth/types.js.map +1 -0
- package/dist/coding-agent/claude-code.d.ts +10 -0
- package/dist/coding-agent/claude-code.d.ts.map +1 -0
- package/dist/coding-agent/claude-code.js +38 -0
- package/dist/coding-agent/claude-code.js.map +1 -0
- package/dist/coding-agent/google-gemini.d.ts +10 -0
- package/dist/coding-agent/google-gemini.d.ts.map +1 -0
- package/dist/coding-agent/google-gemini.js +29 -0
- package/dist/coding-agent/google-gemini.js.map +1 -0
- package/dist/coding-agent/index.d.ts +8 -0
- package/dist/coding-agent/index.d.ts.map +1 -0
- package/dist/coding-agent/index.js +4 -0
- package/dist/coding-agent/index.js.map +1 -0
- package/dist/coding-agent/openai-codex.d.ts +10 -0
- package/dist/coding-agent/openai-codex.d.ts.map +1 -0
- package/dist/coding-agent/openai-codex.js +29 -0
- package/dist/coding-agent/openai-codex.js.map +1 -0
- package/dist/coding-agent/shared.d.ts +10 -0
- package/dist/coding-agent/shared.d.ts.map +1 -0
- package/dist/coding-agent/shared.js +44 -0
- package/dist/coding-agent/shared.js.map +1 -0
- package/dist/coding-agent/types.d.ts +10 -0
- package/dist/coding-agent/types.d.ts.map +1 -0
- package/dist/coding-agent/types.js +2 -0
- package/dist/coding-agent/types.js.map +1 -0
- package/dist/credential-vault/aws-secrets-manager.d.ts +19 -0
- package/dist/credential-vault/aws-secrets-manager.d.ts.map +1 -0
- package/dist/credential-vault/aws-secrets-manager.js +96 -0
- package/dist/credential-vault/aws-secrets-manager.js.map +1 -0
- package/dist/credential-vault/env-vault.d.ts +15 -0
- package/dist/credential-vault/env-vault.d.ts.map +1 -0
- package/dist/credential-vault/env-vault.js +25 -0
- package/dist/credential-vault/env-vault.js.map +1 -0
- package/dist/credential-vault/index.d.ts +6 -0
- package/dist/credential-vault/index.d.ts.map +1 -0
- package/dist/credential-vault/index.js +3 -0
- package/dist/credential-vault/index.js.map +1 -0
- package/dist/credential-vault/types.d.ts +30 -0
- package/dist/credential-vault/types.d.ts.map +1 -0
- package/dist/credential-vault/types.js +2 -0
- package/dist/credential-vault/types.js.map +1 -0
- package/dist/errors.d.ts +18 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +35 -0
- package/dist/errors.js.map +1 -0
- package/dist/incident/index.d.ts +4 -0
- package/dist/incident/index.d.ts.map +1 -0
- package/dist/incident/index.js +3 -0
- package/dist/incident/index.js.map +1 -0
- package/dist/incident/opsgenie.d.ts +19 -0
- package/dist/incident/opsgenie.d.ts.map +1 -0
- package/dist/incident/opsgenie.js +104 -0
- package/dist/incident/opsgenie.js.map +1 -0
- package/dist/incident/pagerduty.d.ts +19 -0
- package/dist/incident/pagerduty.d.ts.map +1 -0
- package/dist/incident/pagerduty.js +115 -0
- package/dist/incident/pagerduty.js.map +1 -0
- package/dist/incident/types.d.ts +67 -0
- package/dist/incident/types.d.ts.map +1 -0
- package/dist/incident/types.js +2 -0
- package/dist/incident/types.js.map +1 -0
- package/dist/index.d.ts +28 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -0
- package/dist/issue-tracking/github-issues.d.ts +22 -0
- package/dist/issue-tracking/github-issues.d.ts.map +1 -0
- package/dist/issue-tracking/github-issues.js +136 -0
- package/dist/issue-tracking/github-issues.js.map +1 -0
- package/dist/issue-tracking/index.d.ts +6 -0
- package/dist/issue-tracking/index.d.ts.map +1 -0
- package/dist/issue-tracking/index.js +5 -0
- package/dist/issue-tracking/index.js.map +1 -0
- package/dist/issue-tracking/jira.d.ts +22 -0
- package/dist/issue-tracking/jira.d.ts.map +1 -0
- package/dist/issue-tracking/jira.js +225 -0
- package/dist/issue-tracking/jira.js.map +1 -0
- package/dist/issue-tracking/linear.d.ts +16 -0
- package/dist/issue-tracking/linear.d.ts.map +1 -0
- package/dist/issue-tracking/linear.js +311 -0
- package/dist/issue-tracking/linear.js.map +1 -0
- package/dist/issue-tracking/types.d.ts +163 -0
- package/dist/issue-tracking/types.d.ts.map +1 -0
- package/dist/issue-tracking/types.js +28 -0
- package/dist/issue-tracking/types.js.map +1 -0
- package/dist/logger.d.ts +8 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +7 -0
- package/dist/logger.js.map +1 -0
- package/dist/messaging/index.d.ts +6 -0
- package/dist/messaging/index.d.ts.map +1 -0
- package/dist/messaging/index.js +3 -0
- package/dist/messaging/index.js.map +1 -0
- package/dist/messaging/slack.d.ts +16 -0
- package/dist/messaging/slack.d.ts.map +1 -0
- package/dist/messaging/slack.js +41 -0
- package/dist/messaging/slack.js.map +1 -0
- package/dist/messaging/teams.d.ts +22 -0
- package/dist/messaging/teams.d.ts.map +1 -0
- package/dist/messaging/teams.js +125 -0
- package/dist/messaging/teams.js.map +1 -0
- package/dist/messaging/types.d.ts +30 -0
- package/dist/messaging/types.d.ts.map +1 -0
- package/dist/messaging/types.js +2 -0
- package/dist/messaging/types.js.map +1 -0
- package/dist/notification/discord-webhook.d.ts +16 -0
- package/dist/notification/discord-webhook.d.ts.map +1 -0
- package/dist/notification/discord-webhook.js +104 -0
- package/dist/notification/discord-webhook.js.map +1 -0
- package/dist/notification/email.d.ts +22 -0
- package/dist/notification/email.d.ts.map +1 -0
- package/dist/notification/email.js +127 -0
- package/dist/notification/email.js.map +1 -0
- package/dist/notification/github-summary.d.ts +13 -0
- package/dist/notification/github-summary.d.ts.map +1 -0
- package/dist/notification/github-summary.js +67 -0
- package/dist/notification/github-summary.js.map +1 -0
- package/dist/notification/index.d.ts +8 -0
- package/dist/notification/index.d.ts.map +1 -0
- package/dist/notification/index.js +7 -0
- package/dist/notification/index.js.map +1 -0
- package/dist/notification/slack-webhook.d.ts +16 -0
- package/dist/notification/slack-webhook.d.ts.map +1 -0
- package/dist/notification/slack-webhook.js +123 -0
- package/dist/notification/slack-webhook.js.map +1 -0
- package/dist/notification/teams-webhook.d.ts +16 -0
- package/dist/notification/teams-webhook.d.ts.map +1 -0
- package/dist/notification/teams-webhook.js +125 -0
- package/dist/notification/teams-webhook.js.map +1 -0
- package/dist/notification/types.d.ts +47 -0
- package/dist/notification/types.d.ts.map +1 -0
- package/dist/notification/types.js +2 -0
- package/dist/notification/types.js.map +1 -0
- package/dist/notification/webhook.d.ts +28 -0
- package/dist/notification/webhook.d.ts.map +1 -0
- package/dist/notification/webhook.js +64 -0
- package/dist/notification/webhook.js.map +1 -0
- package/dist/observability/cloudwatch.d.ts +19 -0
- package/dist/observability/cloudwatch.d.ts.map +1 -0
- package/dist/observability/cloudwatch.js +182 -0
- package/dist/observability/cloudwatch.js.map +1 -0
- package/dist/observability/datadog.d.ts +22 -0
- package/dist/observability/datadog.d.ts.map +1 -0
- package/dist/observability/datadog.js +139 -0
- package/dist/observability/datadog.js.map +1 -0
- package/dist/observability/elastic.d.ts +42 -0
- package/dist/observability/elastic.d.ts.map +1 -0
- package/dist/observability/elastic.js +244 -0
- package/dist/observability/elastic.js.map +1 -0
- package/dist/observability/file.d.ts +16 -0
- package/dist/observability/file.d.ts.map +1 -0
- package/dist/observability/file.js +92 -0
- package/dist/observability/file.js.map +1 -0
- package/dist/observability/index.d.ts +10 -0
- package/dist/observability/index.d.ts.map +1 -0
- package/dist/observability/index.js +9 -0
- package/dist/observability/index.js.map +1 -0
- package/dist/observability/loki.d.ts +22 -0
- package/dist/observability/loki.d.ts.map +1 -0
- package/dist/observability/loki.js +206 -0
- package/dist/observability/loki.js.map +1 -0
- package/dist/observability/newrelic.d.ts +22 -0
- package/dist/observability/newrelic.d.ts.map +1 -0
- package/dist/observability/newrelic.js +147 -0
- package/dist/observability/newrelic.js.map +1 -0
- package/dist/observability/sentry.d.ts +25 -0
- package/dist/observability/sentry.d.ts.map +1 -0
- package/dist/observability/sentry.js +151 -0
- package/dist/observability/sentry.js.map +1 -0
- package/dist/observability/splunk.d.ts +22 -0
- package/dist/observability/splunk.d.ts.map +1 -0
- package/dist/observability/splunk.js +178 -0
- package/dist/observability/splunk.js.map +1 -0
- package/dist/observability/types.d.ts +54 -0
- package/dist/observability/types.d.ts.map +1 -0
- package/dist/observability/types.js +2 -0
- package/dist/observability/types.js.map +1 -0
- package/dist/source-control/github.d.ts +11 -0
- package/dist/source-control/github.d.ts.map +1 -0
- package/dist/source-control/github.js +162 -0
- package/dist/source-control/github.js.map +1 -0
- package/dist/source-control/gitlab.d.ts +25 -0
- package/dist/source-control/gitlab.d.ts.map +1 -0
- package/dist/source-control/gitlab.js +224 -0
- package/dist/source-control/gitlab.js.map +1 -0
- package/dist/source-control/index.d.ts +6 -0
- package/dist/source-control/index.d.ts.map +1 -0
- package/dist/source-control/index.js +3 -0
- package/dist/source-control/index.js.map +1 -0
- package/dist/source-control/types.d.ts +115 -0
- package/dist/source-control/types.d.ts.map +1 -0
- package/dist/source-control/types.js +2 -0
- package/dist/source-control/types.js.map +1 -0
- package/dist/storage/csi.d.ts +36 -0
- package/dist/storage/csi.d.ts.map +1 -0
- package/dist/storage/csi.js +39 -0
- package/dist/storage/csi.js.map +1 -0
- package/dist/storage/fs.d.ts +5 -0
- package/dist/storage/fs.d.ts.map +1 -0
- package/dist/storage/fs.js +11 -0
- package/dist/storage/fs.js.map +1 -0
- package/dist/storage/index.d.ts +13 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +14 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/memory/fs.d.ts +15 -0
- package/dist/storage/memory/fs.d.ts.map +1 -0
- package/dist/storage/memory/fs.js +65 -0
- package/dist/storage/memory/fs.js.map +1 -0
- package/dist/storage/memory/s3.d.ts +17 -0
- package/dist/storage/memory/s3.d.ts.map +1 -0
- package/dist/storage/memory/s3.js +77 -0
- package/dist/storage/memory/s3.js.map +1 -0
- package/dist/storage/s3.d.ts +7 -0
- package/dist/storage/s3.d.ts.map +1 -0
- package/dist/storage/s3.js +12 -0
- package/dist/storage/s3.js.map +1 -0
- package/dist/storage/session/fs.d.ts +16 -0
- package/dist/storage/session/fs.d.ts.map +1 -0
- package/dist/storage/session/fs.js +81 -0
- package/dist/storage/session/fs.js.map +1 -0
- package/dist/storage/session/s3.d.ts +18 -0
- package/dist/storage/session/s3.d.ts.map +1 -0
- package/dist/storage/session/s3.js +121 -0
- package/dist/storage/session/s3.js.map +1 -0
- package/dist/storage/types.d.ts +206 -0
- package/dist/storage/types.d.ts.map +1 -0
- package/dist/storage/types.js +10 -0
- package/dist/storage/types.js.map +1 -0
- package/dist/storage/workspace/fs.d.ts +18 -0
- package/dist/storage/workspace/fs.d.ts.map +1 -0
- package/dist/storage/workspace/fs.js +153 -0
- package/dist/storage/workspace/fs.js.map +1 -0
- package/dist/storage/workspace/s3.d.ts +20 -0
- package/dist/storage/workspace/s3.d.ts.map +1 -0
- package/dist/storage/workspace/s3.js +180 -0
- package/dist/storage/workspace/s3.js.map +1 -0
- package/package.json +137 -0
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import type { SourceControlProvider } from "./types.js";
|
|
3
|
+
import type { Logger } from "../logger.js";
|
|
4
|
+
export declare const gitlabConfigSchema: z.ZodObject<{
|
|
5
|
+
token: z.ZodString;
|
|
6
|
+
projectId: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
|
|
7
|
+
baseUrl: z.ZodDefault<z.ZodString>;
|
|
8
|
+
baseBranch: z.ZodDefault<z.ZodString>;
|
|
9
|
+
logger: z.ZodOptional<z.ZodType<Logger, z.ZodTypeDef, Logger>>;
|
|
10
|
+
}, "strip", z.ZodTypeAny, {
|
|
11
|
+
baseUrl: string;
|
|
12
|
+
token: string;
|
|
13
|
+
baseBranch: string;
|
|
14
|
+
projectId: string | number;
|
|
15
|
+
logger?: Logger | undefined;
|
|
16
|
+
}, {
|
|
17
|
+
token: string;
|
|
18
|
+
projectId: string | number;
|
|
19
|
+
logger?: Logger | undefined;
|
|
20
|
+
baseUrl?: string | undefined;
|
|
21
|
+
baseBranch?: string | undefined;
|
|
22
|
+
}>;
|
|
23
|
+
export type GitLabSourceControlConfig = z.infer<typeof gitlabConfigSchema>;
|
|
24
|
+
export declare function gitlab(config: GitLabSourceControlConfig): SourceControlProvider;
|
|
25
|
+
//# sourceMappingURL=gitlab.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gitlab.d.ts","sourceRoot":"","sources":["../../src/source-control/gitlab.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EACV,qBAAqB,EAKtB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAM3C,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;EAM7B,CAAC;AAEH,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAwD3E,wBAAgB,MAAM,CAAC,MAAM,EAAE,yBAAyB,GAAG,qBAAqB,CAgO/E"}
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
import { execFile } from "node:child_process";
|
|
2
|
+
import { promisify } from "node:util";
|
|
3
|
+
import { z } from "zod";
|
|
4
|
+
import { consoleLogger } from "../logger.js";
|
|
5
|
+
import { ProviderApiError } from "../errors.js";
|
|
6
|
+
const execFileAsync = promisify(execFile);
|
|
7
|
+
export const gitlabConfigSchema = z.object({
|
|
8
|
+
token: z.string().min(1, "GitLab token is required"),
|
|
9
|
+
projectId: z.union([z.string().min(1), z.number()]),
|
|
10
|
+
baseUrl: z.string().default("https://gitlab.com"),
|
|
11
|
+
baseBranch: z.string().default("main"),
|
|
12
|
+
logger: z.custom().optional(),
|
|
13
|
+
});
|
|
14
|
+
async function git(args, opts) {
|
|
15
|
+
try {
|
|
16
|
+
const { stdout } = await execFileAsync("git", args);
|
|
17
|
+
return stdout;
|
|
18
|
+
}
|
|
19
|
+
catch (err) {
|
|
20
|
+
if (opts?.ignoreReturnCode)
|
|
21
|
+
return "";
|
|
22
|
+
throw err;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
async function glApi(method, path, baseUrl, token, body) {
|
|
26
|
+
const resp = await fetch(`${baseUrl}/api/v4${path}`, {
|
|
27
|
+
method,
|
|
28
|
+
headers: {
|
|
29
|
+
"PRIVATE-TOKEN": token,
|
|
30
|
+
...(body ? { "Content-Type": "application/json" } : {}),
|
|
31
|
+
},
|
|
32
|
+
body: body ? JSON.stringify(body) : undefined,
|
|
33
|
+
});
|
|
34
|
+
if (!resp.ok) {
|
|
35
|
+
const body = await resp.text().catch(() => "");
|
|
36
|
+
throw new ProviderApiError("GitLab", resp.status, resp.statusText, body);
|
|
37
|
+
}
|
|
38
|
+
// Some endpoints (204 No Content) return no body
|
|
39
|
+
const contentLength = resp.headers.get("content-length");
|
|
40
|
+
if (resp.status === 204 || contentLength === "0")
|
|
41
|
+
return undefined;
|
|
42
|
+
return resp.json();
|
|
43
|
+
}
|
|
44
|
+
/** Map GitLab MR state to our normalized PullRequest state */
|
|
45
|
+
function mapMrState(state, mergedAt) {
|
|
46
|
+
if (mergedAt || state === "merged")
|
|
47
|
+
return "merged";
|
|
48
|
+
if (state === "opened")
|
|
49
|
+
return "open";
|
|
50
|
+
return "closed";
|
|
51
|
+
}
|
|
52
|
+
/** Map our PrListOptions state to GitLab MR state query param */
|
|
53
|
+
function toGitLabState(state) {
|
|
54
|
+
switch (state) {
|
|
55
|
+
case "open":
|
|
56
|
+
return "opened";
|
|
57
|
+
case "all":
|
|
58
|
+
return "all";
|
|
59
|
+
default:
|
|
60
|
+
return state; // "closed", "merged" pass through
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
export function gitlab(config) {
|
|
64
|
+
const parsed = gitlabConfigSchema.parse(config);
|
|
65
|
+
const { token, baseBranch } = parsed;
|
|
66
|
+
const baseUrl = parsed.baseUrl.replace(/\/+$/, "");
|
|
67
|
+
const projectId = typeof parsed.projectId === "number" ? String(parsed.projectId) : encodeURIComponent(parsed.projectId);
|
|
68
|
+
const log = parsed.logger ?? consoleLogger;
|
|
69
|
+
return {
|
|
70
|
+
async verifyAccess() {
|
|
71
|
+
const project = (await glApi("GET", `/projects/${projectId}`, baseUrl, token));
|
|
72
|
+
log.info(`Verified access to ${project.path_with_namespace}`);
|
|
73
|
+
},
|
|
74
|
+
async configureBotIdentity() {
|
|
75
|
+
await git(["config", "user.name", "gitlab-bot"]);
|
|
76
|
+
await git(["config", "user.email", "gitlab-bot@noreply.gitlab.com"]);
|
|
77
|
+
log.debug("Configured git bot identity");
|
|
78
|
+
},
|
|
79
|
+
async createBranch(name) {
|
|
80
|
+
await git(["checkout", "-b", name]);
|
|
81
|
+
log.info(`Created branch: ${name}`);
|
|
82
|
+
},
|
|
83
|
+
async pushBranch(name) {
|
|
84
|
+
// Retrieve the project path for constructing the remote URL
|
|
85
|
+
const project = (await glApi("GET", `/projects/${projectId}`, baseUrl, token));
|
|
86
|
+
const host = new URL(baseUrl).host;
|
|
87
|
+
const remoteUrl = `https://gitlab-ci-token@${host}/${project.path_with_namespace}.git`;
|
|
88
|
+
await git(["remote", "set-url", "origin", remoteUrl]);
|
|
89
|
+
// Push using http.extraheader to provide the token without exposing it in the URL
|
|
90
|
+
await execFileAsync("git", ["-c", `http.extraheader=PRIVATE-TOKEN: ${token}`, "push", "origin", name]);
|
|
91
|
+
log.info(`Pushed branch: ${name}`);
|
|
92
|
+
},
|
|
93
|
+
async hasChanges() {
|
|
94
|
+
const unstaged = await git(["diff", "--name-only"], { ignoreReturnCode: true });
|
|
95
|
+
const staged = await git(["diff", "--cached", "--name-only"], { ignoreReturnCode: true });
|
|
96
|
+
return unstaged.trim().length > 0 || staged.trim().length > 0;
|
|
97
|
+
},
|
|
98
|
+
async hasNewCommits() {
|
|
99
|
+
const output = await git(["rev-list", "--count", "HEAD", `^origin/${baseBranch}`], { ignoreReturnCode: true });
|
|
100
|
+
const count = parseInt(output.trim(), 10);
|
|
101
|
+
return !isNaN(count) && count > 0;
|
|
102
|
+
},
|
|
103
|
+
async getChangedFiles() {
|
|
104
|
+
const output = await git(["diff", "--name-only", `origin/${baseBranch}..HEAD`], { ignoreReturnCode: true });
|
|
105
|
+
return output.trim().split("\n").filter(Boolean);
|
|
106
|
+
},
|
|
107
|
+
async resetPaths(paths) {
|
|
108
|
+
for (const p of paths) {
|
|
109
|
+
await git(["checkout", "HEAD", "--", p], { ignoreReturnCode: true });
|
|
110
|
+
}
|
|
111
|
+
log.debug(`Reset paths: ${paths.join(", ")}`);
|
|
112
|
+
},
|
|
113
|
+
async stageAndCommit(message) {
|
|
114
|
+
await git(["add", "-A"]);
|
|
115
|
+
await git(["commit", "-m", message]);
|
|
116
|
+
},
|
|
117
|
+
async createPullRequest(opts) {
|
|
118
|
+
const body = {
|
|
119
|
+
title: opts.title,
|
|
120
|
+
description: opts.body,
|
|
121
|
+
source_branch: opts.head,
|
|
122
|
+
target_branch: opts.base || baseBranch,
|
|
123
|
+
};
|
|
124
|
+
if (opts.labels && opts.labels.length > 0) {
|
|
125
|
+
body.labels = opts.labels.join(",");
|
|
126
|
+
}
|
|
127
|
+
const mr = (await glApi("POST", `/projects/${projectId}/merge_requests`, baseUrl, token, body));
|
|
128
|
+
log.info(`Created MR !${mr.iid}: ${mr.web_url}`);
|
|
129
|
+
return {
|
|
130
|
+
number: mr.iid,
|
|
131
|
+
url: mr.web_url,
|
|
132
|
+
state: "open",
|
|
133
|
+
title: mr.title,
|
|
134
|
+
};
|
|
135
|
+
},
|
|
136
|
+
async listPullRequests(opts) {
|
|
137
|
+
const state = opts?.state ?? "open";
|
|
138
|
+
const limit = opts?.limit ?? 30;
|
|
139
|
+
const params = new URLSearchParams({
|
|
140
|
+
state: toGitLabState(state),
|
|
141
|
+
per_page: String(limit),
|
|
142
|
+
order_by: "updated_at",
|
|
143
|
+
sort: "desc",
|
|
144
|
+
});
|
|
145
|
+
if (opts?.labels && opts.labels.length > 0) {
|
|
146
|
+
params.set("labels", opts.labels.join(","));
|
|
147
|
+
}
|
|
148
|
+
const mrs = (await glApi("GET", `/projects/${projectId}/merge_requests?${params}`, baseUrl, token));
|
|
149
|
+
return mrs.map((mr) => ({
|
|
150
|
+
number: mr.iid,
|
|
151
|
+
url: mr.web_url,
|
|
152
|
+
state: mapMrState(mr.state, mr.merged_at),
|
|
153
|
+
title: mr.title,
|
|
154
|
+
mergedAt: mr.merged_at,
|
|
155
|
+
closedAt: mr.closed_at,
|
|
156
|
+
}));
|
|
157
|
+
},
|
|
158
|
+
async findExistingPr(searchTerm) {
|
|
159
|
+
// Search open MRs
|
|
160
|
+
const openParams = new URLSearchParams({
|
|
161
|
+
state: "opened",
|
|
162
|
+
search: searchTerm,
|
|
163
|
+
per_page: "20",
|
|
164
|
+
});
|
|
165
|
+
const openMrs = (await glApi("GET", `/projects/${projectId}/merge_requests?${openParams}`, baseUrl, token));
|
|
166
|
+
for (const mr of openMrs) {
|
|
167
|
+
const text = `${mr.title} ${mr.description || ""}`;
|
|
168
|
+
if (new RegExp(`\\b${searchTerm}\\b`, "i").test(text)) {
|
|
169
|
+
log.info(`Found open MR with match: ${mr.web_url}`);
|
|
170
|
+
return {
|
|
171
|
+
number: mr.iid,
|
|
172
|
+
url: mr.web_url,
|
|
173
|
+
state: "open",
|
|
174
|
+
title: mr.title,
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
// Search recently merged MRs
|
|
179
|
+
const mergedParams = new URLSearchParams({
|
|
180
|
+
state: "merged",
|
|
181
|
+
search: searchTerm,
|
|
182
|
+
order_by: "updated_at",
|
|
183
|
+
sort: "desc",
|
|
184
|
+
per_page: "20",
|
|
185
|
+
});
|
|
186
|
+
const mergedMrs = (await glApi("GET", `/projects/${projectId}/merge_requests?${mergedParams}`, baseUrl, token));
|
|
187
|
+
const cutoff = new Date(Date.now() - 30 * 24 * 60 * 60 * 1000);
|
|
188
|
+
for (const mr of mergedMrs) {
|
|
189
|
+
if (mr.merged_at && new Date(mr.merged_at) > cutoff) {
|
|
190
|
+
const text = `${mr.title} ${mr.description || ""}`;
|
|
191
|
+
if (new RegExp(`\\b${searchTerm}\\b`, "i").test(text)) {
|
|
192
|
+
log.info(`Found merged MR with match: ${mr.web_url}`);
|
|
193
|
+
return {
|
|
194
|
+
number: mr.iid,
|
|
195
|
+
url: mr.web_url,
|
|
196
|
+
state: "merged",
|
|
197
|
+
title: mr.title,
|
|
198
|
+
mergedAt: mr.merged_at,
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
return null;
|
|
204
|
+
},
|
|
205
|
+
async dispatchWorkflow(opts) {
|
|
206
|
+
// GitLab triggers pipelines via POST /projects/:id/pipeline
|
|
207
|
+
// The targetRepo can override the project; the workflow field is used as the ref
|
|
208
|
+
const targetProjectId = opts.targetRepo ? encodeURIComponent(opts.targetRepo) : projectId;
|
|
209
|
+
const variables = opts.inputs
|
|
210
|
+
? Object.entries(opts.inputs).map(([key, value]) => ({
|
|
211
|
+
key,
|
|
212
|
+
value,
|
|
213
|
+
variable_type: "env_var",
|
|
214
|
+
}))
|
|
215
|
+
: [];
|
|
216
|
+
await glApi("POST", `/projects/${targetProjectId}/pipeline`, baseUrl, token, {
|
|
217
|
+
ref: opts.workflow || baseBranch,
|
|
218
|
+
variables,
|
|
219
|
+
});
|
|
220
|
+
log.info(`Triggered pipeline on ref "${opts.workflow}" for project ${opts.targetRepo || projectId}`);
|
|
221
|
+
},
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
//# sourceMappingURL=gitlab.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gitlab.js","sourceRoot":"","sources":["../../src/source-control/gitlab.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export type { SourceControlProvider, PullRequest, PrCreateOptions, PrListOptions, DispatchWorkflowOptions, } from "./types.js";
|
|
2
|
+
export { github } from "./github.js";
|
|
3
|
+
export type { GitHubSourceControlConfig } from "./github.js";
|
|
4
|
+
export { gitlab, gitlabConfigSchema } from "./gitlab.js";
|
|
5
|
+
export type { GitLabSourceControlConfig } from "./gitlab.js";
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/source-control/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,qBAAqB,EACrB,WAAW,EACX,eAAe,EACf,aAAa,EACb,uBAAuB,GACxB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,YAAY,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAE7D,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACzD,YAAY,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/source-control/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAGrC,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/** A pull request from a source control provider. */
|
|
2
|
+
export interface PullRequest {
|
|
3
|
+
/** Pull request number. */
|
|
4
|
+
number: number;
|
|
5
|
+
/** Web URL to view the pull request. */
|
|
6
|
+
url: string;
|
|
7
|
+
/** Current pull request state. */
|
|
8
|
+
state: "open" | "merged" | "closed";
|
|
9
|
+
/** Pull request title. */
|
|
10
|
+
title: string;
|
|
11
|
+
/** ISO 8601 timestamp when the PR was merged, or null. */
|
|
12
|
+
mergedAt?: string | null;
|
|
13
|
+
/** ISO 8601 timestamp when the PR was closed, or null. */
|
|
14
|
+
closedAt?: string | null;
|
|
15
|
+
}
|
|
16
|
+
/** Options for creating a new pull request. */
|
|
17
|
+
export interface PrCreateOptions {
|
|
18
|
+
/** Pull request title. */
|
|
19
|
+
title: string;
|
|
20
|
+
/** Pull request description body (markdown). */
|
|
21
|
+
body: string;
|
|
22
|
+
/** Source branch name. */
|
|
23
|
+
head: string;
|
|
24
|
+
/** Target branch name (defaults to repository default branch). */
|
|
25
|
+
base?: string;
|
|
26
|
+
/** Labels to attach to the pull request. */
|
|
27
|
+
labels?: string[];
|
|
28
|
+
}
|
|
29
|
+
/** Options for dispatching a remote workflow (e.g., GitHub Actions). */
|
|
30
|
+
export interface DispatchWorkflowOptions {
|
|
31
|
+
/** Full repository reference (e.g., "owner/repo"). */
|
|
32
|
+
targetRepo: string;
|
|
33
|
+
/** Workflow filename or ID to dispatch. */
|
|
34
|
+
workflow: string;
|
|
35
|
+
/** Key-value inputs to pass to the workflow. */
|
|
36
|
+
inputs?: Record<string, string>;
|
|
37
|
+
}
|
|
38
|
+
/** Options for listing pull requests. */
|
|
39
|
+
export interface PrListOptions {
|
|
40
|
+
/** Filter by pull request state. */
|
|
41
|
+
state?: "open" | "closed" | "merged" | "all";
|
|
42
|
+
/** Filter by labels. */
|
|
43
|
+
labels?: string[];
|
|
44
|
+
/** Maximum number of results to return. */
|
|
45
|
+
limit?: number;
|
|
46
|
+
}
|
|
47
|
+
/** Provider interface for source control operations (branches, PRs, workflows). */
|
|
48
|
+
export interface SourceControlProvider {
|
|
49
|
+
/**
|
|
50
|
+
* Verify that the provider credentials and connection are valid.
|
|
51
|
+
* @returns Resolves if access is valid; rejects otherwise.
|
|
52
|
+
*/
|
|
53
|
+
verifyAccess(): Promise<void>;
|
|
54
|
+
/** Configure the git bot identity (name and email) for automated commits. */
|
|
55
|
+
configureBotIdentity(): Promise<void>;
|
|
56
|
+
/**
|
|
57
|
+
* Create a new local branch.
|
|
58
|
+
* @param name - Branch name to create.
|
|
59
|
+
*/
|
|
60
|
+
createBranch(name: string): Promise<void>;
|
|
61
|
+
/**
|
|
62
|
+
* Push a branch to the remote repository.
|
|
63
|
+
* @param name - Branch name to push.
|
|
64
|
+
*/
|
|
65
|
+
pushBranch(name: string): Promise<void>;
|
|
66
|
+
/**
|
|
67
|
+
* Check whether there are uncommitted changes in the working tree.
|
|
68
|
+
* @returns True if there are uncommitted changes.
|
|
69
|
+
*/
|
|
70
|
+
hasChanges(): Promise<boolean>;
|
|
71
|
+
/**
|
|
72
|
+
* Check whether there are unpushed commits on the current branch.
|
|
73
|
+
* @returns True if there are new commits not yet pushed.
|
|
74
|
+
*/
|
|
75
|
+
hasNewCommits(): Promise<boolean>;
|
|
76
|
+
/**
|
|
77
|
+
* Get the list of files that have been changed.
|
|
78
|
+
* @returns Array of changed file paths.
|
|
79
|
+
*/
|
|
80
|
+
getChangedFiles(): Promise<string[]>;
|
|
81
|
+
/**
|
|
82
|
+
* Reset (discard) changes for the specified paths.
|
|
83
|
+
* @param paths - File paths to reset.
|
|
84
|
+
*/
|
|
85
|
+
resetPaths(paths: string[]): Promise<void>;
|
|
86
|
+
/**
|
|
87
|
+
* Stage all changes and create a commit.
|
|
88
|
+
* @param message - Commit message.
|
|
89
|
+
*/
|
|
90
|
+
stageAndCommit(message: string): Promise<void>;
|
|
91
|
+
/**
|
|
92
|
+
* Create a new pull request.
|
|
93
|
+
* @param opts - Pull request creation options.
|
|
94
|
+
* @returns The newly created pull request.
|
|
95
|
+
*/
|
|
96
|
+
createPullRequest(opts: PrCreateOptions): Promise<PullRequest>;
|
|
97
|
+
/**
|
|
98
|
+
* List pull requests matching the given filters.
|
|
99
|
+
* @param opts - Optional list filters.
|
|
100
|
+
* @returns Matching pull requests.
|
|
101
|
+
*/
|
|
102
|
+
listPullRequests(opts?: PrListOptions): Promise<PullRequest[]>;
|
|
103
|
+
/**
|
|
104
|
+
* Find an existing pull request by a search term.
|
|
105
|
+
* @param searchTerm - Term to search for (e.g., branch name or title).
|
|
106
|
+
* @returns The matching pull request, or null if not found.
|
|
107
|
+
*/
|
|
108
|
+
findExistingPr(searchTerm: string): Promise<PullRequest | null>;
|
|
109
|
+
/**
|
|
110
|
+
* Dispatch a remote workflow.
|
|
111
|
+
* @param opts - Workflow dispatch options.
|
|
112
|
+
*/
|
|
113
|
+
dispatchWorkflow(opts: DispatchWorkflowOptions): Promise<void>;
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/source-control/types.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,MAAM,WAAW,WAAW;IAC1B,2BAA2B;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,wCAAwC;IACxC,GAAG,EAAE,MAAM,CAAC;IACZ,kCAAkC;IAClC,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACpC,0BAA0B;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,+CAA+C;AAC/C,MAAM,WAAW,eAAe;IAC9B,0BAA0B;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,4CAA4C;IAC5C,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,wEAAwE;AACxE,MAAM,WAAW,uBAAuB;IACtC,sDAAsD;IACtD,UAAU,EAAE,MAAM,CAAC;IACnB,2CAA2C;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,gDAAgD;IAChD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED,yCAAyC;AACzC,MAAM,WAAW,aAAa;IAC5B,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC;IAC7C,wBAAwB;IACxB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,mFAAmF;AACnF,MAAM,WAAW,qBAAqB;IACpC;;;OAGG;IACH,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9B,6EAA6E;IAC7E,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtC;;;OAGG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1C;;;OAGG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExC;;;OAGG;IACH,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAE/B;;;OAGG;IACH,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAElC;;;OAGG;IACH,eAAe,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAErC;;;OAGG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3C;;;OAGG;IACH,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE/C;;;;OAIG;IACH,iBAAiB,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAE/D;;;;OAIG;IACH,gBAAgB,CAAC,IAAI,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAE/D;;;;OAIG;IACH,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAEhE;;;OAGG;IACH,gBAAgB,CAAC,IAAI,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAChE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/source-control/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { StorageProvider } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Configuration for the CSI (Container Storage Interface) storage provider.
|
|
4
|
+
*
|
|
5
|
+
* This provider targets Kubernetes deployments where a PersistentVolumeClaim
|
|
6
|
+
* is mounted into the pod. Because CSI drivers expose block or file storage
|
|
7
|
+
* as a regular mount point, the underlying implementation reuses the
|
|
8
|
+
* filesystem-based stores (`FsSessionStore`, `FsMemoryStore`,
|
|
9
|
+
* `FsWorkspaceStore`).
|
|
10
|
+
*/
|
|
11
|
+
export interface CsiStorageConfig {
|
|
12
|
+
/** Absolute path where the PVC is mounted, e.g. "/data/sweny". */
|
|
13
|
+
mountPath: string;
|
|
14
|
+
/** Optional human-readable volume name used for logging / identification. */
|
|
15
|
+
volumeName?: string;
|
|
16
|
+
/** Optional Kubernetes namespace, used for logging / identification. */
|
|
17
|
+
namespace?: string;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Creates a {@link StorageProvider} backed by a Kubernetes CSI volume.
|
|
21
|
+
*
|
|
22
|
+
* The factory validates that `mountPath` exists at creation time so
|
|
23
|
+
* mis-configurations surface early rather than at first write.
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```ts
|
|
27
|
+
* const storage = csiStorage({
|
|
28
|
+
* mountPath: "/data/sweny",
|
|
29
|
+
* volumeName: "sweny-pvc",
|
|
30
|
+
* namespace: "default",
|
|
31
|
+
* });
|
|
32
|
+
* const sessions = storage.createSessionStore();
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export declare function csiStorage(config: CsiStorageConfig): StorageProvider;
|
|
36
|
+
//# sourceMappingURL=csi.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"csi.d.ts","sourceRoot":"","sources":["../../src/storage/csi.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAKlD;;;;;;;;GAQG;AACH,MAAM,WAAW,gBAAgB;IAC/B,kEAAkE;IAClE,SAAS,EAAE,MAAM,CAAC;IAElB,6EAA6E;IAC7E,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,eAAe,CAsBpE"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { existsSync } from "node:fs";
|
|
2
|
+
import { FsSessionStore } from "./session/fs.js";
|
|
3
|
+
import { FsMemoryStore } from "./memory/fs.js";
|
|
4
|
+
import { FsWorkspaceStore } from "./workspace/fs.js";
|
|
5
|
+
/**
|
|
6
|
+
* Creates a {@link StorageProvider} backed by a Kubernetes CSI volume.
|
|
7
|
+
*
|
|
8
|
+
* The factory validates that `mountPath` exists at creation time so
|
|
9
|
+
* mis-configurations surface early rather than at first write.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* const storage = csiStorage({
|
|
14
|
+
* mountPath: "/data/sweny",
|
|
15
|
+
* volumeName: "sweny-pvc",
|
|
16
|
+
* namespace: "default",
|
|
17
|
+
* });
|
|
18
|
+
* const sessions = storage.createSessionStore();
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export function csiStorage(config) {
|
|
22
|
+
const { mountPath, volumeName, namespace } = config;
|
|
23
|
+
if (!existsSync(mountPath)) {
|
|
24
|
+
const ctx = [
|
|
25
|
+
`mountPath="${mountPath}"`,
|
|
26
|
+
volumeName ? `volume="${volumeName}"` : null,
|
|
27
|
+
namespace ? `namespace="${namespace}"` : null,
|
|
28
|
+
]
|
|
29
|
+
.filter(Boolean)
|
|
30
|
+
.join(", ");
|
|
31
|
+
throw new Error(`CSI mount path does not exist (${ctx}). Ensure the PersistentVolumeClaim is mounted before starting the application.`);
|
|
32
|
+
}
|
|
33
|
+
return {
|
|
34
|
+
createSessionStore: () => new FsSessionStore(mountPath),
|
|
35
|
+
createMemoryStore: () => new FsMemoryStore(mountPath),
|
|
36
|
+
createWorkspaceStore: () => new FsWorkspaceStore(mountPath),
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=csi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"csi.js","sourceRoot":"","sources":["../../src/storage/csi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAsBrD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,UAAU,CAAC,MAAwB;IACjD,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;IAEpD,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG;YACV,cAAc,SAAS,GAAG;YAC1B,UAAU,CAAC,CAAC,CAAC,WAAW,UAAU,GAAG,CAAC,CAAC,CAAC,IAAI;YAC5C,SAAS,CAAC,CAAC,CAAC,cAAc,SAAS,GAAG,CAAC,CAAC,CAAC,IAAI;SAC9C;aACE,MAAM,CAAC,OAAO,CAAC;aACf,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,MAAM,IAAI,KAAK,CACb,kCAAkC,GAAG,iFAAiF,CACvH,CAAC;IACJ,CAAC;IAED,OAAO;QACL,kBAAkB,EAAE,GAAG,EAAE,CAAC,IAAI,cAAc,CAAC,SAAS,CAAC;QACvD,iBAAiB,EAAE,GAAG,EAAE,CAAC,IAAI,aAAa,CAAC,SAAS,CAAC;QACrD,oBAAoB,EAAE,GAAG,EAAE,CAAC,IAAI,gBAAgB,CAAC,SAAS,CAAC;KAC5D,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../../src/storage/fs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAKlD,wBAAgB,SAAS,CAAC,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,eAAe,CAMpE"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { FsSessionStore } from "./session/fs.js";
|
|
2
|
+
import { FsMemoryStore } from "./memory/fs.js";
|
|
3
|
+
import { FsWorkspaceStore } from "./workspace/fs.js";
|
|
4
|
+
export function fsStorage(opts) {
|
|
5
|
+
return {
|
|
6
|
+
createSessionStore: () => new FsSessionStore(opts.baseDir),
|
|
7
|
+
createMemoryStore: () => new FsMemoryStore(opts.baseDir),
|
|
8
|
+
createWorkspaceStore: () => new FsWorkspaceStore(opts.baseDir),
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=fs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fs.js","sourceRoot":"","sources":["../../src/storage/fs.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,UAAU,SAAS,CAAC,IAAyB;IACjD,OAAO;QACL,kBAAkB,EAAE,GAAG,EAAE,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC;QAC1D,iBAAiB,EAAE,GAAG,EAAE,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC;QACxD,oBAAoB,EAAE,GAAG,EAAE,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC;KAC/D,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export type { StorageProvider, SessionStore, PersistedSession, TranscriptEntry, MemoryStore, MemoryEntry, UserMemory, WorkspaceStore, WorkspaceFile, WorkspaceManifest, } from "./types.js";
|
|
2
|
+
export { WORKSPACE_LIMITS } from "./types.js";
|
|
3
|
+
export { FsSessionStore } from "./session/fs.js";
|
|
4
|
+
export { FsMemoryStore } from "./memory/fs.js";
|
|
5
|
+
export { FsWorkspaceStore } from "./workspace/fs.js";
|
|
6
|
+
export { S3SessionStore } from "./session/s3.js";
|
|
7
|
+
export { S3MemoryStore } from "./memory/s3.js";
|
|
8
|
+
export { S3WorkspaceStore } from "./workspace/s3.js";
|
|
9
|
+
export { fsStorage } from "./fs.js";
|
|
10
|
+
export { s3Storage } from "./s3.js";
|
|
11
|
+
export { csiStorage } from "./csi.js";
|
|
12
|
+
export type { CsiStorageConfig } from "./csi.js";
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,eAAe,EACf,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,WAAW,EACX,WAAW,EACX,UAAU,EACV,cAAc,EACd,aAAa,EACb,iBAAiB,GAClB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAG9C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAGrD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAGrD,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,YAAY,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export { WORKSPACE_LIMITS } from "./types.js";
|
|
2
|
+
// FS implementations
|
|
3
|
+
export { FsSessionStore } from "./session/fs.js";
|
|
4
|
+
export { FsMemoryStore } from "./memory/fs.js";
|
|
5
|
+
export { FsWorkspaceStore } from "./workspace/fs.js";
|
|
6
|
+
// S3 implementations
|
|
7
|
+
export { S3SessionStore } from "./session/s3.js";
|
|
8
|
+
export { S3MemoryStore } from "./memory/s3.js";
|
|
9
|
+
export { S3WorkspaceStore } from "./workspace/s3.js";
|
|
10
|
+
// Factory functions
|
|
11
|
+
export { fsStorage } from "./fs.js";
|
|
12
|
+
export { s3Storage } from "./s3.js";
|
|
13
|
+
export { csiStorage } from "./csi.js";
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9C,qBAAqB;AACrB,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,qBAAqB;AACrB,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,oBAAoB;AACpB,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { MemoryEntry, UserMemory, MemoryStore } from "../types.js";
|
|
2
|
+
import type { Logger } from "../../logger.js";
|
|
3
|
+
export declare class FsMemoryStore implements MemoryStore {
|
|
4
|
+
private baseDir;
|
|
5
|
+
private cache;
|
|
6
|
+
private logger;
|
|
7
|
+
constructor(baseDir: string, logger?: Logger);
|
|
8
|
+
private filePath;
|
|
9
|
+
getMemories(userId: string): Promise<UserMemory>;
|
|
10
|
+
private save;
|
|
11
|
+
addEntry(userId: string, text: string): Promise<MemoryEntry>;
|
|
12
|
+
removeEntry(userId: string, entryId: string): Promise<boolean>;
|
|
13
|
+
clearMemories(userId: string): Promise<void>;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=fs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../../../src/storage/memory/fs.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAG9C,qBAAa,aAAc,YAAW,WAAW;IAC/C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,KAAK,CAAiC;IAC9C,OAAO,CAAC,MAAM,CAAS;gBAEX,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;IAK5C,OAAO,CAAC,QAAQ;IAIV,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;YAoBxC,IAAI;IAOZ,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAY5D,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAS9D,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGnD"}
|