@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 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: "generate_data",
30
+ type: "generate_object",
28
31
  prompt: "Create product card data.",
29
- payload: { count: 4 },
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(workerId: string): Promise<InvocationRecord | null>;
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 interface CreateInvocationInput extends NormalizedInvokeRequest {
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 interface UpsertWorkerInput extends NormalizedWorkerConnectRequest {
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: (_request: Request, context: {
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
- requireWorkerToken(request: Request): void;
85
- invoke(input: unknown): Promise<InvokeAccepted>;
86
- getInvocation(invocationId: string): Promise<InvocationRecord | null>;
87
- workerConnect(input: unknown): Promise<WorkerConnectResult>;
88
- workerNext(workerId: string): Promise<WorkerNextResponse | null>;
89
- workerResult(input: unknown): Promise<InvocationRecord>;
90
- getWorkerStatus(): Promise<WorkerStatusResult>;
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: (_request: Request, context: {
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>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
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
- function requireWorkerToken(request) {
16
- if (!options.workerToken)
17
- return;
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 invoke(input) {
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: `/api/codexdock/invocations/${record.invocationId}`,
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 worker = await options.persistence.getWorker(workerId);
65
- if (worker?.status === "revoked") {
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(workerId);
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: parsed.data.result ?? null,
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
- requireWorkerToken,
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
- invoke: async (request) => jsonResponse(await deps.invoke(await readJson(request)), { status: 202 }),
139
- getInvocation: async (_request, context) => {
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 () => jsonResponse(await deps.getWorkerStatus()),
148
- workerConnect: async (request) => {
149
- deps.requireWorkerToken(request);
150
- return jsonResponse(await deps.workerConnect(await readJson(request)));
151
- },
152
- workerNext: async (request) => {
153
- deps.requireWorkerToken(request);
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.requireWorkerToken(request);
163
- return jsonResponse({ ok: true, invocation: await deps.workerResult(await readJson(request)) });
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.idempotencyKey);
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.idempotencyKey, invocation.invocationId);
385
+ idempotencyIndex.set(idempotencyKeyFor(input), invocation.invocationId);
204
386
  }
205
387
  return invocation;
206
388
  },
207
- async getInvocation(invocationId) {
208
- return invocations.get(invocationId) ?? null;
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()].sort((a, b) => b.createdAt.localeCompare(a.createdAt));
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(workerId) {
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 = invocations.get(input.invocationId);
235
- if (!existing) {
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 = invocations.get(input.invocationId);
251
- if (!existing) {
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 existing = workers.get(input.workerId);
267
- const worker = {
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: input.status ?? existing?.status ?? "online",
272
- lastSeenAt: stamp(),
273
- createdAt: existing?.createdAt ?? stamp(),
274
- revokedAt: existing?.revokedAt,
275
- };
276
- workers.set(worker.workerId, worker);
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()].sort((a, b) => b.lastSeenAt.localeCompare(a.lastSeenAt));
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.0",
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.0"
33
+ "@codexdock/protocol": "0.1.2"
34
34
  },
35
35
  "devDependencies": {
36
36
  "@types/node": "^24.10.1",