aipanel-cli 0.1.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.
- package/LICENSE +21 -0
- package/README.md +166 -0
- package/dist/bin/aipanel.d.ts +2 -0
- package/dist/bin/aipanel.js +5 -0
- package/dist/bin/aipanel.js.map +1 -0
- package/dist/src/app/AipanelApp.d.ts +17 -0
- package/dist/src/app/AipanelApp.js +53 -0
- package/dist/src/app/AipanelApp.js.map +1 -0
- package/dist/src/app/CommandRouter.d.ts +9 -0
- package/dist/src/app/CommandRouter.js +154 -0
- package/dist/src/app/CommandRouter.js.map +1 -0
- package/dist/src/app/ProfileLoader.d.ts +10 -0
- package/dist/src/app/ProfileLoader.js +51 -0
- package/dist/src/app/ProfileLoader.js.map +1 -0
- package/dist/src/app/WorkflowSelector.d.ts +4 -0
- package/dist/src/app/WorkflowSelector.js +6 -0
- package/dist/src/app/WorkflowSelector.js.map +1 -0
- package/dist/src/app/index.d.ts +4 -0
- package/dist/src/app/index.js +5 -0
- package/dist/src/app/index.js.map +1 -0
- package/dist/src/app/types.d.ts +36 -0
- package/dist/src/app/types.js +2 -0
- package/dist/src/app/types.js.map +1 -0
- package/dist/src/artifact/ArtifactRepository.d.ts +33 -0
- package/dist/src/artifact/ArtifactRepository.js +91 -0
- package/dist/src/artifact/ArtifactRepository.js.map +1 -0
- package/dist/src/artifact/index.d.ts +1 -0
- package/dist/src/artifact/index.js +2 -0
- package/dist/src/artifact/index.js.map +1 -0
- package/dist/src/cli/aipanel.d.ts +2 -0
- package/dist/src/cli/aipanel.js +32 -0
- package/dist/src/cli/aipanel.js.map +1 -0
- package/dist/src/compare/ComparisonEngine.d.ts +5 -0
- package/dist/src/compare/ComparisonEngine.js +19 -0
- package/dist/src/compare/ComparisonEngine.js.map +1 -0
- package/dist/src/compare/ResponseNormalizer.d.ts +36 -0
- package/dist/src/compare/ResponseNormalizer.js +43 -0
- package/dist/src/compare/ResponseNormalizer.js.map +1 -0
- package/dist/src/compare/index.d.ts +3 -0
- package/dist/src/compare/index.js +3 -0
- package/dist/src/compare/index.js.map +1 -0
- package/dist/src/context/ContextCollector.d.ts +43 -0
- package/dist/src/context/ContextCollector.js +81 -0
- package/dist/src/context/ContextCollector.js.map +1 -0
- package/dist/src/context/index.d.ts +2 -0
- package/dist/src/context/index.js +2 -0
- package/dist/src/context/index.js.map +1 -0
- package/dist/src/domain/artifact.d.ts +36 -0
- package/dist/src/domain/artifact.js +62 -0
- package/dist/src/domain/artifact.js.map +1 -0
- package/dist/src/domain/base.d.ts +10 -0
- package/dist/src/domain/base.js +23 -0
- package/dist/src/domain/base.js.map +1 -0
- package/dist/src/domain/index.d.ts +5 -0
- package/dist/src/domain/index.js +6 -0
- package/dist/src/domain/index.js.map +1 -0
- package/dist/src/domain/run.d.ts +260 -0
- package/dist/src/domain/run.js +456 -0
- package/dist/src/domain/run.js.map +1 -0
- package/dist/src/domain/session.d.ts +72 -0
- package/dist/src/domain/session.js +131 -0
- package/dist/src/domain/session.js.map +1 -0
- package/dist/src/domain/value-objects.d.ts +120 -0
- package/dist/src/domain/value-objects.js +191 -0
- package/dist/src/domain/value-objects.js.map +1 -0
- package/dist/src/orchestrator/PlanBuilder.d.ts +6 -0
- package/dist/src/orchestrator/PlanBuilder.js +59 -0
- package/dist/src/orchestrator/PlanBuilder.js.map +1 -0
- package/dist/src/orchestrator/ResultMerger.d.ts +10 -0
- package/dist/src/orchestrator/ResultMerger.js +19 -0
- package/dist/src/orchestrator/ResultMerger.js.map +1 -0
- package/dist/src/orchestrator/TaskExecutor.d.ts +20 -0
- package/dist/src/orchestrator/TaskExecutor.js +81 -0
- package/dist/src/orchestrator/TaskExecutor.js.map +1 -0
- package/dist/src/orchestrator/TaskScheduler.d.ts +4 -0
- package/dist/src/orchestrator/TaskScheduler.js +19 -0
- package/dist/src/orchestrator/TaskScheduler.js.map +1 -0
- package/dist/src/orchestrator/ValidationRunner.d.ts +4 -0
- package/dist/src/orchestrator/ValidationRunner.js +22 -0
- package/dist/src/orchestrator/ValidationRunner.js.map +1 -0
- package/dist/src/orchestrator/index.d.ts +5 -0
- package/dist/src/orchestrator/index.js +6 -0
- package/dist/src/orchestrator/index.js.map +1 -0
- package/dist/src/output/ResultRenderer.d.ts +13 -0
- package/dist/src/output/ResultRenderer.js +49 -0
- package/dist/src/output/ResultRenderer.js.map +1 -0
- package/dist/src/output/index.d.ts +1 -0
- package/dist/src/output/index.js +2 -0
- package/dist/src/output/index.js.map +1 -0
- package/dist/src/providers/ClaudeCodeAdapter.d.ts +5 -0
- package/dist/src/providers/ClaudeCodeAdapter.js +95 -0
- package/dist/src/providers/ClaudeCodeAdapter.js.map +1 -0
- package/dist/src/providers/ProviderAdapter.d.ts +35 -0
- package/dist/src/providers/ProviderAdapter.js +2 -0
- package/dist/src/providers/ProviderAdapter.js.map +1 -0
- package/dist/src/providers/ProviderRegistry.d.ts +12 -0
- package/dist/src/providers/ProviderRegistry.js +23 -0
- package/dist/src/providers/ProviderRegistry.js.map +1 -0
- package/dist/src/providers/index.d.ts +3 -0
- package/dist/src/providers/index.js +4 -0
- package/dist/src/providers/index.js.map +1 -0
- package/dist/src/run/RunCoordinator.d.ts +33 -0
- package/dist/src/run/RunCoordinator.js +101 -0
- package/dist/src/run/RunCoordinator.js.map +1 -0
- package/dist/src/run/RunRepository.d.ts +14 -0
- package/dist/src/run/RunRepository.js +55 -0
- package/dist/src/run/RunRepository.js.map +1 -0
- package/dist/src/run/index.d.ts +2 -0
- package/dist/src/run/index.js +3 -0
- package/dist/src/run/index.js.map +1 -0
- package/dist/src/session/SessionManager.d.ts +26 -0
- package/dist/src/session/SessionManager.js +60 -0
- package/dist/src/session/SessionManager.js.map +1 -0
- package/dist/src/session/SessionRepository.d.ts +14 -0
- package/dist/src/session/SessionRepository.js +55 -0
- package/dist/src/session/SessionRepository.js.map +1 -0
- package/dist/src/session/index.d.ts +2 -0
- package/dist/src/session/index.js +3 -0
- package/dist/src/session/index.js.map +1 -0
- package/dist/src/shared/clock.d.ts +4 -0
- package/dist/src/shared/clock.js +9 -0
- package/dist/src/shared/clock.js.map +1 -0
- package/dist/src/shared/contracts.d.ts +254 -0
- package/dist/src/shared/contracts.js +2 -0
- package/dist/src/shared/contracts.js.map +1 -0
- package/dist/src/shared/errors.d.ts +9 -0
- package/dist/src/shared/errors.js +11 -0
- package/dist/src/shared/errors.js.map +1 -0
- package/dist/src/shared/file-system.d.ts +8 -0
- package/dist/src/shared/file-system.js +36 -0
- package/dist/src/shared/file-system.js.map +1 -0
- package/dist/src/shared/ids.d.ts +1 -0
- package/dist/src/shared/ids.js +6 -0
- package/dist/src/shared/ids.js.map +1 -0
- package/dist/src/usecases/CompareUseCase.d.ts +6 -0
- package/dist/src/usecases/CompareUseCase.js +9 -0
- package/dist/src/usecases/CompareUseCase.js.map +1 -0
- package/dist/src/usecases/ConsultUseCase.d.ts +48 -0
- package/dist/src/usecases/ConsultUseCase.js +187 -0
- package/dist/src/usecases/ConsultUseCase.js.map +1 -0
- package/dist/src/usecases/DebugUseCase.d.ts +48 -0
- package/dist/src/usecases/DebugUseCase.js +191 -0
- package/dist/src/usecases/DebugUseCase.js.map +1 -0
- package/dist/src/usecases/FollowupUseCase.d.ts +6 -0
- package/dist/src/usecases/FollowupUseCase.js +14 -0
- package/dist/src/usecases/FollowupUseCase.js.map +1 -0
- package/dist/src/usecases/ListProvidersUseCase.d.ts +9 -0
- package/dist/src/usecases/ListProvidersUseCase.js +13 -0
- package/dist/src/usecases/ListProvidersUseCase.js.map +1 -0
- package/dist/src/usecases/helpers.d.ts +9 -0
- package/dist/src/usecases/helpers.js +31 -0
- package/dist/src/usecases/helpers.js.map +1 -0
- package/dist/src/usecases/index.d.ts +5 -0
- package/dist/src/usecases/index.js +6 -0
- package/dist/src/usecases/index.js.map +1 -0
- package/package.json +57 -0
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Session, SessionTurn, ProviderRef, type Clock, type IdGenerator, type ProviderRefProps, type SessionTurnRole } from "../domain/index.js";
|
|
2
|
+
import { SessionRepository } from "./SessionRepository.js";
|
|
3
|
+
export interface SessionManagerOptions {
|
|
4
|
+
repository: SessionRepository;
|
|
5
|
+
clock?: Clock;
|
|
6
|
+
idGenerator?: IdGenerator;
|
|
7
|
+
}
|
|
8
|
+
export declare class SessionManager {
|
|
9
|
+
private readonly repository;
|
|
10
|
+
private readonly clock;
|
|
11
|
+
private readonly idGenerator;
|
|
12
|
+
constructor(options: SessionManagerOptions);
|
|
13
|
+
startOrResume(params?: {
|
|
14
|
+
sessionId?: string;
|
|
15
|
+
title?: string;
|
|
16
|
+
}): Promise<Session>;
|
|
17
|
+
appendTurn(session: Session, params: {
|
|
18
|
+
role: SessionTurnRole;
|
|
19
|
+
content: string;
|
|
20
|
+
artifactIds?: string[];
|
|
21
|
+
}): Promise<SessionTurn>;
|
|
22
|
+
appendUserTurn(session: Session, content: string, artifactIds?: string[]): Promise<SessionTurn>;
|
|
23
|
+
appendAssistantTurn(session: Session, content: string, artifactIds?: string[]): Promise<SessionTurn>;
|
|
24
|
+
updateProviderRef(session: Session, providerRef: ProviderRef | ProviderRefProps): Promise<Session>;
|
|
25
|
+
save(session: Session): Promise<Session>;
|
|
26
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { Session, SessionTurn, ProviderRef, defaultClock, defaultIdGenerator, } from "../domain/index.js";
|
|
2
|
+
import { SessionRepository } from "./SessionRepository.js";
|
|
3
|
+
export class SessionManager {
|
|
4
|
+
repository;
|
|
5
|
+
clock;
|
|
6
|
+
idGenerator;
|
|
7
|
+
constructor(options) {
|
|
8
|
+
this.repository = options.repository;
|
|
9
|
+
this.clock = options.clock ?? defaultClock;
|
|
10
|
+
this.idGenerator = options.idGenerator ?? defaultIdGenerator;
|
|
11
|
+
}
|
|
12
|
+
async startOrResume(params = {}) {
|
|
13
|
+
if (params.sessionId) {
|
|
14
|
+
return this.repository.require(params.sessionId);
|
|
15
|
+
}
|
|
16
|
+
const session = Session.create({
|
|
17
|
+
clock: this.clock,
|
|
18
|
+
idGenerator: this.idGenerator,
|
|
19
|
+
...(params.title ? { title: params.title } : {}),
|
|
20
|
+
});
|
|
21
|
+
return this.repository.save(session);
|
|
22
|
+
}
|
|
23
|
+
async appendTurn(session, params) {
|
|
24
|
+
const turn = session.createTurn({
|
|
25
|
+
role: params.role,
|
|
26
|
+
content: params.content,
|
|
27
|
+
clock: this.clock,
|
|
28
|
+
idGenerator: this.idGenerator,
|
|
29
|
+
...(params.artifactIds ? { artifactIds: params.artifactIds } : {}),
|
|
30
|
+
});
|
|
31
|
+
await this.repository.save(session);
|
|
32
|
+
return turn;
|
|
33
|
+
}
|
|
34
|
+
async appendUserTurn(session, content, artifactIds = []) {
|
|
35
|
+
return this.appendTurn(session, {
|
|
36
|
+
role: 'user',
|
|
37
|
+
content,
|
|
38
|
+
artifactIds,
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
async appendAssistantTurn(session, content, artifactIds = []) {
|
|
42
|
+
return this.appendTurn(session, {
|
|
43
|
+
role: 'assistant',
|
|
44
|
+
content,
|
|
45
|
+
artifactIds,
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
async updateProviderRef(session, providerRef) {
|
|
49
|
+
const resolved = ProviderRef.from(providerRef);
|
|
50
|
+
session.upsertProviderRef(new ProviderRef({
|
|
51
|
+
...resolved.toJSON(),
|
|
52
|
+
lastUsedAt: resolved.lastUsedAt ?? this.clock(),
|
|
53
|
+
}), this.clock());
|
|
54
|
+
return this.repository.save(session);
|
|
55
|
+
}
|
|
56
|
+
async save(session) {
|
|
57
|
+
return this.repository.save(session);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=SessionManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SessionManager.js","sourceRoot":"","sources":["../../../src/session/SessionManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Session } from "../domain/index.js";
|
|
2
|
+
export interface SessionRepositoryOptions {
|
|
3
|
+
storageRoot?: string;
|
|
4
|
+
}
|
|
5
|
+
export declare class SessionRepository {
|
|
6
|
+
private readonly storageRoot;
|
|
7
|
+
constructor(options?: SessionRepositoryOptions);
|
|
8
|
+
get sessionsDirectory(): string;
|
|
9
|
+
filePathFor(sessionId: string): string;
|
|
10
|
+
save(session: Session): Promise<Session>;
|
|
11
|
+
get(sessionId: string): Promise<Session | null>;
|
|
12
|
+
require(sessionId: string): Promise<Session>;
|
|
13
|
+
list(): Promise<Session[]>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { mkdir, readdir, readFile, writeFile } from 'node:fs/promises';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { Session } from "../domain/index.js";
|
|
4
|
+
export class SessionRepository {
|
|
5
|
+
storageRoot;
|
|
6
|
+
constructor(options = {}) {
|
|
7
|
+
this.storageRoot = options.storageRoot ?? path.join(process.cwd(), '.aipanel');
|
|
8
|
+
}
|
|
9
|
+
get sessionsDirectory() {
|
|
10
|
+
return path.join(this.storageRoot, 'sessions');
|
|
11
|
+
}
|
|
12
|
+
filePathFor(sessionId) {
|
|
13
|
+
return path.join(this.sessionsDirectory, `${sessionId}.json`);
|
|
14
|
+
}
|
|
15
|
+
async save(session) {
|
|
16
|
+
await mkdir(this.sessionsDirectory, { recursive: true });
|
|
17
|
+
const document = { session: session.toJSON() };
|
|
18
|
+
await writeFile(this.filePathFor(session.sessionId), JSON.stringify(document, null, 2), 'utf8');
|
|
19
|
+
return session;
|
|
20
|
+
}
|
|
21
|
+
async get(sessionId) {
|
|
22
|
+
try {
|
|
23
|
+
const raw = await readFile(this.filePathFor(sessionId), 'utf8');
|
|
24
|
+
const parsed = JSON.parse(raw);
|
|
25
|
+
return Session.fromJSON('session' in parsed ? parsed.session : parsed);
|
|
26
|
+
}
|
|
27
|
+
catch (error) {
|
|
28
|
+
if (error.code === 'ENOENT') {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
throw error;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
async require(sessionId) {
|
|
35
|
+
const session = await this.get(sessionId);
|
|
36
|
+
if (!session) {
|
|
37
|
+
throw new Error(`Session not found: ${sessionId}`);
|
|
38
|
+
}
|
|
39
|
+
return session;
|
|
40
|
+
}
|
|
41
|
+
async list() {
|
|
42
|
+
await mkdir(this.sessionsDirectory, { recursive: true });
|
|
43
|
+
const entries = await readdir(this.sessionsDirectory, { withFileTypes: true });
|
|
44
|
+
const sessions = await Promise.all(entries
|
|
45
|
+
.filter((entry) => entry.isFile() && entry.name.endsWith('.json'))
|
|
46
|
+
.map(async (entry) => {
|
|
47
|
+
const sessionId = entry.name.replace(/\.json$/u, '');
|
|
48
|
+
return this.get(sessionId);
|
|
49
|
+
}));
|
|
50
|
+
return sessions
|
|
51
|
+
.filter((session) => Boolean(session))
|
|
52
|
+
.sort((left, right) => right.updatedAt.localeCompare(left.updatedAt));
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=SessionRepository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SessionRepository.js","sourceRoot":"","sources":["../../../src/session/SessionRepository.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/session/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clock.js","sourceRoot":"","sources":["../../../src/shared/clock.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,GAAG;QACD,OAAO,IAAI,IAAI,EAAE,CAAC;IACpB,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAClC,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
export type Role = "system" | "user" | "assistant";
|
|
2
|
+
export type RunMode = "direct" | "orchestrated";
|
|
3
|
+
export type RunStatus = "created" | "planned" | "running" | "merged" | "validated" | "completed" | "failed" | "partial";
|
|
4
|
+
export interface ProviderRef {
|
|
5
|
+
provider: string;
|
|
6
|
+
providerSessionId: string;
|
|
7
|
+
workingDirectory: string;
|
|
8
|
+
lastUsedAt: string;
|
|
9
|
+
}
|
|
10
|
+
export interface SessionTurnData {
|
|
11
|
+
turnId: string;
|
|
12
|
+
sessionId: string;
|
|
13
|
+
role: Role;
|
|
14
|
+
content: string;
|
|
15
|
+
artifactIds: string[];
|
|
16
|
+
createdAt: string;
|
|
17
|
+
}
|
|
18
|
+
export interface SessionData {
|
|
19
|
+
sessionId: string;
|
|
20
|
+
title: string;
|
|
21
|
+
status?: string;
|
|
22
|
+
createdAt: string;
|
|
23
|
+
updatedAt: string;
|
|
24
|
+
providerRefs: ProviderRef[];
|
|
25
|
+
turns: SessionTurnData[];
|
|
26
|
+
}
|
|
27
|
+
export interface FileRef {
|
|
28
|
+
path: string;
|
|
29
|
+
absolutePath?: string;
|
|
30
|
+
purpose: string;
|
|
31
|
+
checksum?: string;
|
|
32
|
+
content?: string;
|
|
33
|
+
}
|
|
34
|
+
export interface DiffRef {
|
|
35
|
+
path: string;
|
|
36
|
+
summary?: string;
|
|
37
|
+
content?: string;
|
|
38
|
+
}
|
|
39
|
+
export interface LogRef {
|
|
40
|
+
path: string;
|
|
41
|
+
source: string;
|
|
42
|
+
capturedAt: string;
|
|
43
|
+
content?: string;
|
|
44
|
+
}
|
|
45
|
+
export interface ContextBundleData {
|
|
46
|
+
contextId: string;
|
|
47
|
+
runId: string | null;
|
|
48
|
+
summary: string;
|
|
49
|
+
files: FileRef[];
|
|
50
|
+
diffs: DiffRef[];
|
|
51
|
+
logs: LogRef[];
|
|
52
|
+
metadata: Record<string, unknown>;
|
|
53
|
+
}
|
|
54
|
+
export interface ProviderCallPlan {
|
|
55
|
+
provider: string;
|
|
56
|
+
prompt: string;
|
|
57
|
+
sessionHint?: ProviderRef | null;
|
|
58
|
+
timeoutMs?: number;
|
|
59
|
+
mode: RunMode;
|
|
60
|
+
}
|
|
61
|
+
export interface UsageData {
|
|
62
|
+
inputTokens?: number | null;
|
|
63
|
+
outputTokens?: number | null;
|
|
64
|
+
costUsd?: number | null;
|
|
65
|
+
latencyMs?: number | null;
|
|
66
|
+
}
|
|
67
|
+
export interface ExternalRef {
|
|
68
|
+
system: string;
|
|
69
|
+
id: string;
|
|
70
|
+
scope?: string;
|
|
71
|
+
}
|
|
72
|
+
export interface ProviderResponseData {
|
|
73
|
+
responseId: string;
|
|
74
|
+
taskId: string;
|
|
75
|
+
provider: string;
|
|
76
|
+
rawText?: string;
|
|
77
|
+
rawJson?: unknown;
|
|
78
|
+
rawTextRef?: string | null;
|
|
79
|
+
rawJsonRef?: string | null;
|
|
80
|
+
usage?: UsageData | null;
|
|
81
|
+
latencyMs?: number;
|
|
82
|
+
externalRefs: ExternalRef[];
|
|
83
|
+
citations?: CitationData[];
|
|
84
|
+
isError?: boolean;
|
|
85
|
+
subtype?: string | null;
|
|
86
|
+
}
|
|
87
|
+
export interface ConfidenceScoreData {
|
|
88
|
+
level: "low" | "medium" | "high";
|
|
89
|
+
reason?: string | null;
|
|
90
|
+
}
|
|
91
|
+
export interface CitationData {
|
|
92
|
+
kind: string;
|
|
93
|
+
label?: string | null;
|
|
94
|
+
pathOrUrl?: string | null;
|
|
95
|
+
line?: number | null;
|
|
96
|
+
}
|
|
97
|
+
export interface NormalizedResponseData {
|
|
98
|
+
normalizedResponseId: string;
|
|
99
|
+
taskId: string;
|
|
100
|
+
provider: string;
|
|
101
|
+
summary: string;
|
|
102
|
+
findings: string[];
|
|
103
|
+
suggestions: string[];
|
|
104
|
+
citations: CitationData[];
|
|
105
|
+
confidence: ConfidenceScoreData;
|
|
106
|
+
}
|
|
107
|
+
export interface RunTaskData {
|
|
108
|
+
taskId: string;
|
|
109
|
+
runId: string;
|
|
110
|
+
taskKind: string;
|
|
111
|
+
role: string;
|
|
112
|
+
provider?: string | null;
|
|
113
|
+
dependsOn: string[];
|
|
114
|
+
status: RunStatus | "queued";
|
|
115
|
+
prompt?: string;
|
|
116
|
+
summary?: string;
|
|
117
|
+
}
|
|
118
|
+
export interface TaskResultData {
|
|
119
|
+
resultId: string;
|
|
120
|
+
taskId: string;
|
|
121
|
+
summary: string;
|
|
122
|
+
findings: string[];
|
|
123
|
+
citations: CitationData[];
|
|
124
|
+
confidence: ConfidenceScoreData;
|
|
125
|
+
sourceArtifactIds: string[];
|
|
126
|
+
}
|
|
127
|
+
export interface ComparisonReportData {
|
|
128
|
+
reportId: string | null;
|
|
129
|
+
runId: string | null;
|
|
130
|
+
topic: string;
|
|
131
|
+
responseIds: string[];
|
|
132
|
+
agreements: string[];
|
|
133
|
+
differences: string[];
|
|
134
|
+
recommendation: string | null;
|
|
135
|
+
}
|
|
136
|
+
export interface RunData {
|
|
137
|
+
runId: string;
|
|
138
|
+
sessionId: string;
|
|
139
|
+
command: string;
|
|
140
|
+
mode: RunMode;
|
|
141
|
+
status: RunStatus;
|
|
142
|
+
planVersion?: string;
|
|
143
|
+
finalSummary?: string;
|
|
144
|
+
validationStatus?: string;
|
|
145
|
+
tasks: RunTaskData[];
|
|
146
|
+
taskResults: TaskResultData[];
|
|
147
|
+
contextBundles?: ContextBundleData[];
|
|
148
|
+
providerResponses?: ProviderResponseData[];
|
|
149
|
+
normalizedResponses?: NormalizedResponseData[];
|
|
150
|
+
comparisonReport?: ComparisonReportData | null;
|
|
151
|
+
createdAt: string;
|
|
152
|
+
updatedAt: string;
|
|
153
|
+
}
|
|
154
|
+
export interface ArtifactData {
|
|
155
|
+
artifactId: string;
|
|
156
|
+
kind: string;
|
|
157
|
+
path: string;
|
|
158
|
+
sessionId?: string | null;
|
|
159
|
+
runId?: string | null;
|
|
160
|
+
turnId?: string | null;
|
|
161
|
+
taskId?: string | null;
|
|
162
|
+
createdAt: string;
|
|
163
|
+
}
|
|
164
|
+
export interface SessionManagerPort {
|
|
165
|
+
startSession(input: {
|
|
166
|
+
title?: string;
|
|
167
|
+
}): Promise<SessionData>;
|
|
168
|
+
loadSession(sessionId: string): Promise<SessionData | null>;
|
|
169
|
+
appendTurn(input: {
|
|
170
|
+
sessionId: string;
|
|
171
|
+
role: Role;
|
|
172
|
+
content: string;
|
|
173
|
+
artifactIds?: string[];
|
|
174
|
+
}): Promise<SessionData>;
|
|
175
|
+
updateProviderRef(input: {
|
|
176
|
+
sessionId: string;
|
|
177
|
+
providerRef: ProviderRef;
|
|
178
|
+
}): Promise<SessionData>;
|
|
179
|
+
}
|
|
180
|
+
export interface RunCoordinatorPort {
|
|
181
|
+
startRun(input: {
|
|
182
|
+
sessionId: string;
|
|
183
|
+
command: string;
|
|
184
|
+
mode: RunMode;
|
|
185
|
+
}): Promise<RunData>;
|
|
186
|
+
attachContextBundle(input: {
|
|
187
|
+
runId: string;
|
|
188
|
+
contextBundle: ContextBundleData;
|
|
189
|
+
}): Promise<RunData>;
|
|
190
|
+
appendTask(input: {
|
|
191
|
+
runId: string;
|
|
192
|
+
taskKind: string;
|
|
193
|
+
role: string;
|
|
194
|
+
provider?: string | null;
|
|
195
|
+
dependsOn?: string[];
|
|
196
|
+
prompt?: string;
|
|
197
|
+
}): Promise<RunTaskData>;
|
|
198
|
+
appendTaskResult(input: {
|
|
199
|
+
runId: string;
|
|
200
|
+
taskId: string;
|
|
201
|
+
summary: string;
|
|
202
|
+
findings: string[];
|
|
203
|
+
citations?: CitationData[];
|
|
204
|
+
confidence: ConfidenceScoreData;
|
|
205
|
+
sourceArtifactIds?: string[];
|
|
206
|
+
providerResponse?: ProviderResponseData;
|
|
207
|
+
normalizedResponse?: NormalizedResponseData;
|
|
208
|
+
}): Promise<RunData>;
|
|
209
|
+
finalizeRun(input: {
|
|
210
|
+
runId: string;
|
|
211
|
+
finalSummary: string;
|
|
212
|
+
validationStatus: string;
|
|
213
|
+
comparisonReport?: ComparisonReportData | null;
|
|
214
|
+
}): Promise<RunData>;
|
|
215
|
+
markRunFailed(input: {
|
|
216
|
+
runId: string;
|
|
217
|
+
errorMessage: string;
|
|
218
|
+
}): Promise<RunData>;
|
|
219
|
+
loadRun(runId: string): Promise<RunData | null>;
|
|
220
|
+
}
|
|
221
|
+
export interface ArtifactRepositoryPort {
|
|
222
|
+
saveArtifact(input: {
|
|
223
|
+
kind: string;
|
|
224
|
+
runId?: string | null;
|
|
225
|
+
sessionId?: string | null;
|
|
226
|
+
turnId?: string | null;
|
|
227
|
+
taskId?: string | null;
|
|
228
|
+
extension?: string;
|
|
229
|
+
content: string;
|
|
230
|
+
}): Promise<ArtifactData>;
|
|
231
|
+
}
|
|
232
|
+
export interface ProviderAdapterPort {
|
|
233
|
+
readonly name: string;
|
|
234
|
+
call(plan: ProviderCallPlan): Promise<ProviderResponseData>;
|
|
235
|
+
}
|
|
236
|
+
export interface ProviderRegistryPort {
|
|
237
|
+
list(): string[];
|
|
238
|
+
get(name?: string): ProviderAdapterPort;
|
|
239
|
+
}
|
|
240
|
+
export interface PlanTaskSpec {
|
|
241
|
+
taskKind: string;
|
|
242
|
+
role: string;
|
|
243
|
+
provider?: string | null;
|
|
244
|
+
prompt: string;
|
|
245
|
+
dependsOn?: string[];
|
|
246
|
+
}
|
|
247
|
+
export interface ValidationResult {
|
|
248
|
+
status: string;
|
|
249
|
+
notes: string[];
|
|
250
|
+
}
|
|
251
|
+
export interface RenderResult {
|
|
252
|
+
text: string;
|
|
253
|
+
json: Record<string, unknown>;
|
|
254
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../../src/shared/contracts.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export class AipanelError extends Error {
|
|
2
|
+
code;
|
|
3
|
+
details;
|
|
4
|
+
constructor(message, { code = "AIPANEL_ERROR", details = null, cause = null } = {}) {
|
|
5
|
+
super(message, cause ? { cause } : undefined);
|
|
6
|
+
this.name = "AipanelError";
|
|
7
|
+
this.code = code;
|
|
8
|
+
this.details = details;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/shared/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,YAAa,SAAQ,KAAK;IACrC,IAAI,CAAS;IAEb,OAAO,CAAU;IAEjB,YACE,OAAe,EACf,EAAE,IAAI,GAAG,eAAe,EAAE,OAAO,GAAG,IAAI,EAAE,KAAK,GAAG,IAAI,KAA4D,EAAE;QAEpH,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC9C,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare function ensureDirectory(path: string): Promise<void>;
|
|
2
|
+
export declare function ensureParentDirectory(path: string): Promise<void>;
|
|
3
|
+
export declare function readText(path: string, encoding?: BufferEncoding): Promise<string>;
|
|
4
|
+
export declare function writeText(path: string, contents: string, encoding?: BufferEncoding): Promise<void>;
|
|
5
|
+
export declare function readJson<T>(path: string): Promise<T>;
|
|
6
|
+
export declare function writeJson(path: string, value: unknown): Promise<void>;
|
|
7
|
+
export declare function pathExists(path: string): Promise<boolean>;
|
|
8
|
+
export declare function listDirectory(path: string): Promise<string[]>;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { access, mkdir, readdir, readFile, writeFile } from "node:fs/promises";
|
|
2
|
+
import { dirname } from "node:path";
|
|
3
|
+
export async function ensureDirectory(path) {
|
|
4
|
+
await mkdir(path, { recursive: true });
|
|
5
|
+
}
|
|
6
|
+
export async function ensureParentDirectory(path) {
|
|
7
|
+
await ensureDirectory(dirname(path));
|
|
8
|
+
}
|
|
9
|
+
export async function readText(path, encoding = "utf8") {
|
|
10
|
+
return readFile(path, encoding);
|
|
11
|
+
}
|
|
12
|
+
export async function writeText(path, contents, encoding = "utf8") {
|
|
13
|
+
await ensureParentDirectory(path);
|
|
14
|
+
await writeFile(path, contents, encoding);
|
|
15
|
+
}
|
|
16
|
+
export async function readJson(path) {
|
|
17
|
+
const text = await readText(path, "utf8");
|
|
18
|
+
return JSON.parse(text);
|
|
19
|
+
}
|
|
20
|
+
export async function writeJson(path, value) {
|
|
21
|
+
const text = `${JSON.stringify(value, null, 2)}\n`;
|
|
22
|
+
await writeText(path, text, "utf8");
|
|
23
|
+
}
|
|
24
|
+
export async function pathExists(path) {
|
|
25
|
+
try {
|
|
26
|
+
await access(path);
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
export async function listDirectory(path) {
|
|
34
|
+
return readdir(path);
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=file-system.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-system.js","sourceRoot":"","sources":["../../../src/shared/file-system.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC/E,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAY;IAChD,MAAM,KAAK,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,IAAY;IACtD,MAAM,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,IAAY,EAAE,WAA2B,MAAM;IAC5E,OAAO,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAY,EAAE,QAAgB,EAAE,WAA2B,MAAM;IAC/F,MAAM,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAI,IAAY;IAC5C,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC1C,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAM,CAAC;AAC/B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAY,EAAE,KAAc;IAC1D,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;IACnD,MAAM,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAY;IAC3C,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAY;IAC9C,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;AACvB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function createId(prefix?: string): string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ids.js","sourceRoot":"","sources":["../../../src/shared/ids.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,UAAU,QAAQ,CAAC,MAAM,GAAG,EAAE;IAClC,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC;IACxB,OAAO,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACzC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CompareUseCase.js","sourceRoot":"","sources":["../../../src/usecases/CompareUseCase.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,cAAc;IACzB,KAAK,CAAC,OAAO;QACX,OAAO;YACL,IAAI,EAAE,SAAkB;YACxB,OAAO,EAAE,kCAAkC;SAC5C,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { ResponseNormalizer } from "../compare/ResponseNormalizer.js";
|
|
2
|
+
import type { ContextCollector } from "../context/ContextCollector.js";
|
|
3
|
+
import type { ArtifactRepository } from "../artifact/ArtifactRepository.js";
|
|
4
|
+
import type { ProviderRegistry } from "../providers/ProviderRegistry.js";
|
|
5
|
+
import type { RunCoordinator } from "../run/RunCoordinator.js";
|
|
6
|
+
import type { SessionManager } from "../session/SessionManager.js";
|
|
7
|
+
import { systemClock } from "../shared/clock.js";
|
|
8
|
+
export interface ConsultationInput {
|
|
9
|
+
command: "consult" | "followup";
|
|
10
|
+
question: string;
|
|
11
|
+
sessionId?: string;
|
|
12
|
+
title?: string;
|
|
13
|
+
files?: string[];
|
|
14
|
+
diffs?: string[];
|
|
15
|
+
logs?: string[];
|
|
16
|
+
providerName: string;
|
|
17
|
+
timeoutMs: number;
|
|
18
|
+
cwd: string;
|
|
19
|
+
}
|
|
20
|
+
export interface ConsultationResult {
|
|
21
|
+
kind: "consultation";
|
|
22
|
+
sessionId: string;
|
|
23
|
+
runId: string;
|
|
24
|
+
answer: string;
|
|
25
|
+
provider: string;
|
|
26
|
+
status: "completed" | "partial";
|
|
27
|
+
validationStatus: string;
|
|
28
|
+
}
|
|
29
|
+
export declare class ConsultUseCase {
|
|
30
|
+
#private;
|
|
31
|
+
readonly sessionManager: SessionManager;
|
|
32
|
+
readonly runCoordinator: RunCoordinator;
|
|
33
|
+
readonly providerRegistry: ProviderRegistry;
|
|
34
|
+
readonly contextCollector: ContextCollector;
|
|
35
|
+
readonly artifactRepository: ArtifactRepository;
|
|
36
|
+
readonly responseNormalizer: ResponseNormalizer;
|
|
37
|
+
readonly clock: typeof systemClock;
|
|
38
|
+
constructor({ sessionManager, runCoordinator, providerRegistry, contextCollector, artifactRepository, responseNormalizer, clock, }: {
|
|
39
|
+
sessionManager: SessionManager;
|
|
40
|
+
runCoordinator: RunCoordinator;
|
|
41
|
+
providerRegistry: ProviderRegistry;
|
|
42
|
+
contextCollector: ContextCollector;
|
|
43
|
+
artifactRepository: ArtifactRepository;
|
|
44
|
+
responseNormalizer?: ResponseNormalizer;
|
|
45
|
+
clock?: typeof systemClock;
|
|
46
|
+
});
|
|
47
|
+
execute(input: ConsultationInput): Promise<ConsultationResult>;
|
|
48
|
+
}
|