aidoc-kit 1.3.1 → 1.3.3

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.
@@ -1,5 +1,15 @@
1
1
  import type { ScanResult } from '../types';
2
2
  export declare function writeKnowledgeBase(result: ScanResult, projectRoot: string): void;
3
+ export declare const AGENTS_GENERATED_START = "<!-- aidoc-kit:generated:start \u2014 do not edit inside this block, it is rewritten by aidoc-kit -->";
4
+ export declare const AGENTS_GENERATED_END = "<!-- aidoc-kit:generated:end -->";
5
+ /**
6
+ * Merge the generated block into an existing AGENTS.md without destroying
7
+ * hand-written content:
8
+ * - no existing file, or a fully generated legacy file → generated block alone
9
+ * - existing markers → only the content between them is replaced
10
+ * - hand-written file without markers → preserved as is, block appended
11
+ */
12
+ export declare function mergeAgentsMd(existing: string | null, generatedBlock: string): string;
3
13
  export declare function writeAgentsMd(result: ScanResult, projectRoot: string): void;
4
14
  export declare function writeDocBlock(filePath: string, docBlock: string): void;
5
15
  //# sourceMappingURL=writer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../../src/core/writer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAA6B,UAAU,EAAE,MAAM,UAAU,CAAA;AAKrE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAKhF;AAID,wBAAgB,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CA2G3E;AAID,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAetE"}
1
+ {"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../../src/core/writer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAA6B,UAAU,EAAE,MAAM,UAAU,CAAA;AAKrE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAKhF;AAID,eAAO,MAAM,sBAAsB,0GAAqG,CAAA;AACxI,eAAO,MAAM,oBAAoB,qCAAqC,CAAA;AAEtE;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAarF;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAqH3E;AAID,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAetE"}
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AGENTS_GENERATED_END = exports.AGENTS_GENERATED_START = void 0;
3
4
  exports.writeKnowledgeBase = writeKnowledgeBase;
5
+ exports.mergeAgentsMd = mergeAgentsMd;
4
6
  exports.writeAgentsMd = writeAgentsMd;
5
7
  exports.writeDocBlock = writeDocBlock;
6
8
  const node_fs_1 = require("node:fs");
@@ -14,9 +16,32 @@ function writeKnowledgeBase(result, projectRoot) {
14
16
  (0, node_fs_1.writeFileSync)((0, node_path_1.join)(outDir, 'ai-knowledge-base.json'), JSON.stringify(kb, null, 2), 'utf-8');
15
17
  }
16
18
  // ─── AGENTS.md ─────────────────────────────────────────────────────────────
