zelari-code 0.4.3 → 0.7.5
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 +42 -0
- package/bin/zelari-code.js +1 -1
- package/dist/agents/councilApi.js +7 -7
- package/dist/agents/councilApi.js.map +1 -1
- package/dist/agents/councilDirectives.js +3 -3
- package/dist/agents/promoteMember.js +2 -2
- package/dist/agents/roles.js +50 -32
- package/dist/agents/roles.js.map +1 -1
- package/dist/agents/skills/builtin/debugging.js +4 -4
- package/dist/agents/skills/builtin/debugging.js.map +1 -1
- package/dist/agents/skills/builtin/docs.js +23 -13
- package/dist/agents/skills/builtin/docs.js.map +1 -1
- package/dist/agents/skills/builtin/git-ops.js +3 -3
- package/dist/agents/skills/builtin/git-ops.js.map +1 -1
- package/dist/agents/skills/builtin/planning.js +4 -4
- package/dist/agents/skills/builtin/planning.js.map +1 -1
- package/dist/agents/skills/builtin/refactoring.js +3 -3
- package/dist/agents/skills/builtin/refactoring.js.map +1 -1
- package/dist/agents/skills/builtin/review.js +9 -9
- package/dist/agents/skills/builtin/review.js.map +1 -1
- package/dist/agents/skills/builtin/testing.js +3 -3
- package/dist/agents/skills/builtin/testing.js.map +1 -1
- package/dist/agents/tools.js +2 -9
- package/dist/agents/tools.js.map +1 -1
- package/dist/cli/app.js +72 -33
- package/dist/cli/app.js.map +1 -1
- package/dist/cli/compaction.js.map +1 -1
- package/dist/cli/components/ChatStream.js +43 -82
- package/dist/cli/components/ChatStream.js.map +1 -1
- package/dist/cli/components/CollapsibleToolOutput.js +8 -21
- package/dist/cli/components/CollapsibleToolOutput.js.map +1 -1
- package/dist/cli/components/Header.js +6 -18
- package/dist/cli/components/Header.js.map +1 -1
- package/dist/cli/components/LiveRegion.js +54 -0
- package/dist/cli/components/LiveRegion.js.map +1 -0
- package/dist/cli/components/Sidebar.js +33 -31
- package/dist/cli/components/Sidebar.js.map +1 -1
- package/dist/cli/components/StatusBar.js +42 -0
- package/dist/cli/components/StatusBar.js.map +1 -0
- package/dist/cli/components/ToolOutput.js +68 -0
- package/dist/cli/components/ToolOutput.js.map +1 -0
- package/dist/cli/components/toolFormat.js +195 -0
- package/dist/cli/components/toolFormat.js.map +1 -0
- package/dist/cli/councilDispatcher.js +1 -1
- package/dist/cli/councilDispatcher.js.map +1 -1
- package/dist/cli/grokOAuth.js +93 -75
- package/dist/cli/grokOAuth.js.map +1 -1
- package/dist/cli/headless.js +137 -0
- package/dist/cli/headless.js.map +1 -0
- package/dist/cli/hooks/chatState.js +139 -0
- package/dist/cli/hooks/chatState.js.map +1 -0
- package/dist/cli/hooks/eventsToMessages.js +42 -11
- package/dist/cli/hooks/eventsToMessages.js.map +1 -1
- package/dist/cli/hooks/messageHelpers.js +72 -15
- package/dist/cli/hooks/messageHelpers.js.map +1 -1
- package/dist/cli/hooks/useBatchedMessages.js +71 -0
- package/dist/cli/hooks/useBatchedMessages.js.map +1 -0
- package/dist/cli/hooks/useChatTurn.js +453 -84
- package/dist/cli/hooks/useChatTurn.js.map +1 -1
- package/dist/cli/hooks/useSession.js +24 -3
- package/dist/cli/hooks/useSession.js.map +1 -1
- package/dist/cli/hooks/useSlashDispatch.js +13 -2
- package/dist/cli/hooks/useSlashDispatch.js.map +1 -1
- package/dist/cli/main.bundled.js +10607 -7889
- package/dist/cli/main.bundled.js.map +4 -4
- package/dist/cli/main.js +120 -2
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/mcp/mcpClient.js +152 -0
- package/dist/cli/mcp/mcpClient.js.map +1 -0
- package/dist/cli/mcp/mcpManager.js +139 -0
- package/dist/cli/mcp/mcpManager.js.map +1 -0
- package/dist/cli/provider/openai-compatible.js +9 -2
- package/dist/cli/provider/openai-compatible.js.map +1 -1
- package/dist/cli/refreshRegistry.js +9 -6
- package/dist/cli/refreshRegistry.js.map +1 -1
- package/dist/cli/runHeadless.js +160 -0
- package/dist/cli/runHeadless.js.map +1 -0
- package/dist/cli/sessionManager.js +1 -1
- package/dist/cli/sessionManager.js.map +1 -1
- package/dist/cli/skillSuggest.js +1 -1
- package/dist/cli/skillsMd.js +155 -0
- package/dist/cli/skillsMd.js.map +1 -0
- package/dist/cli/slashHandlers/branch.js +11 -2
- package/dist/cli/slashHandlers/branch.js.map +1 -1
- package/dist/cli/slashHandlers/git.js +0 -75
- package/dist/cli/slashHandlers/git.js.map +1 -1
- package/dist/cli/slashHandlers/promoteMember.js +25 -0
- package/dist/cli/slashHandlers/promoteMember.js.map +1 -0
- package/dist/cli/slashHandlers/skills.js +16 -0
- package/dist/cli/slashHandlers/skills.js.map +1 -1
- package/dist/cli/slashHandlers/transcript.js +13 -0
- package/dist/cli/slashHandlers/transcript.js.map +1 -0
- package/dist/cli/slashHandlers/updater.js +40 -0
- package/dist/cli/slashHandlers/updater.js.map +1 -0
- package/dist/cli/toolRegistry.js +37 -6
- package/dist/cli/toolRegistry.js.map +1 -1
- package/dist/cli/wizard/firstRun.js +63 -0
- package/dist/cli/wizard/firstRun.js.map +1 -0
- package/dist/cli/wizard/index.js +150 -0
- package/dist/cli/wizard/index.js.map +1 -0
- package/dist/cli/wizard/runWizard.js +137 -0
- package/dist/cli/wizard/runWizard.js.map +1 -0
- package/dist/cli/wizard/useWizardState.js +151 -0
- package/dist/cli/wizard/useWizardState.js.map +1 -0
- package/dist/cli/workspace/paths.js +20 -13
- package/dist/cli/workspace/paths.js.map +1 -1
- package/dist/cli/workspace/storage.js +7 -3
- package/dist/cli/workspace/storage.js.map +1 -1
- package/dist/cli/workspace/stubs.js +122 -44
- package/dist/cli/workspace/stubs.js.map +1 -1
- package/dist/cli/workspace/toolRegistry.js +2 -2
- package/dist/cli/workspace/toolRegistry.js.map +1 -1
- package/dist/cli/workspace/workspaceSummary.js +255 -0
- package/dist/cli/workspace/workspaceSummary.js.map +1 -0
- package/dist/main/core/AgentHarness.js +36 -7
- package/dist/main/core/AgentHarness.js.map +1 -1
- package/dist/main/core/tools/builtin/listFiles.js +43 -5
- package/dist/main/core/tools/builtin/listFiles.js.map +1 -1
- package/dist/main/core/tools/builtin/search.js +28 -120
- package/dist/main/core/tools/builtin/search.js.map +1 -1
- package/package.json +6 -1
- package/dist/cli/oauthCallbackServer.js +0 -207
- package/dist/cli/oauthCallbackServer.js.map +0 -1
- package/dist/main/core/tools/builtin/_walk.js +0 -129
- package/dist/main/core/tools/builtin/_walk.js.map +0 -1
- package/dist/main/core/tools/builtin/diff.js +0 -477
- package/dist/main/core/tools/builtin/diff.js.map +0 -1
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* toolFormat.ts — v0.7.1 pure formatters for tool rendering (plan B1+B2+B3).
|
|
3
|
+
*
|
|
4
|
+
* The v0.6/v0.7.0 renderer dumped the raw JSON result envelope into a bordered
|
|
5
|
+
* box: escaped `\n`, full-terminal-width borders with inconsistent widths per
|
|
6
|
+
* box, and summary lines that were raw JSON args truncated mid-string. These
|
|
7
|
+
* pure functions replace that with human-readable output keyed by tool name.
|
|
8
|
+
*
|
|
9
|
+
* Two formatters:
|
|
10
|
+
* - {@link formatToolSummary}: the one-line summary (replaces raw-JSON args).
|
|
11
|
+
* - {@link formatToolResult}: the multi-line body (replaces the raw envelope).
|
|
12
|
+
*
|
|
13
|
+
* Both are pure (no React, no Ink) so they are trivially unit-testable and
|
|
14
|
+
* usable by any renderer (the current ToolOutput, the Static path, /last-tool).
|
|
15
|
+
*
|
|
16
|
+
* Truncation is line-based (default 8, `ZELARI_TOOL_OUTPUT_LINES`) with a
|
|
17
|
+
* `… (+K lines)` tail, replacing the 600-char mid-string cut that split JSON
|
|
18
|
+
* strings awkwardly.
|
|
19
|
+
*/
|
|
20
|
+
import path from 'node:path';
|
|
21
|
+
/** Default line cap for the printed result body. */
|
|
22
|
+
const DEFAULT_TOOL_OUTPUT_LINES = 8;
|
|
23
|
+
function toolOutputLineCap() {
|
|
24
|
+
const raw = process.env.ZELARI_TOOL_OUTPUT_LINES;
|
|
25
|
+
const n = raw ? Number.parseInt(raw, 10) : DEFAULT_TOOL_OUTPUT_LINES;
|
|
26
|
+
return Number.isFinite(n) && n >= 0 ? n : DEFAULT_TOOL_OUTPUT_LINES;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Best-effort JSON parse. Returns the parsed value or `null` (caller falls
|
|
30
|
+
* back to treating the input as a plain string).
|
|
31
|
+
*/
|
|
32
|
+
function tryParseJson(s) {
|
|
33
|
+
try {
|
|
34
|
+
return JSON.parse(s);
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
/** Truncate an array of lines to the cap, appending a `… (+K lines)` marker. */
|
|
41
|
+
function truncateLines(lines) {
|
|
42
|
+
const cap = toolOutputLineCap();
|
|
43
|
+
if (lines.length <= cap)
|
|
44
|
+
return lines;
|
|
45
|
+
return [...lines.slice(0, cap), `… (+${lines.length - cap} lines)`];
|
|
46
|
+
}
|
|
47
|
+
/** Human-readable byte size (KB / MB). */
|
|
48
|
+
function formatBytes(n) {
|
|
49
|
+
if (n >= 1024 * 1024)
|
|
50
|
+
return `${(n / (1024 * 1024)).toFixed(1)} MB`;
|
|
51
|
+
if (n >= 1024)
|
|
52
|
+
return `${(n / 1024).toFixed(1)} KB`;
|
|
53
|
+
return `${n} B`;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Format the body of a tool result for display.
|
|
57
|
+
*
|
|
58
|
+
* @param toolName tool name (determines the per-tool shape handling)
|
|
59
|
+
* @param resultStr the raw result string (JSON envelope from the harness, or
|
|
60
|
+
* a plain string for non-JSON tools / errors)
|
|
61
|
+
*/
|
|
62
|
+
export function formatToolResult(toolName, resultStr) {
|
|
63
|
+
const lower = toolName.toLowerCase();
|
|
64
|
+
// bash / shell — envelope: { stdout, stderr, exitCode, hint? }
|
|
65
|
+
if (lower === 'bash' || lower === 'shell' || lower === 'exec') {
|
|
66
|
+
const parsed = tryParseJson(resultStr);
|
|
67
|
+
if (parsed && typeof parsed === 'object') {
|
|
68
|
+
const stdout = parsed.stdout ?? '';
|
|
69
|
+
const lines = stdout.length > 0 ? stdout.replace(/\r\n/g, '\n').split('\n') : [];
|
|
70
|
+
const metaParts = [];
|
|
71
|
+
if (parsed.stderr && parsed.stderr.trim().length > 0) {
|
|
72
|
+
metaParts.push(`stderr: ${parsed.stderr.trim().split('\n')[0]}`);
|
|
73
|
+
}
|
|
74
|
+
if (typeof parsed.exitCode === 'number' && parsed.exitCode !== 0) {
|
|
75
|
+
metaParts.push(`exit ${parsed.exitCode}`);
|
|
76
|
+
}
|
|
77
|
+
// v0.7.3: interactive-prompt detection (see shell.ts INTERACTIVE_HINT).
|
|
78
|
+
if (typeof parsed.hint === 'string' && parsed.hint.length > 0) {
|
|
79
|
+
metaParts.push('⚠ interactive prompt cancelled — needs non-interactive flags or manual file creation');
|
|
80
|
+
}
|
|
81
|
+
return {
|
|
82
|
+
lines: truncateLines(lines),
|
|
83
|
+
meta: metaParts.length > 0 ? metaParts.join(' · ') : undefined,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
// read_file — envelope: { path, content, ... }
|
|
88
|
+
if (lower.includes('read') || lower === 'cat') {
|
|
89
|
+
const parsed = tryParseJson(resultStr);
|
|
90
|
+
if (parsed && typeof parsed === 'object' && typeof parsed.content === 'string') {
|
|
91
|
+
return { lines: truncateLines(parsed.content.replace(/\r\n/g, '\n').split('\n')) };
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
// write_file / edit_file — success is a single line, no box (B3).
|
|
95
|
+
if (lower.includes('write') || lower.includes('edit')) {
|
|
96
|
+
const parsed = tryParseJson(resultStr);
|
|
97
|
+
if (parsed && typeof parsed === 'object') {
|
|
98
|
+
const p = parsed.path ? rel(parsed.path) : '';
|
|
99
|
+
if (typeof parsed.bytesWritten === 'number') {
|
|
100
|
+
return { lines: [`wrote ${formatBytes(parsed.bytesWritten)} → ${p}`], oneLine: true };
|
|
101
|
+
}
|
|
102
|
+
if (typeof parsed.occurrencesReplaced === 'number') {
|
|
103
|
+
return {
|
|
104
|
+
lines: [`replaced ${parsed.occurrencesReplaced} occurrence(s) in ${p}`],
|
|
105
|
+
oneLine: true,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
// list_files — envelope: { dir, entries: [{name, type}], truncated }
|
|
111
|
+
if (lower.includes('list') || lower.includes('ls')) {
|
|
112
|
+
const parsed = tryParseJson(resultStr);
|
|
113
|
+
if (parsed && Array.isArray(parsed.entries)) {
|
|
114
|
+
const names = parsed.entries.slice(0, 10).map((e) => e.name);
|
|
115
|
+
const head = truncateLines(names);
|
|
116
|
+
const count = parsed.entries.length;
|
|
117
|
+
const dir = parsed.dir ? rel(parsed.dir) : '';
|
|
118
|
+
const metaParts = [];
|
|
119
|
+
if (dir)
|
|
120
|
+
metaParts.push(`${count} entries in ${dir}`);
|
|
121
|
+
else
|
|
122
|
+
metaParts.push(`${count} entries`);
|
|
123
|
+
if (parsed.truncated)
|
|
124
|
+
metaParts.push(`(truncated)`);
|
|
125
|
+
return { lines: head, meta: metaParts.join(' ') };
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
// grep_content / search — envelope: { matches/results: [...] }
|
|
129
|
+
if (lower.includes('grep') || lower.includes('search')) {
|
|
130
|
+
const parsed = tryParseJson(resultStr);
|
|
131
|
+
const arr = parsed?.matches ?? parsed?.results;
|
|
132
|
+
if (Array.isArray(arr)) {
|
|
133
|
+
return {
|
|
134
|
+
lines: truncateLines(arr.map((m) => (typeof m === 'string' ? m : JSON.stringify(m)))),
|
|
135
|
+
meta: `${arr.length} match(es)`,
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
// Fallback: treat as plain text (split on real newlines; if it's JSON we
|
|
140
|
+
// already failed to match a known shape, so show it verbatim).
|
|
141
|
+
return { lines: truncateLines(resultStr.replace(/\r\n/g, '\n').split('\n')) };
|
|
142
|
+
}
|
|
143
|
+
/** Make a path relative to cwd when possible (shorter display). */
|
|
144
|
+
function rel(p) {
|
|
145
|
+
try {
|
|
146
|
+
const r = path.relative(process.cwd(), p);
|
|
147
|
+
return r && !r.startsWith('..') ? r : p;
|
|
148
|
+
}
|
|
149
|
+
catch {
|
|
150
|
+
return p;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Format the one-line summary for a tool invocation (replaces raw-JSON args).
|
|
155
|
+
*
|
|
156
|
+
* @param toolName tool name
|
|
157
|
+
* @param args the args object/value as received from the model
|
|
158
|
+
* @param maxWidth optional column cap; the summary is truncated (with `…`) to
|
|
159
|
+
* fit so it never wraps mid-token. When omitted, a sane default
|
|
160
|
+
* is applied.
|
|
161
|
+
*/
|
|
162
|
+
export function formatToolSummary(toolName, args, maxWidth) {
|
|
163
|
+
const cap = maxWidth && maxWidth > 10 ? maxWidth : 100;
|
|
164
|
+
const lower = toolName.toLowerCase();
|
|
165
|
+
const a = (args && typeof args === 'object' ? args : {});
|
|
166
|
+
let summary;
|
|
167
|
+
if (lower === 'bash' || lower === 'shell' || lower === 'exec') {
|
|
168
|
+
summary = String(a['command'] ?? a['cmd'] ?? '');
|
|
169
|
+
}
|
|
170
|
+
else if (lower.includes('read') || lower === 'cat') {
|
|
171
|
+
summary = typeof a['path'] === 'string' ? rel(a['path']) : '';
|
|
172
|
+
}
|
|
173
|
+
else if (lower.includes('write') || lower.includes('edit')) {
|
|
174
|
+
const p = typeof a['path'] === 'string' ? rel(a['path']) : '';
|
|
175
|
+
summary = p;
|
|
176
|
+
}
|
|
177
|
+
else if (lower.includes('list') || lower.includes('ls')) {
|
|
178
|
+
const dir = typeof a['dir'] === 'string' ? rel(a['dir']) : '.';
|
|
179
|
+
const depth = typeof a['maxDepth'] === 'number' ? ` (depth ${a['maxDepth']})` : '';
|
|
180
|
+
summary = `${dir}${depth}`;
|
|
181
|
+
}
|
|
182
|
+
else if (lower.includes('grep') || lower.includes('search')) {
|
|
183
|
+
const pattern = String(a['pattern'] ?? a['query'] ?? '');
|
|
184
|
+
const p = typeof a['path'] === 'string' ? ` in ${rel(a['path'])}` : '';
|
|
185
|
+
summary = `${pattern}${p}`;
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
// Fallback: compact JSON, but truncated at the column cap (not mid-string
|
|
189
|
+
// like the old slice(0,120) which cut content values arbitrarily).
|
|
190
|
+
const json = JSON.stringify(args) ?? '';
|
|
191
|
+
summary = json;
|
|
192
|
+
}
|
|
193
|
+
return summary.length > cap ? `${summary.slice(0, cap - 1)}…` : summary;
|
|
194
|
+
}
|
|
195
|
+
//# sourceMappingURL=toolFormat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toolFormat.js","sourceRoot":"","sources":["../../../src/cli/components/toolFormat.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
*
|
|
16
16
|
* @see docs/plans/2026-06-28-zelari-code.md (Task 14.7)
|
|
17
17
|
*/
|
|
18
|
-
import { runCouncilPure, } from '
|
|
18
|
+
import { runCouncilPure, } from '@zelari/core/council';
|
|
19
19
|
import { createWorkspaceContext } from './workspace/stubs.js';
|
|
20
20
|
import { createWorkspaceToolRegistry } from './workspace/toolRegistry.js';
|
|
21
21
|
export class CouncilDispatchError extends Error {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"councilDispatcher.js","sourceRoot":"","sources":["../../src/cli/councilDispatcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EACL,cAAc,GAEf,MAAM,
|
|
1
|
+
{"version":3,"file":"councilDispatcher.js","sourceRoot":"","sources":["../../src/cli/councilDispatcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EACL,cAAc,GAEf,MAAM,sBAAsB,CAAC;AAM9B,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAoD1E,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAC7C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,eAAe,CACpC,WAAmB,EACnB,OAA+B;IAE/B,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1D,MAAM,IAAI,oBAAoB,CAC5B,oFAAoF,CACrF,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,oBAAoB,CAAC,0DAA0D,CAAC,CAAC;IAC7F,CAAC;IAED,MAAM,MAAM,GAAsB;QAChC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,mBAAmB;QACjD,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,CAAC;QACrC,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,KAAK;QACvC,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,EAAE;QACpC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,IAAI,EAAE;QAChD,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,gEAAgE;QAChE,mEAAmE;QACnE,4CAA4C;QAC5C,KAAK,EAAE,OAAO,CAAC,KAAK;eACf,CAAC,OAAO,CAAC,qBAAqB;gBAC/B,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,2BAA2B,CAAC,sBAAsB,EAAE,CAAC,CAAC;QAC5D,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;QAChD,aAAa,EAAE,OAAO,CAAC,aAAa;KACrC,CAAC;IAEF,KAAK,CAAC,CAAC,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;AACjD,CAAC"}
|
package/dist/cli/grokOAuth.js
CHANGED
|
@@ -32,29 +32,29 @@ export class GrokOAuthError extends Error {
|
|
|
32
32
|
constructor(message, code) {
|
|
33
33
|
super(message);
|
|
34
34
|
this.code = code;
|
|
35
|
-
this.name =
|
|
35
|
+
this.name = "GrokOAuthError";
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
38
|
/**
|
|
39
39
|
* Default xAI OAuth client ID — public client registered for SuperGrok OAuth
|
|
40
40
|
* (same as used by the reference supergrok-oauth Python client + Grok-CLI).
|
|
41
41
|
*/
|
|
42
|
-
export const DEFAULT_GROK_OAUTH_CLIENT_ID =
|
|
42
|
+
export const DEFAULT_GROK_OAUTH_CLIENT_ID = "b1a00492-073a-47ea-816f-4c329264a828";
|
|
43
43
|
/** Default OAuth scopes for full SuperGrok access. */
|
|
44
44
|
export const DEFAULT_GROK_OAUTH_SCOPES = [
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
45
|
+
"openid",
|
|
46
|
+
"profile",
|
|
47
|
+
"email",
|
|
48
|
+
"offline_access",
|
|
49
|
+
"grok-cli:access",
|
|
50
|
+
"api:access",
|
|
51
51
|
];
|
|
52
52
|
/** Default device-code endpoint. */
|
|
53
|
-
export const DEFAULT_DEVICE_CODE_ENDPOINT =
|
|
53
|
+
export const DEFAULT_DEVICE_CODE_ENDPOINT = "https://auth.x.ai/oauth2/device/code";
|
|
54
54
|
/** Default token endpoint (shared by device poll + refresh). */
|
|
55
|
-
export const DEFAULT_TOKEN_ENDPOINT =
|
|
55
|
+
export const DEFAULT_TOKEN_ENDPOINT = "https://auth.x.ai/oauth2/token";
|
|
56
56
|
/** Device-code grant type URN (RFC 8628). */
|
|
57
|
-
export const DEVICE_GRANT_TYPE =
|
|
57
|
+
export const DEVICE_GRANT_TYPE = "urn:ietf:params:oauth:grant-type:device_code";
|
|
58
58
|
/** Default overall authorization timeout (5 minutes). */
|
|
59
59
|
export const DEFAULT_OAUTH_TIMEOUT_MS = 300_000;
|
|
60
60
|
const defaultSleep = (ms) => new Promise((r) => setTimeout(r, ms));
|
|
@@ -71,22 +71,22 @@ export async function requestDeviceCode(options) {
|
|
|
71
71
|
let response;
|
|
72
72
|
try {
|
|
73
73
|
response = await fetchImpl(endpoint, {
|
|
74
|
-
method:
|
|
74
|
+
method: "POST",
|
|
75
75
|
headers: {
|
|
76
|
-
|
|
77
|
-
Accept:
|
|
76
|
+
"Content-Type": "application/x-www-form-urlencoded",
|
|
77
|
+
Accept: "application/json",
|
|
78
78
|
},
|
|
79
79
|
body: new URLSearchParams({
|
|
80
80
|
client_id: options.clientId,
|
|
81
|
-
scope: scopes.join(
|
|
81
|
+
scope: scopes.join(" "),
|
|
82
82
|
}).toString(),
|
|
83
83
|
});
|
|
84
84
|
}
|
|
85
85
|
catch (err) {
|
|
86
|
-
throw new GrokOAuthError(`Device code request network error: ${err instanceof Error ? err.message : String(err)}`,
|
|
86
|
+
throw new GrokOAuthError(`Device code request network error: ${err instanceof Error ? err.message : String(err)}`, "device_code_network_error");
|
|
87
87
|
}
|
|
88
88
|
if (!response.ok) {
|
|
89
|
-
const errText = await response.text().catch(() =>
|
|
89
|
+
const errText = await response.text().catch(() => "");
|
|
90
90
|
throw new GrokOAuthError(`Device code request HTTP ${response.status}: ${errText.slice(0, 200)}`, `device_code_http_${response.status}`);
|
|
91
91
|
}
|
|
92
92
|
let body;
|
|
@@ -96,31 +96,36 @@ export async function requestDeviceCode(options) {
|
|
|
96
96
|
catch (err) {
|
|
97
97
|
throw new GrokOAuthError(`Device code response invalid JSON: ${err instanceof Error ? err.message : String(err)}`);
|
|
98
98
|
}
|
|
99
|
-
if (!body || typeof body !==
|
|
100
|
-
throw new GrokOAuthError(
|
|
99
|
+
if (!body || typeof body !== "object") {
|
|
100
|
+
throw new GrokOAuthError("Device code response is not an object");
|
|
101
101
|
}
|
|
102
102
|
const obj = body;
|
|
103
103
|
const deviceCode = obj.device_code;
|
|
104
104
|
const userCode = obj.user_code;
|
|
105
105
|
const verificationUri = obj.verification_uri;
|
|
106
|
-
if (typeof deviceCode !==
|
|
107
|
-
throw new GrokOAuthError(
|
|
106
|
+
if (typeof deviceCode !== "string" || deviceCode.length === 0) {
|
|
107
|
+
throw new GrokOAuthError("Device code response missing device_code", "no_device_code");
|
|
108
108
|
}
|
|
109
|
-
if (typeof userCode !==
|
|
110
|
-
throw new GrokOAuthError(
|
|
109
|
+
if (typeof userCode !== "string" || userCode.length === 0) {
|
|
110
|
+
throw new GrokOAuthError("Device code response missing user_code", "no_user_code");
|
|
111
111
|
}
|
|
112
|
-
if (typeof verificationUri !==
|
|
113
|
-
throw new GrokOAuthError(
|
|
112
|
+
if (typeof verificationUri !== "string" || verificationUri.length === 0) {
|
|
113
|
+
throw new GrokOAuthError("Device code response missing verification_uri", "no_verification_uri");
|
|
114
114
|
}
|
|
115
115
|
return {
|
|
116
116
|
deviceCode,
|
|
117
117
|
userCode,
|
|
118
118
|
verificationUri,
|
|
119
|
-
...(typeof obj.verification_uri_complete ===
|
|
119
|
+
...(typeof obj.verification_uri_complete === "string" &&
|
|
120
|
+
obj.verification_uri_complete.length > 0
|
|
120
121
|
? { verificationUriComplete: obj.verification_uri_complete }
|
|
121
122
|
: {}),
|
|
122
|
-
expiresIn: typeof obj.expires_in ===
|
|
123
|
-
|
|
123
|
+
expiresIn: typeof obj.expires_in === "number" && Number.isFinite(obj.expires_in)
|
|
124
|
+
? obj.expires_in
|
|
125
|
+
: 1800,
|
|
126
|
+
interval: typeof obj.interval === "number" && Number.isFinite(obj.interval)
|
|
127
|
+
? obj.interval
|
|
128
|
+
: 5,
|
|
124
129
|
};
|
|
125
130
|
}
|
|
126
131
|
/**
|
|
@@ -129,13 +134,14 @@ export async function requestDeviceCode(options) {
|
|
|
129
134
|
*/
|
|
130
135
|
function parseTokenResponseBody(obj, accessToken) {
|
|
131
136
|
const result = { accessToken };
|
|
132
|
-
if (typeof obj.expires_in ===
|
|
137
|
+
if (typeof obj.expires_in === "number" && Number.isFinite(obj.expires_in)) {
|
|
133
138
|
result.expiresAt = Date.now() + obj.expires_in * 1000;
|
|
134
139
|
}
|
|
135
|
-
if (typeof obj.refresh_token ===
|
|
140
|
+
if (typeof obj.refresh_token === "string" && obj.refresh_token.length > 0) {
|
|
136
141
|
result.refreshToken = obj.refresh_token;
|
|
137
142
|
}
|
|
138
|
-
if (typeof obj.refresh_token_expires_in ===
|
|
143
|
+
if (typeof obj.refresh_token_expires_in === "number" &&
|
|
144
|
+
Number.isFinite(obj.refresh_token_expires_in)) {
|
|
139
145
|
result.refreshExpiresAt = Date.now() + obj.refresh_token_expires_in * 1000;
|
|
140
146
|
}
|
|
141
147
|
return result;
|
|
@@ -160,15 +166,15 @@ export async function pollForDeviceToken(options) {
|
|
|
160
166
|
// eslint-disable-next-line no-constant-condition
|
|
161
167
|
while (true) {
|
|
162
168
|
if (Date.now() >= deadline) {
|
|
163
|
-
throw new GrokOAuthError(
|
|
169
|
+
throw new GrokOAuthError("Device authorization timed out waiting for user approval", "timeout");
|
|
164
170
|
}
|
|
165
171
|
let response;
|
|
166
172
|
try {
|
|
167
173
|
response = await fetchImpl(endpoint, {
|
|
168
|
-
method:
|
|
174
|
+
method: "POST",
|
|
169
175
|
headers: {
|
|
170
|
-
|
|
171
|
-
Accept:
|
|
176
|
+
"Content-Type": "application/x-www-form-urlencoded",
|
|
177
|
+
Accept: "application/json",
|
|
172
178
|
},
|
|
173
179
|
body: new URLSearchParams({
|
|
174
180
|
grant_type: DEVICE_GRANT_TYPE,
|
|
@@ -178,7 +184,7 @@ export async function pollForDeviceToken(options) {
|
|
|
178
184
|
});
|
|
179
185
|
}
|
|
180
186
|
catch (err) {
|
|
181
|
-
throw new GrokOAuthError(`Token poll network error: ${err instanceof Error ? err.message : String(err)}`,
|
|
187
|
+
throw new GrokOAuthError(`Token poll network error: ${err instanceof Error ? err.message : String(err)}`, "poll_network_error");
|
|
182
188
|
}
|
|
183
189
|
// Success: 200 with access_token.
|
|
184
190
|
if (response.ok) {
|
|
@@ -189,13 +195,13 @@ export async function pollForDeviceToken(options) {
|
|
|
189
195
|
catch (err) {
|
|
190
196
|
throw new GrokOAuthError(`Token response invalid JSON: ${err instanceof Error ? err.message : String(err)}`);
|
|
191
197
|
}
|
|
192
|
-
if (!body || typeof body !==
|
|
193
|
-
throw new GrokOAuthError(
|
|
198
|
+
if (!body || typeof body !== "object") {
|
|
199
|
+
throw new GrokOAuthError("Token response is not an object");
|
|
194
200
|
}
|
|
195
201
|
const obj = body;
|
|
196
202
|
const accessToken = obj.access_token;
|
|
197
|
-
if (typeof accessToken !==
|
|
198
|
-
throw new GrokOAuthError(
|
|
203
|
+
if (typeof accessToken !== "string" || accessToken.length === 0) {
|
|
204
|
+
throw new GrokOAuthError("Token response missing access_token", "no_access_token");
|
|
199
205
|
}
|
|
200
206
|
return parseTokenResponseBody(obj, accessToken);
|
|
201
207
|
}
|
|
@@ -203,33 +209,35 @@ export async function pollForDeviceToken(options) {
|
|
|
203
209
|
let errBody = {};
|
|
204
210
|
try {
|
|
205
211
|
const parsed = await response.json();
|
|
206
|
-
if (parsed && typeof parsed ===
|
|
212
|
+
if (parsed && typeof parsed === "object")
|
|
207
213
|
errBody = parsed;
|
|
208
214
|
}
|
|
209
215
|
catch {
|
|
210
216
|
// Non-JSON error body — treat as transient and keep polling unless 4xx is definitive.
|
|
211
217
|
}
|
|
212
|
-
const errorCode = typeof errBody.error ===
|
|
218
|
+
const errorCode = typeof errBody.error === "string"
|
|
219
|
+
? errBody.error
|
|
220
|
+
: `http_${response.status}`;
|
|
213
221
|
switch (errorCode) {
|
|
214
|
-
case
|
|
222
|
+
case "authorization_pending":
|
|
215
223
|
await sleep(interval * 1000);
|
|
216
224
|
continue;
|
|
217
|
-
case
|
|
225
|
+
case "slow_down":
|
|
218
226
|
// RFC 8628 §3.5: increase the interval by 5 seconds.
|
|
219
227
|
interval += 5;
|
|
220
228
|
await sleep(interval * 1000);
|
|
221
229
|
continue;
|
|
222
|
-
case
|
|
223
|
-
case
|
|
224
|
-
throw new GrokOAuthError(
|
|
225
|
-
case
|
|
226
|
-
case
|
|
227
|
-
throw new GrokOAuthError(
|
|
228
|
-
case
|
|
229
|
-
throw new GrokOAuthError(
|
|
230
|
+
case "expired_token":
|
|
231
|
+
case "expired":
|
|
232
|
+
throw new GrokOAuthError("Device code expired before user authorized", "expired");
|
|
233
|
+
case "access_denied":
|
|
234
|
+
case "denied":
|
|
235
|
+
throw new GrokOAuthError("User denied the authorization request", "denied");
|
|
236
|
+
case "invalid_grant":
|
|
237
|
+
throw new GrokOAuthError("Device code rejected (invalid_grant)", "invalid_grant");
|
|
230
238
|
default:
|
|
231
239
|
// Unknown error — surface it rather than polling forever.
|
|
232
|
-
throw new GrokOAuthError(`Token poll error: ${errorCode}${typeof errBody.error_description ===
|
|
240
|
+
throw new GrokOAuthError(`Token poll error: ${errorCode}${typeof errBody.error_description === "string" ? ` — ${errBody.error_description}` : ""}`, errorCode);
|
|
233
241
|
}
|
|
234
242
|
}
|
|
235
243
|
}
|
|
@@ -245,9 +253,11 @@ export async function pollForDeviceToken(options) {
|
|
|
245
253
|
* @throws GrokOAuthError on any failure (network, denied, expired, timeout).
|
|
246
254
|
*/
|
|
247
255
|
export async function runGrokOAuthFlow(options = {}) {
|
|
248
|
-
const clientId = options.clientId ||
|
|
256
|
+
const clientId = options.clientId ||
|
|
257
|
+
process.env.GROK_OAUTH_CLIENT_ID ||
|
|
258
|
+
DEFAULT_GROK_OAUTH_CLIENT_ID;
|
|
249
259
|
if (!clientId || clientId.trim().length === 0) {
|
|
250
|
-
throw new GrokOAuthError(
|
|
260
|
+
throw new GrokOAuthError("Missing clientId", "no_client_id");
|
|
251
261
|
}
|
|
252
262
|
// Step 1: request device code.
|
|
253
263
|
const deviceAuth = await requestDeviceCode({
|
|
@@ -263,7 +273,7 @@ export async function runGrokOAuthFlow(options = {}) {
|
|
|
263
273
|
// Step 3: open the browser to the verification URI (best-effort, non-blocking).
|
|
264
274
|
// Prefer verification_uri_complete when provided (pre-fills the user_code).
|
|
265
275
|
try {
|
|
266
|
-
await openBrowser(deviceAuth.verificationUriComplete ?? deviceAuth.verificationUri);
|
|
276
|
+
await (options.openBrowserImpl ?? openBrowser)(deviceAuth.verificationUriComplete ?? deviceAuth.verificationUri);
|
|
267
277
|
}
|
|
268
278
|
catch {
|
|
269
279
|
// Browser launch is best-effort — the user can still visit the URL manually
|
|
@@ -295,23 +305,23 @@ export async function runGrokOAuthFlow(options = {}) {
|
|
|
295
305
|
*/
|
|
296
306
|
export async function refreshGrokToken(options) {
|
|
297
307
|
if (!options.clientId || options.clientId.trim().length === 0) {
|
|
298
|
-
throw new GrokOAuthError(
|
|
308
|
+
throw new GrokOAuthError("Missing clientId", "no_client_id");
|
|
299
309
|
}
|
|
300
310
|
if (!options.refreshToken || options.refreshToken.trim().length === 0) {
|
|
301
|
-
throw new GrokOAuthError(
|
|
311
|
+
throw new GrokOAuthError("Missing refreshToken", "no_refresh_token");
|
|
302
312
|
}
|
|
303
313
|
const endpoint = options.tokenEndpoint ?? DEFAULT_TOKEN_ENDPOINT;
|
|
304
314
|
const fetchImpl = options.fetchImpl ?? fetch;
|
|
305
315
|
let response;
|
|
306
316
|
try {
|
|
307
317
|
response = await fetchImpl(endpoint, {
|
|
308
|
-
method:
|
|
318
|
+
method: "POST",
|
|
309
319
|
headers: {
|
|
310
|
-
|
|
311
|
-
Accept:
|
|
320
|
+
"Content-Type": "application/x-www-form-urlencoded",
|
|
321
|
+
Accept: "application/json",
|
|
312
322
|
},
|
|
313
323
|
body: new URLSearchParams({
|
|
314
|
-
grant_type:
|
|
324
|
+
grant_type: "refresh_token",
|
|
315
325
|
client_id: options.clientId,
|
|
316
326
|
refresh_token: options.refreshToken,
|
|
317
327
|
}).toString(),
|
|
@@ -321,8 +331,10 @@ export async function refreshGrokToken(options) {
|
|
|
321
331
|
throw new GrokOAuthError(`Token refresh network error: ${err instanceof Error ? err.message : String(err)}`);
|
|
322
332
|
}
|
|
323
333
|
if (!response.ok) {
|
|
324
|
-
const errText = await response.text().catch(() =>
|
|
325
|
-
const code = response.status === 400 || response.status === 401
|
|
334
|
+
const errText = await response.text().catch(() => "");
|
|
335
|
+
const code = response.status === 400 || response.status === 401
|
|
336
|
+
? "invalid_grant"
|
|
337
|
+
: `http_${response.status}`;
|
|
326
338
|
throw new GrokOAuthError(`Token refresh HTTP ${response.status}: ${errText.slice(0, 200)}`, code);
|
|
327
339
|
}
|
|
328
340
|
let body;
|
|
@@ -332,13 +344,13 @@ export async function refreshGrokToken(options) {
|
|
|
332
344
|
catch (err) {
|
|
333
345
|
throw new GrokOAuthError(`Token refresh returned invalid JSON: ${err instanceof Error ? err.message : String(err)}`);
|
|
334
346
|
}
|
|
335
|
-
if (!body || typeof body !==
|
|
336
|
-
throw new GrokOAuthError(
|
|
347
|
+
if (!body || typeof body !== "object") {
|
|
348
|
+
throw new GrokOAuthError("Token refresh returned non-object body");
|
|
337
349
|
}
|
|
338
350
|
const obj = body;
|
|
339
351
|
const accessToken = obj.access_token;
|
|
340
|
-
if (typeof accessToken !==
|
|
341
|
-
throw new GrokOAuthError(
|
|
352
|
+
if (typeof accessToken !== "string" || accessToken.length === 0) {
|
|
353
|
+
throw new GrokOAuthError("Token refresh response missing access_token", "no_access_token");
|
|
342
354
|
}
|
|
343
355
|
return parseTokenResponseBody(obj, accessToken);
|
|
344
356
|
}
|
|
@@ -348,19 +360,25 @@ export async function refreshGrokToken(options) {
|
|
|
348
360
|
* spawn with args array).
|
|
349
361
|
*/
|
|
350
362
|
export async function openBrowser(url) {
|
|
351
|
-
const { spawn } = await import(
|
|
363
|
+
const { spawn } = await import("node:child_process");
|
|
352
364
|
const cmd = (() => {
|
|
353
365
|
switch (process.platform) {
|
|
354
|
-
case
|
|
355
|
-
|
|
356
|
-
|
|
366
|
+
case "darwin":
|
|
367
|
+
return { bin: "open", args: [url] };
|
|
368
|
+
case "win32":
|
|
369
|
+
return { bin: "cmd", args: ["/c", "start", '""', url] };
|
|
370
|
+
default:
|
|
371
|
+
return { bin: "xdg-open", args: [url] };
|
|
357
372
|
}
|
|
358
373
|
})();
|
|
359
374
|
return new Promise((resolve, reject) => {
|
|
360
375
|
try {
|
|
361
|
-
const child = spawn(cmd.bin, cmd.args, {
|
|
362
|
-
|
|
363
|
-
|
|
376
|
+
const child = spawn(cmd.bin, cmd.args, {
|
|
377
|
+
stdio: "ignore",
|
|
378
|
+
detached: true,
|
|
379
|
+
});
|
|
380
|
+
child.on("error", (err) => reject(err));
|
|
381
|
+
child.on("spawn", () => {
|
|
364
382
|
child.unref();
|
|
365
383
|
resolve();
|
|
366
384
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grokOAuth.js","sourceRoot":"","sources":["../../src/cli/grokOAuth.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"grokOAuth.js","sourceRoot":"","sources":["../../src/cli/grokOAuth.ts"],"names":[],"mappings":"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"}
|