@slopus/rig 0.0.3 → 0.0.6
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 +144 -1
- package/dist/agent/Agent.d.ts +16 -0
- package/dist/agent/Agent.d.ts.map +1 -1
- package/dist/agent/Agent.js +106 -0
- package/dist/agent/compaction/compactConversation.d.ts +22 -0
- package/dist/agent/compaction/compactConversation.d.ts.map +1 -0
- package/dist/agent/compaction/compactConversation.js +77 -0
- package/dist/agent/compaction/estimateMessagesTokens.d.ts +3 -0
- package/dist/agent/compaction/estimateMessagesTokens.d.ts.map +1 -0
- package/dist/agent/compaction/estimateMessagesTokens.js +39 -0
- package/dist/agent/compaction/formatMessagesForCompaction.d.ts +3 -0
- package/dist/agent/compaction/formatMessagesForCompaction.d.ts.map +1 -0
- package/dist/agent/compaction/formatMessagesForCompaction.js +30 -0
- package/dist/agent/compaction/requestCompactionSummary.d.ts +11 -0
- package/dist/agent/compaction/requestCompactionSummary.d.ts.map +1 -0
- package/dist/agent/compaction/requestCompactionSummary.js +43 -0
- package/dist/agent/context/AgentContext.d.ts +8 -0
- package/dist/agent/context/AgentContext.d.ts.map +1 -1
- package/dist/agent/context/BashContext.d.ts +23 -0
- package/dist/agent/context/BashContext.d.ts.map +1 -1
- package/dist/agent/context/GoalContext.d.ts +7 -0
- package/dist/agent/context/GoalContext.d.ts.map +1 -0
- package/dist/agent/context/GoalContext.js +1 -0
- package/dist/agent/context/SubagentContext.d.ts +20 -1
- package/dist/agent/context/SubagentContext.d.ts.map +1 -1
- package/dist/agent/context/TaskContext.d.ts +8 -0
- package/dist/agent/context/TaskContext.d.ts.map +1 -0
- package/dist/agent/context/TaskContext.js +1 -0
- package/dist/agent/context/UserInputContext.d.ts +7 -0
- package/dist/agent/context/UserInputContext.d.ts.map +1 -0
- package/dist/agent/context/UserInputContext.js +1 -0
- package/dist/agent/context/assertCanWritePath.d.ts +3 -0
- package/dist/agent/context/assertCanWritePath.d.ts.map +1 -0
- package/dist/agent/context/assertCanWritePath.js +11 -0
- package/dist/agent/context/createJustBashBashContext.d.ts.map +1 -1
- package/dist/agent/context/createJustBashBashContext.js +127 -0
- package/dist/agent/context/createNodeAgentContext.d.ts +8 -0
- package/dist/agent/context/createNodeAgentContext.d.ts.map +1 -1
- package/dist/agent/context/createNodeAgentContext.js +15 -2
- package/dist/agent/context/createNodeBashContext.d.ts +2 -0
- package/dist/agent/context/createNodeBashContext.d.ts.map +1 -1
- package/dist/agent/context/createNodeBashContext.js +123 -4
- package/dist/agent/context/createNodeFileSystemContext.d.ts +2 -0
- package/dist/agent/context/createNodeFileSystemContext.d.ts.map +1 -1
- package/dist/agent/context/createNodeFileSystemContext.js +18 -8
- package/dist/agent/context/createSandboxedCommand.d.ts +7 -0
- package/dist/agent/context/createSandboxedCommand.d.ts.map +1 -0
- package/dist/agent/context/createSandboxedCommand.js +47 -0
- package/dist/agent/context/findGitWritablePaths.d.ts +2 -0
- package/dist/agent/context/findGitWritablePaths.d.ts.map +1 -0
- package/dist/agent/context/findGitWritablePaths.js +54 -0
- package/dist/agent/context/isPathInsideWorkspace.d.ts +2 -0
- package/dist/agent/context/isPathInsideWorkspace.d.ts.map +1 -0
- package/dist/agent/context/isPathInsideWorkspace.js +14 -0
- package/dist/agent/context/resolvePotentialPath.d.ts +2 -0
- package/dist/agent/context/resolvePotentialPath.d.ts.map +1 -0
- package/dist/agent/context/resolvePotentialPath.js +32 -0
- package/dist/agent/createPermissionInstructions.d.ts +3 -0
- package/dist/agent/createPermissionInstructions.d.ts.map +1 -0
- package/dist/agent/createPermissionInstructions.js +12 -0
- package/dist/agent/createSubagentInstructions.js +1 -1
- package/dist/agent/createSystemPrompt.d.ts.map +1 -1
- package/dist/agent/createSystemPrompt.js +4 -0
- package/dist/agent/index.d.ts +7 -3
- package/dist/agent/index.d.ts.map +1 -1
- package/dist/agent/loop.d.ts +16 -2
- package/dist/agent/loop.d.ts.map +1 -1
- package/dist/agent/loop.js +115 -15
- package/dist/agent/printAgentMessageToConsole.d.ts +1 -0
- package/dist/agent/printAgentMessageToConsole.d.ts.map +1 -1
- package/dist/agent/selectSystemPromptForModel.js +1 -1
- package/dist/agent/types.d.ts +1 -0
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/app/CodingAssistantAgentBackend.d.ts +11 -1
- package/dist/app/CodingAssistantAgentBackend.d.ts.map +1 -1
- package/dist/app/CodingAssistantApp.d.ts +7 -1
- package/dist/app/CodingAssistantApp.d.ts.map +1 -1
- package/dist/app/CodingAssistantApp.js +678 -45
- package/dist/app/ScrollbackPreservingTerminal.d.ts +5 -0
- package/dist/app/ScrollbackPreservingTerminal.d.ts.map +1 -0
- package/dist/app/ScrollbackPreservingTerminal.js +7 -0
- package/dist/app/StartupStatusApp.js +1 -1
- package/dist/app/createCodingAssistantAgent.d.ts +6 -1
- package/dist/app/createCodingAssistantAgent.d.ts.map +1 -1
- package/dist/app/createCodingAssistantAgent.js +24 -7
- package/dist/app/createSlashCommands.d.ts.map +1 -1
- package/dist/app/createSlashCommands.js +42 -0
- package/dist/app/describeReasoningLevel.d.ts.map +1 -1
- package/dist/app/describeReasoningLevel.js +1 -0
- package/dist/app/highlightAgentCode.d.ts.map +1 -1
- package/dist/app/highlightAgentCode.js +10 -7
- package/dist/app/humanizeGoalStatus.d.ts +3 -0
- package/dist/app/humanizeGoalStatus.d.ts.map +1 -0
- package/dist/app/humanizeGoalStatus.js +9 -0
- package/dist/app/humanizePermissionMode.d.ts +3 -0
- package/dist/app/humanizePermissionMode.d.ts.map +1 -0
- package/dist/app/humanizePermissionMode.js +9 -0
- package/dist/app/humanizeReasoningLevel.d.ts.map +1 -1
- package/dist/app/humanizeReasoningLevel.js +3 -0
- package/dist/app/humanizeToolName.d.ts +2 -0
- package/dist/app/humanizeToolName.d.ts.map +1 -0
- package/dist/app/humanizeToolName.js +40 -0
- package/dist/app/main.d.ts.map +1 -1
- package/dist/app/main.js +4 -0
- package/dist/app/renderAgentMarkdown.d.ts.map +1 -1
- package/dist/app/renderAgentMarkdown.js +2 -1
- package/dist/app/runApp.d.ts +2 -0
- package/dist/app/runApp.d.ts.map +1 -1
- package/dist/app/runApp.js +48 -3
- package/dist/app/sanitizeTerminalText.d.ts +2 -0
- package/dist/app/sanitizeTerminalText.d.ts.map +1 -0
- package/dist/app/sanitizeTerminalText.js +55 -0
- package/dist/app/upsertSubagentSummary.d.ts +3 -0
- package/dist/app/upsertSubagentSummary.d.ts.map +1 -0
- package/dist/app/upsertSubagentSummary.js +6 -0
- package/dist/client/ProtocolHttpClient.d.ts +12 -1
- package/dist/client/ProtocolHttpClient.d.ts.map +1 -1
- package/dist/client/ProtocolHttpClient.js +21 -0
- package/dist/client/RemoteAgent.d.ts +11 -1
- package/dist/client/RemoteAgent.d.ts.map +1 -1
- package/dist/client/RemoteAgent.js +91 -1
- package/dist/config/createConfigFile.d.ts.map +1 -1
- package/dist/config/createConfigFile.js +5 -0
- package/dist/config/defaultConfig.d.ts.map +1 -1
- package/dist/config/defaultConfig.js +2 -0
- package/dist/config/mergeConfigValues.d.ts.map +1 -1
- package/dist/config/mergeConfigValues.js +8 -1
- package/dist/config/parseConfigToml.d.ts.map +1 -1
- package/dist/config/parseConfigToml.js +88 -0
- package/dist/config/serializeMcpServers.d.ts +3 -0
- package/dist/config/serializeMcpServers.d.ts.map +1 -0
- package/dist/config/serializeMcpServers.js +34 -0
- package/dist/config/types.d.ts +6 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/writeRuntimeConfig.d.ts.map +1 -1
- package/dist/config/writeRuntimeConfig.js +3 -0
- package/dist/goals/SessionGoal.d.ts +14 -0
- package/dist/goals/SessionGoal.d.ts.map +1 -0
- package/dist/goals/SessionGoal.js +1 -0
- package/dist/goals/createGoalContinuationPrompt.d.ts +3 -0
- package/dist/goals/createGoalContinuationPrompt.d.ts.map +1 -0
- package/dist/goals/createGoalContinuationPrompt.js +17 -0
- package/dist/goals/index.d.ts +5 -0
- package/dist/goals/index.d.ts.map +1 -0
- package/dist/goals/index.js +3 -0
- package/dist/goals/isGoalStatus.d.ts +3 -0
- package/dist/goals/isGoalStatus.d.ts.map +1 -0
- package/dist/goals/isGoalStatus.js +3 -0
- package/dist/goals/normalizeGoalObjective.d.ts +3 -0
- package/dist/goals/normalizeGoalObjective.d.ts.map +1 -0
- package/dist/goals/normalizeGoalObjective.js +11 -0
- package/dist/mcp/McpClientManager.d.ts +12 -0
- package/dist/mcp/McpClientManager.d.ts.map +1 -0
- package/dist/mcp/McpClientManager.js +123 -0
- package/dist/mcp/connectMcpServer.d.ts +8 -0
- package/dist/mcp/connectMcpServer.d.ts.map +1 -0
- package/dist/mcp/connectMcpServer.js +47 -0
- package/dist/mcp/createMcpTool.d.ts +11 -0
- package/dist/mcp/createMcpTool.d.ts.map +1 -0
- package/dist/mcp/createMcpTool.js +43 -0
- package/dist/mcp/index.d.ts +5 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +3 -0
- package/dist/mcp/loadMcpServerConfigs.d.ts +4 -0
- package/dist/mcp/loadMcpServerConfigs.d.ts.map +1 -0
- package/dist/mcp/loadMcpServerConfigs.js +122 -0
- package/dist/mcp/mcpResultToContentBlocks.d.ts +3 -0
- package/dist/mcp/mcpResultToContentBlocks.d.ts.map +1 -0
- package/dist/mcp/mcpResultToContentBlocks.js +51 -0
- package/dist/mcp/mergeMcpTools.d.ts +7 -0
- package/dist/mcp/mergeMcpTools.d.ts.map +1 -0
- package/dist/mcp/mergeMcpTools.js +34 -0
- package/dist/mcp/normalizeMcpName.d.ts +2 -0
- package/dist/mcp/normalizeMcpName.d.ts.map +1 -0
- package/dist/mcp/normalizeMcpName.js +3 -0
- package/dist/mcp/types.d.ts +37 -0
- package/dist/mcp/types.d.ts.map +1 -0
- package/dist/mcp/types.js +1 -0
- package/dist/permissions/PermissionContext.d.ts +7 -0
- package/dist/permissions/PermissionContext.d.ts.map +1 -0
- package/dist/permissions/PermissionContext.js +1 -0
- package/dist/permissions/PermissionMode.d.ts +3 -0
- package/dist/permissions/PermissionMode.d.ts.map +1 -0
- package/dist/permissions/PermissionMode.js +1 -0
- package/dist/permissions/createPermissionContext.d.ts +4 -0
- package/dist/permissions/createPermissionContext.d.ts.map +1 -0
- package/dist/permissions/createPermissionContext.js +16 -0
- package/dist/permissions/index.d.ts +13 -0
- package/dist/permissions/index.d.ts.map +1 -0
- package/dist/permissions/index.js +9 -0
- package/dist/permissions/isPermissionMode.d.ts +3 -0
- package/dist/permissions/isPermissionMode.d.ts.map +1 -0
- package/dist/permissions/isPermissionMode.js +6 -0
- package/dist/permissions/parseAutoPermissionReview.d.ts +7 -0
- package/dist/permissions/parseAutoPermissionReview.d.ts.map +1 -0
- package/dist/permissions/parseAutoPermissionReview.js +33 -0
- package/dist/permissions/parsePermissionMode.d.ts +3 -0
- package/dist/permissions/parsePermissionMode.d.ts.map +1 -0
- package/dist/permissions/parsePermissionMode.js +6 -0
- package/dist/permissions/requestAutoPermissionApproval.d.ts +9 -0
- package/dist/permissions/requestAutoPermissionApproval.d.ts.map +1 -0
- package/dist/permissions/requestAutoPermissionApproval.js +26 -0
- package/dist/permissions/reviewAutoPermission.d.ts +13 -0
- package/dist/permissions/reviewAutoPermission.d.ts.map +1 -0
- package/dist/permissions/reviewAutoPermission.js +70 -0
- package/dist/permissions/shouldElevateToolInAutoMode.d.ts +2 -0
- package/dist/permissions/shouldElevateToolInAutoMode.d.ts.map +1 -0
- package/dist/permissions/shouldElevateToolInAutoMode.js +37 -0
- package/dist/permissions/shouldReviewToolInAutoMode.d.ts +2 -0
- package/dist/permissions/shouldReviewToolInAutoMode.d.ts.map +1 -0
- package/dist/permissions/shouldReviewToolInAutoMode.js +85 -0
- package/dist/permissions/summarizePermissionAction.d.ts +2 -0
- package/dist/permissions/summarizePermissionAction.d.ts.map +1 -0
- package/dist/permissions/summarizePermissionAction.js +29 -0
- package/dist/protocol/SessionProtocol.d.ts +49 -2
- package/dist/protocol/SessionProtocol.d.ts.map +1 -1
- package/dist/protocol/index.d.ts +4 -1
- package/dist/protocol/index.d.ts.map +1 -1
- package/dist/providers/claude-sdk.d.ts.map +1 -1
- package/dist/providers/claude-sdk.js +7 -6
- package/dist/providers/codex.d.ts.map +1 -1
- package/dist/providers/codex.js +52 -6
- package/dist/providers/models.d.ts +12 -9
- package/dist/providers/models.d.ts.map +1 -1
- package/dist/providers/models.js +36 -0
- package/dist/providers/types.d.ts +3 -0
- package/dist/providers/types.d.ts.map +1 -1
- package/dist/review/createCodeReviewPrompt.d.ts +2 -0
- package/dist/review/createCodeReviewPrompt.d.ts.map +1 -0
- package/dist/review/createCodeReviewPrompt.js +11 -0
- package/dist/review/index.d.ts +2 -0
- package/dist/review/index.d.ts.map +1 -0
- package/dist/review/index.js +1 -0
- package/dist/server/AgentSessionManager.d.ts +10 -1
- package/dist/server/AgentSessionManager.d.ts.map +1 -1
- package/dist/server/AgentSessionManager.js +203 -12
- package/dist/server/InMemorySession.d.ts +34 -1
- package/dist/server/InMemorySession.d.ts.map +1 -1
- package/dist/server/InMemorySession.js +558 -10
- package/dist/server/InMemorySessionStore.d.ts +2 -0
- package/dist/server/InMemorySessionStore.d.ts.map +1 -1
- package/dist/server/InMemorySessionStore.js +7 -0
- package/dist/server/PersistentSessionStore.d.ts +2 -0
- package/dist/server/PersistentSessionStore.d.ts.map +1 -1
- package/dist/server/PersistentSessionStore.js +80 -5
- package/dist/server/createGoalTitle.d.ts +2 -0
- package/dist/server/createGoalTitle.d.ts.map +1 -0
- package/dist/server/createGoalTitle.js +4 -0
- package/dist/server/createModelCatalog.js +2 -2
- package/dist/server/createProtocolHttpServer.d.ts.map +1 -1
- package/dist/server/createProtocolHttpServer.js +119 -2
- package/dist/server/runLocalProtocolServer.d.ts.map +1 -1
- package/dist/server/runLocalProtocolServer.js +18 -2
- package/dist/tasks/index.d.ts +2 -0
- package/dist/tasks/index.d.ts.map +1 -0
- package/dist/tasks/index.js +1 -0
- package/dist/tasks/types.d.ts +39 -0
- package/dist/tasks/types.d.ts.map +1 -0
- package/dist/tasks/types.js +1 -0
- package/dist/tools/Agent.d.ts +13 -3
- package/dist/tools/Agent.d.ts.map +1 -1
- package/dist/tools/Agent.js +40 -12
- package/dist/tools/claude/AskUserQuestion.d.ts +23 -0
- package/dist/tools/claude/AskUserQuestion.d.ts.map +1 -0
- package/dist/tools/claude/AskUserQuestion.js +52 -0
- package/dist/tools/claude/Bash.d.ts +2 -0
- package/dist/tools/claude/Bash.d.ts.map +1 -1
- package/dist/tools/claude/Bash.js +20 -2
- package/dist/tools/claude/SendMessage.d.ts +10 -0
- package/dist/tools/claude/SendMessage.d.ts.map +1 -0
- package/dist/tools/claude/SendMessage.js +33 -0
- package/dist/tools/claude/TaskCreate.d.ts +12 -0
- package/dist/tools/claude/TaskCreate.d.ts.map +1 -0
- package/dist/tools/claude/TaskCreate.js +34 -0
- package/dist/tools/claude/TaskGet.d.ts +16 -0
- package/dist/tools/claude/TaskGet.d.ts.map +1 -0
- package/dist/tools/claude/TaskGet.js +44 -0
- package/dist/tools/claude/TaskList.d.ts +10 -0
- package/dist/tools/claude/TaskList.d.ts.map +1 -0
- package/dist/tools/claude/TaskList.js +51 -0
- package/dist/tools/claude/TaskOutput.d.ts +17 -0
- package/dist/tools/claude/TaskOutput.d.ts.map +1 -0
- package/dist/tools/claude/TaskOutput.js +74 -0
- package/dist/tools/claude/TaskStop.d.ts +10 -0
- package/dist/tools/claude/TaskStop.d.ts.map +1 -0
- package/dist/tools/claude/TaskStop.js +42 -0
- package/dist/tools/claude/TaskUpdate.d.ts +21 -0
- package/dist/tools/claude/TaskUpdate.d.ts.map +1 -0
- package/dist/tools/claude/TaskUpdate.js +55 -0
- package/dist/tools/claude/index.d.ts +111 -5
- package/dist/tools/claude/index.d.ts.map +1 -1
- package/dist/tools/claude/index.js +24 -2
- package/dist/tools/claude/parseBackgroundTaskId.d.ts +2 -0
- package/dist/tools/claude/parseBackgroundTaskId.d.ts.map +1 -0
- package/dist/tools/claude/parseBackgroundTaskId.js +7 -0
- package/dist/tools/claude/taskSchemas.d.ts +14 -0
- package/dist/tools/claude/taskSchemas.d.ts.map +1 -0
- package/dist/tools/claude/taskSchemas.js +18 -0
- package/dist/tools/codex/exec_command.d.ts +8 -6
- package/dist/tools/codex/exec_command.d.ts.map +1 -1
- package/dist/tools/codex/exec_command.js +37 -18
- package/dist/tools/codex/followup_task.d.ts +11 -0
- package/dist/tools/codex/followup_task.d.ts.map +1 -0
- package/dist/tools/codex/followup_task.js +18 -0
- package/dist/tools/codex/humanizeTaskName.d.ts +2 -0
- package/dist/tools/codex/humanizeTaskName.d.ts.map +1 -0
- package/dist/tools/codex/humanizeTaskName.js +4 -0
- package/dist/tools/codex/index.d.ts +90 -7
- package/dist/tools/codex/index.d.ts.map +1 -1
- package/dist/tools/codex/index.js +24 -0
- package/dist/tools/codex/interrupt_agent.d.ts +10 -0
- package/dist/tools/codex/interrupt_agent.d.ts.map +1 -0
- package/dist/tools/codex/interrupt_agent.js +17 -0
- package/dist/tools/codex/list_agents.d.ts +12 -0
- package/dist/tools/codex/list_agents.d.ts.map +1 -0
- package/dist/tools/codex/list_agents.js +23 -0
- package/dist/tools/codex/request_user_input.d.ts +16 -0
- package/dist/tools/codex/request_user_input.d.ts.map +1 -0
- package/dist/tools/codex/request_user_input.js +58 -0
- package/dist/tools/codex/requireSubagentContext.d.ts +3 -0
- package/dist/tools/codex/requireSubagentContext.d.ts.map +1 -0
- package/dist/tools/codex/requireSubagentContext.js +6 -0
- package/dist/tools/codex/spawn_agent.d.ts +9 -0
- package/dist/tools/codex/spawn_agent.d.ts.map +1 -0
- package/dist/tools/codex/spawn_agent.js +35 -0
- package/dist/tools/codex/subagentSchemas.d.ts +8 -0
- package/dist/tools/codex/subagentSchemas.d.ts.map +1 -0
- package/dist/tools/codex/subagentSchemas.js +13 -0
- package/dist/tools/codex/unifiedExecOutput.d.ts +14 -0
- package/dist/tools/codex/unifiedExecOutput.d.ts.map +1 -0
- package/dist/tools/codex/unifiedExecOutput.js +44 -0
- package/dist/tools/codex/update_plan.d.ts +10 -0
- package/dist/tools/codex/update_plan.d.ts.map +1 -0
- package/dist/tools/codex/update_plan.js +34 -0
- package/dist/tools/codex/wait_agent.d.ts +13 -0
- package/dist/tools/codex/wait_agent.d.ts.map +1 -0
- package/dist/tools/codex/wait_agent.js +32 -0
- package/dist/tools/codex/write_stdin.d.ts +6 -1
- package/dist/tools/codex/write_stdin.d.ts.map +1 -1
- package/dist/tools/codex/write_stdin.js +44 -12
- package/dist/tools/goals/create_goal.d.ts +11 -0
- package/dist/tools/goals/create_goal.d.ts.map +1 -0
- package/dist/tools/goals/create_goal.js +29 -0
- package/dist/tools/goals/get_goal.d.ts +9 -0
- package/dist/tools/goals/get_goal.d.ts.map +1 -0
- package/dist/tools/goals/get_goal.js +26 -0
- package/dist/tools/goals/goalSchemas.d.ts +8 -0
- package/dist/tools/goals/goalSchemas.d.ts.map +1 -0
- package/dist/tools/goals/goalSchemas.js +13 -0
- package/dist/tools/goals/index.d.ts +30 -0
- package/dist/tools/goals/index.d.ts.map +1 -0
- package/dist/tools/goals/index.js +7 -0
- package/dist/tools/goals/update_goal.d.ts +11 -0
- package/dist/tools/goals/update_goal.d.ts.map +1 -0
- package/dist/tools/goals/update_goal.js +33 -0
- package/dist/tools/index.d.ts +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +1 -0
- package/dist/tools/pi/bash.d.ts.map +1 -1
- package/dist/tools/pi/bash.js +2 -0
- package/dist/tools/utils/readSessionWithProgress.d.ts +9 -0
- package/dist/tools/utils/readSessionWithProgress.d.ts.map +1 -0
- package/dist/tools/utils/readSessionWithProgress.js +27 -0
- package/dist/tools/utils/shell.d.ts +2 -0
- package/dist/tools/utils/shell.d.ts.map +1 -1
- package/dist/tools/utils/shell.js +37 -0
- package/dist/tools/utils/summarizeShellOutput.d.ts.map +1 -1
- package/dist/tools/utils/summarizeShellOutput.js +2 -0
- package/dist/user-input/index.d.ts +2 -0
- package/dist/user-input/index.d.ts.map +1 -0
- package/dist/user-input/index.js +1 -0
- package/dist/user-input/types.d.ts +19 -0
- package/dist/user-input/types.d.ts.map +1 -0
- package/dist/user-input/types.js +1 -0
- package/dist/web/assets/highlighted-body-OFNGDK62-BuJOCQJD.js +1 -0
- package/dist/web/assets/highlighted-body-OFNGDK62-TwhCqUaJ.js +1 -0
- package/dist/web/assets/index-B6Bc6sUJ.css +1 -0
- package/dist/web/assets/index-BC99-iZC.js +341 -0
- package/dist/web/assets/index-BZN9jSiw.js +341 -0
- package/dist/web/assets/index-CcF0unjO.css +1 -0
- package/dist/web/index.html +2 -2
- package/package.json +2 -1
|
@@ -1,33 +1,41 @@
|
|
|
1
1
|
import { existsSync } from "node:fs";
|
|
2
2
|
import { mkdir, readFile, readdir, rm, stat, writeFile } from "node:fs/promises";
|
|
3
3
|
import { homedir } from "node:os";
|
|
4
|
+
import { isAbsolute, resolve } from "node:path";
|
|
5
|
+
import { assertCanWritePath } from "./assertCanWritePath.js";
|
|
4
6
|
export function createNodeFileSystemContext(cwd, options = {}) {
|
|
7
|
+
const permissionMode = options.permissionMode ?? (() => "full_access");
|
|
8
|
+
const resolvePath = (path) => (isAbsolute(path) ? path : resolve(cwd, path));
|
|
5
9
|
return {
|
|
6
10
|
cwd,
|
|
7
11
|
home: options.home ?? homedir(),
|
|
8
12
|
async exists(path) {
|
|
9
|
-
return existsSync(path);
|
|
13
|
+
return existsSync(resolvePath(path));
|
|
10
14
|
},
|
|
11
15
|
async mkdir(path, options) {
|
|
12
|
-
|
|
16
|
+
const target = resolvePath(path);
|
|
17
|
+
await assertCanWritePath(cwd, target, permissionMode());
|
|
18
|
+
await mkdir(target, { recursive: options?.recursive ?? false });
|
|
13
19
|
},
|
|
14
20
|
async readFile(path) {
|
|
15
|
-
return readFile(path, "utf8");
|
|
21
|
+
return readFile(resolvePath(path), "utf8");
|
|
16
22
|
},
|
|
17
23
|
async readFileBuffer(path) {
|
|
18
|
-
return readFile(path);
|
|
24
|
+
return readFile(resolvePath(path));
|
|
19
25
|
},
|
|
20
26
|
async readdir(path) {
|
|
21
|
-
return readdir(path);
|
|
27
|
+
return readdir(resolvePath(path));
|
|
22
28
|
},
|
|
23
29
|
async rm(path, options) {
|
|
24
|
-
|
|
30
|
+
const target = resolvePath(path);
|
|
31
|
+
await assertCanWritePath(cwd, target, permissionMode());
|
|
32
|
+
await rm(target, {
|
|
25
33
|
recursive: options?.recursive ?? false,
|
|
26
34
|
force: options?.force ?? false,
|
|
27
35
|
});
|
|
28
36
|
},
|
|
29
37
|
async stat(path) {
|
|
30
|
-
const stats = await stat(path);
|
|
38
|
+
const stats = await stat(resolvePath(path));
|
|
31
39
|
return {
|
|
32
40
|
isFile: stats.isFile(),
|
|
33
41
|
isDirectory: stats.isDirectory(),
|
|
@@ -37,7 +45,9 @@ export function createNodeFileSystemContext(cwd, options = {}) {
|
|
|
37
45
|
};
|
|
38
46
|
},
|
|
39
47
|
async writeFile(path, content) {
|
|
40
|
-
|
|
48
|
+
const target = resolvePath(path);
|
|
49
|
+
await assertCanWritePath(cwd, target, permissionMode());
|
|
50
|
+
await writeFile(target, content);
|
|
41
51
|
},
|
|
42
52
|
};
|
|
43
53
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createSandboxedCommand.d.ts","sourceRoot":"","sources":["../../../sources/agent/context/createSandboxedCommand.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAKjE,wBAAsB,sBAAsB,CAAC,OAAO,EAAE;IAClD,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,cAAc,CAAC;CACxB,GAAG,OAAO,CAAC,MAAM,CAAC,CAoClB"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { createRequire } from "node:module";
|
|
3
|
+
import { mkdtemp, writeFile } from "node:fs/promises";
|
|
4
|
+
import { tmpdir } from "node:os";
|
|
5
|
+
import { dirname, join } from "node:path";
|
|
6
|
+
import { findGitWritablePaths } from "./findGitWritablePaths.js";
|
|
7
|
+
const require = createRequire(import.meta.url);
|
|
8
|
+
let configDirectoryPromise;
|
|
9
|
+
export async function createSandboxedCommand(options) {
|
|
10
|
+
if (options.mode === "full_access")
|
|
11
|
+
return options.command;
|
|
12
|
+
const writablePaths = [tmpdir()];
|
|
13
|
+
if (options.mode === "workspace_write" || options.mode === "auto") {
|
|
14
|
+
writablePaths.push(options.cwd);
|
|
15
|
+
writablePaths.push(...(await findGitWritablePaths(options.cwd)));
|
|
16
|
+
}
|
|
17
|
+
const config = {
|
|
18
|
+
network: { allowedDomains: [], deniedDomains: [] },
|
|
19
|
+
filesystem: {
|
|
20
|
+
denyRead: [],
|
|
21
|
+
allowRead: [],
|
|
22
|
+
allowWrite: writablePaths,
|
|
23
|
+
denyWrite: [],
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
configDirectoryPromise ??= mkdtemp(join(tmpdir(), "rig-sandbox-"));
|
|
27
|
+
const configDirectory = await configDirectoryPromise;
|
|
28
|
+
const key = createHash("sha256")
|
|
29
|
+
.update(`${options.cwd}\0${options.mode}`)
|
|
30
|
+
.digest("hex")
|
|
31
|
+
.slice(0, 20);
|
|
32
|
+
const configPath = join(configDirectory, `${key}.json`);
|
|
33
|
+
await writeFile(configPath, JSON.stringify(config), { mode: 0o600 });
|
|
34
|
+
const packageEntry = require.resolve("@anthropic-ai/sandbox-runtime");
|
|
35
|
+
const cliPath = join(dirname(packageEntry), "cli.js");
|
|
36
|
+
return [
|
|
37
|
+
shellQuote(process.execPath),
|
|
38
|
+
shellQuote(cliPath),
|
|
39
|
+
"--settings",
|
|
40
|
+
shellQuote(configPath),
|
|
41
|
+
"-c",
|
|
42
|
+
shellQuote(options.command),
|
|
43
|
+
].join(" ");
|
|
44
|
+
}
|
|
45
|
+
function shellQuote(value) {
|
|
46
|
+
return `'${value.replaceAll("'", `'"'"'`)}'`;
|
|
47
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"findGitWritablePaths.d.ts","sourceRoot":"","sources":["../../../sources/agent/context/findGitWritablePaths.ts"],"names":[],"mappings":"AAGA,wBAAsB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAwBlF"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { lstat, readFile, realpath } from "node:fs/promises";
|
|
2
|
+
import { dirname, join, parse, resolve, sep } from "node:path";
|
|
3
|
+
export async function findGitWritablePaths(cwd) {
|
|
4
|
+
const dotGit = await findDotGit(cwd);
|
|
5
|
+
if (dotGit === undefined)
|
|
6
|
+
return [];
|
|
7
|
+
const metadata = await lstat(dotGit);
|
|
8
|
+
if (metadata.isDirectory())
|
|
9
|
+
return [await realpath(dotGit)];
|
|
10
|
+
if (!metadata.isFile())
|
|
11
|
+
return [];
|
|
12
|
+
const contents = await readFile(dotGit, "utf8");
|
|
13
|
+
const match = /^gitdir:\s*(.+)\s*$/imu.exec(contents);
|
|
14
|
+
if (match?.[1] === undefined)
|
|
15
|
+
return [];
|
|
16
|
+
const gitDirectory = await realpath(resolve(dirname(dotGit), match[1]));
|
|
17
|
+
const parts = gitDirectory.split(sep);
|
|
18
|
+
const dotGitIndex = parts.lastIndexOf(".git");
|
|
19
|
+
const metadataKind = parts[dotGitIndex + 1];
|
|
20
|
+
if (dotGitIndex < 0 || (metadataKind !== "worktrees" && metadataKind !== "modules"))
|
|
21
|
+
return [];
|
|
22
|
+
if (metadataKind === "modules")
|
|
23
|
+
return [gitDirectory];
|
|
24
|
+
const commonDirectory = await findCommonGitDirectory(gitDirectory);
|
|
25
|
+
const expectedCommonDirectory = parts.slice(0, dotGitIndex + 1).join(sep) || sep;
|
|
26
|
+
return commonDirectory === expectedCommonDirectory
|
|
27
|
+
? [gitDirectory, commonDirectory]
|
|
28
|
+
: [gitDirectory];
|
|
29
|
+
}
|
|
30
|
+
async function findDotGit(cwd) {
|
|
31
|
+
let directory = resolve(cwd);
|
|
32
|
+
for (;;) {
|
|
33
|
+
const candidate = join(directory, ".git");
|
|
34
|
+
try {
|
|
35
|
+
await lstat(candidate);
|
|
36
|
+
return candidate;
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
const parent = dirname(directory);
|
|
40
|
+
if (parent === directory || directory === parse(directory).root)
|
|
41
|
+
return undefined;
|
|
42
|
+
directory = parent;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
async function findCommonGitDirectory(gitDirectory) {
|
|
47
|
+
try {
|
|
48
|
+
const commonDirectory = await realpath(resolve(gitDirectory, (await readFile(join(gitDirectory, "commondir"), "utf8")).trim()));
|
|
49
|
+
return commonDirectory;
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
return undefined;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isPathInsideWorkspace.d.ts","sourceRoot":"","sources":["../../../sources/agent/context/isPathInsideWorkspace.ts"],"names":[],"mappings":"AAKA,wBAAsB,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CASvF"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { realpath } from "node:fs/promises";
|
|
2
|
+
import { isAbsolute, resolve, sep } from "node:path";
|
|
3
|
+
import { resolvePotentialPath } from "./resolvePotentialPath.js";
|
|
4
|
+
export async function isPathInsideWorkspace(cwd, path) {
|
|
5
|
+
try {
|
|
6
|
+
const root = await realpath(cwd);
|
|
7
|
+
const target = isAbsolute(path) ? path : resolve(cwd, path);
|
|
8
|
+
const canonicalTarget = await resolvePotentialPath(target);
|
|
9
|
+
return canonicalTarget === root || canonicalTarget.startsWith(`${root}${sep}`);
|
|
10
|
+
}
|
|
11
|
+
catch {
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolvePotentialPath.d.ts","sourceRoot":"","sources":["../../../sources/agent/context/resolvePotentialPath.ts"],"names":[],"mappings":"AAGA,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,SAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAgC5F"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { lstat, readlink } from "node:fs/promises";
|
|
2
|
+
import { dirname, join, parse, resolve, sep } from "node:path";
|
|
3
|
+
export async function resolvePotentialPath(target, symlinkDepth = 0) {
|
|
4
|
+
if (symlinkDepth > 40)
|
|
5
|
+
throw new Error(`Cannot resolve symbolic link chain for ${target}.`);
|
|
6
|
+
const pathRoot = parse(target).root;
|
|
7
|
+
const parts = target.slice(pathRoot.length).split(sep).filter(Boolean);
|
|
8
|
+
let current = pathRoot;
|
|
9
|
+
for (let index = 0; index < parts.length; index += 1) {
|
|
10
|
+
const part = parts[index];
|
|
11
|
+
if (part === undefined)
|
|
12
|
+
continue;
|
|
13
|
+
const candidate = join(current, part);
|
|
14
|
+
try {
|
|
15
|
+
const metadata = await lstat(candidate);
|
|
16
|
+
if (metadata.isSymbolicLink()) {
|
|
17
|
+
const destination = resolve(dirname(candidate), await readlink(candidate));
|
|
18
|
+
return resolvePotentialPath(join(destination, ...parts.slice(index + 1)), symlinkDepth + 1);
|
|
19
|
+
}
|
|
20
|
+
current = candidate;
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
if (error instanceof Error &&
|
|
24
|
+
"code" in error &&
|
|
25
|
+
error.code === "ENOENT") {
|
|
26
|
+
return join(current, ...parts.slice(index));
|
|
27
|
+
}
|
|
28
|
+
throw error;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return current;
|
|
32
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createPermissionInstructions.d.ts","sourceRoot":"","sources":["../../sources/agent/createPermissionInstructions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAWzE"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export function createPermissionInstructions(mode) {
|
|
2
|
+
if (mode === "auto") {
|
|
3
|
+
return "You are in Auto mode. Routine reads and workspace edits run automatically. Permission-sensitive actions are reviewed automatically; low-risk actions proceed, while potentially unsafe actions require one-time user approval. Shell commands remain workspace-sandboxed unless you explicitly request escalation with the tool's sandbox option. Request escalation only when the sandbox blocks necessary work, and give a clear reason. Do not work around a denied permission or retry the same action unchanged.";
|
|
4
|
+
}
|
|
5
|
+
if (mode === "read_only") {
|
|
6
|
+
return "You are in Read only mode. You may inspect files and run non-mutating shell commands. File tools cannot make changes; shell commands may only write temporary files, and shell network access is blocked.";
|
|
7
|
+
}
|
|
8
|
+
if (mode === "workspace_write") {
|
|
9
|
+
return "You are in Workspace write mode. You may modify files inside the working directory. Shell writes outside it and shell network access are blocked.";
|
|
10
|
+
}
|
|
11
|
+
return "You are in Full access mode. Filesystem, shell, and network access are unrestricted.";
|
|
12
|
+
}
|
|
@@ -6,7 +6,7 @@ export function createSubagentInstructions(parentInstructions, depth, maxDepth)
|
|
|
6
6
|
return [
|
|
7
7
|
baseInstructions,
|
|
8
8
|
"You are a subagent working on one delegated step. Complete the task independently and return a concise result to the parent agent.",
|
|
9
|
-
"
|
|
9
|
+
"The parent agent may send follow-up work after this step. Continue from your existing context when it does.",
|
|
10
10
|
depth < maxDepth
|
|
11
11
|
? `You may delegate focused work to another subagent. The current depth is ${depth} of ${maxDepth}.`
|
|
12
12
|
: "You are at the maximum subagent depth and must complete the task directly.",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createSystemPrompt.d.ts","sourceRoot":"","sources":["../../sources/agent/createSystemPrompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"createSystemPrompt.d.ts","sourceRoot":"","sources":["../../sources/agent/createSystemPrompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAM9D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAE7D,MAAM,WAAW,yBAAyB;IACtC,QAAQ,EAAE,QAAQ,CAAC;IACnB,KAAK,EAAE,KAAK,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAC;IAC7B,OAAO,EAAE,YAAY,CAAC;CACzB;AAED,wBAAsB,kBAAkB,CACpC,OAAO,EAAE,yBAAyB,GACnC,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAgC7B"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { createPermissionInstructions } from "./createPermissionInstructions.js";
|
|
1
2
|
import { loadAgentsMdInstructions } from "./loadAgentsMdInstructions.js";
|
|
2
3
|
import { selectSystemPromptForModel } from "./selectSystemPromptForModel.js";
|
|
3
4
|
import { loadSkillInstructions } from "./skills/loadSkillInstructions.js";
|
|
@@ -24,5 +25,8 @@ export async function createSystemPrompt(options) {
|
|
|
24
25
|
if (skillInstructions !== undefined) {
|
|
25
26
|
parts.push(skillInstructions);
|
|
26
27
|
}
|
|
28
|
+
if (options.context.permissions !== undefined) {
|
|
29
|
+
parts.push(createPermissionInstructions(options.context.permissions.mode));
|
|
30
|
+
}
|
|
27
31
|
return parts.length > 0 ? parts.join("\n\n") : undefined;
|
|
28
32
|
}
|
package/dist/agent/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { Agent } from "./Agent.js";
|
|
2
|
-
export type { AgentOptions, AgentRunOptions, AgentRunResult, AgentSnapshot, AgentStatus, QueuedAgentMessage, } from "./Agent.js";
|
|
2
|
+
export type { AgentOptions, AgentCompactionResult, AgentRunOptions, AgentRunResult, AgentSnapshot, AgentStatus, QueuedAgentMessage, } from "./Agent.js";
|
|
3
3
|
export { runAgentLoop } from "./loop.js";
|
|
4
4
|
export type { AgentLoopEvent, AgentLoopResult, RunAgentLoopOptions } from "./loop.js";
|
|
5
5
|
export { createSystemPrompt } from "./createSystemPrompt.js";
|
|
@@ -20,9 +20,13 @@ export { selectToolsForModel } from "./selectToolsForModel.js";
|
|
|
20
20
|
export type { SelectToolsForModelOptions } from "./selectToolsForModel.js";
|
|
21
21
|
export type { AgentBlock, AgentMessage, AnyDefinedTool, ContentBlock, DefinedTool, ImageBlock, Message, SystemMessage, TextBlock, ThinkingBlock, ToolCallBlock, ToolResultBlock, UserMessage, } from "./types.js";
|
|
22
22
|
export type { AgentContext } from "./context/AgentContext.js";
|
|
23
|
-
export type {
|
|
23
|
+
export type { PermissionMode } from "../permissions/index.js";
|
|
24
|
+
export type { BashContext, BashRunOptions, BashRunResult, BashSessionReadOptions, BashSessionSnapshot, BashSessionStatus, } from "./context/BashContext.js";
|
|
24
25
|
export type { FileSystemContext, FileSystemStat } from "./context/FileSystemContext.js";
|
|
25
|
-
export type {
|
|
26
|
+
export type { GoalContext } from "./context/GoalContext.js";
|
|
27
|
+
export type { UserInputContext } from "./context/UserInputContext.js";
|
|
28
|
+
export type { TaskContext } from "./context/TaskContext.js";
|
|
29
|
+
export type { ManagedSubagent, SpawnSubagentRequest, SpawnSubagentResult, SubagentContext, SubagentRunStatus, WaitForSubagentResult, } from "./context/SubagentContext.js";
|
|
26
30
|
export { createJustBashAgentContext } from "./context/createJustBashAgentContext.js";
|
|
27
31
|
export { createJustBashBashContext } from "./context/createJustBashBashContext.js";
|
|
28
32
|
export { createJustBashFileSystemContext } from "./context/createJustBashFileSystemContext.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../sources/agent/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,YAAY,EACR,YAAY,EACZ,eAAe,EACf,cAAc,EACd,aAAa,EACb,WAAW,EACX,kBAAkB,GACrB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AACtF,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,YAAY,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,YAAY,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,YAAY,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,YAAY,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAC3E,YAAY,EACR,UAAU,EACV,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,WAAW,EACX,UAAU,EACV,OAAO,EACP,aAAa,EACb,SAAS,EACT,aAAa,EACb,aAAa,EACb,eAAe,EACf,WAAW,GACd,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../sources/agent/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,YAAY,EACR,YAAY,EACZ,qBAAqB,EACrB,eAAe,EACf,cAAc,EACd,aAAa,EACb,WAAW,EACX,kBAAkB,GACrB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AACtF,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,YAAY,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,YAAY,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,YAAY,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,YAAY,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAC3E,YAAY,EACR,UAAU,EACV,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,WAAW,EACX,UAAU,EACV,OAAO,EACP,aAAa,EACb,SAAS,EACT,aAAa,EACb,aAAa,EACb,eAAe,EACf,WAAW,GACd,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,YAAY,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,YAAY,EACR,WAAW,EACX,cAAc,EACd,aAAa,EACb,sBAAsB,EACtB,mBAAmB,EACnB,iBAAiB,GACpB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACxF,YAAY,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,YAAY,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACtE,YAAY,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,YAAY,EACR,eAAe,EACf,oBAAoB,EACpB,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,qBAAqB,GACxB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAC;AACrF,OAAO,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC;AACnF,OAAO,EAAE,+BAA+B,EAAE,MAAM,8CAA8C,CAAC;AAC/F,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,2BAA2B,EAAE,MAAM,0CAA0C,CAAC"}
|
package/dist/agent/loop.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { AgentContext } from "./context/AgentContext.js";
|
|
2
|
-
import type { AnyDefinedTool, Message } from "./types.js";
|
|
3
|
-
import type { AssistantMessageEvent, Provider, StopReason } from "../providers/types.js";
|
|
2
|
+
import type { AnyDefinedTool, Message, ToolResultBlock, UserMessage } from "./types.js";
|
|
3
|
+
import type { AssistantMessageEvent, Provider, StopReason, ToolCall as ProviderToolCall } from "../providers/types.js";
|
|
4
4
|
export interface RunAgentLoopOptions {
|
|
5
5
|
provider: Provider;
|
|
6
6
|
modelId: string;
|
|
@@ -8,20 +8,34 @@ export interface RunAgentLoopOptions {
|
|
|
8
8
|
tools: readonly AnyDefinedTool[];
|
|
9
9
|
instructions?: string;
|
|
10
10
|
messages: readonly Message[];
|
|
11
|
+
/** Model-facing history, when the visible transcript has been compacted. */
|
|
12
|
+
contextMessages?: readonly Message[];
|
|
11
13
|
signal?: AbortSignal;
|
|
12
14
|
sessionId?: string;
|
|
13
15
|
idFactory?: () => string;
|
|
14
16
|
now?: () => number;
|
|
15
17
|
onEvent?: (event: AgentLoopEvent) => void | Promise<void>;
|
|
16
18
|
onMessage?: (message: Message) => void | Promise<void>;
|
|
19
|
+
takeSteering?: () => readonly UserMessage[];
|
|
17
20
|
context: AgentContext;
|
|
18
21
|
}
|
|
19
22
|
export type AgentLoopEvent = AssistantMessageEvent | {
|
|
20
23
|
type: "inference_iteration_start";
|
|
21
24
|
iteration: number;
|
|
25
|
+
} | {
|
|
26
|
+
type: "tool_execution_start";
|
|
27
|
+
toolCall: ProviderToolCall;
|
|
28
|
+
} | {
|
|
29
|
+
type: "tool_execution_end";
|
|
30
|
+
result: Pick<ToolResultBlock, "display" | "isError" | "toolCallId" | "toolName" | "type">;
|
|
31
|
+
} | {
|
|
32
|
+
type: "tool_execution_progress";
|
|
33
|
+
display: string;
|
|
34
|
+
toolCallId: string;
|
|
22
35
|
};
|
|
23
36
|
export interface AgentLoopResult {
|
|
24
37
|
messages: readonly Message[];
|
|
38
|
+
contextMessages: readonly Message[];
|
|
25
39
|
stopReason: StopReason;
|
|
26
40
|
}
|
|
27
41
|
export declare function runAgentLoop(options: RunAgentLoopOptions): Promise<AgentLoopResult>;
|
package/dist/agent/loop.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../sources/agent/loop.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAK9D,OAAO,KAAK,EAGR,cAAc,EAEd,OAAO,
|
|
1
|
+
{"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../sources/agent/loop.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAK9D,OAAO,KAAK,EAGR,cAAc,EAEd,OAAO,EACP,eAAe,EACf,WAAW,EACd,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAGR,qBAAqB,EAIrB,QAAQ,EACR,UAAU,EAGV,QAAQ,IAAI,gBAAgB,EAK/B,MAAM,uBAAuB,CAAC;AAS/B,MAAM,WAAW,mBAAmB;IAChC,QAAQ,EAAE,QAAQ,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,SAAS,cAAc,EAAE,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAC;IAC7B,4EAA4E;IAC5E,eAAe,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IACrC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,MAAM,CAAC;IACzB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,YAAY,CAAC,EAAE,MAAM,SAAS,WAAW,EAAE,CAAC;IAC5C,OAAO,EAAE,YAAY,CAAC;CACzB;AAED,MAAM,MAAM,cAAc,GACpB,qBAAqB,GACrB;IACI,IAAI,EAAE,2BAA2B,CAAC;IAClC,SAAS,EAAE,MAAM,CAAC;CACrB,GACD;IACI,IAAI,EAAE,sBAAsB,CAAC;IAC7B,QAAQ,EAAE,gBAAgB,CAAC;CAC9B,GACD;IACI,IAAI,EAAE,oBAAoB,CAAC;IAC3B,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE,SAAS,GAAG,SAAS,GAAG,YAAY,GAAG,UAAU,GAAG,MAAM,CAAC,CAAC;CAC7F,GACD;IACI,IAAI,EAAE,yBAAyB,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACtB,CAAC;AAER,MAAM,WAAW,eAAe;IAC5B,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAC;IAC7B,eAAe,EAAE,SAAS,OAAO,EAAE,CAAC;IACpC,UAAU,EAAE,UAAU,CAAC;CAC1B;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,eAAe,CAAC,CAwOzF"}
|
package/dist/agent/loop.js
CHANGED
|
@@ -5,12 +5,14 @@ import { isInvalidImageRequestError } from "./isInvalidImageRequestError.js";
|
|
|
5
5
|
import { prepareProviderMessageImages } from "./prepareProviderMessageImages.js";
|
|
6
6
|
import { replaceLastTurnToolResultImages } from "./replaceLastTurnToolResultImages.js";
|
|
7
7
|
import { createSystemPrompt } from "./createSystemPrompt.js";
|
|
8
|
+
import { requestAutoPermissionApproval, reviewAutoPermission, shouldElevateToolInAutoMode, shouldReviewToolInAutoMode, summarizePermissionAction, } from "../permissions/index.js";
|
|
8
9
|
export async function runAgentLoop(options) {
|
|
9
10
|
const model = findModel(options.provider, options.modelId);
|
|
10
11
|
const idFactory = options.idFactory ?? createId;
|
|
11
12
|
const now = options.now ?? Date.now;
|
|
12
13
|
const transcript = [...options.messages];
|
|
13
|
-
const
|
|
14
|
+
const contextTranscript = [...(options.contextMessages ?? options.messages)];
|
|
15
|
+
const providerMessages = toProviderMessages(contextTranscript, {
|
|
14
16
|
model,
|
|
15
17
|
now,
|
|
16
18
|
providerId: options.provider.id,
|
|
@@ -19,7 +21,7 @@ export async function runAgentLoop(options) {
|
|
|
19
21
|
provider: options.provider,
|
|
20
22
|
model,
|
|
21
23
|
...(options.instructions !== undefined ? { instructions: options.instructions } : {}),
|
|
22
|
-
messages:
|
|
24
|
+
messages: contextTranscript,
|
|
23
25
|
context: options.context,
|
|
24
26
|
});
|
|
25
27
|
const providerTools = options.tools.map(toProviderTool);
|
|
@@ -28,7 +30,11 @@ export async function runAgentLoop(options) {
|
|
|
28
30
|
let iteration = 0;
|
|
29
31
|
for (;;) {
|
|
30
32
|
if (options.signal?.aborted) {
|
|
31
|
-
return {
|
|
33
|
+
return {
|
|
34
|
+
messages: transcript,
|
|
35
|
+
contextMessages: contextTranscript,
|
|
36
|
+
stopReason: "aborted",
|
|
37
|
+
};
|
|
32
38
|
}
|
|
33
39
|
iteration += 1;
|
|
34
40
|
await options.onEvent?.({
|
|
@@ -60,12 +66,17 @@ export async function runAgentLoop(options) {
|
|
|
60
66
|
}
|
|
61
67
|
catch (error) {
|
|
62
68
|
if (options.signal?.aborted) {
|
|
63
|
-
return {
|
|
69
|
+
return {
|
|
70
|
+
messages: transcript,
|
|
71
|
+
contextMessages: contextTranscript,
|
|
72
|
+
stopReason: "aborted",
|
|
73
|
+
};
|
|
64
74
|
}
|
|
65
75
|
if (isInvalidImageRequestError(error)) {
|
|
66
76
|
const replacements = replaceLastTurnToolResultImages(transcript, "Invalid image");
|
|
67
77
|
if (replacements.length > 0) {
|
|
68
|
-
|
|
78
|
+
replaceLastTurnToolResultImages(contextTranscript, "Invalid image");
|
|
79
|
+
providerMessages.splice(0, providerMessages.length, ...toProviderMessages(contextTranscript, {
|
|
69
80
|
model,
|
|
70
81
|
now,
|
|
71
82
|
providerId: options.provider.id,
|
|
@@ -81,7 +92,8 @@ export async function runAgentLoop(options) {
|
|
|
81
92
|
if (isInvalidImageRequestError(assistantMessage)) {
|
|
82
93
|
const replacements = replaceLastTurnToolResultImages(transcript, "Invalid image");
|
|
83
94
|
if (replacements.length > 0) {
|
|
84
|
-
|
|
95
|
+
replaceLastTurnToolResultImages(contextTranscript, "Invalid image");
|
|
96
|
+
providerMessages.splice(0, providerMessages.length, ...toProviderMessages(contextTranscript, {
|
|
85
97
|
model,
|
|
86
98
|
now,
|
|
87
99
|
providerId: options.provider.id,
|
|
@@ -101,34 +113,77 @@ export async function runAgentLoop(options) {
|
|
|
101
113
|
providerMessages.push(assistantMessage);
|
|
102
114
|
const agentMessage = assistantMessageToAgentMessage(assistantMessage, idFactory);
|
|
103
115
|
transcript.push(agentMessage);
|
|
116
|
+
contextTranscript.push(agentMessage);
|
|
104
117
|
await options.onMessage?.(agentMessage);
|
|
105
|
-
if (assistantMessage.stopReason === "aborted" ||
|
|
106
|
-
assistantMessage.stopReason === "error" ||
|
|
107
|
-
assistantMessage.stopReason !== "toolUse") {
|
|
118
|
+
if (assistantMessage.stopReason === "aborted" || assistantMessage.stopReason === "error") {
|
|
108
119
|
return {
|
|
109
120
|
messages: transcript,
|
|
121
|
+
contextMessages: contextTranscript,
|
|
122
|
+
stopReason: assistantMessage.stopReason,
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
if (assistantMessage.stopReason !== "toolUse") {
|
|
126
|
+
if (appendSteering(options, transcript, contextTranscript, providerMessages, now) > 0) {
|
|
127
|
+
continue;
|
|
128
|
+
}
|
|
129
|
+
return {
|
|
130
|
+
messages: transcript,
|
|
131
|
+
contextMessages: contextTranscript,
|
|
110
132
|
stopReason: assistantMessage.stopReason,
|
|
111
133
|
};
|
|
112
134
|
}
|
|
113
135
|
const toolCalls = assistantMessage.content.filter(isProviderToolCall);
|
|
114
136
|
if (toolCalls.length === 0) {
|
|
115
|
-
return {
|
|
137
|
+
return {
|
|
138
|
+
messages: transcript,
|
|
139
|
+
contextMessages: contextTranscript,
|
|
140
|
+
stopReason: assistantMessage.stopReason,
|
|
141
|
+
};
|
|
116
142
|
}
|
|
117
143
|
if (options.signal?.aborted) {
|
|
118
144
|
return appendInterruptedToolResults({
|
|
119
145
|
toolCalls,
|
|
120
146
|
transcript,
|
|
147
|
+
contextTranscript,
|
|
121
148
|
providerMessages,
|
|
122
149
|
idFactory,
|
|
123
150
|
now,
|
|
124
151
|
onMessage: options.onMessage,
|
|
125
152
|
});
|
|
126
153
|
}
|
|
127
|
-
const toolResultBlocks = await Promise.all(toolCalls.map((toolCall) =>
|
|
154
|
+
const toolResultBlocks = await Promise.all(toolCalls.map(async (toolCall) => {
|
|
155
|
+
await options.onEvent?.({ type: "tool_execution_start", toolCall });
|
|
156
|
+
const result = await executeToolCall(toolCall, toolsByName, toolContext, {
|
|
157
|
+
messages: contextTranscript,
|
|
158
|
+
model,
|
|
159
|
+
now,
|
|
160
|
+
onProgress: (display) => {
|
|
161
|
+
void options.onEvent?.({
|
|
162
|
+
type: "tool_execution_progress",
|
|
163
|
+
display,
|
|
164
|
+
toolCallId: toolCall.id,
|
|
165
|
+
});
|
|
166
|
+
},
|
|
167
|
+
provider: options.provider,
|
|
168
|
+
...(options.signal === undefined ? {} : { signal: options.signal }),
|
|
169
|
+
});
|
|
170
|
+
await options.onEvent?.({
|
|
171
|
+
type: "tool_execution_end",
|
|
172
|
+
result: {
|
|
173
|
+
type: "tool_result",
|
|
174
|
+
toolCallId: result.toolCallId,
|
|
175
|
+
toolName: result.toolName,
|
|
176
|
+
display: result.display,
|
|
177
|
+
...(result.isError === undefined ? {} : { isError: result.isError }),
|
|
178
|
+
},
|
|
179
|
+
});
|
|
180
|
+
return result;
|
|
181
|
+
}));
|
|
128
182
|
if (options.signal?.aborted) {
|
|
129
183
|
return appendInterruptedToolResults({
|
|
130
184
|
toolCalls,
|
|
131
185
|
transcript,
|
|
186
|
+
contextTranscript,
|
|
132
187
|
providerMessages,
|
|
133
188
|
idFactory,
|
|
134
189
|
now,
|
|
@@ -144,9 +199,20 @@ export async function runAgentLoop(options) {
|
|
|
144
199
|
blocks: toolResultBlocks,
|
|
145
200
|
};
|
|
146
201
|
transcript.push(toolResultMessage);
|
|
202
|
+
contextTranscript.push(toolResultMessage);
|
|
147
203
|
await options.onMessage?.(toolResultMessage);
|
|
204
|
+
appendSteering(options, transcript, contextTranscript, providerMessages, now);
|
|
148
205
|
}
|
|
149
206
|
}
|
|
207
|
+
function appendSteering(options, transcript, contextTranscript, providerMessages, now) {
|
|
208
|
+
const steering = options.takeSteering?.() ?? [];
|
|
209
|
+
for (const message of steering) {
|
|
210
|
+
transcript.push(message);
|
|
211
|
+
contextTranscript.push(message);
|
|
212
|
+
providerMessages.push(toProviderUserMessage(message, now));
|
|
213
|
+
}
|
|
214
|
+
return steering.length;
|
|
215
|
+
}
|
|
150
216
|
async function appendInterruptedToolResults(options) {
|
|
151
217
|
const toolResultBlocks = options.toolCalls.map(interruptedToolResultBlock);
|
|
152
218
|
for (const resultBlock of toolResultBlocks) {
|
|
@@ -158,9 +224,11 @@ async function appendInterruptedToolResults(options) {
|
|
|
158
224
|
blocks: toolResultBlocks,
|
|
159
225
|
};
|
|
160
226
|
options.transcript.push(toolResultMessage);
|
|
227
|
+
options.contextTranscript.push(toolResultMessage);
|
|
161
228
|
await options.onMessage?.(toolResultMessage);
|
|
162
229
|
return {
|
|
163
230
|
messages: options.transcript,
|
|
231
|
+
contextMessages: options.contextTranscript,
|
|
164
232
|
stopReason: "aborted",
|
|
165
233
|
};
|
|
166
234
|
}
|
|
@@ -294,7 +362,7 @@ function toProviderToolResultMessage(block, now) {
|
|
|
294
362
|
timestamp: now(),
|
|
295
363
|
};
|
|
296
364
|
}
|
|
297
|
-
async function executeToolCall(toolCall, toolsByName, context,
|
|
365
|
+
async function executeToolCall(toolCall, toolsByName, context, options) {
|
|
298
366
|
const tool = toolsByName.get(toolCall.name);
|
|
299
367
|
if (!tool) {
|
|
300
368
|
return errorToolResultBlock(toolCall, `Unknown tool '${toolCall.name}' requested by model`);
|
|
@@ -303,15 +371,47 @@ async function executeToolCall(toolCall, toolsByName, context, signal) {
|
|
|
303
371
|
return errorToolResultBlock(toolCall, `Invalid arguments for tool '${tool.name}'`);
|
|
304
372
|
}
|
|
305
373
|
try {
|
|
374
|
+
let runWithFullAccess = false;
|
|
375
|
+
if (context.permissions?.mode === "auto" &&
|
|
376
|
+
(await shouldReviewToolInAutoMode(tool.name, toolCall.arguments, context.fs.cwd))) {
|
|
377
|
+
const review = await reviewAutoPermission({
|
|
378
|
+
args: toolCall.arguments,
|
|
379
|
+
messages: options.messages,
|
|
380
|
+
model: options.model,
|
|
381
|
+
now: options.now,
|
|
382
|
+
provider: options.provider,
|
|
383
|
+
...(options.signal === undefined ? {} : { signal: options.signal }),
|
|
384
|
+
toolName: tool.name,
|
|
385
|
+
});
|
|
386
|
+
if (review.decision === "ask") {
|
|
387
|
+
const action = summarizePermissionAction(tool.name, toolCall.arguments);
|
|
388
|
+
const approved = await requestAutoPermissionApproval({
|
|
389
|
+
action,
|
|
390
|
+
reason: review.reason,
|
|
391
|
+
...(options.signal === undefined ? {} : { signal: options.signal }),
|
|
392
|
+
toolCallId: toolCall.id,
|
|
393
|
+
userInput: context.userInput,
|
|
394
|
+
});
|
|
395
|
+
if (!approved) {
|
|
396
|
+
return errorToolResultBlock(toolCall, `Auto mode did not approve ${action}. Reason: ${review.reason}`);
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
runWithFullAccess = await shouldElevateToolInAutoMode(tool.name, toolCall.arguments, context.fs.cwd);
|
|
400
|
+
}
|
|
306
401
|
const execute = tool.execute;
|
|
307
402
|
const toLLM = tool.toLLM;
|
|
308
403
|
const toUI = tool.toUI;
|
|
309
404
|
const executionOptions = {
|
|
310
405
|
toolCallId: toolCall.id,
|
|
311
406
|
};
|
|
312
|
-
if (
|
|
313
|
-
executionOptions.
|
|
314
|
-
|
|
407
|
+
if (options.onProgress !== undefined)
|
|
408
|
+
executionOptions.onProgress = options.onProgress;
|
|
409
|
+
if (options.signal !== undefined)
|
|
410
|
+
executionOptions.signal = options.signal;
|
|
411
|
+
const run = () => execute(toolCall.arguments, context, executionOptions);
|
|
412
|
+
const result = runWithFullAccess && context.permissions !== undefined
|
|
413
|
+
? await context.permissions.runWithMode("full_access", run)
|
|
414
|
+
: await run();
|
|
315
415
|
return {
|
|
316
416
|
type: "tool_result",
|
|
317
417
|
toolCallId: toolCall.id,
|