@botconnector/bccli 0.4.9 → 0.4.10

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 (48) hide show
  1. package/dist/{acp-VEXFXT5P.js → acp-L4WGVJTY.js} +2 -2
  2. package/dist/{args-6XMUZDAK.js → args-EW7XJVQN.js} +4 -4
  3. package/dist/args.d.ts +6 -0
  4. package/dist/{chunk-OETLWNGS.js → chunk-24KDXQZT.js} +1 -1
  5. package/dist/{chunk-OUJRD7GG.js → chunk-3K66L37W.js} +8 -3
  6. package/dist/{chunk-CSIQDFEF.js → chunk-3PUWH62K.js} +1 -1
  7. package/dist/{chunk-WSSJH765.js → chunk-4WI5ON64.js} +1 -1
  8. package/dist/{chunk-KREGVQ63.js → chunk-5QCCV2JM.js} +11 -11
  9. package/dist/{chunk-RRECJTOG.js → chunk-67REFMSY.js} +1 -1
  10. package/dist/{chunk-TLCFBQ6E.js → chunk-6N2BBLIT.js} +2 -2
  11. package/dist/{chunk-EAR2C6TS.js → chunk-6RVAPAE5.js} +1 -1
  12. package/dist/{chunk-2YG6L3YO.js → chunk-7HDBPDAD.js} +2 -2
  13. package/dist/{chunk-HCW67S5M.js → chunk-CBD52BYV.js} +1 -1
  14. package/dist/{chunk-Z2ELYJ5O.js → chunk-CIEPLTGS.js} +10 -3
  15. package/dist/{chunk-XCVYR5BK.js → chunk-ED5TTYQU.js} +12 -1
  16. package/dist/{chunk-62UTSCWF.js → chunk-MPYSYTSO.js} +1 -1
  17. package/dist/{chunk-AWBEZY4D.js → chunk-PGDYPOQW.js} +7 -5
  18. package/dist/{chunk-HPYI7L4W.js → chunk-SXRQ2Q7A.js} +4 -4
  19. package/dist/{chunk-DRJSANKH.js → chunk-USFXL5BS.js} +4 -2
  20. package/dist/{chunk-EOJNFGOP.js → chunk-VXRW5SYP.js} +74 -15
  21. package/dist/{chunk-6H6MPG7L.js → chunk-ZWXKBFKW.js} +7 -7
  22. package/dist/cli.js +39 -39
  23. package/dist/{completion-FETH4OGC.js → completion-GEFRIQWV.js} +1 -1
  24. package/dist/{config-RVMC23W3.js → config-JKMYKNAT.js} +2 -2
  25. package/dist/{config-KR5JI5RA.js → config-JLOH5M6B.js} +3 -3
  26. package/dist/{ghBotCli-Z6GWXCJ6.js → ghBotCli-WEVS6S6O.js} +14 -14
  27. package/dist/{integrationCli-GPRR6J6W.js → integrationCli-PKMICTHC.js} +2 -2
  28. package/dist/{login-DFSN77L3.js → login-2TZRODUL.js} +4 -4
  29. package/dist/{mcpCli-64P3SVUE.js → mcpCli-TAPKYGHO.js} +22 -7
  30. package/dist/{modelsCli-PFQY3G2Q.js → modelsCli-6PK7V2QZ.js} +6 -6
  31. package/dist/{oauthLogin-NR22NWEV.js → oauthLogin-UI34LQZU.js} +1 -1
  32. package/dist/{pluginsCli-UKRJ3AHN.js → pluginsCli-RCF33U5J.js} +6 -2
  33. package/dist/{prCli-6FCI36AJ.js → prCli-24PMW7NS.js} +1 -1
  34. package/dist/print.d.ts +1 -0
  35. package/dist/providerCli-XA4LTWRD.js +15 -0
  36. package/dist/sdk.js +93 -15
  37. package/dist/{serve-JYXPQAVY.js → serve-7BFCIEPJ.js} +15 -15
  38. package/dist/{serve-PKUTKQQT.js → serve-XNJI67DU.js} +3 -3
  39. package/dist/session-VAPIHHUG.js +12 -0
  40. package/dist/setup-GPIMZOWE.js +24 -0
  41. package/dist/{statsCli-FR7GOKWO.js → statsCli-QDHE4TKB.js} +1 -1
  42. package/dist/{transferCli-GIE4MEJ4.js → transferCli-7OKKYGG2.js} +4 -4
  43. package/dist/{ui-NZVOCQSU.js → ui-SZAIIJC5.js} +12 -12
  44. package/dist/{update-DIYDD7LT.js → update-JSNVVXPS.js} +2 -2
  45. package/package.json +1 -1
  46. package/dist/providerCli-PBSZECBM.js +0 -15
  47. package/dist/session-XABMBIIF.js +0 -12
  48. package/dist/setup-CLPQLTM7.js +0 -24
