@mmnto/totem 1.5.1 → 1.5.4

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 (52) hide show
  1. package/dist/chunkers/markdown-chunker.d.ts.map +1 -1
  2. package/dist/chunkers/markdown-chunker.js +6 -0
  3. package/dist/chunkers/markdown-chunker.js.map +1 -1
  4. package/dist/chunkers/markdown-chunker.test.js +12 -0
  5. package/dist/chunkers/markdown-chunker.test.js.map +1 -1
  6. package/dist/compiler-schema.d.ts +7 -1
  7. package/dist/compiler-schema.d.ts.map +1 -1
  8. package/dist/compiler.d.ts +5 -4
  9. package/dist/compiler.d.ts.map +1 -1
  10. package/dist/compiler.js +29 -4
  11. package/dist/compiler.js.map +1 -1
  12. package/dist/compiler.test.js +26 -4
  13. package/dist/compiler.test.js.map +1 -1
  14. package/dist/config-schema.d.ts +19 -0
  15. package/dist/config-schema.d.ts.map +1 -1
  16. package/dist/config-schema.js +3 -0
  17. package/dist/config-schema.js.map +1 -1
  18. package/dist/index.d.ts +7 -3
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +4 -2
  21. package/dist/index.js.map +1 -1
  22. package/dist/ledger.d.ts +47 -0
  23. package/dist/ledger.d.ts.map +1 -0
  24. package/dist/ledger.js +77 -0
  25. package/dist/ledger.js.map +1 -0
  26. package/dist/ledger.test.d.ts +2 -0
  27. package/dist/ledger.test.d.ts.map +1 -0
  28. package/dist/ledger.test.js +139 -0
  29. package/dist/ledger.test.js.map +1 -0
  30. package/dist/lesson-io.test.js +1 -0
  31. package/dist/lesson-io.test.js.map +1 -1
  32. package/dist/rule-engine.d.ts +6 -0
  33. package/dist/rule-engine.d.ts.map +1 -1
  34. package/dist/rule-engine.js +56 -7
  35. package/dist/rule-engine.js.map +1 -1
  36. package/dist/rule-engine.test.js +134 -1
  37. package/dist/rule-engine.test.js.map +1 -1
  38. package/dist/sanitize.d.ts +4 -1
  39. package/dist/sanitize.d.ts.map +1 -1
  40. package/dist/sanitize.js +30 -1
  41. package/dist/sanitize.js.map +1 -1
  42. package/dist/sanitize.test.js +42 -0
  43. package/dist/sanitize.test.js.map +1 -1
  44. package/dist/secrets.d.ts +46 -0
  45. package/dist/secrets.d.ts.map +1 -0
  46. package/dist/secrets.js +100 -0
  47. package/dist/secrets.js.map +1 -0
  48. package/dist/secrets.test.d.ts +2 -0
  49. package/dist/secrets.test.d.ts.map +1 -0
  50. package/dist/secrets.test.js +149 -0
  51. package/dist/secrets.test.js.map +1 -0
  52. package/package.json +1 -1
