robrain 2.3.4 → 2.3.5
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/install.js +2 -2
- package/dist/commands/up.test.js +2 -2
- package/dist/index.js +1 -1
- package/dist/lib/mcp-bundle.test.js +2 -2
- package/package.json +1 -1
- package/vendor/hermes-plugin/robrain/__init__.py +13 -1
- package/vendor/sensing-mcp/dist/index.js +1 -1
- package/vendor/sensing-mcp/package.json +1 -1
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.5',
|
|
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.5',
|
|
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.5`);
|
|
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\.5\}/);
|
|
8
8
|
assert.doesNotMatch(compose, /build:/);
|
|
9
9
|
});
|
|
10
10
|
it('mounts the stack-local schema and env file', () => {
|
package/dist/index.js
CHANGED
|
@@ -28,7 +28,7 @@ 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
30
|
import { installHermesPlugin, resolveHermesHome } from './lib/hermes-plugin.js';
|
|
31
|
-
const VERSION = '2.3.
|
|
31
|
+
const VERSION = '2.3.5';
|
|
32
32
|
program
|
|
33
33
|
.name('robrain')
|
|
34
34
|
.description('Institutional memory for AI coding agents — by Rory Plans')
|
|
@@ -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.5', '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.5');
|
|
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
|
@@ -415,8 +415,20 @@ class RoBrainProvider(MemoryProvider):
|
|
|
415
415
|
def save_config(self, values: Dict[str, Any], hermes_home: str) -> None:
|
|
416
416
|
path = self._config_path(hermes_home)
|
|
417
417
|
path.parent.mkdir(parents=True, exist_ok=True)
|
|
418
|
+
# Defensive: an interactive-setup mispaste can land the API key in a
|
|
419
|
+
# text field. A base_url that isn't a URL would fail silently later
|
|
420
|
+
# (fail-open hides it), so fall back to the default instead — and
|
|
421
|
+
# never persist something that looks like a pasted secret.
|
|
422
|
+
base_url = str(values.get("base_url") or "").strip()
|
|
423
|
+
if not base_url.startswith(("http://", "https://")):
|
|
424
|
+
if base_url:
|
|
425
|
+
logger.warning(
|
|
426
|
+
"robrain: ignoring non-URL base_url from setup (%r…) — using default",
|
|
427
|
+
base_url[:8],
|
|
428
|
+
)
|
|
429
|
+
base_url = "http://localhost:3001"
|
|
418
430
|
config = {
|
|
419
|
-
"base_url":
|
|
431
|
+
"base_url": base_url,
|
|
420
432
|
"project_id": values.get("project_id") or "default",
|
|
421
433
|
"scope": values.get("scope") or "team",
|
|
422
434
|
}
|
|
@@ -23037,7 +23037,7 @@ function resolveSessionId(raw) {
|
|
|
23037
23037
|
function buildServer() {
|
|
23038
23038
|
const server = new McpServer({
|
|
23039
23039
|
name: "sensing-mcp",
|
|
23040
|
-
version: "2.3.
|
|
23040
|
+
version: "2.3.5"
|
|
23041
23041
|
});
|
|
23042
23042
|
server.tool(
|
|
23043
23043
|
"sensing_start_session",
|