kaimon-cli 0.1.2 → 0.1.4

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 (57) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +79 -32
  3. package/bin/index.js +1 -1
  4. package/dist/commands/config.d.ts.map +1 -1
  5. package/dist/commands/config.js +13 -4
  6. package/dist/commands/config.js.map +1 -1
  7. package/dist/commands/pull.d.ts +4 -0
  8. package/dist/commands/pull.d.ts.map +1 -0
  9. package/dist/commands/pull.js +20 -0
  10. package/dist/commands/pull.js.map +1 -0
  11. package/dist/commands/push.d.ts +4 -0
  12. package/dist/commands/push.d.ts.map +1 -0
  13. package/dist/commands/push.js +24 -0
  14. package/dist/commands/push.js.map +1 -0
  15. package/dist/commands/sync.d.ts.map +1 -1
  16. package/dist/commands/sync.js +3 -14
  17. package/dist/commands/sync.js.map +1 -1
  18. package/dist/config/constants.d.ts +1 -1
  19. package/dist/config/constants.d.ts.map +1 -1
  20. package/dist/config/constants.js +7 -3
  21. package/dist/config/constants.js.map +1 -1
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +4 -0
  24. package/dist/index.js.map +1 -1
  25. package/dist/utils/markdown.d.ts +21 -0
  26. package/dist/utils/markdown.d.ts.map +1 -0
  27. package/dist/utils/markdown.js +180 -0
  28. package/dist/utils/markdown.js.map +1 -0
  29. package/dist/utils/projectConfig.d.ts +25 -0
  30. package/dist/utils/projectConfig.d.ts.map +1 -0
  31. package/dist/utils/projectConfig.js +160 -0
  32. package/dist/utils/projectConfig.js.map +1 -0
  33. package/dist/utils/pushOperations.d.ts +10 -0
  34. package/dist/utils/pushOperations.d.ts.map +1 -0
  35. package/dist/utils/pushOperations.js +119 -0
  36. package/dist/utils/pushOperations.js.map +1 -0
  37. package/dist/utils/supabaseClient.d.ts +11 -0
  38. package/dist/utils/supabaseClient.d.ts.map +1 -0
  39. package/dist/utils/supabaseClient.js +43 -0
  40. package/dist/utils/supabaseClient.js.map +1 -0
  41. package/dist/utils/syncOperations.d.ts +16 -0
  42. package/dist/utils/syncOperations.d.ts.map +1 -0
  43. package/dist/utils/syncOperations.js +179 -0
  44. package/dist/utils/syncOperations.js.map +1 -0
  45. package/dist/utils/tokenRefresh.d.ts +17 -0
  46. package/dist/utils/tokenRefresh.d.ts.map +1 -0
  47. package/dist/utils/tokenRefresh.js +80 -0
  48. package/dist/utils/tokenRefresh.js.map +1 -0
  49. package/package.json +15 -8
  50. package/src/commands/auth.ts +0 -170
  51. package/src/commands/config.ts +0 -72
  52. package/src/commands/sync.ts +0 -30
  53. package/src/config/constants.ts +0 -27
  54. package/src/index.ts +0 -20
  55. package/src/utils/config.ts +0 -81
  56. package/src/utils/requireAuth.ts +0 -65
  57. package/tsconfig.json +0 -21
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Kaimon
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -8,65 +8,112 @@
8
8
  npm install -g kaimon-cli
9
9
  ```
10
10
 
11
- ## Usage
11
+ ## Quick Start
12
12
 
13
- ### Authenticate
13
+ ```bash
14
+ # 1. Authenticate with Kaimon
15
+ kaimon auth login
16
+
17
+ # 2. Navigate to your project directory
18
+ cd my-project
19
+
20
+ # 3. Pull your documents as markdown files or push to Kaimon
21
+ kaimon pull
22
+ OR
23
+ kaimon push
24
+ ```
25
+
26
+ Your documents will be downloaded to `./KaimonDocs/` as markdown files with metadata frontmatter.
27
+
28
+ ## Commands
29
+
30
+ ### Authentication
14
31
 
15
32
  ```bash
16
- # Login to your Kaimon account
33
+ # Login to your Kaimon account (opens browser)
17
34
  kaimon auth login
18
35
 
19
- # Check your auth status
36
+ # Check authentication status
20
37
  kaimon auth status
