memeloop 0.0.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 (137) hide show
  1. package/dist/anthropic.cjs +72 -0
  2. package/dist/anthropic.cjs.map +1 -0
  3. package/dist/anthropic.d.cts +21 -0
  4. package/dist/anthropic.d.ts +21 -0
  5. package/dist/anthropic.js +21 -0
  6. package/dist/anthropic.js.map +1 -0
  7. package/dist/azure.cjs +72 -0
  8. package/dist/azure.cjs.map +1 -0
  9. package/dist/azure.d.cts +21 -0
  10. package/dist/azure.d.ts +21 -0
  11. package/dist/azure.js +21 -0
  12. package/dist/azure.js.map +1 -0
  13. package/dist/chunk-3CN7DFBL.js +4894 -0
  14. package/dist/chunk-3CN7DFBL.js.map +1 -0
  15. package/dist/chunk-4AZ4D7U5.js +32 -0
  16. package/dist/chunk-4AZ4D7U5.js.map +1 -0
  17. package/dist/chunk-6ON4XSOV.js +63 -0
  18. package/dist/chunk-6ON4XSOV.js.map +1 -0
  19. package/dist/chunk-DJQNGIXX.js +4793 -0
  20. package/dist/chunk-DJQNGIXX.js.map +1 -0
  21. package/dist/chunk-FKQP6AOQ.js +32 -0
  22. package/dist/chunk-FKQP6AOQ.js.map +1 -0
  23. package/dist/chunk-OVJ7JJBA.js +35 -0
  24. package/dist/chunk-OVJ7JJBA.js.map +1 -0
  25. package/dist/chunk-P4UZ7IXC.js +42 -0
  26. package/dist/chunk-P4UZ7IXC.js.map +1 -0
  27. package/dist/chunk-YHJ2AEFR.js +4933 -0
  28. package/dist/chunk-YHJ2AEFR.js.map +1 -0
  29. package/dist/chunk-YVK7RYRO.js +4973 -0
  30. package/dist/chunk-YVK7RYRO.js.map +1 -0
  31. package/dist/code-assistant.json +114 -0
  32. package/dist/cohere.cjs +72 -0
  33. package/dist/cohere.cjs.map +1 -0
  34. package/dist/cohere.d.cts +21 -0
  35. package/dist/cohere.d.ts +21 -0
  36. package/dist/cohere.js +21 -0
  37. package/dist/cohere.js.map +1 -0
  38. package/dist/deepseek.cjs +72 -0
  39. package/dist/deepseek.cjs.map +1 -0
  40. package/dist/deepseek.d.cts +21 -0
  41. package/dist/deepseek.d.ts +21 -0
  42. package/dist/deepseek.js +21 -0
  43. package/dist/deepseek.js.map +1 -0
  44. package/dist/dist-65U7OYRG.js +1257 -0
  45. package/dist/dist-65U7OYRG.js.map +1 -0
  46. package/dist/fetchProvider-Cu4WkU5O.d.cts +819 -0
  47. package/dist/fetchProvider-Cu4WkU5O.d.ts +819 -0
  48. package/dist/frontend-ui-ux.json +105 -0
  49. package/dist/general-assistant.json +95 -0
  50. package/dist/git-master.json +51 -0
  51. package/dist/google-vertex.cjs +72 -0
  52. package/dist/google-vertex.cjs.map +1 -0
  53. package/dist/google-vertex.d.cts +21 -0
  54. package/dist/google-vertex.d.ts +21 -0
  55. package/dist/google-vertex.js +21 -0
  56. package/dist/google-vertex.js.map +1 -0
  57. package/dist/google.cjs +72 -0
  58. package/dist/google.cjs.map +1 -0
  59. package/dist/google.d.cts +21 -0
  60. package/dist/google.d.ts +21 -0
  61. package/dist/google.js +21 -0
  62. package/dist/google.js.map +1 -0
  63. package/dist/groq.cjs +72 -0
  64. package/dist/groq.cjs.map +1 -0
  65. package/dist/groq.d.cts +21 -0
  66. package/dist/groq.d.ts +21 -0
  67. package/dist/groq.js +21 -0
  68. package/dist/groq.js.map +1 -0
  69. package/dist/index.cjs +8916 -0
  70. package/dist/index.cjs.map +1 -0
  71. package/dist/index.d.cts +1816 -0
  72. package/dist/index.d.mts +3203 -0
  73. package/dist/index.d.ts +1816 -0
  74. package/dist/index.js +4040 -0
  75. package/dist/index.js.map +1 -0
  76. package/dist/index.mjs +7064 -0
  77. package/dist/index.mjs.map +1 -0
  78. package/dist/llm-providers.cjs +311 -0
  79. package/dist/llm-providers.cjs.map +1 -0
  80. package/dist/llm-providers.d.cts +111 -0
  81. package/dist/llm-providers.d.ts +111 -0
  82. package/dist/llm-providers.js +232 -0
  83. package/dist/llm-providers.js.map +1 -0
  84. package/dist/loop-api.cjs +4924 -0
  85. package/dist/loop-api.cjs.map +1 -0
  86. package/dist/loop-api.d.cts +11 -0
  87. package/dist/loop-api.d.ts +11 -0
  88. package/dist/loop-api.js +189 -0
  89. package/dist/loop-api.js.map +1 -0
  90. package/dist/mistral.cjs +72 -0
  91. package/dist/mistral.cjs.map +1 -0
  92. package/dist/mistral.d.cts +21 -0
  93. package/dist/mistral.d.ts +21 -0
  94. package/dist/mistral.js +21 -0
  95. package/dist/mistral.js.map +1 -0
  96. package/dist/multipart-parser-EJCXIUHC.js +372 -0
  97. package/dist/multipart-parser-EJCXIUHC.js.map +1 -0
  98. package/dist/openai.cjs +72 -0
  99. package/dist/openai.cjs.map +1 -0
  100. package/dist/openai.d.cts +21 -0
  101. package/dist/openai.d.ts +21 -0
  102. package/dist/openai.js +21 -0
  103. package/dist/openai.js.map +1 -0
  104. package/dist/perplexity.cjs +72 -0
  105. package/dist/perplexity.cjs.map +1 -0
  106. package/dist/perplexity.d.cts +21 -0
  107. package/dist/perplexity.d.ts +21 -0
  108. package/dist/perplexity.js +21 -0
  109. package/dist/perplexity.js.map +1 -0
  110. package/dist/playwright.json +52 -0
  111. package/dist/promptConcat-BJdazTg5.d.cts +1832 -0
  112. package/dist/promptConcat-BJdazTg5.d.ts +1832 -0
  113. package/dist/promptConcat-CAkpni_8.d.cts +1834 -0
  114. package/dist/promptConcat-CAkpni_8.d.ts +1834 -0
  115. package/dist/promptConcat-CfH5-GAE.d.cts +1036 -0
  116. package/dist/promptConcat-ChcAZOOL.d.ts +1036 -0
  117. package/dist/promptConcat-G5TnJVRy.d.cts +1800 -0
  118. package/dist/promptConcat-G5TnJVRy.d.ts +1800 -0
  119. package/dist/promptConcat-L72eowzp.d.ts +1090 -0
  120. package/dist/promptConcat-eLHdN7K8.d.cts +1090 -0
  121. package/dist/src-VTSXKG72.js +1409 -0
  122. package/dist/src-VTSXKG72.js.map +1 -0
  123. package/dist/togetherai.cjs +72 -0
  124. package/dist/togetherai.cjs.map +1 -0
  125. package/dist/togetherai.d.cts +21 -0
  126. package/dist/togetherai.d.ts +21 -0
  127. package/dist/togetherai.js +21 -0
  128. package/dist/togetherai.js.map +1 -0
  129. package/dist/types-B0Jm2l38.d.cts +767 -0
  130. package/dist/types-B0Jm2l38.d.ts +767 -0
  131. package/dist/xai.cjs +72 -0
  132. package/dist/xai.cjs.map +1 -0
  133. package/dist/xai.d.cts +21 -0
  134. package/dist/xai.d.ts +21 -0
  135. package/dist/xai.js +21 -0
  136. package/dist/xai.js.map +1 -0
  137. package/package.json +87 -0
