@diff-review-system/drs 2.2.0 → 3.0.0-rc.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 +228 -92
- package/dist/ci/runner.d.ts.map +1 -1
- package/dist/ci/runner.js +20 -22
- package/dist/ci/runner.js.map +1 -1
- package/dist/cli/describe-mr.d.ts.map +1 -1
- package/dist/cli/describe-mr.js +39 -20
- package/dist/cli/describe-mr.js.map +1 -1
- package/dist/cli/describe-pr.d.ts.map +1 -1
- package/dist/cli/describe-pr.js +39 -20
- package/dist/cli/describe-pr.js.map +1 -1
- package/dist/cli/index.js +37 -7
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +30 -2
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/post-comments.d.ts.map +1 -1
- package/dist/cli/post-comments.js +5 -5
- package/dist/cli/post-comments.js.map +1 -1
- package/dist/cli/review-local.d.ts.map +1 -1
- package/dist/cli/review-local.integration.test.d.ts +2 -0
- package/dist/cli/review-local.integration.test.d.ts.map +1 -0
- package/dist/cli/review-local.integration.test.js +343 -0
- package/dist/cli/review-local.integration.test.js.map +1 -0
- package/dist/cli/review-local.js +5 -4
- package/dist/cli/review-local.js.map +1 -1
- package/dist/cli/review-local.live.e2e.test.d.ts +2 -0
- package/dist/cli/review-local.live.e2e.test.d.ts.map +1 -0
- package/dist/cli/review-local.live.e2e.test.js +154 -0
- package/dist/cli/review-local.live.e2e.test.js.map +1 -0
- package/dist/cli/review-local.test.d.ts +2 -0
- package/dist/cli/review-local.test.d.ts.map +1 -0
- package/dist/cli/review-local.test.js +164 -0
- package/dist/cli/review-local.test.js.map +1 -0
- package/dist/cli/review-mr.d.ts +2 -1
- package/dist/cli/review-mr.d.ts.map +1 -1
- package/dist/cli/review-mr.js +93 -17
- package/dist/cli/review-mr.js.map +1 -1
- package/dist/cli/review-mr.test.d.ts +2 -0
- package/dist/cli/review-mr.test.d.ts.map +1 -0
- package/dist/cli/review-mr.test.js +142 -0
- package/dist/cli/review-mr.test.js.map +1 -0
- package/dist/cli/review-pr.d.ts +2 -1
- package/dist/cli/review-pr.d.ts.map +1 -1
- package/dist/cli/review-pr.js +97 -13
- package/dist/cli/review-pr.js.map +1 -1
- package/dist/cli/review-pr.test.d.ts +2 -0
- package/dist/cli/review-pr.test.d.ts.map +1 -0
- package/dist/cli/review-pr.test.js +137 -0
- package/dist/cli/review-pr.test.js.map +1 -0
- package/dist/cli/show-changes.js +4 -4
- package/dist/github/client.d.ts +4 -0
- package/dist/github/client.d.ts.map +1 -1
- package/dist/github/client.js +10 -0
- package/dist/github/client.js.map +1 -1
- package/dist/github/platform-adapter.d.ts +1 -0
- package/dist/github/platform-adapter.d.ts.map +1 -1
- package/dist/github/platform-adapter.js +6 -2
- package/dist/github/platform-adapter.js.map +1 -1
- package/dist/gitlab/client.d.ts +4 -0
- package/dist/gitlab/client.d.ts.map +1 -1
- package/dist/gitlab/client.js +7 -1
- package/dist/gitlab/client.js.map +1 -1
- package/dist/gitlab/platform-adapter.d.ts +1 -0
- package/dist/gitlab/platform-adapter.d.ts.map +1 -1
- package/dist/gitlab/platform-adapter.js +3 -0
- package/dist/gitlab/platform-adapter.js.map +1 -1
- package/dist/lib/code-quality-report.js +1 -1
- package/dist/lib/comment-formatter.d.ts +9 -1
- package/dist/lib/comment-formatter.d.ts.map +1 -1
- package/dist/lib/comment-formatter.js +52 -1
- package/dist/lib/comment-formatter.js.map +1 -1
- package/dist/lib/comment-formatter.test.js +70 -1
- package/dist/lib/comment-formatter.test.js.map +1 -1
- package/dist/lib/comment-manager.d.ts +5 -0
- package/dist/lib/comment-manager.d.ts.map +1 -1
- package/dist/lib/comment-manager.js +11 -2
- package/dist/lib/comment-manager.js.map +1 -1
- package/dist/lib/comment-manager.test.js +63 -1
- package/dist/lib/comment-manager.test.js.map +1 -1
- package/dist/lib/comment-poster.d.ts +2 -1
- package/dist/lib/comment-poster.d.ts.map +1 -1
- package/dist/lib/comment-poster.js +2 -2
- package/dist/lib/comment-poster.js.map +1 -1
- package/dist/lib/comment-poster.test.js +27 -11
- package/dist/lib/comment-poster.test.js.map +1 -1
- package/dist/lib/config-model-overrides.test.d.ts +1 -1
- package/dist/lib/config-model-overrides.test.js +2 -2
- package/dist/lib/config-model-overrides.test.js.map +1 -1
- package/dist/lib/config.d.ts +36 -7
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +39 -13
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/config.test.js +16 -0
- package/dist/lib/config.test.js.map +1 -1
- package/dist/lib/context-compression.d.ts +27 -1
- package/dist/lib/context-compression.d.ts.map +1 -1
- package/dist/lib/context-compression.js +106 -4
- package/dist/lib/context-compression.js.map +1 -1
- package/dist/lib/context-compression.test.js +305 -1
- package/dist/lib/context-compression.test.js.map +1 -1
- package/dist/lib/context-loader.d.ts +3 -2
- package/dist/lib/context-loader.d.ts.map +1 -1
- package/dist/lib/context-loader.js +11 -5
- package/dist/lib/context-loader.js.map +1 -1
- package/dist/lib/description-executor.d.ts +19 -2
- package/dist/lib/description-executor.d.ts.map +1 -1
- package/dist/lib/description-executor.js +52 -21
- package/dist/lib/description-executor.js.map +1 -1
- package/dist/lib/description-executor.test.d.ts +2 -0
- package/dist/lib/description-executor.test.d.ts.map +1 -0
- package/dist/lib/description-executor.test.js +120 -0
- package/dist/lib/description-executor.test.js.map +1 -0
- package/dist/lib/description-formatter.d.ts +8 -3
- package/dist/lib/description-formatter.d.ts.map +1 -1
- package/dist/lib/description-formatter.js +88 -13
- package/dist/lib/description-formatter.js.map +1 -1
- package/dist/lib/description-formatter.test.d.ts +2 -0
- package/dist/lib/description-formatter.test.d.ts.map +1 -0
- package/dist/lib/description-formatter.test.js +57 -0
- package/dist/lib/description-formatter.test.js.map +1 -0
- package/dist/lib/diff-parser.test.d.ts +2 -0
- package/dist/lib/diff-parser.test.d.ts.map +1 -0
- package/dist/lib/diff-parser.test.js +335 -0
- package/dist/lib/diff-parser.test.js.map +1 -0
- package/dist/lib/error-comment-poster.d.ts +19 -0
- package/dist/lib/error-comment-poster.d.ts.map +1 -0
- package/dist/lib/error-comment-poster.js +57 -0
- package/dist/lib/error-comment-poster.js.map +1 -0
- package/dist/lib/error-comment-poster.test.d.ts +2 -0
- package/dist/lib/error-comment-poster.test.d.ts.map +1 -0
- package/dist/lib/error-comment-poster.test.js +128 -0
- package/dist/lib/error-comment-poster.test.js.map +1 -0
- package/dist/lib/exit.d.ts +35 -0
- package/dist/lib/exit.d.ts.map +1 -0
- package/dist/lib/exit.js +53 -0
- package/dist/lib/exit.js.map +1 -0
- package/dist/lib/exit.test.d.ts +2 -0
- package/dist/lib/exit.test.d.ts.map +1 -0
- package/dist/lib/exit.test.js +120 -0
- package/dist/lib/exit.test.js.map +1 -0
- package/dist/lib/format-utils.d.ts +3 -0
- package/dist/lib/format-utils.d.ts.map +1 -0
- package/dist/lib/format-utils.js +7 -0
- package/dist/lib/format-utils.js.map +1 -0
- package/dist/lib/json-output.d.ts +4 -1
- package/dist/lib/json-output.d.ts.map +1 -1
- package/dist/lib/json-output.js +2 -1
- package/dist/lib/json-output.js.map +1 -1
- package/dist/lib/json-output.test.d.ts +2 -0
- package/dist/lib/json-output.test.d.ts.map +1 -0
- package/dist/lib/json-output.test.js +135 -0
- package/dist/lib/json-output.test.js.map +1 -0
- package/dist/lib/logger.d.ts +130 -0
- package/dist/lib/logger.d.ts.map +1 -0
- package/dist/lib/logger.js +233 -0
- package/dist/lib/logger.js.map +1 -0
- package/dist/lib/logger.test.d.ts +2 -0
- package/dist/lib/logger.test.d.ts.map +1 -0
- package/dist/lib/logger.test.js +324 -0
- package/dist/lib/logger.test.js.map +1 -0
- package/dist/lib/platform-client.d.ts +4 -0
- package/dist/lib/platform-client.d.ts.map +1 -1
- package/dist/lib/position-validator.test.d.ts +2 -0
- package/dist/lib/position-validator.test.d.ts.map +1 -0
- package/dist/lib/position-validator.test.js +128 -0
- package/dist/lib/position-validator.test.js.map +1 -0
- package/dist/lib/repository-validator.js +1 -1
- package/dist/lib/review-core.d.ts +9 -4
- package/dist/lib/review-core.d.ts.map +1 -1
- package/dist/lib/review-core.js +230 -48
- package/dist/lib/review-core.js.map +1 -1
- package/dist/lib/review-core.test.js +78 -30
- package/dist/lib/review-core.test.js.map +1 -1
- package/dist/lib/review-orchestrator.d.ts +12 -7
- package/dist/lib/review-orchestrator.d.ts.map +1 -1
- package/dist/lib/review-orchestrator.js +78 -22
- package/dist/lib/review-orchestrator.js.map +1 -1
- package/dist/lib/review-orchestrator.test.js +160 -42
- package/dist/lib/review-orchestrator.test.js.map +1 -1
- package/dist/lib/review-parser.test.d.ts +2 -0
- package/dist/lib/review-parser.test.d.ts.map +1 -0
- package/dist/lib/review-parser.test.js +130 -0
- package/dist/lib/review-parser.test.js.map +1 -0
- package/dist/lib/review-usage.d.ts +32 -0
- package/dist/lib/review-usage.d.ts.map +1 -0
- package/dist/lib/review-usage.js +72 -0
- package/dist/lib/review-usage.js.map +1 -0
- package/dist/lib/review-usage.test.d.ts +2 -0
- package/dist/lib/review-usage.test.d.ts.map +1 -0
- package/dist/lib/review-usage.test.js +83 -0
- package/dist/lib/review-usage.test.js.map +1 -0
- package/dist/lib/unified-review-executor.d.ts +8 -2
- package/dist/lib/unified-review-executor.d.ts.map +1 -1
- package/dist/lib/unified-review-executor.js +111 -66
- package/dist/lib/unified-review-executor.js.map +1 -1
- package/dist/lib/unified-review-executor.test.js +138 -16
- package/dist/lib/unified-review-executor.test.js.map +1 -1
- package/dist/lib/write-json-output.test.d.ts +2 -0
- package/dist/lib/write-json-output.test.d.ts.map +1 -0
- package/dist/lib/write-json-output.test.js +259 -0
- package/dist/lib/write-json-output.test.js.map +1 -0
- package/dist/pi/sdk.d.ts +94 -0
- package/dist/pi/sdk.d.ts.map +1 -0
- package/dist/pi/sdk.js +486 -0
- package/dist/pi/sdk.js.map +1 -0
- package/dist/pi/sdk.test.d.ts +2 -0
- package/dist/pi/sdk.test.d.ts.map +1 -0
- package/dist/pi/sdk.test.js +331 -0
- package/dist/pi/sdk.test.js.map +1 -0
- package/dist/{opencode → runtime}/agent-loader.d.ts +7 -5
- package/dist/runtime/agent-loader.d.ts.map +1 -0
- package/dist/{opencode → runtime}/agent-loader.js +24 -19
- package/dist/runtime/agent-loader.js.map +1 -0
- package/dist/runtime/agent-loader.test.d.ts +2 -0
- package/dist/runtime/agent-loader.test.d.ts.map +1 -0
- package/dist/runtime/agent-loader.test.js +280 -0
- package/dist/runtime/agent-loader.test.js.map +1 -0
- package/dist/runtime/built-in-paths.d.ts +2 -0
- package/dist/runtime/built-in-paths.d.ts.map +1 -0
- package/dist/runtime/built-in-paths.js +14 -0
- package/dist/runtime/built-in-paths.js.map +1 -0
- package/dist/runtime/client.d.ts +107 -0
- package/dist/runtime/client.d.ts.map +1 -0
- package/dist/runtime/client.js +486 -0
- package/dist/runtime/client.js.map +1 -0
- package/dist/{opencode → runtime}/client.test.d.ts.map +1 -1
- package/dist/runtime/client.test.js +392 -0
- package/dist/runtime/client.test.js.map +1 -0
- package/dist/runtime/path-config.d.ts +8 -0
- package/dist/runtime/path-config.d.ts.map +1 -0
- package/dist/runtime/path-config.js +68 -0
- package/dist/runtime/path-config.js.map +1 -0
- package/dist/runtime/path-config.test.d.ts +2 -0
- package/dist/runtime/path-config.test.d.ts.map +1 -0
- package/dist/runtime/path-config.test.js +103 -0
- package/dist/runtime/path-config.test.js.map +1 -0
- package/package.json +5 -5
- package/.opencode/opencode.jsonc +0 -15
- package/.opencode/tool/write_json_output.ts +0 -24
- package/dist/opencode/agent-loader.d.ts.map +0 -1
- package/dist/opencode/agent-loader.js.map +0 -1
- package/dist/opencode/agent-skill-overlay.d.ts +0 -11
- package/dist/opencode/agent-skill-overlay.d.ts.map +0 -1
- package/dist/opencode/agent-skill-overlay.js +0 -164
- package/dist/opencode/agent-skill-overlay.js.map +0 -1
- package/dist/opencode/client.d.ts +0 -91
- package/dist/opencode/client.d.ts.map +0 -1
- package/dist/opencode/client.js +0 -463
- package/dist/opencode/client.js.map +0 -1
- package/dist/opencode/client.test.js +0 -317
- package/dist/opencode/client.test.js.map +0 -1
- package/dist/opencode/opencode-paths.d.ts +0 -2
- package/dist/opencode/opencode-paths.d.ts.map +0 -1
- package/dist/opencode/opencode-paths.js +0 -7
- package/dist/opencode/opencode-paths.js.map +0 -1
- package/dist/opencode/skill-loader.d.ts +0 -6
- package/dist/opencode/skill-loader.d.ts.map +0 -1
- package/dist/opencode/skill-loader.js +0 -36
- package/dist/opencode/skill-loader.js.map +0 -1
- /package/{.opencode/agent → .pi/agents}/describe/pr-describer.md +0 -0
- /package/{.opencode/agent → .pi/agents}/review/documentation.md +0 -0
- /package/{.opencode/agent → .pi/agents}/review/performance.md +0 -0
- /package/{.opencode/agent → .pi/agents}/review/quality.md +0 -0
- /package/{.opencode/agent → .pi/agents}/review/security.md +0 -0
- /package/{.opencode/agent → .pi/agents}/review/style.md +0 -0
- /package/{.opencode/agent → .pi/agents}/review/unified-reviewer.md +0 -0
- /package/dist/{opencode → runtime}/client.test.d.ts +0 -0
|
@@ -0,0 +1,486 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent runtime client wrapper for DRS with in-process server support.
|
|
3
|
+
*
|
|
4
|
+
* This client maintains the existing internal interface used by review orchestration
|
|
5
|
+
* while delegating SDK calls through the Pi integration adapter in src/pi/sdk.ts.
|
|
6
|
+
*/
|
|
7
|
+
import { getDefaultSkills, normalizeAgentConfig } from '../lib/config.js';
|
|
8
|
+
import { getLogger } from '../lib/logger.js';
|
|
9
|
+
import { loadReviewAgents } from './agent-loader.js';
|
|
10
|
+
import { resolveReviewPaths } from './path-config.js';
|
|
11
|
+
import { createPiInProcessServer } from '../pi/sdk.js';
|
|
12
|
+
function mapPiRuntimeError(operation, error) {
|
|
13
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
14
|
+
const normalized = message.toLowerCase();
|
|
15
|
+
const connectionError = normalized.includes('fetch failed') ||
|
|
16
|
+
normalized.includes('econnrefused') ||
|
|
17
|
+
normalized.includes('connection refused');
|
|
18
|
+
if (connectionError) {
|
|
19
|
+
return new Error(`Failed to ${operation}: ${message}. Verify local Pi runtime setup and model provider connectivity.`);
|
|
20
|
+
}
|
|
21
|
+
const authError = normalized.includes('unauthorized') ||
|
|
22
|
+
normalized.includes('authentication') ||
|
|
23
|
+
normalized.includes('api key') ||
|
|
24
|
+
normalized.includes('401');
|
|
25
|
+
if (authError) {
|
|
26
|
+
return new Error(`Failed to ${operation}: Authentication failed with the configured model provider. Verify API keys and provider settings. (Details: ${message})`);
|
|
27
|
+
}
|
|
28
|
+
const modelError = normalized.includes('failed to resolve model') ||
|
|
29
|
+
(normalized.includes('model') && normalized.includes('not found'));
|
|
30
|
+
if (modelError) {
|
|
31
|
+
return new Error(`Failed to ${operation}: Model configuration is invalid or unavailable. Check configured provider/model names and overrides. (Details: ${message})`);
|
|
32
|
+
}
|
|
33
|
+
return new Error(`Failed to ${operation}: ${message}`);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Runtime client wrapper for DRS backed by in-process Pi sessions.
|
|
37
|
+
*/
|
|
38
|
+
export class RuntimeClient {
|
|
39
|
+
serverUrl;
|
|
40
|
+
directory;
|
|
41
|
+
inProcessServer;
|
|
42
|
+
client;
|
|
43
|
+
config;
|
|
44
|
+
constructor(config) {
|
|
45
|
+
this.directory = config.directory;
|
|
46
|
+
this.config = config;
|
|
47
|
+
}
|
|
48
|
+
getModelContextWindow(modelId) {
|
|
49
|
+
return this.inProcessServer?.client.getModelContextWindow?.(modelId);
|
|
50
|
+
}
|
|
51
|
+
getMinContextWindow(modelIds) {
|
|
52
|
+
let min;
|
|
53
|
+
for (const id of modelIds) {
|
|
54
|
+
const w = this.getModelContextWindow(id);
|
|
55
|
+
if (w !== undefined) {
|
|
56
|
+
min = min === undefined ? w : Math.min(min, w);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return min;
|
|
60
|
+
}
|
|
61
|
+
getConfiguredModelPricing(provider, model) {
|
|
62
|
+
const pricing = this.config.config?.pricing?.models;
|
|
63
|
+
if (!pricing) {
|
|
64
|
+
return undefined;
|
|
65
|
+
}
|
|
66
|
+
const fullModelId = provider && model ? `${provider}/${model}` : undefined;
|
|
67
|
+
return ((fullModelId ? pricing[fullModelId] : undefined) ??
|
|
68
|
+
(model ? pricing[model] : undefined) ??
|
|
69
|
+
undefined);
|
|
70
|
+
}
|
|
71
|
+
estimateConfiguredCost(input, output, cacheRead, cacheWrite, provider, model) {
|
|
72
|
+
const pricing = this.getConfiguredModelPricing(provider, model);
|
|
73
|
+
if (!pricing) {
|
|
74
|
+
return undefined;
|
|
75
|
+
}
|
|
76
|
+
const inputCost = ((pricing.input ?? 0) / 1_000_000) * input;
|
|
77
|
+
const outputCost = ((pricing.output ?? 0) / 1_000_000) * output;
|
|
78
|
+
const cacheReadCost = ((pricing.cacheRead ?? 0) / 1_000_000) * cacheRead;
|
|
79
|
+
const cacheWriteCost = ((pricing.cacheWrite ?? 0) / 1_000_000) * cacheWrite;
|
|
80
|
+
return inputCost + outputCost + cacheReadCost + cacheWriteCost;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Initialize in-process Pi runtime.
|
|
84
|
+
*/
|
|
85
|
+
async initialize() {
|
|
86
|
+
// Start server in-process
|
|
87
|
+
// Build runtime config programmatically from DRS config
|
|
88
|
+
const log = getLogger();
|
|
89
|
+
const projectDir = this.directory ?? process.cwd();
|
|
90
|
+
const reviewPaths = resolveReviewPaths(projectDir, this.config.config);
|
|
91
|
+
const runtimeConfig = {
|
|
92
|
+
// Tools available to DRS review agents
|
|
93
|
+
tools: {
|
|
94
|
+
Read: true,
|
|
95
|
+
Glob: true,
|
|
96
|
+
Grep: true,
|
|
97
|
+
Bash: true,
|
|
98
|
+
write_json_output: true,
|
|
99
|
+
skill: false,
|
|
100
|
+
Write: false,
|
|
101
|
+
Edit: false,
|
|
102
|
+
},
|
|
103
|
+
};
|
|
104
|
+
const agentConfig = {};
|
|
105
|
+
if (this.config.config) {
|
|
106
|
+
const runtimeAgents = loadReviewAgents(projectDir, this.config.config);
|
|
107
|
+
for (const agent of runtimeAgents) {
|
|
108
|
+
const runtimeEntry = {};
|
|
109
|
+
if (agent.model)
|
|
110
|
+
runtimeEntry.model = agent.model;
|
|
111
|
+
if (agent.prompt)
|
|
112
|
+
runtimeEntry.prompt = agent.prompt;
|
|
113
|
+
if (agent.description)
|
|
114
|
+
runtimeEntry.description = agent.description;
|
|
115
|
+
if (agent.color)
|
|
116
|
+
runtimeEntry.color = agent.color;
|
|
117
|
+
if (agent.tools)
|
|
118
|
+
runtimeEntry.tools = agent.tools;
|
|
119
|
+
if (Object.keys(runtimeEntry).length > 0) {
|
|
120
|
+
agentConfig[agent.name] = runtimeEntry;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
if (runtimeAgents.length > 0) {
|
|
124
|
+
log.info(`Loaded ${runtimeAgents.length} agent definitions for Pi runtime`);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
// Set log level to DEBUG when --debug flag is used
|
|
128
|
+
// This shows full system prompts, tools, and provider calls from Pi runtime.
|
|
129
|
+
if (this.config.debug) {
|
|
130
|
+
runtimeConfig.logLevel = 'DEBUG';
|
|
131
|
+
log.debug('Pi runtime debug logging enabled');
|
|
132
|
+
}
|
|
133
|
+
// Add custom provider if configured in DRS config
|
|
134
|
+
if (this.config.provider && Object.keys(this.config.provider).length > 0) {
|
|
135
|
+
// Deep clone and resolve environment variable references
|
|
136
|
+
runtimeConfig.provider = this.resolveEnvReferences(this.config.provider);
|
|
137
|
+
const providerNames = Object.keys(this.config.provider);
|
|
138
|
+
log.info(`Custom provider configured: ${providerNames.join(', ')}`);
|
|
139
|
+
}
|
|
140
|
+
// Apply model overrides from DRS config
|
|
141
|
+
if (this.config.modelOverrides && Object.keys(this.config.modelOverrides).length > 0) {
|
|
142
|
+
log.info('Agent model configuration:');
|
|
143
|
+
// Merge model overrides into agent configuration
|
|
144
|
+
for (const [agentName, model] of Object.entries(this.config.modelOverrides)) {
|
|
145
|
+
const entry = agentConfig[agentName] ?? {};
|
|
146
|
+
agentConfig[agentName] = {
|
|
147
|
+
...entry,
|
|
148
|
+
model,
|
|
149
|
+
};
|
|
150
|
+
log.info(` ${agentName}: ${model}`);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
if (Object.keys(agentConfig).length > 0) {
|
|
154
|
+
runtimeConfig.agent = agentConfig;
|
|
155
|
+
}
|
|
156
|
+
runtimeConfig.skillSearchPaths = reviewPaths.skillSearchPaths;
|
|
157
|
+
if (this.config.config) {
|
|
158
|
+
const normalizedAgents = normalizeAgentConfig(this.config.config.review.agents);
|
|
159
|
+
const defaultSkills = getDefaultSkills(this.config.config);
|
|
160
|
+
const agentSkills = normalizedAgents
|
|
161
|
+
.map((agent) => {
|
|
162
|
+
const combined = new Set([
|
|
163
|
+
...defaultSkills,
|
|
164
|
+
...(agent.skills ? agent.skills.map(String) : []),
|
|
165
|
+
]);
|
|
166
|
+
const fullAgentName = agent.name.startsWith('review/')
|
|
167
|
+
? agent.name
|
|
168
|
+
: `review/${agent.name}`;
|
|
169
|
+
return {
|
|
170
|
+
name: fullAgentName,
|
|
171
|
+
skills: Array.from(combined).filter((skill) => skill.length > 0),
|
|
172
|
+
};
|
|
173
|
+
})
|
|
174
|
+
.filter((agent) => agent.skills.length > 0);
|
|
175
|
+
if (agentSkills.length > 0) {
|
|
176
|
+
log.info('Agent skill configuration:');
|
|
177
|
+
for (const agent of agentSkills) {
|
|
178
|
+
log.info(` ${agent.name}: ${agent.skills.join(', ')}`);
|
|
179
|
+
}
|
|
180
|
+
runtimeConfig.agentSkills = Object.fromEntries(agentSkills.map((agent) => [agent.name, agent.skills]));
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
// Debug: print final runtime config
|
|
184
|
+
if (this.config.debug) {
|
|
185
|
+
log.debug('Final Pi runtime configuration (after env resolution):');
|
|
186
|
+
// Show environment variable status for custom providers
|
|
187
|
+
if (this.config.provider) {
|
|
188
|
+
log.debug('Environment variable status:');
|
|
189
|
+
for (const [providerName, provider] of Object.entries(this.config.provider)) {
|
|
190
|
+
const apiKeyConfig = provider.options?.apiKey;
|
|
191
|
+
if (apiKeyConfig && typeof apiKeyConfig === 'string') {
|
|
192
|
+
const envMatch = apiKeyConfig.match(/^\{env:([^}]+)\}$/);
|
|
193
|
+
if (envMatch) {
|
|
194
|
+
const envVarName = envMatch[1];
|
|
195
|
+
const envValue = process.env[envVarName];
|
|
196
|
+
if (envValue) {
|
|
197
|
+
log.debug(` ✓ ${envVarName}: SET (${envValue.substring(0, 8)}...)`);
|
|
198
|
+
}
|
|
199
|
+
else {
|
|
200
|
+
log.debug(` ✗ ${envVarName}: NOT SET`);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
else {
|
|
204
|
+
log.debug(` ${providerName}: API key is hardcoded (not env var)`);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
// Sanitize config to hide API keys
|
|
210
|
+
const sanitizedConfig = JSON.parse(JSON.stringify(runtimeConfig));
|
|
211
|
+
if (sanitizedConfig.provider) {
|
|
212
|
+
for (const providerName of Object.keys(sanitizedConfig.provider)) {
|
|
213
|
+
if (sanitizedConfig.provider[providerName]?.options?.apiKey) {
|
|
214
|
+
const apiKey = sanitizedConfig.provider[providerName].options.apiKey;
|
|
215
|
+
// Always redact since we've resolved env vars
|
|
216
|
+
if (apiKey && apiKey.length > 0) {
|
|
217
|
+
sanitizedConfig.provider[providerName].options.apiKey =
|
|
218
|
+
`***REDACTED (${apiKey.length} chars)***`;
|
|
219
|
+
}
|
|
220
|
+
else {
|
|
221
|
+
sanitizedConfig.provider[providerName].options.apiKey = '***EMPTY***';
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
if (sanitizedConfig.agent) {
|
|
227
|
+
for (const agentName of Object.keys(sanitizedConfig.agent)) {
|
|
228
|
+
const prompt = sanitizedConfig.agent[agentName]?.prompt;
|
|
229
|
+
if (typeof prompt === 'string' && prompt.length > 0) {
|
|
230
|
+
sanitizedConfig.agent[agentName].prompt = `***OMITTED (${prompt.length} chars)***`;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
log.debug('Config being passed to Pi runtime:', undefined, sanitizedConfig);
|
|
235
|
+
const configuredAgentSkills = runtimeConfig.agentSkills;
|
|
236
|
+
if (configuredAgentSkills && Object.keys(configuredAgentSkills).length > 0) {
|
|
237
|
+
log.debug('Agent skills configuration:', undefined, configuredAgentSkills);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
// Pi SDK reads provider-specific API keys from environment automatically
|
|
241
|
+
// (ANTHROPIC_API_KEY, ZHIPU_API_KEY, OPENAI_API_KEY, etc.)
|
|
242
|
+
this.inProcessServer = await createPiInProcessServer({
|
|
243
|
+
config: runtimeConfig,
|
|
244
|
+
});
|
|
245
|
+
this.client = this.inProcessServer.client;
|
|
246
|
+
this.serverUrl = this.inProcessServer.server.url;
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Create a new session with an agent and send initial message
|
|
250
|
+
*/
|
|
251
|
+
async createSession(options) {
|
|
252
|
+
if (!this.client) {
|
|
253
|
+
throw new Error('Runtime client not initialized. Call initialize() first.');
|
|
254
|
+
}
|
|
255
|
+
try {
|
|
256
|
+
// Step 1: Create empty session
|
|
257
|
+
const createResponse = (await this.client.session.create({
|
|
258
|
+
query: {
|
|
259
|
+
directory: this.directory,
|
|
260
|
+
},
|
|
261
|
+
}));
|
|
262
|
+
const sessionId = createResponse.data?.id;
|
|
263
|
+
if (!sessionId) {
|
|
264
|
+
throw new Error('Failed to get session ID from create response');
|
|
265
|
+
}
|
|
266
|
+
// Step 2: Send initial message to start the agent
|
|
267
|
+
await this.client.session.prompt({
|
|
268
|
+
path: { id: sessionId },
|
|
269
|
+
query: {
|
|
270
|
+
directory: this.directory,
|
|
271
|
+
},
|
|
272
|
+
body: {
|
|
273
|
+
agent: options.agent,
|
|
274
|
+
parts: [
|
|
275
|
+
{
|
|
276
|
+
type: 'text',
|
|
277
|
+
text: options.message,
|
|
278
|
+
},
|
|
279
|
+
],
|
|
280
|
+
},
|
|
281
|
+
});
|
|
282
|
+
return {
|
|
283
|
+
id: sessionId,
|
|
284
|
+
agent: options.agent,
|
|
285
|
+
createdAt: new Date(),
|
|
286
|
+
};
|
|
287
|
+
}
|
|
288
|
+
catch (error) {
|
|
289
|
+
throw mapPiRuntimeError('create session', error);
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Stream messages from a session.
|
|
294
|
+
*
|
|
295
|
+
* With the in-process Pi runtime, prompt() is synchronous so all messages
|
|
296
|
+
* are available immediately and the loop completes on the first iteration.
|
|
297
|
+
* The polling structure is retained for future remote-runtime compatibility.
|
|
298
|
+
*/
|
|
299
|
+
async *streamMessages(sessionId) {
|
|
300
|
+
if (!this.client) {
|
|
301
|
+
throw new Error('Runtime client not initialized. Call initialize() first.');
|
|
302
|
+
}
|
|
303
|
+
try {
|
|
304
|
+
// Poll messages until agent completes
|
|
305
|
+
let lastMessageCount = 0;
|
|
306
|
+
let attempts = 0;
|
|
307
|
+
const maxAttempts = 60; // 60 attempts * 2s = 2 minutes max
|
|
308
|
+
while (attempts < maxAttempts) {
|
|
309
|
+
attempts++;
|
|
310
|
+
// Get current messages
|
|
311
|
+
const messagesResponse = (await this.client.session.messages({
|
|
312
|
+
path: { id: sessionId },
|
|
313
|
+
}));
|
|
314
|
+
const messages = messagesResponse.data ?? [];
|
|
315
|
+
// Yield any new messages
|
|
316
|
+
for (let i = lastMessageCount; i < messages.length; i++) {
|
|
317
|
+
const msg = messages[i];
|
|
318
|
+
const provider = msg.info?.provider;
|
|
319
|
+
const model = msg.info?.model;
|
|
320
|
+
const mappedUsage = msg.info?.usage
|
|
321
|
+
? (() => {
|
|
322
|
+
const input = msg.info?.usage?.input ?? 0;
|
|
323
|
+
const output = msg.info?.usage?.output ?? 0;
|
|
324
|
+
const cacheRead = msg.info?.usage?.cacheRead ?? 0;
|
|
325
|
+
const cacheWrite = msg.info?.usage?.cacheWrite ?? 0;
|
|
326
|
+
const totalTokens = msg.info?.usage?.totalTokens ?? input + output + cacheRead + cacheWrite;
|
|
327
|
+
const reportedCost = msg.info?.usage?.cost?.total;
|
|
328
|
+
const configuredCost = this.estimateConfiguredCost(input, output, cacheRead, cacheWrite, provider, model);
|
|
329
|
+
const cost = reportedCost !== undefined && reportedCost > 0
|
|
330
|
+
? reportedCost
|
|
331
|
+
: (configuredCost ?? reportedCost ?? 0);
|
|
332
|
+
return {
|
|
333
|
+
input,
|
|
334
|
+
output,
|
|
335
|
+
cacheRead,
|
|
336
|
+
cacheWrite,
|
|
337
|
+
totalTokens,
|
|
338
|
+
cost,
|
|
339
|
+
};
|
|
340
|
+
})()
|
|
341
|
+
: undefined;
|
|
342
|
+
yield {
|
|
343
|
+
id: msg.info?.id ?? 'msg-' + Date.now(),
|
|
344
|
+
role: (msg.info?.role ?? 'assistant'),
|
|
345
|
+
content: msg.parts?.map((p) => p.text ?? '').join('') ?? '',
|
|
346
|
+
timestamp: new Date(),
|
|
347
|
+
toolName: msg.info?.toolName,
|
|
348
|
+
toolCallId: msg.info?.toolCallId,
|
|
349
|
+
provider,
|
|
350
|
+
model,
|
|
351
|
+
usage: mappedUsage,
|
|
352
|
+
};
|
|
353
|
+
}
|
|
354
|
+
lastMessageCount = messages.length;
|
|
355
|
+
// Check if the last assistant message has completed
|
|
356
|
+
const lastAssistantMsg = [...messages].reverse().find((m) => m.info?.role === 'assistant');
|
|
357
|
+
if (lastAssistantMsg) {
|
|
358
|
+
const isComplete = lastAssistantMsg.info?.time?.completed !== undefined;
|
|
359
|
+
const hasError = lastAssistantMsg.info?.error !== undefined;
|
|
360
|
+
if (hasError) {
|
|
361
|
+
throw new Error(`Agent error: ${JSON.stringify(lastAssistantMsg.info?.error)}`);
|
|
362
|
+
}
|
|
363
|
+
if (isComplete) {
|
|
364
|
+
break;
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
// Wait before polling again
|
|
368
|
+
await new Promise((resolve) => setTimeout(resolve, 2000));
|
|
369
|
+
}
|
|
370
|
+
if (attempts >= maxAttempts) {
|
|
371
|
+
throw new Error(`Session ${sessionId} timed out after ${maxAttempts * 2} seconds`);
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
catch (error) {
|
|
375
|
+
throw mapPiRuntimeError('get messages', error);
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
/**
|
|
379
|
+
* Wait for session to complete and return all messages
|
|
380
|
+
*/
|
|
381
|
+
async waitForCompletion(sessionId) {
|
|
382
|
+
const messages = [];
|
|
383
|
+
for await (const message of this.streamMessages(sessionId)) {
|
|
384
|
+
messages.push(message);
|
|
385
|
+
}
|
|
386
|
+
return messages;
|
|
387
|
+
}
|
|
388
|
+
/**
|
|
389
|
+
* Send a message to an existing session
|
|
390
|
+
*/
|
|
391
|
+
async sendMessage(sessionId, content) {
|
|
392
|
+
if (!this.client) {
|
|
393
|
+
throw new Error('Runtime client not initialized. Call initialize() first.');
|
|
394
|
+
}
|
|
395
|
+
try {
|
|
396
|
+
await this.client.session.sendMessage({
|
|
397
|
+
path: { id: sessionId },
|
|
398
|
+
body: { content },
|
|
399
|
+
});
|
|
400
|
+
}
|
|
401
|
+
catch (error) {
|
|
402
|
+
throw mapPiRuntimeError('send message', error);
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
/**
|
|
406
|
+
* Close a session
|
|
407
|
+
*/
|
|
408
|
+
async closeSession(sessionId) {
|
|
409
|
+
if (!this.client) {
|
|
410
|
+
throw new Error('Runtime client not initialized. Call initialize() first.');
|
|
411
|
+
}
|
|
412
|
+
try {
|
|
413
|
+
await this.client.session.delete({
|
|
414
|
+
path: { id: sessionId },
|
|
415
|
+
});
|
|
416
|
+
}
|
|
417
|
+
catch (error) {
|
|
418
|
+
throw mapPiRuntimeError('close session', error);
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
/**
|
|
422
|
+
* Shutdown - close in-process server if applicable
|
|
423
|
+
*/
|
|
424
|
+
async shutdown() {
|
|
425
|
+
if (this.inProcessServer) {
|
|
426
|
+
// Close the in-process Pi runtime
|
|
427
|
+
this.inProcessServer.server.close();
|
|
428
|
+
// Give server time to clean up connections
|
|
429
|
+
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
/**
|
|
433
|
+
* Get server URL
|
|
434
|
+
*/
|
|
435
|
+
getServerUrl() {
|
|
436
|
+
if (!this.serverUrl) {
|
|
437
|
+
throw new Error('Server not initialized');
|
|
438
|
+
}
|
|
439
|
+
return this.serverUrl;
|
|
440
|
+
}
|
|
441
|
+
/**
|
|
442
|
+
* Resolve {env:VAR_NAME} references to actual environment variable values
|
|
443
|
+
*/
|
|
444
|
+
resolveEnvReferences(obj) {
|
|
445
|
+
if (typeof obj === 'string') {
|
|
446
|
+
// Check for {env:VAR_NAME} pattern
|
|
447
|
+
const envMatch = obj.match(/^\{env:([^}]+)\}$/);
|
|
448
|
+
if (envMatch) {
|
|
449
|
+
const envVarName = envMatch[1];
|
|
450
|
+
const envValue = process.env[envVarName];
|
|
451
|
+
if (!envValue) {
|
|
452
|
+
getLogger().warn(`Environment variable ${envVarName} is not set`);
|
|
453
|
+
return '';
|
|
454
|
+
}
|
|
455
|
+
return envValue;
|
|
456
|
+
}
|
|
457
|
+
return obj;
|
|
458
|
+
}
|
|
459
|
+
if (Array.isArray(obj)) {
|
|
460
|
+
return obj.map((item) => this.resolveEnvReferences(item));
|
|
461
|
+
}
|
|
462
|
+
if (obj !== null && typeof obj === 'object') {
|
|
463
|
+
const resolved = {};
|
|
464
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
465
|
+
resolved[key] = this.resolveEnvReferences(value);
|
|
466
|
+
}
|
|
467
|
+
return resolved;
|
|
468
|
+
}
|
|
469
|
+
return obj;
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
/**
|
|
473
|
+
* Create a runtime client with the given configuration.
|
|
474
|
+
*/
|
|
475
|
+
export function createRuntimeClient(config) {
|
|
476
|
+
return new RuntimeClient(config);
|
|
477
|
+
}
|
|
478
|
+
/**
|
|
479
|
+
* Create and initialize a runtime client with the given configuration.
|
|
480
|
+
*/
|
|
481
|
+
export async function createRuntimeClientInstance(config) {
|
|
482
|
+
const client = new RuntimeClient(config);
|
|
483
|
+
await client.initialize();
|
|
484
|
+
return client;
|
|
485
|
+
}
|
|
486
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/runtime/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.test.d.ts","sourceRoot":"","sources":["../../src/
|
|
1
|
+
{"version":3,"file":"client.test.d.ts","sourceRoot":"","sources":["../../src/runtime/client.test.ts"],"names":[],"mappings":""}
|