mcp-architector 1.7.0 → 1.8.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.
Files changed (51) hide show
  1. package/.cursor/rules/architector-onboarding.mdc +1 -1
  2. package/dist/agent-hints.d.ts +1 -0
  3. package/dist/agent-hints.d.ts.map +1 -1
  4. package/dist/agent-hints.js +2 -0
  5. package/dist/agent-hints.js.map +1 -1
  6. package/dist/entry-coverage.d.ts +0 -2
  7. package/dist/entry-coverage.d.ts.map +1 -1
  8. package/dist/entry-coverage.js +2 -12
  9. package/dist/entry-coverage.js.map +1 -1
  10. package/dist/entry-coverage.test.js.map +1 -1
  11. package/dist/entry-sync.d.ts +24 -3
  12. package/dist/entry-sync.d.ts.map +1 -1
  13. package/dist/entry-sync.js +182 -11
  14. package/dist/entry-sync.js.map +1 -1
  15. package/dist/entry-sync.test.d.ts +2 -0
  16. package/dist/entry-sync.test.d.ts.map +1 -0
  17. package/dist/entry-sync.test.js.map +1 -0
  18. package/dist/index.js +10 -10
  19. package/dist/index.js.map +1 -1
  20. package/dist/project-validate.d.ts +0 -1
  21. package/dist/project-validate.d.ts.map +1 -1
  22. package/dist/project-validate.js +0 -2
  23. package/dist/project-validate.js.map +1 -1
  24. package/dist/project-validate.test.js.map +1 -1
  25. package/dist/slices.d.ts.map +1 -1
  26. package/dist/slices.js +11 -1
  27. package/dist/slices.js.map +1 -1
  28. package/dist/storage.d.ts +1 -0
  29. package/dist/storage.d.ts.map +1 -1
  30. package/dist/storage.js +37 -19
  31. package/dist/storage.js.map +1 -1
  32. package/dist/tools-entries-slices.d.ts +7 -2
  33. package/dist/tools-entries-slices.d.ts.map +1 -1
  34. package/dist/tools-entries-slices.js +269 -18
  35. package/dist/tools-entries-slices.js.map +1 -1
  36. package/dist/types.d.ts +36 -1
  37. package/dist/types.d.ts.map +1 -1
  38. package/package.json +2 -2
  39. package/server.json +2 -2
  40. package/src/agent-hints.ts +4 -0
  41. package/src/entry-coverage.test.ts +4 -4
  42. package/src/entry-coverage.ts +3 -15
  43. package/src/entry-sync.test.ts +132 -0
  44. package/src/entry-sync.ts +256 -15
  45. package/src/index.ts +10 -11
  46. package/src/project-validate.test.ts +0 -82
  47. package/src/project-validate.ts +0 -3
  48. package/src/slices.ts +11 -1
  49. package/src/storage.ts +42 -19
  50. package/src/tools-entries-slices.ts +331 -18
  51. package/src/types.ts +43 -1
@@ -31,7 +31,7 @@ Do **not** import the whole repo in one step. Architector stores data in `~/.mcp
31
31
  For each module:
32
32
 
33
33
  - `set-module-details` with `files[]` + `facts[]` (http-endpoint, entity, glossary, script, …).
34
- - Max **200** facts per call (`set-entries` / `facts[]`); batch if needed.
34
+ - Max **50** entries per bulk call (`set-entries`, `replace-entries`, `import-entries`); split larger catalogs into repeated 50-entry batches.
35
35
  - Link every fact: `refs.moduleName` = module name. Do not paste module description into entry summaries.
36
36
  - `validate` after each module (compact report only — do not reload full project).
37
37
 
@@ -1,5 +1,6 @@
1
1
  export declare const MODULE_ENTRIES_REMINDER: string;
2
2
  export declare const ENTRIES_MODULE_REMINDER: string;
3
+ export declare const BULK_BATCH_GUIDANCE: string;
3
4
  export declare function suggestKindsFromFiles(files: string[]): string[];
4
5
  export interface EntryLinkHints {
5
6
  reminder?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"agent-hints.d.ts","sourceRoot":"","sources":["../src/agent-hints.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uBAAuB,QAIgC,CAAC;AAErE,eAAO,MAAM,uBAAuB,QAG0D,CAAC;AAE/F,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAgB/D;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;CACjC;AAED,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,MAAM,EAAE,EACrB,cAAc,CAAC,EAAE,MAAM,GACtB,cAAc,CAoBhB"}
1
+ {"version":3,"file":"agent-hints.d.ts","sourceRoot":"","sources":["../src/agent-hints.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uBAAuB,QAIgC,CAAC;AAErE,eAAO,MAAM,uBAAuB,QAG0D,CAAC;AAE/F,eAAO,MAAM,mBAAmB,QAEyI,CAAC;AAE1K,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAgB/D;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;CACjC;AAED,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,MAAM,EAAE,EACrB,cAAc,CAAC,EAAE,MAAM,GACtB,cAAc,CAoBhB"}
@@ -5,6 +5,8 @@ export const MODULE_ENTRIES_REMINDER = 'After saving a module, add horizontal fa
5
5
  export const ENTRIES_MODULE_REMINDER = 'Entries need vertical structure: create modules via set-project-architecture / set-module-details ' +
6
6
  'before or when adding entries. Set refs.moduleName to an existing module name from list-modules. ' +
7
7
  'Run validate after edits to find entries-without-modules, entry-unlinked, or empty slices.';
8
+ export const BULK_BATCH_GUIDANCE = 'Max 50 entries per bulk call—split large catalogs into batches of ~50 to avoid oversized tool payloads. ' +
9
+ 'For full re-import: delete-entries once, then set-entries in 50-entry chunks; or replace-entries with deleteOrphans=false until the final batch (deleteOrphans=true).';
8
10
  export function suggestKindsFromFiles(files) {
9
11
  const kinds = new Set();
10
12
  for (const file of files) {
@@ -1 +1 @@
1
- {"version":3,"file":"agent-hints.js","sourceRoot":"","sources":["../src/agent-hints.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,uBAAuB,GAClC,iFAAiF;IACjF,yFAAyF;IACzF,wFAAwF;IACxF,kEAAkE,CAAC;AAErE,MAAM,CAAC,MAAM,uBAAuB,GAClC,oGAAoG;IACpG,mGAAmG;IACnG,4FAA4F,CAAC;AAE/F,MAAM,UAAU,qBAAqB,CAAC,KAAe;IACnD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC;QAC3C,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACxD,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAC7B,CAAC;QACD,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC1B,CAAC;QACD,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACtD,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;AACpB,CAAC;AAQD,MAAM,UAAU,mBAAmB,CACjC,WAAqB,EACrB,cAAuB;IAEvB,MAAM,KAAK,GAAmB,EAAE,CAAC;IAEjC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,KAAK,CAAC,QAAQ,GAAG,uBAAuB,CAAC;QACzC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC,cAAc,EAAE,IAAI,EAAE,EAAE,CAAC;QAC5B,KAAK,CAAC,QAAQ,GAAG,uBAAuB,CAAC;QACzC,KAAK,CAAC,oBAAoB,GAAG,WAAW,CAAC;QACzC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;QAC1C,KAAK,CAAC,OAAO,GAAG,oBAAoB,cAAc,oDAAoD,CAAC;QACvG,KAAK,CAAC,oBAAoB,GAAG,WAAW,CAAC;IAC3C,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"agent-hints.js","sourceRoot":"","sources":["../src/agent-hints.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,uBAAuB,GAClC,iFAAiF;IACjF,yFAAyF;IACzF,wFAAwF;IACxF,kEAAkE,CAAC;AAErE,MAAM,CAAC,MAAM,uBAAuB,GAClC,oGAAoG;IACpG,mGAAmG;IACnG,4FAA4F,CAAC;AAE/F,MAAM,CAAC,MAAM,mBAAmB,GAC9B,0GAA0G;IAC1G,uKAAuK,CAAC;AAE1K,MAAM,UAAU,qBAAqB,CAAC,KAAe;IACnD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC;QAC3C,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACxD,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAC7B,CAAC;QACD,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC1B,CAAC;QACD,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACtD,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;AACpB,CAAC;AAQD,MAAM,UAAU,mBAAmB,CACjC,WAAqB,EACrB,cAAuB;IAEvB,MAAM,KAAK,GAAmB,EAAE,CAAC;IAEjC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,KAAK,CAAC,QAAQ,GAAG,uBAAuB,CAAC;QACzC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC,cAAc,EAAE,IAAI,EAAE,EAAE,CAAC;QAC5B,KAAK,CAAC,QAAQ,GAAG,uBAAuB,CAAC;QACzC,KAAK,CAAC,oBAAoB,GAAG,WAAW,CAAC;QACzC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;QAC1C,KAAK,CAAC,OAAO,GAAG,oBAAoB,cAAc,oDAAoD,CAAC;QACvG,KAAK,CAAC,oBAAoB,GAAG,WAAW,CAAC;IAC3C,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -1,11 +1,9 @@
1
1
  import type { Entry, EntryCoverageSummary, ModuleDetails, ProjectArchitecture, ValidationIssue } from './types.js';
2
2
  export interface ModuleEntryCountOptions {
3
- moduleEntryMax?: number;
4
3
  moduleEntryMin?: number;
5
4
  }
6
5
  export declare function validateModuleEntryCounts(architecture: ProjectArchitecture | null, entries: Entry[], options?: ModuleEntryCountOptions): {
7
6
  issues: ValidationIssue[];
8
- modulesTooManyEntries: number;
9
7
  modulesTooFewEntries: number;
10
8
  };
11
9
  export declare function validateEntryCoverage(architecture: ProjectArchitecture | null, entries: Entry[], moduleDetailsMap: Map<string, ModuleDetails>): {
@@ -1 +1 @@
1
- {"version":3,"file":"entry-coverage.d.ts","sourceRoot":"","sources":["../src/entry-coverage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,KAAK,EACL,oBAAoB,EACpB,aAAa,EACb,mBAAmB,EACnB,eAAe,EAChB,MAAM,YAAY,CAAC;AAkBpB,MAAM,WAAW,uBAAuB;IACtC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAcD,wBAAgB,yBAAyB,CACvC,YAAY,EAAE,mBAAmB,GAAG,IAAI,EACxC,OAAO,EAAE,KAAK,EAAE,EAChB,OAAO,GAAE,uBAA4B,GACpC;IAAE,MAAM,EAAE,eAAe,EAAE,CAAC;IAAC,qBAAqB,EAAE,MAAM,CAAC;IAAC,oBAAoB,EAAE,MAAM,CAAA;CAAE,CAuC5F;AAED,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,mBAAmB,GAAG,IAAI,EACxC,OAAO,EAAE,KAAK,EAAE,EAChB,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,GAC3C;IAAE,MAAM,EAAE,eAAe,EAAE,CAAC;IAAC,QAAQ,EAAE,oBAAoB,CAAA;CAAE,CAsE/D"}
1
+ {"version":3,"file":"entry-coverage.d.ts","sourceRoot":"","sources":["../src/entry-coverage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,KAAK,EACL,oBAAoB,EACpB,aAAa,EACb,mBAAmB,EACnB,eAAe,EAChB,MAAM,YAAY,CAAC;AAkBpB,MAAM,WAAW,uBAAuB;IACtC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAcD,wBAAgB,yBAAyB,CACvC,YAAY,EAAE,mBAAmB,GAAG,IAAI,EACxC,OAAO,EAAE,KAAK,EAAE,EAChB,OAAO,GAAE,uBAA4B,GACpC;IAAE,MAAM,EAAE,eAAe,EAAE,CAAC;IAAC,oBAAoB,EAAE,MAAM,CAAA;CAAE,CA4B7D;AAED,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,mBAAmB,GAAG,IAAI,EACxC,OAAO,EAAE,KAAK,EAAE,EAChB,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,GAC3C;IAAE,MAAM,EAAE,eAAe,EAAE,CAAC;IAAC,QAAQ,EAAE,oBAAoB,CAAA;CAAE,CAsE/D"}
@@ -23,23 +23,13 @@ function emptyEntryCoverage() {
23
23
  }
24
24
  export function validateModuleEntryCounts(architecture, entries, options = {}) {
25
25
  const issues = [];
26
- let modulesTooManyEntries = 0;
27
26
  let modulesTooFewEntries = 0;
28
- const moduleEntryMax = options.moduleEntryMax ?? 50;
29
27
  const moduleEntryMin = options.moduleEntryMin;
30
28
  if (!architecture) {
31
- return { issues, modulesTooManyEntries, modulesTooFewEntries };
29
+ return { issues, modulesTooFewEntries };
32
30
  }
33
31
  for (const mod of architecture.modules) {
34
32
  const count = entriesForModule(entries, mod.name).length;
35
- if (count > moduleEntryMax) {
36
- modulesTooManyEntries += 1;
37
- issues.push({
38
- kind: 'module-too-many-entries',
39
- module: mod.name,
40
- detail: `Module '${mod.name}' has ${count} entries (max ${moduleEntryMax})—consider splitting the module`,
41
- });
42
- }
43
33
  if (moduleEntryMin !== undefined &&
44
34
  moduleEntryMin > 1 &&
45
35
  count > 0 &&
@@ -52,7 +42,7 @@ export function validateModuleEntryCounts(architecture, entries, options = {}) {
52
42
  });
53
43
  }
54
44
  }
55
- return { issues, modulesTooManyEntries, modulesTooFewEntries };
45
+ return { issues, modulesTooFewEntries };
56
46
  }
57
47
  export function validateEntryCoverage(architecture, entries, moduleDetailsMap) {
58
48
  const issues = [];
@@ -1 +1 @@
1
- {"version":3,"file":"entry-coverage.js","sourceRoot":"","sources":["../src/entry-coverage.ts"],"names":[],"mappings":"AAQA,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,eAAe,EAAE,aAAa,EAAE,eAAe,EAAE,iBAAiB,CAAC,CAAC,CAAC;AAChG,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC;AAErF,SAAS,gBAAgB,CAAC,OAAgB,EAAE,UAAkB;IAC5D,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,UAAU,KAAK,UAAU,CAAC,CAAC;AAClE,CAAC;AAED,SAAS,OAAO,CAAC,OAAgB,EAAE,KAAkB;IACnD,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,WAAW,CAAC,IAAY,EAAE,OAAe;IAChD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC;IAC3C,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClD,CAAC;AAOD,SAAS,kBAAkB;IACzB,OAAO;QACL,qBAAqB,EAAE,CAAC;QACxB,eAAe,EAAE,CAAC;QAClB,mBAAmB,EAAE,CAAC;QACtB,qBAAqB,EAAE,CAAC;QACxB,kBAAkB,EAAE,CAAC;QACrB,qBAAqB,EAAE,CAAC;QACxB,oBAAoB,EAAE,CAAC;KACxB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,YAAwC,EACxC,OAAgB,EAChB,UAAmC,EAAE;IAErC,MAAM,MAAM,GAAsB,EAAE,CAAC;IACrC,IAAI,qBAAqB,GAAG,CAAC,CAAC;IAC9B,IAAI,oBAAoB,GAAG,CAAC,CAAC;IAC7B,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,EAAE,CAAC;IACpD,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;IAE9C,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,EAAE,MAAM,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,CAAC;IACjE,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,gBAAgB,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;QAEzD,IAAI,KAAK,GAAG,cAAc,EAAE,CAAC;YAC3B,qBAAqB,IAAI,CAAC,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,yBAAyB;gBAC/B,MAAM,EAAE,GAAG,CAAC,IAAI;gBAChB,MAAM,EAAE,WAAW,GAAG,CAAC,IAAI,SAAS,KAAK,iBAAiB,cAAc,iCAAiC;aAC1G,CAAC,CAAC;QACL,CAAC;QAED,IACE,cAAc,KAAK,SAAS;YAC5B,cAAc,GAAG,CAAC;YAClB,KAAK,GAAG,CAAC;YACT,KAAK,GAAG,cAAc,EACtB,CAAC;YACD,oBAAoB,IAAI,CAAC,CAAC;YAC1B,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,wBAAwB;gBAC9B,MAAM,EAAE,GAAG,CAAC,IAAI;gBAChB,MAAM,EAAE,WAAW,GAAG,CAAC,IAAI,SAAS,KAAK,iBAAiB,cAAc,4CAA4C;aACrH,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,YAAwC,EACxC,OAAgB,EAChB,gBAA4C;IAE5C,MAAM,MAAM,GAAsB,EAAE,CAAC;IACrC,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5E,MAAM,QAAQ,GAAyB,kBAAkB,EAAE,CAAC;IAE5D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,YAAY,IAAI,YAAY,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;QAC/E,QAAQ,CAAC,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC;QAChD,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,yBAAyB;YAC/B,MAAM,EAAE,EAAE;YACV,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,kGAAkG;SAC5H,CAAC,CAAC;IACL,CAAC;IAED,IAAI,YAAY,EAAE,CAAC;QACjB,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC;YACnC,IAAI,WAAW,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC;gBACzC,QAAQ,CAAC,eAAe,IAAI,CAAC,CAAC;gBAC9B,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,gBAAgB;oBACtB,MAAM,EAAE,KAAK,CAAC,KAAK;oBACnB,MAAM,EAAE,UAAU,KAAK,CAAC,KAAK,MAAM,KAAK,CAAC,IAAI,6DAA6D;iBAC3G,CAAC,CAAC;YACL,CAAC;iBAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACxC,QAAQ,CAAC,mBAAmB,IAAI,CAAC,CAAC;gBAClC,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,qBAAqB;oBAC3B,MAAM,EAAE,GAAG;oBACX,MAAM,EAAE,UAAU,KAAK,CAAC,KAAK,gCAAgC,GAAG,wCAAwC;iBACzG,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC;YACvC,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC/C,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC;YACnC,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;YAEnD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC5C,QAAQ,CAAC,qBAAqB,IAAI,CAAC,CAAC;gBACpC,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,mBAAmB;oBACzB,MAAM,EAAE,GAAG,CAAC,IAAI;oBAChB,MAAM,EAAE,WAAW,GAAG,CAAC,IAAI,SAAS,KAAK,CAAC,MAAM,0FAA0F;iBAC3I,CAAC,CAAC;YACL,CAAC;YAED,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC;gBACpF,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,oBAAoB;oBAC1B,MAAM,EAAE,GAAG,CAAC,IAAI;oBAChB,MAAM,EAAE,WAAW,GAAG,CAAC,IAAI,wFAAwF;iBACpH,CAAC,CAAC;YACL,CAAC;YAED,IACE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,aAAa,CAAC,IAAI,WAAW,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;gBAC7E,CAAC,OAAO,CAAC,MAAM,EAAE,iBAAiB,CAAC,EACnC,CAAC;gBACD,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,4BAA4B;oBAClC,MAAM,EAAE,GAAG,CAAC,IAAI;oBAChB,MAAM,EAAE,WAAW,GAAG,CAAC,IAAI,+DAA+D;iBAC3F,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AAC9B,CAAC"}
1
+ {"version":3,"file":"entry-coverage.js","sourceRoot":"","sources":["../src/entry-coverage.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"entry-coverage.test.js","sourceRoot":"","sources":["../src/entry-coverage.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"entry-coverage.test.js","sourceRoot":"","sources":["../src/entry-coverage.test.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,25 @@
1
- import type { ModuleFactInput, UpsertFactsResult } from './types.js';
2
- export declare const MAX_BULK_ENTRIES = 200;
3
- export declare function upsertFacts(projectId: string, facts: ModuleFactInput[], moduleName?: string): Promise<UpsertFactsResult>;
1
+ import type { DeleteEntriesResult, Entry, EntryFilter, EntryRefs, ImportStats, ImportValidationResult, ModuleFactInput, ReplaceEntriesResult, ReplaceEntriesScope, UpsertFactsResult, UpsertKeyField } from './types.js';
2
+ export declare const MAX_BULK_ENTRIES = 50;
3
+ export declare function assertBulkEntryLimit(count: number, operation?: string): void;
4
+ export declare function resolveEntryRefs(fact: ModuleFactInput, batchModuleName?: string): EntryRefs | undefined;
5
+ export declare function buildUpsertKey(entry: {
6
+ kind: string;
7
+ title: string;
8
+ id?: string;
9
+ }, upsertBy: UpsertKeyField[]): string;
10
+ export declare function scopeToEntryFilter(scope: ReplaceEntriesScope): EntryFilter;
11
+ export declare function matchesEntryScope(entry: Entry, scope: ReplaceEntriesScope): boolean;
12
+ export declare function upsertFacts(projectId: string, facts: ModuleFactInput[], batchModuleName?: string): Promise<UpsertFactsResult>;
13
+ export declare function deleteEntriesByFilter(projectId: string, filter: EntryFilter): Promise<DeleteEntriesResult>;
14
+ export declare function replaceEntries(projectId: string, scope: ReplaceEntriesScope, entries: ModuleFactInput[], options?: {
15
+ upsertBy?: UpsertKeyField[];
16
+ deleteOrphans?: boolean;
17
+ batchModuleName?: string;
18
+ }): Promise<ReplaceEntriesResult>;
19
+ export declare function computeImportStats(entries: Entry[]): ImportStats;
20
+ export declare function validateImportEntries(projectId: string, entries: ModuleFactInput[], options?: {
21
+ upsertBy?: UpsertKeyField[];
22
+ checkDuplicates?: boolean;
23
+ checkModuleExists?: boolean;
24
+ }): Promise<ImportValidationResult>;
4
25
  //# sourceMappingURL=entry-sync.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"entry-sync.d.ts","sourceRoot":"","sources":["../src/entry-sync.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAoB,eAAe,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEvF,eAAO,MAAM,gBAAgB,MAAM,CAAC;AAEpC,wBAAsB,WAAW,CAC/B,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,eAAe,EAAE,EACxB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,iBAAiB,CAAC,CA2C5B"}
1
+ {"version":3,"file":"entry-sync.d.ts","sourceRoot":"","sources":["../src/entry-sync.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,mBAAmB,EACnB,KAAK,EACL,WAAW,EACX,SAAS,EACT,WAAW,EACX,sBAAsB,EAEtB,eAAe,EACf,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,EACf,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAEnC,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,SAAmB,GAAG,IAAI,CAMtF;AAED,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,eAAe,EACrB,eAAe,CAAC,EAAE,MAAM,GACvB,SAAS,GAAG,SAAS,CAWvB;AAED,wBAAgB,cAAc,CAC5B,KAAK,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE,EACnD,QAAQ,EAAE,cAAc,EAAE,GACzB,MAAM,CAYR;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,mBAAmB,GAAG,WAAW,CAO1E;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAkBnF;AAED,wBAAsB,WAAW,CAC/B,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,eAAe,EAAE,EACxB,eAAe,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,iBAAiB,CAAC,CAmC5B;AAED,wBAAsB,qBAAqB,CACzC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,mBAAmB,CAAC,CAM9B;AAED,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,mBAAmB,EAC1B,OAAO,EAAE,eAAe,EAAE,EAC1B,OAAO,CAAC,EAAE;IACR,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAC;IAC5B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,GACA,OAAO,CAAC,oBAAoB,CAAC,CA8D/B;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,WAAW,CAiBhE;AAED,wBAAsB,qBAAqB,CACzC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,eAAe,EAAE,EAC1B,OAAO,CAAC,EAAE;IACR,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAC;IAC5B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,GACA,OAAO,CAAC,sBAAsB,CAAC,CA+CjC"}
@@ -1,10 +1,64 @@
1
1
  import { v4 as uuidv4 } from 'uuid';
2
- import { findEntryByKindTitle, writeEntry } from './storage.js';
3
- export const MAX_BULK_ENTRIES = 200;
4
- export async function upsertFacts(projectId, facts, moduleName) {
5
- if (facts.length > MAX_BULK_ENTRIES) {
6
- throw new Error(`Too many facts: max ${MAX_BULK_ENTRIES} per call`);
2
+ import { deleteEntry, findEntryByKindTitle, loadEntries, readArchitecture, writeEntry, } from './storage.js';
3
+ export const MAX_BULK_ENTRIES = 50;
4
+ export function assertBulkEntryLimit(count, operation = 'bulk operation') {
5
+ if (count > MAX_BULK_ENTRIES) {
6
+ throw new Error(`Too many entries for ${operation}: max ${MAX_BULK_ENTRIES} per call. Split into batches of ~${MAX_BULK_ENTRIES}.`);
7
7
  }
8
+ }
9
+ export function resolveEntryRefs(fact, batchModuleName) {
10
+ const moduleName = fact.refs?.moduleName ?? batchModuleName;
11
+ const refs = {
12
+ ...fact.refs,
13
+ moduleName,
14
+ };
15
+ const hasRefs = refs.moduleName ||
16
+ (refs.files && refs.files.length > 0) ||
17
+ (refs.entryIds && refs.entryIds.length > 0);
18
+ return hasRefs ? refs : undefined;
19
+ }
20
+ export function buildUpsertKey(entry, upsertBy) {
21
+ return upsertBy
22
+ .map((field) => {
23
+ if (field === 'kind') {
24
+ return entry.kind;
25
+ }
26
+ if (field === 'title') {
27
+ return entry.title;
28
+ }
29
+ return entry.id ?? '';
30
+ })
31
+ .join('\0');
32
+ }
33
+ export function scopeToEntryFilter(scope) {
34
+ return {
35
+ kind: scope.kind,
36
+ kinds: scope.kinds,
37
+ moduleName: scope.moduleName,
38
+ tags: scope.tags,
39
+ };
40
+ }
41
+ export function matchesEntryScope(entry, scope) {
42
+ const filter = scopeToEntryFilter(scope);
43
+ if (filter.kind || filter.kinds?.length) {
44
+ const kinds = filter.kinds ?? (filter.kind ? [filter.kind] : []);
45
+ if (kinds.length && !kinds.includes(entry.kind)) {
46
+ return false;
47
+ }
48
+ }
49
+ if (filter.moduleName && entry.refs?.moduleName !== filter.moduleName) {
50
+ return false;
51
+ }
52
+ if (filter.tags?.length) {
53
+ const entryTags = entry.tags ?? [];
54
+ if (!filter.tags.some((tag) => entryTags.includes(tag))) {
55
+ return false;
56
+ }
57
+ }
58
+ return true;
59
+ }
60
+ export async function upsertFacts(projectId, facts, batchModuleName) {
61
+ assertBulkEntryLimit(facts.length, 'set-entries');
8
62
  const now = new Date().toISOString();
9
63
  let entriesCreated = 0;
10
64
  let entriesUpdated = 0;
@@ -12,18 +66,14 @@ export async function upsertFacts(projectId, facts, moduleName) {
12
66
  for (const fact of facts) {
13
67
  const existing = await findEntryByKindTitle(projectId, fact.kind, fact.title);
14
68
  const entryId = existing?.id ?? uuidv4();
15
- const refs = moduleName
16
- ? { ...fact.refs, moduleName }
17
- : fact.refs;
18
- const hasRefs = refs &&
19
- (refs.moduleName || (refs.files && refs.files.length > 0) || (refs.entryIds && refs.entryIds.length > 0));
69
+ const refs = resolveEntryRefs(fact, batchModuleName);
20
70
  const entry = {
21
71
  id: entryId,
22
72
  kind: fact.kind,
23
73
  title: fact.title,
24
74
  summary: fact.summary,
25
75
  payload: fact.payload,
26
- refs: hasRefs ? refs : undefined,
76
+ refs,
27
77
  tags: fact.tags,
28
78
  createdAt: existing?.createdAt ?? now,
29
79
  updatedAt: now,
@@ -39,4 +89,125 @@ export async function upsertFacts(projectId, facts, moduleName) {
39
89
  }
40
90
  return { entriesCreated, entriesUpdated, entryIds };
41
91
  }
92
+ export async function deleteEntriesByFilter(projectId, filter) {
93
+ const entries = await loadEntries(projectId, filter);
94
+ for (const entry of entries) {
95
+ await deleteEntry(projectId, entry.id);
96
+ }
97
+ return { deleted: entries.length };
98
+ }
99
+ export async function replaceEntries(projectId, scope, entries, options) {
100
+ assertBulkEntryLimit(entries.length, 'replace-entries');
101
+ const upsertBy = options?.upsertBy ?? ['kind', 'title'];
102
+ const deleteOrphans = options?.deleteOrphans ?? true;
103
+ const scopeHasFilter = Boolean(scope.kind || scope.kinds?.length || scope.moduleName || scope.tags?.length);
104
+ if (deleteOrphans && !scopeHasFilter) {
105
+ throw new Error('deleteOrphans requires scope with kind, moduleName, or tags');
106
+ }
107
+ const existingInScope = await loadEntries(projectId, scopeToEntryFilter(scope));
108
+ const existingByKey = new Map(existingInScope.map((entry) => [buildUpsertKey(entry, upsertBy), entry]));
109
+ const now = new Date().toISOString();
110
+ let created = 0;
111
+ let updated = 0;
112
+ const entryIds = [];
113
+ const seenKeys = new Set();
114
+ for (const fact of entries) {
115
+ const key = buildUpsertKey(fact, upsertBy);
116
+ seenKeys.add(key);
117
+ const existing = existingByKey.get(key) ?? (await findEntryByKindTitle(projectId, fact.kind, fact.title));
118
+ const entryId = existing?.id ?? uuidv4();
119
+ const refs = resolveEntryRefs(fact, options?.batchModuleName);
120
+ const entry = {
121
+ id: entryId,
122
+ kind: fact.kind,
123
+ title: fact.title,
124
+ summary: fact.summary,
125
+ payload: fact.payload,
126
+ refs,
127
+ tags: fact.tags,
128
+ createdAt: existing?.createdAt ?? now,
129
+ updatedAt: now,
130
+ };
131
+ await writeEntry(projectId, entry);
132
+ entryIds.push(entryId);
133
+ if (existing) {
134
+ updated += 1;
135
+ }
136
+ else {
137
+ created += 1;
138
+ }
139
+ }
140
+ let deleted = 0;
141
+ if (deleteOrphans) {
142
+ for (const existing of existingInScope) {
143
+ const key = buildUpsertKey(existing, upsertBy);
144
+ if (!seenKeys.has(key)) {
145
+ await deleteEntry(projectId, existing.id);
146
+ deleted += 1;
147
+ }
148
+ }
149
+ }
150
+ return { created, updated, deleted, entryIds };
151
+ }
152
+ export function computeImportStats(entries) {
153
+ const byKind = {};
154
+ const byModule = {};
155
+ const byTag = {};
156
+ for (const entry of entries) {
157
+ byKind[entry.kind] = (byKind[entry.kind] ?? 0) + 1;
158
+ const moduleName = entry.refs?.moduleName;
159
+ if (moduleName) {
160
+ byModule[moduleName] = (byModule[moduleName] ?? 0) + 1;
161
+ }
162
+ for (const tag of entry.tags ?? []) {
163
+ byTag[tag] = (byTag[tag] ?? 0) + 1;
164
+ }
165
+ }
166
+ return { byKind, byModule, byTag, total: entries.length };
167
+ }
168
+ export async function validateImportEntries(projectId, entries, options) {
169
+ assertBulkEntryLimit(entries.length, 'validate-import');
170
+ const upsertBy = options?.upsertBy ?? ['kind', 'title'];
171
+ const checkDuplicates = options?.checkDuplicates ?? true;
172
+ const checkModuleExists = options?.checkModuleExists ?? true;
173
+ const warnings = [];
174
+ if (checkDuplicates) {
175
+ const seen = new Map();
176
+ entries.forEach((entry, index) => {
177
+ const key = buildUpsertKey(entry, upsertBy);
178
+ const firstIndex = seen.get(key);
179
+ if (firstIndex !== undefined) {
180
+ warnings.push({
181
+ code: 'duplicate-key',
182
+ detail: `Duplicate ${upsertBy.join('+')} at indices ${firstIndex} and ${index}: ${entry.kind} / ${entry.title}`,
183
+ entryIndex: index,
184
+ });
185
+ }
186
+ else {
187
+ seen.set(key, index);
188
+ }
189
+ });
190
+ }
191
+ if (checkModuleExists) {
192
+ const architecture = await readArchitecture(projectId);
193
+ const moduleNames = new Set(architecture?.modules.map((module) => module.name) ?? []);
194
+ if (moduleNames.size > 0) {
195
+ entries.forEach((entry, index) => {
196
+ const moduleName = entry.refs?.moduleName;
197
+ if (moduleName && !moduleNames.has(moduleName)) {
198
+ warnings.push({
199
+ code: 'unknown-module',
200
+ detail: `Unknown module '${moduleName}' for ${entry.kind} / ${entry.title}`,
201
+ entryIndex: index,
202
+ });
203
+ }
204
+ });
205
+ }
206
+ }
207
+ return {
208
+ valid: warnings.length === 0,
209
+ warningCount: warnings.length,
210
+ warnings,
211
+ };
212
+ }
42
213
  //# sourceMappingURL=entry-sync.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"entry-sync.js","sourceRoot":"","sources":["../src/entry-sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAGhE,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAEpC,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,SAAiB,EACjB,KAAwB,EACxB,UAAmB;IAEnB,IAAI,KAAK,CAAC,MAAM,GAAG,gBAAgB,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,uBAAuB,gBAAgB,WAAW,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9E,MAAM,OAAO,GAAG,QAAQ,EAAE,EAAE,IAAI,MAAM,EAAE,CAAC;QACzC,MAAM,IAAI,GAA0B,UAAU;YAC5C,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE;YAC9B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAEd,MAAM,OAAO,GACX,IAAI;YACJ,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QAE5G,MAAM,KAAK,GAAU;YACnB,EAAE,EAAE,OAAO;YACX,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;YAChC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,QAAQ,EAAE,SAAS,IAAI,GAAG;YACrC,SAAS,EAAE,GAAG;SACf,CAAC;QAEF,MAAM,UAAU,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QACnC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,IAAI,QAAQ,EAAE,CAAC;YACb,cAAc,IAAI,CAAC,CAAC;QACtB,CAAC;aAAM,CAAC;YACN,cAAc,IAAI,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAED,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC;AACtD,CAAC"}
1
+ {"version":3,"file":"entry-sync.js","sourceRoot":"","sources":["../src/entry-sync.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=entry-sync.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entry-sync.test.d.ts","sourceRoot":"","sources":["../src/entry-sync.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entry-sync.test.js","sourceRoot":"","sources":["../src/entry-sync.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AAGzB,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,IAAI,GAAoB;YAC5B,IAAI,EAAE,eAAe;YACrB,KAAK,EAAE,QAAQ;YACf,OAAO,EAAE,GAAG;YACZ,IAAI,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE;SACpD,CAAC;QACF,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC5C,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,IAAI,GAAoB;YAC5B,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,SAAS;YAChB,OAAO,EAAE,MAAM;YACf,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,WAAW,CAAC,EAAE;SAC/B,CAAC;QACF,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAChD,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,GAAG,GAAG,cAAc,CACxB,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,cAAc,EAAE,EAChD,CAAC,MAAM,EAAE,OAAO,CAAC,CAClB,CAAC;QACF,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,iCAAiC,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,MAAM,KAAK,GAAU;QACnB,EAAE,EAAE,GAAG;QACP,IAAI,EAAE,eAAe;QACrB,KAAK,EAAE,SAAS;QAChB,OAAO,EAAE,IAAI;QACb,IAAI,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE;QAChC,IAAI,EAAE,CAAC,IAAI,CAAC;QACZ,SAAS,EAAE,0BAA0B;QACrC,SAAS,EAAE,0BAA0B;KACtC,CAAC;IAEF,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,CAAC,KAAK,CACV,iBAAiB,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,EAC3E,IAAI,CACL,CAAC;QACF,MAAM,CAAC,KAAK,CACV,iBAAiB,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,EACvE,KAAK,CACN,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE;QAC3B,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QAC/D,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,OAAO,GAAY;YACvB;gBACE,EAAE,EAAE,GAAG;gBACP,IAAI,EAAE,eAAe;gBACrB,KAAK,EAAE,GAAG;gBACV,OAAO,EAAE,GAAG;gBACZ,IAAI,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE;gBAChC,IAAI,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC;gBACnB,SAAS,EAAE,0BAA0B;gBACrC,SAAS,EAAE,0BAA0B;aACtC;YACD;gBACE,EAAE,EAAE,GAAG;gBACP,IAAI,EAAE,MAAM;gBACZ,KAAK,EAAE,GAAG;gBACV,OAAO,EAAE,GAAG;gBACZ,IAAI,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE;gBAChC,IAAI,EAAE,CAAC,IAAI,CAAC;gBACZ,SAAS,EAAE,0BAA0B;gBACrC,SAAS,EAAE,0BAA0B;aACtC;SACF,CAAC;QACF,MAAM,KAAK,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAC1C,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC7B,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/C,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACnC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAChC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,CAAC,MAAM,CACX,GAAG,EAAE,CAAC,oBAAoB,CAAC,gBAAgB,GAAG,CAAC,EAAE,aAAa,CAAC,EAC/D,iBAAiB,CAClB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;QAC/C,MAAM,OAAO,GAAsB;YACjC,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE;YACxD,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE;SACzD,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,cAAc,EAAE,OAAO,EAAE;YAClE,iBAAiB,EAAE,KAAK;SACzB,CAAC,CAAC;QACH,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAClC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,eAAe,CAAC,CAAC,CAAC;IACjF,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
package/dist/index.js CHANGED
@@ -9,7 +9,8 @@ import { v4 as uuidv4 } from "uuid";
9
9
  import { readArchitecture, writeArchitecture, readModule, writeModule, deleteModule, listProjects, normalizeProjectId, rebuildEntryIndex, } from "./storage.js";
10
10
  import { registerEntriesAndSlicesTools } from "./tools-entries-slices.js";
11
11
  import { MODULE_ENTRIES_REMINDER, suggestKindsFromFiles } from "./agent-hints.js";
12
- import { upsertFacts } from "./entry-sync.js";
12
+ import { upsertFacts, MAX_BULK_ENTRIES } from "./entry-sync.js";
13
+ import { BULK_BATCH_GUIDANCE } from "./agent-hints.js";
13
14
  import { runProjectValidation } from "./project-validate.js";
14
15
  import { buildDataFlowFromDependsOn, buildDataFlowFromModules, diffFlowEdges, mergeDataFlow, mergeModules, pruneDataFlow, recomputeProvidesTo, removeModuleFromDataFlow, syncModuleDependsOn, } from "./data-flow.js";
15
16
  function resolveProjectId(provided) {
@@ -181,6 +182,7 @@ server.registerTool("list-projects", {
181
182
  */
182
183
  const moduleFactRefsSchema = z
183
184
  .object({
185
+ moduleName: z.string().optional().describe("Module name; set-module-details sets this automatically"),
184
186
  files: z.array(z.string()).optional(),
185
187
  entryIds: z.array(z.string()).optional(),
186
188
  })
@@ -195,7 +197,9 @@ const moduleFactSchema = z.object({
195
197
  });
196
198
  server.registerTool("set-module-details", {
197
199
  title: "Set Module Details",
198
- description: "Creates or updates one vertical module (files, dependencies, dataFlow sync). IMPORTANT: Slices (api, domain, persistence) are built from entries, not from module text. When adding or updating a module, also add entries this module owns: pass facts[] (http-endpoint, entity, glossary, …) in this call, or call set-entry / set-entries with refs.moduleName=<module name>. Without entries, get-slice will be empty for this module. After edits call validate to verify links. Does not replace other modules. Prefer over set-project-architecture for single-module edits.",
200
+ description: "Creates or updates one vertical module (files, dependencies, dataFlow sync). IMPORTANT: Slices (api, domain, persistence) are built from entries, not from module text. When adding or updating a module, also add entries this module owns: pass facts[] (http-endpoint, entity, glossary, …) in this call (max 50 per call), or call set-entry / set-entries in 50-entry batches with refs.moduleName=<module name>. " +
201
+ BULK_BATCH_GUIDANCE +
202
+ " Without entries, get-slice will be empty for this module. After edits call validate to verify links. Does not replace other modules. Prefer over set-project-architecture for single-module edits.",
199
203
  inputSchema: {
200
204
  projectId: z.string().optional().describe("Project ID (defaults to normalized workdir)"),
201
205
  name: z.string().describe("Module name"),
@@ -209,8 +213,9 @@ server.registerTool("set-module-details", {
209
213
  .describe("Files belonging to this module; add matching entry kinds per Controller/Repository"),
210
214
  facts: z
211
215
  .array(moduleFactSchema)
216
+ .max(MAX_BULK_ENTRIES)
212
217
  .optional()
213
- .describe("Horizontal facts for this module (APIs, entities, terms). Preferred over separate set-entry calls. Each becomes an entry with refs.moduleName set automatically. Omit only for skeleton modules."),
218
+ .describe(`Horizontal facts for this module (APIs, entities, terms). Max ${MAX_BULK_ENTRIES} per call; use set-entries for more. Each becomes an entry with refs.moduleName set automatically.`),
214
219
  usageExamples: z.array(z.object({
215
220
  title: z.string().describe("Example title"),
216
221
  description: z.string().optional().describe("Description of the example"),
@@ -636,11 +641,7 @@ const validationInputSchema = {
636
641
  checkModuleEntryCounts: z
637
642
  .boolean()
638
643
  .optional()
639
- .describe("Check module entry count thresholds (default true)"),
640
- moduleEntryMax: z
641
- .number()
642
- .optional()
643
- .describe("Max entries per module before module-too-many-entries (default 50)"),
644
+ .describe("Check module-too-few-entries when moduleEntryMin is set (default true)"),
644
645
  moduleEntryMin: z
645
646
  .number()
646
647
  .optional()
@@ -656,7 +657,6 @@ async function runValidationTool(params) {
656
657
  checkEmptySlices: params.checkEmptySlices,
657
658
  checkSliceCoverage: params.checkSliceCoverage,
658
659
  checkModuleEntryCounts: params.checkModuleEntryCounts,
659
- moduleEntryMax: params.moduleEntryMax,
660
660
  moduleEntryMin: params.moduleEntryMin,
661
661
  });
662
662
  const text = `${result.summary}\n\n${JSON.stringify(result, null, 2)}`;
@@ -667,7 +667,7 @@ async function runValidationTool(params) {
667
667
  }
668
668
  server.registerTool("validate", {
669
669
  title: "Validate Project",
670
- description: "Run after set-project-architecture, set-module-details, set-entry, or set-entries. Returns a compact report (summary, stats, issues by kind)—no need to load the full project in the agent. Checks only known rules: dataFlow consistency, module↔entry links, module detail files, entry index drift, empty api/domain/persistence slices, entry slice coverage, module entry count thresholds. Fix issues[] then call validate again.",
670
+ description: "Run after set-project-architecture, set-module-details, set-entry, or set-entries. Returns a compact report (summary, stats, issues by kind)—no need to load the full project in the agent. Checks only known rules: dataFlow consistency, module↔entry links, module detail files, entry index drift, empty api/domain/persistence slices, entry slice coverage, optional module-too-few-entries when moduleEntryMin is set. Fix issues[] then call validate again.",
671
671
  inputSchema: validationInputSchema,
672
672
  outputSchema: validationOutputSchema,
673
673
  }, async (params) => runValidationTool(params));