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 +172 -25
- package/dist/index.d.ts +1 -1
- package/dist/index.js +73 -14
- package/dist/install.d.ts.map +1 -1
- package/package.json +1 -1
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
|
-
|
|
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 =
|
|
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 === "
|
|
2294
|
-
await
|
|
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: [{
|
|
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: [{
|
|
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: [{
|
|
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
|
|
2323
|
-
const
|
|
2324
|
-
|
|
2325
|
-
|
|
2326
|
-
|
|
2327
|
-
|
|
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
|
|
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(
|
|
2620
|
-
console.log("
|
|
2621
|
-
console.log("
|
|
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(
|
|
2624
|
-
console.log("
|
|
2625
|
-
console.log("
|
|
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(
|
|
2628
|
-
console.log("
|
|
2629
|
-
console.log("
|
|
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("
|
|
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
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
|
-
|
|
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 =
|
|
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 === "
|
|
179
|
-
await
|
|
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: [{
|
|
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: [{
|
|
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: [{
|
|
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
|
|
208
|
-
const
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
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
|
|
345
|
+
var VERSION = "3.2.0";
|
|
287
346
|
var NAME = "arcanea";
|
|
288
347
|
var ORCHESTRATOR = "Arcanea";
|
|
289
348
|
var defaultConfig = {
|
package/dist/install.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"AAIA,OAAO,EAAwC,QAAQ,EAAE,MAAM,YAAY,CAAC;
|
|
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"}
|