@sortedyuan/maybecode 0.3.2 → 0.5.0

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 (295) hide show
  1. package/README.md +166 -55
  2. package/README.zh-CN.md +267 -0
  3. package/dist/application.d.ts +40 -34
  4. package/dist/application.d.ts.map +1 -1
  5. package/dist/application.js +290 -170
  6. package/dist/application.js.map +1 -1
  7. package/dist/args.d.ts +2 -2
  8. package/dist/args.d.ts.map +1 -1
  9. package/dist/args.js +50 -27
  10. package/dist/args.js.map +1 -1
  11. package/dist/bin.js +82 -71
  12. package/dist/bin.js.map +4 -4
  13. package/dist/cli/chunk-3IORPKBL.js +3572 -0
  14. package/dist/cli/chunk-3IORPKBL.js.map +7 -0
  15. package/dist/cli/{chunk-LVTRXPDS.js → chunk-4B2Z6KW7.js} +1547 -1536
  16. package/dist/cli/chunk-4B2Z6KW7.js.map +7 -0
  17. package/dist/cli/{chunk-JT6VBKOM.js → chunk-4WG6JIJJ.js} +127 -33
  18. package/dist/cli/{chunk-JT6VBKOM.js.map → chunk-4WG6JIJJ.js.map} +3 -3
  19. package/dist/cli/{chunk-K5JWPNSY.js → chunk-5SLWALZK.js} +3521 -16164
  20. package/dist/cli/chunk-5SLWALZK.js.map +7 -0
  21. package/dist/cli/chunk-MNBYXL5Y.js +132 -0
  22. package/dist/cli/chunk-MNBYXL5Y.js.map +7 -0
  23. package/dist/cli/{chunk-F4XRPLUM.js → chunk-SLWLUEHQ.js} +226 -86
  24. package/dist/cli/chunk-SLWLUEHQ.js.map +7 -0
  25. package/dist/cli/chunk-UQDZ55LQ.js +199 -0
  26. package/dist/cli/chunk-UQDZ55LQ.js.map +7 -0
  27. package/dist/cli/{chunk-7ISOHFS7.js → chunk-WMSG5ZTR.js} +717 -388
  28. package/dist/cli/chunk-WMSG5ZTR.js.map +7 -0
  29. package/dist/cli/chunk-WVIRS76R.js +4057 -0
  30. package/dist/cli/chunk-WVIRS76R.js.map +7 -0
  31. package/dist/cli/{chunk-HOU5ITUK.js → chunk-XTEMRAQW.js} +1 -1
  32. package/dist/cli/chunk-XTEMRAQW.js.map +7 -0
  33. package/dist/cli/chunk-Z3BOPBVU.js +91 -0
  34. package/dist/cli/chunk-Z3BOPBVU.js.map +7 -0
  35. package/dist/cli/{configured-WHY3GGAJ.js → configured-ACNM6TRQ.js} +10 -9
  36. package/dist/cli/{file-type-R2T7TBHI.js → file-type-HLHPV7WC.js} +817 -13
  37. package/dist/cli/file-type-HLHPV7WC.js.map +7 -0
  38. package/dist/cli/mcp-auth-XD5U7WCV.js +74 -0
  39. package/dist/cli/mcp-auth-XD5U7WCV.js.map +7 -0
  40. package/dist/cli/onboarding-WQWCPYEO.js +530 -0
  41. package/dist/cli/onboarding-WQWCPYEO.js.map +7 -0
  42. package/dist/cli/onboarding-check-HRRI5OJ7.js +32 -0
  43. package/dist/cli/onboarding-check-HRRI5OJ7.js.map +7 -0
  44. package/dist/cli/{retained-tui-VJ3VX4R3.js → retained-tui-QF5VMYLC.js} +788 -332
  45. package/dist/cli/retained-tui-QF5VMYLC.js.map +7 -0
  46. package/dist/cli/{sixel-LWTCM76G.js → sixel-ISZ4FZ3U.js} +37 -37
  47. package/dist/cli/{sixel-LWTCM76G.js.map → sixel-ISZ4FZ3U.js.map} +1 -1
  48. package/dist/cli/{team-T7G7PPNN.js → team-O2I5BXHM.js} +7 -6
  49. package/dist/cli/{team-v2-JGBBQ7FR.js → team-v2-YYO2G7DJ.js} +816 -390
  50. package/dist/cli/team-v2-YYO2G7DJ.js.map +7 -0
  51. package/dist/cli/{web-server-FOMNPY7Q.js → web-server-SXMH6FGA.js} +55 -19
  52. package/dist/cli/web-server-SXMH6FGA.js.map +7 -0
  53. package/dist/cli/{web-ui-COB6PKC5.js → web-ui-UWQUFE4W.js} +7 -6
  54. package/dist/config-schema.json +337 -0
  55. package/dist/configured.d.ts +18 -11
  56. package/dist/configured.d.ts.map +1 -1
  57. package/dist/configured.js +213 -390
  58. package/dist/configured.js.map +1 -1
  59. package/dist/controller.d.ts +19 -18
  60. package/dist/controller.d.ts.map +1 -1
  61. package/dist/delegation-commands.d.ts +1 -1
  62. package/dist/delegation-commands.d.ts.map +1 -1
  63. package/dist/delegation-commands.js +8 -8
  64. package/dist/delegation-commands.js.map +1 -1
  65. package/dist/errors.d.ts +2 -1
  66. package/dist/errors.d.ts.map +1 -1
  67. package/dist/errors.js +2 -1
  68. package/dist/errors.js.map +1 -1
  69. package/dist/events.d.ts +8 -6
  70. package/dist/events.d.ts.map +1 -1
  71. package/dist/fork-picker.d.ts.map +1 -1
  72. package/dist/fork-picker.js +19 -5
  73. package/dist/fork-picker.js.map +1 -1
  74. package/dist/git-request.d.ts +6 -6
  75. package/dist/git-request.d.ts.map +1 -1
  76. package/dist/git-request.js +28 -15
  77. package/dist/git-request.js.map +1 -1
  78. package/dist/goal-commands.d.ts +1 -1
  79. package/dist/goal-commands.d.ts.map +1 -1
  80. package/dist/goal-commands.js +12 -5
  81. package/dist/goal-commands.js.map +1 -1
  82. package/dist/index.d.ts +5 -37
  83. package/dist/index.d.ts.map +1 -1
  84. package/dist/index.js +3 -36
  85. package/dist/index.js.map +1 -1
  86. package/dist/instructions.d.ts +2 -7
  87. package/dist/instructions.d.ts.map +1 -1
  88. package/dist/instructions.js +7 -15
  89. package/dist/instructions.js.map +1 -1
  90. package/dist/keymap.d.ts +2 -2
  91. package/dist/keymap.d.ts.map +1 -1
  92. package/dist/keymap.js +2 -2
  93. package/dist/keymap.js.map +1 -1
  94. package/dist/maybecode-config.schema.json +1765 -0
  95. package/dist/mcp-auth.d.ts +1 -1
  96. package/dist/mcp-auth.d.ts.map +1 -1
  97. package/dist/mcp-auth.js +11 -8
  98. package/dist/mcp-auth.js.map +1 -1
  99. package/dist/mcp-commands.d.ts.map +1 -1
  100. package/dist/mcp-commands.js +18 -4
  101. package/dist/mcp-commands.js.map +1 -1
  102. package/dist/mcp-interaction-ui.d.ts.map +1 -1
  103. package/dist/mcp-interaction-ui.js +11 -4
  104. package/dist/mcp-interaction-ui.js.map +1 -1
  105. package/dist/media-history.d.ts +1 -1
  106. package/dist/media-history.d.ts.map +1 -1
  107. package/dist/media-history.js +8 -2
  108. package/dist/media-history.js.map +1 -1
  109. package/dist/model-picker.d.ts.map +1 -1
  110. package/dist/model-picker.js +10 -11
  111. package/dist/model-picker.js.map +1 -1
  112. package/dist/model-transition.d.ts +11 -0
  113. package/dist/model-transition.d.ts.map +1 -0
  114. package/dist/model-transition.js +48 -0
  115. package/dist/model-transition.js.map +1 -0
  116. package/dist/model.d.ts +2 -2
  117. package/dist/model.d.ts.map +1 -1
  118. package/dist/model.js +8 -4
  119. package/dist/model.js.map +1 -1
  120. package/dist/onboarding-check.d.ts +3 -0
  121. package/dist/onboarding-check.d.ts.map +1 -0
  122. package/dist/onboarding-check.js +22 -0
  123. package/dist/onboarding-check.js.map +1 -0
  124. package/dist/onboarding.d.ts +6 -0
  125. package/dist/onboarding.d.ts.map +1 -0
  126. package/dist/onboarding.js +463 -0
  127. package/dist/onboarding.js.map +1 -0
  128. package/dist/plugins/application.d.ts +6 -4
  129. package/dist/plugins/application.d.ts.map +1 -1
  130. package/dist/plugins/application.js +106 -52
  131. package/dist/plugins/application.js.map +1 -1
  132. package/dist/plugins/instructions.d.ts +1 -1
  133. package/dist/plugins/instructions.d.ts.map +1 -1
  134. package/dist/plugins/instructions.js +24 -11
  135. package/dist/plugins/instructions.js.map +1 -1
  136. package/dist/plugins/resources.d.ts +2 -2
  137. package/dist/plugins/resources.d.ts.map +1 -1
  138. package/dist/plugins/resources.js +22 -12
  139. package/dist/plugins/resources.js.map +1 -1
  140. package/dist/policy.d.ts +1 -1
  141. package/dist/policy.d.ts.map +1 -1
  142. package/dist/policy.js +59 -11
  143. package/dist/policy.js.map +1 -1
  144. package/dist/run.d.ts +2 -0
  145. package/dist/run.d.ts.map +1 -1
  146. package/dist/run.js +38 -33
  147. package/dist/run.js.map +1 -1
  148. package/dist/runtime-instructions.d.ts +1 -1
  149. package/dist/runtime-instructions.d.ts.map +1 -1
  150. package/dist/runtime-instructions.js +15 -7
  151. package/dist/runtime-instructions.js.map +1 -1
  152. package/dist/session-navigation.d.ts +6 -0
  153. package/dist/session-navigation.d.ts.map +1 -0
  154. package/dist/session-navigation.js +64 -0
  155. package/dist/session-navigation.js.map +1 -0
  156. package/dist/session-picker.d.ts +1 -1
  157. package/dist/session-picker.d.ts.map +1 -1
  158. package/dist/session-picker.js +23 -32
  159. package/dist/session-picker.js.map +1 -1
  160. package/dist/settings.d.ts +718 -0
  161. package/dist/settings.d.ts.map +1 -0
  162. package/dist/settings.js +14 -0
  163. package/dist/settings.js.map +1 -0
  164. package/dist/skills.d.ts +1 -1
  165. package/dist/skills.d.ts.map +1 -1
  166. package/dist/skills.js +10 -12
  167. package/dist/skills.js.map +1 -1
  168. package/dist/slash-commands.d.ts +2 -2
  169. package/dist/slash-commands.d.ts.map +1 -1
  170. package/dist/slash-commands.js +149 -67
  171. package/dist/slash-commands.js.map +1 -1
  172. package/dist/team-execution.d.ts +10 -0
  173. package/dist/team-execution.d.ts.map +1 -0
  174. package/dist/team-execution.js +29 -0
  175. package/dist/team-execution.js.map +1 -0
  176. package/dist/team-patches.d.ts.map +1 -1
  177. package/dist/team-patches.js +149 -52
  178. package/dist/team-patches.js.map +1 -1
  179. package/dist/team-plan.d.ts +2 -2
  180. package/dist/team-plan.d.ts.map +1 -1
  181. package/dist/team-plan.js +115 -34
  182. package/dist/team-plan.js.map +1 -1
  183. package/dist/team-recovery.d.ts +1 -1
  184. package/dist/team-recovery.d.ts.map +1 -1
  185. package/dist/team-recovery.js +40 -10
  186. package/dist/team-recovery.js.map +1 -1
  187. package/dist/team-v2.d.ts.map +1 -1
  188. package/dist/team-v2.js +335 -104
  189. package/dist/team-v2.js.map +1 -1
  190. package/dist/team-verification.d.ts +4 -2
  191. package/dist/team-verification.d.ts.map +1 -1
  192. package/dist/team-verification.js +300 -97
  193. package/dist/team-verification.js.map +1 -1
  194. package/dist/team.d.ts +2 -2
  195. package/dist/team.d.ts.map +1 -1
  196. package/dist/team.js +172 -62
  197. package/dist/team.js.map +1 -1
  198. package/dist/terminal-web.d.ts +1 -0
  199. package/dist/terminal-web.d.ts.map +1 -1
  200. package/dist/terminal-web.js +28 -10
  201. package/dist/terminal-web.js.map +1 -1
  202. package/dist/ui/actions.d.ts.map +1 -1
  203. package/dist/ui/actions.js.map +1 -1
  204. package/dist/ui/retained-tui.d.ts.map +1 -1
  205. package/dist/ui/retained-tui.js +231 -173
  206. package/dist/ui/retained-tui.js.map +1 -1
  207. package/dist/ui/{prototype-view.d.ts → terminal-view.d.ts} +7 -7
  208. package/dist/ui/terminal-view.d.ts.map +1 -0
  209. package/dist/ui/{prototype-view.js → terminal-view.js} +185 -98
  210. package/dist/ui/terminal-view.js.map +1 -0
  211. package/dist/web-commands.d.ts.map +1 -1
  212. package/dist/web-commands.js +160 -57
  213. package/dist/web-commands.js.map +1 -1
  214. package/dist/web-extension.d.ts.map +1 -1
  215. package/dist/web-extension.js +14 -4
  216. package/dist/web-extension.js.map +1 -1
  217. package/dist/web-server.d.ts.map +1 -1
  218. package/dist/web-server.js +2 -1
  219. package/dist/web-server.js.map +1 -1
  220. package/dist/web-ui.d.ts.map +1 -1
  221. package/dist/web-ui.js +167 -40
  222. package/dist/web-ui.js.map +1 -1
  223. package/dist/workspace-configuration.d.ts +7 -0
  224. package/dist/workspace-configuration.d.ts.map +1 -0
  225. package/dist/workspace-configuration.js +134 -0
  226. package/dist/workspace-configuration.js.map +1 -0
  227. package/dist/workspace-state.d.ts +20 -0
  228. package/dist/workspace-state.d.ts.map +1 -0
  229. package/dist/workspace-state.js +2 -0
  230. package/dist/workspace-state.js.map +1 -0
  231. package/dist/workspace.d.ts +26 -43
  232. package/dist/workspace.d.ts.map +1 -1
  233. package/dist/workspace.js +261 -323
  234. package/dist/workspace.js.map +1 -1
  235. package/package.json +21 -31
  236. package/dist/cli/chunk-7ISOHFS7.js.map +0 -7
  237. package/dist/cli/chunk-F4XRPLUM.js.map +0 -7
  238. package/dist/cli/chunk-H7SNBFO4.js +0 -5522
  239. package/dist/cli/chunk-H7SNBFO4.js.map +0 -7
  240. package/dist/cli/chunk-HOU5ITUK.js.map +0 -7
  241. package/dist/cli/chunk-K5JWPNSY.js.map +0 -7
  242. package/dist/cli/chunk-LVTRXPDS.js.map +0 -7
  243. package/dist/cli/chunk-VAZMCNBB.js +0 -686
  244. package/dist/cli/chunk-VAZMCNBB.js.map +0 -7
  245. package/dist/cli/chunk-WOFEI42C.js +0 -7820
  246. package/dist/cli/chunk-WOFEI42C.js.map +0 -7
  247. package/dist/cli/file-type-R2T7TBHI.js.map +0 -7
  248. package/dist/cli/mcp-auth-UNRHSIKJ.js +0 -63
  249. package/dist/cli/mcp-auth-UNRHSIKJ.js.map +0 -7
  250. package/dist/cli/retained-tui-VJ3VX4R3.js.map +0 -7
  251. package/dist/cli/team-v2-JGBBQ7FR.js.map +0 -7
  252. package/dist/cli/tui-SA74DKMA.js +0 -1705
  253. package/dist/cli/tui-SA74DKMA.js.map +0 -7
  254. package/dist/cli/web-server-FOMNPY7Q.js.map +0 -7
  255. package/dist/delegation.d.ts +0 -2
  256. package/dist/delegation.d.ts.map +0 -1
  257. package/dist/delegation.js +0 -2
  258. package/dist/delegation.js.map +0 -1
  259. package/dist/history-memory.d.ts +0 -2
  260. package/dist/history-memory.d.ts.map +0 -1
  261. package/dist/history-memory.js +0 -2
  262. package/dist/history-memory.js.map +0 -1
  263. package/dist/subagent-budget.d.ts +0 -2
  264. package/dist/subagent-budget.d.ts.map +0 -1
  265. package/dist/subagent-budget.js +0 -2
  266. package/dist/subagent-budget.js.map +0 -1
  267. package/dist/subagent-files.d.ts +0 -2
  268. package/dist/subagent-files.d.ts.map +0 -1
  269. package/dist/subagent-files.js +0 -2
  270. package/dist/subagent-files.js.map +0 -1
  271. package/dist/subagent-host.d.ts +0 -2
  272. package/dist/subagent-host.d.ts.map +0 -1
  273. package/dist/subagent-host.js +0 -2
  274. package/dist/subagent-host.js.map +0 -1
  275. package/dist/subagent-instructions.d.ts +0 -2
  276. package/dist/subagent-instructions.d.ts.map +0 -1
  277. package/dist/subagent-instructions.js +0 -2
  278. package/dist/subagent-instructions.js.map +0 -1
  279. package/dist/subagents.d.ts +0 -2
  280. package/dist/subagents.d.ts.map +0 -1
  281. package/dist/subagents.js +0 -2
  282. package/dist/subagents.js.map +0 -1
  283. package/dist/summarizer.d.ts +0 -2
  284. package/dist/summarizer.d.ts.map +0 -1
  285. package/dist/summarizer.js +0 -2
  286. package/dist/summarizer.js.map +0 -1
  287. package/dist/tui.d.ts +0 -7
  288. package/dist/tui.d.ts.map +0 -1
  289. package/dist/tui.js +0 -1109
  290. package/dist/tui.js.map +0 -1
  291. package/dist/ui/prototype-view.d.ts.map +0 -1
  292. package/dist/ui/prototype-view.js.map +0 -1
  293. /package/dist/cli/{configured-WHY3GGAJ.js.map → configured-ACNM6TRQ.js.map} +0 -0
  294. /package/dist/cli/{team-T7G7PPNN.js.map → team-O2I5BXHM.js.map} +0 -0
  295. /package/dist/cli/{web-ui-COB6PKC5.js.map → web-ui-UWQUFE4W.js.map} +0 -0
