Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

arnie-cli

Package Overview
Dependencies
Maintainers
1
Versions
9
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

arnie-cli - npm Package Compare versions

Comparing version
1.3.1
to
1.5.1
+126
dist/kb/store.js
// Local resolution knowledge base.
//
// After arnie verifies a fix it records the (symptom → root cause → fix) so the
// next time the same problem appears it can recognize it and apply the known fix
// instead of re-diagnosing from scratch. Plain append-only JSONL with keyword
// scoring — no embeddings, no network, no dependencies. The KB compounds: every
// resolved autonomous run adds an entry; every new run searches it first.
import fs from "node:fs";
import fsp from "node:fs/promises";
import os from "node:os";
import path from "node:path";
let kbFile = null;
let enabled = false;
export function initKb(opts) {
enabled = opts.enabled;
if (!enabled) {
kbFile = null;
return null;
}
const dir = opts.dir ?? path.join(os.homedir(), ".arnie", "kb");
try {
fs.mkdirSync(dir, { recursive: true });
}
catch {
/* best-effort */
}
kbFile = path.join(dir, "resolutions.jsonl");
return kbFile;
}
export function kbPath() {
return kbFile;
}
export function isKbEnabled() {
return enabled && kbFile !== null;
}
const STOP = new Set([
"the", "and", "for", "with", "that", "this", "from", "not", "are", "was", "but", "you", "your",
"when", "what", "why", "how", "has", "have", "had", "its", "it's", "they", "them", "then", "than",
"running", "error", "issue", "problem", "fix", "fixed", "after", "before", "into", "out",
]);
// Pull distinctive terms (error codes, service names, paths) out of free text.
export function tokenize(s) {
return s.toLowerCase().match(/[a-z0-9_.:/\\-]{3,}/g) ?? [];
}
function deriveSignals(...parts) {
const seen = new Set();
const out = [];
for (const t of tokenize(parts.join(" "))) {
if (STOP.has(t) || seen.has(t))
continue;
seen.add(t);
out.push(t);
if (out.length >= 12)
break;
}
return out;
}
export async function recordResolution(e) {
if (!enabled || !kbFile)
return null;
const entry = {
id: e.id ?? `kb_${Date.now().toString(36)}_${Math.floor(Math.random() * 1e6).toString(36)}`,
ts: e.ts ?? new Date().toISOString(),
symptom: e.symptom,
root_cause: e.root_cause,
fix: e.fix,
signals: e.signals && e.signals.length ? e.signals : deriveSignals(e.symptom, e.root_cause, e.fix),
platform: e.platform,
};
try {
await fsp.appendFile(kbFile, JSON.stringify(entry) + "\n");
return entry;
}
catch {
return null;
}
}
export async function loadAll() {
if (!kbFile)
return [];
try {
const raw = await fsp.readFile(kbFile, "utf8");
return raw
.trim()
.split("\n")
.filter(Boolean)
.map((l) => JSON.parse(l));
}
catch {
return [];
}
}
/**
* Score past resolutions against a query (a symptom or error string). A term
* shared with an entry's signals counts double; with its symptom/cause text,
* single. Returns the top matches with score > 0, best first.
*/
export async function searchResolutions(query, limit = 3) {
const entries = await loadAll();
if (entries.length === 0)
return [];
const qTerms = new Set(tokenize(query).filter((t) => !STOP.has(t)));
if (qTerms.size === 0)
return [];
const scored = entries.map((entry) => {
const signalSet = new Set((entry.signals ?? []).map((s) => s.toLowerCase()));
const textTerms = new Set(tokenize([entry.symptom, entry.root_cause].join(" ")));
let score = 0;
for (const t of qTerms) {
if (signalSet.has(t))
score += 2;
else if (textTerms.has(t))
score += 1;
}
return { entry, score };
});
return scored
.filter((m) => m.score > 0)
.sort((a, b) => b.score - a.score)
.slice(0, limit);
}
export function resetKb() {
kbFile = null;
enabled = false;
}
//# sourceMappingURL=store.js.map
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/kb/store.ts"],"names":[],"mappings":"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"}
// A one-bit handshake between the central safety engine and tools that have
// their own inline confirmation (shell, ssh). When the engine has already
// classified a call and decided to execute it, it sets this flag so the tool
// doesn't prompt a second time. Safe as module state because mutating tools are
// dispatched serially (one at a time) in the agent loop.
let engineApproved = false;
export function setEngineApproved(value) {
engineApproved = value;
}
export function isEngineApproved() {
return engineApproved;
}
//# sourceMappingURL=approval.js.map
{"version":3,"file":"approval.js","sourceRoot":"","sources":["../../src/safety/approval.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,0EAA0E;AAC1E,6EAA6E;AAC7E,gFAAgF;AAChF,yDAAyD;AAEzD,IAAI,cAAc,GAAG,KAAK,CAAC;AAE3B,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,cAAc,GAAG,KAAK,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO,cAAc,CAAC;AACxB,CAAC"}
// Persistent audit trail for the safety engine.
//
// Every decision the engine makes (and every rollback or resolution report) is
// appended as a JSON line to a per-run file, so an autonomous session leaves a
// durable, machine-readable record of exactly what it did and why — the "full
// audit trail" the autonomy design requires. The in-memory ledger in engine.ts
// stays for the live session; this is the on-disk, reviewable copy.
import fs from "node:fs";
import fsp from "node:fs/promises";
import os from "node:os";
import path from "node:path";
let auditFile = null;
let enabled = false;
function appendLine(rec) {
if (!enabled || !auditFile)
return;
const line = JSON.stringify({ ts: new Date().toISOString(), ...rec }) + "\n";
// fire-and-forget; the audit trail must never block or crash the hot path
fsp.appendFile(auditFile, line).catch(() => { });
}
/**
* Open a fresh per-run audit file. Returns its path (or null if disabled).
* `runId` lets a caller pin a stable filename; otherwise it's timestamped.
*/
export function initAudit(opts) {
enabled = opts.enabled;
if (!enabled) {
auditFile = null;
return null;
}
const dir = opts.dir ?? path.join(os.homedir(), ".arnie", "audit");
try {
fs.mkdirSync(dir, { recursive: true });
}
catch {
/* best-effort — a missing dir just means no audit, never a crash */
}
const stamp = (opts.runId ?? new Date().toISOString()).replace(/[:.]/g, "-");
auditFile = path.join(dir, `run-${stamp}.jsonl`);
appendLine({ kind: "note", detail: "audit log opened" });
return auditFile;
}
export function auditPath() {
return auditFile;
}
export function isAuditEnabled() {
return enabled && auditFile !== null;
}
export function recordAudit(rec) {
appendLine(rec);
}
// Test/teardown helper — reset module state between runs.
export function resetAudit() {
auditFile = null;
enabled = false;
}
//# sourceMappingURL=audit.js.map
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/safety/audit.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,EAAE;AACF,+EAA+E;AAC/E,+EAA+E;AAC/E,8EAA8E;AAC9E,+EAA+E;AAC/E,oEAAoE;AAEpE,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,GAAG,MAAM,kBAAkB,CAAC;AACnC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAW7B,IAAI,SAAS,GAAkB,IAAI,CAAC;AACpC,IAAI,OAAO,GAAG,KAAK,CAAC;AAEpB,SAAS,UAAU,CAAC,GAAgB;IAClC,IAAI,CAAC,OAAO,IAAI,CAAC,SAAS;QAAE,OAAO;IACnC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,GAAG,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC;IAC7E,0EAA0E;IAC1E,GAAG,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;AAClD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,IAAwD;IAChF,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IACvB,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,SAAS,GAAG,IAAI,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IACnE,IAAI,CAAC;QACH,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,oEAAoE;IACtE,CAAC;IACD,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC7E,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,KAAK,QAAQ,CAAC,CAAC;IACjD,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC,CAAC;IACzD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO,OAAO,IAAI,SAAS,KAAK,IAAI,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,GAAgB;IAC1C,UAAU,CAAC,GAAG,CAAC,CAAC;AAClB,CAAC;AAED,0DAA0D;AAC1D,MAAM,UAAU,UAAU;IACxB,SAAS,GAAG,IAAI,CAAC;IACjB,OAAO,GAAG,KAAK,CAAC;AAClB,CAAC"}
// The safety engine — the single decision point for every mutating tool call.
//
// dispatchTool() calls guardToolCall() before running any mutating tool. The
// engine classifies the call, consults the active policy, captures a rollback
// for yellow+ changes, writes an audit entry, and returns one of:
// execute — run it (rollback captured for yellow+)
// escalate — don't run; hand a structured approval request back to the model
// block — never run (black tier)
// cancelled — a human said no at an interactive confirm
//
// When the engine is inactive (setSafetyPolicy never called) tools run exactly
// as they did before — arnie's legacy behavior is preserved.
import chalk from "chalk";
import { log } from "../log.js";
import { confirm } from "../confirm.js";
import { classifyToolCall } from "./riskTier.js";
import { captureRollback } from "./rollback.js";
import { recordAudit } from "./audit.js";
import { INTERACTIVE_POLICY, modeForTier, tierRank, } from "./policy.js";
let policy = INTERACTIVE_POLICY;
let active = false;
export function setSafetyPolicy(p) {
policy = p;
active = true;
}
export function disableSafety() {
active = false;
}
export function isSafetyActive() {
return active;
}
export function getPolicy() {
return policy;
}
const TIER_ICON = { green: "🟢", yellow: "🟡", red: "🔴", black: "⚫" };
const auditLog = [];
export function getAuditLog() {
return auditLog;
}
// The most recent auto-revertible change, so a failed verification can undo it.
let lastRollback = null;
export function getLastRollback() {
return lastRollback;
}
export async function revertLast() {
const last = lastRollback;
const undo = last?.plan.undo;
if (!last || !undo) {
return "no automatic rollback is available for the last change";
}
await undo();
recordAudit({ kind: "rollback", tool: last.tool, detail: last.plan.describe });
const result = `reverted ${last.tool}: ${last.plan.describe}`;
lastRollback = null;
return result;
}
export async function guardToolCall(name, input) {
const assessment = classifyToolCall(name, input);
const tier = assessment.tier;
const mode = modeForTier(policy, tier);
const record = (decision) => {
auditLog.push({ ts: Date.now(), tool: name, tier, decision, reasons: assessment.reasons });
recordAudit({ kind: "decision", tool: name, tier, decision, reasons: assessment.reasons });
};
if (mode === "block") {
log(chalk.red(` ${TIER_ICON[tier]} ${tier.toUpperCase()} — blocked: ${assessment.reasons.join("; ")}`));
record("block");
return {
decision: "block",
tier,
assessment,
rollback: null,
message: `BLOCKED (${tier} tier): ${assessment.reasons.join("; ")}. This action is never performed. Do not retry it or attempt a variation that bypasses this gate — find a safe alternative, or stop and report why the task can't be completed safely.`,
};
}
if (mode === "escalate") {
log(chalk.yellow(` ${TIER_ICON[tier]} ${tier.toUpperCase()} — escalating for human approval: ${assessment.reasons.join("; ")}`));
record("escalate");
return {
decision: "escalate",
tier,
assessment,
rollback: null,
message: `ESCALATION REQUIRED (${tier} tier): ${assessment.reasons.join("; ")}. This action was NOT executed. Stop now and produce a structured escalation for a human: (1) the symptom, (2) what you have already tried, (3) the evidence/root-cause hypothesis, (4) this exact proposed action, (5) its rollback plan, (6) the current safe holding state. Do not work around this gate.`,
};
}
if (mode === "confirm") {
log(chalk.yellow(` ${TIER_ICON[tier]} ${tier.toUpperCase()} — ${assessment.reasons.join("; ")}`));
const ok = await confirm(` Proceed with this ${tier} action?`);
if (!ok) {
record("cancelled");
return {
decision: "cancelled",
tier,
assessment,
rollback: null,
message: "Cancelled by the operator. Try a different approach or ask what they would prefer.",
};
}
}
// execute (auto, or confirmed) — capture a rollback for yellow+
let rollback = null;
if (tierRank(tier) >= tierRank("yellow")) {
rollback = await captureRollback(name, input);
if (rollback?.auto)
lastRollback = { tool: name, plan: rollback };
}
const how = mode === "confirm" ? "approved" : "auto";
log(chalk.dim(` ${TIER_ICON[tier]} ${tier} — ${how}${rollback ? ` · rollback: ${rollback.describe}` : ""}`));
record("execute");
return { decision: "execute", tier, assessment, rollback };
}
//# sourceMappingURL=engine.js.map
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/safety/engine.ts"],"names":[],"mappings":"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"}
// Risk-tiered autonomy policy — the safety spine of arnie's autonomous mode.
//
// Every mutating tool call is classified into a RiskTier (see riskTier.ts), and
// the active SafetyPolicy decides what happens to each tier: run it, ask a human,
// escalate for human approval, or hard-block it. The policy is what makes arnie
// "fully autonomous but safe": Green/Yellow run unattended, Red escalates, Black
// never runs.
const TIER_RANK = { green: 0, yellow: 1, red: 2, black: 3 };
export function tierRank(t) {
return TIER_RANK[t];
}
export function tierAtLeast(t, floor) {
return TIER_RANK[t] >= TIER_RANK[floor];
}
/**
* Build a policy from the two knobs a user sets: are we unattended, and how high
* is the autonomy ceiling. Green is always auto (reads never gate); black is
* always blocked. Tiers at or below the ceiling auto-run; the tier above the
* ceiling escalates when autonomous, or asks a human when interactive.
*/
export function buildPolicy(opts) {
const { autonomous, ceiling } = opts;
const aboveCeiling = autonomous ? "escalate" : "confirm";
const mode = (tier) => tierRank(tier) <= tierRank(ceiling) ? "auto" : aboveCeiling;
return {
green: "auto",
yellow: mode("yellow"),
red: mode("red"),
// Black is never auto-run. Unattended it is hard-blocked; interactively a
// human can still override at an explicit ⚫ prompt (arnie's legacy
// destructive-confirm behavior), so a skilled operator isn't locked out.
black: autonomous ? "block" : "confirm",
autonomous,
autoRevert: opts.autoRevert ?? autonomous,
};
}
// The default interactive policy reproduces arnie's historical behavior — safe
// things run, destructive things ask — but now uniformly across every tool, not
// just `shell`.
export const INTERACTIVE_POLICY = buildPolicy({
autonomous: false,
ceiling: "green",
});
// The recommended autonomous policy: Green/Yellow run, Red escalates, Black blocks.
export const AUTONOMOUS_POLICY = buildPolicy({
autonomous: true,
ceiling: "yellow",
});
export function modeForTier(policy, tier) {
return policy[tier];
}
//# sourceMappingURL=policy.js.map
{"version":3,"file":"policy.js","sourceRoot":"","sources":["../../src/safety/policy.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,EAAE;AACF,gFAAgF;AAChF,kFAAkF;AAClF,gFAAgF;AAChF,iFAAiF;AACjF,cAAc;AAwBd,MAAM,SAAS,GAA6B,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;AAEtF,MAAM,UAAU,QAAQ,CAAC,CAAW;IAClC,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,CAAW,EAAE,KAAe;IACtD,OAAO,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC;AAC1C,CAAC;AAQD;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,IAI3B;IACC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACrC,MAAM,YAAY,GAAa,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;IACnE,MAAM,IAAI,GAAG,CAAC,IAAc,EAAY,EAAE,CACxC,QAAQ,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC;IAC9D,OAAO;QACL,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC;QACtB,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC;QAChB,0EAA0E;QAC1E,mEAAmE;QACnE,yEAAyE;QACzE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;QACvC,UAAU;QACV,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,UAAU;KAC1C,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,gFAAgF;AAChF,gBAAgB;AAChB,MAAM,CAAC,MAAM,kBAAkB,GAAiB,WAAW,CAAC;IAC1D,UAAU,EAAE,KAAK;IACjB,OAAO,EAAE,OAAO;CACjB,CAAC,CAAC;AAEH,oFAAoF;AACpF,MAAM,CAAC,MAAM,iBAAiB,GAAiB,WAAW,CAAC;IACzD,UAAU,EAAE,IAAI;IAChB,OAAO,EAAE,QAAQ;CAClB,CAAC,CAAC;AAEH,MAAM,UAAU,WAAW,CAAC,MAAoB,EAAE,IAAc;IAC9D,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;AACtB,CAAC"}
// Structured outcomes for autonomous runs — the DOCUMENT and ESCALATE steps of
// the resolution loop, written to durable, human-readable artifacts.
//
// At the end of an autonomous resolution the agent calls the resolution_report
// tool (see registry.ts), which builds one of these and writes it to the reports
// dir: a resolved run gets a resolution report; a blocked one gets an escalation
// handoff a human can act on. Both are also recorded in the audit trail.
import fs from "node:fs";
import fsp from "node:fs/promises";
import os from "node:os";
import path from "node:path";
import { recordAudit } from "./audit.js";
let reportsDir = null;
let last = null;
export function initReports(dir) {
reportsDir = dir ?? path.join(os.homedir(), ".arnie", "reports");
try {
fs.mkdirSync(reportsDir, { recursive: true });
}
catch {
/* best-effort */
}
return reportsDir;
}
export function reportsDirectory() {
return reportsDir;
}
function renderMarkdown(r, ts) {
const title = r.status === "resolved"
? "Resolution report"
: r.status === "escalated"
? "Escalation — human action required"
: "Unresolved — could not complete autonomously";
const lines = [`# ${title}`, "", `- **Status:** ${r.status}`, `- **When:** ${ts}`, "", `## Symptom`, r.symptom || "(not stated)"];
if (r.root_cause)
lines.push("", `## Root cause`, r.root_cause);
if (r.actions_taken?.length) {
lines.push("", `## Actions taken`);
for (const a of r.actions_taken)
lines.push(`- ${a}`);
}
if (r.verification)
lines.push("", `## Verification`, r.verification);
if (r.escalation) {
lines.push("", `## Escalation`, `- **Why it's blocked:** ${r.escalation.reason}`, `- **Proposed action (needs human approval):** ${r.escalation.proposed_action}`, `- **Rollback if approved:** ${r.escalation.rollback}`, `- **Safe holding state right now:** ${r.escalation.holding_state}`);
}
lines.push("", `## Summary`, r.summary || "(none)", "");
return lines.join("\n");
}
/**
* Write a structured outcome to the reports dir and record it in the audit
* trail. Returns the report file path (null if no reports dir or the write
* fails — the audit record is still written either way).
*/
export async function writeReport(r) {
const ts = new Date().toISOString();
recordAudit({ kind: "report", decision: r.status, detail: r.summary });
if (!reportsDir) {
last = { report: r, path: null };
return null;
}
const file = path.join(reportsDir, `${r.status}-${ts.replace(/[:.]/g, "-")}.md`);
try {
await fsp.writeFile(file, renderMarkdown(r, ts), "utf8");
last = { report: r, path: file };
return file;
}
catch {
last = { report: r, path: null };
return null;
}
}
export function lastReport() {
return last;
}
export function resetLastReport() {
last = null;
}
export function resetReports() {
reportsDir = null;
last = null;
}
//# sourceMappingURL=report.js.map
{"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/safety/report.ts"],"names":[],"mappings":"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"}
// Risk classifier — turns a concrete tool call into a RiskTier + rationale.
//
// This is the judgement at the center of safe autonomy. It is deliberately
// conservative: when unsure, it rounds UP (a borderline command lands in a
// higher tier and gets a human, rather than silently running). It reuses
// shell.ts's battle-tested `looksDestructive` patterns as a backstop so nothing
// already known to be destructive can slip through as green.
import { isMutatingTool } from "../dryRun.js";
import { looksDestructive } from "../tools/shell.js";
import { tierRank } from "./policy.js";
// ⚫ BLACK — never run autonomously or interactively. Catastrophic, irreversible
// at the device level, or defeats a security control.
const BLACK = [
{ pattern: /--no-preserve-root/i, reason: "explicit root-filesystem wipe (--no-preserve-root)" },
{ pattern: /\brm\s+-[a-zA-Z]*r[a-zA-Z]*f[a-zA-Z]*\s+\/(?:\s|$|\*)/i, reason: "rm -rf of the root filesystem" },
{ pattern: /\brm\s+-[a-zA-Z]*f[a-zA-Z]*r[a-zA-Z]*\s+\/(?:\s|$|\*)/i, reason: "rm -fr of the root filesystem" },
{ pattern: /\brm\s+-[a-zA-Z]*[rf]{2}[a-zA-Z]*\s+~(?:\s|$|\/)/i, reason: "recursive force delete of the home directory" },
{ pattern: /:\(\)\s*\{\s*:\s*\|\s*:?\s*&\s*\}\s*;\s*:/, reason: "fork bomb" },
{ pattern: /\bmkfs(?:\.\w+)?\b/i, reason: "mkfs — destroys all data on a filesystem" },
{ pattern: /\bdd\b[^\n]*\bof=\/dev\/(?:sd|nvme|disk|hd|vd)/i, reason: "dd raw write to a block device" },
{ pattern: /\bformat\b\s+[a-zA-Z]:/i, reason: "drive format" },
{ pattern: /(?:>|>>)\s*\/dev\/(?:sd|nvme|disk|hd)[a-z]/i, reason: "raw write to a block device" },
// Security controls — disabling these is never an autonomous remediation.
{ pattern: /Set-MpPreference[^\n]*-Disable\w*\s+\$true/i, reason: "disables Microsoft Defender" },
{ pattern: /\b(?:Stop-Service|sc(?:\.exe)?\s+(?:stop|config)\s+\w*)\b[^\n]*WinDefend/i, reason: "disables Microsoft Defender service" },
{ pattern: /netsh\s+advfirewall\s+set\s+\w+\s+state\s+off/i, reason: "disables the Windows firewall" },
{ pattern: /\bufw\s+disable\b/i, reason: "disables the host firewall (ufw)" },
{ pattern: /\bsystemctl\s+(?:stop|disable|mask)\s+(?:firewalld|ufw|apparmor)\b/i, reason: "disables a host security service" },
{ pattern: /\bsetenforce\s+0\b/i, reason: "disables SELinux enforcement" },
{ pattern: /\bchmod\s+(?:-R\s+)?0?777\s+\/(?:\s|$)/i, reason: "world-writable permissions on the root filesystem" },
{ pattern: /\bchown\s+-R\s+\S+\s+\/(?:\s|$)/i, reason: "recursive ownership change of the root filesystem" },
];
// 🔴 RED — destructive, irreversible, or high blast-radius. Escalate for a human.
const RED = [
{ pattern: /\b(?:shutdown|reboot|halt|poweroff)\b/i, reason: "shuts down or reboots the host" },
{ pattern: /\b(?:Restart-Computer|Stop-Computer)\b/i, reason: "shuts down or reboots the host" },
{ pattern: /\breg(?:\.exe)?\s+(?:delete|add)\b/i, reason: "registry modification" },
{ pattern: /\bRemove-ItemProperty\b/i, reason: "registry value removal" },
{ pattern: /\b(?:Set|New)-ItemProperty\b[^\n]*HK(?:LM|CR|U)/i, reason: "registry write under a machine-wide hive" },
{ pattern: /\brm\s+-[a-zA-Z]*[rf]{1,2}[a-zA-Z]*\s+/i, reason: "recursive/force file deletion" },
{ pattern: /\bRemove-Item\b[^\n]*-Recurse\b/i, reason: "recursive file deletion" },
{ pattern: /\bdel\b\s+\/[sS]\b/i, reason: "recursive delete (del /s)" },
{ pattern: /\b(?:sc(?:\.exe)?\s+delete|sc(?:\.exe)?\s+stop)\b/i, reason: "service control delete/stop" },
{ pattern: /\bStop-Service\b/i, reason: "stops a service (leaves it down)" },
{ pattern: /\bnet\s+stop\b/i, reason: "stops a service (leaves it down)" },
{ pattern: /\bsystemctl\s+(?:stop|disable|mask)\b/i, reason: "stops/disables a service" },
{ pattern: /\bdiskpart\b/i, reason: "disk partitioning" },
{ pattern: /\bbcdedit\b/i, reason: "boot configuration edit" },
{ pattern: /\b(?:parted|fdisk|gdisk)\b/i, reason: "disk partition tool" },
{ pattern: /\bDisable-NetAdapter\b/i, reason: "disables a network adapter" },
{ pattern: /\bnetsh\s+interface\b/i, reason: "network interface change" },
];
// 🟡 YELLOW — a real change, but recoverable. Run with a rollback captured.
const YELLOW = [
{ pattern: /\b(?:Restart-Service|Start-Service)\b/i, reason: "restarts/starts a service" },
{ pattern: /\bsystemctl\s+(?:restart|start|reload)\b/i, reason: "restarts/starts a service" },
{ pattern: /\b(?:sc(?:\.exe)?\s+start|net\s+start)\b/i, reason: "starts a service" },
{ pattern: /\bservice\s+\S+\s+(?:restart|start|reload)\b/i, reason: "restarts/starts a service" },
{ pattern: /ipconfig\s+\/(?:flushdns|registerdns|release|renew)/i, reason: "resets DNS/DHCP state" },
{ pattern: /\bdscacheutil\s+-flushcache\b/i, reason: "flushes the DNS cache" },
{ pattern: /\bnetsh\s+(?:winsock|int\s+ip)\s+reset\b/i, reason: "resets the network stack" },
{ pattern: /\b(?:kill|pkill)\b\s+(?:-\w+\s+)?\S/i, reason: "terminates a process" },
{ pattern: /\btaskkill\b/i, reason: "terminates a process" },
{ pattern: /\bStop-Process\b/i, reason: "terminates a process" },
{ pattern: /\b(?:apt|apt-get|yum|dnf|pacman)\s+(?:install|update|upgrade|remove|purge|autoremove)\b/i, reason: "package manager change" },
{ pattern: /\bnpm\s+(?:install|i|uninstall|update)\b/i, reason: "npm package change" },
{ pattern: /\b(?:winget|choco)\s+(?:install|upgrade|uninstall)\b/i, reason: "package manager change" },
{ pattern: /\b(?:pip|pip3)\s+(?:install|uninstall)\b/i, reason: "pip package change" },
{ pattern: /\bbrew\s+(?:install|upgrade|uninstall)\b/i, reason: "brew package change" },
{ pattern: /\b(?:chmod|chown|icacls|takeown)\b/i, reason: "permission/ownership change" },
{ pattern: /\bsed\s+-i\b/i, reason: "in-place file edit" },
{ pattern: /\brm\b\s+(?!-[a-zA-Z]*[rf])\S/i, reason: "file deletion" },
{ pattern: /\b(?:del|erase)\b\s+(?!\/)/i, reason: "file deletion" },
{ pattern: /\bRemove-Item\b/i, reason: "file deletion" },
];
function firstMatch(cmd, pats) {
for (const { pattern, reason } of pats) {
if (pattern.test(cmd))
return reason;
}
return null;
}
// Classify a raw command string (shell / ssh / monitor / background).
function classifyCommand(cmd, blastRadius) {
const black = firstMatch(cmd, BLACK);
if (black)
return { tier: "black", reasons: [black], reversible: false, blastRadius };
const red = firstMatch(cmd, RED);
if (red)
return { tier: "red", reasons: [red], reversible: false, blastRadius };
const yellow = firstMatch(cmd, YELLOW);
if (yellow)
return { tier: "yellow", reasons: [yellow], reversible: false, blastRadius };
// Backstop: anything shell.ts already considers destructive but our tiers
// didn't specifically name is at least yellow, never green.
const destructive = looksDestructive(cmd);
if (destructive) {
return { tier: "yellow", reasons: [`flagged destructive: ${destructive}`], reversible: false, blastRadius };
}
return { tier: "green", reasons: ["read-only / idempotent command"], reversible: true, blastRadius };
}
// System-critical paths — writing here is RED even via the file tools.
const SENSITIVE_PATH = [
/^\/etc(?:\/|$)/i,
/^\/boot(?:\/|$)/i,
/^\/sys(?:\/|$)/i,
/^\/usr\/(?:bin|sbin|lib)(?:\/|$)/i,
/^\/(?:bin|sbin)(?:\/|$)/i,
/^[a-zA-Z]:\\Windows(?:\\|$)/i,
/^[a-zA-Z]:\\Program Files(?: \(x86\))?(?:\\|$)/i,
/\bsystem32\b/i,
/^\/System(?:\/|$)/,
/^\/Library(?:\/|$)/,
];
function isSensitivePath(p) {
return SENSITIVE_PATH.some((re) => re.test(p));
}
/**
* Classify any tool call. Read-only tools are always green. Mutating tools are
* routed by kind: command-bearing tools go through the command classifier;
* file-writing tools are yellow (reversible via backup) or red on a sensitive
* path; an unknown mutating tool is treated as red.
*/
export function classifyToolCall(name, input) {
if (!isMutatingTool(name)) {
return { tier: "green", reasons: ["read-only tool"], reversible: true, blastRadius: "single" };
}
const arg = (input ?? {});
if (name === "shell" || name === "shell_background" || name === "monitor") {
const cmd = typeof arg.command === "string" ? arg.command : "";
return classifyCommand(cmd, "single");
}
if (name === "ssh_exec") {
const cmd = typeof arg.command === "string" ? arg.command : "";
const host = typeof arg.host === "string" ? arg.host : "a host";
const a = classifyCommand(cmd, "host");
// Acting on another machine is never trivially green.
if (tierRank(a.tier) < tierRank("yellow")) {
a.tier = "yellow";
a.reasons = [`remote command on ${host}`];
}
else {
a.reasons.unshift(`remote command on ${host}`);
}
return a;
}
if (name === "write_file" || name === "edit_file" || name === "apply_patch" || name === "scp_get") {
const p = typeof arg.path === "string" ? arg.path : typeof arg.local_path === "string" ? arg.local_path : "";
if (isSensitivePath(p)) {
return { tier: "red", reasons: [`writes a system-critical path: ${p}`], reversible: true, blastRadius: "host" };
}
return { tier: "yellow", reasons: [`modifies a file: ${p || "(unspecified)"}`], reversible: true, blastRadius: "single" };
}
if (name === "shell_kill") {
return { tier: "yellow", reasons: ["terminates a background job"], reversible: false, blastRadius: "single" };
}
// Unknown mutating tool — round up to red so a human looks.
return { tier: "red", reasons: [`unclassified mutating tool: ${name}`], reversible: false, blastRadius: "unknown" };
}
//# sourceMappingURL=riskTier.js.map
{"version":3,"file":"riskTier.js","sourceRoot":"","sources":["../../src/safety/riskTier.ts"],"names":[],"mappings":"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"}
// Rollback capture — "rollback-first" remediation.
//
// Before a yellow+ change runs, the engine snapshots whatever the change is
// about to overwrite, so a failed verification can be auto-reverted. File
// mutations get a real, automatic undo (the prior bytes, held for the session).
// Arbitrary shell changes can't be generically snapshotted, so they get a
// record-only note that travels with the audit trail and any escalation.
import fs from "node:fs/promises";
const FILE_TOOLS = new Set(["write_file", "edit_file", "apply_patch", "scp_get"]);
/**
* Snapshot the state a tool call is about to change. Returns a plan whose undo()
* restores it, or a record-only note when no automatic undo is possible.
*/
export async function captureRollback(name, input) {
const arg = (input ?? {});
if (FILE_TOOLS.has(name)) {
const target = typeof arg.path === "string" ? arg.path : typeof arg.local_path === "string" ? arg.local_path : "";
if (!target)
return null;
let prior = null;
try {
prior = await fs.readFile(target);
}
catch {
prior = null; // file does not exist yet
}
if (prior === null) {
return {
auto: true,
describe: `delete ${target} (it did not exist before this change)`,
undo: async () => {
try {
await fs.unlink(target);
}
catch {
/* already gone — nothing to undo */
}
},
};
}
const bytes = prior;
return {
auto: true,
describe: `restore ${target} to its prior ${bytes.length}-byte contents`,
undo: async () => {
await fs.writeFile(target, bytes);
},
};
}
// Command-based changes have no generic automatic undo. Record the fact so the
// audit trail and escalations are honest about it.
return {
auto: false,
describe: `no automatic rollback for '${name}'; prior state was not snapshotted`,
};
}
//# sourceMappingURL=rollback.js.map
{"version":3,"file":"rollback.js","sourceRoot":"","sources":["../../src/safety/rollback.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,EAAE;AACF,4EAA4E;AAC5E,0EAA0E;AAC1E,gFAAgF;AAChF,0EAA0E;AAC1E,yEAAyE;AAEzE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AASlC,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC;AAElF;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAY,EAAE,KAAc;IAChE,MAAM,GAAG,GAAG,CAAC,KAAK,IAAI,EAAE,CAA4B,CAAC;IAErD,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,MAAM,MAAM,GACV,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;QACrG,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QAEzB,IAAI,KAAK,GAAkB,IAAI,CAAC;QAChC,IAAI,CAAC;YACH,KAAK,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACpC,CAAC;QAAC,MAAM,CAAC;YACP,KAAK,GAAG,IAAI,CAAC,CAAC,0BAA0B;QAC1C,CAAC;QAED,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,OAAO;gBACL,IAAI,EAAE,IAAI;gBACV,QAAQ,EAAE,UAAU,MAAM,wCAAwC;gBAClE,IAAI,EAAE,KAAK,IAAI,EAAE;oBACf,IAAI,CAAC;wBACH,MAAM,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;oBAC1B,CAAC;oBAAC,MAAM,CAAC;wBACP,oCAAoC;oBACtC,CAAC;gBACH,CAAC;aACF,CAAC;QACJ,CAAC;QAED,MAAM,KAAK,GAAG,KAAK,CAAC;QACpB,OAAO;YACL,IAAI,EAAE,IAAI;YACV,QAAQ,EAAE,WAAW,MAAM,iBAAiB,KAAK,CAAC,MAAM,gBAAgB;YACxE,IAAI,EAAE,KAAK,IAAI,EAAE;gBACf,MAAM,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACpC,CAAC;SACF,CAAC;IACJ,CAAC;IAED,+EAA+E;IAC/E,mDAAmD;IACnD,OAAO;QACL,IAAI,EAAE,KAAK;QACX,QAAQ,EAAE,8BAA8B,IAAI,oCAAoC;KACjF,CAAC;AACJ,CAAC"}
// Task-queue plumbing for `arnie --serve <dir>`.
//
// Drop a `*.task` file into <dir> (its contents are the task in plain English),
// and arnie — running unattended — claims it, works it autonomously, writes a
// `<name>.outcome.json` next to it, and archives the task into <dir>/done/. This
// is the file-based intake that lets a queue, a cron, or another service hand
// work to an autonomous arnie without a human in the loop.
//
// These are pure, testable helpers; the poll loop that drives them lives in
// cli.ts (it needs the agent/model and is a thin wrapper over claim → run →
// writeOutcome → archive).
import fs from "node:fs/promises";
import path from "node:path";
/** List and read every pending `*.task` file in `dir`, oldest name first. */
export async function claimTasks(dir) {
let names;
try {
names = (await fs.readdir(dir)).filter((n) => n.endsWith(".task"));
}
catch {
return [];
}
const out = [];
for (const n of names.sort()) {
const file = path.join(dir, n);
try {
const task = (await fs.readFile(file, "utf8")).trim();
if (task)
out.push({ file, name: n.replace(/\.task$/, ""), task });
}
catch {
/* skip unreadable entries */
}
}
return out;
}
/** Write a task's structured outcome alongside it as `<name>.outcome.json`. */
export async function writeOutcome(dir, name, outcome) {
const file = path.join(dir, `${name}.outcome.json`);
await fs.writeFile(file, JSON.stringify(outcome, null, 2) + "\n", "utf8");
return file;
}
/** Move a processed `.task` file into <dir>/done/ so it isn't picked up again. */
export async function archiveTask(dir, taskFile) {
const doneDir = path.join(dir, "done");
try {
await fs.mkdir(doneDir, { recursive: true });
await fs.rename(taskFile, path.join(doneDir, path.basename(taskFile)));
}
catch {
/* best-effort — a failed archive just means it may be retried next sweep */
}
}
//# sourceMappingURL=serve.js.map
{"version":3,"file":"serve.js","sourceRoot":"","sources":["../src/serve.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,EAAE;AACF,gFAAgF;AAChF,8EAA8E;AAC9E,iFAAiF;AACjF,8EAA8E;AAC9E,2DAA2D;AAC3D,EAAE;AACF,4EAA4E;AAC5E,4EAA4E;AAC5E,2BAA2B;AAE3B,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAgB7B,6EAA6E;AAC7E,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAW;IAC1C,IAAI,KAAe,CAAC;IACpB,IAAI,CAAC;QACH,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IACrE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,GAAG,GAAgB,EAAE,CAAC;IAC5B,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAC/B,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACtD,IAAI,IAAI;gBAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QACrE,CAAC;QAAC,MAAM,CAAC;YACP,6BAA6B;QAC/B,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,+EAA+E;AAC/E,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAW,EAAE,IAAY,EAAE,OAAoB;IAChF,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,eAAe,CAAC,CAAC;IACpD,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;IAC1E,OAAO,IAAI,CAAC;AACd,CAAC;AAED,kFAAkF;AAClF,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,GAAW,EAAE,QAAgB;IAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACvC,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACzE,CAAC;IAAC,MAAM,CAAC;QACP,4EAA4E;IAC9E,CAAC;AACH,CAAC"}
// Tests for the P1 autonomy + safety engine: the risk classifier, the policy
// matrix, the guard decisions, and a real rollback round-trip. Run with
// `npm run test:safety` (also chained into `npm test`).
import fs from "node:fs/promises";
import os from "node:os";
import path from "node:path";
import { classifyToolCall } from "./safety/riskTier.js";
import { buildPolicy, INTERACTIVE_POLICY, AUTONOMOUS_POLICY } from "./safety/policy.js";
import { setSafetyPolicy, guardToolCall, revertLast } from "./safety/engine.js";
import { initAudit, recordAudit, resetAudit } from "./safety/audit.js";
import { initReports, writeReport, resetReports } from "./safety/report.js";
import { initKb, recordResolution, searchResolutions, resetKb } from "./kb/store.js";
import { claimTasks, writeOutcome, archiveTask } from "./serve.js";
const cases = [];
function check(name, pass, detail) {
cases.push({ name, pass, detail });
}
// ── Classifier ────────────────────────────────────────────────────────────
function classifyTests() {
const expect = [
// green — read-only or idempotent diagnostics
{ tier: "green", tool: "read_file", input: { path: "/x" } },
{ tier: "green", tool: "list_dir", input: { path: "/x" } },
{ tier: "green", tool: "shell", input: { command: "Get-Service Spooler" } },
{ tier: "green", tool: "shell", input: { command: "ipconfig /all" } },
{ tier: "green", tool: "shell", input: { command: "ping 8.8.8.8" } },
{ tier: "green", tool: "shell", input: { command: "systemctl status nginx" } },
// yellow — recoverable changes
{ tier: "yellow", tool: "shell", input: { command: "Restart-Service Spooler" } },
{ tier: "yellow", tool: "shell", input: { command: "ipconfig /flushdns" } },
{ tier: "yellow", tool: "shell", input: { command: "kill 1234" } },
{ tier: "yellow", tool: "shell", input: { command: "apt install nginx" } },
{ tier: "yellow", tool: "write_file", input: { path: "/home/u/notes.txt", content: "x" } },
{ tier: "yellow", tool: "edit_file", input: { path: "/home/u/app.conf", old_string: "a", new_string: "b" } },
{ tier: "yellow", tool: "ssh_exec", input: { host: "web1", command: "ls -la" } },
// red — destructive / irreversible / high blast-radius
{ tier: "red", tool: "shell", input: { command: "shutdown /r /t 0" } },
{ tier: "red", tool: "shell", input: { command: "reg delete HKLM\\Software\\Foo /f" } },
{ tier: "red", tool: "shell", input: { command: "rm -rf /tmp/build" } },
{ tier: "red", tool: "shell", input: { command: "Stop-Service MSSQLSERVER" } },
{ tier: "red", tool: "write_file", input: { path: "/etc/passwd", content: "x" } },
{ tier: "red", tool: "ssh_exec", input: { host: "web1", command: "shutdown -h now" } },
// black — catastrophic or security-disabling
{ tier: "black", tool: "shell", input: { command: "rm -rf /" } },
{ tier: "black", tool: "shell", input: { command: "mkfs.ext4 /dev/sda1" } },
{ tier: "black", tool: "shell", input: { command: "dd if=/dev/zero of=/dev/sda" } },
{ tier: "black", tool: "shell", input: { command: "Set-MpPreference -DisableRealtimeMonitoring $true" } },
{ tier: "black", tool: "shell", input: { command: "ufw disable" } },
{ tier: "black", tool: "shell", input: { command: "format c:" } },
];
for (const e of expect) {
const a = classifyToolCall(e.tool, e.input);
check(`classify ${e.tier}: ${e.tool} ${JSON.stringify(e.input)}`, a.tier === e.tier, a.tier === e.tier ? undefined : `expected ${e.tier}, got ${a.tier} (${a.reasons.join("; ")})`);
}
}
// ── Policy matrix ─────────────────────────────────────────────────────────
function policyTests() {
check("interactive: yellow confirms", INTERACTIVE_POLICY.yellow === "confirm", `got ${INTERACTIVE_POLICY.yellow}`);
check("interactive: red confirms", INTERACTIVE_POLICY.red === "confirm", `got ${INTERACTIVE_POLICY.red}`);
check("interactive: green auto", INTERACTIVE_POLICY.green === "auto", `got ${INTERACTIVE_POLICY.green}`);
check("autonomous: green auto", AUTONOMOUS_POLICY.green === "auto", `got ${AUTONOMOUS_POLICY.green}`);
check("autonomous: yellow auto", AUTONOMOUS_POLICY.yellow === "auto", `got ${AUTONOMOUS_POLICY.yellow}`);
check("autonomous: red escalates", AUTONOMOUS_POLICY.red === "escalate", `got ${AUTONOMOUS_POLICY.red}`);
check("autonomous: black blocks", AUTONOMOUS_POLICY.black === "block", `got ${AUTONOMOUS_POLICY.black}`);
const strict = buildPolicy({ autonomous: true, ceiling: "green" });
check("autonomous ceiling=green: yellow escalates", strict.yellow === "escalate", `got ${strict.yellow}`);
const loose = buildPolicy({ autonomous: true, ceiling: "red" });
check("autonomous ceiling=red: red auto", loose.red === "auto", `got ${loose.red}`);
check("autonomous ceiling=red: black still blocks", loose.black === "block", `got ${loose.black}`);
}
// ── Engine decisions ──────────────────────────────────────────────────────
async function engineTests() {
setSafetyPolicy(AUTONOMOUS_POLICY);
const green = await guardToolCall("read_file", { path: "/x" });
check("engine: green executes", green.decision === "execute" && green.tier === "green", `got ${green.decision}/${green.tier}`);
const yellow = await guardToolCall("shell", { command: "Restart-Service Spooler" });
check("engine: yellow executes", yellow.decision === "execute" && yellow.tier === "yellow", `got ${yellow.decision}/${yellow.tier}`);
const red = await guardToolCall("shell", { command: "shutdown /r" });
check("engine: red escalates (not executed)", red.decision === "escalate" && /ESCALATION REQUIRED/.test(red.message ?? ""), `got ${red.decision}`);
const black = await guardToolCall("shell", { command: "rm -rf /" });
check("engine: black blocked", black.decision === "block" && black.tier === "black", `got ${black.decision}/${black.tier}`);
}
// ── Rollback round-trip ───────────────────────────────────────────────────
async function rollbackTests() {
setSafetyPolicy(AUTONOMOUS_POLICY);
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "arnie-safety-test-"));
// existing file: guard snapshots the prior bytes; revert restores them
const f1 = path.join(dir, "config.txt");
await fs.writeFile(f1, "ORIGINAL");
const g1 = await guardToolCall("write_file", { path: f1, content: "CHANGED" });
check("rollback: yellow write captured an auto rollback", g1.rollback?.auto === true, JSON.stringify(g1.rollback?.describe));
await fs.writeFile(f1, "CHANGED"); // simulate the tool actually running
const reverted = await revertLast();
const restored = await fs.readFile(f1, "utf8");
check("rollback: revertLast restores prior contents", restored === "ORIGINAL", `file is now "${restored}" (${reverted})`);
// new file: rollback is "delete it"
const f2 = path.join(dir, "brand-new.txt");
await guardToolCall("write_file", { path: f2, content: "NEW" });
await fs.writeFile(f2, "NEW"); // simulate the tool creating it
await revertLast();
let exists = true;
try {
await fs.access(f2);
}
catch {
exists = false;
}
check("rollback: revert of a new file deletes it", !exists, exists ? "file still present" : undefined);
// no rollback available after a green action
await guardToolCall("read_file", { path: "/x" });
const none = await revertLast();
check("rollback: nothing to revert after a read", /no automatic rollback/.test(none), none);
await fs.rm(dir, { recursive: true, force: true });
}
// ── P2: audit trail + structured outcomes ─────────────────────────────────
async function outcomesTests() {
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "arnie-outcomes-test-"));
// audit trail: records land as JSON lines with timestamps
const auditFile = initAudit({ dir: path.join(dir, "audit"), enabled: true, runId: "test" });
check("audit: initAudit returns a path", !!auditFile, String(auditFile));
recordAudit({ kind: "decision", tool: "shell", tier: "yellow", decision: "execute", reasons: ["restart"] });
await new Promise((r) => setTimeout(r, 100)); // appends are fire-and-forget
const auditLines = (auditFile ? await fs.readFile(auditFile, "utf8") : "")
.trim().split("\n").filter(Boolean).map((l) => JSON.parse(l));
check("audit: header + decision recorded", auditLines.length >= 2 && auditLines.some((e) => e.decision === "execute"), `${auditLines.length} lines`);
check("audit: entries carry a timestamp", auditLines.length > 0 && auditLines.every((e) => typeof e.ts === "string"), undefined);
// resolution report (resolved)
initReports(path.join(dir, "reports"));
const resolved = await writeReport({
status: "resolved",
symptom: "spooler hung",
root_cause: "stuck print job",
actions_taken: ["cleared queue", "restarted Spooler"],
verification: "test print succeeded",
summary: "Print spooler restored.",
});
check("report: resolved report written", !!resolved, String(resolved));
const resolvedMd = resolved ? await fs.readFile(resolved, "utf8") : "";
check("report: resolved has title + symptom", /Resolution report/.test(resolvedMd) && /spooler hung/.test(resolvedMd), undefined);
// resolution report (escalated) — carries the human handoff
const escalated = await writeReport({
status: "escalated",
symptom: "DB master unreachable",
summary: "Needs a failover decision.",
escalation: {
reason: "failover is a red action",
proposed_action: "promote replica db-2 to master",
rollback: "demote db-2, repoint app",
holding_state: "app in read-only mode",
},
});
const escalatedMd = escalated ? await fs.readFile(escalated, "utf8") : "";
check("report: escalation includes the proposed action", /Escalation/.test(escalatedMd) && /promote replica db-2/.test(escalatedMd), undefined);
// engine decisions flow into the audit trail
resetAudit();
const af2 = initAudit({ dir: path.join(dir, "audit2"), enabled: true, runId: "engine" });
setSafetyPolicy(AUTONOMOUS_POLICY);
await guardToolCall("shell", { command: "shutdown /r" }); // red → escalate
await new Promise((r) => setTimeout(r, 100));
const eng = af2 ? await fs.readFile(af2, "utf8") : "";
check("audit: engine escalation recorded", /"decision":"escalate"/.test(eng) && /"tier":"red"/.test(eng), undefined);
resetAudit();
resetReports();
await fs.rm(dir, { recursive: true, force: true });
}
// ── P3: resolution knowledge base ─────────────────────────────────────────
async function kbTests() {
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "arnie-kb-test-"));
const file = initKb({ dir, enabled: true });
check("kb: initKb returns a path", !!file, String(file));
const rec = await recordResolution({
symptom: "print spooler hung, jobs stuck in queue",
root_cause: "a corrupt print job wedged the Spooler service",
fix: "stop Spooler, clear the PRINTERS spool folder, restart Spooler",
});
check("kb: recordResolution stores an entry", !!rec && !!rec.id, String(rec?.id));
check("kb: signals auto-derived", !!rec && rec.signals.length > 0, `${rec?.signals.length} signals`);
await recordResolution({
symptom: "DNS resolution failing intermittently",
root_cause: "stale DNS cache",
fix: "ipconfig /flushdns",
});
const hits = await searchResolutions("spooler stuck print job queue", 3);
check("kb: search finds the matching resolution", hits.length > 0 && /corrupt print job/.test(hits[0].entry.root_cause), `${hits.length} hits`);
check("kb: best match has a positive score", hits.length > 0 && hits[0].score > 0, `top score ${hits[0]?.score}`);
const none = await searchResolutions("quantum entanglement flux capacitor", 3);
check("kb: unrelated query returns nothing", none.length === 0, `${none.length} hits`);
resetKb();
await fs.rm(dir, { recursive: true, force: true });
}
// ── P4: task-queue intake (--serve) ───────────────────────────────────────
async function serveTests() {
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "arnie-serve-test-"));
await fs.writeFile(path.join(dir, "001.task"), " fix the printer ");
await fs.writeFile(path.join(dir, "002.task"), "check disk space");
await fs.writeFile(path.join(dir, "ignore.txt"), "not a task");
const tasks = await claimTasks(dir);
check("serve: claims only .task files, sorted + trimmed", tasks.length === 2 && tasks[0].name === "001" && tasks[0].task === "fix the printer", JSON.stringify(tasks.map((t) => t.name)));
const outFile = await writeOutcome(dir, "001", {
task: "fix the printer",
status: "resolved",
report_path: "/r.md",
audit_path: "/a.jsonl",
finished_at: "2026-06-03T00:00:00Z",
});
const outJson = JSON.parse(await fs.readFile(outFile, "utf8"));
check("serve: writeOutcome persists JSON", outJson.status === "resolved" && outJson.task === "fix the printer", undefined);
await archiveTask(dir, tasks[0].file);
let archived = false;
try {
await fs.access(path.join(dir, "done", "001.task"));
archived = true;
}
catch {
archived = false;
}
const remaining = await claimTasks(dir);
check("serve: archiveTask moves it to done/ and out of the queue", archived && remaining.length === 1 && remaining[0].name === "002", `${remaining.length} remaining`);
await fs.rm(dir, { recursive: true, force: true });
}
async function main() {
classifyTests();
policyTests();
await engineTests();
await rollbackTests();
await outcomesTests();
await kbTests();
await serveTests();
console.log();
console.log("=".repeat(70));
console.log("SAFETY ENGINE RESULTS");
console.log("=".repeat(70));
let passed = 0;
let failed = 0;
for (const c of cases) {
const tag = c.pass ? "PASS" : "FAIL";
console.log(`[${tag}] ${c.name}${c.detail ? ` — ${c.detail}` : ""}`);
if (c.pass)
passed++;
else
failed++;
}
console.log();
console.log(`${passed} passed, ${failed} failed (${cases.length} total)`);
process.exit(failed > 0 ? 1 : 0);
}
main();
//# sourceMappingURL=test-safety.js.map
{"version":3,"file":"test-safety.js","sourceRoot":"","sources":["../src/test-safety.ts"],"names":[],"mappings":"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"}
+99
-2

