@sworddut/myclaw 0.1.1 → 0.2.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.
package/README.md CHANGED
@@ -10,7 +10,7 @@ A CLI coding agent scaffold (TypeScript + oclif).
10
10
  - execa (tool execution)
11
11
  - cosmiconfig + dotenv (config)
12
12
  - zod (schema)
13
- - better-sqlite3 (storage, reserved for next step)
13
+ - in-memory session store (v0.2.0 baseline)
14
14
  - vitest (tests)
15
15
 
16
16
  ## Quick start
@@ -60,10 +60,16 @@ node ./bin/run.js run --nonInteractive "implement hello world"
60
60
  # Init local config files
61
61
  node ./bin/run.js init
62
62
 
63
- # Scaffolded chat mode
63
+ # Interactive chat mode
64
64
  node ./bin/run.js chat
65
65
  ```
66
66
 
67
+ ## Message Model
68
+
69
+ - Roles: `system`, `user`, `assistant`, `tool`
70
+ - Runtime: event-loop turn processing with tool execution feedback
71
+ - Context policy: system prompt + sliding window of recent 20 messages
72
+
67
73
  File mutation safety rules:
68
74
  - Existing files must be `read_file` before `write_file`/`apply_patch`.
69
75
  - New file creation is blocked by default. Use `write_file` with `allowCreate=true` only when explicitly needed.
@@ -84,10 +90,10 @@ src/config/ # config loader + schema
84
90
  test/ # tests
85
91
  ```
86
92
 
87
- ## Known Limitations (v0.1-alpha)
93
+ ## Known Limitations (v0.2.0)
88
94
 
89
95
  - Tool-calling protocol is JSON-in-text parsing, not native function-calling.
90
- - No persistent conversation/session memory yet.
96
+ - Session memory is in-process only (no persistent storage yet).
91
97
  - No git-aware safety flow (branching, checkpoint, rollback) yet.
92
98
  - Network/API retries and timeout policies are still basic.
93
99
  - Permission model is coarse-grained; no per-tool policy profile yet.
@@ -1,5 +1,10 @@
1
1
  import { Command } from '@oclif/core';
2
2
  export default class Chat extends Command {
3
3
  static description: string;
4
+ static flags: {
5
+ quiet: import("@oclif/core/interfaces").BooleanFlag<boolean>;
6
+ verboseModel: import("@oclif/core/interfaces").BooleanFlag<boolean>;
7
+ nonInteractive: import("@oclif/core/interfaces").BooleanFlag<boolean>;
8
+ };
4
9
  run(): Promise<void>;
5
10
  }