package/dist/bin.js CHANGED
@@ -2,16 +2,21 @@
2
2
  import { createRequire as __createRequire } from "node:module"; const require = __createRequire(import.meta.url);
3
3
  import {
4
4
  createNodeTerminal
5
- } from "./cli/chunk-JT6VBKOM.js";
5
+ } from "./cli/chunk-4WG6JIJJ.js";
6
6
  import {
7
7
  MaybeCodeUsageError
8
- } from "./cli/chunk-K5JWPNSY.js";
8
+ } from "./cli/chunk-5SLWALZK.js";
9
+ import "./cli/chunk-UQDZ55LQ.js";
9
10
  import "./cli/chunk-BSBNNF34.js";
10
11
  import {
11
12
  __name
12
13
  } from "./cli/chunk-E732GDOI.js";
13
14
 
15
+ // apps/maybecode/src/run.ts
16
+ import { omitUndefined as omitUndefined2 } from "@sortedyuan/may/core";
17
+
14
18
  // apps/maybecode/src/args.ts
19
+ import { omitUndefined } from "@sortedyuan/may/core";
15
20
  var MAYBE_CODE_USAGE = `MaybeCode
16
21
 
17
22
  Usage:
@@ -30,7 +35,7 @@ Options:
30
35
  --model <name> Use a named model profile
31
36
  --yolo Auto-approve tool requests, preserving explicit denials
32
37
  --no-yolo Use normal approvals, overriding configuration
33
- --ui <name> UI implementation: retained (default), classic or web
38
+ --ui <name> UI implementation: retained (default) or web
34
39
  --port <number> Local Web UI port (default: 3940; requires --ui web)
35
40
  -c, --continue Continue the most recent session for this workspace
36
41
  -r, --resume <id> Resume a specific session (--session is an alias)
@@ -74,27 +79,17 @@ function parseMaybeCodeArgs(args) {
74
79
  continue;
75
80
  }
76
81
  if (argument === "--config") {
77
- configPath = setOption(
78
- "--config",
79
- configPath,
80
- readValue(args, ++index, "--config")
81
- );
82
+ configPath = setOption("--config", configPath, readValue(args, ++index, "--config"));
82
83
  continue;
83
84
  }
84
85
  if (argument === "--model") {
85
- model = setOption(
86
- "--model",
87
- model,
88
- readValue(args, ++index, "--model")
89
- );
86
+ model = setOption("--model", model, readValue(args, ++index, "--model"));
90
87
  continue;
91
88
  }
92
89
  if (argument === "--ui") {
93
90
  const value = readValue(args, ++index, "--ui");
94
- if (value !== "classic" && value !== "retained" && value !== "web") {
95
- throw new MaybeCodeUsageError(
96
- '--ui must be "classic", "retained" or "web"'
97
- );
91
+ if (value !== "retained" && value !== "web") {
92
+ throw new MaybeCodeUsageError('--ui must be "retained" or "web"');
98
93
  }
99
94
  if (ui !== void 0) {
100
95
  throw new MaybeCodeUsageError("--ui may only be specified once");
@@ -104,16 +99,13 @@ function parseMaybeCodeArgs(args) {
104
99
  }
105
100
  if (argument === "--port") {
106
101
  const value = readValue(args, ++index, "--port");
107
- if (port !== void 0 || !/^\d+$/.test(value) || Number(value) > 65535) throw new MaybeCodeUsageError("--port requires one integer from 0 to 65535");
102
+ if (port !== void 0 || !/^\d+$/.test(value) || Number(value) > 65535)
103
+ throw new MaybeCodeUsageError("--port requires one integer from 0 to 65535");
108
104
  port = Number(value);
109
105
  continue;
110
106
  }
111
107
  if (argument === "--resume" || argument === "-r" || argument === "--session") {
112
- sessionId = setOption(
113
- "--resume",
114
- sessionId,
115
- readValue(args, ++index, "--resume")
116
- );
108
+ sessionId = setOption("--resume", sessionId, readValue(args, ++index, "--resume"));
117
109
  continue;
118
110
  }
119
111
  if (argument.startsWith("-")) {
@@ -125,22 +117,20 @@ function parseMaybeCodeArgs(args) {
125
117
  workspace = argument;
126
118
  }
127
119
  if (continueLatest && sessionId !== void 0) {
128
- throw new MaybeCodeUsageError(
129
- "--continue and --resume cannot be used together"
130
- );
120
+ throw new MaybeCodeUsageError("--continue and --resume cannot be used together");
131
121
  }
132
122
  if (port !== void 0 && ui !== "web") throw new MaybeCodeUsageError("--port requires --ui web");
133
- return {
123
+ return omitUndefined({
134
124
  type: "start",
135
- ...permissionMode === void 0 ? {} : { permissionMode },
125
+ permissionMode,
136
126
  autoResume: continueLatest,
137
127
  ui: ui ?? "retained",
138
- ...port === void 0 ? {} : { port },
139
- ...workspace === void 0 ? {} : { workspace },
140
- ...configPath === void 0 ? {} : { configPath },
141
- ...model === void 0 ? {} : { model },
142
- ...sessionId === void 0 ? {} : { sessionId }
143
- };
128
+ port,
129
+ workspace,
130
+ configPath,
131
+ model,
132
+ sessionId
133
+ });
144
134
  }
145
135
  __name(parseMaybeCodeArgs, "parseMaybeCodeArgs");
146
136
  function parseTeamCommand(args) {
@@ -180,27 +170,39 @@ function parseTeamCommand(args) {
180
170
  strings[key] = setOption(option, strings[key], readValue(args, ++index, option));
181
171
  continue;
182
172
  }
183
- const numericKey = { "--max-model-calls": "maxModelCalls", "--max-total-tokens": "maxTotalTokens", "--max-concurrent": "maxConcurrent" }[option];
173
+ const numericKey = {
174
+ "--max-model-calls": "maxModelCalls",
175
+ "--max-total-tokens": "maxTotalTokens",
176
+ "--max-concurrent": "maxConcurrent"
177
+ }[option];
184
178
  if (numericKey && action === "run") {
185
179
  if (numbers[numericKey] !== void 0) throw new MaybeCodeUsageError(`${option} may only be specified once`);
186
180
  const raw = readValue(args, ++index, option);
187
181
  const number = Number(raw);
188
182
  if (!/^\d+$/u.test(raw) || !Number.isSafeInteger(number) || number < 1 || numericKey === "maxConcurrent" && number > 8) {
189
- throw new MaybeCodeUsageError(`${option} requires a positive integer${numericKey === "maxConcurrent" ? " no greater than 8" : ""}`);
183
+ throw new MaybeCodeUsageError(
184
+ `${option} requires a positive integer${numericKey === "maxConcurrent" ? " no greater than 8" : ""}`
185
+ );
190
186
  }
191
187
  numbers[numericKey] = number;
192
188
  continue;
193
189
  }
194
190
  throw new MaybeCodeUsageError(`Unsupported team option "${option}"`);
195
191
  }
196
- if (strings.preset && !["supervisor", "pipeline", "parallel"].includes(strings.preset)) throw new MaybeCodeUsageError("Unknown team preset");
197
- if (strings.mode && !["read-only", "coding"].includes(strings.mode)) throw new MaybeCodeUsageError("--mode requires read-only or coding");
192
+ if (strings.preset && !["supervisor", "pipeline", "parallel"].includes(strings.preset))
193
+ throw new MaybeCodeUsageError("Unknown team preset");
194
+ if (strings.mode && !["read-only", "coding"].includes(strings.mode))
195
+ throw new MaybeCodeUsageError("--mode requires read-only or coding");
198
196
  if (strings.preset && strings.planPath) throw new MaybeCodeUsageError("--preset and --plan cannot be combined");
199
- if (action === "retry" && (!strings.task || !strings.finding)) throw new MaybeCodeUsageError("retry requires --task and --finding");
200
- if (action === "reconcile" && !strings.resolutionPath) throw new MaybeCodeUsageError("reconcile requires --resolution");
197
+ if (action === "retry" && (!strings.task || !strings.finding))
198
+ throw new MaybeCodeUsageError("retry requires --task and --finding");
199
+ if (action === "reconcile" && !strings.resolutionPath)
200
+ throw new MaybeCodeUsageError("reconcile requires --resolution");
201
201
  if (action === "diff" && !strings.tasks) throw new MaybeCodeUsageError("diff requires --tasks");
202
- if (action === "apply" && (!strings.patch || !strings.confirm)) throw new MaybeCodeUsageError("apply requires --patch and --confirm");
203
- if (strings.confirm && !/^[a-f0-9]{64}$/u.test(strings.confirm)) throw new MaybeCodeUsageError("--confirm requires the exact SHA256 review digest");
202
+ if (action === "apply" && (!strings.patch || !strings.confirm))
203
+ throw new MaybeCodeUsageError("apply requires --patch and --confirm");
204
+ if (strings.confirm && !/^[a-f0-9]{64}$/u.test(strings.confirm))
205
+ throw new MaybeCodeUsageError("--confirm requires the exact SHA256 review digest");
204
206
  return {
205
207
  type: "team",
206
208
  action,
@@ -231,8 +233,7 @@ function parseMcpCommand(args) {
231
233
  type: "mcp",
232
234
  action,
233
235
  serverId,
234
- ...configPath === void 0 ? {} : { configPath },
235
- ...workspace === void 0 ? {} : { workspace },
236
+ ...omitUndefined({ configPath, workspace }),
236
237
  ...scopes.length === 0 ? {} : { scopes }
237
238
  };
238
239
  }
@@ -268,15 +269,15 @@ async function runMaybeCode(args, dependencies = {}) {
268
269
  outputTerminal().write(`Error: ${error.message}
