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
@@ -36,10 +36,12 @@ import { evaluateToolCall } from "./permissions/gate.js";
36
36
  import { createInteractiveResponder } from "./permissions/responder.js";
37
37
  import { expandPromptTemplate } from "./prompt-templates.js";
38
38
  import { CURRENT_SESSION_VERSION, getLatestCompactionEntry, TODO_CUSTOM_ENTRY_TYPE, } from "./session-manager.js";
39
+ import { slugifySkillCommandName } from "./skills.js";
39
40
  import { createSyntheticSourceInfo } from "./source-info.js";
40
41
  import { buildSystemPrompt } from "./system-prompt.js";
41
42
  import { createLocalBashOperations } from "./tools/bash.js";
42
43
  import { createAllToolDefinitions } from "./tools/index.js";
44
+ import { createSkillSearchToolDefinition } from "./tools/skill-search.js";
43
45
  import { createTodoWriteToolDefinition } from "./tools/todo-write.js";
44
46
  import { createToolDefinitionFromAgentTool } from "./tools/tool-definition-wrapper.js";
45
47
  import { createToolSchemaToolDefinition } from "./tools/tool-schema.js";
@@ -126,6 +128,8 @@ export class AgentSession {
126
128
  _sessionStartEvent;
127
129
  _permissionGate;
128
130
  _evidenceSink;
131
+ _diagnosticsOperations;
132
+ _lspOperations;
129
133
  _extensionUIContext;
130
134
  _extensionMode = "print";
131
135
  _extensionCommandContextActions;
@@ -161,6 +165,8 @@ export class AgentSession {
161
165
  this._sessionStartEvent = config.sessionStartEvent ?? { type: "session_start", reason: "startup" };
162
166
  this._permissionGate = config.permissionGate;
163
167
  this._evidenceSink = config.evidenceSink ?? new SessionEvidenceSink(this.sessionManager);
168
+ this._diagnosticsOperations = config.diagnosticsOperations;
169
+ this._lspOperations = config.lspOperations;
164
170
  // Always subscribe to agent events for internal handling
165
171
  // (session persistence, extensions, auto-compaction, retry logic)
166
172
  this._unsubscribeAgent = this.agent.subscribe(this._handleAgentEvent);
@@ -1048,9 +1054,16 @@ export class AgentSession {
1048
1054
  if (!text.startsWith("/skill:"))
1049
1055
  return text;
1050
1056
  const spaceIndex = text.indexOf(" ");
1051
- const skillName = spaceIndex === -1 ? text.slice(7) : text.slice(7, spaceIndex);
1057
+ const commandToken = spaceIndex === -1 ? text.slice(7) : text.slice(7, spaceIndex);
1052
1058
  const args = spaceIndex === -1 ? "" : text.slice(spaceIndex + 1).trim();
1053
- const skill = this.resourceLoader.getSkills().skills.find((s) => s.name === skillName);
1059
+ // Matched against the slugged command token (SKILL.5), not the raw frontmatter
1060
+ // name -- identity for an already command-safe name, so an exactly-typed raw
1061
+ // name still matches too. A skill whose name contains a space or other
1062
+ // slash-command-breaking character (docs/skills.md's lenient loading allows
1063
+ // this) is only reachable through its slugged token.
1064
+ const skill = this.resourceLoader
1065
+ .getSkills()
1066
+ .skills.find((s) => slugifySkillCommandName(s.name) === commandToken);
1054
1067
  if (!skill)
1055
1068
  return text; // Unknown skill, pass through
1056
1069
  try {
@@ -1929,7 +1942,7 @@ export class AgentSession {
1929
1942
  sourceInfo: template.sourceInfo,
1930
1943
  }));
1931
1944
  const skills = this._resourceLoader.getSkills().skills.map((skill) => ({
1932
- name: `skill:${skill.name}`,
1945
+ name: `skill:${slugifySkillCommandName(skill.name)}`,
1933
1946
  description: skill.description,
1934
1947
  source: "skill",
1935
1948
  sourceInfo: skill.sourceInfo,
@@ -2128,6 +2141,9 @@ export class AgentSession {
2128
2141
  : createAllToolDefinitions(this._cwd, {
2129
2142
  read: { autoResizeImages },
2130
2143
  bash: { commandPrefix: shellCommandPrefix, shellPath },
2144
+ edit: { diagnosticsOperations: this._diagnosticsOperations },
2145
+ write: { diagnosticsOperations: this._diagnosticsOperations },
2146
+ ...(this._lspOperations ? { lsp: { operations: this._lspOperations } } : {}),
2131
2147
  });
2132
2148
  baseToolDefinitions.tool_schema = createToolSchemaToolDefinition({
2133
2149
  getTool: (name) => {
@@ -2145,6 +2161,12 @@ export class AgentSession {
2145
2161
  this.sessionManager.appendCustomEntry(TODO_CUSTOM_ENTRY_TYPE, todos);
2146
2162
  },
2147
2163
  });
2164
+ // Reads the resource loader live on every call (not a snapshot taken here), so
2165
+ // a project-trust change or a settings reload that alters the loaded skill set
2166
+ // is reflected on the next search without rebuilding the tool registry.
2167
+ baseToolDefinitions.skill_search = createSkillSearchToolDefinition({
2168
+ getSkills: () => this.resourceLoader.getSkills().skills,
2169
+ });
2148
2170
  this._baseToolDefinitions = new Map(Object.entries(baseToolDefinitions).map(([name, tool]) => [name, tool]));
2149
2171
  const extensionsResult = this._resourceLoader.getExtensions();
2150
2172
  if (options.flagValues) {
@@ -2160,7 +2182,9 @@ export class AgentSession {
2160
2182
  this._applyExtensionBindings(this._extensionRunner);
2161
2183
  const defaultActiveToolNames = this._baseToolsOverride
2162
2184
  ? Object.keys(this._baseToolsOverride)
2163
- : ["read", "bash", "edit", "write"];
2185
+ : this._lspOperations
2186
+ ? ["read", "bash", "edit", "write", "lsp"]
2187
+ : ["read", "bash", "edit", "write"];
2164
2188
  const baseActiveToolNames = options.activeToolNames ?? defaultActiveToolNames;
2165
2189
  this._refreshToolRegistry({
2166
2190
  activeToolNames: baseActiveToolNames,