@bastani/atomic 0.9.5-alpha.2 → 0.9.5-alpha.4

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 (51) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/builtin/cursor/package.json +2 -2
  3. package/dist/builtin/intercom/package.json +1 -1
  4. package/dist/builtin/mcp/package.json +1 -1
  5. package/dist/builtin/subagents/package.json +1 -1
  6. package/dist/builtin/web-access/package.json +1 -1
  7. package/dist/builtin/workflows/CHANGELOG.md +13 -0
  8. package/dist/builtin/workflows/builtin/goal-prompts.ts +2 -0
  9. package/dist/builtin/workflows/builtin/ralph-reviewer-prompt.ts +138 -0
  10. package/dist/builtin/workflows/builtin/ralph-runner.ts +10 -118
  11. package/dist/builtin/workflows/builtin/shared-prompts.ts +5 -0
  12. package/dist/builtin/workflows/package.json +1 -1
  13. package/dist/builtin/workflows/src/extension/workflow-prompts.ts +4 -1
  14. package/dist/modes/interactive/interactive-auth-login.d.ts.map +1 -1
  15. package/dist/modes/interactive/interactive-auth-login.js +0 -1
  16. package/dist/modes/interactive/interactive-auth-login.js.map +1 -1
  17. package/dist/modes/interactive/interactive-hotkeys-debug.d.ts.map +1 -1
  18. package/dist/modes/interactive/interactive-hotkeys-debug.js +3 -3
  19. package/dist/modes/interactive/interactive-hotkeys-debug.js.map +1 -1
  20. package/dist/modes/interactive/interactive-input-handling.d.ts.map +1 -1
  21. package/dist/modes/interactive/interactive-input-handling.js +0 -51
  22. package/dist/modes/interactive/interactive-input-handling.js.map +1 -1
  23. package/dist/modes/interactive/interactive-mode-base.d.ts +2 -4
  24. package/dist/modes/interactive/interactive-mode-base.d.ts.map +1 -1
  25. package/dist/modes/interactive/interactive-mode-base.js +2 -4
  26. package/dist/modes/interactive/interactive-mode-base.js.map +1 -1
  27. package/dist/modes/interactive/interactive-mode-surface.d.ts +3 -9
  28. package/dist/modes/interactive/interactive-mode-surface.d.ts.map +1 -1
  29. package/dist/modes/interactive/interactive-mode-surface.js.map +1 -1
  30. package/dist/modes/interactive/interactive-model-routing.d.ts.map +1 -1
  31. package/dist/modes/interactive/interactive-model-routing.js +0 -3
  32. package/dist/modes/interactive/interactive-model-routing.js.map +1 -1
  33. package/dist/modes/interactive/interactive-onboarding.d.ts +0 -9
  34. package/dist/modes/interactive/interactive-onboarding.d.ts.map +1 -1
  35. package/dist/modes/interactive/interactive-onboarding.js +23 -201
  36. package/dist/modes/interactive/interactive-onboarding.js.map +1 -1
  37. package/dist/modes/interactive/interactive-session-routing.d.ts.map +1 -1
  38. package/dist/modes/interactive/interactive-session-routing.js +2 -2
  39. package/dist/modes/interactive/interactive-session-routing.js.map +1 -1
  40. package/dist/modes/interactive/interactive-slash-commands.d.ts.map +1 -1
  41. package/dist/modes/interactive/interactive-slash-commands.js +1 -1
  42. package/dist/modes/interactive/interactive-slash-commands.js.map +1 -1
  43. package/dist/modes/interactive/interactive-startup.d.ts.map +1 -1
  44. package/dist/modes/interactive/interactive-startup.js +36 -43
  45. package/dist/modes/interactive/interactive-startup.js.map +1 -1
  46. package/docs/quickstart.md +3 -3
  47. package/docs/settings.md +1 -1
  48. package/docs/usage.md +1 -1
  49. package/docs/workflows.md +21 -2
  50. package/npm-shrinkwrap.json +23 -23
  51. package/package.json +2 -2
package/docs/workflows.md CHANGED
@@ -58,7 +58,7 @@ Use direct chat only for tiny, deterministic, low-risk work where workflow track
58
58
 
59
59
  ## Quick Start
60
60
 
61
- On a fresh first run with no prior Atomic startup state, Atomic can route your first pasted ticket, issue, spec path, or task prompt into normal workflow-driven agent work. Returning users with prior startup state are marked onboarded automatically and continue directly into the normal chat UI; stored credentials by themselves do not skip onboarding. If you are not logged in or configured yet, Atomic keeps the latest seed in memory only, asks you to run `/login`, and resumes after login succeeds. Once ready, onboarding raises the selected model to high reasoning when supported and hands the seed to the normal coding-agent session with instructions to first estimate likely scope from the seed text alone. Tickets, GitHub issues, and especially specs often list enough work items, files, tests, docs, migrations, or acceptance criteria to make an initial tiny/small/medium/large/unknown call without immediately inspecting the repo. That text-only estimate is only a routing confidence signal, not final implementation planning. If the seed makes the task clearly tiny or small and high-confidence, the parent can route directly; if referenced context must be read or the scope is medium, large, unclear, risky, or not obviously tiny, the parent inspects only the necessary issue/spec/path/repo area and can use targeted read-only subagents such as `codebase-locator`, `codebase-analyzer`, and `codebase-pattern-finder` at their normal defaults before making the high-reasoning routing decision: `goal` for small fixes/quick fixes, `ralph` for non-trivial work around 2k+ changed lines or many files/areas. It then starts the selected workflow and continues normally. Type `/chat` before handoff to skip this one-time routing and use Atomic as a normal coding-agent chat.
61
+ On a fresh first run with no prior Atomic startup state, Atomic shows a one-time explanation after any What's New notes and directly above the normal input box describing Atomic as a verifiable coding agent runtime for building and running agent workflows you can feel confident in. It no longer intercepts the first message, saves a pasted seed, routes to `goal` or `ralph`, raises reasoning, or requires `/chat` to use normal chat. Type a normal message or slash command immediately; run `/login` first if no provider is connected, use `/atomic` for guides, `/workflow list` to discover built-ins, or launch a workflow command directly when you already know what you want.
62
62
 
