@codexdock/sdk 0.1.0 → 0.1.1
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 +34 -3
- package/dist/index.d.ts +47 -27
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +314 -71
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -19,27 +19,58 @@ import {
|
|
|
19
19
|
} from "@codexdock/sdk";
|
|
20
20
|
|
|
21
21
|
export const codexdock = createCodexDock({
|
|
22
|
+
appName: "Your App",
|
|
22
23
|
persistence: createMemoryPersistence(),
|
|
24
|
+
defaultOwner: { ownerKind: "system", ownerId: "local-dev" },
|
|
25
|
+
workerOwner: { ownerKind: "system", ownerId: "local-dev" },
|
|
23
26
|
workerToken: process.env.CODEXDOCK_WORKER_TOKEN,
|
|
24
27
|
});
|
|
25
28
|
|
|
26
29
|
const invocation = await codexdock.invoke({
|
|
27
|
-
type: "
|
|
30
|
+
type: "generate_object",
|
|
28
31
|
prompt: "Create product card data.",
|
|
29
|
-
|
|
32
|
+
parameters: { count: 4, usage: "admin-preview" },
|
|
30
33
|
});
|
|
31
34
|
|
|
32
35
|
console.log(invocation.invocationId);
|
|
33
36
|
```
|
|
34
37
|
|
|
38
|
+
`parameters` is stored with the invocation and echoed into completed results. `payload` is still accepted as a compatibility alias.
|
|
39
|
+
|
|
40
|
+
For product routes, use `resolveOwner(request)` so CodexDock uses the owner from your app's session or auth context:
|
|
41
|
+
|
|
42
|
+
```ts
|
|
43
|
+
export const codexdock = createCodexDock({
|
|
44
|
+
appName: "Your App",
|
|
45
|
+
persistence,
|
|
46
|
+
workerToken: process.env.CODEXDOCK_WORKER_TOKEN,
|
|
47
|
+
workerOwner: { ownerKind: "user", ownerId: "user_123" },
|
|
48
|
+
resolveOwner: async (request) => ({
|
|
49
|
+
ownerKind: "user",
|
|
50
|
+
ownerId: await requireUserId(request),
|
|
51
|
+
}),
|
|
52
|
+
});
|
|
53
|
+
```
|
|
54
|
+
|
|
35
55
|
## Next.js Route Handlers
|
|
36
56
|
|
|
37
57
|
```ts
|
|
58
|
+
export const GET = codexdock.handlers.discovery;
|
|
38
59
|
export const POST = codexdock.handlers.invoke;
|
|
39
60
|
```
|
|
40
61
|
|
|
41
62
|
Worker endpoints are also exposed through `codexdock.handlers.workerConnect`, `workerNext`, `workerResult`, and `workerStatus`.
|
|
42
63
|
|
|
64
|
+
Routes can be mounted at the host app's preferred paths. Publish `codexdock.handlers.discovery` so the CLI can read the endpoint map instead of assuming a fixed route layout.
|
|
65
|
+
|
|
66
|
+
## Security
|
|
67
|
+
|
|
68
|
+
`workerToken` is required by default. Worker routes reject requests that do not include `Authorization: Bearer <token>`.
|
|
69
|
+
|
|
70
|
+
Protect your app-facing invoke route with your own product auth, quota checks, and rate limits. CodexDock authenticates local workers, but the host app decides which users are allowed to create jobs.
|
|
71
|
+
|
|
72
|
+
The current SDK supports owner-scoped memory persistence and a single configured `workerOwner` per SDK instance. Production apps should back this with token lookup that returns the token's owner scope.
|
|
73
|
+
|
|
43
74
|
## Status
|
|
44
75
|
|
|
45
|
-
The in-memory persistence adapter is intended for examples and local smoke tests. Production apps should provide their own database-backed persistence adapter.
|
|
76
|
+
The in-memory persistence adapter is intended for examples and local smoke tests. Production apps should provide their own database-backed persistence adapter. Pairing approval, token hashing, revocation, and large artifact upload helpers are planned next.
|
package/dist/index.d.ts
CHANGED
|
@@ -1,37 +1,51 @@
|
|
|
1
|
-
import type { CodexDockError, InvocationRecord, NormalizedInvokeRequest, NormalizedWorkerConnectRequest, WorkerNextResponse, WorkerRecord } from "@codexdock/protocol";
|
|
1
|
+
import type { CodexDockError, CodexDockOwner, DiscoveryManifest, InvocationRecord, NormalizedInvokeRequest, NormalizedWorkerConnectRequest, WorkerNextResponse, WorkerRecord } from "@codexdock/protocol";
|
|
2
2
|
export interface CodexDockPersistence {
|
|
3
3
|
createInvocation(input: CreateInvocationInput): Promise<InvocationRecord>;
|
|
4
|
-
getInvocation(invocationId: string): Promise<InvocationRecord | null>;
|
|
5
|
-
listInvocations?(): Promise<InvocationRecord[]>;
|
|
6
|
-
claimNextInvocation(
|
|
4
|
+
getInvocation(invocationId: string, owner: CodexDockOwner): Promise<InvocationRecord | null>;
|
|
5
|
+
listInvocations?(owner: CodexDockOwner): Promise<InvocationRecord[]>;
|
|
6
|
+
claimNextInvocation(input: ClaimNextInvocationInput): Promise<InvocationRecord | null>;
|
|
7
7
|
completeInvocation(input: CompleteInvocationInput): Promise<InvocationRecord>;
|
|
8
8
|
failInvocation(input: FailInvocationInput): Promise<InvocationRecord>;
|
|
9
9
|
upsertWorker(input: UpsertWorkerInput): Promise<WorkerRecord>;
|
|
10
|
-
getWorker(workerId: string): Promise<WorkerRecord | null>;
|
|
11
|
-
listWorkers?(): Promise<WorkerRecord[]>;
|
|
10
|
+
getWorker(workerId: string, owner: CodexDockOwner): Promise<WorkerRecord | null>;
|
|
11
|
+
listWorkers?(owner: CodexDockOwner): Promise<WorkerRecord[]>;
|
|
12
12
|
}
|
|
13
|
-
export
|
|
13
|
+
export type CreateInvocationInput = Omit<NormalizedInvokeRequest, "ownerKind" | "ownerId"> & CodexDockOwner & {
|
|
14
14
|
invocationId?: string;
|
|
15
15
|
expiresAt?: string;
|
|
16
|
+
};
|
|
17
|
+
export interface ClaimNextInvocationInput extends CodexDockOwner {
|
|
18
|
+
workerId: string;
|
|
19
|
+
capabilities: string[];
|
|
16
20
|
}
|
|
17
|
-
export interface CompleteInvocationInput {
|
|
21
|
+
export interface CompleteInvocationInput extends CodexDockOwner {
|
|
18
22
|
workerId: string;
|
|
19
23
|
invocationId: string;
|
|
20
24
|
result: unknown;
|
|
21
25
|
}
|
|
22
|
-
export interface FailInvocationInput {
|
|
26
|
+
export interface FailInvocationInput extends CodexDockOwner {
|
|
23
27
|
workerId: string;
|
|
24
28
|
invocationId: string;
|
|
25
29
|
error: CodexDockError;
|
|
26
30
|
}
|
|
27
|
-
export
|
|
31
|
+
export type UpsertWorkerInput = Omit<NormalizedWorkerConnectRequest, "ownerKind" | "ownerId"> & CodexDockOwner & {
|
|
28
32
|
status?: WorkerRecord["status"];
|
|
33
|
+
};
|
|
34
|
+
export interface WorkerAuthContext extends CodexDockOwner {
|
|
35
|
+
workerToken?: string;
|
|
29
36
|
}
|
|
30
37
|
export interface CodexDockOptions {
|
|
31
38
|
persistence: CodexDockPersistence;
|
|
32
39
|
workerToken?: string;
|
|
40
|
+
allowInsecureWorkerAuth?: boolean;
|
|
33
41
|
now?: () => Date;
|
|
34
42
|
invocationTtlMs?: number;
|
|
43
|
+
appName?: string;
|
|
44
|
+
publicBaseUrl?: string;
|
|
45
|
+
endpointBasePath?: string;
|
|
46
|
+
defaultOwner?: CodexDockOwner;
|
|
47
|
+
workerOwner?: CodexDockOwner;
|
|
48
|
+
resolveOwner?: (request: Request) => CodexDockOwner | Promise<CodexDockOwner>;
|
|
35
49
|
}
|
|
36
50
|
export interface InvokeAccepted {
|
|
37
51
|
invocationId: string;
|
|
@@ -48,6 +62,7 @@ export interface WorkerConnectResult {
|
|
|
48
62
|
}
|
|
49
63
|
export interface WorkerStatusResult {
|
|
50
64
|
ok: true;
|
|
65
|
+
owner: CodexDockOwner;
|
|
51
66
|
workers: WorkerRecord[];
|
|
52
67
|
counts: Record<InvocationRecord["status"], number>;
|
|
53
68
|
}
|
|
@@ -57,15 +72,17 @@ export declare class CodexDockHttpError extends Error {
|
|
|
57
72
|
constructor(status: number, error: CodexDockError);
|
|
58
73
|
}
|
|
59
74
|
export declare function createCodexDock(options: CodexDockOptions): {
|
|
60
|
-
invoke: (input: unknown) => Promise<InvokeAccepted>;
|
|
61
|
-
getInvocation: (invocationId: string) => Promise<InvocationRecord | null>;
|
|
62
|
-
getWorkerStatus: () => Promise<WorkerStatusResult>;
|
|
63
|
-
workerConnect: (input: unknown) => Promise<WorkerConnectResult>;
|
|
64
|
-
workerNext: (workerId: string) => Promise<WorkerNextResponse | null>;
|
|
65
|
-
workerResult: (input: unknown) => Promise<InvocationRecord>;
|
|
75
|
+
invoke: (input: unknown, ownerOverride?: CodexDockOwner) => Promise<InvokeAccepted>;
|
|
76
|
+
getInvocation: (invocationId: string, ownerOverride?: CodexDockOwner) => Promise<InvocationRecord | null>;
|
|
77
|
+
getWorkerStatus: (ownerOverride?: CodexDockOwner) => Promise<WorkerStatusResult>;
|
|
78
|
+
workerConnect: (input: unknown, ownerOverride?: CodexDockOwner) => Promise<WorkerConnectResult>;
|
|
79
|
+
workerNext: (workerId: string, ownerOverride?: CodexDockOwner) => Promise<WorkerNextResponse | null>;
|
|
80
|
+
workerResult: (input: unknown, ownerOverride?: CodexDockOwner) => Promise<InvocationRecord>;
|
|
81
|
+
discovery: (request?: Request) => DiscoveryManifest;
|
|
66
82
|
handlers: {
|
|
83
|
+
discovery: (request: Request) => Promise<Response>;
|
|
67
84
|
invoke: (request: Request) => Promise<Response>;
|
|
68
|
-
getInvocation: (
|
|
85
|
+
getInvocation: (request: Request, context: {
|
|
69
86
|
params: Promise<{
|
|
70
87
|
invocationId: string;
|
|
71
88
|
}>;
|
|
@@ -74,24 +91,27 @@ export declare function createCodexDock(options: CodexDockOptions): {
|
|
|
74
91
|
invocationId: string;
|
|
75
92
|
};
|
|
76
93
|
}) => Promise<Response>;
|
|
77
|
-
workerStatus: () => Promise<Response>;
|
|
94
|
+
workerStatus: (request: Request) => Promise<Response>;
|
|
78
95
|
workerConnect: (request: Request) => Promise<Response>;
|
|
79
96
|
workerNext: (request: Request) => Promise<Response>;
|
|
80
97
|
workerResult: (request: Request) => Promise<Response>;
|
|
81
98
|
};
|
|
82
99
|
};
|
|
83
100
|
export interface RouteHandlerDeps {
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
101
|
+
authenticateWorker(request: Request): WorkerAuthContext;
|
|
102
|
+
resolveRequestOwner(request: Request): Promise<CodexDockOwner>;
|
|
103
|
+
discovery(request?: Request): DiscoveryManifest;
|
|
104
|
+
invoke(input: unknown, owner: CodexDockOwner): Promise<InvokeAccepted>;
|
|
105
|
+
getInvocation(invocationId: string, owner: CodexDockOwner): Promise<InvocationRecord | null>;
|
|
106
|
+
workerConnect(input: unknown, owner: CodexDockOwner): Promise<WorkerConnectResult>;
|
|
107
|
+
workerNext(workerId: string, owner: CodexDockOwner): Promise<WorkerNextResponse | null>;
|
|
108
|
+
workerResult(input: unknown, owner: CodexDockOwner): Promise<InvocationRecord>;
|
|
109
|
+
getWorkerStatus(owner: CodexDockOwner): Promise<WorkerStatusResult>;
|
|
91
110
|
}
|
|
92
111
|
export declare function createRouteHandlers(deps: RouteHandlerDeps): {
|
|
112
|
+
discovery: (request: Request) => Promise<Response>;
|
|
93
113
|
invoke: (request: Request) => Promise<Response>;
|
|
94
|
-
getInvocation: (
|
|
114
|
+
getInvocation: (request: Request, context: {
|
|
95
115
|
params: Promise<{
|
|
96
116
|
invocationId: string;
|
|
97
117
|
}>;
|
|
@@ -100,7 +120,7 @@ export declare function createRouteHandlers(deps: RouteHandlerDeps): {
|
|
|
100
120
|
invocationId: string;
|
|
101
121
|
};
|
|
102
122
|
}) => Promise<Response>;
|
|
103
|
-
workerStatus: () => Promise<Response>;
|
|
123
|
+
workerStatus: (request: Request) => Promise<Response>;
|
|
104
124
|
workerConnect: (request: Request) => Promise<Response>;
|
|
105
125
|
workerNext: (request: Request) => Promise<Response>;
|
|
106
126
|
workerResult: (request: Request) => Promise<Response>;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,cAAc,EACd,gBAAgB,EAEhB,uBAAuB,EACvB,8BAA8B,EAC9B,kBAAkB,EAClB,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createHash, randomUUID, timingSafeEqual } from "node:crypto";
|
|
2
|
-
import { codexDockErrorSchema, invocationRecordSchema, invokeRequestSchema, makeCodexDockError, workerConnectRequestSchema, workerNextResponseSchema, workerResultRequestSchema, } from "@codexdock/protocol";
|
|
2
|
+
import { CODEXDOCK_PROTOCOL_VERSION, codexDockErrorSchema, discoveryManifestSchema, generatedFileResultSchema, generatedImageResultSchema, generatedObjectResultSchema, generatedTextResultSchema, invocationRecordSchema, invokeRequestSchema, invokeTypes, makeCodexDockError, ownerSchema, workerConnectRequestSchema, workerRecordSchema, workerNextResponseSchema, workerResultRequestSchema, } from "@codexdock/protocol";
|
|
3
3
|
export class CodexDockHttpError extends Error {
|
|
4
4
|
status;
|
|
5
5
|
error;
|
|
@@ -12,45 +12,70 @@ export class CodexDockHttpError extends Error {
|
|
|
12
12
|
export function createCodexDock(options) {
|
|
13
13
|
const now = options.now ?? (() => new Date());
|
|
14
14
|
const invocationTtlMs = options.invocationTtlMs ?? 10 * 60 * 1000;
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
const defaultOwner = parseConfiguredOwner(options.defaultOwner ?? { ownerKind: "system", ownerId: "local-dev" }, "defaultOwner");
|
|
16
|
+
const workerOwner = parseConfiguredOwner(options.workerOwner ?? defaultOwner, "workerOwner");
|
|
17
|
+
const appName = options.appName ?? "CodexDock Host";
|
|
18
|
+
const endpointBasePath = normalizeEndpointBasePath(options.endpointBasePath ?? "/api/codexdock");
|
|
19
|
+
if (!options.workerToken && !options.allowInsecureWorkerAuth) {
|
|
20
|
+
throw new Error("CodexDock workerToken is required. Pass a high-entropy worker token, or set allowInsecureWorkerAuth only for local smoke tests.");
|
|
21
|
+
}
|
|
22
|
+
function authenticateWorker(request) {
|
|
23
|
+
if (!options.workerToken && options.allowInsecureWorkerAuth)
|
|
24
|
+
return workerOwner;
|
|
18
25
|
const auth = request.headers.get("authorization") ?? "";
|
|
19
26
|
const expected = `Bearer ${options.workerToken}`;
|
|
20
27
|
if (!safeEqual(auth, expected)) {
|
|
21
28
|
throw new CodexDockHttpError(401, makeCodexDockError("WORKER_AUTH_INVALID", "Invalid worker token."));
|
|
22
29
|
}
|
|
30
|
+
return { ...workerOwner, workerToken: options.workerToken };
|
|
23
31
|
}
|
|
24
|
-
async function
|
|
32
|
+
async function resolveRequestOwner(request) {
|
|
33
|
+
if (!options.resolveOwner)
|
|
34
|
+
return defaultOwner;
|
|
35
|
+
const parsed = ownerSchema.safeParse(await options.resolveOwner(request));
|
|
36
|
+
if (!parsed.success) {
|
|
37
|
+
throw new CodexDockHttpError(401, makeCodexDockError("WORKER_AUTH_INVALID", "Unable to resolve CodexDock owner."));
|
|
38
|
+
}
|
|
39
|
+
return parsed.data;
|
|
40
|
+
}
|
|
41
|
+
async function invoke(input, ownerOverride) {
|
|
25
42
|
const parsed = invokeRequestSchema.safeParse(input);
|
|
26
43
|
if (!parsed.success) {
|
|
27
44
|
throw new CodexDockHttpError(400, makeCodexDockError("INVALID_PAYLOAD", "Invalid invoke payload.", {
|
|
28
45
|
details: { issues: parsed.error.issues },
|
|
29
46
|
}));
|
|
30
47
|
}
|
|
48
|
+
const owner = resolveInvocationOwner(parsed.data, ownerOverride);
|
|
31
49
|
const expiresAt = new Date(now().getTime() + invocationTtlMs).toISOString();
|
|
32
50
|
const record = await options.persistence.createInvocation({
|
|
33
51
|
...parsed.data,
|
|
52
|
+
...owner,
|
|
34
53
|
expiresAt,
|
|
35
54
|
});
|
|
36
55
|
return {
|
|
37
56
|
invocationId: record.invocationId,
|
|
38
57
|
status: "pending",
|
|
39
|
-
statusUrl:
|
|
58
|
+
statusUrl: `${endpointBasePath}/invocations/${record.invocationId}`,
|
|
40
59
|
};
|
|
41
60
|
}
|
|
42
|
-
async function getInvocation(invocationId) {
|
|
43
|
-
return options.persistence.getInvocation(invocationId);
|
|
61
|
+
async function getInvocation(invocationId, ownerOverride) {
|
|
62
|
+
return options.persistence.getInvocation(invocationId, ownerOverride ?? defaultOwner);
|
|
44
63
|
}
|
|
45
|
-
async function workerConnect(input) {
|
|
64
|
+
async function workerConnect(input, ownerOverride) {
|
|
46
65
|
const parsed = workerConnectRequestSchema.safeParse(input);
|
|
47
66
|
if (!parsed.success) {
|
|
48
67
|
throw new CodexDockHttpError(400, makeCodexDockError("INVALID_PAYLOAD", "Invalid worker connect payload."));
|
|
49
68
|
}
|
|
69
|
+
const owner = resolveWorkerOwner(parsed.data, ownerOverride);
|
|
70
|
+
const existingWorker = await options.persistence.getWorker(parsed.data.workerId, owner);
|
|
71
|
+
if (existingWorker)
|
|
72
|
+
assertWorkerIsActive(existingWorker);
|
|
50
73
|
const worker = await options.persistence.upsertWorker({
|
|
51
74
|
...parsed.data,
|
|
75
|
+
...owner,
|
|
52
76
|
status: "online",
|
|
53
77
|
});
|
|
78
|
+
assertWorkerIsActive(worker);
|
|
54
79
|
return {
|
|
55
80
|
ok: true,
|
|
56
81
|
worker,
|
|
@@ -60,46 +85,66 @@ export function createCodexDock(options) {
|
|
|
60
85
|
},
|
|
61
86
|
};
|
|
62
87
|
}
|
|
63
|
-
async function workerNext(workerId) {
|
|
64
|
-
const
|
|
65
|
-
|
|
88
|
+
async function workerNext(workerId, ownerOverride) {
|
|
89
|
+
const owner = ownerOverride ?? workerOwner;
|
|
90
|
+
const worker = await options.persistence.getWorker(workerId, owner);
|
|
91
|
+
if (!worker)
|
|
92
|
+
return null;
|
|
93
|
+
if (worker.status === "revoked") {
|
|
66
94
|
throw new CodexDockHttpError(403, makeCodexDockError("WORKER_REVOKED", "Worker has been revoked."));
|
|
67
95
|
}
|
|
68
|
-
const invocation = await options.persistence.claimNextInvocation(
|
|
96
|
+
const invocation = await options.persistence.claimNextInvocation({
|
|
97
|
+
...owner,
|
|
98
|
+
workerId,
|
|
99
|
+
capabilities: worker.capabilities,
|
|
100
|
+
});
|
|
69
101
|
if (!invocation)
|
|
70
102
|
return null;
|
|
71
103
|
return workerNextResponseSchema.parse({
|
|
72
104
|
invocationId: invocation.invocationId,
|
|
105
|
+
ownerKind: invocation.ownerKind,
|
|
106
|
+
ownerId: invocation.ownerId,
|
|
73
107
|
type: invocation.type,
|
|
74
108
|
prompt: invocation.prompt,
|
|
109
|
+
parameters: invocation.payload,
|
|
75
110
|
payload: invocation.payload,
|
|
111
|
+
requiredCapabilities: invocation.requiredCapabilities,
|
|
76
112
|
});
|
|
77
113
|
}
|
|
78
|
-
async function workerResult(input) {
|
|
114
|
+
async function workerResult(input, ownerOverride) {
|
|
79
115
|
const parsed = workerResultRequestSchema.safeParse(input);
|
|
80
116
|
if (!parsed.success) {
|
|
81
117
|
throw new CodexDockHttpError(400, makeCodexDockError("INVALID_PAYLOAD", "Invalid worker result payload."));
|
|
82
118
|
}
|
|
119
|
+
const owner = ownerOverride ?? workerOwner;
|
|
120
|
+
const worker = await getWorkerForResult(parsed.data.workerId, owner);
|
|
121
|
+
assertWorkerIsActive(worker);
|
|
122
|
+
const invocation = await getInvocationForResult(parsed.data.invocationId, owner);
|
|
123
|
+
assertWorkerCanSubmit(invocation, parsed.data.workerId);
|
|
83
124
|
if (parsed.data.ok) {
|
|
125
|
+
const result = validateCompletedResult(invocation, parsed.data.result ?? null);
|
|
84
126
|
return options.persistence.completeInvocation({
|
|
127
|
+
...owner,
|
|
85
128
|
workerId: parsed.data.workerId,
|
|
86
129
|
invocationId: parsed.data.invocationId,
|
|
87
|
-
result
|
|
130
|
+
result,
|
|
88
131
|
});
|
|
89
132
|
}
|
|
90
133
|
return options.persistence.failInvocation({
|
|
134
|
+
...owner,
|
|
91
135
|
workerId: parsed.data.workerId,
|
|
92
136
|
invocationId: parsed.data.invocationId,
|
|
93
137
|
error: parsed.data.error ??
|
|
94
138
|
makeCodexDockError("CODEX_RUN_FAILED", "Worker failed without details."),
|
|
95
139
|
});
|
|
96
140
|
}
|
|
97
|
-
async function getWorkerStatus() {
|
|
141
|
+
async function getWorkerStatus(ownerOverride) {
|
|
142
|
+
const owner = ownerOverride ?? defaultOwner;
|
|
98
143
|
const workers = options.persistence.listWorkers
|
|
99
|
-
? await options.persistence.listWorkers()
|
|
144
|
+
? await options.persistence.listWorkers(owner)
|
|
100
145
|
: [];
|
|
101
146
|
const invocations = options.persistence.listInvocations
|
|
102
|
-
? await options.persistence.listInvocations()
|
|
147
|
+
? await options.persistence.listInvocations(owner)
|
|
103
148
|
: [];
|
|
104
149
|
const counts = {
|
|
105
150
|
pending: 0,
|
|
@@ -112,10 +157,123 @@ export function createCodexDock(options) {
|
|
|
112
157
|
for (const invocation of invocations) {
|
|
113
158
|
counts[invocation.status] += 1;
|
|
114
159
|
}
|
|
115
|
-
return { ok: true, workers, counts };
|
|
160
|
+
return { ok: true, owner, workers, counts };
|
|
161
|
+
}
|
|
162
|
+
function discovery(request) {
|
|
163
|
+
const origin = options.publicBaseUrl ?? (request ? new URL(request.url).origin : "http://localhost");
|
|
164
|
+
const endpoint = (path) => new URL(`${endpointBasePath}${path}`, origin).toString();
|
|
165
|
+
return discoveryManifestSchema.parse({
|
|
166
|
+
protocolVersion: CODEXDOCK_PROTOCOL_VERSION,
|
|
167
|
+
appName,
|
|
168
|
+
endpoints: {
|
|
169
|
+
discovery: endpoint("/discovery"),
|
|
170
|
+
invoke: endpoint("/invoke"),
|
|
171
|
+
getInvocation: endpoint("/invocations"),
|
|
172
|
+
workerStatus: endpoint("/worker/status"),
|
|
173
|
+
workerConnect: endpoint("/worker/connect"),
|
|
174
|
+
workerNext: endpoint("/worker/next"),
|
|
175
|
+
workerResult: endpoint("/worker/result"),
|
|
176
|
+
},
|
|
177
|
+
capabilities: {
|
|
178
|
+
generationTypes: Array.from(invokeTypes),
|
|
179
|
+
artifactUpload: ["inline"],
|
|
180
|
+
},
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
async function getInvocationForResult(invocationId, owner) {
|
|
184
|
+
const invocation = await options.persistence.getInvocation(invocationId, owner);
|
|
185
|
+
if (!invocation) {
|
|
186
|
+
throw new CodexDockHttpError(404, makeCodexDockError("INVALID_PAYLOAD", "Invocation not found."));
|
|
187
|
+
}
|
|
188
|
+
return invocation;
|
|
189
|
+
}
|
|
190
|
+
async function getWorkerForResult(workerId, owner) {
|
|
191
|
+
const worker = await options.persistence.getWorker(workerId, owner);
|
|
192
|
+
if (!worker) {
|
|
193
|
+
throw new CodexDockHttpError(403, makeCodexDockError("WORKER_AUTH_INVALID", "Worker cannot submit a result because it is not connected for this owner."));
|
|
194
|
+
}
|
|
195
|
+
return worker;
|
|
196
|
+
}
|
|
197
|
+
function assertWorkerIsActive(worker) {
|
|
198
|
+
if (worker.status === "revoked") {
|
|
199
|
+
throw new CodexDockHttpError(403, makeCodexDockError("WORKER_REVOKED", "Worker has been revoked."));
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
function resolveInvocationOwner(input, ownerOverride) {
|
|
203
|
+
if (ownerOverride)
|
|
204
|
+
return ownerOverride;
|
|
205
|
+
return ownerFromOptionalFields(input) ?? defaultOwner;
|
|
206
|
+
}
|
|
207
|
+
function resolveWorkerOwner(input, ownerOverride) {
|
|
208
|
+
if (ownerOverride)
|
|
209
|
+
return ownerOverride;
|
|
210
|
+
return ownerFromOptionalFields(input) ?? workerOwner;
|
|
211
|
+
}
|
|
212
|
+
function ownerFromOptionalFields(input) {
|
|
213
|
+
if (!input.ownerKind && !input.ownerId)
|
|
214
|
+
return null;
|
|
215
|
+
if (input.ownerKind && input.ownerId) {
|
|
216
|
+
return parseHttpOwner({ ownerKind: input.ownerKind, ownerId: input.ownerId });
|
|
217
|
+
}
|
|
218
|
+
throw new CodexDockHttpError(400, makeCodexDockError("INVALID_PAYLOAD", "CodexDock ownerKind and ownerId must be provided together."));
|
|
219
|
+
}
|
|
220
|
+
function assertWorkerCanSubmit(invocation, workerId) {
|
|
221
|
+
if (invocation.workerId !== workerId || invocation.status !== "running") {
|
|
222
|
+
throw new CodexDockHttpError(403, makeCodexDockError("WORKER_AUTH_INVALID", "Worker cannot submit a result for an invocation it did not claim."));
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
function validateCompletedResult(invocation, result) {
|
|
226
|
+
if (invocation.type === "generate_text") {
|
|
227
|
+
const parsed = generatedTextResultSchema.safeParse(result);
|
|
228
|
+
if (!parsed.success) {
|
|
229
|
+
throw invalidWorkerResult("generate_text", parsed.error.issues);
|
|
230
|
+
}
|
|
231
|
+
return attachInvocationParameters(parsed.data, invocation.payload);
|
|
232
|
+
}
|
|
233
|
+
if (invocation.type === "generate_object") {
|
|
234
|
+
const parsed = generatedObjectResultSchema.safeParse(result);
|
|
235
|
+
if (!parsed.success) {
|
|
236
|
+
throw invalidWorkerResult("generate_object", parsed.error.issues);
|
|
237
|
+
}
|
|
238
|
+
return attachInvocationParameters(parsed.data, invocation.payload);
|
|
239
|
+
}
|
|
240
|
+
if (invocation.type === "generate_file") {
|
|
241
|
+
const parsed = generatedFileResultSchema.safeParse(result);
|
|
242
|
+
if (!parsed.success) {
|
|
243
|
+
throw invalidWorkerResult("generate_file", parsed.error.issues);
|
|
244
|
+
}
|
|
245
|
+
return attachInvocationParameters(parsed.data, invocation.payload);
|
|
246
|
+
}
|
|
247
|
+
if (invocation.type === "generate_image") {
|
|
248
|
+
const parsed = generatedImageResultSchema.safeParse(result);
|
|
249
|
+
if (!parsed.success) {
|
|
250
|
+
throw invalidWorkerResult("generate_image", parsed.error.issues);
|
|
251
|
+
}
|
|
252
|
+
return attachInvocationParameters(parsed.data, invocation.payload);
|
|
253
|
+
}
|
|
254
|
+
return attachInvocationParameters(result, invocation.payload);
|
|
255
|
+
}
|
|
256
|
+
function invalidWorkerResult(type, issues) {
|
|
257
|
+
return new CodexDockHttpError(400, makeCodexDockError("INVALID_PAYLOAD", `Invalid ${type} result payload.`, {
|
|
258
|
+
details: { issues: issues },
|
|
259
|
+
}));
|
|
260
|
+
}
|
|
261
|
+
function attachInvocationParameters(result, parameters) {
|
|
262
|
+
if (result && typeof result === "object" && !Array.isArray(result)) {
|
|
263
|
+
return {
|
|
264
|
+
...result,
|
|
265
|
+
parameters,
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
return {
|
|
269
|
+
value: result,
|
|
270
|
+
parameters,
|
|
271
|
+
};
|
|
116
272
|
}
|
|
117
273
|
const handlers = createRouteHandlers({
|
|
118
|
-
|
|
274
|
+
authenticateWorker,
|
|
275
|
+
resolveRequestOwner,
|
|
276
|
+
discovery,
|
|
119
277
|
invoke,
|
|
120
278
|
getInvocation,
|
|
121
279
|
workerConnect,
|
|
@@ -130,38 +288,50 @@ export function createCodexDock(options) {
|
|
|
130
288
|
workerConnect,
|
|
131
289
|
workerNext,
|
|
132
290
|
workerResult,
|
|
291
|
+
discovery,
|
|
133
292
|
handlers,
|
|
134
293
|
};
|
|
135
294
|
}
|
|
136
295
|
export function createRouteHandlers(deps) {
|
|
137
296
|
return {
|
|
138
|
-
|
|
139
|
-
|
|
297
|
+
discovery: async (request) => withHttpErrors(async () => jsonResponse(deps.discovery(request))),
|
|
298
|
+
invoke: async (request) => withHttpErrors(async () => {
|
|
299
|
+
const owner = await deps.resolveRequestOwner(request);
|
|
300
|
+
return jsonResponse(await deps.invoke(await readJson(request), owner), { status: 202 });
|
|
301
|
+
}),
|
|
302
|
+
getInvocation: async (request, context) => withHttpErrors(async () => {
|
|
303
|
+
const owner = await deps.resolveRequestOwner(request);
|
|
140
304
|
const params = await context.params;
|
|
141
|
-
const invocation = await deps.getInvocation(params.invocationId);
|
|
305
|
+
const invocation = await deps.getInvocation(params.invocationId, owner);
|
|
142
306
|
if (!invocation) {
|
|
143
307
|
return jsonResponse({ ok: false, error: makeCodexDockError("INVALID_PAYLOAD", "Invocation not found.") }, { status: 404 });
|
|
144
308
|
}
|
|
145
309
|
return jsonResponse({ ok: true, invocation });
|
|
146
|
-
},
|
|
147
|
-
workerStatus: async () =>
|
|
148
|
-
|
|
149
|
-
deps.
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
deps.
|
|
310
|
+
}),
|
|
311
|
+
workerStatus: async (request) => withHttpErrors(async () => {
|
|
312
|
+
const auth = deps.authenticateWorker(request);
|
|
313
|
+
return jsonResponse(await deps.getWorkerStatus(auth));
|
|
314
|
+
}),
|
|
315
|
+
workerConnect: async (request) => withHttpErrors(async () => {
|
|
316
|
+
const auth = deps.authenticateWorker(request);
|
|
317
|
+
return jsonResponse(await deps.workerConnect(await readJson(request), auth));
|
|
318
|
+
}),
|
|
319
|
+
workerNext: async (request) => withHttpErrors(async () => {
|
|
320
|
+
const auth = deps.authenticateWorker(request);
|
|
154
321
|
const input = await readJson(request);
|
|
155
322
|
const workerId = getStringField(input, "workerId");
|
|
156
|
-
const next = await deps.workerNext(workerId);
|
|
323
|
+
const next = await deps.workerNext(workerId, auth);
|
|
157
324
|
if (!next)
|
|
158
325
|
return new Response(null, { status: 204 });
|
|
159
326
|
return jsonResponse(next);
|
|
160
|
-
},
|
|
161
|
-
workerResult: async (request) => {
|
|
162
|
-
deps.
|
|
163
|
-
return jsonResponse({
|
|
164
|
-
|
|
327
|
+
}),
|
|
328
|
+
workerResult: async (request) => withHttpErrors(async () => {
|
|
329
|
+
const auth = deps.authenticateWorker(request);
|
|
330
|
+
return jsonResponse({
|
|
331
|
+
ok: true,
|
|
332
|
+
invocation: await deps.workerResult(await readJson(request), auth),
|
|
333
|
+
});
|
|
334
|
+
}),
|
|
165
335
|
};
|
|
166
336
|
}
|
|
167
337
|
export function createMemoryPersistence(options = {}) {
|
|
@@ -172,26 +342,39 @@ export function createMemoryPersistence(options = {}) {
|
|
|
172
342
|
function stamp() {
|
|
173
343
|
return now().toISOString();
|
|
174
344
|
}
|
|
175
|
-
function assertClaimedBy(invocation, workerId) {
|
|
345
|
+
function assertClaimedBy(invocation, workerId, owner) {
|
|
346
|
+
if (!sameOwner(invocation, owner)) {
|
|
347
|
+
throw new CodexDockHttpError(404, makeCodexDockError("INVALID_PAYLOAD", "Invocation not found."));
|
|
348
|
+
}
|
|
176
349
|
if (invocation.workerId !== workerId || invocation.status !== "running") {
|
|
177
350
|
throw new CodexDockHttpError(403, makeCodexDockError("WORKER_AUTH_INVALID", "Worker cannot submit a result for an invocation it did not claim."));
|
|
178
351
|
}
|
|
179
352
|
}
|
|
353
|
+
function getOwnedInvocationOrThrow(invocationId, owner) {
|
|
354
|
+
const existing = invocations.get(invocationId);
|
|
355
|
+
if (!existing || !sameOwner(existing, owner)) {
|
|
356
|
+
throw new CodexDockHttpError(404, makeCodexDockError("INVALID_PAYLOAD", "Invocation not found."));
|
|
357
|
+
}
|
|
358
|
+
return existing;
|
|
359
|
+
}
|
|
180
360
|
return {
|
|
181
361
|
async createInvocation(input) {
|
|
182
362
|
if (input.idempotencyKey) {
|
|
183
|
-
const existingId = idempotencyIndex.get(input
|
|
363
|
+
const existingId = idempotencyIndex.get(idempotencyKeyFor(input));
|
|
184
364
|
if (existingId) {
|
|
185
365
|
const existing = invocations.get(existingId);
|
|
186
|
-
if (existing)
|
|
366
|
+
if (existing && sameOwner(existing, input))
|
|
187
367
|
return existing;
|
|
188
368
|
}
|
|
189
369
|
}
|
|
190
370
|
const invocation = invocationRecordSchema.parse({
|
|
191
371
|
invocationId: input.invocationId ?? `inv_${randomUUID()}`,
|
|
372
|
+
ownerKind: input.ownerKind,
|
|
373
|
+
ownerId: input.ownerId,
|
|
192
374
|
type: input.type,
|
|
193
375
|
prompt: input.prompt,
|
|
194
376
|
payload: input.payload,
|
|
377
|
+
requiredCapabilities: input.requiredCapabilities,
|
|
195
378
|
status: "pending",
|
|
196
379
|
attempts: 0,
|
|
197
380
|
idempotencyKey: input.idempotencyKey,
|
|
@@ -200,30 +383,37 @@ export function createMemoryPersistence(options = {}) {
|
|
|
200
383
|
});
|
|
201
384
|
invocations.set(invocation.invocationId, invocation);
|
|
202
385
|
if (input.idempotencyKey) {
|
|
203
|
-
idempotencyIndex.set(input
|
|
386
|
+
idempotencyIndex.set(idempotencyKeyFor(input), invocation.invocationId);
|
|
204
387
|
}
|
|
205
388
|
return invocation;
|
|
206
389
|
},
|
|
207
|
-
async getInvocation(invocationId) {
|
|
208
|
-
|
|
390
|
+
async getInvocation(invocationId, owner) {
|
|
391
|
+
const invocation = invocations.get(invocationId) ?? null;
|
|
392
|
+
if (!invocation || !sameOwner(invocation, owner))
|
|
393
|
+
return null;
|
|
394
|
+
return invocation;
|
|
209
395
|
},
|
|
210
|
-
async listInvocations() {
|
|
211
|
-
return [...invocations.values()]
|
|
396
|
+
async listInvocations(owner) {
|
|
397
|
+
return [...invocations.values()]
|
|
398
|
+
.filter((invocation) => sameOwner(invocation, owner))
|
|
399
|
+
.sort((a, b) => b.createdAt.localeCompare(a.createdAt));
|
|
212
400
|
},
|
|
213
|
-
async claimNextInvocation(
|
|
214
|
-
const worker = workers.get(workerId);
|
|
401
|
+
async claimNextInvocation(input) {
|
|
402
|
+
const worker = workers.get(workerKey(input, input.workerId));
|
|
215
403
|
if (worker?.status === "revoked") {
|
|
216
404
|
throw new CodexDockHttpError(403, makeCodexDockError("WORKER_REVOKED", "Worker has been revoked."));
|
|
217
405
|
}
|
|
218
406
|
const pending = [...invocations.values()]
|
|
219
|
-
.filter((invocation) => invocation.status === "pending"
|
|
407
|
+
.filter((invocation) => invocation.status === "pending" &&
|
|
408
|
+
sameOwner(invocation, input) &&
|
|
409
|
+
supportsRequiredCapabilities(input.capabilities, invocation.requiredCapabilities))
|
|
220
410
|
.sort((a, b) => a.createdAt.localeCompare(b.createdAt))[0];
|
|
221
411
|
if (!pending)
|
|
222
412
|
return null;
|
|
223
413
|
const nextRecord = invocationRecordSchema.parse({
|
|
224
414
|
...pending,
|
|
225
415
|
status: "running",
|
|
226
|
-
workerId,
|
|
416
|
+
workerId: input.workerId,
|
|
227
417
|
attempts: (pending.attempts ?? 0) + 1,
|
|
228
418
|
claimedAt: stamp(),
|
|
229
419
|
});
|
|
@@ -231,11 +421,8 @@ export function createMemoryPersistence(options = {}) {
|
|
|
231
421
|
return nextRecord;
|
|
232
422
|
},
|
|
233
423
|
async completeInvocation(input) {
|
|
234
|
-
const existing =
|
|
235
|
-
|
|
236
|
-
throw new CodexDockHttpError(404, makeCodexDockError("INVALID_PAYLOAD", "Invocation not found."));
|
|
237
|
-
}
|
|
238
|
-
assertClaimedBy(existing, input.workerId);
|
|
424
|
+
const existing = getOwnedInvocationOrThrow(input.invocationId, input);
|
|
425
|
+
assertClaimedBy(existing, input.workerId, input);
|
|
239
426
|
const updated = invocationRecordSchema.parse({
|
|
240
427
|
...existing,
|
|
241
428
|
status: "completed",
|
|
@@ -247,11 +434,8 @@ export function createMemoryPersistence(options = {}) {
|
|
|
247
434
|
return updated;
|
|
248
435
|
},
|
|
249
436
|
async failInvocation(input) {
|
|
250
|
-
const existing =
|
|
251
|
-
|
|
252
|
-
throw new CodexDockHttpError(404, makeCodexDockError("INVALID_PAYLOAD", "Invocation not found."));
|
|
253
|
-
}
|
|
254
|
-
assertClaimedBy(existing, input.workerId);
|
|
437
|
+
const existing = getOwnedInvocationOrThrow(input.invocationId, input);
|
|
438
|
+
assertClaimedBy(existing, input.workerId, input);
|
|
255
439
|
const updated = invocationRecordSchema.parse({
|
|
256
440
|
...existing,
|
|
257
441
|
status: "failed",
|
|
@@ -263,24 +447,33 @@ export function createMemoryPersistence(options = {}) {
|
|
|
263
447
|
return updated;
|
|
264
448
|
},
|
|
265
449
|
async upsertWorker(input) {
|
|
266
|
-
const
|
|
267
|
-
const
|
|
450
|
+
const key = workerKey(input, input.workerId);
|
|
451
|
+
const existing = workers.get(key);
|
|
452
|
+
const timestamp = stamp();
|
|
453
|
+
const status = existing?.status === "revoked"
|
|
454
|
+
? "revoked"
|
|
455
|
+
: input.status ?? existing?.status ?? "online";
|
|
456
|
+
const worker = workerRecordSchema.parse({
|
|
268
457
|
workerId: input.workerId,
|
|
458
|
+
ownerKind: input.ownerKind,
|
|
459
|
+
ownerId: input.ownerId,
|
|
269
460
|
deviceName: input.deviceName,
|
|
270
461
|
capabilities: input.capabilities,
|
|
271
|
-
status
|
|
272
|
-
lastSeenAt:
|
|
273
|
-
createdAt: existing?.createdAt ??
|
|
274
|
-
revokedAt: existing?.revokedAt,
|
|
275
|
-
};
|
|
276
|
-
workers.set(
|
|
462
|
+
status,
|
|
463
|
+
lastSeenAt: timestamp,
|
|
464
|
+
createdAt: existing?.createdAt ?? timestamp,
|
|
465
|
+
revokedAt: status === "revoked" ? existing?.revokedAt ?? timestamp : existing?.revokedAt,
|
|
466
|
+
});
|
|
467
|
+
workers.set(key, worker);
|
|
277
468
|
return worker;
|
|
278
469
|
},
|
|
279
|
-
async getWorker(workerId) {
|
|
280
|
-
return workers.get(workerId) ?? null;
|
|
470
|
+
async getWorker(workerId, owner) {
|
|
471
|
+
return workers.get(workerKey(owner, workerId)) ?? null;
|
|
281
472
|
},
|
|
282
|
-
async listWorkers() {
|
|
283
|
-
return [...workers.values()]
|
|
473
|
+
async listWorkers(owner) {
|
|
474
|
+
return [...workers.values()]
|
|
475
|
+
.filter((worker) => sameOwner(worker, owner))
|
|
476
|
+
.sort((a, b) => b.lastSeenAt.localeCompare(a.lastSeenAt));
|
|
284
477
|
},
|
|
285
478
|
};
|
|
286
479
|
}
|
|
@@ -300,6 +493,17 @@ function jsonResponse(value, init = {}) {
|
|
|
300
493
|
},
|
|
301
494
|
});
|
|
302
495
|
}
|
|
496
|
+
async function withHttpErrors(callback) {
|
|
497
|
+
try {
|
|
498
|
+
return await callback();
|
|
499
|
+
}
|
|
500
|
+
catch (error) {
|
|
501
|
+
if (error instanceof CodexDockHttpError) {
|
|
502
|
+
return jsonResponse({ ok: false, error: error.error }, { status: error.status });
|
|
503
|
+
}
|
|
504
|
+
throw error;
|
|
505
|
+
}
|
|
506
|
+
}
|
|
303
507
|
function getStringField(input, field) {
|
|
304
508
|
if (!input || typeof input !== "object" || !(field in input)) {
|
|
305
509
|
throw new CodexDockHttpError(400, makeCodexDockError("INVALID_PAYLOAD", `Missing ${field}.`));
|
|
@@ -310,6 +514,45 @@ function getStringField(input, field) {
|
|
|
310
514
|
}
|
|
311
515
|
return value;
|
|
312
516
|
}
|
|
517
|
+
function parseConfiguredOwner(input, label) {
|
|
518
|
+
const parsed = ownerSchema.safeParse(input);
|
|
519
|
+
if (!parsed.success) {
|
|
520
|
+
throw new Error(`${label} must include ownerKind and ownerId.`);
|
|
521
|
+
}
|
|
522
|
+
return parsed.data;
|
|
523
|
+
}
|
|
524
|
+
function parseHttpOwner(input) {
|
|
525
|
+
const parsed = ownerSchema.safeParse(input);
|
|
526
|
+
if (!parsed.success) {
|
|
527
|
+
throw new CodexDockHttpError(400, makeCodexDockError("INVALID_PAYLOAD", "Invalid CodexDock owner."));
|
|
528
|
+
}
|
|
529
|
+
return parsed.data;
|
|
530
|
+
}
|
|
531
|
+
function sameOwner(left, right) {
|
|
532
|
+
return left.ownerKind === right.ownerKind && left.ownerId === right.ownerId;
|
|
533
|
+
}
|
|
534
|
+
function ownerKey(owner) {
|
|
535
|
+
return `${owner.ownerKind}:${owner.ownerId}`;
|
|
536
|
+
}
|
|
537
|
+
function workerKey(owner, workerId) {
|
|
538
|
+
return `${ownerKey(owner)}:${workerId}`;
|
|
539
|
+
}
|
|
540
|
+
function idempotencyKeyFor(input) {
|
|
541
|
+
return `${ownerKey(input)}:${input.idempotencyKey}`;
|
|
542
|
+
}
|
|
543
|
+
function supportsRequiredCapabilities(workerCapabilities, requiredCapabilities) {
|
|
544
|
+
if (requiredCapabilities.length === 0)
|
|
545
|
+
return true;
|
|
546
|
+
const supported = new Set(workerCapabilities);
|
|
547
|
+
return requiredCapabilities.every((capability) => supported.has(capability));
|
|
548
|
+
}
|
|
549
|
+
function normalizeEndpointBasePath(basePath) {
|
|
550
|
+
const trimmed = basePath.trim();
|
|
551
|
+
const withLeadingSlash = trimmed.startsWith("/") ? trimmed : `/${trimmed}`;
|
|
552
|
+
return withLeadingSlash.endsWith("/")
|
|
553
|
+
? withLeadingSlash.slice(0, Math.max(1, withLeadingSlash.length - 1))
|
|
554
|
+
: withLeadingSlash;
|
|
555
|
+
}
|
|
313
556
|
function safeEqual(a, b) {
|
|
314
557
|
const aHash = createHash("sha256").update(a).digest();
|
|
315
558
|
const bHash = createHash("sha256").update(b).digest();
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@codexdock/sdk",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "Server-side SDK for routing app AI invocations to local CodexDock workers.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"access": "public"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@codexdock/protocol": "0.1.
|
|
33
|
+
"@codexdock/protocol": "0.1.1"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
36
|
"@types/node": "^24.10.1",
|