269
270
 
270
271
  ${MAYBE_CODE_USAGE}`);
271
- outputTerminal().close();
272
+ await outputTerminal().close();
272
273
  return 2;
273
274
  }
274
- terminal?.close();
275
+ await terminal?.close();
275
276
  throw error;
276
277
  }
277
278
  if (command.type === "help") {
278
279
  outputTerminal().write(MAYBE_CODE_USAGE);
279
- outputTerminal().close();
280
+ await outputTerminal().close();
280
281
  return 0;
281
282
  }
282
283
  try {
@@ -285,14 +286,14 @@ ${MAYBE_CODE_USAGE}`);
285
286
  const interrupt = /* @__PURE__ */ __name(() => cancellation.abort(new Error("Team cancelled by user")), "interrupt");
286
287
  process.once("SIGINT", interrupt);
287
288
  try {
288
- const team = dependencies.team ?? (await import("./cli/team-T7G7PPNN.js")).runMaybeCodeTeamCommand;
289
+ const team = dependencies.team ?? (await import("./cli/team-O2I5BXHM.js")).runMaybeCodeTeamCommand;
289
290
  return await team(command, {
290
291
  write: /* @__PURE__ */ __name((text) => outputTerminal().write(text), "write"),
291
292
  signal: cancellation.signal
292
293
  });
293
294
  } finally {
294
295
  process.removeListener("SIGINT", interrupt);
295
- outputTerminal().close();
296
+ await outputTerminal().close();
296
297
  }
