@mmnto/totem 1.20.0 → 1.22.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 (65) hide show
  1. package/dist/ast-classifier.d.ts +72 -4
  2. package/dist/ast-classifier.d.ts.map +1 -1
  3. package/dist/ast-classifier.js +155 -30
  4. package/dist/ast-classifier.js.map +1 -1
  5. package/dist/ast-classifier.test.js +80 -2
  6. package/dist/ast-classifier.test.js.map +1 -1
  7. package/dist/ast-grep-query.d.ts.map +1 -1
  8. package/dist/ast-grep-query.js +31 -11
  9. package/dist/ast-grep-query.js.map +1 -1
  10. package/dist/chunkers/chunker-registry.d.ts +77 -0
  11. package/dist/chunkers/chunker-registry.d.ts.map +1 -0
  12. package/dist/chunkers/chunker-registry.js +134 -0
  13. package/dist/chunkers/chunker-registry.js.map +1 -0
  14. package/dist/chunkers/chunker-registry.test.d.ts +14 -0
  15. package/dist/chunkers/chunker-registry.test.d.ts.map +1 -0
  16. package/dist/chunkers/chunker-registry.test.js +95 -0
  17. package/dist/chunkers/chunker-registry.test.js.map +1 -0
  18. package/dist/chunkers/chunker.d.ts +18 -3
  19. package/dist/chunkers/chunker.d.ts.map +1 -1
  20. package/dist/chunkers/chunker.js +20 -13
  21. package/dist/chunkers/chunker.js.map +1 -1
  22. package/dist/compiler.d.ts +1 -1
  23. package/dist/compiler.d.ts.map +1 -1
  24. package/dist/compiler.js +1 -1
  25. package/dist/compiler.js.map +1 -1
  26. package/dist/config-schema.d.ts +193 -10
  27. package/dist/config-schema.d.ts.map +1 -1
  28. package/dist/config-schema.js +87 -2
  29. package/dist/config-schema.js.map +1 -1
  30. package/dist/config-schema.test.js +122 -0
  31. package/dist/config-schema.test.js.map +1 -1
  32. package/dist/index.d.ts +9 -3
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +10 -2
  35. package/dist/index.js.map +1 -1
  36. package/dist/pack-discovery.d.ts +201 -0
  37. package/dist/pack-discovery.d.ts.map +1 -0
  38. package/dist/pack-discovery.js +298 -0
  39. package/dist/pack-discovery.js.map +1 -0
  40. package/dist/pack-discovery.test.d.ts +17 -0
  41. package/dist/pack-discovery.test.d.ts.map +1 -0
  42. package/dist/pack-discovery.test.js +343 -0
  43. package/dist/pack-discovery.test.js.map +1 -0
  44. package/dist/pack-manifest-writer.d.ts +88 -0
  45. package/dist/pack-manifest-writer.d.ts.map +1 -0
  46. package/dist/pack-manifest-writer.js +162 -0
  47. package/dist/pack-manifest-writer.js.map +1 -0
  48. package/dist/pack-manifest-writer.test.d.ts +15 -0
  49. package/dist/pack-manifest-writer.test.d.ts.map +1 -0
  50. package/dist/pack-manifest-writer.test.js +184 -0
  51. package/dist/pack-manifest-writer.test.js.map +1 -0
  52. package/dist/rule-engine.d.ts +11 -0
  53. package/dist/rule-engine.d.ts.map +1 -1
  54. package/dist/rule-engine.js +60 -6
  55. package/dist/rule-engine.js.map +1 -1
  56. package/dist/rule-engine.test.js +116 -0
  57. package/dist/rule-engine.test.js.map +1 -1
  58. package/dist/stage4-verifier.d.ts +94 -1
  59. package/dist/stage4-verifier.d.ts.map +1 -1
  60. package/dist/stage4-verifier.js +139 -71
  61. package/dist/stage4-verifier.js.map +1 -1
  62. package/dist/stage4-verifier.test.js +215 -4
  63. package/dist/stage4-verifier.test.js.map +1 -1
  64. package/dist/store/lance-schema.d.ts +3 -3
  65. package/package.json +3 -1
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Runtime chunker registry (ADR-097 § 5 Q3, mmnto-ai/totem#1769).
3
+ *
4
+ * Replaces the closed `CHUNKER_MAP` keyed by the closed `ChunkStrategy` Zod
5
+ * enum. The registry is a string-keyed Map populated by:
6
+ *
7
+ * 1. Built-in chunkers self-registering at module load (this file's bottom).
8
+ * 2. Pack registration callbacks invoked by `loadInstalledPacks()` during
9
+ * boot (mmnto-ai/totem#1768) — they register via the
10
+ * `PackRegistrationAPI.registerChunkStrategy()` surface, which calls
11
+ * through to `register()` in this module.
12
+ *
13
+ * After boot completes, the engine seals (`pack-discovery.ts` flips
14
+ * `engineSealed = true`) and any further `register()` call throws.
15
+ *
16
+ * The registry has no concept of which built-in vs pack-registered an
17
+ * entry is — that distinction is enforced at registration time (see
18
+ * `register()` and `BUILTIN_CHUNKER_NAMES`).
19
+ */
20
+ import type { Chunker } from './chunker.js';
21
+ /**
22
+ * Register a chunker under a strategy name. Called by built-ins at module
23
+ * load and by Pack registration callbacks during boot. Throws when:
24
+ *
25
+ * - `engineSealed` (per `pack-discovery.ts`) is true.
26
+ * - The strategy name is already registered (built-ins are immutable;
27
+ * pack-vs-pack collisions are also rejected).
28
+ *
29
+ * Boot vs pack distinction: built-ins call `register()` directly at
30
+ * module-load time (sealed === false, name not yet in registry → succeeds).
31
+ * Packs call via `PackRegistrationAPI.registerChunkStrategy` which routes
32
+ * to this same function. The seal check + name-collision check covers both
33
+ * in one place.
34
+ */
35
+ export declare function register(name: string, chunkerCtor: new () => Chunker): void;
36
+ /**
37
+ * Look up a chunker class by strategy name. Returns undefined when the
38
+ * name isn't registered — callers decide whether absence is a hard error
39
+ * (Zod validation), a fail-loud at runtime (createChunker), or a soft
40
+ * miss.
41
+ */
42
+ export declare function lookup(name: string): (new () => Chunker) | undefined;
43
+ /**
44
+ * Snapshot of currently-registered strategy names. Used for:
45
+ *
46
+ * - `ChunkStrategySchema` validation error messages (suggesting the valid set).
47
+ * - `totem describe` output enumerating effective strategies.
48
+ *
49
+ * Returns a sorted array for deterministic output.
50
+ */
51
+ export declare function registeredNames(): readonly string[];
52
+ /**
53
+ * True iff the strategy name is one of the built-ins (vs pack-registered).
54
+ * Used by tooling that needs to distinguish core-shipped strategies from
55
+ * pack-contributed ones.
56
+ */
57
+ export declare function isBuiltin(name: string): boolean;
58
+ /**
59
+ * Mark the registry as sealed. After this, `register()` calls throw.
60
+ * Called by `pack-discovery.ts` `loadInstalledPacks()` after every pack
61
+ * callback returns.
62
+ *
63
+ * The seal applies process-wide. Tests that need to register additional
64
+ * fixture chunkers between cases use `__unsealForTests()`.
65
+ */
66
+ export declare function seal(): void;
67
+ /** True iff the registry has been sealed. */
68
+ export declare function isSealed(): boolean;
69
+ /**
70
+ * Test-only: reset the registry and re-register built-ins. Lets per-test
71
+ * fixtures register without leaking state across tests. NEVER call from
72
+ * production code.
73
+ */
74
+ export declare function __resetForTests(): void;
75
+ /** Test-only: clear the seal so subsequent registrations succeed. */
76
+ export declare function __unsealForTests(): void;
77
+ //# sourceMappingURL=chunker-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunker-registry.d.ts","sourceRoot":"","sources":["../../src/chunkers/chunker-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAyB5C;;;;;;;;;;;;;GAaG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,OAAO,GAAG,IAAI,CAa3E;AAED;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,UAAU,OAAO,CAAC,GAAG,SAAS,CAEpE;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,IAAI,SAAS,MAAM,EAAE,CAEnD;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE/C;AAED;;;;;;;GAOG;AACH,wBAAgB,IAAI,IAAI,IAAI,CAE3B;AAED,6CAA6C;AAC7C,wBAAgB,QAAQ,IAAI,OAAO,CAElC;AAID;;;;GAIG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAKtC;AAED,qEAAqE;AACrE,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC"}
@@ -0,0 +1,134 @@
1
+ /**
2
+ * Runtime chunker registry (ADR-097 § 5 Q3, mmnto-ai/totem#1769).
3
+ *
4
+ * Replaces the closed `CHUNKER_MAP` keyed by the closed `ChunkStrategy` Zod
5
+ * enum. The registry is a string-keyed Map populated by:
6
+ *
7
+ * 1. Built-in chunkers self-registering at module load (this file's bottom).
8
+ * 2. Pack registration callbacks invoked by `loadInstalledPacks()` during
9
+ * boot (mmnto-ai/totem#1768) — they register via the
10
+ * `PackRegistrationAPI.registerChunkStrategy()` surface, which calls
11
+ * through to `register()` in this module.
12
+ *
13
+ * After boot completes, the engine seals (`pack-discovery.ts` flips
14
+ * `engineSealed = true`) and any further `register()` call throws.
15
+ *
16
+ * The registry has no concept of which built-in vs pack-registered an
17
+ * entry is — that distinction is enforced at registration time (see
18
+ * `register()` and `BUILTIN_CHUNKER_NAMES`).
19
+ */
20
+ import { MarkdownChunker } from './markdown-chunker.js';
21
+ import { SchemaFileChunker } from './schema-file-chunker.js';
22
+ import { SessionLogChunker } from './session-log-chunker.js';
23
+ import { TestFileChunker } from './test-file-chunker.js';
24
+ import { TypeScriptChunker } from './typescript-chunker.js';
25
+ // ─── Internal state ─────────────────────────────────
26
+ const CHUNKER_REGISTRY = new Map();
27
+ /**
28
+ * Built-in chunker names, immutable. A pack attempting to re-register one
29
+ * of these names is rejected at the boundary in `register()`. The set is
30
+ * populated alongside the initial registrations below; we read it at
31
+ * registration time, so adding a new built-in only requires editing the
32
+ * `register()` calls at the bottom of this file.
33
+ */
34
+ const BUILTIN_CHUNKER_NAMES = new Set();
35
+ /** Cleared by `__resetForTests` / `unsealForTests` — see pack-discovery.ts. */
36
+ let sealed = false;
37
+ // ─── Public API ─────────────────────────────────────
38
+ /**
39
+ * Register a chunker under a strategy name. Called by built-ins at module
40
+ * load and by Pack registration callbacks during boot. Throws when:
41
+ *
42
+ * - `engineSealed` (per `pack-discovery.ts`) is true.
43
+ * - The strategy name is already registered (built-ins are immutable;
44
+ * pack-vs-pack collisions are also rejected).
45
+ *
46
+ * Boot vs pack distinction: built-ins call `register()` directly at
47
+ * module-load time (sealed === false, name not yet in registry → succeeds).
48
+ * Packs call via `PackRegistrationAPI.registerChunkStrategy` which routes
49
+ * to this same function. The seal check + name-collision check covers both
50
+ * in one place.
51
+ */
52
+ export function register(name, chunkerCtor) {
53
+ if (sealed) {
54
+ throw new Error(`Chunker registration after engine seal: tried to register '${name}' but engine has already started serving requests. Pack registration must complete during boot — see ADR-097 § 5 Q5.`);
55
+ }
56
+ if (CHUNKER_REGISTRY.has(name)) {
57
+ const existingIsBuiltin = BUILTIN_CHUNKER_NAMES.has(name);
58
+ throw new Error(`Chunker '${name}' is already registered${existingIsBuiltin ? ' as a built-in (built-in entries are immutable)' : ' (pack-vs-pack collision — one of the packs must rename)'}.`);
59
+ }
60
+ CHUNKER_REGISTRY.set(name, chunkerCtor);
61
+ }
62
+ /**
63
+ * Look up a chunker class by strategy name. Returns undefined when the
64
+ * name isn't registered — callers decide whether absence is a hard error
65
+ * (Zod validation), a fail-loud at runtime (createChunker), or a soft
66
+ * miss.
67
+ */
68
+ export function lookup(name) {
69
+ return CHUNKER_REGISTRY.get(name);
70
+ }
71
+ /**
72
+ * Snapshot of currently-registered strategy names. Used for:
73
+ *
74
+ * - `ChunkStrategySchema` validation error messages (suggesting the valid set).
75
+ * - `totem describe` output enumerating effective strategies.
76
+ *
77
+ * Returns a sorted array for deterministic output.
78
+ */
79
+ export function registeredNames() {
80
+ return [...CHUNKER_REGISTRY.keys()].sort();
81
+ }
82
+ /**
83
+ * True iff the strategy name is one of the built-ins (vs pack-registered).
84
+ * Used by tooling that needs to distinguish core-shipped strategies from
85
+ * pack-contributed ones.
86
+ */
87
+ export function isBuiltin(name) {
88
+ return BUILTIN_CHUNKER_NAMES.has(name);
89
+ }
90
+ /**
91
+ * Mark the registry as sealed. After this, `register()` calls throw.
92
+ * Called by `pack-discovery.ts` `loadInstalledPacks()` after every pack
93
+ * callback returns.
94
+ *
95
+ * The seal applies process-wide. Tests that need to register additional
96
+ * fixture chunkers between cases use `__unsealForTests()`.
97
+ */
98
+ export function seal() {
99
+ sealed = true;
100
+ }
101
+ /** True iff the registry has been sealed. */
102
+ export function isSealed() {
103
+ return sealed;
104
+ }
105
+ // ─── Test-only helpers ──────────────────────────────
106
+ /**
107
+ * Test-only: reset the registry and re-register built-ins. Lets per-test
108
+ * fixtures register without leaking state across tests. NEVER call from
109
+ * production code.
110
+ */
111
+ export function __resetForTests() {
112
+ CHUNKER_REGISTRY.clear();
113
+ BUILTIN_CHUNKER_NAMES.clear();
114
+ sealed = false;
115
+ registerBuiltins();
116
+ }
117
+ /** Test-only: clear the seal so subsequent registrations succeed. */
118
+ export function __unsealForTests() {
119
+ sealed = false;
120
+ }
121
+ // ─── Built-in registration (runs at module load) ────
122
+ function registerBuiltin(name, ctor) {
123
+ BUILTIN_CHUNKER_NAMES.add(name);
124
+ register(name, ctor);
125
+ }
126
+ function registerBuiltins() {
127
+ registerBuiltin('session-log', SessionLogChunker);
128
+ registerBuiltin('markdown-heading', MarkdownChunker);
129
+ registerBuiltin('typescript-ast', TypeScriptChunker);
130
+ registerBuiltin('schema-file', SchemaFileChunker);
131
+ registerBuiltin('test-file', TestFileChunker);
132
+ }
133
+ registerBuiltins();
134
+ //# sourceMappingURL=chunker-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunker-registry.js","sourceRoot":"","sources":["../../src/chunkers/chunker-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,uDAAuD;AAEvD,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAA6B,CAAC;AAE9D;;;;;;GAMG;AACH,MAAM,qBAAqB,GAAG,IAAI,GAAG,EAAU,CAAC;AAEhD,+EAA+E;AAC/E,IAAI,MAAM,GAAG,KAAK,CAAC;AAEnB,uDAAuD;AAEvD;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAY,EAAE,WAA8B;IACnE,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,8DAA8D,IAAI,sHAAsH,CACzL,CAAC;IACJ,CAAC;IACD,IAAI,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/B,MAAM,iBAAiB,GAAG,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1D,MAAM,IAAI,KAAK,CACb,YAAY,IAAI,0BAA0B,iBAAiB,CAAC,CAAC,CAAC,iDAAiD,CAAC,CAAC,CAAC,0DAA0D,GAAG,CAChL,CAAC;IACJ,CAAC;IACD,gBAAgB,CAAC,GAAG,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;AAC1C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,MAAM,CAAC,IAAY;IACjC,OAAO,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACpC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe;IAC7B,OAAO,CAAC,GAAG,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AAC7C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,OAAO,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACzC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,IAAI;IAClB,MAAM,GAAG,IAAI,CAAC;AAChB,CAAC;AAED,6CAA6C;AAC7C,MAAM,UAAU,QAAQ;IACtB,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,uDAAuD;AAEvD;;;;GAIG;AACH,MAAM,UAAU,eAAe;IAC7B,gBAAgB,CAAC,KAAK,EAAE,CAAC;IACzB,qBAAqB,CAAC,KAAK,EAAE,CAAC;IAC9B,MAAM,GAAG,KAAK,CAAC;IACf,gBAAgB,EAAE,CAAC;AACrB,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,gBAAgB;IAC9B,MAAM,GAAG,KAAK,CAAC;AACjB,CAAC;AAED,uDAAuD;AAEvD,SAAS,eAAe,CAAC,IAAY,EAAE,IAAuB;IAC5D,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACvB,CAAC;AAED,SAAS,gBAAgB;IACvB,eAAe,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;IAClD,eAAe,CAAC,kBAAkB,EAAE,eAAe,CAAC,CAAC;IACrD,eAAe,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,CAAC;IACrD,eAAe,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;IAClD,eAAe,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;AAChD,CAAC;AAED,gBAAgB,EAAE,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Tests for the chunker registry (mmnto-ai/totem#1769, ADR-097 § 5 Q3).
3
+ *
4
+ * Covers invariants 4-9 + 11 (chunker side) from
5
+ * `.totem/specs/pack-substrate-bundle.md`:
6
+ *
7
+ * - All five built-in chunkers self-register at module load.
8
+ * - Pack-style registration adds new entries.
9
+ * - Re-registration of the same name throws.
10
+ * - Registering a built-in name throws (immutable).
11
+ * - Post-seal mutation throws.
12
+ */
13
+ export {};
14
+ //# sourceMappingURL=chunker-registry.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunker-registry.test.d.ts","sourceRoot":"","sources":["../../src/chunkers/chunker-registry.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG"}
@@ -0,0 +1,95 @@
1
+ /**
2
+ * Tests for the chunker registry (mmnto-ai/totem#1769, ADR-097 § 5 Q3).
3
+ *
4
+ * Covers invariants 4-9 + 11 (chunker side) from
5
+ * `.totem/specs/pack-substrate-bundle.md`:
6
+ *
7
+ * - All five built-in chunkers self-register at module load.
8
+ * - Pack-style registration adds new entries.
9
+ * - Re-registration of the same name throws.
10
+ * - Registering a built-in name throws (immutable).
11
+ * - Post-seal mutation throws.
12
+ */
13
+ import { afterEach, describe, expect, it } from 'vitest';
14
+ import { __resetForTests, __unsealForTests, isBuiltin, isSealed, lookup, register, registeredNames, seal, } from './chunker-registry.js';
15
+ class FakeChunker {
16
+ strategy = 'fake-strategy';
17
+ chunk(_content, _filePath, _type) {
18
+ return [];
19
+ }
20
+ }
21
+ class AnotherFakeChunker {
22
+ strategy = 'another-fake';
23
+ chunk(_content, _filePath, _type) {
24
+ return [];
25
+ }
26
+ }
27
+ afterEach(() => {
28
+ // Each test gets a fresh registry with built-ins re-registered. Without
29
+ // this, a sealed registry from a prior test would leak into subsequent
30
+ // ones and they'd all fail with "after seal" errors.
31
+ __resetForTests();
32
+ });
33
+ describe('chunker-registry built-ins', () => {
34
+ it('registers all five built-in chunkers at module load', () => {
35
+ expect(lookup('session-log')).toBeDefined();
36
+ expect(lookup('markdown-heading')).toBeDefined();
37
+ expect(lookup('typescript-ast')).toBeDefined();
38
+ expect(lookup('schema-file')).toBeDefined();
39
+ expect(lookup('test-file')).toBeDefined();
40
+ });
41
+ it('exposes registered names sorted alphabetically', () => {
42
+ expect(registeredNames()).toEqual([
43
+ 'markdown-heading',
44
+ 'schema-file',
45
+ 'session-log',
46
+ 'test-file',
47
+ 'typescript-ast',
48
+ ]);
49
+ });
50
+ it('marks built-ins as built-in', () => {
51
+ expect(isBuiltin('markdown-heading')).toBe(true);
52
+ expect(isBuiltin('typescript-ast')).toBe(true);
53
+ expect(isBuiltin('not-a-real-strategy')).toBe(false);
54
+ });
55
+ });
56
+ describe('chunker-registry pack-style registration', () => {
57
+ it('accepts new strategy registration before seal', () => {
58
+ register('fake-strategy', FakeChunker);
59
+ expect(lookup('fake-strategy')).toBe(FakeChunker);
60
+ expect(registeredNames()).toContain('fake-strategy');
61
+ });
62
+ it('does not mark pack-registered names as built-in', () => {
63
+ register('fake-strategy', FakeChunker);
64
+ expect(isBuiltin('fake-strategy')).toBe(false);
65
+ });
66
+ it('throws when re-registering the same strategy name (pack-vs-pack collision)', () => {
67
+ register('fake-strategy', FakeChunker);
68
+ expect(() => register('fake-strategy', AnotherFakeChunker)).toThrowError(/already registered.*pack-vs-pack collision/);
69
+ });
70
+ it('throws when registering a built-in name (built-ins immutable)', () => {
71
+ expect(() => register('markdown-heading', FakeChunker)).toThrowError(/already registered.*as a built-in.*immutable/);
72
+ });
73
+ });
74
+ describe('chunker-registry seal contract', () => {
75
+ it('starts unsealed', () => {
76
+ expect(isSealed()).toBe(false);
77
+ });
78
+ it('seal() flips the flag', () => {
79
+ seal();
80
+ expect(isSealed()).toBe(true);
81
+ });
82
+ it('register() after seal throws with ADR-097 § 5 Q5 reference', () => {
83
+ seal();
84
+ expect(() => register('fake-strategy', FakeChunker)).toThrowError(/after engine seal.*ADR-097 § 5 Q5/);
85
+ });
86
+ it('__unsealForTests reverts the seal so subsequent tests can register', () => {
87
+ seal();
88
+ expect(isSealed()).toBe(true);
89
+ __unsealForTests();
90
+ expect(isSealed()).toBe(false);
91
+ register('fake-strategy', FakeChunker);
92
+ expect(lookup('fake-strategy')).toBe(FakeChunker);
93
+ });
94
+ });
95
+ //# sourceMappingURL=chunker-registry.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunker-registry.test.js","sourceRoot":"","sources":["../../src/chunkers/chunker-registry.test.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,27 @@
1
- import type { ChunkStrategy, ContentType } from '../config-schema.js';
1
+ import type { ContentType } from '../config-schema.js';
2
2
  import type { Chunk } from '../types.js';
3
3
  /**
4
4
  * All chunkers implement this interface.
5
5
  * Given file content and metadata, produce an array of Chunks.
6
6
  */
7
7
  export interface Chunker {
8
- readonly strategy: ChunkStrategy;
8
+ readonly strategy: string;
9
9
  chunk(content: string, filePath: string, type: ContentType): Chunk[];
10
10
  }
11
- export declare function createChunker(strategy: ChunkStrategy): Chunker;
11
+ /**
12
+ * Resolve a strategy name to a fresh chunker instance via the registry.
13
+ *
14
+ * Pre-ADR-097 the strategy → constructor mapping was a closed `Record`
15
+ * keyed by the closed `ChunkStrategy` Zod enum (mmnto-ai/totem#1769).
16
+ * Now the lookup goes through `chunker-registry.ts`, which is populated
17
+ * by built-ins at module load and extended by Pack registration
18
+ * callbacks during boot.
19
+ *
20
+ * Fail-loud per Tenet 4: an unregistered strategy name names the missing
21
+ * pack (callers consume the registry's `registeredNames()` for context).
22
+ * Schema validation (`ChunkStrategySchema`) catches misconfigured strategy
23
+ * names at config-load time, so reaching this fail-loud at runtime is an
24
+ * architectural error.
25
+ */
26
+ export declare function createChunker(strategy: string): Chunker;
12
27
  //# sourceMappingURL=chunker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"chunker.d.ts","sourceRoot":"","sources":["../../src/chunkers/chunker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAOzC;;;GAGG;AACH,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IAEjC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,KAAK,EAAE,CAAC;CACtE;AAUD,wBAAgB,aAAa,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAG9D"}
1
+ {"version":3,"file":"chunker.d.ts","sourceRoot":"","sources":["../../src/chunkers/chunker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGzC;;;GAGG;AACH,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,KAAK,EAAE,CAAC;CACtE;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAQvD"}
@@ -1,17 +1,24 @@
1
- import { MarkdownChunker } from './markdown-chunker.js';
2
- import { SchemaFileChunker } from './schema-file-chunker.js';
3
- import { SessionLogChunker } from './session-log-chunker.js';
4
- import { TestFileChunker } from './test-file-chunker.js';
5
- import { TypeScriptChunker } from './typescript-chunker.js';
6
- const CHUNKER_MAP = {
7
- 'session-log': SessionLogChunker,
8
- 'markdown-heading': MarkdownChunker,
9
- 'typescript-ast': TypeScriptChunker,
10
- 'schema-file': SchemaFileChunker,
11
- 'test-file': TestFileChunker,
12
- };
1
+ import { lookup } from './chunker-registry.js';
2
+ /**
3
+ * Resolve a strategy name to a fresh chunker instance via the registry.
4
+ *
5
+ * Pre-ADR-097 the strategy → constructor mapping was a closed `Record`
6
+ * keyed by the closed `ChunkStrategy` Zod enum (mmnto-ai/totem#1769).
7
+ * Now the lookup goes through `chunker-registry.ts`, which is populated
8
+ * by built-ins at module load and extended by Pack registration
9
+ * callbacks during boot.
10
+ *
11
+ * Fail-loud per Tenet 4: an unregistered strategy name names the missing
12
+ * pack (callers consume the registry's `registeredNames()` for context).
13
+ * Schema validation (`ChunkStrategySchema`) catches misconfigured strategy
14
+ * names at config-load time, so reaching this fail-loud at runtime is an
15
+ * architectural error.
16
+ */
13
17
  export function createChunker(strategy) {
14
- const Ctor = CHUNKER_MAP[strategy];
18
+ const Ctor = lookup(strategy);
19
+ if (!Ctor) {
20
+ throw new Error(`Unknown chunk strategy: '${strategy}'. The strategy is not registered — either install the pack that provides it or correct the strategy name in totem.config.ts.`);
21
+ }
15
22
  return new Ctor();
16
23
  }
17
24
  //# sourceMappingURL=chunker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chunker.js","sourceRoot":"","sources":["../../src/chunkers/chunker.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAY5D,MAAM,WAAW,GAA6C;IAC5D,aAAa,EAAE,iBAAiB;IAChC,kBAAkB,EAAE,eAAe;IACnC,gBAAgB,EAAE,iBAAiB;IACnC,aAAa,EAAE,iBAAiB;IAChC,WAAW,EAAE,eAAe;CAC7B,CAAC;AAEF,MAAM,UAAU,aAAa,CAAC,QAAuB;IACnD,MAAM,IAAI,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IACnC,OAAO,IAAI,IAAI,EAAE,CAAC;AACpB,CAAC"}
1
+ {"version":3,"file":"chunker.js","sourceRoot":"","sources":["../../src/chunkers/chunker.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAY/C;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,aAAa,CAAC,QAAgB;IAC5C,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC9B,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CACb,4BAA4B,QAAQ,+HAA+H,CACpK,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,IAAI,EAAE,CAAC;AACpB,CAAC"}
@@ -11,7 +11,7 @@ import type { AstGrepYamlRule, CompiledRule, CompiledRulesFile, CompilerOutput,
11
11
  export type { AstContext, AstGrepYamlRule, CompiledRule, CompiledRulesFile, CompilerOutput, DiffAddition, NapiConfig, NonCompilableEntry, NonCompilableReasonCode, RegexValidation, RuleEventCallback, RuleEventContext, Violation, } from './compiler-schema.js';
12
12
  export { AstGrepYamlRuleSchema, CompiledRuleSchema, CompiledRulesFileSchema, CompilerOutputSchema, LEDGER_RETRY_PENDING_CODES, NapiConfigSchema, NonCompilableEntryReadSchema, NonCompilableEntryWriteSchema, NonCompilableReasonCodeSchema, shouldWriteToLedger, } from './compiler-schema.js';
13
13
  export { extractAddedLines } from './diff-parser.js';
14
- export { applyAstRulesToAdditions, applyRules, applyRulesToAdditions, type CoreLogger, extractJustification, matchesGlob, type RuleEngineContext, } from './rule-engine.js';
14
+ export { applyAstRulesToAdditions, applyRules, applyRulesToAdditions, type CoreLogger, extractJustification, fileMatchesGlobs, matchesGlob, type RuleEngineContext, } from './rule-engine.js';
15
15
  /** Hash a lesson's heading + body to detect changes since compilation. */
16
16
  export declare function hashLesson(heading: string, body: string): string;
17
17
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../src/compiler.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACZ,iBAAiB,EACjB,cAAc,EAEd,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAU9B,YAAY,EACV,UAAU,EACV,eAAe,EACf,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACd,YAAY,EACZ,UAAU,EACV,kBAAkB,EAClB,uBAAuB,EACvB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,SAAS,GACV,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,EACpB,0BAA0B,EAC1B,gBAAgB,EAChB,4BAA4B,EAC5B,6BAA6B,EAC7B,6BAA6B,EAC7B,mBAAmB,GACpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EACL,wBAAwB,EACxB,UAAU,EACV,qBAAqB,EACrB,KAAK,UAAU,EACf,oBAAoB,EACpB,WAAW,EACX,KAAK,iBAAiB,GACvB,MAAM,kBAAkB,CAAC;AAM1B,0EAA0E;AAC1E,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAMhE;AAID;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,CAY9D;AAID;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAC7B,YAAY,EAAE,CAqBhB;AAED,wEAAwE;AACxE,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAC7B,iBAAiB,CAoBnB;AAED,0CAA0C;AAC1C,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,IAAI,CAMhF;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,GAAG,IAAI,CAuBtF;AAID;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,EAAE,CAsB5D;AAwBD;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,OAAO,GAAG,KAAK,EACvB,OAAO,EAAE,MAAM,GACd;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAC1C,wBAAgB,YAAY,CAC1B,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACxC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,eAAe,CAAA;CAAE,CAAC;AAQnF,wBAAgB,YAAY,CAC1B,MAAM,EAAE,OAAO,GAAG,KAAK,GAAG,UAAU,EACpC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACxC;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AA2CF,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CA4B7E"}
1
+ {"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../src/compiler.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACZ,iBAAiB,EACjB,cAAc,EAEd,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAU9B,YAAY,EACV,UAAU,EACV,eAAe,EACf,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACd,YAAY,EACZ,UAAU,EACV,kBAAkB,EAClB,uBAAuB,EACvB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,SAAS,GACV,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,EACpB,0BAA0B,EAC1B,gBAAgB,EAChB,4BAA4B,EAC5B,6BAA6B,EAC7B,6BAA6B,EAC7B,mBAAmB,GACpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EACL,wBAAwB,EACxB,UAAU,EACV,qBAAqB,EACrB,KAAK,UAAU,EACf,oBAAoB,EACpB,gBAAgB,EAChB,WAAW,EACX,KAAK,iBAAiB,GACvB,MAAM,kBAAkB,CAAC;AAM1B,0EAA0E;AAC1E,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAMhE;AAID;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,CAY9D;AAID;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAC7B,YAAY,EAAE,CAqBhB;AAED,wEAAwE;AACxE,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAC7B,iBAAiB,CAoBnB;AAED,0CAA0C;AAC1C,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,IAAI,CAMhF;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,GAAG,IAAI,CAuBtF;AAID;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,EAAE,CAsB5D;AAwBD;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,OAAO,GAAG,KAAK,EACvB,OAAO,EAAE,MAAM,GACd;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAC1C,wBAAgB,YAAY,CAC1B,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACxC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,eAAe,CAAA;CAAE,CAAC;AAQnF,wBAAgB,YAAY,CAC1B,MAAM,EAAE,OAAO,GAAG,KAAK,GAAG,UAAU,EACpC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACxC;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AA2CF,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CA4B7E"}
package/dist/compiler.js CHANGED
@@ -15,7 +15,7 @@ import { CompiledRulesFileSchema, CompilerOutputSchema, NonCompilableEntryWriteS
15
15
  import { TotemParseError } from './errors.js';
16
16
  export { AstGrepYamlRuleSchema, CompiledRuleSchema, CompiledRulesFileSchema, CompilerOutputSchema, LEDGER_RETRY_PENDING_CODES, NapiConfigSchema, NonCompilableEntryReadSchema, NonCompilableEntryWriteSchema, NonCompilableReasonCodeSchema, shouldWriteToLedger, } from './compiler-schema.js';
17
17
  export { extractAddedLines } from './diff-parser.js';
18
- export { applyAstRulesToAdditions, applyRules, applyRulesToAdditions, extractJustification, matchesGlob, } from './rule-engine.js';
18
+ export { applyAstRulesToAdditions, applyRules, applyRulesToAdditions, extractJustification, fileMatchesGlobs, matchesGlob, } from './rule-engine.js';
19
19
  // ─── Hashing ────────────────────────────────────────
20
20
  const HASH_SLICE_LEN = 16;
21
21
  /** Hash a lesson's heading + body to detect changes since compilation. */
@@ -1 +1 @@
1
- {"version":3,"file":"compiler.js","sourceRoot":"","sources":["../src/compiler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compiler.js","sourceRoot":"","sources":["../src/compiler.ts"],"names":[],"mappings":"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"}