@elizaos/plugin-xai 2.0.0-alpha.1

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 (93) hide show
  1. package/README.md +47 -0
  2. package/dist/actions/post.d.ts +3 -0
  3. package/dist/actions/post.d.ts.map +1 -0
  4. package/dist/base.d.ts +55 -0
  5. package/dist/base.d.ts.map +1 -0
  6. package/dist/browser/index.browser.js +4 -0
  7. package/dist/browser/index.browser.js.map +11 -0
  8. package/dist/browser/index.d.ts +2 -0
  9. package/dist/cjs/index.d.ts +2 -0
  10. package/dist/cjs/index.node.cjs +11176 -0
  11. package/dist/cjs/index.node.js.map +116 -0
  12. package/dist/client/api-types.d.ts +28 -0
  13. package/dist/client/api-types.d.ts.map +1 -0
  14. package/dist/client/auth-providers/broker.d.ts +19 -0
  15. package/dist/client/auth-providers/broker.d.ts.map +1 -0
  16. package/dist/client/auth-providers/env.d.ts +20 -0
  17. package/dist/client/auth-providers/env.d.ts.map +1 -0
  18. package/dist/client/auth-providers/factory.d.ts +5 -0
  19. package/dist/client/auth-providers/factory.d.ts.map +1 -0
  20. package/dist/client/auth-providers/interactive.d.ts +7 -0
  21. package/dist/client/auth-providers/interactive.d.ts.map +1 -0
  22. package/dist/client/auth-providers/oauth2-pkce.d.ts +24 -0
  23. package/dist/client/auth-providers/oauth2-pkce.d.ts.map +1 -0
  24. package/dist/client/auth-providers/pkce.d.ts +5 -0
  25. package/dist/client/auth-providers/pkce.d.ts.map +1 -0
  26. package/dist/client/auth-providers/token-store.d.ts +31 -0
  27. package/dist/client/auth-providers/token-store.d.ts.map +1 -0
  28. package/dist/client/auth-providers/types.d.ts +35 -0
  29. package/dist/client/auth-providers/types.d.ts.map +1 -0
  30. package/dist/client/auth.d.ts +38 -0
  31. package/dist/client/auth.d.ts.map +1 -0
  32. package/dist/client/client.d.ts +462 -0
  33. package/dist/client/client.d.ts.map +1 -0
  34. package/dist/client/errors.d.ts +72 -0
  35. package/dist/client/errors.d.ts.map +1 -0
  36. package/dist/client/index.d.ts +21 -0
  37. package/dist/client/index.d.ts.map +1 -0
  38. package/dist/client/posts.d.ts +325 -0
  39. package/dist/client/posts.d.ts.map +1 -0
  40. package/dist/client/profile.d.ts +140 -0
  41. package/dist/client/profile.d.ts.map +1 -0
  42. package/dist/client/relationships.d.ts +47 -0
  43. package/dist/client/relationships.d.ts.map +1 -0
  44. package/dist/client/search.d.ts +48 -0
  45. package/dist/client/search.d.ts.map +1 -0
  46. package/dist/client/types.d.ts +24 -0
  47. package/dist/client/types.d.ts.map +1 -0
  48. package/dist/constants.d.ts +5 -0
  49. package/dist/constants.d.ts.map +1 -0
  50. package/dist/discovery.d.ts +37 -0
  51. package/dist/discovery.d.ts.map +1 -0
  52. package/dist/environment.d.ts +40 -0
  53. package/dist/environment.d.ts.map +1 -0
  54. package/dist/generated/prompts/typescript/prompts.d.ts +22 -0
  55. package/dist/generated/prompts/typescript/prompts.d.ts.map +1 -0
  56. package/dist/generated/specs/spec-helpers.d.ts +49 -0
  57. package/dist/generated/specs/spec-helpers.d.ts.map +1 -0
  58. package/dist/generated/specs/specs.d.ts +65 -0
  59. package/dist/generated/specs/specs.d.ts.map +1 -0
  60. package/dist/index.browser.d.ts +6 -0
  61. package/dist/index.browser.d.ts.map +1 -0
  62. package/dist/index.d.ts +5 -0
  63. package/dist/index.d.ts.map +1 -0
  64. package/dist/index.node.d.ts +3 -0
  65. package/dist/index.node.d.ts.map +1 -0
  66. package/dist/interactions.d.ts +129 -0
  67. package/dist/interactions.d.ts.map +1 -0
  68. package/dist/models/grok.d.ts +7 -0
  69. package/dist/models/grok.d.ts.map +1 -0
  70. package/dist/node/index.d.ts +2 -0
  71. package/dist/node/index.node.js +11191 -0
  72. package/dist/node/index.node.js.map +116 -0
  73. package/dist/post.d.ts +43 -0
  74. package/dist/post.d.ts.map +1 -0
  75. package/dist/services/x.service.d.ts +23 -0
  76. package/dist/services/x.service.d.ts.map +1 -0
  77. package/dist/templates.d.ts +6 -0
  78. package/dist/templates.d.ts.map +1 -0
  79. package/dist/timeline.d.ts +46 -0
  80. package/dist/timeline.d.ts.map +1 -0
  81. package/dist/types.d.ts +150 -0
  82. package/dist/types.d.ts.map +1 -0
  83. package/dist/utils/error-handler.d.ts +20 -0
  84. package/dist/utils/error-handler.d.ts.map +1 -0
  85. package/dist/utils/memory.d.ts +21 -0
  86. package/dist/utils/memory.d.ts.map +1 -0
  87. package/dist/utils/settings.d.ts +3 -0
  88. package/dist/utils/settings.d.ts.map +1 -0
  89. package/dist/utils/time.d.ts +2 -0
  90. package/dist/utils/time.d.ts.map +1 -0
  91. package/dist/utils.d.ts +36 -0
  92. package/dist/utils.d.ts.map +1 -0
  93. package/package.json +193 -0
