@sunilp-org/jam-cli 0.1.0 → 0.1.2

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 (110) hide show
  1. package/README.md +431 -63
  2. package/dist/commands/ask.d.ts +4 -0
  3. package/dist/commands/ask.d.ts.map +1 -1
  4. package/dist/commands/ask.js +202 -10
  5. package/dist/commands/ask.js.map +1 -1
  6. package/dist/commands/commit.d.ts +12 -0
  7. package/dist/commands/commit.d.ts.map +1 -0
  8. package/dist/commands/commit.js +135 -0
  9. package/dist/commands/commit.js.map +1 -0
  10. package/dist/commands/config.d.ts.map +1 -1
  11. package/dist/commands/config.js +2 -1
  12. package/dist/commands/config.js.map +1 -1
  13. package/dist/commands/context.d.ts +12 -0
  14. package/dist/commands/context.d.ts.map +1 -0
  15. package/dist/commands/context.js +52 -0
  16. package/dist/commands/context.js.map +1 -0
  17. package/dist/commands/review.d.ts +25 -0
  18. package/dist/commands/review.d.ts.map +1 -0
  19. package/dist/commands/review.js +117 -0
  20. package/dist/commands/review.js.map +1 -0
  21. package/dist/commands/run.d.ts +1 -0
  22. package/dist/commands/run.d.ts.map +1 -1
  23. package/dist/commands/run.js +199 -197
  24. package/dist/commands/run.js.map +1 -1
  25. package/dist/config/loader.d.ts.map +1 -1
  26. package/dist/config/loader.js +39 -3
  27. package/dist/config/loader.js.map +1 -1
  28. package/dist/index.js +63 -1
  29. package/dist/index.js.map +1 -1
  30. package/dist/providers/base.d.ts +26 -0
  31. package/dist/providers/base.d.ts.map +1 -1
  32. package/dist/providers/embedded.d.ts +20 -0
  33. package/dist/providers/embedded.d.ts.map +1 -0
  34. package/dist/providers/embedded.js +302 -0
  35. package/dist/providers/embedded.js.map +1 -0
  36. package/dist/providers/factory.d.ts.map +1 -1
  37. package/dist/providers/factory.js +25 -1
  38. package/dist/providers/factory.js.map +1 -1
  39. package/dist/providers/groq.d.ts +16 -0
  40. package/dist/providers/groq.d.ts.map +1 -0
  41. package/dist/providers/groq.js +23 -0
  42. package/dist/providers/groq.js.map +1 -0
  43. package/dist/providers/ollama.d.ts +6 -1
  44. package/dist/providers/ollama.d.ts.map +1 -1
  45. package/dist/providers/ollama.js +77 -4
  46. package/dist/providers/ollama.js.map +1 -1
  47. package/dist/providers/openai.d.ts +18 -0
  48. package/dist/providers/openai.d.ts.map +1 -0
  49. package/dist/providers/openai.js +229 -0
  50. package/dist/providers/openai.js.map +1 -0
  51. package/dist/tools/all-tools.d.ts +18 -0
  52. package/dist/tools/all-tools.d.ts.map +1 -0
  53. package/dist/tools/all-tools.js +95 -0
  54. package/dist/tools/all-tools.js.map +1 -0
  55. package/dist/tools/apply_patch.js +1 -1
  56. package/dist/tools/apply_patch.js.map +1 -1
  57. package/dist/tools/context-tools.d.ts +14 -0
  58. package/dist/tools/context-tools.d.ts.map +1 -0
  59. package/dist/tools/context-tools.js +63 -0
  60. package/dist/tools/context-tools.js.map +1 -0
  61. package/dist/tools/git_diff.js +1 -1
  62. package/dist/tools/git_diff.js.map +1 -1
  63. package/dist/tools/git_status.js +1 -1
  64. package/dist/tools/git_status.js.map +1 -1
  65. package/dist/tools/registry.d.ts.map +1 -1
  66. package/dist/tools/registry.js +2 -0
  67. package/dist/tools/registry.js.map +1 -1
  68. package/dist/tools/run_command.d.ts +8 -3
  69. package/dist/tools/run_command.d.ts.map +1 -1
  70. package/dist/tools/run_command.js +90 -3
  71. package/dist/tools/run_command.js.map +1 -1
  72. package/dist/ui/chat.d.ts.map +1 -1
  73. package/dist/ui/chat.js +173 -1
  74. package/dist/ui/chat.js.map +1 -1
  75. package/dist/ui/logo.d.ts.map +1 -1
  76. package/dist/ui/logo.js +5 -1
  77. package/dist/ui/logo.js.map +1 -1
  78. package/dist/utils/agent.d.ts +130 -0
  79. package/dist/utils/agent.d.ts.map +1 -0
  80. package/dist/utils/agent.js +449 -0
  81. package/dist/utils/agent.js.map +1 -0
  82. package/dist/utils/cache.d.ts +30 -0
  83. package/dist/utils/cache.d.ts.map +1 -0
  84. package/dist/utils/cache.js +62 -0
  85. package/dist/utils/cache.js.map +1 -0
  86. package/dist/utils/context.d.ts +38 -0
  87. package/dist/utils/context.d.ts.map +1 -0
  88. package/dist/utils/context.js +383 -0
  89. package/dist/utils/context.js.map +1 -0
  90. package/dist/utils/critic.d.ts +31 -0
  91. package/dist/utils/critic.d.ts.map +1 -0
  92. package/dist/utils/critic.js +126 -0
  93. package/dist/utils/critic.js.map +1 -0
  94. package/dist/utils/index-builder.d.ts +53 -0
  95. package/dist/utils/index-builder.d.ts.map +1 -0
  96. package/dist/utils/index-builder.js +241 -0
  97. package/dist/utils/index-builder.js.map +1 -0
  98. package/dist/utils/memory.d.ts +104 -0
  99. package/dist/utils/memory.d.ts.map +1 -0
  100. package/dist/utils/memory.js +215 -0
  101. package/dist/utils/memory.js.map +1 -0
  102. package/dist/utils/past-sessions.d.ts +31 -0
  103. package/dist/utils/past-sessions.d.ts.map +1 -0
  104. package/dist/utils/past-sessions.js +126 -0
  105. package/dist/utils/past-sessions.js.map +1 -0
  106. package/dist/utils/tokens.d.ts +53 -0
  107. package/dist/utils/tokens.d.ts.map +1 -0
  108. package/dist/utils/tokens.js +138 -0
  109. package/dist/utils/tokens.js.map +1 -0
  110. package/package.json +6 -2
