skillscript-runtime 0.18.7 → 0.18.9
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 +2 -2
- package/dist/bootstrap.d.ts +7 -0
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +30 -0
- package/dist/bootstrap.js.map +1 -1
- package/dist/cli.js +120 -0
- package/dist/cli.js.map +1 -1
- package/dist/dashboard/spa/app.js +219 -2
- package/dist/dashboard/spa/index.html +1 -0
- package/dist/dashboard/spa/styles.css +39 -0
- package/dist/errors.d.ts +14 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +33 -0
- package/dist/errors.js.map +1 -1
- package/dist/lint.d.ts +25 -0
- package/dist/lint.d.ts.map +1 -1
- package/dist/lint.js +81 -0
- package/dist/lint.js.map +1 -1
- package/dist/mcp-server.d.ts +6 -0
- package/dist/mcp-server.d.ts.map +1 -1
- package/dist/mcp-server.js +57 -0
- package/dist/mcp-server.js.map +1 -1
- package/dist/runtime-config.d.ts +25 -0
- package/dist/runtime-config.d.ts.map +1 -1
- package/dist/runtime-config.js +8 -0
- package/dist/runtime-config.js.map +1 -1
- package/dist/runtime.d.ts +17 -0
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +41 -1
- package/dist/runtime.js.map +1 -1
- package/dist/scheduler.d.ts +7 -0
- package/dist/scheduler.d.ts.map +1 -1
- package/dist/scheduler.js +3 -0
- package/dist/scheduler.js.map +1 -1
- package/dist/trace.d.ts +9 -0
- package/dist/trace.d.ts.map +1 -1
- package/dist/trace.js.map +1 -1
- package/docs/adopter-playbook.md +140 -0
- package/docs/configuration.md +2 -1
- package/examples/skillscripts/hello-world.skill.provenance.json +1 -1
- package/package.json +1 -1
- package/scaffold/.env.example +27 -0
|
@@ -12,6 +12,7 @@ const state = {
|
|
|
12
12
|
triggers: [],
|
|
13
13
|
metrics: null,
|
|
14
14
|
capabilities: null,
|
|
15
|
+
blockedShellAttempts: null,
|
|
15
16
|
lastUpdate: null,
|
|
16
17
|
};
|
|
17
18
|
|
|
@@ -42,7 +43,7 @@ async function refresh() {
|
|
|
42
43
|
const ts = new Date();
|
|
43
44
|
document.getElementById("poll-status").textContent = `polling…`;
|
|
44
45
|
try {
|
|
45
|
-
const [catalog, triggers, metrics, capabilities] = await Promise.all([
|
|
46
|
+
const [catalog, triggers, metrics, capabilities, blocked] = await Promise.all([
|
|
46
47
|
// v0.9.8 — skill_list returns SkillCatalog (pre-grouped by audience).
|
|
47
48
|
// Dashboard wants the full picture (all categories); flatten the
|
|
48
49
|
// groups into a single array for the existing rendering code.
|
|
@@ -50,6 +51,10 @@ async function refresh() {
|
|
|
50
51
|
callTool("list_triggers", {}),
|
|
51
52
|
callTool("health_metrics", {}),
|
|
52
53
|
callTool("runtime_capabilities", { include: ["mcpConnectors", "mcpConnectorClasses", "localModels", "dataStores", "skillStores", "agentConnectors", "runtimeVersion"] }),
|
|
54
|
+
// v0.18.9 — blocked shell attempts for the Security view's
|
|
55
|
+
// observe→promote loop. Graceful: pre-v0.18.9 servers don't have
|
|
56
|
+
// this tool; catch returns null and the Security view degrades.
|
|
57
|
+
callTool("blocked_shell_attempts", { limit: 100 }).catch(() => null),
|
|
53
58
|
]);
|
|
54
59
|
state.skills = [
|
|
55
60
|
...(catalog.receives ?? []),
|
|
@@ -59,6 +64,7 @@ async function refresh() {
|
|
|
59
64
|
state.triggers = triggers;
|
|
60
65
|
state.metrics = metrics;
|
|
61
66
|
state.capabilities = capabilities;
|
|
67
|
+
state.blockedShellAttempts = blocked;
|
|
62
68
|
state.lastUpdate = ts;
|
|
63
69
|
document.getElementById("poll-status").textContent = `last updated ${ts.toLocaleTimeString()}`;
|
|
64
70
|
renderCurrentView();
|
|
@@ -201,9 +207,11 @@ async function renderSkillDetail(name) {
|
|
|
201
207
|
</div>
|
|
202
208
|
</section>
|
|
203
209
|
|
|
210
|
+
${source ? renderSecuritySignalsPanel(source) : ""}
|
|
211
|
+
|
|
204
212
|
<section>
|
|
205
213
|
<h2>Source</h2>
|
|
206
|
-
${source ? `<pre>${
|
|
214
|
+
${source ? `<pre class="skill-source">${renderHighlightedSkillBody(source)}</pre>` : `<div class="empty">Source not available.</div>`}
|
|
207
215
|
</section>
|
|
208
216
|
|
|
209
217
|
${renderComposesSection(name, source)}
|
|
@@ -318,6 +326,214 @@ function renderTriggers() {
|
|
|
318
326
|
`;
|
|
319
327
|
}
|
|
320
328
|
|
|
329
|
+
// v0.18.9 — security highlighting in the skill source viewer. Two
|
|
330
|
+
// severity tiers visualized as soft background tints in the <pre> body
|
|
331
|
+
// so a human reviewer can scan-prioritize "what's risky in this skill":
|
|
332
|
+
//
|
|
333
|
+
// HIGH (orange tint) — bypasses human-in-loop OR has unbounded blast radius:
|
|
334
|
+
// - `unsafe=true` kwarg (bash interpretation enabled)
|
|
335
|
+
// - `# Autonomous: true` frontmatter (no human-in-loop)
|
|
336
|
+
// - `approved="..."` kwarg (per-op author authorization)
|
|
337
|
+
// - `$ skill_write`, `$ data_write`, `file_write(...)` (mutation ops)
|
|
338
|
+
//
|
|
339
|
+
// MEDIUM (yellow tint) — touches OS / live-session surfaces:
|
|
340
|
+
// - `shell(...)` ops (OS-level dispatch even when allowlisted)
|
|
341
|
+
// - `notify(agent="X@session", ...)` (wake-class interrupt)
|
|
342
|
+
//
|
|
343
|
+
// Implementation: regex-based annotation pass over the already-esc'd
|
|
344
|
+
// source string. Each pattern wraps its match in a <span class=...>
|
|
345
|
+
// with low-alpha background. Patterns are deliberately conservative —
|
|
346
|
+
// false negatives are fine (the highlight aids scanning, not gating);
|
|
347
|
+
// false positives are worse because they desensitize the reviewer.
|
|
348
|
+
function renderHighlightedSkillBody(source) {
|
|
349
|
+
let body = esc(source);
|
|
350
|
+
// HIGH tier — must apply on the esc'd string, so patterns reference
|
|
351
|
+
// entity-escaped quote chars (e.g., approved="...").
|
|
352
|
+
const highPatterns = [
|
|
353
|
+
// Frontmatter signal: `# Autonomous: true`
|
|
354
|
+
/(^|\n)(# Autonomous:\s*true)/g,
|
|
355
|
+
// Per-op author authorization kwarg
|
|
356
|
+
/(approved="[^&]*")/g,
|
|
357
|
+
// Unsafe shell axis
|
|
358
|
+
/(unsafe\s*=\s*true)/g,
|
|
359
|
+
// Mutation ops (substrate writes + filesystem writes + skill writes)
|
|
360
|
+
/(file_write\s*\()/g,
|
|
361
|
+
/(\$\s*skill_write\b)/g,
|
|
362
|
+
/(\$\s*data_write\b)/g,
|
|
363
|
+
];
|
|
364
|
+
// MEDIUM tier — shell() ops + wake-class notify
|
|
365
|
+
const mediumPatterns = [
|
|
366
|
+
/(shell\s*\()/g,
|
|
367
|
+
/(notify\s*\(\s*agent\s*=\s*"[^&]*@[^&]*")/g,
|
|
368
|
+
];
|
|
369
|
+
for (const re of highPatterns) {
|
|
370
|
+
body = body.replace(re, (_match, p1, p2) => {
|
|
371
|
+
const prefix = p2 !== undefined ? p1 : "";
|
|
372
|
+
const captured = p2 !== undefined ? p2 : p1;
|
|
373
|
+
return `${prefix}<span class="sig-high">${captured}</span>`;
|
|
374
|
+
});
|
|
375
|
+
}
|
|
376
|
+
for (const re of mediumPatterns) {
|
|
377
|
+
body = body.replace(re, (m) => `<span class="sig-medium">${m}</span>`);
|
|
378
|
+
}
|
|
379
|
+
return body;
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
// v0.18.9 — security signals summary panel. Glance-first surface
|
|
383
|
+
// showing aggregated counts so a reviewer knows WHAT to look for before
|
|
384
|
+
// scanning the body. Pairs with renderHighlightedSkillBody() (the
|
|
385
|
+
// WHERE).
|
|
386
|
+
function renderSecuritySignalsPanel(source) {
|
|
387
|
+
const sig = collectSecuritySignals(source);
|
|
388
|
+
const items = [];
|
|
389
|
+
if (sig.shellOps > 0) {
|
|
390
|
+
items.push(`<li class="sig-medium-text">${sig.shellOps} shell op${sig.shellOps === 1 ? "" : "s"}${sig.shellBinaries.length > 0 ? ` (binaries: ${sig.shellBinaries.map(esc).join(", ")})` : ""}</li>`);
|
|
391
|
+
}
|
|
392
|
+
if (sig.unsafeShell > 0) {
|
|
393
|
+
items.push(`<li class="sig-high-text">${sig.unsafeShell} unsafe shell op${sig.unsafeShell === 1 ? "" : "s"} <small>(requires <code>SKILLSCRIPT_ENABLE_UNSAFE_SHELL=true</code> AND <code>bash</code> on allowlist)</small></li>`);
|
|
394
|
+
}
|
|
395
|
+
if (sig.autonomous) {
|
|
396
|
+
items.push(`<li class="sig-high-text"><code># Autonomous: true</code> <small>(bypasses human-in-loop on mutation ops)</small></li>`);
|
|
397
|
+
}
|
|
398
|
+
if (sig.approvedOps > 0) {
|
|
399
|
+
items.push(`<li class="sig-high-text">${sig.approvedOps} <code>approved="..."</code> per-op authorization${sig.approvedOps === 1 ? "" : "s"}</li>`);
|
|
400
|
+
}
|
|
401
|
+
if (sig.writeOps > 0) {
|
|
402
|
+
items.push(`<li class="sig-high-text">${sig.writeOps} mutation op${sig.writeOps === 1 ? "" : "s"} <small>(<code>skill_write</code> / <code>data_write</code> / <code>file_write</code>)</small></li>`);
|
|
403
|
+
}
|
|
404
|
+
if (sig.wakeAddresses > 0) {
|
|
405
|
+
items.push(`<li class="sig-medium-text">${sig.wakeAddresses} <code>@session</code> wake-class deliver${sig.wakeAddresses === 1 ? "" : "s"}</li>`);
|
|
406
|
+
}
|
|
407
|
+
if (sig.cronTriggers > 0) {
|
|
408
|
+
items.push(`<li class="sig-info-text">${sig.cronTriggers} cron trigger${sig.cronTriggers === 1 ? "" : "s"} <small>(autonomous fire)</small></li>`);
|
|
409
|
+
}
|
|
410
|
+
if (items.length === 0) return "";
|
|
411
|
+
return `
|
|
412
|
+
<section>
|
|
413
|
+
<h2>Security signals</h2>
|
|
414
|
+
<ul class="security-signals">
|
|
415
|
+
${items.join("")}
|
|
416
|
+
</ul>
|
|
417
|
+
<p><small>Scan the source below — highlighted spans match these signals. <span class="sig-high">Orange</span> = review carefully; <span class="sig-medium">yellow</span> = worth noting.</small></p>
|
|
418
|
+
</section>
|
|
419
|
+
`;
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
function collectSecuritySignals(source) {
|
|
423
|
+
const lines = source.split("\n");
|
|
424
|
+
let shellOps = 0;
|
|
425
|
+
let unsafeShell = 0;
|
|
426
|
+
let autonomous = false;
|
|
427
|
+
let approvedOps = 0;
|
|
428
|
+
let writeOps = 0;
|
|
429
|
+
let wakeAddresses = 0;
|
|
430
|
+
let cronTriggers = 0;
|
|
431
|
+
const shellBinaries = new Set();
|
|
432
|
+
for (const line of lines) {
|
|
433
|
+
if (/^# Autonomous:\s*true\s*$/i.test(line)) autonomous = true;
|
|
434
|
+
if (/^# Triggers:\s*cron:/i.test(line)) cronTriggers++;
|
|
435
|
+
const shellMatch = /shell\s*\(\s*command\s*=\s*"([^"]+)"/.exec(line);
|
|
436
|
+
if (shellMatch !== null) {
|
|
437
|
+
shellOps++;
|
|
438
|
+
const cmd = shellMatch[1]!.trim();
|
|
439
|
+
const isUnsafe = /unsafe\s*=\s*true/.test(line);
|
|
440
|
+
if (isUnsafe) {
|
|
441
|
+
unsafeShell++;
|
|
442
|
+
shellBinaries.add("bash");
|
|
443
|
+
} else if (cmd.length > 0 && !cmd.startsWith("${") && !cmd.startsWith("$(")) {
|
|
444
|
+
const binary = /^([^\s]+)/.exec(cmd);
|
|
445
|
+
if (binary !== null) shellBinaries.add(binary[1]!);
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
if (/approved\s*=\s*"/.test(line)) approvedOps++;
|
|
449
|
+
if (/\$\s*skill_write\b|\$\s*data_write\b|file_write\s*\(/.test(line)) writeOps++;
|
|
450
|
+
if (/notify\s*\(\s*agent\s*=\s*"[^"]*@[^"]*"/.test(line)) wakeAddresses++;
|
|
451
|
+
}
|
|
452
|
+
return {
|
|
453
|
+
shellOps,
|
|
454
|
+
unsafeShell,
|
|
455
|
+
autonomous,
|
|
456
|
+
approvedOps,
|
|
457
|
+
writeOps,
|
|
458
|
+
wakeAddresses,
|
|
459
|
+
cronTriggers,
|
|
460
|
+
shellBinaries: [...shellBinaries].sort(),
|
|
461
|
+
};
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
// v0.18.9 — Security view. Cross-skill observability for the shell
|
|
465
|
+
// allowlist's observe→promote loop. Operator sees what binaries skills
|
|
466
|
+
// tried to invoke off-list; decides whether to add any to .env.
|
|
467
|
+
function renderSecurity() {
|
|
468
|
+
const blocked = state.blockedShellAttempts;
|
|
469
|
+
if (blocked === null) {
|
|
470
|
+
return `
|
|
471
|
+
<section>
|
|
472
|
+
<h2>Security</h2>
|
|
473
|
+
<div class="empty">
|
|
474
|
+
<strong>blocked_shell_attempts tool unavailable.</strong>
|
|
475
|
+
The runtime serving this dashboard is pre-v0.18.9 and doesn't expose the
|
|
476
|
+
blocked-attempts query surface. Upgrade to v0.18.9+ to see what shell
|
|
477
|
+
binaries skills tried to invoke off the allowlist.
|
|
478
|
+
</div>
|
|
479
|
+
</section>
|
|
480
|
+
`;
|
|
481
|
+
}
|
|
482
|
+
const attempts = blocked.attempts ?? [];
|
|
483
|
+
// Group by binary for the "what should I consider adding?" angle.
|
|
484
|
+
const byBinary = {};
|
|
485
|
+
for (const a of attempts) {
|
|
486
|
+
if (!byBinary[a.binary]) byBinary[a.binary] = { count: 0, skills: new Set(), latest: 0 };
|
|
487
|
+
byBinary[a.binary].count++;
|
|
488
|
+
byBinary[a.binary].skills.add(a.skill_name);
|
|
489
|
+
if (a.fired_at_ms > byBinary[a.binary].latest) byBinary[a.binary].latest = a.fired_at_ms;
|
|
490
|
+
}
|
|
491
|
+
const groups = Object.entries(byBinary).sort((a, b) => b[1].count - a[1].count);
|
|
492
|
+
return `
|
|
493
|
+
<section>
|
|
494
|
+
<h2>Security · Blocked shell attempts</h2>
|
|
495
|
+
<p>
|
|
496
|
+
Skills attempted these shell binaries; the runtime refused each because
|
|
497
|
+
the binary isn't in <code>SKILLSCRIPT_SHELL_ALLOWLIST</code>. Review the
|
|
498
|
+
list — add any you intended to permit to your <code>.env</code>, then
|
|
499
|
+
restart the runtime. Run <code>skillfile shell-audit</code> from the
|
|
500
|
+
CLI to scan the full corpus instead of the recent trace window.
|
|
501
|
+
</p>
|
|
502
|
+
${attempts.length === 0
|
|
503
|
+
? `<div class="empty">No blocked shell attempts in the recent trace window.</div>`
|
|
504
|
+
: `<h3>By binary (${groups.length})</h3>
|
|
505
|
+
<table>
|
|
506
|
+
<thead><tr><th>Binary</th><th>Attempts</th><th>Skills</th><th>Last attempt</th></tr></thead>
|
|
507
|
+
<tbody>
|
|
508
|
+
${groups.map(([binary, g]) => `
|
|
509
|
+
<tr>
|
|
510
|
+
<td><code>${esc(binary)}</code></td>
|
|
511
|
+
<td>${g.count}</td>
|
|
512
|
+
<td>${[...g.skills].sort().map((s) => `<a href="#skill/${encodeURIComponent(s)}">${esc(s)}</a>`).join(", ")}</td>
|
|
513
|
+
<td>${new Date(g.latest).toLocaleString()}</td>
|
|
514
|
+
</tr>
|
|
515
|
+
`).join("")}
|
|
516
|
+
</tbody>
|
|
517
|
+
</table>
|
|
518
|
+
<h3 style="margin-top: 24px;">Recent attempts (${attempts.length})</h3>
|
|
519
|
+
<table>
|
|
520
|
+
<thead><tr><th>When</th><th>Skill</th><th>Target</th><th>Binary</th><th>Body</th></tr></thead>
|
|
521
|
+
<tbody>
|
|
522
|
+
${attempts.slice(0, 25).map((a) => `
|
|
523
|
+
<tr>
|
|
524
|
+
<td>${new Date(a.fired_at_ms).toLocaleString()}</td>
|
|
525
|
+
<td><a href="#skill/${encodeURIComponent(a.skill_name)}">${esc(a.skill_name)}</a></td>
|
|
526
|
+
<td><code>${esc(a.target)}</code></td>
|
|
527
|
+
<td><code>${esc(a.binary)}</code></td>
|
|
528
|
+
<td><code style="font-size: 0.85em;">${esc(a.body)}</code></td>
|
|
529
|
+
</tr>
|
|
530
|
+
`).join("")}
|
|
531
|
+
</tbody>
|
|
532
|
+
</table>`}
|
|
533
|
+
</section>
|
|
534
|
+
`;
|
|
535
|
+
}
|
|
536
|
+
|
|
321
537
|
function renderConnectors() {
|
|
322
538
|
const caps = state.capabilities;
|
|
323
539
|
const wiredMcp = caps?.mcpConnectors ?? [];
|
|
@@ -576,6 +792,7 @@ async function renderCurrentView() {
|
|
|
576
792
|
case "skills": main.innerHTML = renderSkills(); break;
|
|
577
793
|
case "triggers": main.innerHTML = renderTriggers(); break;
|
|
578
794
|
case "connectors": main.innerHTML = renderConnectors(); break;
|
|
795
|
+
case "security": main.innerHTML = renderSecurity(); break;
|
|
579
796
|
default: main.innerHTML = `<section><div class="empty">Unknown view: ${esc(hash)}</div></section>`;
|
|
580
797
|
}
|
|
581
798
|
}
|
|
@@ -97,3 +97,42 @@ pre {
|
|
|
97
97
|
}
|
|
98
98
|
|
|
99
99
|
.empty { color: #6c757d; padding: 24px; text-align: center; font-style: italic; }
|
|
100
|
+
|
|
101
|
+
/* v0.18.9 — Security signal highlighting in the skill source viewer.
|
|
102
|
+
* Two tiers as soft tints on the dark <pre> background. Low alpha so
|
|
103
|
+
* the prose stays readable; the eye picks up the tinted spans on a
|
|
104
|
+
* scan without being overwhelmed. */
|
|
105
|
+
pre.skill-source { white-space: pre-wrap; word-break: break-word; }
|
|
106
|
+
.sig-high {
|
|
107
|
+
background: rgba(255, 140, 50, 0.30);
|
|
108
|
+
padding: 1px 3px;
|
|
109
|
+
border-radius: 3px;
|
|
110
|
+
}
|
|
111
|
+
.sig-medium {
|
|
112
|
+
background: rgba(255, 215, 0, 0.22);
|
|
113
|
+
padding: 1px 3px;
|
|
114
|
+
border-radius: 3px;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/* Inline color chips for the security-signals summary panel + the
|
|
118
|
+
* "what colors mean what" legend at the bottom of that panel. */
|
|
119
|
+
.security-signals { list-style: none; padding-left: 0; margin: 0; }
|
|
120
|
+
.security-signals li {
|
|
121
|
+
padding: 6px 10px;
|
|
122
|
+
margin: 4px 0;
|
|
123
|
+
border-radius: 4px;
|
|
124
|
+
border-left: 3px solid transparent;
|
|
125
|
+
}
|
|
126
|
+
.security-signals .sig-high-text {
|
|
127
|
+
background: rgba(255, 140, 50, 0.10);
|
|
128
|
+
border-left-color: rgba(255, 140, 50, 0.75);
|
|
129
|
+
}
|
|
130
|
+
.security-signals .sig-medium-text {
|
|
131
|
+
background: rgba(255, 215, 0, 0.10);
|
|
132
|
+
border-left-color: rgba(255, 215, 0, 0.80);
|
|
133
|
+
}
|
|
134
|
+
.security-signals .sig-info-text {
|
|
135
|
+
background: #fafbfc;
|
|
136
|
+
border-left-color: #c4cad0;
|
|
137
|
+
}
|
|
138
|
+
.security-signals small { color: #6c757d; }
|
package/dist/errors.d.ts
CHANGED
|
@@ -119,6 +119,20 @@ export declare class UnsafeShellDisabledError extends OpError {
|
|
|
119
119
|
readonly command: string;
|
|
120
120
|
constructor(command: string, target?: string);
|
|
121
121
|
}
|
|
122
|
+
/**
|
|
123
|
+
* v0.18.8 — a `shell(...)` op fired against a binary not in the operator's
|
|
124
|
+
* `SKILLSCRIPT_SHELL_ALLOWLIST`. Default-deny: an unset allowlist refuses
|
|
125
|
+
* every shell call (BREAKING from v0.18.7).
|
|
126
|
+
*
|
|
127
|
+
* Per Perry's "the error message IS the remediation doc" requirement: the
|
|
128
|
+
* message names the offending binary + the env var + the audit helper.
|
|
129
|
+
* Operators reading this error in logs know exactly what to do.
|
|
130
|
+
*/
|
|
131
|
+
export declare class ShellBinaryNotAllowedError extends OpError {
|
|
132
|
+
readonly binary: string;
|
|
133
|
+
readonly allowlist: string[] | undefined;
|
|
134
|
+
constructor(binary: string, allowlist: string[] | undefined, target?: string);
|
|
135
|
+
}
|
|
122
136
|
/**
|
|
123
137
|
* A composition reference (`&` data-skill inline, `$ execute_skill`, or
|
|
124
138
|
* `# Templates:` delivery) couldn't be resolved at execute time because
|
package/dist/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.js
CHANGED
|
@@ -235,6 +235,39 @@ export class UnsafeShellDisabledError extends OpError {
|
|
|
235
235
|
this.name = "UnsafeShellDisabledError";
|
|
236
236
|
}
|
|
237
237
|
}
|
|
238
|
+
/**
|
|
239
|
+
* v0.18.8 — a `shell(...)` op fired against a binary not in the operator's
|
|
240
|
+
* `SKILLSCRIPT_SHELL_ALLOWLIST`. Default-deny: an unset allowlist refuses
|
|
241
|
+
* every shell call (BREAKING from v0.18.7).
|
|
242
|
+
*
|
|
243
|
+
* Per Perry's "the error message IS the remediation doc" requirement: the
|
|
244
|
+
* message names the offending binary + the env var + the audit helper.
|
|
245
|
+
* Operators reading this error in logs know exactly what to do.
|
|
246
|
+
*/
|
|
247
|
+
export class ShellBinaryNotAllowedError extends OpError {
|
|
248
|
+
binary;
|
|
249
|
+
allowlist;
|
|
250
|
+
constructor(binary, allowlist, target) {
|
|
251
|
+
const allowlistDisplay = allowlist === undefined
|
|
252
|
+
? "(unset — default-deny)"
|
|
253
|
+
: allowlist.length === 0
|
|
254
|
+
? "(empty list — operator declared no shell binaries permitted)"
|
|
255
|
+
: allowlist.join(", ");
|
|
256
|
+
const message = `\`shell\` op refused: binary '${binary}' is not in the operator's shell allowlist. Current allowlist: ${allowlistDisplay}.`;
|
|
257
|
+
const remediation = `Add '${binary}' to the runtime's shell allowlist via one of three wiring paths: ` +
|
|
258
|
+
`(1) \`SKILLSCRIPT_SHELL_ALLOWLIST\` env var (comma-separated; works on CLI + bootstrap()); ` +
|
|
259
|
+
`(2) \`shellAllowlist\` field in \`skillscript.config.json\`; ` +
|
|
260
|
+
`(3) \`bootstrap({ shellAllowlist: [...] })\` programmatic opt for embedders. ` +
|
|
261
|
+
`Then restart the runtime. ` +
|
|
262
|
+
`To discover what binaries your existing skill corpus uses, run \`skillfile shell-audit\` — it scans every skill and prints the union of binaries ready to paste into the allowlist. ` +
|
|
263
|
+
`Binary-scope is an operator boundary the skill author cannot escape via the \`unsafe\` keyword or any other in-skill mechanism. ` +
|
|
264
|
+
`See \`docs/adopter-playbook.md\` § "Shell binary allowlist" for the migration walkthrough (including the programmatic-bootstrap path's \`.env\` auto-load gotcha).`;
|
|
265
|
+
super(message, "shell", remediation, target);
|
|
266
|
+
this.binary = binary;
|
|
267
|
+
this.allowlist = allowlist;
|
|
268
|
+
this.name = "ShellBinaryNotAllowedError";
|
|
269
|
+
}
|
|
270
|
+
}
|
|
238
271
|
/**
|
|
239
272
|
* A composition reference (`&` data-skill inline, `$ execute_skill`, or
|
|
240
273
|
* `# Templates:` delivery) couldn't be resolved at execute time because
|
package/dist/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,2EAA2E;AAC3E,2EAA2E;AAC3E,EAAE;AACF,yEAAyE;AACzE,0EAA0E;AAC1E,wDAAwD;AAgBxD;;;;GAIG;AACH,MAAM,OAAO,cAAe,SAAQ,KAAK;IAGrB;IACA;IAHlB,YACE,OAAe,EACC,cAA6B,EAC7B,cAAsB;QAEtC,KAAK,CAAC,OAAO,CAAC,CAAC;QAHC,mBAAc,GAAd,cAAc,CAAe;QAC7B,mBAAc,GAAd,cAAc,CAAQ;QAGtC,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED,MAAM,OAAO,kBAAmB,SAAQ,cAAc;IAElC;IADlB,YACkB,UAAkB,EAClC,cAAsB;QAEtB,KAAK,CAAC,qBAAqB,UAAU,GAAG,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC;QAHzD,eAAU,GAAV,UAAU,CAAQ;QAIlC,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAO,qBAAsB,SAAQ,cAAc;IAErC;IACA;IAFlB,YACkB,UAAkB,EAClB,MAAc,EAC9B,cAAsB;QAEtB,KAAK,CAAC,gCAAgC,UAAU,MAAM,MAAM,EAAE,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC;QAJ/E,eAAU,GAAV,UAAU,CAAQ;QAClB,WAAM,GAAN,MAAM,CAAQ;QAI9B,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;IACtC,CAAC;CACF;AAED,MAAM,OAAO,oBAAqB,SAAQ,cAAc;IAEpC;IACA;IAFlB,YACkB,UAAkB,EAClB,OAAe,EAC/B,cAAsB;QAEtB,KAAK,CAAC,YAAY,OAAO,eAAe,UAAU,aAAa,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC;QAJhF,eAAU,GAAV,UAAU,CAAQ;QAClB,YAAO,GAAP,OAAO,CAAQ;QAI/B,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AAED,MAAM,OAAO,gBAAiB,SAAQ,cAAc;IAEhC;IADlB,YACkB,WAA6B,EAC7C,cAAsB;QAEtB,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9E,KAAK,CAAC,wBAAwB,OAAO,EAAE,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC;QAJxD,gBAAW,GAAX,WAAW,CAAkB;QAK7C,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF;AAED,MAAM,OAAO,oBAAqB,SAAQ,cAAc;IAEpC;IACA;IAFlB,YACkB,UAAkB,EAClB,MAAc,EAC9B,cAAsB;QAEtB,KAAK,CAAC,wBAAwB,UAAU,MAAM,MAAM,EAAE,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC;QAJvE,eAAU,GAAV,UAAU,CAAQ;QAClB,WAAM,GAAN,MAAM,CAAQ;QAI9B,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AAED,MAAM,OAAO,UAAW,SAAQ,cAAc;IAK1B;IAJlB,YACE,OAAe,EACf,cAA6B,EAC7B,cAAsB,EACN,IAAa;QAE7B,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC;QAF/B,SAAI,GAAJ,IAAI,CAAS;QAG7B,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;IAC3B,CAAC;CACF;AAED,MAAM,OAAO,aAAc,SAAQ,cAAc;IAI7B;IAHlB,YACE,OAAe,EACf,cAAsB,EACN,IAAa;QAE7B,KAAK,CAAC,OAAO,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC;QAFhC,SAAI,GAAJ,IAAI,CAAS;QAG7B,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AAED,MAAM,OAAO,UAAW,SAAQ,cAAc;IAI1B;IAHlB,YACE,OAAe,EACf,cAAsB,EACN,KAAc;QAE9B,KAAK,CAAC,OAAO,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC;QAF9B,UAAK,GAAL,KAAK,CAAS;QAG9B,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;IAC3B,CAAC;CACF;AAED,MAAM,OAAO,YAAa,SAAQ,cAAc;IAI5B;IAHlB,YACE,cAA6B,EAC7B,cAAsB,EACN,UAAkB;QAElC,KAAK,CAAC,6BAA6B,UAAU,IAAI,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC;QAFnE,eAAU,GAAV,UAAU,CAAQ;QAGlC,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AAED,+EAA+E;AAC/E,EAAE;AACF,6EAA6E;AAC7E,0EAA0E;AAC1E,4EAA4E;AAC5E,uEAAuE;AACvE,2BAA2B;AAE3B;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,GAAY;IACpC,OAAO,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC1D,CAAC;AAED;;;;;GAKG;AACH,MAAM,OAAO,OAAQ,SAAQ,KAAK;IAGd;IACA;IACA;IACA;IALlB,YACE,OAAe,EACC,MAAc,EACd,WAAmB,EACnB,MAAe,EACf,UAAmB;QAEnC,KAAK,CAAC,OAAO,CAAC,CAAC;QALC,WAAM,GAAN,MAAM,CAAQ;QACd,gBAAW,GAAX,WAAW,CAAQ;QACnB,WAAM,GAAN,MAAM,CAAS;QACf,eAAU,GAAV,UAAU,CAAS;QAGnC,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;IACxB,CAAC;CACF;AAED,wFAAwF;AACxF,MAAM,OAAO,sBAAuB,SAAQ,OAAO;IAE/B;IACA;IAFlB,YACkB,aAAqB,EACrB,aAA4B,EAC5C,MAAc,EACd,MAAe;IACf;;;;;;OAMG;IACH,cAAuB;QAEvB,MAAM,UAAU,GAAG,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAClG,IAAI,OAAe,CAAC;QACpB,IAAI,WAAmB,CAAC;QACxB,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,OAAO,GAAG,QAAQ,cAAc,qBAAqB,CAAC;YACtD,WAAW;gBACT,mBAAmB,UAAU,CAAC,IAAI,MAAM,UAAU,CAAC,WAAW,uDAAuD,UAAU,CAAC,UAAU,IAAI;oBAC9I,wBAAwB,UAAU,CAAC,QAAQ,uFAAuF,CAAC;QACvI,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,GAAG,aAAa,KAAK,aAAa,oCAAoC,CAAC;YACjF,WAAW;gBACT,gEAAgE,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,CAAC,WAAW;oBACnI,gEAAgE;oBAChE,UAAU,MAAM,oJAAoJ;oBACpK,oBAAoB,MAAM,4DAA4D,CAAC;QAC3F,CAAC;QACD,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;QA7B5B,kBAAa,GAAb,aAAa,CAAQ;QACrB,kBAAa,GAAb,aAAa,CAAe;QA6B5C,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;IACvC,CAAC;CACF;AAED;;;;;;;GAOG;AACH,MAAM,mBAAmB,GAAgG;IACvH,GAAG,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,2BAA2B,EAAE,QAAQ,EAAE,YAAY,EAAE;IACpH,SAAS,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,qCAAqC,EAAE,QAAQ,EAAE,WAAW,EAAE;IAClI,UAAU,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,qCAAqC,EAAE,QAAQ,EAAE,WAAW,EAAE;CACpI,CAAC;AAEF,uEAAuE;AACvE,MAAM,OAAO,cAAe,SAAQ,OAAO;IAEvB;IADlB,YACkB,SAAiB,EACjC,MAAc,EACd,MAAe;QAEf,MAAM,OAAO,GAAG,OAAO,MAAM,qBAAqB,SAAS,KAAK,CAAC;QACjE,MAAM,WAAW,GACf,sCAAsC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,qCAAqC,MAAM;YAC7H,wGAAwG;YACxG,mGAAmG,CAAC;QACtG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;QAT5B,cAAS,GAAT,SAAS,CAAQ;QAUjC,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAGD;;;;;GAKG;AACH,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IAEvB;IACA;IAFlB,YACkB,YAAoB,EACpB,MAAc;QAE9B,MAAM,IAAI,GAAG,YAAY,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC;QACzF,KAAK,CACH,2BAA2B,IAAI,MAAM,MAAM,IAAI;YAC/C,oEAAoE;YACpE,kDAAkD,CACnD,CAAC;QARc,iBAAY,GAAZ,YAAY,CAAQ;QACpB,WAAM,GAAN,MAAM,CAAQ;QAQ9B,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF;AAED,mHAAmH;AACnH,MAAM,OAAO,wBAAyB,SAAQ,OAAO;IAEjC;IADlB,YACkB,OAAe,EAC/B,MAAe;QAEf,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;QAC/E,MAAM,OAAO,GAAG,gFAAgF,SAAS,GAAG,CAAC;QAC7G,MAAM,WAAW,GACf,sFAAsF;YACtF,2GAA2G;YAC3G,qGAAqG,CAAC;QACxG,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;QATzB,YAAO,GAAP,OAAO,CAAQ;QAU/B,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;IACzC,CAAC;CACF;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,0BAA2B,SAAQ,OAAO;IAEnC;IAEA;IAHlB,YACkB,gBAAwB,EACxC,MAAc,EACE,KAAmD,EACnE,MAAe;QAEf,MAAM,OAAO,GACX,UAAU,MAAM,IAAI,GAAG,uBAAuB,gBAAgB,WAAW,KAAK,sBAAsB;YACpG,8EAA8E;YAC9E,8DAA8D,CAAC;QACjE,MAAM,WAAW,GACf,kFAAkF;YAClF,gFAAgF;YAChF,4EAA4E;YAC5E,sBAAsB,CAAC;QACzB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;QAd5B,qBAAgB,GAAhB,gBAAgB,CAAQ;QAExB,UAAK,GAAL,KAAK,CAA8C;QAanE,IAAI,CAAC,IAAI,GAAG,4BAA4B,CAAC;IAC3C,CAAC;CACF;AAED,4DAA4D;AAC5D,MAAM,OAAO,uBAAwB,SAAQ,OAAO;IAEhC;IADlB,YACkB,MAAc,EAC9B,MAAc,EACd,MAAe;QAEf,MAAM,OAAO,GAAG,+CAA+C,MAAM,GAAG,CAAC;QACzE,MAAM,WAAW,GACf,2FAA2F,MAAM,OAAO;YACxG,4FAA4F;YAC5F,4GAA4G,CAAC;QAC/G,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;QAT5B,WAAM,GAAN,MAAM,CAAQ;QAU9B,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;IACxC,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAO,iBAAkB,SAAQ,OAAO;IAE1B;IACA;IACA;IACA;IAJlB,YACkB,OAAe,EACf,QAAgB,EAChB,GAAW,EACX,GAAW,EAC3B,MAAe;QAEf,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;QAClE,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;QAClE,MAAM,OAAO,GACX,uBAAuB,QAAQ,qCAAqC,QAAQ,KAAK,QAAQ,KAAK,QAAQ,WAAW,OAAO,IAAI,CAAC;QAC/H,MAAM,WAAW,GACf,2EAA2E;YAC3E,iHAAiH;YACjH,wFAAwF;YACxF,2FAA2F,CAAC;QAC9F,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;QAf1B,YAAO,GAAP,OAAO,CAAQ;QACf,aAAQ,GAAR,QAAQ,CAAQ;QAChB,QAAG,GAAH,GAAG,CAAQ;QACX,QAAG,GAAH,GAAG,CAAQ;QAa3B,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,OAAO,wBAAyB,SAAQ,OAAO;IAEjC;IACA;IACA;IAHlB,YACkB,OAAsD,EACtD,MAAc,EACd,eAAyB,EACzC,UAAkB,EAClB,MAAc,EACd,MAAe;QAEf,MAAM,aAAa,GACjB,OAAO,KAAK,YAAY,CAAC,CAAC,CAAC,OAAO,MAAM,IAAI;YAC5C,CAAC,CAAC,OAAO,KAAK,eAAe,CAAC,CAAC,CAAC,OAAO,MAAM,0BAA0B;gBACvE,CAAC,CAAC,sBAAsB,MAAM,MAAM,CAAC;QACvC,MAAM,OAAO,GACX,GAAG,aAAa,eAAe,MAAM,IAAI,GAAG,kDAAkD,CAAC;QACjG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QAb3B,YAAO,GAAP,OAAO,CAA+C;QACtD,WAAM,GAAN,MAAM,CAAQ;QACd,oBAAe,GAAf,eAAe,CAAU;QAYzC,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;IACzC,CAAC;CACF;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,sBAAuB,SAAQ,OAAO;IAE/B;IACA;IACA;IAHlB,YACkB,eAAyB,EACzB,aAAuB,EACvB,SAAiB,EACjC,MAAe;QAEf,MAAM,OAAO,GACX,+BAA+B,SAAS,sCAAsC;YAC9E,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;YACtD,0CAA0C,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,IAAI,CAAC;QAC1G,MAAM,WAAW,GACf,mGAAmG;YACnG,gGAAgG;YAChG,yEAAyE;YACzE,gFAAgF;YAChF,2DAA2D,CAAC;QAC9D,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;QAfzB,oBAAe,GAAf,eAAe,CAAU;QACzB,kBAAa,GAAb,aAAa,CAAU;QACvB,cAAS,GAAT,SAAS,CAAQ;QAcjC,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;IACvC,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
package/dist/lint.d.ts
CHANGED
|
@@ -136,6 +136,25 @@ export interface LintOptions {
|
|
|
136
136
|
* whose tools genuinely return bare arrays.
|
|
137
137
|
*/
|
|
138
138
|
bareArrayReturnTools?: string[];
|
|
139
|
+
/**
|
|
140
|
+
* v0.18.8 — operator's shell binary allowlist. When set, the
|
|
141
|
+
* `shell-binary-not-allowed` rule fires tier-1 errors on any
|
|
142
|
+
* `shell(command="X ...")` whose first token isn't in the list.
|
|
143
|
+
*
|
|
144
|
+
* **Lint = local advisory; runtime = authoritative.** The allowlist
|
|
145
|
+
* lint checks against here is the AUTHOR's environment, which may
|
|
146
|
+
* differ from production. Passing lint does NOT guarantee the call
|
|
147
|
+
* will run — the production runtime gate is the authoritative
|
|
148
|
+
* boundary. Per Perry's framing (thread `7aab6f3f`): immediate
|
|
149
|
+
* author feedback at compile-time, defense-in-depth with runtime.
|
|
150
|
+
*
|
|
151
|
+
* Undefined → lint skips this rule (no allowlist context); the
|
|
152
|
+
* runtime still default-denies at execution. This split lets adopter
|
|
153
|
+
* tooling lint with the production allowlist when known (CI pipelines
|
|
154
|
+
* loading the deployment's .env) while authoring tools can lint
|
|
155
|
+
* permissively without false-positive noise.
|
|
156
|
+
*/
|
|
157
|
+
shellAllowlist?: string[];
|
|
139
158
|
}
|
|
140
159
|
interface LintContext {
|
|
141
160
|
parsed: ParsedSkill;
|
|
@@ -156,6 +175,12 @@ interface LintContext {
|
|
|
156
175
|
localModelAliases: string[] | undefined;
|
|
157
176
|
localModelsAvailable: string[] | undefined;
|
|
158
177
|
bareArrayReturnTools: string[];
|
|
178
|
+
/**
|
|
179
|
+
* v0.18.8 — operator shell binary allowlist (see `LintOptions.shellAllowlist`).
|
|
180
|
+
* Undefined when not supplied — the `shell-binary-not-allowed` rule
|
|
181
|
+
* skips its check in that case (runtime still default-denies).
|
|
182
|
+
*/
|
|
183
|
+
shellAllowlist: string[] | undefined;
|
|
159
184
|
/**
|
|
160
185
|
* v0.9.1 — per-connector declared tool surface from `McpConnectorClass.staticTools()`.
|
|
161
186
|
* Map entry: connector name → tool array (declared surface) OR null (class doesn't
|
package/dist/lint.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lint.d.ts","sourceRoot":"","sources":["../src/lint.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,KAAK,WAAW,EAAgB,MAAM,aAAa,CAAC;AAGzF,OAAO,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEzD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAExD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,YAAY,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,8DAA8D;IAC9D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4CAA4C;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gFAAgF;IAChF,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,kBAAkB,IAAI,kBAAkB,CAAA;KAAE,CAAC,CAAC;IAC9D,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,mBAAmB,CAAC;IAC/C;;;;;;;OAOG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;;;OAMG;IACH,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B;;;;;;;OAOG;IACH,wBAAwB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACjD;;;;;;OAMG;IACH,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;IACjC,qEAAqE;IACrE,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B;;;;;;;;;;;OAWG;IACH,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC;;;;;;;;;;;;;;;OAeG;IACH,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"lint.d.ts","sourceRoot":"","sources":["../src/lint.ts"],"names":[],"mappings":"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"}
|
package/dist/lint.js
CHANGED
|
@@ -22,6 +22,7 @@ export async function lint(source, options) {
|
|
|
22
22
|
localModelAliases: localModelInfo?.aliases,
|
|
23
23
|
localModelsAvailable: localModelInfo?.modelsAvailable,
|
|
24
24
|
bareArrayReturnTools: options?.bareArrayReturnTools ?? [],
|
|
25
|
+
shellAllowlist: options?.shellAllowlist,
|
|
25
26
|
mcpConnectorStaticTools: collectMcpConnectorStaticToolsFromRegistry(options?.registry),
|
|
26
27
|
};
|
|
27
28
|
const findings = [];
|
|
@@ -64,6 +65,7 @@ export function lintSync(source, options) {
|
|
|
64
65
|
localModelAliases: options?.localModelAliases ?? collectLocalModelAliasesFromRegistry(options?.registry),
|
|
65
66
|
localModelsAvailable: options?.localModelsAvailable,
|
|
66
67
|
bareArrayReturnTools: options?.bareArrayReturnTools ?? [],
|
|
68
|
+
shellAllowlist: options?.shellAllowlist,
|
|
67
69
|
mcpConnectorStaticTools: collectMcpConnectorStaticToolsFromRegistry(options?.registry),
|
|
68
70
|
};
|
|
69
71
|
const findings = [];
|
|
@@ -1511,6 +1513,84 @@ const UNSAFE_SHELL_DISABLED = {
|
|
|
1511
1513
|
return findings;
|
|
1512
1514
|
},
|
|
1513
1515
|
};
|
|
1516
|
+
/**
|
|
1517
|
+
* v0.18.8 — author-time advisory for the operator's shell binary
|
|
1518
|
+
* allowlist. Per Perry's two-axes-decoupled rule (thread `7aab6f3f`):
|
|
1519
|
+
* binary-scope is a SEPARATE concern from syntax-scope, so this rule
|
|
1520
|
+
* is deliberately NOT part of the `unsafe-shell-*` family.
|
|
1521
|
+
*
|
|
1522
|
+
* Tier-1 error severity matches the runtime: an off-list binary will
|
|
1523
|
+
* refuse at execution time. Surfacing at compile-time gives the
|
|
1524
|
+
* author immediate "binary X not permitted" feedback rather than
|
|
1525
|
+
* runtime-failure-on-first-fire.
|
|
1526
|
+
*
|
|
1527
|
+
* **Lint is local advisory; runtime is authoritative.** This rule
|
|
1528
|
+
* checks against `LintOptions.shellAllowlist` which is the AUTHOR's
|
|
1529
|
+
* environment (their local `.env` or the linter's loaded config). The
|
|
1530
|
+
* production runtime may have a different allowlist — passing lint
|
|
1531
|
+
* does NOT guarantee the call will run. Authors lint with their own
|
|
1532
|
+
* env; CI pipelines linting against the deployment's .env catch the
|
|
1533
|
+
* production-environment-specific gaps.
|
|
1534
|
+
*
|
|
1535
|
+
* If `ctx.shellAllowlist` is undefined (LintOptions didn't supply one),
|
|
1536
|
+
* the rule skips silently — the runtime's default-deny still fires at
|
|
1537
|
+
* execution. This split prevents false-positive noise when authoring
|
|
1538
|
+
* tools lack the production-allowlist context.
|
|
1539
|
+
*
|
|
1540
|
+
* Unsafe path: `shell(..., unsafe=true)` resolves to `bash -c <body>`
|
|
1541
|
+
* at runtime; the first-token check is against the literal "bash". This
|
|
1542
|
+
* rule mirrors that: if the op is unsafe, the binary checked is "bash"
|
|
1543
|
+
* (regardless of what the body contains). Per Perry's reframe: no
|
|
1544
|
+
* parse-based binary enumeration on the unsafe path.
|
|
1545
|
+
*/
|
|
1546
|
+
const SHELL_BINARY_NOT_ALLOWED = {
|
|
1547
|
+
id: "shell-binary-not-allowed",
|
|
1548
|
+
severity: "error",
|
|
1549
|
+
description: "A `shell(command=\"X ...\")` op's binary `X` is not in the operator's shell allowlist. The runtime refuses the op at execution time.",
|
|
1550
|
+
remediation: "Either add the binary to `SKILLSCRIPT_SHELL_ALLOWLIST` in your `.env` (or `shellAllowlist` in `skillscript.config.json`), or refactor the skill to use a permitted binary. Run `skillfile shell-audit` to discover what binaries your existing corpus uses. Reminder: lint is a local advisory against your author-env allowlist; runtime enforcement is authoritative.",
|
|
1551
|
+
check: (ctx) => {
|
|
1552
|
+
if (ctx.shellAllowlist === undefined)
|
|
1553
|
+
return [];
|
|
1554
|
+
const findings = [];
|
|
1555
|
+
for (const [targetName, target] of ctx.parsed.targets) {
|
|
1556
|
+
walkOps(target.ops, (op) => {
|
|
1557
|
+
if (op.kind !== "shell")
|
|
1558
|
+
return;
|
|
1559
|
+
const binary = op.policy === "unsafe" ? "bash" : firstShellToken(op.body);
|
|
1560
|
+
if (binary === null)
|
|
1561
|
+
return;
|
|
1562
|
+
if (ctx.shellAllowlist.includes(binary))
|
|
1563
|
+
return;
|
|
1564
|
+
const displayed = op.policy === "unsafe" ? "bash" : binary;
|
|
1565
|
+
findings.push({
|
|
1566
|
+
rule: "shell-binary-not-allowed",
|
|
1567
|
+
severity: "error",
|
|
1568
|
+
message: `\`shell\` op in target '${targetName}': binary '${displayed}' is not in the configured allowlist (${ctx.shellAllowlist.length === 0 ? "empty list" : ctx.shellAllowlist.join(", ")}). ${op.policy === "unsafe" ? "Unsafe-mode shell runs as `bash -c`; 'bash' must be on the allowlist to permit ANY unsafe shell." : ""}`,
|
|
1569
|
+
block: targetName,
|
|
1570
|
+
extras: { binary: displayed, policy: op.policy ?? "safe" },
|
|
1571
|
+
});
|
|
1572
|
+
});
|
|
1573
|
+
}
|
|
1574
|
+
return findings;
|
|
1575
|
+
},
|
|
1576
|
+
};
|
|
1577
|
+
/**
|
|
1578
|
+
* v0.18.8 — extract the first whitespace-separated token from a shell
|
|
1579
|
+
* body for allowlist comparison. Best-effort: bodies with `${VAR}`
|
|
1580
|
+
* substitutions whose value would resolve to the binary at runtime
|
|
1581
|
+
* can't be statically analyzed (runtime check is the authoritative
|
|
1582
|
+
* gate). Returns null for empty / substitution-prefix bodies to skip
|
|
1583
|
+
* the lint check for those cases.
|
|
1584
|
+
*/
|
|
1585
|
+
function firstShellToken(body) {
|
|
1586
|
+
const trimmed = body.trim();
|
|
1587
|
+
if (trimmed.length === 0)
|
|
1588
|
+
return null;
|
|
1589
|
+
if (trimmed.startsWith("${") || trimmed.startsWith("$("))
|
|
1590
|
+
return null;
|
|
1591
|
+
const match = /^([^\s]+)/.exec(trimmed);
|
|
1592
|
+
return match === null ? null : match[1];
|
|
1593
|
+
}
|
|
1514
1594
|
/**
|
|
1515
1595
|
* Mutation-class op fired without author authorization. v0.14.1 refactored
|
|
1516
1596
|
* to share the classifier + authorization predicate with the runtime gate
|
|
@@ -2819,6 +2899,7 @@ const RULES = [
|
|
|
2819
2899
|
UNSAFE_SHELL_UNESCAPED_SUBST,
|
|
2820
2900
|
UNSAFE_SHELL_OP,
|
|
2821
2901
|
UNSAFE_SHELL_DISABLED,
|
|
2902
|
+
SHELL_BINARY_NOT_ALLOWED,
|
|
2822
2903
|
UNCONFIRMED_MUTATION,
|
|
2823
2904
|
UNQUOTED_SUBSTITUTION_IN_KWARG_VALUE,
|
|
2824
2905
|
DRAFT_WITH_TRIGGER,
|