arcanea 3.0.2 → 3.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/cli/index.js CHANGED
@@ -2206,7 +2206,21 @@ var import_picocolors = __toESM(require_picocolors(), 1);
2206
2206
  import { cpSync, existsSync, mkdirSync, writeFileSync, readFileSync } from "fs";
2207
2207
  import { join, dirname } from "path";
2208
2208
  import { fileURLToPath } from "url";
2209
- var __dirname2 = dirname(fileURLToPath(import.meta.url));
2209
+ function findPackageRoot() {
2210
+ let dir = dirname(fileURLToPath(import.meta.url));
2211
+ for (let i = 0;i < 5; i++) {
2212
+ const pkgPath = join(dir, "package.json");
2213
+ if (existsSync(pkgPath)) {
2214
+ try {
2215
+ const pkg = JSON.parse(readFileSync(pkgPath, "utf-8"));
2216
+ if (pkg.name === "arcanea")
2217
+ return dir;
2218
+ } catch {}
2219
+ }
2220
+ dir = dirname(dir);
2221
+ }
2222
+ return dirname(dirname(fileURLToPath(import.meta.url)));
2223
+ }
2210
2224
  function detectPlatforms() {
2211
2225
  const detected = [];
2212
2226
  const home = process.env.HOME || process.env.USERPROFILE || "";
@@ -2255,7 +2269,7 @@ async function install(targetDir, options = {}) {
2255
2269
  `));
2256
2270
  console.log(import_picocolors.default.dim(`Detected platforms: ${platforms.join(", ")}
2257
2271
  `));
2258
- const packageRoot = join(__dirname2, "..");
2272
+ const packageRoot = findPackageRoot();
2259
2273
  for (const platform of platforms) {
2260
2274
  await installForPlatform(targetDir, packageRoot, platform, force);
2261
2275
  }
@@ -2288,10 +2302,18 @@ async function installForPlatform(targetDir, packageRoot, platform, force) {
2288
2302
  console.log(import_picocolors.default.green(` ✓ Installed ${dir}`));
2289
2303
  }
2290
2304
  }
2305
+ const claudeMdSource = join(packageRoot, "CLAUDE.md");
2306
+ if (existsSync(claudeMdSource)) {
2307
+ const claudeMdTarget = join(platformPath, "CLAUDE.md");
2308
+ if (!existsSync(claudeMdTarget) || force) {
2309
+ cpSync(claudeMdSource, claudeMdTarget);
2310
+ console.log(import_picocolors.default.green(` ✓ Installed CLAUDE.md (Arcanea identity)`));
2311
+ }
2312
+ }
2291
2313
  if (platform === "claude-code") {
2292
2314
  await installClaudeCodeSettings(platformPath, force);
2293
- } else if (platform === "opencode") {
2294
- await installOpenCodeSettings(platformPath, packageRoot, force);
2315
+ } else if (platform === "cursor") {
2316
+ await installCursorRules(targetDir, packageRoot, force);
2295
2317
  }
2296
2318
  }
2297
2319
  async function installClaudeCodeSettings(platformPath, force) {
@@ -2302,15 +2324,38 @@ async function installClaudeCodeSettings(platformPath, force) {
2302
2324
  UserPromptSubmit: [
2303
2325
  {
2304
2326
  matcher: "ultraworld|ulw",
2305
- hooks: [{ type: "command", command: "echo 'ARCANEA: Activating ultraworld - full parallel world generation'" }]
2327
+ hooks: [{
2328
+ type: "command",
2329
+ command: "echo '[ARCANEA_MODE=ultraworld] Fire ALL world-building agents: arcanea-story-master, arcanea-character-crafter, arcanea-world-expander, arcanea-lore-master, creation-architect. Use Task tool with run_in_background=true for each agent. Respond with parallel results.'"
2330
+ }]
2306
2331
  },
2307
2332
  {
2308
2333
  matcher: "ultrawrite|ulwr",
2309
- hooks: [{ type: "command", command: "echo 'ARCANEA: Activating ultrawrite - full parallel chapter writing'" }]
2334
+ hooks: [{
2335
+ type: "command",
2336
+ command: "echo '[ARCANEA_MODE=ultrawrite] Fire ALL writing agents: story-architect, prose-weaver, voice-alchemist, line-editor, continuity-guardian. Use Task tool with run_in_background=true for each agent. Respond with parallel results.'"
2337
+ }]
2338
+ },
2339
+ {
2340
+ matcher: "ultracode|ulc",
2341
+ hooks: [{
2342
+ type: "command",
2343
+ command: "echo '[ARCANEA_MODE=ultracode] Fire ALL coding agents: arcanea-architect, arcanea-coder, arcanea-reviewer, arcanea-debugger. Use Task tool with run_in_background=true for each agent. Respond with parallel results.'"
2344
+ }]
2310
2345
  },
2311
2346
  {
2312
2347
  matcher: "ultrabook|ulb",
2313
- hooks: [{ type: "command", command: "echo 'ARCANEA: Activating ultrabook - complete book pipeline'" }]
2348
+ hooks: [{
2349
+ type: "command",
2350
+ command: "echo '[ARCANEA_MODE=ultrabook] Complete book pipeline: world-building → story structure → chapter drafts → editing → production. Run sequentially, with parallel agents within each phase.'"
2351
+ }]
2352
+ },
2353
+ {
2354
+ matcher: "ultrawork|ulwk",
2355
+ hooks: [{
2356
+ type: "command",
2357
+ command: "echo '[ARCANEA_MODE=ultrawork] Maximum parallel execution. Spawn all relevant agents simultaneously using Task tool with run_in_background=true.'"
2358
+ }]
2314
2359
  }
2315
2360
  ]
2316
2361
  }
@@ -2319,12 +2364,18 @@ async function installClaudeCodeSettings(platformPath, force) {
2319
2364
  console.log(import_picocolors.default.green(" ✓ Created Claude Code settings with magic word hooks"));
2320
2365
  }
2321
2366
  }
2322
- async function installOpenCodeSettings(platformPath, packageRoot, force) {
2323
- const claudeMdPath = join(platformPath, "CLAUDE.md");
2324
- const sourcePath = join(packageRoot, "CLAUDE.md");
2325
- if (existsSync(sourcePath) && (!existsSync(claudeMdPath) || force)) {
2326
- cpSync(sourcePath, claudeMdPath);
2327
- console.log(import_picocolors.default.green(" ✓ Installed OpenCode CLAUDE.md"));
2367
+ async function installCursorRules(targetDir, packageRoot, force) {
2368
+ const rulesPath = join(targetDir, ".cursorrules");
2369
+ if (!existsSync(rulesPath) || force) {
2370
+ const claudeMdSource = join(packageRoot, "CLAUDE.md");
2371
+ if (existsSync(claudeMdSource)) {
2372
+ const claudeContent = readFileSync(claudeMdSource, "utf-8");
2373
+ const cursorRules = `# Cursor Rules — Generated by Arcanea v${VERSION}
2374
+
2375
+ ${claudeContent}`;
2376
+ writeFileSync(rulesPath, cursorRules);
2377
+ console.log(import_picocolors.default.green(" ✓ Created .cursorrules with Arcanea identity"));
2378
+ }
2328
2379
  }
2329
2380
  }
2330
2381
  async function installMcpConfig(targetDir, force) {
@@ -2343,6 +2394,11 @@ Configuring MCP integrations...`));
2343
2394
  ...existingConfig,
