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.
Files changed (156) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +166 -0
  3. package/dist/bin/aipanel.d.ts +2 -0
  4. package/dist/bin/aipanel.js +5 -0
  5. package/dist/bin/aipanel.js.map +1 -0
  6. package/dist/src/app/AipanelApp.d.ts +17 -0
  7. package/dist/src/app/AipanelApp.js +53 -0
  8. package/dist/src/app/AipanelApp.js.map +1 -0
  9. package/dist/src/app/CommandRouter.d.ts +9 -0
  10. package/dist/src/app/CommandRouter.js +154 -0
  11. package/dist/src/app/CommandRouter.js.map +1 -0
  12. package/dist/src/app/ProfileLoader.d.ts +10 -0
  13. package/dist/src/app/ProfileLoader.js +51 -0
  14. package/dist/src/app/ProfileLoader.js.map +1 -0
  15. package/dist/src/app/WorkflowSelector.d.ts +4 -0
  16. package/dist/src/app/WorkflowSelector.js +6 -0
  17. package/dist/src/app/WorkflowSelector.js.map +1 -0
  18. package/dist/src/app/index.d.ts +4 -0
  19. package/dist/src/app/index.js +5 -0
  20. package/dist/src/app/index.js.map +1 -0
  21. package/dist/src/app/types.d.ts +36 -0
  22. package/dist/src/app/types.js +2 -0
  23. package/dist/src/app/types.js.map +1 -0
  24. package/dist/src/artifact/ArtifactRepository.d.ts +33 -0
  25. package/dist/src/artifact/ArtifactRepository.js +91 -0
  26. package/dist/src/artifact/ArtifactRepository.js.map +1 -0
  27. package/dist/src/artifact/index.d.ts +1 -0
  28. package/dist/src/artifact/index.js +2 -0
  29. package/dist/src/artifact/index.js.map +1 -0
  30. package/dist/src/cli/aipanel.d.ts +2 -0
  31. package/dist/src/cli/aipanel.js +32 -0
  32. package/dist/src/cli/aipanel.js.map +1 -0
  33. package/dist/src/compare/ComparisonEngine.d.ts +5 -0
  34. package/dist/src/compare/ComparisonEngine.js +19 -0
  35. package/dist/src/compare/ComparisonEngine.js.map +1 -0
  36. package/dist/src/compare/ResponseNormalizer.d.ts +36 -0
  37. package/dist/src/compare/ResponseNormalizer.js +43 -0
  38. package/dist/src/compare/ResponseNormalizer.js.map +1 -0
  39. package/dist/src/compare/index.d.ts +3 -0
  40. package/dist/src/compare/index.js +3 -0
  41. package/dist/src/compare/index.js.map +1 -0
  42. package/dist/src/context/ContextCollector.d.ts +43 -0
  43. package/dist/src/context/ContextCollector.js +81 -0
  44. package/dist/src/context/ContextCollector.js.map +1 -0
  45. package/dist/src/context/index.d.ts +2 -0
  46. package/dist/src/context/index.js +2 -0
  47. package/dist/src/context/index.js.map +1 -0
  48. package/dist/src/domain/artifact.d.ts +36 -0
  49. package/dist/src/domain/artifact.js +62 -0
  50. package/dist/src/domain/artifact.js.map +1 -0
  51. package/dist/src/domain/base.d.ts +10 -0
  52. package/dist/src/domain/base.js +23 -0
  53. package/dist/src/domain/base.js.map +1 -0
  54. package/dist/src/domain/index.d.ts +5 -0
  55. package/dist/src/domain/index.js +6 -0
  56. package/dist/src/domain/index.js.map +1 -0
  57. package/dist/src/domain/run.d.ts +260 -0
  58. package/dist/src/domain/run.js +456 -0
  59. package/dist/src/domain/run.js.map +1 -0
  60. package/dist/src/domain/session.d.ts +72 -0
  61. package/dist/src/domain/session.js +131 -0
  62. package/dist/src/domain/session.js.map +1 -0
  63. package/dist/src/domain/value-objects.d.ts +120 -0
  64. package/dist/src/domain/value-objects.js +191 -0
  65. package/dist/src/domain/value-objects.js.map +1 -0
  66. package/dist/src/orchestrator/PlanBuilder.d.ts +6 -0
  67. package/dist/src/orchestrator/PlanBuilder.js +59 -0
  68. package/dist/src/orchestrator/PlanBuilder.js.map +1 -0
  69. package/dist/src/orchestrator/ResultMerger.d.ts +10 -0
  70. package/dist/src/orchestrator/ResultMerger.js +19 -0
  71. package/dist/src/orchestrator/ResultMerger.js.map +1 -0
  72. package/dist/src/orchestrator/TaskExecutor.d.ts +20 -0
  73. package/dist/src/orchestrator/TaskExecutor.js +81 -0
  74. package/dist/src/orchestrator/TaskExecutor.js.map +1 -0
  75. package/dist/src/orchestrator/TaskScheduler.d.ts +4 -0
  76. package/dist/src/orchestrator/TaskScheduler.js +19 -0
  77. package/dist/src/orchestrator/TaskScheduler.js.map +1 -0
  78. package/dist/src/orchestrator/ValidationRunner.d.ts +4 -0
  79. package/dist/src/orchestrator/ValidationRunner.js +22 -0
  80. package/dist/src/orchestrator/ValidationRunner.js.map +1 -0
  81. package/dist/src/orchestrator/index.d.ts +5 -0
  82. package/dist/src/orchestrator/index.js +6 -0
  83. package/dist/src/orchestrator/index.js.map +1 -0
  84. package/dist/src/output/ResultRenderer.d.ts +13 -0
  85. package/dist/src/output/ResultRenderer.js +49 -0
  86. package/dist/src/output/ResultRenderer.js.map +1 -0
  87. package/dist/src/output/index.d.ts +1 -0
  88. package/dist/src/output/index.js +2 -0
  89. package/dist/src/output/index.js.map +1 -0
  90. package/dist/src/providers/ClaudeCodeAdapter.d.ts +5 -0
  91. package/dist/src/providers/ClaudeCodeAdapter.js +95 -0
  92. package/dist/src/providers/ClaudeCodeAdapter.js.map +1 -0
  93. package/dist/src/providers/ProviderAdapter.d.ts +35 -0
  94. package/dist/src/providers/ProviderAdapter.js +2 -0
  95. package/dist/src/providers/ProviderAdapter.js.map +1 -0
  96. package/dist/src/providers/ProviderRegistry.d.ts +12 -0
  97. package/dist/src/providers/ProviderRegistry.js +23 -0
  98. package/dist/src/providers/ProviderRegistry.js.map +1 -0
  99. package/dist/src/providers/index.d.ts +3 -0
  100. package/dist/src/providers/index.js +4 -0
  101. package/dist/src/providers/index.js.map +1 -0
  102. package/dist/src/run/RunCoordinator.d.ts +33 -0
  103. package/dist/src/run/RunCoordinator.js +101 -0
  104. package/dist/src/run/RunCoordinator.js.map +1 -0
  105. package/dist/src/run/RunRepository.d.ts +14 -0
  106. package/dist/src/run/RunRepository.js +55 -0
  107. package/dist/src/run/RunRepository.js.map +1 -0
  108. package/dist/src/run/index.d.ts +2 -0
  109. package/dist/src/run/index.js +3 -0
  110. package/dist/src/run/index.js.map +1 -0
  111. package/dist/src/session/SessionManager.d.ts +26 -0
  112. package/dist/src/session/SessionManager.js +60 -0
  113. package/dist/src/session/SessionManager.js.map +1 -0
  114. package/dist/src/session/SessionRepository.d.ts +14 -0
  115. package/dist/src/session/SessionRepository.js +55 -0
  116. package/dist/src/session/SessionRepository.js.map +1 -0
  117. package/dist/src/session/index.d.ts +2 -0
  118. package/dist/src/session/index.js +3 -0
  119. package/dist/src/session/index.js.map +1 -0
  120. package/dist/src/shared/clock.d.ts +4 -0
  121. package/dist/src/shared/clock.js +9 -0
  122. package/dist/src/shared/clock.js.map +1 -0
  123. package/dist/src/shared/contracts.d.ts +254 -0
  124. package/dist/src/shared/contracts.js +2 -0
  125. package/dist/src/shared/contracts.js.map +1 -0
  126. package/dist/src/shared/errors.d.ts +9 -0
  127. package/dist/src/shared/errors.js +11 -0
  128. package/dist/src/shared/errors.js.map +1 -0
  129. package/dist/src/shared/file-system.d.ts +8 -0
  130. package/dist/src/shared/file-system.js +36 -0
  131. package/dist/src/shared/file-system.js.map +1 -0
  132. package/dist/src/shared/ids.d.ts +1 -0
  133. package/dist/src/shared/ids.js +6 -0
  134. package/dist/src/shared/ids.js.map +1 -0
  135. package/dist/src/usecases/CompareUseCase.d.ts +6 -0
  136. package/dist/src/usecases/CompareUseCase.js +9 -0
  137. package/dist/src/usecases/CompareUseCase.js.map +1 -0
  138. package/dist/src/usecases/ConsultUseCase.d.ts +48 -0
  139. package/dist/src/usecases/ConsultUseCase.js +187 -0
  140. package/dist/src/usecases/ConsultUseCase.js.map +1 -0
  141. package/dist/src/usecases/DebugUseCase.d.ts +48 -0
  142. package/dist/src/usecases/DebugUseCase.js +191 -0
  143. package/dist/src/usecases/DebugUseCase.js.map +1 -0
  144. package/dist/src/usecases/FollowupUseCase.d.ts +6 -0
  145. package/dist/src/usecases/FollowupUseCase.js +14 -0
  146. package/dist/src/usecases/FollowupUseCase.js.map +1 -0
  147. package/dist/src/usecases/ListProvidersUseCase.d.ts +9 -0
  148. package/dist/src/usecases/ListProvidersUseCase.js +13 -0
  149. package/dist/src/usecases/ListProvidersUseCase.js.map +1 -0
  150. package/dist/src/usecases/helpers.d.ts +9 -0
  151. package/dist/src/usecases/helpers.js +31 -0
  152. package/dist/src/usecases/helpers.js.map +1 -0
  153. package/dist/src/usecases/index.d.ts +5 -0
  154. package/dist/src/usecases/index.js +6 -0
  155. package/dist/src/usecases/index.js.map +1 -0
  156. package/package.json +57 -0
