@elizaos/cli 1.2.5 → 1.2.8
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/{bun-exec-4BOHUSSZ.js → bun-exec-KJOLGZOL.js} +1 -1
- package/dist/{chunk-JR4V32X7.js → chunk-2ZF5OAMV.js} +37 -65
- package/dist/{chunk-EVE5GO74.js → chunk-3YTIOEFK.js} +20 -1
- package/dist/{chunk-ECH6TQ7M.js → chunk-E54G6FI7.js} +32 -6
- package/dist/{chunk-X5K7QYAH.js → chunk-KKAK7OQA.js} +25 -11
- package/dist/{chunk-6ZB77OJK.js → chunk-Y5IA2UZ2.js} +1 -1
- package/dist/commands/agent/actions/index.js +3 -3
- package/dist/commands/agent/index.js +3 -3
- package/dist/commands/create/actions/index.d.ts +1 -1
- package/dist/commands/create/actions/index.js +4 -4
- package/dist/commands/create/index.js +5 -5
- package/dist/index.js +314 -239
- package/dist/{plugin-creator-UBYADX3B.js → plugin-creator-Y2NWASXI.js} +2 -2
- package/dist/{registry-U2ZGKGSS.js → registry-K2OCCRXO.js} +3 -3
- package/dist/templates/plugin-quick-starter/README.md +214 -0
- package/dist/templates/plugin-quick-starter/bunfig.toml +10 -0
- package/dist/templates/plugin-quick-starter/package.json +76 -0
- package/dist/templates/plugin-quick-starter/scripts/install-test-deps.js +53 -0
- package/dist/templates/plugin-quick-starter/src/__tests__/plugin.test.ts +209 -0
- package/dist/templates/plugin-quick-starter/src/__tests__/test-utils.ts +162 -0
- package/dist/templates/plugin-quick-starter/src/index.ts +4 -0
- package/dist/templates/plugin-quick-starter/src/plugin.ts +272 -0
- package/dist/templates/plugin-quick-starter/tsconfig.build.json +11 -0
- package/dist/templates/plugin-quick-starter/tsconfig.json +28 -0
- package/dist/templates/plugin-quick-starter/tsup.config.ts +20 -0
- package/dist/templates/plugin-starter/package.json +2 -2
- package/dist/templates/plugin-starter/scripts/install-test-deps.js +7 -3
- package/dist/templates/plugin-starter/src/plugin.ts +13 -15
- package/dist/templates/project-starter/package.json +4 -4
- package/dist/templates/project-starter/scripts/install-test-deps.js +7 -3
- package/dist/templates/project-starter/src/character.ts +3 -3
- package/dist/templates/project-tee-starter/package.json +3 -3
- package/dist/{utils-7XPDALF7.js → utils-QSRUVLAT.js} +3 -3
- package/package.json +5 -5
- package/templates/plugin-quick-starter/README.md +214 -0
- package/templates/plugin-quick-starter/bunfig.toml +10 -0
- package/templates/plugin-quick-starter/package.json +76 -0
- package/templates/plugin-quick-starter/scripts/install-test-deps.js +53 -0
- package/templates/plugin-quick-starter/src/__tests__/plugin.test.ts +209 -0
- package/templates/plugin-quick-starter/src/__tests__/test-utils.ts +162 -0
- package/templates/plugin-quick-starter/src/index.ts +4 -0
- package/templates/plugin-quick-starter/src/plugin.ts +272 -0
- package/templates/plugin-quick-starter/tsconfig.build.json +11 -0
- package/templates/plugin-quick-starter/tsconfig.json +28 -0
- package/templates/plugin-quick-starter/tsup.config.ts +20 -0
- package/templates/plugin-starter/package.json +2 -2
- package/templates/plugin-starter/scripts/install-test-deps.js +7 -3
- package/templates/plugin-starter/src/plugin.ts +13 -15
- package/templates/project-starter/package.json +4 -4
- package/templates/project-starter/scripts/install-test-deps.js +7 -3
- package/templates/project-starter/src/character.ts +3 -3
- package/templates/project-tee-starter/package.json +3 -3
- package/dist/templates/plugin-starter/dist/assets/index-CgkejLs_.css +0 -1
- package/dist/templates/plugin-starter/dist/assets/index-DUtsQhKX.js +0 -49
- package/dist/templates/plugin-starter/dist/index.html +0 -14
- package/dist/templates/plugin-starter/dist/index.js +0 -391
- package/dist/templates/plugin-starter/dist/index.js.map +0 -1
- package/templates/plugin-starter/dist/.vite/manifest.json +0 -11
- package/templates/plugin-starter/dist/assets/index-CgkejLs_.css +0 -1
- package/templates/plugin-starter/dist/assets/index-DUtsQhKX.js +0 -49
- package/templates/plugin-starter/dist/index.d.ts +0 -14
- package/templates/plugin-starter/dist/index.html +0 -14
- package/templates/plugin-starter/dist/index.js +0 -391
- package/templates/plugin-starter/dist/index.js.map +0 -1
|
@@ -19,7 +19,7 @@ import {
|
|
|
19
19
|
promptAndStorePostgresUrl,
|
|
20
20
|
runTasks,
|
|
21
21
|
setupPgLite
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-KKAK7OQA.js";
|
|
23
23
|
|
|
24
24
|
// src/characters/eliza.ts
|
|
25
25
|
var baseCharacter = {
|
|
@@ -217,8 +217,8 @@ function getElizaCharacter() {
|
|
|
217
217
|
...process.env.TELEGRAM_BOT_TOKEN?.trim() ? ["@elizaos/plugin-telegram"] : [],
|
|
218
218
|
// Bootstrap plugin
|
|
219
219
|
...!process.env.IGNORE_BOOTSTRAP ? ["@elizaos/plugin-bootstrap"] : [],
|
|
220
|
-
//
|
|
221
|
-
"@elizaos/plugin-ollama"
|
|
220
|
+
// Only include Ollama as fallback if no other LLM providers are configured
|
|
221
|
+
...!process.env.ANTHROPIC_API_KEY?.trim() && !process.env.OPENROUTER_API_KEY?.trim() && !process.env.OPENAI_API_KEY?.trim() && !process.env.GOOGLE_GENERATIVE_AI_API_KEY?.trim() ? ["@elizaos/plugin-ollama"] : []
|
|
222
222
|
];
|
|
223
223
|
return {
|
|
224
224
|
...baseCharacter,
|
|
@@ -364,6 +364,10 @@ function getAvailableAIModels() {
|
|
|
364
364
|
}
|
|
365
365
|
];
|
|
366
366
|
}
|
|
367
|
+
function hasEmbeddingSupport(aiModel) {
|
|
368
|
+
const modelsWithEmbeddings = ["local", "openai", "google"];
|
|
369
|
+
return modelsWithEmbeddings.includes(aiModel);
|
|
370
|
+
}
|
|
367
371
|
function getAvailableDatabases() {
|
|
368
372
|
return [
|
|
369
373
|
{
|
|
@@ -538,27 +542,6 @@ async function setupAIModelConfig(aiModel, envFilePath, isNonInteractive = false
|
|
|
538
542
|
}
|
|
539
543
|
break;
|
|
540
544
|
}
|
|
541
|
-
case "ollama": {
|
|
542
|
-
if (isNonInteractive) {
|
|
543
|
-
let content = "";
|
|
544
|
-
if (existsSync2(envFilePath)) {
|
|
545
|
-
content = await fs2.readFile(envFilePath, "utf8");
|
|
546
|
-
}
|
|
547
|
-
if (content && !content.endsWith("\n")) {
|
|
548
|
-
content += "\n";
|
|
549
|
-
}
|
|
550
|
-
content += "\n# AI Model Configuration\n";
|
|
551
|
-
content += "# Ollama Configuration\n";
|
|
552
|
-
content += "OLLAMA_API_ENDPOINT=http://localhost:11434\n";
|
|
553
|
-
content += "OLLAMA_MODEL=gemma3\n";
|
|
554
|
-
content += "USE_OLLAMA_TEXT_MODELS=true\n";
|
|
555
|
-
content += "# Make sure Ollama is installed and running: https://ollama.ai/\n";
|
|
556
|
-
await fs2.writeFile(envFilePath, content, "utf8");
|
|
557
|
-
} else {
|
|
558
|
-
await promptAndStoreOllamaConfig(envFilePath);
|
|
559
|
-
}
|
|
560
|
-
break;
|
|
561
|
-
}
|
|
562
545
|
case "google": {
|
|
563
546
|
if (isNonInteractive) {
|
|
564
547
|
let content = "";
|
|
@@ -605,28 +588,6 @@ async function setupEmbeddingModelConfig(embeddingModel, envFilePath, isNonInter
|
|
|
605
588
|
}
|
|
606
589
|
switch (embeddingModel) {
|
|
607
590
|
case "local": {
|
|
608
|
-
content += "\n# Embedding Model Configuration (Fallback)\n";
|
|
609
|
-
content += "# Using local embeddings - no additional configuration needed\n";
|
|
610
|
-
await fs2.writeFile(envFilePath, content, "utf8");
|
|
611
|
-
break;
|
|
612
|
-
}
|
|
613
|
-
case "openai": {
|
|
614
|
-
if (!hasValidApiKey(content, "OPENAI_API_KEY")) {
|
|
615
|
-
if (isNonInteractive) {
|
|
616
|
-
if (!content.includes("OPENAI_API_KEY=")) {
|
|
617
|
-
content += "\n# Embedding Model Configuration (Fallback)\n";
|
|
618
|
-
content += "# OpenAI Embeddings Configuration\n";
|
|
619
|
-
content += "OPENAI_API_KEY=your_openai_api_key_here\n";
|
|
620
|
-
content += "# Get your API key from: https://platform.openai.com/api-keys\n";
|
|
621
|
-
}
|
|
622
|
-
await fs2.writeFile(envFilePath, content, "utf8");
|
|
623
|
-
} else {
|
|
624
|
-
await promptAndStoreOpenAIKey(envFilePath);
|
|
625
|
-
}
|
|
626
|
-
}
|
|
627
|
-
break;
|
|
628
|
-
}
|
|
629
|
-
case "ollama": {
|
|
630
591
|
if (!hasValidApiKey(content, "OLLAMA_API_ENDPOINT")) {
|
|
631
592
|
if (isNonInteractive) {
|
|
632
593
|
if (!content.includes("OLLAMA_API_ENDPOINT=")) {
|
|
@@ -656,6 +617,22 @@ async function setupEmbeddingModelConfig(embeddingModel, envFilePath, isNonInter
|
|
|
656
617
|
}
|
|
657
618
|
break;
|
|
658
619
|
}
|
|
620
|
+
case "openai": {
|
|
621
|
+
if (!hasValidApiKey(content, "OPENAI_API_KEY")) {
|
|
622
|
+
if (isNonInteractive) {
|
|
623
|
+
if (!content.includes("OPENAI_API_KEY=")) {
|
|
624
|
+
content += "\n# Embedding Model Configuration (Fallback)\n";
|
|
625
|
+
content += "# OpenAI Embeddings Configuration\n";
|
|
626
|
+
content += "OPENAI_API_KEY=your_openai_api_key_here\n";
|
|
627
|
+
content += "# Get your API key from: https://platform.openai.com/api-keys\n";
|
|
628
|
+
}
|
|
629
|
+
await fs2.writeFile(envFilePath, content, "utf8");
|
|
630
|
+
} else {
|
|
631
|
+
await promptAndStoreOpenAIKey(envFilePath);
|
|
632
|
+
}
|
|
633
|
+
}
|
|
634
|
+
break;
|
|
635
|
+
}
|
|
659
636
|
case "google": {
|
|
660
637
|
if (!hasValidApiKey(content, "GOOGLE_GENERATIVE_AI_API_KEY")) {
|
|
661
638
|
if (isNonInteractive) {
|
|
@@ -687,7 +664,8 @@ function resolveModelToPlugin(modelName) {
|
|
|
687
664
|
claude: "anthropic",
|
|
688
665
|
anthropic: "anthropic",
|
|
689
666
|
openrouter: "openrouter",
|
|
690
|
-
|
|
667
|
+
local: "ollama",
|
|
668
|
+
// 'local' maps to ollama plugin
|
|
691
669
|
google: "google-genai"
|
|
692
670
|
};
|
|
693
671
|
return modelToPlugin[modelName] || null;
|
|
@@ -715,24 +693,17 @@ async function setupProjectEnvironment(targetDir, database, aiModel, embeddingMo
|
|
|
715
693
|
await setupEmbeddingModelConfig(embeddingModel, envFilePath, isNonInteractive);
|
|
716
694
|
}
|
|
717
695
|
}
|
|
718
|
-
|
|
719
|
-
if (!hasValidApiKey(envContent, "OLLAMA_API_ENDPOINT")) {
|
|
720
|
-
await setupEmbeddingModelConfig("ollama", envFilePath, true);
|
|
721
|
-
}
|
|
722
|
-
if (aiModel === "local") {
|
|
723
|
-
await installModelPlugin("ollama", targetDir, "for local AI");
|
|
724
|
-
} else {
|
|
725
|
-
await installModelPlugin(aiModel, targetDir);
|
|
726
|
-
if (aiModel !== "ollama") {
|
|
727
|
-
await installModelPlugin("ollama", targetDir, "as fallback");
|
|
728
|
-
}
|
|
729
|
-
}
|
|
696
|
+
await installModelPlugin(aiModel, targetDir, aiModel === "local" ? "for local AI" : "");
|
|
730
697
|
if (embeddingModel && embeddingModel !== "local") {
|
|
731
698
|
const aiPluginName = resolveModelToPlugin(aiModel);
|
|
732
699
|
const embeddingPluginName = resolveModelToPlugin(embeddingModel);
|
|
733
700
|
if (embeddingPluginName && embeddingPluginName !== aiPluginName) {
|
|
734
701
|
await installModelPlugin(embeddingModel, targetDir, "for embeddings");
|
|
735
702
|
}
|
|
703
|
+
} else if (embeddingModel === "local") {
|
|
704
|
+
if (aiModel !== "local") {
|
|
705
|
+
await installModelPlugin(embeddingModel, targetDir, "for embeddings");
|
|
706
|
+
}
|
|
736
707
|
}
|
|
737
708
|
}
|
|
738
709
|
|
|
@@ -751,10 +722,6 @@ async function handleInteractiveConfiguration(targetDir, database, aiModel, embe
|
|
|
751
722
|
await setupEmbeddingModelConfig(embeddingModel, envFilePath, false);
|
|
752
723
|
}
|
|
753
724
|
}
|
|
754
|
-
const envContent = existsSync3(envFilePath) ? await fs3.readFile(envFilePath, "utf8") : "";
|
|
755
|
-
if (!hasValidApiKey(envContent, "OLLAMA_API_ENDPOINT")) {
|
|
756
|
-
await setupEmbeddingModelConfig("ollama", envFilePath, false);
|
|
757
|
-
}
|
|
758
725
|
}
|
|
759
726
|
async function withCleanupOnInterrupt(targetDir, displayName, fn) {
|
|
760
727
|
const directoryExistedBefore = existsSync3(targetDir);
|
|
@@ -801,7 +768,7 @@ Cleaning up due to error...`));
|
|
|
801
768
|
throw error;
|
|
802
769
|
}
|
|
803
770
|
}
|
|
804
|
-
async function createPlugin(pluginName, targetDir, isNonInteractive = false) {
|
|
771
|
+
async function createPlugin(pluginName, targetDir, pluginType = "full", isNonInteractive = false) {
|
|
805
772
|
const nameResult = processPluginName(pluginName);
|
|
806
773
|
if (!nameResult.isValid) {
|
|
807
774
|
throw new Error(nameResult.error || "Invalid plugin name");
|
|
@@ -831,8 +798,12 @@ Warning: changing "${pluginName}" to "${pluginDirName}" to conform to plugin nam
|
|
|
831
798
|
}
|
|
832
799
|
}
|
|
833
800
|
await withCleanupOnInterrupt(pluginTargetDir, pluginDirName, async () => {
|
|
801
|
+
const templateName = pluginType === "quick" ? "plugin-quick" : "plugin";
|
|
834
802
|
await runTasks([
|
|
835
|
-
createTask(
|
|
803
|
+
createTask(
|
|
804
|
+
"Copying plugin template",
|
|
805
|
+
() => copyTemplate(templateName, pluginTargetDir)
|
|
806
|
+
),
|
|
836
807
|
createTask("Installing dependencies", () => installDependenciesWithSpinner(pluginTargetDir))
|
|
837
808
|
]);
|
|
838
809
|
console.info(`
|
|
@@ -993,6 +964,7 @@ Next steps:`);
|
|
|
993
964
|
export {
|
|
994
965
|
validateCreateOptions,
|
|
995
966
|
validateProjectName,
|
|
967
|
+
hasEmbeddingSupport,
|
|
996
968
|
selectDatabase,
|
|
997
969
|
selectAIModel,
|
|
998
970
|
selectEmbeddingModel,
|
|
@@ -6,6 +6,24 @@ const require = createRequire(import.meta.url);
|
|
|
6
6
|
// src/utils/bun-exec.ts
|
|
7
7
|
import { logger } from "@elizaos/core";
|
|
8
8
|
var COMMAND_EXISTS_TIMEOUT_MS = 5e3;
|
|
9
|
+
function ensureBunInPath(env = {}) {
|
|
10
|
+
const enhancedEnv = { ...process.env, ...env };
|
|
11
|
+
if (enhancedEnv.PATH) {
|
|
12
|
+
const pathSeparator = process.platform === "win32" ? ";" : ":";
|
|
13
|
+
const currentPaths = enhancedEnv.PATH.split(pathSeparator);
|
|
14
|
+
const bunPaths = [
|
|
15
|
+
process.env.HOME ? `${process.env.HOME}/.bun/bin` : null,
|
|
16
|
+
"/opt/homebrew/bin",
|
|
17
|
+
"/usr/local/bin"
|
|
18
|
+
].filter(Boolean);
|
|
19
|
+
for (const bunPath of bunPaths) {
|
|
20
|
+
if (bunPath && !currentPaths.some((p) => p === bunPath || p.endsWith("/.bun/bin"))) {
|
|
21
|
+
enhancedEnv.PATH = `${bunPath}${pathSeparator}${enhancedEnv.PATH}`;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return enhancedEnv;
|
|
26
|
+
}
|
|
9
27
|
var ProcessExecutionError = class extends Error {
|
|
10
28
|
constructor(message, exitCode, stderr, command) {
|
|
11
29
|
super(message);
|
|
@@ -49,9 +67,10 @@ async function bunExec(command, args = [], options = {}) {
|
|
|
49
67
|
const escapedArgs = args.map(escapeShellArg);
|
|
50
68
|
const fullCommand = [command, ...escapedArgs].join(" ");
|
|
51
69
|
logger.debug(`[bunExec] Executing: ${fullCommand}`);
|
|
70
|
+
const enhancedEnv = ensureBunInPath(options.env);
|
|
52
71
|
proc = Bun.spawn([command, ...args], {
|
|
53
72
|
cwd: options.cwd,
|
|
54
|
-
env:
|
|
73
|
+
env: enhancedEnv,
|
|
55
74
|
stdout: options.stdout || options.stdio || "pipe",
|
|
56
75
|
stderr: options.stderr || options.stdio || "pipe"
|
|
57
76
|
});
|
|
@@ -7,16 +7,17 @@ import {
|
|
|
7
7
|
createPlugin,
|
|
8
8
|
createProject,
|
|
9
9
|
createTEEProject,
|
|
10
|
+
hasEmbeddingSupport,
|
|
10
11
|
selectAIModel,
|
|
11
12
|
selectDatabase,
|
|
12
13
|
selectEmbeddingModel,
|
|
13
14
|
validateCreateOptions,
|
|
14
15
|
validateProjectName
|
|
15
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-2ZF5OAMV.js";
|
|
16
17
|
import {
|
|
17
18
|
displayBanner,
|
|
18
19
|
handleError
|
|
19
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-KKAK7OQA.js";
|
|
20
21
|
|
|
21
22
|
// src/commands/create/index.ts
|
|
22
23
|
import { Command } from "commander";
|
|
@@ -114,9 +115,34 @@ var create = new Command("create").description("Create a new ElizaOS project, pl
|
|
|
114
115
|
clack.intro(colors.inverse(` Creating ElizaOS ${introType} `));
|
|
115
116
|
}
|
|
116
117
|
switch (projectType) {
|
|
117
|
-
case "plugin":
|
|
118
|
-
|
|
118
|
+
case "plugin": {
|
|
119
|
+
let pluginType = "full";
|
|
120
|
+
if (!isNonInteractive) {
|
|
121
|
+
const selectedPluginType = await clack.select({
|
|
122
|
+
message: "What type of plugin would you like to create?",
|
|
123
|
+
options: [
|
|
124
|
+
{
|
|
125
|
+
label: "Quick Plugin (Backend Only)",
|
|
126
|
+
value: "quick",
|
|
127
|
+
hint: "Simple backend-only plugin without frontend"
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
label: "Full Plugin (with Frontend)",
|
|
131
|
+
value: "full",
|
|
132
|
+
hint: "Complete plugin with React frontend and API routes"
|
|
133
|
+
}
|
|
134
|
+
],
|
|
135
|
+
initialValue: "quick"
|
|
136
|
+
});
|
|
137
|
+
if (clack.isCancel(selectedPluginType)) {
|
|
138
|
+
clack.cancel("Operation cancelled.");
|
|
139
|
+
process.exit(0);
|
|
140
|
+
}
|
|
141
|
+
pluginType = selectedPluginType;
|
|
142
|
+
}
|
|
143
|
+
await createPlugin(projectName, process.cwd(), pluginType, isNonInteractive);
|
|
119
144
|
break;
|
|
145
|
+
}
|
|
120
146
|
case "agent":
|
|
121
147
|
await createAgent(projectName, process.cwd(), isNonInteractive);
|
|
122
148
|
break;
|
|
@@ -127,7 +153,7 @@ var create = new Command("create").description("Create a new ElizaOS project, pl
|
|
|
127
153
|
if (!isNonInteractive) {
|
|
128
154
|
database = await selectDatabase();
|
|
129
155
|
aiModel = await selectAIModel();
|
|
130
|
-
if (aiModel
|
|
156
|
+
if (!hasEmbeddingSupport(aiModel)) {
|
|
131
157
|
embeddingModel = await selectEmbeddingModel();
|
|
132
158
|
}
|
|
133
159
|
}
|
|
@@ -149,7 +175,7 @@ var create = new Command("create").description("Create a new ElizaOS project, pl
|
|
|
149
175
|
if (!isNonInteractive) {
|
|
150
176
|
database = await selectDatabase();
|
|
151
177
|
aiModel = await selectAIModel();
|
|
152
|
-
if (aiModel
|
|
178
|
+
if (!hasEmbeddingSupport(aiModel)) {
|
|
153
179
|
embeddingModel = await selectEmbeddingModel();
|
|
154
180
|
}
|
|
155
181
|
}
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
displayBunInstallationTipCompact,
|
|
7
7
|
emoji,
|
|
8
8
|
runBunCommand
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-Y5IA2UZ2.js";
|
|
10
10
|
import {
|
|
11
11
|
getAgentRuntimeUrl,
|
|
12
12
|
getAgentsBaseUrl
|
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
bunExecInherit,
|
|
17
17
|
bunExecSimple,
|
|
18
18
|
commandExists
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-3YTIOEFK.js";
|
|
20
20
|
import {
|
|
21
21
|
__require
|
|
22
22
|
} from "./chunk-AQ6OMR2A.js";
|
|
@@ -37,7 +37,6 @@ import * as semver from "semver";
|
|
|
37
37
|
import { fileURLToPath } from "url";
|
|
38
38
|
import { logger as logger2 } from "@elizaos/core";
|
|
39
39
|
import { existsSync as existsSync2, statSync, readFileSync } from "fs";
|
|
40
|
-
import { execSync } from "child_process";
|
|
41
40
|
|
|
42
41
|
// src/utils/resolve-utils.ts
|
|
43
42
|
import dotenv from "dotenv";
|
|
@@ -230,7 +229,8 @@ var UserEnvironment = class _UserEnvironment {
|
|
|
230
229
|
async getPackageManagerInfo() {
|
|
231
230
|
logger2.debug("[UserEnvironment] Using bun as the package manager for ElizaOS CLI");
|
|
232
231
|
const isNpx = process.env.npm_execpath?.includes("npx");
|
|
233
|
-
const
|
|
232
|
+
const scriptPath = process.argv[1] || "";
|
|
233
|
+
const isBunx = scriptPath.includes(".bun/install/cache/") || scriptPath.includes("bunx") || process.env.BUN_INSTALL_CACHE_DIR !== void 0;
|
|
234
234
|
let version = null;
|
|
235
235
|
if (typeof Bun !== "undefined" && Bun.version) {
|
|
236
236
|
version = Bun.version;
|
|
@@ -288,14 +288,23 @@ var UserEnvironment = class _UserEnvironment {
|
|
|
288
288
|
}
|
|
289
289
|
const packageName = "@elizaos/cli";
|
|
290
290
|
let isGlobalCheck = false;
|
|
291
|
+
const cliPath = process.argv[1] || "";
|
|
292
|
+
const isInGlobalPath = cliPath.includes("/.bun/install/global/") || cliPath.includes("/npm/global/") || process.platform === "win32" && cliPath.includes("\\npm\\");
|
|
291
293
|
try {
|
|
292
294
|
if (!isNpx && !isBunx) {
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
295
|
+
if (isInGlobalPath) {
|
|
296
|
+
isGlobalCheck = true;
|
|
297
|
+
} else {
|
|
298
|
+
const args = process.platform === "win32" ? ["cmd", "/c", `bun pm ls -g | findstr "${packageName}"`] : ["sh", "-c", `bun pm ls -g | grep -q "${packageName}"`];
|
|
299
|
+
const proc = Bun.spawnSync(args, {
|
|
300
|
+
stdout: "ignore",
|
|
301
|
+
stderr: "ignore"
|
|
302
|
+
});
|
|
303
|
+
isGlobalCheck = proc.exitCode === 0;
|
|
304
|
+
}
|
|
296
305
|
}
|
|
297
306
|
} catch (error) {
|
|
298
|
-
isGlobalCheck =
|
|
307
|
+
isGlobalCheck = isInGlobalPath;
|
|
299
308
|
}
|
|
300
309
|
const isGlobal = isGlobalCheck || process.env.NODE_ENV === "global";
|
|
301
310
|
return {
|
|
@@ -1058,6 +1067,8 @@ function getPackageName(templateType) {
|
|
|
1058
1067
|
return "project-tee-starter";
|
|
1059
1068
|
case "plugin":
|
|
1060
1069
|
return "plugin-starter";
|
|
1070
|
+
case "plugin-quick":
|
|
1071
|
+
return "plugin-quick-starter";
|
|
1061
1072
|
case "project":
|
|
1062
1073
|
case "project-starter":
|
|
1063
1074
|
default:
|
|
@@ -1102,7 +1113,7 @@ ${possibleTemplatePaths.join("\n")}`
|
|
|
1102
1113
|
}
|
|
1103
1114
|
logger7.debug(`Copying ${templateType} template from ${templateDir} to ${targetDir}`);
|
|
1104
1115
|
await copyDir(templateDir, targetDir);
|
|
1105
|
-
if (templateType === "plugin") {
|
|
1116
|
+
if (templateType === "plugin" || templateType === "plugin-quick") {
|
|
1106
1117
|
const pluginNameFromPath = path6.basename(targetDir);
|
|
1107
1118
|
await replacePluginNameInFiles(targetDir, pluginNameFromPath);
|
|
1108
1119
|
}
|
|
@@ -1156,6 +1167,8 @@ ${possibleTemplatePaths.join("\n")}`
|
|
|
1156
1167
|
async function replacePluginNameInFiles(targetDir, pluginName) {
|
|
1157
1168
|
const filesToProcess = [
|
|
1158
1169
|
"src/index.ts",
|
|
1170
|
+
"src/plugin.ts",
|
|
1171
|
+
"src/__tests__/plugin.test.ts",
|
|
1159
1172
|
"__tests__/plugin.test.ts",
|
|
1160
1173
|
"e2e/starter-plugin.test.ts",
|
|
1161
1174
|
"README.md"
|
|
@@ -1167,6 +1180,7 @@ async function replacePluginNameInFiles(targetDir, pluginName) {
|
|
|
1167
1180
|
if (await fs5.access(fullPath).then(() => true).catch(() => false)) {
|
|
1168
1181
|
let content = await fs5.readFile(fullPath, "utf8");
|
|
1169
1182
|
content = content.replace(/plugin-starter/g, pluginName);
|
|
1183
|
+
content = content.replace(/plugin-quick-starter/g, pluginName);
|
|
1170
1184
|
await fs5.writeFile(fullPath, content, "utf8");
|
|
1171
1185
|
logger7.debug(`Updated plugin name in ${filePath}`);
|
|
1172
1186
|
}
|
|
@@ -2751,7 +2765,7 @@ async function getGitHubCredentials() {
|
|
|
2751
2765
|
}
|
|
2752
2766
|
logger10.warn("Invalid GitHub token found in environment variables");
|
|
2753
2767
|
}
|
|
2754
|
-
const { getGitHubToken: getGitHubToken2 } = await import("./registry-
|
|
2768
|
+
const { getGitHubToken: getGitHubToken2 } = await import("./registry-K2OCCRXO.js");
|
|
2755
2769
|
const token = await getGitHubToken2() || void 0;
|
|
2756
2770
|
if (token) {
|
|
2757
2771
|
const isValid2 = await validateGitHubToken(token);
|
|
@@ -3432,7 +3446,7 @@ async function stopAgent(opts) {
|
|
|
3432
3446
|
process.exit(1);
|
|
3433
3447
|
}
|
|
3434
3448
|
try {
|
|
3435
|
-
const { bunExec: bunExec2 } = await import("./bun-exec-
|
|
3449
|
+
const { bunExec: bunExec2 } = await import("./bun-exec-KJOLGZOL.js");
|
|
3436
3450
|
const patterns = [
|
|
3437
3451
|
"(node|bun).*elizaos",
|
|
3438
3452
|
"(node|bun).*eliza.*start",
|
|
@@ -9,10 +9,10 @@ import {
|
|
|
9
9
|
setAgentConfig,
|
|
10
10
|
startAgent,
|
|
11
11
|
stopAgent
|
|
12
|
-
} from "../../../chunk-
|
|
13
|
-
import "../../../chunk-
|
|
12
|
+
} from "../../../chunk-KKAK7OQA.js";
|
|
13
|
+
import "../../../chunk-Y5IA2UZ2.js";
|
|
14
14
|
import "../../../chunk-F24MS2YR.js";
|
|
15
|
-
import "../../../chunk-
|
|
15
|
+
import "../../../chunk-3YTIOEFK.js";
|
|
16
16
|
import "../../../chunk-AQ6OMR2A.js";
|
|
17
17
|
export {
|
|
18
18
|
clearAgentMemories,
|
|
@@ -6,13 +6,13 @@ import {
|
|
|
6
6
|
agent,
|
|
7
7
|
getAgents,
|
|
8
8
|
resolveAgentId
|
|
9
|
-
} from "../../chunk-
|
|
10
|
-
import "../../chunk-
|
|
9
|
+
} from "../../chunk-KKAK7OQA.js";
|
|
10
|
+
import "../../chunk-Y5IA2UZ2.js";
|
|
11
11
|
import {
|
|
12
12
|
getAgentRuntimeUrl,
|
|
13
13
|
getAgentsBaseUrl
|
|
14
14
|
} from "../../chunk-F24MS2YR.js";
|
|
15
|
-
import "../../chunk-
|
|
15
|
+
import "../../chunk-3YTIOEFK.js";
|
|
16
16
|
import "../../chunk-AQ6OMR2A.js";
|
|
17
17
|
export {
|
|
18
18
|
agent,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Creates a new plugin with the specified name and configuration.
|
|
3
3
|
*/
|
|
4
|
-
declare function createPlugin(pluginName: string, targetDir: string, isNonInteractive?: boolean): Promise<void>;
|
|
4
|
+
declare function createPlugin(pluginName: string, targetDir: string, pluginType?: string, isNonInteractive?: boolean): Promise<void>;
|
|
5
5
|
/**
|
|
6
6
|
* Creates a new agent character file with the specified name.
|
|
7
7
|
*/
|
|
@@ -12,11 +12,11 @@ import {
|
|
|
12
12
|
setupAIModelConfig,
|
|
13
13
|
setupEmbeddingModelConfig,
|
|
14
14
|
setupProjectEnvironment
|
|
15
|
-
} from "../../../chunk-
|
|
16
|
-
import "../../../chunk-
|
|
17
|
-
import "../../../chunk-
|
|
15
|
+
} from "../../../chunk-2ZF5OAMV.js";
|
|
16
|
+
import "../../../chunk-KKAK7OQA.js";
|
|
17
|
+
import "../../../chunk-Y5IA2UZ2.js";
|
|
18
18
|
import "../../../chunk-F24MS2YR.js";
|
|
19
|
-
import "../../../chunk-
|
|
19
|
+
import "../../../chunk-3YTIOEFK.js";
|
|
20
20
|
import "../../../chunk-AQ6OMR2A.js";
|
|
21
21
|
export {
|
|
22
22
|
createAgent,
|
|
@@ -4,12 +4,12 @@ const require = createRequire(import.meta.url);
|
|
|
4
4
|
|
|
5
5
|
import {
|
|
6
6
|
create
|
|
7
|
-
} from "../../chunk-
|
|
8
|
-
import "../../chunk-
|
|
9
|
-
import "../../chunk-
|
|
10
|
-
import "../../chunk-
|
|
7
|
+
} from "../../chunk-E54G6FI7.js";
|
|
8
|
+
import "../../chunk-2ZF5OAMV.js";
|
|
9
|
+
import "../../chunk-KKAK7OQA.js";
|
|
10
|
+
import "../../chunk-Y5IA2UZ2.js";
|
|
11
11
|
import "../../chunk-F24MS2YR.js";
|
|
12
|
-
import "../../chunk-
|
|
12
|
+
import "../../chunk-3YTIOEFK.js";
|
|
13
13
|
import "../../chunk-AQ6OMR2A.js";
|
|
14
14
|
export {
|
|
15
15
|
create
|