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.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "provider": "bytarch",
3
3
  "endpoint": "https://api.bytarch.dpdns.org/openai/v1/chat/completions",
4
- "model": "gpt-5-nano",
4
+ "model": "openai/gpt-oss-120b",
5
5
  "apiKey": "",
6
6
  "dryRun": true
7
- }
7
+ }
@@ -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
+ }
@@ -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,3 @@
1
+ export declare function runChat(): Promise<void>;
2
+ export default runChat;
3
+ //# sourceMappingURL=chat.d.ts.map
@@ -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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat.js","sourceRoot":"","sources":["../src/chat.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare class ChatCommand {
2
+ static execute(): Promise<void>;
3
+ }
4
+ //# sourceMappingURL=chat.d.ts.map
@@ -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('0.1.0');
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":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAEA,yCAAoC;AAEpC,kDAA0B;AAE1B,0CAA8C;AAC9C,0CAA8C;AAC9C,0CAA8C;AAC9C,0CAA8C;AAC9C,8CAAkD;AAClD,4CAAgD;AAChD,8CAAkD;AAClD,8CAAkD;AAIlD,IAAI,SAAS,GAAW,OAAO,CAAC;AAChC,IAAI,CAAC;IACH,MAAM,GAAG,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACvC,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC3C,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC;IAC1B,CAAC;AACH,CAAC;AAAC,MAAM,CAAC;IACP,gDAAgD;AAClD,CAAC;AAED,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,aAAa,CAAC;KACnB,WAAW,CAAC,oEAAoE,CAAC;KACjF,OAAO,CAAC,SAAS,CAAC,CAAC;AAEtB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,mCAAmC,CAAC;KAChD,MAAM,CAAC,aAAa,EAAE,uDAAuD,CAAC;KAC9E,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,IAAI,CAAC;QACH,MAAM,kBAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;QAC7F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,kCAAkC,CAAC;KAC/C,QAAQ,CAAC,eAAe,EAAE,6BAA6B,CAAC;KACxD,MAAM,CAAC,sBAAsB,EAAE,wCAAwC,CAAC;KACxE,MAAM,CAAC,eAAe,EAAE,4CAA4C,CAAC;KACrE,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE;IACrC,IAAI,CAAC;QACH,MAAM,kBAAW,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;QAC7F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,kCAAkC,CAAC;KAC/C,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAAC;KACvC,QAAQ,CAAC,WAAW,EAAE,gCAAgC,CAAC;KACvD,MAAM,CAAC,0BAA0B,EAAE,4BAA4B,CAAC;KAChE,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;IAC3C,IAAI,CAAC;QACH,MAAM,kBAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;QAC7F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,0CAA0C,CAAC;KACvD,MAAM,CAAC,YAAY,EAAE,sBAAsB,CAAC;KAC5C,MAAM,CAAC,aAAa,EAAE,yBAAyB,CAAC;KAChD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,IAAI,CAAC;QACH,MAAM,sBAAa,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;QAC7F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,2CAA2C,CAAC;KACxD,MAAM,CAAC,aAAa,EAAE,qDAAqD,CAAC;KAC5E,MAAM,CAAC,eAAe,EAAE,mDAAmD,CAAC;KAC5E,MAAM,CAAC,iBAAiB,EAAE,gDAAgD,CAAC;KAC3E,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,IAAI,CAAC;QACH,MAAM,oBAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;QAC7F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,gCAAgC,CAAC;KAC7C,MAAM,CAAC,eAAe,EAAE,2BAA2B,CAAC;KACpD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,IAAI,CAAC;QACH,MAAM,sBAAa,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;QAC7F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,mCAAmC,CAAC;KAChD,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,kBAAW,CAAC,OAAO,EAAE,CAAC;AAC9B,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,sBAAsB,CAAC;KACnC,MAAM,CAAC,uBAAuB,EAAE,yBAAyB,CAAC;KAC1D,MAAM,CAAC,iBAAiB,EAAE,yBAAyB,CAAC;KACpD,MAAM,CAAC,YAAY,EAAE,wBAAwB,CAAC;KAC9C,MAAM,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;KACpD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,IAAI,CAAC;QACH,MAAM,sBAAa,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;QAC7F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC"}
@@ -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;IAuCpD,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;CAKpE"}
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"}
@@ -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;AAvDD,0CAuDC"}
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.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.changes ?? 0} changes)`);
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
  }
@@ -0,0 +1,7 @@
1
+ import { runChat } from '../chat'
2
+
3
+ export class ChatCommand {
4
+ static async execute(): Promise<void> {
5
+ await runChat();
6
+ }
7
+ }
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('0.1.0');
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();
@@ -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
  }