@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.
Files changed (382) hide show
  1. package/README.md +144 -1
  2. package/dist/agent/Agent.d.ts +16 -0
  3. package/dist/agent/Agent.d.ts.map +1 -1
  4. package/dist/agent/Agent.js +106 -0
  5. package/dist/agent/compaction/compactConversation.d.ts +22 -0
  6. package/dist/agent/compaction/compactConversation.d.ts.map +1 -0
  7. package/dist/agent/compaction/compactConversation.js +77 -0
  8. package/dist/agent/compaction/estimateMessagesTokens.d.ts +3 -0
  9. package/dist/agent/compaction/estimateMessagesTokens.d.ts.map +1 -0
  10. package/dist/agent/compaction/estimateMessagesTokens.js +39 -0
  11. package/dist/agent/compaction/formatMessagesForCompaction.d.ts +3 -0
  12. package/dist/agent/compaction/formatMessagesForCompaction.d.ts.map +1 -0
  13. package/dist/agent/compaction/formatMessagesForCompaction.js +30 -0
  14. package/dist/agent/compaction/requestCompactionSummary.d.ts +11 -0
  15. package/dist/agent/compaction/requestCompactionSummary.d.ts.map +1 -0
  16. package/dist/agent/compaction/requestCompactionSummary.js +43 -0
  17. package/dist/agent/context/AgentContext.d.ts +8 -0
  18. package/dist/agent/context/AgentContext.d.ts.map +1 -1
  19. package/dist/agent/context/BashContext.d.ts +23 -0
  20. package/dist/agent/context/BashContext.d.ts.map +1 -1
  21. package/dist/agent/context/GoalContext.d.ts +7 -0
  22. package/dist/agent/context/GoalContext.d.ts.map +1 -0
  23. package/dist/agent/context/GoalContext.js +1 -0
  24. package/dist/agent/context/SubagentContext.d.ts +20 -1
  25. package/dist/agent/context/SubagentContext.d.ts.map +1 -1
  26. package/dist/agent/context/TaskContext.d.ts +8 -0
  27. package/dist/agent/context/TaskContext.d.ts.map +1 -0
  28. package/dist/agent/context/TaskContext.js +1 -0
  29. package/dist/agent/context/UserInputContext.d.ts +7 -0
  30. package/dist/agent/context/UserInputContext.d.ts.map +1 -0
  31. package/dist/agent/context/UserInputContext.js +1 -0
  32. package/dist/agent/context/assertCanWritePath.d.ts +3 -0
  33. package/dist/agent/context/assertCanWritePath.d.ts.map +1 -0
  34. package/dist/agent/context/assertCanWritePath.js +11 -0
  35. package/dist/agent/context/createJustBashBashContext.d.ts.map +1 -1
  36. package/dist/agent/context/createJustBashBashContext.js +127 -0
  37. package/dist/agent/context/createNodeAgentContext.d.ts +8 -0
  38. package/dist/agent/context/createNodeAgentContext.d.ts.map +1 -1
  39. package/dist/agent/context/createNodeAgentContext.js +15 -2
  40. package/dist/agent/context/createNodeBashContext.d.ts +2 -0
  41. package/dist/agent/context/createNodeBashContext.d.ts.map +1 -1
  42. package/dist/agent/context/createNodeBashContext.js +123 -4
  43. package/dist/agent/context/createNodeFileSystemContext.d.ts +2 -0
  44. package/dist/agent/context/createNodeFileSystemContext.d.ts.map +1 -1
  45. package/dist/agent/context/createNodeFileSystemContext.js +18 -8
  46. package/dist/agent/context/createSandboxedCommand.d.ts +7 -0
  47. package/dist/agent/context/createSandboxedCommand.d.ts.map +1 -0
  48. package/dist/agent/context/createSandboxedCommand.js +47 -0
  49. package/dist/agent/context/findGitWritablePaths.d.ts +2 -0
  50. package/dist/agent/context/findGitWritablePaths.d.ts.map +1 -0
  51. package/dist/agent/context/findGitWritablePaths.js +54 -0
  52. package/dist/agent/context/isPathInsideWorkspace.d.ts +2 -0
  53. package/dist/agent/context/isPathInsideWorkspace.d.ts.map +1 -0
  54. package/dist/agent/context/isPathInsideWorkspace.js +14 -0
  55. package/dist/agent/context/resolvePotentialPath.d.ts +2 -0
  56. package/dist/agent/context/resolvePotentialPath.d.ts.map +1 -0
  57. package/dist/agent/context/resolvePotentialPath.js +32 -0
  58. package/dist/agent/createPermissionInstructions.d.ts +3 -0
  59. package/dist/agent/createPermissionInstructions.d.ts.map +1 -0
  60. package/dist/agent/createPermissionInstructions.js +12 -0
  61. package/dist/agent/createSubagentInstructions.js +1 -1
  62. package/dist/agent/createSystemPrompt.d.ts.map +1 -1
  63. package/dist/agent/createSystemPrompt.js +4 -0
  64. package/dist/agent/index.d.ts +7 -3
  65. package/dist/agent/index.d.ts.map +1 -1
  66. package/dist/agent/loop.d.ts +16 -2
  67. package/dist/agent/loop.d.ts.map +1 -1
  68. package/dist/agent/loop.js +115 -15
  69. package/dist/agent/printAgentMessageToConsole.d.ts +1 -0
  70. package/dist/agent/printAgentMessageToConsole.d.ts.map +1 -1
  71. package/dist/agent/selectSystemPromptForModel.js +1 -1
  72. package/dist/agent/types.d.ts +1 -0
  73. package/dist/agent/types.d.ts.map +1 -1
  74. package/dist/app/CodingAssistantAgentBackend.d.ts +11 -1
  75. package/dist/app/CodingAssistantAgentBackend.d.ts.map +1 -1
  76. package/dist/app/CodingAssistantApp.d.ts +7 -1
  77. package/dist/app/CodingAssistantApp.d.ts.map +1 -1
  78. package/dist/app/CodingAssistantApp.js +678 -45
  79. package/dist/app/ScrollbackPreservingTerminal.d.ts +5 -0
  80. package/dist/app/ScrollbackPreservingTerminal.d.ts.map +1 -0
  81. package/dist/app/ScrollbackPreservingTerminal.js +7 -0
  82. package/dist/app/StartupStatusApp.js +1 -1
  83. package/dist/app/createCodingAssistantAgent.d.ts +6 -1
  84. package/dist/app/createCodingAssistantAgent.d.ts.map +1 -1
  85. package/dist/app/createCodingAssistantAgent.js +24 -7
  86. package/dist/app/createSlashCommands.d.ts.map +1 -1
  87. package/dist/app/createSlashCommands.js +42 -0
  88. package/dist/app/describeReasoningLevel.d.ts.map +1 -1
  89. package/dist/app/describeReasoningLevel.js +1 -0
  90. package/dist/app/highlightAgentCode.d.ts.map +1 -1
  91. package/dist/app/highlightAgentCode.js +10 -7
  92. package/dist/app/humanizeGoalStatus.d.ts +3 -0
  93. package/dist/app/humanizeGoalStatus.d.ts.map +1 -0
  94. package/dist/app/humanizeGoalStatus.js +9 -0
  95. package/dist/app/humanizePermissionMode.d.ts +3 -0
  96. package/dist/app/humanizePermissionMode.d.ts.map +1 -0
  97. package/dist/app/humanizePermissionMode.js +9 -0
  98. package/dist/app/humanizeReasoningLevel.d.ts.map +1 -1
  99. package/dist/app/humanizeReasoningLevel.js +3 -0
  100. package/dist/app/humanizeToolName.d.ts +2 -0
  101. package/dist/app/humanizeToolName.d.ts.map +1 -0
  102. package/dist/app/humanizeToolName.js +40 -0
  103. package/dist/app/main.d.ts.map +1 -1
  104. package/dist/app/main.js +4 -0
  105. package/dist/app/renderAgentMarkdown.d.ts.map +1 -1
  106. package/dist/app/renderAgentMarkdown.js +2 -1
  107. package/dist/app/runApp.d.ts +2 -0
  108. package/dist/app/runApp.d.ts.map +1 -1
  109. package/dist/app/runApp.js +48 -3
  110. package/dist/app/sanitizeTerminalText.d.ts +2 -0
  111. package/dist/app/sanitizeTerminalText.d.ts.map +1 -0
  112. package/dist/app/sanitizeTerminalText.js +55 -0
  113. package/dist/app/upsertSubagentSummary.d.ts +3 -0
  114. package/dist/app/upsertSubagentSummary.d.ts.map +1 -0
  115. package/dist/app/upsertSubagentSummary.js +6 -0
  116. package/dist/client/ProtocolHttpClient.d.ts +12 -1
  117. package/dist/client/ProtocolHttpClient.d.ts.map +1 -1
  118. package/dist/client/ProtocolHttpClient.js +21 -0
  119. package/dist/client/RemoteAgent.d.ts +11 -1
  120. package/dist/client/RemoteAgent.d.ts.map +1 -1
  121. package/dist/client/RemoteAgent.js +91 -1
  122. package/dist/config/createConfigFile.d.ts.map +1 -1
  123. package/dist/config/createConfigFile.js +5 -0
  124. package/dist/config/defaultConfig.d.ts.map +1 -1
  125. package/dist/config/defaultConfig.js +2 -0
  126. package/dist/config/mergeConfigValues.d.ts.map +1 -1
  127. package/dist/config/mergeConfigValues.js +8 -1
  128. package/dist/config/parseConfigToml.d.ts.map +1 -1
  129. package/dist/config/parseConfigToml.js +88 -0
  130. package/dist/config/serializeMcpServers.d.ts +3 -0
  131. package/dist/config/serializeMcpServers.d.ts.map +1 -0
  132. package/dist/config/serializeMcpServers.js +34 -0
  133. package/dist/config/types.d.ts +6 -0
  134. package/dist/config/types.d.ts.map +1 -1
  135. package/dist/config/writeRuntimeConfig.d.ts.map +1 -1
  136. package/dist/config/writeRuntimeConfig.js +3 -0
  137. package/dist/goals/SessionGoal.d.ts +14 -0
  138. package/dist/goals/SessionGoal.d.ts.map +1 -0
  139. package/dist/goals/SessionGoal.js +1 -0
  140. package/dist/goals/createGoalContinuationPrompt.d.ts +3 -0
  141. package/dist/goals/createGoalContinuationPrompt.d.ts.map +1 -0
  142. package/dist/goals/createGoalContinuationPrompt.js +17 -0
  143. package/dist/goals/index.d.ts +5 -0
  144. package/dist/goals/index.d.ts.map +1 -0
  145. package/dist/goals/index.js +3 -0
  146. package/dist/goals/isGoalStatus.d.ts +3 -0
  147. package/dist/goals/isGoalStatus.d.ts.map +1 -0
  148. package/dist/goals/isGoalStatus.js +3 -0
  149. package/dist/goals/normalizeGoalObjective.d.ts +3 -0
  150. package/dist/goals/normalizeGoalObjective.d.ts.map +1 -0
  151. package/dist/goals/normalizeGoalObjective.js +11 -0
  152. package/dist/mcp/McpClientManager.d.ts +12 -0
  153. package/dist/mcp/McpClientManager.d.ts.map +1 -0
  154. package/dist/mcp/McpClientManager.js +123 -0
  155. package/dist/mcp/connectMcpServer.d.ts +8 -0
  156. package/dist/mcp/connectMcpServer.d.ts.map +1 -0
  157. package/dist/mcp/connectMcpServer.js +47 -0
  158. package/dist/mcp/createMcpTool.d.ts +11 -0
  159. package/dist/mcp/createMcpTool.d.ts.map +1 -0
  160. package/dist/mcp/createMcpTool.js +43 -0
  161. package/dist/mcp/index.d.ts +5 -0
  162. package/dist/mcp/index.d.ts.map +1 -0
  163. package/dist/mcp/index.js +3 -0
  164. package/dist/mcp/loadMcpServerConfigs.d.ts +4 -0
  165. package/dist/mcp/loadMcpServerConfigs.d.ts.map +1 -0
  166. package/dist/mcp/loadMcpServerConfigs.js +122 -0
  167. package/dist/mcp/mcpResultToContentBlocks.d.ts +3 -0
  168. package/dist/mcp/mcpResultToContentBlocks.d.ts.map +1 -0
  169. package/dist/mcp/mcpResultToContentBlocks.js +51 -0
  170. package/dist/mcp/mergeMcpTools.d.ts +7 -0
  171. package/dist/mcp/mergeMcpTools.d.ts.map +1 -0
  172. package/dist/mcp/mergeMcpTools.js +34 -0
  173. package/dist/mcp/normalizeMcpName.d.ts +2 -0
  174. package/dist/mcp/normalizeMcpName.d.ts.map +1 -0
  175. package/dist/mcp/normalizeMcpName.js +3 -0
  176. package/dist/mcp/types.d.ts +37 -0
  177. package/dist/mcp/types.d.ts.map +1 -0
  178. package/dist/mcp/types.js +1 -0
  179. package/dist/permissions/PermissionContext.d.ts +7 -0
  180. package/dist/permissions/PermissionContext.d.ts.map +1 -0
  181. package/dist/permissions/PermissionContext.js +1 -0
  182. package/dist/permissions/PermissionMode.d.ts +3 -0
  183. package/dist/permissions/PermissionMode.d.ts.map +1 -0
  184. package/dist/permissions/PermissionMode.js +1 -0
  185. package/dist/permissions/createPermissionContext.d.ts +4 -0
  186. package/dist/permissions/createPermissionContext.d.ts.map +1 -0
  187. package/dist/permissions/createPermissionContext.js +16 -0
  188. package/dist/permissions/index.d.ts +13 -0
  189. package/dist/permissions/index.d.ts.map +1 -0
  190. package/dist/permissions/index.js +9 -0
  191. package/dist/permissions/isPermissionMode.d.ts +3 -0
  192. package/dist/permissions/isPermissionMode.d.ts.map +1 -0
  193. package/dist/permissions/isPermissionMode.js +6 -0
  194. package/dist/permissions/parseAutoPermissionReview.d.ts +7 -0
  195. package/dist/permissions/parseAutoPermissionReview.d.ts.map +1 -0
  196. package/dist/permissions/parseAutoPermissionReview.js +33 -0
  197. package/dist/permissions/parsePermissionMode.d.ts +3 -0
  198. package/dist/permissions/parsePermissionMode.d.ts.map +1 -0
  199. package/dist/permissions/parsePermissionMode.js +6 -0
  200. package/dist/permissions/requestAutoPermissionApproval.d.ts +9 -0
  201. package/dist/permissions/requestAutoPermissionApproval.d.ts.map +1 -0
  202. package/dist/permissions/requestAutoPermissionApproval.js +26 -0
  203. package/dist/permissions/reviewAutoPermission.d.ts +13 -0
  204. package/dist/permissions/reviewAutoPermission.d.ts.map +1 -0
  205. package/dist/permissions/reviewAutoPermission.js +70 -0
  206. package/dist/permissions/shouldElevateToolInAutoMode.d.ts +2 -0
  207. package/dist/permissions/shouldElevateToolInAutoMode.d.ts.map +1 -0
  208. package/dist/permissions/shouldElevateToolInAutoMode.js +37 -0
  209. package/dist/permissions/shouldReviewToolInAutoMode.d.ts +2 -0
  210. package/dist/permissions/shouldReviewToolInAutoMode.d.ts.map +1 -0
  211. package/dist/permissions/shouldReviewToolInAutoMode.js +85 -0
  212. package/dist/permissions/summarizePermissionAction.d.ts +2 -0
  213. package/dist/permissions/summarizePermissionAction.d.ts.map +1 -0
  214. package/dist/permissions/summarizePermissionAction.js +29 -0
  215. package/dist/protocol/SessionProtocol.d.ts +49 -2
  216. package/dist/protocol/SessionProtocol.d.ts.map +1 -1
  217. package/dist/protocol/index.d.ts +4 -1
  218. package/dist/protocol/index.d.ts.map +1 -1
  219. package/dist/providers/claude-sdk.d.ts.map +1 -1
  220. package/dist/providers/claude-sdk.js +7 -6
  221. package/dist/providers/codex.d.ts.map +1 -1
  222. package/dist/providers/codex.js +52 -6
  223. package/dist/providers/models.d.ts +12 -9
  224. package/dist/providers/models.d.ts.map +1 -1
  225. package/dist/providers/models.js +36 -0
  226. package/dist/providers/types.d.ts +3 -0
  227. package/dist/providers/types.d.ts.map +1 -1
  228. package/dist/review/createCodeReviewPrompt.d.ts +2 -0
  229. package/dist/review/createCodeReviewPrompt.d.ts.map +1 -0
  230. package/dist/review/createCodeReviewPrompt.js +11 -0
  231. package/dist/review/index.d.ts +2 -0
  232. package/dist/review/index.d.ts.map +1 -0
  233. package/dist/review/index.js +1 -0
  234. package/dist/server/AgentSessionManager.d.ts +10 -1
  235. package/dist/server/AgentSessionManager.d.ts.map +1 -1
  236. package/dist/server/AgentSessionManager.js +203 -12
  237. package/dist/server/InMemorySession.d.ts +34 -1
  238. package/dist/server/InMemorySession.d.ts.map +1 -1
  239. package/dist/server/InMemorySession.js +558 -10
  240. package/dist/server/InMemorySessionStore.d.ts +2 -0
  241. package/dist/server/InMemorySessionStore.d.ts.map +1 -1
  242. package/dist/server/InMemorySessionStore.js +7 -0
  243. package/dist/server/PersistentSessionStore.d.ts +2 -0
  244. package/dist/server/PersistentSessionStore.d.ts.map +1 -1
  245. package/dist/server/PersistentSessionStore.js +80 -5
  246. package/dist/server/createGoalTitle.d.ts +2 -0
  247. package/dist/server/createGoalTitle.d.ts.map +1 -0
  248. package/dist/server/createGoalTitle.js +4 -0
  249. package/dist/server/createModelCatalog.js +2 -2
  250. package/dist/server/createProtocolHttpServer.d.ts.map +1 -1
  251. package/dist/server/createProtocolHttpServer.js +119 -2
  252. package/dist/server/runLocalProtocolServer.d.ts.map +1 -1
  253. package/dist/server/runLocalProtocolServer.js +18 -2
  254. package/dist/tasks/index.d.ts +2 -0
  255. package/dist/tasks/index.d.ts.map +1 -0
  256. package/dist/tasks/index.js +1 -0
  257. package/dist/tasks/types.d.ts +39 -0
  258. package/dist/tasks/types.d.ts.map +1 -0
  259. package/dist/tasks/types.js +1 -0
  260. package/dist/tools/Agent.d.ts +13 -3
  261. package/dist/tools/Agent.d.ts.map +1 -1
  262. package/dist/tools/Agent.js +40 -12
  263. package/dist/tools/claude/AskUserQuestion.d.ts +23 -0
  264. package/dist/tools/claude/AskUserQuestion.d.ts.map +1 -0
  265. package/dist/tools/claude/AskUserQuestion.js +52 -0
  266. package/dist/tools/claude/Bash.d.ts +2 -0
  267. package/dist/tools/claude/Bash.d.ts.map +1 -1
  268. package/dist/tools/claude/Bash.js +20 -2
  269. package/dist/tools/claude/SendMessage.d.ts +10 -0
  270. package/dist/tools/claude/SendMessage.d.ts.map +1 -0
  271. package/dist/tools/claude/SendMessage.js +33 -0
  272. package/dist/tools/claude/TaskCreate.d.ts +12 -0
  273. package/dist/tools/claude/TaskCreate.d.ts.map +1 -0
  274. package/dist/tools/claude/TaskCreate.js +34 -0
  275. package/dist/tools/claude/TaskGet.d.ts +16 -0
  276. package/dist/tools/claude/TaskGet.d.ts.map +1 -0
  277. package/dist/tools/claude/TaskGet.js +44 -0
  278. package/dist/tools/claude/TaskList.d.ts +10 -0
  279. package/dist/tools/claude/TaskList.d.ts.map +1 -0
  280. package/dist/tools/claude/TaskList.js +51 -0
  281. package/dist/tools/claude/TaskOutput.d.ts +17 -0
  282. package/dist/tools/claude/TaskOutput.d.ts.map +1 -0
  283. package/dist/tools/claude/TaskOutput.js +74 -0
  284. package/dist/tools/claude/TaskStop.d.ts +10 -0
  285. package/dist/tools/claude/TaskStop.d.ts.map +1 -0
  286. package/dist/tools/claude/TaskStop.js +42 -0
  287. package/dist/tools/claude/TaskUpdate.d.ts +21 -0
  288. package/dist/tools/claude/TaskUpdate.d.ts.map +1 -0
  289. package/dist/tools/claude/TaskUpdate.js +55 -0
  290. package/dist/tools/claude/index.d.ts +111 -5
  291. package/dist/tools/claude/index.d.ts.map +1 -1
  292. package/dist/tools/claude/index.js +24 -2
  293. package/dist/tools/claude/parseBackgroundTaskId.d.ts +2 -0
  294. package/dist/tools/claude/parseBackgroundTaskId.d.ts.map +1 -0
  295. package/dist/tools/claude/parseBackgroundTaskId.js +7 -0
  296. package/dist/tools/claude/taskSchemas.d.ts +14 -0
  297. package/dist/tools/claude/taskSchemas.d.ts.map +1 -0
  298. package/dist/tools/claude/taskSchemas.js +18 -0
  299. package/dist/tools/codex/exec_command.d.ts +8 -6
  300. package/dist/tools/codex/exec_command.d.ts.map +1 -1
  301. package/dist/tools/codex/exec_command.js +37 -18
  302. package/dist/tools/codex/followup_task.d.ts +11 -0
  303. package/dist/tools/codex/followup_task.d.ts.map +1 -0
  304. package/dist/tools/codex/followup_task.js +18 -0
  305. package/dist/tools/codex/humanizeTaskName.d.ts +2 -0
  306. package/dist/tools/codex/humanizeTaskName.d.ts.map +1 -0
  307. package/dist/tools/codex/humanizeTaskName.js +4 -0
  308. package/dist/tools/codex/index.d.ts +90 -7
  309. package/dist/tools/codex/index.d.ts.map +1 -1
  310. package/dist/tools/codex/index.js +24 -0
  311. package/dist/tools/codex/interrupt_agent.d.ts +10 -0
  312. package/dist/tools/codex/interrupt_agent.d.ts.map +1 -0
  313. package/dist/tools/codex/interrupt_agent.js +17 -0
  314. package/dist/tools/codex/list_agents.d.ts +12 -0
  315. package/dist/tools/codex/list_agents.d.ts.map +1 -0
  316. package/dist/tools/codex/list_agents.js +23 -0
  317. package/dist/tools/codex/request_user_input.d.ts +16 -0
  318. package/dist/tools/codex/request_user_input.d.ts.map +1 -0
  319. package/dist/tools/codex/request_user_input.js +58 -0
  320. package/dist/tools/codex/requireSubagentContext.d.ts +3 -0
  321. package/dist/tools/codex/requireSubagentContext.d.ts.map +1 -0
  322. package/dist/tools/codex/requireSubagentContext.js +6 -0
  323. package/dist/tools/codex/spawn_agent.d.ts +9 -0
  324. package/dist/tools/codex/spawn_agent.d.ts.map +1 -0
  325. package/dist/tools/codex/spawn_agent.js +35 -0
  326. package/dist/tools/codex/subagentSchemas.d.ts +8 -0
  327. package/dist/tools/codex/subagentSchemas.d.ts.map +1 -0
  328. package/dist/tools/codex/subagentSchemas.js +13 -0
  329. package/dist/tools/codex/unifiedExecOutput.d.ts +14 -0
  330. package/dist/tools/codex/unifiedExecOutput.d.ts.map +1 -0
  331. package/dist/tools/codex/unifiedExecOutput.js +44 -0
  332. package/dist/tools/codex/update_plan.d.ts +10 -0
  333. package/dist/tools/codex/update_plan.d.ts.map +1 -0
  334. package/dist/tools/codex/update_plan.js +34 -0
  335. package/dist/tools/codex/wait_agent.d.ts +13 -0
  336. package/dist/tools/codex/wait_agent.d.ts.map +1 -0
  337. package/dist/tools/codex/wait_agent.js +32 -0
  338. package/dist/tools/codex/write_stdin.d.ts +6 -1
  339. package/dist/tools/codex/write_stdin.d.ts.map +1 -1
  340. package/dist/tools/codex/write_stdin.js +44 -12
  341. package/dist/tools/goals/create_goal.d.ts +11 -0
  342. package/dist/tools/goals/create_goal.d.ts.map +1 -0
  343. package/dist/tools/goals/create_goal.js +29 -0
  344. package/dist/tools/goals/get_goal.d.ts +9 -0
  345. package/dist/tools/goals/get_goal.d.ts.map +1 -0
  346. package/dist/tools/goals/get_goal.js +26 -0
  347. package/dist/tools/goals/goalSchemas.d.ts +8 -0
  348. package/dist/tools/goals/goalSchemas.d.ts.map +1 -0
  349. package/dist/tools/goals/goalSchemas.js +13 -0
  350. package/dist/tools/goals/index.d.ts +30 -0
  351. package/dist/tools/goals/index.d.ts.map +1 -0
  352. package/dist/tools/goals/index.js +7 -0
  353. package/dist/tools/goals/update_goal.d.ts +11 -0
  354. package/dist/tools/goals/update_goal.d.ts.map +1 -0
  355. package/dist/tools/goals/update_goal.js +33 -0
  356. package/dist/tools/index.d.ts +1 -0
  357. package/dist/tools/index.d.ts.map +1 -1
  358. package/dist/tools/index.js +1 -0
  359. package/dist/tools/pi/bash.d.ts.map +1 -1
  360. package/dist/tools/pi/bash.js +2 -0
  361. package/dist/tools/utils/readSessionWithProgress.d.ts +9 -0
  362. package/dist/tools/utils/readSessionWithProgress.d.ts.map +1 -0
  363. package/dist/tools/utils/readSessionWithProgress.js +27 -0
  364. package/dist/tools/utils/shell.d.ts +2 -0
  365. package/dist/tools/utils/shell.d.ts.map +1 -1
  366. package/dist/tools/utils/shell.js +37 -0
  367. package/dist/tools/utils/summarizeShellOutput.d.ts.map +1 -1
  368. package/dist/tools/utils/summarizeShellOutput.js +2 -0
  369. package/dist/user-input/index.d.ts +2 -0
  370. package/dist/user-input/index.d.ts.map +1 -0
  371. package/dist/user-input/index.js +1 -0
  372. package/dist/user-input/types.d.ts +19 -0
  373. package/dist/user-input/types.d.ts.map +1 -0
  374. package/dist/user-input/types.js +1 -0
  375. package/dist/web/assets/highlighted-body-OFNGDK62-BuJOCQJD.js +1 -0
  376. package/dist/web/assets/highlighted-body-OFNGDK62-TwhCqUaJ.js +1 -0
  377. package/dist/web/assets/index-B6Bc6sUJ.css +1 -0
  378. package/dist/web/assets/index-BC99-iZC.js +341 -0
  379. package/dist/web/assets/index-BZN9jSiw.js +341 -0
  380. package/dist/web/assets/index-CcF0unjO.css +1 -0
  381. package/dist/web/index.html +2 -2
  382. package/package.json +2 -1