63
63
  The fastest way to get a workflow running is to **describe it in natural language** and let Atomic write it for you. If you'd rather write the TypeScript yourself, jump to [Or hand-write the TypeScript](#or-hand-write-the-typescript) below.
64
64
 
@@ -110,7 +110,7 @@ Then list and run it like any other workflow:
110
110
  /workflow <name> key=value ...
111
111
  ```
112
112
 
113
- Named workflow runs are background-oriented. After launch, expect a run id and monitor it with `/workflow status <run-id>`, F2, or `/workflow connect <run-id>`. First-run `goal`/`ralph` handoffs print those exact commands in the dispatched card; use connect to watch, attach, and steer, or ask in the current chat for status or steering at any point.
113
+ Named workflow runs are background-oriented. After launch, expect a run id and monitor it with `/workflow status <run-id>`, F2, or `/workflow connect <run-id>`.
114
114
 
115
115
  ### Or hand-write the TypeScript
116
116
 
@@ -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.2",
3
+ "version": "0.9.5-alpha.4",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@bastani/atomic",
9
- "version": "0.9.5-alpha.2",
9
+ "version": "0.9.5-alpha.4",
10
10
  "license": "MIT",
11
11
  "dependencies": {
12
- "@bastani/atomic-natives": "0.9.5-alpha.2",
12
+ "@bastani/atomic-natives": "0.9.5-alpha.4",
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.2",
518
- "resolved": "https://registry.npmjs.org/@bastani/atomic-natives/-/atomic-natives-0.9.5-alpha.2.tgz",
517
+ "version": "0.9.5-alpha.4",
518
+ "resolved": "https://registry.npmjs.org/@bastani/atomic-natives/-/atomic-natives-0.9.5-alpha.4.tgz",
519
519
  "license": "MIT",
520
520
  "optionalDependencies": {
521
- "@bastani/atomic-natives-darwin-arm64": "0.9.5-alpha.2",
522
- "@bastani/atomic-natives-darwin-x64": "0.9.5-alpha.2",
523
- "@bastani/atomic-natives-linux-arm64-gnu": "0.9.5-alpha.2",
524
- "@bastani/atomic-natives-linux-x64-gnu": "0.9.5-alpha.2",
525
- "@bastani/atomic-natives-win32-arm64-msvc": "0.9.5-alpha.2",
526
- "@bastani/atomic-natives-win32-x64-msvc": "0.9.5-alpha.2"
521
+ "@bastani/atomic-natives-darwin-arm64": "0.9.5-alpha.4",
522
+ "@bastani/atomic-natives-darwin-x64": "0.9.5-alpha.4",
523
+ "@bastani/atomic-natives-linux-arm64-gnu": "0.9.5-alpha.4",
524
+ "@bastani/atomic-natives-linux-x64-gnu": "0.9.5-alpha.4",
525
+ "@bastani/atomic-natives-win32-arm64-msvc": "0.9.5-alpha.4",
526
+ "@bastani/atomic-natives-win32-x64-msvc": "0.9.5-alpha.4"
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.2",
535
- "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-darwin-arm64/-/atomic-natives-darwin-arm64-0.9.5-alpha.2.tgz",
534
+ "version": "0.9.5-alpha.4",
535
+ "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-darwin-arm64/-/atomic-natives-darwin-arm64-0.9.5-alpha.4.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.2",
547
- "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-darwin-x64/-/atomic-natives-darwin-x64-0.9.5-alpha.2.tgz",
546
+ "version": "0.9.5-alpha.4",
547
+ "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-darwin-x64/-/atomic-natives-darwin-x64-0.9.5-alpha.4.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.2",
559
- "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-arm64-gnu/-/atomic-natives-linux-arm64-gnu-0.9.5-alpha.2.tgz",
558
+ "version": "0.9.5-alpha.4",
559
+ "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-arm64-gnu/-/atomic-natives-linux-arm64-gnu-0.9.5-alpha.4.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.2",
574
- "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-x64-gnu/-/atomic-natives-linux-x64-gnu-0.9.5-alpha.2.tgz",
573
+ "version": "0.9.5-alpha.4",
574
+ "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-x64-gnu/-/atomic-natives-linux-x64-gnu-0.9.5-alpha.4.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.2",
589
- "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-win32-arm64-msvc/-/atomic-natives-win32-arm64-msvc-0.9.5-alpha.2.tgz",
588
+ "version": "0.9.5-alpha.4",
589
+ "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-win32-arm64-msvc/-/atomic-natives-win32-arm64-msvc-0.9.5-alpha.4.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.2",
601
- "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-win32-x64-msvc/-/atomic-natives-win32-x64-msvc-0.9.5-alpha.2.tgz",
600
+ "version": "0.9.5-alpha.4",
601
+ "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-win32-x64-msvc/-/atomic-natives-win32-x64-msvc-0.9.5-alpha.4.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.2",
3
+ "version": "0.9.5-alpha.4",
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.2",
80
+ "@bastani/atomic-natives": "0.9.5-alpha.4",
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",