@botconnector/bccli 0.4.7 → 0.4.8

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 (36) hide show
  1. package/dist/{acp-XGG33CZJ.js → acp-VEXFXT5P.js} +2 -2
  2. package/dist/{args-SQRIBI2Q.js → args-6XMUZDAK.js} +2 -2
  3. package/dist/{chunk-54PFT7F5.js → chunk-2YG6L3YO.js} +1 -1
  4. package/dist/{chunk-34Z6BXTO.js → chunk-62UTSCWF.js} +1 -1
  5. package/dist/{chunk-42VCJJTW.js → chunk-6H6MPG7L.js} +4 -4
  6. package/dist/{chunk-EG7GJBSV.js → chunk-AWBEZY4D.js} +3 -3
  7. package/dist/{chunk-T5Z3FCT2.js → chunk-DRJSANKH.js} +1 -1
  8. package/dist/{chunk-L5FKXSFK.js → chunk-EOJNFGOP.js} +2 -2
  9. package/dist/{chunk-6GC5I2RK.js → chunk-HPYI7L4W.js} +3 -3
  10. package/dist/{chunk-TCRAN6ZO.js → chunk-KREGVQ63.js} +8 -8
  11. package/dist/{chunk-V4LPDP3Z.js → chunk-O6NTUSSE.js} +1 -1
  12. package/dist/{chunk-Y57FCAGM.js → chunk-OETLWNGS.js} +1 -1
  13. package/dist/{chunk-SE6SM2EI.js → chunk-OUJRD7GG.js} +1 -1
  14. package/dist/{chunk-3MCGYPYI.js → chunk-RRECJTOG.js} +1 -1
  15. package/dist/{chunk-HR7T3BY2.js → chunk-TLCFBQ6E.js} +1 -1
  16. package/dist/{chunk-3WYR6KVQ.js → chunk-Z2ELYJ5O.js} +1 -1
  17. package/dist/cli.js +31 -31
  18. package/dist/{config-PVEZPRMH.js → config-KR5JI5RA.js} +2 -2
  19. package/dist/{config-BUSQGUWY.js → config-RVMC23W3.js} +1 -1
  20. package/dist/{ghBotCli-X6HEOQMZ.js → ghBotCli-Z6GWXCJ6.js} +10 -10
  21. package/dist/{integrationCli-552UYCXJ.js → integrationCli-GPRR6J6W.js} +1 -1
  22. package/dist/{login-SWK74XO5.js → login-DFSN77L3.js} +3 -3
  23. package/dist/{mcpCli-DH4R5B7F.js → mcpCli-64P3SVUE.js} +5 -5
  24. package/dist/{modelsCli-4YEUPYBF.js → modelsCli-PFQY3G2Q.js} +4 -4
  25. package/dist/{pluginsCli-CIW35MNB.js → pluginsCli-UKRJ3AHN.js} +1 -1
  26. package/dist/{providerCli-N64TSYMT.js → providerCli-PBSZECBM.js} +5 -5
  27. package/dist/sdk.js +3 -3
  28. package/dist/{serve-DAC2JGEH.js → serve-DTTFDRUY.js} +11 -11
  29. package/dist/{serve-N2TUTZGD.js → serve-PKUTKQQT.js} +1 -1
  30. package/dist/{session-QZAXEQRE.js → session-XABMBIIF.js} +2 -2
  31. package/dist/{setup-2KMWTHDZ.js → setup-CLPQLTM7.js} +9 -9
  32. package/dist/{transferCli-ZY7WIIPY.js → transferCli-GIE4MEJ4.js} +2 -2
  33. package/dist/ui/PromptInput.d.ts +3 -1
  34. package/dist/{ui-A7DY4X4E.js → ui-NZVOCQSU.js} +18 -22
  35. package/dist/{update-36PG64GC.js → update-W2D2XJVP.js} +1 -1
  36. package/package.json +1 -1
@@ -180,8 +180,8 @@ function runtimeAgent(cwd, allowAll = false) {
180
180
  return {
181
181
  async run(text, onChunk, signal, io) {
182
182
  if (!rt) {
183
- const { parseCliArgs } = await import("./args-SQRIBI2Q.js");
184
- const { createRuntime } = await import("./setup-2KMWTHDZ.js");
183
+ const { parseCliArgs } = await import("./args-6XMUZDAK.js");
184
+ const { createRuntime } = await import("./setup-CLPQLTM7.js");
185
185
  rt = createRuntime({ cwd, args: { ...parseCliArgs([]), allowAll } });
186
186
  }
187
187
  if (io && !allowAll) rt.agent.askPermission = (req) => io.askPermission(req);
@@ -2,10 +2,10 @@
2
2
  import {
3
3
  helpText,
4
4
  parseCliArgs
5
- } from "./chunk-3WYR6KVQ.js";
5
+ } from "./chunk-Z2ELYJ5O.js";
6
6
  import "./chunk-WFZKJY3R.js";
7
7
  import "./chunk-EAR2C6TS.js";
8
- import "./chunk-T5Z3FCT2.js";
8
+ import "./chunk-DRJSANKH.js";
9
9
  import "./chunk-XCVYR5BK.js";
10
10
  export {
11
11
  helpText,
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  ConfigError,
4
4
  writeFileAtomic
5
- } from "./chunk-T5Z3FCT2.js";
5
+ } from "./chunk-DRJSANKH.js";
6
6
  import {
7
7
  t
8
8
  } from "./chunk-XCVYR5BK.js";
@@ -6,7 +6,7 @@ import {
6
6
  readJsonConfig,
7
7
  removeCredential,
8
8
  writeFileAtomic
9
- } from "./chunk-T5Z3FCT2.js";
9
+ } from "./chunk-DRJSANKH.js";
10
10
 
11
11
  // src/providers.ts
12
12
  import { join } from "path";
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  defaultOpen
4
- } from "./chunk-3MCGYPYI.js";
4
+ } from "./chunk-RRECJTOG.js";
5
5
  import {
6
6
  removeCredential,
7
7
  saveCredential
8
- } from "./chunk-T5Z3FCT2.js";
8
+ } from "./chunk-DRJSANKH.js";
9
9
  import {
10
10
  t
11
11
  } from "./chunk-XCVYR5BK.js";
