@productbrain/cli 0.1.0-beta.39 → 0.1.0-beta.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/README.md +13 -0
  2. package/dist/__tests__/constants.test.js +48 -1
  3. package/dist/__tests__/constants.test.js.map +1 -1
  4. package/dist/commands/admin/index.d.ts +17 -0
  5. package/dist/commands/admin/index.d.ts.map +1 -0
  6. package/dist/commands/admin/index.js +31 -0
  7. package/dist/commands/admin/index.js.map +1 -0
  8. package/dist/commands/admin/inspect.d.ts +12 -0
  9. package/dist/commands/admin/inspect.d.ts.map +1 -0
  10. package/dist/commands/admin/inspect.js +217 -0
  11. package/dist/commands/admin/inspect.js.map +1 -0
  12. package/dist/commands/admin/inspect.test.d.ts +5 -0
  13. package/dist/commands/admin/inspect.test.d.ts.map +1 -0
  14. package/dist/commands/admin/inspect.test.js +40 -0
  15. package/dist/commands/admin/inspect.test.js.map +1 -0
  16. package/dist/commands/admin/seed.d.ts +32 -0
  17. package/dist/commands/admin/seed.d.ts.map +1 -0
  18. package/dist/commands/admin/seed.js +363 -0
  19. package/dist/commands/admin/seed.js.map +1 -0
  20. package/dist/commands/admin/seed.test.d.ts +6 -0
  21. package/dist/commands/admin/seed.test.d.ts.map +1 -0
  22. package/dist/commands/admin/seed.test.js +65 -0
  23. package/dist/commands/admin/seed.test.js.map +1 -0
  24. package/dist/commands/connect-integration.test.js +54 -2
  25. package/dist/commands/connect-integration.test.js.map +1 -1
  26. package/dist/commands/connect.d.ts +5 -1
  27. package/dist/commands/connect.d.ts.map +1 -1
  28. package/dist/commands/connect.js +5 -6
  29. package/dist/commands/connect.js.map +1 -1
  30. package/dist/commands/doctor.d.ts.map +1 -1
  31. package/dist/commands/doctor.js +3 -2
  32. package/dist/commands/doctor.js.map +1 -1
  33. package/dist/commands/doctor.test.js +3 -0
  34. package/dist/commands/doctor.test.js.map +1 -1
  35. package/dist/index.js +7 -3
  36. package/dist/index.js.map +1 -1
  37. package/dist/lib/client.d.ts +8 -0
  38. package/dist/lib/client.d.ts.map +1 -1
  39. package/dist/lib/client.js +29 -0
  40. package/dist/lib/client.js.map +1 -1
  41. package/dist/lib/constants.d.ts +22 -1
  42. package/dist/lib/constants.d.ts.map +1 -1
  43. package/dist/lib/constants.js +38 -2
  44. package/dist/lib/constants.js.map +1 -1
  45. package/dist/lib/style.d.ts +22 -0
  46. package/dist/lib/style.d.ts.map +1 -1
  47. package/dist/lib/style.js +52 -0
  48. package/dist/lib/style.js.map +1 -1
  49. package/dist/lib/style.test.js +57 -1
  50. package/dist/lib/style.test.js.map +1 -1
  51. package/package.json +1 -1
package/README.md CHANGED
@@ -28,6 +28,19 @@ Paste your API key (`pb_sk_...`). Saved to `~/.config/productbrain/.env`.
28
28
 
29
29
  Or run any command without a key and follow the guided flow.
30
30
 
31
+ ### Onboarding link (`pb connect`)
32
+
33
+ If you received a connect token (`pb_ct_...`) from Product Brain:
34
+
35
+ ```bash
36
+ pb connect pb_ct_...
37
+ ```
38
+
39
+ Redemption always targets a cloud Convex deployment (HTTP Actions are cloud-hosted, even during local dev). Resolution order: `--gateway` → `PB_CONNECT_GATEWAY_URL` → `CONVEX_SITE_URL` → production default (`gateway.productbrain.io`).
40
+
41
+ - **Dev deployments:** Set `CONVEX_SITE_URL` to your `*.convex.site` URL, or use `--gateway`.
42
+ - If a token fails, the CLI hints about setting `CONVEX_SITE_URL` or using `--gateway`.
43
+
31
44
  ## Quick Start
32
45
 
