@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.
Files changed (374) 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/types.d.ts +1 -0
  72. package/dist/agent/types.d.ts.map +1 -1
  73. package/dist/app/CodingAssistantAgentBackend.d.ts +11 -1
  74. package/dist/app/CodingAssistantAgentBackend.d.ts.map +1 -1
  75. package/dist/app/CodingAssistantApp.d.ts +7 -1
  76. package/dist/app/CodingAssistantApp.d.ts.map +1 -1
  77. package/dist/app/CodingAssistantApp.js +678 -45
  78. package/dist/app/ScrollbackPreservingTerminal.d.ts +5 -0
  79. package/dist/app/ScrollbackPreservingTerminal.d.ts.map +1 -0
  80. package/dist/app/ScrollbackPreservingTerminal.js +7 -0
  81. package/dist/app/StartupStatusApp.js +1 -1
  82. package/dist/app/createCodingAssistantAgent.d.ts +6 -1
  83. package/dist/app/createCodingAssistantAgent.d.ts.map +1 -1
  84. package/dist/app/createCodingAssistantAgent.js +22 -5
  85. package/dist/app/createSlashCommands.d.ts.map +1 -1
  86. package/dist/app/createSlashCommands.js +42 -0
  87. package/dist/app/highlightAgentCode.d.ts.map +1 -1
  88. package/dist/app/highlightAgentCode.js +10 -7
  89. package/dist/app/humanizeGoalStatus.d.ts +3 -0
  90. package/dist/app/humanizeGoalStatus.d.ts.map +1 -0
  91. package/dist/app/humanizeGoalStatus.js +9 -0
  92. package/dist/app/humanizePermissionMode.d.ts +3 -0
  93. package/dist/app/humanizePermissionMode.d.ts.map +1 -0
  94. package/dist/app/humanizePermissionMode.js +9 -0
  95. package/dist/app/humanizeToolName.d.ts +2 -0
  96. package/dist/app/humanizeToolName.d.ts.map +1 -0
  97. package/dist/app/humanizeToolName.js +40 -0
  98. package/dist/app/main.d.ts.map +1 -1
  99. package/dist/app/main.js +4 -0
  100. package/dist/app/renderAgentMarkdown.d.ts.map +1 -1
  101. package/dist/app/renderAgentMarkdown.js +2 -1
  102. package/dist/app/runApp.d.ts +2 -0
  103. package/dist/app/runApp.d.ts.map +1 -1
  104. package/dist/app/runApp.js +48 -3
  105. package/dist/app/sanitizeTerminalText.d.ts +2 -0
  106. package/dist/app/sanitizeTerminalText.d.ts.map +1 -0
  107. package/dist/app/sanitizeTerminalText.js +55 -0
  108. package/dist/app/upsertSubagentSummary.d.ts +3 -0
  109. package/dist/app/upsertSubagentSummary.d.ts.map +1 -0
  110. package/dist/app/upsertSubagentSummary.js +6 -0
  111. package/dist/client/ProtocolHttpClient.d.ts +12 -1
  112. package/dist/client/ProtocolHttpClient.d.ts.map +1 -1
  113. package/dist/client/ProtocolHttpClient.js +21 -0
  114. package/dist/client/RemoteAgent.d.ts +11 -1
  115. package/dist/client/RemoteAgent.d.ts.map +1 -1
  116. package/dist/client/RemoteAgent.js +91 -1
  117. package/dist/config/createConfigFile.d.ts.map +1 -1
  118. package/dist/config/createConfigFile.js +5 -0
  119. package/dist/config/defaultConfig.d.ts.map +1 -1
  120. package/dist/config/defaultConfig.js +2 -0
  121. package/dist/config/mergeConfigValues.d.ts.map +1 -1
  122. package/dist/config/mergeConfigValues.js +8 -1
  123. package/dist/config/parseConfigToml.d.ts.map +1 -1
  124. package/dist/config/parseConfigToml.js +88 -0
  125. package/dist/config/serializeMcpServers.d.ts +3 -0
  126. package/dist/config/serializeMcpServers.d.ts.map +1 -0
  127. package/dist/config/serializeMcpServers.js +34 -0
  128. package/dist/config/types.d.ts +6 -0
  129. package/dist/config/types.d.ts.map +1 -1
  130. package/dist/config/writeRuntimeConfig.d.ts.map +1 -1
  131. package/dist/config/writeRuntimeConfig.js +3 -0
  132. package/dist/goals/SessionGoal.d.ts +14 -0
  133. package/dist/goals/SessionGoal.d.ts.map +1 -0
  134. package/dist/goals/SessionGoal.js +1 -0
  135. package/dist/goals/createGoalContinuationPrompt.d.ts +3 -0
  136. package/dist/goals/createGoalContinuationPrompt.d.ts.map +1 -0
  137. package/dist/goals/createGoalContinuationPrompt.js +17 -0
  138. package/dist/goals/index.d.ts +5 -0
  139. package/dist/goals/index.d.ts.map +1 -0
  140. package/dist/goals/index.js +3 -0
  141. package/dist/goals/isGoalStatus.d.ts +3 -0
  142. package/dist/goals/isGoalStatus.d.ts.map +1 -0
  143. package/dist/goals/isGoalStatus.js +3 -0
  144. package/dist/goals/normalizeGoalObjective.d.ts +3 -0
  145. package/dist/goals/normalizeGoalObjective.d.ts.map +1 -0
  146. package/dist/goals/normalizeGoalObjective.js +11 -0
  147. package/dist/mcp/McpClientManager.d.ts +12 -0
  148. package/dist/mcp/McpClientManager.d.ts.map +1 -0
  149. package/dist/mcp/McpClientManager.js +123 -0
  150. package/dist/mcp/connectMcpServer.d.ts +8 -0
  151. package/dist/mcp/connectMcpServer.d.ts.map +1 -0
  152. package/dist/mcp/connectMcpServer.js +47 -0
  153. package/dist/mcp/createMcpTool.d.ts +11 -0
  154. package/dist/mcp/createMcpTool.d.ts.map +1 -0
  155. package/dist/mcp/createMcpTool.js +43 -0
  156. package/dist/mcp/index.d.ts +5 -0
  157. package/dist/mcp/index.d.ts.map +1 -0
  158. package/dist/mcp/index.js +3 -0
  159. package/dist/mcp/loadMcpServerConfigs.d.ts +4 -0
  160. package/dist/mcp/loadMcpServerConfigs.d.ts.map +1 -0
  161. package/dist/mcp/loadMcpServerConfigs.js +122 -0
  162. package/dist/mcp/mcpResultToContentBlocks.d.ts +3 -0
  163. package/dist/mcp/mcpResultToContentBlocks.d.ts.map +1 -0
  164. package/dist/mcp/mcpResultToContentBlocks.js +51 -0
  165. package/dist/mcp/mergeMcpTools.d.ts +7 -0
  166. package/dist/mcp/mergeMcpTools.d.ts.map +1 -0
  167. package/dist/mcp/mergeMcpTools.js +34 -0
  168. package/dist/mcp/normalizeMcpName.d.ts +2 -0
  169. package/dist/mcp/normalizeMcpName.d.ts.map +1 -0
  170. package/dist/mcp/normalizeMcpName.js +3 -0
  171. package/dist/mcp/types.d.ts +37 -0
  172. package/dist/mcp/types.d.ts.map +1 -0
  173. package/dist/mcp/types.js +1 -0
  174. package/dist/permissions/PermissionContext.d.ts +7 -0
  175. package/dist/permissions/PermissionContext.d.ts.map +1 -0
  176. package/dist/permissions/PermissionContext.js +1 -0
  177. package/dist/permissions/PermissionMode.d.ts +3 -0
  178. package/dist/permissions/PermissionMode.d.ts.map +1 -0
  179. package/dist/permissions/PermissionMode.js +1 -0
  180. package/dist/permissions/createPermissionContext.d.ts +4 -0
  181. package/dist/permissions/createPermissionContext.d.ts.map +1 -0
  182. package/dist/permissions/createPermissionContext.js +16 -0
  183. package/dist/permissions/index.d.ts +13 -0
  184. package/dist/permissions/index.d.ts.map +1 -0
  185. package/dist/permissions/index.js +9 -0
  186. package/dist/permissions/isPermissionMode.d.ts +3 -0
  187. package/dist/permissions/isPermissionMode.d.ts.map +1 -0
  188. package/dist/permissions/isPermissionMode.js +6 -0
  189. package/dist/permissions/parseAutoPermissionReview.d.ts +7 -0
  190. package/dist/permissions/parseAutoPermissionReview.d.ts.map +1 -0
  191. package/dist/permissions/parseAutoPermissionReview.js +33 -0
  192. package/dist/permissions/parsePermissionMode.d.ts +3 -0
  193. package/dist/permissions/parsePermissionMode.d.ts.map +1 -0
  194. package/dist/permissions/parsePermissionMode.js +6 -0
  195. package/dist/permissions/requestAutoPermissionApproval.d.ts +9 -0
  196. package/dist/permissions/requestAutoPermissionApproval.d.ts.map +1 -0
  197. package/dist/permissions/requestAutoPermissionApproval.js +26 -0
  198. package/dist/permissions/reviewAutoPermission.d.ts +13 -0
  199. package/dist/permissions/reviewAutoPermission.d.ts.map +1 -0
  200. package/dist/permissions/reviewAutoPermission.js +70 -0
  201. package/dist/permissions/shouldElevateToolInAutoMode.d.ts +2 -0
  202. package/dist/permissions/shouldElevateToolInAutoMode.d.ts.map +1 -0
  203. package/dist/permissions/shouldElevateToolInAutoMode.js +37 -0
  204. package/dist/permissions/shouldReviewToolInAutoMode.d.ts +2 -0
  205. package/dist/permissions/shouldReviewToolInAutoMode.d.ts.map +1 -0
  206. package/dist/permissions/shouldReviewToolInAutoMode.js +85 -0
  207. package/dist/permissions/summarizePermissionAction.d.ts +2 -0
  208. package/dist/permissions/summarizePermissionAction.d.ts.map +1 -0
  209. package/dist/permissions/summarizePermissionAction.js +29 -0
  210. package/dist/protocol/SessionProtocol.d.ts +49 -2
  211. package/dist/protocol/SessionProtocol.d.ts.map +1 -1
  212. package/dist/protocol/index.d.ts +4 -1
  213. package/dist/protocol/index.d.ts.map +1 -1
  214. package/dist/providers/claude-sdk.d.ts.map +1 -1
  215. package/dist/providers/claude-sdk.js +7 -6
  216. package/dist/providers/models.d.ts +12 -12
  217. package/dist/providers/models.d.ts.map +1 -1
  218. package/dist/providers/models.js +18 -0
  219. package/dist/providers/types.d.ts +3 -0
  220. package/dist/providers/types.d.ts.map +1 -1
  221. package/dist/review/createCodeReviewPrompt.d.ts +2 -0
  222. package/dist/review/createCodeReviewPrompt.d.ts.map +1 -0
  223. package/dist/review/createCodeReviewPrompt.js +11 -0
  224. package/dist/review/index.d.ts +2 -0
  225. package/dist/review/index.d.ts.map +1 -0
  226. package/dist/review/index.js +1 -0
  227. package/dist/server/AgentSessionManager.d.ts +10 -1
  228. package/dist/server/AgentSessionManager.d.ts.map +1 -1
  229. package/dist/server/AgentSessionManager.js +203 -12
  230. package/dist/server/InMemorySession.d.ts +34 -1
  231. package/dist/server/InMemorySession.d.ts.map +1 -1
  232. package/dist/server/InMemorySession.js +558 -10
  233. package/dist/server/InMemorySessionStore.d.ts +2 -0
  234. package/dist/server/InMemorySessionStore.d.ts.map +1 -1
  235. package/dist/server/InMemorySessionStore.js +7 -0
  236. package/dist/server/PersistentSessionStore.d.ts +2 -0
  237. package/dist/server/PersistentSessionStore.d.ts.map +1 -1
  238. package/dist/server/PersistentSessionStore.js +80 -5
  239. package/dist/server/createGoalTitle.d.ts +2 -0
  240. package/dist/server/createGoalTitle.d.ts.map +1 -0
  241. package/dist/server/createGoalTitle.js +4 -0
  242. package/dist/server/createProtocolHttpServer.d.ts.map +1 -1
  243. package/dist/server/createProtocolHttpServer.js +119 -2
  244. package/dist/server/runLocalProtocolServer.d.ts.map +1 -1
  245. package/dist/server/runLocalProtocolServer.js +18 -2
  246. package/dist/tasks/index.d.ts +2 -0
  247. package/dist/tasks/index.d.ts.map +1 -0
  248. package/dist/tasks/index.js +1 -0
  249. package/dist/tasks/types.d.ts +39 -0
  250. package/dist/tasks/types.d.ts.map +1 -0
  251. package/dist/tasks/types.js +1 -0
  252. package/dist/tools/Agent.d.ts +13 -3
  253. package/dist/tools/Agent.d.ts.map +1 -1
  254. package/dist/tools/Agent.js +40 -12
  255. package/dist/tools/claude/AskUserQuestion.d.ts +23 -0
  256. package/dist/tools/claude/AskUserQuestion.d.ts.map +1 -0
  257. package/dist/tools/claude/AskUserQuestion.js +52 -0
  258. package/dist/tools/claude/Bash.d.ts +2 -0
  259. package/dist/tools/claude/Bash.d.ts.map +1 -1
  260. package/dist/tools/claude/Bash.js +20 -2
  261. package/dist/tools/claude/SendMessage.d.ts +10 -0
  262. package/dist/tools/claude/SendMessage.d.ts.map +1 -0
  263. package/dist/tools/claude/SendMessage.js +33 -0
  264. package/dist/tools/claude/TaskCreate.d.ts +12 -0
  265. package/dist/tools/claude/TaskCreate.d.ts.map +1 -0
  266. package/dist/tools/claude/TaskCreate.js +34 -0
  267. package/dist/tools/claude/TaskGet.d.ts +16 -0
  268. package/dist/tools/claude/TaskGet.d.ts.map +1 -0
  269. package/dist/tools/claude/TaskGet.js +44 -0
  270. package/dist/tools/claude/TaskList.d.ts +10 -0
  271. package/dist/tools/claude/TaskList.d.ts.map +1 -0
  272. package/dist/tools/claude/TaskList.js +51 -0
  273. package/dist/tools/claude/TaskOutput.d.ts +17 -0
  274. package/dist/tools/claude/TaskOutput.d.ts.map +1 -0
  275. package/dist/tools/claude/TaskOutput.js +74 -0
  276. package/dist/tools/claude/TaskStop.d.ts +10 -0
  277. package/dist/tools/claude/TaskStop.d.ts.map +1 -0
  278. package/dist/tools/claude/TaskStop.js +42 -0
  279. package/dist/tools/claude/TaskUpdate.d.ts +21 -0
  280. package/dist/tools/claude/TaskUpdate.d.ts.map +1 -0
  281. package/dist/tools/claude/TaskUpdate.js +55 -0
  282. package/dist/tools/claude/index.d.ts +111 -5
  283. package/dist/tools/claude/index.d.ts.map +1 -1
  284. package/dist/tools/claude/index.js +24 -2
  285. package/dist/tools/claude/parseBackgroundTaskId.d.ts +2 -0
  286. package/dist/tools/claude/parseBackgroundTaskId.d.ts.map +1 -0
  287. package/dist/tools/claude/parseBackgroundTaskId.js +7 -0
  288. package/dist/tools/claude/taskSchemas.d.ts +14 -0
  289. package/dist/tools/claude/taskSchemas.d.ts.map +1 -0
  290. package/dist/tools/claude/taskSchemas.js +18 -0
  291. package/dist/tools/codex/exec_command.d.ts +8 -6
  292. package/dist/tools/codex/exec_command.d.ts.map +1 -1
  293. package/dist/tools/codex/exec_command.js +37 -18
  294. package/dist/tools/codex/followup_task.d.ts +11 -0
  295. package/dist/tools/codex/followup_task.d.ts.map +1 -0
  296. package/dist/tools/codex/followup_task.js +18 -0
  297. package/dist/tools/codex/humanizeTaskName.d.ts +2 -0
  298. package/dist/tools/codex/humanizeTaskName.d.ts.map +1 -0
  299. package/dist/tools/codex/humanizeTaskName.js +4 -0
  300. package/dist/tools/codex/index.d.ts +90 -7
  301. package/dist/tools/codex/index.d.ts.map +1 -1
  302. package/dist/tools/codex/index.js +24 -0
  303. package/dist/tools/codex/interrupt_agent.d.ts +10 -0
  304. package/dist/tools/codex/interrupt_agent.d.ts.map +1 -0
  305. package/dist/tools/codex/interrupt_agent.js +17 -0
  306. package/dist/tools/codex/list_agents.d.ts +12 -0
  307. package/dist/tools/codex/list_agents.d.ts.map +1 -0
  308. package/dist/tools/codex/list_agents.js +23 -0
  309. package/dist/tools/codex/request_user_input.d.ts +16 -0
  310. package/dist/tools/codex/request_user_input.d.ts.map +1 -0
  311. package/dist/tools/codex/request_user_input.js +58 -0
  312. package/dist/tools/codex/requireSubagentContext.d.ts +3 -0
  313. package/dist/tools/codex/requireSubagentContext.d.ts.map +1 -0
  314. package/dist/tools/codex/requireSubagentContext.js +6 -0
  315. package/dist/tools/codex/spawn_agent.d.ts +9 -0
  316. package/dist/tools/codex/spawn_agent.d.ts.map +1 -0
  317. package/dist/tools/codex/spawn_agent.js +35 -0
  318. package/dist/tools/codex/subagentSchemas.d.ts +8 -0
  319. package/dist/tools/codex/subagentSchemas.d.ts.map +1 -0
  320. package/dist/tools/codex/subagentSchemas.js +13 -0
  321. package/dist/tools/codex/unifiedExecOutput.d.ts +14 -0
  322. package/dist/tools/codex/unifiedExecOutput.d.ts.map +1 -0
  323. package/dist/tools/codex/unifiedExecOutput.js +44 -0
  324. package/dist/tools/codex/update_plan.d.ts +10 -0
  325. package/dist/tools/codex/update_plan.d.ts.map +1 -0
  326. package/dist/tools/codex/update_plan.js +34 -0
  327. package/dist/tools/codex/wait_agent.d.ts +13 -0
  328. package/dist/tools/codex/wait_agent.d.ts.map +1 -0
  329. package/dist/tools/codex/wait_agent.js +32 -0
  330. package/dist/tools/codex/write_stdin.d.ts +6 -1
  331. package/dist/tools/codex/write_stdin.d.ts.map +1 -1
  332. package/dist/tools/codex/write_stdin.js +44 -12
  333. package/dist/tools/goals/create_goal.d.ts +11 -0
  334. package/dist/tools/goals/create_goal.d.ts.map +1 -0
  335. package/dist/tools/goals/create_goal.js +29 -0
  336. package/dist/tools/goals/get_goal.d.ts +9 -0
  337. package/dist/tools/goals/get_goal.d.ts.map +1 -0
  338. package/dist/tools/goals/get_goal.js +26 -0
  339. package/dist/tools/goals/goalSchemas.d.ts +8 -0
  340. package/dist/tools/goals/goalSchemas.d.ts.map +1 -0
  341. package/dist/tools/goals/goalSchemas.js +13 -0
  342. package/dist/tools/goals/index.d.ts +30 -0
  343. package/dist/tools/goals/index.d.ts.map +1 -0
  344. package/dist/tools/goals/index.js +7 -0
  345. package/dist/tools/goals/update_goal.d.ts +11 -0
  346. package/dist/tools/goals/update_goal.d.ts.map +1 -0
  347. package/dist/tools/goals/update_goal.js +33 -0
  348. package/dist/tools/index.d.ts +1 -0
  349. package/dist/tools/index.d.ts.map +1 -1
  350. package/dist/tools/index.js +1 -0
  351. package/dist/tools/pi/bash.d.ts.map +1 -1
  352. package/dist/tools/pi/bash.js +2 -0
  353. package/dist/tools/utils/readSessionWithProgress.d.ts +9 -0
  354. package/dist/tools/utils/readSessionWithProgress.d.ts.map +1 -0
  355. package/dist/tools/utils/readSessionWithProgress.js +27 -0
  356. package/dist/tools/utils/shell.d.ts +2 -0
  357. package/dist/tools/utils/shell.d.ts.map +1 -1
  358. package/dist/tools/utils/shell.js +37 -0
  359. package/dist/tools/utils/summarizeShellOutput.d.ts.map +1 -1
  360. package/dist/tools/utils/summarizeShellOutput.js +2 -0
  361. package/dist/user-input/index.d.ts +2 -0
  362. package/dist/user-input/index.d.ts.map +1 -0
  363. package/dist/user-input/index.js +1 -0
  364. package/dist/user-input/types.d.ts +19 -0
  365. package/dist/user-input/types.d.ts.map +1 -0
  366. package/dist/user-input/types.js +1 -0
  367. package/dist/web/assets/highlighted-body-OFNGDK62-BuJOCQJD.js +1 -0
  368. package/dist/web/assets/highlighted-body-OFNGDK62-TwhCqUaJ.js +1 -0
  369. package/dist/web/assets/index-B6Bc6sUJ.css +1 -0
  370. package/dist/web/assets/index-BC99-iZC.js +341 -0
  371. package/dist/web/assets/index-BZN9jSiw.js +341 -0
  372. package/dist/web/assets/index-CcF0unjO.css +1 -0
  373. package/dist/web/index.html +2 -2
  374. 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"}
@@ -5,16 +5,21 @@ import { createClaudeSdkProvider } from "../providers/claude-sdk.js";
5
5
  import { createCodexProvider } from "../providers/codex.js";
6
6
  import { getBedrockModelRoute } from "../providers/getBedrockModelRoute.js";
7
7
  import { modelOpenaiGpt56Sol } from "../providers/models.js";
8
- import { claudeCodeTools } from "../tools/claude/index.js";
9
- import { codexTools } from "../tools/codex/index.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;
@@ -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":"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
+ }
@@ -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
+ }
@@ -1,4 +1,4 @@
1
- import type { AbortRunResponse, ChangeEffortRequest, ChangeModelRequest, CreateSessionRequest, CreateSessionResponse, EventId, HealthResponse, ListModelsResponse, ListSessionsResponse, ListSubagentsResponse, ProtocolSession, SearchFilesResponse, SessionEvent, ShutdownServerResponse, SubmitMessageRequest, SubmitMessageResponse } from "../protocol/index.js";
1
+ import type { AbortRunResponse, AnswerUserInputRequest, ChangeEffortRequest, ChangeModelRequest, ChangePermissionModeRequest, ChangeSessionGoalStatusRequest, CompactSessionResponse, CreateSessionRequest, CreateSessionResponse, EventId, HealthResponse, GoalSessionResponse, ListModelsResponse, ListSessionsResponse, ListSubagentsResponse, ProtocolSession, SearchFilesResponse, SessionEvent, ShutdownServerResponse, SetGoalRequest, SteerMessageRequest, SteerMessageResponse, SubmitMessageRequest, SubmitMessageResponse } from "../protocol/index.js";
2
2
  export interface ProtocolHttpClientOptions {
3
3
  socketPath: string;
4
4
  token: string;
@@ -14,13 +14,24 @@ export declare class ProtocolHttpClient {
14
14
  readonly socketPath: string;
15
15
  readonly token: string;
16
16
  constructor(options: ProtocolHttpClientOptions);
17
+ steerMessage(sessionId: string, request: SteerMessageRequest): Promise<SteerMessageResponse>;
17
18
  abort(sessionId: string): Promise<AbortRunResponse>;
19
+ answerUserInput(sessionId: string, requestId: string, request: AnswerUserInputRequest): Promise<{
20
+ session: ProtocolSession;
21
+ }>;
18
22
  changeModel(sessionId: string, request: ChangeModelRequest): Promise<{
19
23
  session: ProtocolSession;
20
24
  }>;
21
25
  changeEffort(sessionId: string, request: ChangeEffortRequest): Promise<{
22
26
  session: ProtocolSession;
23
27
  }>;
28
+ changePermissionMode(sessionId: string, request: ChangePermissionModeRequest): Promise<{
29
+ session: ProtocolSession;
30
+ }>;
31
+ setGoal(sessionId: string, request: SetGoalRequest): Promise<GoalSessionResponse>;
32
+ changeGoalStatus(sessionId: string, request: ChangeSessionGoalStatusRequest): Promise<GoalSessionResponse>;
33
+ clearGoal(sessionId: string): Promise<GoalSessionResponse>;
34
+ compact(sessionId: string): Promise<CompactSessionResponse>;
24
35
  createSession(request: CreateSessionRequest): Promise<CreateSessionResponse>;
25
36
  health(): Promise<HealthResponse>;
26
37
  models(): Promise<ListModelsResponse>;
@@ -1 +1 @@
1
- {"version":3,"file":"ProtocolHttpClient.d.ts","sourceRoot":"","sources":["../../sources/client/ProtocolHttpClient.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACR,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,OAAO,EACP,cAAc,EACd,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,eAAe,EACf,mBAAmB,EACnB,YAAY,EACZ,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACxB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,WAAW,yBAAyB;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,yBAAyB;IACtC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1D;AAED,qBAAa,kBAAkB;;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;gBAEX,OAAO,EAAE,yBAAyB;IAK9C,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAInD,WAAW,CACP,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,kBAAkB,GAC5B,OAAO,CAAC;QAAE,OAAO,EAAE,eAAe,CAAA;KAAE,CAAC;IAQxC,YAAY,CACR,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,mBAAmB,GAC7B,OAAO,CAAC;QAAE,OAAO,EAAE,eAAe,CAAA;KAAE,CAAC;IAQxC,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAI5E,MAAM,IAAI,OAAO,CAAC,cAAc,CAAC;IAIjC,MAAM,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAIrC,YAAY,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAM3D,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAIhE,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAWvF,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,eAAe,CAAA;KAAE,CAAC;IAIpE,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,YAAY,EAAE,CAAA;KAAE,CAAC;IAQlF,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,eAAe,CAAA;KAAE,CAAC;IAI/D,QAAQ,IAAI,OAAO,CAAC,sBAAsB,CAAC;IAI3C,aAAa,CACT,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,oBAAoB,GAC9B,OAAO,CAAC,qBAAqB,CAAC;IAQ3B,kBAAkB,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC;CAsH9E"}
1
+ {"version":3,"file":"ProtocolHttpClient.d.ts","sourceRoot":"","sources":["../../sources/client/ProtocolHttpClient.ts"],"names":[],"mappings":"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"}