package/dist/sdk.js CHANGED
@@ -178,6 +178,7 @@ Options:
178
178
  -r, --resume pick a session to continue
179
179
  --allow-all run all tools without asking for permission
180
180
  --allowed-tools <a,b> tools allowed without asking: bash, edit, fetch
181
+ --fail-on-tool-error with -p: exit 1 when any tool call fails (for CI)
181
182
  -w, --worktree <name> run in git worktree ../<repo>.worktrees/<name> (created, or reused if it exists)
182
183
  --output-format <fmt> text | json | stream-json for -p (machine-readable output)
183
184
  --permission-mode <mode> default | acceptEdits | plan | allowAll
@@ -208,6 +209,7 @@ Opsi:
208
209
  -r, --resume pilih sesi untuk dilanjutkan
209
210
  --allow-all jalankan semua alat tanpa minta izin
210
211
  --allowed-tools <a,b> alat yang boleh tanpa izin: bash, edit, fetch
212
+ --fail-on-tool-error dengan -p: keluar 1 bila ada tool gagal (untuk CI)
211
213
  -w, --worktree <name> jalankan di git worktree ../<repo>.worktrees/<name> (dibuat, atau dipakai ulang jika ada)
212
214
  --output-format <fmt> text | json | stream-json untuk -p (output mesin)
213
215
  --permission-mode <mode> default | acceptEdits | plan | allowAll
@@ -266,6 +268,7 @@ Opsi:
266
268
  'npm removed the files of {name} but the config entry {entry} remains: {reason}. bccli will refuse to start while that entry is listed \u2014 fix the config error at {path}, then run "bccli plugins remove {name}" again (safe to repeat), or delete the entry manually.': 'npm sudah menghapus file {name} tetapi entry config {entry} tertinggal: {reason}. bccli menolak start selama entry itu terdaftar \u2014 perbaiki error config di {path}, lalu jalankan lagi "bccli plugins remove {name}" (aman diulang), atau hapus entry secara manual.',
267
269
  "Skipping malformed entry: {entry} \u2014 fix it manually in {path}.": "Melewatkan entry rusak: {entry} \u2014 perbaiki manual di {path}.",
268
270
  "No managed plugins to update.": "Tidak ada plugin terelola untuk diperbarui.",
271
+ "No plugins are installed. Install one with: bccli plugins install <spec>": "Belum ada plugin terpasang. Pasang dengan: bccli plugins install <spec>",
269
272
  "update requires a plugin name or no argument: bccli plugins update [name]": "update butuh nama plugin atau tanpa argumen: bccli plugins update [nama]",
270
273
  "{name} updated to latest.": "{name} diperbarui ke versi terbaru.",
271
274
  "Use either --key or --logout, not both.": "Pakai --key atau --logout, jangan keduanya.",
@@ -323,6 +326,13 @@ Opsi:
323
326
  "No API key for {id} yet. Run `bccli login` or set the env var {env}.": "API key untuk {id} belum ada. Jalankan `bccli login` atau set env {env}.",
324
327
  "Error from the provider: {message}": "Error dari provider: {message}",
325
328
  "Cannot connect to {url}: {error}": "Tidak bisa terhubung ke {url}: {error}",
329
+ "The API key was rejected. Check the key for this provider (bccli login) or its API key environment variable.": "Kunci API ditolak. Periksa kunci provider ini (bccli login) atau env var kuncinya.",
330
+ "Model or endpoint not found. Check the model name and the provider base URL.": "Model atau endpoint tidak ditemukan. Periksa nama model dan base URL provider.",
331
+ "Rate limit reached. Wait a moment, or switch model with /model.": "Batas laju tercapai. Tunggu sebentar, atau ganti model dengan /model.",
332
+ "The provider is having trouble. Try again, or switch model with /model.": "Penyedia sedang bermasalah. Coba lagi, atau ganti model dengan /model.",
333
+ "The provider did not respond within {seconds}s. Check the connection, then try again.": "Penyedia tidak merespons dalam {seconds} detik. Periksa koneksi, lalu coba lagi.",
334
+ "The provider stopped sending data for {seconds}s. The answer above may be incomplete; try again.": "Penyedia berhenti mengirim data selama {seconds} detik. Jawaban di atas mungkin tidak lengkap; coba lagi.",
335
+ "The response ended before it finished (no finish_reason or [DONE]). The answer above is incomplete; try again.": "Respons berakhir sebelum selesai (tanpa finish_reason atau [DONE]). Jawaban di atas tidak lengkap; coba lagi.",
326
336
  "{status} from {url}: {message}": "{status} dari {url}: {message}",