@@ -0,0 +1,117 @@
1
+ import { execFile } from 'node:child_process';
2
+ import { promisify } from 'node:util';
3
+ import { loadConfig, getActiveProfile } from '../config/loader.js';
4
+ import { createProvider } from '../providers/factory.js';
5
+ import { withRetry, collectStream } from '../utils/stream.js';
6
+ import { streamToStdout, printJsonResult, printError } from '../ui/renderer.js';
7
+ import { JamError } from '../utils/errors.js';
8
+ import { getWorkspaceRoot } from '../utils/workspace.js';
9
+ const execFileAsync = promisify(execFile);
10
+ // ── Git helpers ────────────────────────────────────────────────────────────────
11
+ /**
12
+ * Returns the diff between the current branch and the given base ref.
13
+ * Uses `git diff <base>...HEAD` (three-dot) to show only changes introduced
14
+ * on the current branch since it diverged from base.
15
+ */
16
+ export async function getBranchDiff(cwd, base) {
17
+ const mergeBase = await getMergeBase(cwd, base);
18
+ try {
19
+ const { stdout } = await execFileAsync('git', ['diff', mergeBase, 'HEAD'], { cwd, maxBuffer: 4 * 1024 * 1024 });
20
+ return stdout.trim();
21
+ }
22
+ catch (err) {
23
+ throw new JamError(`Failed to compute diff against "${base}". Is this a git repository with commits?`, 'TOOL_EXEC_ERROR', { cause: err });
24
+ }
25
+ }
26
+ export async function getMergeBase(cwd, base) {
27
+ try {
28
+ const { stdout } = await execFileAsync('git', ['merge-base', base, 'HEAD'], { cwd });
29
+ return stdout.trim();
30
+ }
31
+ catch (err) {
32
+ throw new JamError(`Could not find merge-base with "${base}". Does the base branch exist?`, 'TOOL_EXEC_ERROR', { cause: err });
33
+ }
34
+ }
35
+ /**
36
+ * Returns the diff for a specific PR number using the GitHub CLI (`gh`).
37
+ * Requires `gh` to be installed and authenticated.
38
+ */
39
+ export async function getPrDiff(cwd, pr) {
40
+ try {
41
+ const { stdout } = await execFileAsync('gh', ['pr', 'diff', String(pr)], { cwd, maxBuffer: 4 * 1024 * 1024 });
42
+ return stdout.trim();
43
+ }
44
+ catch (err) {
45
+ throw new JamError(`Failed to fetch diff for PR #${pr}. Make sure the GitHub CLI (gh) is installed and authenticated.`, 'TOOL_EXEC_ERROR', { cause: err });
46
+ }
47
+ }
48
+ /**
49
+ * Returns the current branch name.
50
+ */
51
+ export async function getCurrentBranch(cwd) {
52
+ try {
53
+ const { stdout } = await execFileAsync('git', ['rev-parse', '--abbrev-ref', 'HEAD'], { cwd });
54
+ return stdout.trim();
55
+ }
56
+ catch (err) {
57
+ throw new JamError('Failed to determine the current branch.', 'TOOL_EXEC_ERROR', { cause: err });
58
+ }
59
+ }
60
+ // ── Prompt builder ─────────────────────────────────────────────────────────────
61
+ export function buildReviewPrompt(diff, context) {
62
+ return (`${context}\n\n` +
63
+ `Please provide a thorough code review covering:\n` +
64
+ `1. **Summary** — a concise overview of what changed\n` +
65
+ `2. **Potential Issues** — bugs, edge cases, security concerns, or performance problems\n` +
66
+ `3. **Suggestions** — improvements to readability, maintainability, or correctness\n\n` +
67
+ `\`\`\`diff\n${diff}\n\`\`\``);
68
+ }
69
+ // ── Main command ───────────────────────────────────────────────────────────────
70
+ export async function runReview(options = {}) {
71
+ try {
72
+ const workspaceRoot = await getWorkspaceRoot();
73
+ const base = options.base ?? 'main';
74
+ let diff;
75
+ let context;
76
+ if (options.pr !== undefined) {
77
+ diff = await getPrDiff(workspaceRoot, options.pr);
78
+ context = `Reviewing PR #${options.pr}.`;
79
+ }
80
+ else {
81
+ const branch = await getCurrentBranch(workspaceRoot);
82
+ diff = await getBranchDiff(workspaceRoot, base);
83
+ context =
84
+ branch === base
85
+ ? `Reviewing unstaged/uncommitted changes on "${base}".`
86
+ : `Reviewing changes on branch "${branch}" compared to "${base}".`;
87
+ }
88
+ if (!diff) {
89
+ process.stdout.write('No differences found. Nothing to review.\n');
90
+ return;
91
+ }
92
+ const config = await loadConfig(process.cwd(), options);
93
+ const profile = getActiveProfile(config);
94
+ const adapter = await createProvider(profile);
95
+ const prompt = buildReviewPrompt(diff, context);
96
+ const request = {
97
+ messages: [{ role: 'user', content: prompt }],
98
+ model: profile.model,
99
+ temperature: profile.temperature,
100
+ maxTokens: profile.maxTokens,
101
+ systemPrompt: profile.systemPrompt,
102
+ };
103
+ if (options.json) {
104
+ const { text, usage } = await collectStream(withRetry(() => adapter.streamCompletion(request)));
105
+ printJsonResult({ response: text, usage, model: profile.model });
106
+ }
107
+ else {
108
+ await streamToStdout(withRetry(() => adapter.streamCompletion(request)));
109
+ }
110
+ }
111
+ catch (err) {
112
+ const jamErr = JamError.fromUnknown(err);
113
+ await printError(jamErr.message);
114
+ process.exit(1);
115
+ }
116
+ }
117
+ //# sourceMappingURL=review.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review.js","sourceRoot":"","sources":["../../src/commands/review.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import type { CliOverrides } from '../config/schema.js';
2
2
  export interface RunOptions extends CliOverrides {
3
3
  noColor?: boolean;
4
+ quiet?: boolean;
4
5
  }