@@ -91,8 +91,8 @@ function defaultLoginDeps() {
91
91
  fetch: globalThis.fetch,
92
92
  // Wiring NYATA jalur lama: persis runLogin lama (provider add + prompt key).
93
93
  legacyAdd: async (providerId, targetCwd) => {
94
- const { runProviderCommand } = await import("./providerCli-N64TSYMT.js");
95
- const { parseCliArgs: parse } = await import("./args-SQRIBI2Q.js");
94
+ const { runProviderCommand } = await import("./providerCli-PBSZECBM.js");
95
+ const { parseCliArgs: parse } = await import("./args-6XMUZDAK.js");
96
96
  return runProviderCommand(parse(["provider", "add", providerId]), {
97
97
  env: process.env,
98
98
  cwd: targetCwd,
@@ -1,18 +1,18 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  listAllModels
4
- } from "./chunk-6GC5I2RK.js";
4
+ } from "./chunk-HPYI7L4W.js";
5
5
  import {
6
6
  hasKey,
7
7
  providerName,
8
8
  removeGlobalProvider,
9
9
  writeGlobalConfig
10
- } from "./chunk-34Z6BXTO.js";
10
+ } from "./chunk-62UTSCWF.js";
11
11
  import {
12
12
  PRESETS,
13
13
  loadConfig,
14
14
  saveCredential
15
- } from "./chunk-T5Z3FCT2.js";
15
+ } from "./chunk-DRJSANKH.js";
16
16
  import {
17
17
  t
18
18
  } from "./chunk-XCVYR5BK.js";
@@ -244,7 +244,7 @@ function loadConfig(cwd, env = process.env) {
244
244
  permissionMode: global.permissionMode ?? DEFAULT_CONFIG.permissionMode,
245
245
  reasoning: global.reasoning ?? DEFAULT_CONFIG.reasoning,
246
246
  thinkingVisible: global.thinkingVisible === true,
247
- thinkingClickCollapse: global.thinkingClickCollapse !== false,
247
+ thinkingClickCollapse: global.thinkingClickCollapse === true,
248
248
  sessionRetentionDays: resolvedSessionRetentionDays(global),
249
249
  maxSteps: resolvedMaxSteps(global),
250
250
  hooks: global.hooks,
@@ -760,7 +760,7 @@ function createProvider(options) {
760
760
  const isBotConnectorCloud = /^https:\/\/api\.botconnector\.id\/v1\/?$/.test(baseURL) && apiKey?.startsWith("bc_live_");
761
761
  if (isBotConnectorCloud) {
762
762
  headers["x-botconnector-client"] = "bccli";
763
- headers["x-botconnector-client-version"] = "0.4.7";
763
+ headers["x-botconnector-client-version"] = "0.4.8";
764
764
  }
765
765
  const useNativeResponses = isBotConnectorCloud && providerId === "bc-cloud" && model === "gpt-6-luna";
766
766
  const useResponsesWebSocket = useNativeResponses && Boolean(apiKey) && (fetchOverride === void 0 || responsesWebSocketFactory !== void 0);
@@ -791,7 +791,7 @@ function createProvider(options) {
791
791
  baseURL: baseURL.replace(/\/+$/, ""),
792
792
  defaultHeaders: {
793
793
  "x-botconnector-client": "bccli",
794
- "x-botconnector-client-version": "0.4.7"
794
+ "x-botconnector-client-version": "0.4.8"
795
795
  }
796
796
  });
797
797
  lunaWs = responsesWebSocketFactory ? responsesWebSocketFactory(client) : new ResponsesWS(client, { reconnect: null });
@@ -2,14 +2,14 @@
2
2
  import {
3
3
  hasKey,
4
4
  providerName
5
- } from "./chunk-34Z6BXTO.js";
5
+ } from "./chunk-62UTSCWF.js";
6
6
  import {
7
7
  createProvider
8
- } from "./chunk-L5FKXSFK.js";
8
+ } from "./chunk-EOJNFGOP.js";
9
9
  import {
10
10
  PRESETS,
11
11
  readCredentials
12
- } from "./chunk-T5Z3FCT2.js";
12
+ } from "./chunk-DRJSANKH.js";
13
13
  import {
14
14
  t
15
15
  } from "./chunk-XCVYR5BK.js";
@@ -37,36 +37,36 @@ import {
37
37
  } from "./chunk-WFZKJY3R.js";
38
38
  import {
39
39
  addProviderKey
40
- } from "./chunk-EG7GJBSV.js";
40
+ } from "./chunk-AWBEZY4D.js";
41
41
  import {
42
42
  listAllModels
43
- } from "./chunk-6GC5I2RK.js";
43
+ } from "./chunk-HPYI7L4W.js";
44
44
  import {
45
45
  providerName
46
- } from "./chunk-34Z6BXTO.js";
46
+ } from "./chunk-62UTSCWF.js";
47
47
  import {
48
48
  FileOAuthProvider,
49
49
  hasStoredTokens
50
- } from "./chunk-3MCGYPYI.js";
50
+ } from "./chunk-RRECJTOG.js";
51
51
  import {
52
52
  Session
53
- } from "./chunk-Y57FCAGM.js";
53
+ } from "./chunk-OETLWNGS.js";
54
54
  import {
55
55
  completionAssistantMessage,
56
56
  createProvider,
57
57
  hasPendingProgrammaticReplay,
58
58
  imageUserMessage,
59
59
  withFallbackProvider
60
- } from "./chunk-L5FKXSFK.js";
60
+ } from "./chunk-EOJNFGOP.js";
61
61
  import {
62
62
  expandEnvVars
63
- } from "./chunk-54PFT7F5.js";
63
+ } from "./chunk-2YG6L3YO.js";
64
64
  import {
65
65
  ConfigError,
66
66
  bccliHome,
67
67
  loadConfig,
68
68
  resolveModel
69
- } from "./chunk-T5Z3FCT2.js";
69
+ } from "./chunk-DRJSANKH.js";
70
70
  import {
71
71
  t
72
72
  } from "./chunk-XCVYR5BK.js";
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  // src/version.ts
4
- var VERSION = true ? "0.4.7" : "0.0.0-dev";
4
+ var VERSION = true ? "0.4.8" : "0.0.0-dev";
5
5
 
