@gkganesh12/codecraft-cli 1.0.1

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 (90) hide show
  1. package/README.md +99 -0
  2. package/dist/commands/adr.d.ts +2 -0
  3. package/dist/commands/adr.d.ts.map +1 -0
  4. package/dist/commands/adr.js +48 -0
  5. package/dist/commands/adr.js.map +1 -0
  6. package/dist/commands/architect.d.ts +2 -0
  7. package/dist/commands/architect.d.ts.map +1 -0
  8. package/dist/commands/architect.js +83 -0
  9. package/dist/commands/architect.js.map +1 -0
  10. package/dist/commands/code.d.ts +2 -0
  11. package/dist/commands/code.d.ts.map +1 -0
  12. package/dist/commands/code.js +111 -0
  13. package/dist/commands/code.js.map +1 -0
  14. package/dist/commands/config.d.ts +11 -0
  15. package/dist/commands/config.d.ts.map +1 -0
  16. package/dist/commands/config.js +101 -0
  17. package/dist/commands/config.js.map +1 -0
  18. package/dist/commands/doctor.d.ts +2 -0
  19. package/dist/commands/doctor.d.ts.map +1 -0
  20. package/dist/commands/doctor.js +36 -0
  21. package/dist/commands/doctor.js.map +1 -0
  22. package/dist/commands/explain.d.ts +2 -0
  23. package/dist/commands/explain.d.ts.map +1 -0
  24. package/dist/commands/explain.js +41 -0
  25. package/dist/commands/explain.js.map +1 -0
  26. package/dist/commands/feature.d.ts +2 -0
  27. package/dist/commands/feature.d.ts.map +1 -0
  28. package/dist/commands/feature.js +49 -0
  29. package/dist/commands/feature.js.map +1 -0
  30. package/dist/commands/init.d.ts +2 -0
  31. package/dist/commands/init.d.ts.map +1 -0
  32. package/dist/commands/init.js +63 -0
  33. package/dist/commands/init.js.map +1 -0
  34. package/dist/commands/plan.d.ts +2 -0
  35. package/dist/commands/plan.d.ts.map +1 -0
  36. package/dist/commands/plan.js +61 -0
  37. package/dist/commands/plan.js.map +1 -0
  38. package/dist/commands/review.d.ts +2 -0
  39. package/dist/commands/review.d.ts.map +1 -0
  40. package/dist/commands/review.js +41 -0
  41. package/dist/commands/review.js.map +1 -0
  42. package/dist/commands/test.d.ts +2 -0
  43. package/dist/commands/test.d.ts.map +1 -0
  44. package/dist/commands/test.js +48 -0
  45. package/dist/commands/test.js.map +1 -0
  46. package/dist/commands/update.d.ts +2 -0
  47. package/dist/commands/update.d.ts.map +1 -0
  48. package/dist/commands/update.js +31 -0
  49. package/dist/commands/update.js.map +1 -0
  50. package/dist/commands/verify.d.ts +2 -0
  51. package/dist/commands/verify.d.ts.map +1 -0
  52. package/dist/commands/verify.js +64 -0
  53. package/dist/commands/verify.js.map +1 -0
  54. package/dist/config/loader.d.ts +8 -0
  55. package/dist/config/loader.d.ts.map +1 -0
  56. package/dist/config/loader.js +35 -0
  57. package/dist/config/loader.js.map +1 -0
  58. package/dist/config/schema.d.ts +25 -0
  59. package/dist/config/schema.d.ts.map +1 -0
  60. package/dist/config/schema.js +19 -0
  61. package/dist/config/schema.js.map +1 -0
  62. package/dist/core/llm/client.d.ts +14 -0
  63. package/dist/core/llm/client.d.ts.map +1 -0
  64. package/dist/core/llm/client.js +28 -0
  65. package/dist/core/llm/client.js.map +1 -0
  66. package/dist/core/prompts/roles.d.ts +11 -0
  67. package/dist/core/prompts/roles.d.ts.map +1 -0
  68. package/dist/core/prompts/roles.js +238 -0
  69. package/dist/core/prompts/roles.js.map +1 -0
  70. package/dist/core/rules.d.ts +14 -0
  71. package/dist/core/rules.d.ts.map +1 -0
  72. package/dist/core/rules.js +39 -0
  73. package/dist/core/rules.js.map +1 -0
  74. package/dist/core/scanner.d.ts +6 -0
  75. package/dist/core/scanner.d.ts.map +1 -0
  76. package/dist/core/scanner.js +21 -0
  77. package/dist/core/scanner.js.map +1 -0
  78. package/dist/core/scope.d.ts +11 -0
  79. package/dist/core/scope.d.ts.map +1 -0
  80. package/dist/core/scope.js +34 -0
  81. package/dist/core/scope.js.map +1 -0
  82. package/dist/index.d.ts +3 -0
  83. package/dist/index.d.ts.map +1 -0
  84. package/dist/index.js +121 -0
  85. package/dist/index.js.map +1 -0
  86. package/dist/repl.d.ts +2 -0
  87. package/dist/repl.d.ts.map +1 -0
  88. package/dist/repl.js +148 -0
  89. package/dist/repl.js.map +1 -0
  90. package/package.json +59 -0
