robrain 2.4.6 → 2.4.8

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 (77) hide show
  1. package/README.md +3 -0
  2. package/dist/commands/check.d.ts.map +1 -1
  3. package/dist/commands/check.js +6 -8
  4. package/dist/commands/check.js.map +1 -1
  5. package/dist/commands/explain.d.ts.map +1 -1
  6. package/dist/commands/explain.js +5 -8
  7. package/dist/commands/explain.js.map +1 -1
  8. package/dist/commands/export-interchange.d.ts.map +1 -1
  9. package/dist/commands/export-interchange.js +4 -9
  10. package/dist/commands/export-interchange.js.map +1 -1
  11. package/dist/commands/export-memory.d.ts.map +1 -1
  12. package/dist/commands/export-memory.js +4 -9
  13. package/dist/commands/export-memory.js.map +1 -1
  14. package/dist/commands/inject.d.ts.map +1 -1
  15. package/dist/commands/inject.js +5 -9
  16. package/dist/commands/inject.js.map +1 -1
  17. package/dist/commands/install.d.ts +7 -1
  18. package/dist/commands/install.d.ts.map +1 -1
  19. package/dist/commands/install.js +40 -3
  20. package/dist/commands/install.js.map +1 -1
  21. package/dist/commands/install.test.js +89 -0
  22. package/dist/commands/install.test.js.map +1 -1
  23. package/dist/commands/outcomes.d.ts.map +1 -1
  24. package/dist/commands/outcomes.js +5 -13
  25. package/dist/commands/outcomes.js.map +1 -1
  26. package/dist/commands/review.d.ts.map +1 -1
  27. package/dist/commands/review.js +4 -5
  28. package/dist/commands/review.js.map +1 -1
  29. package/dist/commands/status.d.ts +20 -0
  30. package/dist/commands/status.d.ts.map +1 -1
  31. package/dist/commands/status.js +87 -29
  32. package/dist/commands/status.js.map +1 -1
  33. package/dist/commands/status.test.d.ts +2 -0
  34. package/dist/commands/status.test.d.ts.map +1 -0
  35. package/dist/commands/status.test.js +201 -0
  36. package/dist/commands/status.test.js.map +1 -0
  37. package/dist/commands/synth.d.ts.map +1 -1
  38. package/dist/commands/synth.js +54 -15
  39. package/dist/commands/synth.js.map +1 -1
  40. package/dist/commands/synth.test.d.ts +2 -0
  41. package/dist/commands/synth.test.d.ts.map +1 -0
  42. package/dist/commands/synth.test.js +161 -0
  43. package/dist/commands/synth.test.js.map +1 -0
  44. package/dist/index.js +1 -1
  45. package/dist/lib/auth.d.ts +30 -2
  46. package/dist/lib/auth.d.ts.map +1 -1
  47. package/dist/lib/auth.js +45 -5
  48. package/dist/lib/auth.js.map +1 -1
  49. package/dist/lib/auth.test.d.ts +2 -0
  50. package/dist/lib/auth.test.d.ts.map +1 -0
  51. package/dist/lib/auth.test.js +46 -0
  52. package/dist/lib/auth.test.js.map +1 -0
  53. package/dist/lib/config.d.ts +7 -0
  54. package/dist/lib/config.d.ts.map +1 -1
  55. package/dist/lib/config.js +12 -0
  56. package/dist/lib/config.js.map +1 -1
  57. package/dist/lib/load-env.d.ts +9 -0
  58. package/dist/lib/load-env.d.ts.map +1 -1
  59. package/dist/lib/load-env.js +13 -2
  60. package/dist/lib/load-env.js.map +1 -1
  61. package/dist/lib/perception-errors.d.ts +33 -0
  62. package/dist/lib/perception-errors.d.ts.map +1 -0
  63. package/dist/lib/perception-errors.js +104 -0
  64. package/dist/lib/perception-errors.js.map +1 -0
  65. package/dist/lib/perception-errors.test.d.ts +2 -0
  66. package/dist/lib/perception-errors.test.d.ts.map +1 -0
  67. package/dist/lib/perception-errors.test.js +64 -0
  68. package/dist/lib/perception-errors.test.js.map +1 -0
  69. package/dist/lib/project.d.ts +9 -0
  70. package/dist/lib/project.d.ts.map +1 -1
  71. package/dist/lib/project.js +17 -9
  72. package/dist/lib/project.js.map +1 -1
  73. package/package.json +2 -2
  74. package/vendor/sensing-mcp/dist/index.js +1 -1
  75. package/vendor/sensing-mcp/package.json +1 -1
  76. package/vendor/synthesis/dist/index.js +10 -1
  77. package/vendor/synthesis/package.json +1 -1