19
+ exports.AGENTS_GENERATED_START = '<!-- aidoc-kit:generated:start — do not edit inside this block, it is rewritten by aidoc-kit -->';
20
+ exports.AGENTS_GENERATED_END = '<!-- aidoc-kit:generated:end -->';
21
+ /**
22
+ * Merge the generated block into an existing AGENTS.md without destroying
23
+ * hand-written content:
24
+ * - no existing file, or a fully generated legacy file → generated block alone
25
+ * - existing markers → only the content between them is replaced
26
+ * - hand-written file without markers → preserved as is, block appended
27
+ */
28
+ function mergeAgentsMd(existing, generatedBlock) {
29
+ if (existing === null)
30
+ return generatedBlock + '\n';
31
+ const start = existing.indexOf(exports.AGENTS_GENERATED_START);
32
+ const end = existing.indexOf(exports.AGENTS_GENERATED_END);
33
+ if (start !== -1 && end > start) {
34
+ return existing.slice(0, start) + generatedBlock + existing.slice(end + exports.AGENTS_GENERATED_END.length);
35
+ }
36
+ // Legacy file entirely produced by aidoc-kit < 1.3.3 (no markers yet)
37
+ if (/^# AGENTS\s*\n+> Generated by aidoc-kit/.test(existing))
38
+ return generatedBlock + '\n';
39
+ return existing.trimEnd() + '\n\n' + generatedBlock + '\n';
40
+ }
17
41
  function writeAgentsMd(result, projectRoot) {
18
42
  const kb = buildKnowledgeBase(result.docs);
19
43
  const lines = [
44
+ exports.AGENTS_GENERATED_START,
20
45
  '# AGENTS',
21
46
  '',
22
47
  `> Generated by aidoc-kit on ${new Date().toISOString().slice(0, 10)}`,
@@ -55,7 +80,16 @@ function writeAgentsMd(result, projectRoot) {
55
80
  lines.push('## Files without @ai-* documentation', '', `${result.filesWithoutDocs.length} file(s) without \`@ai-*\` block detected.`, 'The developer can generate the missing blocks with:', '', '```bash', 'npx aidoc-kit scan --write --yes', '```', '', '> **Note for AI agents**: do not run this command yourself.', '> Report it to the developer if you notice undocumented files.', '');
56
81
  }
57
82
  lines.push('## Large files — read the chunk before modifying', '', 'Files over 150 lines have a structured summary in `.codemod/chunks/`.', 'Before modifying a large file, **read the corresponding `.md` file** in that folder.', 'Do not try to read the source file in full — use the chunk.', '', 'Example: before modifying `src/contexts/auth-context.tsx`', '=> Read `.codemod/chunks/src/contexts/auth-context.tsx.md`', '', '> Chunks are generated and maintained by the developer via `npx aidoc-kit chunk`.', '> If a chunk is missing, ask the developer to run this command.', '> **Note for AI agents**: aidoc-kit must be installed as a dev dep (`npm install -D aidoc-kit`).', '> All aidoc-kit commands should be delegated to the developer, not run directly.', '');
58
- (0, node_fs_1.writeFileSync)((0, node_path_1.join)(projectRoot, 'AGENTS.md'), lines.join('\n'), 'utf-8');
83
+ lines.push(exports.AGENTS_GENERATED_END);
84
+ const path = (0, node_path_1.join)(projectRoot, 'AGENTS.md');
85
+ let existing = null;
86
+ try {
87
+ existing = (0, node_fs_1.readFileSync)(path, 'utf-8');
88
+ }
89
+ catch {
90
+ // no existing file
91
+ }
92
+ (0, node_fs_1.writeFileSync)(path, mergeAgentsMd(existing, lines.join('\n')), 'utf-8');
59
93
  }
60
94
  // ─── Prepend doc block to a file ──────────────────────────────────────────
61
95
  function writeDocBlock(filePath, docBlock) {
@@ -1 +1 @@
1
- {"version":3,"file":"writer.js","sourceRoot":"","sources":["../../src/core/writer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"writer.js","sourceRoot":"","sources":["../../src/core/writer.ts"],"names":[],"mappings":";;;AAOA,gDAKC;AAcD,sCAaC;AAED,sCAqHC;AAID,sCAeC;AAjLD,qCAAgE;AAChE,yCAAgC;AAEhC,oDAAuE;AAEvE,8EAA8E;AAE9E,SAAgB,kBAAkB,CAAC,MAAkB,EAAE,WAAmB;IACxE,MAAM,MAAM,GAAG,IAAA,gBAAI,EAAC,WAAW,EAAE,UAAU,CAAC,CAAA;IAC5C,IAAA,mBAAS,EAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACtC,MAAM,EAAE,GAAG,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAC1C,IAAA,uBAAa,EAAC,IAAA,gBAAI,EAAC,MAAM,EAAE,wBAAwB,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;AAC7F,CAAC;AAED,8EAA8E;AAEjE,QAAA,sBAAsB,GAAG,kGAAkG,CAAA;AAC3H,QAAA,oBAAoB,GAAG,kCAAkC,CAAA;AAEtE;;;;;;GAMG;AACH,SAAgB,aAAa,CAAC,QAAuB,EAAE,cAAsB;IAC3E,IAAI,QAAQ,KAAK,IAAI;QAAE,OAAO,cAAc,GAAG,IAAI,CAAA;IAEnD,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,8BAAsB,CAAC,CAAA;IACtD,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,4BAAoB,CAAC,CAAA;IAClD,IAAI,KAAK,KAAK,CAAC,CAAC,IAAI,GAAG,GAAG,KAAK,EAAE,CAAC;QAChC,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,cAAc,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,4BAAoB,CAAC,MAAM,CAAC,CAAA;IACtG,CAAC;IAED,sEAAsE;IACtE,IAAI,yCAAyC,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,OAAO,cAAc,GAAG,IAAI,CAAA;IAE1F,OAAO,QAAQ,CAAC,OAAO,EAAE,GAAG,MAAM,GAAG,cAAc,GAAG,IAAI,CAAA;AAC5D,CAAC;AAED,SAAgB,aAAa,CAAC,MAAkB,EAAE,WAAmB;IACnE,MAAM,EAAE,GAAG,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAC1C,MAAM,KAAK,GAAa;QACtB,8BAAsB;QACtB,UAAU;QACV,EAAE;QACF,+BAA+B,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;QACtE,KAAK,MAAM,CAAC,YAAY,oBAAoB,MAAM,CAAC,IAAI,CAAC,MAAM,kBAAkB;QAChF,EAAE;KACH,CAAA;IAED,qEAAqE;IACrE,4DAA4D;IAC5D,MAAM,KAAK,GAAG,IAAA,8BAAiB,EAAC,WAAW,CAAC,CAAA;IAC5C,IAAI,KAAK,EAAE,CAAC;QACV,KAAK,CAAC,IAAI,CACR,iDAAiD,EACjD,EAAE,EACF,KAAK,2BAAc,oEAAoE,EACvF,6DAA6D,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAC7F,gCAAgC,KAAK,CAAC,KAAK,CAAC,KAAK,WAAW,KAAK,CAAC,KAAK,CAAC,KAAK,SAAS,EACtF,EAAE,EACF,sBAAsB,EACtB,EAAE,EACF,mBAAmB,2BAAc,oDAAoD,EACrF,qFAAqF,EACrF,mDAAmD,EACnD,2DAA2D,EAC3D,0FAA0F,EAC1F,6FAA6F,EAC7F,EAAE,EACF,6BAA6B,EAC7B,EAAE,EACF,SAAS,EACT,8CAA8C,EAC9C,+BAA+B,2BAAc,yDAAyD,EACtG,EAAE,EACF,2DAA2D,EAC3D,+BAA+B,2BAAc,sFAAsF,EACnI,EAAE,EACF,uBAAuB,EACvB,+BAA+B,2BAAc,wFAAwF,EACrI,KAAK,EACL,EAAE,CACH,CAAA;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CACR,6BAA6B,EAC7B,EAAE,CACH,CAAA;IAED,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;QACtD,KAAK,CAAC,IAAI,CAAC,OAAO,KAAK,EAAE,EAAE,EAAE,CAAC,CAAA;QAC9B,KAAK,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;QAC5C,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;QAC7D,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE;YAAE,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,SAAS,CAAC,CAAA;QAC9E,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,qBAAqB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACpE,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAChB,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAA;QAChC,KAAK,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;YAC7D,KAAK,CAAC,IAAI,CAAC,OAAO,OAAO,KAAK,KAAK,CAAC,MAAM,SAAS,EAAE,EAAE,CAAC,CAAA;YACxD,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;YACxD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,MAAM,GAAG,CAAC,SAAS,CAAC,CAAA;YACpE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAChB,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvC,KAAK,CAAC,IAAI,CACR,sCAAsC,EACtC,EAAE,EACF,GAAG,MAAM,CAAC,gBAAgB,CAAC,MAAM,4CAA4C,EAC7E,qDAAqD,EACrD,EAAE,EACF,SAAS,EACT,kCAAkC,EAClC,KAAK,EACL,EAAE,EACF,6DAA6D,EAC7D,gEAAgE,EAChE,EAAE,CACH,CAAA;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CACR,kDAAkD,EAClD,EAAE,EACF,uEAAuE,EACvE,sFAAsF,EACtF,6DAA6D,EAC7D,EAAE,EACF,2DAA2D,EAC3D,4DAA4D,EAC5D,EAAE,EACF,mFAAmF,EACnF,iEAAiE,EACjE,kGAAkG,EAClG,kFAAkF,EAClF,EAAE,CACH,CAAA;IAED,KAAK,CAAC,IAAI,CAAC,4BAAoB,CAAC,CAAA;IAEhC,MAAM,IAAI,GAAG,IAAA,gBAAI,EAAC,WAAW,EAAE,WAAW,CAAC,CAAA;IAC3C,IAAI,QAAQ,GAAkB,IAAI,CAAA;IAClC,IAAI,CAAC;QACH,QAAQ,GAAG,IAAA,sBAAY,EAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,mBAAmB;IACrB,CAAC;IACD,IAAA,uBAAa,EAAC,IAAI,EAAE,aAAa,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;AACzE,CAAC;AAED,6EAA6E;AAE7E,SAAgB,aAAa,CAAC,QAAgB,EAAE,QAAgB;IAC9D,MAAM,QAAQ,GAAG,IAAA,sBAAY,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IAChD,2EAA2E;IAC3E,4EAA4E;IAC5E,IAAI,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC;QAAE,OAAM,CAAC,qBAAqB;IAEpE,6EAA6E;IAC7E,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QACzC,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC,CAAA;QACjD,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAA;QAC3C,IAAA,uBAAa,EAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,GAAG,IAAI,GAAG,IAAI,EAAE,OAAO,CAAC,CAAA;IACpE,CAAC;SAAM,CAAC;QACN,IAAA,uBAAa,EAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,GAAG,QAAQ,EAAE,OAAO,CAAC,CAAA;IAC9D,CAAC;AACH,CAAC;AAED,+EAA+E;AAE/E,SAAS,kBAAkB,CAAC,IAAkB;IAC5C,MAAM,MAAM,GAA4B,EAAE,CAAA;IAC1C,MAAM,YAAY,GAA6B,EAAE,CAAA;IACjD,MAAM,UAAU,GAA6B,EAAE,CAAA;IAC/C,MAAM,kBAAkB,GAA6B,EAAE,CAAA;IAEvD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,kBAAkB;QAClB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CAAA;QACzE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAErC,2CAA2C;QAC3C,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YAC9B,IAAI,CAAC,GAAG;gBAAE,SAAQ;YAClB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;gBAAE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CAAA;YAC7D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBACjD,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;YACzC,CAAC;QACH,CAAC;QAED,gBAAgB;QAChB,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,OAAO,CAAA;QAEhE,cAAc;QACd,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,IAAI,WAAW,CAAA;QACrC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAAE,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,CAAA;QACxC,UAAU,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAE7B,sBAAsB;QACtB,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;YACjB,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAAE,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAA;YAC5E,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACjD,CAAC;IACH,CAAC;IAED,OAAO,EAAE,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,kBAAkB,EAAE,CAAA;AACxG,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=writer.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"writer.test.d.ts","sourceRoot":"","sources":["../../src/core/writer.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const node_test_1 = require("node:test");
7
+ const strict_1 = __importDefault(require("node:assert/strict"));
8
+ const writer_1 = require("./writer");
9
+ const block = `${writer_1.AGENTS_GENERATED_START}\n# AGENTS\n\n> Generated by aidoc-kit on 2026-09-15\ncontent v2\n${writer_1.AGENTS_GENERATED_END}`;
10
+ (0, node_test_1.test)('mergeAgentsMd: no existing file → generated block alone', () => {
11
+ strict_1.default.equal((0, writer_1.mergeAgentsMd)(null, block), block + '\n');
12
+ });
13
+ (0, node_test_1.test)('mergeAgentsMd: hand-written file is preserved, block appended', () => {
14
+ const manual = '# Mes règles projet\n\nNe jamais toucher à la CSP sans validation.\n';
15
+ const merged = (0, writer_1.mergeAgentsMd)(manual, block);
16
+ strict_1.default.ok(merged.startsWith('# Mes règles projet'));
17
+ strict_1.default.ok(merged.includes('Ne jamais toucher à la CSP'));
18
+ strict_1.default.ok(merged.includes('content v2'));
19
+ });
20
+ (0, node_test_1.test)('mergeAgentsMd: only the marked block is replaced on re-run', () => {
21
+ const manual = '# Mes règles projet\n\nRègle manuelle.\n';
22
+ const v1 = (0, writer_1.mergeAgentsMd)(manual, block);
23
+ const blockV3 = block.replace('content v2', 'content v3');
24
+ const v2 = (0, writer_1.mergeAgentsMd)(v1, blockV3);
25
+ strict_1.default.ok(v2.includes('Règle manuelle.'));
26
+ strict_1.default.ok(v2.includes('content v3'));
27
+ strict_1.default.ok(!v2.includes('content v2'));
28
+ // idempotent: a third run with the same block changes nothing
29
+ strict_1.default.equal((0, writer_1.mergeAgentsMd)(v2, blockV3), v2);
30
+ });
31
+ (0, node_test_1.test)('mergeAgentsMd: legacy fully generated file is replaced, not duplicated', () => {
32
+ const legacy = '# AGENTS\n\n> Generated by aidoc-kit on 2026-09-10\nold content\n';
33
+ const merged = (0, writer_1.mergeAgentsMd)(legacy, block);
34
+ strict_1.default.equal(merged, block + '\n');
35
+ strict_1.default.ok(!merged.includes('old content'));
36
+ });
37
+ (0, node_test_1.test)('mergeAgentsMd: manual content after the block survives re-runs', () => {
38
+ const withTrailer = block + '\n\n## Notes ajoutées à la main\nGarder ceci.\n';
39
+ const merged = (0, writer_1.mergeAgentsMd)(withTrailer, block.replace('content v2', 'content v3'));
40
+ strict_1.default.ok(merged.includes('Garder ceci.'));
41
+ strict_1.default.ok(merged.includes('content v3'));
42
+ });
43
+ //# sourceMappingURL=writer.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"writer.test.js","sourceRoot":"","sources":["../../src/core/writer.test.ts"],"names":[],"mappings":";;;;;AAAA,yCAAgC;AAChC,gEAAuC;AACvC,qCAAsF;AAEtF,MAAM,KAAK,GAAG,GAAG,+BAAsB,qEAAqE,6BAAoB,EAAE,CAAA;AAElI,IAAA,gBAAI,EAAC,yDAAyD,EAAE,GAAG,EAAE;IACnE,gBAAM,CAAC,KAAK,CAAC,IAAA,sBAAa,EAAC,IAAI,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,CAAA;AACxD,CAAC,CAAC,CAAA;AAEF,IAAA,gBAAI,EAAC,+DAA+D,EAAE,GAAG,EAAE;IACzE,MAAM,MAAM,GAAG,sEAAsE,CAAA;IACrF,MAAM,MAAM,GAAG,IAAA,sBAAa,EAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IAC3C,gBAAM,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC,CAAA;IACnD,gBAAM,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,4BAA4B,CAAC,CAAC,CAAA;IACxD,gBAAM,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAA;AAC1C,CAAC,CAAC,CAAA;AAEF,IAAA,gBAAI,EAAC,4DAA4D,EAAE,GAAG,EAAE;IACtE,MAAM,MAAM,GAAG,0CAA0C,CAAA;IACzD,MAAM,EAAE,GAAG,IAAA,sBAAa,EAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IACvC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE,YAAY,CAAC,CAAA;IACzD,MAAM,EAAE,GAAG,IAAA,sBAAa,EAAC,EAAE,EAAE,OAAO,CAAC,CAAA;IACrC,gBAAM,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAA;IACzC,gBAAM,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAA;IACpC,gBAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAA;IACrC,8DAA8D;IAC9D,gBAAM,CAAC,KAAK,CAAC,IAAA,sBAAa,EAAC,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAA;AAC9C,CAAC,CAAC,CAAA;AAEF,IAAA,gBAAI,EAAC,wEAAwE,EAAE,GAAG,EAAE;IAClF,MAAM,MAAM,GAAG,mEAAmE,CAAA;IAClF,MAAM,MAAM,GAAG,IAAA,sBAAa,EAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IAC3C,gBAAM,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,GAAG,IAAI,CAAC,CAAA;IAClC,gBAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAA;AAC5C,CAAC,CAAC,CAAA;AAEF,IAAA,gBAAI,EAAC,gEAAgE,EAAE,GAAG,EAAE;IAC1E,MAAM,WAAW,GAAG,KAAK,GAAG,iDAAiD,CAAA;IAC7E,MAAM,MAAM,GAAG,IAAA,sBAAa,EAAC,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC,CAAA;IACpF,gBAAM,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAA;IAC1C,gBAAM,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAA;AAC1C,CAAC,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"basicEnricher.d.ts","sourceRoot":"","sources":["../../src/enricher/basicEnricher.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EACV,gBAAgB,EAEhB,aAAa,EACb,QAAQ,EACR,QAAQ,EACT,MAAM,gBAAgB,CAAA;AAOvB;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAmB7F;AAcD,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAGnD;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAK3E;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAKhE;AAID;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,GAAG,aAAa,CAsD7E"}
1
+ {"version":3,"file":"basicEnricher.d.ts","sourceRoot":"","sources":["../../src/enricher/basicEnricher.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EACV,gBAAgB,EAEhB,aAAa,EACb,QAAQ,EACR,QAAQ,EACT,MAAM,gBAAgB,CAAA;AAavB;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAqB7F;AAcD,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAGnD;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAK3E;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAKhE;AAID;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,GAAG,aAAa,CAsD7E"}
@@ -30,6 +30,11 @@ const node_path_1 = require("node:path");
30
30
  // ─── Role inference ────────────────────────────────────────────────────────
31
31
  const SERVER_PATH_PATTERN = /(^|\/)(app\/api|pages\/api|server|api)(\/|$)/;
32
32
  const CLIENT_HOOKS_PATTERN = /\buseState\b|\buseEffect\b|\buseRef\b|\buseReducer\b|\buseCallback\b|\buseMemo\b/;
33
+ // App Router entry files are Server Components by default. Only entry files
34
+ // are safe to classify this way: a shared component under app/ can still be
35
+ // pulled into a client bundle when imported from a 'use client' boundary.
36
+ // error/global-error are excluded — Next.js requires the directive on them.
37
+ const APP_ENTRY_PATTERN = /(^|\/)app\/(?:.*\/)?(page|layout|template|loading|not-found|default|route|sitemap|robots|manifest|opengraph-image|twitter-image|icon|apple-icon)\.[jt]sx?$/;
33
38
  /**
34
39
  * Infer the execution role of a file. Explicit directives win, then path
35
40
  * conventions (Next.js API routes, server/ folders, .server/.client
@@ -49,6 +54,9 @@ function inferRole(relPath, source) {
49
54
  return { role: 'server', reason: '.server file suffix' };
50
55
  if (/\.client\.[jt]sx?$/.test(normalized))
51
56
  return { role: 'client', reason: '.client file suffix' };
57
+ const entryMatch = normalized.match(APP_ENTRY_PATTERN);
58
+ if (entryMatch)
59
+ return { role: 'server', reason: `App Router entry ${entryMatch[2]} (RSC default)` };
52
60
  const serverMatch = normalized.match(SERVER_PATH_PATTERN);
53
61
  if (serverMatch)
54
62
  return { role: 'server', reason: `server path (${serverMatch[2]}/)` };
@@ -1 +1 @@
1
- {"version":3,"file":"basicEnricher.js","sourceRoot":"","sources":["../../src/enricher/basicEnricher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"basicEnricher.js","sourceRoot":"","sources":["../../src/enricher/basicEnricher.ts"],"names":[],"mappings":";;AA+CA,8BAqBC;AAcD,8BAGC;AAQD,gDAKC;AAED,4CAKC;AASD,kCAsDC;AAxKD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qCAAsC;AACtC,yCAAgC;AAShC,8EAA8E;AAE9E,MAAM,mBAAmB,GAAG,8CAA8C,CAAA;AAC1E,MAAM,oBAAoB,GAAG,kFAAkF,CAAA;AAC/G,4EAA4E;AAC5E,4EAA4E;AAC5E,0EAA0E;AAC1E,4EAA4E;AAC5E,MAAM,iBAAiB,GACrB,4JAA4J,CAAA;AAE9J;;;;;GAKG;AACH,SAAgB,SAAS,CAAC,OAAe,EAAE,MAAc;IACvD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IACjC,IAAI,4CAA4C,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5D,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,wBAAwB,EAAE,CAAA;IAC7D,CAAC;IACD,IAAI,4CAA4C,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5D,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,wBAAwB,EAAE,CAAA;IAC7D,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IAC9C,IAAI,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAA;IACnG,IAAI,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAA;IACnG,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAA;IACtD,IAAI,UAAU;QAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,oBAAoB,UAAU,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAA;IACpG,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAA;IACzD,IAAI,WAAW;QAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,gBAAgB,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;IAEtF,IAAI,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,uBAAuB,EAAE,CAAA;IACrG,IAAI,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAA;IAE7F,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,yBAAyB,EAAE,CAAA;AACjE,CAAC;AAED,8EAA8E;AAE9E,MAAM,YAAY,GAA0C;IAC1D,CAAC,KAAK,EAAE,uCAAuC,CAAC;IAChD,CAAC,MAAM,EAAE,OAAO,CAAC;IACjB,CAAC,SAAS,EAAE,kBAAkB,CAAC;IAC/B,CAAC,SAAS,EAAE,0BAA0B,CAAC;CACxC,CAAA;AAED,6DAA6D;AAC7D,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAA;AAE9D,SAAgB,SAAS,CAAC,OAAe;IACvC,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IAC9C,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAA;AAC3F,CAAC;AAED;;;;;GAKG;AACH,SAAgB,kBAAkB,CAAC,QAAgB,EAAE,IAAc;IACjE,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAA;IACtC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,KAAK,IAAI,EAAE,CAAA;IACrC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAAE,KAAK,IAAI,EAAE,CAAA;IACtD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;AAC7B,CAAC;AAED,SAAgB,gBAAgB,CAAC,KAAa;IAC5C,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,UAAU,CAAA;IAClC,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,MAAM,CAAA;IAC9B,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,QAAQ,CAAA;IAChC,OAAO,KAAK,CAAA;AACd,CAAC;AAED,8EAA8E;AAE9E;;;;GAIG;AACH,SAAgB,WAAW,CAAC,GAAa,EAAE,WAAmB;IAC5D,qEAAqE;IACrE,MAAM,UAAU,GAAG,IAAI,GAAG,EAAuB,CAAA;IACjD,MAAM,YAAY,GAAG,IAAI,GAAG,EAAuB,CAAA;IACnD,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAAE,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;QAChE,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACvC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;QACxE,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC3C,CAAC;IAED,MAAM,KAAK,GAAmB,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;QAC9C,IAAI,MAAM,GAAG,EAAE,CAAA;QACf,IAAI,CAAC;YACH,MAAM,GAAG,IAAA,sBAAY,EAAC,IAAA,gBAAI,EAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAA;QAC3D,CAAC;QAAC,MAAM,CAAC;YACP,iEAAiE;QACnE,CAAC;QACD,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QAClD,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QAC9B,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,CAAA;QAClD,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,CAAA;QACrD,MAAM,WAAW,GAAG,kBAAkB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;QAEtD,OAAO;YACL,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,IAAI;YACJ,UAAU,EAAE,MAAM;YAClB,WAAW;YACX,gBAAgB,EAAE,gBAAgB,CAAC,WAAW,CAAC;YAC/C,QAAQ;YACR,SAAS;YACT,IAAI;YACJ,WAAW,EAAE,CAAC,CAAC,WAAW;SAC3B,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,MAAM,SAAS,GAAG,CAAC,IAAc,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,MAAM,CAAA;IAE/E,OAAO;QACL,OAAO,EAAE,CAAC;QACV,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACrC,SAAS,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,gBAAgB,EAAE;QAC5C,KAAK,EAAE;YACL,KAAK,EAAE,KAAK,CAAC,MAAM;YACnB,KAAK,EAAE,GAAG,CAAC,SAAS,CAAC,MAAM;YAC3B,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC;YAC3B,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC;YAC3B,SAAS,EAAE,SAAS,CAAC,WAAW,CAAC;SAClC;QACD,KAAK;QACL,KAAK,EAAE,GAAG,CAAC,SAAS;KACrB,CAAA;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=basicEnricher.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"basicEnricher.test.d.ts","sourceRoot":"","sources":["../../src/enricher/basicEnricher.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const node_test_1 = require("node:test");
7
+ const strict_1 = __importDefault(require("node:assert/strict"));
8
+ const basicEnricher_1 = require("./basicEnricher");
9
+ (0, node_test_1.test)('inferRole: explicit directives win over everything', () => {
10
+ strict_1.default.equal((0, basicEnricher_1.inferRole)('app/page.tsx', `'use client'\nexport default function P() {}`).role, 'client');
11
+ strict_1.default.equal((0, basicEnricher_1.inferRole)('components/Foo.tsx', `"use server"\nexport async function act() {}`).role, 'server');
12
+ });
13
+ (0, node_test_1.test)('inferRole: App Router entry files are server by default (RSC)', () => {
14
+ for (const file of [
15
+ 'app/page.tsx',
16
+ 'src/app/layout.tsx',
17
+ 'src/app/(legal)/mentions/page.tsx',
18
+ 'app/sitemap.ts',
19
+ 'app/robots.ts',
20
+ 'app/opengraph-image.tsx',
21
+ 'app/blog/[slug]/route.ts',
22
+ ]) {
23
+ const { role, reason } = (0, basicEnricher_1.inferRole)(file, 'export default function X() {}');
24
+ strict_1.default.equal(role, 'server', `${file} should be server (got ${role})`);
25
+ strict_1.default.match(reason, /RSC default/);
26
+ }
27
+ });
28
+ (0, node_test_1.test)('inferRole: shared components under app/ stay universal without a signal', () => {
29
+ strict_1.default.equal((0, basicEnricher_1.inferRole)('src/app/SearchBar.tsx', 'export function SearchBar() {}').role, 'universal');
30
+ });
31
+ (0, node_test_1.test)('inferRole: server paths and content heuristics', () => {
32
+ strict_1.default.equal((0, basicEnricher_1.inferRole)('src/app/api/auth/route.ts', '').role, 'server');
33
+ strict_1.default.equal((0, basicEnricher_1.inferRole)('lib/db.ts', `import admin from 'firebase-admin'`).role, 'server');
34
+ strict_1.default.equal((0, basicEnricher_1.inferRole)('lib/mail.server.ts', '').role, 'server');
35
+ strict_1.default.equal((0, basicEnricher_1.inferRole)('components/Counter.tsx', 'const [n, setN] = useState(0)').role, 'client');
36
+ strict_1.default.equal((0, basicEnricher_1.inferRole)('lib/utils.ts', 'export const x = 1').role, 'universal');
37
+ });
38
+ (0, node_test_1.test)('criticality: fan-in cap and sensitive-domain bonuses', () => {
39
+ strict_1.default.equal((0, basicEnricher_1.computeCriticality)(0, []), 0);
40
+ strict_1.default.equal((0, basicEnricher_1.computeCriticality)(20, []), 60);
41
+ strict_1.default.equal((0, basicEnricher_1.computeCriticality)(5, ['auth']), 55);
42
+ strict_1.default.equal((0, basicEnricher_1.computeCriticality)(10, ['api', 'billing']), 100);
43
+ strict_1.default.equal((0, basicEnricher_1.criticalityLevel)(55), 'high');
44
+ strict_1.default.equal((0, basicEnricher_1.criticalityLevel)(80), 'critical');
45
+ strict_1.default.deepEqual((0, basicEnricher_1.inferTags)('app/api/billing/route.ts'), ['api', 'billing']);
46
+ });
47
+ //# sourceMappingURL=basicEnricher.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"basicEnricher.test.js","sourceRoot":"","sources":["../../src/enricher/basicEnricher.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aidoc-kit",
3
- "version": "1.3.1",
3
+ "version": "1.3.3",
4
4
  "description": "AI-native documentation scanner for JS/TS projects — gives AI agents persistent memory across sessions",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",