21
38
 
39
+ # Show full token (security risk!)
40
+ kaimon auth status --show-token
41
+
22
42
  # Logout
23
43
  kaimon auth logout
24
44
  ```
25
45
 
26
- ### Sync Documentation
46
+ **How login works:**
47
+ 1. Opens browser to Kaimon auth page
48
+ 2. You log in and copy the access token
49
+ 3. Paste token into CLI (hidden input)
50
+ 4. Token saved to `~/.kaimon/config.json`
27
51
 
28
- ```bash
29
- # Pull documentation from Kaimon
30
- kaimon sync --pull
52
+ ### Project Setup
31
53
 
32
- # Push local documentation to Kaimon
33
- kaimon sync --push
54
+ ```bash
55
+ # Initialize current directory for syncing
56
+ kaimon config init
34
57
 
35
- # See what would change
36
- kaimon sync --diff
58
+ # View project configuration
59
+ kaimon config show
37
60
  ```
38
61
 
39
- ### Configuration
62
+ ### Syncing Documents
40
63
 
41
64
  ```bash
42
- # Initialize CLI in your project
43
- kaimon config init
65
+ # Download all documents from Kaimon as markdown
66
+ kaimon pull
44
67
 
45
- # View configuration
46
- kaimon config show
68
+ # Download documents to current folder (no KaimonDocs subfolder)
69
+ kaimon pull --flat
70
+
71
+ # Upload local markdown files to Kaimon
72
+ kaimon push
73
+
74
+ # Push specific files only
75
+ kaimon push doc1.md doc2.md
76
+
77
+ # Push without confirmation
78
+ kaimon push -y
47
79
 
48
- # Set a configuration value
49
- kaimon config set key value
80
+ # Bidirectional sync (coming soon)
81
+ kaimon sync
50
82
  ```
51
83
 
52
- ## Features
84
+ **Pull behavior:**
85
+ - Default: Creates `./KaimonDocs/` subfolder and downloads documents there
86
+ - `--flat`: Downloads documents directly to current folder (no subfolder)
53
87
 
54
- - 🔐 Secure authentication with Kaimon
55
- - 📁 Bidirectional sync (pull/push)
56
- - 🔍 Diff preview before sync
57
- - ⚙️ Project-level configuration
58
- - 🚀 Fast and lightweight
88
+ **Push behavior:**
89
+ - Default: Finds all `.md` files in current folder + subfolders, lists them, asks for confirmation
90
+ - `[files...]`: Push only specific files (e.g., `kaimon push doc1.md readme.md`)
91
+ - `-y, --yes`: Skip confirmation and push all files found
59
92
 
60
- ## Getting Started
93
+ ## Document Format
94
+
95
+ Downloaded markdown files include frontmatter:
96
+
97
+ ```markdown
98
+ ---
99
+ title: "My Document"
100
+ kaimon_id: "abc-123-def-456"
101
+ created_at: "2024-01-15T10:00:00Z"
102
+ updated_at: "2024-02-21T15:00:00Z"
103
+ ---
104
+
105
+ # My Document
106
+
107
+ Content here...
108
+ ```
61
109
 
62
- 1. Install the CLI: `npm install -g kaimon-cli`
63
- 2. Login: `kaimon auth login`
64
- 3. Initialize your project: `kaimon config init`
65
- 4. Sync docs: `kaimon sync --pull` or `kaimon sync --push`
110
+ ## Troubleshooting
66
111
 
67
- ## Documentation
112
+ ### "Not authenticated"
113
+ Run `kaimon auth login` to authenticate first.
68
114
 
