robrain 0.1.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/commands/explain.d.ts +7 -0
- package/dist/commands/explain.d.ts.map +1 -0
- package/dist/commands/explain.js +145 -0
- package/dist/commands/explain.js.map +1 -0
- package/dist/commands/init-project.d.ts +6 -0
- package/dist/commands/init-project.d.ts.map +1 -0
- package/dist/commands/init-project.js +120 -0
- package/dist/commands/init-project.js.map +1 -0
- package/dist/commands/inject.d.ts +10 -0
- package/dist/commands/inject.d.ts.map +1 -0
- package/dist/commands/inject.js +123 -0
- package/dist/commands/inject.js.map +1 -0
- package/dist/commands/install.d.ts +11 -0
- package/dist/commands/install.d.ts.map +1 -0
- package/dist/commands/install.js +305 -0
- package/dist/commands/install.js.map +1 -0
- package/dist/commands/review.d.ts +9 -0
- package/dist/commands/review.d.ts.map +1 -0
- package/dist/commands/review.js +299 -0
- package/dist/commands/review.js.map +1 -0
- package/dist/commands/status.d.ts +9 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +126 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +135 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/auth.d.ts +21 -0
- package/dist/lib/auth.d.ts.map +1 -0
- package/dist/lib/auth.js +73 -0
- package/dist/lib/auth.js.map +1 -0
- package/dist/lib/config.d.ts +22 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +49 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/editor.d.ts +25 -0
- package/dist/lib/editor.d.ts.map +1 -0
- package/dist/lib/editor.js +195 -0
- package/dist/lib/editor.js.map +1 -0
- package/dist/lib/load-env.d.ts +3 -0
- package/dist/lib/load-env.d.ts.map +1 -0
- package/dist/lib/load-env.js +29 -0
- package/dist/lib/load-env.js.map +1 -0
- package/dist/lib/mcp-bundle.d.ts +14 -0
- package/dist/lib/mcp-bundle.d.ts.map +1 -0
- package/dist/lib/mcp-bundle.js +42 -0
- package/dist/lib/mcp-bundle.js.map +1 -0
- package/dist/lib/project.d.ts +20 -0
- package/dist/lib/project.d.ts.map +1 -0
- package/dist/lib/project.js +201 -0
- package/dist/lib/project.js.map +1 -0
- package/package.json +39 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review.js","sourceRoot":"","sources":["../../src/commands/review.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare function statusCommand(): Promise<void>;
|
|
2
|
+
export declare function ruleCommand(opts: {
|
|
3
|
+
add?: string;
|
|
4
|
+
list?: boolean;
|
|
5
|
+
remove?: string;
|
|
6
|
+
type?: string;
|
|
7
|
+
}): Promise<void>;
|
|
8
|
+
export declare function logoutCommand(): Promise<void>;
|
|
9
|
+
//# sourceMappingURL=status.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAQA,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAuDnD;AAOD,wBAAsB,WAAW,CAAC,IAAI,EAAE;IACtC,GAAG,CAAC,EAAK,MAAM,CAAA;IACf,IAAI,CAAC,EAAI,OAAO,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAI,MAAM,CAAA;CAChB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4DhB;AAKD,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAMnD"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
// src/commands/status.ts
|
|
2
|
+
// robrain status — shows current state of the memory system
|
|
3
|
+
import chalk from 'chalk';
|
|
4
|
+
import { readConfig, isAuthenticated } from '../lib/config.js';
|
|
5
|
+
import { gatherProjectInfo } from '../lib/project.js';
|
|
6
|
+
import { cwd } from 'process';
|
|
7
|
+
export async function statusCommand() {
|
|
8
|
+
console.log();
|
|
9
|
+
if (!isAuthenticated()) {
|
|
10
|
+
console.log(chalk.red(' ✗ Not authenticated'));
|
|
11
|
+
console.log(chalk.dim(' Run: robrain install'));
|
|
12
|
+
console.log();
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
const config = readConfig();
|
|
16
|
+
const info = gatherProjectInfo(cwd());
|
|
17
|
+
console.log(chalk.bold(' RoBrain status\n'));
|
|
18
|
+
const accountLabel = config.token && config.email ? config.email : 'self-hosted (OSS)';
|
|
19
|
+
console.log(chalk.dim(' Account: ') + accountLabel);
|
|
20
|
+
console.log(chalk.dim(' Installed: ') + (config.installedAt
|
|
21
|
+
? new Date(config.installedAt).toLocaleDateString()
|
|
22
|
+
: 'unknown'));
|
|
23
|
+
console.log(chalk.dim(' Embeddings: ') + (config.embeddingProvider ?? 'not set'));
|
|
24
|
+
console.log();
|
|
25
|
+
console.log(chalk.dim(' Current project'));
|
|
26
|
+
console.log(chalk.dim(' ├ Name: ') + info.name);
|
|
27
|
+
console.log(chalk.dim(' └ ID: ') + info.id);
|
|
28
|
+
console.log();
|
|
29
|
+
// Ping Perception for live stats
|
|
30
|
+
if (config.perceptionUrl) {
|
|
31
|
+
try {
|
|
32
|
+
const res = await fetch(`${config.perceptionUrl}/health`);
|
|
33
|
+
if (res.ok) {
|
|
34
|
+
console.log(chalk.dim(' Perception: ') + chalk.green('● connected'));
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
console.log(chalk.dim(' Perception: ') + chalk.yellow('○ unreachable'));
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
console.log(chalk.dim(' Perception: ') + chalk.yellow('○ unreachable'));
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
if (config.planningUrl) {
|
|
45
|
+
try {
|
|
46
|
+
const res = await fetch(`${config.planningUrl}/health`);
|
|
47
|
+
if (res.ok) {
|
|
48
|
+
console.log(chalk.dim(' Planning: ') + chalk.green('● connected'));
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
console.log(chalk.dim(' Planning: ') + chalk.yellow('○ unreachable'));
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
console.log(chalk.dim(' Planning: ') + chalk.yellow('○ unreachable'));
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
console.log();
|
|
59
|
+
}
|
|
60
|
+
// ─────────────────────────────────────────────────────────────
|
|
61
|
+
// robrain rule --add TEXT [--type always_include|always_exclude|preference]
|
|
62
|
+
// --list
|
|
63
|
+
// --remove ID
|
|
64
|
+
export async function ruleCommand(opts) {
|
|
65
|
+
console.log();
|
|
66
|
+
if (!isAuthenticated()) {
|
|
67
|
+
console.log(chalk.red(' ✗ Not authenticated. Run: robrain install'));
|
|
68
|
+
process.exit(1);
|
|
69
|
+
}
|
|
70
|
+
const config = readConfig();
|
|
71
|
+
const info = gatherProjectInfo(cwd());
|
|
72
|
+
const planUrl = config.planningUrl;
|
|
73
|
+
if (!planUrl) {
|
|
74
|
+
console.log(chalk.red(' ✗ Planning URL not configured. Run: robrain install'));
|
|
75
|
+
process.exit(1);
|
|
76
|
+
}
|
|
77
|
+
const planKey = config.planningKey ?? '';
|
|
78
|
+
if (opts.add) {
|
|
79
|
+
const factType = opts.type === 'always_include' ? 'force_include'
|
|
80
|
+
: opts.type === 'always_exclude' ? 'force_exclude'
|
|
81
|
+
: 'preference';
|
|
82
|
+
const res = await fetch(`${planUrl}/facts`, {
|
|
83
|
+
method: 'POST',
|
|
84
|
+
headers: {
|
|
85
|
+
'Content-Type': 'application/json',
|
|
86
|
+
...(planKey ? { 'Authorization': `Bearer ${planKey}` } : {}),
|
|
87
|
+
},
|
|
88
|
+
body: JSON.stringify({
|
|
89
|
+
project_id: info.id,
|
|
90
|
+
fact_type: factType,
|
|
91
|
+
content: opts.add,
|
|
92
|
+
scope: 'project',
|
|
93
|
+
}),
|
|
94
|
+
});
|
|
95
|
+
if (res.ok) {
|
|
96
|
+
console.log(chalk.green(` ✓ Rule added: "${opts.add}"`));
|
|
97
|
+
console.log(chalk.dim(` Type: ${factType} · Project: ${info.name}`));
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
console.log(chalk.red(' ✗ Failed to add rule'));
|
|
101
|
+
}
|
|
102
|
+
console.log();
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
if (opts.list) {
|
|
106
|
+
console.log(chalk.bold(' Active rules\n'));
|
|
107
|
+
console.log(chalk.dim(' (rules are managed via Claude Code — use control_add_rule or robrain rule --add)'));
|
|
108
|
+
console.log();
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
console.log(chalk.dim(' Usage:'));
|
|
112
|
+
console.log(chalk.dim(' robrain rule --add "always surface auth decisions"'));
|
|
113
|
+
console.log(chalk.dim(' robrain rule --add "skip test files" --type always_exclude'));
|
|
114
|
+
console.log(chalk.dim(' robrain rule --list'));
|
|
115
|
+
console.log();
|
|
116
|
+
}
|
|
117
|
+
// ─────────────────────────────────────────────────────────────
|
|
118
|
+
// robrain logout
|
|
119
|
+
export async function logoutCommand() {
|
|
120
|
+
const { writeConfig } = await import('../lib/config.js');
|
|
121
|
+
writeConfig({});
|
|
122
|
+
console.log();
|
|
123
|
+
console.log(chalk.green(' ✓ Logged out. Config cleared from ~/.robrain/config.json'));
|
|
124
|
+
console.log();
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// src/index.ts
|
|
3
|
+
// ─────────────────────────────────────────────────────────────
|
|
4
|
+
// RoBrain CLI — entry point
|
|
5
|
+
// npx robrain <command> [options]
|
|
6
|
+
//
|
|
7
|
+
// Commands:
|
|
8
|
+
// install Authenticate + wire MCP servers into your editors
|
|
9
|
+
// init-project Warm-start memory from existing codebase
|
|
10
|
+
// status Show auth status + service health
|
|
11
|
+
// rule Add / list / remove explicit Planning rules
|
|
12
|
+
// logout Clear local credentials
|
|
13
|
+
// ─────────────────────────────────────────────────────────────
|
|
14
|
+
import { program } from 'commander';
|
|
15
|
+
import { installCommand } from './commands/install.js';
|
|
16
|
+
import { initProjectCommand } from './commands/init-project.js';
|
|
17
|
+
import { statusCommand, ruleCommand, logoutCommand } from './commands/status.js';
|
|
18
|
+
import { reviewCommand } from './commands/review.js';
|
|
19
|
+
import { injectCommand } from './commands/inject.js';
|
|
20
|
+
import { explainCommand } from './commands/explain.js';
|
|
21
|
+
const VERSION = '0.1.0';
|
|
22
|
+
program
|
|
23
|
+
.name('robrain')
|
|
24
|
+
.description('Institutional memory for AI coding agents — by Rory Plans')
|
|
25
|
+
.version(VERSION);
|
|
26
|
+
// ── review ────────────────────────────────────────────────────
|
|
27
|
+
program
|
|
28
|
+
.command('review')
|
|
29
|
+
.description('Review, edit, or delete decisions captured by RoBrain')
|
|
30
|
+
.option('-s, --session <id>', 'Review a specific session ID (default: last session)')
|
|
31
|
+
.option('-a, --all', 'Show all active decisions, not just the last session')
|
|
32
|
+
.option('--history', 'Show full lifecycle including superseded decisions')
|
|
33
|
+
.option('-l, --limit <n>', 'Max decisions to show (default: 20)', parseInt)
|
|
34
|
+
.action(async (opts) => {
|
|
35
|
+
await reviewCommand({
|
|
36
|
+
session: opts.session ?? 'last',
|
|
37
|
+
all: opts.all,
|
|
38
|
+
history: opts.history,
|
|
39
|
+
limit: opts.limit,
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
// ── explain ───────────────────────────────────────────────────
|
|
43
|
+
program
|
|
44
|
+
.command('explain <file>')
|
|
45
|
+
.description('Answer "why does this code exist?" for any file or directory')
|
|
46
|
+
.option('-w, --why', 'Show full rationale and rejected alternatives')
|
|
47
|
+
.option('-c, --copy', 'Copy output to clipboard')
|
|
48
|
+
.action(async (file, opts) => {
|
|
49
|
+
await explainCommand(file, opts);
|
|
50
|
+
});
|
|
51
|
+
// ── inject ────────────────────────────────────────────────────
|
|
52
|
+
program
|
|
53
|
+
.command('inject')
|
|
54
|
+
.description('Get relevant prior context to paste into Claude Code (OSS manual retrieval path)')
|
|
55
|
+
.option('-q, --query <text>', 'Semantic search query for relevant decisions')
|
|
56
|
+
.option('-f, --files <files>', 'Comma-separated files in scope (boosts file-overlapping decisions)')
|
|
57
|
+
.option('-c, --copy', 'Copy output directly to clipboard')
|
|
58
|
+
.option('-l, --limit <n>', 'Max decisions to include (default: 5)', parseInt)
|
|
59
|
+
.option('-a, --all', 'Include all matching decisions, not just top scored')
|
|
60
|
+
.action(async (opts) => {
|
|
61
|
+
await injectCommand(opts);
|
|
62
|
+
});
|
|
63
|
+
// ── install ───────────────────────────────────────────────────
|
|
64
|
+
program
|
|
65
|
+
.command('install')
|
|
66
|
+
.description('Wire RoBrain into your AI editors (self-hosted or Rory Plans cloud)')
|
|
67
|
+
.option('-t, --token <token>', 'Rory Plans API token (or set RORY_TOKEN env var)')
|
|
68
|
+
.option('-e, --editor <editor>', 'Target editor: claude-code | cursor | copilot')
|
|
69
|
+
.option('--self-hosted', 'Self-hosted mode — skip Rory Plans auth')
|
|
70
|
+
.option('--perception-url <url>', 'Perception URL for self-hosted mode (default: http://localhost:3001)')
|
|
71
|
+
.option('--repo-root <path>', 'Path to your robrain git clone (links built sensing-mcp into ~/.robrain/mcp). Or set ROBRAIN_REPO.')
|
|
72
|
+
.action(async (opts) => {
|
|
73
|
+
await installCommand({
|
|
74
|
+
token: opts.token ?? process.env.RORY_TOKEN,
|
|
75
|
+
editor: opts.editor,
|
|
76
|
+
selfHosted: opts.selfHosted,
|
|
77
|
+
perceptionUrl: opts.perceptionUrl,
|
|
78
|
+
repoRoot: opts.repoRoot,
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
// ── init-project ──────────────────────────────────────────────
|
|
82
|
+
program
|
|
83
|
+
.command('init-project')
|
|
84
|
+
.alias('init')
|
|
85
|
+
.description('Warm-start project memory from your codebase (run once per project)')
|
|
86
|
+
.option('--project-id <id>', 'Override the auto-derived project ID')
|
|
87
|
+
.action(async (opts) => {
|
|
88
|
+
await initProjectCommand({ projectId: opts.projectId });
|
|
89
|
+
});
|
|
90
|
+
// ── status ────────────────────────────────────────────────────
|
|
91
|
+
program
|
|
92
|
+
.command('status')
|
|
93
|
+
.description('Show authentication status and service health')
|
|
94
|
+
.action(async () => {
|
|
95
|
+
await statusCommand();
|
|
96
|
+
});
|
|
97
|
+
// ── rule ──────────────────────────────────────────────────────
|
|
98
|
+
program
|
|
99
|
+
.command('rule')
|
|
100
|
+
.description('Manage explicit Planning rules for this project')
|
|
101
|
+
.option('--add <text>', 'Add a new rule in plain language')
|
|
102
|
+
.option('--list', 'List active rules for this project')
|
|
103
|
+
.option('--remove <id>', 'Remove a rule by ID')
|
|
104
|
+
.option('--type <type>', 'Rule type: always_include | always_exclude | preference (default: preference)')
|
|
105
|
+
.action(async (opts) => {
|
|
106
|
+
await ruleCommand(opts);
|
|
107
|
+
});
|
|
108
|
+
// ── logout ────────────────────────────────────────────────────
|
|
109
|
+
program
|
|
110
|
+
.command('logout')
|
|
111
|
+
.description('Clear local credentials')
|
|
112
|
+
.action(async () => {
|
|
113
|
+
await logoutCommand();
|
|
114
|
+
});
|
|
115
|
+
// ── Default: show help ─────────────────────────────────────────
|
|
116
|
+
program.addHelpText('beforeAll', `
|
|
117
|
+
RoBrain v${VERSION} — institutional memory for AI coding agents
|
|
118
|
+
by roryplans.ai
|
|
119
|
+
`);
|
|
120
|
+
program.addHelpText('afterAll', `
|
|
121
|
+
Self-hosted quick start:
|
|
122
|
+
pnpm docker:up Start Postgres + Perception
|
|
123
|
+
npx robrain install --self-hosted Wire Sensing into Claude Code
|
|
124
|
+
npx robrain init-project Warm-start memory from codebase
|
|
125
|
+
npx robrain review Review captured decisions
|
|
126
|
+
npx robrain inject --query "..." --copy Get context to paste into Claude Code
|
|
127
|
+
npx robrain explain src/store/cart.ts Why does this file look this way?
|
|
128
|
+
|
|
129
|
+
Cloud quick start (automatic injection, no paste):
|
|
130
|
+
npx robrain install --token YOUR_TOKEN Authenticate with Rory Plans
|
|
131
|
+
npx robrain init-project Warm-start memory
|
|
132
|
+
→ Context injects automatically at task boundaries
|
|
133
|
+
`);
|
|
134
|
+
program.parse();
|
|
135
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export interface AuthResult {
|
|
2
|
+
ok: boolean;
|
|
3
|
+
email?: string;
|
|
4
|
+
perceptionUrl?: string;
|
|
5
|
+
planningUrl?: string;
|
|
6
|
+
error?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface ProvisionedConfig {
|
|
9
|
+
perceptionUrl: string;
|
|
10
|
+
planningUrl: string;
|
|
11
|
+
perceptionKey: string;
|
|
12
|
+
planningKey: string;
|
|
13
|
+
embeddingProvider: string;
|
|
14
|
+
}
|
|
15
|
+
/** Validate a Rory Plans token and return account info */
|
|
16
|
+
export declare function validateToken(token: string): Promise<AuthResult>;
|
|
17
|
+
/** Fetch provisioned API config for this token */
|
|
18
|
+
export declare function fetchProvisionedConfig(token: string): Promise<ProvisionedConfig | null>;
|
|
19
|
+
/** Register a new project with Rory Plans */
|
|
20
|
+
export declare function registerProject(token: string, projectId: string, projectName: string): Promise<boolean>;
|
|
21
|
+
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/lib/auth.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,UAAU;IACzB,EAAE,EAAa,OAAO,CAAA;IACtB,KAAK,CAAC,EAAS,MAAM,CAAA;IACrB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,WAAW,CAAC,EAAG,MAAM,CAAA;IACrB,KAAK,CAAC,EAAS,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,EAAI,MAAM,CAAA;IACrB,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,EAAI,MAAM,CAAA;IACrB,iBAAiB,EAAE,MAAM,CAAA;CAC1B;AAED,0DAA0D;AAC1D,wBAAsB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAoCtE;AAED,kDAAkD;AAClD,wBAAsB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAc7F;AAED,6CAA6C;AAC7C,wBAAsB,eAAe,CACnC,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,OAAO,CAAC,CAclB"}
|
package/dist/lib/auth.js
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
// src/lib/auth.ts
|
|
2
|
+
// ─────────────────────────────────────────────────────────────
|
|
3
|
+
// Handles authentication against Rory Plans API.
|
|
4
|
+
// On login: validates token, fetches user info + provisioned
|
|
5
|
+
// Perception/Planning API URLs for this account.
|
|
6
|
+
// ─────────────────────────────────────────────────────────────
|
|
7
|
+
import { RORY_API_BASE } from './config.js';
|
|
8
|
+
/** Validate a Rory Plans token and return account info */
|
|
9
|
+
export async function validateToken(token) {
|
|
10
|
+
try {
|
|
11
|
+
const res = await fetch(`${RORY_API_BASE}/robrain/auth/validate`, {
|
|
12
|
+
method: 'GET',
|
|
13
|
+
headers: {
|
|
14
|
+
'Authorization': `Bearer ${token}`,
|
|
15
|
+
'Content-Type': 'application/json',
|
|
16
|
+
},
|
|
17
|
+
});
|
|
18
|
+
if (!res.ok) {
|
|
19
|
+
const body = await res.json().catch(() => ({}));
|
|
20
|
+
return {
|
|
21
|
+
ok: false,
|
|
22
|
+
error: body.error ?? `Authentication failed (${res.status})`,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
const data = await res.json();
|
|
26
|
+
return {
|
|
27
|
+
ok: true,
|
|
28
|
+
email: data.email,
|
|
29
|
+
perceptionUrl: data.perceptionUrl,
|
|
30
|
+
planningUrl: data.planningUrl,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
catch (err) {
|
|
34
|
+
return {
|
|
35
|
+
ok: false,
|
|
36
|
+
error: `Could not reach roryplans.ai — check your internet connection`,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
/** Fetch provisioned API config for this token */
|
|
41
|
+
export async function fetchProvisionedConfig(token) {
|
|
42
|
+
try {
|
|
43
|
+
const res = await fetch(`${RORY_API_BASE}/robrain/provision`, {
|
|
44
|
+
method: 'GET',
|
|
45
|
+
headers: { 'Authorization': `Bearer ${token}` },
|
|
46
|
+
});
|
|
47
|
+
if (!res.ok)
|
|
48
|
+
return null;
|
|
49
|
+
const data = await res.json();
|
|
50
|
+
return data;
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/** Register a new project with Rory Plans */
|
|
57
|
+
export async function registerProject(token, projectId, projectName) {
|
|
58
|
+
try {
|
|
59
|
+
const res = await fetch(`${RORY_API_BASE}/robrain/projects`, {
|
|
60
|
+
method: 'POST',
|
|
61
|
+
headers: {
|
|
62
|
+
'Authorization': `Bearer ${token}`,
|
|
63
|
+
'Content-Type': 'application/json',
|
|
64
|
+
},
|
|
65
|
+
body: JSON.stringify({ project_id: projectId, name: projectName }),
|
|
66
|
+
});
|
|
67
|
+
return res.ok;
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/lib/auth.ts"],"names":[],"mappings":"AAAA,kBAAkB;AAClB,gEAAgE;AAChE,iDAAiD;AACjD,6DAA6D;AAC7D,iDAAiD;AACjD,gEAAgE;AAEhE,OAAO,EAAE,aAAa,EAAuB,MAAM,aAAa,CAAA;AAkBhE,0DAA0D;AAC1D,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,KAAa;IAC/C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,aAAa,wBAAwB,EAAE;YAChE,MAAM,EAAE,KAAK;YACb,OAAO,EAAE;gBACP,eAAe,EAAE,UAAU,KAAK,EAAE;gBAClC,cAAc,EAAG,kBAAkB;aACpC;SACF,CAAC,CAAA;QAEF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAuB,CAAA;YACrE,OAAO;gBACL,EAAE,EAAK,KAAK;gBACZ,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,0BAA0B,GAAG,CAAC,MAAM,GAAG;aAC7D,CAAA;QACH,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAI1B,CAAA;QAED,OAAO;YACL,EAAE,EAAa,IAAI;YACnB,KAAK,EAAU,IAAI,CAAC,KAAK;YACzB,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,WAAW,EAAI,IAAI,CAAC,WAAW;SAChC,CAAA;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,EAAE,EAAK,KAAK;YACZ,KAAK,EAAE,+DAA+D;SACvE,CAAA;IACH,CAAC;AACH,CAAC;AAED,kDAAkD;AAClD,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,KAAa;IACxD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,aAAa,oBAAoB,EAAE;YAC5D,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,EAAE,eAAe,EAAE,UAAU,KAAK,EAAE,EAAE;SAChD,CAAC,CAAA;QAEF,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,IAAI,CAAA;QAExB,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAuB,CAAA;QAClD,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED,6CAA6C;AAC7C,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,KAAa,EACb,SAAiB,EACjB,WAAmB;IAEnB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,aAAa,mBAAmB,EAAE;YAC3D,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,eAAe,EAAE,UAAU,KAAK,EAAE;gBAClC,cAAc,EAAG,kBAAkB;aACpC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;SACnE,CAAC,CAAA;QACF,OAAO,GAAG,CAAC,EAAE,CAAA;IACf,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export interface RoMemoryConfig {
|
|
2
|
+
token?: string;
|
|
3
|
+
email?: string;
|
|
4
|
+
/** Set when using install --self-hosted (no Rory token) */
|
|
5
|
+
selfHosted?: boolean;
|
|
6
|
+
perceptionUrl?: string;
|
|
7
|
+
perceptionKey?: string;
|
|
8
|
+
planningUrl?: string;
|
|
9
|
+
planningKey?: string;
|
|
10
|
+
embeddingProvider?: string;
|
|
11
|
+
embeddingKey?: string;
|
|
12
|
+
installedAt?: string;
|
|
13
|
+
version?: string;
|
|
14
|
+
}
|
|
15
|
+
export declare function readConfig(): RoMemoryConfig;
|
|
16
|
+
export declare function writeConfig(config: RoMemoryConfig): void;
|
|
17
|
+
export declare function mergeConfig(updates: Partial<RoMemoryConfig>): void;
|
|
18
|
+
/** True if Rory cloud login, or OSS self-hosted install (no Rory token). */
|
|
19
|
+
export declare function isAuthenticated(): boolean;
|
|
20
|
+
export declare function getToken(): string | undefined;
|
|
21
|
+
export declare const RORY_API_BASE: string;
|
|
22
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAW,MAAM,CAAA;IACvB,KAAK,CAAC,EAAW,MAAM,CAAA;IACvB,2DAA2D;IAC3D,UAAU,CAAC,EAAM,OAAO,CAAA;IACxB,aAAa,CAAC,EAAG,MAAM,CAAA;IACvB,aAAa,CAAC,EAAG,MAAM,CAAA;IACvB,WAAW,CAAC,EAAK,MAAM,CAAA;IACvB,WAAW,CAAC,EAAK,MAAM,CAAA;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,YAAY,CAAC,EAAI,MAAM,CAAA;IACvB,WAAW,CAAC,EAAK,MAAM,CAAA;IACvB,OAAO,CAAC,EAAS,MAAM,CAAA;CACxB;AAED,wBAAgB,UAAU,IAAI,cAAc,CAO3C;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAKxD;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI,CAGlE;AAED,4EAA4E;AAC5E,wBAAgB,eAAe,IAAI,OAAO,CAWzC;AAED,wBAAgB,QAAQ,IAAI,MAAM,GAAG,SAAS,CAE7C;AAGD,eAAO,MAAM,aAAa,QAA0D,CAAA"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
// src/lib/config.ts
|
|
2
|
+
// ─────────────────────────────────────────────────────────────
|
|
3
|
+
// Manages local RoBrain config stored in ~/.robrain/config.json
|
|
4
|
+
// Handles: API token, user info, Rory Plans API URL, project settings
|
|
5
|
+
// ─────────────────────────────────────────────────────────────
|
|
6
|
+
import { readFileSync, writeFileSync, mkdirSync, existsSync } from 'fs';
|
|
7
|
+
import { homedir } from 'os';
|
|
8
|
+
import { join } from 'path';
|
|
9
|
+
const CONFIG_DIR = join(homedir(), '.robrain');
|
|
10
|
+
const CONFIG_FILE = join(CONFIG_DIR, 'config.json');
|
|
11
|
+
export function readConfig() {
|
|
12
|
+
if (!existsSync(CONFIG_FILE))
|
|
13
|
+
return {};
|
|
14
|
+
try {
|
|
15
|
+
return JSON.parse(readFileSync(CONFIG_FILE, 'utf8'));
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
return {};
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
export function writeConfig(config) {
|
|
22
|
+
if (!existsSync(CONFIG_DIR)) {
|
|
23
|
+
mkdirSync(CONFIG_DIR, { recursive: true });
|
|
24
|
+
}
|
|
25
|
+
writeFileSync(CONFIG_FILE, JSON.stringify(config, null, 2), 'utf8');
|
|
26
|
+
}
|
|
27
|
+
export function mergeConfig(updates) {
|
|
28
|
+
const current = readConfig();
|
|
29
|
+
writeConfig({ ...current, ...updates });
|
|
30
|
+
}
|
|
31
|
+
/** True if Rory cloud login, or OSS self-hosted install (no Rory token). */
|
|
32
|
+
export function isAuthenticated() {
|
|
33
|
+
const config = readConfig();
|
|
34
|
+
if (config.token && config.email)
|
|
35
|
+
return true;
|
|
36
|
+
if (config.selfHosted)
|
|
37
|
+
return true;
|
|
38
|
+
// Legacy self-hosted before selfHosted flag: perception configured, never logged into Rory
|
|
39
|
+
return Boolean(config.perceptionUrl &&
|
|
40
|
+
config.installedAt &&
|
|
41
|
+
!config.token &&
|
|
42
|
+
!config.email);
|
|
43
|
+
}
|
|
44
|
+
export function getToken() {
|
|
45
|
+
return readConfig().token;
|
|
46
|
+
}
|
|
47
|
+
// Rory Plans API base URL — points to roryplans.ai auth + provisioning endpoints
|
|
48
|
+
export const RORY_API_BASE = process.env.RORY_API_BASE ?? 'https://api.roryplans.ai';
|
|
49
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA,oBAAoB;AACpB,gEAAgE;AAChE,gEAAgE;AAChE,sEAAsE;AACtE,gEAAgE;AAEhE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,IAAI,CAAA;AACvE,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAA;AAC5B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,MAAM,UAAU,GAAI,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAA;AAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAA;AAiBnD,MAAM,UAAU,UAAU;IACxB,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO,EAAE,CAAA;IACvC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAmB,CAAA;IACxE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAA;IACX,CAAC;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,MAAsB;IAChD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC5C,CAAC;IACD,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;AACrE,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAAgC;IAC1D,MAAM,OAAO,GAAG,UAAU,EAAE,CAAA;IAC5B,WAAW,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC,CAAA;AACzC,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,eAAe;IAC7B,MAAM,MAAM,GAAG,UAAU,EAAE,CAAA;IAC3B,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK;QAAE,OAAO,IAAI,CAAA;IAC7C,IAAI,MAAM,CAAC,UAAU;QAAE,OAAO,IAAI,CAAA;IAClC,2FAA2F;IAC3F,OAAO,OAAO,CACZ,MAAM,CAAC,aAAa;QAClB,MAAM,CAAC,WAAW;QAClB,CAAC,MAAM,CAAC,KAAK;QACb,CAAC,MAAM,CAAC,KAAK,CAChB,CAAA;AACH,CAAC;AAED,MAAM,UAAU,QAAQ;IACtB,OAAO,UAAU,EAAE,CAAC,KAAK,CAAA;AAC3B,CAAC;AAED,iFAAiF;AACjF,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,0BAA0B,CAAA"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export type Editor = 'claude-code' | 'cursor' | 'copilot' | 'unknown';
|
|
2
|
+
export interface DetectedEditor {
|
|
3
|
+
editor: Editor;
|
|
4
|
+
configPath: string;
|
|
5
|
+
label: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function detectEditors(): DetectedEditor[];
|
|
8
|
+
export interface McpWriteOptions {
|
|
9
|
+
sensingMcpPath: string;
|
|
10
|
+
controlMcpPath: string;
|
|
11
|
+
anthropicKey: string;
|
|
12
|
+
perceptionUrl: string;
|
|
13
|
+
perceptionKey: string;
|
|
14
|
+
planningUrl: string;
|
|
15
|
+
planningKey: string;
|
|
16
|
+
embeddingProvider: string;
|
|
17
|
+
embeddingKey: string;
|
|
18
|
+
/** When false, drops robrain-control (OSS self-hosted — Control ships with Rory cloud only). Default true. */
|
|
19
|
+
includeControl?: boolean;
|
|
20
|
+
}
|
|
21
|
+
export declare function writeMcpConfig(configPath: string, opts: McpWriteOptions): void;
|
|
22
|
+
export declare function writeClaudeMd(projectRoot: string, projectId: string): void;
|
|
23
|
+
/** Writes `.cursor/rules/robrain.mdc` when Cursor is used; skips if RoBrain block already present. Returns true if a new file was written. */
|
|
24
|
+
export declare function writeCursorRoBrainRule(projectRoot: string, projectId: string): boolean;
|
|
25
|
+
//# sourceMappingURL=editor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../../src/lib/editor.ts"],"names":[],"mappings":"AAWA,MAAM,MAAM,MAAM,GAAG,aAAa,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAA;AAErE,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAM,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAO,MAAM,CAAA;CACnB;AAID,wBAAgB,aAAa,IAAI,cAAc,EAAE,CA2BhD;AAoBD,MAAM,WAAW,eAAe;IAC9B,cAAc,EAAG,MAAM,CAAA;IACvB,cAAc,EAAG,MAAM,CAAA;IACvB,YAAY,EAAK,MAAM,CAAA;IACvB,aAAa,EAAI,MAAM,CAAA;IACvB,aAAa,EAAI,MAAM,CAAA;IACvB,WAAW,EAAM,MAAM,CAAA;IACvB,WAAW,EAAM,MAAM,CAAA;IACvB,iBAAiB,EAAE,MAAM,CAAA;IACzB,YAAY,EAAK,MAAM,CAAA;IACvB,8GAA8G;IAC9G,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AAED,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,GAAG,IAAI,CA2D9E;AAiED,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAa1E;AAED,8IAA8I;AAC9I,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAoBtF"}
|