@@ -1,8 +1,108 @@
1
- import { Command } from '@oclif/core';
1
+ import { Command, Flags } from '@oclif/core';
2
+ import { createInterface } from 'node:readline/promises';
3
+ import { stdin as stdIn, stdout as stdOut } from 'node:process';
4
+ import { closeAgentSession, createAgentSession, runAgentTurn } from '../core/agent.js';
5
+ const ANSI = {
6
+ reset: '\x1b[0m',
7
+ red: '\x1b[31m',
8
+ bold: '\x1b[1m',
9
+ cyan: '\x1b[36m'
10
+ };
11
+ function red(text) {
12
+ return `${ANSI.red}${text}${ANSI.reset}`;
13
+ }
14
+ function redBold(text) {
15
+ return `${ANSI.red}${ANSI.bold}${text}${ANSI.reset}`;
16
+ }
17
+ function cyan(text) {
18
+ return `${ANSI.cyan}${text}${ANSI.reset}`;
19
+ }
20
+ function now() {
21
+ return new Date().toISOString();
22
+ }
23
+ function shorten(text, max = 500) {
24
+ if (text.length <= max)
25
+ return text;
26
+ return `${text.slice(0, max)}\n...[truncated]`;
27
+ }
28
+ function formatEvent(event) {
29
+ switch (event.type) {
30
+ case 'start':
31
+ return `[${now()}] START provider=${event.provider} model=${event.model} workspace=${event.workspace} session=${event.sessionId}`;
32
+ case 'model_response':
33
+ return `[${now()}] MODEL_RESPONSE step=${event.step}\n${shorten(event.content)}`;
34
+ case 'tool_call':
35
+ return `[${now()}] TOOL_CALL step=${event.step} tool=${event.tool} input=${JSON.stringify(event.input)}`;
36
+ case 'tool_result':
37
+ return `[${now()}] TOOL_RESULT step=${event.step} tool=${event.tool} ok=${event.ok}\n${shorten(event.output)}`;
38
+ case 'final':
39
+ return `[${now()}] FINAL step=${event.step}\n${shorten(event.content)}`;
40
+ case 'max_steps':
41
+ return `[${now()}] MAX_STEPS step=${event.step}`;
42
+ }
43
+ }
2
44
  export default class Chat extends Command {
3
- static description = 'Interactive chat mode (scaffold only)';
45
+ static description = 'Interactive chat mode with in-memory session loop';
46
+ static flags = {
47
+ quiet: Flags.boolean({ description: 'hide execution logs and show only assistant responses' }),
48
+ verboseModel: Flags.boolean({ description: 'show raw model responses for each step' }),
49
+ nonInteractive: Flags.boolean({ description: 'disable interactive approval for sensitive commands' })
50
+ };
4
51
  async run() {
5
- this.log('chat mode is scaffolded; interactive session will be implemented in next step.');
52
+ const { flags } = await this.parse(Chat);
53
+ const rl = createInterface({ input: stdIn, output: stdOut });
54
+ let sessionId = '';
55
+ try {
56
+ sessionId = await createAgentSession({
57
+ onEvent: flags.quiet
58
+ ? undefined
59
+ : (event) => {
60
+ if (event.type === 'model_response' && !flags.verboseModel)
61
+ return;
62
+ if (event.type === 'final')
63
+ return;
64
+ this.log(formatEvent(event));
65
+ }
66
+ });
67
+ this.log(cyan('myclaw chat started. Type /exit to quit.'));
68
+ while (true) {
69
+ const input = (await rl.question(cyan('you> '))).trim();
70
+ if (!input)
71
+ continue;
72
+ if (input === '/exit' || input === '/quit')
73
+ break;
74
+ const output = await runAgentTurn(sessionId, input, {
75
+ onSensitiveAction: async ({ tool, command }) => {
76
+ if (flags.nonInteractive || !stdIn.isTTY) {
77
+ this.log(red(`[${now()}] ⚠️ SENSITIVE_REQUEST tool=${tool} auto=deny (non-interactive) command=${command}`));
78
+ return false;
79
+ }
80
+ this.log(redBold(`[${now()}] 🚨 WAITING FOR USER INPUT`));
81
+ this.log(red(`[${now()}] ⚠️ SENSITIVE_REQUEST tool=${tool} command=${command}`));
82
+ const answer = (await rl.question(redBold('🛑 Allow this sensitive command? [y/N] ')))
83
+ .trim()
84
+ .toLowerCase();
85
+ return answer === 'y' || answer === 'yes';
86
+ },
87
+ onEvent: flags.quiet
88
+ ? undefined
89
+ : (event) => {
90
+ if (event.type === 'model_response' && !flags.verboseModel)
91
+ return;
92
+ if (event.type === 'final')
93
+ return;
94
+ this.log(formatEvent(event));
95
+ }
96
+ });
97
+ this.log(cyan('assistant>'));
98
+ this.log(output);
99
+ }
100
+ }
101
+ finally {
102
+ if (sessionId)
103
+ closeAgentSession(sessionId);
104
+ rl.close();
105
+ }
6
106
  }
7
107
  }
