aidoc-kit 1.3.2 → 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":"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"}
@@ -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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aidoc-kit",
3
- "version": "1.3.2",
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",