@mmnto/totem 0.21.0 → 0.23.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.
- package/dist/adversarial.test.d.ts +2 -0
- package/dist/adversarial.test.d.ts.map +1 -0
- package/dist/adversarial.test.js +255 -0
- package/dist/adversarial.test.js.map +1 -0
- package/dist/ast-classifier.d.ts +17 -0
- package/dist/ast-classifier.d.ts.map +1 -0
- package/dist/ast-classifier.js +155 -0
- package/dist/ast-classifier.js.map +1 -0
- package/dist/ast-classifier.test.d.ts +2 -0
- package/dist/ast-classifier.test.d.ts.map +1 -0
- package/dist/ast-classifier.test.js +109 -0
- package/dist/ast-classifier.test.js.map +1 -0
- package/dist/ast-gate.d.ts +18 -0
- package/dist/ast-gate.d.ts.map +1 -0
- package/dist/ast-gate.js +71 -0
- package/dist/ast-gate.js.map +1 -0
- package/dist/ast-gate.test.d.ts +2 -0
- package/dist/ast-gate.test.d.ts.map +1 -0
- package/dist/ast-gate.test.js +94 -0
- package/dist/ast-gate.test.js.map +1 -0
- package/dist/compiler.d.ts +10 -2
- package/dist/compiler.d.ts.map +1 -1
- package/dist/compiler.js +34 -13
- package/dist/compiler.js.map +1 -1
- package/dist/compiler.test.js +24 -0
- package/dist/compiler.test.js.map +1 -1
- package/dist/config-schema.d.ts +200 -0
- package/dist/config-schema.d.ts.map +1 -1
- package/dist/config-schema.js +16 -0
- package/dist/config-schema.js.map +1 -1
- package/dist/config-schema.test.js +13 -1
- package/dist/config-schema.test.js.map +1 -1
- package/dist/drift-detector.d.ts.map +1 -1
- package/dist/drift-detector.js +5 -1
- package/dist/drift-detector.js.map +1 -1
- package/dist/drift-detector.test.js +15 -0
- package/dist/drift-detector.test.js.map +1 -1
- package/dist/index.d.ts +7 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/lesson-format.d.ts +6 -0
- package/dist/lesson-format.d.ts.map +1 -1
- package/dist/lesson-format.js +18 -1
- package/dist/lesson-format.js.map +1 -1
- package/dist/lesson-format.test.js +29 -1
- package/dist/lesson-format.test.js.map +1 -1
- package/package.json +4 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { describe, expect, it } from 'vitest';
|
|
2
|
-
import { generateLessonHeading } from './lesson-format.js';
|
|
2
|
+
import { generateLessonHeading, HEADING_MAX_CHARS, truncateHeading } from './lesson-format.js';
|
|
3
3
|
describe('generateLessonHeading', () => {
|
|
4
4
|
it('extracts first sentence from plain text', () => {
|
|
5
5
|
expect(generateLessonHeading('Always use strict mode. It catches bugs early.')).toBe('Always use strict mode.');
|
|
@@ -46,4 +46,32 @@ describe('generateLessonHeading', () => {
|
|
|
46
46
|
expect(generateLessonHeading('- Always validate input')).toBe('Always validate input');
|
|
47
47
|
});
|
|
48
48
|
});
|
|
49
|
+
describe('truncateHeading', () => {
|
|
50
|
+
it('returns short headings unchanged', () => {
|
|
51
|
+
expect(truncateHeading('Guard reversed marker ordering')).toBe('Guard reversed marker ordering');
|
|
52
|
+
});
|
|
53
|
+
it('strips trailing ellipsis from LLM output', () => {
|
|
54
|
+
expect(truncateHeading('Config-as-code trust boundary…')).toBe('Config-as-code trust boundary');
|
|
55
|
+
});
|
|
56
|
+
it('strips trailing triple-dot from LLM output', () => {
|
|
57
|
+
expect(truncateHeading('Sentinel-based injection systems should always...')).toBe('Sentinel-based injection systems should always');
|
|
58
|
+
});
|
|
59
|
+
it('truncates long headings at word boundary without ellipsis', () => {
|
|
60
|
+
const long = 'When a configuration file is an executed script like totem config it has arbitrary code execution';
|
|
61
|
+
const result = truncateHeading(long);
|
|
62
|
+
expect(result.length).toBeLessThanOrEqual(HEADING_MAX_CHARS);
|
|
63
|
+
expect(result).not.toContain('…');
|
|
64
|
+
// Should break cleanly — no partial words
|
|
65
|
+
expect(long.startsWith(result)).toBe(true);
|
|
66
|
+
expect(result).toBe('When a configuration file is an executed script like totem');
|
|
67
|
+
});
|
|
68
|
+
it('enforces HEADING_MAX_CHARS limit', () => {
|
|
69
|
+
const long = 'a '.repeat(40); // 80 chars
|
|
70
|
+
expect(truncateHeading(long).length).toBeLessThanOrEqual(HEADING_MAX_CHARS);
|
|
71
|
+
});
|
|
72
|
+
it('handles heading that is exactly at the limit', () => {
|
|
73
|
+
const exact = 'x'.repeat(HEADING_MAX_CHARS);
|
|
74
|
+
expect(truncateHeading(exact)).toBe(exact);
|
|
75
|
+
});
|
|
76
|
+
});
|
|
49
77
|
//# sourceMappingURL=lesson-format.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lesson-format.test.js","sourceRoot":"","sources":["../src/lesson-format.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"lesson-format.test.js","sourceRoot":"","sources":["../src/lesson-format.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mmnto/totem",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.23.0",
|
|
4
4
|
"description": "Persistent memory and context layer for AI agents",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -19,8 +19,11 @@
|
|
|
19
19
|
"remark-frontmatter": "^5.0.0",
|
|
20
20
|
"remark-parse": "^11.0.0",
|
|
21
21
|
"safe-regex2": "^5.0.0",
|
|
22
|
+
"tree-sitter-javascript": "^0.25.0",
|
|
23
|
+
"tree-sitter-typescript": "^0.23.2",
|
|
22
24
|
"typescript": "^5.7.0",
|
|
23
25
|
"unified": "^11.0.0",
|
|
26
|
+
"web-tree-sitter": "^0.26.6",
|
|
24
27
|
"yaml": "^2.4.0",
|
|
25
28
|
"zod": "^3.24.0"
|
|
26
29
|
},
|