@@ -0,0 +1,131 @@
1
+ import { SCHEMA_VERSION, compactObject, defaultClock, defaultIdGenerator, ensureArray, optionalProp, } from "./base.js";
2
+ import { ProviderRef } from "./value-objects.js";
3
+ export class SessionTurn {
4
+ turnId;
5
+ sessionId;
6
+ role;
7
+ content;
8
+ artifactIds;
9
+ createdAt;
10
+ constructor(props) {
11
+ this.turnId = props.turnId;
12
+ this.sessionId = props.sessionId;
13
+ this.role = props.role;
14
+ this.content = props.content;
15
+ this.artifactIds = ensureArray(props.artifactIds);
16
+ this.createdAt = props.createdAt;
17
+ }
18
+ static create(params) {
19
+ const clock = params.clock ?? defaultClock;
20
+ const idGenerator = params.idGenerator ?? defaultIdGenerator;
21
+ return new SessionTurn({
22
+ turnId: params.turnId ?? idGenerator('turn'),
23
+ sessionId: params.sessionId,
24
+ role: params.role,
25
+ content: params.content,
26
+ createdAt: params.createdAt ?? clock(),
27
+ ...optionalProp('artifactIds', params.artifactIds),
28
+ });
29
+ }
30
+ static fromJSON(input) {
31
+ return new SessionTurn(input);
32
+ }
33
+ toJSON() {
34
+ return compactObject({
35
+ turnId: this.turnId,
36
+ sessionId: this.sessionId,
37
+ role: this.role,
38
+ content: this.content,
39
+ artifactIds: this.artifactIds,
40
+ createdAt: this.createdAt,
41
+ });
42
+ }
43
+ }
44
+ export class Session {
45
+ schemaVersion;
46
+ sessionId;
47
+ title;
48
+ status;
49
+ createdAt;
50
+ updatedAt;
51
+ providerRefs;
52
+ turns;
53
+ constructor(props) {
54
+ this.schemaVersion = props.schemaVersion ?? SCHEMA_VERSION;
55
+ this.sessionId = props.sessionId;
56
+ this.title = props.title;
57
+ this.status = props.status;
58
+ this.createdAt = props.createdAt;
59
+ this.updatedAt = props.updatedAt;
60
+ this.providerRefs = ensureArray(props.providerRefs).map((item) => ProviderRef.from(item));
61
+ this.turns = ensureArray(props.turns).map((item) => SessionTurn.fromJSON(item));
62
+ }
63
+ static create(params = {}) {
64
+ const clock = params.clock ?? defaultClock;
65
+ const idGenerator = params.idGenerator ?? defaultIdGenerator;
66
+ const createdAt = params.createdAt ?? clock();
67
+ const updatedAt = params.updatedAt ?? createdAt;
68
+ return new Session({
69
+ sessionId: params.sessionId ?? idGenerator('session'),
70
+ title: params.title ?? 'Untitled Session',
71
+ status: params.status ?? 'active',
72
+ createdAt,
73
+ updatedAt,
74
+ providerRefs: ensureArray(params.providerRefs).map((item) => ProviderRef.from(item).toJSON()),
75
+ turns: ensureArray(params.turns).map((item) => item instanceof SessionTurn ? item.toJSON() : SessionTurn.fromJSON(item).toJSON()),
76
+ });
77
+ }
78
+ static fromJSON(input) {
79
+ return new Session(input);
80
+ }
81
+ appendTurn(turn, updatedAt = defaultClock()) {
82
+ if (turn.sessionId !== this.sessionId) {
83
+ throw new Error(`Session turn ${turn.turnId} does not belong to session ${this.sessionId}`);
84
+ }
85
+ this.turns.push(turn);
86
+ this.updatedAt = updatedAt;
87
+ }
88
+ createTurn(params) {
89
+ const turn = SessionTurn.create({
90
+ sessionId: this.sessionId,
91
+ role: params.role,
92
+ content: params.content,
93
+ ...(params.artifactIds ? { artifactIds: params.artifactIds } : {}),
94
+ ...(params.turnId ? { turnId: params.turnId } : {}),
95
+ ...(params.createdAt ? { createdAt: params.createdAt } : {}),
96
+ ...(params.clock ? { clock: params.clock } : {}),
97
+ ...(params.idGenerator ? { idGenerator: params.idGenerator } : {}),
98
+ });
99
+ this.appendTurn(turn, turn.createdAt);
100
+ return turn;
101
+ }
102
+ upsertProviderRef(providerRef, updatedAt = defaultClock()) {
103
+ const resolved = ProviderRef.from(providerRef);
104
+ const index = this.providerRefs.findIndex((item) => item.provider === resolved.provider);
105
+ if (index >= 0) {
106
+ this.providerRefs[index] = resolved;
107
+ }
108
+ else {
109
+ this.providerRefs.push(resolved);
110
+ }
111
+ this.updatedAt = updatedAt;
112
+ }
113
+ buildTranscript() {
114
+ return this.turns
115
+ .map((turn) => `${turn.role.toUpperCase()}: ${turn.content}`)
116
+ .join('\n\n');
117
+ }
118
+ toJSON() {
119
+ return compactObject({
120
+ schemaVersion: this.schemaVersion,
121
+ sessionId: this.sessionId,
122
+ title: this.title,
123
+ status: this.status,
124
+ createdAt: this.createdAt,
125
+ updatedAt: this.updatedAt,
126
+ providerRefs: this.providerRefs.map((item) => item.toJSON()),
127
+ turns: this.turns.map((item) => item.toJSON()),
128
+ });
129
+ }
130
+ }
131
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/domain/session.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,120 @@
1
+ import { type IsoDateString } from "./base.js";
2
+ export interface ProviderRefProps {
3
+ provider: string;
4
+ providerSessionId: string;
5
+ workingDirectory?: string | null;
6
+ lastUsedAt?: IsoDateString | null;
7
+ }
8
+ export declare class ProviderRef {
9
+ readonly provider: string;
10
+ readonly providerSessionId: string;
11
+ readonly workingDirectory: string | null;
12
+ readonly lastUsedAt: IsoDateString | null;
13
+ constructor(props: ProviderRefProps);
14
+ static from(input: ProviderRef | ProviderRefProps): ProviderRef;
15
+ toJSON(): ProviderRefProps;
16
+ }
17
+ export interface UsageProps {
18
+ inputTokens?: number | null;
19
+ outputTokens?: number | null;
20
+ costUsd?: number | null;
21
+ latencyMs?: number | null;
22
+ }
23
+ export declare class Usage {
24
+ readonly inputTokens: number | null;
25
+ readonly outputTokens: number | null;
26
+ readonly costUsd: number | null;
27
+ readonly latencyMs: number | null;
28
+ constructor(props?: UsageProps);
29
+ static from(input: Usage | UsageProps | null | undefined): Usage | null;
30
+ toJSON(): UsageProps;
31
+ }
32
+ export interface CitationProps {
33
+ kind: string;
34
+ label?: string | null;
35
+ pathOrUrl?: string | null;
36
+ line?: number | null;
37
+ }
38
+ export declare class Citation {
39
+ readonly kind: string;
40
+ readonly label: string | null;
41
+ readonly pathOrUrl: string | null;
42
+ readonly line: number | null;
43
+ constructor(props: CitationProps);
44
+ static from(input: Citation | CitationProps): Citation;
45
+ toJSON(): CitationProps;
46
+ }
47
+ export interface TaskDependencyProps {
48
+ taskId: string;
49
+ dependencyTaskId: string;
50
+ }
51
+ export declare class TaskDependency {
52
+ readonly taskId: string;
53
+ readonly dependencyTaskId: string;
54
+ constructor(props: TaskDependencyProps);
55
+ static from(input: TaskDependency | TaskDependencyProps): TaskDependency;
56
+ toJSON(): TaskDependencyProps;
57
+ }
58
+ export interface FileRefProps {
59
+ path: string;
60
+ purpose?: string | null;
61
+ checksum?: string | null;
62
+ }
63
+ export declare class FileRef {
64
+ readonly path: string;
65
+ readonly purpose: string | null;
66
+ readonly checksum: string | null;
67
+ constructor(props: FileRefProps);
68
+ static from(input: FileRef | FileRefProps): FileRef;
69
+ toJSON(): FileRefProps;
70
+ }
71
+ export interface DiffRefProps {
72
+ path: string;
73
+ range?: string | null;
74
+ summary?: string | null;
75
+ }
76
+ export declare class DiffRef {
77
+ readonly path: string;
78
+ readonly range: string | null;
79
+ readonly summary: string | null;
80
+ constructor(props: DiffRefProps);
81
+ static from(input: DiffRef | DiffRefProps): DiffRef;
82
+ toJSON(): DiffRefProps;
83
+ }
84
+ export interface LogRefProps {
85
+ path: string;
86
+ source?: string | null;
87
+ capturedAt?: IsoDateString | null;
88
+ }
89
+ export declare class LogRef {
90
+ readonly path: string;
91
+ readonly source: string | null;
92
+ readonly capturedAt: IsoDateString | null;
93
+ constructor(props: LogRefProps);
94
+ static from(input: LogRef | LogRefProps): LogRef;
95
+ toJSON(): LogRefProps;
96
+ }
97
+ export interface ConfidenceScoreProps {
98
+ level: string;
99
+ reason?: string | null;
100
+ }
101
+ export declare class ConfidenceScore {
102
+ readonly level: string;
103
+ readonly reason: string | null;
104
+ constructor(props: ConfidenceScoreProps);
105
+ static from(input: ConfidenceScore | ConfidenceScoreProps | null | undefined): ConfidenceScore | null;
106
+ toJSON(): ConfidenceScoreProps;
107
+ }
108
+ export interface ExternalRefProps {
109
+ system: string;
110
+ id: string;
111
+ scope?: string | null;
112
+ }
113
+ export declare class ExternalRef {
114
+ readonly system: string;
115
+ readonly id: string;
116
+ readonly scope: string | null;
117
+ constructor(props: ExternalRefProps);
118
+ static from(input: ExternalRef | ExternalRefProps): ExternalRef;
119
+ toJSON(): ExternalRefProps;
120
+ }
@@ -0,0 +1,191 @@
1
+ import { compactObject } from "./base.js";
2
+ export class ProviderRef {
3
+ provider;
4
+ providerSessionId;
5
+ workingDirectory;
6
+ lastUsedAt;
7
+ constructor(props) {
8
+ this.provider = props.provider;
9
+ this.providerSessionId = props.providerSessionId;
10
+ this.workingDirectory = props.workingDirectory ?? null;
11
+ this.lastUsedAt = props.lastUsedAt ?? null;
12
+ }
13
+ static from(input) {
14
+ return input instanceof ProviderRef ? input : new ProviderRef(input);
15
+ }
16
+ toJSON() {
17
+ return compactObject({
18
+ provider: this.provider,
19
+ providerSessionId: this.providerSessionId,
20
+ workingDirectory: this.workingDirectory,
21
+ lastUsedAt: this.lastUsedAt,
22
+ });
23
+ }
24
+ }
25
+ export class Usage {
26
+ inputTokens;
27
+ outputTokens;
28
+ costUsd;
29
+ latencyMs;
30
+ constructor(props = {}) {
31
+ this.inputTokens = props.inputTokens ?? null;
32
+ this.outputTokens = props.outputTokens ?? null;
33
+ this.costUsd = props.costUsd ?? null;
34
+ this.latencyMs = props.latencyMs ?? null;
35
+ }
36
+ static from(input) {
37
+ if (!input) {
38
+ return null;
39
+ }
40
+ return input instanceof Usage ? input : new Usage(input);
41
+ }
42
+ toJSON() {
43
+ return compactObject({
44
+ inputTokens: this.inputTokens,
45
+ outputTokens: this.outputTokens,
46
+ costUsd: this.costUsd,
47
+ latencyMs: this.latencyMs,
48
+ });
49
+ }
50
+ }
51
+ export class Citation {
52
+ kind;
53
+ label;
54
+ pathOrUrl;
55
+ line;
56
+ constructor(props) {
57
+ this.kind = props.kind;
58
+ this.label = props.label ?? null;
59
+ this.pathOrUrl = props.pathOrUrl ?? null;
60
+ this.line = props.line ?? null;
61
+ }
62
+ static from(input) {
63
+ return input instanceof Citation ? input : new Citation(input);
64
+ }
65
+ toJSON() {
66
+ return compactObject({
67
+ kind: this.kind,
68
+ label: this.label,
69
+ pathOrUrl: this.pathOrUrl,
70
+ line: this.line,
71
+ });
72
+ }
73
+ }
74
+ export class TaskDependency {
75
+ taskId;
76
+ dependencyTaskId;
77
+ constructor(props) {
78
+ this.taskId = props.taskId;
79
+ this.dependencyTaskId = props.dependencyTaskId;
80
+ }
81
+ static from(input) {
82
+ return input instanceof TaskDependency ? input : new TaskDependency(input);
83
+ }
84
+ toJSON() {
85
+ return {
86
+ taskId: this.taskId,
87
+ dependencyTaskId: this.dependencyTaskId,
88
+ };
89
+ }
90
+ }
91
+ export class FileRef {
92
+ path;
93
+ purpose;
94
+ checksum;
95
+ constructor(props) {
96
+ this.path = props.path;
97
+ this.purpose = props.purpose ?? null;
98
+ this.checksum = props.checksum ?? null;
99
+ }
100
+ static from(input) {
101
+ return input instanceof FileRef ? input : new FileRef(input);
102
+ }
103
+ toJSON() {
104
+ return compactObject({
105
+ path: this.path,
106
+ purpose: this.purpose,
107
+ checksum: this.checksum,
108
+ });
109
+ }
110
+ }
111
+ export class DiffRef {
112
+ path;
113
+ range;
114
+ summary;
115
+ constructor(props) {
116
+ this.path = props.path;
117
+ this.range = props.range ?? null;
118
+ this.summary = props.summary ?? null;
119
+ }
120
+ static from(input) {
121
+ return input instanceof DiffRef ? input : new DiffRef(input);
122
+ }
123
+ toJSON() {
124
+ return compactObject({
125
+ path: this.path,
126
+ range: this.range,
127
+ summary: this.summary,
128
+ });
129
+ }
130
+ }
131
+ export class LogRef {
132
+ path;
133
+ source;
134
+ capturedAt;
135
+ constructor(props) {
136
+ this.path = props.path;
137
+ this.source = props.source ?? null;
138
+ this.capturedAt = props.capturedAt ?? null;
139
+ }
140
+ static from(input) {
141
+ return input instanceof LogRef ? input : new LogRef(input);
142
+ }
143
+ toJSON() {
144
+ return compactObject({
145
+ path: this.path,
146
+ source: this.source,
147
+ capturedAt: this.capturedAt,
148
+ });
149
+ }
150
+ }
151
+ export class ConfidenceScore {
152
+ level;
153
+ reason;
154
+ constructor(props) {
155
+ this.level = props.level;
156
+ this.reason = props.reason ?? null;
157
+ }
158
+ static from(input) {
159
+ if (!input) {
160
+ return null;
161
+ }
162
+ return input instanceof ConfidenceScore ? input : new ConfidenceScore(input);
163
+ }
164
+ toJSON() {
165
+ return compactObject({
166
+ level: this.level,
167
+ reason: this.reason,
168
+ });
169
+ }
170
+ }
171
+ export class ExternalRef {
172
+ system;
173
+ id;
174
+ scope;
175
+ constructor(props) {
176
+ this.system = props.system;
177
+ this.id = props.id;
178
+ this.scope = props.scope ?? null;
179
+ }
180
+ static from(input) {
181
+ return input instanceof ExternalRef ? input : new ExternalRef(input);
182
+ }
183
+ toJSON() {
184
+ return compactObject({
185
+ system: this.system,
186
+ id: this.id,
187
+ scope: this.scope,
188
+ });
189
+ }
190
+ }
191
+ //# sourceMappingURL=value-objects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"value-objects.js","sourceRoot":"","sources":["../../../src/domain/value-objects.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { ContextBundleData, PlanTaskSpec } from "../shared/contracts.js";
2
+ export declare class PlanBuilder {
3
+ #private;
4
+ buildDirectPlan(question: string, contextBundle: ContextBundleData, provider: string): PlanTaskSpec[];
5
+ buildDebugPlan(question: string, contextBundle: ContextBundleData, provider: string): PlanTaskSpec[];
6
+ }
@@ -0,0 +1,59 @@
1
+ export class PlanBuilder {
2
+ buildDirectPlan(question, contextBundle, provider) {
3
+ return [
4
+ {
5
+ taskKind: "consultation",
6
+ role: "provider-reviewer",
7
+ provider,
8
+ prompt: this.#buildPrompt("Consultation", question, contextBundle),
9
+ },
10
+ ];
11
+ }
12
+ buildDebugPlan(question, contextBundle, provider) {
13
+ return [
14
+ {
15
+ taskKind: "root-cause-analysis",
16
+ role: "planner",
17
+ provider,
18
+ prompt: this.#buildPrompt("Root Cause Analysis", `Find the most likely root causes for the following problem.\n\n${question}`, contextBundle),
19
+ },
20
+ {
21
+ taskKind: "risk-review",
22
+ role: "provider-reviewer",
23
+ provider,
24
+ prompt: this.#buildPrompt("Risk Review", `Review the implementation and identify likely regressions, edge cases, and hidden risks.\n\n${question}`, contextBundle),
25
+ },
26
+ {
27
+ taskKind: "fix-proposal",
28
+ role: "provider-reviewer",
29
+ provider,
30
+ prompt: this.#buildPrompt("Fix Proposal", `Propose a pragmatic fix plan with the smallest safe change set.\n\n${question}`, contextBundle),
31
+ },
32
+ ];
33
+ }
34
+ #buildPrompt(label, question, contextBundle) {
35
+ const sections = [
36
+ `Task: ${label}`,
37
+ `Question:\n${question.trim()}`,
38
+ `Context Summary:\n${contextBundle.summary}`,
39
+ ];
40
+ if ((contextBundle.files?.length ?? 0) > 0) {
41
+ sections.push(contextBundle.files
42
+ .map((file) => `File: ${file.path}\n${file.content ?? ""}`.trim())
43
+ .join("\n\n"));
44
+ }
45
+ if ((contextBundle.diffs?.length ?? 0) > 0) {
46
+ sections.push(contextBundle.diffs
47
+ .map((diff) => `Diff: ${diff.path}\n${diff.content ?? ""}`.trim())
48
+ .join("\n\n"));
49
+ }
50
+ if ((contextBundle.logs?.length ?? 0) > 0) {
51
+ sections.push(contextBundle.logs
52
+ .map((log) => `Log: ${log.path}\n${log.content ?? ""}`.trim())
53
+ .join("\n\n"));
54
+ }
55
+ sections.push("Return a concise answer with findings, reasoning, and a short actionable recommendation.");
56
+ return sections.join("\n\n");
57
+ }
58
+ }
59
+ //# sourceMappingURL=PlanBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlanBuilder.js","sourceRoot":"","sources":["../../../src/orchestrator/PlanBuilder.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,WAAW;IACtB,eAAe,CAAC,QAAgB,EAAE,aAAgC,EAAE,QAAgB;QAClF,OAAO;YACL;gBACE,QAAQ,EAAE,cAAc;gBACxB,IAAI,EAAE,mBAAmB;gBACzB,QAAQ;gBACR,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,QAAQ,EAAE,aAAa,CAAC;aACnE;SACF,CAAC;IACJ,CAAC;IAED,cAAc,CAAC,QAAgB,EAAE,aAAgC,EAAE,QAAgB;QACjF,OAAO;YACL;gBACE,QAAQ,EAAE,qBAAqB;gBAC/B,IAAI,EAAE,SAAS;gBACf,QAAQ;gBACR,MAAM,EAAE,IAAI,CAAC,YAAY,CACvB,qBAAqB,EACrB,kEAAkE,QAAQ,EAAE,EAC5E,aAAa,CACd;aACF;YACD;gBACE,QAAQ,EAAE,aAAa;gBACvB,IAAI,EAAE,mBAAmB;gBACzB,QAAQ;gBACR,MAAM,EAAE,IAAI,CAAC,YAAY,CACvB,aAAa,EACb,+FAA+F,QAAQ,EAAE,EACzG,aAAa,CACd;aACF;YACD;gBACE,QAAQ,EAAE,cAAc;gBACxB,IAAI,EAAE,mBAAmB;gBACzB,QAAQ;gBACR,MAAM,EAAE,IAAI,CAAC,YAAY,CACvB,cAAc,EACd,sEAAsE,QAAQ,EAAE,EAChF,aAAa,CACd;aACF;SACF,CAAC;IACJ,CAAC;IAED,YAAY,CAAC,KAAa,EAAE,QAAgB,EAAE,aAAgC;QAC5E,MAAM,QAAQ,GAAG;YACf,SAAS,KAAK,EAAE;YAChB,cAAc,QAAQ,CAAC,IAAI,EAAE,EAAE;YAC/B,qBAAqB,aAAa,CAAC,OAAO,EAAE;SAC7C,CAAC;QAEF,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3C,QAAQ,CAAC,IAAI,CACX,aAAa,CAAC,KAAK;iBAChB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;iBACjE,IAAI,CAAC,MAAM,CAAC,CAChB,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3C,QAAQ,CAAC,IAAI,CACX,aAAa,CAAC,KAAK;iBAChB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;iBACjE,IAAI,CAAC,MAAM,CAAC,CAChB,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1C,QAAQ,CAAC,IAAI,CACX,aAAa,CAAC,IAAI;iBACf,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;iBAC7D,IAAI,CAAC,MAAM,CAAC,CAChB,CAAC;QACJ,CAAC;QAED,QAAQ,CAAC,IAAI,CACX,0FAA0F,CAC3F,CAAC;QAEF,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;CACF"}
@@ -0,0 +1,10 @@
1
+ import type { ComparisonReportData, NormalizedResponseData, RunData } from "../shared/contracts.js";
2
+ import type { ComparisonEngine } from "../compare/ComparisonEngine.js";
3
+ export declare class ResultMerger {
4
+ #private;
5
+ constructor(comparisonEngine: ComparisonEngine);
6
+ merge(topic: string, run: RunData, normalizedResponses: NormalizedResponseData[]): {
7
+ finalSummary: string;
8
+ comparisonReport: ComparisonReportData;
9
+ };
10
+ }
@@ -0,0 +1,19 @@
1
+ export class ResultMerger {
2
+ #comparisonEngine;
3
+ constructor(comparisonEngine) {
4
+ this.#comparisonEngine = comparisonEngine;
5
+ }
6
+ merge(topic, run, normalizedResponses) {
7
+ const comparisonReport = this.#comparisonEngine.compare(topic, normalizedResponses);
8
+ comparisonReport.runId = run.runId;
9
+ const parts = normalizedResponses.map((response) => {
10
+ const findings = response.findings.slice(0, 3).join("; ");
11
+ return `[${response.provider}/${response.taskId}] ${response.summary}${findings ? ` Findings: ${findings}` : ""}`;
12
+ });
13
+ return {
14
+ finalSummary: parts.join("\n"),
15
+ comparisonReport,
16
+ };
17
+ }
18
+ }
19
+ //# sourceMappingURL=ResultMerger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResultMerger.js","sourceRoot":"","sources":["../../../src/orchestrator/ResultMerger.ts"],"names":[],"mappings":"AAOA,MAAM,OAAO,YAAY;IACd,iBAAiB,CAAmB;IAE7C,YAAY,gBAAkC;QAC5C,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,KAAa,EAAE,GAAY,EAAE,mBAA6C;QAI9E,MAAM,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC;QACpF,gBAAgB,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;QAEnC,MAAM,KAAK,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;YACjD,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1D,OAAO,IAAI,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,cAAc,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACpH,CAAC,CAAC,CAAC;QAEH,OAAO;YACL,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9B,gBAAgB;SACjB,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,20 @@
1
+ import type { ArtifactRepositoryPort, NormalizedResponseData, PlanTaskSpec, ProviderRegistryPort, RunCoordinatorPort, RunData, SessionData } from "../shared/contracts.js";
2
+ import type { ResponseNormalizer } from "../compare/ResponseNormalizer.js";
3
+ export interface TaskExecutorDependencies {
4
+ providerRegistry: ProviderRegistryPort;
5
+ artifactRepository: ArtifactRepositoryPort;
6
+ responseNormalizer: ResponseNormalizer;
7
+ runCoordinator: RunCoordinatorPort;
8
+ }
9
+ export declare class TaskExecutor {
10
+ #private;
11
+ constructor(dependencies: TaskExecutorDependencies);
12
+ executePlan(input: {
13
+ session: SessionData;
14
+ run: RunData;
15
+ taskSpecs: PlanTaskSpec[];
16
+ }): Promise<{
17
+ run: RunData;
18
+ normalizedResponses: NormalizedResponseData[];
19
+ }>;
20
+ }
@@ -0,0 +1,81 @@
1
+ export class TaskExecutor {
2
+ #providerRegistry;
3
+ #artifactRepository;
4
+ #responseNormalizer;
5
+ #runCoordinator;
6
+ constructor(dependencies) {
7
+ this.#providerRegistry = dependencies.providerRegistry;
8
+ this.#artifactRepository = dependencies.artifactRepository;
9
+ this.#responseNormalizer = dependencies.responseNormalizer;
10
+ this.#runCoordinator = dependencies.runCoordinator;
11
+ }
12
+ async executePlan(input) {
13
+ const normalizedResponses = [];
14
+ let currentRun = input.run;
15
+ for (const spec of input.taskSpecs) {
16
+ const task = await this.#runCoordinator.appendTask({
17
+ runId: currentRun.runId,
18
+ taskKind: spec.taskKind,
19
+ role: spec.role,
20
+ provider: spec.provider ?? null,
21
+ dependsOn: spec.dependsOn ?? [],
22
+ prompt: spec.prompt,
23
+ });
24
+ const { updatedRun, normalizedResponse } = await this.#executeTask({
25
+ session: input.session,
26
+ run: currentRun,
27
+ task,
28
+ prompt: spec.prompt,
29
+ });
30
+ currentRun = updatedRun;
31
+ normalizedResponses.push(normalizedResponse);
32
+ }
33
+ return { run: currentRun, normalizedResponses };
34
+ }
35
+ async #executeTask(input) {
36
+ const provider = input.task.provider ?? "claude-code";
37
+ const adapter = this.#providerRegistry.get(provider);
38
+ const providerRef = input.session.providerRefs.find((ref) => ref.provider === provider) ?? null;
39
+ const providerResponse = await adapter.call({
40
+ provider,
41
+ prompt: input.prompt,
42
+ sessionHint: providerRef,
43
+ mode: input.run.mode,
44
+ });
45
+ const rawTextArtifact = await this.#artifactRepository.saveArtifact({
46
+ kind: "provider-raw-text",
47
+ runId: input.run.runId,
48
+ sessionId: input.session.sessionId,
49
+ taskId: input.task.taskId,
50
+ extension: "txt",
51
+ content: providerResponse.rawText ?? "",
52
+ });
53
+ const rawJsonArtifact = await this.#artifactRepository.saveArtifact({
54
+ kind: "provider-raw-json",
55
+ runId: input.run.runId,
56
+ sessionId: input.session.sessionId,
57
+ taskId: input.task.taskId,
58
+ extension: "json",
59
+ content: JSON.stringify(providerResponse.rawJson ?? {}, null, 2),
60
+ });
61
+ providerResponse.rawTextRef = rawTextArtifact.path;
62
+ providerResponse.rawJsonRef = rawJsonArtifact.path;
63
+ const normalizedResponse = this.#responseNormalizer.normalize({
64
+ taskId: input.task.taskId,
65
+ providerResponse,
66
+ });
67
+ const updatedRun = await this.#runCoordinator.appendTaskResult({
68
+ runId: input.run.runId,
69
+ taskId: input.task.taskId,
70
+ summary: normalizedResponse.summary,
71
+ findings: normalizedResponse.findings,
72
+ citations: normalizedResponse.citations,
73
+ confidence: normalizedResponse.confidence,
74
+ sourceArtifactIds: [rawTextArtifact.artifactId, rawJsonArtifact.artifactId],
75
+ providerResponse,
76
+ normalizedResponse,
77
+ });
78
+ return { updatedRun, normalizedResponse };
79
+ }
80
+ }
81
+ //# sourceMappingURL=TaskExecutor.js.map