8
108
  //# sourceMappingURL=chat.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chat.js","sourceRoot":"","sources":["../../src/commands/chat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,aAAa,CAAA;AAEnC,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,OAAO;IACvC,MAAM,CAAU,WAAW,GAAG,uCAAuC,CAAA;IAE9D,KAAK,CAAC,GAAG;QACd,IAAI,CAAC,GAAG,CAAC,gFAAgF,CAAC,CAAA;IAC5F,CAAC"}
1
+ {"version":3,"file":"chat.js","sourceRoot":"","sources":["../../src/commands/chat.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ export type AgentEvent = {
4
4
  provider: string;
5
5
  model: string;
6
6
  workspace: string;
7
+ sessionId: string;
7
8
  } | {
8
9
  type: 'model_response';
9
10
  step: number;
@@ -30,10 +31,14 @@ export type AgentEvent = {
30
31
  type AgentRunOptions = {
31
32
  onEvent?: (event: AgentEvent) => void;
32
33
  maxSteps?: number;
34
+ contextWindowSize?: number;
33
35
  onSensitiveAction?: (request: {
34
36
  tool: ToolName;
35
37
  command: string;
36
38
  }) => Promise<boolean> | boolean;
37
39
  };
40
+ export declare function createAgentSession(options?: AgentRunOptions): Promise<string>;
41
+ export declare function runAgentTurn(sessionId: string, userMessage: string, options?: AgentRunOptions): Promise<string>;
42
+ export declare function closeAgentSession(sessionId: string): void;
38
43
  export declare function runAgentTask(task: string, options?: AgentRunOptions): Promise<string>;
39
44
  export {};
@@ -3,6 +3,8 @@ import { MockProvider } from '../providers/mock-provider.js';
3
3
  import { OpenAIProvider } from '../providers/openai-provider.js';
4
4
  import { applyTextPatch, fileExists, listFiles, readTextFile, resolveWorkspacePath, writeTextFile } from '../tools/filesystem.js';
5
5
  import { runShell } from '../tools/shell.js';
6
+ import { InMemorySessionStore } from './session-store.js';
7
+ const sessionStore = new InMemorySessionStore();
6
8
  function nonEmpty(value) {
7
9
  if (!value)
8
10
  return undefined;
@@ -103,7 +105,7 @@ function mutationCount(calls) {
103
105
  return calls.filter((call) => call.tool === 'write_file' || call.tool === 'apply_patch').length;
104
106
  }
105
107
  function readBeforeWriteError(tool, path) {
106
- return `${tool} rejected: existing file '${path}' must be read_file first in this run.`;
108
+ return `${tool} rejected: existing file '${path}' must be read_file first in this session.`;
107
109
  }
108
110
  function createFileRejectedError(path) {
109
111
  return `write_file rejected: '${path}' does not exist. Read related files first and use apply_patch, or set allowCreate=true only when explicit file creation is required.`;
@@ -118,36 +120,36 @@ function looksDestructiveCommand(command) {
118
120
  /\brmdir\b/,
119
121
  /\bunlink\b/,
120
122
  /\bdel\b/,
121
- /\brd\b/, // windows remove directory shorthand can appear in scripts
123
+ /\brd\b/,
122
124
  /\bmv\b.+\s\/dev\/null/,
123
125
  /\bgit\s+reset\s+--hard\b/,
124
126
  /\bgit\s+clean\b/
125
127
  ];
126
128
  return patterns.some((pattern) => pattern.test(text));
127
129
  }
128
- async function executeTool(toolCall, workspace, state, options) {
130
+ async function executeTool(toolCall, session, options) {
129
131
  try {
130
132
  switch (toolCall.tool) {
131
133
  case 'read_file': {
132
134
  const path = String(toolCall.input.path ?? '');
133
- const content = await readTextFile(workspace, path);
134
- state.readPaths.add(resolveWorkspacePath(workspace, path));
135
+ const content = await readTextFile(session.workspace, path);
136
+ session.readPaths.add(resolveWorkspacePath(session.workspace, path));
135
137
  return { ok: true, output: content };
136
138
  }
137
139
  case 'write_file': {
138
140
  const path = String(toolCall.input.path ?? '');
139
141
  const content = String(toolCall.input.content ?? '');
140
142
  const allowCreate = Boolean(toolCall.input.allowCreate ?? false);
141
- const existing = await fileExists(workspace, path);
142
- const canonicalPath = resolveWorkspacePath(workspace, path);
143
+ const existing = await fileExists(session.workspace, path);
144
+ const canonicalPath = resolveWorkspacePath(session.workspace, path);
143
145
  if (!existing && !allowCreate) {
144
146
  return { ok: false, output: createFileRejectedError(path) };
145
147
  }
146
- if (existing && !state.readPaths.has(canonicalPath)) {
148
+ if (existing && !session.readPaths.has(canonicalPath)) {
147
149
  return { ok: false, output: readBeforeWriteError('write_file', path) };
148
150
  }
149
- await writeTextFile(workspace, path, content);
150
- state.readPaths.add(canonicalPath);
151
+ await writeTextFile(session.workspace, path, content);
152
+ session.readPaths.add(canonicalPath);
151
153
  return { ok: true, output: `Wrote file: ${path}` };
152
154
  }
153
155
  case 'apply_patch': {
@@ -155,21 +157,21 @@ async function executeTool(toolCall, workspace, state, options) {
155
157
  const search = String(toolCall.input.search ?? '');
156
158
  const replace = String(toolCall.input.replace ?? '');
157
159
  const replaceAll = Boolean(toolCall.input.replaceAll ?? false);
158
- const existing = await fileExists(workspace, path);
159
- const canonicalPath = resolveWorkspacePath(workspace, path);
160
+ const existing = await fileExists(session.workspace, path);
161
+ const canonicalPath = resolveWorkspacePath(session.workspace, path);
160
162
  if (!existing) {
161
163
  return { ok: false, output: `apply_patch rejected: '${path}' does not exist.` };
162
164
  }
163
- if (existing && !state.readPaths.has(canonicalPath)) {
165
+ if (!session.readPaths.has(canonicalPath)) {
164
166
  return { ok: false, output: readBeforeWriteError('apply_patch', path) };
165
167
  }
166
- const output = await applyTextPatch(workspace, path, search, replace, replaceAll);
167
- state.readPaths.add(canonicalPath);
168
+ const output = await applyTextPatch(session.workspace, path, search, replace, replaceAll);
169
+ session.readPaths.add(canonicalPath);
168
170
  return { ok: true, output };
169
171
  }
170
172
  case 'list_files': {
171
173
  const path = String(toolCall.input.path ?? '.');
172
- const files = await listFiles(workspace, path);
174
+ const files = await listFiles(session.workspace, path);
173
175
  return { ok: true, output: files.join('\n') || '(empty directory)' };
174
176
  }
175
177
  case 'run_shell': {
@@ -180,7 +182,7 @@ async function executeTool(toolCall, workspace, state, options) {
180
182
  return { ok: false, output: shellDangerRejectedError(command) };
181
183
  }
182
184
  }
183
- const output = await runShell(command, workspace);
185
+ const output = await runShell(command, session.workspace);
184
186
  return { ok: true, output };
185
187
  }
186
188
  default:
@@ -192,72 +194,89 @@ async function executeTool(toolCall, workspace, state, options) {
192
194
  return { ok: false, output: message };
193
195
  }
194
196
  }
195
- export async function runAgentTask(task, options = {}) {
197
+ function buildSystemPrompt(workspace) {
198
+ return [
199
+ `You are a coding agent running in workspace: ${workspace}.`,
200
+ 'When you need to operate files or shell, respond with ONLY JSON:',
201
+ '{"type":"tool_call","tool":"read_file|write_file|apply_patch|list_files|run_shell","input":{...}}',
202
+ 'Available tools:',
203
+ '- read_file: {"path":"relative/path"}',
204
+ '- write_file: {"path":"relative/path","content":"...","allowCreate":false} (single-file full rewrite)',
205
+ '- apply_patch: {"path":"relative/path","search":"old text","replace":"new text","replaceAll":false}',
206
+ '- list_files: {"path":"relative/path optional"}',
207
+ '- run_shell: {"command":"..."}',
208
+ 'Rules:',
209
+ '- Existing files MUST be read_file before write_file/apply_patch.',
210
+ '- New file creation is blocked by default.',
211
+ '- To create files, write_file input.allowCreate=true is required.',
212
+ '- Destructive shell commands (e.g., rm/rmdir/unlink/del/git reset --hard/git clean) are sensitive and need approval.',
213
+ '- You may call multiple read_file tools in one response.',
214
+ '- At most one mutation tool (write_file or apply_patch) per response.',
215
+ 'Use relative paths. Never wrap JSON with extra prose when calling tools.',
216
+ 'When finished, return a normal natural-language summary.'
217
+ ].join('\n');
218
+ }
219
+ function buildContext(messages, windowSize) {
220
+ const systemMessage = messages.find((message) => message.role === 'system');
221
+ const nonSystem = messages.filter((message) => message.role !== 'system');
222
+ const recent = nonSystem.slice(-windowSize);
223
+ return systemMessage ? [systemMessage, ...recent] : recent;
224
+ }
225
+ export async function createAgentSession(options = {}) {
196
226
  const config = await loadConfig();
197
227
  const resolvedModel = resolveModel(config.model);
198
228
  const provider = providerFromConfig(config.provider, resolvedModel, config.baseURL);
199
229
  const workspace = config.workspace;
200
- const maxSteps = options.maxSteps ?? 8;
230
+ const systemPrompt = buildSystemPrompt(workspace);
231
+ const created = sessionStore.create({
232
+ provider,
233
+ workspace,
234
+ readPaths: new Set(),
235
+ messages: [{ role: 'system', content: systemPrompt }]
236
+ });
201
237
  options.onEvent?.({
202
238
  type: 'start',
203
239
  provider: config.provider,
204
240
  model: resolvedModel,
205
- workspace
241
+ workspace,
242
+ sessionId: created.id
206
243
  });
207
- const messages = [
208
- {
209
- role: 'system',
210
- content: [
211
- `You are a coding agent running in workspace: ${workspace}.`,
212
- 'When you need to operate files or shell, respond with ONLY JSON:',
213
- '{"type":"tool_call","tool":"read_file|write_file|apply_patch|list_files|run_shell","input":{...}}',
214
- 'Available tools:',
215
- '- read_file: {"path":"relative/path"}',
216
- '- write_file: {"path":"relative/path","content":"...","allowCreate":false} (single-file full rewrite)',
217
- '- apply_patch: {"path":"relative/path","search":"old text","replace":"new text","replaceAll":false}',
218
- '- list_files: {"path":"relative/path optional"}',
219
- '- run_shell: {"command":"..."}',
220
- 'Rules:',
221
- '- Existing files MUST be read_file before write_file/apply_patch.',
222
- '- New file creation is blocked by default.',
223
- '- To create files, write_file input.allowCreate=true is required.',
224
- '- Destructive shell commands (e.g., rm/rmdir/unlink/del/git reset --hard/git clean) are blocked.',
225
- '- You may call multiple read_file tools in one response.',
226
- '- At most one mutation tool (write_file or apply_patch) per response.',
227
- 'Use relative paths. Never wrap JSON with extra prose when calling tools.',
228
- 'When finished, return a normal natural-language summary.'
229
- ].join('\n')
230
- },
231
- { role: 'user', content: task }
232
- ];
233
- const state = { readPaths: new Set() };
244
+ return created.id;
245
+ }
246
+ export async function runAgentTurn(sessionId, userMessage, options = {}) {
247
+ const session = sessionStore.get(sessionId);
248
+ const maxSteps = options.maxSteps ?? 8;
249
+ const contextWindowSize = options.contextWindowSize ?? 20;
250
+ session.messages.push({ role: 'user', content: userMessage });
234
251
  for (let step = 0; step < maxSteps; step += 1) {
235
- const assistantText = await provider.chat(messages);
252
+ const context = buildContext(session.messages, contextWindowSize);
253
+ const assistantText = await session.provider.chat(context);
236
254
  options.onEvent?.({ type: 'model_response', step, content: assistantText });
255
+ session.messages.push({ role: 'assistant', content: assistantText });
237
256
  const toolCalls = parseToolCalls(assistantText);
238
257
  if (toolCalls.length === 0) {
239
258
  options.onEvent?.({ type: 'final', step, content: assistantText });
240
259
  return assistantText;
241
260
  }
242
- messages.push({ role: 'assistant', content: assistantText });
243
261
  if (mutationCount(toolCalls) > 1) {
244
262
  const output = 'Batch rejected: only one mutation tool (write_file/apply_patch) is allowed per step.';
263
+ const mutationTool = toolCalls.find((call) => call.tool === 'write_file' || call.tool === 'apply_patch');
245
264
  options.onEvent?.({
246
265
  type: 'tool_result',
247
266
  step,
248
- tool: toolCalls.find((call) => call.tool === 'write_file' || call.tool === 'apply_patch')?.tool ?? 'write_file',
267
+ tool: mutationTool?.tool ?? 'write_file',
249
268
  ok: false,
250
269
  output
251
270
  });
252
- messages.push({
253
- role: 'user',
271
+ session.messages.push({
272
+ role: 'tool',
254
273
  content: `TOOL_RESULT ${JSON.stringify({ tool: 'batch_validation', ok: false, output })}`
255
274
  });
256
275
  continue;
257
276
  }
258
277
  for (const toolCall of toolCalls) {
259
278
  options.onEvent?.({ type: 'tool_call', step, tool: toolCall.tool, input: toolCall.input });
260
- const result = await executeTool(toolCall, workspace, state, options);
279
+ const result = await executeTool(toolCall, session, options);
261
280
  options.onEvent?.({
262
281
  type: 'tool_result',
263
282
  step,
@@ -265,8 +284,8 @@ export async function runAgentTask(task, options = {}) {
265
284
  ok: result.ok,
266
285
  output: result.output
267
286
  });
268
- messages.push({
269
- role: 'user',
287
+ session.messages.push({
288
+ role: 'tool',
270
289
  content: `TOOL_RESULT ${JSON.stringify({ tool: toolCall.tool, ...result })}`
271
290
  });
272
291
  }
@@ -274,4 +293,16 @@ export async function runAgentTask(task, options = {}) {
274
293
  options.onEvent?.({ type: 'max_steps', step: maxSteps });
275
294
  return 'Stopped after maximum tool steps. Please refine the task and retry.';
276
295
  }
296
+ export function closeAgentSession(sessionId) {
297
+ sessionStore.delete(sessionId);
298
+ }
299
+ export async function runAgentTask(task, options = {}) {
300
+ const sessionId = await createAgentSession(options);
301
+ try {
302
+ return await runAgentTurn(sessionId, task, options);
303
+ }
304
+ finally {
305
+ closeAgentSession(sessionId);
306
+ }
307
+ }
277
308
  //# sourceMappingURL=agent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/core/agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/core/agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { ChatMessage, LLMProvider } from '../providers/types.js';
2
+ export type AgentSession = {
3
+ id: string;
4
+ provider: LLMProvider;
5
+ workspace: string;
6
+ messages: ChatMessage[];
7
+ readPaths: Set<string>;
8
+ };
9
+ export declare class InMemorySessionStore {
10
+ private readonly sessions;
11
+ create(session: Omit<AgentSession, 'id'>): AgentSession;
12
+ get(sessionId: string): AgentSession;
13
+ delete(sessionId: string): void;
14
+ }
@@ -0,0 +1,20 @@
1
+ import { randomUUID } from 'node:crypto';
2
+ export class InMemorySessionStore {
3
+ sessions = new Map();
4
+ create(session) {
5
+ const id = randomUUID();
6
+ const created = { id, ...session };
7
+ this.sessions.set(id, created);
8
+ return created;
9
+ }
10
+ get(sessionId) {
11
+ const session = this.sessions.get(sessionId);
12
+ if (!session)
13
+ throw new Error(`Session not found: ${sessionId}`);
14
+ return session;
15
+ }
16
+ delete(sessionId) {
17
+ this.sessions.delete(sessionId);
18
+ }
19
+ }
20
+ //# sourceMappingURL=session-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-store.js","sourceRoot":"","sources":["../../src/core/session-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,aAAa,CAAA;AAWtC,MAAM,OAAO,oBAAoB;IACd,QAAQ,GAAG,IAAI,GAAG,EAAwB,CAAA;IAE3D,MAAM,CAAC,OAAiC;QACtC,MAAM,EAAE,GAAG,UAAU,EAAE,CAAA;QACvB,MAAM,OAAO,GAAiB,EAAC,EAAE,EAAE,GAAG,OAAO,EAAC,CAAA;QAC9C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;QAC9B,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,GAAG,CAAC,SAAiB;QACnB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QAC5C,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,SAAS,EAAE,CAAC,CAAA;QAChE,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,MAAM,CAAC,SAAiB;QACtB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;IACjC,CAAC;CACF"}
@@ -49,9 +49,21 @@ export class OpenAIProvider {
49
49
  });
50
50
  }
51
51
  async chat(messages) {
52
+ const mappedMessages = messages.map((message) => {
53
+ if (message.role === 'tool') {
54
+ return {
55
+ role: 'user',
56
+ content: `[tool] ${message.content}`
57
+ };
58
+ }
59
+ return {
60
+ role: message.role,
61
+ content: message.content
62
+ };
63
+ });
52
64
  const completion = await this.client.chat.completions.create({
53
65
  model: this.model,
54
- messages
66
+ messages: mappedMessages
55
67
  });
56
68
  const content = extractText(completion);
57
69
  if (!content) {
@@ -1 +1 @@
1
- {"version":3,"file":"openai-provider.js","sourceRoot":"","sources":["../../src/providers/openai-provider.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAA;AAS3B,SAAS,eAAe,CAAC,KAAc;IACrC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,2BAA2B,CAAA;IACpC,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,IAAS;IAC5B,MAAM,cAAc,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAA;IAC3D,IAAI,OAAO,cAAc,KAAK,QAAQ,IAAI,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC;QAChE,OAAO,cAAc,CAAA;IACvB,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,cAAc;aAC1B,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE;YACjB,IAAI,OAAO,IAAI,KAAK,QAAQ;gBAAE,OAAO,IAAI,CAAA;YACzC,IAAI,OAAO,IAAI,EAAE,IAAI,KAAK,QAAQ;gBAAE,OAAO,IAAI,CAAC,IAAI,CAAA;YACpD,OAAO,EAAE,CAAA;QACX,CAAC,CAAC;aACD,IAAI,CAAC,EAAE,CAAC;aACR,IAAI,EAAE,CAAA;QACT,IAAI,MAAM;YAAE,OAAO,MAAM,CAAA;IAC3B,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAA;IAC1C,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;QACtD,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,IAAI,OAAO,IAAI,EAAE,WAAW,KAAK,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC;QACrE,OAAO,IAAI,CAAC,WAAW,CAAA;IACzB,CAAC;IAED,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,MAAM,OAAO,cAAc;IAChB,IAAI,GAAG,QAAQ,CAAA;IACP,MAAM,CAAQ;IACd,KAAK,CAAQ;IAE9B,YAAY,OAA8B;QACxC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAA;QAC1B,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,IAAI,2BAA2B,CAAA;QACjE,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;QAC9C,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC;YACvB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,OAAO;SACR,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,QAAuB;QAChC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;YAC3D,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,QAAQ;SACT,CAAC,CAAA;QACF,MAAM,OAAO,GAAG,WAAW,CAAC,UAAU,CAAC,CAAA;QAEvC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,2DAA2D,eAAe,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;QAC3G,CAAC;QAED,OAAO,OAAO,CAAA;IAChB,CAAC;CACF"}
1
+ {"version":3,"file":"openai-provider.js","sourceRoot":"","sources":["../../src/providers/openai-provider.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  export type ChatMessage = {
2
- role: 'system' | 'user' | 'assistant';
2
+ role: 'system' | 'user' | 'assistant' | 'tool';
3
3
  content: string;
4
4
  };
5
5
  export interface LLMProvider {
@@ -1,9 +1,20 @@
1
1
  import { execa } from 'execa';
2
+ function resolveShell() {
3
+ if (process.env.SHELL?.trim())
4
+ return process.env.SHELL;
5
+ if (process.platform === 'win32')
6
+ return process.env.ComSpec || 'cmd.exe';
7
+ return true;
8
+ }
2
9
  export async function runShell(command, cwd = process.cwd()) {
3
- const { stdout, stderr, exitCode } = await execa('zsh', ['-lc', command], { cwd, reject: false });
10
+ const { stdout, stderr, exitCode } = await execa(command, {
11
+ cwd,
12
+ reject: false,
13
+ shell: resolveShell()
14
+ });
4
15
  const header = `exit_code=${exitCode}`;
5
16
  if (!stdout && !stderr)
6
- return '(no output)';
17
+ return `${header}\n(no output)`;
7
18
  return [header, stdout, stderr].filter(Boolean).join('\n');
8
19
  }
9
20
  //# sourceMappingURL=shell.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"shell.js","sourceRoot":"","sources":["../../src/tools/shell.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,OAAO,CAAA;AAE3B,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAAe,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IACjE,MAAM,EAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAC,GAAG,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,EAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAC,CAAC,CAAA;IAC7F,MAAM,MAAM,GAAG,aAAa,QAAQ,EAAE,CAAA;IACtC,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM;QAAE,OAAO,aAAa,CAAA;IAC5C,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC5D,CAAC"}
1
+ {"version":3,"file":"shell.js","sourceRoot":"","sources":["../../src/tools/shell.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,OAAO,CAAA;AAE3B,SAAS,YAAY;IACnB,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,CAAA;IACvD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,SAAS,CAAA;IACzE,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAAe,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IACjE,MAAM,EAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAC,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE;QACtD,GAAG;QACH,MAAM,EAAE,KAAK;QACb,KAAK,EAAE,YAAY,EAAE;KACtB,CAAC,CAAA;IACF,MAAM,MAAM,GAAG,aAAa,QAAQ,EAAE,CAAA;IACtC,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM;QAAE,OAAO,GAAG,MAAM,eAAe,CAAA;IACvD,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC5D,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sworddut/myclaw",
3
- "version": "0.1.1",
3
+ "version": "0.2.1",
4
4
  "private": false,
5
5
  "description": "A CLI coding agent inspired by Claude Code",
6
6
  "type": "module",
@@ -19,7 +19,6 @@
19
19
  },
20
20
  "dependencies": {
21
21
  "@oclif/core": "^4.2.9",
22
- "better-sqlite3": "^11.8.1",
23
22
  "cosmiconfig": "^9.0.0",
24
23
  "dotenv": "^16.5.0",
25
24
  "execa": "^9.6.0",