@@ -6,3 +6,4 @@ #!/usr/bin/env node

import os from "node:os";
import { buildSystemBlocks, appendMemoryBlock, appendRemoteBlock } from "./systemPrompt.js";
import fs from "node:fs/promises";
import { buildSystemBlocks, appendMemoryBlock, appendRemoteBlock, appendAutonomyBlock } from "./systemPrompt.js";
import { closeReadline } from "./confirm.js";

@@ -30,2 +31,8 @@ import { readUserInput } from "./input.js";

import { setDryRun } from "./dryRun.js";
import { setSafetyPolicy } from "./safety/engine.js";
import { buildPolicy } from "./safety/policy.js";
import { initAudit, auditPath } from "./safety/audit.js";
import { initReports, lastReport, resetLastReport } from "./safety/report.js";
import { initKb } from "./kb/store.js";
import { claimTasks, writeOutcome, archiveTask } from "./serve.js";
import { loadRedactors, setRedactors, describeRedactors } from "./redactors.js";

@@ -38,3 +45,3 @@ import { loadPersonaOverride } from "./persona.js";

import { handleSlashCommand } from "./slashCommands.js";
const VERSION = "1.3.1";
const VERSION = "1.5.1";
const COMPACT_BETA = "compact-2026-01-12";

@@ -203,2 +210,44 @@ const PLAN_MODE_BLOCK = `Plan mode is active. Before calling any tool that mutates state (write_file, edit_file, shell that modifies the system, shell_background, shell_kill) or making non-trivial changes, propose a numbered plan and wait for the user's explicit approval (e.g. "ok", "go", "proceed"). Read-only investigation tools (read_file, list_dir, grep, network_check, service_check, shell_status, subagent, web_search) may be used freely to inform the plan. Once approved, execute the plan step by step, narrating progress.`;

}
async function runServeLoop(ctx, config) {
const dir = config.serve;
await fs.mkdir(dir, { recursive: true }).catch(() => { });
console.log(chalk.dim(`serve: polling ${dir} every ${config.serveInterval}s for *.task files (Ctrl+C to stop)`));
let stop = false;
process.on("SIGINT", () => {
console.log(chalk.dim("\nserve: finishing the current task, then stopping..."));
stop = true;
});
while (!stop) {
const tasks = await claimTasks(dir);
for (const t of tasks) {
if (stop)
break;
console.log(chalk.cyan(`\n[serve] ${t.name}: ${t.task.slice(0, 100)}`));
resetLastReport();
const messages = [{ role: "user", content: t.task }];
try {
await runTurn(ctx, messages);
}
catch (err) {
console.error(chalk.red(`[serve] ${t.name} errored: ${err instanceof Error ? err.message : String(err)}`));
}
const lr = lastReport();
await writeOutcome(dir, t.name, {
task: t.task,
status: lr?.report.status ?? "unknown",
report_path: lr?.path ?? null,
audit_path: auditPath(),
finished_at: new Date().toISOString(),
});
await archiveTask(dir, t.file);
console.log(chalk.dim(`[serve] ${t.name} → ${lr?.report.status ?? "unknown"}`));
}
if (stop)
break;
if (config.serveOnce)
break;
await new Promise((r) => setTimeout(r, config.serveInterval * 1000));
}
console.log(chalk.dim("serve: stopped"));
}
async function main() {

@@ -234,2 +283,12 @@ let initialConfig;

}
// --task-file: read the task to run from a file (behaves like -p).
if (config.taskFile && !config.printMessage) {
try {
config.printMessage = (await fs.readFile(config.taskFile, "utf8")).trim();
}
catch (err) {
console.error(chalk.red(`failed to read --task-file: ${err instanceof Error ? err.message : String(err)}`));
process.exit(1);
}
}
// --dario sets a sensible default base URL + dummy key if unset, so users

