@agentuity/cli 2.0.7 → 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/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/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} +38 -42
- 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 +52 -7
- 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 +26 -42
- 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 +87 -131
- package/dist/cmd/coder/start.js.map +1 -1
- package/dist/cmd/coder/tui-init.d.ts.map +1 -1
- package/dist/cmd/coder/tui-init.js +7 -2
- 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/config.d.ts.map +1 -1
- package/dist/config.js +3 -3
- package/dist/config.js.map +1 -1
- package/dist/types.d.ts +1 -5
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +0 -10
- package/dist/types.js.map +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/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} +45 -69
- package/src/cmd/coder/index.ts +52 -7
- package/src/cmd/coder/list.ts +29 -89
- 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 +101 -174
- package/src/cmd/coder/tui-init.ts +7 -3
- 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/config.ts +4 -3
- package/src/types.ts +0 -10
- package/dist/cmd/coder/config/index.d.ts +0 -2
- package/dist/cmd/coder/config/index.d.ts.map +0 -1
- package/dist/cmd/coder/config/index.js +0 -20
- package/dist/cmd/coder/config/index.js.map +0 -1
- package/dist/cmd/coder/config/set.d.ts +0 -2
- package/dist/cmd/coder/config/set.d.ts.map +0 -1
- package/dist/cmd/coder/config/set.js +0 -100
- package/dist/cmd/coder/config/set.js.map +0 -1
- package/dist/cmd/coder/hub-url.d.ts +0 -47
- package/dist/cmd/coder/hub-url.d.ts.map +0 -1
- package/dist/cmd/coder/hub-url.js +0 -148
- 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/dist/coder-config.d.ts +0 -14
- package/dist/coder-config.d.ts.map +0 -1
- package/dist/coder-config.js +0 -119
- package/dist/coder-config.js.map +0 -1
- package/src/cmd/coder/config/index.ts +0 -20
- package/src/cmd/coder/config/set.ts +0 -112
- package/src/cmd/coder/hub-url.ts +0 -205
- package/src/coder-config.ts +0 -141
|
@@ -1,148 +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. Stored per-profile Hub URL
|
|
8
|
-
* 4. AGENTUITY_DEVMODE_URL env var (dev tunnel URL)
|
|
9
|
-
*/
|
|
10
|
-
import { clearStoredCoderApiKey, getStoredCoderApiKey, getStoredCoderHubUrl, } from '../../coder-config';
|
|
11
|
-
import { normalizeCoderHubHttpUrl, toCoderHubWsUrl } from '../../coder-hub-url';
|
|
12
|
-
import { getCommand } from '../../command-prefix';
|
|
13
|
-
import { getVersion } from '../../version';
|
|
14
|
-
/**
|
|
15
|
-
* Resolve the Hub HTTP base URL for REST API calls.
|
|
16
|
-
* Converts ws:// URLs to http:// automatically.
|
|
17
|
-
*
|
|
18
|
-
* @param flagUrl Optional --hub-url flag value
|
|
19
|
-
* @returns HTTP base URL (e.g. "http://localhost:3500") or null if Hub is unreachable
|
|
20
|
-
*/
|
|
21
|
-
export async function resolveHubUrl(flagUrl, config) {
|
|
22
|
-
// 1. Explicit flag
|
|
23
|
-
if (flagUrl)
|
|
24
|
-
return normalizeCoderHubHttpUrl(flagUrl);
|
|
25
|
-
// 2. Env var (explicit)
|
|
26
|
-
const envUrl = process.env.AGENTUITY_CODER_HUB_URL;
|
|
27
|
-
if (envUrl)
|
|
28
|
-
return normalizeCoderHubHttpUrl(envUrl);
|
|
29
|
-
// 3. Stored profile config
|
|
30
|
-
const storedUrl = await getStoredCoderHubUrl(config);
|
|
31
|
-
if (storedUrl)
|
|
32
|
-
return storedUrl;
|
|
33
|
-
// 4. Dev mode URL (tunnel)
|
|
34
|
-
const devUrl = process.env.AGENTUITY_DEVMODE_URL;
|
|
35
|
-
if (devUrl)
|
|
36
|
-
return normalizeCoderHubHttpUrl(devUrl);
|
|
37
|
-
return null;
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Resolve the Hub WebSocket URL for Pi extension connections.
|
|
41
|
-
* Converts http:// URLs to ws:// automatically and ensures /api/ws path.
|
|
42
|
-
*
|
|
43
|
-
* @param flagUrl Optional --hub-url flag value
|
|
44
|
-
* @returns WebSocket URL (e.g. "ws://127.0.0.1:3500/api/ws") or null
|
|
45
|
-
*/
|
|
46
|
-
export async function resolveHubWsUrl(flagUrl, config) {
|
|
47
|
-
const httpUrl = await resolveHubUrl(flagUrl, config);
|
|
48
|
-
if (!httpUrl)
|
|
49
|
-
return null;
|
|
50
|
-
return toHubWsUrl(httpUrl);
|
|
51
|
-
}
|
|
52
|
-
export function toHubWsUrl(hubHttpUrl) {
|
|
53
|
-
return toCoderHubWsUrl(hubHttpUrl);
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Resolve the API key for Hub authentication.
|
|
57
|
-
*/
|
|
58
|
-
function resolveEnvApiKey() {
|
|
59
|
-
return process.env.AGENTUITY_CODER_API_KEY || null;
|
|
60
|
-
}
|
|
61
|
-
export async function resolveHubApiKey(config) {
|
|
62
|
-
const envApiKey = resolveEnvApiKey();
|
|
63
|
-
if (envApiKey) {
|
|
64
|
-
return {
|
|
65
|
-
apiKey: envApiKey,
|
|
66
|
-
source: 'env',
|
|
67
|
-
};
|
|
68
|
-
}
|
|
69
|
-
const storedApiKey = await getStoredCoderApiKey(config);
|
|
70
|
-
if (storedApiKey) {
|
|
71
|
-
return {
|
|
72
|
-
apiKey: storedApiKey,
|
|
73
|
-
source: 'stored',
|
|
74
|
-
};
|
|
75
|
-
}
|
|
76
|
-
return {
|
|
77
|
-
apiKey: null,
|
|
78
|
-
source: 'none',
|
|
79
|
-
};
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* Build headers object with API key if available.
|
|
83
|
-
*/
|
|
84
|
-
export function hubFetchHeaders(extra, apiKey) {
|
|
85
|
-
const headers = { ...extra };
|
|
86
|
-
headers['User-Agent'] = `Agentuity Coder/${getVersion()}`;
|
|
87
|
-
const resolvedApiKey = apiKey === undefined ? resolveEnvApiKey() : apiKey;
|
|
88
|
-
if (resolvedApiKey)
|
|
89
|
-
headers['x-agentuity-auth-api-key'] = resolvedApiKey;
|
|
90
|
-
return headers;
|
|
91
|
-
}
|
|
92
|
-
export function isHubUnauthorizedStatus(status) {
|
|
93
|
-
return status === 401 || status === 403;
|
|
94
|
-
}
|
|
95
|
-
export async function clearStoredHubApiKeyOnUnauthorized(status, resolvedApiKey, config, clearStoredApiKey = clearStoredCoderApiKey) {
|
|
96
|
-
if (!isHubUnauthorizedStatus(status) || resolvedApiKey.source !== 'stored') {
|
|
97
|
-
return false;
|
|
98
|
-
}
|
|
99
|
-
await clearStoredApiKey(config);
|
|
100
|
-
return true;
|
|
101
|
-
}
|
|
102
|
-
export function getHubUrlSetupGuidance() {
|
|
103
|
-
return (`Set a default Hub URL with:\n` +
|
|
104
|
-
` ${getCommand('coder config set url <url>')}\n\n` +
|
|
105
|
-
`Or pass --hub-url for a one-off override, or use AGENTUITY_CODER_HUB_URL.`);
|
|
106
|
-
}
|
|
107
|
-
export function getHubApiKeySetupGuidance() {
|
|
108
|
-
return (`Set a Hub API key with:\n` +
|
|
109
|
-
` ${getCommand('coder config set apikey <apikey>')}\n\n` +
|
|
110
|
-
`Or use AGENTUITY_CODER_API_KEY as an override.`);
|
|
111
|
-
}
|
|
112
|
-
export function formatMissingHubUrlMessage() {
|
|
113
|
-
return `Could not find a configured Coder Hub URL.\n\n${getHubUrlSetupGuidance()}`;
|
|
114
|
-
}
|
|
115
|
-
export function formatHubUnauthorizedMessage(hubUrl, serverMessage, options) {
|
|
116
|
-
const clearedStoredKey = options?.clearedStoredKey ? 'Stored Hub API key cleared.\n\n' : '';
|
|
117
|
-
return (`Coder Hub at ${hubUrl} requires a valid API key.\n\n` +
|
|
118
|
-
`${clearedStoredKey}${getHubApiKeySetupGuidance()}\n\n` +
|
|
119
|
-
`Server said: ${serverMessage}`);
|
|
120
|
-
}
|
|
121
|
-
export async function getHubResponseErrorMessage(response) {
|
|
122
|
-
const fallback = `${response.status} ${response.statusText}`;
|
|
123
|
-
try {
|
|
124
|
-
const payload = (await response.clone().json());
|
|
125
|
-
if (typeof payload.error === 'string' && payload.error.trim()) {
|
|
126
|
-
return payload.error.trim();
|
|
127
|
-
}
|
|
128
|
-
if (typeof payload.message === 'string' && payload.message.trim()) {
|
|
129
|
-
return payload.message.trim();
|
|
130
|
-
}
|
|
131
|
-
if (typeof payload.details === 'string' && payload.details.trim()) {
|
|
132
|
-
return payload.details.trim();
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
catch {
|
|
136
|
-
// Fall back to the response text below.
|
|
137
|
-
}
|
|
138
|
-
try {
|
|
139
|
-
const text = (await response.text()).trim();
|
|
140
|
-
if (text)
|
|
141
|
-
return text;
|
|
142
|
-
}
|
|
143
|
-
catch {
|
|
144
|
-
// Fall back to the status text below.
|
|
145
|
-
}
|
|
146
|
-
return fallback;
|
|
147
|
-
}
|
|
148
|
-
//# 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":"AAwCA,eAAO,MAAM,iBAAiB,sCAsL5B,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../../src/cmd/coder/inspect.ts"],"names":[],"mappings":"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"}
|
package/dist/coder-config.d.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import type { Config } from './types';
|
|
2
|
-
export declare function saveCoderHubUrl(hubUrl: string): Promise<{
|
|
3
|
-
profileName: string;
|
|
4
|
-
hubUrl: string;
|
|
5
|
-
}>;
|
|
6
|
-
export declare function getStoredCoderHubUrl(config?: Config | null): Promise<string | null>;
|
|
7
|
-
export declare function saveCoderApiKey(apiKey: string): Promise<{
|
|
8
|
-
profileName: string;
|
|
9
|
-
}>;
|
|
10
|
-
export declare function getStoredCoderApiKey(config?: Config | null): Promise<string | null>;
|
|
11
|
-
export declare function clearStoredCoderApiKey(config?: Config | null): Promise<{
|
|
12
|
-
profileName: string;
|
|
13
|
-
}>;
|
|
14
|
-
//# sourceMappingURL=coder-config.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"coder-config.d.ts","sourceRoot":"","sources":["../src/coder-config.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAqBtC,wBAAsB,eAAe,CACpC,MAAM,EAAE,MAAM,GACZ,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAYlD;AAED,wBAAsB,oBAAoB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAKzF;AAED,wBAAsB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,CA6BtF;AAED,wBAAsB,oBAAoB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA4BzF;AAED,wBAAsB,sBAAsB,CAC3C,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GACpB,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,CAyBlC"}
|
package/dist/coder-config.js
DELETED
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
import { defaultProfileName, getOrInitConfig, loadConfig, saveConfig } from './config';
|
|
2
|
-
import { normalizeCoderHubHttpUrl } from './coder-hub-url';
|
|
3
|
-
import { deleteCoderApiKeyFromKeychain, getCoderApiKeyFromKeychain, isMacOS, saveCoderApiKeyToKeychain, } from './keychain';
|
|
4
|
-
function getProfileName(config) {
|
|
5
|
-
return config?.name || defaultProfileName;
|
|
6
|
-
}
|
|
7
|
-
function pruneCoderConfig(config) {
|
|
8
|
-
if (!config.coder)
|
|
9
|
-
return;
|
|
10
|
-
const nextCoder = { ...config.coder };
|
|
11
|
-
if (!nextCoder.hubUrl)
|
|
12
|
-
delete nextCoder.hubUrl;
|
|
13
|
-
if (!nextCoder.apiKey)
|
|
14
|
-
delete nextCoder.apiKey;
|
|
15
|
-
if (Object.keys(nextCoder).length === 0) {
|
|
16
|
-
delete config.coder;
|
|
17
|
-
return;
|
|
18
|
-
}
|
|
19
|
-
config.coder = nextCoder;
|
|
20
|
-
}
|
|
21
|
-
export async function saveCoderHubUrl(hubUrl) {
|
|
22
|
-
const normalized = normalizeCoderHubHttpUrl(hubUrl);
|
|
23
|
-
const config = await getOrInitConfig();
|
|
24
|
-
const profileName = getProfileName(config);
|
|
25
|
-
config.coder = {
|
|
26
|
-
...config.coder,
|
|
27
|
-
hubUrl: normalized,
|
|
28
|
-
};
|
|
29
|
-
await saveConfig(config);
|
|
30
|
-
return { profileName, hubUrl: normalized };
|
|
31
|
-
}
|
|
32
|
-
export async function getStoredCoderHubUrl(config) {
|
|
33
|
-
const loadedConfig = config ?? (await loadConfig());
|
|
34
|
-
const hubUrl = loadedConfig?.coder?.hubUrl?.trim();
|
|
35
|
-
if (!hubUrl)
|
|
36
|
-
return null;
|
|
37
|
-
return normalizeCoderHubHttpUrl(hubUrl);
|
|
38
|
-
}
|
|
39
|
-
export async function saveCoderApiKey(apiKey) {
|
|
40
|
-
const trimmed = apiKey.trim();
|
|
41
|
-
const config = await getOrInitConfig();
|
|
42
|
-
const profileName = getProfileName(config);
|
|
43
|
-
if (isMacOS()) {
|
|
44
|
-
try {
|
|
45
|
-
await saveCoderApiKeyToKeychain(profileName, trimmed);
|
|
46
|
-
if (config.coder?.apiKey) {
|
|
47
|
-
config.coder = {
|
|
48
|
-
...config.coder,
|
|
49
|
-
};
|
|
50
|
-
delete config.coder.apiKey;
|
|
51
|
-
}
|
|
52
|
-
pruneCoderConfig(config);
|
|
53
|
-
await saveConfig(config);
|
|
54
|
-
return { profileName };
|
|
55
|
-
}
|
|
56
|
-
catch {
|
|
57
|
-
// Fall back to config-file storage below.
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
config.coder = {
|
|
61
|
-
...config.coder,
|
|
62
|
-
apiKey: trimmed,
|
|
63
|
-
};
|
|
64
|
-
await saveConfig(config);
|
|
65
|
-
return { profileName };
|
|
66
|
-
}
|
|
67
|
-
export async function getStoredCoderApiKey(config) {
|
|
68
|
-
const loadedConfig = config ?? (await loadConfig());
|
|
69
|
-
const profileName = getProfileName(loadedConfig);
|
|
70
|
-
if (isMacOS()) {
|
|
71
|
-
try {
|
|
72
|
-
const keychainValue = await getCoderApiKeyFromKeychain(profileName);
|
|
73
|
-
if (keychainValue) {
|
|
74
|
-
if (loadedConfig?.coder?.apiKey) {
|
|
75
|
-
const configCopy = {
|
|
76
|
-
...loadedConfig,
|
|
77
|
-
coder: {
|
|
78
|
-
...loadedConfig.coder,
|
|
79
|
-
},
|
|
80
|
-
};
|
|
81
|
-
delete configCopy.coder.apiKey;
|
|
82
|
-
pruneCoderConfig(configCopy);
|
|
83
|
-
await saveConfig(configCopy);
|
|
84
|
-
}
|
|
85
|
-
return keychainValue.trim() || null;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
catch {
|
|
89
|
-
// Fall back to config-file storage below.
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
const storedValue = loadedConfig?.coder?.apiKey?.trim();
|
|
93
|
-
return storedValue || null;
|
|
94
|
-
}
|
|
95
|
-
export async function clearStoredCoderApiKey(config) {
|
|
96
|
-
const loadedConfig = config ?? (await getOrInitConfig());
|
|
97
|
-
const profileName = getProfileName(loadedConfig);
|
|
98
|
-
if (isMacOS()) {
|
|
99
|
-
try {
|
|
100
|
-
await deleteCoderApiKeyFromKeychain(profileName);
|
|
101
|
-
}
|
|
102
|
-
catch {
|
|
103
|
-
// Ignore keychain cleanup errors.
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
if (loadedConfig.coder?.apiKey) {
|
|
107
|
-
const configToSave = {
|
|
108
|
-
...loadedConfig,
|
|
109
|
-
coder: {
|
|
110
|
-
...loadedConfig.coder,
|
|
111
|
-
},
|
|
112
|
-
};
|
|
113
|
-
delete configToSave.coder.apiKey;
|
|
114
|
-
pruneCoderConfig(configToSave);
|
|
115
|
-
await saveConfig(configToSave);
|
|
116
|
-
}
|
|
117
|
-
return { profileName };
|
|
118
|
-
}
|
|
119
|
-
//# sourceMappingURL=coder-config.js.map
|
package/dist/coder-config.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"coder-config.js","sourceRoot":"","sources":["../src/coder-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { createCommand } from '../../../types';
|
|
2
|
-
import { getCommand } from '../../../command-prefix';
|
|
3
|
-
import { setSubcommand } from './set';
|
|
4
|
-
|
|
5
|
-
export const configSubcommand = createCommand({
|
|
6
|
-
name: 'config',
|
|
7
|
-
description: 'Manage stored Coder Hub configuration',
|
|
8
|
-
tags: ['fast'],
|
|
9
|
-
examples: [
|
|
10
|
-
{
|
|
11
|
-
command: getCommand('coder config set url https://hub.example.com'),
|
|
12
|
-
description: 'Set the default Coder Hub URL for the active profile',
|
|
13
|
-
},
|
|
14
|
-
{
|
|
15
|
-
command: getCommand('coder config set apikey agc_...'),
|
|
16
|
-
description: 'Set the default Coder Hub API key for the active profile',
|
|
17
|
-
},
|
|
18
|
-
],
|
|
19
|
-
subcommands: [setSubcommand],
|
|
20
|
-
});
|
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
import { saveCoderApiKey, saveCoderHubUrl } from '../../../coder-config';
|
|
3
|
-
import { normalizeCoderHubHttpUrl } from '../../../coder-hub-url';
|
|
4
|
-
import { getCommand } from '../../../command-prefix';
|
|
5
|
-
import * as tui from '../../../tui';
|
|
6
|
-
import { createCommand, createSubcommand } from '../../../types';
|
|
7
|
-
|
|
8
|
-
const setUrlSubcommand = createSubcommand({
|
|
9
|
-
name: 'url',
|
|
10
|
-
description: 'Set the default Coder Hub URL for the active profile',
|
|
11
|
-
tags: ['mutating', 'fast'],
|
|
12
|
-
examples: [
|
|
13
|
-
{
|
|
14
|
-
command: getCommand('coder config set url https://hub.example.com'),
|
|
15
|
-
description: 'Set the default Coder Hub URL',
|
|
16
|
-
},
|
|
17
|
-
{
|
|
18
|
-
command: getCommand('coder config set url ws://127.0.0.1:3650/api/ws'),
|
|
19
|
-
description: 'Store a local dev Hub URL using a WebSocket input',
|
|
20
|
-
},
|
|
21
|
-
],
|
|
22
|
-
schema: {
|
|
23
|
-
args: z.object({
|
|
24
|
-
url: z.string().min(1).describe('Hub URL to store for the active profile'),
|
|
25
|
-
}),
|
|
26
|
-
response: z.object({
|
|
27
|
-
profile: z.string().describe('Active CLI profile name'),
|
|
28
|
-
hubUrl: z.string().describe('Normalized stored Hub HTTP URL'),
|
|
29
|
-
}),
|
|
30
|
-
},
|
|
31
|
-
async handler(ctx) {
|
|
32
|
-
const { args, options } = ctx;
|
|
33
|
-
const normalized = normalizeCoderHubHttpUrl(args.url);
|
|
34
|
-
|
|
35
|
-
try {
|
|
36
|
-
new URL(normalized);
|
|
37
|
-
} catch {
|
|
38
|
-
tui.fatal(
|
|
39
|
-
`Invalid Hub URL: ${args.url}\n\nExpected a full URL such as https://hub.example.com or ws://127.0.0.1:3650/api/ws`
|
|
40
|
-
);
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
const result = await saveCoderHubUrl(normalized);
|
|
44
|
-
|
|
45
|
-
if (!options.json) {
|
|
46
|
-
tui.success(
|
|
47
|
-
`Default Coder Hub URL set to ${tui.bold(result.hubUrl)} for profile ${tui.bold(result.profileName)}`
|
|
48
|
-
);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
return {
|
|
52
|
-
profile: result.profileName,
|
|
53
|
-
hubUrl: result.hubUrl,
|
|
54
|
-
};
|
|
55
|
-
},
|
|
56
|
-
});
|
|
57
|
-
|
|
58
|
-
const setApiKeySubcommand = createSubcommand({
|
|
59
|
-
name: 'apikey',
|
|
60
|
-
description: 'Set the default Coder Hub API key for the active profile',
|
|
61
|
-
tags: ['mutating', 'fast'],
|
|
62
|
-
examples: [
|
|
63
|
-
{
|
|
64
|
-
command: getCommand('coder config set apikey agc_...'),
|
|
65
|
-
description: 'Set the default Coder Hub API key',
|
|
66
|
-
},
|
|
67
|
-
],
|
|
68
|
-
schema: {
|
|
69
|
-
args: z.object({
|
|
70
|
-
apikey: z.string().min(1).describe('Hub API key to store for the active profile'),
|
|
71
|
-
}),
|
|
72
|
-
response: z.object({
|
|
73
|
-
profile: z.string().describe('Active CLI profile name'),
|
|
74
|
-
stored: z.boolean().describe('Whether the API key was stored successfully'),
|
|
75
|
-
}),
|
|
76
|
-
},
|
|
77
|
-
async handler(ctx) {
|
|
78
|
-
const { args, options } = ctx;
|
|
79
|
-
const trimmed = args.apikey.trim();
|
|
80
|
-
if (!trimmed) {
|
|
81
|
-
tui.fatal('Hub API key cannot be empty');
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
const result = await saveCoderApiKey(trimmed);
|
|
85
|
-
|
|
86
|
-
if (!options.json) {
|
|
87
|
-
tui.success(`Coder Hub API key stored for profile ${tui.bold(result.profileName)}`);
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
return {
|
|
91
|
-
profile: result.profileName,
|
|
92
|
-
stored: true,
|
|
93
|
-
};
|
|
94
|
-
},
|
|
95
|
-
});
|
|
96
|
-
|
|
97
|
-
export const setSubcommand = createCommand({
|
|
98
|
-
name: 'set',
|
|
99
|
-
description: 'Set stored Coder Hub configuration values',
|
|
100
|
-
tags: ['mutating', 'fast'],
|
|
101
|
-
examples: [
|
|
102
|
-
{
|
|
103
|
-
command: getCommand('coder config set url https://hub.example.com'),
|
|
104
|
-
description: 'Store the default Hub URL',
|
|
105
|
-
},
|
|
106
|
-
{
|
|
107
|
-
command: getCommand('coder config set apikey agc_...'),
|
|
108
|
-
description: 'Store the default Hub API key',
|
|
109
|
-
},
|
|
110
|
-
],
|
|
111
|
-
subcommands: [setUrlSubcommand, setApiKeySubcommand],
|
|
112
|
-
});
|
package/src/cmd/coder/hub-url.ts
DELETED
|
@@ -1,205 +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. Stored per-profile Hub URL
|
|
8
|
-
* 4. AGENTUITY_DEVMODE_URL env var (dev tunnel URL)
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
import {
|
|
12
|
-
clearStoredCoderApiKey,
|
|
13
|
-
getStoredCoderApiKey,
|
|
14
|
-
getStoredCoderHubUrl,
|
|
15
|
-
} from '../../coder-config';
|
|
16
|
-
import { normalizeCoderHubHttpUrl, toCoderHubWsUrl } from '../../coder-hub-url';
|
|
17
|
-
import { getCommand } from '../../command-prefix';
|
|
18
|
-
import type { Config } from '../../types';
|
|
19
|
-
import { getVersion } from '../../version';
|
|
20
|
-
|
|
21
|
-
export type HubApiKeySource = 'env' | 'stored' | 'none';
|
|
22
|
-
|
|
23
|
-
export interface ResolvedHubApiKey {
|
|
24
|
-
apiKey: string | null;
|
|
25
|
-
source: HubApiKeySource;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* Resolve the Hub HTTP base URL for REST API calls.
|
|
30
|
-
* Converts ws:// URLs to http:// automatically.
|
|
31
|
-
*
|
|
32
|
-
* @param flagUrl Optional --hub-url flag value
|
|
33
|
-
* @returns HTTP base URL (e.g. "http://localhost:3500") or null if Hub is unreachable
|
|
34
|
-
*/
|
|
35
|
-
export async function resolveHubUrl(
|
|
36
|
-
flagUrl?: string,
|
|
37
|
-
config?: Config | null
|
|
38
|
-
): Promise<string | null> {
|
|
39
|
-
// 1. Explicit flag
|
|
40
|
-
if (flagUrl) return normalizeCoderHubHttpUrl(flagUrl);
|
|
41
|
-
|
|
42
|
-
// 2. Env var (explicit)
|
|
43
|
-
const envUrl = process.env.AGENTUITY_CODER_HUB_URL;
|
|
44
|
-
if (envUrl) return normalizeCoderHubHttpUrl(envUrl);
|
|
45
|
-
|
|
46
|
-
// 3. Stored profile config
|
|
47
|
-
const storedUrl = await getStoredCoderHubUrl(config);
|
|
48
|
-
if (storedUrl) return storedUrl;
|
|
49
|
-
|
|
50
|
-
// 4. Dev mode URL (tunnel)
|
|
51
|
-
const devUrl = process.env.AGENTUITY_DEVMODE_URL;
|
|
52
|
-
if (devUrl) return normalizeCoderHubHttpUrl(devUrl);
|
|
53
|
-
|
|
54
|
-
return null;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* Resolve the Hub WebSocket URL for Pi extension connections.
|
|
59
|
-
* Converts http:// URLs to ws:// automatically and ensures /api/ws path.
|
|
60
|
-
*
|
|
61
|
-
* @param flagUrl Optional --hub-url flag value
|
|
62
|
-
* @returns WebSocket URL (e.g. "ws://127.0.0.1:3500/api/ws") or null
|
|
63
|
-
*/
|
|
64
|
-
export async function resolveHubWsUrl(
|
|
65
|
-
flagUrl?: string,
|
|
66
|
-
config?: Config | null
|
|
67
|
-
): Promise<string | null> {
|
|
68
|
-
const httpUrl = await resolveHubUrl(flagUrl, config);
|
|
69
|
-
if (!httpUrl) return null;
|
|
70
|
-
return toHubWsUrl(httpUrl);
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
export function toHubWsUrl(hubHttpUrl: string): string {
|
|
74
|
-
return toCoderHubWsUrl(hubHttpUrl);
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
/**
|
|
78
|
-
* Resolve the API key for Hub authentication.
|
|
79
|
-
*/
|
|
80
|
-
function resolveEnvApiKey(): string | null {
|
|
81
|
-
return process.env.AGENTUITY_CODER_API_KEY || null;
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
export async function resolveHubApiKey(config?: Config | null): Promise<ResolvedHubApiKey> {
|
|
85
|
-
const envApiKey = resolveEnvApiKey();
|
|
86
|
-
if (envApiKey) {
|
|
87
|
-
return {
|
|
88
|
-
apiKey: envApiKey,
|
|
89
|
-
source: 'env',
|
|
90
|
-
};
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
const storedApiKey = await getStoredCoderApiKey(config);
|
|
94
|
-
if (storedApiKey) {
|
|
95
|
-
return {
|
|
96
|
-
apiKey: storedApiKey,
|
|
97
|
-
source: 'stored',
|
|
98
|
-
};
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
return {
|
|
102
|
-
apiKey: null,
|
|
103
|
-
source: 'none',
|
|
104
|
-
};
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
/**
|
|
108
|
-
* Build headers object with API key if available.
|
|
109
|
-
*/
|
|
110
|
-
export function hubFetchHeaders(
|
|
111
|
-
extra?: Record<string, string>,
|
|
112
|
-
apiKey?: string | null
|
|
113
|
-
): Record<string, string> {
|
|
114
|
-
const headers: Record<string, string> = { ...extra };
|
|
115
|
-
headers['User-Agent'] = `Agentuity Coder/${getVersion()}`;
|
|
116
|
-
const resolvedApiKey = apiKey === undefined ? resolveEnvApiKey() : apiKey;
|
|
117
|
-
if (resolvedApiKey) headers['x-agentuity-auth-api-key'] = resolvedApiKey;
|
|
118
|
-
return headers;
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
export function isHubUnauthorizedStatus(status: number): boolean {
|
|
122
|
-
return status === 401 || status === 403;
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
export async function clearStoredHubApiKeyOnUnauthorized(
|
|
126
|
-
status: number,
|
|
127
|
-
resolvedApiKey: ResolvedHubApiKey,
|
|
128
|
-
config?: Config | null,
|
|
129
|
-
clearStoredApiKey: (config?: Config | null) => Promise<unknown> = clearStoredCoderApiKey
|
|
130
|
-
): Promise<boolean> {
|
|
131
|
-
if (!isHubUnauthorizedStatus(status) || resolvedApiKey.source !== 'stored') {
|
|
132
|
-
return false;
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
await clearStoredApiKey(config);
|
|
136
|
-
return true;
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
export function getHubUrlSetupGuidance(): string {
|
|
140
|
-
return (
|
|
141
|
-
`Set a default Hub URL with:\n` +
|
|
142
|
-
` ${getCommand('coder config set url <url>')}\n\n` +
|
|
143
|
-
`Or pass --hub-url for a one-off override, or use AGENTUITY_CODER_HUB_URL.`
|
|
144
|
-
);
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
export function getHubApiKeySetupGuidance(): string {
|
|
148
|
-
return (
|
|
149
|
-
`Set a Hub API key with:\n` +
|
|
150
|
-
` ${getCommand('coder config set apikey <apikey>')}\n\n` +
|
|
151
|
-
`Or use AGENTUITY_CODER_API_KEY as an override.`
|
|
152
|
-
);
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
export function formatMissingHubUrlMessage(): string {
|
|
156
|
-
return `Could not find a configured Coder Hub URL.\n\n${getHubUrlSetupGuidance()}`;
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
export function formatHubUnauthorizedMessage(
|
|
160
|
-
hubUrl: string,
|
|
161
|
-
serverMessage: string,
|
|
162
|
-
options?: {
|
|
163
|
-
clearedStoredKey?: boolean;
|
|
164
|
-
}
|
|
165
|
-
): string {
|
|
166
|
-
const clearedStoredKey = options?.clearedStoredKey ? 'Stored Hub API key cleared.\n\n' : '';
|
|
167
|
-
|
|
168
|
-
return (
|
|
169
|
-
`Coder Hub at ${hubUrl} requires a valid API key.\n\n` +
|
|
170
|
-
`${clearedStoredKey}${getHubApiKeySetupGuidance()}\n\n` +
|
|
171
|
-
`Server said: ${serverMessage}`
|
|
172
|
-
);
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
export async function getHubResponseErrorMessage(response: Response): Promise<string> {
|
|
176
|
-
const fallback = `${response.status} ${response.statusText}`;
|
|
177
|
-
|
|
178
|
-
try {
|
|
179
|
-
const payload = (await response.clone().json()) as {
|
|
180
|
-
error?: unknown;
|
|
181
|
-
message?: unknown;
|
|
182
|
-
details?: unknown;
|
|
183
|
-
};
|
|
184
|
-
if (typeof payload.error === 'string' && payload.error.trim()) {
|
|
185
|
-
return payload.error.trim();
|
|
186
|
-
}
|
|
187
|
-
if (typeof payload.message === 'string' && payload.message.trim()) {
|
|
188
|
-
return payload.message.trim();
|
|
189
|
-
}
|
|
190
|
-
if (typeof payload.details === 'string' && payload.details.trim()) {
|
|
191
|
-
return payload.details.trim();
|
|
192
|
-
}
|
|
193
|
-
} catch {
|
|
194
|
-
// Fall back to the response text below.
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
try {
|
|
198
|
-
const text = (await response.text()).trim();
|
|
199
|
-
if (text) return text;
|
|
200
|
-
} catch {
|
|
201
|
-
// Fall back to the status text below.
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
return fallback;
|
|
205
|
-
}
|