@paperclipai/plugin-sdk 2026.1023.0 → 2026.1024.0-canary.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.
@@ -0,0 +1,135 @@
1
+ import { z } from "zod";
2
+ import { workspaceProviderBindingSchema } from "@paperclipai/shared";
3
+ const recoveryFile = z.object({
4
+ path: z.string().min(1),
5
+ sha256: z.string().regex(/^[a-f0-9]{64}$/),
6
+ byteSize: z.number().int().positive(),
7
+ }).strict();
8
+ export const freshWorkspaceSchema = z.object({
9
+ attemptId: z.string().uuid(),
10
+ sourceRunId: z.string().uuid(),
11
+ previousWorkspaceId: z.string().uuid().nullable(),
12
+ recoverySnapshots: z.array(z.object({
13
+ operationId: z.string().uuid(), sourceRunId: z.string().uuid(),
14
+ archive: recoveryFile, manifest: recoveryFile,
15
+ }).strict()),
16
+ }).strict();
17
+ const sha = z.string().regex(/^[a-f0-9]{40,64}$/);
18
+ export const workspaceProviderOperationSchema = z.discriminatedUnion("kind", [
19
+ z
20
+ .object({
21
+ kind: z.literal("prepare"),
22
+ source: z
23
+ .object({
24
+ id: z.string().uuid(),
25
+ revision: z.string().min(1).max(256),
26
+ repoUrl: z.string().url().nullable(),
27
+ repoRef: z.string().nullable(),
28
+ defaultRef: z.string().nullable(),
29
+ })
30
+ .strict(),
31
+ mode: z.enum([
32
+ "shared_workspace",
33
+ "isolated_workspace",
34
+ "operator_branch",
35
+ ]),
36
+ strategy: z.enum(["project_primary", "git_worktree"]),
37
+ branchName: z.string().min(1).max(256).nullable(),
38
+ branchMode: z.enum(["create", "existing"]).optional(),
39
+ baseRef: z.string().nullable(),
40
+ existing: workspaceProviderBindingSchema.nullable(),
41
+ fresh: freshWorkspaceSchema.optional(),
42
+ })
43
+ .strict(),
44
+ // Verify the retained workspace and flush run writes. This does not certify
45
+ // remote recoverability or authorize removal; dirty work is valid output.
46
+ z.object({ kind: z.literal("finalize"), binding: workspaceProviderBindingSchema }).strict(),
47
+ z
48
+ .object({
49
+ kind: z.literal("inspect"),
50
+ binding: workspaceProviderBindingSchema,
51
+ })
52
+ .strict(),
53
+ z
54
+ .object({
55
+ kind: z.literal("remove"),
56
+ binding: workspaceProviderBindingSchema,
57
+ expectedHeadSha: sha.nullable(),
58
+ })
59
+ .strict(),
60
+ ]);
61
+ export const workspaceProviderResultSchema = z.discriminatedUnion("kind", [
62
+ z
63
+ .object({
64
+ kind: z.literal("prepared"),
65
+ binding: workspaceProviderBindingSchema,
66
+ branchName: z.string().min(1).max(256).nullable(),
67
+ baseSha: sha.nullable(),
68
+ created: z.boolean(),
69
+ branchCreatedByRuntime: z.boolean(),
70
+ })
71
+ .strict(),
72
+ z
73
+ .object({
74
+ kind: z.literal("inspection"),
75
+ headSha: sha.nullable(),
76
+ branchName: z.string().nullable(),
77
+ hasDirtyTrackedFiles: z.boolean(),
78
+ hasUntrackedFiles: z.boolean(),
79
+ hasLocalOnlyData: z.boolean(),
80
+ isMergedIntoBase: z.boolean().nullable(),
81
+ remotelyRecoverable: z.boolean().nullable(),
82
+ })
83
+ .strict(),
84
+ // Return only after retained files are durable and their identity is verified.
85
+ z.object({ kind: z.literal("finalized"), headSha: sha.nullable(), branchName: z.string().nullable() }).strict(),
86
+ // Return only after removal is confirmed. Busy, failed and uncertain operations must throw.
87
+ z.object({ kind: z.literal("removed") }).strict(),
88
+ ]);
89
+ export const pluginWorkspaceParamsSchema = z
90
+ .object({
91
+ pluginId: z.string().uuid(),
92
+ companyId: z.string().uuid(),
93
+ projectId: z.string().uuid(),
94
+ executionWorkspaceId: z.string().uuid(),
95
+ /** Stable across ambiguous retries; reconcile before repeating effects. */
96
+ operationId: z.string().min(1).max(256),
97
+ generation: z.number().int().nonnegative(),
98
+ deadline: z.string().datetime(),
99
+ runId: z.string().uuid().nullable(),
100
+ agentId: z.string().uuid().nullable(),
101
+ operation: workspaceProviderOperationSchema,
102
+ })
103
+ .strict();
104
+ export function parseWorkspaceProviderResult(params, value) {
105
+ const result = workspaceProviderResultSchema.parse(value);
106
+ const expected = params.operation.kind === "prepare"
107
+ ? "prepared"
108
+ : params.operation.kind === "inspect"
109
+ ? "inspection"
110
+ : params.operation.kind === "finalize" ? "finalized" : "removed";
111
+ if (result.kind !== expected)
112
+ throw new Error("Workspace provider returned the wrong operation result");
113
+ if (result.kind === "prepared" &&
114
+ (result.binding.pluginId !== params.pluginId ||
115
+ result.binding.executionWorkspaceId !== params.executionWorkspaceId ||
116
+ result.binding.projectId !== params.projectId ||
117
+ result.binding.projectWorkspaceId !==
118
+ (params.operation.kind === "prepare"
119
+ ? params.operation.source.id
120
+ : undefined) ||
121
+ result.binding.sourceRevision !==
122
+ (params.operation.kind === "prepare"
123
+ ? params.operation.source.revision
124
+ : undefined))) {
125
+ throw new Error("Workspace provider returned a different source binding");
126
+ }
127
+ if (result.kind === "prepared" &&
128
+ params.operation.kind === "prepare" &&
129
+ params.operation.branchName &&
130
+ result.branchName !== params.operation.branchName) {
131
+ throw new Error("Workspace provider returned a different branch");
132
+ }
133
+ return result;
134
+ }
135
+ //# sourceMappingURL=workspace-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-provider.js","sourceRoot":"","sources":["../src/workspace-provider.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@paperclipai/plugin-sdk",
3
- "version": "2026.1023.0",
3
+ "version": "2026.1024.0-canary.0",
4
4
  "description": "Stable public API for Paperclip plugins — worker-side context and UI bridge hooks",
5
5
  "license": "MIT",
6
6
  "homepage": "https://github.com/paperclipai/paperclip",
@@ -61,7 +61,7 @@
61
61
  "dist"
62
62
  ],
63
63
  "dependencies": {
64
- "@paperclipai/shared": "2026.1023.0",
64
+ "@paperclipai/shared": "2026.1024.0-canary.0",
65
65
  "zod": "^4.4.3"
66
66
  },
67
67
  "devDependencies": {