@bastani/atomic 0.9.19-alpha.2 → 0.9.19-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.
- package/CHANGELOG.md +42 -0
- package/dist/builtin/intercom/CHANGELOG.md +15 -0
- package/dist/builtin/intercom/broker/broker.ts +8 -0
- package/dist/builtin/intercom/broker/client.ts +18 -0
- package/dist/builtin/intercom/broker/send-handler.ts +9 -0
- package/dist/builtin/intercom/index.bundle.mjs +161 -30
- package/dist/builtin/intercom/package.json +1 -1
- package/dist/builtin/intercom/types.ts +2 -1
- package/dist/builtin/mcp/package.json +1 -1
- package/dist/builtin/subagents/CHANGELOG.md +18 -0
- package/dist/builtin/subagents/README.md +14 -14
- package/dist/builtin/subagents/package.json +1 -1
- package/dist/builtin/subagents/skills/subagent/SKILL.md +14 -14
- package/dist/builtin/subagents/src/extension/index.bundle.mjs +142 -60
- package/dist/builtin/web-access/package.json +1 -1
- package/dist/builtin/workflows/CHANGELOG.md +33 -0
- package/dist/builtin/workflows/README.md +14 -15
- package/dist/builtin/workflows/builtin/{chunk-mygmtz6e.js → chunk-9k3ywfgd.js} +1 -1
- package/dist/builtin/workflows/builtin/{chunk-r9qq7xfj.js → chunk-ahbntmx2.js} +1 -1
- package/dist/builtin/workflows/builtin/{chunk-zggjyg5z.js → chunk-n8zysf1t.js} +1 -1
- package/dist/builtin/workflows/builtin/goal.js +2 -2
- package/dist/builtin/workflows/builtin/index.js +3 -3
- package/dist/builtin/workflows/builtin/ralph.js +2 -2
- package/dist/builtin/workflows/package.json +5 -5
- package/dist/builtin/workflows/src/extension/index.bundle.mjs +171 -207
- package/dist/builtin/workflows/src/index.js +33 -6
- package/dist/builtin/workflows/src/shared/authoring-contract-stage.d.ts +2 -1
- package/dist/builtin/workflows/src/shared/authoring-contract-ui.d.ts +1 -1
- package/dist/core/agent-session-auto-compaction.js +1 -1
- package/dist/core/agent-session-auto-compaction.js.map +1 -1
- package/dist/core/agent-session-compaction.js +1 -1
- package/dist/core/agent-session-compaction.js.map +1 -1
- package/dist/core/agent-session-custom-message-commit.d.ts.map +1 -1
- package/dist/core/agent-session-custom-message-commit.js +33 -2
- package/dist/core/agent-session-custom-message-commit.js.map +1 -1
- package/dist/core/agent-session-message-queue.d.ts +1 -1
- package/dist/core/agent-session-message-queue.d.ts.map +1 -1
- package/dist/core/agent-session-message-queue.js +22 -8
- package/dist/core/agent-session-message-queue.js.map +1 -1
- package/dist/core/agent-session-methods.d.ts +7 -1
- package/dist/core/agent-session-methods.d.ts.map +1 -1
- package/dist/core/agent-session-methods.js.map +1 -1
- package/dist/core/agent-session-persistent-custom-messages.d.ts +1 -1
- package/dist/core/agent-session-persistent-custom-messages.d.ts.map +1 -1
- package/dist/core/agent-session-persistent-custom-messages.js +13 -3
- package/dist/core/agent-session-persistent-custom-messages.js.map +1 -1
- package/dist/core/agent-session-post-tool-compaction.js +1 -1
- package/dist/core/agent-session-post-tool-compaction.js.map +1 -1
- package/dist/core/agent-session-prompt.d.ts.map +1 -1
- package/dist/core/agent-session-prompt.js +83 -0
- package/dist/core/agent-session-prompt.js.map +1 -1
- package/dist/core/agent-session-queue-pause.d.ts.map +1 -1
- package/dist/core/agent-session-queue-pause.js +11 -0
- package/dist/core/agent-session-queue-pause.js.map +1 -1
- package/dist/core/agent-session-tasks.d.ts +5 -0
- package/dist/core/agent-session-tasks.d.ts.map +1 -1
- package/dist/core/agent-session-tasks.js +8 -1
- package/dist/core/agent-session-tasks.js.map +1 -1
- package/dist/core/agent-session-tool-hooks.d.ts.map +1 -1
- package/dist/core/agent-session-tool-hooks.js +2 -0
- package/dist/core/agent-session-tool-hooks.js.map +1 -1
- package/dist/core/agent-session-tool-registry.d.ts.map +1 -1
- package/dist/core/agent-session-tool-registry.js +12 -0
- package/dist/core/agent-session-tool-registry.js.map +1 -1
- package/dist/core/agent-session-transfer.d.ts.map +1 -1
- package/dist/core/agent-session-transfer.js +7 -0
- package/dist/core/agent-session-transfer.js.map +1 -1
- package/dist/core/agent-session-types.d.ts +2 -0
- package/dist/core/agent-session-types.d.ts.map +1 -1
- package/dist/core/agent-session-types.js +2 -0
- package/dist/core/agent-session-types.js.map +1 -1
- package/dist/core/agent-session.d.ts +4 -0
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +22 -0
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/extensions/context-types.d.ts +6 -0
- package/dist/core/extensions/context-types.d.ts.map +1 -1
- package/dist/core/extensions/context-types.js.map +1 -1
- package/dist/core/extensions/loader-api.d.ts.map +1 -1
- package/dist/core/extensions/loader-api.js +3 -0
- package/dist/core/extensions/loader-api.js.map +1 -1
- package/dist/core/extensions/loader-host-modules.d.ts +1 -1
- package/dist/core/extensions/loader-host-modules.d.ts.map +1 -1
- package/dist/core/extensions/loader-host-modules.js +2 -1
- package/dist/core/extensions/loader-host-modules.js.map +1 -1
- package/dist/core/extensions/loader-virtual-modules.d.ts.map +1 -1
- package/dist/core/extensions/loader-virtual-modules.js +4 -1
- package/dist/core/extensions/loader-virtual-modules.js.map +1 -1
- package/dist/core/extensions/runner-context.d.ts +1 -1
- package/dist/core/extensions/runner-context.d.ts.map +1 -1
- package/dist/core/extensions/runner-context.js +9 -3
- package/dist/core/extensions/runner-context.js.map +1 -1
- package/dist/core/extensions/runner.js +1 -1
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/workflow-events.d.ts +1 -1
- package/dist/core/extensions/workflow-events.d.ts.map +1 -1
- package/dist/core/extensions/workflow-events.js.map +1 -1
- package/dist/core/retry-policy.d.ts +1 -0
- package/dist/core/retry-policy.d.ts.map +1 -1
- package/dist/core/retry-policy.js +2 -1
- package/dist/core/retry-policy.js.map +1 -1
- package/dist/core/sdk-exports.d.ts +1 -1
- package/dist/core/sdk-exports.d.ts.map +1 -1
- package/dist/core/sdk-exports.js +1 -1
- package/dist/core/sdk-exports.js.map +1 -1
- package/dist/core/settings-manager-basic-accessors.d.ts +6 -3
- package/dist/core/settings-manager-basic-accessors.d.ts.map +1 -1
- package/dist/core/settings-manager-basic-accessors.js +25 -8
- package/dist/core/settings-manager-basic-accessors.js.map +1 -1
- package/dist/core/settings-manager.d.ts +1 -1
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/settings-types.d.ts +6 -0
- package/dist/core/settings-types.d.ts.map +1 -1
- package/dist/core/settings-types.js.map +1 -1
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +4 -5
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/tasks/agent-adapter.d.ts +14 -2
- package/dist/core/tasks/agent-adapter.d.ts.map +1 -1
- package/dist/core/tasks/agent-adapter.js +45 -4
- package/dist/core/tasks/agent-adapter.js.map +1 -1
- package/dist/core/tasks/completion.d.ts.map +1 -1
- package/dist/core/tasks/completion.js +5 -1
- package/dist/core/tasks/completion.js.map +1 -1
- package/dist/core/tasks/pause.d.ts +4 -0
- package/dist/core/tasks/pause.d.ts.map +1 -0
- package/dist/core/tasks/pause.js +49 -0
- package/dist/core/tasks/pause.js.map +1 -0
- package/dist/core/tasks/supervisor.d.ts +3 -1
- package/dist/core/tasks/supervisor.d.ts.map +1 -1
- package/dist/core/tasks/supervisor.js +48 -22
- package/dist/core/tasks/supervisor.js.map +1 -1
- package/dist/core/tools/bash-pty-native.d.ts +16 -2
- package/dist/core/tools/bash-pty-native.d.ts.map +1 -1
- package/dist/core/tools/bash-pty-native.js +82 -0
- package/dist/core/tools/bash-pty-native.js.map +1 -1
- package/dist/core/tools/bash.d.ts +15 -2
- package/dist/core/tools/bash.d.ts.map +1 -1
- package/dist/core/tools/bash.js +49 -4
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/index.d.ts +4 -1
- package/dist/core/tools/index.d.ts.map +1 -1
- package/dist/core/tools/index.js +12 -0
- package/dist/core/tools/index.js.map +1 -1
- package/dist/core/tools/kill.d.ts +17 -0
- package/dist/core/tools/kill.d.ts.map +1 -0
- package/dist/core/tools/kill.js +49 -0
- package/dist/core/tools/kill.js.map +1 -0
- package/dist/core/tools/powershell.d.ts +84 -28
- package/dist/core/tools/powershell.d.ts.map +1 -1
- package/dist/core/tools/powershell.js +11 -3
- package/dist/core/tools/powershell.js.map +1 -1
- package/dist/core/tools/resource-selectors.d.ts +1 -1
- package/dist/core/tools/resource-selectors.d.ts.map +1 -1
- package/dist/core/tools/resource-selectors.js +7 -4
- package/dist/core/tools/resource-selectors.js.map +1 -1
- package/dist/core/workflow-stage-admission.d.ts +14 -0
- package/dist/core/workflow-stage-admission.d.ts.map +1 -1
- package/dist/core/workflow-stage-admission.js +63 -3
- package/dist/core/workflow-stage-admission.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/modes/interactive/components/chat-session-host.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-session-host.js +3 -2
- package/dist/modes/interactive/components/chat-session-host.js.map +1 -1
- package/dist/modes/interactive/components/task-row.d.ts.map +1 -1
- package/dist/modes/interactive/components/task-row.js +8 -1
- package/dist/modes/interactive/components/task-row.js.map +1 -1
- package/docs/background-tasks.md +31 -2
- package/docs/compaction.md +20 -0
- package/docs/computer-use.md +390 -0
- package/docs/development.md +23 -74
- package/docs/docs.json +1 -0
- package/docs/extensions.md +15 -1
- package/docs/herdr.md +26 -77
- package/docs/index.md +1 -0
- package/docs/intercom.md +14 -2
- package/docs/models/evals.md +2 -0
- package/docs/models/model-selection.md +10 -7
- package/docs/quickstart.md +1 -1
- package/docs/sdk.md +11 -1
- package/docs/settings.md +24 -0
- package/docs/subagents.md +10 -6
- package/docs/tmux.md +2 -0
- package/docs/tools.md +11 -1
- package/docs/usage.md +1 -1
- package/docs/workflows/api-reference.md +5 -4
- package/docs/workflows/authoring.md +3 -3
- package/docs/workflows/operations.md +44 -33
- package/docs/workflows/reliable-design.md +3 -3
- package/docs/workflows/verification.md +99 -40
- package/docs/workflows.md +4 -2
- package/npm-shrinkwrap.json +59 -59
- package/package.json +3 -3
|
@@ -1,79 +1,138 @@
|
|
|
1
1
|
# Verification and evidence
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Verify the behavior that changed, then give the reviewer enough evidence to understand the result. A small fix may need a focused test and a short explanation. An interactive change usually needs a real user scenario as well. A video is useful when it shows something a test log or screenshot cannot; it is not required for every PR.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
For tool installation, automation techniques, platform permissions, and general work in applications, read [Computer use](/computer-use). That guide covers Herdr for terminals, playwright-cli for browsers, and PyAutoGUI with uv for desktop CUA on macOS, Linux, and Windows. It also covers native accessibility and application tools when they are easier or more reliable.
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
## Choose checks that answer the question
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
Start with the project's existing tests, build, typecheck, and lint commands. Add an interactive scenario when the change affects what a user sees or does. Do not replace required checks with a recording, or create a UI solely to demonstrate a non-UI change.
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
| Changed behavior | Preferred mechanism | What to check |
|
|
12
|
+
| --- | --- | --- |
|
|
13
|
+
| Interactive terminal or TUI | **Herdr**, under its explicit-request and managed-pane requirements; tmux or native Windows psmux as fallbacks | Actual input, rendered output, navigation, resizing, and exit behavior relevant to the change. |
|
|
14
|
+
| Browser/frontend | **playwright-cli** | The user flow and its visible result, with DOM or network assertions where useful. |
|
|
15
|
+
| Desktop app, simulator, or emulator | **PyAutoGUI with uv**, supplemented by native/app APIs | The visible app scenario and its saved or exported result. |
|
|
16
|
+
| API, library, script, or other non-UI behavior | Existing test runner and shell commands | Inputs, outputs, error handling, and relevant build/type contracts. |
|
|
17
|
+
| Documentation | Documentation checks and example review | Links, navigation, command accuracy, and whether a reader can follow the instructions. |
|
|
12
18
|
|
|
13
|
-
|
|
19
|
+
See [tool selection](/computer-use#choose-the-right-tool) before operating a session. Herdr is the terminal priority, but the preference does not authorize control from outside a Herdr-managed pane. Install missing tools when permitted; otherwise use the available fallback and describe any coverage gap.
|
|
14
20
|
|
|
15
|
-
|
|
21
|
+
## Define a reproducible scenario
|
|
16
22
|
|
|
17
|
-
|
|
23
|
+
Before running it, write down:
|
|
18
24
|
|
|
19
|
-
|
|
25
|
+
- The behavior being verified and the expected result.
|
|
26
|
+
- The commit or artifact under test, plus any uncommitted changes.
|
|
27
|
+
- The environment that matters, such as OS, app/browser version, terminal dimensions, display scaling, and test fixtures.
|
|
28
|
+
- The actions and assertions, including a relevant failure or edge case.
|
|
20
29
|
|
|
21
|
-
|
|
22
|
-
| --- | --- |
|
|
23
|
-
| Browser/frontend, including API-dependent flows | Use the playwright-cli skill. Exercise the real user flow and assert its result. Retain current screenshots, video, DOM snapshots or network evidence as appropriate. |
|
|
24
|
-
| TUI/terminal | Prefer the herdr skill on macOS, Linux and Windows under its explicit-request and managed-pane requirements. Install if missing when permitted; fall back to the tmux skill or native Windows psmux if unavailable or unusable. Exercise actual interactive input and inspect pane output or a terminal recording. These tools do not have interchangeable CLIs. |
|
|
25
|
-
| Desktop/simulator/emulator | Use PyAutoGUI for desktop CUA, with native platform tools where they provide safer input or better assertions. Capture screenshots/video from a real visible app scenario, not a browser recording labeled as desktop or iOS proof. |
|
|
26
|
-
| Non-UI | Run relevant unit, integration, build, type or command-line scenarios. Do not manufacture a UI or video requirement. |
|
|
30
|
+
Use dedicated sessions and non-production data. Wait for observable completion with a deadline instead of assuming that a submitted command or a fixed delay means success. Preserve useful failure output before cleanup.
|
|
27
31
|
|
|
28
|
-
|
|
32
|
+
After a repair, rerun the affected checks on the new candidate. Label before/after evidence and keep it clear which commit produced each result. Do not present an earlier passing run as verification of later edits.
|
|
29
33
|
|
|
30
|
-
|
|
34
|
+
## Capture evidence appropriate to the change
|
|
31
35
|
|
|
32
|
-
|
|
36
|
+
### Browser changes
|
|
33
37
|
|
|
34
|
-
|
|
38
|
+
Use playwright-cli to exercise the actual flow. A screenshot can show layout; a DOM snapshot can show control state; console and network output can help establish why a flow failed. Pair captures with assertions about the result, such as a saved record appearing after reload.
|
|
35
39
|
|
|
36
|
-
|
|
40
|
+
For a named browser session you own, the CLI supports captures such as:
|
|
37
41
|
|
|
38
|
-
|
|
42
|
+
```sh
|
|
43
|
+
playwright-cli -s=pr-check snapshot --filename=after.yaml
|
|
44
|
+
playwright-cli -s=pr-check screenshot --filename=after.png
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
For behavior best shown in motion, check the installed CLI's help, start recording before the relevant actions, and stop afterward:
|
|
39
48
|
|
|
40
49
|
```sh
|
|
41
|
-
|
|
42
|
-
|
|
50
|
+
playwright-cli -s=pr-check video-start flow.webm
|
|
51
|
+
# Exercise the scenario here.
|
|
52
|
+
playwright-cli -s=pr-check video-stop
|
|
43
53
|
```
|
|
44
54
|
|
|
45
|
-
|
|
55
|
+
Open the saved artifact and confirm it includes the final state. Keep recordings short and focused. Inspect traces, authentication state, and network output for secrets before sharing. See [browser setup and best practices](/computer-use#browser-automation-with-playwright-cli).
|
|
56
|
+
|
|
57
|
+
### Terminal changes
|
|
58
|
+
|
|
59
|
+
Use Herdr to send real interactive input and inspect the resulting pane, or use tmux/psmux when Herdr cannot be used. Keep the terminal dimensions and shell relevant to the change. Test narrow layouts or modified keys when those are affected.
|
|
60
|
+
|
|
61
|
+
Retain screen captures or transcripts that show the input and result. For cursor movement, redraws, colors, or timing, a terminal recording or video may explain more than plain text. Capture important states during the run; alternate-screen content may not remain in scrollback. Check exit status or explicit assertions rather than treating an agent's `idle` indicator as a passing result.
|
|
62
|
+
|
|
63
|
+
See [terminal setup and capture commands](/computer-use#terminal-automation-with-herdr). A browser rendering of terminal text is not proof that the real TUI accepted input. WSL tmux does not establish native Windows terminal coverage.
|
|
64
|
+
|
|
65
|
+
### Desktop, simulator, and emulator changes
|
|
66
|
+
|
|
67
|
+
Run PyAutoGUI through uv in a dedicated graphical session, using [the desktop guide](/computer-use#desktop-automation-with-pyautogui-and-uv). Native accessibility tools or application APIs can give more reliable assertions than pixel matching. For example, check a saved document through the app API after exercising the visible Save flow.
|
|
68
|
+
|
|
69
|
+
Capture the actual application or simulator. A browser recording is not desktop or iOS evidence. PyAutoGUI can interact with a visible simulator/emulator window, but does not directly control an arbitrary physical phone. Use supported native tooling where needed, and name the device or emulator actually exercised.
|
|
70
|
+
|
|
71
|
+
Keep failsafes enabled and release held keys/buttons after interruption. Inspect saved files and exports rather than assuming a completed click means a completed operation. Screenshots show appearance, not necessarily persistence or correctness.
|
|
72
|
+
|
|
73
|
+
## Use evidence in a workflow
|
|
46
74
|
|
|
47
|
-
|
|
75
|
+
Give workers, reviewers, and the final handoff the same scenario and success criteria. A verification stage should produce commands, observed results, and artifact paths. The reviewer should inspect those results, not just accept the worker's summary or a filename.
|
|
48
76
|
|
|
49
|
-
|
|
77
|
+
For workflow-owned checks, use durable `ctx.tool` calls with finite timeouts and cancellation. Pass scripts and larger evidence through files. After a failed check, send the actual failure to a bounded repair step and rerun the affected checks. Keep implementation acceptance separate from later PR creation, upload, or publication. See [workflow authoring](/workflows/authoring) and [reliable design](/workflows/reliable-design).
|
|
50
78
|
|
|
51
|
-
|
|
79
|
+
### Execution mode
|
|
52
80
|
|
|
53
|
-
|
|
81
|
+
The same verification standard applies inline. A task-scoped request such as `quickly`, `inline`, or `don't use a workflow` means no workflow creation or launch, including hidden replacements. If switching an active run to inline, stop or hold it safely and reconcile completed work and in-flight effects before continuing. See [when to use workflows](/workflows#when-to-use-workflows).
|
|
54
82
|
|
|
55
|
-
|
|
83
|
+
## When a tool or environment is unavailable
|
|
56
84
|
|
|
57
|
-
|
|
85
|
+
Inspect installed tools and cached runtimes first. Install missing tools or plugins when network access and permissions allow. If installation is restricted, or no suitable graphical session is available, continue the checks that can run and record:
|
|
58
86
|
|
|
59
|
-
|
|
87
|
+
- What was unavailable and the observed error or known restriction.
|
|
88
|
+
- Any setup attempt and the narrower checks that actually ran.
|
|
89
|
+
- What still needs verification, including missing platform coverage.
|
|
60
90
|
|
|
61
|
-
|
|
91
|
+
Do not require production credentials or bypass permissions to satisfy a generic verification suggestion. An optional tool being unavailable is not an implementation failure, but a required project check remains required. Do not label skipped, mocked, or simulated coverage as a real platform run.
|
|
62
92
|
|
|
63
|
-
|
|
93
|
+
### qlty setup and fallback
|
|
64
94
|
|
|
65
|
-
|
|
95
|
+
Use the qlty skill when it adds useful lint, security, or complexity checks. Preserve the repository's existing tools and `.qlty/qlty.toml`; do not introduce a competing formatter or wholesale formatting changes.
|
|
66
96
|
|
|
67
|
-
|
|
97
|
+
When configuration changes are in scope, missing config can be initialized with `qlty init --no` or prepared manually using the skill's bundled configuration reference. Review generated suggestions. Read-only tasks should remain read-only or use isolated scratch configuration.
|
|
68
98
|
|
|
69
|
-
|
|
99
|
+
Cached plugins and built-in metrics may work offline; uncached plugins or runtimes may need downloads. Report prepared configuration separately from checks actually executed. Valid TOML is not proof that a plugin ran. Optional qlty setup should not block available repository checks.
|
|
100
|
+
|
|
101
|
+
## Include evidence in a PR
|
|
102
|
+
|
|
103
|
+
Give the reviewer a short summary before linking logs or media. For example, replace the placeholders in this template with observed results:
|
|
104
|
+
|
|
105
|
+
```markdown
|
|
106
|
+
## Verification
|
|
107
|
+
|
|
108
|
+
- Candidate: <commit SHA; note any uncommitted changes>
|
|
109
|
+
- Environment: <OS, app/tool versions, relevant dimensions>
|
|
110
|
+
- Checks: <command and result>
|
|
111
|
+
- Scenario: <starting state, actions, expected and observed result>
|
|
112
|
+
- Evidence: <hosted links or attached artifacts>
|
|
113
|
+
- Limits: <checks/platforms not exercised>
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
Attach a screenshot for a visual state, a short recording for an interaction, or logs for command behavior. Include reproduction steps even when media is available. Label local-only paths as local; reviewers cannot open a file on your machine. CI artifact links are useful when readers have access, but note retention limits where relevant.
|
|
117
|
+
|
|
118
|
+
Only upload to an authorized repository or destination. Inspect and redact secrets, personal information, private source content, and unrelated windows before attaching files. Permission to collect local evidence is not permission to publish it.
|
|
119
|
+
|
|
120
|
+
### Native GitHub media
|
|
121
|
+
|
|
122
|
+
[GitHub CLI 2.99.0 and newer](https://github.blog/changelog/2026-09-01-github-cli-media-in-issues-pull-requests-and-comments/) supports repeatable `--attach` on issue and PR `create`, `edit`, and `comment` commands. Check `gh --version`, the specific command's `--help`, and the host's [attachment support and limits](https://docs.github.com/en/github-cli/github-cli/attaching-files-with-github-cli).
|
|
123
|
+
|
|
124
|
+
For an authorized PR comment, replace the target and file paths:
|
|
70
125
|
|
|
71
126
|
```sh
|
|
72
|
-
gh pr comment 123 --repo owner/repo --body-file evidence.md
|
|
127
|
+
gh pr comment 123 --repo owner/repo --body-file evidence.md \
|
|
128
|
+
--attach 'after.png#Settings panel after saving' \
|
|
129
|
+
--attach flow.webm
|
|
73
130
|
```
|
|
74
131
|
|
|
75
|
-
|
|
132
|
+
The backslashes above are POSIX shell continuations. In PowerShell, use a single line or PowerShell continuation syntax.
|
|
133
|
+
|
|
134
|
+
Attach each file once. The CLI rewrites body-local attachment references to hosted URLs; otherwise it appends attachments in flag order. Images support `#Image alt text`; videos do not support alt text. A standalone `` paragraph in the body becomes an embedded player. These are CLI attachment features, not support for arbitrary local paths in GitHub Markdown.
|
|
76
135
|
|
|
77
|
-
Supported media include PNG, JPEG, GIF, WebP, SVG, MP4, MOV and WebM.
|
|
136
|
+
Supported media include PNG, JPEG, GIF, WebP, SVG, MP4, MOV, and WebM. Uploads require repository push access and supported authentication. Recheck current size limits and authentication support for the target account and host. The 2.99.0 release does not support GitHub Enterprise Server.
|
|
78
137
|
|
|
79
|
-
Read back the created or edited
|
|
138
|
+
Read back the created or edited PR/comment and confirm usable hosted links before reporting an upload as successful. If the CLI, provider, authentication, or file size is unsupported, retain the local artifact and explain the manual attachment path or supported provider tooling. Do not upload to an unrelated host to work around a limitation.
|
package/docs/workflows.md
CHANGED
|
@@ -11,7 +11,7 @@ Default to a workflow for non-trivial work with a verifiable objective — see [
|
|
|
11
11
|
- **Parallel branches** - Run independent research, review, or implementation branches concurrently
|
|
12
12
|
- **Context handoffs** - Pass summaries, artifacts, files, and schema-backed structured results between stages
|
|
13
13
|
- **Human input** - Pause for `ctx.ui.input`, `confirm`, `select`, `editor`, or custom TUI widget decisions during a run
|
|
14
|
-
- **Resumable control** -
|
|
14
|
+
- **Resumable control** - Pause, quit, resume, or connect to workflow runs
|
|
15
15
|
- **Intercom run notifications** - Deliver async run results and control notices (long-running, needs-attention, completed, failed) to a parent session over [Intercom](/intercom)
|
|
16
16
|
- **Artifacts** - Save large outputs to files instead of pushing everything through model context
|
|
17
17
|
- **Verification and gates** - Preserve evidence, run checks, and stop for human approval where reliability matters
|
|
@@ -40,6 +40,8 @@ Prefer composing builtin definitions with `ctx.workflow(...)` over copying or re
|
|
|
40
40
|
4. [Operations](/workflows/operations) — run, inspect, steer, pause, resume, and configure workflows.
|
|
41
41
|
5. [API reference](/workflows/api-reference) — look up definitions, contexts, options, results, and programmatic APIs.
|
|
42
42
|
|
|
43
|
+
For checking changes and sharing results in PRs, see [Verification and evidence](/workflows/verification). For general desktop, browser, and terminal work, including creative workflows, see [Computer use](/computer-use).
|
|
44
|
+
|
|
43
45
|
## When to Use Workflows
|
|
44
46
|
|
|
45
47
|
Unless the user explicitly chooses inline execution, workflows are the default for non-trivial requests or structured work with a verifiable objective. Requests such as `quickly`, `inline`, `do this directly`, and `don't use a workflow` override that default for the specified task, even when complex. Treat "quickly" as an inline execution choice, not a request for a faster workflow. Do not launch a hidden/nested replacement or ask the user to reapprove the choice. Preserve testing, review, evidence, safety and authorization inline. Quoted examples, questions about inline code, and descriptions of software that should run quickly are not mode instructions. For an active switch, safely hold/stop the affected run and reconcile completed work and in-flight effects before continuing without duplicates; completed work is not undone. See [Verification and evidence](/workflows/verification).
|
|
@@ -66,7 +68,7 @@ If exploration drifts without progress, save findings and choose a concrete next
|
|
|
66
68
|
|
|
67
69
|
| User need | Use |
|
|
68
70
|
|-----------|-----|
|
|
69
|
-
| Run, inspect, connect to, pause,
|
|
71
|
+
| Run, inspect, connect to, pause, quit, resume, or check status for an existing workflow | `/workflow ...` or `workflow({ action: ... })` |
|
|
70
72
|
| Run repository-wide research | Compose `fan-out-and-synthesize` with repository-focused branches, artifact outputs, and a synthesis barrier, or author a smaller task-specific research workflow. |
|
|
71
73
|
| Run an implementation/review loop | Author a task-specific worker → fresh verifier → reducer loop with explicit evidence, repair bounds, and stop conditions. |
|
|
72
74
|
| Create or edit reusable automation | A TypeScript workflow definition exported from `workflow({...})` |
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bastani/atomic",
|
|
3
|
-
"version": "0.9.19-alpha.
|
|
3
|
+
"version": "0.9.19-alpha.4",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@bastani/atomic",
|
|
9
|
-
"version": "0.9.19-alpha.
|
|
9
|
+
"version": "0.9.19-alpha.4",
|
|
10
10
|
"license": "MIT",
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@bastani/atomic-natives": "0.9.19-alpha.
|
|
13
|
-
"@bastani/pi-ai": "0.9.19-alpha.
|
|
12
|
+
"@bastani/atomic-natives": "0.9.19-alpha.4",
|
|
13
|
+
"@bastani/pi-ai": "0.9.19-alpha.4",
|
|
14
14
|
"@dbos-inc/dbos-sdk": "4.25.14",
|
|
15
15
|
"@earendil-works/pi-agent-core": "0.85.1",
|
|
16
16
|
"@earendil-works/pi-client": "0.85.1",
|
|
@@ -518,18 +518,18 @@
|
|
|
518
518
|
}
|
|
519
519
|
},
|
|
520
520
|
"node_modules/@bastani/atomic-natives": {
|
|
521
|
-
"version": "0.9.19-alpha.
|
|
522
|
-
"resolved": "https://registry.npmjs.org/@bastani/atomic-natives/-/atomic-natives-0.9.19-alpha.
|
|
521
|
+
"version": "0.9.19-alpha.4",
|
|
522
|
+
"resolved": "https://registry.npmjs.org/@bastani/atomic-natives/-/atomic-natives-0.9.19-alpha.4.tgz",
|
|
523
523
|
"license": "MIT",
|
|
524
524
|
"optionalDependencies": {
|
|
525
|
-
"@bastani/atomic-natives-darwin-arm64": "0.9.19-alpha.
|
|
526
|
-
"@bastani/atomic-natives-darwin-x64": "0.9.19-alpha.
|
|
527
|
-
"@bastani/atomic-natives-linux-arm64-gnu": "0.9.19-alpha.
|
|
528
|
-
"@bastani/atomic-natives-linux-arm64-musl": "0.9.19-alpha.
|
|
529
|
-
"@bastani/atomic-natives-linux-x64-gnu": "0.9.19-alpha.
|
|
530
|
-
"@bastani/atomic-natives-linux-x64-musl": "0.9.19-alpha.
|
|
531
|
-
"@bastani/atomic-natives-win32-arm64-msvc": "0.9.19-alpha.
|
|
532
|
-
"@bastani/atomic-natives-win32-x64-msvc": "0.9.19-alpha.
|
|
525
|
+
"@bastani/atomic-natives-darwin-arm64": "0.9.19-alpha.4",
|
|
526
|
+
"@bastani/atomic-natives-darwin-x64": "0.9.19-alpha.4",
|
|
527
|
+
"@bastani/atomic-natives-linux-arm64-gnu": "0.9.19-alpha.4",
|
|
528
|
+
"@bastani/atomic-natives-linux-arm64-musl": "0.9.19-alpha.4",
|
|
529
|
+
"@bastani/atomic-natives-linux-x64-gnu": "0.9.19-alpha.4",
|
|
530
|
+
"@bastani/atomic-natives-linux-x64-musl": "0.9.19-alpha.4",
|
|
531
|
+
"@bastani/atomic-natives-win32-arm64-msvc": "0.9.19-alpha.4",
|
|
532
|
+
"@bastani/atomic-natives-win32-x64-msvc": "0.9.19-alpha.4"
|
|
533
533
|
},
|
|
534
534
|
"engines": {
|
|
535
535
|
"bun": ">=1.4.2",
|
|
@@ -537,8 +537,8 @@
|
|
|
537
537
|
}
|
|
538
538
|
},
|
|
539
539
|
"node_modules/@bastani/atomic-natives-darwin-arm64": {
|
|
540
|
-
"version": "0.9.19-alpha.
|
|
541
|
-
"resolved": "https://registry.npmjs.org/@bastani/atomic-natives-darwin-arm64/-/atomic-natives-darwin-arm64-0.9.19-alpha.
|
|
540
|
+
"version": "0.9.19-alpha.4",
|
|
541
|
+
"resolved": "https://registry.npmjs.org/@bastani/atomic-natives-darwin-arm64/-/atomic-natives-darwin-arm64-0.9.19-alpha.4.tgz",
|
|
542
542
|
"license": "MIT",
|
|
543
543
|
"os": [
|
|
544
544
|
"darwin"
|
|
@@ -549,8 +549,8 @@
|
|
|
549
549
|
"optional": true
|
|
550
550
|
},
|
|
551
551
|
"node_modules/@bastani/atomic-natives-darwin-x64": {
|
|
552
|
-
"version": "0.9.19-alpha.
|
|
553
|
-
"resolved": "https://registry.npmjs.org/@bastani/atomic-natives-darwin-x64/-/atomic-natives-darwin-x64-0.9.19-alpha.
|
|
552
|
+
"version": "0.9.19-alpha.4",
|
|
553
|
+
"resolved": "https://registry.npmjs.org/@bastani/atomic-natives-darwin-x64/-/atomic-natives-darwin-x64-0.9.19-alpha.4.tgz",
|
|
554
554
|
"license": "MIT",
|
|
555
555
|
"os": [
|
|
556
556
|
"darwin"
|
|
@@ -561,8 +561,8 @@
|
|
|
561
561
|
"optional": true
|
|
562
562
|
},
|
|
563
563
|
"node_modules/@bastani/atomic-natives-linux-arm64-gnu": {
|
|
564
|
-
"version": "0.9.19-alpha.
|
|
565
|
-
"resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-arm64-gnu/-/atomic-natives-linux-arm64-gnu-0.9.19-alpha.
|
|
564
|
+
"version": "0.9.19-alpha.4",
|
|
565
|
+
"resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-arm64-gnu/-/atomic-natives-linux-arm64-gnu-0.9.19-alpha.4.tgz",
|
|
566
566
|
"license": "MIT",
|
|
567
567
|
"os": [
|
|
568
568
|
"linux"
|
|
@@ -576,8 +576,8 @@
|
|
|
576
576
|
"optional": true
|
|
577
577
|
},
|
|
578
578
|
"node_modules/@bastani/atomic-natives-linux-arm64-musl": {
|
|
579
|
-
"version": "0.9.19-alpha.
|
|
580
|
-
"resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-arm64-musl/-/atomic-natives-linux-arm64-musl-0.9.19-alpha.
|
|
579
|
+
"version": "0.9.19-alpha.4",
|
|
580
|
+
"resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-arm64-musl/-/atomic-natives-linux-arm64-musl-0.9.19-alpha.4.tgz",
|
|
581
581
|
"license": "MIT",
|
|
582
582
|
"os": [
|
|
583
583
|
"linux"
|
|
@@ -591,8 +591,8 @@
|
|
|
591
591
|
"optional": true
|
|
592
592
|
},
|
|
593
593
|
"node_modules/@bastani/atomic-natives-linux-x64-gnu": {
|
|
594
|
-
"version": "0.9.19-alpha.
|
|
595
|
-
"resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-x64-gnu/-/atomic-natives-linux-x64-gnu-0.9.19-alpha.
|
|
594
|
+
"version": "0.9.19-alpha.4",
|
|
595
|
+
"resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-x64-gnu/-/atomic-natives-linux-x64-gnu-0.9.19-alpha.4.tgz",
|
|
596
596
|
"license": "MIT",
|
|
597
597
|
"os": [
|
|
598
598
|
"linux"
|
|
@@ -606,8 +606,8 @@
|
|
|
606
606
|
"optional": true
|
|
607
607
|
},
|
|
608
608
|
"node_modules/@bastani/atomic-natives-linux-x64-musl": {
|
|
609
|
-
"version": "0.9.19-alpha.
|
|
610
|
-
"resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-x64-musl/-/atomic-natives-linux-x64-musl-0.9.19-alpha.
|
|
609
|
+
"version": "0.9.19-alpha.4",
|
|
610
|
+
"resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-x64-musl/-/atomic-natives-linux-x64-musl-0.9.19-alpha.4.tgz",
|
|
611
611
|
"license": "MIT",
|
|
612
612
|
"os": [
|
|
613
613
|
"linux"
|
|
@@ -621,8 +621,8 @@
|
|
|
621
621
|
"optional": true
|
|
622
622
|
},
|
|
623
623
|
"node_modules/@bastani/atomic-natives-win32-arm64-msvc": {
|
|
624
|
-
"version": "0.9.19-alpha.
|
|
625
|
-
"resolved": "https://registry.npmjs.org/@bastani/atomic-natives-win32-arm64-msvc/-/atomic-natives-win32-arm64-msvc-0.9.19-alpha.
|
|
624
|
+
"version": "0.9.19-alpha.4",
|
|
625
|
+
"resolved": "https://registry.npmjs.org/@bastani/atomic-natives-win32-arm64-msvc/-/atomic-natives-win32-arm64-msvc-0.9.19-alpha.4.tgz",
|
|
626
626
|
"license": "MIT",
|
|
627
627
|
"os": [
|
|
628
628
|
"win32"
|
|
@@ -633,8 +633,8 @@
|
|
|
633
633
|
"optional": true
|
|
634
634
|
},
|
|
635
635
|
"node_modules/@bastani/atomic-natives-win32-x64-msvc": {
|
|
636
|
-
"version": "0.9.19-alpha.
|
|
637
|
-
"resolved": "https://registry.npmjs.org/@bastani/atomic-natives-win32-x64-msvc/-/atomic-natives-win32-x64-msvc-0.9.19-alpha.
|
|
636
|
+
"version": "0.9.19-alpha.4",
|
|
637
|
+
"resolved": "https://registry.npmjs.org/@bastani/atomic-natives-win32-x64-msvc/-/atomic-natives-win32-x64-msvc-0.9.19-alpha.4.tgz",
|
|
638
638
|
"license": "MIT",
|
|
639
639
|
"os": [
|
|
640
640
|
"win32"
|
|
@@ -645,8 +645,8 @@
|
|
|
645
645
|
"optional": true
|
|
646
646
|
},
|
|
647
647
|
"node_modules/@bastani/pi-ai": {
|
|
648
|
-
"version": "0.9.19-alpha.
|
|
649
|
-
"resolved": "https://registry.npmjs.org/@bastani/pi-ai/-/pi-ai-0.9.19-alpha.
|
|
648
|
+
"version": "0.9.19-alpha.4",
|
|
649
|
+
"resolved": "https://registry.npmjs.org/@bastani/pi-ai/-/pi-ai-0.9.19-alpha.4.tgz",
|
|
650
650
|
"license": "MIT",
|
|
651
651
|
"dependencies": {
|
|
652
652
|
"@anthropic-ai/sdk": "0.124.0",
|
|
@@ -816,6 +816,33 @@
|
|
|
816
816
|
"packages/*"
|
|
817
817
|
]
|
|
818
818
|
},
|
|
819
|
+
"node_modules/@dbos-inc/dbos-sdk/node_modules/copy-anything": {
|
|
820
|
+
"version": "3.0.5",
|
|
821
|
+
"resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-3.0.5.tgz",
|
|
822
|
+
"integrity": "sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==",
|
|
823
|
+
"license": "MIT",
|
|
824
|
+
"dependencies": {
|
|
825
|
+
"is-what": "^4.1.8"
|
|
826
|
+
},
|
|
827
|
+
"engines": {
|
|
828
|
+
"node": ">=12.13"
|
|
829
|
+
},
|
|
830
|
+
"funding": {
|
|
831
|
+
"url": "https://github.com/sponsors/mesqueeb"
|
|
832
|
+
}
|
|
833
|
+
},
|
|
834
|
+
"node_modules/@dbos-inc/dbos-sdk/node_modules/superjson": {
|
|
835
|
+
"version": "1.13.3",
|
|
836
|
+
"resolved": "https://registry.npmjs.org/superjson/-/superjson-1.13.3.tgz",
|
|
837
|
+
"integrity": "sha512-mJiVjfd2vokfDxsQPOwJ/PtanO87LhpYY88ubI5dUB1Ab58Txbyje3+jpm+/83R/fevaq/107NNhtYBLuoTrFg==",
|
|
838
|
+
"license": "MIT",
|
|
839
|
+
"dependencies": {
|
|
840
|
+
"copy-anything": "^3.0.2"
|
|
841
|
+
},
|
|
842
|
+
"engines": {
|
|
843
|
+
"node": ">=10"
|
|
844
|
+
}
|
|
845
|
+
},
|
|
819
846
|
"node_modules/@earendil-works/chord": {
|
|
820
847
|
"version": "0.85.1",
|
|
821
848
|
"resolved": "https://registry.npmjs.org/@earendil-works/chord/-/chord-0.85.1.tgz",
|
|
@@ -2397,21 +2424,6 @@
|
|
|
2397
2424
|
"node": ">=6.6.0"
|
|
2398
2425
|
}
|
|
2399
2426
|
},
|
|
2400
|
-
"node_modules/copy-anything": {
|
|
2401
|
-
"version": "3.0.5",
|
|
2402
|
-
"resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-3.0.5.tgz",
|
|
2403
|
-
"integrity": "sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==",
|
|
2404
|
-
"license": "MIT",
|
|
2405
|
-
"dependencies": {
|
|
2406
|
-
"is-what": "^4.1.8"
|
|
2407
|
-
},
|
|
2408
|
-
"engines": {
|
|
2409
|
-
"node": ">=12.13"
|
|
2410
|
-
},
|
|
2411
|
-
"funding": {
|
|
2412
|
-
"url": "https://github.com/sponsors/mesqueeb"
|
|
2413
|
-
}
|
|
2414
|
-
},
|
|
2415
2427
|
"node_modules/core-util-is": {
|
|
2416
2428
|
"version": "1.0.3",
|
|
2417
2429
|
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
|
|
@@ -4839,18 +4851,6 @@
|
|
|
4839
4851
|
"url": "https://github.com/sponsors/Borewit"
|
|
4840
4852
|
}
|
|
4841
4853
|
},
|
|
4842
|
-
"node_modules/superjson": {
|
|
4843
|
-
"version": "1.13.3",
|
|
4844
|
-
"resolved": "https://registry.npmjs.org/superjson/-/superjson-1.13.3.tgz",
|
|
4845
|
-
"integrity": "sha512-mJiVjfd2vokfDxsQPOwJ/PtanO87LhpYY88ubI5dUB1Ab58Txbyje3+jpm+/83R/fevaq/107NNhtYBLuoTrFg==",
|
|
4846
|
-
"license": "MIT",
|
|
4847
|
-
"dependencies": {
|
|
4848
|
-
"copy-anything": "^3.0.2"
|
|
4849
|
-
},
|
|
4850
|
-
"engines": {
|
|
4851
|
-
"node": ">=10"
|
|
4852
|
-
}
|
|
4853
|
-
},
|
|
4854
4854
|
"node_modules/toidentifier": {
|
|
4855
4855
|
"version": "1.0.1",
|
|
4856
4856
|
"resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bastani/atomic",
|
|
3
|
-
"version": "0.9.19-alpha.
|
|
3
|
+
"version": "0.9.19-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": {
|
|
@@ -79,8 +79,8 @@
|
|
|
79
79
|
"prepublishOnly": "bun run clean && bun run build && bun run shrinkwrap"
|
|
80
80
|
},
|
|
81
81
|
"dependencies": {
|
|
82
|
-
"@bastani/atomic-natives": "0.9.19-alpha.
|
|
83
|
-
"@bastani/pi-ai": "0.9.19-alpha.
|
|
82
|
+
"@bastani/atomic-natives": "0.9.19-alpha.4",
|
|
83
|
+
"@bastani/pi-ai": "0.9.19-alpha.4",
|
|
84
84
|
"@dbos-inc/dbos-sdk": "4.25.14",
|
|
85
85
|
"@earendil-works/pi-agent-core": "0.85.1",
|
|
86
86
|
"@earendil-works/pi-client": "0.85.1",
|