coolhand-cli 0.5.2 → 0.6.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/README.md +26 -121
- package/dist/api/last-sync.d.ts +5 -0
- package/dist/api/last-sync.d.ts.map +1 -1
- package/dist/api/last-sync.js +5 -0
- package/dist/api/last-sync.js.map +1 -1
- package/dist/auth/callback-server.js +3 -3
- package/dist/auth/callback-server.js.map +1 -1
- package/dist/cli.d.ts +10 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +296 -37
- package/dist/cli.js.map +1 -1
- package/dist/commands/analyze-claude-sessions.d.ts.map +1 -1
- package/dist/commands/analyze-claude-sessions.js +37 -6
- package/dist/commands/analyze-claude-sessions.js.map +1 -1
- package/dist/commands/claude.d.ts +22 -3
- package/dist/commands/claude.d.ts.map +1 -1
- package/dist/commands/claude.js +117 -49
- package/dist/commands/claude.js.map +1 -1
- package/dist/commands/clients.js +1 -1
- package/dist/commands/clients.js.map +1 -1
- package/dist/commands/flush-pending.d.ts +25 -0
- package/dist/commands/flush-pending.d.ts.map +1 -0
- package/dist/commands/flush-pending.js +100 -0
- package/dist/commands/flush-pending.js.map +1 -0
- package/dist/commands/get-workload.d.ts +3 -0
- package/dist/commands/get-workload.d.ts.map +1 -0
- package/dist/commands/get-workload.js +28 -0
- package/dist/commands/get-workload.js.map +1 -0
- package/dist/commands/list-workloads.d.ts +3 -0
- package/dist/commands/list-workloads.d.ts.map +1 -0
- package/dist/commands/list-workloads.js +52 -0
- package/dist/commands/list-workloads.js.map +1 -0
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +41 -6
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/mcp-call.d.ts.map +1 -1
- package/dist/commands/mcp-call.js +57 -10
- package/dist/commands/mcp-call.js.map +1 -1
- package/dist/commands/status.js +2 -2
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/update-workload.d.ts +3 -0
- package/dist/commands/update-workload.d.ts.map +1 -0
- package/dist/commands/update-workload.js +35 -0
- package/dist/commands/update-workload.js.map +1 -0
- package/dist/commands/whoami.js +1 -1
- package/dist/commands/whoami.js.map +1 -1
- package/dist/commands/wildcard.d.ts.map +1 -1
- package/dist/commands/wildcard.js +118 -20
- package/dist/commands/wildcard.js.map +1 -1
- package/dist/config.d.ts +16 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +127 -6
- package/dist/config.js.map +1 -1
- package/dist/pending-store.d.ts +31 -0
- package/dist/pending-store.d.ts.map +1 -0
- package/dist/pending-store.js +81 -0
- package/dist/pending-store.js.map +1 -0
- package/dist/prompt.d.ts +13 -0
- package/dist/prompt.d.ts.map +1 -0
- package/dist/prompt.js +30 -0
- package/dist/prompt.js.map +1 -0
- package/dist/proxy/certs.d.ts +14 -0
- package/dist/proxy/certs.d.ts.map +1 -0
- package/dist/proxy/certs.js +64 -0
- package/dist/proxy/certs.js.map +1 -0
- package/dist/proxy/interceptor.d.ts +16 -0
- package/dist/proxy/interceptor.d.ts.map +1 -0
- package/dist/proxy/interceptor.js +57 -0
- package/dist/proxy/interceptor.js.map +1 -0
- package/dist/proxy/proxy.d.ts +18 -0
- package/dist/proxy/proxy.d.ts.map +1 -0
- package/dist/proxy/proxy.js +113 -0
- package/dist/proxy/proxy.js.map +1 -0
- package/dist/proxy/sender.d.ts +31 -0
- package/dist/proxy/sender.d.ts.map +1 -0
- package/dist/proxy/sender.js +66 -0
- package/dist/proxy/sender.js.map +1 -0
- package/dist/types.d.ts +24 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/version.d.ts +2 -2
- package/dist/version.js +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-call.d.ts","sourceRoot":"","sources":["../../src/commands/mcp-call.ts"],"names":[],"mappings":"AAIA,wBAAsB,OAAO,CAC3B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,IAAI,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/B,OAAO,CAAC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"mcp-call.d.ts","sourceRoot":"","sources":["../../src/commands/mcp-call.ts"],"names":[],"mappings":"AAIA,wBAAsB,OAAO,CAC3B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,IAAI,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/B,OAAO,CAAC,OAAO,CAAC,CAsHlB"}
|
|
@@ -1,20 +1,57 @@
|
|
|
1
1
|
import { CliError } from '../errors.js';
|
|
2
|
-
import { loadConfig,
|
|
2
|
+
import { loadConfig, resolveClient } from '../config.js';
|
|
3
3
|
import { DEFAULT_BASE_URL } from '../types.js';
|
|
4
4
|
export async function mcpCall(toolName, args, opts = {}) {
|
|
5
5
|
const cfg = await loadConfig();
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
const hasStoredClients = Object.keys(cfg.clients).length > 0;
|
|
7
|
+
const envPrivateKey = process.env.COOLHAND_PRIVATE_KEY;
|
|
8
|
+
// Resolve the client. The catch only handles resolveClient failures — the
|
|
9
|
+
// NO_PRIVATE_KEY check is intentionally outside this try so unrelated throws
|
|
10
|
+
// don't accidentally pass through the fallback guard.
|
|
11
|
+
let resolvedClient;
|
|
12
|
+
try {
|
|
13
|
+
resolvedClient = await resolveClient(cfg, opts.clientId);
|
|
14
|
+
}
|
|
15
|
+
catch (err) {
|
|
16
|
+
// Zero-config fallback: when there are no stored clients, fall back to
|
|
17
|
+
// COOLHAND_PRIVATE_KEY (raw env key). Guards:
|
|
18
|
+
// - opts.clientId must be undefined: an explicit --client-id flag names a specific
|
|
19
|
+
// account, so silently falling back would be confusing.
|
|
20
|
+
// - COOLHAND_CLIENT_ID must not be set: if the user set the env var, that is an
|
|
21
|
+
// intentional selection we should not silently override.
|
|
22
|
+
// - !hasStoredClients: if clients ARE stored, resolution failure (e.g. no default,
|
|
23
|
+
// non-TTY) should surface, not fall back to env key.
|
|
24
|
+
// With all three guards true (no explicit clientId, no COOLHAND_CLIENT_ID, no stored
|
|
25
|
+
// clients), the priority chain skips steps 1–3 and falls to step 4 (no clients), so
|
|
26
|
+
// resolveClient throws NOT_CONFIGURED. CLIENT_NOT_FOUND is not reachable here because
|
|
27
|
+
// that requires an explicit selection (step 1 or 2) which the guards above rule out.
|
|
28
|
+
if (err instanceof CliError &&
|
|
29
|
+
err.code === 'NOT_CONFIGURED' &&
|
|
30
|
+
opts.clientId === undefined &&
|
|
31
|
+
!process.env.COOLHAND_CLIENT_ID &&
|
|
32
|
+
!hasStoredClients &&
|
|
33
|
+
envPrivateKey) {
|
|
34
|
+
// resolvedClient stays undefined — handled in the branch below
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
throw err;
|
|
38
|
+
}
|
|
9
39
|
}
|
|
10
|
-
|
|
11
|
-
|
|
40
|
+
let privateKey;
|
|
41
|
+
let baseUrl;
|
|
42
|
+
if (resolvedClient !== undefined) {
|
|
43
|
+
if (!resolvedClient.private_key) {
|
|
44
|
+
throw new CliError('NO_PRIVATE_KEY', "No private key configured. Run 'coolhand login --scope private' first.");
|
|
45
|
+
}
|
|
46
|
+
privateKey = resolvedClient.private_key;
|
|
47
|
+
baseUrl = resolvedClient.base_url;
|
|
12
48
|
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
49
|
+
else {
|
|
50
|
+
// Zero-config fallback path: envPrivateKey is guaranteed non-null here because
|
|
51
|
+
// the catch condition above requires it (the catch would have re-thrown otherwise).
|
|
52
|
+
privateKey = envPrivateKey;
|
|
53
|
+
baseUrl = DEFAULT_BASE_URL;
|
|
16
54
|
}
|
|
17
|
-
const baseUrl = client?.base_url ?? DEFAULT_BASE_URL;
|
|
18
55
|
let parsedBaseUrl;
|
|
19
56
|
try {
|
|
20
57
|
parsedBaseUrl = new URL(baseUrl);
|
|
@@ -61,6 +98,16 @@ export async function mcpCall(toolName, args, opts = {}) {
|
|
|
61
98
|
if (json.error) {
|
|
62
99
|
throw new CliError('MCP_ERROR', `MCP error: ${json.error.message ?? JSON.stringify(json.error)}`);
|
|
63
100
|
}
|
|
101
|
+
// A tool call can also fail at the tool-execution level (e.g. a business-rule
|
|
102
|
+
// rejection like "Cannot rename system workloads") while the JSON-RPC envelope
|
|
103
|
+
// itself reports success. Every tool in this backend returns that case as a plain
|
|
104
|
+
// `{ error: "..." }` result hash rather than a top-level JSON-RPC `error`.
|
|
105
|
+
if (json.result !== null && typeof json.result === 'object' && !Array.isArray(json.result)) {
|
|
106
|
+
const result = json.result;
|
|
107
|
+
if (typeof result.error === 'string' && result.error.length > 0) {
|
|
108
|
+
throw new CliError('MCP_ERROR', result.error);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
64
111
|
return json.result;
|
|
65
112
|
}
|
|
66
113
|
//# sourceMappingURL=mcp-call.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-call.js","sourceRoot":"","sources":["../../src/commands/mcp-call.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"mcp-call.js","sourceRoot":"","sources":["../../src/commands/mcp-call.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/status.js
CHANGED
|
@@ -6,7 +6,7 @@ export function buildStatusOutput(cfg) {
|
|
|
6
6
|
const clients = Object.values(cfg.clients).map((entry) => ({
|
|
7
7
|
client_id: entry.client_id,
|
|
8
8
|
client_name: entry.client_name,
|
|
9
|
-
masked_token: maskToken(entry.api_key),
|
|
9
|
+
masked_token: entry.api_key ? maskToken(entry.api_key) : '(no public key)',
|
|
10
10
|
base_url: entry.base_url,
|
|
11
11
|
}));
|
|
12
12
|
return {
|
|
@@ -24,7 +24,7 @@ export async function run(opts) {
|
|
|
24
24
|
logger.json({ ...output, configured });
|
|
25
25
|
}
|
|
26
26
|
else if (configured && target) {
|
|
27
|
-
logger.info(`Configured: "${target.client_name}" (${target.client_id}) — ${maskToken(target.api_key)}`);
|
|
27
|
+
logger.info(`Configured: "${target.client_name}" (${target.client_id}) — ${target.api_key ? maskToken(target.api_key) : '(no public key)'}`);
|
|
28
28
|
}
|
|
29
29
|
else if (opts.clientId) {
|
|
30
30
|
logger.info(`No token configured for client "${opts.clientId}".`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGvC,MAAM,UAAU,iBAAiB,CAAC,GAA2C;IAC3E,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACzD,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,YAAY,EAAE,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGvC,MAAM,UAAU,iBAAiB,CAAC,GAA2C;IAC3E,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACzD,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,iBAAiB;QAC1E,QAAQ,EAAE,KAAK,CAAC,QAAQ;KACzB,CAAC,CAAC,CAAC;IACJ,OAAO;QACL,UAAU,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC;QAC9B,OAAO;QACP,iBAAiB,EAAE,GAAG,CAAC,iBAAiB;KACzC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,IAAmB;IAC3C,MAAM,GAAG,GAAG,MAAM,UAAU,EAAE,CAAC;IAC/B,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;IAEvE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;IACzC,CAAC;SAAM,IAAI,UAAU,IAAI,MAAM,EAAE,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC,gBAAgB,MAAM,CAAC,WAAW,MAAM,MAAM,CAAC,SAAS,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAC/I,CAAC;SAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,mCAAmC,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;IACpE,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAC;IACxF,CAAC;IAED,OAAO,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;AACxD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-workload.d.ts","sourceRoot":"","sources":["../../src/commands/update-workload.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEzD,wBAAsB,GAAG,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC,CA6BtE"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { CliError, ExitCode } from '../errors.js';
|
|
2
|
+
import { logger, redact } from '../logger.js';
|
|
3
|
+
import { mcpCall } from './mcp-call.js';
|
|
4
|
+
export async function run(opts) {
|
|
5
|
+
try {
|
|
6
|
+
const args = { workload_id: opts.id };
|
|
7
|
+
if (opts.name !== undefined) {
|
|
8
|
+
args.name = opts.name;
|
|
9
|
+
}
|
|
10
|
+
if (opts.description !== undefined) {
|
|
11
|
+
args.description = opts.description;
|
|
12
|
+
}
|
|
13
|
+
const result = await mcpCall('update_workload', args, { clientId: opts.clientId });
|
|
14
|
+
if (opts.json) {
|
|
15
|
+
logger.json({ ok: true, result });
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
logger.info(JSON.stringify(result, null, 2));
|
|
19
|
+
}
|
|
20
|
+
return ExitCode.OK;
|
|
21
|
+
}
|
|
22
|
+
catch (err) {
|
|
23
|
+
if (err instanceof CliError) {
|
|
24
|
+
if (opts.json) {
|
|
25
|
+
logger.json({ ok: false, error: err.code, message: redact(err.message) });
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
logger.info(`Error: ${redact(err.message)} [${err.code}]`);
|
|
29
|
+
}
|
|
30
|
+
return err.exitCode;
|
|
31
|
+
}
|
|
32
|
+
throw err;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=update-workload.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-workload.js","sourceRoot":"","sources":["../../src/commands/update-workload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAGxC,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,IAA2B;IACnD,IAAI,CAAC;QACH,MAAM,IAAI,GAA4B,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;QAC/D,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACxB,CAAC;QACD,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YACnC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACtC,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,iBAAiB,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAEnF,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QACpC,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO,QAAQ,CAAC,EAAE,CAAC;IACrB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,QAAQ,EAAE,CAAC;YAC5B,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC5E,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC,UAAU,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC;YAC7D,CAAC;YACD,OAAO,GAAG,CAAC,QAAQ,CAAC;QACtB,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC"}
|
package/dist/commands/whoami.js
CHANGED
|
@@ -14,7 +14,7 @@ export async function run(opts) {
|
|
|
14
14
|
}
|
|
15
15
|
return ExitCode.USER_ERROR;
|
|
16
16
|
}
|
|
17
|
-
logger.info(`Logged in as "${entry.client_name}" (id: ${entry.client_id}) via ${entry.base_url} — ${maskToken(entry.api_key)}`);
|
|
17
|
+
logger.info(`Logged in as "${entry.client_name}" (id: ${entry.client_id}) via ${entry.base_url} — ${entry.api_key ? maskToken(entry.api_key) : '(no public key)'}`);
|
|
18
18
|
return ExitCode.OK;
|
|
19
19
|
}
|
|
20
20
|
//# sourceMappingURL=whoami.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../src/commands/whoami.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGvC,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,IAAmB;IAC3C,MAAM,GAAG,GAAG,MAAM,UAAU,EAAE,CAAC;IAC/B,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAE5C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,QAAQ,kBAAkB,CAAC,CAAC;QAC7D,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;QACtE,CAAC;QACD,OAAO,QAAQ,CAAC,UAAU,CAAC;IAC7B,CAAC;IAED,MAAM,CAAC,IAAI,CACT,iBAAiB,KAAK,CAAC,WAAW,UAAU,KAAK,CAAC,SAAS,SAAS,KAAK,CAAC,QAAQ,MAAM,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../src/commands/whoami.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGvC,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,IAAmB;IAC3C,MAAM,GAAG,GAAG,MAAM,UAAU,EAAE,CAAC;IAC/B,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAE5C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,QAAQ,kBAAkB,CAAC,CAAC;QAC7D,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;QACtE,CAAC;QACD,OAAO,QAAQ,CAAC,UAAU,CAAC;IAC7B,CAAC;IAED,MAAM,CAAC,IAAI,CACT,iBAAiB,KAAK,CAAC,WAAW,UAAU,KAAK,CAAC,SAAS,SAAS,KAAK,CAAC,QAAQ,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE,CACvJ,CAAC;IACF,OAAO,QAAQ,CAAC,EAAE,CAAC;AACrB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wildcard.d.ts","sourceRoot":"","sources":["../../src/commands/wildcard.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"wildcard.d.ts","sourceRoot":"","sources":["../../src/commands/wildcard.ts"],"names":[],"mappings":"AAMA,OAAO,EAAoB,KAAK,mBAAmB,EAAE,MAAM,aAAa,CAAC;AA6BzE;;;;;;;;;GASG;AACH,wBAAsB,GAAG,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,CAsIpE"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { Coolhand } from 'coolhand-node';
|
|
2
|
-
import { ExitCode } from '../errors.js';
|
|
2
|
+
import { ExitCode, CliError } from '../errors.js';
|
|
3
3
|
import { PACKAGE_IDENTIFIER } from '../version.js';
|
|
4
4
|
import { logger, redact } from '../logger.js';
|
|
5
|
-
import { loadConfig,
|
|
5
|
+
import { loadConfig, resolveClient } from '../config.js';
|
|
6
|
+
import { savePendingRecord } from '../pending-store.js';
|
|
6
7
|
import { DEFAULT_BASE_URL } from '../types.js';
|
|
7
8
|
// Terminal guidance that breaks the agent out of its retry loop. The missing
|
|
8
9
|
// capability is real regardless of whether we could reach the Coolhand server, so
|
|
@@ -10,11 +11,18 @@ import { DEFAULT_BASE_URL } from '../types.js';
|
|
|
10
11
|
const STOP_GUIDANCE = 'Do not retry this action or attempt alternative ways to perform it; continue with the rest of your task.';
|
|
11
12
|
// Printed when the blocker was successfully recorded server-side.
|
|
12
13
|
const DELOOP_RECORDED = 'This capability is not available in this environment. Your feedback has been recorded. ' + STOP_GUIDANCE;
|
|
13
|
-
// Printed when the blocker could NOT be recorded (e.g.
|
|
14
|
-
//
|
|
15
|
-
//
|
|
14
|
+
// Printed when the blocker could NOT be recorded (e.g. the server did not confirm).
|
|
15
|
+
// We still de-loop the agent, but stay honest: we never claim a recording happened,
|
|
16
|
+
// and a warning is logged separately so the failure surfaces.
|
|
16
17
|
const DELOOP_UNRECORDED = 'This capability is not available in this environment. Your feedback could not be recorded ' +
|
|
17
|
-
'(
|
|
18
|
+
'(the server did not confirm — run `coolhand login` to enable reporting). ' +
|
|
19
|
+
STOP_GUIDANCE;
|
|
20
|
+
// Printed when the blocker was saved locally because the API key is unavailable
|
|
21
|
+
// (not logged in, no default client set, or private-only login). The data is not
|
|
22
|
+
// lost: it uploads when credentials are available. The specific reason is already
|
|
23
|
+
// in the logger.warn() call above, so this message stays generic.
|
|
24
|
+
const DELOOP_SAVED = 'This capability is not available in this environment. Your feedback was saved locally ' +
|
|
25
|
+
'and will be uploaded once a Coolhand account with a public API key is configured. ' +
|
|
18
26
|
STOP_GUIDANCE;
|
|
19
27
|
/**
|
|
20
28
|
* Records an agent's free-form "I am blocked, this capability does not exist"
|
|
@@ -28,26 +36,84 @@ const DELOOP_UNRECORDED = 'This capability is not available in this environment.
|
|
|
28
36
|
*/
|
|
29
37
|
export async function run(opts) {
|
|
30
38
|
let recorded = false;
|
|
39
|
+
let savedPath;
|
|
40
|
+
// Set when client selection itself fails (prompt timeout / invalid input), so the de-loop
|
|
41
|
+
// message accurately reflects "selection not completed" rather than "server did not confirm".
|
|
42
|
+
let deloopFallback;
|
|
43
|
+
// The SDK resolves to null (it does not throw) when the write fails, so a truthy
|
|
44
|
+
// response is the only proof the blocker was actually recorded.
|
|
45
|
+
const feedback = {
|
|
46
|
+
explanation: opts.complaint,
|
|
47
|
+
creator_unique_id: opts.agentName,
|
|
48
|
+
creator_type: 'agent',
|
|
49
|
+
collector: `${PACKAGE_IDENTIFIER}/wildcard`,
|
|
50
|
+
...(opts.thinking ? { original_output: opts.thinking } : {}),
|
|
51
|
+
...(opts.logId !== undefined ? { llm_request_log_id: opts.logId } : {}),
|
|
52
|
+
};
|
|
31
53
|
try {
|
|
32
54
|
const cfg = await loadConfig();
|
|
33
|
-
|
|
55
|
+
// resolveClient runs the full priority chain (env var, default, auto-pick, stale warning).
|
|
56
|
+
// wildcard works even without a client, so we catch NOT_CONFIGURED and proceed silently.
|
|
57
|
+
let client;
|
|
58
|
+
try {
|
|
59
|
+
client = await resolveClient(cfg, opts.clientId);
|
|
60
|
+
}
|
|
61
|
+
catch (err) {
|
|
62
|
+
// NOT_CONFIGURED is swallowed in both sub-cases:
|
|
63
|
+
// (a) no clients stored at all → proceed unauthenticated (no accounts configured)
|
|
64
|
+
// (b) clients stored but non-TTY with no default → also proceed, but the
|
|
65
|
+
// warning block below (lines 96-109) distinguishes and warns accordingly.
|
|
66
|
+
// Any other error (CLIENT_NOT_FOUND for a bad --client-id, INVALID_ARGS for a
|
|
67
|
+
// prompt timeout, etc.) propagates to the outer catch, which logs a warning and
|
|
68
|
+
// still de-loops — the recording failure surfaces but the agent is freed.
|
|
69
|
+
if (!(err instanceof CliError) || err.code !== 'NOT_CONFIGURED') {
|
|
70
|
+
throw err;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
// If COOLHAND_API_KEY is set in the environment it acts as a raw API key fallback for both
|
|
74
|
+
// sub-cases of NOT_CONFIGURED: (a) no clients stored at all — the intended zero-config agent
|
|
75
|
+
// path, and (b) clients stored but none auto-selected (non-TTY, no default). Sub-case (b)
|
|
76
|
+
// bypasses the three-way warning discriminator below and the "Client: ..." stderr label; this
|
|
77
|
+
// is intentional — wildcard is best-effort and using the env key is better than dropping the
|
|
78
|
+
// record. mcp-call explicitly does NOT allow this fallback (it surfaces the resolution error).
|
|
34
79
|
const apiKey = client?.api_key ?? process.env.COOLHAND_API_KEY;
|
|
35
80
|
const baseUrl = client?.base_url ?? DEFAULT_BASE_URL;
|
|
36
81
|
if (!apiKey) {
|
|
37
|
-
|
|
82
|
+
// No usable API key: save the blocker locally so it isn't lost. Uploads on
|
|
83
|
+
// the next `coolhand login` (or when credentials are otherwise supplied).
|
|
84
|
+
savedPath = await savePendingRecord({
|
|
85
|
+
command: 'report-blocker',
|
|
86
|
+
kind: 'feedback',
|
|
87
|
+
payload: feedback,
|
|
88
|
+
// Prefer the resolved client_id (known even for private-only clients).
|
|
89
|
+
// Fall back to opts.clientId only when no client was resolved at all.
|
|
90
|
+
...(client !== undefined
|
|
91
|
+
? { clientId: client.client_id }
|
|
92
|
+
: opts.clientId !== undefined
|
|
93
|
+
? { clientId: opts.clientId }
|
|
94
|
+
: {}),
|
|
95
|
+
savedAt: new Date().toISOString(),
|
|
96
|
+
});
|
|
97
|
+
if (client) {
|
|
98
|
+
// Client resolved but has no public API key (private-only login).
|
|
99
|
+
logger.warn(`No public API key configured for "${client.client_name}". ` +
|
|
100
|
+
`Blocker feedback saved locally to ${savedPath}. ` +
|
|
101
|
+
`Re-authenticate with 'coolhand login' to grant the public key.`);
|
|
102
|
+
}
|
|
103
|
+
else if (Object.keys(cfg.clients).length > 0) {
|
|
104
|
+
// Clients are stored but none could be auto-selected (non-TTY, no default set).
|
|
105
|
+
logger.warn(`No default client is set and auto-selection is unavailable in non-interactive mode. ` +
|
|
106
|
+
`Blocker feedback saved locally to ${savedPath}. ` +
|
|
107
|
+
`Pass --client-id or run 'coolhand clients use <id>' to enable direct posting.`);
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
// No clients configured at all.
|
|
111
|
+
logger.warn(`Not logged in; blocker feedback saved locally to ${savedPath}. ` +
|
|
112
|
+
'It will upload on your next `coolhand login`.');
|
|
113
|
+
}
|
|
38
114
|
}
|
|
39
115
|
else {
|
|
40
116
|
const coolhand = new Coolhand({ apiKey, baseUrl, silent: true });
|
|
41
|
-
// The SDK resolves to null (it does not throw) when the write fails, so a
|
|
42
|
-
// truthy response is the only proof the blocker was actually recorded.
|
|
43
|
-
const feedback = {
|
|
44
|
-
explanation: opts.complaint,
|
|
45
|
-
creator_unique_id: opts.agentName,
|
|
46
|
-
creator_type: 'agent',
|
|
47
|
-
collector: `${PACKAGE_IDENTIFIER}/wildcard`,
|
|
48
|
-
...(opts.thinking ? { original_output: opts.thinking } : {}),
|
|
49
|
-
...(opts.logId !== undefined ? { llm_request_log_id: opts.logId } : {}),
|
|
50
|
-
};
|
|
51
117
|
const result = await coolhand.createFeedback(feedback);
|
|
52
118
|
recorded = result !== null && result !== undefined;
|
|
53
119
|
if (!recorded) {
|
|
@@ -56,15 +122,47 @@ export async function run(opts) {
|
|
|
56
122
|
}
|
|
57
123
|
}
|
|
58
124
|
catch (err) {
|
|
125
|
+
// Note: errors that reach here (CLIENT_NOT_FOUND for a bad --client-id, INVALID_ARGS for a
|
|
126
|
+
// prompt timeout, SDK network errors, etc.) bypass the !apiKey branch above, so neither the
|
|
127
|
+
// env-key fallback nor the local-save path is attempted. The feedback is not persisted.
|
|
128
|
+
// This is intentional for CLIENT_NOT_FOUND: if the user named an explicit --client-id that
|
|
129
|
+
// doesn't exist, silently falling back to COOLHAND_API_KEY would be surprising. The agent
|
|
130
|
+
// is still de-looped and the failure surfaces as a warning.
|
|
131
|
+
if (err instanceof CliError && err.code === 'CLIENT_NOT_FOUND') {
|
|
132
|
+
// Bad --client-id value — not a server or auth failure; give actionable guidance.
|
|
133
|
+
deloopFallback =
|
|
134
|
+
'This capability is not available in this environment. The specified client was not found ' +
|
|
135
|
+
'(pass --client-id with a valid client ID, or run `coolhand clients` to list configured clients). ' +
|
|
136
|
+
STOP_GUIDANCE;
|
|
137
|
+
}
|
|
138
|
+
else if (err instanceof CliError && err.code === 'INVALID_ARGS') {
|
|
139
|
+
// Client selection prompt timed out or received invalid input — not a server failure.
|
|
140
|
+
deloopFallback =
|
|
141
|
+
'This capability is not available in this environment. Client selection was not completed ' +
|
|
142
|
+
'(prompt timed out or received invalid input — pass --client-id to select a client directly). ' +
|
|
143
|
+
STOP_GUIDANCE;
|
|
144
|
+
}
|
|
59
145
|
logger.warn(`Could not record blocker feedback: ${redact(err.message)}`);
|
|
60
146
|
}
|
|
61
147
|
// Always de-loop: the capability genuinely does not exist, so the agent must stop
|
|
62
148
|
// whether or not we could notify the server. Stay honest about the recording status
|
|
63
149
|
// (warnings above already surfaced any failure) rather than gating the stop-signal
|
|
64
150
|
// on a confirmed write and leaving a logged-out agent stuck.
|
|
65
|
-
|
|
151
|
+
let message;
|
|
152
|
+
if (recorded) {
|
|
153
|
+
message = DELOOP_RECORDED;
|
|
154
|
+
}
|
|
155
|
+
else if (savedPath) {
|
|
156
|
+
message = DELOOP_SAVED;
|
|
157
|
+
}
|
|
158
|
+
else if (deloopFallback) {
|
|
159
|
+
message = deloopFallback;
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
message = DELOOP_UNRECORDED;
|
|
163
|
+
}
|
|
66
164
|
if (opts.json === true) {
|
|
67
|
-
logger.json({ ok: true, recorded, message });
|
|
165
|
+
logger.json({ ok: true, recorded, saved: savedPath ?? null, message });
|
|
68
166
|
}
|
|
69
167
|
else {
|
|
70
168
|
logger.info(message);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wildcard.js","sourceRoot":"","sources":["../../src/commands/wildcard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAA8B,MAAM,eAAe,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"wildcard.js","sourceRoot":"","sources":["../../src/commands/wildcard.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -2,10 +2,26 @@ import type { ClientEntry, ConfigFile } from './types.js';
|
|
|
2
2
|
export declare function configDir(): string;
|
|
3
3
|
export declare function configPath(): string;
|
|
4
4
|
export declare function loadConfig(): Promise<ConfigFile>;
|
|
5
|
+
/**
|
|
6
|
+
* Write a file atomically with restrictive permissions: write to a temp file in the
|
|
7
|
+
* same directory, then rename it into place (rename is atomic on POSIX), so a reader
|
|
8
|
+
* never sees a half-written file. The caller is responsible for ensuring the parent
|
|
9
|
+
* directory exists. Shared by `saveConfig` and the pending-record store.
|
|
10
|
+
*/
|
|
11
|
+
export declare function atomicWriteFile(filePath: string, data: string, mode?: number): Promise<void>;
|
|
5
12
|
export declare function saveConfig(cfg: ConfigFile): Promise<void>;
|
|
6
13
|
export declare function deleteConfig(): Promise<void>;
|
|
7
14
|
export declare function getClient(cfg: ConfigFile, clientId?: string): ClientEntry | undefined;
|
|
8
15
|
export declare function upsertClient(entry: ClientEntry, makeDefault?: boolean): Promise<ConfigFile>;
|
|
9
16
|
export declare function removeClient(clientId: string): Promise<ConfigFile | null>;
|
|
10
17
|
export declare function setDefault(clientId: string): Promise<ConfigFile>;
|
|
18
|
+
/**
|
|
19
|
+
* Resolves which client to use for an API command. Priority:
|
|
20
|
+
* explicit clientId arg > COOLHAND_CLIENT_ID env > default_client_id config >
|
|
21
|
+
* auto-pick if only one client exists > interactive prompt (TTY) or error.
|
|
22
|
+
*
|
|
23
|
+
* Prints "Client: <name> (<id>)" to stderr after resolution so the user always
|
|
24
|
+
* knows which account's data they are looking at.
|
|
25
|
+
*/
|
|
26
|
+
export declare function resolveClient(cfg: ConfigFile, clientId?: string): Promise<ClientEntry>;
|
|
11
27
|
//# sourceMappingURL=config.d.ts.map
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAM1D,wBAAgB,SAAS,IAAI,MAAM,CAMlC;AAED,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAMD,wBAAsB,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,CAyBtD;AAWD;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,MAAkB,GACvB,OAAO,CAAC,IAAI,CAAC,CAef;AAED,wBAAsB,UAAU,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAI/D;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAMlD;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAMrF;AAED,wBAAsB,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,UAAO,GAAG,OAAO,CAAC,UAAU,CAAC,CAQ9F;AAED,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAgB/E;AAED,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAQtE;AA2CD;;;;;;;GAOG;AACH,wBAAsB,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAyE5F"}
|