69
- For more details, visit [kaimon.ai/cli](https://kaimon.ai)
115
+ ### "Authentication expired"
116
+ Run `kaimon auth login` again to refresh your token.
70
117
 
71
118
  ## License
72
119
 
package/bin/index.js CHANGED
@@ -1,4 +1,4 @@
1
- #!/usr/bin/env node
1
+ #!/usr/bin/env node
2
2
 
3
3
  import { fileURLToPath } from 'url';
4
4
  import { dirname } from 'path';
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,QAAA,MAAM,MAAM,SACqC,CAAC;AAkElD,OAAO,EAAE,MAAM,EAAE,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,QAAA,MAAM,MAAM,SACqC,CAAC;AA8ElD,OAAO,EAAE,MAAM,EAAE,CAAC"}
@@ -7,10 +7,19 @@ config
7
7
  .command('init')
8
8
  .description('Initialize .kaimon config in current directory')
9
9
  .action(async () => {
10
- console.log(chalk.blue('⚙️ Config init - coming soon!'));
11
- console.log(chalk.yellow('\n⚠️ Project-level config not yet implemented'));
12
- console.log(chalk.dim('For now, all config is stored globally at:'));
13
- console.log(chalk.dim(` ${getConfigPath()}\n`));
10
+ try {
11
+ const { requireAuth } = await import('../utils/requireAuth.js');
12
+ const { initProjectConfig } = await import('../utils/projectConfig.js');
13
+ // Require authentication first
14
+ await requireAuth();
15
+ console.log(chalk.blue('⚙️ Initializing Kaimon sync in current directory...\n'));
16
+ // Initialize project config (will prompt for workspace selection)
17
+ await initProjectConfig();
18
+ }
19
+ catch (error) {
20
+ console.error(chalk.red('❌ Initialization failed:'), error.message);
21
+ process.exit(1);
22
+ }
14
23
  });
15
24
  config
16
25
  .command('show')
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { Command } from 'commander';
2
+ declare const pull: Command;
3
+ export { pull };
4
+ //# sourceMappingURL=pull.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,20 @@
1
+ import { Command } from 'commander';
2
+ import chalk from 'chalk';
3
+ import { requireAuth } from '../utils/requireAuth.js';
4
+ const pull = new Command('pull')
5
+ .description('Pull all documents from Kaimon as markdown files')
6
+ .option('--flat', 'Save documents directly to current folder instead of KaimonDocs/ subfolder')
7
+ .action(async (options) => {
8
+ try {
9
+ // Validate authentication first
10
+ await requireAuth();
11
+ const { pullDocuments } = await import('../utils/syncOperations.js');
12
+ await pullDocuments(options.flat);
13
+ }
14
+ catch (error) {
15
+ console.error(chalk.red('❌ Pull failed:'), error.message);
16
+ process.exit(1);
17
+ }
18
+ });
19
+ export { pull };
20
+ //# sourceMappingURL=pull.js.map
@@ -0,0 +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"}
@@ -0,0 +1,4 @@
1
+ import { Command } from 'commander';
2
+ declare const push: Command;
3
+ export { push };
4
+ //# sourceMappingURL=push.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../src/commands/push.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,QAAA,MAAM,IAAI,SAmBN,CAAC;AAEL,OAAO,EAAE,IAAI,EAAE,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { Command } from 'commander';
2
+ import chalk from 'chalk';
3
+ import { requireAuth } from '../utils/requireAuth.js';
4
+ const push = new Command('push')
5
+ .description('Push local markdown files to Kaimon')
6
+ .option('-y, --yes', 'Skip confirmation and push all files')
7
+ .arguments('[files...]')
8
+ .action(async (files, options) => {
9
+ try {
10
+ // Validate authentication first
11
+ await requireAuth();
12
+ const { pushDocuments } = await import('../utils/pushOperations.js');
13
+ await pushDocuments({
14
+ files: files.length > 0 ? files : undefined,
15
+ skipConfirmation: options.yes || false
16
+ });
17
+ }
18
+ catch (error) {
19
+ console.error(chalk.red('❌ Push failed:'), error.message);
20
+ process.exit(1);
21
+ }
22
+ });
23
+ export { push };
24
+ //# sourceMappingURL=push.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"push.js","sourceRoot":"","sources":["../../src/commands/push.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,qCAAqC,CAAC;KAClD,MAAM,CAAC,WAAW,EAAE,sCAAsC,CAAC;KAC3D,SAAS,CAAC,YAAY,CAAC;KACvB,MAAM,CAAC,KAAK,EAAE,KAAe,EAAE,OAAO,EAAE,EAAE;IACzC,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;YAClB,KAAK,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;YAC3C,gBAAgB,EAAE,OAAO,CAAC,GAAG,IAAI,KAAK;SACvC,CAAC,CAAC;IAEL,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 +1 @@
1
- {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,QAAA,MAAM,IAAI,SAuBN,CAAC;AAEL,OAAO,EAAE,IAAI,EAAE,CAAC"}
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,QAAA,MAAM,IAAI,SAUN,CAAC;AAEL,OAAO,EAAE,IAAI,EAAE,CAAC"}
@@ -1,22 +1,11 @@
1
1
  import { Command } from 'commander';
2
2
  import chalk from 'chalk';
3
- import { requireAuth } from '../utils/requireAuth.js';
4
3
  const sync = new Command('sync')
5
- .description('Sync Kaimon documentation with your codebase')
6
- .option('--pull', 'Pull docs from Kaimon to local')
7
- .option('--push', 'Push local docs to Kaimon')
8
- .option('--diff', 'Show differences without syncing')
9
- .option('--config <path>', 'Path to sync config file')
10
- .action(async (options) => {
4
+ .description('Bidirectional sync - compare and sync latest changes (coming soon)')
5
+ .action(async () => {
11
6
  try {
12
- // Validate authentication first
13
- const token = await requireAuth();
14
- console.log(chalk.blue('📁 Sync command - coming soon!'));
15
- console.log(chalk.gray(`Authenticated with token: ${token.substring(0, 10)}...`));
16
- console.log(chalk.gray('Options:'), options);
17
- // TODO: Implement sync logic
18
7
  console.log(chalk.yellow('\n⚠️ Sync functionality not yet implemented'));
19
- console.log(chalk.dim('This will sync your documents with Kaimon in the future\n'));
8
+ console.log(chalk.dim('Coming soon! Use "kaimon pull" and "kaimon push" for now.\n'));
20
9
  }
21
10
  catch (error) {
22
11
  console.error(chalk.red('❌ Sync failed:'), error.message);
@@ -1 +1 @@
1
- {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/commands/sync.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,8CAA8C,CAAC;KAC3D,MAAM,CAAC,QAAQ,EAAE,gCAAgC,CAAC;KAClD,MAAM,CAAC,QAAQ,EAAE,2BAA2B,CAAC;KAC7C,MAAM,CAAC,QAAQ,EAAE,kCAAkC,CAAC;KACpD,MAAM,CAAC,iBAAiB,EAAE,0BAA0B,CAAC;KACrD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,IAAI,CAAC;QACH,gCAAgC;QAChC,MAAM,KAAK,GAAG,MAAM,WAAW,EAAE,CAAC;QAElC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,6BAA6B,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QAClF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;QAE7C,6BAA6B;QAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,8CAA8C,CAAC,CAAC,CAAC;QAC1E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC,CAAC;IAEtF,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":"sync.js","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,IAAI,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;KAC7B,WAAW,CAAC,oEAAoE,CAAC;KACjF,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,8CAA8C,CAAC,CAAC,CAAC;QAC1E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC,CAAC;IACxF,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"}
@@ -5,5 +5,5 @@ export declare const CLI_AUTH_PATH = "/cli-auth";
5
5
  export declare const CONFIG_DIR = ".kaimon";
6
6
  export declare const CONFIG_FILE = "config.json";
7
7
  export declare const SUPABASE_URL: string;
8
- export declare const SUPABASE_ANON_KEY: string;
8
+ export declare const SUPABASE_PUBLISHABLE_KEY: string;
9
9
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/config/constants.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,QAAQ,QAAoD,CAAC;AAG1E,eAAO,MAAM,OAAO,0BAA0B,CAAC;AAG/C,eAAO,MAAM,UAAU,QAAO,MAI7B,CAAC;AAGF,eAAO,MAAM,aAAa,cAAc,CAAC;AAGzC,eAAO,MAAM,UAAU,YAAY,CAAC;AACpC,eAAO,MAAM,WAAW,gBAAgB,CAAC;AAGzC,eAAO,MAAM,YAAY,QAAwE,CAAC;AAClG,eAAO,MAAM,iBAAiB,QAA6C,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/config/constants.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,QAAQ,QAAoD,CAAC;AAG1E,eAAO,MAAM,OAAO,0BAA0B,CAAC;AAG/C,eAAO,MAAM,UAAU,QAAO,MAI7B,CAAC;AAGF,eAAO,MAAM,aAAa,cAAc,CAAC;AAGzC,eAAO,MAAM,UAAU,YAAY,CAAC;AACpC,eAAO,MAAM,WAAW,gBAAgB,CAAC;AAKzC,eAAO,MAAM,YAAY,QAC4C,CAAC;AAEtE,eAAO,MAAM,wBAAwB,QACkD,CAAC"}
@@ -16,7 +16,11 @@ export const CLI_AUTH_PATH = '/cli-auth';
16
16
  // Config file location
17
17
  export const CONFIG_DIR = '.kaimon';
18
18
  export const CONFIG_FILE = 'config.json';
19
- // Supabase config (will be same as web app)
20
- export const SUPABASE_URL = process.env.KAIMON_SUPABASE_URL || 'https://your-project.supabase.co';
21
- export const SUPABASE_ANON_KEY = process.env.KAIMON_SUPABASE_ANON_KEY || '';
19
+ // Supabase config (same as web app - PUBLIC and safe to expose)
20
+ // These are the SAME credentials your web app uses in VITE_SUPABASE_URL and VITE_SUPABASE_PUBLISHABLE_KEY
21
+ // Users can override with environment variables if self-hosting
22
+ export const SUPABASE_URL = process.env.VITE_SUPABASE_URL ||
23
+ 'https://lzcvtmboqtzeblhqvmxk.supabase.co'; // ← Replace with your actual Supabase URL
24
+ export const SUPABASE_PUBLISHABLE_KEY = process.env.VITE_SUPABASE_PUBLISHABLE_KEY ||
25
+ 'sb_publishable_Uo40YIsQX-juZuC7DV9oHw_suiVu2Kv'; // ← Replace with your actual publishable key
22
26
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/config/constants.ts"],"names":[],"mappings":"AAAA,yCAAyC;AAEzC,8CAA8C;AAC9C,gCAAgC;AAChC,uCAAuC;AACvC,MAAM,CAAC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,mBAAmB,CAAC;AAE1E,gCAAgC;AAChC,MAAM,CAAC,MAAM,OAAO,GAAG,uBAAuB,CAAC;AAE/C,6BAA6B;AAC7B,MAAM,CAAC,MAAM,UAAU,GAAG,GAAW,EAAE;IACrC,qCAAqC;IACrC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK,MAAM,CAAC;IAC1F,OAAO,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;AACpC,CAAC,CAAC;AAEF,oBAAoB;AACpB,MAAM,CAAC,MAAM,aAAa,GAAG,WAAW,CAAC;AAEzC,uBAAuB;AACvB,MAAM,CAAC,MAAM,UAAU,GAAG,SAAS,CAAC;AACpC,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAC;AAEzC,4CAA4C;AAC5C,MAAM,CAAC,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,kCAAkC,CAAC;AAClG,MAAM,CAAC,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,EAAE,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/config/constants.ts"],"names":[],"mappings":"AAAA,yCAAyC;AAEzC,8CAA8C;AAC9C,gCAAgC;AAChC,uCAAuC;AACvC,MAAM,CAAC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,mBAAmB,CAAC;AAE1E,gCAAgC;AAChC,MAAM,CAAC,MAAM,OAAO,GAAG,uBAAuB,CAAC;AAE/C,6BAA6B;AAC7B,MAAM,CAAC,MAAM,UAAU,GAAG,GAAW,EAAE;IACrC,qCAAqC;IACrC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK,MAAM,CAAC;IAC1F,OAAO,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;AACpC,CAAC,CAAC;AAEF,oBAAoB;AACpB,MAAM,CAAC,MAAM,aAAa,GAAG,WAAW,CAAC;AAEzC,uBAAuB;AACvB,MAAM,CAAC,MAAM,UAAU,GAAG,SAAS,CAAC;AACpC,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAC;AAEzC,gEAAgE;AAChE,0GAA0G;AAC1G,gEAAgE;AAChE,MAAM,CAAC,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB;IAC9B,0CAA0C,CAAC,CAAC,0CAA0C;AAEjH,MAAM,CAAC,MAAM,wBAAwB,GAAG,OAAO,CAAC,GAAG,CAAC,6BAA6B;IAC1C,gDAAgD,CAAC,CAAC,6CAA6C"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAiBA,wBAAsB,IAAI,kBAEzB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAqBA,wBAAsB,IAAI,kBAEzB"}
package/dist/index.js CHANGED
@@ -1,5 +1,7 @@
1
1
  import { Command } from 'commander';
2
2
  import { auth } from './commands/auth.js';
3
+ import { pull } from './commands/pull.js';
4
+ import { push } from './commands/push.js';
3
5
  import { sync } from './commands/sync.js';
4
6
  import { config } from './commands/config.js';
5
7
  const program = new Command();
@@ -9,6 +11,8 @@ program
9
11
  .version('0.1.0');
10
12
  // Register commands
11
13
  program.addCommand(auth);
14
+ program.addCommand(pull);
15
+ program.addCommand(push);
12
16
  program.addCommand(sync);
13
17
  program.addCommand(config);
14
18
  export async function main() {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,QAAQ,CAAC;KACd,WAAW,CAAC,8CAA8C,CAAC;KAC3D,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,oBAAoB;AACpB,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACzB,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACzB,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAE3B,MAAM,CAAC,KAAK,UAAU,IAAI;IACxB,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACzC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,QAAQ,CAAC;KACd,WAAW,CAAC,8CAA8C,CAAC;KAC3D,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,oBAAoB;AACpB,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACzB,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACzB,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACzB,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACzB,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAE3B,MAAM,CAAC,KAAK,UAAU,IAAI;IACxB,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACzC,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Convert BlockNote JSON format to Markdown
3
+ * This is a simplified version that handles common block types
4
+ */
5
+ interface BlockNoteBlock {
6
+ type: string;
7
+ content?: any[];
8
+ props?: Record<string, any>;
9
+ children?: BlockNoteBlock[];
10
+ }
11
+ /**
12
+ * Convert BlockNote document to Markdown
13
+ */
14
+ export declare function blocknoteToMarkdown(blocks: BlockNoteBlock[]): string;
15
+ /**
16
+ * Convert Markdown to simplified BlockNote JSON
17
+ * This is a basic implementation for --push support
18
+ */
19
+ export declare function markdownToBlocknote(markdown: string): BlockNoteBlock[];
20
+ export {};
21
+ //# sourceMappingURL=markdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../src/utils/markdown.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAC;CAC7B;AAgFD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,CAoBpE;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,EAAE,CA8FtE"}
@@ -0,0 +1,180 @@
1
+ /**
2
+ * Convert BlockNote JSON format to Markdown
3
+ * This is a simplified version that handles common block types
4
+ */
5
+ /**
6
+ * Extract text from inline content with formatting
7
+ */
8
+ function extractInlineText(content) {
9
+ if (!Array.isArray(content))
10
+ return '';
11
+ return content.map((item) => {
12
+ if (typeof item === 'string')
13
+ return item;
14
+ if (!item.text)
15
+ return '';
16
+ let text = item.text;
17
+ // Apply styles
18
+ if (item.styles) {
19
+ if (item.styles.bold)
20
+ text = `**${text}**`;
21
+ if (item.styles.italic)
22
+ text = `*${text}*`;
23
+ if (item.styles.code)
24
+ text = `\`${text}\``;
25
+ if (item.styles.strike)
26
+ text = `~~${text}~~`;
27
+ }
28
+ return text;
29
+ }).join('');
30
+ }
31
+ /**
32
+ * Convert a single BlockNote block to Markdown
33
+ */
34
+ function blockToMarkdown(block, listIndex) {
35
+ const { type, content = [], props = {}, children = [] } = block;
36
+ const text = extractInlineText(content);
37
+ switch (type) {
38
+ case 'heading':
39
+ const level = props.level || 1;
40
+ return `${'#'.repeat(level)} ${text}\n\n`;
41
+ case 'paragraph':
42
+ return text ? `${text}\n\n` : '\n';
43
+ case 'bulletListItem':
44
+ const bulletChildren = children.map(child => blockToMarkdown(child)).join('');
45
+ return `- ${text}\n${bulletChildren}`;
46
+ case 'numberedListItem':
47
+ const start = props.start || listIndex || 1;
48
+ const numberedChildren = children.map(child => blockToMarkdown(child)).join('');
49
+ return `${start}. ${text}\n${numberedChildren}`;
50
+ case 'checkListItem':
51
+ const checked = props.checked ? 'x' : ' ';
52
+ return `- [${checked}] ${text}\n`;
53
+ case 'codeBlock':
54
+ const language = props.language || '';
55
+ return `\`\`\`${language}\n${text}\n\`\`\`\n\n`;
56
+ case 'table':
57
+ // Simplified table handling
58
+ return `| Table |\n|-------|\n| ${text} |\n\n`;
59
+ case 'image':
60
+ const url = props.url || '';
61
+ const caption = props.caption || text || '';
62
+ return `![${caption}](${url})\n\n`;
63
+ default:
64
+ // Unknown block type - treat as paragraph
65
+ return text ? `${text}\n\n` : '';
66
+ }
67
+ }
68
+ /**
69
+ * Convert BlockNote document to Markdown
70
+ */
71
+ export function blocknoteToMarkdown(blocks) {
72
+ if (!Array.isArray(blocks))
73
+ return '';
74
+ let markdown = '';
75
+ let listIndex = 1;
76
+ for (let i = 0; i < blocks.length; i++) {
77
+ const block = blocks[i];
78
+ // Track list numbering
79
+ if (block.type === 'numberedListItem') {
80
+ markdown += blockToMarkdown(block, listIndex);
81
+ listIndex++;
82
+ }
83
+ else {
84
+ markdown += blockToMarkdown(block);
85
+ listIndex = 1; // Reset list counter
86
+ }
87
+ }
88
+ return markdown.trim();
89
+ }
90
+ /**
91
+ * Convert Markdown to simplified BlockNote JSON
92
+ * This is a basic implementation for --push support
93
+ */
94
+ export function markdownToBlocknote(markdown) {
95
+ const lines = markdown.split('\n');
96
+ const blocks = [];
97
+ let currentBlock = [];
98
+ let inCodeBlock = false;
99
+ let codeLanguage = '';
100
+ let codeLines = [];
101
+ for (let i = 0; i < lines.length; i++) {
102
+ const line = lines[i];
103
+ // Handle code blocks
104
+ if (line.startsWith('```')) {
105
+ if (!inCodeBlock) {
106
+ // Start code block
107
+ inCodeBlock = true;
108
+ codeLanguage = line.slice(3).trim();
109
+ codeLines = [];
110
+ }
111
+ else {
112
+ // End code block
113
+ blocks.push({
114
+ type: 'codeBlock',
115
+ props: { language: codeLanguage },
116
+ content: [{ type: 'text', text: codeLines.join('\n') }]
117
+ });
118
+ inCodeBlock = false;
119
+ codeLanguage = '';
120
+ codeLines = [];
121
+ }
122
+ continue;
123
+ }
124
+ if (inCodeBlock) {
125
+ codeLines.push(line);
126
+ continue;
127
+ }
128
+ // Handle headings
129
+ const headingMatch = line.match(/^(#{1,6})\s+(.+)$/);
130
+ if (headingMatch) {
131
+ blocks.push({
132
+ type: 'heading',
133
+ props: { level: headingMatch[1].length },
134
+ content: [{ type: 'text', text: headingMatch[2] }]
135
+ });
136
+ continue;
137
+ }
138
+ // Handle bullet lists
139
+ if (line.match(/^-\s+(.+)$/)) {
140
+ const text = line.replace(/^-\s+/, '');
141
+ blocks.push({
142
+ type: 'bulletListItem',
143
+ content: [{ type: 'text', text }]
144
+ });
145
+ continue;
146
+ }
147
+ // Handle numbered lists
148
+ const numberedMatch = line.match(/^(\d+)\.\s+(.+)$/);
149
+ if (numberedMatch) {
150
+ blocks.push({
151
+ type: 'numberedListItem',
152
+ props: { start: parseInt(numberedMatch[1]) },
153
+ content: [{ type: 'text', text: numberedMatch[2] }]
154
+ });
155
+ continue;
156
+ }
157
+ // Handle empty lines (paragraph breaks)
158
+ if (line.trim() === '') {
159
+ if (currentBlock.length > 0) {
160
+ blocks.push({
161
+ type: 'paragraph',
162
+ content: [{ type: 'text', text: currentBlock.join('\n') }]
163
+ });
164
+ currentBlock = [];
165
+ }
166
+ continue;
167
+ }
168
+ // Accumulate paragraph text
169
+ currentBlock.push(line);
170
+ }
171
+ // Flush remaining paragraph
172
+ if (currentBlock.length > 0) {
173
+ blocks.push({
174
+ type: 'paragraph',
175
+ content: [{ type: 'text', text: currentBlock.join('\n') }]
176
+ });
177
+ }
178
+ return blocks;
179
+ }
180
+ //# sourceMappingURL=markdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../src/utils/markdown.ts"],"names":[],"mappings":"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"}