327
337
  "Request failed": "Permintaan gagal",
328
338
  "Connection closed before the response finished.": "Koneksi ditutup sebelum respons selesai.",
@@ -347,7 +357,8 @@ Opsi:
347
357
  "Usage: bccli mcp {action} <name>": "Pemakaian: bccli mcp {action} <nama>",
348
358
  "{name} removed.": "{name} dihapus.",
349
359
  "{name} installed ({url}).": "{name} terpasang ({url}).",
350
- "{name} is not in the catalog. For another remote server use: bccli mcp add {name} --url <url>": "{name} tidak ada di katalog. Untuk server remote lain pakai: bccli mcp add {name} --url <url>",
360
+ "{name} installed (stdio: {command}).": "{name} terpasang (stdio: {command}).",
361
+ "{name} is not in the catalog. For another server use: bccli mcp add {name} --url <url> (HTTP) or bccli mcp add {name} --command <cmd> (stdio).": "{name} tidak ada di katalog. Untuk server lain pakai: bccli mcp add {name} --url <url> (HTTP) atau bccli mcp add {name} --command <cmd> (stdio).",
351
362
  "{name} installed. Active in the next bccli session.": "{name} terpasang. Aktif di sesi bccli berikutnya.",
352
363
  "control a browser (open pages, click, fill forms, screenshot)": "kontrol browser (buka halaman, klik, isi form, screenshot)",
353
364
  "up-to-date library documentation": "dokumentasi library terbaru",
