goatchain-cli 0.0.9-beta.21 → 0.0.9-beta.24
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/bin/goatchain.mjs +71 -4
- package/dist/ink.mjs +288 -223
- package/package.json +6 -6
package/bin/goatchain.mjs
CHANGED
|
@@ -26,16 +26,83 @@ const wrapperPm
|
|
|
26
26
|
: 'npm'
|
|
27
27
|
|
|
28
28
|
const args = process.argv.slice(2)
|
|
29
|
-
const
|
|
30
|
-
const forwardArgs = useOpentui ? args.slice(1) : args
|
|
29
|
+
const routing = resolveRouting(args)
|
|
31
30
|
|
|
32
|
-
if (
|
|
33
|
-
runOpentui(forwardArgs)
|
|
31
|
+
if (routing.target === 'opentui') {
|
|
32
|
+
runOpentui(routing.forwardArgs)
|
|
34
33
|
}
|
|
35
34
|
else {
|
|
36
35
|
await runInk()
|
|
37
36
|
}
|
|
38
37
|
|
|
38
|
+
function resolveRouting(argv) {
|
|
39
|
+
// Explicit `goatchain ink ...` forces the Ink TUI.
|
|
40
|
+
if (argv[0] === 'ink')
|
|
41
|
+
return { target: 'ink', forwardArgs: argv.slice(1) }
|
|
42
|
+
// Explicit `goatchain opentui ...` forces the opentui binary.
|
|
43
|
+
if (argv[0] === 'opentui')
|
|
44
|
+
return { target: 'opentui', forwardArgs: argv.slice(1) }
|
|
45
|
+
|
|
46
|
+
// Known subcommands handled only by the opentui binary.
|
|
47
|
+
const first = String(argv[0] ?? '').trim().toLowerCase()
|
|
48
|
+
const opentuiSubcommands = new Set([
|
|
49
|
+
'version',
|
|
50
|
+
'--version',
|
|
51
|
+
'-v',
|
|
52
|
+
'upgrade',
|
|
53
|
+
'update',
|
|
54
|
+
'acp',
|
|
55
|
+
'auth',
|
|
56
|
+
'exec',
|
|
57
|
+
'e',
|
|
58
|
+
'--help',
|
|
59
|
+
'-h',
|
|
60
|
+
])
|
|
61
|
+
if (opentuiSubcommands.has(first))
|
|
62
|
+
return { target: 'opentui', forwardArgs: argv }
|
|
63
|
+
|
|
64
|
+
// One-shot prompt (non-flag first positional, e.g. `goatchain hi`) or
|
|
65
|
+
// one-shot flags (`--cwd`, `--session`, `--no-interaction`) go to opentui.
|
|
66
|
+
if (isOneShotPromptArgv(argv))
|
|
67
|
+
return { target: 'opentui', forwardArgs: argv }
|
|
68
|
+
|
|
69
|
+
// Bare invocation (no args) or flag-only invocation: default to Ink.
|
|
70
|
+
return { target: 'ink', forwardArgs: argv }
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
function isOneShotPromptArgv(argv) {
|
|
74
|
+
const oneShotFlags = new Set([
|
|
75
|
+
'-c',
|
|
76
|
+
'-cwd',
|
|
77
|
+
'--cwd',
|
|
78
|
+
'--chdir',
|
|
79
|
+
'-s',
|
|
80
|
+
'--session',
|
|
81
|
+
'--no-interaction',
|
|
82
|
+
])
|
|
83
|
+
let sawOneShotFlag = false
|
|
84
|
+
for (let i = 0; i < argv.length; i++) {
|
|
85
|
+
const arg = String(argv[i] ?? '').trim()
|
|
86
|
+
if (!arg)
|
|
87
|
+
continue
|
|
88
|
+
if (arg === '--')
|
|
89
|
+
return true
|
|
90
|
+
if (arg.startsWith('-cwd=')) {
|
|
91
|
+
sawOneShotFlag = true
|
|
92
|
+
continue
|
|
93
|
+
}
|
|
94
|
+
if (oneShotFlags.has(arg)) {
|
|
95
|
+
sawOneShotFlag = true
|
|
96
|
+
i += 1
|
|
97
|
+
continue
|
|
98
|
+
}
|
|
99
|
+
if (arg.startsWith('-'))
|
|
100
|
+
return false
|
|
101
|
+
return true
|
|
102
|
+
}
|
|
103
|
+
return sawOneShotFlag
|
|
104
|
+
}
|
|
105
|
+
|
|
39
106
|
async function runInk() {
|
|
40
107
|
const inkEntry = path.join(__dirname, '..', 'dist', 'ink.mjs')
|
|
41
108
|
if (!fs.existsSync(inkEntry)) {
|