@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
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/onboarding.ts"],
4
+ "sourcesContent": ["import { SelectList } from \"@sortedyuan/tui\";\nimport { createNodeTerminal } from \"@sortedyuan/tui/node-terminal\";\nimport { setImmediate } from \"node:timers/promises\";\nimport { createMayConfig, parseMayConfig, type MayConfig } from \"@sortedyuan/may/config\";\nimport { createBuiltinProviderModel, selectProviderModel } from \"@sortedyuan/providers\";\nimport type { MaybeCodeStartCommand } from \"./args.js\";\n\nconst providers = [\n {\n name: \"OpenAI (Responses)\",\n adapter: \"openai-responses\",\n url: \"https://api.openai.com/v1\",\n env: \"OPENAI_API_KEY\",\n suffix: \"/responses\",\n options: [\n \"maxOutputTokens\",\n \"reasoningEffort\",\n \"reasoningSummary\",\n \"serverCompactThreshold\",\n \"store\",\n \"responseFormat\",\n ],\n },\n {\n name: \"OpenAI (Chat Completions)\",\n adapter: \"openai-chat-completions\",\n url: \"https://api.openai.com/v1\",\n env: \"OPENAI_API_KEY\",\n suffix: \"/chat/completions\",\n options: [\"maxOutputTokens\", \"reasoningEffort\", \"store\", \"responseFormat\"],\n },\n {\n name: \"Anthropic\",\n adapter: \"anthropic-messages\",\n url: \"https://api.anthropic.com\",\n env: \"ANTHROPIC_API_KEY\",\n suffix: \"/v1/messages\",\n options: [\"thinking\", \"reasoningEffort\", \"maxTokens\", \"apiVersion\"],\n },\n {\n name: \"Google Gemini\",\n adapter: \"google-gemini\",\n url: \"https://generativelanguage.googleapis.com/v1beta\",\n env: \"GEMINI_API_KEY\",\n suffix: \"/models/{model}:streamGenerateContent\",\n options: [\"maxOutputTokens\", \"reasoningEffort\", \"thinkingBudget\", \"includeThoughts\", \"responseFormat\"],\n },\n {\n name: \"DeepSeek\",\n adapter: \"deepseek-chat\",\n url: \"https://api.deepseek.com\",\n env: \"DEEPSEEK_API_KEY\",\n suffix: \"/chat/completions\",\n options: [\"thinking\", \"reasoningEffort\", \"maxTokens\"],\n },\n {\n name: \"Zhipu\",\n adapter: \"zhipu-chat\",\n url: \"https://open.bigmodel.cn/api/paas/v4\",\n env: \"ZHIPU_API_KEY\",\n suffix: \"/chat/completions\",\n options: [\"thinking\", \"clearThinking\", \"reasoningEffort\", \"maxTokens\"],\n },\n {\n name: \"Kimi\",\n adapter: \"kimi-chat\",\n url: \"https://api.moonshot.ai/v1\",\n env: \"MOONSHOT_API_KEY\",\n suffix: \"/chat/completions\",\n options: [\"thinking\", \"reasoningEffort\", \"maxTokens\"],\n },\n] as const;\n\nclass Back extends Error {}\nclass Cancel extends Error {}\nconst back = { name: \"Back\", value: \"back\" };\nconst cancel = { name: \"Cancel setup\", value: \"cancel\" };\n\ninterface Draft {\n provider: number;\n custom: boolean;\n baseURL: string;\n credential: \"env\" | \"key\";\n apiKey: string;\n apiKeyEnv: string;\n profile: string;\n model: string;\n contextWindowTokens: string;\n maxOutputTokens: string;\n options: string;\n}\n\nfunction configuration(draft: Draft, path: string): MayConfig {\n return parseMayConfig(\n {\n providers: {\n primary: {\n adapter: providers[draft.provider]!.adapter,\n baseURL: draft.baseURL,\n ...(draft.credential === \"env\" ? { apiKeyEnv: draft.apiKeyEnv } : { apiKey: draft.apiKey }),\n },\n },\n models: {\n [draft.profile]: {\n provider: \"primary\",\n model: draft.model,\n ...(draft.contextWindowTokens === \"\" ? {} : { contextWindowTokens: Number(draft.contextWindowTokens) }),\n ...(draft.maxOutputTokens === \"\" ? {} : { maxOutputTokens: Number(draft.maxOutputTokens) }),\n ...(draft.options === \"\" ? {} : { options: JSON.parse(draft.options) as Record<string, unknown> }),\n },\n },\n defaultModel: draft.profile,\n },\n path,\n );\n}\n\n/** \u901A\u8FC7\u5B9E\u9645 Adapter \u68C0\u67E5\u72EC\u7ACB\u8BF7\u6C42\uFF0C\u5B8C\u6210\u54CD\u5E94\u540E\u624D\u786E\u8BA4\u6210\u529F\u3002 */\nexport async function checkOnboardingConnection(\n config: MayConfig,\n signal: AbortSignal,\n timeoutMs = 30_000,\n): Promise<void> {\n const timeout = AbortSignal.timeout(timeoutMs);\n const combined = AbortSignal.any([signal, timeout]);\n const model = createBuiltinProviderModel(selectProviderModel(config));\n let completed = false;\n for await (const event of model.stream(\n {\n messages: [{ role: \"user\", content: [{ type: \"text\", text: \"Reply with OK.\" }] }],\n tools: [],\n },\n { signal: combined },\n )) {\n combined.throwIfAborted();\n if (event.type === \"response.completed\") {\n completed = event.message.content.some((part) => part.type === \"text\" && part.text.trim() !== \"\");\n }\n }\n combined.throwIfAborted();\n if (!completed) throw new Error(\"No completed text response\");\n}\n\nfunction connectionProblem(error: unknown): string {\n if (error instanceof Error && (error.name === \"TimeoutError\" || error.name === \"AbortError\"))\n return \"The request timed out. Check the address and network, then retry.\";\n if (error instanceof Error && \"status\" in error && typeof error.status === \"number\") {\n const hint =\n error.status === 401 || error.status === 403\n ? \"Check your credentials and account access.\"\n : error.status === 404\n ? \"Check the base URL, protocol, and model ID.\"\n : error.status === 429\n ? \"Check your account quota or retry later.\"\n : \"Check your provider settings and service status.\";\n return `HTTP ${error.status}. ${hint}`;\n }\n return \"A completed text response was not received. Check the address, protocol, model ID, options, and network, then retry.\";\n}\n\nexport async function runMaybeCodeOnboarding(path: string, command: MaybeCodeStartCommand): Promise<boolean> {\n const controller = new AbortController();\n const context = { signal: controller.signal };\n const terminal = createNodeTerminal();\n const interrupt = () => controller.abort(new Cancel());\n const removeInterrupt = terminal.onInterrupt!(interrupt);\n process.once(\"SIGINT\", interrupt);\n process.stdin.once(\"end\", interrupt);\n const draft: Draft = {\n provider: 0,\n custom: false,\n baseURL: providers[0].url,\n credential: \"env\",\n apiKey: \"\",\n apiKeyEnv: providers[0].env,\n profile: command.model ?? \"default\",\n model: \"\",\n contextWindowTokens: \"\",\n maxOutputTokens: \"\",\n options: \"\",\n };\n let saved = false;\n let verified = false;\n let completion: string | undefined;\n let screen = \"\";\n const write = (message: string) => {\n screen += `${message}\\n`;\n terminal.write(`${message}\\n`);\n };\n const text = async (\n message: string,\n value: string,\n validate: (value: string) => boolean | string = required,\n clearable = false,\n password = false,\n ): Promise<string> => {\n write(`Enter: continue | Esc: back | Ctrl+C: cancel${clearable ? \" | :clear: remove this setting\" : \"\"}`);\n while (true) {\n const question = new AbortController();\n let answer: string;\n try {\n answer = (\n await terminal.question(`${message}${value && !password ? ` [${value}]` : \"\"}: `, {\n signal: AbortSignal.any([controller.signal, question.signal]),\n history: false,\n password,\n onEscape: () => question.abort(new Back()),\n })\n ).trim();\n } catch (error) {\n controller.signal.throwIfAborted();\n if (question.signal.aborted) throw question.signal.reason;\n throw error;\n }\n if (clearable && answer === \":clear\") return \"\";\n const result = answer || value;\n const valid = validate(result);\n if (valid === true) return result;\n write(typeof valid === \"string\" ? valid : \"Enter a valid value.\");\n }\n };\n const choose = async (\n message: string,\n choices: { name: string; value: string }[],\n value?: string,\n escapeValue = \"back\",\n ) => {\n let result: string | undefined;\n const list = new SelectList(\n choices.map((choice) => ({ label: choice.name, value: choice.value })),\n {\n selectedIndex: Math.max(\n 0,\n choices.findIndex((choice) => choice.value === value),\n ),\n onSelect: (item) => {\n result = item.value;\n },\n onCancel: () => {\n result = escapeValue;\n },\n keybindings: [{ context: \"select\", keys: \"escape\", action: \"list.cancel\" }],\n },\n );\n list.setFocused(true);\n while (result === undefined) {\n const lines = list.render({\n width: Math.max(1, (process.stdout.columns || 80) - 1),\n height: Math.max(1, Math.min(12, (process.stdout.rows || 24) - 4)),\n }).lines;\n terminal.write(\n `\\x1b[2J\\x1b[H${screen}${message}\\n\\n${lines.join(\"\\n\")}\\n\\nUp/Down: select | Enter: confirm | Esc: ${escapeValue === \"cancel\" ? \"cancel\" : \"back\"} | Ctrl+C: cancel`,\n );\n const key = await terminal.readKey!(context);\n if (key.ctrl && key.key === \"c\") throw new Cancel();\n list.handleKey(key);\n }\n terminal.write(`\\x1b[2J\\x1b[H${screen}`);\n if (result === \"back\") throw new Back();\n if (result === \"cancel\") throw new Cancel();\n write(`${message}: ${choices.find((choice) => choice.value === result)!.name}`);\n return result;\n };\n try {\n terminal.write(\"\\x1b[?1049h\");\n let step = 0;\n const previous: number[] = [];\n const advance = (next: number) => {\n previous.push(step);\n step = next;\n };\n const selectProvider = (selected: string) => {\n if (Number(selected) === draft.provider) return;\n draft.provider = Number(selected);\n draft.baseURL = providers[draft.provider]!.url;\n draft.apiKeyEnv = providers[draft.provider]!.env;\n draft.options = \"\";\n };\n while (true) {\n screen = `Welcome to MaybeCode\\nConfiguration: ${path}\\n\\n`;\n terminal.write(`\\x1b[2J\\x1b[H${screen}`);\n try {\n if (step === 0) {\n await choose(\n command.configPath === undefined ? \"Start configuration?\" : \"Create a new configuration at this path?\",\n [{ name: \"Start configuration\", value: \"start\" }, cancel],\n undefined,\n \"cancel\",\n );\n advance(1);\n } else if (step === 1) {\n verified = false;\n const choice = await choose(\n \"Provider\",\n [\n ...providers.map((provider, index) => ({ name: provider.name, value: String(index) })),\n { name: \"Custom compatible service\", value: \"custom\" },\n back,\n cancel,\n ],\n draft.custom ? \"custom\" : String(draft.provider),\n );\n draft.custom = choice === \"custom\";\n if (!draft.custom) selectProvider(choice);\n advance(draft.custom ? 2 : 3);\n } else if (step === 2) {\n selectProvider(\n await choose(\n \"API protocol\",\n [...providers.map((provider, index) => ({ name: provider.adapter, value: String(index) })), back, cancel],\n String(draft.provider),\n ),\n );\n advance(3);\n } else if (step === 3) {\n write(\n `The adapter appends ${providers[draft.provider]!.suffix} to the base URL. Include any API version prefix required by your service.`,\n );\n draft.baseURL = await text(\"Base URL\", draft.baseURL, validURL);\n advance(4);\n } else if (step === 4) {\n verified = false;\n draft.credential = (await choose(\n \"Credentials\",\n [\n { name: \"Use an environment variable\", value: \"env\" },\n { name: \"Enter an API key (saved as plain text in the config file)\", value: \"key\" },\n back,\n cancel,\n ],\n draft.credential,\n )) as \"env\" | \"key\";\n advance(5);\n } else if (step === 5) {\n if (draft.credential === \"env\") {\n draft.apiKeyEnv = await text(\"Environment variable name\", draft.apiKeyEnv, (value) => {\n if (!/^[A-Za-z_][A-Za-z0-9_]*$/u.test(value)) return \"Enter a valid environment variable name.\";\n return process.env[value]?.trim()\n ? true\n : \"This variable is empty or unavailable in this process. Press Esc to choose another credential method.\";\n });\n } else {\n draft.apiKey = await text(\n draft.apiKey ? \"API key (input hidden; leave empty to keep the current key)\" : \"API key (input hidden)\",\n draft.apiKey,\n required,\n false,\n true,\n );\n }\n advance(6);\n } else if (step === 6) {\n verified = false;\n draft.model = await text(\"Model ID\", draft.model);\n advance(7);\n } else if (step === 7) {\n draft.profile = await text(\"Model profile name\", draft.profile, (value) =>\n command.model !== undefined && value !== command.model\n ? `This launch uses --model ${command.model}. Use that profile name to continue.`\n : required(value),\n );\n advance(8);\n } else if (step === 8) {\n const advanced = await choose(\"Model settings\", [\n { name: \"Continue\", value: \"continue\" },\n { name: \"Edit advanced settings\", value: \"advanced\" },\n back,\n cancel,\n ]);\n advance(advanced === \"advanced\" ? 9 : 12);\n } else if (step === 9) {\n write(\n \"Enter keeps the displayed value. Type :clear to remove an advanced setting and use existing defaults.\",\n );\n draft.contextWindowTokens = await text(\n \"Context window tokens (optional)\",\n draft.contextWindowTokens,\n optionalInteger,\n true,\n );\n advance(10);\n } else if (step === 10) {\n draft.maxOutputTokens = await text(\n \"Maximum output tokens (optional)\",\n draft.maxOutputTokens,\n optionalInteger,\n true,\n );\n advance(11);\n } else if (step === 11) {\n const keys = [...providers[draft.provider]!.options, \"unknownCapabilityPolicy\"];\n write(`Adapter options: ${keys.join(\", \")}`);\n draft.options = await text(\n \"Adapter options as a JSON object (optional)\",\n draft.options,\n (value) => {\n if (!value) return true;\n let options: unknown;\n try {\n options = JSON.parse(value);\n } catch {\n return \"Enter a valid JSON object.\";\n }\n if (options === null || typeof options !== \"object\" || Array.isArray(options))\n return \"Enter a JSON object.\";\n return (\n Object.keys(options).every((key) => keys.includes(key)) || \"Use only the listed adapter option names.\"\n );\n },\n true,\n );\n advance(12);\n } else if (step === 12) {\n let config: MayConfig;\n try {\n config = configuration(draft, path);\n createBuiltinProviderModel(selectProviderModel(config));\n } catch (error) {\n if (!(error instanceof Error)) throw error;\n // \u914D\u7F6E\u9519\u8BEF\u4EC5\u663E\u793A\u672C\u5730\u6821\u9A8C\u4FE1\u606F\uFF1B\u51ED\u636E\u5185\u5BB9\u59CB\u7EC8\u9690\u85CF\u3002\n const secret = draft.credential === \"key\" ? draft.apiKey : process.env[draft.apiKeyEnv];\n const message = secret ? error.message.replaceAll(secret, \"[hidden]\") : error.message;\n write(`Configuration needs attention: ${message.replace(/[\\x00-\\x1f\\x7f]/gu, \" \")}`);\n const target = await choose(\"Edit configuration\", [\n { name: \"Provider\", value: \"1\" },\n { name: \"Credentials\", value: \"4\" },\n { name: \"Model and advanced settings\", value: \"6\" },\n back,\n cancel,\n ]);\n advance(Number(target));\n continue;\n }\n write(\"Local configuration checks passed.\");\n const action = await choose(\"Connection check\", [\n { name: \"Test connection (sends a short request; API charges may apply)\", value: \"test\" },\n { name: \"Skip connection check\", value: \"skip\" },\n back,\n cancel,\n ]);\n verified = false;\n if (action === \"test\") {\n write(\"Checking connection (30-second timeout). Press Ctrl+C to cancel setup.\");\n try {\n await checkOnboardingConnection(config, controller.signal);\n verified = true;\n } catch (error) {\n controller.signal.throwIfAborted();\n write(`Connection check failed. ${connectionProblem(error)}`);\n const next = await choose(\n \"Next action\",\n [\n { name: \"Retry\", value: \"retry\" },\n { name: \"Edit provider\", value: \"1\" },\n { name: \"Edit credentials\", value: \"4\" },\n { name: \"Edit model and advanced settings\", value: \"6\" },\n { name: \"Skip connection check\", value: \"skip\" },\n { name: \"Back\", value: \"retry\" },\n cancel,\n ],\n undefined,\n \"retry\",\n );\n if (next !== \"skip\") {\n if (next !== \"retry\") advance(Number(next));\n continue;\n }\n }\n }\n advance(13);\n } else {\n write(\n `\\nReview configuration\\nPath: ${path}\\nProvider: ${draft.custom ? \"Custom compatible service\" : providers[draft.provider]!.name}\\nProtocol: ${providers[draft.provider]!.adapter}\\nBase URL: ${draft.baseURL}\\nModel: ${draft.model}\\nDefault profile: ${draft.profile}\\nCredentials: ${draft.credential === \"env\" ? `Environment variable ${draft.apiKeyEnv}` : \"API key stored as plain text (hidden)\"}\\nContext window tokens: ${draft.contextWindowTokens || \"Default\"}\\nMaximum output tokens: ${draft.maxOutputTokens || \"Default\"}\\nAdvanced options: ${draft.options || \"Default\"}\\nConnection: ${verified ? \"Verified\" : \"Not verified\"}`,\n );\n await choose(\"Save configuration?\", [{ name: \"Save and start\", value: \"save\" }, back, cancel]);\n const config = configuration(draft, path);\n createBuiltinProviderModel(selectProviderModel(config));\n await createMayConfig(\n path,\n { providers: config.providers, models: config.models, defaultModel: config.defaultModel },\n context,\n );\n saved = true;\n completion = `Configuration saved to ${path}. Starting MaybeCode.`;\n return true;\n }\n } catch (error) {\n if (!(error instanceof Back)) throw error;\n step = previous.pop() ?? 0;\n verified = false;\n }\n }\n } catch (error) {\n if (error instanceof Cancel || controller.signal.aborted) {\n completion = saved\n ? `Setup cancelled. Configuration is saved at ${path}.`\n : \"Setup cancelled. Configuration was not saved.\";\n return false;\n }\n throw error;\n } finally {\n // \u7B49\u5F85 stdin \u5B8C\u6210\u6682\u505C\uFF0C\u518D\u6062\u590D\u7EC8\u7AEF\u6A21\u5F0F\u5E76\u4EA4\u7ED9\u540E\u7EED\u754C\u9762\u3002\n process.stdin.pause();\n await setImmediate();\n removeInterrupt();\n await terminal.close();\n process.stdout.write(\"\\x1b[?1049l\");\n if (completion !== undefined) process.stdout.write(`${completion}\\n`);\n process.removeListener(\"SIGINT\", interrupt);\n process.stdin.removeListener(\"end\", interrupt);\n }\n}\n\nfunction required(value: string): boolean | string {\n return (value.length > 0 && !/[\\x00-\\x1f\\x7f]/u.test(value)) || \"Enter a nonempty value without control characters.\";\n}\n\nfunction optionalInteger(value: string): boolean | string {\n return (\n value === \"\" ||\n (Number.isSafeInteger(Number(value)) && Number(value) > 0) ||\n \"Enter a positive integer, or leave empty.\"\n );\n}\n\nfunction validURL(value: string): boolean | string {\n let url: URL;\n try {\n url = new URL(value);\n } catch {\n return \"Enter a complete HTTP or HTTPS URL.\";\n }\n return (\n ([\"https:\", \"http:\"].includes(url.protocol) &&\n !url.username &&\n !url.password &&\n !url.search &&\n !url.hash &&\n !/[\\x00-\\x20\\x7f]/u.test(value)) ||\n \"Use HTTP or HTTPS without credentials, query parameters, fragments, or whitespace.\"\n );\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,32 @@
1
+ import { createRequire as __createRequire } from "node:module"; const require = __createRequire(import.meta.url);
2
+ import {
3
+ __name
4
+ } from "./chunk-E732GDOI.js";
5
+
6
+ // apps/maybecode/src/onboarding-check.ts
7
+ import { lstat } from "node:fs/promises";
8
+ import { homedir } from "node:os";
9
+ import { join, resolve } from "node:path";
10
+ async function missingMaybeCodeConfig(command) {
11
+ const path = command.configPath === void 0 ? join(homedir(), ".may", "config.json") : resolve(command.configPath);
12
+ try {
13
+ await lstat(path);
14
+ return void 0;
15
+ } catch (error) {
16
+ if (!(error instanceof Error && "code" in error && error.code === "ENOENT")) throw error;
17
+ }
18
+ if (command.ui === "web" && !/^[\x21-\x7e]{32,256}$/u.test(process.env.MAYBECODE_CONTROL_TOKEN ?? "")) {
19
+ throw new Error("Set MAYBECODE_CONTROL_TOKEN (32..256 printable ASCII characters) before starting --ui web.");
20
+ }
21
+ if (!process.stdin.isTTY || !process.stdout.isTTY) {
22
+ throw new Error(
23
+ `May config is missing at ${path}. Run maybecode in an interactive terminal to create it, or supply an existing file with --config <path>.`
24
+ );
25
+ }
26
+ return path;
27
+ }
28
+ __name(missingMaybeCodeConfig, "missingMaybeCodeConfig");
29
+ export {
30
+ missingMaybeCodeConfig
31
+ };
32
+ //# sourceMappingURL=onboarding-check-HRRI5OJ7.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/onboarding-check.ts"],
4
+ "sourcesContent": ["import { lstat } from \"node:fs/promises\";\nimport { homedir } from \"node:os\";\nimport { join, resolve } from \"node:path\";\nimport type { MaybeCodeStartCommand } from \"./args.js\";\n\nexport async function missingMaybeCodeConfig(command: MaybeCodeStartCommand): Promise<string | undefined> {\n const path = command.configPath === undefined ? join(homedir(), \".may\", \"config.json\") : resolve(command.configPath);\n try {\n await lstat(path);\n return undefined;\n } catch (error) {\n if (!(error instanceof Error && \"code\" in error && error.code === \"ENOENT\")) throw error;\n }\n if (command.ui === \"web\" && !/^[\\x21-\\x7e]{32,256}$/u.test(process.env.MAYBECODE_CONTROL_TOKEN ?? \"\")) {\n throw new Error(\"Set MAYBECODE_CONTROL_TOKEN (32..256 printable ASCII characters) before starting --ui web.\");\n }\n if (!process.stdin.isTTY || !process.stdout.isTTY) {\n throw new Error(\n `May config is missing at ${path}. Run maybecode in an interactive terminal to create it, or supply an existing file with --config <path>.`,\n );\n }\n return path;\n}\n"],
5
+ "mappings": ";;;;;;AAAA,SAAS,aAAa;AACtB,SAAS,eAAe;AACxB,SAAS,MAAM,eAAe;AAG9B,eAAsB,uBAAuB,SAA6D;AACxG,QAAM,OAAO,QAAQ,eAAe,SAAY,KAAK,QAAQ,GAAG,QAAQ,aAAa,IAAI,QAAQ,QAAQ,UAAU;AACnH,MAAI;AACF,UAAM,MAAM,IAAI;AAChB,WAAO;AAAA,EACT,SAAS,OAAO;AACd,QAAI,EAAE,iBAAiB,SAAS,UAAU,SAAS,MAAM,SAAS,UAAW,OAAM;AAAA,EACrF;AACA,MAAI,QAAQ,OAAO,SAAS,CAAC,yBAAyB,KAAK,QAAQ,IAAI,2BAA2B,EAAE,GAAG;AACrG,UAAM,IAAI,MAAM,4FAA4F;AAAA,EAC9G;AACA,MAAI,CAAC,QAAQ,MAAM,SAAS,CAAC,QAAQ,OAAO,OAAO;AACjD,UAAM,IAAI;AAAA,MACR,4BAA4B,IAAI;AAAA,IAClC;AAAA,EACF;AACA,SAAO;AACT;AAjBsB;",
6
+ "names": []
7
+ }