@@ -773,7 +784,9 @@ function resolveModel(config, modelRef, env = process.env) {
773
784
  if (!provider) {
774
785
  throw new ConfigError(t('Provider "{id}" is not in the config. Available: {list}', { id: providerId, list: Object.keys(config.providers).join(", ") }));
775
786
  }
776
- const apiKey = readCredentials(env)[providerId] || (provider.apiKeyEnv ? env[provider.apiKeyEnv] : void 0) || void 0;
787
+ const untrusted = config.projectProviders?.includes(providerId) ?? false;
788
+ const stored = untrusted ? void 0 : readCredentials(env)[providerId];
789
+ const apiKey = stored || (provider.apiKeyEnv ? env[provider.apiKeyEnv] : void 0) || void 0;
777
790
  if (provider.apiKeyEnv && !apiKey) {
778
791
  throw new ConfigError(t("No API key for {id} yet. Run `bccli login` or set the env var {env}.", { id: providerId, env: provider.apiKeyEnv }));
779
792
  }
@@ -988,6 +1001,9 @@ function parseCliArgs(argv) {
988
1001
  continue: { type: "boolean", short: "c" },
989
1002
  resume: { type: "boolean", short: "r" },
990
1003
  "allow-all": { type: "boolean" },
1004
+ command: { type: "string" },
1005
+ args: { type: "string" },
1006
+ "fail-on-tool-error": { type: "boolean" },
991
1007
  "allowed-tools": { type: "string" },
992
1008
  worktree: { type: "string", short: "w" },
993
1009
  "output-format": { type: "string" },
@@ -1061,6 +1077,7 @@ function parseCliArgs(argv) {
1061
1077
  continue: !!values.continue,
1062
1078
  resume: !!values.resume,
1063
1079
  allowAll: !!values["allow-all"],
1080
+ failOnToolError: !!values["fail-on-tool-error"],
1064
1081
  allowedTools: (values["allowed-tools"] ?? "").split(",").map((s) => s.trim()).filter(Boolean),
1065
1082
  worktree: values.worktree,
1066
1083
  outputFormat,
@@ -1072,6 +1089,8 @@ function parseCliArgs(argv) {
1072
1089
  logout: !!values.logout,
1073
1090
  subArgs: ["models", "plugins", "gh-bot", "provider", "mcp", "connect", "disconnect", "integrations", "completion", "stats", "export", "import", "pr"].includes(command) ? rest : [],
1074
1091
  url: values.url,
1092
+ stdioCommand: values.command,
1093
+ stdioArgs: values.args,
1075
1094
  name: values.name,
1076
1095
  keyEnv: values["key-env"],
1077
1096
  values: values.value ?? [],
@@ -1160,6 +1179,17 @@ function outputReasoningSummary(items) {
1160
1179
  }).map((part) => part && typeof part === "object" && "text" in part && typeof part.text === "string" ? part.text : "").filter(Boolean).join("\n");
1161
1180
  }
1162
1181
  var retryable = (status) => status === 429 || status >= 500;
1182
+ function httpIdleMs() {
1183
+ const raw = Number(process.env.BCCLI_HTTP_IDLE_TIMEOUT_MS);
1184
+ return Number.isFinite(raw) && raw > 0 ? raw : 6e4;
1185
+ }
1186
+ function statusHint(status) {
1187
+ if (status === 401 || status === 403) return t("The API key was rejected. Check the key for this provider (bccli login) or its API key environment variable.");
1188
+ if (status === 404) return t("Model or endpoint not found. Check the model name and the provider base URL.");
1189
+ if (status === 429) return t("Rate limit reached. Wait a moment, or switch model with /model.");
1190
+ if (status >= 500) return t("The provider is having trouble. Try again, or switch model with /model.");
1191
+ return void 0;
1192
+ }
1163
1193
  function detectRepetition(text) {
1164
1194
  const tail = text.slice(-600);
1165
1195
  for (let len = 1; len <= 12; len++) {
@@ -1202,7 +1232,7 @@ var toUsage = (u) => u ? {
1202
1232
  ...u.prompt_tokens_details?.cached_tokens != null ? { cachedInputTokens: u.prompt_tokens_details.cached_tokens } : {},
1203
1233
  ...u.prompt_tokens_details?.cache_write_tokens != null ? { cacheWriteTokens: u.prompt_tokens_details.cache_write_tokens } : {}
1204
1234
  } : void 0;
1205
- async function readStream(res, onText, onThinking) {
1235
+ async function readStream(res, onText, onThinking, signal) {
1206
1236
  let text = "";
1207
1237
  let thinking = "";
1208
1238
  const splitter = new ThinkSplitter();
@@ -1219,6 +1249,7 @@ async function readStream(res, onText, onThinking) {
1219
1249
  };
1220
1250
  let usage;
1221
1251
  let finishReason;
1252
+ let sawDone = false;
1222
1253
  const calls = [];
1223
1254
  const byIndex = /* @__PURE__ */ new Map();
1224
1255
  let current2;
@@ -1228,7 +1259,11 @@ async function readStream(res, onText, onThinking) {
1228
1259
  const handle = (line) => {
1229
1260
  if (!line.startsWith("data:")) return;
1230
1261
  const data = line.slice(5).trim();
1231
- if (!data || data === "[DONE]") return;
1262
+ if (!data) return;
1263
+ if (data === "[DONE]") {
1264
+ sawDone = true;
1265
+ return;
1266
+ }
1232
1267
  let event;
1233
1268
  try {
1234
1269
  event = JSON.parse(data);
@@ -1257,18 +1292,45 @@ async function readStream(res, onText, onThinking) {
1257
1292
  if (tc.function?.arguments) target.arguments += tc.function.arguments;
1258
1293
  }
1259
1294
  };
1260
- for await (const chunk of res.body) {
1261
- buffer += decoder.decode(chunk, { stream: true });
1262
- let newline = buffer.indexOf("\n");
1263
- while (newline >= 0 && loopAt < 0) {
1264
- handle(buffer.slice(0, newline).trim());
1265
- buffer = buffer.slice(newline + 1);
1266
- newline = buffer.indexOf("\n");
1295
+ const iterator = res.body[Symbol.asyncIterator]();
1296
+ const idle = httpIdleMs();
1297
+ const onAbort = () => void iterator.return?.();
1298
+ if (signal?.aborted) onAbort();
1299
+ else signal?.addEventListener("abort", onAbort);
1300
+ try {
1301
+ for (; ; ) {
1302
+ let timer;
1303
+ const stalled = new Promise((_, reject) => {
1304
+ timer = setTimeout(
1305
+ () => reject(new ProviderError(t("The provider stopped sending data for {seconds}s. The answer above may be incomplete; try again.", { seconds: String(Math.round(idle / 1e3)) }))),
1306
+ idle
1307
+ );
1308
+ });
1309
+ let step;
1310
+ try {
1311
+ step = await Promise.race([iterator.next(), stalled]);
1312
+ } finally {
1313
+ if (timer) clearTimeout(timer);
1314
+ }
1315
+ if (step.done) break;
1316
+ buffer += decoder.decode(step.value, { stream: true });
1317
+ let newline = buffer.indexOf("\n");
1318
+ while (newline >= 0 && loopAt < 0) {
1319
+ handle(buffer.slice(0, newline).trim());
1320
+ buffer = buffer.slice(newline + 1);
1321
+ newline = buffer.indexOf("\n");
1322
+ }
1323
+ if (loopAt >= 0) return { text: text.slice(0, loopAt), toolCalls: [], thinking: thinking || void 0, usage, finishReason: "repetition" };
1267
1324
  }
1268
- if (loopAt >= 0) return { text: text.slice(0, loopAt), toolCalls: [], thinking: thinking || void 0, usage, finishReason: "repetition" };
1325
+ } finally {
1326
+ signal?.removeEventListener("abort", onAbort);
1327
+ void iterator.return?.();
1269
1328
  }
1270
1329
  handle(buffer.trim());
1271
1330
  emit(splitter.flush());
1331
+ if (!sawDone && !finishReason) {
1332
+ throw new ProviderError(t("The response ended before it finished (no finish_reason or [DONE]). The answer above is incomplete; try again."));
1333
+ }
1272
1334
  const toolCalls = calls.map((call, index) => ({ ...call, id: call.id || `call_${index}` }));
1273
1335
  return { text, toolCalls, thinking: thinking || void 0, usage, finishReason };
1274
1336
  }
@@ -1964,12 +2026,26 @@ function createProvider(options) {
1964
2026
  await sleep(delay, signal);
1965
2027
  }
1966
2028
  let res;
2029
+ const idleAbort = new AbortController();
2030
+ const forwardAbort = () => idleAbort.abort(signal?.reason);
2031
+ if (signal?.aborted) forwardAbort();
2032
+ else signal?.addEventListener("abort", forwardAbort);
2033
+ const idle = httpIdleMs();
2034
+ const headerTimer = setTimeout(() => idleAbort.abort(new Error("idle-timeout")), idle);
1967
2035
  try {
1968
- res = await doFetch(`${baseURL}${path}`, { method: "POST", headers, body: JSON.stringify(body), signal });
2036
+ res = await doFetch(`${baseURL}${path}`, { method: "POST", headers, body: JSON.stringify(body), signal: idleAbort.signal });
1969
2037
  } catch (error) {
1970
2038
  if (signal?.aborted) throw error;
2039
+ if (idleAbort.signal.aborted) {
2040
+ throw new ProviderError(
2041
+ t("The provider did not respond within {seconds}s. Check the connection, then try again.", { seconds: String(Math.round(idle / 1e3)) })
2042
+ );
2043
+ }
1971
2044
  lastError = new ProviderError(t("Cannot connect to {url}: {error}", { url: baseURL, error: error.message }));
1972
2045
  continue;
2046
+ } finally {
2047
+ clearTimeout(headerTimer);
2048
+ signal?.removeEventListener("abort", forwardAbort);
1973
2049
  }
1974
2050
  if (res.ok) return res;
1975
2051
  const retryHeader = res.headers.get("retry-after");
@@ -1978,7 +2054,9 @@ function createProvider(options) {
1978
2054
  if (Number.isFinite(secs) && secs > 0 && secs <= 30) retryAfterWaitMs = Math.ceil(secs * 1e3);
1979
2055
  }
1980
2056
  const text = await res.text().catch(() => "");
1981
- lastError = new ProviderError(t("{status} from {url}: {message}", { status: res.status, url: baseURL, message: errorMessage(text) }), res.status);
2057
+ const raw = t("{status} from {url}: {message}", { status: res.status, url: baseURL, message: errorMessage(text) });
2058
+ const hint = statusHint(res.status);
2059
+ lastError = new ProviderError(hint ? `${hint} (${raw})` : raw, res.status);
1982
2060
  const deterministicQuota429 = res.status === 429 && /"code"\s*:\s*"(?:luna_monthly_quota_exhausted|plan_allowance_exhausted)"/i.test(text);
1983
2061
  if (!retryable(res.status) || deterministicQuota429) throw lastError;
1984
2062
  }
@@ -2028,7 +2106,7 @@ function createProvider(options) {
2028
2106
  );
2029
2107
  if ((res.headers.get("content-type") ?? "").includes("application/json")) return readJson(res, onText, onThinking);
2030
2108
  if (!res.body) throw new ProviderError(t("Empty response from the provider"));
2031
- return readStream(res, onText, onThinking);
2109
+ return readStream(res, onText, onThinking, signal);
2032
2110
  },
2033
2111
  async listModels() {
2034
2112
  const res = await doFetch(`${baseURL}/models`, { headers });
@@ -1,14 +1,14 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  createRuntime
4
- } from "./chunk-KREGVQ63.js";
4
+ } from "./chunk-5QCCV2JM.js";
5
5
  import "./chunk-OK2USAXX.js";
6
- import "./chunk-CSIQDFEF.js";
7
- import "./chunk-WSSJH765.js";
6
+ import "./chunk-3PUWH62K.js";
7
+ import "./chunk-4WI5ON64.js";
8
8
  import "./chunk-PSO7R5AD.js";
9
9
  import {
10
10
  VERSION
11
- } from "./chunk-HCW67S5M.js";
11
+ } from "./chunk-CBD52BYV.js";
12
12
  import {
13
13
  LOOPBACK_BIND,
14
14
  MAX_FRAME_BYTES,
@@ -17,25 +17,25 @@ import {
17
17
  parseClientFrame,
18
18
  randomToken,
19
19
  trustFence
20
- } from "./chunk-Z2ELYJ5O.js";
20
+ } from "./chunk-CIEPLTGS.js";
21
21
  import "./chunk-WFZKJY3R.js";
22
- import "./chunk-AWBEZY4D.js";
22
+ import "./chunk-PGDYPOQW.js";
23
23
  import {
24
24
  listAllModels
25
- } from "./chunk-HPYI7L4W.js";
26
- import "./chunk-62UTSCWF.js";
27
- import "./chunk-RRECJTOG.js";
25
+ } from "./chunk-SXRQ2Q7A.js";
26
+ import "./chunk-MPYSYTSO.js";
27
+ import "./chunk-67REFMSY.js";
28
28
  import {
29
29
  Session
30
- } from "./chunk-OETLWNGS.js";
31
- import "./chunk-EOJNFGOP.js";
32
- import "./chunk-EAR2C6TS.js";
33
- import "./chunk-2YG6L3YO.js";
30
+ } from "./chunk-24KDXQZT.js";
31
+ import "./chunk-VXRW5SYP.js";
32
+ import "./chunk-6RVAPAE5.js";
33
+ import "./chunk-7HDBPDAD.js";
34
34
  import {
35
35
  bccliHome,
36
36
  loadConfig
37
- } from "./chunk-DRJSANKH.js";
38
- import "./chunk-XCVYR5BK.js";
37
+ } from "./chunk-USFXL5BS.js";
38
+ import "./chunk-ED5TTYQU.js";
39
39
 
40
40
  // src/serve.ts
41
41
  import { randomBytes } from "crypto";
@@ -3,15 +3,15 @@ import {
3
3
  createFetchTool,
4
4
  createWebSearchTool,
5
5
  isPrivateHost
6
- } from "./chunk-WSSJH765.js";
6
+ } from "./chunk-4WI5ON64.js";
7
7
  import "./chunk-PSO7R5AD.js";
8
8
  import {
9
9
  loadConfig,
10
10
  readCredentials
11
- } from "./chunk-DRJSANKH.js";
11
+ } from "./chunk-USFXL5BS.js";
12
12
  import {
13
13
  t
14
- } from "./chunk-XCVYR5BK.js";
14
+ } from "./chunk-ED5TTYQU.js";
15
15
 
