@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.
- package/dist/aigateway.d.ts +4 -0
- package/dist/aigateway.d.ts.map +1 -0
- package/dist/aigateway.js +178 -0
- package/dist/aigateway.js.map +1 -0
- package/dist/footer.d.ts +3 -2
- package/dist/footer.d.ts.map +1 -1
- package/dist/footer.js +50 -16
- package/dist/footer.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -2
- package/dist/index.js.map +1 -1
- package/dist/startup-logo.d.ts +3 -0
- package/dist/startup-logo.d.ts.map +1 -0
- package/dist/startup-logo.js +212 -0
- package/dist/startup-logo.js.map +1 -0
- package/package.json +5 -5
- package/src/aigateway.ts +256 -0
- package/src/footer.ts +62 -15
- package/src/index.ts +13 -2
- package/src/startup-logo.ts +255 -0
|
@@ -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":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAelD,MAAM,wBAAwB,GAAG,KAAK,CAAC;AAEvC,MAAM,UAAU,GAAG,IAAI,GAAG,CAAS;IAClC,oBAAoB;IACpB,uBAAuB;IACvB,kBAAkB;IAClB,wBAAwB;IACxB,wBAAwB;IACxB,oBAAoB;IACpB,yBAAyB;IACzB,sBAAsB;IACtB,mBAAmB;IACnB,eAAe;CACM,CAAC,CAAC;AA8BxB,SAAS,MAAM,CAAC,GAAG,IAAc;IAChC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACtB,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;IACF,CAAC;AACF,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAc;IAC1C,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC3C,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;IACxC,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;AACvD,CAAC;AAED,SAAS,UAAU,CAAC,GAAY;IAC/B,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,SAAS;IACjB,OAAO,MAAM,CAAC,kBAAkB,CAAC,IAAI,KAAK,CAAC;AAC5C,CAAC;AAED,SAAS,UAAU;IAClB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,OAAO,qBAAqB,MAAM,kBAAkB,CAAC;AACtD,CAAC;AAED,KAAK,UAAU,WAAW;IACzB,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,IAAI,MAAM,GAAG,mBAAmB,CAC/B,MAAM,CACL,yBAAyB,EACzB,mBAAmB,EACnB,uBAAuB,EACvB,mBAAmB,CACnB,CACD,CAAC;IACF,IAAI,KAAK,GAAG,mBAAmB,CAC9B,MAAM,CAAC,iBAAiB,EAAE,wBAAwB,EAAE,kBAAkB,CAAC,CACvE,CAAC;IAEF,IAAI,CAAC,MAAM,EAAE,CAAC;QACb,IAAI,KAAK,GAAG,KAAK,CAAC;QAClB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACtD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACxB,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;YAClC,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC;gBACpB,IAAI,CAAC;oBACJ,MAAM,GAAG,GAAG,YAAY,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;oBAC3D,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAuB,CAAC;oBACtE,MAAM,GAAG,mBAAmB,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;oBAClD,KAAK,GAAG,IAAI,CAAC;oBACb,IAAI,CAAC,KAAK,EAAE,CAAC;wBACZ,MAAM,IAAI,GAAG,YAAY,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;wBAC1D,KAAK,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;wBAClC,IAAI,CAAC,KAAK,EAAE,CAAC;4BACZ,OAAO,CAAC,IAAI,CACX,+FAA+F,CAC/F,CAAC;4BACF,OAAO,EAAE,CAAC;wBACX,CAAC;oBACF,CAAC;oBACD,MAAM;gBACP,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACd,EAAE;gBACH,CAAC;YACF,CAAC;QACF,CAAC;QACD,IAAI,CAAC,KAAK,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CACX,6IAA6I,CAC7I,CAAC;YACF,OAAO,EAAE,CAAC;QACX,CAAC;IACF,CAAC;IAED,IAAI,CAAC,MAAM,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,mEAAmE,CAAC,CAAC;QAClF,OAAO,EAAE,CAAC;IACX,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,uBAAuB,GAAG,MAAM,CAAC;IAC7C,IAAI,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,yBAAyB,GAAG,KAAK,CAAC;IAC/C,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,wBAAwB,CAAC,CAAC;IAE/E,IAAI,CAAC;QACJ,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,SAAS,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QAEjF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CACX,2CAA2C,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CACnF,CAAC;YACF,OAAO,EAAE,CAAC;QACX,CAAC;QAED,MAAM,OAAO,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAA2B,CAAC;QAElE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACtB,OAAO,CAAC,IAAI,CAAC,0BAA0B,OAAO,CAAC,OAAO,IAAI,OAAO,EAAE,CAAC,CAAC;QACtE,CAAC;QAED,OAAO,OAAO,CAAC,IAAI,CAAC;IACrB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAC3D,OAAO,CAAC,IAAI,CACX,mDAAmD,wBAAwB,IAAI,CAC/E,CAAC;YACF,OAAO,EAAE,CAAC;QACX,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,yCAAyC,EAAE,KAAK,CAAC,CAAC;QAC/D,OAAO,EAAE,CAAC;IACX,CAAC;YAAS,CAAC;QACV,YAAY,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;AACF,CAAC;AAED,SAAS,SAAS,CAAC,CAAiB;IACnC,OAAO;QACN,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,KAAK,EAAE,CAAC,CAAC,gBAAwC;QACjD,aAAa,EAAE,CAAC,CAAC,cAAc,IAAI,KAAK;QACxC,SAAS,EAAE,CAAC,CAAC,iBAAiB,IAAI,KAAK;QACvC,IAAI,EAAE;YACL,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC;YAC5B,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;YAC9B,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,YAAY,IAAI,CAAC;YACvC,UAAU,EAAE,CAAC;SACb;QACD,MAAM,EAAE;YACP,qBAAqB,EAAE,KAAK;SAC5B;KACD,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,EAAgB;IACpD,MAAM,MAAM,GAAG,MAAM,WAAW,EAAE,CAAC;IACnC,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAE7B,MAAM,SAAS,GAAqB,EAAE,CAAC;IACvC,KAAK,MAAM,cAAc,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QACpD,IAAI,cAAc,EAAE,CAAC;YACpB,SAAS,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC;QACnC,CAAC;IACF,CAAC;IACD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO;IACR,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,GAAG,EAAmC,CAAC;IAE/D,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC;QACtB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1B,SAAS,CAAC,4CAA4C;QACvD,CAAC;QACD,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAChD,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5B,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACpC,CAAC;IAED,MAAM,OAAO,GAA2B,EAAE,CAAC;IAC3C,IAAI,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,CAAC;QAC3C,OAAO,CAAC,mBAAmB,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC;IACtE,CAAC;IAED,KAAK,MAAM,CAAC,OAAO,EAAE,cAAc,CAAC,IAAI,WAAW,EAAE,CAAC;QACrD,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC3E,MAAM,YAAY,GAAG,aAAa,IAAI,EAAE,CAAC;QACzC,EAAE,CAAC,gBAAgB,CAAC,YAAY,EAAE;YACjC,OAAO;YACP,MAAM,EAAE,yBAAyB;YACjC,OAAO;YACP,UAAU,EAAE,IAAI;YAChB,GAAG,EAAE,OAAO;YACZ,MAAM,EAAE,cAAc;SACtB,CAAC,CAAC;IACJ,CAAC;AACF,CAAC"}
|
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
|
package/dist/footer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"footer.d.ts","sourceRoot":"","sources":["../src/footer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,
|
|
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
|
-
|
|
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
|
-
|
|
162
|
-
|
|
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;
|
package/dist/footer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"footer.js","sourceRoot":"","sources":["../src/footer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;
|
|
1
|
+
{"version":3,"file":"footer.js","sourceRoot":"","sources":["../src/footer.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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;
|
|
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) {
|