(params: {
tool: ToolDefinition;
session: RenderSession;
ctx: ToolHandlerContext;
catalog: ToolCatalog;
runtime: InvokeOptions['runtime'];
applyTemplateNextSteps?: boolean;
})
| 211 | } |
| 212 | |
| 213 | export function postProcessSession(params: { |
| 214 | tool: ToolDefinition; |
| 215 | session: RenderSession; |
| 216 | ctx: ToolHandlerContext; |
| 217 | catalog: ToolCatalog; |
| 218 | runtime: InvokeOptions['runtime']; |
| 219 | applyTemplateNextSteps?: boolean; |
| 220 | }): void { |
| 221 | const { tool, session, ctx, catalog, runtime, applyTemplateNextSteps = true } = params; |
| 222 | |
| 223 | const isError = session.isError(); |
| 224 | const nextStepParams = ctx.nextStepParams; |
| 225 | const handlerNextSteps = ctx.nextSteps; |
| 226 | const suppressNextStepsForStructuredFailure = |
| 227 | isError && isStructuredXcodebuildFailureSession(session); |
| 228 | |
| 229 | if (suppressNextStepsForStructuredFailure) { |
| 230 | return; |
| 231 | } |
| 232 | |
| 233 | const suppressTemplateNextSteps = handlerNextSteps !== undefined && handlerNextSteps.length === 0; |
| 234 | |
| 235 | const effectiveNextStepParams = buildEffectiveNextStepParams( |
| 236 | nextStepParams, |
| 237 | handlerNextSteps, |
| 238 | catalog, |
| 239 | ); |
| 240 | |
| 241 | const allTemplateSteps = buildTemplateNextSteps(tool, catalog); |
| 242 | const templateSteps = allTemplateSteps.filter((t) => { |
| 243 | const when = t.step.when ?? 'always'; |
| 244 | if (when === 'success') return !isError; |
| 245 | if (when === 'failure') return isError; |
| 246 | return true; |
| 247 | }); |
| 248 | |
| 249 | let finalSteps: NextStep[]; |
| 250 | |
| 251 | if (applyTemplateNextSteps && !suppressTemplateNextSteps && templateSteps.length > 0) { |
| 252 | finalSteps = mergeTemplateAndResponseNextSteps(templateSteps, effectiveNextStepParams); |
| 253 | } else if (handlerNextSteps && handlerNextSteps.length > 0) { |
| 254 | finalSteps = handlerNextSteps; |
| 255 | } else { |
| 256 | return; |
| 257 | } |
| 258 | |
| 259 | const normalized = normalizeNextSteps(finalSteps, catalog, tool.workflow); |
| 260 | |
| 261 | if (normalized.length > 0) { |
| 262 | session.setNextSteps?.(normalized, runtime); |
| 263 | } |
| 264 | } |
| 265 | |
| 266 | function buildDaemonEnvOverrides(opts: InvokeOptions): Record<string, string> | undefined { |
| 267 | if (!opts.logLevel) { |
no test coverage detected