16
16
  // src/mcpServer/serve.ts
17
17
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ Session,
4
+ pruneSessions
5
+ } from "./chunk-24KDXQZT.js";
6
+ import "./chunk-VXRW5SYP.js";
7
+ import "./chunk-6RVAPAE5.js";
8
+ import "./chunk-ED5TTYQU.js";
9
+ export {
10
+ Session,
11
+ pruneSessions
12
+ };
@@ -0,0 +1,24 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ createRuntime,
4
+ lunaPtcAutoEnabled
5
+ } from "./chunk-5QCCV2JM.js";
6
+ import "./chunk-OK2USAXX.js";
7
+ import "./chunk-3PUWH62K.js";
8
+ import "./chunk-4WI5ON64.js";
9
+ import "./chunk-PSO7R5AD.js";
10
+ import "./chunk-WFZKJY3R.js";
11
+ import "./chunk-PGDYPOQW.js";
12
+ import "./chunk-SXRQ2Q7A.js";
13
+ import "./chunk-MPYSYTSO.js";
14
+ import "./chunk-67REFMSY.js";
15
+ import "./chunk-24KDXQZT.js";
16
+ import "./chunk-VXRW5SYP.js";
17
+ import "./chunk-6RVAPAE5.js";
18
+ import "./chunk-7HDBPDAD.js";
19
+ import "./chunk-USFXL5BS.js";
20
+ import "./chunk-ED5TTYQU.js";
21
+ export {
22
+ createRuntime,
23
+ lunaPtcAutoEnabled
24
+ };
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-OK2USAXX.js";
5
5
  import {
6
6
  t
7
- } from "./chunk-XCVYR5BK.js";
7
+ } from "./chunk-ED5TTYQU.js";
8
8
 
