@elizaos/cli 1.2.5 → 1.2.7

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 (64) hide show
  1. package/dist/{bun-exec-4BOHUSSZ.js → bun-exec-KJOLGZOL.js} +1 -1
  2. package/dist/{chunk-JR4V32X7.js → chunk-2ZF5OAMV.js} +37 -65
  3. package/dist/{chunk-EVE5GO74.js → chunk-3YTIOEFK.js} +20 -1
  4. package/dist/{chunk-ECH6TQ7M.js → chunk-E54G6FI7.js} +32 -6
  5. package/dist/{chunk-X5K7QYAH.js → chunk-KKAK7OQA.js} +25 -11
  6. package/dist/{chunk-6ZB77OJK.js → chunk-Y5IA2UZ2.js} +1 -1
  7. package/dist/commands/agent/actions/index.js +3 -3
  8. package/dist/commands/agent/index.js +3 -3
  9. package/dist/commands/create/actions/index.d.ts +1 -1
  10. package/dist/commands/create/actions/index.js +4 -4
  11. package/dist/commands/create/index.js +5 -5
  12. package/dist/index.js +314 -239
  13. package/dist/{plugin-creator-UBYADX3B.js → plugin-creator-Y2NWASXI.js} +2 -2
  14. package/dist/{registry-U2ZGKGSS.js → registry-K2OCCRXO.js} +3 -3
  15. package/dist/templates/plugin-quick-starter/README.md +214 -0
  16. package/dist/templates/plugin-quick-starter/bunfig.toml +10 -0
  17. package/dist/templates/plugin-quick-starter/package.json +76 -0
  18. package/dist/templates/plugin-quick-starter/scripts/install-test-deps.js +53 -0
  19. package/dist/templates/plugin-quick-starter/src/__tests__/plugin.test.ts +209 -0
  20. package/dist/templates/plugin-quick-starter/src/__tests__/test-utils.ts +162 -0
  21. package/dist/templates/plugin-quick-starter/src/index.ts +4 -0
  22. package/dist/templates/plugin-quick-starter/src/plugin.ts +272 -0
  23. package/dist/templates/plugin-quick-starter/tsconfig.build.json +11 -0
  24. package/dist/templates/plugin-quick-starter/tsconfig.json +28 -0
  25. package/dist/templates/plugin-quick-starter/tsup.config.ts +20 -0
  26. package/dist/templates/plugin-starter/package.json +2 -2
  27. package/dist/templates/plugin-starter/scripts/install-test-deps.js +7 -3
  28. package/dist/templates/plugin-starter/src/plugin.ts +13 -15
  29. package/dist/templates/project-starter/package.json +4 -4
  30. package/dist/templates/project-starter/scripts/install-test-deps.js +7 -3
  31. package/dist/templates/project-starter/src/character.ts +3 -3
  32. package/dist/templates/project-tee-starter/package.json +3 -3
  33. package/dist/{utils-7XPDALF7.js → utils-QSRUVLAT.js} +3 -3
  34. package/package.json +5 -5
  35. package/templates/plugin-quick-starter/README.md +214 -0
  36. package/templates/plugin-quick-starter/bunfig.toml +10 -0
  37. package/templates/plugin-quick-starter/package.json +76 -0
  38. package/templates/plugin-quick-starter/scripts/install-test-deps.js +53 -0
  39. package/templates/plugin-quick-starter/src/__tests__/plugin.test.ts +209 -0
  40. package/templates/plugin-quick-starter/src/__tests__/test-utils.ts +162 -0
  41. package/templates/plugin-quick-starter/src/index.ts +4 -0
  42. package/templates/plugin-quick-starter/src/plugin.ts +272 -0
  43. package/templates/plugin-quick-starter/tsconfig.build.json +11 -0
  44. package/templates/plugin-quick-starter/tsconfig.json +28 -0
  45. package/templates/plugin-quick-starter/tsup.config.ts +20 -0
  46. package/templates/plugin-starter/package.json +2 -2
  47. package/templates/plugin-starter/scripts/install-test-deps.js +7 -3
  48. package/templates/plugin-starter/src/plugin.ts +13 -15
  49. package/templates/project-starter/package.json +4 -4
  50. package/templates/project-starter/scripts/install-test-deps.js +7 -3
  51. package/templates/project-starter/src/character.ts +3 -3
  52. package/templates/project-tee-starter/package.json +3 -3
  53. package/dist/templates/plugin-starter/dist/assets/index-CgkejLs_.css +0 -1
  54. package/dist/templates/plugin-starter/dist/assets/index-DUtsQhKX.js +0 -49
  55. package/dist/templates/plugin-starter/dist/index.html +0 -14
  56. package/dist/templates/plugin-starter/dist/index.js +0 -391
  57. package/dist/templates/plugin-starter/dist/index.js.map +0 -1
  58. package/templates/plugin-starter/dist/.vite/manifest.json +0 -11
  59. package/templates/plugin-starter/dist/assets/index-CgkejLs_.css +0 -1
  60. package/templates/plugin-starter/dist/assets/index-DUtsQhKX.js +0 -49
  61. package/templates/plugin-starter/dist/index.d.ts +0 -14
  62. package/templates/plugin-starter/dist/index.html +0 -14
  63. package/templates/plugin-starter/dist/index.js +0 -391
  64. package/templates/plugin-starter/dist/index.js.map +0 -1
