@shepai/cli 1.5.0 → 1.6.1
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/README.md +1 -1
- package/dist/src/application/ports/output/agent-validator.interface.d.ts +37 -0
- package/dist/src/application/ports/output/agent-validator.interface.d.ts.map +1 -0
- package/dist/src/application/ports/output/agent-validator.interface.js +11 -0
- package/dist/src/application/ports/output/index.d.ts +1 -0
- package/dist/src/application/ports/output/index.d.ts.map +1 -1
- package/dist/src/application/use-cases/agents/configure-agent.use-case.d.ts +47 -0
- package/dist/src/application/use-cases/agents/configure-agent.use-case.d.ts.map +1 -0
- package/dist/src/application/use-cases/agents/configure-agent.use-case.js +82 -0
- package/dist/src/application/use-cases/agents/validate-agent-auth.use-case.d.ts +31 -0
- package/dist/src/application/use-cases/agents/validate-agent-auth.use-case.d.ts.map +1 -0
- package/dist/src/application/use-cases/agents/validate-agent-auth.use-case.js +51 -0
- package/dist/src/domain/factories/settings-defaults.factory.d.ts +1 -0
- package/dist/src/domain/factories/settings-defaults.factory.d.ts.map +1 -1
- package/dist/src/domain/factories/settings-defaults.factory.js +17 -0
- package/dist/src/domain/generated/output.d.ts +32 -0
- package/dist/src/domain/generated/output.d.ts.map +1 -1
- package/dist/src/domain/generated/output.js +13 -0
- package/dist/src/infrastructure/di/container.d.ts.map +1 -1
- package/dist/src/infrastructure/di/container.js +12 -0
- package/dist/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts +3 -0
- package/dist/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts.map +1 -1
- package/dist/src/infrastructure/persistence/sqlite/mappers/settings.mapper.js +10 -0
- package/dist/src/infrastructure/persistence/sqlite/migrations.d.ts.map +1 -1
- package/dist/src/infrastructure/persistence/sqlite/migrations.js +4 -1
- package/dist/src/infrastructure/repositories/sqlite-settings.repository.d.ts.map +1 -1
- package/dist/src/infrastructure/repositories/sqlite-settings.repository.js +11 -6
- package/dist/src/infrastructure/services/agents/agent-validator.service.d.ts +43 -0
- package/dist/src/infrastructure/services/agents/agent-validator.service.d.ts.map +1 -0
- package/dist/src/infrastructure/services/agents/agent-validator.service.js +62 -0
- package/dist/src/presentation/cli/commands/settings/agent.command.d.ts +16 -0
- package/dist/src/presentation/cli/commands/settings/agent.command.d.ts.map +1 -0
- package/dist/src/presentation/cli/commands/settings/agent.command.js +75 -0
- package/dist/src/presentation/cli/commands/settings/index.d.ts +1 -0
- package/dist/src/presentation/cli/commands/settings/index.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/settings/index.js +4 -1
- 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 +1 -1
- package/dist/src/presentation/cli/ui/index.d.ts.map +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/index.d.ts +3 -0
- package/dist/src/presentation/tui/index.d.ts.map +1 -0
- package/dist/src/presentation/tui/index.js +2 -0
- package/dist/src/presentation/tui/prompts/agent-select.prompt.d.ts +48 -0
- package/dist/src/presentation/tui/prompts/agent-select.prompt.d.ts.map +1 -0
- package/dist/src/presentation/tui/prompts/agent-select.prompt.js +47 -0
- package/dist/src/presentation/tui/prompts/auth-method.prompt.d.ts +36 -0
- package/dist/src/presentation/tui/prompts/auth-method.prompt.d.ts.map +1 -0
- package/dist/src/presentation/tui/prompts/auth-method.prompt.js +32 -0
- package/dist/src/presentation/tui/themes/shep.theme.d.ts +23 -0
- package/dist/src/presentation/tui/themes/shep.theme.d.ts.map +1 -0
- package/dist/src/presentation/tui/themes/shep.theme.js +23 -0
- package/dist/src/presentation/tui/wizards/agent-config.wizard.d.ts +27 -0
- package/dist/src/presentation/tui/wizards/agent-config.wizard.d.ts.map +1 -0
- package/dist/src/presentation/tui/wizards/agent-config.wizard.js +38 -0
- package/dist/src/presentation/web/components/ui/button.d.ts +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/{Z9XCmAv7-DjAFCpNEPaUt → tXmFlRBlP8T8QaqOrcoHM}/_buildManifest.js +0 -0
- /package/web/.next/static/{Z9XCmAv7-DjAFCpNEPaUt → tXmFlRBlP8T8QaqOrcoHM}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/static/{Z9XCmAv7-DjAFCpNEPaUt → tXmFlRBlP8T8QaqOrcoHM}/_ssgManifest.js +0 -0
package/README.md
CHANGED
|
@@ -147,7 +147,7 @@ Uses **Repository Pattern** with SQLite:
|
|
|
147
147
|
| Language | TypeScript |
|
|
148
148
|
| Package Manager | pnpm |
|
|
149
149
|
| CLI Framework | Commander |
|
|
150
|
-
| TUI Framework | [
|
|
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
153
|
| Build Tool | Vite |
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Validator Interface
|
|
3
|
+
*
|
|
4
|
+
* Output port for checking AI agent tool availability.
|
|
5
|
+
* Infrastructure layer provides concrete implementations.
|
|
6
|
+
*
|
|
7
|
+
* Following Clean Architecture:
|
|
8
|
+
* - Domain and Application layers depend on this interface
|
|
9
|
+
* - Infrastructure layer provides concrete implementations
|
|
10
|
+
*/
|
|
11
|
+
import type { AgentType } from '../../../domain/generated/output.js';
|
|
12
|
+
/**
|
|
13
|
+
* Result of an agent availability check.
|
|
14
|
+
*/
|
|
15
|
+
export interface AgentValidationResult {
|
|
16
|
+
available: boolean;
|
|
17
|
+
version?: string;
|
|
18
|
+
error?: string;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Port interface for validating agent tool availability.
|
|
22
|
+
*
|
|
23
|
+
* Implementations must:
|
|
24
|
+
* - Check if the specified agent binary is available on the system
|
|
25
|
+
* - Return version information when available
|
|
26
|
+
* - Return descriptive error messages when unavailable
|
|
27
|
+
*/
|
|
28
|
+
export interface IAgentValidator {
|
|
29
|
+
/**
|
|
30
|
+
* Check if the specified agent tool is available on the system.
|
|
31
|
+
*
|
|
32
|
+
* @param agentType - The agent type to check
|
|
33
|
+
* @returns Validation result with availability status
|
|
34
|
+
*/
|
|
35
|
+
isAvailable(agentType: AgentType): Promise<AgentValidationResult>;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=agent-validator.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-validator.interface.d.ts","sourceRoot":"","sources":["../../../../../src/application/ports/output/agent-validator.interface.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AAErE;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;;OAKG;IACH,WAAW,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;CACnE"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Validator Interface
|
|
3
|
+
*
|
|
4
|
+
* Output port for checking AI agent tool availability.
|
|
5
|
+
* Infrastructure layer provides concrete implementations.
|
|
6
|
+
*
|
|
7
|
+
* Following Clean Architecture:
|
|
8
|
+
* - Domain and Application layers depend on this interface
|
|
9
|
+
* - Infrastructure layer provides concrete implementations
|
|
10
|
+
*/
|
|
11
|
+
export {};
|
|
@@ -5,4 +5,5 @@
|
|
|
5
5
|
* Infrastructure layer provides concrete implementations.
|
|
6
6
|
*/
|
|
7
7
|
export type { ISettingsRepository } from './settings.repository.interface.js';
|
|
8
|
+
export type { IAgentValidator, AgentValidationResult } from './agent-validator.interface.js';
|
|
8
9
|
//# 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"}
|
|
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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configure Agent Use Case
|
|
3
|
+
*
|
|
4
|
+
* Configures the AI coding agent for the Shep platform.
|
|
5
|
+
* Validates agent availability before persisting configuration.
|
|
6
|
+
*
|
|
7
|
+
* Business Rules:
|
|
8
|
+
* - Agent binary must be available on the system before configuring
|
|
9
|
+
* - Settings must exist before updating (must initialize first)
|
|
10
|
+
* - Token is optional and only included when provided
|
|
11
|
+
* - Returns updated settings after persistence
|
|
12
|
+
*/
|
|
13
|
+
import type { Settings, AgentType, AgentAuthMethod } from '../../../domain/generated/output.js';
|
|
14
|
+
import type { ISettingsRepository } from '../../ports/output/settings.repository.interface.js';
|
|
15
|
+
import type { IAgentValidator } from '../../ports/output/agent-validator.interface.js';
|
|
16
|
+
/**
|
|
17
|
+
* Input for configuring an AI coding agent.
|
|
18
|
+
*/
|
|
19
|
+
export interface ConfigureAgentInput {
|
|
20
|
+
type: AgentType;
|
|
21
|
+
authMethod: AgentAuthMethod;
|
|
22
|
+
token?: string;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Use case for configuring the AI coding agent.
|
|
26
|
+
*
|
|
27
|
+
* Algorithm:
|
|
28
|
+
* 1. Validate agent binary is available on the system
|
|
29
|
+
* 2. Load current settings from repository
|
|
30
|
+
* 3. Update agent configuration
|
|
31
|
+
* 4. Persist updated settings
|
|
32
|
+
* 5. Return updated settings
|
|
33
|
+
*/
|
|
34
|
+
export declare class ConfigureAgentUseCase {
|
|
35
|
+
private readonly settingsRepository;
|
|
36
|
+
private readonly agentValidator;
|
|
37
|
+
constructor(settingsRepository: ISettingsRepository, agentValidator: IAgentValidator);
|
|
38
|
+
/**
|
|
39
|
+
* Execute the configure agent use case.
|
|
40
|
+
*
|
|
41
|
+
* @param input - Agent configuration input
|
|
42
|
+
* @returns Updated Settings with new agent configuration
|
|
43
|
+
* @throws Error if agent is not available or settings not initialized
|
|
44
|
+
*/
|
|
45
|
+
execute(input: ConfigureAgentInput): Promise<Settings>;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=configure-agent.use-case.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configure-agent.use-case.d.ts","sourceRoot":"","sources":["../../../../../src/application/use-cases/agents/configure-agent.use-case.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAChG,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qDAAqD,CAAC;AAC/F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iDAAiD,CAAC;AAEvF;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,SAAS,CAAC;IAChB,UAAU,EAAE,eAAe,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;GASG;AACH,qBACa,qBAAqB;IAG9B,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IAEnC,OAAO,CAAC,QAAQ,CAAC,cAAc;gBAFd,kBAAkB,EAAE,mBAAmB,EAEvC,cAAc,EAAE,eAAe;IAGlD;;;;;;OAMG;IACG,OAAO,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC;CA+B7D"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configure Agent Use Case
|
|
3
|
+
*
|
|
4
|
+
* Configures the AI coding agent for the Shep platform.
|
|
5
|
+
* Validates agent availability before persisting configuration.
|
|
6
|
+
*
|
|
7
|
+
* Business Rules:
|
|
8
|
+
* - Agent binary must be available on the system before configuring
|
|
9
|
+
* - Settings must exist before updating (must initialize first)
|
|
10
|
+
* - Token is optional and only included when provided
|
|
11
|
+
* - Returns updated settings after persistence
|
|
12
|
+
*/
|
|
13
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
14
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
15
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
16
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
17
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
18
|
+
};
|
|
19
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
20
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
21
|
+
};
|
|
22
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
23
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
24
|
+
};
|
|
25
|
+
import { injectable, inject } from 'tsyringe';
|
|
26
|
+
/**
|
|
27
|
+
* Use case for configuring the AI coding agent.
|
|
28
|
+
*
|
|
29
|
+
* Algorithm:
|
|
30
|
+
* 1. Validate agent binary is available on the system
|
|
31
|
+
* 2. Load current settings from repository
|
|
32
|
+
* 3. Update agent configuration
|
|
33
|
+
* 4. Persist updated settings
|
|
34
|
+
* 5. Return updated settings
|
|
35
|
+
*/
|
|
36
|
+
let ConfigureAgentUseCase = class ConfigureAgentUseCase {
|
|
37
|
+
settingsRepository;
|
|
38
|
+
agentValidator;
|
|
39
|
+
constructor(settingsRepository, agentValidator) {
|
|
40
|
+
this.settingsRepository = settingsRepository;
|
|
41
|
+
this.agentValidator = agentValidator;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Execute the configure agent use case.
|
|
45
|
+
*
|
|
46
|
+
* @param input - Agent configuration input
|
|
47
|
+
* @returns Updated Settings with new agent configuration
|
|
48
|
+
* @throws Error if agent is not available or settings not initialized
|
|
49
|
+
*/
|
|
50
|
+
async execute(input) {
|
|
51
|
+
// 1. Validate agent is available
|
|
52
|
+
const validation = await this.agentValidator.isAvailable(input.type);
|
|
53
|
+
if (!validation.available) {
|
|
54
|
+
throw new Error(`Agent "${input.type}" is not available: ${validation.error ?? 'binary not found'}`);
|
|
55
|
+
}
|
|
56
|
+
// 2. Load current settings
|
|
57
|
+
const settings = await this.settingsRepository.load();
|
|
58
|
+
if (!settings) {
|
|
59
|
+
throw new Error('Settings not found. Please run initialization first.');
|
|
60
|
+
}
|
|
61
|
+
// 3. Update agent config
|
|
62
|
+
const updatedSettings = {
|
|
63
|
+
...settings,
|
|
64
|
+
agent: {
|
|
65
|
+
type: input.type,
|
|
66
|
+
authMethod: input.authMethod,
|
|
67
|
+
...(input.token !== undefined && { token: input.token }),
|
|
68
|
+
},
|
|
69
|
+
updatedAt: new Date(),
|
|
70
|
+
};
|
|
71
|
+
// 4. Persist
|
|
72
|
+
await this.settingsRepository.update(updatedSettings);
|
|
73
|
+
return updatedSettings;
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
ConfigureAgentUseCase = __decorate([
|
|
77
|
+
injectable(),
|
|
78
|
+
__param(0, inject('ISettingsRepository')),
|
|
79
|
+
__param(1, inject('IAgentValidator')),
|
|
80
|
+
__metadata("design:paramtypes", [Object, Object])
|
|
81
|
+
], ConfigureAgentUseCase);
|
|
82
|
+
export { ConfigureAgentUseCase };
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validate Agent Auth Use Case
|
|
3
|
+
*
|
|
4
|
+
* Validates that an AI coding agent is available and properly configured.
|
|
5
|
+
* Delegates to the IAgentValidator port for actual system checks.
|
|
6
|
+
*
|
|
7
|
+
* Business Rules:
|
|
8
|
+
* - Checks agent binary availability on the system
|
|
9
|
+
* - Returns validation result with version or error details
|
|
10
|
+
*/
|
|
11
|
+
import type { AgentType } from '../../../domain/generated/output.js';
|
|
12
|
+
import type { IAgentValidator, AgentValidationResult } from '../../ports/output/agent-validator.interface.js';
|
|
13
|
+
/**
|
|
14
|
+
* Use case for validating agent availability.
|
|
15
|
+
*
|
|
16
|
+
* Algorithm:
|
|
17
|
+
* 1. Delegate to IAgentValidator to check binary availability
|
|
18
|
+
* 2. Return validation result
|
|
19
|
+
*/
|
|
20
|
+
export declare class ValidateAgentAuthUseCase {
|
|
21
|
+
private readonly agentValidator;
|
|
22
|
+
constructor(agentValidator: IAgentValidator);
|
|
23
|
+
/**
|
|
24
|
+
* Execute the validate agent auth use case.
|
|
25
|
+
*
|
|
26
|
+
* @param agentType - The agent type to validate
|
|
27
|
+
* @returns Validation result with availability status
|
|
28
|
+
*/
|
|
29
|
+
execute(agentType: AgentType): Promise<AgentValidationResult>;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=validate-agent-auth.use-case.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-agent-auth.use-case.d.ts","sourceRoot":"","sources":["../../../../../src/application/use-cases/agents/validate-agent-auth.use-case.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,KAAK,EACV,eAAe,EACf,qBAAqB,EACtB,MAAM,iDAAiD,CAAC;AAEzD;;;;;;GAMG;AACH,qBACa,wBAAwB;IAGjC,OAAO,CAAC,QAAQ,CAAC,cAAc;gBAAd,cAAc,EAAE,eAAe;IAGlD;;;;;OAKG;IACG,OAAO,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,qBAAqB,CAAC;CAGpE"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validate Agent Auth Use Case
|
|
3
|
+
*
|
|
4
|
+
* Validates that an AI coding agent is available and properly configured.
|
|
5
|
+
* Delegates to the IAgentValidator port for actual system checks.
|
|
6
|
+
*
|
|
7
|
+
* Business Rules:
|
|
8
|
+
* - Checks agent binary availability on the system
|
|
9
|
+
* - Returns validation result with version or error details
|
|
10
|
+
*/
|
|
11
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
12
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
13
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
14
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
15
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
16
|
+
};
|
|
17
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
18
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
19
|
+
};
|
|
20
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
21
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
22
|
+
};
|
|
23
|
+
import { injectable, inject } from 'tsyringe';
|
|
24
|
+
/**
|
|
25
|
+
* Use case for validating agent availability.
|
|
26
|
+
*
|
|
27
|
+
* Algorithm:
|
|
28
|
+
* 1. Delegate to IAgentValidator to check binary availability
|
|
29
|
+
* 2. Return validation result
|
|
30
|
+
*/
|
|
31
|
+
let ValidateAgentAuthUseCase = class ValidateAgentAuthUseCase {
|
|
32
|
+
agentValidator;
|
|
33
|
+
constructor(agentValidator) {
|
|
34
|
+
this.agentValidator = agentValidator;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Execute the validate agent auth use case.
|
|
38
|
+
*
|
|
39
|
+
* @param agentType - The agent type to validate
|
|
40
|
+
* @returns Validation result with availability status
|
|
41
|
+
*/
|
|
42
|
+
async execute(agentType) {
|
|
43
|
+
return this.agentValidator.isAvailable(agentType);
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
ValidateAgentAuthUseCase = __decorate([
|
|
47
|
+
injectable(),
|
|
48
|
+
__param(0, inject('IAgentValidator')),
|
|
49
|
+
__metadata("design:paramtypes", [Object])
|
|
50
|
+
], ValidateAgentAuthUseCase);
|
|
51
|
+
export { ValidateAgentAuthUseCase };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings-defaults.factory.d.ts","sourceRoot":"","sources":["../../../../src/domain/factories/settings-defaults.factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EACV,QAAQ,
|
|
1
|
+
{"version":3,"file":"settings-defaults.factory.d.ts","sourceRoot":"","sources":["../../../../src/domain/factories/settings-defaults.factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EACV,QAAQ,EAMT,MAAM,wBAAwB,CAAC;AAuChC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,qBAAqB,IAAI,QAAQ,CAqChD"}
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
* - Unique IDs and timestamps generated for each instance
|
|
13
13
|
*/
|
|
14
14
|
import { randomUUID } from 'node:crypto';
|
|
15
|
+
import { AgentType, AgentAuthMethod } from '../generated/output.js';
|
|
15
16
|
/**
|
|
16
17
|
* Default AI model for all SDLC agents.
|
|
17
18
|
* Provides balanced performance and cost for all workflow stages.
|
|
@@ -32,6 +33,16 @@ const DEFAULT_SHELL = 'bash';
|
|
|
32
33
|
* Provides informational messages without overwhelming verbosity.
|
|
33
34
|
*/
|
|
34
35
|
const DEFAULT_LOG_LEVEL = 'info';
|
|
36
|
+
/**
|
|
37
|
+
* Default AI coding agent.
|
|
38
|
+
* Claude Code is the only currently supported agent.
|
|
39
|
+
*/
|
|
40
|
+
const DEFAULT_AGENT_TYPE = AgentType.ClaudeCode;
|
|
41
|
+
/**
|
|
42
|
+
* Default agent authentication method.
|
|
43
|
+
* Session auth uses the agent's built-in authentication.
|
|
44
|
+
*/
|
|
45
|
+
const DEFAULT_AUTH_METHOD = AgentAuthMethod.Session;
|
|
35
46
|
/**
|
|
36
47
|
* Creates a Settings entity with sensible defaults.
|
|
37
48
|
*
|
|
@@ -42,6 +53,7 @@ const DEFAULT_LOG_LEVEL = 'info';
|
|
|
42
53
|
* - Auto-update: enabled
|
|
43
54
|
* - Log level: info
|
|
44
55
|
* - User profile: empty (all fields optional)
|
|
56
|
+
* - Agent: Claude Code with session auth
|
|
45
57
|
*
|
|
46
58
|
* @returns Settings entity with default values
|
|
47
59
|
*
|
|
@@ -69,12 +81,17 @@ export function createDefaultSettings() {
|
|
|
69
81
|
autoUpdate: true,
|
|
70
82
|
logLevel: DEFAULT_LOG_LEVEL,
|
|
71
83
|
};
|
|
84
|
+
const agent = {
|
|
85
|
+
type: DEFAULT_AGENT_TYPE,
|
|
86
|
+
authMethod: DEFAULT_AUTH_METHOD,
|
|
87
|
+
};
|
|
72
88
|
return {
|
|
73
89
|
id: randomUUID(),
|
|
74
90
|
models,
|
|
75
91
|
user,
|
|
76
92
|
environment,
|
|
77
93
|
system,
|
|
94
|
+
agent,
|
|
78
95
|
createdAt: now,
|
|
79
96
|
updatedAt: now,
|
|
80
97
|
};
|
|
@@ -292,6 +292,34 @@ export type SystemConfig = {
|
|
|
292
292
|
*/
|
|
293
293
|
logLevel: string;
|
|
294
294
|
};
|
|
295
|
+
export declare enum AgentType {
|
|
296
|
+
ClaudeCode = "claude-code",
|
|
297
|
+
GeminiCli = "gemini-cli",
|
|
298
|
+
Aider = "aider",
|
|
299
|
+
Continue = "continue",
|
|
300
|
+
Cursor = "cursor"
|
|
301
|
+
}
|
|
302
|
+
export declare enum AgentAuthMethod {
|
|
303
|
+
Session = "session",
|
|
304
|
+
Token = "token"
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* AI coding agent configuration
|
|
308
|
+
*/
|
|
309
|
+
export type AgentConfig = {
|
|
310
|
+
/**
|
|
311
|
+
* Selected AI coding agent
|
|
312
|
+
*/
|
|
313
|
+
type: AgentType;
|
|
314
|
+
/**
|
|
315
|
+
* Authentication method for the agent
|
|
316
|
+
*/
|
|
317
|
+
authMethod: AgentAuthMethod;
|
|
318
|
+
/**
|
|
319
|
+
* API token for token-based auth (optional)
|
|
320
|
+
*/
|
|
321
|
+
token?: string;
|
|
322
|
+
};
|
|
295
323
|
/**
|
|
296
324
|
* Global Shep platform settings (singleton)
|
|
297
325
|
*/
|
|
@@ -312,6 +340,10 @@ export type Settings = BaseEntity & {
|
|
|
312
340
|
* System-level parameters
|
|
313
341
|
*/
|
|
314
342
|
system: SystemConfig;
|
|
343
|
+
/**
|
|
344
|
+
* AI coding agent selection and authentication
|
|
345
|
+
*/
|
|
346
|
+
agent: AgentConfig;
|
|
315
347
|
};
|
|
316
348
|
export declare enum TaskState {
|
|
317
349
|
Todo = "Todo",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../../../src/domain/generated/output.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../../../src/domain/generated/output.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,6 +34,19 @@ export var ResearchState;
|
|
|
34
34
|
ResearchState["Running"] = "Running";
|
|
35
35
|
ResearchState["Finished"] = "Finished";
|
|
36
36
|
})(ResearchState || (ResearchState = {}));
|
|
37
|
+
export var AgentType;
|
|
38
|
+
(function (AgentType) {
|
|
39
|
+
AgentType["ClaudeCode"] = "claude-code";
|
|
40
|
+
AgentType["GeminiCli"] = "gemini-cli";
|
|
41
|
+
AgentType["Aider"] = "aider";
|
|
42
|
+
AgentType["Continue"] = "continue";
|
|
43
|
+
AgentType["Cursor"] = "cursor";
|
|
44
|
+
})(AgentType || (AgentType = {}));
|
|
45
|
+
export var AgentAuthMethod;
|
|
46
|
+
(function (AgentAuthMethod) {
|
|
47
|
+
AgentAuthMethod["Session"] = "session";
|
|
48
|
+
AgentAuthMethod["Token"] = "token";
|
|
49
|
+
})(AgentAuthMethod || (AgentAuthMethod = {}));
|
|
37
50
|
export var TaskState;
|
|
38
51
|
(function (TaskState) {
|
|
39
52
|
TaskState["Todo"] = "Todo";
|
|
@@ -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;
|
|
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"}
|
|
@@ -13,10 +13,15 @@
|
|
|
13
13
|
import 'reflect-metadata';
|
|
14
14
|
import { container } from 'tsyringe';
|
|
15
15
|
import { SQLiteSettingsRepository } from '../repositories/sqlite-settings.repository.js';
|
|
16
|
+
import { AgentValidatorService } from '../services/agents/agent-validator.service.js';
|
|
17
|
+
import { promisify } from 'node:util';
|
|
18
|
+
import { execFile } from 'node:child_process';
|
|
16
19
|
// Use cases
|
|
17
20
|
import { InitializeSettingsUseCase } from '../../application/use-cases/settings/initialize-settings.use-case.js';
|
|
18
21
|
import { LoadSettingsUseCase } from '../../application/use-cases/settings/load-settings.use-case.js';
|
|
19
22
|
import { UpdateSettingsUseCase } from '../../application/use-cases/settings/update-settings.use-case.js';
|
|
23
|
+
import { ConfigureAgentUseCase } from '../../application/use-cases/agents/configure-agent.use-case.js';
|
|
24
|
+
import { ValidateAgentAuthUseCase } from '../../application/use-cases/agents/validate-agent-auth.use-case.js';
|
|
20
25
|
// Database connection
|
|
21
26
|
import { getSQLiteConnection } from '../persistence/sqlite/connection.js';
|
|
22
27
|
import { runSQLiteMigrations } from '../persistence/sqlite/migrations.js';
|
|
@@ -40,10 +45,17 @@ export async function initializeContainer() {
|
|
|
40
45
|
return new SQLiteSettingsRepository(database);
|
|
41
46
|
},
|
|
42
47
|
});
|
|
48
|
+
// Register validators
|
|
49
|
+
const execFileAsync = promisify(execFile);
|
|
50
|
+
container.register('IAgentValidator', {
|
|
51
|
+
useFactory: () => new AgentValidatorService(execFileAsync),
|
|
52
|
+
});
|
|
43
53
|
// Register use cases (singletons for performance)
|
|
44
54
|
container.registerSingleton(InitializeSettingsUseCase);
|
|
45
55
|
container.registerSingleton(LoadSettingsUseCase);
|
|
46
56
|
container.registerSingleton(UpdateSettingsUseCase);
|
|
57
|
+
container.registerSingleton(ConfigureAgentUseCase);
|
|
58
|
+
container.registerSingleton(ValidateAgentAuthUseCase);
|
|
47
59
|
return container;
|
|
48
60
|
}
|
|
49
61
|
/**
|
|
@@ -30,6 +30,9 @@ export interface SettingsRow {
|
|
|
30
30
|
env_shell_preference: string;
|
|
31
31
|
sys_auto_update: number;
|
|
32
32
|
sys_log_level: string;
|
|
33
|
+
agent_type: string;
|
|
34
|
+
agent_auth_method: string;
|
|
35
|
+
agent_token: string | null;
|
|
33
36
|
}
|
|
34
37
|
/**
|
|
35
38
|
* Maps Settings domain object to database row.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.mapper.d.ts","sourceRoot":"","sources":["../../../../../../src/infrastructure/persistence/sqlite/mappers/settings.mapper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;
|
|
1
|
+
{"version":3,"file":"settings.mapper.d.ts","sourceRoot":"","sources":["../../../../../../src/infrastructure/persistence/sqlite/mappers/settings.mapper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAGvE;;;GAGG;AACH,MAAM,WAAW,WAAW;IAE1B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IAGnB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IAGxB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IAGpC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;IAG7B,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IAGtB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,WAAW,CAiC1D;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,WAAW,GAAG,QAAQ,CAyCvD"}
|
|
@@ -38,6 +38,10 @@ export function toDatabase(settings) {
|
|
|
38
38
|
// SystemConfig
|
|
39
39
|
sys_auto_update: settings.system.autoUpdate ? 1 : 0,
|
|
40
40
|
sys_log_level: settings.system.logLevel,
|
|
41
|
+
// AgentConfig (optional token → NULL)
|
|
42
|
+
agent_type: settings.agent.type,
|
|
43
|
+
agent_auth_method: settings.agent.authMethod,
|
|
44
|
+
agent_token: settings.agent.token ?? null,
|
|
41
45
|
};
|
|
42
46
|
}
|
|
43
47
|
/**
|
|
@@ -76,5 +80,11 @@ export function fromDatabase(row) {
|
|
|
76
80
|
autoUpdate: row.sys_auto_update === 1,
|
|
77
81
|
logLevel: row.sys_log_level,
|
|
78
82
|
},
|
|
83
|
+
// AgentConfig (NULL → undefined for optional token)
|
|
84
|
+
agent: {
|
|
85
|
+
type: row.agent_type,
|
|
86
|
+
authMethod: row.agent_auth_method,
|
|
87
|
+
...(row.agent_token !== null && { token: row.agent_token }),
|
|
88
|
+
},
|
|
79
89
|
};
|
|
80
90
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../../../../src/infrastructure/persistence/sqlite/migrations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../../../../src/infrastructure/persistence/sqlite/migrations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AA8B3C;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,mBAAmB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CA6B9E"}
|
|
@@ -24,7 +24,10 @@ const MIGRATIONS_DIR = join(__dirname, 'migrations');
|
|
|
24
24
|
/**
|
|
25
25
|
* List of all migrations in order.
|
|
26
26
|
*/
|
|
27
|
-
const MIGRATIONS = [
|
|
27
|
+
const MIGRATIONS = [
|
|
28
|
+
{ version: 1, filename: '001_create_settings_table.sql' },
|
|
29
|
+
{ version: 2, filename: '002_add_agent_config.sql' },
|
|
30
|
+
];
|
|
28
31
|
/**
|
|
29
32
|
* Runs all pending database migrations.
|
|
30
33
|
* Safe to call multiple times (idempotent).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite-settings.repository.d.ts","sourceRoot":"","sources":["../../../../src/infrastructure/repositories/sqlite-settings.repository.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iEAAiE,CAAC;AAC3G,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAOjE;;;GAGG;AACH,qBACa,wBAAyB,YAAW,mBAAmB;IACtD,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ,CAAC,QAAQ;IAElD;;;;;;OAMG;IACG,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"sqlite-settings.repository.d.ts","sourceRoot":"","sources":["../../../../src/infrastructure/repositories/sqlite-settings.repository.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iEAAiE,CAAC;AAC3G,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAOjE;;;GAGG;AACH,qBACa,wBAAyB,YAAW,mBAAmB;IACtD,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ,CAAC,QAAQ;IAElD;;;;;;OAMG;IACG,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAiCnD;;;;OAIG;IACG,IAAI,IAAI,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAgBtC;;;;;OAKG;IACG,MAAM,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;CAwChD"}
|
|
@@ -47,13 +47,15 @@ let SQLiteSettingsRepository = class SQLiteSettingsRepository {
|
|
|
47
47
|
model_analyze, model_requirements, model_plan, model_implement,
|
|
48
48
|
user_name, user_email, user_github_username,
|
|
49
49
|
env_default_editor, env_shell_preference,
|
|
50
|
-
sys_auto_update, sys_log_level
|
|
50
|
+
sys_auto_update, sys_log_level,
|
|
51
|
+
agent_type, agent_auth_method, agent_token
|
|
51
52
|
) VALUES (
|
|
52
53
|
@id, @created_at, @updated_at,
|
|
53
54
|
@model_analyze, @model_requirements, @model_plan, @model_implement,
|
|
54
55
|
@user_name, @user_email, @user_github_username,
|
|
55
56
|
@env_default_editor, @env_shell_preference,
|
|
56
|
-
@sys_auto_update, @sys_log_level
|
|
57
|
+
@sys_auto_update, @sys_log_level,
|
|
58
|
+
@agent_type, @agent_auth_method, @agent_token
|
|
57
59
|
)
|
|
58
60
|
`);
|
|
59
61
|
// Execute with named parameters (safe from SQL injection)
|
|
@@ -65,10 +67,10 @@ let SQLiteSettingsRepository = class SQLiteSettingsRepository {
|
|
|
65
67
|
* @returns The existing Settings or null if not initialized
|
|
66
68
|
*/
|
|
67
69
|
async load() {
|
|
68
|
-
//
|
|
69
|
-
const stmt = this.db.prepare('SELECT * FROM settings
|
|
70
|
+
// Query the singleton row (table enforces at most one row)
|
|
71
|
+
const stmt = this.db.prepare('SELECT * FROM settings LIMIT 1');
|
|
70
72
|
// Execute query
|
|
71
|
-
const row = stmt.get(
|
|
73
|
+
const row = stmt.get();
|
|
72
74
|
// Return null if not found
|
|
73
75
|
if (!row) {
|
|
74
76
|
return null;
|
|
@@ -105,7 +107,10 @@ let SQLiteSettingsRepository = class SQLiteSettingsRepository {
|
|
|
105
107
|
env_default_editor = @env_default_editor,
|
|
106
108
|
env_shell_preference = @env_shell_preference,
|
|
107
109
|
sys_auto_update = @sys_auto_update,
|
|
108
|
-
sys_log_level = @sys_log_level
|
|
110
|
+
sys_log_level = @sys_log_level,
|
|
111
|
+
agent_type = @agent_type,
|
|
112
|
+
agent_auth_method = @agent_auth_method,
|
|
113
|
+
agent_token = @agent_token
|
|
109
114
|
WHERE id = @id
|
|
110
115
|
`);
|
|
111
116
|
// Execute with named parameters (safe from SQL injection)
|