9
9
  // src/statsCli.ts
10
10
  import { existsSync, readdirSync, readFileSync, statSync } from "fs";
@@ -1,12 +1,12 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  Session
4
- } from "./chunk-OETLWNGS.js";
5
- import "./chunk-EOJNFGOP.js";
6
- import "./chunk-EAR2C6TS.js";
4
+ } from "./chunk-24KDXQZT.js";
5
+ import "./chunk-VXRW5SYP.js";
6
+ import "./chunk-6RVAPAE5.js";
7
7
  import {
8
8
  t
9
- } from "./chunk-XCVYR5BK.js";
9
+ } from "./chunk-ED5TTYQU.js";
10
10
 
11
11
  // src/transferCli.ts
12
12
  import { copyFileSync, existsSync, mkdirSync, readdirSync, readFileSync, statSync, writeFileSync } from "fs";
@@ -2,14 +2,14 @@
2
2
  import {
3
3
  CATALOG,
4
4
  fillTemplate
5
- } from "./chunk-TLCFBQ6E.js";
5
+ } from "./chunk-6N2BBLIT.js";
6
6
  import {
7
7
  MAX_VERIFY_ROUNDS,
8
8
  runVerify,
9
9
  toolLabel,
10
10
  verifyFollowup,
11
11
  worktreeListText
12
- } from "./chunk-OUJRD7GG.js";
12
+ } from "./chunk-3K66L37W.js";
13
13
  import {
14
14
  BUILTIN_AGENTS,
15
15
  appendMemory,
@@ -24,7 +24,7 @@ import {
24
24
  runCommand,
25
25
  runHooks,
26
26
  validateGlobPattern
27
- } from "./chunk-CSIQDFEF.js";
27
+ } from "./chunk-3PUWH62K.js";
28
28
  import "./chunk-PSO7R5AD.js";
