@cyanautomation/kaseki-agent 1.17.0 → 1.19.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/README.md +3 -1
- package/dist/kaseki-report.d.ts +1 -1
- package/dist/kaseki-report.d.ts.map +1 -1
- package/dist/kaseki-report.js +78 -74
- package/dist/kaseki-report.js.map +1 -1
- package/dist/pi-progress-stream.js +66 -42
- package/dist/pi-progress-stream.js.map +1 -1
- package/dist/pi-progress-summarizer.d.ts +5 -0
- package/dist/pi-progress-summarizer.d.ts.map +1 -1
- package/dist/pi-progress-summarizer.js +49 -0
- package/dist/pi-progress-summarizer.js.map +1 -1
- package/dist/validation-output-filter.d.ts +6 -2
- package/dist/validation-output-filter.d.ts.map +1 -1
- package/dist/validation-output-filter.js +53 -29
- package/dist/validation-output-filter.js.map +1 -1
- package/kaseki-agent.sh +31 -16
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -343,6 +343,7 @@ http://localhost:8080/docs
|
|
|
343
343
|
```
|
|
344
344
|
|
|
345
345
|
This provides an interactive interface to:
|
|
346
|
+
|
|
346
347
|
- Browse all endpoints organized by category
|
|
347
348
|
- View request/response schemas
|
|
348
349
|
- Test endpoints with "Try it out" feature
|
|
@@ -1287,6 +1288,7 @@ API controllers may send either the direct fields (`changedFilesAllowlist`, `val
|
|
|
1287
1288
|
| `KASEKI_REPO_MEMORY_MODE` | `off` | Opt-in repository prompt memory: `off` disables it; `summary` appends a compact prior-context summary when fresh |
|
|
1288
1289
|
| `KASEKI_REPO_MEMORY_TTL_DAYS` | `30` | Maximum age for a repository memory summary before it is ignored |
|
|
1289
1290
|
| `KASEKI_REPO_MEMORY_MAX_BYTES` | `8000` | Maximum bytes to read/write for the repository memory prompt section |
|
|
1291
|
+
| `KASEKI_REPO_MEMORY_ROOT` | `/cache/repo-memory` | Directory root for repository memory summaries |
|
|
1290
1292
|
|
|
1291
1293
|
### Docker and Images
|
|
1292
1294
|
|
|
@@ -1415,7 +1417,7 @@ Set `KASEKI_GIT_CACHE_MODE=off` to disable Git mirror caching. Clone duration pl
|
|
|
1415
1417
|
|
|
1416
1418
|
### Repository Memory Cache
|
|
1417
1419
|
|
|
1418
|
-
Repository memory is disabled by default. Set `KASEKI_REPO_MEMORY_MODE=summary` to opt in to a compact prompt-context cache for the target repository and ref. Kaseki stores this summary at
|
|
1420
|
+
Repository memory is disabled by default. Set `KASEKI_REPO_MEMORY_MODE=summary` to opt in to a compact prompt-context cache for the target repository and ref. Kaseki stores this summary at `${KASEKI_REPO_MEMORY_ROOT}/<repo-key>/summary.md`, where `KASEKI_REPO_MEMORY_ROOT` defaults to `/cache/repo-memory` and `<repo-key>` is derived from the repository URL and default ref. Before invoking the agent, Kaseki appends a clearly labeled “Prior repository context” section only when the summary exists, is within `KASEKI_REPO_MEMORY_TTL_DAYS`, and is no larger than `KASEKI_REPO_MEMORY_MAX_BYTES`.
|
|
1419
1421
|
|
|
1420
1422
|
After a successful run, or an inspect-mode run where the agent completed and the secret scan passed, Kaseki rewrites the summary from bounded, sanitized artifacts: `result-summary.md`, `analysis.md`, `changed-files.txt`, and validation timing/status outcomes. The summary records the repo URL, default ref, commit SHA, and timestamp so stale context is visible to the next agent. Kaseki does not blindly persist raw logs or user prompts, and lines resembling secrets, credentials, API keys, tokens, or prompt text are filtered out before writing memory.
|
|
1421
1423
|
|
package/dist/kaseki-report.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kaseki-report.d.ts","sourceRoot":"","sources":["../src/kaseki-report.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"kaseki-report.d.ts","sourceRoot":"","sources":["../src/kaseki-report.ts"],"names":[],"mappings":";AA8GA,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CA6E9D"}
|
package/dist/kaseki-report.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import fs from 'node:fs';
|
|
3
3
|
import path from 'node:path';
|
|
4
|
+
import { basename } from 'node:path';
|
|
4
5
|
import { normalizeExitCodeCandidate } from './instance-state-derivation.js';
|
|
5
|
-
|
|
6
|
-
function readText(name) {
|
|
6
|
+
function readText(resultDir, name) {
|
|
7
7
|
try {
|
|
8
8
|
return fs.readFileSync(path.join(resultDir, name), 'utf8');
|
|
9
9
|
}
|
|
@@ -11,8 +11,8 @@ function readText(name) {
|
|
|
11
11
|
return '';
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
|
-
function readJson(name) {
|
|
15
|
-
const text = readText(name);
|
|
14
|
+
function readJson(resultDir, name) {
|
|
15
|
+
const text = readText(resultDir, name);
|
|
16
16
|
if (!text.trim())
|
|
17
17
|
return {};
|
|
18
18
|
try {
|
|
@@ -22,7 +22,7 @@ function readJson(name) {
|
|
|
22
22
|
return {};
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
|
-
function firstReadableNonEmpty(names) {
|
|
25
|
+
function firstReadableNonEmpty(resultDir, names) {
|
|
26
26
|
for (const name of names) {
|
|
27
27
|
try {
|
|
28
28
|
const text = fs.readFileSync(path.join(resultDir, name), 'utf8');
|
|
@@ -42,36 +42,17 @@ function printableExitCode(value) {
|
|
|
42
42
|
const normalized = normalizeExitCode(value);
|
|
43
43
|
return normalized === null ? 'unknown' : String(normalized);
|
|
44
44
|
}
|
|
45
|
-
function
|
|
46
|
-
|
|
45
|
+
function appendList(lines, title, values) {
|
|
46
|
+
lines.push(`${title}:`);
|
|
47
47
|
if (values.length === 0) {
|
|
48
|
-
|
|
48
|
+
lines.push(' none');
|
|
49
49
|
return;
|
|
50
50
|
}
|
|
51
51
|
for (const value of values)
|
|
52
|
-
|
|
52
|
+
lines.push(` ${value}`);
|
|
53
53
|
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
process.exit(2);
|
|
57
|
-
}
|
|
58
|
-
const metadata = readJson('metadata.json');
|
|
59
|
-
const summary = readJson('pi-summary.json');
|
|
60
|
-
const changedFiles = readText('changed-files.txt')
|
|
61
|
-
.split(/\r?\n/)
|
|
62
|
-
.filter(Boolean);
|
|
63
|
-
const timings = readText('validation-timings.tsv')
|
|
64
|
-
.split(/\r?\n/)
|
|
65
|
-
.filter(Boolean);
|
|
66
|
-
const stageTimings = readText('stage-timings.tsv')
|
|
67
|
-
.split(/\r?\n/)
|
|
68
|
-
.filter(Boolean);
|
|
69
|
-
const dependencyCache = readText('dependency-cache.log')
|
|
70
|
-
.split(/\r?\n/)
|
|
71
|
-
.filter(Boolean);
|
|
72
|
-
const secretScanBytes = Buffer.byteLength(readText('secret-scan.log'));
|
|
73
|
-
function parseRestorationMetrics() {
|
|
74
|
-
const restorationJsonl = readText('restoration.jsonl');
|
|
54
|
+
function parseRestorationMetrics(resultDir) {
|
|
55
|
+
const restorationJsonl = readText(resultDir, 'restoration.jsonl');
|
|
75
56
|
if (!restorationJsonl.trim())
|
|
76
57
|
return { restored: 0, kept: 0 };
|
|
77
58
|
let restored = 0, kept = 0;
|
|
@@ -91,50 +72,73 @@ function parseRestorationMetrics() {
|
|
|
91
72
|
}
|
|
92
73
|
return { restored, kept };
|
|
93
74
|
}
|
|
94
|
-
|
|
95
|
-
const
|
|
96
|
-
const
|
|
97
|
-
const
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
75
|
+
export function generateKasekiReport(resultDir) {
|
|
76
|
+
const metadata = readJson(resultDir, 'metadata.json');
|
|
77
|
+
const summary = readJson(resultDir, 'pi-summary.json');
|
|
78
|
+
const changedFiles = readText(resultDir, 'changed-files.txt')
|
|
79
|
+
.split(/\r?\n/)
|
|
80
|
+
.filter(Boolean);
|
|
81
|
+
const timings = readText(resultDir, 'validation-timings.tsv')
|
|
82
|
+
.split(/\r?\n/)
|
|
83
|
+
.filter(Boolean);
|
|
84
|
+
const stageTimings = readText(resultDir, 'stage-timings.tsv')
|
|
85
|
+
.split(/\r?\n/)
|
|
86
|
+
.filter(Boolean);
|
|
87
|
+
const dependencyCache = readText(resultDir, 'dependency-cache.log')
|
|
88
|
+
.split(/\r?\n/)
|
|
89
|
+
.filter(Boolean);
|
|
90
|
+
const secretScanBytes = Buffer.byteLength(readText(resultDir, 'secret-scan.log'));
|
|
91
|
+
const { restored: restoredCount, kept: keptCount } = parseRestorationMetrics(resultDir);
|
|
92
|
+
const normalizedExitCode = normalizeExitCode(metadata.exit_code);
|
|
93
|
+
const status = normalizedExitCode === 0 ? 'passed' : 'failed';
|
|
94
|
+
const resultName = metadata.instance || path.basename(resultDir);
|
|
95
|
+
const nextDiagnostic = normalizedExitCode === 0
|
|
96
|
+
? 'none'
|
|
97
|
+
: firstReadableNonEmpty(resultDir, [
|
|
98
|
+
'failure.json',
|
|
99
|
+
'quality.log',
|
|
100
|
+
'secret-scan.log',
|
|
101
|
+
'pi-stderr.log',
|
|
102
|
+
'validation.log',
|
|
103
|
+
'preflight-git.log',
|
|
104
|
+
'stderr.log',
|
|
105
|
+
])?.name ?? 'metadata.json';
|
|
106
|
+
const lines = [
|
|
107
|
+
`Kaseki result: ${resultName}`,
|
|
108
|
+
`Status: ${status}`,
|
|
109
|
+
`Failed command: ${metadata.failed_command || 'none'}`,
|
|
110
|
+
`Exit code: ${printableExitCode(metadata.exit_code)}`,
|
|
111
|
+
`Pi exit code: ${printableExitCode(metadata.pi_exit_code)}`,
|
|
112
|
+
`Validation exit code: ${printableExitCode(metadata.validation_exit_code)}`,
|
|
113
|
+
`Validation failed command: ${metadata.validation_failed_command || 'none'}`,
|
|
114
|
+
];
|
|
115
|
+
if (metadata.validation_stopped_early) {
|
|
116
|
+
lines.push(`⚠️ Validation stopped early (fail-fast mode): ${metadata.validation_commands_attempted ?? 'unknown'} command(s) attempted`);
|
|
117
|
+
}
|
|
118
|
+
lines.push(`Quality exit code: ${printableExitCode(metadata.quality_exit_code)}`, `Secret scan exit code: ${printableExitCode(metadata.secret_scan_exit_code)}`, `Requested model: ${metadata.model || 'unknown'}`, `Actual model: ${metadata.actual_model || summary.selected_model || 'unknown'}`, `Pi version: ${metadata.pi_version || 'unknown'}`, `Duration seconds: ${metadata.duration_seconds ?? 'unknown'}`, `Agent duration seconds: ${metadata.pi_duration_seconds ?? 'unknown'}`, `Diff non-empty: ${metadata.diff_nonempty ?? 'unknown'}`);
|
|
119
|
+
appendList(lines, 'Changed files', changedFiles);
|
|
120
|
+
if (restoredCount > 0 || keptCount > 0) {
|
|
121
|
+
const totalFiles = restoredCount + keptCount;
|
|
122
|
+
const coverage = totalFiles > 0 ? Math.round((keptCount * 100) / totalFiles) : 0;
|
|
123
|
+
lines.push(`Allowlist coverage: ${keptCount}/${totalFiles} files (${coverage}%)`, `Files restored: ${restoredCount}`, `Files kept (allowlist match): ${keptCount}`);
|
|
124
|
+
}
|
|
125
|
+
appendList(lines, 'Stage timings', stageTimings);
|
|
126
|
+
appendList(lines, 'Validation timings', timings);
|
|
127
|
+
appendList(lines, 'Dependency cache', dependencyCache);
|
|
128
|
+
lines.push(`Secret scan bytes: ${secretScanBytes}`);
|
|
129
|
+
lines.push(`Next diagnostic: ${nextDiagnostic}`);
|
|
130
|
+
return `${lines.join('\n')}\n`;
|
|
131
|
+
}
|
|
132
|
+
function main() {
|
|
133
|
+
const resultDir = process.argv[2] ?? '/results';
|
|
134
|
+
if (!fs.existsSync(resultDir)) {
|
|
135
|
+
console.error(`Result directory not found: ${resultDir}`);
|
|
136
|
+
process.exit(2);
|
|
137
|
+
}
|
|
138
|
+
process.stdout.write(generateKasekiReport(resultDir));
|
|
118
139
|
}
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
console.log(`Actual model: ${metadata.actual_model || summary.selected_model || 'unknown'}`);
|
|
123
|
-
console.log(`Pi version: ${metadata.pi_version || 'unknown'}`);
|
|
124
|
-
console.log(`Duration seconds: ${metadata.duration_seconds ?? 'unknown'}`);
|
|
125
|
-
console.log(`Agent duration seconds: ${metadata.pi_duration_seconds ?? 'unknown'}`);
|
|
126
|
-
console.log(`Diff non-empty: ${metadata.diff_nonempty ?? 'unknown'}`);
|
|
127
|
-
printList('Changed files', changedFiles);
|
|
128
|
-
if (restoredCount > 0 || keptCount > 0) {
|
|
129
|
-
const totalFiles = restoredCount + keptCount;
|
|
130
|
-
const coverage = totalFiles > 0 ? Math.round((keptCount * 100) / totalFiles) : 0;
|
|
131
|
-
console.log(`Allowlist coverage: ${keptCount}/${totalFiles} files (${coverage}%)`);
|
|
132
|
-
console.log(`Files restored: ${restoredCount}`);
|
|
133
|
-
console.log(`Files kept (allowlist match): ${keptCount}`);
|
|
140
|
+
const entrypoint = process.argv[1] ? basename(process.argv[1]) : '';
|
|
141
|
+
if (entrypoint === 'kaseki-report.js' || entrypoint === 'kaseki-report.ts') {
|
|
142
|
+
main();
|
|
134
143
|
}
|
|
135
|
-
printList('Stage timings', stageTimings);
|
|
136
|
-
printList('Validation timings', timings);
|
|
137
|
-
printList('Dependency cache', dependencyCache);
|
|
138
|
-
console.log(`Secret scan bytes: ${secretScanBytes}`);
|
|
139
|
-
console.log(`Next diagnostic: ${nextDiagnostic}`);
|
|
140
144
|
//# sourceMappingURL=kaseki-report.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kaseki-report.js","sourceRoot":"","sources":["../src/kaseki-report.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"kaseki-report.js","sourceRoot":"","sources":["../src/kaseki-report.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import fs from 'fs';
|
|
3
3
|
import readline from 'readline';
|
|
4
4
|
import { sanitizeToolName } from './progress-stream-utils.js';
|
|
5
|
-
import {
|
|
5
|
+
import { EventSampler, formatElapsed, truncate, extractTopic, } from './pi-progress-summarizer.js';
|
|
6
6
|
import { ANSI_COLORS, stripAnsi } from './ansi-colors.js';
|
|
7
7
|
const progressJsonlPath = process.argv[2] || '/results/progress.jsonl';
|
|
8
8
|
const progressLogPath = process.argv[3] || '/results/progress.log';
|
|
@@ -17,6 +17,44 @@ let streamOpen = true;
|
|
|
17
17
|
const startTime = Date.now();
|
|
18
18
|
// Sample 1 in every 15 message_update events
|
|
19
19
|
const messageSampler = new EventSampler(15);
|
|
20
|
+
/**
|
|
21
|
+
* ToolBatchAggregator: Batches tool calls by type and emits summaries
|
|
22
|
+
* Reduces noise by aggregating rapid tool sequences
|
|
23
|
+
*/
|
|
24
|
+
class ToolBatchAggregator {
|
|
25
|
+
toolBuffer = new Map(); // tool name -> count
|
|
26
|
+
lastFlushTime = Date.now();
|
|
27
|
+
coalesceWindow = 3000; // 3 seconds
|
|
28
|
+
recordTool(tool) {
|
|
29
|
+
const count = (this.toolBuffer.get(tool) || 0) + 1;
|
|
30
|
+
this.toolBuffer.set(tool, count);
|
|
31
|
+
this.lastFlushTime = Date.now();
|
|
32
|
+
}
|
|
33
|
+
shouldFlush() {
|
|
34
|
+
const elapsed = Date.now() - this.lastFlushTime;
|
|
35
|
+
// Flush if buffer is full or coalesce window elapsed
|
|
36
|
+
return this.toolBuffer.size > 0 && elapsed > this.coalesceWindow;
|
|
37
|
+
}
|
|
38
|
+
flush() {
|
|
39
|
+
if (this.toolBuffer.size === 0) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
// Build summary: "read_file (3x), write_file (1x), grep_search (2x)"
|
|
43
|
+
const summary = Array.from(this.toolBuffer.entries())
|
|
44
|
+
.map(([tool, count]) => `${tool} (${count}x)`)
|
|
45
|
+
.join(', ');
|
|
46
|
+
const elapsed = formatElapsed(startTime);
|
|
47
|
+
const message = `[tools] ${summary} (${elapsed})`;
|
|
48
|
+
emit('pi tool batch', stripAnsi(message), {
|
|
49
|
+
toolBatchSummary: Object.fromEntries(this.toolBuffer),
|
|
50
|
+
});
|
|
51
|
+
this.toolBuffer.clear();
|
|
52
|
+
}
|
|
53
|
+
clear() {
|
|
54
|
+
this.toolBuffer.clear();
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
const toolBatchAggregator = new ToolBatchAggregator();
|
|
20
58
|
function append(file, text) {
|
|
21
59
|
fs.appendFileSync(file, text);
|
|
22
60
|
}
|
|
@@ -64,42 +102,22 @@ function emit(stage, message, extra = {}) {
|
|
|
64
102
|
process.stdout.write(line);
|
|
65
103
|
}
|
|
66
104
|
}
|
|
67
|
-
function eventTotal() {
|
|
68
|
-
return Object.values(counts).reduce((sum, count) => sum + count, 0);
|
|
69
|
-
}
|
|
70
105
|
function maybeHeartbeat(force = false, reason = 'events') {
|
|
71
106
|
const now = Date.now();
|
|
72
107
|
if (!force && now - lastHeartbeat < 15000) {
|
|
73
108
|
return;
|
|
74
109
|
}
|
|
75
110
|
lastHeartbeat = now;
|
|
111
|
+
// Flush any pending tool batches
|
|
112
|
+
if (toolBatchAggregator.shouldFlush()) {
|
|
113
|
+
toolBatchAggregator.flush();
|
|
114
|
+
}
|
|
76
115
|
const elapsed = formatElapsed(startTime);
|
|
77
|
-
const
|
|
78
|
-
const message = `${workingMsg} | ${ANSI_COLORS.DIM}${elapsed} elapsed${ANSI_COLORS.RESET}`;
|
|
116
|
+
const message = `${ANSI_COLORS.DIM}⏱ ${elapsed} elapsed${ANSI_COLORS.RESET}`;
|
|
79
117
|
emit('pi coding agent', message, {
|
|
80
|
-
counts,
|
|
81
|
-
toolStartCount,
|
|
82
|
-
toolEndCount,
|
|
83
|
-
messageUpdateCount,
|
|
84
118
|
reason,
|
|
85
119
|
});
|
|
86
120
|
}
|
|
87
|
-
/**
|
|
88
|
-
* Emit enhanced summary for tool execution
|
|
89
|
-
*/
|
|
90
|
-
function emitToolSummary(event, tool, isStart) {
|
|
91
|
-
if (!enableSummarization) {
|
|
92
|
-
return;
|
|
93
|
-
}
|
|
94
|
-
const elapsed = formatElapsed(startTime);
|
|
95
|
-
const action = extractFilePath(tool) || tool;
|
|
96
|
-
const { hasError } = detectError(JSON.stringify(event).substring(0, 500));
|
|
97
|
-
const level = hasError ? 'error' : undefined;
|
|
98
|
-
const message = formatProgressMessage('pi tool', `${isStart ? 'start' : 'end'} ${action}`, undefined, level, elapsed);
|
|
99
|
-
if (message && message.length > 0) {
|
|
100
|
-
emit('pi tool', stripAnsi(message.substring(13)), { level });
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
121
|
/**
|
|
104
122
|
* Emit enhanced summary for message updates
|
|
105
123
|
*/
|
|
@@ -108,22 +126,27 @@ function emitMessageSummary(event) {
|
|
|
108
126
|
return;
|
|
109
127
|
}
|
|
110
128
|
const elapsed = formatElapsed(startTime);
|
|
111
|
-
// Try to extract a brief insight from the message
|
|
112
129
|
let detail;
|
|
113
130
|
if (event.message?.content) {
|
|
114
131
|
const content = event.message.content;
|
|
115
132
|
const contentText = Array.isArray(content)
|
|
116
133
|
? content.map((c) => (c.text || c.content || '').substring(0, 50)).join(' ')
|
|
117
|
-
: String(content).substring(0,
|
|
134
|
+
: String(content).substring(0, 200);
|
|
135
|
+
// Try to extract topic first (more concise)
|
|
118
136
|
if (contentText.length > 10) {
|
|
119
|
-
|
|
137
|
+
const topic = extractTopic(contentText);
|
|
138
|
+
if (topic) {
|
|
139
|
+
detail = topic;
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
// Fallback to truncated content
|
|
143
|
+
detail = truncate(contentText, 60);
|
|
144
|
+
}
|
|
120
145
|
}
|
|
121
146
|
}
|
|
122
147
|
if (detail) {
|
|
123
|
-
const message =
|
|
124
|
-
|
|
125
|
-
emit('pi coding agent', stripAnsi(message.substring(13)), { type: 'message_update' });
|
|
126
|
-
}
|
|
148
|
+
const message = `pi coding agent: ${detail} (${elapsed})`;
|
|
149
|
+
emit('pi coding agent', stripAnsi(message), { type: 'message_update' });
|
|
127
150
|
}
|
|
128
151
|
}
|
|
129
152
|
emit('pi coding agent', 'started');
|
|
@@ -154,20 +177,14 @@ rl.on('line', (line) => {
|
|
|
154
177
|
if (type === 'tool_execution_start' || type === 'toolcall_start') {
|
|
155
178
|
const tool = toolName(event);
|
|
156
179
|
toolStartCount += 1;
|
|
157
|
-
|
|
158
|
-
emit('pi tool', startMsg, { type, toolStartCount });
|
|
180
|
+
// Aggregate tool calls instead of emitting individual start messages
|
|
159
181
|
if (enableSummarization) {
|
|
160
|
-
|
|
182
|
+
toolBatchAggregator.recordTool(tool);
|
|
161
183
|
}
|
|
162
184
|
}
|
|
163
185
|
else if (type === 'tool_execution_end' || type === 'toolcall_end') {
|
|
164
|
-
const tool = toolName(event);
|
|
165
186
|
toolEndCount += 1;
|
|
166
|
-
|
|
167
|
-
emit('pi tool', endMsg, { type, toolEndCount });
|
|
168
|
-
if (enableSummarization) {
|
|
169
|
-
emitToolSummary(event, tool, false);
|
|
170
|
-
}
|
|
187
|
+
// Tool end is batched; suppress individual emission
|
|
171
188
|
}
|
|
172
189
|
else if (type === 'message_update') {
|
|
173
190
|
messageUpdateCount += 1;
|
|
@@ -177,12 +194,17 @@ rl.on('line', (line) => {
|
|
|
177
194
|
}
|
|
178
195
|
else if (type === 'agent_start') {
|
|
179
196
|
messageSampler.reset();
|
|
197
|
+
toolBatchAggregator.clear();
|
|
180
198
|
emit('pi coding agent', 'agent started', { type });
|
|
181
199
|
}
|
|
182
200
|
else if (type === 'agent_end') {
|
|
201
|
+
// Flush any pending tool batches before agent ends
|
|
202
|
+
toolBatchAggregator.flush();
|
|
183
203
|
emit('pi coding agent', 'agent finished', { type });
|
|
184
204
|
}
|
|
185
205
|
else if (type === 'auto_retry_start') {
|
|
206
|
+
// Flush pending batches before retry
|
|
207
|
+
toolBatchAggregator.flush();
|
|
186
208
|
emit('pi coding agent', `${ANSI_COLORS.YELLOW}auto retry started${ANSI_COLORS.RESET}`, { type });
|
|
187
209
|
}
|
|
188
210
|
else if (type === 'auto_retry_end') {
|
|
@@ -193,6 +215,8 @@ rl.on('line', (line) => {
|
|
|
193
215
|
rl.on('close', () => {
|
|
194
216
|
streamOpen = false;
|
|
195
217
|
clearInterval(heartbeatTimer);
|
|
218
|
+
// Flush any pending tool batches
|
|
219
|
+
toolBatchAggregator.flush();
|
|
196
220
|
maybeHeartbeat(true, 'close');
|
|
197
221
|
const finalElapsed = formatElapsed(startTime);
|
|
198
222
|
emit('pi coding agent', `event stream ended | ${ANSI_COLORS.DIM}${finalElapsed} total${ANSI_COLORS.RESET}`, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pi-progress-stream.js","sourceRoot":"","sources":["../src/pi-progress-stream.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"pi-progress-stream.js","sourceRoot":"","sources":["../src/pi-progress-stream.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,6 +22,11 @@ export declare function extractFilePath(toolName: string, content?: string): str
|
|
|
22
22
|
* Detect if content contains decision keywords
|
|
23
23
|
*/
|
|
24
24
|
export declare function extractDecision(content?: string): string | null;
|
|
25
|
+
/**
|
|
26
|
+
* Extract agent thinking topic from message content
|
|
27
|
+
* E.g., "Let me find and format the GitHub App Integration..." → "[thinking] formatting GitHub App Integration"
|
|
28
|
+
*/
|
|
29
|
+
export declare function extractTopic(content?: string): string | null;
|
|
25
30
|
/**
|
|
26
31
|
* Detect errors in tool output
|
|
27
32
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pi-progress-summarizer.d.ts","sourceRoot":"","sources":["../src/pi-progress-summarizer.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,UAAU,YAAY;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAoCD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA8CjF;AAqBD;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAkB/D;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAgBrF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,GAAG,EACV,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,YAAY,GAAG,IAAI,CAoCrB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAOvD;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,GAAE,MAAY,GAAG,MAAM,CAI/E;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,EACjC,OAAO,CAAC,EAAE,MAAM,GACf,MAAM,CAoBR;AAED;;;GAGG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,OAAO,CAAa;gBAEhB,IAAI,GAAE,MAAW;IAI7B,UAAU,IAAI,OAAO;IAKrB,KAAK,IAAI,IAAI;CAGd"}
|
|
1
|
+
{"version":3,"file":"pi-progress-summarizer.d.ts","sourceRoot":"","sources":["../src/pi-progress-summarizer.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,UAAU,YAAY;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAoCD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA8CjF;AAqBD;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAkB/D;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAiD5D;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAgBrF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,GAAG,EACV,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,YAAY,GAAG,IAAI,CAoCrB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAOvD;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,GAAE,MAAY,GAAG,MAAM,CAI/E;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,EACjC,OAAO,CAAC,EAAE,MAAM,GACf,MAAM,CAoBR;AAED;;;GAGG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,OAAO,CAAa;gBAEhB,IAAI,GAAE,MAAW;IAI7B,UAAU,IAAI,OAAO;IAKrB,KAAK,IAAI,IAAI;CAGd"}
|
|
@@ -129,6 +129,55 @@ export function extractDecision(content) {
|
|
|
129
129
|
}
|
|
130
130
|
return null;
|
|
131
131
|
}
|
|
132
|
+
/**
|
|
133
|
+
* Extract agent thinking topic from message content
|
|
134
|
+
* E.g., "Let me find and format the GitHub App Integration..." → "[thinking] formatting GitHub App Integration"
|
|
135
|
+
*/
|
|
136
|
+
export function extractTopic(content) {
|
|
137
|
+
if (!content)
|
|
138
|
+
return null;
|
|
139
|
+
const lowerContent = content.toLowerCase();
|
|
140
|
+
// First, try to find a topic indicator + subject
|
|
141
|
+
// Check for variations of topic keywords (e.g., "format", "formatting", "formatted")
|
|
142
|
+
const topicPatterns = [
|
|
143
|
+
/\b(formatting?|format(?:ted|ing)?)/,
|
|
144
|
+
/\b(implement(?:ing)?|implement(?:ed)?)/,
|
|
145
|
+
/\b(check(?:ing)?|checked?)/,
|
|
146
|
+
/\b(find(?:ing)?|found)/,
|
|
147
|
+
/\b(analyz(?:ing|ed)?|analyzing|analyze)/,
|
|
148
|
+
/\b(review(?:ing)?|reviewed?)/,
|
|
149
|
+
/\b(fix(?:ing)?|fixed)/,
|
|
150
|
+
/\b(adding?|added)/,
|
|
151
|
+
/\b(updat(?:ing)?|updated)/,
|
|
152
|
+
/\b(organizing?|organized)/,
|
|
153
|
+
/\b(validat(?:ing)?|validated|validate)/,
|
|
154
|
+
/\b(test(?:ing)?|tested)/,
|
|
155
|
+
];
|
|
156
|
+
for (const pattern of topicPatterns) {
|
|
157
|
+
const match = lowerContent.match(pattern);
|
|
158
|
+
if (match) {
|
|
159
|
+
const idx = match.index || 0;
|
|
160
|
+
// Extract up to 50 chars after the match to capture the subject
|
|
161
|
+
const end = Math.min(content.length, idx + match[1].length + 70);
|
|
162
|
+
let snippet = content.substring(idx, end).trim();
|
|
163
|
+
// Stop at sentence boundaries or key phrases
|
|
164
|
+
const stopPoints = ['\n', '.', '?', ';', ' now ', ' so ', ' and then'];
|
|
165
|
+
for (const stopPoint of stopPoints) {
|
|
166
|
+
const stopIdx = snippet.indexOf(stopPoint);
|
|
167
|
+
if (stopIdx > 0 && stopIdx < snippet.length - 1) {
|
|
168
|
+
snippet = snippet.substring(0, stopIdx).trim();
|
|
169
|
+
break;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
if (snippet.length > 5 && snippet.length < 80) {
|
|
173
|
+
// Capitalize first letter
|
|
174
|
+
const formatted = snippet.charAt(0).toUpperCase() + snippet.slice(1);
|
|
175
|
+
return `[thinking] ${formatted}`;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
return null;
|
|
180
|
+
}
|
|
132
181
|
/**
|
|
133
182
|
* Detect errors in tool output
|
|
134
183
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pi-progress-summarizer.js","sourceRoot":"","sources":["../src/pi-progress-summarizer.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAS/C,MAAM,iBAAiB,GAAG;IACxB,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,KAAK;IACL,WAAW;IACX,UAAU;IACV,QAAQ;IACR,KAAK;IACL,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,UAAU;IACV,QAAQ;IACR,aAAa;CACd,CAAC;AAEF,MAAM,cAAc,GAAG;IACrB,OAAO;IACP,QAAQ;IACR,SAAS;IACT,WAAW;IACX,QAAQ;IACR,WAAW;IACX,SAAS;IACT,WAAW;IACX,MAAM;IACN,WAAW;IACX,gBAAgB;IAChB,WAAW;IACX,kBAAkB;IAClB,MAAM;CACP,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,QAAgB,EAAE,OAAgB;IAChE,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAE3B,iDAAiD;IACjD,MAAM,YAAY,GAAG;QACnB,6BAA6B;QAC7B,8BAA8B;QAC9B,+BAA+B;QAC/B,+BAA+B;QAC/B,mCAAmC;QACnC,8BAA8B;QAC9B,wBAAwB;QACxB,oDAAoD,EAAE,8BAA8B;KACrF,CAAC;IAEF,IAAI,OAAO,EAAE,CAAC;QACZ,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE,CAAC;YACnC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACrC,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtB,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC3B,2CAA2C;gBAC3C,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;oBACvD,OAAO,SAAS,CAAC,SAAS,CAAC,CAAC;gBAC9B,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,4CAA4C;IAC5C,MAAM,OAAO,GAA2B;QACtC,SAAS,EAAE,MAAM;QACjB,UAAU,EAAE,OAAO;QACnB,WAAW,EAAE,MAAM;QACnB,WAAW,EAAE,MAAM;QACnB,eAAe,EAAE,QAAQ;QACzB,WAAW,EAAE,QAAQ;QACrB,sBAAsB,EAAE,MAAM;QAC9B,QAAQ,EAAE,MAAM;QAChB,IAAI,EAAE,MAAM;QACZ,EAAE,EAAE,IAAI;QACR,GAAG,EAAE,MAAM;QACX,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,MAAM;KACb,CAAC;IAEF,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC;AACnC,CAAC;AAED;;;GAGG;AACH,SAAS,SAAS,CAAC,IAAY;IAC7B,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACrB,4CAA4C;IAC5C,IAAI,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,wBAAwB,EAAE,EAAE,CAAC,CAAC;IAC3D,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC3C,sBAAsB;IACtB,IAAI,SAAS,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,SAAS,GAAG,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,OAAgB;IAC9C,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAE1B,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAC3C,KAAK,MAAM,OAAO,IAAI,iBAAiB,EAAE,CAAC;QACxC,IAAI,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACnC,oEAAoE;YACpE,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC;YACpC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC;YAC/C,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;YACrD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YACtC,CAAC;YACD,OAAO,OAAO,CAAC;QACjB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,OAAgB;IAC1C,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAEzC,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAC3C,KAAK,MAAM,OAAO,IAAI,cAAc,EAAE,CAAC;QACrC,IAAI,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACnC,oDAAoD;YACpD,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC;YACpC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC;YAC/C,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;YACrD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QACrC,CAAC;IACH,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAC5B,KAAU,EACV,QAAgB,EAChB,SAAiB;IAEjB,MAAM,OAAO,GAAiB,EAAE,CAAC;IAEjC,sBAAsB;IACtB,MAAM,QAAQ,GAAG,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IACpF,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC;IAC5B,CAAC;IAED,6BAA6B;IAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACvC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IACpD,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC;QACxB,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,gDAAgD;IAChD,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;QACxC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QACtC,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;YACxC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;YAC9D,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAEpB,MAAM,QAAQ,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;QAC9C,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,mBAAmB;IACnB,OAAO,CAAC,OAAO,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;IAE3C,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,SAAiB;IAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IACvC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;IAErD,IAAI,OAAO,KAAK,CAAC;QAAE,OAAO,GAAG,OAAO,GAAG,CAAC;IACxC,OAAO,GAAG,OAAO,KAAK,OAAO,GAAG,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAwB,EAAE,SAAiB,GAAG;IACrE,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACrB,IAAI,IAAI,CAAC,MAAM,IAAI,MAAM;QAAE,OAAO,IAAI,CAAC;IACvC,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;AAC7C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CACnC,KAAa,EACb,MAAc,EACd,MAAe,EACf,KAAiC,EACjC,OAAgB;IAEhB,IAAI,OAAO,GAAG,MAAM,CAAC;IAErB,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,IAAI,MAAM,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;IAC1C,CAAC;IAED,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,IAAI,KAAK,OAAO,GAAG,CAAC;IAC7B,CAAC;IAED,6BAA6B;IAC7B,IAAI,cAAc,GAAG,OAAO,CAAC;IAC7B,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;QACtB,cAAc,GAAG,GAAG,WAAW,CAAC,GAAG,GAAG,OAAO,GAAG,WAAW,CAAC,KAAK,EAAE,CAAC;IACtE,CAAC;SAAM,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QAC5B,cAAc,GAAG,GAAG,WAAW,CAAC,MAAM,GAAG,OAAO,GAAG,WAAW,CAAC,KAAK,EAAE,CAAC;IACzE,CAAC;IAED,OAAO,cAAc,KAAK,KAAK,cAAc,EAAE,CAAC;AAClD,CAAC;AAED;;;GAGG;AACH,MAAM,OAAO,YAAY;IACf,UAAU,GAAW,EAAE,CAAC,CAAC,sBAAsB;IAC/C,OAAO,GAAW,CAAC,CAAC;IAE5B,YAAY,OAAe,EAAE;QAC3B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,UAAU;QACR,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,OAAO,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,KAAK,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK;QACH,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;IACnB,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"pi-progress-summarizer.js","sourceRoot":"","sources":["../src/pi-progress-summarizer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
1
2
|
/**
|
|
2
3
|
* Validation Output Filter
|
|
3
4
|
*
|
|
@@ -10,9 +11,12 @@
|
|
|
10
11
|
* - Command boundaries (first and last lines)
|
|
11
12
|
*
|
|
12
13
|
* Usage:
|
|
13
|
-
* some_command 2>&1 |
|
|
14
|
+
* some_command 2>&1 | validation-output-filter | tee -a logfile.log
|
|
14
15
|
*
|
|
15
16
|
* Exit code: Always 0 (this filter does not affect command success/failure)
|
|
16
17
|
*/
|
|
17
|
-
|
|
18
|
+
/**
|
|
19
|
+
* Filter validation output and return the visible lines.
|
|
20
|
+
*/
|
|
21
|
+
export declare function filterValidationOutput(input: string): string;
|
|
18
22
|
//# sourceMappingURL=validation-output-filter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation-output-filter.d.ts","sourceRoot":"","sources":["../src/validation-output-filter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"validation-output-filter.d.ts","sourceRoot":"","sources":["../src/validation-output-filter.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;GAeG;AAgLH;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAkB5D"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
1
2
|
/**
|
|
2
3
|
* Validation Output Filter
|
|
3
4
|
*
|
|
@@ -10,17 +11,20 @@
|
|
|
10
11
|
* - Command boundaries (first and last lines)
|
|
11
12
|
*
|
|
12
13
|
* Usage:
|
|
13
|
-
* some_command 2>&1 |
|
|
14
|
+
* some_command 2>&1 | validation-output-filter | tee -a logfile.log
|
|
14
15
|
*
|
|
15
16
|
* Exit code: Always 0 (this filter does not affect command success/failure)
|
|
16
17
|
*/
|
|
17
18
|
import { createInterface } from 'readline';
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
19
|
+
import { basename } from 'path';
|
|
20
|
+
function createInitialState() {
|
|
21
|
+
return {
|
|
22
|
+
inCommand: false,
|
|
23
|
+
commandNumber: 0,
|
|
24
|
+
firstLineOfCommand: null,
|
|
25
|
+
linesSinceCommandStart: 0,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
24
28
|
/**
|
|
25
29
|
* Patterns that always pass through (never filtered)
|
|
26
30
|
*/
|
|
@@ -129,59 +133,79 @@ function shouldShow(line) {
|
|
|
129
133
|
/**
|
|
130
134
|
* Process a line of input
|
|
131
135
|
*/
|
|
132
|
-
function processLine(line) {
|
|
136
|
+
function processLine(line, state) {
|
|
133
137
|
// Detect command start
|
|
134
138
|
if (line.match(/^==> /)) {
|
|
135
139
|
state.inCommand = true;
|
|
136
140
|
state.commandNumber++;
|
|
137
141
|
state.firstLineOfCommand = line;
|
|
138
142
|
state.linesSinceCommandStart = 0;
|
|
139
|
-
|
|
140
|
-
return;
|
|
143
|
+
return line; // Always show command start
|
|
141
144
|
}
|
|
142
145
|
// Detect command end
|
|
143
146
|
if (line.match(/^exit_code=/)) {
|
|
144
|
-
output(line); // Always show exit code
|
|
145
147
|
state.inCommand = false;
|
|
146
148
|
state.firstLineOfCommand = null;
|
|
147
149
|
state.linesSinceCommandStart = 0;
|
|
148
|
-
return;
|
|
150
|
+
return line; // Always show exit code
|
|
149
151
|
}
|
|
150
152
|
// If not in a command, show the line anyway (e.g., preamble, separators)
|
|
151
153
|
if (!state.inCommand) {
|
|
152
|
-
|
|
153
|
-
return;
|
|
154
|
+
return line;
|
|
154
155
|
}
|
|
155
156
|
// In a command: decide whether to show this line based on filter criteria
|
|
156
157
|
state.linesSinceCommandStart++;
|
|
157
158
|
// Show only lines that match filter criteria (errors, milestones, boundaries)
|
|
158
159
|
if (shouldShow(line)) {
|
|
159
|
-
|
|
160
|
+
return line;
|
|
160
161
|
}
|
|
162
|
+
return null;
|
|
161
163
|
}
|
|
162
164
|
/**
|
|
163
|
-
*
|
|
165
|
+
* Filter validation output and return the visible lines.
|
|
164
166
|
*/
|
|
165
|
-
function
|
|
166
|
-
|
|
167
|
+
export function filterValidationOutput(input) {
|
|
168
|
+
const state = createInitialState();
|
|
169
|
+
const outputLines = [];
|
|
170
|
+
const inputLines = input.split(/\r?\n/);
|
|
171
|
+
if (inputLines[inputLines.length - 1] === '') {
|
|
172
|
+
inputLines.pop();
|
|
173
|
+
}
|
|
174
|
+
for (const line of inputLines) {
|
|
175
|
+
const outputLine = processLine(line, state);
|
|
176
|
+
if (outputLine !== null) {
|
|
177
|
+
outputLines.push(outputLine);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
return outputLines.length > 0 ? `${outputLines.join('\n')}\n` : '';
|
|
167
181
|
}
|
|
168
182
|
/**
|
|
169
183
|
* Main: read from stdin and process
|
|
170
184
|
*/
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
185
|
+
function main() {
|
|
186
|
+
const state = createInitialState();
|
|
187
|
+
const rl = createInterface({
|
|
188
|
+
input: process.stdin,
|
|
189
|
+
output: process.stdout,
|
|
190
|
+
terminal: false,
|
|
191
|
+
});
|
|
192
|
+
rl.on('line', (line) => {
|
|
193
|
+
const outputLine = processLine(line, state);
|
|
194
|
+
if (outputLine !== null) {
|
|
195
|
+
console.log(outputLine);
|
|
196
|
+
}
|
|
197
|
+
});
|
|
198
|
+
rl.on('close', () => {
|
|
199
|
+
process.exitCode = 0;
|
|
200
|
+
});
|
|
201
|
+
}
|
|
182
202
|
// Handle errors gracefully
|
|
183
203
|
process.on('error', (err) => {
|
|
184
204
|
console.error(`[validation-output-filter] Error: ${err.message}`);
|
|
185
205
|
process.exit(1);
|
|
186
206
|
});
|
|
207
|
+
const entrypoint = process.argv[1] ? basename(process.argv[1]) : '';
|
|
208
|
+
if (entrypoint === 'validation-output-filter.js' || entrypoint === 'validation-output-filter.ts') {
|
|
209
|
+
main();
|
|
210
|
+
}
|
|
187
211
|
//# sourceMappingURL=validation-output-filter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation-output-filter.js","sourceRoot":"","sources":["../src/validation-output-filter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"validation-output-filter.js","sourceRoot":"","sources":["../src/validation-output-filter.ts"],"names":[],"mappings":"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"}
|
package/kaseki-agent.sh
CHANGED
|
@@ -14,6 +14,7 @@ KASEKI_VALIDATION_COMMANDS="${KASEKI_VALIDATION_COMMANDS-npm run check;npm run t
|
|
|
14
14
|
KASEKI_SKIP_MISSING_NPM_SCRIPTS="${KASEKI_SKIP_MISSING_NPM_SCRIPTS:-1}"
|
|
15
15
|
KASEKI_DEBUG_RAW_EVENTS="${KASEKI_DEBUG_RAW_EVENTS:-0}"
|
|
16
16
|
KASEKI_STREAM_PROGRESS="${KASEKI_STREAM_PROGRESS:-1}"
|
|
17
|
+
KASEKI_RESULTS_DIR="${KASEKI_RESULTS_DIR:-/results}"
|
|
17
18
|
KASEKI_VALIDATE_AFTER_AGENT_FAILURE="${KASEKI_VALIDATE_AFTER_AGENT_FAILURE:-0}"
|
|
18
19
|
KASEKI_TASK_MODE="${KASEKI_TASK_MODE:-patch}"
|
|
19
20
|
KASEKI_ALLOW_EMPTY_DIFF="${KASEKI_ALLOW_EMPTY_DIFF:-0}"
|
|
@@ -23,6 +24,7 @@ KASEKI_MAX_DIFF_BYTES="${KASEKI_MAX_DIFF_BYTES:-200000}"
|
|
|
23
24
|
KASEKI_REPO_MEMORY_MODE="${KASEKI_REPO_MEMORY_MODE:-off}"
|
|
24
25
|
KASEKI_REPO_MEMORY_TTL_DAYS="${KASEKI_REPO_MEMORY_TTL_DAYS:-30}"
|
|
25
26
|
KASEKI_REPO_MEMORY_MAX_BYTES="${KASEKI_REPO_MEMORY_MAX_BYTES:-8000}"
|
|
27
|
+
KASEKI_REPO_MEMORY_ROOT="${KASEKI_REPO_MEMORY_ROOT:-/cache/repo-memory}"
|
|
26
28
|
TASK_PROMPT="${TASK_PROMPT:-Make normalizeRole treat a non-string Name fallback safely when FriendlyName is empty or missing. It should fall back to \"Unnamed Role\" instead of preserving arbitrary truthy non-string values. Add or update exactly one compact table-driven Vitest case in tests/parser.validation.ts, with a neutral static test title and no per-case assertion messages or explanatory comments. Do not add broad repeated test blocks. Do not print, inspect, or expose environment variables, secrets, credentials, or API keys. Keep changes limited to the source and test files needed for this fix.}"
|
|
27
29
|
KASEKI_AGENT_GUARDRAILS="${KASEKI_AGENT_GUARDRAILS:-1}"
|
|
28
30
|
KASEKI_RESTORE_DISALLOWED_CHANGES="${KASEKI_RESTORE_DISALLOWED_CHANGES:-1}"
|
|
@@ -1171,7 +1173,7 @@ init_repo_memory_paths() {
|
|
|
1171
1173
|
return 0
|
|
1172
1174
|
fi
|
|
1173
1175
|
REPO_MEMORY_KEY="$(compute_repo_memory_key)"
|
|
1174
|
-
REPO_MEMORY_DIR="
|
|
1176
|
+
REPO_MEMORY_DIR="$KASEKI_REPO_MEMORY_ROOT/$REPO_MEMORY_KEY"
|
|
1175
1177
|
REPO_MEMORY_FILE="$REPO_MEMORY_DIR/summary.md"
|
|
1176
1178
|
REPO_MEMORY_STATUS="enabled"
|
|
1177
1179
|
}
|
|
@@ -1222,10 +1224,10 @@ write_repo_memory_summary() {
|
|
|
1222
1224
|
local updated_at
|
|
1223
1225
|
REPO_MEMORY_COMMIT_SHA="$(git -C /workspace/repo rev-parse HEAD 2>/dev/null || printf 'unknown')"
|
|
1224
1226
|
updated_at="$(date -u +%Y-%m-%dT%H:%M:%SZ)"
|
|
1225
|
-
node - "$KASEKI_REPO_MEMORY_MAX_BYTES" "$REPO_MEMORY_FILE" "$REPO_URL" "$GIT_REF" "$REPO_MEMORY_COMMIT_SHA" "$updated_at" "$KASEKI_TASK_MODE" "$STATUS" "$PI_EXIT" "$VALIDATION_EXIT" "$QUALITY_EXIT" "$SECRET_SCAN_EXIT" <<'NODE' || {
|
|
1227
|
+
node - "$KASEKI_REPO_MEMORY_MAX_BYTES" "$REPO_MEMORY_FILE" "$KASEKI_RESULTS_DIR" "$REPO_URL" "$GIT_REF" "$REPO_MEMORY_COMMIT_SHA" "$updated_at" "$KASEKI_TASK_MODE" "$STATUS" "$PI_EXIT" "$VALIDATION_EXIT" "$QUALITY_EXIT" "$SECRET_SCAN_EXIT" <<'NODE' || {
|
|
1226
1228
|
const fs = require('fs');
|
|
1227
1229
|
const path = require('path');
|
|
1228
|
-
const [maxBytesArg, outputFile, repoUrl, gitRef, commitSha, timestamp, taskMode, status, piExit, validationExit, qualityExit, secretScanExit] = process.argv.slice(2);
|
|
1230
|
+
const [maxBytesArg, outputFile, resultsDir, repoUrl, gitRef, commitSha, timestamp, taskMode, status, piExit, validationExit, qualityExit, secretScanExit] = process.argv.slice(2);
|
|
1229
1231
|
const maxBytes = Math.max(1024, Number(maxBytesArg) || 8000);
|
|
1230
1232
|
|
|
1231
1233
|
function readFile(file, maxChars = 12000) {
|
|
@@ -1255,7 +1257,7 @@ function compactLines(text, limit = 16) {
|
|
|
1255
1257
|
}
|
|
1256
1258
|
|
|
1257
1259
|
function changedFiles() {
|
|
1258
|
-
return sanitize(readFile('
|
|
1260
|
+
return sanitize(readFile(path.join(resultsDir, 'changed-files.txt'), 4000))
|
|
1259
1261
|
.split(/\r?\n/)
|
|
1260
1262
|
.map((line) => line.trim())
|
|
1261
1263
|
.filter(Boolean)
|
|
@@ -1263,7 +1265,7 @@ function changedFiles() {
|
|
|
1263
1265
|
}
|
|
1264
1266
|
|
|
1265
1267
|
function validationOutcomes() {
|
|
1266
|
-
const rows = sanitize(readFile('
|
|
1268
|
+
const rows = sanitize(readFile(path.join(resultsDir, 'validation-timings.tsv'), 8000))
|
|
1267
1269
|
.split(/\r?\n/)
|
|
1268
1270
|
.map((line) => line.split('\t'))
|
|
1269
1271
|
.filter((parts) => parts.length >= 2 && parts[0]);
|
|
@@ -1271,8 +1273,8 @@ function validationOutcomes() {
|
|
|
1271
1273
|
return rows.slice(0, 20).map(([command, exitCode, duration]) => `${command}: exit ${exitCode}${duration ? `, ${duration}s` : ''}`);
|
|
1272
1274
|
}
|
|
1273
1275
|
|
|
1274
|
-
const resultLines = compactLines(readFile('
|
|
1275
|
-
const analysisLines = compactLines(readFile('
|
|
1276
|
+
const resultLines = compactLines(readFile(path.join(resultsDir, 'result-summary.md')));
|
|
1277
|
+
const analysisLines = compactLines(readFile(path.join(resultsDir, 'analysis.md')), 10);
|
|
1276
1278
|
const files = changedFiles();
|
|
1277
1279
|
const validations = validationOutcomes();
|
|
1278
1280
|
|
|
@@ -2032,7 +2034,7 @@ else
|
|
|
2032
2034
|
unset agent_prompt
|
|
2033
2035
|
PI_DURATION_SECONDS=$(($(date +%s) - PI_START_EPOCH))
|
|
2034
2036
|
unset OPENROUTER_API_KEY openrouter_api_key openrouter_api_key_source
|
|
2035
|
-
set
|
|
2037
|
+
set +e
|
|
2036
2038
|
record_stage_timing "pi coding agent" "$PI_EXIT" "$PI_DURATION_SECONDS" "timeout_seconds=$KASEKI_AGENT_TIMEOUT_SECONDS"
|
|
2037
2039
|
|
|
2038
2040
|
if [ "$KASEKI_DEBUG_RAW_EVENTS" = "1" ]; then
|
|
@@ -2074,7 +2076,7 @@ else
|
|
|
2074
2076
|
set +e
|
|
2075
2077
|
kaseki-pi-event-filter "$RAW_EVENTS" /results/pi-events.jsonl /results/pi-summary.json
|
|
2076
2078
|
FILTER_EXIT=$?
|
|
2077
|
-
set
|
|
2079
|
+
set +e
|
|
2078
2080
|
fi
|
|
2079
2081
|
if [ "$FILTER_EXIT" -ne 0 ]; then
|
|
2080
2082
|
printf 'pi-event-filter failed with exit %s; raw events preserved as fallback artifact\n' "$FILTER_EXIT" | tee -a /results/quality.log
|
|
@@ -2298,7 +2300,7 @@ else
|
|
|
2298
2300
|
if [ -n "$VALIDATION_FAILED_COMMAND_DETAIL" ]; then
|
|
2299
2301
|
printf 'Validation failed: %s\n' "$VALIDATION_FAILED_COMMAND_DETAIL" | tee -a /results/validation.log
|
|
2300
2302
|
fi
|
|
2301
|
-
set
|
|
2303
|
+
set +e
|
|
2302
2304
|
fi
|
|
2303
2305
|
record_stage_timing "validation" "$VALIDATION_EXIT" "$(($(date +%s) - stage_start))" ""
|
|
2304
2306
|
fi
|
|
@@ -2342,12 +2344,25 @@ emit_progress "secret scan" "finished with exit $SECRET_SCAN_EXIT"
|
|
|
2342
2344
|
|
|
2343
2345
|
build_github_skip_reasons() {
|
|
2344
2346
|
GITHUB_SKIP_REASONS=()
|
|
2345
|
-
[ "$GITHUB_APP_ENABLED" != "1" ]
|
|
2346
|
-
|
|
2347
|
-
|
|
2348
|
-
[ "$
|
|
2349
|
-
|
|
2350
|
-
|
|
2347
|
+
if [ "$GITHUB_APP_ENABLED" != "1" ]; then
|
|
2348
|
+
GITHUB_SKIP_REASONS+=("github_app_disabled")
|
|
2349
|
+
fi
|
|
2350
|
+
if [ "$PI_EXIT" -ne 0 ]; then
|
|
2351
|
+
GITHUB_SKIP_REASONS+=("agent_failed")
|
|
2352
|
+
fi
|
|
2353
|
+
if [ "$VALIDATION_EXIT" -ne 0 ]; then
|
|
2354
|
+
GITHUB_SKIP_REASONS+=("validation_failed")
|
|
2355
|
+
fi
|
|
2356
|
+
if [ "$QUALITY_EXIT" -ne 0 ]; then
|
|
2357
|
+
GITHUB_SKIP_REASONS+=("quality_failed")
|
|
2358
|
+
fi
|
|
2359
|
+
if [ "$SECRET_SCAN_EXIT" -ne 0 ]; then
|
|
2360
|
+
GITHUB_SKIP_REASONS+=("secret_scan_failed")
|
|
2361
|
+
fi
|
|
2362
|
+
if [ "$DIFF_NONEMPTY" != "true" ]; then
|
|
2363
|
+
GITHUB_SKIP_REASONS+=("empty_diff")
|
|
2364
|
+
fi
|
|
2365
|
+
return 0
|
|
2351
2366
|
}
|
|
2352
2367
|
|
|
2353
2368
|
printf '\n==> github operations\n'
|
package/package.json
CHANGED