@agentuity/coder-tui 3.0.0-alpha.7 → 3.0.0-beta.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.
@@ -0,0 +1,4 @@
1
+ import type { ExtensionAPI } from '@mariozechner/pi-coding-agent';
2
+ export type KnownApi = 'openai-completions' | 'mistral-conversations' | 'openai-responses' | 'azure-openai-responses' | 'openai-codex-responses' | 'anthropic-messages' | 'bedrock-converse-stream' | 'google-generative-ai' | 'google-gemini-cli' | 'google-vertex';
3
+ export declare function setupAIGateway(pi: ExtensionAPI): Promise<void>;
4
+ //# sourceMappingURL=aigateway.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aigateway.d.ts","sourceRoot":"","sources":["../src/aigateway.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,YAAY,EAAuB,MAAM,+BAA+B,CAAC;AAEvF,MAAM,MAAM,QAAQ,GACjB,oBAAoB,GACpB,uBAAuB,GACvB,kBAAkB,GAClB,wBAAwB,GACxB,wBAAwB,GACxB,oBAAoB,GACpB,yBAAyB,GACzB,sBAAsB,GACtB,mBAAmB,GACnB,eAAe,CAAC;AA2LnB,wBAAsB,cAAc,CAAC,EAAE,EAAE,YAAY,iBA4CpD"}
@@ -0,0 +1,178 @@
1
+ /**
2
+ * Agentuity AI Gateway Custom Provider Extension
3
+ *
4
+ * Registers models from the Agentuity AI Gateway using the appropriate API type
5
+ * based on model ID patterns. Models are loaded dynamically from the gateway's /models endpoint.
6
+ *
7
+ * Usage:
8
+ * Use /model to switch to aigateway models
9
+ */
10
+ import { delimiter, join } from 'node:path';
11
+ import { existsSync } from 'node:fs';
12
+ import { execFileSync } from 'node:child_process';
13
+ const MODEL_CATALOG_TIMEOUT_MS = 5_000;
14
+ const KNOWN_APIS = new Set([
15
+ 'openai-completions',
16
+ 'mistral-conversations',
17
+ 'openai-responses',
18
+ 'azure-openai-responses',
19
+ 'openai-codex-responses',
20
+ 'anthropic-messages',
21
+ 'bedrock-converse-stream',
22
+ 'google-generative-ai',
23
+ 'google-gemini-cli',
24
+ 'google-vertex',
25
+ ]);
26
+ function getEnv(...keys) {
27
+ for (const key of keys) {
28
+ if (process.env[key]) {
29
+ return process.env[key];
30
+ }
31
+ }
32
+ }
33
+ function normalizeCredential(value) {
34
+ if (value === undefined || value === null) {
35
+ return undefined;
36
+ }
37
+ const normalized = String(value).trim();
38
+ return normalized.length > 0 ? normalized : undefined;
39
+ }
40
+ function isKnownApi(api) {
41
+ return typeof api === 'string' && KNOWN_APIS.has(api);
42
+ }
43
+ function getRegion() {
44
+ return getEnv('AGENTUITY_REGION') ?? 'usc';
45
+ }
46
+ function getBaseUrl() {
47
+ const region = getRegion();
48
+ return `https://aigateway-${region}.agentuity.cloud`;
49
+ }
50
+ async function fetchModels() {
51
+ const baseUrl = getBaseUrl();
52
+ let apiKey = normalizeCredential(getEnv('AGENTUITY_CODER_API_KEY', 'AGENTUITY_SDK_KEY', 'AGENTUITY_CLI_API_KEY', 'AGENTUITY_CLI_KEY'));
53
+ let orgId = normalizeCredential(getEnv('AGENTUITY_ORGID', 'AGENTUITY_CLOUD_ORG_ID', 'AGENTUITY_ORG_ID'));
54
+ if (!apiKey) {
55
+ let found = false;
56
+ const path = process.env.PATH?.split(delimiter) ?? [];
57
+ for (const dir of path) {
58
+ const fn = join(dir, 'agentuity');
59
+ if (existsSync(fn)) {
60
+ try {
61
+ const res = execFileSync(fn, ['auth', 'apikey', '--json']);
62
+ const apiKeyResult = JSON.parse(res.toString());
63
+ apiKey = normalizeCredential(apiKeyResult.apiKey);
64
+ found = true;
65
+ if (!orgId) {
66
+ const ores = execFileSync(fn, ['auth', 'org', 'current']);
67
+ orgId = normalizeCredential(ores);
68
+ if (!orgId) {
69
+ console.warn('Cannot determine the org id. Use `agentuity auth org select` to select a default organization');
70
+ return {};
71
+ }
72
+ }
73
+ break;
74
+ }
75
+ catch (_ex) {
76
+ //
77
+ }
78
+ }
79
+ }
80
+ if (!found) {
81
+ console.warn('AGENTUITY_SDK_KEY, AGENTUITY_CLI_API_KEY or AGENTUITY_CLI_KEY not set and cannot find the agentuit cli, cannot fetch models from AI Gateway');
82
+ return {};
83
+ }
84
+ }
85
+ if (!apiKey) {
86
+ console.warn('Cannot determine the API key, cannot fetch models from AI Gateway');
87
+ return {};
88
+ }
89
+ process.env.AGENTUITY_AIGATEWAY_KEY = apiKey;
90
+ if (orgId) {
91
+ process.env.AGENTUITY_AIGATEWAY_ORGID = orgId;
92
+ }
93
+ const controller = new AbortController();
94
+ const timeout = setTimeout(() => controller.abort(), MODEL_CATALOG_TIMEOUT_MS);
95
+ try {
96
+ const response = await fetch(`${baseUrl}/models`, { signal: controller.signal });
97
+ if (!response.ok) {
98
+ console.warn(`Failed to fetch models from AI Gateway: ${response.status} ${response.statusText}`);
99
+ return {};
100
+ }
101
+ const payload = (await response.json());
102
+ if (!payload.success) {
103
+ console.warn(`Failed to load models. ${payload.message} ${payload}`);
104
+ }
105
+ return payload.data;
106
+ }
107
+ catch (error) {
108
+ if (error instanceof Error && error.name === 'AbortError') {
109
+ console.warn(`Timed out fetching models from AI Gateway after ${MODEL_CATALOG_TIMEOUT_MS}ms`);
110
+ return {};
111
+ }
112
+ console.warn('Failed to fetch models from AI Gateway:', error);
113
+ return {};
114
+ }
115
+ finally {
116
+ clearTimeout(timeout);
117
+ }
118
+ }
119
+ function toPiModel(m) {
120
+ return {
121
+ id: m.id,
122
+ name: m.name,
123
+ reasoning: m.reasoning,
124
+ input: m.input_modalities,
125
+ contextWindow: m.context_window ?? 40000,
126
+ maxTokens: m.max_output_tokens ?? 64000,
127
+ cost: {
128
+ input: m.pricing?.input ?? 0,
129
+ output: m.pricing?.output ?? 0,
130
+ cacheRead: m.pricing?.cached_input ?? 0,
131
+ cacheWrite: 0,
132
+ },
133
+ compat: {
134
+ supportsDeveloperRole: false,
135
+ },
136
+ };
137
+ }
138
+ export async function setupAIGateway(pi) {
139
+ const models = await fetchModels();
140
+ const baseUrl = getBaseUrl();
141
+ const allModels = [];
142
+ for (const providerModels of Object.values(models)) {
143
+ if (providerModels) {
144
+ allModels.push(...providerModels);
145
+ }
146
+ }
147
+ if (allModels.length === 0) {
148
+ return;
149
+ }
150
+ const modelsByApi = new Map();
151
+ for (const m of allModels) {
152
+ const apiType = m.api;
153
+ if (!isKnownApi(apiType)) {
154
+ continue; // THIS SHOULD NEVER HAPPEN BUT JUST IN CASE
155
+ }
156
+ const existing = modelsByApi.get(apiType) ?? [];
157
+ existing.push(toPiModel(m));
158
+ modelsByApi.set(apiType, existing);
159
+ }
160
+ const headers = {};
161
+ if (process.env.AGENTUITY_AIGATEWAY_ORGID) {
162
+ headers['x-agentuity-orgid'] = process.env.AGENTUITY_AIGATEWAY_ORGID;
163
+ }
164
+ for (const [apiType, providerModels] of modelsByApi) {
165
+ const apitok = apiType.split('-');
166
+ const name = apitok.length >= 2 ? apitok.slice(0, 2).join('-') : apitok[0];
167
+ const providerName = `agentuity/${name}`;
168
+ pi.registerProvider(providerName, {
169
+ baseUrl,
170
+ apiKey: 'AGENTUITY_AIGATEWAY_KEY',
171
+ headers,
172
+ authHeader: true,
173
+ api: apiType,
174
+ models: providerModels,
175
+ });
176
+ }
177
+ }
178
+ //# sourceMappingURL=aigateway.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aigateway.js","sourceRoot":"","sources":["../src/aigateway.ts"],"names":[],"mappings":"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"}
package/dist/footer.d.ts CHANGED
@@ -10,7 +10,7 @@
10
10
  * Observer awareness (ASCII only):
