@tickernelz/paperclip-pro-plugin-kubernetes 2026.925.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 +22 -0
- package/README.md +180 -0
- package/dist/adapter-defaults.d.ts +29 -0
- package/dist/adapter-defaults.d.ts.map +1 -0
- package/dist/adapter-defaults.js +98 -0
- package/dist/adapter-defaults.js.map +1 -0
- package/dist/adapter-registry.d.ts +64 -0
- package/dist/adapter-registry.d.ts.map +1 -0
- package/dist/adapter-registry.js +25 -0
- package/dist/adapter-registry.js.map +1 -0
- package/dist/cilium-network-policy.d.ts +12 -0
- package/dist/cilium-network-policy.d.ts.map +1 -0
- package/dist/cilium-network-policy.js +60 -0
- package/dist/cilium-network-policy.js.map +1 -0
- package/dist/file-sync.d.ts +73 -0
- package/dist/file-sync.d.ts.map +1 -0
- package/dist/file-sync.js +752 -0
- package/dist/file-sync.js.map +1 -0
- package/dist/image-allowlist.d.ts +18 -0
- package/dist/image-allowlist.d.ts.map +1 -0
- package/dist/image-allowlist.js +39 -0
- package/dist/image-allowlist.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/job-orchestrator.d.ts +24 -0
- package/dist/job-orchestrator.d.ts.map +1 -0
- package/dist/job-orchestrator.js +90 -0
- package/dist/job-orchestrator.js.map +1 -0
- package/dist/kube-client.d.ts +15 -0
- package/dist/kube-client.d.ts.map +1 -0
- package/dist/kube-client.js +23 -0
- package/dist/kube-client.js.map +1 -0
- package/dist/lease-lifecycle.d.ts +62 -0
- package/dist/lease-lifecycle.d.ts.map +1 -0
- package/dist/lease-lifecycle.js +155 -0
- package/dist/lease-lifecycle.js.map +1 -0
- package/dist/manifest.d.ts +4 -0
- package/dist/manifest.d.ts.map +1 -0
- package/dist/manifest.js +108 -0
- package/dist/manifest.js.map +1 -0
- package/dist/network-policy.d.ts +22 -0
- package/dist/network-policy.d.ts.map +1 -0
- package/dist/network-policy.js +116 -0
- package/dist/network-policy.js.map +1 -0
- package/dist/plugin.d.ts +3 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/plugin.js +820 -0
- package/dist/plugin.js.map +1 -0
- package/dist/pod-exec.d.ts +67 -0
- package/dist/pod-exec.d.ts.map +1 -0
- package/dist/pod-exec.js +401 -0
- package/dist/pod-exec.js.map +1 -0
- package/dist/pod-spec-builder.d.ts +25 -0
- package/dist/pod-spec-builder.d.ts.map +1 -0
- package/dist/pod-spec-builder.js +82 -0
- package/dist/pod-spec-builder.js.map +1 -0
- package/dist/sandbox-cr-builder.d.ts +40 -0
- package/dist/sandbox-cr-builder.d.ts.map +1 -0
- package/dist/sandbox-cr-builder.js +123 -0
- package/dist/sandbox-cr-builder.js.map +1 -0
- package/dist/sandbox-cr-orchestrator.d.ts +62 -0
- package/dist/sandbox-cr-orchestrator.d.ts.map +1 -0
- package/dist/sandbox-cr-orchestrator.js +248 -0
- package/dist/sandbox-cr-orchestrator.js.map +1 -0
- package/dist/sandbox-orchestrator.d.ts +39 -0
- package/dist/sandbox-orchestrator.d.ts.map +1 -0
- package/dist/sandbox-orchestrator.js +2 -0
- package/dist/sandbox-orchestrator.js.map +1 -0
- package/dist/scoped-network-egress.d.ts +19 -0
- package/dist/scoped-network-egress.d.ts.map +1 -0
- package/dist/scoped-network-egress.js +86 -0
- package/dist/scoped-network-egress.js.map +1 -0
- package/dist/secret-manager.d.ts +14 -0
- package/dist/secret-manager.d.ts.map +1 -0
- package/dist/secret-manager.js +39 -0
- package/dist/secret-manager.js.map +1 -0
- package/dist/tenant-orchestrator.d.ts +35 -0
- package/dist/tenant-orchestrator.d.ts.map +1 -0
- package/dist/tenant-orchestrator.js +263 -0
- package/dist/tenant-orchestrator.js.map +1 -0
- package/dist/types.d.ts +279 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +65 -0
- package/dist/types.js.map +1 -0
- package/dist/upload-interceptor.d.ts +44 -0
- package/dist/upload-interceptor.d.ts.map +1 -0
- package/dist/upload-interceptor.js +114 -0
- package/dist/upload-interceptor.js.map +1 -0
- package/dist/utils.d.ts +11 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +51 -0
- package/dist/utils.js.map +1 -0
- package/dist/worker.d.ts +3 -0
- package/dist/worker.d.ts.map +1 -0
- package/dist/worker.js +5 -0
- package/dist/worker.js.map +1 -0
- package/manifests/operator-prerequisites.yaml +22 -0
- package/package.json +47 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-sync.js","sourceRoot":"","sources":["../src/file-sync.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Glob matching for image references.
|
|
3
|
+
* - `*` matches any sequence of characters EXCEPT `/` (so a wildcard doesn't span path segments)
|
|
4
|
+
* - `?` matches exactly one character (excluding `/`)
|
|
5
|
+
*/
|
|
6
|
+
export declare function globMatch(pattern: string, value: string): boolean;
|
|
7
|
+
export interface ResolveImageInput {
|
|
8
|
+
imageOverride?: string | null;
|
|
9
|
+
}
|
|
10
|
+
export interface ResolveImageDefaults {
|
|
11
|
+
runtimeImage: string;
|
|
12
|
+
}
|
|
13
|
+
export interface ResolveImageConfig {
|
|
14
|
+
imageAllowList: string[];
|
|
15
|
+
imageRegistry?: string;
|
|
16
|
+
}
|
|
17
|
+
export declare function resolveImage(target: ResolveImageInput, defaults: ResolveImageDefaults, config: ResolveImageConfig): string;
|
|
18
|
+
//# sourceMappingURL=image-allowlist.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"image-allowlist.d.ts","sourceRoot":"","sources":["../src/image-allowlist.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAUjE;AAED,MAAM,WAAW,iBAAiB;IAChC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,YAAY,CAC1B,MAAM,EAAE,iBAAiB,EACzB,QAAQ,EAAE,oBAAoB,EAC9B,MAAM,EAAE,kBAAkB,GACzB,MAAM,CAWR"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Glob matching for image references.
|
|
3
|
+
* - `*` matches any sequence of characters EXCEPT `/` (so a wildcard doesn't span path segments)
|
|
4
|
+
* - `?` matches exactly one character (excluding `/`)
|
|
5
|
+
*/
|
|
6
|
+
export function globMatch(pattern, value) {
|
|
7
|
+
const re = new RegExp("^" +
|
|
8
|
+
pattern
|
|
9
|
+
.replace(/[.+^${}()|[\]\\]/g, "\\$&")
|
|
10
|
+
.replace(/\*/g, "[^/]*")
|
|
11
|
+
.replace(/\?/g, "[^/]") +
|
|
12
|
+
"$");
|
|
13
|
+
return re.test(value);
|
|
14
|
+
}
|
|
15
|
+
export function resolveImage(target, defaults, config) {
|
|
16
|
+
if (target.imageOverride) {
|
|
17
|
+
if (!config.imageAllowList.some((p) => globMatch(p, target.imageOverride))) {
|
|
18
|
+
throw new Error(`Image override "${target.imageOverride}" is not in allowlist`);
|
|
19
|
+
}
|
|
20
|
+
return target.imageOverride;
|
|
21
|
+
}
|
|
22
|
+
if (config.imageRegistry) {
|
|
23
|
+
return rewriteRegistry(defaults.runtimeImage, config.imageRegistry);
|
|
24
|
+
}
|
|
25
|
+
return defaults.runtimeImage;
|
|
26
|
+
}
|
|
27
|
+
function rewriteRegistry(image, registry) {
|
|
28
|
+
// image is like "ghcr.io/paperclipai/agent-runtime-claude:v1"
|
|
29
|
+
// we want to replace the first two path segments (host + org) with `registry`
|
|
30
|
+
const cleanRegistry = registry.replace(/\/+$/, "");
|
|
31
|
+
const colonIdx = image.lastIndexOf(":");
|
|
32
|
+
const tag = colonIdx >= 0 ? image.slice(colonIdx) : "";
|
|
33
|
+
const path = colonIdx >= 0 ? image.slice(0, colonIdx) : image;
|
|
34
|
+
const segments = path.split("/");
|
|
35
|
+
// Strip the host+org (first two segments), keep the image name
|
|
36
|
+
const imageName = segments.slice(2).join("/") || segments[segments.length - 1];
|
|
37
|
+
return `${cleanRegistry}/${imageName}${tag}`;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=image-allowlist.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"image-allowlist.js","sourceRoot":"","sources":["../src/image-allowlist.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,OAAe,EAAE,KAAa;IACtD,MAAM,EAAE,GAAG,IAAI,MAAM,CACnB,GAAG;QACD,OAAO;aACJ,OAAO,CAAC,mBAAmB,EAAE,MAAM,CAAC;aACpC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC;aACvB,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;QACzB,GAAG,CACN,CAAC;IACF,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxB,CAAC;AAeD,MAAM,UAAU,YAAY,CAC1B,MAAyB,EACzB,QAA8B,EAC9B,MAA0B;IAE1B,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;QACzB,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,aAAc,CAAC,CAAC,EAAE,CAAC;YAC5E,MAAM,IAAI,KAAK,CAAC,mBAAmB,MAAM,CAAC,aAAa,uBAAuB,CAAC,CAAC;QAClF,CAAC;QACD,OAAO,MAAM,CAAC,aAAa,CAAC;IAC9B,CAAC;IACD,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;QACzB,OAAO,eAAe,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,QAAQ,CAAC,YAAY,CAAC;AAC/B,CAAC;AAED,SAAS,eAAe,CAAC,KAAa,EAAE,QAAgB;IACtD,8DAA8D;IAC9D,8EAA8E;IAC9E,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACvD,MAAM,IAAI,GAAG,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAC9D,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjC,+DAA+D;IAC/D,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC/E,OAAO,GAAG,aAAa,IAAI,SAAS,GAAG,GAAG,EAAE,CAAC;AAC/C,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { KubeClients } from "./kube-client.js";
|
|
2
|
+
import type { SandboxOrchestrator, SandboxStatus } from "./sandbox-orchestrator.js";
|
|
3
|
+
export declare class JobTimeoutError extends Error {
|
|
4
|
+
constructor(namespace: string, name: string, timeoutMs: number);
|
|
5
|
+
}
|
|
6
|
+
export declare function createJob(clients: KubeClients, namespace: string, manifest: Record<string, unknown>): Promise<{
|
|
7
|
+
uid: string;
|
|
8
|
+
}>;
|
|
9
|
+
export type JobStatus = SandboxStatus;
|
|
10
|
+
export declare function getJobStatus(clients: KubeClients, namespace: string, name: string): Promise<JobStatus>;
|
|
11
|
+
export declare function findPodForJob(clients: KubeClients, namespace: string, jobName: string): Promise<string | null>;
|
|
12
|
+
export declare function streamPodLogs(clients: KubeClients, namespace: string, podName: string, onChunk: (stream: "stdout" | "stderr", text: string) => Promise<void>): Promise<void>;
|
|
13
|
+
export declare function deleteJob(clients: KubeClients, namespace: string, name: string): Promise<void>;
|
|
14
|
+
export declare function waitForJobCompletion(clients: KubeClients, namespace: string, name: string, opts?: {
|
|
15
|
+
timeoutMs: number;
|
|
16
|
+
pollMs?: number;
|
|
17
|
+
}): Promise<JobStatus>;
|
|
18
|
+
/**
|
|
19
|
+
* Job-backed conformance to SandboxOrchestrator. Plugin.ts imports THIS value
|
|
20
|
+
* (the swap point) — to use a different backend, swap this import for another
|
|
21
|
+
* module exposing a SandboxOrchestrator-shaped default export.
|
|
22
|
+
*/
|
|
23
|
+
export declare const jobOrchestrator: SandboxOrchestrator;
|
|
24
|
+
//# sourceMappingURL=job-orchestrator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"job-orchestrator.d.ts","sourceRoot":"","sources":["../src/job-orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAEpF,qBAAa,eAAgB,SAAQ,KAAK;gBAC5B,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;CAI/D;AAED,wBAAsB,SAAS,CAC7B,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,CAK1B;AAED,MAAM,MAAM,SAAS,GAAG,aAAa,CAAC;AAEtC,wBAAsB,YAAY,CAChC,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,SAAS,CAAC,CAoBpB;AAED,wBAAsB,aAAa,CACjC,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAQxB;AAED,wBAAsB,aAAa,CACjC,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,CAAC,MAAM,EAAE,QAAQ,GAAG,QAAQ,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GACpE,OAAO,CAAC,IAAI,CAAC,CAUf;AAED,wBAAsB,SAAS,CAC7B,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,IAAI,CAAC,CAMf;AAED,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAyC,GAClF,OAAO,CAAC,SAAS,CAAC,CASpB;AAMD;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,mBAO7B,CAAC"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
export class JobTimeoutError extends Error {
|
|
2
|
+
constructor(namespace, name, timeoutMs) {
|
|
3
|
+
super(`Job ${namespace}/${name} did not complete within ${timeoutMs}ms`);
|
|
4
|
+
this.name = "JobTimeoutError";
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
export async function createJob(clients, namespace, manifest) {
|
|
8
|
+
const result = await clients.batch.createNamespacedJob({ namespace, body: manifest });
|
|
9
|
+
const uid = result.metadata?.uid;
|
|
10
|
+
if (!uid)
|
|
11
|
+
throw new Error("Job created without a UID");
|
|
12
|
+
return { uid };
|
|
13
|
+
}
|
|
14
|
+
export async function getJobStatus(clients, namespace, name) {
|
|
15
|
+
const result = await clients.batch.readNamespacedJobStatus({ namespace, name });
|
|
16
|
+
const body = result ?? {};
|
|
17
|
+
const status = body.status ?? {};
|
|
18
|
+
const active = status.active ?? 0;
|
|
19
|
+
const succeeded = status.succeeded ?? 0;
|
|
20
|
+
const failed = status.failed ?? 0;
|
|
21
|
+
const conditions = status.conditions ?? [];
|
|
22
|
+
const completed = conditions.find((c) => c.type === "Complete" && c.status === "True");
|
|
23
|
+
const failedCond = conditions.find((c) => c.type === "Failed" && c.status === "True");
|
|
24
|
+
if (failedCond || failed > 0) {
|
|
25
|
+
return { phase: "Failed", complete: false, active, succeeded, failed, reason: failedCond?.reason, message: failedCond?.message };
|
|
26
|
+
}
|
|
27
|
+
if (completed || succeeded > 0) {
|
|
28
|
+
return { phase: "Succeeded", complete: true, active, succeeded, failed };
|
|
29
|
+
}
|
|
30
|
+
if (active > 0) {
|
|
31
|
+
return { phase: "Running", complete: false, active, succeeded, failed };
|
|
32
|
+
}
|
|
33
|
+
return { phase: "Pending", complete: false, active, succeeded, failed };
|
|
34
|
+
}
|
|
35
|
+
export async function findPodForJob(clients, namespace, jobName) {
|
|
36
|
+
const result = await clients.core.listNamespacedPod({
|
|
37
|
+
namespace,
|
|
38
|
+
labelSelector: `job-name=${jobName}`,
|
|
39
|
+
});
|
|
40
|
+
const items = (result.items) ?? [];
|
|
41
|
+
const running = items.find((p) => p.status?.phase === "Running");
|
|
42
|
+
return (running ?? items[0])?.metadata?.name ?? null;
|
|
43
|
+
}
|
|
44
|
+
export async function streamPodLogs(clients, namespace, podName, onChunk) {
|
|
45
|
+
// V1 limitation: readNamespacedPodLog returns combined stdout (the kubectl-style
|
|
46
|
+
// log view). stderr is not separately exposed via this API path — agent
|
|
47
|
+
// containers that need stderr/stdout separation should use a sidecar log
|
|
48
|
+
// scraper or wrap their CLI to emit structured output on stdout. We always
|
|
49
|
+
// emit chunks as "stdout"; the "stderr" callback slot in SandboxOrchestrator
|
|
50
|
+
// is unused by the Job-backed implementation.
|
|
51
|
+
const result = await clients.core.readNamespacedPodLog({ namespace, name: podName });
|
|
52
|
+
const text = result ?? "";
|
|
53
|
+
if (text.length > 0)
|
|
54
|
+
await onChunk("stdout", text);
|
|
55
|
+
}
|
|
56
|
+
export async function deleteJob(clients, namespace, name) {
|
|
57
|
+
await clients.batch.deleteNamespacedJob({
|
|
58
|
+
namespace,
|
|
59
|
+
name,
|
|
60
|
+
propagationPolicy: "Foreground",
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
export async function waitForJobCompletion(clients, namespace, name, opts = { timeoutMs: 120_000, pollMs: 2000 }) {
|
|
64
|
+
const deadline = Date.now() + opts.timeoutMs;
|
|
65
|
+
const pollMs = opts.pollMs ?? 2000;
|
|
66
|
+
while (Date.now() < deadline) {
|
|
67
|
+
const status = await getJobStatus(clients, namespace, name);
|
|
68
|
+
if (status.phase === "Succeeded" || status.phase === "Failed")
|
|
69
|
+
return status;
|
|
70
|
+
await sleep(pollMs);
|
|
71
|
+
}
|
|
72
|
+
throw new JobTimeoutError(namespace, name, opts.timeoutMs);
|
|
73
|
+
}
|
|
74
|
+
function sleep(ms) {
|
|
75
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Job-backed conformance to SandboxOrchestrator. Plugin.ts imports THIS value
|
|
79
|
+
* (the swap point) — to use a different backend, swap this import for another
|
|
80
|
+
* module exposing a SandboxOrchestrator-shaped default export.
|
|
81
|
+
*/
|
|
82
|
+
export const jobOrchestrator = {
|
|
83
|
+
claim: createJob,
|
|
84
|
+
getStatus: getJobStatus,
|
|
85
|
+
findPod: findPodForJob,
|
|
86
|
+
streamLogs: streamPodLogs,
|
|
87
|
+
release: deleteJob,
|
|
88
|
+
waitForCompletion: waitForJobCompletion,
|
|
89
|
+
};
|
|
90
|
+
//# sourceMappingURL=job-orchestrator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"job-orchestrator.js","sourceRoot":"","sources":["../src/job-orchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { KubeConfig, CoreV1Api, BatchV1Api, CustomObjectsApi, NetworkingV1Api, RbacAuthorizationV1Api } from "@kubernetes/client-node";
|
|
2
|
+
export interface CreateKubeConfigInput {
|
|
3
|
+
inCluster?: boolean;
|
|
4
|
+
kubeconfig?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function createKubeConfig(input: CreateKubeConfigInput): KubeConfig;
|
|
7
|
+
export interface KubeClients {
|
|
8
|
+
core: CoreV1Api;
|
|
9
|
+
batch: BatchV1Api;
|
|
10
|
+
custom: CustomObjectsApi;
|
|
11
|
+
networking: NetworkingV1Api;
|
|
12
|
+
rbac: RbacAuthorizationV1Api;
|
|
13
|
+
}
|
|
14
|
+
export declare function makeKubeClients(kc: KubeConfig): KubeClients;
|
|
15
|
+
//# sourceMappingURL=kube-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kube-client.d.ts","sourceRoot":"","sources":["../src/kube-client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,SAAS,EACT,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,sBAAsB,EACvB,MAAM,yBAAyB,CAAC;AAEjC,MAAM,WAAW,qBAAqB;IACpC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,UAAU,CAWzE;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,UAAU,CAAC;IAClB,MAAM,EAAE,gBAAgB,CAAC;IACzB,UAAU,EAAE,eAAe,CAAC;IAC5B,IAAI,EAAE,sBAAsB,CAAC;CAC9B;AAED,wBAAgB,eAAe,CAAC,EAAE,EAAE,UAAU,GAAG,WAAW,CAQ3D"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { KubeConfig, CoreV1Api, BatchV1Api, CustomObjectsApi, NetworkingV1Api, RbacAuthorizationV1Api, } from "@kubernetes/client-node";
|
|
2
|
+
export function createKubeConfig(input) {
|
|
3
|
+
const kc = new KubeConfig();
|
|
4
|
+
if (input.inCluster) {
|
|
5
|
+
kc.loadFromCluster();
|
|
6
|
+
return kc;
|
|
7
|
+
}
|
|
8
|
+
if (input.kubeconfig && input.kubeconfig.trim().length > 0) {
|
|
9
|
+
kc.loadFromString(input.kubeconfig);
|
|
10
|
+
return kc;
|
|
11
|
+
}
|
|
12
|
+
throw new Error("createKubeConfig requires either inCluster=true or a kubeconfig string");
|
|
13
|
+
}
|
|
14
|
+
export function makeKubeClients(kc) {
|
|
15
|
+
return {
|
|
16
|
+
core: kc.makeApiClient(CoreV1Api),
|
|
17
|
+
batch: kc.makeApiClient(BatchV1Api),
|
|
18
|
+
custom: kc.makeApiClient(CustomObjectsApi),
|
|
19
|
+
networking: kc.makeApiClient(NetworkingV1Api),
|
|
20
|
+
rbac: kc.makeApiClient(RbacAuthorizationV1Api),
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=kube-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kube-client.js","sourceRoot":"","sources":["../src/kube-client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,SAAS,EACT,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,sBAAsB,GACvB,MAAM,yBAAyB,CAAC;AAOjC,MAAM,UAAU,gBAAgB,CAAC,KAA4B;IAC3D,MAAM,EAAE,GAAG,IAAI,UAAU,EAAE,CAAC;IAC5B,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QACpB,EAAE,CAAC,eAAe,EAAE,CAAC;QACrB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3D,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACpC,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAC;AAC5F,CAAC;AAUD,MAAM,UAAU,eAAe,CAAC,EAAc;IAC5C,OAAO;QACL,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC;QACjC,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,UAAU,CAAC;QACnC,MAAM,EAAE,EAAE,CAAC,aAAa,CAAC,gBAAgB,CAAC;QAC1C,UAAU,EAAE,EAAE,CAAC,aAAa,CAAC,eAAe,CAAC;QAC7C,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,sBAAsB,CAAC;KAC/C,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resume + destroy lifecycle helpers for Kubernetes sandbox leases.
|
|
3
|
+
*
|
|
4
|
+
* Resume semantics: a lease is resumable only while its workload resource
|
|
5
|
+
* (Sandbox CR or Job) still exists and its pod is Running/Ready (or becomes
|
|
6
|
+
* Ready within a short bounded wait). Unlike Daytona — where a stopped sandbox
|
|
7
|
+
* can be started again by ID — Kubernetes pods are NOT restartable: once the
|
|
8
|
+
* pod backing a lease is gone or terminally failed, the lease can never be
|
|
9
|
+
* revived in place. That asymmetry is intentional; the plugin reports the
|
|
10
|
+
* lease as expired and the server falls back to a fresh acquireLease, which
|
|
11
|
+
* provisions a new pod.
|
|
12
|
+
*
|
|
13
|
+
* Destroy semantics: the forced cleanup path. Deletes every resource
|
|
14
|
+
* acquireLease created (Sandbox CR / Job, its pod, the per-run Secret),
|
|
15
|
+
* treating 404s as success so it is idempotent and safe to call against
|
|
16
|
+
* half-deleted leases.
|
|
17
|
+
*/
|
|
18
|
+
import type { KubeClients } from "./kube-client.js";
|
|
19
|
+
/** True when a Kubernetes API error means "resource not found" (HTTP 404). */
|
|
20
|
+
export declare function isKubeNotFoundError(err: unknown): boolean;
|
|
21
|
+
export type ResumeCheckResult = {
|
|
22
|
+
resumable: true;
|
|
23
|
+
podName: string | null;
|
|
24
|
+
phase: "Pending" | "Running";
|
|
25
|
+
} | {
|
|
26
|
+
resumable: false;
|
|
27
|
+
reason: string;
|
|
28
|
+
};
|
|
29
|
+
export interface ResumeCheckInput {
|
|
30
|
+
namespace: string;
|
|
31
|
+
/** Workload resource name (Sandbox CR name or Job name) == providerLeaseId. */
|
|
32
|
+
name: string;
|
|
33
|
+
backend: "sandbox-cr" | "job";
|
|
34
|
+
/** Bounded wait for an existing Sandbox pod to report Ready. */
|
|
35
|
+
readyTimeoutMs?: number;
|
|
36
|
+
pollMs?: number;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Check whether the workload behind a lease is still alive and exec-able.
|
|
40
|
+
* Returns `resumable: false` (never throws "expected" states) when the
|
|
41
|
+
* resource is gone (404), terminally failed, terminating, or doesn't become
|
|
42
|
+
* Ready within the bounded wait — all of which mean the caller should fall
|
|
43
|
+
* back to a fresh acquireLease.
|
|
44
|
+
*/
|
|
45
|
+
export declare function checkLeaseResumable(clients: KubeClients, input: ResumeCheckInput): Promise<ResumeCheckResult>;
|
|
46
|
+
export interface DestroyLeaseInput {
|
|
47
|
+
namespace: string;
|
|
48
|
+
/** Workload resource name (Sandbox CR name or Job name) == providerLeaseId. */
|
|
49
|
+
name: string;
|
|
50
|
+
backend: "sandbox-cr" | "job";
|
|
51
|
+
podName: string | null;
|
|
52
|
+
secretName: string | null;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Forcibly delete every resource acquireLease created for this lease.
|
|
56
|
+
* Workload first (its deletion cascades to the pod and, via ownerReferences,
|
|
57
|
+
* the per-run Secret in the normal case); then the pod and Secret explicitly
|
|
58
|
+
* so a wedged controller or broken ownerRef cannot strand them. Every delete
|
|
59
|
+
* treats 404 as success — destroy is idempotent.
|
|
60
|
+
*/
|
|
61
|
+
export declare function destroyLeaseResources(clients: KubeClients, input: DestroyLeaseInput): Promise<void>;
|
|
62
|
+
//# sourceMappingURL=lease-lifecycle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lease-lifecycle.d.ts","sourceRoot":"","sources":["../src/lease-lifecycle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAQpD,8EAA8E;AAC9E,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAIzD;AAUD,MAAM,MAAM,iBAAiB,GACzB;IAAE,SAAS,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,SAAS,GAAG,SAAS,CAAA;CAAE,GACzE;IAAE,SAAS,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzC,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,+EAA+E;IAC/E,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,YAAY,GAAG,KAAK,CAAC;IAC9B,gEAAgE;IAChE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,WAAW,EACpB,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,iBAAiB,CAAC,CAoF5B;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,+EAA+E;IAC/E,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,YAAY,GAAG,KAAK,CAAC;IAC9B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,WAAW,EACpB,KAAK,EAAE,iBAAiB,GACvB,OAAO,CAAC,IAAI,CAAC,CAsBf"}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resume + destroy lifecycle helpers for Kubernetes sandbox leases.
|
|
3
|
+
*
|
|
4
|
+
* Resume semantics: a lease is resumable only while its workload resource
|
|
5
|
+
* (Sandbox CR or Job) still exists and its pod is Running/Ready (or becomes
|
|
6
|
+
* Ready within a short bounded wait). Unlike Daytona — where a stopped sandbox
|
|
7
|
+
* can be started again by ID — Kubernetes pods are NOT restartable: once the
|
|
8
|
+
* pod backing a lease is gone or terminally failed, the lease can never be
|
|
9
|
+
* revived in place. That asymmetry is intentional; the plugin reports the
|
|
10
|
+
* lease as expired and the server falls back to a fresh acquireLease, which
|
|
11
|
+
* provisions a new pod.
|
|
12
|
+
*
|
|
13
|
+
* Destroy semantics: the forced cleanup path. Deletes every resource
|
|
14
|
+
* acquireLease created (Sandbox CR / Job, its pod, the per-run Secret),
|
|
15
|
+
* treating 404s as success so it is idempotent and safe to call against
|
|
16
|
+
* half-deleted leases.
|
|
17
|
+
*/
|
|
18
|
+
import { deleteJob, findPodForJob, getJobStatus } from "./job-orchestrator.js";
|
|
19
|
+
import { deleteSandboxCr, findPodForSandbox, waitForSandboxReady, } from "./sandbox-cr-orchestrator.js";
|
|
20
|
+
/** True when a Kubernetes API error means "resource not found" (HTTP 404). */
|
|
21
|
+
export function isKubeNotFoundError(err) {
|
|
22
|
+
const code = err.code
|
|
23
|
+
?? err.statusCode;
|
|
24
|
+
return code === 404;
|
|
25
|
+
}
|
|
26
|
+
async function ignoreNotFound(promise) {
|
|
27
|
+
try {
|
|
28
|
+
await promise;
|
|
29
|
+
}
|
|
30
|
+
catch (err) {
|
|
31
|
+
if (!isKubeNotFoundError(err))
|
|
32
|
+
throw err;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Check whether the workload behind a lease is still alive and exec-able.
|
|
37
|
+
* Returns `resumable: false` (never throws "expected" states) when the
|
|
38
|
+
* resource is gone (404), terminally failed, terminating, or doesn't become
|
|
39
|
+
* Ready within the bounded wait — all of which mean the caller should fall
|
|
40
|
+
* back to a fresh acquireLease.
|
|
41
|
+
*/
|
|
42
|
+
export async function checkLeaseResumable(clients, input) {
|
|
43
|
+
if (input.backend === "sandbox-cr") {
|
|
44
|
+
// Bounded wait for the Sandbox to report Ready. waitForSandboxReady fails
|
|
45
|
+
// fast on Failed/Terminating; a timeout means the pod never came up. None
|
|
46
|
+
// of those states are resumable — k8s pods cannot be restarted in place.
|
|
47
|
+
try {
|
|
48
|
+
await waitForSandboxReady(clients, input.namespace, input.name, {
|
|
49
|
+
timeoutMs: input.readyTimeoutMs ?? 30_000,
|
|
50
|
+
pollMs: input.pollMs ?? 1_000,
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
catch (err) {
|
|
54
|
+
if (isKubeNotFoundError(err)) {
|
|
55
|
+
return { resumable: false, reason: "Sandbox CR no longer exists" };
|
|
56
|
+
}
|
|
57
|
+
return {
|
|
58
|
+
resumable: false,
|
|
59
|
+
reason: err instanceof Error ? err.message : String(err),
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
let podName;
|
|
63
|
+
try {
|
|
64
|
+
podName = await findPodForSandbox(clients, input.namespace, input.name);
|
|
65
|
+
}
|
|
66
|
+
catch (err) {
|
|
67
|
+
// CR deleted between the readiness check and the pod lookup.
|
|
68
|
+
if (isKubeNotFoundError(err)) {
|
|
69
|
+
return { resumable: false, reason: "Sandbox CR no longer exists" };
|
|
70
|
+
}
|
|
71
|
+
throw err;
|
|
72
|
+
}
|
|
73
|
+
if (!podName) {
|
|
74
|
+
return {
|
|
75
|
+
resumable: false,
|
|
76
|
+
reason: "Sandbox is Ready but no backing pod was found",
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
// Confirm the pod itself is Running and not being torn down — the CR
|
|
80
|
+
// status can lag pod deletion.
|
|
81
|
+
let pod;
|
|
82
|
+
try {
|
|
83
|
+
pod = await clients.core.readNamespacedPod({
|
|
84
|
+
namespace: input.namespace,
|
|
85
|
+
name: podName,
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
catch (err) {
|
|
89
|
+
if (isKubeNotFoundError(err)) {
|
|
90
|
+
return { resumable: false, reason: `Pod ${podName} no longer exists` };
|
|
91
|
+
}
|
|
92
|
+
throw err;
|
|
93
|
+
}
|
|
94
|
+
const podPhase = pod.status?.phase;
|
|
95
|
+
const terminating = Boolean(pod.metadata?.deletionTimestamp);
|
|
96
|
+
if (podPhase !== "Running" || terminating) {
|
|
97
|
+
return {
|
|
98
|
+
resumable: false,
|
|
99
|
+
reason: `Pod ${podName} is ${terminating ? "terminating" : podPhase ?? "in an unknown phase"}`,
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
return { resumable: true, podName, phase: "Running" };
|
|
103
|
+
}
|
|
104
|
+
// ── Job backend ───────────────────────────────────────────────────────────
|
|
105
|
+
let status;
|
|
106
|
+
try {
|
|
107
|
+
status = await getJobStatus(clients, input.namespace, input.name);
|
|
108
|
+
}
|
|
109
|
+
catch (err) {
|
|
110
|
+
if (isKubeNotFoundError(err)) {
|
|
111
|
+
return { resumable: false, reason: "Job no longer exists" };
|
|
112
|
+
}
|
|
113
|
+
throw err;
|
|
114
|
+
}
|
|
115
|
+
if (status.phase === "Succeeded" || status.phase === "Failed") {
|
|
116
|
+
// Terminal Jobs cannot be re-run in place.
|
|
117
|
+
return { resumable: false, reason: `Job is ${status.phase}` };
|
|
118
|
+
}
|
|
119
|
+
// Pending/Running Jobs are resumable: execute() waits for completion
|
|
120
|
+
// itself, so a not-yet-scheduled pod (podName null) is fine here.
|
|
121
|
+
const podName = await findPodForJob(clients, input.namespace, input.name);
|
|
122
|
+
return {
|
|
123
|
+
resumable: true,
|
|
124
|
+
podName,
|
|
125
|
+
phase: status.phase === "Running" ? "Running" : "Pending",
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Forcibly delete every resource acquireLease created for this lease.
|
|
130
|
+
* Workload first (its deletion cascades to the pod and, via ownerReferences,
|
|
131
|
+
* the per-run Secret in the normal case); then the pod and Secret explicitly
|
|
132
|
+
* so a wedged controller or broken ownerRef cannot strand them. Every delete
|
|
133
|
+
* treats 404 as success — destroy is idempotent.
|
|
134
|
+
*/
|
|
135
|
+
export async function destroyLeaseResources(clients, input) {
|
|
136
|
+
if (input.backend === "sandbox-cr") {
|
|
137
|
+
await ignoreNotFound(deleteSandboxCr(clients, input.namespace, input.name));
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
await ignoreNotFound(deleteJob(clients, input.namespace, input.name));
|
|
141
|
+
}
|
|
142
|
+
if (input.podName) {
|
|
143
|
+
await ignoreNotFound(clients.core.deleteNamespacedPod({
|
|
144
|
+
namespace: input.namespace,
|
|
145
|
+
name: input.podName,
|
|
146
|
+
}));
|
|
147
|
+
}
|
|
148
|
+
if (input.secretName) {
|
|
149
|
+
await ignoreNotFound(clients.core.deleteNamespacedSecret({
|
|
150
|
+
namespace: input.namespace,
|
|
151
|
+
name: input.secretName,
|
|
152
|
+
}));
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=lease-lifecycle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lease-lifecycle.js","sourceRoot":"","sources":["../src/lease-lifecycle.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AAKtF,QAAA,MAAM,QAAQ,EAAE,yBAiHf,CAAC;AAEF,eAAe,QAAQ,CAAC"}
|