arcanea 3.1.0 → 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
@@ -2312,7 +2312,9 @@ async function installForPlatform(targetDir, packageRoot, platform, force) {
2312
2312
  }
2313
2313
  if (platform === "claude-code") {
2314
2314
  await installClaudeCodeSettings(platformPath, force);
2315
- } else if (platform === "opencode") {}
2315
+ } else if (platform === "cursor") {
2316
+ await installCursorRules(targetDir, packageRoot, force);
2317
+ }
2316
2318
  }
2317
2319
  async function installClaudeCodeSettings(platformPath, force) {
2318
2320
  const settingsPath = join(platformPath, "settings.json");
@@ -2322,15 +2324,38 @@ async function installClaudeCodeSettings(platformPath, force) {
2322
2324
  UserPromptSubmit: [
2323
2325
  {
2324
2326
  matcher: "ultraworld|ulw",
2325
- 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
+ }]
2326
2331
  },
2327
2332
  {
2328
2333
  matcher: "ultrawrite|ulwr",
2329
- 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
+ }]
2330
2345
  },
2331
2346
  {
2332
2347
  matcher: "ultrabook|ulb",
2333
- 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
+ }]
2334
2359
  }
2335
2360
  ]
2336
2361
  }
@@ -2339,6 +2364,20 @@ async function installClaudeCodeSettings(platformPath, force) {
2339
2364
  console.log(import_picocolors.default.green(" ✓ Created Claude Code settings with magic word hooks"));
2340
2365
  }
