@shepai/cli 1.6.0 → 1.6.2
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/src/presentation/cli/commands/settings/show.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/settings/show.command.js +16 -18
- package/dist/src/presentation/cli/ui/index.d.ts +2 -2
- package/dist/src/presentation/cli/ui/index.d.ts.map +1 -1
- package/dist/src/presentation/cli/ui/index.js +1 -1
- package/dist/src/presentation/cli/ui/output.d.ts +5 -4
- package/dist/src/presentation/cli/ui/output.d.ts.map +1 -1
- package/dist/src/presentation/cli/ui/output.js +6 -7
- package/dist/src/presentation/cli/ui/tables.d.ts +10 -5
- package/dist/src/presentation/cli/ui/tables.d.ts.map +1 -1
- package/dist/src/presentation/cli/ui/tables.js +62 -17
- package/dist/src/presentation/tui/prompts/agent-select.prompt.d.ts +1 -1
- package/dist/src/presentation/tui/prompts/agent-select.prompt.js +1 -1
- package/dist/src/presentation/tui/prompts/auth-method.prompt.d.ts +1 -1
- package/dist/src/presentation/tui/prompts/auth-method.prompt.js +1 -1
- package/dist/src/presentation/tui/wizards/agent-config.wizard.d.ts +1 -1
- package/dist/src/presentation/tui/wizards/agent-config.wizard.js +1 -1
- package/dist/src/presentation/web/app/page.js +1 -1
- package/dist/src/presentation/web/app/version/page.js +4 -4
- package/dist/src/presentation/web/components/features/theme-toggle/theme-toggle.js +2 -2
- package/dist/src/presentation/web/components/ui/accordion.js +1 -1
- package/dist/src/presentation/web/components/ui/alert.js +1 -1
- package/dist/src/presentation/web/components/ui/badge.js +1 -1
- package/dist/src/presentation/web/components/ui/button.js +1 -1
- package/dist/src/presentation/web/components/ui/card.js +1 -1
- package/dist/src/presentation/web/components/ui/dialog.js +1 -1
- package/dist/src/presentation/web/components/ui/input.js +1 -1
- package/dist/src/presentation/web/components/ui/label.js +1 -1
- package/dist/src/presentation/web/components/ui/popover.js +1 -1
- package/dist/src/presentation/web/components/ui/select.js +1 -1
- package/dist/src/presentation/web/components/ui/tabs.js +1 -1
- package/dist/src/presentation/web/hooks/useTheme.d.ts +1 -1
- package/dist/src/presentation/web/hooks/useTheme.js +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +3 -2
- package/web/.next/BUILD_ID +1 -1
- package/web/.next/build-manifest.json +2 -2
- package/web/.next/cache/.previewinfo +1 -1
- package/web/.next/cache/.rscinfo +1 -1
- package/web/.next/cache/config.json +3 -3
- package/web/.next/fallback-build-manifest.json +2 -2
- package/web/.next/prerender-manifest.json +3 -3
- package/web/.next/server/app/_global-error.html +2 -2
- package/web/.next/server/app/_global-error.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/web/.next/server/app/_not-found.html +2 -2
- package/web/.next/server/app/_not-found.rsc +1 -1
- package/web/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- package/web/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
- package/web/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/web/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/web/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/web/.next/server/app/index.html +2 -2
- package/web/.next/server/app/index.rsc +1 -1
- package/web/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/web/.next/server/app/index.segments/_full.segment.rsc +1 -1
- package/web/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/index.segments/_index.segment.rsc +1 -1
- package/web/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/web/.next/server/app/version.html +2 -2
- package/web/.next/server/app/version.rsc +1 -1
- package/web/.next/server/app/version.segments/_full.segment.rsc +1 -1
- package/web/.next/server/app/version.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/version.segments/_index.segment.rsc +1 -1
- package/web/.next/server/app/version.segments/_tree.segment.rsc +1 -1
- package/web/.next/server/app/version.segments/version/__PAGE__.segment.rsc +1 -1
- package/web/.next/server/app/version.segments/version.segment.rsc +1 -1
- package/web/.next/server/pages/404.html +2 -2
- package/web/.next/server/pages/500.html +2 -2
- package/web/.next/server/server-reference-manifest.js +1 -1
- package/web/.next/server/server-reference-manifest.json +1 -1
- package/web/.next/trace +1 -1
- package/web/.next/trace-build +1 -1
- /package/web/.next/static/{KEXMk8lvSdd16ntuo5U2V → BL8w8d3ompY4bQV3lXruZ}/_buildManifest.js +0 -0
- /package/web/.next/static/{KEXMk8lvSdd16ntuo5U2V → BL8w8d3ompY4bQV3lXruZ}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/static/{KEXMk8lvSdd16ntuo5U2V → BL8w8d3ompY4bQV3lXruZ}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"show.command.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/settings/show.command.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAO5C;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,
|
|
1
|
+
{"version":3,"file":"show.command.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/settings/show.command.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAO5C;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CA+B3C"}
|
|
@@ -13,7 +13,7 @@ import { OutputFormatter } from '../../ui/output.js';
|
|
|
13
13
|
import { getShepDbPath } from '../../../../infrastructure/services/filesystem/shep-directory.service.js';
|
|
14
14
|
import { getSettings } from '../../../../infrastructure/services/settings.service.js';
|
|
15
15
|
import { statSync } from 'node:fs';
|
|
16
|
-
import { messages
|
|
16
|
+
import { messages } from '../../ui/index.js';
|
|
17
17
|
/**
|
|
18
18
|
* Create the show settings command
|
|
19
19
|
*/
|
|
@@ -31,24 +31,10 @@ Examples:
|
|
|
31
31
|
.action((options) => {
|
|
32
32
|
try {
|
|
33
33
|
const settings = getSettings();
|
|
34
|
-
|
|
34
|
+
// Build database metadata for table format
|
|
35
|
+
const dbMeta = options.output === 'table' ? getDatabaseMeta() : undefined;
|
|
36
|
+
const output = OutputFormatter.format(settings, options.output, dbMeta);
|
|
35
37
|
console.log(output);
|
|
36
|
-
// Show database metadata for table format
|
|
37
|
-
if (options.output === 'table') {
|
|
38
|
-
const dbPath = getShepDbPath();
|
|
39
|
-
let sizeStr = 'unknown';
|
|
40
|
-
try {
|
|
41
|
-
const stats = statSync(dbPath);
|
|
42
|
-
sizeStr = formatFileSize(stats.size);
|
|
43
|
-
}
|
|
44
|
-
catch {
|
|
45
|
-
// File may not be accessible
|
|
46
|
-
}
|
|
47
|
-
messages.newline();
|
|
48
|
-
console.log(fmt.heading('Database'));
|
|
49
|
-
console.log(` ${fmt.label('Path:')} ${dbPath}`);
|
|
50
|
-
console.log(` ${fmt.label('Size:')} ${sizeStr}`);
|
|
51
|
-
}
|
|
52
38
|
}
|
|
53
39
|
catch (error) {
|
|
54
40
|
const err = error instanceof Error ? error : new Error(String(error));
|
|
@@ -57,6 +43,18 @@ Examples:
|
|
|
57
43
|
}
|
|
58
44
|
});
|
|
59
45
|
}
|
|
46
|
+
function getDatabaseMeta() {
|
|
47
|
+
const dbPath = getShepDbPath();
|
|
48
|
+
let size = 'unknown';
|
|
49
|
+
try {
|
|
50
|
+
const stats = statSync(dbPath);
|
|
51
|
+
size = formatFileSize(stats.size);
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
// File may not be accessible
|
|
55
|
+
}
|
|
56
|
+
return { path: dbPath, size };
|
|
57
|
+
}
|
|
60
58
|
function formatFileSize(bytes) {
|
|
61
59
|
if (bytes < 1024)
|
|
62
60
|
return `${bytes} B`;
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* All CLI commands should use these utilities for visual consistency.
|
|
6
6
|
*
|
|
7
7
|
* @example
|
|
8
|
-
* import { colors, symbols, fmt, messages } from '
|
|
8
|
+
* import { colors, symbols, fmt, messages } from '../../../presentation/cli/ui';
|
|
9
9
|
*
|
|
10
10
|
* messages.success('Repository initialized');
|
|
11
11
|
* console.log(fmt.heading('Shep AI CLI'));
|
|
@@ -15,6 +15,6 @@ export { colors, type Colors } from './colors.js';
|
|
|
15
15
|
export { symbols, type Symbols } from './symbols.js';
|
|
16
16
|
export { fmt, type Formatters } from './formatters.js';
|
|
17
17
|
export { messages, type Messages } from './messages.js';
|
|
18
|
-
export { TableFormatter } from './tables.js';
|
|
18
|
+
export { TableFormatter, type DatabaseMeta } from './tables.js';
|
|
19
19
|
export { OutputFormatter, type OutputFormat } from './output.js';
|
|
20
20
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/cli/ui/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,MAAM,EAAE,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,GAAG,EAAE,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/cli/ui/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,MAAM,EAAE,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,GAAG,EAAE,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* All CLI commands should use these utilities for visual consistency.
|
|
6
6
|
*
|
|
7
7
|
* @example
|
|
8
|
-
* import { colors, symbols, fmt, messages } from '
|
|
8
|
+
* import { colors, symbols, fmt, messages } from '../../../presentation/cli/ui';
|
|
9
9
|
*
|
|
10
10
|
* messages.success('Repository initialized');
|
|
11
11
|
* console.log(fmt.heading('Shep AI CLI'));
|
|
@@ -2,12 +2,13 @@
|
|
|
2
2
|
* Output Format Utilities
|
|
3
3
|
*
|
|
4
4
|
* Provides utilities for formatting output in multiple formats:
|
|
5
|
-
* - Table (default,
|
|
5
|
+
* - Table (default, clean text-based layout)
|
|
6
6
|
* - JSON (structured data)
|
|
7
7
|
* - YAML (human-readable structured data)
|
|
8
8
|
*
|
|
9
9
|
* @module output
|
|
10
10
|
*/
|
|
11
|
+
import { type DatabaseMeta } from './tables.js';
|
|
11
12
|
export type OutputFormat = 'table' | 'json' | 'yaml';
|
|
12
13
|
/**
|
|
13
14
|
* Output formatter for multiple formats
|
|
@@ -16,11 +17,11 @@ export declare class OutputFormatter {
|
|
|
16
17
|
/**
|
|
17
18
|
* Formats data according to the specified output format
|
|
18
19
|
*/
|
|
19
|
-
static format(data: unknown, format: OutputFormat): string;
|
|
20
|
+
static format(data: unknown, format: OutputFormat, dbMeta?: DatabaseMeta): string;
|
|
20
21
|
/**
|
|
21
|
-
* Formats data as a
|
|
22
|
+
* Formats data as a clean text display
|
|
22
23
|
*/
|
|
23
|
-
static formatAsTable(data: unknown): string;
|
|
24
|
+
static formatAsTable(data: unknown, dbMeta?: DatabaseMeta): string;
|
|
24
25
|
/**
|
|
25
26
|
* Formats data as JSON
|
|
26
27
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/cli/ui/output.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/cli/ui/output.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAkB,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhE,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AAErD;;GAEG;AACH,qBAAa,eAAe;IAC1B;;OAEG;IACH,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,MAAM;IAWjF;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,MAAM;IAIlE;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM;IAI1C;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM;CAG3C"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Output Format Utilities
|
|
3
3
|
*
|
|
4
4
|
* Provides utilities for formatting output in multiple formats:
|
|
5
|
-
* - Table (default,
|
|
5
|
+
* - Table (default, clean text-based layout)
|
|
6
6
|
* - JSON (structured data)
|
|
7
7
|
* - YAML (human-readable structured data)
|
|
8
8
|
*
|
|
@@ -17,10 +17,10 @@ export class OutputFormatter {
|
|
|
17
17
|
/**
|
|
18
18
|
* Formats data according to the specified output format
|
|
19
19
|
*/
|
|
20
|
-
static format(data, format) {
|
|
20
|
+
static format(data, format, dbMeta) {
|
|
21
21
|
switch (format) {
|
|
22
22
|
case 'table':
|
|
23
|
-
return OutputFormatter.formatAsTable(data);
|
|
23
|
+
return OutputFormatter.formatAsTable(data, dbMeta);
|
|
24
24
|
case 'json':
|
|
25
25
|
return OutputFormatter.formatAsJSON(data);
|
|
26
26
|
case 'yaml':
|
|
@@ -28,11 +28,10 @@ export class OutputFormatter {
|
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
30
|
/**
|
|
31
|
-
* Formats data as a
|
|
31
|
+
* Formats data as a clean text display
|
|
32
32
|
*/
|
|
33
|
-
static formatAsTable(data) {
|
|
34
|
-
|
|
35
|
-
return table.toString();
|
|
33
|
+
static formatAsTable(data, dbMeta) {
|
|
34
|
+
return TableFormatter.createSettingsTable(data, dbMeta);
|
|
36
35
|
}
|
|
37
36
|
/**
|
|
38
37
|
* Formats data as JSON
|
|
@@ -1,19 +1,24 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Table Formatting Utilities
|
|
3
3
|
*
|
|
4
|
-
* Provides
|
|
5
|
-
*
|
|
4
|
+
* Provides clean text-based rendering for structured CLI output.
|
|
5
|
+
* Uses alignment, whitespace, and colors instead of box-drawing borders.
|
|
6
6
|
*
|
|
7
7
|
* @module tables
|
|
8
8
|
*/
|
|
9
|
-
|
|
9
|
+
export interface DatabaseMeta {
|
|
10
|
+
path: string;
|
|
11
|
+
size: string;
|
|
12
|
+
}
|
|
10
13
|
/**
|
|
11
14
|
* Table formatter for CLI output
|
|
12
15
|
*/
|
|
13
16
|
export declare class TableFormatter {
|
|
17
|
+
private static readonly LABEL_WIDTH;
|
|
14
18
|
/**
|
|
15
|
-
* Creates a formatted
|
|
19
|
+
* Creates a clean, formatted settings display string.
|
|
16
20
|
*/
|
|
17
|
-
static createSettingsTable(settings: unknown):
|
|
21
|
+
static createSettingsTable(settings: unknown, dbMeta?: DatabaseMeta): string;
|
|
22
|
+
private static section;
|
|
18
23
|
}
|
|
19
24
|
//# sourceMappingURL=tables.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tables.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/cli/ui/tables.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"tables.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/cli/ui/tables.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAM;IAEzC;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,MAAM;IAgE5E,OAAO,CAAC,MAAM,CAAC,OAAO;CAcvB"}
|
|
@@ -1,32 +1,77 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Table Formatting Utilities
|
|
3
3
|
*
|
|
4
|
-
* Provides
|
|
5
|
-
*
|
|
4
|
+
* Provides clean text-based rendering for structured CLI output.
|
|
5
|
+
* Uses alignment, whitespace, and colors instead of box-drawing borders.
|
|
6
6
|
*
|
|
7
7
|
* @module tables
|
|
8
8
|
*/
|
|
9
|
-
import
|
|
9
|
+
import { colors } from './colors.js';
|
|
10
|
+
import pc from 'picocolors';
|
|
10
11
|
/**
|
|
11
12
|
* Table formatter for CLI output
|
|
12
13
|
*/
|
|
13
14
|
export class TableFormatter {
|
|
15
|
+
static LABEL_WIDTH = 15;
|
|
14
16
|
/**
|
|
15
|
-
* Creates a formatted
|
|
17
|
+
* Creates a clean, formatted settings display string.
|
|
16
18
|
*/
|
|
17
|
-
static createSettingsTable(settings) {
|
|
19
|
+
static createSettingsTable(settings, dbMeta) {
|
|
18
20
|
const s = settings;
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
// Models
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
21
|
+
const lines = [];
|
|
22
|
+
lines.push(` ${pc.bold(colors.brand('Settings'))}`);
|
|
23
|
+
lines.push('');
|
|
24
|
+
// Models
|
|
25
|
+
lines.push(...TableFormatter.section('Models', [
|
|
26
|
+
['Analyze', s.models.analyze],
|
|
27
|
+
['Requirements', s.models.requirements],
|
|
28
|
+
['Plan', s.models.plan],
|
|
29
|
+
['Implement', s.models.implement],
|
|
30
|
+
]));
|
|
31
|
+
// User
|
|
32
|
+
lines.push(...TableFormatter.section('User', [
|
|
33
|
+
['Name', s.user.name],
|
|
34
|
+
['Email', s.user.email],
|
|
35
|
+
['GitHub', s.user.githubUsername],
|
|
36
|
+
]));
|
|
37
|
+
// Environment
|
|
38
|
+
lines.push(...TableFormatter.section('Environment', [
|
|
39
|
+
['Editor', s.environment.defaultEditor],
|
|
40
|
+
['Shell', s.environment.shellPreference],
|
|
41
|
+
]));
|
|
42
|
+
// System
|
|
43
|
+
lines.push(...TableFormatter.section('System', [
|
|
44
|
+
['Auto-Update', String(s.system.autoUpdate)],
|
|
45
|
+
['Log Level', s.system.logLevel],
|
|
46
|
+
]));
|
|
47
|
+
// Agent
|
|
48
|
+
lines.push(...TableFormatter.section('Agent', [
|
|
49
|
+
['Type', s.agent.type],
|
|
50
|
+
['Auth', s.agent.authMethod],
|
|
51
|
+
...(s.agent.token ? [['Token', '••••••••']] : []),
|
|
52
|
+
]));
|
|
53
|
+
// Database
|
|
54
|
+
if (dbMeta) {
|
|
55
|
+
lines.push(...TableFormatter.section('Database', [
|
|
56
|
+
['Path', dbMeta.path],
|
|
57
|
+
['Size', dbMeta.size],
|
|
58
|
+
]));
|
|
59
|
+
}
|
|
60
|
+
return lines.join('\n');
|
|
61
|
+
}
|
|
62
|
+
static section(title, rows) {
|
|
63
|
+
const lines = [];
|
|
64
|
+
lines.push(` ${pc.bold(title)}`);
|
|
65
|
+
for (const [label, value] of rows) {
|
|
66
|
+
const paddedLabel = label.padEnd(TableFormatter.LABEL_WIDTH);
|
|
67
|
+
if (value === undefined || value === null) {
|
|
68
|
+
lines.push(` ${colors.muted(paddedLabel)}${pc.italic(colors.muted('(not set)'))}`);
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
lines.push(` ${colors.muted(paddedLabel)}${value}`);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
lines.push('');
|
|
75
|
+
return lines;
|
|
31
76
|
}
|
|
32
77
|
}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Configuration for the @inquirer/select prompt that lets users
|
|
5
5
|
* choose their AI coding agent.
|
|
6
6
|
*/
|
|
7
|
-
import { AgentType } from '
|
|
7
|
+
import { AgentType } from '../../../domain/generated/output.js';
|
|
8
8
|
/**
|
|
9
9
|
* Creates the @inquirer/select configuration for selecting an AI coding agent.
|
|
10
10
|
*
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Configuration for the @inquirer/select prompt that lets users
|
|
5
5
|
* choose their AI coding agent.
|
|
6
6
|
*/
|
|
7
|
-
import { AgentType } from '
|
|
7
|
+
import { AgentType } from '../../../domain/generated/output.js';
|
|
8
8
|
import { shepTheme } from '../themes/shep.theme.js';
|
|
9
9
|
/**
|
|
10
10
|
* Creates the @inquirer/select configuration for selecting an AI coding agent.
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Configuration for the @inquirer/select prompt that lets users
|
|
5
5
|
* choose their authentication method for the selected agent.
|
|
6
6
|
*/
|
|
7
|
-
import { AgentAuthMethod } from '
|
|
7
|
+
import { AgentAuthMethod } from '../../../domain/generated/output.js';
|
|
8
8
|
/**
|
|
9
9
|
* Creates the @inquirer/select configuration for selecting an authentication method.
|
|
10
10
|
*
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Configuration for the @inquirer/select prompt that lets users
|
|
5
5
|
* choose their authentication method for the selected agent.
|
|
6
6
|
*/
|
|
7
|
-
import { AgentAuthMethod } from '
|
|
7
|
+
import { AgentAuthMethod } from '../../../domain/generated/output.js';
|
|
8
8
|
import { shepTheme } from '../themes/shep.theme.js';
|
|
9
9
|
/**
|
|
10
10
|
* Creates the @inquirer/select configuration for selecting an authentication method.
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Interactive TUI wizard that guides users through selecting
|
|
5
5
|
* an AI coding agent and configuring authentication.
|
|
6
6
|
*/
|
|
7
|
-
import { AgentAuthMethod, type AgentType } from '
|
|
7
|
+
import { AgentAuthMethod, type AgentType } from '../../../domain/generated/output.js';
|
|
8
8
|
/**
|
|
9
9
|
* Result returned by the agent configuration wizard.
|
|
10
10
|
*/
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* an AI coding agent and configuring authentication.
|
|
6
6
|
*/
|
|
7
7
|
import { select, password } from '@inquirer/prompts';
|
|
8
|
-
import { AgentAuthMethod } from '
|
|
8
|
+
import { AgentAuthMethod } from '../../../domain/generated/output.js';
|
|
9
9
|
import { createAgentSelectConfig } from '../prompts/agent-select.prompt.js';
|
|
10
10
|
import { createAuthMethodConfig } from '../prompts/auth-method.prompt.js';
|
|
11
11
|
import { shepTheme } from '../themes/shep.theme.js';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import Link from 'next/link';
|
|
3
|
-
import { Button } from '
|
|
3
|
+
import { Button } from '../components/ui/button';
|
|
4
4
|
export default function HomePage() {
|
|
5
5
|
return (_jsx("main", { className: "flex min-h-screen flex-col items-center justify-center p-4", children: _jsxs("div", { className: "text-center", children: [_jsx("h1", { className: "text-4xl font-bold tracking-tight", children: "Shep AI" }), _jsx("p", { className: "text-muted-foreground mt-4 text-lg", children: "Autonomous AI Native SDLC Platform" }), _jsx("p", { className: "text-muted-foreground mt-2 text-sm", children: "Web UI Component Library" }), _jsx("div", { className: "mt-6", children: _jsx(Button, { asChild: true, variant: "outline", children: _jsx(Link, { href: "/version", children: "View Version" }) }) })] }) }));
|
|
6
6
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import Link from 'next/link';
|
|
4
|
-
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '
|
|
5
|
-
import { Badge } from '
|
|
6
|
-
import { Button } from '
|
|
7
|
-
import { Tabs, TabsContent, TabsList, TabsTrigger } from '
|
|
4
|
+
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '../../components/ui/card';
|
|
5
|
+
import { Badge } from '../../components/ui/badge';
|
|
6
|
+
import { Button } from '../../components/ui/button';
|
|
7
|
+
import { Tabs, TabsContent, TabsList, TabsTrigger } from '../../components/ui/tabs';
|
|
8
8
|
const VERSION = '1.2.0';
|
|
9
9
|
const PACKAGE_NAME = '@shepai/cli';
|
|
10
10
|
const DESCRIPTION = 'Autonomous AI Native SDLC Platform';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import { Moon, Sun } from 'lucide-react';
|
|
4
|
-
import { Button } from '
|
|
5
|
-
import { useTheme } from '
|
|
4
|
+
import { Button } from '../../ui/button';
|
|
5
|
+
import { useTheme } from '../../../hooks/useTheme';
|
|
6
6
|
export function ThemeToggle() {
|
|
7
7
|
const { theme, resolvedTheme, setTheme } = useTheme();
|
|
8
8
|
const toggleTheme = () => {
|
|
@@ -3,7 +3,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import { Accordion as AccordionPrimitive } from 'radix-ui';
|
|
5
5
|
import { ChevronDown } from 'lucide-react';
|
|
6
|
-
import { cn } from '
|
|
6
|
+
import { cn } from '../../lib/utils';
|
|
7
7
|
const Accordion = AccordionPrimitive.Root;
|
|
8
8
|
const AccordionItem = React.forwardRef(({ className, ...props }, ref) => (_jsx(AccordionPrimitive.Item, { ref: ref, className: cn('border-b', className), ...props })));
|
|
9
9
|
AccordionItem.displayName = 'AccordionItem';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import { cva } from 'class-variance-authority';
|
|
4
|
-
import { cn } from '
|
|
4
|
+
import { cn } from '../../lib/utils';
|
|
5
5
|
const alertVariants = cva('relative w-full rounded-lg border px-4 py-3 text-sm [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground [&>svg~*]:pl-7', {
|
|
6
6
|
variants: {
|
|
7
7
|
variant: {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { cva } from 'class-variance-authority';
|
|
3
|
-
import { cn } from '
|
|
3
|
+
import { cn } from '../../lib/utils';
|
|
4
4
|
const badgeVariants = cva('inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2', {
|
|
5
5
|
variants: {
|
|
6
6
|
variant: {
|
|
@@ -2,7 +2,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import { Slot } from 'radix-ui';
|
|
4
4
|
import { cva } from 'class-variance-authority';
|
|
5
|
-
import { cn } from '
|
|
5
|
+
import { cn } from '../../lib/utils';
|
|
6
6
|
const buttonVariants = cva('inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0', {
|
|
7
7
|
variants: {
|
|
8
8
|
variant: {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import { cn } from '
|
|
3
|
+
import { cn } from '../../lib/utils';
|
|
4
4
|
const Card = React.forwardRef(({ className, ...props }, ref) => (_jsx("div", { ref: ref, className: cn('bg-card text-card-foreground rounded-xl border shadow', className), ...props })));
|
|
5
5
|
Card.displayName = 'Card';
|
|
6
6
|
const CardHeader = React.forwardRef(({ className, ...props }, ref) => (_jsx("div", { ref: ref, className: cn('flex flex-col space-y-1.5 p-6', className), ...props })));
|
|
@@ -3,7 +3,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import { Dialog as DialogPrimitive } from 'radix-ui';
|
|
5
5
|
import { X } from 'lucide-react';
|
|
6
|
-
import { cn } from '
|
|
6
|
+
import { cn } from '../../lib/utils';
|
|
7
7
|
const Dialog = DialogPrimitive.Root;
|
|
8
8
|
const DialogTrigger = DialogPrimitive.Trigger;
|
|
9
9
|
const DialogPortal = DialogPrimitive.Portal;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import { cn } from '
|
|
3
|
+
import { cn } from '../../lib/utils';
|
|
4
4
|
const Input = React.forwardRef(({ className, type, ...props }, ref) => {
|
|
5
5
|
return (_jsx("input", { type: type, className: cn('border-input file:text-foreground placeholder:text-muted-foreground focus-visible:ring-ring flex h-9 w-full rounded-md border bg-transparent px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium focus-visible:ring-1 focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm', className), ref: ref, ...props }));
|
|
6
6
|
});
|
|
@@ -3,7 +3,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import { Label as LabelPrimitive } from 'radix-ui';
|
|
5
5
|
import { cva } from 'class-variance-authority';
|
|
6
|
-
import { cn } from '
|
|
6
|
+
import { cn } from '../../lib/utils';
|
|
7
7
|
const labelVariants = cva('text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70');
|
|
8
8
|
const Label = React.forwardRef(({ className, ...props }, ref) => (_jsx(LabelPrimitive.Root, { ref: ref, className: cn(labelVariants(), className), ...props })));
|
|
9
9
|
Label.displayName = LabelPrimitive.Root.displayName;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import { Popover as PopoverPrimitive } from 'radix-ui';
|
|
5
|
-
import { cn } from '
|
|
5
|
+
import { cn } from '../../lib/utils';
|
|
6
6
|
const Popover = PopoverPrimitive.Root;
|
|
7
7
|
const PopoverTrigger = PopoverPrimitive.Trigger;
|
|
8
8
|
const PopoverAnchor = PopoverPrimitive.Anchor;
|
|
@@ -3,7 +3,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import { Select as SelectPrimitive } from 'radix-ui';
|
|
5
5
|
import { Check, ChevronDown, ChevronUp } from 'lucide-react';
|
|
6
|
-
import { cn } from '
|
|
6
|
+
import { cn } from '../../lib/utils';
|
|
7
7
|
const Select = SelectPrimitive.Root;
|
|
8
8
|
const SelectGroup = SelectPrimitive.Group;
|
|
9
9
|
const SelectValue = SelectPrimitive.Value;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import { Tabs as TabsPrimitive } from 'radix-ui';
|
|
5
|
-
import { cn } from '
|
|
5
|
+
import { cn } from '../../lib/utils';
|
|
6
6
|
const Tabs = TabsPrimitive.Root;
|
|
7
7
|
const TabsList = React.forwardRef(({ className, ...props }, ref) => (_jsx(TabsPrimitive.List, { ref: ref, className: cn('bg-muted text-muted-foreground inline-flex h-9 items-center justify-center rounded-lg p-1', className), ...props })));
|
|
8
8
|
TabsList.displayName = TabsPrimitive.List.displayName;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { useCallback, useEffect, useState } from 'react';
|
|
3
|
-
import { THEME_STORAGE_KEY } from '
|
|
3
|
+
import { THEME_STORAGE_KEY } from '../types/theme';
|
|
4
4
|
/**
|
|
5
5
|
* Hook to manage theme state with localStorage persistence
|
|
6
6
|
* and system preference detection.
|