robrain 2.0.0 → 2.3.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.
Files changed (51) hide show
  1. package/dist/commands/doctor.d.ts +2 -0
  2. package/dist/commands/doctor.d.ts.map +1 -0
  3. package/dist/commands/doctor.js +195 -0
  4. package/dist/commands/doctor.js.map +1 -0
  5. package/dist/commands/export-interchange.d.ts +62 -0
  6. package/dist/commands/export-interchange.d.ts.map +1 -0
  7. package/dist/commands/export-interchange.js +109 -0
  8. package/dist/commands/export-interchange.js.map +1 -0
  9. package/dist/commands/export-interchange.test.d.ts +2 -0
  10. package/dist/commands/export-interchange.test.d.ts.map +1 -0
  11. package/dist/commands/export-interchange.test.js +94 -0
  12. package/dist/commands/export-interchange.test.js.map +1 -0
  13. package/dist/commands/inject.d.ts.map +1 -1
  14. package/dist/commands/inject.js +12 -1
  15. package/dist/commands/inject.js.map +1 -1
  16. package/dist/commands/install.d.ts.map +1 -1
  17. package/dist/commands/install.js +29 -21
  18. package/dist/commands/install.js.map +1 -1
  19. package/dist/commands/outcomes.d.ts +41 -0
  20. package/dist/commands/outcomes.d.ts.map +1 -0
  21. package/dist/commands/outcomes.js +274 -0
  22. package/dist/commands/outcomes.js.map +1 -0
  23. package/dist/commands/outcomes.test.d.ts +2 -0
  24. package/dist/commands/outcomes.test.d.ts.map +1 -0
  25. package/dist/commands/outcomes.test.js +118 -0
  26. package/dist/commands/outcomes.test.js.map +1 -0
  27. package/dist/commands/review.d.ts.map +1 -1
  28. package/dist/commands/review.js +24 -0
  29. package/dist/commands/review.js.map +1 -1
  30. package/dist/commands/up.d.ts +34 -0
  31. package/dist/commands/up.d.ts.map +1 -0
  32. package/dist/commands/up.js +257 -0
  33. package/dist/commands/up.js.map +1 -0
  34. package/dist/commands/up.test.d.ts +2 -0
  35. package/dist/commands/up.test.d.ts.map +1 -0
  36. package/dist/commands/up.test.js +70 -0
  37. package/dist/commands/up.test.js.map +1 -0
  38. package/dist/index.js +65 -5
  39. package/dist/index.js.map +1 -1
  40. package/dist/lib/mcp-bundle.d.ts +46 -4
  41. package/dist/lib/mcp-bundle.d.ts.map +1 -1
  42. package/dist/lib/mcp-bundle.js +99 -10
  43. package/dist/lib/mcp-bundle.js.map +1 -1
  44. package/dist/lib/mcp-bundle.test.d.ts +2 -0
  45. package/dist/lib/mcp-bundle.test.d.ts.map +1 -0
  46. package/dist/lib/mcp-bundle.test.js +85 -0
  47. package/dist/lib/mcp-bundle.test.js.map +1 -0
  48. package/dist/lib/project.d.ts.map +1 -1
  49. package/dist/lib/project.js +17 -1
  50. package/dist/lib/project.js.map +1 -1
  51. package/package.json +3 -2
@@ -15,6 +15,13 @@ import prompts from 'prompts';
15
15
  import { readConfig, isAuthenticated } from '../lib/config.js';
16
16
  import { gatherProjectInfo } from '../lib/project.js';
17
17
  import { cwd } from 'process';
