bytarch-cli 0.1.1 → 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.
- package/.genie-cli/config.json +2 -2
- package/.genie-cli/plan.json +3 -4
- package/bin/bytarch-cli.js +15 -0
- package/dist/chat.d.ts +3 -0
- package/dist/chat.d.ts.map +1 -0
- package/dist/chat.js +160 -0
- package/dist/chat.js.map +1 -0
- package/dist/commands/chat.d.ts +4 -0
- package/dist/commands/chat.d.ts.map +1 -0
- package/dist/commands/chat.js +11 -0
- package/dist/commands/chat.js.map +1 -0
- package/dist/index.js +18 -1
- package/dist/index.js.map +1 -1
- package/dist/provider/bytarch.d.ts.map +1 -1
- package/dist/provider/bytarch.js +9 -0
- package/dist/provider/bytarch.js.map +1 -1
- package/package.json +2 -1
- package/scripts/test-demo.js +23 -0
- package/src/chat.ts +1 -1
- package/src/commands/chat.ts +7 -0
- package/src/index.ts +22 -2
- package/src/provider/bytarch.ts +9 -0
package/.genie-cli/config.json
CHANGED
package/.genie-cli/plan.json
CHANGED
|
@@ -2,9 +2,8 @@
|
|
|
2
2
|
"id": "default",
|
|
3
3
|
"title": "Project Plan",
|
|
4
4
|
"description": "Generated project plan",
|
|
5
|
-
"status": "pending",
|
|
6
5
|
"items": [],
|
|
7
6
|
"rationale": "",
|
|
8
|
-
"createdAt": "",
|
|
9
|
-
"updatedAt": ""
|
|
10
|
-
}
|
|
7
|
+
"createdAt": "2026-01-27T13:26:00.170Z",
|
|
8
|
+
"updatedAt": "2026-01-27T13:26:00.171Z"
|
|
9
|
+
}
|
package/bin/bytarch-cli.js
CHANGED
|
@@ -1,6 +1,21 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
3
|
require('../dist/index.js');
|
|
4
|
+
// If invoked with no subcommands, or with explicit 'chat', enter chat mode by default
|
|
5
|
+
try {
|
|
6
|
+
const argv = process.argv.slice(2);
|
|
7
|
+
const disableAutoChat = process.env.BYTARCH_DISABLE_CHAT_ON_LAUNCH === '1';
|
|
8
|
+
const shouldAutoChat = !disableAutoChat;
|
|
9
|
+
const firstArg = argv[0];
|
|
10
|
+
if ((argv.length === 0 || firstArg === 'chat') && shouldAutoChat) {
|
|
11
|
+
const chat = require('../dist/chat');
|
|
12
|
+
chat.runChat().catch((e) => {
|
|
13
|
+
console.error('Chat mode failed:', e);
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
} catch (e) {
|
|
17
|
+
// ignore
|
|
18
|
+
}
|
|
4
19
|
|
|
5
20
|
// If invoked with no subcommands, enter chat mode by default
|
|
6
21
|
try {
|
package/dist/chat.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../src/chat.ts"],"names":[],"mappings":"AAQA,wBAAsB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAiH7C;AAED,eAAe,OAAO,CAAC"}
|
package/dist/chat.js
ADDED
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.runChat = runChat;
|
|
37
|
+
const readline = __importStar(require("readline"));
|
|
38
|
+
const bytarch_1 = require("./provider/bytarch");
|
|
39
|
+
const config_1 = require("./workspace/config");
|
|
40
|
+
const edits_1 = require("./workspace/edits");
|
|
41
|
+
const prompts_1 = require("./ui/prompts");
|
|
42
|
+
const evaluation_1 = require("./provider/evaluation");
|
|
43
|
+
// Simple chat-first entry point with an explicit /apply flow inside chat.
|
|
44
|
+
async function runChat() {
|
|
45
|
+
const workspacePath = process.cwd() + '/.genie-cli';
|
|
46
|
+
const config = await new config_1.ConfigManager(workspacePath).loadConfig();
|
|
47
|
+
const apiKey = new config_1.ConfigManager(workspacePath).getApiKey(config);
|
|
48
|
+
const provider = new bytarch_1.BytarchProvider(config.endpoint, config.model, apiKey);
|
|
49
|
+
const editManager = new edits_1.EditManager(workspacePath);
|
|
50
|
+
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
51
|
+
prompts_1.UI.header('BYTARCH AI Chat (type your message; use /apply, /list, /help)');
|
|
52
|
+
const ask = (q) => new Promise(resolve => rl.question(q, ans => resolve(ans)));
|
|
53
|
+
// Simple REPL-like loop
|
|
54
|
+
while (true) {
|
|
55
|
+
const input = await ask('You: ');
|
|
56
|
+
const text = (input || '').trim();
|
|
57
|
+
if (!text)
|
|
58
|
+
break;
|
|
59
|
+
// Command handling
|
|
60
|
+
if (text.startsWith('/')) {
|
|
61
|
+
const [cmd, ...args] = text.slice(1).split(' ');
|
|
62
|
+
switch (cmd.toLowerCase()) {
|
|
63
|
+
case 'help':
|
|
64
|
+
prompts_1.UI.info('Commands:');
|
|
65
|
+
prompts_1.UI.list([
|
|
66
|
+
'/help - show this help',
|
|
67
|
+
'/list - list pending/available edits',
|
|
68
|
+
'/apply [id|all] - apply a specific patch or all accepted patches',
|
|
69
|
+
'/exit - quit chat'
|
|
70
|
+
]);
|
|
71
|
+
break;
|
|
72
|
+
case 'list': {
|
|
73
|
+
const edits = await editManager.listEdits();
|
|
74
|
+
if (edits.length === 0) {
|
|
75
|
+
prompts_1.UI.info('No edits found.');
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
edits.forEach(e => {
|
|
79
|
+
console.log(`- ${e.id} | ${e.path} | ${e.status} | ${e.description}`);
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
break;
|
|
83
|
+
}
|
|
84
|
+
case 'apply': {
|
|
85
|
+
// Apply one or more edits. If 'all', apply all accepted edits; if id, apply that patch.
|
|
86
|
+
const target = args.join(' ').trim();
|
|
87
|
+
const patches = await editManager.getPendingEdits();
|
|
88
|
+
const toApply = target ? patches.filter(p => p.id === target) : patches.filter(p => p.status === 'accepted');
|
|
89
|
+
if (toApply.length === 0) {
|
|
90
|
+
prompts_1.UI.warning('No edits available to apply for the given selector. Use /list to inspect edits.');
|
|
91
|
+
break;
|
|
92
|
+
}
|
|
93
|
+
const { Patcher } = await Promise.resolve().then(() => __importStar(require('./fs/patcher')));
|
|
94
|
+
const patcher = new Patcher(process.cwd());
|
|
95
|
+
for (const edit of toApply) {
|
|
96
|
+
prompts_1.UI.header(`Applying ${edit.path} (${edit.id})`);
|
|
97
|
+
const result = await patcher.applyPatch(edit);
|
|
98
|
+
if (result.success) {
|
|
99
|
+
await editManager.updateEditStatus(edit.id, 'applied');
|
|
100
|
+
prompts_1.UI.success(`Applied ${edit.path} (${result.appliedChanges ?? 0} changes)`);
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
prompts_1.UI.error(`Failed to apply ${edit.path}: ${result.error}`);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
break;
|
|
107
|
+
}
|
|
108
|
+
case 'exit':
|
|
109
|
+
case 'quit':
|
|
110
|
+
case 'close':
|
|
111
|
+
rl.close();
|
|
112
|
+
return;
|
|
113
|
+
default:
|
|
114
|
+
prompts_1.UI.warning('Unknown chat command. Type /help for options.');
|
|
115
|
+
}
|
|
116
|
+
continue;
|
|
117
|
+
}
|
|
118
|
+
// Regular chat message: send to AI and handle patch results
|
|
119
|
+
try {
|
|
120
|
+
const messages = [
|
|
121
|
+
{ role: 'system', content: 'You are a code-editing AI assistant. Return a JSON patch object when you want to edit a file.' },
|
|
122
|
+
{ role: 'user', content: text }
|
|
123
|
+
];
|
|
124
|
+
const response = await provider.chat(messages);
|
|
125
|
+
// Try to parse as JSON patch
|
|
126
|
+
try {
|
|
127
|
+
const patchObj = (0, evaluation_1.extractJsonFromResponse)(response);
|
|
128
|
+
// Expect { path, patch, description, rationale }
|
|
129
|
+
if (patchObj && patchObj.path && patchObj.patch) {
|
|
130
|
+
const edit = {
|
|
131
|
+
id: editManager.generateEditId(),
|
|
132
|
+
path: patchObj.path,
|
|
133
|
+
description: patchObj.description || '',
|
|
134
|
+
rationale: patchObj.rationale || '',
|
|
135
|
+
patch: patchObj.patch,
|
|
136
|
+
status: 'pending',
|
|
137
|
+
createdAt: new Date().toISOString(),
|
|
138
|
+
updatedAt: new Date().toISOString()
|
|
139
|
+
};
|
|
140
|
+
await editManager.saveEdit(edit);
|
|
141
|
+
prompts_1.UI.success(`New patch created for ${patchObj.path} (id: ${edit.id})`);
|
|
142
|
+
prompts_1.UI.info(`Type /apply ${edit.id} to apply, or /list to view edits.`);
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
prompts_1.UI.info(`AI: ${response}`);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
catch {
|
|
149
|
+
// Not a JSON patch, just print the AI response
|
|
150
|
+
prompts_1.UI.info(`AI: ${response}`);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
catch (err) {
|
|
154
|
+
prompts_1.UI.error(`AI error: ${err instanceof Error ? err.message : String(err)}`);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
rl.close();
|
|
158
|
+
}
|
|
159
|
+
exports.default = runChat;
|
|
160
|
+
//# sourceMappingURL=chat.js.map
|
package/dist/chat.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat.js","sourceRoot":"","sources":["../src/chat.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/commands/chat.ts"],"names":[],"mappings":"AAEA,qBAAa,WAAW;WACT,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAGtC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ChatCommand = void 0;
|
|
4
|
+
const chat_1 = require("../chat");
|
|
5
|
+
class ChatCommand {
|
|
6
|
+
static async execute() {
|
|
7
|
+
await (0, chat_1.runChat)();
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
exports.ChatCommand = ChatCommand;
|
|
11
|
+
//# sourceMappingURL=chat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat.js","sourceRoot":"","sources":["../../src/commands/chat.ts"],"names":[],"mappings":";;;AAAA,kCAAiC;AAEjC,MAAa,WAAW;IACtB,MAAM,CAAC,KAAK,CAAC,OAAO;QAClB,MAAM,IAAA,cAAO,GAAE,CAAC;IAClB,CAAC;CACF;AAJD,kCAIC"}
|
package/dist/index.js
CHANGED
|
@@ -7,17 +7,28 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
7
7
|
const commander_1 = require("commander");
|
|
8
8
|
const chalk_1 = __importDefault(require("chalk"));
|
|
9
9
|
const init_1 = require("./commands/init");
|
|
10
|
+
const chat_1 = require("./commands/chat");
|
|
10
11
|
const plan_1 = require("./commands/plan");
|
|
11
12
|
const edit_1 = require("./commands/edit");
|
|
12
13
|
const review_1 = require("./commands/review");
|
|
13
14
|
const apply_1 = require("./commands/apply");
|
|
14
15
|
const status_1 = require("./commands/status");
|
|
15
16
|
const config_1 = require("./commands/config");
|
|
17
|
+
let __version = '0.0.0';
|
|
18
|
+
try {
|
|
19
|
+
const pkg = require('../package.json');
|
|
20
|
+
if (pkg && typeof pkg.version === 'string') {
|
|
21
|
+
__version = pkg.version;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
// ignore if cannot read package.json at runtime
|
|
26
|
+
}
|
|
16
27
|
const program = new commander_1.Command();
|
|
17
28
|
program
|
|
18
29
|
.name('bytarch-cli')
|
|
19
30
|
.description('AI-powered CLI for project planning and code editing using BYTARCH')
|
|
20
|
-
.version(
|
|
31
|
+
.version(__version);
|
|
21
32
|
program
|
|
22
33
|
.command('init')
|
|
23
34
|
.description('Initialize a .genie-cli workspace')
|
|
@@ -103,6 +114,12 @@ program
|
|
|
103
114
|
process.exit(1);
|
|
104
115
|
}
|
|
105
116
|
});
|
|
117
|
+
program
|
|
118
|
+
.command('chat')
|
|
119
|
+
.description('Enter chat mode with AI assistant')
|
|
120
|
+
.action(async () => {
|
|
121
|
+
await chat_1.ChatCommand.execute();
|
|
122
|
+
});
|
|
106
123
|
program
|
|
107
124
|
.command('config')
|
|
108
125
|
.description('Manage configuration')
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAEA,yCAAoC;AAEpC,kDAA0B;AAE1B,0CAA8C;AAC9C,0CAA8C;AAC9C,0CAA8C;AAC9C,8CAAkD;AAClD,4CAAgD;AAChD,8CAAkD;AAClD,8CAAkD;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bytarch.d.ts","sourceRoot":"","sources":["../../src/provider/bytarch.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,KAAK,CAAC;QACb,OAAO,EAAE;YACP,IAAI,EAAE,MAAM,CAAC;YACb,OAAO,EAAE,MAAM,CAAC;SACjB,CAAC;KACH,CAAC,CAAC;IACH,KAAK,CAAC,EAAE;QACN,aAAa,EAAE,MAAM,CAAC;QACtB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,MAAM,CAAS;gBAEX,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAMrD,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"bytarch.d.ts","sourceRoot":"","sources":["../../src/provider/bytarch.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,KAAK,CAAC;QACb,OAAO,EAAE;YACP,IAAI,EAAE,MAAM,CAAC;YACb,OAAO,EAAE,MAAM,CAAC;SACjB,CAAC;KACH,CAAC,CAAC;IACH,KAAK,CAAC,EAAE;QACN,aAAa,EAAE,MAAM,CAAC;QACtB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,MAAM,CAAS;gBAEX,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAMrD,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAgDpD,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;CAKpE"}
|
package/dist/provider/bytarch.js
CHANGED
|
@@ -11,6 +11,15 @@ class BytarchProvider {
|
|
|
11
11
|
this.apiKey = apiKey;
|
|
12
12
|
}
|
|
13
13
|
async chat(messages) {
|
|
14
|
+
if (process.env.BYTARCH_TEST_MODE === '1') {
|
|
15
|
+
const patchObj = {
|
|
16
|
+
path: 'README.md',
|
|
17
|
+
description: 'Test patch in test mode',
|
|
18
|
+
rationale: 'Test patch for chat flow',
|
|
19
|
+
patch: '--- a/README.md\n+++ b/README.md\n@@ -0,0 +1,1 @@\n+Test patch'
|
|
20
|
+
};
|
|
21
|
+
return JSON.stringify(patchObj);
|
|
22
|
+
}
|
|
14
23
|
if (!this.apiKey) {
|
|
15
24
|
throw new Error('BYTARCH API key is required. Set BYTARCH_API_KEY environment variable or configure in .genie-cli/config.json');
|
|
16
25
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bytarch.js","sourceRoot":"","sources":["../../src/provider/bytarch.ts"],"names":[],"mappings":";;;AAmBA,MAAa,eAAe;IAClB,QAAQ,CAAS;IACjB,KAAK,CAAS;IACd,MAAM,CAAS;IAEvB,YAAY,QAAgB,EAAE,KAAa,EAAE,MAAc;QACzD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,QAAuB;QAChC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,8GAA8G,CAAC,CAAC;QAClI,CAAC;QAED,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAC1C,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;oBAClC,eAAe,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;iBACzC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,QAAQ;oBACR,MAAM,EAAE,KAAK;iBACd,CAAC;aACH,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACxC,MAAM,IAAI,KAAK,CAAC,+BAA+B,QAAQ,CAAC,MAAM,MAAM,SAAS,EAAE,CAAC,CAAC;YACnF,CAAC;YAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAoB,CAAC;YAExD,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC/C,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;YAClD,CAAC;YAED,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;QACzC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC3B,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC9D,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED,YAAY,CAAC,QAAgB,EAAE,KAAa,EAAE,MAAc;QAC1D,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF;
|
|
1
|
+
{"version":3,"file":"bytarch.js","sourceRoot":"","sources":["../../src/provider/bytarch.ts"],"names":[],"mappings":";;;AAmBA,MAAa,eAAe;IAClB,QAAQ,CAAS;IACjB,KAAK,CAAS;IACd,MAAM,CAAS;IAEvB,YAAY,QAAgB,EAAE,KAAa,EAAE,MAAc;QACzD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,QAAuB;QAChC,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,KAAK,GAAG,EAAE,CAAC;YAC1C,MAAM,QAAQ,GAAG;gBACf,IAAI,EAAE,WAAW;gBACjB,WAAW,EAAE,yBAAyB;gBACtC,SAAS,EAAE,0BAA0B;gBACrC,KAAK,EAAE,gEAAgE;aACxE,CAAC;YACF,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,8GAA8G,CAAC,CAAC;QAClI,CAAC;QAED,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAC1C,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;oBAClC,eAAe,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;iBACzC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,QAAQ;oBACR,MAAM,EAAE,KAAK;iBACd,CAAC;aACH,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACxC,MAAM,IAAI,KAAK,CAAC,+BAA+B,QAAQ,CAAC,MAAM,MAAM,SAAS,EAAE,CAAC,CAAC;YACnF,CAAC;YAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAoB,CAAC;YAExD,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC/C,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;YAClD,CAAC;YAED,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;QACzC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC3B,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC9D,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED,YAAY,CAAC,QAAgB,EAAE,KAAa,EAAE,MAAc;QAC1D,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF;AAhED,0CAgEC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bytarch-cli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.4",
|
|
4
4
|
"description": "AI-powered CLI for project planning and code editing using BYTARCH OpenAI-compatible API",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
"start": "node bin/bytarch-cli.js",
|
|
12
12
|
"dev": "ts-node src/index.ts",
|
|
13
13
|
"test": "jest",
|
|
14
|
+
"test-demo": "node scripts/test-demo.js",
|
|
14
15
|
"lint": "eslint src/**/*.ts",
|
|
15
16
|
"format": "prettier --write src/**/*.ts"
|
|
16
17
|
},
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// Simple end-to-end test demo for BYTARCH CLI in test mode.
|
|
2
|
+
// It auto-initializes, runs a plan in test mode, creates a test edit, and then exits.
|
|
3
|
+
const { spawnSync } = require('child_process');
|
|
4
|
+
|
|
5
|
+
function run(cmd, args, env) {
|
|
6
|
+
const result = spawnSync(cmd, args, { stdio: 'inherit', env: Object.assign({}, process.env, env) });
|
|
7
|
+
if (result.status !== 0) {
|
|
8
|
+
throw new Error(`Command failed: ${cmd} ${args.join(' ')}`);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
const envBase = { BYTARCH_TEST_MODE: '1', BYTARCH_API_KEY: 'dummy', BYTARCH_AUTO_INIT_YES: '1' };
|
|
13
|
+
|
|
14
|
+
console.log('--- Init (auto) ---');
|
|
15
|
+
run(process.execPath, ['bin/bytarch-cli.js', 'init'], envBase);
|
|
16
|
+
|
|
17
|
+
console.log('--- Plan (test mode) ---');
|
|
18
|
+
run(process.execPath, ['bin/bytarch-cli.js', 'plan', 'Test project'], envBase);
|
|
19
|
+
|
|
20
|
+
console.log('--- Create test edit (test mode) ---');
|
|
21
|
+
run(process.execPath, ['bin/bytarch-cli.js', 'edit', 'README.md', 'Add test content'], envBase);
|
|
22
|
+
|
|
23
|
+
console.log('Test demo completed.');
|
package/src/chat.ts
CHANGED
|
@@ -64,7 +64,7 @@ export async function runChat(): Promise<void> {
|
|
|
64
64
|
const result = await patcher.applyPatch(edit);
|
|
65
65
|
if (result.success) {
|
|
66
66
|
await editManager.updateEditStatus(edit.id, 'applied');
|
|
67
|
-
UI.success(`Applied ${edit.path} (${result.
|
|
67
|
+
UI.success(`Applied ${edit.path} (${result.appliedChanges ?? 0} changes)`);
|
|
68
68
|
} else {
|
|
69
69
|
UI.error(`Failed to apply ${edit.path}: ${result.error}`);
|
|
70
70
|
}
|
package/src/index.ts
CHANGED
|
@@ -5,6 +5,7 @@ import * as path from 'path';
|
|
|
5
5
|
import chalk from 'chalk';
|
|
6
6
|
|
|
7
7
|
import { InitCommand } from './commands/init';
|
|
8
|
+
import { ChatCommand } from './commands/chat';
|
|
8
9
|
import { PlanCommand } from './commands/plan';
|
|
9
10
|
import { EditCommand } from './commands/edit';
|
|
10
11
|
import { ReviewCommand } from './commands/review';
|
|
@@ -12,12 +13,24 @@ import { ApplyCommand } from './commands/apply';
|
|
|
12
13
|
import { StatusCommand } from './commands/status';
|
|
13
14
|
import { ConfigCommand } from './commands/config';
|
|
14
15
|
|
|
16
|
+
// Dynamically load version from root package.json to keep version in sync
|
|
17
|
+
declare var require: any;
|
|
18
|
+
let __version: string = '0.0.0';
|
|
19
|
+
try {
|
|
20
|
+
const pkg = require('../package.json');
|
|
21
|
+
if (pkg && typeof pkg.version === 'string') {
|
|
22
|
+
__version = pkg.version;
|
|
23
|
+
}
|
|
24
|
+
} catch {
|
|
25
|
+
// ignore if cannot read package.json at runtime
|
|
26
|
+
}
|
|
27
|
+
|
|
15
28
|
const program = new Command();
|
|
16
29
|
|
|
17
30
|
program
|
|
18
31
|
.name('bytarch-cli')
|
|
19
32
|
.description('AI-powered CLI for project planning and code editing using BYTARCH')
|
|
20
|
-
.version(
|
|
33
|
+
.version(__version);
|
|
21
34
|
|
|
22
35
|
program
|
|
23
36
|
.command('init')
|
|
@@ -104,6 +117,13 @@ program
|
|
|
104
117
|
}
|
|
105
118
|
});
|
|
106
119
|
|
|
120
|
+
program
|
|
121
|
+
.command('chat')
|
|
122
|
+
.description('Enter chat mode with AI assistant')
|
|
123
|
+
.action(async () => {
|
|
124
|
+
await ChatCommand.execute();
|
|
125
|
+
});
|
|
126
|
+
|
|
107
127
|
program
|
|
108
128
|
.command('config')
|
|
109
129
|
.description('Manage configuration')
|
|
@@ -120,4 +140,4 @@ program
|
|
|
120
140
|
}
|
|
121
141
|
});
|
|
122
142
|
|
|
123
|
-
program.parse();
|
|
143
|
+
program.parse();
|
package/src/provider/bytarch.ts
CHANGED
|
@@ -29,6 +29,15 @@ export class BytarchProvider {
|
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
async chat(messages: ChatMessage[]): Promise<string> {
|
|
32
|
+
if (process.env.BYTARCH_TEST_MODE === '1') {
|
|
33
|
+
const patchObj = {
|
|
34
|
+
path: 'README.md',
|
|
35
|
+
description: 'Test patch in test mode',
|
|
36
|
+
rationale: 'Test patch for chat flow',
|
|
37
|
+
patch: '--- a/README.md\n+++ b/README.md\n@@ -0,0 +1,1 @@\n+Test patch'
|
|
38
|
+
};
|
|
39
|
+
return JSON.stringify(patchObj);
|
|
40
|
+
}
|
|
32
41
|
if (!this.apiKey) {
|
|
33
42
|
throw new Error('BYTARCH API key is required. Set BYTARCH_API_KEY environment variable or configure in .genie-cli/config.json');
|
|
34
43
|
}
|