@phamvuhoang/otto-core 0.17.0 → 0.19.0

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.
Files changed (70) hide show
  1. package/dist/cli-help.d.ts +23 -0
  2. package/dist/cli-help.d.ts.map +1 -1
  3. package/dist/cli-help.js +38 -1
  4. package/dist/cli-help.js.map +1 -1
  5. package/dist/console-ui.d.ts +32 -0
  6. package/dist/console-ui.d.ts.map +1 -0
  7. package/dist/console-ui.js +154 -0
  8. package/dist/console-ui.js.map +1 -0
  9. package/dist/fanout.d.ts +56 -0
  10. package/dist/fanout.d.ts.map +1 -0
  11. package/dist/fanout.js +119 -0
  12. package/dist/fanout.js.map +1 -0
  13. package/dist/index.d.ts +7 -0
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +7 -0
  16. package/dist/index.js.map +1 -1
  17. package/dist/loop.d.ts +19 -1
  18. package/dist/loop.d.ts.map +1 -1
  19. package/dist/loop.js +125 -32
  20. package/dist/loop.js.map +1 -1
  21. package/dist/model-tier.d.ts +69 -0
  22. package/dist/model-tier.d.ts.map +1 -0
  23. package/dist/model-tier.js +101 -0
  24. package/dist/model-tier.js.map +1 -0
  25. package/dist/next-action.d.ts +2 -0
  26. package/dist/next-action.d.ts.map +1 -0
  27. package/dist/next-action.js +23 -0
  28. package/dist/next-action.js.map +1 -0
  29. package/dist/plan-progress.d.ts +36 -0
  30. package/dist/plan-progress.d.ts.map +1 -0
  31. package/dist/plan-progress.js +43 -0
  32. package/dist/plan-progress.js.map +1 -0
  33. package/dist/plan-tasks.d.ts +44 -0
  34. package/dist/plan-tasks.d.ts.map +1 -0
  35. package/dist/plan-tasks.js +167 -0
  36. package/dist/plan-tasks.js.map +1 -0
  37. package/dist/run-bin.d.ts.map +1 -1
  38. package/dist/run-bin.js +22 -0
  39. package/dist/run-bin.js.map +1 -1
  40. package/dist/run-view.d.ts +71 -0
  41. package/dist/run-view.d.ts.map +1 -0
  42. package/dist/run-view.js +190 -0
  43. package/dist/run-view.js.map +1 -0
  44. package/dist/runner.d.ts +22 -14
  45. package/dist/runner.d.ts.map +1 -1
  46. package/dist/runner.js +18 -26
  47. package/dist/runner.js.map +1 -1
  48. package/dist/stage-exec.d.ts +16 -0
  49. package/dist/stage-exec.d.ts.map +1 -1
  50. package/dist/stage-exec.js +32 -1
  51. package/dist/stage-exec.js.map +1 -1
  52. package/dist/stages.d.ts +18 -0
  53. package/dist/stages.d.ts.map +1 -1
  54. package/dist/stages.js +17 -0
  55. package/dist/stages.js.map +1 -1
  56. package/dist/stream-render.d.ts +1 -0
  57. package/dist/stream-render.d.ts.map +1 -1
  58. package/dist/stream-render.js +1 -1
  59. package/dist/stream-render.js.map +1 -1
  60. package/dist/tail.d.ts +25 -0
  61. package/dist/tail.d.ts.map +1 -0
  62. package/dist/tail.js +75 -0
  63. package/dist/tail.js.map +1 -0
  64. package/dist/worktree.d.ts +24 -0
  65. package/dist/worktree.d.ts.map +1 -0
  66. package/dist/worktree.js +43 -0
  67. package/dist/worktree.js.map +1 -0
  68. package/package.json +1 -1
  69. package/templates/plan.md +26 -4
  70. package/templates/subtask.md +32 -0
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Shared display model for P10 live execution visualization (issue #65).
3
+ *
4
+ * `RunView` is the pure data model built from a `RunManifest` + `StageRecord`s.
5
+ * `buildRunView` constructs it; `formatDoneCard` and `formatLiveTree` render it.
6
+ *
7
+ * All TTY styling goes through `stream-render.ts` primitives so `NO_COLOR` /
8
+ * non-TTY automatically degrades to clean ANSI-free lines.
9
+ */
10
+ import type { PlanProgress } from "./plan-progress.js";
11
+ import type { RunManifest, StageRecord } from "./run-report.js";
12
+ import type { TokenUsage } from "./tokens.js";
13
+ /** A single stage entry in the view's stage list. */
14
+ export type RunViewStage = {
15
+ iteration: number;
16
+ stage: string;
17
+ isError: boolean;
18
+ };
19
+ /**
20
+ * The shared view model that the done card, live console, and `otto-tail` all
21
+ * render from — one source of truth built from the evidence bundle.
22
+ */
23
+ export type RunView = {
24
+ runId: string;
25
+ bin: string;
26
+ mode: string;
27
+ /** "running" while the manifest has no `finishedAt`; "failed" for error exits; else "done". */
28
+ status: "running" | "done" | "failed";
29
+ /** Iterations completed so far (0 when un-finalized). */
30
+ iterationsDone: number;
31
+ /** Planned total iteration count for this run. */
32
+ iterationsTotal: number;
33
+ /** Cumulative USD cost from the manifest. */
34
+ costUsd: number;
35
+ /** Full token usage breakdown from the manifest. */
36
+ tokenUsage: TokenUsage;
37
+ /** Wall-clock duration in ms; null when un-finalized or timestamps unparseable, never NaN. */
38
+ elapsedMs: number | null;
39
+ /** Terminal exit reason string, or null while running. */
40
+ exitReason: string | null;
41
+ /** Maintainer-facing next-action hint, or null while running. */
42
+ nextAction: string | null;
43
+ /** Per-stage records in execution order. */
44
+ stages: RunViewStage[];
45
+ /** Plan-checklist progress when supplied by the caller; omitted otherwise. */
46
+ planProgress?: PlanProgress;
47
+ /** True when the bundle carries a review-followups artifact. */
48
+ hasFollowups: boolean;
49
+ };
50
+ /**
51
+ * Build a `RunView` from a `RunManifest` and its stage records.
52
+ * Pure: no I/O, no mutation, never throws.
53
+ */
54
+ export declare function buildRunView(manifest: RunManifest, stages: StageRecord[], opts?: {
55
+ planProgress?: PlanProgress;
56
+ }): RunView;
57
+ /**
58
+ * Render the completion card for a finished run.
59
+ *
60
+ * FIRST LINE: `Otto <reason> · N iteration(s) · $<cost>` — the greppable
61
+ * substring that `loop.test.ts` and any log-scraper key on. Must be preserved
62
+ * verbatim (separator is ` · `, cost is `toFixed(2)`).
63
+ */
64
+ export declare function formatDoneCard(view: RunView): string;
65
+ /**
66
+ * Render a glanceable live-tree view of an in-progress or completed run.
67
+ * Shows a status header, iteration → stage tree, running cost/tokens/elapsed,
68
+ * and plan progress when present.
69
+ */
70
+ export declare function formatLiveTree(view: RunView): string;
71
+ //# sourceMappingURL=run-view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-view.d.ts","sourceRoot":"","sources":["../src/run-view.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAWhE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAQ9C,qDAAqD;AACrD,MAAM,MAAM,YAAY,GAAG;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,OAAO,GAAG;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,+FAA+F;IAC/F,MAAM,EAAE,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC;IACtC,yDAAyD;IACzD,cAAc,EAAE,MAAM,CAAC;IACvB,kDAAkD;IAClD,eAAe,EAAE,MAAM,CAAC;IACxB,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,oDAAoD;IACpD,UAAU,EAAE,UAAU,CAAC;IACvB,8FAA8F;IAC9F,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,0DAA0D;IAC1D,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,iEAAiE;IACjE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,4CAA4C;IAC5C,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,8EAA8E;IAC9E,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,gEAAgE;IAChE,YAAY,EAAE,OAAO,CAAC;CACvB,CAAC;AAaF;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,WAAW,EACrB,MAAM,EAAE,WAAW,EAAE,EACrB,IAAI,GAAE;IAAE,YAAY,CAAC,EAAE,YAAY,CAAA;CAAO,GACzC,OAAO,CA4CT;AAqBD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CA+CpD;AAMD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CA2DpD"}
@@ -0,0 +1,190 @@
1
+ /**
2
+ * Shared display model for P10 live execution visualization (issue #65).
3
+ *
4
+ * `RunView` is the pure data model built from a `RunManifest` + `StageRecord`s.
5
+ * `buildRunView` constructs it; `formatDoneCard` and `formatLiveTree` render it.
6
+ *
7
+ * All TTY styling goes through `stream-render.ts` primitives so `NO_COLOR` /
8
+ * non-TTY automatically degrades to clean ANSI-free lines.
9
+ */
10
+ import { bold, boldOut, dim, dimOut, green, greenOut, SYM, SYM_OUT, } from "./stream-render.js";
11
+ import { formatTokenUsage } from "./tokens.js";
12
+ import { nextActionFor } from "./next-action.js";
13
+ // ---------------------------------------------------------------------------
14
+ // Exit-reason classification
15
+ // ---------------------------------------------------------------------------
16
+ /** Exit reasons that map to "failed" status. Mirrors the failure notion in loop.ts. */
17
+ const FAILED_REASONS = new Set(["done with failures", "stopped (error)"]);
18
+ // ---------------------------------------------------------------------------
19
+ // buildRunView
20
+ // ---------------------------------------------------------------------------
21
+ /**
22
+ * Build a `RunView` from a `RunManifest` and its stage records.
23
+ * Pure: no I/O, no mutation, never throws.
24
+ */
25
+ export function buildRunView(manifest, stages, opts = {}) {
26
+ const running = manifest.finishedAt == null;
27
+ const exitReason = manifest.exitReason ?? null;
28
+ let status;
29
+ if (running) {
30
+ status = "running";
31
+ }
32
+ else if (exitReason != null && FAILED_REASONS.has(exitReason)) {
33
+ status = "failed";
34
+ }
35
+ else {
36
+ status = "done";
37
+ }
38
+ const elapsedMs = computeElapsedMs(manifest.startedAt, manifest.finishedAt);
39
+ const hasFollowups = manifest.artifacts.some((a) => a.kind === "review-followups");
40
+ const view = {
41
+ runId: manifest.runId,
42
+ bin: manifest.bin,
43
+ mode: manifest.mode,
44
+ status,
45
+ iterationsDone: manifest.completedIterations ?? 0,
46
+ iterationsTotal: manifest.iterations,
47
+ costUsd: manifest.costUsd,
48
+ tokenUsage: manifest.tokenUsage,
49
+ elapsedMs,
50
+ exitReason,
51
+ nextAction: manifest.nextAction ?? null,
52
+ stages: stages.map((s) => ({
53
+ iteration: s.iteration,
54
+ stage: s.stage,
55
+ isError: s.isError,
56
+ })),
57
+ hasFollowups,
58
+ };
59
+ if (opts.planProgress !== undefined) {
60
+ view.planProgress = opts.planProgress;
61
+ }
62
+ return view;
63
+ }
64
+ // ---------------------------------------------------------------------------
65
+ // elapsedMs helper — mirrors eval.ts discipline: null not NaN
66
+ // ---------------------------------------------------------------------------
67
+ function computeElapsedMs(startedAt, finishedAt) {
68
+ if (finishedAt == null)
69
+ return null;
70
+ const start = Date.parse(startedAt);
71
+ const end = Date.parse(finishedAt);
72
+ if (Number.isNaN(start) || Number.isNaN(end))
73
+ return null;
74
+ return end - start;
75
+ }
76
+ // ---------------------------------------------------------------------------
77
+ // formatDoneCard
78
+ // ---------------------------------------------------------------------------
79
+ /**
80
+ * Render the completion card for a finished run.
81
+ *
82
+ * FIRST LINE: `Otto <reason> · N iteration(s) · $<cost>` — the greppable
83
+ * substring that `loop.test.ts` and any log-scraper key on. Must be preserved
84
+ * verbatim (separator is ` · `, cost is `toFixed(2)`).
85
+ */
86
+ export function formatDoneCard(view) {
87
+ const reason = view.exitReason ?? "done";
88
+ const n = view.iterationsDone;
89
+ const iters = `${n} iteration${n === 1 ? "" : "s"}`;
90
+ const cost = `$${view.costUsd.toFixed(2)}`;
91
+ // Greppable first line — same shape as loop.ts summarize().
92
+ const firstLine = `${greenOut(SYM_OUT.bullet)} ${boldOut(`Otto ${reason}`)}` +
93
+ `${dimOut(` · ${iters} · ${cost}`)}`;
94
+ const lines = [firstLine];
95
+ // Stage summary — what landed
96
+ if (view.stages.length > 0) {
97
+ const errorStages = view.stages.filter((s) => s.isError);
98
+ if (errorStages.length > 0) {
99
+ const names = errorStages.map((s) => s.stage).join(", ");
100
+ lines.push(`${dimOut(` ${SYM.cross} ${errorStages.length} stage error${errorStages.length === 1 ? "" : "s"}: ${names}`)}`);
101
+ }
102
+ else {
103
+ const stageCount = view.stages.length;
104
+ lines.push(`${dimOut(` ${SYM.check} ${stageCount} stage${stageCount === 1 ? "" : "s"} completed`)}`);
105
+ }
106
+ }
107
+ // Plan progress
108
+ if (view.planProgress) {
109
+ const { checked, total } = view.planProgress;
110
+ lines.push(`${dimOut(` plan: ${checked}/${total} tasks checked`)}`);
111
+ }
112
+ // Deferred follow-ups note
113
+ if (view.hasFollowups) {
114
+ lines.push(`${dimOut(` follow-ups in .otto/review-followups.md — review before next run`)}`);
115
+ }
116
+ // Next-action hint
117
+ const nextAction = view.nextAction ?? nextActionFor(reason);
118
+ lines.push(`${dimOut(` → next: ${nextAction}`)}`);
119
+ return lines.join("\n");
120
+ }
121
+ // ---------------------------------------------------------------------------
122
+ // formatLiveTree
123
+ // ---------------------------------------------------------------------------
124
+ /**
125
+ * Render a glanceable live-tree view of an in-progress or completed run.
126
+ * Shows a status header, iteration → stage tree, running cost/tokens/elapsed,
127
+ * and plan progress when present.
128
+ */
129
+ export function formatLiveTree(view) {
130
+ const lines = [];
131
+ // Status header
132
+ const statusLabel = view.status === "running"
133
+ ? bold("running")
134
+ : view.status === "failed"
135
+ ? bold("failed")
136
+ : green("done");
137
+ const runtimeLabel = `${view.bin} · ${statusLabel}`;
138
+ lines.push(`${dim("─")} ${runtimeLabel} ${dim(`[${view.runId}]`)}`);
139
+ // Progress line: iterations + cost
140
+ const iterLine = `iter ${view.iterationsDone}/${view.iterationsTotal}`;
141
+ const costLine = `$${view.costUsd.toFixed(2)}`;
142
+ const tokenLine = formatTokenUsage(view.tokenUsage);
143
+ let metricsLine = `${dim(iterLine)} ${dim(costLine)} ${dim(tokenLine)}`;
144
+ if (view.elapsedMs != null) {
145
+ metricsLine += ` ${dim(formatElapsed(view.elapsedMs))}`;
146
+ }
147
+ lines.push(` ${metricsLine}`);
148
+ // Stage tree grouped by iteration
149
+ if (view.stages.length > 0) {
150
+ // Collect unique iterations in order
151
+ const seenIter = new Set();
152
+ const iterStages = new Map();
153
+ for (const s of view.stages) {
154
+ if (!seenIter.has(s.iteration)) {
155
+ seenIter.add(s.iteration);
156
+ iterStages.set(s.iteration, []);
157
+ }
158
+ iterStages.get(s.iteration).push(s);
159
+ }
160
+ for (const [iter, stgs] of iterStages) {
161
+ lines.push(` ${dim(`iter ${iter}`)}`);
162
+ for (const s of stgs) {
163
+ const marker = s.isError
164
+ ? dim(SYM.cross)
165
+ : dim(SYM.check);
166
+ lines.push(` ${marker} ${s.isError ? bold(s.stage) : dim(s.stage)}`);
167
+ }
168
+ }
169
+ }
170
+ // Plan progress
171
+ if (view.planProgress) {
172
+ const { checked, total } = view.planProgress;
173
+ const pct = total > 0 ? ` (${Math.round((checked / total) * 100)}%)` : "";
174
+ lines.push(` ${dim(`plan: ${checked}/${total} tasks${pct}`)}`);
175
+ }
176
+ return lines.join("\n");
177
+ }
178
+ // ---------------------------------------------------------------------------
179
+ // Helpers
180
+ // ---------------------------------------------------------------------------
181
+ /** Format elapsed milliseconds as a human-readable string. */
182
+ function formatElapsed(ms) {
183
+ if (ms < 60_000)
184
+ return `${Math.round(ms / 1000)}s`;
185
+ const totalSec = Math.round(ms / 1000);
186
+ const min = Math.floor(totalSec / 60);
187
+ const sec = totalSec % 60;
188
+ return `${min}m${sec > 0 ? `${sec}s` : ""}`;
189
+ }
190
+ //# sourceMappingURL=run-view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-view.js","sourceRoot":"","sources":["../src/run-view.ts"],"names":[],"mappings":"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"}
package/dist/runner.d.ts CHANGED
@@ -1,12 +1,25 @@
1
1
  import { type AgentRuntimeId } from "./agent-runtime.js";
2
+ import { resolveModelSelection } from "./model-tier.js";
2
3
  import type { ContextBreakdown } from "./context-report.js";
3
4
  import type { SafetyEvent } from "./run-report.js";
4
5
  import type { Stage } from "./stages.js";
6
+ import { type EventSink } from "./console-ui.js";
5
7
  import { type TokenUsage } from "./tokens.js";
6
8
  export type RunStageOptions = {
7
9
  signal?: AbortSignal;
8
10
  /** Agent runtime to drive the stage with; defaults to the Claude adapter. */
9
11
  runtime?: AgentRuntime;
12
+ /** In-run console sink (issue #65 P10). Absent → a fresh VerboseSink, so a
13
+ * sink-less run renders exactly as before. */
14
+ sink?: EventSink;
15
+ /** Per-stage model spec (issue #66 P11). When set, overrides the env-based
16
+ * resolveModelSelection — the caller (executeStage) has already applied the
17
+ * pin > route > default precedence. Absent ⇒ today's env-based resolution. */
18
+ modelSpec?: string;
19
+ /** Extra sandbox write roots beyond the workspace (issue #66 P11). A fan-out
20
+ * sub-agent passes its parent repo so it can commit from its worktree (whose
21
+ * shared `.git` lives outside the worktree dir). Sandbox runner only. */
22
+ sandboxWriteRoots?: string[];
10
23
  };
11
24
  export type StageResult = {
12
25
  result: string;
@@ -22,6 +35,13 @@ export type StageResult = {
22
35
  /** Composition of the rendered prompt that drove this stage (issue #62 P7);
23
36
  * attributed by `analyzeContext` in `stage-exec.ts`, absent when not measured. */
24
37
  contextBreakdown?: ContextBreakdown;
38
+ /** Model tier this stage was routed to (issue #66 P11); absent when routing
39
+ * off or the stage has no declared tier. */
40
+ routedTier?: import("./model-tier.js").ModelTier;
41
+ /** Concrete model spec the routed tier resolved to (undefined ⇒ runtime default). */
42
+ routedModel?: string;
43
+ /** Where the model came from: "pin" | "route" | "default". */
44
+ modelSource?: string;
25
45
  };
26
46
  /**
27
47
  * Pure extraction of the fields Otto tracks from a stream-json `result` event.
@@ -55,19 +75,7 @@ export declare function parseGraceMs(raw: string | undefined, defaultMs?: number
55
75
  * the `claude` CLI owns that.
56
76
  */
57
77
  export declare function resolveModelArgs(raw: string | undefined): string[];
58
- /**
59
- * Resolve the model spec for the active runtime (issue #24 P3). A
60
- * provider-specific override (`OTTO_CLAUDE_MODEL` / `OTTO_CODEX_MODEL`) wins
61
- * over the provider-neutral `OTTO_MODEL`, so a user who keeps both runtimes
62
- * configured can pin a model per runtime. Returns the resolved spec plus the
63
- * env var it came from (for `--print-config`), or `undefined` when nothing is
64
- * set (the runtime's CLI default applies). Empty/whitespace overrides are
65
- * ignored so they fall through to the generic value.
66
- */
67
- export declare function resolveModelSelection(runtimeId: AgentRuntimeId, env?: NodeJS.ProcessEnv): {
68
- spec: string;
69
- source: string;
70
- } | undefined;
78
+ export { resolveModelSelection };
71
79
  export type Runner = "sandbox" | "host";
72
80
  /** `OTTO_RUNNER=host` → bare host run; anything else (incl. unset) → sandbox. */
73
81
  export declare function resolveRunner(raw: string | undefined): Runner;
@@ -80,7 +88,7 @@ export declare function resolveSandboxNet(raw: string | undefined): string[];
80
88
  * is the blast-radius control; network commands fall back to the bypass-approved
81
89
  * escape hatch).
82
90
  */
83
- export declare function buildSandboxSettings(workspaceDir: string, allowedDomains: string[]): Record<string, unknown>;
91
+ export declare function buildSandboxSettings(workspaceDir: string, allowedDomains: string[], extraWriteRoots?: string[]): Record<string, unknown>;
84
92
  export declare function stageLogPath(workspaceDir: string, iteration: number, stageName: string, runtimeId?: AgentRuntimeId): string;
85
93
  /**
86
94
  * Build the `claude` argv. Extracted as a pure helper so callers can unit-test
@@ -1 +1 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
package/dist/runner.js CHANGED
@@ -3,7 +3,9 @@ import { appendFileSync, closeSync, mkdirSync, openSync, rmSync, writeFileSync,
3
3
  import { createInterface } from "node:readline";
4
4
  import { join, posix } from "node:path";
5
5
  import { AGENT_DISPLAY_NAMES } from "./agent-runtime.js";
6
- import { boldOut, dim, renderEvent, SYM_OUT, } from "./stream-render.js";
6
+ import { resolveModelSelection } from "./model-tier.js";
7
+ import { boldOut, dim, SYM_OUT, } from "./stream-render.js";
8
+ import { VerboseSink } from "./console-ui.js";
7
9
  import { RateLimitError, isLimitResult, resetsAtFromEvent, } from "./rate-limit.js";
8
10
  import { emptyTokenUsage, parseTokenUsage } from "./tokens.js";
9
11
  /**
@@ -194,25 +196,10 @@ export function resolveModelArgs(raw) {
194
196
  return [];
195
197
  return ["--model", trimmed];
196
198
  }
197
- /**
198
- * Resolve the model spec for the active runtime (issue #24 P3). A
199
- * provider-specific override (`OTTO_CLAUDE_MODEL` / `OTTO_CODEX_MODEL`) wins
200
- * over the provider-neutral `OTTO_MODEL`, so a user who keeps both runtimes
201
- * configured can pin a model per runtime. Returns the resolved spec plus the
202
- * env var it came from (for `--print-config`), or `undefined` when nothing is
203
- * set (the runtime's CLI default applies). Empty/whitespace overrides are
204
- * ignored so they fall through to the generic value.
205
- */
206
- export function resolveModelSelection(runtimeId, env = process.env) {
207
- const specificVar = `OTTO_${runtimeId.toUpperCase()}_MODEL`;
208
- const specific = env[specificVar]?.trim();
209
- if (specific)
210
- return { spec: specific, source: specificVar };
211
- const generic = env.OTTO_MODEL?.trim();
212
- if (generic)
213
- return { spec: generic, source: "OTTO_MODEL" };
214
- return undefined;
215
- }
199
+ // Re-exported for back-compat: `resolveModelSelection` moved to model-tier.ts
200
+ // (issue #66 P11) to decouple the pin check from this mocked module, but
201
+ // existing importers (cli-help.ts, runner.test.ts) still reach it here.
202
+ export { resolveModelSelection };
216
203
  /** `OTTO_RUNNER=host` → bare host run; anything else (incl. unset) → sandbox. */
217
204
  export function resolveRunner(raw) {
218
205
  return raw?.trim() === "host" ? "host" : "sandbox";
@@ -236,10 +223,12 @@ const SANDBOX_EXCLUDED_COMMANDS = ["gh *", "gcloud *", "terraform *"];
236
223
  * is the blast-radius control; network commands fall back to the bypass-approved
237
224
  * escape hatch).
238
225
  */
239
- export function buildSandboxSettings(workspaceDir, allowedDomains) {
226
+ export function buildSandboxSettings(workspaceDir, allowedDomains, extraWriteRoots = []) {
240
227
  const sandbox = {
241
228
  enabled: true,
242
- filesystem: { allowWrite: [workspaceDir] },
229
+ // `extraWriteRoots` lets a fan-out sub-agent commit from a worktree whose
230
+ // shared `.git` lives in the parent repo, outside the worktree dir (#66 P11).
231
+ filesystem: { allowWrite: [workspaceDir, ...extraWriteRoots] },
243
232
  excludedCommands: SANDBOX_EXCLUDED_COMMANDS,
244
233
  };
245
234
  if (allowedDomains.length > 0) {
@@ -388,13 +377,14 @@ export async function runStage(stage, renderedPrompt, workspaceDir, iteration, s
388
377
  let settingsHostPath;
389
378
  if (runtime.supportsSandboxSettings &&
390
379
  resolveRunner(process.env.OTTO_RUNNER) === "sandbox") {
391
- const settings = buildSandboxSettings(workspaceDir, resolveSandboxNet(process.env.OTTO_SANDBOX_NET));
380
+ const settings = buildSandboxSettings(workspaceDir, resolveSandboxNet(process.env.OTTO_SANDBOX_NET), options.sandboxWriteRoots ?? []);
392
381
  settingsHostPath = join(tmpHostDir, `.sandbox-${process.pid}-${iteration}-${Date.now()}.json`);
393
382
  writeFileSync(settingsHostPath, JSON.stringify(settings), "utf8");
394
383
  }
395
384
  process.stderr.write(`${dim("log → " + logPath)}\n`);
396
385
  try {
397
- const argv = runtime.buildArgs(stage, promptRelPath, resolveModelArgs(resolveModelSelection(runtime.id)?.spec), settingsHostPath);
386
+ const modelSpec = options.modelSpec ?? resolveModelSelection(runtime.id)?.spec;
387
+ const argv = runtime.buildArgs(stage, promptRelPath, resolveModelArgs(modelSpec), settingsHostPath);
398
388
  return await streamRuntime(argv, workspaceDir, logPath, runtime, options);
399
389
  }
400
390
  finally {
@@ -411,7 +401,9 @@ function streamRuntime(argv, cwd, logPath, runtime, options = {}) {
411
401
  }
412
402
  return new Promise((resolve, reject) => {
413
403
  const logFd = openSync(logPath, "a");
414
- const toolMap = new Map();
404
+ // Resolve the in-run console sink once. No sink → VerboseSink, so a run with
405
+ // no sink renders exactly as before (issue #65 P10).
406
+ const sink = options.sink ?? new VerboseSink();
415
407
  const graceMs = parseGraceMs(process.env.OTTO_RESULT_GRACE_MS);
416
408
  const parseStreamEvent = runtime.createStreamParser?.();
417
409
  const settleFinalAfterGrace = () => {
@@ -516,7 +508,7 @@ function streamRuntime(argv, cwd, logPath, runtime, options = {}) {
516
508
  if (runtime.id === "codex")
517
509
  renderCodexEvent(parsed);
518
510
  else
519
- renderEvent(parsed, toolMap);
511
+ sink.onEvent(parsed);
520
512
  const runtimeReset = runtime.resetsAtFromEvent?.(parsed);
521
513
  if (runtimeReset != null)
522
514
  lastResetsAt = runtimeReset;
@@ -1 +1 @@
1
- {"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,8 @@
1
1
  import { type AgentRuntimeId } from "./agent-runtime.js";
2
+ import { type TierLadder } from "./model-tier.js";
3
+ import type { RiskAssessment } from "./risk.js";
2
4
  import { type StageResult } from "./runner.js";
5
+ import type { EventSink } from "./console-ui.js";
3
6
  import type { Stage } from "./stages.js";
4
7
  import type { TokenMode } from "./tokens.js";
5
8
  export type ExecuteStageOptions = {
@@ -15,6 +18,19 @@ export type ExecuteStageOptions = {
15
18
  logLabel?: string;
16
19
  /** Active runtime id; suffixes the NDJSON log filename so logs are runtime-labelled. */
17
20
  agentId?: AgentRuntimeId;
21
+ /** In-run console sink (issue #65 P10), threaded to runStage. Absent → runner default. */
22
+ sink?: EventSink;
23
+ /** Model routing on (issue #66 P11). Off ⇒ runtime default model (today's behavior). */
24
+ modelRouting?: boolean;
25
+ /** tier → model ladder; consulted only when routing resolves a tier. */
26
+ tierLadder?: TierLadder;
27
+ /** Change-risk assessment that modulates the routed tier (reused from the P2 router). */
28
+ riskAssessment?: RiskAssessment;
29
+ /** Repeated-failure escalation count that bumps the routed tier. */
30
+ escalations?: number;
31
+ /** Extra sandbox write roots (issue #66 P11): a fan-out sub-agent passes its
32
+ * parent repo so `git commit` from the worktree reaches the shared `.git`. */
33
+ sandboxWriteRoots?: string[];
18
34
  };
19
35
  /** Render a stage's template (inside the retry, so flaky shell tags retry) and run it. */
20
36
  export declare function executeStage(opts: ExecuteStageOptions): Promise<StageResult>;
@@ -1 +1 @@
1
- {"version":3,"file":"stage-exec.d.ts","sourceRoot":"","sources":["../src/stage-exec.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAKxE,OAAO,EAIL,KAAK,WAAW,EACjB,MAAM,aAAa,CAAC;AAOrB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,gGAAgG;IAChG,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wFAAwF;IACxF,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B,CAAC;AAcF,0FAA0F;AAC1F,wBAAsB,YAAY,CAChC,IAAI,EAAE,mBAAmB,GACxB,OAAO,CAAC,WAAW,CAAC,CAmFtB"}
1
+ {"version":3,"file":"stage-exec.d.ts","sourceRoot":"","sources":["../src/stage-exec.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAIxE,OAAO,EAAqB,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEhD,OAAO,EAIL,KAAK,WAAW,EACjB,MAAM,aAAa,CAAC;AAMrB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,gGAAgG;IAChG,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wFAAwF;IACxF,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,0FAA0F;IAC1F,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,wFAAwF;IACxF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,wEAAwE;IACxE,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,yFAAyF;IACzF,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,oEAAoE;IACpE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;mFAC+E;IAC/E,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC9B,CAAC;AAsBF,0FAA0F;AAC1F,wBAAsB,YAAY,CAChC,IAAI,EAAE,mBAAmB,GACxB,OAAO,CAAC,WAAW,CAAC,CA0GtB"}
@@ -4,10 +4,18 @@ import { DEFAULT_AGENT } from "./agent-runtime.js";
4
4
  import { analyzeContext } from "./context-report.js";
5
5
  import { applyPromptReduction } from "./prompt-reduction.js";
6
6
  import { renderTemplate } from "./render.js";
7
+ import { resolveStageModel } from "./model-tier.js";
7
8
  import { DEFAULT_BACKOFF_MS, backoffFor, withRetries } from "./retry.js";
8
9
  import { getAgentRuntime, runStage, stageLogPath, } from "./runner.js";
9
10
  import { readSafetyPolicy, } from "./safety-policy.js";
10
11
  import { USE_COLOR, dim } from "./stream-render.js";
12
+ /** Fallback ladder when routing is requested without one — every tier resolves
13
+ * to the runtime default (issue #66 P11). The real ladder comes from run-bin. */
14
+ const EMPTY_LADDER = {
15
+ cheap: undefined,
16
+ mid: undefined,
17
+ strong: undefined,
18
+ };
11
19
  /** A policy violation found at a shell/@spill tag becomes a `blocked` trajectory
12
20
  * safety event — the command was denied and skipped, so Otto prevented it. */
13
21
  function violationToSafetyEvent(v) {
@@ -50,12 +58,35 @@ export async function executeStage(opts) {
50
58
  const { originalChars, reducedChars, cacheHits } = reduced.stats;
51
59
  process.stderr.write(`${dim(`prompt reduce ${originalChars} -> ${reducedChars} chars | cache hits ${cacheHits}`)}\n`);
52
60
  }
53
- const result = await runStage(stage, prompt, workspaceDir, iteration, spillHostDir, stageLog, { signal, runtime });
61
+ // Route the model for this stage (issue #66 P11): a pin wins, else the
62
+ // declared tier through the ladder when routing is on, else runtime default.
63
+ const model = resolveStageModel({
64
+ runtimeId: opts.agentId ?? DEFAULT_AGENT,
65
+ stage,
66
+ routing: opts.modelRouting === true,
67
+ ladder: opts.tierLadder ?? EMPTY_LADDER,
68
+ assessment: opts.riskAssessment,
69
+ escalations: opts.escalations,
70
+ });
71
+ const result = await runStage(stage, prompt, workspaceDir, iteration, spillHostDir, stageLog, {
72
+ signal,
73
+ runtime,
74
+ sink: opts.sink,
75
+ modelSpec: model.spec,
76
+ sandboxWriteRoots: opts.sandboxWriteRoots,
77
+ });
54
78
  // Attribute the *final* prompt's window footprint by category (issue #62
55
79
  // P7). `prompt` is post-reduction, so the breakdown reflects what was sent.
56
80
  return {
57
81
  ...result,
58
82
  contextBreakdown: analyzeContext(prompt),
83
+ ...(model.tier
84
+ ? {
85
+ routedTier: model.tier,
86
+ routedModel: model.spec,
87
+ modelSource: model.source,
88
+ }
89
+ : {}),
59
90
  ...(violations.length > 0
60
91
  ? { safetyEvents: violations.map(violationToSafetyEvent) }
61
92
  : {}),