2344
2395
  mcpServers: {
2345
2396
  ...existingConfig.mcpServers || {},
2397
+ arcanea: {
2398
+ command: "npx",
2399
+ args: ["-y", "@arcanea/mcp-server@latest"],
2400
+ description: "Arcanea creative toolkit - world-building, characters, lore, bestiary"
2401
+ },
2346
2402
  "nano-banana": {
2347
2403
  command: "npx",
2348
2404
  args: ["-y", "@anthropic-ai/nano-banana"],
@@ -2356,6 +2412,7 @@ Configuring MCP integrations...`));
2356
2412
  }
2357
2413
  };
2358
2414
  writeFileSync(mcpPath, JSON.stringify(mcpConfig, null, 2));
2415
+ console.log(import_picocolors.default.green("✓ Configured Arcanea MCP (creative toolkit)"));
2359
2416
  console.log(import_picocolors.default.green("✓ Configured Nano Banana MCP (image generation)"));
2360
2417
  console.log(import_picocolors.default.green("✓ Configured Context7 MCP (documentation)"));
2361
2418
  console.log(import_picocolors.default.dim("ℹ Suno MCP requires manual API key setup"));
@@ -2389,6 +2446,8 @@ function printSuccessMessage(platforms) {
2389
2446
  console.log(import_picocolors.default.cyan(" ultraworld") + " - Full parallel world generation");
2390
2447
  console.log(import_picocolors.default.cyan(" ultrawrite") + " - Full parallel chapter writing");
2391
2448
  console.log(import_picocolors.default.cyan(" ultrabook ") + " - Complete book pipeline");
2449
+ console.log(import_picocolors.default.yellow(" ultracode ") + " - Full parallel coding (architect + coder + reviewer)");
2450
+ console.log(import_picocolors.default.yellow(" ultrawork ") + " - Maximum parallel execution for any task");
2392
2451
  console.log();
2393
2452
  console.log(import_picocolors.default.bold("Try:"));
2394
2453
  console.log(import_picocolors.default.dim(" /luminor Valora courage"));
@@ -2398,7 +2457,7 @@ function printSuccessMessage(platforms) {
2398
2457
  }
2399
2458
 
2400
2459
  // src/index.ts
2401
- var VERSION = "3.0.2";
2460
+ var VERSION = "3.2.0";
2402
2461
  var NAME = "arcanea";
2403
2462
  var ORCHESTRATOR = "Arcanea";
2404
2463
  var defaultConfig = {
@@ -2525,7 +2584,7 @@ var AGENT_TEAMS = {
2525
2584
  };
2526
2585
 
2527
2586
  // src/cli/index.ts
2528
- import { existsSync as existsSync2 } from "fs";
2587
+ import { existsSync as existsSync2, readdirSync, readFileSync as readFileSync2 } from "fs";
2529
2588
  import { join as join2 } from "path";
2530
2589
  var program2 = new Command;
2531
2590
  program2.name(NAME).description(`${ORCHESTRATOR} - The Creative Intelligence Platform`).version(VERSION);
@@ -2616,19 +2675,20 @@ program2.command("magic").description("Show magic words and their effects").acti
2616
2675
  console.log(import_picocolors2.default.cyan(`
2617
2676
  Magic Words
2618
2677
  `));
2619
- console.log(import_picocolors2.default.bold(import_picocolors2.default.cyan("ultraworld")) + " (or " + import_picocolors2.default.bold("ulw") + ")");
2620
- console.log(" Fires ALL world-building agents in parallel");
2621
- console.log(" World Architect + Character Creator + Lore Master + all specialists");
2678
+ console.log(import_picocolors2.default.bold("Creative Magic:"));
2679
+ console.log(import_picocolors2.default.bold(import_picocolors2.default.cyan(" ultraworld")) + " (or ulw) — Fire ALL world-building agents in parallel");
2680
+ console.log(import_picocolors2.default.bold(import_picocolors2.default.green(" ultrawrite")) + " (or ulwr) Fire ALL writing/editing agents in parallel");
2681
+ console.log(import_picocolors2.default.bold(import_picocolors2.default.magenta(" ultrabook")) + " (or ulb) — Complete book pipeline end-to-end");
2622
2682
  console.log();
2623
- console.log(import_picocolors2.default.bold(import_picocolors2.default.green("ultrawrite")) + " (or " + import_picocolors2.default.bold("ulwr") + ")");
2624
- console.log(" Fires ALL writing/editing agents in parallel");
2625
- console.log(" Story Architect + Prose Weaver + Voice Alchemist + editors");
2683
+ console.log(import_picocolors2.default.bold("Technical Magic:"));
2684
+ console.log(import_picocolors2.default.bold(import_picocolors2.default.yellow(" ultracode")) + " (or ulc) — Fire ALL coding agents (architect + coder + reviewer)");
2685
+ console.log(import_picocolors2.default.bold(import_picocolors2.default.cyan(" ultrawork")) + " (or ulwk) Maximum parallel execution for ANY task");
2626
2686
  console.log();
2627
- console.log(import_picocolors2.default.bold(import_picocolors2.default.magenta("ultrabook")) + " (or " + import_picocolors2.default.bold("ulb") + ")");
2628
- console.log(" Complete book pipeline - everything at once");
2629
- console.log(" World Building Story Chapters Editing Production");
2687
+ console.log(import_picocolors2.default.bold("Prefix Triggers:"));
2688
+ console.log(import_picocolors2.default.dim(" arcanea: [task]") + " — Invoke Arcanea's highest intelligence mode");
2689
+ console.log(import_picocolors2.default.dim(" luminor: [task]") + " — Apply Luminor wisdom to the task");
2630
2690
  console.log();
2631
- console.log(import_picocolors2.default.dim("Just include any magic word in your prompt!"));
2691
+ console.log(import_picocolors2.default.dim("Include any magic word in your prompt to activate!"));
2632
2692
  console.log();
2633
2693
  });
2634
2694
  program2.command("status").description("Check Arcanea installation status").action(() => {
@@ -2672,4 +2732,91 @@ ${ORCHESTRATOR} Status
2672
2732
  }
2673
2733
  console.log();
2674
2734
  });
2735
+ program2.command("doctor").description("Diagnose Arcanea installation health").action(() => {
2736
+ const cwd = process.cwd();
2737
+ let issues = 0;
2738
+ let ok = 0;
2739
+ console.log(import_picocolors2.default.cyan(`
2740
+ ${ORCHESTRATOR} Doctor (v${VERSION})
2741
+ `));
2742
+ console.log(import_picocolors2.default.bold(`Checking installation health...
2743
+ `));
2744
+ const claudePaths = [
2745
+ join2(cwd, ".claude", "CLAUDE.md"),
2746
+ join2(cwd, ".opencode", "CLAUDE.md"),
2747
+ join2(cwd, "CLAUDE.md")
2748
+ ];
2749
+ const hasClaudeMd = claudePaths.some((p) => existsSync2(p));
2750
+ if (hasClaudeMd) {
2751
+ console.log(import_picocolors2.default.green(" ✓ CLAUDE.md found (Arcanea identity active)"));
2752
+ ok++;
2753
+ } else {
2754
+ console.log(import_picocolors2.default.red(" ✗ No CLAUDE.md found — run 'arcanea install' to fix"));
2755
+ issues++;
2756
+ }
2757
+ const agentPaths = [".claude/agents", ".opencode/agents"];
2758
+ const hasAgents = agentPaths.some((p) => {
2759
+ const full = join2(cwd, p);
2760
+ return existsSync2(full) && readdirSync(full).length > 0;
2761
+ });
2762
+ if (hasAgents) {
2763
+ const agentDir = agentPaths.find((p) => existsSync2(join2(cwd, p)));
2764
+ const count = readdirSync(join2(cwd, agentDir)).filter((f) => f.endsWith(".md")).length;
2765
+ console.log(import_picocolors2.default.green(` ✓ ${count} agent definitions installed`));
2766
+ ok++;
2767
+ } else {
2768
+ console.log(import_picocolors2.default.red(" ✗ No agents installed — run 'arcanea install --force'"));
2769
+ issues++;
2770
+ }
2771
+ const skillPaths = [".claude/skills", ".opencode/skills"];
2772
+ const hasSkills = skillPaths.some((p) => {
2773
+ const full = join2(cwd, p);
2774
+ return existsSync2(full) && readdirSync(full).length > 0;
2775
+ });
2776
+ if (hasSkills) {
2777
+ console.log(import_picocolors2.default.green(" ✓ Skills installed"));
2778
+ ok++;
2779
+ } else {
2780
+ console.log(import_picocolors2.default.red(" ✗ No skills installed — run 'arcanea install --force'"));
2781
+ issues++;
2782
+ }
2783
+ const mcpPath = join2(cwd, ".mcp.json");
2784
+ if (existsSync2(mcpPath)) {
2785
+ try {
2786
+ const mcp = JSON.parse(readFileSync2(mcpPath, "utf-8"));
2787
+ const servers = Object.keys(mcp.mcpServers || {});
2788
+ const hasArcanea = servers.includes("arcanea");
2789
+ console.log(import_picocolors2.default.green(` ✓ MCP config: ${servers.length} servers configured`));
2790
+ if (!hasArcanea) {
2791
+ console.log(import_picocolors2.default.yellow(" ⚠ Arcanea MCP server not configured — run 'arcanea install --force'"));
2792
+ }
2793
+ ok++;
2794
+ } catch {
2795
+ console.log(import_picocolors2.default.red(" ✗ .mcp.json is invalid JSON"));
2796
+ issues++;
2797
+ }
2798
+ } else {
2799
+ console.log(import_picocolors2.default.red(" ✗ No .mcp.json — run 'arcanea install'"));
2800
+ issues++;
2801
+ }
2802
+ if (existsSync2(join2(cwd, "arcanea.json"))) {
2803
+ console.log(import_picocolors2.default.green(" ✓ arcanea.json config exists"));
2804
+ ok++;
2805
+ } else {
2806
+ console.log(import_picocolors2.default.yellow(" ○ No arcanea.json (optional)"));
2807
+ }
2808
+ if (existsSync2(join2(cwd, ".cursorrules"))) {
2809
+ console.log(import_picocolors2.default.green(" ✓ .cursorrules configured for Cursor"));
2810
+ ok++;
2811
+ }
2812
+ console.log();
2813
+ if (issues === 0) {
2814
+ console.log(import_picocolors2.default.green(import_picocolors2.default.bold(`Health: ${ok} checks passed, 0 issues`)));
2815
+ console.log(import_picocolors2.default.green("Arcanea is fully operational!"));
2816
+ } else {
2817
+ console.log(import_picocolors2.default.yellow(import_picocolors2.default.bold(`Health: ${ok} passed, ${issues} issues found`)));
2818
+ console.log(import_picocolors2.default.dim("Run 'arcanea install --force' to fix issues."));
2819
+ }
2820
+ console.log();
2821
+ });
2675
2822
  program2.parse();
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export declare const VERSION = "3.0.2";
1
+ export declare const VERSION = "3.2.0";
2
2
  export declare const NAME = "arcanea";
3
3
  export declare const ORCHESTRATOR = "Arcanea";
4
4
  export type Platform = "claude-code" | "opencode" | "codex" | "gemini" | "cursor" | "unknown";
package/dist/index.js CHANGED
@@ -91,7 +91,21 @@ var import_picocolors = __toESM(require_picocolors(), 1);
91
91
  import { cpSync, existsSync, mkdirSync, writeFileSync, readFileSync } from "fs";
92
92
  import { join, dirname } from "path";
93
93
  import { fileURLToPath } from "url";
94
- var __dirname2 = dirname(fileURLToPath(import.meta.url));
94
+ function findPackageRoot() {
95
+ let dir = dirname(fileURLToPath(import.meta.url));
96
+ for (let i = 0;i < 5; i++) {
97
+ const pkgPath = join(dir, "package.json");
98
+ if (existsSync(pkgPath)) {
99
+ try {
100
+ const pkg = JSON.parse(readFileSync(pkgPath, "utf-8"));
101
+ if (pkg.name === "arcanea")
102
+ return dir;
103
+ } catch {}
104
+ }
105
+ dir = dirname(dir);
106
+ }
107
+ return dirname(dirname(fileURLToPath(import.meta.url)));
108
+ }
95
109
  function detectPlatforms() {
96
110
  const detected = [];
97
111
  const home = process.env.HOME || process.env.USERPROFILE || "";
@@ -140,7 +154,7 @@ async function install(targetDir, options = {}) {
140
154
  `));
