@hivehub/rulebook 4.3.0 โ 4.3.1
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/.claude-plugin/plugin.json +1 -1
- package/README.md +7 -0
- package/dist/cli/commands.d.ts.map +1 -1
- package/dist/cli/commands.js +39 -14
- package/dist/cli/commands.js.map +1 -1
- package/dist/core/claude-mcp.d.ts +2 -1
- package/dist/core/claude-mcp.d.ts.map +1 -1
- package/dist/core/claude-mcp.js +16 -8
- package/dist/core/claude-mcp.js.map +1 -1
- package/dist/core/config-manager.d.ts.map +1 -1
- package/dist/core/config-manager.js +1 -2
- package/dist/core/config-manager.js.map +1 -1
- package/dist/core/indexer/background-indexer.d.ts.map +1 -1
- package/dist/core/indexer/background-indexer.js +10 -3
- package/dist/core/indexer/background-indexer.js.map +1 -1
- package/dist/mcp/rulebook-server.d.ts.map +1 -1
- package/dist/mcp/rulebook-server.js +18 -6
- package/dist/mcp/rulebook-server.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rulebook",
|
|
3
3
|
"description": "Standardize AI-generated projects with Ralph autonomous loop, persistent memory, and quality gates. Supports 28 languages, 17 frameworks, 13 MCP modules, and 20 services.",
|
|
4
|
-
"version": "4.3.
|
|
4
|
+
"version": "4.3.1",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "HiveLLM"
|
|
7
7
|
}
|
package/README.md
CHANGED
|
@@ -52,6 +52,13 @@ npx @hivehub/rulebook@latest update
|
|
|
52
52
|
|
|
53
53
|
See the full [CHANGELOG](CHANGELOG.md) for details.
|
|
54
54
|
|
|
55
|
+
### v4.3.1 โ MCP Stability & Multi-Root Workspace Support
|
|
56
|
+
|
|
57
|
+
- ๐ง **MCP server loop fix**: Resolved `BackgroundIndexer` stdout pollution causing infinite restarts
|
|
58
|
+
- ๐๏ธ **Auto-detect workspace mode**: MCP server now auto-switches to workspace mode when `.code-workspace` or monorepo configs are found โ no `--workspace` flag needed
|
|
59
|
+
- ๐งน **Nested `.rulebook` fix**: Eliminated accidental `.rulebook/.rulebook` directory creation
|
|
60
|
+
- ๐ **Plugin deduplication**: Claude Code plugin entries consolidated to single entry on `update`
|
|
61
|
+
|
|
55
62
|
### v4.3.0 โ Agent Delegation & Cost Optimization
|
|
56
63
|
|
|
57
64
|
- ๐ค **18 Specialist Agents**: Cost-appropriate model assignments (opus for architecture, sonnet for code, haiku for read-only) with full Claude Code fields (`tools`, `maxTurns`, `disallowedTools`)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/cli/commands.ts"],"names":[],"mappings":"AAgEA,wBAAsB,WAAW,CAAC,OAAO,EAAE;IACzC,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/cli/commands.ts"],"names":[],"mappings":"AAgEA,wBAAsB,WAAW,CAAC,OAAO,EAAE;IACzC,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC,GAAG,OAAO,CAAC,IAAI,CAAC,CAkehB;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CA8DrD;AAED,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAyCtD;AAED,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CA6DtD;AAED,wBAAsB,oBAAoB,CAAC,OAAO,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAuDzF;AAED,wBAAsB,mBAAmB,CAAC,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA8CnF;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE;IAC5C,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;CACnC,GAAG,OAAO,CAAC,IAAI,CAAC,CAoChB;AAED,wBAAsB,gBAAgB,CAAC,OAAO,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA6CnF;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAoDnD;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CA0DhD;AAED,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAcpD;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE;IAC1C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBhB;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE;IAC3C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmDhB;AAID,UAAU,oBAAoB;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AA+DD,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,oBAAoB,GAC/B,OAAO,CAAC,IAAI,CAAC,CAiBf;AAED,wBAAsB,eAAe,CACnC,eAAe,GAAE,OAAe,EAChC,SAAS,CAAC,EAAE,oBAAoB,GAC/B,OAAO,CAAC,IAAI,CAAC,CA8Gf;AAED,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,oBAAoB,GAC/B,OAAO,CAAC,IAAI,CAAC,CAyCf;AAED,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,oBAAoB,GAC/B,OAAO,CAAC,IAAI,CAAC,CAgCf;AAED,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,MAAM,EACd,cAAc,GAAE,OAAe,EAC/B,SAAS,CAAC,EAAE,oBAAoB,GAC/B,OAAO,CAAC,IAAI,CAAC,CAYf;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAAC,OAAO,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAqHrF;AAED,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAoBtD;AAGD,wBAAsB,YAAY,CAAC,OAAO,EAAE;IAC1C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBhB;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE;IAC3C,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GAAG,OAAO,CAAC,IAAI,CAAC,CAkFhB;AAqeD;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoEhB;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAqEpE;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsCvE;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAuFrE;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA0CrE;AAMD,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GACxD,OAAO,CAAC,IAAI,CAAC,CA+Cf;AAED,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GACxD,OAAO,CAAC,IAAI,CAAC,CAkCf;AAED,wBAAsB,iBAAiB,CAAC,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA6CjG;AAED,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CA6CxD;AAED,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CA2DzD;AAED,wBAAsB,oBAAoB,CAAC,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAiCtF;AAED,wBAAsB,mBAAmB,CAAC,OAAO,EAAE;IACjD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsChB;AAID,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CA2CtD;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE;IAC7C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,QAAQ,CAAC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuWhB;AAuQD,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CA6CxD;AAED,wBAAsB,mBAAmB,CAAC,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsDpF;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CA6BvD;AAED,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CA6BxD;AAED,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAmF3D;AAqDD;;GAEG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAsBzD;AAED;;GAEG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAczD;AAED;;GAEG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAK1D;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBzE;AAED;;GAEG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAgCtD;AAED;;GAEG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAWtD;AAED;;GAEG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAMvD;AAID;;;;;;;;;;GAUG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAoIrD;AAED,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC,CA2D5D;AAID;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE;IAC3C,MAAM,CAAC,EAAE,UAAU,GAAG,gBAAgB,GAAG,MAAM,CAAC;IAChD,MAAM,CAAC,EAAE,UAAU,GAAG,OAAO,GAAG,OAAO,CAAC;IACxC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,OAAO,CAAC,IAAI,CAAC,CAmEhB;AAID,wBAAsB,wBAAwB,CAAC,OAAO,EAAE;IACtD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsFhB;AAWD,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAoD1D;AAED,wBAAsB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmC5E;AAED,wBAAsB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAwB/E;AAED,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAyB1D;AAED,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC,CAmC5D"}
|
package/dist/cli/commands.js
CHANGED
|
@@ -417,6 +417,25 @@ export async function initCommand(options) {
|
|
|
417
417
|
console.log(chalk.gray(` - ${path.relative(cwd, artifact)}`));
|
|
418
418
|
}
|
|
419
419
|
}
|
|
420
|
+
// Clean up any accidental nested .rulebook/.rulebook directory
|
|
421
|
+
try {
|
|
422
|
+
const fsPromises = await import('fs/promises');
|
|
423
|
+
const accidentalDir = path.join(cwd, '.rulebook', '.rulebook');
|
|
424
|
+
if (existsSync(accidentalDir)) {
|
|
425
|
+
await fsPromises.rm(accidentalDir, { recursive: true, force: true });
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
catch {
|
|
429
|
+
// Ignore cleanup errors
|
|
430
|
+
}
|
|
431
|
+
// Detect if this looks like a workspace root and hint the user
|
|
432
|
+
const wsConfig = WorkspaceManager.findWorkspaceConfig(cwd);
|
|
433
|
+
if (wsConfig && wsConfig.projects.length > 1) {
|
|
434
|
+
console.log(chalk.yellow(`\nโ Workspace detected: "${wsConfig.name}" with ${wsConfig.projects.length} projects.`));
|
|
435
|
+
console.log(chalk.yellow(' The MCP server will auto-detect workspace mode. For explicit setup, run:'));
|
|
436
|
+
console.log(chalk.yellow(' rulebook workspace init'));
|
|
437
|
+
console.log(chalk.yellow(' Then run `rulebook init` inside each sub-project individually for best results.\n'));
|
|
438
|
+
}
|
|
420
439
|
console.log(chalk.bold.green('\nโจ Rulebook initialization complete!\n'));
|
|
421
440
|
console.log(chalk.gray('Next steps:'));
|
|
422
441
|
console.log(chalk.gray(' 1. Review AGENTS.md'));
|
|
@@ -2981,7 +3000,6 @@ export async function setupClaudeCodePlugin() {
|
|
|
2981
3000
|
// Get Claude Code plugins directory
|
|
2982
3001
|
const homeDir = os.homedir();
|
|
2983
3002
|
const pluginsDir = path.join(homeDir, '.claude', 'plugins');
|
|
2984
|
-
const installCountsPath = path.join(pluginsDir, 'install-counts-cache.json');
|
|
2985
3003
|
const installedPluginsPath = path.join(pluginsDir, 'installed_plugins.json');
|
|
2986
3004
|
// Create plugins directory if it doesn't exist
|
|
2987
3005
|
await fs.mkdir(pluginsDir, { recursive: true });
|
|
@@ -2994,17 +3012,32 @@ export async function setupClaudeCodePlugin() {
|
|
|
2994
3012
|
const content = await readFile(installedPluginsPath);
|
|
2995
3013
|
installedPlugins = JSON.parse(content);
|
|
2996
3014
|
}
|
|
2997
|
-
// Add rulebook plugin
|
|
3015
|
+
// Add rulebook plugin โ keep exactly ONE entry per plugin key
|
|
2998
3016
|
const pluginKey = `rulebook@hivehub`;
|
|
2999
3017
|
const version = pluginJson.version || '3.2.1';
|
|
3000
3018
|
const installPath = path.join(pluginsDir, 'cache', 'hivehub', 'rulebook', version);
|
|
3001
3019
|
if (!installedPlugins.plugins[pluginKey]) {
|
|
3002
3020
|
installedPlugins.plugins[pluginKey] = [];
|
|
3003
3021
|
}
|
|
3004
|
-
|
|
3005
|
-
|
|
3006
|
-
if (
|
|
3007
|
-
|
|
3022
|
+
const entries = installedPlugins.plugins[pluginKey];
|
|
3023
|
+
// Deduplicate: keep only the single latest entry, update it in-place
|
|
3024
|
+
if (entries.length > 0) {
|
|
3025
|
+
// Preserve original installedAt from the first entry
|
|
3026
|
+
const originalInstalledAt = entries[0].installedAt;
|
|
3027
|
+
// Replace all entries with a single updated one
|
|
3028
|
+
installedPlugins.plugins[pluginKey] = [
|
|
3029
|
+
{
|
|
3030
|
+
scope: 'user',
|
|
3031
|
+
installPath: installPath,
|
|
3032
|
+
version: version,
|
|
3033
|
+
installedAt: originalInstalledAt || new Date().toISOString(),
|
|
3034
|
+
lastUpdated: new Date().toISOString(),
|
|
3035
|
+
},
|
|
3036
|
+
];
|
|
3037
|
+
}
|
|
3038
|
+
else {
|
|
3039
|
+
// First install
|
|
3040
|
+
entries.push({
|
|
3008
3041
|
scope: 'user',
|
|
3009
3042
|
installPath: installPath,
|
|
3010
3043
|
version: version,
|
|
@@ -3014,14 +3047,6 @@ export async function setupClaudeCodePlugin() {
|
|
|
3014
3047
|
}
|
|
3015
3048
|
// Save installed_plugins.json
|
|
3016
3049
|
await fs.writeFile(installedPluginsPath, JSON.stringify(installedPlugins, null, 2));
|
|
3017
|
-
// Update install-counts-cache.json
|
|
3018
|
-
let installCounts = {};
|
|
3019
|
-
if (existsSync(installCountsPath)) {
|
|
3020
|
-
const content = await readFile(installCountsPath);
|
|
3021
|
-
installCounts = JSON.parse(content);
|
|
3022
|
-
}
|
|
3023
|
-
installCounts[pluginKey] = (installCounts[pluginKey] || 0) + 1;
|
|
3024
|
-
await fs.writeFile(installCountsPath, JSON.stringify(installCounts, null, 2));
|
|
3025
3050
|
spinner.succeed('Claude Code plugin installed');
|
|
3026
3051
|
console.log(`\n ${chalk.green('โ')} Plugin: ${pluginKey} v${version}`);
|
|
3027
3052
|
console.log(` ${chalk.gray('Installed to:')} ${installPath}`);
|