@ashdev/codex-plugin-sdk 1.7.0 → 1.8.0

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/dist/server.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Plugin server - handles JSON-RPC communication over stdio
3
3
  */
4
- import type { MetadataContentType, MetadataProvider } from "./types/capabilities.js";
4
+ import type { BookMetadataProvider, MetadataContentType, MetadataProvider } from "./types/capabilities.js";
5
5
  import type { PluginManifest } from "./types/manifest.js";
6
6
  /**
7
7
  * Initialize parameters received from Codex
@@ -22,8 +22,10 @@ export interface MetadataPluginOptions {
22
22
  metadataProvider: MetadataContentType[];
23
23
  };
24
24
  };
25
- /** MetadataProvider implementation */
26
- provider: MetadataProvider;
25
+ /** Series MetadataProvider implementation (required if "series" in metadataProvider) */
26
+ provider?: MetadataProvider;
27
+ /** Book MetadataProvider implementation (required if "book" in metadataProvider) */
28
+ bookProvider?: BookMetadataProvider;
27
29
  /** Called when plugin receives initialize with credentials/config */
28
30
  onInitialize?: (params: InitializeParams) => void | Promise<void>;
29
31
  /** Log level (default: "info") */
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AACrF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAsF1D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,2BAA2B;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,kDAAkD;IAClD,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,mFAAmF;IACnF,QAAQ,EAAE,cAAc,GAAG;QACzB,YAAY,EAAE;YAAE,gBAAgB,EAAE,mBAAmB,EAAE,CAAA;SAAE,CAAC;KAC3D,CAAC;IACF,sCAAsC;IACtC,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,qEAAqE;IACrE,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE,kCAAkC;IAClC,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;CAChD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,qBAAqB,GAAG,IAAI,CA6BzE;AAMD;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,2BAA2B,GAAG,IAAI,CAarF;AAED;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,4EAA4E;IAC5E,QAAQ,EAAE,cAAc,GAAG;QACzB,YAAY,EAAE;YAAE,sBAAsB,EAAE,IAAI,CAAA;SAAE,CAAC;KAChD,CAAC;IACF,4CAA4C;IAC5C,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,qEAAqE;IACrE,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE,kCAAkC;IAClC,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;CAChD"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EACV,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EACjB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAqH1D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,2BAA2B;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,kDAAkD;IAClD,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,mFAAmF;IACnF,QAAQ,EAAE,cAAc,GAAG;QACzB,YAAY,EAAE;YAAE,gBAAgB,EAAE,mBAAmB,EAAE,CAAA;SAAE,CAAC;KAC3D,CAAC;IACF,wFAAwF;IACxF,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,oFAAoF;IACpF,YAAY,CAAC,EAAE,oBAAoB,CAAC;IACpC,qEAAqE;IACrE,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE,kCAAkC;IAClC,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;CAChD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,qBAAqB,GAAG,IAAI,CA0CzE;AAMD;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,2BAA2B,GAAG,IAAI,CAarF;AAED;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,4EAA4E;IAC5E,QAAQ,EAAE,cAAc,GAAG;QACzB,YAAY,EAAE;YAAE,sBAAsB,EAAE,IAAI,CAAA;SAAE,CAAC;KAChD,CAAC;IACF,4CAA4C;IAC5C,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,qEAAqE;IACrE,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE,kCAAkC;IAClC,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;CAChD"}
package/dist/server.js CHANGED
@@ -48,6 +48,30 @@ function validateGetParams(params) {
48
48
  function validateMatchParams(params) {
49
49
  return validateStringFields(params, ["title"]);
50
50
  }
51
+ /**
52
+ * Validate BookSearchParams - requires either isbn or query
53
+ */
54
+ function validateBookSearchParams(params) {
55
+ if (params === null || params === undefined) {
56
+ return { field: "params", message: "params is required" };
57
+ }
58
+ if (typeof params !== "object") {
59
+ return { field: "params", message: "params must be an object" };
60
+ }
61
+ const obj = params;
62
+ const hasIsbn = obj.isbn !== undefined && obj.isbn !== null && obj.isbn !== "";
63
+ const hasQuery = obj.query !== undefined && obj.query !== null && obj.query !== "";
64
+ if (!hasIsbn && !hasQuery) {
65
+ return { field: "isbn/query", message: "either isbn or query is required" };
66
+ }
67
+ return null;
68
+ }
69
+ /**
70
+ * Validate BookMatchParams
71
+ */
72
+ function validateBookMatchParams(params) {
73
+ return validateStringFields(params, ["title"]);
74
+ }
51
75
  /**
52
76
  * Create an INVALID_PARAMS error response
53
77
  */
@@ -112,15 +136,23 @@ function invalidParamsError(id, error) {
112
136
  * ```
113
137
  */
114
138
  export function createMetadataPlugin(options) {
115
- const { manifest, provider, onInitialize, logLevel = "info" } = options;
139
+ const { manifest, provider, bookProvider, onInitialize, logLevel = "info" } = options;
116
140
  const logger = createLogger({ name: manifest.name, level: logLevel });
141
+ // Validate that required providers are present based on manifest
142
+ const contentTypes = manifest.capabilities.metadataProvider;
143
+ if (contentTypes.includes("series") && !provider) {
144
+ throw new Error("Series metadata provider is required when 'series' is in metadataProvider capabilities");
145
+ }
146
+ if (contentTypes.includes("book") && !bookProvider) {
147
+ throw new Error("Book metadata provider is required when 'book' is in metadataProvider capabilities");
148
+ }
117
149
  logger.info(`Starting plugin: ${manifest.displayName} v${manifest.version}`);
118
150
  const rl = createInterface({
119
151
  input: process.stdin,
120
152
  terminal: false,
121
153
  });
122
154
  rl.on("line", (line) => {
123
- void handleLine(line, manifest, provider, onInitialize, logger);
155
+ void handleLine(line, manifest, provider, bookProvider, onInitialize, logger);
124
156
  });
125
157
  rl.on("close", () => {
126
158
  logger.info("stdin closed, shutting down");
@@ -158,7 +190,7 @@ export function createSeriesMetadataPlugin(options) {
158
190
  // =============================================================================
159
191
  // Internal Implementation
160
192
  // =============================================================================
161
- async function handleLine(line, manifest, provider, onInitialize, logger) {
193
+ async function handleLine(line, manifest, provider, bookProvider, onInitialize, logger) {
162
194
  const trimmed = line.trim();
163
195
  if (!trimmed)
164
196
  return;
@@ -167,7 +199,7 @@ async function handleLine(line, manifest, provider, onInitialize, logger) {
167
199
  const request = JSON.parse(trimmed);
168
200
  id = request.id;
169
201
  logger.debug(`Received request: ${request.method}`, { id: request.id });
170
- const response = await handleRequest(request, manifest, provider, onInitialize, logger);
202
+ const response = await handleRequest(request, manifest, provider, bookProvider, onInitialize, logger);
171
203
  // Shutdown handler writes response directly and returns null
172
204
  if (response !== null) {
173
205
  writeResponse(response);
@@ -206,7 +238,7 @@ async function handleLine(line, manifest, provider, onInitialize, logger) {
206
238
  }
207
239
  }
208
240
  }
209
- async function handleRequest(request, manifest, provider, onInitialize, logger) {
241
+ async function handleRequest(request, manifest, provider, bookProvider, onInitialize, logger) {
210
242
  const { method, params, id } = request;
211
243
  switch (method) {
212
244
  case "initialize":
@@ -240,8 +272,20 @@ async function handleRequest(request, manifest, provider, onInitialize, logger)
240
272
  // Return a sentinel that handleLine will recognize and skip normal writeResponse
241
273
  return null;
242
274
  }
243
- // Series metadata methods (scoped by content type)
275
+ // =========================================================================
276
+ // Series metadata methods
277
+ // =========================================================================
244
278
  case "metadata/series/search": {
279
+ if (!provider) {
280
+ return {
281
+ jsonrpc: "2.0",
282
+ id,
283
+ error: {
284
+ code: JSON_RPC_ERROR_CODES.METHOD_NOT_FOUND,
285
+ message: "This plugin does not support series metadata",
286
+ },
287
+ };
288
+ }
245
289
  const validationError = validateSearchParams(params);
246
290
  if (validationError) {
247
291
  return invalidParamsError(id, validationError);
@@ -253,6 +297,16 @@ async function handleRequest(request, manifest, provider, onInitialize, logger)
253
297
  };
254
298
  }
255
299
  case "metadata/series/get": {
300
+ if (!provider) {
301
+ return {
302
+ jsonrpc: "2.0",
303
+ id,
304
+ error: {
305
+ code: JSON_RPC_ERROR_CODES.METHOD_NOT_FOUND,
306
+ message: "This plugin does not support series metadata",
307
+ },
308
+ };
309
+ }
256
310
  const validationError = validateGetParams(params);
257
311
  if (validationError) {
258
312
  return invalidParamsError(id, validationError);
@@ -264,13 +318,23 @@ async function handleRequest(request, manifest, provider, onInitialize, logger)
264
318
  };
265
319
  }
266
320
  case "metadata/series/match": {
321
+ if (!provider) {
322
+ return {
323
+ jsonrpc: "2.0",
324
+ id,
325
+ error: {
326
+ code: JSON_RPC_ERROR_CODES.METHOD_NOT_FOUND,
327
+ message: "This plugin does not support series metadata",
328
+ },
329
+ };
330
+ }
267
331
  if (!provider.match) {
268
332
  return {
269
333
  jsonrpc: "2.0",
270
334
  id,
271
335
  error: {
272
336
  code: JSON_RPC_ERROR_CODES.METHOD_NOT_FOUND,
273
- message: "This plugin does not support match",
337
+ message: "This plugin does not support series match",
274
338
  },
275
339
  };
276
340
  }
@@ -284,10 +348,82 @@ async function handleRequest(request, manifest, provider, onInitialize, logger)
284
348
  result: await provider.match(params),
285
349
  };
286
350
  }
287
- // Future: book metadata methods
288
- // case "metadata/book/search":
289
- // case "metadata/book/get":
290
- // case "metadata/book/match":
351
+ // =========================================================================
352
+ // Book metadata methods
353
+ // =========================================================================
354
+ case "metadata/book/search": {
355
+ if (!bookProvider) {
356
+ return {
357
+ jsonrpc: "2.0",
358
+ id,
359
+ error: {
360
+ code: JSON_RPC_ERROR_CODES.METHOD_NOT_FOUND,
361
+ message: "This plugin does not support book metadata",
362
+ },
363
+ };
364
+ }
365
+ const validationError = validateBookSearchParams(params);
366
+ if (validationError) {
367
+ return invalidParamsError(id, validationError);
368
+ }
369
+ return {
370
+ jsonrpc: "2.0",
371
+ id,
372
+ result: await bookProvider.search(params),
373
+ };
374
+ }
375
+ case "metadata/book/get": {
376
+ if (!bookProvider) {
377
+ return {
378
+ jsonrpc: "2.0",
379
+ id,
380
+ error: {
381
+ code: JSON_RPC_ERROR_CODES.METHOD_NOT_FOUND,
382
+ message: "This plugin does not support book metadata",
383
+ },
384
+ };
385
+ }
386
+ const validationError = validateGetParams(params);
387
+ if (validationError) {
388
+ return invalidParamsError(id, validationError);
389
+ }
390
+ return {
391
+ jsonrpc: "2.0",
392
+ id,
393
+ result: await bookProvider.get(params),
394
+ };
395
+ }
396
+ case "metadata/book/match": {
397
+ if (!bookProvider) {
398
+ return {
399
+ jsonrpc: "2.0",
400
+ id,
401
+ error: {
402
+ code: JSON_RPC_ERROR_CODES.METHOD_NOT_FOUND,
403
+ message: "This plugin does not support book metadata",
404
+ },
405
+ };
406
+ }
407
+ if (!bookProvider.match) {
408
+ return {
409
+ jsonrpc: "2.0",
410
+ id,
411
+ error: {
412
+ code: JSON_RPC_ERROR_CODES.METHOD_NOT_FOUND,
413
+ message: "This plugin does not support book match",
414
+ },
415
+ };
416
+ }
417
+ const validationError = validateBookMatchParams(params);
418
+ if (validationError) {
419
+ return invalidParamsError(id, validationError);
420
+ }
421
+ return {
422
+ jsonrpc: "2.0",
423
+ id,
424
+ result: await bookProvider.match(params),
425
+ };
426
+ }
291
427
  default:
292
428
  return {
293
429
  jsonrpc: "2.0",
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAe,MAAM,aAAa,CAAC;AAcxD,OAAO,EACL,oBAAoB,GAIrB,MAAM,gBAAgB,CAAC;AAWxB;;GAEG;AACH,SAAS,oBAAoB,CAAC,MAAe,EAAE,MAAgB;IAC7D,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QAC5C,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC;IAC5D,CAAC;IACD,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC;IAClE,CAAC;IAED,MAAM,GAAG,GAAG,MAAiC,CAAC;IAC9C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;QACzB,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAC1C,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,KAAK,cAAc,EAAE,CAAC;QACpD,CAAC;QACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,KAAK,mBAAmB,EAAE,CAAC;QACzD,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACxB,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,KAAK,kBAAkB,EAAE,CAAC;QACxD,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB,CAAC,MAAe;IAC3C,OAAO,oBAAoB,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,MAAe;IACxC,OAAO,oBAAoB,CAAC,MAAM,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;AACtD,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,MAAe;IAC1C,OAAO,oBAAoB,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,SAAS,wBAAwB,CAAC,MAAe;IAC/C,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QAC5C,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC;IAC5D,CAAC;IACD,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC;IAClE,CAAC;IAED,MAAM,GAAG,GAAG,MAAiC,CAAC;IAC9C,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC;IAC/E,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,KAAK,SAAS,IAAI,GAAG,CAAC,KAAK,KAAK,IAAI,IAAI,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC;IAEnF,IAAI,CAAC,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC1B,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,kCAAkC,EAAE,CAAC;IAC9E,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,uBAAuB,CAAC,MAAe;IAC9C,OAAO,oBAAoB,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CAAC,EAA0B,EAAE,KAAsB;IAC5E,OAAO;QACL,OAAO,EAAE,KAAK;QACd,EAAE;QACF,KAAK,EAAE;YACL,IAAI,EAAE,oBAAoB,CAAC,cAAc;YACzC,OAAO,EAAE,mBAAmB,KAAK,CAAC,OAAO,EAAE;YAC3C,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE;SACb;KAClB,CAAC;AACJ,CAAC;AA8BD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAA8B;IACjE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC;IACtF,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAEtE,iEAAiE;IACjE,MAAM,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC,gBAAgB,CAAC;IAC5D,IAAI,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CACb,wFAAwF,CACzF,CAAC;IACJ,CAAC;IACD,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;QACnD,MAAM,IAAI,KAAK,CACb,oFAAoF,CACrF,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,oBAAoB,QAAQ,CAAC,WAAW,KAAK,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IAE7E,MAAM,EAAE,GAAG,eAAe,CAAC;QACzB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,QAAQ,EAAE,KAAK;KAChB,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;QACrB,KAAK,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;IAChF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;QAClB,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,yBAAyB;IACzB,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,KAAK,EAAE,EAAE;QACxC,MAAM,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;QAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,MAAM,EAAE,EAAE;QAC1C,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;AACL,CAAC;AAED,gFAAgF;AAChF,uCAAuC;AACvC,gFAAgF;AAEhF;;GAEG;AACH,MAAM,UAAU,0BAA0B,CAAC,OAAoC;IAC7E,uCAAuC;IACvC,MAAM,UAAU,GAA0B;QACxC,GAAG,OAAO;QACV,QAAQ,EAAE;YACR,GAAG,OAAO,CAAC,QAAQ;YACnB,YAAY,EAAE;gBACZ,GAAG,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAChC,gBAAgB,EAAE,CAAC,QAAQ,CAA0B;aACtD;SACF;KACF,CAAC;IACF,oBAAoB,CAAC,UAAU,CAAC,CAAC;AACnC,CAAC;AAkBD,gFAAgF;AAChF,0BAA0B;AAC1B,gFAAgF;AAEhF,KAAK,UAAU,UAAU,CACvB,IAAY,EACZ,QAAwB,EACxB,QAAsC,EACtC,YAA8C,EAC9C,YAA8E,EAC9E,MAAc;IAEd,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,CAAC,OAAO;QAAE,OAAO;IAErB,IAAI,EAAE,GAA2B,IAAI,CAAC;IAEtC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAmB,CAAC;QACtD,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;QAEhB,MAAM,CAAC,KAAK,CAAC,qBAAqB,OAAO,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;QAExE,MAAM,QAAQ,GAAG,MAAM,aAAa,CAClC,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,MAAM,CACP,CAAC;QACF,6DAA6D;QAC7D,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACtB,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;YACjC,mBAAmB;YACnB,aAAa,CAAC;gBACZ,OAAO,EAAE,KAAK;gBACd,EAAE,EAAE,IAAI;gBACR,KAAK,EAAE;oBACL,IAAI,EAAE,oBAAoB,CAAC,WAAW;oBACtC,OAAO,EAAE,2BAA2B;iBACrC;aACF,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;YACxC,aAAa,CAAC;gBACZ,OAAO,EAAE,KAAK;gBACd,EAAE;gBACF,KAAK,EAAE,KAAK,CAAC,cAAc,EAAE;aAC9B,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;YACzE,MAAM,CAAC,KAAK,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;YACtC,aAAa,CAAC;gBACZ,OAAO,EAAE,KAAK;gBACd,EAAE;gBACF,KAAK,EAAE;oBACL,IAAI,EAAE,oBAAoB,CAAC,cAAc;oBACzC,OAAO;iBACR;aACF,CAAC,CAAC;QACL,CAAC;IACH,CAAC;AACH,CAAC;AAED,KAAK,UAAU,aAAa,CAC1B,OAAuB,EACvB,QAAwB,EACxB,QAAsC,EACtC,YAA8C,EAC9C,YAA8E,EAC9E,MAAc;IAEd,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC;IAEvC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,YAAY;YACf,yEAAyE;YACzE,IAAI,YAAY,EAAE,CAAC;gBACjB,MAAM,YAAY,CAAC,MAA0B,CAAC,CAAC;YACjD,CAAC;YACD,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,EAAE;gBACF,MAAM,EAAE,QAAQ;aACjB,CAAC;QAEJ,KAAK,MAAM;YACT,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,EAAE;gBACF,MAAM,EAAE,MAAM;aACf,CAAC;QAEJ,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YAClC,2EAA2E;YAC3E,MAAM,QAAQ,GAAoB;gBAChC,OAAO,EAAE,KAAK;gBACd,EAAE;gBACF,MAAM,EAAE,IAAI;aACb,CAAC;YACF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE;gBACzD,0DAA0D;gBAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;YACH,iFAAiF;YACjF,OAAO,IAAkC,CAAC;QAC5C,CAAC;QAED,4EAA4E;QAC5E,0BAA0B;QAC1B,4EAA4E;QAC5E,KAAK,wBAAwB,CAAC,CAAC,CAAC;YAC9B,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,EAAE;oBACF,KAAK,EAAE;wBACL,IAAI,EAAE,oBAAoB,CAAC,gBAAgB;wBAC3C,OAAO,EAAE,8CAA8C;qBACxD;iBACF,CAAC;YACJ,CAAC;YACD,MAAM,eAAe,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;YACrD,IAAI,eAAe,EAAE,CAAC;gBACpB,OAAO,kBAAkB,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC;YACjD,CAAC;YACD,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,EAAE;gBACF,MAAM,EAAE,MAAM,QAAQ,CAAC,MAAM,CAAC,MAA8B,CAAC;aAC9D,CAAC;QACJ,CAAC;QAED,KAAK,qBAAqB,CAAC,CAAC,CAAC;YAC3B,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,EAAE;oBACF,KAAK,EAAE;wBACL,IAAI,EAAE,oBAAoB,CAAC,gBAAgB;wBAC3C,OAAO,EAAE,8CAA8C;qBACxD;iBACF,CAAC;YACJ,CAAC;YACD,MAAM,eAAe,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAClD,IAAI,eAAe,EAAE,CAAC;gBACpB,OAAO,kBAAkB,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC;YACjD,CAAC;YACD,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,EAAE;gBACF,MAAM,EAAE,MAAM,QAAQ,CAAC,GAAG,CAAC,MAA2B,CAAC;aACxD,CAAC;QACJ,CAAC;QAED,KAAK,uBAAuB,CAAC,CAAC,CAAC;YAC7B,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,EAAE;oBACF,KAAK,EAAE;wBACL,IAAI,EAAE,oBAAoB,CAAC,gBAAgB;wBAC3C,OAAO,EAAE,8CAA8C;qBACxD;iBACF,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;gBACpB,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,EAAE;oBACF,KAAK,EAAE;wBACL,IAAI,EAAE,oBAAoB,CAAC,gBAAgB;wBAC3C,OAAO,EAAE,2CAA2C;qBACrD;iBACF,CAAC;YACJ,CAAC;YACD,MAAM,eAAe,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;YACpD,IAAI,eAAe,EAAE,CAAC;gBACpB,OAAO,kBAAkB,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC;YACjD,CAAC;YACD,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,EAAE;gBACF,MAAM,EAAE,MAAM,QAAQ,CAAC,KAAK,CAAC,MAA6B,CAAC;aAC5D,CAAC;QACJ,CAAC;QAED,4EAA4E;QAC5E,wBAAwB;QACxB,4EAA4E;QAC5E,KAAK,sBAAsB,CAAC,CAAC,CAAC;YAC5B,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,EAAE;oBACF,KAAK,EAAE;wBACL,IAAI,EAAE,oBAAoB,CAAC,gBAAgB;wBAC3C,OAAO,EAAE,4CAA4C;qBACtD;iBACF,CAAC;YACJ,CAAC;YACD,MAAM,eAAe,GAAG,wBAAwB,CAAC,MAAM,CAAC,CAAC;YACzD,IAAI,eAAe,EAAE,CAAC;gBACpB,OAAO,kBAAkB,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC;YACjD,CAAC;YACD,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,EAAE;gBACF,MAAM,EAAE,MAAM,YAAY,CAAC,MAAM,CAAC,MAA0B,CAAC;aAC9D,CAAC;QACJ,CAAC;QAED,KAAK,mBAAmB,CAAC,CAAC,CAAC;YACzB,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,EAAE;oBACF,KAAK,EAAE;wBACL,IAAI,EAAE,oBAAoB,CAAC,gBAAgB;wBAC3C,OAAO,EAAE,4CAA4C;qBACtD;iBACF,CAAC;YACJ,CAAC;YACD,MAAM,eAAe,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAClD,IAAI,eAAe,EAAE,CAAC;gBACpB,OAAO,kBAAkB,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC;YACjD,CAAC;YACD,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,EAAE;gBACF,MAAM,EAAE,MAAM,YAAY,CAAC,GAAG,CAAC,MAA2B,CAAC;aAC5D,CAAC;QACJ,CAAC;QAED,KAAK,qBAAqB,CAAC,CAAC,CAAC;YAC3B,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,EAAE;oBACF,KAAK,EAAE;wBACL,IAAI,EAAE,oBAAoB,CAAC,gBAAgB;wBAC3C,OAAO,EAAE,4CAA4C;qBACtD;iBACF,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;gBACxB,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,EAAE;oBACF,KAAK,EAAE;wBACL,IAAI,EAAE,oBAAoB,CAAC,gBAAgB;wBAC3C,OAAO,EAAE,yCAAyC;qBACnD;iBACF,CAAC;YACJ,CAAC;YACD,MAAM,eAAe,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC;YACxD,IAAI,eAAe,EAAE,CAAC;gBACpB,OAAO,kBAAkB,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC;YACjD,CAAC;YACD,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,EAAE;gBACF,MAAM,EAAE,MAAM,YAAY,CAAC,KAAK,CAAC,MAAyB,CAAC;aAC5D,CAAC;QACJ,CAAC;QAED;YACE,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,EAAE;gBACF,KAAK,EAAE;oBACL,IAAI,EAAE,oBAAoB,CAAC,gBAAgB;oBAC3C,OAAO,EAAE,qBAAqB,MAAM,EAAE;iBACvC;aACF,CAAC;IACN,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,QAAyB;IAC9C,iDAAiD;IACjD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACxD,CAAC"}
@@ -16,28 +16,23 @@
16
16
  * };
17
17
  * ```
18
18
  */
19
- import type { MetadataGetParams, MetadataMatchParams, MetadataMatchResponse, MetadataSearchParams, MetadataSearchResponse, PluginSeriesMetadata } from "./protocol.js";
19
+ import type { BookMatchParams, BookSearchParams, MetadataGetParams, MetadataMatchParams, MetadataMatchResponse, MetadataSearchParams, MetadataSearchResponse, PluginBookMetadata, PluginSeriesMetadata } from "./protocol.js";
20
20
  /**
21
21
  * Content types that a metadata provider can support.
22
22
  * Plugins declare which types they support in capabilities.metadataProvider.
23
23
  */
24
24
  export type MetadataContentType = "series" | "book";
25
25
  /**
26
- * Interface for plugins that provide metadata.
26
+ * Interface for plugins that provide series metadata.
27
27
  *
28
28
  * Plugins implementing this capability can:
29
- * - Search for content by query
29
+ * - Search for series by query
30
30
  * - Get full metadata by external ID
31
- * - Optionally match existing content to provider entries
32
- *
33
- * The same interface is used for both series and book metadata.
34
- * The content type is determined by the method being called:
35
- * - metadata/series/search -> provider.search()
36
- * - metadata/book/search -> provider.search() (when book support is added)
31
+ * - Optionally match existing series to provider entries
37
32
  */
38
33
  export interface MetadataProvider {
39
34
  /**
40
- * Search for content matching a query
35
+ * Search for series matching a query
41
36
  *
42
37
  * @param params - Search parameters
43
38
  * @returns Search results with relevance scores
@@ -47,7 +42,7 @@ export interface MetadataProvider {
47
42
  * Get full metadata for a specific external ID
48
43
  *
49
44
  * @param params - Get parameters including external ID
50
- * @returns Full metadata
45
+ * @returns Full series metadata
51
46
  */
52
47
  get(params: MetadataGetParams): Promise<PluginSeriesMetadata>;
53
48
  /**
@@ -61,6 +56,41 @@ export interface MetadataProvider {
61
56
  */
62
57
  match?(params: MetadataMatchParams): Promise<MetadataMatchResponse>;
63
58
  }
59
+ /**
60
+ * Interface for plugins that provide book metadata.
61
+ *
62
+ * Plugins implementing this capability can:
63
+ * - Search for books by ISBN or title/author
64
+ * - Get full metadata by external ID
65
+ * - Optionally match existing books to provider entries
66
+ */
67
+ export interface BookMetadataProvider {
68
+ /**
69
+ * Search for books matching a query or ISBN
70
+ *
71
+ * @param params - Search parameters (isbn, query, author, year)
72
+ * @returns Search results with relevance scores
73
+ */
74
+ search(params: BookSearchParams): Promise<MetadataSearchResponse>;
75
+ /**
76
+ * Get full book metadata for a specific external ID
77
+ *
78
+ * @param params - Get parameters including external ID
79
+ * @returns Full book metadata
80
+ */
81
+ get(params: MetadataGetParams): Promise<PluginBookMetadata>;
82
+ /**
83
+ * Find the best match for an existing book (optional)
84
+ *
85
+ * This is used for auto-matching during library scans.
86
+ * ISBN matching is tried first if provided, then title/author fallback.
87
+ * If not implemented, Codex will use search() and pick the top result.
88
+ *
89
+ * @param params - Match parameters including title, authors, ISBN
90
+ * @returns Best match with confidence score
91
+ */
92
+ match?(params: BookMatchParams): Promise<MetadataMatchResponse>;
93
+ }
64
94
  /**
65
95
  * Interface for plugins that sync reading progress (syncProvider: true)
66
96
  * @future v2 - Methods will be defined when sync capability is implemented
@@ -74,10 +104,15 @@ export interface SyncProvider {
74
104
  export interface RecommendationProvider {
75
105
  }
76
106
  /**
77
- * Partial metadata provider - allows implementing only some methods
107
+ * Partial series metadata provider - allows implementing only some methods
78
108
  * Use this for testing or gradual implementation
79
109
  */
80
110
  export type PartialMetadataProvider = Partial<MetadataProvider>;
111
+ /**
112
+ * Partial book metadata provider - allows implementing only some methods
113
+ * Use this for testing or gradual implementation
114
+ */
115
+ export type PartialBookMetadataProvider = Partial<BookMetadataProvider>;
81
116
  /**
82
117
  * @deprecated Use MetadataProvider instead
83
118
  */
@@ -1 +1 @@
1
- {"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../src/types/capabilities.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EACV,iBAAiB,EACjB,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,EACrB,MAAM,eAAe,CAAC;AAMvB;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,MAAM,CAAC;AAMpD;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;;OAKG;IACH,MAAM,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAEtE;;;;;OAKG;IACH,GAAG,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAE9D;;;;;;;;OAQG;IACH,KAAK,CAAC,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;CACrE;AAMD;;;GAGG;AAEH,MAAM,WAAW,YAAY;CAAG;AAEhC;;;GAGG;AAEH,MAAM,WAAW,sBAAsB;CAAG;AAM1C;;;GAGG;AACH,MAAM,MAAM,uBAAuB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAMhE;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG,gBAAgB,CAAC;AAEtD;;GAEG;AACH,MAAM,MAAM,6BAA6B,GAAG,uBAAuB,CAAC"}
1
+ {"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../src/types/capabilities.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,EAClB,oBAAoB,EACrB,MAAM,eAAe,CAAC;AAMvB;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,MAAM,CAAC;AAMpD;;;;;;;GAOG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;;OAKG;IACH,MAAM,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAEtE;;;;;OAKG;IACH,GAAG,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAE9D;;;;;;;;OAQG;IACH,KAAK,CAAC,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;CACrE;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;;;OAKG;IACH,MAAM,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAElE;;;;;OAKG;IACH,GAAG,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAE5D;;;;;;;;;OASG;IACH,KAAK,CAAC,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;CACjE;AAMD;;;GAGG;AAEH,MAAM,WAAW,YAAY;CAAG;AAEhC;;;GAGG;AAEH,MAAM,WAAW,sBAAsB;CAAG;AAM1C;;;GAGG;AACH,MAAM,MAAM,uBAAuB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAEhE;;;GAGG;AACH,MAAM,MAAM,2BAA2B,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAMxE;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG,gBAAgB,CAAC;AAEtD;;GAEG;AACH,MAAM,MAAM,6BAA6B,GAAG,uBAAuB,CAAC"}
@@ -1,9 +1,9 @@
1
1
  /**
2
2
  * Re-export all types
3
3
  */
4
- export type { MetadataContentType, MetadataProvider, PartialMetadataProvider, PartialSeriesMetadataProvider, RecommendationProvider, SeriesMetadataProvider, SyncProvider, } from "./capabilities.js";
4
+ export type { BookMetadataProvider, MetadataContentType, MetadataProvider, PartialBookMetadataProvider, PartialMetadataProvider, PartialSeriesMetadataProvider, RecommendationProvider, SeriesMetadataProvider, SyncProvider, } from "./capabilities.js";
5
5
  export type { ConfigField, ConfigSchema, CredentialField, PluginCapabilities, PluginManifest, } from "./manifest.js";
6
6
  export { hasBookMetadataProvider, hasSeriesMetadataProvider } from "./manifest.js";
7
- export type { AlternateTitle, ExternalLink, ExternalLinkType, ExternalRating, MetadataGetParams, MetadataMatchParams, MetadataMatchResponse, MetadataSearchParams, MetadataSearchResponse, PluginSeriesMetadata, ReadingDirection, SearchResult, SearchResultPreview, SeriesStatus, } from "./protocol.js";
7
+ export type { AlternateTitle, BookAuthor, BookAuthorRole, BookAward, BookCover, BookCoverSize, BookMatchParams, BookSearchParams, ExternalLink, ExternalLinkType, ExternalRating, MetadataGetParams, MetadataMatchParams, MetadataMatchResponse, MetadataSearchParams, MetadataSearchResponse, PluginBookMetadata, PluginSeriesMetadata, ReadingDirection, SearchResult, SearchResultPreview, SeriesStatus, } from "./protocol.js";
8
8
  export * from "./rpc.js";
9
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,YAAY,EAEV,mBAAmB,EACnB,gBAAgB,EAChB,uBAAuB,EACvB,6BAA6B,EAC7B,sBAAsB,EAEtB,sBAAsB,EACtB,YAAY,GACb,MAAM,mBAAmB,CAAC;AAG3B,YAAY,EACV,WAAW,EACX,YAAY,EACZ,eAAe,EACf,kBAAkB,EAClB,cAAc,GACf,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAGnF,YAAY,EACV,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,EACpB,gBAAgB,EAChB,YAAY,EACZ,mBAAmB,EACnB,YAAY,GACb,MAAM,eAAe,CAAC;AACvB,cAAc,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,YAAY,EAEV,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EAChB,2BAA2B,EAC3B,uBAAuB,EACvB,6BAA6B,EAC7B,sBAAsB,EAEtB,sBAAsB,EACtB,YAAY,GACb,MAAM,mBAAmB,CAAC;AAG3B,YAAY,EACV,WAAW,EACX,YAAY,EACZ,eAAe,EACf,kBAAkB,EAClB,cAAc,GACf,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAGnF,YAAY,EAEV,cAAc,EAEd,UAAU,EACV,cAAc,EACd,SAAS,EACT,SAAS,EACT,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,EAChB,cAAc,EAEd,iBAAiB,EACjB,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,YAAY,EACZ,mBAAmB,EACnB,YAAY,GACb,MAAM,eAAe,CAAC;AACvB,cAAc,UAAU,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAuBH,OAAO,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAmBnF,cAAc,UAAU,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAyBH,OAAO,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AA8BnF,cAAc,UAAU,CAAC"}
@@ -49,7 +49,7 @@ export interface SearchResult {
49
49
  * Preview data shown in search result list
50
50
  */
51
51
  export interface SearchResultPreview {
52
- /** Publication status */
52
+ /** Publication status (for series search results) */
53
53
  status?: string;
54
54
  /** Genres */
55
55
  genres: string[];
@@ -59,6 +59,8 @@ export interface SearchResultPreview {
59
59
  description?: string;
60
60
  /** Number of books in the series (if known by the provider) */
61
61
  bookCount?: number;
62
+ /** Author names (for book search results) */
63
+ authors?: string[];
62
64
  }
63
65
  /**
64
66
  * Parameters for metadata/series/get method (and future metadata/book/get)
@@ -184,4 +186,157 @@ export interface MetadataMatchResponse {
184
186
  /** Alternative matches if confidence is low */
185
187
  alternatives?: SearchResult[];
186
188
  }
189
+ /**
190
+ * Parameters for metadata/book/search method
191
+ *
192
+ * Supports both ISBN lookup and title/author search:
193
+ * - If `isbn` is provided, direct ISBN lookup is attempted first (faster, more accurate)
194
+ * - If only `query` is provided, title/author search is used
195
+ * - If both are provided, ISBN is tried first with query as fallback
196
+ */
197
+ export interface BookSearchParams {
198
+ /** ISBN-10 or ISBN-13 (if provided, takes priority over query) */
199
+ isbn?: string;
200
+ /** Search query (title, author, or combined) - used if no ISBN */
201
+ query?: string;
202
+ /** Optional: filter by author name */
203
+ author?: string;
204
+ /** Optional: filter by publication year */
205
+ year?: number;
206
+ /** Maximum number of results to return */
207
+ limit?: number;
208
+ /** Pagination cursor from previous response */
209
+ cursor?: string;
210
+ }
211
+ /**
212
+ * Parameters for metadata/book/match method (auto-matching)
213
+ */
214
+ export interface BookMatchParams {
215
+ /** Book title */
216
+ title: string;
217
+ /** Authors (if known) */
218
+ authors: string[];
219
+ /** ISBN (if available - will be tried first) */
220
+ isbn?: string;
221
+ /** Publication year (if known) */
222
+ year?: number;
223
+ /** Publisher (if known) */
224
+ publisher?: string;
225
+ }
226
+ /**
227
+ * Full book metadata from a provider
228
+ */
229
+ export interface PluginBookMetadata {
230
+ /** External ID from the provider */
231
+ externalId: string;
232
+ /** URL to the book on the provider's website */
233
+ externalUrl: string;
234
+ /** Primary title */
235
+ title?: string;
236
+ /** Subtitle (e.g., "A Novel") */
237
+ subtitle?: string;
238
+ /** Alternative titles with language info */
239
+ alternateTitles: AlternateTitle[];
240
+ /** Full description/summary */
241
+ summary?: string;
242
+ /** Book type (comic, manga, novel, etc.) */
243
+ bookType?: string;
244
+ /** Volume number in series */
245
+ volume?: number;
246
+ /** Chapter number (for single-chapter releases) */
247
+ chapter?: number;
248
+ /** Page count */
249
+ pageCount?: number;
250
+ /** Release date (ISO 8601 format) */
251
+ releaseDate?: string;
252
+ /** Publication year */
253
+ year?: number;
254
+ /** Primary ISBN (ISBN-13 preferred) */
255
+ isbn?: string;
256
+ /** All ISBNs (ISBN-10 and ISBN-13) */
257
+ isbns: string[];
258
+ /** Edition information (e.g., "First Edition", "Revised") */
259
+ edition?: string;
260
+ /** Original title (for translations) */
261
+ originalTitle?: string;
262
+ /** Original publication year */
263
+ originalYear?: number;
264
+ /** Translator name */
265
+ translator?: string;
266
+ /** BCP47 language code (e.g., "en", "ja", "ko") */
267
+ language?: string;
268
+ /** Position in series (e.g., 1.0, 1.5 for specials) */
269
+ seriesPosition?: number;
270
+ /** Total number of books in series (if known) */
271
+ seriesTotal?: number;
272
+ /** Genres (e.g., "Science Fiction", "Romance") */
273
+ genres: string[];
274
+ /** Tags/themes (e.g., "Time Travel", "Space Exploration") */
275
+ tags: string[];
276
+ /** Subjects/topics (library classification) */
277
+ subjects: string[];
278
+ /** Structured authors with roles */
279
+ authors: BookAuthor[];
280
+ /** Artists (for comics/manga) */
281
+ artists: string[];
282
+ /** Publisher name */
283
+ publisher?: string;
284
+ /** Primary cover URL (for backwards compatibility) */
285
+ coverUrl?: string;
286
+ /** Multiple covers with different sizes/sources */
287
+ covers: BookCover[];
288
+ /** Primary external rating */
289
+ rating?: ExternalRating;
290
+ /** Multiple external ratings from different sources */
291
+ externalRatings: ExternalRating[];
292
+ /** Awards received */
293
+ awards: BookAward[];
294
+ /** Links to other sites */
295
+ externalLinks: ExternalLink[];
296
+ }
297
+ /**
298
+ * Structured author with role information
299
+ */
300
+ export interface BookAuthor {
301
+ /** Author's display name */
302
+ name: string;
303
+ /** Author's role */
304
+ role: BookAuthorRole;
305
+ /** Author's name in sort order (e.g., "Doe, Jane") */
306
+ sortName?: string;
307
+ }
308
+ /**
309
+ * Author role in a book
310
+ */
311
+ export type BookAuthorRole = "author" | "coauthor" | "editor" | "translator" | "illustrator" | "contributor";
312
+ /**
313
+ * Book cover with size and source information
314
+ */
315
+ export interface BookCover {
316
+ /** URL to download the cover image */
317
+ url: string;
318
+ /** Image width in pixels (if known) */
319
+ width?: number;
320
+ /** Image height in pixels (if known) */
321
+ height?: number;
322
+ /** Size hint for cover */
323
+ size?: BookCoverSize;
324
+ }
325
+ /**
326
+ * Cover size hint
327
+ */
328
+ export type BookCoverSize = "small" | "medium" | "large";
329
+ /**
330
+ * Book award information
331
+ */
332
+ export interface BookAward {
333
+ /** Award name (e.g., "Hugo Award") */
334
+ name: string;
335
+ /** Year the award was given */
336
+ year?: number;
337
+ /** Award category (e.g., "Best Novel") */
338
+ category?: string;
339
+ /** Whether the book won (true) or was nominated (false) */
340
+ won: boolean;
341
+ }
187
342
  //# sourceMappingURL=protocol.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/types/protocol.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/types/protocol.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ashdev/codex-plugin-sdk",
3
- "version": "1.7.0",
3
+ "version": "1.8.0",
4
4
  "description": "SDK for building Codex plugins",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",