@mmnto/totem 1.3.18 → 1.4.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.
Files changed (47) hide show
  1. package/dist/ast-grep-query.d.ts +2 -2
  2. package/dist/ast-grep-query.d.ts.map +1 -1
  3. package/dist/ast-grep-query.js +11 -11
  4. package/dist/ast-grep-query.js.map +1 -1
  5. package/dist/ast-grep-query.test.d.ts +2 -0
  6. package/dist/ast-grep-query.test.d.ts.map +1 -0
  7. package/dist/ast-grep-query.test.js +53 -0
  8. package/dist/ast-grep-query.test.js.map +1 -0
  9. package/dist/ast-query.d.ts +2 -2
  10. package/dist/ast-query.d.ts.map +1 -1
  11. package/dist/ast-query.js +12 -12
  12. package/dist/ast-query.js.map +1 -1
  13. package/dist/ast-query.test.js +3 -3
  14. package/dist/ast-query.test.js.map +1 -1
  15. package/dist/compile-manifest.d.ts +45 -0
  16. package/dist/compile-manifest.d.ts.map +1 -0
  17. package/dist/compile-manifest.js +119 -0
  18. package/dist/compile-manifest.js.map +1 -0
  19. package/dist/compile-manifest.test.d.ts +2 -0
  20. package/dist/compile-manifest.test.d.ts.map +1 -0
  21. package/dist/compile-manifest.test.js +102 -0
  22. package/dist/compile-manifest.test.js.map +1 -0
  23. package/dist/config-schema.d.ts +12 -12
  24. package/dist/errors.d.ts +7 -0
  25. package/dist/errors.d.ts.map +1 -1
  26. package/dist/errors.js +14 -0
  27. package/dist/errors.js.map +1 -1
  28. package/dist/index.d.ts +4 -2
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +3 -2
  31. package/dist/index.js.map +1 -1
  32. package/dist/rule-engine.js +2 -2
  33. package/dist/rule-engine.js.map +1 -1
  34. package/dist/rule-engine.test.d.ts +2 -0
  35. package/dist/rule-engine.test.d.ts.map +1 -0
  36. package/dist/rule-engine.test.js +63 -0
  37. package/dist/rule-engine.test.js.map +1 -0
  38. package/dist/rule-tester.d.ts.map +1 -1
  39. package/dist/rule-tester.js +17 -8
  40. package/dist/rule-tester.js.map +1 -1
  41. package/dist/xml-format.d.ts +9 -0
  42. package/dist/xml-format.d.ts.map +1 -1
  43. package/dist/xml-format.js +20 -0
  44. package/dist/xml-format.js.map +1 -1
  45. package/dist/xml-format.test.js +41 -1
  46. package/dist/xml-format.test.js.map +1 -1
  47. package/package.json +1 -1