package/README.md ADDED
@@ -0,0 +1,47 @@
1
+ # @elizaos/plugin-xai (TypeScript)
2
+
3
+ TypeScript package for elizaOS xAI integration.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ pnpm add @elizaos/plugin-xai
9
+ ```
10
+
11
+ ## Usage
12
+
13
+ ```typescript
14
+ import { XAIPlugin } from "@elizaos/plugin-xai";
15
+ import { AgentRuntime, ModelType } from "@elizaos/core";
16
+
17
+ // Register plugin
18
+ const runtime = new AgentRuntime({
19
+ plugins: [XAIPlugin],
20
+ });
21
+
22
+ // Use Grok models
23
+ const text = await runtime.useModel(ModelType.TEXT_SMALL, {
24
+ prompt: "Explain quantum computing",
25
+ });
26
+
27
+ // Use X service
28
+ const xService = runtime.getService("x") as XService;
29
+ const profile = await xService.xClient.client.xClient.me();
30
+ console.log(`@${profile.username}`);
31
+ ```
32
+
33
+ ## Development
34
+
35
+ ```bash
36
+ # Build
37
+ bun run build
38
+
39
+ # Test
40
+ npx vitest
41
+
42
+ # Lint
43
+ bun run lint
44
+
45
+ # Type check
46
+ bun run typecheck
47
+ ```
@@ -0,0 +1,3 @@
1
+ import { type Action } from "@elizaos/core";
2
+ export declare const postAction: Action;
3
+ //# sourceMappingURL=post.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"post.d.ts","sourceRoot":"","sources":["../../actions/post.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,MAAM,EAUZ,MAAM,eAAe,CAAC;AAOvB,eAAO,MAAM,UAAU,EAAE,MA0HxB,CAAC"}
package/dist/base.d.ts ADDED
@@ -0,0 +1,55 @@
1
+ import { type IAgentRuntime, type Memory, type State } from "@elizaos/core";
2
+ import { Client, type Post, type QueryPostsResponse, SearchMode } from "./client/index";
3
+ import type { XInteractionPayload } from "./types";
4
+ export declare function extractAnswer(text: string): string;
5
+ type XProfile = {
6
+ id: string;
7
+ username: string;
8
+ screenName: string;
9
+ bio: string;
10
+ nicknames: string[];
11
+ };
12
+ declare class RequestQueue {
13
+ private queue;
14
+ private processing;
15
+ private maxRetries;
16
+ private retryAttempts;
17
+ add<T>(request: () => Promise<T>): Promise<T>;
18
+ private processQueue;
19
+ private exponentialBackoff;
20
+ private randomDelay;
21
+ }
22
+ export declare class ClientBase {
23
+ static _xClients: {
24
+ [accountIdentifier: string]: Client;
25
+ };
26
+ xClient: Client;
27
+ runtime: IAgentRuntime;
28
+ lastCheckedPostId: bigint | null;
29
+ temperature: number;
30
+ requestQueue: RequestQueue;
31
+ profile: XProfile | null;
32
+ cachePost(post: Post): Promise<void>;
33
+ getCachedPost(postId: string): Promise<Post | undefined>;
34
+ getPost(postId: string): Promise<Post>;
35
+ callback: ((self: ClientBase) => void) | null;
36
+ onReady(): void;
37
+ state: Record<string, unknown>;
38
+ constructor(runtime: IAgentRuntime, state: Record<string, unknown>);
39
+ init(): Promise<void>;
40
+ fetchOwnPosts(count: number): Promise<Post[]>;
41
+ fetchHomeTimeline(count: number, following?: boolean): Promise<Post[]>;
42
+ fetchSearchPosts(query: string, maxPosts: number, searchMode: SearchMode, cursor?: string): Promise<QueryPostsResponse>;
43
+ private populateTimeline;
44
+ saveRequestMessage(message: Memory, state: State): Promise<void>;
45
+ loadLatestCheckedPostId(): Promise<void>;
46
+ cacheLatestCheckedPostId(): Promise<void>;
47
+ getCachedTimeline(): Promise<Post[] | undefined>;
48
+ cacheTimeline(timeline: Post[]): Promise<void>;
49
+ cacheMentions(mentions: Post[]): Promise<void>;
50
+ fetchProfile(username: string): Promise<XProfile>;
51
+ fetchInteractions(): Promise<(XInteractionPayload | null)[]>;
52
+ formatPostToInteraction(post: Post): XInteractionPayload | null;
53
+ }
54
+ export {};
55
+ //# sourceMappingURL=base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../base.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,aAAa,EAElB,KAAK,MAAM,EACX,KAAK,KAAK,EAEX,MAAM,eAAe,CAAC;AAMvB,OAAO,EAAE,MAAM,EAAE,KAAK,IAAI,EAAE,KAAK,kBAAkB,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAKnD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIlD;AAED,KAAK,QAAQ,GAAG;IACd,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB,CAAC;AAEF,cAAM,YAAY;IAChB,OAAO,CAAC,KAAK,CAAkC;IAC/C,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,aAAa,CAA6C;IAE5D,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;YAcrC,YAAY;YAsCZ,kBAAkB;YAKlB,WAAW;CAI1B;AAED,qBAAa,UAAU;IACrB,MAAM,CAAC,SAAS,EAAE;QAAE,CAAC,iBAAiB,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAM;IAC/D,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,aAAa,CAAC;IACvB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAQ;IACxC,WAAW,SAAO;IAElB,YAAY,EAAE,YAAY,CAAsB;IAEhD,OAAO,EAAE,QAAQ,GAAG,IAAI,CAAQ;IAE1B,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IASpC,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC;IAUxD,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB5C,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC,GAAG,IAAI,CAAQ;IAErD,OAAO;IAIP,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAEnB,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IA4B5D,IAAI;IAqFJ,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAS7C,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAStE,gBAAgB,CACpB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,UAAU,EACtB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,kBAAkB,CAAC;YAehB,gBAAgB;IAuOxB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK;IAsBhD,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC;IAaxC,wBAAwB;IASxB,iBAAiB,IAAI,OAAO,CAAC,IAAI,EAAE,GAAG,SAAS,CAAC;IAahD,aAAa,CAAC,QAAQ,EAAE,IAAI,EAAE;IAO9B,aAAa,CAAC,QAAQ,EAAE,IAAI,EAAE;IAO9B,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAuCjD,iBAAiB;IAYvB,uBAAuB,CAAC,IAAI,EAAE,IAAI,GAAG,mBAAmB,GAAG,IAAI;CAuBhE"}
@@ -0,0 +1,4 @@
1
+ import{logger as T,ModelType as u}from"@elizaos/core";import{logger as c}from"@elizaos/core";var S="https://api.x.ai/v1",g={small:"grok-3-mini",large:"grok-3",embedding:"grok-embedding"};function m(t){let n=t.getSetting("XAI_API_KEY");if(!n||typeof n!=="string")throw Error("XAI_API_KEY is required");let e=t.getSetting("XAI_BASE_URL"),o=t.getSetting("XAI_SMALL_MODEL"),r=t.getSetting("XAI_MODEL")||t.getSetting("XAI_LARGE_MODEL"),s=t.getSetting("XAI_EMBEDDING_MODEL");return{apiKey:n,baseUrl:typeof e==="string"?e:S,smallModel:typeof o==="string"?o:g.small,largeModel:typeof r==="string"?r:g.large,embeddingModel:typeof s==="string"?s:g.embedding}}function l(t){return{Authorization:`Bearer ${t.apiKey}`,"Content-Type":"application/json"}}async function w(t,n,e){let o=[];o.push({role:"user",content:e.prompt});let r={model:n,messages:o};if(e.temperature!==void 0)r.temperature=e.temperature;if(e.maxTokens!==void 0)r.max_tokens=e.maxTokens;if(e.stopSequences)r.stop=e.stopSequences;if(e.stream&&e.onStreamChunk){r.stream=!0;let i=await fetch(`${t.baseUrl}/chat/completions`,{method:"POST",headers:l(t),body:JSON.stringify(r)});if(!i.ok){let a=await i.text();throw Error(`Grok API error (${i.status}): ${a}`)}let p=i.body?.getReader();if(!p)throw Error("No response body");let I=new TextDecoder,b="";while(!0){let{done:a,value:M}=await p.read();if(a)break;let P=I.decode(M).split(`
2
+ `);for(let h of P){if(!h.startsWith("data: "))continue;let x=h.slice(6);if(x==="[DONE]")continue;let d=JSON.parse(x).choices[0].delta?.content;if(d)b+=d,e.onStreamChunk(d)}}return b}let s=await fetch(`${t.baseUrl}/chat/completions`,{method:"POST",headers:l(t),body:JSON.stringify(r)});if(!s.ok){let i=await s.text();throw Error(`Grok API error (${s.status}): ${i}`)}let f=await s.json();if(!f.choices?.[0]?.message?.content)throw Error("No content in Grok response");return f.choices[0].message.content}async function _(t,n){let e=await fetch(`${t.baseUrl}/embeddings`,{method:"POST",headers:l(t),body:JSON.stringify({model:t.embeddingModel,input:n})});if(!e.ok){let r=await e.text();throw Error(`Grok Embedding API error (${e.status}): ${r}`)}let o=await e.json();if(!o.data?.[0]?.embedding)throw Error("No embedding in Grok response");return o.data[0].embedding}async function A(t,n){let e=m(t);return c.debug(`[Grok] Generating text with model: ${e.smallModel}`),w(e,e.smallModel,n)}async function k(t,n){let e=m(t);return c.debug(`[Grok] Generating text with model: ${e.largeModel}`),w(e,e.largeModel,n)}async function E(t,n){if(n===null)throw Error("Null params provided for embedding");let e=m(t),o=typeof n==="string"?n:n.text;if(!o)throw Error("Empty text provided for embedding");return c.debug(`[Grok] Creating embedding with model: ${e.embeddingModel}`),_(e,o)}function y(t){return!!t.getSetting("XAI_API_KEY")}var G={name:"xai",description:"xAI Grok models (browser-safe, no X actions/services)",init:async(t,n)=>{if(T.log("Initializing xAI browser plugin..."),y(n))T.log("✓ Grok API configured")},models:{[u.TEXT_SMALL]:A,[u.TEXT_LARGE]:k,[u.TEXT_EMBEDDING]:E}},N=G;export{N as default,G as XAIPlugin};
3
+
4
+ //# debugId=1F17873EF79E345F64756E2164756E21
@@ -0,0 +1,11 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../index.browser.ts", "../../models/grok.ts"],
4
+ "sourcesContent": [
5
+ "import type { IAgentRuntime, Plugin } from \"@elizaos/core\";\nimport { logger, ModelType } from \"@elizaos/core\";\nimport {\n handleTextEmbedding,\n handleTextLarge,\n handleTextSmall,\n isGrokConfigured,\n} from \"./models/grok\";\n\nexport type { TwitterConfig } from \"./environment\";\nexport type { ActionResponse, IXClient, MediaData, Post } from \"./types\";\n\nexport const XAIPlugin: Plugin = {\n name: \"xai\",\n description: \"xAI Grok models (browser-safe, no X actions/services)\",\n\n init: async (_config: Record<string, string>, runtime: IAgentRuntime) => {\n logger.log(\"Initializing xAI browser plugin...\");\n if (isGrokConfigured(runtime)) {\n logger.log(\"✓ Grok API configured\");\n }\n },\n\n models: {\n [ModelType.TEXT_SMALL]: handleTextSmall,\n [ModelType.TEXT_LARGE]: handleTextLarge,\n [ModelType.TEXT_EMBEDDING]: handleTextEmbedding,\n },\n};\n\nexport default XAIPlugin;\n",
6
+ "import {\n type GenerateTextParams,\n type IAgentRuntime,\n logger,\n type TextEmbeddingParams,\n type TextStreamResult,\n} from \"@elizaos/core\";\n\nconst XAI_API_BASE = \"https://api.x.ai/v1\";\n\nconst DEFAULT_MODELS = {\n small: \"grok-3-mini\",\n large: \"grok-3\",\n embedding: \"grok-embedding\",\n} as const;\n\ninterface GrokConfig {\n apiKey: string;\n baseUrl: string;\n smallModel: string;\n largeModel: string;\n embeddingModel: string;\n}\n\nfunction getConfig(runtime: IAgentRuntime): GrokConfig {\n const apiKey = runtime.getSetting(\"XAI_API_KEY\");\n if (!apiKey || typeof apiKey !== \"string\") {\n throw new Error(\"XAI_API_KEY is required\");\n }\n\n const baseUrl = runtime.getSetting(\"XAI_BASE_URL\");\n const smallModel = runtime.getSetting(\"XAI_SMALL_MODEL\");\n const largeModel = runtime.getSetting(\"XAI_MODEL\") || runtime.getSetting(\"XAI_LARGE_MODEL\");\n const embeddingModel = runtime.getSetting(\"XAI_EMBEDDING_MODEL\");\n\n return {\n apiKey,\n baseUrl: typeof baseUrl === \"string\" ? baseUrl : XAI_API_BASE,\n smallModel: typeof smallModel === \"string\" ? smallModel : DEFAULT_MODELS.small,\n largeModel: typeof largeModel === \"string\" ? largeModel : DEFAULT_MODELS.large,\n embeddingModel: typeof embeddingModel === \"string\" ? embeddingModel : DEFAULT_MODELS.embedding,\n };\n}\n\nfunction getAuthHeader(config: GrokConfig): Record<string, string> {\n return {\n Authorization: `Bearer ${config.apiKey}`,\n \"Content-Type\": \"application/json\",\n };\n}\n\ninterface ChatMessage {\n role: \"system\" | \"user\" | \"assistant\";\n content: string;\n}\n\ninterface ChatCompletionResponse {\n id: string;\n object: string;\n created: number;\n model: string;\n choices: Array<{\n index: number;\n message: {\n role: string;\n content: string;\n };\n finish_reason: string;\n }>;\n usage: {\n prompt_tokens: number;\n completion_tokens: number;\n total_tokens: number;\n };\n}\n\ninterface EmbeddingResponse {\n object: string;\n data: Array<{\n object: string;\n embedding: number[];\n index: number;\n }>;\n model: string;\n usage: {\n prompt_tokens: number;\n total_tokens: number;\n };\n}\n\nasync function generateText(\n config: GrokConfig,\n model: string,\n params: GenerateTextParams\n): Promise<string | TextStreamResult> {\n const messages: ChatMessage[] = [];\n messages.push({ role: \"user\", content: params.prompt });\n\n const body: Record<string, unknown> = {\n model,\n messages,\n };\n\n if (params.temperature !== undefined) {\n body.temperature = params.temperature;\n }\n if (params.maxTokens !== undefined) {\n body.max_tokens = params.maxTokens;\n }\n if (params.stopSequences) {\n body.stop = params.stopSequences;\n }\n\n if (params.stream && params.onStreamChunk) {\n body.stream = true;\n\n const response = await fetch(`${config.baseUrl}/chat/completions`, {\n method: \"POST\",\n headers: getAuthHeader(config),\n body: JSON.stringify(body),\n });\n\n if (!response.ok) {\n const error = await response.text();\n throw new Error(`Grok API error (${response.status}): ${error}`);\n }\n\n const reader = response.body?.getReader();\n if (!reader) {\n throw new Error(\"No response body\");\n }\n\n const decoder = new TextDecoder();\n let fullText = \"\";\n\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n\n const chunk = decoder.decode(value);\n const lines = chunk.split(\"\\n\");\n\n for (const line of lines) {\n if (!line.startsWith(\"data: \")) continue;\n const data = line.slice(6);\n if (data === \"[DONE]\") continue;\n\n const parsed = JSON.parse(data);\n const content = parsed.choices[0].delta?.content;\n if (content) {\n fullText += content;\n params.onStreamChunk(content);\n }\n }\n }\n\n return fullText;\n }\n\n const response = await fetch(`${config.baseUrl}/chat/completions`, {\n method: \"POST\",\n headers: getAuthHeader(config),\n body: JSON.stringify(body),\n });\n\n if (!response.ok) {\n const error = await response.text();\n throw new Error(`Grok API error (${response.status}): ${error}`);\n }\n\n const data = (await response.json()) as ChatCompletionResponse;\n\n if (!data.choices?.[0]?.message?.content) {\n throw new Error(\"No content in Grok response\");\n }\n\n return data.choices[0].message.content;\n}\n\nasync function createEmbedding(config: GrokConfig, text: string): Promise<number[]> {\n const response = await fetch(`${config.baseUrl}/embeddings`, {\n method: \"POST\",\n headers: getAuthHeader(config),\n body: JSON.stringify({\n model: config.embeddingModel,\n input: text,\n }),\n });\n\n if (!response.ok) {\n const error = await response.text();\n throw new Error(`Grok Embedding API error (${response.status}): ${error}`);\n }\n\n const data = (await response.json()) as EmbeddingResponse;\n\n if (!data.data?.[0]?.embedding) {\n throw new Error(\"No embedding in Grok response\");\n }\n\n return data.data[0].embedding;\n}\n\nexport async function handleTextSmall(\n runtime: IAgentRuntime,\n params: GenerateTextParams\n): Promise<string | TextStreamResult> {\n const config = getConfig(runtime);\n logger.debug(`[Grok] Generating text with model: ${config.smallModel}`);\n return generateText(config, config.smallModel, params);\n}\n\nexport async function handleTextLarge(\n runtime: IAgentRuntime,\n params: GenerateTextParams\n): Promise<string | TextStreamResult> {\n const config = getConfig(runtime);\n logger.debug(`[Grok] Generating text with model: ${config.largeModel}`);\n return generateText(config, config.largeModel, params);\n}\n\nexport async function handleTextEmbedding(\n runtime: IAgentRuntime,\n params: TextEmbeddingParams | string | null\n): Promise<number[]> {\n if (params === null) {\n throw new Error(\"Null params provided for embedding\");\n }\n const config = getConfig(runtime);\n const text = typeof params === \"string\" ? params : (params as TextEmbeddingParams).text;\n if (!text) {\n throw new Error(\"Empty text provided for embedding\");\n }\n logger.debug(`[Grok] Creating embedding with model: ${config.embeddingModel}`);\n return createEmbedding(config, text);\n}\n\nexport async function listModels(runtime: IAgentRuntime): Promise<Record<string, unknown>[]> {\n const config = getConfig(runtime);\n\n const response = await fetch(`${config.baseUrl}/models`, {\n headers: getAuthHeader(config),\n });\n\n if (!response.ok) {\n const error = await response.text();\n throw new Error(`Grok API error (${response.status}): ${error}`);\n }\n\n const data = (await response.json()) as { data: Record<string, unknown>[] };\n return data.data;\n}\n\nexport function isGrokConfigured(runtime: IAgentRuntime): boolean {\n return !!runtime.getSetting(\"XAI_API_KEY\");\n}\n"
7
+ ],
8
+ "mappings": "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",
9
+ "debugId": "1F17873EF79E345F64756E2164756E21",
10
+ "names": []
11
+ }
@@ -0,0 +1,2 @@
1
+ export * from '../index';
2
+ export { default } from '../index';
@@ -0,0 +1,2 @@
1
+ export * from '../index';
2
+ export { default } from '../index';