@paperclipai/plugin-kubernetes 0.1.0 → 2026.620.0-canary.11

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 (90) hide show
  1. package/LICENSE +21 -0
  2. package/dist/adapter-defaults.d.ts +29 -0
  3. package/dist/adapter-defaults.d.ts.map +1 -0
  4. package/dist/adapter-defaults.js +104 -0
  5. package/dist/adapter-defaults.js.map +1 -0
  6. package/dist/adapter-registry.d.ts +64 -0
  7. package/dist/adapter-registry.d.ts.map +1 -0
  8. package/dist/adapter-registry.js +25 -0
  9. package/dist/adapter-registry.js.map +1 -0
  10. package/dist/cilium-network-policy.d.ts +8 -0
  11. package/dist/cilium-network-policy.d.ts.map +1 -0
  12. package/dist/cilium-network-policy.js +57 -0
  13. package/dist/cilium-network-policy.js.map +1 -0
  14. package/dist/image-allowlist.d.ts +18 -0
  15. package/dist/image-allowlist.d.ts.map +1 -0
  16. package/dist/image-allowlist.js +39 -0
  17. package/dist/image-allowlist.js.map +1 -0
  18. package/dist/index.d.ts +3 -0
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +3 -0
  21. package/dist/index.js.map +1 -0
  22. package/dist/job-orchestrator.d.ts +24 -0
  23. package/dist/job-orchestrator.d.ts.map +1 -0
  24. package/dist/job-orchestrator.js +90 -0
  25. package/dist/job-orchestrator.js.map +1 -0
  26. package/dist/kube-client.d.ts +15 -0
  27. package/dist/kube-client.d.ts.map +1 -0
  28. package/dist/kube-client.js +23 -0
  29. package/dist/kube-client.js.map +1 -0
  30. package/dist/lease-lifecycle.d.ts +62 -0
  31. package/dist/lease-lifecycle.d.ts.map +1 -0
  32. package/dist/lease-lifecycle.js +155 -0
  33. package/dist/lease-lifecycle.js.map +1 -0
  34. package/dist/manifest.d.ts +4 -0
  35. package/dist/manifest.d.ts.map +1 -0
  36. package/dist/manifest.js +108 -0
  37. package/dist/manifest.js.map +1 -0
  38. package/dist/network-policy.d.ts +18 -0
  39. package/dist/network-policy.d.ts.map +1 -0
  40. package/dist/network-policy.js +113 -0
  41. package/dist/network-policy.js.map +1 -0
  42. package/dist/plugin.d.ts +3 -0
  43. package/dist/plugin.d.ts.map +1 -0
  44. package/dist/plugin.js +687 -0
  45. package/dist/plugin.js.map +1 -0
  46. package/dist/pod-exec.d.ts +28 -0
  47. package/dist/pod-exec.d.ts.map +1 -0
  48. package/dist/pod-exec.js +164 -0
  49. package/dist/pod-exec.js.map +1 -0
  50. package/dist/pod-spec-builder.d.ts +25 -0
  51. package/dist/pod-spec-builder.d.ts.map +1 -0
  52. package/dist/pod-spec-builder.js +82 -0
  53. package/dist/pod-spec-builder.js.map +1 -0
  54. package/dist/sandbox-cr-builder.d.ts +40 -0
  55. package/dist/sandbox-cr-builder.d.ts.map +1 -0
  56. package/dist/sandbox-cr-builder.js +123 -0
  57. package/dist/sandbox-cr-builder.js.map +1 -0
  58. package/dist/sandbox-cr-orchestrator.d.ts +62 -0
  59. package/dist/sandbox-cr-orchestrator.d.ts.map +1 -0
  60. package/dist/sandbox-cr-orchestrator.js +248 -0
  61. package/dist/sandbox-cr-orchestrator.js.map +1 -0
  62. package/dist/sandbox-orchestrator.d.ts +39 -0
  63. package/dist/sandbox-orchestrator.d.ts.map +1 -0
  64. package/dist/sandbox-orchestrator.js +2 -0
  65. package/dist/sandbox-orchestrator.js.map +1 -0
  66. package/dist/secret-manager.d.ts +14 -0
  67. package/dist/secret-manager.d.ts.map +1 -0
  68. package/dist/secret-manager.js +39 -0
  69. package/dist/secret-manager.js.map +1 -0
  70. package/dist/tenant-orchestrator.d.ts +35 -0
  71. package/dist/tenant-orchestrator.d.ts.map +1 -0
  72. package/dist/tenant-orchestrator.js +263 -0
  73. package/dist/tenant-orchestrator.js.map +1 -0
  74. package/dist/types.d.ts +264 -0
  75. package/dist/types.d.ts.map +1 -0
  76. package/dist/types.js +65 -0
  77. package/dist/types.js.map +1 -0
  78. package/dist/upload-interceptor.d.ts +44 -0
  79. package/dist/upload-interceptor.d.ts.map +1 -0
  80. package/dist/upload-interceptor.js +114 -0
  81. package/dist/upload-interceptor.js.map +1 -0
  82. package/dist/utils.d.ts +11 -0
  83. package/dist/utils.d.ts.map +1 -0
  84. package/dist/utils.js +51 -0
  85. package/dist/utils.js.map +1 -0
  86. package/dist/worker.d.ts +3 -0
  87. package/dist/worker.d.ts.map +1 -0
  88. package/dist/worker.js +5 -0
  89. package/dist/worker.js.map +1 -0
  90. package/package.json +4 -12
