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.
- package/CHANGELOG.md +113 -0
- package/LICENSE +190 -0
- package/README.md +449 -0
- package/bin/grok-cli.js +26 -0
- package/dist/agent.d.ts +4 -0
- package/dist/agent.d.ts.map +1 -0
- package/dist/agent.js +898 -0
- package/dist/agent.js.map +1 -0
- package/dist/approvals.d.ts +4 -0
- package/dist/approvals.d.ts.map +1 -0
- package/dist/approvals.js +90 -0
- package/dist/approvals.js.map +1 -0
- package/dist/batch-api.d.ts +11 -0
- package/dist/batch-api.d.ts.map +1 -0
- package/dist/batch-api.js +101 -0
- package/dist/batch-api.js.map +1 -0
- package/dist/cli-errors.d.ts +6 -0
- package/dist/cli-errors.d.ts.map +1 -0
- package/dist/cli-errors.js +80 -0
- package/dist/cli-errors.js.map +1 -0
- package/dist/client.d.ts +6 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +41 -0
- package/dist/client.js.map +1 -0
- package/dist/collections-api.d.ts +11 -0
- package/dist/collections-api.d.ts.map +1 -0
- package/dist/collections-api.js +144 -0
- package/dist/collections-api.js.map +1 -0
- package/dist/compaction.d.ts +11 -0
- package/dist/compaction.d.ts.map +1 -0
- package/dist/compaction.js +94 -0
- package/dist/compaction.js.map +1 -0
- package/dist/config.d.ts +12 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +142 -0
- package/dist/config.js.map +1 -0
- package/dist/diff.d.ts +5 -0
- package/dist/diff.d.ts.map +1 -0
- package/dist/diff.js +80 -0
- package/dist/diff.js.map +1 -0
- package/dist/hooks.d.ts +11 -0
- package/dist/hooks.d.ts.map +1 -0
- package/dist/hooks.js +30 -0
- package/dist/hooks.js.map +1 -0
- package/dist/image.d.ts +8 -0
- package/dist/image.d.ts.map +1 -0
- package/dist/image.js +58 -0
- package/dist/image.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1264 -0
- package/dist/index.js.map +1 -0
- package/dist/json-output.d.ts +27 -0
- package/dist/json-output.d.ts.map +1 -0
- package/dist/json-output.js +62 -0
- package/dist/json-output.js.map +1 -0
- package/dist/notifications.d.ts +6 -0
- package/dist/notifications.d.ts.map +1 -0
- package/dist/notifications.js +25 -0
- package/dist/notifications.js.map +1 -0
- package/dist/project-context.d.ts +6 -0
- package/dist/project-context.d.ts.map +1 -0
- package/dist/project-context.js +34 -0
- package/dist/project-context.js.map +1 -0
- package/dist/response-utils.d.ts +10 -0
- package/dist/response-utils.d.ts.map +1 -0
- package/dist/response-utils.js +123 -0
- package/dist/response-utils.js.map +1 -0
- package/dist/server-tools.d.ts +7 -0
- package/dist/server-tools.d.ts.map +1 -0
- package/dist/server-tools.js +205 -0
- package/dist/server-tools.js.map +1 -0
- package/dist/session.d.ts +46 -0
- package/dist/session.d.ts.map +1 -0
- package/dist/session.js +305 -0
- package/dist/session.js.map +1 -0
- package/dist/stream.d.ts +22 -0
- package/dist/stream.d.ts.map +1 -0
- package/dist/stream.js +102 -0
- package/dist/stream.js.map +1 -0
- package/dist/system-prompt.d.ts +3 -0
- package/dist/system-prompt.d.ts.map +1 -0
- package/dist/system-prompt.js +64 -0
- package/dist/system-prompt.js.map +1 -0
- package/dist/tools/bash.d.ts +8 -0
- package/dist/tools/bash.d.ts.map +1 -0
- package/dist/tools/bash.js +49 -0
- package/dist/tools/bash.js.map +1 -0
- package/dist/tools/definitions.d.ts +3 -0
- package/dist/tools/definitions.d.ts.map +1 -0
- package/dist/tools/definitions.js +190 -0
- package/dist/tools/definitions.js.map +1 -0
- package/dist/tools/edit-file.d.ts +10 -0
- package/dist/tools/edit-file.d.ts.map +1 -0
- package/dist/tools/edit-file.js +73 -0
- package/dist/tools/edit-file.js.map +1 -0
- package/dist/tools/glob.d.ts +7 -0
- package/dist/tools/glob.d.ts.map +1 -0
- package/dist/tools/glob.js +44 -0
- package/dist/tools/glob.js.map +1 -0
- package/dist/tools/grep.d.ts +10 -0
- package/dist/tools/grep.d.ts.map +1 -0
- package/dist/tools/grep.js +102 -0
- package/dist/tools/grep.js.map +1 -0
- package/dist/tools/index.d.ts +10 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +41 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/list-dir.d.ts +7 -0
- package/dist/tools/list-dir.d.ts.map +1 -0
- package/dist/tools/list-dir.js +68 -0
- package/dist/tools/list-dir.js.map +1 -0
- package/dist/tools/policy.d.ts +4 -0
- package/dist/tools/policy.d.ts.map +1 -0
- package/dist/tools/policy.js +36 -0
- package/dist/tools/policy.js.map +1 -0
- package/dist/tools/read-file.d.ts +8 -0
- package/dist/tools/read-file.d.ts.map +1 -0
- package/dist/tools/read-file.js +45 -0
- package/dist/tools/read-file.js.map +1 -0
- package/dist/tools/write-file.d.ts +7 -0
- package/dist/tools/write-file.d.ts.map +1 -0
- package/dist/tools/write-file.js +35 -0
- package/dist/tools/write-file.js.map +1 -0
- package/dist/truncation.d.ts +13 -0
- package/dist/truncation.d.ts.map +1 -0
- package/dist/truncation.js +55 -0
- package/dist/truncation.js.map +1 -0
- package/dist/types.d.ts +159 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/usage.d.ts +17 -0
- package/dist/usage.d.ts.map +1 -0
- package/dist/usage.js +80 -0
- package/dist/usage.js.map +1 -0
- package/dist/voice-api.d.ts +16 -0
- package/dist/voice-api.d.ts.map +1 -0
- package/dist/voice-api.js +84 -0
- package/dist/voice-api.js.map +1 -0
- package/package.json +64 -0
package/dist/types.d.ts
ADDED
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
package/dist/usage.d.ts
ADDED
|
@@ -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":"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"}
|
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
|
+
}
|