@echoes-io/mcp-server 6.2.0 → 7.1.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/README.md +32 -2
- package/cli/program.d.ts.map +1 -1
- package/cli/program.js +247 -0
- package/cli/program.js.map +1 -1
- package/lib/database/index.d.ts.map +1 -1
- package/lib/database/index.js +16 -2
- package/lib/database/index.js.map +1 -1
- package/lib/database/schemas.d.ts.map +1 -1
- package/lib/database/schemas.js +8 -0
- package/lib/database/schemas.js.map +1 -1
- package/lib/server.d.ts.map +1 -1
- package/lib/server.js +72 -0
- package/lib/server.js.map +1 -1
- package/lib/tools/arc-resume.d.ts +26 -0
- package/lib/tools/arc-resume.d.ts.map +1 -0
- package/lib/tools/arc-resume.js +129 -0
- package/lib/tools/arc-resume.js.map +1 -0
- package/lib/tools/consistency/index.d.ts +25 -0
- package/lib/tools/consistency/index.d.ts.map +1 -0
- package/lib/tools/consistency/index.js +88 -0
- package/lib/tools/consistency/index.js.map +1 -0
- package/lib/tools/consistency/patterns.d.ts +6 -0
- package/lib/tools/consistency/patterns.d.ts.map +1 -0
- package/lib/tools/consistency/patterns.js +39 -0
- package/lib/tools/consistency/patterns.js.map +1 -0
- package/lib/tools/consistency/rules/entity-duplicate.d.ts +3 -0
- package/lib/tools/consistency/rules/entity-duplicate.d.ts.map +1 -0
- package/lib/tools/consistency/rules/entity-duplicate.js +84 -0
- package/lib/tools/consistency/rules/entity-duplicate.js.map +1 -0
- package/lib/tools/consistency/rules/first-time-content.d.ts +3 -0
- package/lib/tools/consistency/rules/first-time-content.d.ts.map +1 -0
- package/lib/tools/consistency/rules/first-time-content.js +114 -0
- package/lib/tools/consistency/rules/first-time-content.js.map +1 -0
- package/lib/tools/consistency/rules/kink-firsts.d.ts +3 -0
- package/lib/tools/consistency/rules/kink-firsts.d.ts.map +1 -0
- package/lib/tools/consistency/rules/kink-firsts.js +81 -0
- package/lib/tools/consistency/rules/kink-firsts.js.map +1 -0
- package/lib/tools/consistency/rules/outfit-claims.d.ts +3 -0
- package/lib/tools/consistency/rules/outfit-claims.d.ts.map +1 -0
- package/lib/tools/consistency/rules/outfit-claims.js +175 -0
- package/lib/tools/consistency/rules/outfit-claims.js.map +1 -0
- package/lib/tools/consistency/rules/relation-jump.d.ts +3 -0
- package/lib/tools/consistency/rules/relation-jump.d.ts.map +1 -0
- package/lib/tools/consistency/rules/relation-jump.js +105 -0
- package/lib/tools/consistency/rules/relation-jump.js.map +1 -0
- package/lib/tools/consistency/types.d.ts +27 -0
- package/lib/tools/consistency/types.d.ts.map +1 -0
- package/lib/tools/consistency/types.js +2 -0
- package/lib/tools/consistency/types.js.map +1 -0
- package/lib/tools/graph-export.d.ts +47 -0
- package/lib/tools/graph-export.d.ts.map +1 -0
- package/lib/tools/graph-export.js +152 -0
- package/lib/tools/graph-export.js.map +1 -0
- package/lib/tools/history.d.ts +47 -0
- package/lib/tools/history.d.ts.map +1 -0
- package/lib/tools/history.js +134 -0
- package/lib/tools/history.js.map +1 -0
- package/lib/tools/review-apply.d.ts +30 -0
- package/lib/tools/review-apply.d.ts.map +1 -0
- package/lib/tools/review-apply.js +305 -0
- package/lib/tools/review-apply.js.map +1 -0
- package/lib/tools/review-generate.d.ts +22 -0
- package/lib/tools/review-generate.d.ts.map +1 -0
- package/lib/tools/review-generate.js +123 -0
- package/lib/tools/review-generate.js.map +1 -0
- package/lib/tools/review-status.d.ts +28 -0
- package/lib/tools/review-status.d.ts.map +1 -0
- package/lib/tools/review-status.js +60 -0
- package/lib/tools/review-status.js.map +1 -0
- package/package.json +1 -1
package/lib/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACpF,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5F,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5F,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAChG,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AACxF,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAI9C,SAAS,OAAO,CAAC,IAAa;IAC5B,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,GAAY;IACtC,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACjE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,OAAO,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AACnF,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,gBAAgB,EAAE,CAAC;IAE1D,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC;IAE7D,iBAAiB;IACjB,MAAM,CAAC,YAAY,CACjB,gBAAgB,CAAC,IAAI,EACrB;QACE,WAAW,EAAE,gBAAgB,CAAC,WAAW;QACzC,WAAW,EAAE,gBAAgB;KAC9B,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,OAAO,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QACnC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,WAAW,CAAC,IAAI,EAChB;QACE,WAAW,EAAE,WAAW,CAAC,WAAW;QACpC,WAAW,EAAE,WAAW;KACzB,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,OAAO,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QACpC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,WAAW,CAAC,IAAI,EAChB;QACE,WAAW,EAAE,WAAW,CAAC,WAAW;QACpC,WAAW,EAAE,WAAW;KACzB,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,OAAO,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QACpC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,YAAY,CAAC,IAAI,EACjB;QACE,WAAW,EAAE,YAAY,CAAC,WAAW;QACrC,WAAW,EAAE,YAAY;QACzB,qBAAqB;KACtB,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,OAAO,OAAO,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QACrC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,UAAU,CAAC,IAAI,EACf;QACE,WAAW,EAAE,UAAU,CAAC,WAAW;QACnC,WAAW,EAAE,UAAU;KACxB,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,OAAO,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACnC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,iBAAiB,CAAC,IAAI,EACtB;QACE,WAAW,EAAE,iBAAiB,CAAC,WAAW;QAC1C,WAAW,EAAE,iBAAiB;KAC/B,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,OAAO,OAAO,CAAC,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,aAAa,CAAC,IAAI,EAClB;QACE,WAAW,EAAE,aAAa,CAAC,WAAW;QACtC,WAAW,EAAE,aAAa;KAC3B,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,OAAO,OAAO,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACtC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,oBAAoB,CAAC,IAAI,EACzB;QACE,WAAW,EAAE,oBAAoB,CAAC,WAAW;QAC7C,WAAW,EAAE,oBAAoB;KAClC,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,OAAO,OAAO,CAAC,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,kBAAkB,CAAC,IAAI,EACvB;QACE,WAAW,EAAE,kBAAkB,CAAC,WAAW;QAC3C,WAAW,EAAE,kBAAkB;KAChC,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,OAAO,OAAO,CAAC,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,iBAAiB,CAAC,IAAI,EACtB;QACE,WAAW,EAAE,iBAAiB,CAAC,WAAW;QAC1C,WAAW,EAAE,iBAAiB;KAC/B,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,OAAO,OAAO,CAAC,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,eAAe,CAAC,IAAI,EACpB;QACE,WAAW,EAAE,eAAe,CAAC,WAAW;QACxC,WAAW,EAAE,eAAe;KAC7B,EACD,CAAC,IAAI,EAAE,EAAE;QACP,IAAI,CAAC;YACH,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QAClC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC,CACF,CAAC;IACF,oBAAoB;IAEpB,mBAAmB;IACnB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE;YACnE,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,IAA8B,CAAC,CAAC;gBACpE,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC;YAC3E,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACtF,OAAO;oBACL,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,OAAO,EAAE,EAAE,EAAE,CAAC;iBACnF,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,qBAAqB;AACrB,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;IAC9B,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC;AACD,oBAAoB"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import z from 'zod';
|
|
2
|
+
import type { ToolConfig } from '../types.js';
|
|
3
|
+
export declare const arcResumeConfig: ToolConfig;
|
|
4
|
+
export declare const arcResumeSchema: z.ZodObject<{
|
|
5
|
+
arc: z.ZodString;
|
|
6
|
+
episode: z.ZodOptional<z.ZodNumber>;
|
|
7
|
+
lastChapters: z.ZodOptional<z.ZodNumber>;
|
|
8
|
+
contentPath: z.ZodOptional<z.ZodString>;
|
|
9
|
+
docsPath: z.ZodOptional<z.ZodString>;
|
|
10
|
+
}, z.z.core.$strip>;
|
|
11
|
+
export type ArcResumeInput = z.infer<typeof arcResumeSchema>;
|
|
12
|
+
export interface ArcResumeOutput {
|
|
13
|
+
arc: string;
|
|
14
|
+
episode: number;
|
|
15
|
+
episodeOutline: string;
|
|
16
|
+
characters: Record<string, string>;
|
|
17
|
+
recentChapters: Array<{
|
|
18
|
+
file: string;
|
|
19
|
+
pov: string;
|
|
20
|
+
title: string;
|
|
21
|
+
wordCount: number;
|
|
22
|
+
excerpt: string;
|
|
23
|
+
}>;
|
|
24
|
+
}
|
|
25
|
+
export declare function arcResume(input: ArcResumeInput): ArcResumeOutput;
|
|
26
|
+
//# sourceMappingURL=arc-resume.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arc-resume.d.ts","sourceRoot":"","sources":["arc-resume.ts"],"names":[],"mappings":"AAGA,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAG9C,eAAO,MAAM,eAAe,EAAE,UAW7B,CAAC;AAEF,eAAO,MAAM,eAAe;;;;;;mBAM1B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE7D,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,cAAc,EAAE,KAAK,CAAC;QACpB,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;CACJ;AAaD,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,eAAe,CA6HhE"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { readdirSync, readFileSync, statSync } from 'node:fs';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import z from 'zod';
|
|
4
|
+
import { parseChapter } from '../utils.js';
|
|
5
|
+
export const arcResumeConfig = {
|
|
6
|
+
name: 'arc-resume',
|
|
7
|
+
description: 'Load complete context for resuming work on an arc: episode outline, character sheets, and recent chapters.',
|
|
8
|
+
arguments: {
|
|
9
|
+
arc: 'Arc name (e.g., "cri", "ale", "gio").',
|
|
10
|
+
episode: 'Episode number (optional - defaults to latest episode).',
|
|
11
|
+
lastChapters: 'Number of recent chapters to include (default: 3).',
|
|
12
|
+
contentPath: 'Path to content directory (default: ./content).',
|
|
13
|
+
docsPath: 'Path to docs directory (default: ./docs).',
|
|
14
|
+
},
|
|
15
|
+
};
|
|
16
|
+
export const arcResumeSchema = z.object({
|
|
17
|
+
arc: z.string().describe(arcResumeConfig.arguments.arc),
|
|
18
|
+
episode: z.number().optional().describe(arcResumeConfig.arguments.episode),
|
|
19
|
+
lastChapters: z.number().optional().describe(arcResumeConfig.arguments.lastChapters),
|
|
20
|
+
contentPath: z.string().optional().describe(arcResumeConfig.arguments.contentPath),
|
|
21
|
+
docsPath: z.string().optional().describe(arcResumeConfig.arguments.docsPath),
|
|
22
|
+
});
|
|
23
|
+
export function arcResume(input) {
|
|
24
|
+
const parsed = arcResumeSchema.parse(input);
|
|
25
|
+
const { arc, episode, contentPath = './content', docsPath = './docs' } = parsed;
|
|
26
|
+
const lastChapters = parsed.lastChapters ?? 3;
|
|
27
|
+
// Scan content directory for chapters
|
|
28
|
+
const arcDir = join(contentPath, arc);
|
|
29
|
+
if (!readdirSync(contentPath).includes(arc)) {
|
|
30
|
+
throw new Error(`No chapters found for arc "${arc}"`);
|
|
31
|
+
}
|
|
32
|
+
const chapters = [];
|
|
33
|
+
const entries = readdirSync(arcDir, { withFileTypes: true });
|
|
34
|
+
// Check if chapters are directly in arc dir or in episode subdirs
|
|
35
|
+
const hasEpisodeDirs = entries.some((e) => e.isDirectory());
|
|
36
|
+
if (hasEpisodeDirs) {
|
|
37
|
+
// Chapters in episode subdirectories
|
|
38
|
+
for (const entry of entries.filter((e) => e.isDirectory())) {
|
|
39
|
+
const files = readdirSync(join(arcDir, entry.name)).filter((f) => f.endsWith('.md'));
|
|
40
|
+
for (const file of files) {
|
|
41
|
+
const filePath = join(arcDir, entry.name, file);
|
|
42
|
+
const content = readFileSync(filePath, 'utf-8');
|
|
43
|
+
const { metadata, stats } = parseChapter(content);
|
|
44
|
+
const mtime = statSync(filePath).mtimeMs;
|
|
45
|
+
chapters.push({
|
|
46
|
+
file: filePath,
|
|
47
|
+
episode: metadata.episode,
|
|
48
|
+
chapter: metadata.chapter,
|
|
49
|
+
pov: metadata.pov,
|
|
50
|
+
title: metadata.title,
|
|
51
|
+
excerpt: metadata.summary || '',
|
|
52
|
+
wordCount: stats.wordCount,
|
|
53
|
+
mtime,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
// Chapters directly in arc directory
|
|
60
|
+
const files = entries.filter((e) => e.isFile() && e.name.endsWith('.md')).map((e) => e.name);
|
|
61
|
+
for (const file of files) {
|
|
62
|
+
const filePath = join(arcDir, file);
|
|
63
|
+
const content = readFileSync(filePath, 'utf-8');
|
|
64
|
+
const { metadata, stats } = parseChapter(content);
|
|
65
|
+
const mtime = statSync(filePath).mtimeMs;
|
|
66
|
+
chapters.push({
|
|
67
|
+
file: filePath,
|
|
68
|
+
episode: metadata.episode,
|
|
69
|
+
chapter: metadata.chapter,
|
|
70
|
+
pov: metadata.pov,
|
|
71
|
+
title: metadata.title,
|
|
72
|
+
excerpt: metadata.summary || '',
|
|
73
|
+
wordCount: stats.wordCount,
|
|
74
|
+
mtime,
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
if (chapters.length === 0) {
|
|
79
|
+
throw new Error(`No chapters found for arc "${arc}"`);
|
|
80
|
+
}
|
|
81
|
+
// Determine target episode
|
|
82
|
+
const targetEpisode = episode ?? Math.max(...chapters.map((c) => c.episode));
|
|
83
|
+
// Filter and sort chapters for target episode
|
|
84
|
+
const episodeChapters = chapters
|
|
85
|
+
.filter((c) => c.episode === targetEpisode)
|
|
86
|
+
.sort((a, b) => b.chapter - a.chapter);
|
|
87
|
+
if (episodeChapters.length === 0) {
|
|
88
|
+
throw new Error(`No chapters found for arc "${arc}" episode ${targetEpisode}`);
|
|
89
|
+
}
|
|
90
|
+
// Get recent chapters
|
|
91
|
+
const recentChapters = episodeChapters.slice(0, lastChapters).map((c) => ({
|
|
92
|
+
file: c.file,
|
|
93
|
+
pov: c.pov,
|
|
94
|
+
title: c.title,
|
|
95
|
+
wordCount: c.wordCount,
|
|
96
|
+
excerpt: c.excerpt,
|
|
97
|
+
}));
|
|
98
|
+
// Read episode outline
|
|
99
|
+
const episodesDir = join(docsPath, 'episodes');
|
|
100
|
+
const episodeFiles = readdirSync(episodesDir);
|
|
101
|
+
const episodeFile = episodeFiles.find((f) => f.startsWith(`${arc}-ep${String(targetEpisode).padStart(2, '0')}`));
|
|
102
|
+
if (!episodeFile) {
|
|
103
|
+
throw new Error(`Episode outline not found for arc "${arc}" episode ${targetEpisode}`);
|
|
104
|
+
}
|
|
105
|
+
const episodeOutline = readFileSync(join(episodesDir, episodeFile), 'utf-8');
|
|
106
|
+
// Read character sheets
|
|
107
|
+
const charactersDir = join(docsPath, 'characters', arc);
|
|
108
|
+
const characters = {};
|
|
109
|
+
try {
|
|
110
|
+
const characterFiles = readdirSync(charactersDir);
|
|
111
|
+
for (const file of characterFiles) {
|
|
112
|
+
if (file.endsWith('.md')) {
|
|
113
|
+
const name = file.replace('.md', '');
|
|
114
|
+
characters[name] = readFileSync(join(charactersDir, file), 'utf-8');
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
catch {
|
|
119
|
+
// Characters directory might not exist
|
|
120
|
+
}
|
|
121
|
+
return {
|
|
122
|
+
arc,
|
|
123
|
+
episode: targetEpisode,
|
|
124
|
+
episodeOutline,
|
|
125
|
+
characters,
|
|
126
|
+
recentChapters,
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=arc-resume.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arc-resume.js","sourceRoot":"","sources":["arc-resume.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import z from 'zod';
|
|
2
|
+
import type { ToolConfig } from '../../types.js';
|
|
3
|
+
import type { CheckResult } from './types.js';
|
|
4
|
+
export declare const checkConsistencyConfig: ToolConfig;
|
|
5
|
+
export declare const checkConsistencySchema: z.ZodObject<{
|
|
6
|
+
contentPath: z.ZodString;
|
|
7
|
+
arc: z.ZodString;
|
|
8
|
+
rules: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
9
|
+
"kink-firsts": "kink-firsts";
|
|
10
|
+
"outfit-claims": "outfit-claims";
|
|
11
|
+
"first-time-content": "first-time-content";
|
|
12
|
+
"relation-jump": "relation-jump";
|
|
13
|
+
"entity-duplicate": "entity-duplicate";
|
|
14
|
+
}>>>;
|
|
15
|
+
severity: z.ZodOptional<z.ZodEnum<{
|
|
16
|
+
warning: "warning";
|
|
17
|
+
error: "error";
|
|
18
|
+
info: "info";
|
|
19
|
+
}>>;
|
|
20
|
+
dbPath: z.ZodDefault<z.ZodString>;
|
|
21
|
+
}, z.z.core.$strip>;
|
|
22
|
+
export type CheckConsistencyInput = z.infer<typeof checkConsistencySchema>;
|
|
23
|
+
export declare function checkConsistency(input: CheckConsistencyInput): Promise<CheckResult>;
|
|
24
|
+
export * from './types.js';
|
|
25
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAGpB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAMjD,OAAO,KAAK,EAAE,WAAW,EAAmB,MAAM,YAAY,CAAC;AAE/D,eAAO,MAAM,sBAAsB,EAAE,UAWpC,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;mBAoBjC,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAY3E,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,WAAW,CAAC,CAmDzF;AAED,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import z from 'zod';
|
|
2
|
+
import { DEFAULT_DB_PATH } from '../../constants.js';
|
|
3
|
+
import { checkEntityDuplicate } from './rules/entity-duplicate.js';
|
|
4
|
+
import { checkFirstTimeContent } from './rules/first-time-content.js';
|
|
5
|
+
import { checkKinkFirsts } from './rules/kink-firsts.js';
|
|
6
|
+
import { checkOutfitClaims } from './rules/outfit-claims.js';
|
|
7
|
+
import { checkRelationJump } from './rules/relation-jump.js';
|
|
8
|
+
export const checkConsistencyConfig = {
|
|
9
|
+
name: 'check-consistency',
|
|
10
|
+
description: 'Analyze arc for narrative inconsistencies.',
|
|
11
|
+
arguments: {
|
|
12
|
+
contentPath: 'Path to the content directory.',
|
|
13
|
+
arc: 'Arc name to check.',
|
|
14
|
+
rules: 'Specific rules to run (comma-separated). Available: kink-firsts, entity-duplicate, relation-jump, first-time-content, outfit-claims.',
|
|
15
|
+
severity: 'Minimum severity to report: error, warning, info.',
|
|
16
|
+
dbPath: `Database path (default: ${DEFAULT_DB_PATH}).`,
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
export const checkConsistencySchema = z.object({
|
|
20
|
+
contentPath: z.string().describe(checkConsistencyConfig.arguments.contentPath),
|
|
21
|
+
arc: z.string().describe(checkConsistencyConfig.arguments.arc),
|
|
22
|
+
rules: z
|
|
23
|
+
.array(z.enum([
|
|
24
|
+
'kink-firsts',
|
|
25
|
+
'outfit-claims',
|
|
26
|
+
'first-time-content',
|
|
27
|
+
'relation-jump',
|
|
28
|
+
'entity-duplicate',
|
|
29
|
+
]))
|
|
30
|
+
.optional()
|
|
31
|
+
.describe(checkConsistencyConfig.arguments.rules),
|
|
32
|
+
severity: z
|
|
33
|
+
.enum(['error', 'warning', 'info'])
|
|
34
|
+
.optional()
|
|
35
|
+
.describe(checkConsistencyConfig.arguments.severity),
|
|
36
|
+
dbPath: z.string().default(DEFAULT_DB_PATH).describe(checkConsistencyConfig.arguments.dbPath),
|
|
37
|
+
});
|
|
38
|
+
const AVAILABLE_RULES = [
|
|
39
|
+
'kink-firsts',
|
|
40
|
+
'entity-duplicate',
|
|
41
|
+
'relation-jump',
|
|
42
|
+
'first-time-content',
|
|
43
|
+
'outfit-claims',
|
|
44
|
+
];
|
|
45
|
+
const SEVERITY_ORDER = { error: 0, warning: 1, info: 2 };
|
|
46
|
+
export async function checkConsistency(input) {
|
|
47
|
+
const { contentPath, arc, rules, severity, dbPath } = checkConsistencySchema.parse(input);
|
|
48
|
+
const rulesToRun = rules ?? AVAILABLE_RULES;
|
|
49
|
+
const minSeverity = severity ?? 'info';
|
|
50
|
+
let allIssues = [];
|
|
51
|
+
for (const rule of rulesToRun) {
|
|
52
|
+
if (!AVAILABLE_RULES.includes(rule))
|
|
53
|
+
continue;
|
|
54
|
+
if (rule === 'kink-firsts') {
|
|
55
|
+
const issues = await checkKinkFirsts(contentPath, arc);
|
|
56
|
+
allIssues.push(...issues);
|
|
57
|
+
}
|
|
58
|
+
if (rule === 'entity-duplicate') {
|
|
59
|
+
const issues = await checkEntityDuplicate(dbPath, arc);
|
|
60
|
+
allIssues.push(...issues);
|
|
61
|
+
}
|
|
62
|
+
if (rule === 'relation-jump') {
|
|
63
|
+
const issues = await checkRelationJump(dbPath, arc);
|
|
64
|
+
allIssues.push(...issues);
|
|
65
|
+
}
|
|
66
|
+
if (rule === 'first-time-content') {
|
|
67
|
+
const issues = await checkFirstTimeContent(contentPath, arc);
|
|
68
|
+
allIssues.push(...issues);
|
|
69
|
+
}
|
|
70
|
+
if (rule === 'outfit-claims') {
|
|
71
|
+
const issues = await checkOutfitClaims(contentPath, arc);
|
|
72
|
+
allIssues.push(...issues);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
// Filter by severity
|
|
76
|
+
allIssues = allIssues.filter((issue) => SEVERITY_ORDER[issue.severity] <= SEVERITY_ORDER[minSeverity]);
|
|
77
|
+
return {
|
|
78
|
+
arc,
|
|
79
|
+
issues: allIssues,
|
|
80
|
+
summary: {
|
|
81
|
+
errors: allIssues.filter((i) => i.severity === 'error').length,
|
|
82
|
+
warnings: allIssues.filter((i) => i.severity === 'warning').length,
|
|
83
|
+
info: allIssues.filter((i) => i.severity === 'info').length,
|
|
84
|
+
},
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
export * from './types.js';
|
|
88
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare const KINK_FIRST_PATTERNS: RegExp[];
|
|
2
|
+
export declare function normalizeKinkToken(token: string): string;
|
|
3
|
+
export declare function extractFirstSubject(token: string): string | null;
|
|
4
|
+
export declare function isFirstTimeKink(token: string): boolean;
|
|
5
|
+
export declare function tokenizeKink(kink: string): string[];
|
|
6
|
+
//# sourceMappingURL=patterns.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"patterns.d.ts","sourceRoot":"","sources":["patterns.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,mBAAmB,UAK/B,CAAC;AAGF,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQxD;AAID,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQhE;AAGD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEtD;AAGD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAKnD"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
// Patterns for detecting "first time" in kink field
|
|
2
|
+
export const KINK_FIRST_PATTERNS = [
|
|
3
|
+
/\bprim[oa]-/i, // primo-plug, prima-volta
|
|
4
|
+
/\bprim[oa]\s/i, // primo bacio, prima volta
|
|
5
|
+
/\bfirst-/i, // first-time, first-kiss
|
|
6
|
+
/\bfirst\s/i, // first time, first kiss
|
|
7
|
+
];
|
|
8
|
+
// Normalize kink token for comparison
|
|
9
|
+
export function normalizeKinkToken(token) {
|
|
10
|
+
return token
|
|
11
|
+
.toLowerCase()
|
|
12
|
+
.normalize('NFD')
|
|
13
|
+
.replace(/[\u0300-\u036f]/g, '') // remove accents
|
|
14
|
+
.replace(/[^a-z0-9]/g, '-') // non-alphanumeric to dash
|
|
15
|
+
.replace(/-+/g, '-') // collapse multiple dashes
|
|
16
|
+
.replace(/^-|-$/g, ''); // trim dashes
|
|
17
|
+
}
|
|
18
|
+
// Extract the "first" subject from a kink token
|
|
19
|
+
// "primo-plug" -> "plug", "prima volta anal" -> "volta-anal", "first-kiss" -> "kiss"
|
|
20
|
+
export function extractFirstSubject(token) {
|
|
21
|
+
const normalized = normalizeKinkToken(token);
|
|
22
|
+
// Match patterns like "primo-X", "prima-X", "first-X"
|
|
23
|
+
const match = normalized.match(/^(?:prim[oa]|first)-(.+)$/);
|
|
24
|
+
if (match)
|
|
25
|
+
return match[1];
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
// Check if a kink token represents a "first time" event
|
|
29
|
+
export function isFirstTimeKink(token) {
|
|
30
|
+
return KINK_FIRST_PATTERNS.some((pattern) => pattern.test(token));
|
|
31
|
+
}
|
|
32
|
+
// Tokenize kink field (comma or pipe separated)
|
|
33
|
+
export function tokenizeKink(kink) {
|
|
34
|
+
return kink
|
|
35
|
+
.split(/[,|]/)
|
|
36
|
+
.map((t) => t.trim())
|
|
37
|
+
.filter((t) => t.length > 0);
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=patterns.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"patterns.js","sourceRoot":"","sources":["patterns.ts"],"names":[],"mappings":"AAAA,oDAAoD;AACpD,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,cAAc,EAAE,0BAA0B;IAC1C,eAAe,EAAE,2BAA2B;IAC5C,WAAW,EAAE,yBAAyB;IACtC,YAAY,EAAE,yBAAyB;CACxC,CAAC;AAEF,sCAAsC;AACtC,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,OAAO,KAAK;SACT,WAAW,EAAE;SACb,SAAS,CAAC,KAAK,CAAC;SAChB,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC,iBAAiB;SACjD,OAAO,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,2BAA2B;SACtD,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,2BAA2B;SAC/C,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc;AAC1C,CAAC;AAED,gDAAgD;AAChD,qFAAqF;AACrF,MAAM,UAAU,mBAAmB,CAAC,KAAa;IAC/C,MAAM,UAAU,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAE7C,sDAAsD;IACtD,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC5D,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;IAE3B,OAAO,IAAI,CAAC;AACd,CAAC;AAED,wDAAwD;AACxD,MAAM,UAAU,eAAe,CAAC,KAAa;IAC3C,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACpE,CAAC;AAED,gDAAgD;AAChD,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,OAAO,IAAI;SACR,KAAK,CAAC,MAAM,CAAC;SACb,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACjC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity-duplicate.d.ts","sourceRoot":"","sources":["entity-duplicate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AA4EzC,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAsBxF"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { Database } from '../../../database/index.js';
|
|
2
|
+
// Simple Levenshtein distance
|
|
3
|
+
function levenshtein(a, b) {
|
|
4
|
+
const matrix = [];
|
|
5
|
+
for (let i = 0; i <= b.length; i++) {
|
|
6
|
+
matrix[i] = [i];
|
|
7
|
+
}
|
|
8
|
+
for (let j = 0; j <= a.length; j++) {
|
|
9
|
+
matrix[0][j] = j;
|
|
10
|
+
}
|
|
11
|
+
for (let i = 1; i <= b.length; i++) {
|
|
12
|
+
for (let j = 1; j <= a.length; j++) {
|
|
13
|
+
if (b.charAt(i - 1) === a.charAt(j - 1)) {
|
|
14
|
+
matrix[i][j] = matrix[i - 1][j - 1];
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
matrix[i][j] = Math.min(matrix[i - 1][j - 1] + 1, matrix[i][j - 1] + 1, matrix[i - 1][j] + 1);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return matrix[b.length][a.length];
|
|
22
|
+
}
|
|
23
|
+
// Check if two names might be duplicates
|
|
24
|
+
function areSimilar(name1, name2, threshold = 2) {
|
|
25
|
+
const n1 = name1.toLowerCase();
|
|
26
|
+
const n2 = name2.toLowerCase();
|
|
27
|
+
// Exact match (case insensitive)
|
|
28
|
+
if (n1 === n2)
|
|
29
|
+
return false; // Same name, not a duplicate issue
|
|
30
|
+
// One is prefix of other (Ali vs Alice) - only if prefix is at least 3 chars
|
|
31
|
+
if (n1.length >= 3 && n2.startsWith(n1))
|
|
32
|
+
return true;
|
|
33
|
+
if (n2.length >= 3 && n1.startsWith(n2))
|
|
34
|
+
return true;
|
|
35
|
+
// Levenshtein distance - only for similar length names
|
|
36
|
+
const lenDiff = Math.abs(n1.length - n2.length);
|
|
37
|
+
if (lenDiff <= 2 && levenshtein(n1, n2) <= threshold)
|
|
38
|
+
return true;
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
// Group similar entities
|
|
42
|
+
function groupSimilarEntities(names) {
|
|
43
|
+
const groups = [];
|
|
44
|
+
const used = new Set();
|
|
45
|
+
for (const name of names) {
|
|
46
|
+
if (used.has(name))
|
|
47
|
+
continue;
|
|
48
|
+
const group = [name];
|
|
49
|
+
used.add(name);
|
|
50
|
+
for (const other of names) {
|
|
51
|
+
if (used.has(other))
|
|
52
|
+
continue;
|
|
53
|
+
if (areSimilar(name, other)) {
|
|
54
|
+
group.push(other);
|
|
55
|
+
used.add(other);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
if (group.length > 1) {
|
|
59
|
+
groups.push(group);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return groups;
|
|
63
|
+
}
|
|
64
|
+
export async function checkEntityDuplicate(dbPath, arc) {
|
|
65
|
+
const db = new Database(dbPath);
|
|
66
|
+
await db.connect();
|
|
67
|
+
const entities = await db.getEntities(arc);
|
|
68
|
+
db.close();
|
|
69
|
+
if (entities.length === 0)
|
|
70
|
+
return [];
|
|
71
|
+
const names = entities.map((e) => e.name);
|
|
72
|
+
const groups = groupSimilarEntities(names);
|
|
73
|
+
return groups.map((group) => ({
|
|
74
|
+
type: 'ENTITY_DUPLICATE',
|
|
75
|
+
severity: 'info',
|
|
76
|
+
message: `Possible duplicate entities: ${group.join(', ')}`,
|
|
77
|
+
current: { arc, episode: 0, chapter: 0 },
|
|
78
|
+
details: {
|
|
79
|
+
entities: group,
|
|
80
|
+
suggestion: 'Consider merging or adding aliases',
|
|
81
|
+
},
|
|
82
|
+
}));
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=entity-duplicate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity-duplicate.js","sourceRoot":"","sources":["entity-duplicate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAGtD,8BAA8B;AAC9B,SAAS,WAAW,CAAC,CAAS,EAAE,CAAS;IACvC,MAAM,MAAM,GAAe,EAAE,CAAC;IAE9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACxC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACtC,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CACrB,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EACxB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EACpB,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CACrB,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AACpC,CAAC;AAED,yCAAyC;AACzC,SAAS,UAAU,CAAC,KAAa,EAAE,KAAa,EAAE,SAAS,GAAG,CAAC;IAC7D,MAAM,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAC/B,MAAM,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAE/B,iCAAiC;IACjC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,KAAK,CAAC,CAAC,mCAAmC;IAEhE,6EAA6E;IAC7E,IAAI,EAAE,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;QAAE,OAAO,IAAI,CAAC;IACrD,IAAI,EAAE,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;QAAE,OAAO,IAAI,CAAC;IAErD,uDAAuD;IACvD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC;IAChD,IAAI,OAAO,IAAI,CAAC,IAAI,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,SAAS;QAAE,OAAO,IAAI,CAAC;IAElE,OAAO,KAAK,CAAC;AACf,CAAC;AAED,yBAAyB;AACzB,SAAS,oBAAoB,CAAC,KAAe;IAC3C,MAAM,MAAM,GAAe,EAAE,CAAC;IAC9B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAE/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,SAAS;QAE7B,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAEf,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;YAC1B,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;gBAAE,SAAS;YAC9B,IAAI,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;gBAC5B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAClB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,MAAc,EAAE,GAAW;IACpE,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;IAChC,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC;IAEnB,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC3C,EAAE,CAAC,KAAK,EAAE,CAAC;IAEX,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAErC,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAE3C,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC5B,IAAI,EAAE,kBAA2B;QACjC,QAAQ,EAAE,MAAe;QACzB,OAAO,EAAE,gCAAgC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QAC3D,OAAO,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE;QACxC,OAAO,EAAE;YACP,QAAQ,EAAE,KAAK;YACf,UAAU,EAAE,oCAAoC;SACjD;KACF,CAAC,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"first-time-content.d.ts","sourceRoot":"","sources":["first-time-content.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAc,KAAK,EAAE,MAAM,aAAa,CAAC;AA0FrD,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,MAAM,EACX,mBAAmB,SAAO,GACzB,OAAO,CAAC,KAAK,EAAE,CAAC,CA0ClB"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { readdirSync, readFileSync } from 'node:fs';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { generateEmbeddings } from '../../../indexer/embeddings.js';
|
|
4
|
+
import { parseMarkdown } from '../../../utils.js';
|
|
5
|
+
// Patterns to find "first time" claims in content
|
|
6
|
+
const FIRST_TIME_PATTERNS = [
|
|
7
|
+
/per la prima volta[^.!?]*/gi,
|
|
8
|
+
/era la prima volta[^.!?]*/gi,
|
|
9
|
+
/la prima volta che[^.!?]*/gi,
|
|
10
|
+
/prima volta nella (mia|sua|loro) vita[^.!?]*/gi,
|
|
11
|
+
/for the first time[^.!?]*/gi,
|
|
12
|
+
/it was the first time[^.!?]*/gi,
|
|
13
|
+
];
|
|
14
|
+
function extractFirstTimeClaims(content, ref) {
|
|
15
|
+
const claims = [];
|
|
16
|
+
for (const pattern of FIRST_TIME_PATTERNS) {
|
|
17
|
+
const matches = content.matchAll(pattern);
|
|
18
|
+
for (const match of matches) {
|
|
19
|
+
const text = match[0].trim();
|
|
20
|
+
// Get surrounding context (50 chars before and after)
|
|
21
|
+
const start = Math.max(0, (match.index ?? 0) - 50);
|
|
22
|
+
const end = Math.min(content.length, (match.index ?? 0) + match[0].length + 50);
|
|
23
|
+
const context = content.slice(start, end).replace(/\s+/g, ' ').trim();
|
|
24
|
+
claims.push({ ref, text, context });
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return claims;
|
|
28
|
+
}
|
|
29
|
+
function scanChaptersForFirstTime(contentPath, arc) {
|
|
30
|
+
const claims = [];
|
|
31
|
+
function scanDir(dir) {
|
|
32
|
+
for (const entry of readdirSync(dir, { withFileTypes: true })) {
|
|
33
|
+
const fullPath = join(dir, entry.name);
|
|
34
|
+
if (entry.isDirectory()) {
|
|
35
|
+
scanDir(fullPath);
|
|
36
|
+
}
|
|
37
|
+
else if (entry.isFile() && entry.name.endsWith('.md')) {
|
|
38
|
+
try {
|
|
39
|
+
const raw = readFileSync(fullPath, 'utf-8');
|
|
40
|
+
const { metadata, content } = parseMarkdown(raw);
|
|
41
|
+
if (metadata.arc !== arc)
|
|
42
|
+
continue;
|
|
43
|
+
const ref = {
|
|
44
|
+
arc: metadata.arc,
|
|
45
|
+
episode: metadata.episode ?? 0,
|
|
46
|
+
chapter: metadata.chapter ?? 0,
|
|
47
|
+
};
|
|
48
|
+
claims.push(...extractFirstTimeClaims(content, ref));
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
// Skip unparseable files
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
scanDir(contentPath);
|
|
57
|
+
// Sort by episode, then chapter
|
|
58
|
+
claims.sort((a, b) => {
|
|
59
|
+
if (a.ref.episode !== b.ref.episode)
|
|
60
|
+
return a.ref.episode - b.ref.episode;
|
|
61
|
+
return a.ref.chapter - b.ref.chapter;
|
|
62
|
+
});
|
|
63
|
+
return claims;
|
|
64
|
+
}
|
|
65
|
+
// Cosine similarity between two vectors
|
|
66
|
+
function cosineSimilarity(a, b) {
|
|
67
|
+
let dot = 0;
|
|
68
|
+
let normA = 0;
|
|
69
|
+
let normB = 0;
|
|
70
|
+
for (let i = 0; i < a.length; i++) {
|
|
71
|
+
dot += a[i] * b[i];
|
|
72
|
+
normA += a[i] * a[i];
|
|
73
|
+
normB += b[i] * b[i];
|
|
74
|
+
}
|
|
75
|
+
return dot / (Math.sqrt(normA) * Math.sqrt(normB));
|
|
76
|
+
}
|
|
77
|
+
export async function checkFirstTimeContent(contentPath, arc, similarityThreshold = 0.85) {
|
|
78
|
+
const claims = scanChaptersForFirstTime(contentPath, arc);
|
|
79
|
+
if (claims.length < 2)
|
|
80
|
+
return [];
|
|
81
|
+
// Generate embeddings for all claims
|
|
82
|
+
const texts = claims.map((c) => c.text);
|
|
83
|
+
const embeddings = await generateEmbeddings(texts);
|
|
84
|
+
const issues = [];
|
|
85
|
+
const reported = new Set();
|
|
86
|
+
// Find similar claims
|
|
87
|
+
for (let i = 0; i < claims.length; i++) {
|
|
88
|
+
for (let j = i + 1; j < claims.length; j++) {
|
|
89
|
+
const similarity = cosineSimilarity(embeddings[i], embeddings[j]);
|
|
90
|
+
if (similarity >= similarityThreshold) {
|
|
91
|
+
const key = `${i}:${j}`;
|
|
92
|
+
if (reported.has(key))
|
|
93
|
+
continue;
|
|
94
|
+
reported.add(key);
|
|
95
|
+
const current = claims[j];
|
|
96
|
+
const previous = claims[i];
|
|
97
|
+
issues.push({
|
|
98
|
+
type: 'FIRST_TIME_DUPLICATE',
|
|
99
|
+
severity: 'info',
|
|
100
|
+
message: `Similar "first time" claims found`,
|
|
101
|
+
current: current.ref,
|
|
102
|
+
previous: previous.ref,
|
|
103
|
+
details: {
|
|
104
|
+
currentText: current.text,
|
|
105
|
+
previousText: previous.text,
|
|
106
|
+
similarity: Math.round(similarity * 100) / 100,
|
|
107
|
+
},
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
return issues;
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=first-time-content.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"first-time-content.js","sourceRoot":"","sources":["first-time-content.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kink-firsts.d.ts","sourceRoot":"","sources":["kink-firsts.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAc,KAAK,EAAE,MAAM,aAAa,CAAC;AAmDrD,wBAAsB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAqCxF"}
|