kaimon-cli 0.1.41 → 0.1.43

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/README.md CHANGED
@@ -68,6 +68,9 @@ kaimon pull
68
68
  # Download documents to current folder (no KaimonDocs subfolder)
69
69
  kaimon pull --flat
70
70
 
71
+ # Pull without confirmation
72
+ kaimon pull -y
73
+
71
74
  # Upload local markdown files to Kaimon
72
75
  kaimon push
73
76
 
@@ -82,13 +85,22 @@ kaimon sync
82
85
  ```
83
86
 
84
87
  **Pull behavior:**
88
+ - **Smart sync**: Only pulls new or updated documents (compares timestamps)
89
+ - If local file is newer than remote → skips (no overwrite)
85
90
  - Default: Creates `./KaimonDocs/` subfolder and downloads documents there
86
91
  - `--flat`: Downloads documents directly to current folder (no subfolder)
92
+ - `-y, --yes`: Skip confirmation and pull all documents
93
+ - Shows preview with file counts and timestamps before pulling
87
94
 
88
95
  **Push behavior:**
96
+ - **Smart sync**: Only pushes new or modified files (compares timestamps)
97
+ - If remote is newer than local → skips (no overwrite)
98
+ - Reads frontmatter `kaimon_id` to match existing documents
89
99
  - Default: Finds all `.md` files in current folder + subfolders, lists them, asks for confirmation
90
100
  - `[files...]`: Push only specific files (e.g., `kaimon push doc1.md readme.md`)
91
101
  - `-y, --yes`: Skip confirmation and push all files found
102
+ - Shows preview with actions and timestamps before pushing
103
+ - Automatically updates frontmatter with `kaimon_id` for new documents
92
104
 
93
105
  ## Document Format
94
106
 
@@ -107,6 +119,50 @@ updated_at: "2024-02-21T15:00:00Z"
107
119
  Content here...
108
120
  ```
109
121
 
122
+ **Important**: The `kaimon_id` field links local files to remote documents. Don't remove it!
123
+ - When pushing: Files with `kaimon_id` update existing documents
124
+ - When pushing: Files without `kaimon_id` create new documents
125
+ - The CLI automatically adds `kaimon_id` to new files after first push
126
+
127
+ ## Smart Sync
128
+
129
+ Both `pull` and `push` use **timestamp-based smart sync** to avoid unnecessary transfers:
130
+
131
+ ### Pull Logic
132
+ - **New documents**: Not in local folder → pull
133
+ - **Updated documents**: Remote newer than local → pull
134
+ - **Up-to-date**: Remote same age or older → skip
135
+
136
+ ### Push Logic
137
+ - **New files**: No `kaimon_id` in frontmatter → create new document
138
+ - **Modified files**: Local newer than remote → push update
139
+ - **Up-to-date**: Remote same age or newer → skip
140
+
141
+ ### Example Output
142
+
143
+ ```bash
144
+ $ kaimon pull
145
+
146
+ Checking authentication... ✓
147
+ Analyzing documents...
148
+
149
+ 📄 Found 3 document(s) to pull:
150
+
151
+ New documents:
152
+ 1. Project Roadmap.md (created 2 hours ago)
153
+
154
+ Updated documents:
155
+ 2. README.md (Local: 2 hours ago, Remote: 30 mins ago)
156
+ 3. Architecture.md (Local: 5 days ago, Remote: 1 day ago)
157
+
158
+ ⏭️ 12 document(s) already up to date
159
+
160
+ 📁 Sync Location
161
+ Will sync to: ./KaimonDocs/
162
+
163
+ Continue? (y/N):
164
+ ```
165
+
110
166
  ## Troubleshooting
111
167
 
112
168
  ### "Not authenticated"
@@ -1 +1 @@
1
- {"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../../src/commands/pull.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,QAAA,MAAM,IAAI,SAeN,CAAC;AAEL,OAAO,EAAE,IAAI,EAAE,CAAC"}
1
+ {"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../../src/commands/pull.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,QAAA,MAAM,IAAI,SAgBN,CAAC;AAEL,OAAO,EAAE,IAAI,EAAE,CAAC"}
@@ -4,12 +4,13 @@ import { requireAuth } from '../utils/requireAuth.js';
4
4
  const pull = new Command('pull')
5
5
  .description('Pull all documents from Kaimon as markdown files')
6
6
  .option('--flat', 'Save documents directly to current folder instead of KaimonDocs/ subfolder')