@@ -2,8 +2,73 @@
2
2
  // robrain status — shows current state of the memory system
3
3
  import chalk from 'chalk';
4
4
  import { readConfig, isAuthenticated } from '../lib/config.js';
5
- import { gatherProjectInfo } from '../lib/project.js';
5
+ import { findPinnedProjectId, gatherProjectInfo } from '../lib/project.js';
6
6
  import { cwd } from 'process';
7
+ export async function lookUpRegistration(config, projectId) {
8
+ if (!config.perceptionUrl)
9
+ return { reachable: false, state: 'unknown' };
10
+ try {
11
+ const health = await fetch(`${config.perceptionUrl}/health`);
12
+ if (!health.ok)
13
+ return { reachable: false, state: 'unknown' };
14
+ }
15
+ catch {
16
+ return { reachable: false, state: 'unknown' };
17
+ }
18
+ try {
19
+ const res = await fetch(`${config.perceptionUrl}/projects`, {
20
+ headers: config.perceptionKey ? { Authorization: `Bearer ${config.perceptionKey}` } : {},
21
+ });
22
+ // /health is deliberately unauthenticated, so a bad key reaches us here as
23
+ // a healthy store that rejects the read — actionable, unlike plain unknown.
24
+ if (res.status === 401 || res.status === 403)
25
+ return { reachable: true, state: 'auth_failed' };
26
+ if (!res.ok)
27
+ return { reachable: true, state: 'unknown' };
28
+ const data = await res.json();
29
+ // Only a well-formed list can prove absence. An unexpected shape (a cloud
30
+ // API that answers differently) must not read as "your project is gone" —
31
+ // that sends someone to re-init a project that already exists.
32
+ if (!Array.isArray(data.projects))
33
+ return { reachable: true, state: 'unknown' };
34
+ const row = data.projects.find(p => p.id === projectId);
35
+ if (!row)
36
+ return { reachable: true, state: 'unregistered' };
37
+ return { reachable: true, state: 'registered', decisions: row.decision_count };
38
+ }
39
+ catch {
40
+ return { reachable: true, state: 'unknown' };
41
+ }
42
+ }
43
+ /** One-line state for the `Memory:` row. Any follow-up goes in registrationHint. */
44
+ export function describeRegistration(reg) {
45
+ if (reg.state === 'registered') {
46
+ const n = reg.decisions;
47
+ if (typeof n !== 'number')
48
+ return chalk.green('registered');
49
+ // 0 on a registered project is the silent-Sensing tell — call it out.
50
+ return chalk.green('registered') + chalk.dim(' · ')
51
+ + (n === 0 ? chalk.yellow('0 decisions') : `${n} decisions`);
52
+ }
53
+ if (reg.state === 'unregistered') {
54
+ return chalk.yellow('not registered') + chalk.dim(' — nothing is stored for this directory yet');
55
+ }
56
+ if (reg.state === 'auth_failed') {
57
+ return chalk.yellow('unknown') + chalk.dim(' — the memory store rejected this API key');
58
+ }
59
+ return chalk.dim('unknown — could not reach the memory store');
60
+ }
61
+ /**
62
+ * Remediation for the row above, printed on its own line: hand-aligning a
63
+ * continuation inside the value wraps badly in narrow terminals.
64
+ */
65
+ export function registrationHint(reg) {
66
+ if (reg.state === 'unregistered')
67
+ return 'Run `npx robrain init-project` from a project root.';
68
+ if (reg.state === 'auth_failed')
69
+ return 'Re-run `npx robrain install` to refresh credentials.';
70
+ return null;
71
+ }
7
72
  export async function statusCommand() {
8
73
  console.log();
9
74
  if (!isAuthenticated()) {
@@ -23,39 +88,32 @@ export async function statusCommand() {
23
88
  console.log(chalk.dim(' Embeddings: ') + (config.thin
24
89
  ? 'cloud (server-side)'
25
90
  : (config.embeddingProvider ?? 'not set')));
91
+ // Look up registration BEFORE printing the project block. "Current project:
92
+ // <id>" is computed locally (see below) and says nothing about whether that
93
+ // project exists — printing it bare reads as membership we never checked,
94
+ // which makes a clean uninstall look like a failed one.
95
+ const registration = await lookUpRegistration(config, info.id);
96
+ // The id is derived from the directory path unless an editor file pins one,
97
+ // so it is stable across reinstalls (and identical on two machines with the
98
+ // same path). Naming the exact source heads off "why is this the same id I
99
+ // had before I deleted everything?".
100
+ const pinned = findPinnedProjectId(cwd());
101
+ const idSource = pinned?.id === info.id
102
+ ? `pinned in ${pinned.source}`
103
+ : 'derived from this directory path';
26
104
  console.log();
27
105
  console.log(chalk.dim(' Current project'));
28
106
  console.log(chalk.dim(' ├ Name: ') + info.name);
29
- console.log(chalk.dim(' └ ID: ') + info.id);
107
+ console.log(chalk.dim(' ├ ID: ') + info.id + chalk.dim(` (${idSource})`));
108
+ console.log(chalk.dim(' └ Memory: ') + describeRegistration(registration));
109
+ const hint = registrationHint(registration);
110
+ if (hint)
111
+ console.log(chalk.dim(' ') + hint);
30
112
  console.log();
31
- // Ping Perception for live stats + decision count for this project (helps spot silent Sensing)
32
113
  if (config.perceptionUrl) {
33
- try {
34
- const res = await fetch(`${config.perceptionUrl}/health`);
35
- if (res.ok) {
36
- console.log(chalk.dim(' Perception: ') + chalk.green('● connected'));
37
- }
38
- else {
39
- console.log(chalk.dim(' Perception: ') + chalk.yellow('○ unreachable'));
40
- }
41
- try {
42
- const pr = await fetch(`${config.perceptionUrl}/projects`, {
43
- headers: config.perceptionKey ? { Authorization: `Bearer ${config.perceptionKey}` } : {},
44
- });
45
- if (pr.ok) {
46
- const data = await pr.json();
47
- const row = data.projects?.find(p => p.id === info.id);
48
- const n = row?.decision_count;
49
- if (typeof n === 'number') {
50
- console.log(chalk.dim(' Decisions: ') + (n === 0 ? chalk.yellow(String(n)) : String(n)) + chalk.dim(` (active rows for project ${info.id})`));
51
- }
52
- }
53
- }
54
- catch { /* ignore count */ }
55
- }
56
- catch {
57
- console.log(chalk.dim(' Perception: ') + chalk.yellow('○ unreachable'));
58
- }
114
+ console.log(chalk.dim(' Perception: ') + (registration.reachable
115
+ ? chalk.green('● connected')
116
+ : chalk.yellow('○ unreachable')));
59
117
  }
60
118
  if (config.planningUrl) {
61
119
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=status.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.test.d.ts","sourceRoot":"","sources":["../../src/commands/status.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,201 @@
1
+ import { mkdtempSync, mkdirSync, realpathSync, rmSync, writeFileSync } from 'node:fs';
2
+ import { createServer } from 'node:http';
3
+ import { tmpdir } from 'node:os';
4
+ import { join } from 'node:path';
5
+ import { after, describe, it } from 'node:test';
6
+ import assert from 'node:assert/strict';
7
+ // config.ts resolves homedir() at import time — pin a hermetic HOME before the
8
+ // dynamic imports, so the integration test below owns ~/.robrain/config.json.
9
+ const fakeHome = mkdtempSync(join(tmpdir(), 'robrain-status-'));
10
+ process.env.HOME = fakeHome;
11
+ process.env.FORCE_COLOR = '0';
12
+ mkdirSync(join(fakeHome, '.robrain'), { recursive: true });
13
+ const { lookUpRegistration, describeRegistration, registrationHint, statusCommand } = await import('./status.js');
14
+ const { deriveProjectId } = await import('../lib/project.js');
15
+ /**
16
+ * Stub Perception. `projects` is what GET /projects returns; `null` = 500,
17
+ * `'401'` = an authenticated store rejecting the key (health stays OK, as it
18
+ * is unauthenticated by design).
19
+ */
20
+ async function withStub(projects, run) {
21
+ const server = createServer((req, res) => {
22
+ res.setHeader('content-type', 'application/json');
23
+ if (req.url === '/health') {
24
+ res.end('{"status":"ok"}');
25
+ return;
26
+ }
27
+ if (req.url?.startsWith('/projects')) {
28
+ if (projects === '401') {
29
+ res.statusCode = 401;
30
+ res.end('{"error":"Unauthorized"}');
31
+ return;
32
+ }
33
+ if (projects === null) {
34
+ res.statusCode = 500;
35
+ res.end('{}');
36
+ return;
37
+ }
38
+ if (projects === 'bad-shape') {
39
+ res.end('{"data":{"items":[]}}');
40
+ return;
41
+ }
42
+ res.end(JSON.stringify({ projects }));
43
+ return;
44
+ }
45
+ res.statusCode = 404;
46
+ res.end('{}');
47
+ });
48
+ await new Promise(resolve => server.listen(0, '127.0.0.1', resolve));
49
+ server.unref();
50
+ const address = server.address();
51
+ assert.ok(address && typeof address === 'object');
52
+ try {
53
+ await run(`http://127.0.0.1:${address.port}`);
54
+ }
55
+ finally {
56
+ server.closeAllConnections();
57
+ await new Promise(resolve => server.close(() => resolve()));
58
+ }
59
+ }
60
+ const originalCwd = process.cwd();
61
+ after(() => {
62
+ process.chdir(originalCwd);
63
+ rmSync(fakeHome, { recursive: true, force: true });
64
+ });
65
+ describe('status — project registration lookup', () => {
66
+ it('reports a registered project with its decision count', async () => {
67
+ await withStub([{ id: 'abc123', decision_count: 12 }], async (baseUrl) => {
68
+ const reg = await lookUpRegistration({ perceptionUrl: baseUrl }, 'abc123');
69
+ assert.deepEqual(reg, { reachable: true, state: 'registered', decisions: 12 });
70
+ });
71
+ });
72
+ it('reports unregistered when this directory has no project row', async () => {
73
+ // Radu's case: a clean install, init-project skipped, `status` run in a
74
+ // directory whose id is only ever derived from the path.
75
+ await withStub([{ id: 'someone-else', decision_count: 3 }], async (baseUrl) => {
76
+ const reg = await lookUpRegistration({ perceptionUrl: baseUrl }, 'abc123');
77
+ assert.deepEqual(reg, { reachable: true, state: 'unregistered' });
78
+ });
79
+ });
80
+ it('says unknown — never "unregistered" — when the store cannot be reached', async () => {
81
+ // Claiming a project is missing because the API is down would send people
82
+ // off to re-init a project that already exists.
83
+ const reg = await lookUpRegistration({ perceptionUrl: 'http://127.0.0.1:1' }, 'abc123');
84
+ assert.equal(reg.state, 'unknown');
85
+ assert.equal(reg.reachable, false);
86
+ });
87
+ it('says unknown when the projects endpoint errors but health is fine', async () => {
88
+ await withStub(null, async (baseUrl) => {
89
+ const reg = await lookUpRegistration({ perceptionUrl: baseUrl }, 'abc123');
90
+ assert.deepEqual(reg, { reachable: true, state: 'unknown' });
91
+ });
92
+ });
93
+ it('says unknown — not unregistered — when the response shape is unexpected', async () => {
94
+ // Absence is only provable from a well-formed list. A differently-shaped
95
+ // response (e.g. a cloud API that answers another way) previously landed
96
+ // on `unregistered`, which tells a user with a live project to re-init it.
97
+ await withStub('bad-shape', async (baseUrl) => {
98
+ const reg = await lookUpRegistration({ perceptionUrl: baseUrl }, 'abc123');
99
+ assert.deepEqual(reg, { reachable: true, state: 'unknown' });
100
+ });
101
+ });
102
+ it('says unknown with no Perception configured at all', async () => {
103
+ const reg = await lookUpRegistration({}, 'abc123');
104
+ assert.deepEqual(reg, { reachable: false, state: 'unknown' });
105
+ });
106
+ });
107
+ describe('status — how registration reads', () => {
108
+ it('points an unregistered directory at init-project', () => {
109
+ const reg = { reachable: true, state: 'unregistered' };
110
+ assert.match(describeRegistration(reg), /not registered/);
111
+ assert.match(String(registrationHint(reg)), /npx robrain init-project/);
112
+ });
113
+ it('flags a registered project with zero decisions (the silent-Sensing tell)', () => {
114
+ const text = describeRegistration({ reachable: true, state: 'registered', decisions: 0 });
115
+ assert.match(text, /registered/);
116
+ assert.match(text, /0 decisions/);
117
+ });
118
+ it('never tells the user to init-project when the answer is unknown', () => {
119
+ const reg = { reachable: false, state: 'unknown' };
120
+ assert.match(describeRegistration(reg), /unknown/);
121
+ assert.equal(registrationHint(reg), null);
122
+ });
123
+ it('distinguishes a rejected API key from a store it could not reach', async () => {
124
+ await withStub('401', async (baseUrl) => {
125
+ const reg = await lookUpRegistration({ perceptionUrl: baseUrl, perceptionKey: 'wrong' }, 'abc123');
126
+ assert.deepEqual(reg, { reachable: true, state: 'auth_failed' });
127
+ assert.match(describeRegistration(reg), /rejected this API key/);
128
+ assert.match(String(registrationHint(reg)), /robrain install/);
129
+ // Must not read as "your project is gone".
130
+ assert.doesNotMatch(describeRegistration(reg), /not registered/);
131
+ });
132
+ });
133
+ });
134
+ /** Run statusCommand in `dir` with console captured. */
135
+ async function runStatus(dir) {
136
+ const lines = [];
137
+ const { log } = console;
138
+ console.log = (...args) => { lines.push(args.join(' ')); };
139
+ process.chdir(dir);
140
+ try {
141
+ await statusCommand();
142
+ }
143
+ finally {
144
+ console.log = log;
145
+ process.chdir(originalCwd);
146
+ }
147
+ return lines.join('\n');
148
+ }
149
+ describe('status — rendered output', () => {
150
+ it('reports a registered project with its count, and names the id source', async () => {
151
+ // realpath: on macOS mkdtemp hands back /var/... while cwd() reports the
152
+ // resolved /private/var/... — the id is a hash of the path, so it must be
153
+ // derived from the same string statusCommand will see.
154
+ const projectDir = realpathSync(mkdtempSync(join(tmpdir(), 'robrain-status-proj-')));
155
+ const id = deriveProjectId(projectDir);
156
+ await withStub([{ id, decision_count: 7 }], async (baseUrl) => {
157
+ writeFileSync(join(fakeHome, '.robrain', 'config.json'), JSON.stringify({
158
+ selfHosted: true, perceptionUrl: baseUrl, installedAt: '2026-07-25T00:00:00Z',
159
+ }));
160
+ const out = await runStatus(projectDir);
161
+ assert.match(out, new RegExp(`ID:\\s+${id}`));
162
+ assert.match(out, /derived from this directory path/);
163
+ assert.match(out, /Memory:\s+registered · 7 decisions/);
164
+ assert.doesNotMatch(out, /init-project/);
165
+ });
166
+ rmSync(projectDir, { recursive: true, force: true });
167
+ });
168
+ it('says a directory is not registered instead of implying membership', async () => {
169
+ // The report that prompted this: clean install, init-project skipped, and
170
+ // `status` still looked like the user was inside a live project.
171
+ const projectDir = mkdtempSync(join(tmpdir(), 'robrain-status-unreg-'));
172
+ await withStub([], async (baseUrl) => {
173
+ writeFileSync(join(fakeHome, '.robrain', 'config.json'), JSON.stringify({
174
+ selfHosted: true, perceptionUrl: baseUrl, installedAt: '2026-07-25T00:00:00Z',
175
+ }));
176
+ const out = await runStatus(projectDir);
177
+ assert.match(out, /Memory:\s+not registered/);
178
+ assert.match(out, /npx robrain init-project/);
179
+ assert.doesNotMatch(out, /registered ·/); // no decision count for a project that isn't there
180
+ });
181
+ rmSync(projectDir, { recursive: true, force: true });
182
+ });
183
+ it('names the exact editor file when one pins the id', async () => {
184
+ // init-project writes three files; the Cursor rule is the easy one to
185
+ // forget, so the hint must name whichever actually supplied the id.
186
+ const projectDir = mkdtempSync(join(tmpdir(), 'robrain-status-pinned-'));
187
+ mkdirSync(join(projectDir, '.cursor', 'rules'), { recursive: true });
188
+ writeFileSync(join(projectDir, '.cursor', 'rules', 'robrain.mdc'), '<!-- robrain -->\nsensing_start_session(project_id="pinned123abc")\n<!-- /robrain -->\n');
189
+ await withStub([], async (baseUrl) => {
190
+ writeFileSync(join(fakeHome, '.robrain', 'config.json'), JSON.stringify({
191
+ selfHosted: true, perceptionUrl: baseUrl, installedAt: '2026-07-25T00:00:00Z',
192
+ }));
193
+ const out = await runStatus(projectDir);
194
+ assert.match(out, /ID:\s+pinned123abc/);
195
+ assert.match(out, /pinned in \.cursor\/rules\/robrain\.mdc/);
196
+ assert.doesNotMatch(out, /derived from this directory path/);
197
+ });
198
+ rmSync(projectDir, { recursive: true, force: true });
199
+ });
200
+ });
201
+ //# sourceMappingURL=status.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.test.js","sourceRoot":"","sources":["../../src/commands/status.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACrF,OAAO,EAAE,YAAY,EAAe,MAAM,WAAW,CAAA;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAA;AAC/C,OAAO,MAAM,MAAM,oBAAoB,CAAA;AAEvC,+EAA+E;AAC/E,8EAA8E;AAC9E,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,iBAAiB,CAAC,CAAC,CAAA;AAC/D,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,QAAQ,CAAA;AAC3B,OAAO,CAAC,GAAG,CAAC,WAAW,GAAG,GAAG,CAAA;AAC7B,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;AAE1D,MAAM,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAA;AACjH,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAA;AAE7D;;;;GAIG;AACH,KAAK,UAAU,QAAQ,CACrB,QAAqF,EACrF,GAAuC;IAEvC,MAAM,MAAM,GAAW,YAAY,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC/C,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAA;QACjD,IAAI,GAAG,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;YAAC,GAAG,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;YAAC,OAAM;QAAC,CAAC;QACjE,IAAI,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YACrC,IAAI,QAAQ,KAAK,KAAK,EAAQ,CAAC;gBAAC,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;gBAAC,GAAG,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;gBAAC,OAAM;YAAC,CAAC;YACnG,IAAI,QAAQ,KAAK,IAAI,EAAS,CAAC;gBAAC,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;gBAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAAC,OAAM;YAAC,CAAC;YAC7E,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;gBAAC,GAAG,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;gBAAC,OAAM;YAAC,CAAC;YAC1E,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAA;YACrC,OAAM;QACR,CAAC;QACD,GAAG,CAAC,UAAU,GAAG,GAAG,CAAA;QACpB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IACf,CAAC,CAAC,CAAA;IACF,MAAM,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC,CAAA;IAC1E,MAAM,CAAC,KAAK,EAAE,CAAA;IACd,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,CAAA;IAChC,MAAM,CAAC,EAAE,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAA;IACjD,IAAI,CAAC;QACH,MAAM,GAAG,CAAC,oBAAoB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;IAC/C,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,mBAAmB,EAAE,CAAA;QAC5B,MAAM,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;IACnE,CAAC;AACH,CAAC;AAED,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;AACjC,KAAK,CAAC,GAAG,EAAE;IACT,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;IAC1B,MAAM,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;AACpD,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,sCAAsC,EAAE,GAAG,EAAE;IACpD,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;QACpE,MAAM,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAC,OAAO,EAAC,EAAE;YACrE,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAA;YAC1E,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAA;QAChF,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;QAC3E,wEAAwE;QACxE,yDAAyD;QACzD,MAAM,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAC,OAAO,EAAC,EAAE;YAC1E,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAA;YAC1E,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAA;QACnE,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,wEAAwE,EAAE,KAAK,IAAI,EAAE;QACtF,0EAA0E;QAC1E,gDAAgD;QAChD,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,EAAE,aAAa,EAAE,oBAAoB,EAAE,EAAE,QAAQ,CAAC,CAAA;QACvF,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;QAClC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;IACpC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;QACjF,MAAM,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAC,OAAO,EAAC,EAAE;YACnC,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAA;YAC1E,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAA;QAC9D,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,yEAAyE,EAAE,KAAK,IAAI,EAAE;QACvF,yEAAyE;QACzE,yEAAyE;QACzE,2EAA2E;QAC3E,MAAM,QAAQ,CAAC,WAAW,EAAE,KAAK,EAAC,OAAO,EAAC,EAAE;YAC1C,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAA;YAC1E,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAA;QAC9D,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;QACjE,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAA;QAClD,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAA;IAC/D,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;IAC/C,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,GAAG,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,EAAW,CAAA;QAC/D,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,GAAG,CAAC,EAAE,gBAAgB,CAAC,CAAA;QACzD,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,EAAE,0BAA0B,CAAC,CAAA;IACzE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,0EAA0E,EAAE,GAAG,EAAE;QAClF,MAAM,IAAI,GAAG,oBAAoB,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAA;QACzF,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,YAAY,CAAC,CAAA;QAChC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,aAAa,CAAC,CAAA;IACnC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;QACzE,MAAM,GAAG,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAW,CAAA;QAC3D,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,CAAA;QAClD,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAA;IAC3C,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,kEAAkE,EAAE,KAAK,IAAI,EAAE;QAChF,MAAM,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAC,OAAO,EAAC,EAAE;YACpC,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAA;YAClG,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAA;YAChE,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,GAAG,CAAC,EAAE,uBAAuB,CAAC,CAAA;YAChE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAA;YAC9D,2CAA2C;YAC3C,MAAM,CAAC,YAAY,CAAC,oBAAoB,CAAC,GAAG,CAAC,EAAE,gBAAgB,CAAC,CAAA;QAClE,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,wDAAwD;AACxD,KAAK,UAAU,SAAS,CAAC,GAAW;IAClC,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAA;IACvB,OAAO,CAAC,GAAG,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA,CAAC,CAAC,CAAA;IACpE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAClB,IAAI,CAAC;QACH,MAAM,aAAa,EAAE,CAAA;IACvB,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,GAAG,GAAG,GAAG,CAAA;QACjB,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;IAC5B,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC;AAED,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACxC,EAAE,CAAC,sEAAsE,EAAE,KAAK,IAAI,EAAE;QACpF,yEAAyE;QACzE,0EAA0E;QAC1E,uDAAuD;QACvD,MAAM,UAAU,GAAG,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,sBAAsB,CAAC,CAAC,CAAC,CAAA;QACpF,MAAM,EAAE,GAAG,eAAe,CAAC,UAAU,CAAC,CAAA;QACtC,MAAM,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,cAAc,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAC,OAAO,EAAC,EAAE;YAC1D,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,aAAa,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC;gBACtE,UAAU,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,WAAW,EAAE,sBAAsB;aAC9E,CAAC,CAAC,CAAA;YAEH,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,UAAU,CAAC,CAAA;YAEvC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAA;YAC7C,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,kCAAkC,CAAC,CAAA;YACrD,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAA;YACvD,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,cAAc,CAAC,CAAA;QAC1C,CAAC,CAAC,CAAA;QACF,MAAM,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IACtD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;QACjF,0EAA0E;QAC1E,iEAAiE;QACjE,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,uBAAuB,CAAC,CAAC,CAAA;QACvE,MAAM,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAC,OAAO,EAAC,EAAE;YACjC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,aAAa,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC;gBACtE,UAAU,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,WAAW,EAAE,sBAAsB;aAC9E,CAAC,CAAC,CAAA;YAEH,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,UAAU,CAAC,CAAA;YAEvC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,0BAA0B,CAAC,CAAA;YAC7C,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,0BAA0B,CAAC,CAAA;YAC7C,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,cAAc,CAAC,CAAA,CAAG,mDAAmD;QAChG,CAAC,CAAC,CAAA;QACF,MAAM,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IACtD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;QAChE,sEAAsE;QACtE,oEAAoE;QACpE,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,wBAAwB,CAAC,CAAC,CAAA;QACxE,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QACpE,aAAa,CACX,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,CAAC,EACnD,yFAAyF,CAC1F,CAAA;QACD,MAAM,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAC,OAAO,EAAC,EAAE;YACjC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,aAAa,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC;gBACtE,UAAU,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,WAAW,EAAE,sBAAsB;aAC9E,CAAC,CAAC,CAAA;YAEH,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,UAAU,CAAC,CAAA;YAEvC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAA;YACvC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,yCAAyC,CAAC,CAAA;YAC5D,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,kCAAkC,CAAC,CAAA;QAC9D,CAAC,CAAC,CAAA;QACF,MAAM,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IACtD,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"synth.d.ts","sourceRoot":"","sources":["../../src/commands/synth.ts"],"names":[],"mappings":"AAuBA,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,2FAA2F;IAC3F,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAiDpE"}
1
+ {"version":3,"file":"synth.d.ts","sourceRoot":"","sources":["../../src/commands/synth.ts"],"names":[],"mappings":"AAwBA,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,2FAA2F;IAC3F,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAsFpE"}
@@ -11,7 +11,8 @@ import { existsSync } from 'fs';
11
11
  import { dirname, join } from 'path';
12
12
  import { fileURLToPath } from 'url';
13
13
  import chalk from 'chalk';
14
- import { applyStackEnvFallback } from '../lib/load-env.js';
14
+ import { isCloudInstall } from '../lib/config.js';
15
+ import { applyEnvFileFallback, applyStackEnvFallback } from '../lib/load-env.js';
15
16
  import { resolveSynthesisEntry, SynthesisResolveError } from '../lib/synthesis-bundle.js';
16
17
  /** Absolute path to this CLI's `bin/robrain.js` (checkout or published layout). */
17
18
  function resolveCliBin() {
@@ -19,18 +20,6 @@ function resolveCliBin() {
19
20
  return existsSync(candidate) ? candidate : undefined;
20
21
  }
21
22
  export async function synthCommand(opts) {
22
- let resolved;
23
- try {
24
- resolved = resolveSynthesisEntry();
25
- }
26
- catch (err) {
27
- if (err instanceof SynthesisResolveError) {
28
- console.error(chalk.red(`✗ robrain synth: ${err.message}`));
29
- process.exitCode = 1;
30
- return;
31
- }
32
- throw err;
33
- }
34
23
  const env = { ...process.env };
35
24
  // Env precedence for the child, lowest to highest — two deliberate layers:
36
25
  // 1. ~/.robrain/stack/.env (filled here, gaps only — `robrain up` output)
@@ -41,6 +30,50 @@ export async function synthCommand(opts) {
41
30
  // The CLI-side shell-wins vs shared .env-wins split is a recorded decision,
42
31
  // not drift — don't "unify" these.
43
32
  applyStackEnvFallback(env);
33
+ // Resolve before deciding: a resolved checkout's `.env` is a store the child
34
+ // would find via its own loadEnv, so it has to count as "there is a local
35
+ // store" — otherwise we decline work that would have succeeded. Errors are
36
+ // held, not thrown: on a cloud install "no local Synthesis" is the expected
37
+ // state, and the message below beats a resolution failure.
38
+ let resolved;
39
+ let resolveError;
40
+ try {
41
+ resolved = resolveSynthesisEntry();
42
+ }
43
+ catch (err) {
44
+ if (!(err instanceof SynthesisResolveError))
45
+ throw err;
46
+ resolveError = err;
47
+ }
48
+ if (resolved?.repoRoot)
49
+ applyEnvFileFallback(env, join(resolved.repoRoot, '.env'));
50
+ // Synthesis is a batch job that opens the decision store directly — there is
51
+ // no local store on a cloud install, and judgment already runs server-side.
52
+ // Without this the spawned bundle dies on `Missing env var: DATABASE_URL`,
53
+ // which reads like a broken install rather than "this command isn't yours".
54
+ //
55
+ // A reachable DATABASE_URL overrides the install mode on purpose: a stale
56
+ // cloud token (logged in once, never `logout`) must not talk someone out of
57
+ // running the pass over a store they demonstrably have. Config decides only
58
+ // when there is no store to point at.
59
+ if (isCloudInstall() && !env.DATABASE_URL) {
60
+ console.log();
61
+ console.log(chalk.yellow(' Synthesis runs server-side on Rory Plans cloud — nothing to run locally.'));
62
+ console.log(chalk.dim(' Its results reach you the same way as everything else: the always-on'));
63
+ console.log(chalk.dim(' summary at session start, and ') + chalk.cyan('npx robrain review') + chalk.dim('.'));
64
+ console.log();
65
+ console.log(chalk.dim(' Self-hosting instead? Start your stack with ') + chalk.cyan('npx robrain up')
66
+ + chalk.dim(' (or set DATABASE_URL).'));
67
+ console.log(chalk.dim(' Seeing this after switching off cloud? The install still holds a Rory'));
68
+ console.log(chalk.dim(' token — ') + chalk.cyan('npx robrain logout') + chalk.dim(' clears it.'));
69
+ console.log();
70
+ return;
71
+ }
72
+ if (resolveError || !resolved) {
73
+ console.error(chalk.red(`✗ robrain synth: ${resolveError?.message ?? 'could not resolve the Synthesis bundle.'}`));
74
+ process.exitCode = 1;
75
+ return;
76
+ }
44
77
  if (opts.dryRun)
45
78
  env.SYNTHESIS_DRY_RUN = 'true';
46
79
  if (opts.full)
@@ -65,9 +98,15 @@ export async function synthCommand(opts) {
65
98
  stdio: 'inherit',
66
99
  env,
67
100
  });
68
- await new Promise((res, rej) => {
101
+ // The child inherits stdio, so it has already printed whatever went wrong —
102
+ // rethrowing here just stacks a second (useless) Node trace on top of it.
103
+ const code = await new Promise((res, rej) => {
69
104
  child.on('error', rej);
70
- child.on('exit', code => code === 0 ? res() : rej(new Error(`synthesis exited with code ${code}`)));
105
+ child.on('exit', c => res(c ?? 1));
71
106
  });
107
+ if (code !== 0) {
108
+ console.error(chalk.red(`\n✗ Synthesis failed (exit ${code}) — see the error above.`));
109
+ process.exitCode = code;
110
+ }
72
111
  }
73
112
  //# sourceMappingURL=synth.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"synth.js","sourceRoot":"","sources":["../../src/commands/synth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"synth.js","sourceRoot":"","sources":["../../src/commands/synth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=synth.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"synth.test.d.ts","sourceRoot":"","sources":["../../src/commands/synth.test.ts"],"names":[],"mappings":""}