@agentuity/cli 2.0.6 → 2.0.8
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/README.md +11 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +4 -2
- package/dist/cli.js.map +1 -1
- package/dist/cmd/build/vite/route-discovery.d.ts.map +1 -1
- package/dist/cmd/build/vite/route-discovery.js +6 -0
- package/dist/cmd/build/vite/route-discovery.js.map +1 -1
- package/dist/cmd/cloud/sandbox/fs/rm.d.ts.map +1 -1
- package/dist/cmd/cloud/sandbox/fs/rm.js +9 -3
- package/dist/cmd/cloud/sandbox/fs/rm.js.map +1 -1
- package/dist/cmd/cloud/sandbox/fs/rmdir.d.ts.map +1 -1
- package/dist/cmd/cloud/sandbox/fs/rmdir.js +9 -3
- package/dist/cmd/cloud/sandbox/fs/rmdir.js.map +1 -1
- package/dist/cmd/cloud/task/close.d.ts +3 -0
- package/dist/cmd/cloud/task/close.d.ts.map +1 -0
- package/dist/cmd/cloud/task/close.js +286 -0
- package/dist/cmd/cloud/task/close.js.map +1 -0
- package/dist/cmd/cloud/task/delete.d.ts +1 -5
- package/dist/cmd/cloud/task/delete.d.ts.map +1 -1
- package/dist/cmd/cloud/task/delete.js +15 -38
- package/dist/cmd/cloud/task/delete.js.map +1 -1
- package/dist/cmd/cloud/task/index.d.ts.map +1 -1
- package/dist/cmd/cloud/task/index.js +10 -0
- package/dist/cmd/cloud/task/index.js.map +1 -1
- package/dist/cmd/cloud/task/list.d.ts.map +1 -1
- package/dist/cmd/cloud/task/list.js +97 -3
- package/dist/cmd/cloud/task/list.js.map +1 -1
- package/dist/cmd/cloud/task/util.d.ts +10 -0
- package/dist/cmd/cloud/task/util.d.ts.map +1 -1
- package/dist/cmd/cloud/task/util.js +47 -3
- package/dist/cmd/cloud/task/util.js.map +1 -1
- package/dist/cmd/coder/archive.d.ts +2 -0
- package/dist/cmd/coder/archive.d.ts.map +1 -0
- package/dist/cmd/coder/archive.js +57 -0
- package/dist/cmd/coder/archive.js.map +1 -0
- package/dist/cmd/coder/create.d.ts +2 -0
- package/dist/cmd/coder/create.d.ts.map +1 -0
- package/dist/cmd/coder/create.js +245 -0
- package/dist/cmd/coder/create.js.map +1 -0
- package/dist/cmd/coder/delete.d.ts +2 -0
- package/dist/cmd/coder/delete.d.ts.map +1 -0
- package/dist/cmd/coder/delete.js +64 -0
- package/dist/cmd/coder/delete.js.map +1 -0
- package/dist/cmd/coder/events.d.ts +2 -0
- package/dist/cmd/coder/events.d.ts.map +1 -0
- package/dist/cmd/coder/events.js +99 -0
- package/dist/cmd/coder/events.js.map +1 -0
- package/dist/cmd/coder/extension-path.d.ts +8 -0
- package/dist/cmd/coder/extension-path.d.ts.map +1 -0
- package/dist/cmd/coder/extension-path.js +59 -0
- package/dist/cmd/coder/extension-path.js.map +1 -0
- package/dist/cmd/coder/get.d.ts +2 -0
- package/dist/cmd/coder/get.d.ts.map +1 -0
- package/dist/cmd/coder/{inspect.js → get.js} +37 -33
- package/dist/cmd/coder/get.js.map +1 -0
- package/dist/cmd/coder/index.d.ts.map +1 -1
- package/dist/cmd/coder/index.js +54 -4
- package/dist/cmd/coder/index.js.map +1 -1
- package/dist/cmd/coder/list.d.ts.map +1 -1
- package/dist/cmd/coder/list.js +25 -34
- package/dist/cmd/coder/list.js.map +1 -1
- package/dist/cmd/coder/loop.d.ts +2 -0
- package/dist/cmd/coder/loop.d.ts.map +1 -0
- package/dist/cmd/coder/loop.js +78 -0
- package/dist/cmd/coder/loop.js.map +1 -0
- package/dist/cmd/coder/participants.d.ts +2 -0
- package/dist/cmd/coder/participants.d.ts.map +1 -0
- package/dist/cmd/coder/participants.js +93 -0
- package/dist/cmd/coder/participants.js.map +1 -0
- package/dist/cmd/coder/replay.d.ts +2 -0
- package/dist/cmd/coder/replay.d.ts.map +1 -0
- package/dist/cmd/coder/replay.js +53 -0
- package/dist/cmd/coder/replay.js.map +1 -0
- package/dist/cmd/coder/resolve-repo.d.ts +27 -0
- package/dist/cmd/coder/resolve-repo.d.ts.map +1 -0
- package/dist/cmd/coder/resolve-repo.js +97 -0
- package/dist/cmd/coder/resolve-repo.js.map +1 -0
- package/dist/cmd/coder/skill/buckets.d.ts +2 -0
- package/dist/cmd/coder/skill/buckets.d.ts.map +1 -0
- package/dist/cmd/coder/skill/buckets.js +174 -0
- package/dist/cmd/coder/skill/buckets.js.map +1 -0
- package/dist/cmd/coder/skill/delete.d.ts +2 -0
- package/dist/cmd/coder/skill/delete.d.ts.map +1 -0
- package/dist/cmd/coder/skill/delete.js +64 -0
- package/dist/cmd/coder/skill/delete.js.map +1 -0
- package/dist/cmd/coder/skill/index.d.ts +2 -0
- package/dist/cmd/coder/skill/index.d.ts.map +1 -0
- package/dist/cmd/coder/skill/index.js +33 -0
- package/dist/cmd/coder/skill/index.js.map +1 -0
- package/dist/cmd/coder/skill/list.d.ts +2 -0
- package/dist/cmd/coder/skill/list.d.ts.map +1 -0
- package/dist/cmd/coder/skill/list.js +93 -0
- package/dist/cmd/coder/skill/list.js.map +1 -0
- package/dist/cmd/coder/skill/save.d.ts +2 -0
- package/dist/cmd/coder/skill/save.d.ts.map +1 -0
- package/dist/cmd/coder/skill/save.js +77 -0
- package/dist/cmd/coder/skill/save.js.map +1 -0
- package/dist/cmd/coder/start.d.ts.map +1 -1
- package/dist/cmd/coder/start.js +88 -117
- package/dist/cmd/coder/start.js.map +1 -1
- package/dist/cmd/coder/tui-init.d.ts +4 -1
- package/dist/cmd/coder/tui-init.d.ts.map +1 -1
- package/dist/cmd/coder/tui-init.js +9 -3
- package/dist/cmd/coder/tui-init.js.map +1 -1
- package/dist/cmd/coder/update.d.ts +2 -0
- package/dist/cmd/coder/update.d.ts.map +1 -0
- package/dist/cmd/coder/update.js +126 -0
- package/dist/cmd/coder/update.js.map +1 -0
- package/dist/cmd/coder/users.d.ts +2 -0
- package/dist/cmd/coder/users.d.ts.map +1 -0
- package/dist/cmd/coder/users.js +97 -0
- package/dist/cmd/coder/users.js.map +1 -0
- package/dist/cmd/coder/workspace/create.d.ts +2 -0
- package/dist/cmd/coder/workspace/create.d.ts.map +1 -0
- package/dist/cmd/coder/workspace/create.js +97 -0
- package/dist/cmd/coder/workspace/create.js.map +1 -0
- package/dist/cmd/coder/workspace/delete.d.ts +2 -0
- package/dist/cmd/coder/workspace/delete.d.ts.map +1 -0
- package/dist/cmd/coder/workspace/delete.js +64 -0
- package/dist/cmd/coder/workspace/delete.js.map +1 -0
- package/dist/cmd/coder/workspace/get.d.ts +2 -0
- package/dist/cmd/coder/workspace/get.d.ts.map +1 -0
- package/dist/cmd/coder/workspace/get.js +109 -0
- package/dist/cmd/coder/workspace/get.js.map +1 -0
- package/dist/cmd/coder/workspace/index.d.ts +2 -0
- package/dist/cmd/coder/workspace/index.d.ts.map +1 -0
- package/dist/cmd/coder/workspace/index.js +38 -0
- package/dist/cmd/coder/workspace/index.js.map +1 -0
- package/dist/cmd/coder/workspace/list.d.ts +2 -0
- package/dist/cmd/coder/workspace/list.d.ts.map +1 -0
- package/dist/cmd/coder/workspace/list.js +93 -0
- package/dist/cmd/coder/workspace/list.js.map +1 -0
- package/dist/cmd/dev/sync.js +5 -5
- package/dist/cmd/dev/sync.js.map +1 -1
- package/dist/coder-hub-url.d.ts +3 -0
- package/dist/coder-hub-url.d.ts.map +1 -0
- package/dist/coder-hub-url.js +32 -0
- package/dist/coder-hub-url.js.map +1 -0
- package/dist/config.d.ts +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +14 -3
- package/dist/config.js.map +1 -1
- package/dist/internal-logger.d.ts +4 -0
- package/dist/internal-logger.d.ts.map +1 -1
- package/dist/internal-logger.js +64 -2
- package/dist/internal-logger.js.map +1 -1
- package/dist/keychain.d.ts +3 -0
- package/dist/keychain.d.ts.map +1 -1
- package/dist/keychain.js +47 -28
- package/dist/keychain.js.map +1 -1
- package/dist/types.d.ts +1 -1
- package/package.json +7 -6
- package/src/cli.ts +4 -2
- package/src/cmd/ai/prompt/agent.md +6 -6
- package/src/cmd/build/vite/route-discovery.ts +8 -0
- package/src/cmd/cloud/sandbox/fs/rm.ts +8 -3
- package/src/cmd/cloud/sandbox/fs/rmdir.ts +8 -3
- package/src/cmd/cloud/task/close.ts +319 -0
- package/src/cmd/cloud/task/delete.ts +15 -43
- package/src/cmd/cloud/task/index.ts +10 -0
- package/src/cmd/cloud/task/list.ts +111 -4
- package/src/cmd/cloud/task/util.ts +59 -5
- package/src/cmd/coder/archive.ts +59 -0
- package/src/cmd/coder/create.ts +268 -0
- package/src/cmd/coder/delete.ts +67 -0
- package/src/cmd/coder/events.ts +106 -0
- package/src/cmd/coder/extension-path.ts +71 -0
- package/src/cmd/coder/{inspect.ts → get.ts} +44 -45
- package/src/cmd/coder/index.ts +54 -4
- package/src/cmd/coder/list.ts +28 -65
- package/src/cmd/coder/loop.ts +85 -0
- package/src/cmd/coder/participants.ts +100 -0
- package/src/cmd/coder/replay.ts +58 -0
- package/src/cmd/coder/resolve-repo.ts +119 -0
- package/src/cmd/coder/skill/buckets.ts +191 -0
- package/src/cmd/coder/skill/delete.ts +67 -0
- package/src/cmd/coder/skill/index.ts +35 -0
- package/src/cmd/coder/skill/list.ts +97 -0
- package/src/cmd/coder/skill/save.ts +84 -0
- package/src/cmd/coder/start.ts +104 -141
- package/src/cmd/coder/tui-init.ts +13 -4
- package/src/cmd/coder/update.ts +128 -0
- package/src/cmd/coder/users.ts +101 -0
- package/src/cmd/coder/workspace/create.ts +104 -0
- package/src/cmd/coder/workspace/delete.ts +70 -0
- package/src/cmd/coder/workspace/get.ts +112 -0
- package/src/cmd/coder/workspace/index.ts +38 -0
- package/src/cmd/coder/workspace/list.ts +101 -0
- package/src/cmd/dev/sync.ts +5 -5
- package/src/coder-hub-url.ts +32 -0
- package/src/config.ts +17 -3
- package/src/internal-logger.ts +83 -2
- package/src/keychain.ts +68 -39
- package/dist/cmd/coder/hub-url.d.ts +0 -36
- package/dist/cmd/coder/hub-url.d.ts.map +0 -1
- package/dist/cmd/coder/hub-url.js +0 -106
- package/dist/cmd/coder/hub-url.js.map +0 -1
- package/dist/cmd/coder/inspect.d.ts +0 -2
- package/dist/cmd/coder/inspect.d.ts.map +0 -1
- package/dist/cmd/coder/inspect.js.map +0 -1
- package/src/cmd/coder/hub-url.ts +0 -111
package/src/keychain.ts
CHANGED
|
@@ -7,6 +7,8 @@
|
|
|
7
7
|
|
|
8
8
|
const SERVICE_PREFIX = 'com.agentuity.cli';
|
|
9
9
|
const KEY_ACCOUNT = 'aes-encryption-key';
|
|
10
|
+
const AUTH_ACCOUNT = 'auth-token';
|
|
11
|
+
const CODER_API_KEY_ACCOUNT = 'coder-hub-api-key';
|
|
10
12
|
|
|
11
13
|
/**
|
|
12
14
|
* Check if we're running on macOS
|
|
@@ -88,26 +90,15 @@ async function decrypt(combined: Uint8Array, keyBytes: Uint8Array): Promise<stri
|
|
|
88
90
|
return new TextDecoder().decode(plaintext);
|
|
89
91
|
}
|
|
90
92
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
profileName: string,
|
|
96
|
-
authData: { api_key: string; user_id: string; expires: number }
|
|
93
|
+
async function saveEncryptedValueToKeychain(
|
|
94
|
+
service: string,
|
|
95
|
+
account: string,
|
|
96
|
+
value: string
|
|
97
97
|
): Promise<void> {
|
|
98
|
-
const service = `${SERVICE_PREFIX}.${profileName}`;
|
|
99
|
-
const account = 'auth-token';
|
|
100
|
-
|
|
101
|
-
// Get or create encryption key
|
|
102
98
|
const key = await ensureEncryptionKey(service);
|
|
103
|
-
|
|
104
|
-
// Encrypt the auth data
|
|
105
|
-
const json = JSON.stringify(authData);
|
|
106
|
-
const encrypted = await encrypt(json, key);
|
|
99
|
+
const encrypted = await encrypt(value, key);
|
|
107
100
|
const b64 = Buffer.from(encrypted).toString('base64');
|
|
108
101
|
|
|
109
|
-
// Store encrypted auth in keychain
|
|
110
|
-
// First try to delete if exists, then add
|
|
111
102
|
const del = Bun.spawn(['security', 'delete-generic-password', '-s', service, '-a', account], {
|
|
112
103
|
stderr: 'ignore',
|
|
113
104
|
});
|
|
@@ -127,6 +118,43 @@ export async function saveAuthToKeychain(
|
|
|
127
118
|
await add.exited;
|
|
128
119
|
}
|
|
129
120
|
|
|
121
|
+
async function getEncryptedValueFromKeychain(
|
|
122
|
+
service: string,
|
|
123
|
+
account: string
|
|
124
|
+
): Promise<string | null> {
|
|
125
|
+
const find = Bun.spawn(
|
|
126
|
+
['security', 'find-generic-password', '-s', service, '-a', account, '-w'],
|
|
127
|
+
{ stderr: 'ignore' }
|
|
128
|
+
);
|
|
129
|
+
|
|
130
|
+
const stdout = await new Response(find.stdout).text();
|
|
131
|
+
if (stdout.length === 0) {
|
|
132
|
+
return null;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
const encrypted = Uint8Array.from(Buffer.from(stdout.trim(), 'base64'));
|
|
136
|
+
const key = await ensureEncryptionKey(service);
|
|
137
|
+
return decrypt(encrypted, key);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
async function deleteValueFromKeychain(service: string, account: string): Promise<void> {
|
|
141
|
+
const del = Bun.spawn(['security', 'delete-generic-password', '-s', service, '-a', account], {
|
|
142
|
+
stderr: 'ignore',
|
|
143
|
+
});
|
|
144
|
+
await del.exited;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* Store auth data in macOS Keychain
|
|
149
|
+
*/
|
|
150
|
+
export async function saveAuthToKeychain(
|
|
151
|
+
profileName: string,
|
|
152
|
+
authData: { api_key: string; user_id: string; expires: number }
|
|
153
|
+
): Promise<void> {
|
|
154
|
+
const service = `${SERVICE_PREFIX}.${profileName}`;
|
|
155
|
+
await saveEncryptedValueToKeychain(service, AUTH_ACCOUNT, JSON.stringify(authData));
|
|
156
|
+
}
|
|
157
|
+
|
|
130
158
|
/**
|
|
131
159
|
* Retrieve auth data from macOS Keychain
|
|
132
160
|
*/
|
|
@@ -134,28 +162,12 @@ export async function getAuthFromKeychain(
|
|
|
134
162
|
profileName: string
|
|
135
163
|
): Promise<{ api_key: string; user_id: string; expires: number } | null> {
|
|
136
164
|
const service = `${SERVICE_PREFIX}.${profileName}`;
|
|
137
|
-
const account = 'auth-token';
|
|
138
165
|
|
|
139
166
|
try {
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
['security', 'find-generic-password', '-s', service, '-a', account, '-w'],
|
|
143
|
-
{ stderr: 'ignore' }
|
|
144
|
-
);
|
|
145
|
-
|
|
146
|
-
const stdout = await new Response(find.stdout).text();
|
|
147
|
-
if (stdout.length === 0) {
|
|
167
|
+
const json = await getEncryptedValueFromKeychain(service, AUTH_ACCOUNT);
|
|
168
|
+
if (!json) {
|
|
148
169
|
return null;
|
|
149
170
|
}
|
|
150
|
-
|
|
151
|
-
const b64 = stdout.trim();
|
|
152
|
-
const encrypted = Uint8Array.from(Buffer.from(b64, 'base64'));
|
|
153
|
-
|
|
154
|
-
// Get the encryption key
|
|
155
|
-
const key = await ensureEncryptionKey(service);
|
|
156
|
-
|
|
157
|
-
// Decrypt the auth data
|
|
158
|
-
const json = await decrypt(encrypted, key);
|
|
159
171
|
return JSON.parse(json);
|
|
160
172
|
} catch {
|
|
161
173
|
return null;
|
|
@@ -167,10 +179,27 @@ export async function getAuthFromKeychain(
|
|
|
167
179
|
*/
|
|
168
180
|
export async function deleteAuthFromKeychain(profileName: string): Promise<void> {
|
|
169
181
|
const service = `${SERVICE_PREFIX}.${profileName}`;
|
|
170
|
-
|
|
182
|
+
await deleteValueFromKeychain(service, AUTH_ACCOUNT);
|
|
183
|
+
}
|
|
171
184
|
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
185
|
+
export async function saveCoderApiKeyToKeychain(
|
|
186
|
+
profileName: string,
|
|
187
|
+
apiKey: string
|
|
188
|
+
): Promise<void> {
|
|
189
|
+
const service = `${SERVICE_PREFIX}.${profileName}`;
|
|
190
|
+
await saveEncryptedValueToKeychain(service, CODER_API_KEY_ACCOUNT, apiKey);
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
export async function getCoderApiKeyFromKeychain(profileName: string): Promise<string | null> {
|
|
194
|
+
const service = `${SERVICE_PREFIX}.${profileName}`;
|
|
195
|
+
try {
|
|
196
|
+
return await getEncryptedValueFromKeychain(service, CODER_API_KEY_ACCOUNT);
|
|
197
|
+
} catch {
|
|
198
|
+
return null;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
export async function deleteCoderApiKeyFromKeychain(profileName: string): Promise<void> {
|
|
203
|
+
const service = `${SERVICE_PREFIX}.${profileName}`;
|
|
204
|
+
await deleteValueFromKeychain(service, CODER_API_KEY_ACCOUNT);
|
|
176
205
|
}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Hub URL resolution for Coder CLI commands.
|
|
3
|
-
*
|
|
4
|
-
* Resolution priority:
|
|
5
|
-
* 1. --hub-url flag (explicit per-command override)
|
|
6
|
-
* 2. AGENTUITY_CODER_HUB_URL env var
|
|
7
|
-
* 3. AGENTUITY_DEVMODE_URL env var (dev tunnel URL)
|
|
8
|
-
*/
|
|
9
|
-
/**
|
|
10
|
-
* Resolve the Hub HTTP base URL for REST API calls.
|
|
11
|
-
* Converts ws:// URLs to http:// automatically.
|
|
12
|
-
*
|
|
13
|
-
* @param flagUrl Optional --hub-url flag value
|
|
14
|
-
* @returns HTTP base URL (e.g. "http://localhost:3500") or null if Hub is unreachable
|
|
15
|
-
*/
|
|
16
|
-
export declare function resolveHubUrl(flagUrl?: string): Promise<string | null>;
|
|
17
|
-
/**
|
|
18
|
-
* Resolve the Hub WebSocket URL for Pi extension connections.
|
|
19
|
-
* Converts http:// URLs to ws:// automatically and ensures /api/ws path.
|
|
20
|
-
*
|
|
21
|
-
* @param flagUrl Optional --hub-url flag value
|
|
22
|
-
* @returns WebSocket URL (e.g. "ws://127.0.0.1:3500/api/ws") or null
|
|
23
|
-
*/
|
|
24
|
-
export declare function resolveHubWsUrl(flagUrl?: string): Promise<string | null>;
|
|
25
|
-
export declare function toHubWsUrl(hubHttpUrl: string): string;
|
|
26
|
-
/**
|
|
27
|
-
* Resolve the API key for Hub authentication.
|
|
28
|
-
* TODO: Remove/Change when we get Agentuity service level auth enabled, this is just temporary
|
|
29
|
-
*/
|
|
30
|
-
export declare function resolveApiKey(): string | null;
|
|
31
|
-
/**
|
|
32
|
-
* Build headers object with API key if available.
|
|
33
|
-
* TODO: Remove/Change when we get Agentuity service level auth enabled, this is just temporary
|
|
34
|
-
*/
|
|
35
|
-
export declare function hubFetchHeaders(extra?: Record<string, string>): Record<string, string>;
|
|
36
|
-
//# sourceMappingURL=hub-url.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hub-url.d.ts","sourceRoot":"","sources":["../../../src/cmd/coder/hub-url.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH;;;;;;GAMG;AACH,wBAAsB,aAAa,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAa5E;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAI9E;AAED,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAErD;AA4CD;;;GAGG;AACH,wBAAgB,aAAa,IAAI,MAAM,GAAG,IAAI,CAE7C;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAMtF"}
|
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Hub URL resolution for Coder CLI commands.
|
|
3
|
-
*
|
|
4
|
-
* Resolution priority:
|
|
5
|
-
* 1. --hub-url flag (explicit per-command override)
|
|
6
|
-
* 2. AGENTUITY_CODER_HUB_URL env var
|
|
7
|
-
* 3. AGENTUITY_DEVMODE_URL env var (dev tunnel URL)
|
|
8
|
-
*/
|
|
9
|
-
import { getVersion } from '../../version';
|
|
10
|
-
/**
|
|
11
|
-
* Resolve the Hub HTTP base URL for REST API calls.
|
|
12
|
-
* Converts ws:// URLs to http:// automatically.
|
|
13
|
-
*
|
|
14
|
-
* @param flagUrl Optional --hub-url flag value
|
|
15
|
-
* @returns HTTP base URL (e.g. "http://localhost:3500") or null if Hub is unreachable
|
|
16
|
-
*/
|
|
17
|
-
export async function resolveHubUrl(flagUrl) {
|
|
18
|
-
// 1. Explicit flag
|
|
19
|
-
if (flagUrl)
|
|
20
|
-
return normalizeToHttp(flagUrl);
|
|
21
|
-
// 2. Env var (explicit)
|
|
22
|
-
const envUrl = process.env.AGENTUITY_CODER_HUB_URL;
|
|
23
|
-
if (envUrl)
|
|
24
|
-
return normalizeToHttp(envUrl);
|
|
25
|
-
// 3. Dev mode URL (tunnel)
|
|
26
|
-
const devUrl = process.env.AGENTUITY_DEVMODE_URL;
|
|
27
|
-
if (devUrl)
|
|
28
|
-
return normalizeToHttp(devUrl);
|
|
29
|
-
return null;
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Resolve the Hub WebSocket URL for Pi extension connections.
|
|
33
|
-
* Converts http:// URLs to ws:// automatically and ensures /api/ws path.
|
|
34
|
-
*
|
|
35
|
-
* @param flagUrl Optional --hub-url flag value
|
|
36
|
-
* @returns WebSocket URL (e.g. "ws://127.0.0.1:3500/api/ws") or null
|
|
37
|
-
*/
|
|
38
|
-
export async function resolveHubWsUrl(flagUrl) {
|
|
39
|
-
const httpUrl = await resolveHubUrl(flagUrl);
|
|
40
|
-
if (!httpUrl)
|
|
41
|
-
return null;
|
|
42
|
-
return toHubWsUrl(httpUrl);
|
|
43
|
-
}
|
|
44
|
-
export function toHubWsUrl(hubHttpUrl) {
|
|
45
|
-
return normalizeToWs(hubHttpUrl);
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Convert any URL form to an HTTP base URL (strip paths, convert ws->http).
|
|
49
|
-
*/
|
|
50
|
-
function normalizeToHttp(url) {
|
|
51
|
-
let normalized = url.trim().replace(/\/+$/, '');
|
|
52
|
-
// ws:// -> http://
|
|
53
|
-
if (normalized.startsWith('ws://'))
|
|
54
|
-
normalized = 'http://' + normalized.slice(5);
|
|
55
|
-
else if (normalized.startsWith('wss://'))
|
|
56
|
-
normalized = 'https://' + normalized.slice(6);
|
|
57
|
-
// Strip known Hub transport/helper paths to get the HTTP base URL.
|
|
58
|
-
// Accept `/ws` as a convenience alias because users often copy the raw route name.
|
|
59
|
-
normalized = normalized.replace(/\/api\/ws\b.*$/, '');
|
|
60
|
-
normalized = normalized.replace(/\/ws\b.*$/, '');
|
|
61
|
-
normalized = normalized.replace(/\/api\/hub\b.*$/, '');
|
|
62
|
-
return normalized.replace(/\/+$/, '');
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Convert an HTTP base URL to a WebSocket URL with /api/ws path.
|
|
66
|
-
*/
|
|
67
|
-
function normalizeToWs(httpUrl) {
|
|
68
|
-
let wsUrl = httpUrl;
|
|
69
|
-
if (wsUrl.startsWith('http://'))
|
|
70
|
-
wsUrl = 'ws://' + wsUrl.slice(7);
|
|
71
|
-
else if (wsUrl.startsWith('https://'))
|
|
72
|
-
wsUrl = 'wss://' + wsUrl.slice(8);
|
|
73
|
-
try {
|
|
74
|
-
const parsed = new URL(wsUrl);
|
|
75
|
-
if (parsed.pathname !== '/api/ws') {
|
|
76
|
-
parsed.pathname = '/api/ws';
|
|
77
|
-
wsUrl = parsed.toString().replace(/\/$/, '');
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
catch {
|
|
81
|
-
if (!wsUrl.endsWith('/api/ws')) {
|
|
82
|
-
wsUrl = wsUrl.replace(/\/?$/, '/api/ws');
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
return wsUrl;
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Resolve the API key for Hub authentication.
|
|
89
|
-
* TODO: Remove/Change when we get Agentuity service level auth enabled, this is just temporary
|
|
90
|
-
*/
|
|
91
|
-
export function resolveApiKey() {
|
|
92
|
-
return process.env.AGENTUITY_CODER_API_KEY || null;
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* Build headers object with API key if available.
|
|
96
|
-
* TODO: Remove/Change when we get Agentuity service level auth enabled, this is just temporary
|
|
97
|
-
*/
|
|
98
|
-
export function hubFetchHeaders(extra) {
|
|
99
|
-
const headers = { ...extra };
|
|
100
|
-
headers['User-Agent'] = `Agentuity Coder/${getVersion()}`;
|
|
101
|
-
const apiKey = resolveApiKey();
|
|
102
|
-
if (apiKey)
|
|
103
|
-
headers['x-agentuity-auth-api-key'] = apiKey;
|
|
104
|
-
return headers;
|
|
105
|
-
}
|
|
106
|
-
//# sourceMappingURL=hub-url.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hub-url.js","sourceRoot":"","sources":["../../../src/cmd/coder/hub-url.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"inspect.d.ts","sourceRoot":"","sources":["../../../src/cmd/coder/inspect.ts"],"names":[],"mappings":"AA8BA,eAAO,MAAM,iBAAiB,sCAyK5B,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../../src/cmd/coder/inspect.ts"],"names":[],"mappings":"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"}
|
package/src/cmd/coder/hub-url.ts
DELETED
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Hub URL resolution for Coder CLI commands.
|
|
3
|
-
*
|
|
4
|
-
* Resolution priority:
|
|
5
|
-
* 1. --hub-url flag (explicit per-command override)
|
|
6
|
-
* 2. AGENTUITY_CODER_HUB_URL env var
|
|
7
|
-
* 3. AGENTUITY_DEVMODE_URL env var (dev tunnel URL)
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
import { getVersion } from '../../version';
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Resolve the Hub HTTP base URL for REST API calls.
|
|
14
|
-
* Converts ws:// URLs to http:// automatically.
|
|
15
|
-
*
|
|
16
|
-
* @param flagUrl Optional --hub-url flag value
|
|
17
|
-
* @returns HTTP base URL (e.g. "http://localhost:3500") or null if Hub is unreachable
|
|
18
|
-
*/
|
|
19
|
-
export async function resolveHubUrl(flagUrl?: string): Promise<string | null> {
|
|
20
|
-
// 1. Explicit flag
|
|
21
|
-
if (flagUrl) return normalizeToHttp(flagUrl);
|
|
22
|
-
|
|
23
|
-
// 2. Env var (explicit)
|
|
24
|
-
const envUrl = process.env.AGENTUITY_CODER_HUB_URL;
|
|
25
|
-
if (envUrl) return normalizeToHttp(envUrl);
|
|
26
|
-
|
|
27
|
-
// 3. Dev mode URL (tunnel)
|
|
28
|
-
const devUrl = process.env.AGENTUITY_DEVMODE_URL;
|
|
29
|
-
if (devUrl) return normalizeToHttp(devUrl);
|
|
30
|
-
|
|
31
|
-
return null;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* Resolve the Hub WebSocket URL for Pi extension connections.
|
|
36
|
-
* Converts http:// URLs to ws:// automatically and ensures /api/ws path.
|
|
37
|
-
*
|
|
38
|
-
* @param flagUrl Optional --hub-url flag value
|
|
39
|
-
* @returns WebSocket URL (e.g. "ws://127.0.0.1:3500/api/ws") or null
|
|
40
|
-
*/
|
|
41
|
-
export async function resolveHubWsUrl(flagUrl?: string): Promise<string | null> {
|
|
42
|
-
const httpUrl = await resolveHubUrl(flagUrl);
|
|
43
|
-
if (!httpUrl) return null;
|
|
44
|
-
return toHubWsUrl(httpUrl);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
export function toHubWsUrl(hubHttpUrl: string): string {
|
|
48
|
-
return normalizeToWs(hubHttpUrl);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* Convert any URL form to an HTTP base URL (strip paths, convert ws->http).
|
|
53
|
-
*/
|
|
54
|
-
function normalizeToHttp(url: string): string {
|
|
55
|
-
let normalized = url.trim().replace(/\/+$/, '');
|
|
56
|
-
|
|
57
|
-
// ws:// -> http://
|
|
58
|
-
if (normalized.startsWith('ws://')) normalized = 'http://' + normalized.slice(5);
|
|
59
|
-
else if (normalized.startsWith('wss://')) normalized = 'https://' + normalized.slice(6);
|
|
60
|
-
|
|
61
|
-
// Strip known Hub transport/helper paths to get the HTTP base URL.
|
|
62
|
-
// Accept `/ws` as a convenience alias because users often copy the raw route name.
|
|
63
|
-
normalized = normalized.replace(/\/api\/ws\b.*$/, '');
|
|
64
|
-
normalized = normalized.replace(/\/ws\b.*$/, '');
|
|
65
|
-
normalized = normalized.replace(/\/api\/hub\b.*$/, '');
|
|
66
|
-
|
|
67
|
-
return normalized.replace(/\/+$/, '');
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
/**
|
|
71
|
-
* Convert an HTTP base URL to a WebSocket URL with /api/ws path.
|
|
72
|
-
*/
|
|
73
|
-
function normalizeToWs(httpUrl: string): string {
|
|
74
|
-
let wsUrl = httpUrl;
|
|
75
|
-
if (wsUrl.startsWith('http://')) wsUrl = 'ws://' + wsUrl.slice(7);
|
|
76
|
-
else if (wsUrl.startsWith('https://')) wsUrl = 'wss://' + wsUrl.slice(8);
|
|
77
|
-
|
|
78
|
-
try {
|
|
79
|
-
const parsed = new URL(wsUrl);
|
|
80
|
-
if (parsed.pathname !== '/api/ws') {
|
|
81
|
-
parsed.pathname = '/api/ws';
|
|
82
|
-
wsUrl = parsed.toString().replace(/\/$/, '');
|
|
83
|
-
}
|
|
84
|
-
} catch {
|
|
85
|
-
if (!wsUrl.endsWith('/api/ws')) {
|
|
86
|
-
wsUrl = wsUrl.replace(/\/?$/, '/api/ws');
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
return wsUrl;
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
/**
|
|
94
|
-
* Resolve the API key for Hub authentication.
|
|
95
|
-
* TODO: Remove/Change when we get Agentuity service level auth enabled, this is just temporary
|
|
96
|
-
*/
|
|
97
|
-
export function resolveApiKey(): string | null {
|
|
98
|
-
return process.env.AGENTUITY_CODER_API_KEY || null;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
/**
|
|
102
|
-
* Build headers object with API key if available.
|
|
103
|
-
* TODO: Remove/Change when we get Agentuity service level auth enabled, this is just temporary
|
|
104
|
-
*/
|
|
105
|
-
export function hubFetchHeaders(extra?: Record<string, string>): Record<string, string> {
|
|
106
|
-
const headers: Record<string, string> = { ...extra };
|
|
107
|
-
headers['User-Agent'] = `Agentuity Coder/${getVersion()}`;
|
|
108
|
-
const apiKey = resolveApiKey();
|
|
109
|
-
if (apiKey) headers['x-agentuity-auth-api-key'] = apiKey;
|
|
110
|
-
return headers;
|
|
111
|
-
}
|