@productbrain/cli 0.1.0-beta.71 → 0.1.0-beta.75

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 (103) hide show
  1. package/dist/__tests__/audit.test.js +44 -44
  2. package/dist/__tests__/capture.test.js +37 -37
  3. package/dist/__tests__/constellation.test.js +14 -14
  4. package/dist/__tests__/context-strategy.test.js +8 -8
  5. package/dist/__tests__/fields.test.js +20 -20
  6. package/dist/__tests__/ingest.test.js +28 -28
  7. package/dist/__tests__/orient.test.js +8 -8
  8. package/dist/__tests__/promote.test.js +15 -15
  9. package/dist/__tests__/proposals.test.js +18 -18
  10. package/dist/__tests__/relate.test.js +14 -14
  11. package/dist/__tests__/session-touch.test.js +11 -11
  12. package/dist/__tests__/session.test.js +2 -2
  13. package/dist/__tests__/setup.test.js +16 -30
  14. package/dist/__tests__/setup.test.js.map +1 -1
  15. package/dist/__tests__/state.test.d.ts +6 -0
  16. package/dist/__tests__/state.test.d.ts.map +1 -0
  17. package/dist/__tests__/state.test.js +97 -0
  18. package/dist/__tests__/state.test.js.map +1 -0
  19. package/dist/__tests__/update.test.js +21 -21
  20. package/dist/__tests__/workspace.test.js +20 -20
  21. package/dist/commands/accept.js +4 -4
  22. package/dist/commands/admin/cockpit.d.ts +4 -2
  23. package/dist/commands/admin/cockpit.d.ts.map +1 -1
  24. package/dist/commands/admin/cockpit.js +219 -10
  25. package/dist/commands/admin/cockpit.js.map +1 -1
  26. package/dist/commands/admin/index.d.ts.map +1 -1
  27. package/dist/commands/admin/index.js +2 -0
  28. package/dist/commands/admin/index.js.map +1 -1
  29. package/dist/commands/admin/inspect.d.ts +9 -0
  30. package/dist/commands/admin/inspect.d.ts.map +1 -1
  31. package/dist/commands/admin/inspect.js +19 -0
  32. package/dist/commands/admin/inspect.js.map +1 -1
  33. package/dist/commands/admin/inspect.test.js +20 -1
  34. package/dist/commands/admin/inspect.test.js.map +1 -1
  35. package/dist/commands/admin/manage.d.ts +8 -0
  36. package/dist/commands/admin/manage.d.ts.map +1 -0
  37. package/dist/commands/admin/manage.js +76 -0
  38. package/dist/commands/admin/manage.js.map +1 -0
  39. package/dist/commands/audit.js +4 -4
  40. package/dist/commands/brief.js +4 -4
  41. package/dist/commands/capture.js +6 -6
  42. package/dist/commands/chain-walk.js +2 -2
  43. package/dist/commands/changes.js +2 -2
  44. package/dist/commands/codex-prep.js +2 -2
  45. package/dist/commands/collections.js +5 -5
  46. package/dist/commands/connect-screens.d.ts +21 -0
  47. package/dist/commands/connect-screens.d.ts.map +1 -0
  48. package/dist/commands/connect-screens.js +79 -0
  49. package/dist/commands/connect-screens.js.map +1 -0
  50. package/dist/commands/constellation.js +2 -2
  51. package/dist/commands/context.js +2 -2
  52. package/dist/commands/cross-cut.js +2 -2
  53. package/dist/commands/doctor.js +3 -3
  54. package/dist/commands/doctor.test.js +1 -1
  55. package/dist/commands/fields.js +2 -2
  56. package/dist/commands/get.js +3 -3
  57. package/dist/commands/handshake.js +5 -5
  58. package/dist/commands/ingest.js +6 -6
  59. package/dist/commands/init.d.ts +1 -1
  60. package/dist/commands/init.d.ts.map +1 -1
  61. package/dist/commands/init.js +1 -9
  62. package/dist/commands/init.js.map +1 -1
  63. package/dist/commands/orient.js +2 -2
  64. package/dist/commands/promote.js +4 -4
  65. package/dist/commands/proposals.js +2 -2
  66. package/dist/commands/reject.js +2 -2
  67. package/dist/commands/relate.js +3 -3
  68. package/dist/commands/search.js +2 -2
  69. package/dist/commands/session.js +7 -7
  70. package/dist/commands/setup.d.ts +1 -1
  71. package/dist/commands/setup.d.ts.map +1 -1
  72. package/dist/commands/setup.js +10 -31
  73. package/dist/commands/setup.js.map +1 -1
  74. package/dist/commands/update.js +3 -3
  75. package/dist/commands/usage.d.ts +1 -1
  76. package/dist/commands/usage.js +4 -4
  77. package/dist/commands/verify.js +2 -2
  78. package/dist/commands/welcome.d.ts +21 -0
  79. package/dist/commands/welcome.d.ts.map +1 -0
  80. package/dist/commands/welcome.js +50 -0
  81. package/dist/commands/welcome.js.map +1 -0
  82. package/dist/commands/workspace.js +4 -4
  83. package/dist/generators/chain-rules.d.ts +3 -3
  84. package/dist/generators/chain-rules.js +3 -3
  85. package/dist/generators/chain-rules.test.js +2 -2
  86. package/dist/generators/portable-knowledge.js +1 -1
  87. package/dist/index.js +1 -1
  88. package/dist/index.js.map +1 -1
  89. package/dist/lib/activation.js +2 -2
  90. package/dist/lib/activation.test.js +3 -3
  91. package/dist/lib/client.d.ts +4 -4
  92. package/dist/lib/client.d.ts.map +1 -1
  93. package/dist/lib/client.js +8 -9
  94. package/dist/lib/client.js.map +1 -1
  95. package/dist/lib/onboarding-path-b.js +8 -8
  96. package/dist/lib/onboarding-shared.js +2 -2
  97. package/dist/lib/onboarding.js +4 -4
  98. package/dist/lib/state.d.ts +51 -0
  99. package/dist/lib/state.d.ts.map +1 -0
  100. package/dist/lib/state.js +90 -0
  101. package/dist/lib/state.js.map +1 -0
  102. package/dist/lib/workspace-probe.js +2 -2
  103. package/package.json +1 -1
