robrain 2.3.2 → 2.3.3
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/commands/init-project.d.ts +2 -0
- package/dist/commands/init-project.d.ts.map +1 -1
- package/dist/commands/init-project.js +16 -0
- package/dist/commands/init-project.js.map +1 -1
- package/dist/commands/install.js +2 -2
- package/dist/commands/up.test.js +2 -2
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/lib/claude-plugin.d.ts +17 -0
- package/dist/lib/claude-plugin.d.ts.map +1 -0
- package/dist/lib/claude-plugin.js +83 -0
- package/dist/lib/claude-plugin.js.map +1 -0
- package/dist/lib/claude-plugin.test.d.ts +2 -0
- package/dist/lib/claude-plugin.test.d.ts.map +1 -0
- package/dist/lib/claude-plugin.test.js +48 -0
- package/dist/lib/claude-plugin.test.js.map +1 -0
- package/dist/lib/mcp-bundle.test.js +2 -2
- package/package.json +10 -11
- package/vendor/sensing-mcp/dist/index.js +0 -0
- package/vendor/sensing-mcp/package.json +1 -1
|
@@ -2,6 +2,8 @@ interface InitProjectOptions {
|
|
|
2
2
|
projectId?: string;
|
|
3
3
|
/** When true, skip the confirm prompt (e.g. chained from `robrain install`). */
|
|
4
4
|
nonInteractive?: boolean;
|
|
5
|
+
/** Do not recommend the Claude Code plugin in .claude/settings.json. */
|
|
6
|
+
skipClaudePlugin?: boolean;
|
|
5
7
|
}
|
|
6
8
|
export declare function initProjectCommand(opts: InitProjectOptions): Promise<void>;
|
|
7
9
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init-project.d.ts","sourceRoot":"","sources":["../../src/commands/init-project.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init-project.d.ts","sourceRoot":"","sources":["../../src/commands/init-project.ts"],"names":[],"mappings":"AAyBA,UAAU,kBAAkB;IAC1B,SAAS,CAAC,EAAS,MAAM,CAAA;IACzB,gFAAgF;IAChF,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,wEAAwE;IACxE,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAkJhF"}
|
|
@@ -17,6 +17,7 @@ import { cwd } from 'process';
|
|
|
17
17
|
import { existsSync, readFileSync } from 'fs';
|
|
18
18
|
import { dirname, join } from 'path';
|
|
19
19
|
import { readConfig, isAuthenticated } from '../lib/config.js';
|
|
20
|
+
import { recommendClaudePlugin } from '../lib/claude-plugin.js';
|
|
20
21
|
import { gatherProjectInfo, seedProjectMemory } from '../lib/project.js';
|
|
21
22
|
import { detectEditors, writeClaudeMd, writeCursorRoBrainRule, writeAgentsMd } from '../lib/editor.js';
|
|
22
23
|
export async function initProjectCommand(opts) {
|
|
@@ -91,6 +92,21 @@ export async function initProjectCommand(opts) {
|
|
|
91
92
|
cursorRuleApplied = writeCursorRoBrainRule(projectRoot, resolvedProjectId, instructionMode);
|
|
92
93
|
}
|
|
93
94
|
mdSpinner.succeed(`Editor instructions updated (${instructionExtras})`);
|
|
95
|
+
// ── Recommend the Claude Code plugin to the team ───────────
|
|
96
|
+
// Written to .claude/settings.json: teammates who trust this repo get an
|
|
97
|
+
// install prompt from Claude Code itself. Same footprint as CLAUDE.md —
|
|
98
|
+
// a repo-committed recommendation, not an install; each teammate still
|
|
99
|
+
// approves the install in their own editor.
|
|
100
|
+
let pluginRecommendation = 'skipped';
|
|
101
|
+
if (!opts.skipClaudePlugin) {
|
|
102
|
+
pluginRecommendation = recommendClaudePlugin(projectRoot);
|
|
103
|
+
if (pluginRecommendation === 'written') {
|
|
104
|
+
console.log(chalk.dim(' .claude/settings.json: recommends the RoBrain plugin to collaborators (skip with --skip-claude-plugin)'));
|
|
105
|
+
}
|
|
106
|
+
else if (pluginRecommendation === 'skipped-unreadable') {
|
|
107
|
+
console.log(chalk.yellow(' ⚠ .claude/settings.json is not valid JSON — left untouched. Add the RoBrain plugin recommendation manually if wanted.'));
|
|
108
|
+
}
|
|
109
|
+
}
|
|
94
110
|
// ── Seed memory ────────────────────────────────────────────
|
|
95
111
|
const seedSpinner = ora({ text: 'Inferring architectural decisions from codebase...', color: 'green' }).start();
|
|
96
112
|
const perceptionKey = config.perceptionKey ?? '';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init-project.js","sourceRoot":"","sources":["../../src/commands/init-project.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,gEAAgE;AAChE,yCAAyC;AACzC,EAAE;AACF,+DAA+D;AAC/D,6DAA6D;AAC7D,kFAAkF;AAClF,wCAAwC;AACxC,iDAAiD;AACjD,EAAE;AACF,6CAA6C;AAC7C,gEAAgE;AAEhE,OAAO,KAAK,MAAQ,OAAO,CAAA;AAC3B,OAAO,GAAG,MAAU,KAAK,CAAA;AACzB,OAAO,OAAO,MAAM,SAAS,CAAA;AAC7B,OAAO,EAAE,GAAG,EAAE,MAAM,SAAS,CAAA;AAC7B,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,IAAI,CAAA;AAC7C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AACpC,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAC9D,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACxE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"init-project.js","sourceRoot":"","sources":["../../src/commands/init-project.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/install.js
CHANGED
|
@@ -202,7 +202,7 @@ export async function installCommand(opts) {
|
|
|
202
202
|
planningKey: provisioned.planningKey,
|
|
203
203
|
embeddingProvider: embeddingProvider ?? 'openai',
|
|
204
204
|
installedAt: new Date().toISOString(),
|
|
205
|
-
version: '2.3.
|
|
205
|
+
version: '2.3.3',
|
|
206
206
|
});
|
|
207
207
|
spinner.succeed('MCP servers configured');
|
|
208
208
|
// ── Done ───────────────────────────────────────────────────
|
|
@@ -352,7 +352,7 @@ async function installSelfHosted(opts) {
|
|
|
352
352
|
...(perceptionKey ? { perceptionKey } : {}),
|
|
353
353
|
embeddingProvider: provider,
|
|
354
354
|
installedAt: new Date().toISOString(),
|
|
355
|
-
version: '2.3.
|
|
355
|
+
version: '2.3.3',
|
|
356
356
|
selfHosted: true,
|
|
357
357
|
});
|
|
358
358
|
spinner.succeed('MCP servers configured for self-hosted mode');
|
package/dist/commands/up.test.js
CHANGED
|
@@ -2,9 +2,9 @@ import { describe, it } from 'node:test';
|
|
|
2
2
|
import assert from 'node:assert/strict';
|
|
3
3
|
import { ensureStackEnvContent, readEnvValue, renderStackCompose, DEFAULT_IMAGE_REPO } from './up.js';
|
|
4
4
|
describe('renderStackCompose', () => {
|
|
5
|
-
const compose = renderStackCompose(`${DEFAULT_IMAGE_REPO}:2.3.
|
|
5
|
+
const compose = renderStackCompose(`${DEFAULT_IMAGE_REPO}:2.3.3`);
|
|
6
6
|
it('runs Perception from the published image with an env override hook', () => {
|
|
7
|
-
assert.match(compose, /image: \$\{PERCEPTION_IMAGE:-ghcr\.io\/adelinamart\/robrain-perception:2\.3\.
|
|
7
|
+
assert.match(compose, /image: \$\{PERCEPTION_IMAGE:-ghcr\.io\/adelinamart\/robrain-perception:2\.3\.3\}/);
|
|
8
8
|
assert.doesNotMatch(compose, /build:/);
|
|
9
9
|
});
|
|
10
10
|
it('mounts the stack-local schema and env file', () => {
|
package/dist/index.js
CHANGED
|
@@ -27,7 +27,7 @@ import { outcomesScanCommand, outcomesRecordCommand } from './commands/outcomes.
|
|
|
27
27
|
import { explainCommand } from './commands/explain.js';
|
|
28
28
|
import { projectsListCommand, projectsMergeCommand } from './commands/projects.js';
|
|
29
29
|
import { upCommand, downCommand, DEFAULT_IMAGE_REPO } from './commands/up.js';
|
|
30
|
-
const VERSION = '2.3.
|
|
30
|
+
const VERSION = '2.3.3';
|
|
31
31
|
program
|
|
32
32
|
.name('robrain')
|
|
33
33
|
.description('Institutional memory for AI coding agents — by Rory Plans')
|
|
@@ -169,8 +169,9 @@ program
|
|
|
169
169
|
.alias('init')
|
|
170
170
|
.description('Warm-start project memory from your codebase (run once per project)')
|
|
171
171
|
.option('--project-id <id>', 'Override the auto-derived project ID')
|
|
172
|
+
.option('--skip-claude-plugin', 'Do not recommend the RoBrain Claude Code plugin in .claude/settings.json')
|
|
172
173
|
.action(async (opts) => {
|
|
173
|
-
await initProjectCommand({ projectId: opts.projectId });
|
|
174
|
+
await initProjectCommand({ projectId: opts.projectId, skipClaudePlugin: opts.skipClaudePlugin });
|
|
174
175
|
});
|
|
175
176
|
// ── projects — list / merge Perception project ids ────────────
|
|
176
177
|
const projectsCmd = program
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface PluginRecommendationResult {
|
|
2
|
+
content: string;
|
|
3
|
+
changed: boolean;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Merge the RoBrain marketplace + plugin recommendation into existing
|
|
7
|
+
* .claude/settings.json content. Preserves every other key; idempotent.
|
|
8
|
+
* A user's own marketplace entry under the same name (e.g. a local-path
|
|
9
|
+
* source from development) is left untouched.
|
|
10
|
+
*/
|
|
11
|
+
export declare function mergePluginRecommendation(existing: string | null): PluginRecommendationResult;
|
|
12
|
+
/**
|
|
13
|
+
* Apply the recommendation to <projectRoot>/.claude/settings.json.
|
|
14
|
+
* Returns 'written' | 'already-present' | 'skipped-unreadable'.
|
|
15
|
+
*/
|
|
16
|
+
export declare function recommendClaudePlugin(projectRoot: string): 'written' | 'already-present' | 'skipped-unreadable';
|
|
17
|
+
//# sourceMappingURL=claude-plugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-plugin.d.ts","sourceRoot":"","sources":["../../src/lib/claude-plugin.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,OAAO,CAAA;CACjB;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,0BAA0B,CAqC7F;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,iBAAiB,GAAG,oBAAoB,CAY/G"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
// src/lib/claude-plugin.ts
|
|
2
|
+
// ─────────────────────────────────────────────────────────────
|
|
3
|
+
// Recommend the RoBrain Claude Code plugin to the whole team via the
|
|
4
|
+
// project's .claude/settings.json. When a teammate trusts the repo,
|
|
5
|
+
// Claude Code itself prompts them to install the plugin — one developer
|
|
6
|
+
// running init-project makes the plugin discoverable to everyone else.
|
|
7
|
+
// ─────────────────────────────────────────────────────────────
|
|
8
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'fs';
|
|
9
|
+
import { dirname, join } from 'path';
|
|
10
|
+
const MARKETPLACE_KEY = 'robrain';
|
|
11
|
+
const PLUGIN_ID = 'robrain@robrain';
|
|
12
|
+
const GITHUB_SOURCE = { source: 'github', repo: 'adelinamart/robrain' };
|
|
13
|
+
/**
|
|
14
|
+
* Merge the RoBrain marketplace + plugin recommendation into existing
|
|
15
|
+
* .claude/settings.json content. Preserves every other key; idempotent.
|
|
16
|
+
* A user's own marketplace entry under the same name (e.g. a local-path
|
|
17
|
+
* source from development) is left untouched.
|
|
18
|
+
*/
|
|
19
|
+
export function mergePluginRecommendation(existing) {
|
|
20
|
+
let settings = {};
|
|
21
|
+
if (existing !== null && existing.trim()) {
|
|
22
|
+
try {
|
|
23
|
+
const parsed = JSON.parse(existing);
|
|
24
|
+
if (parsed === null || typeof parsed !== 'object' || Array.isArray(parsed)) {
|
|
25
|
+
// settings.json is not an object — do not guess, leave the file alone
|
|
26
|
+
return { content: existing, changed: false };
|
|
27
|
+
}
|
|
28
|
+
settings = parsed;
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
// Unparseable settings.json — never clobber a file we cannot read
|
|
32
|
+
return { content: existing, changed: false };
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
const marketplaces = isRecord(settings.extraKnownMarketplaces)
|
|
36
|
+
? settings.extraKnownMarketplaces
|
|
37
|
+
: {};
|
|
38
|
+
const plugins = isRecord(settings.enabledPlugins)
|
|
39
|
+
? settings.enabledPlugins
|
|
40
|
+
: {};
|
|
41
|
+
let changed = false;
|
|
42
|
+
if (!(MARKETPLACE_KEY in marketplaces)) {
|
|
43
|
+
marketplaces[MARKETPLACE_KEY] = { source: GITHUB_SOURCE };
|
|
44
|
+
changed = true;
|
|
45
|
+
}
|
|
46
|
+
if (plugins[PLUGIN_ID] !== true) {
|
|
47
|
+
plugins[PLUGIN_ID] = true;
|
|
48
|
+
changed = true;
|
|
49
|
+
}
|
|
50
|
+
if (!changed)
|
|
51
|
+
return { content: existing ?? '', changed: false };
|
|
52
|
+
settings.extraKnownMarketplaces = marketplaces;
|
|
53
|
+
settings.enabledPlugins = plugins;
|
|
54
|
+
return { content: JSON.stringify(settings, null, 2) + '\n', changed: true };
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Apply the recommendation to <projectRoot>/.claude/settings.json.
|
|
58
|
+
* Returns 'written' | 'already-present' | 'skipped-unreadable'.
|
|
59
|
+
*/
|
|
60
|
+
export function recommendClaudePlugin(projectRoot) {
|
|
61
|
+
const settingsPath = join(projectRoot, '.claude', 'settings.json');
|
|
62
|
+
const existing = existsSync(settingsPath) ? readFileSync(settingsPath, 'utf8') : null;
|
|
63
|
+
const { content, changed } = mergePluginRecommendation(existing);
|
|
64
|
+
if (!changed) {
|
|
65
|
+
return existing !== null && !isMerged(existing) ? 'skipped-unreadable' : 'already-present';
|
|
66
|
+
}
|
|
67
|
+
mkdirSync(dirname(settingsPath), { recursive: true });
|
|
68
|
+
writeFileSync(settingsPath, content);
|
|
69
|
+
return 'written';
|
|
70
|
+
}
|
|
71
|
+
function isMerged(content) {
|
|
72
|
+
try {
|
|
73
|
+
const s = JSON.parse(content);
|
|
74
|
+
return isRecord(s?.extraKnownMarketplaces) && MARKETPLACE_KEY in s.extraKnownMarketplaces;
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
function isRecord(v) {
|
|
81
|
+
return v !== null && typeof v === 'object' && !Array.isArray(v);
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=claude-plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-plugin.js","sourceRoot":"","sources":["../../src/lib/claude-plugin.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAC3B,gEAAgE;AAChE,qEAAqE;AACrE,oEAAoE;AACpE,wEAAwE;AACxE,uEAAuE;AACvE,gEAAgE;AAEhE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,IAAI,CAAA;AACvE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAEpC,MAAM,eAAe,GAAG,SAAS,CAAA;AACjC,MAAM,SAAS,GAAG,iBAAiB,CAAA;AACnC,MAAM,aAAa,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAA;AAOvE;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CAAC,QAAuB;IAC/D,IAAI,QAAQ,GAA4B,EAAE,CAAA;IAC1C,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;QACzC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;YACnC,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC3E,sEAAsE;gBACtE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;YAC9C,CAAC;YACD,QAAQ,GAAG,MAAiC,CAAA;QAC9C,CAAC;QAAC,MAAM,CAAC;YACP,kEAAkE;YAClE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;QAC9C,CAAC;IACH,CAAC;IAED,MAAM,YAAY,GAAG,QAAQ,CAAC,QAAQ,CAAC,sBAAsB,CAAC;QAC5D,CAAC,CAAC,QAAQ,CAAC,sBAAsB;QACjC,CAAC,CAAC,EAAE,CAAA;IACN,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC;QAC/C,CAAC,CAAC,QAAQ,CAAC,cAAc;QACzB,CAAC,CAAC,EAAE,CAAA;IAEN,IAAI,OAAO,GAAG,KAAK,CAAA;IACnB,IAAI,CAAC,CAAC,eAAe,IAAI,YAAY,CAAC,EAAE,CAAC;QACvC,YAAY,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,CAAA;QACzD,OAAO,GAAG,IAAI,CAAA;IAChB,CAAC;IACD,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC;QAChC,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,CAAA;QACzB,OAAO,GAAG,IAAI,CAAA;IAChB,CAAC;IACD,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;IAEhE,QAAQ,CAAC,sBAAsB,GAAG,YAAY,CAAA;IAC9C,QAAQ,CAAC,cAAc,GAAG,OAAO,CAAA;IACjC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;AAC7E,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,WAAmB;IACvD,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,eAAe,CAAC,CAAA;IAClE,MAAM,QAAQ,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAErF,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,yBAAyB,CAAC,QAAQ,CAAC,CAAA;IAChE,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,QAAQ,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,iBAAiB,CAAA;IAC5F,CAAC;IAED,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACrD,aAAa,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;IACpC,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,SAAS,QAAQ,CAAC,OAAe;IAC/B,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAC7B,OAAO,QAAQ,CAAC,CAAC,EAAE,sBAAsB,CAAC,IAAI,eAAe,IAAI,CAAC,CAAC,sBAAsB,CAAA;IAC3F,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,CAAU;IAC1B,OAAO,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;AACjE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-plugin.test.d.ts","sourceRoot":"","sources":["../../src/lib/claude-plugin.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { describe, it } from 'node:test';
|
|
2
|
+
import assert from 'node:assert/strict';
|
|
3
|
+
import { mergePluginRecommendation } from './claude-plugin.js';
|
|
4
|
+
describe('mergePluginRecommendation', () => {
|
|
5
|
+
it('creates settings from scratch when no file exists', () => {
|
|
6
|
+
const { content, changed } = mergePluginRecommendation(null);
|
|
7
|
+
assert.equal(changed, true);
|
|
8
|
+
const s = JSON.parse(content);
|
|
9
|
+
assert.deepEqual(s.extraKnownMarketplaces.robrain.source, { source: 'github', repo: 'adelinamart/robrain' });
|
|
10
|
+
assert.equal(s.enabledPlugins['robrain@robrain'], true);
|
|
11
|
+
});
|
|
12
|
+
it('preserves unrelated keys and existing plugins', () => {
|
|
13
|
+
const existing = JSON.stringify({
|
|
14
|
+
permissions: { allow: ['Bash(pnpm test)'] },
|
|
15
|
+
enabledPlugins: { 'other@somewhere': true },
|
|
16
|
+
});
|
|
17
|
+
const { content, changed } = mergePluginRecommendation(existing);
|
|
18
|
+
assert.equal(changed, true);
|
|
19
|
+
const s = JSON.parse(content);
|
|
20
|
+
assert.deepEqual(s.permissions, { allow: ['Bash(pnpm test)'] });
|
|
21
|
+
assert.equal(s.enabledPlugins['other@somewhere'], true);
|
|
22
|
+
assert.equal(s.enabledPlugins['robrain@robrain'], true);
|
|
23
|
+
});
|
|
24
|
+
it('is idempotent when the recommendation is already present', () => {
|
|
25
|
+
const first = mergePluginRecommendation(null);
|
|
26
|
+
const second = mergePluginRecommendation(first.content);
|
|
27
|
+
assert.equal(second.changed, false);
|
|
28
|
+
});
|
|
29
|
+
it('does not overwrite a user-defined robrain marketplace source', () => {
|
|
30
|
+
const existing = JSON.stringify({
|
|
31
|
+
extraKnownMarketplaces: { robrain: { source: { source: 'directory', path: '/dev/checkout' } } },
|
|
32
|
+
enabledPlugins: { 'robrain@robrain': true },
|
|
33
|
+
});
|
|
34
|
+
const { changed } = mergePluginRecommendation(existing);
|
|
35
|
+
assert.equal(changed, false);
|
|
36
|
+
});
|
|
37
|
+
it('leaves unparseable settings.json untouched', () => {
|
|
38
|
+
const broken = '{ "permissions": ';
|
|
39
|
+
const { content, changed } = mergePluginRecommendation(broken);
|
|
40
|
+
assert.equal(changed, false);
|
|
41
|
+
assert.equal(content, broken);
|
|
42
|
+
});
|
|
43
|
+
it('leaves non-object settings.json untouched', () => {
|
|
44
|
+
const { changed } = mergePluginRecommendation('[1,2,3]');
|
|
45
|
+
assert.equal(changed, false);
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
//# sourceMappingURL=claude-plugin.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-plugin.test.js","sourceRoot":"","sources":["../../src/lib/claude-plugin.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -53,11 +53,11 @@ describe('materializeSensingBundle', () => {
|
|
|
53
53
|
it('re-copies when the package version changed', () => {
|
|
54
54
|
writeFakePackage(pkgDir, '2.2.0', 'old');
|
|
55
55
|
assert.equal(materializeSensingBundle(pkgDir, mcpDir), true);
|
|
56
|
-
writeFakePackage(pkgDir, '2.3.
|
|
56
|
+
writeFakePackage(pkgDir, '2.3.3', 'new');
|
|
57
57
|
assert.equal(materializeSensingBundle(pkgDir, mcpDir), true);
|
|
58
58
|
assert.equal(readFileSync(join(mcpDir, 'sensing', 'dist', 'index.js'), 'utf8'), 'new');
|
|
59
59
|
const marker = JSON.parse(readFileSync(join(mcpDir, 'sensing', 'package.json'), 'utf8'));
|
|
60
|
-
assert.equal(marker.version, '2.3.
|
|
60
|
+
assert.equal(marker.version, '2.3.3');
|
|
61
61
|
});
|
|
62
62
|
it('replaces a symlinked destination from a previous --repo-root install', () => {
|
|
63
63
|
// Old dev install: ~/.robrain/mcp/sensing -> clone/packages/sensing-mcp
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "robrain",
|
|
3
|
-
"version": "2.3.
|
|
3
|
+
"version": "2.3.3",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "RoBrain CLI for installation, setup, and memory workflows",
|
|
6
6
|
"author": "Rory Plans, Inc.",
|
|
@@ -40,15 +40,6 @@
|
|
|
40
40
|
"publishConfig": {
|
|
41
41
|
"access": "public"
|
|
42
42
|
},
|
|
43
|
-
"scripts": {
|
|
44
|
-
"build": "tsc",
|
|
45
|
-
"prepublishOnly": "pnpm build && node scripts/vendor-sensing-mcp.mjs",
|
|
46
|
-
"dev": "tsc --watch",
|
|
47
|
-
"typecheck": "tsc --noEmit",
|
|
48
|
-
"test": "pnpm build && node --test dist/lib/editor.codex.test.js dist/lib/mcp-bundle.test.js dist/commands/outcomes.test.js dist/commands/export-interchange.test.js dist/commands/up.test.js",
|
|
49
|
-
"pack:verify": "node scripts/verify-publish-tarball.mjs",
|
|
50
|
-
"postinstall": "node scripts/chmod-bin.cjs"
|
|
51
|
-
},
|
|
52
43
|
"dependencies": {
|
|
53
44
|
"dotenv": "^16.4.5",
|
|
54
45
|
"chalk": "^5.3.0",
|
|
@@ -60,5 +51,13 @@
|
|
|
60
51
|
"typescript": "^5.4.0",
|
|
61
52
|
"@types/node": "^20.0.0",
|
|
62
53
|
"@types/prompts": "^2.4.9"
|
|
54
|
+
},
|
|
55
|
+
"scripts": {
|
|
56
|
+
"build": "tsc",
|
|
57
|
+
"dev": "tsc --watch",
|
|
58
|
+
"typecheck": "tsc --noEmit",
|
|
59
|
+
"test": "pnpm build && node --test dist/lib/editor.codex.test.js dist/lib/mcp-bundle.test.js dist/lib/claude-plugin.test.js dist/commands/outcomes.test.js dist/commands/export-interchange.test.js dist/commands/up.test.js",
|
|
60
|
+
"pack:verify": "node scripts/verify-publish-tarball.mjs",
|
|
61
|
+
"postinstall": "node scripts/chmod-bin.cjs"
|
|
63
62
|
}
|
|
64
|
-
}
|
|
63
|
+
}
|
|
File without changes
|