@bastani/atomic 0.9.5-alpha.1 → 0.9.5-alpha.3

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/CHANGELOG.md CHANGED
@@ -2,6 +2,18 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [0.9.5-alpha.3] - 2026-07-04
6
+
7
+ ### Changed
8
+
9
+ - Hardened the bundled workflows extension's workflow-tool prompt guidance against inline analysis-paralysis drift: the agent must now decide and state the inline-vs-workflow execution mode before its first tool call (reconnaissance explicitly counts as inline execution), budget pre-workflow scoping to a few quick reads that only sharpen the objective and validation criteria, course-correct after roughly ten deliverable-free exploration tool calls (or repeated "let me verify one more thing" loops) by writing findings to a context file and handing off to the best-fit workflow via `reads` (named or user-defined workflows discovered with `action: "list"` first, builtin `goal`/`ralph` as fallbacks when nothing more specific fits), and treat sunk inline research as transferable via files rather than a reason to stay inline. The same "Decide before you explore" and "Course-correct instead of drifting" guidance is mirrored in `docs/workflows.md` under "When to Use Workflows".
10
+
11
+ ## [0.9.5-alpha.2] - 2026-07-04
12
+
13
+ ### Changed
14
+
15
+ - Refreshed the July 2026 builtin workflow and subagent frontier model rosters bundled with Atomic: high-capacity synthesis, planning, debugging, and review paths now lead or fall back through Claude Fable 5 `:xhigh`, GPT-5.5 `:xhigh`, Opus 4.8 long-context `:xhigh`, GLM-5.2, and the valid OpenRouter Fugu Ultra mirror while keeping dominated or unsupported model IDs out of shipped chains.
16
+
5
17
  ## [0.9.5-alpha.1] - 2026-07-04
6
18
 
7
19
  ### Breaking Changes
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bastani/cursor",
3
- "version": "0.9.5-alpha.1",
3
+ "version": "0.9.5-alpha.3",
4
4
  "private": true,
5
5
  "description": "Experimental first-party Atomic extension for Cursor OAuth, model discovery, and streaming provider registration.",
6
6
  "contributors": [
@@ -40,7 +40,7 @@
40
40
  }
41
41
  },
