@bastani/atomic 0.8.31-alpha.1 → 0.8.31-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (145) hide show
  1. package/CHANGELOG.md +14 -3
  2. package/README.md +12 -10
  3. package/dist/builtin/cursor/CHANGELOG.md +1 -1
  4. package/dist/builtin/cursor/package.json +2 -2
  5. package/dist/builtin/intercom/CHANGELOG.md +1 -1
  6. package/dist/builtin/intercom/package.json +2 -2
  7. package/dist/builtin/mcp/CHANGELOG.md +1 -1
  8. package/dist/builtin/mcp/package.json +3 -3
  9. package/dist/builtin/subagents/CHANGELOG.md +10 -1
  10. package/dist/builtin/subagents/agents/codebase-online-researcher.md +8 -8
  11. package/dist/builtin/subagents/agents/debugger.md +6 -6
  12. package/dist/builtin/subagents/package.json +4 -4
  13. package/dist/builtin/subagents/skills/effective-liteparse/SKILL.md +118 -0
  14. package/dist/builtin/subagents/skills/effective-liteparse/scripts/search.py +128 -0
  15. package/dist/builtin/subagents/skills/playwright-cli/SKILL.md +404 -0
  16. package/dist/builtin/subagents/skills/playwright-cli/references/element-attributes.md +23 -0
  17. package/dist/builtin/subagents/skills/playwright-cli/references/playwright-tests.md +39 -0
  18. package/dist/builtin/subagents/skills/playwright-cli/references/request-mocking.md +87 -0
  19. package/dist/builtin/subagents/skills/playwright-cli/references/running-code.md +241 -0
  20. package/dist/builtin/subagents/skills/playwright-cli/references/session-management.md +225 -0
  21. package/dist/builtin/subagents/skills/playwright-cli/references/spec-driven-testing.md +305 -0
  22. package/dist/builtin/subagents/skills/playwright-cli/references/storage-state.md +275 -0
  23. package/dist/builtin/subagents/skills/playwright-cli/references/test-generation.md +134 -0
  24. package/dist/builtin/subagents/skills/playwright-cli/references/tracing.md +139 -0
  25. package/dist/builtin/subagents/skills/playwright-cli/references/video-recording.md +143 -0
  26. package/dist/builtin/web-access/CHANGELOG.md +1 -1
  27. package/dist/builtin/web-access/package.json +2 -2
  28. package/dist/builtin/workflows/CHANGELOG.md +7 -1
  29. package/dist/builtin/workflows/README.md +4 -4
  30. package/dist/builtin/workflows/builtin/open-claude-design.ts +59 -56
  31. package/dist/builtin/workflows/builtin/ralph.ts +56 -3
  32. package/dist/builtin/workflows/builtin/shared-prompts.ts +1 -1
  33. package/dist/builtin/workflows/package.json +2 -2
  34. package/dist/builtin/workflows/skills/research-codebase/SKILL.md +1 -1
  35. package/dist/cli/args.d.ts.map +1 -1
  36. package/dist/cli/args.js +1 -1
  37. package/dist/cli/args.js.map +1 -1
  38. package/dist/core/agent-session.d.ts +1 -0
  39. package/dist/core/agent-session.d.ts.map +1 -1
  40. package/dist/core/agent-session.js +38 -18
  41. package/dist/core/agent-session.js.map +1 -1
  42. package/dist/core/context-window.d.ts +11 -1
  43. package/dist/core/context-window.d.ts.map +1 -1
  44. package/dist/core/context-window.js +19 -6
  45. package/dist/core/context-window.js.map +1 -1
  46. package/dist/core/copilot-model-catalog.d.ts +19 -16
  47. package/dist/core/copilot-model-catalog.d.ts.map +1 -1
  48. package/dist/core/copilot-model-catalog.js +14 -11
  49. package/dist/core/copilot-model-catalog.js.map +1 -1
  50. package/dist/core/project-trust.d.ts.map +1 -1
  51. package/dist/core/project-trust.js +2 -1
  52. package/dist/core/project-trust.js.map +1 -1
  53. package/dist/core/sdk.d.ts.map +1 -1
  54. package/dist/core/sdk.js +18 -7
  55. package/dist/core/sdk.js.map +1 -1
  56. package/dist/core/settings-manager.d.ts +11 -2
  57. package/dist/core/settings-manager.d.ts.map +1 -1
  58. package/dist/core/settings-manager.js +62 -8
  59. package/dist/core/settings-manager.js.map +1 -1
  60. package/dist/core/system-prompt.d.ts.map +1 -1
  61. package/dist/core/system-prompt.js +1 -0
  62. package/dist/core/system-prompt.js.map +1 -1
  63. package/dist/core/tools/edit-diff.d.ts +1 -2
  64. package/dist/core/tools/edit-diff.d.ts.map +1 -1
  65. package/dist/core/tools/edit-diff.js +1 -2
  66. package/dist/core/tools/edit-diff.js.map +1 -1
  67. package/dist/index.d.ts +2 -1
  68. package/dist/index.d.ts.map +1 -1
  69. package/dist/index.js +1 -0
  70. package/dist/index.js.map +1 -1
  71. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
  72. package/dist/modes/interactive/components/config-selector.js +5 -7
  73. package/dist/modes/interactive/components/config-selector.js.map +1 -1
  74. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  75. package/dist/modes/interactive/components/model-selector.js +2 -1
  76. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  77. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
  78. package/dist/modes/interactive/components/scoped-models-selector.js +4 -1
  79. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
  80. package/dist/modes/interactive/components/settings-selector.d.ts +2 -0
  81. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  82. package/dist/modes/interactive/components/settings-selector.js +165 -15
  83. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  84. package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -1
  85. package/dist/modes/interactive/components/tree-selector.js +44 -4
  86. package/dist/modes/interactive/components/tree-selector.js.map +1 -1
  87. package/dist/modes/interactive/interactive-mode.d.ts +1 -1
  88. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  89. package/dist/modes/interactive/interactive-mode.js +24 -54
  90. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  91. package/dist/modes/interactive/model-search.d.ts +7 -0
  92. package/dist/modes/interactive/model-search.d.ts.map +1 -0
  93. package/dist/modes/interactive/model-search.js +6 -0
  94. package/dist/modes/interactive/model-search.js.map +1 -0
  95. package/dist/modes/interactive/theme/theme-controller.d.ts +30 -0
  96. package/dist/modes/interactive/theme/theme-controller.d.ts.map +1 -0
  97. package/dist/modes/interactive/theme/theme-controller.js +108 -0
  98. package/dist/modes/interactive/theme/theme-controller.js.map +1 -0
  99. package/dist/modes/interactive/theme/theme-schema.json +2 -1
  100. package/dist/modes/interactive/theme/theme.d.ts +5 -0
  101. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  102. package/dist/modes/interactive/theme/theme.js +70 -29
  103. package/dist/modes/interactive/theme/theme.js.map +1 -1
  104. package/dist/modes/rpc/rpc-client.d.ts +1 -1
  105. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  106. package/dist/modes/rpc/rpc-client.js +1 -1
  107. package/dist/modes/rpc/rpc-client.js.map +1 -1
  108. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  109. package/dist/modes/rpc/rpc-mode.js +1 -1
  110. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  111. package/dist/package-manager-cli.d.ts.map +1 -1
  112. package/dist/package-manager-cli.js +39 -9
  113. package/dist/package-manager-cli.js.map +1 -1
  114. package/docs/extensions.md +21 -0
  115. package/docs/models.md +3 -3
  116. package/docs/packages.md +13 -9
  117. package/docs/providers.md +2 -2
  118. package/docs/quickstart.md +14 -0
  119. package/docs/rpc.md +3 -3
  120. package/docs/sdk.md +15 -11
  121. package/docs/session-format.md +1 -1
  122. package/docs/settings.md +8 -3
  123. package/docs/themes.md +3 -1
  124. package/docs/tui.md +1 -1
  125. package/docs/usage.md +12 -9
  126. package/docs/workflows.md +9 -7
  127. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  128. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  129. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  130. package/examples/extensions/gondolin/package-lock.json +2 -2
  131. package/examples/extensions/gondolin/package.json +1 -1
  132. package/examples/extensions/preset.ts +10 -4
  133. package/examples/extensions/provider-payload.ts +5 -5
  134. package/examples/extensions/sandbox/index.ts +2 -2
  135. package/examples/extensions/sandbox/package-lock.json +3 -3
  136. package/examples/extensions/sandbox/package.json +2 -2
  137. package/examples/extensions/subagent/agents.ts +2 -2
  138. package/examples/extensions/subagent/index.ts +4 -2
  139. package/examples/extensions/with-deps/package-lock.json +2 -2
  140. package/examples/extensions/with-deps/package.json +1 -1
  141. package/package.json +5 -5
  142. package/dist/builtin/subagents/skills/browser/EXAMPLES.md +0 -151
  143. package/dist/builtin/subagents/skills/browser/LICENSE.txt +0 -21
  144. package/dist/builtin/subagents/skills/browser/REFERENCE.md +0 -451
  145. package/dist/builtin/subagents/skills/browser/SKILL.md +0 -170
