@productbrain/cli 0.1.0-beta.11381 → 0.1.0-beta.11395
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/__tests__/adminConfig.test.js +3 -3
- package/dist/__tests__/adminConfig.test.js.map +1 -1
- package/dist/__tests__/config.test.js +24 -0
- package/dist/__tests__/config.test.js.map +1 -1
- package/dist/__tests__/constants.test.js +13 -4
- package/dist/__tests__/constants.test.js.map +1 -1
- package/dist/__tests__/init.test.js +77 -13
- package/dist/__tests__/init.test.js.map +1 -1
- package/dist/__tests__/session-hook-conversation.test.d.ts +2 -0
- package/dist/__tests__/session-hook-conversation.test.d.ts.map +1 -0
- package/dist/__tests__/session-hook-conversation.test.js +87 -0
- package/dist/__tests__/session-hook-conversation.test.js.map +1 -0
- package/dist/__tests__/upgrade-runner.test.js +44 -18
- package/dist/__tests__/upgrade-runner.test.js.map +1 -1
- package/dist/commands/connect-config.test.js +1 -6
- package/dist/commands/connect-config.test.js.map +1 -1
- package/dist/commands/connect-integration.test.js +4 -3
- package/dist/commands/connect-integration.test.js.map +1 -1
- package/dist/commands/connect-redeem-failure.test.js +0 -1
- package/dist/commands/connect-redeem-failure.test.js.map +1 -1
- package/dist/commands/connect-screens.d.ts +9 -22
- package/dist/commands/connect-screens.d.ts.map +1 -1
- package/dist/commands/connect-screens.js +17 -70
- package/dist/commands/connect-screens.js.map +1 -1
- package/dist/commands/connect-screens.test.js +6 -5
- package/dist/commands/connect-screens.test.js.map +1 -1
- package/dist/commands/connect-seal.test.js +0 -1
- package/dist/commands/connect-seal.test.js.map +1 -1
- package/dist/commands/connect.d.ts +2 -3
- package/dist/commands/connect.d.ts.map +1 -1
- package/dist/commands/connect.js +18 -25
- package/dist/commands/connect.js.map +1 -1
- package/dist/commands/connect.test.js +21 -2
- package/dist/commands/connect.test.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +7 -4
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/doctor.test.js +21 -17
- package/dist/commands/doctor.test.js.map +1 -1
- package/dist/commands/init.d.ts +8 -2
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +105 -61
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/session-hook.d.ts +38 -0
- package/dist/commands/session-hook.d.ts.map +1 -0
- package/dist/commands/session-hook.js +94 -0
- package/dist/commands/session-hook.js.map +1 -0
- package/dist/commands/session-hook.test.d.ts +2 -0
- package/dist/commands/session-hook.test.d.ts.map +1 -0
- package/dist/commands/session-hook.test.js +89 -0
- package/dist/commands/session-hook.test.js.map +1 -0
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +6 -6
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/upgrade.js +9 -9
- package/dist/commands/upgrade.js.map +1 -1
- package/dist/commands/welcome.d.ts.map +1 -1
- package/dist/commands/welcome.js +2 -1
- package/dist/commands/welcome.js.map +1 -1
- package/dist/commands/whoami.d.ts.map +1 -1
- package/dist/commands/whoami.js +2 -1
- package/dist/commands/whoami.js.map +1 -1
- package/dist/index.js +8 -18
- package/dist/index.js.map +1 -1
- package/dist/lib/adminConfig.d.ts.map +1 -1
- package/dist/lib/adminConfig.js +3 -7
- package/dist/lib/adminConfig.js.map +1 -1
- package/dist/lib/cliFirstRun.d.ts +16 -0
- package/dist/lib/cliFirstRun.d.ts.map +1 -0
- package/dist/lib/cliFirstRun.js +19 -0
- package/dist/lib/cliFirstRun.js.map +1 -0
- package/dist/lib/config.d.ts +4 -4
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +12 -77
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/configResult.d.ts +8 -0
- package/dist/lib/configResult.d.ts.map +1 -1
- package/dist/lib/configResult.js +21 -11
- package/dist/lib/configResult.js.map +1 -1
- package/dist/lib/constants.d.ts +4 -2
- package/dist/lib/constants.d.ts.map +1 -1
- package/dist/lib/constants.js +6 -2
- package/dist/lib/constants.js.map +1 -1
- package/dist/lib/conversation.d.ts +10 -0
- package/dist/lib/conversation.d.ts.map +1 -1
- package/dist/lib/conversation.js +66 -0
- package/dist/lib/conversation.js.map +1 -1
- package/dist/lib/projectConfig.d.ts +9 -0
- package/dist/lib/projectConfig.d.ts.map +1 -1
- package/dist/lib/projectConfig.js +27 -1
- package/dist/lib/projectConfig.js.map +1 -1
- package/dist/lib/upgrade-runner.d.ts +20 -4
- package/dist/lib/upgrade-runner.d.ts.map +1 -1
- package/dist/lib/upgrade-runner.js +67 -32
- package/dist/lib/upgrade-runner.js.map +1 -1
- package/package.json +1 -1
- package/dist/commands/__tests__/connect-handoff.test.d.ts +0 -11
- package/dist/commands/__tests__/connect-handoff.test.d.ts.map +0 -1
- package/dist/commands/__tests__/connect-handoff.test.js +0 -111
- package/dist/commands/__tests__/connect-handoff.test.js.map +0 -1
- package/dist/commands/connect-handoff.d.ts +0 -51
- package/dist/commands/connect-handoff.d.ts.map +0 -1
- package/dist/commands/connect-handoff.js +0 -70
- package/dist/commands/connect-handoff.js.map +0 -1
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// GENERATED by scripts/generate-mcp-embedded-copies.mjs from kernel/governance/cliFirstRun.ts.
|
|
2
|
+
// DO NOT EDIT. Run `npm run mcp:embedded-copies` to regenerate.
|
|
3
|
+
// Local runtime copy for the isolated connector build.
|
|
4
|
+
/**
|
|
5
|
+
* The terminal first run, declared once (TASK-562, WP-861, TEN-1923, RULE-664, RULE-657): install pb,
|
|
6
|
+
* connect in the project folder, then init. A new person on a machine without pb reads these lines.
|
|
7
|
+
*
|
|
8
|
+
* Readers: the connect-token mint (convex/auth/connectTokens.ts) and the pb CLI through its
|
|
9
|
+
* generated copy packages/cli/src/lib/cliFirstRun.ts (scripts/generate-mcp-embedded-copies.mjs,
|
|
10
|
+
* DEC-1481). Zero imports, so the generator copies it verbatim.
|
|
11
|
+
*/
|
|
12
|
+
/** The one install line. `engines.node` in packages/cli/package.json is the Node floor it needs. */
|
|
13
|
+
export const CLI_INSTALL_COMMAND = 'npm install -g @productbrain/cli@beta';
|
|
14
|
+
/** The step after connect: it writes the session hooks that open a briefed session (DEC-1926). */
|
|
15
|
+
export const CLI_INIT_COMMAND = 'pb init';
|
|
16
|
+
/** A connect token lives this long and works once (FEAT-958). */
|
|
17
|
+
export const CONNECT_TOKEN_TTL_MINUTES = 15;
|
|
18
|
+
export const CONNECT_TOKEN_TTL_MS = CONNECT_TOKEN_TTL_MINUTES * 60 * 1000;
|
|
19
|
+
//# sourceMappingURL=cliFirstRun.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cliFirstRun.js","sourceRoot":"","sources":["../../src/lib/cliFirstRun.ts"],"names":[],"mappings":"AAAA,+FAA+F;AAC/F,gEAAgE;AAChE,uDAAuD;AAEvD;;;;;;;GAOG;AAEH,oGAAoG;AACpG,MAAM,CAAC,MAAM,mBAAmB,GAAG,uCAAuC,CAAC;AAE3E,kGAAkG;AAClG,MAAM,CAAC,MAAM,gBAAgB,GAAG,SAAS,CAAC;AAE1C,iEAAiE;AACjE,MAAM,CAAC,MAAM,yBAAyB,GAAG,EAAE,CAAC;AAC5C,MAAM,CAAC,MAAM,oBAAoB,GAAG,yBAAyB,GAAG,EAAE,GAAG,IAAI,CAAC"}
|
package/dist/lib/config.d.ts
CHANGED
|
@@ -149,10 +149,10 @@ export type Config = {
|
|
|
149
149
|
*/
|
|
150
150
|
export declare function getConfigSafe(): ConfigResult;
|
|
151
151
|
/**
|
|
152
|
-
* Get config
|
|
153
|
-
*
|
|
154
|
-
*
|
|
152
|
+
* Get config for a command that needs auth. TASK-562: the paste-a-key guided flow is deleted; a
|
|
153
|
+
* missing key throws the same missing-key sentence as getConfig, in a TTY too (connect, never paste).
|
|
154
|
+
* The retry callback and the null return stay for the ~30 callers; nothing retries any more.
|
|
155
155
|
*/
|
|
156
|
-
export declare function getConfigOrGuide(
|
|
156
|
+
export declare function getConfigOrGuide(_retry: () => Promise<void>): Promise<Config | null>;
|
|
157
157
|
export { HOME_CONFIG_DIR, HOME_ENV_PATH };
|
|
158
158
|
//# sourceMappingURL=config.d.ts.map
|
package/dist/lib/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAWH,OAAO,EAML,KAAK,YAAY,EACjB,KAAK,cAAc,EACpB,MAAM,mBAAmB,CAAC;AAE3B,QAAA,MAAM,eAAe,QAAgD,CAAC;AACtE,QAAA,MAAM,aAAa,QAAmC,CAAC;AASvD,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACtG,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEtH;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,IAAI;IAAE,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,IAAI,CAO3E;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAY7E;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG,WAAW,GAAG,aAAa,GAAG,WAAW,CAAC;AAExF;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,4BAA4B,IAAI,iBAAiB,CAiDhE;AAED,uEAAuE;AACvE,MAAM,MAAM,sBAAsB,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;AAErF;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,IAAI;IAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,EAAE,sBAAsB,CAAA;CAAE,CAapG;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,aAAa,CAAC,YAAY,UAAQ,GAAG,cAAc,CAsFlE;AAyDD,2DAA2D;AAC3D,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC;AAED,wBAAgB,SAAS,IAAI;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CA4B/D;AAED,MAAM,MAAM,MAAM,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,aAAa,IAAI,YAAY,CAE5C;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAE1F;AAMD,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,CAAC"}
|
package/dist/lib/config.js
CHANGED
|
@@ -26,13 +26,10 @@ import { resolveProfileConfig, resolveNamedProfileConfig, getGlobalActiveProfile
|
|
|
26
26
|
import { findProjectRoot, readBoundPreviewKey, readLocalProjectConfig } from './projectConfig.js';
|
|
27
27
|
import { declaresCompletePreviewBinding, refuseWhenProjectHasNoTenant, resolveLocalBinding, resolvePinnedProfile } from './localBinding.js';
|
|
28
28
|
import { CLIError, ErrorCode } from './errors.js';
|
|
29
|
-
import {
|
|
30
|
-
import { isInsecureSiteUrl, pickSiteUrl, resolveConfigResult, } from './configResult.js';
|
|
29
|
+
import { isInsecureSiteUrl, missingKeyError, pickSiteUrl, resolveConfigResult, } from './configResult.js';
|
|
31
30
|
const HOME_CONFIG_DIR = resolve(homedir(), '.config', 'productbrain');
|
|
32
31
|
const HOME_ENV_PATH = resolve(HOME_CONFIG_DIR, '.env');
|
|
33
32
|
const CWD_ENV_PATHS = ['.env.mcp', 'packages/mcp-server/.env.mcp', '.env'];
|
|
34
|
-
// Short error when not TTY (scripts/pipes must not hang)
|
|
35
|
-
const NON_TTY_MESSAGE = 'No API key. Set PRODUCTBRAIN_API_KEY or run pb login.';
|
|
36
33
|
/** Track whether env has been loaded to avoid redundant file reads. */
|
|
37
34
|
let envLoaded = false;
|
|
38
35
|
// Re-exported so callers keep importing the repo-config readers from here (they are part of
|
|
@@ -331,66 +328,18 @@ function loadEnv() {
|
|
|
331
328
|
export function resetConfigCache() {
|
|
332
329
|
envLoaded = false;
|
|
333
330
|
}
|
|
334
|
-
/**
|
|
335
|
-
* Guided flow when key is missing (TTY only). Per docs/cli-unauthenticated-user-journey.md.
|
|
336
|
-
* Returns true if we saved and ran retry; false if user said No (caller should exit).
|
|
337
|
-
*/
|
|
338
|
-
async function runGuidedFlow(retry) {
|
|
339
|
-
const hasKey = await promptConfirm({
|
|
340
|
-
message: 'Do you have an API key from Product Brain?',
|
|
341
|
-
initialValue: false,
|
|
342
|
-
});
|
|
343
|
-
if (!hasKey) {
|
|
344
|
-
console.log('Get your key: Product Brain app → Settings → API Keys. Then run: pb login');
|
|
345
|
-
process.exit(0);
|
|
346
|
-
}
|
|
347
|
-
let apiKey = await promptPassword({
|
|
348
|
-
message: `Paste your API key (${API_KEY_PREFIX}...)`,
|
|
349
|
-
validate: (v) => (!v ? 'Key is required' : undefined),
|
|
350
|
-
});
|
|
351
|
-
if (!apiKey.startsWith(API_KEY_PREFIX)) {
|
|
352
|
-
console.log(`Key must start with ${API_KEY_PREFIX}. Try again or run pb login.`);
|
|
353
|
-
apiKey = await promptPassword({
|
|
354
|
-
message: `Paste your API key (${API_KEY_PREFIX}...)`,
|
|
355
|
-
validate: (v) => (!v || !v.startsWith(API_KEY_PREFIX) ? `Key must start with ${API_KEY_PREFIX}` : undefined),
|
|
356
|
-
});
|
|
357
|
-
}
|
|
358
|
-
if (!apiKey || !apiKey.startsWith(API_KEY_PREFIX)) {
|
|
359
|
-
console.log('Get your key: Product Brain app → Settings → API Keys. Then run: pb login');
|
|
360
|
-
process.exit(0);
|
|
361
|
-
}
|
|
362
|
-
// Save as a named profile via the profile system
|
|
363
|
-
const { createProfile, getActiveProfile } = await import('./profiles.js');
|
|
364
|
-
const profileName = getActiveProfile() || 'default';
|
|
365
|
-
try {
|
|
366
|
-
createProfile(profileName, apiKey, DEFAULT_SITE_URL.replace(/\/$/, ''));
|
|
367
|
-
}
|
|
368
|
-
catch {
|
|
369
|
-
// Profile already exists — fall back to legacy path
|
|
370
|
-
const content = [
|
|
371
|
-
`# Product Brain CLI — saved by guided setup`,
|
|
372
|
-
`PRODUCTBRAIN_API_KEY=${apiKey}`,
|
|
373
|
-
`CONVEX_SITE_URL=${DEFAULT_SITE_URL.replace(/\/$/, '')}`,
|
|
374
|
-
'',
|
|
375
|
-
].join('\n');
|
|
376
|
-
mkdirSync(HOME_CONFIG_DIR, { recursive: true });
|
|
377
|
-
writeFileSync(HOME_ENV_PATH, content, { mode: 0o600 });
|
|
378
|
-
}
|
|
379
|
-
process.env.PRODUCTBRAIN_API_KEY = apiKey;
|
|
380
|
-
process.env.CONVEX_SITE_URL = DEFAULT_SITE_URL.replace(/\/$/, '');
|
|
381
|
-
console.log('Saved your key. Running your command…\n');
|
|
382
|
-
await retry();
|
|
383
|
-
return true;
|
|
384
|
-
}
|
|
385
331
|
export function getConfig() {
|
|
386
332
|
loadEnv();
|
|
387
333
|
const apiKey = process.env.PRODUCTBRAIN_API_KEY ?? '';
|
|
388
334
|
const siteUrl = (process.env.CONVEX_SITE_URL ?? DEFAULT_SITE_URL).replace(/\/$/, '');
|
|
389
|
-
|
|
390
|
-
|
|
335
|
+
// TASK-562: no key throws the one missing-key sentence getConfigSafe reports (configResult.ts).
|
|
336
|
+
if (!apiKey)
|
|
337
|
+
throw missingKeyError();
|
|
338
|
+
if (!apiKey.startsWith(API_KEY_PREFIX)) {
|
|
339
|
+
throw new CLIError(`The API key in use is not a ${API_KEY_PREFIX} key.`, {
|
|
391
340
|
code: ErrorCode.AUTH_MISSING,
|
|
392
341
|
category: 'auth',
|
|
393
|
-
guidance: '
|
|
342
|
+
guidance: 'Run `pb doctor` to see which source supplied it.',
|
|
394
343
|
});
|
|
395
344
|
}
|
|
396
345
|
if (isInsecureSiteUrl(siteUrl)) {
|
|
@@ -424,26 +373,12 @@ export function getConfigSafe() {
|
|
|
424
373
|
return resolveConfigResult(resolveConfig);
|
|
425
374
|
}
|
|
426
375
|
/**
|
|
427
|
-
* Get config
|
|
428
|
-
*
|
|
429
|
-
*
|
|
376
|
+
* Get config for a command that needs auth. TASK-562: the paste-a-key guided flow is deleted; a
|
|
377
|
+
* missing key throws the same missing-key sentence as getConfig, in a TTY too (connect, never paste).
|
|
378
|
+
* The retry callback and the null return stay for the ~30 callers; nothing retries any more.
|
|
430
379
|
*/
|
|
431
|
-
export async function getConfigOrGuide(
|
|
432
|
-
|
|
433
|
-
const apiKey = process.env.PRODUCTBRAIN_API_KEY ?? '';
|
|
434
|
-
const siteUrl = (process.env.CONVEX_SITE_URL ?? DEFAULT_SITE_URL).replace(/\/$/, '');
|
|
435
|
-
if (apiKey.startsWith(API_KEY_PREFIX) && !isInsecureSiteUrl(siteUrl)) {
|
|
436
|
-
return { apiKey, siteUrl };
|
|
437
|
-
}
|
|
438
|
-
if (!process.stdin.isTTY) {
|
|
439
|
-
throw new CLIError(NON_TTY_MESSAGE, {
|
|
440
|
-
code: ErrorCode.AUTH_MISSING,
|
|
441
|
-
category: 'auth',
|
|
442
|
-
guidance: 'Set PRODUCTBRAIN_API_KEY or run `pb login`.',
|
|
443
|
-
});
|
|
444
|
-
}
|
|
445
|
-
const didRetry = await runGuidedFlow(retry);
|
|
446
|
-
return didRetry ? null : null;
|
|
380
|
+
export async function getConfigOrGuide(_retry) {
|
|
381
|
+
return getConfig();
|
|
447
382
|
}
|
|
448
383
|
// resolveAdminConfig() lives in adminConfig.ts (WP-681: split out to stay under the 500-LOC
|
|
449
384
|
// budget). NOT re-exported here — that would be a circular import (adminConfig.ts imports
|
package/dist/lib/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -99,4 +99,12 @@ export declare class ConfigResolutionError extends CLIError {
|
|
|
99
99
|
}
|
|
100
100
|
/** Convert a throwing resolution cascade into the single diagnostic contract. */
|
|
101
101
|
export declare function resolveConfigResult(resolveConfig: () => ResolvedConfig): ConfigResult;
|
|
102
|
+
/**
|
|
103
|
+
* TASK-562 (RULE-657): the one no-key next step. getConfigSafe reports it and getConfig /
|
|
104
|
+
* getConfigOrGuide throw it, so every surface says connect in the project folder, never paste a key.
|
|
105
|
+
*/
|
|
106
|
+
export declare function missingKeyResult(): Extract<ConfigResult, {
|
|
107
|
+
ok: false;
|
|
108
|
+
}>;
|
|
109
|
+
export declare function missingKeyError(): CLIError;
|
|
102
110
|
//# sourceMappingURL=configResult.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configResult.d.ts","sourceRoot":"","sources":["../../src/lib/configResult.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAGtE,OAAO,EAAE,QAAQ,EAAa,KAAK,aAAa,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAG3F,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,SAAS,GAAG,SAAS,GAAG,KAAK,GAAG,SAAS,CAAC;AAE7E;;;;;;;GAOG;AACH,MAAM,MAAM,aAAa,GACrB,KAAK,GACL,eAAe,GACf,aAAa,GACb,SAAS,GACT,QAAQ,GACR,KAAK,GACL,SAAS,CAAC;AAEd,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,YAAY,CAAC;IACrB;;;;OAIG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CACzB,UAAU,EAAE,aAAa,CAAC,SAAS,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,GAC/E;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,aAAa,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,CAK3E;AAED,MAAM,MAAM,iBAAiB,GACzB,aAAa,GACb,aAAa,GACb,aAAa,GACb,aAAa,GACb,iBAAiB,GACjB,aAAa,GACb,SAAS,CAAC;AAEd,MAAM,MAAM,YAAY;AACtB;;;;;;;;GAQG;AACD;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,YAAY,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GACzF;IACE,EAAE,EAAE,KAAK,CAAC;IACV,IAAI,EAAE,iBAAiB,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;kGAC8F;IAC9F,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB,CAAC;AA0EN;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED,0FAA0F;AAC1F,qBAAa,qBAAsB,SAAQ,QAAQ;IACjD,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;gBAG3B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;QACP,IAAI,EAAE,iBAAiB,CAAC;QACxB,WAAW,EAAE,MAAM,CAAC;QACpB,IAAI,CAAC,EAAE,cAAc,CAAC;QACtB,QAAQ,CAAC,EAAE,aAAa,CAAC;QACzB,QAAQ,EAAE,MAAM,CAAC;KAClB;CAOJ;AAED,iFAAiF;AACjF,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,MAAM,cAAc,GAAG,YAAY,
|
|
1
|
+
{"version":3,"file":"configResult.d.ts","sourceRoot":"","sources":["../../src/lib/configResult.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAGtE,OAAO,EAAE,QAAQ,EAAa,KAAK,aAAa,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAG3F,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,SAAS,GAAG,SAAS,GAAG,KAAK,GAAG,SAAS,CAAC;AAE7E;;;;;;;GAOG;AACH,MAAM,MAAM,aAAa,GACrB,KAAK,GACL,eAAe,GACf,aAAa,GACb,SAAS,GACT,QAAQ,GACR,KAAK,GACL,SAAS,CAAC;AAEd,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,YAAY,CAAC;IACrB;;;;OAIG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CACzB,UAAU,EAAE,aAAa,CAAC,SAAS,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,GAC/E;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,aAAa,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,CAK3E;AAED,MAAM,MAAM,iBAAiB,GACzB,aAAa,GACb,aAAa,GACb,aAAa,GACb,aAAa,GACb,iBAAiB,GACjB,aAAa,GACb,SAAS,CAAC;AAEd,MAAM,MAAM,YAAY;AACtB;;;;;;;;GAQG;AACD;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,YAAY,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GACzF;IACE,EAAE,EAAE,KAAK,CAAC;IACV,IAAI,EAAE,iBAAiB,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;kGAC8F;IAC9F,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB,CAAC;AA0EN;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED,0FAA0F;AAC1F,qBAAa,qBAAsB,SAAQ,QAAQ;IACjD,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;gBAG3B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;QACP,IAAI,EAAE,iBAAiB,CAAC;QACxB,WAAW,EAAE,MAAM,CAAC;QACpB,IAAI,CAAC,EAAE,cAAc,CAAC;QACtB,QAAQ,CAAC,EAAE,aAAa,CAAC;QACzB,QAAQ,EAAE,MAAM,CAAC;KAClB;CAOJ;AAED,iFAAiF;AACjF,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,MAAM,cAAc,GAAG,YAAY,CAiErF;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,CAAC,YAAY,EAAE;IAAE,EAAE,EAAE,KAAK,CAAA;CAAE,CAAC,CAQvE;AAED,wBAAgB,eAAe,IAAI,QAAQ,CAG1C"}
|
package/dist/lib/configResult.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/** Structured, non-throwing view of the CLI configuration cascade. */
|
|
2
|
-
import { DEFAULT_SITE_URL, isDevMode } from './constants.js';
|
|
3
|
-
import { CLIError } from './errors.js';
|
|
2
|
+
import { CONNECT_FIRST_STEP, DEFAULT_SITE_URL, connectPointer, isDevMode } from './constants.js';
|
|
3
|
+
import { CLIError, ErrorCode } from './errors.js';
|
|
4
4
|
import { API_KEY_PREFIX } from './tokenConstants.js';
|
|
5
5
|
/**
|
|
6
6
|
* Pick the first present siteUrl candidate and record which one won, so the URL and its
|
|
@@ -128,15 +128,8 @@ export function resolveConfigResult(resolveConfig) {
|
|
|
128
128
|
nextCommand: 'pb doctor',
|
|
129
129
|
};
|
|
130
130
|
}
|
|
131
|
-
if (!resolved.apiKey)
|
|
132
|
-
return
|
|
133
|
-
ok: false,
|
|
134
|
-
kind: 'missing-key',
|
|
135
|
-
reason: 'No API key configured.',
|
|
136
|
-
guidance: 'Run `pb login` to configure your API key, or set PRODUCTBRAIN_API_KEY.',
|
|
137
|
-
nextCommand: 'pb login',
|
|
138
|
-
};
|
|
139
|
-
}
|
|
131
|
+
if (!resolved.apiKey)
|
|
132
|
+
return missingKeyResult();
|
|
140
133
|
if (!resolved.apiKey.startsWith(API_KEY_PREFIX)) {
|
|
141
134
|
// `source` IS the credential's origin by definition, so it can be named without hedging.
|
|
142
135
|
// An exported key wins step 1 of the cascade, which `pb login` cannot outrank: login
|
|
@@ -176,4 +169,21 @@ export function resolveConfigResult(resolveConfig) {
|
|
|
176
169
|
}
|
|
177
170
|
return { ok: true, ...resolved, apiKey: resolved.apiKey };
|
|
178
171
|
}
|
|
172
|
+
/**
|
|
173
|
+
* TASK-562 (RULE-657): the one no-key next step. getConfigSafe reports it and getConfig /
|
|
174
|
+
* getConfigOrGuide throw it, so every surface says connect in the project folder, never paste a key.
|
|
175
|
+
*/
|
|
176
|
+
export function missingKeyResult() {
|
|
177
|
+
return {
|
|
178
|
+
ok: false,
|
|
179
|
+
kind: 'missing-key',
|
|
180
|
+
reason: 'No API key configured.',
|
|
181
|
+
guidance: `Run ${CONNECT_FIRST_STEP} in your project folder. ${connectPointer()}`,
|
|
182
|
+
nextCommand: CONNECT_FIRST_STEP,
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
export function missingKeyError() {
|
|
186
|
+
const { reason, guidance } = missingKeyResult();
|
|
187
|
+
return new CLIError(reason, { code: ErrorCode.AUTH_MISSING, category: 'auth', guidance });
|
|
188
|
+
}
|
|
179
189
|
//# sourceMappingURL=configResult.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configResult.js","sourceRoot":"","sources":["../../src/lib/configResult.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAEtE,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"configResult.js","sourceRoot":"","sources":["../../src/lib/configResult.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/constants.d.ts
CHANGED
|
@@ -4,8 +4,6 @@
|
|
|
4
4
|
*/
|
|
5
5
|
/** Production Convex HTTP Actions endpoint. */
|
|
6
6
|
export declare const DEFAULT_SITE_URL = "https://gateway.productbrain.io";
|
|
7
|
-
/** Canonical self-upgrade command. WP-425 fixes the stale @latest dist-tag trap. */
|
|
8
|
-
export declare const UPGRADE_COMMAND = "npm install -g @productbrain/cli@beta";
|
|
9
7
|
/** Where every published pb release is listed, printed once after an upgrade (TEN-4860). No
|
|
10
8
|
* changelog exists yet and the repository is private, so this is the public npm versions page. */
|
|
11
9
|
export declare const CLI_RELEASES_URL = "https://www.npmjs.com/package/@productbrain/cli?activeTab=versions";
|
|
@@ -44,6 +42,10 @@ export declare function resolveConnectRedeemUrl(cliGateway?: string): string;
|
|
|
44
42
|
* - PB_ENV=production or unset → work.productbrain.io
|
|
45
43
|
*/
|
|
46
44
|
export declare function resolveAppUrl(): string;
|
|
45
|
+
/** TASK-562 (TEN-1923): every no-key first step names connect in the project folder, never a key paste. */
|
|
46
|
+
export declare const CONNECT_FIRST_STEP = "pb connect <token>";
|
|
47
|
+
/** Where a person without a key gets a connect command: the app page that mints one (RULE-662). */
|
|
48
|
+
export declare function connectPointer(): string;
|
|
47
49
|
/** Whether the CLI is running in dev mode. */
|
|
48
50
|
export declare function isDevMode(): boolean;
|
|
49
51
|
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/lib/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,+CAA+C;AAC/C,eAAO,MAAM,gBAAgB,oCAAoC,CAAC;AAElE
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/lib/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,+CAA+C;AAC/C,eAAO,MAAM,gBAAgB,oCAAoC,CAAC;AAElE;mGACmG;AACnG,eAAO,MAAM,gBAAgB,uEAAuE,CAAC;AAiBrG;;;;;;;GAOG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAIvC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAQnE;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAMtC;AAED,2GAA2G;AAC3G,eAAO,MAAM,kBAAkB,uBAAuB,CAAC;AAEvD,mGAAmG;AACnG,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,8CAA8C;AAC9C,wBAAgB,SAAS,IAAI,OAAO,CAEnC"}
|
package/dist/lib/constants.js
CHANGED
|
@@ -4,8 +4,6 @@
|
|
|
4
4
|
*/
|
|
5
5
|
/** Production Convex HTTP Actions endpoint. */
|
|
6
6
|
export const DEFAULT_SITE_URL = 'https://gateway.productbrain.io';
|
|
7
|
-
/** Canonical self-upgrade command. WP-425 fixes the stale @latest dist-tag trap. */
|
|
8
|
-
export const UPGRADE_COMMAND = 'npm install -g @productbrain/cli@beta';
|
|
9
7
|
/** Where every published pb release is listed, printed once after an upgrade (TEN-4860). No
|
|
10
8
|
* changelog exists yet and the repository is private, so this is the public npm versions page. */
|
|
11
9
|
export const CLI_RELEASES_URL = 'https://www.npmjs.com/package/@productbrain/cli?activeTab=versions';
|
|
@@ -79,6 +77,12 @@ export function resolveAppUrl() {
|
|
|
79
77
|
return DEV_APP_URL;
|
|
80
78
|
return PROD_APP_URL;
|
|
81
79
|
}
|
|
80
|
+
/** TASK-562 (TEN-1923): every no-key first step names connect in the project folder, never a key paste. */
|
|
81
|
+
export const CONNECT_FIRST_STEP = 'pb connect <token>';
|
|
82
|
+
/** Where a person without a key gets a connect command: the app page that mints one (RULE-662). */
|
|
83
|
+
export function connectPointer() {
|
|
84
|
+
return `Get your connect command at ${resolveAppUrl()}/settings/api-keys.`;
|
|
85
|
+
}
|
|
82
86
|
/** Whether the CLI is running in dev mode. */
|
|
83
87
|
export function isDevMode() {
|
|
84
88
|
return process.env.PB_ENV?.toLowerCase() === 'dev';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/lib/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,+CAA+C;AAC/C,MAAM,CAAC,MAAM,gBAAgB,GAAG,iCAAiC,CAAC;AAElE
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/lib/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,+CAA+C;AAC/C,MAAM,CAAC,MAAM,gBAAgB,GAAG,iCAAiC,CAAC;AAElE;mGACmG;AACnG,MAAM,CAAC,MAAM,gBAAgB,GAAG,oEAAoE,CAAC;AAErG,iHAAiH;AAEjH,8BAA8B;AAC9B,MAAM,YAAY,GAAG,8BAA8B,CAAC;AAEpD;;;;GAIG;AACH,MAAM,YAAY,GAAG,uBAAuB,CAAC;AAE7C,yBAAyB;AACzB,MAAM,WAAW,GAAG,uBAAuB,CAAC;AAE5C;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc;IAC5B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC;IAC9C,IAAI,GAAG,KAAK,KAAK;QAAE,OAAO,YAAY,CAAC;IACvC,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,uBAAuB,CAAC,UAAmB;IACzD,MAAM,OAAO,GAAG,UAAU,EAAE,IAAI,EAAE,CAAC;IACnC,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,IAAI,EAAE,CAAC;IAC3D,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC/C,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC;IACvD,IAAI,UAAU;QAAE,OAAO,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACrD,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa;IAC3B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC;IAChD,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACjD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC;IAC9C,IAAI,GAAG,KAAK,KAAK;QAAE,OAAO,WAAW,CAAC;IACtC,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,2GAA2G;AAC3G,MAAM,CAAC,MAAM,kBAAkB,GAAG,oBAAoB,CAAC;AAEvD,mGAAmG;AACnG,MAAM,UAAU,cAAc;IAC5B,OAAO,+BAA+B,aAAa,EAAE,qBAAqB,CAAC;AAC7E,CAAC;AAED,8CAA8C;AAC9C,MAAM,UAAU,SAAS;IACvB,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,KAAK,CAAC;AACrD,CAAC"}
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
* Priority order (harness findings: INS-2122, founder-run tests 2026-07-10):
|
|
11
11
|
* 1. explicit override (CLI `--conversation` flag on `pb session start`) — the manual seam.
|
|
12
12
|
* 2. `PB_CONVERSATION_ID` — the universal seam any harness adapter can set.
|
|
13
|
+
* 2b. the hook input's session_id, read by `--hook` (TASK-562, readHookConversationId below).
|
|
13
14
|
* 3. `CLAUDE_CODE_SESSION_ID` — present in Claude Code 2.1.206+ Bash shells (version-dependent,
|
|
14
15
|
* treat as detected, never asserted).
|
|
15
16
|
* 4. `CURSOR_CONVERSATION_ID` — confirmed live in cursor-agent 2026.07.01 shell env.
|
|
@@ -18,6 +19,15 @@
|
|
|
18
19
|
* `/`, so normalization (below) always hashes it — no special-casing needed here.
|
|
19
20
|
* 6. none of the above → `null` (legacy shared-marker path).
|
|
20
21
|
*/
|
|
22
|
+
/**
|
|
23
|
+
* Reads fd 0 to EOF. fd 0 can already be non-blocking: any earlier touch of `process.stdin` makes it
|
|
24
|
+
* so, and then input that arrives late reads EAGAIN (Reviewer F2 on #1937). EAGAIN waits 20 ms and
|
|
25
|
+
* reads again, up to `deadlineMs`, so a late hook input is read whole and a hook never hangs on it.
|
|
26
|
+
*/
|
|
27
|
+
export declare function readStdinFully(readSyncFn?: (fd: number, buf: Buffer) => number, deadlineMs?: number): string;
|
|
28
|
+
export declare function readHookConversationId(read?: () => string, stdinIsTty?: () => boolean): string | null;
|
|
29
|
+
/** What the env channels alone resolve, ignoring the hook input: whether a later bare pb call finds the same id. */
|
|
30
|
+
export declare function resolveEnvConversationId(): string | null;
|
|
21
31
|
/**
|
|
22
32
|
* Normalize a raw candidate conversation id into a value that is always safe to use as (a) a
|
|
23
33
|
* Convex join key and (b) a filesystem path segment. Never truncates (a `slice()` would collide
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation.d.ts","sourceRoot":"","sources":["../../src/lib/conversation.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"conversation.d.ts","sourceRoot":"","sources":["../../src/lib/conversation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAeH;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,UAAU,GAAE,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,MAA4D,EACrG,UAAU,SAAQ,GACjB,MAAM,CAkBR;AAED,wBAAgB,sBAAsB,CACpC,IAAI,GAAE,MAAM,MAA+B,EAE3C,UAAU,GAAE,MAAM,OAAyB,GAC1C,MAAM,GAAG,IAAI,CAWf;AAED,oHAAoH;AACpH,wBAAgB,wBAAwB,IAAI,MAAM,GAAG,IAAI,CAIxD;AAQD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAK3D;AAkBD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAIrF"}
|
package/dist/lib/conversation.js
CHANGED
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
* Priority order (harness findings: INS-2122, founder-run tests 2026-07-10):
|
|
11
11
|
* 1. explicit override (CLI `--conversation` flag on `pb session start`) — the manual seam.
|
|
12
12
|
* 2. `PB_CONVERSATION_ID` — the universal seam any harness adapter can set.
|
|
13
|
+
* 2b. the hook input's session_id, read by `--hook` (TASK-562, readHookConversationId below).
|
|
13
14
|
* 3. `CLAUDE_CODE_SESSION_ID` — present in Claude Code 2.1.206+ Bash shells (version-dependent,
|
|
14
15
|
* treat as detected, never asserted).
|
|
15
16
|
* 4. `CURSOR_CONVERSATION_ID` — confirmed live in cursor-agent 2026.07.01 shell env.
|
|
@@ -19,6 +20,70 @@
|
|
|
19
20
|
* 6. none of the above → `null` (legacy shared-marker path).
|
|
20
21
|
*/
|
|
21
22
|
import { createHash } from 'crypto';
|
|
23
|
+
import { readSync } from 'fs';
|
|
24
|
+
import { isatty } from 'tty';
|
|
25
|
+
/**
|
|
26
|
+
* TASK-562: a hook runner (Claude Code, Codex, Cursor) writes one JSON object on stdin that names the
|
|
27
|
+
* conversation (`session_id`, or `conversation_id`). `pb session start|close --hook` reads it once,
|
|
28
|
+
* here; it ranks right after PB_CONVERSATION_ID, so two concurrent conversations of one tool never
|
|
29
|
+
* share a marker and one SessionEnd cannot close the other's session. Only behind `--hook`: a bare
|
|
30
|
+
* read of stdin would block any command whose stdin is an open pipe.
|
|
31
|
+
*/
|
|
32
|
+
let hookConversationId = null;
|
|
33
|
+
/**
|
|
34
|
+
* Reads fd 0 to EOF. fd 0 can already be non-blocking: any earlier touch of `process.stdin` makes it
|
|
35
|
+
* so, and then input that arrives late reads EAGAIN (Reviewer F2 on #1937). EAGAIN waits 20 ms and
|
|
36
|
+
* reads again, up to `deadlineMs`, so a late hook input is read whole and a hook never hangs on it.
|
|
37
|
+
*/
|
|
38
|
+
export function readStdinFully(readSyncFn = (fd, buf) => readSync(fd, buf, 0, buf.length, null), deadlineMs = 5_000) {
|
|
39
|
+
const chunks = [];
|
|
40
|
+
const buf = Buffer.alloc(64 * 1024);
|
|
41
|
+
const nap = new Int32Array(new SharedArrayBuffer(4));
|
|
42
|
+
const until = Date.now() + deadlineMs;
|
|
43
|
+
for (;;) {
|
|
44
|
+
let n;
|
|
45
|
+
try {
|
|
46
|
+
n = readSyncFn(0, buf);
|
|
47
|
+
}
|
|
48
|
+
catch (e) {
|
|
49
|
+
if (e.code !== 'EAGAIN' || Date.now() >= until)
|
|
50
|
+
break;
|
|
51
|
+
Atomics.wait(nap, 0, 0, 20);
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
if (n === 0)
|
|
55
|
+
break;
|
|
56
|
+
chunks.push(Buffer.from(buf.subarray(0, n)));
|
|
57
|
+
}
|
|
58
|
+
return Buffer.concat(chunks).toString('utf8');
|
|
59
|
+
}
|
|
60
|
+
export function readHookConversationId(read = () => readStdinFully(),
|
|
61
|
+
// isatty(0), never `process.stdin.isTTY`: that getter opens fd 0 non-blocking (Reviewer F2).
|
|
62
|
+
stdinIsTty = () => isatty(0)) {
|
|
63
|
+
hookConversationId = null;
|
|
64
|
+
if (stdinIsTty())
|
|
65
|
+
return null;
|
|
66
|
+
try {
|
|
67
|
+
const input = JSON.parse(read());
|
|
68
|
+
const id = [input?.session_id, input?.conversation_id].find((v) => typeof v === 'string' && v.trim().length > 0);
|
|
69
|
+
hookConversationId = typeof id === 'string' ? id.trim() : null;
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
// No hook input, or not JSON: the env channels decide, as without --hook.
|
|
73
|
+
}
|
|
74
|
+
return hookConversationId;
|
|
75
|
+
}
|
|
76
|
+
/** What the env channels alone resolve, ignoring the hook input: whether a later bare pb call finds the same id. */
|
|
77
|
+
export function resolveEnvConversationId() {
|
|
78
|
+
const saved = hookConversationId;
|
|
79
|
+
hookConversationId = null;
|
|
80
|
+
try {
|
|
81
|
+
return resolveConversationId();
|
|
82
|
+
}
|
|
83
|
+
finally {
|
|
84
|
+
hookConversationId = saved;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
22
87
|
/** Above this raw length, or containing any char outside the join-key-safe set, hash instead. */
|
|
23
88
|
const MAX_RAW_LEN = 128;
|
|
24
89
|
/** Join-key-safe charset — also what's safe to use as a marker filename with no traversal risk. */
|
|
@@ -40,6 +105,7 @@ function pickRawConversationId(explicitOverride) {
|
|
|
40
105
|
const candidates = [
|
|
41
106
|
explicitOverride,
|
|
42
107
|
process.env.PB_CONVERSATION_ID,
|
|
108
|
+
hookConversationId,
|
|
43
109
|
process.env.CLAUDE_CODE_SESSION_ID,
|
|
44
110
|
process.env.CURSOR_CONVERSATION_ID,
|
|
45
111
|
process.env.CODEX_TUI_SESSION_LOG_PATH,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation.js","sourceRoot":"","sources":["../../src/lib/conversation.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"conversation.js","sourceRoot":"","sources":["../../src/lib/conversation.ts"],"names":[],"mappings":"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"}
|
|
@@ -108,6 +108,15 @@ export declare function readBoundPreviewKey(projectRoot: string, binding: Previe
|
|
|
108
108
|
* pb connect calls this before its redeem for the folder it is about to pin (WP-810).
|
|
109
109
|
*/
|
|
110
110
|
export declare function refuseTrackedPin(projectRoot: string): void;
|
|
111
|
+
/** The home folder is no project: a pin or hooks written there bind every folder under it (TASK-562). */
|
|
112
|
+
export declare function isHomeFolder(folder: string, home?: string): boolean;
|
|
113
|
+
/** The refusal pb connect gives in the home folder, pinned word for word by its test (RULE-662). */
|
|
114
|
+
export declare const HOME_FOLDER_REFUSAL = "Run pb connect in your project folder, not your home folder.";
|
|
115
|
+
/**
|
|
116
|
+
* TASK-562: a new terminal opens in the home folder, and a pin there binds every folder under it
|
|
117
|
+
* (findProjectRoot walks up to it). pb connect calls this before its redeem, so the token still works.
|
|
118
|
+
*/
|
|
119
|
+
export declare function refuseHomeFolder(folder: string): void;
|
|
111
120
|
/**
|
|
112
121
|
* Read .productbrain/config.local.json from the walked-up project root.
|
|
113
122
|
* Returns the machine-local pin (`profile`), the optional hand-added `role` (DEC-1961), and any
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projectConfig.d.ts","sourceRoot":"","sources":["../../src/lib/projectConfig.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AASH,+FAA+F;AAC/F,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,0FAA0F;IAC1F,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,uEAAuE;IACvE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wFAAwF;IACxF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,uFAAuF;IACvF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6FAA6F;IAC7F,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAgB/D;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAI7C;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,GAAG,IAAI,CASnF;AAQD;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;CACd;AAWD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CAYnI;AAKD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAY1D;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,IAAI,kBAAkB,GAAG,IAAI,CA6DlE"}
|
|
1
|
+
{"version":3,"file":"projectConfig.d.ts","sourceRoot":"","sources":["../../src/lib/projectConfig.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AASH,+FAA+F;AAC/F,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,0FAA0F;IAC1F,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,uEAAuE;IACvE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wFAAwF;IACxF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,uFAAuF;IACvF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6FAA6F;IAC7F,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAgB/D;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAI7C;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,GAAG,IAAI,CASnF;AAQD;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;CACd;AAWD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CAYnI;AAKD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAY1D;AAKD,yGAAyG;AACzG,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE,MAAkB,GAAG,OAAO,CAE9E;AAED,oGAAoG;AACpG,eAAO,MAAM,mBAAmB,iEAAiE,CAAC;AAElG;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAOrD;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,IAAI,kBAAkB,GAAG,IAAI,CA6DlE"}
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* is gitignored, a fresh clone or worktree does NOT inherit it (INS-2462) — the caller must
|
|
16
16
|
* treat "no pin" as an explicit state, never as permission to guess a workspace.
|
|
17
17
|
*/
|
|
18
|
-
import { readFileSync, existsSync } from 'fs';
|
|
18
|
+
import { readFileSync, existsSync, realpathSync } from 'fs';
|
|
19
19
|
import { resolve } from 'path';
|
|
20
20
|
import { homedir } from 'os';
|
|
21
21
|
import { execFileSync } from 'child_process';
|
|
@@ -146,6 +146,32 @@ export function refuseTrackedPin(projectRoot) {
|
|
|
146
146
|
}
|
|
147
147
|
untrackedPinRoots.add(projectRoot);
|
|
148
148
|
}
|
|
149
|
+
/** A symlinked home (macOS /tmp → /private/tmp) must still compare equal to its target. */
|
|
150
|
+
const realPath = (p) => { try {
|
|
151
|
+
return realpathSync(p);
|
|
152
|
+
}
|
|
153
|
+
catch {
|
|
154
|
+
return resolve(p);
|
|
155
|
+
} };
|
|
156
|
+
/** The home folder is no project: a pin or hooks written there bind every folder under it (TASK-562). */
|
|
157
|
+
export function isHomeFolder(folder, home = homedir()) {
|
|
158
|
+
return realPath(folder) === realPath(home);
|
|
159
|
+
}
|
|
160
|
+
/** The refusal pb connect gives in the home folder, pinned word for word by its test (RULE-662). */
|
|
161
|
+
export const HOME_FOLDER_REFUSAL = 'Run pb connect in your project folder, not your home folder.';
|
|
162
|
+
/**
|
|
163
|
+
* TASK-562: a new terminal opens in the home folder, and a pin there binds every folder under it
|
|
164
|
+
* (findProjectRoot walks up to it). pb connect calls this before its redeem, so the token still works.
|
|
165
|
+
*/
|
|
166
|
+
export function refuseHomeFolder(folder) {
|
|
167
|
+
if (!isHomeFolder(folder))
|
|
168
|
+
return;
|
|
169
|
+
throw new CLIError(HOME_FOLDER_REFUSAL, {
|
|
170
|
+
code: ErrorCode.VALIDATION_FAILED,
|
|
171
|
+
category: 'validation',
|
|
172
|
+
guidance: 'cd into your project, then run the same command. Your token still works.',
|
|
173
|
+
});
|
|
174
|
+
}
|
|
149
175
|
/**
|
|
150
176
|
* Read .productbrain/config.local.json from the walked-up project root.
|
|
151
177
|
* Returns the machine-local pin (`profile`), the optional hand-added `role` (DEC-1961), and any
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projectConfig.js","sourceRoot":"","sources":["../../src/lib/projectConfig.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"projectConfig.js","sourceRoot":"","sources":["../../src/lib/projectConfig.ts"],"names":[],"mappings":"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"}
|