@@ -0,0 +1,114 @@
1
+ /**
2
+ * Fast-upload interceptor for the chunked-shell file transfer protocol used by
3
+ * `@paperclipai/adapter-utils`'s `command-managed-runtime.writeFile()`.
4
+ *
5
+ * The default protocol uploads a binary file by:
6
+ * 1. INIT: mkdir -p '<DIR>' && rm -f '<B64>' && : > '<B64>'
7
+ * 2. CHUNKS: printf '%s' '<base64-chunk>' >> '<B64>' (repeated N times)
8
+ * 3. FINALIZE: base64 -d < '<B64>' > '<TARGET>' && rm -f '<B64>'
9
+ *
10
+ * Where `<B64>` is `<TARGET>.paperclip-upload.b64`. Over k8s exec each call costs
11
+ * ~50-100ms (new WebSocket + container exec), so N chunks = N round trips. For
12
+ * a 1MB payload split into 64KB base64 chunks that's ~250 round trips.
13
+ *
14
+ * This interceptor short-circuits the protocol entirely:
15
+ * - INIT: capture `<B64>`, start a buffer, RESPOND success without exec.
16
+ * - CHUNK: append the literal base64 chunk to the buffer, RESPOND success.
17
+ * - FINALIZE: decode the buffered base64 → bytes → one exec `cat > '<TARGET>'`
18
+ * with stdin = bytes. Drop intermediate `.b64` entirely.
19
+ *
20
+ * If any step doesn't match the protocol exactly, we abandon the buffer and let
21
+ * the caller go through the slow path (passthrough). This keeps the optimization
22
+ * **transparent and safe**: pattern drift → graceful fallback.
23
+ *
24
+ * Reference: see packages/adapter-utils/src/command-managed-runtime.ts.
25
+ */
26
+ import { posix as pathPosix } from "node:path";
27
+ const INIT_RE = /^mkdir -p '([^']+)' && rm -f '([^']+)\.paperclip-upload\.b64' && : > '\2\.paperclip-upload\.b64'$/;
28
+ const CHUNK_RE = /^printf '%s' '([A-Za-z0-9+/=]+)' >> '([^']+)\.paperclip-upload\.b64'$/;
29
+ const FINALIZE_RE = /^base64 -d < '([^']+)\.paperclip-upload\.b64' > '\1' && rm -f '\1\.paperclip-upload\.b64'$/;
30
+ const MAX_BUFFER_BYTES = 100 * 1024 * 1024; // 100MB safety cap
31
+ /**
32
+ * Stateful interceptor. Keyed by the base64 temp path (`<TARGET>.paperclip-upload.b64`).
33
+ * One instance per plugin worker is fine — concurrent uploads to different paths
34
+ * don't interfere.
35
+ */
36
+ export class FastUploadInterceptor {
37
+ buffers = new Map();
38
+ /**
39
+ * Inspect a single shell command (the literal argument to `sh -c <cmd>`).
40
+ * Returns the action the plugin should take.
41
+ */
42
+ decide(command) {
43
+ // 1. INIT
44
+ const initMatch = INIT_RE.exec(command);
45
+ if (initMatch) {
46
+ const dir = initMatch[1];
47
+ const targetPath = initMatch[2];
48
+ const b64Path = `${targetPath}.paperclip-upload.b64`;
49
+ // Sanity: dir should be the parent of target. If not, fall through.
50
+ if (pathPosix.dirname(targetPath) !== dir) {
51
+ return { action: "passthrough", reason: "init dir/target mismatch" };
52
+ }
53
+ this.buffers.set(b64Path, { targetPath, chunks: [], totalChars: 0 });
54
+ return { action: "ack", reason: `init upload to ${targetPath}` };
55
+ }
56
+ // 2. CHUNK
57
+ const chunkMatch = CHUNK_RE.exec(command);
58
+ if (chunkMatch) {
59
+ const base64 = chunkMatch[1];
60
+ const targetPath = chunkMatch[2];
61
+ const b64Path = `${targetPath}.paperclip-upload.b64`;
62
+ const state = this.buffers.get(b64Path);
63
+ if (!state) {
64
+ // Chunk arrived without init — must passthrough (the upload was started
65
+ // some other way, perhaps before we started tracking).
66
+ return { action: "passthrough", reason: "chunk without prior init" };
67
+ }
68
+ if (state.totalChars + base64.length > MAX_BUFFER_BYTES * 4 / 3) {
69
+ // base64 is ~4/3 of binary size; cap memory.
70
+ this.buffers.delete(b64Path);
71
+ return { action: "passthrough", reason: "buffer cap exceeded" };
72
+ }
73
+ state.chunks.push(base64);
74
+ state.totalChars += base64.length;
75
+ return { action: "ack", reason: `buffered ${base64.length} b64 chars` };
76
+ }
77
+ // 3. FINALIZE
78
+ const finalizeMatch = FINALIZE_RE.exec(command);
79
+ if (finalizeMatch) {
80
+ const targetPath = finalizeMatch[1];
81
+ const b64Path = `${targetPath}.paperclip-upload.b64`;
82
+ const state = this.buffers.get(b64Path);
83
+ if (!state) {
84
+ return { action: "passthrough", reason: "finalize without buffered state" };
85
+ }
86
+ this.buffers.delete(b64Path);
87
+ // Decode in one go. base64.decode handles concatenated base64 strings
88
+ // because each chunk was emitted from the encoder in fixed-size pieces.
89
+ const joined = state.chunks.join("");
90
+ const payload = Buffer.from(joined, "base64");
91
+ return {
92
+ action: "flush",
93
+ flush: {
94
+ targetPath: state.targetPath,
95
+ payload,
96
+ },
97
+ };
98
+ }
99
+ return { action: "passthrough", reason: "no upload pattern" };
100
+ }
101
+ /**
102
+ * Drop all buffered state. Called on releaseLease so a new lease doesn't
103
+ * inherit stale buffers (lease IDs are unique so target paths shouldn't
104
+ * collide, but cleanup is hygiene).
105
+ */
106
+ reset() {
107
+ this.buffers.clear();
108
+ }
109
+ /** Number of in-flight uploads being tracked. Mostly for tests / diagnostics. */
110
+ get pendingCount() {
111
+ return this.buffers.size;
112
+ }
113
+ }
114
+ //# sourceMappingURL=upload-interceptor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload-interceptor.js","sourceRoot":"","sources":["../src/upload-interceptor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export declare function deriveCompanySlug(input: string): string;
2
+ export declare function deriveNamespaceName(prefix: string, slug: string): string;
3
+ export declare function newRunUlidDns(now?: () => number): string;
4
+ export interface LabelsInput {
5
+ runId: string;
6
+ agentId: string;
7
+ companyId: string;
8
+ adapterType: string;
9
+ }
10
+ export declare function paperclipLabels(input: LabelsInput): Record<string, string>;
11
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAQA,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAevD;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAExE;AAED,wBAAgB,aAAa,CAAC,GAAG,GAAE,MAAM,MAAiB,GAAG,MAAM,CAclE;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAQ1E"}
package/dist/utils.js ADDED
@@ -0,0 +1,51 @@
1
+ import { createHash, randomInt } from "node:crypto";
2
+ const ULID_ALPHABET = "0123456789abcdefghjkmnpqrstvwxyz";
3
+ // Namespace names are capped at 63 chars (RFC 1123). The default "paperclip-"
4
+ // prefix leaves 53 for the slug, which fits a full 36-char UUID untruncated.
5
+ const MAX_SLUG_LENGTH = 53;
6
+ export function deriveCompanySlug(input) {
7
+ const slug = input
8
+ .toLowerCase()
9
+ .replace(/[^a-z0-9-]+/g, "-")
10
+ .replace(/^-+|-+$/g, "")
11
+ .replace(/-+$/, "");
12
+ if (slug.length === 0)
13
+ return "company";
14
+ if (slug.length <= MAX_SLUG_LENGTH)
15
+ return slug;
16
+ // Never drop entropy by plain truncation: two long inputs sharing a prefix
17
+ // (e.g. UUIDs differing only in their tail) must not map to the same slug,
18
+ // or the tenants would share a namespace and each other's per-run Secrets.
19
+ // Keep a readable head and append a hash of the FULL input so every byte
20
+ // contributes to the final name.
21
+ const digest = createHash("sha256").update(input).digest("hex").slice(0, 8);
22
+ return `${slug.slice(0, MAX_SLUG_LENGTH - 9).replace(/-+$/, "")}-${digest}`;
23
+ }
24
+ export function deriveNamespaceName(prefix, slug) {
25
+ return `${prefix}${slug}`;
26
+ }
27
+ export function newRunUlidDns(now = Date.now) {
28
+ const timestamp = now();
29
+ let out = "";
30
+ let t = timestamp;
31
+ for (let i = 0; i < 10; i++) {
32
+ out = ULID_ALPHABET[t & 0x1f] + out;
33
+ t = Math.floor(t / 32);
34
+ }
35
+ for (let i = 0; i < 16; i++) {
36
+ // crypto-strength randomness: these become Job/Sandbox CR names and the
37
+ // providerLeaseId, so they must not be enumerable.
38
+ out += ULID_ALPHABET[randomInt(32)];
39
+ }
40
+ return out;
41
+ }
42
+ export function paperclipLabels(input) {
43
+ return {
44
+ "paperclip.io/run-id": input.runId,
45
+ "paperclip.io/agent-id": input.agentId,
46
+ "paperclip.io/company-id": input.companyId,
47
+ "paperclip.io/adapter": input.adapterType,
48
+ "paperclip.io/managed-by": "paperclip-k8s-plugin",
49
+ };
50
+ }
51
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEpD,MAAM,aAAa,GAAG,kCAAkC,CAAC;AAEzD,8EAA8E;AAC9E,6EAA6E;AAC7E,MAAM,eAAe,GAAG,EAAE,CAAC;AAE3B,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC7C,MAAM,IAAI,GAAG,KAAK;SACf,WAAW,EAAE;SACb,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC;SAC5B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;SACvB,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACtB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACxC,IAAI,IAAI,CAAC,MAAM,IAAI,eAAe;QAAE,OAAO,IAAI,CAAC;IAChD,2EAA2E;IAC3E,2EAA2E;IAC3E,2EAA2E;IAC3E,yEAAyE;IACzE,iCAAiC;IACjC,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5E,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,MAAM,EAAE,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAc,EAAE,IAAY;IAC9D,OAAO,GAAG,MAAM,GAAG,IAAI,EAAE,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAAoB,IAAI,CAAC,GAAG;IACxD,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC;IACxB,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,CAAC,GAAG,SAAS,CAAC;IAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,GAAG,GAAG,aAAa,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;QACpC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IACzB,CAAC;IACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,wEAAwE;QACxE,mDAAmD;QACnD,GAAG,IAAI,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AASD,MAAM,UAAU,eAAe,CAAC,KAAkB;IAChD,OAAO;QACL,qBAAqB,EAAE,KAAK,CAAC,KAAK;QAClC,uBAAuB,EAAE,KAAK,CAAC,OAAO;QACtC,yBAAyB,EAAE,KAAK,CAAC,SAAS;QAC1C,sBAAsB,EAAE,KAAK,CAAC,WAAW;QACzC,yBAAyB,EAAE,sBAAsB;KAClD,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import plugin from "./plugin.js";
2
+ export default plugin;
3
+ //# sourceMappingURL=worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,aAAa,CAAC;AAEjC,eAAe,MAAM,CAAC"}
package/dist/worker.js ADDED
@@ -0,0 +1,5 @@
1
+ import { runWorker } from "@paperclipai/plugin-sdk";
2
+ import plugin from "./plugin.js";
3
+ export default plugin;
4
+ runWorker(plugin, import.meta.url);
5
+ //# sourceMappingURL=worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.js","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,MAAM,MAAM,aAAa,CAAC;AAEjC,eAAe,MAAM,CAAC;AACtB,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@paperclipai/plugin-kubernetes",
3
- "version": "0.1.0",
3
+ "version": "2026.620.0-canary.11",
4
4
  "description": "Kubernetes sandbox provider plugin for Paperclip environments",
5
5
  "license": "MIT",
6
6
  "homepage": "https://github.com/paperclipai/paperclip",
@@ -22,15 +22,7 @@
22
22
  "main": "./dist/index.js",
23
23
  "types": "./dist/index.d.ts",
24
24
  "publishConfig": {
25
- "access": "public",
26
- "exports": {
27
- ".": {
28
- "types": "./dist/index.d.ts",
29
- "import": "./dist/index.js"
30
- }
31
- },
32
- "main": "./dist/index.js",
33
- "types": "./dist/index.d.ts"
25
+ "access": "public"
34
26
  },
35
27
  "files": [
36
28
  "dist",
@@ -50,6 +42,6 @@
50
42
  "dependencies": {
51
43
  "@kubernetes/client-node": "^1.0.0",
52
44
  "zod": "^3.24.2",
53
- "@paperclipai/plugin-sdk": "1.0.0"
45
+ "@paperclipai/plugin-sdk": "2026.620.0-canary.11"
54
46
  }
55
- }
47
+ }