@ashdev/codex-plugin-metadata-echo 1.18.1 → 1.19.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/dist/index.js +162 -23
- package/dist/index.js.map +3 -3
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -34,6 +34,122 @@ var PluginError = class extends Error {
|
|
|
34
34
|
}
|
|
35
35
|
};
|
|
36
36
|
|
|
37
|
+
// node_modules/@ashdev/codex-plugin-sdk/dist/request-context.js
|
|
38
|
+
import { AsyncLocalStorage } from "node:async_hooks";
|
|
39
|
+
var store = new AsyncLocalStorage();
|
|
40
|
+
function runWithParentRequestId(forwardRequestId, fn) {
|
|
41
|
+
return store.run(forwardRequestId, fn);
|
|
42
|
+
}
|
|
43
|
+
function currentParentRequestId() {
|
|
44
|
+
return store.getStore();
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// node_modules/@ashdev/codex-plugin-sdk/dist/host-rpc.js
|
|
48
|
+
var HostRpcError = class extends Error {
|
|
49
|
+
code;
|
|
50
|
+
data;
|
|
51
|
+
constructor(message, code, data) {
|
|
52
|
+
super(message);
|
|
53
|
+
this.code = code;
|
|
54
|
+
this.data = data;
|
|
55
|
+
this.name = "HostRpcError";
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
var HostRpcClient = class {
|
|
59
|
+
// Start the counter high so it can't collide with PluginStorage's id space.
|
|
60
|
+
// `Number.MAX_SAFE_INTEGER` is far above this, so we have plenty of room
|
|
61
|
+
// before wrapping (and we never expect a single plugin lifetime to issue
|
|
62
|
+
// more than ~9 quintillion calls).
|
|
63
|
+
nextId = 1e9;
|
|
64
|
+
pendingRequests = /* @__PURE__ */ new Map();
|
|
65
|
+
writeFn;
|
|
66
|
+
/**
|
|
67
|
+
* @param writeFn - Optional custom write function (defaults to
|
|
68
|
+
* `process.stdout.write`). Useful for testing.
|
|
69
|
+
*/
|
|
70
|
+
constructor(writeFn) {
|
|
71
|
+
this.writeFn = writeFn ?? ((line) => {
|
|
72
|
+
process.stdout.write(line);
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Send a JSON-RPC request to the host and resolve with the result.
|
|
77
|
+
*
|
|
78
|
+
* @param method - JSON-RPC method name (e.g. `"releases/list_tracked"`).
|
|
79
|
+
* @param params - Method-specific params. Pass `undefined` when the method
|
|
80
|
+
* takes no params.
|
|
81
|
+
*/
|
|
82
|
+
async call(method, params) {
|
|
83
|
+
const id = this.nextId++;
|
|
84
|
+
const parent = currentParentRequestId();
|
|
85
|
+
const request = {
|
|
86
|
+
jsonrpc: "2.0",
|
|
87
|
+
id,
|
|
88
|
+
method,
|
|
89
|
+
params,
|
|
90
|
+
...parent !== void 0 ? { parentRequestId: parent } : {}
|
|
91
|
+
};
|
|
92
|
+
return new Promise((resolve, reject) => {
|
|
93
|
+
this.pendingRequests.set(id, {
|
|
94
|
+
resolve: (v) => resolve(v),
|
|
95
|
+
reject
|
|
96
|
+
});
|
|
97
|
+
try {
|
|
98
|
+
this.writeFn(`${JSON.stringify(request)}
|
|
99
|
+
`);
|
|
100
|
+
} catch (err) {
|
|
101
|
+
this.pendingRequests.delete(id);
|
|
102
|
+
const message = err instanceof Error ? err.message : "Unknown write error";
|
|
103
|
+
reject(new HostRpcError(`Failed to send request: ${message}`, -1));
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Process an incoming JSON-RPC response line. Returns `true` if this
|
|
109
|
+
* client owned the response id and resolved it, `false` otherwise (so
|
|
110
|
+
* other clients can try).
|
|
111
|
+
*
|
|
112
|
+
* Called by the plugin server's main loop on every response.
|
|
113
|
+
*/
|
|
114
|
+
handleResponse(line) {
|
|
115
|
+
const trimmed = line.trim();
|
|
116
|
+
if (!trimmed)
|
|
117
|
+
return false;
|
|
118
|
+
let parsed;
|
|
119
|
+
try {
|
|
120
|
+
parsed = JSON.parse(trimmed);
|
|
121
|
+
} catch {
|
|
122
|
+
return false;
|
|
123
|
+
}
|
|
124
|
+
const obj = parsed;
|
|
125
|
+
if (obj.method !== void 0)
|
|
126
|
+
return false;
|
|
127
|
+
const rawId = obj.id;
|
|
128
|
+
if (typeof rawId !== "number")
|
|
129
|
+
return false;
|
|
130
|
+
if (!this.pendingRequests.has(rawId))
|
|
131
|
+
return false;
|
|
132
|
+
const pending = this.pendingRequests.get(rawId);
|
|
133
|
+
if (!pending)
|
|
134
|
+
return false;
|
|
135
|
+
this.pendingRequests.delete(rawId);
|
|
136
|
+
if ("error" in obj && obj.error) {
|
|
137
|
+
const err = obj.error;
|
|
138
|
+
pending.reject(new HostRpcError(err.message, err.code, err.data));
|
|
139
|
+
} else {
|
|
140
|
+
pending.resolve(obj.result);
|
|
141
|
+
}
|
|
142
|
+
return true;
|
|
143
|
+
}
|
|
144
|
+
/** Reject all pending requests (e.g. on shutdown). */
|
|
145
|
+
cancelAll() {
|
|
146
|
+
for (const [, pending] of this.pendingRequests) {
|
|
147
|
+
pending.reject(new HostRpcError("Host RPC client stopped", -1));
|
|
148
|
+
}
|
|
149
|
+
this.pendingRequests.clear();
|
|
150
|
+
}
|
|
151
|
+
};
|
|
152
|
+
|
|
37
153
|
// node_modules/@ashdev/codex-plugin-sdk/dist/logger.js
|
|
38
154
|
var LOG_LEVELS = {
|
|
39
155
|
debug: 0,
|
|
@@ -311,17 +427,19 @@ function createPluginServer(options) {
|
|
|
311
427
|
const logger2 = createLogger({ name: manifest2.name, level: logLevel });
|
|
312
428
|
const prefix = label ? `${label} plugin` : "plugin";
|
|
313
429
|
const storage = new PluginStorage();
|
|
430
|
+
const hostRpc = new HostRpcClient();
|
|
314
431
|
logger2.info(`Starting ${prefix}: ${manifest2.displayName} v${manifest2.version}`);
|
|
315
432
|
const rl = createInterface({
|
|
316
433
|
input: process.stdin,
|
|
317
434
|
terminal: false
|
|
318
435
|
});
|
|
319
436
|
rl.on("line", (line) => {
|
|
320
|
-
void handleLine(line, manifest2, onInitialize, router, logger2, storage);
|
|
437
|
+
void handleLine(line, manifest2, onInitialize, router, logger2, storage, hostRpc);
|
|
321
438
|
});
|
|
322
439
|
rl.on("close", () => {
|
|
323
440
|
logger2.info("stdin closed, shutting down");
|
|
324
441
|
storage.cancelAll();
|
|
442
|
+
hostRpc.cancelAll();
|
|
325
443
|
process.exit(0);
|
|
326
444
|
});
|
|
327
445
|
process.on("uncaughtException", (error) => {
|
|
@@ -339,7 +457,7 @@ function isJsonRpcResponse(obj) {
|
|
|
339
457
|
return false;
|
|
340
458
|
return "result" in obj || "error" in obj;
|
|
341
459
|
}
|
|
342
|
-
async function handleLine(line, manifest2, onInitialize, router, logger2, storage) {
|
|
460
|
+
async function handleLine(line, manifest2, onInitialize, router, logger2, storage, hostRpc) {
|
|
343
461
|
const trimmed = line.trim();
|
|
344
462
|
if (!trimmed)
|
|
345
463
|
return;
|
|
@@ -349,8 +467,10 @@ async function handleLine(line, manifest2, onInitialize, router, logger2, storag
|
|
|
349
467
|
} catch {
|
|
350
468
|
}
|
|
351
469
|
if (parsed && isJsonRpcResponse(parsed)) {
|
|
352
|
-
logger2.debug("Routing
|
|
353
|
-
|
|
470
|
+
logger2.debug("Routing reverse-RPC response", { id: parsed.id });
|
|
471
|
+
if (!hostRpc.handleResponse(trimmed)) {
|
|
472
|
+
storage.handleResponse(trimmed);
|
|
473
|
+
}
|
|
354
474
|
return;
|
|
355
475
|
}
|
|
356
476
|
let id = null;
|
|
@@ -358,7 +478,7 @@ async function handleLine(line, manifest2, onInitialize, router, logger2, storag
|
|
|
358
478
|
const request = parsed ?? JSON.parse(trimmed);
|
|
359
479
|
id = request.id;
|
|
360
480
|
logger2.debug(`Received request: ${request.method}`, { id: request.id });
|
|
361
|
-
const response = await handleRequest(request, manifest2, onInitialize, router, logger2, storage);
|
|
481
|
+
const response = await runWithParentRequestId(request.id, () => handleRequest(request, manifest2, onInitialize, router, logger2, storage, hostRpc));
|
|
362
482
|
if (response !== null) {
|
|
363
483
|
writeResponse(response);
|
|
364
484
|
}
|
|
@@ -392,12 +512,13 @@ async function handleLine(line, manifest2, onInitialize, router, logger2, storag
|
|
|
392
512
|
}
|
|
393
513
|
}
|
|
394
514
|
}
|
|
395
|
-
async function handleRequest(request, manifest2, onInitialize, router, logger2, storage) {
|
|
515
|
+
async function handleRequest(request, manifest2, onInitialize, router, logger2, storage, hostRpc) {
|
|
396
516
|
const { method, params, id } = request;
|
|
397
517
|
switch (method) {
|
|
398
518
|
case "initialize": {
|
|
399
519
|
const initParams = params ?? {};
|
|
400
520
|
initParams.storage = storage;
|
|
521
|
+
initParams.hostRpc = hostRpc;
|
|
401
522
|
if (onInitialize) {
|
|
402
523
|
await onInitialize(initParams);
|
|
403
524
|
}
|
|
@@ -408,6 +529,7 @@ async function handleRequest(request, manifest2, onInitialize, router, logger2,
|
|
|
408
529
|
case "shutdown": {
|
|
409
530
|
logger2.info("Shutdown requested");
|
|
410
531
|
storage.cancelAll();
|
|
532
|
+
hostRpc.cancelAll();
|
|
411
533
|
const response2 = { jsonrpc: "2.0", id, result: null };
|
|
412
534
|
process.stdout.write(`${JSON.stringify(response2)}
|
|
413
535
|
`, () => {
|
|
@@ -521,7 +643,7 @@ function createMetadataPlugin(options) {
|
|
|
521
643
|
// package.json
|
|
522
644
|
var package_default = {
|
|
523
645
|
name: "@ashdev/codex-plugin-metadata-echo",
|
|
524
|
-
version: "1.
|
|
646
|
+
version: "1.19.1",
|
|
525
647
|
description: "Echo metadata plugin for testing Codex plugin protocol",
|
|
526
648
|
main: "dist/index.js",
|
|
527
649
|
bin: "dist/index.js",
|
|
@@ -559,7 +681,7 @@ var package_default = {
|
|
|
559
681
|
node: ">=22.0.0"
|
|
560
682
|
},
|
|
561
683
|
dependencies: {
|
|
562
|
-
"@ashdev/codex-plugin-sdk": "^1.
|
|
684
|
+
"@ashdev/codex-plugin-sdk": "^1.19.1"
|
|
563
685
|
},
|
|
564
686
|
devDependencies: {
|
|
565
687
|
"@biomejs/biome": "^2.4.4",
|
|
@@ -605,12 +727,25 @@ var logger = createLogger({ name: "echo", level: "debug" });
|
|
|
605
727
|
var config = {
|
|
606
728
|
maxResults: DEFAULT_MAX_RESULTS
|
|
607
729
|
};
|
|
730
|
+
function encodeExternalId(baseId, query) {
|
|
731
|
+
return `${baseId}::${encodeURIComponent(query)}`;
|
|
732
|
+
}
|
|
733
|
+
function decodeExternalId(externalId) {
|
|
734
|
+
const sep = externalId.indexOf("::");
|
|
735
|
+
if (sep === -1) {
|
|
736
|
+
return { baseId: externalId, query: null };
|
|
737
|
+
}
|
|
738
|
+
return {
|
|
739
|
+
baseId: externalId.slice(0, sep),
|
|
740
|
+
query: decodeURIComponent(externalId.slice(sep + 2))
|
|
741
|
+
};
|
|
742
|
+
}
|
|
608
743
|
function generateEchoResults(query, maxResults) {
|
|
609
744
|
const results = [];
|
|
610
745
|
const count = Math.min(Math.max(1, maxResults), 20);
|
|
611
746
|
for (let i = 1; i <= count; i++) {
|
|
612
747
|
results.push({
|
|
613
|
-
externalId: `echo-${i}`,
|
|
748
|
+
externalId: encodeExternalId(`echo-${i}`, query),
|
|
614
749
|
title: i === 1 ? `Echo: ${query}` : `Echo Result ${i} for: ${query}`,
|
|
615
750
|
alternateTitles: i === 1 ? [`Echoed Query: ${query}`] : [],
|
|
616
751
|
year: (/* @__PURE__ */ new Date()).getFullYear(),
|
|
@@ -633,16 +768,18 @@ var provider = {
|
|
|
633
768
|
};
|
|
634
769
|
},
|
|
635
770
|
async get(params) {
|
|
771
|
+
const { baseId, query } = decodeExternalId(params.externalId);
|
|
772
|
+
const title = query ?? `Echo Series: ${baseId}`;
|
|
636
773
|
return {
|
|
637
774
|
externalId: params.externalId,
|
|
638
|
-
externalUrl: `https://echo.example.com/series/${
|
|
639
|
-
title
|
|
775
|
+
externalUrl: `https://echo.example.com/series/${baseId}`,
|
|
776
|
+
title,
|
|
640
777
|
alternateTitles: [
|
|
641
|
-
{ title
|
|
642
|
-
{ title:
|
|
643
|
-
{ title:
|
|
778
|
+
{ title, language: "en", titleType: "english" },
|
|
779
|
+
{ title: `${title} (native)`, language: "ja", titleType: "native" },
|
|
780
|
+
{ title: `${title} (romaji)`, language: "ja-Latn", titleType: "romaji" }
|
|
644
781
|
],
|
|
645
|
-
summary: `This is the full metadata for
|
|
782
|
+
summary: `This is the full metadata for "${title}" (id: ${baseId}). It includes a detailed description to test summary handling.`,
|
|
646
783
|
status: "ended",
|
|
647
784
|
year: 2024,
|
|
648
785
|
// Extended metadata fields
|
|
@@ -690,7 +827,7 @@ var provider = {
|
|
|
690
827
|
// External links
|
|
691
828
|
externalLinks: [
|
|
692
829
|
{
|
|
693
|
-
url: `https://echo.example.com/series/${
|
|
830
|
+
url: `https://echo.example.com/series/${baseId}`,
|
|
694
831
|
label: "Echo Provider",
|
|
695
832
|
linkType: "provider"
|
|
696
833
|
},
|
|
@@ -746,7 +883,7 @@ function generateBookEchoResults(params, maxResults) {
|
|
|
746
883
|
for (let i = 1; i <= count; i++) {
|
|
747
884
|
const isIsbnSearch = !!params.isbn;
|
|
748
885
|
results.push({
|
|
749
|
-
externalId: `echo-book-${i}`,
|
|
886
|
+
externalId: encodeExternalId(`echo-book-${i}`, searchTerm),
|
|
750
887
|
title: i === 1 ? `Echo Book: ${searchTerm}` : `Echo Book Result ${i} for: ${searchTerm}`,
|
|
751
888
|
alternateTitles: i === 1 ? [`Book Query: ${searchTerm}`] : [],
|
|
752
889
|
year: params.year || (/* @__PURE__ */ new Date()).getFullYear(),
|
|
@@ -768,16 +905,18 @@ var bookProvider = {
|
|
|
768
905
|
};
|
|
769
906
|
},
|
|
770
907
|
async get(params) {
|
|
908
|
+
const { baseId, query } = decodeExternalId(params.externalId);
|
|
909
|
+
const title = query ?? `Echo Book: ${baseId}`;
|
|
771
910
|
return {
|
|
772
911
|
externalId: params.externalId,
|
|
773
|
-
externalUrl: `https://echo.example.com/book/${
|
|
774
|
-
title
|
|
912
|
+
externalUrl: `https://echo.example.com/book/${baseId}`,
|
|
913
|
+
title,
|
|
775
914
|
subtitle: "A Test Subtitle",
|
|
776
915
|
alternateTitles: [
|
|
777
|
-
{ title
|
|
778
|
-
{ title:
|
|
916
|
+
{ title, language: "en", titleType: "english" },
|
|
917
|
+
{ title: `${title} (native)`, language: "ja", titleType: "native" }
|
|
779
918
|
],
|
|
780
|
-
summary: `This is the full book metadata for
|
|
919
|
+
summary: `This is the full book metadata for "${title}" (id: ${baseId}). It includes a detailed description to test book metadata handling.`,
|
|
781
920
|
bookType: "novel",
|
|
782
921
|
// Book-specific fields
|
|
783
922
|
volume: 1,
|
|
@@ -833,7 +972,7 @@ var bookProvider = {
|
|
|
833
972
|
// External links
|
|
834
973
|
externalLinks: [
|
|
835
974
|
{
|
|
836
|
-
url: `https://echo.example.com/book/${
|
|
975
|
+
url: `https://echo.example.com/book/${baseId}`,
|
|
837
976
|
label: "Echo Provider",
|
|
838
977
|
linkType: "provider"
|
|
839
978
|
},
|
package/dist/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../node_modules/@ashdev/codex-plugin-sdk/src/types/rpc.ts", "../node_modules/@ashdev/codex-plugin-sdk/src/errors.ts", "../node_modules/@ashdev/codex-plugin-sdk/src/logger.ts", "../node_modules/@ashdev/codex-plugin-sdk/src/server.ts", "../node_modules/@ashdev/codex-plugin-sdk/src/storage.ts", "../package.json", "../src/manifest.ts", "../src/index.ts"],
|
|
4
|
-
"sourcesContent": [null, null, null, null, null, "{\n \"name\": \"@ashdev/codex-plugin-metadata-echo\",\n \"version\": \"1.18.1\",\n \"description\": \"Echo metadata plugin for testing Codex plugin protocol\",\n \"main\": \"dist/index.js\",\n \"bin\": \"dist/index.js\",\n \"type\": \"module\",\n \"files\": [\n \"dist\",\n \"README.md\"\n ],\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/AshDevFr/codex.git\",\n \"directory\": \"plugins/metadata-echo\"\n },\n \"scripts\": {\n \"build\": \"esbuild src/index.ts --bundle --platform=node --target=node22 --format=esm --outfile=dist/index.js --sourcemap --banner:js='#!/usr/bin/env node'\",\n \"dev\": \"npm run build -- --watch\",\n \"clean\": \"rm -rf dist\",\n \"start\": \"node dist/index.js\",\n \"lint\": \"biome check .\",\n \"lint:fix\": \"biome check --write .\",\n \"typecheck\": \"tsc --noEmit\",\n \"test\": \"vitest run --passWithNoTests\",\n \"test:watch\": \"vitest\",\n \"prepublishOnly\": \"npm run lint && npm run build\"\n },\n \"keywords\": [\n \"codex\",\n \"plugin\",\n \"echo\",\n \"testing\"\n ],\n \"author\": \"Codex\",\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=22.0.0\"\n },\n \"dependencies\": {\n \"@ashdev/codex-plugin-sdk\": \"^1.18.1\"\n },\n \"devDependencies\": {\n \"@biomejs/biome\": \"^2.4.4\",\n \"@types/node\": \"^22.0.0\",\n \"esbuild\": \"^0.27.3\",\n \"typescript\": \"^5.9.3\",\n \"vitest\": \"^4.0.18\"\n }\n}\n", "import type { MetadataContentType, PluginManifest } from \"@ashdev/codex-plugin-sdk\";\nimport packageJson from \"../package.json\" with { type: \"json\" };\n\n// Default config values\nexport const DEFAULT_MAX_RESULTS = 5;\n\nexport const manifest = {\n name: \"metadata-echo\",\n displayName: \"Echo Metadata Plugin\",\n version: packageJson.version,\n description:\n \"Test metadata plugin that echoes back search queries (supports both series and book metadata)\",\n author: \"Codex\",\n homepage: \"https://github.com/AshDevFr/codex\",\n protocolVersion: \"1.0\",\n capabilities: {\n // Demonstrates multi-content-type plugin support\n metadataProvider: [\"series\", \"book\"] as MetadataContentType[],\n },\n configSchema: {\n description: \"Configuration options for the Echo test plugin\",\n fields: [\n {\n key: \"maxResults\",\n label: \"Maximum Results\",\n description: \"Maximum number of results to return for search queries (1-20)\",\n type: \"number\" as const,\n required: false,\n default: DEFAULT_MAX_RESULTS,\n example: 10,\n },\n ],\n },\n} as const satisfies PluginManifest & {\n capabilities: { metadataProvider: MetadataContentType[] };\n};\n", "/**\n * Echo Plugin - A minimal plugin for testing the Codex plugin protocol\n *\n * This plugin demonstrates the plugin SDK usage and serves as a protocol\n * validation tool. It echoes back search parameters and provides predictable\n * responses for testing.\n *\n * Supports both series and book metadata to demonstrate multi-content-type plugins.\n */\n\nimport {\n type BookMatchParams,\n type BookMetadataProvider,\n type BookSearchParams,\n createLogger,\n createMetadataPlugin,\n type InitializeParams,\n type MetadataGetParams,\n type MetadataMatchParams,\n type MetadataMatchResponse,\n type MetadataProvider,\n type MetadataSearchParams,\n type MetadataSearchResponse,\n type PluginBookMetadata,\n type PluginSeriesMetadata,\n} from \"@ashdev/codex-plugin-sdk\";\nimport { DEFAULT_MAX_RESULTS, manifest } from \"./manifest.js\";\n\nconst logger = createLogger({ name: \"echo\", level: \"debug\" });\n\n// Plugin configuration (set during initialization)\nconst config = {\n maxResults: DEFAULT_MAX_RESULTS,\n};\n\n// Generate echo results based on config\nfunction generateEchoResults(query: string, maxResults: number) {\n const results = [];\n const count = Math.min(Math.max(1, maxResults), 20); // Clamp between 1-20\n\n for (let i = 1; i <= count; i++) {\n results.push({\n externalId: `echo-${i}`,\n title: i === 1 ? `Echo: ${query}` : `Echo Result ${i} for: ${query}`,\n alternateTitles: i === 1 ? [`Echoed Query: ${query}`] : [],\n year: new Date().getFullYear(),\n relevanceScore: Math.max(0.1, 1.0 - (i - 1) * 0.1), // Decreasing relevance\n preview: {\n status: i % 2 === 0 ? \"ongoing\" : \"ended\",\n genres: i === 1 ? [\"Test\", \"Echo\"] : [\"Test\"],\n rating: i === 1 ? 10.0 : undefined,\n description:\n i === 1\n ? `Search query echoed: \"${query}\"`\n : `Result ${i} for testing (maxResults=${count})`,\n },\n });\n }\n\n return results;\n}\n\nconst provider: MetadataProvider = {\n async search(params: MetadataSearchParams): Promise<MetadataSearchResponse> {\n // Echo back the query as search results, respecting maxResults config\n return {\n results: generateEchoResults(params.query, config.maxResults),\n };\n },\n\n async get(params: MetadataGetParams): Promise<PluginSeriesMetadata> {\n // Return metadata based on the external ID with all fields populated for testing\n return {\n externalId: params.externalId,\n externalUrl: `https://echo.example.com/series/${params.externalId}`,\n title: `Echo Series: ${params.externalId}`,\n alternateTitles: [\n { title: `Echo Series: ${params.externalId}`, language: \"en\", titleType: \"english\" },\n { title: `\u30A8\u30B3\u30FC\u30B7\u30EA\u30FC\u30BA: ${params.externalId}`, language: \"ja\", titleType: \"native\" },\n { title: `Echo Romanized: ${params.externalId}`, language: \"ja-Latn\", titleType: \"romaji\" },\n ],\n summary: `This is the full metadata for external ID: ${params.externalId}. It includes a detailed description to test summary handling.`,\n status: \"ended\",\n year: 2024,\n\n // Extended metadata fields\n totalVolumeCount: 10,\n language: \"en\",\n ageRating: 13,\n readingDirection: \"ltr\",\n\n // Taxonomy\n genres: [\"Action\", \"Comedy\", \"Test\", \"Echo\"],\n tags: [\"plugin-test\", \"echo\", \"automation\", \"development\"],\n\n // Credits\n authors: [\n { name: \"Echo Author\", role: \"author\" },\n { name: \"Test Writer\", role: \"author\" },\n ],\n artists: [\"Echo Artist\"],\n publisher: \"Echo Publisher\",\n\n // Media\n coverUrl: \"https://picsum.photos/300/450\",\n bannerUrl: \"https://picsum.photos/800/200\",\n\n // Primary rating\n rating: {\n score: 85,\n voteCount: 100,\n source: \"echo\",\n },\n\n // Multiple external ratings for testing aggregation\n externalRatings: [\n {\n score: 85,\n voteCount: 100,\n source: \"echo\",\n },\n {\n score: 92,\n voteCount: 5000,\n source: \"anilist\",\n },\n {\n score: 88,\n voteCount: 2500,\n source: \"mal\",\n },\n ],\n\n // External links\n externalLinks: [\n {\n url: `https://echo.example.com/series/${params.externalId}`,\n label: \"Echo Provider\",\n linkType: \"provider\",\n },\n {\n url: \"https://official-echo.example.com\",\n label: \"Official Site\",\n linkType: \"official\",\n },\n {\n url: \"https://twitter.com/echo_series\",\n label: \"Twitter\",\n linkType: \"social\",\n },\n {\n url: \"https://store.example.com/echo\",\n label: \"Buy\",\n linkType: \"purchase\",\n },\n ],\n };\n },\n\n async match(params: MetadataMatchParams): Promise<MetadataMatchResponse> {\n // Return a match based on the title\n const normalizedTitle = params.title.toLowerCase().replace(/\\s+/g, \"-\");\n return {\n match: {\n externalId: `match-${normalizedTitle}`,\n title: params.title,\n alternateTitles: [],\n year: params.year,\n relevanceScore: 0.9,\n preview: {\n status: \"ended\",\n genres: [\"Matched\"],\n description: `Matched from title: \"${params.title}\"`,\n },\n },\n confidence: 0.85,\n alternatives: [\n {\n externalId: \"alt-1\",\n title: `Alternative: ${params.title}`,\n alternateTitles: [],\n relevanceScore: 0.6,\n },\n ],\n };\n },\n};\n\n// =============================================================================\n// Book Metadata Provider\n// =============================================================================\n\n// Generate echo results for book search\nfunction generateBookEchoResults(params: BookSearchParams, maxResults: number) {\n const results = [];\n const count = Math.min(Math.max(1, maxResults), 20);\n const searchTerm = params.isbn || params.query || \"unknown\";\n\n for (let i = 1; i <= count; i++) {\n const isIsbnSearch = !!params.isbn;\n results.push({\n externalId: `echo-book-${i}`,\n title: i === 1 ? `Echo Book: ${searchTerm}` : `Echo Book Result ${i} for: ${searchTerm}`,\n alternateTitles: i === 1 ? [`Book Query: ${searchTerm}`] : [],\n year: params.year || new Date().getFullYear(),\n relevanceScore: isIsbnSearch ? 1.0 : Math.max(0.1, 1.0 - (i - 1) * 0.1),\n preview: {\n status: i % 2 === 0 ? \"ongoing\" : \"ended\",\n genres: i === 1 ? [\"Test\", \"Echo\", \"Book\"] : [\"Test\", \"Book\"],\n rating: i === 1 ? 9.0 : undefined,\n description:\n i === 1\n ? `Book search ${isIsbnSearch ? \"by ISBN\" : \"by query\"}: \"${searchTerm}\"`\n : `Book result ${i} for testing`,\n },\n });\n }\n\n return results;\n}\n\nconst bookProvider: BookMetadataProvider = {\n async search(params: BookSearchParams): Promise<MetadataSearchResponse> {\n // Echo back the ISBN or query as search results\n return {\n results: generateBookEchoResults(params, config.maxResults),\n };\n },\n\n async get(params: MetadataGetParams): Promise<PluginBookMetadata> {\n // Return book metadata based on the external ID with all fields populated for testing\n return {\n externalId: params.externalId,\n externalUrl: `https://echo.example.com/book/${params.externalId}`,\n title: `Echo Book: ${params.externalId}`,\n subtitle: \"A Test Subtitle\",\n alternateTitles: [\n { title: `Echo Book: ${params.externalId}`, language: \"en\", titleType: \"english\" },\n { title: `\u30A8\u30B3\u30FC\u30D6\u30C3\u30AF: ${params.externalId}`, language: \"ja\", titleType: \"native\" },\n ],\n summary: `This is the full book metadata for external ID: ${params.externalId}. It includes a detailed description to test book metadata handling.`,\n bookType: \"novel\",\n\n // Book-specific fields\n volume: 1,\n pageCount: 320,\n releaseDate: \"2024-01-15\",\n year: 2024,\n\n // ISBN\n isbn: \"978-0-306-40615-7\",\n isbns: [\"978-0-306-40615-7\", \"0-306-40615-2\"],\n\n // Edition/Translation\n edition: \"First Edition\",\n originalTitle: \"Original Echo Title\",\n originalYear: 2023,\n translator: \"Echo Translator\",\n language: \"en\",\n\n // Series position\n seriesPosition: 1.0,\n seriesTotal: 5,\n\n // Taxonomy\n genres: [\"Fiction\", \"Test\", \"Echo\"],\n tags: [\"plugin-test\", \"echo\", \"book-test\"],\n subjects: [\"Testing\", \"Plugin Development\"],\n\n // Authors with roles\n authors: [\n { name: \"Echo Author\", role: \"author\", sortName: \"Author, Echo\" },\n { name: \"Test Writer\", role: \"co_author\", sortName: \"Writer, Test\" },\n { name: \"Echo Editor\", role: \"editor\" },\n ],\n artists: [\"Echo Illustrator\"],\n publisher: \"Echo Publishing House\",\n\n // Media\n coverUrl: \"https://picsum.photos/300/450\",\n covers: [\n { url: \"https://picsum.photos/300/450\", width: 300, height: 450, size: \"medium\" },\n { url: \"https://picsum.photos/600/900\", width: 600, height: 900, size: \"large\" },\n { url: \"https://picsum.photos/150/225\", width: 150, height: 225, size: \"small\" },\n ],\n\n // Ratings\n rating: {\n score: 88,\n voteCount: 500,\n source: \"echo\",\n },\n externalRatings: [\n { score: 88, voteCount: 500, source: \"echo\" },\n { score: 92, voteCount: 10000, source: \"goodreads\" },\n ],\n\n // Awards\n awards: [\n { name: \"Echo Award\", year: 2024, category: \"Best Test Book\", won: true },\n { name: \"Test Prize\", year: 2024, category: \"Excellence in Testing\", won: false },\n ],\n\n // External links\n externalLinks: [\n {\n url: `https://echo.example.com/book/${params.externalId}`,\n label: \"Echo Provider\",\n linkType: \"provider\",\n },\n {\n url: \"https://goodreads.com/book/echo\",\n label: \"Goodreads\",\n linkType: \"other\",\n },\n {\n url: \"https://amazon.com/echo-book\",\n label: \"Amazon\",\n linkType: \"purchase\",\n },\n ],\n };\n },\n\n async match(params: BookMatchParams): Promise<MetadataMatchResponse> {\n // Return a match based on ISBN (preferred) or title\n const identifier = params.isbn || params.title;\n const normalizedId = identifier.toLowerCase().replace(/[\\s-]/g, \"\");\n const isIsbnMatch = !!params.isbn;\n\n return {\n match: {\n externalId: `match-book-${normalizedId}`,\n title: params.title,\n alternateTitles: [],\n year: params.year,\n relevanceScore: isIsbnMatch ? 1.0 : 0.85,\n preview: {\n status: \"ended\",\n genres: [\"Matched\", \"Book\"],\n description: isIsbnMatch\n ? `Matched by ISBN: ${params.isbn}`\n : `Matched from title: \"${params.title}\"`,\n },\n },\n confidence: isIsbnMatch ? 0.99 : 0.8,\n alternatives: isIsbnMatch\n ? []\n : [\n {\n externalId: \"alt-book-1\",\n title: `Alternative: ${params.title}`,\n alternateTitles: [],\n relevanceScore: 0.5,\n },\n ],\n };\n },\n};\n\n// =============================================================================\n// Plugin Initialization\n// =============================================================================\n\ncreateMetadataPlugin({\n manifest,\n provider, // Series provider\n bookProvider, // Book provider\n logLevel: \"debug\",\n onInitialize(params: InitializeParams) {\n // Read config from initialization params\n const maxResults = params.adminConfig?.maxResults as number | undefined;\n if (maxResults !== undefined) {\n config.maxResults = Math.min(Math.max(1, maxResults), 20); // Clamp 1-20\n }\n logger.info(`Echo plugin initialized (maxResults: ${config.maxResults})`);\n },\n});\n\nlogger.info(\"Echo plugin started\");\n"],
|
|
5
|
-
"mappings": "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",
|
|
3
|
+
"sources": ["../node_modules/@ashdev/codex-plugin-sdk/src/types/rpc.ts", "../node_modules/@ashdev/codex-plugin-sdk/src/errors.ts", "../node_modules/@ashdev/codex-plugin-sdk/src/request-context.ts", "../node_modules/@ashdev/codex-plugin-sdk/src/host-rpc.ts", "../node_modules/@ashdev/codex-plugin-sdk/src/logger.ts", "../node_modules/@ashdev/codex-plugin-sdk/src/server.ts", "../node_modules/@ashdev/codex-plugin-sdk/src/storage.ts", "../package.json", "../src/manifest.ts", "../src/index.ts"],
|
|
4
|
+
"sourcesContent": [null, null, null, null, null, null, null, "{\n \"name\": \"@ashdev/codex-plugin-metadata-echo\",\n \"version\": \"1.19.1\",\n \"description\": \"Echo metadata plugin for testing Codex plugin protocol\",\n \"main\": \"dist/index.js\",\n \"bin\": \"dist/index.js\",\n \"type\": \"module\",\n \"files\": [\n \"dist\",\n \"README.md\"\n ],\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/AshDevFr/codex.git\",\n \"directory\": \"plugins/metadata-echo\"\n },\n \"scripts\": {\n \"build\": \"esbuild src/index.ts --bundle --platform=node --target=node22 --format=esm --outfile=dist/index.js --sourcemap --banner:js='#!/usr/bin/env node'\",\n \"dev\": \"npm run build -- --watch\",\n \"clean\": \"rm -rf dist\",\n \"start\": \"node dist/index.js\",\n \"lint\": \"biome check .\",\n \"lint:fix\": \"biome check --write .\",\n \"typecheck\": \"tsc --noEmit\",\n \"test\": \"vitest run --passWithNoTests\",\n \"test:watch\": \"vitest\",\n \"prepublishOnly\": \"npm run lint && npm run build\"\n },\n \"keywords\": [\n \"codex\",\n \"plugin\",\n \"echo\",\n \"testing\"\n ],\n \"author\": \"Codex\",\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=22.0.0\"\n },\n \"dependencies\": {\n \"@ashdev/codex-plugin-sdk\": \"^1.19.1\"\n },\n \"devDependencies\": {\n \"@biomejs/biome\": \"^2.4.4\",\n \"@types/node\": \"^22.0.0\",\n \"esbuild\": \"^0.27.3\",\n \"typescript\": \"^5.9.3\",\n \"vitest\": \"^4.0.18\"\n }\n}\n", "import type { MetadataContentType, PluginManifest } from \"@ashdev/codex-plugin-sdk\";\nimport packageJson from \"../package.json\" with { type: \"json\" };\n\n// Default config values\nexport const DEFAULT_MAX_RESULTS = 5;\n\nexport const manifest = {\n name: \"metadata-echo\",\n displayName: \"Echo Metadata Plugin\",\n version: packageJson.version,\n description:\n \"Test metadata plugin that echoes back search queries (supports both series and book metadata)\",\n author: \"Codex\",\n homepage: \"https://github.com/AshDevFr/codex\",\n protocolVersion: \"1.0\",\n capabilities: {\n // Demonstrates multi-content-type plugin support\n metadataProvider: [\"series\", \"book\"] as MetadataContentType[],\n },\n configSchema: {\n description: \"Configuration options for the Echo test plugin\",\n fields: [\n {\n key: \"maxResults\",\n label: \"Maximum Results\",\n description: \"Maximum number of results to return for search queries (1-20)\",\n type: \"number\" as const,\n required: false,\n default: DEFAULT_MAX_RESULTS,\n example: 10,\n },\n ],\n },\n} as const satisfies PluginManifest & {\n capabilities: { metadataProvider: MetadataContentType[] };\n};\n", "/**\n * Echo Plugin - A minimal plugin for testing the Codex plugin protocol\n *\n * This plugin demonstrates the plugin SDK usage and serves as a protocol\n * validation tool. It echoes back search parameters and provides predictable\n * responses for testing.\n *\n * Supports both series and book metadata to demonstrate multi-content-type plugins.\n */\n\nimport {\n type BookMatchParams,\n type BookMetadataProvider,\n type BookSearchParams,\n createLogger,\n createMetadataPlugin,\n type InitializeParams,\n type MetadataGetParams,\n type MetadataMatchParams,\n type MetadataMatchResponse,\n type MetadataProvider,\n type MetadataSearchParams,\n type MetadataSearchResponse,\n type PluginBookMetadata,\n type PluginSeriesMetadata,\n} from \"@ashdev/codex-plugin-sdk\";\nimport { DEFAULT_MAX_RESULTS, manifest } from \"./manifest.js\";\n\nconst logger = createLogger({ name: \"echo\", level: \"debug\" });\n\n// Plugin configuration (set during initialization)\nconst config = {\n maxResults: DEFAULT_MAX_RESULTS,\n};\n\n// Encode the original query into the externalId so that get() can recover it\n// later. The protocol only passes externalId to get(), so this is how the\n// echo plugin preserves the user-facing title across calls.\nfunction encodeExternalId(baseId: string, query: string): string {\n return `${baseId}::${encodeURIComponent(query)}`;\n}\n\nfunction decodeExternalId(externalId: string): { baseId: string; query: string | null } {\n const sep = externalId.indexOf(\"::\");\n if (sep === -1) {\n return { baseId: externalId, query: null };\n }\n return {\n baseId: externalId.slice(0, sep),\n query: decodeURIComponent(externalId.slice(sep + 2)),\n };\n}\n\n// Generate echo results based on config\nfunction generateEchoResults(query: string, maxResults: number) {\n const results = [];\n const count = Math.min(Math.max(1, maxResults), 20); // Clamp between 1-20\n\n for (let i = 1; i <= count; i++) {\n results.push({\n externalId: encodeExternalId(`echo-${i}`, query),\n title: i === 1 ? `Echo: ${query}` : `Echo Result ${i} for: ${query}`,\n alternateTitles: i === 1 ? [`Echoed Query: ${query}`] : [],\n year: new Date().getFullYear(),\n relevanceScore: Math.max(0.1, 1.0 - (i - 1) * 0.1), // Decreasing relevance\n preview: {\n status: i % 2 === 0 ? \"ongoing\" : \"ended\",\n genres: i === 1 ? [\"Test\", \"Echo\"] : [\"Test\"],\n rating: i === 1 ? 10.0 : undefined,\n description:\n i === 1\n ? `Search query echoed: \"${query}\"`\n : `Result ${i} for testing (maxResults=${count})`,\n },\n });\n }\n\n return results;\n}\n\nconst provider: MetadataProvider = {\n async search(params: MetadataSearchParams): Promise<MetadataSearchResponse> {\n // Echo back the query as search results, respecting maxResults config\n return {\n results: generateEchoResults(params.query, config.maxResults),\n };\n },\n\n async get(params: MetadataGetParams): Promise<PluginSeriesMetadata> {\n // Recover the original search query (if encoded by search()) so we can\n // echo the user-facing title instead of the opaque external ID.\n const { baseId, query } = decodeExternalId(params.externalId);\n const title = query ?? `Echo Series: ${baseId}`;\n\n // Return metadata based on the external ID with all fields populated for testing\n return {\n externalId: params.externalId,\n externalUrl: `https://echo.example.com/series/${baseId}`,\n title,\n alternateTitles: [\n { title, language: \"en\", titleType: \"english\" },\n { title: `${title} (native)`, language: \"ja\", titleType: \"native\" },\n { title: `${title} (romaji)`, language: \"ja-Latn\", titleType: \"romaji\" },\n ],\n summary: `This is the full metadata for \"${title}\" (id: ${baseId}). It includes a detailed description to test summary handling.`,\n status: \"ended\",\n year: 2024,\n\n // Extended metadata fields\n totalVolumeCount: 10,\n language: \"en\",\n ageRating: 13,\n readingDirection: \"ltr\",\n\n // Taxonomy\n genres: [\"Action\", \"Comedy\", \"Test\", \"Echo\"],\n tags: [\"plugin-test\", \"echo\", \"automation\", \"development\"],\n\n // Credits\n authors: [\n { name: \"Echo Author\", role: \"author\" },\n { name: \"Test Writer\", role: \"author\" },\n ],\n artists: [\"Echo Artist\"],\n publisher: \"Echo Publisher\",\n\n // Media\n coverUrl: \"https://picsum.photos/300/450\",\n bannerUrl: \"https://picsum.photos/800/200\",\n\n // Primary rating\n rating: {\n score: 85,\n voteCount: 100,\n source: \"echo\",\n },\n\n // Multiple external ratings for testing aggregation\n externalRatings: [\n {\n score: 85,\n voteCount: 100,\n source: \"echo\",\n },\n {\n score: 92,\n voteCount: 5000,\n source: \"anilist\",\n },\n {\n score: 88,\n voteCount: 2500,\n source: \"mal\",\n },\n ],\n\n // External links\n externalLinks: [\n {\n url: `https://echo.example.com/series/${baseId}`,\n label: \"Echo Provider\",\n linkType: \"provider\",\n },\n {\n url: \"https://official-echo.example.com\",\n label: \"Official Site\",\n linkType: \"official\",\n },\n {\n url: \"https://twitter.com/echo_series\",\n label: \"Twitter\",\n linkType: \"social\",\n },\n {\n url: \"https://store.example.com/echo\",\n label: \"Buy\",\n linkType: \"purchase\",\n },\n ],\n };\n },\n\n async match(params: MetadataMatchParams): Promise<MetadataMatchResponse> {\n // Return a match based on the title\n const normalizedTitle = params.title.toLowerCase().replace(/\\s+/g, \"-\");\n return {\n match: {\n externalId: `match-${normalizedTitle}`,\n title: params.title,\n alternateTitles: [],\n year: params.year,\n relevanceScore: 0.9,\n preview: {\n status: \"ended\",\n genres: [\"Matched\"],\n description: `Matched from title: \"${params.title}\"`,\n },\n },\n confidence: 0.85,\n alternatives: [\n {\n externalId: \"alt-1\",\n title: `Alternative: ${params.title}`,\n alternateTitles: [],\n relevanceScore: 0.6,\n },\n ],\n };\n },\n};\n\n// =============================================================================\n// Book Metadata Provider\n// =============================================================================\n\n// Generate echo results for book search\nfunction generateBookEchoResults(params: BookSearchParams, maxResults: number) {\n const results = [];\n const count = Math.min(Math.max(1, maxResults), 20);\n const searchTerm = params.isbn || params.query || \"unknown\";\n\n for (let i = 1; i <= count; i++) {\n const isIsbnSearch = !!params.isbn;\n results.push({\n externalId: encodeExternalId(`echo-book-${i}`, searchTerm),\n title: i === 1 ? `Echo Book: ${searchTerm}` : `Echo Book Result ${i} for: ${searchTerm}`,\n alternateTitles: i === 1 ? [`Book Query: ${searchTerm}`] : [],\n year: params.year || new Date().getFullYear(),\n relevanceScore: isIsbnSearch ? 1.0 : Math.max(0.1, 1.0 - (i - 1) * 0.1),\n preview: {\n status: i % 2 === 0 ? \"ongoing\" : \"ended\",\n genres: i === 1 ? [\"Test\", \"Echo\", \"Book\"] : [\"Test\", \"Book\"],\n rating: i === 1 ? 9.0 : undefined,\n description:\n i === 1\n ? `Book search ${isIsbnSearch ? \"by ISBN\" : \"by query\"}: \"${searchTerm}\"`\n : `Book result ${i} for testing`,\n },\n });\n }\n\n return results;\n}\n\nconst bookProvider: BookMetadataProvider = {\n async search(params: BookSearchParams): Promise<MetadataSearchResponse> {\n // Echo back the ISBN or query as search results\n return {\n results: generateBookEchoResults(params, config.maxResults),\n };\n },\n\n async get(params: MetadataGetParams): Promise<PluginBookMetadata> {\n // Recover the original search term encoded in the externalId so the title\n // matches what the user saw in search results.\n const { baseId, query } = decodeExternalId(params.externalId);\n const title = query ?? `Echo Book: ${baseId}`;\n\n // Return book metadata based on the external ID with all fields populated for testing\n return {\n externalId: params.externalId,\n externalUrl: `https://echo.example.com/book/${baseId}`,\n title,\n subtitle: \"A Test Subtitle\",\n alternateTitles: [\n { title, language: \"en\", titleType: \"english\" },\n { title: `${title} (native)`, language: \"ja\", titleType: \"native\" },\n ],\n summary: `This is the full book metadata for \"${title}\" (id: ${baseId}). It includes a detailed description to test book metadata handling.`,\n bookType: \"novel\",\n\n // Book-specific fields\n volume: 1,\n pageCount: 320,\n releaseDate: \"2024-01-15\",\n year: 2024,\n\n // ISBN\n isbn: \"978-0-306-40615-7\",\n isbns: [\"978-0-306-40615-7\", \"0-306-40615-2\"],\n\n // Edition/Translation\n edition: \"First Edition\",\n originalTitle: \"Original Echo Title\",\n originalYear: 2023,\n translator: \"Echo Translator\",\n language: \"en\",\n\n // Series position\n seriesPosition: 1.0,\n seriesTotal: 5,\n\n // Taxonomy\n genres: [\"Fiction\", \"Test\", \"Echo\"],\n tags: [\"plugin-test\", \"echo\", \"book-test\"],\n subjects: [\"Testing\", \"Plugin Development\"],\n\n // Authors with roles\n authors: [\n { name: \"Echo Author\", role: \"author\", sortName: \"Author, Echo\" },\n { name: \"Test Writer\", role: \"co_author\", sortName: \"Writer, Test\" },\n { name: \"Echo Editor\", role: \"editor\" },\n ],\n artists: [\"Echo Illustrator\"],\n publisher: \"Echo Publishing House\",\n\n // Media\n coverUrl: \"https://picsum.photos/300/450\",\n covers: [\n { url: \"https://picsum.photos/300/450\", width: 300, height: 450, size: \"medium\" },\n { url: \"https://picsum.photos/600/900\", width: 600, height: 900, size: \"large\" },\n { url: \"https://picsum.photos/150/225\", width: 150, height: 225, size: \"small\" },\n ],\n\n // Ratings\n rating: {\n score: 88,\n voteCount: 500,\n source: \"echo\",\n },\n externalRatings: [\n { score: 88, voteCount: 500, source: \"echo\" },\n { score: 92, voteCount: 10000, source: \"goodreads\" },\n ],\n\n // Awards\n awards: [\n { name: \"Echo Award\", year: 2024, category: \"Best Test Book\", won: true },\n { name: \"Test Prize\", year: 2024, category: \"Excellence in Testing\", won: false },\n ],\n\n // External links\n externalLinks: [\n {\n url: `https://echo.example.com/book/${baseId}`,\n label: \"Echo Provider\",\n linkType: \"provider\",\n },\n {\n url: \"https://goodreads.com/book/echo\",\n label: \"Goodreads\",\n linkType: \"other\",\n },\n {\n url: \"https://amazon.com/echo-book\",\n label: \"Amazon\",\n linkType: \"purchase\",\n },\n ],\n };\n },\n\n async match(params: BookMatchParams): Promise<MetadataMatchResponse> {\n // Return a match based on ISBN (preferred) or title\n const identifier = params.isbn || params.title;\n const normalizedId = identifier.toLowerCase().replace(/[\\s-]/g, \"\");\n const isIsbnMatch = !!params.isbn;\n\n return {\n match: {\n externalId: `match-book-${normalizedId}`,\n title: params.title,\n alternateTitles: [],\n year: params.year,\n relevanceScore: isIsbnMatch ? 1.0 : 0.85,\n preview: {\n status: \"ended\",\n genres: [\"Matched\", \"Book\"],\n description: isIsbnMatch\n ? `Matched by ISBN: ${params.isbn}`\n : `Matched from title: \"${params.title}\"`,\n },\n },\n confidence: isIsbnMatch ? 0.99 : 0.8,\n alternatives: isIsbnMatch\n ? []\n : [\n {\n externalId: \"alt-book-1\",\n title: `Alternative: ${params.title}`,\n alternateTitles: [],\n relevanceScore: 0.5,\n },\n ],\n };\n },\n};\n\n// =============================================================================\n// Plugin Initialization\n// =============================================================================\n\ncreateMetadataPlugin({\n manifest,\n provider, // Series provider\n bookProvider, // Book provider\n logLevel: \"debug\",\n onInitialize(params: InitializeParams) {\n // Read config from initialization params\n const maxResults = params.adminConfig?.maxResults as number | undefined;\n if (maxResults !== undefined) {\n config.maxResults = Math.min(Math.max(1, maxResults), 20); // Clamp 1-20\n }\n logger.info(`Echo plugin initialized (maxResults: ${config.maxResults})`);\n },\n});\n\nlogger.info(\"Echo plugin started\");\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["manifest", "logger", "response", "provider", "bookProvider"]
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ashdev/codex-plugin-metadata-echo",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.19.1",
|
|
4
4
|
"description": "Echo metadata plugin for testing Codex plugin protocol",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": "dist/index.js",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"node": ">=22.0.0"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@ashdev/codex-plugin-sdk": "^1.
|
|
41
|
+
"@ashdev/codex-plugin-sdk": "^1.19.1"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
44
|
"@biomejs/biome": "^2.4.4",
|