@cyanautomation/kaseki-agent 1.43.0 → 1.44.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.
@@ -1 +1 @@
1
- {"version":3,"file":"artifact-metadata.d.ts","sourceRoot":"","sources":["../src/artifact-metadata.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,0BAA0B,EAAwB,MAAM,oBAAoB,CAAC;AAEtF;;;GAGG;AACH,eAAO,MAAM,0BAA0B,EAAE,MAAM,CAAC,MAAM,EAAE,0BAA0B,CA+QjF,CAAC"}
1
+ {"version":3,"file":"artifact-metadata.d.ts","sourceRoot":"","sources":["../src/artifact-metadata.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,0BAA0B,EAAwB,MAAM,oBAAoB,CAAC;AAEtF;;;GAGG;AACH,eAAO,MAAM,0BAA0B,EAAE,MAAM,CAAC,MAAM,EAAE,0BAA0B,CAiSjF,CAAC"}
@@ -131,12 +131,28 @@ export const ARTIFACT_METADATA_REGISTRY = {
131
131
  sizeHint: 'medium',
132
132
  },
133
133
  // Validation & quality
134
+ 'pre-validation.log': {
135
+ name: 'pre-validation.log',
136
+ contentType: 'text/plain',
137
+ description: 'Pre-agent validation command output and baseline failure diagnostics',
138
+ availability: ArtifactAvailability.CONDITIONAL,
139
+ triageOrder: 10,
140
+ sizeHint: 'medium',
141
+ },
142
+ 'pre-validation-timings.tsv': {
143
+ name: 'pre-validation-timings.tsv',
144
+ contentType: 'text/tab-separated-values',
145
+ description: 'Per-command pre-agent validation timing: command, start, end, elapsed seconds',
146
+ availability: ArtifactAvailability.CONDITIONAL,
147
+ triageOrder: 20,
148
+ sizeHint: 'small',
149
+ },
134
150
  'validation.log': {
135
151
  name: 'validation.log',
136
152
  contentType: 'text/plain',
137
153
  description: 'Validation command output and results',
138
154
  availability: ArtifactAvailability.ON_FAILURE,
139
- triageOrder: 10,
155
+ triageOrder: 11,
140
156
  sizeHint: 'medium',
141
157
  },
142
158
  'validation-timings.tsv': {
@@ -144,7 +160,7 @@ export const ARTIFACT_METADATA_REGISTRY = {
144
160
  contentType: 'text/tab-separated-values',
145
161
  description: 'Per-command timing: command, start, end, elapsed seconds',
146
162
  availability: ArtifactAvailability.CONDITIONAL,
147
- triageOrder: 20,
163
+ triageOrder: 21,
148
164
  sizeHint: 'small',
149
165
  },
150
166
  'quality.log': {
@@ -152,7 +168,7 @@ export const ARTIFACT_METADATA_REGISTRY = {
152
168
  contentType: 'text/plain',
153
169
  description: 'Quality gate evaluation: diff size, changed files, allowlist checks',
154
170
  availability: ArtifactAvailability.ON_FAILURE,
155
- triageOrder: 11,
171
+ triageOrder: 12,
156
172
  sizeHint: 'small',
157
173
  },
158
174
  'stage-timings.tsv': {
@@ -160,7 +176,7 @@ export const ARTIFACT_METADATA_REGISTRY = {
160
176
  contentType: 'text/tab-separated-values',
161
177
  description: 'Per-stage timing: stage name, start, end, elapsed seconds',
162
178
  availability: ArtifactAvailability.CONDITIONAL,
163
- triageOrder: 21,
179
+ triageOrder: 22,
164
180
  sizeHint: 'small',
165
181
  },
166
182
  // Repository changes
@@ -1 +1 @@
1
- {"version":3,"file":"artifact-metadata.js","sourceRoot":"","sources":["../src/artifact-metadata.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"artifact-metadata.js","sourceRoot":"","sources":["../src/artifact-metadata.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"kaseki-api-web.d.ts","sourceRoot":"","sources":["../src/kaseki-api-web.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAqsBjC,wBAAgB,eAAe,IAAI,MAAM,CAQxC"}
1
+ {"version":3,"file":"kaseki-api-web.d.ts","sourceRoot":"","sources":["../src/kaseki-api-web.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAy1BjC,wBAAgB,eAAe,IAAI,MAAM,CAQxC"}
@@ -32,6 +32,62 @@ const controllerPage = String.raw `<!doctype html>
32
32
  color: var(--ink);
33
33
  font: 16px/1.5 system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
34
34
  }
35
+ .header-bar {
36
+ background: var(--panel);
37
+ border-bottom: 1px solid var(--line);
38
+ padding: var(--space-3) var(--space-3);
39
+ display: flex;
40
+ align-items: center;
41
+ gap: var(--space-3);
42
+ justify-content: space-between;
43
+ }
44
+ .header-bar h1 {
45
+ margin: 0;
46
+ font-size: clamp(24px, 4vw, 32px);
47
+ line-height: 1.2;
48
+ }
49
+ .header-bar-title {
50
+ display: flex;
51
+ align-items: center;
52
+ gap: var(--space-2);
53
+ }
54
+ .header-token-input {
55
+ min-width: 200px;
56
+ max-width: 300px;
57
+ width: auto;
58
+ padding: 10px 11px;
59
+ font-size: 14px;
60
+ }
61
+ @media (max-width: 767px) {
62
+ .header-token-input {
63
+ min-width: 160px;
64
+ max-width: 100%;
65
+ }
66
+ }
67
+ .status-indicator {
68
+ display: inline-flex;
69
+ align-items: center;
70
+ justify-content: center;
71
+ width: 12px;
72
+ height: 12px;
73
+ border-radius: 50%;
74
+ background: var(--muted);
75
+ flex-shrink: 0;
76
+ }
77
+ .status-indicator.running {
78
+ background: #e8b923;
79
+ animation: pulse 1s ease-in-out infinite;
80
+ }
81
+ .status-indicator.completed {
82
+ background: var(--ok);
83
+ }
84
+ .status-indicator.failed {
85
+ background: var(--bad);
86
+ }
87
+ @keyframes pulse {
88
+ 0%, 100% { opacity: 1; }
89
+ 50% { opacity: 0.6; }
90
+ }
35
91
  main {
36
92
  display: grid;
37
93
  gap: var(--space-4);
@@ -41,7 +97,6 @@ const controllerPage = String.raw `<!doctype html>
41
97
  padding: var(--space-3);
42
98
  }
43
99
  h1, h2 { margin: 0; }
44
- h1 { font-size: clamp(28px, 5vw, 44px); line-height: 1.12; }
45
100
  h2 { font-size: clamp(20px, 2.2vw, 24px); line-height: 1.2; }
46
101
  p { color: var(--muted); font-size: 16px; line-height: 1.5; margin: var(--space-1) 0 0; }
47
102
  .panel {
@@ -178,6 +233,9 @@ const controllerPage = String.raw `<!doctype html>
178
233
  #state.ok { color: var(--ok); }
179
234
  #state.bad { color: var(--bad); }
180
235
  @media (min-width: 768px) {
236
+ .header-bar {
237
+ padding: clamp(var(--space-3), 2vw, 24px) clamp(var(--space-3), 4vw, 48px);
238
+ }
181
239
  main {
182
240
  grid-template-columns: minmax(320px, 560px) minmax(320px, 1fr);
183
241
  padding: clamp(var(--space-3), 4vw, 48px);
@@ -270,19 +328,23 @@ const controllerPage = String.raw `<!doctype html>
270
328
  .health-check-status.bad::before { content: '✕'; }
271
329
  @media (max-width: 767px) {
272
330
  .action-row.run-actions > .run { order: 1; }
273
- .response-panel { min-height: 52vh; }
331
+ .response-panel { min-height: 40vh; }
274
332
  .health-checks-grid { grid-template-columns: repeat(2, 1fr); }
333
+ main {
334
+ grid-template-columns: minmax(0, 1fr);
335
+ }
275
336
  }
276
337
  </style>
277
338
  </head>
278
339
  <body>
340
+ <header class="header-bar">
341
+ <div class="header-bar-title">
342
+ <h1>Kaseki Task Console</h1>
343
+ <span class="status-indicator" id="header-status" data-status="idle"></span>
344
+ </div>
345
+ <input id="header-api-token" class="header-token-input" type="password" autocomplete="off" placeholder="API bearer token (required)" aria-label="API bearer token">
346
+ </header>
279
347
  <main>
280
- <section class="panel" aria-labelledby="page-title">
281
- <header>
282
- <h1 id="page-title">Kaseki Task Console</h1>
283
- <p>Check system health and submit repository tasks to the Kaseki API controller.</p>
284
- </header>
285
- </section>
286
348
  <section class="panel stack" aria-labelledby="tabs-heading">
287
349
  <div class="tabs-nav" role="tablist" aria-label="Console tabs">
288
350
  <button class="tab-button active" data-tab="health" role="tab" aria-selected="true" aria-controls="health-tab">Health</button>
@@ -332,12 +394,7 @@ const controllerPage = String.raw `<!doctype html>
332
394
  <fieldset class="form-fields">
333
395
  <legend>Required information</legend>
334
396
  <div class="form-field">
335
- <label for="token">API bearer token</label>
336
- <input id="token" name="token" type="password" autocomplete="off" placeholder="Required to submit tasks">
337
- <p class="field-helper">Stored in this tab only after a successful request.</p>
338
- <p class="field-error" data-error-for="token" aria-live="polite"></p>
339
- </div>
340
- <div class="form-field">
397
+
341
398
  <label for="repo-url">Repository URL</label>
342
399
  <input id="repo-url" name="repoUrl" type="url" required placeholder="https://github.com/org/repo">
343
400
  <p class="field-error" data-error-for="repoUrl" aria-live="polite"></p>
@@ -411,6 +468,10 @@ const controllerPage = String.raw `<!doctype html>
411
468
  <a data-run-link="stdout" href="#">Stdout</a>
412
469
  <a data-run-link="artifacts" href="#">Artifacts</a>
413
470
  </div>
471
+ <div class="recommended-artifacts" id="recommended-artifacts" hidden>
472
+ <span class="summary-label">Recommended artifacts</span>
473
+ <div class="link-grid" id="recommended-artifact-links"></div>
474
+ </div>
414
475
  </div>
415
476
  <div class="response-panel">
416
477
  <p class="response-meta" id="output-meta" aria-live="polite">Status: idle</p>
@@ -423,11 +484,45 @@ const controllerPage = String.raw `<!doctype html>
423
484
  const output = document.querySelector('#output');
424
485
  const outputMeta = document.querySelector('#output-meta');
425
486
  const state = document.querySelector('#state');
426
- const tokenInput = document.querySelector('#token');
487
+ const headerTokenInput = document.querySelector('#header-api-token');
427
488
  const runIdInput = document.querySelector('#run-id');
428
489
  const runLinks = document.querySelector('#run-links');
490
+ const recommendedArtifacts = document.querySelector('#recommended-artifacts');
491
+ const recommendedArtifactLinks = document.querySelector('#recommended-artifact-links');
492
+ const headerStatus = document.querySelector('#header-status');
429
493
  let pollTimer = null;
430
- tokenInput.value = sessionStorage.getItem('kasekiApiToken') || '';
494
+
495
+ function getApiToken() {
496
+ return headerTokenInput.value.trim();
497
+ }
498
+
499
+ // Restore token from session storage on page load
500
+ headerTokenInput.value = sessionStorage.getItem('kasekiApiToken') || '';
501
+
502
+ // Save token to session storage when it changes
503
+ headerTokenInput.addEventListener('change', () => {
504
+ const token = getApiToken();
505
+ if (token) {
506
+ sessionStorage.setItem('kasekiApiToken', token);
507
+ } else {
508
+ sessionStorage.removeItem('kasekiApiToken');
509
+ }
510
+ });
511
+
512
+ function updateHeaderStatus(status) {
513
+ if (!headerStatus) return;
514
+ const statusMap = {
515
+ 'idle': 'idle',
516
+ 'running': 'running',
517
+ 'queued': 'running',
518
+ 'completed': 'completed',
519
+ 'failed': 'failed',
520
+ 'request ok': 'idle',
521
+ };
522
+ const statusClass = statusMap[status] || 'idle';
523
+ headerStatus.className = 'status-indicator ' + statusClass;
524
+ headerStatus.setAttribute('data-status', statusClass);
525
+ }
431
526
 
432
527
  function sanitizeOutput(value) {
433
528
  if (typeof value === 'string') return value;
@@ -449,6 +544,15 @@ const controllerPage = String.raw `<!doctype html>
449
544
 
450
545
  function setOutputMetadata(status, runId) {
451
546
  outputMeta.textContent = 'Status: ' + status + (runId ? ' | Run ID: ' + runId : '');
547
+ updateHeaderStatus(status);
548
+ }
549
+
550
+ function responseStatusLabel(response, payload) {
551
+ if (!response.ok) return 'failed';
552
+ if (payload && typeof payload === 'object' && typeof payload.status === 'string') {
553
+ return payload.status;
554
+ }
555
+ return 'request ok';
452
556
  }
453
557
 
454
558
  function setOutputBody(text) {
@@ -482,6 +586,41 @@ const controllerPage = String.raw `<!doctype html>
482
586
  runLinks.hidden = false;
483
587
  }
484
588
 
589
+ function artifactUrl(runId, fileName) {
590
+ return '/api/results/' + encodeURIComponent(runId) + '/' + encodeURIComponent(fileName);
591
+ }
592
+
593
+ function showRecommendedArtifacts(runId, artifactsResponse) {
594
+ if (!recommendedArtifacts || !recommendedArtifactLinks || !runId) return;
595
+ const recommended = artifactsResponse && Array.isArray(artifactsResponse.recommended)
596
+ ? artifactsResponse.recommended
597
+ : [];
598
+ recommendedArtifactLinks.replaceChildren();
599
+ if (recommended.length === 0) {
600
+ recommendedArtifacts.hidden = true;
601
+ return;
602
+ }
603
+ recommended.forEach((fileName) => {
604
+ const link = document.createElement('a');
605
+ link.href = artifactUrl(runId, fileName);
606
+ link.textContent = fileName;
607
+ recommendedArtifactLinks.appendChild(link);
608
+ });
609
+ recommendedArtifacts.hidden = false;
610
+ }
611
+
612
+ async function loadRecommendedArtifacts(runId) {
613
+ if (!runId) return;
614
+ try {
615
+ const result = await apiRequest(runUrl(runId, '/artifacts'), { auth: true, preserveOutput: true });
616
+ if (result.response.ok) {
617
+ showRecommendedArtifacts(runId, result.payload);
618
+ }
619
+ } catch {
620
+ if (recommendedArtifacts) recommendedArtifacts.hidden = true;
621
+ }
622
+ }
623
+
485
624
  function isTerminalStatus(status) {
486
625
  return status === 'completed' || status === 'failed';
487
626
  }
@@ -537,9 +676,9 @@ const controllerPage = String.raw `<!doctype html>
537
676
  }
538
677
 
539
678
  async function apiRequest(path, options) {
540
- const token = tokenInput.value.trim();
679
+ const token = getApiToken();
541
680
  const needsAuth = options && options.auth;
542
- if (needsAuth && !token) throw new Error('Enter the API bearer token first.');
681
+ if (needsAuth && !token) throw new Error('Enter the API bearer token in the header first.');
543
682
  if (needsAuth && token && !isLikelyBearerToken(token)) {
544
683
  throw new Error('Token format looks invalid. Use a plain bearer token without spaces.');
545
684
  }
@@ -557,18 +696,24 @@ const controllerPage = String.raw `<!doctype html>
557
696
  const runId = payload && typeof payload.id === 'string'
558
697
  ? payload.id
559
698
  : String(runIdInput.value || '').trim();
560
- setOutputMetadata(response.ok ? 'completed' : 'failed', runId || undefined);
561
- setOutputBody(JSON.stringify({
562
- method: options && options.method || 'GET',
563
- path,
564
- status: response.status,
565
- response: payload,
566
- }, null, 2));
567
- setState(response.ok ? 'Request completed.' : 'Request failed.', response.ok ? 'ok' : 'bad');
699
+ const statusLabel = responseStatusLabel(response, payload);
700
+ if (!(options && options.preserveOutput)) {
701
+ setOutputMetadata(statusLabel, runId || undefined);
702
+ setOutputBody(JSON.stringify({
703
+ method: options && options.method || 'GET',
704
+ path,
705
+ status: response.status,
706
+ response: payload,
707
+ }, null, 2));
708
+ setState(response.ok ? (runId ? 'Run status updated.' : 'Request completed.') : 'Request failed.', response.ok ? 'ok' : 'bad');
709
+ }
568
710
  if (response.ok && payload && typeof payload === 'object') {
569
711
  summarizeHealth(path, payload);
570
712
  summarizeRun(payload);
571
713
  if (runId) showRunLinks(runId);
714
+ if (runId && payload.status && isTerminalStatus(payload.status)) {
715
+ loadRecommendedArtifacts(runId);
716
+ }
572
717
  }
573
718
  return { payload, response };
574
719
  }
@@ -637,6 +782,9 @@ const controllerPage = String.raw `<!doctype html>
637
782
  const savedTab = sessionStorage.getItem('kasekiActiveTab') || 'health';
638
783
  const savedTabButton = document.querySelector('[data-tab="' + savedTab + '"]');
639
784
  if (savedTabButton) savedTabButton.click();
785
+
786
+ // Initialize header status
787
+ updateHeaderStatus('idle');
640
788
 
641
789
  // Health check button handlers
642
790
  document.querySelectorAll('[data-probe]').forEach((button) => {
@@ -1 +1 @@
1
- {"version":3,"file":"kaseki-api-web.js","sourceRoot":"","sources":["../src/kaseki-api-web.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAisBhC,CAAC;AAEF,MAAM,UAAU,eAAe;IAC7B,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC;IACxB,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QACrC,GAAG,CAAC,GAAG,CAAC,yBAAyB,EAAE,2JAA2J,CAAC,CAAC;QAChM,GAAG,CAAC,GAAG,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC;QAC1C,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"kaseki-api-web.js","sourceRoot":"","sources":["../src/kaseki-api-web.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAq1BhC,CAAC;AAEF,MAAM,UAAU,eAAe;IAC7B,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC;IACxB,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QACrC,GAAG,CAAC,GAAG,CAAC,yBAAyB,EAAE,2JAA2J,CAAC,CAAC;QAChM,GAAG,CAAC,GAAG,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC;QAC1C,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC"}
package/kaseki-agent.sh CHANGED
@@ -1226,6 +1226,21 @@ record_skipped_validation_command() {
1226
1226
  printf '%s\tskipped\t%s\tmissing_npm_script=%s\n' "$command" "$duration_seconds" "$script_name" >> "$timings_file"
1227
1227
  }
1228
1228
 
1229
+ append_validation_failure_tail() {
1230
+ local raw_log="$1"
1231
+ local visible_log="$2"
1232
+ local quality_log="${3:-/results/quality.log}"
1233
+
1234
+ if ! [ -s "$raw_log" ]; then
1235
+ return 0
1236
+ fi
1237
+
1238
+ {
1239
+ printf '\n[DIAGNOSTICS] Raw validation output tail (last 80 lines):\n'
1240
+ tail -80 "$raw_log" 2>/dev/null || printf '<failed to read raw validation log>\n'
1241
+ } | tee -a "$visible_log" "$quality_log" >/dev/null
1242
+ }
1243
+
1229
1244
  run_validation_commands() {
1230
1245
  local stage_label="$1"
1231
1246
  local commands="$2"
@@ -1409,6 +1424,7 @@ run_validation_commands() {
1409
1424
  validation_detail_ref="first failing command was \"$trimmed\" with exit $command_exit"
1410
1425
  # shellcheck disable=SC2034 # Reference variable assigned for external use via nameref
1411
1426
  validation_reason_ref="$failure_reason_prefix: $trimmed (exit $command_exit)"
1427
+ append_validation_failure_tail "$raw_log" "$log_file"
1412
1428
  # Enhanced diagnostics for getcwd-type errors.
1413
1429
  if grep -q 'getcwd\|No such file or directory\|cannot access parent directories' "$log_file"; then
1414
1430
  {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cyanautomation/kaseki-agent",
3
- "version": "1.43.0",
3
+ "version": "1.44.0",
4
4
  "description": "Admin/helper/doctor toolbox and local API client for Kaseki diagnostics, setup, and API-backed coding-agent task workflows",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -47,7 +47,7 @@
47
47
  "generate:openapi": "node scripts/generate-openapi-spec.js",
48
48
  "build": "tsc && node dist/add-js-extensions.js && npm run generate:openapi && npm run check:dist-dynamic-imports && chmod 0755 dist/*.js",
49
49
  "prepublishOnly": "npm run build",
50
- "type-check": "tsc --noEmit",
50
+ "type-check": "tsc --noEmit -p tsconfig.json",
51
51
  "check": "npm run type-check && npm run lint",
52
52
  "test": "npm run test:unit",
53
53
  "test:unit": "jest --passWithNoTests",