@@ -0,0 +1,149 @@
1
+ import * as fs from 'node:fs';
2
+ import * as os from 'node:os';
3
+ import * as path from 'node:path';
4
+ import { afterEach, describe, expect, it, vi } from 'vitest';
5
+ import { CustomSecretSchema, loadCustomSecrets } from './secrets.js';
6
+ // ---------------------------------------------------------------------------
7
+ // Helpers
8
+ // ---------------------------------------------------------------------------
9
+ let tmpDirs = [];
10
+ function makeTmpDir() {
11
+ const dir = fs.mkdtempSync(path.join(os.tmpdir(), 'totem-secrets-test-'));
12
+ tmpDirs.push(dir);
13
+ return dir;
14
+ }
15
+ afterEach(() => {
16
+ for (const dir of tmpDirs) {
17
+ fs.rmSync(dir, { recursive: true, force: true });
18
+ }
19
+ tmpDirs = [];
20
+ });
21
+ // ---------------------------------------------------------------------------
22
+ // CustomSecretSchema direct validation
23
+ // ---------------------------------------------------------------------------
24
+ describe('CustomSecretSchema', () => {
25
+ it('accepts valid pattern type', () => {
26
+ const result = CustomSecretSchema.safeParse({ type: 'pattern', value: 'ACME-[A-Z]+' });
27
+ expect(result.success).toBe(true);
28
+ });
29
+ it('accepts valid literal type', () => {
30
+ const result = CustomSecretSchema.safeParse({ type: 'literal', value: 'my-secret-value' });
31
+ expect(result.success).toBe(true);
32
+ });
33
+ it('rejects values shorter than 4 characters', () => {
34
+ const result = CustomSecretSchema.safeParse({ type: 'literal', value: 'abc' });
35
+ expect(result.success).toBe(false);
36
+ if (!result.success) {
37
+ expect(result.error.issues[0].message).toContain('at least 4 characters');
38
+ }
39
+ });
40
+ it('accepts values with exactly 4 characters', () => {
41
+ const result = CustomSecretSchema.safeParse({ type: 'literal', value: 'abcd' });
42
+ expect(result.success).toBe(true);
43
+ });
44
+ it('rejects invalid type', () => {
45
+ const result = CustomSecretSchema.safeParse({ type: 'regex', value: 'something-long' });
46
+ expect(result.success).toBe(false);
47
+ });
48
+ });
49
+ // ---------------------------------------------------------------------------
50
+ // loadCustomSecrets
51
+ // ---------------------------------------------------------------------------
52
+ describe('loadCustomSecrets', () => {
53
+ it('merges yaml and json configurations correctly', () => {
54
+ const cwd = makeTmpDir();
55
+ const totemDir = '.totem';
56
+ // Write YAML config with secrets
57
+ fs.writeFileSync(path.join(cwd, 'totem.yaml'), 'targets:\n - glob: "**/*.md"\n type: spec\n strategy: markdown-heading\nsecrets:\n - type: pattern\n value: "ACME-[A-Z]{4}"\n - type: literal\n value: "shared-secret-1"\n', 'utf-8');
58
+ // Write local secrets.json
59
+ const totemDirPath = path.join(cwd, totemDir);
60
+ fs.mkdirSync(totemDirPath, { recursive: true });
61
+ fs.writeFileSync(path.join(totemDirPath, 'secrets.json'), JSON.stringify({
62
+ secrets: [
63
+ { type: 'literal', value: 'local-secret-1' },
64
+ { type: 'pattern', value: 'LOCAL-\\d{6}' },
65
+ ],
66
+ }), 'utf-8');
67
+ const result = loadCustomSecrets(cwd, totemDir);
68
+ expect(result).toHaveLength(4);
69
+ // Shared secrets first
70
+ expect(result[0]).toEqual({ type: 'pattern', value: 'ACME-[A-Z]{4}' });
71
+ expect(result[1]).toEqual({ type: 'literal', value: 'shared-secret-1' });
72
+ // Local secrets after
73
+ expect(result[2]).toEqual({ type: 'literal', value: 'local-secret-1' });
74
+ expect(result[3]).toEqual({ type: 'pattern', value: 'LOCAL-\\d{6}' });
75
+ });
76
+ it('returns empty array when no secrets configured', () => {
77
+ const cwd = makeTmpDir();
78
+ // No YAML config, no secrets.json
79
+ const result = loadCustomSecrets(cwd);
80
+ expect(result).toEqual([]);
81
+ });
82
+ it('handles missing secrets.json gracefully', () => {
83
+ const cwd = makeTmpDir();
84
+ // YAML config with secrets, no secrets.json
85
+ fs.writeFileSync(path.join(cwd, 'totem.yaml'), 'secrets:\n - type: literal\n value: "yaml-only-secret"\n', 'utf-8');
86
+ const result = loadCustomSecrets(cwd);
87
+ expect(result).toHaveLength(1);
88
+ expect(result[0]).toEqual({ type: 'literal', value: 'yaml-only-secret' });
89
+ });
90
+ it('handles missing yaml secrets gracefully', () => {
91
+ const cwd = makeTmpDir();
92
+ const totemDir = '.totem';
93
+ // YAML config without secrets field
94
+ fs.writeFileSync(path.join(cwd, 'totem.yaml'), 'targets:\n - glob: "**/*.md"\n type: spec\n strategy: markdown-heading\n', 'utf-8');
95
+ // Local secrets.json exists
96
+ const totemDirPath = path.join(cwd, totemDir);
97
+ fs.mkdirSync(totemDirPath, { recursive: true });
98
+ fs.writeFileSync(path.join(totemDirPath, 'secrets.json'), JSON.stringify({
99
+ secrets: [{ type: 'pattern', value: 'JSON-ONLY-\\d+' }],
100
+ }), 'utf-8');
101
+ const result = loadCustomSecrets(cwd, totemDir);
102
+ expect(result).toHaveLength(1);
103
+ expect(result[0]).toEqual({ type: 'pattern', value: 'JSON-ONLY-\\d+' });
104
+ });
105
+ it('skips invalid entries with warning', () => {
106
+ const cwd = makeTmpDir();
107
+ const totemDir = '.totem';
108
+ const onWarn = vi.fn();
109
+ // YAML config with a mix of valid and invalid secrets
110
+ fs.writeFileSync(path.join(cwd, 'totem.yaml'), 'secrets:\n - type: literal\n value: "valid-secret"\n - type: literal\n value: "ab"\n - type: bogus\n value: "also-invalid-type"\n', 'utf-8');
111
+ const result = loadCustomSecrets(cwd, totemDir, onWarn);
112
+ // Only the valid entry should survive
113
+ expect(result).toHaveLength(1);
114
+ expect(result[0]).toEqual({ type: 'literal', value: 'valid-secret' });
115
+ // Two warnings: one for too-short value, one for invalid type
116
+ expect(onWarn).toHaveBeenCalledTimes(2);
117
+ expect(onWarn).toHaveBeenCalledWith(expect.stringContaining('Skipping invalid secret entry'));
118
+ });
119
+ it('resolves yaml config files in priority order', () => {
120
+ const cwd = makeTmpDir();
121
+ // Create totem.config.yaml (higher priority)
122
+ fs.writeFileSync(path.join(cwd, 'totem.config.yaml'), 'secrets:\n - type: literal\n value: "from-config-yaml"\n', 'utf-8');
123
+ // Create totem.yaml (lower priority)
124
+ fs.writeFileSync(path.join(cwd, 'totem.yaml'), 'secrets:\n - type: literal\n value: "from-totem-yaml"\n', 'utf-8');
125
+ const result = loadCustomSecrets(cwd);
126
+ expect(result).toHaveLength(1);
127
+ expect(result[0]).toEqual({ type: 'literal', value: 'from-config-yaml' });
128
+ });
129
+ it('handles malformed yaml config gracefully', () => {
130
+ const cwd = makeTmpDir();
131
+ const onWarn = vi.fn();
132
+ fs.writeFileSync(path.join(cwd, 'totem.yaml'), ':\n invalid: [yaml: {{\n', 'utf-8');
133
+ const result = loadCustomSecrets(cwd, '.totem', onWarn);
134
+ expect(result).toEqual([]);
135
+ expect(onWarn).toHaveBeenCalledWith(expect.stringContaining('Failed to parse'));
136
+ });
137
+ it('handles malformed secrets.json gracefully', () => {
138
+ const cwd = makeTmpDir();
139
+ const totemDir = '.totem';
140
+ const onWarn = vi.fn();
141
+ const totemDirPath = path.join(cwd, totemDir);
142
+ fs.mkdirSync(totemDirPath, { recursive: true });
143
+ fs.writeFileSync(path.join(totemDirPath, 'secrets.json'), '{ not valid json', 'utf-8');
144
+ const result = loadCustomSecrets(cwd, totemDir, onWarn);
145
+ expect(result).toEqual([]);
146
+ expect(onWarn).toHaveBeenCalledWith(expect.stringContaining('Failed to read secrets.json'));
147
+ });
148
+ });
149
+ //# sourceMappingURL=secrets.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secrets.test.js","sourceRoot":"","sources":["../src/secrets.test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE7D,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAErE,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,IAAI,OAAO,GAAa,EAAE,CAAC;AAE3B,SAAS,UAAU;IACjB,MAAM,GAAG,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,qBAAqB,CAAC,CAAC,CAAC;IAC1E,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClB,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,CAAC,GAAG,EAAE;IACb,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,GAAG,EAAE,CAAC;AACf,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,uCAAuC;AACvC,8EAA8E;AAE9E,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,MAAM,GAAG,kBAAkB,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC;QACvF,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,MAAM,GAAG,kBAAkB,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAC3F,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,MAAM,GAAG,kBAAkB,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/E,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,MAAM,GAAG,kBAAkB,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QAChF,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAC9B,MAAM,MAAM,GAAG,kBAAkB,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC,CAAC;QACxF,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,oBAAoB;AACpB,8EAA8E;AAE9E,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,QAAQ,CAAC;QAE1B,iCAAiC;QACjC,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,EAC5B,2LAA2L,EAC3L,OAAO,CACR,CAAC;QAEF,2BAA2B;QAC3B,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAC9C,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,EACvC,IAAI,CAAC,SAAS,CAAC;YACb,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,gBAAgB,EAAE;gBAC5C,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,cAAc,EAAE;aAC3C;SACF,CAAC,EACF,OAAO,CACR,CAAC;QAEF,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAEhD,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC/B,uBAAuB;QACvB,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;QACvE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC,CAAC;QACzE,sBAAsB;QACtB,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC,CAAC;QACxE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;QAEzB,kCAAkC;QAClC,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;QAEzB,4CAA4C;QAC5C,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,EAC5B,8DAA8D,EAC9D,OAAO,CACR,CAAC;QAEF,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAEtC,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,QAAQ,CAAC;QAE1B,oCAAoC;QACpC,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,EAC5B,iFAAiF,EACjF,OAAO,CACR,CAAC;QAEF,4BAA4B;QAC5B,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAC9C,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,EACvC,IAAI,CAAC,SAAS,CAAC;YACb,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC;SACxD,CAAC,EACF,OAAO,CACR,CAAC;QAEF,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAEhD,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,QAAQ,CAAC;QAC1B,MAAM,MAAM,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAEvB,sDAAsD;QACtD,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,EAC5B,+IAA+I,EAC/I,OAAO,CACR,CAAC;QAEF,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QAExD,sCAAsC;QACtC,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;QAEtE,8DAA8D;QAC9D,MAAM,CAAC,MAAM,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QACxC,MAAM,CAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,gBAAgB,CAAC,+BAA+B,CAAC,CAAC,CAAC;IAChG,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;QAEzB,6CAA6C;QAC7C,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,mBAAmB,CAAC,EACnC,8DAA8D,EAC9D,OAAO,CACR,CAAC;QAEF,qCAAqC;QACrC,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,EAC5B,6DAA6D,EAC7D,OAAO,CACR,CAAC;QAEF,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAEtC,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAEvB,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,EAAE,2BAA2B,EAAE,OAAO,CAAC,CAAC;QAErF,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QAExD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC3B,MAAM,CAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAClF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,QAAQ,CAAC;QAC1B,MAAM,MAAM,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAEvB,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAC9C,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,EAAE,kBAAkB,EAAE,OAAO,CAAC,CAAC;QAEvF,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QAExD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC3B,MAAM,CAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,gBAAgB,CAAC,6BAA6B,CAAC,CAAC,CAAC;IAC9F,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mmnto/totem",
3
- "version": "1.5.1",
3
+ "version": "1.5.4",
4
4
  "description": "Persistent memory and context layer for AI agents",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",