@bastani/atomic 0.9.5-alpha.2 → 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 +6 -0
- package/dist/builtin/cursor/package.json +2 -2
- package/dist/builtin/intercom/package.json +1 -1
- package/dist/builtin/mcp/package.json +1 -1
- package/dist/builtin/subagents/package.json +1 -1
- package/dist/builtin/web-access/package.json +1 -1
- package/dist/builtin/workflows/CHANGELOG.md +6 -0
- package/dist/builtin/workflows/package.json +1 -1
- package/dist/builtin/workflows/src/extension/workflow-prompts.ts +4 -1
- package/docs/workflows.md +19 -0
- package/npm-shrinkwrap.json +23 -23
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,12 @@
|
|
|
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
|
+
|
|
5
11
|
## [0.9.5-alpha.2] - 2026-07-04
|
|
6
12
|
|
|
7
13
|
### Changed
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bastani/cursor",
|
|
3
|
-
"version": "0.9.5-alpha.
|
|
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.
|
|
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.
|
|
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.
|
|
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": [
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bastani/subagents",
|
|
3
|
-
"version": "0.9.5-alpha.
|
|
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.
|
|
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,12 @@ 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
|
+
|
|
9
15
|
## [0.9.5-alpha.2] - 2026-07-04
|
|
10
16
|
|
|
11
17
|
### Changed
|
|
@@ -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
|
-
-
|
|
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.
|
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: ... })` |
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bastani/atomic",
|
|
3
|
-
"version": "0.9.5-alpha.
|
|
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.
|
|
9
|
+
"version": "0.9.5-alpha.3",
|
|
10
10
|
"license": "MIT",
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@bastani/atomic-natives": "0.9.5-alpha.
|
|
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.
|
|
518
|
-
"resolved": "https://registry.npmjs.org/@bastani/atomic-natives/-/atomic-natives-0.9.5-alpha.
|
|
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.
|
|
522
|
-
"@bastani/atomic-natives-darwin-x64": "0.9.5-alpha.
|
|
523
|
-
"@bastani/atomic-natives-linux-arm64-gnu": "0.9.5-alpha.
|
|
524
|
-
"@bastani/atomic-natives-linux-x64-gnu": "0.9.5-alpha.
|
|
525
|
-
"@bastani/atomic-natives-win32-arm64-msvc": "0.9.5-alpha.
|
|
526
|
-
"@bastani/atomic-natives-win32-x64-msvc": "0.9.5-alpha.
|
|
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.
|
|
535
|
-
"resolved": "https://registry.npmjs.org/@bastani/atomic-natives-darwin-arm64/-/atomic-natives-darwin-arm64-0.9.5-alpha.
|
|
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.
|
|
547
|
-
"resolved": "https://registry.npmjs.org/@bastani/atomic-natives-darwin-x64/-/atomic-natives-darwin-x64-0.9.5-alpha.
|
|
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.
|
|
559
|
-
"resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-arm64-gnu/-/atomic-natives-linux-arm64-gnu-0.9.5-alpha.
|
|
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.
|
|
574
|
-
"resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-x64-gnu/-/atomic-natives-linux-x64-gnu-0.9.5-alpha.
|
|
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.
|
|
589
|
-
"resolved": "https://registry.npmjs.org/@bastani/atomic-natives-win32-arm64-msvc/-/atomic-natives-win32-arm64-msvc-0.9.5-alpha.
|
|
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.
|
|
601
|
-
"resolved": "https://registry.npmjs.org/@bastani/atomic-natives-win32-x64-msvc/-/atomic-natives-win32-x64-msvc-0.9.5-alpha.
|
|
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.
|
|
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.
|
|
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",
|