UNPKG

@sema-agent/core

Version:

Stateless, task-oriented AI agent core

1,108 lines (1,107 loc) • 27.4 kB
{ "repo": "core", "version": "7.42.0", "from": "b8c8666207a044498ac37fb36d14304a66ea5a92", "to": "bb9acc0d77da51b9c1430a05e630c0265da9a513", "added": [ { "name": "ALLOW_ENTRY_INERT_REASONS", "kind": "variable", "tier": "advanced", "at": [ "src/core/allow-entry.ts:36", "src/index.ts:1471" ], "criteriaCovered": false, "breaking": false }, { "name": "ALLOW_RULE_MEMBERS", "kind": "variable", "tier": "advanced", "at": [ "src/core/allow-rule-shadow.ts:9", "src/index.ts:1472" ], "criteriaCovered": false, "breaking": false }, { "name": "AllowEntryGateSeats", "kind": "interface", "tier": "advanced", "at": [ "src/core/allow-entry.ts:280", "src/index.ts:1471" ], "criteriaCovered": false, "breaking": false }, { "name": "AllowEntryHit", "kind": "interface", "tier": "advanced", "at": [ "src/core/allow-entry.ts:266", "src/index.ts:1471" ], "criteriaCovered": false, "breaking": false }, { "name": "AllowEntryInertReason", "kind": "type", "tier": "advanced", "at": [ "src/core/allow-entry.ts:37", "src/index.ts:1471" ], "criteriaCovered": false, "breaking": false }, { "name": "AllowEntryLane", "kind": "interface", "tier": "advanced", "at": [ "src/core/allow-entry.ts:271", "src/index.ts:1471" ], "criteriaCovered": false, "breaking": false }, { "name": "AllowRuleMember", "kind": "type", "tier": "advanced", "at": [ "src/core/allow-rule-shadow.ts:10", "src/index.ts:1472" ], "criteriaCovered": false, "breaking": false }, { "name": "AllowRuleShadow", "kind": "interface", "tier": "advanced", "at": [ "src/core/allow-rule-shadow.ts:14", "src/index.ts:1472" ], "criteriaCovered": true, "breaking": false }, { "name": "CompiledAllowEntry", "kind": "type", "tier": "advanced", "at": [ "src/core/allow-entry.ts:41", "src/index.ts:1471" ], "criteriaCovered": false, "breaking": false }, { "name": "compileAllowEntry", "kind": "function", "tier": "advanced", "at": [ "src/core/allow-entry.ts:61", "src/index.ts:1471" ], "criteriaCovered": false, "breaking": false }, { "name": "compileAllowList", "kind": "function", "tier": "advanced", "at": [ "src/core/allow-entry.ts:107", "src/index.ts:1471" ], "criteriaCovered": false, "breaking": false } ], "removed": [ { "name": "SKILL_ENTRY_INERT_REASONS", "kind": "variable", "tier": "advanced", "at": [ "src/core/skill-grant.ts:65", "src/index.ts:1470" ], "breaking": true }, { "name": "SkillEntryInertReason", "kind": "type", "tier": "advanced", "at": [ "src/core/skill-grant.ts:66", "src/index.ts:1469" ], "breaking": true } ], "changed": [], "narrowed": [], "closedSetMembers": [ { "set": "ADMITTED_IMAGE_MIME_TYPES", "at": [ "src/tools/fs/image-admission.ts:25" ], "newSet": true, "added": [ "image/gif", "image/jpeg", "image/png", "image/webp" ], "removed": [], "breaking": false, "criteriaCovered": false }, { "set": "ALLOW_ENTRY_INERT_REASONS", "at": [ "src/core/allow-entry.ts:36" ], "newSet": true, "added": [ "content_unsupported", "domain", "grammar", "namespace_wildcard", "path_pattern", "wildcard_all" ], "removed": [], "breaking": false, "criteriaCovered": false }, { "set": "ALLOW_RULE_MEMBERS", "at": [ "src/core/allow-rule-shadow.ts:9" ], "newSet": true, "added": [ "deployment", "hook", "persisted", "request", "skill" ], "removed": [], "breaking": false, "criteriaCovered": false }, { "set": "AUTO_STRIPPED_PROGRAMS", "at": [ "src/core/allow-entry.ts:126" ], "newSet": true, "added": [ "bash", "bun run", "bunx", "deno", "env", "eval", "exec", "fish", "lua", "node", "npm run", "npx", "perl", "php", "pnpm run", "python", "python2", "python3", "ruby", "sh", "ssh", "sudo", "tsx", "xargs", "yarn run", "zsh" ], "removed": [], "breaking": false, "criteriaCovered": false }, { "set": "AllowEntryInertReason", "at": [ "src/core/allow-entry.ts:37", "src/index.ts:1471" ], "newSet": true, "added": [ "content_unsupported", "domain", "grammar", "namespace_wildcard", "path_pattern", "wildcard_all" ], "removed": [], "breaking": false, "criteriaCovered": false }, { "set": "AllowEntrySource", "at": [ "src/core/allow-entry.ts:263" ], "newSet": true, "added": [ "deployment", "request" ], "removed": [], "breaking": false, "criteriaCovered": false }, { "set": "AllowRuleMember", "at": [ "src/core/allow-rule-shadow.ts:10", "src/index.ts:1472" ], "newSet": true, "added": [ "deployment", "hook", "persisted", "request", "skill" ], "removed": [], "breaking": false, "criteriaCovered": false }, { "set": "DecisionReason", "at": [ "src/core/decision-receipt.ts:29", "src/core/tool-policy.ts:189", "src/index.ts:1429" ], "newSet": false, "added": [ "deployment_rule", "request_rule" ], "removed": [], "breaking": false, "criteriaCovered": false }, { "set": "ENGINE_NOTICE_CODES", "at": [ "src/core/governance-codes.ts:348" ], "newSet": false, "added": [ "permission.allowed_tool_not_granted" ], "removed": [ "skills.allowed_tool_not_granted" ], "persistedBy": "none", "breaking": true, "criteriaCovered": true }, { "set": "PermissionRule.behavior", "at": [ "src/core/permission-rules.ts:79" ], "newSet": false, "added": [], "removed": [ "allow" ], "persistedBy": "none", "breaking": true, "criteriaCovered": false }, { "set": "PermissionRuleIssue.code", "at": [ "src/core/permission-rules.ts:103" ], "newSet": false, "added": [ "invalid.behavior", "invalid.entry_type", "unsupported.allow" ], "removed": [ "invalid.allow_param_rule", "unsupported.bash_prefix", "unsupported.file_glob" ], "breaking": true, "criteriaCovered": false }, { "set": "READ_OUTCOMES", "at": [ "src/tools/fs/fs-read.ts:83" ], "newSet": true, "added": [ "attached", "not_attached", "partial", "unchanged" ], "removed": [], "breaking": false, "criteriaCovered": false }, { "set": "ReadKind", "at": [ "src/tools/fs/fs-read.ts:88" ], "newSet": true, "added": [ "image", "notebook", "pdf", "text" ], "removed": [], "breaking": false, "criteriaCovered": false }, { "set": "ReadOutcome", "at": [ "src/tools/fs/fs-read.ts:84" ], "newSet": true, "added": [ "attached", "not_attached", "partial", "unchanged" ], "removed": [], "breaking": false, "criteriaCovered": false }, { "set": "SYNTHETIC_READ_LAYERS", "at": [ "src/core/synthetic-read-verdict.ts:61" ], "newSet": true, "added": [ "caller_policy", "inherited_constraint", "narrowing", "org_rules", "persisted_rules", "skill_rows" ], "removed": [], "breaking": false, "criteriaCovered": false }, { "set": "SYNTHETIC_READ_UNANSWERABLE_CAUSES", "at": [ "src/core/synthetic-read-verdict.ts:65" ], "newSet": true, "added": [ "approval_seat", "call_unreadable", "org_unavailable", "threw", "timed_out" ], "removed": [], "breaking": false, "criteriaCovered": false }, { "set": "SyntheticReadLayer", "at": [ "src/core/synthetic-read-verdict.ts:62" ], "newSet": true, "added": [ "caller_policy", "inherited_constraint", "narrowing", "org_rules", "persisted_rules", "skill_rows" ], "removed": [], "breaking": false, "criteriaCovered": false }, { "set": "SyntheticReadUnanswerableCause", "at": [ "src/core/synthetic-read-verdict.ts:66" ], "newSet": true, "added": [ "approval_seat", "call_unreadable", "org_unavailable", "threw", "timed_out" ], "removed": [], "breaking": false, "criteriaCovered": false }, { "set": "TraceEvent.kind", "at": [ "src/core/trace.ts:62", "src/core/trace.ts:96", "src/core/trace.ts:137", "src/core/trace.ts:167", "src/core/trace.ts:208", "src/core/trace.ts:226", "src/core/trace.ts:241", "src/core/trace.ts:276", "src/core/trace.ts:278", "src/core/trace.ts:321", "src/core/trace.ts:350", "src/core/trace.ts:368", "src/core/trace.ts:382", "src/core/trace.ts:399", "src/core/trace.ts:415", "src/core/trace.ts:430", "src/core/trace.ts:447", "src/core/trace.ts:462", "src/core/trace.ts:476", "src/core/trace.ts:494", "src/core/trace.ts:513", "src/core/trace.ts:531", "src/core/trace.ts:556", "src/core/trace.ts:584", "src/core/trace.ts:598", "src/core/trace.ts:612", "src/core/trace.ts:633", "src/core/trace.ts:644", "src/core/trace.ts:659", "src/core/trace.ts:671", "src/core/trace.ts:685", "src/core/trace.ts:704", "src/core/trace.ts:714", "src/core/trace.ts:722", "src/core/trace.ts:732", "src/core/trace.ts:748", "src/core/trace.ts:765", "src/core/trace.ts:777", "src/core/trace.ts:787", "src/core/trace.ts:809", "src/core/trace.ts:831", "src/core/trace.ts:839", "src/core/trace.ts:859", "src/core/trace.ts:875", "src/core/trace.ts:885", "src/core/trace.ts:898", "src/core/trace.ts:912", "src/core/trace.ts:921", "src/core/trace.ts:932", "src/core/trace.ts:942" ], "newSet": false, "added": [ "permission.allowed_tools_allowed" ], "removed": [], "breaking": false, "criteriaCovered": false }, { "set": "TraceEvent.source", "at": [ "src/core/trace.ts:452" ], "newSet": true, "added": [ "deployment", "request" ], "removed": [], "breaking": false, "criteriaCovered": false } ], "closedSetsUnreadable": [], "typeKeys": [ { "type": "AskRequest", "at": [ "src/core/tool-policy.ts:2820" ], "added": [ "allowRuleShadowed" ], "addedDetail": [ { "key": "allowRuleShadowed", "optional": true } ], "addedRequired": [], "removed": [ "persistedRuleShadowed" ], "breaking": true, "criteriaCovered": true }, { "type": "PermissionResult", "at": [ "src/core/tool-policy.ts:474" ], "added": [ "ask.allowRuleShadowed" ], "addedDetail": [ { "key": "ask.allowRuleShadowed", "optional": true } ], "addedRequired": [], "removed": [ "ask.persistedRuleShadowed" ], "breaking": true, "criteriaCovered": false }, { "type": "PreToolUseResult", "at": [ "src/core/hooks.ts:1180" ], "added": [ "ask.allowRuleShadowed" ], "addedDetail": [ { "key": "ask.allowRuleShadowed", "optional": true } ], "addedRequired": [], "removed": [ "ask.persistedRuleShadowed" ], "breaking": true, "criteriaCovered": false }, { "type": "RiskDescriptor", "at": [ "src/core/checkpoint-store.ts:146" ], "added": [ "allowRuleShadowed" ], "addedDetail": [ { "key": "allowRuleShadowed", "optional": true } ], "addedRequired": [], "removed": [ "shadowedRule" ], "breaking": true, "criteriaCovered": false }, { "type": "RunInternals", "at": [ "src/core/runner/contracts.ts:1415" ], "added": [ "inheritedAllowedTools" ], "addedDetail": [ { "key": "inheritedAllowedTools", "optional": true } ], "addedRequired": [], "removed": [], "breaking": false, "criteriaCovered": false }, { "type": "RunnerDeps", "at": [ "src/core/runner-deps.ts:105" ], "added": [ "allowedTools" ], "addedDetail": [ { "key": "allowedTools", "optional": true } ], "addedRequired": [], "removed": [], "breaking": false, "criteriaCovered": true }, { "type": "TaskSpec", "at": [ "src/core/task-spec.ts:52" ], "added": [ "allowedTools" ], "addedDetail": [ { "key": "allowedTools", "optional": true } ], "addedRequired": [], "removed": [], "breaking": false, "criteriaCovered": true }, { "type": "ToolExecuteContext", "at": [ "src/core/tool-spec.ts:613" ], "added": [ "activeRequestAllowedTools" ], "addedDetail": [ { "key": "activeRequestAllowedTools", "optional": true } ], "addedRequired": [], "removed": [], "breaking": false, "criteriaCovered": false }, { "type": "ToolGateInput", "at": [ "src/core/hooks.ts:1470" ], "via": "runToolGate.ToolGateInput", "added": [ "deploymentAllows", "deploymentAllows.onAllowed", "requestAllows", "requestAllows.onAllowed" ], "addedDetail": [ { "key": "deploymentAllows", "optional": true }, { "key": "deploymentAllows.onAllowed", "optional": true }, { "key": "requestAllows", "optional": true }, { "key": "requestAllows.onAllowed", "optional": true } ], "addedRequired": [], "removed": [], "breaking": false, "criteriaCovered": false }, { "type": "TraceEvent", "at": [ "src/core/trace.ts:60" ], "added": [ "permission.allowed_tools_allowed.entries", "permission.allowed_tools_allowed.kind", "permission.allowed_tools_allowed.source", "permission.allowed_tools_allowed.taskId", "permission.allowed_tools_allowed.toolCallId", "permission.allowed_tools_allowed.toolName", "permission.allowed_tools_allowed.ts", "permission.allowed_tools_allowed.version" ], "addedDetail": [ { "key": "permission.allowed_tools_allowed.entries", "optional": false }, { "key": "permission.allowed_tools_allowed.kind", "optional": false }, { "key": "permission.allowed_tools_allowed.source", "optional": false }, { "key": "permission.allowed_tools_allowed.taskId", "optional": false }, { "key": "permission.allowed_tools_allowed.toolCallId", "optional": false }, { "key": "permission.allowed_tools_allowed.toolName", "optional": false }, { "key": "permission.allowed_tools_allowed.ts", "optional": false }, { "key": "permission.allowed_tools_allowed.version", "optional": false } ], "addedRequired": [], "removed": [], "breaking": false, "criteriaCovered": false } ], "typeKeysUnreadableArms": [], "typeKeysFlattenedCount": 225, "signatures": [ { "name": "ToolGateInput.suspendAsk", "at": [ "src/core/hooks.ts:1564" ], "from": [ "(req: ToolCallRequest, postHookArgs: unknown, safety?: import(\"./checkpoint-store.js\").SafetyAxis, liveFaceUnavailable?: boolean, realApproval?: import(\"./checkpoint-store.js\").RealApprovalGateBit, shadowedRule?: string, askDecisionReason?: DecisionReason, probeReason?: string, probeCause?: import(\"./checkpoint-store.js\").ProbeCause, segmentCoverage?: readonly import(\"./permission-rule-model.js\").SegmentCoverage[], matchedAskRule?: string, probeMandated?: boolean, carry?: AskCarry): Promise<ToolGateResult[\"suspend\"] | ParkAttemptFailed | undefined>" ], "to": [ "(req: ToolCallRequest, postHookArgs: unknown, safety?: import(\"./checkpoint-store.js\").SafetyAxis, liveFaceUnavailable?: boolean, realApproval?: import(\"./checkpoint-store.js\").RealApprovalGateBit, allowRuleShadowed?: readonly import(\"./allow-rule-shadow.js\").AllowRuleShadow[], askDecisionReason?: DecisionReason, probeReason?: string, probeCause?: import(\"./checkpoint-store.js\").ProbeCause, segmentCoverage?: readonly import(\"./permission-rule-model.js\").SegmentCoverage[], matchedAskRule?: string, probeMandated?: boolean, carry?: AskCarry): Promise<ToolGateResult[\"suspend\"] | ParkAttemptFailed | undefined>" ], "changes": [ { "aspect": "param", "detail": "param 6 `allowRuleShadowed` type changed, direction not read: [string -> readonly import(\"./allow-rule-shadow.js\").AllowRuleShadow[]]", "breaking": true, "uncertain": true } ], "uncertain": "param 6 `allowRuleShadowed` type changed, direction not read: [string -> readonly import(\"./allow-rule-shadow.js\").AllowRuleShadow[]] — the direction of a type change is not read syntactically, so it is reported breaking: check whether existing call sites still type-check before writing the BREAKING line", "breaking": true, "criteriaCovered": false }, { "name": "buildRiskDescriptor", "at": [ "src/core/checkpoint-store.ts:554" ], "from": [ "(input: { toolName: string; args: unknown; safety?: SafetyAxis; shellGated?: boolean; shellGateDoctrine?: ShellGateDoctrine; shadowedRule?: string; probeReason?: string; probeCause?: unknown; }): RiskDescriptor" ], "to": [ "(input: { toolName: string; args: unknown; safety?: SafetyAxis; shellGated?: boolean; shellGateDoctrine?: ShellGateDoctrine; allowRuleShadowed?: readonly import(\"./allow-rule-shadow.js\").AllowRuleShadow[]; probeReason?: string; probeCause?: unknown; }): RiskDescriptor" ], "changes": [ { "aspect": "param", "detail": "param 1 `input` type changed, direction not read: …ne?: ShellGateDoctrine; [shadowedRule?: string -> allowRuleShadowed?: readonly import(\"./allow-rule-shadow.js\").AllowRu…]; probeReason?: string; …", "breaking": true, "uncertain": true } ], "uncertain": "param 1 `input` type changed, direction not read: …ne?: ShellGateDoctrine; [shadowedRule?: string -> allowRuleShadowed?: readonly import(\"./allow-rule-shadow.js\").AllowRu…]; probeReason?: string; … — the direction of a type change is not read syntactically, so it is reported breaking: check whether existing call sites still type-check before writing the BREAKING line", "breaking": true, "criteriaCovered": false } ], "declarationMoves": [ { "name": "FileKind", "kind": null, "onSurface": false, "from": [ "src/engine/harness/types.ts" ], "to": [ "src/engine/harness/types.ts", "src/internal/harness-types.ts" ] }, { "name": "normalizeOrgGateVerdict", "kind": null, "onSurface": false, "from": [ "src/core/gate-lanes.ts", "src/core/hooks.ts" ], "to": [ "src/core/hooks.ts", "src/core/rule-lane-reads.ts" ] }, { "name": "normalizePersistedRuleHit", "kind": "function", "onSurface": true, "from": [ "src/core/gate-lanes.ts", "src/core/hooks.ts", "src/index.ts" ], "to": [ "src/core/hooks.ts", "src/core/rule-lane-reads.ts", "src/index.ts" ] } ], "mintMoves": [], "criteriaObserves": [ { "kind": "engineNoticeCode", "name": "permission.allowed_tool_not_granted", "assertions": [ "G11.a", "G14.a" ] }, { "kind": "taskEventField", "name": "steering_injected.source", "assertions": [ "G2.a", "G2.b" ] }, { "kind": "taskEventField", "name": "tool_end.gate", "assertions": [ "G5.a", "G5.b", "G7.a", "G13.a", "G15.c" ] }, { "kind": "taskEventField", "name": "tool_end.structured", "assertions": [ "G4.a" ] }, { "kind": "typeMember", "name": "AllowRuleShadow.entries", "assertions": [ "G9.a" ] }, { "kind": "typeMember", "name": "AllowRuleShadow.member", "assertions": [ "G9.a" ] }, { "kind": "typeMember", "name": "AskRequest.allowRuleShadowed", "assertions": [ "G7.b", "G9.a" ] }, { "kind": "typeMember", "name": "AskRequest.askClass", "assertions": [ "G7.b", "G15.c" ] }, { "kind": "typeMember", "name": "AskRequest.denialLimitFallback", "assertions": [ "G10.a" ] }, { "kind": "typeMember", "name": "AskRequest.message", "assertions": [ "G9.b" ] }, { "kind": "typeMember", "name": "PermissionRule.behavior", "assertions": [ "G15.b", "G16.b" ] }, { "kind": "typeMember", "name": "PermissionRuleIssue.code", "assertions": [ "G15.a", "G15.b", "G16.a" ] }, { "kind": "typeMember", "name": "RunnerDeps.allowedTools", "assertions": [ "G6.a", "G12.a" ] }, { "kind": "typeMember", "name": "TaskResult.terminal", "assertions": [ "G1.a", "G1.b", "G1.c" ] }, { "kind": "typeMember", "name": "TaskSpec.allowedTools", "assertions": [ "G6.a", "G6.b", "G8.a" ] }, { "kind": "typeMember", "name": "TaskSpec.images", "assertions": [ "G1.a", "G1.c" ] }, { "kind": "typeMember", "name": "TaskSpec.toolPolicy", "assertions": [ "G2.a", "G2.c" ] }, { "kind": "typeMember", "name": "ToolPolicy.check", "assertions": [ "G3.a", "G3.b" ] } ], "consumersHint": { "cli": [ "AskRequest", "DecisionReason", "ENGINE_NOTICE_CODES", "PermissionResult", "PermissionRule", "PermissionRuleIssue", "PreToolUseResult", "RiskDescriptor", "RunInternals", "RunnerDeps", "TaskSpec", "ToolExecuteContext", "ToolGateInput", "TraceEvent" ], "server": [ "AskRequest", "DecisionReason", "ENGINE_NOTICE_CODES", "PermissionResult", "PermissionRuleIssue", "PreToolUseResult", "RiskDescriptor", "RunInternals", "RunnerDeps", "TaskSpec", "ToolExecuteContext", "ToolGateInput", "TraceEvent", "buildRiskDescriptor" ], "sdk": [ "AskRequest", "DecisionReason", "ENGINE_NOTICE_CODES", "PermissionResult", "PermissionRuleIssue", "PreToolUseResult", "RiskDescriptor", "RunnerDeps", "TaskSpec", "TraceEvent" ], "note": "scanned cli@e790a1ca server@4160110a sdk@bc45b50 — a name listed is MENTIONED there today, which is evidence of consumption, not proof of it. Ledger files (**/docs/core-consumption/**, **/docs/wire-consumption/**, **/*LEDGER*.json) are not evidence of use — server: 1 name(s) matched ONLY in bookkeeping files and were set aside (PermissionRule)" }, "breakingCount": 11, "breakingItems": [ "closed set lost members: ENGINE_NOTICE_CODES -skills.allowed_tool_not_granted", "closed set lost members: PermissionRule.behavior -allow", "closed set lost members: PermissionRuleIssue.code -invalid.allow_param_rule,unsupported.bash_prefix,unsupported.file_glob", "export removed: SKILL_ENTRY_INERT_REASONS (variable)", "export removed: SkillEntryInertReason (type)", "signature changed: ToolGateInput.suspendAsk — param 6 `allowRuleShadowed` type changed, direction not read: [string -> readonly import(\"./allow-rule-shadow.js\").AllowRuleShadow[]]", "signature changed: buildRiskDescriptor — param 1 `input` type changed, direction not read: …ne?: ShellGateDoctrine; [shadowedRule?: string -> allowRuleShadowed?: readonly import(\"./allow-rule-shadow.js\").AllowRu…]; probeReason?: string; …", "type lost keys: AskRequest -persistedRuleShadowed", "type lost keys: PermissionResult -ask.persistedRuleShadowed", "type lost keys: PreToolUseResult -ask.persistedRuleShadowed", "type lost keys: RiskDescriptor -shadowedRule" ] }