@@ -251,2 +310,24 @@ // don't have to remember to export both env vars.

setDryRun(config.dryRun);
if (!config.noSafety) {
// Interactive default ceiling is green (yellow+ asks first — arnie's legacy
// behavior). Autonomous default is yellow (safe, reversible fixes run; red
// escalates). An explicit --autonomy-ceiling overrides either.
const ceiling = config.autonomyCeiling ?? (config.autonomous ? "yellow" : "green");
setSafetyPolicy(buildPolicy({ autonomous: config.autonomous, ceiling }));
console.log(chalk.dim(`safety: ${config.autonomous ? "autonomous" : "interactive"} (ceiling=${ceiling})`));
// Audit trail + structured resolution reports: on by default when autonomous,
// opt-in otherwise (--audit), off with --no-audit.
if (!config.noAudit && (config.autonomous || config.audit)) {
const ap = initAudit({ dir: config.auditDir, enabled: true });
const rd = initReports(config.reportDir);
if (ap)
console.log(chalk.dim(`audit: ${ap}`));
console.log(chalk.dim(`reports: ${rd}`));
}
}
if (!config.noKb) {
const kp = initKb({ dir: config.kbDir, enabled: true });
if (kp)
console.log(chalk.dim(`kb: ${kp}`));
}
if (config.remote) {

@@ -289,2 +370,7 @@ setShellRemote(config.remote);

}
if (config.autonomous && !config.noSafety) {
baseSystemBlocks = appendAutonomyBlock(baseSystemBlocks, {
ceiling: config.autonomyCeiling ?? "yellow",
});
}
if (!config.noPermissions) {

@@ -406,4 +492,15 @@ try {

};
if (config.serve) {
await runServeLoop(ctx, config);
await transcript.endSession();
closeReadline();
process.exit();
}
if (config.printMessage) {
await runPrintMode(ctx, config.printMessage);
if (config.autonomous) {
const lr = lastReport();
console.log("\nARNIE_OUTCOME " +
JSON.stringify({ status: lr?.report.status ?? "unknown", report: lr?.path ?? null, audit: auditPath() }));
}
await transcript.endSession();

@@ -410,0 +507,0 @@ closeReadline();

+1
-1

@@ -1,1 +0,1 @@

{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}

@@ -28,2 +28,9 @@ const DEFAULTS = {

dario: false,
autonomous: false,
noSafety: false,
audit: false,
noAudit: false,
noKb: false,
serveInterval: 15,
serveOnce: false,
};

@@ -186,2 +193,50 @@ export function applySettings(settings) {

break;
case "--autonomous":
config.autonomous = true;
break;
case "--autonomy-ceiling": {
const v = next("--autonomy-ceiling");
if (v !== "green" && v !== "yellow" && v !== "red") {
throw new Error("--autonomy-ceiling must be one of: green, yellow, red");
}
config.autonomyCeiling = v;
break;
}
case "--no-safety":
config.noSafety = true;
break;
case "--audit":
config.audit = true;
break;
case "--no-audit":
config.noAudit = true;
break;
case "--audit-dir":
config.auditDir = next("--audit-dir");
break;
case "--report-dir":
config.reportDir = next("--report-dir");
break;
case "--no-kb":
config.noKb = true;
break;
case "--kb-dir":
config.kbDir = next("--kb-dir");
break;
case "--task-file":
config.taskFile = next("--task-file");
break;
case "--serve":
config.serve = next("--serve");
break;
case "--serve-once":
config.serveOnce = true;
break;
case "--serve-interval": {
const v = parseInt(next("--serve-interval"), 10);
if (!Number.isFinite(v) || v <= 0)
throw new Error("--serve-interval must be a positive integer (seconds)");
config.serveInterval = v;
break;
}
case "--no-web-search":

@@ -243,2 +298,26 @@ config.noWebSearch = true;

an ssh-config alias, user@host, or user@host:port.
--autonomous Run unattended: classify every change by risk and act
on safe ones without prompting. Green/yellow run (a
rollback is captured first), red escalates for human
approval instead of running, black is always blocked.
--autonomy-ceiling <t> Highest tier auto-executed: green|yellow|red
(default: yellow). green = only safe, reversible ops;
red = also run destructive ops (opt-in, risky).
--no-safety Disable the risk-tier safety engine (legacy behavior:
per-tool confirmation prompts only).
--audit Write a JSONL audit trail of safety decisions plus a
structured resolution report (on by default with
--autonomous). --no-audit forces it off.
--no-audit Don't write the audit trail or resolution reports.
--audit-dir <dir> Audit log directory (default: ~/.arnie/audit)
--report-dir <dir> Resolution reports directory (default: ~/.arnie/reports)
--no-kb Don't read or write the resolution knowledge base.
--kb-dir <dir> Knowledge base directory (default: ~/.arnie/kb)
--task-file <path> Read the task from a file and run it once (like -p),
then exit. Pair with --autonomous for hands-off runs.
--serve <dir> Daemon: poll <dir> for *.task files, work each
autonomously, write <name>.outcome.json, archive to
done/. Pair with --autonomous. Ctrl+C to stop.
--serve-interval <n> Seconds between queue polls in --serve (default 15)
--serve-once Drain the --serve queue once and exit (for cron)
--budget <usd> Halt the session after exceeding $N in tokens

@@ -245,0 +324,0 @@ --auto-checkpoint <n> Auto-save the session every N user turns

@@ -1,1 +0,1 @@

{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}

@@ -7,2 +7,3 @@ import readline from "node:readline";

import chalk from "chalk";
import { isEngineApproved } from "./safety/approval.js";
let sharedRl = null;

@@ -162,2 +163,8 @@ const lineQueue = [];

export async function confirm(message) {
// The central safety engine vets and classifies mutating tool calls before
// they run. When it has already approved this action (auto or after one
// explicit prompt of its own), a tool's inline confirmation is redundant —
// pass it through rather than prompting the human a second time.
if (isEngineApproved())
return true;
try {

@@ -164,0 +171,0 @@ const answer = await prompt(`${chalk.yellow(message)} ${chalk.dim("[y/N] ")}`);

@@ -1,1 +0,1 @@

{"version":3,"file":"confirm.js","sourceRoot":"","sources":["../src/confirm.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"confirm.js","sourceRoot":"","sources":["../src/confirm.ts"],"names":[],"mappings":"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"}

@@ -79,2 +79,29 @@ import os from "node:os";

}
export function appendAutonomyBlock(blocks, opts) {
const text = [
`AUTONOMOUS MODE is active. You are operating as a fully autonomous Tier 3 IT support agent: you own the resolution end to end, without a human driving each step. The human is the exception (an escalation), not your collaborator on every action.`,
``,
`Resolution loop — work each problem in this order, narrating as you go:`,
`0. RECALL — call kb_search with the symptom or the exact error string first. If a past resolution closely matches, you may already know the cause and fix; apply it, then still VERIFY.`,
`1. GATHER — investigate the real machine (read logs, check services/processes, inspect config). Never guess when a tool can tell you.`,
`2. ROOT-CAUSE — form a hypothesis and test it before acting. State the cause plainly once you have it.`,
`3. REMEDIATE — apply the smallest fix that addresses the root cause, not the symptom.`,
`4. VERIFY — re-test the exact symptom to confirm the fix held. A fix you didn't verify is not done.`,
`5. IF VERIFICATION FAILS — call revert_change to undo your last change, then try a different approach. Never stack a second fix on top of an unverified first one.`,
`6. DOCUMENT — when resolved, summarize: symptom, root cause, what you changed, and how you verified it.`,
``,
`Safety tiers — the engine classifies every change you attempt and enforces this automatically; you cannot override it:`,
`- GREEN (read-only / safe, reversible): runs immediately.`,
`- YELLOW (recoverable changes): runs automatically, with a rollback snapshot captured first so revert_change can undo it.`,
`- RED (destructive / irreversible / multi-user impact): will NOT run — the tool call is refused and you must escalate.`,
`- BLACK (catastrophic or security-disabling): hard-blocked, always.`,
``,
`When a RED or BLACK action is refused, do NOT look for a clever workaround that achieves the same effect through a lower-tier tool — that defeats the safety model and is itself a failure. Instead ESCALATE: stop and produce a structured handoff with (1) the symptom, (2) what you tried, (3) the evidence and your root-cause hypothesis, (4) the exact action you propose, (5) its rollback plan, (6) the current safe holding state. Then stop.`,
``,
`Escalate (don't spin) when: a red action is required, you cannot find the root cause within a reasonable number of steps, verification fails twice on the same problem, or the fix needs physical access or a vendor. Escalating with good evidence is a successful outcome, not a failure.`,
`Your autonomy ceiling for this run is ${opts.ceiling.toUpperCase()} — the highest tier that will execute without a human.`,
`Always finish by calling resolution_report exactly once with the structured outcome: status (resolved / escalated / unresolved), the symptom, the root cause, the actions you took, and how you verified the fix. It is the durable record of the run.`,
].join("\n");
return [...blocks, { type: "text", text, cache_control: { type: "ephemeral" } }];
}
export function appendRemoteBlock(blocks, host) {

@@ -81,0 +108,0 @@ // The model needs to understand that this session is scoped at a remote

@@ -1,1 +0,1 @@

{"version":3,"file":"systemPrompt.js","sourceRoot":"","sources":["../src/systemPrompt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AAGzB,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sGA0CgF,CAAC;AAEvG,MAAM,UAAU,iBAAiB,CAAC,WAAoB;IACpD,MAAM,cAAc,GAAG;QACrB,gBAAgB,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,GAAG;QAC9D,aAAa,EAAE,CAAC,QAAQ,EAAE,EAAE;QAC5B,SAAS,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;QACjC,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE;QACvB,QAAQ,OAAO,CAAC,GAAG,EAAE,EAAE;QACvB,UAAU,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,SAAS,EAAE;KAClE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,MAAM,MAAM,GAA+B;QACzC;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,aAAa;YACnB,aAAa,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;SACrC;QACD;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,oCAAoC,cAAc,EAAE;YAC1D,aAAa,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;SACrC;KACF,CAAC;IACF,IAAI,WAAW,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjD,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,sCAAsC,WAAW,EAAE;SAC1D,CAAC,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,MAAkC,EAClC,UAAkB;IAElB,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;QAAE,OAAO,MAAM,CAAC;IACtC,OAAO,CAAC,GAAG,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,MAAkC,EAClC,IAAY;IAEZ,wEAAwE;IACxE,uEAAuE;IACvE,qEAAqE;IACrE,qEAAqE;IACrE,aAAa;IACb,MAAM,IAAI,GAAG;QACX,oEAAoE,IAAI,KAAK;QAC7E,EAAE;QACF,oCAAoC;QACpC,kEAAkE,IAAI,4CAA4C,IAAI,+FAA+F;QACrN,EAAE;QACF,gDAAgD;QAChD,sLAAsL;QACtL,yMAAyM,IAAI,oGAAoG;QACjT,yFAAyF;QACzF,EAAE;QACF,sEAAsE,IAAI,sFAAsF,IAAI,GAAG;QACvK,EAAE;QACF,mLAAmL;KACpL,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACb,OAAO,CAAC,GAAG,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AAC7C,CAAC"}
{"version":3,"file":"systemPrompt.js","sourceRoot":"","sources":["../src/systemPrompt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AAGzB,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sGA0CgF,CAAC;AAEvG,MAAM,UAAU,iBAAiB,CAAC,WAAoB;IACpD,MAAM,cAAc,GAAG;QACrB,gBAAgB,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,GAAG;QAC9D,aAAa,EAAE,CAAC,QAAQ,EAAE,EAAE;QAC5B,SAAS,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;QACjC,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE;QACvB,QAAQ,OAAO,CAAC,GAAG,EAAE,EAAE;QACvB,UAAU,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,SAAS,EAAE;KAClE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,MAAM,MAAM,GAA+B;QACzC;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,aAAa;YACnB,aAAa,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;SACrC;QACD;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,oCAAoC,cAAc,EAAE;YAC1D,aAAa,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;SACrC;KACF,CAAC;IACF,IAAI,WAAW,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjD,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,sCAAsC,WAAW,EAAE;SAC1D,CAAC,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,MAAkC,EAClC,UAAkB;IAElB,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;QAAE,OAAO,MAAM,CAAC;IACtC,OAAO,CAAC,GAAG,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,MAAkC,EAClC,IAA6C;IAE7C,MAAM,IAAI,GAAG;QACX,sPAAsP;QACtP,EAAE;QACF,yEAAyE;QACzE,yLAAyL;QACzL,uIAAuI;QACvI,wGAAwG;QACxG,uFAAuF;QACvF,qGAAqG;QACrG,oKAAoK;QACpK,yGAAyG;QACzG,EAAE;QACF,wHAAwH;QACxH,2DAA2D;QAC3D,2HAA2H;QAC3H,wHAAwH;QACxH,qEAAqE;QACrE,EAAE;QACF,wbAAwb;QACxb,EAAE;QACF,6RAA6R;QAC7R,yCAAyC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,wDAAwD;QAC3H,wPAAwP;KACzP,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACb,OAAO,CAAC,GAAG,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;AACnF,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,MAAkC,EAClC,IAAY;IAEZ,wEAAwE;IACxE,uEAAuE;IACvE,qEAAqE;IACrE,qEAAqE;IACrE,aAAa;IACb,MAAM,IAAI,GAAG;QACX,oEAAoE,IAAI,KAAK;QAC7E,EAAE;QACF,oCAAoC;QACpC,kEAAkE,IAAI,4CAA4C,IAAI,+FAA+F;QACrN,EAAE;QACF,gDAAgD;QAChD,sLAAsL;QACtL,yMAAyM,IAAI,oGAAoG;QACjT,yFAAyF;QACzF,EAAE;QACF,sEAAsE,IAAI,sFAAsF,IAAI,GAAG;QACvK,EAAE;QACF,mLAAmL;KACpL,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACb,OAAO,CAAC,GAAG,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AAC7C,CAAC"}

@@ -5,2 +5,6 @@ import { z } from "zod";

import { isDryRun, isMutatingTool, dryRunRefusal } from "../dryRun.js";
import { guardToolCall, isSafetyActive, revertLast } from "../safety/engine.js";
import { writeReport } from "../safety/report.js";
import { searchResolutions, recordResolution } from "../kb/store.js";
import { setEngineApproved } from "../safety/approval.js";
import { SHELL_TOOL_DEFINITION, runShell } from "./shell.js";

@@ -138,2 +142,25 @@ import { READ_FILE_TOOL_DEFINITION, runReadFile } from "./readFile.js";

const sshHostsSchema = z.object({});
const revertChangeSchema = z.object({
reason: z.string().optional(),
});
const resolutionReportSchema = z.object({
status: z.enum(["resolved", "escalated", "unresolved"]),
symptom: z.string().min(1),
root_cause: z.string().optional(),
actions_taken: z.array(z.string()).optional(),
verification: z.string().optional(),
summary: z.string().min(1),
escalation: z
.object({
reason: z.string(),
proposed_action: z.string(),
rollback: z.string(),
holding_state: z.string(),
})
.optional(),
});
const kbSearchSchema = z.object({
query: z.string().min(1),
limit: z.number().int().min(1).max(10).optional(),
});
const HANDLERS = {

@@ -166,3 +193,92 @@ shell: { schema: shellSchema, run: (i) => runShell(i) },

ssh_hosts: { schema: sshHostsSchema, run: (i) => runSshHosts(i) },
revert_change: { schema: revertChangeSchema, run: async () => ({ ok: true, result: await revertLast() }) },
resolution_report: {
schema: resolutionReportSchema,
run: async (i) => {
const r = i;
const reportPath = await writeReport(r);
// A verified resolution teaches the knowledge base for next time.
let kbId = null;
if (r.status === "resolved" && r.root_cause) {
const fix = r.actions_taken && r.actions_taken.length ? r.actions_taken.join("; ") : r.summary;
const rec = await recordResolution({ symptom: r.symptom, root_cause: r.root_cause, fix });
kbId = rec?.id ?? null;
}
return { ok: true, status: r.status, report_path: reportPath, kb_id: kbId };
},
},
kb_search: {
schema: kbSearchSchema,
run: async (i) => {
const { query, limit } = i;
const matches = await searchResolutions(query, limit ?? 3);
return {
ok: true,
count: matches.length,
matches: matches.map((m) => ({
score: m.score,
symptom: m.entry.symptom,
root_cause: m.entry.root_cause,
fix: m.entry.fix,
when: m.entry.ts,
})),
};
},
},
};
const REVERT_CHANGE_TOOL_DEFINITION = {
name: "revert_change",
description: "Undo your most recent reversible change (the last file write/edit the safety engine snapshotted before it ran). Use it immediately when a fix did not resolve the symptom — revert before trying something else so you never stack changes or leave the system half-modified.",
input_schema: {
type: "object",
properties: {
reason: {
type: "string",
description: "Why you're reverting, e.g. 'verification failed: service still not listening'.",
},
},
required: [],
additionalProperties: false,
},
};
const RESOLUTION_REPORT_TOOL_DEFINITION = {
name: "resolution_report",
description: "Record the outcome of an autonomous resolution as a durable, structured report. Call this ONCE at the end of working a problem: status (resolved | escalated | unresolved), the symptom, the root cause, the actions you took, how you verified the fix held, and a short summary. If status is 'escalated', include the escalation block (why it's blocked, the proposed action needing human approval, its rollback, and the current safe holding state). Writes a report file and an audit record.",
input_schema: {
type: "object",
properties: {
status: { type: "string", enum: ["resolved", "escalated", "unresolved"], description: "The outcome of the resolution." },
symptom: { type: "string", description: "The original problem or symptom you were asked to fix." },
root_cause: { type: "string", description: "The root cause you identified, if any." },
actions_taken: { type: "array", items: { type: "string" }, description: "Each change you made, in order." },
verification: { type: "string", description: "How you confirmed the fix held — or why you couldn't verify it." },
summary: { type: "string", description: "A short, plain-language summary of the outcome." },
escalation: {
type: "object",
description: "Required when status is 'escalated'.",
properties: {
reason: { type: "string", description: "Why this needs a human (e.g. a red-tier action was required)." },
proposed_action: { type: "string", description: "The exact action you propose a human approve." },
rollback: { type: "string", description: "How to undo the proposed action if it goes wrong." },
holding_state: { type: "string", description: "The safe state the system is in right now." },
},
},
},
required: ["status", "symptom", "summary"],
additionalProperties: false,
},
};
const KB_SEARCH_TOOL_DEFINITION = {
name: "kb_search",
description: "Search arnie's resolution knowledge base for past fixes to a similar problem. Call this FIRST when you start diagnosing — if a close match comes back you may already know the root cause and fix, and can skip straight to applying and verifying it. Query with the symptom or the exact error string.",
input_schema: {
type: "object",
properties: {
query: { type: "string", description: "The symptom or error string to look up." },
limit: { type: "integer", description: "Max matches to return (default 3).", minimum: 1, maximum: 10 },
},
required: ["query"],
additionalProperties: false,
},
};
export function buildToolList(opts) {

@@ -192,2 +308,5 @@ const tools = [

SSH_HOSTS_TOOL_DEFINITION,
REVERT_CHANGE_TOOL_DEFINITION,
RESOLUTION_REPORT_TOOL_DEFINITION,
KB_SEARCH_TOOL_DEFINITION,
];

@@ -217,2 +336,3 @@ if (opts.subagent) {

"ssh_hosts",
"kb_search",
]);

@@ -238,2 +358,19 @@ export function isParallelSafe(name) {

}
// Safety engine — classify, gate, and (for yellow+) snapshot a rollback for
// every mutating tool call when an autonomy policy is active. Read-only tools
// and the legacy (engine-inactive) path are untouched.
if (isSafetyActive() && isMutatingTool(name)) {
const guard = await guardToolCall(name, parsed.data);
if (guard.decision !== "execute") {
await fireOnError(name, parsed.data, guard.message ?? guard.decision).catch(() => { });
return JSON.stringify({
ok: false,
safety: guard.decision,
tier: guard.tier,
reasons: guard.assessment.reasons,
error: guard.message,
});
}
setEngineApproved(true);
}
await fireBeforeTool(name, parsed.data).catch(() => { });

@@ -257,2 +394,5 @@ const start = Date.now();

}
finally {
setEngineApproved(false);
}
}

@@ -259,0 +399,0 @@ export function toolNames() {

@@ -1,1 +0,1 @@

{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"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"}
{
"name": "arnie-cli",
"version": "1.3.1",
"version": "1.5.1",
"description": "Portable IT troubleshooting companion powered by Claude — networking, AD, Windows Update, package managers, log triage, hardware checks, dev environments.",

@@ -45,3 +45,4 @@ "keywords": [

"typecheck": "tsc --noEmit",
"test": "tsx src/test-tools.ts",
"test": "tsx src/test-tools.ts && tsx src/test-safety.ts",
"test:safety": "tsx src/test-safety.ts",
"test:integration": "bash test/integration.sh"

@@ -51,3 +52,3 @@ },

"@anthropic-ai/sdk": "^0.95.1",
"chalk": "^5.3.0",
"chalk": "^5.6.2",
"zod": "^4.4.3"

@@ -54,0 +55,0 @@ },

@@ -408,2 +408,14 @@ # arnie

--dry-run Investigation only — mutating tools refuse
--autonomous Run unattended; classify every change by risk, act on
safe tiers, escalate red, block black (Tier-3 mode)
--autonomy-ceiling <t> Highest tier auto-executed: green | yellow | red (yellow)
--no-safety Disable the risk-tier safety engine
--audit / --no-audit Write (or skip) the JSONL audit trail + resolution report
--audit-dir <dir> Audit log dir (default: ~/.arnie/audit)
--report-dir <dir> Resolution reports dir (default: ~/.arnie/reports)
--no-kb Don't read or write the resolution knowledge base
--kb-dir <dir> Knowledge base dir (default: ~/.arnie/kb)
--task-file <path> Run a task read from a file (like -p), then exit
--serve <dir> Daemon: work *.task files dropped in <dir> autonomously
--serve-interval <n> Seconds between queue polls in --serve (default 15)
--budget <usd> Halt the session after exceeding $N in tokens

@@ -434,7 +446,59 @@ (in --print mode: warn + exit non-zero, can't pre-empt)

| Memory file | `.arnie/memory.md` (cwd) or `~/.arnie/memory.md` | Cross-session context loaded into the system prompt |
| Audit trail | `~/.arnie/audit/run-*.jsonl` | Every safety decision in autonomous mode (`--audit`) |
| Resolution reports | `~/.arnie/reports/*.md` | Structured outcome of each autonomous run |
| Knowledge base | `~/.arnie/kb/resolutions.jsonl` | Past fixes — searched first, recorded on success |
The `.arnie/` directory in cwd is gitignored by default if you check this repo out fresh.
## Autonomous mode (Tier 3)
`--autonomous` turns arnie from an interactive companion into a **fully autonomous Tier-3 IT agent**: it owns the whole resolution loop and acts without a human approving each step — a human is the *exception* (an escalation), not the driver. Autonomy on real systems is made safe by a risk-tier engine that classifies every change before it runs.
```sh
arnie --autonomous -p "the print spooler is hung on this box, fix it"
```
### The resolution loop
Each problem is worked: **RECALL** (search the knowledge base for a past fix) → **GATHER** evidence → **ROOT-CAUSE** → **REMEDIATE** → **VERIFY** the symptom is gone → (revert on failure) → **DOCUMENT**. Every run ends with a structured `resolution_report`.
### Risk tiers
Every mutating tool call is classified and routed by policy:
| Tier | Examples | Autonomous behavior |
| --- | --- | --- |
| 🟢 **green** | reads, `Get-Service`, `ping`, `ipconfig /all` | runs immediately |
| 🟡 **yellow** | `Restart-Service`, `apt install`, file edits | runs — a rollback is snapshotted first |
| 🔴 **red** | `shutdown`, `reg delete`, `rm -rf <dir>`, writes to `/etc` | **not run** — escalated for human approval |
| ⚫ **black** | `rm -rf /`, `mkfs`, disabling Defender/the firewall | **hard-blocked, always** |
`--autonomy-ceiling green|yellow|red` sets the highest tier that auto-runs (default `yellow`; `green` is cautious, `red` is full autonomy — opt-in and risky). `--no-safety` disables the engine entirely (legacy per-tool prompts only).
When a yellow change doesn't verify, arnie calls `revert_change` to undo it before trying something else, so it never stacks fixes or leaves a box half-changed. When a red action is required, it escalates with a structured handoff (symptom, what it tried, the evidence, the proposed action, its rollback, and the safe holding state) instead of working around the gate.
### Outcomes, audit, and memory
- **Audit trail** — every decision and rollback is appended to `~/.arnie/audit/run-*.jsonl` (on by default with `--autonomous`; control with `--audit` / `--no-audit` / `--audit-dir`).
- **Resolution reports** — each run writes a human-readable `~/.arnie/reports/<status>-*.md` (resolved / escalated / unresolved) with root cause, actions, and how it verified.
- **Knowledge base** — every verified fix is recorded to `~/.arnie/kb/resolutions.jsonl`, and each run searches it first (`kb_search`) so arnie recognizes a repeat problem instead of re-diagnosing. `--kb-dir` / `--no-kb`.
### Hands-off intake
Feed arnie work without a keyboard:
```sh
# one task from a file; prints a machine-readable ARNIE_OUTCOME line when done
arnie --autonomous --task-file ./ticket-4821.task
# daemon: drop *.task files into a queue dir; arnie works each, writes
# <name>.outcome.json next to it, and archives the task to done/
arnie --autonomous --serve ./queue --serve-interval 30
```
`--serve` is the file-based queue that lets a cron, a ticket system, or another service hand work to an unattended arnie.
## Safety
- Every mutating tool call is classified by a **risk-tier engine** (green / yellow / red / black) before it runs — see [Autonomous mode](#autonomous-mode-tier-3). Interactively, yellow+ asks `[y/N]`; catastrophic (black) commands are refused outright.
- Destructive shell commands (`rm -rf`, `Remove-Item`, `format`, `Stop-Service`, `shutdown`, registry edits, package removals, etc.) require explicit `[y/N]` confirmation before running. The same gating applies to background jobs.

@@ -466,1 +530,18 @@ - `write_file` always shows a preview and asks before overwriting.

MIT.
---
## Also by askalf
| Project | What it does |
|---------|-------------|
| [brio](https://github.com/askalf/brio) | Capability layer for AI workloads — semantic cache, cost tiering, policy. Sits in front of any Anthropic-compat endpoint. |
| [browser-bridge](https://github.com/askalf/browser-bridge) | Stealth headless Chromium in a container. CDP on 9222 — Playwright/Puppeteer/MCP-compatible. |
| [claude-bridge](https://github.com/askalf/claude-bridge) | Bridge Claude Code sessions to Discord. |
| [dario](https://github.com/askalf/dario) | Local LLM router. Use your Claude Max/Pro subscription as an API. |
| [deepdive](https://github.com/askalf/deepdive) | Local research agent. Plan → search → fetch → extract → synthesize. Cited answers. |
| [git-providers](https://github.com/askalf/git-providers) | Unified GitHub + GitLab + Bitbucket Cloud REST clients behind one GitProvider interface. Plus a 44-entry api-key-provider taxonomy. |
| [hands](https://github.com/askalf/hands) | Cross-platform computer-use agent. Mouse, keyboard, screen. |
| [install-kit](https://github.com/askalf/install-kit) | curl-pipe-bash template for self-hosted Docker apps. |
| [pgflex](https://github.com/askalf/pgflex) | One Postgres API. Two modes (real PG ↔ PGlite WASM). |
| [redisflex](https://github.com/askalf/redisflex) | One Redis API. Two modes (ioredis ↔ in-process). |