42
42
  "dependencies": {
43
- "@bastani/atomic-natives": "0.9.5-alpha.1",
43
+ "@bastani/atomic-natives": "0.9.5-alpha.3",
44
44
  "@bufbuild/protobuf": "^2.12.1",
45
45
  "@earendil-works/pi-ai": "^0.80.3"
46
46
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bastani/intercom",
3
- "version": "0.9.5-alpha.1",
3
+ "version": "0.9.5-alpha.3",
4
4
  "private": true,
5
5
  "description": "Atomic extension providing a private coordination channel between parent and child agent sessions. Fork of: https://github.com/nicobailon/pi-intercom",
6
6
  "contributors": [
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bastani/mcp",
3
- "version": "0.9.5-alpha.1",
3
+ "version": "0.9.5-alpha.3",
4
4
  "private": true,
5
5
  "description": "Atomic extension that adapts MCP (Model Context Protocol) servers into the coding agent. Fork of: https://github.com/nicobailon/pi-mcp-adapter",
6
6
  "contributors": [
@@ -2,6 +2,12 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [0.9.5-alpha.2] - 2026-07-04
6
+
7
+ ### Changed
8
+
9
+ - Refreshed the builtin debugger agent's July 2026 frontier model roster: it now leads with Claude Fable 5 `:xhigh`, keeps GPT-5.5 `:xhigh`, Opus 4.8 long-context `:xhigh`, and GLM-5.2 fallbacks, and retains only the valid OpenRouter Fugu Ultra mirror rather than unsupported direct Sakana model IDs.
10
+
5
11
  ## [0.9.4] - 2026-07-03
6
12
 
7
13
  ### Added
@@ -2,8 +2,8 @@
2
2
  name: debugger
3
3
  description: Debug errors, test failures, and unexpected behavior. Use PROACTIVELY when encountering issues, analyzing stack traces, or investigating system problems.
4
4
  tools: read, search, find, ls, bash, web_search, fetch_content, get_search_content, intercom, contact_supervisor, todo
5
- model: openai-codex/gpt-5.5:xhigh
6
- fallbackModels: github-copilot/gpt-5.5:xhigh, openai/gpt-5.5:xhigh, anthropic/claude-fable-5:xhigh, github-copilot/claude-opus-4.8 (1m):high, anthropic/claude-opus-4-8:high, zai/glm-5.2:xhigh, zai-coding-cn/glm-5.2:xhigh, openrouter/openai/gpt-5.5:xhigh, openrouter/anthropic/claude-fable-5:xhigh, openrouter/anthropic/claude-opus-4-8:high, openrouter/z-ai/glm-5.2:xhigh
5
+ model: anthropic/claude-fable-5:xhigh
6
+ fallbackModels: openai-codex/gpt-5.5:xhigh, github-copilot/gpt-5.5:xhigh, openai/gpt-5.5:xhigh, github-copilot/claude-opus-4.8 (1m):xhigh, anthropic/claude-opus-4-8:xhigh, zai/glm-5.2:xhigh, zai-coding-cn/glm-5.2:xhigh, openrouter/anthropic/claude-fable-5:xhigh, openrouter/sakana/fugu-ultra:high, openrouter/openai/gpt-5.5:xhigh, openrouter/anthropic/claude-opus-4-8:xhigh, openrouter/z-ai/glm-5.2:xhigh
7
7
  skills: tdd, playwright-cli, tmux
8
8
  ---
9
9
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bastani/subagents",
3
- "version": "0.9.5-alpha.1",
3
+ "version": "0.9.5-alpha.3",
4
4
  "private": true,
5
5
  "description": "Atomic extension for delegating tasks to subagents with chains, parallel execution, and TUI clarification. Fork of: https://github.com/nicobailon/pi-subagents",
6
6
  "contributors": [
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bastani/web-access",
3
- "version": "0.9.5-alpha.1",
3
+ "version": "0.9.5-alpha.3",
4
4
  "private": true,
5
5
  "description": "Atomic extension for web search, URL fetching, GitHub repo cloning, PDF/video extraction. Fork of: https://github.com/nicobailon/pi-web-access",
6
6
  "contributors": [
@@ -6,6 +6,19 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.9.5-alpha.3] - 2026-07-04
10
+
11
+ ### Changed
12
+
13
+ - Hardened the workflow-tool prompt guidance against inline analysis-paralysis drift (observed in eval transcripts where an agent spent ~2 hours of pure reconnaissance on a workflow-fit task without ever considering a workflow): the agent must now decide and state the inline-vs-workflow execution mode before its first tool call (reconnaissance explicitly counts as inline execution), budget pre-workflow scoping to a few quick reads that only sharpen the objective and validation criteria, course-correct after roughly ten deliverable-free exploration tool calls (or repeated "let me verify one more thing" loops) by writing findings to a context file and handing off to the best-fit workflow via `reads` (named or user-defined workflows discovered with `action: "list"` first, builtin `goal`/`ralph` as fallbacks when nothing more specific fits), and treat sunk inline research as transferable via files rather than a reason to stay inline. Mirrored the same "Decide before you explore" and "Course-correct instead of drifting" guidance in `docs/workflows.md` under "When to Use Workflows".
14
+
15
+ ## [0.9.5-alpha.2] - 2026-07-04
16
+
17
+ ### Changed
18
+
19
+ - Refreshed the July 2026 frontier model rosters for the builtin Ralph, Goal, deep-research-codebase, and open-claude-design workflows: critical prompt-engineering, orchestration, planning, and review chains now use high-capacity Fable 5 `:xhigh` primaries or fallbacks with GPT-5.5, Opus 4.8 long-context `:xhigh`, GLM-5.2, and OpenRouter Fugu Ultra coverage, while Ralph research stays on the measured GPT-5.5 `:medium` / Fable 5 `:low` performance-per-dollar path and reviewer-C remains GLM-led for diversity.
20
+ - Updated workflow model-option schema documentation to show `:xhigh` long-context examples and kept the fallback fixtures aligned so unsupported direct `sakana/` IDs stay out of workflow chains while the valid `openrouter/sakana/fugu-ultra:high` mirror remains available.
21
+
9
22
  ## [0.9.5-alpha.1] - 2026-07-04
10
23
 
11
24
  ### Breaking Changes
@@ -32,21 +32,22 @@ export interface DeepResearchCodebaseResult {
32
32
  export const FILE_ONLY_OUTPUT = "file-only" satisfies WorkflowOutputMode;
33
33
 
34
34
  // Chains curated from Atomic's agentic-coding benchmark (see ralph-models.ts
35
- // for the frontier data and placement principle: only reviewers get
36
- // best-in-class models; the planner is a perf-per-dollar stage).
35
+ // for the frontier data). This planner uses the high-capacity synthesis roster
36
+ // because it performs cross-codebase planning before partition fan-out.
37
37
  export const PLANNER_MODEL_CONFIG = {
38
- model: "openai-codex/gpt-5.5:xhigh",
38
+ model: "anthropic/claude-fable-5:xhigh",
39
39
  fallbackModels: [
40
+ "openai-codex/gpt-5.5:xhigh",
40
41
  "github-copilot/gpt-5.5:xhigh",
41
42
  "openai/gpt-5.5:xhigh",
42
- "anthropic/claude-fable-5:xhigh",
43
- "github-copilot/claude-opus-4.8 (1m):high",
44
- "anthropic/claude-opus-4-8:high",
43
+ "github-copilot/claude-opus-4.8 (1m):xhigh",
44
+ "anthropic/claude-opus-4-8:xhigh",
45
45
  "zai/glm-5.2:xhigh",
46
46
  "zai-coding-cn/glm-5.2:xhigh",
47
- "openrouter/openai/gpt-5.5:xhigh",
48
47
  "openrouter/anthropic/claude-fable-5:xhigh",
49
- "openrouter/anthropic/claude-opus-4-8:high",
48
+ "openrouter/sakana/fugu-ultra:high",
49
+ "openrouter/openai/gpt-5.5:xhigh",
50
+ "openrouter/anthropic/claude-opus-4-8:xhigh",
50
51
  "openrouter/z-ai/glm-5.2:xhigh"
51
52
  ],
52
53
  excludedTools: ["ask_user_question"],
@@ -119,13 +119,14 @@ export async function runGoalWorkflow(ctx: GoalRunnerContext, options: GoalWorkf
119
119
  "openai-codex/gpt-5.5:xhigh",
120
120
  "github-copilot/gpt-5.5:xhigh",
121
121
  "openai/gpt-5.5:xhigh",
122
- "github-copilot/claude-opus-4.8 (1m):high",
123
- "anthropic/claude-opus-4-8:high",
122
+ "github-copilot/claude-opus-4.8 (1m):xhigh",
123
+ "anthropic/claude-opus-4-8:xhigh",
124
124
  "zai/glm-5.2:xhigh",
125
125
  "zai-coding-cn/glm-5.2:xhigh",
126
126
  "openrouter/anthropic/claude-fable-5:xhigh",
127
+ "openrouter/sakana/fugu-ultra:high",
127
128
  "openrouter/openai/gpt-5.5:xhigh",
128
- "openrouter/anthropic/claude-opus-4-8:high",
129
+ "openrouter/anthropic/claude-opus-4-8:xhigh",
129
130
  "openrouter/z-ai/glm-5.2:xhigh"
130
131
  ],
131
132
  tools: goalRunnerTools,
@@ -86,6 +86,7 @@ export async function runOpenClaudeDesignWorkflow(ctx: OpenClaudeDesignContext):
86
86
  "zai-coding-cn/glm-5.2:xhigh",
87
87
  "openrouter/anthropic/claude-fable-5:xhigh",
88
88
  "openrouter/anthropic/claude-opus-4-8:xhigh",
89
+ "openrouter/sakana/fugu-ultra:high",
89
90
  "openrouter/z-ai/glm-5.2:xhigh"
90
91
  ],
91
92
  };
@@ -1,41 +1,34 @@
1
1
  import { reviewDecisionSchema } from "./ralph-core.js";
2
2
 
3
- // Model chains are curated from Atomic's agentic-coding benchmark
4
- // (pass@1 / avg $ per task, 2026-07-02):
5
- // - Placement principle: REVIEWERS get best-in-class verification quality
6
- // (fable-5:xhigh 70%/$13.41 leads reviewer-A and the goal reviewer);
7
- // EVERY OTHER stage gets the best measured performance-per-dollar
8
- // (gpt-5.5:xhigh 67%/$7.23 for hard stages, gpt-5.5:medium 54%/$2.75 for
9
- // workhorse stages, gpt-5.5:low $1.20 for retrieval).
10
- // - Pareto frontier: gpt-5.5 low ($1.20/27%) → gpt-5.5 medium ($2.75/54%) →
11
- // fable-5 low ($3.76/60%) gpt-5.5 high ($5.10/64%) fable-5 medium
12
- // ($6.09/65%) gpt-5.5 xhigh ($7.23/67%) → fable-5 high ($9.18/69%) →
13
- // fable-5 xhigh ($13.41/70%).
14
- // - Dropped as strictly dominated: claude-sonnet-5 (40-54% at $4-26, up to
15
- // 268 steps), claude-sonnet-4.6 (30%/$5.52), gemini-3.1-pro (12%/$9.48),
16
- // gemini-3.5-flash (37%/$7.34, 276k output tokens).
17
- // - claude-opus-4.8 rides at :high — its value point (52%/$4.28); :xhigh
18
- // doubles the cost for +2pts.
19
- // - glm-5.2 is reviewer-C's diversity primary only (third model family
20
- // decorrelates review errors); elsewhere it is a budget fallback. Note:
21
- // GLM-5.2 has only two real reasoning tiers — its thinkingLevelMap collapses
3
+ // Model chains are curated from Atomic's agentic-coding benchmark and the
4
+ // July 2026 frontier refresh:
5
+ // - Critical synthesis/review stages prefer fable-5:xhigh, then gpt-5.5 xhigh
6
+ // variants, openrouter fugu-ultra, long-context opus, and GLM fallbacks.
7
+ // - Research remains on gpt-5.5:medium / fable-5:low for perf-per-dollar.
8
+ // - Reviewer B keeps gpt-5.5:xhigh as an independent frontier family;
9
+ // reviewer C leads with GLM-5.2 xhigh, with openrouter fugu-ultra retained
10
+ // mid-chain, to decorrelate review errors.
11
+ // - Dominated benchmark models stay out of the chains: claude-sonnet-5,
12
+ // claude-sonnet-4.6, gemini-3.1-pro, and gemini-3.5-flash.
13
+ // - GLM-5.2 has only two real reasoning tiers — its thinkingLevelMap collapses
22
14
  // minimal/low/medium/high to "high" and xhigh to "max" — so chains only use
23
15
  // :high (budget tier, 36%/$2.84) or :xhigh (best tier, 44%/$3.92); the
24
16
  // openrouter/z-ai mirror maps :xhigh exclusively, so it is always :xhigh.
25
17
 
26
18
  export const promptEngineerModelConfig = {
27
- model: "openai-codex/gpt-5.5:xhigh",
19
+ model: "anthropic/claude-fable-5:xhigh",
28
20
  fallbackModels: [
21
+ "openai-codex/gpt-5.5:xhigh",
29
22
  "github-copilot/gpt-5.5:xhigh",
30
23
  "openai/gpt-5.5:xhigh",
31
- "anthropic/claude-fable-5:xhigh",
32
- "github-copilot/claude-opus-4.8 (1m):high",
33
- "anthropic/claude-opus-4-8:high",
24
+ "github-copilot/claude-opus-4.8 (1m):xhigh",
25
+ "anthropic/claude-opus-4-8:xhigh",
34
26
  "zai/glm-5.2:xhigh",
35
27
  "zai-coding-cn/glm-5.2:xhigh",
36
- "openrouter/openai/gpt-5.5:xhigh",
37
28
  "openrouter/anthropic/claude-fable-5:xhigh",
38
- "openrouter/anthropic/claude-opus-4-8:high",
29
+ "openrouter/sakana/fugu-ultra:high",
30
+ "openrouter/openai/gpt-5.5:xhigh",
31
+ "openrouter/anthropic/claude-opus-4-8:xhigh",
39
32
  "openrouter/z-ai/glm-5.2:xhigh"
40
33
  ],
41
34
  excludedTools: ["ask_user_question"],
@@ -60,19 +53,20 @@ export const researchModelConfig = {
60
53
  };
61
54
 
62
55
  export const orchestratorModelConfig = {
63
- model: "openai-codex/gpt-5.5:medium",
56
+ model: "anthropic/claude-fable-5:xhigh",
64
57
  fallbackModels: [
65
- "github-copilot/gpt-5.5:medium",
66
- "openai/gpt-5.5:medium",
67
- "anthropic/claude-fable-5:low",
68
- "github-copilot/claude-opus-4.8 (1m):medium",
69
- "anthropic/claude-opus-4-8:medium",
70
- "zai/glm-5.2:high",
71
- "zai-coding-cn/glm-5.2:high",
72
- "openrouter/openai/gpt-5.5:medium",
73
- "openrouter/anthropic/claude-fable-5:low",
74
- "openrouter/anthropic/claude-opus-4-8:medium",
75
- "openrouter/z-ai/glm-5.2:xhigh"
58
+ "openai-codex/gpt-5.5:xhigh",
59
+ "github-copilot/gpt-5.5:xhigh",
60
+ "openai/gpt-5.5:xhigh",
61
+ "github-copilot/claude-opus-4.8 (1m):xhigh",
62
+ "anthropic/claude-opus-4-8:xhigh",
63
+ "zai/glm-5.2:xhigh",
64
+ "zai-coding-cn/glm-5.2:xhigh",
65
+ "openrouter/anthropic/claude-fable-5:xhigh",
66
+ "openrouter/sakana/fugu-ultra:high",
67
+ "openrouter/openai/gpt-5.5:xhigh",
68
+ "openrouter/anthropic/claude-opus-4-8:xhigh",
69
+ "openrouter/z-ai/glm-5.2:xhigh"
76
70
  ],
77
71
  excludedTools: ["ask_user_question"],
78
72
  };
@@ -83,13 +77,14 @@ export const reviewerAModelConfig = {
83
77
  "openai-codex/gpt-5.5:xhigh",
84
78
  "github-copilot/gpt-5.5:xhigh",
85
79
  "openai/gpt-5.5:xhigh",
86
- "github-copilot/claude-opus-4.8 (1m):high",
87
- "anthropic/claude-opus-4-8:high",
80
+ "github-copilot/claude-opus-4.8 (1m):xhigh",
81
+ "anthropic/claude-opus-4-8:xhigh",
88
82
  "zai/glm-5.2:xhigh",
89
83
  "zai-coding-cn/glm-5.2:xhigh",
90
84
  "openrouter/anthropic/claude-fable-5:xhigh",
85
+ "openrouter/sakana/fugu-ultra:high",
91
86
  "openrouter/openai/gpt-5.5:xhigh",
92
- "openrouter/anthropic/claude-opus-4-8:high",
87
+ "openrouter/anthropic/claude-opus-4-8:xhigh",
93
88
  "openrouter/z-ai/glm-5.2:xhigh"
94
89
  ],
95
90
  excludedTools: ["ask_user_question"],
@@ -102,13 +97,14 @@ export const reviewerBModelConfig = {
102
97
  "github-copilot/gpt-5.5:xhigh",
103
98
  "openai/gpt-5.5:xhigh",
104
99
  "anthropic/claude-fable-5:xhigh",
105
- "github-copilot/claude-opus-4.8 (1m):high",
106
- "anthropic/claude-opus-4-8:high",
100
+ "github-copilot/claude-opus-4.8 (1m):xhigh",
101
+ "anthropic/claude-opus-4-8:xhigh",
107
102
  "zai/glm-5.2:xhigh",
108
103
  "zai-coding-cn/glm-5.2:xhigh",
109
104
  "openrouter/openai/gpt-5.5:xhigh",
110
105
  "openrouter/anthropic/claude-fable-5:xhigh",
111
- "openrouter/anthropic/claude-opus-4-8:high",
106
+ "openrouter/sakana/fugu-ultra:high",
107
+ "openrouter/anthropic/claude-opus-4-8:xhigh",
112
108
  "openrouter/z-ai/glm-5.2:xhigh"
113
109
  ],
114
110
  excludedTools: ["ask_user_question"],
@@ -119,16 +115,17 @@ export const reviewerCModelConfig = {
119
115
  model: "zai/glm-5.2:xhigh",
120
116
  fallbackModels: [
121
117
  "zai-coding-cn/glm-5.2:xhigh",
122
- "openrouter/z-ai/glm-5.2:xhigh",
123
118
  "openai-codex/gpt-5.5:xhigh",
124
119
  "github-copilot/gpt-5.5:xhigh",
125
120
  "openai/gpt-5.5:xhigh",
126
121
  "anthropic/claude-fable-5:xhigh",
127
- "github-copilot/claude-opus-4.8 (1m):high",
128
- "anthropic/claude-opus-4-8:high",
122
+ "github-copilot/claude-opus-4.8 (1m):xhigh",
123
+ "anthropic/claude-opus-4-8:xhigh",
124
+ "openrouter/sakana/fugu-ultra:high",
125
+ "openrouter/z-ai/glm-5.2:xhigh",
129
126
  "openrouter/openai/gpt-5.5:xhigh",
130
127
  "openrouter/anthropic/claude-fable-5:xhigh",
131
- "openrouter/anthropic/claude-opus-4-8:high"
128
+ "openrouter/anthropic/claude-opus-4-8:xhigh"
132
129
  ],
133
130
  excludedTools: ["ask_user_question"],
134
131
  schema: reviewDecisionSchema,
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bastani/workflows",
3
- "version": "0.9.5-alpha.1",
3
+ "version": "0.9.5-alpha.3",
4
4
  "private": true,
5
5
  "description": "Atomic extension for multi-stage workflow authoring and execution.",
6
6
  "contributors": [
@@ -9,8 +9,11 @@ export const WORKFLOW_TOOL_DESCRIPTION =
9
9
 
10
10
  export const DEFAULT_PROMPT_GUIDANCE: string[] = [
11
11
  `**Workflows**: Treat workflows as the default execution path for any non-trivial task and for any request that has inherent structure plus an objective you can make verifiable. Use the \`workflow\` tool for existing named workflows and for repeatable, inspectable, resumable, multi-stage, or reviewer-gated processes; use direct \`task\`, \`tasks\`, or \`chain\` workflow calls for one-off tracked work when no named workflow fits.
12
- - Workflow fit check: before implementing directly, ask whether the task is an implementation, build, debug/diagnosis, bug-fix, migration, new-feature, scoped multi-file edit, or docs/code change with validation; or whether it has multiple steps, dependencies, handoffs, uncertainty, validation/review needs, a long-running surface, or measurable done criteria. If yes, launch or design a workflow instead of doing parallel implementation yourself.
12
+ - Decide the execution mode before your first tool call on a new request and state it in one short line: inline (tiny, deterministic, low-risk) or a workflow run. Reconnaissance counts as inline execution reading code, searching, and running probe scripts is already doing the task, so an unstated "explore first" default silently commits you to an unbounded inline session.
13
+ - Workflow fit check: ask whether the task is an implementation, build, debug/diagnosis, bug-fix, migration, new-feature, scoped multi-file edit, or docs/code change with validation; or whether it has multiple steps, dependencies, handoffs, uncertainty, validation/review needs, a long-running surface, or measurable done criteria. If yes, launch or design a workflow instead of doing parallel implementation yourself.
13
14
  - Treat loop/structural wording as a strong workflow signal, especially requests like "do X until Y", "repeat until", "iterate until", "review/fix until passing", "run checks and fix until green", "keep going until done", or any prompt that names a stop condition, approval gate, or evidence requirement.
15
+ - Budget reconnaissance: when a task passes the fit check, keep pre-workflow exploration to a few quick scoping reads whose only purpose is writing a sharper objective and validation criteria; deep research, upstream/design comparison, and behavior probing belong inside the workflow run — any workflow with a research or analysis stage, whether user-defined or builtin (e.g. \`ralph\`'s research stage) — not before it.
16
+ - Course-correct instead of drifting: if you are roughly ten or more tool calls into inline exploration with no artifact, edit, or commit to show — or you keep telling yourself "let me verify one more thing" — stop, write your findings so far to a context file, launch the best-fit workflow with that file passed via \`reads\` and a prompt like "Read the file at <path>...", and let the workflow own the implementation. Check \`action: "list"\` for named or user-defined workflows that match the task first, falling back to the builtin \`goal\`/\`ralph\` when nothing more specific fits. Sunk inline research is never a reason to stay inline; it transfers via files.
14
17
  - Only skip workflows for tiny, deterministic, low-risk answers or direct edits that are faster and safer to complete inline without stage tracking, typically a clearly single-file/no-test/no-review change.
15
18
  - For unfamiliar named workflows, discover with \`action: "list"\`, inspect with \`action: "get"\` or \`action: "inputs"\`, and run with \`action: "run"\`, \`workflow\`, and validated \`inputs\`; do not invent workflow names or input keys.
16
19
  - When designing or editing workflows, read docs/workflows.md and reference its Workflow Starter Patterns: Classify-and-act, Fan-out-and-synthesize, Adversarial verification, Generate-and-filter, Tournament, and Loop until done. Choose or combine these patterns before inventing a custom stage graph, and reflect the selected pattern in the spec and Mermaid diagram when using the create-spec skill.
@@ -49,7 +49,7 @@ const StageSessionOptionProperties = {
49
49
  agentDir: Type.Optional(Type.String()),
50
50
  authStorage: Type.Optional(SdkSessionOptionSchema("authStorage")),
51
51
  modelRegistry: Type.Optional(SdkSessionOptionSchema("modelRegistry")),
52
- model: Type.Optional(Type.Unsafe<WorkflowModelValue>({ description: "Primary model id or SDK model object. String ids may include a reasoning suffix, e.g. openai/gpt-5:high; valid levels: off|minimal|low|medium|high|xhigh. A parenthesized context-window token may precede or follow the suffix, e.g. github-copilot/claude-opus-4.8 (1m):high or github-copilot/claude-opus-4.8:high (1m). Use (long) for a generic long-context marker, or a rounded size matching the model's long tier (e.g. (1m) or (1.1m)); both select the model's advertised long tier." })),
52
+ model: Type.Optional(Type.Unsafe<WorkflowModelValue>({ description: "Primary model id or SDK model object. String ids may include a reasoning suffix, e.g. openai/gpt-5:high; valid levels: off|minimal|low|medium|high|xhigh. A parenthesized context-window token may precede or follow the suffix, e.g. github-copilot/claude-opus-4.8 (1m):xhigh or github-copilot/claude-opus-4.8:xhigh (1m). Use (long) for a generic long-context marker, or a rounded size matching the model's long tier (e.g. (1m) or (1.1m)); both select the model's advertised long tier." })),
53
53
  contextWindow: Type.Optional(Type.Number({ description: "Context-window token budget for the stage session (e.g. 1000000). Non-strict by default: an unsupported value keeps the model's default window. Prefer the per-model `(1m)` token in a model/fallbackModels entry when only specific models should use a larger window." })),
54
54
  contextWindowStrict: Type.Optional(Type.Boolean({ description: "Treat an unsupported contextWindow as an error instead of falling back to the model's default window." })),
55
55
  thinkingLevel: Type.Optional(SdkSessionOptionSchema("thinkingLevel")),
package/docs/workflows.md CHANGED
@@ -421,6 +421,25 @@ Workflows are the default path when a request is non-trivial, has inherent struc
421
421
 
422
422
  Use direct chat instead only for tiny, deterministic, low-risk edits or answers where stage tracking would add more overhead than value, usually a clearly single-file/no-test/no-review edit. If the task is only deterministic TypeScript with no LLM/session stage, use a script, custom tool, or extension command instead.
423
423
 
424
+ ### Decide before you explore
425
+
426
+ Make the inline-vs-workflow decision **before the first tool call** on a request, and state it in one short line. Reconnaissance counts as inline execution — reading code, searching, and running probe scripts is already "doing the task" — so an unstated "look around first" default silently commits the session to unbounded inline work, which is exactly how workflow-fit tasks turn into hours of exploration with nothing committed.
427
+
428
+ When a task passes the checklist above:
429
+
430
+ - Keep pre-workflow scoping to a few quick reads whose only purpose is writing a sharper objective and validation criteria.
431
+ - Put deep research, upstream/design comparison, and behavior probing *inside* the workflow — any workflow with a research or analysis stage, whether user-defined or builtin (for example `ralph`'s research stage) — not before it.
432
+
433
+ ### Course-correct instead of drifting
434
+
435
+ If a session drifts anyway — roughly ten or more tool calls of exploration with no artifact, edit, or commit to show, or a repeating "let me verify one more thing" loop — stop and hand off:
436
+
437
+ 1. Write the findings so far to a context file.
438
+ 2. Launch the best-fit workflow with that file passed via `reads` and a prompt like ``Read the file at `<path>` ...`` — check `workflow({ action: "list" })` for named or user-defined workflows that match the task first, falling back to the builtin `goal` or `ralph` when nothing more specific fits.
439
+ 3. Let the workflow own the implementation while you monitor lifecycle notices.
440
+
441
+ Sunk inline research is never a reason to stay inline; it transfers via files.
442
+
424
443
  | User goal | Use |
425
444
  |-----------|-----|
426
445
  | Run, inspect, attach to, pause, interrupt, resume, or check status for an existing workflow | `/workflow ...` or `workflow({ action: ... })` |
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "@bastani/atomic",
3
- "version": "0.9.5-alpha.1",
3
+ "version": "0.9.5-alpha.3",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@bastani/atomic",
9
- "version": "0.9.5-alpha.1",
9
+ "version": "0.9.5-alpha.3",
10
10
  "license": "MIT",
11
11
  "dependencies": {
12
- "@bastani/atomic-natives": "0.9.5-alpha.1",
12
+ "@bastani/atomic-natives": "0.9.5-alpha.3",
13
13
  "@bufbuild/protobuf": "^2.12.1",
14
14
  "@earendil-works/pi-agent-core": "^0.80.3",
15
15
  "@earendil-works/pi-ai": "^0.80.3",
@@ -514,16 +514,16 @@
514
514
  }
515
515
  },
516
516
  "node_modules/@bastani/atomic-natives": {
517
- "version": "0.9.5-alpha.1",
518
- "resolved": "https://registry.npmjs.org/@bastani/atomic-natives/-/atomic-natives-0.9.5-alpha.1.tgz",
517
+ "version": "0.9.5-alpha.3",
518
+ "resolved": "https://registry.npmjs.org/@bastani/atomic-natives/-/atomic-natives-0.9.5-alpha.3.tgz",
519
519
  "license": "MIT",
520
520
  "optionalDependencies": {
521
- "@bastani/atomic-natives-darwin-arm64": "0.9.5-alpha.1",
522
- "@bastani/atomic-natives-darwin-x64": "0.9.5-alpha.1",
523
- "@bastani/atomic-natives-linux-arm64-gnu": "0.9.5-alpha.1",
524
- "@bastani/atomic-natives-linux-x64-gnu": "0.9.5-alpha.1",
525
- "@bastani/atomic-natives-win32-arm64-msvc": "0.9.5-alpha.1",
526
- "@bastani/atomic-natives-win32-x64-msvc": "0.9.5-alpha.1"
521
+ "@bastani/atomic-natives-darwin-arm64": "0.9.5-alpha.3",
522
+ "@bastani/atomic-natives-darwin-x64": "0.9.5-alpha.3",
523
+ "@bastani/atomic-natives-linux-arm64-gnu": "0.9.5-alpha.3",
524
+ "@bastani/atomic-natives-linux-x64-gnu": "0.9.5-alpha.3",
525
+ "@bastani/atomic-natives-win32-arm64-msvc": "0.9.5-alpha.3",
526
+ "@bastani/atomic-natives-win32-x64-msvc": "0.9.5-alpha.3"
527
527
  },
528
528
  "engines": {
529
529
  "bun": ">=1.3.14",
@@ -531,8 +531,8 @@
531
531
  }
532
532
  },
533
533
  "node_modules/@bastani/atomic-natives-darwin-arm64": {
534
- "version": "0.9.5-alpha.1",
535
- "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-darwin-arm64/-/atomic-natives-darwin-arm64-0.9.5-alpha.1.tgz",
534
+ "version": "0.9.5-alpha.3",
535
+ "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-darwin-arm64/-/atomic-natives-darwin-arm64-0.9.5-alpha.3.tgz",
536
536
  "license": "MIT",
537
537
  "os": [
538
538
  "darwin"
@@ -543,8 +543,8 @@
543
543
  "optional": true
544
544
  },
545
545
  "node_modules/@bastani/atomic-natives-darwin-x64": {
546
- "version": "0.9.5-alpha.1",
547
- "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-darwin-x64/-/atomic-natives-darwin-x64-0.9.5-alpha.1.tgz",
546
+ "version": "0.9.5-alpha.3",
547
+ "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-darwin-x64/-/atomic-natives-darwin-x64-0.9.5-alpha.3.tgz",
548
548
  "license": "MIT",
549
549
  "os": [
550
550
  "darwin"
@@ -555,8 +555,8 @@
555
555
  "optional": true
556
556
  },
557
557
  "node_modules/@bastani/atomic-natives-linux-arm64-gnu": {
558
- "version": "0.9.5-alpha.1",
559
- "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-arm64-gnu/-/atomic-natives-linux-arm64-gnu-0.9.5-alpha.1.tgz",
558
+ "version": "0.9.5-alpha.3",
559
+ "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-arm64-gnu/-/atomic-natives-linux-arm64-gnu-0.9.5-alpha.3.tgz",
560
560
  "license": "MIT",
561
561
  "os": [
562
562
  "linux"
@@ -570,8 +570,8 @@
570
570
  "optional": true
571
571
  },
572
572
  "node_modules/@bastani/atomic-natives-linux-x64-gnu": {
573
- "version": "0.9.5-alpha.1",
574
- "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-x64-gnu/-/atomic-natives-linux-x64-gnu-0.9.5-alpha.1.tgz",
573
+ "version": "0.9.5-alpha.3",
574
+ "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-x64-gnu/-/atomic-natives-linux-x64-gnu-0.9.5-alpha.3.tgz",
575
575
  "license": "MIT",
576
576
  "os": [
577
577
  "linux"
@@ -585,8 +585,8 @@
585
585
  "optional": true
586
586
  },
587
587
  "node_modules/@bastani/atomic-natives-win32-arm64-msvc": {
588
- "version": "0.9.5-alpha.1",
589
- "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-win32-arm64-msvc/-/atomic-natives-win32-arm64-msvc-0.9.5-alpha.1.tgz",
588
+ "version": "0.9.5-alpha.3",
589
+ "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-win32-arm64-msvc/-/atomic-natives-win32-arm64-msvc-0.9.5-alpha.3.tgz",
590
590
  "license": "MIT",
591
591
  "os": [
592
592
  "win32"
@@ -597,8 +597,8 @@
597
597
  "optional": true
598
598
  },
599
599
  "node_modules/@bastani/atomic-natives-win32-x64-msvc": {
600
- "version": "0.9.5-alpha.1",
601
- "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-win32-x64-msvc/-/atomic-natives-win32-x64-msvc-0.9.5-alpha.1.tgz",
600
+ "version": "0.9.5-alpha.3",
601
+ "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-win32-x64-msvc/-/atomic-natives-win32-x64-msvc-0.9.5-alpha.3.tgz",
602
602
  "license": "MIT",
603
603
  "os": [
604
604
  "win32"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bastani/atomic",
3
- "version": "0.9.5-alpha.1",
3
+ "version": "0.9.5-alpha.3",
4
4
  "description": "Atomic coding agent CLI with read, bash, edit, write tools and session management",
5
5
  "type": "module",
6
6
  "atomicConfig": {
@@ -77,7 +77,7 @@
77
77
  "prepublishOnly": "bun run clean && bun run build && bun run shrinkwrap"
78
78
  },
79
79
  "dependencies": {
80
- "@bastani/atomic-natives": "0.9.5-alpha.1",
80
+ "@bastani/atomic-natives": "0.9.5-alpha.3",
81
81
  "@bufbuild/protobuf": "^2.12.1",
82
82
  "@earendil-works/pi-agent-core": "^0.80.3",
83
83
  "@earendil-works/pi-ai": "^0.80.3",