@@ -0,0 +1,5 @@
1
+ import { ProcessTerminal } from "@earendil-works/pi-tui";
2
+ export declare class ScrollbackPreservingTerminal extends ProcessTerminal {
3
+ write(data: string): void;
4
+ }
5
+ //# sourceMappingURL=ScrollbackPreservingTerminal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScrollbackPreservingTerminal.d.ts","sourceRoot":"","sources":["../../sources/app/ScrollbackPreservingTerminal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAIzD,qBAAa,4BAA6B,SAAQ,eAAe;IACpD,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;CAGrC"}
@@ -0,0 +1,7 @@
1
+ import { ProcessTerminal } from "@earendil-works/pi-tui";
2
+ const CLEAR_SCROLLBACK = "\x1b[3J";
3
+ export class ScrollbackPreservingTerminal extends ProcessTerminal {
4
+ write(data) {
5
+ super.write(data.replaceAll(CLEAR_SCROLLBACK, ""));
6
+ }
7
+ }
@@ -60,7 +60,7 @@ export class StartupStatusApp {
60
60
  this.#timer = undefined;
61
61
  }
62
62
  this.#tui.removeChild(this);
63
- this.#tui.requestRender(true);
63
+ this.#tui.requestRender();
64
64
  }
65
65
  #directoryName() {
