@bastani/atomic 0.8.31-alpha.1 → 0.8.31-alpha.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +17 -5
- package/README.md +12 -10
- package/dist/builtin/cursor/CHANGELOG.md +1 -1
- package/dist/builtin/cursor/package.json +2 -2
- package/dist/builtin/intercom/CHANGELOG.md +1 -1
- package/dist/builtin/intercom/package.json +2 -2
- package/dist/builtin/mcp/CHANGELOG.md +1 -1
- package/dist/builtin/mcp/package.json +3 -3
- package/dist/builtin/subagents/CHANGELOG.md +10 -1
- package/dist/builtin/subagents/agents/codebase-online-researcher.md +8 -8
- package/dist/builtin/subagents/agents/debugger.md +6 -6
- package/dist/builtin/subagents/package.json +4 -4
- package/dist/builtin/subagents/skills/effective-liteparse/SKILL.md +118 -0
- package/dist/builtin/subagents/skills/effective-liteparse/scripts/search.py +128 -0
- package/dist/builtin/subagents/skills/playwright-cli/SKILL.md +404 -0
- package/dist/builtin/subagents/skills/playwright-cli/references/element-attributes.md +23 -0
- package/dist/builtin/subagents/skills/playwright-cli/references/playwright-tests.md +39 -0
- package/dist/builtin/subagents/skills/playwright-cli/references/request-mocking.md +87 -0
- package/dist/builtin/subagents/skills/playwright-cli/references/running-code.md +241 -0
- package/dist/builtin/subagents/skills/playwright-cli/references/session-management.md +225 -0
- package/dist/builtin/subagents/skills/playwright-cli/references/spec-driven-testing.md +305 -0
- package/dist/builtin/subagents/skills/playwright-cli/references/storage-state.md +275 -0
- package/dist/builtin/subagents/skills/playwright-cli/references/test-generation.md +134 -0
- package/dist/builtin/subagents/skills/playwright-cli/references/tracing.md +139 -0
- package/dist/builtin/subagents/skills/playwright-cli/references/video-recording.md +143 -0
- package/dist/builtin/web-access/CHANGELOG.md +1 -1
- package/dist/builtin/web-access/package.json +2 -2
- package/dist/builtin/workflows/CHANGELOG.md +7 -1
- package/dist/builtin/workflows/README.md +4 -4
- package/dist/builtin/workflows/builtin/open-claude-design.ts +59 -56
- package/dist/builtin/workflows/builtin/ralph.ts +56 -3
- package/dist/builtin/workflows/builtin/shared-prompts.ts +1 -1
- package/dist/builtin/workflows/package.json +2 -2
- package/dist/builtin/workflows/skills/research-codebase/SKILL.md +1 -1
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +1 -1
- package/dist/cli/args.js.map +1 -1
- package/dist/core/agent-session.d.ts +1 -0
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +49 -21
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/context-window.d.ts +26 -1
- package/dist/core/context-window.d.ts.map +1 -1
- package/dist/core/context-window.js +30 -6
- package/dist/core/context-window.js.map +1 -1
- package/dist/core/copilot-model-catalog.d.ts +39 -21
- package/dist/core/copilot-model-catalog.d.ts.map +1 -1
- package/dist/core/copilot-model-catalog.js +44 -16
- package/dist/core/copilot-model-catalog.js.map +1 -1
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-registry.js +6 -4
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/project-trust.d.ts.map +1 -1
- package/dist/core/project-trust.js +2 -1
- package/dist/core/project-trust.js.map +1 -1
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +18 -7
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/settings-manager.d.ts +11 -2
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +62 -8
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/system-prompt.d.ts.map +1 -1
- package/dist/core/system-prompt.js +1 -0
- package/dist/core/system-prompt.js.map +1 -1
- package/dist/core/tools/edit-diff.d.ts +1 -2
- package/dist/core/tools/edit-diff.d.ts.map +1 -1
- package/dist/core/tools/edit-diff.js +1 -2
- package/dist/core/tools/edit-diff.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/config-selector.js +5 -7
- package/dist/modes/interactive/components/config-selector.js.map +1 -1
- package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/model-selector.js +2 -1
- package/dist/modes/interactive/components/model-selector.js.map +1 -1
- package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/scoped-models-selector.js +4 -1
- package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector.d.ts +2 -0
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +165 -15
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/tree-selector.js +44 -4
- package/dist/modes/interactive/components/tree-selector.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +24 -54
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/model-search.d.ts +7 -0
- package/dist/modes/interactive/model-search.d.ts.map +1 -0
- package/dist/modes/interactive/model-search.js +6 -0
- package/dist/modes/interactive/model-search.js.map +1 -0
- package/dist/modes/interactive/theme/theme-controller.d.ts +30 -0
- package/dist/modes/interactive/theme/theme-controller.d.ts.map +1 -0
- package/dist/modes/interactive/theme/theme-controller.js +108 -0
- package/dist/modes/interactive/theme/theme-controller.js.map +1 -0
- package/dist/modes/interactive/theme/theme-schema.json +2 -1
- package/dist/modes/interactive/theme/theme.d.ts +5 -0
- package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme.js +70 -29
- package/dist/modes/interactive/theme/theme.js.map +1 -1
- package/dist/modes/rpc/rpc-client.d.ts +1 -1
- package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client.js +1 -1
- package/dist/modes/rpc/rpc-client.js.map +1 -1
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-mode.js +1 -1
- package/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/dist/package-manager-cli.d.ts.map +1 -1
- package/dist/package-manager-cli.js +39 -9
- package/dist/package-manager-cli.js.map +1 -1
- package/docs/extensions.md +21 -0
- package/docs/models.md +3 -3
- package/docs/packages.md +13 -9
- package/docs/providers.md +3 -3
- package/docs/quickstart.md +14 -0
- package/docs/rpc.md +3 -3
- package/docs/sdk.md +15 -11
- package/docs/session-format.md +1 -1
- package/docs/settings.md +8 -3
- package/docs/themes.md +3 -1
- package/docs/tui.md +1 -1
- package/docs/usage.md +12 -9
- package/docs/workflows.md +9 -7
- package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
- package/examples/extensions/custom-provider-anthropic/package.json +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
- package/examples/extensions/gondolin/package-lock.json +2 -2
- package/examples/extensions/gondolin/package.json +1 -1
- package/examples/extensions/preset.ts +10 -4
- package/examples/extensions/provider-payload.ts +5 -5
- package/examples/extensions/sandbox/index.ts +2 -2
- package/examples/extensions/sandbox/package-lock.json +3 -3
- package/examples/extensions/sandbox/package.json +2 -2
- package/examples/extensions/subagent/agents.ts +2 -2
- package/examples/extensions/subagent/index.ts +4 -2
- package/examples/extensions/with-deps/package-lock.json +2 -2
- package/examples/extensions/with-deps/package.json +1 -1
- package/package.json +5 -5
- package/dist/builtin/subagents/skills/browser/EXAMPLES.md +0 -151
- package/dist/builtin/subagents/skills/browser/LICENSE.txt +0 -21
- package/dist/builtin/subagents/skills/browser/REFERENCE.md +0 -451
- package/dist/builtin/subagents/skills/browser/SKILL.md +0 -170
|
@@ -71,7 +71,9 @@ import { TrustSelectorComponent } from "./components/trust-selector.js";
|
|
|
71
71
|
import { hasProjectConfigDir, ProjectTrustStore } from "../../core/trust-manager.js";
|
|
72
72
|
import { UserMessageComponent } from "./components/user-message.js";
|
|
73
73
|
import { UserMessageSelectorComponent } from "./components/user-message-selector.js";
|
|
74
|
-
import {
|
|
74
|
+
import { getModelSearchText } from "./model-search.js";
|
|
75
|
+
import { getAvailableThemes, getAvailableThemesWithPaths, getEditorTheme, getMarkdownTheme, getThemeByName, onThemeChange, setRegisteredThemes, stopThemeWatcher, Theme, theme, } from "./theme/theme.js";
|
|
76
|
+
import { InteractiveThemeController } from "./theme/theme-controller.js";
|
|
75
77
|
function isExpandable(obj) {
|
|
76
78
|
return (typeof obj === "object" &&
|
|
77
79
|
obj !== null &&
|
|
@@ -270,23 +272,7 @@ export class InteractiveMode {
|
|
|
270
272
|
this.hideThinkingBlock = this.settingsManager.getHideThinkingBlock();
|
|
271
273
|
// Register themes from resource loader and initialize
|
|
272
274
|
setRegisteredThemes(this.session.resourceLoader.getThemes().themes);
|
|
273
|
-
|
|
274
|
-
}
|
|
275
|
-
async detectThemeIfUnset() {
|
|
276
|
-
if (this.settingsManager.getTheme()) {
|
|
277
|
-
return;
|
|
278
|
-
}
|
|
279
|
-
const detection = await detectTerminalBackgroundTheme({ ui: this.ui, timeoutMs: 100 });
|
|
280
|
-
const result = setTheme(detection.theme, true);
|
|
281
|
-
if (!result.success) {
|
|
282
|
-
return;
|
|
283
|
-
}
|
|
284
|
-
if (detection.confidence === "high") {
|
|
285
|
-
this.settingsManager.setTheme(detection.theme);
|
|
286
|
-
await this.settingsManager.flush();
|
|
287
|
-
}
|
|
288
|
-
this.updateEditorBorderColor();
|
|
289
|
-
this.ui.requestRender();
|
|
275
|
+
this.themeController = new InteractiveThemeController(this.ui, this.settingsManager, (message) => this.showError(message), () => this.updateEditorBorderColor());
|
|
290
276
|
}
|
|
291
277
|
getAutocompleteSourceTag(sourceInfo) {
|
|
292
278
|
if (!sourceInfo) {
|
|
@@ -361,10 +347,11 @@ export class InteractiveMode {
|
|
|
361
347
|
const items = models.map((m) => ({
|
|
362
348
|
id: m.id,
|
|
363
349
|
provider: m.provider,
|
|
350
|
+
name: m.name,
|
|
364
351
|
label: `${m.provider}/${m.id}`,
|
|
365
352
|
}));
|
|
366
|
-
// Fuzzy filter by model ID + provider
|
|
367
|
-
const filtered = fuzzyFilter(items, prefix,
|
|
353
|
+
// Fuzzy filter by model ID + provider in either order.
|
|
354
|
+
const filtered = fuzzyFilter(items, prefix, getModelSearchText);
|
|
368
355
|
if (filtered.length === 0)
|
|
369
356
|
return null;
|
|
370
357
|
return filtered.map((item) => ({
|
|
@@ -455,7 +442,7 @@ export class InteractiveMode {
|
|
|
455
442
|
this.registerSignalHandlers();
|
|
456
443
|
// Load changelog (only show new entries, skip for resumed sessions)
|
|
457
444
|
this.changelogMarkdown = this.getChangelogForDisplay();
|
|
458
|
-
// Add header container as first child. Populate it after
|
|
445
|
+
// Add header container as first child. Populate it after theme initialization.
|
|
459
446
|
this.ui.addChild(this.headerContainer);
|
|
460
447
|
this.ui.addChild(this.chatContainer);
|
|
461
448
|
this.ui.addChild(this.pendingMessagesContainer);
|
|
@@ -483,7 +470,7 @@ export class InteractiveMode {
|
|
|
483
470
|
this.ui.start();
|
|
484
471
|
recordTimeSinceReset("time-to-first-frame");
|
|
485
472
|
this.isInitialized = true;
|
|
486
|
-
await this.
|
|
473
|
+
await this.themeController.applyFromSettings();
|
|
487
474
|
// Add the quiet startup identity (unless silenced). Resource details are
|
|
488
475
|
// disclosed separately in the chat canvas via the tools/resources toggle.
|
|
489
476
|
if (this.options.verbose || !this.settingsManager.getQuietStartup()) {
|
|
@@ -1861,16 +1848,11 @@ export class InteractiveMode {
|
|
|
1861
1848
|
getTheme: (name) => getThemeByName(name),
|
|
1862
1849
|
setTheme: (themeOrName) => {
|
|
1863
1850
|
if (themeOrName instanceof Theme) {
|
|
1864
|
-
setThemeInstance(themeOrName);
|
|
1865
|
-
this.ui.requestRender();
|
|
1866
|
-
return { success: true };
|
|
1851
|
+
return this.themeController.setThemeInstance(themeOrName);
|
|
1867
1852
|
}
|
|
1868
|
-
const result =
|
|
1869
|
-
if (result.success) {
|
|
1870
|
-
|
|
1871
|
-
this.settingsManager.setTheme(themeOrName);
|
|
1872
|
-
}
|
|
1873
|
-
this.ui.requestRender();
|
|
1853
|
+
const result = this.themeController.setThemeName(themeOrName);
|
|
1854
|
+
if (result.success && this.settingsManager.getThemeSetting() !== themeOrName) {
|
|
1855
|
+
this.settingsManager.setTheme(themeOrName);
|
|
1874
1856
|
}
|
|
1875
1857
|
return result;
|
|
1876
1858
|
},
|
|
@@ -3131,6 +3113,7 @@ export class InteractiveMode {
|
|
|
3131
3113
|
// dispatch and re-sends the signal if only its own listeners remain.
|
|
3132
3114
|
if (options?.fromSignal) {
|
|
3133
3115
|
await this.runtimeHost.dispose();
|
|
3116
|
+
this.themeController.disableAutoSync();
|
|
3134
3117
|
// Drain any in-flight Kitty key release events before stopping.
|
|
3135
3118
|
// This prevents escape sequences from leaking to the parent shell over slow SSH.
|
|
3136
3119
|
await this.ui.terminal.drainInput(1000);
|
|
@@ -3139,6 +3122,7 @@ export class InteractiveMode {
|
|
|
3139
3122
|
}
|
|
3140
3123
|
// Drain any in-flight Kitty key release events before stopping.
|
|
3141
3124
|
// This prevents escape sequences from leaking to the parent shell over slow SSH.
|
|
3125
|
+
this.themeController.disableAutoSync();
|
|
3142
3126
|
await this.ui.terminal.drainInput(1000);
|
|
3143
3127
|
this.stop();
|
|
3144
3128
|
await this.runtimeHost.dispose();
|
|
@@ -3426,7 +3410,7 @@ export class InteractiveMode {
|
|
|
3426
3410
|
this.ui.requestRender();
|
|
3427
3411
|
}
|
|
3428
3412
|
showPackageUpdateNotification(packages) {
|
|
3429
|
-
const action = theme.fg("accent", `${APP_NAME} update`);
|
|
3413
|
+
const action = theme.fg("accent", `${APP_NAME} update --extensions`);
|
|
3430
3414
|
const updateInstruction = theme.fg("muted", "Package updates are available. Run ") + action;
|
|
3431
3415
|
const packageLines = packages.map((pkg) => `- ${pkg}`).join("\n");
|
|
3432
3416
|
this.chatContainer.addChild(new Spacer(1));
|
|
@@ -3668,7 +3652,8 @@ export class InteractiveMode {
|
|
|
3668
3652
|
httpIdleTimeoutMs: this.settingsManager.getHttpIdleTimeoutMs(),
|
|
3669
3653
|
thinkingLevel: this.session.thinkingLevel,
|
|
3670
3654
|
availableThinkingLevels: this.session.getAvailableThinkingLevels(),
|
|
3671
|
-
currentTheme: this.settingsManager.
|
|
3655
|
+
currentTheme: this.settingsManager.getThemeSetting() || "dark",
|
|
3656
|
+
terminalTheme: this.themeController.getTerminalTheme(),
|
|
3672
3657
|
availableThemes: getAvailableThemes(),
|
|
3673
3658
|
hideThinkingBlock: this.hideThinkingBlock,
|
|
3674
3659
|
collapseChangelog: this.settingsManager.getCollapseChangelog(),
|
|
@@ -3733,21 +3718,11 @@ export class InteractiveMode {
|
|
|
3733
3718
|
this.footer.invalidate();
|
|
3734
3719
|
this.updateEditorBorderColor();
|
|
3735
3720
|
},
|
|
3736
|
-
onThemeChange: (
|
|
3737
|
-
|
|
3738
|
-
this.
|
|
3739
|
-
this.ui.invalidate();
|
|
3740
|
-
if (!result.success) {
|
|
3741
|
-
this.showError(`Failed to load theme "${themeName}": ${result.error}\nFell back to dark theme.`);
|
|
3742
|
-
}
|
|
3743
|
-
},
|
|
3744
|
-
onThemePreview: (themeName) => {
|
|
3745
|
-
const result = setTheme(themeName, true);
|
|
3746
|
-
if (result.success) {
|
|
3747
|
-
this.ui.invalidate();
|
|
3748
|
-
this.ui.requestRender();
|
|
3749
|
-
}
|
|
3721
|
+
onThemeChange: (themeSetting) => {
|
|
3722
|
+
this.settingsManager.setTheme(themeSetting);
|
|
3723
|
+
void this.themeController.applyFromSettings();
|
|
3750
3724
|
},
|
|
3725
|
+
onThemePreview: (themeName) => this.themeController.preview(themeName),
|
|
3751
3726
|
onHideThinkingBlockChange: (hidden) => {
|
|
3752
3727
|
this.hideThinkingBlock = hidden;
|
|
3753
3728
|
this.settingsManager.setHideThinkingBlock(hidden);
|
|
@@ -4692,13 +4667,7 @@ export class InteractiveMode {
|
|
|
4692
4667
|
}
|
|
4693
4668
|
setRegisteredThemes(this.session.resourceLoader.getThemes().themes);
|
|
4694
4669
|
this.hideThinkingBlock = this.settingsManager.getHideThinkingBlock();
|
|
4695
|
-
|
|
4696
|
-
const themeResult = themeName
|
|
4697
|
-
? setTheme(themeName, true)
|
|
4698
|
-
: { success: true };
|
|
4699
|
-
if (!themeResult.success) {
|
|
4700
|
-
this.showError(`Failed to load theme "${themeName}": ${themeResult.error}\nFell back to dark theme.`);
|
|
4701
|
-
}
|
|
4670
|
+
await this.themeController.applyFromSettings();
|
|
4702
4671
|
const editorPaddingX = this.settingsManager.getEditorPaddingX();
|
|
4703
4672
|
const autocompleteMaxVisible = this.settingsManager.getAutocompleteMaxVisible();
|
|
4704
4673
|
this.defaultEditor.setPaddingX(editorPaddingX);
|
|
@@ -5279,6 +5248,7 @@ export class InteractiveMode {
|
|
|
5279
5248
|
this.loadingAnimation.stop();
|
|
5280
5249
|
this.loadingAnimation = undefined;
|
|
5281
5250
|
}
|
|
5251
|
+
this.themeController.disableAutoSync();
|
|
5282
5252
|
this.clearExtensionTerminalInputListeners();
|
|
5283
5253
|
this.footer.dispose();
|
|
5284
5254
|
this.footerDataProvider.dispose();
|