apex-code 0.0.1-alpha.4 → 0.0.1-alpha.6

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 (142) hide show
  1. package/CHANGELOG.md +78 -0
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +10 -1
  4. package/dist/cli.js.map +1 -1
  5. package/dist/core/agent-session-runtime.d.ts.map +1 -1
  6. package/dist/core/agent-session-runtime.js +2 -2
  7. package/dist/core/agent-session-runtime.js.map +1 -1
  8. package/dist/core/agent-session-services.d.ts +20 -1
  9. package/dist/core/agent-session-services.d.ts.map +1 -1
  10. package/dist/core/agent-session-services.js +91 -1
  11. package/dist/core/agent-session-services.js.map +1 -1
  12. package/dist/core/agent-session.d.ts +17 -0
  13. package/dist/core/agent-session.d.ts.map +1 -1
  14. package/dist/core/agent-session.js +28 -4
  15. package/dist/core/agent-session.js.map +1 -1
  16. package/dist/core/lsp/client.d.ts +76 -0
  17. package/dist/core/lsp/client.d.ts.map +1 -0
  18. package/dist/core/lsp/client.js +469 -0
  19. package/dist/core/lsp/client.js.map +1 -0
  20. package/dist/core/lsp/diagnostics.d.ts +47 -0
  21. package/dist/core/lsp/diagnostics.d.ts.map +1 -0
  22. package/dist/core/lsp/diagnostics.js +224 -0
  23. package/dist/core/lsp/diagnostics.js.map +1 -0
  24. package/dist/core/lsp/pool.d.ts +48 -0
  25. package/dist/core/lsp/pool.d.ts.map +1 -0
  26. package/dist/core/lsp/pool.js +150 -0
  27. package/dist/core/lsp/pool.js.map +1 -0
  28. package/dist/core/lsp/registry.d.ts +49 -0
  29. package/dist/core/lsp/registry.d.ts.map +1 -0
  30. package/dist/core/lsp/registry.js +215 -0
  31. package/dist/core/lsp/registry.js.map +1 -0
  32. package/dist/core/lsp/status.d.ts +23 -0
  33. package/dist/core/lsp/status.d.ts.map +1 -0
  34. package/dist/core/lsp/status.js +35 -0
  35. package/dist/core/lsp/status.js.map +1 -0
  36. package/dist/core/lsp/sync.d.ts +13 -0
  37. package/dist/core/lsp/sync.d.ts.map +1 -0
  38. package/dist/core/lsp/sync.js +71 -0
  39. package/dist/core/lsp/sync.js.map +1 -0
  40. package/dist/core/package-manager.d.ts.map +1 -1
  41. package/dist/core/package-manager.js +15 -0
  42. package/dist/core/package-manager.js.map +1 -1
  43. package/dist/core/project-trust.d.ts.map +1 -1
  44. package/dist/core/project-trust.js +1 -1
  45. package/dist/core/project-trust.js.map +1 -1
  46. package/dist/core/sandbox/cli-launch.d.ts +43 -0
  47. package/dist/core/sandbox/cli-launch.d.ts.map +1 -1
  48. package/dist/core/sandbox/cli-launch.js +70 -3
  49. package/dist/core/sandbox/cli-launch.js.map +1 -1
  50. package/dist/core/sandbox/cli-supervisor.d.ts +2 -0
  51. package/dist/core/sandbox/cli-supervisor.d.ts.map +1 -1
  52. package/dist/core/sandbox/cli-supervisor.js +1 -0
  53. package/dist/core/sandbox/cli-supervisor.js.map +1 -1
  54. package/dist/core/sdk.d.ts +4 -0
  55. package/dist/core/sdk.d.ts.map +1 -1
  56. package/dist/core/sdk.js +10 -1
  57. package/dist/core/sdk.js.map +1 -1
  58. package/dist/core/settings-manager.d.ts +3 -0
  59. package/dist/core/settings-manager.d.ts.map +1 -1
  60. package/dist/core/settings-manager.js +3 -0
  61. package/dist/core/settings-manager.js.map +1 -1
  62. package/dist/core/skills.d.ts +19 -7
  63. package/dist/core/skills.d.ts.map +1 -1
  64. package/dist/core/skills.js +77 -19
  65. package/dist/core/skills.js.map +1 -1
  66. package/dist/core/slash-commands.d.ts.map +1 -1
  67. package/dist/core/slash-commands.js +1 -1
  68. package/dist/core/slash-commands.js.map +1 -1
  69. package/dist/core/system-prompt.d.ts.map +1 -1
  70. package/dist/core/system-prompt.js +3 -3
  71. package/dist/core/system-prompt.js.map +1 -1
  72. package/dist/core/tools/contract.d.ts +29 -2
  73. package/dist/core/tools/contract.d.ts.map +1 -1
  74. package/dist/core/tools/contract.js.map +1 -1
  75. package/dist/core/tools/diagnostics.d.ts +39 -0
  76. package/dist/core/tools/diagnostics.d.ts.map +1 -0
  77. package/dist/core/tools/diagnostics.js +62 -0
  78. package/dist/core/tools/diagnostics.js.map +1 -0
  79. package/dist/core/tools/edit.d.ts +10 -0
  80. package/dist/core/tools/edit.d.ts.map +1 -1
  81. package/dist/core/tools/edit.js +17 -8
  82. package/dist/core/tools/edit.js.map +1 -1
  83. package/dist/core/tools/index.d.ts +20 -3
  84. package/dist/core/tools/index.d.ts.map +1 -1
  85. package/dist/core/tools/index.js +18 -0
  86. package/dist/core/tools/index.js.map +1 -1
  87. package/dist/core/tools/lsp.d.ts +62 -0
  88. package/dist/core/tools/lsp.d.ts.map +1 -0
  89. package/dist/core/tools/lsp.js +216 -0
  90. package/dist/core/tools/lsp.js.map +1 -0
  91. package/dist/core/tools/skill-search.d.ts +32 -0
  92. package/dist/core/tools/skill-search.d.ts.map +1 -0
  93. package/dist/core/tools/skill-search.js +56 -0
  94. package/dist/core/tools/skill-search.js.map +1 -0
  95. package/dist/core/tools/write.d.ts +10 -0
  96. package/dist/core/tools/write.d.ts.map +1 -1
  97. package/dist/core/tools/write.js +16 -3
  98. package/dist/core/tools/write.js.map +1 -1
  99. package/dist/index.d.ts +1 -1
  100. package/dist/index.d.ts.map +1 -1
  101. package/dist/index.js.map +1 -1
  102. package/dist/modes/interactive/components/custom-editor.d.ts +49 -1
  103. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
  104. package/dist/modes/interactive/components/custom-editor.js +235 -1
  105. package/dist/modes/interactive/components/custom-editor.js.map +1 -1
  106. package/dist/modes/interactive/components/first-time-setup.d.ts.map +1 -1
  107. package/dist/modes/interactive/components/first-time-setup.js +2 -1
  108. package/dist/modes/interactive/components/first-time-setup.js.map +1 -1
  109. package/dist/modes/interactive/components/index.d.ts +1 -0
  110. package/dist/modes/interactive/components/index.d.ts.map +1 -1
  111. package/dist/modes/interactive/components/index.js +1 -0
  112. package/dist/modes/interactive/components/index.js.map +1 -1
  113. package/dist/modes/interactive/components/model-selector.d.ts +19 -6
  114. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  115. package/dist/modes/interactive/components/model-selector.js +172 -89
  116. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  117. package/dist/modes/interactive/components/splash-header.d.ts +41 -0
  118. package/dist/modes/interactive/components/splash-header.d.ts.map +1 -0
  119. package/dist/modes/interactive/components/splash-header.js +145 -0
  120. package/dist/modes/interactive/components/splash-header.js.map +1 -0
  121. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  122. package/dist/modes/interactive/interactive-mode.js +19 -15
  123. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  124. package/dist/modes/interactive/theme/apex.json +94 -0
  125. package/dist/modes/interactive/theme/light.json +1 -1
  126. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  127. package/dist/modes/interactive/theme/theme.js +6 -1
  128. package/dist/modes/interactive/theme/theme.js.map +1 -1
  129. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  130. package/dist/modes/rpc/rpc-mode.js +2 -1
  131. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  132. package/dist/themes/apex-logo.d.ts +21 -0
  133. package/dist/themes/apex-logo.d.ts.map +1 -0
  134. package/dist/themes/apex-logo.js +31 -0
  135. package/dist/themes/apex-logo.js.map +1 -0
  136. package/dist/utils/changelog.d.ts +7 -2
  137. package/dist/utils/changelog.d.ts.map +1 -1
  138. package/dist/utils/changelog.js +82 -13
  139. package/dist/utils/changelog.js.map +1 -1
  140. package/docs/skills.md +54 -4
  141. package/npm-shrinkwrap.json +5 -5
  142. package/package.json +2 -2