297
298
  }
298
299
  if (command.type === "mcp") {
@@ -300,7 +301,7 @@ ${MAYBE_CODE_USAGE}`);
300
301
  const interrupt = /* @__PURE__ */ __name(() => cancellation.abort(new Error("MCP authentication cancelled")), "interrupt");
301
302
  process.once("SIGINT", interrupt);
302
303
  try {
303
- const mcpAuth = dependencies.mcpAuth ?? (await import("./cli/mcp-auth-UNRHSIKJ.js")).runMaybeCodeMcpCommand;
304
+ const mcpAuth = dependencies.mcpAuth ?? (await import("./cli/mcp-auth-XD5U7WCV.js")).runMaybeCodeMcpCommand;
304
305
  await mcpAuth(command, {
305
306
  write: /* @__PURE__ */ __name((text) => outputTerminal().write(text), "write"),
306
307
  signal: cancellation.signal
@@ -308,37 +309,47 @@ ${MAYBE_CODE_USAGE}`);
308
309
  } finally {
309
310
  process.removeListener("SIGINT", interrupt);
310
311
  }
311
- outputTerminal().close();
312
+ await outputTerminal().close();
312
313
  return 0;
313
314
  }
314
- const open = dependencies.open ?? (await import("./cli/configured-WHY3GGAJ.js")).openConfiguredMaybeCode;
315
- const runWebUI = command.ui === "web" ? dependencies.runWebUI ?? (await import("./cli/web-ui-COB6PKC5.js")).runMaybeCodeWebUI : void 0;
316
- const runRetainedUI = command.ui === "retained" ? dependencies.runRetainedUI ?? (await import("./cli/retained-tui-VJ3VX4R3.js")).runRetainedTerminalUI : void 0;
317
- const runClassicUI = command.ui === "classic" ? (await import("./cli/tui-SA74DKMA.js")).runTerminalUI : void 0;
318
- const app = await open({
319
- ...command.permissionMode === void 0 ? {} : { permissionMode: command.permissionMode },
320
- mcpInteractions: true,
321
- ...command.workspace === void 0 ? {} : { workspace: command.workspace },
322
- ...command.configPath === void 0 ? {} : { configPath: command.configPath },
323
- ...command.model === void 0 ? {} : { model: command.model },
324
- ...command.sessionId === void 0 ? {} : { sessionId: command.sessionId },
325
- autoResume: command.autoResume
326
- });
315
+ if (dependencies.open === void 0) {
316
+ const { missingMaybeCodeConfig } = await import("./cli/onboarding-check-HRRI5OJ7.js");
317
+ const path = await missingMaybeCodeConfig(command);
318
+ if (path !== void 0) {
319
+ const { runMaybeCodeOnboarding } = await import("./cli/onboarding-WQWCPYEO.js");
320
+ if (!await runMaybeCodeOnboarding(path, command)) {
321
+ await terminal?.close();
322
+ return 130;
323
+ }
324
+ }
325
+ }
326
+ const open = dependencies.open ?? (await import("./cli/configured-ACNM6TRQ.js")).openConfiguredMaybeCode;
327
+ const runWebUI = command.ui === "web" ? dependencies.runWebUI ?? (await import("./cli/web-ui-UWQUFE4W.js")).runMaybeCodeWebUI : void 0;
328
+ const runRetainedUI = command.ui === "retained" ? dependencies.runRetainedUI ?? (await import("./cli/retained-tui-QF5VMYLC.js")).runRetainedTerminalUI : void 0;
329
+ const app = await open(
330
+ omitUndefined2({
331
+ permissionMode: command.permissionMode,
332
+ mcpInteractions: true,
333
+ workspace: command.workspace,
334
+ configPath: command.configPath,
335
+ model: command.model,
336
+ sessionId: command.sessionId,
337
+ autoResume: command.autoResume
338
+ })
339
+ );
327
340
  if (command.ui === "web") {
328
- await runWebUI(app, { ...command.port === void 0 ? {} : { port: command.port }, write: /* @__PURE__ */ __name((text) => outputTerminal().write(text), "write") });
329
- terminal?.close();
330
- } else if (command.ui === "retained") {
331
- terminal?.close();
332
- await runRetainedUI(app);
341
+ await runWebUI(app, { ...omitUndefined2({ port: command.port }), write: /* @__PURE__ */ __name((text) => outputTerminal().write(text), "write") });
342
+ await terminal?.close();
333
343
  } else {
334
- await runClassicUI(app, { terminal: outputTerminal() });
344
+ await terminal?.close();
345
+ await runRetainedUI(app);
335
346
  }
336
347
  return 0;
337
348
  } catch (error) {
338
349
  outputTerminal().write(`
339
350
  Error: ${errorMessage(error)}
340
351
  `);
341
- outputTerminal().close();
352
+ await outputTerminal().close();
342
353
  return 1;
343
354
  }
344
355
  }