@@ -9,7 +9,7 @@ import {
9
9
  bunExecInherit,
10
10
  bunExecSimple,
11
11
  commandExists
12
- } from "./chunk-EVE5GO74.js";
12
+ } from "./chunk-3YTIOEFK.js";
13
13
  import "./chunk-AQ6OMR2A.js";
14
14
  export {
15
15
  ProcessExecutionError,
@@ -19,7 +19,7 @@ import {
19
19
  promptAndStorePostgresUrl,
20
20
  runTasks,
21
21
  setupPgLite
22
- } from "./chunk-X5K7QYAH.js";
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
- // Always include Ollama as ultimate fallback for local AI
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
- ollama: "ollama",
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
- const envContent = existsSync2(envFilePath) ? await fs2.readFile(envFilePath, "utf8") : "";
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("Copying plugin template", () => copyTemplate("plugin", pluginTargetDir)),
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: { ...process.env, ...options.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-JR4V32X7.js";
16
+ } from "./chunk-2ZF5OAMV.js";
16
17
  import {
17
18
  displayBanner,
18
19
  handleError
19
- } from "./chunk-X5K7QYAH.js";
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
- await createPlugin(projectName, process.cwd(), isNonInteractive);
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 === "claude" || aiModel === "openrouter") {
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 === "claude" || aiModel === "openrouter") {
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-6ZB77OJK.js";
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-EVE5GO74.js";
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 isBunx = process.argv[0]?.includes("bun");
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
- const command = process.platform === "win32" ? `bun pm ls -g | findstr "${packageName}"` : `bun pm ls -g | grep -q "${packageName}"`;
294
- execSync(command, { stdio: "ignore" });
295
- isGlobalCheck = true;
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 = false;
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-U2ZGKGSS.js");
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-4BOHUSSZ.js");
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",
@@ -5,7 +5,7 @@ const require = createRequire(import.meta.url);
5
5
  import {
6
6
  bunExec,
7
7
  bunExecInherit
8
- } from "./chunk-EVE5GO74.js";
8
+ } from "./chunk-3YTIOEFK.js";
9
9
 
10
10
  // src/utils/emoji-handler.ts
11
11
  import { logger } from "@elizaos/core";
@@ -9,10 +9,10 @@ import {
9
9
  setAgentConfig,
10
10
  startAgent,
11
11
  stopAgent
12
- } from "../../../chunk-X5K7QYAH.js";
13
- import "../../../chunk-6ZB77OJK.js";
12
+ } from "../../../chunk-KKAK7OQA.js";
13
+ import "../../../chunk-Y5IA2UZ2.js";
14
14
  import "../../../chunk-F24MS2YR.js";
15
- import "../../../chunk-EVE5GO74.js";
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-X5K7QYAH.js";
10
- import "../../chunk-6ZB77OJK.js";
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-EVE5GO74.js";
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-JR4V32X7.js";
16
- import "../../../chunk-X5K7QYAH.js";
17
- import "../../../chunk-6ZB77OJK.js";
15
+ } from "../../../chunk-2ZF5OAMV.js";
16
+ import "../../../chunk-KKAK7OQA.js";
17
+ import "../../../chunk-Y5IA2UZ2.js";
18
18
  import "../../../chunk-F24MS2YR.js";
19
- import "../../../chunk-EVE5GO74.js";
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-ECH6TQ7M.js";
8
- import "../../chunk-JR4V32X7.js";
9
- import "../../chunk-X5K7QYAH.js";
10
- import "../../chunk-6ZB77OJK.js";
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-EVE5GO74.js";
12
+ import "../../chunk-3YTIOEFK.js";
13
13
  import "../../chunk-AQ6OMR2A.js";
14
14
  export {
15
15
  create