11
11
  * [3] SwiftRaven — 3 observers watching, session label "SwiftRaven"
12
12
  */
13
- import type { ExtensionContext } from '@mariozechner/pi-coding-agent';
13
+ import type { ExtensionAPI, ExtensionContext } from '@mariozechner/pi-coding-agent';
14
14
  type HubStatus = 'connected' | 'reconnecting' | 'offline';
15
15
  /** Observer state provided by the extension's presence tracking. */
16
16
  export interface ObserverState {
@@ -25,10 +25,11 @@ export interface ObserverState {
25
25
  *
26
26
  * Includes a braille spinner animation when an agent is actively working.
27
27
  *
28
+ * @param pi Extension API
28
29
  * @param ctx Extension context with UI access
29
30
  * @param getHubStatus Callback that returns current Hub connection status
30
31
  * @param getObserverState Optional callback that returns observer count + session label
31
32
  */
32
- export declare function setupCoderFooter(ctx: ExtensionContext, getHubStatus: () => HubStatus, getObserverState?: () => ObserverState): void;
33
+ export declare function setupCoderFooter(pi: ExtensionAPI, ctx: ExtensionContext, getHubStatus: () => HubStatus, getObserverState?: () => ObserverState): void;
33
34
  export {};
34
35
  //# sourceMappingURL=footer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"footer.d.ts","sourceRoot":"","sources":["../src/footer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAA8B,MAAM,+BAA+B,CAAC;AA4BlG,KAAK,SAAS,GAAG,WAAW,GAAG,cAAc,GAAG,SAAS,CAAC;AAE1D,oEAAoE;AACpE,MAAM,WAAW,aAAa;IAC7B,8EAA8E;IAC9E,KAAK,EAAE,MAAM,CAAC;IACd,wDAAwD;IACxD,KAAK,EAAE,MAAM,CAAC;CACd;AAoID;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAC/B,GAAG,EAAE,gBAAgB,EACrB,YAAY,EAAE,MAAM,SAAS,EAC7B,gBAAgB,CAAC,EAAE,MAAM,aAAa,GACpC,IAAI,CA6GN"}
1
+ {"version":3,"file":"footer.d.ts","sourceRoot":"","sources":["../src/footer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EACX,YAAY,EACZ,gBAAgB,EAEhB,MAAM,+BAA+B,CAAC;AA4BvC,KAAK,SAAS,GAAG,WAAW,GAAG,cAAc,GAAG,SAAS,CAAC;AAE1D,oEAAoE;AACpE,MAAM,WAAW,aAAa;IAC7B,8EAA8E;IAC9E,KAAK,EAAE,MAAM,CAAC;IACd,wDAAwD;IACxD,KAAK,EAAE,MAAM,CAAC;CACd;AAoID;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAC/B,EAAE,EAAE,YAAY,EAChB,GAAG,EAAE,gBAAgB,EACrB,YAAY,EAAE,MAAM,SAAS,EAC7B,gBAAgB,CAAC,EAAE,MAAM,aAAa,GACpC,IAAI,CAsJN"}
package/dist/footer.js CHANGED
@@ -144,36 +144,70 @@ function formatCost(n) {
144
144
  *
145
145
  * Includes a braille spinner animation when an agent is actively working.
146
146
  *
147
+ * @param pi Extension API
147
148
  * @param ctx Extension context with UI access
148
149
  * @param getHubStatus Callback that returns current Hub connection status
149
150
  * @param getObserverState Optional callback that returns observer count + session label
150
151
  */
151
- export function setupCoderFooter(ctx, getHubStatus, getObserverState) {
152
+ export function setupCoderFooter(pi, ctx, getHubStatus, getObserverState) {
152
153
  if (!ctx.hasUI)
153
154
  return;
155
+ ctx.ui.setWorkingIndicator({ frames: [] }); // turn off the working indicator since we use our own spinner
156
+ let pendingRequests = 0;
157
+ let spinnerTimer = null;
158
+ let spinnerFrame = 0;
159
+ let activeAgentRunning = false;
160
+ let requestFooterRender;
161
+ const startSpinner = () => {
162
+ if (spinnerTimer)
163
+ return;
164
+ spinnerTimer = setInterval(() => {
165
+ spinnerFrame = (spinnerFrame + 1) % SPINNER_FRAMES.length;
166
+ requestFooterRender?.();
167
+ }, 80);
168
+ };
169
+ const stopSpinner = () => {
170
+ if (!spinnerTimer)
171
+ return;
172
+ clearInterval(spinnerTimer);
173
+ spinnerTimer = null;
174
+ spinnerFrame = 0;
175
+ };
176
+ const syncSpinner = () => {
177
+ if (pendingRequests > 0 || activeAgentRunning) {
178
+ startSpinner();
179
+ }
180
+ else {
181
+ stopSpinner();
182
+ }
183
+ };
184
+ pi.on('before_provider_request', () => {
185
+ pendingRequests += 1;
186
+ if (pendingRequests === 1) {
187
+ startSpinner();
188
+ }
189
+ });
190
+ pi.on('after_provider_response', () => {
191
+ pendingRequests = Math.max(0, pendingRequests - 1);
192
+ syncSpinner();
193
+ });
194
+ pi.on('session_shutdown', () => {
195
+ pendingRequests = 0;
196
+ activeAgentRunning = false;
197
+ stopSpinner();
198
+ });
154
199
  ctx.ui.setFooter((tui, _theme, footerData) => {
155
- // Spinner state
156
- let spinnerTimer = null;
157
- let spinnerFrame = 0;
200
+ requestFooterRender = () => tui.requestRender();
158
201
  const getText = (width) => {
159
202
  // Detect active agent
160
203
  const activeAgent = footerData.getExtensionStatuses().get('active_agent');
161
- // Start/stop spinner based on agent activity
162
- if (activeAgent && !spinnerTimer) {
163
- spinnerTimer = setInterval(() => {
164
- spinnerFrame = (spinnerFrame + 1) % SPINNER_FRAMES.length;
165
- tui.requestRender();
166
- }, 80);
167
- }
168
- else if (!activeAgent && spinnerTimer) {
169
- clearInterval(spinnerTimer);
170
- spinnerTimer = null;
171
- spinnerFrame = 0;
172
- }
204
+ activeAgentRunning = !!activeAgent;
205
+ syncSpinner();
173
206
  // Token stats from session messages
174
207
  let inputTokens = 0;
175
208
  let outputTokens = 0;
176
209
  let totalCost = 0;
210
+ // TODO (jhaynie): we need to think about how to handle our AI Gateway costs vs whats coming from pi
177
211
  for (const entry of ctx.sessionManager.getBranch()) {
178
212
  if (entry.type === 'message') {
179
213
  const msg = entry.message;
@@ -1 +1 @@
1
- {"version":3,"file":"footer.js","sourceRoot":"","sources":["../src/footer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"footer.js","sourceRoot":"","sources":["../src/footer.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAGN,YAAY,EAIZ,MAAM,+BAA+B,CAAC;AAiRvC,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,YAAY,QAs0CjD;AAwVD,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAGN,YAAY,EAIZ,MAAM,+BAA+B,CAAC;AAmRvC,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,YAAY,QA+0CjD;AAwVD,eAAe,iBAAiB,CAAC"}
package/dist/index.js CHANGED
@@ -7,13 +7,14 @@ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExte
7
7
  return path;
8
8
  };
9
9
  import { createBashToolDefinition, } from '@mariozechner/pi-coding-agent';
10
- import { Type } from 'typebox';
10
+ import { Type } from '@sinclair/typebox';
11
11
  import { createRequire } from 'node:module';
12
12
  import { HubClient } from "./client.js";
13
13
  import { processActions } from "./handlers.js";
14
14
  import { getToolRenderers } from "./renderers.js";
15
15
  import { setupCoderFooter } from "./footer.js";
16
16
  import { setupTitlebar } from "./titlebar.js";
17
+ import { setupStartupLogo } from "./startup-logo.js";
17
18
  import { registerAgentCommands } from "./commands.js";
18
19
  import { AgentManagerOverlay } from "./overlay.js";
19
20
  import { ChainEditorOverlay } from "./chain-preview.js";
@@ -24,6 +25,7 @@ import { handleRemoteUiRequest } from "./remote-ui-handler.js";
24
25
  import { buildInboundRpcPromptText, getInboundRpcDeliverAs } from "./inbound-rpc.js";
25
26
  import { applyCoderAuthHeaders, getCoderAuthCurlArgs } from "./auth.js";
26
27
  import { formatToolDisplay } from "./agentuity-cli.js";
28
+ import { setupAIGateway } from "./aigateway.js";
27
29
  import { adaptInitMessageForLocalTui } from "./local-init-filter.js";
28
30
  import { selectSubAgentToolNames } from "./subagent-tool-selection.js";
29
31
  import { setupRemoteMode, } from "./remote-session.js";
@@ -223,6 +225,12 @@ async function fetchInitMessage(hubUrl, agentRole) {
223
225
  }
224
226
  }
225
227
  export function agentuityCoderHub(pi) {
228
+ process.env.AGENTUITY_AGENT_MODE = 'coder'; // let the agentuity cli know we're inside coder
229
+ // Register the startup header before Hub bootstrap so `pi -e .` works for
230
+ // local visual testing without Agentuity Coder environment variables.
231
+ setupStartupLogo(pi);
232
+ // Register the AI Gateway
233
+ setupAIGateway(pi);
226
234
  const hubUrl = process.env[HUB_URL_ENV];
227
235
  if (!hubUrl)
228
236
  return;
@@ -1220,7 +1228,7 @@ export function agentuityCoderHub(pi) {
1220
1228
  ctx.ui.setStatus('hub_connection', getHubUiStatus());
1221
1229
  }
1222
1230
  // Set up Coder footer (powerline: model or active agent > branch > status + observer count)
1223
- setupCoderFooter(ctx, getHubUiStatus, getObserverState);
1231
+ setupCoderFooter(pi, ctx, getHubUiStatus, getObserverState);
1224
1232
  // Fire-and-forget: fetch session snapshot for label + initial observer count.
1225
1233
  // Uses the Hub REST endpoint — non-blocking, best-effort.
1226
1234
  if (!isSubAgent) {