(args: {
threadId: string;
message: string;
cwd: string;
mode?: EnhancedMode;
cliOverrides?: CodexCliOverrides;
baseInstructions?: string;
developerInstructions?: string;
overrides?: {
approvalPolicy?: TurnStartParams['approvalPolicy'];
sandboxPolicy?: TurnStartParams['sandboxPolicy'];
model?: string;
suppressCollaborationMode?: boolean;
};
})
| 130 | } |
| 131 | |
| 132 | export function buildTurnStartParams(args: { |
| 133 | threadId: string; |
| 134 | message: string; |
| 135 | cwd: string; |
| 136 | mode?: EnhancedMode; |
| 137 | cliOverrides?: CodexCliOverrides; |
| 138 | baseInstructions?: string; |
| 139 | developerInstructions?: string; |
| 140 | overrides?: { |
| 141 | approvalPolicy?: TurnStartParams['approvalPolicy']; |
| 142 | sandboxPolicy?: TurnStartParams['sandboxPolicy']; |
| 143 | model?: string; |
| 144 | suppressCollaborationMode?: boolean; |
| 145 | }; |
| 146 | }): TurnStartParams { |
| 147 | const params: TurnStartParams = { |
| 148 | threadId: args.threadId, |
| 149 | cwd: args.cwd, |
| 150 | input: [{ type: 'text', text: args.message }] |
| 151 | }; |
| 152 | |
| 153 | const allowCliOverrides = args.mode?.permissionMode === 'default'; |
| 154 | const cliOverrides = allowCliOverrides ? args.cliOverrides : undefined; |
| 155 | const approvalPolicy = args.overrides?.approvalPolicy |
| 156 | ?? cliOverrides?.approvalPolicy |
| 157 | ?? (args.mode ? resolveApprovalPolicy(args.mode) : undefined); |
| 158 | if (approvalPolicy) { |
| 159 | params.approvalPolicy = approvalPolicy; |
| 160 | } |
| 161 | |
| 162 | const sandboxPolicy = args.overrides?.sandboxPolicy |
| 163 | ?? resolveSandboxPolicyOverride(cliOverrides?.sandbox) |
| 164 | ?? (args.mode ? resolveSandboxPolicy(args.mode) : undefined); |
| 165 | if (sandboxPolicy) { |
| 166 | params.sandboxPolicy = sandboxPolicy; |
| 167 | } |
| 168 | |
| 169 | const collaborationMode = args.overrides?.suppressCollaborationMode |
| 170 | ? undefined |
| 171 | : args.mode?.collaborationMode; |
| 172 | const model = args.overrides?.model ?? args.mode?.model; |
| 173 | const modelReasoningEffort = args.mode?.modelReasoningEffort; |
| 174 | |
| 175 | if (modelReasoningEffort) { |
| 176 | params.effort = modelReasoningEffort; |
| 177 | if (!collaborationMode && supportsReasoningSummary(model)) { |
| 178 | params.summary = 'detailed'; |
| 179 | } |
| 180 | } |
| 181 | |
| 182 | if (collaborationMode) { |
| 183 | if (!model) { |
| 184 | throw new Error(`Collaboration mode '${collaborationMode}' requires a resolved model`); |
| 185 | } |
| 186 | const { developerInstructions } = resolveInstructions(args); |
| 187 | params.collaborationMode = { |
| 188 | mode: collaborationMode, |
| 189 | settings: { |
no test coverage detected