package/dist/bin.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/args.ts", "../src/run.ts", "../src/bin.ts"],
4
- "sourcesContent": ["import { MaybeCodeUsageError } from \"./errors.js\";\nimport type { MaybeCodePermissionMode } from \"./policy.js\";\n\nexport const MAYBE_CODE_USAGE = `MaybeCode\n\nUsage:\n maybecode [options] [workspace]\n maybecode mcp <login|logout|status> <server-id> [--config <path>]\n maybecode team run <prompt> [--workspace <path>] [--config <path>] [--model <name>]\n maybecode team <resume|status|cancel> <id> [--data-directory <path>]\n maybecode team verify <id> [--data-directory <path>]\n maybecode team retry <id> --task <task-id> --finding <text> [--confirm <digest>]\n maybecode team reconcile <id> --resolution <json-file> [--confirm <digest>]\n maybecode team diff <id> --tasks <task-a,task-b>\n maybecode team apply <id> --patch <patch-id> --confirm <digest>\n\nOptions:\n --config <path> Load another May config file\n --model <name> Use a named model profile\n --yolo Auto-approve tool requests, preserving explicit denials\n --no-yolo Use normal approvals, overriding configuration\n --ui <name> UI implementation: retained (default), classic or web\n --port <number> Local Web UI port (default: 3940; requires --ui web)\n -c, --continue Continue the most recent session for this workspace\n -r, --resume <id> Resume a specific session (--session is an alias)\n -h, --help Show this help\n\nMCP login prints a browser authorization URL and waits for a local callback.\nWeb mode requires MAYBECODE_CONTROL_TOKEN (32..256 printable ASCII characters).\nThe Web host listens only on 127.0.0.1; closing a page does not cancel its run.\nMCP commands also accept --workspace <path>; login accepts repeated --scope <scope>.\nTeam mode defaults to read-only; --mode coding permits edits in isolated copies only.\nTeam run accepts --max-model-calls <n>, --max-total-tokens <n>, and --max-concurrent <n>.\nUse --preset <supervisor|pipeline|parallel> or --plan <json-file> for team orchestration.\n--allow-checks explicitly authorizes exact configured test processes (not an OS sandbox).\nRetry/reconcile preview a digest first; confirmation records changes without starting agents.\nAll team control commands accept --data-directory <path>. Apply is host-only and explicit.\n`;\n\nexport interface MaybeCodeHelpCommand {\n readonly type: \"help\";\n}\n\nexport interface MaybeCodeStartCommand {\n readonly permissionMode?: MaybeCodePermissionMode;\n readonly type: \"start\";\n readonly workspace?: string;\n readonly configPath?: string;\n readonly model?: string;\n readonly sessionId?: string;\n readonly autoResume: boolean;\n readonly ui: MaybeCodeUI;\n readonly port?: number;\n}\n\nexport type MaybeCodeUI = \"classic\" | \"retained\" | \"web\";\n\nexport interface MaybeCodeMcpCommand {\n readonly type: \"mcp\";\n readonly action: \"login\" | \"logout\" | \"status\";\n readonly serverId: string;\n readonly configPath?: string;\n readonly workspace?: string;\n readonly scopes?: readonly string[];\n}\n\nexport interface MaybeCodeTeamCommand {\n readonly type: \"team\";\n readonly action: \"run\" | \"resume\" | \"status\" | \"cancel\" | \"verify\" | \"retry\" | \"reconcile\" | \"diff\" | \"apply\";\n readonly value: string;\n readonly workspace?: string;\n readonly configPath?: string;\n readonly model?: string;\n readonly dataDirectory?: string;\n readonly maxModelCalls?: number;\n readonly maxTotalTokens?: number;\n readonly maxConcurrent?: number;\n readonly preset?: \"supervisor\" | \"pipeline\" | \"parallel\";\n readonly planPath?: string;\n readonly mode?: \"read-only\" | \"coding\";\n readonly allowChecks?: boolean;\n readonly task?: string;\n readonly tasks?: string;\n readonly finding?: string;\n readonly resolutionPath?: string;\n readonly patch?: string;\n readonly confirm?: string;\n}\n\nexport type MaybeCodeCommand = MaybeCodeHelpCommand | MaybeCodeStartCommand | MaybeCodeMcpCommand | MaybeCodeTeamCommand;\n\nexport function parseMaybeCodeArgs(args: readonly string[]): MaybeCodeCommand {\n if (args[0] === \"mcp\") return parseMcpCommand(args.slice(1));\n if (args[0] === \"team\") return parseTeamCommand(args.slice(1));\n let workspace: string | undefined;\n let configPath: string | undefined;\n let model: string | undefined;\n let sessionId: string | undefined;\n let ui: MaybeCodeUI | undefined;\n let port: number | undefined;\n let continueLatest = false;\n let permissionMode: MaybeCodePermissionMode | undefined;\n\n for (let index = 0; index < args.length; index++) {\n const argument = args[index]!;\n if (argument === \"--help\" || argument === \"-h\") return { type: \"help\" };\n if (argument === \"--yolo\" || argument === \"--no-yolo\") {\n if (permissionMode !== undefined) throw new MaybeCodeUsageError(\"Specify only one of --yolo or --no-yolo, once\");\n permissionMode = argument === \"--yolo\" ? \"yolo\" : \"default\";\n continue;\n }\n if (argument === \"--continue\" || argument === \"-c\") {\n if (continueLatest) {\n throw new MaybeCodeUsageError(\"--continue may only be specified once\");\n }\n continueLatest = true;\n continue;\n }\n if (argument === \"--config\") {\n configPath = setOption(\n \"--config\",\n configPath,\n readValue(args, ++index, \"--config\"),\n );\n continue;\n }\n if (argument === \"--model\") {\n model = setOption(\n \"--model\",\n model,\n readValue(args, ++index, \"--model\"),\n );\n continue;\n }\n if (argument === \"--ui\") {\n const value = readValue(args, ++index, \"--ui\");\n if (value !== \"classic\" && value !== \"retained\" && value !== \"web\") {\n throw new MaybeCodeUsageError(\n '--ui must be \"classic\", \"retained\" or \"web\"',\n );\n }\n if (ui !== undefined) {\n throw new MaybeCodeUsageError(\"--ui may only be specified once\");\n }\n ui = value;\n continue;\n }\n if (argument === \"--port\") {\n const value = readValue(args, ++index, \"--port\");\n if (port !== undefined || !/^\\d+$/.test(value) || Number(value) > 65535) throw new MaybeCodeUsageError(\"--port requires one integer from 0 to 65535\");\n port = Number(value); continue;\n }\n if (\n argument === \"--resume\" ||\n argument === \"-r\" ||\n argument === \"--session\"\n ) {\n sessionId = setOption(\n \"--resume\",\n sessionId,\n readValue(args, ++index, \"--resume\"),\n );\n continue;\n }\n if (argument.startsWith(\"-\")) {\n throw new MaybeCodeUsageError(`Unknown option \"${argument}\"`);\n }\n if (workspace !== undefined) {\n throw new MaybeCodeUsageError(\"Only one workspace may be specified\");\n }\n workspace = argument;\n }\n\n if (continueLatest && sessionId !== undefined) {\n throw new MaybeCodeUsageError(\n \"--continue and --resume cannot be used together\",\n );\n }\n if (port !== undefined && ui !== \"web\") throw new MaybeCodeUsageError(\"--port requires --ui web\");\n\n return {\n type: \"start\",\n ...(permissionMode === undefined ? {} : { permissionMode }),\n autoResume: continueLatest,\n ui: ui ?? \"retained\",\n ...(port === undefined ? {} : { port }),\n ...(workspace === undefined ? {} : { workspace }),\n ...(configPath === undefined ? {} : { configPath }),\n ...(model === undefined ? {} : { model }),\n ...(sessionId === undefined ? {} : { sessionId }),\n };\n}\n\nfunction parseTeamCommand(args: readonly string[]): MaybeCodeTeamCommand | MaybeCodeHelpCommand {\n if (args.includes(\"--help\") || args.includes(\"-h\")) return { type: \"help\" };\n const [action, value] = args;\n if (![\"run\", \"resume\", \"status\", \"cancel\", \"verify\", \"retry\", \"reconcile\", \"diff\", \"apply\"].includes(action ?? \"\") || !value?.trim() || value.startsWith(\"--\")) {\n throw new MaybeCodeUsageError(\"Use team run <prompt> or a team control command with <id>; see --help\");\n }\n if (action !== \"run\" && !/^[A-Za-z0-9_-]{1,128}$/u.test(value)) throw new MaybeCodeUsageError(\"Invalid team id\");\n const strings: Record<string, string> = {};\n const numbers: Record<string, number> = {};\n let allowChecks: boolean | undefined;\n for (let index = 2; index < args.length; index++) {\n const option = args[index]!;\n if (option === \"--allow-checks\" && action === \"run\") {\n if (allowChecks) throw new MaybeCodeUsageError(\"--allow-checks may only be specified once\");\n allowChecks = true; continue;\n }\n const options: Record<string, readonly [string, readonly string[]]> = {\n \"--workspace\": [\"workspace\", [\"run\"]], \"--config\": [\"configPath\", [\"run\"]], \"--model\": [\"model\", [\"run\"]],\n \"--data-directory\": [\"dataDirectory\", [action!]], \"--preset\": [\"preset\", [\"run\"]], \"--plan\": [\"planPath\", [\"run\"]],\n \"--mode\": [\"mode\", [\"run\"]], \"--task\": [\"task\", [\"retry\"]], \"--tasks\": [\"tasks\", [\"diff\"]],\n \"--finding\": [\"finding\", [\"retry\"]], \"--resolution\": [\"resolutionPath\", [\"reconcile\"]],\n \"--patch\": [\"patch\", [\"apply\"]], \"--confirm\": [\"confirm\", [\"retry\", \"reconcile\", \"apply\"]],\n };\n const [key, actions] = options[option] ?? [];\n if (key && actions?.includes(action!)) {\n strings[key] = setOption(option, strings[key], readValue(args, ++index, option));\n continue;\n }\n const numericKey = ({ \"--max-model-calls\": \"maxModelCalls\", \"--max-total-tokens\": \"maxTotalTokens\", \"--max-concurrent\": \"maxConcurrent\" } as Record<string, string>)[option];\n if (numericKey && action === \"run\") {\n if (numbers[numericKey] !== undefined) throw new MaybeCodeUsageError(`${option} may only be specified once`);\n const raw = readValue(args, ++index, option);\n const number = Number(raw);\n if (!/^\\d+$/u.test(raw) || !Number.isSafeInteger(number) || number < 1 || (numericKey === \"maxConcurrent\" && number > 8)) {\n throw new MaybeCodeUsageError(`${option} requires a positive integer${numericKey === \"maxConcurrent\" ? \" no greater than 8\" : \"\"}`);\n }\n numbers[numericKey] = number;\n continue;\n }\n throw new MaybeCodeUsageError(`Unsupported team option \"${option}\"`);\n }\n if (strings.preset && ![\"supervisor\", \"pipeline\", \"parallel\"].includes(strings.preset)) throw new MaybeCodeUsageError(\"Unknown team preset\");\n if (strings.mode && ![\"read-only\", \"coding\"].includes(strings.mode)) throw new MaybeCodeUsageError(\"--mode requires read-only or coding\");\n if (strings.preset && strings.planPath) throw new MaybeCodeUsageError(\"--preset and --plan cannot be combined\");\n if (action === \"retry\" && (!strings.task || !strings.finding)) throw new MaybeCodeUsageError(\"retry requires --task and --finding\");\n if (action === \"reconcile\" && !strings.resolutionPath) throw new MaybeCodeUsageError(\"reconcile requires --resolution\");\n if (action === \"diff\" && !strings.tasks) throw new MaybeCodeUsageError(\"diff requires --tasks\");\n if (action === \"apply\" && (!strings.patch || !strings.confirm)) throw new MaybeCodeUsageError(\"apply requires --patch and --confirm\");\n if (strings.confirm && !/^[a-f0-9]{64}$/u.test(strings.confirm)) throw new MaybeCodeUsageError(\"--confirm requires the exact SHA256 review digest\");\n return { type: \"team\", action: action as MaybeCodeTeamCommand[\"action\"], value, ...strings, ...numbers,\n ...(allowChecks ? { allowChecks } : {}) } as MaybeCodeTeamCommand;\n}\n\nfunction parseMcpCommand(args: readonly string[]): MaybeCodeMcpCommand | MaybeCodeHelpCommand {\n if (args.includes(\"--help\") || args.includes(\"-h\")) return { type: \"help\" };\n const [action, serverId] = args;\n if (![\"login\", \"logout\", \"status\"].includes(action ?? \"\") || !serverId || !/^[A-Za-z0-9_-]+$/u.test(serverId)) {\n throw new MaybeCodeUsageError(\"Use mcp <login|logout|status> <server-id>\");\n }\n let configPath: string | undefined;\n let workspace: string | undefined;\n const scopes: string[] = [];\n for (let i = 2; i < args.length; i++) {\n const name = args[i]!;\n if (name === \"--config\") configPath = setOption(name, configPath, readValue(args, ++i, name));\n else if (name === \"--workspace\") workspace = setOption(name, workspace, readValue(args, ++i, name));\n else if (name === \"--scope\" && action === \"login\") scopes.push(readValue(args, ++i, name));\n else throw new MaybeCodeUsageError(`Unsupported MCP option \"${name}\"`);\n }\n return {\n type: \"mcp\", action: action as MaybeCodeMcpCommand[\"action\"], serverId,\n ...(configPath === undefined ? {} : { configPath }),\n ...(workspace === undefined ? {} : { workspace }),\n ...(scopes.length === 0 ? {} : { scopes }),\n };\n}\n\nfunction readValue(\n args: readonly string[],\n index: number,\n option: string,\n): string {\n const value = args[index];\n if (\n value === undefined || value.trim() === \"\" || value.startsWith(\"-\")\n ) {\n throw new MaybeCodeUsageError(`${option} requires a value`);\n }\n return value;\n}\n\nfunction setOption(\n option: string,\n current: string | undefined,\n value: string,\n): string {\n if (current !== undefined) {\n throw new MaybeCodeUsageError(`${option} may only be specified once`);\n }\n return value;\n}\n", "import {\n MAYBE_CODE_USAGE,\n parseMaybeCodeArgs,\n} from \"./args.js\";\nimport type { OpenConfiguredMaybeCodeOptions } from \"./configured.js\";\nimport { MaybeCodeUsageError } from \"./errors.js\";\nimport { createNodeTerminal, type TerminalIO } from \"@sortedyuan/tui/node-terminal\";\nimport type { MaybeCodeController } from \"./controller.js\";\nimport type { runMaybeCodeMcpCommand } from \"./mcp-auth.js\";\nimport type { runMaybeCodeTeamCommand } from \"./team.js\";\nimport type { runMaybeCodeWebUI } from \"./web-ui.js\";\n\nexport interface RunMaybeCodeDependencies {\n readonly terminal?: TerminalIO;\n readonly open?: (\n options: OpenConfiguredMaybeCodeOptions,\n ) => Promise<MaybeCodeController>;\n readonly runRetainedUI?: (app: MaybeCodeController) => Promise<void>;\n readonly mcpAuth?: typeof runMaybeCodeMcpCommand;\n readonly team?: typeof runMaybeCodeTeamCommand;\n readonly runWebUI?: typeof runMaybeCodeWebUI;\n}\n\nexport async function runMaybeCode(\n args: readonly string[],\n dependencies: RunMaybeCodeDependencies = {},\n): Promise<number> {\n let terminal = dependencies.terminal;\n const outputTerminal = (): TerminalIO => {\n terminal ??= createNodeTerminal();\n return terminal;\n };\n let command;\n\n try {\n command = parseMaybeCodeArgs(args);\n } catch (error) {\n if (error instanceof MaybeCodeUsageError) {\n outputTerminal().write(`Error: ${error.message}\\n\\n${MAYBE_CODE_USAGE}`);\n outputTerminal().close();\n return 2;\n }\n terminal?.close();\n throw error;\n }\n\n if (command.type === \"help\") {\n outputTerminal().write(MAYBE_CODE_USAGE);\n outputTerminal().close();\n return 0;\n }\n\n try {\n if (command.type === \"team\") {\n const cancellation = new AbortController();\n const interrupt = () => cancellation.abort(new Error(\"Team cancelled by user\"));\n process.once(\"SIGINT\", interrupt);\n try {\n const team = dependencies.team ?? (await import(\"./team.js\")).runMaybeCodeTeamCommand;\n return await team(command, {\n write: (text) => outputTerminal().write(text), signal: cancellation.signal,\n });\n } finally {\n process.removeListener(\"SIGINT\", interrupt);\n outputTerminal().close();\n }\n }\n if (command.type === \"mcp\") {\n const cancellation = new AbortController();\n const interrupt = () => cancellation.abort(new Error(\"MCP authentication cancelled\"));\n process.once(\"SIGINT\", interrupt);\n try {\n const mcpAuth = dependencies.mcpAuth ?? (await import(\"./mcp-auth.js\")).runMaybeCodeMcpCommand;\n await mcpAuth(command, {\n write: (text) => outputTerminal().write(text), signal: cancellation.signal,\n });\n } finally {\n process.removeListener(\"SIGINT\", interrupt);\n }\n outputTerminal().close();\n return 0;\n }\n const open = dependencies.open ?? (await import(\"./configured.js\")).openConfiguredMaybeCode;\n const runWebUI = command.ui === \"web\"\n ? dependencies.runWebUI ?? (await import(\"./web-ui.js\")).runMaybeCodeWebUI : undefined;\n const runRetainedUI = command.ui === \"retained\"\n ? dependencies.runRetainedUI ?? (await import(\"./ui/retained-tui.js\")).runRetainedTerminalUI : undefined;\n const runClassicUI = command.ui === \"classic\" ? (await import(\"./tui.js\")).runTerminalUI : undefined;\n const app = await open({\n ...(command.permissionMode === undefined ? {} : { permissionMode: command.permissionMode }),\n mcpInteractions: true,\n ...(command.workspace === undefined\n ? {}\n : { workspace: command.workspace }),\n ...(command.configPath === undefined\n ? {}\n : { configPath: command.configPath }),\n ...(command.model === undefined ? {} : { model: command.model }),\n ...(command.sessionId === undefined\n ? {}\n : { sessionId: command.sessionId }),\n autoResume: command.autoResume,\n });\n if (command.ui === \"web\") {\n await runWebUI!(app, { ...(command.port === undefined ? {} : { port: command.port }), write: text => outputTerminal().write(text) });\n terminal?.close();\n } else if (command.ui === \"retained\") {\n terminal?.close();\n await runRetainedUI!(app);\n } else {\n await runClassicUI!(app, { terminal: outputTerminal() });\n }\n return 0;\n } catch (error) {\n outputTerminal().write(`\\nError: ${errorMessage(error)}\\n`);\n outputTerminal().close();\n return 1;\n }\n}\n\nfunction errorMessage(error: unknown): string {\n if (error instanceof Error) return error.message;\n return typeof error === \"string\" ? error : \"Unknown error\";\n}\n", "#!/usr/bin/env node\n\nimport { runMaybeCode } from \"./run.js\";\n\nprocess.exitCode = await runMaybeCode(process.argv.slice(2));\n"],
5
- "mappings": "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",
6
- "names": []
3
+ "sources": ["../src/run.ts", "../src/args.ts", "../src/bin.ts"],
4
+ "sourcesContent": ["import { omitUndefined } from \"@sortedyuan/may/core\";\nimport { MAYBE_CODE_USAGE, parseMaybeCodeArgs } from \"./args.js\";\nimport type { OpenConfiguredMaybeCodeOptions } from \"./configured.js\";\nimport { MaybeCodeUsageError } from \"./errors.js\";\nimport { createNodeTerminal, type TerminalIO } from \"@sortedyuan/tui/node-terminal\";\nimport type { MaybeCodeController } from \"./controller.js\";\nimport type { runMaybeCodeMcpCommand } from \"./mcp-auth.js\";\nimport type { runMaybeCodeTeamCommand } from \"./team.js\";\nimport type { runMaybeCodeWebUI } from \"./web-ui.js\";\n\n/** @experimental */\nexport interface RunMaybeCodeDependencies {\n readonly terminal?: TerminalIO;\n readonly open?: (options: OpenConfiguredMaybeCodeOptions) => Promise<MaybeCodeController>;\n readonly runRetainedUI?: (app: MaybeCodeController) => Promise<void>;\n readonly mcpAuth?: typeof runMaybeCodeMcpCommand;\n readonly team?: typeof runMaybeCodeTeamCommand;\n readonly runWebUI?: typeof runMaybeCodeWebUI;\n}\n\n/** @experimental */\nexport async function runMaybeCode(\n args: readonly string[],\n dependencies: RunMaybeCodeDependencies = {},\n): Promise<number> {\n let terminal = dependencies.terminal;\n const outputTerminal = (): TerminalIO => {\n terminal ??= createNodeTerminal();\n return terminal;\n };\n let command;\n\n try {\n command = parseMaybeCodeArgs(args);\n } catch (error) {\n if (error instanceof MaybeCodeUsageError) {\n outputTerminal().write(`Error: ${error.message}\\n\\n${MAYBE_CODE_USAGE}`);\n await outputTerminal().close();\n return 2;\n }\n await terminal?.close();\n throw error;\n }\n\n if (command.type === \"help\") {\n outputTerminal().write(MAYBE_CODE_USAGE);\n await outputTerminal().close();\n return 0;\n }\n\n try {\n if (command.type === \"team\") {\n const cancellation = new AbortController();\n const interrupt = () => cancellation.abort(new Error(\"Team cancelled by user\"));\n process.once(\"SIGINT\", interrupt);\n try {\n const team = dependencies.team ?? (await import(\"./team.js\")).runMaybeCodeTeamCommand;\n return await team(command, {\n write: (text) => outputTerminal().write(text),\n signal: cancellation.signal,\n });\n } finally {\n process.removeListener(\"SIGINT\", interrupt);\n await outputTerminal().close();\n }\n }\n if (command.type === \"mcp\") {\n const cancellation = new AbortController();\n const interrupt = () => cancellation.abort(new Error(\"MCP authentication cancelled\"));\n process.once(\"SIGINT\", interrupt);\n try {\n const mcpAuth = dependencies.mcpAuth ?? (await import(\"./mcp-auth.js\")).runMaybeCodeMcpCommand;\n await mcpAuth(command, {\n write: (text) => outputTerminal().write(text),\n signal: cancellation.signal,\n });\n } finally {\n process.removeListener(\"SIGINT\", interrupt);\n }\n await outputTerminal().close();\n return 0;\n }\n if (dependencies.open === undefined) {\n const { missingMaybeCodeConfig } = await import(\"./onboarding-check.js\");\n const path = await missingMaybeCodeConfig(command);\n if (path !== undefined) {\n const { runMaybeCodeOnboarding } = await import(\"./onboarding.js\");\n if (!(await runMaybeCodeOnboarding(path, command))) {\n await terminal?.close();\n return 130;\n }\n }\n }\n const open = dependencies.open ?? (await import(\"./configured.js\")).openConfiguredMaybeCode;\n const runWebUI =\n command.ui === \"web\" ? (dependencies.runWebUI ?? (await import(\"./web-ui.js\")).runMaybeCodeWebUI) : undefined;\n const runRetainedUI =\n command.ui === \"retained\"\n ? (dependencies.runRetainedUI ?? (await import(\"./ui/retained-tui.js\")).runRetainedTerminalUI)\n : undefined;\n const app = await open(\n omitUndefined({\n permissionMode: command.permissionMode,\n mcpInteractions: true,\n workspace: command.workspace,\n configPath: command.configPath,\n model: command.model,\n sessionId: command.sessionId,\n autoResume: command.autoResume,\n }),\n );\n if (command.ui === \"web\") {\n await runWebUI!(app, { ...omitUndefined({ port: command.port }), write: (text) => outputTerminal().write(text) });\n await terminal?.close();\n } else {\n await terminal?.close();\n await runRetainedUI!(app);\n }\n return 0;\n } catch (error) {\n outputTerminal().write(`\\nError: ${errorMessage(error)}\\n`);\n await outputTerminal().close();\n return 1;\n }\n}\n\nfunction errorMessage(error: unknown): string {\n if (error instanceof Error) return error.message;\n return typeof error === \"string\" ? error : \"Unknown error\";\n}\n", "import { omitUndefined } from \"@sortedyuan/may/core\";\nimport { MaybeCodeUsageError } from \"./errors.js\";\nimport type { MaybeCodePermissionMode } from \"./policy.js\";\n\nexport const MAYBE_CODE_USAGE = `MaybeCode\n\nUsage:\n maybecode [options] [workspace]\n maybecode mcp <login|logout|status> <server-id> [--config <path>]\n maybecode team run <prompt> [--workspace <path>] [--config <path>] [--model <name>]\n maybecode team <resume|status|cancel> <id> [--data-directory <path>]\n maybecode team verify <id> [--data-directory <path>]\n maybecode team retry <id> --task <task-id> --finding <text> [--confirm <digest>]\n maybecode team reconcile <id> --resolution <json-file> [--confirm <digest>]\n maybecode team diff <id> --tasks <task-a,task-b>\n maybecode team apply <id> --patch <patch-id> --confirm <digest>\n\nOptions:\n --config <path> Load another May config file\n --model <name> Use a named model profile\n --yolo Auto-approve tool requests, preserving explicit denials\n --no-yolo Use normal approvals, overriding configuration\n --ui <name> UI implementation: retained (default) or web\n --port <number> Local Web UI port (default: 3940; requires --ui web)\n -c, --continue Continue the most recent session for this workspace\n -r, --resume <id> Resume a specific session (--session is an alias)\n -h, --help Show this help\n\nMCP login prints a browser authorization URL and waits for a local callback.\nWeb mode requires MAYBECODE_CONTROL_TOKEN (32..256 printable ASCII characters).\nThe Web host listens only on 127.0.0.1; closing a page does not cancel its run.\nMCP commands also accept --workspace <path>; login accepts repeated --scope <scope>.\nTeam mode defaults to read-only; --mode coding permits edits in isolated copies only.\nTeam run accepts --max-model-calls <n>, --max-total-tokens <n>, and --max-concurrent <n>.\nUse --preset <supervisor|pipeline|parallel> or --plan <json-file> for team orchestration.\n--allow-checks explicitly authorizes exact configured test processes (not an OS sandbox).\nRetry/reconcile preview a digest first; confirmation records changes without starting agents.\nAll team control commands accept --data-directory <path>. Apply is host-only and explicit.\n`;\n\nexport interface MaybeCodeHelpCommand {\n readonly type: \"help\";\n}\n\nexport interface MaybeCodeStartCommand {\n readonly permissionMode?: MaybeCodePermissionMode;\n readonly type: \"start\";\n readonly workspace?: string;\n readonly configPath?: string;\n readonly model?: string;\n readonly sessionId?: string;\n readonly autoResume: boolean;\n readonly ui: MaybeCodeUI;\n readonly port?: number;\n}\n\nexport type MaybeCodeUI = \"retained\" | \"web\";\n\nexport interface MaybeCodeMcpCommand {\n readonly type: \"mcp\";\n readonly action: \"login\" | \"logout\" | \"status\";\n readonly serverId: string;\n readonly configPath?: string;\n readonly workspace?: string;\n readonly scopes?: readonly string[];\n}\n\nexport interface MaybeCodeTeamCommand {\n readonly type: \"team\";\n readonly action: \"run\" | \"resume\" | \"status\" | \"cancel\" | \"verify\" | \"retry\" | \"reconcile\" | \"diff\" | \"apply\";\n readonly value: string;\n readonly workspace?: string;\n readonly configPath?: string;\n readonly model?: string;\n readonly dataDirectory?: string;\n readonly maxModelCalls?: number;\n readonly maxTotalTokens?: number;\n readonly maxConcurrent?: number;\n readonly preset?: \"supervisor\" | \"pipeline\" | \"parallel\";\n readonly planPath?: string;\n readonly mode?: \"read-only\" | \"coding\";\n readonly allowChecks?: boolean;\n readonly task?: string;\n readonly tasks?: string;\n readonly finding?: string;\n readonly resolutionPath?: string;\n readonly patch?: string;\n readonly confirm?: string;\n}\n\nexport type MaybeCodeCommand =\n MaybeCodeHelpCommand | MaybeCodeStartCommand | MaybeCodeMcpCommand | MaybeCodeTeamCommand;\n\nexport function parseMaybeCodeArgs(args: readonly string[]): MaybeCodeCommand {\n if (args[0] === \"mcp\") return parseMcpCommand(args.slice(1));\n if (args[0] === \"team\") return parseTeamCommand(args.slice(1));\n let workspace: string | undefined;\n let configPath: string | undefined;\n let model: string | undefined;\n let sessionId: string | undefined;\n let ui: MaybeCodeUI | undefined;\n let port: number | undefined;\n let continueLatest = false;\n let permissionMode: MaybeCodePermissionMode | undefined;\n\n for (let index = 0; index < args.length; index++) {\n const argument = args[index]!;\n if (argument === \"--help\" || argument === \"-h\") return { type: \"help\" };\n if (argument === \"--yolo\" || argument === \"--no-yolo\") {\n if (permissionMode !== undefined) throw new MaybeCodeUsageError(\"Specify only one of --yolo or --no-yolo, once\");\n permissionMode = argument === \"--yolo\" ? \"yolo\" : \"default\";\n continue;\n }\n if (argument === \"--continue\" || argument === \"-c\") {\n if (continueLatest) {\n throw new MaybeCodeUsageError(\"--continue may only be specified once\");\n }\n continueLatest = true;\n continue;\n }\n if (argument === \"--config\") {\n configPath = setOption(\"--config\", configPath, readValue(args, ++index, \"--config\"));\n continue;\n }\n if (argument === \"--model\") {\n model = setOption(\"--model\", model, readValue(args, ++index, \"--model\"));\n continue;\n }\n if (argument === \"--ui\") {\n const value = readValue(args, ++index, \"--ui\");\n if (value !== \"retained\" && value !== \"web\") {\n throw new MaybeCodeUsageError('--ui must be \"retained\" or \"web\"');\n }\n if (ui !== undefined) {\n throw new MaybeCodeUsageError(\"--ui may only be specified once\");\n }\n ui = value;\n continue;\n }\n if (argument === \"--port\") {\n const value = readValue(args, ++index, \"--port\");\n if (port !== undefined || !/^\\d+$/.test(value) || Number(value) > 65535)\n throw new MaybeCodeUsageError(\"--port requires one integer from 0 to 65535\");\n port = Number(value);\n continue;\n }\n if (argument === \"--resume\" || argument === \"-r\" || argument === \"--session\") {\n sessionId = setOption(\"--resume\", sessionId, readValue(args, ++index, \"--resume\"));\n continue;\n }\n if (argument.startsWith(\"-\")) {\n throw new MaybeCodeUsageError(`Unknown option \"${argument}\"`);\n }\n if (workspace !== undefined) {\n throw new MaybeCodeUsageError(\"Only one workspace may be specified\");\n }\n workspace = argument;\n }\n\n if (continueLatest && sessionId !== undefined) {\n throw new MaybeCodeUsageError(\"--continue and --resume cannot be used together\");\n }\n if (port !== undefined && ui !== \"web\") throw new MaybeCodeUsageError(\"--port requires --ui web\");\n\n return omitUndefined({\n type: \"start\",\n permissionMode,\n autoResume: continueLatest,\n ui: ui ?? \"retained\",\n port,\n workspace,\n configPath,\n model,\n sessionId,\n });\n}\n\nfunction parseTeamCommand(args: readonly string[]): MaybeCodeTeamCommand | MaybeCodeHelpCommand {\n if (args.includes(\"--help\") || args.includes(\"-h\")) return { type: \"help\" };\n const [action, value] = args;\n if (\n ![\"run\", \"resume\", \"status\", \"cancel\", \"verify\", \"retry\", \"reconcile\", \"diff\", \"apply\"].includes(action ?? \"\") ||\n !value?.trim() ||\n value.startsWith(\"--\")\n ) {\n throw new MaybeCodeUsageError(\"Use team run <prompt> or a team control command with <id>; see --help\");\n }\n if (action !== \"run\" && !/^[A-Za-z0-9_-]{1,128}$/u.test(value)) throw new MaybeCodeUsageError(\"Invalid team id\");\n const strings: Record<string, string> = {};\n const numbers: Record<string, number> = {};\n let allowChecks: boolean | undefined;\n for (let index = 2; index < args.length; index++) {\n const option = args[index]!;\n if (option === \"--allow-checks\" && action === \"run\") {\n if (allowChecks) throw new MaybeCodeUsageError(\"--allow-checks may only be specified once\");\n allowChecks = true;\n continue;\n }\n const options: Record<string, readonly [string, readonly string[]]> = {\n \"--workspace\": [\"workspace\", [\"run\"]],\n \"--config\": [\"configPath\", [\"run\"]],\n \"--model\": [\"model\", [\"run\"]],\n \"--data-directory\": [\"dataDirectory\", [action!]],\n \"--preset\": [\"preset\", [\"run\"]],\n \"--plan\": [\"planPath\", [\"run\"]],\n \"--mode\": [\"mode\", [\"run\"]],\n \"--task\": [\"task\", [\"retry\"]],\n \"--tasks\": [\"tasks\", [\"diff\"]],\n \"--finding\": [\"finding\", [\"retry\"]],\n \"--resolution\": [\"resolutionPath\", [\"reconcile\"]],\n \"--patch\": [\"patch\", [\"apply\"]],\n \"--confirm\": [\"confirm\", [\"retry\", \"reconcile\", \"apply\"]],\n };\n const [key, actions] = options[option] ?? [];\n if (key && actions?.includes(action!)) {\n strings[key] = setOption(option, strings[key], readValue(args, ++index, option));\n continue;\n }\n const numericKey = (\n {\n \"--max-model-calls\": \"maxModelCalls\",\n \"--max-total-tokens\": \"maxTotalTokens\",\n \"--max-concurrent\": \"maxConcurrent\",\n } as Record<string, string>\n )[option];\n if (numericKey && action === \"run\") {\n if (numbers[numericKey] !== undefined) throw new MaybeCodeUsageError(`${option} may only be specified once`);\n const raw = readValue(args, ++index, option);\n const number = Number(raw);\n if (\n !/^\\d+$/u.test(raw) ||\n !Number.isSafeInteger(number) ||\n number < 1 ||\n (numericKey === \"maxConcurrent\" && number > 8)\n ) {\n throw new MaybeCodeUsageError(\n `${option} requires a positive integer${numericKey === \"maxConcurrent\" ? \" no greater than 8\" : \"\"}`,\n );\n }\n numbers[numericKey] = number;\n continue;\n }\n throw new MaybeCodeUsageError(`Unsupported team option \"${option}\"`);\n }\n if (strings.preset && ![\"supervisor\", \"pipeline\", \"parallel\"].includes(strings.preset))\n throw new MaybeCodeUsageError(\"Unknown team preset\");\n if (strings.mode && ![\"read-only\", \"coding\"].includes(strings.mode))\n throw new MaybeCodeUsageError(\"--mode requires read-only or coding\");\n if (strings.preset && strings.planPath) throw new MaybeCodeUsageError(\"--preset and --plan cannot be combined\");\n if (action === \"retry\" && (!strings.task || !strings.finding))\n throw new MaybeCodeUsageError(\"retry requires --task and --finding\");\n if (action === \"reconcile\" && !strings.resolutionPath)\n throw new MaybeCodeUsageError(\"reconcile requires --resolution\");\n if (action === \"diff\" && !strings.tasks) throw new MaybeCodeUsageError(\"diff requires --tasks\");\n if (action === \"apply\" && (!strings.patch || !strings.confirm))\n throw new MaybeCodeUsageError(\"apply requires --patch and --confirm\");\n if (strings.confirm && !/^[a-f0-9]{64}$/u.test(strings.confirm))\n throw new MaybeCodeUsageError(\"--confirm requires the exact SHA256 review digest\");\n return {\n type: \"team\",\n action: action as MaybeCodeTeamCommand[\"action\"],\n value,\n ...strings,\n ...numbers,\n ...(allowChecks ? { allowChecks } : {}),\n } as MaybeCodeTeamCommand;\n}\n\nfunction parseMcpCommand(args: readonly string[]): MaybeCodeMcpCommand | MaybeCodeHelpCommand {\n if (args.includes(\"--help\") || args.includes(\"-h\")) return { type: \"help\" };\n const [action, serverId] = args;\n if (![\"login\", \"logout\", \"status\"].includes(action ?? \"\") || !serverId || !/^[A-Za-z0-9_-]+$/u.test(serverId)) {\n throw new MaybeCodeUsageError(\"Use mcp <login|logout|status> <server-id>\");\n }\n let configPath: string | undefined;\n let workspace: string | undefined;\n const scopes: string[] = [];\n for (let i = 2; i < args.length; i++) {\n const name = args[i]!;\n if (name === \"--config\") configPath = setOption(name, configPath, readValue(args, ++i, name));\n else if (name === \"--workspace\") workspace = setOption(name, workspace, readValue(args, ++i, name));\n else if (name === \"--scope\" && action === \"login\") scopes.push(readValue(args, ++i, name));\n else throw new MaybeCodeUsageError(`Unsupported MCP option \"${name}\"`);\n }\n return {\n type: \"mcp\",\n action: action as MaybeCodeMcpCommand[\"action\"],\n serverId,\n ...omitUndefined({ configPath, workspace }),\n ...(scopes.length === 0 ? {} : { scopes }),\n };\n}\n\nfunction readValue(args: readonly string[], index: number, option: string): string {\n const value = args[index];\n if (value === undefined || value.trim() === \"\" || value.startsWith(\"-\")) {\n throw new MaybeCodeUsageError(`${option} requires a value`);\n }\n return value;\n}\n\nfunction setOption(option: string, current: string | undefined, value: string): string {\n if (current !== undefined) {\n throw new MaybeCodeUsageError(`${option} may only be specified once`);\n }\n return value;\n}\n", "#!/usr/bin/env node\n\nimport { runMaybeCode } from \"./run.js\";\n\nprocess.exitCode = await runMaybeCode(process.argv.slice(2));\n"],
5
+ "mappings": "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",
6
+ "names": ["omitUndefined", "omitUndefined"]
7
7
  }