mundogiru-agent 0.1.0 → 0.2.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/dist/core/config.js +8 -0
- package/dist/core/config.js.map +1 -1
- package/dist/core/llm.js +20 -30
- package/dist/core/llm.js.map +1 -1
- package/package.json +1 -1
- package/src/wizard/index.html +4 -2
- package/src/wizard/wizard.js +89 -23
package/dist/core/config.js
CHANGED
|
@@ -95,6 +95,14 @@ export function defaultModelFor(provider) {
|
|
|
95
95
|
return "llama-3.3-70b-versatile";
|
|
96
96
|
case "ollama":
|
|
97
97
|
return "llama3.2";
|
|
98
|
+
case "opencode-go":
|
|
99
|
+
return "kimi-k2.6";
|
|
100
|
+
case "openrouter":
|
|
101
|
+
return "openai/gpt-4o-mini";
|
|
102
|
+
case "minimax":
|
|
103
|
+
return "MiniMax-M1";
|
|
104
|
+
case "deepseek":
|
|
105
|
+
return "deepseek-chat";
|
|
98
106
|
}
|
|
99
107
|
}
|
|
100
108
|
//# sourceMappingURL=config.js.map
|
package/dist/core/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACxF,OAAO,EAAE,QAAQ,IAAI,GAAG,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,OAAO,MAAM,cAAc,CAAC;AAEnC,MAAM,GAAG,GAAG,aAAa,CAAC;AAC1B,MAAM,QAAQ,GAAG,KAAK,CAAC;AACvB,MAAM,QAAQ,GAAG,CAAC,CAAC;AACnB,MAAM,QAAQ,GAAG,CAAC,CAAC;AACnB,MAAM,OAAO,GAAG,EAAE,CAAC;AACnB,MAAM,QAAQ,GAAG,EAAE,CAAC;AACpB,MAAM,MAAM,GAAG,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"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"}
|
package/dist/core/llm.js
CHANGED
|
@@ -99,43 +99,33 @@ class OpenAIStyleClient {
|
|
|
99
99
|
};
|
|
100
100
|
}
|
|
101
101
|
}
|
|
102
|
-
// ---------- Ollama (local, sin API key) ----------
|
|
103
|
-
class OllamaClient {
|
|
104
|
-
model;
|
|
105
|
-
baseUrl;
|
|
106
|
-
provider = "ollama";
|
|
107
|
-
constructor(model, baseUrl) {
|
|
108
|
-
this.model = model;
|
|
109
|
-
this.baseUrl = baseUrl;
|
|
110
|
-
}
|
|
111
|
-
async chat(messages) {
|
|
112
|
-
const res = await fetch(`${this.baseUrl.replace(/\/$/, "")}/api/chat`, {
|
|
113
|
-
method: "POST",
|
|
114
|
-
headers: { "content-type": "application/json" },
|
|
115
|
-
body: JSON.stringify({
|
|
116
|
-
model: this.model,
|
|
117
|
-
stream: false,
|
|
118
|
-
messages: messages.map((m) => ({ role: m.role, content: m.content })),
|
|
119
|
-
}),
|
|
120
|
-
});
|
|
121
|
-
if (!res.ok) {
|
|
122
|
-
throw new HttpError(res.status, `Ollama ${res.status}: ${await res.text()}`);
|
|
123
|
-
}
|
|
124
|
-
const json = (await res.json());
|
|
125
|
-
return { content: json.message?.content ?? "" };
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
102
|
// ---------- factoría ----------
|
|
103
|
+
const PROVIDER_ENDPOINTS = {
|
|
104
|
+
openai: "https://api.openai.com/v1",
|
|
105
|
+
groq: "https://api.groq.com/openai/v1",
|
|
106
|
+
"opencode-go": "https://api.opencode.ai/v1",
|
|
107
|
+
openrouter: "https://openrouter.ai/api/v1",
|
|
108
|
+
minimax: "https://api.minimax.chat/v1",
|
|
109
|
+
deepseek: "https://api.deepseek.com/v1",
|
|
110
|
+
};
|
|
129
111
|
export function buildLLMClient(config) {
|
|
130
112
|
switch (config.llmProvider) {
|
|
131
113
|
case "anthropic":
|
|
132
114
|
return new AnthropicClient(config.llmModel, config.apiKey);
|
|
115
|
+
case "ollama": {
|
|
116
|
+
// Ollama expone API OpenAI-compatible en /v1. No requiere API key real
|
|
117
|
+
// (acepta cualquier string como bearer).
|
|
118
|
+
const base = (config.ollamaBaseUrl ?? "http://localhost:11434").replace(/\/$/, "");
|
|
119
|
+
const baseUrl = base.endsWith("/v1") ? base : `${base}/v1`;
|
|
120
|
+
return new OpenAIStyleClient("ollama", config.llmModel, config.apiKey || "ollama", baseUrl);
|
|
121
|
+
}
|
|
133
122
|
case "openai":
|
|
134
|
-
return new OpenAIStyleClient("openai", config.llmModel, config.apiKey, "https://api.openai.com/v1");
|
|
135
123
|
case "groq":
|
|
136
|
-
|
|
137
|
-
case "
|
|
138
|
-
|
|
124
|
+
case "opencode-go":
|
|
125
|
+
case "openrouter":
|
|
126
|
+
case "minimax":
|
|
127
|
+
case "deepseek":
|
|
128
|
+
return new OpenAIStyleClient(config.llmProvider, config.llmModel, config.apiKey, PROVIDER_ENDPOINTS[config.llmProvider]);
|
|
139
129
|
}
|
|
140
130
|
}
|
|
141
131
|
/**
|
package/dist/core/llm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llm.js","sourceRoot":"","sources":["../../src/core/llm.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"llm.js","sourceRoot":"","sources":["../../src/core/llm.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/wizard/index.html
CHANGED
|
@@ -30,10 +30,12 @@ input:focus, select:focus { border-color:var(--accent); }
|
|
|
30
30
|
.btn-ghost { background:transparent; color:var(--fg); }
|
|
31
31
|
.btn-ghost:hover { background:#0b1220; }
|
|
32
32
|
.row { display:flex; justify-content:space-between; align-items:center; margin-top:24px; }
|
|
33
|
-
.providers { display:grid; grid-template-columns:repeat(2, 1fr); gap:10px; margin
|
|
33
|
+
.providers { display:grid; grid-template-columns:repeat(2, 1fr); gap:10px; margin:6px 0 18px; }
|
|
34
34
|
.provider-pill { padding:14px; background:#0b1220; border:1px solid var(--border);
|
|
35
|
-
border-radius:10px; text-align:center; cursor:pointer; font-weight:600; }
|
|
35
|
+
border-radius:10px; text-align:center; cursor:pointer; font-weight:600; font-size:14px; }
|
|
36
36
|
.provider-pill.active { border-color:var(--accent); color:var(--accent); }
|
|
37
|
+
.section-title { font-size:13px; font-weight:700; margin-top:16px; }
|
|
38
|
+
.section-desc { font-size:12px; color:var(--muted); margin-bottom:6px; }
|
|
37
39
|
.error { color:#f87171; font-size:13px; margin-top:10px; min-height:18px; }
|
|
38
40
|
.success { padding:14px; background:#064e3b; border:1px solid #10b981; border-radius:10px;
|
|
39
41
|
color:#a7f3d0; margin-top:8px; }
|
package/src/wizard/wizard.js
CHANGED
|
@@ -6,20 +6,69 @@
|
|
|
6
6
|
const state = {
|
|
7
7
|
step: 0,
|
|
8
8
|
userName: "",
|
|
9
|
-
llmProvider: "
|
|
10
|
-
llmModel: "",
|
|
9
|
+
llmProvider: "opencode-go",
|
|
10
|
+
llmModel: "kimi-k2.6",
|
|
11
11
|
apiKey: "",
|
|
12
12
|
ollamaBaseUrl: "http://localhost:11434",
|
|
13
13
|
agentName: "Mundo",
|
|
14
14
|
};
|
|
15
15
|
|
|
16
|
+
// section: subscription | api | local
|
|
16
17
|
const PROVIDERS = [
|
|
17
|
-
{
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
{
|
|
19
|
+
id: "opencode-go", label: "OpenCode Go", section: "subscription",
|
|
20
|
+
models: ["kimi-k2.6", "kimi-k2"], needsKey: true,
|
|
21
|
+
help: "Suscripción mensual. Consigue tu key en opencode.ai/go.",
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
id: "openrouter", label: "OpenRouter", section: "subscription",
|
|
25
|
+
models: ["openai/gpt-4o-mini", "anthropic/claude-3.5-sonnet", "meta-llama/llama-3.3-70b-instruct"],
|
|
26
|
+
needsKey: true,
|
|
27
|
+
help: "Suscripción/pago por uso. Consigue tu key en openrouter.ai/keys.",
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
id: "minimax", label: "MiniMax", section: "api",
|
|
31
|
+
models: ["MiniMax-M1", "abab6.5-chat"], needsKey: true,
|
|
32
|
+
help: "Pago por uso. Consigue tu key en api.minimax.chat → consola.",
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
id: "deepseek", label: "DeepSeek", section: "api",
|
|
36
|
+
models: ["deepseek-chat", "deepseek-reasoner"], needsKey: true,
|
|
37
|
+
help: "Pago por uso. Consigue tu key en platform.deepseek.com/api_keys.",
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
id: "anthropic", label: "Anthropic (Claude)", section: "api",
|
|
41
|
+
models: ["claude-sonnet-4-6", "claude-opus-4-6", "claude-haiku-4-5"], needsKey: true,
|
|
42
|
+
help: "Pago por uso. Consigue tu key en console.anthropic.com → API Keys.",
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
id: "openai", label: "OpenAI (GPT)", section: "api",
|
|
46
|
+
models: ["gpt-4o-mini", "gpt-4o", "gpt-4-turbo"], needsKey: true,
|
|
47
|
+
help: "Pago por uso. Consigue tu key en platform.openai.com/api-keys.",
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
id: "groq", label: "Groq (Llama rápido)", section: "api",
|
|
51
|
+
models: ["llama-3.3-70b-versatile", "llama-3.1-8b-instant", "mixtral-8x7b-32768"],
|
|
52
|
+
needsKey: true,
|
|
53
|
+
help: "Pago por uso (free tier amplio). Consigue tu key en console.groq.com/keys.",
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
id: "ollama", label: "Ollama (local, gratis)", section: "local",
|
|
57
|
+
models: ["llama3.2", "llama3.1", "mistral", "phi3"], needsKey: false,
|
|
58
|
+
help: "100% gratis. Requiere tener Ollama instalado (ollama.com/download).",
|
|
59
|
+
},
|
|
21
60
|
];
|
|
22
61
|
|
|
62
|
+
const SECTION_META = {
|
|
63
|
+
subscription: { title: "💳 Suscripción mensual", desc: "Una cuota fija al mes." },
|
|
64
|
+
api: { title: "🔑 Pago por uso (API key)", desc: "Pagas solo lo que consumes." },
|
|
65
|
+
local: { title: "🖥️ Local gratis", desc: "Corre en tu Mac. Cero coste, sin internet." },
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
function currentProvider() {
|
|
69
|
+
return PROVIDERS.find(function (p) { return p.id === state.llmProvider; });
|
|
70
|
+
}
|
|
71
|
+
|
|
23
72
|
const root = document.getElementById("container");
|
|
24
73
|
|
|
25
74
|
function render() {
|
|
@@ -64,29 +113,47 @@
|
|
|
64
113
|
}
|
|
65
114
|
|
|
66
115
|
function renderStep1() {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
116
|
+
function pillsForSection(section) {
|
|
117
|
+
return PROVIDERS
|
|
118
|
+
.filter(function (p) { return p.section === section; })
|
|
119
|
+
.map(function (p) {
|
|
120
|
+
const cls = p.id === state.llmProvider ? "provider-pill active" : "provider-pill";
|
|
121
|
+
return `<div class="${cls}" data-id="${p.id}">${p.label}</div>`;
|
|
122
|
+
}).join("");
|
|
123
|
+
}
|
|
124
|
+
function sectionBlock(key) {
|
|
125
|
+
const meta = SECTION_META[key];
|
|
126
|
+
return `
|
|
127
|
+
<div class="section-title">${meta.title}</div>
|
|
128
|
+
<div class="section-desc">${meta.desc}</div>
|
|
129
|
+
<div class="providers">${pillsForSection(key)}</div>
|
|
130
|
+
`;
|
|
131
|
+
}
|
|
132
|
+
const current = currentProvider();
|
|
133
|
+
const modelOptions = current.models.map(function (m) {
|
|
134
|
+
const sel = m === state.llmModel ? " selected" : "";
|
|
135
|
+
return `<option value="${m}"${sel}>${m}</option>`;
|
|
70
136
|
}).join("");
|
|
71
|
-
const
|
|
72
|
-
const needsKey = current.needsKey;
|
|
73
|
-
const ollamaInput = !needsKey ? `
|
|
137
|
+
const ollamaInput = !current.needsKey ? `
|
|
74
138
|
<label>URL de Ollama</label>
|
|
75
139
|
<input id="ollamaBaseUrl" value="${state.ollamaBaseUrl}" />
|
|
76
|
-
<div class="hint">
|
|
140
|
+
<div class="hint">Ollama suele escuchar en http://localhost:11434. Usamos la API compatible OpenAI (/v1).</div>
|
|
77
141
|
` : "";
|
|
78
|
-
const keyInput = needsKey ? `
|
|
142
|
+
const keyInput = current.needsKey ? `
|
|
79
143
|
<label>API key</label>
|
|
80
144
|
<input id="apiKey" type="password" placeholder="sk-..." value="${state.apiKey}" />
|
|
81
|
-
<div class="hint"
|
|
82
|
-
` : ""
|
|
145
|
+
<div class="hint">${current.help} La key se cifra antes de guardarse en disco.</div>
|
|
146
|
+
` : `<div class="hint">${current.help}</div>`;
|
|
147
|
+
|
|
83
148
|
root.innerHTML = `
|
|
84
149
|
<div class="step-tag">Paso 2 de 4</div>
|
|
85
150
|
<h1>Elige tu motor de IA</h1>
|
|
86
|
-
<p class="muted">Puedes cambiarlo más tarde.</p>
|
|
87
|
-
|
|
151
|
+
<p class="muted">Puedes cambiarlo más tarde desde el chat.</p>
|
|
152
|
+
${sectionBlock("subscription")}
|
|
153
|
+
${sectionBlock("api")}
|
|
154
|
+
${sectionBlock("local")}
|
|
88
155
|
<label>Modelo</label>
|
|
89
|
-
<
|
|
156
|
+
<select id="llmModel">${modelOptions}</select>
|
|
90
157
|
${keyInput}${ollamaInput}
|
|
91
158
|
<div class="error" id="error"></div>
|
|
92
159
|
<div class="row">
|
|
@@ -97,15 +164,14 @@
|
|
|
97
164
|
document.querySelectorAll(".provider-pill").forEach(function (el) {
|
|
98
165
|
el.onclick = function () {
|
|
99
166
|
state.llmProvider = el.getAttribute("data-id");
|
|
100
|
-
|
|
101
|
-
state.llmModel = p.defaultModel;
|
|
167
|
+
state.llmModel = currentProvider().models[0];
|
|
102
168
|
render();
|
|
103
169
|
};
|
|
104
170
|
});
|
|
105
171
|
document.getElementById("back").onclick = function () { state.step = 0; render(); };
|
|
106
172
|
document.getElementById("next").onclick = function () {
|
|
107
|
-
const provider =
|
|
108
|
-
state.llmModel = document.getElementById("llmModel").value
|
|
173
|
+
const provider = currentProvider();
|
|
174
|
+
state.llmModel = document.getElementById("llmModel").value || provider.models[0];
|
|
109
175
|
if (provider.needsKey) {
|
|
110
176
|
const key = document.getElementById("apiKey").value.trim();
|
|
111
177
|
if (!key) return showError("Falta la API key.");
|