@sunilp-org/jam-cli 0.1.2 → 0.3.0

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 +1 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/providers/base.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB;AAID,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE;QACV,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;QAChD,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;CACH;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,UAAU,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,UAAU,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,YAAY,CAAC;IACnB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;IACzE,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAChC,sEAAsE;IACtE,aAAa,CAAC,CACZ,QAAQ,EAAE,OAAO,EAAE,EACnB,KAAK,EAAE,cAAc,EAAE,EACvB,OAAO,CAAC,EAAE,IAAI,CAAC,iBAAiB,EAAE,OAAO,GAAG,aAAa,GAAG,WAAW,GAAG,cAAc,CAAC,GACxF,OAAO,CAAC,qBAAqB,CAAC,CAAC;CACnC"}
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/providers/base.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB;AAID,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE;QACV,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;QAChD,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;CACH;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,UAAU,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,UAAU,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,iBAAiB,EAAE,OAAO,CAAC;IAC3B;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,YAAY,CAAC;IACnB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;IACzE,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAChC,sEAAsE;IACtE,aAAa,CAAC,CACZ,QAAQ,EAAE,OAAO,EAAE,EACnB,KAAK,EAAE,cAAc,EAAE,EACvB,OAAO,CAAC,EAAE,IAAI,CAAC,iBAAiB,EAAE,OAAO,GAAG,aAAa,GAAG,WAAW,GAAG,cAAc,CAAC,GACxF,OAAO,CAAC,qBAAqB,CAAC,CAAC;CACnC"}
@@ -1 +1 @@
1
- {"version":3,"file":"embedded.d.ts","sourceRoot":"","sources":["../../src/providers/embedded.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,OAAO,EACP,cAAc,EAEd,qBAAqB,EACtB,MAAM,WAAW,CAAC;AAsFnB,qBAAa,eAAgB,YAAW,eAAe;IACrD,QAAQ,CAAC,IAAI,EAAE,YAAY,CAGzB;IAEF,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqB;IAE/C,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,MAAM,CAAiB;gBAEnB,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAO;IAM5C;;;OAGG;YACW,IAAI;IA0FZ,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIpC,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAuB9B,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,aAAa,CAAC,WAAW,CAAC;IA6DzE,aAAa,CACjB,QAAQ,EAAE,OAAO,EAAE,EACnB,KAAK,EAAE,cAAc,EAAE,EACvB,OAAO,GAAE,IAAI,CAAC,iBAAiB,EAAE,OAAO,GAAG,aAAa,GAAG,WAAW,GAAG,cAAc,CAAM,GAC5F,OAAO,CAAC,qBAAqB,CAAC;CAuElC"}
1
+ {"version":3,"file":"embedded.d.ts","sourceRoot":"","sources":["../../src/providers/embedded.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,OAAO,EACP,cAAc,EAEd,qBAAqB,EACtB,MAAM,WAAW,CAAC;AA4KnB,qBAAa,eAAgB,YAAW,eAAe;IACrD,QAAQ,CAAC,IAAI,EAAE,YAAY,CAQzB;IAEF,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqB;IAE/C,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,MAAM,CAA2B;gBAE7B,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAO;IAM5C;;;OAGG;YACW,IAAI;IA0FZ,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIpC,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAuB9B,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,aAAa,CAAC,WAAW,CAAC;IA4FzE,aAAa,CACjB,QAAQ,EAAE,OAAO,EAAE,EACnB,KAAK,EAAE,cAAc,EAAE,EACvB,OAAO,GAAE,IAAI,CAAC,iBAAiB,EAAE,OAAO,GAAG,aAAa,GAAG,WAAW,GAAG,cAAc,CAAM,GAC5F,OAAO,CAAC,qBAAqB,CAAC;CA8ElC"}
@@ -1,36 +1,44 @@
1
1
  import { JamError } from '../utils/errors.js';
2
2
  import { homedir } from 'node:os';
3
3
  import { join } from 'node:path';
4
- import { existsSync, mkdirSync } from 'node:fs';
4
+ import { existsSync, mkdirSync, createWriteStream, unlinkSync } from 'node:fs';
5
+ import { pipeline } from 'node:stream/promises';
6
+ import { Readable } from 'node:stream';
5
7
  // ── Defaults ─────────────────────────────────────────────────────────────────
6
8
  /**
7
9
  * Directory where embedded GGUF models are cached.
8
10
  * ~/.jam/models/
9
11
  */
10
12
  const MODELS_DIR = join(homedir(), '.jam', 'models');
13
+ /**
14
+ * GitHub repository that hosts GGUF model files as release assets.
15
+ * Models are uploaded as assets under the tag MODELS_RELEASE_TAG.
16
+ */
17
+ const GITHUB_MODELS_OWNER = 'sunilp';
18
+ const GITHUB_MODELS_REPO = 'homebrew-tap';
19
+ const GITHUB_MODELS_TAG = 'v1.0.0';
20
+ /** Construct a GitHub Releases download URL for a model file. */
21
+ function githubModelUrl(file) {
22
+ return `https://github.com/${GITHUB_MODELS_OWNER}/${GITHUB_MODELS_REPO}/releases/download/${GITHUB_MODELS_TAG}/${file}`;
23
+ }
11
24
  /**
12
25
  * Default model to download when no model is specified.
13
- * SmolLM2-360M is extremely lightweight (~250 MB quantized) and runs
26
+ * SmolLM2-360M is extremely lightweight (~360 MB quantized) and runs
14
27
  * comfortably on machines without a GPU.
15
28
  */
16
- const DEFAULT_HF_REPO = 'HuggingFaceTB/SmolLM2-360M-Instruct-GGUF';
17
- const DEFAULT_MODEL_FILENAME = 'smollm2-360m-instruct-q4_k_m.gguf';
18
- const DEFAULT_MODEL_LABEL = 'SmolLM2-360M-Instruct-Q4_K_M';
29
+ const DEFAULT_MODEL_FILENAME = 'smollm2-1.7b-instruct-q4_k_m.gguf';
19
30
  /**
20
31
  * A curated list of known models users can request by short alias.
21
- * Maps alias → { repo, file }.
32
+ * Maps alias → { url, file }.
33
+ * Files are hosted as release assets on github.com/sunilp/homebrew-tap.
22
34
  */
23
35
  const MODEL_ALIASES = {
24
- 'smollm2-135m': {
25
- repo: 'HuggingFaceTB/SmolLM2-135M-Instruct-GGUF',
26
- file: 'smollm2-135m-instruct-q4_k_m.gguf',
27
- },
28
36
  'smollm2-360m': {
29
- repo: 'HuggingFaceTB/SmolLM2-360M-Instruct-GGUF',
30
- file: 'smollm2-360m-instruct-q4_k_m.gguf',
37
+ url: githubModelUrl('smollm2-360m-instruct-q8_0.gguf'),
38
+ file: 'smollm2-360m-instruct-q8_0.gguf',
31
39
  },
32
40
  'smollm2-1.7b': {
33
- repo: 'HuggingFaceTB/SmolLM2-1.7B-Instruct-GGUF',
41
+ url: githubModelUrl('smollm2-1.7b-instruct-q4_k_m.gguf'),
34
42
  file: 'smollm2-1.7b-instruct-q4_k_m.gguf',
35
43
  },
36
44
  };
@@ -41,39 +49,91 @@ function ensureModelsDir() {
41
49
  }
42
50
  }
43
51
  /**
44
- * Resolve a model specifier to { repo, file }.
52
+ * Download a file from `url` to `destPath`, following redirects and reporting
53
+ * progress. Uses Node's built-in `fetch` (Node 18+) so no extra dependencies
54
+ * are needed. Cleans up the partial file on failure.
55
+ */
56
+ async function downloadFile(url, destPath, onProgress) {
57
+ const res = await fetch(url, { redirect: 'follow' });
58
+ if (!res.ok || !res.body) {
59
+ throw new Error(`HTTP ${res.status} ${res.statusText} — ${url}`);
60
+ }
61
+ const total = Number(res.headers.get('content-length') ?? '0');
62
+ let downloaded = 0;
63
+ const writer = createWriteStream(destPath);
64
+ try {
65
+ const reader = res.body.getReader();
66
+ const nodeReadable = new Readable({
67
+ async read() {
68
+ const { done, value } = await reader.read();
69
+ if (done || value === undefined) {
70
+ this.push(null);
71
+ }
72
+ else {
73
+ downloaded += value.byteLength;
74
+ if (onProgress)
75
+ onProgress(downloaded, total);
76
+ this.push(Buffer.from(value));
77
+ }
78
+ },
79
+ });
80
+ await pipeline(nodeReadable, writer);
81
+ }
82
+ catch (err) {
83
+ // Remove partial file so a retry starts fresh
84
+ try {
85
+ unlinkSync(destPath);
86
+ }
87
+ catch { /* ignore */ }
88
+ throw err;
89
+ }
90
+ }
91
+ /**
92
+ * Resolve a model specifier to { url, file } for a remote download, or
93
+ * { localPath } for a file already on disk.
94
+ *
45
95
  * Supports:
46
- * - Known aliases → "smollm2-360m"
47
- * - HF repo paths → "HuggingFaceTB/SmolLM2-360M-Instruct-GGUF/smollm2-360m-instruct-q4_k_m.gguf"
48
- * - Plain filenamestreated as already-downloaded under ~/.jam/models/
96
+ * - Known aliases → "smollm2-360m"
97
+ * - HF repo paths → "HuggingFaceTB/SmolLM2-360M-Instruct-GGUF/smollm2-360m-instruct-q8_0.gguf"
98
+ * - Full HTTPS URLs "https://example.com/path/to/model.gguf"
99
+ * - Plain filenames → treated as already-downloaded under ~/.jam/models/
49
100
  */
50
101
  function resolveModel(model) {
51
102
  if (!model) {
52
- return { repo: DEFAULT_HF_REPO, file: DEFAULT_MODEL_FILENAME };
103
+ return { url: githubModelUrl(DEFAULT_MODEL_FILENAME), file: DEFAULT_MODEL_FILENAME };
53
104
  }
54
105
  const lower = model.toLowerCase();
55
106
  if (MODEL_ALIASES[lower]) {
56
107
  return MODEL_ALIASES[lower];
57
108
  }
58
- // HF-style "org/repo/filename.gguf"
109
+ // Full HTTPS URL supplied directly
110
+ if (model.startsWith('https://') && model.endsWith('.gguf')) {
111
+ const file = model.split('/').pop();
112
+ return { url: model, file };
113
+ }
114
+ // HF-style "org/repo/filename.gguf" — construct the HuggingFace URL
59
115
  const parts = model.split('/');
60
116
  if (parts.length >= 3 && model.endsWith('.gguf')) {
61
117
  const file = parts.pop();
62
118
  const repo = parts.join('/');
63
- return { repo, file };
119
+ return { url: `https://huggingface.co/${repo}/resolve/main/${file}`, file };
64
120
  }
65
121
  // Already a local path or just a filename
66
122
  if (model.endsWith('.gguf')) {
67
123
  return { localPath: model.startsWith('/') ? model : join(MODELS_DIR, model) };
68
124
  }
69
- // Default: treat as alias key, fall back to default model
70
- return { repo: DEFAULT_HF_REPO, file: DEFAULT_MODEL_FILENAME };
125
+ // Default: fall back to default model hosted on GitHub
126
+ return { url: githubModelUrl(DEFAULT_MODEL_FILENAME), file: DEFAULT_MODEL_FILENAME };
71
127
  }
72
- // ── Adapter ──────────────────────────────────────────────────────────────────
73
128
  export class EmbeddedAdapter {
74
129
  info = {
75
130
  name: 'embedded (experimental)',
76
131
  supportsStreaming: true,
132
+ // 1.7B is too small to reliably emit valid JSON tool-call payloads for
133
+ // the ReAct scaffold. Direct Q&A and commit generation work well instead.
134
+ supportsTools: false,
135
+ // SmolLM2-1.7B context window. Used to guard input truncation.
136
+ contextWindow: 8192,
77
137
  };
78
138
  modelSpec;
79
139
  // Lazy-loaded resources
@@ -119,23 +179,19 @@ export class EmbeddedAdapter {
119
179
  }
120
180
  else {
121
181
  process.stderr.write(`\n Downloading embedded model: ${resolved.file}\n` +
122
- ` From: huggingface.co/${resolved.repo}\n` +
182
+ ` From: ${resolved.url}\n` +
123
183
  ` Destination: ${cached}\n` +
124
184
  ` This is a one-time download...\n\n`);
125
185
  try {
126
- await nlc.downloadModel({
127
- url: `https://huggingface.co/${resolved.repo}/resolve/main/${resolved.file}`,
128
- dirPath: MODELS_DIR,
129
- fileName: resolved.file,
130
- onProgress: (progress) => {
131
- const pct = Math.round((progress.downloaded / progress.total) * 100);
132
- process.stderr.write(`\r Progress: ${pct}%`);
133
- },
186
+ await downloadFile(resolved.url, cached, (downloaded, total) => {
187
+ const pct = total > 0 ? Math.round((downloaded / total) * 100) : 0;
188
+ const mb = (downloaded / 1_048_576).toFixed(1);
189
+ process.stderr.write(`\r Progress: ${pct}% (${mb} MB)`);
134
190
  });
135
191
  process.stderr.write('\n Download complete!\n\n');
136
192
  }
137
193
  catch (err) {
138
- throw new JamError(`Failed to download model "${resolved.file}" from huggingface.co/${resolved.repo}.\n` +
194
+ throw new JamError(`Failed to download model "${resolved.file}" from ${resolved.url}.\n` +
139
195
  `Check your internet connection and try again.`, 'PROVIDER_UNAVAILABLE', { retryable: true, cause: err });
140
196
  }
141
197
  modelPath = cached;
@@ -183,47 +239,72 @@ export class EmbeddedAdapter {
183
239
  // node-llama-cpp v3 API
184
240
  const nlc = await import('node-llama-cpp');
185
241
  const context = await model.createContext();
186
- const session = new nlc.LlamaChatSession({ contextSequence: context.getSequence() });
187
- // Build prompt from messages
188
- const promptParts = [];
189
- if (request.systemPrompt) {
190
- promptParts.push(request.systemPrompt);
191
- }
192
- for (const msg of request.messages) {
193
- if (msg.role === 'system') {
194
- promptParts.push(msg.content);
242
+ // System prompt goes into the session constructor NOT into the user message.
243
+ // Passing it as a user-message prefix causes the model to echo it back verbatim.
244
+ const session = new nlc.LlamaChatSession({
245
+ contextSequence: context.getSequence(),
246
+ systemPrompt: request.systemPrompt,
247
+ });
248
+ // Guard against context window overflow.
249
+ // Rough estimate: 1 token ≈ 4 characters. Reserve (maxTokens ?? 512) tokens
250
+ // for the completion and a 10% safety margin.
251
+ const maxOutputTokens = request.maxTokens ?? 512;
252
+ const contextWindow = this.info.contextWindow ?? 2048;
253
+ const systemTokens = Math.ceil((request.systemPrompt?.length ?? 0) / 4);
254
+ const inputBudgetTokens = contextWindow - maxOutputTokens - systemTokens - Math.ceil(contextWindow * 0.1);
255
+ const inputBudgetChars = Math.max(200, inputBudgetTokens * 4);
256
+ // For multi-turn history replay prior (user → assistant) pairs so the
257
+ // session has conversation context, then send the final user message.
258
+ const nonSystemMsgs = request.messages.filter((m) => m.role !== 'system');
259
+ const lastUserIdx = nonSystemMsgs.map((m) => m.role).lastIndexOf('user');
260
+ const priorMsgs = nonSystemMsgs.slice(0, lastUserIdx);
261
+ const lastUserMsg = nonSystemMsgs[lastUserIdx];
262
+ // Replay prior conversation turns into the session (pairs: user then assistant).
263
+ for (let i = 0; i < priorMsgs.length; i++) {
264
+ const msg = priorMsgs[i];
265
+ if (msg.role === 'user') {
266
+ const next = priorMsgs[i + 1];
267
+ if (next?.role === 'assistant') {
268
+ await session.prompt(msg.content, { maxTokens: 1 });
269
+ }
195
270
  }
196
- else if (msg.role === 'user') {
197
- promptParts.push(msg.content);
271
+ }
272
+ // Truncate the final user message if it would overflow the input budget.
273
+ // For git diffs, cut at a "diff --git" hunk boundary so the model always
274
+ // receives complete, coherent hunks rather than a mid-line slice.
275
+ let promptText = lastUserMsg?.content ?? '';
276
+ if (promptText.length > inputBudgetChars) {
277
+ const isDiff = promptText.includes('diff --git');
278
+ if (isDiff) {
279
+ // Find the last complete hunk boundary that fits
280
+ const cutoff = promptText.lastIndexOf('\ndiff --git', inputBudgetChars);
281
+ const boundary = cutoff > 0 ? cutoff : inputBudgetChars;
282
+ promptText = promptText.slice(0, boundary) +
283
+ '\n\n[... diff truncated — remaining files omitted to fit context window ...]';
198
284
  }
199
- else if (msg.role === 'assistant') {
200
- promptParts.push(msg.content);
285
+ else {
286
+ const truncMsg = `\n\n[... truncated to fit ${contextWindow}-token context window ...]`;
287
+ promptText = promptText.slice(0, inputBudgetChars - truncMsg.length) + truncMsg;
201
288
  }
289
+ process.stderr.write(`\n ⚠️ Input truncated to ~${inputBudgetTokens} tokens to fit context window.\n`);
202
290
  }
203
- // Get the last user message as the prompt (chat session manages history)
204
- const lastUserMsg = [...request.messages].reverse().find((m) => m.role === 'user');
205
- const prompt = lastUserMsg?.content ?? promptParts.join('\n');
206
- let totalTokens = 0;
207
291
  let completionText = '';
208
292
  try {
209
- const response = await session.prompt(prompt, {
210
- maxTokens: request.maxTokens ?? 2048,
293
+ completionText = await session.prompt(promptText, {
294
+ maxTokens: maxOutputTokens,
211
295
  temperature: request.temperature ?? 0.7,
212
- onTextChunk: undefined, // we'll use the non-streaming path and chunk it
213
296
  });
214
- completionText = response;
215
- totalTokens = completionText.split(/\s+/).length; // rough estimate
297
+ const totalTokens = completionText.split(/\s+/).length; // rough estimate
216
298
  // Emit the complete response as chunks for streaming compatibility
217
- const chunkSize = 4; // characters per chunk for simulated streaming
299
+ const chunkSize = 4;
218
300
  for (let i = 0; i < completionText.length; i += chunkSize) {
219
- const delta = completionText.slice(i, i + chunkSize);
220
- yield { delta, done: false };
301
+ yield { delta: completionText.slice(i, i + chunkSize), done: false };
221
302
  }
222
303
  yield {
223
304
  delta: '',
224
305
  done: true,
225
306
  usage: {
226
- promptTokens: 0, // node-llama-cpp doesn't expose this easily
307
+ promptTokens: 0,
227
308
  completionTokens: totalTokens,
228
309
  totalTokens,
229
310
  },
@@ -237,16 +318,16 @@ export class EmbeddedAdapter {
237
318
  const { model } = await this.boot();
238
319
  const nlc = await import('node-llama-cpp');
239
320
  const context = await model.createContext();
240
- const session = new nlc.LlamaChatSession({ contextSequence: context.getSequence() });
241
- // Build prompt that describes available tools (small models won't do
242
- // native function calling, so we describe them in the system prompt).
321
+ // Build tool descriptions for the system prompt.
322
+ // Small models can't do native function-calling; we describe tools in the
323
+ // system prompt and parse JSON out of the response.
243
324
  const toolDescriptions = tools.map((t) => {
244
325
  const params = Object.entries(t.parameters.properties)
245
326
  .map(([name, schema]) => ` - ${name} (${schema.type}): ${schema.description ?? ''}`)
246
327
  .join('\n');
247
328
  return `Tool: ${t.name}\nDescription: ${t.description}\nParameters:\n${params}`;
248
329
  }).join('\n\n');
249
- const systemInstructions = [
330
+ const systemPrompt = [
250
331
  options.systemPrompt ?? '',
251
332
  tools.length > 0
252
333
  ? `You have access to the following tools. To call a tool, respond with EXACTLY this JSON format on its own line:\n` +
@@ -254,9 +335,15 @@ export class EmbeddedAdapter {
254
335
  `Available tools:\n${toolDescriptions}`
255
336
  : '',
256
337
  ].filter(Boolean).join('\n\n');
338
+ // System prompt goes into the session constructor — NEVER prepend it to the
339
+ // user message or the model will echo it back verbatim as its "answer".
340
+ const session = new nlc.LlamaChatSession({
341
+ contextSequence: context.getSequence(),
342
+ systemPrompt: systemPrompt || undefined,
343
+ });
344
+ // Send only the last user message as the prompt.
257
345
  const lastUserMsg = [...messages].reverse().find((m) => m.role === 'user');
258
- const prompt = (systemInstructions ? systemInstructions + '\n\n' : '') +
259
- (lastUserMsg?.content ?? '');
346
+ const prompt = lastUserMsg?.content ?? '';
260
347
  let response;
261
348
  try {
262
349
  response = await session.prompt(prompt, {
@@ -1 +1 @@
1
- {"version":3,"file":"embedded.js","sourceRoot":"","sources":["../../src/providers/embedded.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"embedded.js","sourceRoot":"","sources":["../../src/providers/embedded.ts"],"names":[],"mappings":"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"}
@@ -12,7 +12,7 @@
12
12
  * Individual commands wire these into their own UI layer (stdout streaming,
13
13
  * Ink TUI, or plain stderr).
14
14
  */
15
- import type { ProviderAdapter } from '../providers/base.js';
15
+ import type { ProviderAdapter, Message } from '../providers/base.js';
16
16
  export declare const ANSI: {
17
17
  readonly reset: "\u001B[0m";
18
18
  readonly dim: "\u001B[2m";
@@ -65,6 +65,83 @@ export declare function generateSearchPlan(provider: ProviderAdapter, question:
65
65
  temperature?: number;
66
66
  maxTokens?: number;
67
67
  }): Promise<string | null>;
68
+ /** One step in a structured execution plan. */
69
+ export interface PlanStep {
70
+ /** Sequential step number starting at 1. */
71
+ id: number;
72
+ /** Human-readable description, e.g. "Search for createProvider in factory.ts". */
73
+ action: string;
74
+ /** Tool to use: 'search_text' | 'read_file' | 'list_dir'. */
75
+ tool: string;
76
+ /** Exact arguments to pass to the tool. */
77
+ args: Record<string, unknown>;
78
+ /** What constitutes success, e.g. "Found function signature in src/providers/factory.ts". */
79
+ successCriteria: string;
80
+ }
81
+ /** A structured execution plan produced by the planner LLM call. */
82
+ export interface ExecutionPlan {
83
+ /** One-sentence restatement of what the user wants. */
84
+ intent: string;
85
+ /** Ordered steps to execute. */
86
+ steps: PlanStep[];
87
+ /** Planner's minimum number of steps before the executor should attempt an answer. */
88
+ minStepsBeforeAnswer: number;
89
+ /** Files likely to be relevant (hints for the executor). */
90
+ expectedFiles: string[];
91
+ }
92
+ /**
93
+ * Generate a structured, typed execution plan.
94
+ * Falls back to null on parse failure — callers should fall back to generateSearchPlan.
95
+ */
96
+ export declare function generateExecutionPlan(provider: ProviderAdapter, question: string, projectContext: string, options: {
97
+ model?: string;
98
+ temperature?: number;
99
+ maxTokens?: number;
100
+ mode?: 'readonly' | 'readwrite';
101
+ }): Promise<ExecutionPlan | null>;
102
+ /**
103
+ * Parse a JSON execution plan from the model's response.
104
+ * Handles markdown code-block wrappers and leading/trailing prose.
105
+ */
106
+ export declare function parseExecutionPlan(text: string): ExecutionPlan | null;
107
+ /**
108
+ * Format an ExecutionPlan as a visual block for stderr display.
109
+ */
110
+ export declare function formatExecutionPlanBlock(plan: ExecutionPlan, noColor: boolean): string;
111
+ /**
112
+ * Enrich the user's prompt with a structured execution plan.
113
+ * Gives the model explicit, ordered steps with exact tool args so it does not meander.
114
+ */
115
+ export declare function enrichUserPromptWithPlan(prompt: string, plan: ExecutionPlan): string;
116
+ /** Result from the step verifier mid-process check. */
117
+ export interface VerifierResult {
118
+ /** Whether the agent has enough context to answer, needs more, or is stuck. */
119
+ status: 'need-more' | 'ready-to-answer' | 'stuck';
120
+ /** Next step ID to focus on (1-based). 0 when ready-to-answer. */
121
+ nextStepId: number;
122
+ /** Brief explanation. */
123
+ reason: string;
124
+ }
125
+ /**
126
+ * Mid-process verifier: checks every N rounds whether the agent has enough
127
+ * context to answer or is stuck. Enables early termination and targeted recovery.
128
+ */
129
+ export declare class StepVerifier {
130
+ /**
131
+ * Run a cheap verifier LLM call against the current tool results.
132
+ * Non-fatal — returns 'need-more' on any failure.
133
+ */
134
+ verify(provider: ProviderAdapter, question: string, plan: ExecutionPlan | null, toolResultsSummary: string, options: {
135
+ model?: string;
136
+ }): Promise<VerifierResult>;
137
+ /** Parse the verifier's structured response. Exported for testing. */
138
+ parseVerifierResponse(text: string): VerifierResult | null;
139
+ }
140
+ /**
141
+ * Extract a summary of the most recent tool results from the message history.
142
+ * Fed to the StepVerifier so it can assess progress without the full context.
143
+ */
144
+ export declare function buildToolResultsSummary(messages: Message[]): string;
68
145
  /**
69
146
  * Enrich the user's prompt with search strategy guidance.
70
147
  * If a search plan is provided, integrates it for focused searching.
@@ -86,6 +163,8 @@ export declare class ToolCallTracker {
86
163
  /** Build a correction hint if the model is stuck. */
87
164
  getCorrectionHint(): string | null;
88
165
  get totalCalls(): number;
166
+ /** Check if a specific tool was ever called in this session. */
167
+ wasToolCalled(name: string): boolean;
89
168
  /** Reset for a new turn (useful in multi-turn chat). */
90
169
  reset(): void;
91
170
  }
@@ -1 +1 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/utils/agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/utils/agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAKH,OAAO,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAIrE,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;CAoBP,CAAC;AAEX,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD;AAID,gEAAgE;AAChE,wBAAsB,qBAAqB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAsClF;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC;IACvE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC,CAMD;AAID,MAAM,WAAW,mBAAmB;IAClC,mDAAmD;IACnD,IAAI,EAAE,UAAU,GAAG,WAAW,CAAC;IAC/B,oDAAoD;IACpD,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,GAAG,IAAI,EACzB,YAAY,EAAE,MAAM,EACpB,OAAO,GAAE,mBAA0C,GAClD,MAAM,CAgDR;AAuBD;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,eAAe,EACzB,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GACpE,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAkCxB;AAID,+CAA+C;AAC/C,MAAM,WAAW,QAAQ;IACvB,4CAA4C;IAC5C,EAAE,EAAE,MAAM,CAAC;IACX,kFAAkF;IAClF,MAAM,EAAE,MAAM,CAAC;IACf,6DAA6D;IAC7D,IAAI,EAAE,MAAM,CAAC;IACb,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,6FAA6F;IAC7F,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,oEAAoE;AACpE,MAAM,WAAW,aAAa;IAC5B,uDAAuD;IACvD,MAAM,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,sFAAsF;IACtF,oBAAoB,EAAE,MAAM,CAAC;IAC7B,4DAA4D;IAC5D,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAiFD;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,eAAe,EACzB,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,UAAU,GAAG,WAAW,CAAA;CAAE,GACrG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAgC/B;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAmBrE;AAqBD;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAsBtF;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,MAAM,CA2CpF;AAID,uDAAuD;AACvD,MAAM,WAAW,cAAc;IAC7B,+EAA+E;IAC/E,MAAM,EAAE,WAAW,GAAG,iBAAiB,GAAG,OAAO,CAAC;IAClD,kEAAkE;IAClE,UAAU,EAAE,MAAM,CAAC;IACnB,yBAAyB;IACzB,MAAM,EAAE,MAAM,CAAC;CAChB;AA6BD;;;GAGG;AACH,qBAAa,YAAY;IACvB;;;OAGG;IACG,MAAM,CACV,QAAQ,EAAE,eAAe,EACzB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,aAAa,GAAG,IAAI,EAC1B,kBAAkB,EAAE,MAAM,EAC1B,OAAO,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAC1B,OAAO,CAAC,cAAc,CAAC;IAuC1B,sEAAsE;IACtE,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;CA0B3D;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,CAanE;AAID;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAkDnF;AAID;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,gBAAgB,EAAE,MAAM,GAAG,MAAM,CAqBvE;AAMD,qBAAa,eAAe;IAC1B,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,UAAU,CAAK;IAEvB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI;IAK5E,2DAA2D;IAC3D,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO;IAKjE,qDAAqD;IACrD,iBAAiB,IAAI,MAAM,GAAG,IAAI;IA8BlC,IAAI,UAAU,IAAI,MAAM,CAAgC;IAExD,gEAAgE;IAChE,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIpC,wDAAwD;IACxD,KAAK,IAAI,IAAI;CAId;AAID,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,OAAO,EACrB,gBAAgB,CAAC,EAAE,MAAM,GACxB,gBAAgB,CA2BlB;AAoDD;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAS7D;AAID;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAQ1E;AAED,yFAAyF;AACzF,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAK9E;AAED,4EAA4E;AAC5E,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAQpG;AAED,6EAA6E;AAC7E,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAQzE;AAED,2EAA2E;AAC3E,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAMvE;AAED,iDAAiD;AACjD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAK1E;AAED,4EAA4E;AAC5E,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAKrE;AAED,kDAAkD;AAClD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAK5D;AAED,6CAA6C;AAC7C,wBAAgB,WAAW,CACzB,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,MAAM,EACxB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,OAAO,GACf,MAAM,CAGR"}