@botconnector/bccli 0.4.0 → 0.4.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/README.en.md +13 -2
- package/README.md +13 -2
- package/dist/abort.d.ts +5 -0
- package/dist/{acp-ATIL4JOZ.js → acp-UYC6APR5.js} +30 -6
- package/dist/acp.d.ts +28 -0
- package/dist/agent.d.ts +147 -0
- package/dist/agents.d.ts +4 -0
- package/dist/args-NRTZWWEV.js +13 -0
- package/dist/args.d.ts +53 -0
- package/dist/budget.d.ts +23 -0
- package/dist/checkpoints.d.ts +35 -0
- package/dist/{chunk-6M5X2KZE.js → chunk-266SY3MC.js} +1 -1
- package/dist/{chunk-7F3IWBPQ.js → chunk-3I5BW3ZT.js} +20 -9
- package/dist/{chunk-UZWJQF67.js → chunk-3WHI4LN3.js} +2 -1
- package/dist/{chunk-PUN4HMAG.js → chunk-5YJ3ZQVR.js} +73 -10
- package/dist/{chunk-L7QI6JN2.js → chunk-6M55UPES.js} +7 -7
- package/dist/{chunk-KEMYIGCP.js → chunk-6UO5GX55.js} +26 -12
- package/dist/{chunk-TLPFQIS2.js → chunk-C64KM37J.js} +36 -6
- package/dist/{chunk-JL5ZCSP2.js → chunk-H7XJDKJY.js} +4 -4
- package/dist/{chunk-SPRNLS7K.js → chunk-HQW4BROS.js} +4 -5
- package/dist/{chunk-XBO5GACQ.js → chunk-IYR5PYA3.js} +4 -4
- package/dist/{chunk-45SDLMTV.js → chunk-JXM6REER.js} +1 -1
- package/dist/{chunk-BLOYFIAD.js → chunk-KPTML72Q.js} +1 -1
- package/dist/{chunk-BQ2IGPBR.js → chunk-NQOGVP3I.js} +2 -2
- package/dist/{chunk-QZKLZELZ.js → chunk-OK2USAXX.js} +28 -4
- package/dist/{chunk-TVALKHFB.js → chunk-R72OV7RF.js} +421 -108
- package/dist/{chunk-LACUWBWS.js → chunk-RX4UQX43.js} +25 -10
- package/dist/{chunk-QDQU6VY2.js → chunk-SVD4LHJC.js} +73 -3
- package/dist/{chunk-BNA74HPN.js → chunk-TIMSYZIR.js} +7 -7
- package/dist/{chunk-O7M3TGIW.js → chunk-WFZKJY3R.js} +43 -4
- package/dist/{chunk-M7CALSP3.js → chunk-ZEPTUKNW.js} +120 -32
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +61 -45
- package/dist/clipboardImage.d.ts +17 -0
- package/dist/commands.d.ts +16 -0
- package/dist/{completion-HPPFDAPB.js → completion-D2BSBTQO.js} +1 -1
- package/dist/completion.d.ts +14 -0
- package/dist/{config-COPNMMV6.js → config-ENDRMOTP.js} +3 -3
- package/dist/{config-RZ5JONMX.js → config-LAINORU5.js} +8 -4
- package/dist/config.d.ts +99 -0
- package/dist/context.d.ts +13 -0
- package/dist/contextWindow.d.ts +3 -0
- package/dist/diff.d.ts +7 -0
- package/dist/exit.d.ts +9 -0
- package/dist/extensions.d.ts +34 -0
- package/dist/{ghBotCli-IBCZIWT5.js → ghBotCli-TSLRORJJ.js} +21 -20
- package/dist/ghBotCli.d.ts +9 -0
- package/dist/ghBotDispatch.d.ts +68 -0
- package/dist/ghBotRunner.d.ts +82 -0
- package/dist/ghBotServe.d.ts +21 -0
- package/dist/ghBotWebhook.d.ts +45 -0
- package/dist/hooks.d.ts +27 -0
- package/dist/i18n/id.d.ts +1 -0
- package/dist/i18n.d.ts +16 -0
- package/dist/{integrationCli-P75R2VSC.js → integrationCli-HXCSEWH2.js} +2 -2
- package/dist/integrationCli.d.ts +9 -0
- package/dist/keybinds.d.ts +22 -0
- package/dist/{login-SYIQP46J.js → login-RYESFZG6.js} +4 -4
- package/dist/login.d.ts +19 -0
- package/dist/lsp.d.ts +50 -0
- package/dist/mcp/catalog.d.ts +14 -0
- package/dist/mcp/config.d.ts +36 -0
- package/dist/mcp/manager.d.ts +52 -0
- package/dist/mcp/oauth.d.ts +82 -0
- package/dist/{mcpCli-QUV5SD64.js → mcpCli-SETTCL3K.js} +6 -6
- package/dist/mcpCli.d.ts +3 -0
- package/dist/mcpServer/serve.d.ts +8 -0
- package/dist/mcpServer/server.d.ts +19 -0
- package/dist/models.d.ts +13 -0
- package/dist/{modelsCli-TRRB5LX4.js → modelsCli-OP7CDZC7.js} +6 -6
- package/dist/modelsCli.d.ts +15 -0
- package/dist/npmRunner.d.ts +21 -0
- package/dist/{oauthLogin-6FWQABJ7.js → oauthLogin-XWY7OHCG.js} +1 -1
- package/dist/oauthLogin.d.ts +47 -0
- package/dist/permissions.d.ts +30 -0
- package/dist/pluginSpec.d.ts +25 -0
- package/dist/plugins.d.ts +45 -0
- package/dist/{pluginsCli-GNW4TPVV.js → pluginsCli-ZQNKWZHJ.js} +2 -2
- package/dist/pluginsCli.d.ts +16 -0
- package/dist/{prCli-5IMV3VNQ.js → prCli-6PUWTMTP.js} +20 -4
- package/dist/prCli.d.ts +46 -0
- package/dist/presets.d.ts +8 -0
- package/dist/print.d.ts +16 -0
- package/dist/provider.d.ts +145 -0
- package/dist/providerCli-5OZI2GQQ.js +15 -0
- package/dist/providerCli.d.ts +17 -0
- package/dist/providers.d.ts +6 -0
- package/dist/reasoning.d.ts +12 -0
- package/dist/repomap.d.ts +10 -0
- package/dist/sdk.d.ts +61 -0
- package/dist/sdk.js +829 -191
- package/dist/{serve-JG7RLIUD.js → serve-4J7HA4JO.js} +24 -18
- package/dist/{serve-6QLBJUYW.js → serve-K5AH4MGO.js} +3 -3
- package/dist/serve.d.ts +37 -0
- package/dist/serveHeartbeat.d.ts +14 -0
- package/dist/serveProtocol.d.ts +47 -0
- package/dist/session-YQXCCKXI.js +12 -0
- package/dist/session.d.ts +33 -0
- package/dist/setup-S4AJT6XE.js +24 -0
- package/dist/setup.d.ts +74 -0
- package/dist/slash/copy.d.ts +1 -0
- package/dist/slash/diff.d.ts +1 -0
- package/dist/slash/doctor.d.ts +18 -0
- package/dist/slash/export.d.ts +2 -0
- package/dist/slash/info.d.ts +46 -0
- package/dist/slash/memory.d.ts +10 -0
- package/dist/{statsCli-CF3R7ATL.js → statsCli-XR6BEZQQ.js} +2 -2
- package/dist/statsCli.d.ts +62 -0
- package/dist/textToolCalls.d.ts +6 -0
- package/dist/thinking.d.ts +17 -0
- package/dist/tokenBudget.d.ts +22 -0
- package/dist/tools/bash.d.ts +52 -0
- package/dist/tools/diagnostics.d.ts +5 -0
- package/dist/tools/edit.d.ts +12 -0
- package/dist/tools/fetch.d.ts +41 -0
- package/dist/tools/glob.d.ts +5 -0
- package/dist/tools/globSafety.d.ts +7 -0
- package/dist/tools/grep.d.ts +25 -0
- package/dist/tools/ignore.d.ts +2 -0
- package/dist/tools/index.d.ts +12 -0
- package/dist/tools/memory.d.ts +13 -0
- package/dist/tools/paths.d.ts +4 -0
- package/dist/tools/plan.d.ts +10 -0
- package/dist/tools/read.d.ts +16 -0
- package/dist/tools/repomap.d.ts +2 -0
- package/dist/tools/sandbox.d.ts +12 -0
- package/dist/tools/shell.d.ts +18 -0
- package/dist/tools/skill.d.ts +3 -0
- package/dist/tools/task.d.ts +28 -0
- package/dist/tools/todo.d.ts +13 -0
- package/dist/tools/types.d.ts +52 -0
- package/dist/tools/websearch.d.ts +9 -0
- package/dist/tools/write.d.ts +5 -0
- package/dist/{transferCli-TK2GSVRK.js → transferCli-R2KEIWQR.js} +8 -6
- package/dist/transferCli.d.ts +23 -0
- package/dist/ui/App.d.ts +7 -0
- package/dist/ui/DiffView.d.ts +3 -0
- package/dist/ui/EditableText.d.ts +7 -0
- package/dist/ui/LinePrompt.d.ts +6 -0
- package/dist/ui/ListPicker.d.ts +11 -0
- package/dist/ui/Markdown.d.ts +8 -0
- package/dist/ui/McpMenu.d.ts +11 -0
- package/dist/ui/ModelPicker.d.ts +6 -0
- package/dist/ui/PermissionPrompt.d.ts +5 -0
- package/dist/ui/PlanApproval.d.ts +5 -0
- package/dist/ui/PromptInput.d.ts +18 -0
- package/dist/ui/ProviderMenu.d.ts +10 -0
- package/dist/ui/Spinner.d.ts +4 -0
- package/dist/ui/StatusBar.d.ts +9 -0
- package/dist/ui/TodoList.d.ts +4 -0
- package/dist/ui/ToolBlock.d.ts +14 -0
- package/dist/ui/complete.d.ts +6 -0
- package/dist/ui/focusReport.d.ts +1 -0
- package/dist/ui/index.d.ts +7 -0
- package/dist/ui/lineEdit.d.ts +42 -0
- package/dist/ui/replay.d.ts +4 -0
- package/dist/ui/table.d.ts +20 -0
- package/dist/ui/theme.d.ts +5 -0
- package/dist/ui/thinkingMouse.d.ts +33 -0
- package/dist/ui/transcript.d.ts +55 -0
- package/dist/ui/vim.d.ts +26 -0
- package/dist/{ui-B3CJ6TGE.js → ui-36ZEK65V.js} +179 -54
- package/dist/{update-K5IQ2MYR.js → update-FSS7X5WV.js} +2 -2
- package/dist/update.d.ts +30 -0
- package/dist/verify.d.ts +16 -0
- package/dist/version.d.ts +1 -0
- package/dist/webBudget.d.ts +25 -0
- package/dist/worktree.d.ts +12 -0
- package/package.json +26 -13
- package/dist/args-J5ONVGIF.js +0 -13
- package/dist/providerCli-FAOZHOKW.js +0 -15
- package/dist/session-KBAQ4BZ5.js +0 -12
- package/dist/setup-FJAWDWV4.js +0 -24
package/dist/cli.js
CHANGED
|
@@ -1,48 +1,49 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
|
+
resolvePrintPrompt,
|
|
3
4
|
resolveWorktree,
|
|
4
5
|
runPrint
|
|
5
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-C64KM37J.js";
|
|
6
7
|
import {
|
|
7
8
|
createRuntime
|
|
8
|
-
} from "./chunk-
|
|
9
|
-
import "./chunk-
|
|
10
|
-
import "./chunk-
|
|
11
|
-
import "./chunk-
|
|
9
|
+
} from "./chunk-R72OV7RF.js";
|
|
10
|
+
import "./chunk-OK2USAXX.js";
|
|
11
|
+
import "./chunk-ZEPTUKNW.js";
|
|
12
|
+
import "./chunk-JXM6REER.js";
|
|
12
13
|
import "./chunk-PSO7R5AD.js";
|
|
13
14
|
import {
|
|
14
15
|
VERSION
|
|
15
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-266SY3MC.js";
|
|
16
17
|
import {
|
|
17
18
|
helpText,
|
|
18
19
|
parseCliArgs
|
|
19
|
-
} from "./chunk-
|
|
20
|
-
import "./chunk-
|
|
21
|
-
import "./chunk-
|
|
22
|
-
import "./chunk-
|
|
20
|
+
} from "./chunk-6UO5GX55.js";
|
|
21
|
+
import "./chunk-WFZKJY3R.js";
|
|
22
|
+
import "./chunk-H7XJDKJY.js";
|
|
23
|
+
import "./chunk-IYR5PYA3.js";
|
|
23
24
|
import {
|
|
24
25
|
readGlobalConfigFile
|
|
25
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-HQW4BROS.js";
|
|
26
27
|
import {
|
|
27
28
|
defaultLoginDeps,
|
|
28
29
|
runLogin
|
|
29
|
-
} from "./chunk-
|
|
30
|
-
import "./chunk-
|
|
30
|
+
} from "./chunk-TIMSYZIR.js";
|
|
31
|
+
import "./chunk-3I5BW3ZT.js";
|
|
31
32
|
import {
|
|
32
33
|
pruneSessions
|
|
33
|
-
} from "./chunk-
|
|
34
|
-
import "./chunk-
|
|
35
|
-
import "./chunk-
|
|
36
|
-
import "./chunk-
|
|
34
|
+
} from "./chunk-SVD4LHJC.js";
|
|
35
|
+
import "./chunk-5YJ3ZQVR.js";
|
|
36
|
+
import "./chunk-KPTML72Q.js";
|
|
37
|
+
import "./chunk-6M55UPES.js";
|
|
37
38
|
import {
|
|
38
39
|
ConfigError,
|
|
39
40
|
setTheme
|
|
40
|
-
} from "./chunk-
|
|
41
|
+
} from "./chunk-RX4UQX43.js";
|
|
41
42
|
import {
|
|
42
43
|
resolveLanguage,
|
|
43
44
|
setLanguage,
|
|
44
45
|
t
|
|
45
|
-
} from "./chunk-
|
|
46
|
+
} from "./chunk-3WHI4LN3.js";
|
|
46
47
|
|
|
47
48
|
// src/exit.ts
|
|
48
49
|
var EXIT_GRACE_MS = 1e3;
|
|
@@ -84,17 +85,17 @@ async function main() {
|
|
|
84
85
|
if (args.worktree) cwd = (await resolveWorktree(cwd, args.worktree)).path;
|
|
85
86
|
if (args.command === "login") return runLogin(args.loginProvider ?? "bc-cloud", cwd, args, defaultLoginDeps());
|
|
86
87
|
if (args.command === "mcp") {
|
|
87
|
-
const { runMcpCommand } = await import("./mcpCli-
|
|
88
|
-
const { readSecret } = await import("./login-
|
|
88
|
+
const { runMcpCommand } = await import("./mcpCli-SETTCL3K.js");
|
|
89
|
+
const { readSecret } = await import("./login-RYESFZG6.js");
|
|
89
90
|
return runMcpCommand(args, { env: process.env, cwd, out: (s) => console.log(s), err: (s) => console.error(s), readSecret });
|
|
90
91
|
}
|
|
91
92
|
if (args.command === "provider") {
|
|
92
|
-
const { runProviderCommand } = await import("./providerCli-
|
|
93
|
-
const { readSecret } = await import("./login-
|
|
93
|
+
const { runProviderCommand } = await import("./providerCli-5OZI2GQQ.js");
|
|
94
|
+
const { readSecret } = await import("./login-RYESFZG6.js");
|
|
94
95
|
return runProviderCommand(args, { env: process.env, cwd, out: (s) => console.log(s), err: (s) => console.error(s), readSecret });
|
|
95
96
|
}
|
|
96
97
|
if (args.command === "connect" || args.command === "disconnect" || args.command === "integrations") {
|
|
97
|
-
const { runIntegrationCommand } = await import("./integrationCli-
|
|
98
|
+
const { runIntegrationCommand } = await import("./integrationCli-HXCSEWH2.js");
|
|
98
99
|
return runIntegrationCommand(args, {
|
|
99
100
|
env: process.env,
|
|
100
101
|
cwd,
|
|
@@ -104,23 +105,22 @@ async function main() {
|
|
|
104
105
|
});
|
|
105
106
|
}
|
|
106
107
|
if (args.command === "models") {
|
|
107
|
-
const { runModelsCommand } = await import("./modelsCli-
|
|
108
|
+
const { runModelsCommand } = await import("./modelsCli-OP7CDZC7.js");
|
|
108
109
|
return runModelsCommand(args, { env: process.env, cwd, out: (s) => console.log(s), err: (s) => console.error(s), fetch: globalThis.fetch });
|
|
109
110
|
}
|
|
110
111
|
if (args.command === "update") {
|
|
111
|
-
const { runUpdateCommand } = await import("./update-
|
|
112
|
+
const { runUpdateCommand } = await import("./update-FSS7X5WV.js");
|
|
112
113
|
return runUpdateCommand({ env: process.env });
|
|
113
114
|
}
|
|
114
115
|
if (args.command === "acp") {
|
|
115
|
-
const { runtimeAgent, runAcp } = await import("./acp-
|
|
116
|
+
const { runtimeAgent, runAcp } = await import("./acp-UYC6APR5.js");
|
|
116
117
|
await runAcp(process.stdin, process.stdout, { cwd, newAgent: (c) => runtimeAgent(c, args.allowAll) });
|
|
117
118
|
return 0;
|
|
118
119
|
}
|
|
119
120
|
if (args.command === "serve") {
|
|
120
|
-
const { startServe } = await import("./serve-
|
|
121
|
+
const { serveBanner, startServe } = await import("./serve-4J7HA4JO.js");
|
|
121
122
|
const handle = await startServe({ port: args.port, host: args.host, token: args.token, cwd, env: process.env });
|
|
122
|
-
process.stderr.write(
|
|
123
|
-
`);
|
|
123
|
+
process.stderr.write(serveBanner(handle, { token: args.token }));
|
|
124
124
|
await new Promise((resolve) => {
|
|
125
125
|
const stop = () => {
|
|
126
126
|
void handle.close().finally(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-
|
|
135
|
-
const { readGlobalPlugins, updateGlobalConfig } = await import("./config-
|
|
134
|
+
const { runPluginsCommand } = await import("./pluginsCli-ZQNKWZHJ.js");
|
|
135
|
+
const { readGlobalPlugins, updateGlobalConfig } = await import("./config-LAINORU5.js");
|
|
136
136
|
const { runNpmSync } = await import("./npmRunner-LU43GM3W.js");
|
|
137
137
|
return runPluginsCommand(args, {
|
|
138
138
|
out: (s) => console.log(s),
|
|
@@ -146,32 +146,41 @@ async function main() {
|
|
|
146
146
|
});
|
|
147
147
|
}
|
|
148
148
|
if (args.command === "gh-bot") {
|
|
149
|
-
const { runGhBotCommand } = await import("./ghBotCli-
|
|
149
|
+
const { runGhBotCommand } = await import("./ghBotCli-TSLRORJJ.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") {
|
|
153
|
-
const { runCompletionCommand } = await import("./completion-
|
|
153
|
+
const { runCompletionCommand } = await import("./completion-D2BSBTQO.js");
|
|
154
154
|
return runCompletionCommand(args, { out: (s) => console.log(s), err: (s) => console.error(s) });
|
|
155
155
|
}
|
|
156
156
|
if (args.command === "stats") {
|
|
157
|
-
const { runStatsCommand } = await import("./statsCli-
|
|
158
|
-
const { bccliHome } = await import("./config-
|
|
157
|
+
const { runStatsCommand } = await import("./statsCli-XR6BEZQQ.js");
|
|
158
|
+
const { bccliHome } = await import("./config-LAINORU5.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-
|
|
166
|
-
const { bccliHome } = await import("./config-
|
|
165
|
+
const { runExportCommand, runImportCommand } = await import("./transferCli-R2KEIWQR.js");
|
|
166
|
+
const { bccliHome } = await import("./config-LAINORU5.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);
|
|
170
170
|
}
|
|
171
171
|
if (args.command === "pr") {
|
|
172
|
-
const { runPrCommand } = await import("./prCli-
|
|
172
|
+
const { runPrCommand } = await import("./prCli-6PUWTMTP.js");
|
|
173
173
|
return runPrCommand(
|
|
174
|
-
{
|
|
174
|
+
{
|
|
175
|
+
subArgs: args.subArgs,
|
|
176
|
+
cwd,
|
|
177
|
+
allowAll: args.allowAll,
|
|
178
|
+
repo: args.repo,
|
|
179
|
+
model: args.model,
|
|
180
|
+
reasoning: args.reasoning,
|
|
181
|
+
permissionMode: args.permissionMode,
|
|
182
|
+
allowedTools: args.allowedTools
|
|
183
|
+
},
|
|
175
184
|
{ out: (s) => console.log(s), err: (s) => console.error(s) }
|
|
176
185
|
);
|
|
177
186
|
}
|
|
@@ -182,15 +191,22 @@ async function main() {
|
|
|
182
191
|
} catch {
|
|
183
192
|
}
|
|
184
193
|
if (args.print) {
|
|
185
|
-
|
|
186
|
-
|
|
194
|
+
let stdinText;
|
|
195
|
+
if (!process.stdin.isTTY) {
|
|
196
|
+
const chunks = [];
|
|
197
|
+
for await (const chunk of process.stdin) chunks.push(Buffer.from(chunk));
|
|
198
|
+
if (chunks.length) stdinText = Buffer.concat(chunks).toString("utf8");
|
|
199
|
+
}
|
|
200
|
+
const finalPrompt = resolvePrintPrompt(args.prompt, stdinText);
|
|
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-ENDRMOTP.js");
|
|
187
203
|
const plan = serversToStart(rt.home, cwd);
|
|
188
204
|
for (const s of plan.needTrust) {
|
|
189
205
|
console.error(t('Project MCP server "{name}" skipped (not approved yet; run interactive bccli once to approve it).', { name: s.name }));
|
|
190
206
|
}
|
|
191
207
|
await rt.startMcp(plan.start);
|
|
192
208
|
try {
|
|
193
|
-
return await runPrint(rt,
|
|
209
|
+
return await runPrint(rt, finalPrompt, void 0, { allowAll: args.allowAll, outputFormat: args.outputFormat });
|
|
194
210
|
} finally {
|
|
195
211
|
await rt.mcp.stop();
|
|
196
212
|
}
|
|
@@ -199,13 +215,13 @@ async function main() {
|
|
|
199
215
|
let updateMessage;
|
|
200
216
|
if (rt.config.updateCheck !== "off" && !process.env.BCCLI_NO_UPDATE_CHECK) {
|
|
201
217
|
try {
|
|
202
|
-
const { checkForUpdate } = await import("./update-
|
|
218
|
+
const { checkForUpdate } = await import("./update-FSS7X5WV.js");
|
|
203
219
|
const update = await checkForUpdate({ home: rt.home, fetch: globalThis.fetch, now: /* @__PURE__ */ new Date() });
|
|
204
220
|
updateMessage = update;
|
|
205
221
|
} catch {
|
|
206
222
|
}
|
|
207
223
|
}
|
|
208
|
-
const { startInteractive } = await import("./ui-
|
|
224
|
+
const { startInteractive } = await import("./ui-36ZEK65V.js");
|
|
209
225
|
return startInteractive(rt, { initialPrompt: args.prompt, resume: args.resume, version: VERSION, updateMessage });
|
|
210
226
|
}
|
|
211
227
|
main().then(
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface GrabDeps {
|
|
2
|
+
platform: NodeJS.Platform;
|
|
3
|
+
tmpdir: string;
|
|
4
|
+
now: Date;
|
|
5
|
+
run?(cmd: string, args: string[]): Promise<{
|
|
6
|
+
code: number;
|
|
7
|
+
output: string;
|
|
8
|
+
}>;
|
|
9
|
+
}
|
|
10
|
+
export declare function clipboardTarget(tmpdir: string, now: Date): string;
|
|
11
|
+
/** Terminals cannot transmit images, so each platform's clipboard tool saves a PNG we can point the model at. */
|
|
12
|
+
export declare function clipboardCommand(platform: NodeJS.Platform, target: string): {
|
|
13
|
+
cmd: string;
|
|
14
|
+
args: string[];
|
|
15
|
+
} | undefined;
|
|
16
|
+
/** Returns the saved PNG path, or undefined when the clipboard holds no image / the platform is unsupported. */
|
|
17
|
+
export declare function grabClipboardImage(deps: GrabDeps): Promise<string | undefined>;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { CommandDef } from './extensions';
|
|
2
|
+
/** Descriptions are English keys; wrap them in t() when showing them. */
|
|
3
|
+
export declare const SLASH_COMMANDS: {
|
|
4
|
+
name: string;
|
|
5
|
+
description: string;
|
|
6
|
+
}[];
|
|
7
|
+
export declare function parseSlash(text: string): {
|
|
8
|
+
name: string;
|
|
9
|
+
args: string;
|
|
10
|
+
} | undefined;
|
|
11
|
+
export declare function expandCommand(def: CommandDef, args: string): string;
|
|
12
|
+
/**
|
|
13
|
+
* /pr: the model runs gh itself (installed on PATH), so this is a prompt, not a fetch.
|
|
14
|
+
* Empty selector = the PR of the current branch, falling back to a branch diff.
|
|
15
|
+
*/
|
|
16
|
+
export declare function prReviewPrompt(selector: string): string;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { CliArgs } from './args';
|
|
2
|
+
export declare const SHELLS: readonly ['bash', 'zsh', 'fish', 'powershell'];
|
|
3
|
+
export type CompletionShell = (typeof SHELLS)[number];
|
|
4
|
+
export declare function isCompletionShell(value: string): value is CompletionShell;
|
|
5
|
+
/** Completion script for a supported shell (bash, zsh, fish, powershell). */
|
|
6
|
+
export declare function completionScript(shell: CompletionShell): string;
|
|
7
|
+
export interface CompletionDeps {
|
|
8
|
+
out(line: string): void;
|
|
9
|
+
err?(line: string): void;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* `bccli completion <bash|zsh|fish|powershell>` — print a completion script to stdout.
|
|
13
|
+
*/
|
|
14
|
+
export declare function runCompletionCommand(args: Pick<CliArgs, 'subArgs'>, deps: CompletionDeps): number;
|
|
@@ -9,9 +9,9 @@ import {
|
|
|
9
9
|
removeGlobalServer,
|
|
10
10
|
serversToStart,
|
|
11
11
|
setProjectTrust
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import "./chunk-
|
|
14
|
-
import "./chunk-
|
|
12
|
+
} from "./chunk-6M55UPES.js";
|
|
13
|
+
import "./chunk-RX4UQX43.js";
|
|
14
|
+
import "./chunk-3WHI4LN3.js";
|
|
15
15
|
export {
|
|
16
16
|
addGlobalServer,
|
|
17
17
|
expandEnvVars,
|
|
@@ -5,26 +5,30 @@ import {
|
|
|
5
5
|
bccliHome,
|
|
6
6
|
globalConfigPath,
|
|
7
7
|
loadConfig,
|
|
8
|
+
quarantineCorruptFile,
|
|
8
9
|
readCredentials,
|
|
9
10
|
readGlobalPlugins,
|
|
10
11
|
readJsonConfig,
|
|
11
12
|
removeCredential,
|
|
12
13
|
resolveModel,
|
|
13
14
|
saveCredential,
|
|
14
|
-
updateGlobalConfig
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
updateGlobalConfig,
|
|
16
|
+
writeFileAtomic
|
|
17
|
+
} from "./chunk-RX4UQX43.js";
|
|
18
|
+
import "./chunk-3WHI4LN3.js";
|
|
17
19
|
export {
|
|
18
20
|
ConfigError,
|
|
19
21
|
DEFAULT_MAX_STEPS,
|
|
20
22
|
bccliHome,
|
|
21
23
|
globalConfigPath,
|
|
22
24
|
loadConfig,
|
|
25
|
+
quarantineCorruptFile,
|
|
23
26
|
readCredentials,
|
|
24
27
|
readGlobalPlugins,
|
|
25
28
|
readJsonConfig,
|
|
26
29
|
removeCredential,
|
|
27
30
|
resolveModel,
|
|
28
31
|
saveCredential,
|
|
29
|
-
updateGlobalConfig
|
|
32
|
+
updateGlobalConfig,
|
|
33
|
+
writeFileAtomic
|
|
30
34
|
};
|
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import type { ReasoningLevel } from './reasoning';
|
|
2
|
+
import type { HooksConfig } from './hooks';
|
|
3
|
+
import { type Keybind, type KeybindAction } from './keybinds';
|
|
4
|
+
import type { LspServer } from './lsp';
|
|
5
|
+
import type { UsageCap } from './budget';
|
|
6
|
+
import type { Lang } from './i18n';
|
|
7
|
+
export type PermissionMode = 'default' | 'acceptEdits' | 'plan' | 'allowAll';
|
|
8
|
+
export interface ProviderConfig {
|
|
9
|
+
baseURL: string;
|
|
10
|
+
apiKeyEnv?: string;
|
|
11
|
+
name?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface Config {
|
|
14
|
+
model: string;
|
|
15
|
+
/** Optional list of fallback model refs tried in order on 429 / 5xx / connection errors. */
|
|
16
|
+
fallbackModels?: string[];
|
|
17
|
+
permissionMode: PermissionMode;
|
|
18
|
+
reasoning: ReasoningLevel;
|
|
19
|
+
/** Show provider-supplied reasoning summaries in the TUI. Global setting only. */
|
|
20
|
+
thinkingVisible?: boolean;
|
|
21
|
+
/** Delete saved sessions older than this many days at startup. Omitted, null or 0 keeps them until you delete them (the default). Global setting only. */
|
|
22
|
+
sessionRetentionDays?: number | null;
|
|
23
|
+
/** Click the Thinking block to expand/collapse it. Off by default: it needs terminal mouse reporting, which blocks drag-to-copy. Global setting only; ctrl+t works either way. */
|
|
24
|
+
thinkingClickCollapse?: boolean;
|
|
25
|
+
/** Tool-call step cap per turn. Omitted, null or 0 means unlimited (the default); a positive number opts into a cap. */
|
|
26
|
+
maxSteps?: number | null;
|
|
27
|
+
/** Interface language; only the global config is read for it. */
|
|
28
|
+
language?: Lang;
|
|
29
|
+
/** Tool/session hooks; only the global config is read — the project file is untrusted and must never execute code. */
|
|
30
|
+
hooks?: HooksConfig;
|
|
31
|
+
/** Attach images read from disk as vision parts. Only the global config is read; default true. */
|
|
32
|
+
vision?: boolean;
|
|
33
|
+
/** Bash network gate: "offline" blocks known internet commands. Only the global config is read. */
|
|
34
|
+
networkPolicy?: 'allow' | 'offline';
|
|
35
|
+
/** JS plugin specs, loaded at boot. Only the global config is read — the project file must never execute code. */
|
|
36
|
+
plugins?: string[];
|
|
37
|
+
/** Resolved TUI key bindings; only the global config is read (a cloned project must not rebind your keys). */
|
|
38
|
+
keybinds: Record<KeybindAction, Keybind>;
|
|
39
|
+
/** Commands run after a turn that edited files (aider --test-cmd style). Only the global config is read. */
|
|
40
|
+
verifyCommands: string[];
|
|
41
|
+
/** Per-session token/USD budget; the agent stops calling the model once it is exceeded. Only the global config is read. */
|
|
42
|
+
usageCap?: UsageCap;
|
|
43
|
+
/** Daily npm registry check with a notice when a newer bccli exists. Only the global config is read; default "on". */
|
|
44
|
+
updateCheck?: 'on' | 'off';
|
|
45
|
+
/** Include a repo map (files + top-level symbols) in the system prompt. Only the global config is read; default false. */
|
|
46
|
+
repoMap: boolean;
|
|
47
|
+
/** Color theme name. Only the global config is read; default "default". */
|
|
48
|
+
theme: string;
|
|
49
|
+
/** Prompt editing style. Only the global config is read; default "emacs". */
|
|
50
|
+
editor: 'emacs' | 'vim';
|
|
51
|
+
/** Run bash commands inside the OS sandbox (macOS sandbox-exec / Linux bwrap). Only the global config is read; default "off". */
|
|
52
|
+
sandbox: 'off' | 'on';
|
|
53
|
+
/** LSP servers used by the diagnostics tool. Only the global config is read (it spawns commands). */
|
|
54
|
+
lsp?: {
|
|
55
|
+
servers: LspServer[];
|
|
56
|
+
};
|
|
57
|
+
providers: Record<string, ProviderConfig>;
|
|
58
|
+
allow: string[];
|
|
59
|
+
/** Provider ids that came from the (untrusted) project config. */
|
|
60
|
+
projectProviders?: string[];
|
|
61
|
+
}
|
|
62
|
+
export interface ResolvedModel {
|
|
63
|
+
providerId: string;
|
|
64
|
+
model: string;
|
|
65
|
+
baseURL: string;
|
|
66
|
+
apiKey?: string;
|
|
67
|
+
}
|
|
68
|
+
export declare class ConfigError extends Error {
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Default cap on tool-call steps per turn for the main agent: none, like Claude Code, Codex and
|
|
72
|
+
* OpenCode (its `steps` is unset = unlimited). The turn runs until the model stops or the user
|
|
73
|
+
* presses Esc. Set maxSteps in the global config to a positive number to opt into a safety cap
|
|
74
|
+
* (the "type continue" notice then appears when it is reached).
|
|
75
|
+
*/
|
|
76
|
+
export declare const DEFAULT_MAX_STEPS: number | null;
|
|
77
|
+
export declare function bccliHome(env?: NodeJS.ProcessEnv): string;
|
|
78
|
+
export declare function readJsonConfig(path: string): Partial<Config>;
|
|
79
|
+
export declare function loadConfig(cwd: string, env?: NodeJS.ProcessEnv): Config;
|
|
80
|
+
export declare function globalConfigPath(env?: NodeJS.ProcessEnv): string;
|
|
81
|
+
export declare function readGlobalPlugins(env?: NodeJS.ProcessEnv): string[];
|
|
82
|
+
export declare function writeFileAtomic(path: string, data: string, mode?: number): void;
|
|
83
|
+
/**
|
|
84
|
+
* A corrupt JSON file must never be silently treated as empty: the next write would
|
|
85
|
+
* wipe whatever the user had. Move it aside in place (timestamped, same folder) so
|
|
86
|
+
* the data stays recoverable, and warn on stderr. Returns the backup path.
|
|
87
|
+
*/
|
|
88
|
+
export declare function quarantineCorruptFile(path: string, error: unknown): string | undefined;
|
|
89
|
+
/**
|
|
90
|
+
* Read-modify-write of the global config.json. `mutate` throwing aborts before
|
|
91
|
+
* any write; the write itself is atomic (tmp + rename in the same directory),
|
|
92
|
+
* so a failed run never leaves a truncated or half-updated config.
|
|
93
|
+
*/
|
|
94
|
+
export declare function updateGlobalConfig(env: NodeJS.ProcessEnv, mutate: (cfg: Record<string, unknown>) => void): void;
|
|
95
|
+
export declare function readCredentials(env?: NodeJS.ProcessEnv): Record<string, string>;
|
|
96
|
+
export declare function saveCredential(providerId: string, key: string, env?: NodeJS.ProcessEnv): void;
|
|
97
|
+
export declare function resolveModel(config: Config, modelRef: string, env?: NodeJS.ProcessEnv): ResolvedModel;
|
|
98
|
+
/** Returns false when there was no stored key to remove. */
|
|
99
|
+
export declare function removeCredential(providerId: string, env?: NodeJS.ProcessEnv): boolean;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { SkillDef } from './extensions';
|
|
2
|
+
/** Instruction files in load order: global BCCLI.md, then AGENTS.md/BCCLI.md from the filesystem root down to cwd. */
|
|
3
|
+
export declare function instructionPaths(cwd: string, home: string): string[];
|
|
4
|
+
export declare function loadInstructions(cwd: string, home: string): string;
|
|
5
|
+
export declare function buildSystemPrompt(opts: {
|
|
6
|
+
cwd: string;
|
|
7
|
+
home: string;
|
|
8
|
+
model: string;
|
|
9
|
+
date?: string;
|
|
10
|
+
platform?: string;
|
|
11
|
+
skills?: SkillDef[];
|
|
12
|
+
repoMap?: string;
|
|
13
|
+
}): string;
|
package/dist/diff.d.ts
ADDED
package/dist/exit.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare const EXIT_GRACE_MS = 1000;
|
|
2
|
+
export interface ExitDeps {
|
|
3
|
+
setExitCode: (code: number) => void;
|
|
4
|
+
exit: (code: number) => void;
|
|
5
|
+
setTimer: (fn: () => void, ms: number) => {
|
|
6
|
+
unref: () => void;
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
export declare function settleExit(code: number, deps?: Partial<ExitDeps>): void;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export interface SkillDef {
|
|
2
|
+
name: string;
|
|
3
|
+
description: string;
|
|
4
|
+
dir: string;
|
|
5
|
+
file: string;
|
|
6
|
+
}
|
|
7
|
+
export interface CommandDef {
|
|
8
|
+
name: string;
|
|
9
|
+
description?: string;
|
|
10
|
+
argumentHint?: string;
|
|
11
|
+
body: string;
|
|
12
|
+
}
|
|
13
|
+
export interface AgentDef {
|
|
14
|
+
name: string;
|
|
15
|
+
description: string;
|
|
16
|
+
tools?: string[];
|
|
17
|
+
model?: string;
|
|
18
|
+
prompt: string;
|
|
19
|
+
maxSteps?: number;
|
|
20
|
+
/** Run this agent concurrently with sibling task calls even when its tools can write. */
|
|
21
|
+
parallel?: boolean;
|
|
22
|
+
}
|
|
23
|
+
export interface ExtensionRoots {
|
|
24
|
+
cwd: string;
|
|
25
|
+
home: string;
|
|
26
|
+
userHome: string;
|
|
27
|
+
}
|
|
28
|
+
export declare function parseFrontmatter(text: string): {
|
|
29
|
+
data: Record<string, string | string[]>;
|
|
30
|
+
body: string;
|
|
31
|
+
};
|
|
32
|
+
export declare function loadSkills(r: ExtensionRoots): SkillDef[];
|
|
33
|
+
export declare function loadCommands(r: ExtensionRoots): CommandDef[];
|
|
34
|
+
export declare function loadAgentDefs(r: ExtensionRoots): AgentDef[];
|
|
@@ -1,32 +1,32 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
createRuntime
|
|
4
|
-
} from "./chunk-
|
|
5
|
-
import "./chunk-
|
|
6
|
-
import "./chunk-
|
|
7
|
-
import "./chunk-
|
|
4
|
+
} from "./chunk-R72OV7RF.js";
|
|
5
|
+
import "./chunk-OK2USAXX.js";
|
|
6
|
+
import "./chunk-ZEPTUKNW.js";
|
|
7
|
+
import "./chunk-JXM6REER.js";
|
|
8
8
|
import "./chunk-PSO7R5AD.js";
|
|
9
9
|
import {
|
|
10
10
|
LOOPBACK_BIND,
|
|
11
11
|
parseCliArgs
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import "./chunk-
|
|
14
|
-
import "./chunk-
|
|
15
|
-
import "./chunk-
|
|
16
|
-
import "./chunk-
|
|
17
|
-
import "./chunk-
|
|
18
|
-
import "./chunk-
|
|
19
|
-
import "./chunk-
|
|
20
|
-
import "./chunk-
|
|
21
|
-
import "./chunk-
|
|
12
|
+
} from "./chunk-6UO5GX55.js";
|
|
13
|
+
import "./chunk-WFZKJY3R.js";
|
|
14
|
+
import "./chunk-H7XJDKJY.js";
|
|
15
|
+
import "./chunk-IYR5PYA3.js";
|
|
16
|
+
import "./chunk-HQW4BROS.js";
|
|
17
|
+
import "./chunk-3I5BW3ZT.js";
|
|
18
|
+
import "./chunk-SVD4LHJC.js";
|
|
19
|
+
import "./chunk-5YJ3ZQVR.js";
|
|
20
|
+
import "./chunk-KPTML72Q.js";
|
|
21
|
+
import "./chunk-6M55UPES.js";
|
|
22
22
|
import {
|
|
23
23
|
ConfigError,
|
|
24
24
|
globalConfigPath,
|
|
25
25
|
readJsonConfig
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-RX4UQX43.js";
|
|
27
27
|
import {
|
|
28
28
|
t
|
|
29
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-3WHI4LN3.js";
|
|
30
30
|
|
|
31
31
|
// src/ghBotWebhook.ts
|
|
32
32
|
import { createHmac, timingSafeEqual } from "crypto";
|
|
@@ -435,16 +435,17 @@ async function collectGhContext(d, deps) {
|
|
|
435
435
|
## diff (truncated)
|
|
436
436
|
${truncateHeadTailUtf8(diffRes.stdout, 1e5)}`;
|
|
437
437
|
}
|
|
438
|
-
const
|
|
438
|
+
const sanitizeUntrusted = (s) => s.replace(/<\/untrusted-github>/gi, "</untrusted-github>");
|
|
439
|
+
const comment = sanitizeUntrusted(truncateUtf8Bytes(d.body, 8192));
|
|
439
440
|
const context = [
|
|
440
441
|
"<untrusted-github>",
|
|
441
442
|
`## Comment by ${d.author} (${d.repo}#${d.number})`,
|
|
442
443
|
comment,
|
|
443
444
|
"",
|
|
444
|
-
`## Issue/PR title: ${title}`,
|
|
445
|
+
`## Issue/PR title: ${sanitizeUntrusted(title)}`,
|
|
445
446
|
"## Issue/PR body",
|
|
446
|
-
issueBody,
|
|
447
|
-
diffBlock,
|
|
447
|
+
sanitizeUntrusted(issueBody),
|
|
448
|
+
sanitizeUntrusted(diffBlock),
|
|
448
449
|
"</untrusted-github>",
|
|
449
450
|
"",
|
|
450
451
|
"Draft your reply to the comment above following your system rules."
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { CliArgs } from './args';
|
|
2
|
+
export interface GhBotCliDeps {
|
|
3
|
+
env: NodeJS.ProcessEnv;
|
|
4
|
+
cwd: string;
|
|
5
|
+
out(s?: string): void;
|
|
6
|
+
err(s?: string): void;
|
|
7
|
+
}
|
|
8
|
+
/** `bccli gh-bot [serve]` — off-by-default; secret dari env accessor per-request. */
|
|
9
|
+
export declare function runGhBotCommand(args: CliArgs, deps: GhBotCliDeps): Promise<number>;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import type { CommentDelivery } from './ghBotWebhook';
|
|
2
|
+
export interface GhBotConfig {
|
|
3
|
+
enabled: boolean;
|
|
4
|
+
path: string;
|
|
5
|
+
secretEnv: string;
|
|
6
|
+
repos: string[];
|
|
7
|
+
users: string[];
|
|
8
|
+
maxBodyBytes: number;
|
|
9
|
+
maxActive: number;
|
|
10
|
+
maxQueue: number;
|
|
11
|
+
stepLimit: number;
|
|
12
|
+
timeoutMs: number;
|
|
13
|
+
/** Kapasitas completed-LRU (opsional; default 1000) — dipakai test utk memperkecil. */
|
|
14
|
+
dedupCap?: number;
|
|
15
|
+
}
|
|
16
|
+
/** Validasi ketat + default aman (off-by-default). */
|
|
17
|
+
export declare function ghBotConfigFrom(raw: unknown): GhBotConfig;
|
|
18
|
+
export type AcceptResult = 'queued' | 'dedup' | 'inflight' | 'filtered' | 'full' | 'closed';
|
|
19
|
+
export interface GhBotHubDeps {
|
|
20
|
+
out(s: string): void;
|
|
21
|
+
err(s: string): void;
|
|
22
|
+
/** SATU signal (deadline ∪ close) diteruskan ke collect+draft+post. */
|
|
23
|
+
runJob(d: CommentDelivery, signal: AbortSignal): Promise<{
|
|
24
|
+
ok: boolean;
|
|
25
|
+
reason?: string;
|
|
26
|
+
}>;
|
|
27
|
+
}
|
|
28
|
+
export interface CloseSummary {
|
|
29
|
+
aborted: number;
|
|
30
|
+
terminationConfirmed: number;
|
|
31
|
+
terminationUnconfirmed: number;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Admission atomik (spec §4): filter → cek duplikat (inFlight/LRU) → cek kapasitas →
|
|
35
|
+
* reservasi dalam satu blok sinkron. `full` TIDAK menyimpan dedup. Worker membersihkan
|
|
36
|
+
* active/inFlight di finally pada resolve MAUPUN reject (dibungkus Promise.resolve().then
|
|
37
|
+
* agar throw sinkron pun masuk jalur catch). Job gagal tidak masuk completed-LRU.
|
|
38
|
+
*/
|
|
39
|
+
export declare class GhBotHub {
|
|
40
|
+
private readonly cfg;
|
|
41
|
+
private readonly deps;
|
|
42
|
+
private readonly inFlight;
|
|
43
|
+
private readonly completed;
|
|
44
|
+
private readonly completedOrder;
|
|
45
|
+
private readonly queue;
|
|
46
|
+
private active;
|
|
47
|
+
private closed;
|
|
48
|
+
private closing;
|
|
49
|
+
private readonly closeController;
|
|
50
|
+
private readonly closeReasons;
|
|
51
|
+
private readonly idleWaiters;
|
|
52
|
+
private readonly dedupCap;
|
|
53
|
+
/** Akumulasi SEMUA job (di/di luar close) — §9.19: unconfirmed terhitung walau gagal sebelum close. */
|
|
54
|
+
private unconfirmedTotal;
|
|
55
|
+
constructor(cfg: GhBotConfig, deps: GhBotHubDeps);
|
|
56
|
+
accept(delivery: CommentDelivery): AcceptResult;
|
|
57
|
+
private pump;
|
|
58
|
+
private pushCompleted;
|
|
59
|
+
private maybeIdle;
|
|
60
|
+
whenIdle(): Promise<void>;
|
|
61
|
+
close(): Promise<CloseSummary>;
|
|
62
|
+
stats(): {
|
|
63
|
+
queued: number;
|
|
64
|
+
active: number;
|
|
65
|
+
inflight: number;
|
|
66
|
+
completed: number;
|
|
67
|
+
};
|
|
68
|
+
}
|