@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,7 +1,9 @@
|
|
|
1
1
|
import type { ChangeEffortRequest, ChangeModelRequest, CreateSessionRequest, ModelCatalog, SessionSummary, SubagentSummary } from "../protocol/index.js";
|
|
2
2
|
import { InMemorySession } from "./InMemorySession.js";
|
|
3
3
|
import type { SessionStore } from "./SessionStore.js";
|
|
4
|
+
import type { McpToolProvider } from "../mcp/index.js";
|
|
4
5
|
export interface InMemorySessionStoreOptions {
|
|
6
|
+
mcpToolProvider?: McpToolProvider;
|
|
5
7
|
modelCatalog?: ModelCatalog;
|
|
6
8
|
}
|
|
7
9
|
export declare class InMemorySessionStore implements SessionStore {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InMemorySessionStore.d.ts","sourceRoot":"","sources":["../../sources/server/InMemorySessionStore.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACR,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,YAAY,EAEZ,cAAc,EACd,eAAe,EAClB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"InMemorySessionStore.d.ts","sourceRoot":"","sources":["../../sources/server/InMemorySessionStore.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACR,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,YAAY,EAEZ,cAAc,EACd,eAAe,EAClB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,MAAM,WAAW,2BAA2B;IACxC,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,YAAY,CAAC,EAAE,YAAY,CAAC;CAC/B;AAED,qBAAa,oBAAqB,YAAW,YAAY;;gBAOzC,OAAO,GAAE,2BAAgC;IAiBrD,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,eAAe,GAAG,SAAS;IAU1F,MAAM,CAAC,OAAO,EAAE,oBAAoB,GAAG,eAAe;IAsBtD,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAInD,IAAI,CAAC,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,SAAS,cAAc,EAAE;IAQjE,aAAa,CAAC,eAAe,EAAE,MAAM,GAAG,SAAS,eAAe,EAAE;IAOlE,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,GAAG,eAAe,GAAG,SAAS;CAS3F"}
|
|
@@ -6,13 +6,17 @@ export class InMemorySessionStore {
|
|
|
6
6
|
#agentManager;
|
|
7
7
|
#createEventId = createEventIdFactory();
|
|
8
8
|
#modelCatalog;
|
|
9
|
+
#mcpToolProvider;
|
|
9
10
|
#sessions = new Map();
|
|
10
11
|
constructor(options = {}) {
|
|
11
12
|
this.#modelCatalog = options.modelCatalog ?? createModelCatalog();
|
|
13
|
+
this.#mcpToolProvider = options.mcpToolProvider;
|
|
12
14
|
this.#agentManager = new AgentSessionManager({
|
|
13
15
|
repository: {
|
|
14
16
|
createSubagent: (request, metadata) => this.#createSession(request, metadata),
|
|
15
17
|
get: (sessionId) => this.get(sessionId),
|
|
18
|
+
listByRoot: (rootSessionId) => [...this.#sessions.values()].filter((session) => session.agentMetadata().rootSessionId === rootSessionId &&
|
|
19
|
+
session.isSubagent()),
|
|
16
20
|
},
|
|
17
21
|
});
|
|
18
22
|
}
|
|
@@ -32,6 +36,9 @@ export class InMemorySessionStore {
|
|
|
32
36
|
agentManager: this.#agentManager,
|
|
33
37
|
createEventId: this.#createEventId,
|
|
34
38
|
modelCatalog: this.#modelCatalog,
|
|
39
|
+
...(this.#mcpToolProvider !== undefined
|
|
40
|
+
? { mcpToolProvider: this.#mcpToolProvider }
|
|
41
|
+
: {}),
|
|
35
42
|
...(metadata !== undefined ? { metadata } : {}),
|
|
36
43
|
request,
|
|
37
44
|
});
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import type { ChangeEffortRequest, ChangeModelRequest, CreateSessionRequest, ModelCatalog, SessionInterruption, SessionSummary, SubagentSummary } from "../protocol/index.js";
|
|
2
2
|
import { InMemorySession, type InMemorySessionPersistence, type PersistedQueuedRun, type PersistedSessionMessage, type PersistedSessionState } from "./InMemorySession.js";
|
|
3
3
|
import type { SessionStore } from "./SessionStore.js";
|
|
4
|
+
import type { McpToolProvider } from "../mcp/index.js";
|
|
4
5
|
export interface PersistentSessionStoreOptions {
|
|
5
6
|
databasePath: string;
|
|
7
|
+
mcpToolProvider?: McpToolProvider;
|
|
6
8
|
modelCatalog?: ModelCatalog;
|
|
7
9
|
now?: () => number;
|
|
8
10
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PersistentSessionStore.d.ts","sourceRoot":"","sources":["../../sources/server/PersistentSessionStore.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACR,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,YAAY,EAGZ,mBAAmB,EACnB,cAAc,EACd,eAAe,EAElB,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"PersistentSessionStore.d.ts","sourceRoot":"","sources":["../../sources/server/PersistentSessionStore.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACR,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,YAAY,EAGZ,mBAAmB,EACnB,cAAc,EACd,eAAe,EAElB,MAAM,sBAAsB,CAAC;AAK9B,OAAO,EACH,eAAe,EACf,KAAK,0BAA0B,EAC/B,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,EAC7B,MAAM,sBAAsB,CAAC;AAG9B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,MAAM,WAAW,6BAA6B;IAC1C,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACtB;AAED,qBAAa,sBAAuB,YAAW,YAAY,EAAE,0BAA0B;;gBASvE,OAAO,EAAE,6BAA6B;IA0BlD,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,GAAG,eAAe,GAAG,SAAS;IAUxF,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,eAAe,GAAG,SAAS;IAU1F,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAItC,KAAK,IAAI,IAAI;IAIb,MAAM,CAAC,OAAO,EAAE,oBAAoB,GAAG,eAAe;IA0BtD,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAMvD,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAanD,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,kBAAkB,GAAG,IAAI;IAgCjE,IAAI,CAAC,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,SAAS,cAAc,EAAE;IAyDjE,aAAa,CAAC,eAAe,EAAE,MAAM,GAAG,SAAS,eAAe,EAAE;IAwDlE,yBAAyB,CAAC,MAAM,EAAE,mBAAmB,CAAC,QAAQ,CAAC,GAAG,IAAI;IAuCtE,WAAW,CAAC,KAAK,EAAE,qBAAqB,GAAG,IAAI;IAyG/C,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,uBAAuB,GAAG,IAAI;CAsX3E"}
|
|
@@ -2,6 +2,7 @@ import { chmodSync, mkdirSync } from "node:fs";
|
|
|
2
2
|
import { dirname } from "node:path";
|
|
3
3
|
import { DatabaseSync } from "node:sqlite";
|
|
4
4
|
import { createEventIdFactory } from "../protocol/index.js";
|
|
5
|
+
import { parsePermissionMode } from "../permissions/index.js";
|
|
5
6
|
import { InMemorySession, } from "./InMemorySession.js";
|
|
6
7
|
import { AgentSessionManager } from "./AgentSessionManager.js";
|
|
7
8
|
import { createModelCatalog } from "./createModelCatalog.js";
|
|
@@ -10,10 +11,12 @@ export class PersistentSessionStore {
|
|
|
10
11
|
#createEventId = createEventIdFactory();
|
|
11
12
|
#database;
|
|
12
13
|
#modelCatalog;
|
|
14
|
+
#mcpToolProvider;
|
|
13
15
|
#now;
|
|
14
16
|
#sessions = new Map();
|
|
15
17
|
constructor(options) {
|
|
16
18
|
this.#modelCatalog = options.modelCatalog ?? createModelCatalog();
|
|
19
|
+
this.#mcpToolProvider = options.mcpToolProvider;
|
|
17
20
|
this.#now = options.now ?? Date.now;
|
|
18
21
|
if (options.databasePath !== ":memory:") {
|
|
19
22
|
mkdirSync(dirname(options.databasePath), { mode: 0o700, recursive: true });
|
|
@@ -27,6 +30,7 @@ export class PersistentSessionStore {
|
|
|
27
30
|
repository: {
|
|
28
31
|
createSubagent: (request, metadata) => this.#createSession(request, metadata),
|
|
29
32
|
get: (sessionId) => this.get(sessionId),
|
|
33
|
+
listByRoot: (rootSessionId) => this.#listSubagentSessionsByRoot(rootSessionId),
|
|
30
34
|
},
|
|
31
35
|
});
|
|
32
36
|
if (options.databasePath !== ":memory:") {
|
|
@@ -66,6 +70,9 @@ export class PersistentSessionStore {
|
|
|
66
70
|
createEventId: this.#createEventId,
|
|
67
71
|
emitCreatedEvent: false,
|
|
68
72
|
modelCatalog: this.#modelCatalog,
|
|
73
|
+
...(this.#mcpToolProvider !== undefined
|
|
74
|
+
? { mcpToolProvider: this.#mcpToolProvider }
|
|
75
|
+
: {}),
|
|
69
76
|
...(metadata !== undefined ? { metadata } : {}),
|
|
70
77
|
onAppendEvent: (event) => this.#appendEvent(event),
|
|
71
78
|
persistence: this,
|
|
@@ -98,17 +105,19 @@ export class PersistentSessionStore {
|
|
|
98
105
|
session_id,
|
|
99
106
|
run_id,
|
|
100
107
|
display_text,
|
|
108
|
+
kind,
|
|
101
109
|
text,
|
|
102
110
|
user_message_json,
|
|
103
111
|
created_at_ms
|
|
104
112
|
)
|
|
105
|
-
VALUES (?, ?, ?, ?, ?, ?)
|
|
113
|
+
VALUES (?, ?, ?, ?, ?, ?, ?)
|
|
106
114
|
ON CONFLICT(session_id, run_id) DO UPDATE SET
|
|
107
115
|
display_text = excluded.display_text,
|
|
116
|
+
kind = excluded.kind,
|
|
108
117
|
text = excluded.text,
|
|
109
118
|
user_message_json = excluded.user_message_json
|
|
110
119
|
`)
|
|
111
|
-
.run(sessionId, run.runId, run.displayText, run.text, JSON.stringify(run.userMessage), this.#now());
|
|
120
|
+
.run(sessionId, run.runId, run.displayText, run.kind, run.text, JSON.stringify(run.userMessage), this.#now());
|
|
112
121
|
}
|
|
113
122
|
list(options = {}) {
|
|
114
123
|
const rows = this.#database
|
|
@@ -118,6 +127,7 @@ export class PersistentSessionStore {
|
|
|
118
127
|
cwd,
|
|
119
128
|
provider_id,
|
|
120
129
|
model_id,
|
|
130
|
+
permission_mode,
|
|
121
131
|
effort,
|
|
122
132
|
status,
|
|
123
133
|
title,
|
|
@@ -147,6 +157,7 @@ export class PersistentSessionStore {
|
|
|
147
157
|
cwd: readString(row, "cwd"),
|
|
148
158
|
providerId: readString(row, "provider_id"),
|
|
149
159
|
modelId: readString(row, "model_id"),
|
|
160
|
+
permissionMode: parsePermissionMode(readString(row, "permission_mode")),
|
|
150
161
|
...(effort !== undefined ? { effort } : {}),
|
|
151
162
|
status: readString(row, "status"),
|
|
152
163
|
titleStatus: readString(row, "title_status"),
|
|
@@ -171,6 +182,7 @@ export class PersistentSessionStore {
|
|
|
171
182
|
status,
|
|
172
183
|
parent_session_id,
|
|
173
184
|
parent_tool_call_id,
|
|
185
|
+
task_name,
|
|
174
186
|
depth,
|
|
175
187
|
description,
|
|
176
188
|
created_at_ms,
|
|
@@ -182,6 +194,7 @@ export class PersistentSessionStore {
|
|
|
182
194
|
.all(parentSessionId)
|
|
183
195
|
.map((row) => {
|
|
184
196
|
const parentToolCallId = readOptionalString(row, "parent_tool_call_id");
|
|
197
|
+
const taskName = readOptionalString(row, "task_name");
|
|
185
198
|
return {
|
|
186
199
|
agentId: readString(row, "agent_id"),
|
|
187
200
|
createdAt: readNumber(row, "created_at_ms"),
|
|
@@ -192,10 +205,23 @@ export class PersistentSessionStore {
|
|
|
192
205
|
parentSessionId: readString(row, "parent_session_id"),
|
|
193
206
|
...(parentToolCallId !== undefined ? { parentToolCallId } : {}),
|
|
194
207
|
status: readString(row, "status"),
|
|
208
|
+
...(taskName !== undefined ? { taskName } : {}),
|
|
195
209
|
updatedAt: readNumber(row, "updated_at_ms"),
|
|
196
210
|
};
|
|
197
211
|
});
|
|
198
212
|
}
|
|
213
|
+
#listSubagentSessionsByRoot(rootSessionId) {
|
|
214
|
+
return this.#database
|
|
215
|
+
.prepare(`
|
|
216
|
+
SELECT id
|
|
217
|
+
FROM sessions
|
|
218
|
+
WHERE root_session_id = ? AND session_kind = 'subagent'
|
|
219
|
+
ORDER BY created_at_ms ASC
|
|
220
|
+
`)
|
|
221
|
+
.all(rootSessionId)
|
|
222
|
+
.map((row) => this.get(readString(row, "id")))
|
|
223
|
+
.filter((session) => session !== undefined);
|
|
224
|
+
}
|
|
199
225
|
repairInterruptedSessions(reason) {
|
|
200
226
|
const rows = this.#database
|
|
201
227
|
.prepare(`
|
|
@@ -240,6 +266,7 @@ export class PersistentSessionStore {
|
|
|
240
266
|
root_session_id,
|
|
241
267
|
depth,
|
|
242
268
|
parent_tool_call_id,
|
|
269
|
+
task_name,
|
|
243
270
|
description,
|
|
244
271
|
cwd,
|
|
245
272
|
provider_id,
|
|
@@ -248,8 +275,13 @@ export class PersistentSessionStore {
|
|
|
248
275
|
instructions,
|
|
249
276
|
status,
|
|
250
277
|
active_run_id,
|
|
278
|
+
permission_mode,
|
|
279
|
+
context_messages_json,
|
|
251
280
|
models_json,
|
|
252
281
|
tools_json,
|
|
282
|
+
tasks_json,
|
|
283
|
+
goal_json,
|
|
284
|
+
next_task_id,
|
|
253
285
|
title,
|
|
254
286
|
title_status,
|
|
255
287
|
title_error,
|
|
@@ -259,7 +291,7 @@ export class PersistentSessionStore {
|
|
|
259
291
|
created_at_ms,
|
|
260
292
|
updated_at_ms
|
|
261
293
|
)
|
|
262
|
-
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
294
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
263
295
|
ON CONFLICT(id) DO UPDATE SET
|
|
264
296
|
agent_id = excluded.agent_id,
|
|
265
297
|
session_kind = excluded.session_kind,
|
|
@@ -267,6 +299,7 @@ export class PersistentSessionStore {
|
|
|
267
299
|
root_session_id = excluded.root_session_id,
|
|
268
300
|
depth = excluded.depth,
|
|
269
301
|
parent_tool_call_id = excluded.parent_tool_call_id,
|
|
302
|
+
task_name = excluded.task_name,
|
|
270
303
|
description = excluded.description,
|
|
271
304
|
cwd = excluded.cwd,
|
|
272
305
|
provider_id = excluded.provider_id,
|
|
@@ -275,8 +308,13 @@ export class PersistentSessionStore {
|
|
|
275
308
|
instructions = excluded.instructions,
|
|
276
309
|
status = excluded.status,
|
|
277
310
|
active_run_id = excluded.active_run_id,
|
|
311
|
+
permission_mode = excluded.permission_mode,
|
|
312
|
+
context_messages_json = excluded.context_messages_json,
|
|
278
313
|
models_json = excluded.models_json,
|
|
279
314
|
tools_json = excluded.tools_json,
|
|
315
|
+
tasks_json = excluded.tasks_json,
|
|
316
|
+
goal_json = excluded.goal_json,
|
|
317
|
+
next_task_id = excluded.next_task_id,
|
|
280
318
|
title = excluded.title,
|
|
281
319
|
title_status = excluded.title_status,
|
|
282
320
|
title_error = excluded.title_error,
|
|
@@ -285,7 +323,7 @@ export class PersistentSessionStore {
|
|
|
285
323
|
last_message_at_ms = excluded.last_message_at_ms,
|
|
286
324
|
updated_at_ms = excluded.updated_at_ms
|
|
287
325
|
`)
|
|
288
|
-
.run(state.id, state.agentId, state.agent.type, state.agent.parentSessionId ?? null, state.agent.rootSessionId, state.agent.depth, state.agent.parentToolCallId ?? null, state.agent.description ?? null, state.cwd, state.providerId, state.modelId, state.effort ?? null, state.instructions ?? null, state.status, state.activeRunId ?? null, JSON.stringify(state.models), JSON.stringify(state.tools), state.title ?? null, state.titleStatus, state.titleError ?? null, state.interruption === undefined ? 0 : 1, state.interruption === undefined ? null : JSON.stringify(state.interruption), state.lastMessageAt ?? null, this.#now(), this.#now());
|
|
326
|
+
.run(state.id, state.agentId, state.agent.type, state.agent.parentSessionId ?? null, state.agent.rootSessionId, state.agent.depth, state.agent.parentToolCallId ?? null, state.agent.taskName ?? null, state.agent.description ?? null, state.cwd, state.providerId, state.modelId, state.effort ?? null, state.instructions ?? null, state.status, state.activeRunId ?? null, state.permissionMode, state.contextMessages === undefined ? null : JSON.stringify(state.contextMessages), JSON.stringify(state.models), JSON.stringify(state.tools), JSON.stringify(state.tasks), state.goal === undefined ? null : JSON.stringify(state.goal), state.nextTaskId, state.title ?? null, state.titleStatus, state.titleError ?? null, state.interruption === undefined ? 0 : 1, state.interruption === undefined ? null : JSON.stringify(state.interruption), state.lastMessageAt ?? null, this.#now(), this.#now());
|
|
289
327
|
}
|
|
290
328
|
upsertMessage(sessionId, message) {
|
|
291
329
|
this.#database
|
|
@@ -349,6 +387,7 @@ export class PersistentSessionStore {
|
|
|
349
387
|
root_session_id TEXT,
|
|
350
388
|
depth INTEGER NOT NULL DEFAULT 0,
|
|
351
389
|
parent_tool_call_id TEXT,
|
|
390
|
+
task_name TEXT,
|
|
352
391
|
description TEXT,
|
|
353
392
|
cwd TEXT NOT NULL,
|
|
354
393
|
provider_id TEXT NOT NULL,
|
|
@@ -358,8 +397,13 @@ export class PersistentSessionStore {
|
|
|
358
397
|
status TEXT NOT NULL,
|
|
359
398
|
active_run_id TEXT,
|
|
360
399
|
last_event_id TEXT,
|
|
400
|
+
permission_mode TEXT NOT NULL DEFAULT 'workspace_write',
|
|
401
|
+
context_messages_json TEXT,
|
|
361
402
|
models_json TEXT NOT NULL,
|
|
362
403
|
tools_json TEXT NOT NULL,
|
|
404
|
+
tasks_json TEXT NOT NULL DEFAULT '[]',
|
|
405
|
+
goal_json TEXT,
|
|
406
|
+
next_task_id INTEGER NOT NULL DEFAULT 1,
|
|
363
407
|
title TEXT,
|
|
364
408
|
title_status TEXT NOT NULL DEFAULT 'idle',
|
|
365
409
|
title_error TEXT,
|
|
@@ -401,6 +445,7 @@ export class PersistentSessionStore {
|
|
|
401
445
|
session_id TEXT NOT NULL REFERENCES sessions(id) ON DELETE CASCADE,
|
|
402
446
|
run_id TEXT NOT NULL,
|
|
403
447
|
display_text TEXT NOT NULL,
|
|
448
|
+
kind TEXT NOT NULL DEFAULT 'user',
|
|
404
449
|
text TEXT NOT NULL,
|
|
405
450
|
user_message_json TEXT NOT NULL,
|
|
406
451
|
created_at_ms INTEGER NOT NULL,
|
|
@@ -416,7 +461,14 @@ export class PersistentSessionStore {
|
|
|
416
461
|
this.#ensureSessionColumn("root_session_id", "TEXT");
|
|
417
462
|
this.#ensureSessionColumn("depth", "INTEGER NOT NULL DEFAULT 0");
|
|
418
463
|
this.#ensureSessionColumn("parent_tool_call_id", "TEXT");
|
|
464
|
+
this.#ensureSessionColumn("task_name", "TEXT");
|
|
419
465
|
this.#ensureSessionColumn("description", "TEXT");
|
|
466
|
+
this.#ensureSessionColumn("context_messages_json", "TEXT");
|
|
467
|
+
this.#ensureSessionColumn("permission_mode", "TEXT NOT NULL DEFAULT 'workspace_write'");
|
|
468
|
+
this.#ensureSessionColumn("tasks_json", "TEXT NOT NULL DEFAULT '[]'");
|
|
469
|
+
this.#ensureSessionColumn("goal_json", "TEXT");
|
|
470
|
+
this.#ensureSessionColumn("next_task_id", "INTEGER NOT NULL DEFAULT 1");
|
|
471
|
+
this.#ensureQueuedRunColumn("kind", "TEXT NOT NULL DEFAULT 'user'");
|
|
420
472
|
this.#database.exec(`
|
|
421
473
|
CREATE INDEX IF NOT EXISTS sessions_parent_created
|
|
422
474
|
ON sessions(parent_session_id, created_at_ms)
|
|
@@ -464,7 +516,7 @@ export class PersistentSessionStore {
|
|
|
464
516
|
#loadQueuedRuns(sessionId) {
|
|
465
517
|
return this.#database
|
|
466
518
|
.prepare(`
|
|
467
|
-
SELECT run_id, display_text, text, user_message_json
|
|
519
|
+
SELECT run_id, display_text, kind, text, user_message_json
|
|
468
520
|
FROM queued_runs
|
|
469
521
|
WHERE session_id = ?
|
|
470
522
|
ORDER BY created_at_ms ASC
|
|
@@ -472,6 +524,7 @@ export class PersistentSessionStore {
|
|
|
472
524
|
.all(sessionId)
|
|
473
525
|
.map((row) => ({
|
|
474
526
|
displayText: readString(row, "display_text"),
|
|
527
|
+
kind: readString(row, "kind"),
|
|
475
528
|
runId: readString(row, "run_id"),
|
|
476
529
|
text: readString(row, "text"),
|
|
477
530
|
userMessage: JSON.parse(readString(row, "user_message_json")),
|
|
@@ -496,9 +549,13 @@ export class PersistentSessionStore {
|
|
|
496
549
|
const title = readOptionalString(row, "title");
|
|
497
550
|
const titleError = readOptionalString(row, "title_error");
|
|
498
551
|
const activeRunId = readOptionalString(row, "active_run_id");
|
|
552
|
+
const contextMessagesJson = readOptionalString(row, "context_messages_json");
|
|
553
|
+
const permissionMode = parsePermissionMode(readString(row, "permission_mode"));
|
|
499
554
|
const parentSessionId = readOptionalString(row, "parent_session_id");
|
|
500
555
|
const parentToolCallId = readOptionalString(row, "parent_tool_call_id");
|
|
556
|
+
const taskName = readOptionalString(row, "task_name");
|
|
501
557
|
const description = readOptionalString(row, "description");
|
|
558
|
+
const goalJson = readOptionalString(row, "goal_json");
|
|
502
559
|
const id = readString(row, "id");
|
|
503
560
|
const agent = {
|
|
504
561
|
depth: readNumber(row, "depth"),
|
|
@@ -507,14 +564,19 @@ export class PersistentSessionStore {
|
|
|
507
564
|
...(description !== undefined ? { description } : {}),
|
|
508
565
|
...(parentSessionId !== undefined ? { parentSessionId } : {}),
|
|
509
566
|
...(parentToolCallId !== undefined ? { parentToolCallId } : {}),
|
|
567
|
+
...(taskName !== undefined ? { taskName } : {}),
|
|
510
568
|
};
|
|
511
569
|
const restore = {
|
|
512
570
|
agent,
|
|
513
571
|
agentId: readString(row, "agent_id"),
|
|
514
572
|
cwd: readString(row, "cwd"),
|
|
573
|
+
...(contextMessagesJson !== undefined
|
|
574
|
+
? { contextMessages: JSON.parse(contextMessagesJson) }
|
|
575
|
+
: {}),
|
|
515
576
|
...(effort !== undefined ? { effort } : {}),
|
|
516
577
|
id,
|
|
517
578
|
...(instructions !== undefined ? { instructions } : {}),
|
|
579
|
+
...(goalJson !== undefined ? { goal: JSON.parse(goalJson) } : {}),
|
|
518
580
|
...(interruptionJson !== undefined
|
|
519
581
|
? { interruption: JSON.parse(interruptionJson) }
|
|
520
582
|
: {}),
|
|
@@ -523,8 +585,11 @@ export class PersistentSessionStore {
|
|
|
523
585
|
modelId,
|
|
524
586
|
models: JSON.parse(readString(row, "models_json")),
|
|
525
587
|
providerId: readString(row, "provider_id"),
|
|
588
|
+
permissionMode,
|
|
526
589
|
queuedRuns: this.#loadQueuedRuns(sessionId),
|
|
527
590
|
status: readString(row, "status"),
|
|
591
|
+
tasks: JSON.parse(readString(row, "tasks_json")),
|
|
592
|
+
nextTaskId: readNumber(row, "next_task_id"),
|
|
528
593
|
...(title !== undefined ? { title } : {}),
|
|
529
594
|
...(titleError !== undefined ? { titleError } : {}),
|
|
530
595
|
titleStatus: readString(row, "title_status"),
|
|
@@ -545,6 +610,9 @@ export class PersistentSessionStore {
|
|
|
545
610
|
createEventId: this.#createEventId,
|
|
546
611
|
events: this.#loadEvents(sessionId),
|
|
547
612
|
modelCatalog: this.#modelCatalog,
|
|
613
|
+
...(this.#mcpToolProvider !== undefined
|
|
614
|
+
? { mcpToolProvider: this.#mcpToolProvider }
|
|
615
|
+
: {}),
|
|
548
616
|
onAppendEvent: (event) => this.#appendEvent(event),
|
|
549
617
|
persistence: this,
|
|
550
618
|
request,
|
|
@@ -582,6 +650,13 @@ export class PersistentSessionStore {
|
|
|
582
650
|
}
|
|
583
651
|
this.#database.exec(`ALTER TABLE sessions ADD COLUMN ${name} ${definition}`);
|
|
584
652
|
}
|
|
653
|
+
#ensureQueuedRunColumn(name, definition) {
|
|
654
|
+
const columns = this.#database.prepare("PRAGMA table_info(queued_runs)").all();
|
|
655
|
+
if (columns.some((column) => readString(column, "name") === name)) {
|
|
656
|
+
return;
|
|
657
|
+
}
|
|
658
|
+
this.#database.exec(`ALTER TABLE queued_runs ADD COLUMN ${name} ${definition}`);
|
|
659
|
+
}
|
|
585
660
|
}
|
|
586
661
|
function readNumber(row, key) {
|
|
587
662
|
const value = row[key];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createGoalTitle.d.ts","sourceRoot":"","sources":["../../sources/server/createGoalTitle.ts"],"names":[],"mappings":"AAAA,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAGzD"}
|
|
@@ -3,7 +3,7 @@ import { NativeProxessManager } from "../processes/index.js";
|
|
|
3
3
|
import { createBedrockProvider } from "../providers/bedrock.js";
|
|
4
4
|
import { createClaudeSdkProvider } from "../providers/claude-sdk.js";
|
|
5
5
|
import { createCodexProvider } from "../providers/codex.js";
|
|
6
|
-
import {
|
|
6
|
+
import { modelOpenaiGpt56Sol } from "../providers/models.js";
|
|
7
7
|
import { readBedrockBearerToken } from "../providers/readBedrockBearerToken.js";
|
|
8
8
|
import { claudeCodeTools } from "../tools/claude/index.js";
|
|
9
9
|
import { uniqueModelsById } from "./uniqueModelsById.js";
|
|
@@ -29,7 +29,7 @@ export function createModelCatalog(options = {}) {
|
|
|
29
29
|
}));
|
|
30
30
|
}
|
|
31
31
|
return {
|
|
32
|
-
defaultModelId:
|
|
32
|
+
defaultModelId: modelOpenaiGpt56Sol.id,
|
|
33
33
|
defaultProviderId: "codex",
|
|
34
34
|
models: uniqueModelsById(providers.flatMap((provider) => provider.models)),
|
|
35
35
|
providers: providers.map((provider) => ({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createProtocolHttpServer.d.ts","sourceRoot":"","sources":["../../sources/server/createProtocolHttpServer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsC,KAAK,MAAM,EAAuB,MAAM,WAAW,CAAC;AAGjG,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"createProtocolHttpServer.d.ts","sourceRoot":"","sources":["../../sources/server/createProtocolHttpServer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsC,KAAK,MAAM,EAAuB,MAAM,WAAW,CAAC;AAGjG,OAAO,KAAK,EAeR,YAAY,EAQf,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAqB,KAAK,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAE3F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAItD,MAAM,WAAW,yBAAyB;IACtC,cAAc,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IACvC,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,iBAAiB,CAAC,EAAE,yBAAyB,CAAC;IAC9C,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,yBAAyB,GAAG,MAAM,CA2BnF"}
|
|
@@ -3,6 +3,8 @@ import { timingSafeEqual } from "node:crypto";
|
|
|
3
3
|
import { InMemorySessionStore } from "./InMemorySessionStore.js";
|
|
4
4
|
import { createModelCatalog } from "./createModelCatalog.js";
|
|
5
5
|
import { FileSearchService } from "./FileSearchService.js";
|
|
6
|
+
import { isPermissionMode } from "../permissions/index.js";
|
|
7
|
+
import { isGoalStatus } from "../goals/index.js";
|
|
6
8
|
export function createProtocolHttpServer(options) {
|
|
7
9
|
const modelCatalog = options.modelCatalog ?? createModelCatalog();
|
|
8
10
|
const store = options.store ??
|
|
@@ -51,6 +53,12 @@ async function handleRequest(request, response, store, initialization, fileSearc
|
|
|
51
53
|
}
|
|
52
54
|
if (request.method === "POST" && route.name === "sessions") {
|
|
53
55
|
const body = await readJson(request);
|
|
56
|
+
if (body.permissionMode !== undefined && !isPermissionMode(body.permissionMode)) {
|
|
57
|
+
sendJson(response, 400, {
|
|
58
|
+
error: "Permission mode must be Auto, Workspace write, Read only, or Full access.",
|
|
59
|
+
});
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
54
62
|
const session = store.create(body);
|
|
55
63
|
sendJson(response, 201, { session: session.snapshot() });
|
|
56
64
|
return;
|
|
@@ -99,6 +107,18 @@ async function handleRequest(request, response, store, initialization, fileSearc
|
|
|
99
107
|
sendJson(response, 202, session.submit(body));
|
|
100
108
|
return;
|
|
101
109
|
}
|
|
110
|
+
if (request.method === "POST" && route.name === "steer") {
|
|
111
|
+
const body = await readJson(request);
|
|
112
|
+
try {
|
|
113
|
+
sendJson(response, 202, session.steer(body));
|
|
114
|
+
}
|
|
115
|
+
catch (error) {
|
|
116
|
+
sendJson(response, 409, {
|
|
117
|
+
error: error instanceof Error ? error.message : "The active run cannot be steered.",
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
102
122
|
if (request.method === "POST" && route.name === "abort") {
|
|
103
123
|
sendJson(response, 200, session.abort());
|
|
104
124
|
return;
|
|
@@ -107,6 +127,14 @@ async function handleRequest(request, response, store, initialization, fileSearc
|
|
|
107
127
|
sendJson(response, 200, { session: session.reset() });
|
|
108
128
|
return;
|
|
109
129
|
}
|
|
130
|
+
if (request.method === "POST" && route.name === "compact") {
|
|
131
|
+
const result = await session.compact();
|
|
132
|
+
sendJson(response, 200, {
|
|
133
|
+
result,
|
|
134
|
+
session: session.snapshot(),
|
|
135
|
+
});
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
110
138
|
if (request.method === "PATCH" && route.name === "effort") {
|
|
111
139
|
const body = await readJson(request);
|
|
112
140
|
sendJson(response, 200, { session: session.changeEffort(body) });
|
|
@@ -117,6 +145,77 @@ async function handleRequest(request, response, store, initialization, fileSearc
|
|
|
117
145
|
sendJson(response, 200, { session: session.changeModel(body) });
|
|
118
146
|
return;
|
|
119
147
|
}
|
|
148
|
+
if (request.method === "PATCH" && route.name === "permissions") {
|
|
149
|
+
const body = await readJson(request);
|
|
150
|
+
if (!isPermissionMode(body.permissionMode)) {
|
|
151
|
+
sendJson(response, 400, {
|
|
152
|
+
error: "Permission mode must be Auto, Workspace write, Read only, or Full access.",
|
|
153
|
+
});
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
sendJson(response, 200, { session: session.changePermissionMode(body) });
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
if (request.method === "POST" && route.name === "goal") {
|
|
160
|
+
const body = await readJson(request);
|
|
161
|
+
if (typeof body.objective !== "string") {
|
|
162
|
+
sendJson(response, 400, { error: "Goal objective must be text." });
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
try {
|
|
166
|
+
session.setGoal(body);
|
|
167
|
+
sendJson(response, 200, { session: session.snapshot() });
|
|
168
|
+
}
|
|
169
|
+
catch (error) {
|
|
170
|
+
sendJson(response, 409, {
|
|
171
|
+
error: error instanceof Error ? error.message : "The goal could not be started.",
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
if (request.method === "PATCH" && route.name === "goal") {
|
|
177
|
+
const body = await readJson(request);
|
|
178
|
+
if (!isGoalStatus(body.status)) {
|
|
179
|
+
sendJson(response, 400, {
|
|
180
|
+
error: "Goal status must be Active, Paused, Blocked, or Complete.",
|
|
181
|
+
});
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
try {
|
|
185
|
+
session.changeGoalStatus(body);
|
|
186
|
+
sendJson(response, 200, { session: session.snapshot() });
|
|
187
|
+
}
|
|
188
|
+
catch (error) {
|
|
189
|
+
sendJson(response, 409, {
|
|
190
|
+
error: error instanceof Error ? error.message : "The goal could not be updated.",
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
if (request.method === "DELETE" && route.name === "goal") {
|
|
196
|
+
session.clearGoal();
|
|
197
|
+
sendJson(response, 200, { session: session.snapshot() });
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
if (request.method === "POST" && route.name === "user-input") {
|
|
201
|
+
const body = await readJson(request);
|
|
202
|
+
try {
|
|
203
|
+
const snapshot = session.answerUserInput(route.requestId, body);
|
|
204
|
+
if (snapshot === undefined) {
|
|
205
|
+
sendJson(response, 409, {
|
|
206
|
+
error: "This question is no longer waiting for an answer.",
|
|
207
|
+
});
|
|
208
|
+
return;
|
|
209
|
+
}
|
|
210
|
+
sendJson(response, 200, { session: snapshot });
|
|
211
|
+
}
|
|
212
|
+
catch (error) {
|
|
213
|
+
sendJson(response, 400, {
|
|
214
|
+
error: error instanceof Error ? error.message : "The answer is invalid.",
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
120
219
|
if (request.method === "GET" && route.name === "events") {
|
|
121
220
|
const events = session.events.since(url.searchParams.get("after") ?? undefined);
|
|
122
221
|
if (events === undefined) {
|
|
@@ -218,31 +317,49 @@ function matchRoute(pathname) {
|
|
|
218
317
|
const sessionId = decodeURIComponent(parts[1]);
|
|
219
318
|
if (parts.length === 2)
|
|
220
319
|
return { name: "session", sessionId };
|
|
320
|
+
if (parts.length === 4 && parts[2] === "user-input" && parts[3] !== undefined) {
|
|
321
|
+
return {
|
|
322
|
+
name: "user-input",
|
|
323
|
+
requestId: decodeURIComponent(parts[3]),
|
|
324
|
+
sessionId,
|
|
325
|
+
};
|
|
326
|
+
}
|
|
221
327
|
if (parts.length !== 3)
|
|
222
328
|
return undefined;
|
|
223
329
|
if (parts[2] === "abort")
|
|
224
330
|
return { name: "abort", sessionId };
|
|
331
|
+
if (parts[2] === "compact")
|
|
332
|
+
return { name: "compact", sessionId };
|
|
225
333
|
if (parts[2] === "effort")
|
|
226
334
|
return { name: "effort", sessionId };
|
|
227
335
|
if (parts[2] === "events")
|
|
228
336
|
return { name: "events", sessionId };
|
|
229
337
|
if (parts[2] === "files")
|
|
230
338
|
return { name: "files", sessionId };
|
|
339
|
+
if (parts[2] === "goal")
|
|
340
|
+
return { name: "goal", sessionId };
|
|
231
341
|
if (parts[2] === "messages")
|
|
232
342
|
return { name: "messages", sessionId };
|
|
233
343
|
if (parts[2] === "model")
|
|
234
344
|
return { name: "model", sessionId };
|
|
345
|
+
if (parts[2] === "permissions")
|
|
346
|
+
return { name: "permissions", sessionId };
|
|
235
347
|
if (parts[2] === "reset")
|
|
236
348
|
return { name: "reset", sessionId };
|
|
237
349
|
if (parts[2] === "stream")
|
|
238
350
|
return { name: "stream", sessionId };
|
|
351
|
+
if (parts[2] === "steer")
|
|
352
|
+
return { name: "steer", sessionId };
|
|
239
353
|
if (parts[2] === "subagents")
|
|
240
354
|
return { name: "subagents", sessionId };
|
|
241
355
|
return undefined;
|
|
242
356
|
}
|
|
243
357
|
function isSessionMutation(routeName, method) {
|
|
244
|
-
return ((method === "POST" &&
|
|
245
|
-
|
|
358
|
+
return ((method === "POST" &&
|
|
359
|
+
["abort", "compact", "messages", "reset", "steer"].includes(routeName)) ||
|
|
360
|
+
(["DELETE", "PATCH", "POST"].includes(method ?? "") && routeName === "goal") ||
|
|
361
|
+
(method === "POST" && routeName === "user-input") ||
|
|
362
|
+
(method === "PATCH" && ["effort", "model", "permissions"].includes(routeName)));
|
|
246
363
|
}
|
|
247
364
|
async function readJson(request) {
|
|
248
365
|
const chunks = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runLocalProtocolServer.d.ts","sourceRoot":"","sources":["../../sources/server/runLocalProtocolServer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"runLocalProtocolServer.d.ts","sourceRoot":"","sources":["../../sources/server/runLocalProtocolServer.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,6BAA6B;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,sBAAsB,CACxC,OAAO,GAAE,6BAAkC,GAC5C,OAAO,CAAC,IAAI,CAAC,CA8Ef"}
|
|
@@ -6,6 +6,7 @@ import { prepareLocalServerDirectory } from "./prepareLocalServerDirectory.js";
|
|
|
6
6
|
import { PersistentSessionStore } from "./PersistentSessionStore.js";
|
|
7
7
|
import { readLocalServerToken } from "./readLocalServerToken.js";
|
|
8
8
|
import { removeStaleSocket } from "./removeStaleSocket.js";
|
|
9
|
+
import { McpClientManager } from "../mcp/index.js";
|
|
9
10
|
export async function runLocalProtocolServer(options = {}) {
|
|
10
11
|
const paths = getLocalServerPaths();
|
|
11
12
|
const socketPath = options.socketPath ?? paths.socketPath;
|
|
@@ -14,7 +15,12 @@ export async function runLocalProtocolServer(options = {}) {
|
|
|
14
15
|
const token = await readLocalServerToken(tokenPath);
|
|
15
16
|
await removeStaleSocket(socketPath);
|
|
16
17
|
const modelCatalog = createModelCatalog({ cwd: process.cwd() });
|
|
17
|
-
const
|
|
18
|
+
const mcpToolProvider = new McpClientManager();
|
|
19
|
+
const store = new PersistentSessionStore({
|
|
20
|
+
databasePath: paths.databasePath,
|
|
21
|
+
mcpToolProvider,
|
|
22
|
+
modelCatalog,
|
|
23
|
+
});
|
|
18
24
|
let stopServer;
|
|
19
25
|
const server = createProtocolHttpServer({
|
|
20
26
|
modelCatalog,
|
|
@@ -67,7 +73,17 @@ export async function runLocalProtocolServer(options = {}) {
|
|
|
67
73
|
}
|
|
68
74
|
finally {
|
|
69
75
|
stopServer = undefined;
|
|
70
|
-
|
|
76
|
+
try {
|
|
77
|
+
await mcpToolProvider.close();
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
console.error(error instanceof Error
|
|
81
|
+
? `Failed to close MCP connections: ${error.message}`
|
|
82
|
+
: `Failed to close MCP connections: ${String(error)}`);
|
|
83
|
+
}
|
|
84
|
+
finally {
|
|
85
|
+
store.close();
|
|
86
|
+
}
|
|
71
87
|
}
|
|
72
88
|
}
|
|
73
89
|
async function writeRegistry(path, payload) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../sources/tasks/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACR,iBAAiB,EACjB,WAAW,EACX,UAAU,EACV,iBAAiB,EACjB,gBAAgB,GACnB,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|