6
6
  export {
7
7
  VERSION
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  contentText
4
- } from "./chunk-L5FKXSFK.js";
4
+ } from "./chunk-EOJNFGOP.js";
5
5
 
6
6
  // src/session.ts
7
7
  import { randomBytes } from "crypto";
@@ -5,7 +5,7 @@ import {
5
5
  } from "./chunk-CSIQDFEF.js";
6
6
  import {
7
7
  ConfigError
8
- } from "./chunk-T5Z3FCT2.js";
8
+ } from "./chunk-DRJSANKH.js";
9
9
  import {
10
10
  t
11
11
  } from "./chunk-XCVYR5BK.js";
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  quarantineCorruptFile,
4
4
  writeFileAtomic
5
- } from "./chunk-T5Z3FCT2.js";
5
+ } from "./chunk-DRJSANKH.js";
6
6
 
7
7
  // src/mcp/oauth.ts
8
8
  import { spawn } from "child_process";
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  ConfigError
4
- } from "./chunk-T5Z3FCT2.js";
4
+ } from "./chunk-DRJSANKH.js";
5
5
  import {
6
6
  t
7
7
  } from "./chunk-XCVYR5BK.js";
@@ -8,7 +8,7 @@ import {
8
8
  } from "./chunk-EAR2C6TS.js";
9
9
  import {
10
10
  ConfigError
11
- } from "./chunk-T5Z3FCT2.js";
11
+ } from "./chunk-DRJSANKH.js";
12
12
  import {
13
13
  parseLang,
14
14
  t
package/dist/cli.js CHANGED
@@ -3,42 +3,42 @@ import {
3
3
  resolvePrintPrompt,
4
4
  resolveWorktree,
5
5
  runPrint
6
- } from "./chunk-SE6SM2EI.js";
6
+ } from "./chunk-OUJRD7GG.js";
7
7
  import {
8
8
  createRuntime
9
- } from "./chunk-TCRAN6ZO.js";
9
+ } from "./chunk-KREGVQ63.js";
10
10
  import "./chunk-OK2USAXX.js";
11
11
  import "./chunk-CSIQDFEF.js";
12
12
  import "./chunk-WSSJH765.js";
13
13
  import "./chunk-PSO7R5AD.js";
14
14
  import {
15
15
  VERSION
16
- } from "./chunk-V4LPDP3Z.js";
16
+ } from "./chunk-O6NTUSSE.js";
17
17
  import {
18
18
  helpText,
19
19
  parseCliArgs
20
- } from "./chunk-3WYR6KVQ.js";
20
+ } from "./chunk-Z2ELYJ5O.js";
21
21
  import "./chunk-WFZKJY3R.js";
22
- import "./chunk-EG7GJBSV.js";
23
- import "./chunk-6GC5I2RK.js";
22
+ import "./chunk-AWBEZY4D.js";
23
+ import "./chunk-HPYI7L4W.js";
24
24
  import {
25
25
  readGlobalConfigFile
26
- } from "./chunk-34Z6BXTO.js";
26
+ } from "./chunk-62UTSCWF.js";
27
27
  import {
28
28
  defaultLoginDeps,
29
29
  runLogin
30
- } from "./chunk-42VCJJTW.js";
31
- import "./chunk-3MCGYPYI.js";
30
+ } from "./chunk-6H6MPG7L.js";
31
+ import "./chunk-RRECJTOG.js";
32
32
  import {
33
33
  pruneSessions
34
- } from "./chunk-Y57FCAGM.js";
35
- import "./chunk-L5FKXSFK.js";
34
+ } from "./chunk-OETLWNGS.js";
35
+ import "./chunk-EOJNFGOP.js";
36
36
  import "./chunk-EAR2C6TS.js";
