MCPcopy Create free account
hub / github.com/tiann/hapi / parseRemoteAgentCommandOptions

Function parseRemoteAgentCommandOptions

cli/src/commands/agentCommandOptions.ts:12–61  ·  view source on GitHub ↗
(
    args: string[],
    allowedPermissionModes: readonly TPermissionMode[]
)

Source from the content-addressed store, hash-verified

10}
11
12export function parseRemoteAgentCommandOptions<TPermissionMode extends PermissionMode>(
13 args: string[],
14 allowedPermissionModes: readonly TPermissionMode[]
15): RemoteAgentCommandOptions<TPermissionMode> {
16 const options: RemoteAgentCommandOptions<TPermissionMode> = {}
17 let hasExplicitPermissionMode = false
18
19 for (let i = 0; i < args.length; i++) {
20 const arg = args[i]
21 if (arg === '--started-by') {
22 options.startedBy = args[++i] as 'runner' | 'terminal'
23 } else if (arg === '--hapi-starting-mode') {
24 const value = args[++i]
25 if (value === 'local' || value === 'remote') {
26 options.startingMode = value
27 } else {
28 throw new Error('Invalid --hapi-starting-mode (expected local or remote)')
29 }
30 } else if (arg === '--permission-mode') {
31 const mode = args[++i]
32 if (!mode || !(allowedPermissionModes as readonly string[]).includes(mode)) {
33 throw new Error(`Invalid --permission-mode value: ${mode ?? '(missing)'}`)
34 }
35 options.permissionMode = mode as TPermissionMode
36 hasExplicitPermissionMode = true
37 } else if (arg === '--yolo' && !hasExplicitPermissionMode) {
38 options.permissionMode = 'yolo' as TPermissionMode
39 } else if (arg === '--resume') {
40 const sessionId = args[++i]
41 if (!sessionId) {
42 throw new Error('Missing --resume value')
43 }
44 options.resumeSessionId = sessionId
45 } else if (arg === '--model') {
46 const model = args[++i]
47 if (!model) {
48 throw new Error('Missing --model value')
49 }
50 options.model = model
51 } else if (arg === '--model-reasoning-effort') {
52 const modelReasoningEffort = args[++i]
53 if (!modelReasoningEffort) {
54 throw new Error('Missing --model-reasoning-effort value')
55 }
56 options.modelReasoningEffort = modelReasoningEffort
57 }
58 }
59
60 return options
61}

Callers 3

opencode.tsFile · 0.90
gemini.tsFile · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected