grok-agent 0.5.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.
Files changed (141) hide show
  1. package/CHANGELOG.md +113 -0
  2. package/LICENSE +190 -0
  3. package/README.md +449 -0
  4. package/bin/grok-cli.js +26 -0
  5. package/dist/agent.d.ts +4 -0
  6. package/dist/agent.d.ts.map +1 -0
  7. package/dist/agent.js +898 -0
  8. package/dist/agent.js.map +1 -0
  9. package/dist/approvals.d.ts +4 -0
  10. package/dist/approvals.d.ts.map +1 -0
  11. package/dist/approvals.js +90 -0
  12. package/dist/approvals.js.map +1 -0
  13. package/dist/batch-api.d.ts +11 -0
  14. package/dist/batch-api.d.ts.map +1 -0
  15. package/dist/batch-api.js +101 -0
  16. package/dist/batch-api.js.map +1 -0
  17. package/dist/cli-errors.d.ts +6 -0
  18. package/dist/cli-errors.d.ts.map +1 -0
  19. package/dist/cli-errors.js +80 -0
  20. package/dist/cli-errors.js.map +1 -0
  21. package/dist/client.d.ts +6 -0
  22. package/dist/client.d.ts.map +1 -0
  23. package/dist/client.js +41 -0
  24. package/dist/client.js.map +1 -0
  25. package/dist/collections-api.d.ts +11 -0
  26. package/dist/collections-api.d.ts.map +1 -0
  27. package/dist/collections-api.js +144 -0
  28. package/dist/collections-api.js.map +1 -0
  29. package/dist/compaction.d.ts +11 -0
  30. package/dist/compaction.d.ts.map +1 -0
  31. package/dist/compaction.js +94 -0
  32. package/dist/compaction.js.map +1 -0
  33. package/dist/config.d.ts +12 -0
  34. package/dist/config.d.ts.map +1 -0
  35. package/dist/config.js +142 -0
  36. package/dist/config.js.map +1 -0
  37. package/dist/diff.d.ts +5 -0
  38. package/dist/diff.d.ts.map +1 -0
  39. package/dist/diff.js +80 -0
  40. package/dist/diff.js.map +1 -0
  41. package/dist/hooks.d.ts +11 -0
  42. package/dist/hooks.d.ts.map +1 -0
  43. package/dist/hooks.js +30 -0
  44. package/dist/hooks.js.map +1 -0
  45. package/dist/image.d.ts +8 -0
  46. package/dist/image.d.ts.map +1 -0
  47. package/dist/image.js +58 -0
  48. package/dist/image.js.map +1 -0
  49. package/dist/index.d.ts +3 -0
  50. package/dist/index.d.ts.map +1 -0
  51. package/dist/index.js +1264 -0
  52. package/dist/index.js.map +1 -0
  53. package/dist/json-output.d.ts +27 -0
  54. package/dist/json-output.d.ts.map +1 -0
  55. package/dist/json-output.js +62 -0
  56. package/dist/json-output.js.map +1 -0
  57. package/dist/notifications.d.ts +6 -0
  58. package/dist/notifications.d.ts.map +1 -0
  59. package/dist/notifications.js +25 -0
  60. package/dist/notifications.js.map +1 -0
  61. package/dist/project-context.d.ts +6 -0
  62. package/dist/project-context.d.ts.map +1 -0
  63. package/dist/project-context.js +34 -0
  64. package/dist/project-context.js.map +1 -0
  65. package/dist/response-utils.d.ts +10 -0
  66. package/dist/response-utils.d.ts.map +1 -0
  67. package/dist/response-utils.js +123 -0
  68. package/dist/response-utils.js.map +1 -0
  69. package/dist/server-tools.d.ts +7 -0
  70. package/dist/server-tools.d.ts.map +1 -0
  71. package/dist/server-tools.js +205 -0
  72. package/dist/server-tools.js.map +1 -0
  73. package/dist/session.d.ts +46 -0
  74. package/dist/session.d.ts.map +1 -0
  75. package/dist/session.js +305 -0
  76. package/dist/session.js.map +1 -0
  77. package/dist/stream.d.ts +22 -0
  78. package/dist/stream.d.ts.map +1 -0
  79. package/dist/stream.js +102 -0
  80. package/dist/stream.js.map +1 -0
  81. package/dist/system-prompt.d.ts +3 -0
  82. package/dist/system-prompt.d.ts.map +1 -0
  83. package/dist/system-prompt.js +64 -0
  84. package/dist/system-prompt.js.map +1 -0
  85. package/dist/tools/bash.d.ts +8 -0
  86. package/dist/tools/bash.d.ts.map +1 -0
  87. package/dist/tools/bash.js +49 -0
  88. package/dist/tools/bash.js.map +1 -0
  89. package/dist/tools/definitions.d.ts +3 -0
  90. package/dist/tools/definitions.d.ts.map +1 -0
  91. package/dist/tools/definitions.js +190 -0
  92. package/dist/tools/definitions.js.map +1 -0
  93. package/dist/tools/edit-file.d.ts +10 -0
  94. package/dist/tools/edit-file.d.ts.map +1 -0
  95. package/dist/tools/edit-file.js +73 -0
  96. package/dist/tools/edit-file.js.map +1 -0
  97. package/dist/tools/glob.d.ts +7 -0
  98. package/dist/tools/glob.d.ts.map +1 -0
  99. package/dist/tools/glob.js +44 -0
  100. package/dist/tools/glob.js.map +1 -0
  101. package/dist/tools/grep.d.ts +10 -0
  102. package/dist/tools/grep.d.ts.map +1 -0
  103. package/dist/tools/grep.js +102 -0
  104. package/dist/tools/grep.js.map +1 -0
  105. package/dist/tools/index.d.ts +10 -0
  106. package/dist/tools/index.d.ts.map +1 -0
  107. package/dist/tools/index.js +41 -0
  108. package/dist/tools/index.js.map +1 -0
  109. package/dist/tools/list-dir.d.ts +7 -0
  110. package/dist/tools/list-dir.d.ts.map +1 -0
  111. package/dist/tools/list-dir.js +68 -0
  112. package/dist/tools/list-dir.js.map +1 -0
  113. package/dist/tools/policy.d.ts +4 -0
  114. package/dist/tools/policy.d.ts.map +1 -0
  115. package/dist/tools/policy.js +36 -0
  116. package/dist/tools/policy.js.map +1 -0
  117. package/dist/tools/read-file.d.ts +8 -0
  118. package/dist/tools/read-file.d.ts.map +1 -0
  119. package/dist/tools/read-file.js +45 -0
  120. package/dist/tools/read-file.js.map +1 -0
  121. package/dist/tools/write-file.d.ts +7 -0
  122. package/dist/tools/write-file.d.ts.map +1 -0
  123. package/dist/tools/write-file.js +35 -0
  124. package/dist/tools/write-file.js.map +1 -0
  125. package/dist/truncation.d.ts +13 -0
  126. package/dist/truncation.d.ts.map +1 -0
  127. package/dist/truncation.js +55 -0
  128. package/dist/truncation.js.map +1 -0
  129. package/dist/types.d.ts +159 -0
  130. package/dist/types.d.ts.map +1 -0
  131. package/dist/types.js +2 -0
  132. package/dist/types.js.map +1 -0
  133. package/dist/usage.d.ts +17 -0
  134. package/dist/usage.d.ts.map +1 -0
  135. package/dist/usage.js +80 -0
  136. package/dist/usage.js.map +1 -0
  137. package/dist/voice-api.d.ts +16 -0
  138. package/dist/voice-api.d.ts.map +1 -0
  139. package/dist/voice-api.js +84 -0
  140. package/dist/voice-api.js.map +1 -0
  141. package/package.json +64 -0