37
- import "./chunk-54PFT7F5.js";
37
+ import "./chunk-2YG6L3YO.js";
38
38
  import {
39
39
  ConfigError,
40
40
  setTheme
41
- } from "./chunk-T5Z3FCT2.js";
41
+ } from "./chunk-DRJSANKH.js";
42
42
  import {
43
43
  resolveLanguage,
44
44
  setLanguage,
@@ -85,17 +85,17 @@ async function main() {
85
85
  if (args.worktree) cwd = (await resolveWorktree(cwd, args.worktree)).path;
86
86
  if (args.command === "login") return runLogin(args.loginProvider ?? "bc-cloud", cwd, args, defaultLoginDeps());
87
87
  if (args.command === "mcp") {
88
- const { runMcpCommand } = await import("./mcpCli-DH4R5B7F.js");
89
- const { readSecret } = await import("./login-SWK74XO5.js");
88
+ const { runMcpCommand } = await import("./mcpCli-64P3SVUE.js");
89
+ const { readSecret } = await import("./login-DFSN77L3.js");
90
90
  return runMcpCommand(args, { env: process.env, cwd, out: (s) => console.log(s), err: (s) => console.error(s), readSecret });
91
91
  }
92
92
  if (args.command === "provider") {
93
- const { runProviderCommand } = await import("./providerCli-N64TSYMT.js");
94
- const { readSecret } = await import("./login-SWK74XO5.js");
93
+ const { runProviderCommand } = await import("./providerCli-PBSZECBM.js");
94
+ const { readSecret } = await import("./login-DFSN77L3.js");
95
95
  return runProviderCommand(args, { env: process.env, cwd, out: (s) => console.log(s), err: (s) => console.error(s), readSecret });
96
96
  }
97
97
  if (args.command === "connect" || args.command === "disconnect" || args.command === "integrations") {
98
- const { runIntegrationCommand } = await import("./integrationCli-552UYCXJ.js");
98
+ const { runIntegrationCommand } = await import("./integrationCli-GPRR6J6W.js");
99
99
  return runIntegrationCommand(args, {
100
100
  env: process.env,
101
101
  cwd,
@@ -105,20 +105,20 @@ async function main() {
105
105
  });
106
106
  }
107
107
  if (args.command === "models") {
108
- const { runModelsCommand } = await import("./modelsCli-4YEUPYBF.js");
108
+ const { runModelsCommand } = await import("./modelsCli-PFQY3G2Q.js");
109
109
  return runModelsCommand(args, { env: process.env, cwd, out: (s) => console.log(s), err: (s) => console.error(s), fetch: globalThis.fetch });
110
110
  }
111
111
  if (args.command === "update") {
112
- const { runUpdateCommand } = await import("./update-36PG64GC.js");
112
+ const { runUpdateCommand } = await import("./update-W2D2XJVP.js");
113
113
  return runUpdateCommand({ env: process.env });
114
114
  }
115
115
  if (args.command === "acp") {
116
- const { runtimeAgent, runAcp } = await import("./acp-XGG33CZJ.js");
116
+ const { runtimeAgent, runAcp } = await import("./acp-VEXFXT5P.js");
117
117
  await runAcp(process.stdin, process.stdout, { cwd, newAgent: (c) => runtimeAgent(c, args.allowAll) });
118
118
  return 0;
119
119
  }
120
120
  if (args.command === "serve") {
121
- const { serveBanner, startServe } = await import("./serve-DAC2JGEH.js");
121
+ const { serveBanner, startServe } = await import("./serve-DTTFDRUY.js");
122
122
  const handle = await startServe({ port: args.port, host: args.host, token: args.token, cwd, env: process.env });
123
123
  process.stderr.write(serveBanner(handle, { token: args.token }));
124
124
  await new Promise((resolve) => {
@@ -131,8 +131,8 @@ async function main() {
131
131
  return 0;
132
132
  }
133
133
  if (args.command === "plugins") {
134
- const { runPluginsCommand } = await import("./pluginsCli-CIW35MNB.js");
135
- const { readGlobalPlugins, updateGlobalConfig } = await import("./config-BUSQGUWY.js");
134
+ const { runPluginsCommand } = await import("./pluginsCli-UKRJ3AHN.js");
135
+ const { readGlobalPlugins, updateGlobalConfig } = await import("./config-RVMC23W3.js");
136
136
  const { runNpmSync } = await import("./npmRunner-LU43GM3W.js");
137
137
  return runPluginsCommand(args, {
138
138
  out: (s) => console.log(s),
@@ -146,7 +146,7 @@ async function main() {
146
146
  });
147
147
  }
148
148
  if (args.command === "gh-bot") {
149
- const { runGhBotCommand } = await import("./ghBotCli-X6HEOQMZ.js");
149
+ const { runGhBotCommand } = await import("./ghBotCli-Z6GWXCJ6.js");
150
150
  return runGhBotCommand(args, { env: process.env, cwd, out: (s) => console.log(s), err: (s) => console.error(s) });
151
151
  }
152
152
  if (args.command === "completion") {
@@ -155,15 +155,15 @@ async function main() {
155
155
  }
156
156
  if (args.command === "stats") {
157
157
  const { runStatsCommand } = await import("./statsCli-FR7GOKWO.js");
158
- const { bccliHome } = await import("./config-BUSQGUWY.js");
158
+ const { bccliHome } = await import("./config-RVMC23W3.js");
159
159
  return runStatsCommand(
160
160
  { subArgs: args.subArgs, home: bccliHome(process.env), cwd, days: args.days, tools: args.tools, models: args.models, project: args.project },
161
161
  { out: (s) => console.log(s), err: (s) => console.error(s) }
162
162
  );
163
163
  }
164
164
  if (args.command === "export" || args.command === "import") {
165
- const { runExportCommand, runImportCommand } = await import("./transferCli-ZY7WIIPY.js");
166
- const { bccliHome } = await import("./config-BUSQGUWY.js");
165
+ const { runExportCommand, runImportCommand } = await import("./transferCli-GIE4MEJ4.js");
166
+ const { bccliHome } = await import("./config-RVMC23W3.js");
167
167
  const deps = { subArgs: args.subArgs, home: bccliHome(process.env), cwd };
168
168
  const io = { out: (s) => console.log(s), err: (s) => console.error(s) };
169
169
  return args.command === "export" ? runExportCommand(deps, io) : runImportCommand(deps, io);
@@ -199,7 +199,7 @@ async function main() {
199
199
  }
200
200
  const finalPrompt = resolvePrintPrompt(args.prompt, stdinText);
201
201
  if (!finalPrompt) throw new ConfigError(t('-p mode needs a task, e.g. bccli -p "explain this repo"'));
202
- const { serversToStart } = await import("./config-PVEZPRMH.js");
202
+ const { serversToStart } = await import("./config-KR5JI5RA.js");
203
203
  const plan = serversToStart(rt.home, cwd);
204
204
  for (const s of plan.needTrust) {
205
205
  console.error(t('Project MCP server "{name}" skipped (not approved yet; run interactive bccli once to approve it).', { name: s.name }));
@@ -215,13 +215,13 @@ async function main() {
215
215
  let updateMessage;
216
216
  if (rt.config.updateCheck !== "off" && !process.env.BCCLI_NO_UPDATE_CHECK) {
217
217
  try {
218
- const { checkForUpdate } = await import("./update-36PG64GC.js");
218
+ const { checkForUpdate } = await import("./update-W2D2XJVP.js");
219
219
  const update = await checkForUpdate({ home: rt.home, fetch: globalThis.fetch, now: /* @__PURE__ */ new Date() });
220
220
  updateMessage = update;
221
221
  } catch {
222
222
  }
223
223
  }
224
- const { startInteractive } = await import("./ui-A7DY4X4E.js");
224
+ const { startInteractive } = await import("./ui-NZVOCQSU.js");
225
225
  return startInteractive(rt, { initialPrompt: args.prompt, resume: args.resume, version: VERSION, updateMessage });
226
226
  }
227
227
  main().then(
@@ -9,8 +9,8 @@ import {
9
9
  removeGlobalServer,
10
10
  serversToStart,
11
11
  setProjectTrust
12
- } from "./chunk-54PFT7F5.js";
13
- import "./chunk-T5Z3FCT2.js";
12
+ } from "./chunk-2YG6L3YO.js";
13
+ import "./chunk-DRJSANKH.js";
14
14
  import "./chunk-XCVYR5BK.js";
15
15
  export {
16
16
  addGlobalServer,
@@ -14,7 +14,7 @@ import {
14
14
  saveCredential,
15
15
  updateGlobalConfig,
16
16
  writeFileAtomic
17
- } from "./chunk-T5Z3FCT2.js";
17
+ } from "./chunk-DRJSANKH.js";
18
18
  import "./chunk-XCVYR5BK.js";
19
19
  export {
20
20
  ConfigError,
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  createRuntime
4
- } from "./chunk-TCRAN6ZO.js";
4
+ } from "./chunk-KREGVQ63.js";
5
5
  import "./chunk-OK2USAXX.js";
6
6
  import "./chunk-CSIQDFEF.js";
7
7
  import "./chunk-WSSJH765.js";
@@ -9,21 +9,21 @@ import "./chunk-PSO7R5AD.js";
9
9
  import {
10
10
  LOOPBACK_BIND,
11
11
  parseCliArgs
12
- } from "./chunk-3WYR6KVQ.js";
12
+ } from "./chunk-Z2ELYJ5O.js";
13
13
  import "./chunk-WFZKJY3R.js";
14
- import "./chunk-EG7GJBSV.js";
15
- import "./chunk-6GC5I2RK.js";
16
- import "./chunk-34Z6BXTO.js";
17
- import "./chunk-3MCGYPYI.js";
18
- import "./chunk-Y57FCAGM.js";
19
- import "./chunk-L5FKXSFK.js";
14
+ import "./chunk-AWBEZY4D.js";
15
+ import "./chunk-HPYI7L4W.js";
16
+ import "./chunk-62UTSCWF.js";
17
+ import "./chunk-RRECJTOG.js";
18
+ import "./chunk-OETLWNGS.js";
19
+ import "./chunk-EOJNFGOP.js";
20
20
  import "./chunk-EAR2C6TS.js";
21
- import "./chunk-54PFT7F5.js";
21
+ import "./chunk-2YG6L3YO.js";
22
22
  import {
23
23
  ConfigError,
24
24
  globalConfigPath,
25
25
  readJsonConfig
26
- } from "./chunk-T5Z3FCT2.js";
26
+ } from "./chunk-DRJSANKH.js";
27
27
  import {
28
28
  t
29
29
  } from "./chunk-XCVYR5BK.js";
@@ -5,7 +5,7 @@ import {
5
5
  loadConfig,
6
6
  readCredentials,
7
7
  resolveModel
8
- } from "./chunk-T5Z3FCT2.js";
8
+ } from "./chunk-DRJSANKH.js";
9
9
  import {
10
10
  t
11
11
  } from "./chunk-XCVYR5BK.js";
@@ -4,9 +4,9 @@ import {
4
4
  readLine,
5
5
  readSecret,
6
6
  runLogin
7
- } from "./chunk-42VCJJTW.js";
8
- import "./chunk-3MCGYPYI.js";
9
- import "./chunk-T5Z3FCT2.js";
7
+ } from "./chunk-6H6MPG7L.js";
8
+ import "./chunk-RRECJTOG.js";
9
+ import "./chunk-DRJSANKH.js";
10
10
  import "./chunk-XCVYR5BK.js";
11
11
  export {
12
12
  defaultLoginDeps,
@@ -2,20 +2,20 @@
2
2
  import {
3
3
  CATALOG,
4
4
  fillTemplate
5
- } from "./chunk-HR7T3BY2.js";
5
+ } from "./chunk-TLCFBQ6E.js";
6
6
  import {
7
7
  authorizeMcpServer,
8
8
  clearTokens
9
- } from "./chunk-3MCGYPYI.js";
9
+ } from "./chunk-RRECJTOG.js";
10
10
  import {
11
11
  addGlobalServer,
12
12
  globalMcpPath,
13
13
  readMcpFile,
14
14
  removeGlobalServer
15
- } from "./chunk-54PFT7F5.js";
15
+ } from "./chunk-2YG6L3YO.js";
16
16
  import {
17
17
  bccliHome
18
- } from "./chunk-T5Z3FCT2.js";
18
+ } from "./chunk-DRJSANKH.js";
19
19
  import {
20
20
  t
21
21
  } from "./chunk-XCVYR5BK.js";
@@ -25,7 +25,7 @@ async function runMcpCommand(args, deps) {
25
25
  const home = bccliHome(deps.env);
26
26
  const [action = "list", name] = args.subArgs;
27
27
  if (action === "serve") {
28
- const { runMcpServe } = await import("./serve-N2TUTZGD.js");
28
+ const { runMcpServe } = await import("./serve-PKUTKQQT.js");
29
29
  return runMcpServe(args, deps);
30
30
  }
31
31
  const installed = readMcpFile(globalMcpPath(home));
@@ -1,14 +1,14 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  listAllModels
4
- } from "./chunk-6GC5I2RK.js";
5
- import "./chunk-34Z6BXTO.js";
6
- import "./chunk-L5FKXSFK.js";
4
+ } from "./chunk-HPYI7L4W.js";
5
+ import "./chunk-62UTSCWF.js";
6
+ import "./chunk-EOJNFGOP.js";
7
7
  import "./chunk-EAR2C6TS.js";
8
8
  import {
9
9
  loadConfig,
10
10
  resolveModel
11
- } from "./chunk-T5Z3FCT2.js";
11
+ } from "./chunk-DRJSANKH.js";
12
12
  import {
13
13
  t
14
14
  } from "./chunk-XCVYR5BK.js";
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  bccliHome,
4
4
  globalConfigPath