@@ -0,0 +1,102 @@
1
+ import * as fs from 'node:fs';
2
+ import * as os from 'node:os';
3
+ import * as path from 'node:path';
4
+ import { afterEach, beforeEach, describe, expect, it } from 'vitest';
5
+ import { generateInputHash, generateOutputHash, readCompileManifest, writeCompileManifest, } from './compile-manifest.js';
6
+ import { TotemParseError } from './errors.js';
7
+ describe('generateInputHash', () => {
8
+ let tmpDir;
9
+ beforeEach(() => {
10
+ tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'totem-manifest-input-'));
11
+ });
12
+ afterEach(() => {
13
+ fs.rmSync(tmpDir, { recursive: true, force: true });
14
+ });
15
+ it('is deterministic across CRLF and LF', () => {
16
+ const dirLF = path.join(tmpDir, 'lf');
17
+ const dirCRLF = path.join(tmpDir, 'crlf');
18
+ fs.mkdirSync(dirLF, { recursive: true });
19
+ fs.mkdirSync(dirCRLF, { recursive: true });
20
+ const contentLF = 'line one\nline two\nline three\n';
21
+ const contentCRLF = 'line one\r\nline two\r\nline three\r\n';
22
+ fs.writeFileSync(path.join(dirLF, 'lesson.md'), contentLF);
23
+ fs.writeFileSync(path.join(dirCRLF, 'lesson.md'), contentCRLF);
24
+ expect(generateInputHash(dirLF)).toBe(generateInputHash(dirCRLF));
25
+ });
26
+ it('is deterministic regardless of readdir order', () => {
27
+ // Create files with names that might sort differently in different OS locales
28
+ fs.writeFileSync(path.join(tmpDir, 'b-lesson.md'), 'content B\n');
29
+ fs.writeFileSync(path.join(tmpDir, 'a-lesson.md'), 'content A\n');
30
+ fs.writeFileSync(path.join(tmpDir, 'c-lesson.md'), 'content C\n');
31
+ const hash1 = generateInputHash(tmpDir);
32
+ const hash2 = generateInputHash(tmpDir);
33
+ expect(hash1).toBe(hash2);
34
+ // Verify it's a valid hex SHA-256 (64 hex chars)
35
+ expect(hash1).toMatch(/^[a-f0-9]{64}$/);
36
+ });
37
+ });
38
+ describe('generateOutputHash', () => {
39
+ let tmpDir;
40
+ beforeEach(() => {
41
+ tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'totem-manifest-output-'));
42
+ });
43
+ afterEach(() => {
44
+ fs.rmSync(tmpDir, { recursive: true, force: true });
45
+ });
46
+ it('normalizes line endings', () => {
47
+ const pathLF = path.join(tmpDir, 'rules-lf.json');
48
+ const pathCRLF = path.join(tmpDir, 'rules-crlf.json');
49
+ fs.writeFileSync(pathLF, '{"rules": []}\n');
50
+ fs.writeFileSync(pathCRLF, '{"rules": []}\r\n');
51
+ expect(generateOutputHash(pathLF)).toBe(generateOutputHash(pathCRLF));
52
+ });
53
+ });
54
+ describe('writeCompileManifest + readCompileManifest', () => {
55
+ let tmpDir;
56
+ beforeEach(() => {
57
+ tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'totem-manifest-rw-'));
58
+ });
59
+ afterEach(() => {
60
+ fs.rmSync(tmpDir, { recursive: true, force: true });
61
+ });
62
+ it('roundtrips a valid manifest', () => {
63
+ const manifestPath = path.join(tmpDir, 'compile-manifest.json');
64
+ const manifest = {
65
+ compiled_at: '2026-03-22T12:00:00Z',
66
+ model: 'gemini-3-flash-preview',
67
+ input_hash: 'a'.repeat(64),
68
+ output_hash: 'b'.repeat(64),
69
+ rule_count: 42,
70
+ };
71
+ writeCompileManifest(manifestPath, manifest);
72
+ const loaded = readCompileManifest(manifestPath);
73
+ expect(loaded).toEqual(manifest);
74
+ });
75
+ });
76
+ describe('readCompileManifest error handling', () => {
77
+ let tmpDir;
78
+ beforeEach(() => {
79
+ tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'totem-manifest-err-'));
80
+ });
81
+ afterEach(() => {
82
+ fs.rmSync(tmpDir, { recursive: true, force: true });
83
+ });
84
+ it('throws TotemParseError on missing file', () => {
85
+ const missing = path.join(tmpDir, 'does-not-exist.json');
86
+ expect(() => readCompileManifest(missing)).toThrow(TotemParseError);
87
+ expect(() => readCompileManifest(missing)).toThrow(/not found/);
88
+ });
89
+ it('throws TotemParseError on invalid JSON', () => {
90
+ const badPath = path.join(tmpDir, 'bad.json');
91
+ fs.writeFileSync(badPath, '{ not valid json !!!');
92
+ expect(() => readCompileManifest(badPath)).toThrow(TotemParseError);
93
+ expect(() => readCompileManifest(badPath)).toThrow(/Invalid JSON/);
94
+ });
95
+ it('throws TotemParseError on invalid schema', () => {
96
+ const badSchema = path.join(tmpDir, 'bad-schema.json');
97
+ fs.writeFileSync(badSchema, JSON.stringify({ compiled_at: 123 }));
98
+ expect(() => readCompileManifest(badSchema)).toThrow(TotemParseError);
99
+ expect(() => readCompileManifest(badSchema)).toThrow(/Invalid compile manifest schema/);
100
+ });
101
+ });
102
+ //# sourceMappingURL=compile-manifest.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compile-manifest.test.js","sourceRoot":"","sources":["../src/compile-manifest.test.ts"],"names":[],"mappings":"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"}
@@ -22,8 +22,8 @@ export declare const OpenAIProviderSchema: z.ZodObject<{
22
22
  model: z.ZodDefault<z.ZodString>;
23
23
  dimensions: z.ZodOptional<z.ZodNumber>;
24
24
  }, "strip", z.ZodTypeAny, {
25
- provider: "openai";
26
25
  model: string;
26
+ provider: "openai";
27
27
  dimensions?: number | undefined;
28
28
  }, {
29
29
  provider: "openai";
@@ -36,8 +36,8 @@ export declare const OllamaProviderSchema: z.ZodObject<{
36
36
  baseUrl: z.ZodDefault<z.ZodString>;
37
37
  dimensions: z.ZodOptional<z.ZodNumber>;
38
38
  }, "strip", z.ZodTypeAny, {
39
- provider: "ollama";
40
39
  model: string;
40
+ provider: "ollama";
41
41
  baseUrl: string;
42
42
  dimensions?: number | undefined;
43
43
  }, {
@@ -51,8 +51,8 @@ export declare const GeminiProviderSchema: z.ZodObject<{
51
51
  model: z.ZodDefault<z.ZodString>;
52
52
  dimensions: z.ZodOptional<z.ZodNumber>;
53
53
  }, "strip", z.ZodTypeAny, {
54
- provider: "gemini";
55
54
  model: string;
55
+ provider: "gemini";
56
56
  dimensions?: number | undefined;
57
57
  }, {
58
58
  provider: "gemini";
@@ -64,8 +64,8 @@ export declare const EmbeddingProviderSchema: z.ZodDiscriminatedUnion<"provider"
64
64
  model: z.ZodDefault<z.ZodString>;
65
65
  dimensions: z.ZodOptional<z.ZodNumber>;
66
66
  }, "strip", z.ZodTypeAny, {
67
- provider: "openai";
68
67
  model: string;
68
+ provider: "openai";
69
69
  dimensions?: number | undefined;
70
70
  }, {
71
71
  provider: "openai";
@@ -77,8 +77,8 @@ export declare const EmbeddingProviderSchema: z.ZodDiscriminatedUnion<"provider"
77
77
  baseUrl: z.ZodDefault<z.ZodString>;
78
78
  dimensions: z.ZodOptional<z.ZodNumber>;
79
79
  }, "strip", z.ZodTypeAny, {
80
- provider: "ollama";
81
80
  model: string;
81
+ provider: "ollama";
82
82
  baseUrl: string;
83
83
  dimensions?: number | undefined;
84
84
  }, {
@@ -91,8 +91,8 @@ export declare const EmbeddingProviderSchema: z.ZodDiscriminatedUnion<"provider"
91
91
  model: z.ZodDefault<z.ZodString>;
92
92
  dimensions: z.ZodOptional<z.ZodNumber>;
93
93
  }, "strip", z.ZodTypeAny, {
94
- provider: "gemini";
95
94
  model: string;
95
+ provider: "gemini";
96
96
  dimensions?: number | undefined;
97
97
  }, {
98
98
  provider: "gemini";
@@ -397,8 +397,8 @@ export declare const TotemConfigSchema: z.ZodObject<{
397
397
  model: z.ZodDefault<z.ZodString>;
398
398
  dimensions: z.ZodOptional<z.ZodNumber>;
399
399
  }, "strip", z.ZodTypeAny, {
400
- provider: "openai";
401
400
  model: string;
401
+ provider: "openai";
402
402
  dimensions?: number | undefined;
403
403
  }, {
404
404
  provider: "openai";
@@ -410,8 +410,8 @@ export declare const TotemConfigSchema: z.ZodObject<{
410
410
  baseUrl: z.ZodDefault<z.ZodString>;
411
411
  dimensions: z.ZodOptional<z.ZodNumber>;
412
412
  }, "strip", z.ZodTypeAny, {
413
- provider: "ollama";
414
413
  model: string;
414
+ provider: "ollama";
415
415
  baseUrl: string;
416
416
  dimensions?: number | undefined;
417
417
  }, {
@@ -424,8 +424,8 @@ export declare const TotemConfigSchema: z.ZodObject<{
424
424
  model: z.ZodDefault<z.ZodString>;
425
425
  dimensions: z.ZodOptional<z.ZodNumber>;
426
426
  }, "strip", z.ZodTypeAny, {
427
- provider: "gemini";
428
427
  model: string;
428
+ provider: "gemini";
429
429
  dimensions?: number | undefined;
430
430
  }, {
431
431
  provider: "gemini";
@@ -643,17 +643,17 @@ export declare const TotemConfigSchema: z.ZodObject<{
643
643
  shieldIgnorePatterns: string[];
644
644
  contextWarningThreshold: number;
645
645
  embedding?: {
646
- provider: "openai";
647
646
  model: string;
647
+ provider: "openai";
648
648
  dimensions?: number | undefined;
649
649
  } | {
650
- provider: "ollama";
651
650
  model: string;
651
+ provider: "ollama";
652
652
  baseUrl: string;
653
653
  dimensions?: number | undefined;
654
654
  } | {
655
- provider: "gemini";
656
655
  model: string;
656
+ provider: "gemini";
657
657
  dimensions?: number | undefined;
658
658
  } | undefined;
659
659
  orchestrator?: {
package/dist/errors.d.ts CHANGED
@@ -30,4 +30,11 @@ export declare class TotemOrchestratorError extends TotemError {
30
30
  export declare class TotemGitError extends TotemError {
31
31
  constructor(message: string, recoveryHint: string);
32
32
  }
33
+ /** Extract a human-readable message from an unknown thrown value. */
34
+ export declare function getErrorMessage(err: unknown): string;
35
+ /**
36
+ * Re-throw as TotemParseError, preserving already-wrapped errors.
37
+ * Use in catch blocks where AST engine failures must fail-closed.
38
+ */
39
+ export declare function rethrowAsParseError(label: string, err: unknown, hint: string): never;
33
40
  //# sourceMappingURL=errors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,MAAM,cAAc,GACtB,gBAAgB,GAChB,gBAAgB,GAChB,kBAAkB,GAClB,mBAAmB,GACnB,uBAAuB,GACvB,0BAA0B,GAC1B,gBAAgB,GAChB,cAAc,GACd,aAAa,GACb,YAAY,GACZ,YAAY,GACZ,UAAU,GACV,eAAe,GACf,qBAAqB,GACrB,WAAW,CAAC;AAEhB,qBAAa,UAAW,SAAQ,KAAK;IACnC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;gBAElB,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;CAMxE;AAED,qBAAa,gBAAiB,SAAQ,UAAU;gBAE5C,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,IAAI,GAAE,gBAAgB,GAAG,gBAAmC;CAK/D;AAED,qBAAa,kBAAmB,SAAQ,UAAU;gBAE9C,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,IAAI,GAAE,kBAAkB,GAAG,mBAAwC;CAKtE;AAED,qBAAa,iBAAkB,SAAQ,UAAU;gBACnC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;CAIlD;AAED,qBAAa,eAAgB,SAAQ,UAAU;gBACjC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;CAIlD;AAED,qBAAa,sBAAuB,SAAQ,UAAU;gBACxC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;CAIlD;AAED,qBAAa,aAAc,SAAQ,UAAU;gBAC/B,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;CAIlD"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,MAAM,cAAc,GACtB,gBAAgB,GAChB,gBAAgB,GAChB,kBAAkB,GAClB,mBAAmB,GACnB,uBAAuB,GACvB,0BAA0B,GAC1B,gBAAgB,GAChB,cAAc,GACd,aAAa,GACb,YAAY,GACZ,YAAY,GACZ,UAAU,GACV,eAAe,GACf,qBAAqB,GACrB,WAAW,CAAC;AAEhB,qBAAa,UAAW,SAAQ,KAAK;IACnC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;gBAElB,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;CAMxE;AAED,qBAAa,gBAAiB,SAAQ,UAAU;gBAE5C,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,IAAI,GAAE,gBAAgB,GAAG,gBAAmC;CAK/D;AAED,qBAAa,kBAAmB,SAAQ,UAAU;gBAE9C,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,IAAI,GAAE,kBAAkB,GAAG,mBAAwC;CAKtE;AAED,qBAAa,iBAAkB,SAAQ,UAAU;gBACnC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;CAIlD;AAED,qBAAa,eAAgB,SAAQ,UAAU;gBACjC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;CAIlD;AAED,qBAAa,sBAAuB,SAAQ,UAAU;gBACxC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;CAIlD;AAED,qBAAa,aAAc,SAAQ,UAAU;gBAC/B,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;CAIlD;AAID,qEAAqE;AACrE,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAEpD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,KAAK,CAGpF"}
package/dist/errors.js CHANGED
@@ -52,4 +52,18 @@ export class TotemGitError extends TotemError {
52
52
  this.name = 'TotemGitError';
53
53
  }
54
54
  }
55
+ // ─── Utilities ──────────────────────────────────────
56
+ /** Extract a human-readable message from an unknown thrown value. */
57
+ export function getErrorMessage(err) {
58
+ return err instanceof Error ? err.message : String(err);
59
+ }
60
+ /**
61
+ * Re-throw as TotemParseError, preserving already-wrapped errors.
62
+ * Use in catch blocks where AST engine failures must fail-closed.
63
+ */
64
+ export function rethrowAsParseError(label, err, hint) {
65
+ if (err instanceof TotemParseError)
66
+ throw err;
67
+ throw new TotemParseError(`${label}: ${getErrorMessage(err)}`, hint); // totem-ignore — #848: TotemError constructor auto-prepends [Totem Error]
68
+ }
55
69
  //# sourceMappingURL=errors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAmBH,MAAM,OAAO,UAAW,SAAQ,KAAK;IAC1B,IAAI,CAAiB;IACrB,YAAY,CAAS;IAE9B,YAAY,IAAoB,EAAE,OAAe,EAAE,YAAoB;QACrE,KAAK,CAAC,iBAAiB,OAAO,EAAE,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;CACF;AAED,MAAM,OAAO,gBAAiB,SAAQ,UAAU;IAC9C,YACE,OAAe,EACf,YAAoB,EACpB,OAA4C,gBAAgB;QAE5D,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;QACnC,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF;AAED,MAAM,OAAO,kBAAmB,SAAQ,UAAU;IAChD,YACE,OAAe,EACf,YAAoB,EACpB,OAAiD,kBAAkB;QAEnE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;QACnC,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAED,MAAM,OAAO,iBAAkB,SAAQ,UAAU;IAC/C,YAAY,OAAe,EAAE,YAAoB;QAC/C,KAAK,CAAC,gBAAgB,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;QAC/C,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAED,MAAM,OAAO,eAAgB,SAAQ,UAAU;IAC7C,YAAY,OAAe,EAAE,YAAoB;QAC/C,KAAK,CAAC,cAAc,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AAED,MAAM,OAAO,sBAAuB,SAAQ,UAAU;IACpD,YAAY,OAAe,EAAE,YAAoB;QAC/C,KAAK,CAAC,0BAA0B,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;QACzD,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;IACvC,CAAC;CACF;AAED,MAAM,OAAO,aAAc,SAAQ,UAAU;IAC3C,YAAY,OAAe,EAAE,YAAoB;QAC/C,KAAK,CAAC,YAAY,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;QAC3C,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAmBH,MAAM,OAAO,UAAW,SAAQ,KAAK;IAC1B,IAAI,CAAiB;IACrB,YAAY,CAAS;IAE9B,YAAY,IAAoB,EAAE,OAAe,EAAE,YAAoB;QACrE,KAAK,CAAC,iBAAiB,OAAO,EAAE,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;CACF;AAED,MAAM,OAAO,gBAAiB,SAAQ,UAAU;IAC9C,YACE,OAAe,EACf,YAAoB,EACpB,OAA4C,gBAAgB;QAE5D,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;QACnC,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF;AAED,MAAM,OAAO,kBAAmB,SAAQ,UAAU;IAChD,YACE,OAAe,EACf,YAAoB,EACpB,OAAiD,kBAAkB;QAEnE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;QACnC,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAED,MAAM,OAAO,iBAAkB,SAAQ,UAAU;IAC/C,YAAY,OAAe,EAAE,YAAoB;QAC/C,KAAK,CAAC,gBAAgB,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;QAC/C,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAED,MAAM,OAAO,eAAgB,SAAQ,UAAU;IAC7C,YAAY,OAAe,EAAE,YAAoB;QAC/C,KAAK,CAAC,cAAc,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AAED,MAAM,OAAO,sBAAuB,SAAQ,UAAU;IACpD,YAAY,OAAe,EAAE,YAAoB;QAC/C,KAAK,CAAC,0BAA0B,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;QACzD,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;IACvC,CAAC;CACF;AAED,MAAM,OAAO,aAAc,SAAQ,UAAU;IAC3C,YAAY,OAAe,EAAE,YAAoB;QAC/C,KAAK,CAAC,YAAY,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;QAC3C,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AAED,uDAAuD;AAEvD,qEAAqE;AACrE,MAAM,UAAU,eAAe,CAAC,GAAY;IAC1C,OAAO,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC1D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAa,EAAE,GAAY,EAAE,IAAY;IAC3E,IAAI,GAAG,YAAY,eAAe;QAAE,MAAM,GAAG,CAAC;IAC9C,MAAM,IAAI,eAAe,CAAC,GAAG,KAAK,KAAK,eAAe,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,0EAA0E;AAClJ,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  export type { TotemErrorCode } from './errors.js';
2
- export { TotemCompileError, TotemConfigError, TotemDatabaseError, TotemError, TotemGitError, TotemOrchestratorError, TotemParseError, } from './errors.js';
2
+ export { getErrorMessage, rethrowAsParseError, TotemCompileError, TotemConfigError, TotemDatabaseError, TotemError, TotemGitError, TotemOrchestratorError, TotemParseError, } from './errors.js';
3
3
  export type { ChunkStrategy, ConfigTier, ContentType, DocTarget, EmbeddingProvider, IngestTarget, Orchestrator, TotemConfig, } from './config-schema.js';
4
4
  export { AnthropicOrchestratorSchema, ChunkStrategySchema, ConfigTierSchema, ContentTypeSchema, DEFAULT_IGNORE_PATTERNS, DocTargetSchema, EmbeddingProviderSchema, GeminiOrchestratorSchema, GeminiProviderSchema, getConfigTier, IngestTargetSchema, OllamaProviderSchema, OpenAIProviderSchema, OrchestratorSchema, requireEmbedding, ShellOrchestratorSchema, TotemConfigSchema, } from './config-schema.js';
5
5
  export type { Chunk, HealthCheckResult, SearchOptions, SearchResult, StoredChunk, SyncOptions, SyncState, } from './types.js';
@@ -38,7 +38,7 @@ export type { ManualPattern } from './lesson-pattern.js';
38
38
  export { extractField, extractManualPattern } from './lesson-pattern.js';
39
39
  export type { IngestionSanitizeOptions } from './sanitize.js';
40
40
  export { BASE64_BLOB_RE, INSTRUCTIONAL_LEAKAGE_RE, maskSecrets, sanitize, sanitizeForIngestion, UNICODE_ESCAPE_RE, XML_TAG_LEAKAGE_RE, } from './sanitize.js';
41
- export { wrapXml } from './xml-format.js';
41
+ export { wrapUntrustedXml, wrapXml } from './xml-format.js';
42
42
  export type { ExtractedLesson } from './suspicious-lesson.js';
43
43
  export { collectCodeRanges, DEFENSIVE_KEYWORD_RE, DEFENSIVE_PROXIMITY_WINDOW, flagSuspiciousLessons, isInstructionalContext, MAX_SUSPICIOUS_HEADING_LENGTH, } from './suspicious-lesson.js';
44
44
  export { cosineSimilarity, deduplicateLessons } from './semantic-dedup.js';
@@ -46,4 +46,6 @@ export type { CursorInstruction } from './cursor-adapter.js';
46
46
  export { scanCursorInstructions } from './cursor-adapter.js';
47
47
  export type { RuleMetric, RuleMetricsFile } from './rule-metrics.js';
48
48
  export { loadRuleMetrics, recordSuppression, recordTrigger, saveRuleMetrics, } from './rule-metrics.js';
49
+ export type { CompileManifest } from './compile-manifest.js';
50
+ export { CompileManifestSchema, generateInputHash, generateOutputHash, readCompileManifest, writeCompileManifest, } from './compile-manifest.js';
49
51
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- export { TotemCompileError, TotemConfigError, TotemDatabaseError, TotemError, TotemGitError, TotemOrchestratorError, TotemParseError, } from './errors.js';
1
+ export { getErrorMessage, rethrowAsParseError, TotemCompileError, TotemConfigError, TotemDatabaseError, TotemError, TotemGitError, TotemOrchestratorError, TotemParseError, } from './errors.js';
2
2
  export { AnthropicOrchestratorSchema, ChunkStrategySchema, ConfigTierSchema, ContentTypeSchema, DEFAULT_IGNORE_PATTERNS, DocTargetSchema, EmbeddingProviderSchema, GeminiOrchestratorSchema, GeminiProviderSchema, getConfigTier, IngestTargetSchema, OllamaProviderSchema, OpenAIProviderSchema, OrchestratorSchema, requireEmbedding, ShellOrchestratorSchema, TotemConfigSchema, } from './config-schema.js';
3
3
  export { createChunker } from './chunkers/chunker.js';
4
4
  export { createEmbedder } from './embedders/embedder.js';
@@ -27,10 +27,11 @@ export { generateLessonHeading, HEADING_MAX_CHARS, rewriteLessonHeadings, trunca
27
27
  export { validateLessons } from './lesson-linter.js';
28
28
  export { extractField, extractManualPattern } from './lesson-pattern.js';
29
29
  export { BASE64_BLOB_RE, INSTRUCTIONAL_LEAKAGE_RE, maskSecrets, sanitize, sanitizeForIngestion, UNICODE_ESCAPE_RE, XML_TAG_LEAKAGE_RE, } from './sanitize.js';
30
- export { wrapXml } from './xml-format.js';
30
+ export { wrapUntrustedXml, wrapXml } from './xml-format.js';
31
31
  export { collectCodeRanges, DEFENSIVE_KEYWORD_RE, DEFENSIVE_PROXIMITY_WINDOW, flagSuspiciousLessons, isInstructionalContext, MAX_SUSPICIOUS_HEADING_LENGTH, } from './suspicious-lesson.js';
32
32
  // Semantic deduplication
33
33
  export { cosineSimilarity, deduplicateLessons } from './semantic-dedup.js';
34
34
  export { scanCursorInstructions } from './cursor-adapter.js';
35
35
  export { loadRuleMetrics, recordSuppression, recordTrigger, saveRuleMetrics, } from './rule-metrics.js';
36
+ export { CompileManifestSchema, generateInputHash, generateOutputHash, readCompileManifest, writeCompileManifest, } from './compile-manifest.js';
36
37
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -184,7 +184,7 @@ export async function applyAstRulesToAdditions(rules, additions, cwd, onRuleEven
184
184
  astQuery: rule.astQuery,
185
185
  addedLineNumbers,
186
186
  }));
187
- const batchResults = await matchAstQueriesBatch(file, queries, cwd, onWarn);
187
+ const batchResults = await matchAstQueriesBatch(file, queries, cwd);
188
188
  // Map results back to violations
189
189
  for (const rule of applicableTreeSitter) {
190
190
  const matches = batchResults.get(rule.astQuery) ?? [];
@@ -237,7 +237,7 @@ export async function applyAstRulesToAdditions(rules, additions, cwd, onRuleEven
237
237
  rule: rule.astGrepPattern,
238
238
  addedLineNumbers,
239
239
  }));
240
- const batchResults = matchAstGrepPatternsBatch(content, ext, queries, onWarn);
240
+ const batchResults = matchAstGrepPatternsBatch(content, ext, queries);
241
241
  for (let i = 0; i < applicableAstGrep.length; i++) {
242
242
  const rule = applicableAstGrep[i];
243
243
  const matches = batchResults[i] ?? [];
@@ -1 +1 @@
1
- {"version":3,"file":"rule-engine.js","sourceRoot":"","sources":["../src/rule-engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rule-engine.js","sourceRoot":"","sources":["../src/rule-engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=rule-engine.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rule-engine.test.d.ts","sourceRoot":"","sources":["../src/rule-engine.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,63 @@
1
+ import * as fs from 'node:fs';
2
+ import * as os from 'node:os';
3
+ import * as path from 'node:path';
4
+ import { afterEach, beforeEach, describe, expect, it } from 'vitest';
5
+ import { TotemParseError } from './errors.js';
6
+ import { applyAstRulesToAdditions } from './rule-engine.js';
7
+ // ─── Helpers ────────────────────────────────────────
8
+ let tmpDir;
9
+ beforeEach(() => {
10
+ tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'totem-rule-engine-'));
11
+ fs.mkdirSync(path.join(tmpDir, 'src'), { recursive: true });
12
+ });
13
+ afterEach(() => {
14
+ fs.rmSync(tmpDir, { recursive: true, force: true });
15
+ });
16
+ function makeRule(overrides) {
17
+ return {
18
+ lessonHash: 'deadbeef12345678',
19
+ lessonHeading: 'Test rule',
20
+ pattern: '.*',
21
+ message: 'Test violation',
22
+ engine: 'regex',
23
+ compiledAt: new Date().toISOString(),
24
+ ...overrides,
25
+ };
26
+ }
27
+ function makeAddition(file, line, lineNumber) {
28
+ return { file, line, lineNumber, precedingLine: null };
29
+ }
30
+ // ─── Error propagation (fail-closed) ────────────────
31
+ describe('applyAstRulesToAdditions', () => {
32
+ it('propagates tree-sitter query errors instead of swallowing them (fail-closed)', async () => {
33
+ fs.writeFileSync(path.join(tmpDir, 'src', 'app.ts'), 'const x = 1;\n');
34
+ const rule = makeRule({
35
+ engine: 'ast',
36
+ astQuery: '(this is not valid S-expression!!!',
37
+ });
38
+ const additions = [makeAddition('src/app.ts', 'const x = 1;', 1)];
39
+ await expect(applyAstRulesToAdditions([rule], additions, tmpDir)).rejects.toThrow(TotemParseError);
40
+ });
41
+ it('propagates ast-grep query errors instead of swallowing them (fail-closed)', async () => {
42
+ const filePath = path.join(tmpDir, 'src', 'app.ts');
43
+ fs.writeFileSync(filePath, 'const x = 1;\n');
44
+ const rule = makeRule({
45
+ engine: 'ast-grep',
46
+ astGrepPattern: { rule: { kind: '!!!INVALID_NODE_KIND!!!' } },
47
+ });
48
+ const additions = [makeAddition('src/app.ts', 'const x = 1;', 1)];
49
+ await expect(applyAstRulesToAdditions([rule], additions, tmpDir)).rejects.toThrow(TotemParseError);
50
+ });
51
+ it('still returns violations for valid AST rules (regression check)', async () => {
52
+ fs.writeFileSync(path.join(tmpDir, 'src', 'app.ts'), 'console.log("hello");\nconst x = 1;\n');
53
+ const rule = makeRule({
54
+ engine: 'ast-grep',
55
+ astGrepPattern: 'console.log($$$)',
56
+ });
57
+ const additions = [makeAddition('src/app.ts', 'console.log("hello");', 1)];
58
+ const violations = await applyAstRulesToAdditions([rule], additions, tmpDir);
59
+ expect(violations).toHaveLength(1);
60
+ expect(violations[0].lineNumber).toBe(1);
61
+ });
62
+ });
63
+ //# sourceMappingURL=rule-engine.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rule-engine.test.js","sourceRoot":"","sources":["../src/rule-engine.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"rule-tester.d.ts","sourceRoot":"","sources":["../src/rule-tester.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAgB,MAAM,eAAe,CAAC;AAKhE,MAAM,WAAW,eAAe;IAC9B,qCAAqC;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,mEAAmE;IACnE,QAAQ,EAAE,MAAM,CAAC;IACjB,yCAAyC;IACzC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,6CAA6C;IAC7C,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,sCAAsC;IACtC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,qEAAqE;IACrE,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,iEAAiE;IACjE,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,uEAAuE;IACvE,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,cAAc,EAAE,CAAC;CAC3B;AASD,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAoBzF;AAaD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,eAAe,GAAG,cAAc,CA0DrF;AAID,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,EAAE,CAchE;AAED,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,eAAe,CAmCjF"}
1
+ {"version":3,"file":"rule-tester.d.ts","sourceRoot":"","sources":["../src/rule-tester.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAgB,MAAM,eAAe,CAAC;AAMhE,MAAM,WAAW,eAAe;IAC9B,qCAAqC;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,mEAAmE;IACnE,QAAQ,EAAE,MAAM,CAAC;IACjB,yCAAyC;IACzC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,6CAA6C;IAC7C,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,sCAAsC;IACtC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,qEAAqE;IACrE,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,iEAAiE;IACjE,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,uEAAuE;IACvE,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,cAAc,EAAE,CAAC;CAC3B;AASD,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAoBzF;AAaD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,eAAe,GAAG,cAAc,CAgErF;AAID,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,EAAE,CAchE;AAED,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,eAAe,CAmCjF"}
@@ -2,6 +2,7 @@ import * as fs from 'node:fs';
2
2
  import * as path from 'node:path';
3
3
  import { matchAstGrepPattern } from './ast-grep-query.js';
4
4
  import { applyRulesToAdditions, loadCompiledRules } from './compiler.js';
5
+ import { getErrorMessage } from './errors.js';
5
6
  // ─── Fixture parsing ─────────────────────────────────
6
7
  const FRONTMATTER_RE = /^---\s*\n([\s\S]*?)\n---/;
7
8
  const FAIL_SECTION_RE = /##\s*[Ss]hould\s+fail\s*\n+```[^\n]*\n([\s\S]*?)```/;
@@ -50,20 +51,28 @@ export function testRule(rule, fixture) {
50
51
  if (fixture.failLines.length > 0) {
51
52
  const content = fixture.failLines.join('\n');
52
53
  const allLineNums = fixture.failLines.map((_, i) => i + 1);
53
- const onWarn = (msg) => result.missedFails.push(`[ast-grep warning] ${msg}`);
54
- const matches = matchAstGrepPattern(content, ext, pattern, allLineNums, onWarn);
55
- if (matches.length === 0) {
56
- result.missedFails.push(fixture.failLines.join('\n'));
54
+ try {
55
+ const matches = matchAstGrepPattern(content, ext, pattern, allLineNums);
56
+ if (matches.length === 0) {
57
+ result.missedFails.push(fixture.failLines.join('\n'));
58
+ }
59
+ }
60
+ catch (err) {
61
+ result.missedFails.push(`[ast-grep error] ${getErrorMessage(err)}`);
57
62
  }
58
63
  }
59
64
  // Test pass block — parse all pass lines as one snippet; expect zero matches
60
65
  if (fixture.passLines.length > 0) {
61
66
  const content = fixture.passLines.join('\n');
62
67
  const allLineNums = fixture.passLines.map((_, i) => i + 1);
63
- const onWarn = (msg) => result.falsePositives.push(`[ast-grep warning] ${msg}`);
64
- const matches = matchAstGrepPattern(content, ext, pattern, allLineNums, onWarn);
65
- if (matches.length > 0) {
66
- result.falsePositives.push(fixture.passLines.join('\n'));
68
+ try {
69
+ const matches = matchAstGrepPattern(content, ext, pattern, allLineNums);
70
+ if (matches.length > 0) {
71
+ result.falsePositives.push(fixture.passLines.join('\n'));
72
+ }
73
+ }
74
+ catch (err) {
75
+ result.falsePositives.push(`[ast-grep error] ${getErrorMessage(err)}`);
67
76
  }
68
77
  }
69
78
  }
@@ -1 +1 @@
1
- {"version":3,"file":"rule-tester.js","sourceRoot":"","sources":["../src/rule-tester.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rule-tester.js","sourceRoot":"","sources":["../src/rule-tester.ts"],"names":[],"mappings":"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"}
@@ -10,4 +10,13 @@
10
10
  * @see https://github.com/mmnto-ai/totem/issues/158
11
11
  */
12
12
  export declare function wrapXml(tag: string, content: string): string;
13
+ /**
14
+ * Wrap untrusted external content (PR comments, MCP inputs, GitHub API data)
15
+ * in XML tags with full entity escaping. All `<`, `>`, and `&` characters
16
+ * are escaped to prevent prompt injection breakout.
17
+ *
18
+ * Use this for any content fetched from the network or supplied by external agents.
19
+ * For trusted local content (git diffs), use `wrapXml()` instead.
20
+ */
21
+ export declare function wrapUntrustedXml(tag: string, content: string): string;
13
22
  //# sourceMappingURL=xml-format.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"xml-format.d.ts","sourceRoot":"","sources":["../src/xml-format.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAO5D"}
1
+ {"version":3,"file":"xml-format.d.ts","sourceRoot":"","sources":["../src/xml-format.ts"],"names":[],"mappings":"AAQA;;;;;;;;;;GAUG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAQ5D;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAIrE"}