@netlify/axis 0.2.0

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 (230) hide show
  1. package/README.md +977 -0
  2. package/dist/adapters/base/acp-adapter.d.ts +44 -0
  3. package/dist/adapters/base/acp-adapter.d.ts.map +1 -0
  4. package/dist/adapters/base/acp-adapter.js +559 -0
  5. package/dist/adapters/base/acp-adapter.js.map +1 -0
  6. package/dist/adapters/base/agent-adapter.d.ts +132 -0
  7. package/dist/adapters/base/agent-adapter.d.ts.map +1 -0
  8. package/dist/adapters/base/agent-adapter.js +212 -0
  9. package/dist/adapters/base/agent-adapter.js.map +1 -0
  10. package/dist/adapters/claude-code.d.ts +3 -0
  11. package/dist/adapters/claude-code.d.ts.map +1 -0
  12. package/dist/adapters/claude-code.js +138 -0
  13. package/dist/adapters/claude-code.js.map +1 -0
  14. package/dist/adapters/claude-sdk.d.ts +11 -0
  15. package/dist/adapters/claude-sdk.d.ts.map +1 -0
  16. package/dist/adapters/claude-sdk.js +46 -0
  17. package/dist/adapters/claude-sdk.js.map +1 -0
  18. package/dist/adapters/codex.d.ts +3 -0
  19. package/dist/adapters/codex.d.ts.map +1 -0
  20. package/dist/adapters/codex.js +183 -0
  21. package/dist/adapters/codex.js.map +1 -0
  22. package/dist/adapters/gemini-acp.d.ts +11 -0
  23. package/dist/adapters/gemini-acp.d.ts.map +1 -0
  24. package/dist/adapters/gemini-acp.js +60 -0
  25. package/dist/adapters/gemini-acp.js.map +1 -0
  26. package/dist/adapters/gemini.d.ts +3 -0
  27. package/dist/adapters/gemini.d.ts.map +1 -0
  28. package/dist/adapters/gemini.js +222 -0
  29. package/dist/adapters/gemini.js.map +1 -0
  30. package/dist/adapters/goose.d.ts +3 -0
  31. package/dist/adapters/goose.d.ts.map +1 -0
  32. package/dist/adapters/goose.js +9 -0
  33. package/dist/adapters/goose.js.map +1 -0
  34. package/dist/adapters/registry.d.ts +7 -0
  35. package/dist/adapters/registry.d.ts.map +1 -0
  36. package/dist/adapters/registry.js +37 -0
  37. package/dist/adapters/registry.js.map +1 -0
  38. package/dist/adapters/utils/mcp.d.ts +23 -0
  39. package/dist/adapters/utils/mcp.d.ts.map +1 -0
  40. package/dist/adapters/utils/mcp.js +114 -0
  41. package/dist/adapters/utils/mcp.js.map +1 -0
  42. package/dist/adapters/utils/resolve.d.ts +20 -0
  43. package/dist/adapters/utils/resolve.d.ts.map +1 -0
  44. package/dist/adapters/utils/resolve.js +48 -0
  45. package/dist/adapters/utils/resolve.js.map +1 -0
  46. package/dist/adapters/utils/skills.d.ts +17 -0
  47. package/dist/adapters/utils/skills.d.ts.map +1 -0
  48. package/dist/adapters/utils/skills.js +52 -0
  49. package/dist/adapters/utils/skills.js.map +1 -0
  50. package/dist/adapters/utils/token-estimator.d.ts +21 -0
  51. package/dist/adapters/utils/token-estimator.d.ts.map +1 -0
  52. package/dist/adapters/utils/token-estimator.js +37 -0
  53. package/dist/adapters/utils/token-estimator.js.map +1 -0
  54. package/dist/baselines/diff.d.ts +9 -0
  55. package/dist/baselines/diff.d.ts.map +1 -0
  56. package/dist/baselines/diff.js +83 -0
  57. package/dist/baselines/diff.js.map +1 -0
  58. package/dist/baselines/index.d.ts +3 -0
  59. package/dist/baselines/index.d.ts.map +1 -0
  60. package/dist/baselines/index.js +3 -0
  61. package/dist/baselines/index.js.map +1 -0
  62. package/dist/baselines/store.d.ts +19 -0
  63. package/dist/baselines/store.d.ts.map +1 -0
  64. package/dist/baselines/store.js +104 -0
  65. package/dist/baselines/store.js.map +1 -0
  66. package/dist/cli.d.ts +3 -0
  67. package/dist/cli.d.ts.map +1 -0
  68. package/dist/cli.js +487 -0
  69. package/dist/cli.js.map +1 -0
  70. package/dist/config/loader.d.ts +8 -0
  71. package/dist/config/loader.d.ts.map +1 -0
  72. package/dist/config/loader.js +99 -0
  73. package/dist/config/loader.js.map +1 -0
  74. package/dist/config/validator.d.ts +11 -0
  75. package/dist/config/validator.d.ts.map +1 -0
  76. package/dist/config/validator.js +203 -0
  77. package/dist/config/validator.js.map +1 -0
  78. package/dist/docs-site/_astro/cli.DDWZtG0-.css +1 -0
  79. package/dist/docs-site/cli/index.html +18 -0
  80. package/dist/docs-site/configuration/index.html +121 -0
  81. package/dist/docs-site/content-assets.mjs +1 -0
  82. package/dist/docs-site/content-modules.mjs +1 -0
  83. package/dist/docs-site/data-store.json +9 -0
  84. package/dist/docs-site/index.html +69 -0
  85. package/dist/docs-site/quickstart/index.html +59 -0
  86. package/dist/docs-site/running/index.html +87 -0
  87. package/dist/docs-site/scoring/index.html +135 -0
  88. package/dist/index.d.ts +19 -0
  89. package/dist/index.d.ts.map +1 -0
  90. package/dist/index.js +15 -0
  91. package/dist/index.js.map +1 -0
  92. package/dist/report-ui/index.html +291 -0
  93. package/dist/report-ui/mock-data.json +298 -0
  94. package/dist/reports/html.d.ts +7 -0
  95. package/dist/reports/html.d.ts.map +1 -0
  96. package/dist/reports/html.js +27 -0
  97. package/dist/reports/html.js.map +1 -0
  98. package/dist/reports/reader.d.ts +21 -0
  99. package/dist/reports/reader.d.ts.map +1 -0
  100. package/dist/reports/reader.js +110 -0
  101. package/dist/reports/reader.js.map +1 -0
  102. package/dist/reports/writer.d.ts +14 -0
  103. package/dist/reports/writer.d.ts.map +1 -0
  104. package/dist/reports/writer.js +106 -0
  105. package/dist/reports/writer.js.map +1 -0
  106. package/dist/runner/lifecycle.d.ts +10 -0
  107. package/dist/runner/lifecycle.d.ts.map +1 -0
  108. package/dist/runner/lifecycle.js +58 -0
  109. package/dist/runner/lifecycle.js.map +1 -0
  110. package/dist/runner/runner.d.ts +34 -0
  111. package/dist/runner/runner.d.ts.map +1 -0
  112. package/dist/runner/runner.js +330 -0
  113. package/dist/runner/runner.js.map +1 -0
  114. package/dist/scoring/category-score.d.ts +52 -0
  115. package/dist/scoring/category-score.d.ts.map +1 -0
  116. package/dist/scoring/category-score.js +157 -0
  117. package/dist/scoring/category-score.js.map +1 -0
  118. package/dist/scoring/composite.d.ts +5 -0
  119. package/dist/scoring/composite.d.ts.map +1 -0
  120. package/dist/scoring/composite.js +24 -0
  121. package/dist/scoring/composite.js.map +1 -0
  122. package/dist/scoring/deep-eval.d.ts +25 -0
  123. package/dist/scoring/deep-eval.d.ts.map +1 -0
  124. package/dist/scoring/deep-eval.js +382 -0
  125. package/dist/scoring/deep-eval.js.map +1 -0
  126. package/dist/scoring/goal-achievement.d.ts +5 -0
  127. package/dist/scoring/goal-achievement.d.ts.map +1 -0
  128. package/dist/scoring/goal-achievement.js +241 -0
  129. package/dist/scoring/goal-achievement.js.map +1 -0
  130. package/dist/scoring/index.d.ts +22 -0
  131. package/dist/scoring/index.d.ts.map +1 -0
  132. package/dist/scoring/index.js +115 -0
  133. package/dist/scoring/index.js.map +1 -0
  134. package/dist/scoring/parse-json.d.ts +6 -0
  135. package/dist/scoring/parse-json.d.ts.map +1 -0
  136. package/dist/scoring/parse-json.js +18 -0
  137. package/dist/scoring/parse-json.js.map +1 -0
  138. package/dist/scoring/sparse-index.d.ts +15 -0
  139. package/dist/scoring/sparse-index.d.ts.map +1 -0
  140. package/dist/scoring/sparse-index.js +338 -0
  141. package/dist/scoring/sparse-index.js.map +1 -0
  142. package/dist/scoring/triage.d.ts +15 -0
  143. package/dist/scoring/triage.d.ts.map +1 -0
  144. package/dist/scoring/triage.js +204 -0
  145. package/dist/scoring/triage.js.map +1 -0
  146. package/dist/skills/resolver.d.ts +19 -0
  147. package/dist/skills/resolver.d.ts.map +1 -0
  148. package/dist/skills/resolver.js +95 -0
  149. package/dist/skills/resolver.js.map +1 -0
  150. package/dist/transcript/categorize.d.ts +24 -0
  151. package/dist/transcript/categorize.d.ts.map +1 -0
  152. package/dist/transcript/categorize.js +233 -0
  153. package/dist/transcript/categorize.js.map +1 -0
  154. package/dist/transcript/classify.d.ts +7 -0
  155. package/dist/transcript/classify.d.ts.map +1 -0
  156. package/dist/transcript/classify.js +32 -0
  157. package/dist/transcript/classify.js.map +1 -0
  158. package/dist/transcript/extract.d.ts +24 -0
  159. package/dist/transcript/extract.d.ts.map +1 -0
  160. package/dist/transcript/extract.js +266 -0
  161. package/dist/transcript/extract.js.map +1 -0
  162. package/dist/transcript/index.d.ts +3 -0
  163. package/dist/transcript/index.d.ts.map +1 -0
  164. package/dist/transcript/index.js +2 -0
  165. package/dist/transcript/index.js.map +1 -0
  166. package/dist/transcript/normalize.d.ts +15 -0
  167. package/dist/transcript/normalize.d.ts.map +1 -0
  168. package/dist/transcript/normalize.js +160 -0
  169. package/dist/transcript/normalize.js.map +1 -0
  170. package/dist/transcript/types.d.ts +92 -0
  171. package/dist/transcript/types.d.ts.map +1 -0
  172. package/dist/transcript/types.js +2 -0
  173. package/dist/transcript/types.js.map +1 -0
  174. package/dist/transcript/urls.d.ts +10 -0
  175. package/dist/transcript/urls.d.ts.map +1 -0
  176. package/dist/transcript/urls.js +31 -0
  177. package/dist/transcript/urls.js.map +1 -0
  178. package/dist/types/agent.d.ts +80 -0
  179. package/dist/types/agent.d.ts.map +1 -0
  180. package/dist/types/agent.js +2 -0
  181. package/dist/types/agent.js.map +1 -0
  182. package/dist/types/baseline.d.ts +65 -0
  183. package/dist/types/baseline.d.ts.map +1 -0
  184. package/dist/types/baseline.js +2 -0
  185. package/dist/types/baseline.js.map +1 -0
  186. package/dist/types/config.d.ts +76 -0
  187. package/dist/types/config.d.ts.map +1 -0
  188. package/dist/types/config.js +2 -0
  189. package/dist/types/config.js.map +1 -0
  190. package/dist/types/index.d.ts +8 -0
  191. package/dist/types/index.d.ts.map +1 -0
  192. package/dist/types/index.js +8 -0
  193. package/dist/types/index.js.map +1 -0
  194. package/dist/types/output.d.ts +70 -0
  195. package/dist/types/output.d.ts.map +1 -0
  196. package/dist/types/output.js +15 -0
  197. package/dist/types/output.js.map +1 -0
  198. package/dist/types/report.d.ts +37 -0
  199. package/dist/types/report.d.ts.map +1 -0
  200. package/dist/types/report.js +2 -0
  201. package/dist/types/report.js.map +1 -0
  202. package/dist/types/scenario.d.ts +23 -0
  203. package/dist/types/scenario.d.ts.map +1 -0
  204. package/dist/types/scenario.js +2 -0
  205. package/dist/types/scenario.js.map +1 -0
  206. package/dist/types/scoring.d.ts +176 -0
  207. package/dist/types/scoring.d.ts.map +1 -0
  208. package/dist/types/scoring.js +2 -0
  209. package/dist/types/scoring.js.map +1 -0
  210. package/dist/ui/AnimatedTokens.d.ts +29 -0
  211. package/dist/ui/AnimatedTokens.d.ts.map +1 -0
  212. package/dist/ui/AnimatedTokens.js +53 -0
  213. package/dist/ui/AnimatedTokens.js.map +1 -0
  214. package/dist/ui/App.d.ts +6 -0
  215. package/dist/ui/App.d.ts.map +1 -0
  216. package/dist/ui/App.js +16 -0
  217. package/dist/ui/App.js.map +1 -0
  218. package/dist/ui/LiveDuration.d.ts +20 -0
  219. package/dist/ui/LiveDuration.d.ts.map +1 -0
  220. package/dist/ui/LiveDuration.js +31 -0
  221. package/dist/ui/LiveDuration.js.map +1 -0
  222. package/dist/ui/LiveStatus.d.ts +7 -0
  223. package/dist/ui/LiveStatus.d.ts.map +1 -0
  224. package/dist/ui/LiveStatus.js +52 -0
  225. package/dist/ui/LiveStatus.js.map +1 -0
  226. package/dist/ui/format.d.ts +29 -0
  227. package/dist/ui/format.d.ts.map +1 -0
  228. package/dist/ui/format.js +514 -0
  229. package/dist/ui/format.js.map +1 -0
  230. package/package.json +65 -0
