@cyanautomation/kaseki-agent 1.41.0 → 1.43.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/dist/kaseki-api-web.d.ts.map +1 -1
- package/dist/kaseki-api-web.js +225 -27
- package/dist/kaseki-api-web.js.map +1 -1
- package/package.json +1 -1
|
@@ -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;
|
|
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"}
|
package/dist/kaseki-api-web.js
CHANGED
|
@@ -82,8 +82,8 @@ const controllerPage = String.raw `<!doctype html>
|
|
|
82
82
|
outline: 3px solid color-mix(in srgb, var(--focus) 35%, transparent);
|
|
83
83
|
outline-offset: 1px;
|
|
84
84
|
}
|
|
85
|
-
.grid, .checks, .action-row, .run-status { display: grid; gap: var(--control-gap); }
|
|
86
|
-
.grid, .checks, .action-row, .run-status { grid-template-columns: minmax(0, 1fr); }
|
|
85
|
+
.grid, .checks, .action-row, .run-status, .summary-grid, .link-grid { display: grid; gap: var(--control-gap); }
|
|
86
|
+
.grid, .checks, .action-row, .run-status, .summary-grid, .link-grid { grid-template-columns: minmax(0, 1fr); }
|
|
87
87
|
.check {
|
|
88
88
|
align-items: center;
|
|
89
89
|
display: flex;
|
|
@@ -97,9 +97,46 @@ const controllerPage = String.raw `<!doctype html>
|
|
|
97
97
|
.check-helper { color: var(--muted); font-size: 14px; line-height: 1.5; }
|
|
98
98
|
.action-row { align-items: end; }
|
|
99
99
|
.action-row > button, .run-status > button { width: 100%; }
|
|
100
|
-
.action-row > button, .run-status > button { width: 100%; }
|
|
101
|
-
.action-row > button, .run-status > button { width: 100%; }
|
|
102
100
|
.run-status { grid-template-columns: minmax(0, 1fr); }
|
|
101
|
+
.summary-grid {
|
|
102
|
+
grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
|
|
103
|
+
}
|
|
104
|
+
.summary-card {
|
|
105
|
+
background: #f7faf8;
|
|
106
|
+
border: 1px solid var(--line);
|
|
107
|
+
border-radius: 8px;
|
|
108
|
+
display: grid;
|
|
109
|
+
gap: 4px;
|
|
110
|
+
min-height: 76px;
|
|
111
|
+
padding: var(--space-2);
|
|
112
|
+
}
|
|
113
|
+
.summary-label { color: var(--muted); font-size: 13px; font-weight: 650; }
|
|
114
|
+
.summary-value { color: var(--ink); font-size: 18px; font-weight: 700; overflow-wrap: anywhere; }
|
|
115
|
+
.summary-value.ok { color: var(--ok); }
|
|
116
|
+
.summary-value.bad { color: var(--bad); }
|
|
117
|
+
.run-links {
|
|
118
|
+
background: #f7faf8;
|
|
119
|
+
border: 1px solid var(--line);
|
|
120
|
+
border-radius: 8px;
|
|
121
|
+
display: grid;
|
|
122
|
+
gap: var(--space-2);
|
|
123
|
+
padding: var(--space-3);
|
|
124
|
+
}
|
|
125
|
+
.run-links[hidden] { display: none; }
|
|
126
|
+
.link-grid { grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); }
|
|
127
|
+
.link-grid a {
|
|
128
|
+
align-items: center;
|
|
129
|
+
background: #eef2ee;
|
|
130
|
+
border: 1px solid #99aaa5;
|
|
131
|
+
border-radius: 6px;
|
|
132
|
+
color: var(--ink);
|
|
133
|
+
display: inline-flex;
|
|
134
|
+
font-weight: 650;
|
|
135
|
+
justify-content: center;
|
|
136
|
+
min-height: var(--control-min-height);
|
|
137
|
+
padding: var(--control-pad);
|
|
138
|
+
text-decoration: none;
|
|
139
|
+
}
|
|
103
140
|
button {
|
|
104
141
|
background: var(--ink);
|
|
105
142
|
color: #fff;
|
|
@@ -110,6 +147,7 @@ const controllerPage = String.raw `<!doctype html>
|
|
|
110
147
|
button.secondary { background: #eef2ee; color: var(--ink); }
|
|
111
148
|
button.run { background: var(--accent); }
|
|
112
149
|
button:disabled { cursor: wait; opacity: .65; }
|
|
150
|
+
.toolbar-button { white-space: nowrap; }
|
|
113
151
|
.response-panel {
|
|
114
152
|
background: #172022;
|
|
115
153
|
border: 1px solid #2e3a3d;
|
|
@@ -259,7 +297,25 @@ const controllerPage = String.raw `<!doctype html>
|
|
|
259
297
|
<button class="health-check-button" data-probe="/health" type="button">Health<span class="health-check-status" data-status="health"></span></button>
|
|
260
298
|
<button class="health-check-button" data-probe="/ready" type="button">Readiness<span class="health-check-status" data-status="readiness"></span></button>
|
|
261
299
|
<button class="health-check-button" data-probe="/api/preflight" data-auth="true" type="button">Preflight<span class="health-check-status" data-status="preflight"></span></button>
|
|
262
|
-
<button class="health-check-button" id="status-check" type="button">Check
|
|
300
|
+
<button class="health-check-button" id="status-check" type="button">Check status<span class="health-check-status" data-status="status"></span></button>
|
|
301
|
+
</div>
|
|
302
|
+
<div class="summary-grid" id="health-summary" aria-live="polite">
|
|
303
|
+
<div class="summary-card">
|
|
304
|
+
<span class="summary-label">Controller</span>
|
|
305
|
+
<span class="summary-value" data-summary="controller">Not checked</span>
|
|
306
|
+
</div>
|
|
307
|
+
<div class="summary-card">
|
|
308
|
+
<span class="summary-label">Queue</span>
|
|
309
|
+
<span class="summary-value" data-summary="queue">Not checked</span>
|
|
310
|
+
</div>
|
|
311
|
+
<div class="summary-card">
|
|
312
|
+
<span class="summary-label">Preflight</span>
|
|
313
|
+
<span class="summary-value" data-summary="preflight">Not checked</span>
|
|
314
|
+
</div>
|
|
315
|
+
<div class="summary-card">
|
|
316
|
+
<span class="summary-label">Run</span>
|
|
317
|
+
<span class="summary-value" data-summary="run">No run selected</span>
|
|
318
|
+
</div>
|
|
263
319
|
</div>
|
|
264
320
|
<div class="form-field">
|
|
265
321
|
<label for="run-id">Run ID (for Check Status)</label>
|
|
@@ -267,7 +323,7 @@ const controllerPage = String.raw `<!doctype html>
|
|
|
267
323
|
</div>
|
|
268
324
|
<div id="state" role="status" aria-live="polite"></div>
|
|
269
325
|
</div>
|
|
270
|
-
<div id="submit-tab" class="tab-content hidden" role="tabpanel" aria-labelledby="submit-heading">
|
|
326
|
+
<div id="submit-tab" class="tab-content hidden" role="tabpanel" aria-labelledby="submit-heading" hidden aria-hidden="true">
|
|
271
327
|
<div>
|
|
272
328
|
<h2 id="submit-heading">Submit Repository Task</h2>
|
|
273
329
|
<p>Configure and submit a task for the ephemeral agent to execute.</p>
|
|
@@ -291,12 +347,47 @@ const controllerPage = String.raw `<!doctype html>
|
|
|
291
347
|
<textarea id="task-prompt" name="taskPrompt" required minlength="10" placeholder="Describe the task for the ephemeral agent."></textarea>
|
|
292
348
|
<p class="field-error" data-error-for="taskPrompt" aria-live="polite"></p>
|
|
293
349
|
</div>
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
350
|
+
<div class="grid">
|
|
351
|
+
<div class="form-field">
|
|
352
|
+
<label for="ref">Git ref</label>
|
|
353
|
+
<input id="ref" name="ref" value="main" placeholder="main">
|
|
354
|
+
<p class="field-helper">Branch, tag, or commit SHA to start from.</p>
|
|
355
|
+
</div>
|
|
356
|
+
<div class="form-field">
|
|
357
|
+
<label for="timeout-seconds">Timeout</label>
|
|
358
|
+
<input id="timeout-seconds" name="timeoutSeconds" type="number" min="60" max="10800" step="60" value="10800">
|
|
359
|
+
<p class="field-helper">Run timeout in seconds.</p>
|
|
360
|
+
</div>
|
|
361
|
+
<div class="form-field">
|
|
362
|
+
<label for="task-mode">Task mode</label>
|
|
363
|
+
<select id="task-mode" name="taskMode">
|
|
364
|
+
<option value="patch" selected>Patch</option>
|
|
365
|
+
<option value="inspect">Inspect</option>
|
|
366
|
+
</select>
|
|
367
|
+
</div>
|
|
368
|
+
<div class="form-field">
|
|
369
|
+
<label for="publish-mode">Publish mode</label>
|
|
370
|
+
<select id="publish-mode" name="publishMode">
|
|
371
|
+
<option value="pr" selected>Pull request</option>
|
|
372
|
+
<option value="draft_pr">Draft pull request</option>
|
|
373
|
+
<option value="branch">Branch only</option>
|
|
374
|
+
<option value="auto">Auto</option>
|
|
375
|
+
<option value="none">None</option>
|
|
376
|
+
</select>
|
|
377
|
+
</div>
|
|
378
|
+
</div>
|
|
379
|
+
</fieldset>
|
|
380
|
+
<fieldset>
|
|
381
|
+
<legend>Options</legend>
|
|
382
|
+
<div class="form-field">
|
|
383
|
+
<div class="check">
|
|
384
|
+
<input name="scouting" type="checkbox" checked>
|
|
385
|
+
<div class="check-copy">
|
|
386
|
+
<label class="check-label">Enable scouting mode</label>
|
|
387
|
+
<div class="check-helper">Allow the agent to explore beyond the specified scope (experimental).</div>
|
|
388
|
+
</div>
|
|
389
|
+
</div>
|
|
390
|
+
</div>
|
|
300
391
|
</fieldset>
|
|
301
392
|
<fieldset>
|
|
302
393
|
<legend>Run actions</legend>
|
|
@@ -312,6 +403,15 @@ const controllerPage = String.raw `<!doctype html>
|
|
|
312
403
|
<div>
|
|
313
404
|
<h2 id="responses-heading">Responses</h2>
|
|
314
405
|
</div>
|
|
406
|
+
<div class="run-links" id="run-links" hidden>
|
|
407
|
+
<strong>Run follow-through</strong>
|
|
408
|
+
<div class="link-grid">
|
|
409
|
+
<a data-run-link="status" href="#">Status</a>
|
|
410
|
+
<a data-run-link="events" href="#">Events</a>
|
|
411
|
+
<a data-run-link="stdout" href="#">Stdout</a>
|
|
412
|
+
<a data-run-link="artifacts" href="#">Artifacts</a>
|
|
413
|
+
</div>
|
|
414
|
+
</div>
|
|
315
415
|
<div class="response-panel">
|
|
316
416
|
<p class="response-meta" id="output-meta" aria-live="polite">Status: idle</p>
|
|
317
417
|
<pre class="response-log empty" id="output" aria-live="polite">No output yet. Run a health check or submit a task to see responses.</pre>
|
|
@@ -325,6 +425,8 @@ const controllerPage = String.raw `<!doctype html>
|
|
|
325
425
|
const state = document.querySelector('#state');
|
|
326
426
|
const tokenInput = document.querySelector('#token');
|
|
327
427
|
const runIdInput = document.querySelector('#run-id');
|
|
428
|
+
const runLinks = document.querySelector('#run-links');
|
|
429
|
+
let pollTimer = null;
|
|
328
430
|
tokenInput.value = sessionStorage.getItem('kasekiApiToken') || '';
|
|
329
431
|
|
|
330
432
|
function sanitizeOutput(value) {
|
|
@@ -354,6 +456,66 @@ const controllerPage = String.raw `<!doctype html>
|
|
|
354
456
|
output.classList.toggle('empty', !text);
|
|
355
457
|
}
|
|
356
458
|
|
|
459
|
+
function setSummary(key, value, kind) {
|
|
460
|
+
const element = document.querySelector('[data-summary="' + key + '"]');
|
|
461
|
+
if (!element) return;
|
|
462
|
+
element.textContent = value;
|
|
463
|
+
element.className = 'summary-value' + (kind ? ' ' + kind : '');
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
function runUrl(runId, suffix) {
|
|
467
|
+
return '/api/runs/' + encodeURIComponent(runId) + suffix;
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
function showRunLinks(runId) {
|
|
471
|
+
if (!runId) return;
|
|
472
|
+
const links = {
|
|
473
|
+
status: runUrl(runId, '/status'),
|
|
474
|
+
events: runUrl(runId, '/events?tail=50'),
|
|
475
|
+
stdout: runUrl(runId, '/logs/stdout?tail=lines&lines=200'),
|
|
476
|
+
artifacts: runUrl(runId, '/artifacts'),
|
|
477
|
+
};
|
|
478
|
+
Object.entries(links).forEach(([key, href]) => {
|
|
479
|
+
const link = document.querySelector('[data-run-link="' + key + '"]');
|
|
480
|
+
if (link) link.href = href;
|
|
481
|
+
});
|
|
482
|
+
runLinks.hidden = false;
|
|
483
|
+
}
|
|
484
|
+
|
|
485
|
+
function isTerminalStatus(status) {
|
|
486
|
+
return status === 'completed' || status === 'failed';
|
|
487
|
+
}
|
|
488
|
+
|
|
489
|
+
function stopPolling() {
|
|
490
|
+
if (pollTimer) clearTimeout(pollTimer);
|
|
491
|
+
pollTimer = null;
|
|
492
|
+
}
|
|
493
|
+
|
|
494
|
+
function summarizeHealth(path, payload) {
|
|
495
|
+
if (path === '/health') {
|
|
496
|
+
setSummary('controller', payload.status || 'Healthy', 'ok');
|
|
497
|
+
if (payload.queue) {
|
|
498
|
+
setSummary('queue', String(payload.queue.running || 0) + ' running, ' + String(payload.queue.pending || 0) + ' pending', 'ok');
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
if (path === '/ready') {
|
|
502
|
+
setSummary('controller', payload.status || 'Ready', 'ok');
|
|
503
|
+
}
|
|
504
|
+
if (path === '/api/preflight') {
|
|
505
|
+
const checks = Array.isArray(payload.checks) ? payload.checks : [];
|
|
506
|
+
const failed = checks.filter((check) => !check.ok);
|
|
507
|
+
setSummary('preflight', failed.length === 0 ? String(checks.length) + ' checks passed' : String(failed.length) + ' failed', failed.length === 0 ? 'ok' : 'bad');
|
|
508
|
+
}
|
|
509
|
+
}
|
|
510
|
+
|
|
511
|
+
function summarizeRun(payload) {
|
|
512
|
+
if (!payload || !payload.status) return;
|
|
513
|
+
const bits = [payload.status];
|
|
514
|
+
if (payload.progress && payload.progress.stage) bits.push(payload.progress.stage);
|
|
515
|
+
if (payload.progress && typeof payload.progress.percentComplete === 'number') bits.push(String(payload.progress.percentComplete) + '%');
|
|
516
|
+
setSummary('run', bits.join(' - '), payload.status === 'failed' ? 'bad' : 'ok');
|
|
517
|
+
}
|
|
518
|
+
|
|
357
519
|
function requestBody() {
|
|
358
520
|
const data = new FormData(form);
|
|
359
521
|
const timeoutSeconds = String(data.get('timeoutSeconds') || '10800').trim();
|
|
@@ -363,8 +525,10 @@ const controllerPage = String.raw `<!doctype html>
|
|
|
363
525
|
taskPrompt: String(data.get('taskPrompt') || '').trim(),
|
|
364
526
|
publishMode: String(data.get('publishMode') || 'auto'),
|
|
365
527
|
taskMode: String(data.get('taskMode') || 'patch'),
|
|
366
|
-
scouting: { enabled: true },
|
|
367
528
|
};
|
|
529
|
+
if (data.get('scouting') === 'on') {
|
|
530
|
+
body.scouting = { enabled: true };
|
|
531
|
+
}
|
|
368
532
|
const parsed = Number(timeoutSeconds);
|
|
369
533
|
if (!isNaN(parsed)) {
|
|
370
534
|
body.timeoutSeconds = parsed;
|
|
@@ -401,6 +565,11 @@ const controllerPage = String.raw `<!doctype html>
|
|
|
401
565
|
response: payload,
|
|
402
566
|
}, null, 2));
|
|
403
567
|
setState(response.ok ? 'Request completed.' : 'Request failed.', response.ok ? 'ok' : 'bad');
|
|
568
|
+
if (response.ok && payload && typeof payload === 'object') {
|
|
569
|
+
summarizeHealth(path, payload);
|
|
570
|
+
summarizeRun(payload);
|
|
571
|
+
if (runId) showRunLinks(runId);
|
|
572
|
+
}
|
|
404
573
|
return { payload, response };
|
|
405
574
|
}
|
|
406
575
|
|
|
@@ -409,31 +578,58 @@ const controllerPage = String.raw `<!doctype html>
|
|
|
409
578
|
setOutputMetadata('running', String(runIdInput.value || '').trim() || undefined);
|
|
410
579
|
setState('Contacting the controller...');
|
|
411
580
|
try {
|
|
412
|
-
await apiRequest(path, options);
|
|
581
|
+
return await apiRequest(path, options);
|
|
413
582
|
} catch (error) {
|
|
414
583
|
setOutputMetadata('failed', String(runIdInput.value || '').trim() || undefined);
|
|
415
584
|
setOutputBody(sanitizeOutput(error instanceof Error ? error.message : String(error)));
|
|
416
585
|
setState('Request could not be sent.', 'bad');
|
|
586
|
+
return { payload: null, response: { ok: false } };
|
|
417
587
|
} finally {
|
|
418
588
|
button.disabled = false;
|
|
419
589
|
}
|
|
420
590
|
}
|
|
421
591
|
|
|
592
|
+
async function pollRun(runId) {
|
|
593
|
+
stopPolling();
|
|
594
|
+
if (!runId) return;
|
|
595
|
+
let retryCount = 0;
|
|
596
|
+
const maxRetries = 36;
|
|
597
|
+
async function poll() {
|
|
598
|
+
try {
|
|
599
|
+
const result = await apiRequest(runUrl(runId, '/status'), { auth: true });
|
|
600
|
+
summarizeRun(result.payload);
|
|
601
|
+
retryCount = 0;
|
|
602
|
+
if (result.response.ok && result.payload && result.payload.status && !isTerminalStatus(result.payload.status)) {
|
|
603
|
+
pollTimer = setTimeout(poll, 5000);
|
|
604
|
+
}
|
|
605
|
+
} catch {
|
|
606
|
+
retryCount++;
|
|
607
|
+
if (retryCount < maxRetries) {
|
|
608
|
+
pollTimer = setTimeout(poll, 10000);
|
|
609
|
+
} else {
|
|
610
|
+
setState('Polling stopped after repeated failures.', 'bad');
|
|
611
|
+
}
|
|
612
|
+
}
|
|
613
|
+
}
|
|
614
|
+
poll();
|
|
615
|
+
}
|
|
616
|
+
|
|
422
617
|
// Tab switching
|
|
423
618
|
document.querySelectorAll('.tab-button').forEach((button) => {
|
|
424
619
|
button.addEventListener('click', () => {
|
|
425
620
|
const tabName = button.dataset.tab;
|
|
426
|
-
// Update tab buttons
|
|
427
621
|
document.querySelectorAll('.tab-button').forEach(b => {
|
|
428
|
-
|
|
429
|
-
b.
|
|
622
|
+
const active = b.dataset.tab === tabName;
|
|
623
|
+
b.classList.toggle('active', active);
|
|
624
|
+
b.setAttribute('aria-selected', active ? 'true' : 'false');
|
|
430
625
|
});
|
|
431
|
-
// Update tab content
|
|
432
626
|
document.querySelectorAll('.tab-content').forEach(content => {
|
|
433
627
|
const contentTabName = content.id.replace('-tab', '');
|
|
434
|
-
|
|
628
|
+
const active = contentTabName === tabName;
|
|
629
|
+
content.classList.toggle('hidden', !active);
|
|
630
|
+
content.hidden = !active;
|
|
631
|
+
content.setAttribute('aria-hidden', active ? 'false' : 'true');
|
|
435
632
|
});
|
|
436
|
-
// Store preference
|
|
437
633
|
sessionStorage.setItem('kasekiActiveTab', tabName);
|
|
438
634
|
});
|
|
439
635
|
});
|
|
@@ -445,16 +641,15 @@ const controllerPage = String.raw `<!doctype html>
|
|
|
445
641
|
// Health check button handlers
|
|
446
642
|
document.querySelectorAll('[data-probe]').forEach((button) => {
|
|
447
643
|
button.addEventListener('click', () => {
|
|
448
|
-
const
|
|
449
|
-
const statusEl = document.querySelector('[data-status="' + statusKey + '"]');
|
|
644
|
+
const statusEl = button.querySelector('.health-check-status');
|
|
450
645
|
if (statusEl) {
|
|
451
646
|
statusEl.className = 'health-check-status spinner';
|
|
452
647
|
}
|
|
453
648
|
run(button, button.dataset.probe, {
|
|
454
649
|
auth: button.dataset.auth === 'true',
|
|
455
|
-
}).then(() => {
|
|
650
|
+
}).then(({ response }) => {
|
|
456
651
|
if (statusEl) {
|
|
457
|
-
statusEl.className = 'health-check-status ok';
|
|
652
|
+
statusEl.className = response.ok ? 'health-check-status ok' : 'health-check-status bad';
|
|
458
653
|
}
|
|
459
654
|
}).catch(() => {
|
|
460
655
|
if (statusEl) {
|
|
@@ -477,7 +672,8 @@ const controllerPage = String.raw `<!doctype html>
|
|
|
477
672
|
setState('Run status needs a run ID.', 'bad');
|
|
478
673
|
return;
|
|
479
674
|
}
|
|
480
|
-
|
|
675
|
+
showRunLinks(runId);
|
|
676
|
+
run(event.currentTarget, runUrl(runId, '/status'), { auth: true });
|
|
481
677
|
});
|
|
482
678
|
|
|
483
679
|
form.addEventListener('submit', (event) => {
|
|
@@ -491,7 +687,9 @@ const controllerPage = String.raw `<!doctype html>
|
|
|
491
687
|
.then(({ payload, response }) => {
|
|
492
688
|
if (response.ok && payload && typeof payload.id === 'string') {
|
|
493
689
|
runIdInput.value = payload.id;
|
|
494
|
-
|
|
690
|
+
showRunLinks(payload.id);
|
|
691
|
+
setOutputMetadata('queued', payload.id);
|
|
692
|
+
pollRun(payload.id);
|
|
495
693
|
}
|
|
496
694
|
})
|
|
497
695
|
.catch((error) => {
|
|
@@ -510,7 +708,7 @@ const controllerPage = String.raw `<!doctype html>
|
|
|
510
708
|
export function createWebRouter() {
|
|
511
709
|
const router = Router();
|
|
512
710
|
router.get(['/', '/ui'], (_req, res) => {
|
|
513
|
-
res.set('Content-Security-Policy', "default-src 'self'; base-uri 'none'; form-action 'self'; frame-ancestors 'none'; object-src 'none'; script-src 'unsafe-inline'");
|
|
711
|
+
res.set('Content-Security-Policy', "default-src 'self'; base-uri 'none'; form-action 'self'; frame-ancestors 'none'; object-src 'none'; style-src 'unsafe-inline'; script-src 'unsafe-inline'");
|
|
514
712
|
res.set('Referrer-Policy', 'no-referrer');
|
|
515
713
|
res.type('html').send(controllerPage);
|
|
516
714
|
});
|
|
@@ -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
|
|
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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cyanautomation/kaseki-agent",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.43.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",
|