@@ -0,0 +1,159 @@
1
+ import type OpenAI from "openai";
2
+ export type ChatMessage = OpenAI.Chat.Completions.ChatCompletionMessageParam;
3
+ export type ToolCall = OpenAI.Chat.Completions.ChatCompletionMessageToolCall;
4
+ export type ToolDef = OpenAI.Chat.Completions.ChatCompletionTool;
5
+ export type StreamChunk = OpenAI.Chat.Completions.ChatCompletionChunk;
6
+ export interface GrokConfig {
7
+ apiKey: string;
8
+ managementApiKey: string;
9
+ baseUrl: string;
10
+ managementBaseUrl: string;
11
+ model: string;
12
+ maxTokens: number;
13
+ timeout: number;
14
+ reasoningEffort: "low" | "high";
15
+ showReasoning: boolean;
16
+ showToolCalls: boolean;
17
+ showUsage: boolean;
18
+ showCitations: boolean;
19
+ showDiffs: boolean;
20
+ showServerToolUsage: boolean;
21
+ maxToolRounds: number;
22
+ serverTools: ServerToolConfig[];
23
+ useResponsesApi: boolean;
24
+ sessionDir: string;
25
+ mcpServers: McpServer[];
26
+ imageInputs: string[];
27
+ fileAttachments: string[];
28
+ jsonSchema: string | null;
29
+ approvalPolicy: ApprovalPolicy;
30
+ sandboxMode: SandboxMode;
31
+ toolApprovals: ToolApprovalSettings;
32
+ includeToolOutputs: boolean;
33
+ notify: boolean;
34
+ hooks: HooksConfig;
35
+ convId: string | null;
36
+ jsonOutput: boolean;
37
+ ephemeral: boolean;
38
+ outputFile: string | null;
39
+ color: "auto" | "always" | "never";
40
+ maxOutputTokens: number;
41
+ }
42
+ export type ApprovalPolicy = "always-approve" | "ask" | "deny-writes";
43
+ export type SandboxMode = "danger-full-access" | "workspace-write" | "read-only";
44
+ export type ToolApprovalMode = "allow" | "ask" | "deny";
45
+ export type ServerToolKind = "web_search" | "x_search" | "code_execution" | "file_search";
46
+ export interface WebSearchToolConfig {
47
+ type: "web_search";
48
+ filters?: {
49
+ allowedDomains?: string[];
50
+ excludedDomains?: string[];
51
+ };
52
+ enableImageUnderstanding?: boolean;
53
+ includeSources?: boolean;
54
+ }
55
+ export interface XSearchToolConfig {
56
+ type: "x_search";
57
+ allowedXHandles?: string[];
58
+ excludedXHandles?: string[];
59
+ fromDate?: string;
60
+ toDate?: string;
61
+ enableImageUnderstanding?: boolean;
62
+ enableVideoUnderstanding?: boolean;
63
+ }
64
+ export interface CodeExecutionToolConfig {
65
+ type: "code_execution";
66
+ includeOutputs?: boolean;
67
+ }
68
+ export interface FileSearchToolConfig {
69
+ type: "file_search";
70
+ collectionIds: string[];
71
+ retrievalMode?: "keyword" | "semantic" | "hybrid";
72
+ maxNumResults?: number;
73
+ includeResults?: boolean;
74
+ }
75
+ export type ServerToolConfig = WebSearchToolConfig | XSearchToolConfig | CodeExecutionToolConfig | FileSearchToolConfig;
76
+ export interface McpServer {
77
+ url: string;
78
+ label: string;
79
+ description?: string;
80
+ allowedTools?: string[];
81
+ }
82
+ export interface ToolApprovalSettings {
83
+ defaultMode?: ToolApprovalMode;
84
+ tools?: Record<string, ToolApprovalMode>;
85
+ }
86
+ export interface HooksConfig {
87
+ "pre-tool"?: string[];
88
+ "post-tool"?: string[];
89
+ "session-start"?: string[];
90
+ "session-end"?: string[];
91
+ [key: string]: string[] | undefined;
92
+ }
93
+ export interface ToolResult {
94
+ output: string;
95
+ error?: boolean;
96
+ }
97
+ export interface SessionMeta {
98
+ id: string;
99
+ name: string;
100
+ model: string;
101
+ cwd: string;
102
+ archived?: boolean;
103
+ created: string;
104
+ updated: string;
105
+ turns: number;
106
+ lastResponseId: string | null;
107
+ }
108
+ export interface SessionEvent {
109
+ ts: string;
110
+ type: "meta" | "msg" | "tool_exec";
111
+ meta?: SessionMeta;
112
+ role?: "system" | "user" | "assistant" | "tool";
113
+ content?: string | null;
114
+ toolCalls?: SerializedToolCall[];
115
+ toolCallId?: string;
116
+ toolName?: string;
117
+ toolArgs?: string;
118
+ toolOutput?: string;
119
+ toolError?: boolean;
120
+ turn?: number;
121
+ }
122
+ export interface SerializedToolCall {
123
+ id: string;
124
+ name: string;
125
+ arguments: string;
126
+ }
127
+ export interface AgentOptions {
128
+ verbose: boolean;
129
+ showReasoning: boolean;
130
+ maxTurns: number;
131
+ cwd: string;
132
+ sessionId?: string;
133
+ sessionName?: string;
134
+ planMode?: boolean;
135
+ }
136
+ export interface Citation {
137
+ url: string;
138
+ title?: string;
139
+ }
140
+ export interface ConfigFile {
141
+ model?: string;
142
+ approval_policy?: ApprovalPolicy;
143
+ sandbox_mode?: SandboxMode;
144
+ show_reasoning?: boolean;
145
+ show_usage?: boolean;
146
+ show_diffs?: boolean;
147
+ show_citations?: boolean;
148
+ show_server_tool_usage?: boolean;
149
+ notify?: boolean;
150
+ max_turns?: number;
151
+ management_api_key?: string;
152
+ management_base_url?: string;
153
+ mcp_servers?: Record<string, string> | McpServer[];
154
+ hooks?: HooksConfig;
155
+ tool_approvals?: ToolApprovalSettings;
156
+ include_tool_outputs?: boolean;
157
+ server_tools?: Array<ServerToolKind | ServerToolConfig>;
158
+ }
159
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,17 @@
1
+ export interface UsageStats {
2
+ inputTokens: number;
3
+ outputTokens: number;
4
+ reasoningTokens: number;
5
+ cachedTokens: number;
6
+ totalTokens: number;
7
+ }
8
+ export declare function createUsageStats(): UsageStats;
9
+ /** Extract usage from a chat.completions final chunk */
10
+ export declare function extractUsageFromChatChunk(chunk: any, stats: UsageStats): void;
11
+ /** Extract usage from a Responses API response */
12
+ export declare function extractUsageFromResponse(response: any, stats: UsageStats): void;
13
+ /** Accumulate usage across multiple turns */
14
+ export declare function accumulateUsage(total: UsageStats, turn: UsageStats): void;
15
+ export declare function calculateCost(model: string, stats: UsageStats): number;
16
+ export declare function formatUsage(model: string, stats: UsageStats): string;
17
+ //# sourceMappingURL=usage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../src/usage.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,gBAAgB,IAAI,UAAU,CAQ7C;AAED,wDAAwD;AACxD,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI,CAQ7E;AAED,kDAAkD;AAClD,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI,CAS/E;AAED,6CAA6C;AAC7C,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,CAMzE;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,MAAM,CActE;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,MAAM,CAgBpE"}
package/dist/usage.js ADDED
@@ -0,0 +1,80 @@
1
+ import chalk from "chalk";
2
+ // Pricing per 1M tokens (input / cached / output)
3
+ const PRICING = {
4
+ "grok-4.20-0309-reasoning": { input: 2.00, cached: 0.20, output: 6.00 },
5
+ "grok-4.20-reasoning": { input: 2.00, cached: 0.20, output: 6.00 },
6
+ "grok-4.20-0309-non-reasoning": { input: 2.00, cached: 0.20, output: 6.00 },
7
+ "grok-4.20-non-reasoning": { input: 2.00, cached: 0.20, output: 6.00 },
8
+ "grok-4.20-multi-agent-0309": { input: 2.00, cached: 0.20, output: 6.00 },
9
+ "grok-4.20-multi-agent": { input: 2.00, cached: 0.20, output: 6.00 },
10
+ "grok-4-1-fast-reasoning": { input: 0.20, cached: 0.05, output: 0.50 },
11
+ "grok-4-1-fast-non-reasoning": { input: 0.20, cached: 0.05, output: 0.50 },
12
+ "grok-code-fast-1": { input: 0.20, cached: 0.05, output: 0.50 },
13
+ };
14
+ export function createUsageStats() {
15
+ return {
16
+ inputTokens: 0,
17
+ outputTokens: 0,
18
+ reasoningTokens: 0,
19
+ cachedTokens: 0,
20
+ totalTokens: 0,
21
+ };
22
+ }
23
+ /** Extract usage from a chat.completions final chunk */
24
+ export function extractUsageFromChatChunk(chunk, stats) {
25
+ const usage = chunk?.usage;
26
+ if (!usage)
27
+ return;
28
+ stats.inputTokens = usage.prompt_tokens || 0;
29
+ stats.outputTokens = usage.completion_tokens || 0;
30
+ stats.totalTokens = usage.total_tokens || 0;
31
+ stats.cachedTokens = usage.prompt_tokens_details?.cached_tokens || 0;
32
+ }
33
+ /** Extract usage from a Responses API response */
34
+ export function extractUsageFromResponse(response, stats) {
35
+ const usage = response?.usage;
36
+ if (!usage)
37
+ return;
38
+ stats.inputTokens = usage.input_tokens || usage.prompt_tokens || 0;
39
+ stats.outputTokens = usage.output_tokens || usage.completion_tokens || 0;
40
+ stats.totalTokens = usage.total_tokens || (stats.inputTokens + stats.outputTokens);
41
+ stats.reasoningTokens = usage.output_tokens_details?.reasoning_tokens || 0;
42
+ stats.cachedTokens = usage.input_tokens_details?.cached_tokens || usage.prompt_tokens_details?.cached_tokens || 0;
43
+ }
44
+ /** Accumulate usage across multiple turns */
45
+ export function accumulateUsage(total, turn) {
46
+ total.inputTokens += turn.inputTokens;
47
+ total.outputTokens += turn.outputTokens;
48
+ total.reasoningTokens += turn.reasoningTokens;
49
+ total.cachedTokens += turn.cachedTokens;
50
+ total.totalTokens += turn.totalTokens;
51
+ }
52
+ export function calculateCost(model, stats) {
53
+ // Find pricing - try exact match, then prefix match
54
+ let pricing = PRICING[model];
55
+ if (!pricing) {
56
+ const key = Object.keys(PRICING).find(k => model.startsWith(k));
57
+ pricing = key ? PRICING[key] : PRICING["grok-4-1-fast-reasoning"]; // fallback
58
+ }
59
+ const nonCachedInput = stats.inputTokens - stats.cachedTokens;
60
+ const costInput = (nonCachedInput / 1_000_000) * pricing.input;
61
+ const costCached = (stats.cachedTokens / 1_000_000) * pricing.cached;
62
+ const costOutput = (stats.outputTokens / 1_000_000) * pricing.output;
63
+ return costInput + costCached + costOutput;
64
+ }
65
+ export function formatUsage(model, stats) {
66
+ const cost = calculateCost(model, stats);
67
+ const parts = [];
68
+ parts.push(chalk.dim("Tokens:"));
69
+ parts.push(chalk.dim(` in=${stats.inputTokens.toLocaleString()}`));
70
+ if (stats.cachedTokens > 0) {
71
+ parts.push(chalk.dim(` cached=${stats.cachedTokens.toLocaleString()}`));
72
+ }
73
+ parts.push(chalk.dim(` out=${stats.outputTokens.toLocaleString()}`));
74
+ if (stats.reasoningTokens > 0) {
75
+ parts.push(chalk.dim(` reasoning=${stats.reasoningTokens.toLocaleString()}`));
76
+ }
77
+ parts.push(chalk.dim(` | Cost: $${cost.toFixed(4)}`));
78
+ return parts.join("");
79
+ }
80
+ //# sourceMappingURL=usage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usage.js","sourceRoot":"","sources":["../src/usage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { GrokConfig } from "./types.js";
2
+ export declare function listVoices(config: GrokConfig): Promise<any[]>;
3
+ export declare function createRealtimeClientSecret(config: GrokConfig, seconds: number, session?: Record<string, unknown>): Promise<any>;
4
+ export declare function streamTtsToFile(config: GrokConfig, opts: {
5
+ text: string;
6
+ voice: string;
7
+ language: string;
8
+ codec: string;
9
+ sampleRate?: number;
10
+ bitRate?: number;
11
+ output: string;
12
+ }): Promise<{
13
+ bytes: number;
14
+ output: string;
15
+ }>;
16
+ //# sourceMappingURL=voice-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"voice-api.d.ts","sourceRoot":"","sources":["../src/voice-api.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,wBAAsB,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAOnE;AAED,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,OAAO,CAAC,GAAG,CAAC,CAgBd;AAED,wBAAsB,eAAe,CACnC,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE;IACJ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB,GACA,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAuD5C"}
@@ -0,0 +1,84 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import { getResponseErrorMessage } from "./cli-errors.js";
4
+ export async function listVoices(config) {
5
+ const response = await fetch(`${config.baseUrl}/tts/voices`, {
6
+ headers: { Authorization: `Bearer ${config.apiKey}` },
7
+ });
8
+ if (!response.ok)
9
+ throw new Error(await getResponseErrorMessage("Failed to list voices", response));
10
+ const data = await response.json();
11
+ return data.voices || [];
12
+ }
13
+ export async function createRealtimeClientSecret(config, seconds, session) {
14
+ const response = await fetch(`${config.baseUrl}/realtime/client_secrets`, {
15
+ method: "POST",
16
+ headers: {
17
+ Authorization: `Bearer ${config.apiKey}`,
18
+ "Content-Type": "application/json",
19
+ },
20
+ body: JSON.stringify({
21
+ expires_after: { seconds },
22
+ ...(session ? { session } : {}),
23
+ }),
24
+ });
25
+ if (!response.ok) {
26
+ throw new Error(await getResponseErrorMessage("Failed to create realtime client secret", response));
27
+ }
28
+ return response.json();
29
+ }
30
+ export async function streamTtsToFile(config, opts) {
31
+ const url = new URL(config.baseUrl.replace(/^http/, "ws") + "/tts");
32
+ url.searchParams.set("language", opts.language);
33
+ url.searchParams.set("voice", opts.voice);
34
+ url.searchParams.set("codec", opts.codec);
35
+ if (opts.sampleRate)
36
+ url.searchParams.set("sample_rate", String(opts.sampleRate));
37
+ if (opts.bitRate)
38
+ url.searchParams.set("bit_rate", String(opts.bitRate));
39
+ const WS = globalThis.WebSocket;
40
+ if (!WS) {
41
+ throw new Error("WebSocket is not available in this Node runtime.");
42
+ }
43
+ const chunks = [];
44
+ const outputPath = path.resolve(opts.output);
45
+ await new Promise((resolve, reject) => {
46
+ const ws = new WS(url, {
47
+ headers: {
48
+ Authorization: `Bearer ${config.apiKey}`,
49
+ },
50
+ });
51
+ ws.onopen = () => {
52
+ ws.send(JSON.stringify({ type: "text.delta", delta: opts.text }));
53
+ ws.send(JSON.stringify({ type: "text.done" }));
54
+ };
55
+ ws.onmessage = (event) => {
56
+ try {
57
+ const data = JSON.parse(String(event.data));
58
+ if (data.type === "audio.delta" && data.delta) {
59
+ chunks.push(Buffer.from(data.delta, "base64"));
60
+ }
61
+ else if (data.type === "audio.done") {
62
+ resolve();
63
+ ws.close();
64
+ }
65
+ else if (data.type === "error") {
66
+ reject(new Error(data.message || "Streaming TTS failed"));
67
+ ws.close();
68
+ }
69
+ }
70
+ catch (err) {
71
+ reject(err instanceof Error ? err : new Error(String(err)));
72
+ ws.close();
73
+ }
74
+ };
75
+ ws.onerror = (event) => {
76
+ reject(new Error(event?.message || "Streaming TTS connection failed"));
77
+ };
78
+ });
79
+ const buffer = Buffer.concat(chunks);
80
+ fs.mkdirSync(path.dirname(outputPath), { recursive: true });
81
+ fs.writeFileSync(outputPath, buffer);
82
+ return { bytes: buffer.length, output: outputPath };
83
+ }
84
+ //# sourceMappingURL=voice-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"voice-api.js","sourceRoot":"","sources":["../src/voice-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAG1D,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,MAAkB;IACjD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,CAAC,OAAO,aAAa,EAAE;QAC3D,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,MAAM,CAAC,MAAM,EAAE,EAAE;KACtD,CAAC,CAAC;IACH,IAAI,CAAC,QAAQ,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,MAAM,uBAAuB,CAAC,uBAAuB,EAAE,QAAQ,CAAC,CAAC,CAAC;IACpG,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAS,CAAC;IAC1C,OAAO,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;AAC3B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,MAAkB,EAClB,OAAe,EACf,OAAiC;IAEjC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,CAAC,OAAO,0BAA0B,EAAE;QACxE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,MAAM,CAAC,MAAM,EAAE;YACxC,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,aAAa,EAAE,EAAE,OAAO,EAAE;YAC1B,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAChC,CAAC;KACH,CAAC,CAAC;IACH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,MAAM,uBAAuB,CAAC,yCAAyC,EAAE,QAAQ,CAAC,CAAC,CAAC;IACtG,CAAC;IACD,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;AACzB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,MAAkB,EAClB,IAQC;IAED,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;IACpE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChD,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1C,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1C,IAAI,IAAI,CAAC,UAAU;QAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAClF,IAAI,IAAI,CAAC,OAAO;QAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAEzE,MAAM,EAAE,GAAI,UAAkB,CAAC,SAAS,CAAC;IACzC,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAE7C,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC1C,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC,GAAG,EAAE;YACrB,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,MAAM,CAAC,MAAM,EAAE;aACzC;SACF,CAAC,CAAC;QAEH,EAAE,CAAC,MAAM,GAAG,GAAG,EAAE;YACf,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAClE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;QACjD,CAAC,CAAC;QAEF,EAAE,CAAC,SAAS,GAAG,CAAC,KAAU,EAAE,EAAE;YAC5B,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC5C,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;oBAC9C,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;gBACjD,CAAC;qBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;oBACtC,OAAO,EAAE,CAAC;oBACV,EAAE,CAAC,KAAK,EAAE,CAAC;gBACb,CAAC;qBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;oBACjC,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,sBAAsB,CAAC,CAAC,CAAC;oBAC1D,EAAE,CAAC,KAAK,EAAE,CAAC;gBACb,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC5D,EAAE,CAAC,KAAK,EAAE,CAAC;YACb,CAAC;QACH,CAAC,CAAC;QAEF,EAAE,CAAC,OAAO,GAAG,CAAC,KAAU,EAAE,EAAE;YAC1B,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,OAAO,IAAI,iCAAiC,CAAC,CAAC,CAAC;QACzE,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACrC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACrC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;AACtD,CAAC"}
package/package.json ADDED
@@ -0,0 +1,64 @@
1
+ {
2
+ "name": "grok-agent",
3
+ "version": "0.5.0",
4
+ "description": "A coding assistant CLI powered by xAI's Grok models",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "bin": {
9
+ "grok-agent": "./bin/grok-cli.js"
10
+ },
11
+ "files": [
12
+ "dist",
13
+ "bin",
14
+ "README.md",
15
+ "CHANGELOG.md",
16
+ "LICENSE"
17
+ ],
18
+ "scripts": {
19
+ "build": "tsc",
20
+ "dev": "tsx src/index.ts",
21
+ "start": "node dist/index.js",
22
+ "test": "tsc -p tsconfig.test.json && node --test dist-tests/tests/*.test.js",
23
+ "lint": "tsc --noEmit",
24
+ "prepare": "npm run build"
25
+ },
26
+ "keywords": [
27
+ "grok",
28
+ "xai",
29
+ "cli",
30
+ "coding-assistant",
31
+ "agent",
32
+ "ai",
33
+ "llm",
34
+ "developer-tools",
35
+ "code-generation",
36
+ "function-calling"
37
+ ],
38
+ "repository": {
39
+ "type": "git",
40
+ "url": "https://github.com/baba20o/grok-cli.git"
41
+ },
42
+ "homepage": "https://github.com/baba20o/grok-cli#readme",
43
+ "bugs": {
44
+ "url": "https://github.com/baba20o/grok-cli/issues"
45
+ },
46
+ "author": "baba20o",
47
+ "dependencies": {
48
+ "chalk": "^5.4.1",
49
+ "commander": "^13.1.0",
50
+ "dotenv": "^16.5.0",
51
+ "fast-glob": "^3.3.3",
52
+ "openai": "^4.86.0",
53
+ "ora": "^8.2.0"
54
+ },
55
+ "devDependencies": {
56
+ "@types/node": "^22.12.0",
57
+ "tsx": "^4.19.0",
58
+ "typescript": "^5.7.0"
59
+ },
60
+ "engines": {
61
+ "node": ">=20.0.0"
62
+ },
63
+ "license": "Apache-2.0"
64
+ }