5
- } from "./chunk-T5Z3FCT2.js";
5
+ } from "./chunk-DRJSANKH.js";
6
6
  import {
7
7
  t
8
8
  } from "./chunk-XCVYR5BK.js";
@@ -2,12 +2,12 @@
2
2
  import {
3
3
  addProviderKey,
4
4
  runProviderCommand
5
- } from "./chunk-EG7GJBSV.js";
6
- import "./chunk-6GC5I2RK.js";
7
- import "./chunk-34Z6BXTO.js";
8
- import "./chunk-L5FKXSFK.js";
5
+ } from "./chunk-AWBEZY4D.js";
6
+ import "./chunk-HPYI7L4W.js";
7
+ import "./chunk-62UTSCWF.js";
8
+ import "./chunk-EOJNFGOP.js";
9
9
  import "./chunk-EAR2C6TS.js";
10
- import "./chunk-T5Z3FCT2.js";
10
+ import "./chunk-DRJSANKH.js";
11
11
  import "./chunk-XCVYR5BK.js";
12
12
  export {
13
13
  addProviderKey,
package/dist/sdk.js CHANGED
@@ -701,7 +701,7 @@ function loadConfig(cwd, env = process.env) {
701
701
  permissionMode: global.permissionMode ?? DEFAULT_CONFIG.permissionMode,
702
702
  reasoning: global.reasoning ?? DEFAULT_CONFIG.reasoning,
703
703
  thinkingVisible: global.thinkingVisible === true,
704
- thinkingClickCollapse: global.thinkingClickCollapse !== false,
704
+ thinkingClickCollapse: global.thinkingClickCollapse === true,
705
705
  sessionRetentionDays: resolvedSessionRetentionDays(global),
706
706
  maxSteps: resolvedMaxSteps(global),
707
707
  hooks: global.hooks,
@@ -1842,7 +1842,7 @@ function createProvider(options) {
1842
1842
  const isBotConnectorCloud = /^https:\/\/api\.botconnector\.id\/v1\/?$/.test(baseURL) && apiKey?.startsWith("bc_live_");
1843
1843
  if (isBotConnectorCloud) {
1844
1844
  headers["x-botconnector-client"] = "bccli";
1845
- headers["x-botconnector-client-version"] = "0.4.7";
1845
+ headers["x-botconnector-client-version"] = "0.4.8";
1846
1846
  }
1847
1847
  const useNativeResponses = isBotConnectorCloud && providerId === "bc-cloud" && model === "gpt-6-luna";
1848
1848
  const useResponsesWebSocket = useNativeResponses && Boolean(apiKey) && (fetchOverride === void 0 || responsesWebSocketFactory !== void 0);
@@ -1873,7 +1873,7 @@ function createProvider(options) {
1873
1873
  baseURL: baseURL.replace(/\/+$/, ""),
1874
1874
  defaultHeaders: {
1875
1875
  "x-botconnector-client": "bccli",
1876
- "x-botconnector-client-version": "0.4.7"
1876
+ "x-botconnector-client-version": "0.4.8"
1877
1877
  }
1878
1878
  });
1879
1879
  lunaWs = responsesWebSocketFactory ? responsesWebSocketFactory(client) : new ResponsesWS(client, { reconnect: null });
@@ -1,14 +1,14 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  createRuntime
4
- } from "./chunk-TCRAN6ZO.js";
4
+ } from "./chunk-KREGVQ63.js";
5
5
  import "./chunk-OK2USAXX.js";