@@ -0,0 +1,114 @@
1
+ {
2
+ "id": "memeloop:code-assistant",
3
+ "name": "代码助手",
4
+ "description": "专注于代码编写、重构和调试的助手。",
5
+ "loopId": "agent-tool-loop",
6
+ "systemPrompt": "You are a senior software engineer helping the user write and refactor code.",
7
+ "tools": [
8
+ "workspacesList",
9
+ "wikiSearch",
10
+ "wikiOperation",
11
+ "modelContextProtocol",
12
+ "spawnAgent",
13
+ "askQuestion",
14
+ "getErrors",
15
+ "webFetch"
16
+ ],
17
+ "plugins": [
18
+ { "id": "builtin:mcp-client" },
19
+ { "id": "builtin:mcp-forward" },
20
+ { "id": "builtin:spawn-agent" },
21
+ { "id": "builtin:ask-question" }
22
+ ],
23
+ "agentTools": [
24
+ {
25
+ "toolId": "workspacesList",
26
+ "parameters": {
27
+ "workspacesListParam": { "targetId": "builtin-system", "position": "after" }
28
+ }
29
+ },
30
+ {
31
+ "toolId": "wikiSearch",
32
+ "parameters": {
33
+ "wikiSearchParam": {
34
+ "sourceType": "wiki",
35
+ "toolListPosition": { "targetId": "builtin-system", "position": "after" },
36
+ "toolResultDuration": 1
37
+ }
38
+ }
39
+ },
40
+ {
41
+ "toolId": "wikiOperation",
42
+ "parameters": {
43
+ "wikiOperationParam": {
44
+ "toolListPosition": { "targetId": "builtin-system", "position": "after" },
45
+ "toolResultDuration": 1
46
+ }
47
+ }
48
+ },
49
+ {
50
+ "toolId": "modelContextProtocol",
51
+ "parameters": {
52
+ "modelContextProtocolParam": {
53
+ "serverUrl": "http://127.0.0.1:38385/mcp",
54
+ "timeoutSecond": 30,
55
+ "toolListPosition": { "targetId": "builtin-system", "position": "after" },
56
+ "toolResultDuration": 1
57
+ }
58
+ }
59
+ },
60
+ {
61
+ "toolId": "spawnAgent",
62
+ "parameters": {
63
+ "spawnAgentParam": {
64
+ "toolListPosition": { "targetId": "builtin-system", "position": "after" },
65
+ "toolResultDuration": 2,
66
+ "defaultTimeoutMs": 120000
67
+ }
68
+ }
69
+ },
70
+ {
71
+ "toolId": "askQuestion",
72
+ "parameters": {
73
+ "askQuestionParam": {
74
+ "toolListPosition": { "targetId": "builtin-system", "position": "after" }
75
+ }
76
+ }
77
+ },
78
+ {
79
+ "toolId": "getErrors",
80
+ "parameters": {
81
+ "getErrorsParam": {
82
+ "toolListPosition": { "targetId": "builtin-system", "position": "after" }
83
+ }
84
+ }
85
+ },
86
+ {
87
+ "toolId": "webFetch",
88
+ "parameters": {
89
+ "webFetchParam": {
90
+ "toolListPosition": { "targetId": "builtin-system", "position": "after" },
91
+ "toolResultDuration": 1
92
+ }
93
+ }
94
+ }
95
+ ],
96
+ "agentFrameworkConfig": {
97
+ "prompts": [
98
+ {
99
+ "id": "builtin-system",
100
+ "role": "system",
101
+ "text": "You are a senior software engineer helping the user write and refactor code. Prefer small, safe edits; use file.read and file.search before changing code; use terminal.execute for build/tests when appropriate."
102
+ }
103
+ ],
104
+ "plugins": [{ "toolId": "fullReplacement" }],
105
+ "response": []
106
+ },
107
+ "modelConfig": {
108
+ "provider": "memeloop",
109
+ "model": "claude-opus-4.6",
110
+ "temperature": 0.2,
111
+ "maxTokens": 4096
112
+ },
113
+ "version": "1.0.0"
114
+ }
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/llm/providers/cohere.ts
21
+ var cohere_exports = {};
22
+ __export(cohere_exports, {
23
+ createCohereProvider: () => createCohereProvider
24
+ });
25
+ module.exports = __toCommonJS(cohere_exports);
26
+ var import_cohere = require("@ai-sdk/cohere");
27
+
28
+ // src/llm/fetchProvider.ts
29
+ var import_ai = require("ai");
30
+ function createFetchLLMProvider(config) {
31
+ return {
32
+ name: config.name,
33
+ // Store the factory so hosts can introspect or extend
34
+ model: config.createModel,
35
+ async chat(request) {
36
+ const body = typeof request === "object" && request !== null ? request : {};
37
+ const model = config.createModel(body.model ?? "gpt-4o-mini");
38
+ const messages = (body.messages ?? []).map((message) => ({
39
+ role: message.role,
40
+ content: message.content
41
+ }));
42
+ if (body.stream !== false) {
43
+ const result2 = (0, import_ai.streamText)({ model, messages });
44
+ return (async function* () {
45
+ for await (const chunk of result2.textStream) {
46
+ yield chunk;
47
+ }
48
+ })();
49
+ }
50
+ const result = await (0, import_ai.generateText)({ model, messages });
51
+ return result.text;
52
+ }
53
+ };
54
+ }
55
+
56
+ // src/llm/providers/cohere.ts
57
+ function createCohereProvider(config) {
58
+ const sdk = (0, import_cohere.createCohere)({
59
+ baseURL: config.baseUrl ?? "https://api.cohere.com/v1",
60
+ apiKey: config.apiKey
61
+ });
62
+ return createFetchLLMProvider({
63
+ name: config.name,
64
+ // Provider packages may return LanguageModelV1..V4 — cast to satisfy core types
65
+ createModel: (modelId) => sdk(modelId)
66
+ });
67
+ }
68
+ // Annotate the CommonJS export names for ESM import in node:
69
+ 0 && (module.exports = {
70
+ createCohereProvider
71
+ });
72
+ //# sourceMappingURL=cohere.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/llm/providers/cohere.ts","../src/llm/fetchProvider.ts"],"sourcesContent":["/**\n * Pre-built COHERE provider — wraps @ai-sdk/cohere.\n *\n * Import from 'memeloop/cohere' (bundles only @ai-sdk/cohere).\n * Or inject your own via createFetchLLMProvider from 'memeloop'.\n */\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore — provider package may be at a different AI SDK version than core\nimport { createCohere } from '@ai-sdk/cohere';\nimport { createFetchLLMProvider, type FetchLLMProviderConfig } from '../fetchProvider.js';\nimport type { ILLMProvider } from '../../types.js';\n\n// ─── Config ────────────────────────────────────────────────────────────\n\nexport interface CohereProviderConfig extends Omit<FetchLLMProviderConfig, 'createModel'> {\n /** Override the default API base URL. */\n baseUrl?: string;\n /** API key. */\n apiKey?: string;\n}\n\n// ─── Factory ───────────────────────────────────────────────────────────\n\n/**\n * Create an ILLMProvider backed by COHERE.\n *\n * @example\n * ```ts\n * import { createCohereProvider } from 'memeloop/cohere';\n * const provider = createCohereProvider({ name: 'my-cohere', apiKey: '...' });\n * ```\n */\nexport function createCohereProvider(config: CohereProviderConfig): ILLMProvider {\n const sdk = createCohere({\n baseURL: config.baseUrl ?? 'https://api.cohere.com/v1',\n apiKey: config.apiKey,\n });\n return createFetchLLMProvider({\n name: config.name,\n // Provider packages may return LanguageModelV1..V4 — cast to satisfy core types\n createModel: (modelId: string) => sdk(modelId) as any,\n });\n}\n","/**\n * Provider-agnostic LLM provider — wraps any Vercel AI SDK LanguageModelV1.\n *\n * The core does NOT depend on @ai-sdk/openai or any specific provider.\n * Hosts inject their own `createModel` factory:\n *\n * import { createOpenAI } from '@ai-sdk/openai';\n * const openai = createOpenAI({ baseURL: '...', apiKey: '...' });\n * const provider = createAILLMProvider({\n * name: 'openai',\n * createModel: (id) => openai(id),\n * });\n *\n * Or for Anthropic:\n * import { createAnthropic } from '@ai-sdk/anthropic';\n * const anthropic = createAnthropic({ apiKey: '...' });\n * const provider = createAILLMProvider({\n * name: 'claude',\n * createModel: (id) => anthropic(id),\n * });\n *\n * Works with every @ai-sdk/* provider: openai, anthropic, google, deepseek,\n * cohere, mistral, azure, bedrock, groq, ollama, openrouter, together, etc.\n */\n\nimport type { LanguageModelV1 } from 'ai';\nimport { generateText, streamText } from 'ai';\n\nimport type { ILLMProvider } from '../types.js';\n\n// ─── Config ────────────────────────────────────────────────────────────\n\nexport interface FetchLLMProviderConfig {\n /** Display name. */\n name: string;\n /** Factory: given a model id, return a LanguageModelV1 from any @ai-sdk/* provider. */\n createModel: (modelId: string) => LanguageModelV1;\n}\n\n// ─── Factory ───────────────────────────────────────────────────────────\n\n/**\n * Create an `ILLMProvider` that delegates to the Vercel AI SDK.\n *\n * Provider-agnostic — hosts supply their own `createModel` factory.\n * Supports every @ai-sdk/* provider (OpenAI, Anthropic, Google, DeepSeek,\n * Groq, Ollama, OpenRouter, Together, Bedrock, Azure, Mistral, Cohere…).\n *\n * @example\n * ```ts\n * import { createOpenAI } from '@ai-sdk/openai';\n * const openai = createOpenAI({ baseURL: 'https://api.openai.com/v1', apiKey });\n * const provider = createAILLMProvider({\n * name: 'openai',\n * createModel: (modelId) => openai(modelId),\n * });\n * ```\n */\nexport function createFetchLLMProvider(config: FetchLLMProviderConfig): ILLMProvider {\n return {\n name: config.name,\n // Store the factory so hosts can introspect or extend\n model: config.createModel as unknown as LanguageModelV1,\n async chat(request: unknown) {\n const body = (typeof request === 'object' && request !== null ? request : {}) as {\n messages?: Array<{ role: string; content: string }>;\n model?: string;\n stream?: boolean;\n max_tokens?: number;\n temperature?: number;\n };\n\n const model = config.createModel(body.model ?? 'gpt-4o-mini');\n\n const messages = (body.messages ?? []).map((message) => ({\n role: message.role as 'system' | 'user' | 'assistant',\n content: message.content,\n }));\n\n if (body.stream !== false) {\n const result = streamText({ model, messages });\n return (async function*() {\n for await (const chunk of result.textStream) {\n yield chunk;\n }\n })();\n }\n\n const result = await generateText({ model, messages });\n return result.text;\n },\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAQA,oBAA6B;;;ACkB7B,gBAAyC;AAgClC,SAAS,uBAAuB,QAA8C;AACnF,SAAO;AAAA,IACL,MAAM,OAAO;AAAA;AAAA,IAEb,OAAO,OAAO;AAAA,IACd,MAAM,KAAK,SAAkB;AAC3B,YAAM,OAAQ,OAAO,YAAY,YAAY,YAAY,OAAO,UAAU,CAAC;AAQ3E,YAAM,QAAQ,OAAO,YAAY,KAAK,SAAS,aAAa;AAE5D,YAAM,YAAY,KAAK,YAAY,CAAC,GAAG,IAAI,CAAC,aAAa;AAAA,QACvD,MAAM,QAAQ;AAAA,QACd,SAAS,QAAQ;AAAA,MACnB,EAAE;AAEF,UAAI,KAAK,WAAW,OAAO;AACzB,cAAMA,cAAS,sBAAW,EAAE,OAAO,SAAS,CAAC;AAC7C,gBAAQ,mBAAkB;AACxB,2BAAiB,SAASA,QAAO,YAAY;AAC3C,kBAAM;AAAA,UACR;AAAA,QACF,GAAG;AAAA,MACL;AAEA,YAAM,SAAS,UAAM,wBAAa,EAAE,OAAO,SAAS,CAAC;AACrD,aAAO,OAAO;AAAA,IAChB;AAAA,EACF;AACF;;;AD5DO,SAAS,qBAAqB,QAA4C;AAC/E,QAAM,UAAM,4BAAa;AAAA,IACvB,SAAS,OAAO,WAAW;AAAA,IAC3B,QAAQ,OAAO;AAAA,EACjB,CAAC;AACD,SAAO,uBAAuB;AAAA,IAC5B,MAAM,OAAO;AAAA;AAAA,IAEb,aAAa,CAAC,YAAoB,IAAI,OAAO;AAAA,EAC/C,CAAC;AACH;","names":["result"]}
@@ -0,0 +1,21 @@
1
+ import { Y as FetchLLMProviderConfig, a1 as ILLMProvider } from './fetchProvider-Cu4WkU5O.cjs';
2
+ import 'ai';
3
+
4
+ interface CohereProviderConfig extends Omit<FetchLLMProviderConfig, 'createModel'> {
5
+ /** Override the default API base URL. */
6
+ baseUrl?: string;
7
+ /** API key. */
8
+ apiKey?: string;
9
+ }
10
+ /**
11
+ * Create an ILLMProvider backed by COHERE.
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * import { createCohereProvider } from 'memeloop/cohere';
16
+ * const provider = createCohereProvider({ name: 'my-cohere', apiKey: '...' });
17
+ * ```
18
+ */
19
+ declare function createCohereProvider(config: CohereProviderConfig): ILLMProvider;
20
+
21
+ export { type CohereProviderConfig, createCohereProvider };
@@ -0,0 +1,21 @@
1
+ import { Y as FetchLLMProviderConfig, a1 as ILLMProvider } from './fetchProvider-Cu4WkU5O.js';
2
+ import 'ai';
3
+
4
+ interface CohereProviderConfig extends Omit<FetchLLMProviderConfig, 'createModel'> {
5
+ /** Override the default API base URL. */
6
+ baseUrl?: string;
7
+ /** API key. */
8
+ apiKey?: string;
9
+ }
10
+ /**
11
+ * Create an ILLMProvider backed by COHERE.
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * import { createCohereProvider } from 'memeloop/cohere';
16
+ * const provider = createCohereProvider({ name: 'my-cohere', apiKey: '...' });
17
+ * ```
18
+ */
19
+ declare function createCohereProvider(config: CohereProviderConfig): ILLMProvider;
20
+
21
+ export { type CohereProviderConfig, createCohereProvider };
package/dist/cohere.js ADDED
@@ -0,0 +1,21 @@
1
+ import {
2
+ createFetchLLMProvider
3
+ } from "./chunk-FKQP6AOQ.js";
4
+
5
+ // src/llm/providers/cohere.ts
6
+ import { createCohere } from "@ai-sdk/cohere";
7
+ function createCohereProvider(config) {
8
+ const sdk = createCohere({
9
+ baseURL: config.baseUrl ?? "https://api.cohere.com/v1",
10
+ apiKey: config.apiKey
11
+ });
12
+ return createFetchLLMProvider({
13
+ name: config.name,
14
+ // Provider packages may return LanguageModelV1..V4 — cast to satisfy core types
15
+ createModel: (modelId) => sdk(modelId)
16
+ });
17
+ }
18
+ export {
19
+ createCohereProvider
20
+ };
21
+ //# sourceMappingURL=cohere.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/llm/providers/cohere.ts"],"sourcesContent":["/**\n * Pre-built COHERE provider — wraps @ai-sdk/cohere.\n *\n * Import from 'memeloop/cohere' (bundles only @ai-sdk/cohere).\n * Or inject your own via createFetchLLMProvider from 'memeloop'.\n */\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore — provider package may be at a different AI SDK version than core\nimport { createCohere } from '@ai-sdk/cohere';\nimport { createFetchLLMProvider, type FetchLLMProviderConfig } from '../fetchProvider.js';\nimport type { ILLMProvider } from '../../types.js';\n\n// ─── Config ────────────────────────────────────────────────────────────\n\nexport interface CohereProviderConfig extends Omit<FetchLLMProviderConfig, 'createModel'> {\n /** Override the default API base URL. */\n baseUrl?: string;\n /** API key. */\n apiKey?: string;\n}\n\n// ─── Factory ───────────────────────────────────────────────────────────\n\n/**\n * Create an ILLMProvider backed by COHERE.\n *\n * @example\n * ```ts\n * import { createCohereProvider } from 'memeloop/cohere';\n * const provider = createCohereProvider({ name: 'my-cohere', apiKey: '...' });\n * ```\n */\nexport function createCohereProvider(config: CohereProviderConfig): ILLMProvider {\n const sdk = createCohere({\n baseURL: config.baseUrl ?? 'https://api.cohere.com/v1',\n apiKey: config.apiKey,\n });\n return createFetchLLMProvider({\n name: config.name,\n // Provider packages may return LanguageModelV1..V4 — cast to satisfy core types\n createModel: (modelId: string) => sdk(modelId) as any,\n });\n}\n"],"mappings":";;;;;AAQA,SAAS,oBAAoB;AAwBtB,SAAS,qBAAqB,QAA4C;AAC/E,QAAM,MAAM,aAAa;AAAA,IACvB,SAAS,OAAO,WAAW;AAAA,IAC3B,QAAQ,OAAO;AAAA,EACjB,CAAC;AACD,SAAO,uBAAuB;AAAA,IAC5B,MAAM,OAAO;AAAA;AAAA,IAEb,aAAa,CAAC,YAAoB,IAAI,OAAO;AAAA,EAC/C,CAAC;AACH;","names":[]}
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/llm/providers/deepseek.ts
21
+ var deepseek_exports = {};
22
+ __export(deepseek_exports, {
23
+ createDeepseekProvider: () => createDeepseekProvider
24
+ });
25
+ module.exports = __toCommonJS(deepseek_exports);
26
+ var import_deepseek = require("@ai-sdk/deepseek");
27
+
28
+ // src/llm/fetchProvider.ts
29
+ var import_ai = require("ai");
30
+ function createFetchLLMProvider(config) {
31
+ return {
32
+ name: config.name,
33
+ // Store the factory so hosts can introspect or extend
34
+ model: config.createModel,
35
+ async chat(request) {
36
+ const body = typeof request === "object" && request !== null ? request : {};
37
+ const model = config.createModel(body.model ?? "gpt-4o-mini");
38
+ const messages = (body.messages ?? []).map((message) => ({
39
+ role: message.role,
40
+ content: message.content
41
+ }));
42
+ if (body.stream !== false) {
43
+ const result2 = (0, import_ai.streamText)({ model, messages });
44
+ return (async function* () {
45
+ for await (const chunk of result2.textStream) {
46
+ yield chunk;
47
+ }
48
+ })();
49
+ }
50
+ const result = await (0, import_ai.generateText)({ model, messages });
51
+ return result.text;
52
+ }
53
+ };
54
+ }
55
+
56
+ // src/llm/providers/deepseek.ts
57
+ function createDeepseekProvider(config) {
58
+ const sdk = (0, import_deepseek.createDeepSeek)({
59
+ baseURL: config.baseUrl ?? "https://api.deepseek.com/v1",
60
+ apiKey: config.apiKey
61
+ });
62
+ return createFetchLLMProvider({
63
+ name: config.name,
64
+ // Provider packages may return LanguageModelV1..V4 — cast to satisfy core types
65
+ createModel: (modelId) => sdk(modelId)
66
+ });
67
+ }
68
+ // Annotate the CommonJS export names for ESM import in node:
69
+ 0 && (module.exports = {
70
+ createDeepseekProvider
71
+ });
72
+ //# sourceMappingURL=deepseek.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/llm/providers/deepseek.ts","../src/llm/fetchProvider.ts"],"sourcesContent":["/**\n * Pre-built DEEPSEEK provider — wraps @ai-sdk/deepseek.\n *\n * Import from 'memeloop/deepseek' (bundles only @ai-sdk/deepseek).\n * Or inject your own via createFetchLLMProvider from 'memeloop'.\n */\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore — provider package may be at a different AI SDK version than core\nimport { createDeepSeek } from '@ai-sdk/deepseek';\nimport { createFetchLLMProvider, type FetchLLMProviderConfig } from '../fetchProvider.js';\nimport type { ILLMProvider } from '../../types.js';\n\n// ─── Config ────────────────────────────────────────────────────────────\n\nexport interface DeepseekProviderConfig extends Omit<FetchLLMProviderConfig, 'createModel'> {\n /** Override the default API base URL. */\n baseUrl?: string;\n /** API key. */\n apiKey?: string;\n}\n\n// ─── Factory ───────────────────────────────────────────────────────────\n\n/**\n * Create an ILLMProvider backed by DEEPSEEK.\n *\n * @example\n * ```ts\n * import { createDeepseekProvider } from 'memeloop/deepseek';\n * const provider = createDeepseekProvider({ name: 'my-deepseek', apiKey: '...' });\n * ```\n */\nexport function createDeepseekProvider(config: DeepseekProviderConfig): ILLMProvider {\n const sdk = createDeepSeek({\n baseURL: config.baseUrl ?? 'https://api.deepseek.com/v1',\n apiKey: config.apiKey,\n });\n return createFetchLLMProvider({\n name: config.name,\n // Provider packages may return LanguageModelV1..V4 — cast to satisfy core types\n createModel: (modelId: string) => sdk(modelId) as any,\n });\n}\n","/**\n * Provider-agnostic LLM provider — wraps any Vercel AI SDK LanguageModelV1.\n *\n * The core does NOT depend on @ai-sdk/openai or any specific provider.\n * Hosts inject their own `createModel` factory:\n *\n * import { createOpenAI } from '@ai-sdk/openai';\n * const openai = createOpenAI({ baseURL: '...', apiKey: '...' });\n * const provider = createAILLMProvider({\n * name: 'openai',\n * createModel: (id) => openai(id),\n * });\n *\n * Or for Anthropic:\n * import { createAnthropic } from '@ai-sdk/anthropic';\n * const anthropic = createAnthropic({ apiKey: '...' });\n * const provider = createAILLMProvider({\n * name: 'claude',\n * createModel: (id) => anthropic(id),\n * });\n *\n * Works with every @ai-sdk/* provider: openai, anthropic, google, deepseek,\n * cohere, mistral, azure, bedrock, groq, ollama, openrouter, together, etc.\n */\n\nimport type { LanguageModelV1 } from 'ai';\nimport { generateText, streamText } from 'ai';\n\nimport type { ILLMProvider } from '../types.js';\n\n// ─── Config ────────────────────────────────────────────────────────────\n\nexport interface FetchLLMProviderConfig {\n /** Display name. */\n name: string;\n /** Factory: given a model id, return a LanguageModelV1 from any @ai-sdk/* provider. */\n createModel: (modelId: string) => LanguageModelV1;\n}\n\n// ─── Factory ───────────────────────────────────────────────────────────\n\n/**\n * Create an `ILLMProvider` that delegates to the Vercel AI SDK.\n *\n * Provider-agnostic — hosts supply their own `createModel` factory.\n * Supports every @ai-sdk/* provider (OpenAI, Anthropic, Google, DeepSeek,\n * Groq, Ollama, OpenRouter, Together, Bedrock, Azure, Mistral, Cohere…).\n *\n * @example\n * ```ts\n * import { createOpenAI } from '@ai-sdk/openai';\n * const openai = createOpenAI({ baseURL: 'https://api.openai.com/v1', apiKey });\n * const provider = createAILLMProvider({\n * name: 'openai',\n * createModel: (modelId) => openai(modelId),\n * });\n * ```\n */\nexport function createFetchLLMProvider(config: FetchLLMProviderConfig): ILLMProvider {\n return {\n name: config.name,\n // Store the factory so hosts can introspect or extend\n model: config.createModel as unknown as LanguageModelV1,\n async chat(request: unknown) {\n const body = (typeof request === 'object' && request !== null ? request : {}) as {\n messages?: Array<{ role: string; content: string }>;\n model?: string;\n stream?: boolean;\n max_tokens?: number;\n temperature?: number;\n };\n\n const model = config.createModel(body.model ?? 'gpt-4o-mini');\n\n const messages = (body.messages ?? []).map((message) => ({\n role: message.role as 'system' | 'user' | 'assistant',\n content: message.content,\n }));\n\n if (body.stream !== false) {\n const result = streamText({ model, messages });\n return (async function*() {\n for await (const chunk of result.textStream) {\n yield chunk;\n }\n })();\n }\n\n const result = await generateText({ model, messages });\n return result.text;\n },\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAQA,sBAA+B;;;ACkB/B,gBAAyC;AAgClC,SAAS,uBAAuB,QAA8C;AACnF,SAAO;AAAA,IACL,MAAM,OAAO;AAAA;AAAA,IAEb,OAAO,OAAO;AAAA,IACd,MAAM,KAAK,SAAkB;AAC3B,YAAM,OAAQ,OAAO,YAAY,YAAY,YAAY,OAAO,UAAU,CAAC;AAQ3E,YAAM,QAAQ,OAAO,YAAY,KAAK,SAAS,aAAa;AAE5D,YAAM,YAAY,KAAK,YAAY,CAAC,GAAG,IAAI,CAAC,aAAa;AAAA,QACvD,MAAM,QAAQ;AAAA,QACd,SAAS,QAAQ;AAAA,MACnB,EAAE;AAEF,UAAI,KAAK,WAAW,OAAO;AACzB,cAAMA,cAAS,sBAAW,EAAE,OAAO,SAAS,CAAC;AAC7C,gBAAQ,mBAAkB;AACxB,2BAAiB,SAASA,QAAO,YAAY;AAC3C,kBAAM;AAAA,UACR;AAAA,QACF,GAAG;AAAA,MACL;AAEA,YAAM,SAAS,UAAM,wBAAa,EAAE,OAAO,SAAS,CAAC;AACrD,aAAO,OAAO;AAAA,IAChB;AAAA,EACF;AACF;;;AD5DO,SAAS,uBAAuB,QAA8C;AACnF,QAAM,UAAM,gCAAe;AAAA,IACzB,SAAS,OAAO,WAAW;AAAA,IAC3B,QAAQ,OAAO;AAAA,EACjB,CAAC;AACD,SAAO,uBAAuB;AAAA,IAC5B,MAAM,OAAO;AAAA;AAAA,IAEb,aAAa,CAAC,YAAoB,IAAI,OAAO;AAAA,EAC/C,CAAC;AACH;","names":["result"]}
@@ -0,0 +1,21 @@
1
+ import { Y as FetchLLMProviderConfig, a1 as ILLMProvider } from './fetchProvider-Cu4WkU5O.cjs';
2
+ import 'ai';
3
+
4
+ interface DeepseekProviderConfig extends Omit<FetchLLMProviderConfig, 'createModel'> {
5
+ /** Override the default API base URL. */
6
+ baseUrl?: string;
7
+ /** API key. */
8
+ apiKey?: string;
9
+ }
10
+ /**
11
+ * Create an ILLMProvider backed by DEEPSEEK.
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * import { createDeepseekProvider } from 'memeloop/deepseek';
16
+ * const provider = createDeepseekProvider({ name: 'my-deepseek', apiKey: '...' });
17
+ * ```
18
+ */
19
+ declare function createDeepseekProvider(config: DeepseekProviderConfig): ILLMProvider;
20
+
21
+ export { type DeepseekProviderConfig, createDeepseekProvider };
@@ -0,0 +1,21 @@
1
+ import { Y as FetchLLMProviderConfig, a1 as ILLMProvider } from './fetchProvider-Cu4WkU5O.js';
2
+ import 'ai';
3
+
4
+ interface DeepseekProviderConfig extends Omit<FetchLLMProviderConfig, 'createModel'> {
5
+ /** Override the default API base URL. */
6
+ baseUrl?: string;
7
+ /** API key. */
8
+ apiKey?: string;
9
+ }
10
+ /**
11
+ * Create an ILLMProvider backed by DEEPSEEK.
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * import { createDeepseekProvider } from 'memeloop/deepseek';
16
+ * const provider = createDeepseekProvider({ name: 'my-deepseek', apiKey: '...' });
17
+ * ```
18
+ */
19
+ declare function createDeepseekProvider(config: DeepseekProviderConfig): ILLMProvider;
20
+
21
+ export { type DeepseekProviderConfig, createDeepseekProvider };
@@ -0,0 +1,21 @@
1
+ import {
2
+ createFetchLLMProvider
3
+ } from "./chunk-FKQP6AOQ.js";
4
+
5
+ // src/llm/providers/deepseek.ts
6
+ import { createDeepSeek } from "@ai-sdk/deepseek";
7
+ function createDeepseekProvider(config) {
8
+ const sdk = createDeepSeek({
9
+ baseURL: config.baseUrl ?? "https://api.deepseek.com/v1",
10
+ apiKey: config.apiKey
11
+ });
12
+ return createFetchLLMProvider({
13
+ name: config.name,
14
+ // Provider packages may return LanguageModelV1..V4 — cast to satisfy core types
15
+ createModel: (modelId) => sdk(modelId)
16
+ });
17
+ }
18
+ export {
19
+ createDeepseekProvider
20
+ };
21
+ //# sourceMappingURL=deepseek.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/llm/providers/deepseek.ts"],"sourcesContent":["/**\n * Pre-built DEEPSEEK provider — wraps @ai-sdk/deepseek.\n *\n * Import from 'memeloop/deepseek' (bundles only @ai-sdk/deepseek).\n * Or inject your own via createFetchLLMProvider from 'memeloop'.\n */\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore — provider package may be at a different AI SDK version than core\nimport { createDeepSeek } from '@ai-sdk/deepseek';\nimport { createFetchLLMProvider, type FetchLLMProviderConfig } from '../fetchProvider.js';\nimport type { ILLMProvider } from '../../types.js';\n\n// ─── Config ────────────────────────────────────────────────────────────\n\nexport interface DeepseekProviderConfig extends Omit<FetchLLMProviderConfig, 'createModel'> {\n /** Override the default API base URL. */\n baseUrl?: string;\n /** API key. */\n apiKey?: string;\n}\n\n// ─── Factory ───────────────────────────────────────────────────────────\n\n/**\n * Create an ILLMProvider backed by DEEPSEEK.\n *\n * @example\n * ```ts\n * import { createDeepseekProvider } from 'memeloop/deepseek';\n * const provider = createDeepseekProvider({ name: 'my-deepseek', apiKey: '...' });\n * ```\n */\nexport function createDeepseekProvider(config: DeepseekProviderConfig): ILLMProvider {\n const sdk = createDeepSeek({\n baseURL: config.baseUrl ?? 'https://api.deepseek.com/v1',\n apiKey: config.apiKey,\n });\n return createFetchLLMProvider({\n name: config.name,\n // Provider packages may return LanguageModelV1..V4 — cast to satisfy core types\n createModel: (modelId: string) => sdk(modelId) as any,\n });\n}\n"],"mappings":";;;;;AAQA,SAAS,sBAAsB;AAwBxB,SAAS,uBAAuB,QAA8C;AACnF,QAAM,MAAM,eAAe;AAAA,IACzB,SAAS,OAAO,WAAW;AAAA,IAC3B,QAAQ,OAAO;AAAA,EACjB,CAAC;AACD,SAAO,uBAAuB;AAAA,IAC5B,MAAM,OAAO;AAAA;AAAA,IAEb,aAAa,CAAC,YAAoB,IAAI,OAAO;AAAA,EAC/C,CAAC;AACH;","names":[]}