recall-mcp-v3 3.5.0 β 3.5.2
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/__tests__/format.test.js +48 -0
- package/dist/__tests__/format.test.js.map +1 -1
- package/dist/__tests__/integration.test.d.ts +11 -0
- package/dist/__tests__/integration.test.d.ts.map +1 -0
- package/dist/__tests__/integration.test.js +323 -0
- package/dist/__tests__/integration.test.js.map +1 -0
- package/dist/__tests__/preprocessor.test.d.ts +7 -3
- package/dist/__tests__/preprocessor.test.d.ts.map +1 -1
- package/dist/__tests__/preprocessor.test.js +658 -382
- package/dist/__tests__/preprocessor.test.js.map +1 -1
- package/dist/format.d.ts +2 -1
- package/dist/format.d.ts.map +1 -1
- package/dist/format.js +31 -16
- package/dist/format.js.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -16,6 +16,12 @@ describe('truncate', () => {
|
|
|
16
16
|
it('handles empty string', () => {
|
|
17
17
|
expect(truncate('', 10)).toBe('');
|
|
18
18
|
});
|
|
19
|
+
it('handles null', () => {
|
|
20
|
+
expect(truncate(null, 10)).toBe('');
|
|
21
|
+
});
|
|
22
|
+
it('handles undefined', () => {
|
|
23
|
+
expect(truncate(undefined, 10)).toBe('');
|
|
24
|
+
});
|
|
19
25
|
});
|
|
20
26
|
describe('formatCompactSaveConfirmation', () => {
|
|
21
27
|
const fullData = {
|
|
@@ -140,6 +146,48 @@ describe('formatCompactSaveConfirmation', () => {
|
|
|
140
146
|
expect(result).toContain('1 file');
|
|
141
147
|
expect(result).not.toContain('1 files');
|
|
142
148
|
});
|
|
149
|
+
// Edge cases that caused production bugs
|
|
150
|
+
it('handles malformed decision objects missing "what" field', () => {
|
|
151
|
+
const malformedDecisions = [
|
|
152
|
+
{ why: 'reason only, no what' },
|
|
153
|
+
{ what: 'valid decision', why: 'reason' },
|
|
154
|
+
{ what: '', why: 'empty what' },
|
|
155
|
+
];
|
|
156
|
+
const result = formatCompactSaveConfirmation('Title', malformedDecisions, undefined, undefined, undefined);
|
|
157
|
+
expect(result).toContain('πΎ Saved to Recall');
|
|
158
|
+
expect(result).toContain('valid decision');
|
|
159
|
+
expect(result).toContain('3 decisions'); // stats still count all
|
|
160
|
+
});
|
|
161
|
+
it('handles decision objects that are null or non-objects', () => {
|
|
162
|
+
// Put valid decision first so it gets included in slice(0, 3)
|
|
163
|
+
const brokenDecisions = [
|
|
164
|
+
{ what: 'valid', why: 'reason' },
|
|
165
|
+
null,
|
|
166
|
+
undefined,
|
|
167
|
+
'string instead of object',
|
|
168
|
+
];
|
|
169
|
+
const result = formatCompactSaveConfirmation('Title', brokenDecisions, undefined, undefined, undefined);
|
|
170
|
+
expect(result).toContain('πΎ Saved to Recall');
|
|
171
|
+
expect(result).toContain('valid');
|
|
172
|
+
expect(result).toContain('4 decisions'); // stats still count all
|
|
173
|
+
});
|
|
174
|
+
it('handles non-array passed as decisions', () => {
|
|
175
|
+
const result = formatCompactSaveConfirmation('Title', { not: 'an array' }, undefined, undefined, undefined);
|
|
176
|
+
expect(result).toContain('πΎ Saved to Recall');
|
|
177
|
+
expect(result).not.toContain('decisions');
|
|
178
|
+
});
|
|
179
|
+
it('handles non-string tags gracefully', () => {
|
|
180
|
+
const mixedTags = ['valid', null, undefined, 123, { obj: true }];
|
|
181
|
+
const result = formatCompactSaveConfirmation('Title', undefined, undefined, undefined, mixedTags);
|
|
182
|
+
expect(result).toContain('#valid');
|
|
183
|
+
expect(result).not.toContain('#null');
|
|
184
|
+
expect(result).not.toContain('#undefined');
|
|
185
|
+
});
|
|
186
|
+
it('handles undefined title gracefully', () => {
|
|
187
|
+
const result = formatCompactSaveConfirmation(undefined, undefined, undefined, undefined, undefined);
|
|
188
|
+
expect(result).toContain('πΎ Saved to Recall');
|
|
189
|
+
expect(result).toContain('""'); // empty quoted title
|
|
190
|
+
});
|
|
143
191
|
it('handles very long content gracefully', () => {
|
|
144
192
|
const longDecisions = Array(10).fill(null).map((_, i) => ({
|
|
145
193
|
what: `This is a very long decision number ${i} that describes something important`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format.test.js","sourceRoot":"","sources":["../../src/__tests__/format.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EACL,QAAQ,EACR,6BAA6B,EAC7B,4BAA4B,GAC7B,MAAM,cAAc,CAAC;AAEtB,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACxB,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAC9B,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;IAC7C,MAAM,QAAQ,GAAG;QACf,KAAK,EAAE,iDAAiD;QACxD,SAAS,EAAE;YACT,EAAE,IAAI,EAAE,kBAAkB,EAAE,GAAG,EAAE,qBAAqB,EAAE;YACxD,EAAE,IAAI,EAAE,kCAAkC,EAAE,GAAG,EAAE,gBAAgB,EAAE;YACnE,EAAE,IAAI,EAAE,wBAAwB,EAAE,GAAG,EAAE,WAAW,EAAE;SACrD;QACD,QAAQ,EAAE,CAAC,sCAAsC,CAAC;QAClD,YAAY,EAAE,CAAC,aAAa,EAAE,mBAAmB,EAAE,qBAAqB,CAAC;QACzE,IAAI,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC;KACtC,CAAC;IAEF,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,MAAM,MAAM,GAAG,6BAA6B,CAC1C,QAAQ,CAAC,KAAK,EACd,QAAQ,CAAC,SAAS,EAClB,QAAQ,CAAC,QAAQ,EACjB,QAAQ,CAAC,YAAY,EACrB,QAAQ,CAAC,IAAI,CACd,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,MAAM,GAAG,6BAA6B,CAC1C,QAAQ,CAAC,KAAK,EACd,QAAQ,CAAC,SAAS,EAClB,QAAQ,CAAC,QAAQ,EACjB,QAAQ,CAAC,YAAY,EACrB,QAAQ,CAAC,IAAI,CACd,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACnC,MAAM,MAAM,GAAG,6BAA6B,CAC1C,QAAQ,CAAC,KAAK,EACd,QAAQ,CAAC,SAAS,EAClB,QAAQ,CAAC,QAAQ,EACjB,QAAQ,CAAC,YAAY,EACrB,QAAQ,CAAC,IAAI,CACd,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,MAAM,GAAG,6BAA6B,CAC1C,QAAQ,CAAC,KAAK,EACd,QAAQ,CAAC,SAAS,EAClB,QAAQ,CAAC,QAAQ,EACjB,QAAQ,CAAC,YAAY,EACrB,QAAQ,CAAC,IAAI,CACd,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,MAAM,GAAG,6BAA6B,CAC1C,QAAQ,CAAC,KAAK,EACd,QAAQ,CAAC,SAAS,EAClB,QAAQ,CAAC,QAAQ,EACjB,QAAQ,CAAC,YAAY,EACrB,QAAQ,CAAC,IAAI,CACd,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,MAAM,GAAG,6BAA6B,CAC1C,QAAQ,CAAC,KAAK,EACd,QAAQ,CAAC,SAAS,EAClB,QAAQ,CAAC,QAAQ,EACjB,QAAQ,CAAC,YAAY,EACrB,QAAQ,CAAC,IAAI,CACd,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,MAAM,GAAG,6BAA6B,CAC1C,QAAQ,CAAC,KAAK,EACd,QAAQ,CAAC,SAAS,EAClB,QAAQ,CAAC,QAAQ,EACjB,QAAQ,CAAC,YAAY,EACrB,QAAQ,CAAC,IAAI,CACd,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,MAAM,GAAG,6BAA6B,CAC1C,QAAQ,CAAC,KAAK,EACd,QAAQ,CAAC,SAAS,EAClB,QAAQ,CAAC,QAAQ,EACjB,QAAQ,CAAC,YAAY,EACrB,QAAQ,CAAC,IAAI,CACd,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,MAAM,GAAG,6BAA6B,CAC1C,QAAQ,CAAC,KAAK,EACd,QAAQ,CAAC,SAAS,EAClB,QAAQ,CAAC,QAAQ,EACjB,QAAQ,CAAC,YAAY,EACrB,QAAQ,CAAC,IAAI,CACd,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,MAAM,GAAG,6BAA6B,CAC1C,QAAQ,CAAC,KAAK,EACd,QAAQ,CAAC,SAAS,EAClB,QAAQ,CAAC,QAAQ,EACjB,QAAQ,CAAC,YAAY,EACrB,QAAQ,CAAC,IAAI,CACd,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACnC,MAAM,MAAM,GAAG,6BAA6B,CAC1C,QAAQ,CAAC,KAAK,EACd,SAAS,EACT,QAAQ,CAAC,QAAQ,EACjB,QAAQ,CAAC,YAAY,EACrB,QAAQ,CAAC,IAAI,CACd,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;QAC/C,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,MAAM,GAAG,6BAA6B,CAC1C,QAAQ,CAAC,KAAK,EACd,QAAQ,CAAC,SAAS,EAClB,SAAS,EACT,QAAQ,CAAC,YAAY,EACrB,QAAQ,CAAC,IAAI,CACd,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACxC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;QAC/B,MAAM,MAAM,GAAG,6BAA6B,CAC1C,QAAQ,CAAC,KAAK,EACd,QAAQ,CAAC,SAAS,EAClB,QAAQ,CAAC,QAAQ,EACjB,SAAS,EACT,QAAQ,CAAC,IAAI,CACd,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAC9B,MAAM,MAAM,GAAG,6BAA6B,CAC1C,QAAQ,CAAC,KAAK,EACd,QAAQ,CAAC,SAAS,EAClB,QAAQ,CAAC,QAAQ,EACjB,QAAQ,CAAC,YAAY,EACrB,SAAS,CACV,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAC9B,MAAM,MAAM,GAAG,6BAA6B,CAC1C,QAAQ,CAAC,KAAK,EACd,EAAE,EACF,EAAE,EACF,EAAE,EACF,EAAE,CACH,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;QAC/C,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,MAAM,GAAG,6BAA6B,CAC1C,WAAW,EACX,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,CACV,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;QAC/C,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QACxC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACnC,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG,6BAA6B,CAC1C,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,CACV,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAChC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAC1B,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAC1D,MAAM,MAAM,GAAG,6BAA6B,CAC1C,OAAO,EACP,SAAS,EACT,SAAS,EACT,SAAS,EACT,QAAQ,CACT,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAClC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAClC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAClC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,aAAa,GAAG;YACpB,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,UAAU,EAAE;YACvC,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,UAAU,EAAE;YACvC,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,UAAU,EAAE;YACvC,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,UAAU,EAAE;YACvC,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,UAAU,EAAE;SACxC,CAAC;QACF,MAAM,MAAM,GAAG,6BAA6B,CAC1C,OAAO,EACP,aAAa,EACb,SAAS,EACT,SAAS,EACT,SAAS,CACV,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QACvC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QACvC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QACvC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAC3C,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAC3C,mCAAmC;QACnC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,MAAM,MAAM,GAAG,6BAA6B,CAC1C,OAAO,EACP,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,EACzC,CAAC,aAAa,CAAC,EACf,CAAC,aAAa,CAAC,EACf,CAAC,KAAK,CAAC,CACR,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QACvC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QAC5C,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACrC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAC1C,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACnC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,aAAa,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YACxD,IAAI,EAAE,uCAAuC,CAAC,qCAAqC;YACnF,GAAG,EAAE,uDAAuD,CAAC,EAAE;SAChE,CAAC,CAAC,CAAC;QACJ,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;QAC7F,MAAM,SAAS,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;QACrF,MAAM,QAAQ,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAE/C,MAAM,MAAM,GAAG,6BAA6B,CAC1C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EACf,aAAa,EACb,YAAY,EACZ,SAAS,EACT,QAAQ,CACT,CAAC;QAEF,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAC/C,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;IAC5C,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,MAAM,GAAG,4BAA4B,CACzC,SAAS,EACT,cAAc,EACd,WAAW,EACX,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,EACrC,CAAC,SAAS,CAAC,EACX,CAAC,SAAS,CAAC,EACX,CAAC,KAAK,CAAC,CACR,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,MAAM,GAAG,4BAA4B,CACzC,SAAS,EACT,cAAc,EACd,WAAW,EACX,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,CACV,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;QAC7B,MAAM,MAAM,GAAG,4BAA4B,CACzC,YAAY,EACZ,cAAc,EACd,WAAW,EACX,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,CACV,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACnC,MAAM,MAAM,GAAG,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,4BAA4B,CACzC,MAAM,EACN,cAAc,EACd,WAAW,EACX,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,CACV,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAG,4BAA4B,CACzC,SAAS,EACT,MAAM,EACN,MAAM,EACN,SAAS,EACT,SAAS,EACT,SAAS,EACT,QAAQ,CACT,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAChC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"format.test.js","sourceRoot":"","sources":["../../src/__tests__/format.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Integration Tests for Recall MCP Package
|
|
3
|
+
*
|
|
4
|
+
* Tests real-world scenarios:
|
|
5
|
+
* 1. Transcript finder locates Claude Code transcripts
|
|
6
|
+
* 2. Preprocessor handles real JSONL files
|
|
7
|
+
* 3. Compact format output meets all constraints
|
|
8
|
+
* 4. Backwards compatibility with summary parameter
|
|
9
|
+
*/
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=integration.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integration.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/integration.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
|
|
@@ -0,0 +1,323 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Integration Tests for Recall MCP Package
|
|
3
|
+
*
|
|
4
|
+
* Tests real-world scenarios:
|
|
5
|
+
* 1. Transcript finder locates Claude Code transcripts
|
|
6
|
+
* 2. Preprocessor handles real JSONL files
|
|
7
|
+
* 3. Compact format output meets all constraints
|
|
8
|
+
* 4. Backwards compatibility with summary parameter
|
|
9
|
+
*/
|
|
10
|
+
import { describe, it, expect } from 'vitest';
|
|
11
|
+
import * as fs from 'fs';
|
|
12
|
+
import * as path from 'path';
|
|
13
|
+
import * as os from 'os';
|
|
14
|
+
import { formatCompactSaveConfirmation, truncate } from '../format.js';
|
|
15
|
+
import { findCurrentTranscript, findMostRecentTranscriptGlobally, readTranscriptFile } from '../transcript-finder.js';
|
|
16
|
+
import { preprocessTranscript } from '../preprocessor.js';
|
|
17
|
+
// ============================================================================
|
|
18
|
+
// 1. Transcript Finder Integration Tests
|
|
19
|
+
// ============================================================================
|
|
20
|
+
describe('Transcript Finder Integration', () => {
|
|
21
|
+
const claudeProjectsDir = path.join(os.homedir(), '.claude', 'projects');
|
|
22
|
+
const projectPath = '/Users/rayhernandez/Library/CloudStorage/Dropbox-Personal/Goldfish/personal/Recall-v3';
|
|
23
|
+
it('should find transcripts in ~/.claude/projects', () => {
|
|
24
|
+
// Check that the directory exists
|
|
25
|
+
const exists = fs.existsSync(claudeProjectsDir);
|
|
26
|
+
expect(exists).toBe(true);
|
|
27
|
+
});
|
|
28
|
+
it('should find most recent transcript globally', () => {
|
|
29
|
+
const transcript = findMostRecentTranscriptGlobally();
|
|
30
|
+
// On a machine with Claude Code, this should find something
|
|
31
|
+
if (transcript) {
|
|
32
|
+
expect(transcript).toContain('.jsonl');
|
|
33
|
+
expect(fs.existsSync(transcript)).toBe(true);
|
|
34
|
+
}
|
|
35
|
+
// If no transcript found (within last hour), that's also valid
|
|
36
|
+
// The function returns null for transcripts older than 1 hour
|
|
37
|
+
});
|
|
38
|
+
it('should find transcript for current project', () => {
|
|
39
|
+
const transcript = findCurrentTranscript(projectPath);
|
|
40
|
+
// May or may not find it depending on path encoding
|
|
41
|
+
if (transcript) {
|
|
42
|
+
expect(transcript.endsWith('.jsonl')).toBe(true);
|
|
43
|
+
expect(fs.existsSync(transcript)).toBe(true);
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
it('should read transcript file content', () => {
|
|
47
|
+
const transcript = findMostRecentTranscriptGlobally();
|
|
48
|
+
if (transcript) {
|
|
49
|
+
const content = readTranscriptFile(transcript);
|
|
50
|
+
expect(content).not.toBeNull();
|
|
51
|
+
expect(typeof content).toBe('string');
|
|
52
|
+
expect(content.length).toBeGreaterThan(0);
|
|
53
|
+
// Should be valid JSONL (first line is valid JSON)
|
|
54
|
+
const firstLine = content.split('\n')[0];
|
|
55
|
+
expect(() => JSON.parse(firstLine)).not.toThrow();
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
it('should return null for non-existent file', () => {
|
|
59
|
+
const content = readTranscriptFile('/non/existent/path.jsonl');
|
|
60
|
+
expect(content).toBeNull();
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
// ============================================================================
|
|
64
|
+
// 2. Preprocessor Integration Tests with Real Data
|
|
65
|
+
// ============================================================================
|
|
66
|
+
describe('Preprocessor Integration', () => {
|
|
67
|
+
const testTranscriptDir = path.join(os.homedir(), '.claude', 'projects');
|
|
68
|
+
it('should process a real transcript file without throwing', async () => {
|
|
69
|
+
const transcript = findMostRecentTranscriptGlobally();
|
|
70
|
+
if (!transcript) {
|
|
71
|
+
// Skip if no recent transcript available
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
const result = await preprocessTranscript(transcript, {
|
|
75
|
+
maxTokens: 10000,
|
|
76
|
+
includeThinking: true,
|
|
77
|
+
includeToolResults: true,
|
|
78
|
+
});
|
|
79
|
+
// Should produce clean markdown output
|
|
80
|
+
expect(result.content).toBeDefined();
|
|
81
|
+
expect(typeof result.content).toBe('string');
|
|
82
|
+
// Stats should be populated
|
|
83
|
+
expect(result.stats.originalSize).toBeGreaterThan(0);
|
|
84
|
+
expect(result.stats.processedSize).toBeGreaterThanOrEqual(0);
|
|
85
|
+
expect(result.stats.messagesExtracted).toBeGreaterThanOrEqual(0);
|
|
86
|
+
});
|
|
87
|
+
it('should NOT produce YAML frontmatter', async () => {
|
|
88
|
+
const transcript = findMostRecentTranscriptGlobally();
|
|
89
|
+
if (!transcript) {
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
const result = await preprocessTranscript(transcript);
|
|
93
|
+
// Should NOT start with YAML frontmatter (the preprocessor output itself)
|
|
94
|
+
// Note: The word "frontmatter" may appear in tool result content from recalled sessions
|
|
95
|
+
// but the preprocessor output format should never BEGIN with YAML frontmatter
|
|
96
|
+
expect(result.content).not.toMatch(/^---\n.*\n---\n/s); // No YAML frontmatter block at start
|
|
97
|
+
});
|
|
98
|
+
it('should produce clean chronological markdown', async () => {
|
|
99
|
+
const transcript = findMostRecentTranscriptGlobally();
|
|
100
|
+
if (!transcript) {
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
const result = await preprocessTranscript(transcript);
|
|
104
|
+
// Should have markdown headers if there's content
|
|
105
|
+
if (result.content.length > 0) {
|
|
106
|
+
// Check for standard message types
|
|
107
|
+
const hasUserOrAssistant = result.content.includes('## User') || result.content.includes('## Assistant');
|
|
108
|
+
expect(hasUserOrAssistant).toBe(true);
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
it('should respect token budget approximately', async () => {
|
|
112
|
+
const transcript = findMostRecentTranscriptGlobally();
|
|
113
|
+
if (!transcript) {
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
const smallBudget = 1000; // Very small budget
|
|
117
|
+
const result = await preprocessTranscript(transcript, {
|
|
118
|
+
maxTokens: smallBudget,
|
|
119
|
+
});
|
|
120
|
+
// Token budget is a soft limit - the preprocessor stops adding new messages
|
|
121
|
+
// once the budget is exceeded, but may include one message that pushes over.
|
|
122
|
+
// Allow 50% buffer for message granularity
|
|
123
|
+
const maxExpectedChars = smallBudget * 4 * 1.5;
|
|
124
|
+
expect(result.content.length).toBeLessThanOrEqual(maxExpectedChars);
|
|
125
|
+
});
|
|
126
|
+
});
|
|
127
|
+
// ============================================================================
|
|
128
|
+
// 3. Compact Format Output Constraints
|
|
129
|
+
// ============================================================================
|
|
130
|
+
describe('Compact Format Constraints', () => {
|
|
131
|
+
// Test data representing various session scenarios
|
|
132
|
+
const scenarios = [
|
|
133
|
+
{
|
|
134
|
+
name: 'Full session with all fields',
|
|
135
|
+
title: 'Implemented user authentication with JWT tokens and OAuth support',
|
|
136
|
+
decisions: [
|
|
137
|
+
{ what: 'Use JWT for stateless authentication', why: 'Scalable, no server sessions needed' },
|
|
138
|
+
{ what: 'Store tokens in httpOnly cookies', why: 'Prevents XSS attacks on tokens' },
|
|
139
|
+
{ what: 'Implement refresh token rotation', why: 'Enhanced security with shorter-lived tokens' },
|
|
140
|
+
],
|
|
141
|
+
mistakes: ['Forgot CORS headers initially causing preflight failures'],
|
|
142
|
+
filesChanged: ['src/auth.ts', 'src/middleware.ts', 'src/routes/login.ts', 'src/routes/logout.ts'],
|
|
143
|
+
tags: ['feature', 'auth', 'security', 'api'],
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
name: 'Minimal session',
|
|
147
|
+
title: 'Quick bugfix',
|
|
148
|
+
decisions: undefined,
|
|
149
|
+
mistakes: undefined,
|
|
150
|
+
filesChanged: undefined,
|
|
151
|
+
tags: undefined,
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
name: 'Session with very long title',
|
|
155
|
+
title: 'A'.repeat(200) + ' - this is a very long title that should be truncated',
|
|
156
|
+
decisions: [{ what: 'Decision', why: 'Reason' }],
|
|
157
|
+
mistakes: ['Mistake one', 'Mistake two', 'Mistake three', 'Mistake four'],
|
|
158
|
+
filesChanged: Array(50).fill('src/file.ts'),
|
|
159
|
+
tags: Array(10).fill('tag'),
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
name: 'Session with long decisions',
|
|
163
|
+
title: 'Refactoring session',
|
|
164
|
+
decisions: Array(10).fill(null).map((_, i) => ({
|
|
165
|
+
what: `This is a very long decision description number ${i} that goes into detail about what was decided`,
|
|
166
|
+
why: `This is an equally long explanation of why this decision was made in session ${i}`,
|
|
167
|
+
})),
|
|
168
|
+
mistakes: Array(5).fill('A very long mistake description that explains what went wrong in detail'),
|
|
169
|
+
filesChanged: Array(20).fill('src/very/deeply/nested/file/path/here.ts'),
|
|
170
|
+
tags: ['long-tag-name-one', 'long-tag-name-two', 'long-tag-name-three', 'extra', 'more'],
|
|
171
|
+
},
|
|
172
|
+
];
|
|
173
|
+
for (const scenario of scenarios) {
|
|
174
|
+
describe(`Scenario: ${scenario.name}`, () => {
|
|
175
|
+
let output;
|
|
176
|
+
beforeAll(() => {
|
|
177
|
+
output = formatCompactSaveConfirmation(scenario.title, scenario.decisions, scenario.mistakes, scenario.filesChanged, scenario.tags);
|
|
178
|
+
});
|
|
179
|
+
it('should be single line (no newlines)', () => {
|
|
180
|
+
expect(output).not.toContain('\n');
|
|
181
|
+
});
|
|
182
|
+
it('should be under 500 characters', () => {
|
|
183
|
+
expect(output.length).toBeLessThanOrEqual(500);
|
|
184
|
+
});
|
|
185
|
+
it('should include brand mark', () => {
|
|
186
|
+
expect(output).toContain('πΎ Saved to Recall');
|
|
187
|
+
});
|
|
188
|
+
it('should include recall.team link', () => {
|
|
189
|
+
expect(output).toContain('β recall.team');
|
|
190
|
+
});
|
|
191
|
+
it('should include title in quotes', () => {
|
|
192
|
+
expect(output).toContain('"');
|
|
193
|
+
});
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
it('should properly pluralize stats', () => {
|
|
197
|
+
const singular = formatCompactSaveConfirmation('Title', [{ what: 'd', why: 'r' }], ['m'], ['f.ts'], ['t']);
|
|
198
|
+
expect(singular).toContain('1 decision');
|
|
199
|
+
expect(singular).toContain('1 gotcha');
|
|
200
|
+
expect(singular).toContain('1 file');
|
|
201
|
+
const plural = formatCompactSaveConfirmation('Title', [{ what: 'd1', why: 'r' }, { what: 'd2', why: 'r' }], ['m1', 'm2'], ['f1.ts', 'f2.ts'], ['t1', 't2']);
|
|
202
|
+
expect(plural).toContain('2 decisions');
|
|
203
|
+
expect(plural).toContain('2 gotchas');
|
|
204
|
+
expect(plural).toContain('2 files');
|
|
205
|
+
});
|
|
206
|
+
it('should limit displayed decisions to 3', () => {
|
|
207
|
+
const manyDecisions = Array(10).fill(null).map((_, i) => ({
|
|
208
|
+
what: `Decision ${i}`,
|
|
209
|
+
why: `Reason ${i}`,
|
|
210
|
+
}));
|
|
211
|
+
const output = formatCompactSaveConfirmation('Title', manyDecisions, undefined, undefined, undefined);
|
|
212
|
+
// Should show first 3 decisions inline
|
|
213
|
+
expect(output).toContain('Decision 0');
|
|
214
|
+
expect(output).toContain('Decision 1');
|
|
215
|
+
expect(output).toContain('Decision 2');
|
|
216
|
+
expect(output).not.toContain('Decision 3');
|
|
217
|
+
expect(output).not.toContain('Decision 9');
|
|
218
|
+
// But stats should show total count
|
|
219
|
+
expect(output).toContain('10 decisions');
|
|
220
|
+
});
|
|
221
|
+
it('should limit displayed tags to 3', () => {
|
|
222
|
+
const manyTags = ['tag1', 'tag2', 'tag3', 'tag4', 'tag5'];
|
|
223
|
+
const output = formatCompactSaveConfirmation('Title', undefined, undefined, undefined, manyTags);
|
|
224
|
+
expect(output).toContain('#tag1');
|
|
225
|
+
expect(output).toContain('#tag2');
|
|
226
|
+
expect(output).toContain('#tag3');
|
|
227
|
+
expect(output).not.toContain('#tag4');
|
|
228
|
+
expect(output).not.toContain('#tag5');
|
|
229
|
+
});
|
|
230
|
+
});
|
|
231
|
+
// ============================================================================
|
|
232
|
+
// 4. Truncate Function Edge Cases
|
|
233
|
+
// ============================================================================
|
|
234
|
+
describe('Truncate Edge Cases', () => {
|
|
235
|
+
it('should handle empty string', () => {
|
|
236
|
+
expect(truncate('', 10)).toBe('');
|
|
237
|
+
});
|
|
238
|
+
it('should handle string equal to max length', () => {
|
|
239
|
+
expect(truncate('hello', 5)).toBe('hello');
|
|
240
|
+
});
|
|
241
|
+
it('should handle very short max length', () => {
|
|
242
|
+
// When maxLen is 3, only "..." fits
|
|
243
|
+
expect(truncate('hello', 3)).toBe('...');
|
|
244
|
+
});
|
|
245
|
+
it('should handle max length less than 3', () => {
|
|
246
|
+
// Edge case: maxLen < 3 would result in negative slice index
|
|
247
|
+
// The truncate function doesn't handle this gracefully - documents current behavior
|
|
248
|
+
const result = truncate('hello', 1);
|
|
249
|
+
// Current implementation: str.slice(0, 1-3) = str.slice(0, -2) = 'hel' + '...' = 'hel...'
|
|
250
|
+
// This is a known edge case - for practical use, maxLen should always be >= 3
|
|
251
|
+
expect(typeof result).toBe('string');
|
|
252
|
+
});
|
|
253
|
+
it('should handle unicode characters', () => {
|
|
254
|
+
const emoji = 'πΎππ';
|
|
255
|
+
// When truncating, "..." (3 chars) is added
|
|
256
|
+
// JS string.length counts UTF-16 code units, not visual characters
|
|
257
|
+
// Emoji use 2 code units each, so emoji.length = 6
|
|
258
|
+
const result = truncate(emoji, 4);
|
|
259
|
+
// With maxLen=4: slice(0, 1) + '...' = one partial emoji + '...'
|
|
260
|
+
expect(typeof result).toBe('string');
|
|
261
|
+
// Just verify it doesn't throw
|
|
262
|
+
});
|
|
263
|
+
});
|
|
264
|
+
// ============================================================================
|
|
265
|
+
// 5. Backwards Compatibility - Summary Parameter
|
|
266
|
+
// ============================================================================
|
|
267
|
+
describe('Backwards Compatibility', () => {
|
|
268
|
+
it('formatCompactSaveConfirmation handles legacy-style calls', () => {
|
|
269
|
+
// Old call style: all params could be undefined
|
|
270
|
+
const result = formatCompactSaveConfirmation('Session title', undefined, undefined, undefined, undefined);
|
|
271
|
+
expect(result).toContain('πΎ Saved to Recall');
|
|
272
|
+
expect(result).toContain('Session title');
|
|
273
|
+
expect(result).toContain('β recall.team');
|
|
274
|
+
expect(result.length).toBeLessThanOrEqual(500);
|
|
275
|
+
});
|
|
276
|
+
it('formatCompactSaveConfirmation handles empty arrays', () => {
|
|
277
|
+
const result = formatCompactSaveConfirmation('Title', [], [], [], []);
|
|
278
|
+
expect(result).toContain('πΎ Saved to Recall');
|
|
279
|
+
expect(result).not.toContain('decisions');
|
|
280
|
+
expect(result).not.toContain('gotcha');
|
|
281
|
+
expect(result).not.toContain('files');
|
|
282
|
+
expect(result).not.toContain('#');
|
|
283
|
+
});
|
|
284
|
+
});
|
|
285
|
+
// ============================================================================
|
|
286
|
+
// 6. Real-world JSONL Structure Tests
|
|
287
|
+
// ============================================================================
|
|
288
|
+
describe('Real JSONL Structure Handling', () => {
|
|
289
|
+
it('should handle various message formats from Claude Code', async () => {
|
|
290
|
+
// Create test JSONL with real message structures
|
|
291
|
+
const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'recall-test-'));
|
|
292
|
+
const testFile = path.join(tempDir, 'test.jsonl');
|
|
293
|
+
const messages = [
|
|
294
|
+
// Standard user message
|
|
295
|
+
{ type: 'user', timestamp: '2026-01-30T10:00:00Z', message: { role: 'user', content: 'Hello world' } },
|
|
296
|
+
// User message with array content
|
|
297
|
+
{ type: 'user', timestamp: '2026-01-30T10:01:00Z', message: { role: 'user', content: [{ type: 'text', text: 'Array format message' }] } },
|
|
298
|
+
// Assistant with thinking
|
|
299
|
+
{ type: 'assistant', timestamp: '2026-01-30T10:02:00Z', message: { role: 'assistant', content: [{ type: 'thinking', thinking: 'Analyzing...' }, { type: 'text', text: 'Here is my response' }] } },
|
|
300
|
+
// Assistant with tool call
|
|
301
|
+
{ type: 'assistant', timestamp: '2026-01-30T10:03:00Z', message: { role: 'assistant', content: [{ type: 'tool_use', id: 'tool_1', name: 'Read', input: { file_path: '/test.ts' } }] } },
|
|
302
|
+
// User with tool result
|
|
303
|
+
{ type: 'user', timestamp: '2026-01-30T10:04:00Z', message: { role: 'user', content: [{ type: 'tool_result', tool_use_id: 'tool_1', content: 'File contents here' }] } },
|
|
304
|
+
];
|
|
305
|
+
fs.writeFileSync(testFile, messages.map(m => JSON.stringify(m)).join('\n'));
|
|
306
|
+
try {
|
|
307
|
+
const result = await preprocessTranscript(testFile, {
|
|
308
|
+
includeThinking: true,
|
|
309
|
+
includeToolResults: true,
|
|
310
|
+
});
|
|
311
|
+
expect(result.content).toContain('Hello world');
|
|
312
|
+
expect(result.content).toContain('Array format message');
|
|
313
|
+
expect(result.content).toContain('Analyzing...');
|
|
314
|
+
expect(result.content).toContain('Here is my response');
|
|
315
|
+
expect(result.content).toContain('Read');
|
|
316
|
+
}
|
|
317
|
+
finally {
|
|
318
|
+
fs.unlinkSync(testFile);
|
|
319
|
+
fs.rmdirSync(tempDir);
|
|
320
|
+
}
|
|
321
|
+
});
|
|
322
|
+
});
|
|
323
|
+
//# sourceMappingURL=integration.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integration.test.js","sourceRoot":"","sources":["../../src/__tests__/integration.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Tests for Transcript Preprocessor
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Verifies:
|
|
5
|
+
* 1. JSONL parsing works correctly
|
|
6
|
+
* 2. Noise is removed (base64, system messages, progress updates)
|
|
7
|
+
* 3. Signal is preserved (user messages, assistant responses, thinking blocks, tool results)
|
|
8
|
+
* 4. Output is clean chronological markdown with NO YAML frontmatter
|
|
9
|
+
* 5. Errors are only flagged for explicit errors, not content containing error-like words
|
|
6
10
|
*/
|
|
7
11
|
export {};
|
|
8
12
|
//# sourceMappingURL=preprocessor.test.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preprocessor.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/preprocessor.test.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"preprocessor.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/preprocessor.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}
|