@shepai/cli 1.6.3 → 1.7.0

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 (64) hide show
  1. package/README.md +2 -2
  2. package/dist/src/application/ports/output/index.d.ts +1 -0
  3. package/dist/src/application/ports/output/index.d.ts.map +1 -1
  4. package/dist/src/application/ports/output/version-service.interface.d.ts +27 -0
  5. package/dist/src/application/ports/output/version-service.interface.d.ts.map +1 -0
  6. package/dist/src/application/ports/output/version-service.interface.js +11 -0
  7. package/dist/src/infrastructure/di/container.d.ts.map +1 -1
  8. package/dist/src/infrastructure/di/container.js +5 -0
  9. package/dist/src/presentation/cli/commands/ui.command.d.ts.map +1 -1
  10. package/dist/src/presentation/cli/commands/ui.command.js +3 -2
  11. package/dist/src/presentation/cli/commands/version.command.d.ts.map +1 -1
  12. package/dist/src/presentation/cli/commands/version.command.js +2 -2
  13. package/dist/src/presentation/cli/index.js +1 -2
  14. package/dist/tsconfig.build.tsbuildinfo +1 -1
  15. package/package.json +1 -1
  16. package/web/.next/BUILD_ID +1 -1
  17. package/web/.next/build-manifest.json +2 -2
  18. package/web/.next/cache/.previewinfo +1 -1
  19. package/web/.next/cache/.rscinfo +1 -1
  20. package/web/.next/cache/config.json +3 -3
  21. package/web/.next/fallback-build-manifest.json +2 -2
  22. package/web/.next/prerender-manifest.json +3 -3
  23. package/web/.next/required-server-files.js +1 -1
  24. package/web/.next/required-server-files.json +1 -1
  25. package/web/.next/server/app/_global-error.html +2 -2
  26. package/web/.next/server/app/_global-error.rsc +1 -1
  27. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  28. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  29. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  30. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  31. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  32. package/web/.next/server/app/_not-found.html +2 -2
  33. package/web/.next/server/app/_not-found.rsc +1 -1
  34. package/web/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  35. package/web/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  36. package/web/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  37. package/web/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  38. package/web/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  39. package/web/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  40. package/web/.next/server/app/index.html +2 -2
  41. package/web/.next/server/app/index.rsc +1 -1
  42. package/web/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  43. package/web/.next/server/app/index.segments/_full.segment.rsc +1 -1
  44. package/web/.next/server/app/index.segments/_head.segment.rsc +1 -1
  45. package/web/.next/server/app/index.segments/_index.segment.rsc +1 -1
  46. package/web/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  47. package/web/.next/server/app/version.html +2 -2
  48. package/web/.next/server/app/version.rsc +1 -1
  49. package/web/.next/server/app/version.segments/_full.segment.rsc +1 -1
  50. package/web/.next/server/app/version.segments/_head.segment.rsc +1 -1
  51. package/web/.next/server/app/version.segments/_index.segment.rsc +1 -1
  52. package/web/.next/server/app/version.segments/_tree.segment.rsc +1 -1
  53. package/web/.next/server/app/version.segments/version/__PAGE__.segment.rsc +1 -1
  54. package/web/.next/server/app/version.segments/version.segment.rsc +1 -1
  55. package/web/.next/server/chunks/ssr/_ccea5183._.js +1 -1
  56. package/web/.next/server/pages/404.html +2 -2
  57. package/web/.next/server/pages/500.html +2 -2
  58. package/web/.next/server/server-reference-manifest.js +1 -1
  59. package/web/.next/server/server-reference-manifest.json +1 -1
  60. package/web/.next/trace +1 -1
  61. package/web/.next/trace-build +1 -1
  62. /package/web/.next/static/{pUS7zNbHnxONcg65QzPqB → nTfsHq1Siya6NdOLzXUhF}/_buildManifest.js +0 -0
  63. /package/web/.next/static/{pUS7zNbHnxONcg65QzPqB → nTfsHq1Siya6NdOLzXUhF}/_clientMiddlewareManifest.json +0 -0
  64. /package/web/.next/static/{pUS7zNbHnxONcg65QzPqB → nTfsHq1Siya6NdOLzXUhF}/_ssgManifest.js +0 -0
