@playcraft/common 0.0.56 → 0.0.58
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/README.md +1 -1
- package/dist/agent/gamepilot.d.ts +17 -0
- package/dist/agent/gamepilot.d.ts.map +1 -0
- package/dist/agent/gamepilot.js +37 -0
- package/dist/agent/gamepilot.js.map +1 -0
- package/dist/agent/index.d.ts +2 -0
- package/dist/agent/index.d.ts.map +1 -1
- package/dist/agent/index.js +2 -0
- package/dist/agent/index.js.map +1 -1
- package/dist/agent/openai-responses-api.d.ts +30 -0
- package/dist/agent/openai-responses-api.d.ts.map +1 -0
- package/dist/agent/openai-responses-api.js +58 -0
- package/dist/agent/openai-responses-api.js.map +1 -0
- package/dist/agent/runtime-failure.d.ts +3 -1
- package/dist/agent/runtime-failure.d.ts.map +1 -1
- package/dist/agent/runtime-failure.js +6 -1
- package/dist/agent/runtime-failure.js.map +1 -1
- package/dist/agent/session-title.d.ts +1 -1
- package/dist/agent/session-title.js +1 -1
- package/dist/agent-messages/db-message-converter.d.ts +12 -0
- package/dist/agent-messages/db-message-converter.d.ts.map +1 -1
- package/dist/agent-messages/db-message-converter.js +28 -0
- package/dist/agent-messages/db-message-converter.js.map +1 -1
- package/dist/agent-messages/runtime-user-messages.d.ts +3 -0
- package/dist/agent-messages/runtime-user-messages.d.ts.map +1 -1
- package/dist/agent-messages/runtime-user-messages.js +36 -2
- package/dist/agent-messages/runtime-user-messages.js.map +1 -1
- package/dist/agent-tools/index.d.ts +1 -0
- package/dist/agent-tools/index.d.ts.map +1 -1
- package/dist/agent-tools/index.js +1 -0
- package/dist/agent-tools/index.js.map +1 -1
- package/dist/agent-tools/operation-protocol.d.ts +10 -0
- package/dist/agent-tools/operation-protocol.d.ts.map +1 -0
- package/dist/agent-tools/operation-protocol.js +13 -0
- package/dist/agent-tools/operation-protocol.js.map +1 -0
- package/dist/agent-tools/types.d.ts +1 -1
- package/dist/agent-tools/types.d.ts.map +1 -1
- package/dist/agent-tools/types.js +8 -1
- package/dist/agent-tools/types.js.map +1 -1
- package/dist/auth/index.d.ts +2 -0
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +2 -0
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/jwt.d.ts.map +1 -1
- package/dist/auth/jwt.js +2 -7
- package/dist/auth/jwt.js.map +1 -1
- package/dist/auth/project-access-checker.d.ts +42 -0
- package/dist/auth/project-access-checker.d.ts.map +1 -0
- package/dist/auth/project-access-checker.js +81 -0
- package/dist/auth/project-access-checker.js.map +1 -0
- package/dist/auth/resolve-secret.d.ts +18 -0
- package/dist/auth/resolve-secret.d.ts.map +1 -0
- package/dist/auth/resolve-secret.js +33 -0
- package/dist/auth/resolve-secret.js.map +1 -0
- package/dist/auth/signature.d.ts +6 -1
- package/dist/auth/signature.d.ts.map +1 -1
- package/dist/auth/signature.js +8 -3
- package/dist/auth/signature.js.map +1 -1
- package/dist/cloud-workspace/runtime/agent-chat-flush.d.ts +57 -0
- package/dist/cloud-workspace/runtime/agent-chat-flush.d.ts.map +1 -0
- package/dist/cloud-workspace/runtime/agent-chat-flush.js +55 -0
- package/dist/cloud-workspace/runtime/agent-chat-flush.js.map +1 -0
- package/dist/cloud-workspace/runtime/agent-codebuddy.d.ts +266 -0
- package/dist/cloud-workspace/runtime/agent-codebuddy.d.ts.map +1 -0
- package/dist/cloud-workspace/runtime/agent-codebuddy.js +189 -0
- package/dist/cloud-workspace/runtime/agent-codebuddy.js.map +1 -0
- package/dist/cloud-workspace/runtime/agent-command.d.ts +130 -0
- package/dist/cloud-workspace/runtime/agent-command.d.ts.map +1 -0
- package/dist/cloud-workspace/runtime/agent-command.js +75 -0
- package/dist/cloud-workspace/runtime/agent-command.js.map +1 -0
- package/dist/cloud-workspace/runtime/agent-connection.d.ts +76 -0
- package/dist/cloud-workspace/runtime/agent-connection.d.ts.map +1 -0
- package/dist/cloud-workspace/runtime/agent-connection.js +59 -0
- package/dist/cloud-workspace/runtime/agent-connection.js.map +1 -0
- package/dist/cloud-workspace/runtime/agent-lifecycle.d.ts +85 -0
- package/dist/cloud-workspace/runtime/agent-lifecycle.d.ts.map +1 -0
- package/dist/cloud-workspace/runtime/agent-lifecycle.js +70 -0
- package/dist/cloud-workspace/runtime/agent-lifecycle.js.map +1 -0
- package/dist/cloud-workspace/runtime/agent-mutation.d.ts +197 -0
- package/dist/cloud-workspace/runtime/agent-mutation.d.ts.map +1 -0
- package/dist/cloud-workspace/runtime/agent-mutation.js +114 -0
- package/dist/cloud-workspace/runtime/agent-mutation.js.map +1 -0
- package/dist/cloud-workspace/runtime/agent-opencode-gateway.d.ts +156 -0
- package/dist/cloud-workspace/runtime/agent-opencode-gateway.d.ts.map +1 -0
- package/dist/cloud-workspace/runtime/agent-opencode-gateway.js +141 -0
- package/dist/cloud-workspace/runtime/agent-opencode-gateway.js.map +1 -0
- package/dist/cloud-workspace/runtime/agent-opencode.d.ts +240 -0
- package/dist/cloud-workspace/runtime/agent-opencode.d.ts.map +1 -0
- package/dist/cloud-workspace/runtime/agent-opencode.js +176 -0
- package/dist/cloud-workspace/runtime/agent-opencode.js.map +1 -0
- package/dist/cloud-workspace/runtime/agent-promotion.d.ts +20 -0
- package/dist/cloud-workspace/runtime/agent-promotion.d.ts.map +1 -0
- package/dist/cloud-workspace/runtime/agent-promotion.js +19 -0
- package/dist/cloud-workspace/runtime/agent-promotion.js.map +1 -0
- package/dist/cloud-workspace/runtime/agent-read.d.ts +343 -0
- package/dist/cloud-workspace/runtime/agent-read.d.ts.map +1 -0
- package/dist/cloud-workspace/runtime/agent-read.js +159 -0
- package/dist/cloud-workspace/runtime/agent-read.js.map +1 -0
- package/dist/cloud-workspace/runtime/agent-tool-claim.d.ts +18 -0
- package/dist/cloud-workspace/runtime/agent-tool-claim.d.ts.map +1 -0
- package/dist/cloud-workspace/runtime/agent-tool-claim.js +16 -0
- package/dist/cloud-workspace/runtime/agent-tool-claim.js.map +1 -0
- package/dist/cloud-workspace/runtime/capabilities.d.ts +40 -0
- package/dist/cloud-workspace/runtime/capabilities.d.ts.map +1 -0
- package/dist/cloud-workspace/runtime/capabilities.js +53 -0
- package/dist/cloud-workspace/runtime/capabilities.js.map +1 -0
- package/dist/cloud-workspace/runtime/checkpoints.d.ts +60 -0
- package/dist/cloud-workspace/runtime/checkpoints.d.ts.map +1 -0
- package/dist/cloud-workspace/runtime/checkpoints.js +33 -0
- package/dist/cloud-workspace/runtime/checkpoints.js.map +1 -0
- package/dist/cloud-workspace/runtime/config.d.ts +42 -0
- package/dist/cloud-workspace/runtime/config.d.ts.map +1 -0
- package/dist/cloud-workspace/runtime/config.js +89 -0
- package/dist/cloud-workspace/runtime/config.js.map +1 -0
- package/dist/cloud-workspace/runtime/errors.d.ts +26 -0
- package/dist/cloud-workspace/runtime/errors.d.ts.map +1 -0
- package/dist/cloud-workspace/runtime/errors.js +40 -0
- package/dist/cloud-workspace/runtime/errors.js.map +1 -0
- package/dist/cloud-workspace/runtime/events.d.ts +107 -0
- package/dist/cloud-workspace/runtime/events.d.ts.map +1 -0
- package/dist/cloud-workspace/runtime/events.js +70 -0
- package/dist/cloud-workspace/runtime/events.js.map +1 -0
- package/dist/cloud-workspace/runtime/execution-grant.d.ts +36 -0
- package/dist/cloud-workspace/runtime/execution-grant.d.ts.map +1 -0
- package/dist/cloud-workspace/runtime/execution-grant.js +102 -0
- package/dist/cloud-workspace/runtime/execution-grant.js.map +1 -0
- package/dist/cloud-workspace/runtime/file-snapshot.d.ts +62 -0
- package/dist/cloud-workspace/runtime/file-snapshot.d.ts.map +1 -0
- package/dist/cloud-workspace/runtime/file-snapshot.js +147 -0
- package/dist/cloud-workspace/runtime/file-snapshot.js.map +1 -0
- package/dist/cloud-workspace/runtime/files.d.ts +58 -0
- package/dist/cloud-workspace/runtime/files.d.ts.map +1 -0
- package/dist/cloud-workspace/runtime/files.js +78 -0
- package/dist/cloud-workspace/runtime/files.js.map +1 -0
- package/dist/cloud-workspace/runtime/generations.d.ts +18 -0
- package/dist/cloud-workspace/runtime/generations.d.ts.map +1 -0
- package/dist/cloud-workspace/runtime/generations.js +39 -0
- package/dist/cloud-workspace/runtime/generations.js.map +1 -0
- package/dist/cloud-workspace/runtime/git.d.ts +46 -0
- package/dist/cloud-workspace/runtime/git.d.ts.map +1 -0
- package/dist/cloud-workspace/runtime/git.js +44 -0
- package/dist/cloud-workspace/runtime/git.js.map +1 -0
- package/dist/cloud-workspace/runtime/handshake.d.ts +47 -0
- package/dist/cloud-workspace/runtime/handshake.d.ts.map +1 -0
- package/dist/cloud-workspace/runtime/handshake.js +31 -0
- package/dist/cloud-workspace/runtime/handshake.js.map +1 -0
- package/dist/cloud-workspace/runtime/http-object-store.d.ts +15 -0
- package/dist/cloud-workspace/runtime/http-object-store.d.ts.map +1 -0
- package/dist/cloud-workspace/runtime/http-object-store.js +108 -0
- package/dist/cloud-workspace/runtime/http-object-store.js.map +1 -0
- package/dist/cloud-workspace/runtime/index.d.ts +32 -0
- package/dist/cloud-workspace/runtime/index.d.ts.map +1 -0
- package/dist/cloud-workspace/runtime/index.js +32 -0
- package/dist/cloud-workspace/runtime/index.js.map +1 -0
- package/dist/cloud-workspace/runtime/instance-rebuild.d.ts +59 -0
- package/dist/cloud-workspace/runtime/instance-rebuild.d.ts.map +1 -0
- package/dist/cloud-workspace/runtime/instance-rebuild.js +51 -0
- package/dist/cloud-workspace/runtime/instance-rebuild.js.map +1 -0
- package/dist/cloud-workspace/runtime/operations.d.ts +142 -0
- package/dist/cloud-workspace/runtime/operations.d.ts.map +1 -0
- package/dist/cloud-workspace/runtime/operations.js +134 -0
- package/dist/cloud-workspace/runtime/operations.js.map +1 -0
- package/dist/cloud-workspace/runtime/parameters.d.ts +38 -0
- package/dist/cloud-workspace/runtime/parameters.d.ts.map +1 -0
- package/dist/cloud-workspace/runtime/parameters.js +75 -0
- package/dist/cloud-workspace/runtime/parameters.js.map +1 -0
- package/dist/cloud-workspace/runtime/project-native-skills.d.ts +40 -0
- package/dist/cloud-workspace/runtime/project-native-skills.d.ts.map +1 -0
- package/dist/cloud-workspace/runtime/project-native-skills.js +45 -0
- package/dist/cloud-workspace/runtime/project-native-skills.js.map +1 -0
- package/dist/cloud-workspace/runtime/protocol.d.ts +23 -0
- package/dist/cloud-workspace/runtime/protocol.d.ts.map +1 -0
- package/dist/cloud-workspace/runtime/protocol.js +30 -0
- package/dist/cloud-workspace/runtime/protocol.js.map +1 -0
- package/dist/cloud-workspace/runtime/resource-grant.d.ts +54 -0
- package/dist/cloud-workspace/runtime/resource-grant.d.ts.map +1 -0
- package/dist/cloud-workspace/runtime/resource-grant.js +80 -0
- package/dist/cloud-workspace/runtime/resource-grant.js.map +1 -0
- package/dist/cloud-workspace/runtime/terminals.d.ts +52 -0
- package/dist/cloud-workspace/runtime/terminals.d.ts.map +1 -0
- package/dist/cloud-workspace/runtime/terminals.js +62 -0
- package/dist/cloud-workspace/runtime/terminals.js.map +1 -0
- package/dist/cloud-workspace/runtime/variant-workspace.d.ts +221 -0
- package/dist/cloud-workspace/runtime/variant-workspace.d.ts.map +1 -0
- package/dist/cloud-workspace/runtime/variant-workspace.js +75 -0
- package/dist/cloud-workspace/runtime/variant-workspace.js.map +1 -0
- package/dist/cloud-workspace/runtime/workspace-binding.d.ts +84 -0
- package/dist/cloud-workspace/runtime/workspace-binding.d.ts.map +1 -0
- package/dist/cloud-workspace/runtime/workspace-binding.js +121 -0
- package/dist/cloud-workspace/runtime/workspace-binding.js.map +1 -0
- package/dist/database/postgres-adapter.js +1 -1
- package/dist/database/postgres-adapter.js.map +1 -1
- package/dist/database/schema.d.ts +1 -1
- package/dist/database/schema.js +1 -1
- package/dist/messenger/server.d.ts +14 -1
- package/dist/messenger/server.d.ts.map +1 -1
- package/dist/messenger/server.js +5 -1
- package/dist/messenger/server.js.map +1 -1
- package/dist/playable-ads-filename.d.ts +16 -0
- package/dist/playable-ads-filename.d.ts.map +1 -1
- package/dist/playable-ads-filename.js +18 -0
- package/dist/playable-ads-filename.js.map +1 -1
- package/dist/prefab/mime-type-list.d.ts.map +1 -1
- package/dist/prefab/mime-type-list.js +8 -0
- package/dist/prefab/mime-type-list.js.map +1 -1
- package/dist/project-skills/bundle-archive.d.ts +21 -0
- package/dist/project-skills/bundle-archive.d.ts.map +1 -0
- package/dist/project-skills/bundle-archive.js +161 -0
- package/dist/project-skills/bundle-archive.js.map +1 -0
- package/dist/project-skills/bundle-path.d.ts +3 -0
- package/dist/project-skills/bundle-path.d.ts.map +1 -0
- package/dist/project-skills/bundle-path.js +17 -0
- package/dist/project-skills/bundle-path.js.map +1 -0
- package/dist/project-skills/evidence.d.ts +15 -0
- package/dist/project-skills/evidence.d.ts.map +1 -0
- package/dist/project-skills/evidence.js +33 -0
- package/dist/project-skills/evidence.js.map +1 -0
- package/dist/project-skills/index.d.ts +7 -0
- package/dist/project-skills/index.d.ts.map +1 -0
- package/dist/project-skills/index.js +7 -0
- package/dist/project-skills/index.js.map +1 -0
- package/dist/project-skills/inventory.d.ts +23 -0
- package/dist/project-skills/inventory.d.ts.map +1 -0
- package/dist/project-skills/inventory.js +150 -0
- package/dist/project-skills/inventory.js.map +1 -0
- package/dist/project-skills/local-snapshot.d.ts +12 -0
- package/dist/project-skills/local-snapshot.d.ts.map +1 -0
- package/dist/project-skills/local-snapshot.js +66 -0
- package/dist/project-skills/local-snapshot.js.map +1 -0
- package/dist/project-skills/protocol.d.ts +31 -0
- package/dist/project-skills/protocol.d.ts.map +1 -0
- package/dist/project-skills/protocol.js +197 -0
- package/dist/project-skills/protocol.js.map +1 -0
- package/dist/project-skills/runtime-plugin.d.ts +66 -0
- package/dist/project-skills/runtime-plugin.d.ts.map +1 -0
- package/dist/project-skills/runtime-plugin.js +102 -0
- package/dist/project-skills/runtime-plugin.js.map +1 -0
- package/dist/project-skills/types.d.ts +63 -0
- package/dist/project-skills/types.d.ts.map +1 -0
- package/dist/project-skills/types.js +13 -0
- package/dist/project-skills/types.js.map +1 -0
- package/dist/recommend/types.d.ts +1 -1
- package/dist/recommend/types.js +1 -1
- package/dist/sharedb/server.d.ts +12 -0
- package/dist/sharedb/server.d.ts.map +1 -1
- package/dist/sharedb/server.js +27 -6
- package/dist/sharedb/server.js.map +1 -1
- package/dist/skill-evaluation.d.ts +152 -0
- package/dist/skill-evaluation.d.ts.map +1 -0
- package/dist/skill-evaluation.js +14 -0
- package/dist/skill-evaluation.js.map +1 -0
- package/package.json +25 -1
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { workspaceRelativePathSchema } from './files.js';
|
|
3
|
+
export const TERMINAL_STATUSES = ['active', 'destroyed'];
|
|
4
|
+
export const terminalIdSchema = z.string().trim().min(1).max(128);
|
|
5
|
+
export const terminalCreatePayloadSchema = z
|
|
6
|
+
.object({
|
|
7
|
+
terminalId: terminalIdSchema.optional(),
|
|
8
|
+
cwd: workspaceRelativePathSchema.optional(),
|
|
9
|
+
})
|
|
10
|
+
.strict();
|
|
11
|
+
export const terminalRecordSchema = z
|
|
12
|
+
.object({
|
|
13
|
+
terminalId: terminalIdSchema,
|
|
14
|
+
workspaceId: z.string().min(1).max(128),
|
|
15
|
+
environment: z.string().min(1).max(64),
|
|
16
|
+
userId: z.string().min(1).max(128),
|
|
17
|
+
runtimeId: z.string().min(1).max(128).optional(),
|
|
18
|
+
generation: z.number().int().nonnegative().optional(),
|
|
19
|
+
runtimeEpoch: z.number().int().nonnegative().optional(),
|
|
20
|
+
processIdentity: z.string().min(1).max(512),
|
|
21
|
+
cwd: z.string().max(512),
|
|
22
|
+
status: z.enum(TERMINAL_STATUSES),
|
|
23
|
+
createdAt: z.string().min(1),
|
|
24
|
+
destroyedAt: z.string().min(1).optional(),
|
|
25
|
+
})
|
|
26
|
+
.strict();
|
|
27
|
+
export function terminalProcessIdentity(workspaceId, terminalId, cwd = '') {
|
|
28
|
+
return cwd ? `term:${workspaceId}:${terminalId}|${cwd}` : `term:${workspaceId}:${terminalId}`;
|
|
29
|
+
}
|
|
30
|
+
export function parseTerminalProcessIdentity(value) {
|
|
31
|
+
const separator = value.indexOf('|');
|
|
32
|
+
const head = separator === -1 ? value : value.slice(0, separator);
|
|
33
|
+
const cwd = separator === -1 ? '' : value.slice(separator + 1);
|
|
34
|
+
const match = /^term:([^:]+):(.+)$/.exec(head);
|
|
35
|
+
return {
|
|
36
|
+
workspaceId: match?.[1],
|
|
37
|
+
terminalId: match?.[2],
|
|
38
|
+
cwd,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
/** Client-chosen connection endpoints. Identity drafts persist leases without a display. */
|
|
42
|
+
export const UNTRUSTED_DISPLAY_FIELDS = [
|
|
43
|
+
'displayUrl',
|
|
44
|
+
'vncUrl',
|
|
45
|
+
'websocketUrl',
|
|
46
|
+
'host',
|
|
47
|
+
'url',
|
|
48
|
+
'novnc',
|
|
49
|
+
];
|
|
50
|
+
export const desktopAccessPayloadSchema = z.object({}).strict();
|
|
51
|
+
export const desktopLeaseRecordSchema = z
|
|
52
|
+
.object({
|
|
53
|
+
leaseId: z.string().min(1).max(128),
|
|
54
|
+
environment: z.string().min(1).max(64),
|
|
55
|
+
userId: z.string().min(1).max(128),
|
|
56
|
+
takeoverRevision: z.number().int().nonnegative(),
|
|
57
|
+
status: z.enum(['active', 'released']),
|
|
58
|
+
display: z.literal('not_started'),
|
|
59
|
+
expiresAt: z.string().min(1).optional(),
|
|
60
|
+
})
|
|
61
|
+
.strict();
|
|
62
|
+
//# sourceMappingURL=terminals.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminals.js","sourceRoot":"","sources":["../../../src/cloud-workspace/runtime/terminals.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const variantWorkspacePayloadSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
3
|
+
action: z.ZodLiteral<"clone">;
|
|
4
|
+
sourceBranch: z.ZodString;
|
|
5
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
6
|
+
action: z.ZodLiteral<"install">;
|
|
7
|
+
seedFiles: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
8
|
+
path: z.ZodString;
|
|
9
|
+
content: z.ZodString;
|
|
10
|
+
encoding: z.ZodDefault<z.ZodEnum<{
|
|
11
|
+
base64: "base64";
|
|
12
|
+
utf8: "utf8";
|
|
13
|
+
}>>;
|
|
14
|
+
}, z.core.$strict>>>;
|
|
15
|
+
}, z.core.$strict>], "action">;
|
|
16
|
+
export declare const variantWorkspaceRequestSchema: z.ZodUnion<readonly [z.ZodObject<{
|
|
17
|
+
payload: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
18
|
+
action: z.ZodLiteral<"clone">;
|
|
19
|
+
sourceBranch: z.ZodString;
|
|
20
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
21
|
+
action: z.ZodLiteral<"install">;
|
|
22
|
+
seedFiles: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
23
|
+
path: z.ZodString;
|
|
24
|
+
content: z.ZodString;
|
|
25
|
+
encoding: z.ZodDefault<z.ZodEnum<{
|
|
26
|
+
base64: "base64";
|
|
27
|
+
utf8: "utf8";
|
|
28
|
+
}>>;
|
|
29
|
+
}, z.core.$strict>>>;
|
|
30
|
+
}, z.core.$strict>], "action">;
|
|
31
|
+
settledOnly: z.ZodDefault<z.ZodLiteral<false>>;
|
|
32
|
+
claim: z.ZodObject<{
|
|
33
|
+
action: z.ZodEnum<{
|
|
34
|
+
settled: "settled";
|
|
35
|
+
ensure_opencode: "ensure_opencode";
|
|
36
|
+
ensure_preview: "ensure_preview";
|
|
37
|
+
sync_model: "sync_model";
|
|
38
|
+
}>;
|
|
39
|
+
sessionId: z.ZodString;
|
|
40
|
+
requestId: z.ZodString;
|
|
41
|
+
writerEpoch: z.ZodNumber;
|
|
42
|
+
workspaceId: z.ZodString;
|
|
43
|
+
kind: z.ZodEnum<{
|
|
44
|
+
session: "session";
|
|
45
|
+
manager: "manager";
|
|
46
|
+
execution: "execution";
|
|
47
|
+
}>;
|
|
48
|
+
runId: z.ZodOptional<z.ZodString>;
|
|
49
|
+
executionId: z.ZodOptional<z.ZodString>;
|
|
50
|
+
issueId: z.ZodOptional<z.ZodString>;
|
|
51
|
+
claimToken: z.ZodOptional<z.ZodString>;
|
|
52
|
+
settledOnly: z.ZodDefault<z.ZodBoolean>;
|
|
53
|
+
}, z.core.$strict>;
|
|
54
|
+
variantId: z.ZodString;
|
|
55
|
+
leaseToken: z.ZodString;
|
|
56
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
57
|
+
action: z.ZodEnum<{
|
|
58
|
+
install: "install";
|
|
59
|
+
clone: "clone";
|
|
60
|
+
}>;
|
|
61
|
+
inputHash: z.ZodString;
|
|
62
|
+
settledOnly: z.ZodLiteral<true>;
|
|
63
|
+
claim: z.ZodObject<{
|
|
64
|
+
action: z.ZodEnum<{
|
|
65
|
+
settled: "settled";
|
|
66
|
+
ensure_opencode: "ensure_opencode";
|
|
67
|
+
ensure_preview: "ensure_preview";
|
|
68
|
+
sync_model: "sync_model";
|
|
69
|
+
}>;
|
|
70
|
+
sessionId: z.ZodString;
|
|
71
|
+
requestId: z.ZodString;
|
|
72
|
+
writerEpoch: z.ZodNumber;
|
|
73
|
+
workspaceId: z.ZodString;
|
|
74
|
+
kind: z.ZodEnum<{
|
|
75
|
+
session: "session";
|
|
76
|
+
manager: "manager";
|
|
77
|
+
execution: "execution";
|
|
78
|
+
}>;
|
|
79
|
+
runId: z.ZodOptional<z.ZodString>;
|
|
80
|
+
executionId: z.ZodOptional<z.ZodString>;
|
|
81
|
+
issueId: z.ZodOptional<z.ZodString>;
|
|
82
|
+
claimToken: z.ZodOptional<z.ZodString>;
|
|
83
|
+
settledOnly: z.ZodDefault<z.ZodBoolean>;
|
|
84
|
+
}, z.core.$strict>;
|
|
85
|
+
variantId: z.ZodString;
|
|
86
|
+
leaseToken: z.ZodString;
|
|
87
|
+
}, z.core.$strict>]>;
|
|
88
|
+
export declare const variantWorkspaceResponseSchema: z.ZodObject<{
|
|
89
|
+
requestId: z.ZodString;
|
|
90
|
+
operationId: z.ZodString;
|
|
91
|
+
inputHash: z.ZodString;
|
|
92
|
+
result: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
93
|
+
outcome: z.ZodLiteral<"running">;
|
|
94
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
95
|
+
outcome: z.ZodLiteral<"uncertain">;
|
|
96
|
+
error: z.ZodString;
|
|
97
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
98
|
+
outcome: z.ZodLiteral<"settled">;
|
|
99
|
+
status: z.ZodEnum<{
|
|
100
|
+
failed: "failed";
|
|
101
|
+
completed: "completed";
|
|
102
|
+
}>;
|
|
103
|
+
error: z.ZodOptional<z.ZodString>;
|
|
104
|
+
}, z.core.$strict>], "outcome">;
|
|
105
|
+
}, z.core.$strict>;
|
|
106
|
+
export declare const variantWorkspaceIntentSchema: z.ZodObject<{
|
|
107
|
+
requestId: z.ZodString;
|
|
108
|
+
payload: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
109
|
+
action: z.ZodLiteral<"clone">;
|
|
110
|
+
sourceBranch: z.ZodString;
|
|
111
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
112
|
+
action: z.ZodLiteral<"install">;
|
|
113
|
+
seedFiles: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
114
|
+
path: z.ZodString;
|
|
115
|
+
content: z.ZodString;
|
|
116
|
+
encoding: z.ZodDefault<z.ZodEnum<{
|
|
117
|
+
base64: "base64";
|
|
118
|
+
utf8: "utf8";
|
|
119
|
+
}>>;
|
|
120
|
+
}, z.core.$strict>>>;
|
|
121
|
+
}, z.core.$strict>], "action">;
|
|
122
|
+
inputHash: z.ZodString;
|
|
123
|
+
receipt: z.ZodOptional<z.ZodObject<{
|
|
124
|
+
requestId: z.ZodString;
|
|
125
|
+
operationId: z.ZodString;
|
|
126
|
+
inputHash: z.ZodString;
|
|
127
|
+
result: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
128
|
+
outcome: z.ZodLiteral<"running">;
|
|
129
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
130
|
+
outcome: z.ZodLiteral<"uncertain">;
|
|
131
|
+
error: z.ZodString;
|
|
132
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
133
|
+
outcome: z.ZodLiteral<"settled">;
|
|
134
|
+
status: z.ZodEnum<{
|
|
135
|
+
failed: "failed";
|
|
136
|
+
completed: "completed";
|
|
137
|
+
}>;
|
|
138
|
+
error: z.ZodOptional<z.ZodString>;
|
|
139
|
+
}, z.core.$strict>], "outcome">;
|
|
140
|
+
}, z.core.$strict>>;
|
|
141
|
+
}, z.core.$strict>;
|
|
142
|
+
export declare const variantWorkspaceIntentsSchema: z.ZodObject<{
|
|
143
|
+
clone: z.ZodOptional<z.ZodObject<{
|
|
144
|
+
requestId: z.ZodString;
|
|
145
|
+
payload: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
146
|
+
action: z.ZodLiteral<"clone">;
|
|
147
|
+
sourceBranch: z.ZodString;
|
|
148
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
149
|
+
action: z.ZodLiteral<"install">;
|
|
150
|
+
seedFiles: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
151
|
+
path: z.ZodString;
|
|
152
|
+
content: z.ZodString;
|
|
153
|
+
encoding: z.ZodDefault<z.ZodEnum<{
|
|
154
|
+
base64: "base64";
|
|
155
|
+
utf8: "utf8";
|
|
156
|
+
}>>;
|
|
157
|
+
}, z.core.$strict>>>;
|
|
158
|
+
}, z.core.$strict>], "action">;
|
|
159
|
+
inputHash: z.ZodString;
|
|
160
|
+
receipt: z.ZodOptional<z.ZodObject<{
|
|
161
|
+
requestId: z.ZodString;
|
|
162
|
+
operationId: z.ZodString;
|
|
163
|
+
inputHash: z.ZodString;
|
|
164
|
+
result: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
165
|
+
outcome: z.ZodLiteral<"running">;
|
|
166
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
167
|
+
outcome: z.ZodLiteral<"uncertain">;
|
|
168
|
+
error: z.ZodString;
|
|
169
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
170
|
+
outcome: z.ZodLiteral<"settled">;
|
|
171
|
+
status: z.ZodEnum<{
|
|
172
|
+
failed: "failed";
|
|
173
|
+
completed: "completed";
|
|
174
|
+
}>;
|
|
175
|
+
error: z.ZodOptional<z.ZodString>;
|
|
176
|
+
}, z.core.$strict>], "outcome">;
|
|
177
|
+
}, z.core.$strict>>;
|
|
178
|
+
}, z.core.$strict>>;
|
|
179
|
+
install: z.ZodOptional<z.ZodObject<{
|
|
180
|
+
requestId: z.ZodString;
|
|
181
|
+
payload: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
182
|
+
action: z.ZodLiteral<"clone">;
|
|
183
|
+
sourceBranch: z.ZodString;
|
|
184
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
185
|
+
action: z.ZodLiteral<"install">;
|
|
186
|
+
seedFiles: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
187
|
+
path: z.ZodString;
|
|
188
|
+
content: z.ZodString;
|
|
189
|
+
encoding: z.ZodDefault<z.ZodEnum<{
|
|
190
|
+
base64: "base64";
|
|
191
|
+
utf8: "utf8";
|
|
192
|
+
}>>;
|
|
193
|
+
}, z.core.$strict>>>;
|
|
194
|
+
}, z.core.$strict>], "action">;
|
|
195
|
+
inputHash: z.ZodString;
|
|
196
|
+
receipt: z.ZodOptional<z.ZodObject<{
|
|
197
|
+
requestId: z.ZodString;
|
|
198
|
+
operationId: z.ZodString;
|
|
199
|
+
inputHash: z.ZodString;
|
|
200
|
+
result: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
201
|
+
outcome: z.ZodLiteral<"running">;
|
|
202
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
203
|
+
outcome: z.ZodLiteral<"uncertain">;
|
|
204
|
+
error: z.ZodString;
|
|
205
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
206
|
+
outcome: z.ZodLiteral<"settled">;
|
|
207
|
+
status: z.ZodEnum<{
|
|
208
|
+
failed: "failed";
|
|
209
|
+
completed: "completed";
|
|
210
|
+
}>;
|
|
211
|
+
error: z.ZodOptional<z.ZodString>;
|
|
212
|
+
}, z.core.$strict>], "outcome">;
|
|
213
|
+
}, z.core.$strict>>;
|
|
214
|
+
}, z.core.$strict>>;
|
|
215
|
+
}, z.core.$strict>;
|
|
216
|
+
export type VariantWorkspacePayload = z.infer<typeof variantWorkspacePayloadSchema>;
|
|
217
|
+
export type VariantWorkspaceRequest = z.infer<typeof variantWorkspaceRequestSchema>;
|
|
218
|
+
export type VariantWorkspaceResponse = z.infer<typeof variantWorkspaceResponseSchema>;
|
|
219
|
+
export type VariantWorkspaceIntent = z.infer<typeof variantWorkspaceIntentSchema>;
|
|
220
|
+
export type VariantWorkspaceIntents = z.infer<typeof variantWorkspaceIntentsSchema>;
|
|
221
|
+
//# sourceMappingURL=variant-workspace.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"variant-workspace.d.ts","sourceRoot":"","sources":["../../../src/cloud-workspace/runtime/variant-workspace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;8BAmBxC,CAAC;AAMH,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBAgBxC,CAAC;AACH,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;kBAiBhC,CAAC;AACZ,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAO9B,CAAC;AACZ,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAK/B,CAAC;AACZ,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AACpF,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AACpF,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAC;AACtF,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAClF,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { agentConnectionRequestSchema } from './agent-connection.js';
|
|
3
|
+
export const variantWorkspacePayloadSchema = z.discriminatedUnion('action', [
|
|
4
|
+
z.object({ action: z.literal('clone'), sourceBranch: z.string().min(1).max(512) }).strict(),
|
|
5
|
+
z
|
|
6
|
+
.object({
|
|
7
|
+
action: z.literal('install'),
|
|
8
|
+
seedFiles: z
|
|
9
|
+
.array(z
|
|
10
|
+
.object({
|
|
11
|
+
path: z.string().min(1).max(1000),
|
|
12
|
+
content: z.string().max(8 * 1024 * 1024),
|
|
13
|
+
encoding: z.enum(['utf8', 'base64']).default('utf8'),
|
|
14
|
+
})
|
|
15
|
+
.strict())
|
|
16
|
+
.max(100)
|
|
17
|
+
.default([]),
|
|
18
|
+
})
|
|
19
|
+
.strict(),
|
|
20
|
+
]);
|
|
21
|
+
const authority = {
|
|
22
|
+
claim: agentConnectionRequestSchema,
|
|
23
|
+
variantId: z.string().uuid(),
|
|
24
|
+
leaseToken: z.string().uuid(),
|
|
25
|
+
};
|
|
26
|
+
export const variantWorkspaceRequestSchema = z.union([
|
|
27
|
+
z
|
|
28
|
+
.object({
|
|
29
|
+
...authority,
|
|
30
|
+
payload: variantWorkspacePayloadSchema,
|
|
31
|
+
settledOnly: z.literal(false).default(false),
|
|
32
|
+
})
|
|
33
|
+
.strict(),
|
|
34
|
+
z
|
|
35
|
+
.object({
|
|
36
|
+
...authority,
|
|
37
|
+
action: z.enum(['clone', 'install']),
|
|
38
|
+
inputHash: z.string().regex(/^[a-f0-9]{64}$/),
|
|
39
|
+
settledOnly: z.literal(true),
|
|
40
|
+
})
|
|
41
|
+
.strict(),
|
|
42
|
+
]);
|
|
43
|
+
export const variantWorkspaceResponseSchema = z
|
|
44
|
+
.object({
|
|
45
|
+
requestId: z.string().uuid(),
|
|
46
|
+
operationId: z.string().uuid(),
|
|
47
|
+
inputHash: z.string().regex(/^[a-f0-9]{64}$/),
|
|
48
|
+
result: z.discriminatedUnion('outcome', [
|
|
49
|
+
z.object({ outcome: z.literal('running') }).strict(),
|
|
50
|
+
z.object({ outcome: z.literal('uncertain'), error: z.string().max(128) }).strict(),
|
|
51
|
+
z
|
|
52
|
+
.object({
|
|
53
|
+
outcome: z.literal('settled'),
|
|
54
|
+
status: z.enum(['completed', 'failed']),
|
|
55
|
+
error: z.string().max(128).optional(),
|
|
56
|
+
})
|
|
57
|
+
.strict(),
|
|
58
|
+
]),
|
|
59
|
+
})
|
|
60
|
+
.strict();
|
|
61
|
+
export const variantWorkspaceIntentSchema = z
|
|
62
|
+
.object({
|
|
63
|
+
requestId: z.string().uuid(),
|
|
64
|
+
payload: variantWorkspacePayloadSchema,
|
|
65
|
+
inputHash: z.string().regex(/^[a-f0-9]{64}$/),
|
|
66
|
+
receipt: variantWorkspaceResponseSchema.optional(),
|
|
67
|
+
})
|
|
68
|
+
.strict();
|
|
69
|
+
export const variantWorkspaceIntentsSchema = z
|
|
70
|
+
.object({
|
|
71
|
+
clone: variantWorkspaceIntentSchema.optional(),
|
|
72
|
+
install: variantWorkspaceIntentSchema.optional(),
|
|
73
|
+
})
|
|
74
|
+
.strict();
|
|
75
|
+
//# sourceMappingURL=variant-workspace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"variant-workspace.js","sourceRoot":"","sources":["../../../src/cloud-workspace/runtime/variant-workspace.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/** Trusted control-plane registration; never merge this with a browser operation payload. */
|
|
3
|
+
export declare const workspaceRegistrationSchema: z.ZodObject<{
|
|
4
|
+
workspaceId: z.ZodString;
|
|
5
|
+
projectId: z.ZodString;
|
|
6
|
+
targetKind: z.ZodEnum<{
|
|
7
|
+
main: "main";
|
|
8
|
+
remix: "remix";
|
|
9
|
+
}>;
|
|
10
|
+
remixId: z.ZodNullable<z.ZodString>;
|
|
11
|
+
repositoryUrl: z.ZodString;
|
|
12
|
+
branchName: z.ZodString;
|
|
13
|
+
}, z.core.$strict>;
|
|
14
|
+
export type WorkspaceRegistration = z.infer<typeof workspaceRegistrationSchema>;
|
|
15
|
+
/** Ephemeral clone access, never part of a persisted Workspace binding or operation. */
|
|
16
|
+
export declare const workspaceGitAccessSchema: z.ZodObject<{
|
|
17
|
+
username: z.ZodString;
|
|
18
|
+
password: z.ZodString;
|
|
19
|
+
issuedAt: z.ZodString;
|
|
20
|
+
expiresAt: z.ZodString;
|
|
21
|
+
}, z.core.$strict>;
|
|
22
|
+
export type WorkspaceGitAccess = z.infer<typeof workspaceGitAccessSchema>;
|
|
23
|
+
/** Controlled read entry. The canonical repository URL stays on the remote. */
|
|
24
|
+
export declare const workspaceGitTransportSchema: z.ZodObject<{
|
|
25
|
+
kind: z.ZodLiteral<"git-read-gateway-v1">;
|
|
26
|
+
cloneUrl: z.ZodString;
|
|
27
|
+
}, z.core.$strict>;
|
|
28
|
+
export type WorkspaceGitTransport = z.infer<typeof workspaceGitTransportSchema>;
|
|
29
|
+
export declare const workspacePreparationSchema: z.ZodObject<{
|
|
30
|
+
mode: z.ZodLiteral<"clone">;
|
|
31
|
+
gitAccess: z.ZodOptional<z.ZodObject<{
|
|
32
|
+
username: z.ZodString;
|
|
33
|
+
password: z.ZodString;
|
|
34
|
+
issuedAt: z.ZodString;
|
|
35
|
+
expiresAt: z.ZodString;
|
|
36
|
+
}, z.core.$strict>>;
|
|
37
|
+
transport: z.ZodOptional<z.ZodObject<{
|
|
38
|
+
kind: z.ZodLiteral<"git-read-gateway-v1">;
|
|
39
|
+
cloneUrl: z.ZodString;
|
|
40
|
+
}, z.core.$strict>>;
|
|
41
|
+
}, z.core.$strict>;
|
|
42
|
+
export type WorkspacePreparation = z.infer<typeof workspacePreparationSchema>;
|
|
43
|
+
export declare function parseWorkspaceGitGatewayOrigin(value: string): string;
|
|
44
|
+
export declare function parseWorkspaceGitGatewayOrigins(value: string | undefined): string[];
|
|
45
|
+
export type WorkspaceGitGatewayMatch = {
|
|
46
|
+
ok: true;
|
|
47
|
+
origin: string;
|
|
48
|
+
requestId: string;
|
|
49
|
+
} | {
|
|
50
|
+
ok: false;
|
|
51
|
+
reason: 'capability_missing' | 'rejected';
|
|
52
|
+
};
|
|
53
|
+
/** Proxy mode is rejected when no allowlisted origin is configured. */
|
|
54
|
+
export declare function matchWorkspaceGitGatewayCloneUrl(cloneUrl: string, allowedOrigins: readonly string[], repositoryUrl: string): WorkspaceGitGatewayMatch;
|
|
55
|
+
export declare const workspaceRegistrationRequestSchema: z.ZodObject<{
|
|
56
|
+
binding: z.ZodObject<{
|
|
57
|
+
workspaceId: z.ZodString;
|
|
58
|
+
projectId: z.ZodString;
|
|
59
|
+
targetKind: z.ZodEnum<{
|
|
60
|
+
main: "main";
|
|
61
|
+
remix: "remix";
|
|
62
|
+
}>;
|
|
63
|
+
remixId: z.ZodNullable<z.ZodString>;
|
|
64
|
+
repositoryUrl: z.ZodString;
|
|
65
|
+
branchName: z.ZodString;
|
|
66
|
+
}, z.core.$strict>;
|
|
67
|
+
generation: z.ZodNumber;
|
|
68
|
+
runtimeEpoch: z.ZodNumber;
|
|
69
|
+
leaseFence: z.ZodNumber;
|
|
70
|
+
preparation: z.ZodOptional<z.ZodObject<{
|
|
71
|
+
mode: z.ZodLiteral<"clone">;
|
|
72
|
+
gitAccess: z.ZodOptional<z.ZodObject<{
|
|
73
|
+
username: z.ZodString;
|
|
74
|
+
password: z.ZodString;
|
|
75
|
+
issuedAt: z.ZodString;
|
|
76
|
+
expiresAt: z.ZodString;
|
|
77
|
+
}, z.core.$strict>>;
|
|
78
|
+
transport: z.ZodOptional<z.ZodObject<{
|
|
79
|
+
kind: z.ZodLiteral<"git-read-gateway-v1">;
|
|
80
|
+
cloneUrl: z.ZodString;
|
|
81
|
+
}, z.core.$strict>>;
|
|
82
|
+
}, z.core.$strict>>;
|
|
83
|
+
}, z.core.$strict>;
|
|
84
|
+
//# sourceMappingURL=workspace-binding.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-binding.d.ts","sourceRoot":"","sources":["../../../src/cloud-workspace/runtime/workspace-binding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,6FAA6F;AAC7F,eAAO,MAAM,2BAA2B;;;;;;;;;;kBAUwC,CAAC;AAEjF,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAEhF,wFAAwF;AACxF,eAAO,MAAM,wBAAwB;;;;;kBAmBjC,CAAC;AACL,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E,+EAA+E;AAC/E,eAAO,MAAM,2BAA2B;;;kBAK7B,CAAC;AACZ,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAEhF,eAAO,MAAM,0BAA0B;;;;;;;;;;;;kBAO6C,CAAC;AACrF,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAI9E,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAcpE;AAED,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,EAAE,CAWnF;AAED,MAAM,MAAM,wBAAwB,GAChC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAC/C;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,oBAAoB,GAAG,UAAU,CAAA;CAAE,CAAC;AAE7D,uEAAuE;AACvE,wBAAgB,gCAAgC,CAC9C,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,SAAS,MAAM,EAAE,EACjC,aAAa,EAAE,MAAM,GACpB,wBAAwB,CAkC1B;AAED,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAQpC,CAAC"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/** Trusted control-plane registration; never merge this with a browser operation payload. */
|
|
3
|
+
export const workspaceRegistrationSchema = z
|
|
4
|
+
.object({
|
|
5
|
+
workspaceId: z.string().uuid(),
|
|
6
|
+
projectId: z.string().uuid(),
|
|
7
|
+
targetKind: z.enum(['main', 'remix']),
|
|
8
|
+
remixId: z.string().uuid().nullable(),
|
|
9
|
+
repositoryUrl: z.string().min(1).max(2048),
|
|
10
|
+
branchName: z.string().min(1).max(512),
|
|
11
|
+
})
|
|
12
|
+
.strict()
|
|
13
|
+
.refine((value) => (value.targetKind === 'main') === (value.remixId === null));
|
|
14
|
+
/** Ephemeral clone access, never part of a persisted Workspace binding or operation. */
|
|
15
|
+
export const workspaceGitAccessSchema = z
|
|
16
|
+
.object({
|
|
17
|
+
username: z
|
|
18
|
+
.string()
|
|
19
|
+
.min(1)
|
|
20
|
+
.max(256)
|
|
21
|
+
.regex(/^[^:\r\n\0]+$/),
|
|
22
|
+
password: z
|
|
23
|
+
.string()
|
|
24
|
+
.min(1)
|
|
25
|
+
.max(8192)
|
|
26
|
+
.regex(/^[^\r\n\0]+$/),
|
|
27
|
+
issuedAt: z.string().datetime(),
|
|
28
|
+
expiresAt: z.string().datetime(),
|
|
29
|
+
})
|
|
30
|
+
.strict()
|
|
31
|
+
.refine((value) => {
|
|
32
|
+
const lifetime = Date.parse(value.expiresAt) - Date.parse(value.issuedAt);
|
|
33
|
+
return lifetime > 0 && lifetime <= 15 * 60_000;
|
|
34
|
+
});
|
|
35
|
+
/** Controlled read entry. The canonical repository URL stays on the remote. */
|
|
36
|
+
export const workspaceGitTransportSchema = z
|
|
37
|
+
.object({
|
|
38
|
+
kind: z.literal('git-read-gateway-v1'),
|
|
39
|
+
cloneUrl: z.string().min(1).max(2048),
|
|
40
|
+
})
|
|
41
|
+
.strict();
|
|
42
|
+
export const workspacePreparationSchema = z
|
|
43
|
+
.object({
|
|
44
|
+
mode: z.literal('clone'),
|
|
45
|
+
gitAccess: workspaceGitAccessSchema.optional(),
|
|
46
|
+
transport: workspaceGitTransportSchema.optional(),
|
|
47
|
+
})
|
|
48
|
+
.strict()
|
|
49
|
+
.refine((value) => value.transport === undefined || value.gitAccess !== undefined);
|
|
50
|
+
const LOOPBACK_HOSTS = new Set(['localhost', '127.0.0.1', '[::1]']);
|
|
51
|
+
export function parseWorkspaceGitGatewayOrigin(value) {
|
|
52
|
+
const url = new URL(value);
|
|
53
|
+
if (url.username ||
|
|
54
|
+
url.password ||
|
|
55
|
+
url.search ||
|
|
56
|
+
url.hash ||
|
|
57
|
+
(url.pathname !== '/' && url.pathname !== '') ||
|
|
58
|
+
(url.protocol !== 'https:' &&
|
|
59
|
+
!(url.protocol === 'http:' && LOOPBACK_HOSTS.has(url.hostname)))) {
|
|
60
|
+
throw new Error('invalid_git_gateway_origin');
|
|
61
|
+
}
|
|
62
|
+
return url.origin;
|
|
63
|
+
}
|
|
64
|
+
export function parseWorkspaceGitGatewayOrigins(value) {
|
|
65
|
+
if (!value?.trim())
|
|
66
|
+
return [];
|
|
67
|
+
return [
|
|
68
|
+
...new Set(value
|
|
69
|
+
.split(',')
|
|
70
|
+
.map((item) => item.trim())
|
|
71
|
+
.filter(Boolean)
|
|
72
|
+
.map((item) => parseWorkspaceGitGatewayOrigin(item))),
|
|
73
|
+
];
|
|
74
|
+
}
|
|
75
|
+
/** Proxy mode is rejected when no allowlisted origin is configured. */
|
|
76
|
+
export function matchWorkspaceGitGatewayCloneUrl(cloneUrl, allowedOrigins, repositoryUrl) {
|
|
77
|
+
if (allowedOrigins.length === 0)
|
|
78
|
+
return { ok: false, reason: 'capability_missing' };
|
|
79
|
+
let gateway;
|
|
80
|
+
let repository;
|
|
81
|
+
try {
|
|
82
|
+
gateway = new URL(cloneUrl);
|
|
83
|
+
repository = new URL(repositoryUrl);
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
return { ok: false, reason: 'rejected' };
|
|
87
|
+
}
|
|
88
|
+
const allowed = new Set();
|
|
89
|
+
for (const origin of allowedOrigins) {
|
|
90
|
+
try {
|
|
91
|
+
allowed.add(parseWorkspaceGitGatewayOrigin(origin));
|
|
92
|
+
}
|
|
93
|
+
catch {
|
|
94
|
+
return { ok: false, reason: 'rejected' };
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
const request = /^\/workspace-git\/([a-f0-9]{64})$/.exec(gateway.pathname);
|
|
98
|
+
if (!request ||
|
|
99
|
+
gateway.username ||
|
|
100
|
+
gateway.password ||
|
|
101
|
+
gateway.search ||
|
|
102
|
+
gateway.hash ||
|
|
103
|
+
gateway.href !== `${gateway.origin}${gateway.pathname}` ||
|
|
104
|
+
gateway.origin === repository.origin ||
|
|
105
|
+
!allowed.has(gateway.origin) ||
|
|
106
|
+
(gateway.protocol !== 'https:' &&
|
|
107
|
+
!(gateway.protocol === 'http:' && LOOPBACK_HOSTS.has(gateway.hostname)))) {
|
|
108
|
+
return { ok: false, reason: 'rejected' };
|
|
109
|
+
}
|
|
110
|
+
return { ok: true, origin: gateway.origin, requestId: request[1] };
|
|
111
|
+
}
|
|
112
|
+
export const workspaceRegistrationRequestSchema = z
|
|
113
|
+
.object({
|
|
114
|
+
binding: workspaceRegistrationSchema,
|
|
115
|
+
generation: z.number().int().nonnegative(),
|
|
116
|
+
runtimeEpoch: z.number().int().nonnegative(),
|
|
117
|
+
leaseFence: z.number().int().nonnegative(),
|
|
118
|
+
preparation: workspacePreparationSchema.optional(),
|
|
119
|
+
})
|
|
120
|
+
.strict();
|
|
121
|
+
//# sourceMappingURL=workspace-binding.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-binding.js","sourceRoot":"","sources":["../../../src/cloud-workspace/runtime/workspace-binding.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// 现有 backend 已有自己的数据库初始化逻辑;common 这里提供一个可选 adapter,
|
|
3
3
|
// 方便后续统一数据访问层。
|
|
4
4
|
//
|
|
5
|
-
// Pool 参数对齐 `packages/backend/src/core/database/index.ts`:
|
|
5
|
+
// Pool 参数对齐 `packages/backend-business-server/src/core/database/index.ts`:
|
|
6
6
|
// - keepAlive:阻止云 LB (Load Balancer, 负载均衡) 静默 RST 空闲连接
|
|
7
7
|
// - idleTimeoutMillis:Pool 自身主动回收空闲连接,远短于云 LB idle timeout
|
|
8
8
|
// - statement_timeout / query_timeout:查询兜底,防止请求挂死
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgres-adapter.js","sourceRoot":"","sources":["../../src/database/postgres-adapter.ts"],"names":[],"mappings":"AAAA,qBAAqB;AACrB,oDAAoD;AACpD,eAAe;AACf,EAAE;AACF,
|
|
1
|
+
{"version":3,"file":"postgres-adapter.js","sourceRoot":"","sources":["../../src/database/postgres-adapter.ts"],"names":[],"mappings":"AAAA,qBAAqB;AACrB,oDAAoD;AACpD,eAAe;AACf,EAAE;AACF,2EAA2E;AAC3E,uDAAuD;AACvD,2DAA2D;AAC3D,kDAAkD;AAElD,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAO1B,MAAM,UAAU,qBAAqB,CAAC,gBAAwB;IAC5D,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC;QACpB,gBAAgB;QAChB,GAAG,EAAE,EAAE;QACP,iBAAiB,EAAE,MAAM;QACzB,uBAAuB,EAAE,MAAM;QAC/B,SAAS,EAAE,IAAI;QACf,2BAA2B,EAAE,MAAM;QACnC,iBAAiB,EAAE,MAAM;QACzB,aAAa,EAAE,MAAM;KACtB,CAAC,CAAC;IACH,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AACtB,CAAC"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* SQLite Schema for CLI Offline Mode
|
|
3
3
|
*
|
|
4
4
|
* ⚠️ 重要提示:
|
|
5
|
-
* 此 schema 是 packages/backend/src/core/database/schema.ts(PostgreSQL)的简化版本。
|
|
5
|
+
* 此 schema 是 packages/backend-business-server/src/core/database/schema.ts(PostgreSQL)的简化版本。
|
|
6
6
|
* 主要字段需要与 backend schema 保持同步,以确保项目导入/导出的兼容性。
|
|
7
7
|
*
|
|
8
8
|
* 主要差异:
|
package/dist/database/schema.js
CHANGED
|
@@ -3,7 +3,7 @@ import { sqliteTable, text, integer } from 'drizzle-orm/sqlite-core';
|
|
|
3
3
|
* SQLite Schema for CLI Offline Mode
|
|
4
4
|
*
|
|
5
5
|
* ⚠️ 重要提示:
|
|
6
|
-
* 此 schema 是 packages/backend/src/core/database/schema.ts(PostgreSQL)的简化版本。
|
|
6
|
+
* 此 schema 是 packages/backend-business-server/src/core/database/schema.ts(PostgreSQL)的简化版本。
|
|
7
7
|
* 主要字段需要与 backend schema 保持同步,以确保项目导入/导出的兼容性。
|
|
8
8
|
*
|
|
9
9
|
* 主要差异:
|
|
@@ -25,13 +25,26 @@ export declare const MessengerMessageType: {
|
|
|
25
25
|
readonly WHOISONLINE: "whoisonline";
|
|
26
26
|
readonly FS: "fs";
|
|
27
27
|
};
|
|
28
|
+
/** 已通过 project.watch 校验的会话上下文,供 onMessage 判断消息的合法作用域 */
|
|
29
|
+
export type MessengerSessionContext = {
|
|
30
|
+
userId: unknown;
|
|
31
|
+
role: unknown;
|
|
32
|
+
/** 已通过 onCheckProjectAccess 校验的 projectId;未 watch 过任何项目时为 undefined */
|
|
33
|
+
projectId: unknown;
|
|
34
|
+
};
|
|
28
35
|
export type MessengerServerOptions = {
|
|
29
36
|
path?: string;
|
|
30
37
|
onAuth?: (token: string | undefined) => Promise<any>;
|
|
38
|
+
/**
|
|
39
|
+
* 处理业务消息。
|
|
40
|
+
*
|
|
41
|
+
* `session` 是服务端持有的、已校验过的上下文——涉及项目作用域的转发请务必以它为准,
|
|
42
|
+
* 不要信任 `message.data` 里客户端自报的 projectId。
|
|
43
|
+
*/
|
|
31
44
|
onMessage?: (client: WebSocket, message: {
|
|
32
45
|
name: string;
|
|
33
46
|
data: any;
|
|
34
|
-
}) => void | Promise<void>;
|
|
47
|
+
}, session: MessengerSessionContext) => void | Promise<void>;
|
|
35
48
|
/** 验证用户是否有项目访问权限,返回 false 时拒绝订阅 */
|
|
36
49
|
onCheckProjectAccess?: (userId: unknown, projectId: string) => Promise<boolean>;
|
|
37
50
|
/** 从后端获取项目真实权限,未设置时使用默认权限 */
|