6
6
  import "./chunk-CSIQDFEF.js";
7
7
  import "./chunk-WSSJH765.js";
8
8
  import "./chunk-PSO7R5AD.js";
9
9
  import {
10
10
  VERSION
11
- } from "./chunk-V4LPDP3Z.js";
11
+ } from "./chunk-O6NTUSSE.js";
12
12
  import {
13
13
  LOOPBACK_BIND,
14
14
  MAX_FRAME_BYTES,
@@ -17,24 +17,24 @@ import {
17
17
  parseClientFrame,
18
18
  randomToken,
19
19
  trustFence
20
- } from "./chunk-3WYR6KVQ.js";
20
+ } from "./chunk-Z2ELYJ5O.js";
21
21
  import "./chunk-WFZKJY3R.js";
22
- import "./chunk-EG7GJBSV.js";
22
+ import "./chunk-AWBEZY4D.js";
23
23
  import {
24
24
  listAllModels
25
- } from "./chunk-6GC5I2RK.js";
26
- import "./chunk-34Z6BXTO.js";
27
- import "./chunk-3MCGYPYI.js";
25
+ } from "./chunk-HPYI7L4W.js";
26
+ import "./chunk-62UTSCWF.js";
27
+ import "./chunk-RRECJTOG.js";
28
28
  import {
29
29
  Session
30
- } from "./chunk-Y57FCAGM.js";
31
- import "./chunk-L5FKXSFK.js";
30
+ } from "./chunk-OETLWNGS.js";
31
+ import "./chunk-EOJNFGOP.js";
32
32
  import "./chunk-EAR2C6TS.js";
33
- import "./chunk-54PFT7F5.js";
33
+ import "./chunk-2YG6L3YO.js";
34
34
  import {
35
35
  bccliHome,
36
36
  loadConfig
37
- } from "./chunk-T5Z3FCT2.js";
37
+ } from "./chunk-DRJSANKH.js";
38
38
  import "./chunk-XCVYR5BK.js";
39
39
 
40
40
  // src/serve.ts
@@ -8,7 +8,7 @@ import "./chunk-PSO7R5AD.js";
8
8
  import {
9
9
  loadConfig,
10
10
  readCredentials
11
- } from "./chunk-T5Z3FCT2.js";
11
+ } from "./chunk-DRJSANKH.js";
12
12
  import {
13
13
  t
14
14
  } from "./chunk-XCVYR5BK.js";