@@ -0,0 +1,183 @@
1
+ import * as fs from "node:fs";
2
+ import * as path from "node:path";
3
+ import { createAgentAdapter } from "./base/agent-adapter.js";
4
+ import { writeCodexMcpConfig } from "./utils/mcp.js";
5
+ import { writeCodexSkills } from "./utils/skills.js";
6
+ export function createCodexAdapter() {
7
+ return createAgentAdapter({
8
+ name: "codex",
9
+ cliCommand: "codex",
10
+ requiredEnv: () => ["CODEX_API_KEY"],
11
+ isolationEnv: (workspace) => ({
12
+ CODEX_HOME: path.join(workspace, ".codex"),
13
+ CODEX_DISABLE_TELEMETRY: "1",
14
+ }),
15
+ prepare: (ctx) => {
16
+ // Codex requires CODEX_HOME to exist before launch
17
+ const codexHome = ctx.env?.CODEX_HOME;
18
+ if (codexHome) {
19
+ fs.mkdirSync(codexHome, { recursive: true });
20
+ if (ctx.input.mcpServers && Object.keys(ctx.input.mcpServers).length > 0) {
21
+ writeCodexMcpConfig(codexHome, ctx.input.mcpServers);
22
+ }
23
+ }
24
+ // Codex discovers .agents/skills/ in the working directory
25
+ if (ctx.input.resolvedSkills?.length) {
26
+ writeCodexSkills(ctx.workingDirectory, ctx.input.resolvedSkills);
27
+ }
28
+ },
29
+ buildArgs: (input) => {
30
+ const flags = input.config.flags ?? {};
31
+ // Default --full-auto for headless execution
32
+ const fullAuto = flags["full-auto"] ?? true;
33
+ // AXIS workspaces are fresh temp directories, not git repos
34
+ const skipGitCheck = flags["skip-git-repo-check"] ?? true;
35
+ const args = ["exec", "--json"];
36
+ if (fullAuto)
37
+ args.push("--full-auto");
38
+ if (skipGitCheck)
39
+ args.push("--skip-git-repo-check");
40
+ if (input.config.model)
41
+ args.push("--model", input.config.model);
42
+ for (const [key, value] of Object.entries(flags)) {
43
+ if (key === "full-auto" || key === "skip-git-repo-check")
44
+ continue;
45
+ if (value === true) {
46
+ args.push(`--${key}`);
47
+ }
48
+ else if (value !== false) {
49
+ args.push(`--${key}`, String(value));
50
+ }
51
+ }
52
+ // Prompt is the final positional argument
53
+ args.push(input.prompt);
54
+ return args;
55
+ },
56
+ initialState: () => ({ lastAgentMessage: null }),
57
+ streamConfig: {
58
+ mode: "lines",
59
+ onLine: (line, ctx) => {
60
+ let event;
61
+ try {
62
+ event = JSON.parse(line);
63
+ }
64
+ catch {
65
+ return;
66
+ }
67
+ processEvent(event, ctx);
68
+ },
69
+ },
70
+ getResult: (ctx) => ({
71
+ result: ctx.state.lastAgentMessage,
72
+ metadata: { tokenUsage: ctx.state.tokenUsage },
73
+ }),
74
+ });
75
+ }
76
+ /**
77
+ * Feed any textual content from an item to the token estimator so the live
78
+ * counter keeps moving during tool execution (not just assistant messages).
79
+ */
80
+ function feedItemText(item, ctx) {
81
+ const text = item.text;
82
+ if (text) {
83
+ ctx.feedAssistantText(text);
84
+ return;
85
+ }
86
+ const command = item.command;
87
+ if (command) {
88
+ ctx.feedAssistantText(command);
89
+ }
90
+ const output = item.output;
91
+ if (output) {
92
+ ctx.feedAssistantText(output);
93
+ }
94
+ }
95
+ /**
96
+ * Process a single NDJSON event from the Codex CLI.
97
+ *
98
+ * Event types:
99
+ * - thread.started — session init
100
+ * - turn.started / turn.completed / turn.failed — turn lifecycle
101
+ * - item.started / item.completed — individual items (agent_message, command_execution, etc.)
102
+ * - error — error events
103
+ */
104
+ function processEvent(event, ctx) {
105
+ const eventType = event.type;
106
+ if (eventType === "turn.completed") {
107
+ const usage = event.usage;
108
+ if (usage) {
109
+ ctx.state.tokenUsage = {
110
+ input: usage.input_tokens ?? 0,
111
+ output: usage.output_tokens ?? 0,
112
+ cacheReadInput: usage.cached_input_tokens,
113
+ };
114
+ }
115
+ return;
116
+ }
117
+ // Skip lifecycle events that don't carry content (except turn.failed → error)
118
+ if (eventType === "thread.started" || eventType === "turn.started" || eventType === "turn.failed") {
119
+ if (eventType === "turn.failed") {
120
+ ctx.transcript.push({
121
+ type: "error",
122
+ timestamp: new Date().toISOString(),
123
+ content: event,
124
+ });
125
+ }
126
+ return;
127
+ }
128
+ if (eventType === "error") {
129
+ ctx.transcript.push({
130
+ type: "error",
131
+ timestamp: new Date().toISOString(),
132
+ content: event,
133
+ });
134
+ return;
135
+ }
136
+ // Item events
137
+ if (eventType === "item.completed" || eventType === "item.started") {
138
+ const item = event.item;
139
+ if (!item)
140
+ return;
141
+ const itemType = item.type;
142
+ if (eventType === "item.completed" && itemType === "agent_message") {
143
+ const text = item.text;
144
+ if (text) {
145
+ ctx.state.lastAgentMessage = text;
146
+ ctx.feedAssistantText(text);
147
+ ctx.transcript.push({
148
+ type: "assistant",
149
+ timestamp: new Date().toISOString(),
150
+ content: item,
151
+ });
152
+ }
153
+ return;
154
+ }
155
+ if (itemType === "command_execution") {
156
+ feedItemText(item, ctx);
157
+ ctx.transcript.push({
158
+ type: eventType === "item.started" ? "tool_use" : "tool_result",
159
+ timestamp: new Date().toISOString(),
160
+ content: item,
161
+ });
162
+ return;
163
+ }
164
+ if (itemType === "reasoning") {
165
+ feedItemText(item, ctx);
166
+ ctx.transcript.push({
167
+ type: "assistant",
168
+ timestamp: new Date().toISOString(),
169
+ content: item,
170
+ });
171
+ return;
172
+ }
173
+ // file_changes, mcp_tool_calls, web_search, plan_updates — all tool-like
174
+ feedItemText(item, ctx);
175
+ const entry = {
176
+ type: eventType === "item.completed" ? "tool_result" : "tool_use",
177
+ timestamp: new Date().toISOString(),
178
+ content: item,
179
+ };
180
+ ctx.transcript.push(entry);
181
+ }
182
+ }
183
+ //# sourceMappingURL=codex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/adapters/codex.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { AgentAdapter } from "../types/agent.js";
2
+ /**
3
+ * ACP-based Gemini adapter. Uses `gemini --acp` to launch Gemini CLI
4
+ * in Agent Client Protocol mode over stdio, giving us structured tool
5
+ * calls, plans, and permissions instead of ad-hoc NDJSON.
6
+ *
7
+ * MCP servers are passed through the ACP `session/new` call rather than
8
+ * written to settings.json.
9
+ */
10
+ export declare function createGeminiAcpAdapter(): AgentAdapter;
11
+ //# sourceMappingURL=gemini-acp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini-acp.d.ts","sourceRoot":"","sources":["../../src/adapters/gemini-acp.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAItD;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,IAAI,YAAY,CAkDrD"}
@@ -0,0 +1,60 @@
1
+ import * as fs from "node:fs";
2
+ import * as path from "node:path";
3
+ import { createAcpBasedAdapter } from "./base/acp-adapter.js";
4
+ import { writeGeminiSkills } from "./utils/skills.js";
5
+ /**
6
+ * ACP-based Gemini adapter. Uses `gemini --acp` to launch Gemini CLI
7
+ * in Agent Client Protocol mode over stdio, giving us structured tool
8
+ * calls, plans, and permissions instead of ad-hoc NDJSON.
9
+ *
10
+ * MCP servers are passed through the ACP `session/new` call rather than
11
+ * written to settings.json.
12
+ */
13
+ export function createGeminiAcpAdapter() {
14
+ return createAcpBasedAdapter({
15
+ name: "gemini-acp",
16
+ cliCommand: "gemini",
17
+ requiredEnv: () => ["GEMINI_API_KEY"],
18
+ isolationEnv: (workspace) => ({
19
+ GEMINI_CLI_HOME: path.join(workspace, ".gemini"),
20
+ GEMINI_TELEMETRY_ENABLED: "false",
21
+ // Unset GOOGLE_CLOUD_PROJECT to prevent interactive auth prompts in ACP mode
22
+ GOOGLE_CLOUD_PROJECT: "",
23
+ }),
24
+ buildArgs: (input) => {
25
+ const args = ["--acp"];
26
+ if (input.config.model)
27
+ args.push("--model", input.config.model);
28
+ const flags = input.config.flags ?? {};
29
+ for (const [key, value] of Object.entries(flags)) {
30
+ if (value === true) {
31
+ args.push(`--${key}`);
32
+ }
33
+ else if (value !== false) {
34
+ args.push(`--${key}`, String(value));
35
+ }
36
+ }
37
+ return args;
38
+ },
39
+ prepare: (ctx) => {
40
+ const geminiHome = ctx.env?.GEMINI_CLI_HOME;
41
+ if (!geminiHome)
42
+ return;
43
+ fs.mkdirSync(geminiHome, { recursive: true });
44
+ // Write settings.json to disable context discovery — AXIS workspaces are
45
+ // ephemeral temp dirs with no meaningful project structure. MCP servers
46
+ // are NOT written here; they go through ACP's session/new instead.
47
+ const settings = {
48
+ context: {
49
+ discoveryMaxDirs: 0,
50
+ memoryBoundaryMarkers: [],
51
+ },
52
+ };
53
+ fs.writeFileSync(path.join(geminiHome, "settings.json"), JSON.stringify(settings, null, 2) + "\n");
54
+ if (ctx.input.resolvedSkills?.length) {
55
+ writeGeminiSkills(geminiHome, ctx.input.resolvedSkills);
56
+ }
57
+ },
58
+ });
59
+ }
60
+ //# sourceMappingURL=gemini-acp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini-acp.js","sourceRoot":"","sources":["../../src/adapters/gemini-acp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD;;;;;;;GAOG;AACH,MAAM,UAAU,sBAAsB;IACpC,OAAO,qBAAqB,CAAC;QAC3B,IAAI,EAAE,YAAY;QAClB,UAAU,EAAE,QAAQ;QAEpB,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,gBAAgB,CAAC;QAErC,YAAY,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YAC5B,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC;YAChD,wBAAwB,EAAE,OAAO;YACjC,6EAA6E;YAC7E,oBAAoB,EAAE,EAAE;SACzB,CAAC;QAEF,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;YACnB,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;YACvB,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK;gBAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAEjE,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;YACvC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACjD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;oBACnB,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;gBACxB,CAAC;qBAAM,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;oBAC3B,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;gBACvC,CAAC;YACH,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACf,MAAM,UAAU,GAAG,GAAG,CAAC,GAAG,EAAE,eAAe,CAAC;YAC5C,IAAI,CAAC,UAAU;gBAAE,OAAO;YACxB,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAE9C,yEAAyE;YACzE,wEAAwE;YACxE,mEAAmE;YACnE,MAAM,QAAQ,GAAG;gBACf,OAAO,EAAE;oBACP,gBAAgB,EAAE,CAAC;oBACnB,qBAAqB,EAAE,EAAE;iBAC1B;aACF,CAAC;YACF,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YAEnG,IAAI,GAAG,CAAC,KAAK,CAAC,cAAc,EAAE,MAAM,EAAE,CAAC;gBACrC,iBAAiB,CAAC,UAAU,EAAE,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { AgentAdapter } from "../types/agent.js";
2
+ export declare function createGeminiAdapter(): AgentAdapter;
3
+ //# sourceMappingURL=gemini.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../src/adapters/gemini.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAc,MAAM,mBAAmB,CAAC;AAclE,wBAAgB,mBAAmB,IAAI,YAAY,CAoGlD"}
@@ -0,0 +1,222 @@
1
+ import * as fs from "node:fs";
2
+ import * as path from "node:path";
3
+ import { createAgentAdapter } from "./base/agent-adapter.js";
4
+ import { writeGeminiSettings } from "./utils/mcp.js";
5
+ import { writeGeminiSkills } from "./utils/skills.js";
6
+ export function createGeminiAdapter() {
7
+ return createAgentAdapter({
8
+ name: "gemini",
9
+ cliCommand: "gemini",
10
+ requiredEnv: () => ["GEMINI_API_KEY"],
11
+ isolationEnv: (workspace) => ({
12
+ GEMINI_CLI_HOME: path.join(workspace, ".gemini"),
13
+ GEMINI_TELEMETRY_ENABLED: "false",
14
+ }),
15
+ prepare: (ctx) => {
16
+ const geminiHome = ctx.env?.GEMINI_CLI_HOME;
17
+ if (!geminiHome)
18
+ return;
19
+ fs.mkdirSync(geminiHome, { recursive: true });
20
+ // Always write settings.json — disables context discovery so Gemini
21
+ // doesn't scan the ephemeral workspace on startup. MCP servers are
22
+ // merged in when configured.
23
+ const mcpServers = ctx.input.mcpServers && Object.keys(ctx.input.mcpServers).length > 0 ? ctx.input.mcpServers : undefined;
24
+ writeGeminiSettings(geminiHome, mcpServers);
25
+ if (ctx.input.resolvedSkills?.length) {
26
+ writeGeminiSkills(geminiHome, ctx.input.resolvedSkills);
27
+ }
28
+ },
29
+ buildArgs: (input) => {
30
+ const flags = input.config.flags ?? {};
31
+ const yolo = flags["yolo"] ?? true;
32
+ const args = ["-p", input.prompt, "--output-format", "stream-json"];
33
+ if (yolo)
34
+ args.push("--yolo");
35
+ if (input.config.model)
36
+ args.push("--model", input.config.model);
37
+ for (const [key, value] of Object.entries(flags)) {
38
+ if (key === "yolo")
39
+ continue;
40
+ if (value === true) {
41
+ args.push(`--${key}`);
42
+ }
43
+ else if (value !== false) {
44
+ args.push(`--${key}`, String(value));
45
+ }
46
+ }
47
+ return args;
48
+ },
49
+ initialState: () => ({
50
+ lastAssistantMessage: null,
51
+ resultError: null,
52
+ pendingDelta: "",
53
+ pendingDeltaTimestamp: null,
54
+ }),
55
+ streamConfig: {
56
+ mode: "lines",
57
+ onLine: (line, ctx) => {
58
+ let event;
59
+ try {
60
+ event = JSON.parse(line);
61
+ }
62
+ catch {
63
+ return;
64
+ }
65
+ // Accumulate assistant deltas instead of creating individual entries.
66
+ // Gemini streams assistant messages as chunks with { delta: true }.
67
+ if (event.type === "message" && event.role === "assistant" && event.delta === true) {
68
+ if (!ctx.state.pendingDeltaTimestamp) {
69
+ ctx.state.pendingDeltaTimestamp = event.timestamp ?? new Date().toISOString();
70
+ }
71
+ const chunk = event.content ?? "";
72
+ ctx.state.pendingDelta += chunk;
73
+ ctx.feedAssistantText(chunk);
74
+ return;
75
+ }
76
+ // Non-delta event — flush any accumulated assistant text first
77
+ flushPendingDelta(ctx);
78
+ processEvent(event, ctx);
79
+ },
80
+ onEnd: (ctx) => {
81
+ // Flush any remaining delta content at end of stream (including timeout)
82
+ flushPendingDelta(ctx);
83
+ },
84
+ },
85
+ getResult: (ctx) => {
86
+ const { lastAssistantMessage, tokenUsage, sessionId, resultError } = ctx.state;
87
+ return {
88
+ result: resultError ? null : lastAssistantMessage,
89
+ metadata: {
90
+ tokenUsage,
91
+ sessionId,
92
+ ...(resultError ? { error: resultError } : {}),
93
+ },
94
+ };
95
+ },
96
+ });
97
+ }
98
+ function flushPendingDelta(ctx) {
99
+ const { pendingDelta, pendingDeltaTimestamp } = ctx.state;
100
+ if (!pendingDelta)
101
+ return;
102
+ ctx.state.lastAssistantMessage = pendingDelta;
103
+ ctx.transcript.push({
104
+ type: "assistant",
105
+ timestamp: pendingDeltaTimestamp ?? new Date().toISOString(),
106
+ content: {
107
+ type: "message",
108
+ role: "assistant",
109
+ content: pendingDelta,
110
+ },
111
+ });
112
+ ctx.state.pendingDelta = "";
113
+ ctx.state.pendingDeltaTimestamp = null;
114
+ }
115
+ /**
116
+ * Feed any textual content from an event to the token estimator so the live
117
+ * counter keeps moving during tool execution (not just assistant messages).
118
+ */
119
+ function feedEventText(event, ctx) {
120
+ const content = event.content;
121
+ if (content) {
122
+ ctx.feedAssistantText(content);
123
+ return;
124
+ }
125
+ const output = event.output;
126
+ if (output) {
127
+ ctx.feedAssistantText(output);
128
+ return;
129
+ }
130
+ const params = event.parameters;
131
+ if (params) {
132
+ ctx.feedAssistantText(JSON.stringify(params));
133
+ }
134
+ }
135
+ /**
136
+ * Process a single NDJSON event from the Gemini CLI stream-json output.
137
+ *
138
+ * Event types:
139
+ * - init — session metadata (session_id, model)
140
+ * - message — user/assistant messages (role, content, delta?)
141
+ * - tool_use — tool invocation (tool_name, tool_id, parameters)
142
+ * - tool_result — tool output (tool_id, status, output?, error?)
143
+ * - error — non-fatal errors (severity, message)
144
+ * - result — final outcome with stats
145
+ */
146
+ function processEvent(event, ctx) {
147
+ const eventType = event.type;
148
+ if (eventType === "init") {
149
+ const id = event.session_id;
150
+ if (id)
151
+ ctx.state.sessionId = id;
152
+ return;
153
+ }
154
+ if (eventType === "result") {
155
+ const stats = event.stats;
156
+ if (stats) {
157
+ ctx.state.tokenUsage = {
158
+ input: stats.input_tokens ?? 0,
159
+ output: stats.output_tokens ?? 0,
160
+ };
161
+ }
162
+ if (event.status === "error") {
163
+ const errObj = event.error;
164
+ const errMsg = errObj?.message ?? "Unknown error";
165
+ ctx.state.resultError = errMsg;
166
+ ctx.transcript.push({
167
+ type: "error",
168
+ timestamp: event.timestamp ?? new Date().toISOString(),
169
+ content: event,
170
+ });
171
+ }
172
+ return;
173
+ }
174
+ if (eventType === "error") {
175
+ ctx.transcript.push({
176
+ type: "error",
177
+ timestamp: event.timestamp ?? new Date().toISOString(),
178
+ content: event,
179
+ });
180
+ return;
181
+ }
182
+ if (eventType === "message") {
183
+ const role = event.role;
184
+ const content = event.content;
185
+ if (role === "assistant" && content) {
186
+ ctx.state.lastAssistantMessage = content;
187
+ ctx.feedAssistantText(content);
188
+ ctx.transcript.push({
189
+ type: "assistant",
190
+ timestamp: event.timestamp ?? new Date().toISOString(),
191
+ content: event,
192
+ });
193
+ }
194
+ else if (role === "user") {
195
+ feedEventText(event, ctx);
196
+ ctx.transcript.push({
197
+ type: "tool_result",
198
+ timestamp: event.timestamp ?? new Date().toISOString(),
199
+ content: event,
200
+ });
201
+ }
202
+ return;
203
+ }
204
+ if (eventType === "tool_use") {
205
+ feedEventText(event, ctx);
206
+ ctx.transcript.push({
207
+ type: "tool_use",
208
+ timestamp: event.timestamp ?? new Date().toISOString(),
209
+ content: event,
210
+ });
211
+ return;
212
+ }
213
+ if (eventType === "tool_result") {
214
+ feedEventText(event, ctx);
215
+ ctx.transcript.push({
216
+ type: "tool_result",
217
+ timestamp: event.timestamp ?? new Date().toISOString(),
218
+ content: event,
219
+ });
220
+ }
221
+ }
222
+ //# sourceMappingURL=gemini.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/adapters/gemini.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { AgentAdapter } from "../types/agent.js";
2
+ export declare function createGooseAdapter(): AgentAdapter;
3
+ //# sourceMappingURL=goose.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"goose.d.ts","sourceRoot":"","sources":["../../src/adapters/goose.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGtD,wBAAgB,kBAAkB,IAAI,YAAY,CAMjD"}
@@ -0,0 +1,9 @@
1
+ import { createAcpBasedAdapter } from "./base/acp-adapter.js";
2
+ export function createGooseAdapter() {
3
+ return createAcpBasedAdapter({
4
+ name: "goose",
5
+ cliCommand: "goose",
6
+ buildArgs: () => ["acp"],
7
+ });
8
+ }
9
+ //# sourceMappingURL=goose.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"goose.js","sourceRoot":"","sources":["../../src/adapters/goose.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,MAAM,UAAU,kBAAkB;IAChC,OAAO,qBAAqB,CAAC;QAC3B,IAAI,EAAE,OAAO;QACb,UAAU,EAAE,OAAO;QACnB,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC;KACzB,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { AgentAdapter } from "../types/agent.js";
2
+ export declare function getAdapter(adapterName: string): AgentAdapter;
3
+ /** Register a custom adapter by name. */
4
+ export declare function registerAdapter(name: string, adapter: AgentAdapter): void;
5
+ /** Reset the instance cache. For testing only. */
6
+ export declare function _resetAdapterCache(): void;
7
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/adapters/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAmBtD,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,YAAY,CAe5D;AAED,yCAAyC;AACzC,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI,CAEzE;AAED,kDAAkD;AAClD,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC"}
@@ -0,0 +1,37 @@
1
+ import { createClaudeSdkAdapter } from "./claude-sdk.js";
2
+ import { createClaudeCodeAdapter } from "./claude-code.js";
3
+ import { createCodexAdapter } from "./codex.js";
4
+ import { createGeminiAdapter } from "./gemini.js";
5
+ import { createGeminiAcpAdapter } from "./gemini-acp.js";
6
+ import { createGooseAdapter } from "./goose.js";
7
+ const BUILTIN_FACTORIES = {
8
+ "claude-sdk": createClaudeSdkAdapter,
9
+ "claude-code": createClaudeCodeAdapter,
10
+ codex: createCodexAdapter,
11
+ gemini: createGeminiAdapter,
12
+ "gemini-acp": createGeminiAcpAdapter,
13
+ goose: createGooseAdapter,
14
+ };
15
+ const instanceCache = new Map();
16
+ export function getAdapter(adapterName) {
17
+ const cached = instanceCache.get(adapterName);
18
+ if (cached)
19
+ return cached;
20
+ const factory = BUILTIN_FACTORIES[adapterName];
21
+ if (!factory) {
22
+ throw new Error(`Unknown adapter: "${adapterName}". Built-in: claude-sdk, claude-code, codex, gemini, gemini-acp, goose. ` +
23
+ `Register custom adapters via the "adapters" config field or registerAdapter().`);
24
+ }
25
+ const instance = factory();
26
+ instanceCache.set(adapterName, instance);
27
+ return instance;
28
+ }
29
+ /** Register a custom adapter by name. */
30
+ export function registerAdapter(name, adapter) {
31
+ instanceCache.set(name, adapter);
32
+ }
33
+ /** Reset the instance cache. For testing only. */
34
+ export function _resetAdapterCache() {
35
+ instanceCache.clear();
36
+ }
37
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/adapters/registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,iBAAiB,GAAuC;IAC5D,YAAY,EAAE,sBAAsB;IACpC,aAAa,EAAE,uBAAuB;IACtC,KAAK,EAAE,kBAAkB;IACzB,MAAM,EAAE,mBAAmB;IAC3B,YAAY,EAAE,sBAAsB;IACpC,KAAK,EAAE,kBAAkB;CAC1B,CAAC;AAEF,MAAM,aAAa,GAAG,IAAI,GAAG,EAAwB,CAAC;AAEtD,MAAM,UAAU,UAAU,CAAC,WAAmB;IAC5C,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC9C,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,MAAM,OAAO,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAC/C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,qBAAqB,WAAW,0EAA0E;YACxG,gFAAgF,CACnF,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,EAAE,CAAC;IAC3B,aAAa,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IACzC,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,yCAAyC;AACzC,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,OAAqB;IACjE,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACnC,CAAC;AAED,kDAAkD;AAClD,MAAM,UAAU,kBAAkB;IAChC,aAAa,CAAC,KAAK,EAAE,CAAC;AACxB,CAAC"}
@@ -0,0 +1,23 @@
1
+ import type { McpServerConfig } from "../../types/config.js";
2
+ /**
3
+ * Write .mcp.json for Claude Code (project-scoped, placed in workspace root).
4
+ * Claude Code auto-discovers this file when it starts in the workspace directory.
5
+ */
6
+ export declare function writeClaudeMcpConfig(workspace: string, servers: Record<string, McpServerConfig>): void;
7
+ /**
8
+ * Write config.toml for Codex (placed in CODEX_HOME).
9
+ * Hand-generates TOML to avoid a library dependency.
10
+ */
11
+ export declare function writeCodexMcpConfig(codexHome: string, servers: Record<string, McpServerConfig>): void;
12
+ /**
13
+ * Write settings.json for Gemini CLI (placed in GEMINI_CLI_HOME).
14
+ * Gemini auto-discovers this file from its home directory.
15
+ *
16
+ * Always writes context discovery settings to prevent Gemini from
17
+ * scanning the workspace directory tree on startup — AXIS workspaces
18
+ * are ephemeral temp dirs with no meaningful project structure.
19
+ *
20
+ * MCP servers are merged in when provided.
21
+ */
22
+ export declare function writeGeminiSettings(geminiHome: string, servers?: Record<string, McpServerConfig>): void;
23
+ //# sourceMappingURL=mcp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../../src/adapters/utils/mcp.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,IAAI,CAiBtG;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,IAAI,CAkCrG;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,IAAI,CA8BvG"}