18
+ /** Mirrors Perception's demotion gate (packages/perception-self-hosted/src/scoring.ts DEMOTION). */
19
+ const RARELY_USED_MIN_INJECTED = 5;
20
+ const RARELY_USED_MAX_RATIO = 0.2;
21
+ function truncateExcerpt(text, max = 80) {
22
+ const oneLine = text.replace(/\s+/g, ' ').trim();
23
+ return oneLine.length <= max ? oneLine : `${oneLine.slice(0, max - 1)}…`;
24
+ }
18
25
  export async function reviewCommand(opts) {
19
26
  console.log();
20
27
  if (!isAuthenticated()) {
@@ -137,6 +144,23 @@ export async function reviewCommand(opts) {
137
144
  if (d.files_affected.length > 0) {
138
145
  console.log(chalk.dim(` files: `) + d.files_affected.slice(0, 3).join(', ') + (d.files_affected.length > 3 ? ` +${d.files_affected.length - 3} more` : ''));
139
146
  }
147
+ // Provenance — which session/turn this decision was captured from
148
+ if (d.session_id && (d.source_turn_sequence != null || d.source_excerpt)) {
149
+ const turn = d.source_turn_sequence != null ? ` · turn ${d.source_turn_sequence}` : '';
150
+ const excerpt = d.source_excerpt ? ` · "${truncateExcerpt(d.source_excerpt)}"` : '';
151
+ console.log(chalk.dim(` from: session ${d.session_id.slice(0, 8)}${turn} · ${date}${excerpt}`));
152
+ }
153
+ // Quality stats — historical relevance + injection/usage counters
154
+ if (typeof d.historical_relevance === 'number' || typeof d.injected_count === 'number') {
155
+ const injected = d.injected_count ?? 0;
156
+ const used = d.used_count ?? 0;
157
+ const parts = [
158
+ ...(typeof d.historical_relevance === 'number' ? [`relevance ${d.historical_relevance.toFixed(2)}`] : []),
159
+ `injected ${injected}× · used ${used}×`,
160
+ ];
161
+ const rarelyUsed = injected >= RARELY_USED_MIN_INJECTED && used / injected < RARELY_USED_MAX_RATIO;
162
+ console.log(chalk.dim(` stats: ${parts.join(' · ')}`) + (rarelyUsed ? chalk.yellow(' ⚠ rarely used') : ''));
163
+ }
140
164
  // Lifecycle info
141
165
  if (d.supersedes_id) {
142
166
  console.log(chalk.dim(` ↩ replaces: `) + chalk.dim(`earlier decision (${d.supersedes_id.slice(0, 8)}...)`));
@@ -1 +1 @@
1
- {"version":3,"file":"review.js","sourceRoot":"","sources":["../../src/commands/review.ts"],"names":[],"mappings":"AAAA,yBAAyB;AACzB,gEAAgE;AAChE,iEAAiE;AACjE,EAAE;AACF,gEAAgE;AAChE,kEAAkE;AAClE,2DAA2D;AAC3D,EAAE;AACF,iEAAiE;AACjE,kCAAkC;AAClC,gEAAgE;AAEhE,OAAO,KAAK,MAAQ,OAAO,CAAA;AAC3B,OAAO,GAAG,MAAU,KAAK,CAAA;AACzB,OAAO,OAAO,MAAM,SAAS,CAAA;AAC7B,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAgB,mBAAmB,CAAA;AAC/D,OAAO,EAAE,GAAG,EAAE,MAA8B,SAAS,CAAA;AA6BrD,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAmB;IACrD,OAAO,CAAC,GAAG,EAAE,CAAA;IAEb,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC,CAAA;QACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,MAAM,MAAM,GAAI,UAAU,EAAE,CAAA;IAC5B,MAAM,IAAI,GAAM,iBAAiB,CAAC,GAAG,EAAE,CAAC,CAAA;IACxC,MAAM,OAAO,GAAG,MAAM,CAAC,aAAa,CAAA;IACpC,MAAM,OAAO,GAAG,MAAM,CAAC,aAAa,IAAI,EAAE,CAAA;IAE1C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC,CAAA;QACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,6DAA6D;IAC7D,MAAM,OAAO,GAAG,GAAG,CAAC,EAAE,IAAI,EAAE,8BAA8B,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,EAAE,CAAA;IAErF,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAA;IAC9B,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;QACjC,UAAU,EAAE,IAAI,CAAC,EAAE;QACnB,KAAK,EAAO,MAAM,CAAC,KAAK,CAAC;QACzB,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,KAAK,MAAM,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;QAC5E,GAAG,CAAC,IAAI,CAAC,GAAG,CAAK,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,CAAK,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAC5D,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC7C,CAAC,CAAA;IAEF,IAAI,SAAS,GAAqB,EAAE,CAAA;IAEpC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,cAAc,MAAM,EAAE,EAAE;YACxD,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,UAAU,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE;SACjE,CAAC,CAAA;QAEF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC,8BAA8B,GAAG,CAAC,MAAM,GAAG,CAAC,CAAA;YACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAqC,CAAA;QAChE,SAAS,GAAI,IAAI,CAAC,SAAS,IAAI,EAAE,CAAA;QACjC,6FAA6F;QAC7F,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,SAAS,CAAC,IAAI,CACZ,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAC9E,CAAA;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAA;QAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,OAAO,CAAC,IAAI,EAAE,CAAA;IAEd,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iCAAiC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;YACjF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC,CAAA;QACpF,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,oDAAoD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;YACtG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,uFAAuF,CAAC,CAAC,CAAA;QACjH,CAAC;QACD,OAAM;IACR,CAAC;IAED,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,cAAc,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAA;QAC7E,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,8CAA8C,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;YAClG,OAAM;QACR,CAAC;QAED,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,OAAO,CAAC;YAC1C,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,mBAAmB;YACzB,OAAO,EAAE,WAAW,UAAU,CAAC,MAAM,YAAY,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,WAAW;YAC9F,OAAO,EAAE,KAAK;SACf,CAAC,CAAA;QAEF,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAA;YACxC,OAAM;QACR,CAAC;QAED,MAAM,0BAA0B,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;QAC9D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC,CAAA;QACxD,OAAM;IACR,CAAC;IAED,8DAA8D;IAC9D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IACzD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,MAAM,YAAY,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,kBAAkB,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;IACrH,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,sEAAsE,CAAC,CAAC,CAAA;IAChG,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,oFAAoF,CAAC,CAAC,CAAA;IAC9G,CAAC;IAED,8DAA8D;IAC9D,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,CAAA;QACzD,MAAM,IAAI,GAAI,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAA;QACrH,MAAM,IAAI,GAAI,CAAC,CAAC,UAAU,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;YAC3C,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC;gBAC9C,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAE9B,kBAAkB;QAClB,MAAM,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAA;QACvC,MAAM,UAAU,GAAK,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAA;QACrD,MAAM,YAAY,GAAG,UAAU,IAAI,CAAC,CAAC,WAAW;YAC9C,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;YAC1G,CAAC,CAAC,IAAI,CAAA;QAER,MAAM,WAAW,GAAI,YAAY;YAC/B,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC;YAC7B,CAAC,CAAC,UAAU;gBACZ,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,kBAAkB,YAAY,EAAE,CAAC;gBAC/C,CAAC,CAAC,CAAC,CAAC,aAAa;oBACjB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,iCAAiC,CAAC;oBACjD,CAAC,CAAC,IAAI,CAAA;QAER,IAAI,WAAW;YAAE,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;QAEzC,oCAAoC;QACpC,MAAM,YAAY,GAAG,YAAY;YAC/B,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;YACvC,CAAC,CAAC,KAAK,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAA;QAC1C,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;QAEzB,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAA;QAClG,CAAC;QAED,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,MAAM,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACrG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,GAAG,MAAM,CAAC,CAAA;QACpD,CAAC;QAED,IAAI,CAAC,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QACpK,CAAC;QAED,iBAAiB;QACjB,IAAI,CAAC,CAAC,aAAa,EAAE,CAAC;YACpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;QACjH,CAAC;QACD,IAAI,YAAY,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC;YACrC,MAAM,cAAc,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAA;YAClI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,sBAAsB,cAAc,EAAE,CAAC,CAAC,CAAA;QAChE,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,IAAI,iBAAiB,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;QAEhG,0DAA0D;QAC1D,IAAI,YAAY,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,EAAE,CAAA;YACb,SAAQ;QACV,CAAC;QAED,0DAA0D;QAC1D,sEAAsE;QACtE,uEAAuE;QACvE,gFAAgF;QAChF,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC;YAC/B,IAAI,EAAK,QAAQ;YACjB,IAAI,EAAK,QAAQ;YACjB,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,uDAAuD,CAAC,CAAC,CAAC,SAAS;YACzF,OAAO,EAAE;gBACP,GAAG,CAAC,CAAC,UAAU;oBACb,CAAC,CAAC;wBACE,EAAE,KAAK,EAAE,2BAA2B,EAAK,KAAK,EAAE,QAAQ,EAAE;qBAC3D;oBACH,CAAC,CAAC;wBACE,EAAE,KAAK,EAAE,iCAAiC,EAAE,KAAK,EAAE,eAAe,EAAE;qBACrE,CAAC;gBACN,EAAE,KAAK,EAAE,8BAA8B,EAAG,KAAK,EAAE,MAAM,EAAK;gBAC5D,EAAE,KAAK,EAAE,wBAAwB,EAAQ,KAAK,EAAE,QAAQ,EAAG;gBAC3D,GAAG,CAAC,CAAC,CAAC,aAAa;oBACjB,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAM,KAAK,EAAE,SAAS,EAAE,CAAC;oBAC3D,CAAC,CAAC,EAAE,CACL;gBACD,EAAE,KAAK,EAAE,mBAAmB,EAAa,KAAK,EAAE,UAAU,EAAC;aAC5D;SACF,CAAC,CAAA;QAEF,OAAO,CAAC,GAAG,EAAE,CAAA;QAEb,IAAI,CAAC,MAAM,IAAI,MAAM,KAAK,UAAU;YAAE,MAAK;QAE3C,IAAI,MAAM,KAAK,eAAe,EAAE,CAAC;YAC/B,OAAO,CAAC,GAAG,EAAE,CAAA;YACb,SAAQ;QACV,CAAC;QAED,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YACtB,MAAM,kBAAkB,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,CAAA;QACxD,CAAC;QAED,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YACxB,MAAM,oBAAoB,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;QACjD,CAAC;QAED,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,qBAAqB,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,CAAA;QAC3D,CAAC;QAED,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YACxB,MAAM,qBAAqB,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;QAClD,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAA;AACnD,CAAC;AAED,iEAAiE;AAEjE,SAAS,mBAAmB,CAAC,KAAgC;IAC3D,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,IAAI,CAAA;IAC9B,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;IACtB,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;AAC5B,CAAC;AAED,KAAK,UAAU,kBAAkB,CAC/B,CAAiB,EACjB,OAAe,EACf,OAAe,EACf,SAAiB;IAEjB,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,OAAO,CAAC;QACpC,IAAI,EAAK,MAAM;QACf,IAAI,EAAK,aAAa;QACtB,OAAO,EAAE,qBAAqB;QAC9B,OAAO,EAAG,CAAC,CAAC,QAAQ;KACrB,CAAC,CAAA;IAEF,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAA;QACtC,OAAM;IACR,CAAC;IAED,MAAM,eAAe,GAAG,WAAW,CAAC,IAAI,EAAE,CAAA;IAC1C,IAAI,eAAe,KAAK,EAAE,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAA;QACtC,OAAM;IACR,CAAC;IAED,MAAM,cAAc,GAAG,mBAAmB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;IAEvD,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,OAAO,CAAC;QACrC,IAAI,EAAK,MAAM;QACf,IAAI,EAAK,cAAc;QACvB,OAAO,EAAE,oEAAoE;QAC7E,OAAO,EAAG,CAAC,CAAC,SAAS,IAAI,EAAE;KAC5B,CAAC,CAAA;IAEF,yFAAyF;IACzF,IAAI,kBAAiC,CAAA;IACrC,IAAI,YAAY,IAAI,IAAI,EAAE,CAAC;QACzB,kBAAkB,GAAG,cAAc,CAAA;IACrC,CAAC;SAAM,IAAI,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACtC,kBAAkB,GAAG,IAAI,CAAA;IAC3B,CAAC;SAAM,CAAC;QACN,kBAAkB,GAAG,YAAY,CAAC,IAAI,EAAE,CAAA;IAC1C,CAAC;IAED,MAAM,eAAe,GAAG,eAAe,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA;IAC7D,MAAM,gBAAgB,GAAG,kBAAkB,KAAK,cAAc,CAAA;IAE9D,IAAI,CAAC,eAAe,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAA;QAC3C,OAAM;IACR,CAAC;IAED,MAAM,OAAO,GAAG,GAAG,CAAC,sBAAsB,CAAC,CAAC,KAAK,EAAE,CAAA;IACnD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,cAAc,EAAE;YAChD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAG,kBAAkB;gBACnC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,UAAU,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5D,cAAc,EAAG,SAAS;gBAC1B,cAAc,EAAG,CAAC,CAAC,UAAU;aAC9B;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,WAAW,EAAW,CAAC,CAAC,EAAE;gBAC1B,kBAAkB,EAAI,eAAe;gBACrC,mBAAmB,EAAG,kBAAkB;gBACxC,UAAU,EAAY,IAAI;gBAC1B,MAAM,EAAgB,iBAAiB;aACxC,CAAC;SACH,CAAC,CAAA;QACF,GAAG,CAAC,EAAE;YACJ,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;YACpD,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAA;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAA;IAChD,CAAC;AACH,CAAC;AAED,iEAAiE;AAEjE,KAAK,UAAU,qBAAqB,CAClC,CAAiB,EACjB,OAAe,EACf,OAAe;IAEf,MAAM,OAAO,GAAG,GAAG,CAAC,uBAAuB,CAAC,CAAC,KAAK,EAAE,CAAA;IACpD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,cAAc,EAAE;YAChD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,UAAU,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC7D;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,WAAW,EAAE,CAAC,CAAC,EAAE;gBACjB,OAAO,EAAM,IAAI;gBACjB,MAAM,EAAO,iBAAiB;aAC/B,CAAC;SACH,CAAC,CAAA;QACF,GAAG,CAAC,EAAE;YACJ,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;YACzF,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,8BAA8B,GAAG,CAAC,MAAM,6BAA6B,CAAC,CAAC,CAAA;IACvG,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,iFAAiF,CAAC,CAAC,CAAA;IAC/G,CAAC;AACH,CAAC;AAED,KAAK,UAAU,0BAA0B,CACvC,SAA2B,EAC3B,OAAe,EACf,OAAe;IAEf,MAAM,OAAO,GAAG,GAAG,CAAC,2BAA2B,SAAS,CAAC,MAAM,YAAY,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,EAAE,CAAA;IAC1H,IAAI,aAAa,GAAG,CAAC,CAAA;IAErB,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC1B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,cAAc,EAAE;gBAChD,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;oBAClC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,UAAU,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC7D;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,WAAW,EAAE,CAAC,CAAC,EAAE;oBACjB,OAAO,EAAM,IAAI;oBACjB,MAAM,EAAO,iBAAiB;iBAC/B,CAAC;aACH,CAAC,CAAA;YACF,IAAI,GAAG,CAAC,EAAE;gBAAE,aAAa,EAAE,CAAA;QAC7B,CAAC;QAAC,MAAM,CAAC;YACP,+CAA+C;QACjD,CAAC;IACH,CAAC;IAED,IAAI,aAAa,KAAK,SAAS,CAAC,MAAM,EAAE,CAAC;QACvC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,aAAa,YAAY,aAAa,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;QACrG,OAAM;IACR,CAAC;IAED,IAAI,aAAa,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,yDAAyD,CAAC,CAAC,CAAA;QACrF,OAAM;IACR,CAAC;IAED,OAAO,CAAC,IAAI,CACV,KAAK,CAAC,MAAM,CACV,sBAAsB,aAAa,IAAI,SAAS,CAAC,MAAM,iDAAiD,CACzG,CACF,CAAA;AACH,CAAC;AAED,iEAAiE;AAEjE,KAAK,UAAU,oBAAoB,CACjC,CAAiB,EACjB,OAAe,EACf,OAAe;IAEf,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,OAAO,CAAC;QAChC,IAAI,EAAK,SAAS;QAClB,IAAI,EAAK,SAAS;QAClB,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,6CAA6C,CAAC;QACtG,OAAO,EAAG,KAAK;KAChB,CAAC,CAAA;IAEF,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAA;QACpC,OAAM;IACR,CAAC;IAED,MAAM,OAAO,GAAG,GAAG,CAAC,cAAc,CAAC,CAAC,KAAK,EAAE,CAAA;IAC3C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,cAAc,EAAE;YAChD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAG,kBAAkB;gBACnC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,UAAU,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC7D;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,WAAW,EAAE,CAAC,CAAC,EAAE;gBACjB,UAAU,EAAG,IAAI;gBACjB,MAAM,EAAO,iBAAiB;aAC/B,CAAC;SACH,CAAC,CAAA;QACF,GAAG,CAAC,EAAE;YACJ,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;YACxF,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAA;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAA;IAChD,CAAC;AACH,CAAC;AAED,kEAAkE;AAElE,KAAK,UAAU,qBAAqB,CAClC,CAAiB,EACjB,OAAe,EACf,OAAe,EACf,SAAiB;IAEjB,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,OAAO,CAAC;QACnC,IAAI,EAAK,QAAQ;QACjB,IAAI,EAAK,YAAY;QACrB,OAAO,EAAE,mBAAmB;QAC5B,OAAO,EAAE;YACP,EAAE,KAAK,EAAE,8BAA8B,EAAW,KAAK,EAAE,MAAM,EAAQ;YACvE,EAAE,KAAK,EAAE,uCAAuC,EAAE,KAAK,EAAE,YAAY,EAAE;SACxE;KACF,CAAC,CAAA;IAEF,IAAI,CAAC,UAAU;QAAE,OAAM;IAEvB,MAAM,OAAO,GAAG,GAAG,CAAC,cAAc,CAAC,CAAC,KAAK,EAAE,CAAA;IAC3C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,cAAc,EAAE;YAChD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAG,kBAAkB;gBACnC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,UAAU,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5D,cAAc,EAAG,SAAS;gBAC1B,cAAc,EAAG,CAAC,CAAC,UAAU;aAC9B;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,WAAW,EAAe,CAAC,CAAC,EAAE;gBAC9B,UAAU,EAAc,UAAU,KAAK,YAAY;gBACnD,sBAAsB,EAAE,UAAU,KAAK,MAAM;gBAC7C,GAAG,CAAC,UAAU,KAAK,MAAM,IAAI,CAAC,CAAC,uBAAuB;oBACpD,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,uBAAuB,EAAE;oBAC/C,CAAC,CAAC,EAAE,CAAC;gBACP,MAAM,EAAoB,iBAAiB;aAC5C,CAAC;SACH,CAAC,CAAA;QACF,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;YACX,UAAU,KAAK,MAAM;gBACnB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;gBACrE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC,CAAA;QAC7E,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAA;QAC5C,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAA;IAChD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"review.js","sourceRoot":"","sources":["../../src/commands/review.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ export declare const DEFAULT_IMAGE_REPO = "ghcr.io/adelinamart/robrain-perception";
2
+ /**
3
+ * Managed compose file for the clone-free stack. Mirrors docker/docker-compose.yml
4
+ * with two differences: Perception runs from the published image instead of a local
5
+ * build, and schema.sql / .env are read from the stack directory instead of the repo.
6
+ */
7
+ export declare function renderStackCompose(image: string): string;
8
+ export interface EnsureEnvResult {
9
+ content: string;
10
+ /** Keys whose values were generated or seeded during this pass. */
11
+ generated: string[];
12
+ }
13
+ /**
14
+ * Same contract as scripts/prepare-env.mjs, applied to the stack .env:
15
+ * existing non-empty values are never overwritten; blank or missing
16
+ * POSTGRES_PASSWORD / PERCEPTION_API_KEY get random 32-byte hex values, and a
17
+ * DATABASE_URL still carrying CHANGE_ME is rewritten to match. On first creation,
18
+ * provider keys present in `seeds` (the caller's process env) are copied in so
19
+ * users who exported ANTHROPIC_API_KEY / OPENAI_API_KEY are not asked twice.
20
+ */
21
+ export declare function ensureStackEnvContent(existing: string | null, seeds: Record<string, string | undefined>): EnsureEnvResult;
22
+ /** Read a KEY=value line out of env-file content. */
23
+ export declare function readEnvValue(content: string, key: string): string;
24
+ export interface UpOptions {
25
+ /** Image tag to run; defaults to the CLI version so client and server move together. */
26
+ tag?: string;
27
+ /** Full image override; wins over --tag. */
28
+ image?: string;
29
+ /** CLI version, injected by the entry point (source of the default tag). */
30
+ cliVersion: string;
31
+ }
32
+ export declare function upCommand(opts: UpOptions): Promise<void>;
33
+ export declare function downCommand(): Promise<void>;
34
+ //# sourceMappingURL=up.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"up.d.ts","sourceRoot":"","sources":["../../src/commands/up.ts"],"names":[],"mappings":"AAsBA,eAAO,MAAM,kBAAkB,2CAA2C,CAAA;AAM1E;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAmDxD;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAA;IACf,mEAAmE;IACnE,SAAS,EAAE,MAAM,EAAE,CAAA;CACpB;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,GACxC,eAAe,CAqEjB;AAED,qDAAqD;AACrD,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAGjE;AA4BD,MAAM,WAAW,SAAS;IACxB,wFAAwF;IACxF,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,4CAA4C;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,4EAA4E;IAC5E,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAuE9D;AAED,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAWjD"}
@@ -0,0 +1,257 @@
1
+ // src/commands/up.ts
2
+ // ─────────────────────────────────────────────────────────────
3
+ // robrain up — start the self-hosted Perception stack (Postgres + pgvector +
4
+ // Perception API) from the published GHCR image. No repo clone required.
5
+ //
6
+ // Writes into ~/.robrain/stack/:
7
+ // docker-compose.yml managed — regenerated on every run
8
+ // schema.sql managed — extracted from the Perception image
9
+ // .env user-owned — secrets auto-generated once, never overwritten
10
+ //
11
+ // The repo-clone flow (`pnpm docker:up`) is unchanged; both drive the same
12
+ // container names and data volume, so they are the same logical stack.
13
+ // ─────────────────────────────────────────────────────────────
14
+ import { execFileSync, spawnSync } from 'child_process';
15
+ import { randomBytes } from 'crypto';
16
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'fs';
17
+ import { homedir } from 'os';
18
+ import { join } from 'path';
19
+ import chalk from 'chalk';
20
+ import { mergeConfig } from '../lib/config.js';
21
+ export const DEFAULT_IMAGE_REPO = 'ghcr.io/adelinamart/robrain-perception';
22
+ const STACK_DIR = join(homedir(), '.robrain', 'stack');
23
+ const VOLUME_NAME = 'robrain_postgres_data';
24
+ // ── Pure helpers (exported for tests) ─────────────────────────
25
+ /**
26
+ * Managed compose file for the clone-free stack. Mirrors docker/docker-compose.yml
27
+ * with two differences: Perception runs from the published image instead of a local
28
+ * build, and schema.sql / .env are read from the stack directory instead of the repo.
29
+ */
30
+ export function renderStackCompose(image) {
31
+ return `# Managed by \`robrain up\` — regenerated on every run; do not edit.
32
+ # Configuration belongs in the .env file next to this compose file.
33
+ services:
34
+
35
+ postgres:
36
+ image: pgvector/pgvector:pg16
37
+ container_name: robrain-postgres
38
+ restart: unless-stopped
39
+ environment:
40
+ POSTGRES_USER: \${POSTGRES_USER:-robrain}
41
+ POSTGRES_PASSWORD: \${POSTGRES_PASSWORD:?POSTGRES_PASSWORD must be set in .env (robrain up auto-generates one)}
42
+ POSTGRES_DB: \${POSTGRES_DB:-robrain}
43
+ # Bound to localhost so the database is not reachable from the LAN.
44
+ ports:
45
+ - "\${POSTGRES_BIND_HOST:-127.0.0.1}:\${POSTGRES_PORT:-5432}:5432"
46
+ volumes:
47
+ - ${VOLUME_NAME}:/var/lib/postgresql/data
48
+ - ./schema.sql:/docker-entrypoint-initdb.d/001_schema.sql
49
+ healthcheck:
50
+ test: ["CMD-SHELL", "pg_isready -U \${POSTGRES_USER:-robrain}"]
51
+ interval: 5s
52
+ timeout: 5s
53
+ retries: 10
54
+
55
+ perception:
56
+ image: \${PERCEPTION_IMAGE:-${image}}
57
+ container_name: robrain-perception
58
+ restart: unless-stopped
59
+ depends_on:
60
+ postgres:
61
+ condition: service_healthy
62
+ env_file:
63
+ - ./.env
64
+ environment:
65
+ PORT: \${PERCEPTION_PORT:-3001}
66
+ DATABASE_URL: postgres://\${POSTGRES_USER:-robrain}:\${POSTGRES_PASSWORD:?POSTGRES_PASSWORD must be set in .env}@postgres:5432/\${POSTGRES_DB:-robrain}
67
+ DB_SCHEMA: context_system
68
+ OSS_MODE: "true"
69
+ ports:
70
+ - "\${PERCEPTION_BIND_HOST:-127.0.0.1}:\${PERCEPTION_PORT:-3001}:3001"
71
+ healthcheck:
72
+ test: ["CMD-SHELL", "curl -sf http://localhost:3001/health || exit 1"]
73
+ interval: 10s
74
+ timeout: 5s
75
+ retries: 5
76
+
77
+ volumes:
78
+ ${VOLUME_NAME}:
79
+ name: ${VOLUME_NAME}
80
+ `;
81
+ }
82
+ /**
83
+ * Same contract as scripts/prepare-env.mjs, applied to the stack .env:
84
+ * existing non-empty values are never overwritten; blank or missing
85
+ * POSTGRES_PASSWORD / PERCEPTION_API_KEY get random 32-byte hex values, and a
86
+ * DATABASE_URL still carrying CHANGE_ME is rewritten to match. On first creation,
87
+ * provider keys present in `seeds` (the caller's process env) are copied in so
88
+ * users who exported ANTHROPIC_API_KEY / OPENAI_API_KEY are not asked twice.
89
+ */
90
+ export function ensureStackEnvContent(existing, seeds) {
91
+ const generated = [];
92
+ if (existing === null) {
93
+ const postgresPassword = randomBytes(32).toString('hex');
94
+ const perceptionKey = randomBytes(32).toString('hex');
95
+ generated.push('POSTGRES_PASSWORD', 'PERCEPTION_API_KEY');
96
+ const seededLine = (key, fallback = '') => {
97
+ const value = seeds[key]?.trim();
98
+ if (value)
99
+ generated.push(key);
100
+ return `${key}=${value || fallback}`;
101
+ };
102
+ const content = `# RoBrain self-hosted stack — created by \`robrain up\`.
103
+ # Read by Docker Compose for substitutions AND passed to the Perception
104
+ # container (env_file). Values you set here are never overwritten; a blank
105
+ # POSTGRES_PASSWORD / PERCEPTION_API_KEY is re-generated on the next \`robrain up\`.
106
+ # Full option reference (local models, bind hosts, timeouts):
107
+ # https://github.com/adelinamart/robrain/blob/main/.env.example
108
+
109
+ ${seededLine('LLM_PROVIDER', 'anthropic')}
110
+ ${seededLine('ANTHROPIC_API_KEY')}
111
+ ${seededLine('EMBEDDING_PROVIDER', 'openai')}
112
+ ${seededLine('OPENAI_API_KEY')}
113
+ ${seededLine('VOYAGE_API_KEY')}
114
+ ${seededLine('COHERE_API_KEY')}
115
+
116
+ POSTGRES_USER=robrain
117
+ POSTGRES_PASSWORD=${postgresPassword}
118
+ POSTGRES_DB=robrain
119
+ POSTGRES_PORT=5432
120
+ PERCEPTION_PORT=3001
121
+ PERCEPTION_API_KEY=${perceptionKey}
122
+
123
+ # Host-side connection string for \`robrain synth\` (the container builds its own).
124
+ DATABASE_URL=postgres://robrain:${postgresPassword}@localhost:5432/robrain
125
+ `;
126
+ return { content, generated };
127
+ }
128
+ const lines = existing.split('\n');
129
+ const ensureRandom = (key) => {
130
+ const idx = lines.findIndex(l => l.match(new RegExp(`^\\s*${key}\\s*=`)));
131
+ if (idx === -1) {
132
+ const value = randomBytes(32).toString('hex');
133
+ lines.push(`${key}=${value}`);
134
+ generated.push(key);
135
+ return value;
136
+ }
137
+ const current = (lines[idx] ?? '').replace(new RegExp(`^\\s*${key}\\s*=\\s*`), '').trim();
138
+ if (current.length > 0 && current !== 'CHANGE_ME')
139
+ return current;
140
+ const value = randomBytes(32).toString('hex');
141
+ lines[idx] = `${key}=${value}`;
142
+ generated.push(key);
143
+ return value;
144
+ };
145
+ const postgresPassword = ensureRandom('POSTGRES_PASSWORD');
146
+ ensureRandom('PERCEPTION_API_KEY');
147
+ const dbIdx = lines.findIndex(l => l.match(/^\s*DATABASE_URL\s*=/));
148
+ if (dbIdx !== -1 && /CHANGE_ME/.test(lines[dbIdx] ?? '')) {
149
+ lines[dbIdx] = `DATABASE_URL=postgres://robrain:${postgresPassword}@localhost:5432/robrain`;
150
+ generated.push('DATABASE_URL');
151
+ }
152
+ return { content: lines.join('\n'), generated };
153
+ }
154
+ /** Read a KEY=value line out of env-file content. */
155
+ export function readEnvValue(content, key) {
156
+ const line = content.split('\n').find(l => l.match(new RegExp(`^\\s*${key}\\s*=`)));
157
+ return line ? line.replace(new RegExp(`^\\s*${key}\\s*=\\s*`), '').trim() : '';
158
+ }
159
+ // ── Docker plumbing ────────────────────────────────────────────
160
+ function dockerAvailable() {
161
+ try {
162
+ execFileSync('docker', ['compose', 'version'], { stdio: 'ignore' });
163
+ return true;
164
+ }
165
+ catch {
166
+ return false;
167
+ }
168
+ }
169
+ function volumeExists() {
170
+ try {
171
+ execFileSync('docker', ['volume', 'inspect', VOLUME_NAME], { stdio: 'ignore' });
172
+ return true;
173
+ }
174
+ catch {
175
+ return false;
176
+ }
177
+ }
178
+ function composeArgs(rest) {
179
+ return ['compose', '--project-directory', STACK_DIR, '-f', join(STACK_DIR, 'docker-compose.yml'), ...rest];
180
+ }
181
+ export async function upCommand(opts) {
182
+ console.log();
183
+ console.log(chalk.bold(' RoBrain self-hosted stack') + chalk.dim(' — Postgres + Perception, no clone needed\n'));
184
+ if (!dockerAvailable()) {
185
+ console.log(chalk.red(' ✗ Docker (with the compose plugin) is required but not available.'));
186
+ console.log(chalk.dim(' Install Docker Desktop or docker-ce + docker-compose-plugin, then re-run ') + chalk.cyan('robrain up') + '\n');
187
+ process.exit(1);
188
+ }
189
+ const image = opts.image ?? `${DEFAULT_IMAGE_REPO}:${opts.tag ?? opts.cliVersion}`;
190
+ mkdirSync(STACK_DIR, { recursive: true });
191
+ // 1. .env — generate secrets once, keep user edits forever after.
192
+ const envPath = join(STACK_DIR, '.env');
193
+ const existing = existsSync(envPath) ? readFileSync(envPath, 'utf8') : null;
194
+ const { content: envContent, generated } = ensureStackEnvContent(existing, process.env);
195
+ if (existing !== envContent)
196
+ writeFileSync(envPath, envContent);
197
+ for (const key of generated) {
198
+ const value = readEnvValue(envContent, key);
199
+ const display = value.length > 12 ? `${value.slice(0, 8)}…${value.slice(-4)}` : value;
200
+ console.log(chalk.dim(` generated ${key}=${display}`));
201
+ }
202
+ // Existing data volume + freshly generated password = the new credentials
203
+ // cannot open the old database (POSTGRES_PASSWORD only applies at initdb).
204
+ if (generated.includes('POSTGRES_PASSWORD') && volumeExists()) {
205
+ console.log(chalk.yellow(`\n ⚠ Data volume ${VOLUME_NAME} already exists but POSTGRES_PASSWORD was just generated.`));
206
+ console.log(chalk.yellow(' The new password will NOT match the existing database. Either:'));
207
+ console.log(chalk.dim(' • copy POSTGRES_PASSWORD + PERCEPTION_API_KEY from your previous .env (repo clone) into ') + chalk.cyan(envPath));
208
+ console.log(chalk.dim(' • or start fresh: ') + chalk.cyan(`robrain down && docker volume rm ${VOLUME_NAME}`) + chalk.dim(' then re-run ') + chalk.cyan('robrain up') + '\n');
209
+ }
210
+ // 2. Managed compose file.
211
+ writeFileSync(join(STACK_DIR, 'docker-compose.yml'), renderStackCompose(image));
212
+ // 3. Pull the image, extract the version-matched schema for the initdb mount.
213
+ console.log(chalk.dim(' Pulling ') + chalk.cyan(image) + chalk.dim(' …'));
214
+ const pull = spawnSync('docker', ['pull', image], { stdio: 'inherit' });
215
+ if (pull.status !== 0) {
216
+ console.log(chalk.red(`\n ✗ Could not pull ${image}.`));
217
+ console.log(chalk.dim(' If this tag is not published yet, try ') + chalk.cyan('robrain up --tag latest') + '\n');
218
+ process.exit(1);
219
+ }
220
+ const schema = execFileSync('docker', ['run', '--rm', '--entrypoint', 'cat', image, '/app/schema.sql']);
221
+ writeFileSync(join(STACK_DIR, 'schema.sql'), schema);
222
+ // 4. Up, waiting on both healthchecks.
223
+ console.log(chalk.dim('\n Starting containers …'));
224
+ const up = spawnSync('docker', composeArgs(['up', '-d', '--wait']), { stdio: 'inherit' });
225
+ if (up.status !== 0) {
226
+ console.log(chalk.red('\n ✗ Stack failed to become healthy.'));
227
+ console.log(chalk.dim(' Logs: ') + chalk.cyan(`docker compose --project-directory ${STACK_DIR} logs perception`) + '\n');
228
+ process.exit(1);
229
+ }
230
+ // 5. Make the key discoverable by `robrain install --self-hosted` and the
231
+ // other CLI commands — config.json is the install-time source of truth.
232
+ const perceptionPort = readEnvValue(envContent, 'PERCEPTION_PORT') || '3001';
233
+ const perceptionUrl = `http://localhost:${perceptionPort}`;
234
+ const perceptionKey = readEnvValue(envContent, 'PERCEPTION_API_KEY');
235
+ mergeConfig({ perceptionUrl, ...(perceptionKey ? { perceptionKey } : {}), selfHosted: true });
236
+ console.log();
237
+ console.log(chalk.green(' ✓ Perception is up') + chalk.dim(` — ${perceptionUrl}`));
238
+ console.log(chalk.dim(' Stack files: ') + STACK_DIR);
239
+ console.log();
240
+ console.log(chalk.dim(' Next steps:'));
241
+ console.log(chalk.dim(' ') + chalk.cyan('npx robrain install --self-hosted') + chalk.dim(' Wire Sensing MCP into your editors'));
242
+ console.log(chalk.dim(' ') + chalk.cyan('npx robrain init-project') + chalk.dim(' Warm-start memory in your project'));
243
+ console.log();
244
+ }
245
+ export async function downCommand() {
246
+ const composePath = join(STACK_DIR, 'docker-compose.yml');
247
+ if (!existsSync(composePath)) {
248
+ console.log(chalk.yellow(`\n ⚠ No stack found at ${STACK_DIR} — nothing to stop.`));
249
+ console.log(chalk.dim(' (Repo-clone stacks are stopped with ') + chalk.cyan('pnpm docker:down') + chalk.dim(' from the clone.)\n'));
250
+ return;
251
+ }
252
+ const down = spawnSync('docker', composeArgs(['down']), { stdio: 'inherit' });
253
+ if (down.status === 0) {
254
+ console.log(chalk.green('\n ✓ Stack stopped') + chalk.dim(` — data volume ${VOLUME_NAME} is preserved\n`));
255
+ }
256
+ }
257
+ //# sourceMappingURL=up.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"up.js","sourceRoot":"","sources":["../../src/commands/up.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=up.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"up.test.d.ts","sourceRoot":"","sources":["../../src/commands/up.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,70 @@
1
+ import { describe, it } from 'node:test';
2
+ import assert from 'node:assert/strict';
3
+ import { ensureStackEnvContent, readEnvValue, renderStackCompose, DEFAULT_IMAGE_REPO } from './up.js';
4
+ describe('renderStackCompose', () => {
5
+ const compose = renderStackCompose(`${DEFAULT_IMAGE_REPO}:2.3.0`);
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\.0\}/);
8
+ assert.doesNotMatch(compose, /build:/);
9
+ });
10
+ it('mounts the stack-local schema and env file', () => {
11
+ assert.match(compose, /\.\/schema\.sql:\/docker-entrypoint-initdb\.d\/001_schema\.sql/);
12
+ assert.match(compose, /- \.\/\.env/);
13
+ });
14
+ it('keeps ports bound to localhost by default and reuses the shared data volume', () => {
15
+ assert.match(compose, /POSTGRES_BIND_HOST:-127\.0\.0\.1/);
16
+ assert.match(compose, /PERCEPTION_BIND_HOST:-127\.0\.0\.1/);
17
+ assert.match(compose, /name: robrain_postgres_data/);
18
+ });
19
+ });
20
+ describe('ensureStackEnvContent', () => {
21
+ it('generates secrets and a matching DATABASE_URL on first creation', () => {
22
+ const { content, generated } = ensureStackEnvContent(null, {});
23
+ const password = readEnvValue(content, 'POSTGRES_PASSWORD');
24
+ const key = readEnvValue(content, 'PERCEPTION_API_KEY');
25
+ assert.match(password, /^[0-9a-f]{64}$/);
26
+ assert.match(key, /^[0-9a-f]{64}$/);
27
+ assert.equal(readEnvValue(content, 'DATABASE_URL'), `postgres://robrain:${password}@localhost:5432/robrain`);
28
+ assert.ok(generated.includes('POSTGRES_PASSWORD'));
29
+ assert.ok(generated.includes('PERCEPTION_API_KEY'));
30
+ });
31
+ it('seeds provider keys from the environment on first creation', () => {
32
+ const { content, generated } = ensureStackEnvContent(null, {
33
+ ANTHROPIC_API_KEY: 'sk-ant-test',
34
+ EMBEDDING_PROVIDER: 'voyage',
35
+ VOYAGE_API_KEY: 'pa-test',
36
+ });
37
+ assert.equal(readEnvValue(content, 'ANTHROPIC_API_KEY'), 'sk-ant-test');
38
+ assert.equal(readEnvValue(content, 'EMBEDDING_PROVIDER'), 'voyage');
39
+ assert.equal(readEnvValue(content, 'VOYAGE_API_KEY'), 'pa-test');
40
+ assert.ok(generated.includes('ANTHROPIC_API_KEY'));
41
+ });
42
+ it('never overwrites existing non-empty values', () => {
43
+ const first = ensureStackEnvContent(null, {}).content;
44
+ const second = ensureStackEnvContent(first, { ANTHROPIC_API_KEY: 'sk-ant-late' });
45
+ assert.equal(second.content, first);
46
+ assert.equal(second.generated.length, 0);
47
+ });
48
+ it('fills blank secrets and rewrites a CHANGE_ME DATABASE_URL in an existing file', () => {
49
+ const existing = [
50
+ 'POSTGRES_PASSWORD=',
51
+ 'PERCEPTION_API_KEY=CHANGE_ME',
52
+ 'DATABASE_URL=postgres://robrain:CHANGE_ME@localhost:5432/robrain',
53
+ 'ANTHROPIC_API_KEY=sk-ant-kept',
54
+ ].join('\n');
55
+ const { content, generated } = ensureStackEnvContent(existing, {});
56
+ const password = readEnvValue(content, 'POSTGRES_PASSWORD');
57
+ assert.match(password, /^[0-9a-f]{64}$/);
58
+ assert.match(readEnvValue(content, 'PERCEPTION_API_KEY'), /^[0-9a-f]{64}$/);
59
+ assert.equal(readEnvValue(content, 'DATABASE_URL'), `postgres://robrain:${password}@localhost:5432/robrain`);
60
+ assert.equal(readEnvValue(content, 'ANTHROPIC_API_KEY'), 'sk-ant-kept');
61
+ assert.deepEqual(generated.sort(), ['DATABASE_URL', 'PERCEPTION_API_KEY', 'POSTGRES_PASSWORD']);
62
+ });
63
+ it('appends missing secret keys to an existing file', () => {
64
+ const { content, generated } = ensureStackEnvContent('ANTHROPIC_API_KEY=sk-ant-kept', {});
65
+ assert.match(readEnvValue(content, 'POSTGRES_PASSWORD'), /^[0-9a-f]{64}$/);
66
+ assert.match(readEnvValue(content, 'PERCEPTION_API_KEY'), /^[0-9a-f]{64}$/);
67
+ assert.ok(generated.includes('POSTGRES_PASSWORD'));
68
+ });
69
+ });
70
+ //# sourceMappingURL=up.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"up.test.js","sourceRoot":"","sources":["../../src/commands/up.test.ts"],"names":[],"mappings":"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"}