@@ -2,8 +2,8 @@
2
2
  import {
3
3
  Session,
4
4
  pruneSessions
5
- } from "./chunk-Y57FCAGM.js";
6
- import "./chunk-L5FKXSFK.js";
5
+ } from "./chunk-OETLWNGS.js";
6
+ import "./chunk-EOJNFGOP.js";
7
7
  import "./chunk-EAR2C6TS.js";
8
8
  import "./chunk-XCVYR5BK.js";
9
9
  export {
@@ -2,21 +2,21 @@
2
2
  import {
3
3
  createRuntime,
4
4
  lunaPtcAutoEnabled
5
- } from "./chunk-TCRAN6ZO.js";
5
+ } from "./chunk-KREGVQ63.js";
6
6
  import "./chunk-OK2USAXX.js";
7
7
  import "./chunk-CSIQDFEF.js";
8
8
  import "./chunk-WSSJH765.js";
9
9
  import "./chunk-PSO7R5AD.js";
10
10
  import "./chunk-WFZKJY3R.js";
11
- import "./chunk-EG7GJBSV.js";
12
- import "./chunk-6GC5I2RK.js";
13
- import "./chunk-34Z6BXTO.js";
14
- import "./chunk-3MCGYPYI.js";
15
- import "./chunk-Y57FCAGM.js";
16
- import "./chunk-L5FKXSFK.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
17
  import "./chunk-EAR2C6TS.js";
18
- import "./chunk-54PFT7F5.js";
19
- import "./chunk-T5Z3FCT2.js";
18
+ import "./chunk-2YG6L3YO.js";
19
+ import "./chunk-DRJSANKH.js";
20
20
  import "./chunk-XCVYR5BK.js";
21
21
  export {
22
22
  createRuntime,
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  Session
4
- } from "./chunk-Y57FCAGM.js";
5
- import "./chunk-L5FKXSFK.js";
4
+ } from "./chunk-OETLWNGS.js";
5
+ import "./chunk-EOJNFGOP.js";
6
6
  import "./chunk-EAR2C6TS.js";
7
7
  import {
8
8
  t
@@ -14,5 +14,7 @@ export interface PromptInputProps {
14
14
  };
15
15
  /** Vim editing: Esc enters normal mode (hjkl/w/b/0/$/x/dd/dw/i/a/A/o/O). */
16
16
  vim?: boolean;
17
+ /** Called when Tab is pressed on an empty prompt (e.g. to toggle Thinking without Ctrl+T). */
18
+ onEmptyTab?: () => void;
17
19
  }
18
- export declare function PromptInput({ disabled, history, cwd, onSubmit, extraCommands, injected, vim }: PromptInputProps): import("react").JSX.Element;
20
+ export declare function PromptInput({ disabled, history, cwd, onSubmit, extraCommands, injected, vim, onEmptyTab }: PromptInputProps): import("react").JSX.Element;
@@ -2,14 +2,14 @@
2
2
  import {
3
3
  CATALOG,
4
4
  fillTemplate
5
- } from "./chunk-HR7T3BY2.js";
5
+ } from "./chunk-TLCFBQ6E.js";
6
6
  import {
7
7
  MAX_VERIFY_ROUNDS,
8
8
  runVerify,
9
9
  toolLabel,
10
10
  verifyFollowup,
11
11
  worktreeListText
12
- } from "./chunk-SE6SM2EI.js";
12
+ } from "./chunk-OUJRD7GG.js";
13
13
  import {
14
14
  BUILTIN_AGENTS,
15
15
  appendMemory,
@@ -34,13 +34,13 @@ import {
34
34
  hasKey,
35
35
  providerName,
36
36
  writeGlobalConfig
37
- } from "./chunk-34Z6BXTO.js";
37
+ } from "./chunk-62UTSCWF.js";
38
38
  import {
39
39
  Session
40
- } from "./chunk-Y57FCAGM.js";
40
+ } from "./chunk-OETLWNGS.js";
41
41
  import {
42
42
  contentText
43
- } from "./chunk-L5FKXSFK.js";
43
+ } from "./chunk-EOJNFGOP.js";
44
44
  import {
45
45
  REASONING_LEVELS,
46
46
  assertReasoningSupported,
@@ -52,14 +52,14 @@ import {
52
52
  globalMcpPath,
53
53
  readMcpFile,
54
54
  removeGlobalServer
55
- } from "./chunk-54PFT7F5.js";
55
+ } from "./chunk-2YG6L3YO.js";
56
56
  import {
57
57
  ACCENT,
58
58
  PRESETS,
59
59
  color,
60
60
  matchKeybind,
61
61
  removeCredential
62
- } from "./chunk-T5Z3FCT2.js";
62
+ } from "./chunk-DRJSANKH.js";
63
63
  import {
64
64
  getLanguage,
65
65
  locale,
@@ -1299,7 +1299,7 @@ ${s.value.slice(start)}`, cursor: start }, mode: "insert", handled: true };
1299
1299
 
1300
1300
  // src/ui/PromptInput.tsx
1301
1301
  import { jsx as jsx9, jsxs as jsxs8 } from "react/jsx-runtime";
1302
- function PromptInput({ disabled, history, cwd, onSubmit, extraCommands, injected, vim }) {
1302
+ function PromptInput({ disabled, history, cwd, onSubmit, extraCommands, injected, vim, onEmptyTab }) {
1303
1303
  const [line, setLine] = useState6({ value: "", cursor: 0 });
1304
1304
  const { value } = line;
1305
1305
  const [historyIndex, setHistoryIndex] = useState6(null);
@@ -1442,6 +1442,10 @@ ${value.slice(line.cursor)}`, cursor: before.length });
1442
1442
  return;
1443
1443
  }
