@contextium/cli 0.3.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 (86) hide show
  1. package/README.md +227 -0
  2. package/dist/commands/cat.d.ts +3 -0
  3. package/dist/commands/cat.d.ts.map +1 -0
  4. package/dist/commands/cat.js +153 -0
  5. package/dist/commands/cat.js.map +1 -0
  6. package/dist/commands/files.d.ts +3 -0
  7. package/dist/commands/files.d.ts.map +1 -0
  8. package/dist/commands/files.js +121 -0
  9. package/dist/commands/files.js.map +1 -0
  10. package/dist/commands/find.d.ts +3 -0
  11. package/dist/commands/find.d.ts.map +1 -0
  12. package/dist/commands/find.js +119 -0
  13. package/dist/commands/find.js.map +1 -0
  14. package/dist/commands/init.d.ts +3 -0
  15. package/dist/commands/init.d.ts.map +1 -0
  16. package/dist/commands/init.js +157 -0
  17. package/dist/commands/init.js.map +1 -0
  18. package/dist/commands/login.d.ts +3 -0
  19. package/dist/commands/login.d.ts.map +1 -0
  20. package/dist/commands/login.js +44 -0
  21. package/dist/commands/login.js.map +1 -0
  22. package/dist/commands/logout.d.ts +3 -0
  23. package/dist/commands/logout.d.ts.map +1 -0
  24. package/dist/commands/logout.js +22 -0
  25. package/dist/commands/logout.js.map +1 -0
  26. package/dist/commands/projects.d.ts +3 -0
  27. package/dist/commands/projects.d.ts.map +1 -0
  28. package/dist/commands/projects.js +64 -0
  29. package/dist/commands/projects.js.map +1 -0
  30. package/dist/commands/search.d.ts +3 -0
  31. package/dist/commands/search.d.ts.map +1 -0
  32. package/dist/commands/search.js +79 -0
  33. package/dist/commands/search.js.map +1 -0
  34. package/dist/commands/setup-claude.d.ts +3 -0
  35. package/dist/commands/setup-claude.d.ts.map +1 -0
  36. package/dist/commands/setup-claude.js +106 -0
  37. package/dist/commands/setup-claude.js.map +1 -0
  38. package/dist/commands/status.d.ts +3 -0
  39. package/dist/commands/status.d.ts.map +1 -0
  40. package/dist/commands/status.js +103 -0
  41. package/dist/commands/status.js.map +1 -0
  42. package/dist/commands/sync.d.ts +3 -0
  43. package/dist/commands/sync.d.ts.map +1 -0
  44. package/dist/commands/sync.js +118 -0
  45. package/dist/commands/sync.js.map +1 -0
  46. package/dist/commands/tags.d.ts +3 -0
  47. package/dist/commands/tags.d.ts.map +1 -0
  48. package/dist/commands/tags.js +312 -0
  49. package/dist/commands/tags.js.map +1 -0
  50. package/dist/commands/whoami.d.ts +3 -0
  51. package/dist/commands/whoami.d.ts.map +1 -0
  52. package/dist/commands/whoami.js +35 -0
  53. package/dist/commands/whoami.js.map +1 -0
  54. package/dist/commands/workspaces.d.ts +3 -0
  55. package/dist/commands/workspaces.d.ts.map +1 -0
  56. package/dist/commands/workspaces.js +48 -0
  57. package/dist/commands/workspaces.js.map +1 -0
  58. package/dist/index.d.ts +3 -0
  59. package/dist/index.d.ts.map +1 -0
  60. package/dist/index.js +56 -0
  61. package/dist/index.js.map +1 -0
  62. package/dist/lib/api-client.d.ts +11 -0
  63. package/dist/lib/api-client.d.ts.map +1 -0
  64. package/dist/lib/api-client.js +61 -0
  65. package/dist/lib/api-client.js.map +1 -0
  66. package/dist/lib/cache.d.ts +20 -0
  67. package/dist/lib/cache.d.ts.map +1 -0
  68. package/dist/lib/cache.js +79 -0
  69. package/dist/lib/cache.js.map +1 -0
  70. package/dist/lib/config.d.ts +4 -0
  71. package/dist/lib/config.d.ts.map +1 -0
  72. package/dist/lib/config.js +40 -0
  73. package/dist/lib/config.js.map +1 -0
  74. package/dist/lib/msal.d.ts +25 -0
  75. package/dist/lib/msal.d.ts.map +1 -0
  76. package/dist/lib/msal.js +150 -0
  77. package/dist/lib/msal.js.map +1 -0
  78. package/dist/lib/output.d.ts +40 -0
  79. package/dist/lib/output.d.ts.map +1 -0
  80. package/dist/lib/output.js +70 -0
  81. package/dist/lib/output.js.map +1 -0
  82. package/dist/types/index.d.ts +58 -0
  83. package/dist/types/index.d.ts.map +1 -0
  84. package/dist/types/index.js +2 -0
  85. package/dist/types/index.js.map +1 -0
  86. package/package.json +58 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"find.js","sourceRoot":"","sources":["../../src/commands/find.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const initCommand: Command;
3
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAOnC,eAAO,MAAM,WAAW,SAwKpB,CAAA"}
@@ -0,0 +1,157 @@
1
+ import { Command } from 'commander';
2
+ import fs from 'fs/promises';
3
+ import path from 'path';
4
+ import { ApiClient } from '../lib/api-client.js';
5
+ import { chalk, ora } from '../lib/output.js';
6
+ export const initCommand = new Command('init')
7
+ .description('Initialize Contextium in current directory')
8
+ .option('--api-key <key>', 'API key (or use CONTEXTIUM_API_KEY env var)')
9
+ .option('--workspace <slug>', 'Workspace slug (optional - sets a default workspace)')
10
+ .option('--api-url <url>', 'API URL', 'https://api.contextium.io/api/v1')
11
+ .action(async (options) => {
12
+ try {
13
+ // Check if already initialized
14
+ const configPath = path.join(process.cwd(), '.contextiumrc');
15
+ const exists = await fs.access(configPath).then(() => true).catch(() => false);
16
+ if (exists) {
17
+ console.log(chalk.red('✗') + ' Already initialized. Delete .contextiumrc to reinitialize.');
18
+ process.exit(1);
19
+ }
20
+ const apiKey = options.apiKey || process.env.CONTEXTIUM_API_KEY;
21
+ if (!apiKey) {
22
+ console.log(chalk.red('✗') + ' API key required. Use --api-key or set CONTEXTIUM_API_KEY env var.');
23
+ console.log();
24
+ console.log(chalk.dim('Get your API key from: Settings > API Keys'));
25
+ process.exit(1);
26
+ }
27
+ const client = new ApiClient(apiKey, options.apiUrl);
28
+ // Fetch available workspaces
29
+ const spinner = ora('Validating API key...').start();
30
+ let workspaces = [];
31
+ let selectedWorkspace = null;
32
+ try {
33
+ const { data: workspacesData } = await client.get('/workspaces');
34
+ workspaces = workspacesData.data || workspacesData;
35
+ if (!workspaces || workspaces.length === 0) {
36
+ spinner.fail('No workspaces found.');
37
+ process.exit(1);
38
+ }
39
+ spinner.succeed('API key validated');
40
+ // If workspace is specified, validate it
41
+ if (options.workspace) {
42
+ selectedWorkspace = workspaces.find((w) => w.slug === options.workspace);
43
+ if (!selectedWorkspace) {
44
+ console.log(chalk.red('✗') + ` Workspace '${options.workspace}' not found.`);
45
+ console.log();
46
+ console.log(chalk.bold('📁 Available Workspaces:'));
47
+ workspaces.forEach((workspace) => {
48
+ console.log(chalk.cyan(' ' + workspace.name) + chalk.dim(' (' + workspace.slug + ')'));
49
+ });
50
+ process.exit(1);
51
+ }
52
+ }
53
+ else {
54
+ // Show available workspaces for informational purposes
55
+ console.log();
56
+ console.log(chalk.bold('📁 Your Workspaces:'));
57
+ console.log();
58
+ workspaces.forEach((workspace) => {
59
+ console.log(chalk.cyan(' ' + workspace.name));
60
+ console.log(chalk.dim(' Slug: ') + chalk.white(workspace.slug));
61
+ if (workspace.description) {
62
+ console.log(chalk.dim(' ' + workspace.description));
63
+ }
64
+ console.log();
65
+ });
66
+ console.log(chalk.green('✓') + ' You will have access to all workspaces above');
67
+ console.log(chalk.dim(' (You can optionally set a default with --workspace <slug>)'));
68
+ console.log();
69
+ }
70
+ }
71
+ catch (error) {
72
+ spinner.fail('Failed to validate API key: ' + error.message);
73
+ process.exit(1);
74
+ }
75
+ // Create config
76
+ const config = {
77
+ api_key: apiKey,
78
+ api_url: options.apiUrl,
79
+ ...(selectedWorkspace && {
80
+ workspace_id: selectedWorkspace.id,
81
+ workspace: options.workspace,
82
+ }),
83
+ cache: {
84
+ enabled: true,
85
+ ttl: 3600,
86
+ directory: '.contexthub-cache',
87
+ max_size_mb: 100
88
+ },
89
+ sync: {
90
+ auto: true,
91
+ on_command: ['build', 'test'],
92
+ notify_changes: true,
93
+ interval: 300
94
+ },
95
+ files: {
96
+ include: [],
97
+ exclude: ['DEPRECATED_*.md', 'DRAFT_*.md'],
98
+ tags: ['foundation-context', 'always-include'],
99
+ auto_include_tags: true
100
+ }
101
+ };
102
+ const setupSpinner = ora('Setting up CLI...').start();
103
+ try {
104
+ // Write config
105
+ await fs.writeFile(configPath, JSON.stringify(config, null, 2), 'utf-8');
106
+ // Create cache directory
107
+ const cacheDir = path.join(process.cwd(), '.contexthub-cache');
108
+ await fs.mkdir(cacheDir, { recursive: true });
109
+ // Add to .gitignore
110
+ const gitignorePath = path.join(process.cwd(), '.gitignore');
111
+ try {
112
+ let gitignore = await fs.readFile(gitignorePath, 'utf-8');
113
+ if (!gitignore.includes('.contexthub-cache')) {
114
+ gitignore += '\n.contexthub-cache/\n';
115
+ await fs.writeFile(gitignorePath, gitignore);
116
+ }
117
+ }
118
+ catch {
119
+ await fs.writeFile(gitignorePath, '.contextium-cache/\n.contextiumrc\n');
120
+ }
121
+ setupSpinner.succeed('Contextium CLI initialized successfully!');
122
+ console.log();
123
+ if (selectedWorkspace) {
124
+ console.log(chalk.dim(`Default Workspace: ${selectedWorkspace.name} (${options.workspace})`));
125
+ }
126
+ else {
127
+ console.log(chalk.green('✓') + ' Access to all workspaces in your account');
128
+ }
129
+ console.log(chalk.dim(`Config: ${configPath}`));
130
+ console.log(chalk.dim(`Cache: ${cacheDir}`));
131
+ console.log();
132
+ if (selectedWorkspace) {
133
+ console.log(chalk.green('✓ You now have access to all projects in ' + selectedWorkspace.name));
134
+ }
135
+ else {
136
+ console.log(chalk.green('✓ You can now search and access files from any workspace'));
137
+ }
138
+ console.log();
139
+ console.log(chalk.bold('Next steps:'));
140
+ console.log(chalk.white(' contextium status') + chalk.dim(' # Check connection'));
141
+ console.log(chalk.white(' contextium search "query"') + chalk.dim(' # Search across workspaces'));
142
+ console.log(chalk.white(' contextium cat --all') + chalk.dim(' # Output all files'));
143
+ console.log();
144
+ console.log(chalk.dim('Using Claude Code CLI? Configure permissions:'));
145
+ console.log(chalk.white(' contextium setup-claude'));
146
+ }
147
+ catch (error) {
148
+ setupSpinner.fail(`Initialization failed: ${error.message}`);
149
+ process.exit(1);
150
+ }
151
+ }
152
+ catch (error) {
153
+ console.log(chalk.red('✗') + ` Initialization failed: ${error.message}`);
154
+ process.exit(1);
155
+ }
156
+ });
157
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const loginCommand: Command;
3
+ //# sourceMappingURL=login.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAInC,eAAO,MAAM,YAAY,SA2CrB,CAAA"}
@@ -0,0 +1,44 @@
1
+ import { Command } from 'commander';
2
+ import { loginInteractive, getCachedAccount } from '../lib/msal.js';
3
+ import { chalk, ora } from '../lib/output.js';
4
+ export const loginCommand = new Command('login')
5
+ .description('Log in to Contextium via browser (Microsoft Entra ID)')
6
+ .action(async () => {
7
+ try {
8
+ // Check if already logged in
9
+ const existing = await getCachedAccount();
10
+ if (existing) {
11
+ const name = existing.name || existing.username;
12
+ console.log(chalk.dim(`Already logged in as ${name}`));
13
+ console.log(chalk.dim('Run "contextium logout" first to switch accounts.'));
14
+ return;
15
+ }
16
+ console.log();
17
+ console.log(chalk.bold('🔐 Contextium Login'));
18
+ console.log();
19
+ const spinner = ora('Opening browser for authentication...').start();
20
+ const result = await loginInteractive();
21
+ const displayName = result.account?.name || result.account?.username || 'Unknown';
22
+ const email = result.account?.username || '';
23
+ spinner.succeed('Logged in successfully!');
24
+ console.log();
25
+ console.log(` ${chalk.dim('Account:')} ${chalk.cyan(displayName)}`);
26
+ if (email && email !== displayName) {
27
+ console.log(` ${chalk.dim('Email:')} ${chalk.white(email)}`);
28
+ }
29
+ console.log(` ${chalk.dim('Expires:')} ${result.expiresOn ? result.expiresOn.toLocaleString() : 'N/A'}`);
30
+ console.log();
31
+ console.log(chalk.green('You can now use contextium commands without an API key.'));
32
+ console.log();
33
+ }
34
+ catch (error) {
35
+ // User closed browser or cancelled
36
+ if (error.errorCode === 'user_cancelled' || error.message?.includes('cancelled')) {
37
+ console.log(chalk.yellow('Login cancelled.'));
38
+ return;
39
+ }
40
+ console.error(chalk.red('✗') + ' Login failed: ' + error.message);
41
+ process.exit(1);
42
+ }
43
+ });
44
+ //# sourceMappingURL=login.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const logoutCommand: Command;
3
+ //# sourceMappingURL=logout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logout.d.ts","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAInC,eAAO,MAAM,aAAa,SAkBtB,CAAA"}
@@ -0,0 +1,22 @@
1
+ import { Command } from 'commander';
2
+ import { clearCache, getCachedAccount } from '../lib/msal.js';
3
+ import { chalk } from '../lib/output.js';
4
+ export const logoutCommand = new Command('logout')
5
+ .description('Log out of Contextium and clear cached tokens')
6
+ .action(async () => {
7
+ try {
8
+ const account = await getCachedAccount();
9
+ if (!account) {
10
+ console.log(chalk.dim('Not logged in.'));
11
+ return;
12
+ }
13
+ const name = account.name || account.username;
14
+ await clearCache();
15
+ console.log(chalk.green('✓') + ` Logged out (${name})`);
16
+ }
17
+ catch (error) {
18
+ console.error(chalk.red('✗') + ' Logout failed: ' + error.message);
19
+ process.exit(1);
20
+ }
21
+ });
22
+ //# sourceMappingURL=logout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logout.js","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAC7D,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAExC,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;KAC/C,WAAW,CAAC,+CAA+C,CAAC;KAC5D,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,gBAAgB,EAAE,CAAA;QAExC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAA;YACxC,OAAM;QACR,CAAC;QAED,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,QAAQ,CAAA;QAC7C,MAAM,UAAU,EAAE,CAAA;QAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,gBAAgB,IAAI,GAAG,CAAC,CAAA;IACzD,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,kBAAkB,GAAG,KAAK,CAAC,OAAO,CAAC,CAAA;QAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC,CAAC,CAAA"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const projectsCommand: Command;
3
+ //# sourceMappingURL=projects.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../src/commands/projects.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAKnC,eAAO,MAAM,eAAe,SAyExB,CAAA"}
@@ -0,0 +1,64 @@
1
+ import { Command } from 'commander';
2
+ import { ApiClient } from '../lib/api-client.js';
3
+ import { loadConfig } from '../lib/config.js';
4
+ import { chalk, ora } from '../lib/output.js';
5
+ export const projectsCommand = new Command('projects')
6
+ .description('List projects in a workspace with file counts')
7
+ .argument('<workspace>', 'Workspace name or slug')
8
+ .action(async (workspaceName) => {
9
+ const spinner = ora('Loading projects...').start();
10
+ try {
11
+ const config = await loadConfig();
12
+ const client = new ApiClient(config.api_key, config.api_url);
13
+ // Find workspace by name or slug (case-insensitive)
14
+ const { data: workspacesData } = await client.get('/workspaces');
15
+ const workspaces = workspacesData.data || workspacesData;
16
+ const workspace = workspaces.find((w) => w.slug.toLowerCase().trim() === workspaceName.toLowerCase().trim() ||
17
+ w.name.toLowerCase().trim() === workspaceName.toLowerCase().trim());
18
+ if (!workspace) {
19
+ spinner.fail(`Workspace '${workspaceName}' not found`);
20
+ console.log();
21
+ console.log(chalk.dim('Available workspaces:'));
22
+ workspaces.forEach((w) => {
23
+ console.log(chalk.dim(` - ${w.name} (${w.slug})`));
24
+ });
25
+ process.exit(1);
26
+ }
27
+ // Get all projects in workspace
28
+ const { data: projectsData } = await client.get(`/workspaces/${workspace.id}/projects`);
29
+ const projects = projectsData.data || projectsData;
30
+ const activeProjects = projects.filter((p) => !p.deletedAt);
31
+ if (activeProjects.length === 0) {
32
+ spinner.stop();
33
+ console.log(chalk.yellow(`\nNo projects found in workspace '${workspace.name}'`));
34
+ return;
35
+ }
36
+ // Get file counts for each project in parallel
37
+ const projectsWithFileCounts = await Promise.all(activeProjects.map(async (project) => {
38
+ try {
39
+ const { data: filesData } = await client.get(`/projects/${project.id}/files`);
40
+ const files = filesData.data || filesData;
41
+ return {
42
+ ...project,
43
+ fileCount: files.filter((f) => !f.deletedAt).length
44
+ };
45
+ }
46
+ catch (error) {
47
+ return { ...project, fileCount: 0 };
48
+ }
49
+ }));
50
+ spinner.stop();
51
+ console.log(chalk.bold(`\nProjects in '${workspace.name}':\n`));
52
+ for (const project of projectsWithFileCounts) {
53
+ const fileText = project.fileCount === 1 ? 'file' : 'files';
54
+ console.log(chalk.cyan(` ${project.name}`), chalk.dim(`(${project.fileCount} ${fileText})`));
55
+ console.log(chalk.gray(` slug: ${project.slug}`));
56
+ console.log();
57
+ }
58
+ }
59
+ catch (error) {
60
+ spinner.fail(`Failed to load projects: ${error.message}`);
61
+ process.exit(1);
62
+ }
63
+ });
64
+ //# sourceMappingURL=projects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projects.js","sourceRoot":"","sources":["../../src/commands/projects.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const searchCommand: Command;
3
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAMnC,eAAO,MAAM,aAAa,SAsFtB,CAAA"}
@@ -0,0 +1,79 @@
1
+ import { Command } from 'commander';
2
+ import { ApiClient } from '../lib/api-client.js';
3
+ import { loadConfig } from '../lib/config.js';
4
+ import { chalk, ora } from '../lib/output.js';
5
+ export const searchCommand = new Command('search')
6
+ .description('Search for files across all workspaces')
7
+ .argument('<query>', 'Search query')
8
+ .option('--workspace <slug>', 'Limit search to a specific workspace')
9
+ .option('--tag <tags...>', 'Filter by tags')
10
+ .option('--limit <number>', 'Max results to return', '10')
11
+ .action(async (query, options) => {
12
+ const spinner = ora('Searching...').start();
13
+ try {
14
+ const config = await loadConfig();
15
+ const client = new ApiClient(config.api_key, config.api_url);
16
+ // Determine which workspaces to search
17
+ let workspaceIds = [];
18
+ if (options.workspace) {
19
+ // Search specific workspace
20
+ const { data: workspacesData } = await client.get('/workspaces');
21
+ const workspaces = workspacesData.data || workspacesData;
22
+ const workspace = workspaces.find((w) => w.slug === options.workspace);
23
+ if (!workspace) {
24
+ spinner.fail(`Workspace '${options.workspace}' not found`);
25
+ process.exit(1);
26
+ }
27
+ workspaceIds = [workspace.id];
28
+ }
29
+ else if (config.workspace_id) {
30
+ // Use default workspace from config
31
+ workspaceIds = [config.workspace_id];
32
+ }
33
+ else {
34
+ // Search all workspaces
35
+ const { data: workspacesData } = await client.get('/workspaces');
36
+ const workspaces = workspacesData.data || workspacesData;
37
+ workspaceIds = workspaces.map((w) => w.id);
38
+ }
39
+ const params = {
40
+ query: query,
41
+ limit: parseInt(options.limit)
42
+ };
43
+ if (options.tag && options.tag.length > 0) {
44
+ params.tags = options.tag.join(',');
45
+ }
46
+ // Search in each workspace
47
+ const allFiles = [];
48
+ for (const workspaceId of workspaceIds) {
49
+ try {
50
+ const { data } = await client.get(`/workspaces/${workspaceId}/search`, { params });
51
+ if (data && data.length > 0) {
52
+ allFiles.push(...data);
53
+ }
54
+ }
55
+ catch (error) {
56
+ // Continue searching other workspaces even if one fails
57
+ continue;
58
+ }
59
+ }
60
+ spinner.stop();
61
+ if (allFiles.length === 0) {
62
+ console.log(chalk.yellow('No results found'));
63
+ return;
64
+ }
65
+ console.log(chalk.bold(`\nFound ${allFiles.length} file(s):\n`));
66
+ for (const file of allFiles) {
67
+ console.log(chalk.white(file.title));
68
+ console.log(chalk.dim(` Path: ${file.path}`));
69
+ console.log(chalk.dim(` Version: v${file.currentVersion}`));
70
+ console.log(chalk.dim(` Updated: ${new Date(file.updatedAt).toLocaleString()}`));
71
+ console.log();
72
+ }
73
+ }
74
+ catch (error) {
75
+ spinner.fail(`Search failed: ${error.message}`);
76
+ process.exit(1);
77
+ }
78
+ });
79
+ //# sourceMappingURL=search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const setupClaudeCommand: Command;
3
+ //# sourceMappingURL=setup-claude.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-claude.d.ts","sourceRoot":"","sources":["../../src/commands/setup-claude.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAMnC,eAAO,MAAM,kBAAkB,SAgH3B,CAAA"}
@@ -0,0 +1,106 @@
1
+ import { Command } from 'commander';
2
+ import fs from 'fs/promises';
3
+ import path from 'path';
4
+ import os from 'os';
5
+ import { chalk, ora } from '../lib/output.js';
6
+ export const setupClaudeCommand = new Command('setup-claude')
7
+ .description('Configure permissions for Claude Code CLI (Anthropic\'s AI coding assistant)')
8
+ .addHelpText('after', `
9
+ ${chalk.dim('Note: This is ONLY needed if you use Claude Code (claude.ai/claude-code).')}
10
+ ${chalk.dim('If you use other IDEs (VSCode, Cursor, etc.) without Claude Code, skip this.')}
11
+ `)
12
+ .option('--global', 'Configure in global ~/.claude/settings.json (default)')
13
+ .option('--project', 'Configure in project .claude/settings.json')
14
+ .action(async (options) => {
15
+ try {
16
+ const isGlobal = !options.project;
17
+ // Determine settings file path
18
+ const settingsPath = isGlobal
19
+ ? path.join(os.homedir(), '.claude', 'settings.json')
20
+ : path.join(process.cwd(), '.claude', 'settings.json');
21
+ const spinner = ora(isGlobal
22
+ ? 'Configuring global Claude Code settings...'
23
+ : 'Configuring project Claude Code settings...').start();
24
+ try {
25
+ // Ensure directory exists
26
+ const settingsDir = path.dirname(settingsPath);
27
+ await fs.mkdir(settingsDir, { recursive: true });
28
+ // Read existing settings or create default
29
+ let settings = {
30
+ permissions: {
31
+ allow: []
32
+ }
33
+ };
34
+ try {
35
+ const content = await fs.readFile(settingsPath, 'utf-8');
36
+ settings = JSON.parse(content);
37
+ }
38
+ catch (error) {
39
+ if (error.code !== 'ENOENT') {
40
+ throw error;
41
+ }
42
+ // File doesn't exist, use default
43
+ }
44
+ // Ensure permissions structure exists
45
+ if (!settings.permissions) {
46
+ settings.permissions = { allow: [] };
47
+ }
48
+ if (!settings.permissions.allow) {
49
+ settings.permissions.allow = [];
50
+ }
51
+ // Check if permission already exists
52
+ const permission = 'Bash contextium *';
53
+ if (settings.permissions.allow.includes(permission)) {
54
+ spinner.info('Permission already configured');
55
+ console.log();
56
+ console.log(chalk.dim(`Settings file: ${settingsPath}`));
57
+ console.log(chalk.dim(`Permission: ${permission}`));
58
+ return;
59
+ }
60
+ // Add permission
61
+ settings.permissions.allow.push(permission);
62
+ // Write settings back
63
+ await fs.writeFile(settingsPath, JSON.stringify(settings, null, 2) + '\n', 'utf-8');
64
+ spinner.succeed('Claude Code permissions configured!');
65
+ console.log();
66
+ console.log(chalk.green('✓') + ' Contextium CLI commands will no longer require permission prompts');
67
+ console.log(chalk.dim(`Settings file: ${settingsPath}`));
68
+ console.log(chalk.dim(`Added permission: ${permission}`));
69
+ console.log();
70
+ if (isGlobal) {
71
+ console.log(chalk.bold('What this means:'));
72
+ console.log(chalk.white(' • Claude Code can run all contextium commands without prompting'));
73
+ console.log(chalk.white(' • Applies to all your projects using Claude Code'));
74
+ console.log(chalk.white(' • You can remove this anytime by editing ~/.claude/settings.json'));
75
+ }
76
+ else {
77
+ console.log(chalk.bold('What this means:'));
78
+ console.log(chalk.white(' • Claude Code can run all contextium commands without prompting'));
79
+ console.log(chalk.white(' • Applies only to this project'));
80
+ console.log(chalk.white(' • Commit .claude/settings.json to share with your team'));
81
+ }
82
+ console.log();
83
+ console.log(chalk.green('✓ Setup complete!') + chalk.dim(' You can now use contextium with Claude Code.'));
84
+ }
85
+ catch (error) {
86
+ spinner.fail(`Failed to configure permissions: ${error.message}`);
87
+ console.log();
88
+ console.log(chalk.yellow('Manual setup:'));
89
+ console.log(chalk.dim(`1. Create or edit: ${settingsPath}`));
90
+ console.log(chalk.dim('2. Add this to the file:'));
91
+ console.log();
92
+ console.log(chalk.white(' {'));
93
+ console.log(chalk.white(' "permissions": {'));
94
+ console.log(chalk.white(' "allow": ["Bash contextium *"]'));
95
+ console.log(chalk.white(' }'));
96
+ console.log(chalk.white(' }'));
97
+ console.log();
98
+ process.exit(1);
99
+ }
100
+ }
101
+ catch (error) {
102
+ console.log(chalk.red('✗') + ` Setup failed: ${error.message}`);
103
+ process.exit(1);
104
+ }
105
+ });
106
+ //# sourceMappingURL=setup-claude.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-claude.js","sourceRoot":"","sources":["../../src/commands/setup-claude.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,MAAM,aAAa,CAAA;AAC5B,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,MAAM,IAAI,CAAA;AACnB,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAE7C,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,OAAO,CAAC,cAAc,CAAC;KAC1D,WAAW,CAAC,8EAA8E,CAAC;KAC3F,WAAW,CAAC,OAAO,EAAE;EACtB,KAAK,CAAC,GAAG,CAAC,2EAA2E,CAAC;EACtF,KAAK,CAAC,GAAG,CAAC,8EAA8E,CAAC;CAC1F,CAAC;KACC,MAAM,CAAC,UAAU,EAAE,uDAAuD,CAAC;KAC3E,MAAM,CAAC,WAAW,EAAE,4CAA4C,CAAC;KACjE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,OAAO,CAAA;QAEjC,+BAA+B;QAC/B,MAAM,YAAY,GAAG,QAAQ;YAC3B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,eAAe,CAAC;YACrD,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,eAAe,CAAC,CAAA;QAExD,MAAM,OAAO,GAAG,GAAG,CACjB,QAAQ;YACN,CAAC,CAAC,4CAA4C;YAC9C,CAAC,CAAC,6CAA6C,CAClD,CAAC,KAAK,EAAE,CAAA;QAET,IAAI,CAAC;YACH,0BAA0B;YAC1B,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;YAC9C,MAAM,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;YAEhD,2CAA2C;YAC3C,IAAI,QAAQ,GAAQ;gBAClB,WAAW,EAAE;oBACX,KAAK,EAAE,EAAE;iBACV;aACF,CAAA;YAED,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;gBACxD,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YAChC,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC5B,MAAM,KAAK,CAAA;gBACb,CAAC;gBACD,kCAAkC;YACpC,CAAC;YAED,sCAAsC;YACtC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;gBAC1B,QAAQ,CAAC,WAAW,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAAA;YACtC,CAAC;YACD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;gBAChC,QAAQ,CAAC,WAAW,CAAC,KAAK,GAAG,EAAE,CAAA;YACjC,CAAC;YAED,qCAAqC;YACrC,MAAM,UAAU,GAAG,mBAAmB,CAAA;YACtC,IAAI,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBACpD,OAAO,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAA;gBAC7C,OAAO,CAAC,GAAG,EAAE,CAAA;gBACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,YAAY,EAAE,CAAC,CAAC,CAAA;gBACxD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,UAAU,EAAE,CAAC,CAAC,CAAA;gBACnD,OAAM;YACR,CAAC;YAED,iBAAiB;YACjB,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;YAE3C,sBAAsB;YACtB,MAAM,EAAE,CAAC,SAAS,CAChB,YAAY,EACZ,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EACxC,OAAO,CACR,CAAA;YAED,OAAO,CAAC,OAAO,CAAC,qCAAqC,CAAC,CAAA;YACtD,OAAO,CAAC,GAAG,EAAE,CAAA;YACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,oEAAoE,CAAC,CAAA;YACpG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,YAAY,EAAE,CAAC,CAAC,CAAA;YACxD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,qBAAqB,UAAU,EAAE,CAAC,CAAC,CAAA;YACzD,OAAO,CAAC,GAAG,EAAE,CAAA;YAEb,IAAI,QAAQ,EAAE,CAAC;gBACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAA;gBAC3C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,mEAAmE,CAAC,CAAC,CAAA;gBAC7F,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC,CAAA;gBAC9E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,oEAAoE,CAAC,CAAC,CAAA;YAChG,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAA;gBAC3C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,mEAAmE,CAAC,CAAC,CAAA;gBAC7F,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC,CAAA;gBAC5D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC,CAAA;YACtF,CAAC;YACD,OAAO,CAAC,GAAG,EAAE,CAAA;YACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC,CAAA;QAC5G,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,IAAI,CAAC,oCAAoC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;YACjE,OAAO,CAAC,GAAG,EAAE,CAAA;YACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAA;YAC1C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,sBAAsB,YAAY,EAAE,CAAC,CAAC,CAAA;YAC5D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,CAAA;YAClD,OAAO,CAAC,GAAG,EAAE,CAAA;YACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;YAChC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAA;YACjD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC,CAAA;YACjE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAA;YAClC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;YAChC,OAAO,CAAC,GAAG,EAAE,CAAA;YACb,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;IACH,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,kBAAkB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;QAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC,CAAC,CAAA"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const statusCommand: Command;
3
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAOnC,eAAO,MAAM,aAAa,SA+HtB,CAAA"}