@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
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { formatMessagesForCompaction } from "./formatMessagesForCompaction.js";
|
|
2
|
+
const COMPACTION_SYSTEM_PROMPT = `Create a detailed continuation brief for a coding agent that will continue this conversation without access to the original history.
|
|
3
|
+
|
|
4
|
+
Preserve the user's requests and constraints, important technical facts, decisions and rationale, files examined or changed, concrete edits, commands and test results, errors and fixes, and all unfinished work. Distinguish completed work from pending work. Include exact identifiers, paths, and short code fragments when they are needed to continue accurately. Do not continue the work or address the user. Return only the continuation brief.`;
|
|
5
|
+
export async function requestCompactionSummary(options) {
|
|
6
|
+
const streamOptions = {};
|
|
7
|
+
if (options.effort !== undefined)
|
|
8
|
+
streamOptions.thinking = options.effort;
|
|
9
|
+
if (options.signal !== undefined)
|
|
10
|
+
streamOptions.signal = options.signal;
|
|
11
|
+
const stream = options.provider.stream(options.model, {
|
|
12
|
+
systemPrompt: COMPACTION_SYSTEM_PROMPT,
|
|
13
|
+
messages: [
|
|
14
|
+
{
|
|
15
|
+
role: "user",
|
|
16
|
+
content: formatMessagesForCompaction(options.messages),
|
|
17
|
+
timestamp: options.now(),
|
|
18
|
+
},
|
|
19
|
+
],
|
|
20
|
+
tools: [],
|
|
21
|
+
}, streamOptions);
|
|
22
|
+
for await (const _event of stream) {
|
|
23
|
+
if (options.signal?.aborted) {
|
|
24
|
+
throw new Error("Conversation compaction was stopped.");
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
const response = await stream.result();
|
|
28
|
+
if (response.stopReason === "aborted") {
|
|
29
|
+
throw new Error("Conversation compaction was stopped.");
|
|
30
|
+
}
|
|
31
|
+
if (response.stopReason === "error") {
|
|
32
|
+
throw new Error(response.errorMessage ?? "The model could not compact this conversation.");
|
|
33
|
+
}
|
|
34
|
+
const summary = response.content
|
|
35
|
+
.filter((block) => block.type === "text")
|
|
36
|
+
.map((block) => block.text)
|
|
37
|
+
.join("\n")
|
|
38
|
+
.trim();
|
|
39
|
+
if (summary.length === 0) {
|
|
40
|
+
throw new Error("The model returned an empty conversation summary.");
|
|
41
|
+
}
|
|
42
|
+
return summary;
|
|
43
|
+
}
|
|
@@ -1,9 +1,17 @@
|
|
|
1
1
|
import type { BashContext } from "./BashContext.js";
|
|
2
2
|
import type { FileSystemContext } from "./FileSystemContext.js";
|
|
3
|
+
import type { GoalContext } from "./GoalContext.js";
|
|
3
4
|
import type { SubagentContext } from "./SubagentContext.js";
|
|
5
|
+
import type { UserInputContext } from "./UserInputContext.js";
|
|
6
|
+
import type { TaskContext } from "./TaskContext.js";
|
|
7
|
+
import type { PermissionContext } from "../../permissions/index.js";
|
|
4
8
|
export interface AgentContext {
|
|
5
9
|
fs: FileSystemContext;
|
|
6
10
|
bash: BashContext;
|
|
11
|
+
goals?: GoalContext;
|
|
12
|
+
permissions?: PermissionContext;
|
|
7
13
|
subagents?: SubagentContext;
|
|
14
|
+
tasks?: TaskContext;
|
|
15
|
+
userInput?: UserInputContext;
|
|
8
16
|
}
|
|
9
17
|
//# sourceMappingURL=AgentContext.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentContext.d.ts","sourceRoot":"","sources":["../../../sources/agent/context/AgentContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"AgentContext.d.ts","sourceRoot":"","sources":["../../../sources/agent/context/AgentContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAEpE,MAAM,WAAW,YAAY;IACzB,EAAE,EAAE,iBAAiB,CAAC;IACtB,IAAI,EAAE,WAAW,CAAC;IAClB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,SAAS,CAAC,EAAE,gBAAgB,CAAC;CAChC"}
|
|
@@ -3,6 +3,7 @@ export interface BashRunOptions {
|
|
|
3
3
|
cwd?: string;
|
|
4
4
|
timeoutMs?: number;
|
|
5
5
|
maxOutputBytes?: number;
|
|
6
|
+
shell?: string;
|
|
6
7
|
signal?: AbortSignal;
|
|
7
8
|
}
|
|
8
9
|
export interface BashRunResult {
|
|
@@ -11,8 +12,30 @@ export interface BashRunResult {
|
|
|
11
12
|
exitCode: number | null;
|
|
12
13
|
timedOut: boolean;
|
|
13
14
|
}
|
|
15
|
+
export type BashSessionStatus = "completed" | "killed" | "running";
|
|
16
|
+
export interface BashSessionSnapshot {
|
|
17
|
+
command: string;
|
|
18
|
+
cwd: string;
|
|
19
|
+
exitCode: number | null;
|
|
20
|
+
sessionId: number;
|
|
21
|
+
status: BashSessionStatus;
|
|
22
|
+
stderr: string;
|
|
23
|
+
stderrDelta: string;
|
|
24
|
+
stdout: string;
|
|
25
|
+
stdoutDelta: string;
|
|
26
|
+
timedOut: boolean;
|
|
27
|
+
}
|
|
28
|
+
export interface BashSessionReadOptions {
|
|
29
|
+
signal?: AbortSignal;
|
|
30
|
+
waitMs?: number;
|
|
31
|
+
}
|
|
14
32
|
export interface BashContext {
|
|
15
33
|
cwd: string;
|
|
34
|
+
killSession(sessionId: number): Promise<BashSessionSnapshot | undefined>;
|
|
35
|
+
readSession(sessionId: number, options?: BashSessionReadOptions): Promise<BashSessionSnapshot | undefined>;
|
|
16
36
|
run(options: BashRunOptions): Promise<BashRunResult>;
|
|
37
|
+
startSession(options: Omit<BashRunOptions, "signal">): Promise<number>;
|
|
38
|
+
supportsSessionInput: boolean;
|
|
39
|
+
writeSession(sessionId: number, data: string | Uint8Array): Promise<boolean>;
|
|
17
40
|
}
|
|
18
41
|
//# sourceMappingURL=BashContext.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BashContext.d.ts","sourceRoot":"","sources":["../../../sources/agent/context/BashContext.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,WAAW,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"BashContext.d.ts","sourceRoot":"","sources":["../../../sources/agent/context/BashContext.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,WAAW,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEnE,MAAM,WAAW,mBAAmB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,sBAAsB;IACnC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC,CAAC;IACzE,WAAW,CACP,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,sBAAsB,GACjC,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC,CAAC;IAC5C,GAAG,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACrD,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACvE,oBAAoB,EAAE,OAAO,CAAC;IAC9B,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAChF"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { CreateGoalRequest, GoalStatus, SessionGoal } from "../../goals/index.js";
|
|
2
|
+
export interface GoalContext {
|
|
3
|
+
create(request: CreateGoalRequest): SessionGoal;
|
|
4
|
+
get(): SessionGoal | undefined;
|
|
5
|
+
update(status: Extract<GoalStatus, "blocked" | "complete">): SessionGoal;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=GoalContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GoalContext.d.ts","sourceRoot":"","sources":["../../../sources/agent/context/GoalContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEvF,MAAM,WAAW,WAAW;IACxB,MAAM,CAAC,OAAO,EAAE,iBAAiB,GAAG,WAAW,CAAC;IAChD,GAAG,IAAI,WAAW,GAAG,SAAS,CAAC;IAC/B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,EAAE,SAAS,GAAG,UAAU,CAAC,GAAG,WAAW,CAAC;CAC5E"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,18 +1,37 @@
|
|
|
1
|
-
export type SubagentRunStatus = "aborted" | "completed" | "error";
|
|
1
|
+
export type SubagentRunStatus = "aborted" | "completed" | "error" | "running";
|
|
2
|
+
export interface ManagedSubagent {
|
|
3
|
+
description: string;
|
|
4
|
+
path: string;
|
|
5
|
+
sessionId: string;
|
|
6
|
+
status: SubagentRunStatus;
|
|
7
|
+
taskName: string;
|
|
8
|
+
}
|
|
2
9
|
export interface SpawnSubagentRequest {
|
|
10
|
+
background?: boolean;
|
|
3
11
|
description: string;
|
|
4
12
|
parentToolCallId?: string;
|
|
5
13
|
prompt: string;
|
|
14
|
+
taskName?: string;
|
|
6
15
|
}
|
|
7
16
|
export interface SpawnSubagentResult {
|
|
8
17
|
output: string;
|
|
18
|
+
path: string;
|
|
9
19
|
sessionId: string;
|
|
10
20
|
status: SubagentRunStatus;
|
|
21
|
+
taskName: string;
|
|
22
|
+
}
|
|
23
|
+
export interface WaitForSubagentResult {
|
|
24
|
+
agents: readonly ManagedSubagent[];
|
|
25
|
+
timedOut: boolean;
|
|
11
26
|
}
|
|
12
27
|
export interface SubagentContext {
|
|
13
28
|
canSpawn: boolean;
|
|
14
29
|
depth: number;
|
|
30
|
+
followUp(target: string, message: string): ManagedSubagent;
|
|
31
|
+
interrupt(target: string): ManagedSubagent;
|
|
32
|
+
list(pathPrefix?: string): readonly ManagedSubagent[];
|
|
15
33
|
maxDepth: number;
|
|
16
34
|
spawn(request: SpawnSubagentRequest, signal?: AbortSignal): Promise<SpawnSubagentResult>;
|
|
35
|
+
wait(timeoutMs?: number, signal?: AbortSignal): Promise<WaitForSubagentResult>;
|
|
17
36
|
}
|
|
18
37
|
//# sourceMappingURL=SubagentContext.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SubagentContext.d.ts","sourceRoot":"","sources":["../../../sources/agent/context/SubagentContext.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,WAAW,GAAG,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"SubagentContext.d.ts","sourceRoot":"","sources":["../../../sources/agent/context/SubagentContext.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,WAAW,GAAG,OAAO,GAAG,SAAS,CAAC;AAE9E,MAAM,WAAW,eAAe;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACjC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IAClC,MAAM,EAAE,SAAS,eAAe,EAAE,CAAC;IACnC,QAAQ,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC5B,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,eAAe,CAAC;IAC3D,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,CAAC;IAC3C,IAAI,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,eAAe,EAAE,CAAC;IACtD,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,OAAO,EAAE,oBAAoB,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACzF,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;CAClF"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { CreateTaskRequest, SessionTask, UpdateTaskRequest, UpdateTaskResult } from "../../tasks/index.js";
|
|
2
|
+
export interface TaskContext {
|
|
3
|
+
create(request: CreateTaskRequest): SessionTask;
|
|
4
|
+
get(taskId: string): SessionTask | undefined;
|
|
5
|
+
list(): readonly SessionTask[];
|
|
6
|
+
update(taskId: string, request: UpdateTaskRequest): UpdateTaskResult;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=TaskContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TaskContext.d.ts","sourceRoot":"","sources":["../../../sources/agent/context/TaskContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,iBAAiB,EACjB,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EACnB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,WAAW,WAAW;IACxB,MAAM,CAAC,OAAO,EAAE,iBAAiB,GAAG,WAAW,CAAC;IAChD,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAAC;IAC7C,IAAI,IAAI,SAAS,WAAW,EAAE,CAAC;IAC/B,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,gBAAgB,CAAC;CACxE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { UserInputRequest, UserInputResponse } from "../../user-input/index.js";
|
|
2
|
+
export interface UserInputContext {
|
|
3
|
+
request(request: UserInputRequest, options?: {
|
|
4
|
+
signal?: AbortSignal;
|
|
5
|
+
}): Promise<UserInputResponse>;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=UserInputContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UserInputContext.d.ts","sourceRoot":"","sources":["../../../sources/agent/context/UserInputContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAErF,MAAM,WAAW,gBAAgB;IAC7B,OAAO,CACH,OAAO,EAAE,gBAAgB,EACzB,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GACnC,OAAO,CAAC,iBAAiB,CAAC,CAAC;CACjC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assertCanWritePath.d.ts","sourceRoot":"","sources":["../../../sources/agent/context/assertCanWritePath.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEjE,wBAAsB,kBAAkB,CACpC,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,cAAc,GACrB,OAAO,CAAC,IAAI,CAAC,CAWf"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { isPathInsideWorkspace } from "./isPathInsideWorkspace.js";
|
|
2
|
+
export async function assertCanWritePath(cwd, targetPath, mode) {
|
|
3
|
+
if (mode === "full_access")
|
|
4
|
+
return;
|
|
5
|
+
if (mode === "read_only") {
|
|
6
|
+
throw new Error("File changes are disabled in read-only mode.");
|
|
7
|
+
}
|
|
8
|
+
if (!(await isPathInsideWorkspace(cwd, targetPath))) {
|
|
9
|
+
throw new Error(`Workspace write mode cannot modify files outside the working directory: ${cwd}.`);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createJustBashBashContext.d.ts","sourceRoot":"","sources":["../../../sources/agent/context/createJustBashBashContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,KAAK,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"createJustBashBashContext.d.ts","sourceRoot":"","sources":["../../../sources/agent/context/createJustBashBashContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,KAAK,EAAE,WAAW,EAAsC,MAAM,kBAAkB,CAAC;AAoBxF,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG,WAAW,CA0J9E"}
|
|
@@ -1,7 +1,73 @@
|
|
|
1
1
|
import { capOutput } from "./capOutput.js";
|
|
2
|
+
const MAX_RETAINED_SESSIONS = 64;
|
|
2
3
|
export function createJustBashBashContext(bash, cwd) {
|
|
4
|
+
const sessions = new Map();
|
|
5
|
+
let nextSessionId = 1;
|
|
6
|
+
const trimSessions = () => {
|
|
7
|
+
while (sessions.size > MAX_RETAINED_SESSIONS) {
|
|
8
|
+
const completed = [...sessions.values()].find((session) => session.result !== undefined);
|
|
9
|
+
if (completed === undefined)
|
|
10
|
+
return;
|
|
11
|
+
sessions.delete(completed.sessionId);
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
const readSession = async (sessionId, readOptions = {}) => {
|
|
15
|
+
const session = sessions.get(sessionId);
|
|
16
|
+
if (session === undefined)
|
|
17
|
+
return undefined;
|
|
18
|
+
const waitMs = Math.max(0, readOptions.waitMs ?? 0);
|
|
19
|
+
if (session.result === undefined && waitMs > 0 && !readOptions.signal?.aborted) {
|
|
20
|
+
await new Promise((resolveWait) => {
|
|
21
|
+
let settled = false;
|
|
22
|
+
let timer;
|
|
23
|
+
const finish = () => {
|
|
24
|
+
if (settled)
|
|
25
|
+
return;
|
|
26
|
+
settled = true;
|
|
27
|
+
if (timer !== undefined)
|
|
28
|
+
clearTimeout(timer);
|
|
29
|
+
readOptions.signal?.removeEventListener("abort", finish);
|
|
30
|
+
resolveWait();
|
|
31
|
+
};
|
|
32
|
+
timer = setTimeout(finish, waitMs);
|
|
33
|
+
readOptions.signal?.addEventListener("abort", finish, { once: true });
|
|
34
|
+
void session.completion.then(finish);
|
|
35
|
+
if (readOptions.signal?.aborted)
|
|
36
|
+
finish();
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
const result = session.result;
|
|
40
|
+
const stdout = result?.stdout ?? "";
|
|
41
|
+
const stderr = result?.stderr ?? "";
|
|
42
|
+
const stdoutDelta = stdout.slice(session.stdoutOffset);
|
|
43
|
+
const stderrDelta = stderr.slice(session.stderrOffset);
|
|
44
|
+
session.stdoutOffset = stdout.length;
|
|
45
|
+
session.stderrOffset = stderr.length;
|
|
46
|
+
return {
|
|
47
|
+
command: session.command,
|
|
48
|
+
cwd: session.cwd,
|
|
49
|
+
exitCode: result?.exitCode ?? null,
|
|
50
|
+
sessionId,
|
|
51
|
+
status: result === undefined ? "running" : session.killed ? "killed" : "completed",
|
|
52
|
+
stderr,
|
|
53
|
+
stderrDelta,
|
|
54
|
+
stdout,
|
|
55
|
+
stdoutDelta,
|
|
56
|
+
timedOut: session.timedOut,
|
|
57
|
+
};
|
|
58
|
+
};
|
|
3
59
|
return {
|
|
4
60
|
cwd,
|
|
61
|
+
async killSession(sessionId) {
|
|
62
|
+
const session = sessions.get(sessionId);
|
|
63
|
+
if (session === undefined)
|
|
64
|
+
return undefined;
|
|
65
|
+
session.killed = true;
|
|
66
|
+
session.controller.abort();
|
|
67
|
+
await session.completion;
|
|
68
|
+
return readSession(sessionId);
|
|
69
|
+
},
|
|
70
|
+
readSession,
|
|
5
71
|
async run(runOptions) {
|
|
6
72
|
const controller = new AbortController();
|
|
7
73
|
const timeout = runOptions.timeoutMs === undefined
|
|
@@ -27,5 +93,66 @@ export function createJustBashBashContext(bash, cwd) {
|
|
|
27
93
|
runOptions.signal?.removeEventListener("abort", abort);
|
|
28
94
|
}
|
|
29
95
|
},
|
|
96
|
+
async startSession(runOptions) {
|
|
97
|
+
const controller = new AbortController();
|
|
98
|
+
const sessionId = nextSessionId;
|
|
99
|
+
nextSessionId += 1;
|
|
100
|
+
const session = {
|
|
101
|
+
command: runOptions.command,
|
|
102
|
+
completion: Promise.resolve({
|
|
103
|
+
exitCode: null,
|
|
104
|
+
stderr: "",
|
|
105
|
+
stdout: "",
|
|
106
|
+
timedOut: false,
|
|
107
|
+
}),
|
|
108
|
+
controller,
|
|
109
|
+
cwd: runOptions.cwd ?? cwd,
|
|
110
|
+
killed: false,
|
|
111
|
+
...(runOptions.maxOutputBytes === undefined
|
|
112
|
+
? {}
|
|
113
|
+
: { maxOutputBytes: runOptions.maxOutputBytes }),
|
|
114
|
+
sessionId,
|
|
115
|
+
stderrOffset: 0,
|
|
116
|
+
stdoutOffset: 0,
|
|
117
|
+
timedOut: false,
|
|
118
|
+
};
|
|
119
|
+
session.completion = bash
|
|
120
|
+
.exec(runOptions.command, {
|
|
121
|
+
cwd: session.cwd,
|
|
122
|
+
signal: controller.signal,
|
|
123
|
+
})
|
|
124
|
+
.then((result) => ({
|
|
125
|
+
stdout: capOutput(result.stdout, session.maxOutputBytes),
|
|
126
|
+
stderr: capOutput(result.stderr, session.maxOutputBytes),
|
|
127
|
+
exitCode: result.exitCode,
|
|
128
|
+
timedOut: session.timedOut,
|
|
129
|
+
}))
|
|
130
|
+
.catch((error) => ({
|
|
131
|
+
stdout: "",
|
|
132
|
+
stderr: error instanceof Error ? error.message : String(error),
|
|
133
|
+
exitCode: null,
|
|
134
|
+
timedOut: session.timedOut,
|
|
135
|
+
}));
|
|
136
|
+
sessions.set(sessionId, session);
|
|
137
|
+
if (runOptions.timeoutMs !== undefined) {
|
|
138
|
+
session.timeout = setTimeout(() => {
|
|
139
|
+
session.timedOut = true;
|
|
140
|
+
session.killed = true;
|
|
141
|
+
controller.abort();
|
|
142
|
+
}, runOptions.timeoutMs);
|
|
143
|
+
}
|
|
144
|
+
void session.completion.then((result) => {
|
|
145
|
+
session.result = result;
|
|
146
|
+
if (session.timeout !== undefined)
|
|
147
|
+
clearTimeout(session.timeout);
|
|
148
|
+
trimSessions();
|
|
149
|
+
});
|
|
150
|
+
trimSessions();
|
|
151
|
+
return sessionId;
|
|
152
|
+
},
|
|
153
|
+
supportsSessionInput: false,
|
|
154
|
+
async writeSession() {
|
|
155
|
+
return false;
|
|
156
|
+
},
|
|
30
157
|
};
|
|
31
158
|
}
|
|
@@ -1,8 +1,16 @@
|
|
|
1
1
|
import type { NativeProxessManager } from "../../processes/index.js";
|
|
2
2
|
import type { AgentContext } from "./AgentContext.js";
|
|
3
|
+
import type { GoalContext } from "./GoalContext.js";
|
|
4
|
+
import type { UserInputContext } from "./UserInputContext.js";
|
|
5
|
+
import type { TaskContext } from "./TaskContext.js";
|
|
6
|
+
import { type PermissionMode } from "../../permissions/index.js";
|
|
3
7
|
export interface CreateNodeAgentContextOptions {
|
|
4
8
|
cwd: string;
|
|
9
|
+
goals?: GoalContext;
|
|
5
10
|
processManager: NativeProxessManager;
|
|
11
|
+
permissionMode?: PermissionMode;
|
|
12
|
+
tasks?: TaskContext;
|
|
13
|
+
userInput?: UserInputContext;
|
|
6
14
|
}
|
|
7
15
|
export declare function createNodeAgentContext(options: CreateNodeAgentContextOptions): AgentContext;
|
|
8
16
|
//# sourceMappingURL=createNodeAgentContext.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createNodeAgentContext.d.ts","sourceRoot":"","sources":["../../../sources/agent/context/createNodeAgentContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"createNodeAgentContext.d.ts","sourceRoot":"","sources":["../../../sources/agent/context/createNodeAgentContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAGpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAGH,KAAK,cAAc,EACtB,MAAM,4BAA4B,CAAC;AAEpC,MAAM,WAAW,6BAA6B;IAC1C,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,cAAc,EAAE,oBAAoB,CAAC;IACrC,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,SAAS,CAAC,EAAE,gBAAgB,CAAC;CAChC;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,6BAA6B,GAAG,YAAY,CAiB3F"}
|
|
@@ -1,11 +1,24 @@
|
|
|
1
1
|
import { createNodeBashContext } from "./createNodeBashContext.js";
|
|
2
2
|
import { createNodeFileSystemContext } from "./createNodeFileSystemContext.js";
|
|
3
|
+
import { createPermissionContext, DEFAULT_PERMISSION_MODE, } from "../../permissions/index.js";
|
|
3
4
|
export function createNodeAgentContext(options) {
|
|
4
|
-
|
|
5
|
-
|
|
5
|
+
const permissions = createPermissionContext(options.permissionMode ?? DEFAULT_PERMISSION_MODE);
|
|
6
|
+
const context = {
|
|
7
|
+
fs: createNodeFileSystemContext(options.cwd, {
|
|
8
|
+
permissionMode: () => permissions.mode,
|
|
9
|
+
}),
|
|
6
10
|
bash: createNodeBashContext({
|
|
7
11
|
cwd: options.cwd,
|
|
8
12
|
processManager: options.processManager,
|
|
13
|
+
permissions,
|
|
9
14
|
}),
|
|
15
|
+
permissions,
|
|
10
16
|
};
|
|
17
|
+
if (options.userInput !== undefined)
|
|
18
|
+
context.userInput = options.userInput;
|
|
19
|
+
if (options.goals !== undefined)
|
|
20
|
+
context.goals = options.goals;
|
|
21
|
+
if (options.tasks !== undefined)
|
|
22
|
+
context.tasks = options.tasks;
|
|
23
|
+
return context;
|
|
11
24
|
}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import type { NativeProxessManager } from "../../processes/index.js";
|
|
2
|
+
import type { PermissionContext } from "../../permissions/index.js";
|
|
2
3
|
import type { BashContext } from "./BashContext.js";
|
|
3
4
|
export interface CreateNodeBashContextOptions {
|
|
4
5
|
cwd: string;
|
|
5
6
|
processManager: NativeProxessManager;
|
|
7
|
+
permissions: PermissionContext;
|
|
6
8
|
}
|
|
7
9
|
export declare function createNodeBashContext(options: CreateNodeBashContextOptions): BashContext;
|
|
8
10
|
//# sourceMappingURL=createNodeBashContext.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createNodeBashContext.d.ts","sourceRoot":"","sources":["../../../sources/agent/context/createNodeBashContext.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"createNodeBashContext.d.ts","sourceRoot":"","sources":["../../../sources/agent/context/createNodeBashContext.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAER,oBAAoB,EAEvB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,KAAK,EAAE,WAAW,EAAuB,MAAM,kBAAkB,CAAC;AAGzE,MAAM,WAAW,4BAA4B;IACzC,GAAG,EAAE,MAAM,CAAC;IACZ,cAAc,EAAE,oBAAoB,CAAC;IACrC,WAAW,EAAE,iBAAiB,CAAC;CAClC;AAiBD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,4BAA4B,GAAG,WAAW,CA4IxF"}
|
|
@@ -1,16 +1,84 @@
|
|
|
1
|
+
import { isAbsolute, resolve } from "node:path";
|
|
2
|
+
import { createSandboxedCommand } from "./createSandboxedCommand.js";
|
|
3
|
+
const MAX_RETAINED_SESSIONS = 64;
|
|
1
4
|
export function createNodeBashContext(options) {
|
|
5
|
+
const sessions = new Map();
|
|
6
|
+
let nextSessionId = 1;
|
|
7
|
+
const runCwd = (cwd) => cwd === undefined ? options.cwd : isAbsolute(cwd) ? cwd : resolve(options.cwd, cwd);
|
|
8
|
+
const readSession = async (sessionId, readOptions = {}) => {
|
|
9
|
+
const session = sessions.get(sessionId);
|
|
10
|
+
if (session === undefined)
|
|
11
|
+
return undefined;
|
|
12
|
+
const waitMs = Math.max(0, readOptions.waitMs ?? 0);
|
|
13
|
+
if (session.result === undefined && waitMs > 0 && !readOptions.signal?.aborted) {
|
|
14
|
+
await new Promise((resolveWait) => {
|
|
15
|
+
let settled = false;
|
|
16
|
+
let timer;
|
|
17
|
+
const finish = () => {
|
|
18
|
+
if (settled)
|
|
19
|
+
return;
|
|
20
|
+
settled = true;
|
|
21
|
+
if (timer !== undefined)
|
|
22
|
+
clearTimeout(timer);
|
|
23
|
+
readOptions.signal?.removeEventListener("abort", finish);
|
|
24
|
+
resolveWait();
|
|
25
|
+
};
|
|
26
|
+
timer = setTimeout(finish, waitMs);
|
|
27
|
+
readOptions.signal?.addEventListener("abort", finish, { once: true });
|
|
28
|
+
void session.completion.then(finish);
|
|
29
|
+
if (readOptions.signal?.aborted)
|
|
30
|
+
finish();
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
const processSnapshot = session.result ?? session.process.snapshot();
|
|
34
|
+
const stdoutDelta = processSnapshot.stdout.slice(session.stdoutOffset);
|
|
35
|
+
const stderrDelta = processSnapshot.stderr.slice(session.stderrOffset);
|
|
36
|
+
session.stdoutOffset = processSnapshot.stdout.length;
|
|
37
|
+
session.stderrOffset = processSnapshot.stderr.length;
|
|
38
|
+
return {
|
|
39
|
+
command: session.command,
|
|
40
|
+
cwd: session.cwd,
|
|
41
|
+
exitCode: session.result?.exitCode ?? null,
|
|
42
|
+
sessionId,
|
|
43
|
+
status: session.result === undefined
|
|
44
|
+
? "running"
|
|
45
|
+
: session.result.killed
|
|
46
|
+
? "killed"
|
|
47
|
+
: "completed",
|
|
48
|
+
stderr: processSnapshot.stderr,
|
|
49
|
+
stderrDelta,
|
|
50
|
+
stdout: processSnapshot.stdout,
|
|
51
|
+
stdoutDelta,
|
|
52
|
+
timedOut: session.timedOut,
|
|
53
|
+
};
|
|
54
|
+
};
|
|
2
55
|
return {
|
|
3
56
|
cwd: options.cwd,
|
|
57
|
+
async killSession(sessionId) {
|
|
58
|
+
const session = sessions.get(sessionId);
|
|
59
|
+
if (session === undefined)
|
|
60
|
+
return undefined;
|
|
61
|
+
await session.process.kill("SIGTERM", { forceAfterMs: 500 });
|
|
62
|
+
return readSession(sessionId);
|
|
63
|
+
},
|
|
64
|
+
readSession,
|
|
4
65
|
async run(runOptions) {
|
|
5
|
-
const
|
|
66
|
+
const cwd = runCwd(runOptions.cwd);
|
|
67
|
+
const command = await createSandboxedCommand({
|
|
6
68
|
command: runOptions.command,
|
|
7
|
-
cwd:
|
|
69
|
+
cwd: options.cwd,
|
|
70
|
+
mode: options.permissions.mode,
|
|
71
|
+
});
|
|
72
|
+
const processRunOptions = {
|
|
73
|
+
command,
|
|
74
|
+
cwd,
|
|
8
75
|
timeoutMs: runOptions.timeoutMs ?? 120_000,
|
|
9
76
|
maxOutputBytes: runOptions.maxOutputBytes ?? 512_000,
|
|
10
77
|
};
|
|
11
|
-
if (runOptions.signal !== undefined)
|
|
78
|
+
if (runOptions.signal !== undefined)
|
|
12
79
|
processRunOptions.signal = runOptions.signal;
|
|
13
|
-
|
|
80
|
+
if (runOptions.shell !== undefined)
|
|
81
|
+
processRunOptions.shell = runOptions.shell;
|
|
14
82
|
const result = await options.processManager.run(processRunOptions);
|
|
15
83
|
return {
|
|
16
84
|
stdout: result.stdout,
|
|
@@ -19,5 +87,56 @@ export function createNodeBashContext(options) {
|
|
|
19
87
|
timedOut: result.timedOut,
|
|
20
88
|
};
|
|
21
89
|
},
|
|
90
|
+
async startSession(runOptions) {
|
|
91
|
+
const cwd = runCwd(runOptions.cwd);
|
|
92
|
+
const command = await createSandboxedCommand({
|
|
93
|
+
command: runOptions.command,
|
|
94
|
+
cwd: options.cwd,
|
|
95
|
+
mode: options.permissions.mode,
|
|
96
|
+
});
|
|
97
|
+
const process = options.processManager.start({
|
|
98
|
+
cleanupProcessGroupOnExit: true,
|
|
99
|
+
command,
|
|
100
|
+
cwd,
|
|
101
|
+
maxOutputBytes: runOptions.maxOutputBytes ?? 512_000,
|
|
102
|
+
...(runOptions.shell === undefined ? {} : { shell: runOptions.shell }),
|
|
103
|
+
});
|
|
104
|
+
const sessionId = nextSessionId;
|
|
105
|
+
nextSessionId += 1;
|
|
106
|
+
const session = {
|
|
107
|
+
command: runOptions.command,
|
|
108
|
+
completion: process.wait(),
|
|
109
|
+
cwd,
|
|
110
|
+
process,
|
|
111
|
+
sessionId,
|
|
112
|
+
stderrOffset: 0,
|
|
113
|
+
stdoutOffset: 0,
|
|
114
|
+
timedOut: false,
|
|
115
|
+
};
|
|
116
|
+
sessions.set(sessionId, session);
|
|
117
|
+
if (runOptions.timeoutMs !== undefined) {
|
|
118
|
+
session.timeout = setTimeout(() => {
|
|
119
|
+
session.timedOut = true;
|
|
120
|
+
void process.kill("SIGTERM", { forceAfterMs: 500 });
|
|
121
|
+
}, runOptions.timeoutMs);
|
|
122
|
+
session.timeout.unref();
|
|
123
|
+
}
|
|
124
|
+
void session.completion.then((result) => {
|
|
125
|
+
session.result = result;
|
|
126
|
+
if (session.timeout !== undefined)
|
|
127
|
+
clearTimeout(session.timeout);
|
|
128
|
+
});
|
|
129
|
+
if (sessions.size > MAX_RETAINED_SESSIONS) {
|
|
130
|
+
const completed = [...sessions.values()].find((candidate) => candidate.result !== undefined);
|
|
131
|
+
if (completed !== undefined)
|
|
132
|
+
sessions.delete(completed.sessionId);
|
|
133
|
+
}
|
|
134
|
+
return sessionId;
|
|
135
|
+
},
|
|
136
|
+
supportsSessionInput: true,
|
|
137
|
+
async writeSession(sessionId, data) {
|
|
138
|
+
const session = sessions.get(sessionId);
|
|
139
|
+
return session?.process.writeStdin(data) ?? false;
|
|
140
|
+
},
|
|
22
141
|
};
|
|
23
142
|
}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import type { FileSystemContext } from "./FileSystemContext.js";
|
|
2
|
+
import type { PermissionMode } from "../../permissions/index.js";
|
|
2
3
|
export interface CreateNodeFileSystemContextOptions {
|
|
3
4
|
home?: string;
|
|
5
|
+
permissionMode?: () => PermissionMode;
|
|
4
6
|
}
|
|
5
7
|
export declare function createNodeFileSystemContext(cwd: string, options?: CreateNodeFileSystemContextOptions): FileSystemContext;
|
|
6
8
|
//# sourceMappingURL=createNodeFileSystemContext.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createNodeFileSystemContext.d.ts","sourceRoot":"","sources":["../../../sources/agent/context/createNodeFileSystemContext.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"createNodeFileSystemContext.d.ts","sourceRoot":"","sources":["../../../sources/agent/context/createNodeFileSystemContext.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEjE,MAAM,WAAW,kCAAkC;IAC/C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,cAAc,CAAC;CACzC;AAED,wBAAgB,2BAA2B,CACvC,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,kCAAuC,GACjD,iBAAiB,CA+CnB"}
|