29
29
  import {
30
30
  nextMode,
@@ -34,39 +34,39 @@ import {
34
34
  hasKey,
35
35
  providerName,
36
36
  writeGlobalConfig
37
- } from "./chunk-62UTSCWF.js";
37
+ } from "./chunk-MPYSYTSO.js";
38
38
  import {
39
39
  Session
40
- } from "./chunk-OETLWNGS.js";
40
+ } from "./chunk-24KDXQZT.js";
41
41
  import {
42
42
  contentText
43
- } from "./chunk-EOJNFGOP.js";
43
+ } from "./chunk-VXRW5SYP.js";
44
44
  import {
45
45
  REASONING_LEVELS,
46
46
  assertReasoningSupported,
47
47
  parseReasoningLevel,
48
48
  supportedReasoningLevels
49
- } from "./chunk-EAR2C6TS.js";
49
+ } from "./chunk-6RVAPAE5.js";
50
50
  import {
51
51
  addGlobalServer,
52
52
  globalMcpPath,
53
53
  readMcpFile,
54
54
  removeGlobalServer
55
- } from "./chunk-2YG6L3YO.js";
55
+ } from "./chunk-7HDBPDAD.js";
56
56
  import {
57
57
  ACCENT,
58
58
  PRESETS,
59
59
  color,
60
60
  matchKeybind,
61
61
  removeCredential
62
- } from "./chunk-DRJSANKH.js";
62
+ } from "./chunk-USFXL5BS.js";
63
63
  import {
64
64
  getLanguage,
65
65
  locale,
66
66
  parseLang,
67
67
  setLanguage,
68
68
  t
69
- } from "./chunk-XCVYR5BK.js";
69
+ } from "./chunk-ED5TTYQU.js";
70
70
 