2341
2366
  }
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
+ }
2379
+ }
2380
+ }
2342
2381
  async function installMcpConfig(targetDir, force) {
2343
2382
  const mcpPath = join(targetDir, ".mcp.json");
2344
2383
  console.log(import_picocolors.default.blue(`
@@ -2355,6 +2394,11 @@ Configuring MCP integrations...`));
2355
2394
  ...existingConfig,
2356
2395
  mcpServers: {
2357
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
+ },
2358
2402
  "nano-banana": {
2359
2403
  command: "npx",
2360
2404
  args: ["-y", "@anthropic-ai/nano-banana"],
@@ -2368,6 +2412,7 @@ Configuring MCP integrations...`));
2368
2412
  }
2369
2413
  };
2370
2414
  writeFileSync(mcpPath, JSON.stringify(mcpConfig, null, 2));
2415
+ console.log(import_picocolors.default.green("✓ Configured Arcanea MCP (creative toolkit)"));
2371
2416
  console.log(import_picocolors.default.green("✓ Configured Nano Banana MCP (image generation)"));
2372
2417
  console.log(import_picocolors.default.green("✓ Configured Context7 MCP (documentation)"));
2373
2418
  console.log(import_picocolors.default.dim("ℹ Suno MCP requires manual API key setup"));
@@ -2401,6 +2446,8 @@ function printSuccessMessage(platforms) {
2401
2446
  console.log(import_picocolors.default.cyan(" ultraworld") + " - Full parallel world generation");
2402
2447
  console.log(import_picocolors.default.cyan(" ultrawrite") + " - Full parallel chapter writing");
2403
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");
2404
2451
  console.log();
2405
2452
  console.log(import_picocolors.default.bold("Try:"));
2406
2453
  console.log(import_picocolors.default.dim(" /luminor Valora courage"));
@@ -2410,7 +2457,7 @@ function printSuccessMessage(platforms) {
2410
2457
  }
2411
2458
 
2412
2459
  // src/index.ts
2413
- var VERSION = "3.1.0";
2460
+ var VERSION = "3.2.0";
2414
2461
  var NAME = "arcanea";
2415
2462
  var ORCHESTRATOR = "Arcanea";
2416
2463
  var defaultConfig = {
@@ -2537,7 +2584,7 @@ var AGENT_TEAMS = {
2537
2584
  };
2538
2585
 
2539
2586
  // src/cli/index.ts
2540
- import { existsSync as existsSync2 } from "fs";
2587
+ import { existsSync as existsSync2, readdirSync, readFileSync as readFileSync2 } from "fs";
2541
2588
  import { join as join2 } from "path";
2542
2589
  var program2 = new Command;
2543
2590
  program2.name(NAME).description(`${ORCHESTRATOR} - The Creative Intelligence Platform`).version(VERSION);
@@ -2628,19 +2675,20 @@ program2.command("magic").description("Show magic words and their effects").acti
2628
2675
  console.log(import_picocolors2.default.cyan(`
2629
2676
  Magic Words
2630
2677
  `));
2631
- console.log(import_picocolors2.default.bold(import_picocolors2.default.cyan("ultraworld")) + " (or " + import_picocolors2.default.bold("ulw") + ")");
2632
- console.log(" Fires ALL world-building agents in parallel");
2633
- 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");
2634
2682
  console.log();
2635
- console.log(import_picocolors2.default.bold(import_picocolors2.default.green("ultrawrite")) + " (or " + import_picocolors2.default.bold("ulwr") + ")");
2636
- console.log(" Fires ALL writing/editing agents in parallel");
2637
- 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");
2638
2686
  console.log();
2639
- console.log(import_picocolors2.default.bold(import_picocolors2.default.magenta("ultrabook")) + " (or " + import_picocolors2.default.bold("ulb") + ")");
2640
- console.log(" Complete book pipeline - everything at once");
2641
- 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");
2642
2690
  console.log();
2643
- 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!"));
2644
2692
  console.log();
2645
2693
  });
2646
2694
  program2.command("status").description("Check Arcanea installation status").action(() => {
@@ -2684,4 +2732,91 @@ ${ORCHESTRATOR} Status
2684
2732
  }
2685
2733
  console.log();
2686
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
+ });
2687
2822
  program2.parse();
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export declare const VERSION = "3.1.0";
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
@@ -197,7 +197,9 @@ async function installForPlatform(targetDir, packageRoot, platform, force) {
197
197
  }
198
198
  if (platform === "claude-code") {
199
199
  await installClaudeCodeSettings(platformPath, force);
200
- } else if (platform === "opencode") {}
200
+ } else if (platform === "cursor") {
201
+ await installCursorRules(targetDir, packageRoot, force);
202
+ }
201
203
  }
202
204
  async function installClaudeCodeSettings(platformPath, force) {
203
205
  const settingsPath = join(platformPath, "settings.json");
@@ -207,15 +209,38 @@ async function installClaudeCodeSettings(platformPath, force) {
207
209
  UserPromptSubmit: [
208
210
  {
209
211
  matcher: "ultraworld|ulw",
210
- 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
+ }]
211
216
  },
212
217
  {
213
218
  matcher: "ultrawrite|ulwr",
214
- 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
+ }]
215
230
  },
216
231
  {
217
232
  matcher: "ultrabook|ulb",
218
- 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
+ }]
219
244
  }
220
245
  ]
221
246
  }
@@ -224,6 +249,20 @@ async function installClaudeCodeSettings(platformPath, force) {
224
249
  console.log(import_picocolors.default.green(" ✓ Created Claude Code settings with magic word hooks"));
225
250
  }
226
251
  }
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
+ }
264
+ }
265
+ }
227
266
  async function installMcpConfig(targetDir, force) {
228
267
  const mcpPath = join(targetDir, ".mcp.json");
229
268
  console.log(import_picocolors.default.blue(`
@@ -240,6 +279,11 @@ Configuring MCP integrations...`));
240
279
  ...existingConfig,
241
280
  mcpServers: {
242
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
+ },
243
287
  "nano-banana": {
244
288
  command: "npx",
245
289
  args: ["-y", "@anthropic-ai/nano-banana"],
@@ -253,6 +297,7 @@ Configuring MCP integrations...`));
253
297
  }
254
298
  };
255
299
  writeFileSync(mcpPath, JSON.stringify(mcpConfig, null, 2));
300
+ console.log(import_picocolors.default.green("✓ Configured Arcanea MCP (creative toolkit)"));
256
301
  console.log(import_picocolors.default.green("✓ Configured Nano Banana MCP (image generation)"));
257
302
  console.log(import_picocolors.default.green("✓ Configured Context7 MCP (documentation)"));
258
303
  console.log(import_picocolors.default.dim("ℹ Suno MCP requires manual API key setup"));
@@ -286,6 +331,8 @@ function printSuccessMessage(platforms) {
286
331
  console.log(import_picocolors.default.cyan(" ultraworld") + " - Full parallel world generation");
287
332
  console.log(import_picocolors.default.cyan(" ultrawrite") + " - Full parallel chapter writing");
288
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");
289
336
  console.log();
290
337
  console.log(import_picocolors.default.bold("Try:"));
291
338
  console.log(import_picocolors.default.dim(" /luminor Valora courage"));
@@ -295,7 +342,7 @@ function printSuccessMessage(platforms) {
295
342
  }
296
343
 
297
344
  // src/index.ts
298
- var VERSION = "3.1.0";
345
+ var VERSION = "3.2.0";
299
346
  var NAME = "arcanea";
300
347
  var ORCHESTRATOR = "Arcanea";
301
348
  var defaultConfig = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "arcanea",
3
- "version": "3.1.0",
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",