@@ -26,6 +26,7 @@ import { DefaultPackageManager } from "../../core/package-manager.js";
26
26
  import { formatMissingSessionCwdPrompt, MissingSessionCwdError } from "../../core/session-cwd.js";
27
27
  import { SessionManager, sessionEntryToContextMessages } from "../../core/session-manager.js";
28
28
  import { formatShareUnavailableMessage, publishSessionShare } from "../../core/session-share.js";
29
+ import { slugifySkillCommandName } from "../../core/skills.js";
29
30
  import { BUILTIN_SLASH_COMMANDS } from "../../core/slash-commands.js";
30
31
  import { hasTrustRequiringProjectResources, ProjectTrustStore } from "../../core/trust-manager.js";
31
32
  import { getUsageCostBreakdown } from "../../core/usage-totals.js";
@@ -63,6 +64,7 @@ import { ScopedModelsSelectorComponent } from "./components/scoped-models-select
63
64
  import { SessionSelectorComponent } from "./components/session-selector.js";
64
65
  import { SettingsSelectorComponent } from "./components/settings-selector.js";
65
66
  import { SkillInvocationMessageComponent } from "./components/skill-invocation-message.js";
67
+ import { ApexSplashHeader } from "./components/splash-header.js";
66
68
  import { BranchSummaryStatusIndicator, CompactionStatusIndicator, IdleStatus, RetryStatusIndicator, WorkingStatusIndicator, } from "./components/status-indicator.js";