141
155
  console.log(import_picocolors.default.dim(`Detected platforms: ${platforms.join(", ")}
142
156
  `));
143
- const packageRoot = join(__dirname2, "..");
157
+ const packageRoot = findPackageRoot();
144
158
  for (const platform of platforms) {
145
159
  await installForPlatform(targetDir, packageRoot, platform, force);
146
160
  }
@@ -173,10 +187,18 @@ async function installForPlatform(targetDir, packageRoot, platform, force) {
173
187
  console.log(import_picocolors.default.green(` ✓ Installed ${dir}`));
174
188
  }
175
189
  }
190
+ const claudeMdSource = join(packageRoot, "CLAUDE.md");
191
+ if (existsSync(claudeMdSource)) {
192
+ const claudeMdTarget = join(platformPath, "CLAUDE.md");
193
+ if (!existsSync(claudeMdTarget) || force) {
194
+ cpSync(claudeMdSource, claudeMdTarget);
195
+ console.log(import_picocolors.default.green(` ✓ Installed CLAUDE.md (Arcanea identity)`));
196
+ }
197
+ }
176
198
  if (platform === "claude-code") {
177
199
  await installClaudeCodeSettings(platformPath, force);
178
- } else if (platform === "opencode") {
179
- await installOpenCodeSettings(platformPath, packageRoot, force);
200
+ } else if (platform === "cursor") {
201
+ await installCursorRules(targetDir, packageRoot, force);
180
202
  }