33
46
  ```bash
@@ -3,7 +3,7 @@
3
3
  * WP-301 Slice 0: Verify DEFAULT_SITE_URL, resolveSiteUrl(), resolveAppUrl(), isDevMode().
4
4
  */
5
5
  import { describe, expect, it, beforeEach, afterEach } from 'vitest';
6
- import { DEFAULT_SITE_URL, resolveSiteUrl, resolveAppUrl, isDevMode } from '../lib/constants.js';
6
+ import { DEFAULT_SITE_URL, resolveSiteUrl, resolveAppUrl, isDevMode, resolveConnectRedeemUrl, } from '../lib/constants.js';
7
7
  describe('DEFAULT_SITE_URL', () => {
8
8
  it('is the production Convex site URL', () => {
9
9
  expect(DEFAULT_SITE_URL).toBe('https://gateway.productbrain.io');
@@ -65,6 +65,53 @@ describe('resolveAppUrl', () => {
65
65
  expect(resolveAppUrl()).toBe('https://work.productbrain.io');
66
66
  });
67
67
  });
68
+ describe('resolveConnectRedeemUrl', () => {
69
+ let originalGateway;
70
+ let originalConvex;
71
+ beforeEach(() => {
72
+ originalGateway = process.env.PB_CONNECT_GATEWAY_URL;
73
+ originalConvex = process.env.CONVEX_SITE_URL;
74
+ delete process.env.PB_CONNECT_GATEWAY_URL;
75
+ delete process.env.CONVEX_SITE_URL;
76
+ });
77
+ afterEach(() => {
78
+ if (originalGateway === undefined)
79
+ delete process.env.PB_CONNECT_GATEWAY_URL;
80
+ else
81
+ process.env.PB_CONNECT_GATEWAY_URL = originalGateway;
82
+ if (originalConvex === undefined)
83
+ delete process.env.CONVEX_SITE_URL;
84
+ else
85
+ process.env.CONVEX_SITE_URL = originalConvex;
86
+ });
87
+ it('returns production URL when no env vars are set', () => {
88
+ expect(resolveConnectRedeemUrl()).toBe(DEFAULT_SITE_URL);
89
+ });
90
+ it('uses CONVEX_SITE_URL when set (dev deployment)', () => {
91
+ process.env.CONVEX_SITE_URL = 'https://my-dev-deploy.convex.site';
92
+ expect(resolveConnectRedeemUrl()).toBe('https://my-dev-deploy.convex.site');
93
+ });
94
+ it('PB_CONNECT_GATEWAY_URL wins over CONVEX_SITE_URL', () => {
95
+ process.env.CONVEX_SITE_URL = 'https://my-dev-deploy.convex.site';
96
+ process.env.PB_CONNECT_GATEWAY_URL = 'https://custom-gateway.example.com/';
97
+ expect(resolveConnectRedeemUrl()).toBe('https://custom-gateway.example.com');
98
+ });
99
+ it('CLI gateway overrides all env vars', () => {
100
+ process.env.PB_CONNECT_GATEWAY_URL = 'https://env-gateway.example.com';
101
+ process.env.CONVEX_SITE_URL = 'https://my-dev-deploy.convex.site';
102
+ expect(resolveConnectRedeemUrl('https://cli-gateway.example.com')).toBe('https://cli-gateway.example.com');
103
+ });
104
+ it('trims trailing slash from all sources', () => {
105
+ expect(resolveConnectRedeemUrl('https://example.com/foo/')).toBe('https://example.com/foo');
106
+ process.env.CONVEX_SITE_URL = 'https://deploy.convex.site/';
107
+ expect(resolveConnectRedeemUrl()).toBe('https://deploy.convex.site');
108
+ });
109
+ it('ignores PB_ENV — Convex HTTP Actions are always cloud-hosted', () => {
110
+ process.env.PB_ENV = 'dev';
111
+ expect(resolveConnectRedeemUrl()).toBe(DEFAULT_SITE_URL);
112
+ delete process.env.PB_ENV;
113
+ });
114
+ });
68
115
  describe('isDevMode', () => {
69
116
  let originalPbEnv;
70
117
  beforeEach(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"constants.test.js","sourceRoot":"","sources":["../../src/__tests__/constants.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"constants.test.js","sourceRoot":"","sources":["../../src/__tests__/constants.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * pb admin — Builder operations surface (WP-312 S2, FEAT-969).
3
+ *
4
+ * Subcommand group exposing admin operations via /api/admin (STD-101).
5
+ * Separate from /api/mcp knowledge operations (BR-109).
6
+ *
7
+ * Categories:
8
+ * pb admin seed → seed operations (S3)
9
+ * pb admin inspect → inspect operations (S4)
10
+ *
11
+ * Shared flags: --dry-run, --json (inherited from global program)
12
+ * Environment sourced from active profile (same as all other pb commands).
13
+ */
14
+ import { Command } from 'commander';
15
+ /** Build the admin subcommand group for registration in index.ts. */
16
+ export declare function createAdminCommand(): Command;
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/admin/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,qEAAqE;AACrE,wBAAgB,kBAAkB,IAAI,OAAO,CAkB5C"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * pb admin — Builder operations surface (WP-312 S2, FEAT-969).
3
+ *
4
+ * Subcommand group exposing admin operations via /api/admin (STD-101).
5
+ * Separate from /api/mcp knowledge operations (BR-109).
6
+ *
7
+ * Categories:
8
+ * pb admin seed → seed operations (S3)
9
+ * pb admin inspect → inspect operations (S4)
10
+ *
11
+ * Shared flags: --dry-run, --json (inherited from global program)
12
+ * Environment sourced from active profile (same as all other pb commands).
13
+ */
14
+ import { Command } from 'commander';
15
+ import { attachInspectCommands } from './inspect.js';
16
+ import { attachSeedCommands } from './seed.js';
17
+ /** Build the admin subcommand group for registration in index.ts. */
18
+ export function createAdminCommand() {
19
+ const admin = new Command('admin')
20
+ .description('Builder operations: seed, inspect (WP-312)');
21
+ const seed = new Command('seed')
22
+ .description('Seed workspace data — system collections, glossary entries, etc.');
23
+ attachSeedCommands(seed);
24
+ const inspect = new Command('inspect')
25
+ .description('Inspect workspace state — entries, collections, relation integrity, etc.');
26
+ attachInspectCommands(inspect);
27
+ admin.addCommand(seed);
28
+ admin.addCommand(inspect);
29
+ return admin;
30
+ }
31
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/admin/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAE/C,qEAAqE;AACrE,MAAM,UAAU,kBAAkB;IAChC,MAAM,KAAK,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC;SAC/B,WAAW,CAAC,4CAA4C,CAAC,CAAC;IAE7D,MAAM,IAAI,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;SAC7B,WAAW,CAAC,kEAAkE,CAAC,CAAC;IAEnF,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAEzB,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,SAAS,CAAC;SACnC,WAAW,CAAC,0EAA0E,CAAC,CAAC;IAE3F,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAE/B,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACvB,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAE1B,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * pb admin inspect — read-only workspace and platform inspection (WP-312 S4, FEAT-971).
3
+ *
4
+ * Command names mirror `convex/admin/commandManifest.ts` — behavior is server-side (STD-101).
5
+ */
6
+ import { Command } from 'commander';
7
+ /** Session or explicit `--workspace-id` (same contract as seed S3). */
8
+ export declare function resolveWorkspaceArg(explicit?: string): string | undefined;
9
+ export declare function requireWorkspaceArg(explicit?: string): string;
10
+ /** Attach inspect subcommands to the `inspect` Commander node. */
11
+ export declare function attachInspectCommands(inspect: Command): void;
12
+ //# sourceMappingURL=inspect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspect.d.ts","sourceRoot":"","sources":["../../../src/commands/admin/inspect.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,uEAAuE;AACvE,wBAAgB,mBAAmB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAGzE;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAS7D;AA4HD,kEAAkE;AAClE,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuJ5D"}
@@ -0,0 +1,217 @@
1
+ /**
2
+ * pb admin inspect — read-only workspace and platform inspection (WP-312 S4, FEAT-971).
3
+ *
4
+ * Command names mirror `convex/admin/commandManifest.ts` — behavior is server-side (STD-101).
5
+ */
6
+ import { adminCall } from '../../lib/client.js';
7
+ import { getConfig } from '../../lib/config.js';
8
+ import { CLIError, ErrorCode } from '../../lib/errors.js';
9
+ import { readSession } from '../../lib/session.js';
10
+ import { isJsonMode } from '../../lib/runner.js';
11
+ import { withSpinner } from '../../lib/spinner.js';
12
+ import { adminBanner, bold, dim, green, heading, hint, icons, red } from '../../lib/style.js';
13
+ /** Session or explicit `--workspace-id` (same contract as seed S3). */
14
+ export function resolveWorkspaceArg(explicit) {
15
+ if (explicit)
16
+ return explicit;
17
+ return readSession()?.workspaceId;
18
+ }
19
+ export function requireWorkspaceArg(explicit) {
20
+ const id = resolveWorkspaceArg(explicit);
21
+ if (!id) {
22
+ throw new CLIError('Workspace id required — pass --workspace-id or run `pb session start` in this project.', { code: ErrorCode.VALIDATION_FAILED, category: 'validation' });
23
+ }
24
+ return id;
25
+ }
26
+ function filterCompletenessForWorkspace(completeness, workspaceId) {
27
+ if (!completeness || typeof completeness !== 'object') {
28
+ return { global: completeness, workspaceFindings: [] };
29
+ }
30
+ const c = completeness;
31
+ const findings = Array.isArray(c.findings) ? c.findings : [];
32
+ const workspaceFindings = findings.filter((f) => f.workspaceId === workspaceId);
33
+ return { global: completeness, workspaceFindings };
34
+ }
35
+ function printHealthDashboard(data) {
36
+ adminBanner(getConfig().siteUrl);
37
+ process.stdout.write(`${bold('Admin inspect — health dashboard')}\n\n`);
38
+ process.stdout.write(`${heading('Readiness config')}\n`);
39
+ process.stdout.write(dim(JSON.stringify(data.readiness, null, 2)) + '\n\n');
40
+ if (!data.workspaceId) {
41
+ process.stdout.write(dim('Workspace-scoped panels skipped — pass --workspace-id (or use an active session).\n'));
42
+ return;
43
+ }
44
+ process.stdout.write(`${heading('Collections')}\n`);
45
+ process.stdout.write(dim(JSON.stringify(data.collections, null, 2)) + '\n\n');
46
+ process.stdout.write(`${heading('Data consistency')}\n`);
47
+ process.stdout.write(dim(JSON.stringify(data.consistency, null, 2)) + '\n\n');
48
+ process.stdout.write(`${heading('Draft debt')}\n`);
49
+ process.stdout.write(dim(JSON.stringify(data.drafts, null, 2)) + '\n');
50
+ hint('Read-only — no confirmation required.');
51
+ }
52
+ function printCollectionsMerged(workspaceId, collection, completeness, workspaceFindings) {
53
+ adminBanner(getConfig().siteUrl);
54
+ process.stdout.write(`${bold('Collections + completeness')}\n`);
55
+ process.stdout.write(dim(`workspaceId: ${workspaceId}`) + '\n\n');
56
+ if (collection && typeof collection === 'object' && 'collections' in collection) {
57
+ const c = collection;
58
+ process.stdout.write(`${c.workspace.name} (${c.workspace.slug}) — ${c.totalCollections} collections, ${c.totalEntries} entries\n\n`);
59
+ const missingBySlug = new Map();
60
+ for (const f of workspaceFindings) {
61
+ missingBySlug.set(f.slug, f.missing);
62
+ }
63
+ const wSlug = 24;
64
+ const wCount = 8;
65
+ process.stdout.write(`${bold('Slug'.padEnd(wSlug))} ${bold('Entries'.padStart(wCount))} ${bold('Completeness gaps')}\n`);
66
+ for (const row of c.collections) {
67
+ const gaps = missingBySlug.get(row.slug);
68
+ const gapStr = gaps && gaps.length > 0 ? red(gaps.join(', ')) : green(icons.pass + ' ok');
69
+ process.stdout.write(`${row.slug.padEnd(wSlug)} ${String(row.entryCount).padStart(wCount)} ${gapStr}\n`);
70
+ }
71
+ }
72
+ else {
73
+ process.stdout.write(dim(JSON.stringify(collection, null, 2)) + '\n');
74
+ }
75
+ process.stdout.write(`\n${heading('Global completeness summary (platform)')}\n`);
76
+ process.stdout.write(dim(JSON.stringify(completeness, null, 2)) + '\n');
77
+ hint('inspect:collection-completeness is platform-wide; rows above filter findings to this workspace.');
78
+ }
79
+ function printPeopleDuplicates(workspaceId, duplicates) {
80
+ adminBanner(getConfig().siteUrl);
81
+ if (!Array.isArray(duplicates)) {
82
+ process.stdout.write(dim(JSON.stringify(duplicates, null, 2)) + '\n');
83
+ return;
84
+ }
85
+ const forWs = duplicates.filter((d) => String(d.workspaceId) === String(workspaceId));
86
+ process.stdout.write(`${bold('People duplicates')}\n`);
87
+ process.stdout.write(dim(`workspaceId: ${workspaceId}`) + '\n\n');
88
+ if (forWs.length === 0) {
89
+ process.stdout.write(`${green(icons.pass)} No duplicate (workspaceId, clerkUserId) pairs for this workspace.\n`);
90
+ return;
91
+ }
92
+ process.stdout.write(`${red(icons.fail)} ${forWs.length} duplicate group(s):\n\n`);
93
+ for (const d of forWs) {
94
+ process.stdout.write(dim(JSON.stringify(d, null, 2)) + '\n\n');
95
+ }
96
+ }
97
+ /** Attach inspect subcommands to the `inspect` Commander node. */
98
+ export function attachInspectCommands(inspect) {
99
+ inspect
100
+ .command('health')
101
+ .description('Combined dashboard: readiness + collection counts + consistency + draft debt')
102
+ .option('--workspace-id <id>', 'Workspace id (defaults to session workspace when set)')
103
+ .action(async (options) => {
104
+ const ws = resolveWorkspaceArg(options.workspaceId);
105
+ const payload = await withSpinner('Loading admin health', async () => {
106
+ if (!ws) {
107
+ const readiness = await adminCall('inspect:readiness-config', {});
108
+ return {
109
+ readiness,
110
+ collections: null,
111
+ consistency: null,
112
+ drafts: null,
113
+ workspaceId: null,
114
+ };
115
+ }
116
+ const [readiness, collections, consistency, drafts] = await Promise.all([
117
+ adminCall('inspect:readiness-config', {}),
118
+ adminCall('inspect:collection', { workspaceId: ws }),
119
+ adminCall('diagnose:data-consistency', { workspaceId: ws }),
120
+ adminCall('diagnose:draft-debt', { workspaceId: ws }),
121
+ ]);
122
+ return { readiness, collections, consistency, drafts, workspaceId: ws };
123
+ });
124
+ if (isJsonMode()) {
125
+ process.stdout.write(JSON.stringify({
126
+ readiness: payload.readiness,
127
+ collections: payload.collections,
128
+ consistency: payload.consistency,
129
+ drafts: payload.drafts,
130
+ }, null, 2) + '\n');
131
+ return;
132
+ }
133
+ printHealthDashboard({
134
+ readiness: payload.readiness,
135
+ collections: payload.collections,
136
+ consistency: payload.consistency,
137
+ drafts: payload.drafts,
138
+ workspaceId: payload.workspaceId ?? null,
139
+ });
140
+ });
141
+ inspect
142
+ .command('workspace')
143
+ .description('Workspace health diagnostic (diagnose:workspace)')
144
+ .option('--workspace-id <id>', 'Workspace id (defaults to session workspace when set)')
145
+ .action(async (options) => {
146
+ const ws = requireWorkspaceArg(options.workspaceId);
147
+ const data = await withSpinner('Diagnosing workspace', () => adminCall('diagnose:workspace', { workspaceId: ws }));
148
+ if (isJsonMode()) {
149
+ process.stdout.write(JSON.stringify(data, null, 2) + '\n');
150
+ return;
151
+ }
152
+ adminBanner(getConfig().siteUrl);
153
+ process.stdout.write(dim(JSON.stringify(data, null, 2)) + '\n');
154
+ });
155
+ inspect
156
+ .command('collections')
157
+ .description('Collection entry counts + completeness signals (inspect:collection + inspect:collection-completeness)')
158
+ .option('--workspace-id <id>', 'Workspace id (defaults to session workspace when set)')
159
+ .action(async (options) => {
160
+ const ws = requireWorkspaceArg(options.workspaceId);
161
+ const [collection, completeness] = await withSpinner('Inspecting collections', () => Promise.all([
162
+ adminCall('inspect:collection', { workspaceId: ws }),
163
+ adminCall('inspect:collection-completeness', { limit: 500 }),
164
+ ]));
165
+ const { workspaceFindings } = filterCompletenessForWorkspace(completeness, ws);
166
+ if (isJsonMode()) {
167
+ process.stdout.write(JSON.stringify({ collection, completeness, workspaceCompletenessFindings: workspaceFindings }, null, 2) + '\n');
168
+ return;
169
+ }
170
+ printCollectionsMerged(ws, collection, completeness, workspaceFindings);
171
+ });
172
+ inspect
173
+ .command('users')
174
+ .description('Duplicate people entries for a workspace (inspect:people-duplicates, filtered)')
175
+ .option('--workspace-id <id>', 'Workspace id (defaults to session workspace when set)')
176
+ .action(async (options) => {
177
+ const ws = requireWorkspaceArg(options.workspaceId);
178
+ const duplicates = await withSpinner('Checking people duplicates', () => adminCall('inspect:people-duplicates', {}));
179
+ if (isJsonMode()) {
180
+ const list = Array.isArray(duplicates)
181
+ ? duplicates.filter((d) => String(d.workspaceId) === String(ws))
182
+ : duplicates;
183
+ process.stdout.write(JSON.stringify({ workspaceId: ws, duplicates: list }, null, 2) + '\n');
184
+ return;
185
+ }
186
+ printPeopleDuplicates(ws, duplicates);
187
+ });
188
+ inspect
189
+ .command('data-consistency')
190
+ .description('Data consistency diagnostic (diagnose:data-consistency)')
191
+ .option('--workspace-id <id>', 'Workspace id (defaults to session workspace when set)')
192
+ .action(async (options) => {
193
+ const ws = requireWorkspaceArg(options.workspaceId);
194
+ const data = await withSpinner('Running data consistency check', () => adminCall('diagnose:data-consistency', { workspaceId: ws }));
195
+ if (isJsonMode()) {
196
+ process.stdout.write(JSON.stringify(data, null, 2) + '\n');
197
+ return;
198
+ }
199
+ adminBanner(getConfig().siteUrl);
200
+ process.stdout.write(dim(JSON.stringify(data, null, 2)) + '\n');
201
+ });
202
+ inspect
203
+ .command('drafts')
204
+ .description('Draft debt report (diagnose:draft-debt)')
205
+ .option('--workspace-id <id>', 'Workspace id (defaults to session workspace when set)')
206
+ .action(async (options) => {
207
+ const ws = requireWorkspaceArg(options.workspaceId);
208
+ const data = await withSpinner('Checking draft debt', () => adminCall('diagnose:draft-debt', { workspaceId: ws }));
209
+ if (isJsonMode()) {
210
+ process.stdout.write(JSON.stringify(data, null, 2) + '\n');
211
+ return;
212
+ }
213
+ adminBanner(getConfig().siteUrl);
214
+ process.stdout.write(dim(JSON.stringify(data, null, 2)) + '\n');
215
+ });
216
+ }
217
+ //# sourceMappingURL=inspect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../../src/commands/admin/inspect.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAE9F,uEAAuE;AACvE,MAAM,UAAU,mBAAmB,CAAC,QAAiB;IACnD,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,OAAO,WAAW,EAAE,EAAE,WAAW,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,QAAiB;IACnD,MAAM,EAAE,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IACzC,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,MAAM,IAAI,QAAQ,CAChB,wFAAwF,EACxF,EAAE,IAAI,EAAE,SAAS,CAAC,iBAAiB,EAAE,QAAQ,EAAE,YAAY,EAAE,CAC9D,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAID,SAAS,8BAA8B,CACrC,YAAqB,EACrB,WAAmB;IAEnB,IAAI,CAAC,YAAY,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;QACtD,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,iBAAiB,EAAE,EAAE,EAAE,CAAC;IACzD,CAAC;IACD,MAAM,CAAC,GAAG,YAAoD,CAAC;IAC/D,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7D,MAAM,iBAAiB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,WAAW,CAAC,CAAC;IAChF,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,iBAAiB,EAAE,CAAC;AACrD,CAAC;AAED,SAAS,oBAAoB,CAAC,IAM7B;IACC,WAAW,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC;IAEjC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,kCAAkC,CAAC,MAAM,CAAC,CAAC;IAExE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACzD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;IAE5E,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,GAAG,CAAC,qFAAqF,CAAC,CAC3F,CAAC;QACF,OAAO;IACT,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IACpD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;IAE9E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACzD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;IAE9E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACnD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAEvE,IAAI,CAAC,uCAAuC,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,sBAAsB,CAC7B,WAAmB,EACnB,UAAmB,EACnB,YAAqB,EACrB,iBAAwC;IAExC,WAAW,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC;IAEjC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,CAAC;IAChE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,WAAW,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC;IAElE,IAAI,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,aAAa,IAAI,UAAU,EAAE,CAAC;QAChF,MAAM,CAAC,GAAG,UAKT,CAAC;QACF,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,GAAG,CAAC,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,CAAC,gBAAgB,iBAAiB,CAAC,CAAC,YAAY,cAAc,CAC/G,CAAC;QAEF,MAAM,aAAa,GAAG,IAAI,GAAG,EAAoB,CAAC;QAClD,KAAK,MAAM,CAAC,IAAI,iBAAiB,EAAE,CAAC;YAClC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;QACvC,CAAC;QAED,MAAM,KAAK,GAAG,EAAE,CAAC;QACjB,MAAM,MAAM,GAAG,CAAC,CAAC;QACjB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI,CAAC,mBAAmB,CAAC,IAAI,CACrG,CAAC;QACF,KAAK,MAAM,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;YAChC,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACzC,MAAM,MAAM,GACV,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC;YAC7E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,MAAM,IAAI,CAAC,CAAC;QAC7G,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACxE,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,OAAO,CAAC,wCAAwC,CAAC,IAAI,CAAC,CAAC;IACjF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAExE,IAAI,CAAC,iGAAiG,CAAC,CAAC;AAC1G,CAAC;AAED,SAAS,qBAAqB,CAAC,WAAmB,EAAE,UAAmB;IACrE,WAAW,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC;IAEjC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QACtE,OAAO;IACT,CAAC;IAED,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAC7B,CAAC,CAA2B,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,MAAM,CAAC,WAAW,CAAC,CAC/E,CAAC;IAEF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACvD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,WAAW,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC;IAElE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,sEAAsE,CAAC,CAAC;QACjH,OAAO;IACT,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,MAAM,0BAA0B,CAAC,CAAC;IACnF,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;IACjE,CAAC;AACH,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,8EAA8E,CAAC;SAC3F,MAAM,CAAC,qBAAqB,EAAE,uDAAuD,CAAC;SACtF,MAAM,CAAC,KAAK,EAAE,OAAiC,EAAE,EAAE;QAClD,MAAM,EAAE,GAAG,mBAAmB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAEpD,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;YACnE,IAAI,CAAC,EAAE,EAAE,CAAC;gBACR,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,0BAA0B,EAAE,EAAE,CAAC,CAAC;gBAClE,OAAO;oBACL,SAAS;oBACT,WAAW,EAAE,IAAI;oBACjB,WAAW,EAAE,IAAI;oBACjB,MAAM,EAAE,IAAI;oBACZ,WAAW,EAAE,IAAqB;iBACnC,CAAC;YACJ,CAAC;YAED,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBACtE,SAAS,CAAC,0BAA0B,EAAE,EAAE,CAAC;gBACzC,SAAS,CAAC,oBAAoB,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;gBACpD,SAAS,CAAC,2BAA2B,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;gBAC3D,SAAS,CAAC,qBAAqB,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;aACtD,CAAC,CAAC;YAEH,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;QAC1E,CAAC,CAAC,CAAC;QAEH,IAAI,UAAU,EAAE,EAAE,CAAC;YACjB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,IAAI,CAAC,SAAS,CACZ;gBACE,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,MAAM,EAAE,OAAO,CAAC,MAAM;aACvB,EACD,IAAI,EACJ,CAAC,CACF,GAAG,IAAI,CACT,CAAC;YACF,OAAO;QACT,CAAC;QAED,oBAAoB,CAAC;YACnB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,IAAI;SACzC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CAAC,kDAAkD,CAAC;SAC/D,MAAM,CAAC,qBAAqB,EAAE,uDAAuD,CAAC;SACtF,MAAM,CAAC,KAAK,EAAE,OAAiC,EAAE,EAAE;QAClD,MAAM,EAAE,GAAG,mBAAmB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACpD,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,sBAAsB,EAAE,GAAG,EAAE,CAC1D,SAAS,CAAC,oBAAoB,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CACrD,CAAC;QACF,IAAI,UAAU,EAAE,EAAE,CAAC;YACjB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YAC3D,OAAO;QACT,CAAC;QACD,WAAW,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC;QACjC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,aAAa,CAAC;SACtB,WAAW,CAAC,uGAAuG,CAAC;SACpH,MAAM,CAAC,qBAAqB,EAAE,uDAAuD,CAAC;SACtF,MAAM,CAAC,KAAK,EAAE,OAAiC,EAAE,EAAE;QAClD,MAAM,EAAE,GAAG,mBAAmB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACpD,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,GAAG,MAAM,WAAW,CAAC,wBAAwB,EAAE,GAAG,EAAE,CAClF,OAAO,CAAC,GAAG,CAAC;YACV,SAAS,CAAC,oBAAoB,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;YACpD,SAAS,CAAC,iCAAiC,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;SAC7D,CAAC,CACH,CAAC;QAEF,MAAM,EAAE,iBAAiB,EAAE,GAAG,8BAA8B,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;QAE/E,IAAI,UAAU,EAAE,EAAE,CAAC;YACjB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,YAAY,EAAE,6BAA6B,EAAE,iBAAiB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAC/G,CAAC;YACF,OAAO;QACT,CAAC;QAED,sBAAsB,CAAC,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE,iBAAiB,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,gFAAgF,CAAC;SAC7F,MAAM,CAAC,qBAAqB,EAAE,uDAAuD,CAAC;SACtF,MAAM,CAAC,KAAK,EAAE,OAAiC,EAAE,EAAE;QAClD,MAAM,EAAE,GAAG,mBAAmB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACpD,MAAM,UAAU,GAAG,MAAM,WAAW,CAAC,4BAA4B,EAAE,GAAG,EAAE,CACtE,SAAS,CAAC,2BAA2B,EAAE,EAAE,CAAC,CAC3C,CAAC;QAEF,IAAI,UAAU,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;gBACpC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAA2B,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC;gBAC1F,CAAC,CAAC,UAAU,CAAC;YACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YAC5F,OAAO;QACT,CAAC;QAED,qBAAqB,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,kBAAkB,CAAC;SAC3B,WAAW,CAAC,yDAAyD,CAAC;SACtE,MAAM,CAAC,qBAAqB,EAAE,uDAAuD,CAAC;SACtF,MAAM,CAAC,KAAK,EAAE,OAAiC,EAAE,EAAE;QAClD,MAAM,EAAE,GAAG,mBAAmB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACpD,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,gCAAgC,EAAE,GAAG,EAAE,CACpE,SAAS,CAAC,2BAA2B,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAC5D,CAAC;QACF,IAAI,UAAU,EAAE,EAAE,CAAC;YACjB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YAC3D,OAAO;QACT,CAAC;QACD,WAAW,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC;QACjC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,yCAAyC,CAAC;SACtD,MAAM,CAAC,qBAAqB,EAAE,uDAAuD,CAAC;SACtF,MAAM,CAAC,KAAK,EAAE,OAAiC,EAAE,EAAE;QAClD,MAAM,EAAE,GAAG,mBAAmB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACpD,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,qBAAqB,EAAE,GAAG,EAAE,CACzD,SAAS,CAAC,qBAAqB,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CACtD,CAAC;QACF,IAAI,UAAU,EAAE,EAAE,CAAC;YACjB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YAC3D,OAAO;QACT,CAAC;QACD,WAAW,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC;QACjC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Tests for pb admin inspect helpers — resolveWorkspaceArg / requireWorkspaceArg (WP-312 S4, FEAT-971).
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=inspect.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspect.test.d.ts","sourceRoot":"","sources":["../../../src/commands/admin/inspect.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Tests for pb admin inspect helpers — resolveWorkspaceArg / requireWorkspaceArg (WP-312 S4, FEAT-971).
3
+ */
4
+ import { describe, it, expect, vi } from 'vitest';
5
+ import { readSession } from '../../lib/session.js';
6
+ import { resolveWorkspaceArg, requireWorkspaceArg } from './inspect.js';
7
+ vi.mock('../../lib/session.js', () => ({
8
+ readSession: vi.fn(() => null),
9
+ }));
10
+ describe('resolveWorkspaceArg', () => {
11
+ it('returns explicit id when provided', () => {
12
+ expect(resolveWorkspaceArg('ws-explicit')).toBe('ws-explicit');
13
+ });
14
+ it('returns undefined when no explicit id and session mocked null', () => {
15
+ expect(resolveWorkspaceArg()).toBeUndefined();
16
+ expect(resolveWorkspaceArg(undefined)).toBeUndefined();
17
+ });
18
+ });
19
+ describe('requireWorkspaceArg', () => {
20
+ it('returns explicit id when provided', () => {
21
+ expect(requireWorkspaceArg('ws-123')).toBe('ws-123');
22
+ });
23
+ it('throws when missing and no session', () => {
24
+ expect(() => requireWorkspaceArg()).toThrow(/Workspace id required/);
25
+ expect(() => requireWorkspaceArg(undefined)).toThrow(/Workspace id required/);
26
+ });
27
+ });
28
+ describe('resolveWorkspaceArg with session', () => {
29
+ it('falls back to session workspaceId', () => {
30
+ vi.mocked(readSession).mockReturnValueOnce({
31
+ sessionId: 's1',
32
+ workspaceId: 'ws-from-session',
33
+ workspaceName: 'Test',
34
+ startedAt: '',
35
+ entriesCaptured: [],
36
+ });
37
+ expect(resolveWorkspaceArg()).toBe('ws-from-session');
38
+ });
39
+ });
40
+ //# sourceMappingURL=inspect.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspect.test.js","sourceRoot":"","sources":["../../../src/commands/admin/inspect.test.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAExE,EAAE,CAAC,IAAI,CAAC,sBAAsB,EAAE,GAAG,EAAE,CAAC,CAAC;IACrC,WAAW,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;CAC/B,CAAC,CAAC,CAAC;AAEJ,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,MAAM,CAAC,mBAAmB,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC;QAC9C,MAAM,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;IACzD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,CAAC,GAAG,EAAE,CAAC,mBAAmB,EAAE,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;QACrE,MAAM,CAAC,GAAG,EAAE,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;IAChF,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,kCAAkC,EAAE,GAAG,EAAE;IAChD,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,mBAAmB,CAAC;YACzC,SAAS,EAAE,IAAI;YACf,WAAW,EAAE,iBAAiB;YAC9B,aAAa,EAAE,MAAM;YACrB,SAAS,EAAE,EAAE;YACb,eAAe,EAAE,EAAE;SACpB,CAAC,CAAC;QACH,MAAM,CAAC,mBAAmB,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * pb admin seed — workspace and platform seed operations (WP-312 S3, FEAT-970).
3
+ *
4
+ * Seed metadata is duplicated from `convex/admin/commandManifest.ts` for CLI help
5
+ * and ordering only — behavior is enforced server-side (STD-101).
6
+ */
7
+ import { Command } from 'commander';
8
+ export type SeedCommandMeta = {
9
+ /** Manifest name, e.g. seed:knowledge */
10
+ name: string;
11
+ description: string;
12
+ requiresWorkspaceId: boolean;
13
+ dryRunSupported: boolean;
14
+ /** When true, require explicit acknowledgment in production */
15
+ dangerous?: boolean;
16
+ };
17
+ /**
18
+ * Order matches `ADMIN_COMMANDS` seed block in commandManifest.ts — dependency order for `seed all`.
19
+ */
20
+ export declare const SEED_COMMAND_ENTRIES: readonly SeedCommandMeta[];
21
+ /** Manifest order for `pb admin seed all`. */
22
+ export declare const SEED_MANIFEST_ORDER: readonly string[];
23
+ /** Accept `knowledge` or `seed:knowledge`. */
24
+ export declare function normalizeSeedCommandName(input: string): string;
25
+ export declare function buildSeedArgs(manifestName: string, opts: {
26
+ workspaceId?: string;
27
+ dryRun?: boolean;
28
+ presetId?: string;
29
+ }): Record<string, unknown>;
30
+ /** Attach seed subcommands to the `seed` Commander node. */
31
+ export declare function attachSeedCommands(seed: Command): void;
32
+ //# sourceMappingURL=seed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seed.d.ts","sourceRoot":"","sources":["../../../src/commands/admin/seed.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoBpC,MAAM,MAAM,eAAe,GAAG;IAC5B,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,eAAe,EAAE,OAAO,CAAC;IACzB,+DAA+D;IAC/D,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,SAAS,eAAe,EAqFjD,CAAC;AAIX,8CAA8C;AAC9C,eAAO,MAAM,mBAAmB,EAAE,SAAS,MAAM,EAA4C,CAAC;AAe9F,8CAA8C;AAC9C,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAiB9D;AAkBD,wBAAgB,aAAa,CAC3B,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAClE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAmCzB;AAoFD,4DAA4D;AAC5D,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CA4JtD"}