package/README.md CHANGED
@@ -57,7 +57,7 @@ This launches a TUI wizard to:
57
57
 
58
58
  1. Configure Claude Code authentication (setup token or use existing session)
59
59
  2. Start repository analysis
60
- 3. Open the web UI at `http://localhost:3000/`
60
+ 3. Open the web UI at `http://localhost:4050/`
61
61
 
62
62
  ## How It Works
63
63
 
@@ -150,7 +150,7 @@ Uses **Repository Pattern** with SQLite:
150
150
  | TUI Framework | [@inquirer/prompts](https://github.com/SBoudrias/Inquirer.js) |
151
151
  | Web UI | Next.js 16 + React 19 + shadcn/ui ([@shepai/web](./src/presentation/web/)) |
152
152
  | Design System | Storybook |
153
- | Build Tool | Vite |
153
+ | Build Tool | tsc + tsc-alias (prod), Vite (dev) |
154
154
  | Database | SQLite |
155
155
  | Agent System | [LangGraph](https://www.langchain.com/langgraph) (`@langchain/langgraph`) |
156
156
  | Vector DB | [LanceDB](https://lancedb.com/) (file-based) |
@@ -6,4 +6,5 @@
6
6
  */
7
7
  export type { ISettingsRepository } from './settings.repository.interface.js';
8
8
  export type { IAgentValidator, AgentValidationResult } from './agent-validator.interface.js';
9
+ export type { IVersionService } from './version-service.interface.js';
9
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/application/ports/output/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,YAAY,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAC9E,YAAY,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/application/ports/output/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,YAAY,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAC9E,YAAY,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAC7F,YAAY,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Version Service Interface
3
+ *
4
+ * Output port for reading package version information.
5
+ * Infrastructure layer provides concrete implementation.
6
+ *
7
+ * Following Clean Architecture:
8
+ * - Domain and Application layers depend on this interface
9
+ * - Infrastructure layer provides concrete implementations
10
+ */
11
+ import type { VersionInfo } from '../../../domain/value-objects/version-info.js';
12
+ /**
13
+ * Port interface for reading version information.
14
+ *
15
+ * Implementations must:
16
+ * - Read version info from the package manifest (package.json)
17
+ * - Return sensible defaults when the manifest cannot be read
18
+ */
19
+ export interface IVersionService {
20
+ /**
21
+ * Get version information for the package.
22
+ *
23
+ * @returns Version info with name, version, and description
24
+ */
25
+ getVersion(): VersionInfo;
26
+ }
27
+ //# sourceMappingURL=version-service.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version-service.interface.d.ts","sourceRoot":"","sources":["../../../../../src/application/ports/output/version-service.interface.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAC;AAEjF;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,UAAU,IAAI,WAAW,CAAC;CAC3B"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Version Service Interface
3
+ *
4
+ * Output port for reading package version information.
5
+ * Infrastructure layer provides concrete implementation.
6
+ *
7
+ * Following Clean Architecture:
8
+ * - Domain and Application layers depend on this interface
9
+ * - Infrastructure layer provides concrete implementations
10
+ */
11
+ export {};
@@ -1 +1 @@
1
- {"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../../../src/infrastructure/di/container.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAwBrC;;;;;GAKG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,OAAO,SAAS,CAAC,CAgCrE;AAED;;;GAGG;AACH,OAAO,EAAE,SAAS,EAAE,CAAC"}
1
+ {"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../../../src/infrastructure/di/container.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AA4BrC;;;;;GAKG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,OAAO,SAAS,CAAC,CAqCrE;AAED;;;GAGG;AACH,OAAO,EAAE,SAAS,EAAE,CAAC"}
@@ -16,6 +16,7 @@ import { SQLiteSettingsRepository } from '../repositories/sqlite-settings.reposi
16
16
  import { AgentValidatorService } from '../services/agents/agent-validator.service.js';
17
17
  import { promisify } from 'node:util';
18
18
  import { execFile } from 'node:child_process';
19
+ import { VersionService } from '../services/version.service.js';
19
20
  // Use cases
20
21
  import { InitializeSettingsUseCase } from '../../application/use-cases/settings/initialize-settings.use-case.js';
21
22
  import { LoadSettingsUseCase } from '../../application/use-cases/settings/load-settings.use-case.js';
@@ -50,6 +51,10 @@ export async function initializeContainer() {
50
51
  container.register('IAgentValidator', {
51
52
  useFactory: () => new AgentValidatorService(execFileAsync),
52
53
  });
54
+ // Register services
55
+ container.register('IVersionService', {
56
+ useFactory: () => new VersionService(),
57
+ });
53
58
  // Register use cases (singletons for performance)
54
59
  container.registerSingleton(InitializeSettingsUseCase);
55
60
  container.registerSingleton(LoadSettingsUseCase);
@@ -1 +1 @@
1
- {"version":3,"file":"ui.command.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/cli/commands/ui.command.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,OAAO,EAAwB,MAAM,WAAW,CAAC;AAoB1D;;GAEG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAqDzC"}
1
+ {"version":3,"file":"ui.command.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/cli/commands/ui.command.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,OAAO,EAAwB,MAAM,WAAW,CAAC;AAmB1D;;GAEG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAqDzC"}
@@ -16,7 +16,8 @@
16
16
  */
17
17
  import { Command, InvalidArgumentError } from 'commander';
18
18
  import { findAvailablePort, DEFAULT_PORT } from '../../../infrastructure/services/port.service.js';
19
- import { VersionService, setVersionEnvVars, } from '../../../infrastructure/services/version.service.js';
19
+ import { container } from '../../../infrastructure/di/container.js';
20
+ import { setVersionEnvVars } from '../../../infrastructure/services/version.service.js';
20
21
  import { WebServerService, resolveWebDir, } from '../../../infrastructure/services/web-server.service.js';
21
22
  import { colors, fmt, messages } from '../ui/index.js';
22
23
  function parsePort(value) {
@@ -43,7 +44,7 @@ Examples:
43
44
  const port = await findAvailablePort(startPort);
44
45
  const { dir, dev } = resolveWebDir();
45
46
  // Set version env vars so Next.js web UI can read them
46
- const versionService = new VersionService();
47
+ const versionService = container.resolve('IVersionService');
47
48
  setVersionEnvVars(versionService.getVersion());
48
49
  messages.newline();
49
50
  console.log(fmt.heading('Shep Web UI'));
@@ -1 +1 @@
1
- {"version":3,"file":"version.command.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/cli/commands/version.command.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CAa9C"}
1
+ {"version":3,"file":"version.command.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/cli/commands/version.command.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CAa9C"}
@@ -15,14 +15,14 @@
15
15
  * Platform: linux x64
16
16
  */
17
17
  import { Command } from 'commander';
18
- import { VersionService } from '../../../infrastructure/services/version.service.js';
18
+ import { container } from '../../../infrastructure/di/container.js';
19
19
  import { colors, fmt, messages } from '../ui/index.js';
20
20
  /**
21
21
  * Create the version command
22
22
  */
23
23
  export function createVersionCommand() {
24
24
  return new Command('version').description('Display version information').action(() => {
25
- const versionService = new VersionService();
25
+ const versionService = container.resolve('IVersionService');
26
26
  const info = versionService.getVersion();
27
27
  messages.newline();
28
28
  console.log(`${fmt.heading(info.name)} ${fmt.version(info.version)}`);
@@ -20,7 +20,6 @@
20
20
  // IMPORTANT: reflect-metadata must be imported first for tsyringe DI
21
21
  import 'reflect-metadata';
22
22
  import { Command } from 'commander';
23
- import { VersionService } from '../../infrastructure/services/version.service.js';
24
23
  import { createVersionCommand } from './commands/version.command.js';
25
24
  import { createSettingsCommand } from './commands/settings/index.js';
26
25
  import { createUiCommand } from './commands/ui.command.js';
@@ -56,7 +55,7 @@ async function bootstrap() {
56
55
  throw error;
57
56
  }
58
57
  // Step 3: Set up Commander CLI
59
- const versionService = new VersionService();
58
+ const versionService = container.resolve('IVersionService');
60
59
  const { version, description } = versionService.getVersion();
61
60
  const program = new Command()
62
61
  .name('shep')