@productbrain/cli 0.1.0-beta.63 → 0.1.0-beta.65

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.
@@ -1,6 +1,7 @@
1
1
  /**
2
- * pb capture extensions — --link, --json flags.
2
+ * pb capture extensions — --link, --json flags, WP-319 grounding.
3
3
  * TEN-341 test contract: capture --link calls createEntryRelation, capture --json outputs JSON.
4
+ * WP-319 S3: grounding fires in parallel, fail-open, --suggest-only, --strict, PB_GROUNDING_MODE.
4
5
  */
5
6
  import { beforeEach, describe, expect, it, vi } from 'vitest';
6
7
  import { runCapture } from '../commands/capture.js';
@@ -23,9 +24,15 @@ describe('runCapture --link', () => {
23
24
  });
24
25
  it('creates entry then links to target with default relation type', async () => {
25
26
  // Prefix "TEN:" is extracted → skips classification, routes directly to tensions
26
- mcpCallWithSessionMock
27
- .mockResolvedValueOnce({ docId: 'doc-1', entryId: 'TEN-710' })
28
- .mockResolvedValueOnce({});
27
+ mcpCallWithSessionMock.mockImplementation((fn) => {
28
+ if (fn === 'chain.suggestLinksForCapture')
29
+ return Promise.resolve([]);
30
+ if (fn === 'chain.createEntry')
31
+ return Promise.resolve({ docId: 'doc-1', entryId: 'TEN-710' });
32
+ if (fn === 'chain.createEntryRelation')
33
+ return Promise.resolve({});
34
+ return Promise.resolve({});
35
+ });
29
36
  const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
30
37
  await runCapture({ text: 'TEN: missing validation', link: 'BET-151' });
31
38
  // Verify classification was skipped (no resolveCollection call)
@@ -44,9 +51,15 @@ describe('runCapture --link', () => {
44
51
  });
45
52
  it('uses custom relation type when --type provided', async () => {
46
53
  // Prefix "INS:" is extracted → skips classification, routes directly to insights
47
- mcpCallWithSessionMock
48
- .mockResolvedValueOnce({ docId: 'doc-2', entryId: 'INS-50' })
49
- .mockResolvedValueOnce({});
54
+ mcpCallWithSessionMock.mockImplementation((fn) => {
55
+ if (fn === 'chain.suggestLinksForCapture')
56
+ return Promise.resolve([]);
57
+ if (fn === 'chain.createEntry')
58
+ return Promise.resolve({ docId: 'doc-2', entryId: 'INS-50' });
59
+ if (fn === 'chain.createEntryRelation')
60
+ return Promise.resolve({});
61
+ return Promise.resolve({});
62
+ });
50
63
  const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
51
64
  await runCapture({ text: 'INS: discovered X', link: 'DEC-264', type: 'informed_by' });
52
65
  expect(mcpCallWithSessionMock).not.toHaveBeenCalledWith('chain.resolveCollection', expect.anything());
@@ -65,8 +78,13 @@ describe('runCapture --json', () => {
65
78
  });
66
79
  it('outputs valid JSON with id field and no other stdout', async () => {
67
80
  // Prefix "TEN:" is extracted → skips classification
68
- mcpCallWithSessionMock
69
- .mockResolvedValueOnce({ docId: 'doc-1', entryId: 'TEN-711' });
81
+ mcpCallWithSessionMock.mockImplementation((fn) => {
82
+ if (fn === 'chain.suggestLinksForCapture')
83
+ return Promise.resolve([]);
84
+ if (fn === 'chain.createEntry')
85
+ return Promise.resolve({ docId: 'doc-1', entryId: 'TEN-711' });
86
+ return Promise.resolve({});
87
+ });
70
88
  let stdoutOutput = '';
71
89
  const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation((chunk) => {
72
90
  stdoutOutput += String(chunk);
@@ -100,8 +118,13 @@ describe('runCapture description field routing', () => {
100
118
  // The CLI always sends `description` — the Convex write gate remaps it to `belief`
101
119
  // for the assumptions collection (TEN-1258). Verify the CLI routes correctly and
102
120
  // sends the text as description so the Convex remap can fire.
103
- mcpCallWithSessionMock
104
- .mockResolvedValueOnce({ docId: 'doc-5', entryId: 'ASM-1' });
121
+ mcpCallWithSessionMock.mockImplementation((fn) => {
122
+ if (fn === 'chain.suggestLinksForCapture')
123
+ return Promise.resolve([]);
124
+ if (fn === 'chain.createEntry')
125
+ return Promise.resolve({ docId: 'doc-5', entryId: 'ASM-1' });
126
+ return Promise.resolve({});
127
+ });
105
128
  const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
106
129
  await runCapture({ text: 'ASM: users won\'t pay before seeing value' });
107
130
  const createCall = mcpCallWithSessionMock.mock.calls.find(([fn]) => fn === 'chain.createEntry');
@@ -129,9 +152,15 @@ describe('runCapture date inference', () => {
129
152
  mockSession = { sessionId: 'sess-test' };
130
153
  });
131
154
  it('does not default date to today when no source date is present', async () => {
132
- mcpCallWithSessionMock
133
- .mockResolvedValueOnce({ collection: 'decisions', confidence: 0.9, tier: 'high' })
134
- .mockResolvedValueOnce({ docId: 'doc-3', entryId: 'DEC-10' });
155
+ mcpCallWithSessionMock.mockImplementation((fn) => {
156
+ if (fn === 'chain.suggestLinksForCapture')
157
+ return Promise.resolve([]);
158
+ if (fn === 'chain.resolveCollection')
159
+ return Promise.resolve({ collection: 'decisions', confidence: 0.9, tier: 'high' });
160
+ if (fn === 'chain.createEntry')
161
+ return Promise.resolve({ docId: 'doc-3', entryId: 'DEC-10' });
162
+ return Promise.resolve({});
163
+ });
135
164
  const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
136
165
  await runCapture({ text: 'Decision without explicit source date' });
137
166
  const createCall = mcpCallWithSessionMock.mock.calls.find(([fn]) => fn === 'chain.createEntry');
@@ -143,9 +172,15 @@ describe('runCapture date inference', () => {
143
172
  writeSpy.mockRestore();
144
173
  });
145
174
  it('uses inferred source date when the capture text includes one', async () => {
146
- mcpCallWithSessionMock
147
- .mockResolvedValueOnce({ collection: 'decisions', confidence: 0.9, tier: 'high' })
148
- .mockResolvedValueOnce({ docId: 'doc-4', entryId: 'DEC-11' });
175
+ mcpCallWithSessionMock.mockImplementation((fn) => {
176
+ if (fn === 'chain.suggestLinksForCapture')
177
+ return Promise.resolve([]);
178
+ if (fn === 'chain.resolveCollection')
179
+ return Promise.resolve({ collection: 'decisions', confidence: 0.9, tier: 'high' });
180
+ if (fn === 'chain.createEntry')
181
+ return Promise.resolve({ docId: 'doc-4', entryId: 'DEC-11' });
182
+ return Promise.resolve({});
183
+ });
149
184
  const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
150
185
  await runCapture({ text: 'Decision from April 1, 2026 steering meeting' });
151
186
  const createCall = mcpCallWithSessionMock.mock.calls.find(([fn]) => fn === 'chain.createEntry');
@@ -153,4 +188,190 @@ describe('runCapture date inference', () => {
153
188
  writeSpy.mockRestore();
154
189
  });
155
190
  });
191
+ // ---------------------------------------------------------------------------
192
+ // WP-319 S3: Pre-write grounding tests
193
+ // ---------------------------------------------------------------------------
194
+ describe('runCapture WP-319 grounding', () => {
195
+ const emptyGrounding = { index: 0, related: [], duplicates: [], governance: [], v: 1 };
196
+ const groundingWithDuplicate = {
197
+ index: 0,
198
+ related: [],
199
+ duplicates: [{ entryId: 'TEN-5', name: 'Similar tension', collectionSlug: 'tensions', matchType: 'possible_duplicate', overlapRatio: 0.9 }],
200
+ governance: [],
201
+ v: 1,
202
+ };
203
+ beforeEach(() => {
204
+ mcpCallWithSessionMock.mockReset();
205
+ mockSession = { sessionId: 'sess-test' };
206
+ delete process.env.PB_GROUNDING_MODE;
207
+ });
208
+ it('fires chain.suggestLinksForCapture in parallel and still calls createEntry', async () => {
209
+ // Prefix-based route skips classification; grounding fires for TEN prefix
210
+ mcpCallWithSessionMock
211
+ .mockImplementation((fn) => {
212
+ if (fn === 'chain.suggestLinksForCapture')
213
+ return Promise.resolve([emptyGrounding]);
214
+ if (fn === 'chain.createEntry')
215
+ return Promise.resolve({ docId: 'doc-1', entryId: 'TEN-720' });
216
+ return Promise.resolve({});
217
+ });
218
+ const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
219
+ const stderrSpy = vi.spyOn(process.stderr, 'write').mockImplementation(() => true);
220
+ await runCapture({ text: 'TEN: grounding test tension' });
221
+ expect(mcpCallWithSessionMock).toHaveBeenCalledWith('chain.suggestLinksForCapture', expect.objectContaining({
222
+ entries: expect.arrayContaining([expect.objectContaining({ name: 'grounding test tension' })]),
223
+ }));
224
+ expect(mcpCallWithSessionMock).toHaveBeenCalledWith('chain.createEntry', expect.anything());
225
+ writeSpy.mockRestore();
226
+ stderrSpy.mockRestore();
227
+ });
228
+ it('does NOT block capture when grounding call fails', async () => {
229
+ mcpCallWithSessionMock
230
+ .mockImplementation((fn) => {
231
+ if (fn === 'chain.suggestLinksForCapture')
232
+ return Promise.reject(new Error('network error'));
233
+ if (fn === 'chain.createEntry')
234
+ return Promise.resolve({ docId: 'doc-2', entryId: 'TEN-721' });
235
+ return Promise.resolve({});
236
+ });
237
+ const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
238
+ const stderrSpy = vi.spyOn(process.stderr, 'write').mockImplementation(() => true);
239
+ // Must not throw — grounding failure is fail-open
240
+ await expect(runCapture({ text: 'TEN: grounding failure test' })).resolves.toBeUndefined();
241
+ expect(mcpCallWithSessionMock).toHaveBeenCalledWith('chain.createEntry', expect.anything());
242
+ writeSpy.mockRestore();
243
+ stderrSpy.mockRestore();
244
+ });
245
+ it('--suggest-only does NOT call createEntry and outputs grounding data', async () => {
246
+ // In test env (non-TTY), isJsonMode() returns true → JSON path is taken.
247
+ mcpCallWithSessionMock
248
+ .mockImplementation((fn) => {
249
+ if (fn === 'chain.suggestLinksForCapture')
250
+ return Promise.resolve([groundingWithDuplicate]);
251
+ return Promise.resolve({});
252
+ });
253
+ let stdoutOutput = '';
254
+ const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation((chunk) => {
255
+ stdoutOutput += String(chunk);
256
+ return true;
257
+ });
258
+ const stderrSpy = vi.spyOn(process.stderr, 'write').mockImplementation(() => true);
259
+ await runCapture({ text: 'TEN: duplicate candidate', suggestOnly: true });
260
+ expect(mcpCallWithSessionMock).not.toHaveBeenCalledWith('chain.createEntry', expect.anything());
261
+ // JSON output contains suggestOnly flag and grounding report
262
+ const jsonLines = stdoutOutput.split('\n').filter((l) => { try {
263
+ JSON.parse(l);
264
+ return true;
265
+ }
266
+ catch {
267
+ return false;
268
+ } });
269
+ expect(jsonLines).toHaveLength(1);
270
+ const parsed = JSON.parse(jsonLines[0]);
271
+ expect(parsed.suggestOnly).toBe(true);
272
+ expect(parsed.groundingReport).toBeDefined();
273
+ writeSpy.mockRestore();
274
+ stderrSpy.mockRestore();
275
+ });
276
+ it('--suggest-only with --json outputs machine-readable object without calling createEntry', async () => {
277
+ mcpCallWithSessionMock
278
+ .mockImplementation((fn) => {
279
+ if (fn === 'chain.suggestLinksForCapture')
280
+ return Promise.resolve([emptyGrounding]);
281
+ return Promise.resolve({});
282
+ });
283
+ let stdoutOutput = '';
284
+ const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation((chunk) => {
285
+ stdoutOutput += String(chunk);
286
+ return true;
287
+ });
288
+ const stderrSpy = vi.spyOn(process.stderr, 'write').mockImplementation(() => true);
289
+ await runCapture({ text: 'TEN: dry run json', json: true, suggestOnly: true });
290
+ expect(mcpCallWithSessionMock).not.toHaveBeenCalledWith('chain.createEntry', expect.anything());
291
+ const jsonLines = stdoutOutput.split('\n').filter((l) => { try {
292
+ JSON.parse(l);
293
+ return true;
294
+ }
295
+ catch {
296
+ return false;
297
+ } });
298
+ expect(jsonLines).toHaveLength(1);
299
+ const parsed = JSON.parse(jsonLines[0]);
300
+ expect(parsed.suggestOnly).toBe(true);
301
+ writeSpy.mockRestore();
302
+ stderrSpy.mockRestore();
303
+ });
304
+ it('banner is suppressed when grounding has no matches (zero-noise floor)', async () => {
305
+ mcpCallWithSessionMock
306
+ .mockImplementation((fn) => {
307
+ if (fn === 'chain.suggestLinksForCapture')
308
+ return Promise.resolve([emptyGrounding]);
309
+ if (fn === 'chain.createEntry')
310
+ return Promise.resolve({ docId: 'doc-3', entryId: 'TEN-722' });
311
+ return Promise.resolve({});
312
+ });
313
+ const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
314
+ const stderrLines = [];
315
+ const stderrSpy = vi.spyOn(process.stderr, 'write').mockImplementation((chunk) => {
316
+ stderrLines.push(String(chunk));
317
+ return true;
318
+ });
319
+ await runCapture({ text: 'TEN: no matches tension' });
320
+ // No "Grounding" banner in stderr when zero matches
321
+ const groundingInStderr = stderrLines.some((l) => l.includes('Grounding'));
322
+ expect(groundingInStderr).toBe(false);
323
+ writeSpy.mockRestore();
324
+ stderrSpy.mockRestore();
325
+ });
326
+ it('PB_GROUNDING_MODE=off skips grounding call entirely', async () => {
327
+ process.env.PB_GROUNDING_MODE = 'off';
328
+ mcpCallWithSessionMock
329
+ .mockImplementation((fn) => {
330
+ if (fn === 'chain.createEntry')
331
+ return Promise.resolve({ docId: 'doc-4', entryId: 'TEN-723' });
332
+ return Promise.resolve({});
333
+ });
334
+ const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
335
+ const stderrSpy = vi.spyOn(process.stderr, 'write').mockImplementation(() => true);
336
+ await runCapture({ text: 'TEN: no grounding env off' });
337
+ expect(mcpCallWithSessionMock).not.toHaveBeenCalledWith('chain.suggestLinksForCapture', expect.anything());
338
+ expect(mcpCallWithSessionMock).toHaveBeenCalledWith('chain.createEntry', expect.anything());
339
+ delete process.env.PB_GROUNDING_MODE;
340
+ writeSpy.mockRestore();
341
+ stderrSpy.mockRestore();
342
+ });
343
+ it('--json output stdout is clean (no grounding on stdout)', async () => {
344
+ mcpCallWithSessionMock
345
+ .mockImplementation((fn) => {
346
+ if (fn === 'chain.suggestLinksForCapture')
347
+ return Promise.resolve([groundingWithDuplicate]);
348
+ if (fn === 'chain.createEntry')
349
+ return Promise.resolve({ docId: 'doc-5', entryId: 'TEN-724' });
350
+ return Promise.resolve({});
351
+ });
352
+ let stdoutOutput = '';
353
+ const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation((chunk) => {
354
+ stdoutOutput += String(chunk);
355
+ return true;
356
+ });
357
+ const stderrSpy = vi.spyOn(process.stderr, 'write').mockImplementation(() => true);
358
+ await runCapture({ text: 'TEN: json clean stdout', json: true });
359
+ // Stdout must be exactly one valid JSON line (jq .id must work)
360
+ const jsonLines = stdoutOutput.split('\n').filter((l) => { try {
361
+ JSON.parse(l);
362
+ return true;
363
+ }
364
+ catch {
365
+ return false;
366
+ } });
367
+ expect(jsonLines).toHaveLength(1);
368
+ const parsed = JSON.parse(jsonLines[0]);
369
+ expect(parsed.id).toBe('TEN-724');
370
+ // No grounding content in stdout
371
+ expect(stdoutOutput).not.toContain('Grounding');
372
+ expect(stdoutOutput).not.toContain('duplicate');
373
+ writeSpy.mockRestore();
374
+ stderrSpy.mockRestore();
375
+ });
376
+ });
156
377
  //# sourceMappingURL=capture.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"capture.test.js","sourceRoot":"","sources":["../../src/__tests__/capture.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"capture.test.js","sourceRoot":"","sources":["../../src/__tests__/capture.test.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,21 @@
1
1
  /**
2
- * Ink TUI cockpit for pb admin (WP-314 S1).
2
+ * Ink TUI cockpit for pb admin (WP-314 S1, WP-317 S3).
3
3
  *
4
- * Renders a worst-first sorted workspaces table with sparkbar health, PARITY
5
- * column, fuzzy filter, and keyboard navigation.
4
+ * WP-317 S3 adds:
5
+ * - Persistent env banner (DEV/PROD) on every tab
6
+ * - Tab navigation: Workspaces | Seeds | Changelog
7
+ * - Tab/Shift+Tab keyboard switching; mouse enable/disable sequences (best-effort)
8
+ * - Seeds tab: shows SEED_COMMAND_ENTRIES with static status (real runtime data in S4)
6
9
  *
7
10
  * Keyboard bindings:
8
- * / Enter filter mode
9
- * Escape Exit filter mode / clear filter, or exit cockpit
10
- * Up/Down Navigate rows
11
- * Enter Drill into selected workspace (fires onDrillIn)
12
- * q Quit cockpit
13
- * ? Toggle help overlay
11
+ * Tab Next tab
12
+ * Shift+Tab Previous tab
13
+ * / Enter filter mode (Workspaces + Seeds tabs)
14
+ * Escape Exit filter mode / clear filter, or exit cockpit
15
+ * Up/Down Navigate rows
16
+ * Enter Drill into selected workspace (Workspaces tab only)
17
+ * q Quit cockpit
18
+ * ? Toggle help overlay
14
19
  */
15
20
  /** Mirrors NextCommand from adminBootstrap.ts (no cross-import). WP-314 S2. */
16
21
  export type NextCommand = {
@@ -34,6 +39,24 @@ export type WorkspaceRow = {
34
39
  nextCommand: NextCommand;
35
40
  };
36
41
  };
42
+ /** WP-317 S4 — seed row for Seeds tab, wired to real system_migrations data. */
43
+ export type SeedRow = {
44
+ name: string;
45
+ description: string;
46
+ requiresWorkspaceId: boolean;
47
+ dryRunSupported: boolean;
48
+ migrationId: string;
49
+ argsHash: string;
50
+ appliedAt: number | null;
51
+ lastRunAt: number | null;
52
+ status: 'applied' | 'failed' | 'no-op' | 'unknown';
53
+ };
54
+ /** WP-317 E8 — changelog row for heatmap tab. */
55
+ export type ChangelogRow = {
56
+ timestamp: number;
57
+ definitionSlug: string;
58
+ };
59
+ export type CockpitTab = 'workspaces' | 'seeds' | 'changelog';
37
60
  export type CockpitProps = {
38
61
  workspaces: WorkspaceRow[];
39
62
  currentKeyWorkspaceId: string | null;
@@ -41,8 +64,14 @@ export type CockpitProps = {
41
64
  onDrillIn: (ws: WorkspaceRow) => void;
42
65
  /** Called when user confirms 'f' fix for a row. Parent runs the command. */
43
66
  onRunFix: (ws: WorkspaceRow, cmd: NextCommand) => Promise<void>;
67
+ /** Gateway siteUrl — used for env banner and envLabel derivation. WP-317 S3. */
68
+ siteUrl: string;
69
+ /** Seed rows for Seeds tab. WP-317 S3. */
70
+ seedRows: SeedRow[];
71
+ /** Changelog rows for heatmap. WP-317 E8 / S4. */
72
+ changelogRows: ChangelogRow[];
44
73
  };
45
- export declare function Cockpit({ workspaces, currentKeyWorkspaceId, onExit, onDrillIn, onRunFix }: CockpitProps): import("react/jsx-runtime").JSX.Element;
74
+ export declare function Cockpit({ workspaces, currentKeyWorkspaceId, onExit, onDrillIn, onRunFix, siteUrl, seedRows, changelogRows }: CockpitProps): import("react/jsx-runtime").JSX.Element;
46
75
  export type WorkspaceHealthData = {
47
76
  readiness: unknown;
48
77
  collections: unknown;
@@ -1 +1 @@
1
- {"version":3,"file":"cockpit.d.ts","sourceRoot":"","sources":["../../../src/commands/admin/cockpit.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAUH,+EAA+E;AAC/E,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,GAAG,aAAa,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,uBAAuB,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,EAAE;QACT,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,WAAW,CAAC;KAC1B,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,UAAU,EAAE,YAAY,EAAE,CAAC;IAC3B,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,SAAS,EAAE,CAAC,EAAE,EAAE,YAAY,KAAK,IAAI,CAAC;IACtC,4EAA4E;IAC5E,QAAQ,EAAE,CAAC,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACjE,CAAC;AA2DF,wBAAgB,OAAO,CAAC,EAAE,UAAU,EAAE,qBAAqB,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,YAAY,2CAsRvG;AAuBD,MAAM,MAAM,mBAAmB,GAAG;IAChC,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,SAAS,EAAE,YAAY,CAAC;IACxB,UAAU,EAAE,mBAAmB,CAAC;IAChC,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB,CAAC;AAQF,wBAAgB,eAAe,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,oBAAoB,2CAwH9F"}
1
+ {"version":3,"file":"cockpit.d.ts","sourceRoot":"","sources":["../../../src/commands/admin/cockpit.tsx"],"names":[],"mappings":"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"}