@duckmind/dm-darwin-x64 0.43.2 → 0.43.8
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/dm +0 -0
- package/extensions/.dm-extensions.json +242 -49
- package/extensions/dm-9router-ext/package.json +2 -19
- package/extensions/dm-9router-ext/src/index.js +5 -0
- package/extensions/dm-ask-user/index.js +10 -0
- package/extensions/dm-ask-user/package.json +1 -21
- package/extensions/dm-cli-anything/package.json +0 -6
- package/extensions/dm-context/package.json +2 -12
- package/extensions/dm-context/src/context.js +1 -0
- package/extensions/dm-context/src/index.js +7 -0
- package/extensions/dm-context/src/utils.js +1 -0
- package/extensions/dm-cua/package.json +0 -7
- package/extensions/dm-fff/package.json +1 -28
- package/extensions/dm-fff/src/index.js +15 -0
- package/extensions/dm-fff/src/query.js +1 -0
- package/extensions/dm-goal/package.json +2 -31
- package/extensions/dm-goal/src/goal.js +43 -0
- package/extensions/dm-grill-me/index.js +174 -0
- package/extensions/dm-grill-me/package.json +1 -26
- package/extensions/dm-image2/package.json +0 -7
- package/extensions/dm-subagents/package.json +1 -32
- package/extensions/dm-subagents/src/agents/agent-management.js +37 -0
- package/extensions/dm-subagents/src/agents/agent-memory.js +6 -0
- package/extensions/dm-subagents/src/agents/agent-scope.js +1 -0
- package/extensions/dm-subagents/src/agents/agent-selection.js +1 -0
- package/extensions/dm-subagents/src/agents/agent-serializer.js +7 -0
- package/extensions/dm-subagents/src/agents/agents.js +11 -0
- package/extensions/dm-subagents/src/agents/chain-serializer.js +12 -0
- package/extensions/dm-subagents/src/agents/frontmatter.js +6 -0
- package/extensions/dm-subagents/src/agents/identity.js +1 -0
- package/extensions/dm-subagents/src/agents/proactive-skills.js +1 -0
- package/extensions/dm-subagents/src/agents/skills.js +6 -0
- package/extensions/dm-subagents/src/extension/config.js +2 -0
- package/extensions/dm-subagents/src/extension/control-notices.js +4 -0
- package/extensions/dm-subagents/src/extension/doctor.js +16 -0
- package/extensions/dm-subagents/src/extension/fanout-child.js +231 -0
- package/extensions/dm-subagents/src/extension/index.js +367 -0
- package/extensions/dm-subagents/src/extension/rpc.js +8 -0
- package/extensions/dm-subagents/src/extension/schemas.js +1 -0
- package/extensions/dm-subagents/src/extension/{tool-description.ts → tool-description.js} +6 -126
- package/extensions/dm-subagents/src/intercom/intercom-bridge.js +13 -0
- package/extensions/dm-subagents/src/intercom/native-supervisor-channel.js +5 -0
- package/extensions/dm-subagents/src/intercom/result-intercom.js +3 -0
- package/extensions/dm-subagents/src/profiles/profiles.js +3 -0
- package/extensions/dm-subagents/src/runs/background/async-execution.js +46 -0
- package/extensions/dm-subagents/src/runs/background/async-job-tracker.js +14 -0
- package/extensions/dm-subagents/src/runs/background/async-resume.js +8 -0
- package/extensions/dm-subagents/src/runs/background/async-status.js +12 -0
- package/extensions/dm-subagents/src/runs/background/chain-append.js +2 -0
- package/extensions/dm-subagents/src/runs/background/chain-root-attachment.js +1 -0
- package/extensions/dm-subagents/src/runs/background/completion-batcher.js +1 -0
- package/extensions/dm-subagents/src/runs/background/completion-dedupe.js +1 -0
- package/extensions/dm-subagents/src/runs/background/control-channel.js +1 -0
- package/extensions/dm-subagents/src/runs/background/fleet-view.js +17 -0
- package/extensions/dm-subagents/src/runs/background/notify.js +3 -0
- package/extensions/dm-subagents/src/runs/background/parallel-groups.js +1 -0
- package/extensions/dm-subagents/src/runs/background/result-watcher.js +8 -0
- package/extensions/dm-subagents/src/runs/background/run-id-resolver.js +4 -0
- package/extensions/dm-subagents/src/runs/background/run-status.js +23 -0
- package/extensions/dm-subagents/src/runs/background/scheduled-runs.js +4 -0
- package/extensions/dm-subagents/src/runs/background/stale-run-reconciler.js +11 -0
- package/extensions/dm-subagents/src/runs/background/subagent-runner.js +78 -0
- package/extensions/dm-subagents/src/runs/background/top-level-async.js +1 -0
- package/extensions/dm-subagents/src/runs/background/wait.js +11 -0
- package/extensions/dm-subagents/src/runs/foreground/chain-clarify.js +12 -0
- package/extensions/dm-subagents/src/runs/foreground/chain-execution.js +102 -0
- package/extensions/dm-subagents/src/runs/foreground/execution.js +51 -0
- package/extensions/dm-subagents/src/runs/foreground/subagent-executor.js +228 -0
- package/extensions/dm-subagents/src/runs/shared/acceptance.js +3 -0
- package/extensions/dm-subagents/src/runs/shared/chain-outputs.js +1 -0
- package/extensions/dm-subagents/src/runs/shared/completion-guard.js +3 -0
- package/extensions/dm-subagents/src/runs/shared/dm-args.js +1 -0
- package/extensions/dm-subagents/src/runs/shared/dm-spawn.js +1 -0
- package/extensions/dm-subagents/src/runs/shared/dynamic-fanout.js +1 -0
- package/extensions/dm-subagents/src/runs/shared/long-running-guard.js +1 -0
- package/extensions/dm-subagents/src/runs/shared/mcp-direct-tool-allowlist.js +1 -0
- package/extensions/dm-subagents/src/runs/shared/model-fallback.js +1 -0
- package/extensions/dm-subagents/src/runs/shared/model-scope.js +1 -0
- package/extensions/dm-subagents/src/runs/shared/nested-events.js +8 -0
- package/extensions/dm-subagents/src/runs/shared/nested-path.js +1 -0
- package/extensions/dm-subagents/src/runs/shared/nested-render.js +1 -0
- package/extensions/dm-subagents/src/runs/shared/parallel-utils.js +5 -0
- package/extensions/dm-subagents/src/runs/shared/run-history.js +5 -0
- package/extensions/dm-subagents/src/runs/shared/single-output.js +14 -0
- package/extensions/dm-subagents/src/runs/shared/structured-output.js +1 -0
- package/extensions/dm-subagents/src/runs/shared/subagent-control.js +5 -0
- package/extensions/dm-subagents/src/runs/shared/subagent-prompt-runtime.js +22 -0
- package/extensions/dm-subagents/src/runs/shared/tool-budget.js +1 -0
- package/extensions/dm-subagents/src/runs/shared/turn-budget.js +7 -0
- package/extensions/dm-subagents/src/runs/shared/workflow-graph.js +1 -0
- package/extensions/dm-subagents/src/runs/shared/worktree.js +3 -0
- package/extensions/dm-subagents/src/shared/artifacts.js +2 -0
- package/extensions/dm-subagents/src/shared/atomic-json.js +1 -0
- package/extensions/dm-subagents/src/shared/child-transcript.js +5 -0
- package/extensions/dm-subagents/src/shared/file-coalescer.js +1 -0
- package/extensions/dm-subagents/src/shared/fork-context.js +6 -0
- package/extensions/dm-subagents/src/shared/formatters.js +9 -0
- package/extensions/dm-subagents/src/shared/jsonl-writer.js +2 -0
- package/extensions/dm-subagents/src/shared/model-info.js +1 -0
- package/extensions/dm-subagents/src/shared/post-exit-stdio-guard.js +1 -0
- package/extensions/dm-subagents/src/shared/session-identity.js +1 -0
- package/extensions/dm-subagents/src/shared/session-tokens.js +2 -0
- package/extensions/dm-subagents/src/shared/settings.js +23 -0
- package/extensions/dm-subagents/src/shared/status-format.js +1 -0
- package/extensions/dm-subagents/src/shared/types.js +8 -0
- package/extensions/dm-subagents/src/shared/utils.js +2 -0
- package/extensions/dm-subagents/src/slash/prompt-template-bridge.js +1 -0
- package/extensions/dm-subagents/src/slash/prompt-workflows.js +7 -0
- package/extensions/dm-subagents/src/slash/slash-bridge.js +1 -0
- package/extensions/dm-subagents/src/slash/slash-commands.js +38 -0
- package/extensions/dm-subagents/src/slash/slash-live-state.js +6 -0
- package/extensions/dm-subagents/src/tui/render-helpers.js +1 -0
- package/extensions/dm-subagents/src/tui/render.js +4 -0
- package/extensions/dm-tasks/package.json +1 -30
- package/extensions/dm-tasks/src/auto-clear.js +1 -0
- package/extensions/dm-tasks/src/index.js +212 -0
- package/extensions/dm-tasks/src/process-tracker.js +1 -0
- package/extensions/dm-tasks/src/task-store.js +1 -0
- package/extensions/dm-tasks/src/tasks-config.js +1 -0
- package/extensions/dm-tasks/src/types.js +0 -0
- package/extensions/dm-tasks/src/ui/settings-menu.js +1 -0
- package/extensions/dm-tasks/src/ui/task-widget.js +1 -0
- package/extensions/dm-usage/index.js +9 -0
- package/extensions/dm-usage/package.json +1 -18
- package/extensions/greedysearch-dm/bin/search.mjs +135 -135
- package/extensions/greedysearch-dm/index.js +20 -0
- package/extensions/greedysearch-dm/package.json +1 -22
- package/extensions/greedysearch-dm/src/formatters/results.js +8 -0
- package/extensions/greedysearch-dm/src/formatters/sources.js +1 -0
- package/extensions/greedysearch-dm/src/formatters/synthesis.js +1 -0
- package/extensions/greedysearch-dm/src/search/engines.mjs +9 -9
- package/extensions/greedysearch-dm/src/search/paths.mjs +1 -0
- package/extensions/greedysearch-dm/src/search/research.mjs +100 -100
- package/extensions/greedysearch-dm/src/search/synthesis-runner.mjs +10 -10
- package/extensions/greedysearch-dm/src/tools/greedy-search-handler.js +20 -0
- package/extensions/greedysearch-dm/src/tools/shared.js +9 -0
- package/extensions/greedysearch-dm/src/types.js +0 -0
- package/extensions/greedysearch-dm/src/utils/helpers.js +1 -0
- package/package.json +1 -1
- package/extensions/dm-9router-ext/src/index.ts +0 -541
- package/extensions/dm-ask-user/index.ts +0 -857
- package/extensions/dm-context/src/context.ts +0 -158
- package/extensions/dm-context/src/index.ts +0 -439
- package/extensions/dm-context/src/utils.ts +0 -6
- package/extensions/dm-fff/src/index.ts +0 -1023
- package/extensions/dm-fff/src/query.ts +0 -87
- package/extensions/dm-goal/src/goal.ts +0 -1073
- package/extensions/dm-grill-me/index.ts +0 -1085
- package/extensions/dm-subagents/src/agents/agent-management.ts +0 -1052
- package/extensions/dm-subagents/src/agents/agent-memory.ts +0 -254
- package/extensions/dm-subagents/src/agents/agent-scope.ts +0 -6
- package/extensions/dm-subagents/src/agents/agent-selection.ts +0 -25
- package/extensions/dm-subagents/src/agents/agent-serializer.ts +0 -121
- package/extensions/dm-subagents/src/agents/agents.ts +0 -1553
- package/extensions/dm-subagents/src/agents/chain-serializer.ts +0 -277
- package/extensions/dm-subagents/src/agents/frontmatter.ts +0 -93
- package/extensions/dm-subagents/src/agents/identity.ts +0 -30
- package/extensions/dm-subagents/src/agents/proactive-skills.ts +0 -191
- package/extensions/dm-subagents/src/agents/skills.ts +0 -729
- package/extensions/dm-subagents/src/extension/config.ts +0 -39
- package/extensions/dm-subagents/src/extension/control-notices.ts +0 -92
- package/extensions/dm-subagents/src/extension/doctor.ts +0 -214
- package/extensions/dm-subagents/src/extension/fanout-child.ts +0 -172
- package/extensions/dm-subagents/src/extension/index.ts +0 -656
- package/extensions/dm-subagents/src/extension/rpc.ts +0 -369
- package/extensions/dm-subagents/src/extension/schemas.ts +0 -309
- package/extensions/dm-subagents/src/intercom/intercom-bridge.ts +0 -180
- package/extensions/dm-subagents/src/intercom/native-supervisor-channel.ts +0 -519
- package/extensions/dm-subagents/src/intercom/result-intercom.ts +0 -377
- package/extensions/dm-subagents/src/profiles/profiles.ts +0 -637
- package/extensions/dm-subagents/src/runs/background/async-execution.ts +0 -1065
- package/extensions/dm-subagents/src/runs/background/async-job-tracker.ts +0 -441
- package/extensions/dm-subagents/src/runs/background/async-resume.ts +0 -391
- package/extensions/dm-subagents/src/runs/background/async-status.ts +0 -395
- package/extensions/dm-subagents/src/runs/background/chain-append.ts +0 -282
- package/extensions/dm-subagents/src/runs/background/chain-root-attachment.ts +0 -191
- package/extensions/dm-subagents/src/runs/background/completion-batcher.ts +0 -166
- package/extensions/dm-subagents/src/runs/background/completion-dedupe.ts +0 -63
- package/extensions/dm-subagents/src/runs/background/control-channel.ts +0 -332
- package/extensions/dm-subagents/src/runs/background/fleet-view.ts +0 -515
- package/extensions/dm-subagents/src/runs/background/notify.ts +0 -225
- package/extensions/dm-subagents/src/runs/background/parallel-groups.ts +0 -45
- package/extensions/dm-subagents/src/runs/background/result-watcher.ts +0 -315
- package/extensions/dm-subagents/src/runs/background/run-id-resolver.ts +0 -84
- package/extensions/dm-subagents/src/runs/background/run-status.ts +0 -434
- package/extensions/dm-subagents/src/runs/background/scheduled-runs.ts +0 -514
- package/extensions/dm-subagents/src/runs/background/stale-run-reconciler.ts +0 -368
- package/extensions/dm-subagents/src/runs/background/subagent-runner.ts +0 -3171
- package/extensions/dm-subagents/src/runs/background/top-level-async.ts +0 -13
- package/extensions/dm-subagents/src/runs/background/wait.ts +0 -353
- package/extensions/dm-subagents/src/runs/foreground/chain-clarify.ts +0 -1333
- package/extensions/dm-subagents/src/runs/foreground/chain-execution.ts +0 -1313
- package/extensions/dm-subagents/src/runs/foreground/execution.ts +0 -1239
- package/extensions/dm-subagents/src/runs/foreground/subagent-executor.ts +0 -3613
- package/extensions/dm-subagents/src/runs/shared/acceptance.ts +0 -879
- package/extensions/dm-subagents/src/runs/shared/chain-outputs.ts +0 -116
- package/extensions/dm-subagents/src/runs/shared/completion-guard.ts +0 -147
- package/extensions/dm-subagents/src/runs/shared/dm-args.ts +0 -271
- package/extensions/dm-subagents/src/runs/shared/dm-spawn.ts +0 -147
- package/extensions/dm-subagents/src/runs/shared/dynamic-fanout.ts +0 -295
- package/extensions/dm-subagents/src/runs/shared/long-running-guard.ts +0 -175
- package/extensions/dm-subagents/src/runs/shared/mcp-direct-tool-allowlist.ts +0 -365
- package/extensions/dm-subagents/src/runs/shared/model-fallback.ts +0 -292
- package/extensions/dm-subagents/src/runs/shared/model-scope.ts +0 -128
- package/extensions/dm-subagents/src/runs/shared/nested-events.ts +0 -908
- package/extensions/dm-subagents/src/runs/shared/nested-path.ts +0 -52
- package/extensions/dm-subagents/src/runs/shared/nested-render.ts +0 -115
- package/extensions/dm-subagents/src/runs/shared/parallel-utils.ts +0 -198
- package/extensions/dm-subagents/src/runs/shared/run-history.ts +0 -60
- package/extensions/dm-subagents/src/runs/shared/single-output.ts +0 -180
- package/extensions/dm-subagents/src/runs/shared/structured-output.ts +0 -77
- package/extensions/dm-subagents/src/runs/shared/subagent-control.ts +0 -223
- package/extensions/dm-subagents/src/runs/shared/subagent-prompt-runtime.ts +0 -342
- package/extensions/dm-subagents/src/runs/shared/tool-budget.ts +0 -74
- package/extensions/dm-subagents/src/runs/shared/turn-budget.ts +0 -52
- package/extensions/dm-subagents/src/runs/shared/workflow-graph.ts +0 -206
- package/extensions/dm-subagents/src/runs/shared/worktree.ts +0 -600
- package/extensions/dm-subagents/src/shared/artifacts.ts +0 -113
- package/extensions/dm-subagents/src/shared/atomic-json.ts +0 -86
- package/extensions/dm-subagents/src/shared/child-transcript.ts +0 -212
- package/extensions/dm-subagents/src/shared/file-coalescer.ts +0 -40
- package/extensions/dm-subagents/src/shared/fork-context.ts +0 -194
- package/extensions/dm-subagents/src/shared/formatters.ts +0 -133
- package/extensions/dm-subagents/src/shared/jsonl-writer.ts +0 -81
- package/extensions/dm-subagents/src/shared/model-info.ts +0 -78
- package/extensions/dm-subagents/src/shared/post-exit-stdio-guard.ts +0 -85
- package/extensions/dm-subagents/src/shared/session-identity.ts +0 -10
- package/extensions/dm-subagents/src/shared/session-tokens.ts +0 -44
- package/extensions/dm-subagents/src/shared/settings.ts +0 -450
- package/extensions/dm-subagents/src/shared/status-format.ts +0 -49
- package/extensions/dm-subagents/src/shared/types.ts +0 -1257
- package/extensions/dm-subagents/src/shared/utils.ts +0 -554
- package/extensions/dm-subagents/src/slash/prompt-template-bridge.ts +0 -420
- package/extensions/dm-subagents/src/slash/prompt-workflows.ts +0 -330
- package/extensions/dm-subagents/src/slash/slash-bridge.ts +0 -176
- package/extensions/dm-subagents/src/slash/slash-commands.ts +0 -1296
- package/extensions/dm-subagents/src/slash/slash-live-state.ts +0 -292
- package/extensions/dm-subagents/src/tui/render-helpers.ts +0 -80
- package/extensions/dm-subagents/src/tui/render.ts +0 -1748
- package/extensions/dm-tasks/src/auto-clear.ts +0 -91
- package/extensions/dm-tasks/src/index.ts +0 -1145
- package/extensions/dm-tasks/src/process-tracker.ts +0 -140
- package/extensions/dm-tasks/src/task-store.ts +0 -305
- package/extensions/dm-tasks/src/tasks-config.ts +0 -23
- package/extensions/dm-tasks/src/types.ts +0 -40
- package/extensions/dm-tasks/src/ui/settings-menu.ts +0 -100
- package/extensions/dm-tasks/src/ui/task-widget.ts +0 -265
- package/extensions/dm-usage/index.ts +0 -1718
- package/extensions/greedysearch-dm/index.ts +0 -177
- package/extensions/greedysearch-dm/src/formatters/results.ts +0 -163
- package/extensions/greedysearch-dm/src/formatters/sources.ts +0 -116
- package/extensions/greedysearch-dm/src/formatters/synthesis.ts +0 -87
- package/extensions/greedysearch-dm/src/tools/greedy-search-handler.ts +0 -370
- package/extensions/greedysearch-dm/src/tools/shared.ts +0 -187
- package/extensions/greedysearch-dm/src/types.ts +0 -110
- package/extensions/greedysearch-dm/src/utils/helpers.ts +0 -40
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import*as d from"node:fs";import*as C from"node:path";import*as _ from"node:fs";import*as m from"node:path";var v=new Map;function j$($){return $ instanceof Error?$.message:String($)}function z$($){return typeof $==="object"&&$!==null&&"code"in $&&$.code==="ENOENT"}function A$($){let f=m.join($,"status.json"),j;try{j=_.statSync(f)}catch(X){if(z$(X))return null;throw Error(`Failed to inspect async status file '${f}': ${j$(X)}`,{cause:X instanceof Error?X:void 0})}let J=v.get(f);if(J&&J.mtime===j.mtimeMs)return J.status;let Q;try{Q=_.readFileSync(f,"utf-8")}catch(X){if(z$(X))return null;throw Error(`Failed to read async status file '${f}': ${j$(X)}`,{cause:X instanceof Error?X:void 0})}let Z;try{Z=JSON.parse(Q)}catch(X){throw Error(`Failed to parse async status file '${f}': ${j$(X)}`,{cause:X instanceof Error?X:void 0})}if(v.set(f,{mtime:j.mtimeMs,status:Z}),v.size>50){let X=v.keys().next().value;if(X)v.delete(X)}return Z}import*as R from"node:os";import*as D from"node:path";var F$="subagent:async-complete",T$="subagent:control-event",_$="subagent:control-intercom",C$="subagent:result-intercom";function n($){return $.trim().replace(/[^A-Za-z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"unknown"}function e$($){let f=$?.env??process.env,j=$&&Object.hasOwn($,"getuid")?$.getuid:process.getuid?.bind(process);if(typeof j==="function")return`uid-${j()}`;for(let X of["USERNAME","USER","LOGNAME"]){let B=f[X];if(B)return`user-${n(B)}`}let J=$&&Object.hasOwn($,"userInfo")?$.userInfo:R.userInfo;try{let X=J?.().username;if(X)return`user-${n(X)}`}catch{}let Q=f.USERPROFILE??f.HOME;if(Q)return`home-${n(Q)}`;let Z=$&&Object.hasOwn($,"homedir")?$.homedir:R.homedir;try{let X=Z?.();if(X)return`home-${n(X)}`}catch{}return"shared"}var x=D.join(R.tmpdir(),`dm-subagents-${e$()}`),I=D.join(x,"async-subagent-results"),u=D.join(x,"async-subagent-runs"),t$=D.join(x,"chain-runs"),Zf=D.join(x,"artifacts");function P($){if($<1000)return`${$}ms`;if($<60000)return`${($/1000).toFixed(1)}s`;return`${Math.floor($/60000)}m${Math.floor($%60000/1000)}s`}import{randomUUID as Y0}from"node:crypto";import*as F from"node:fs";import*as V from"node:path";import*as S$ from"node:path";var $0=128,f0=4;function J$($){return typeof $==="string"&&$.length>0&&$.length<=$0&&!S$.isAbsolute($)&&!$.includes("/")&&!$.includes("\\")&&!$.includes("..")}function b$($){return typeof $==="number"&&Number.isFinite($)?$:void 0}function E$($,f){return typeof $==="string"&&$.length>0?$.slice(0,f):void 0}function x$($){if(!Array.isArray($))return[];return $.map((f)=>{if(!f||typeof f!=="object")return;let j=f;if(!J$(j.runId))return;return{runId:j.runId,...b$(j.stepIndex)!==void 0?{stepIndex:b$(j.stepIndex)}:{},...E$(j.agent,128)?{agent:E$(j.agent,128)}:{}}}).filter((f)=>Boolean(f)).slice(0,f0)}import*as w from"node:path";import{fileURLToPath as y$}from"node:url";import*as S from"node:os";import*as b from"node:path";var _f=b.join(S.homedir(),".config","mcp","mcp.json"),Cf={cursor:[b.join(S.homedir(),".cursor","mcp.json")],"claude-code":[b.join(S.homedir(),".claude","mcp.json"),b.join(S.homedir(),".claude.json"),b.join(S.homedir(),".claude","claude_desktop_config.json")],"claude-desktop":[b.join(S.homedir(),"Library","Application Support","Claude","claude_desktop_config.json")],codex:[b.join(S.homedir(),".codex","config.json")],windsurf:[b.join(S.homedir(),".windsurf","mcp.json")],vscode:[".vscode/mcp.json"]};import{Compile as Sf}from"typebox/compile";var df=w.join(w.dirname(y$(import.meta.url)),"subagent-prompt-runtime.ts"),of=w.join(w.dirname(y$(import.meta.url)),"..","..","extension","fanout-child.ts");import*as J0 from"node:fs";import*as N from"node:path";var Z0=[10,25,50,100,200,500,1000,2000,4000],Q0=new Set(["EACCES","EBUSY","EPERM"]),I$=typeof SharedArrayBuffer<"u"?new SharedArrayBuffer(4):void 0,N$=I$?new Int32Array(I$):void 0;function q0($){if($<=0)return;if(N$)try{Atomics.wait(N$,0,0,$);return}catch{}let f=Date.now()+$;while(Date.now()<f);}function X0($){let f=$?.code;return typeof f==="string"&&Q0.has(f)}function B0($,f,j,J,Q){for(let Z=0;;Z++)try{$.renameSync(f,j);return}catch(X){let B=J[Z];if(B===void 0||!X0(X))throw X;Q(B)}}function K0($={}){let f=$.fs??J0,j=$.now??Date.now,J=$.pid??process.pid,Q=$.random??Math.random,X=$.retryRenameErrors??process.platform==="win32"?$.retryDelaysMs??Z0:[],B=$.wait??q0;return(K,H)=>{f.mkdirSync(N.dirname(K),{recursive:!0});let U=N.join(N.dirname(K),`.${N.basename(K)}.${J}.${j()}.${Q().toString(36).slice(2)}.tmp`);try{f.writeFileSync(U,JSON.stringify(H,null,2),"utf-8"),B0(f,U,K,X,B)}finally{f.rmSync(U,{force:!0})}}}var k=K0();var p=V.join(x,"nested-subagent-events"),H0="route.json",W0="registry.json",B$=65536,Z$=12,c=16,Q$=3;function r($){return J$($)}function O0($,f){if(!r(f))throw Error(`${$} must be a non-empty safe id token.`)}function R$($,f){O0($,f)}function q$($,f){let j=V.resolve($),J=V.resolve(f);return J===j||J.startsWith(`${j}${V.sep}`)}function P$($){return V.dirname(V.resolve($.eventSink))}function a($){if(R$("rootRunId",$.rootRunId),R$("capabilityToken",$.capabilityToken),!q$(p,$.eventSink))throw Error("Nested event sink is outside the subagent nested event root.");if(!q$(p,$.controlInbox))throw Error("Nested control inbox is outside the subagent nested event root.");if(P$($)!==V.dirname(V.resolve($.controlInbox)))throw Error("Nested event sink and control inbox must share one route root.")}function w$($,f){if(!f.asyncDir)return;let j=V.resolve(f.asyncDir),J=V.resolve(x,"nested-subagent-runs",$,f.id),Q=V.relative(J,j);return j===J||!Q.startsWith("..")&&!V.isAbsolute(Q)?j:void 0}function Y($){return typeof $==="number"&&Number.isFinite($)?$:void 0}function O($,f=512){return typeof $==="string"&&$.length>0?$.slice(0,f):void 0}function G0($){if(!$||typeof $!=="object")return;let f=$,j=Y(f.input),J=Y(f.output),Q=Y(f.total);return j!==void 0&&J!==void 0&&Q!==void 0?{input:j,output:J,total:Q}:void 0}function U0($){if(!$||typeof $!=="object")return;let f=$,j=Y(f.inputTokens),J=Y(f.outputTokens),Q=Y(f.costUsd);return j!==void 0&&J!==void 0&&Q!==void 0?{inputTokens:j,outputTokens:J,costUsd:Q}:void 0}function i($){if(!$||typeof $!=="object")return;let f=$,j=Y(f.maxTurns),J=Y(f.graceTurns),Q=Y(f.turnCount),Z=f.outcome==="within-budget"||f.outcome==="wrap-up-requested"||f.outcome==="exceeded"?f.outcome:void 0;if(j===void 0||J===void 0||Q===void 0||!Z)return;return{maxTurns:j,graceTurns:J,turnCount:Q,outcome:Z,...Y(f.wrapUpRequestedAtTurn)!==void 0?{wrapUpRequestedAtTurn:Y(f.wrapUpRequestedAtTurn)}:{},...Y(f.exceededAtTurn)!==void 0?{exceededAtTurn:Y(f.exceededAtTurn)}:{}}}function V0($,f){return $==="queued"||$==="running"||$==="complete"||$==="failed"||$==="paused"?$:f}function L0($,f){if(!$||typeof $!=="object")return;let j=$,J=O(j.agent,128);if(!J)return;let Q=j.status==="pending"||j.status==="running"||j.status==="complete"||j.status==="completed"||j.status==="failed"||j.status==="paused"?j.status:"pending";return{agent:J,status:Q,...O(j.sessionFile,2048)?{sessionFile:O(j.sessionFile,2048)}:{},...j.activityState==="active_long_running"||j.activityState==="needs_attention"?{activityState:j.activityState}:{},...Y(j.lastActivityAt)!==void 0?{lastActivityAt:Y(j.lastActivityAt)}:{},...O(j.currentTool,128)?{currentTool:O(j.currentTool,128)}:{},...Y(j.currentToolStartedAt)!==void 0?{currentToolStartedAt:Y(j.currentToolStartedAt)}:{},...O(j.currentPath,2048)?{currentPath:O(j.currentPath,2048)}:{},...Y(j.turnCount)!==void 0?{turnCount:Y(j.turnCount)}:{},...Y(j.toolCount)!==void 0?{toolCount:Y(j.toolCount)}:{},...Y(j.startedAt)!==void 0?{startedAt:Y(j.startedAt)}:{},...Y(j.endedAt)!==void 0?{endedAt:Y(j.endedAt)}:{},...O(j.error,1024)?{error:O(j.error,1024)}:{},...j.timedOut===!0?{timedOut:!0}:{},...i(j.turnBudget)?{turnBudget:i(j.turnBudget)}:{},...j.turnBudgetExceeded===!0?{turnBudgetExceeded:!0}:{},...j.wrapUpRequested===!0?{wrapUpRequested:!0}:{},...f<Q$&&Array.isArray(j.children)?{children:j.children.map((Z)=>s(Z,f+1)).filter((Z)=>Boolean(Z)).slice(0,c)}:{}}}function s($,f=0){if(!$||typeof $!=="object")return;let j=$;if(!r(j.id)||!r(j.parentRunId))return;let J=x$(j.path),Q=Array.isArray(j.steps)?j.steps.map((B)=>L0(B,f+1)).filter((B)=>Boolean(B)).slice(0,Z$):void 0,Z=G0(j.totalTokens),X=U0(j.totalCost);return{id:j.id,parentRunId:j.parentRunId,...Y(j.parentStepIndex)!==void 0?{parentStepIndex:Y(j.parentStepIndex)}:{},...O(j.parentAgent,128)?{parentAgent:O(j.parentAgent,128)}:{},depth:Math.min(Math.max(0,Y(j.depth)??0),Q$),path:J,state:V0(j.state,"running"),...O(j.asyncDir,2048)?{asyncDir:O(j.asyncDir,2048)}:{},...Y(j.pid)!==void 0&&Y(j.pid)>0&&Number.isInteger(Y(j.pid))?{pid:Y(j.pid)}:{},...O(j.sessionId,256)?{sessionId:O(j.sessionId,256)}:{},...O(j.sessionFile,2048)?{sessionFile:O(j.sessionFile,2048)}:{},...O(j.intercomTarget,256)?{intercomTarget:O(j.intercomTarget,256)}:{},...O(j.ownerIntercomTarget,256)?{ownerIntercomTarget:O(j.ownerIntercomTarget,256)}:{},...O(j.leafIntercomTarget,256)?{leafIntercomTarget:O(j.leafIntercomTarget,256)}:{},...j.ownerState==="live"||j.ownerState==="gone"||j.ownerState==="unknown"?{ownerState:j.ownerState}:{},...O(j.controlInbox,2048)?{controlInbox:O(j.controlInbox,2048)}:{},...O(j.capabilityToken,128)?{capabilityToken:O(j.capabilityToken,128)}:{},...j.mode==="single"||j.mode==="parallel"||j.mode==="chain"?{mode:j.mode}:{},...O(j.agent,128)?{agent:O(j.agent,128)}:{},...Array.isArray(j.agents)?{agents:j.agents.map((B)=>O(B,128)).filter((B)=>Boolean(B)).slice(0,Z$)}:{},...Y(j.currentStep)!==void 0?{currentStep:Y(j.currentStep)}:{},...Y(j.chainStepCount)!==void 0?{chainStepCount:Y(j.chainStepCount)}:{},...j.activityState==="active_long_running"||j.activityState==="needs_attention"?{activityState:j.activityState}:{},...Y(j.lastActivityAt)!==void 0?{lastActivityAt:Y(j.lastActivityAt)}:{},...O(j.currentTool,128)?{currentTool:O(j.currentTool,128)}:{},...Y(j.currentToolStartedAt)!==void 0?{currentToolStartedAt:Y(j.currentToolStartedAt)}:{},...O(j.currentPath,2048)?{currentPath:O(j.currentPath,2048)}:{},...Y(j.turnCount)!==void 0?{turnCount:Y(j.turnCount)}:{},...Y(j.toolCount)!==void 0?{toolCount:Y(j.toolCount)}:{},...Z?{totalTokens:Z}:{},...X?{totalCost:X}:{},...Y(j.startedAt)!==void 0?{startedAt:Y(j.startedAt)}:{},...Y(j.endedAt)!==void 0?{endedAt:Y(j.endedAt)}:{},...Y(j.lastUpdate)!==void 0?{lastUpdate:Y(j.lastUpdate)}:{},...Y(j.timeoutMs)!==void 0?{timeoutMs:Y(j.timeoutMs)}:{},...Y(j.deadlineAt)!==void 0?{deadlineAt:Y(j.deadlineAt)}:{},...j.timedOut===!0?{timedOut:!0}:{},...i(j.turnBudget)?{turnBudget:i(j.turnBudget)}:{},...j.turnBudgetExceeded===!0?{turnBudgetExceeded:!0}:{},...j.wrapUpRequested===!0?{wrapUpRequested:!0}:{},...O(j.error,1024)?{error:O(j.error,1024)}:{},...Q&&Q.length>0?{steps:Q}:{},...f<Q$&&Array.isArray(j.children)?{children:j.children.map((B)=>s(B,f+1)).filter((B)=>Boolean(B)).slice(0,c)}:{}}}function X$($,f){if(Buffer.byteLength($,"utf-8")>B$)return;let j;try{j=JSON.parse($)}catch{return}if(!j||typeof j!=="object")return;let J=j;if(J.type!=="subagent.nested.started"&&J.type!=="subagent.nested.updated"&&J.type!=="subagent.nested.completed")return;if(J.rootRunId!==f.rootRunId||J.capabilityToken!==f.capabilityToken)return;if(!r(J.parentRunId))return;let Q=Y(J.ts);if(Q===void 0)return;let Z=s(J.child);if(!Z||Z.id===f.rootRunId)return;let X={...Z,controlInbox:f.controlInbox,capabilityToken:f.capabilityToken,ownerState:Z.ownerState??"unknown"};return{type:J.type,ts:Q,rootRunId:f.rootRunId,parentRunId:J.parentRunId,...Y(J.parentStepIndex)!==void 0?{parentStepIndex:Y(J.parentStepIndex)}:{},capabilityToken:f.capabilityToken,child:X}}function M0($,f){if(!$.includes(`
|
|
2
|
+
`)){let j=X$($.trim(),f);return j?[j]:[]}return $.split(`
|
|
3
|
+
`).slice(0,$.endsWith(`
|
|
4
|
+
`)?void 0:-1).map((j)=>j.trim()?X$(j,f):void 0).filter((j)=>Boolean(j))}function l($){return $==="complete"||$==="failed"||$==="paused"}function D$($,f){let j=f.type==="subagent.nested.completed"&&f.child.state==="running"?"complete":f.child.state,J={...f.child,state:j,lastUpdate:f.child.lastUpdate??f.ts};if(!$)return J;let Q=$.lastUpdate??0,Z=J.lastUpdate??f.ts;if(Z<Q)return $;if(l($.state)&&!l(J.state))return $;if(l($.state)&&l(J.state)&&Z===Q)return $;return{...$,...J,state:J.state,lastUpdate:Math.max(Q,Z)}}function z0($,f){let j=!1,J=(B)=>B.map((K)=>{if(K.id===f.parentRunId){let U=K.children??[],q=U.findIndex((L)=>L.id===f.child.id),z=D$(q>=0?U[q]:void 0,f),W=q>=0?U.map((L,E)=>E===q?z:L):[...U,z];return j=!0,{...K,children:W.slice(0,c),lastUpdate:Math.max(K.lastUpdate??0,f.ts)}}if(!K.children?.length)return K;let H=J(K.children);return H===K.children?K:{...K,children:H}}),Q=J($);if(j)return Q;let Z=Q.findIndex((B)=>B.id===f.child.id),X=D$(Z>=0?Q[Z]:void 0,f);return Z>=0?Q.map((B,K)=>K===Z?X:B):[...Q,X].slice(0,c)}function A0($,f){return{...$,updatedAt:Math.max($.updatedAt,f.ts),children:z0($.children,f)}}function k$($){return V.join(P$($),W0)}function g$(){let $;try{$=F.readdirSync(p)}catch(j){if(j.code==="ENOENT")return new Map;throw j}let f=new Map;for(let j of $){let J=V.join(p,j);try{let Q=JSON.parse(F.readFileSync(V.join(J,H0),"utf-8"));if(typeof Q.rootRunId!=="string"||typeof Q.capabilityToken!=="string")continue;if(f.has(Q.rootRunId))continue;let Z={rootRunId:Q.rootRunId,eventSink:V.join(J,"events"),controlInbox:V.join(J,"controls"),capabilityToken:Q.capabilityToken};a(Z),f.set(Q.rootRunId,Z)}catch{continue}}return f}function F0($){a($);try{let f=JSON.parse(F.readFileSync(k$($),"utf-8"));return{rootRunId:$.rootRunId,updatedAt:typeof f.updatedAt==="number"?f.updatedAt:0,children:Array.isArray(f.children)?f.children.map((j)=>s(j)).filter((j)=>Boolean(j)):[],processedEvents:Array.isArray(f.processedEvents)?f.processedEvents.filter((j)=>typeof j==="string"):[]}}catch(f){if(f.code!=="ENOENT")throw f;return{rootRunId:$.rootRunId,updatedAt:0,children:[],processedEvents:[]}}}function e($){a($);let f=F0($),j=new Set(f.processedEvents),J=!1,Q=[];try{Q=F.readdirSync($.eventSink).filter((Z)=>Z.endsWith(".json")||Z.endsWith(".jsonl")).sort()}catch(Z){if(Z.code!=="ENOENT")throw Z}for(let Z of Q){if(j.has(Z))continue;let X=V.join($.eventSink,Z);if(!q$($.eventSink,X))continue;let B;try{let K=F.statSync(X);if(!K.isFile()||K.size>B$)continue;B=F.readFileSync(X,"utf-8")}catch{continue}for(let K of M0(B,$))f=A0(f,K),J=!0;j.add(Z),J=!0}if(J)f={...f,processedEvents:[...j].slice(-1000)},k(k$($),f);return f}function T0($,f,j){let J=`${JSON.stringify(j)}
|
|
5
|
+
`;if(Buffer.byteLength(J,"utf-8")>B$)throw Error("Nested route record exceeds the maximum size.");F.mkdirSync($,{recursive:!0,mode:448});let Q=`${String(f).padStart(13,"0")}-${Y0()}.json`,Z=V.join($,`.${Q}.tmp`),X=V.join($,Q);return F.writeFileSync(Z,J,{mode:384}),F.renameSync(Z,X),X}function v$($,f){a($);let j={...f,rootRunId:$.rootRunId,capabilityToken:$.capabilityToken},J=X$(JSON.stringify(j),$);if(!J)throw Error("Nested event record failed validation.");T0($.eventSink,J.ts,J)}function m$($,f,j){if(!f?.length)return;for(let J of f)J.children=void 0;if(!j?.length)return;for(let J of j){if(J.parentRunId!==$||J.parentStepIndex===void 0)continue;let Q=f.find((Z,X)=>(Z.index??X)===J.parentStepIndex);if(!Q)continue;Q.children??=[],Q.children=[...Q.children.filter((Z)=>Z.id!==J.id),J].slice(0,c)}}function c$($,f,j){return{id:$.runId||j.id,parentRunId:j.parentRunId,...j.parentStepIndex!==void 0?{parentStepIndex:j.parentStepIndex}:{},depth:j.depth,path:j.path??[{runId:j.parentRunId,...j.parentStepIndex!==void 0?{stepIndex:j.parentStepIndex}:{}}],asyncDir:f,...$.pid?{pid:$.pid}:{},...$.sessionId?{sessionId:$.sessionId}:{},mode:$.mode??j.mode,state:$.state,...$.currentStep!==void 0?{currentStep:$.currentStep}:{},...$.chainStepCount!==void 0?{chainStepCount:$.chainStepCount}:{},...$.activityState?{activityState:$.activityState}:{},...$.lastActivityAt!==void 0?{lastActivityAt:$.lastActivityAt}:{},...$.currentTool?{currentTool:$.currentTool}:{},...$.currentToolStartedAt!==void 0?{currentToolStartedAt:$.currentToolStartedAt}:{},...$.currentPath?{currentPath:$.currentPath}:{},...$.turnCount!==void 0?{turnCount:$.turnCount}:{},...$.toolCount!==void 0?{toolCount:$.toolCount}:{},...$.totalTokens?{totalTokens:$.totalTokens}:{},...$.timeoutMs!==void 0?{timeoutMs:$.timeoutMs}:{},...$.deadlineAt!==void 0?{deadlineAt:$.deadlineAt}:{},...$.timedOut!==void 0?{timedOut:$.timedOut}:{},...$.turnBudget?{turnBudget:$.turnBudget}:{},...$.turnBudgetExceeded!==void 0?{turnBudgetExceeded:$.turnBudgetExceeded}:{},...$.wrapUpRequested!==void 0?{wrapUpRequested:$.wrapUpRequested}:{},...$.error?{error:$.error}:{},...$.startedAt!==void 0?{startedAt:$.startedAt}:{startedAt:j.ts},...$.endedAt!==void 0?{endedAt:$.endedAt}:{},lastUpdate:$.lastUpdate??j.ts,...$.sessionFile?{sessionFile:$.sessionFile}:{},...$.steps?.length?{steps:$.steps.map((J)=>({agent:J.agent,status:J.status,...J.sessionFile?{sessionFile:J.sessionFile}:{},...J.activityState?{activityState:J.activityState}:{},...J.lastActivityAt!==void 0?{lastActivityAt:J.lastActivityAt}:{},...J.currentTool?{currentTool:J.currentTool}:{},...J.currentToolStartedAt!==void 0?{currentToolStartedAt:J.currentToolStartedAt}:{},...J.currentPath?{currentPath:J.currentPath}:{},...J.turnCount!==void 0?{turnCount:J.turnCount}:{},...J.toolCount!==void 0?{toolCount:J.toolCount}:{},...J.startedAt!==void 0?{startedAt:J.startedAt}:{},...J.endedAt!==void 0?{endedAt:J.endedAt}:{},...J.error?{error:J.error}:{},...J.timedOut!==void 0?{timedOut:J.timedOut}:{},...J.turnBudget?{turnBudget:J.turnBudget}:{},...J.turnBudgetExceeded!==void 0?{turnBudgetExceeded:J.turnBudgetExceeded}:{},...J.wrapUpRequested!==void 0?{wrapUpRequested:J.wrapUpRequested}:{}})).slice(0,Z$)}:{}}}function E0($,f,j){if(typeof $!=="object"||$===null)return!1;let{start:J,count:Q,stepIndex:Z}=$;return typeof J==="number"&&typeof Q==="number"&&typeof Z==="number"&&Number.isInteger(J)&&Number.isInteger(Q)&&Number.isInteger(Z)&&J>=0&&Q>0&&Z>=0&&Z<j&&J+Q<=f}function t($,f,j){if(!Array.isArray($))return[];return $.filter((J)=>E0(J,f,j)).sort((J,Q)=>J.stepIndex-Q.stepIndex||J.start-Q.start)}import*as M from"node:fs";import*as T from"node:path";function K$($){return $ instanceof Error?$.message:String($)}function S0($){let f=T.join($,"runner.stderr.log"),j=65536,J;try{let Z=M.statSync(f);if(Z.size<=0)return;let X=M.openSync(f,"r");try{let B=Math.min(Z.size,65536),K=Math.max(0,Z.size-B),H=Buffer.alloc(B);M.readSync(X,H,0,B,K),J=H.toString("utf-8").trim()}finally{M.closeSync(X)}}catch{return}if(!J)return;let Q=J.split(/\r?\n/).slice(-30).join(`
|
|
6
|
+
`);return Q.length>4000?`${Q.slice(-4000)}
|
|
7
|
+
[stderr tail truncated]`:Q}function o$($){return typeof $==="object"&&$!==null&&"code"in $&&$.code==="ENOENT"}function x0($,f){try{M.mkdirSync(T.dirname($),{recursive:!0}),M.appendFileSync($,`${JSON.stringify(f)}
|
|
8
|
+
`,"utf-8")}catch{}}function y0($){let f=T.join($,"status.json"),j;try{j=M.readFileSync(f,"utf-8")}catch(J){if(o$(J))return null;throw Error(`Failed to read async status file '${f}': ${K$(J)}`,{cause:J instanceof Error?J:void 0})}try{return JSON.parse(j)}catch(J){throw Error(`Failed to parse async status file '${f}': ${K$(J)}`,{cause:J instanceof Error?J:void 0})}}function I0($){try{let f=JSON.parse(M.readFileSync($,"utf-8"));return{state:f.success?"complete":f.state==="paused"||f.exitCode===0?"paused":"failed",...Array.isArray(f.results)?{results:f.results}:{}}}catch(f){if(o$(f))return;throw Error(`Failed to read async result file '${$}': ${K$(f)}`,{cause:f instanceof Error?f:void 0})}}function N0($,f){if(f?.success===!0)return"complete";if(f?.success===!1)return"failed";return $}function R0($,f,j){let J=I0(f);if(!J)return;let Q=($.steps??[]).map((Z,X)=>{if(Z.status!=="running"&&Z.status!=="pending")return Z;let B=J.results?.[X],K=N0(J.state,B);return{...Z,status:K==="complete"?"complete":K,endedAt:Z.endedAt??j,durationMs:Z.startedAt!==void 0&&Z.durationMs===void 0?Math.max(0,j-Z.startedAt):Z.durationMs,exitCode:Z.exitCode??(K==="complete"||K==="paused"?0:1),error:K==="failed"?Z.error??B?.error:Z.error,sessionFile:Z.sessionFile??B?.sessionFile,model:Z.model??B?.model,attemptedModels:Z.attemptedModels??B?.attemptedModels,modelAttempts:Z.modelAttempts??B?.modelAttempts}});return{...$,state:J.state,activityState:void 0,lastUpdate:j,endedAt:$.endedAt??j,steps:Q}}function D0($,f,j){let J=f.startedAt??j,Q=f.agents?.length?f.agents:["subagent"],Z=f.chainStepCount,X=Z!==void 0?t(f.parallelGroups,Q.length,Z):[];return{runId:f.runId||T.basename($),...f.sessionId?{sessionId:f.sessionId}:{},mode:f.mode??"single",state:"running",pid:f.pid,startedAt:J,lastUpdate:j,currentStep:0,...Z!==void 0?{chainStepCount:Z}:{},...X.length?{parallelGroups:X}:{},steps:Q.map((B)=>({agent:B,status:"running",startedAt:J})),...f.sessionFile?{sessionFile:f.sessionFile}:{}}}function P0($,f,j,J){let Q=$.runId||T.basename(f),Z=typeof $.pid==="number"?$.pid:"unknown",X=J??`Async runner process ${Z} exited or disappeared before writing a result. Marked run failed by stale-run reconciliation.`,B=S0(f),K=B?`${X}
|
|
9
|
+
|
|
10
|
+
Runner stderr tail:
|
|
11
|
+
${B}`:X,U=(($.steps?.length)?$.steps:[{agent:"subagent",status:"running"}]).map((W)=>W.status==="running"||W.status==="pending"?{...W,status:"failed",activityState:void 0,endedAt:W.endedAt??j,durationMs:W.startedAt!==void 0&&W.durationMs===void 0?Math.max(0,j-W.startedAt):W.durationMs,exitCode:W.exitCode??1,error:W.error??K}:W),q={...$,state:"failed",activityState:void 0,lastUpdate:j,endedAt:j,steps:U},z=U[$.currentStep??0]?.agent??U[0]?.agent??"subagent";return{status:q,message:K,result:{id:Q,agent:z,mode:$.mode,success:!1,state:"failed",summary:K,results:U.map((W)=>({agent:W.agent,output:W.status==="complete"||W.status==="completed"?"":K,error:W.status==="complete"||W.status==="completed"?void 0:W.error??K,success:W.status==="complete"||W.status==="completed",model:W.model,attemptedModels:W.attemptedModels,modelAttempts:W.modelAttempts,sessionFile:W.sessionFile})),exitCode:1,timestamp:j,durationMs:Math.max(0,j-$.startedAt),asyncDir:f,sessionId:$.sessionId,sessionFile:$.sessionFile}}}function h$($,f,j,J,Q){let Z=P0(f,$,J,Q);return k(j,Z.result),k(T.join($,"status.json"),Z.status),x0(T.join($,"events.jsonl"),{type:"subagent.run.repaired_stale",ts:J,runId:Z.status.runId,pid:f.pid,resultPath:j,message:Z.message}),{status:Z.status,repaired:!0,resultPath:j,message:Z.message}}function d$($){return $==="complete"||$==="failed"||$==="paused"}function*Y$($){for(let f of $??[])yield f,yield*Y$(f.children),yield*Y$(f.steps?.flatMap((j)=>j.children??[]))}function n$($,f={}){let j=e($);for(let J of Y$(j.children)){if(J.state!=="running"&&J.state!=="queued")continue;let Q=w$($.rootRunId,J);if(!Q)continue;let Z=H$(Q,{...f,resultsDir:T.join(f.resultsDir??I,"nested",$.rootRunId)}),X=Z.status;if(!X)continue;if(!Z.repaired&&!d$(X.state))continue;let B=f.now?.()??Date.now();v$($,{type:d$(X.state)?"subagent.nested.completed":"subagent.nested.updated",ts:B,parentRunId:J.parentRunId,parentStepIndex:J.parentStepIndex,child:c$(X,Q,{id:J.id,parentRunId:J.parentRunId,parentStepIndex:J.parentStepIndex,depth:J.depth,path:J.path,mode:J.mode,ts:B})})}}function w0($,f=process.kill){try{return f($,0),"alive"}catch(j){let J=typeof j==="object"&&j!==null&&"code"in j?j.code:void 0;if(J==="ESRCH")return"dead";if(J==="EPERM")return"unknown";return"unknown"}}function H$($,f={}){let j=f.now?.()??Date.now(),J=y0($),Q=!J&&f.startedRun?D0($,f.startedRun,j):void 0,Z=J??Q;if(!Z)return{status:null,repaired:!1};let X=Z.runId||T.basename($),B=T.join(f.resultsDir??I,`${X}.json`);if(M.existsSync(B)){let H=Z.state==="running"||Z.state==="queued"?R0(Z,B,j):void 0;if(H)return k(T.join($,"status.json"),H),{status:H,repaired:!0,resultPath:B,message:"Existing async result file was used to repair stale running status."};return{status:Z,repaired:!1,resultPath:B}}if(Z.state!=="running"||typeof Z.pid!=="number")return{status:J??null,repaired:!1,resultPath:B};if(!J){let H=f.startedRun?.startedAt??Z.startedAt;if(j-H<(f.missingStatusGraceMs??1000))return{status:null,repaired:!1,resultPath:B}}if(w0(Z.pid,f.kill)!=="dead"){let H=f.staleAlivePidMs??86400000,U=Z.lastUpdate??Z.startedAt;if(j-U<=H)return{status:J??null,repaired:!1,resultPath:B};let q=`Async runner process ${Z.pid} still has a live PID, but status has not updated for ${j-U}ms. Marked run failed by stale-run reconciliation because PID ownership cannot be verified.`;return h$($,Z,B,j,q)}return h$($,Z,B,j)}function h($){return $ instanceof Error?$.message:String($)}function W$($){return typeof $==="object"&&$!==null&&"code"in $&&$.code==="ENOENT"}function k0($,f){let j=C.join($,f);try{return d.statSync(j).isDirectory()}catch(J){if(W$(J))return!1;throw Error(`Failed to inspect async run path '${j}': ${h(J)}`,{cause:J instanceof Error?J:void 0})}}function g0($){if(!$)return;try{return d.statSync($).mtimeMs}catch(f){if(W$(f))return;throw Error(`Failed to inspect async output file '${$}': ${h(f)}`,{cause:f instanceof Error?f:void 0})}}function v0($,f){if(f.state!=="running")return{activityState:f.activityState,lastActivityAt:f.lastActivityAt};let j=f.outputFile?C.isAbsolute(f.outputFile)?f.outputFile:C.join($,f.outputFile):void 0,J=typeof f.currentStep==="number"?f.steps?.[f.currentStep]:void 0;return{activityState:f.activityState,lastActivityAt:f.lastActivityAt??g0(j)??J?.lastActivityAt??J?.startedAt??f.startedAt}}function m0($,f,j=[],J){if(f.sessionId!==void 0&&typeof f.sessionId!=="string")throw Error(`Invalid async status '${C.join($,"status.json")}': sessionId must be a string.`);let{activityState:Q,lastActivityAt:Z}=v0($,f),X=f.steps??[],B=f.chainStepCount??X.length,K=t(f.parallelGroups,X.length,B),H=[];if(j.length===0&&J)try{H=e(J)?.children??[]}catch(q){j.push(`Nested status unavailable: ${h(q)}`)}let U=X.map((q,z)=>{let{activityState:W,lastActivityAt:L}=q;return{index:z,agent:q.agent,...q.label?{label:q.label}:{},...q.phase?{phase:q.phase}:{},...q.outputName?{outputName:q.outputName}:{},...q.structured?{structured:q.structured}:{},status:q.status,...W?{activityState:W}:{},...L?{lastActivityAt:L}:{},...q.currentTool?{currentTool:q.currentTool}:{},...q.currentToolArgs?{currentToolArgs:q.currentToolArgs}:{},...q.currentToolStartedAt?{currentToolStartedAt:q.currentToolStartedAt}:{},...q.currentPath?{currentPath:q.currentPath}:{},...q.recentTools?{recentTools:q.recentTools.map((E)=>({...E}))}:{},...q.recentOutput?{recentOutput:[...q.recentOutput]}:{},...q.turnCount!==void 0?{turnCount:q.turnCount}:{},...q.toolCount!==void 0?{toolCount:q.toolCount}:{},...q.steerCount!==void 0?{steerCount:q.steerCount}:{},...q.lastSteerAt!==void 0?{lastSteerAt:q.lastSteerAt}:{},...q.durationMs!==void 0?{durationMs:q.durationMs}:{},...q.tokens?{tokens:q.tokens}:{},...q.totalCost?{totalCost:q.totalCost}:{},...q.skills?{skills:q.skills}:{},...q.model?{model:q.model}:{},...q.thinking?{thinking:q.thinking}:{},...q.attemptedModels?{attemptedModels:q.attemptedModels}:{},...q.error?{error:q.error}:{},...q.timedOut!==void 0?{timedOut:q.timedOut}:{},...q.turnBudget?{turnBudget:q.turnBudget}:{},...q.turnBudgetExceeded!==void 0?{turnBudgetExceeded:q.turnBudgetExceeded}:{},...q.wrapUpRequested!==void 0?{wrapUpRequested:q.wrapUpRequested}:{},...q.children?.length?{children:q.children}:{}}});return m$(f.runId||C.basename($),U,H),{id:f.runId||C.basename($),asyncDir:$,...f.sessionId?{sessionId:f.sessionId}:{},state:f.state,...f.error?{error:f.error}:{},activityState:Q,lastActivityAt:Z,currentTool:f.currentTool,currentToolStartedAt:f.currentToolStartedAt,currentPath:f.currentPath,turnCount:f.turnCount,toolCount:f.toolCount,steerCount:f.steerCount,lastSteerAt:f.lastSteerAt,mode:f.mode,cwd:f.cwd,startedAt:f.startedAt,lastUpdate:f.lastUpdate,endedAt:f.endedAt,...f.timeoutMs!==void 0?{timeoutMs:f.timeoutMs}:{},...f.deadlineAt!==void 0?{deadlineAt:f.deadlineAt}:{},...f.timedOut!==void 0?{timedOut:f.timedOut}:{},...f.turnBudget?{turnBudget:f.turnBudget}:{},...f.turnBudgetExceeded!==void 0?{turnBudgetExceeded:f.turnBudgetExceeded}:{},...f.wrapUpRequested!==void 0?{wrapUpRequested:f.wrapUpRequested}:{},currentStep:f.currentStep,...f.chainStepCount!==void 0?{chainStepCount:f.chainStepCount}:{},...f.pendingAppends!==void 0?{pendingAppends:f.pendingAppends}:{},...K.length?{parallelGroups:K}:{},steps:U,...H.length?{nestedChildren:H}:{},...j.length?{nestedWarnings:j}:{},...f.sessionDir?{sessionDir:f.sessionDir}:{},...f.outputFile?{outputFile:f.outputFile}:{},...f.totalTokens?{totalTokens:f.totalTokens}:{},...f.totalCost?{totalCost:f.totalCost}:{},...f.sessionFile?{sessionFile:f.sessionFile}:{}}}function c0($){let f=(j)=>{switch(j){case"running":return 0;case"queued":return 1;case"failed":return 2;case"paused":return 2;case"complete":return 3}};return[...$].sort((j,J)=>{let Q=f(j.state)-f(J.state);if(Q!==0)return Q;let Z=j.lastUpdate??j.endedAt??j.startedAt;return(J.lastUpdate??J.endedAt??J.startedAt)-Z})}function O$($,f={}){let j;try{j=d.readdirSync($).filter((K)=>k0($,K))}catch(K){if(W$(K))return[];throw Error(`Failed to list async runs in '${$}': ${h(K)}`,{cause:K instanceof Error?K:void 0})}let J=f.states?new Set(f.states):void 0,Q=[],Z,X=(K)=>{if(!Z)Z=g$();return Z.get(K)};for(let K of j){let H=C.join($,K),q=(f.reconcile===!1?void 0:H$(H,{resultsDir:f.resultsDir,kill:f.kill,now:f.now}))?.status??A$(H);if(!q)continue;if(J&&!J.has(q.state))continue;if(f.sessionId&&q.sessionId!==f.sessionId)continue;let z=[],W;try{if(W=X(q.runId||C.basename(H)),W)n$(W,{resultsDir:f.resultsDir,kill:f.kill,now:f.now})}catch(E){z.push(`Nested status unavailable: ${h(E)}`)}let L=m0(H,q,z,W);Q.push(L)}let B=c0(Q);return f.limit!==void 0?B.slice(0,f.limit):B}var u$=["queued","running"],h0=1800000,d0=250,o0=1000,n0=[F$,T$,_$,C$];function u0($,f){return new Promise((j)=>{if(f?.aborted){j();return}let J=setTimeout(()=>{f?.removeEventListener("abort",Q),j()},$),Q=()=>{clearTimeout(J),j()};f?.addEventListener("abort",Q,{once:!0})})}function l0($,f,j){let J=j.sleep??u0,Q=j.events;if(!Q)return J($,f);return new Promise((Z)=>{let X=!1,B=[],K=new AbortController,H=()=>{if(X)return;X=!0,K.abort(),f?.removeEventListener("abort",H);for(let U of B)try{U()}catch{}Z()};if(f?.aborted){H();return}f?.addEventListener("abort",H,{once:!0});for(let U of n0)try{B.push(Q.on(U,H))}catch{}J($,K.signal).then(H)})}function l$($,f){return $.id===f||$.id.startsWith(f)}function $$($){return $.activityState==="needs_attention"}function G$($,f){let j=f.asyncDirRoot??u,J=f.resultsDir??I,Q=O$(j,{states:[...u$],sessionId:f.state.currentSessionId??void 0,resultsDir:J,kill:f.kill,now:f.now});return $.id?Q.filter((Z)=>l$(Z,$.id)):Q}function p0($,f,j){return G$($,f).filter((J)=>$$(J)&&j.has(J.id))}function r0($,f){let j=f.asyncDirRoot??u,J=f.resultsDir??I,Q=O$(j,{sessionId:f.state.currentSessionId??void 0,resultsDir:J,kill:f.kill,now:f.now});return $.id?Q.filter((Z)=>l$(Z,$.id)):Q}function i0($){if($.length===0)return"";let f={complete:0,failed:0,paused:0};for(let J of $)if(J.state in f)f[J.state]+=1;let j=[];if(f.complete)j.push(`${f.complete} complete`);if(f.failed)j.push(`${f.failed} failed`);if(f.paused)j.push(`${f.paused} paused`);return j.join(", ")}function y($,f=!1){return{content:[{type:"text",text:$}],...f?{isError:!0}:{},details:{mode:"management",results:[]}}}async function Nj($,f,j){let J=j.now??Date.now,Q=Math.max(d0,j.pollIntervalMs??o0),Z=$.timeoutMs!==void 0&&$.timeoutMs>0?$.timeoutMs:h0,X=J(),B=$.id?!0:$.all===!0,K;try{K=G$($,j)}catch(G){return y(G instanceof Error?G.message:String(G),!0)}if(K.length===0){let G=$.id?`No active run matched "${$.id}". Nothing to wait for.`:"No active async runs in this session. Nothing to wait for.";return y(G)}if($.id){let G=K.filter((A)=>A.id===$.id);if(G.length===1)K=G;else if(K.length>1)return y(`Ambiguous async run id prefix "${$.id}" matched ${K.length} active runs: ${K.map((A)=>A.id).join(", ")}. Pass a longer id.`,!0)}let H=$.id?{...$,id:K[0].id}:$,U=new Set(K.map((G)=>G.id)),q=U.size,z=K.filter((G)=>!$$(G)),W=(G,A)=>{if(A.length>0)return!0;if(B)return G.every((f$)=>!U.has(f$.id));return G.filter((f$)=>U.has(f$.id)).length<q},L=K.filter((G)=>$$(G));while(!W(z,L)){if(f?.aborted){let G=z.map((A)=>`${A.id} (${A.state})`).join(", ");return y(`Wait aborted after ${P(J()-X)}. Still active: ${G}.`,!0)}if(J()-X>=Z){let G=z.map((A)=>`${A.id} (${A.state})`).join(", ");return y(`Wait timed out after ${P(Z)} with ${z.length} run(s) still active: ${G}. The runs are detached and keep going; call wait again or inspect with subagent({ action: "status" }).`,!0)}await l0(Q,f,j);try{K=G$(H,j),z=K.filter((G)=>!$$(G)),L=p0(H,j,U)}catch(G){return y(G instanceof Error?G.message:String(G),!0)}}let E="",o=0;try{let A=r0(H,j).filter((g)=>!u$.includes(g.state)&&U.has(g.id));o=A.length,E=i0(A)}catch{}let U$=L.length>0?` ${L.length} run(s) need attention: ${L.map((G)=>G.id).join(", ")} — inspect with subagent({ action: "status" }) then nudge/resume/interrupt.`:"",V$=z.filter((G)=>U.has(G.id)).length,L$=P(J()-X),M$=E?` Outcome: ${E}.`:"";if(B){let G=$.id?`run "${$.id}"`:`${q} async run(s)`,A=L.length>0?"attention required":"done",g=L.length>0?"Relevant completion/control events have been observed; inspect status if the notification is not visible yet.":"Completion events have been observed; inspect status if the notification is not visible yet.";return y(`Waited ${L$} for ${G}; ${A}.${M$}${U$} ${g}`)}let p$=V$>0?` ${V$} run(s) still in flight — call wait again to catch the next one.`:L.length>0?" No other runs are waitable until attention is handled.":" No runs remain in flight.",r$=L.length>0&&o===0?`${L.length} of ${q} run(s) need attention`:`${o} of ${q} run(s) finished`,i$=o>0?" Completion events for the finished run(s) have been observed; inspect status if the notification is not visible yet.":" Relevant control events have been observed; inspect status if the notification is not visible yet.";return y(`Waited ${L$}; ${r$}.${M$}${U$}${p$}${i$}`)}export{Nj as waitForSubagents};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import{matchesKey as F,visibleWidth as P,truncateToWidth as H}from"@duckmind/dm-tui";var I=["off","minimal","low","medium","high","xhigh"];function u(j){let J=j.lastIndexOf(":");if(J===-1)return{baseModel:j,thinkingSuffix:""};let Q=I.find((X)=>X===j.substring(J+1));if(!Q)return{baseModel:j,thinkingSuffix:""};return{baseModel:j.substring(0,J),thinkingSuffix:`:${Q}`}}function g(j,J,Q){if(!j||!J||J.length===0)return;let{baseModel:X}=u(j),Z=J.find((Y)=>Y.fullId===X);if(Z)return Z;let $=J.filter((Y)=>Y.id===X);if(Q){let Y=$.find((U)=>U.provider===Q);if(Y)return Y}return $.length===1?$[0]:void 0}function b(j){if(!j)return[...I];if(j.reasoning===!1)return["off"];if(!j.thinkingLevelMap)return[...I];return I.filter((Q)=>{let X=j.thinkingLevelMap?.[Q];if(X===null)return!1;if(Q==="xhigh")return X!==void 0;return!0})}function S(j){let J=j.lastIndexOf(":");if(J===-1)return{baseModel:j,thinkingSuffix:""};return{baseModel:j.substring(0,J),thinkingSuffix:j.substring(J)}}function K(j){return j.toLowerCase().replace(/[._]+/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"")}function p(j,J,Q){let X=Number(j),Z=Number(J),$=Number(Q);return X>=1900&&X<=2099&&Z>=1&&Z<=12&&$>=1&&$<=31}function c(j){let J=/^(.*)-(\d{4})-(\d{2})-(\d{2})$/.exec(j);if(J&&p(J[2],J[3],J[4]))return J[1];let Q=/^(.*)-(\d{4})(\d{2})(\d{2})$/.exec(j);if(Q&&p(Q[2],Q[3],Q[4]))return Q[1];return j}function m(j,J,Q){if(j.includes("/")){let X=J.find((Z)=>Z.fullId===j);if(X)return X.fullId}else{let X=J.filter((Z)=>Z.id===j);if(Q){let Z=X.find(($)=>$.provider===Q);if(Z)return Z.fullId}if(X.length===1)return X[0].fullId}return Jj(j,J,Q)}function Jj(j,J,Q){let X,Z=j,$=j.indexOf("/");if($!==-1)X=K(j.slice(0,$)),Z=j.slice($+1);else{let G=[":","."];for(let z of G){let A=j.indexOf(z);if(A<=0)continue;let B=K(j.slice(0,A));if(!J.some((D)=>K(D.provider)===B))continue;X=B,Z=j.slice(A+1);break}}let Y=K(Z),U=c(Y),_=J.filter((G)=>{let z=K(G.id);if(z!==Y&&c(z)!==U)return!1;if(X!==void 0&&K(G.provider)!==X)return!1;return!0});if(_.length===0)return;if(Q){let G=K(Q),z=_.find((A)=>K(A.provider)===G);if(z)return z.fullId}if(_.length===1)return _[0].fullId;return}function h(j,J,Q){if(!j)return;if(!J||J.length===0)return j;let X=m(j,J,Q);if(X)return X;let{baseModel:Z,thinkingSuffix:$}=S(j);if(!$)return j;let Y=m(Z,J,Q);if(Y)return`${Y}${$}`;return j}function x(j=""){return{buffer:j,cursor:0,viewportOffset:0}}function W(j,J){if(J<=0)return{lines:[j],starts:[0]};if(j.length===0)return{lines:[""],starts:[0]};let Q=[],X=[],Z=0,$=j.split(`
|
|
2
|
+
`);for(let[Y,U]of $.entries()){if(U.length===0)X.push(Z),Q.push("");else{let _=0,G=0,z=0;while(G<U.length){let A=String.fromCodePoint(U.codePointAt(G)),B=P(A);if(z>0&&z+B>J){X.push(Z+_),Q.push(U.slice(_,G)),_=G,z=0;continue}G+=A.length,z+=B}X.push(Z+_),Q.push(U.slice(_))}Z+=U.length+(Y<$.length-1?1:0)}if(!j.endsWith(`
|
|
3
|
+
`)&&j.length>0&&P(Q[Q.length-1]??"")===J)X.push(j.length),Q.push("");return{lines:Q,starts:X}}function L(j,J){for(let Q=J.length-1;Q>=0;Q--)if(j>=J[Q])return{line:Q,col:j-J[Q]};return{line:0,col:0}}function Qj(j,J,Q){if(j<Q)return Math.max(0,j);if(j>=Q+J)return Math.max(0,j-J+1);return Math.max(0,Q)}function M(j){let J=j.charCodeAt(0);return J>=48&&J<=57||J>=65&&J<=90||J>=97&&J<=122||J===95}function n(j,J){let Q=J;while(Q>0&&!M(j[Q-1]))Q--;while(Q>0&&M(j[Q-1]))Q--;return Q}function Xj(j,J){let Q=J;while(Q<j.length&&M(j[Q]))Q++;while(Q<j.length&&!M(j[Q]))Q++;return Q}function Zj(j){let J=j.split("\x1B[200~").join("").split("\x1B[201~").join("");J=J.replace(/\r\n/g,`
|
|
4
|
+
`).replace(/\r/g,`
|
|
5
|
+
`);let Q=J.indexOf(`
|
|
6
|
+
`);if(Q!==-1)J=J.slice(0,Q);if(J=J.replace(/\t/g," "),J.length===0)return null;for(let X=0;X<J.length;X++)if(J.charCodeAt(X)<32)return null;return J}function $j(j,J,Q){if(F(J,"escape")||F(J,"ctrl+c")||F(J,"return"))return null;let{lines:X,starts:Z}=W(j.buffer,Q),$=L(j.cursor,Z);if(F(J,"alt+left")||F(J,"ctrl+left"))return{...j,cursor:n(j.buffer,j.cursor)};if(F(J,"alt+right")||F(J,"ctrl+right"))return{...j,cursor:Xj(j.buffer,j.cursor)};if(F(J,"left"))return j.cursor>0?{...j,cursor:j.cursor-1}:j;if(F(J,"right"))return j.cursor<j.buffer.length?{...j,cursor:j.cursor+1}:j;if(F(J,"up")&&$.line>0){let U=$.line-1;return{...j,cursor:Z[U]+Math.min($.col,X[U]?.length??0)}}if(F(J,"down")&&$.line<X.length-1){let U=$.line+1;return{...j,cursor:Z[U]+Math.min($.col,X[U]?.length??0)}}if(F(J,"home"))return{...j,cursor:Z[$.line]};if(F(J,"end"))return{...j,cursor:Z[$.line]+(X[$.line]?.length??0)};if(F(J,"ctrl+home"))return{...j,cursor:0};if(F(J,"ctrl+end"))return{...j,cursor:j.buffer.length};if(F(J,"alt+backspace")){let U=n(j.buffer,j.cursor);return U===j.cursor?j:{...j,buffer:j.buffer.slice(0,U)+j.buffer.slice(j.cursor),cursor:U}}if(F(J,"backspace"))return j.cursor>0?{...j,buffer:j.buffer.slice(0,j.cursor-1)+j.buffer.slice(j.cursor),cursor:j.cursor-1}:j;if(F(J,"delete"))return j.cursor<j.buffer.length?{...j,buffer:j.buffer.slice(0,j.cursor)+j.buffer.slice(j.cursor+1)}:j;let Y=Zj(J);return Y?{...j,buffer:j.buffer.slice(0,j.cursor)+Y+j.buffer.slice(j.cursor),cursor:j.cursor+Y.length}:null}function Uj(j,J){let Q=j.slice(0,J),X=j[J]??" ",Z=j.slice(J+1);return`${Q}\x1B[7m${X}\x1B[27m${Z}`}function Yj(j,J,Q){let{lines:X,starts:Z}=W(j.buffer,J),$=L(j.cursor,Z),Y=[];for(let U=0;U<Q;U++){let _=j.viewportOffset+U,G=_<X.length?X[_]??"":"";if(_===$.line)G=Uj(G,$.col);Y.push(G)}return Y}class Fj{width=84;selectedStep=0;editingStep=null;editMode="template";editState=x();EDIT_VIEWPORT_HEIGHT=12;behaviorOverrides=new Map;modelSearchQuery="";modelSelectedIndex=0;filteredModels=[];MODEL_SELECTOR_HEIGHT=10;thinkingSelectedIndex=0;skillSearchQuery="";skillSelectedNames=new Set;skillCursorIndex=0;filteredSkills=[];noticeMessage=null;noticeMessageTimer=null;runInBackground=!1;tui;theme;agentConfigs;templates;originalTask;chainDir;resolvedBehaviors;availableModels;preferredProvider;availableSkills;done;mode;constructor(j,J,Q,X,Z,$,Y,U,_,G,z,A="chain"){this.tui=j,this.theme=J,this.agentConfigs=Q,this.templates=X,this.originalTask=Z,this.chainDir=$,this.resolvedBehaviors=Y,this.availableModels=U,this.preferredProvider=_,this.availableSkills=G,this.done=z,this.mode=A,this.filteredModels=[...U],this.filteredSkills=[...G]}pad(j,J){let Q=P(j);return j+" ".repeat(Math.max(0,J-Q))}row(j){let J=this.width-2;return this.theme.fg("border","│")+this.pad(j,J)+this.theme.fg("border","│")}renderHeader(j){let J=this.width-2,Q=Math.max(0,J-P(j)),X=Math.floor(Q/2),Z=Q-X;return this.theme.fg("border","╭"+"─".repeat(X))+this.theme.fg("accent",j)+this.theme.fg("border","─".repeat(Z)+"╮")}renderFooter(j){let J=this.width-2,Q=Math.max(0,J-P(j)),X=Math.floor(Q/2),Z=Q-X;return this.theme.fg("border","╰"+"─".repeat(X))+this.theme.fg("dim",j)+this.theme.fg("border","─".repeat(Z)+"╯")}exitEditMode(){this.editingStep=null,this.editState=x(),this.tui.requestRender()}renderFullEditMode(){let j=this.width-2,J=j-2,Q=[],{lines:X,starts:Z}=W(this.editState.buffer,J),$=L(this.editState.cursor,Z);this.editState={...this.editState,viewportOffset:Qj($.line,this.EDIT_VIEWPORT_HEIGHT,this.editState.viewportOffset)};let Y=this.editMode==="template"?"task":this.editMode,U=this.agentConfigs[this.editingStep]?.name??"unknown",_=j-30,G=U.length>_?U.slice(0,_-1)+"…":U,z=this.mode==="single"?G:this.mode==="parallel"?`Task ${this.editingStep+1}: ${G}`:`Step ${this.editingStep+1}: ${G}`,A=` Editing ${Y} (${z}) `;Q.push(this.renderHeader(A)),Q.push(this.row(""));let B=Yj(this.editState,J,this.EDIT_VIEWPORT_HEIGHT);for(let C of B)Q.push(this.row(` ${C}`));let D=X.length-this.editState.viewportOffset-this.EDIT_VIEWPORT_HEIGHT,R=D>0,O=this.editState.viewportOffset>0,V="";if(O)V+="↑";if(R)V+=`↓ ${D}+`;Q.push(this.row(""));let q=V?` [Esc] Done • [Ctrl+C] Discard • ${V} `:" [Esc] Done • [Ctrl+C] Discard ";return Q.push(this.renderFooter(q)),Q}getEffectiveBehavior(j){let J=this.resolvedBehaviors[j],Q=this.behaviorOverrides.get(j);if(!Q)return J;return{output:Q.output!==void 0?Q.output:J.output,outputMode:J.outputMode,reads:Q.reads!==void 0?Q.reads:J.reads,progress:Q.progress!==void 0?Q.progress:J.progress,skills:Q.skills!==void 0?Q.skills:J.skills,model:Q.model!==void 0?Q.model:J.model}}getEffectiveModel(j){let J=this.behaviorOverrides.get(j);if(J?.model)return this.resolveModelFullId(J.model);let Q=this.resolvedBehaviors[j]?.model;if(Q)return this.resolveModelFullId(Q);return"default"}resolveModelFullId(j){return h(j,this.availableModels,this.preferredProvider)??j}updateBehavior(j,J,Q){let X=this.behaviorOverrides.get(j)??{};this.behaviorOverrides.set(j,{...X,[J]:Q})}showNotice(j,J){if(this.noticeMessage={text:j,type:J},this.noticeMessageTimer)clearTimeout(this.noticeMessageTimer);this.noticeMessageTimer=setTimeout(()=>{this.noticeMessage=null,this.noticeMessageTimer=null,this.tui.requestRender()},2000),this.tui.requestRender()}handleInput(j){if(this.editingStep!==null){if(this.editMode==="model")this.handleModelSelectorInput(j);else if(this.editMode==="thinking")this.handleThinkingSelectorInput(j);else if(this.editMode==="skills")this.handleSkillSelectorInput(j);else this.handleEditInput(j);return}if(F(j,"escape")||F(j,"ctrl+c")){this.done({confirmed:!1,templates:[],behaviorOverrides:[]});return}if(F(j,"return")){let J=[];for(let Q=0;Q<this.agentConfigs.length;Q++)J.push(this.behaviorOverrides.get(Q));this.done({confirmed:!0,templates:this.templates,behaviorOverrides:J,runInBackground:this.runInBackground});return}if(F(j,"up")){this.selectedStep=Math.max(0,this.selectedStep-1),this.tui.requestRender();return}if(F(j,"down")){let J=Math.max(0,this.agentConfigs.length-1);this.selectedStep=Math.min(J,this.selectedStep+1),this.tui.requestRender();return}if(j==="e"){this.enterEditMode("template");return}if(j==="m"){this.enterModelSelector();return}if(j==="t"){this.enterThinkingSelector();return}if(j==="s"){this.editingStep=this.selectedStep,this.editMode="skills",this.skillSearchQuery="",this.skillCursorIndex=0,this.filteredSkills=[...this.availableSkills];let J=this.getEffectiveBehavior(this.selectedStep).skills;if(this.skillSelectedNames.clear(),J!==!1&&J.length>0)J.forEach((Q)=>this.skillSelectedNames.add(Q));this.tui.requestRender();return}if(j==="w"&&this.mode!=="parallel"){this.enterEditMode("output");return}if(j==="r"&&this.mode==="chain"){this.enterEditMode("reads");return}if(j==="p"&&this.mode==="chain"){let Q=!this.agentConfigs.some((X,Z)=>this.getEffectiveBehavior(Z).progress);for(let X=0;X<this.agentConfigs.length;X++)this.updateBehavior(X,"progress",Q);this.tui.requestRender();return}if(j==="b"){this.runInBackground=!this.runInBackground,this.tui.requestRender();return}}enterEditMode(j){this.editingStep=this.selectedStep,this.editMode=j;let J="";if(j==="template")J=(this.templates[this.selectedStep]??"").split(`
|
|
7
|
+
`)[0]??"";else if(j==="output"){let Q=this.getEffectiveBehavior(this.selectedStep);J=Q.output===!1?"":Q.output||""}else if(j==="reads"){let Q=this.getEffectiveBehavior(this.selectedStep);J=Q.reads===!1?"":Q.reads?.join(", ")||""}this.editState=x(J),this.tui.requestRender()}enterModelSelector(){this.editingStep=this.selectedStep,this.editMode="model",this.modelSearchQuery="",this.modelSelectedIndex=0,this.filteredModels=[...this.availableModels];let j=S(this.getEffectiveModel(this.selectedStep)).baseModel,J=this.filteredModels.findIndex((Q)=>Q.fullId===j||Q.id===j);if(J>=0)this.modelSelectedIndex=J;this.tui.requestRender()}filterModels(){let j=this.modelSearchQuery.toLowerCase();if(!j)this.filteredModels=[...this.availableModels];else this.filteredModels=this.availableModels.filter((J)=>J.fullId.toLowerCase().includes(j)||J.id.toLowerCase().includes(j)||J.provider.toLowerCase().includes(j));this.modelSelectedIndex=Math.min(this.modelSelectedIndex,Math.max(0,this.filteredModels.length-1))}handleModelSelectorInput(j){if(F(j,"escape")||F(j,"ctrl+c")){this.exitEditMode();return}if(F(j,"return")){let J=this.filteredModels[this.modelSelectedIndex];if(J){let{thinkingSuffix:Q}=S(this.getEffectiveModel(this.editingStep)),X=Q.slice(1),Z=g(J.fullId,this.availableModels,this.preferredProvider),$=b(Z).some((Y)=>Y===X)?Q:"";this.updateBehavior(this.editingStep,"model",`${J.fullId}${$}`)}this.exitEditMode();return}if(F(j,"up")){if(this.filteredModels.length>0)this.modelSelectedIndex=this.modelSelectedIndex===0?this.filteredModels.length-1:this.modelSelectedIndex-1;this.tui.requestRender();return}if(F(j,"down")){if(this.filteredModels.length>0)this.modelSelectedIndex=this.modelSelectedIndex===this.filteredModels.length-1?0:this.modelSelectedIndex+1;this.tui.requestRender();return}if(F(j,"backspace")){if(this.modelSearchQuery.length>0)this.modelSearchQuery=this.modelSearchQuery.slice(0,-1),this.filterModels();this.tui.requestRender();return}if(j.length===1&&j.charCodeAt(0)>=32){this.modelSearchQuery+=j,this.filterModels(),this.tui.requestRender();return}}getAvailableThinkingLevels(j){return b(g(this.getEffectiveModel(j),this.availableModels,this.preferredProvider))}enterThinkingSelector(){if(!this.getEffectiveBehavior(this.selectedStep).model){this.showNotice("Select a model first","error");return}this.editingStep=this.selectedStep,this.editMode="thinking";let j=this.getAvailableThinkingLevels(this.selectedStep),{thinkingSuffix:J}=S(this.getEffectiveModel(this.selectedStep)),Q=J.slice(1),X=j.findIndex((Z)=>Z===Q);this.thinkingSelectedIndex=X>=0?X:Math.max(0,j.indexOf("off")),this.tui.requestRender()}handleThinkingSelectorInput(j){if(F(j,"escape")||F(j,"ctrl+c")){this.exitEditMode();return}let J=this.getAvailableThinkingLevels(this.editingStep);if(J.length===0)return;if(F(j,"return")){let Q=J[this.thinkingSelectedIndex]??"off";this.applyThinkingLevel(Q),this.exitEditMode();return}if(F(j,"up")){this.thinkingSelectedIndex=this.thinkingSelectedIndex===0?J.length-1:this.thinkingSelectedIndex-1,this.tui.requestRender();return}if(F(j,"down")){this.thinkingSelectedIndex=this.thinkingSelectedIndex===J.length-1?0:this.thinkingSelectedIndex+1,this.tui.requestRender();return}}applyThinkingLevel(j){let J=this.editingStep,Q=this.getEffectiveBehavior(J).model;if(!Q)return;let{baseModel:X}=S(Q),Z=j==="off"?X:`${X}:${j}`;this.updateBehavior(J,"model",Z)}filterSkills(){let j=this.skillSearchQuery.toLowerCase();if(!j)this.filteredSkills=[...this.availableSkills];else this.filteredSkills=this.availableSkills.filter((J)=>J.name.toLowerCase().includes(j)||(J.description?.toLowerCase().includes(j)??!1));this.skillCursorIndex=Math.min(this.skillCursorIndex,Math.max(0,this.filteredSkills.length-1))}handleSkillSelectorInput(j){if(F(j,"escape")||F(j,"ctrl+c")){this.exitEditMode();return}if(F(j,"return")){let J=[...this.skillSelectedNames];this.updateBehavior(this.editingStep,"skills",J),this.exitEditMode();return}if(j===" "){if(this.filteredSkills.length>0){let J=this.filteredSkills[this.skillCursorIndex];if(J)if(this.skillSelectedNames.has(J.name))this.skillSelectedNames.delete(J.name);else this.skillSelectedNames.add(J.name)}this.tui.requestRender();return}if(F(j,"up")){if(this.filteredSkills.length>0)this.skillCursorIndex=this.skillCursorIndex===0?this.filteredSkills.length-1:this.skillCursorIndex-1;this.tui.requestRender();return}if(F(j,"down")){if(this.filteredSkills.length>0)this.skillCursorIndex=this.skillCursorIndex===this.filteredSkills.length-1?0:this.skillCursorIndex+1;this.tui.requestRender();return}if(F(j,"backspace")){if(this.skillSearchQuery.length>0)this.skillSearchQuery=this.skillSearchQuery.slice(0,-1),this.filterSkills();this.tui.requestRender();return}if(j.length===1&&j.charCodeAt(0)>=32){this.skillSearchQuery+=j,this.filterSkills(),this.tui.requestRender();return}}handleEditInput(j){let J=this.width-4;if(F(j,"shift+up")||F(j,"pageup")){let{lines:X,starts:Z}=W(this.editState.buffer,J),$=L(this.editState.cursor,Z),Y=Math.max(0,$.line-this.EDIT_VIEWPORT_HEIGHT),U=Math.min($.col,X[Y]?.length??0);this.editState={...this.editState,cursor:Z[Y]+U},this.tui.requestRender();return}if(F(j,"shift+down")||F(j,"pagedown")){let{lines:X,starts:Z}=W(this.editState.buffer,J),$=L(this.editState.cursor,Z),Y=Math.min(X.length-1,$.line+this.EDIT_VIEWPORT_HEIGHT),U=Math.min($.col,X[Y]?.length??0);this.editState={...this.editState,cursor:Z[Y]+U},this.tui.requestRender();return}if(F(j,"tab"))return;let Q=$j(this.editState,j,J);if(Q){this.editState=Q,this.tui.requestRender();return}if(F(j,"escape")){this.saveEdit(),this.exitEditMode();return}if(F(j,"ctrl+c")){this.exitEditMode();return}}saveEdit(){let j=this.editingStep;if(this.editMode==="template"){let Q=(this.templates[j]??"").split(`
|
|
8
|
+
`);Q[0]=this.editState.buffer,this.templates[j]=Q.join(`
|
|
9
|
+
`)}else if(this.editMode==="output"){let J=this.getEffectiveBehavior(j),Q=typeof J.output==="string"?J.output:null,X=this.editState.buffer.trim(),Z=X===""?!1:X;if(this.updateBehavior(j,"output",Z),Q&&typeof Z==="string"&&Q!==Z)this.propagateOutputChange(j,Q,Z)}else if(this.editMode==="reads"){let J=this.editState.buffer.trim();if(J==="")this.updateBehavior(j,"reads",!1);else{let Q=J.split(",").map((X)=>X.trim()).filter((X)=>X!=="");this.updateBehavior(j,"reads",Q.length>0?Q:!1)}}}propagateOutputChange(j,J,Q){for(let X=j+1;X<this.agentConfigs.length;X++){let Z=this.getEffectiveBehavior(X);if(Z.reads===!1||!Z.reads||Z.reads.length===0)continue;let $=Z.reads,Y=$.indexOf(J);if(Y!==-1){let U=[...$];U[Y]=Q,this.updateBehavior(X,"reads",U)}}}render(j){if(this.editingStep!==null){if(this.editMode==="model")return this.renderModelSelector();if(this.editMode==="thinking")return this.renderThinkingSelector();if(this.editMode==="skills")return this.renderSkillSelector();return this.renderFullEditMode()}switch(this.mode){case"single":return this.renderSingleMode();case"parallel":return this.renderParallelMode();case"chain":return this.renderChainMode()}}renderModelSelector(){let j=this.theme,J=[],Q=this.agentConfigs[this.editingStep]?.name??"unknown",Z=` Select Model (${this.mode==="single"?Q:this.mode==="parallel"?`Task ${this.editingStep+1}: ${Q}`:`Step ${this.editingStep+1}: ${Q}`}) `;J.push(this.renderHeader(Z)),J.push(this.row(""));let $=j.fg("dim","Search: "),Y="\x1B[7m \x1B[27m",U=this.modelSearchQuery+Y;J.push(this.row(` ${$}${U}`)),J.push(this.row(""));let _=this.getEffectiveModel(this.editingStep),G=S(_).baseModel,z=j.fg("dim","Current: ");if(J.push(this.row(` ${z}${j.fg("warning",_)}`)),J.push(this.row("")),this.filteredModels.length===0)J.push(this.row(` ${j.fg("dim","No matching models")}`));else{let R=this.MODEL_SELECTOR_HEIGHT,O=0;if(this.filteredModels.length>R)O=Math.max(0,this.modelSelectedIndex-Math.floor(R/2)),O=Math.min(O,this.filteredModels.length-R);let V=Math.min(O+R,this.filteredModels.length);if(O>0)J.push(this.row(` ${j.fg("dim",` ↑ ${O} more`)}`));for(let C=O;C<V;C++){let E=this.filteredModels[C],N=C===this.modelSelectedIndex,T=E.fullId===G||E.id===G,k=N?j.fg("accent","→ "):" ",w=N?j.fg("accent",E.id):E.id,v=j.fg("dim",` [${E.provider}]`),f=T?j.fg("success"," current"):"";J.push(this.row(` ${k}${w}${v}${f}`))}let q=this.filteredModels.length-V;if(q>0)J.push(this.row(` ${j.fg("dim",` ↓ ${q} more`)}`))}let A=J.length,B=18;for(let R=A;R<B;R++)J.push(this.row(""));let D=" [Enter] Select • [Esc] Cancel • Type to search ";return J.push(this.renderFooter(D)),J}renderThinkingSelector(){let j=this.theme,J=[],Q=this.agentConfigs[this.editingStep]?.name??"unknown",Z=` Thinking Level (${this.mode==="single"?Q:this.mode==="parallel"?`Task ${this.editingStep+1}: ${Q}`:`Step ${this.editingStep+1}: ${Q}`}) `;J.push(this.renderHeader(Z)),J.push(this.row(""));let $=this.getEffectiveModel(this.editingStep),Y=j.fg("dim","Model: ");J.push(this.row(` ${Y}${j.fg("accent",$)}`)),J.push(this.row("")),J.push(this.row(` ${j.fg("dim","Select thinking level (extended thinking budget):")}`)),J.push(this.row(""));let U={off:"No extended thinking",minimal:"Brief reasoning",low:"Light reasoning",medium:"Moderate reasoning",high:"Deep reasoning",xhigh:"Maximum reasoning (ultrathink)"},_=this.getAvailableThinkingLevels(this.editingStep);if(_.length===0)J.push(this.row(` ${j.fg("dim","No supported thinking levels")}`));else for(let B=0;B<_.length;B++){let D=_[B],R=B===this.thinkingSelectedIndex,O=R?j.fg("accent","→ "):" ",V=R?j.fg("accent",D):D,q=j.fg("dim",` - ${U[D]}`);J.push(this.row(` ${O}${V}${q}`))}let G=J.length,z=16;for(let B=G;B<z;B++)J.push(this.row(""));let A=_.length===0?" [Esc] Cancel ":" [Enter] Select • [Esc] Cancel • ↑↓ Navigate ";return J.push(this.renderFooter(A)),J}renderSkillSelector(){let j=this.width-2,J=this.theme,Q=[],X=this.agentConfigs[this.editingStep]?.name??"unknown",Z=this.mode==="single"?X:this.mode==="parallel"?`Task ${this.editingStep+1}: ${X}`:`Step ${this.editingStep+1}: ${X}`;Q.push(this.renderHeader(` Select Skills (${Z}) `)),Q.push(this.row(""));let $="\x1B[7m \x1B[27m";Q.push(this.row(` ${J.fg("dim","Search: ")}${this.skillSearchQuery}${$}`)),Q.push(this.row(""));let Y=[...this.skillSelectedNames].join(", ")||J.fg("dim","(none)");Q.push(this.row(` ${J.fg("dim","Selected: ")}${H(Y,j-12)}`)),Q.push(this.row(""));let U=10;if(this.filteredSkills.length===0)Q.push(this.row(` ${J.fg("dim","No matching skills")}`));else{let G=0;if(this.filteredSkills.length>U)G=Math.max(0,this.skillCursorIndex-Math.floor(U/2)),G=Math.min(G,this.filteredSkills.length-U);let z=Math.min(G+U,this.filteredSkills.length);if(G>0)Q.push(this.row(` ${J.fg("dim",` ↑ ${G} more`)}`));for(let B=G;B<z;B++){let D=this.filteredSkills[B],R=B===this.skillCursorIndex,O=this.skillSelectedNames.has(D.name),V=R?J.fg("accent","→ "):" ",q=O?J.fg("success","[x]"):"[ ]",C=R?J.fg("accent",D.name):D.name,E=J.fg("dim",` [${D.source}]`),N=D.description?J.fg("dim",` - ${H(D.description,25)}`):"";Q.push(this.row(` ${V}${q} ${C}${E}${N}`))}let A=this.filteredSkills.length-z;if(A>0)Q.push(this.row(` ${J.fg("dim",` ↓ ${A} more`)}`))}let _=18;for(let G=Q.length;G<_;G++)Q.push(this.row(""));return Q.push(this.renderFooter(" [Enter] Confirm • [Space] Toggle • [Esc] Cancel ")),Q}getFooterText(){let j=this.runInBackground?"[b]g:ON":"[b]g";switch(this.mode){case"single":return` [Enter] Run • [Esc] Cancel • e m t w s ${j} `;case"parallel":return` [Enter] Run • [Esc] Cancel • e m t s ${j} • ↑↓ Nav `;case"chain":return` [Enter] Run • [Esc] Cancel • e m t w r p s ${j} • ↑↓ Nav `}}appendNotice(j){if(!this.noticeMessage)return;let J=this.noticeMessage.type==="error"?"error":"success";j.push(this.row(` ${this.theme.fg(J,this.noticeMessage.text)}`))}renderSingleMode(){let j=this.width-2,J=this.theme,Q=[],X=this.agentConfigs[0]?.name??"unknown",Z=j-4,$=` Agent: ${H(X,Z-9)} `;Q.push(this.renderHeader($)),Q.push(this.row(""));let Y=this.agentConfigs[0],U=this.getEffectiveBehavior(0),_=Y.name;Q.push(this.row(` ${J.fg("accent","▶ "+_)}`));let G=(this.templates[0]??"").split(`
|
|
10
|
+
`)[0]??"",z=J.fg("dim","task: ");Q.push(this.row(` ${z}${H(G,j-12)}`));let A=this.getEffectiveModel(0),R=this.behaviorOverrides.get(0)?.model!==void 0?J.fg("warning",A)+J.fg("dim"," ✎"):A,O=J.fg("dim","model: ");Q.push(this.row(` ${O}${H(R,j-13)}`));let V=U.output===!1?J.fg("dim","(disabled)"):U.output||J.fg("dim","(none)"),q=J.fg("dim","writes: ");Q.push(this.row(` ${q}${H(V,j-14)}`));let C=U.skills===!1?J.fg("dim","(disabled)"):U.skills?.length?U.skills.join(", "):J.fg("dim","(none)"),E=J.fg("dim","skills: ");return Q.push(this.row(` ${E}${H(C,j-14)}`)),Q.push(this.row("")),this.appendNotice(Q),Q.push(this.renderFooter(this.getFooterText())),Q}renderParallelMode(){let j=this.width-2,J=this.theme,Q=[],X=` Parallel Tasks (${this.agentConfigs.length}) `;Q.push(this.renderHeader(X)),Q.push(this.row(""));for(let Z=0;Z<this.agentConfigs.length;Z++){let $=this.agentConfigs[Z],Y=Z===this.selectedStep,U=Y?"accent":"dim",_=Y?"▶ ":" ",G=`Task ${Z+1}: `,z=j-4-_.length-G.length,A=$.name.length>z?$.name.slice(0,z-1)+"…":$.name,B=`${G}${A}`;Q.push(this.row(` ${J.fg(U,_+B)}`));let D=(this.templates[Z]??"").split(`
|
|
11
|
+
`)[0]??"",R=J.fg("dim","task: ");Q.push(this.row(` ${R}${H(D,j-12)}`));let O=this.getEffectiveModel(Z),C=this.behaviorOverrides.get(Z)?.model!==void 0?J.fg("warning",O)+J.fg("dim"," ✎"):O,E=J.fg("dim","model: ");Q.push(this.row(` ${E}${H(C,j-13)}`));let N=this.getEffectiveBehavior(Z),T=N.skills===!1?J.fg("dim","(disabled)"):N.skills?.length?N.skills.join(", "):J.fg("dim","(none)"),k=J.fg("dim","skills: ");Q.push(this.row(` ${k}${H(T,j-14)}`)),Q.push(this.row(""))}return this.appendNotice(Q),Q.push(this.renderFooter(this.getFooterText())),Q}renderChainMode(){let j=this.width-2,J=this.theme,Q=[],X=this.agentConfigs.map((z)=>z.name).join(" → "),Z=j-4,$=` Chain: ${H(X,Z-9)} `;Q.push(this.renderHeader($)),Q.push(this.row(""));let Y=H(this.originalTask,j-16);Q.push(this.row(` Original Task: ${Y}`));let U=H(this.chainDir??"",j-12);Q.push(this.row(` Chain Dir: ${J.fg("dim",U)}`));let _=this.agentConfigs.some((z,A)=>this.getEffectiveBehavior(A).progress),G=_?J.fg("success","enabled"):J.fg("dim","disabled");Q.push(this.row(` Progress: ${G} ${J.fg("dim","(press [p] to toggle)")}`)),Q.push(this.row(""));for(let z=0;z<this.agentConfigs.length;z++){let A=this.agentConfigs[z],B=z===this.selectedStep,D=this.getEffectiveBehavior(z),R=B?"accent":"dim",O=B?"▶ ":" ",V=`Step ${z+1}: `,q=j-4-O.length-V.length,C=A.name.length>q?A.name.slice(0,q-1)+"…":A.name,E=`${V}${C}`;Q.push(this.row(` ${J.fg(R,O+E)}`));let T=((this.templates[z]??"").split(`
|
|
12
|
+
`)[0]??"").replace(/\{task\}/g,J.fg("success","{task}")).replace(/\{previous\}/g,J.fg("warning","{previous}")).replace(/\{chain_dir\}/g,J.fg("accent","{chain_dir}")),k=J.fg("dim","task: ");Q.push(this.row(` ${k}${H(T,j-12)}`));let w=this.getEffectiveModel(z),o=this.behaviorOverrides.get(z)?.model!==void 0?J.fg("warning",w)+J.fg("dim"," ✎"):w,l=J.fg("dim","model: ");Q.push(this.row(` ${l}${H(o,j-13)}`));let d=D.output===!1?J.fg("dim","(disabled)"):D.output||J.fg("dim","(none)"),i=J.fg("dim","writes: ");Q.push(this.row(` ${i}${H(d,j-14)}`));let r=D.reads===!1?J.fg("dim","(disabled)"):D.reads&&D.reads.length>0?D.reads.join(", "):J.fg("dim","(none)"),s=J.fg("dim","reads: ");Q.push(this.row(` ${s}${H(r,j-13)}`));let a=D.skills===!1?J.fg("dim","(disabled)"):D.skills?.length?D.skills.join(", "):J.fg("dim","(none)"),t=J.fg("dim","skills: ");if(Q.push(this.row(` ${t}${H(a,j-14)}`)),_){let y=z===0?J.fg("success","writes progress.md"):J.fg("accent","reads progress.md"),jj=J.fg("dim","progress: ");Q.push(this.row(` ${jj}${y}`))}if(z<this.agentConfigs.length-1){if((this.templates[z+1]??"").includes("{previous}")){let y=J.fg("dim"," ↳ response → ")+J.fg("warning","{previous}");Q.push(this.row(y))}}Q.push(this.row(""))}return this.appendNotice(Q),Q.push(this.renderFooter(this.getFooterText())),Q}invalidate(){}dispose(){if(this.noticeMessageTimer)clearTimeout(this.noticeMessageTimer);this.noticeMessageTimer=null}}export{Fj as ChainClarifyComponent};
|