7
+ .option('-y, --yes', 'Skip confirmation and pull all documents')
7
8
  .action(async (options) => {
8
9
  try {
9
10
  // Validate authentication first
10
11
  await requireAuth();
11
12
  const { pullDocuments } = await import('../utils/syncOperations.js');
12
- await pullDocuments(options.flat);
13
+ await pullDocuments(options.flat, options.yes || false);
13
14
  }
14
15
  catch (error) {
15
16
  console.error(chalk.red('❌ Pull failed:'), error.message);
@@ -1 +1 @@
1
- {"version":3,"file":"pull.js","sourceRoot":"","sources":["../../src/commands/pull.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,MAAM,IAAI,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;KAC7B,WAAW,CAAC,kDAAkD,CAAC;KAC/D,MAAM,CAAC,QAAQ,EAAE,4EAA4E,CAAC;KAC9F,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,IAAI,CAAC;QACH,gCAAgC;QAChC,MAAM,WAAW,EAAE,CAAC;QAEpB,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,4BAA4B,CAAC,CAAC;QACrE,MAAM,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpC,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO,EAAE,IAAI,EAAE,CAAC"}
1
+ {"version":3,"file":"pull.js","sourceRoot":"","sources":["../../src/commands/pull.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,MAAM,IAAI,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;KAC7B,WAAW,CAAC,kDAAkD,CAAC;KAC/D,MAAM,CAAC,QAAQ,EAAE,4EAA4E,CAAC;KAC9F,MAAM,CAAC,WAAW,EAAE,0CAA0C,CAAC;KAC/D,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,IAAI,CAAC;QACH,gCAAgC;QAChC,MAAM,WAAW,EAAE,CAAC;QAEpB,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,4BAA4B,CAAC,CAAC;QACrE,MAAM,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC;IAE1D,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO,EAAE,IAAI,EAAE,CAAC"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Frontmatter parsing utilities for markdown files
3
+ */
4
+ export interface DocumentFrontmatter {
5
+ title?: string;
6
+ kaimon_id?: string;
7
+ created_at?: string;
8
+ updated_at?: string;
9
+ [key: string]: any;
10
+ }
11
+ export interface ParsedMarkdown {
12
+ frontmatter: DocumentFrontmatter;
13
+ markdown: string;
14
+ hasFrontmatter: boolean;
15
+ }
16
+ /**
17
+ * Parse frontmatter from markdown content
18
+ */
19
+ export declare function parseFrontmatter(content: string): ParsedMarkdown;
20
+ /**
21
+ * Generate frontmatter string
22
+ */
23
+ export declare function generateFrontmatter(frontmatter: DocumentFrontmatter): string;
24
+ /**
25
+ * Combine frontmatter and markdown content
26
+ */
27
+ export declare function combineFrontmatterAndMarkdown(frontmatter: DocumentFrontmatter, markdown: string): string;
28
+ //# sourceMappingURL=frontmatter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frontmatter.d.ts","sourceRoot":"","sources":["../../src/utils/frontmatter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,mBAAmB,CAAC;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,OAAO,CAAC;CACzB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,CAkDhE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,mBAAmB,GAAG,MAAM,CAqB5E;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAC3C,WAAW,EAAE,mBAAmB,EAChC,QAAQ,EAAE,MAAM,GACf,MAAM,CAGR"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Frontmatter parsing utilities for markdown files
3
+ */
4
+ /**
5
+ * Parse frontmatter from markdown content
6
+ */
7
+ export function parseFrontmatter(content) {
8
+ const lines = content.split('\n');
9
+ // Check if file starts with ---
10
+ if (lines[0]?.trim() !== '---') {
11
+ return {
12
+ frontmatter: {},
13
+ markdown: content,
14
+ hasFrontmatter: false
15
+ };
16
+ }
17
+ // Find closing ---
18
+ let endIndex = -1;
19
+ for (let i = 1; i < lines.length; i++) {
20
+ if (lines[i]?.trim() === '---') {
21
+ endIndex = i;
22
+ break;
23
+ }
24
+ }
25
+ if (endIndex === -1) {
26
+ // No closing ---, treat as regular markdown
27
+ return {
28
+ frontmatter: {},
29
+ markdown: content,
30
+ hasFrontmatter: false
31
+ };
32
+ }
33
+ // Parse frontmatter (simple YAML parsing for our use case)
34
+ const frontmatter = {};
35
+ const frontmatterLines = lines.slice(1, endIndex);
36
+ for (const line of frontmatterLines) {
37
+ const match = line.match(/^(\w+):\s*"?([^"]+)"?$/);
38
+ if (match) {
39
+ const [, key, value] = match;
40
+ frontmatter[key] = value.replace(/^["']|["']$/g, ''); // Remove quotes
41
+ }
42
+ }
43
+ // Get markdown content (everything after closing ---)
44
+ const markdown = lines.slice(endIndex + 1).join('\n').trim();
45
+ return {
46
+ frontmatter,
47
+ markdown,
48
+ hasFrontmatter: true
49
+ };
50
+ }
51
+ /**
52
+ * Generate frontmatter string
53
+ */
54
+ export function generateFrontmatter(frontmatter) {
55
+ const lines = ['---'];
56
+ // Always put fields in consistent order
57
+ const orderedKeys = ['title', 'kaimon_id', 'created_at', 'updated_at'];
58
+ for (const key of orderedKeys) {
59
+ if (frontmatter[key]) {
60
+ lines.push(`${key}: "${frontmatter[key]}"`);
61
+ }
62
+ }
63
+ // Add any other custom fields
64
+ for (const [key, value] of Object.entries(frontmatter)) {
65
+ if (!orderedKeys.includes(key)) {
66
+ lines.push(`${key}: "${value}"`);
67
+ }
68
+ }
69
+ lines.push('---');
70
+ return lines.join('\n');
71
+ }
72
+ /**
73
+ * Combine frontmatter and markdown content
74
+ */
75
+ export function combineFrontmatterAndMarkdown(frontmatter, markdown) {
76
+ const frontmatterStr = generateFrontmatter(frontmatter);
77
+ return `${frontmatterStr}\n\n${markdown}`;
78
+ }
79
+ //# sourceMappingURL=frontmatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frontmatter.js","sourceRoot":"","sources":["../../src/utils/frontmatter.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"pushOperations.d.ts","sourceRoot":"","sources":["../../src/utils/pushOperations.ts"],"names":[],"mappings":"AAUA,UAAU,WAAW;IACnB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AA+CD;;GAEG;AACH,wBAAsB,aAAa,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgF5E"}
1
+ {"version":3,"file":"pushOperations.d.ts","sourceRoot":"","sources":["../../src/utils/pushOperations.ts"],"names":[],"mappings":"AAYA,UAAU,WAAW;IACnB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AA0FD;;GAEG;AACH,wBAAsB,aAAa,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4T5E"}
@@ -2,8 +2,11 @@ import fs from 'fs';
2
2
  import path from 'path';
3
3
  import chalk from 'chalk';
4
4
  import ora from 'ora';
5
+ import { getSupabaseClient } from './supabaseClient.js';
5
6
  import { loadConfig } from './config.js';
6
7
  import { ensureValidToken } from './tokenRefresh.js';
8
+ import { parseFrontmatter, combineFrontmatterAndMarkdown } from './frontmatter.js';
9
+ import { markdownToBlocknote } from './markdown.js';
7
10
  const BUCKET_NAME = 'user-documents';
8
11
  /**
9
12
  * Find all markdown files in current directory
@@ -45,6 +48,26 @@ function findMarkdownFiles(dir = process.cwd()) {
45
48
  function getDocumentPath(userId, documentId) {
46
49
  return `users/${userId}/documents/${documentId}/latest.json`;
47
50
  }
51
+ /**
52
+ * Format relative time (e.g., "2 hours ago", "3 days ago")
53
+ */
54
+ function formatRelativeTime(date) {
55
+ const now = new Date();
56
+ const diffMs = now.getTime() - date.getTime();
57
+ const diffMins = Math.floor(diffMs / 60000);
58
+ const diffHours = Math.floor(diffMs / 3600000);
59
+ const diffDays = Math.floor(diffMs / 86400000);
60
+ if (diffMins < 1)
61
+ return 'just now';
62
+ if (diffMins < 60)
63
+ return `${diffMins} min${diffMins > 1 ? 's' : ''} ago`;
64
+ if (diffHours < 24)
65
+ return `${diffHours} hour${diffHours > 1 ? 's' : ''} ago`;
66
+ if (diffDays < 30)
67
+ return `${diffDays} day${diffDays > 1 ? 's' : ''} ago`;
68
+ const diffMonths = Math.floor(diffDays / 30);
69
+ return `${diffMonths} month${diffMonths > 1 ? 's' : ''} ago`;
70
+ }
48
71
  /**
49
72
  * Push markdown files to Kaimon
50
73
  */
@@ -66,31 +89,147 @@ export async function pushDocuments(options = {}) {
66
89
  if (!globalConfig.access_token) {
67
90
  throw new Error('Not authenticated');
68
91
  }
92
+ // Get Supabase client
93
+ const supabase = getSupabaseClient();
94
+ // Get current user ID
95
+ const { data: { user }, error: userError } = await supabase.auth.getUser();
96
+ if (userError || !user) {
97
+ throw new Error('Failed to get user info');
98
+ }
99
+ const userId = user.id;
69
100
  // Find markdown files
70
- let filesToPush = options.files || [];
71
- if (filesToPush.length === 0) {
101
+ let filePaths = options.files || [];
102
+ if (filePaths.length === 0) {
72
103
  // Auto-find all markdown files in current directory
73
- filesToPush = findMarkdownFiles();
74
- if (filesToPush.length === 0) {
104
+ filePaths = findMarkdownFiles();
105
+ if (filePaths.length === 0) {
75
106
  spinner.warn(chalk.yellow('No markdown files found in current directory'));
76
107
  console.log(chalk.dim('Create some .md files first\n'));
77
108
  return;
78
109
  }
79
110
  }
111
+ spinner.text = 'Analyzing files...';
112
+ // Parse all local files
113
+ const filesToProcess = [];
114
+ for (const relPath of filePaths) {
115
+ try {
116
+ const fullPath = path.resolve(relPath);
117
+ const content = fs.readFileSync(fullPath, 'utf-8');
118
+ const { frontmatter, markdown } = parseFrontmatter(content);
119
+ const stats = fs.statSync(fullPath);
120
+ const title = frontmatter.title || path.basename(fullPath, '.md');
121
+ filesToProcess.push({
122
+ path: relPath,
123
+ kaimonId: frontmatter.kaimon_id,
124
+ title,
125
+ mtime: stats.mtime,
126
+ markdown,
127
+ frontmatter
128
+ });
129
+ }
130
+ catch (error) {
131
+ // Skip files that can't be read
132
+ continue;
133
+ }
134
+ }
135
+ if (filesToProcess.length === 0) {
136
+ spinner.warn(chalk.yellow('No valid markdown files to push'));
137
+ return;
138
+ }
139
+ // Fetch remote documents by kaimon_id
140
+ const kaimonIds = filesToProcess
141
+ .filter(f => f.kaimonId)
142
+ .map(f => f.kaimonId);
143
+ let remoteDocs = [];
144
+ if (kaimonIds.length > 0) {
145
+ const { data, error } = await supabase
146
+ .from('user_documents')
147
+ .select('*')
148
+ .in('id', kaimonIds);
149
+ if (!error && data) {
150
+ remoteDocs = data;
151
+ }
152
+ }
153
+ const remoteMap = new Map(remoteDocs.map(doc => [doc.id, doc]));
154
+ // Determine what to push based on timestamps
155
+ const toPush = [];
156
+ const toSkip = [];
157
+ for (const file of filesToProcess) {
158
+ if (!file.kaimonId) {
159
+ // No kaimon_id = new document
160
+ toPush.push({ ...file, action: 'create', localTime: file.mtime });
161
+ }
162
+ else {
163
+ const remote = remoteMap.get(file.kaimonId);
164
+ if (!remote) {
165
+ // kaimon_id exists but doc was deleted remotely - recreate
166
+ toPush.push({ ...file, action: 'create', localTime: file.mtime, wasDeleted: true });
167
+ }
168
+ else {
169
+ const remoteTime = new Date(remote.updated_at);
170
+ if (file.mtime > remoteTime) {
171
+ // Local is newer - push it
172
+ toPush.push({
173
+ ...file,
174
+ action: 'update',
175
+ localTime: file.mtime,
176
+ remoteTime
177
+ });
178
+ }
179
+ else {
180
+ // Remote is same or newer - skip
181
+ toSkip.push(file);
182
+ }
183
+ }
184
+ }
185
+ }
80
186
  spinner.stop();
81
- // Show files and ask for confirmation (unless -y flag)
82
- if (!options.skipConfirmation) {
83
- console.log(chalk.blue('\n📄 Files to push:'));
84
- filesToPush.forEach((file, idx) => {
85
- console.log(chalk.gray(` ${idx + 1}. ${file}`));
187
+ // If nothing to push, we're done
188
+ if (toPush.length === 0) {
189
+ console.log(chalk.green(`\n All ${filesToProcess.length} file(s) are up to date!`));
190
+ console.log(chalk.dim('No changes to push.\n'));
191
+ return;
192
+ }
193
+ // Show preview
194
+ console.log(chalk.blue(`\n📄 Found ${toPush.length} file(s) to push:\n`));
195
+ const newFiles = toPush.filter(item => item.action === 'create' && !item.wasDeleted);
196
+ const updatedFiles = toPush.filter(item => item.action === 'update');
197
+ const recreatedFiles = toPush.filter(item => item.action === 'create' && item.wasDeleted);
198
+ if (newFiles.length > 0) {
199
+ console.log(chalk.cyan('New documents:'));
200
+ newFiles.forEach((item, idx) => {
201
+ console.log(chalk.gray(` ${idx + 1}. ${item.path} (will create)`));
202
+ });
203
+ console.log();
204
+ }
205
+ if (updatedFiles.length > 0) {
206
+ console.log(chalk.cyan('Updated documents:'));
207
+ updatedFiles.forEach((item, idx) => {
208
+ const localTime = formatRelativeTime(item.localTime);
209
+ const remoteTime = formatRelativeTime(item.remoteTime);
210
+ console.log(chalk.gray(` ${idx + 1}. ${item.path} (Local: ${localTime}, Remote: ${remoteTime})`));
86
211
  });
212
+ console.log();
213
+ }
214
+ if (recreatedFiles.length > 0) {
215
+ console.log(chalk.cyan('Recreating deleted documents:'));
216
+ recreatedFiles.forEach((item, idx) => {
217
+ console.log(chalk.gray(` ${idx + 1}. ${item.path} (was deleted remotely)`));
218
+ });
219
+ console.log();
220
+ }
221
+ if (toSkip.length > 0) {
222
+ console.log(chalk.dim(`⏭️ ${toSkip.length} file(s) already up to date\n`));
223
+ }
224
+ // Show confirmation before pushing (unless -y flag)
225
+ if (!options.skipConfirmation) {
87
226
  const readline = await import('readline');
88
227
  const rl = readline.createInterface({
89
228
  input: process.stdin,
90
229
  output: process.stdout
91
230
  });
92
231
  const answer = await new Promise((resolve) => {
93
- rl.question(chalk.cyan(`\nPush ${filesToPush.length} file(s)? (y/N): `), (ans) => {
232
+ rl.question(chalk.cyan(`Push ${toPush.length} file(s)? (y/N): `), (ans) => {
94
233
  rl.close();
95
234
  resolve(ans);
96
235
  });
@@ -101,15 +240,99 @@ export async function pushDocuments(options = {}) {
101
240
  }
102
241
  }
103
242
  spinner.start();
104
- spinner.text = `Pushing ${filesToPush.length} file(s) to Kaimon...`;
105
- // TODO: Implement actual push logic
106
- // This would involve:
107
- // 1. Reading each .md file
108
- // 2. Creating document records in database
109
- // 3. Uploading content to Supabase Storage
110
- // 4. Handling conflicts (existing docs)
111
- spinner.succeed(chalk.green(`✅ Push functionality coming soon!`));
112
- console.log(chalk.dim(`Ready to push ${filesToPush.length} file(s) when implemented\n`));
243
+ spinner.text = `Pushing ${toPush.length} file(s)...`;
244
+ let successCount = 0;
245
+ let errorCount = 0;
246
+ const errors = [];
247
+ // Push each file
248
+ for (const item of toPush) {
249
+ try {
250
+ // Convert markdown to BlockNote JSON
251
+ const blocks = markdownToBlocknote(item.markdown);
252
+ const content = {
253
+ type: 'blocknote',
254
+ content: blocks
255
+ };
256
+ if (item.action === 'create') {
257
+ // Create new document
258
+ const { data: newDoc, error: createError } = await supabase
259
+ .from('user_documents')
260
+ .insert({
261
+ user_id: userId,
262
+ title: item.title
263
+ })
264
+ .select()
265
+ .single();
266
+ if (createError || !newDoc) {
267
+ throw new Error(createError?.message || 'Failed to create document');
268
+ }
269
+ // Upload content to storage
270
+ const documentPath = getDocumentPath(userId, newDoc.id);
271
+ const jsonContent = JSON.stringify(content, null, 2);
272
+ const { error: uploadError } = await supabase.storage
273
+ .from(BUCKET_NAME)
274
+ .upload(documentPath, new Blob([jsonContent], { type: 'application/json' }), {
275
+ upsert: true
276
+ });
277
+ if (uploadError) {
278
+ throw new Error(uploadError.message);
279
+ }
280
+ // Update local file frontmatter with new kaimon_id
281
+ const updatedFrontmatter = {
282
+ ...item.frontmatter,
283
+ title: item.title,
284
+ kaimon_id: newDoc.id,
285
+ created_at: newDoc.created_at,
286
+ updated_at: newDoc.updated_at
287
+ };
288
+ const updatedContent = combineFrontmatterAndMarkdown(updatedFrontmatter, item.markdown);
289
+ fs.writeFileSync(item.path, updatedContent, 'utf-8');
290
+ }
291
+ else {
292
+ // Update existing document
293
+ const documentId = item.kaimonId;
294
+ // Update database record
295
+ const { error: updateError } = await supabase
296
+ .from('user_documents')
297
+ .update({
298
+ title: item.title,
299
+ updated_at: new Date().toISOString()
300
+ })
301
+ .eq('id', documentId);
302
+ if (updateError) {
303
+ throw new Error(updateError.message);
304
+ }
305
+ // Upload content to storage
306
+ const documentPath = getDocumentPath(userId, documentId);
307
+ const jsonContent = JSON.stringify(content, null, 2);
308
+ const { error: uploadError } = await supabase.storage
309
+ .from(BUCKET_NAME)
310
+ .upload(documentPath, new Blob([jsonContent], { type: 'application/json' }), {
311
+ upsert: true
312
+ });
313
+ if (uploadError) {
314
+ throw new Error(uploadError.message);
315
+ }
316
+ }
317
+ successCount++;
318
+ }
319
+ catch (error) {
320
+ errorCount++;
321
+ errors.push(`${item.path}: ${error.message}`);
322
+ }
323
+ }
324
+ // Show results
325
+ const createCount = toPush.filter(i => i.action === 'create').length;
326
+ const updateCount = toPush.filter(i => i.action === 'update').length;
327
+ spinner.succeed(chalk.green(`✅ Pushed ${successCount} document(s) (${createCount} new, ${updateCount} updated)`));
328
+ if (toSkip.length > 0) {
329
+ console.log(chalk.dim(`⏭️ Skipped ${toSkip.length} up-to-date file(s)`));
330
+ }
331
+ if (errorCount > 0) {
332
+ console.log(chalk.yellow(`\n⚠️ ${errorCount} error(s) occurred:`));
333
+ errors.forEach(err => console.log(chalk.dim(` - ${err}`)));
334
+ }
335
+ console.log();
113
336
  }
114
337
  catch (error) {
115
338
  spinner.fail(chalk.red('Failed to push documents'));
@@ -1 +1 @@
1
- {"version":3,"file":"pushOperations.js","sourceRoot":"","sources":["../../src/utils/pushOperations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pushOperations.js","sourceRoot":"","sources":["../../src/utils/pushOperations.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,9 @@
1
1
  /**
2
2
  * Pull all documents from Kaimon and save as markdown files
3
3
  * @param flat - If true, save directly to current folder; if false, create KaimonDocs/ subfolder
4
+ * @param skipConfirmation - If true, skip confirmation prompt
4
5
  */
5
- export declare function pullDocuments(flat?: boolean): Promise<void>;
6
+ export declare function pullDocuments(flat?: boolean, skipConfirmation?: boolean): Promise<void>;
6
7
  /**
7
8
  * Push local markdown files to Kaimon
8
9
  * TODO: Implement in Phase 3
@@ -1 +1 @@
1
- {"version":3,"file":"syncOperations.d.ts","sourceRoot":"","sources":["../../src/utils/syncOperations.ts"],"names":[],"mappings":"AA8CA;;;GAGG;AACH,wBAAsB,aAAa,CAAC,IAAI,GAAE,OAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CA+JxE;AAED;;;GAGG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAEnD;AAED;;;GAGG;AACH,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAE9C"}
1
+ {"version":3,"file":"syncOperations.d.ts","sourceRoot":"","sources":["../../src/utils/syncOperations.ts"],"names":[],"mappings":"AAqHA;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,IAAI,GAAE,OAAe,EAAE,gBAAgB,GAAE,OAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAmO3G;AAED;;;GAGG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAEnD;AAED;;;GAGG;AACH,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAE9C"}
@@ -6,6 +6,7 @@ import { getSupabaseClient } from './supabaseClient.js';
6
6
  import { loadConfig } from './config.js';
7
7
  import { blocknoteToMarkdown } from './markdown.js';
8
8
  import { ensureValidToken } from './tokenRefresh.js';
9
+ import { parseFrontmatter, combineFrontmatterAndMarkdown } from './frontmatter.js';
9
10
  const BUCKET_NAME = 'user-documents';
10
11
  /**
11
12
  * Get document path in Supabase Storage
@@ -23,11 +24,64 @@ function sanitizeFilename(filename) {
23
24
  .replace(/-+/g, '-') // Collapse multiple hyphens
24
25
  .trim();
25
26
  }
27
+ /**
28
+ * Format relative time (e.g., "2 hours ago", "3 days ago")
29
+ */
30
+ function formatRelativeTime(date) {
31
+ const now = new Date();
32
+ const diffMs = now.getTime() - date.getTime();
33
+ const diffMins = Math.floor(diffMs / 60000);
34
+ const diffHours = Math.floor(diffMs / 3600000);
35
+ const diffDays = Math.floor(diffMs / 86400000);
36
+ if (diffMins < 1)
37
+ return 'just now';
38
+ if (diffMins < 60)
39
+ return `${diffMins} min${diffMins > 1 ? 's' : ''} ago`;
40
+ if (diffHours < 24)
41
+ return `${diffHours} hour${diffHours > 1 ? 's' : ''} ago`;
42
+ if (diffDays < 30)
43
+ return `${diffDays} day${diffDays > 1 ? 's' : ''} ago`;
44
+ const diffMonths = Math.floor(diffDays / 30);
45
+ return `${diffMonths} month${diffMonths > 1 ? 's' : ''} ago`;
46
+ }
47
+ /**
48
+ * Scan local directory for markdown files and build a map by kaimon_id
49
+ */
50
+ function scanLocalFiles(docsDir) {
51
+ const localMap = new Map();
52
+ if (!fs.existsSync(docsDir)) {
53
+ return localMap;
54
+ }
55
+ const files = fs.readdirSync(docsDir);
56
+ for (const file of files) {
57
+ if (!file.endsWith('.md'))
58
+ continue;
59
+ const filepath = path.join(docsDir, file);
60
+ try {
61
+ const content = fs.readFileSync(filepath, 'utf-8');
62
+ const { frontmatter } = parseFrontmatter(content);
63
+ const stats = fs.statSync(filepath);
64
+ if (frontmatter.kaimon_id) {
65
+ localMap.set(frontmatter.kaimon_id, {
66
+ path: filepath,
67
+ mtime: stats.mtime,
68
+ frontmatter
69
+ });
70
+ }
71
+ }
72
+ catch (error) {
73
+ // Skip files that can't be read
74
+ continue;
75
+ }
76
+ }
77
+ return localMap;
78
+ }
26
79
  /**
27
80
  * Pull all documents from Kaimon and save as markdown files
28
81
  * @param flat - If true, save directly to current folder; if false, create KaimonDocs/ subfolder
82
+ * @param skipConfirmation - If true, skip confirmation prompt
29
83
  */
30
- export async function pullDocuments(flat = false) {
84
+ export async function pullDocuments(flat = false, skipConfirmation = false) {
31
85
  const spinner = ora('Fetching documents from Kaimon...').start();
32
86
  try {
33
87
  // Ensure token is valid (refresh if needed)
@@ -45,35 +99,14 @@ export async function pullDocuments(flat = false) {
45
99
  if (!globalConfig.access_token) {
46
100
  throw new Error('Not authenticated');
47
101
  }
48
- spinner.stop();
49
- // Show confirmation before syncing
50
- const readline = await import('readline');
51
- const rl = readline.createInterface({
52
- input: process.stdin,
53
- output: process.stdout
54
- });
55
102
  const currentFolder = process.cwd();
56
103
  const docsDir = flat
57
104
  ? currentFolder
58
105
  : path.join(currentFolder, 'KaimonDocs');
59
- console.log(chalk.blue('\n📁 Sync Location'));
60
- console.log(chalk.gray(` Current folder: ${currentFolder}`));
61
- console.log(chalk.gray(` Will sync to: ${docsDir}\n`));
62
- const answer = await new Promise((resolve) => {
63
- rl.question(chalk.cyan('Continue? (y/N): '), (ans) => {
64
- rl.close();
65
- resolve(ans);
66
- });
67
- });
68
- if (answer.toLowerCase() !== 'y' && answer.toLowerCase() !== 'yes') {
69
- console.log(chalk.yellow('\n⚠️ Sync cancelled.\n'));
70
- return;
71
- }
72
- spinner.start();
73
106
  // Get Supabase client
74
107
  const supabase = getSupabaseClient();
75
108
  // Fetch all user documents from database
76
- spinner.text = 'Querying database...';
109
+ spinner.text = 'Analyzing documents...';
77
110
  const { data: documents, error: dbError } = await supabase
78
111
  .from('user_documents')
79
112
  .select('*')
@@ -86,7 +119,79 @@ export async function pullDocuments(flat = false) {
86
119
  console.log(chalk.dim('Create some documents first at kaimon.ai\n'));
87
120
  return;
88
121
  }
89
- spinner.text = `Found ${documents.length} document(s), downloading...`;
122
+ // Scan local files to build map
123
+ const localMap = scanLocalFiles(docsDir);
124
+ // Determine what to pull based on timestamps
125
+ const toPull = [];
126
+ const toSkip = [];
127
+ for (const doc of documents) {
128
+ const local = localMap.get(doc.id);
129
+ const remoteTime = new Date(doc.updated_at);
130
+ if (!local) {
131
+ // New document - pull it
132
+ toPull.push({ doc, reason: 'new', remoteTime });
133
+ }
134
+ else if (remoteTime > local.mtime) {
135
+ // Remote is newer - pull it
136
+ toPull.push({ doc, reason: 'updated', localTime: local.mtime, remoteTime });
137
+ }
138
+ else {
139
+ // Local is up-to-date or newer - skip
140
+ toSkip.push(doc);
141
+ }
142
+ }
143
+ spinner.stop();
144
+ // If nothing to pull, we're done
145
+ if (toPull.length === 0) {
146
+ console.log(chalk.green(`\n✅ All ${documents.length} document(s) are up to date!`));
147
+ console.log(chalk.dim('No changes to pull.\n'));
148
+ return;
149
+ }
150
+ // Show preview
151
+ console.log(chalk.blue(`\n📄 Found ${toPull.length} document(s) to pull:\n`));
152
+ const newDocs = toPull.filter(item => item.reason === 'new');
153
+ const updatedDocs = toPull.filter(item => item.reason === 'updated');
154
+ if (newDocs.length > 0) {
155
+ console.log(chalk.cyan('New documents:'));
156
+ newDocs.forEach((item, idx) => {
157
+ console.log(chalk.gray(` ${idx + 1}. ${item.doc.title} (created ${formatRelativeTime(item.remoteTime)})`));
158
+ });
159
+ console.log();
160
+ }
161
+ if (updatedDocs.length > 0) {
162
+ console.log(chalk.cyan('Updated documents:'));
163
+ updatedDocs.forEach((item, idx) => {
164
+ const localTime = formatRelativeTime(item.localTime);
165
+ const remoteTime = formatRelativeTime(item.remoteTime);
166
+ console.log(chalk.gray(` ${idx + 1}. ${item.doc.title} (Local: ${localTime}, Remote: ${remoteTime})`));
167
+ });
168
+ console.log();
169
+ }
170
+ if (toSkip.length > 0) {
171
+ console.log(chalk.dim(`⏭️ ${toSkip.length} document(s) already up to date\n`));
172
+ }
173
+ console.log(chalk.blue('📁 Sync Location'));
174
+ console.log(chalk.gray(` Will sync to: ${flat ? '.' : './KaimonDocs'}\n`));
175
+ // Show confirmation before syncing (unless --yes flag)
176
+ if (!skipConfirmation) {
177
+ const readline = await import('readline');
178
+ const rl = readline.createInterface({
179
+ input: process.stdin,
180
+ output: process.stdout
181
+ });
182
+ const answer = await new Promise((resolve) => {
183
+ rl.question(chalk.cyan('Continue? (y/N): '), (ans) => {
184
+ rl.close();
185
+ resolve(ans);
186
+ });
187
+ });
188
+ if (answer.toLowerCase() !== 'y' && answer.toLowerCase() !== 'yes') {
189
+ console.log(chalk.yellow('\n⚠️ Pull cancelled.\n'));
190
+ return;
191
+ }
192
+ }
193
+ spinner.start();
194
+ spinner.text = `Pulling ${toPull.length} document(s)...`;
90
195
  // Create docs directory if it doesn't exist
91
196
  if (!fs.existsSync(docsDir)) {
92
197
  fs.mkdirSync(docsDir, { recursive: true });
@@ -94,8 +199,9 @@ export async function pullDocuments(flat = false) {
94
199
  let successCount = 0;
95
200
  let errorCount = 0;
96
201
  const errors = [];
97
- // Download each document
98
- for (const doc of documents) {
202
+ // Download only documents in toPull array
203
+ for (const item of toPull) {
204
+ const doc = item.doc;
99
205
  try {
100
206
  const documentPath = getDocumentPath(doc.user_id, doc.id);
101
207
  // Download from Supabase Storage
@@ -105,7 +211,8 @@ export async function pullDocuments(flat = false) {
105
211
  if (downloadError) {
106
212
  // Handle missing file gracefully
107
213
  if (downloadError.message.includes('not found')) {
108
- spinner.warn(chalk.yellow(`⚠️ Skipping "${doc.title}" - file not found in storage`));
214
+ errors.push(`${doc.title}: file not found in storage`);
215
+ errorCount++;
109
216
  continue;
110
217
  }
111
218
  throw downloadError;
@@ -122,25 +229,26 @@ export async function pullDocuments(flat = false) {
122
229
  markdown = content.content;
123
230
  }
124
231
  else {
125
- spinner.warn(chalk.yellow(`⚠️ Skipping "${doc.title}" - unsupported format`));
232
+ errors.push(`${doc.title}: unsupported format`);
233
+ errorCount++;
126
234
  continue;
127
235
  }
128
236
  // Generate filename
129
237
  const filename = sanitizeFilename(doc.title) + '.md';
130
238
  const filepath = path.join(docsDir, filename);
131
- // Add frontmatter with metadata
132
- const frontmatter = [
133
- '---',
134
- `title: "${doc.title}"`,
135
- `kaimon_id: "${doc.id}"`,
136
- `created_at: "${doc.created_at}"`,
137
- `updated_at: "${doc.updated_at}"`,
138
- '---',
139
- '',
140
- markdown
141
- ].join('\n');
239
+ // Create frontmatter
240
+ const frontmatterData = {
241
+ title: doc.title,
242
+ kaimon_id: doc.id,
243
+ created_at: doc.created_at,
244
+ updated_at: doc.updated_at
245
+ };
246
+ const fullContent = combineFrontmatterAndMarkdown(frontmatterData, markdown);
142
247
  // Write to file
143
- fs.writeFileSync(filepath, frontmatter, 'utf-8');
248
+ fs.writeFileSync(filepath, fullContent, 'utf-8');
249
+ // Update file mtime to match remote updated_at (for accurate next sync)
250
+ const remoteTime = new Date(doc.updated_at);
251
+ fs.utimesSync(filepath, remoteTime, remoteTime);
144
252
  successCount++;
145
253
  }
146
254
  catch (error) {
@@ -149,13 +257,15 @@ export async function pullDocuments(flat = false) {
149
257
  }
150
258
  }
151
259
  // Show results
152
- const relativeDocsDir = flat ? '.' : './KaimonDocs';
153
- spinner.succeed(chalk.green(`✅ Downloaded ${successCount} document(s) to ${relativeDocsDir}/`));
260
+ spinner.succeed(chalk.green(`✅ Pulled ${successCount} document(s)`));
261
+ if (toSkip.length > 0) {
262
+ console.log(chalk.dim(`⏭️ Skipped ${toSkip.length} up-to-date document(s)`));
263
+ }
154
264
  if (errorCount > 0) {
155
265
  console.log(chalk.yellow(`\n⚠️ ${errorCount} error(s) occurred:`));
156
266
  errors.forEach(err => console.log(chalk.dim(` - ${err}`)));
157
267
  }
158
- console.log(chalk.gray(`\nLast synced: ${new Date().toLocaleString()}\n`));
268
+ console.log();
159
269
  }
160
270
  catch (error) {
161
271
  spinner.fail(chalk.red('Failed to pull documents'));
@@ -1 +1 @@
1
- {"version":3,"file":"syncOperations.js","sourceRoot":"","sources":["../../src/utils/syncOperations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"syncOperations.js","sourceRoot":"","sources":["../../src/utils/syncOperations.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kaimon-cli",
3
- "version": "0.1.41",
3
+ "version": "0.1.43",
4
4
  "description": "CLI tool to sync Kaimon files (.md) with your codebase",
5
5
  "type": "module",
6
6
  "bin": {