66
66
  return basename(this.#cwd) || this.#cwd;
@@ -1,4 +1,4 @@
1
- import { type SubagentContext } from "../agent/index.js";
1
+ import { type GoalContext, type PermissionMode, type SubagentContext, type TaskContext, type UserInputContext } from "../agent/index.js";
2
2
  import type { Message } from "../agent/types.js";
3
3
  import { NativeProxessManager } from "../processes/index.js";
4
4
  import type { CodingAssistantRuntime } from "./CodingAssistantRuntime.js";
@@ -8,12 +8,17 @@ export interface CreateCodingAssistantAgentOptions {
8
8
  apiKey?: string;
9
9
  effort?: string;
10
10
  env?: NodeJS.ProcessEnv;
11
+ goals?: GoalContext;
11
12
  instructions?: string;
12
13
  messages?: readonly Message[];
14
+ contextMessages?: readonly Message[];
13
15
  modelId?: string;
14
16
  providerId?: string;
15
17
  processManager?: NativeProxessManager;
18
+ permissionMode?: PermissionMode;
16
19
  subagents?: SubagentContext;
20
+ tasks?: TaskContext;
21
+ userInput?: UserInputContext;
17
22
  }
18
23
  export declare function createCodingAssistantAgent(options: CreateCodingAssistantAgentOptions): CodingAssistantRuntime;
19
24
  //# sourceMappingURL=createCodingAssistantAgent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"createCodingAssistantAgent.d.ts","sourceRoot":"","sources":["../../sources/app/createCodingAssistantAgent.ts"],"names":[],"mappings":"AAAA,OAAO,EAKH,KAAK,eAAe,EACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAU7D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAG1E,MAAM,WAAW,iCAAiC;IAC9C,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,oBAAoB,CAAC;IACtC,SAAS,CAAC,EAAE,eAAe,CAAC;CAC/B;AAED,wBAAgB,0BAA0B,CACtC,OAAO,EAAE,iCAAiC,GAC3C,sBAAsB,CA6DxB"}
1
+ {"version":3,"file":"createCodingAssistantAgent.d.ts","sourceRoot":"","sources":["../../sources/app/createCodingAssistantAgent.ts"],"names":[],"mappings":"AAAA,OAAO,EAKH,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACxB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAW7D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAG1E,MAAM,WAAW,iCAAiC;IAC9C,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IAC9B,eAAe,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,oBAAoB,CAAC;IACtC,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,SAAS,CAAC,EAAE,gBAAgB,CAAC;CAChC;AAED,wBAAgB,0BAA0B,CACtC,OAAO,EAAE,iCAAiC,GAC3C,sBAAsB,CA8ExB"}
@@ -4,22 +4,27 @@ import { createBedrockProvider } from "../providers/bedrock.js";
4
4
  import { createClaudeSdkProvider } from "../providers/claude-sdk.js";
5
5
  import { createCodexProvider } from "../providers/codex.js";
6
6
  import { getBedrockModelRoute } from "../providers/getBedrockModelRoute.js";
7
- import { modelOpenaiGpt55 } from "../providers/models.js";
8
- import { claudeCodeTools } from "../tools/claude/index.js";
9
- import { codexTools } from "../tools/codex/index.js";
7
+ import { modelOpenaiGpt56Sol } from "../providers/models.js";
8
+ import { claudeCodeTools, claudeCollaborationTools } from "../tools/claude/index.js";
9
+ import { codexCollaborationTools, codexTools } from "../tools/codex/index.js";
10
10
  import { piTools } from "../tools/pi/index.js";
11
11
  import { agentTool } from "../tools/Agent.js";
12
+ import { goalTools } from "../tools/goals/index.js";
12
13
  import { createDefaultInstructions } from "./createDefaultInstructions.js";
13
14
  export function createCodingAssistantAgent(options) {
14
15
  const processManager = options.processManager ?? new NativeProxessManager();
15
16
  const context = createNodeAgentContext({
16
17
  cwd: options.cwd,
18
+ ...(options.goals !== undefined ? { goals: options.goals } : {}),
17
19
  processManager,
20
+ ...(options.permissionMode !== undefined ? { permissionMode: options.permissionMode } : {}),
21
+ ...(options.tasks !== undefined ? { tasks: options.tasks } : {}),
22
+ ...(options.userInput !== undefined ? { userInput: options.userInput } : {}),
18
23
  });
19
24
  if (options.subagents !== undefined) {
20
25
  context.subagents = options.subagents;
21
26
  }
22
- const modelId = options.modelId ?? modelOpenaiGpt55.id;
27
+ const modelId = options.modelId ?? modelOpenaiGpt56Sol.id;
23
28
  const providerId = options.providerId ??
24
29
  (modelId.startsWith("anthropic/")
25
30
  ? "claude-sdk"
@@ -29,12 +34,21 @@ export function createCodingAssistantAgent(options) {
29
34
  ? "bedrock"
30
35
  : "codex");
31
36
  const bedrockRoute = providerId === "bedrock" ? getBedrockModelRoute(modelId) : undefined;
32
- const baseTools = providerId === "claude-sdk" || bedrockRoute?.provider === "anthropic"
37
+ const usesClaudeTools = providerId === "claude-sdk" || bedrockRoute?.provider === "anthropic";
38
+ const usesCodexTools = providerId === "codex" || bedrockRoute?.provider === "openai";
39
+ const baseTools = usesClaudeTools
33
40
  ? claudeCodeTools
34
- : providerId === "codex" || bedrockRoute?.provider === "openai"
41
+ : usesCodexTools
35
42
  ? codexTools
36
43
  : piTools;
37
- const tools = options.subagents?.canSpawn === true ? [...baseTools, agentTool] : [...baseTools];
44
+ const toolsWithoutGoals = options.subagents?.canSpawn !== true
45
+ ? [...baseTools]
46
+ : usesCodexTools
47
+ ? [...baseTools, ...codexCollaborationTools]
48
+ : usesClaudeTools
49
+ ? [...baseTools, agentTool, ...claudeCollaborationTools]
50
+ : [...baseTools, agentTool];
51
+ const tools = options.goals === undefined ? toolsWithoutGoals : [...toolsWithoutGoals, ...goalTools];
38
52
  const provider = providerId === "bedrock"
39
53
  ? createBedrockProvider({ env: options.env ?? process.env })
40
54
  : providerId === "claude-sdk"
@@ -54,6 +68,9 @@ export function createCodingAssistantAgent(options) {
54
68
  ...(options.agentId !== undefined ? { id: options.agentId } : {}),
55
69
  instructions: options.instructions ?? createDefaultInstructions(options.cwd),
56
70
  ...(options.messages !== undefined ? { messages: options.messages } : {}),
71
+ ...(options.contextMessages !== undefined
72
+ ? { contextMessages: options.contextMessages }
73
+ : {}),
57
74
  tools,
58
75
  printToConsole: false,
59
76
  };
@@ -1 +1 @@
1
- {"version":3,"file":"createSlashCommands.d.ts","sourceRoot":"","sources":["../../sources/app/createSlashCommands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,MAAM,WAAW,gBAAiB,SAAQ,gBAAgB;IACtD,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9B;AAED,wBAAgB,mBAAmB,IAAI,gBAAgB,EAAE,CA6CxD"}
1
+ {"version":3,"file":"createSlashCommands.d.ts","sourceRoot":"","sources":["../../sources/app/createSlashCommands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,MAAM,WAAW,gBAAiB,SAAQ,gBAAgB;IACtD,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9B;AAED,wBAAgB,mBAAmB,IAAI,gBAAgB,EAAE,CAuFxD"}
@@ -18,6 +18,42 @@ export function createSlashCommands() {
18
18
  description: "Configure app settings.",
19
19
  aliases: ["config", "settings"],
20
20
  },
21
+ {
22
+ value: "permissions",
23
+ label: "/permissions",
24
+ description: "Choose filesystem, shell, and network access.",
25
+ aliases: ["permission"],
26
+ },
27
+ {
28
+ value: "mcp",
29
+ label: "/mcp",
30
+ description: "Show configured MCP server connections.",
31
+ aliases: [],
32
+ },
33
+ {
34
+ value: "tasks",
35
+ label: "/tasks",
36
+ description: "Show the current session task list.",
37
+ aliases: ["todos"],
38
+ },
39
+ {
40
+ value: "agents",
41
+ label: "/agents",
42
+ description: "Show delegated work and its current status.",
43
+ aliases: [],
44
+ },
45
+ {
46
+ value: "goal",
47
+ label: "/goal",
48
+ description: "Set or manage a persistent long-running goal.",
49
+ aliases: [],
50
+ },
51
+ {
52
+ value: "review",
53
+ label: "/review",
54
+ description: "Review current changes and find actionable issues.",
55
+ aliases: [],
56
+ },
21
57
  {
22
58
  value: "new",
23
59
  label: "/new",
@@ -36,6 +72,12 @@ export function createSlashCommands() {
36
72
  description: "Clear the visible conversation.",
37
73
  aliases: [],
38
74
  },
75
+ {
76
+ value: "compact",
77
+ label: "/compact",
78
+ description: "Summarize older messages to free context space.",
79
+ aliases: [],
80
+ },
39
81
  {
40
82
  value: "abort",
41
83
  label: "/abort",
@@ -1 +1 @@
1
- {"version":3,"file":"describeReasoningLevel.d.ts","sourceRoot":"","sources":["../../sources/app/describeReasoningLevel.ts"],"names":[],"mappings":"AAEA,wBAAgB,sBAAsB,CAClC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,GACpD,MAAM,CAoBR"}
1
+ {"version":3,"file":"describeReasoningLevel.d.ts","sourceRoot":"","sources":["../../sources/app/describeReasoningLevel.ts"],"names":[],"mappings":"AAEA,wBAAgB,sBAAsB,CAClC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,GACpD,MAAM,CAqBR"}
@@ -9,6 +9,7 @@ export function describeReasoningLevel(level, options) {
9
9
  high: "Spend more time on harder changes.",
10
10
  xhigh: "Think deeply through complex work.",
11
11
  max: "Use the largest reasoning budget available.",
12
+ ultra: "Use maximum reasoning with task delegation.",
12
13
  };
13
14
  const parts = [descriptions[level] ?? `Use ${humanizeReasoningLevel(level)} reasoning.`];
14
15
  if (options.isCurrent) {
@@ -1 +1 @@
1
- {"version":3,"file":"highlightAgentCode.d.ts","sourceRoot":"","sources":["../../sources/app/highlightAgentCode.ts"],"names":[],"mappings":"AAuCA,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAOxE"}
1
+ {"version":3,"file":"highlightAgentCode.d.ts","sourceRoot":"","sources":["../../sources/app/highlightAgentCode.ts"],"names":[],"mappings":"AA4CA,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAOxE"}
@@ -27,9 +27,9 @@ const HIGHLIGHTED_LANGUAGES = new Set([
27
27
  "yaml",
28
28
  "zsh",
29
29
  ]);
30
- const KEYWORD_PATTERN = /\b(?:async|await|break|case|catch|class|const|continue|def|defer|else|enum|export|extends|false|for|from|func|function|go|if|impl|import|interface|let|new|null|package|private|protected|public|return|select|struct|switch|true|try|type|use|var|while)\b/g;
31
- const TYPE_PATTERN = /\b(?:Array|Boolean|Error|Map|Number|Promise|Record|Set|String|unknown|void)\b/g;
32
- const NUMBER_PATTERN = /\b\d+(?:\.\d+)?\b/g;
30
+ const KEYWORDS = new Set("async await break case catch class const continue def defer else enum export extends false for from func function go if impl import interface let new null package private protected public return select struct switch true try type use var while".split(" "));
31
+ const TYPES = new Set("Array Boolean Error Map Number Promise Record Set String unknown void".split(" "));
32
+ const PLAIN_TOKEN_PATTERN = /\b(?:Array|Boolean|Error|Map|Number|Promise|Record|Set|String|unknown|void|async|await|break|case|catch|class|const|continue|def|defer|else|enum|export|extends|false|for|from|func|function|go|if|impl|import|interface|let|new|null|package|private|protected|public|return|select|struct|switch|true|try|type|use|var|while|\d+(?:\.\d+)?)\b/g;
33
33
  const STRING_PATTERN = /("(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|`(?:\\.|[^`\\])*`)/g;
34
34
  export function highlightAgentCode(code, lang) {
35
35
  const normalizedLang = lang?.toLowerCase();
@@ -61,10 +61,13 @@ function highlightCodePart(line) {
61
61
  return result;
62
62
  }
63
63
  function highlightPlainSegment(segment) {
64
- return segment
65
- .replace(TYPE_PATTERN, (value) => fg(TYPE, value))
66
- .replace(KEYWORD_PATTERN, (value) => fg(KEYWORD, value))
67
- .replace(NUMBER_PATTERN, (value) => fg(NUMBER, value));
64
+ return segment.replace(PLAIN_TOKEN_PATTERN, (value) => {
65
+ if (TYPES.has(value))
66
+ return fg(TYPE, value);
67
+ if (KEYWORDS.has(value))
68
+ return fg(KEYWORD, value);
69
+ return fg(NUMBER, value);
70
+ });
68
71
  }
69
72
  function commentIndex(line, lang) {
70
73
  if (lang === "python" ||
@@ -0,0 +1,3 @@
1
+ import type { GoalStatus } from "../goals/index.js";
2
+ export declare function humanizeGoalStatus(status: GoalStatus): string;
3
+ //# sourceMappingURL=humanizeGoalStatus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"humanizeGoalStatus.d.ts","sourceRoot":"","sources":["../../sources/app/humanizeGoalStatus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAK7D"}
@@ -0,0 +1,9 @@
1
+ export function humanizeGoalStatus(status) {
2
+ if (status === "active")
3
+ return "Active";
4
+ if (status === "paused")
5
+ return "Paused";
6
+ if (status === "blocked")
7
+ return "Blocked";
8
+ return "Complete";
9
+ }
@@ -0,0 +1,3 @@
1
+ import type { PermissionMode } from "../permissions/index.js";
2
+ export declare function humanizePermissionMode(mode: PermissionMode): string;
3
+ //# sourceMappingURL=humanizePermissionMode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"humanizePermissionMode.d.ts","sourceRoot":"","sources":["../../sources/app/humanizePermissionMode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAKnE"}
@@ -0,0 +1,9 @@
1
+ export function humanizePermissionMode(mode) {
2
+ if (mode === "auto")
3
+ return "Auto";
4
+ if (mode === "workspace_write")
5
+ return "Workspace write";
6
+ if (mode === "read_only")
7
+ return "Read only";
8
+ return "Full access";
9
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"humanizeReasoningLevel.d.ts","sourceRoot":"","sources":["../../sources/app/humanizeReasoningLevel.ts"],"names":[],"mappings":"AAAA,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CA4B5D"}
1
+ {"version":3,"file":"humanizeReasoningLevel.d.ts","sourceRoot":"","sources":["../../sources/app/humanizeReasoningLevel.ts"],"names":[],"mappings":"AAAA,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CA+B5D"}
@@ -20,6 +20,9 @@ export function humanizeReasoningLevel(level) {
20
20
  if (level === "max") {
21
21
  return "Maximum";
22
22
  }
23
+ if (level === "ultra") {
24
+ return "Ultra";
25
+ }
23
26
  return level
24
27
  .split(/[-_\s]+/u)
25
28
  .filter((part) => part.length > 0)
@@ -0,0 +1,2 @@
1
+ export declare function humanizeToolName(name: string): string;
2
+ //# sourceMappingURL=humanizeToolName.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"humanizeToolName.d.ts","sourceRoot":"","sources":["../../sources/app/humanizeToolName.ts"],"names":[],"mappings":"AAAA,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAuBrD"}
@@ -0,0 +1,40 @@
1
+ export function humanizeToolName(name) {
2
+ if (name === "Agent")
3
+ return "Subagent";
4
+ const normalized = name.toLowerCase();
5
+ if (normalized === "request_user_input" || normalized === "askuserquestion") {
6
+ return "Question";
7
+ }
8
+ if (normalized === "tasklist")
9
+ return "Task list";
10
+ if (normalized === "taskoutput")
11
+ return "Background output";
12
+ if (normalized === "taskstop")
13
+ return "Stop background command";
14
+ if (normalized === "taskcreate" || normalized === "taskget" || normalized === "taskupdate") {
15
+ return "Task";
16
+ }
17
+ if (normalized === "spawn_agent")
18
+ return "Start subagent";
19
+ if (normalized === "followup_task")
20
+ return "Subagent follow-up";
21
+ if (normalized === "wait_agent")
22
+ return "Wait for subagents";
23
+ if (normalized === "list_agents")
24
+ return "Subagents";
25
+ if (normalized === "interrupt_agent")
26
+ return "Stop subagent";
27
+ if (normalized === "sendmessage")
28
+ return "Subagent follow-up";
29
+ const parts = name.startsWith("mcp__") ? name.slice("mcp__".length).split("__") : [];
30
+ if (parts.length >= 2) {
31
+ return `${humanizeWords(parts[0] ?? "MCP")} · ${humanizeWords(parts.slice(1).join("__"))}`;
32
+ }
33
+ return name;
34
+ }
35
+ function humanizeWords(value) {
36
+ return value
37
+ .replace(/[_-]+/g, " ")
38
+ .trim()
39
+ .replace(/\b\w/g, (character) => character.toUpperCase());
40
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../sources/app/main.ts"],"names":[],"mappings":"AAOA,wBAAsB,IAAI,CAAC,IAAI,GAAE,SAAS,MAAM,EAA0B,GAAG,OAAO,CAAC,IAAI,CAAC,CA0DzF"}
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../sources/app/main.ts"],"names":[],"mappings":"AAQA,wBAAsB,IAAI,CAAC,IAAI,GAAE,SAAS,MAAM,EAA0B,GAAG,OAAO,CAAC,IAAI,CAAC,CA6DzF"}
package/dist/app/main.js CHANGED
@@ -3,6 +3,7 @@ import { runApp } from "./runApp.js";
3
3
  import { runMonit } from "./runMonit.js";
4
4
  import { runWebCommand } from "./runWebCommand.js";
5
5
  import { runWebServer } from "./web/runWebServer.js";
6
+ import { parsePermissionMode } from "../permissions/index.js";
6
7
  import { runLocalProtocolServer } from "../server/index.js";
7
8
  export async function main(argv = process.argv.slice(2)) {
8
9
  if (argv.includes("--web-server")) {
@@ -57,6 +58,9 @@ export async function main(argv = process.argv.slice(2)) {
57
58
  if (process.env.RIG_PROVIDER !== undefined) {
58
59
  options.providerId = process.env.RIG_PROVIDER;
59
60
  }
61
+ if (process.env.RIG_PERMISSION_MODE !== undefined) {
62
+ options.permissionMode = parsePermissionMode(process.env.RIG_PERMISSION_MODE);
63
+ }
60
64
  await runApp(options);
61
65
  }
62
66
  function isDaemonCommand(value) {
@@ -1 +1 @@
1
- {"version":3,"file":"renderAgentMarkdown.d.ts","sourceRoot":"","sources":["../../sources/app/renderAgentMarkdown.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,0BAA0B;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,0BAA0B,GAAG,MAAM,EAAE,CAmBjF"}
1
+ {"version":3,"file":"renderAgentMarkdown.d.ts","sourceRoot":"","sources":["../../sources/app/renderAgentMarkdown.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,0BAA0B;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,0BAA0B,GAAG,MAAM,EAAE,CAmBjF"}
@@ -1,5 +1,6 @@
1
1
  import { Markdown, truncateToWidth } from "@earendil-works/pi-tui";
2
2
  import { createAgentMarkdownTheme } from "./createAgentMarkdownTheme.js";
3
+ import { sanitizeTerminalText } from "./sanitizeTerminalText.js";
3
4
  const RESET = "\x1b[0m";
4
5
  const TEXT_FG = "\x1b[38;5;252m";
5
6
  const DEFAULT_TEXT_STYLE = {
@@ -7,7 +8,7 @@ const DEFAULT_TEXT_STYLE = {
7
8
  };
8
9
  export function renderAgentMarkdown(options) {
9
10
  const width = Math.max(1, options.width);
10
- const text = options.text.trimEnd();
11
+ const text = sanitizeTerminalText(options.text).trimEnd();
11
12
  if (text.length === 0) {
12
13
  return [" ".repeat(width)];
13
14
  }
@@ -1,3 +1,4 @@
1
+ import type { PermissionMode } from "../permissions/index.js";
1
2
  export interface RunAppOptions {
2
3
  apiKey?: string;
3
4
  cwd?: string;
@@ -5,6 +6,7 @@ export interface RunAppOptions {
5
6
  instructions?: string;
6
7
  modelId?: string;
7
8
  providerId?: string;
9
+ permissionMode?: PermissionMode;
8
10
  resumeSessionId?: string;
9
11
  showReasoning?: boolean;
10
12
  }
@@ -1 +1 @@
1
- {"version":3,"file":"runApp.d.ts","sourceRoot":"","sources":["../../sources/app/runApp.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,aAAa;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,wBAAsB,MAAM,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwJvE"}
1
+ {"version":3,"file":"runApp.d.ts","sourceRoot":"","sources":["../../sources/app/runApp.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAU9D,MAAM,WAAW,aAAa;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,wBAAsB,MAAM,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2LvE"}
@@ -1,4 +1,5 @@
1
- import { ProcessTerminal, TUI } from "@earendil-works/pi-tui";
1
+ import { TUI } from "@earendil-works/pi-tui";
2
+ import { basename } from "node:path";
2
3
  import { createNodeAgentContext } from "../agent/index.js";
3
4
  import { ensureLocalProtocolServer, RemoteAgent } from "../client/index.js";
4
5
  import { loadConfig, writeRuntimeConfig } from "../config/index.js";
@@ -8,6 +9,7 @@ import {} from "./createCodingAssistantAgent.js";
8
9
  import { createStopOnceHandler } from "./createStopOnceHandler.js";
9
10
  import { ensureSessionCanResume } from "./ensureSessionCanResume.js";
10
11
  import { readPackageVersion } from "./readPackageVersion.js";
12
+ import { ScrollbackPreservingTerminal } from "./ScrollbackPreservingTerminal.js";
11
13
  import { StartupStatusApp } from "./StartupStatusApp.js";
12
14
  export async function runApp(options = {}) {
13
15
  const cwd = options.cwd ?? process.cwd();
@@ -15,6 +17,7 @@ export async function runApp(options = {}) {
15
17
  const agentOptions = {
16
18
  cwd,
17
19
  modelId: loadedConfig.config.defaults.modelId,
20
+ permissionMode: loadedConfig.config.defaults.permissionMode,
18
21
  };
19
22
  if (loadedConfig.config.defaults.providerId !== undefined) {
20
23
  agentOptions.providerId = loadedConfig.config.defaults.providerId;
@@ -35,15 +38,20 @@ export async function runApp(options = {}) {
35
38
  agentOptions.modelId = options.modelId;
36
39
  if (options.providerId !== undefined)
37
40
  agentOptions.providerId = options.providerId;
41
+ if (options.permissionMode !== undefined)
42
+ agentOptions.permissionMode = options.permissionMode;
38
43
  let showReasoning = options.showReasoning ?? loadedConfig.config.settings.showReasoning;
39
44
  // Keep the terminal in TUI mode while the daemon starts so startup work is visible.
40
- const tui = new TUI(new ProcessTerminal(), false);
45
+ const terminal = new ScrollbackPreservingTerminal();
46
+ terminal.setTitle(`Rig - ${sanitizeTerminalTitle(basename(cwd))}`);
47
+ const tui = new TUI(terminal, false);
41
48
  const startup = new StartupStatusApp({
42
49
  cwd,
43
50
  tui,
44
51
  version: readPackageVersion(),
45
52
  });
46
53
  startup.start();
54
+ terminal.write("\x1b[?1004h");
47
55
  const { history, localServer, modelCatalog, session } = await (async () => {
48
56
  try {
49
57
  const connection = await ensureLocalProtocolServer({
@@ -74,13 +82,29 @@ export async function runApp(options = {}) {
74
82
  }
75
83
  catch (error) {
76
84
  startup.stop();
85
+ terminal.write("\x1b[?1004l");
77
86
  tui.stop();
78
87
  throw error;
79
88
  }
80
89
  })();
81
90
  const processManager = new NativeProxessManager();
82
91
  const sessionCwd = session.session.cwd;
83
- const context = createNodeAgentContext({ cwd: sessionCwd, processManager });
92
+ if (session.session.title !== undefined) {
93
+ terminal.setTitle(`Rig - ${sanitizeTerminalTitle(session.session.title)}`);
94
+ }
95
+ const subagents = await localServer.client
96
+ .listSubagents(session.session.id)
97
+ .catch((error) => {
98
+ startup.stop();
99
+ terminal.write("\x1b[?1004l");
100
+ tui.stop();
101
+ throw error;
102
+ });
103
+ const context = createNodeAgentContext({
104
+ cwd: sessionCwd,
105
+ permissionMode: session.session.permissionMode,
106
+ processManager,
107
+ });
84
108
  const agent = new RemoteAgent({
85
109
  client: localServer.client,
86
110
  context,
@@ -92,12 +116,17 @@ export async function runApp(options = {}) {
92
116
  agent,
93
117
  cwd: sessionCwd,
94
118
  initialSessionEvents: history.events,
119
+ initialMcpServers: session.session.mcpServers,
120
+ initialSubagents: subagents.subagents,
121
+ initialUserInputs: session.session.pendingUserInputs,
122
+ initialTasks: session.session.tasks,
95
123
  modelLocked: session.session.modelLocked,
96
124
  onDefaultModelChange: (preference) => writeRuntimeConfig(loadedConfig.paths.runtime, {
97
125
  defaults: {
98
126
  modelId: preference.modelId,
99
127
  providerId: preference.providerId,
100
128
  effort: preference.effort,
129
+ permissionMode: agent.permissionMode,
101
130
  },
102
131
  settings: {
103
132
  showReasoning,
@@ -110,11 +139,15 @@ export async function runApp(options = {}) {
110
139
  modelId: agent.model.id,
111
140
  providerId: agent.provider.id,
112
141
  effort: agent.snapshot().effort ?? agent.model.defaultThinkingLevel,
142
+ permissionMode: agent.permissionMode,
113
143
  },
114
144
  settings,
115
145
  });
116
146
  },
117
147
  processManager,
148
+ respondUserInput: (requestId, response) => localServer.client
149
+ .answerUserInput(session.session.id, requestId, response)
150
+ .then(() => undefined),
118
151
  searchFiles: (query) => localServer.client
119
152
  .searchFiles(session.session.id, query)
120
153
  .then((response) => response.files),
@@ -129,6 +162,9 @@ export async function runApp(options = {}) {
129
162
  void localServer.client.watchSessionEvents({
130
163
  ...(lastHistoryEventId !== undefined ? { after: lastHistoryEventId } : {}),
131
164
  onEvent: (event) => {
165
+ if (event.type === "session_title_changed" && event.data.title !== undefined) {
166
+ terminal.setTitle(`Rig - ${sanitizeTerminalTitle(event.data.title)}`);
167
+ }
132
168
  agent.applySessionEvent(event);
133
169
  app.applySessionEvent(event);
134
170
  },
@@ -152,9 +188,18 @@ export async function runApp(options = {}) {
152
188
  process.off("SIGINT", stop);
153
189
  process.off("SIGTERM", stop);
154
190
  followController.abort();
191
+ terminal.write("\x1b[?1004l");
155
192
  await processManager.killAll({ forceAfterMs: 500 });
156
193
  console.error("");
157
194
  console.error(`Session: ${session.session.id}`);
158
195
  console.error(`Resume: ${resumeCommand}`);
159
196
  }
160
197
  }
198
+ function sanitizeTerminalTitle(value) {
199
+ return [...value]
200
+ .filter((character) => {
201
+ const codePoint = character.codePointAt(0) ?? 0;
202
+ return codePoint > 31 && codePoint !== 127;
203
+ })
204
+ .join("");
205
+ }
@@ -0,0 +1,2 @@
1
+ export declare function sanitizeTerminalText(text: string): string;
2
+ //# sourceMappingURL=sanitizeTerminalText.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sanitizeTerminalText.d.ts","sourceRoot":"","sources":["../../sources/app/sanitizeTerminalText.ts"],"names":[],"mappings":"AAGA,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA4BzD"}
@@ -0,0 +1,55 @@
1
+ const ESCAPE = "\x1b";
2
+ const STRING_TERMINATOR = "\x1b\\";
3
+ export function sanitizeTerminalText(text) {
4
+ let sanitized = "";
5
+ for (let index = 0; index < text.length; index += 1) {
6
+ const character = text[index] ?? "";
7
+ const codePoint = character.charCodeAt(0);
8
+ if (character !== ESCAPE) {
9
+ if (character === "\n" ||
10
+ character === "\t" ||
11
+ codePoint >= 0xa0 ||
12
+ (codePoint > 0x1f && codePoint < 0x7f)) {
13
+ sanitized += character;
14
+ }
15
+ continue;
16
+ }
17
+ const sequenceEnd = terminalSequenceEnd(text, index);
18
+ if (sequenceEnd === undefined) {
19
+ sanitized += "\\x1b";
20
+ continue;
21
+ }
22
+ index = sequenceEnd;
23
+ }
24
+ return sanitized;
25
+ }
26
+ function terminalSequenceEnd(text, escapeIndex) {
27
+ const introducer = text[escapeIndex + 1];
28
+ if (introducer === undefined)
29
+ return undefined;
30
+ if (introducer === "[") {
31
+ for (let index = escapeIndex + 2; index < text.length; index += 1) {
32
+ const codePoint = text.charCodeAt(index);
33
+ if (codePoint >= 0x40 && codePoint <= 0x7e)
34
+ return index;
35
+ if (codePoint < 0x20 || codePoint > 0x3f)
36
+ return undefined;
37
+ }
38
+ return undefined;
39
+ }
40
+ if (introducer === "]") {
41
+ const bellEnd = text.indexOf("\x07", escapeIndex + 2);
42
+ const stringEnd = text.indexOf(STRING_TERMINATOR, escapeIndex + 2);
43
+ if (bellEnd < 0 && stringEnd < 0)
44
+ return undefined;
45
+ if (bellEnd >= 0 && (stringEnd < 0 || bellEnd < stringEnd))
46
+ return bellEnd;
47
+ return stringEnd + STRING_TERMINATOR.length - 1;
48
+ }
49
+ if (introducer === "P" || introducer === "X" || introducer === "^" || introducer === "_") {
50
+ const stringEnd = text.indexOf(STRING_TERMINATOR, escapeIndex + 2);
51
+ return stringEnd < 0 ? undefined : stringEnd + STRING_TERMINATOR.length - 1;
52
+ }
53
+ const codePoint = introducer.charCodeAt(0);
54
+ return codePoint >= 0x40 && codePoint <= 0x5f ? escapeIndex + 1 : undefined;
55
+ }
@@ -0,0 +1,3 @@
1
+ import type { SubagentSummary } from "../protocol/index.js";
2
+ export declare function upsertSubagentSummary(subagents: readonly SubagentSummary[], next: SubagentSummary): readonly SubagentSummary[];
3
+ //# sourceMappingURL=upsertSubagentSummary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upsertSubagentSummary.d.ts","sourceRoot":"","sources":["../../sources/app/upsertSubagentSummary.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D,wBAAgB,qBAAqB,CACjC,SAAS,EAAE,SAAS,eAAe,EAAE,EACrC,IAAI,EAAE,eAAe,GACtB,SAAS,eAAe,EAAE,CAI5B"}
@@ -0,0 +1,6 @@
1
+ export function upsertSubagentSummary(subagents, next) {
2
+ const existing = subagents.findIndex((subagent) => subagent.id === next.id);
3
+ if (existing < 0)
4
+ return [...subagents, next];
5
+ return subagents.map((subagent, index) => (index === existing ? next : subagent));
6
+ }