@bastani/atomic 0.8.21 → 0.8.22-0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +40 -9
- package/dist/builtin/intercom/broker/broker.ts +3 -3
- package/dist/builtin/intercom/config.ts +3 -3
- package/dist/builtin/intercom/index.ts +1 -1
- package/dist/builtin/intercom/package.json +1 -1
- package/dist/builtin/intercom/ui/compose.ts +2 -2
- package/dist/builtin/mcp/host-html-template.ts +0 -3
- package/dist/builtin/mcp/package.json +1 -1
- package/dist/builtin/subagents/CHANGELOG.md +13 -4
- package/dist/builtin/subagents/agents/codebase-online-researcher.md +9 -9
- package/dist/builtin/subagents/agents/debugger.md +6 -6
- package/dist/builtin/subagents/package.json +1 -1
- package/dist/builtin/subagents/prompts/parallel-handoff-plan.md +1 -1
- package/dist/builtin/subagents/skills/browser-use/SKILL.md +234 -0
- package/dist/builtin/subagents/skills/browser-use/references/cdp-python.md +76 -0
- package/dist/builtin/subagents/skills/browser-use/references/multi-session.md +92 -0
- package/dist/builtin/subagents/skills/subagent/SKILL.md +4 -4
- package/dist/builtin/subagents/src/agents/skills.ts +19 -1
- package/dist/builtin/subagents/src/extension/index.ts +24 -22
- package/dist/builtin/subagents/src/intercom/intercom-bridge.ts +7 -1
- package/dist/builtin/subagents/src/runs/background/async-execution.ts +23 -7
- package/dist/builtin/subagents/src/runs/background/async-job-tracker.ts +98 -3
- package/dist/builtin/subagents/src/runs/background/async-status.ts +3 -1
- package/dist/builtin/subagents/src/runs/background/run-status.ts +1 -1
- package/dist/builtin/subagents/src/runs/background/stale-run-reconciler.ts +3 -0
- package/dist/builtin/subagents/src/runs/background/subagent-runner.ts +37 -12
- package/dist/builtin/subagents/src/runs/foreground/chain-clarify.ts +15 -15
- package/dist/builtin/subagents/src/runs/foreground/execution.ts +26 -2
- package/dist/builtin/subagents/src/runs/shared/nested-render.ts +1 -1
- package/dist/builtin/subagents/src/runs/shared/parallel-utils.ts +7 -0
- package/dist/builtin/subagents/src/runs/shared/pi-args.ts +28 -1
- package/dist/builtin/subagents/src/shared/fast-mode.ts +80 -0
- package/dist/builtin/subagents/src/shared/formatters.ts +4 -2
- package/dist/builtin/subagents/src/shared/types.ts +4 -2
- package/dist/builtin/subagents/src/shared/utils.ts +3 -61
- package/dist/builtin/subagents/src/tui/render.ts +303 -157
- package/dist/builtin/web-access/package.json +1 -1
- package/dist/builtin/workflows/CHANGELOG.md +95 -35
- package/dist/builtin/workflows/README.md +228 -41
- package/dist/builtin/workflows/builtin/deep-research-codebase.ts +535 -541
- package/dist/builtin/workflows/builtin/goal.ts +39 -25
- package/dist/builtin/workflows/builtin/open-claude-design.ts +66 -69
- package/dist/builtin/workflows/builtin/ralph.ts +21 -21
- package/dist/builtin/workflows/package.json +6 -5
- package/dist/builtin/workflows/skills/research-codebase/SKILL.md +1 -1
- package/dist/builtin/workflows/src/extension/background-ui-adapter.ts +2 -2
- package/dist/builtin/workflows/src/extension/discovery.ts +25 -146
- package/dist/builtin/workflows/src/extension/dispatcher.ts +72 -24
- package/dist/builtin/workflows/src/extension/hil-answer-notifications.ts +363 -0
- package/dist/builtin/workflows/src/extension/index.ts +690 -352
- package/dist/builtin/workflows/src/extension/lifecycle-notifications.ts +99 -62
- package/dist/builtin/workflows/src/extension/render-call.ts +2 -1
- package/dist/builtin/workflows/src/extension/render-result.ts +9 -3
- package/dist/builtin/workflows/src/extension/renderers.ts +5 -3
- package/dist/builtin/workflows/src/extension/runtime.ts +68 -33
- package/dist/builtin/workflows/src/extension/status-writer.ts +1 -1
- package/dist/builtin/workflows/src/extension/wiring.ts +34 -13
- package/dist/builtin/workflows/src/extension/workflow-module-loader.ts +142 -0
- package/dist/builtin/workflows/src/extension/workflow-schema.ts +4 -4
- package/dist/builtin/workflows/src/index.ts +2 -0
- package/dist/builtin/workflows/src/intercom/result-intercom.ts +1 -1
- package/dist/builtin/workflows/src/runs/background/runner.ts +6 -4
- package/dist/builtin/workflows/src/runs/background/status.ts +45 -21
- package/dist/builtin/workflows/src/runs/foreground/executor.ts +624 -52
- package/dist/builtin/workflows/src/runs/foreground/stage-control-registry.ts +1 -1
- package/dist/builtin/workflows/src/runs/foreground/stage-runner.ts +80 -24
- package/dist/builtin/workflows/src/runs/shared/validate-inputs.ts +61 -24
- package/dist/builtin/workflows/src/runs/shared/workflow-runner.ts +32 -10
- package/dist/builtin/workflows/src/sdk-surface.ts +6 -0
- package/dist/builtin/workflows/src/shared/expanded-workflow-graph.ts +178 -0
- package/dist/builtin/workflows/src/shared/persistence-restore.ts +92 -12
- package/dist/builtin/workflows/src/shared/persistence-session-entries.ts +21 -3
- package/dist/builtin/workflows/src/shared/render-inputs-schema.ts +1 -2
- package/dist/builtin/workflows/src/shared/run-visibility.ts +9 -0
- package/dist/builtin/workflows/src/shared/schema-introspection.ts +121 -0
- package/dist/builtin/workflows/src/shared/serializable.ts +132 -0
- package/dist/builtin/workflows/src/shared/stage-ui-broker.ts +91 -9
- package/dist/builtin/workflows/src/shared/store-types.ts +31 -3
- package/dist/builtin/workflows/src/shared/store.ts +58 -14
- package/dist/builtin/workflows/src/shared/types.ts +105 -40
- package/dist/builtin/workflows/src/tui/chat-surface-message.ts +129 -13
- package/dist/builtin/workflows/src/tui/chat-surface.ts +6 -1
- package/dist/builtin/workflows/src/tui/dispatch-confirm.ts +3 -2
- package/dist/builtin/workflows/src/tui/graph-canvas.ts +1 -1
- package/dist/builtin/workflows/src/tui/graph-view.ts +91 -65
- package/dist/builtin/workflows/src/tui/inline-form-card.ts +1 -1
- package/dist/builtin/workflows/src/tui/inline-form-overlay.ts +3 -2
- package/dist/builtin/workflows/src/tui/inputs-overlay.ts +3 -2
- package/dist/builtin/workflows/src/tui/inputs-picker.ts +8 -7
- package/dist/builtin/workflows/src/tui/keybindings-adapter.ts +2 -0
- package/dist/builtin/workflows/src/tui/node-card.ts +34 -8
- package/dist/builtin/workflows/src/tui/overlay-adapter.ts +4 -11
- package/dist/builtin/workflows/src/tui/prompt-card.ts +98 -50
- package/dist/builtin/workflows/src/tui/session-list.ts +7 -2
- package/dist/builtin/workflows/src/tui/session-picker.ts +2 -0
- package/dist/builtin/workflows/src/tui/stage-chat-view.ts +226 -55
- package/dist/builtin/workflows/src/tui/status-helpers.ts +2 -0
- package/dist/builtin/workflows/src/tui/store-widget-installer.ts +37 -158
- package/dist/builtin/workflows/src/tui/toast.ts +2 -2
- package/dist/builtin/workflows/src/tui/widget.ts +53 -12
- package/dist/builtin/workflows/src/tui/workflow-attach-pane.ts +270 -19
- package/dist/builtin/workflows/src/tui/workflow-notice-card.ts +184 -0
- package/dist/builtin/workflows/src/workflows/define-workflow.ts +138 -43
- package/dist/config.d.ts +9 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +45 -0
- package/dist/config.js.map +1 -1
- package/dist/core/agent-session.d.ts +27 -9
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +196 -17
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/atomic-guide-command.d.ts.map +1 -1
- package/dist/core/atomic-guide-command.js +2 -2
- package/dist/core/atomic-guide-command.js.map +1 -1
- package/dist/core/codex-fast-mode.d.ts +36 -0
- package/dist/core/codex-fast-mode.d.ts.map +1 -0
- package/dist/core/codex-fast-mode.js +117 -0
- package/dist/core/codex-fast-mode.js.map +1 -0
- package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
- package/dist/core/compaction/branch-summarization.js +1 -1
- package/dist/core/compaction/branch-summarization.js.map +1 -1
- package/dist/core/compaction/compaction.d.ts.map +1 -1
- package/dist/core/compaction/compaction.js +1 -1
- package/dist/core/compaction/compaction.js.map +1 -1
- package/dist/core/extensions/index.d.ts +4 -1
- package/dist/core/extensions/index.d.ts.map +1 -1
- package/dist/core/extensions/index.js +1 -0
- package/dist/core/extensions/index.js.map +1 -1
- package/dist/core/extensions/loader.d.ts +7 -2
- package/dist/core/extensions/loader.d.ts.map +1 -1
- package/dist/core/extensions/loader.js +23 -8
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/extensions/reactive-widget.d.ts +58 -0
- package/dist/core/extensions/reactive-widget.d.ts.map +1 -0
- package/dist/core/extensions/reactive-widget.js +182 -0
- package/dist/core/extensions/reactive-widget.js.map +1 -0
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +1 -0
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/types.d.ts +26 -12
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/messages.d.ts +1 -1
- package/dist/core/messages.d.ts.map +1 -1
- package/dist/core/messages.js +8 -2
- package/dist/core/messages.js.map +1 -1
- package/dist/core/model-registry.d.ts +4 -0
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-registry.js +11 -0
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/resource-loader.d.ts +9 -1
- package/dist/core/resource-loader.d.ts.map +1 -1
- package/dist/core/resource-loader.js +49 -21
- package/dist/core/resource-loader.js.map +1 -1
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +22 -13
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/session-manager.d.ts +7 -5
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +5 -3
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/settings-manager.d.ts +16 -0
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +64 -5
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +1 -0
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/system-prompt.d.ts.map +1 -1
- package/dist/core/system-prompt.js +7 -4
- package/dist/core/system-prompt.js.map +1 -1
- package/dist/core/tools/ask-user-question/ask-user-question.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/ask-user-question.js +2 -2
- package/dist/core/tools/ask-user-question/ask-user-question.js.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts +3 -0
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +12 -0
- package/dist/main.js.map +1 -1
- package/dist/modes/interactive/chat-input-actions.d.ts.map +1 -1
- package/dist/modes/interactive/chat-input-actions.js.map +1 -1
- package/dist/modes/interactive/components/diff.d.ts.map +1 -1
- package/dist/modes/interactive/components/diff.js +0 -1
- package/dist/modes/interactive/components/diff.js.map +1 -1
- package/dist/modes/interactive/components/fast-mode-selector.d.ts +27 -0
- package/dist/modes/interactive/components/fast-mode-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/fast-mode-selector.js +105 -0
- package/dist/modes/interactive/components/fast-mode-selector.js.map +1 -0
- package/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/dist/modes/interactive/components/footer.js +7 -12
- package/dist/modes/interactive/components/footer.js.map +1 -1
- package/dist/modes/interactive/components/index.d.ts +1 -0
- package/dist/modes/interactive/components/index.d.ts.map +1 -1
- package/dist/modes/interactive/components/index.js +1 -0
- package/dist/modes/interactive/components/index.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +4 -0
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +132 -30
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/print-mode.d.ts.map +1 -1
- package/dist/modes/print-mode.js +53 -6
- package/dist/modes/print-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-mode.js +3 -0
- package/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/docs/compaction.md +1 -1
- package/docs/custom-provider.md +2 -2
- package/docs/development.md +2 -2
- package/docs/docs.json +2 -2
- package/docs/extensions.md +18 -13
- package/docs/providers.md +5 -1
- package/docs/quickstart.md +5 -3
- package/docs/rpc.md +5 -5
- package/docs/sdk.md +12 -12
- package/docs/settings.md +18 -0
- package/docs/themes.md +6 -6
- package/docs/tui.md +20 -18
- package/docs/usage.md +2 -0
- package/docs/workflows.md +403 -39
- package/examples/extensions/qna.ts +2 -2
- package/package.json +4 -4
- package/dist/builtin/subagents/skills/playwright-cli/SKILL.md +0 -392
- package/dist/builtin/subagents/skills/playwright-cli/references/element-attributes.md +0 -23
- package/dist/builtin/subagents/skills/playwright-cli/references/playwright-tests.md +0 -39
- package/dist/builtin/subagents/skills/playwright-cli/references/request-mocking.md +0 -87
- package/dist/builtin/subagents/skills/playwright-cli/references/running-code.md +0 -241
- package/dist/builtin/subagents/skills/playwright-cli/references/session-management.md +0 -225
- package/dist/builtin/subagents/skills/playwright-cli/references/spec-driven-testing.md +0 -305
- package/dist/builtin/subagents/skills/playwright-cli/references/storage-state.md +0 -275
- package/dist/builtin/subagents/skills/playwright-cli/references/test-generation.md +0 -134
- package/dist/builtin/subagents/skills/playwright-cli/references/tracing.md +0 -139
- package/dist/builtin/subagents/skills/playwright-cli/references/video-recording.md +0 -143
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,37 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
## [0.8.22-0] - 2026-06-01
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
|
|
9
|
+
- Added `ExtensionUIContext.requestRender()` and a shared reactive widget installer for extensions to mount widgets once, repaint via coalesced render requests, and own timer-based refreshes without remount flicker ([#1150](https://github.com/bastani-inc/atomic/issues/1150)).
|
|
10
|
+
- Added `/fast` Codex fast mode toggles for chat and workflow-stage sessions, applying OpenAI priority service tier to supported `openai/*` and `openai-codex/*` models only; active supported models now show a visible `fast` indicator after the model name ([#1134](https://github.com/bastani-inc/atomic/issues/1134)).
|
|
11
|
+
- Added extension custom-message `deliverAs: "interrupt"` delivery so first-party extensions can abort a stale streaming turn and start an immediate custom-message turn ([#1137](https://github.com/bastani-inc/atomic/issues/1137)).
|
|
12
|
+
- Added an `interruptAbortMessage` option for interrupt-delivered extension messages so meaningful external events can replace generic `Operation aborted` tool output ([#1137](https://github.com/bastani-inc/atomic/issues/1137)).
|
|
13
|
+
|
|
14
|
+
### Changed
|
|
15
|
+
|
|
16
|
+
- Documented direct `ctx.workflow(compiledWorkflow, options)` composition, TypeScript module-style child workflow calls, reusable builtin workflow modules, and child workflow output contracts in the bundled workflow authoring guide.
|
|
17
|
+
- Refined the `/fast` selector into a conventional toggle UI with on/off states, clearer scope descriptions, and space/enter toggle support ([#1134](https://github.com/bastani-inc/atomic/issues/1134)).
|
|
18
|
+
- Compressed the `/fast` selector copy, row layout, and per-change status message so the summary, toggles, scopes, and keyboard hints stay readable without duplicate off/standard-tier messaging ([#1134](https://github.com/bastani-inc/atomic/issues/1134)).
|
|
19
|
+
- Clarified workflow-creation guidance so Atomic asks clarifying questions and writes first-time workflows directly, reserving `/goal` for explicitly chosen long-running reviewer-gated implementation.
|
|
20
|
+
- Tightened workflow tool guidance so Atomic monitors long-running workflow runs periodically without micro-managing stages, steers only when appropriate, and inspects transcript paths surgically instead of reading whole session logs.
|
|
21
|
+
- Expanded the workflow authoring docs for composing user-defined workflows and builtin child workflows such as `deep-research-codebase`, `goal`, and `ralph`, including explicit output contracts and the `.run()` return-object convention for the implicit string `result` output.
|
|
22
|
+
- Documented the current workflow tool action surface, lifecycle notices, human-in-the-loop answer notifications, workflow notification config, `/workflow` slash-command discovery, and workflow Codex fast-mode behavior ([#1151](https://github.com/bastani-inc/atomic/issues/1151)).
|
|
23
|
+
|
|
24
|
+
### Fixed
|
|
25
|
+
|
|
26
|
+
- Added a host workflow-resource refresh path so workflow reloads can re-read package manifests without a full Atomic reload ([#1155](https://github.com/bastani-inc/atomic/issues/1155)).
|
|
27
|
+
- Preserved custom registered provider streamers when Codex fast mode is enabled for native OpenAI response APIs ([#1134](https://github.com/bastani-inc/atomic/issues/1134)).
|
|
28
|
+
- Fixed `/fast` changes so the banner/footer and current session update immediately, and inherited chat fast-mode state now reaches subagent child sessions without waiting for a restart ([#1134](https://github.com/bastani-inc/atomic/issues/1134)).
|
|
29
|
+
- Fixed `/fast` persistence so existing project-level fast-mode overrides are updated alongside global settings for the changed scope without clobbering untouched global chat or workflow fast-mode preferences ([#1134](https://github.com/bastani-inc/atomic/issues/1134)).
|
|
30
|
+
- Made Codex fast-mode request helpers require an explicit enabled flag and treat `service_tier: undefined` as unset when preparing OpenAI payloads ([#1134](https://github.com/bastani-inc/atomic/issues/1134)).
|
|
31
|
+
- Fixed attached workflow-stage chat footers to resolve the `fast` model indicator against workflow fast-mode settings instead of chat settings ([#1134](https://github.com/bastani-inc/atomic/issues/1134)).
|
|
32
|
+
- Scoped print-mode non-zero extension-error exits to command-originated failures so non-fatal lifecycle extension errors do not fail otherwise successful headless output ([#1123](https://github.com/bastani-inc/atomic/issues/1123)).
|
|
33
|
+
- Fixed `ask_user_question` custom UI abort handling so interrupt-delivered workflow HiL answer notices are not stuck behind a blocking question modal ([#1137](https://github.com/bastani-inc/atomic/issues/1137)).
|
|
34
|
+
- Fixed print-mode slash-command output for headless `/workflow` automation by printing final displayable custom messages and treating command-originated extension errors as non-zero while suppressing stale final output ([#1156](https://github.com/bastani-inc/atomic/issues/1156)).
|
|
35
|
+
|
|
5
36
|
## [0.8.21] - 2026-05-30
|
|
6
37
|
|
|
7
38
|
### Changed
|
|
@@ -12,7 +43,7 @@
|
|
|
12
43
|
|
|
13
44
|
### Changed
|
|
14
45
|
|
|
15
|
-
- Upgraded the pi runtime packages (`@earendil-works/pi-agent-core`, `@earendil-works/pi-ai`, `@earendil-works/pi-tui`) to 0.78.0 and aligned skill name validation with upstream pi so frontmatter names no longer need to match parent directory names ([#1124](https://github.com/
|
|
46
|
+
- Upgraded the pi runtime packages (`@earendil-works/pi-agent-core`, `@earendil-works/pi-ai`, `@earendil-works/pi-tui`) to 0.78.0 and aligned skill name validation with upstream pi so frontmatter names no longer need to match parent directory names ([#1124](https://github.com/bastani-inc/atomic/issues/1124)).
|
|
16
47
|
|
|
17
48
|
## [0.8.20] - 2026-05-29
|
|
18
49
|
|
|
@@ -25,13 +56,13 @@
|
|
|
25
56
|
### Added
|
|
26
57
|
|
|
27
58
|
- Added session-scoped `orchestrationContext` support to SDK agent sessions and extension contexts for workflow-stage policy enforcement.
|
|
28
|
-
- Added support for the Claude Opus 4.8 model across model configuration, selection, and validation via the `@earendil-works/pi-ai` 0.77.0 upgrade ([#1097](https://github.com/
|
|
59
|
+
- Added support for the Claude Opus 4.8 model across model configuration, selection, and validation via the `@earendil-works/pi-ai` 0.77.0 upgrade ([#1097](https://github.com/bastani-inc/atomic/issues/1097)).
|
|
29
60
|
|
|
30
61
|
### Changed
|
|
31
62
|
|
|
32
63
|
- Upgraded the pi runtime packages (`@earendil-works/pi-agent-core`, `@earendil-works/pi-ai`, `@earendil-works/pi-tui`) from 0.75.5 to 0.77.0 and bumped `@modelcontextprotocol/ext-apps` to 1.7.2, `highlight.js` to 11.x, `linkedom` to 0.18.x, `undici` to 8.x, and `vitest` (dev) to 4.x.
|
|
33
64
|
- Switched the `highlight.js` import to the package-root default export and replaced the Node stream pipeline in the tools downloader with `Bun.write()` to align with the upgraded dependencies.
|
|
34
|
-
- Pinned the footer (model + cwd identity) directly under the editor and moved below-editor widgets beneath it (separated by a blank line), so transient run status such as the workflow companion counter renders at the very bottom instead of separating the footer from the input. Stacked below-editor widgets (e.g. the async-subagent widget and the workflow run counter) are also separated from each other by a blank line. Rendering below-editor widgets last keeps a live widget at the bottom of the buffer (within the viewport), preserving the widget resize-flicker fix. Extension-provided custom footers are now swapped in place (rather than appended), so installing a custom footer keeps the below-editor widget container as the last UI child and does not regress this ordering ([#1109](https://github.com/
|
|
65
|
+
- Pinned the footer (model + cwd identity) directly under the editor and moved below-editor widgets beneath it (separated by a blank line), so transient run status such as the workflow companion counter renders at the very bottom instead of separating the footer from the input. Stacked below-editor widgets (e.g. the async-subagent widget and the workflow run counter) are also separated from each other by a blank line. Rendering below-editor widgets last keeps a live widget at the bottom of the buffer (within the viewport), preserving the widget resize-flicker fix. Extension-provided custom footers are now swapped in place (rather than appended), so installing a custom footer keeps the below-editor widget container as the last UI child and does not regress this ordering ([#1109](https://github.com/bastani-inc/atomic/issues/1109)).
|
|
35
66
|
|
|
36
67
|
## [0.8.19] - 2026-05-27
|
|
37
68
|
|
|
@@ -55,7 +86,7 @@
|
|
|
55
86
|
|
|
56
87
|
### Added
|
|
57
88
|
|
|
58
|
-
- Added SDK `excludeTools` support for omitting named built-in, extension, and custom tools from `createAgentSession()` sessions while preserving existing `tools` and `noTools` behavior ([#1070](https://github.com/
|
|
89
|
+
- Added SDK `excludeTools` support for omitting named built-in, extension, and custom tools from `createAgentSession()` sessions while preserving existing `tools` and `noTools` behavior ([#1070](https://github.com/bastani-inc/atomic/issues/1070)).
|
|
59
90
|
|
|
60
91
|
### Changed
|
|
61
92
|
|
|
@@ -71,11 +102,11 @@
|
|
|
71
102
|
|
|
72
103
|
### Breaking Changes
|
|
73
104
|
|
|
74
|
-
- Removed bundled Ralph's configurable `review_quorum` and `blocker_threshold` inputs; `max_turns` remains configurable alongside `objective` and optional `base_branch` ([#1061](https://github.com/
|
|
105
|
+
- Removed bundled Ralph's configurable `review_quorum` and `blocker_threshold` inputs; `max_turns` remains configurable alongside `objective` and optional `base_branch` ([#1061](https://github.com/bastani-inc/atomic/issues/1061)).
|
|
75
106
|
|
|
76
107
|
### Changed
|
|
77
108
|
|
|
78
|
-
- Updated bundled Ralph docs and prompts to more closely match Codex `/goal` continuation guidance while retaining deterministic reviewer-gated completion ([#1061](https://github.com/
|
|
109
|
+
- Updated bundled Ralph docs and prompts to more closely match Codex `/goal` continuation guidance while retaining deterministic reviewer-gated completion ([#1061](https://github.com/bastani-inc/atomic/issues/1061)).
|
|
79
110
|
- Restored bundled Ralph's stronger historical review gate prompt and `review_decision` schema with findings, oracle satisfaction, receipt assessment, verification remaining, and reviewer-error guard fields.
|
|
80
111
|
|
|
81
112
|
## [0.8.16] - 2026-05-26
|
|
@@ -88,15 +119,15 @@
|
|
|
88
119
|
|
|
89
120
|
### Breaking Changes
|
|
90
121
|
|
|
91
|
-
- Removed Ralph's `prompt` and `max_loops` compatibility inputs from the bundled workflow; use `objective` and `max_turns` instead ([#1061](https://github.com/
|
|
122
|
+
- Removed Ralph's `prompt` and `max_loops` compatibility inputs from the bundled workflow; use `objective` and `max_turns` instead ([#1061](https://github.com/bastani-inc/atomic/issues/1061)).
|
|
92
123
|
|
|
93
124
|
### Changed
|
|
94
125
|
|
|
95
|
-
- Updated bundled Ralph docs and guide examples for the Goal Runner workflow with goal-ledger receipts, reviewer quorum, repeated-blocker gating, and `max_turns`/`objective` inputs ([#1061](https://github.com/
|
|
126
|
+
- Updated bundled Ralph docs and guide examples for the Goal Runner workflow with goal-ledger receipts, reviewer quorum, repeated-blocker gating, and `max_turns`/`objective` inputs ([#1061](https://github.com/bastani-inc/atomic/issues/1061)).
|
|
96
127
|
|
|
97
128
|
### Fixed
|
|
98
129
|
|
|
99
|
-
- Clarified bundled Ralph's bounded `blocker_threshold` behavior ([#1061](https://github.com/
|
|
130
|
+
- Clarified bundled Ralph's bounded `blocker_threshold` behavior ([#1061](https://github.com/bastani-inc/atomic/issues/1061)).
|
|
100
131
|
|
|
101
132
|
## [0.8.15] - 2026-05-26
|
|
102
133
|
|
|
@@ -185,12 +185,12 @@ class IntercomBroker {
|
|
|
185
185
|
if (currentId) {
|
|
186
186
|
throw new Error("Received duplicate register message");
|
|
187
187
|
}
|
|
188
|
-
|
|
188
|
+
|
|
189
189
|
const id = randomUUID();
|
|
190
190
|
setId(id);
|
|
191
191
|
const info: SessionInfo = { ...clientMessage.session, id };
|
|
192
192
|
this.sessions.set(id, { socket, info });
|
|
193
|
-
|
|
193
|
+
|
|
194
194
|
if (this.shutdownTimer) {
|
|
195
195
|
clearTimeout(this.shutdownTimer);
|
|
196
196
|
this.shutdownTimer = null;
|
|
@@ -321,7 +321,7 @@ class IntercomBroker {
|
|
|
321
321
|
|
|
322
322
|
private shutdown(): void {
|
|
323
323
|
console.log("Broker shutting down");
|
|
324
|
-
|
|
324
|
+
|
|
325
325
|
for (const session of this.sessions.values()) {
|
|
326
326
|
session.socket.end();
|
|
327
327
|
}
|
|
@@ -13,10 +13,10 @@ export interface IntercomConfig {
|
|
|
13
13
|
|
|
14
14
|
/** Optional custom status suffix shown after automatic lifecycle status */
|
|
15
15
|
status?: string;
|
|
16
|
-
|
|
16
|
+
|
|
17
17
|
/** Enable/disable intercom (default: true) */
|
|
18
18
|
enabled: boolean;
|
|
19
|
-
|
|
19
|
+
|
|
20
20
|
/** Show reply hint in incoming messages (default: true) */
|
|
21
21
|
replyHint: boolean;
|
|
22
22
|
}
|
|
@@ -36,7 +36,7 @@ export function loadConfig(): IntercomConfig {
|
|
|
36
36
|
if (!existsSync(CONFIG_PATH)) {
|
|
37
37
|
return { ...defaults };
|
|
38
38
|
}
|
|
39
|
-
|
|
39
|
+
|
|
40
40
|
try {
|
|
41
41
|
const raw = readFileSync(CONFIG_PATH, "utf-8");
|
|
42
42
|
const parsed: unknown = JSON.parse(raw);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bastani/intercom",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.22-0",
|
|
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": [
|
|
@@ -100,14 +100,14 @@ export class ComposeOverlay implements Component {
|
|
|
100
100
|
const result = await this.client.send(this.target.id, {
|
|
101
101
|
text: this.inputBuffer.trim(),
|
|
102
102
|
});
|
|
103
|
-
|
|
103
|
+
|
|
104
104
|
if (!result.delivered) {
|
|
105
105
|
this.error = result.reason ?? "Message not delivered. Session may not exist or has disconnected.";
|
|
106
106
|
this.sending = false;
|
|
107
107
|
this.tui.requestRender();
|
|
108
108
|
return;
|
|
109
109
|
}
|
|
110
|
-
|
|
110
|
+
|
|
111
111
|
this.done({
|
|
112
112
|
sent: true,
|
|
113
113
|
messageId: result.id,
|
|
@@ -17,13 +17,10 @@ export interface HostHtmlTemplateInput {
|
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
export function buildHostHtmlTemplate(input: HostHtmlTemplateInput): string {
|
|
20
|
-
const cspContent = buildCspMetaContent(input.resource.meta.csp);
|
|
21
|
-
const resourceHtml = applyCspMeta(input.resource.html, cspContent);
|
|
22
20
|
const hostContext = input.hostContext ?? {};
|
|
23
21
|
|
|
24
22
|
const sessionToken = safeInlineJSON(input.sessionToken);
|
|
25
23
|
const toolArgs = safeInlineJSON(input.toolArgs);
|
|
26
|
-
const uiHtml = safeInlineJSON(resourceHtml);
|
|
27
24
|
const serverName = safeInlineJSON(input.serverName);
|
|
28
25
|
const toolName = safeInlineJSON(input.toolName);
|
|
29
26
|
const hostContextJson = safeInlineJSON(hostContext);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bastani/mcp",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.22-0",
|
|
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,15 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
## [0.8.22-0] - 2026-06-01
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
- Show Codex fast-mode launch metadata in foreground subagent result badges, async subagent widgets, and async status output when eligible OpenAI/OpenAI Codex child runs start with `/fast` enabled ([#1153](https://github.com/bastani-inc/atomic/issues/1153)).
|
|
9
|
+
- Scope subagent Codex fast-mode launches to the parent chat surface, so main-chat subagents follow `codexFastMode.chat` while workflow-node subagents follow `codexFastMode.workflow` ([#1153](https://github.com/bastani-inc/atomic/issues/1153)).
|
|
10
|
+
- Keep the async subagent widget mounted across visible status updates, capture widget animation clocks outside arbitrary host re-renders, and animate foreground subagent chatbox spinners with spinner-only ticks that leave elapsed/activity text stable between semantic progress updates ([#1150](https://github.com/bastani-inc/atomic/issues/1150)).
|
|
11
|
+
- Harden global npm skill discovery by suppressing noisy probe output while keeping a conservative timeout and caching failures for constrained environments.
|
|
12
|
+
- Hydrate active async subagent runs from durable status files into the below-editor widget so background work visible via `subagent({ action: "status" })` also appears in the TUI after launch/session rebinding ([#1146](https://github.com/bastani-inc/atomic/issues/1146)).
|
|
13
|
+
|
|
5
14
|
## [0.8.20] - 2026-05-29
|
|
6
15
|
|
|
7
16
|
### Changed
|
|
@@ -11,11 +20,11 @@
|
|
|
11
20
|
|
|
12
21
|
### Fixed
|
|
13
22
|
|
|
14
|
-
- Fixed the subagent running spinner freezing/stuttering and the surrounding TUI flickering while subagents run: the running glyph is now driven by wall-clock time with a steady re-render ticker (result cards, slash result cards, and the async-agents widget), so it animates smoothly and continuously instead of only advancing when progress data changes. Per-frame diffs stay limited to the spinner glyph cell, so the differential renderer keeps doing partial redraws (no full-screen clear / flicker), and the ticker is torn down on completion, reload, and session shutdown ([#1084](https://github.com/
|
|
15
|
-
- Moved the async-agents (background subagent) widget from above the editor to below it (`belowEditor`). The widget animates a running glyph and elapsed labels every tick; pi-tui full-clears the screen+scrollback whenever a changed line sits above the viewport fold, so an above-editor widget flickered once the bottom region grew tall and pushed it above the fold. Rendering below the editor keeps the live line within the bottom viewport (flicker-free) and matches the workflow companion widget's placement ([#1109](https://github.com/
|
|
16
|
-
- Hardened workflow-stage subagent guard propagation tests with an internal executor runtime DI seam ([#1088](https://github.com/
|
|
23
|
+
- Fixed the subagent running spinner freezing/stuttering and the surrounding TUI flickering while subagents run: the running glyph is now driven by wall-clock time with a steady re-render ticker (result cards, slash result cards, and the async-agents widget), so it animates smoothly and continuously instead of only advancing when progress data changes. Per-frame diffs stay limited to the spinner glyph cell, so the differential renderer keeps doing partial redraws (no full-screen clear / flicker), and the ticker is torn down on completion, reload, and session shutdown ([#1084](https://github.com/bastani-inc/atomic/issues/1084)).
|
|
24
|
+
- Moved the async-agents (background subagent) widget from above the editor to below it (`belowEditor`). The widget animates a running glyph and elapsed labels every tick; pi-tui full-clears the screen+scrollback whenever a changed line sits above the viewport fold, so an above-editor widget flickered once the bottom region grew tall and pushed it above the fold. Rendering below the editor keeps the live line within the bottom viewport (flicker-free) and matches the workflow companion widget's placement ([#1109](https://github.com/bastani-inc/atomic/issues/1109)).
|
|
25
|
+
- Hardened workflow-stage subagent guard propagation tests with an internal executor runtime DI seam ([#1088](https://github.com/bastani-inc/atomic/issues/1088)).
|
|
17
26
|
- Capped subagent fanout spawned from workflow stages to a single child level with a workflow-specific nested-subagent error.
|
|
18
|
-
- Fixed builtin subagent skill resolution from project cwd ([#1087](https://github.com/
|
|
27
|
+
- Fixed builtin subagent skill resolution from project cwd ([#1087](https://github.com/bastani-inc/atomic/issues/1087)).
|
|
19
28
|
|
|
20
29
|
## [0.24.3] - 2026-05-14
|
|
21
30
|
|
|
@@ -5,7 +5,7 @@ tools: read, grep, find, ls, bash, write, web_search, fetch_content, get_search_
|
|
|
5
5
|
model: openai/gpt-5.5
|
|
6
6
|
fallbackModels: openai-codex/gpt-5.5, github-copilot/gpt-5.5, anthropic/claude-opus-4-8, github-copilot/claude-opus-4.7
|
|
7
7
|
thinking: low
|
|
8
|
-
skills:
|
|
8
|
+
skills: browser-use
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
You are an expert research specialist focused on finding accurate, relevant information from authoritative sources — including open-source library internals with GitHub permalinks. You have three web tools available from the `pi-web-access` extension:
|
|
@@ -14,11 +14,11 @@ You are an expert research specialist focused on finding accurate, relevant info
|
|
|
14
14
|
- `fetch_content` — fetch a specific URL and return clean reader-mode text/markdown (HTML pages, GitHub issues/PRs, Stack Overflow, npm, arXiv, Reddit, Wikipedia, JSON endpoints, PDFs, RSS/Atom, YouTube). `fetch_content` on a GitHub repo URL also clones the repo locally under `/tmp/pi-github-repos/<owner>/<repo>` and returns the file tree. Prefer this over a raw HTTP fetch.
|
|
15
15
|
- `get_search_content` — fetch the underlying content for the most promising results of a previous `web_search` in one call.
|
|
16
16
|
|
|
17
|
-
For JS-heavy or auth-gated pages, fall back to invoking `
|
|
17
|
+
For JS-heavy or auth-gated pages, fall back to invoking `browser-use` through `bash` (the `browser-use` skill is available).
|
|
18
18
|
|
|
19
19
|
<EXTREMELY_IMPORTANT>
|
|
20
20
|
- PREFER `fetch_content` for static pages; it's faster and cheaper than spinning up a real browser.
|
|
21
|
-
- Reach for the `
|
|
21
|
+
- Reach for the `browser-use` skill via `bash` ONLY when a real DOM/JS is required.
|
|
22
22
|
- ALWAYS check `research/web/` for a recent cached copy before fetching anything new.
|
|
23
23
|
- EVERY code-related claim about an open-source library needs a GitHub **permalink with a full commit SHA** — branch links break when code changes.
|
|
24
24
|
</EXTREMELY_IMPORTANT>
|
|
@@ -40,7 +40,7 @@ When fetching any external page, apply these techniques in order. They produce p
|
|
|
40
40
|
1. **`fetch_content <url>` first.** Returns clean reader-mode text/markdown for nearly every well-formed page (and handles PDFs and JSON). Try it before anything else.
|
|
41
41
|
2. **Check `/llms.txt`.** Many modern docs sites publish an AI-friendly index at `/llms.txt` (spec: [llmstxt.org](https://llmstxt.org/llms.txt)). `fetch_content https://<site>/llms.txt` often links directly to the most relevant pages in plain text, saving a round-trip through the full site.
|
|
42
42
|
3. **Request Markdown via `Accept: text/markdown`.** Sites behind Cloudflare with [Markdown for Agents](https://developers.cloudflare.com/fundamentals/reference/markdown-for-agents/) return pre-converted Markdown when you set the header. Use `bash` with `curl <url> -H "Accept: text/markdown"` (look for `content-type: text/markdown` and the `x-markdown-tokens` header).
|
|
43
|
-
4. **Fall back to a real browser.** Drive `
|
|
43
|
+
4. **Fall back to a real browser.** Drive `browser-use` through `bash` and load the `browser-use` skill to render and interact with JS-heavy or auth-gated pages.
|
|
44
44
|
|
|
45
45
|
## Persisting Findings — Store useful documents in `research/web/`
|
|
46
46
|
|
|
@@ -50,7 +50,7 @@ When you fetch a document that is worth keeping for future sessions (reference d
|
|
|
50
50
|
---
|
|
51
51
|
source_url: <original URL>
|
|
52
52
|
fetched_at: <YYYY-MM-DD>
|
|
53
|
-
fetch_method: read | llms.txt | markdown-accept-header | browser |
|
|
53
|
+
fetch_method: read | llms.txt | markdown-accept-header | browser | browser-use
|
|
54
54
|
topic: <short description>
|
|
55
55
|
---
|
|
56
56
|
```
|
|
@@ -167,12 +167,12 @@ When you receive a research query:
|
|
|
167
167
|
2. **Check the local cache first**. Look in `research/web/` for existing documents on the topic. If a recent (still-relevant) copy exists, cite it before re-fetching.
|
|
168
168
|
3. **Execute strategic searches**.
|
|
169
169
|
- Identify the authoritative source (e.g. the library's official docs site, its GitHub repo, its release notes).
|
|
170
|
-
- Apply the Web Fetch Strategy: `fetch_content <url>` → `/llms.txt` → `Accept: text/markdown` → `
|
|
170
|
+
- Apply the Web Fetch Strategy: `fetch_content <url>` → `/llms.txt` → `Accept: text/markdown` → `browser-use` fallback.
|
|
171
171
|
- Use multiple query variations to capture different perspectives via `web_search`.
|
|
172
172
|
- Use `get_search_content` to bulk-fetch the underlying content of the top results of a `web_search` in one shot.
|
|
173
173
|
- For source repositories, prefer raw GitHub URLs (`https://raw.githubusercontent.com/<owner>/<repo>/<ref>/<path>`) over the HTML UI. For library internals, clone via `fetch_content` and use `grep`/`read` + permalinks.
|
|
174
174
|
4. **Fetch and analyze content**.
|
|
175
|
-
- Use `fetch_content <url>` (or `
|
|
175
|
+
- Use `fetch_content <url>` (or `browser-use` via `bash` when interactivity is required) to pull the full content of promising sources.
|
|
176
176
|
- Prioritize official documentation, reputable technical blogs, and authoritative sources.
|
|
177
177
|
- Extract specific quotes and sections relevant to the query.
|
|
178
178
|
- Note publication dates to ensure currency of information.
|
|
@@ -291,7 +291,7 @@ For library-source answers, every code claim should look like the citation examp
|
|
|
291
291
|
## Search Efficiency
|
|
292
292
|
|
|
293
293
|
- Check `research/web/` for an existing copy before fetching anything new.
|
|
294
|
-
- Start by fetching the authoritative source (`fetch_content <url>` → `/llms.txt` → `Accept: text/markdown` → `
|
|
294
|
+
- Start by fetching the authoritative source (`fetch_content <url>` → `/llms.txt` → `Accept: text/markdown` → `browser-use`) rather than search-engine-style exploration.
|
|
295
295
|
- Use `fetch_content` (or `get_search_content` after a `web_search`) to pull full content from the most promising 3-5 web pages.
|
|
296
296
|
- Reuse already-cloned repos under `/tmp/pi-github-repos/` instead of re-cloning.
|
|
297
297
|
- If initial results are insufficient, refine search terms and try again.
|
|
@@ -314,4 +314,4 @@ For library-source answers, every code claim should look like the citation examp
|
|
|
314
314
|
| Page returns 403 / bot block | Gemini fallback triggers automatically; no action needed if Gemini is configured. |
|
|
315
315
|
| `web_search` fails | Check provider config; try explicit `provider: "gemini"` if a Perplexity key is missing. |
|
|
316
316
|
|
|
317
|
-
Remember: you are the user's expert guide to technical research. Lean on `fetch_content` first with the `/llms.txt` → `Accept: text/markdown` → `
|
|
317
|
+
Remember: you are the user's expert guide to technical research. Lean on `fetch_content` first with the `/llms.txt` → `Accept: text/markdown` → `browser-use` fallback chain to efficiently pull authoritative content, clone open-source repos when implementation evidence is needed, store anything reusable under `research/web/`, and deliver comprehensive, up-to-date answers with exact citations and GitHub permalinks. Answer directly — skip preamble like "I'll help you with…" and go straight to findings.
|
|
@@ -5,7 +5,7 @@ tools: read, edit, write, grep, find, ls, bash, web_search, fetch_content, get_s
|
|
|
5
5
|
model: openai/gpt-5.5
|
|
6
6
|
fallbackModels: openai-codex/gpt-5.5, github-copilot/gpt-5.5, anthropic/claude-opus-4-8, github-copilot/claude-opus-4.7
|
|
7
7
|
thinking: xhigh
|
|
8
|
-
skills: tdd,
|
|
8
|
+
skills: tdd, browser-use, tmux
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
You are tasked with debugging and identifying errors, test failures, and unexpected behavior in the codebase. Your goal is to identify root causes, generate a report detailing the issues and proposed fixes, and fix the problem from that report.
|
|
@@ -14,13 +14,13 @@ You are tasked with debugging and identifying errors, test failures, and unexpec
|
|
|
14
14
|
|
|
15
15
|
- `tdd` — load the TDD skill before creating or modifying any tests.
|
|
16
16
|
- `tmux` load the tmux skill for debugging terminal environment or TUI apps.
|
|
17
|
-
- `
|
|
17
|
+
- `browser-use` — load the browser-use skill for debugging web apps. Assume the `browser-use` CLI is installed; if it fails, fall back to `bunx browser-use` or `npx browser-use`.
|
|
18
18
|
- `fetch_content <url>` — the `pi-web-access` fetch tool returns reader-mode text/markdown for URLs (HTML, JSON, PDFs, GitHub issues/PRs, npm, arXiv, RSS, Reddit, Stack Overflow, etc.). Prefer it over a real browser when you only need page content.
|
|
19
19
|
- `web_search` / `get_search_content` — issue web queries and bulk-fetch the top results for triage.
|
|
20
|
-
- `
|
|
20
|
+
- `browser-use` (via `bash`) — full Chromium when you need JS execution, auth, or interactive actions. Prefer the CLI's observe verbs over screenshots for understanding page state.
|
|
21
21
|
|
|
22
22
|
<EXTREMELY_IMPORTANT>
|
|
23
|
-
- PREFER `fetch_content <url>` for static content. Only reach for the `
|
|
23
|
+
- PREFER `fetch_content <url>` for static content. Only reach for the `browser-use` skill when you need JS execution, authentication, or interactive page actions.
|
|
24
24
|
- ALWAYS `tdd` BEFORE creating or modifying any tests.
|
|
25
25
|
- NEVER suppress a failing test to make it pass. Reproduce the failure first; only then fix the underlying defect.
|
|
26
26
|
</EXTREMELY_IMPORTANT>
|
|
@@ -46,7 +46,7 @@ When you need to consult docs, forums, or issue trackers, apply these techniques
|
|
|
46
46
|
1. **`fetch_content <url>` first.** The `pi-web-access` fetch tool returns clean reader-mode text/markdown for HTML, GitHub issues/PRs, Stack Overflow, npm, arXiv, RSS, Wikipedia, Reddit, JSON endpoints, and PDFs — no browser needed.
|
|
47
47
|
2. **Check `/llms.txt`.** Many modern docs sites publish an AI-friendly index at `/llms.txt` (spec: [llmstxt.org](https://llmstxt.org/llms.txt)). Try `fetch_content https://<site>/llms.txt` before anything else; it often links directly to the most relevant pages in plain text.
|
|
48
48
|
3. **`Accept: text/markdown` header.** Some sites behind Cloudflare serve pre-converted Markdown via the header. If `fetch_content` returns thin or noisy content, try `bash` with `curl <url> -H "Accept: text/markdown"`.
|
|
49
|
-
4. **Fall back to the
|
|
49
|
+
4. **Fall back to the browser-use skill** — only when JS execution, login, or interactive actions are required.
|
|
50
50
|
|
|
51
51
|
**Persist useful findings to `research/web/`:** When you fetch a document worth keeping for future sessions (error-message writeups, API schemas, troubleshooting guides, release notes), save it to `research/web/<YYYY-MM-DD>-<kebab-case-topic>.md` with a short header noting the source URL and fetch date. Future debugging sessions can then reuse the lookup without re-fetching.
|
|
52
52
|
|
|
@@ -80,7 +80,7 @@ Debugging process:
|
|
|
80
80
|
- Form and test hypotheses
|
|
81
81
|
- Add strategic debug logging or drive the project's own debugger (`bun --inspect`, `node --inspect-brk`, `python -m pdb`, etc.) through `bash` instead of `print` spam
|
|
82
82
|
- Inspect variable state by capturing it through the project's debugger session in `bash` or by writing a short repro script
|
|
83
|
-
- Use the web research order above (`fetch_content <url>` → `/llms.txt` → `Accept: text/markdown` →
|
|
83
|
+
- Use the web research order above (`fetch_content <url>` → `/llms.txt` → `Accept: text/markdown` → browser-use) to look up external library docs, error messages, Stack Overflow threads, and GitHub issues
|
|
84
84
|
|
|
85
85
|
For each issue, provide:
|
|
86
86
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bastani/subagents",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.22-0",
|
|
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": [
|
|
@@ -36,7 +36,7 @@ External researcher (`codebase-online-researcher`):
|
|
|
36
36
|
|
|
37
37
|
- Study linked projects, docs, issues, examples, source code, or prompt guidance.
|
|
38
38
|
- Identify the behavior, API, implementation files, constraints, and transferable ideas.
|
|
39
|
-
- Use `fetch_content` first, then `/llms.txt`, then `Accept: text/markdown`, and only fall back to `
|
|
39
|
+
- Use `fetch_content` first, then `/llms.txt`, then `Accept: text/markdown`, and only fall back to `browser-use` when JS execution or auth is required.
|
|
40
40
|
- Persist any high-value fetch to `research/web/<YYYY-MM-DD>-<topic>.md`.
|
|
41
41
|
- Return source links, repo paths, key evidence, risks, and what matters for this implementation.
|
|
42
42
|
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: browser-use
|
|
3
|
+
description: Automates browser interactions for web testing, form filling, screenshots, and data extraction. Use when the user needs to navigate websites, interact with web pages, fill forms, take screenshots, or extract information from web pages.
|
|
4
|
+
allowed-tools: Bash(browser-use:*)
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Browser Automation with browser-use CLI
|
|
8
|
+
|
|
9
|
+
The `browser-use` command provides fast, persistent browser automation. A background daemon keeps the browser open across commands, giving ~50ms latency per call.
|
|
10
|
+
|
|
11
|
+
## Prerequisites
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
browser-use doctor # Verify installation
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
For setup details, see https://github.com/browser-use/browser-use/blob/main/browser_use/skill_cli/README.md
|
|
18
|
+
|
|
19
|
+
## Core Workflow
|
|
20
|
+
|
|
21
|
+
1. **Navigate**: `browser-use open <url>` — launches headless browser and opens page
|
|
22
|
+
2. **Inspect**: `browser-use state` — returns clickable elements with indices
|
|
23
|
+
3. **Interact**: use indices from state (`browser-use click 5`, `browser-use input 3 "text"`)
|
|
24
|
+
4. **Verify**: `browser-use state` or `browser-use screenshot` to confirm
|
|
25
|
+
5. **Repeat**: browser stays open between commands
|
|
26
|
+
|
|
27
|
+
If a command fails, run `browser-use close` first to clear any broken session, then retry.
|
|
28
|
+
|
|
29
|
+
To use the user's existing Chrome (preserves logins/cookies): run `browser-use connect` first.
|
|
30
|
+
To use a cloud browser instead: run `browser-use cloud connect` first.
|
|
31
|
+
After either, commands work the same way.
|
|
32
|
+
|
|
33
|
+
### If `browser-use connect` fails
|
|
34
|
+
|
|
35
|
+
When `browser-use connect` cannot find a running Chrome with remote debugging, prompt the user with two options:
|
|
36
|
+
|
|
37
|
+
1. **Use their real Chrome browser** — they need to enable remote debugging first:
|
|
38
|
+
- Open `chrome://inspect/#remote-debugging` in Chrome, or relaunch Chrome with `--remote-debugging-port=9222`
|
|
39
|
+
- Then retry `browser-use connect`
|
|
40
|
+
2. **Use managed Chromium with their Chrome profile** — no Chrome setup needed:
|
|
41
|
+
- Run `browser-use profile list` to show available profiles
|
|
42
|
+
- Ask which profile they want, then use `browser-use --profile "ProfileName" open <url>`
|
|
43
|
+
- This launches a separate Chromium instance with their profile data (cookies, logins, extensions)
|
|
44
|
+
|
|
45
|
+
Let the user choose — don't assume one path over the other.
|
|
46
|
+
|
|
47
|
+
## Browser Modes
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
browser-use open <url> # Default: headless Chromium (no setup needed)
|
|
51
|
+
browser-use --headed open <url> # Visible window (for debugging)
|
|
52
|
+
browser-use connect # Connect to user's Chrome (preserves logins/cookies)
|
|
53
|
+
browser-use cloud connect # Cloud browser (zero-config, requires API key)
|
|
54
|
+
browser-use --profile "Default" open <url> # Real Chrome with specific profile
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
After `connect` or `cloud connect`, all subsequent commands go to that browser — no extra flags needed.
|
|
58
|
+
|
|
59
|
+
## Commands
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
# Navigation
|
|
63
|
+
browser-use open <url> # Navigate to URL
|
|
64
|
+
browser-use back # Go back in history
|
|
65
|
+
browser-use scroll down # Scroll down (--amount N for pixels)
|
|
66
|
+
browser-use scroll up # Scroll up
|
|
67
|
+
browser-use tab list # List all tabs
|
|
68
|
+
browser-use tab new [url] # Open a new tab (blank or with URL)
|
|
69
|
+
browser-use tab switch <index> # Switch to tab by index
|
|
70
|
+
browser-use tab close <index> [index...] # Close one or more tabs
|
|
71
|
+
|
|
72
|
+
# Page State — always run state first to get element indices
|
|
73
|
+
browser-use state # URL, title, clickable elements with indices
|
|
74
|
+
browser-use screenshot [path.png] # Screenshot (base64 if no path, --full for full page)
|
|
75
|
+
|
|
76
|
+
# Interactions — use indices from state
|
|
77
|
+
browser-use click <index> # Click element by index
|
|
78
|
+
browser-use click <x> <y> # Click at pixel coordinates
|
|
79
|
+
browser-use type "text" # Type into focused element
|
|
80
|
+
browser-use input <index> "text" # Click element, clear existing text, then type
|
|
81
|
+
browser-use input <index> "" # Clear a field without typing new text
|
|
82
|
+
browser-use keys "Enter" # Send keyboard keys (also "Control+a", etc.)
|
|
83
|
+
browser-use select <index> "option" # Select dropdown option
|
|
84
|
+
browser-use upload <index> <path> # Upload file to file input
|
|
85
|
+
browser-use hover <index> # Hover over element
|
|
86
|
+
browser-use dblclick <index> # Double-click element
|
|
87
|
+
browser-use rightclick <index> # Right-click element
|
|
88
|
+
|
|
89
|
+
# Data Extraction
|
|
90
|
+
browser-use eval "js code" # Execute JavaScript, return result
|
|
91
|
+
browser-use get title # Page title
|
|
92
|
+
browser-use get html [--selector "h1"] # Page HTML (or scoped to selector)
|
|
93
|
+
browser-use get text <index> # Element text content
|
|
94
|
+
browser-use get value <index> # Input/textarea value
|
|
95
|
+
browser-use get attributes <index> # Element attributes
|
|
96
|
+
browser-use get bbox <index> # Bounding box (x, y, width, height)
|
|
97
|
+
|
|
98
|
+
# Wait
|
|
99
|
+
browser-use wait selector "css" # Wait for element (--state visible|hidden|attached|detached, --timeout ms)
|
|
100
|
+
browser-use wait text "text" # Wait for text to appear
|
|
101
|
+
|
|
102
|
+
# Cookies
|
|
103
|
+
browser-use cookies get [--url <url>] # Get cookies (optionally filtered)
|
|
104
|
+
browser-use cookies set <name> <value> # Set cookie (--domain, --secure, --http-only, --same-site, --expires)
|
|
105
|
+
browser-use cookies clear [--url <url>] # Clear cookies
|
|
106
|
+
browser-use cookies export <file> # Export to JSON
|
|
107
|
+
browser-use cookies import <file> # Import from JSON
|
|
108
|
+
|
|
109
|
+
# Session
|
|
110
|
+
browser-use close # Close browser and stop daemon
|
|
111
|
+
browser-use sessions # List active sessions
|
|
112
|
+
browser-use close --all # Close all sessions
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
For advanced browser control (CDP, device emulation, tab activation), see `references/cdp-python.md`.
|
|
116
|
+
|
|
117
|
+
## Cloud API
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
browser-use cloud connect # Provision cloud browser and connect (zero-config)
|
|
121
|
+
browser-use cloud login <api-key> # Save API key (or set BROWSER_USE_API_KEY)
|
|
122
|
+
browser-use cloud logout # Remove API key
|
|
123
|
+
browser-use cloud v2 GET /browsers # REST passthrough (v2 or v3)
|
|
124
|
+
browser-use cloud v2 POST /tasks '{"task":"...","url":"..."}'
|
|
125
|
+
browser-use cloud v2 poll <task-id> # Poll task until done
|
|
126
|
+
browser-use cloud v2 --help # Show API endpoints
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
`cloud connect` provisions a cloud browser with a persistent profile (auto-created on first use), connects via CDP, and prints a live URL. `browser-use close` disconnects AND stops the cloud browser. For custom browser settings (proxy, timeout, specific profile), use `cloud v2 POST /browsers` directly with the desired parameters.
|
|
130
|
+
|
|
131
|
+
### Agent Self-Registration
|
|
132
|
+
|
|
133
|
+
Only use this if you don't already have an API key (check `browser-use doctor` to see if api_key is set). If already logged in, skip this entirely.
|
|
134
|
+
|
|
135
|
+
1. `browser-use cloud signup` — get a challenge
|
|
136
|
+
2. Solve the challenge
|
|
137
|
+
3. `browser-use cloud signup --verify <challenge-id> <answer>` — verify and save API key
|
|
138
|
+
4. `browser-use cloud signup --claim` — generate URL for a human to claim the account
|
|
139
|
+
|
|
140
|
+
## Tunnels
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
browser-use tunnel <port> # Start Cloudflare tunnel (idempotent)
|
|
144
|
+
browser-use tunnel list # Show active tunnels
|
|
145
|
+
browser-use tunnel stop <port> # Stop tunnel
|
|
146
|
+
browser-use tunnel stop --all # Stop all tunnels
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
## Profile Management
|
|
150
|
+
|
|
151
|
+
```bash
|
|
152
|
+
browser-use profile list # List detected browsers and profiles
|
|
153
|
+
browser-use profile sync --all # Sync profiles to cloud
|
|
154
|
+
browser-use profile update # Download/update profile-use binary
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
## Command Chaining
|
|
158
|
+
|
|
159
|
+
Commands can be chained with `&&`. The browser persists via the daemon, so chaining is safe and efficient.
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
browser-use open https://example.com && browser-use state
|
|
163
|
+
browser-use input 5 "user@example.com" && browser-use input 6 "password" && browser-use click 7
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
Chain when you don't need intermediate output. Run separately when you need to parse `state` to discover indices first.
|
|
167
|
+
|
|
168
|
+
## Common Workflows
|
|
169
|
+
|
|
170
|
+
### Authenticated Browsing
|
|
171
|
+
|
|
172
|
+
When a task requires an authenticated site (Gmail, GitHub, internal tools), use Chrome profiles:
|
|
173
|
+
|
|
174
|
+
```bash
|
|
175
|
+
browser-use profile list # Check available profiles
|
|
176
|
+
# Ask the user which profile to use, then:
|
|
177
|
+
browser-use --profile "Default" open https://github.com # Already logged in
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
### Exposing Local Dev Servers
|
|
181
|
+
|
|
182
|
+
```bash
|
|
183
|
+
browser-use tunnel 3000 # → https://abc.trycloudflare.com
|
|
184
|
+
browser-use open https://abc.trycloudflare.com # Browse the tunnel
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
## Multiple Browsers
|
|
188
|
+
|
|
189
|
+
For subagent workflows or running multiple browsers in parallel, use `--session NAME`. Each session gets its own browser. See `references/multi-session.md`.
|
|
190
|
+
|
|
191
|
+
## Configuration
|
|
192
|
+
|
|
193
|
+
```bash
|
|
194
|
+
browser-use config list # Show all config values
|
|
195
|
+
browser-use config set cloud_connect_proxy jp # Set a value
|
|
196
|
+
browser-use config get cloud_connect_proxy # Get a value
|
|
197
|
+
browser-use config unset cloud_connect_timeout # Remove a value
|
|
198
|
+
browser-use doctor # Shows config + diagnostics
|
|
199
|
+
browser-use setup # Interactive post-install setup
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
Config stored in `~/.browser-use/config.json`.
|
|
203
|
+
|
|
204
|
+
## Global Options
|
|
205
|
+
|
|
206
|
+
| Option | Description |
|
|
207
|
+
|--------|-------------|
|
|
208
|
+
| `--headed` | Show browser window |
|
|
209
|
+
| `--profile [NAME]` | Use real Chrome (bare `--profile` uses "Default") |
|
|
210
|
+
| `--cdp-url <url>` | Connect via CDP URL (`http://` or `ws://`) |
|
|
211
|
+
| `--session NAME` | Target a named session (default: "default") |
|
|
212
|
+
| `--json` | Output as JSON |
|
|
213
|
+
| `--mcp` | Run as MCP server via stdin/stdout |
|
|
214
|
+
|
|
215
|
+
## Tips
|
|
216
|
+
|
|
217
|
+
1. **Always run `state` first** to see available elements and their indices
|
|
218
|
+
2. **Use `--headed` for debugging** to see what the browser is doing
|
|
219
|
+
3. **Sessions persist** — browser stays open between commands
|
|
220
|
+
4. **CLI aliases**: `bu`, `browser`, and `browseruse` all work
|
|
221
|
+
5. **If commands fail**, run `browser-use close` first, then retry
|
|
222
|
+
|
|
223
|
+
## Troubleshooting
|
|
224
|
+
|
|
225
|
+
- **Browser won't start?** `browser-use close` then `browser-use --headed open <url>`
|
|
226
|
+
- **Element not found?** `browser-use scroll down` then `browser-use state`
|
|
227
|
+
- **Run diagnostics:** `browser-use doctor`
|
|
228
|
+
|
|
229
|
+
## Cleanup
|
|
230
|
+
|
|
231
|
+
```bash
|
|
232
|
+
browser-use close # Close browser session
|
|
233
|
+
browser-use tunnel stop --all # Stop tunnels (if any)
|
|
234
|
+
```
|