71
71
  // src/ui/index.tsx
72
72
  import { render } from "ink";
@@ -2887,7 +2887,7 @@ ${allLines.slice(-maxLiveLines).join("\n")}` : text;
2887
2887
  import { jsx as jsx17 } from "react/jsx-runtime";
2888
2888
  async function startInteractive(rt, opts) {
2889
2889
  if (opts.resume) {
2890
- const { Session: Session2 } = await import("./session-XABMBIIF.js");
2890
+ const { Session: Session2 } = await import("./session-VAPIHHUG.js");
2891
2891
  const list = Session2.list(rt.home, rt.cwd).slice(0, 20);
2892
2892
  if (!list.length) console.log(t("No sessions in this folder yet; starting a new one."));
2893
2893
  else {
@@ -2903,7 +2903,7 @@ async function startInteractive(rt, opts) {
2903
2903
  if (chosen) rt.resume(chosen.session);
2904
2904
  }
2905
2905
  }
2906
- const { serversToStart, setProjectTrust } = await import("./config-KR5JI5RA.js");
2906
+ const { serversToStart, setProjectTrust } = await import("./config-JLOH5M6B.js");
2907
2907
  const plan = serversToStart(rt.home, rt.cwd);
2908
2908
  if (plan.needTrust.length) {
2909
2909
  const { createInterface } = await import("readline/promises");
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  VERSION
4
- } from "./chunk-HCW67S5M.js";
4
+ } from "./chunk-CBD52BYV.js";
5
5
  import {
6
6
  t
7
- } from "./chunk-XCVYR5BK.js";
7
+ } from "./chunk-ED5TTYQU.js";
8
8
 
9
9
  // src/update.ts
10
10
  import { spawnSync } from "child_process";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@botconnector/bccli",
3
- "version": "0.4.9",
3
+ "version": "0.4.10",
4
4
  "description": "BCCLI — BotConnector AI coding agent for the terminal",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1,15 +0,0 @@
1
- #!/usr/bin/env node
2
- import {
3
- addProviderKey,
4
- runProviderCommand
5
- } from "./chunk-AWBEZY4D.js";
6
- import "./chunk-HPYI7L4W.js";
7
- import "./chunk-62UTSCWF.js";
8
- import "./chunk-EOJNFGOP.js";
9
- import "./chunk-EAR2C6TS.js";
10
- import "./chunk-DRJSANKH.js";
11
- import "./chunk-XCVYR5BK.js";
12
- export {
13
- addProviderKey,
14
- runProviderCommand
15
- };
@@ -1,12 +0,0 @@
1
- #!/usr/bin/env node
2
- import {
3
- Session,
4
- pruneSessions
5
- } from "./chunk-OETLWNGS.js";
6
- import "./chunk-EOJNFGOP.js";
7
- import "./chunk-EAR2C6TS.js";
8
- import "./chunk-XCVYR5BK.js";
9
- export {
10
- Session,
11
- pruneSessions
12
- };
@@ -1,24 +0,0 @@
1
- #!/usr/bin/env node
2
- import {
3
- createRuntime,
4
- lunaPtcAutoEnabled
5
- } from "./chunk-KREGVQ63.js";
6
- import "./chunk-OK2USAXX.js";
7
- import "./chunk-CSIQDFEF.js";
8
- import "./chunk-WSSJH765.js";
9
- import "./chunk-PSO7R5AD.js";
10
- import "./chunk-WFZKJY3R.js";
11
- import "./chunk-AWBEZY4D.js";
12
- import "./chunk-HPYI7L4W.js";
13
- import "./chunk-62UTSCWF.js";
14
- import "./chunk-RRECJTOG.js";
15
- import "./chunk-OETLWNGS.js";
16
- import "./chunk-EOJNFGOP.js";
17
- import "./chunk-EAR2C6TS.js";
18
- import "./chunk-2YG6L3YO.js";
19
- import "./chunk-DRJSANKH.js";
20
- import "./chunk-XCVYR5BK.js";
21
- export {
22
- createRuntime,
23
- lunaPtcAutoEnabled
24
- };