UNPKG

@sema-agent/core

Version:

Stateless, task-oriented AI agent core

458 lines (457 loc) • 11.4 kB
{ "repo": "core", "version": "7.19.0", "from": "a9ed817912e9808ec38a5b4f02231398d5ccc99f", "to": "v7.19.0", "added": [ { "name": "AUTO_MODE_PARSE_FAILURES", "kind": "variable", "tier": "advanced", "at": [ "src/core/auto-mode.ts:69", "src/index.ts:1376" ], "criteriaCovered": false, "breaking": false }, { "name": "AutoModeParseFailure", "kind": "type", "tier": "advanced", "at": [ "src/core/auto-mode.ts:70", "src/index.ts:1378" ], "criteriaCovered": false, "breaking": false }, { "name": "RECOMMENDED_SENSITIVE_ASK_PATTERNS", "kind": "variable", "tier": "advanced", "at": [ "src/core/sensitive-path-policy.ts:196", "src/index.ts:914" ], "criteriaCovered": false, "breaking": false }, { "name": "ReadRootGrantCandidate", "kind": "interface", "tier": "advanced", "at": [ "src/core/tool-spec.ts:105", "src/core/types.ts:24", "src/index.ts:3300" ], "criteriaCovered": true, "breaking": false }, { "name": "classifierParseFailureDenyMessage", "kind": "function", "tier": "advanced", "at": [ "src/core/auto-mode.ts:247", "src/index.ts:1375" ], "criteriaCovered": false, "breaking": false }, { "name": "isAutoModeParseFailure", "kind": "function", "tier": "advanced", "at": [ "src/core/auto-mode.ts:73", "src/index.ts:1377" ], "criteriaCovered": false, "breaking": false }, { "name": "thinkingOffSpelled", "kind": "function", "tier": "advanced", "at": [ "src/brain/reasoning.ts:184", "src/index.ts:2492" ], "criteriaCovered": false, "breaking": false } ], "removed": [ { "name": "CLASSIFIER_PARSE_FAILURE_DENY_MESSAGE", "kind": "variable", "tier": "advanced", "at": [ "src/core/auto-mode.ts:222", "src/index.ts:1375" ], "breaking": true }, { "name": "thinkingOffExpressible", "kind": "function", "tier": "advanced", "at": [ "src/brain/reasoning.ts:184", "src/index.ts:2489" ], "breaking": true } ], "changed": [], "narrowed": [ { "id": "F2", "source": "behaviorFlips.summary", "text": "NARROWING (durable-resume path) — a decider's note has ONE mint (#812 / B-123; car-812): `settledByPerson` + `decidersNote` in `gate-outcome.ts`; empty text folds to absence there, once, for the live resolver and the durable decide lane alike, so `reason: \"\"` is a bare refusal on both paths and the issuing batch's not-yet-started siblings halt (`gate.batch_halted`). Whitespace-only text stays a note (pinned current behaviour, not a promise)." }, { "id": "F3", "source": "behaviorFlips.summary", "text": "NARROWING + widening — write protection layered by what the file IS (#804; car-804, ruling (d)) and the write-protection judge anchors relative spellings (#815, security; B-124): the deny set's agent-config block derives from `READ_FACE_BUILTIN_DENY_TABLE`'s `agent-config` tier (one table, two judges; `RECOMMENDED_SENSITIVE_PATTERNS` 26 → 39 members: +8 third-party agent config files, +2 write-face-only rows `.claude/hooks` / `.sema/hooks` (host-executed command bodies, like `.git/hooks`; #824), −4 hand rows), the `.claude` / `.sema` DIRECTORIES leave the deny set and sit on an ask tier of the SAME canonical judge (`RECOMMENDED_SENSITIVE_ASK_PATTERNS` = [`.claude`, `.sema`]; `createSensitivePathPolicy({ askPatterns })` absent = that set, `[]` = no ask tier; the `dataRoot` exemption applies to both tiers); the always-on lexical `WriteProtectionMatcher.matchPath(path, cwd?)` joins a relative spelling onto the gate's tracked cwd BEFORE judging, so `cd ~/.ssh` + `Write(\"authorized_keys\")` is judged like the absolute spelling on every `segment` row." } ], "closedSetMembers": [ { "set": "AUTO_MODE_PARSE_FAILURES", "at": [ "src/core/auto-mode.ts:69" ], "newSet": true, "added": [ "conflict", "missing" ], "removed": [], "breaking": false, "criteriaCovered": false }, { "set": "CLASSIFIER_ROLE_DEFAULT_REASONS", "at": [ "src/core/runner/classifier-ladder.ts:86" ], "newSet": true, "added": [ "main_only", "role_fallback", "role_unresolvable", "tier_below_main", "tier_table" ], "removed": [], "breaking": false, "criteriaCovered": false }, { "set": "ENGINE_NOTICE_CODES", "at": [ "src/core/governance-codes.ts:323" ], "newSet": false, "added": [ "classifier.contract_broken", "classifier.role_defaulted", "skills.listing_truncated" ], "removed": [], "breaking": false, "criteriaCovered": true }, { "set": "RECOMMENDED_SENSITIVE_ASK_PATTERNS", "at": [ "src/core/sensitive-path-policy.ts:196" ], "newSet": true, "added": [ ".claude", ".sema" ], "removed": [], "breaking": false, "criteriaCovered": false }, { "set": "RECOMMENDED_SENSITIVE_PATTERNS", "at": [ "src/core/sensitive-path-policy.ts:102" ], "newSet": false, "added": [ ".ai-agent/.env", ".aider.conf.yml", ".claude.*", ".claude/agents", ".claude/hooks", ".claude/settings.json", ".claude/settings.local.json", ".codex/config.toml", ".continue/config.json", ".continue/config.yaml", ".cursor/mcp.json", ".gemini/settings.json", ".sema/agents", ".sema/engine-data/.env", ".sema/hooks", ".sema/settings.json", ".sema/settings.local.json" ], "removed": [ ".claude*", ".sema" ], "persistedBy": "none", "breaking": true, "criteriaCovered": false } ], "typeKeys": [ { "type": "AskRequest", "at": [ "src/core/tool-policy.ts:2571" ], "added": [ "readRootCandidate" ], "removed": [], "breaking": false, "criteriaCovered": true }, { "type": "AutoModeVerdict", "at": [ "src/core/auto-mode.ts:123" ], "added": [ "parse_error.form" ], "removed": [], "breaking": false, "criteriaCovered": false }, { "type": "CompoundReadonlyVerdict", "at": [ "src/tools/fs/bash-readonly-classifier.ts:585" ], "added": [ "outOfRootGrantCandidate" ], "removed": [], "breaking": false, "criteriaCovered": false }, { "type": "PermissionResult", "at": [ "src/core/tool-policy.ts:412" ], "added": [ "probeReadRootCandidate" ], "removed": [], "breaking": false, "criteriaCovered": false }, { "type": "PreToolUseResult", "at": [ "src/core/hooks.ts:1141" ], "added": [ "probeReadRootCandidate" ], "removed": [], "breaking": false, "criteriaCovered": false }, { "type": "ReversibilityVerdict", "at": [ "src/core/tool-spec.ts:50" ], "added": [ "readRootCandidate" ], "removed": [], "breaking": false, "criteriaCovered": true }, { "type": "TaskSpec", "at": [ "src/core/task-spec.ts:49" ], "added": [ "skillListingBudgetFraction", "skillListingMaxDescChars" ], "removed": [], "breaking": false, "criteriaCovered": true } ], "declarationMoves": [ { "name": "SKILLS_BLOCK_MAX_BYTES", "kind": null, "onSurface": false, "from": [ "src/core/runner/synthetic-tools.ts" ], "to": [ "src/core/runner/synthetic-tools.ts", "src/core/skill-listing-budget.ts" ] } ], "mintMoves": [], "criteriaObserves": [ { "kind": "engineNoticeCode", "name": "classifier.contract_broken", "assertions": [ "G1.c" ] }, { "kind": "engineNoticeCode", "name": "classifier.role_defaulted", "assertions": [ "G1.b" ] }, { "kind": "engineNoticeCode", "name": "skills.listing_truncated", "assertions": [ "G4.b" ] }, { "kind": "typeMember", "name": "AskRequest.readRootCandidate", "assertions": [ "G5.a" ] }, { "kind": "typeMember", "name": "AskRequest.toolName", "assertions": [ "G3.b" ] }, { "kind": "typeMember", "name": "AssistantMessage.partialFinalized", "assertions": [ "G1.d" ] }, { "kind": "typeMember", "name": "GateDisposition.classifier", "assertions": [ "G1.a" ] }, { "kind": "typeMember", "name": "ReadRootGrantCandidate.dir", "assertions": [ "G5.b" ] }, { "kind": "typeMember", "name": "ReversibilityVerdict.readRootCandidate", "assertions": [ "G5.c" ] }, { "kind": "typeMember", "name": "Settlement.kind", "assertions": [ "G2.b" ] }, { "kind": "typeMember", "name": "Settlement.note", "assertions": [ "G2.a" ] }, { "kind": "typeMember", "name": "TaskSpec.skillListingBudgetFraction", "assertions": [ "G4.a", "G6.a" ] }, { "kind": "typeMember", "name": "TaskSpec.skillListingMaxDescChars", "assertions": [ "G4.c" ] }, { "kind": "typeMember", "name": "WriteProtectionMatcher.matchPath", "assertions": [ "G3.a" ] } ], "consumersHint": { "cli": [ "AskRequest", "CompoundReadonlyVerdict", "ENGINE_NOTICE_CODES", "PermissionResult", "PreToolUseResult", "RECOMMENDED_SENSITIVE_PATTERNS", "TaskSpec" ], "server": [ "AskRequest", "AutoModeVerdict", "CLASSIFIER_PARSE_FAILURE_DENY_MESSAGE", "CompoundReadonlyVerdict", "ENGINE_NOTICE_CODES", "PermissionResult", "PreToolUseResult", "RECOMMENDED_SENSITIVE_PATTERNS", "ReversibilityVerdict", "TaskSpec", "thinkingOffExpressible" ], "sdk": [ "AskRequest", "PermissionResult", "PreToolUseResult", "TaskSpec" ], "note": "scanned cli@116d081d server@565d02fc sdk@17a8533 — a name listed is MENTIONED there today, which is evidence of consumption, not proof of it" }, "breakingCount": 3, "breakingItems": [ "closed set lost members: RECOMMENDED_SENSITIVE_PATTERNS -.claude*,.sema", "export removed: CLASSIFIER_PARSE_FAILURE_DENY_MESSAGE (variable)", "export removed: thinkingOffExpressible (function)" ], "toResolvedAt": "0ef667ab5a0122c0c73b9635de5035dab4a472dc" }