@rubytech/create-realagent 1.0.767 → 1.0.771

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/index.js CHANGED
@@ -1541,25 +1541,23 @@ function setupVncViewer() {
1541
1541
  }
1542
1542
  function setupAccount() {
1543
1543
  log("10", TOTAL, "Setting up...");
1544
+ // Tasks 787 + 788 — both seed-neo4j.sh and embed-backfill.sh hard-exit
1545
+ // without NEO4J_URI. The installer owns the brand-correct URI and password,
1546
+ // so we derive them once and pass to both call sites. Missing password file
1547
+ // is a hard error: ensureNeo4jPassword() ran upstream and would have thrown
1548
+ // already if it couldn't reach the brand's Neo4j.
1549
+ const passwordFile = join(INSTALL_DIR, "platform/config/.neo4j-password");
1550
+ if (!existsSync(passwordFile)) {
1551
+ throw new Error(`Neo4j password file missing at ${passwordFile} — required by setup step.`);
1552
+ }
1553
+ const password = readFileSync(passwordFile, "utf-8").trim();
1554
+ const neo4jUri = `bolt://localhost:${NEO4J_PORT}`;
1555
+ const neo4jEnv = { ...process.env, NEO4J_URI: neo4jUri, NEO4J_PASSWORD: password };
1544
1556
  const seedScript = join(INSTALL_DIR, "platform/scripts/seed-neo4j.sh");
1545
1557
  if (existsSync(seedScript)) {
1546
- // Task 787 — explicit env to seed. The script no longer falls back to
1547
- // bolt://localhost:7687, so the installer is responsible for naming the
1548
- // brand-correct URI and providing the password. Missing password file is
1549
- // a hard error: ensureNeo4jPassword() ran upstream and would have thrown
1550
- // already if it couldn't reach the brand's Neo4j.
1551
- const passwordFile = join(INSTALL_DIR, "platform/config/.neo4j-password");
1552
- if (!existsSync(passwordFile)) {
1553
- throw new Error(`Neo4j password file missing at ${passwordFile} — required by seed step.`);
1554
- }
1555
- const password = readFileSync(passwordFile, "utf-8").trim();
1556
- const neo4jUri = `bolt://localhost:${NEO4J_PORT}`;
1557
1558
  console.log(` [neo4j] passing NEO4J_URI=${neo4jUri} to seed`);
1558
1559
  logFile(` [neo4j] passing NEO4J_URI=${neo4jUri} to seed`);
1559
- shell("bash", [seedScript], {
1560
- cwd: INSTALL_DIR,
1561
- env: { ...process.env, NEO4J_URI: neo4jUri, NEO4J_PASSWORD: password },
1562
- });
1560
+ shell("bash", [seedScript], { cwd: INSTALL_DIR, env: neo4jEnv });
1563
1561
  }
1564
1562
  // Task 748 — universal embedding coverage backfill. Run after seed so the
1565
1563
  // entity_search index is in place and any pre-Task-748 nodes (e.g. the
@@ -1581,6 +1579,7 @@ function setupAccount() {
1581
1579
  stdio: "inherit",
1582
1580
  timeout: 30 * 60_000,
1583
1581
  cwd: INSTALL_DIR,
1582
+ env: neo4jEnv,
1584
1583
  });
1585
1584
  const dur = ((Date.now() - start) / 1000).toFixed(1);
1586
1585
  if (result.status !== 0 || result.signal) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rubytech/create-realagent",
3
- "version": "1.0.767",
3
+ "version": "1.0.771",
4
4
  "description": "Install Real Agent — Built for agents. By agents.",
5
5
  "bin": {
6
6
  "create-realagent": "./dist/index.js"
@@ -184,10 +184,15 @@ def cypher(query: str, params: dict | None = None) -> str:
184
184
 
185
185
  def parse_csv_rows(stdout: str) -> list[dict]:
186
186
  """cypher-shell --format plain emits a CSV header + rows. The csv module
187
- handles quoting reliably even when text contains commas/quotes/newlines."""
187
+ handles quoting reliably even when text contains commas/quotes/newlines.
188
+
189
+ skipinitialspace=True is required because cypher-shell emits a space
190
+ after each comma in both header and data rows (`id, firstLabel, text`),
191
+ and DictReader otherwise treats the spaces as part of the column name —
192
+ `row["text"]` raises KeyError because the actual key is " text"."""
188
193
  if not stdout.strip():
189
194
  return []
190
- reader = csv.DictReader(StringIO(stdout))
195
+ reader = csv.DictReader(StringIO(stdout), skipinitialspace=True)
191
196
  return list(reader)
192
197
 
193
198
 
@@ -1 +1 @@
1
- import{t as e}from"./jsx-runtime-ChGcT0jq.js";var t=e();function n({checked:e,onChange:n,label:r,disabled:i}){return(0,t.jsxs)(`label`,{className:`maxy-checkbox${i?` maxy-checkbox--disabled`:``}`,children:[(0,t.jsx)(`input`,{type:`checkbox`,checked:e,onChange:e=>n(e.target.checked),disabled:i}),(0,t.jsx)(`span`,{className:`maxy-checkbox__box`,children:`✱`}),r&&(0,t.jsx)(`span`,{className:`maxy-checkbox__label`,children:r})]})}export{n as t};
1
+ import{t as e}from"./jsx-runtime-DeNudFNA.js";var t=e();function n({checked:e,onChange:n,label:r,disabled:i}){return(0,t.jsxs)(`label`,{className:`maxy-checkbox${i?` maxy-checkbox--disabled`:``}`,children:[(0,t.jsx)(`input`,{type:`checkbox`,checked:e,onChange:e=>n(e.target.checked),disabled:i}),(0,t.jsx)(`span`,{className:`maxy-checkbox__box`,children:`✱`}),r&&(0,t.jsx)(`span`,{className:`maxy-checkbox__label`,children:r})]})}export{n as t};