@@ -84,6 +84,7 @@ export function parseSkillBlock(text) {
84
84
  userMessage: afterClosing ? afterClosing.slice(2).trim() || undefined : undefined,
85
85
  };
86
86
  }
87
+ const COPILOT_CONTEXT_WINDOW_SELECTION_OPTIONS = { allowCopilotLongContextFallback: true };
87
88
  function drainAgentMessageQueue(queue) {
88
89
  if (!queue)
89
90
  return [];
@@ -1536,7 +1537,7 @@ export class AgentSession {
1536
1537
  if (!this.model) {
1537
1538
  throw new Error("No model selected");
1538
1539
  }
1539
- const selected = selectContextWindow(this.model, contextWindow);
1540
+ const selected = selectContextWindow(this.model, contextWindow, COPILOT_CONTEXT_WINDOW_SELECTION_OPTIONS);
1540
1541
  if ("error" in selected) {
1541
1542
  throw new Error(selected.error);
1542
1543
  }
@@ -1548,13 +1549,13 @@ export class AgentSession {
1548
1549
  this._emit({ type: "context_window_changed", contextWindow: selected.contextWindow });
1549
1550
  }
1550
1551
  if (options.persistDefault === true) {
1551
- this.settingsManager.setDefaultContextWindow(selected.contextWindow);
1552
+ this.settingsManager.setDefaultContextWindowForModel(selected.model.provider, selected.model.id, selected.contextWindow);
1552
1553
  }
1553
1554
  }
1554
1555
  _withContextWindowForModelSwitch(model) {
1555
1556
  // A source model's scalar contextWindow can be its natural default (for example a 1m-default
1556
1557
  // model). Do not treat that alone as an opt-in to larger windows on a 400k-default target.
1557
- const settingsDefaultContextWindow = this.settingsManager.getDefaultContextWindow();
1558
+ const settingsDefaultContextWindow = this._getSettingsContextWindowRequestForModel(model)?.contextWindow;
1558
1559
  const candidates = [];
1559
1560
  const targetDefaultContextWindow = getModelDefaultContextWindow(model);
1560
1561
  if (model.contextWindow !== targetDefaultContextWindow) {
@@ -1570,12 +1571,12 @@ export class AgentSession {
1570
1571
  candidates.push(settingsDefaultContextWindow);
1571
1572
  }
1572
1573
  candidates.push(targetDefaultContextWindow);
1573
- const availableContextWindows = getSupportedContextWindows(model);
1574
- const contextWindow = candidates.find((candidate) => availableContextWindows.includes(candidate));
1575
- if (contextWindow === undefined)
1576
- return model;
1577
- const selected = selectContextWindow(model, contextWindow);
1578
- return "error" in selected ? model : selected.model;
1574
+ for (const candidate of candidates) {
1575
+ const selected = selectContextWindow(model, candidate, COPILOT_CONTEXT_WINDOW_SELECTION_OPTIONS);
1576
+ if (!("error" in selected))
1577
+ return selected.model;
1578
+ }
1579
+ return model;
1579
1580
  }
1580
1581
  _shouldCarryCurrentContextWindowForModelSwitch(currentModel, settingsDefaultContextWindow) {
1581
1582
  if (currentModel.contextWindow !== getModelDefaultContextWindow(currentModel)) {
@@ -1588,19 +1589,29 @@ export class AgentSession {
1588
1589
  currentModel.contextWindow === settingsDefaultContextWindow &&
1589
1590
  getSupportedContextWindows(currentModel).includes(settingsDefaultContextWindow));
1590
1591
  }
1591
- _getContextWindowReplayForModel(model, requestedContextWindow) {
1592
+ _getSettingsContextWindowRequestForModel(model) {
1593
+ const modelContextWindow = this.settingsManager.getDefaultContextWindowForModel(model.provider, model.id);
1594
+ if (modelContextWindow !== undefined) {
1595
+ return { contextWindow: modelContextWindow, source: "model-settings" };
1596
+ }
1597
+ const globalContextWindow = this.settingsManager.getDefaultContextWindow();
1598
+ return globalContextWindow === undefined
1599
+ ? undefined
1600
+ : { contextWindow: globalContextWindow, source: "global-settings" };
1601
+ }
1602
+ _getContextWindowReplayForModel(model, requestedContextWindow, source) {
1592
1603
  if (requestedContextWindow !== undefined) {
1593
- const selected = selectContextWindow(model, requestedContextWindow);
1604
+ const selected = selectContextWindow(model, requestedContextWindow, COPILOT_CONTEXT_WINDOW_SELECTION_OPTIONS);
1594
1605
  if (!("error" in selected)) {
1595
1606
  return { model: selected.model, contextWindow: selected.contextWindow, wouldWarn: false };
1596
1607
  }
1597
- return this._getDefaultContextWindowReplayForModel(model, true);
1608
+ return this._getDefaultContextWindowReplayForModel(model, source !== "global-settings");
1598
1609
  }
1599
1610
  return this._getDefaultContextWindowReplayForModel(model, false);
1600
1611
  }
1601
1612
  _getDefaultContextWindowReplayForModel(model, wouldWarn) {
1602
1613
  const defaultContextWindow = getModelDefaultContextWindow(model);
1603
- const selected = selectContextWindow(model, defaultContextWindow);
1614
+ const selected = selectContextWindow(model, defaultContextWindow, COPILOT_CONTEXT_WINDOW_SELECTION_OPTIONS);
1604
1615
  if (!("error" in selected)) {
1605
1616
  return { model: selected.model, contextWindow: selected.contextWindow, wouldWarn };
1606
1617
  }
@@ -1612,15 +1623,20 @@ export class AgentSession {
1612
1623
  }
1613
1624
  _getResumeContextWindowReplayForModel(model) {
1614
1625
  const sessionContext = this.sessionManager.buildSessionContext();
1615
- const requestedContextWindow = sessionContext.contextWindow ?? this.settingsManager.getDefaultContextWindow();
1616
- return this._getContextWindowReplayForModel(model, requestedContextWindow);
1626
+ if (sessionContext.contextWindow !== undefined) {
1627
+ return this._getContextWindowReplayForModel(model, sessionContext.contextWindow, "session");
1628
+ }
1629
+ const settingsContextWindow = this._getSettingsContextWindowRequestForModel(model);
1630
+ return this._getContextWindowReplayForModel(model, settingsContextWindow?.contextWindow, settingsContextWindow?.source);
1617
1631
  }
1618
1632
  _applyContextWindowReplay(contextWindow) {
1619
1633
  if (!this.model)
1620
1634
  return;
1621
1635
  const previousContextWindow = this.model.contextWindow;
1622
- const requestedContextWindow = contextWindow ?? this.settingsManager.getDefaultContextWindow();
1623
- const replay = this._getContextWindowReplayForModel(this.model, requestedContextWindow);
1636
+ const settingsContextWindow = this._getSettingsContextWindowRequestForModel(this.model);
1637
+ const requestedContextWindow = contextWindow ?? settingsContextWindow?.contextWindow;
1638
+ const source = contextWindow !== undefined ? "session" : settingsContextWindow?.source;
1639
+ const replay = this._getContextWindowReplayForModel(this.model, requestedContextWindow, source);
1624
1640
  this.agent.state.model = replay.model;
1625
1641
  if (previousContextWindow !== replay.contextWindow) {
1626
1642
  this._emit({ type: "context_window_changed", contextWindow: replay.contextWindow });
@@ -2195,7 +2211,11 @@ export class AgentSession {
2195
2211
  if (!refreshedModel || refreshedModel === currentModel) {
2196
2212
  return;
2197
2213
  }
2198
- this.agent.state.model = refreshedModel;
2214
+ const replay = this._getResumeContextWindowReplayForModel(refreshedModel);
2215
+ this.agent.state.model = replay.model;
2216
+ if (currentModel.contextWindow !== replay.contextWindow) {
2217
+ this._emit({ type: "context_window_changed", contextWindow: replay.contextWindow });
2218
+ }
2199
2219
  this._refreshBaseSystemPromptFromActiveTools();
2200
2220
  }
2201
2221
  _bindExtensionCore(runner) {