claude-code-rust 0.14.1 → 0.14.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/agent-sdk/dist/bridge/available_commands.js +1 -1
- package/agent-sdk/dist/bridge/command_interactions.js +16 -0
- package/agent-sdk/dist/bridge/command_lifecycle.js +184 -0
- package/agent-sdk/dist/bridge/command_mcp.js +32 -0
- package/agent-sdk/dist/bridge/command_scheduler.js +136 -0
- package/agent-sdk/dist/bridge/command_session_control.js +269 -0
- package/agent-sdk/dist/bridge/command_session_data.js +203 -0
- package/agent-sdk/dist/bridge/commands.js +6 -0
- package/agent-sdk/dist/bridge/error_classification.js +24 -7
- package/agent-sdk/dist/bridge/events.js +42 -9
- package/agent-sdk/dist/bridge/history.js +7 -3
- package/agent-sdk/dist/bridge/logger.js +2 -0
- package/agent-sdk/dist/bridge/mcp.js +90 -80
- package/agent-sdk/dist/bridge/mcp_auth_adapter.js +67 -0
- package/agent-sdk/dist/bridge/mcp_monitor.js +59 -0
- package/agent-sdk/dist/bridge/message_handlers.js +11 -7
- package/agent-sdk/dist/bridge/session_lifecycle.js +54 -4
- package/agent-sdk/dist/bridge/state_parsing.js +7 -0
- package/agent-sdk/dist/bridge/tool_calls.js +5 -4
- package/agent-sdk/dist/bridge/tooling.js +53 -1
- package/agent-sdk/dist/bridge.js +118 -617
- package/package.json +8 -8
|
@@ -3,7 +3,7 @@ import { bridgeLogger, LOG_TARGETS } from "./logger.js";
|
|
|
3
3
|
import { asRecordOrNull } from "./shared.js";
|
|
4
4
|
import { applyTaskToolResult } from "./tasks.js";
|
|
5
5
|
import { activeTaskIdForToolUse, linkTaskToolUse, unlinkTaskToolUse } from "./task_links.js";
|
|
6
|
-
import { backgroundToolLaunchTaskIdFromResult, buildToolResultFields, createToolCall, } from "./tooling.js";
|
|
6
|
+
import { applyToolNonExecutionMetadata, backgroundToolLaunchTaskIdFromResult, buildToolResultFields, createToolCall, } from "./tooling.js";
|
|
7
7
|
const TOOL_SUMMARY_TOOL_NAMES = new Set(["Agent", "Task", "WebSearch", "WebFetch", "ExitPlanMode"]);
|
|
8
8
|
const TASK_LIFECYCLE_TOOL_NAMES = new Set(["Agent", "Task", "Monitor", "Workflow"]);
|
|
9
9
|
function jsonSize(value) {
|
|
@@ -308,18 +308,19 @@ export function ensureToolCallVisible(session, toolUseId, toolName, input, paren
|
|
|
308
308
|
emitInitialToolCall(session, toolCall);
|
|
309
309
|
return toolCall;
|
|
310
310
|
}
|
|
311
|
-
export function emitToolResultUpdate(session, toolUseId, isError, rawContent, rawResult = rawContent, sourceMessageUuid) {
|
|
311
|
+
export function emitToolResultUpdate(session, toolUseId, isError, rawContent, rawResult = rawContent, sourceMessageUuid, nonExecutionMetadata) {
|
|
312
312
|
const base = session.toolCalls.get(toolUseId);
|
|
313
313
|
const baseToolName = toolNameFromMeta(base?.meta) ?? "";
|
|
314
314
|
const fields = buildToolResultFields(isError, rawContent, base, rawResult, taskTitleContext(session, baseToolName, asRecordOrNull(base?.raw_input) ?? {}));
|
|
315
|
-
|
|
315
|
+
applyToolNonExecutionMetadata(fields, nonExecutionMetadata);
|
|
316
|
+
if (!isError && !nonExecutionMetadata) {
|
|
316
317
|
const taskId = backgroundToolLaunchTaskIdFromResult(baseToolName, rawResult, rawContent);
|
|
317
318
|
if (taskId) {
|
|
318
319
|
linkTaskToolUse(session, taskId, toolUseId);
|
|
319
320
|
}
|
|
320
321
|
}
|
|
321
322
|
emitToolCallUpdate(session, toolUseId, fields, "result", sourceMessageUuid);
|
|
322
|
-
applyTaskToolResult(session, toolUseId, isError, rawContent, rawResult);
|
|
323
|
+
applyTaskToolResult(session, toolUseId, isError || nonExecutionMetadata !== undefined, rawContent, rawResult);
|
|
323
324
|
if (baseToolName === "Agent" || baseToolName === "Task") {
|
|
324
325
|
const taskId = activeTaskIdForToolUse(session, toolUseId);
|
|
325
326
|
if (taskId) {
|
|
@@ -528,7 +528,59 @@ function extractToolOutputMetadata(toolName, rawResult, rawContent) {
|
|
|
528
528
|
}
|
|
529
529
|
}
|
|
530
530
|
}
|
|
531
|
-
|
|
531
|
+
if (toolName === "Skill") {
|
|
532
|
+
for (const candidate of candidates) {
|
|
533
|
+
if (candidate.background === true) {
|
|
534
|
+
metadata.skill = { background: true };
|
|
535
|
+
break;
|
|
536
|
+
}
|
|
537
|
+
}
|
|
538
|
+
}
|
|
539
|
+
return metadata.bash || metadata.agent || metadata.web_fetch || metadata.skill
|
|
540
|
+
? metadata
|
|
541
|
+
: undefined;
|
|
542
|
+
}
|
|
543
|
+
export function parseToolNonExecutionMetadata(value) {
|
|
544
|
+
const byToolUseId = new Map();
|
|
545
|
+
if (!Array.isArray(value)) {
|
|
546
|
+
return byToolUseId;
|
|
547
|
+
}
|
|
548
|
+
for (const entry of value) {
|
|
549
|
+
const record = asRecordOrNull(entry);
|
|
550
|
+
const id = nonEmptyString(record?.id);
|
|
551
|
+
const kind = nonEmptyString(record?.non_execution_kind);
|
|
552
|
+
if (!id || !kind || byToolUseId.has(id)) {
|
|
553
|
+
continue;
|
|
554
|
+
}
|
|
555
|
+
const userFeedback = nonEmptyString(record?.user_feedback);
|
|
556
|
+
byToolUseId.set(id, {
|
|
557
|
+
kind,
|
|
558
|
+
...(userFeedback ? { user_feedback: userFeedback } : {}),
|
|
559
|
+
});
|
|
560
|
+
}
|
|
561
|
+
return byToolUseId;
|
|
562
|
+
}
|
|
563
|
+
export function applyToolNonExecutionMetadata(fields, metadata) {
|
|
564
|
+
if (!metadata) {
|
|
565
|
+
return;
|
|
566
|
+
}
|
|
567
|
+
fields.output_metadata = {
|
|
568
|
+
...(fields.output_metadata ?? {}),
|
|
569
|
+
non_execution: metadata,
|
|
570
|
+
};
|
|
571
|
+
switch (metadata.kind) {
|
|
572
|
+
case "user-rejected":
|
|
573
|
+
case "permission-rule":
|
|
574
|
+
case "automode-unavailable":
|
|
575
|
+
case "automode-parsing-error":
|
|
576
|
+
case "automode-blocked":
|
|
577
|
+
fields.status = "failed";
|
|
578
|
+
break;
|
|
579
|
+
case "cancelled":
|
|
580
|
+
case "interrupted":
|
|
581
|
+
fields.status = "killed";
|
|
582
|
+
break;
|
|
583
|
+
}
|
|
532
584
|
}
|
|
533
585
|
export function extractText(value) {
|
|
534
586
|
if (typeof value === "string") {
|