mirror of
https://github.com/paperclipai/paperclip.git
synced 2026-11-03 09:37:19 +01:00
Merge qualified workspace storage and external owner integration into PR 18395
Co-Authored-By: Paperclip <noreply@paperclip.ing> * commit '56f78fa75e5bc7aa6c54a76badd5644bd3f73fdb': fix(server): schedule only outstanding merge confirmations (#18382) fix(workspaces): inspect storage only when needed (#18410)
This commit is contained in:
commit
6d54fb819d
14 files changed
+317
-183
No files matched your search
@@ -33,6 +33,17 @@ describe("plugin capability constants", () => {
|
||||
});
|
||||
|
||||
describe("plugin manifest validators", () => {
|
||||
it("preserves explicit workspace ancestry support without changing legacy declarations", () => {
|
||||
const manifest = { id: "example.storage", apiVersion: 1, version: "1.0.0", displayName: "Storage", description: "Storage", author: "Tests",
|
||||
categories: ["workspace"], capabilities: ["workspaces.manage", "events.subscribe"], resourceLifecycle: ["project"],
|
||||
entrypoints: { worker: "worker.js" }, workspaceProvider: { modes: ["isolated_workspace"], strategies: ["git_worktree"] } };
|
||||
expect(pluginManifestV1Schema.parse(manifest).workspaceProvider?.supportsMergeAncestry).toBeUndefined();
|
||||
for (const supportsMergeAncestry of [true, false]) {
|
||||
expect(pluginManifestV1Schema.parse({ ...manifest, workspaceProvider: { ...manifest.workspaceProvider, supportsMergeAncestry } })
|
||||
.workspaceProvider?.supportsMergeAncestry).toBe(supportsMergeAncestry);
|
||||
}
|
||||
expect(pluginManifestV1Schema.safeParse({ ...manifest, workspaceProvider: { ...manifest.workspaceProvider, supportsMergeAncestry: "false" } }).success).toBe(false);
|
||||
});
|
||||
it("limits environment skills to unique declarations owned by the plugin", () => {
|
||||
const manifest = { ...buildSandboxProviderManifest({ skillKeys: ["desktop"] }),
|
||||
capabilities: ["environment.drivers.register", "skills.managed"],
|
||||
|
||||
@@ -808,6 +808,7 @@ export const pluginManifestV1Schema = z.object({
|
||||
agentLifecycle: z.literal(true).optional(),
|
||||
workspaceProvider: z.object({
|
||||
finalizationVersion: z.literal(1).optional(),
|
||||
supportsMergeAncestry: z.boolean().optional(),
|
||||
freshWorkspaceVersion: z.literal(1).optional(),
|
||||
modes: z.array(z.enum(["shared_workspace", "isolated_workspace", "operator_branch"])).min(1).max(3),
|
||||
strategies: z.array(z.enum(["project_primary", "git_worktree"])).min(1).max(2),
|
||||
|
||||
Reference in new issue
Block a user