@kairoaisec/cli 0.1.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 (96) hide show
  1. package/CHANGELOG.md +47 -0
  2. package/LICENSE +21 -0
  3. package/README.md +161 -0
  4. package/dist/api/client.d.ts +128 -0
  5. package/dist/api/client.d.ts.map +1 -0
  6. package/dist/api/client.js +153 -0
  7. package/dist/api/client.js.map +1 -0
  8. package/dist/api/index.d.ts +7 -0
  9. package/dist/api/index.d.ts.map +1 -0
  10. package/dist/api/index.js +42 -0
  11. package/dist/api/index.js.map +1 -0
  12. package/dist/cli.d.ts +5 -0
  13. package/dist/cli.d.ts.map +1 -0
  14. package/dist/cli.js +72 -0
  15. package/dist/cli.js.map +1 -0
  16. package/dist/commands/auth/index.d.ts +3 -0
  17. package/dist/commands/auth/index.d.ts.map +1 -0
  18. package/dist/commands/auth/index.js +13 -0
  19. package/dist/commands/auth/index.js.map +1 -0
  20. package/dist/commands/auth/login.d.ts +3 -0
  21. package/dist/commands/auth/login.d.ts.map +1 -0
  22. package/dist/commands/auth/login.js +174 -0
  23. package/dist/commands/auth/login.js.map +1 -0
  24. package/dist/commands/auth/logout.d.ts +3 -0
  25. package/dist/commands/auth/logout.d.ts.map +1 -0
  26. package/dist/commands/auth/logout.js +56 -0
  27. package/dist/commands/auth/logout.js.map +1 -0
  28. package/dist/commands/auth/whoami.d.ts +3 -0
  29. package/dist/commands/auth/whoami.d.ts.map +1 -0
  30. package/dist/commands/auth/whoami.js +110 -0
  31. package/dist/commands/auth/whoami.js.map +1 -0
  32. package/dist/commands/config.d.ts +3 -0
  33. package/dist/commands/config.d.ts.map +1 -0
  34. package/dist/commands/config.js +102 -0
  35. package/dist/commands/config.js.map +1 -0
  36. package/dist/commands/project/create.d.ts +3 -0
  37. package/dist/commands/project/create.d.ts.map +1 -0
  38. package/dist/commands/project/create.js +146 -0
  39. package/dist/commands/project/create.js.map +1 -0
  40. package/dist/commands/project/index.d.ts +3 -0
  41. package/dist/commands/project/index.d.ts.map +1 -0
  42. package/dist/commands/project/index.js +14 -0
  43. package/dist/commands/project/index.js.map +1 -0
  44. package/dist/commands/project/list.d.ts +3 -0
  45. package/dist/commands/project/list.d.ts.map +1 -0
  46. package/dist/commands/project/list.js +116 -0
  47. package/dist/commands/project/list.js.map +1 -0
  48. package/dist/commands/project/select.d.ts +3 -0
  49. package/dist/commands/project/select.d.ts.map +1 -0
  50. package/dist/commands/project/select.js +147 -0
  51. package/dist/commands/project/select.js.map +1 -0
  52. package/dist/commands/scan.d.ts +3 -0
  53. package/dist/commands/scan.d.ts.map +1 -0
  54. package/dist/commands/scan.js +401 -0
  55. package/dist/commands/scan.js.map +1 -0
  56. package/dist/config/index.d.ts +44 -0
  57. package/dist/config/index.d.ts.map +1 -0
  58. package/dist/config/index.js +237 -0
  59. package/dist/config/index.js.map +1 -0
  60. package/dist/index.d.ts +6 -0
  61. package/dist/index.d.ts.map +1 -0
  62. package/dist/index.js +33 -0
  63. package/dist/index.js.map +1 -0
  64. package/dist/lib/file-discovery.d.ts +17 -0
  65. package/dist/lib/file-discovery.d.ts.map +1 -0
  66. package/dist/lib/file-discovery.js +218 -0
  67. package/dist/lib/file-discovery.js.map +1 -0
  68. package/dist/lib/patterns.d.ts +18 -0
  69. package/dist/lib/patterns.d.ts.map +1 -0
  70. package/dist/lib/patterns.js +187 -0
  71. package/dist/lib/patterns.js.map +1 -0
  72. package/dist/lib/sarif.d.ts +61 -0
  73. package/dist/lib/sarif.d.ts.map +1 -0
  74. package/dist/lib/sarif.js +169 -0
  75. package/dist/lib/sarif.js.map +1 -0
  76. package/dist/lib/scanner.d.ts +43 -0
  77. package/dist/lib/scanner.d.ts.map +1 -0
  78. package/dist/lib/scanner.js +163 -0
  79. package/dist/lib/scanner.js.map +1 -0
  80. package/dist/lib/slither.d.ts +112 -0
  81. package/dist/lib/slither.d.ts.map +1 -0
  82. package/dist/lib/slither.js +463 -0
  83. package/dist/lib/slither.js.map +1 -0
  84. package/dist/utils/logger.d.ts +14 -0
  85. package/dist/utils/logger.d.ts.map +1 -0
  86. package/dist/utils/logger.js +44 -0
  87. package/dist/utils/logger.js.map +1 -0
  88. package/dist/utils/spinner.d.ts +15 -0
  89. package/dist/utils/spinner.d.ts.map +1 -0
  90. package/dist/utils/spinner.js +55 -0
  91. package/dist/utils/spinner.js.map +1 -0
  92. package/dist/utils/validation.d.ts +12 -0
  93. package/dist/utils/validation.d.ts.map +1 -0
  94. package/dist/utils/validation.js +79 -0
  95. package/dist/utils/validation.js.map +1 -0
  96. package/package.json +62 -0
