@botconnector/bccli 0.3.0-beta.1 → 0.3.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.js CHANGED
@@ -715,6 +715,7 @@ Model ini sepertinya tidak mendukung tool calling. Coba model lain dengan /model
715
715
  ...this.opts.label ? { agent: this.opts.label } : {}
716
716
  });
717
717
  if (answer === "session") this.permissions.allowForSession(request);
718
+ if (answer === "all") this.permissions.mode = "allowAll";
718
719
  decision = answer === "no" ? "deny" : "allow";
719
720
  }
720
721
  if (decision === "deny") {
@@ -1182,7 +1183,7 @@ function createRuntime(opts) {
1182
1183
  }
1183
1184
 
1184
1185
  // src/version.ts
1185
- var VERSION = true ? "0.3.0-beta.1" : "0.0.0-dev";
1186
+ var VERSION = true ? "0.3.0-beta.2" : "0.0.0-dev";
1186
1187
 
1187
1188
  // src/cli.ts
1188
1189
  async function main() {
@@ -1234,7 +1235,7 @@ async function main() {
1234
1235
  }
1235
1236
  }
1236
1237
  if (!process.stdin.isTTY) throw new ConfigError('Mode interaktif butuh terminal. Untuk skrip/CI pakai: bccli -p "tugas"');
1237
- const { startInteractive } = await import("./ui-6PGC4T6N.js");
1238
+ const { startInteractive } = await import("./ui-HNIC4DQ6.js");
1238
1239
  return startInteractive(rt, { initialPrompt: args.prompt, resume: args.resume, version: VERSION });
1239
1240
  }
1240
1241
  main().then(
@@ -209,6 +209,7 @@ function PermissionPrompt({
209
209
  const k = input.toLowerCase();
210
210
  if (k === "y") onAnswer("yes");
211
211
  else if (k === "a" && request.sessionRules?.length) onAnswer("session");
212
+ else if (k === "s") onAnswer("all");
212
213
  else if (k === "n" || key.escape) onAnswer("no");
213
214
  });
214
215
  const rules = request.sessionRules ?? [];
@@ -220,6 +221,7 @@ function PermissionPrompt({
220
221
  /* @__PURE__ */ jsx6(Text6, { color: color("green"), children: "[y] ya" }),
221
222
  " ",
222
223
  sessionLabel ? /* @__PURE__ */ jsx6(Text6, { color: color("cyan"), children: `[a] ${sessionLabel} ` }) : null,
224
+ /* @__PURE__ */ jsx6(Text6, { color: color("yellow"), children: "[s] ya semua " }),
223
225
  /* @__PURE__ */ jsx6(Text6, { color: color("red"), children: "[n] tidak" })
224
226
  ] })
225
227
  ] });
