@bastani/atomic 0.8.25 → 0.8.26-alpha.1

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 (49) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/builtin/intercom/CHANGELOG.md +6 -0
  3. package/dist/builtin/intercom/index-heavy.ts +1754 -0
  4. package/dist/builtin/intercom/index.ts +374 -1746
  5. package/dist/builtin/intercom/package.json +1 -1
  6. package/dist/builtin/intercom/result-renderers.ts +77 -0
  7. package/dist/builtin/mcp/CHANGELOG.md +10 -0
  8. package/dist/builtin/mcp/index.ts +151 -57
  9. package/dist/builtin/mcp/package.json +1 -1
  10. package/dist/builtin/subagents/CHANGELOG.md +6 -0
  11. package/dist/builtin/subagents/package.json +1 -1
  12. package/dist/builtin/web-access/CHANGELOG.md +6 -0
  13. package/dist/builtin/web-access/index-heavy.ts +2060 -0
  14. package/dist/builtin/web-access/index.ts +182 -2274
  15. package/dist/builtin/web-access/package.json +1 -1
  16. package/dist/builtin/web-access/result-renderers.ts +364 -0
  17. package/dist/builtin/workflows/CHANGELOG.md +9 -0
  18. package/dist/builtin/workflows/package.json +1 -1
  19. package/dist/builtin/workflows/src/extension/index.ts +13 -3
  20. package/dist/builtin/workflows/src/runs/foreground/stage-runner.ts +53 -2
  21. package/dist/builtin/workflows/src/tui/inline-form-overlay.ts +12 -3
  22. package/dist/builtin/workflows/src/tui/inline-form-store.ts +17 -6
  23. package/dist/core/agent-session-services.d.ts.map +1 -1
  24. package/dist/core/agent-session-services.js +13 -0
  25. package/dist/core/agent-session-services.js.map +1 -1
  26. package/dist/core/extensions/loader.d.ts.map +1 -1
  27. package/dist/core/extensions/loader.js +7 -0
  28. package/dist/core/extensions/loader.js.map +1 -1
  29. package/dist/core/extensions/types.d.ts +13 -1
  30. package/dist/core/extensions/types.d.ts.map +1 -1
  31. package/dist/core/extensions/types.js.map +1 -1
  32. package/dist/core/resource-loader.d.ts.map +1 -1
  33. package/dist/core/resource-loader.js +17 -0
  34. package/dist/core/resource-loader.js.map +1 -1
  35. package/dist/core/timings.d.ts +9 -0
  36. package/dist/core/timings.d.ts.map +1 -1
  37. package/dist/core/timings.js +28 -1
  38. package/dist/core/timings.js.map +1 -1
  39. package/dist/main.d.ts.map +1 -1
  40. package/dist/main.js +4 -2
  41. package/dist/main.js.map +1 -1
  42. package/dist/modes/interactive/components/custom-message.d.ts +1 -0
  43. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
  44. package/dist/modes/interactive/components/custom-message.js +36 -4
  45. package/dist/modes/interactive/components/custom-message.js.map +1 -1
  46. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  47. package/dist/modes/interactive/interactive-mode.js +19 -7
  48. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  49. package/package.json +1 -1
@@ -31,6 +31,7 @@ import { parseGitUrl } from "../../utils/git.js";
31
31
  import { getCwdRelativePath } from "../../utils/paths.js";
32
32
  import { getPiUserAgent } from "../../utils/pi-user-agent.js";
33
33
  import { killTrackedDetachedChildren } from "../../utils/shell.js";
34
+ import { recordTimeSinceReset } from "../../core/timings.js";
34
35
  import { ensureTool } from "../../utils/tools-manager.js";
35
36
  import { checkForNewPiVersion } from "../../utils/version-check.js";
36
37
  import { ArminComponent } from "./components/armin.js";
@@ -404,10 +405,6 @@ export class InteractiveMode {
404
405
  this.registerSignalHandlers();
405
406
  // Load changelog (only show new entries, skip for resumed sessions)
406
407
  this.changelogMarkdown = this.getChangelogForDisplay();
407
- // Ensure fd and rg are available (downloads if missing, adds to PATH via getBinDir)
408
- // Both are needed: fd for autocomplete, rg for grep tool and bash commands
409
- const [fdPath] = await Promise.all([ensureTool("fd"), ensureTool("rg")]);
410
- this.fdPath = fdPath;
411
408
  // Add header container as first child
412
409
  this.ui.addChild(this.headerContainer);
413
410
  // Add the quiet startup identity (unless silenced). Resource details are
@@ -444,9 +441,21 @@ export class InteractiveMode {
444
441
  this.ui.setFocus(this.editor);
445
442
  this.setupKeyHandlers();
446
443
  this.setupEditorSubmitHandler();
447
- // Start the UI before initializing extensions so session_start handlers can use interactive dialogs
444
+ // Start the UI before initializing extensions so session_start handlers can use interactive dialogs.
445
+ // fd/rg readiness is intentionally checked after first paint because ensureTool may spawn
446
+ // or download tools on cold machines.
448
447
  this.ui.start();
448
+ recordTimeSinceReset("time-to-first-frame");
449
449
  this.isInitialized = true;
450
+ void Promise.all([ensureTool("fd"), ensureTool("rg")])
451
+ .then(([fdPath]) => {
452
+ this.fdPath = fdPath;
453
+ this.setupAutocompleteProvider();
454
+ })
455
+ .catch((error) => {
456
+ const message = error instanceof Error ? error.message : String(error);
457
+ console.error(`Tool readiness check failed: ${message}`);
458
+ });
450
459
  // Initialize extensions first so resources are shown before messages
451
460
  await this.rebindCurrentSession();
452
461
  // Render initial messages AFTER showing loaded resources
@@ -461,8 +470,11 @@ export class InteractiveMode {
461
470
  this.footerDataProvider.onBranchChange(() => {
462
471
  this.ui.requestRender();
463
472
  });
464
- // Initialize available provider count for footer display
465
- await this.updateAvailableProviderCount();
473
+ // Initialize available provider count for footer display without delaying first-frame startup.
474
+ void this.updateAvailableProviderCount().catch((error) => {
475
+ const message = error instanceof Error ? error.message : String(error);
476
+ console.error(`Failed to update provider count: ${message}`);
477
+ });
466
478
  }
467
479
  /**
468
480
  * Update terminal title with session name and cwd.