package/dist/repl.js ADDED
@@ -0,0 +1,148 @@
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.startRepl = startRepl;
7
+ const inquirer_1 = __importDefault(require("inquirer"));
8
+ const chalk_1 = __importDefault(require("chalk"));
9
+ const init_1 = require("./commands/init");
10
+ const plan_1 = require("./commands/plan");
11
+ const architect_1 = require("./commands/architect");
12
+ const code_1 = require("./commands/code");
13
+ const verify_1 = require("./commands/verify");
14
+ const feature_1 = require("./commands/feature");
15
+ const adr_1 = require("./commands/adr");
16
+ const test_1 = require("./commands/test");
17
+ const review_1 = require("./commands/review");
18
+ const explain_1 = require("./commands/explain");
19
+ const config_1 = require("./commands/config");
20
+ const update_1 = require("./commands/update");
21
+ const doctor_1 = require("./commands/doctor");
22
+ async function startRepl() {
23
+ console.clear();
24
+ console.log(chalk_1.default.bold.hex('#7C3AED')('CodeCraft CLI'));
25
+ console.log(chalk_1.default.dim('Type /help to see available commands.'));
26
+ console.log('');
27
+ while (true) {
28
+ try {
29
+ const answer = await inquirer_1.default.prompt([{
30
+ type: 'input',
31
+ name: 'command',
32
+ message: chalk_1.default.hex('#3B82F6')('CodeCraft >'),
33
+ prefix: ''
34
+ }]);
35
+ const input = answer.command.trim();
36
+ if (!input)
37
+ continue;
38
+ if (input.startsWith('/')) {
39
+ const [cmd, ...args] = input.slice(1).split(' ');
40
+ const argString = args.join(' ');
41
+ console.log(''); // Spacing
42
+ switch (cmd) {
43
+ case 'init':
44
+ await (0, init_1.initCommand)();
45
+ break;
46
+ case 'plan':
47
+ if (!argString) {
48
+ console.log(chalk_1.default.red('Usage: /plan <task description>'));
49
+ }
50
+ else {
51
+ await (0, plan_1.planCommand)(argString);
52
+ }
53
+ break;
54
+ case 'architect':
55
+ await (0, architect_1.architectCommand)();
56
+ break;
57
+ case 'code':
58
+ await (0, code_1.codeCommand)();
59
+ break;
60
+ case 'verify':
61
+ await (0, verify_1.verifyCommand)();
62
+ break;
63
+ case 'feature':
64
+ if (!argString)
65
+ console.log(chalk_1.default.red('Usage: /feature <description>'));
66
+ else
67
+ await (0, feature_1.featureCommand)(argString);
68
+ break;
69
+ case 'adr':
70
+ if (!argString)
71
+ console.log(chalk_1.default.red('Usage: /adr <title>'));
72
+ else
73
+ await (0, adr_1.adrCommand)(argString);
74
+ break;
75
+ case 'test':
76
+ if (!argString)
77
+ console.log(chalk_1.default.red('Usage: /test <file>'));
78
+ else
79
+ await (0, test_1.testCommand)(argString);
80
+ break;
81
+ case 'review':
82
+ if (!argString)
83
+ console.log(chalk_1.default.red('Usage: /review <file>'));
84
+ else
85
+ await (0, review_1.reviewCommand)(argString);
86
+ break;
87
+ case 'explain':
88
+ if (!argString)
89
+ console.log(chalk_1.default.red('Usage: /explain <file>'));
90
+ else
91
+ await (0, explain_1.explainCommand)(argString);
92
+ break;
93
+ case 'config':
94
+ await (0, config_1.configCommand)(args); // Pass split args for sub-commands
95
+ break;
96
+ case 'update':
97
+ await (0, update_1.updateCommand)();
98
+ break;
99
+ case 'doctor':
100
+ await (0, doctor_1.doctorCommand)();
101
+ break;
102
+ case 'help':
103
+ console.log(chalk_1.default.cyan(`
104
+ Available Commands:
105
+ /init Initialize project
106
+ /plan <task> Create implementation plan
107
+ /architect Validate plan
108
+ /code Generate code
109
+ /verify Verify changes
110
+ /feature Generate feature spec
111
+ /adr Generate ADR
112
+ /test Generate unit tests
113
+ /review Generate code review
114
+ /explain Explain code
115
+ /config Manage settings
116
+ /update Check for updates
117
+ /doctor Check health
118
+ /exit Exit CLI
119
+ `));
120
+ break;
121
+ case 'exit':
122
+ console.log(chalk_1.default.yellow('Goodbye! 👋'));
123
+ process.exit(0);
124
+ default:
125
+ console.log(chalk_1.default.red(`Unknown command: /${cmd}`));
126
+ }
127
+ console.log(''); // Spacing
128
+ }
129
+ else {
130
+ console.log(chalk_1.default.dim('Please use slash commands (e.g. /plan "task") or type /help.'));
131
+ }
132
+ }
133
+ catch (error) {
134
+ // Handle Ctrl+C seamlessly if possible, though inquirer throws
135
+ console.log('\n');
136
+ if (error.isTtyError) {
137
+ // Prompt couldn't be rendered in the current environment
138
+ }
139
+ else {
140
+ // Something else went wrong
141
+ // If it's a force close, exit
142
+ console.log(chalk_1.default.yellow('Goodbye! 👋'));
143
+ process.exit(0);
144
+ }
145
+ }
146
+ }
147
+ }
148
+ //# sourceMappingURL=repl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repl.js","sourceRoot":"","sources":["../src/repl.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,59 @@
1
+ {
2
+ "name": "@gkganesh12/codecraft-cli",
3
+ "version": "1.0.1",
4
+ "description": "AI Governance CLI for Developers",
5
+ "main": "dist/index.js",
6
+ "bin": {
7
+ "codecraft": "./dist/index.js"
8
+ },
9
+ "files": [
10
+ "dist",
11
+ "README.md",
12
+ "package.json"
13
+ ],
14
+ "publishConfig": {
15
+ "access": "public"
16
+ },
17
+ "repository": {
18
+ "type": "git",
19
+ "url": "https://github.com/gkganesh12/CodeCraft.git"
20
+ },
21
+ "keywords": [
22
+ "cli",
23
+ "ai",
24
+ "governance",
25
+ "agent",
26
+ "codecraft"
27
+ ],
28
+ "author": "Ganesh Khetawat",
29
+ "license": "MIT",
30
+ "scripts": {
31
+ "build": "tsc",
32
+ "prepublishOnly": "npm run build",
33
+ "start": "node dist/index.js",
34
+ "test": "echo \"Error: no test specified\" && exit 1"
35
+ },
36
+ "dependencies": {
37
+ "@anthropic-ai/sdk": "^0.74.0",
38
+ "chalk": "^5.6.2",
39
+ "commander": "^14.0.3",
40
+ "dotenv": "^17.3.1",
41
+ "fs-extra": "^11.3.3",
42
+ "glob": "^13.0.3",
43
+ "inquirer": "^13.2.2",
44
+ "isomorphic-git": "^1.37.1",
45
+ "minimatch": "^10.2.0",
46
+ "openai": "^6.22.0",
47
+ "ora": "^9.3.0",
48
+ "typescript": "^5.9.3",
49
+ "zod": "^4.3.6"
50
+ },
51
+ "devDependencies": {
52
+ "@types/fs-extra": "^11.0.4",
53
+ "@types/glob": "^8.1.0",
54
+ "@types/inquirer": "^9.0.9",
55
+ "@types/minimatch": "^5.1.2",
56
+ "@types/node": "^25.2.3",
57
+ "ts-node": "^10.9.2"
58
+ }
59
+ }