@codexdock/sdk 0.1.0 → 0.1.2
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 +313 -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 { 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,122 @@ 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
|
+
appName,
|
|
167
|
+
endpoints: {
|
|
168
|
+
discovery: endpoint("/discovery"),
|
|
169
|
+
invoke: endpoint("/invoke"),
|
|
170
|
+
getInvocation: endpoint("/invocations"),
|
|
171
|
+
workerStatus: endpoint("/worker/status"),
|
|
172
|
+
workerConnect: endpoint("/worker/connect"),
|
|
173
|
+
workerNext: endpoint("/worker/next"),
|
|
174
|
+
workerResult: endpoint("/worker/result"),
|
|
175
|
+
},
|
|
176
|
+
capabilities: {
|
|
177
|
+
generationTypes: Array.from(invokeTypes),
|
|
178
|
+
artifactUpload: ["inline"],
|
|
179
|
+
},
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
async function getInvocationForResult(invocationId, owner) {
|
|
183
|
+
const invocation = await options.persistence.getInvocation(invocationId, owner);
|
|
184
|
+
if (!invocation) {
|
|
185
|
+
throw new CodexDockHttpError(404, makeCodexDockError("INVALID_PAYLOAD", "Invocation not found."));
|
|
186
|
+
}
|
|
187
|
+
return invocation;
|
|
188
|
+
}
|
|
189
|
+
async function getWorkerForResult(workerId, owner) {
|
|
190
|
+
const worker = await options.persistence.getWorker(workerId, owner);
|
|
191
|
+
if (!worker) {
|
|
192
|
+
throw new CodexDockHttpError(403, makeCodexDockError("WORKER_AUTH_INVALID", "Worker cannot submit a result because it is not connected for this owner."));
|
|
193
|
+
}
|
|
194
|
+
return worker;
|
|
195
|
+
}
|
|
196
|
+
function assertWorkerIsActive(worker) {
|
|
197
|
+
if (worker.status === "revoked") {
|
|
198
|
+
throw new CodexDockHttpError(403, makeCodexDockError("WORKER_REVOKED", "Worker has been revoked."));
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
function resolveInvocationOwner(input, ownerOverride) {
|
|
202
|
+
if (ownerOverride)
|
|
203
|
+
return ownerOverride;
|
|
204
|
+
return ownerFromOptionalFields(input) ?? defaultOwner;
|
|
205
|
+
}
|
|
206
|
+
function resolveWorkerOwner(input, ownerOverride) {
|
|
207
|
+
if (ownerOverride)
|
|
208
|
+
return ownerOverride;
|
|
209
|
+
return ownerFromOptionalFields(input) ?? workerOwner;
|
|
210
|
+
}
|
|
211
|
+
function ownerFromOptionalFields(input) {
|
|
212
|
+
if (!input.ownerKind && !input.ownerId)
|
|
213
|
+
return null;
|
|
214
|
+
if (input.ownerKind && input.ownerId) {
|
|
215
|
+
return parseHttpOwner({ ownerKind: input.ownerKind, ownerId: input.ownerId });
|
|
216
|
+
}
|
|
217
|
+
throw new CodexDockHttpError(400, makeCodexDockError("INVALID_PAYLOAD", "CodexDock ownerKind and ownerId must be provided together."));
|
|
218
|
+
}
|
|
219
|
+
function assertWorkerCanSubmit(invocation, workerId) {
|
|
220
|
+
if (invocation.workerId !== workerId || invocation.status !== "running") {
|
|
221
|
+
throw new CodexDockHttpError(403, makeCodexDockError("WORKER_AUTH_INVALID", "Worker cannot submit a result for an invocation it did not claim."));
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
function validateCompletedResult(invocation, result) {
|
|
225
|
+
if (invocation.type === "generate_text") {
|
|
226
|
+
const parsed = generatedTextResultSchema.safeParse(result);
|
|
227
|
+
if (!parsed.success) {
|
|
228
|
+
throw invalidWorkerResult("generate_text", parsed.error.issues);
|
|
229
|
+
}
|
|
230
|
+
return attachInvocationParameters(parsed.data, invocation.payload);
|
|
231
|
+
}
|
|
232
|
+
if (invocation.type === "generate_object") {
|
|
233
|
+
const parsed = generatedObjectResultSchema.safeParse(result);
|
|
234
|
+
if (!parsed.success) {
|
|
235
|
+
throw invalidWorkerResult("generate_object", parsed.error.issues);
|
|
236
|
+
}
|
|
237
|
+
return attachInvocationParameters(parsed.data, invocation.payload);
|
|
238
|
+
}
|
|
239
|
+
if (invocation.type === "generate_file") {
|
|
240
|
+
const parsed = generatedFileResultSchema.safeParse(result);
|
|
241
|
+
if (!parsed.success) {
|
|
242
|
+
throw invalidWorkerResult("generate_file", parsed.error.issues);
|
|
243
|
+
}
|
|
244
|
+
return attachInvocationParameters(parsed.data, invocation.payload);
|
|
245
|
+
}
|
|
246
|
+
if (invocation.type === "generate_image") {
|
|
247
|
+
const parsed = generatedImageResultSchema.safeParse(result);
|
|
248
|
+
if (!parsed.success) {
|
|
249
|
+
throw invalidWorkerResult("generate_image", parsed.error.issues);
|
|
250
|
+
}
|
|
251
|
+
return attachInvocationParameters(parsed.data, invocation.payload);
|
|
252
|
+
}
|
|
253
|
+
return attachInvocationParameters(result, invocation.payload);
|
|
254
|
+
}
|
|
255
|
+
function invalidWorkerResult(type, issues) {
|
|
256
|
+
return new CodexDockHttpError(400, makeCodexDockError("INVALID_PAYLOAD", `Invalid ${type} result payload.`, {
|
|
257
|
+
details: { issues: issues },
|
|
258
|
+
}));
|
|
259
|
+
}
|
|
260
|
+
function attachInvocationParameters(result, parameters) {
|
|
261
|
+
if (result && typeof result === "object" && !Array.isArray(result)) {
|
|
262
|
+
return {
|
|
263
|
+
...result,
|
|
264
|
+
parameters,
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
return {
|
|
268
|
+
value: result,
|
|
269
|
+
parameters,
|
|
270
|
+
};
|
|
116
271
|
}
|
|
117
272
|
const handlers = createRouteHandlers({
|
|
118
|
-
|
|
273
|
+
authenticateWorker,
|
|
274
|
+
resolveRequestOwner,
|
|
275
|
+
discovery,
|
|
119
276
|
invoke,
|
|
120
277
|
getInvocation,
|
|
121
278
|
workerConnect,
|
|
@@ -130,38 +287,50 @@ export function createCodexDock(options) {
|
|
|
130
287
|
workerConnect,
|
|
131
288
|
workerNext,
|
|
132
289
|
workerResult,
|
|
290
|
+
discovery,
|
|
133
291
|
handlers,
|
|
134
292
|
};
|
|
135
293
|
}
|
|
136
294
|
export function createRouteHandlers(deps) {
|
|
137
295
|
return {
|
|
138
|
-
|
|
139
|
-
|
|
296
|
+
discovery: async (request) => withHttpErrors(async () => jsonResponse(deps.discovery(request))),
|
|
297
|
+
invoke: async (request) => withHttpErrors(async () => {
|
|
298
|
+
const owner = await deps.resolveRequestOwner(request);
|
|
299
|
+
return jsonResponse(await deps.invoke(await readJson(request), owner), { status: 202 });
|
|
300
|
+
}),
|
|
301
|
+
getInvocation: async (request, context) => withHttpErrors(async () => {
|
|
302
|
+
const owner = await deps.resolveRequestOwner(request);
|
|
140
303
|
const params = await context.params;
|
|
141
|
-
const invocation = await deps.getInvocation(params.invocationId);
|
|
304
|
+
const invocation = await deps.getInvocation(params.invocationId, owner);
|
|
142
305
|
if (!invocation) {
|
|
143
306
|
return jsonResponse({ ok: false, error: makeCodexDockError("INVALID_PAYLOAD", "Invocation not found.") }, { status: 404 });
|
|
144
307
|
}
|
|
145
308
|
return jsonResponse({ ok: true, invocation });
|
|
146
|
-
},
|
|
147
|
-
workerStatus: async () =>
|
|
148
|
-
|
|
149
|
-
deps.
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
deps.
|
|
309
|
+
}),
|
|
310
|
+
workerStatus: async (request) => withHttpErrors(async () => {
|
|
311
|
+
const auth = deps.authenticateWorker(request);
|
|
312
|
+
return jsonResponse(await deps.getWorkerStatus(auth));
|
|
313
|
+
}),
|
|
314
|
+
workerConnect: async (request) => withHttpErrors(async () => {
|
|
315
|
+
const auth = deps.authenticateWorker(request);
|
|
316
|
+
return jsonResponse(await deps.workerConnect(await readJson(request), auth));
|
|
317
|
+
}),
|
|
318
|
+
workerNext: async (request) => withHttpErrors(async () => {
|
|
319
|
+
const auth = deps.authenticateWorker(request);
|
|
154
320
|
const input = await readJson(request);
|
|
155
321
|
const workerId = getStringField(input, "workerId");
|
|
156
|
-
const next = await deps.workerNext(workerId);
|
|
322
|
+
const next = await deps.workerNext(workerId, auth);
|
|
157
323
|
if (!next)
|
|
158
324
|
return new Response(null, { status: 204 });
|
|
159
325
|
return jsonResponse(next);
|
|
160
|
-
},
|
|
161
|
-
workerResult: async (request) => {
|
|
162
|
-
deps.
|
|
163
|
-
return jsonResponse({
|
|
164
|
-
|
|
326
|
+
}),
|
|
327
|
+
workerResult: async (request) => withHttpErrors(async () => {
|
|
328
|
+
const auth = deps.authenticateWorker(request);
|
|
329
|
+
return jsonResponse({
|
|
330
|
+
ok: true,
|
|
331
|
+
invocation: await deps.workerResult(await readJson(request), auth),
|
|
332
|
+
});
|
|
333
|
+
}),
|
|
165
334
|
};
|
|
166
335
|
}
|
|
167
336
|
export function createMemoryPersistence(options = {}) {
|
|
@@ -172,26 +341,39 @@ export function createMemoryPersistence(options = {}) {
|
|
|
172
341
|
function stamp() {
|
|
173
342
|
return now().toISOString();
|
|
174
343
|
}
|
|
175
|
-
function assertClaimedBy(invocation, workerId) {
|
|
344
|
+
function assertClaimedBy(invocation, workerId, owner) {
|
|
345
|
+
if (!sameOwner(invocation, owner)) {
|
|
346
|
+
throw new CodexDockHttpError(404, makeCodexDockError("INVALID_PAYLOAD", "Invocation not found."));
|
|
347
|
+
}
|
|
176
348
|
if (invocation.workerId !== workerId || invocation.status !== "running") {
|
|
177
349
|
throw new CodexDockHttpError(403, makeCodexDockError("WORKER_AUTH_INVALID", "Worker cannot submit a result for an invocation it did not claim."));
|
|
178
350
|
}
|
|
179
351
|
}
|
|
352
|
+
function getOwnedInvocationOrThrow(invocationId, owner) {
|
|
353
|
+
const existing = invocations.get(invocationId);
|
|
354
|
+
if (!existing || !sameOwner(existing, owner)) {
|
|
355
|
+
throw new CodexDockHttpError(404, makeCodexDockError("INVALID_PAYLOAD", "Invocation not found."));
|
|
356
|
+
}
|
|
357
|
+
return existing;
|
|
358
|
+
}
|
|
180
359
|
return {
|
|
181
360
|
async createInvocation(input) {
|
|
182
361
|
if (input.idempotencyKey) {
|
|
183
|
-
const existingId = idempotencyIndex.get(input
|
|
362
|
+
const existingId = idempotencyIndex.get(idempotencyKeyFor(input));
|
|
184
363
|
if (existingId) {
|
|
185
364
|
const existing = invocations.get(existingId);
|
|
186
|
-
if (existing)
|
|
365
|
+
if (existing && sameOwner(existing, input))
|
|
187
366
|
return existing;
|
|
188
367
|
}
|
|
189
368
|
}
|
|
190
369
|
const invocation = invocationRecordSchema.parse({
|
|
191
370
|
invocationId: input.invocationId ?? `inv_${randomUUID()}`,
|
|
371
|
+
ownerKind: input.ownerKind,
|
|
372
|
+
ownerId: input.ownerId,
|
|
192
373
|
type: input.type,
|
|
193
374
|
prompt: input.prompt,
|
|
194
375
|
payload: input.payload,
|
|
376
|
+
requiredCapabilities: input.requiredCapabilities,
|
|
195
377
|
status: "pending",
|
|
196
378
|
attempts: 0,
|
|
197
379
|
idempotencyKey: input.idempotencyKey,
|
|
@@ -200,30 +382,37 @@ export function createMemoryPersistence(options = {}) {
|
|
|
200
382
|
});
|
|
201
383
|
invocations.set(invocation.invocationId, invocation);
|
|
202
384
|
if (input.idempotencyKey) {
|
|
203
|
-
idempotencyIndex.set(input
|
|
385
|
+
idempotencyIndex.set(idempotencyKeyFor(input), invocation.invocationId);
|
|
204
386
|
}
|
|
205
387
|
return invocation;
|
|
206
388
|
},
|
|
207
|
-
async getInvocation(invocationId) {
|
|
208
|
-
|
|
389
|
+
async getInvocation(invocationId, owner) {
|
|
390
|
+
const invocation = invocations.get(invocationId) ?? null;
|
|
391
|
+
if (!invocation || !sameOwner(invocation, owner))
|
|
392
|
+
return null;
|
|
393
|
+
return invocation;
|
|
209
394
|
},
|
|
210
|
-
async listInvocations() {
|
|
211
|
-
return [...invocations.values()]
|
|
395
|
+
async listInvocations(owner) {
|
|
396
|
+
return [...invocations.values()]
|
|
397
|
+
.filter((invocation) => sameOwner(invocation, owner))
|
|
398
|
+
.sort((a, b) => b.createdAt.localeCompare(a.createdAt));
|
|
212
399
|
},
|
|
213
|
-
async claimNextInvocation(
|
|
214
|
-
const worker = workers.get(workerId);
|
|
400
|
+
async claimNextInvocation(input) {
|
|
401
|
+
const worker = workers.get(workerKey(input, input.workerId));
|
|
215
402
|
if (worker?.status === "revoked") {
|
|
216
403
|
throw new CodexDockHttpError(403, makeCodexDockError("WORKER_REVOKED", "Worker has been revoked."));
|
|
217
404
|
}
|
|
218
405
|
const pending = [...invocations.values()]
|
|
219
|
-
.filter((invocation) => invocation.status === "pending"
|
|
406
|
+
.filter((invocation) => invocation.status === "pending" &&
|
|
407
|
+
sameOwner(invocation, input) &&
|
|
408
|
+
supportsRequiredCapabilities(input.capabilities, invocation.requiredCapabilities))
|
|
220
409
|
.sort((a, b) => a.createdAt.localeCompare(b.createdAt))[0];
|
|
221
410
|
if (!pending)
|
|
222
411
|
return null;
|
|
223
412
|
const nextRecord = invocationRecordSchema.parse({
|
|
224
413
|
...pending,
|
|
225
414
|
status: "running",
|
|
226
|
-
workerId,
|
|
415
|
+
workerId: input.workerId,
|
|
227
416
|
attempts: (pending.attempts ?? 0) + 1,
|
|
228
417
|
claimedAt: stamp(),
|
|
229
418
|
});
|
|
@@ -231,11 +420,8 @@ export function createMemoryPersistence(options = {}) {
|
|
|
231
420
|
return nextRecord;
|
|
232
421
|
},
|
|
233
422
|
async completeInvocation(input) {
|
|
234
|
-
const existing =
|
|
235
|
-
|
|
236
|
-
throw new CodexDockHttpError(404, makeCodexDockError("INVALID_PAYLOAD", "Invocation not found."));
|
|
237
|
-
}
|
|
238
|
-
assertClaimedBy(existing, input.workerId);
|
|
423
|
+
const existing = getOwnedInvocationOrThrow(input.invocationId, input);
|
|
424
|
+
assertClaimedBy(existing, input.workerId, input);
|
|
239
425
|
const updated = invocationRecordSchema.parse({
|
|
240
426
|
...existing,
|
|
241
427
|
status: "completed",
|
|
@@ -247,11 +433,8 @@ export function createMemoryPersistence(options = {}) {
|
|
|
247
433
|
return updated;
|
|
248
434
|
},
|
|
249
435
|
async failInvocation(input) {
|
|
250
|
-
const existing =
|
|
251
|
-
|
|
252
|
-
throw new CodexDockHttpError(404, makeCodexDockError("INVALID_PAYLOAD", "Invocation not found."));
|
|
253
|
-
}
|
|
254
|
-
assertClaimedBy(existing, input.workerId);
|
|
436
|
+
const existing = getOwnedInvocationOrThrow(input.invocationId, input);
|
|
437
|
+
assertClaimedBy(existing, input.workerId, input);
|
|
255
438
|
const updated = invocationRecordSchema.parse({
|
|
256
439
|
...existing,
|
|
257
440
|
status: "failed",
|
|
@@ -263,24 +446,33 @@ export function createMemoryPersistence(options = {}) {
|
|
|
263
446
|
return updated;
|
|
264
447
|
},
|
|
265
448
|
async upsertWorker(input) {
|
|
266
|
-
const
|
|
267
|
-
const
|
|
449
|
+
const key = workerKey(input, input.workerId);
|
|
450
|
+
const existing = workers.get(key);
|
|
451
|
+
const timestamp = stamp();
|
|
452
|
+
const status = existing?.status === "revoked"
|
|
453
|
+
? "revoked"
|
|
454
|
+
: input.status ?? existing?.status ?? "online";
|
|
455
|
+
const worker = workerRecordSchema.parse({
|
|
268
456
|
workerId: input.workerId,
|
|
457
|
+
ownerKind: input.ownerKind,
|
|
458
|
+
ownerId: input.ownerId,
|
|
269
459
|
deviceName: input.deviceName,
|
|
270
460
|
capabilities: input.capabilities,
|
|
271
|
-
status
|
|
272
|
-
lastSeenAt:
|
|
273
|
-
createdAt: existing?.createdAt ??
|
|
274
|
-
revokedAt: existing?.revokedAt,
|
|
275
|
-
};
|
|
276
|
-
workers.set(
|
|
461
|
+
status,
|
|
462
|
+
lastSeenAt: timestamp,
|
|
463
|
+
createdAt: existing?.createdAt ?? timestamp,
|
|
464
|
+
revokedAt: status === "revoked" ? existing?.revokedAt ?? timestamp : existing?.revokedAt,
|
|
465
|
+
});
|
|
466
|
+
workers.set(key, worker);
|
|
277
467
|
return worker;
|
|
278
468
|
},
|
|
279
|
-
async getWorker(workerId) {
|
|
280
|
-
return workers.get(workerId) ?? null;
|
|
469
|
+
async getWorker(workerId, owner) {
|
|
470
|
+
return workers.get(workerKey(owner, workerId)) ?? null;
|
|
281
471
|
},
|
|
282
|
-
async listWorkers() {
|
|
283
|
-
return [...workers.values()]
|
|
472
|
+
async listWorkers(owner) {
|
|
473
|
+
return [...workers.values()]
|
|
474
|
+
.filter((worker) => sameOwner(worker, owner))
|
|
475
|
+
.sort((a, b) => b.lastSeenAt.localeCompare(a.lastSeenAt));
|
|
284
476
|
},
|
|
285
477
|
};
|
|
286
478
|
}
|
|
@@ -300,6 +492,17 @@ function jsonResponse(value, init = {}) {
|
|
|
300
492
|
},
|
|
301
493
|
});
|
|
302
494
|
}
|
|
495
|
+
async function withHttpErrors(callback) {
|
|
496
|
+
try {
|
|
497
|
+
return await callback();
|
|
498
|
+
}
|
|
499
|
+
catch (error) {
|
|
500
|
+
if (error instanceof CodexDockHttpError) {
|
|
501
|
+
return jsonResponse({ ok: false, error: error.error }, { status: error.status });
|
|
502
|
+
}
|
|
503
|
+
throw error;
|
|
504
|
+
}
|
|
505
|
+
}
|
|
303
506
|
function getStringField(input, field) {
|
|
304
507
|
if (!input || typeof input !== "object" || !(field in input)) {
|
|
305
508
|
throw new CodexDockHttpError(400, makeCodexDockError("INVALID_PAYLOAD", `Missing ${field}.`));
|
|
@@ -310,6 +513,45 @@ function getStringField(input, field) {
|
|
|
310
513
|
}
|
|
311
514
|
return value;
|
|
312
515
|
}
|
|
516
|
+
function parseConfiguredOwner(input, label) {
|
|
517
|
+
const parsed = ownerSchema.safeParse(input);
|
|
518
|
+
if (!parsed.success) {
|
|
519
|
+
throw new Error(`${label} must include ownerKind and ownerId.`);
|
|
520
|
+
}
|
|
521
|
+
return parsed.data;
|
|
522
|
+
}
|
|
523
|
+
function parseHttpOwner(input) {
|
|
524
|
+
const parsed = ownerSchema.safeParse(input);
|
|
525
|
+
if (!parsed.success) {
|
|
526
|
+
throw new CodexDockHttpError(400, makeCodexDockError("INVALID_PAYLOAD", "Invalid CodexDock owner."));
|
|
527
|
+
}
|
|
528
|
+
return parsed.data;
|
|
529
|
+
}
|
|
530
|
+
function sameOwner(left, right) {
|
|
531
|
+
return left.ownerKind === right.ownerKind && left.ownerId === right.ownerId;
|
|
532
|
+
}
|
|
533
|
+
function ownerKey(owner) {
|
|
534
|
+
return `${owner.ownerKind}:${owner.ownerId}`;
|
|
535
|
+
}
|
|
536
|
+
function workerKey(owner, workerId) {
|
|
537
|
+
return `${ownerKey(owner)}:${workerId}`;
|
|
538
|
+
}
|
|
539
|
+
function idempotencyKeyFor(input) {
|
|
540
|
+
return `${ownerKey(input)}:${input.idempotencyKey}`;
|
|
541
|
+
}
|
|
542
|
+
function supportsRequiredCapabilities(workerCapabilities, requiredCapabilities) {
|
|
543
|
+
if (requiredCapabilities.length === 0)
|
|
544
|
+
return true;
|
|
545
|
+
const supported = new Set(workerCapabilities);
|
|
546
|
+
return requiredCapabilities.every((capability) => supported.has(capability));
|
|
547
|
+
}
|
|
548
|
+
function normalizeEndpointBasePath(basePath) {
|
|
549
|
+
const trimmed = basePath.trim();
|
|
550
|
+
const withLeadingSlash = trimmed.startsWith("/") ? trimmed : `/${trimmed}`;
|
|
551
|
+
return withLeadingSlash.endsWith("/")
|
|
552
|
+
? withLeadingSlash.slice(0, Math.max(1, withLeadingSlash.length - 1))
|
|
553
|
+
: withLeadingSlash;
|
|
554
|
+
}
|
|
313
555
|
function safeEqual(a, b) {
|
|
314
556
|
const aHash = createHash("sha256").update(a).digest();
|
|
315
557
|
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.2",
|
|
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.2"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
36
|
"@types/node": "^24.10.1",
|