5
6
  export declare function runRun(instruction: string | undefined, options: RunOptions): Promise<void>;
6
7
  //# sourceMappingURL=run.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAc,MAAM,qBAAqB,CAAC;AAGpE,MAAM,WAAW,UAAW,SAAQ,YAAY;IAC9C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAiKD,wBAAsB,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAsHhG"}
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGxD,MAAM,WAAW,UAAW,SAAQ,YAAY;IAC9C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAcD,wBAAsB,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAwPhG"}
@@ -1,107 +1,17 @@
1
1
  import { createInterface } from 'node:readline/promises';
2
2
  import { loadConfig, getActiveProfile } from '../config/loader.js';
3
- import { printError, printWarning } from '../ui/renderer.js';
3
+ import { createProvider } from '../providers/factory.js';
4
+ import { printError, printWarning, renderMarkdown } from '../ui/renderer.js';
4
5
  import { JamError } from '../utils/errors.js';
5
6
  import { getWorkspaceRoot } from '../utils/workspace.js';
6
- // Inline tool definitions for the run command (mirrors src/tools/ implementations)
7
- const TOOL_SCHEMAS = [
8
- {
9
- type: 'function',
10
- function: {
11
- name: 'read_file',
12
- description: 'Read the contents of a file',
13
- parameters: {
14
- type: 'object',
15
- properties: {
16
- path: { type: 'string', description: 'File path relative to workspace root' },
17
- start_line: { type: 'number', description: 'Start line (optional)' },
18
- end_line: { type: 'number', description: 'End line (optional)' },
19
- },
20
- required: ['path'],
21
- },
22
- },
23
- },
24
- {
25
- type: 'function',
26
- function: {
27
- name: 'list_dir',
28
- description: 'List files and directories in a path',
29
- parameters: {
30
- type: 'object',
31
- properties: { path: { type: 'string', description: 'Directory path (default: ".")' } },
32
- required: [],
33
- },
34
- },
35
- },
36
- {
37
- type: 'function',
38
- function: {
39
- name: 'search_text',
40
- description: 'Search for text in the codebase using ripgrep',
41
- parameters: {
42
- type: 'object',
43
- properties: {
44
- query: { type: 'string', description: 'Search query (regex supported)' },
45
- glob: { type: 'string', description: 'File glob pattern (e.g. "*.ts")' },
46
- max_results: { type: 'number', description: 'Max results (default 20)' },
47
- },
48
- required: ['query'],
49
- },
50
- },
51
- },
52
- {
53
- type: 'function',
54
- function: {
55
- name: 'git_status',
56
- description: 'Get current git status',
57
- parameters: { type: 'object', properties: {}, required: [] },
58
- },
59
- },
60
- {
61
- type: 'function',
62
- function: {
63
- name: 'git_diff',
64
- description: 'Get git diff',
65
- parameters: {
66
- type: 'object',
67
- properties: {
68
- staged: { type: 'boolean', description: 'Show staged changes' },
69
- path: { type: 'string', description: 'Limit to a specific path' },
70
- },
71
- required: [],
72
- },
73
- },
74
- },
75
- {
76
- type: 'function',
77
- function: {
78
- name: 'write_file',
79
- description: 'Write content to a file (requires confirmation)',
80
- parameters: {
81
- type: 'object',
82
- properties: {
83
- path: { type: 'string', description: 'File path' },
84
- content: { type: 'string', description: 'File content' },
85
- mode: { type: 'string', description: '"overwrite" or "append" (default: overwrite)' },
86
- },
87
- required: ['path', 'content'],
88
- },
89
- },
90
- },
91
- {
92
- type: 'function',
93
- function: {
94
- name: 'apply_patch',
95
- description: 'Apply a unified diff patch (requires confirmation)',
96
- parameters: {
97
- type: 'object',
98
- properties: { patch: { type: 'string', description: 'Unified diff content' } },
99
- required: ['patch'],
100
- },
101
- },
102
- },
103
- ];
104
- const READONLY_TOOLS = new Set(['read_file', 'list_dir', 'search_text', 'git_status', 'git_diff']);
7
+ import { ALL_TOOL_SCHEMAS, READONLY_TOOL_NAMES, executeTool } from '../tools/all-tools.js';
8
+ import { ToolCallTracker, loadProjectContext, buildSystemPrompt, enrichUserPrompt, generateSearchPlan, buildSynthesisReminder, formatToolCall, formatToolResult, formatSeparator, formatDuplicateSkip, formatHintInjection, formatUsage, formatPlanBlock, formatInternalStatus, } from '../utils/agent.js';
9
+ import { WorkingMemory } from '../utils/memory.js';
10
+ import { ToolResultCache } from '../utils/cache.js';
11
+ import { criticEvaluate, buildCriticCorrection } from '../utils/critic.js';
12
+ import { searchPastSessions, formatPastExchanges } from '../utils/past-sessions.js';
13
+ import { getOrBuildIndex, searchSymbols, formatSymbolResults } from '../utils/index-builder.js';
14
+ import { updateContextWithUsage } from '../utils/context.js';
105
15
  async function confirmToolCall(toolName, args) {
106
16
  process.stderr.write(`\n[Tool Request] ${toolName}\n`);
107
17
  process.stderr.write(`Arguments: ${JSON.stringify(args, null, 2)}\n`);
@@ -110,127 +20,219 @@ async function confirmToolCall(toolName, args) {
110
20
  rl.close();
111
21
  return answer.toLowerCase() === 'y';
112
22
  }
113
- async function executeTool(toolName, args, workspaceRoot, policy) {
114
- const isReadonly = READONLY_TOOLS.has(toolName);
115
- if (!isReadonly) {
116
- if (policy === 'never') {
117
- throw new JamError(`Tool "${toolName}" is a write tool and policy is set to "never"`, 'TOOL_DENIED');
118
- }
119
- if (policy === 'ask_every_time') {
120
- const allowed = await confirmToolCall(toolName, args);
121
- if (!allowed) {
122
- throw new JamError(`Tool "${toolName}" was denied by the user`, 'TOOL_DENIED');
123
- }
124
- }
125
- }
126
- // Lazy import the tool implementation from the tools layer
127
- const { createDefaultRegistry } = await import('../tools/registry.js');
128
- const registry = createDefaultRegistry();
129
- const result = await registry.get(toolName)?.execute(args, { workspaceRoot, cwd: process.cwd() });
130
- if (!result) {
131
- throw new JamError(`Unknown tool: ${toolName}`, 'TOOL_NOT_FOUND');
132
- }
133
- return result.error ? `Error: ${result.error}` : result.output;
134
- }
135
23
  export async function runRun(instruction, options) {
136
24
  if (!instruction) {
137
25
  await printError('Provide an instruction. Usage: jam run "<instruction>"');
138
26
  process.exit(1);
139
27
  }
140
28
  try {
29
+ const noColor = options.noColor ?? false;
30
+ const stderrLog = options.quiet ? (_msg) => { } : (msg) => process.stderr.write(msg);
141
31
  const workspaceRoot = await getWorkspaceRoot();
142
32
  const config = await loadConfig(process.cwd(), options);
143
33
  const profile = getActiveProfile(config);
144
- process.stderr.write(`Starting task: ${instruction}\n`);
145
- process.stderr.write(`Provider: ${profile.provider}, Model: ${profile.model ?? 'default'}\n\n`);
146
- const messages = [
147
- {
148
- role: 'user',
149
- content: instruction,
150
- },
151
- ];
34
+ const adapter = await createProvider(profile);
35
+ stderrLog(`Starting task: ${instruction}\n`);
36
+ stderrLog(`Provider: ${profile.provider}, Model: ${profile.model ?? 'default'}\n`);
37
+ // Load project context
38
+ const { jamContext, workspaceCtx } = await loadProjectContext(workspaceRoot);
152
39
  const systemPrompt = profile.systemPrompt ??
153
- `You are a developer assistant with access to the local codebase. ` +
154
- `Use the provided tools to read files, search code, and make changes. ` +
155
- `Always validate your changes. Workspace root: ${workspaceRoot}`;
156
- // Agentic loop up to 10 iterations
157
- const MAX_ITERATIONS = 10;
158
- for (let iteration = 0; iteration < MAX_ITERATIONS; iteration++) {
159
- const baseUrl = profile.baseUrl ?? 'http://localhost:11434';
160
- const model = profile.model ?? 'llama3.2';
161
- // Call Ollama with tools
162
- let response;
163
- try {
164
- response = await fetch(`${baseUrl.replace(/\/$/, '')}/api/chat`, {
165
- method: 'POST',
166
- headers: { 'Content-Type': 'application/json' },
167
- body: JSON.stringify({
168
- model,
169
- messages: [
170
- { role: 'system', content: systemPrompt },
171
- ...messages.map((m) => ({ role: m.role, content: m.content })),
172
- ],
173
- tools: TOOL_SCHEMAS,
174
- stream: false,
175
- }),
176
- signal: AbortSignal.timeout(120_000),
177
- });
40
+ buildSystemPrompt(jamContext, workspaceCtx, { mode: 'readwrite', workspaceRoot });
41
+ const memory = new WorkingMemory(adapter, profile.model, systemPrompt);
42
+ const cache = new ToolResultCache();
43
+ // ── Symbol index + past sessions ──────────────────────────────────────
44
+ let symbolHint = '';
45
+ try {
46
+ const index = await getOrBuildIndex(workspaceRoot);
47
+ const symbols = searchSymbols(index, instruction, 10);
48
+ symbolHint = formatSymbolResults(symbols);
49
+ }
50
+ catch { /* non-fatal */ }
51
+ let pastContext = '';
52
+ try {
53
+ const pastExchanges = await searchPastSessions(instruction, workspaceRoot, 2);
54
+ pastContext = formatPastExchanges(pastExchanges);
55
+ }
56
+ catch { /* non-fatal */ }
57
+ // ── Planning phase ────────────────────────────────────────────────────
58
+ stderrLog(formatSeparator('Planning', noColor));
59
+ const projectCtxForPlan = [jamContext ?? workspaceCtx, symbolHint, pastContext].filter(Boolean).join('\n\n');
60
+ const searchPlan = await generateSearchPlan(adapter, instruction, projectCtxForPlan, {
61
+ model: profile.model,
62
+ temperature: profile.temperature,
63
+ maxTokens: profile.maxTokens,
64
+ });
65
+ if (searchPlan) {
66
+ stderrLog(formatPlanBlock(searchPlan, noColor) + '\n');
67
+ }
68
+ else {
69
+ stderrLog(formatInternalStatus('planning skipped — using generic strategy', noColor) + '\n');
70
+ }
71
+ // Enrich the instruction with the search plan
72
+ const enrichedInstruction = enrichUserPrompt(instruction, searchPlan);
73
+ let messages = [
74
+ { role: 'user', content: enrichedInstruction },
75
+ ];
76
+ const tracker = new ToolCallTracker();
77
+ if (!adapter.chatWithTools) {
78
+ await printError('Provider does not support tool calling. Use a provider/model that supports tools.');
79
+ process.exit(1);
80
+ }
81
+ /** Render final markdown result + usage stats. */
82
+ const renderResult = async (text, usage) => {
83
+ stderrLog(formatSeparator('Result', noColor));
84
+ if (text) {
85
+ try {
86
+ const rendered = await renderMarkdown(text);
87
+ process.stdout.write(rendered);
88
+ }
89
+ catch {
90
+ process.stdout.write(text + '\n');
91
+ }
178
92
  }
179
- catch (err) {
180
- throw new JamError('Failed to connect to provider', 'PROVIDER_UNAVAILABLE', {
181
- cause: err,
182
- retryable: true,
183
- });
93
+ if (usage) {
94
+ stderrLog(`\n${formatUsage(usage.promptTokens, usage.completionTokens, usage.totalTokens, noColor)}\n`);
184
95
  }
185
- if (!response.ok) {
186
- const text = await response.text().catch(() => '');
187
- throw new JamError(`Provider error ${response.status}: ${text}`, 'PROVIDER_STREAM_ERROR');
96
+ const log = memory.getAccessLog();
97
+ updateContextWithUsage(workspaceRoot, log.readFiles, log.searchQueries).catch(() => { });
98
+ };
99
+ // Agentic loop
100
+ const MAX_ITERATIONS = 15;
101
+ let synthesisInjected = false;
102
+ stderrLog(formatSeparator('Working', noColor));
103
+ for (let iteration = 0; iteration < MAX_ITERATIONS; iteration++) {
104
+ // Context window management
105
+ if (memory.shouldCompact(messages)) {
106
+ stderrLog(formatInternalStatus('Compacting context…', noColor) + '\n');
107
+ messages = await memory.compact(messages);
188
108
  }
189
- const data = (await response.json());
190
- const assistantMsg = data.message;
191
- // Add assistant message to conversation
192
- messages.push({
193
- role: 'assistant',
194
- content: assistantMsg.content ?? '',
109
+ const response = await adapter.chatWithTools(messages, ALL_TOOL_SCHEMAS, {
110
+ model: profile.model,
111
+ temperature: profile.temperature,
112
+ maxTokens: profile.maxTokens,
113
+ systemPrompt,
195
114
  });
196
- // Print any text content
197
- if (assistantMsg.content) {
198
- process.stdout.write('\n[Assistant]\n' + assistantMsg.content + '\n');
199
- }
200
- // Check for tool calls
201
- const toolCalls = assistantMsg.tool_calls;
202
- if (!toolCalls || toolCalls.length === 0) {
203
- // No tool calls task is done
115
+ // No tool calls → model is done
116
+ if (!response.toolCalls || response.toolCalls.length === 0) {
117
+ const finalText = response.content ?? '';
118
+ // Synthesis grounding with critic
119
+ if (tracker.totalCalls > 0 && !synthesisInjected && iteration < MAX_ITERATIONS - 2) {
120
+ synthesisInjected = true;
121
+ if (finalText.trim().length > 0) {
122
+ stderrLog(formatInternalStatus('Evaluating answer quality…', noColor) + '\n');
123
+ const verdict = await criticEvaluate(adapter, instruction, finalText, { model: profile.model });
124
+ if (verdict.pass) {
125
+ await renderResult(finalText, response.usage);
126
+ break;
127
+ }
128
+ stderrLog(formatInternalStatus(`Critic: ${verdict.reason}`, noColor) + '\n');
129
+ messages.push({ role: 'assistant', content: finalText });
130
+ messages.push({ role: 'user', content: buildCriticCorrection(verdict, instruction) });
131
+ continue;
132
+ }
133
+ stderrLog(formatInternalStatus('Grounding answer to your question…', noColor) + '\n');
134
+ messages.push({ role: 'assistant', content: finalText });
135
+ messages.push({ role: 'user', content: buildSynthesisReminder(instruction) });
136
+ continue;
137
+ }
138
+ // Final critic check
139
+ if (tracker.totalCalls > 0 && finalText.trim().length > 30 && iteration < MAX_ITERATIONS - 2) {
140
+ const verdict = await criticEvaluate(adapter, instruction, finalText, { model: profile.model });
141
+ if (!verdict.pass) {
142
+ stderrLog(formatInternalStatus(`Critic: ${verdict.reason}`, noColor) + '\n');
143
+ messages.push({ role: 'assistant', content: finalText });
144
+ messages.push({ role: 'user', content: buildCriticCorrection(verdict, instruction) });
145
+ continue;
146
+ }
147
+ }
148
+ await renderResult(finalText, response.usage);
204
149
  break;
205
150
  }
206
- // Execute each tool call
207
- for (const tc of toolCalls) {
208
- const toolName = tc.function.name;
209
- const args = tc.function.arguments;
210
- process.stderr.write(`\n[Tool] ${toolName}(${JSON.stringify(args)})\n`);
151
+ // Add assistant message to conversation
152
+ messages.push({ role: 'assistant', content: response.content ?? '' });
153
+ // Print any intermediate text
154
+ if (response.content) {
155
+ stderrLog(`\n${response.content}\n`);
156
+ }
157
+ // Execute tool calls
158
+ for (const tc of response.toolCalls) {
159
+ // Duplicate detection
160
+ if (tracker.isDuplicate(tc.name, tc.arguments)) {
161
+ stderrLog(formatDuplicateSkip(tc.name, noColor) + '\n');
162
+ messages.push({
163
+ role: 'user',
164
+ content: `[Tool result: ${tc.name}]\nYou already made this exact call. Try a DIFFERENT approach.`,
165
+ });
166
+ tracker.record(tc.name, tc.arguments, true);
167
+ continue;
168
+ }
169
+ const isReadonly = READONLY_TOOL_NAMES.has(tc.name);
170
+ // Check cache for read-only tools
171
+ if (isReadonly) {
172
+ const cached = cache.get(tc.name, tc.arguments);
173
+ if (cached !== null) {
174
+ stderrLog(formatToolCall(tc.name, tc.arguments, noColor) + ' (cached)\n');
175
+ const capped = memory.processToolResult(tc.name, tc.arguments, cached);
176
+ messages.push({ role: 'user', content: `[Tool result: ${tc.name}]\n${capped}` });
177
+ tracker.record(tc.name, tc.arguments, false);
178
+ continue;
179
+ }
180
+ }
181
+ stderrLog(formatToolCall(tc.name, tc.arguments, noColor) + '\n');
182
+ // Confirm write tools based on policy
183
+ if (!isReadonly) {
184
+ if (config.toolPolicy === 'never') {
185
+ const msg = `Tool "${tc.name}" is a write tool and policy is set to "never"`;
186
+ await printWarning(msg);
187
+ messages.push({ role: 'user', content: `[Tool result: ${tc.name}]\nDenied: ${msg}` });
188
+ tracker.record(tc.name, tc.arguments, true);
189
+ continue;
190
+ }
191
+ if (config.toolPolicy === 'ask_every_time') {
192
+ const allowed = await confirmToolCall(tc.name, tc.arguments);
193
+ if (!allowed) {
194
+ messages.push({ role: 'user', content: `[Tool result: ${tc.name}]\nDenied by user.` });
195
+ tracker.record(tc.name, tc.arguments, true);
196
+ continue;
197
+ }
198
+ }
199
+ }
211
200
  let toolOutput;
201
+ let wasError = false;
212
202
  try {
213
- toolOutput = await executeTool(toolName, args, workspaceRoot, config.toolPolicy);
214
- process.stderr.write(`[Result] ${toolOutput.slice(0, 200)}${toolOutput.length > 200 ? '...' : ''}\n`);
203
+ toolOutput = await executeTool(tc.name, tc.arguments, workspaceRoot);
215
204
  }
216
205
  catch (err) {
217
206
  const jamErr = JamError.fromUnknown(err);
218
- if (jamErr.code === 'TOOL_DENIED') {
219
- toolOutput = `Tool call was denied: ${jamErr.message}`;
220
- await printWarning(jamErr.message);
221
- }
222
- else {
223
- toolOutput = `Tool execution failed: ${jamErr.message}`;
224
- }
207
+ toolOutput = `Tool error: ${jamErr.message}`;
208
+ wasError = true;
209
+ }
210
+ // Cache read-only results
211
+ if (!wasError && isReadonly)
212
+ cache.set(tc.name, tc.arguments, toolOutput);
213
+ // Invalidate cache on write operations
214
+ if (!isReadonly && tc.arguments['path']) {
215
+ cache.invalidatePath(String(tc.arguments['path']));
225
216
  }
226
- // Add tool result to conversation as a user message
227
- messages.push({
228
- role: 'user',
229
- content: `[Tool result for ${toolName}]\n${toolOutput}`,
230
- });
217
+ // Cap tool output before injecting into messages
218
+ const cappedOutput = memory.processToolResult(tc.name, tc.arguments, toolOutput);
219
+ stderrLog(formatToolResult(cappedOutput, noColor) + '\n');
220
+ tracker.record(tc.name, tc.arguments, wasError);
221
+ messages.push({ role: 'user', content: `[Tool result: ${tc.name}]\n${cappedOutput}` });
222
+ }
223
+ // Scratchpad checkpoint
224
+ if (memory.shouldScratchpad(iteration)) {
225
+ stderrLog(formatInternalStatus('Working memory checkpoint…', noColor) + '\n');
226
+ messages.push(memory.scratchpadPrompt());
227
+ }
228
+ // Inject correction hints if stuck
229
+ const hint = tracker.getCorrectionHint();
230
+ if (hint) {
231
+ stderrLog(formatHintInjection(noColor) + '\n');
232
+ messages.push({ role: 'user', content: hint });
231
233
  }
232
234
  }
233
- process.stderr.write('\nTask complete.\n');
235
+ stderrLog('\nTask complete.\n');
234
236
  }
235
237
  catch (err) {
236
238
  const jamErr = JamError.fromUnknown(err);
@@ -1 +1 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AA8EpE,wBAAsB,UAAU,CAC9B,GAAG,GAAE,MAAsB,EAC3B,YAAY,GAAE,YAAiB,GAC9B,OAAO,CAAC,SAAS,CAAC,CA8BpB;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAS3D"}
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAgHpE,wBAAsB,UAAU,CAC9B,GAAG,GAAE,MAAsB,EAC3B,YAAY,GAAE,YAAiB,GAC9B,OAAO,CAAC,SAAS,CAAC,CAsCpB;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAS3D"}