@productbrain/cli 0.1.0-beta.40 → 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.
- package/dist/commands/admin/index.d.ts +17 -0
- package/dist/commands/admin/index.d.ts.map +1 -0
- package/dist/commands/admin/index.js +31 -0
- package/dist/commands/admin/index.js.map +1 -0
- package/dist/commands/admin/inspect.d.ts +12 -0
- package/dist/commands/admin/inspect.d.ts.map +1 -0
- package/dist/commands/admin/inspect.js +217 -0
- package/dist/commands/admin/inspect.js.map +1 -0
- package/dist/commands/admin/inspect.test.d.ts +5 -0
- package/dist/commands/admin/inspect.test.d.ts.map +1 -0
- package/dist/commands/admin/inspect.test.js +40 -0
- package/dist/commands/admin/inspect.test.js.map +1 -0
- package/dist/commands/admin/seed.d.ts +32 -0
- package/dist/commands/admin/seed.d.ts.map +1 -0
- package/dist/commands/admin/seed.js +363 -0
- package/dist/commands/admin/seed.js.map +1 -0
- package/dist/commands/admin/seed.test.d.ts +6 -0
- package/dist/commands/admin/seed.test.d.ts.map +1 -0
- package/dist/commands/admin/seed.test.js +65 -0
- package/dist/commands/admin/seed.test.js.map +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/client.d.ts +8 -0
- package/dist/lib/client.d.ts.map +1 -1
- package/dist/lib/client.js +29 -0
- package/dist/lib/client.js.map +1 -1
- package/dist/lib/style.d.ts +22 -0
- package/dist/lib/style.d.ts.map +1 -1
- package/dist/lib/style.js +52 -0
- package/dist/lib/style.js.map +1 -1
- package/dist/lib/style.test.js +57 -1
- package/dist/lib/style.test.js.map +1 -1
- package/package.json +1 -1
|
@@ -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":"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"}
|
|
@@ -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"}
|