@mmnto/totem 0.14.0 → 0.16.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/config-schema.d.ts +44 -0
- package/dist/config-schema.d.ts.map +1 -1
- package/dist/config-schema.js +10 -0
- package/dist/config-schema.js.map +1 -1
- package/dist/config-schema.test.js +67 -1
- package/dist/config-schema.test.js.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/lesson-format.d.ts +7 -0
- package/dist/lesson-format.d.ts.map +1 -0
- package/dist/lesson-format.js +44 -0
- package/dist/lesson-format.js.map +1 -0
- package/dist/lesson-format.test.d.ts +2 -0
- package/dist/lesson-format.test.d.ts.map +1 -0
- package/dist/lesson-format.test.js +49 -0
- package/dist/lesson-format.test.js.map +1 -0
- package/dist/sanitize.d.ts +2 -0
- package/dist/sanitize.d.ts.map +1 -0
- package/dist/sanitize.js +6 -0
- package/dist/sanitize.js.map +1 -0
- package/package.json +1 -1
package/dist/config-schema.d.ts
CHANGED
|
@@ -129,6 +129,22 @@ export declare const OrchestratorSchema: z.ZodDiscriminatedUnion<"provider", [z.
|
|
|
129
129
|
overrides?: Record<string, string> | undefined;
|
|
130
130
|
cacheTtls?: Record<string, number> | undefined;
|
|
131
131
|
}>]>;
|
|
132
|
+
export declare const DocTargetSchema: z.ZodObject<{
|
|
133
|
+
/** Relative path to the document */
|
|
134
|
+
path: z.ZodString;
|
|
135
|
+
/** Description of the document's purpose (included in the LLM prompt) */
|
|
136
|
+
description: z.ZodString;
|
|
137
|
+
/** When to remind/auto-run: 'post-release' or 'on-change' */
|
|
138
|
+
trigger: z.ZodDefault<z.ZodEnum<["post-release", "on-change"]>>;
|
|
139
|
+
}, "strip", z.ZodTypeAny, {
|
|
140
|
+
path: string;
|
|
141
|
+
description: string;
|
|
142
|
+
trigger: "post-release" | "on-change";
|
|
143
|
+
}, {
|
|
144
|
+
path: string;
|
|
145
|
+
description: string;
|
|
146
|
+
trigger?: "post-release" | "on-change" | undefined;
|
|
147
|
+
}>;
|
|
132
148
|
export declare const ConfigTierSchema: z.ZodEnum<["lite", "standard", "full"]>;
|
|
133
149
|
export type ConfigTier = z.infer<typeof ConfigTierSchema>;
|
|
134
150
|
export declare const TotemConfigSchema: z.ZodObject<{
|
|
@@ -211,6 +227,23 @@ export declare const TotemConfigSchema: z.ZodObject<{
|
|
|
211
227
|
ignorePatterns: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
212
228
|
/** Character count threshold for MCP context payload warnings (~4 chars ≈ 1 token). Default: 40,000 (~10k tokens). */
|
|
213
229
|
contextWarningThreshold: z.ZodDefault<z.ZodNumber>;
|
|
230
|
+
/** Optional: documents to auto-update via `totem docs` */
|
|
231
|
+
docs: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
232
|
+
/** Relative path to the document */
|
|
233
|
+
path: z.ZodString;
|
|
234
|
+
/** Description of the document's purpose (included in the LLM prompt) */
|
|
235
|
+
description: z.ZodString;
|
|
236
|
+
/** When to remind/auto-run: 'post-release' or 'on-change' */
|
|
237
|
+
trigger: z.ZodDefault<z.ZodEnum<["post-release", "on-change"]>>;
|
|
238
|
+
}, "strip", z.ZodTypeAny, {
|
|
239
|
+
path: string;
|
|
240
|
+
description: string;
|
|
241
|
+
trigger: "post-release" | "on-change";
|
|
242
|
+
}, {
|
|
243
|
+
path: string;
|
|
244
|
+
description: string;
|
|
245
|
+
trigger?: "post-release" | "on-change" | undefined;
|
|
246
|
+
}>, "many">>;
|
|
214
247
|
}, "strip", z.ZodTypeAny, {
|
|
215
248
|
targets: {
|
|
216
249
|
glob: string;
|
|
@@ -239,6 +272,11 @@ export declare const TotemConfigSchema: z.ZodObject<{
|
|
|
239
272
|
overrides?: Record<string, string> | undefined;
|
|
240
273
|
cacheTtls?: Record<string, number> | undefined;
|
|
241
274
|
} | undefined;
|
|
275
|
+
docs?: {
|
|
276
|
+
path: string;
|
|
277
|
+
description: string;
|
|
278
|
+
trigger: "post-release" | "on-change";
|
|
279
|
+
}[] | undefined;
|
|
242
280
|
}, {
|
|
243
281
|
targets: {
|
|
244
282
|
glob: string;
|
|
@@ -267,12 +305,18 @@ export declare const TotemConfigSchema: z.ZodObject<{
|
|
|
267
305
|
lanceDir?: string | undefined;
|
|
268
306
|
ignorePatterns?: string[] | undefined;
|
|
269
307
|
contextWarningThreshold?: number | undefined;
|
|
308
|
+
docs?: {
|
|
309
|
+
path: string;
|
|
310
|
+
description: string;
|
|
311
|
+
trigger?: "post-release" | "on-change" | undefined;
|
|
312
|
+
}[] | undefined;
|
|
270
313
|
}>;
|
|
271
314
|
export type ChunkStrategy = z.infer<typeof ChunkStrategySchema>;
|
|
272
315
|
export type ContentType = z.infer<typeof ContentTypeSchema>;
|
|
273
316
|
export type IngestTarget = z.infer<typeof IngestTargetSchema>;
|
|
274
317
|
export type EmbeddingProvider = z.infer<typeof EmbeddingProviderSchema>;
|
|
275
318
|
export type Orchestrator = z.infer<typeof OrchestratorSchema>;
|
|
319
|
+
export type DocTarget = z.infer<typeof DocTargetSchema>;
|
|
276
320
|
export type TotemConfig = z.infer<typeof TotemConfigSchema>;
|
|
277
321
|
/**
|
|
278
322
|
* Determine the configuration tier based on what's configured.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-schema.d.ts","sourceRoot":"","sources":["../src/config-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AAEH,eAAO,MAAM,mBAAmB,8FAM9B,CAAC;AAEH,eAAO,MAAM,iBAAiB,4CAA0C,CAAC;AAEzE,eAAO,MAAM,kBAAkB;;;;;;;;;;;;EAI7B,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;EAI/B,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;EAK/B,CAAC;AAEH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;IAGlC,CAAC;AAEH,eAAO,MAAM,uBAAuB,UAAyD,CAAC;AAE9F,eAAO,MAAM,uBAAuB;;IAElC,yDAAyD;;IAEzD,0EAA0E;;IAE1E,qGAAqG;;IAErG,wFAAwF;;IAExF,yFAAyF;;;;;;;;;;;;;;;;EAEzF,CAAC;AAEH,eAAO,MAAM,kBAAkB;;IAZ7B,yDAAyD;;IAEzD,0EAA0E;;IAE1E,qGAAqG;;IAErG,wFAAwF;;IAExF,yFAAyF;;;;;;;;;;;;;;;;IAIE,CAAC;AAE9F,eAAO,MAAM,gBAAgB,yCAAuC,CAAC;AACrE,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,eAAO,MAAM,iBAAiB;IAC5B,mEAAmE;;;;;;;;;;;;;;IAGnE,gEAAgE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAGhE,iEAAiE;;;
|
|
1
|
+
{"version":3,"file":"config-schema.d.ts","sourceRoot":"","sources":["../src/config-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AAEH,eAAO,MAAM,mBAAmB,8FAM9B,CAAC;AAEH,eAAO,MAAM,iBAAiB,4CAA0C,CAAC;AAEzE,eAAO,MAAM,kBAAkB;;;;;;;;;;;;EAI7B,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;EAI/B,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;EAK/B,CAAC;AAEH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;IAGlC,CAAC;AAEH,eAAO,MAAM,uBAAuB,UAAyD,CAAC;AAE9F,eAAO,MAAM,uBAAuB;;IAElC,yDAAyD;;IAEzD,0EAA0E;;IAE1E,qGAAqG;;IAErG,wFAAwF;;IAExF,yFAAyF;;;;;;;;;;;;;;;;EAEzF,CAAC;AAEH,eAAO,MAAM,kBAAkB;;IAZ7B,yDAAyD;;IAEzD,0EAA0E;;IAE1E,qGAAqG;;IAErG,wFAAwF;;IAExF,yFAAyF;;;;;;;;;;;;;;;;IAIE,CAAC;AAE9F,eAAO,MAAM,eAAe;IAC1B,oCAAoC;;IAEpC,yEAAyE;;IAEzE,6DAA6D;;;;;;;;;;EAE7D,CAAC;AAEH,eAAO,MAAM,gBAAgB,yCAAuC,CAAC;AACrE,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,eAAO,MAAM,iBAAiB;IAC5B,mEAAmE;;;;;;;;;;;;;;IAGnE,gEAAgE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAGhE,iEAAiE;;;QAjCjE,yDAAyD;;QAEzD,0EAA0E;;QAE1E,qGAAqG;;QAErG,wFAAwF;;QAExF,yFAAyF;;;;;;;;;;;;;;;;;IA4BzF,oDAAoD;;IAGpD,sDAAsD;;IAGtD,uDAAuD;;IAGvD,sHAAsH;;IAGtH,0DAA0D;;QAjC1D,oCAAoC;;QAEpC,yEAAyE;;QAEzE,6DAA6D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+B7D,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AACxE,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AACxD,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,UAAU,CAI7D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,WAAW,GAAG,iBAAiB,CASvE"}
|
package/dist/config-schema.js
CHANGED
|
@@ -45,6 +45,14 @@ export const ShellOrchestratorSchema = z.object({
|
|
|
45
45
|
cacheTtls: z.record(z.number()).optional(),
|
|
46
46
|
});
|
|
47
47
|
export const OrchestratorSchema = z.discriminatedUnion('provider', [ShellOrchestratorSchema]);
|
|
48
|
+
export const DocTargetSchema = z.object({
|
|
49
|
+
/** Relative path to the document */
|
|
50
|
+
path: z.string(),
|
|
51
|
+
/** Description of the document's purpose (included in the LLM prompt) */
|
|
52
|
+
description: z.string(),
|
|
53
|
+
/** When to remind/auto-run: 'post-release' or 'on-change' */
|
|
54
|
+
trigger: z.enum(['post-release', 'on-change']).default('post-release'),
|
|
55
|
+
});
|
|
48
56
|
export const ConfigTierSchema = z.enum(['lite', 'standard', 'full']);
|
|
49
57
|
export const TotemConfigSchema = z.object({
|
|
50
58
|
/** Glob patterns and chunking strategies for each ingest target */
|
|
@@ -61,6 +69,8 @@ export const TotemConfigSchema = z.object({
|
|
|
61
69
|
ignorePatterns: z.array(z.string()).default(DEFAULT_IGNORE_PATTERNS),
|
|
62
70
|
/** Character count threshold for MCP context payload warnings (~4 chars ≈ 1 token). Default: 40,000 (~10k tokens). */
|
|
63
71
|
contextWarningThreshold: z.number().int().positive().default(40_000),
|
|
72
|
+
/** Optional: documents to auto-update via `totem docs` */
|
|
73
|
+
docs: z.array(DocTargetSchema).optional(),
|
|
64
74
|
});
|
|
65
75
|
/**
|
|
66
76
|
* Determine the configuration tier based on what's configured.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-schema.js","sourceRoot":"","sources":["../src/config-schema.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"config-schema.js","sourceRoot":"","sources":["../src/config-schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { describe, expect, it } from 'vitest';
|
|
2
|
-
import { getConfigTier, requireEmbedding, TotemConfigSchema } from './config-schema.js';
|
|
2
|
+
import { DocTargetSchema, getConfigTier, requireEmbedding, TotemConfigSchema, } from './config-schema.js';
|
|
3
3
|
const BASE_TARGETS = [
|
|
4
4
|
{ glob: '**/*.md', type: 'spec', strategy: 'markdown-heading' },
|
|
5
5
|
];
|
|
@@ -33,6 +33,72 @@ describe('TotemConfigSchema', () => {
|
|
|
33
33
|
const result = TotemConfigSchema.safeParse({ targets: [] });
|
|
34
34
|
expect(result.success).toBe(false);
|
|
35
35
|
});
|
|
36
|
+
it('accepts config with docs array', () => {
|
|
37
|
+
const result = TotemConfigSchema.safeParse({
|
|
38
|
+
targets: BASE_TARGETS,
|
|
39
|
+
docs: [
|
|
40
|
+
{ path: 'README.md', description: 'Public README', trigger: 'post-release' },
|
|
41
|
+
{ path: 'docs/roadmap.md', description: 'Roadmap' },
|
|
42
|
+
],
|
|
43
|
+
});
|
|
44
|
+
expect(result.success).toBe(true);
|
|
45
|
+
if (result.success) {
|
|
46
|
+
expect(result.data.docs).toHaveLength(2);
|
|
47
|
+
expect(result.data.docs[1].trigger).toBe('post-release'); // default
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
it('accepts config without docs (optional)', () => {
|
|
51
|
+
const result = TotemConfigSchema.safeParse({ targets: BASE_TARGETS });
|
|
52
|
+
expect(result.success).toBe(true);
|
|
53
|
+
if (result.success) {
|
|
54
|
+
expect(result.data.docs).toBeUndefined();
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
describe('DocTargetSchema', () => {
|
|
59
|
+
it('parses valid doc target', () => {
|
|
60
|
+
const result = DocTargetSchema.safeParse({
|
|
61
|
+
path: 'README.md',
|
|
62
|
+
description: 'Public README',
|
|
63
|
+
trigger: 'post-release',
|
|
64
|
+
});
|
|
65
|
+
expect(result.success).toBe(true);
|
|
66
|
+
});
|
|
67
|
+
it('defaults trigger to post-release', () => {
|
|
68
|
+
const result = DocTargetSchema.parse({
|
|
69
|
+
path: 'README.md',
|
|
70
|
+
description: 'Public README',
|
|
71
|
+
});
|
|
72
|
+
expect(result.trigger).toBe('post-release');
|
|
73
|
+
});
|
|
74
|
+
it('accepts on-change trigger', () => {
|
|
75
|
+
const result = DocTargetSchema.safeParse({
|
|
76
|
+
path: 'docs/architecture.md',
|
|
77
|
+
description: 'Architecture',
|
|
78
|
+
trigger: 'on-change',
|
|
79
|
+
});
|
|
80
|
+
expect(result.success).toBe(true);
|
|
81
|
+
});
|
|
82
|
+
it('rejects invalid trigger', () => {
|
|
83
|
+
const result = DocTargetSchema.safeParse({
|
|
84
|
+
path: 'README.md',
|
|
85
|
+
description: 'test',
|
|
86
|
+
trigger: 'invalid',
|
|
87
|
+
});
|
|
88
|
+
expect(result.success).toBe(false);
|
|
89
|
+
});
|
|
90
|
+
it('rejects missing path', () => {
|
|
91
|
+
const result = DocTargetSchema.safeParse({
|
|
92
|
+
description: 'test',
|
|
93
|
+
});
|
|
94
|
+
expect(result.success).toBe(false);
|
|
95
|
+
});
|
|
96
|
+
it('rejects missing description', () => {
|
|
97
|
+
const result = DocTargetSchema.safeParse({
|
|
98
|
+
path: 'README.md',
|
|
99
|
+
});
|
|
100
|
+
expect(result.success).toBe(false);
|
|
101
|
+
});
|
|
36
102
|
});
|
|
37
103
|
describe('getConfigTier', () => {
|
|
38
104
|
const base = TotemConfigSchema.parse({ targets: BASE_TARGETS });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-schema.test.js","sourceRoot":"","sources":["../src/config-schema.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAG9C,OAAO,
|
|
1
|
+
{"version":3,"file":"config-schema.test.js","sourceRoot":"","sources":["../src/config-schema.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAG9C,OAAO,EACL,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,YAAY,GAAG;IACnB,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAe,EAAE,QAAQ,EAAE,kBAA2B,EAAE;CAClF,CAAC;AAEF,MAAM,gBAAgB,GAAG,EAAE,QAAQ,EAAE,QAAiB,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC;AAE1F,MAAM,kBAAkB,GAAG;IACzB,QAAQ,EAAE,OAAgB;IAC1B,OAAO,EAAE,aAAa;IACtB,YAAY,EAAE,YAAY;CAC3B,CAAC;AAEF,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC;QACtE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE;QAC3E,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,CAAC;YACzC,OAAO,EAAE,YAAY;YACrB,SAAS,EAAE,gBAAgB;SAC5B,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACpE,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,CAAC;YACzC,OAAO,EAAE,YAAY;YACrB,SAAS,EAAE,gBAAgB;YAC3B,YAAY,EAAE,kBAAkB;SACjC,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;QAC5D,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,CAAC;YACzC,OAAO,EAAE,YAAY;YACrB,IAAI,EAAE;gBACJ,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE,OAAO,EAAE,cAAc,EAAE;gBAC5E,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,SAAS,EAAE;aACpD;SACF,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACzC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU;QACvE,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC;QACtE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,CAAC;QAC3C,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACjC,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC;YACvC,IAAI,EAAE,WAAW;YACjB,WAAW,EAAE,eAAe;YAC5B,OAAO,EAAE,cAAc;SACxB,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC;YACnC,IAAI,EAAE,WAAW;YACjB,WAAW,EAAE,eAAe;SAC7B,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACnC,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC;YACvC,IAAI,EAAE,sBAAsB;YAC5B,WAAW,EAAE,cAAc;YAC3B,OAAO,EAAE,WAAW;SACrB,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACjC,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC;YACvC,IAAI,EAAE,WAAW;YACjB,WAAW,EAAE,MAAM;YACnB,OAAO,EAAE,SAAS;SACnB,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAC9B,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC;YACvC,WAAW,EAAE,MAAM;SACpB,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC;YACvC,IAAI,EAAE,WAAW;SAClB,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,MAAM,IAAI,GAAgB,iBAAiB,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC;IAE7E,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACxE,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;QACxD,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,gBAAgB,EAAE,YAAY,EAAE,kBAAkB,EAAE,CAAC;QAC1F,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACxE,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,EAAE,YAAY,EAAE,kBAAkB,EAAE,CAAC;QAC7D,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,MAAM,IAAI,GAAgB,iBAAiB,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC;IAE7E,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;QACxD,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,kCAAkC,CAAC,CAAC;IACnF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export type { ChunkStrategy, ConfigTier, ContentType, EmbeddingProvider, IngestTarget, Orchestrator, TotemConfig, } from './config-schema.js';
|
|
2
|
-
export { ChunkStrategySchema, ConfigTierSchema, ContentTypeSchema, DEFAULT_IGNORE_PATTERNS, EmbeddingProviderSchema, getConfigTier, IngestTargetSchema, OllamaProviderSchema, OpenAIProviderSchema, OrchestratorSchema, requireEmbedding, ShellOrchestratorSchema, TotemConfigSchema, } from './config-schema.js';
|
|
1
|
+
export type { ChunkStrategy, ConfigTier, ContentType, DocTarget, EmbeddingProvider, IngestTarget, Orchestrator, TotemConfig, } from './config-schema.js';
|
|
2
|
+
export { ChunkStrategySchema, ConfigTierSchema, ContentTypeSchema, DEFAULT_IGNORE_PATTERNS, DocTargetSchema, EmbeddingProviderSchema, getConfigTier, IngestTargetSchema, OllamaProviderSchema, OpenAIProviderSchema, OrchestratorSchema, requireEmbedding, ShellOrchestratorSchema, TotemConfigSchema, } from './config-schema.js';
|
|
3
3
|
export type { Chunk, SearchOptions, SearchResult, StoredChunk, SyncOptions, SyncState, } from './types.js';
|
|
4
4
|
export type { Chunker } from './chunkers/chunker.js';
|
|
5
5
|
export { createChunker } from './chunkers/chunker.js';
|
|
@@ -9,5 +9,7 @@ export { TOTEM_TABLE_NAME } from './store/lance-schema.js';
|
|
|
9
9
|
export { LanceStore } from './store/lance-store.js';
|
|
10
10
|
export type { ResolvedFile } from './ingest/sync.js';
|
|
11
11
|
export { getChangedFiles, getHeadSha, resolveFiles, runSync } from './ingest/sync.js';
|
|
12
|
+
export { generateLessonHeading } from './lesson-format.js';
|
|
13
|
+
export { sanitize } from './sanitize.js';
|
|
12
14
|
export { wrapXml } from './xml-format.js';
|
|
13
15
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,aAAa,EACb,UAAU,EACV,WAAW,EACX,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,WAAW,GACZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,uBAAuB,EACvB,uBAAuB,EACvB,aAAa,EACb,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,uBAAuB,EACvB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAG5B,YAAY,EACV,KAAK,EACL,aAAa,EACb,YAAY,EACZ,WAAW,EACX,WAAW,EACX,SAAS,GACV,MAAM,YAAY,CAAC;AAGpB,YAAY,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAGtD,YAAY,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAGzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGpD,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAGtF,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,aAAa,EACb,UAAU,EACV,WAAW,EACX,SAAS,EACT,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,WAAW,GACZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,uBAAuB,EACvB,eAAe,EACf,uBAAuB,EACvB,aAAa,EACb,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,uBAAuB,EACvB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAG5B,YAAY,EACV,KAAK,EACL,aAAa,EACb,YAAY,EACZ,WAAW,EACX,WAAW,EACX,SAAS,GACV,MAAM,YAAY,CAAC;AAGpB,YAAY,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAGtD,YAAY,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAGzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGpD,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAGtF,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { ChunkStrategySchema, ConfigTierSchema, ContentTypeSchema, DEFAULT_IGNORE_PATTERNS, EmbeddingProviderSchema, getConfigTier, IngestTargetSchema, OllamaProviderSchema, OpenAIProviderSchema, OrchestratorSchema, requireEmbedding, ShellOrchestratorSchema, TotemConfigSchema, } from './config-schema.js';
|
|
1
|
+
export { ChunkStrategySchema, ConfigTierSchema, ContentTypeSchema, DEFAULT_IGNORE_PATTERNS, DocTargetSchema, EmbeddingProviderSchema, getConfigTier, IngestTargetSchema, OllamaProviderSchema, OpenAIProviderSchema, OrchestratorSchema, requireEmbedding, ShellOrchestratorSchema, TotemConfigSchema, } from './config-schema.js';
|
|
2
2
|
export { createChunker } from './chunkers/chunker.js';
|
|
3
3
|
export { createEmbedder } from './embedders/embedder.js';
|
|
4
4
|
// Store
|
|
@@ -6,5 +6,7 @@ export { TOTEM_TABLE_NAME } from './store/lance-schema.js';
|
|
|
6
6
|
export { LanceStore } from './store/lance-store.js';
|
|
7
7
|
export { getChangedFiles, getHeadSha, resolveFiles, runSync } from './ingest/sync.js';
|
|
8
8
|
// Utilities
|
|
9
|
+
export { generateLessonHeading } from './lesson-format.js';
|
|
10
|
+
export { sanitize } from './sanitize.js';
|
|
9
11
|
export { wrapXml } from './xml-format.js';
|
|
10
12
|
//# 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":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAWA,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,uBAAuB,EACvB,eAAe,EACf,uBAAuB,EACvB,aAAa,EACb,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,uBAAuB,EACvB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAc5B,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAItD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD,QAAQ;AACR,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAIpD,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEtF,YAAY;AACZ,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generate a descriptive lesson heading from the lesson body.
|
|
3
|
+
* Strips markdown formatting, extracts the first sentence or line,
|
|
4
|
+
* and truncates to HEADING_MAX_CHARS.
|
|
5
|
+
*/
|
|
6
|
+
export declare function generateLessonHeading(body: string): string;
|
|
7
|
+
//# sourceMappingURL=lesson-format.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lesson-format.d.ts","sourceRoot":"","sources":["../src/lesson-format.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAoC1D"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
const HEADING_MAX_CHARS = 60;
|
|
2
|
+
const MIN_WORD_BREAK = 20;
|
|
3
|
+
/**
|
|
4
|
+
* Generate a descriptive lesson heading from the lesson body.
|
|
5
|
+
* Strips markdown formatting, extracts the first sentence or line,
|
|
6
|
+
* and truncates to HEADING_MAX_CHARS.
|
|
7
|
+
*/
|
|
8
|
+
export function generateLessonHeading(body) {
|
|
9
|
+
// Strip markdown formatting: bold, italic, headings, blockquotes, code fences
|
|
10
|
+
let text = body
|
|
11
|
+
.replace(/^```[\s\S]*?```/gm, '') // code blocks
|
|
12
|
+
.replace(/^#+\s*/gm, '') // headings
|
|
13
|
+
.replace(/^>\s*/gm, '') // blockquotes
|
|
14
|
+
.replace(/\*\*(.+?)\*\*/g, '$1') // bold
|
|
15
|
+
.replace(/\*(.+?)\*/g, '$1') // italic
|
|
16
|
+
.replace(/`([^`]+)`/g, '$1') // inline code
|
|
17
|
+
.replace(/^\s*[-*]\s+/gm, '') // list markers
|
|
18
|
+
.trim();
|
|
19
|
+
// If structured (Context/Symptom/Fix), prefer the Fix/Rule line
|
|
20
|
+
const fixMatch = text.match(/(?:Fix\/)?Rule:\s*(.+)/i);
|
|
21
|
+
if (fixMatch) {
|
|
22
|
+
text = fixMatch[1].trim();
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
// Take the first non-empty line
|
|
26
|
+
const firstLine = text.split('\n').find((l) => l.trim());
|
|
27
|
+
text = firstLine?.trim() ?? '';
|
|
28
|
+
}
|
|
29
|
+
if (!text)
|
|
30
|
+
return 'Lesson';
|
|
31
|
+
// Truncate at sentence boundary or max chars
|
|
32
|
+
const sentenceEnd = text.search(/[.!?]\s/);
|
|
33
|
+
if (sentenceEnd > 0 && sentenceEnd < HEADING_MAX_CHARS) {
|
|
34
|
+
text = text.slice(0, sentenceEnd + 1);
|
|
35
|
+
}
|
|
36
|
+
else if (text.length > HEADING_MAX_CHARS) {
|
|
37
|
+
// Break at last word boundary before limit
|
|
38
|
+
const truncated = text.slice(0, HEADING_MAX_CHARS);
|
|
39
|
+
const lastSpace = truncated.lastIndexOf(' ');
|
|
40
|
+
text = (lastSpace > MIN_WORD_BREAK ? truncated.slice(0, lastSpace) : truncated) + '…';
|
|
41
|
+
}
|
|
42
|
+
return text;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=lesson-format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lesson-format.js","sourceRoot":"","sources":["../src/lesson-format.ts"],"names":[],"mappings":"AAAA,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAC7B,MAAM,cAAc,GAAG,EAAE,CAAC;AAE1B;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAY;IAChD,8EAA8E;IAC9E,IAAI,IAAI,GAAG,IAAI;SACZ,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC,cAAc;SAC/C,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,WAAW;SACnC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,cAAc;SACrC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC,OAAO;SACvC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,SAAS;SACrC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,cAAc;SAC1C,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC,eAAe;SAC5C,IAAI,EAAE,CAAC;IAEV,gEAAgE;IAChE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;IACvD,IAAI,QAAQ,EAAE,CAAC;QACb,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,CAAC;IAC7B,CAAC;SAAM,CAAC;QACN,gCAAgC;QAChC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACzD,IAAI,GAAG,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACjC,CAAC;IAED,IAAI,CAAC,IAAI;QAAE,OAAO,QAAQ,CAAC;IAE3B,6CAA6C;IAC7C,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC3C,IAAI,WAAW,GAAG,CAAC,IAAI,WAAW,GAAG,iBAAiB,EAAE,CAAC;QACvD,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC;IACxC,CAAC;SAAM,IAAI,IAAI,CAAC,MAAM,GAAG,iBAAiB,EAAE,CAAC;QAC3C,2CAA2C;QAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC;QACnD,MAAM,SAAS,GAAG,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAC7C,IAAI,GAAG,CAAC,SAAS,GAAG,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC;IACxF,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lesson-format.test.d.ts","sourceRoot":"","sources":["../src/lesson-format.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { generateLessonHeading } from './lesson-format.js';
|
|
3
|
+
describe('generateLessonHeading', () => {
|
|
4
|
+
it('extracts first sentence from plain text', () => {
|
|
5
|
+
expect(generateLessonHeading('Always use strict mode. It catches bugs early.')).toBe('Always use strict mode.');
|
|
6
|
+
});
|
|
7
|
+
it('uses full text when short enough and no sentence boundary', () => {
|
|
8
|
+
expect(generateLessonHeading('Use strict mode')).toBe('Use strict mode');
|
|
9
|
+
});
|
|
10
|
+
it('truncates long text at word boundary with ellipsis', () => {
|
|
11
|
+
const long = 'This is a very long lesson that goes on and on and on without any sentence boundary for quite a while';
|
|
12
|
+
const heading = generateLessonHeading(long);
|
|
13
|
+
expect(heading.length).toBeLessThanOrEqual(65); // 60 + ellipsis + possible word
|
|
14
|
+
expect(heading).toContain('…');
|
|
15
|
+
});
|
|
16
|
+
it('strips markdown bold formatting', () => {
|
|
17
|
+
expect(generateLessonHeading('**Always** use strict mode')).toBe('Always use strict mode');
|
|
18
|
+
});
|
|
19
|
+
it('strips markdown heading prefixes', () => {
|
|
20
|
+
expect(generateLessonHeading('### Important rule here')).toBe('Important rule here');
|
|
21
|
+
});
|
|
22
|
+
it('strips blockquote prefixes', () => {
|
|
23
|
+
expect(generateLessonHeading('> Never trust raw input')).toBe('Never trust raw input');
|
|
24
|
+
});
|
|
25
|
+
it('strips inline code backticks', () => {
|
|
26
|
+
expect(generateLessonHeading('Use `const` instead of `let`')).toBe('Use const instead of let');
|
|
27
|
+
});
|
|
28
|
+
it('strips code blocks and uses remaining text', () => {
|
|
29
|
+
const body = '```typescript\nconst x = 1;\n```\nAlways initialize variables.';
|
|
30
|
+
expect(generateLessonHeading(body)).toBe('Always initialize variables.');
|
|
31
|
+
});
|
|
32
|
+
it('prefers Fix/Rule line in structured lessons', () => {
|
|
33
|
+
const body = '**Context:** Trying to persist state\n**Symptom:** App crashes\n**Fix/Rule:** Use custom localStorage wrappers';
|
|
34
|
+
expect(generateLessonHeading(body)).toBe('Use custom localStorage wrappers');
|
|
35
|
+
});
|
|
36
|
+
it('returns fallback for empty body', () => {
|
|
37
|
+
expect(generateLessonHeading('')).toBe('Lesson');
|
|
38
|
+
});
|
|
39
|
+
it('returns fallback for whitespace-only body', () => {
|
|
40
|
+
expect(generateLessonHeading(' \n\n ')).toBe('Lesson');
|
|
41
|
+
});
|
|
42
|
+
it('handles body that is only a code block', () => {
|
|
43
|
+
expect(generateLessonHeading('```\ncode\n```')).toBe('Lesson');
|
|
44
|
+
});
|
|
45
|
+
it('strips list markers', () => {
|
|
46
|
+
expect(generateLessonHeading('- Always validate input')).toBe('Always validate input');
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
//# sourceMappingURL=lesson-format.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lesson-format.test.js","sourceRoot":"","sources":["../src/lesson-format.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../src/sanitize.ts"],"names":[],"mappings":"AAIA,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE7C"}
|
package/dist/sanitize.js
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/** Strip ANSI escape sequences, control characters, and BiDi overrides to prevent terminal injection. */
|
|
2
|
+
const CONTROL_RE = /\x1b\[[0-9;]*[a-zA-Z]|\x1b\].*?(?:\x07|\x1b\\)|[\x00-\x08\x0b-\x1f\x7f\x80-\x9f]|[\u202A-\u202E\u2066-\u2069]/g;
|
|
3
|
+
export function sanitize(text) {
|
|
4
|
+
return text.replace(CONTROL_RE, '');
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=sanitize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sanitize.js","sourceRoot":"","sources":["../src/sanitize.ts"],"names":[],"mappings":"AAAA,yGAAyG;AACzG,MAAM,UAAU,GACd,gHAAgH,CAAC;AAEnH,MAAM,UAAU,QAAQ,CAAC,IAAY;IACnC,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AACtC,CAAC"}
|