@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.
|
|
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-
|
|
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
|
-
|
|
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
|
-
|
|
290
|
+
edit("");
|
|
261
291
|
setHistoryIndex(null);
|
|
262
292
|
onSubmit(text);
|
|
263
293
|
return;
|
|
264
294
|
}
|
|
265
295
|
if (key.backspace || key.delete) {
|
|
266
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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:
|
|
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) => {
|