@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 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 { 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
- 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,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
- requireWorkerToken,
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
- invoke: async (request) => jsonResponse(await deps.invoke(await readJson(request)), { status: 202 }),
139
- getInvocation: async (_request, context) => {
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 () => 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);
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.requireWorkerToken(request);
163
- return jsonResponse({ ok: true, invocation: await deps.workerResult(await readJson(request)) });
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.idempotencyKey);
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.idempotencyKey, invocation.invocationId);
386
+ idempotencyIndex.set(idempotencyKeyFor(input), invocation.invocationId);
204
387
  }
205
388
  return invocation;
206
389
  },
207
- async getInvocation(invocationId) {
208
- return invocations.get(invocationId) ?? null;
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()].sort((a, b) => b.createdAt.localeCompare(a.createdAt));
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(workerId) {
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 = invocations.get(input.invocationId);
235
- if (!existing) {
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 = invocations.get(input.invocationId);
251
- if (!existing) {
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 existing = workers.get(input.workerId);
267
- const worker = {
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: input.status ?? existing?.status ?? "online",
272
- lastSeenAt: stamp(),
273
- createdAt: existing?.createdAt ?? stamp(),
274
- revokedAt: existing?.revokedAt,
275
- };
276
- workers.set(worker.workerId, worker);
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()].sort((a, b) => b.lastSeenAt.localeCompare(a.lastSeenAt));
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.0",
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.0"
33
+ "@codexdock/protocol": "0.1.1"
34
34
  },
35
35
  "devDependencies": {
36
36
  "@types/node": "^24.10.1",