1444
1444
  if (key.tab && !key.shift) {
1445
+ if (!value.trim() && onEmptyTab) {
1446
+ onEmptyTab();
1447
+ return;
1448
+ }
1445
1449
  const before = value.slice(0, line.cursor);
1446
1450
  const completed = completeFile(before, cwd);
1447
1451
  if (completed !== before) edit({ value: completed + value.slice(line.cursor), cursor: completed.length });
@@ -2577,14 +2581,6 @@ ARGUMENTS: ${slash.args}`);
2577
2581
  stdout.write("\x1B[?1000l\x1B[?1002l\x1B[?1003l\x1B[?1006l\x1B[?2004l");
2578
2582
  };
2579
2583
  }, [stdout]);
2580
- const scrollableModalOpen = !!(picker || listPicker || mcpMenu || providerMenu || pending || planAsk);
2581
- useEffect3(() => {
2582
- if (!scrollableModalOpen || !stdout?.isTTY || !("fd" in stdout)) return;
2583
- stdout.write("\x1B[?1000h\x1B[?1006h");
2584
- return () => {
2585
- stdout.write("\x1B[?1000l\x1B[?1006l");
2586
- };
2587
- }, [scrollableModalOpen, stdout]);
2588
2584
  useEffect3(() => {
2589
2585
  const modalOpen = !!(pending || planAsk || picker || listPicker || mcpMenu || providerMenu || prompt);
2590
2586
  if (!runtime.config.thinkingClickCollapse || !busy && !hasThinking || modalOpen || !stdin.isTTY || !stdout.isTTY) return;
@@ -2656,7 +2652,7 @@ ARGUMENTS: ${slash.args}`);
2656
2652
  })();
2657
2653
  } else if (matchKeybind(runtime.config.keybinds.thinking, input, key) || key.meta && !key.ctrl && input.toLowerCase() === "t") {
2658
2654
  toggleThinking();
2659
- } else if (matchKeybind(runtime.config.keybinds.toolOutput, input, key)) {
2655
+ } else if (matchKeybind(runtime.config.keybinds.toolOutput, input, key) || key.meta && !key.ctrl && input.toLowerCase() === "o") {
2660
2656
  setShowToolOutput((prev) => !prev);
2661
2657
  if (maxSplitIdxRef.current > 0) refreshStatic();
2662
2658
  } else if (key.ctrl && input.toLowerCase() === "l") {
@@ -2784,7 +2780,7 @@ ${allLines.slice(-maxLiveLines).join("\n")}` : text;
2784
2780
  /* @__PURE__ */ jsxs12(Text16, { dimColor: true, children: [
2785
2781
  " \xB7 ",
2786
2782
  runtime.config.keybinds.thinking.spec,
2787
- " / alt+t",
2783
+ " / tab",
2788
2784
  runtime.config.thinkingClickCollapse ? ` \xB7 ${t("click to toggle")}` : ""
2789
2785
  ] })
2790
2786
  ] }),
@@ -2827,7 +2823,7 @@ ${allLines.slice(-maxLiveLines).join("\n")}` : text;
2827
2823
  /* @__PURE__ */ jsxs12(Text16, { dimColor: true, children: [
2828
2824
  " \xB7 ",
2829
2825
  runtime.config.keybinds.thinking.spec,
2830
- " / alt+t",
2826
+ " / tab",
2831
2827
  runtime.config.thinkingClickCollapse ? ` \xB7 ${t("click to toggle")}` : ""
2832
2828
  ] })
2833
2829
  ] }),
@@ -2882,7 +2878,7 @@ ${allLines.slice(-maxLiveLines).join("\n")}` : text;
2882
2878
  ) : null,
2883
2879
  /* @__PURE__ */ jsx16(TodoList, { items: todos }),
2884
2880
  queued.map((q, i) => /* @__PURE__ */ jsx16(Text16, { dimColor: true, children: t(" \u23F3 queued: {q}", { q }) }, `${i}-${q}`)),
2885
- /* @__PURE__ */ jsx16(PromptInput, { disabled: !!pending || !!picker || !!providerMenu || !!prompt || !!planAsk || !!mcpMenu || !!listPicker, history, cwd: runtime.cwd, onSubmit: onPrompt, extraCommands, injected, vim: runtime.config.editor === "vim" }),
2881
+ /* @__PURE__ */ jsx16(PromptInput, { disabled: !!pending || !!picker || !!providerMenu || !!prompt || !!planAsk || !!mcpMenu || !!listPicker, history, cwd: runtime.cwd, onSubmit: onPrompt, onEmptyTab: toggleThinking, extraCommands, injected, vim: runtime.config.editor === "vim" }),
2886
2882
  /* @__PURE__ */ jsx16(StatusBar, { mode, tokens, busy, model: modelLabel, reasoning })
2887
2883
  ] });
2888
2884
  }
@@ -2891,7 +2887,7 @@ ${allLines.slice(-maxLiveLines).join("\n")}` : text;
2891
2887
  import { jsx as jsx17 } from "react/jsx-runtime";
2892
2888
  async function startInteractive(rt, opts) {
2893
2889
  if (opts.resume) {
2894
- const { Session: Session2 } = await import("./session-QZAXEQRE.js");
2890
+ const { Session: Session2 } = await import("./session-XABMBIIF.js");
2895
2891
  const list = Session2.list(rt.home, rt.cwd).slice(0, 20);
2896
2892
  if (!list.length) console.log(t("No sessions in this folder yet; starting a new one."));
2897
2893
  else {
@@ -2907,7 +2903,7 @@ async function startInteractive(rt, opts) {
2907
2903
  if (chosen) rt.resume(chosen.session);
2908
2904
  }
2909
2905
  }
2910
- const { serversToStart, setProjectTrust } = await import("./config-PVEZPRMH.js");
2906
+ const { serversToStart, setProjectTrust } = await import("./config-KR5JI5RA.js");
2911
2907
  const plan = serversToStart(rt.home, rt.cwd);
2912
2908
  if (plan.needTrust.length) {
2913
2909
  const { createInterface } = await import("readline/promises");
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  VERSION
4
- } from "./chunk-V4LPDP3Z.js";
4
+ } from "./chunk-O6NTUSSE.js";
5
5
  import {
6
6
  t
7
7
  } from "./chunk-XCVYR5BK.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@botconnector/bccli",
3
- "version": "0.4.7",
3
+ "version": "0.4.8",
4
4
  "description": "BCCLI — BotConnector AI coding agent for the terminal",
5
5
  "type": "module",
6
6
  "bin": {