@dreb/coding-agent 2.46.0 → 2.47.0
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.md +4 -2
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +19 -8
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/extensions/index.d.ts +1 -1
- package/dist/core/extensions/index.d.ts.map +1 -1
- package/dist/core/extensions/index.js.map +1 -1
- package/dist/core/extensions/runner.d.ts +7 -0
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +10 -0
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/types.d.ts +35 -0
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +1 -0
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +38 -2
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/tools/ask-user.d.ts +45 -0
- package/dist/core/tools/ask-user.d.ts.map +1 -0
- package/dist/core/tools/ask-user.js +210 -0
- package/dist/core/tools/ask-user.js.map +1 -0
- package/dist/core/tools/index.d.ts +11 -0
- package/dist/core/tools/index.d.ts.map +1 -1
- package/dist/core/tools/index.js +8 -0
- package/dist/core/tools/index.js.map +1 -1
- package/dist/modes/interactive/components/ask-user.d.ts +59 -0
- package/dist/modes/interactive/components/ask-user.d.ts.map +1 -0
- package/dist/modes/interactive/components/ask-user.js +240 -0
- package/dist/modes/interactive/components/ask-user.js.map +1 -0
- package/dist/modes/interactive/interactive-mode.d.ts +12 -0
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +92 -5
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-mode.d.ts +16 -1
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-mode.js +112 -59
- package/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-types.d.ts +24 -0
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-types.js.map +1 -1
- package/docs/dashboard.md +1 -1
- package/docs/extensions.md +33 -3
- package/docs/rpc.md +45 -6
- package/docs/session.md +1 -1
- package/package.json +1 -1
|
@@ -883,7 +883,12 @@ export class AgentSession {
|
|
|
883
883
|
}
|
|
884
884
|
/** Emit extension events based on agent events */
|
|
885
885
|
async _emitExtensionEvent(event) {
|
|
886
|
-
|
|
886
|
+
// The runner is created unconditionally (so built-in tools like ask_user
|
|
887
|
+
// always have a UI context). When no extensions are loaded there are no
|
|
888
|
+
// handlers to invoke — return synchronously to avoid inserting an extra
|
|
889
|
+
// await tick per event, which would otherwise delay the final agent_end
|
|
890
|
+
// emission past when prompt() resolves.
|
|
891
|
+
if (!this._extensionRunner || !this._extensionRunner.hasExtensions)
|
|
887
892
|
return;
|
|
888
893
|
if (event.type === "agent_start") {
|
|
889
894
|
this._turnIndex = 0;
|
|
@@ -2443,9 +2448,15 @@ export class AgentSession {
|
|
|
2443
2448
|
const wrappedExtensionTools = this._extensionRunner
|
|
2444
2449
|
? wrapRegisteredTools(allCustomTools, this._extensionRunner)
|
|
2445
2450
|
: [];
|
|
2451
|
+
// Give base tools a per-execution extension context so built-ins like
|
|
2452
|
+
// ask_user can reach ctx.ui. createContext() snapshots hasUI at call time,
|
|
2453
|
+
// so print/RPC-without-host modes degrade to the no-op UI (hasUI === false).
|
|
2454
|
+
const baseToolCtxFactory = this._extensionRunner
|
|
2455
|
+
? () => this._extensionRunner.createContext()
|
|
2456
|
+
: undefined;
|
|
2446
2457
|
const toolRegistry = new Map(Array.from(this._baseToolDefinitions.values()).map((definition) => [
|
|
2447
2458
|
definition.name,
|
|
2448
|
-
wrapToolDefinition(definition),
|
|
2459
|
+
wrapToolDefinition(definition, baseToolCtxFactory),
|
|
2449
2460
|
]));
|
|
2450
2461
|
for (const tool of wrappedExtensionTools) {
|
|
2451
2462
|
toolRegistry.set(tool.name, tool);
|
|
@@ -2544,12 +2555,11 @@ export class AgentSession {
|
|
|
2544
2555
|
extensionsResult.runtime.flagValues.set(name, value);
|
|
2545
2556
|
}
|
|
2546
2557
|
}
|
|
2547
|
-
|
|
2548
|
-
|
|
2549
|
-
|
|
2550
|
-
|
|
2551
|
-
|
|
2552
|
-
: undefined;
|
|
2558
|
+
// The runner also owns the cross-surface UI context used by built-in
|
|
2559
|
+
// tools such as ask_user. Create it even when no third-party extensions
|
|
2560
|
+
// are loaded; otherwise ordinary TUI/Dashboard sessions give base tools
|
|
2561
|
+
// no ctx.ui and ask_user can never open its dialog.
|
|
2562
|
+
this._extensionRunner = new ExtensionRunner(extensionsResult.extensions, extensionsResult.runtime, this._cwd, this.sessionManager, this._modelRegistry);
|
|
2553
2563
|
if (this._extensionRunnerRef) {
|
|
2554
2564
|
this._extensionRunnerRef.current = this._extensionRunner;
|
|
2555
2565
|
}
|
|
@@ -2572,6 +2582,7 @@ export class AgentSession {
|
|
|
2572
2582
|
"subagent",
|
|
2573
2583
|
"wait",
|
|
2574
2584
|
"search",
|
|
2585
|
+
"ask_user",
|
|
2575
2586
|
"skill",
|
|
2576
2587
|
"tasks_update",
|
|
2577
2588
|
"suggest_next",
|