181
203
  }
182
204
  async function installClaudeCodeSettings(platformPath, force) {
@@ -187,15 +209,38 @@ async function installClaudeCodeSettings(platformPath, force) {
187
209
  UserPromptSubmit: [
188
210
  {
189
211
  matcher: "ultraworld|ulw",
190
- hooks: [{ type: "command", command: "echo 'ARCANEA: Activating ultraworld - full parallel world generation'" }]
212
+ hooks: [{
213
+ type: "command",
214
+ command: "echo '[ARCANEA_MODE=ultraworld] Fire ALL world-building agents: arcanea-story-master, arcanea-character-crafter, arcanea-world-expander, arcanea-lore-master, creation-architect. Use Task tool with run_in_background=true for each agent. Respond with parallel results.'"
215
+ }]
191
216
  },
192
217
  {
193
218
  matcher: "ultrawrite|ulwr",
194
- hooks: [{ type: "command", command: "echo 'ARCANEA: Activating ultrawrite - full parallel chapter writing'" }]
219
+ hooks: [{
220
+ type: "command",
221
+ command: "echo '[ARCANEA_MODE=ultrawrite] Fire ALL writing agents: story-architect, prose-weaver, voice-alchemist, line-editor, continuity-guardian. Use Task tool with run_in_background=true for each agent. Respond with parallel results.'"
222
+ }]
223
+ },
224
+ {
225
+ matcher: "ultracode|ulc",
226
+ hooks: [{
227
+ type: "command",
228
+ command: "echo '[ARCANEA_MODE=ultracode] Fire ALL coding agents: arcanea-architect, arcanea-coder, arcanea-reviewer, arcanea-debugger. Use Task tool with run_in_background=true for each agent. Respond with parallel results.'"
229
+ }]
195
230
  },
196
231
  {
197
232
  matcher: "ultrabook|ulb",
198
- hooks: [{ type: "command", command: "echo 'ARCANEA: Activating ultrabook - complete book pipeline'" }]
233
+ hooks: [{
234
+ type: "command",
235
+ command: "echo '[ARCANEA_MODE=ultrabook] Complete book pipeline: world-building → story structure → chapter drafts → editing → production. Run sequentially, with parallel agents within each phase.'"
236
+ }]
237
+ },
238
+ {
239
+ matcher: "ultrawork|ulwk",
240
+ hooks: [{
241
+ type: "command",
242
+ command: "echo '[ARCANEA_MODE=ultrawork] Maximum parallel execution. Spawn all relevant agents simultaneously using Task tool with run_in_background=true.'"
243
+ }]
199
244
  }
200
245
  ]
201
246
  }
@@ -204,12 +249,18 @@ async function installClaudeCodeSettings(platformPath, force) {
204
249
  console.log(import_picocolors.default.green(" ✓ Created Claude Code settings with magic word hooks"));
205
250
  }
206
251
  }