67
69
  import { ToolExecutionComponent } from "./components/tool-execution.js";
68
70
  import { TreeSelectorComponent } from "./components/tree-selector.js";
@@ -362,6 +364,11 @@ export class InteractiveMode {
362
364
  this.defaultEditor = new CustomEditor(this.ui, getEditorTheme(), this.keybindings, {
363
365
  paddingX: editorPaddingX,
364
366
  autocompleteMaxVisible,
367
+ promptPrefix: "> ",
368
+ promptColor: (text) => theme.fg("accent", text),
369
+ placeholder: "Ask anything, / for commands, ! for bash",
370
+ placeholderColor: (text) => theme.fg("dim", text),
371
+ commandColor: (text) => theme.fg("accent", text),
365
372
  });
366
373
  this.editor = this.defaultEditor;
367
374
  this.editorContainer = new Container();
@@ -478,7 +485,7 @@ export class InteractiveMode {
478
485
  const skillCommandList = [];
479
486
  if (this.settingsManager.getEnableSkillCommands()) {
480
487
  for (const skill of this.session.resourceLoader.getSkills().skills) {
481
- const commandName = `skill:${skill.name}`;
488
+ const commandName = `skill:${slugifySkillCommandName(skill.name)}`;
482
489
  this.skillCommands.set(commandName, skill.filePath);
483
490
  skillCommandList.push({
484
491
  name: commandName,
@@ -517,7 +524,7 @@ export class InteractiveMode {
517
524
  }
518
525
  this.chatContainer.addChild(new DynamicBorder());
519
526
  if (this.settingsManager.getCollapseChangelog()) {
520
- const versionMatch = this.changelogMarkdown.match(/##\s+\[?(\d+\.\d+\.\d+)\]?/);
527
+ const versionMatch = this.changelogMarkdown.match(/##\s+\[?(\d+\.\d+\.\d+(?:-[0-9A-Za-z][0-9A-Za-z.-]*)?)\]?/);
521
528
  const latestVersion = versionMatch ? versionMatch[1] : this.version;
522
529
  const condensedText = `Updated to v${latestVersion}. Use ${theme.bold("/changelog")} to view full changelog.`;
523
530
  this.chatContainer.addChild(new Text(condensedText, 1, 0));
@@ -657,11 +664,14 @@ export class InteractiveMode {
657
664
  this.ui.start();
658
665
  this.isInitialized = true;
659
666
  await this.themeController.applyFromSettings();
660
- // Add header with keybindings from config (unless silenced)
667
+ // Brand splash: mark on the left, runtime metadata on the right. The model
668
+ // and cwd are read through live getters, so they fill in once the session
669
+ // binds in rebindCurrentSession below.
661
670
  if (this.options.verbose || !this.settingsManager.getQuietStartup()) {
662
- const logo = theme.bold(theme.fg("accent", APP_NAME)) + theme.fg("dim", ` v${this.version}`);
663
671
  // Build startup instructions using keybinding hint helpers
664
672
  const hint = (keybinding, description) => keyHint(keybinding, description);
673
+ // The full cheatsheet is verbose-only. The default screen leads with the
674
+ // mark and the runtime facts that actually differ between launches.
665
675
  const expandedInstructions = [
666
676
  hint("app.interrupt", "to interrupt"),
667
677
  hint("app.clear", "to clear"),
@@ -683,18 +693,12 @@ export class InteractiveMode {
683
693
  hint("app.clipboard.pasteImage", "to paste image (with text fallback)"),
684
694
  rawKeyHint("drop files", "to attach"),
685
695
  ].join("\n");
686
- const compactInstructions = [
687
- hint("app.interrupt", "interrupt"),
688
- rawKeyHint(`${keyText("app.clear")}/${keyText("app.exit")}`, "clear/exit"),
689
- rawKeyHint("/", "commands"),
690
- rawKeyHint("!", "bash"),
691
- hint("app.tools.expand", "more"),
692
- ].join(theme.fg("muted", " · "));
693
- const compactOnboarding = theme.fg("dim", `Press ${keyText("app.tools.expand")} to show full startup help and loaded resources.`);
694
- const onboarding = theme.fg("dim", `Apex Code can explain its own features and look up its docs. Ask it how to use or extend Apex Code.`);
695
- this.builtInHeader = new ExpandableText(() => `${logo}\n${compactInstructions}\n${compactOnboarding}\n\n${onboarding}`, () => `${logo}\n${expandedInstructions}\n\n${onboarding}`, this.getStartupExpansionState(), 1, 0);
696
+ this.builtInHeader = new ApexSplashHeader(this.version, () => this.session.state.model?.id, () => this.session.sessionManager.getCwd(), this.options.verbose ? expandedInstructions : undefined, {
697
+ topPadding: true,
698
+ getSymbolPreset: () => this.settingsManager.getSymbolPreset(),
699
+ getHint: () => "Apex Code can explain its own features and look up its docs.",
700
+ });
696
701
  // Setup UI layout
697
- this.headerContainer.addChild(new Spacer(1));
698
702
  this.headerContainer.addChild(this.builtInHeader);
699
703
  this.headerContainer.addChild(new Spacer(1));
700
704
  }