@@ -0,0 +1,146 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.createCommand = void 0;
7
+ const commander_1 = require("commander");
8
+ const logger_1 = require("../../utils/logger");
9
+ const config_1 = require("../../config");
10
+ const api_1 = require("../../api");
11
+ const spinner_1 = require("../../utils/spinner");
12
+ const validation_1 = require("../../utils/validation");
13
+ const inquirer_1 = __importDefault(require("inquirer"));
14
+ exports.createCommand = new commander_1.Command('create')
15
+ .argument('[name]', 'Project name')
16
+ .description('Create a new project')
17
+ .option('-d, --description <description>', 'Project description')
18
+ .option('--select', 'Automatically select this project after creation')
19
+ .option('--json', 'Output as JSON')
20
+ .action(async (name, options) => {
21
+ try {
22
+ // Check authentication
23
+ if (!(await config_1.configManager.isAuthenticated())) {
24
+ logger_1.Logger.error('You must be logged in to create projects');
25
+ logger_1.Logger.info('Use ' + logger_1.Logger.highlight('kairo auth login') + ' to get started');
26
+ process.exit(1);
27
+ }
28
+ // Get project name from arguments or prompt
29
+ let projectName = name;
30
+ let description = options.description;
31
+ if (!projectName) {
32
+ const answers = await inquirer_1.default.prompt([
33
+ {
34
+ type: 'input',
35
+ name: 'name',
36
+ message: 'Project name:',
37
+ validate: (input) => {
38
+ try {
39
+ (0, validation_1.validateRequired)(input, 'Project name');
40
+ (0, validation_1.validateProjectName)(input);
41
+ return true;
42
+ }
43
+ catch (error) {
44
+ return error instanceof Error ? error.message : 'Invalid project name';
45
+ }
46
+ },
47
+ },
48
+ ]);
49
+ projectName = answers.name;
50
+ }
51
+ if (!description) {
52
+ const answers = await inquirer_1.default.prompt([
53
+ {
54
+ type: 'input',
55
+ name: 'description',
56
+ message: 'Project description (optional):',
57
+ },
58
+ ]);
59
+ description = answers.description;
60
+ }
61
+ // Validate project name
62
+ if (!projectName) {
63
+ logger_1.Logger.error('Project name is required');
64
+ process.exit(1);
65
+ }
66
+ try {
67
+ (0, validation_1.validateRequired)(projectName, 'Project name');
68
+ (0, validation_1.validateProjectName)(projectName);
69
+ }
70
+ catch (error) {
71
+ logger_1.Logger.error('Invalid project name:', error instanceof Error ? error.message : String(error));
72
+ process.exit(1);
73
+ }
74
+ const spinner = (0, spinner_1.createSpinner)(`Creating project "${projectName}"...`).start();
75
+ try {
76
+ const client = (0, api_1.getApiClient)();
77
+ const projectData = {
78
+ name: projectName,
79
+ ...(description && { description }),
80
+ };
81
+ const result = await client.createProject(projectData);
82
+ const apiProject = result.project;
83
+ spinner.succeed(`Project "${projectName}" created successfully`);
84
+ // Convert to config project format and store locally
85
+ const project = {
86
+ id: apiProject.id,
87
+ name: apiProject.name,
88
+ description: apiProject.description,
89
+ createdAt: apiProject.created_at,
90
+ };
91
+ config_1.configManager.addProject(project);
92
+ // Automatically select if requested
93
+ if (options.select) {
94
+ config_1.configManager.setCurrentProject(project.id);
95
+ logger_1.Logger.info(`Project "${projectName}" selected as current project`);
96
+ }
97
+ if (options.json) {
98
+ console.log(JSON.stringify(project, null, 2));
99
+ }
100
+ else {
101
+ displayProjectInfo(project, Boolean(options.select));
102
+ }
103
+ }
104
+ catch (error) {
105
+ spinner.fail('Failed to create project');
106
+ // Handle specific API errors
107
+ if (error instanceof Error) {
108
+ if (error.message.includes('already exists')) {
109
+ logger_1.Logger.error('A project with this name already exists');
110
+ logger_1.Logger.info('Use a different name or list existing projects with ' +
111
+ logger_1.Logger.highlight('kairo project list'));
112
+ }
113
+ else {
114
+ logger_1.Logger.error('Project creation failed:', error.message);
115
+ }
116
+ }
117
+ throw error;
118
+ }
119
+ }
120
+ catch (error) {
121
+ logger_1.Logger.debug('Project creation error:', error);
122
+ process.exit(1);
123
+ }
124
+ });
125
+ function displayProjectInfo(project, selected) {
126
+ logger_1.Logger.log('');
127
+ logger_1.Logger.log(logger_1.Logger.bold('✨ Project Created'));
128
+ logger_1.Logger.log(` Name: ${logger_1.Logger.highlight(project.name)}`);
129
+ logger_1.Logger.log(` ID: ${logger_1.Logger.dim(project.id)}`);
130
+ if (project.description) {
131
+ logger_1.Logger.log(` Description: ${project.description}`);
132
+ }
133
+ logger_1.Logger.log(` Created: ${new Date(project.createdAt).toLocaleString()}`);
134
+ if (selected) {
135
+ logger_1.Logger.log(` Status: ${logger_1.Logger.highlight('Current project')}`);
136
+ }
137
+ logger_1.Logger.log('');
138
+ logger_1.Logger.log(logger_1.Logger.bold('Next Steps:'));
139
+ if (!selected) {
140
+ logger_1.Logger.log(` • Select this project: ${logger_1.Logger.highlight(`kairo project select ${project.name}`)}`);
141
+ }
142
+ logger_1.Logger.log(` • Scan contracts: ${logger_1.Logger.highlight('kairo scan ./contracts')}`);
143
+ logger_1.Logger.log(` • View all projects: ${logger_1.Logger.highlight('kairo project list')}`);
144
+ logger_1.Logger.log('');
145
+ }
146
+ //# sourceMappingURL=create.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/project/create.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const projectCommand: Command;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/project/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,eAAO,MAAM,cAAc,SAKC,CAAC"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.projectCommand = void 0;
4
+ const commander_1 = require("commander");
5
+ const create_1 = require("./create");
6
+ const list_1 = require("./list");
7
+ const select_1 = require("./select");
8
+ exports.projectCommand = new commander_1.Command('project')
9
+ .alias('projects')
10
+ .description('Project management commands')
11
+ .addCommand(create_1.createCommand)
12
+ .addCommand(list_1.listCommand)
13
+ .addCommand(select_1.selectCommand);
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/project/index.ts"],"names":[],"mappings":";;;AAAA,yCAAoC;AACpC,qCAAyC;AACzC,iCAAqC;AACrC,qCAAyC;AAE5B,QAAA,cAAc,GAAG,IAAI,mBAAO,CAAC,SAAS,CAAC;KACjD,KAAK,CAAC,UAAU,CAAC;KACjB,WAAW,CAAC,6BAA6B,CAAC;KAC1C,UAAU,CAAC,sBAAa,CAAC;KACzB,UAAU,CAAC,kBAAW,CAAC;KACvB,UAAU,CAAC,sBAAa,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const listCommand: Command;
3
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/project/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,eAAO,MAAM,WAAW,SAuEpB,CAAC"}
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.listCommand = void 0;
4
+ const commander_1 = require("commander");
5
+ const logger_1 = require("../../utils/logger");
6
+ const config_1 = require("../../config");
7
+ const api_1 = require("../../api");
8
+ const spinner_1 = require("../../utils/spinner");
9
+ exports.listCommand = new commander_1.Command('list')
10
+ .description('List all projects')
11
+ .option('--json', 'Output as JSON')
12
+ .option('--local-only', 'Show only locally cached projects')
13
+ .action(async (options) => {
14
+ try {
15
+ // Check authentication
16
+ if (!(await config_1.configManager.isAuthenticated())) {
17
+ logger_1.Logger.error('You must be logged in to list projects');
18
+ logger_1.Logger.info('Use ' + logger_1.Logger.highlight('kairo auth login') + ' to get started');
19
+ process.exit(1);
20
+ }
21
+ let projects = [];
22
+ if (options.localOnly) {
23
+ projects = config_1.configManager.getProjects();
24
+ if (options.json) {
25
+ console.log(JSON.stringify({ projects }, null, 2));
26
+ return;
27
+ }
28
+ }
29
+ else {
30
+ const spinner = (0, spinner_1.createSpinner)('Fetching projects...').start();
31
+ try {
32
+ const client = (0, api_1.getApiClient)();
33
+ const result = await client.listProjects();
34
+ const apiProjects = result.projects;
35
+ // Convert API projects to config projects format
36
+ projects = apiProjects.map(p => ({
37
+ id: p.id,
38
+ name: p.name,
39
+ description: p.description,
40
+ createdAt: p.created_at,
41
+ }));
42
+ // Sync with local storage
43
+ config_1.configManager.setProjects(projects);
44
+ spinner.succeed(`Found ${projects.length} project${projects.length !== 1 ? 's' : ''}`);
45
+ }
46
+ catch (error) {
47
+ spinner.fail('Failed to fetch projects');
48
+ // Fallback to local projects
49
+ projects = config_1.configManager.getProjects();
50
+ if (projects.length > 0) {
51
+ logger_1.Logger.warn('Using locally cached projects (API unavailable)');
52
+ }
53
+ else {
54
+ throw error;
55
+ }
56
+ }
57
+ if (options.json) {
58
+ console.log(JSON.stringify({ projects }, null, 2));
59
+ return;
60
+ }
61
+ }
62
+ // Display projects
63
+ if (projects.length === 0) {
64
+ displayEmptyState();
65
+ }
66
+ else {
67
+ displayProjects(projects);
68
+ }
69
+ }
70
+ catch (error) {
71
+ logger_1.Logger.error('Failed to list projects:', error instanceof Error ? error.message : String(error));
72
+ process.exit(1);
73
+ }
74
+ });
75
+ function displayEmptyState() {
76
+ logger_1.Logger.log('');
77
+ logger_1.Logger.log(logger_1.Logger.bold('📁 No projects found'));
78
+ logger_1.Logger.log('');
79
+ logger_1.Logger.log('Get started by creating your first project:');
80
+ logger_1.Logger.log(` ${logger_1.Logger.highlight('kairo project create my-project')}`);
81
+ logger_1.Logger.log('');
82
+ }
83
+ function displayProjects(projects) {
84
+ const currentProject = config_1.configManager.getCurrentProject();
85
+ logger_1.Logger.log('');
86
+ logger_1.Logger.log(logger_1.Logger.bold(`📁 Projects (${projects.length})`));
87
+ logger_1.Logger.log('');
88
+ // Sort projects: current first, then by name
89
+ const sortedProjects = projects.sort((a, b) => {
90
+ if (currentProject?.id === a.id)
91
+ return -1;
92
+ if (currentProject?.id === b.id)
93
+ return 1;
94
+ return a.name.localeCompare(b.name);
95
+ });
96
+ for (const project of sortedProjects) {
97
+ const isCurrent = currentProject?.id === project.id;
98
+ const indicator = isCurrent ? '→' : ' ';
99
+ const nameStyle = isCurrent ? logger_1.Logger.highlight : (s) => s;
100
+ const statusStyle = isCurrent ? logger_1.Logger.highlight : logger_1.Logger.dim;
101
+ logger_1.Logger.log(`${indicator} ${nameStyle(project.name)} ${statusStyle(isCurrent ? '(current)' : '')}`);
102
+ logger_1.Logger.log(` ${logger_1.Logger.dim(project.id)}`);
103
+ if (project.description) {
104
+ logger_1.Logger.log(` ${logger_1.Logger.dim(project.description)}`);
105
+ }
106
+ const createdDate = new Date(project.createdAt).toLocaleDateString();
107
+ logger_1.Logger.log(` ${logger_1.Logger.dim(`Created: ${createdDate}`)}`);
108
+ logger_1.Logger.log('');
109
+ }
110
+ logger_1.Logger.log(logger_1.Logger.bold('Commands:'));
111
+ logger_1.Logger.log(` Select project: ${logger_1.Logger.highlight('kairo project select <name>')}`);
112
+ logger_1.Logger.log(` Create project: ${logger_1.Logger.highlight('kairo project create <name>')}`);
113
+ logger_1.Logger.log(` Scan contracts: ${logger_1.Logger.highlight('kairo scan ./contracts')}`);
114
+ logger_1.Logger.log('');
115
+ }
116
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/project/list.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const selectCommand: Command;
3
+ //# sourceMappingURL=select.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../../src/commands/project/select.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,eAAO,MAAM,aAAa,SA2ItB,CAAC"}
@@ -0,0 +1,147 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.selectCommand = void 0;
7
+ const commander_1 = require("commander");
8
+ const logger_1 = require("../../utils/logger");
9
+ const config_1 = require("../../config");
10
+ const api_1 = require("../../api");
11
+ const spinner_1 = require("../../utils/spinner");
12
+ const inquirer_1 = __importDefault(require("inquirer"));
13
+ exports.selectCommand = new commander_1.Command('select')
14
+ .argument('[name-or-id]', 'Project name or ID to select')
15
+ .description('Select a project as the current active project')
16
+ .option('--json', 'Output as JSON')
17
+ .action(async (nameOrId, options) => {
18
+ try {
19
+ // Check authentication
20
+ if (!(await config_1.configManager.isAuthenticated())) {
21
+ logger_1.Logger.error('You must be logged in to select projects');
22
+ logger_1.Logger.info('Use ' + logger_1.Logger.highlight('kairo auth login') + ' to get started');
23
+ process.exit(1);
24
+ }
25
+ let projects = [];
26
+ let selectedProject = null;
27
+ // Fetch latest projects
28
+ const spinner = (0, spinner_1.createSpinner)('Fetching projects...').start();
29
+ try {
30
+ const client = (0, api_1.getApiClient)();
31
+ const result = await client.listProjects();
32
+ const apiProjects = result.projects;
33
+ // Convert API projects to config projects format
34
+ projects = apiProjects.map((p) => ({
35
+ id: p.id,
36
+ name: p.name,
37
+ description: p.description,
38
+ createdAt: p.created_at,
39
+ }));
40
+ // Sync with local storage
41
+ config_1.configManager.setProjects(projects);
42
+ spinner.succeed('Projects loaded');
43
+ }
44
+ catch (error) {
45
+ spinner.fail('Failed to fetch projects from API');
46
+ // Fallback to local projects
47
+ projects = config_1.configManager.getProjects();
48
+ if (projects.length > 0) {
49
+ logger_1.Logger.warn('Using locally cached projects');
50
+ }
51
+ else {
52
+ logger_1.Logger.error('No projects available. Create a project first with:');
53
+ logger_1.Logger.info(` ${logger_1.Logger.highlight('kairo project create <name>')}`);
54
+ process.exit(1);
55
+ }
56
+ }
57
+ if (projects.length === 0) {
58
+ logger_1.Logger.info('No projects found. Create a project first with:');
59
+ logger_1.Logger.info(` ${logger_1.Logger.highlight('kairo project create <name>')}`);
60
+ return;
61
+ }
62
+ // If no name/ID provided, prompt user to select
63
+ if (!nameOrId) {
64
+ const currentProject = config_1.configManager.getCurrentProject();
65
+ const choices = projects.map((p) => ({
66
+ name: `${p.name}${currentProject?.id === p.id ? ' (current)' : ''}`,
67
+ value: p.id,
68
+ short: p.name,
69
+ }));
70
+ const answers = await inquirer_1.default.prompt([
71
+ {
72
+ type: 'list',
73
+ name: 'projectId',
74
+ message: 'Select a project:',
75
+ choices,
76
+ pageSize: Math.min(10, projects.length),
77
+ },
78
+ ]);
79
+ selectedProject = projects.find((p) => p.id === answers.projectId) || null;
80
+ }
81
+ else {
82
+ // Find project by name or ID
83
+ selectedProject =
84
+ projects.find((p) => p.name.toLowerCase() === nameOrId.toLowerCase() || p.id === nameOrId) || null;
85
+ if (!selectedProject) {
86
+ // Try partial name match
87
+ const partialMatches = projects.filter((p) => p.name.toLowerCase().includes(nameOrId.toLowerCase()));
88
+ if (partialMatches.length === 1) {
89
+ selectedProject = partialMatches[0];
90
+ }
91
+ else if (partialMatches.length > 1) {
92
+ logger_1.Logger.error(`Multiple projects match "${nameOrId}":`);
93
+ for (const project of partialMatches) {
94
+ logger_1.Logger.log(` • ${project.name} (${project.id})`);
95
+ }
96
+ logger_1.Logger.info('Please be more specific or use the full project name');
97
+ process.exit(1);
98
+ }
99
+ else {
100
+ logger_1.Logger.error(`Project "${nameOrId}" not found`);
101
+ logger_1.Logger.info('Available projects:');
102
+ for (const project of projects) {
103
+ logger_1.Logger.log(` • ${project.name} (${project.id})`);
104
+ }
105
+ logger_1.Logger.info('Use ' + logger_1.Logger.highlight('kairo project list') + ' to see all projects');
106
+ process.exit(1);
107
+ }
108
+ }
109
+ }
110
+ if (!selectedProject) {
111
+ logger_1.Logger.error('No project selected');
112
+ process.exit(1);
113
+ }
114
+ // Set as current project
115
+ config_1.configManager.setCurrentProject(selectedProject.id);
116
+ if (options.json) {
117
+ console.log(JSON.stringify({
118
+ selected: true,
119
+ project: selectedProject,
120
+ }, null, 2));
121
+ }
122
+ else {
123
+ logger_1.Logger.success(`Project "${selectedProject.name}" selected`);
124
+ displayProjectInfo(selectedProject);
125
+ }
126
+ }
127
+ catch (error) {
128
+ logger_1.Logger.error('Failed to select project:', error instanceof Error ? error.message : String(error));
129
+ process.exit(1);
130
+ }
131
+ });
132
+ function displayProjectInfo(project) {
133
+ logger_1.Logger.log('');
134
+ logger_1.Logger.log(logger_1.Logger.bold('📁 Current Project'));
135
+ logger_1.Logger.log(` Name: ${logger_1.Logger.highlight(project.name)}`);
136
+ logger_1.Logger.log(` ID: ${logger_1.Logger.dim(project.id)}`);
137
+ if (project.description) {
138
+ logger_1.Logger.log(` Description: ${project.description}`);
139
+ }
140
+ logger_1.Logger.log(` Created: ${new Date(project.createdAt).toLocaleDateString()}`);
141
+ logger_1.Logger.log('');
142
+ logger_1.Logger.log(logger_1.Logger.bold('Next Steps:'));
143
+ logger_1.Logger.log(` • Scan contracts: ${logger_1.Logger.highlight('kairo scan ./contracts')}`);
144
+ logger_1.Logger.log(` • View project info: ${logger_1.Logger.highlight('kairo whoami')}`);
145
+ logger_1.Logger.log('');
146
+ }
147
+ //# sourceMappingURL=select.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select.js","sourceRoot":"","sources":["../../../src/commands/project/select.ts"],"names":[],"mappings":";;;;;;AAAA,yCAAoC;AACpC,+CAA4C;AAC5C,yCAAsD;AACtD,mCAA0D;AAC1D,iDAAoD;AACpD,wDAAgC;AAEnB,QAAA,aAAa,GAAG,IAAI,mBAAO,CAAC,QAAQ,CAAC;KAC/C,QAAQ,CAAC,cAAc,EAAE,8BAA8B,CAAC;KACxD,WAAW,CAAC,gDAAgD,CAAC;KAC7D,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KAClC,MAAM,CAAC,KAAK,EAAE,QAA4B,EAAE,OAA2B,EAAE,EAAE;IAC1E,IAAI,CAAC;QACH,uBAAuB;QACvB,IAAI,CAAC,CAAC,MAAM,sBAAa,CAAC,eAAe,EAAE,CAAC,EAAE,CAAC;YAC7C,eAAM,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;YACzD,eAAM,CAAC,IAAI,CAAC,MAAM,GAAG,eAAM,CAAC,SAAS,CAAC,kBAAkB,CAAC,GAAG,iBAAiB,CAAC,CAAC;YAC/E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,QAAQ,GAAc,EAAE,CAAC;QAC7B,IAAI,eAAe,GAAmB,IAAI,CAAC;QAE3C,wBAAwB;QACxB,MAAM,OAAO,GAAG,IAAA,uBAAa,EAAC,sBAAsB,CAAC,CAAC,KAAK,EAAE,CAAC;QAE9D,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAA,kBAAY,GAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,YAAY,EAAE,CAAC;YAC3C,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC;YAEpC,iDAAiD;YACjD,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACjC,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,WAAW,EAAE,CAAC,CAAC,WAAW;gBAC1B,SAAS,EAAE,CAAC,CAAC,UAAU;aACxB,CAAC,CAAC,CAAC;YAEJ,0BAA0B;YAC1B,sBAAa,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YACpC,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QACrC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;YAElD,6BAA6B;YAC7B,QAAQ,GAAG,sBAAa,CAAC,WAAW,EAAE,CAAC;YACvC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,eAAM,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;YAC/C,CAAC;iBAAM,CAAC;gBACN,eAAM,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;gBACpE,eAAM,CAAC,IAAI,CAAC,KAAK,eAAM,CAAC,SAAS,CAAC,6BAA6B,CAAC,EAAE,CAAC,CAAC;gBACpE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,eAAM,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;YAC/D,eAAM,CAAC,IAAI,CAAC,KAAK,eAAM,CAAC,SAAS,CAAC,6BAA6B,CAAC,EAAE,CAAC,CAAC;YACpE,OAAO;QACT,CAAC;QAED,gDAAgD;QAChD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,cAAc,GAAG,sBAAa,CAAC,iBAAiB,EAAE,CAAC;YACzD,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACnC,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,GAAG,cAAc,EAAE,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE;gBACnE,KAAK,EAAE,CAAC,CAAC,EAAE;gBACX,KAAK,EAAE,CAAC,CAAC,IAAI;aACd,CAAC,CAAC,CAAC;YAEJ,MAAM,OAAO,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;gBACpC;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,WAAW;oBACjB,OAAO,EAAE,mBAAmB;oBAC5B,OAAO;oBACP,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,MAAM,CAAC;iBACxC;aACF,CAAC,CAAC;YAEH,eAAe,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC;QAC7E,CAAC;aAAM,CAAC;YACN,6BAA6B;YAC7B,eAAe;gBACb,QAAQ,CAAC,IAAI,CACX,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,QAAQ,CAC5E,IAAI,IAAI,CAAC;YAEZ,IAAI,CAAC,eAAe,EAAE,CAAC;gBACrB,yBAAyB;gBACzB,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAC3C,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CACtD,CAAC;gBAEF,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAChC,eAAe,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;gBACtC,CAAC;qBAAM,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACrC,eAAM,CAAC,KAAK,CAAC,4BAA4B,QAAQ,IAAI,CAAC,CAAC;oBACvD,KAAK,MAAM,OAAO,IAAI,cAAc,EAAE,CAAC;wBACrC,eAAM,CAAC,GAAG,CAAC,OAAO,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC;oBACpD,CAAC;oBACD,eAAM,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;oBACpE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;qBAAM,CAAC;oBACN,eAAM,CAAC,KAAK,CAAC,YAAY,QAAQ,aAAa,CAAC,CAAC;oBAChD,eAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;oBACnC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;wBAC/B,eAAM,CAAC,GAAG,CAAC,OAAO,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC;oBACpD,CAAC;oBACD,eAAM,CAAC,IAAI,CAAC,MAAM,GAAG,eAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC,GAAG,sBAAsB,CAAC,CAAC;oBACtF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,eAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;YACpC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,yBAAyB;QACzB,sBAAa,CAAC,iBAAiB,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QAEpD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CACT,IAAI,CAAC,SAAS,CACZ;gBACE,QAAQ,EAAE,IAAI;gBACd,OAAO,EAAE,eAAe;aACzB,EACD,IAAI,EACJ,CAAC,CACF,CACF,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,eAAM,CAAC,OAAO,CAAC,YAAY,eAAe,CAAC,IAAI,YAAY,CAAC,CAAC;YAC7D,kBAAkB,CAAC,eAAe,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,eAAM,CAAC,KAAK,CACV,2BAA2B,EAC3B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CACvD,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,SAAS,kBAAkB,CAAC,OAAgB;IAC1C,eAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACf,eAAM,CAAC,GAAG,CAAC,eAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAC9C,eAAM,CAAC,GAAG,CAAC,WAAW,eAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACxD,eAAM,CAAC,GAAG,CAAC,SAAS,eAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9C,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACxB,eAAM,CAAC,GAAG,CAAC,kBAAkB,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IACtD,CAAC;IACD,eAAM,CAAC,GAAG,CAAC,cAAc,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;IAC7E,eAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACf,eAAM,CAAC,GAAG,CAAC,eAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;IACvC,eAAM,CAAC,GAAG,CAAC,uBAAuB,eAAM,CAAC,SAAS,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAC;IAChF,eAAM,CAAC,GAAG,CAAC,0BAA0B,eAAM,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IACzE,eAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACjB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const scanCommand: Command;
3
+ //# sourceMappingURL=scan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../src/commands/scan.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA6BpC,eAAO,MAAM,WAAW,SAiBpB,CAAC"}