@slopus/rig 0.0.4 → 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/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 +22 -5
- package/dist/app/createSlashCommands.d.ts.map +1 -1
- package/dist/app/createSlashCommands.js +42 -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/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/models.d.ts +12 -12
- package/dist/providers/models.d.ts.map +1 -1
- package/dist/providers/models.js +18 -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/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
|
@@ -3,19 +3,19 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Order matches the Conductor model picker.
|
|
5
5
|
*/
|
|
6
|
-
export declare const modelAnthropicFable5: import("./types.js").Model<"high" | "
|
|
7
|
-
export declare const modelAnthropicOpus48: import("./types.js").Model<"high" | "
|
|
8
|
-
export declare const modelAnthropicOpus47: import("./types.js").Model<"high" | "
|
|
9
|
-
export declare const modelAnthropicOpus46: import("./types.js").Model<"high" | "
|
|
10
|
-
export declare const modelAnthropicSonnet5: import("./types.js").Model<"high" | "
|
|
11
|
-
export declare const modelAnthropicSonnet461m: import("./types.js").Model<"high" | "
|
|
12
|
-
export declare const modelAnthropicSonnet46: import("./types.js").Model<"high" | "
|
|
6
|
+
export declare const modelAnthropicFable5: import("./types.js").Model<"high" | "low" | "medium" | "off" | "xhigh" | "max">;
|
|
7
|
+
export declare const modelAnthropicOpus48: import("./types.js").Model<"high" | "low" | "medium" | "off" | "xhigh" | "max">;
|
|
8
|
+
export declare const modelAnthropicOpus47: import("./types.js").Model<"high" | "low" | "medium" | "off" | "xhigh" | "max">;
|
|
9
|
+
export declare const modelAnthropicOpus46: import("./types.js").Model<"high" | "low" | "medium" | "off" | "max">;
|
|
10
|
+
export declare const modelAnthropicSonnet5: import("./types.js").Model<"high" | "low" | "medium" | "off" | "xhigh" | "max">;
|
|
11
|
+
export declare const modelAnthropicSonnet461m: import("./types.js").Model<"high" | "low" | "medium" | "off" | "max">;
|
|
12
|
+
export declare const modelAnthropicSonnet46: import("./types.js").Model<"high" | "low" | "medium" | "off" | "max">;
|
|
13
13
|
export declare const modelAnthropicHaiku45: import("./types.js").Model<"off">;
|
|
14
|
-
export declare const modelOpenaiGpt55: import("./types.js").Model<"high" | "
|
|
15
|
-
export declare const modelOpenaiGpt56Sol: import("./types.js").Model<"high" | "
|
|
16
|
-
export declare const modelOpenaiGpt56Terra: import("./types.js").Model<"high" | "
|
|
17
|
-
export declare const modelOpenaiGpt56Luna: import("./types.js").Model<"high" | "
|
|
18
|
-
export declare const modelOpenaiGpt54: import("./types.js").Model<"high" | "
|
|
14
|
+
export declare const modelOpenaiGpt55: import("./types.js").Model<"high" | "low" | "medium" | "off" | "xhigh" | "minimal">;
|
|
15
|
+
export declare const modelOpenaiGpt56Sol: import("./types.js").Model<"high" | "low" | "medium" | "off" | "xhigh" | "max" | "ultra">;
|
|
16
|
+
export declare const modelOpenaiGpt56Terra: import("./types.js").Model<"high" | "low" | "medium" | "off" | "xhigh" | "max" | "ultra">;
|
|
17
|
+
export declare const modelOpenaiGpt56Luna: import("./types.js").Model<"high" | "low" | "medium" | "off" | "xhigh" | "max">;
|
|
18
|
+
export declare const modelOpenaiGpt54: import("./types.js").Model<"high" | "low" | "medium" | "off" | "xhigh" | "minimal">;
|
|
19
19
|
export declare const modelMoonshotKimiK25: import("./types.js").Model<"on" | "off">;
|
|
20
20
|
export declare const modelMoonshotKimiK2Thinking: import("./types.js").Model<"on">;
|
|
21
21
|
export declare const modelZaiGlm5: import("./types.js").Model<"high" | "off" | "max">;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../sources/providers/models.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,eAAO,MAAM,oBAAoB,
|
|
1
|
+
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../sources/providers/models.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,eAAO,MAAM,oBAAoB,iFAM/B,CAAC;AAEH,eAAO,MAAM,oBAAoB,iFAM/B,CAAC;AAEH,eAAO,MAAM,oBAAoB,iFAM/B,CAAC;AAEH,eAAO,MAAM,oBAAoB,uEAM/B,CAAC;AAEH,eAAO,MAAM,qBAAqB,iFAMhC,CAAC;AAEH,eAAO,MAAM,wBAAwB,uEAMnC,CAAC;AAEH,eAAO,MAAM,sBAAsB,uEAMjC,CAAC;AAEH,eAAO,MAAM,qBAAqB,mCAMhC,CAAC;AAEH,eAAO,MAAM,gBAAgB,qFAM3B,CAAC;AAEH,eAAO,MAAM,mBAAmB,2FAM9B,CAAC;AAEH,eAAO,MAAM,qBAAqB,2FAMhC,CAAC;AAEH,eAAO,MAAM,oBAAoB,iFAM/B,CAAC;AAEH,eAAO,MAAM,gBAAgB,qFAM3B,CAAC;AAEH,eAAO,MAAM,oBAAoB,0CAM/B,CAAC;AAEH,eAAO,MAAM,2BAA2B,kCAMtC,CAAC;AAEH,eAAO,MAAM,YAAY,oDAMvB,CAAC;AAEH,eAAO,MAAM,aAAa,0CAMxB,CAAC;AAEH,eAAO,MAAM,kBAAkB,0CAM7B,CAAC"}
|
package/dist/providers/models.js
CHANGED
|
@@ -9,106 +9,124 @@ export const modelAnthropicFable5 = defineModel({
|
|
|
9
9
|
name: "Fable 5",
|
|
10
10
|
thinkingLevels: ["off", "low", "medium", "high", "xhigh", "max"],
|
|
11
11
|
defaultThinkingLevel: "medium",
|
|
12
|
+
contextWindow: 1_000_000,
|
|
12
13
|
});
|
|
13
14
|
export const modelAnthropicOpus48 = defineModel({
|
|
14
15
|
id: "anthropic/opus-4-8",
|
|
15
16
|
name: "Opus 4.8 1M",
|
|
16
17
|
thinkingLevels: ["off", "low", "medium", "high", "xhigh", "max"],
|
|
17
18
|
defaultThinkingLevel: "medium",
|
|
19
|
+
contextWindow: 1_000_000,
|
|
18
20
|
});
|
|
19
21
|
export const modelAnthropicOpus47 = defineModel({
|
|
20
22
|
id: "anthropic/opus-4-7",
|
|
21
23
|
name: "Opus 4.7 1M",
|
|
22
24
|
thinkingLevels: ["off", "low", "medium", "high", "xhigh", "max"],
|
|
23
25
|
defaultThinkingLevel: "medium",
|
|
26
|
+
contextWindow: 1_000_000,
|
|
24
27
|
});
|
|
25
28
|
export const modelAnthropicOpus46 = defineModel({
|
|
26
29
|
id: "anthropic/opus-4-6",
|
|
27
30
|
name: "Opus 4.6 1M",
|
|
28
31
|
thinkingLevels: ["off", "low", "medium", "high", "max"],
|
|
29
32
|
defaultThinkingLevel: "medium",
|
|
33
|
+
contextWindow: 1_000_000,
|
|
30
34
|
});
|
|
31
35
|
export const modelAnthropicSonnet5 = defineModel({
|
|
32
36
|
id: "anthropic/sonnet-5",
|
|
33
37
|
name: "Sonnet 5",
|
|
34
38
|
thinkingLevels: ["off", "low", "medium", "high", "xhigh", "max"],
|
|
35
39
|
defaultThinkingLevel: "medium",
|
|
40
|
+
contextWindow: 1_000_000,
|
|
36
41
|
});
|
|
37
42
|
export const modelAnthropicSonnet461m = defineModel({
|
|
38
43
|
id: "anthropic/sonnet-4-6-1m",
|
|
39
44
|
name: "Sonnet 4.6 1M",
|
|
40
45
|
thinkingLevels: ["off", "low", "medium", "high", "max"],
|
|
41
46
|
defaultThinkingLevel: "medium",
|
|
47
|
+
contextWindow: 1_000_000,
|
|
42
48
|
});
|
|
43
49
|
export const modelAnthropicSonnet46 = defineModel({
|
|
44
50
|
id: "anthropic/sonnet-4-6",
|
|
45
51
|
name: "Sonnet 4.6",
|
|
46
52
|
thinkingLevels: ["off", "low", "medium", "high", "max"],
|
|
47
53
|
defaultThinkingLevel: "medium",
|
|
54
|
+
contextWindow: 200_000,
|
|
48
55
|
});
|
|
49
56
|
export const modelAnthropicHaiku45 = defineModel({
|
|
50
57
|
id: "anthropic/haiku-4-5",
|
|
51
58
|
name: "Haiku 4.5",
|
|
52
59
|
thinkingLevels: ["off"],
|
|
53
60
|
defaultThinkingLevel: "off",
|
|
61
|
+
contextWindow: 200_000,
|
|
54
62
|
});
|
|
55
63
|
export const modelOpenaiGpt55 = defineModel({
|
|
56
64
|
id: "openai/gpt-5.5",
|
|
57
65
|
name: "GPT-5.5",
|
|
58
66
|
thinkingLevels: ["off", "minimal", "low", "medium", "high", "xhigh"],
|
|
59
67
|
defaultThinkingLevel: "medium",
|
|
68
|
+
contextWindow: 272_000,
|
|
60
69
|
});
|
|
61
70
|
export const modelOpenaiGpt56Sol = defineModel({
|
|
62
71
|
id: "openai/gpt-5.6-sol",
|
|
63
72
|
name: "GPT-5.6 Sol",
|
|
64
73
|
thinkingLevels: ["off", "low", "medium", "high", "xhigh", "max", "ultra"],
|
|
65
74
|
defaultThinkingLevel: "low",
|
|
75
|
+
contextWindow: 372_000,
|
|
66
76
|
});
|
|
67
77
|
export const modelOpenaiGpt56Terra = defineModel({
|
|
68
78
|
id: "openai/gpt-5.6-terra",
|
|
69
79
|
name: "GPT-5.6 Terra",
|
|
70
80
|
thinkingLevels: ["off", "low", "medium", "high", "xhigh", "max", "ultra"],
|
|
71
81
|
defaultThinkingLevel: "medium",
|
|
82
|
+
contextWindow: 372_000,
|
|
72
83
|
});
|
|
73
84
|
export const modelOpenaiGpt56Luna = defineModel({
|
|
74
85
|
id: "openai/gpt-5.6-luna",
|
|
75
86
|
name: "GPT-5.6 Luna",
|
|
76
87
|
thinkingLevels: ["off", "low", "medium", "high", "xhigh", "max"],
|
|
77
88
|
defaultThinkingLevel: "medium",
|
|
89
|
+
contextWindow: 372_000,
|
|
78
90
|
});
|
|
79
91
|
export const modelOpenaiGpt54 = defineModel({
|
|
80
92
|
id: "openai/gpt-5.4",
|
|
81
93
|
name: "GPT-5.4",
|
|
82
94
|
thinkingLevels: ["off", "minimal", "low", "medium", "high", "xhigh"],
|
|
83
95
|
defaultThinkingLevel: "medium",
|
|
96
|
+
contextWindow: 272_000,
|
|
84
97
|
});
|
|
85
98
|
export const modelMoonshotKimiK25 = defineModel({
|
|
86
99
|
id: "moonshot/kimi-k2.5",
|
|
87
100
|
name: "Kimi K2.5",
|
|
88
101
|
thinkingLevels: ["off", "on"],
|
|
89
102
|
defaultThinkingLevel: "on",
|
|
103
|
+
contextWindow: 256_000,
|
|
90
104
|
});
|
|
91
105
|
export const modelMoonshotKimiK2Thinking = defineModel({
|
|
92
106
|
id: "moonshot/kimi-k2-thinking",
|
|
93
107
|
name: "Kimi K2 Thinking",
|
|
94
108
|
thinkingLevels: ["on"],
|
|
95
109
|
defaultThinkingLevel: "on",
|
|
110
|
+
contextWindow: 256_000,
|
|
96
111
|
});
|
|
97
112
|
export const modelZaiGlm5 = defineModel({
|
|
98
113
|
id: "zai/glm-5",
|
|
99
114
|
name: "GLM 5",
|
|
100
115
|
thinkingLevels: ["off", "high", "max"],
|
|
101
116
|
defaultThinkingLevel: "max",
|
|
117
|
+
contextWindow: 200_000,
|
|
102
118
|
});
|
|
103
119
|
export const modelZaiGlm47 = defineModel({
|
|
104
120
|
id: "zai/glm-4.7",
|
|
105
121
|
name: "GLM 4.7",
|
|
106
122
|
thinkingLevels: ["off", "on"],
|
|
107
123
|
defaultThinkingLevel: "on",
|
|
124
|
+
contextWindow: 203_000,
|
|
108
125
|
});
|
|
109
126
|
export const modelZaiGlm47Flash = defineModel({
|
|
110
127
|
id: "zai/glm-4.7-flash",
|
|
111
128
|
name: "GLM 4.7 Flash",
|
|
112
129
|
thinkingLevels: ["off", "on"],
|
|
113
130
|
defaultThinkingLevel: "on",
|
|
131
|
+
contextWindow: 203_000,
|
|
114
132
|
});
|
|
@@ -95,6 +95,8 @@ export interface Model<TThinkingLevel extends string = string> {
|
|
|
95
95
|
name: string;
|
|
96
96
|
thinkingLevels: readonly TThinkingLevel[];
|
|
97
97
|
defaultThinkingLevel: TThinkingLevel;
|
|
98
|
+
/** Maximum input context used for automatic conversation compaction. */
|
|
99
|
+
contextWindow?: number;
|
|
98
100
|
}
|
|
99
101
|
export interface StreamOptions<TThinkingLevel extends string = string> {
|
|
100
102
|
signal?: AbortSignal;
|
|
@@ -177,6 +179,7 @@ export declare function defineModel<const TThinkingLevel extends string>(model:
|
|
|
177
179
|
name: string;
|
|
178
180
|
thinkingLevels: readonly TThinkingLevel[];
|
|
179
181
|
defaultThinkingLevel: TThinkingLevel;
|
|
182
|
+
contextWindow?: number;
|
|
180
183
|
}): Model<TThinkingLevel>;
|
|
181
184
|
/** Statically typed helper for constructing a provider definition. */
|
|
182
185
|
export declare function defineProvider(provider: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../sources/providers/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../sources/providers/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;AAC7E,MAAM,MAAM,iBAAiB,GAAG,uBAAuB,CAAC;AAExD,gCAAgC;AAChC,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,mDAAmD;AACnD,MAAM,WAAW,eAAe;IAC5B,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,qDAAqD;AACrD,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;CAChC;AAED,8CAA8C;AAC9C,MAAM,WAAW,QAAQ;IACrB,IAAI,EAAE,UAAU,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,YAAY,CAAC;AACrD,MAAM,MAAM,gBAAgB,GAAG,WAAW,GAAG,eAAe,GAAG,QAAQ,CAAC;AACxE,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG,YAAY,CAAC;AAE3D,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,GAAG,SAAS,WAAW,EAAE,CAAC;IACzC,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC7B,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,KAAK,CAAC;IACb,UAAU,EAAE,UAAU,CAAC;IACvB,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAC9B,IAAI,EAAE,YAAY,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,OAAO,GAAG,WAAW,GAAG,gBAAgB,GAAG,iBAAiB,CAAC;AAEzE,MAAM,WAAW,IAAI,CAAC,WAAW,SAAS,OAAO,GAAG,OAAO;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,WAAW,CAAC;CAC3B;AAED,MAAM,WAAW,OAAO;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAC;IAC7B,KAAK,CAAC,EAAE,SAAS,IAAI,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,KAAK;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE;QACF,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;KACjB,CAAC;CACL;AAED,4CAA4C;AAC5C,MAAM,WAAW,KAAK,CAAC,cAAc,SAAS,MAAM,GAAG,MAAM;IACzD,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,SAAS,cAAc,EAAE,CAAC;IAC1C,oBAAoB,EAAE,cAAc,CAAC;IACrC,wEAAwE;IACxE,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa,CAAC,cAAc,SAAS,MAAM,GAAG,MAAM;IACjE,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC7B;AAED,oEAAoE;AACpE,MAAM,MAAM,qBAAqB,GAC3B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,gBAAgB,CAAA;CAAE,GAC5C;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,gBAAgB,CAAA;CAAE,GACvE;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,gBAAgB,CAAA;CAAE,GACtF;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,gBAAgB,CAAA;CAAE,GACtF;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,gBAAgB,CAAA;CAAE,GAC3E;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,gBAAgB,CAAA;CAAE,GAC1F;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,gBAAgB,CAAA;CAAE,GAC1F;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,gBAAgB,CAAA;CAAE,GAC3E;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,gBAAgB,CAAA;CAAE,GAC1F;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,gBAAgB,CAAA;CAAE,GAC7F;IACI,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC,CAAC;IAC3D,OAAO,EAAE,gBAAgB,CAAC;CAC7B,GACD;IACI,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,OAAO,CAAC,UAAU,EAAE,SAAS,GAAG,OAAO,CAAC,CAAC;IACjD,KAAK,EAAE,gBAAgB,CAAC;CAC3B,CAAC;AAER,4EAA4E;AAC5E,MAAM,WAAW,eAAgB,SAAQ,aAAa,CAAC,qBAAqB,CAAC;IACzE,MAAM,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAAC;CACvC;AAED,yDAAyD;AACzD,MAAM,WAAW,QAAQ;IACrB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,CAAC;IAClC,MAAM,CAAC,cAAc,SAAS,MAAM,EAChC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,EAC5B,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,aAAa,CAAC,cAAc,CAAC,GACxC,eAAe,CAAC;CACtB;AAED,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;AAElE,MAAM,MAAM,UAAU,CAAC,OAAO,SAAS,SAAS,KAAK,EAAE,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;AAE3E,MAAM,MAAM,uBAAuB,CAAC,CAAC,SAAS,KAAK,IAC/C,CAAC,SAAS,KAAK,CAAC,MAAM,cAAc,CAAC,GAAG,cAAc,GAAG,KAAK,CAAC;AAEnE,oDAAoD;AACpD,wBAAgB,kBAAkB,CAAC,KAAK,CAAC,WAAW,SAAS,OAAO,EAChE,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,GACxB,IAAI,CAAC,WAAW,CAAC,CAEnB;AAED,mEAAmE;AACnE,wBAAgB,WAAW,CAAC,KAAK,CAAC,cAAc,SAAS,MAAM,EAAE,KAAK,EAAE;IACpE,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,SAAS,cAAc,EAAE,CAAC;IAC1C,oBAAoB,EAAE,cAAc,CAAC;IACrC,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B,GAAG,KAAK,CAAC,cAAc,CAAC,CAExB;AAED,sEAAsE;AACtE,wBAAgB,cAAc,CAAC,QAAQ,EAAE;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,SAAS,KAAK,EAAE,CAAC;IACzB,MAAM,CAAC,cAAc,SAAS,MAAM,EAChC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,EAC5B,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,aAAa,CAAC,cAAc,CAAC,GACxC,eAAe,CAAC;CACtB,GAAG,QAAQ,CAEX"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createCodeReviewPrompt.d.ts","sourceRoot":"","sources":["../../sources/review/createCodeReviewPrompt.ts"],"names":[],"mappings":"AAAA,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAU1E"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export function createCodeReviewPrompt(command) {
|
|
2
|
+
const match = /^\/review(?:\s+([\s\S]*))?$/u.exec(command.trim());
|
|
3
|
+
if (match === null)
|
|
4
|
+
return undefined;
|
|
5
|
+
const focus = match[1]?.trim() ?? "";
|
|
6
|
+
return `Review the current workspace changes and identify actionable issues.
|
|
7
|
+
|
|
8
|
+
Inspect the repository state and the complete relevant diff, including staged, unstaged, and untracked changes. Read surrounding code when needed to verify whether a potential issue is real. Do not modify files or implement fixes.
|
|
9
|
+
|
|
10
|
+
Lead with findings ordered by severity. For each finding, explain the concrete impact and cite the relevant file and line. Prioritize correctness, regressions, security, data loss, broken user flows, and missing tests that leave changed behavior unverified. Keep summaries brief and secondary. If you find no issues, say so clearly and mention any remaining test or verification gaps.${focus.length === 0 ? "" : `\n\nThe user asked you to focus especially on: ${focus}`}`;
|
|
11
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../sources/review/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { createCodeReviewPrompt } from "./createCodeReviewPrompt.js";
|
|
@@ -1,19 +1,28 @@
|
|
|
1
|
-
import { type SpawnSubagentRequest, type SpawnSubagentResult } from "../agent/index.js";
|
|
1
|
+
import { type ManagedSubagent, type SpawnSubagentRequest, type SpawnSubagentResult, type WaitForSubagentResult } from "../agent/index.js";
|
|
2
2
|
import type { CreateSessionRequest, SessionAgentMetadata } from "../protocol/index.js";
|
|
3
3
|
import type { InMemorySession } from "./InMemorySession.js";
|
|
4
4
|
export declare const DEFAULT_MAX_SUBAGENT_DEPTH = 3;
|
|
5
|
+
export declare const DEFAULT_MAX_ACTIVE_SUBAGENTS = 4;
|
|
5
6
|
export interface AgentSessionRepository {
|
|
6
7
|
createSubagent(request: CreateSessionRequest, metadata: SessionAgentMetadata): InMemorySession;
|
|
7
8
|
get(sessionId: string): InMemorySession | undefined;
|
|
9
|
+
listByRoot(rootSessionId: string): readonly InMemorySession[];
|
|
8
10
|
}
|
|
9
11
|
export interface AgentSessionManagerOptions {
|
|
12
|
+
maxActive?: number;
|
|
10
13
|
maxDepth?: number;
|
|
11
14
|
repository: AgentSessionRepository;
|
|
12
15
|
}
|
|
13
16
|
export declare class AgentSessionManager {
|
|
14
17
|
#private;
|
|
18
|
+
readonly maxActive: number;
|
|
15
19
|
readonly maxDepth: number;
|
|
16
20
|
constructor(options: AgentSessionManagerOptions);
|
|
21
|
+
taskSession(sessionId: string): InMemorySession | undefined;
|
|
22
|
+
followUp(parentSessionId: string, target: string, message: string): ManagedSubagent;
|
|
23
|
+
interrupt(parentSessionId: string, target: string): ManagedSubagent;
|
|
24
|
+
list(parentSessionId: string, pathPrefix?: string): readonly ManagedSubagent[];
|
|
17
25
|
spawn(parentSessionId: string, request: SpawnSubagentRequest, signal?: AbortSignal): Promise<SpawnSubagentResult>;
|
|
26
|
+
wait(parentSessionId: string, timeoutMs?: number, signal?: AbortSignal): Promise<WaitForSubagentResult>;
|
|
18
27
|
}
|
|
19
28
|
//# sourceMappingURL=AgentSessionManager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentSessionManager.d.ts","sourceRoot":"","sources":["../../sources/server/AgentSessionManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,
|
|
1
|
+
{"version":3,"file":"AgentSessionManager.d.ts","sourceRoot":"","sources":["../../sources/server/AgentSessionManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EAExB,KAAK,qBAAqB,EAC7B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACvF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAC5C,eAAO,MAAM,4BAA4B,IAAI,CAAC;AAE9C,MAAM,WAAW,sBAAsB;IACnC,cAAc,CAAC,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,oBAAoB,GAAG,eAAe,CAAC;IAC/F,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAAC;IACpD,UAAU,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,eAAe,EAAE,CAAC;CACjE;AAED,MAAM,WAAW,0BAA0B;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,sBAAsB,CAAC;CACtC;AAED,qBAAa,mBAAmB;;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;gBAId,OAAO,EAAE,0BAA0B;IAM/C,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAM3D,QAAQ,CAAC,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,eAAe;IASnF,SAAS,CAAC,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,eAAe;IAQnE,IAAI,CAAC,eAAe,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,eAAe,EAAE;IAYxE,KAAK,CACP,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,oBAAoB,EAC7B,MAAM,CAAC,EAAE,WAAW,GACrB,OAAO,CAAC,mBAAmB,CAAC;IAiFzB,IAAI,CACN,eAAe,EAAE,MAAM,EACvB,SAAS,SAAS,EAClB,MAAM,CAAC,EAAE,WAAW,GACrB,OAAO,CAAC,qBAAqB,CAAC;CA0KpC"}
|
|
@@ -1,12 +1,47 @@
|
|
|
1
1
|
import { createSubagentInstructions, findLastAgentResponseText, } from "../agent/index.js";
|
|
2
2
|
export const DEFAULT_MAX_SUBAGENT_DEPTH = 3;
|
|
3
|
+
export const DEFAULT_MAX_ACTIVE_SUBAGENTS = 4;
|
|
3
4
|
export class AgentSessionManager {
|
|
5
|
+
maxActive;
|
|
4
6
|
maxDepth;
|
|
5
7
|
#repository;
|
|
6
8
|
constructor(options) {
|
|
7
9
|
this.#repository = options.repository;
|
|
10
|
+
this.maxActive = options.maxActive ?? DEFAULT_MAX_ACTIVE_SUBAGENTS;
|
|
8
11
|
this.maxDepth = options.maxDepth ?? DEFAULT_MAX_SUBAGENT_DEPTH;
|
|
9
12
|
}
|
|
13
|
+
taskSession(sessionId) {
|
|
14
|
+
const session = this.#repository.get(sessionId);
|
|
15
|
+
if (session === undefined)
|
|
16
|
+
return undefined;
|
|
17
|
+
return this.#repository.get(session.agentMetadata().rootSessionId) ?? session;
|
|
18
|
+
}
|
|
19
|
+
followUp(parentSessionId, target, message) {
|
|
20
|
+
const child = this.#resolveTarget(parentSessionId, target);
|
|
21
|
+
const submitted = child.submit({ text: message });
|
|
22
|
+
const parent = this.#parentFor(child);
|
|
23
|
+
parent?.recordSubagentChanged(child.subagentSummary());
|
|
24
|
+
void this.#monitorBackground(parent, child, submitted.runId);
|
|
25
|
+
return this.#managedSubagent(child);
|
|
26
|
+
}
|
|
27
|
+
interrupt(parentSessionId, target) {
|
|
28
|
+
const child = this.#resolveTarget(parentSessionId, target);
|
|
29
|
+
const previous = this.#managedSubagent(child);
|
|
30
|
+
child.abort();
|
|
31
|
+
this.#parentFor(child)?.recordSubagentChanged(child.subagentSummary());
|
|
32
|
+
return previous;
|
|
33
|
+
}
|
|
34
|
+
list(parentSessionId, pathPrefix) {
|
|
35
|
+
const root = this.#rootFor(parentSessionId);
|
|
36
|
+
const agents = this.#repository
|
|
37
|
+
.listByRoot(root.id)
|
|
38
|
+
.filter((session) => session.isSubagent())
|
|
39
|
+
.map((session) => this.#managedSubagent(session))
|
|
40
|
+
.sort((left, right) => left.path.localeCompare(right.path));
|
|
41
|
+
return pathPrefix === undefined
|
|
42
|
+
? agents
|
|
43
|
+
: agents.filter((agent) => agent.path.startsWith(pathPrefix));
|
|
44
|
+
}
|
|
10
45
|
async spawn(parentSessionId, request, signal) {
|
|
11
46
|
const parent = this.#repository.get(parentSessionId);
|
|
12
47
|
if (parent === undefined) {
|
|
@@ -17,6 +52,16 @@ export class AgentSessionManager {
|
|
|
17
52
|
if (depth > this.maxDepth) {
|
|
18
53
|
throw new Error(`Subagents are limited to ${this.maxDepth} nested levels.`);
|
|
19
54
|
}
|
|
55
|
+
const active = this.#repository
|
|
56
|
+
.listByRoot(parentMetadata.rootSessionId)
|
|
57
|
+
.filter((session) => {
|
|
58
|
+
const status = session.subagentSummary().status;
|
|
59
|
+
return status === "queued" || status === "running";
|
|
60
|
+
});
|
|
61
|
+
if (active.length >= this.maxActive) {
|
|
62
|
+
throw new Error(`No more than ${this.maxActive} subagents can run at once.`);
|
|
63
|
+
}
|
|
64
|
+
const taskName = this.#taskName(parent, request.taskName, request.description);
|
|
20
65
|
const metadata = {
|
|
21
66
|
depth,
|
|
22
67
|
description: request.description,
|
|
@@ -25,6 +70,7 @@ export class AgentSessionManager {
|
|
|
25
70
|
? { parentToolCallId: request.parentToolCallId }
|
|
26
71
|
: {}),
|
|
27
72
|
rootSessionId: parentMetadata.rootSessionId,
|
|
73
|
+
taskName,
|
|
28
74
|
type: "subagent",
|
|
29
75
|
};
|
|
30
76
|
const parentRequest = parent.requestForSubagent();
|
|
@@ -32,26 +78,31 @@ export class AgentSessionManager {
|
|
|
32
78
|
...parentRequest,
|
|
33
79
|
instructions: createSubagentInstructions(parentRequest.instructions, depth, this.maxDepth),
|
|
34
80
|
}, metadata);
|
|
81
|
+
const submitted = child.submit({ text: request.prompt });
|
|
82
|
+
parent.recordSubagentChanged(child.subagentSummary());
|
|
83
|
+
if (request.background === true) {
|
|
84
|
+
void this.#monitorBackground(parent, child, submitted.runId);
|
|
85
|
+
return {
|
|
86
|
+
output: "The subagent is running in the background.",
|
|
87
|
+
path: this.#pathFor(child),
|
|
88
|
+
sessionId: child.id,
|
|
89
|
+
status: "running",
|
|
90
|
+
taskName,
|
|
91
|
+
};
|
|
92
|
+
}
|
|
35
93
|
const abortChild = () => child.abort();
|
|
36
94
|
signal?.addEventListener("abort", abortChild, { once: true });
|
|
37
95
|
try {
|
|
38
|
-
|
|
39
|
-
parent.recordSubagentChanged(child.subagentSummary());
|
|
40
|
-
if (signal?.aborted) {
|
|
96
|
+
if (signal?.aborted)
|
|
41
97
|
child.abort();
|
|
42
|
-
}
|
|
43
98
|
const completion = await child.waitForRun(submitted.runId);
|
|
44
|
-
|
|
45
|
-
parent.recordSubagentChanged(summary);
|
|
46
|
-
const output = (completion.status === "error" ? completion.errorMessage : undefined) ??
|
|
47
|
-
findLastAgentResponseText(child.snapshot().snapshot.messages) ??
|
|
48
|
-
(completion.status === "aborted"
|
|
49
|
-
? "The subagent was stopped before it returned a response."
|
|
50
|
-
: "The subagent finished without a text response.");
|
|
99
|
+
parent.recordSubagentChanged(child.subagentSummary());
|
|
51
100
|
return {
|
|
52
|
-
output,
|
|
101
|
+
output: this.#completionOutput(child, completion.status, completion.errorMessage),
|
|
102
|
+
path: this.#pathFor(child),
|
|
53
103
|
sessionId: child.id,
|
|
54
104
|
status: completion.status,
|
|
105
|
+
taskName,
|
|
55
106
|
};
|
|
56
107
|
}
|
|
57
108
|
catch (error) {
|
|
@@ -62,4 +113,144 @@ export class AgentSessionManager {
|
|
|
62
113
|
signal?.removeEventListener("abort", abortChild);
|
|
63
114
|
}
|
|
64
115
|
}
|
|
116
|
+
async wait(parentSessionId, timeoutMs = 30_000, signal) {
|
|
117
|
+
const initial = this.list(parentSessionId);
|
|
118
|
+
const running = initial.filter((agent) => agent.status === "running");
|
|
119
|
+
const terminal = initial.filter((agent) => agent.status !== "running");
|
|
120
|
+
if (running.length === 0) {
|
|
121
|
+
return { agents: terminal, timedOut: false };
|
|
122
|
+
}
|
|
123
|
+
const runningSessionIds = new Set(running.map((agent) => agent.sessionId));
|
|
124
|
+
const deadline = Date.now() + Math.max(0, timeoutMs);
|
|
125
|
+
while (Date.now() < deadline) {
|
|
126
|
+
if (signal?.aborted)
|
|
127
|
+
throw new Error("Waiting for subagents was cancelled.");
|
|
128
|
+
await new Promise((resolve) => setTimeout(resolve, Math.min(100, deadline - Date.now())));
|
|
129
|
+
const current = this.list(parentSessionId);
|
|
130
|
+
const changed = current.filter((agent) => runningSessionIds.has(agent.sessionId) && agent.status !== "running");
|
|
131
|
+
if (changed.length > 0)
|
|
132
|
+
return { agents: changed, timedOut: false };
|
|
133
|
+
}
|
|
134
|
+
return { agents: [], timedOut: true };
|
|
135
|
+
}
|
|
136
|
+
#completionOutput(child, status, errorMessage) {
|
|
137
|
+
return ((status === "error" ? errorMessage : undefined) ??
|
|
138
|
+
findLastAgentResponseText(child.snapshot().snapshot.messages) ??
|
|
139
|
+
(status === "aborted"
|
|
140
|
+
? "The subagent was stopped before it returned a response."
|
|
141
|
+
: "The subagent finished without a text response."));
|
|
142
|
+
}
|
|
143
|
+
#managedSubagent(child) {
|
|
144
|
+
const summary = child.subagentSummary();
|
|
145
|
+
return {
|
|
146
|
+
description: summary.description,
|
|
147
|
+
path: this.#pathFor(child),
|
|
148
|
+
sessionId: child.id,
|
|
149
|
+
status: this.#runStatus(summary.status),
|
|
150
|
+
taskName: child.agentMetadata().taskName ?? child.id,
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
async #monitorBackground(parent, child, runId) {
|
|
154
|
+
try {
|
|
155
|
+
const completion = await child.waitForRun(runId);
|
|
156
|
+
parent?.recordSubagentChanged(child.subagentSummary());
|
|
157
|
+
if (parent === undefined)
|
|
158
|
+
return;
|
|
159
|
+
const output = this.#completionOutput(child, completion.status, completion.errorMessage);
|
|
160
|
+
const taskName = child.agentMetadata().taskName ?? child.id;
|
|
161
|
+
const description = child.subagentSummary().description;
|
|
162
|
+
const outcome = completion.status === "completed"
|
|
163
|
+
? "completed"
|
|
164
|
+
: completion.status === "aborted"
|
|
165
|
+
? "was stopped"
|
|
166
|
+
: "failed";
|
|
167
|
+
parent.submit({
|
|
168
|
+
displayText: `Background work "${description}" ${outcome}.`,
|
|
169
|
+
text: [
|
|
170
|
+
"<subagent-notification>",
|
|
171
|
+
`Task: ${taskName}`,
|
|
172
|
+
`Status: ${completion.status}`,
|
|
173
|
+
`Result: ${output}`,
|
|
174
|
+
"</subagent-notification>",
|
|
175
|
+
].join("\n"),
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
catch {
|
|
179
|
+
parent?.recordSubagentChanged(child.subagentSummary());
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
#parentFor(child) {
|
|
183
|
+
const parentSessionId = child.agentMetadata().parentSessionId;
|
|
184
|
+
return parentSessionId === undefined ? undefined : this.#repository.get(parentSessionId);
|
|
185
|
+
}
|
|
186
|
+
#pathFor(child) {
|
|
187
|
+
const names = [];
|
|
188
|
+
let current = child;
|
|
189
|
+
while (current !== undefined && current.isSubagent()) {
|
|
190
|
+
const metadata = current.agentMetadata();
|
|
191
|
+
names.unshift(metadata.taskName ?? current.id);
|
|
192
|
+
current =
|
|
193
|
+
metadata.parentSessionId === undefined
|
|
194
|
+
? undefined
|
|
195
|
+
: this.#repository.get(metadata.parentSessionId);
|
|
196
|
+
}
|
|
197
|
+
return `/root/${names.join("/")}`;
|
|
198
|
+
}
|
|
199
|
+
#resolveTarget(parentSessionId, target) {
|
|
200
|
+
const root = this.#rootFor(parentSessionId);
|
|
201
|
+
const matches = this.#repository.listByRoot(root.id).filter((session) => {
|
|
202
|
+
if (!session.isSubagent())
|
|
203
|
+
return false;
|
|
204
|
+
const metadata = session.agentMetadata();
|
|
205
|
+
return (session.id === target ||
|
|
206
|
+
metadata.taskName === target ||
|
|
207
|
+
this.#pathFor(session) === target);
|
|
208
|
+
});
|
|
209
|
+
if (matches.length === 0)
|
|
210
|
+
throw new Error(`Subagent '${target}' was not found.`);
|
|
211
|
+
if (matches.length > 1) {
|
|
212
|
+
throw new Error(`Subagent name '${target}' is ambiguous. Use its full task path.`);
|
|
213
|
+
}
|
|
214
|
+
return matches[0];
|
|
215
|
+
}
|
|
216
|
+
#rootFor(sessionId) {
|
|
217
|
+
const session = this.#repository.get(sessionId);
|
|
218
|
+
if (session === undefined)
|
|
219
|
+
throw new Error("The current session is no longer available.");
|
|
220
|
+
return this.#repository.get(session.agentMetadata().rootSessionId) ?? session;
|
|
221
|
+
}
|
|
222
|
+
#runStatus(status) {
|
|
223
|
+
if (status === "aborted" || status === "error" || status === "completed")
|
|
224
|
+
return status;
|
|
225
|
+
return "running";
|
|
226
|
+
}
|
|
227
|
+
#taskName(parent, requested, description) {
|
|
228
|
+
if (requested !== undefined && !/^[a-z0-9_]+$/u.test(requested)) {
|
|
229
|
+
throw new Error("Task names may contain only lowercase letters, numbers, and underscores.");
|
|
230
|
+
}
|
|
231
|
+
const root = this.#rootFor(parent.id);
|
|
232
|
+
const existing = new Set(this.#repository
|
|
233
|
+
.listByRoot(root.id)
|
|
234
|
+
.map((session) => session.agentMetadata().taskName)
|
|
235
|
+
.filter((name) => name !== undefined));
|
|
236
|
+
if (requested !== undefined) {
|
|
237
|
+
if (existing.has(requested)) {
|
|
238
|
+
throw new Error(`A subagent named '${requested}' already exists in this session.`);
|
|
239
|
+
}
|
|
240
|
+
return requested;
|
|
241
|
+
}
|
|
242
|
+
const normalized = description
|
|
243
|
+
.toLowerCase()
|
|
244
|
+
.replace(/[^a-z0-9]+/gu, "_")
|
|
245
|
+
.replace(/^_+|_+$/gu, "")
|
|
246
|
+
.slice(0, 32);
|
|
247
|
+
const base = normalized.length > 0 ? normalized : "task";
|
|
248
|
+
let candidate = base;
|
|
249
|
+
let suffix = 2;
|
|
250
|
+
while (existing.has(candidate)) {
|
|
251
|
+
candidate = `${base}_${suffix}`;
|
|
252
|
+
suffix += 1;
|
|
253
|
+
}
|
|
254
|
+
return candidate;
|
|
255
|
+
}
|
|
65
256
|
}
|
|
@@ -1,6 +1,14 @@
|
|
|
1
|
+
import type { AgentCompactionResult } from "../agent/index.js";
|
|
1
2
|
import type { Message, UserMessage } from "../agent/types.js";
|
|
2
|
-
import
|
|
3
|
+
import { type ChangeGoalStatusRequest, type CreateGoalRequest, type SessionGoal } from "../goals/index.js";
|
|
4
|
+
import type { CodingAssistantRuntime } from "../app/CodingAssistantRuntime.js";
|
|
5
|
+
import { type CreateCodingAssistantAgentOptions } from "../app/createCodingAssistantAgent.js";
|
|
6
|
+
import type { ChangeEffortRequest, ChangeModelRequest, ChangePermissionModeRequest, CreateSessionRequest, EventId, ModelCatalog, ProtocolSession, SessionEvent, SessionAgentMetadata, SessionInterruption, SessionStatus, SessionSummary, SubagentSummary, SessionTitleStatus, SubmitMessageRequest, SubmitMessageResponse, SteerMessageResponse } from "../protocol/index.js";
|
|
3
7
|
import type { Model } from "../providers/types.js";
|
|
8
|
+
import type { UserInputRequest, UserInputResponse } from "../user-input/index.js";
|
|
9
|
+
import { type McpToolProvider } from "../mcp/index.js";
|
|
10
|
+
import type { CreateTaskRequest, SessionTask, UpdateTaskRequest, UpdateTaskResult } from "../tasks/index.js";
|
|
11
|
+
import { type PermissionMode } from "../permissions/index.js";
|
|
4
12
|
import { SessionEventLog } from "./SessionEventLog.js";
|
|
5
13
|
import type { AgentSessionManager } from "./AgentSessionManager.js";
|
|
6
14
|
export interface PersistedSessionMessage {
|
|
@@ -11,6 +19,7 @@ export interface PersistedSessionMessage {
|
|
|
11
19
|
}
|
|
12
20
|
export interface PersistedQueuedRun {
|
|
13
21
|
displayText: string;
|
|
22
|
+
kind: "goal" | "user";
|
|
14
23
|
runId: string;
|
|
15
24
|
text: string;
|
|
16
25
|
userMessage: UserMessage;
|
|
@@ -20,17 +29,22 @@ export interface PersistedSessionState {
|
|
|
20
29
|
agent: SessionAgentMetadata;
|
|
21
30
|
agentId: string;
|
|
22
31
|
cwd: string;
|
|
32
|
+
contextMessages?: readonly Message[];
|
|
23
33
|
effort?: string;
|
|
24
34
|
id: string;
|
|
25
35
|
instructions?: string;
|
|
36
|
+
goal?: SessionGoal;
|
|
26
37
|
interruption?: SessionInterruption;
|
|
27
38
|
lastMessageAt?: number;
|
|
28
39
|
messages: readonly PersistedSessionMessage[];
|
|
29
40
|
modelId: string;
|
|
30
41
|
models: readonly Model[];
|
|
31
42
|
providerId: string;
|
|
43
|
+
permissionMode: PermissionMode;
|
|
32
44
|
queuedRuns: readonly PersistedQueuedRun[];
|
|
45
|
+
nextTaskId: number;
|
|
33
46
|
status: SessionStatus;
|
|
47
|
+
tasks: readonly SessionTask[];
|
|
34
48
|
title?: string;
|
|
35
49
|
titleError?: string;
|
|
36
50
|
titleStatus: SessionTitleStatus;
|
|
@@ -46,11 +60,13 @@ export interface InMemorySessionPersistence {
|
|
|
46
60
|
export interface InMemorySessionOptions {
|
|
47
61
|
agentManager?: AgentSessionManager;
|
|
48
62
|
createEventId: () => EventId;
|
|
63
|
+
createRuntime?: (options: CreateCodingAssistantAgentOptions) => CodingAssistantRuntime;
|
|
49
64
|
emitCreatedEvent?: boolean;
|
|
50
65
|
events?: readonly SessionEvent[];
|
|
51
66
|
now?: () => number;
|
|
52
67
|
modelCatalog: ModelCatalog;
|
|
53
68
|
metadata?: SessionAgentMetadata;
|
|
69
|
+
mcpToolProvider?: McpToolProvider;
|
|
54
70
|
onAppendEvent?: (event: SessionEvent) => void;
|
|
55
71
|
persistence?: InMemorySessionPersistence;
|
|
56
72
|
request: CreateSessionRequest;
|
|
@@ -72,9 +88,25 @@ export declare class InMemorySession {
|
|
|
72
88
|
agentMetadata(): SessionAgentMetadata;
|
|
73
89
|
changeModel(request: ChangeModelRequest): ProtocolSession;
|
|
74
90
|
changeEffort(request: ChangeEffortRequest): ProtocolSession;
|
|
91
|
+
changePermissionMode(request: ChangePermissionModeRequest): ProtocolSession;
|
|
92
|
+
setGoal(request: CreateGoalRequest): SessionGoal;
|
|
93
|
+
changeGoalStatus(request: ChangeGoalStatusRequest, options?: {
|
|
94
|
+
stopActiveGoalRun?: boolean;
|
|
95
|
+
}): SessionGoal;
|
|
96
|
+
clearGoal(): boolean;
|
|
97
|
+
goal(): SessionGoal | undefined;
|
|
98
|
+
requestUserInput(request: UserInputRequest, options?: {
|
|
99
|
+
signal?: AbortSignal;
|
|
100
|
+
}): Promise<UserInputResponse>;
|
|
101
|
+
answerUserInput(requestId: string, response: UserInputResponse): ProtocolSession | undefined;
|
|
102
|
+
createTask(request: CreateTaskRequest): SessionTask;
|
|
103
|
+
getTask(taskId: string): SessionTask | undefined;
|
|
104
|
+
listTasks(): readonly SessionTask[];
|
|
105
|
+
updateTask(taskId: string, request: UpdateTaskRequest): UpdateTaskResult;
|
|
75
106
|
emitCreatedEvent(): void;
|
|
76
107
|
markInterrupted(interruption: SessionInterruption): void;
|
|
77
108
|
reset(): ProtocolSession;
|
|
109
|
+
compact(signal?: AbortSignal): Promise<AgentCompactionResult>;
|
|
78
110
|
isSubagent(): boolean;
|
|
79
111
|
recordSubagentChanged(subagent: SubagentSummary): void;
|
|
80
112
|
requestForSubagent(): CreateSessionRequest;
|
|
@@ -82,6 +114,7 @@ export declare class InMemorySession {
|
|
|
82
114
|
summary(): SessionSummary;
|
|
83
115
|
state(): PersistedSessionState;
|
|
84
116
|
submit(request: SubmitMessageRequest): SubmitMessageResponse;
|
|
117
|
+
steer(request: SubmitMessageRequest): SteerMessageResponse;
|
|
85
118
|
subagentSummary(): SubagentSummary;
|
|
86
119
|
waitForRun(runId: string): Promise<SessionRunCompletion>;
|
|
87
120
|
}
|