kaimon-cli 0.2.1 → 0.4.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 (68) hide show
  1. package/README.md +37 -3
  2. package/dist/__tests__/commands/list.test.d.ts +2 -0
  3. package/dist/__tests__/commands/list.test.d.ts.map +1 -0
  4. package/dist/__tests__/commands/list.test.js +113 -0
  5. package/dist/__tests__/commands/list.test.js.map +1 -0
  6. package/dist/__tests__/commands/pull.test.js +165 -59
  7. package/dist/__tests__/commands/pull.test.js.map +1 -1
  8. package/dist/__tests__/helpers.d.ts.map +1 -1
  9. package/dist/__tests__/helpers.js +2 -1
  10. package/dist/__tests__/helpers.js.map +1 -1
  11. package/dist/__tests__/integration/complete-user-journeys.test.d.ts +2 -0
  12. package/dist/__tests__/integration/complete-user-journeys.test.d.ts.map +1 -0
  13. package/dist/__tests__/integration/complete-user-journeys.test.js +357 -0
  14. package/dist/__tests__/integration/complete-user-journeys.test.js.map +1 -0
  15. package/dist/__tests__/integration/config-integration.test.d.ts +2 -0
  16. package/dist/__tests__/integration/config-integration.test.d.ts.map +1 -0
  17. package/dist/__tests__/integration/config-integration.test.js +151 -0
  18. package/dist/__tests__/integration/config-integration.test.js.map +1 -0
  19. package/dist/__tests__/integration/data-integrity.test.d.ts +2 -0
  20. package/dist/__tests__/integration/data-integrity.test.d.ts.map +1 -0
  21. package/dist/__tests__/integration/data-integrity.test.js +302 -0
  22. package/dist/__tests__/integration/data-integrity.test.js.map +1 -0
  23. package/dist/__tests__/integration/edge-cases-advanced.test.d.ts +2 -0
  24. package/dist/__tests__/integration/edge-cases-advanced.test.d.ts.map +1 -0
  25. package/dist/__tests__/integration/edge-cases-advanced.test.js +294 -0
  26. package/dist/__tests__/integration/edge-cases-advanced.test.js.map +1 -0
  27. package/dist/__tests__/integration/error-recovery.test.d.ts +2 -0
  28. package/dist/__tests__/integration/error-recovery.test.d.ts.map +1 -0
  29. package/dist/__tests__/integration/error-recovery.test.js +284 -0
  30. package/dist/__tests__/integration/error-recovery.test.js.map +1 -0
  31. package/dist/__tests__/integration/filesystem-edge-cases.test.d.ts +2 -0
  32. package/dist/__tests__/integration/filesystem-edge-cases.test.d.ts.map +1 -0
  33. package/dist/__tests__/integration/filesystem-edge-cases.test.js +224 -0
  34. package/dist/__tests__/integration/filesystem-edge-cases.test.js.map +1 -0
  35. package/dist/__tests__/integration/filtering-operations.test.d.ts +2 -0
  36. package/dist/__tests__/integration/filtering-operations.test.d.ts.map +1 -0
  37. package/dist/__tests__/integration/filtering-operations.test.js +286 -0
  38. package/dist/__tests__/integration/filtering-operations.test.js.map +1 -0
  39. package/dist/__tests__/integration/full-workflow.test.js +4 -0
  40. package/dist/__tests__/integration/full-workflow.test.js.map +1 -1
  41. package/dist/__tests__/integration/state-transitions.test.d.ts +2 -0
  42. package/dist/__tests__/integration/state-transitions.test.d.ts.map +1 -0
  43. package/dist/__tests__/integration/state-transitions.test.js +328 -0
  44. package/dist/__tests__/integration/state-transitions.test.js.map +1 -0
  45. package/dist/__tests__/unit/utils/frontmatter.test.js +68 -68
  46. package/dist/__tests__/unit/utils/markdown.test.js +11 -11
  47. package/dist/commands/auth.d.ts.map +1 -1
  48. package/dist/commands/auth.js +2 -11
  49. package/dist/commands/auth.js.map +1 -1
  50. package/dist/commands/list.d.ts +4 -0
  51. package/dist/commands/list.d.ts.map +1 -0
  52. package/dist/commands/list.js +19 -0
  53. package/dist/commands/list.js.map +1 -0
  54. package/dist/commands/pull.d.ts.map +1 -1
  55. package/dist/commands/pull.js +5 -3
  56. package/dist/commands/pull.js.map +1 -1
  57. package/dist/index.d.ts.map +1 -1
  58. package/dist/index.js +6 -1
  59. package/dist/index.js.map +1 -1
  60. package/dist/utils/listOperations.d.ts +5 -0
  61. package/dist/utils/listOperations.d.ts.map +1 -0
  62. package/dist/utils/listOperations.js +171 -0
  63. package/dist/utils/listOperations.js.map +1 -0
  64. package/dist/utils/pullOperations.d.ts +3 -2
  65. package/dist/utils/pullOperations.d.ts.map +1 -1
  66. package/dist/utils/pullOperations.js +86 -9
  67. package/dist/utils/pullOperations.js.map +1 -1
  68. package/package.json +2 -2
@@ -0,0 +1,328 @@
1
+ import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
2
+ import fs from 'fs';
3
+ import path from 'path';
4
+ import os from 'os';
5
+ import { listDocuments } from '../../utils/listOperations.js';
6
+ import { pullDocuments } from '../../utils/pullOperations.js';
7
+ import * as config from '../../utils/config.js';
8
+ import * as supabaseClient from '../../utils/supabaseClient.js';
9
+ import * as tokenRefresh from '../../utils/tokenRefresh.js';
10
+ import { createTempDir, cleanupTempDir, mockConfig, mockDocumentRecord, mockBlockNoteContent, createMockSupabaseClient } from '../helpers.js';
11
+ describe('State Transitions (Integration)', () => {
12
+ let tempDir;
13
+ let docsDir;
14
+ let consoleSpy;
15
+ beforeEach(() => {
16
+ tempDir = createTempDir();
17
+ docsDir = path.join(tempDir, 'KaimonDocs');
18
+ vi.spyOn(os, 'homedir').mockReturnValue(tempDir);
19
+ vi.spyOn(process, 'cwd').mockReturnValue(tempDir);
20
+ consoleSpy = vi.spyOn(console, 'log').mockImplementation(() => { });
21
+ });
22
+ afterEach(() => {
23
+ cleanupTempDir(tempDir);
24
+ vi.restoreAllMocks();
25
+ });
26
+ it('should transition NEW → UP-TO-DATE after pull', async () => {
27
+ config.saveConfig(mockConfig());
28
+ vi.spyOn(tokenRefresh, 'ensureValidToken').mockResolvedValue(true);
29
+ const mockSupabase = createMockSupabaseClient();
30
+ const doc = mockDocumentRecord({
31
+ id: 'doc-123',
32
+ title: 'New Document',
33
+ updated_at: new Date('2024-01-01T12:00:00Z').toISOString()
34
+ });
35
+ mockSupabase.from.mockReturnValue({
36
+ select: vi.fn().mockReturnThis(),
37
+ eq: vi.fn().mockReturnThis(),
38
+ order: vi.fn().mockResolvedValue({ data: [doc], error: null })
39
+ });
40
+ const mockContent = mockBlockNoteContent();
41
+ const blob = new Blob([JSON.stringify(mockContent)], { type: 'application/json' });
42
+ mockSupabase.storage.from.mockReturnValue({
43
+ download: vi.fn().mockResolvedValue({ data: blob, error: null })
44
+ });
45
+ vi.spyOn(supabaseClient, 'getSupabaseClient').mockReturnValue(mockSupabase);
46
+ // Before pull: Should show [NEW]
47
+ await listDocuments();
48
+ let output = consoleSpy.mock.calls.map((c) => c[0]).join('\n');
49
+ expect(output).toContain('[NEW]');
50
+ expect(output).not.toContain('[UP-TO-DATE]');
51
+ // Pull the document
52
+ await pullDocuments(false, true);
53
+ expect(fs.existsSync(docsDir)).toBe(true);
54
+ // After pull: Should show [UP-TO-DATE]
55
+ consoleSpy.mockClear();
56
+ await listDocuments();
57
+ output = consoleSpy.mock.calls.map((c) => c[0]).join('\n');
58
+ expect(output).toContain('[UP-TO-DATE]');
59
+ expect(output).not.toContain('[NEW]');
60
+ });
61
+ it('should transition UP-TO-DATE → UPDATED when remote changes', async () => {
62
+ config.saveConfig(mockConfig());
63
+ vi.spyOn(tokenRefresh, 'ensureValidToken').mockResolvedValue(true);
64
+ const mockSupabase = createMockSupabaseClient();
65
+ // Initial state
66
+ const initialTime = new Date('2024-01-01T12:00:00Z');
67
+ const doc = mockDocumentRecord({
68
+ id: 'doc-123',
69
+ title: 'Changing Document',
70
+ updated_at: initialTime.toISOString()
71
+ });
72
+ mockSupabase.from.mockReturnValue({
73
+ select: vi.fn().mockReturnThis(),
74
+ eq: vi.fn().mockReturnThis(),
75
+ order: vi.fn().mockResolvedValue({ data: [doc], error: null })
76
+ });
77
+ const mockContent = mockBlockNoteContent();
78
+ const blob = new Blob([JSON.stringify(mockContent)], { type: 'application/json' });
79
+ mockSupabase.storage.from.mockReturnValue({
80
+ download: vi.fn().mockResolvedValue({ data: blob, error: null })
81
+ });
82
+ vi.spyOn(supabaseClient, 'getSupabaseClient').mockReturnValue(mockSupabase);
83
+ // Pull initial version
84
+ await pullDocuments(false, true);
85
+ // Verify UP-TO-DATE
86
+ consoleSpy.mockClear();
87
+ await listDocuments();
88
+ let output = consoleSpy.mock.calls.map((c) => c[0]).join('\n');
89
+ expect(output).toContain('[UP-TO-DATE]');
90
+ // Simulate remote update
91
+ const updatedTime = new Date('2024-01-02T12:00:00Z');
92
+ const updatedDoc = mockDocumentRecord({
93
+ id: 'doc-123',
94
+ title: 'Changing Document',
95
+ updated_at: updatedTime.toISOString()
96
+ });
97
+ mockSupabase.from.mockReturnValue({
98
+ select: vi.fn().mockReturnThis(),
99
+ eq: vi.fn().mockReturnThis(),
100
+ order: vi.fn().mockResolvedValue({ data: [updatedDoc], error: null })
101
+ });
102
+ // List should now show [UPDATED]
103
+ consoleSpy.mockClear();
104
+ await listDocuments();
105
+ output = consoleSpy.mock.calls.map((c) => c[0]).join('\n');
106
+ expect(output).toContain('[UPDATED]');
107
+ expect(output).not.toContain('[UP-TO-DATE]');
108
+ });
109
+ it('should transition UPDATED → UP-TO-DATE after pulling updates', async () => {
110
+ config.saveConfig(mockConfig());
111
+ vi.spyOn(tokenRefresh, 'ensureValidToken').mockResolvedValue(true);
112
+ const mockSupabase = createMockSupabaseClient();
113
+ // Create initial local file (older version)
114
+ fs.mkdirSync(docsDir, { recursive: true });
115
+ const localTime = new Date('2024-01-01T00:00:00Z');
116
+ const localFile = path.join(docsDir, 'Updated-Doc.md');
117
+ fs.writeFileSync(localFile, `---
118
+ kaimon_id: "doc-123"
119
+ title: "Updated Doc"
120
+ ---
121
+ Old content`, 'utf-8');
122
+ fs.utimesSync(localFile, localTime, localTime);
123
+ // Remote has newer version
124
+ const remoteTime = new Date('2024-01-02T00:00:00Z');
125
+ const doc = mockDocumentRecord({
126
+ id: 'doc-123',
127
+ title: 'Updated Doc',
128
+ updated_at: remoteTime.toISOString()
129
+ });
130
+ mockSupabase.from.mockReturnValue({
131
+ select: vi.fn().mockReturnThis(),
132
+ eq: vi.fn().mockReturnThis(),
133
+ order: vi.fn().mockResolvedValue({ data: [doc], error: null })
134
+ });
135
+ const updatedContent = {
136
+ type: 'blocknote',
137
+ content: [
138
+ { type: 'heading', props: { level: 1 }, content: [{ type: 'text', text: 'New Content' }] }
139
+ ]
140
+ };
141
+ const blob = new Blob([JSON.stringify(updatedContent)], { type: 'application/json' });
142
+ mockSupabase.storage.from.mockReturnValue({
143
+ download: vi.fn().mockResolvedValue({ data: blob, error: null })
144
+ });
145
+ vi.spyOn(supabaseClient, 'getSupabaseClient').mockReturnValue(mockSupabase);
146
+ // Before pull: Should show [UPDATED]
147
+ await listDocuments();
148
+ let output = consoleSpy.mock.calls.map((c) => c[0]).join('\n');
149
+ expect(output).toContain('[UPDATED]');
150
+ // Pull the updates
151
+ await pullDocuments(false, true);
152
+ // After pull: Should show [UP-TO-DATE]
153
+ consoleSpy.mockClear();
154
+ await listDocuments();
155
+ output = consoleSpy.mock.calls.map((c) => c[0]).join('\n');
156
+ expect(output).toContain('[UP-TO-DATE]');
157
+ expect(output).not.toContain('[UPDATED]');
158
+ // Verify file was actually updated
159
+ const fileContent = fs.readFileSync(localFile, 'utf-8');
160
+ expect(fileContent).toContain('# New Content');
161
+ });
162
+ it('should handle multiple documents with mixed statuses (2 NEW, 3 UPDATED, 5 UP-TO-DATE)', async () => {
163
+ config.saveConfig(mockConfig());
164
+ vi.spyOn(tokenRefresh, 'ensureValidToken').mockResolvedValue(true);
165
+ const mockSupabase = createMockSupabaseClient();
166
+ // Create 5 existing local files (will be UP-TO-DATE)
167
+ fs.mkdirSync(docsDir, { recursive: true });
168
+ const upToDateTime = new Date('2024-01-01T00:00:00Z');
169
+ for (let i = 1; i <= 5; i++) {
170
+ const file = path.join(docsDir, `UpToDate-${i}.md`);
171
+ fs.writeFileSync(file, `---
172
+ kaimon_id: "up-to-date-${i}"
173
+ ---
174
+ Content ${i}`, 'utf-8');
175
+ fs.utimesSync(file, upToDateTime, upToDateTime);
176
+ }
177
+ // Create 3 existing local files that will be outdated (UPDATED)
178
+ const oldTime = new Date('2024-01-01T00:00:00Z');
179
+ for (let i = 1; i <= 3; i++) {
180
+ const file = path.join(docsDir, `Updated-${i}.md`);
181
+ fs.writeFileSync(file, `---
182
+ kaimon_id: "updated-${i}"
183
+ ---
184
+ Old content ${i}`, 'utf-8');
185
+ fs.utimesSync(file, oldTime, oldTime);
186
+ }
187
+ // Remote has all 10 documents
188
+ const mockDocs = [
189
+ // 2 NEW documents (not in local)
190
+ mockDocumentRecord({ id: 'new-1', title: 'New 1', updated_at: new Date().toISOString() }),
191
+ mockDocumentRecord({ id: 'new-2', title: 'New 2', updated_at: new Date().toISOString() }),
192
+ // 3 UPDATED documents (newer than local)
193
+ ...Array.from({ length: 3 }, (_, i) => mockDocumentRecord({
194
+ id: `updated-${i + 1}`,
195
+ title: `Updated ${i + 1}`,
196
+ updated_at: new Date('2024-01-02T00:00:00Z').toISOString() // Newer than local
197
+ })),
198
+ // 5 UP-TO-DATE documents (same or older than local)
199
+ ...Array.from({ length: 5 }, (_, i) => mockDocumentRecord({
200
+ id: `up-to-date-${i + 1}`,
201
+ title: `UpToDate ${i + 1}`,
202
+ updated_at: upToDateTime.toISOString()
203
+ }))
204
+ ];
205
+ mockSupabase.from.mockReturnValue({
206
+ select: vi.fn().mockReturnThis(),
207
+ eq: vi.fn().mockReturnThis(),
208
+ order: vi.fn().mockResolvedValue({ data: mockDocs, error: null })
209
+ });
210
+ const mockContent = mockBlockNoteContent();
211
+ const blob = new Blob([JSON.stringify(mockContent)], { type: 'application/json' });
212
+ mockSupabase.storage.from.mockReturnValue({
213
+ download: vi.fn().mockResolvedValue({ data: blob, error: null })
214
+ });
215
+ vi.spyOn(supabaseClient, 'getSupabaseClient').mockReturnValue(mockSupabase);
216
+ // List should show mixed statuses
217
+ await listDocuments();
218
+ const output = consoleSpy.mock.calls.map((c) => c[0]).join('\n');
219
+ // Count status indicators
220
+ const newCount = (output.match(/\[NEW\]/g) || []).length;
221
+ const updatedCount = (output.match(/\[UPDATED\]/g) || []).length;
222
+ const upToDateCount = (output.match(/\[UP-TO-DATE\]/g) || []).length;
223
+ expect(newCount).toBe(2);
224
+ expect(updatedCount).toBe(3);
225
+ expect(upToDateCount).toBe(5);
226
+ expect(output).toContain('10 total');
227
+ });
228
+ it('should keep UP-TO-DATE status when local file is newer than remote', async () => {
229
+ config.saveConfig(mockConfig());
230
+ vi.spyOn(tokenRefresh, 'ensureValidToken').mockResolvedValue(true);
231
+ const mockSupabase = createMockSupabaseClient();
232
+ // Create local file with NEWER timestamp than remote
233
+ fs.mkdirSync(docsDir, { recursive: true });
234
+ const localTime = new Date('2024-01-05T00:00:00Z'); // Newer
235
+ const localFile = path.join(docsDir, 'Local-Newer.md');
236
+ fs.writeFileSync(localFile, `---
237
+ kaimon_id: "doc-123"
238
+ title: "Local Newer"
239
+ ---
240
+ Local edits`, 'utf-8');
241
+ fs.utimesSync(localFile, localTime, localTime);
242
+ // Remote has OLDER version
243
+ const remoteTime = new Date('2024-01-01T00:00:00Z'); // Older
244
+ const doc = mockDocumentRecord({
245
+ id: 'doc-123',
246
+ title: 'Local Newer',
247
+ updated_at: remoteTime.toISOString()
248
+ });
249
+ mockSupabase.from.mockReturnValue({
250
+ select: vi.fn().mockReturnThis(),
251
+ eq: vi.fn().mockReturnThis(),
252
+ order: vi.fn().mockResolvedValue({ data: [doc], error: null })
253
+ });
254
+ vi.spyOn(supabaseClient, 'getSupabaseClient').mockReturnValue(mockSupabase);
255
+ // List should show [UP-TO-DATE] (not UPDATED)
256
+ await listDocuments();
257
+ const output = consoleSpy.mock.calls.map((c) => c[0]).join('\n');
258
+ expect(output).toContain('[UP-TO-DATE]');
259
+ expect(output).not.toContain('[UPDATED]');
260
+ // Pull should skip this document
261
+ const originalContent = fs.readFileSync(localFile, 'utf-8');
262
+ await pullDocuments(false, true);
263
+ const afterPullContent = fs.readFileSync(localFile, 'utf-8');
264
+ // File should be unchanged
265
+ expect(afterPullContent).toBe(originalContent);
266
+ });
267
+ it('should handle rapid state changes: NEW → UP-TO-DATE → UPDATED → UP-TO-DATE', async () => {
268
+ config.saveConfig(mockConfig());
269
+ vi.spyOn(tokenRefresh, 'ensureValidToken').mockResolvedValue(true);
270
+ const mockSupabase = createMockSupabaseClient();
271
+ // State 1: NEW
272
+ const time1 = new Date('2024-01-01T00:00:00Z');
273
+ const doc1 = mockDocumentRecord({
274
+ id: 'doc-123',
275
+ title: 'Rapid Changes',
276
+ updated_at: time1.toISOString()
277
+ });
278
+ mockSupabase.from.mockReturnValue({
279
+ select: vi.fn().mockReturnThis(),
280
+ eq: vi.fn().mockReturnThis(),
281
+ order: vi.fn().mockResolvedValue({ data: [doc1], error: null })
282
+ });
283
+ const content1 = mockBlockNoteContent('Version 1');
284
+ const blob1 = new Blob([JSON.stringify(content1)], { type: 'application/json' });
285
+ mockSupabase.storage.from.mockReturnValue({
286
+ download: vi.fn().mockResolvedValue({ data: blob1, error: null })
287
+ });
288
+ vi.spyOn(supabaseClient, 'getSupabaseClient').mockReturnValue(mockSupabase);
289
+ // Step 1: NEW
290
+ await listDocuments();
291
+ let output = consoleSpy.mock.calls.map((c) => c[0]).join('\n');
292
+ expect(output).toContain('[NEW]');
293
+ // Pull → UP-TO-DATE
294
+ await pullDocuments(false, true);
295
+ consoleSpy.mockClear();
296
+ await listDocuments();
297
+ output = consoleSpy.mock.calls.map((c) => c[0]).join('\n');
298
+ expect(output).toContain('[UP-TO-DATE]');
299
+ // Remote updates → UPDATED
300
+ const time2 = new Date('2024-01-02T00:00:00Z');
301
+ const doc2 = mockDocumentRecord({
302
+ id: 'doc-123',
303
+ title: 'Rapid Changes',
304
+ updated_at: time2.toISOString()
305
+ });
306
+ mockSupabase.from.mockReturnValue({
307
+ select: vi.fn().mockReturnThis(),
308
+ eq: vi.fn().mockReturnThis(),
309
+ order: vi.fn().mockResolvedValue({ data: [doc2], error: null })
310
+ });
311
+ const content2 = mockBlockNoteContent('Version 2');
312
+ const blob2 = new Blob([JSON.stringify(content2)], { type: 'application/json' });
313
+ mockSupabase.storage.from.mockReturnValue({
314
+ download: vi.fn().mockResolvedValue({ data: blob2, error: null })
315
+ });
316
+ consoleSpy.mockClear();
317
+ await listDocuments();
318
+ output = consoleSpy.mock.calls.map((c) => c[0]).join('\n');
319
+ expect(output).toContain('[UPDATED]');
320
+ // Pull again → UP-TO-DATE
321
+ await pullDocuments(false, true);
322
+ consoleSpy.mockClear();
323
+ await listDocuments();
324
+ output = consoleSpy.mock.calls.map((c) => c[0]).join('\n');
325
+ expect(output).toContain('[UP-TO-DATE]');
326
+ });
327
+ });
328
+ //# sourceMappingURL=state-transitions.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state-transitions.test.js","sourceRoot":"","sources":["../../../src/__tests__/integration/state-transitions.test.ts"],"names":[],"mappings":"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"}
@@ -3,15 +3,15 @@ import { parseFrontmatter, generateFrontmatter, combineFrontmatterAndMarkdown }
3
3
  describe('frontmatter.ts', () => {
4
4
  describe('parseFrontmatter', () => {
5
5
  it('should parse valid frontmatter', () => {
6
- const content = `---
7
- title: "Test Document"
8
- kaimon_id: "doc-123"
9
- created_at: "2024-01-01T00:00:00Z"
10
- updated_at: "2024-01-02T00:00:00Z"
11
- ---
12
-
13
- # Test Document
14
-
6
+ const content = `---
7
+ title: "Test Document"
8
+ kaimon_id: "doc-123"
9
+ created_at: "2024-01-01T00:00:00Z"
10
+ updated_at: "2024-01-02T00:00:00Z"
11
+ ---
12
+
13
+ # Test Document
14
+
15
15
  Content here.`;
16
16
  const result = parseFrontmatter(content);
17
17
  expect(result.hasFrontmatter).toBe(true);
@@ -31,9 +31,9 @@ Content here.`;
31
31
  expect(result.markdown).toBe(content);
32
32
  });
33
33
  it('should handle unclosed frontmatter', () => {
34
- const content = `---
35
- title: "Test"
36
- # Missing closing ---
34
+ const content = `---
35
+ title: "Test"
36
+ # Missing closing ---
37
37
  Content here.`;
38
38
  const result = parseFrontmatter(content);
39
39
  expect(result.hasFrontmatter).toBe(false);
@@ -41,12 +41,12 @@ Content here.`;
41
41
  expect(result.markdown).toBe(content);
42
42
  });
43
43
  it('should strip quotes from values', () => {
44
- const content = `---
45
- title: "Quoted Value"
46
- author: 'Single Quoted'
47
- year: 2024
48
- ---
49
-
44
+ const content = `---
45
+ title: "Quoted Value"
46
+ author: 'Single Quoted'
47
+ year: 2024
48
+ ---
49
+
50
50
  Content`;
51
51
  const result = parseFrontmatter(content);
52
52
  expect(result.frontmatter.title).toBe('Quoted Value');
@@ -54,32 +54,32 @@ Content`;
54
54
  expect(result.frontmatter.year).toBe('2024');
55
55
  });
56
56
  it('should handle values without quotes', () => {
57
- const content = `---
58
- title: Unquoted Value
59
- count: 42
60
- ---
61
-
57
+ const content = `---
58
+ title: Unquoted Value
59
+ count: 42
60
+ ---
61
+
62
62
  Content`;
63
63
  const result = parseFrontmatter(content);
64
64
  expect(result.frontmatter.title).toBe('Unquoted Value');
65
65
  expect(result.frontmatter.count).toBe('42');
66
66
  });
67
67
  it('should preserve custom fields', () => {
68
- const content = `---
69
- title: "Test"
70
- custom_field: "Custom Value"
71
- another: "Another"
72
- ---
73
-
68
+ const content = `---
69
+ title: "Test"
70
+ custom_field: "Custom Value"
71
+ another: "Another"
72
+ ---
73
+
74
74
  Content`;
75
75
  const result = parseFrontmatter(content);
76
76
  expect(result.frontmatter.custom_field).toBe('Custom Value');
77
77
  expect(result.frontmatter.another).toBe('Another');
78
78
  });
79
79
  it('should handle empty frontmatter', () => {
80
- const content = `---
81
- ---
82
-
80
+ const content = `---
81
+ ---
82
+
83
83
  Content`;
84
84
  const result = parseFrontmatter(content);
85
85
  expect(result.hasFrontmatter).toBe(true);
@@ -87,23 +87,23 @@ Content`;
87
87
  expect(result.markdown).toBe('Content');
88
88
  });
89
89
  it('should trim markdown content', () => {
90
- const content = `---
91
- title: "Test"
92
- ---
93
-
94
-
95
- # Heading
96
-
90
+ const content = `---
91
+ title: "Test"
92
+ ---
93
+
94
+
95
+ # Heading
96
+
97
97
  Content`;
98
98
  const result = parseFrontmatter(content);
99
99
  expect(result.markdown).toBe('# Heading\n\nContent');
100
100
  });
101
101
  it('should handle frontmatter with special characters', () => {
102
- const content = `---
103
- title: "Document: With Special & Characters!"
104
- path: "/docs/test.md"
105
- ---
106
-
102
+ const content = `---
103
+ title: "Document: With Special & Characters!"
104
+ path: "/docs/test.md"
105
+ ---
106
+
107
107
  Content`;
108
108
  const result = parseFrontmatter(content);
109
109
  expect(result.frontmatter.title).toBe('Document: With Special & Characters!');
@@ -119,11 +119,11 @@ Content`;
119
119
  updated_at: '2024-01-02T00:00:00Z'
120
120
  };
121
121
  const result = generateFrontmatter(frontmatter);
122
- expect(result).toBe(`---
123
- title: "Test Document"
124
- kaimon_id: "doc-123"
125
- created_at: "2024-01-01T00:00:00Z"
126
- updated_at: "2024-01-02T00:00:00Z"
122
+ expect(result).toBe(`---
123
+ title: "Test Document"
124
+ kaimon_id: "doc-123"
125
+ created_at: "2024-01-01T00:00:00Z"
126
+ updated_at: "2024-01-02T00:00:00Z"
127
127
  ---`);
128
128
  });
129
129
  it('should maintain field order regardless of input order', () => {
@@ -146,9 +146,9 @@ updated_at: "2024-01-02T00:00:00Z"
146
146
  kaimon_id: 'doc-123'
147
147
  };
148
148
  const result = generateFrontmatter(frontmatter);
149
- expect(result).toBe(`---
150
- title: "Test Document"
151
- kaimon_id: "doc-123"
149
+ expect(result).toBe(`---
150
+ title: "Test Document"
151
+ kaimon_id: "doc-123"
152
152
  ---`);
153
153
  });
154
154
  it('should include custom fields after standard fields', () => {
@@ -183,13 +183,13 @@ kaimon_id: "doc-123"
183
183
  };
184
184
  const markdown = '# Test Document\n\nContent here.';
185
185
  const result = combineFrontmatterAndMarkdown(frontmatter, markdown);
186
- expect(result).toBe(`---
187
- title: "Test Document"
188
- kaimon_id: "doc-123"
189
- ---
190
-
191
- # Test Document
192
-
186
+ expect(result).toBe(`---
187
+ title: "Test Document"
188
+ kaimon_id: "doc-123"
189
+ ---
190
+
191
+ # Test Document
192
+
193
193
  Content here.`);
194
194
  });
195
195
  it('should add blank line between frontmatter and markdown', () => {
@@ -209,15 +209,15 @@ Content here.`);
209
209
  });
210
210
  describe('round-trip consistency', () => {
211
211
  it('should maintain data through parse and generate cycle', () => {
212
- const original = `---
213
- title: "Test Document"
214
- kaimon_id: "doc-123"
215
- created_at: "2024-01-01T00:00:00Z"
216
- updated_at: "2024-01-02T00:00:00Z"
217
- ---
218
-
219
- # Test Document
220
-
212
+ const original = `---
213
+ title: "Test Document"
214
+ kaimon_id: "doc-123"
215
+ created_at: "2024-01-01T00:00:00Z"
216
+ updated_at: "2024-01-02T00:00:00Z"
217
+ ---
218
+
219
+ # Test Document
220
+
221
221
  Content here.`;
222
222
  const { frontmatter, markdown } = parseFrontmatter(original);
223
223
  const regenerated = combineFrontmatterAndMarkdown(frontmatter, markdown);
@@ -234,17 +234,17 @@ describe('markdown.ts', () => {
234
234
  expect(blocks).toEqual([]);
235
235
  });
236
236
  it('should handle mixed content', () => {
237
- const markdown = `# Title
238
-
239
- Intro paragraph
240
-
241
- - Item 1
242
- - Item 2
243
-
244
- \`\`\`python
245
- print("hello")
246
- \`\`\`
247
-
237
+ const markdown = `# Title
238
+
239
+ Intro paragraph
240
+
241
+ - Item 1
242
+ - Item 2
243
+
244
+ \`\`\`python
245
+ print("hello")
246
+ \`\`\`
247
+
248
248
  Final paragraph`;
249
249
  const blocks = markdownToBlocknote(markdown);
250
250
  expect(blocks.length).toBeGreaterThan(0);
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgBpC,QAAA,MAAM,IAAI,SACgC,CAAC;AAwJ3C,OAAO,EAAE,IAAI,EAAE,CAAC"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgBpC,QAAA,MAAM,IAAI,SACgC,CAAC;AAgJ3C,OAAO,EAAE,IAAI,EAAE,CAAC"}
@@ -105,8 +105,7 @@ auth
105
105
  auth
106
106
  .command('status')
107
107
  .description('Check authentication status')
108
- .option('--show-token', 'Show full access token (security risk)')
109
- .action(async (options) => {
108
+ .action(async () => {
110
109
  try {
111
110
  const config = loadConfig();
112
111
  if (!config.access_token) {
@@ -118,15 +117,7 @@ auth
118
117
  if (config.user_email) {
119
118
  console.log(chalk.gray(`Email: ${config.user_email}`));
120
119
  }
121
- // Show token (masked by default)
122
- if (options.showToken) {
123
- console.log(chalk.gray(`Token: ${config.access_token}`));
124
- console.log(chalk.yellow('⚠️ Full token shown above - keep it secure!'));
125
- }
126
- else {
127
- console.log(chalk.gray(`Token: ${maskToken(config.access_token)}`));
128
- console.log(chalk.dim('Use --show-token to reveal full token'));
129
- }
120
+ console.log(chalk.gray(`Token: ${maskToken(config.access_token)}`));
130
121
  if (config.expires_at) {
131
122
  const expiresAt = new Date(config.expires_at);
132
123
  const now = new Date();
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"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"}