207
- async function installOpenCodeSettings(platformPath, packageRoot, force) {
208
- const claudeMdPath = join(platformPath, "CLAUDE.md");
209
- const sourcePath = join(packageRoot, "CLAUDE.md");
210
- if (existsSync(sourcePath) && (!existsSync(claudeMdPath) || force)) {
211
- cpSync(sourcePath, claudeMdPath);
212
- console.log(import_picocolors.default.green(" ✓ Installed OpenCode CLAUDE.md"));
252
+ async function installCursorRules(targetDir, packageRoot, force) {
253
+ const rulesPath = join(targetDir, ".cursorrules");
254
+ if (!existsSync(rulesPath) || force) {
255
+ const claudeMdSource = join(packageRoot, "CLAUDE.md");
256
+ if (existsSync(claudeMdSource)) {
257
+ const claudeContent = readFileSync(claudeMdSource, "utf-8");
258
+ const cursorRules = `# Cursor Rules — Generated by Arcanea v${VERSION}
259
+
260
+ ${claudeContent}`;
261
+ writeFileSync(rulesPath, cursorRules);
262
+ console.log(import_picocolors.default.green(" ✓ Created .cursorrules with Arcanea identity"));
263
+ }
213
264
  }
214
265
  }
215
266
  async function installMcpConfig(targetDir, force) {
@@ -228,6 +279,11 @@ Configuring MCP integrations...`));
228
279
  ...existingConfig,
229
280
  mcpServers: {
230
281
  ...existingConfig.mcpServers || {},
282
+ arcanea: {
283
+ command: "npx",
284
+ args: ["-y", "@arcanea/mcp-server@latest"],
285
+ description: "Arcanea creative toolkit - world-building, characters, lore, bestiary"
286
+ },
231
287
  "nano-banana": {
232
288
  command: "npx",
233
289
  args: ["-y", "@anthropic-ai/nano-banana"],
@@ -241,6 +297,7 @@ Configuring MCP integrations...`));
241
297
  }