@@ -247,23 +249,51 @@ import { jsx as jsx7, jsxs as jsxs5 } from "react/jsx-runtime";
247
249
  function PromptInput({ disabled, history, cwd, onSubmit, extraCommands }) {
248
250
  const [value, setValue] = useState4("");
249
251
  const [historyIndex, setHistoryIndex] = useState4(null);
252
+ const [selected, setSelected] = useState4(0);
253
+ const all = [...SLASH_COMMANDS, ...(extraCommands ?? []).filter((c) => !SLASH_COMMANDS.some((b) => b.name === c.name))];
254
+ const suggestions = value.startsWith("/") && !/\s/.test(value) ? all.filter((c) => c.name.startsWith(value.slice(1))).slice(0, 8) : [];
255
+ const highlighted = Math.min(selected, Math.max(0, suggestions.length - 1));
256
+ const edit = (next) => {
257
+ setValue(next);
258
+ setSelected(0);
259
+ };
250
260
  useInput5(
251
261
  (input, key) => {
262
+ if (suggestions.length) {
263
+ if (key.upArrow) {
264
+ setSelected(Math.max(0, highlighted - 1));
265
+ return;
266
+ }
267
+ if (key.downArrow) {
268
+ setSelected(Math.min(suggestions.length - 1, highlighted + 1));
269
+ return;
270
+ }
271
+ if (key.tab && !key.shift) {
272
+ edit(`/${suggestions[highlighted].name} `);
273
+ return;
274
+ }
275
+ if (key.return) {
276
+ edit("");
277
+ setHistoryIndex(null);
278
+ onSubmit(`/${suggestions[highlighted].name}`);
279
+ return;
280
+ }
281
+ }
252
282
  if (key.return) {
253
283
  if (value.endsWith("\\")) {
254
- setValue(`${value.slice(0, -1)}
284
+ edit(`${value.slice(0, -1)}
255
285
  `);
256
286
  return;
257
287
  }
258
288
  const text = value.trim();
259
289
  if (!text) return;
260
- setValue("");
290
+ edit("");
261
291
  setHistoryIndex(null);
262
292
  onSubmit(text);
263
293
  return;
264
294
  }
265
295
  if (key.backspace || key.delete) {
266
- setValue((v) => v.slice(0, -1));
296
+ edit((v) => v.slice(0, -1));
267
297
  return;
268
298
  }
269
299
  if (key.upArrow) {
@@ -281,23 +311,21 @@ function PromptInput({ disabled, history, cwd, onSubmit, extraCommands }) {
281
311
  return;
282
312
  }
283
313
  if (key.tab && !key.shift) {
284
- setValue((v) => completeFile(v, cwd));
314
+ edit((v) => completeFile(v, cwd));
285
315
  return;
286
316
  }
287
317
  if (key.ctrl || key.meta || key.escape || key.tab || key.leftArrow || key.rightArrow) return;
288
- setValue((v) => v + input.replace(/\r/g, "\n"));
318
+ edit((v) => v + input.replace(/\r/g, "\n"));
289
319
  },
290
320
  { isActive: !disabled }
291
321
  );
292
- const all = [...SLASH_COMMANDS, ...(extraCommands ?? []).filter((c) => !SLASH_COMMANDS.some((b) => b.name === c.name))];
293
- const suggestions = value.startsWith("/") && !/\s/.test(value) ? all.filter((c) => c.name.startsWith(value.slice(1))).slice(0, 8) : [];
294
322
  return /* @__PURE__ */ jsxs5(Box7, { flexDirection: "column", children: [
295
323
  /* @__PURE__ */ jsx7(Box7, { borderStyle: "round", borderColor: color("gray"), paddingX: 1, children: /* @__PURE__ */ jsxs5(Text7, { children: [
296
324
  /* @__PURE__ */ jsx7(Text7, { color: color("green"), children: "> " }),
297
325
  value,
298
326
  disabled ? "" : /* @__PURE__ */ jsx7(Text7, { inverse: true, children: " " })
299
327
  ] }) }),
300
- suggestions.map((s) => /* @__PURE__ */ jsx7(Text7, { dimColor: true, children: ` /${s.name} ${s.description}` }, s.name))
328
+ suggestions.map((s, i) => /* @__PURE__ */ jsx7(Text7, { color: i === highlighted ? color("green") : void 0, dimColor: i !== highlighted, children: `${i === highlighted ? "\u203A" : " "} /${s.name} ${s.description}` }, s.name))
301
329
  ] });
302
330
  }
303
331
 
@@ -716,6 +744,7 @@ ${t.output}`);
716
744
  const answer = (a) => {
717
745
  pending?.resolve(a);
718
746
  setAsks((q) => q.slice(1));
747
+ if (a === "all") setMode("allowAll");
719
748
  };
720
749
  const cwd = runtime.cwd.startsWith(homedir()) ? `~${runtime.cwd.slice(homedir().length)}` : runtime.cwd;
721
750
  const renderEntry = (e) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@botconnector/bccli",
3
- "version": "0.3.0-beta.1",
3
+ "version": "0.3.0-beta.2",
4
4
  "description": "BCCLI — BotConnector AI coding agent for the terminal",
5
5
  "type": "module",
6
6
  "bin": {