@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.
- package/README.md +166 -55
- package/README.zh-CN.md +267 -0
- package/dist/application.d.ts +40 -34
- package/dist/application.d.ts.map +1 -1
- package/dist/application.js +290 -170
- package/dist/application.js.map +1 -1
- package/dist/args.d.ts +2 -2
- package/dist/args.d.ts.map +1 -1
- package/dist/args.js +50 -27
- package/dist/args.js.map +1 -1
- package/dist/bin.js +82 -71
- package/dist/bin.js.map +4 -4
- package/dist/cli/chunk-3IORPKBL.js +3572 -0
- package/dist/cli/chunk-3IORPKBL.js.map +7 -0
- package/dist/cli/{chunk-LVTRXPDS.js → chunk-4B2Z6KW7.js} +1547 -1536
- package/dist/cli/chunk-4B2Z6KW7.js.map +7 -0
- package/dist/cli/{chunk-JT6VBKOM.js → chunk-4WG6JIJJ.js} +127 -33
- package/dist/cli/{chunk-JT6VBKOM.js.map → chunk-4WG6JIJJ.js.map} +3 -3
- package/dist/cli/{chunk-K5JWPNSY.js → chunk-5SLWALZK.js} +3521 -16164
- package/dist/cli/chunk-5SLWALZK.js.map +7 -0
- package/dist/cli/chunk-MNBYXL5Y.js +132 -0
- package/dist/cli/chunk-MNBYXL5Y.js.map +7 -0
- package/dist/cli/{chunk-F4XRPLUM.js → chunk-SLWLUEHQ.js} +226 -86
- package/dist/cli/chunk-SLWLUEHQ.js.map +7 -0
- package/dist/cli/chunk-UQDZ55LQ.js +199 -0
- package/dist/cli/chunk-UQDZ55LQ.js.map +7 -0
- package/dist/cli/{chunk-7ISOHFS7.js → chunk-WMSG5ZTR.js} +717 -388
- package/dist/cli/chunk-WMSG5ZTR.js.map +7 -0
- package/dist/cli/chunk-WVIRS76R.js +4057 -0
- package/dist/cli/chunk-WVIRS76R.js.map +7 -0
- package/dist/cli/{chunk-HOU5ITUK.js → chunk-XTEMRAQW.js} +1 -1
- package/dist/cli/chunk-XTEMRAQW.js.map +7 -0
- package/dist/cli/chunk-Z3BOPBVU.js +91 -0
- package/dist/cli/chunk-Z3BOPBVU.js.map +7 -0
- package/dist/cli/{configured-WHY3GGAJ.js → configured-ACNM6TRQ.js} +10 -9
- package/dist/cli/{file-type-R2T7TBHI.js → file-type-HLHPV7WC.js} +817 -13
- package/dist/cli/file-type-HLHPV7WC.js.map +7 -0
- package/dist/cli/mcp-auth-XD5U7WCV.js +74 -0
- package/dist/cli/mcp-auth-XD5U7WCV.js.map +7 -0
- package/dist/cli/onboarding-WQWCPYEO.js +530 -0
- package/dist/cli/onboarding-WQWCPYEO.js.map +7 -0
- package/dist/cli/onboarding-check-HRRI5OJ7.js +32 -0
- package/dist/cli/onboarding-check-HRRI5OJ7.js.map +7 -0
- package/dist/cli/{retained-tui-VJ3VX4R3.js → retained-tui-QF5VMYLC.js} +788 -332
- package/dist/cli/retained-tui-QF5VMYLC.js.map +7 -0
- package/dist/cli/{sixel-LWTCM76G.js → sixel-ISZ4FZ3U.js} +37 -37
- package/dist/cli/{sixel-LWTCM76G.js.map → sixel-ISZ4FZ3U.js.map} +1 -1
- package/dist/cli/{team-T7G7PPNN.js → team-O2I5BXHM.js} +7 -6
- package/dist/cli/{team-v2-JGBBQ7FR.js → team-v2-YYO2G7DJ.js} +816 -390
- package/dist/cli/team-v2-YYO2G7DJ.js.map +7 -0
- package/dist/cli/{web-server-FOMNPY7Q.js → web-server-SXMH6FGA.js} +55 -19
- package/dist/cli/web-server-SXMH6FGA.js.map +7 -0
- package/dist/cli/{web-ui-COB6PKC5.js → web-ui-UWQUFE4W.js} +7 -6
- package/dist/config-schema.json +337 -0
- package/dist/configured.d.ts +18 -11
- package/dist/configured.d.ts.map +1 -1
- package/dist/configured.js +213 -390
- package/dist/configured.js.map +1 -1
- package/dist/controller.d.ts +19 -18
- package/dist/controller.d.ts.map +1 -1
- package/dist/delegation-commands.d.ts +1 -1
- package/dist/delegation-commands.d.ts.map +1 -1
- package/dist/delegation-commands.js +8 -8
- package/dist/delegation-commands.js.map +1 -1
- package/dist/errors.d.ts +2 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +2 -1
- package/dist/errors.js.map +1 -1
- package/dist/events.d.ts +8 -6
- package/dist/events.d.ts.map +1 -1
- package/dist/fork-picker.d.ts.map +1 -1
- package/dist/fork-picker.js +19 -5
- package/dist/fork-picker.js.map +1 -1
- package/dist/git-request.d.ts +6 -6
- package/dist/git-request.d.ts.map +1 -1
- package/dist/git-request.js +28 -15
- package/dist/git-request.js.map +1 -1
- package/dist/goal-commands.d.ts +1 -1
- package/dist/goal-commands.d.ts.map +1 -1
- package/dist/goal-commands.js +12 -5
- package/dist/goal-commands.js.map +1 -1
- package/dist/index.d.ts +5 -37
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -36
- package/dist/index.js.map +1 -1
- package/dist/instructions.d.ts +2 -7
- package/dist/instructions.d.ts.map +1 -1
- package/dist/instructions.js +7 -15
- package/dist/instructions.js.map +1 -1
- package/dist/keymap.d.ts +2 -2
- package/dist/keymap.d.ts.map +1 -1
- package/dist/keymap.js +2 -2
- package/dist/keymap.js.map +1 -1
- package/dist/maybecode-config.schema.json +1765 -0
- package/dist/mcp-auth.d.ts +1 -1
- package/dist/mcp-auth.d.ts.map +1 -1
- package/dist/mcp-auth.js +11 -8
- package/dist/mcp-auth.js.map +1 -1
- package/dist/mcp-commands.d.ts.map +1 -1
- package/dist/mcp-commands.js +18 -4
- package/dist/mcp-commands.js.map +1 -1
- package/dist/mcp-interaction-ui.d.ts.map +1 -1
- package/dist/mcp-interaction-ui.js +11 -4
- package/dist/mcp-interaction-ui.js.map +1 -1
- package/dist/media-history.d.ts +1 -1
- package/dist/media-history.d.ts.map +1 -1
- package/dist/media-history.js +8 -2
- package/dist/media-history.js.map +1 -1
- package/dist/model-picker.d.ts.map +1 -1
- package/dist/model-picker.js +10 -11
- package/dist/model-picker.js.map +1 -1
- package/dist/model-transition.d.ts +11 -0
- package/dist/model-transition.d.ts.map +1 -0
- package/dist/model-transition.js +48 -0
- package/dist/model-transition.js.map +1 -0
- package/dist/model.d.ts +2 -2
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +8 -4
- package/dist/model.js.map +1 -1
- package/dist/onboarding-check.d.ts +3 -0
- package/dist/onboarding-check.d.ts.map +1 -0
- package/dist/onboarding-check.js +22 -0
- package/dist/onboarding-check.js.map +1 -0
- package/dist/onboarding.d.ts +6 -0
- package/dist/onboarding.d.ts.map +1 -0
- package/dist/onboarding.js +463 -0
- package/dist/onboarding.js.map +1 -0
- package/dist/plugins/application.d.ts +6 -4
- package/dist/plugins/application.d.ts.map +1 -1
- package/dist/plugins/application.js +106 -52
- package/dist/plugins/application.js.map +1 -1
- package/dist/plugins/instructions.d.ts +1 -1
- package/dist/plugins/instructions.d.ts.map +1 -1
- package/dist/plugins/instructions.js +24 -11
- package/dist/plugins/instructions.js.map +1 -1
- package/dist/plugins/resources.d.ts +2 -2
- package/dist/plugins/resources.d.ts.map +1 -1
- package/dist/plugins/resources.js +22 -12
- package/dist/plugins/resources.js.map +1 -1
- package/dist/policy.d.ts +1 -1
- package/dist/policy.d.ts.map +1 -1
- package/dist/policy.js +59 -11
- package/dist/policy.js.map +1 -1
- package/dist/run.d.ts +2 -0
- package/dist/run.d.ts.map +1 -1
- package/dist/run.js +38 -33
- package/dist/run.js.map +1 -1
- package/dist/runtime-instructions.d.ts +1 -1
- package/dist/runtime-instructions.d.ts.map +1 -1
- package/dist/runtime-instructions.js +15 -7
- package/dist/runtime-instructions.js.map +1 -1
- package/dist/session-navigation.d.ts +6 -0
- package/dist/session-navigation.d.ts.map +1 -0
- package/dist/session-navigation.js +64 -0
- package/dist/session-navigation.js.map +1 -0
- package/dist/session-picker.d.ts +1 -1
- package/dist/session-picker.d.ts.map +1 -1
- package/dist/session-picker.js +23 -32
- package/dist/session-picker.js.map +1 -1
- package/dist/settings.d.ts +718 -0
- package/dist/settings.d.ts.map +1 -0
- package/dist/settings.js +14 -0
- package/dist/settings.js.map +1 -0
- package/dist/skills.d.ts +1 -1
- package/dist/skills.d.ts.map +1 -1
- package/dist/skills.js +10 -12
- package/dist/skills.js.map +1 -1
- package/dist/slash-commands.d.ts +2 -2
- package/dist/slash-commands.d.ts.map +1 -1
- package/dist/slash-commands.js +149 -67
- package/dist/slash-commands.js.map +1 -1
- package/dist/team-execution.d.ts +10 -0
- package/dist/team-execution.d.ts.map +1 -0
- package/dist/team-execution.js +29 -0
- package/dist/team-execution.js.map +1 -0
- package/dist/team-patches.d.ts.map +1 -1
- package/dist/team-patches.js +149 -52
- package/dist/team-patches.js.map +1 -1
- package/dist/team-plan.d.ts +2 -2
- package/dist/team-plan.d.ts.map +1 -1
- package/dist/team-plan.js +115 -34
- package/dist/team-plan.js.map +1 -1
- package/dist/team-recovery.d.ts +1 -1
- package/dist/team-recovery.d.ts.map +1 -1
- package/dist/team-recovery.js +40 -10
- package/dist/team-recovery.js.map +1 -1
- package/dist/team-v2.d.ts.map +1 -1
- package/dist/team-v2.js +335 -104
- package/dist/team-v2.js.map +1 -1
- package/dist/team-verification.d.ts +4 -2
- package/dist/team-verification.d.ts.map +1 -1
- package/dist/team-verification.js +300 -97
- package/dist/team-verification.js.map +1 -1
- package/dist/team.d.ts +2 -2
- package/dist/team.d.ts.map +1 -1
- package/dist/team.js +172 -62
- package/dist/team.js.map +1 -1
- package/dist/terminal-web.d.ts +1 -0
- package/dist/terminal-web.d.ts.map +1 -1
- package/dist/terminal-web.js +28 -10
- package/dist/terminal-web.js.map +1 -1
- package/dist/ui/actions.d.ts.map +1 -1
- package/dist/ui/actions.js.map +1 -1
- package/dist/ui/retained-tui.d.ts.map +1 -1
- package/dist/ui/retained-tui.js +231 -173
- package/dist/ui/retained-tui.js.map +1 -1
- package/dist/ui/{prototype-view.d.ts → terminal-view.d.ts} +7 -7
- package/dist/ui/terminal-view.d.ts.map +1 -0
- package/dist/ui/{prototype-view.js → terminal-view.js} +185 -98
- package/dist/ui/terminal-view.js.map +1 -0
- package/dist/web-commands.d.ts.map +1 -1
- package/dist/web-commands.js +160 -57
- package/dist/web-commands.js.map +1 -1
- package/dist/web-extension.d.ts.map +1 -1
- package/dist/web-extension.js +14 -4
- package/dist/web-extension.js.map +1 -1
- package/dist/web-server.d.ts.map +1 -1
- package/dist/web-server.js +2 -1
- package/dist/web-server.js.map +1 -1
- package/dist/web-ui.d.ts.map +1 -1
- package/dist/web-ui.js +167 -40
- package/dist/web-ui.js.map +1 -1
- package/dist/workspace-configuration.d.ts +7 -0
- package/dist/workspace-configuration.d.ts.map +1 -0
- package/dist/workspace-configuration.js +134 -0
- package/dist/workspace-configuration.js.map +1 -0
- package/dist/workspace-state.d.ts +20 -0
- package/dist/workspace-state.d.ts.map +1 -0
- package/dist/workspace-state.js +2 -0
- package/dist/workspace-state.js.map +1 -0
- package/dist/workspace.d.ts +26 -43
- package/dist/workspace.d.ts.map +1 -1
- package/dist/workspace.js +261 -323
- package/dist/workspace.js.map +1 -1
- package/package.json +21 -31
- package/dist/cli/chunk-7ISOHFS7.js.map +0 -7
- package/dist/cli/chunk-F4XRPLUM.js.map +0 -7
- package/dist/cli/chunk-H7SNBFO4.js +0 -5522
- package/dist/cli/chunk-H7SNBFO4.js.map +0 -7
- package/dist/cli/chunk-HOU5ITUK.js.map +0 -7
- package/dist/cli/chunk-K5JWPNSY.js.map +0 -7
- package/dist/cli/chunk-LVTRXPDS.js.map +0 -7
- package/dist/cli/chunk-VAZMCNBB.js +0 -686
- package/dist/cli/chunk-VAZMCNBB.js.map +0 -7
- package/dist/cli/chunk-WOFEI42C.js +0 -7820
- package/dist/cli/chunk-WOFEI42C.js.map +0 -7
- package/dist/cli/file-type-R2T7TBHI.js.map +0 -7
- package/dist/cli/mcp-auth-UNRHSIKJ.js +0 -63
- package/dist/cli/mcp-auth-UNRHSIKJ.js.map +0 -7
- package/dist/cli/retained-tui-VJ3VX4R3.js.map +0 -7
- package/dist/cli/team-v2-JGBBQ7FR.js.map +0 -7
- package/dist/cli/tui-SA74DKMA.js +0 -1705
- package/dist/cli/tui-SA74DKMA.js.map +0 -7
- package/dist/cli/web-server-FOMNPY7Q.js.map +0 -7
- package/dist/delegation.d.ts +0 -2
- package/dist/delegation.d.ts.map +0 -1
- package/dist/delegation.js +0 -2
- package/dist/delegation.js.map +0 -1
- package/dist/history-memory.d.ts +0 -2
- package/dist/history-memory.d.ts.map +0 -1
- package/dist/history-memory.js +0 -2
- package/dist/history-memory.js.map +0 -1
- package/dist/subagent-budget.d.ts +0 -2
- package/dist/subagent-budget.d.ts.map +0 -1
- package/dist/subagent-budget.js +0 -2
- package/dist/subagent-budget.js.map +0 -1
- package/dist/subagent-files.d.ts +0 -2
- package/dist/subagent-files.d.ts.map +0 -1
- package/dist/subagent-files.js +0 -2
- package/dist/subagent-files.js.map +0 -1
- package/dist/subagent-host.d.ts +0 -2
- package/dist/subagent-host.d.ts.map +0 -1
- package/dist/subagent-host.js +0 -2
- package/dist/subagent-host.js.map +0 -1
- package/dist/subagent-instructions.d.ts +0 -2
- package/dist/subagent-instructions.d.ts.map +0 -1
- package/dist/subagent-instructions.js +0 -2
- package/dist/subagent-instructions.js.map +0 -1
- package/dist/subagents.d.ts +0 -2
- package/dist/subagents.d.ts.map +0 -1
- package/dist/subagents.js +0 -2
- package/dist/subagents.js.map +0 -1
- package/dist/summarizer.d.ts +0 -2
- package/dist/summarizer.d.ts.map +0 -1
- package/dist/summarizer.js +0 -2
- package/dist/summarizer.js.map +0 -1
- package/dist/tui.d.ts +0 -7
- package/dist/tui.d.ts.map +0 -1
- package/dist/tui.js +0 -1109
- package/dist/tui.js.map +0 -1
- package/dist/ui/prototype-view.d.ts.map +0 -1
- package/dist/ui/prototype-view.js.map +0 -1
- /package/dist/cli/{configured-WHY3GGAJ.js.map → configured-ACNM6TRQ.js.map} +0 -0
- /package/dist/cli/{team-T7G7PPNN.js.map → team-O2I5BXHM.js.map} +0 -0
- /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-
|
|
5
|
+
} from "./cli/chunk-4WG6JIJJ.js";
|
|
6
6
|
import {
|
|
7
7
|
MaybeCodeUsageError
|
|
8
|
-
} from "./cli/chunk-
|
|
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)
|
|
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 !== "
|
|
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)
|
|
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
|
-
|
|
125
|
+
permissionMode,
|
|
136
126
|
autoResume: continueLatest,
|
|
137
127
|
ui: ui ?? "retained",
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
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 = {
|
|
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(
|
|
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))
|
|
197
|
-
|
|
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))
|
|
200
|
-
|
|
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))
|
|
203
|
-
|
|
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
|
-
...
|
|
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-
|
|
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-
|
|
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
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
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, { ...
|
|
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
|
|
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/
|
|
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": "
|
|
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
|
}
|