242
298
  };
243
299
  writeFileSync(mcpPath, JSON.stringify(mcpConfig, null, 2));
300
+ console.log(import_picocolors.default.green("✓ Configured Arcanea MCP (creative toolkit)"));
244
301
  console.log(import_picocolors.default.green("✓ Configured Nano Banana MCP (image generation)"));
245
302
  console.log(import_picocolors.default.green("✓ Configured Context7 MCP (documentation)"));
246
303
  console.log(import_picocolors.default.dim("ℹ Suno MCP requires manual API key setup"));
@@ -274,6 +331,8 @@ function printSuccessMessage(platforms) {
274
331
  console.log(import_picocolors.default.cyan(" ultraworld") + " - Full parallel world generation");
275
332
  console.log(import_picocolors.default.cyan(" ultrawrite") + " - Full parallel chapter writing");
276
333
  console.log(import_picocolors.default.cyan(" ultrabook ") + " - Complete book pipeline");
334
+ console.log(import_picocolors.default.yellow(" ultracode ") + " - Full parallel coding (architect + coder + reviewer)");
335
+ console.log(import_picocolors.default.yellow(" ultrawork ") + " - Maximum parallel execution for any task");
277
336
  console.log();
278
337
  console.log(import_picocolors.default.bold("Try:"));
279
338
  console.log(import_picocolors.default.dim(" /luminor Valora courage"));
@@ -283,7 +342,7 @@ function printSuccessMessage(platforms) {
283
342
  }
284
343
 
285
344
  // src/index.ts
286
- var VERSION = "3.0.2";
345
+ var VERSION = "3.2.0";
287
346
  var NAME = "arcanea";
288
347
  var ORCHESTRATOR = "Arcanea";
289
348
  var defaultConfig = {
@@ -1 +1 @@
1
- {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"AAIA,OAAO,EAAwC,QAAQ,EAAE,MAAM,YAAY,CAAC;AAI5E,UAAU,cAAc;IACtB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,QAAQ,EAAE,CAoC5C;AAsBD,wBAAsB,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8B5F"}
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"AAIA,OAAO,EAAwC,QAAQ,EAAE,MAAM,YAAY,CAAC;AAwB5E,UAAU,cAAc;IACtB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,QAAQ,EAAE,CAoC5C;AAsBD,wBAAsB,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8B5F"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "arcanea",
3
- "version": "3.0.2",
3
+ "version": "3.2.0",
4
4
  "description": "Arcanea - The Creative Intelligence Platform. Skills, agents, and tools for AI-human co-creation.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",