@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 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 `/cache/repo-memory/<repo-key>/summary.md`, where `<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`.
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
 
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
- export {};
2
+ export declare function generateKasekiReport(resultDir: string): string;
3
3
  //# sourceMappingURL=kaseki-report.d.ts.map
@@ -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"}
@@ -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
- const resultDir = process.argv[2] ?? '/results';
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 printList(title, values) {
46
- console.log(`${title}:`);
45
+ function appendList(lines, title, values) {
46
+ lines.push(`${title}:`);
47
47
  if (values.length === 0) {
48
- console.log(' none');
48
+ lines.push(' none');
49
49
  return;
50
50
  }
51
51
  for (const value of values)
52
- console.log(` ${value}`);
52
+ lines.push(` ${value}`);
53
53
  }
54
- if (!fs.existsSync(resultDir)) {
55
- console.error(`Result directory not found: ${resultDir}`);
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
- const { restored: restoredCount, kept: keptCount } = parseRestorationMetrics();
95
- const normalizedExitCode = normalizeExitCode(metadata.exit_code);
96
- const status = normalizedExitCode === 0 ? 'passed' : 'failed';
97
- const resultName = metadata.instance || path.basename(resultDir);
98
- const nextDiagnostic = normalizedExitCode === 0
99
- ? 'none'
100
- : firstReadableNonEmpty([
101
- 'failure.json',
102
- 'quality.log',
103
- 'secret-scan.log',
104
- 'pi-stderr.log',
105
- 'validation.log',
106
- 'preflight-git.log',
107
- 'stderr.log',
108
- ])?.name ?? 'metadata.json';
109
- console.log(`Kaseki result: ${resultName}`);
110
- console.log(`Status: ${status}`);
111
- console.log(`Failed command: ${metadata.failed_command || 'none'}`);
112
- console.log(`Exit code: ${printableExitCode(metadata.exit_code)}`);
113
- console.log(`Pi exit code: ${printableExitCode(metadata.pi_exit_code)}`);
114
- console.log(`Validation exit code: ${printableExitCode(metadata.validation_exit_code)}`);
115
- console.log(`Validation failed command: ${metadata.validation_failed_command || 'none'}`);
116
- if (metadata.validation_stopped_early) {
117
- console.log(`⚠️ Validation stopped early (fail-fast mode): ${metadata.validation_commands_attempted ?? 'unknown'} command(s) attempted`);
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
- console.log(`Quality exit code: ${printableExitCode(metadata.quality_exit_code)}`);
120
- console.log(`Secret scan exit code: ${printableExitCode(metadata.secret_scan_exit_code)}`);
121
- console.log(`Requested model: ${metadata.model || 'unknown'}`);
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,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AAEzE,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC;AAiChD,SAAS,QAAQ,CAAC,IAAY;IAC5B,IAAI,CAAC;QACH,OAAO,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;IAC7D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY;IAC5B,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,CAAC;IAC5B,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAe;IAC5C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;YACjE,IAAI,IAAI,CAAC,IAAI,EAAE;gBAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACzC,CAAC;QAAC,MAAM,CAAC;YACP,oDAAoD;QACtD,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAU;IACnC,OAAO,0BAA0B,CAAC,KAAK,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAU;IACnC,MAAM,UAAU,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC5C,OAAO,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,SAAS,CAAC,KAAa,EAAE,MAAgB;IAChD,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;IACzB,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACtB,OAAO;IACT,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,MAAM;QAAE,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC;AACxD,CAAC;AAED,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;IAC9B,OAAO,CAAC,KAAK,CAAC,+BAA+B,SAAS,EAAE,CAAC,CAAC;IAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,QAAQ,GAAa,QAAQ,CAAC,eAAe,CAAC,CAAC;AACrD,MAAM,OAAO,GAAc,QAAQ,CAAC,iBAAiB,CAAC,CAAC;AACvD,MAAM,YAAY,GAAG,QAAQ,CAAC,mBAAmB,CAAC;KAC/C,KAAK,CAAC,OAAO,CAAC;KACd,MAAM,CAAC,OAAO,CAAC,CAAC;AACnB,MAAM,OAAO,GAAG,QAAQ,CAAC,wBAAwB,CAAC;KAC/C,KAAK,CAAC,OAAO,CAAC;KACd,MAAM,CAAC,OAAO,CAAC,CAAC;AACnB,MAAM,YAAY,GAAG,QAAQ,CAAC,mBAAmB,CAAC;KAC/C,KAAK,CAAC,OAAO,CAAC;KACd,MAAM,CAAC,OAAO,CAAC,CAAC;AACnB,MAAM,eAAe,GAAG,QAAQ,CAAC,sBAAsB,CAAC;KACrD,KAAK,CAAC,OAAO,CAAC;KACd,MAAM,CAAC,OAAO,CAAC,CAAC;AACnB,MAAM,eAAe,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC;AASvE,SAAS,uBAAuB;IAC9B,MAAM,gBAAgB,GAAG,QAAQ,CAAC,mBAAmB,CAAC,CAAC;IACvD,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IAE9D,IAAI,QAAQ,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC;IAC3B,KAAK,MAAM,IAAI,IAAI,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAChD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YAAE,SAAS;QAC3B,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAqB,CAAC;YACnD,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU;gBAAE,QAAQ,EAAE,CAAC;iBACvC,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM;gBAAE,IAAI,EAAE,CAAC;QAC3C,CAAC;QAAC,MAAM,CAAC;YACP,yBAAyB;QAC3B,CAAC;IACH,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC5B,CAAC;AAED,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,uBAAuB,EAAE,CAAC;AAC/E,MAAM,kBAAkB,GAAG,iBAAiB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AACjE,MAAM,MAAM,GAAG,kBAAkB,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC9D,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AACjE,MAAM,cAAc,GAClB,kBAAkB,KAAK,CAAC;IACtB,CAAC,CAAC,MAAM;IACR,CAAC,CAAC,qBAAqB,CAAC;QACtB,cAAc;QACd,aAAa;QACb,iBAAiB;QACjB,eAAe;QACf,gBAAgB;QAChB,mBAAmB;QACnB,YAAY;KACb,CAAC,EAAE,IAAI,IAAI,eAAe,CAAC;AAEhC,OAAO,CAAC,GAAG,CAAC,kBAAkB,UAAU,EAAE,CAAC,CAAC;AAC5C,OAAO,CAAC,GAAG,CAAC,WAAW,MAAM,EAAE,CAAC,CAAC;AACjC,OAAO,CAAC,GAAG,CAAC,mBAAmB,QAAQ,CAAC,cAAc,IAAI,MAAM,EAAE,CAAC,CAAC;AACpE,OAAO,CAAC,GAAG,CAAC,cAAc,iBAAiB,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;AACnE,OAAO,CAAC,GAAG,CAAC,iBAAiB,iBAAiB,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;AACzE,OAAO,CAAC,GAAG,CACT,yBAAyB,iBAAiB,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAC5E,CAAC;AACF,OAAO,CAAC,GAAG,CACT,8BAA8B,QAAQ,CAAC,yBAAyB,IAAI,MAAM,EAAE,CAC7E,CAAC;AACF,IAAI,QAAQ,CAAC,wBAAwB,EAAE,CAAC;IACtC,OAAO,CAAC,GAAG,CACT,kDAAkD,QAAQ,CAAC,6BAA6B,IAAI,SAAS,uBAAuB,CAC7H,CAAC;AACJ,CAAC;AACD,OAAO,CAAC,GAAG,CAAC,sBAAsB,iBAAiB,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;AACnF,OAAO,CAAC,GAAG,CACT,0BAA0B,iBAAiB,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,CAC9E,CAAC;AACF,OAAO,CAAC,GAAG,CAAC,oBAAoB,QAAQ,CAAC,KAAK,IAAI,SAAS,EAAE,CAAC,CAAC;AAC/D,OAAO,CAAC,GAAG,CACT,iBAAiB,QAAQ,CAAC,YAAY,IAAI,OAAO,CAAC,cAAc,IAAI,SAAS,EAAE,CAChF,CAAC;AACF,OAAO,CAAC,GAAG,CAAC,eAAe,QAAQ,CAAC,UAAU,IAAI,SAAS,EAAE,CAAC,CAAC;AAC/D,OAAO,CAAC,GAAG,CAAC,qBAAqB,QAAQ,CAAC,gBAAgB,IAAI,SAAS,EAAE,CAAC,CAAC;AAC3E,OAAO,CAAC,GAAG,CACT,2BAA2B,QAAQ,CAAC,mBAAmB,IAAI,SAAS,EAAE,CACvE,CAAC;AACF,OAAO,CAAC,GAAG,CAAC,mBAAmB,QAAQ,CAAC,aAAa,IAAI,SAAS,EAAE,CAAC,CAAC;AACtE,SAAS,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;AACzC,IAAI,aAAa,GAAG,CAAC,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;IACvC,MAAM,UAAU,GAAG,aAAa,GAAG,SAAS,CAAC;IAC7C,MAAM,QAAQ,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,GAAG,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjF,OAAO,CAAC,GAAG,CAAC,uBAAuB,SAAS,IAAI,UAAU,WAAW,QAAQ,IAAI,CAAC,CAAC;IACnF,OAAO,CAAC,GAAG,CAAC,mBAAmB,aAAa,EAAE,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,iCAAiC,SAAS,EAAE,CAAC,CAAC;AAC5D,CAAC;AACD,SAAS,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;AACzC,SAAS,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC;AACzC,SAAS,CAAC,kBAAkB,EAAE,eAAe,CAAC,CAAC;AAC/C,OAAO,CAAC,GAAG,CAAC,sBAAsB,eAAe,EAAE,CAAC,CAAC;AACrD,OAAO,CAAC,GAAG,CAAC,oBAAoB,cAAc,EAAE,CAAC,CAAC"}
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 { formatProgressMessage, EventSampler, extractFilePath, detectError, formatElapsed, truncate, } from './pi-progress-summarizer.js';
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 workingMsg = `working; events=${eventTotal()}, tool starts=${toolStartCount}, tool ends=${toolEndCount}`;
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, 100);
134
+ : String(content).substring(0, 200);
135
+ // Try to extract topic first (more concise)
118
136
  if (contentText.length > 10) {
119
- detail = truncate(contentText, 60);
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 = formatProgressMessage('pi coding agent', 'processing', detail, undefined, elapsed);
124
- if (message && message.length > 0) {
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
- const startMsg = `started ${tool}`;
158
- emit('pi tool', startMsg, { type, toolStartCount });
180
+ // Aggregate tool calls instead of emitting individual start messages
159
181
  if (enableSummarization) {
160
- emitToolSummary(event, tool, true);
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
- const endMsg = `finished ${tool}`;
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":"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"}
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":"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"}
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 | node validation-output-filter.js | tee -a logfile.log
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
- export {};
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":"AAAA;;;;;;;;;;;;;;;GAeG"}
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 | node validation-output-filter.js | tee -a logfile.log
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
- const state = {
19
- inCommand: false,
20
- commandNumber: 0,
21
- firstLineOfCommand: null,
22
- linesSinceCommandStart: 0,
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
- output(line); // Always show command start
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
- output(line);
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
- output(line);
160
+ return line;
160
161
  }
162
+ return null;
161
163
  }
162
164
  /**
163
- * Output a line to stdout
165
+ * Filter validation output and return the visible lines.
164
166
  */
165
- function output(line) {
166
- console.log(line);
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
- const rl = createInterface({
172
- input: process.stdin,
173
- output: process.stdout,
174
- terminal: false,
175
- });
176
- rl.on('line', (line) => {
177
- processLine(line);
178
- });
179
- rl.on('close', () => {
180
- process.exit(0);
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":"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"}
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="/cache/repo-memory/$REPO_MEMORY_KEY"
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('/results/changed-files.txt', 4000))
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('/results/validation-timings.tsv', 8000))
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('/results/result-summary.md'));
1275
- const analysisLines = compactLines(readFile('/results/analysis.md'), 10);
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 -e
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 -e
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 -e
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" ] && GITHUB_SKIP_REASONS+=("github_app_disabled")
2346
- [ "$PI_EXIT" -ne 0 ] && GITHUB_SKIP_REASONS+=("agent_failed")
2347
- [ "$VALIDATION_EXIT" -ne 0 ] && GITHUB_SKIP_REASONS+=("validation_failed")
2348
- [ "$QUALITY_EXIT" -ne 0 ] && GITHUB_SKIP_REASONS+=("quality_failed")
2349
- [ "$SECRET_SCAN_EXIT" -ne 0 ] && GITHUB_SKIP_REASONS+=("secret_scan_failed")
2350
- [ "$DIFF_NONEMPTY" != "true" ] && GITHUB_SKIP_REASONS+=("empty_diff")
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cyanautomation/kaseki-agent",
3
- "version": "1.17.0",
3
+ "version": "1.19.0",
4
4
  "description": "Ephemeral coding-agent runner: orchestrates Pi CLI via Docker for automated code modifications with validation",
5
5
  "type": "module",
6
6
  "license": "MIT",