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.
Files changed (127) hide show
  1. package/README.md +42 -0
  2. package/bin/zelari-code.js +1 -1
  3. package/dist/agents/councilApi.js +7 -7
  4. package/dist/agents/councilApi.js.map +1 -1
  5. package/dist/agents/councilDirectives.js +3 -3
  6. package/dist/agents/promoteMember.js +2 -2
  7. package/dist/agents/roles.js +50 -32
  8. package/dist/agents/roles.js.map +1 -1
  9. package/dist/agents/skills/builtin/debugging.js +4 -4
  10. package/dist/agents/skills/builtin/debugging.js.map +1 -1
  11. package/dist/agents/skills/builtin/docs.js +23 -13
  12. package/dist/agents/skills/builtin/docs.js.map +1 -1
  13. package/dist/agents/skills/builtin/git-ops.js +3 -3
  14. package/dist/agents/skills/builtin/git-ops.js.map +1 -1
  15. package/dist/agents/skills/builtin/planning.js +4 -4
  16. package/dist/agents/skills/builtin/planning.js.map +1 -1
  17. package/dist/agents/skills/builtin/refactoring.js +3 -3
  18. package/dist/agents/skills/builtin/refactoring.js.map +1 -1
  19. package/dist/agents/skills/builtin/review.js +9 -9
  20. package/dist/agents/skills/builtin/review.js.map +1 -1
  21. package/dist/agents/skills/builtin/testing.js +3 -3
  22. package/dist/agents/skills/builtin/testing.js.map +1 -1
  23. package/dist/agents/tools.js +2 -9
  24. package/dist/agents/tools.js.map +1 -1
  25. package/dist/cli/app.js +72 -33
  26. package/dist/cli/app.js.map +1 -1
  27. package/dist/cli/compaction.js.map +1 -1
  28. package/dist/cli/components/ChatStream.js +43 -82
  29. package/dist/cli/components/ChatStream.js.map +1 -1
  30. package/dist/cli/components/CollapsibleToolOutput.js +8 -21
  31. package/dist/cli/components/CollapsibleToolOutput.js.map +1 -1
  32. package/dist/cli/components/Header.js +6 -18
  33. package/dist/cli/components/Header.js.map +1 -1
  34. package/dist/cli/components/LiveRegion.js +54 -0
  35. package/dist/cli/components/LiveRegion.js.map +1 -0
  36. package/dist/cli/components/Sidebar.js +33 -31
  37. package/dist/cli/components/Sidebar.js.map +1 -1
  38. package/dist/cli/components/StatusBar.js +42 -0
  39. package/dist/cli/components/StatusBar.js.map +1 -0
  40. package/dist/cli/components/ToolOutput.js +68 -0
  41. package/dist/cli/components/ToolOutput.js.map +1 -0
  42. package/dist/cli/components/toolFormat.js +195 -0
  43. package/dist/cli/components/toolFormat.js.map +1 -0
  44. package/dist/cli/councilDispatcher.js +1 -1
  45. package/dist/cli/councilDispatcher.js.map +1 -1
  46. package/dist/cli/grokOAuth.js +93 -75
  47. package/dist/cli/grokOAuth.js.map +1 -1
  48. package/dist/cli/headless.js +137 -0
  49. package/dist/cli/headless.js.map +1 -0
  50. package/dist/cli/hooks/chatState.js +139 -0
  51. package/dist/cli/hooks/chatState.js.map +1 -0
  52. package/dist/cli/hooks/eventsToMessages.js +42 -11
  53. package/dist/cli/hooks/eventsToMessages.js.map +1 -1
  54. package/dist/cli/hooks/messageHelpers.js +72 -15
  55. package/dist/cli/hooks/messageHelpers.js.map +1 -1
  56. package/dist/cli/hooks/useBatchedMessages.js +71 -0
  57. package/dist/cli/hooks/useBatchedMessages.js.map +1 -0
  58. package/dist/cli/hooks/useChatTurn.js +453 -84
  59. package/dist/cli/hooks/useChatTurn.js.map +1 -1
  60. package/dist/cli/hooks/useSession.js +24 -3
  61. package/dist/cli/hooks/useSession.js.map +1 -1
  62. package/dist/cli/hooks/useSlashDispatch.js +13 -2
  63. package/dist/cli/hooks/useSlashDispatch.js.map +1 -1
  64. package/dist/cli/main.bundled.js +10607 -7889
  65. package/dist/cli/main.bundled.js.map +4 -4
  66. package/dist/cli/main.js +120 -2
  67. package/dist/cli/main.js.map +1 -1
  68. package/dist/cli/mcp/mcpClient.js +152 -0
  69. package/dist/cli/mcp/mcpClient.js.map +1 -0
  70. package/dist/cli/mcp/mcpManager.js +139 -0
  71. package/dist/cli/mcp/mcpManager.js.map +1 -0
  72. package/dist/cli/provider/openai-compatible.js +9 -2
  73. package/dist/cli/provider/openai-compatible.js.map +1 -1
  74. package/dist/cli/refreshRegistry.js +9 -6
  75. package/dist/cli/refreshRegistry.js.map +1 -1
  76. package/dist/cli/runHeadless.js +160 -0
  77. package/dist/cli/runHeadless.js.map +1 -0
  78. package/dist/cli/sessionManager.js +1 -1
  79. package/dist/cli/sessionManager.js.map +1 -1
  80. package/dist/cli/skillSuggest.js +1 -1
  81. package/dist/cli/skillsMd.js +155 -0
  82. package/dist/cli/skillsMd.js.map +1 -0
  83. package/dist/cli/slashHandlers/branch.js +11 -2
  84. package/dist/cli/slashHandlers/branch.js.map +1 -1
  85. package/dist/cli/slashHandlers/git.js +0 -75
  86. package/dist/cli/slashHandlers/git.js.map +1 -1
  87. package/dist/cli/slashHandlers/promoteMember.js +25 -0
  88. package/dist/cli/slashHandlers/promoteMember.js.map +1 -0
  89. package/dist/cli/slashHandlers/skills.js +16 -0
  90. package/dist/cli/slashHandlers/skills.js.map +1 -1
  91. package/dist/cli/slashHandlers/transcript.js +13 -0
  92. package/dist/cli/slashHandlers/transcript.js.map +1 -0
  93. package/dist/cli/slashHandlers/updater.js +40 -0
  94. package/dist/cli/slashHandlers/updater.js.map +1 -0
  95. package/dist/cli/toolRegistry.js +37 -6
  96. package/dist/cli/toolRegistry.js.map +1 -1
  97. package/dist/cli/wizard/firstRun.js +63 -0
  98. package/dist/cli/wizard/firstRun.js.map +1 -0
  99. package/dist/cli/wizard/index.js +150 -0
  100. package/dist/cli/wizard/index.js.map +1 -0
  101. package/dist/cli/wizard/runWizard.js +137 -0
  102. package/dist/cli/wizard/runWizard.js.map +1 -0
  103. package/dist/cli/wizard/useWizardState.js +151 -0
  104. package/dist/cli/wizard/useWizardState.js.map +1 -0
  105. package/dist/cli/workspace/paths.js +20 -13
  106. package/dist/cli/workspace/paths.js.map +1 -1
  107. package/dist/cli/workspace/storage.js +7 -3
  108. package/dist/cli/workspace/storage.js.map +1 -1
  109. package/dist/cli/workspace/stubs.js +122 -44
  110. package/dist/cli/workspace/stubs.js.map +1 -1
  111. package/dist/cli/workspace/toolRegistry.js +2 -2
  112. package/dist/cli/workspace/toolRegistry.js.map +1 -1
  113. package/dist/cli/workspace/workspaceSummary.js +255 -0
  114. package/dist/cli/workspace/workspaceSummary.js.map +1 -0
  115. package/dist/main/core/AgentHarness.js +36 -7
  116. package/dist/main/core/AgentHarness.js.map +1 -1
  117. package/dist/main/core/tools/builtin/listFiles.js +43 -5
  118. package/dist/main/core/tools/builtin/listFiles.js.map +1 -1
  119. package/dist/main/core/tools/builtin/search.js +28 -120
  120. package/dist/main/core/tools/builtin/search.js.map +1 -1
  121. package/package.json +6 -1
  122. package/dist/cli/oauthCallbackServer.js +0 -207
  123. package/dist/cli/oauthCallbackServer.js.map +0 -1
  124. package/dist/main/core/tools/builtin/_walk.js +0 -129
  125. package/dist/main/core/tools/builtin/_walk.js.map +0 -1
  126. package/dist/main/core/tools/builtin/diff.js +0 -477
  127. 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 '../agents/councilApi.js';
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,yBAAyB,CAAC;AAMjC,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"}
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"}
@@ -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 = 'GrokOAuthError';
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 = 'b1a00492-073a-47ea-816f-4c329264a828';
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
- 'openid',
46
- 'profile',
47
- 'email',
48
- 'offline_access',
49
- 'grok-cli:access',
50
- 'api:access',
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 = 'https://auth.x.ai/oauth2/device/code';
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 = 'https://auth.x.ai/oauth2/token';
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 = 'urn:ietf:params:oauth:grant-type:device_code';
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: 'POST',
74
+ method: "POST",
75
75
  headers: {
76
- 'Content-Type': 'application/x-www-form-urlencoded',
77
- Accept: 'application/json',
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)}`, 'device_code_network_error');
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 !== 'object') {
100
- throw new GrokOAuthError('Device code response is not an object');
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 !== 'string' || deviceCode.length === 0) {
107
- throw new GrokOAuthError('Device code response missing device_code', 'no_device_code');
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 !== 'string' || userCode.length === 0) {
110
- throw new GrokOAuthError('Device code response missing user_code', 'no_user_code');
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 !== 'string' || verificationUri.length === 0) {
113
- throw new GrokOAuthError('Device code response missing verification_uri', 'no_verification_uri');
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 === 'string' && obj.verification_uri_complete.length > 0
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 === 'number' && Number.isFinite(obj.expires_in) ? obj.expires_in : 1800,
123
- interval: typeof obj.interval === 'number' && Number.isFinite(obj.interval) ? obj.interval : 5,
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 === 'number' && Number.isFinite(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 === 'string' && obj.refresh_token.length > 0) {
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 === 'number' && Number.isFinite(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('Device authorization timed out waiting for user approval', 'timeout');
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: 'POST',
174
+ method: "POST",
169
175
  headers: {
170
- 'Content-Type': 'application/x-www-form-urlencoded',
171
- Accept: 'application/json',
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)}`, 'poll_network_error');
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 !== 'object') {
193
- throw new GrokOAuthError('Token response is not an object');
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 !== 'string' || accessToken.length === 0) {
198
- throw new GrokOAuthError('Token response missing access_token', 'no_access_token');
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 === 'object')
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 === 'string' ? errBody.error : `http_${response.status}`;
218
+ const errorCode = typeof errBody.error === "string"
219
+ ? errBody.error
220
+ : `http_${response.status}`;
213
221
  switch (errorCode) {
214
- case 'authorization_pending':
222
+ case "authorization_pending":
215
223
  await sleep(interval * 1000);
216
224
  continue;
217
- case 'slow_down':
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 'expired_token':
223
- case 'expired':
224
- throw new GrokOAuthError('Device code expired before user authorized', 'expired');
225
- case 'access_denied':
226
- case 'denied':
227
- throw new GrokOAuthError('User denied the authorization request', 'denied');
228
- case 'invalid_grant':
229
- throw new GrokOAuthError('Device code rejected (invalid_grant)', 'invalid_grant');
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 === 'string' ? ` — ${errBody.error_description}` : ''}`, errorCode);
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 || process.env.GROK_OAUTH_CLIENT_ID || DEFAULT_GROK_OAUTH_CLIENT_ID;
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('Missing clientId', 'no_client_id');
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('Missing clientId', 'no_client_id');
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('Missing refreshToken', 'no_refresh_token');
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: 'POST',
318
+ method: "POST",
309
319
  headers: {
310
- 'Content-Type': 'application/x-www-form-urlencoded',
311
- Accept: 'application/json',
320
+ "Content-Type": "application/x-www-form-urlencoded",
321
+ Accept: "application/json",
312
322
  },
313
323
  body: new URLSearchParams({
314
- grant_type: 'refresh_token',
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 ? 'invalid_grant' : `http_${response.status}`;
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 !== 'object') {
336
- throw new GrokOAuthError('Token refresh returned non-object body');
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 !== 'string' || accessToken.length === 0) {
341
- throw new GrokOAuthError('Token refresh response missing access_token', 'no_access_token');
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('node:child_process');
363
+ const { spawn } = await import("node:child_process");
352
364
  const cmd = (() => {
353
365
  switch (process.platform) {
354
- case 'darwin': return { bin: 'open', args: [url] };
355
- case 'win32': return { bin: 'cmd', args: ['/c', 'start', '""', url] };
356
- default: return { bin: 'xdg-open', args: [url] };
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, { stdio: 'ignore', detached: true });
362
- child.on('error', (err) => reject(err));
363
- child.on('spawn', () => {
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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"}