@@ -6,7 +6,7 @@
6
6
  * ARCH-25 (orient view model pattern), DEC-99 (ALLOWED_RELATION_TYPES as SSOT)
7
7
  */
8
8
  import { getConfigOrGuide } from '../lib/config.js';
9
- import { convexCall } from '../lib/client.js';
9
+ import { kernelCall } from '../lib/client.js';
10
10
  import { runCliCommand } from '../lib/runner.js';
11
11
  import { formatConstellation } from '../formatters/constellation.js';
12
12
  import { CLIError, ErrorCode } from '../lib/errors.js';
@@ -15,7 +15,7 @@ export async function runConstellation(options) {
15
15
  if (!config)
16
16
  return;
17
17
  await runCliCommand({
18
- fn: () => convexCall('chain.getConstellation', {
18
+ fn: () => kernelCall('chain.getConstellation', {
19
19
  entryId: options.entryId,
20
20
  }),
21
21
  formatPretty: (result) => {
@@ -4,7 +4,7 @@
4
4
  * Previously: pipe-friendly via process.stdout.isTTY — now delegated to runner.
5
5
  */
6
6
  import { getConfigOrGuide } from '../lib/config.js';
7
- import { convexCall } from '../lib/client.js';
7
+ import { kernelCall } from '../lib/client.js';
8
8
  import { runCliCommand, isJsonMode } from '../lib/runner.js';
9
9
  import { formatContext } from '../formatters/context.js';
10
10
  import { CLIError, ErrorCode } from '../lib/errors.js';
@@ -13,7 +13,7 @@ export async function runContext(options) {
13
13
  if (!config)
14
14
  return;
15
15
  await runCliCommand({
16
- fn: () => convexCall('chain.gatherContext', {
16
+ fn: () => kernelCall('chain.gatherContext', {
17
17
  entryId: options.entryId,
18
18
  maxHops: 2,
19
19
  }),
@@ -6,7 +6,7 @@
6
6
  * Chain: DEC-299 (agent-native, JSON-default), STD-65 (structured, parseable, minimal)
7
7
  */
8
8
  import { getConfigOrGuide } from '../lib/config.js';
9
- import { convexCall } from '../lib/client.js';
9
+ import { kernelCall } from '../lib/client.js';
10
10
  import { runCliCommand } from '../lib/runner.js';
11
11
  import { formatCrossCut } from '../formatters/cross-cut.js';
12
12
  export async function runCrossCut(options) {
@@ -14,7 +14,7 @@ export async function runCrossCut(options) {
14
14
  if (!config)
15
15
  return;
16
16
  await runCliCommand({
17
- fn: () => convexCall('chain.structuralAggregation', {
17
+ fn: () => kernelCall('chain.structuralAggregation', {
18
18
  relationType: options.type,
19
19
  }),
20
20
  formatPretty: (result) => formatCrossCut(result, options.type),
@@ -120,13 +120,13 @@ function checkEnvironment(resolvedSiteUrl) {
120
120
  detail: `${env} \u2192 API ${siteUrl} · connect redeem ${connectRedeem}`,
121
121
  };
122
122
  }
123
- /** Check 4: Server reachability via convexCall */
123
+ /** Check 4: Server reachability via kernelCall */
124
124
  async function checkReachability() {
125
125
  try {
126
126
  // Dynamic import to avoid module-load side effects when testing
127
- const { convexCall } = await import('../lib/client.js');
127
+ const { kernelCall } = await import('../lib/client.js');
128
128
  const start = Date.now();
129
- await convexCall('chain.getOrientView', {});
129
+ await kernelCall('chain.getOrientView', {});
130
130
  const elapsed = Date.now() - start;
131
131
  return {
132
132
  status: 'pass',
@@ -34,7 +34,7 @@ vi.mock('../lib/profiles.js', () => ({
34
34
  // Mock client — controls reachability
35
35
  const mockMcpCall = vi.fn();
36
36
  vi.mock('../lib/client.js', () => ({
37
- convexCall: (...args) => mockMcpCall(...args),
37
+ kernelCall: (...args) => mockMcpCall(...args),
38
38
  }));
39
39
  // Mock fs for config file check and fix actions
40
40
  const mockMkdirSync = vi.fn();
@@ -4,7 +4,7 @@
4
4
  * Chain: BET-181, STD-101 (SSOT — fields derive from collection doc, no hardcoded lists)
5
5
  */
6
6
  import { getConfigOrGuide } from '../lib/config.js';
7
- import { convexCall } from '../lib/client.js';
7
+ import { kernelCall } from '../lib/client.js';
8
8
  import { runCliCommand } from '../lib/runner.js';
9
9
  import { formatFields } from '../formatters/fields.js';
10
10
  import { CLIError, ErrorCode } from '../lib/errors.js';
@@ -14,7 +14,7 @@ export async function runFields(options) {
14
14
  return;
15
15
  await runCliCommand({
16
16
  fn: async () => {
17
- const result = await convexCall('chain.getCollectionFields', { slug: options.collectionSlug });
17
+ const result = await kernelCall('chain.getCollectionFields', { slug: options.collectionSlug });
18
18
  if (!result) {
19
19
  throw new CLIError(`Collection '${options.collectionSlug}' not found.`, {
20
20
  code: ErrorCode.VALIDATION_FAILED,
@@ -3,7 +3,7 @@
3
3
  * BET-108 Slice 3. BET-181 Slice 0: routes through runCliCommand for JSON-default output.
4
4
  */
5
5
  import { getConfigOrGuide } from '../lib/config.js';
6
- import { convexCall } from '../lib/client.js';
6
+ import { kernelCall } from '../lib/client.js';
7
7
  import { runCliCommand, isJsonMode } from '../lib/runner.js';
8
8
  import { formatEntry } from '../formatters/entry.js';
9
9
  import { stripConvexInternals } from '../lib/strip.js';
@@ -14,7 +14,7 @@ export async function runGet(options) {
14
14
  return;
15
15
  await runCliCommand({
16
16
  fn: async () => {
17
- const entry = await convexCall('chain.getEntry', { entryId: options.entryId });
17
+ const entry = await kernelCall('chain.getEntry', { entryId: options.entryId });
18
18
  if (!entry) {
19
19
  throw new CLIError(`Entry '${options.entryId}' not found.`, {
20
20
  code: ErrorCode.VALIDATION_FAILED,
@@ -42,7 +42,7 @@ export async function runGetMany(options) {
42
42
  guidance: 'Usage: pb get-many <id1> <id2> ...',
43
43
  });
44
44
  }
45
- const results = await Promise.all(options.entryIds.map((id) => convexCall('chain.getEntry', { entryId: id }).then((entry) => ({ id, entry, error: null }), (err) => ({ id, entry: null, error: err instanceof Error ? err.message : String(err) }))));
45
+ const results = await Promise.all(options.entryIds.map((id) => kernelCall('chain.getEntry', { entryId: id }).then((entry) => ({ id, entry, error: null }), (err) => ({ id, entry: null, error: err instanceof Error ? err.message : String(err) }))));
46
46
  const json = isJsonMode();
47
47
  if (json) {
48
48
  const output = results.map((result) => {
@@ -8,7 +8,7 @@ import { homedir } from 'os';
8
8
  import { fileURLToPath } from 'url';
9
9
  import { getConfigOrGuide } from '../lib/config.js';
10
10
  import { select as promptSelect } from '../lib/prompts.js';
11
- import { convexCall } from '../lib/client.js';
11
+ import { kernelCall } from '../lib/client.js';
12
12
  import { detectRepo, extractWorkspaceProfile } from '../lib/repo-detect.js';
13
13
  import { generateContextMd } from '../generators/context-md.js';
14
14
  import { generateBriefingMd } from '../generators/briefing-md.js';
@@ -308,9 +308,9 @@ export async function runHandshake(options = {}) {
308
308
  let orientView = null;
309
309
  let workspaceProfile = null;
310
310
  try {
311
- const workspaceReadinessPromise = convexCall('chain.workspaceReadiness', {}).catch(() => null);
311
+ const workspaceReadinessPromise = kernelCall('chain.workspaceReadiness', {}).catch(() => null);
312
312
  const [orientResult, readinessRaw] = await Promise.all([
313
- convexCall('chain.getOrientView', {}).catch((err) => {
313
+ kernelCall('chain.getOrientView', {}).catch((err) => {
314
314
  logErr(`Warning: could not fetch workspace context — ${err instanceof Error ? err.message : err}`);
315
315
  logErr('Continuing with limited context (Chain search + portable knowledge only).');
316
316
  return null;
@@ -344,7 +344,7 @@ export async function runHandshake(options = {}) {
344
344
  let matchedEntries = [];
345
345
  if (uniqueQueries.length > 0) {
346
346
  log(`Searching Chain for: ${uniqueQueries.join(', ')}...`);
347
- const searchResults = await Promise.all(uniqueQueries.map((q) => convexCall('chain.searchEntries', { query: q }).catch(() => [])));
347
+ const searchResults = await Promise.all(uniqueQueries.map((q) => kernelCall('chain.searchEntries', { query: q }).catch(() => [])));
348
348
  matchedEntries = deduplicateEntries(searchResults.flat());
349
349
  }
350
350
  // 5. Read canonical skills & rules from .productbrain/
@@ -357,7 +357,7 @@ export async function runHandshake(options = {}) {
357
357
  let allRules = manualRules;
358
358
  if (generate) {
359
359
  log('Generating Chain-derived rules...');
360
- const chainResult = await generateChainRules(convexCall, manualRules);
360
+ const chainResult = await generateChainRules(kernelCall, manualRules);
361
361
  if (chainResult.sentinel) {
362
362
  // MCP unavailable — inject sentinel rule and warn
363
363
  allRules = [...manualRules, chainResult.sentinel];
@@ -10,7 +10,7 @@ import { resolve } from 'path';
10
10
  import { globSync } from 'glob';
11
11
  import { randomUUID } from 'crypto';
12
12
  import { getConfigOrGuide } from '../lib/config.js';
13
- import { convexCall } from '../lib/client.js';
13
+ import { kernelCall } from '../lib/client.js';
14
14
  import { isJsonMode } from '../lib/runner.js';
15
15
  import { stripConvexInternals } from '../lib/strip.js';
16
16
  import { CLIError, ErrorCode } from '../lib/errors.js';
@@ -58,7 +58,7 @@ export async function runIngest(options) {
58
58
  }
59
59
  const ingestionRunId = randomUUID();
60
60
  // Resolve workspace + keyId — startSession requires apiKeyId (MCP server passes it; CLI gets from resolveWorkspace)
61
- const workspace = await convexCall('resolveWorkspace', {});
61
+ const workspace = await kernelCall('resolveWorkspace', {});
62
62
  if (!workspace?.keyId) {
63
63
  throw new CLIError('API key has no keyId.', {
64
64
  code: ErrorCode.AUTH_INVALID,
@@ -69,7 +69,7 @@ export async function runIngest(options) {
69
69
  // --resume: filter out files whose sourceRef is already committed in staging
70
70
  let resumeSkipped = 0;
71
71
  if (resume) {
72
- const committedRefs = await convexCall('staging.getCommittedSourceRefs', {});
72
+ const committedRefs = await kernelCall('staging.getCommittedSourceRefs', {});
73
73
  const committedSet = new Set(committedRefs ?? []);
74
74
  const originalCount = files.length;
75
75
  files = files.filter((f) => !committedSet.has(f));
@@ -87,7 +87,7 @@ export async function runIngest(options) {
87
87
  return;
88
88
  }
89
89
  }
90
- const startRes = await convexCall('agent.startSession', {
90
+ const startRes = await kernelCall('agent.startSession', {
91
91
  workspaceId: workspace._id,
92
92
  apiKeyId: workspace.keyId,
93
93
  clientKind: 'cli',
@@ -102,7 +102,7 @@ export async function runIngest(options) {
102
102
  try {
103
103
  const content = await readFile(filePath, 'utf8');
104
104
  const sourceRef = filePath;
105
- const result = await convexCall('chain.ingestDocument', {
105
+ const result = await kernelCall('chain.ingestDocument', {
106
106
  content,
107
107
  sourceRef,
108
108
  ingestionRunId,
@@ -167,7 +167,7 @@ export async function runIngest(options) {
167
167
  }
168
168
  }
169
169
  finally {
170
- await convexCall('agent.closeSession', { sessionId, status: 'closed' });
170
+ await kernelCall('agent.closeSession', { sessionId, status: 'closed' });
171
171
  }
172
172
  if (json) {
173
173
  process.stdout.write(JSON.stringify(stripConvexInternals({
@@ -2,7 +2,7 @@
2
2
  * pb init — intelligent entry point that detects setup state and guides the user.
3
3
  *
4
4
  * WP-303 Slice 4 (Keystone): 4-state machine (fresh → has-key → has-workspace → ready).
5
- * Uses getConfig() for key check, convexCall for workspace validation.
5
+ * Uses getConfig() for key check, kernelCall for workspace validation.
6
6
  */
7
7
  export type InitState = 'fresh' | 'has-key' | 'ready';
8
8
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;AAEtD;;;GAGG;AACH,wBAAgB,WAAW,IAAI,SAAS,CAevC;AAED,wBAAsB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CA6F7C"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;AAEtD;;;GAGG;AACH,wBAAgB,WAAW,IAAI,SAAS,CAevC;AAED,wBAAsB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAqF7C"}
@@ -2,7 +2,7 @@
2
2
  * pb init — intelligent entry point that detects setup state and guides the user.
3
3
  *
4
4
  * WP-303 Slice 4 (Keystone): 4-state machine (fresh → has-key → has-workspace → ready).
5
- * Uses getConfig() for key check, convexCall for workspace validation.
5
+ * Uses getConfig() for key check, kernelCall for workspace validation.
6
6
  */
7
7
  import { getConfig } from '../lib/config.js';
8
8
  import { readSession } from '../lib/session.js';
@@ -10,7 +10,6 @@ import { isJsonMode } from '../lib/runner.js';
10
10
  import { hint, heading, bold, dim, green, icons } from '../lib/style.js';
11
11
  import { formatElapsed } from '../lib/format.js';
12
12
  import { probeWorkspace } from '../lib/workspace-probe.js';
13
- import { runOnboardingConversation } from '../lib/onboarding.js';
14
13
  /**
15
14
  * Detect the current setup state without throwing.
16
15
  * Sync check only — does not hit the network.
@@ -94,13 +93,6 @@ export async function runInit() {
94
93
  else {
95
94
  process.stdout.write(` ${dim(icons.dot)} No active session\n`);
96
95
  }
97
- // WP-304: Blank workspace → LLM onboarding conversation
98
- const isBlank = !workspace.entryCount || workspace.entryCount < 3;
99
- if (isBlank) {
100
- process.stdout.write('\n');
101
- await runOnboardingConversation(workspace.name);
102
- return;
103
- }
104
96
  if ((workspace.entryCount ?? 0) > 0) {
105
97
  process.stdout.write(` ${dim(icons.dot)} ${workspace.entryCount} entries on the Chain\n`);
106
98
  }
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  * BET-181 Slice 0: routes through runCliCommand for JSON-default output.
4
4
  */
5
5
  import { getConfigOrGuide } from '../lib/config.js';
6
- import { convexCall } from '../lib/client.js';
6
+ import { kernelCall } from '../lib/client.js';
7
7
  import { runCliCommand } from '../lib/runner.js';
8
8
  import { formatOrient, formatOrientBrief } from '../formatters/orient.js';
9
9
  function normalizeView(raw) {
@@ -44,7 +44,7 @@ export async function runOrient(options = {}) {
44
44
  callArgs.task = options.task;
45
45
  if (options.scope)
46
46
  callArgs.scope = options.scope;
47
- const raw = await convexCall('chain.getOrientView', Object.keys(callArgs).length > 0 ? callArgs : {});
47
+ const raw = await kernelCall('chain.getOrientView', Object.keys(callArgs).length > 0 ? callArgs : {});
48
48
  // Normalize before output in any mode — ensures JSON keys are stable
49
49
  // for agent consumers (optional sections become empty arrays, not absent).
50
50
  return normalizeView(raw);
@@ -4,7 +4,7 @@
4
4
  * Thin client: governance checks live in Convex (BR-104).
5
5
  */
6
6
  import { getConfigOrGuide } from '../lib/config.js';
7
- import { convexCallWithSession } from '../lib/client.js';
7
+ import { kernelCallWithSession } from '../lib/client.js';
8
8
  import { readSession } from '../lib/session.js';
9
9
  import { runCliCommand } from '../lib/runner.js';
10
10
  import { formatPromoteReceipt } from '../formatters/promote.js';
@@ -34,7 +34,7 @@ export async function runPromote(options) {
34
34
  }
35
35
  await runCliCommand({
36
36
  fn: async () => {
37
- const entry = await convexCallWithSession('chain.getEntry', { entryId });
37
+ const entry = await kernelCallWithSession('chain.getEntry', { entryId });
38
38
  if (!entry) {
39
39
  throw new CLIError(`Entry ${entryId} not found.`, {
40
40
  code: ErrorCode.VALIDATION_FAILED,
@@ -47,7 +47,7 @@ export async function runPromote(options) {
47
47
  '';
48
48
  let conflicts = [];
49
49
  try {
50
- conflicts = (await convexCallWithSession('chain.detectSemanticConflicts', {
50
+ conflicts = (await kernelCallWithSession('chain.detectSemanticConflicts', {
51
51
  name: entry.name,
52
52
  description,
53
53
  collectionHint: entry.collectionSlug ?? entry.collection?.slug ?? entry.collection?.name,
@@ -72,7 +72,7 @@ export async function runPromote(options) {
72
72
  if (options.message) {
73
73
  args.commitMessage = options.message;
74
74
  }
75
- const result = await convexCallWithSession('chain.commitEntry', args);
75
+ const result = await kernelCallWithSession('chain.commitEntry', args);
76
76
  // Resolve display name from result
77
77
  const name = ('name' in result && typeof result.name === 'string')
78
78
  ? result.name
@@ -6,7 +6,7 @@
6
6
  * Read-only — no active session required.
7
7
  */
8
8
  import { getConfigOrGuide } from '../lib/config.js';
9
- import { convexCall } from '../lib/client.js';
9
+ import { kernelCall } from '../lib/client.js';
10
10
  import { runCliCommand } from '../lib/runner.js';
11
11
  import { formatProposalsList } from '../formatters/proposals.js';
12
12
  export async function runProposals() {
@@ -15,7 +15,7 @@ export async function runProposals() {
15
15
  return;
16
16
  await runCliCommand({
17
17
  fn: async () => {
18
- const proposals = await convexCall('governance.listProposals', {});
18
+ const proposals = await kernelCall('governance.listProposals', {});
19
19
  return { proposals, count: proposals.length };
20
20
  },
21
21
  formatPretty: (data) => formatProposalsList(data),
@@ -6,7 +6,7 @@
6
6
  * Reason is mandatory — objections must be explained (BR-7).
7
7
  */
8
8
  import { getConfigOrGuide } from '../lib/config.js';
9
- import { convexCall } from '../lib/client.js';
9
+ import { kernelCall } from '../lib/client.js';
10
10
  import { runCliCommand } from '../lib/runner.js';
11
11
  import { formatRejectReceipt } from '../formatters/proposals.js';
12
12
  import { CLIError, ErrorCode } from '../lib/errors.js';
@@ -31,7 +31,7 @@ export async function runReject(options) {
31
31
  }
32
32
  await runCliCommand({
33
33
  fn: async () => {
34
- return await convexCall('governance.respondToProposal', {
34
+ return await kernelCall('governance.respondToProposal', {
35
35
  proposalId,
36
36
  verdict: 'reject',
37
37
  reason: options.reason.trim(),
@@ -5,7 +5,7 @@
5
5
  * Thin client: relation type validation lives in Convex (BR-104).
6
6
  */
7
7
  import { getConfigOrGuide } from '../lib/config.js';
8
- import { convexCallWithSession } from '../lib/client.js';
8
+ import { kernelCallWithSession } from '../lib/client.js';
9
9
  import { readSession } from '../lib/session.js';
10
10
  import { runCliCommand } from '../lib/runner.js';
11
11
  import { formatRelateReceipt, formatUnrelateReceipt } from '../formatters/relate.js';
@@ -43,7 +43,7 @@ export async function runRelate(options) {
43
43
  if (options.ifMissing) {
44
44
  mcpArgs.ifMissing = true;
45
45
  }
46
- const result = await convexCallWithSession('chain.createEntryRelation', mcpArgs);
46
+ const result = await kernelCallWithSession('chain.createEntryRelation', mcpArgs);
47
47
  const isProposal = result?.status === 'proposal_created';
48
48
  const output = {
49
49
  fromId,
@@ -85,7 +85,7 @@ export async function runUnrelate(options) {
85
85
  }
86
86
  await runCliCommand({
87
87
  fn: async () => {
88
- await convexCallWithSession('chain.removeEntryRelation', {
88
+ await kernelCallWithSession('chain.removeEntryRelation', {
89
89
  fromEntryId: fromId,
90
90
  toEntryId: toId,
91
91
  type,
@@ -3,7 +3,7 @@
3
3
  * BET-181 Slice 0: routes through runCliCommand for JSON-default output.
4
4
  */
5
5
  import { getConfigOrGuide } from '../lib/config.js';
6
- import { convexCall } from '../lib/client.js';
6
+ import { kernelCall } from '../lib/client.js';
7
7
  import { runCliCommand } from '../lib/runner.js';
8
8
  import { formatSearchResults } from '../formatters/search.js';
9
9
  export async function runSearch(options) {
@@ -11,7 +11,7 @@ export async function runSearch(options) {
11
11
  if (!config)
12
12
  return;
13
13
  await runCliCommand({
14
- fn: () => convexCall('chain.searchEntries', { query: options.query }),
14
+ fn: () => kernelCall('chain.searchEntries', { query: options.query }),
15
15
  formatPretty: (results) => formatSearchResults(results ?? []),
16
16
  });
17
17
  }
@@ -6,7 +6,7 @@
6
6
  * on session start preserved for backward compatibility.
7
7
  */
8
8
  import { getConfigOrGuide } from '../lib/config.js';
9
- import { convexCall } from '../lib/client.js';
9
+ import { kernelCall } from '../lib/client.js';
10
10
  import { readSession, writeSession, clearSession, readClosedMarker } from '../lib/session.js';
11
11
  import { isJsonMode } from '../lib/runner.js';
12
12
  import { formatSessionStart, formatSessionClose } from '../formatters/session.js';
@@ -48,11 +48,11 @@ export async function runSessionStart(options = {}) {
48
48
  const elapsed = Date.now() - new Date(closedMarker.closedAt).getTime();
49
49
  if (elapsed < RESUME_WINDOW_MS) {
50
50
  // Resolve workspace to get keyId (needed for resumeSession)
51
- const wsForResume = await convexCall('resolveWorkspace', {});
51
+ const wsForResume = await kernelCall('resolveWorkspace', {});
52
52
  if (wsForResume?.keyId) {
53
53
  if (!json)
54
54
  process.stdout.write('Resuming session...\n');
55
- const resumed = await convexCall('agent.resumeSession', {
55
+ const resumed = await kernelCall('agent.resumeSession', {
56
56
  workspaceId: wsForResume._id,
57
57
  apiKeyId: wsForResume.keyId,
58
58
  previousSessionId: closedMarker.sessionId,
@@ -96,7 +96,7 @@ export async function runSessionStart(options = {}) {
96
96
  }
97
97
  }
98
98
  // Resolve workspace + keyId
99
- const workspace = await convexCall('resolveWorkspace', {});
99
+ const workspace = await kernelCall('resolveWorkspace', {});
100
100
  if (!workspace?.keyId) {
101
101
  throw new CLIError('API key has read-only scope. Write operations require a readwrite key.', {
102
102
  code: ErrorCode.AUTH_INVALID,
@@ -107,7 +107,7 @@ export async function runSessionStart(options = {}) {
107
107
  // Start agent session with clientKind attribution (DEC-184)
108
108
  if (!json)
109
109
  process.stdout.write('Starting session...\n');
110
- const result = await convexCall('agent.startSession', {
110
+ const result = await kernelCall('agent.startSession', {
111
111
  workspaceId: workspace._id,
112
112
  apiKeyId: workspace.keyId,
113
113
  clientKind: 'cli',
@@ -165,7 +165,7 @@ export async function runSessionClose(options = {}) {
165
165
  const entriesCount = session.entriesCaptured.length;
166
166
  if (entriesCount > 0) {
167
167
  try {
168
- await convexCall('agent.recordWrapup', {
168
+ await kernelCall('agent.recordWrapup', {
169
169
  sessionId: session.sessionId,
170
170
  draftsReviewed: entriesCount,
171
171
  draftsCommitted: 0, // CLI captures are drafts; user commits in Studio
@@ -179,7 +179,7 @@ export async function runSessionClose(options = {}) {
179
179
  }
180
180
  // Close the session
181
181
  try {
182
- await convexCall('agent.closeSession', {
182
+ await kernelCall('agent.closeSession', {
183
183
  sessionId: session.sessionId,
184
184
  status: 'closed',
185
185
  });
@@ -6,7 +6,7 @@
6
6
  * 0. Check existing config → offer health check or continue to login
7
7
  * 1. Account check → signup URL or login inline
8
8
  * 2. Workspace binding confirmation
9
- * 3. Guided first capture (starts a session, captures via MCP)
9
+ * 3. Session start + telemetry init
10
10
  * 4. Summary with next-step hint
11
11
  *
12
12
  * WP-303 Slice 1: migrated from readline to @clack/prompts via lib/prompts.ts.
@@ -1 +1 @@
1
- {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAiCH,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAE9C"}
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AA8BH,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAE9C"}
@@ -6,20 +6,17 @@
6
6
  * 0. Check existing config → offer health check or continue to login
7
7
  * 1. Account check → signup URL or login inline
8
8
  * 2. Workspace binding confirmation
9
- * 3. Guided first capture (starts a session, captures via MCP)
9
+ * 3. Session start + telemetry init
10
10
  * 4. Summary with next-step hint
11
11
  *
12
12
  * WP-303 Slice 1: migrated from readline to @clack/prompts via lib/prompts.ts.
13
13
  */
14
14
  import { getConfig } from '../lib/config.js';
15
- import { convexCall } from '../lib/client.js';
15
+ import { kernelCall } from '../lib/client.js';
16
16
  import { readSession, writeSession } from '../lib/session.js';
17
17
  import { trackEvent } from '../lib/telemetry.js';
18
18
  import { runLogin } from './login.js';
19
- import { runOnboardingConversation } from '../lib/onboarding.js';
20
- import { runOnboardingPathB } from '../lib/onboarding-path-b.js';
21
19
  import { initTelemetry } from '../lib/telemetry.js';
22
- import { isExperimentActive, assignOnboardingPath } from '../lib/experiment.js';
23
20
  import { confirm as promptConfirm } from '../lib/prompts.js';
24
21
  /** Mask an API key for display: show prefix + last 4 chars. */
25
22
  function maskKey(key) {
@@ -47,7 +44,7 @@ async function runSetupFlow() {
47
44
  let wsName = 'your workspace';
48
45
  let wsId;
49
46
  try {
50
- const workspace = await convexCall('resolveWorkspace', {});
47
+ const workspace = await kernelCall('resolveWorkspace', {});
51
48
  if (workspace?.name) {
52
49
  console.log(`Connected to workspace: ${workspace.name}`);
53
50
  wsName = workspace.name;
@@ -64,7 +61,7 @@ async function runSetupFlow() {
64
61
  return;
65
62
  }
66
63
  console.log('');
67
- // Already configured — go straight to onboarding conversation (WP-304)
64
+ // Already configured — ensure session and init telemetry
68
65
  await ensureSessionAndOnboard(wsName, wsId);
69
66
  return;
70
67
  }
@@ -96,7 +93,7 @@ async function runSetupPostLogin() {
96
93
  let wsName = 'your workspace';
97
94
  let wsId;
98
95
  try {
99
- const workspace = await convexCall('resolveWorkspace', {});
96
+ const workspace = await kernelCall('resolveWorkspace', {});
100
97
  if (workspace?.name) {
101
98
  console.log(`Connected to workspace: ${workspace.name}`);
102
99
  wsName = workspace.name;
@@ -110,17 +107,17 @@ async function runSetupPostLogin() {
110
107
  }
111
108
  await ensureSessionAndOnboard(wsName, wsId);
112
109
  }
113
- /** Ensure a session exists, then run the onboarding conversation. */
110
+ /** Ensure a session exists and initialize telemetry. */
114
111
  async function ensureSessionAndOnboard(workspaceName, workspaceId) {
115
112
  let session = readSession();
116
113
  if (!session) {
117
114
  try {
118
115
  const resolvedWs = workspaceId
119
116
  ? { _id: workspaceId, keyId: null }
120
- : await convexCall('resolveWorkspace', {});
117
+ : await kernelCall('resolveWorkspace', {});
121
118
  if (!resolvedWs)
122
119
  return;
123
- const result = await convexCall('agent.startSession', {
120
+ const result = await kernelCall('agent.startSession', {
124
121
  workspaceId: resolvedWs._id,
125
122
  apiKeyId: resolvedWs.keyId,
126
123
  clientKind: 'cli',
@@ -135,7 +132,7 @@ async function ensureSessionAndOnboard(workspaceName, workspaceId) {
135
132
  writeSession(session);
136
133
  }
137
134
  catch {
138
- // Session start failed — onboarding can still work for reads
135
+ // Session start failed — continue
139
136
  }
140
137
  }
141
138
  // Initialize telemetry with workspace context
@@ -145,24 +142,6 @@ async function ensureSessionAndOnboard(workspaceName, workspaceId) {
145
142
  else if (workspaceId) {
146
143
  initTelemetry(workspaceId);
147
144
  }
148
- // WP-304: Path selection
149
- // Priority: experiment (deterministic hash) > env var > default (B)
150
- // Path B is the intentional production default — shorter facilitator flow.
151
- // Path A (5-phase conversation) is reachable via PB_ONBOARDING_PATH=A or experiment.
152
- const resolvedWsId = session?.workspaceId ?? workspaceId;
153
- let onboardingPath;
154
- if (isExperimentActive() && resolvedWsId) {
155
- onboardingPath = assignOnboardingPath(resolvedWsId);
156
- trackEvent('experiment_assigned', { path: onboardingPath, experiment: 'wp-304' });
157
- }
158
- else {
159
- onboardingPath = process.env.PB_ONBOARDING_PATH ?? 'B';
160
- }
161
- if (onboardingPath === 'A') {
162
- await runOnboardingConversation(workspaceName);
163
- }
164
- else {
165
- await runOnboardingPathB(workspaceName);
166
- }
145
+ console.log(`\nSetup complete. Run \`pb orient -b\` to see your workspace.`);
167
146
  }
168
147
  //# sourceMappingURL=setup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"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"}