@sema-agent/core 7.11.2 → 7.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +86 -13
- package/dist/core/ask-origin.d.ts +55 -0
- package/dist/core/ask-origin.js +21 -0
- package/dist/core/auto-mode-arming.d.ts +10 -14
- package/dist/core/auto-mode-arming.js +3 -9
- package/dist/core/auto-mode-defaults.d.ts +0 -2
- package/dist/core/auto-mode-defaults.js +0 -1
- package/dist/core/auto-mode-rebuild.d.ts +6 -13
- package/dist/core/auto-mode-rebuild.js +0 -2
- package/dist/core/auto-mode.d.ts +30 -89
- package/dist/core/auto-mode.js +12 -59
- package/dist/core/checkpoint-store.d.ts +1 -3
- package/dist/core/engine-notice.d.ts +18 -0
- package/dist/core/gate-fold.js +1 -9
- package/dist/core/gate-lanes.d.ts +0 -40
- package/dist/core/gate-lanes.js +18 -26
- package/dist/core/governance-codes.d.ts +1 -1
- package/dist/core/governance-codes.js +2 -0
- package/dist/core/hooks.d.ts +7 -1
- package/dist/core/hooks.js +1 -1
- package/dist/core/runner/assemble-result.d.ts +45 -1
- package/dist/core/runner/assemble-result.js +4 -1
- package/dist/core/runner/compaction-seams.d.ts +42 -0
- package/dist/core/runner/compaction-seams.js +80 -0
- package/dist/core/runner/contracts.d.ts +85 -15
- package/dist/core/runner/denial-limit-arms.d.ts +10 -13
- package/dist/core/runner/denial-limit-arms.js +12 -9
- package/dist/core/runner/gate-exit.js +9 -1
- package/dist/core/runner/permission-rule-lanes.d.ts +2 -1
- package/dist/core/runner/permission-rule-lanes.js +2 -1
- package/dist/core/runner/prepare-caps-and-workflow.d.ts +1 -1
- package/dist/core/runner/prepare-caps-and-workflow.js +0 -5
- package/dist/core/runner/prepare-policy-chain.js +3 -2
- package/dist/core/runner/prepare-protocol-tools.js +5 -0
- package/dist/core/runner/prepare-safety-scan.js +11 -16
- package/dist/core/runner/prepare-suspend-saga.d.ts +0 -2
- package/dist/core/runner/prepare-suspend-saga.js +2 -10
- package/dist/core/runner/prepare-task.d.ts +9 -1
- package/dist/core/runner/prepare-task.js +7 -2
- package/dist/core/runner/prepare-wiring-manifest.d.ts +1 -1
- package/dist/core/runner/prepare-wiring-manifest.js +1 -8
- package/dist/core/runner/resume-claim.d.ts +2 -2
- package/dist/core/runner/resume-preflight.d.ts +2 -2
- package/dist/core/runner/run-attachment-seats.d.ts +6 -4
- package/dist/core/runner/run-attachment-seats.js +2 -2
- package/dist/core/runner/run-git-lane.d.ts +1 -1
- package/dist/core/runner/run-harness-handlers.js +2 -0
- package/dist/core/runner/run-identity-wiring.d.ts +21 -33
- package/dist/core/runner/run-identity-wiring.js +6 -3
- package/dist/core/runner/run-leg.d.ts +108 -0
- package/dist/core/runner/run-leg.js +713 -0
- package/dist/core/runner/run-notification-lane.d.ts +56 -0
- package/dist/core/runner/run-notification-lane.js +128 -0
- package/dist/core/runner/run-reasoning-seat.d.ts +5 -5
- package/dist/core/runner/run-reasoning-seat.js +7 -7
- package/dist/core/runner/run-recovery-lanes.d.ts +4 -17
- package/dist/core/runner/run-recovery-lanes.js +5 -4
- package/dist/core/runner/run-settle-and-teardown.d.ts +113 -0
- package/dist/core/runner/run-settle-and-teardown.js +432 -0
- package/dist/core/runner/run-stop-and-final-verify.d.ts +2 -2
- package/dist/core/runner/run-terminal-adoption.d.ts +99 -0
- package/dist/core/runner/run-terminal-adoption.js +200 -0
- package/dist/core/runner/run-turn-boundary.js +5 -4
- package/dist/core/runner/runtask.d.ts +10 -79
- package/dist/core/runner/runtask.js +83 -1557
- package/dist/core/runner/stream-lifecycle-verbs.js +10 -1
- package/dist/core/runner-deps.d.ts +4 -14
- package/dist/core/store-contracts/workflow-journal-store-contract.d.ts +7 -0
- package/dist/core/store-contracts/workflow-journal-store-contract.js +85 -0
- package/dist/core/task-stream.d.ts +10 -1
- package/dist/core/tool-face.d.ts +8 -0
- package/dist/core/tool-face.js +1 -0
- package/dist/core/tool-policy.d.ts +42 -96
- package/dist/core/tool-policy.js +1 -11
- package/dist/core/tool-registry.d.ts +11 -3
- package/dist/core/tool-registry.js +7 -1
- package/dist/core/tool-roster.d.ts +26 -0
- package/dist/core/tool-roster.js +38 -7
- package/dist/core/trace.d.ts +6 -7
- package/dist/core/wiring-manifest.d.ts +5 -22
- package/dist/core/wiring-manifest.js +3 -11
- package/dist/core/workflow-journal-store.d.ts +35 -4
- package/dist/core/workflow-journal-store.js +19 -2
- package/dist/index.d.ts +6 -5
- package/dist/index.js +6 -5
- package/dist/orchestration/workflow.js +2 -0
- package/dist/server/http.js +2 -1
- package/dist/stores/file/workflow-journal-store.d.ts +7 -10
- package/dist/stores/file/workflow-journal-store.js +2 -4
- package/package.json +1 -1
- package/test/export-surface.snapshot.json +21 -11
|
@@ -71,13 +71,8 @@ export type ParkLaneReason = "no_checkpoint_store" | "no_durable_approval_opt_in
|
|
|
71
71
|
* verdict; the same fail-closed outcome as `denied`, named apart so a consumer
|
|
72
72
|
* can tell "policy said no" from "the entitlement source was unreachable".
|
|
73
73
|
* - `armed` — all three arms held; the classifier decider was minted for this leg.
|
|
74
|
-
* - `latch_open` — the session's one-way "back to non-auto" breaker has tripped. A leg-START
|
|
75
|
-
* manifest never carries it (a decider is minted fresh at prepare and its latch
|
|
76
|
-
* is closed by construction; a tripped ancestor hands no intent forward, which
|
|
77
|
-
* reads as `no_intent`); it is in the vocabulary so a consumer switching on the
|
|
78
|
-
* closed set is complete for a mid-leg re-read face, which nothing mints today.
|
|
79
74
|
*/
|
|
80
|
-
export declare const AUTO_MODE_ARM_REASONS: readonly ["armed", "no_intent", "no_face", "denied", "resolver_fault"
|
|
75
|
+
export declare const AUTO_MODE_ARM_REASONS: readonly ["armed", "no_intent", "no_face", "denied", "resolver_fault"];
|
|
81
76
|
export type AutoModeArmReason = (typeof AUTO_MODE_ARM_REASONS)[number];
|
|
82
77
|
/**
|
|
83
78
|
* One declared MCP server's materialization result for THIS leg — the per-server connection-state
|
|
@@ -243,22 +238,13 @@ export interface WiringManifest {
|
|
|
243
238
|
* per-leg READ face of the auto-mode arming decision: `armed` ⇔ `reason === "armed"` (the
|
|
244
239
|
* classifier decider was minted for this leg), and `reason` names the first arm that failed
|
|
245
240
|
* otherwise — see {@link AUTO_MODE_ARM_REASONS}. A serving layer that used to infer the mode from
|
|
246
|
-
* spec shape reads it here instead.
|
|
247
|
-
*
|
|
248
|
-
*
|
|
249
|
-
* for this session on this Runner (an EARLIER leg's decider — the latch is a per-run fact and a leg-start
|
|
250
|
-
* manifest's own decider is closed by construction, which is why there is no `open` boolean here: it
|
|
251
|
-
* would read `false` on every mint; the reason vocabulary reserves `latch_open` for a mid-leg re-read
|
|
252
|
-
* face nothing mints today). Present ⇔ a trip was recorded (never tripped, evicted or a standalone
|
|
253
|
-
* prepare ⇒ absent). `{ openedAtMs, lastCause, failures, runId }` — see
|
|
254
|
-
* {@link import("./auto-mode.js").AutoModeBreakerTrip}. A per-leg observation like `mcp`, so it is NOT
|
|
255
|
-
* part of {@link configFingerprint}: legs of one assembly must fingerprint alike whether or not a
|
|
256
|
-
* classifier was down.
|
|
241
|
+
* spec shape reads it here instead. The classifier's availability is a per-CALL fact (an unavailable
|
|
242
|
+
* round is a deny that says so, and the next round is classified afresh), so there is no session-level
|
|
243
|
+
* breaker face here and nothing about availability enters {@link configFingerprint}.
|
|
257
244
|
*/
|
|
258
245
|
autoMode?: {
|
|
259
246
|
armed: boolean;
|
|
260
247
|
reason: AutoModeArmReason;
|
|
261
|
-
breaker?: import("./auto-mode.js").AutoModeBreakerTrip;
|
|
262
248
|
};
|
|
263
249
|
/**
|
|
264
250
|
* EFFECTIVE half only, and ALWAYS present on an engine-minted effective manifest (the `autoMode`
|
|
@@ -347,13 +333,10 @@ export interface WiringFacts {
|
|
|
347
333
|
restore: string;
|
|
348
334
|
};
|
|
349
335
|
/** Effective half only — see {@link WiringManifest.autoMode}; the static half has no leg to arm.
|
|
350
|
-
* `armed` must agree with `reason` (`armed ⇔ reason === "armed"`); a contradicting pair is refused.
|
|
351
|
-
* `breaker` (#616) is the session's most recent recorded trip, or absent; a trip whose cause is outside
|
|
352
|
-
* the closed set or whose numbers are not finite is refused. */
|
|
336
|
+
* `armed` must agree with `reason` (`armed ⇔ reason === "armed"`); a contradicting pair is refused. */
|
|
353
337
|
autoMode?: {
|
|
354
338
|
armed: boolean;
|
|
355
339
|
reason: AutoModeArmReason;
|
|
356
|
-
breaker?: import("./auto-mode.js").AutoModeBreakerTrip;
|
|
357
340
|
};
|
|
358
341
|
/** Effective half only — see {@link WiringManifest.mcp}; the static half materializes nothing.
|
|
359
342
|
* Copied entry-wise onto the manifest (the caller's array is never aliased). */
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { createHash } from "node:crypto";
|
|
2
|
-
import { AUTO_MODE_BREAKER_CAUSES, isAutoModeBreakerCause } from "./auto-mode.js";
|
|
3
2
|
import { canonicalize } from "./canonical-json.js";
|
|
4
3
|
import { resolveCheckpointStore } from "./checkpoint-store.js";
|
|
5
4
|
import { isLiveQuestionFace } from "./ask-question.js";
|
|
6
|
-
export const AUTO_MODE_ARM_REASONS = ["armed", "no_intent", "no_face", "denied", "resolver_fault"
|
|
5
|
+
export const AUTO_MODE_ARM_REASONS = ["armed", "no_intent", "no_face", "denied", "resolver_fault"];
|
|
7
6
|
export function resolveDeclaredDurability(store, storeName) {
|
|
8
7
|
const declared = store?.durability;
|
|
9
8
|
if (declared === undefined)
|
|
@@ -72,13 +71,7 @@ function readAutoModeFact(fact) {
|
|
|
72
71
|
if (!AUTO_MODE_ARM_REASONS.includes(fact.reason) || fact.armed !== (fact.reason === "armed")) {
|
|
73
72
|
throw new Error(`the auto-mode wiring fact is inconsistent (armed=${String(fact.armed)}, reason=${JSON.stringify(fact.reason)}) — armed must hold exactly when reason is "armed", and reason must be one of ${AUTO_MODE_ARM_REASONS.join("|")}`);
|
|
74
73
|
}
|
|
75
|
-
|
|
76
|
-
if (b === undefined)
|
|
77
|
-
return { armed: fact.armed, reason: fact.reason };
|
|
78
|
-
if (!isAutoModeBreakerCause(b.lastCause) || !Number.isFinite(b.openedAtMs) || !Number.isInteger(b.failures) || b.failures < 1 || typeof b.runId !== "string" || b.runId === "") {
|
|
79
|
-
throw new Error(`the auto-mode breaker fact is malformed (${JSON.stringify(b)}) — lastCause must be one of ${AUTO_MODE_BREAKER_CAUSES.join("|")}, openedAtMs finite, failures a positive integer, runId a non-empty string`);
|
|
80
|
-
}
|
|
81
|
-
return { armed: fact.armed, reason: fact.reason, breaker: { openedAtMs: b.openedAtMs, lastCause: b.lastCause, failures: b.failures, runId: b.runId } };
|
|
74
|
+
return { armed: fact.armed, reason: fact.reason };
|
|
82
75
|
}
|
|
83
76
|
export function deriveWiringManifest(facts) {
|
|
84
77
|
if (facts.half === "static" && facts.leg !== undefined) {
|
|
@@ -140,9 +133,8 @@ export function deriveWiringManifest(facts) {
|
|
|
140
133
|
const { leg: _leg, mcp: _mcp, tools: _tools, ...assembly } = manifest;
|
|
141
134
|
const { provenance: _askSeat, ...askForHash } = assembly.ask;
|
|
142
135
|
const { provenance: _questionSeat, ...questionForHash } = assembly.question;
|
|
143
|
-
const { breaker: _breaker, ...autoModeForHash } = assembly.autoMode ?? {};
|
|
144
136
|
manifest.configFingerprint = createHash("sha256")
|
|
145
|
-
.update(canonicalize({ ...assembly, ask: askForHash, question: questionForHash
|
|
137
|
+
.update(canonicalize({ ...assembly, ask: askForHash, question: questionForHash }))
|
|
146
138
|
.digest("hex")
|
|
147
139
|
.slice(0, 16);
|
|
148
140
|
}
|
|
@@ -162,11 +162,42 @@ export declare function callKeyOrdinal(callKey: string): number;
|
|
|
162
162
|
* say WHY an ordinal never replays. `failed` + this code lands on the T2A-4 no-replay arm, so replay
|
|
163
163
|
* behavior is identical to the entry simply being absent (the pre-tombstone shape). */
|
|
164
164
|
export declare const JOURNAL_OVERSIZE_ERROR_CODE = "workflow.journal_oversize";
|
|
165
|
+
/**
|
|
166
|
+
* The refusal every {@link WorkflowJournalStore.append} answers an oversize entry with (#672): a stable
|
|
167
|
+
* `code` ({@link JOURNAL_OVERSIZE_ERROR_CODE} — the same word the engine's result-arm tombstone carries, so
|
|
168
|
+
* one code means "too big for the journal" on every face) and a message a person can act on (the bytes, the
|
|
169
|
+
* cap, the entry's callKey). A backend outside this package throws THIS class from its own `append` — the
|
|
170
|
+
* contract kit asserts the code only, so the class is the convenience, the code is the contract.
|
|
171
|
+
*/
|
|
172
|
+
export declare class WorkflowJournalOversizeError extends Error {
|
|
173
|
+
readonly callKey: string;
|
|
174
|
+
readonly bytes: number;
|
|
175
|
+
readonly cap: number;
|
|
176
|
+
readonly code = "workflow.journal_oversize";
|
|
177
|
+
constructor(callKey: string, bytes: number, cap?: number);
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* @contract workflow.journal_oversize.refused — every {@link WorkflowJournalStore.append} REFUSES an entry whose
|
|
181
|
+
* payload (the `parked` arm when present, else the `result` arm) serializes to more than
|
|
182
|
+
* {@link MAX_JOURNAL_RESULT_BYTES} UTF-8 bytes: it throws {@link WorkflowJournalOversizeError} and journals
|
|
183
|
+
* nothing, on BOTH arms alike — no backend degrades an oversize entry to a silent skip, and no backend
|
|
184
|
+
* judges the size by a rule of its own. A backend calls this first, before it touches its medium.
|
|
185
|
+
*
|
|
186
|
+
* Why a refusal and not the earlier skip (RB-168 "every backend degrades identically"): the skip was written
|
|
187
|
+
* for the `result` arm, where the engine measures the SAME serialization first and journals a small
|
|
188
|
+
* tombstone (RB-243) — a completed result never reaches this refusal. The `parked` arm (#642) is the child's
|
|
189
|
+
* whole paused TaskResult, which can exceed the cap; a park the journal dropped silently is a resume that
|
|
190
|
+
* runs the ordinal live beside the pinned child, and the write is the one moment the deployment can be told.
|
|
191
|
+
* A bad value answered with a default is the failure mode this repository refuses by default; the loud
|
|
192
|
+
* answer is the rule, the engine's tombstone the one place that pre-empts it.
|
|
193
|
+
*/
|
|
194
|
+
export declare function assertJournalEntryFits(entry: WorkflowJournalEntry): void;
|
|
165
195
|
/** RB-243: mint the tiny FAILED entry the ENGINE journals in place of an oversize result. The
|
|
166
|
-
* tombstone is minted in the engine, NOT in a store —
|
|
167
|
-
*
|
|
168
|
-
*
|
|
169
|
-
* taskId/sessionId/stats so the journal read-face still shows the session handle
|
|
196
|
+
* tombstone is minted in the engine, NOT in a store — a store REFUSES an oversize entry
|
|
197
|
+
* ({@link assertJournalEntryFits}) and never invents one; the engine measures the durable copy first, so
|
|
198
|
+
* the store sees the tombstone, not the payload. Never copies `result.result`/`structuredOutput` (the
|
|
199
|
+
* oversize payload); keeps taskId/sessionId/stats so the journal read-face still shows the session handle
|
|
200
|
+
* and the paid spend. Its own serialization is a few hundred bytes — always under the cap (pinned). */
|
|
170
201
|
export declare function journalOversizeTombstone(result: TaskResult, bytes: number): TaskResult;
|
|
171
202
|
/**
|
|
172
203
|
* RB-367 (dual-process probe, core-side judgment) — the TTL a resume claim {@link
|
|
@@ -9,6 +9,24 @@ export function callKeyOrdinal(callKey) {
|
|
|
9
9
|
return Number.isFinite(n) ? n : 0;
|
|
10
10
|
}
|
|
11
11
|
export const JOURNAL_OVERSIZE_ERROR_CODE = "workflow.journal_oversize";
|
|
12
|
+
export class WorkflowJournalOversizeError extends Error {
|
|
13
|
+
callKey;
|
|
14
|
+
bytes;
|
|
15
|
+
cap;
|
|
16
|
+
code = JOURNAL_OVERSIZE_ERROR_CODE;
|
|
17
|
+
constructor(callKey, bytes, cap = MAX_JOURNAL_RESULT_BYTES) {
|
|
18
|
+
super(`workflow journal: entry "${callKey}" is ${bytes} bytes, over the ${cap}-byte per-entry cap — refused, nothing journaled`);
|
|
19
|
+
this.callKey = callKey;
|
|
20
|
+
this.bytes = bytes;
|
|
21
|
+
this.cap = cap;
|
|
22
|
+
this.name = "WorkflowJournalOversizeError";
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
export function assertJournalEntryFits(entry) {
|
|
26
|
+
const serialized = JSON.stringify(entry.parked !== undefined ? entry.parked : entry.result);
|
|
27
|
+
if (oversizeJournalResult(serialized))
|
|
28
|
+
throw new WorkflowJournalOversizeError(entry.callKey, Buffer.byteLength(serialized, "utf8"));
|
|
29
|
+
}
|
|
12
30
|
export function journalOversizeTombstone(result, bytes) {
|
|
13
31
|
const message = `[journal] result omitted: ${bytes} bytes exceeds the ${MAX_JOURNAL_RESULT_BYTES}-byte per-entry journal cap; ` +
|
|
14
32
|
`the agent's real terminal status was "${terminalProjection(result.terminal).status}". A resume re-runs this agent (and everything after it) live.`;
|
|
@@ -65,8 +83,7 @@ export class InMemoryWorkflowJournalStore {
|
|
|
65
83
|
return [...rec.byOrdinal.entries()].sort((a, b) => a[0] - b[0]).map(([, e]) => snapshot(e));
|
|
66
84
|
}
|
|
67
85
|
async append(runId, scope, entry) {
|
|
68
|
-
|
|
69
|
-
return;
|
|
86
|
+
assertJournalEntryFits(entry);
|
|
70
87
|
let rec = this.runs.get(runId);
|
|
71
88
|
if (!rec) {
|
|
72
89
|
rec = { scope, byOrdinal: new Map() };
|
package/dist/index.d.ts
CHANGED
|
@@ -126,9 +126,9 @@ export { createFsWriteGatePolicy, type FsWriteGatePolicyOptions } from "./core/f
|
|
|
126
126
|
export { RETIRED_TOOL_NAMES } from "./core/tool-name-aliases.js";
|
|
127
127
|
export { DEFAULT_SUBAGENT_TOOL_NAME } from "./agents/subagent.js";
|
|
128
128
|
export { renderTaskNotificationXml, taskNotificationDedupKey, isDelegatedAgentTerminal, isTerminalTaskNotification, SystemInjectionQueue, type TaskNotificationPayload, type TaskNotificationStatus, type ExternalNotificationInput, type SystemInjection, type SystemInjectionPriority, SYSTEM_INJECTION_PRIORITIES, isSystemInjectionPriority, AGENT_MESSAGE_TAG, renderAgentMessageFrame, type SemaProvenance, } from "./core/task-notification.js";
|
|
129
|
-
export { TOOL_FAMILIES, TOOL_MOUNT_TAGS, TOOL_APPROVAL_CARDS, TOOL_PATH_ACCESSES, TOOL_PATH_BASES, TOOL_PATH_ABSENCES, TOOL_WIRE_NAME_MAX_CHARS, TOOL_CONTRACT_MAX_CHARS, TOOL_KEY_MAX_CHARS, TOOL_KEYS_MAX, RENDER_HINT_MAX_CHARS, RENDER_HINT_ACTIVITY_MAX_CHARS, RENDER_HINT_MAX_LIST, type ToolFamily, type ToolMountTag, type ToolApprovalCard, type ToolPathAccess, type ToolPathBase, type ToolPathAbsence, type ToolPathTarget, type ToolCallPathTarget, type ToolRosterPathTarget, pathTargetSlotOnly, type ToolRuleFace, type ToolRenderHints, type ToolFaceDeclaration, type ToolCatalogEntry, } from "./core/tool-face.js";
|
|
130
|
-
export { describeToolCatalog, catalogEntriesNamed, catalogToolNames, catalogRuleFaceOf, pathTargetOf, pathTargetValue, protectivePathTargetOf, declaredPathTargetOf, isProtectedWrite, isDeclaredWrite, fileOpAccessOf, type ToolCallLike, pathConfinableWriteToolNames, skillScopeWriteToolNames, pathTargetingToolNames, compactableToolNames, budgetExemptToolNames, handBandEffects, engineCardTypes, predictMountedToolNames, HANDS_BAND_TAGS, MOUNT_TAG_IN_HANDS_BAND, } from "./core/tool-registry.js";
|
|
131
|
-
export { ToolRosterEntry, ToolRoster, ToolRosterDelta, ToolRosterRenderHints, ROSTER_SOURCES, type RosterSource, type ToolIdentity, toolIdentityOf, mintCapabilityId, diffToolRoster, judgeParkedToolIdentity, ruleFacesFromRoster, toolCallFaceOf, inputKeysOf, ruleFaceOfInstance, ToolRosterDeltaSeat, } from "./core/tool-roster.js";
|
|
129
|
+
export { TOOL_FAMILIES, TOOL_MOUNT_TAGS, TOOL_APPROVAL_CARDS, TOOL_PATH_ACCESSES, TOOL_PATH_BASES, TOOL_PATH_ABSENCES, TOOL_WIRE_NAME_MAX_CHARS, TOOL_CONTRACT_MAX_CHARS, TOOL_CARD_ID_MAX_CHARS, TOOL_KEY_MAX_CHARS, TOOL_KEYS_MAX, RENDER_HINT_MAX_CHARS, RENDER_HINT_ACTIVITY_MAX_CHARS, RENDER_HINT_MAX_LIST, type ToolFamily, type ToolMountTag, type ToolApprovalCard, type ToolPathAccess, type ToolPathBase, type ToolPathAbsence, type ToolPathTarget, type ToolCallPathTarget, type ToolRosterPathTarget, pathTargetSlotOnly, type ToolRuleFace, type ToolRenderHints, type ToolFaceDeclaration, type ToolCatalogEntry, } from "./core/tool-face.js";
|
|
130
|
+
export { describeToolCatalog, catalogEntriesNamed, catalogToolNames, catalogRuleFaceOf, pathTargetOf, pathTargetValue, protectivePathTargetOf, declaredPathTargetOf, BARE_REQUEST_CODE, isProtectedWrite, isDeclaredWrite, fileOpAccessOf, type ToolCallLike, pathConfinableWriteToolNames, skillScopeWriteToolNames, pathTargetingToolNames, compactableToolNames, budgetExemptToolNames, handBandEffects, engineCardTypes, predictMountedToolNames, HANDS_BAND_TAGS, MOUNT_TAG_IN_HANDS_BAND, } from "./core/tool-registry.js";
|
|
131
|
+
export { ToolRosterEntry, ToolRoster, ToolRosterDelta, ToolRosterRenderHints, ROSTER_SOURCES, type RosterSource, type ToolIdentity, toolIdentityOf, mintCapabilityId, diffToolRoster, judgeParkedToolIdentity, ruleFacesFromRoster, toolCallFaceOf, inputKeysOf, ruleFaceOfInstance, rosterMemberBoundProblem, type RosterBoundMembers, type RosterBoundCode, ToolRosterDeltaSeat, } from "./core/tool-roster.js";
|
|
132
132
|
export { type ToolCallFace } from "./core/tool-policy.js";
|
|
133
133
|
export { effectivePathTargetOf, pathTargetBaseOf, type ToolPathBases } from "./core/effective-path-target.js";
|
|
134
134
|
export { TOOL_CONFORMANCE_VECTORS, describeToolConformanceVectors, type ToolConformanceVector } from "./core/tool-conformance.js";
|
|
@@ -168,7 +168,7 @@ export { type AskOrigin, ASK_ORIGINS, isAskOrigin, classifierMayAnswer, ORIGIN_I
|
|
|
168
168
|
export { SETTLEMENT_KINDS, type SettlementKind, isSettlementKind, type Settlement, SETTLEMENT_IS_REFUSAL, DENIED_BY_VALUES, type DeniedBy, isDeniedBy, DENIED_BY_MAY_VETO, type GateDisposition, type GateOutcome, screenGateOutcome } from "./core/gate-outcome.js";
|
|
169
169
|
export { type AskCarry } from "./core/hooks.js";
|
|
170
170
|
export { SWAPPABLE_DEP_SEATS, SWAP_SEAT_NOTICE, isSwappableDepSeat, screenSwappableDeps, type SwappableDepSeat, type SwappableDeps } from "./core/swappable-deps.js";
|
|
171
|
-
export { parseAutoModeResponse, createAutoModeDecider, AUTO_MODE_UNAVAILABLE_CAUSES, isAutoModeUnavailableCause,
|
|
171
|
+
export { parseAutoModeResponse, createAutoModeDecider, AUTO_MODE_UNAVAILABLE_CAUSES, isAutoModeUnavailableCause, classifierUnavailableDenyMessage, CLASSIFIER_PARSE_FAILURE_DENY_MESSAGE, type AutoModeUnavailableCause, type AutoModeVerdict, type AutoModeDecider, type AutoModeDeciderOptions, type AutoModeClassified, type AutoModeClassifyFn, type AutoModeClassifyInput, createAutoModeDenialTracker, denialLimitFallbackMessage, denialLimitSentence, unarmedWindow, type AutoModeDenialTracker, type AutoModeDenialLimitOptions, type DenialLimitCounts, type DenialLimitFallbackFace, type UnarmedDenialLimitFallback, type DenialLimitFallback, type DenialLimitVerdict, } from "./core/auto-mode.js";
|
|
172
172
|
export { AUTO_MODE_DENIAL_LIMIT_DEFAULTS, AUTO_MODE_DENIAL_AUTO_DENY_DEFAULT_MS, AUTO_MODE_CLASSIFIER_MAX_TOKENS } from "./core/auto-mode-defaults.js";
|
|
173
173
|
export { buildAutoModePrompt, renderAutoModeWindow, renderAutoModeAction, AUTO_MODE_DEFAULTS_SENTINEL, type AutoModeRules, type BuildAutoModePromptOptions, type AutoModeWindowOptions, } from "./core/auto-mode-prompt.js";
|
|
174
174
|
export { AUTO_MODE_BASE_PROMPT, AUTO_MODE_PERMISSIONS_EXTERNAL } from "./core/auto-mode-prompt-assets.js";
|
|
@@ -259,6 +259,7 @@ export { checkpointStoreContract } from "./core/store-contracts/checkpoint-store
|
|
|
259
259
|
export { sessionRepoContract } from "./core/store-contracts/session-repo-contract.js";
|
|
260
260
|
export { toolResultStoreContract } from "./core/store-contracts/tool-result-store-contract.js";
|
|
261
261
|
export { fileHistoryStoreContract } from "./core/store-contracts/file-history-store-contract.js";
|
|
262
|
+
export { workflowJournalStoreContract } from "./core/store-contracts/workflow-journal-store-contract.js";
|
|
262
263
|
export { permissionRuleSyncContract, type PermissionRuleSyncContractHooks } from "./core/store-contracts/permission-rule-sync-contract.js";
|
|
263
264
|
export { MAILBOX_CONTRACT_SCOPE, mailboxStoreContract, mailboxAckOwnershipContract, mailboxBundledOnlyContract, mailboxTombstonedRecipientContract, type MailboxTombstonedRecipientContractHooks, mailboxCrossProcessContract, type MailboxCrossProcessContractHooks, } from "./core/store-contracts/mailbox-store-contract.js";
|
|
264
265
|
export { BACKGROUND_AGENT_CONTRACT_SCOPE, backgroundAgentStoreContract, backgroundAgentStoreScopesContract, } from "./core/store-contracts/background-agent-store-contract.js";
|
|
@@ -267,7 +268,7 @@ export { serveDurableAgentRowLane, buildAgentPollDetails, type AgentPollDetailsI
|
|
|
267
268
|
export type { UnifiedTaskResult } from "./core/task-registry-shared.js";
|
|
268
269
|
export { FileBackgroundAgentStore, type FileBackgroundAgentStoreOptions } from "./stores/file/background-agent-store.js";
|
|
269
270
|
export { A2A_TASK_STATES, type A2ATaskState, type A2ATaskStateReversal, type A2ATaskStateReversalFaithful, type A2ATaskStateReversalLossy, toA2ATaskState, fromA2ATaskState, } from "./core/a2a-task-state.js";
|
|
270
|
-
export { type WorkflowJournalStore, type WorkflowJournalEntry, InMemoryWorkflowJournalStore, callKeyOrdinal, JOURNAL_OVERSIZE_ERROR_CODE, } from "./core/workflow-journal-store.js";
|
|
271
|
+
export { type WorkflowJournalStore, type WorkflowJournalEntry, InMemoryWorkflowJournalStore, callKeyOrdinal, JOURNAL_OVERSIZE_ERROR_CODE, WorkflowJournalOversizeError, assertJournalEntryFits, } from "./core/workflow-journal-store.js";
|
|
271
272
|
export { untrustedEgressForHuman, redactHostLeaks, redactSecrets, boundedRedactedSummary } from "./core/untrusted-egress.js";
|
|
272
273
|
export type { RedactionFinding, RedactionReport, RedactionConfidence, RedactionSource, SummarizableFinding, } from "./core/untrusted-egress.js";
|
|
273
274
|
export { summarizeRedactions } from "./core/untrusted-egress.js";
|
package/dist/index.js
CHANGED
|
@@ -102,9 +102,9 @@ export { createFsWriteGatePolicy } from "./core/fs-write-gate-policy.js";
|
|
|
102
102
|
export { RETIRED_TOOL_NAMES } from "./core/tool-name-aliases.js";
|
|
103
103
|
export { DEFAULT_SUBAGENT_TOOL_NAME } from "./agents/subagent.js";
|
|
104
104
|
export { renderTaskNotificationXml, taskNotificationDedupKey, isDelegatedAgentTerminal, isTerminalTaskNotification, SystemInjectionQueue, SYSTEM_INJECTION_PRIORITIES, isSystemInjectionPriority, AGENT_MESSAGE_TAG, renderAgentMessageFrame, } from "./core/task-notification.js";
|
|
105
|
-
export { TOOL_FAMILIES, TOOL_MOUNT_TAGS, TOOL_APPROVAL_CARDS, TOOL_PATH_ACCESSES, TOOL_PATH_BASES, TOOL_PATH_ABSENCES, TOOL_WIRE_NAME_MAX_CHARS, TOOL_CONTRACT_MAX_CHARS, TOOL_KEY_MAX_CHARS, TOOL_KEYS_MAX, RENDER_HINT_MAX_CHARS, RENDER_HINT_ACTIVITY_MAX_CHARS, RENDER_HINT_MAX_LIST, pathTargetSlotOnly, } from "./core/tool-face.js";
|
|
106
|
-
export { describeToolCatalog, catalogEntriesNamed, catalogToolNames, catalogRuleFaceOf, pathTargetOf, pathTargetValue, protectivePathTargetOf, declaredPathTargetOf, isProtectedWrite, isDeclaredWrite, fileOpAccessOf, pathConfinableWriteToolNames, skillScopeWriteToolNames, pathTargetingToolNames, compactableToolNames, budgetExemptToolNames, handBandEffects, engineCardTypes, predictMountedToolNames, HANDS_BAND_TAGS, MOUNT_TAG_IN_HANDS_BAND, } from "./core/tool-registry.js";
|
|
107
|
-
export { ToolRosterEntry, ToolRoster, ToolRosterDelta, ToolRosterRenderHints, ROSTER_SOURCES, toolIdentityOf, mintCapabilityId, diffToolRoster, judgeParkedToolIdentity, ruleFacesFromRoster, toolCallFaceOf, inputKeysOf, ruleFaceOfInstance, ToolRosterDeltaSeat, } from "./core/tool-roster.js";
|
|
105
|
+
export { TOOL_FAMILIES, TOOL_MOUNT_TAGS, TOOL_APPROVAL_CARDS, TOOL_PATH_ACCESSES, TOOL_PATH_BASES, TOOL_PATH_ABSENCES, TOOL_WIRE_NAME_MAX_CHARS, TOOL_CONTRACT_MAX_CHARS, TOOL_CARD_ID_MAX_CHARS, TOOL_KEY_MAX_CHARS, TOOL_KEYS_MAX, RENDER_HINT_MAX_CHARS, RENDER_HINT_ACTIVITY_MAX_CHARS, RENDER_HINT_MAX_LIST, pathTargetSlotOnly, } from "./core/tool-face.js";
|
|
106
|
+
export { describeToolCatalog, catalogEntriesNamed, catalogToolNames, catalogRuleFaceOf, pathTargetOf, pathTargetValue, protectivePathTargetOf, declaredPathTargetOf, BARE_REQUEST_CODE, isProtectedWrite, isDeclaredWrite, fileOpAccessOf, pathConfinableWriteToolNames, skillScopeWriteToolNames, pathTargetingToolNames, compactableToolNames, budgetExemptToolNames, handBandEffects, engineCardTypes, predictMountedToolNames, HANDS_BAND_TAGS, MOUNT_TAG_IN_HANDS_BAND, } from "./core/tool-registry.js";
|
|
107
|
+
export { ToolRosterEntry, ToolRoster, ToolRosterDelta, ToolRosterRenderHints, ROSTER_SOURCES, toolIdentityOf, mintCapabilityId, diffToolRoster, judgeParkedToolIdentity, ruleFacesFromRoster, toolCallFaceOf, inputKeysOf, ruleFaceOfInstance, rosterMemberBoundProblem, ToolRosterDeltaSeat, } from "./core/tool-roster.js";
|
|
108
108
|
export {} from "./core/tool-policy.js";
|
|
109
109
|
export { effectivePathTargetOf, pathTargetBaseOf } from "./core/effective-path-target.js";
|
|
110
110
|
export { TOOL_CONFORMANCE_VECTORS, describeToolConformanceVectors } from "./core/tool-conformance.js";
|
|
@@ -142,7 +142,7 @@ export { ASK_ORIGINS, isAskOrigin, classifierMayAnswer, ORIGIN_IMPLIES_REAL_APPR
|
|
|
142
142
|
export { SETTLEMENT_KINDS, isSettlementKind, SETTLEMENT_IS_REFUSAL, DENIED_BY_VALUES, isDeniedBy, DENIED_BY_MAY_VETO, screenGateOutcome } from "./core/gate-outcome.js";
|
|
143
143
|
export {} from "./core/hooks.js";
|
|
144
144
|
export { SWAPPABLE_DEP_SEATS, SWAP_SEAT_NOTICE, isSwappableDepSeat, screenSwappableDeps } from "./core/swappable-deps.js";
|
|
145
|
-
export { parseAutoModeResponse, createAutoModeDecider, AUTO_MODE_UNAVAILABLE_CAUSES, isAutoModeUnavailableCause,
|
|
145
|
+
export { parseAutoModeResponse, createAutoModeDecider, AUTO_MODE_UNAVAILABLE_CAUSES, isAutoModeUnavailableCause, classifierUnavailableDenyMessage, CLASSIFIER_PARSE_FAILURE_DENY_MESSAGE, createAutoModeDenialTracker, denialLimitFallbackMessage, denialLimitSentence, unarmedWindow, } from "./core/auto-mode.js";
|
|
146
146
|
export { AUTO_MODE_DENIAL_LIMIT_DEFAULTS, AUTO_MODE_DENIAL_AUTO_DENY_DEFAULT_MS, AUTO_MODE_CLASSIFIER_MAX_TOKENS } from "./core/auto-mode-defaults.js";
|
|
147
147
|
export { buildAutoModePrompt, renderAutoModeWindow, renderAutoModeAction, AUTO_MODE_DEFAULTS_SENTINEL, } from "./core/auto-mode-prompt.js";
|
|
148
148
|
export { AUTO_MODE_BASE_PROMPT, AUTO_MODE_PERMISSIONS_EXTERNAL } from "./core/auto-mode-prompt-assets.js";
|
|
@@ -217,6 +217,7 @@ export { checkpointStoreContract } from "./core/store-contracts/checkpoint-store
|
|
|
217
217
|
export { sessionRepoContract } from "./core/store-contracts/session-repo-contract.js";
|
|
218
218
|
export { toolResultStoreContract } from "./core/store-contracts/tool-result-store-contract.js";
|
|
219
219
|
export { fileHistoryStoreContract } from "./core/store-contracts/file-history-store-contract.js";
|
|
220
|
+
export { workflowJournalStoreContract } from "./core/store-contracts/workflow-journal-store-contract.js";
|
|
220
221
|
export { permissionRuleSyncContract } from "./core/store-contracts/permission-rule-sync-contract.js";
|
|
221
222
|
export { MAILBOX_CONTRACT_SCOPE, mailboxStoreContract, mailboxAckOwnershipContract, mailboxBundledOnlyContract, mailboxTombstonedRecipientContract, mailboxCrossProcessContract, } from "./core/store-contracts/mailbox-store-contract.js";
|
|
222
223
|
export { BACKGROUND_AGENT_CONTRACT_SCOPE, backgroundAgentStoreContract, backgroundAgentStoreScopesContract, } from "./core/store-contracts/background-agent-store-contract.js";
|
|
@@ -224,7 +225,7 @@ export { canAccessAgentRecord, STALE_RUNNING_REAP_ATTRIBUTION, BackgroundAgentSt
|
|
|
224
225
|
export { serveDurableAgentRowLane, buildAgentPollDetails, } from "./core/task-registry-agent.js";
|
|
225
226
|
export { FileBackgroundAgentStore } from "./stores/file/background-agent-store.js";
|
|
226
227
|
export { A2A_TASK_STATES, toA2ATaskState, fromA2ATaskState, } from "./core/a2a-task-state.js";
|
|
227
|
-
export { InMemoryWorkflowJournalStore, callKeyOrdinal, JOURNAL_OVERSIZE_ERROR_CODE, } from "./core/workflow-journal-store.js";
|
|
228
|
+
export { InMemoryWorkflowJournalStore, callKeyOrdinal, JOURNAL_OVERSIZE_ERROR_CODE, WorkflowJournalOversizeError, assertJournalEntryFits, } from "./core/workflow-journal-store.js";
|
|
228
229
|
export { untrustedEgressForHuman, redactHostLeaks, redactSecrets, boundedRedactedSummary } from "./core/untrusted-egress.js";
|
|
229
230
|
export { summarizeRedactions } from "./core/untrusted-egress.js";
|
|
230
231
|
export { MemoryRosterStore, FileRosterStore } from "./agents/roster-store.js";
|
|
@@ -923,6 +923,8 @@ export function startWorkflow(runner, fn, opts = {}, internals) {
|
|
|
923
923
|
}
|
|
924
924
|
catch (err) {
|
|
925
925
|
lastErr = err;
|
|
926
|
+
if (err?.code === JOURNAL_OVERSIZE_ERROR_CODE)
|
|
927
|
+
break;
|
|
926
928
|
if (attempt < 2)
|
|
927
929
|
await new Promise((r) => timers.setTimeout(r, 25 * (attempt + 1)));
|
|
928
930
|
}
|
package/dist/server/http.js
CHANGED
|
@@ -1,15 +1,12 @@
|
|
|
1
1
|
import { type WorkflowJournalEntry, type WorkflowJournalStore, type ResumeClaimArgs } from "../../core/workflow-journal-store.js";
|
|
2
2
|
/**
|
|
3
|
-
* SVC-2 — the shared size bound for a journaled workflow-agent
|
|
4
|
-
*
|
|
5
|
-
* onboarding — the 5 MiB figure aligns with TiDB's ~6 MiB per-row txn-entry-size-limit (a row
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* not cached, so a resume re-runs that one agent live. Resume is an optimization — a too-big-to-cache result is
|
|
11
|
-
* a graceful degrade, not a failure. Measured in BYTES (UTF-8) — a multibyte result can be larger than its
|
|
12
|
-
* `.length` in chars.
|
|
3
|
+
* SVC-2 — the shared size bound for a journaled workflow-agent entry, so ALL backends answer an oversize
|
|
4
|
+
* TaskResult with the SAME refusal (no dialect divergence). Inlined from service's `workflow-journal-limits` on
|
|
5
|
+
* onboarding — the 5 MiB figure aligns with TiDB's ~6 MiB per-row txn-entry-size-limit (a row over it is
|
|
6
|
+
* REJECTED with "entry too large"). PostgreSQL TEXT has no such low limit, so without a shared bound the same
|
|
7
|
+
* large entry would journal on PG and fail on TiDB; the shared bound makes every backend refuse at the same
|
|
8
|
+
* byte and with the same code (`workflow.journal_oversize`) before the row reaches the medium. Measured in
|
|
9
|
+
* BYTES (UTF-8) — a multibyte result can be larger than its `.length` in chars.
|
|
13
10
|
*/
|
|
14
11
|
export { MAX_JOURNAL_RESULT_BYTES, oversizeJournalResult } from "../../core/workflow-journal-store.js";
|
|
15
12
|
/**
|
|
@@ -5,7 +5,7 @@ import { callKeyOrdinal } from "../../core/workflow-journal-store.js";
|
|
|
5
5
|
import { AppendLog } from "./fs-atomic.js";
|
|
6
6
|
import { canonicalStoreKey, sanitizePathComponent, writeThenLink } from "./fs-atomic.js";
|
|
7
7
|
import { assertAdoptionBootGate } from "./adoption/marker.js";
|
|
8
|
-
import {
|
|
8
|
+
import { assertJournalEntryFits } from "../../core/workflow-journal-store.js";
|
|
9
9
|
export { MAX_JOURNAL_RESULT_BYTES, oversizeJournalResult } from "../../core/workflow-journal-store.js";
|
|
10
10
|
function entryOf(rec) {
|
|
11
11
|
if (rec.parked !== undefined)
|
|
@@ -92,9 +92,7 @@ export class FileWorkflowJournalStore {
|
|
|
92
92
|
return scope === undefined ? undefined : { scope, byOrdinal };
|
|
93
93
|
}
|
|
94
94
|
async append(runId, scope, entry) {
|
|
95
|
-
|
|
96
|
-
if (oversizeJournalResult(serialized))
|
|
97
|
-
return;
|
|
95
|
+
assertJournalEntryFits(entry);
|
|
98
96
|
const committed = this.scopes.get(runId) ?? this.replay(runId)?.scope;
|
|
99
97
|
if (committed !== undefined && committed !== scope) {
|
|
100
98
|
throw new Error(`workflow journal: runId ${runId} already recorded under a different scope`);
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"_comment": "design/87 L3 — frozen public export surface of src/index.ts (name -> kind). DO NOT edit by hand to silence a red test. A removed/changed entry = a SemVer-BREAKING change; bump MAJOR and update this fixture in the SAME commit (design/87 §4.2 / §5.2). Regenerate via REGEN in test/export-surface.test.ts.",
|
|
3
3
|
"_tierComment": "#435 v1 — machine-readable layering of the public surface: stable = demonstrated by README.md / src/examples; internal = an `Internal`-marked name or a runner/engine deep-subtree declaration (the model seam src/engine/llm is excluded — it is the BYOM contract, not an engine internal); advanced = a supported export the front door does not walk you through. THIS IS AN INITIAL HEURISTIC, derived mechanically and expected to be refined ticket by ticket: no human reviewed these 1700+ entries one by one, and nothing here claims otherwise. Known bias: a short or English-word export name (ok, err, Result, Usage) can match ordinary prose in README.md and land `stable` on a coincidence. Every export MUST carry a tier — a new export with no row fails the gate in export-surface.test.ts.",
|
|
4
|
-
"count":
|
|
4
|
+
"count": 2279,
|
|
5
5
|
"exports": {
|
|
6
6
|
"A2ATaskState": "type",
|
|
7
7
|
"A2ATaskStateReversal": "type",
|
|
@@ -33,7 +33,6 @@
|
|
|
33
33
|
"AUTO_MODE_ARMING_RECIPE_VERSION": "variable",
|
|
34
34
|
"AUTO_MODE_ARM_REASONS": "variable",
|
|
35
35
|
"AUTO_MODE_BASE_PROMPT": "variable",
|
|
36
|
-
"AUTO_MODE_BREAKER_CAUSES": "variable",
|
|
37
36
|
"AUTO_MODE_CLASSIFIER_MAX_TOKENS": "variable",
|
|
38
37
|
"AUTO_MODE_DEFAULTS_SENTINEL": "variable",
|
|
39
38
|
"AUTO_MODE_DENIAL_AUTO_DENY_DEFAULT_MS": "variable",
|
|
@@ -90,9 +89,6 @@
|
|
|
90
89
|
"AutoModeArmingFace": "interface",
|
|
91
90
|
"AutoModeArmingFold": "type",
|
|
92
91
|
"AutoModeArmingRecipe": "interface",
|
|
93
|
-
"AutoModeBreakerCause": "type",
|
|
94
|
-
"AutoModeBreakerLedger": "class",
|
|
95
|
-
"AutoModeBreakerTrip": "interface",
|
|
96
92
|
"AutoModeClassified": "interface",
|
|
97
93
|
"AutoModeClassifierCompletion": "type",
|
|
98
94
|
"AutoModeClassifyFn": "type",
|
|
@@ -113,6 +109,7 @@
|
|
|
113
109
|
"AutonomousLoopPromptOptions": "interface",
|
|
114
110
|
"BACKGROUND_AGENT_CONTRACT_SCOPE": "variable",
|
|
115
111
|
"BARE_INTERPRETER_NAMES": "variable",
|
|
112
|
+
"BARE_REQUEST_CODE": "variable",
|
|
116
113
|
"BASH_READONLY_DEFAULT_ALLOW": "variable",
|
|
117
114
|
"BUILTIN_COMPLIANCE_DENIES": "variable",
|
|
118
115
|
"BUILTIN_READONLY_DENY_TOOLS": "variable",
|
|
@@ -156,6 +153,7 @@
|
|
|
156
153
|
"CHALLENGES_FILE": "variable",
|
|
157
154
|
"CHALLENGE_LEDGER_MAX_EVENTS": "variable",
|
|
158
155
|
"CIRCUIT_OPEN_MARKER": "variable",
|
|
156
|
+
"CLASSIFIER_PARSE_FAILURE_DENY_MESSAGE": "variable",
|
|
159
157
|
"COARSE_SHELL_TOOLS": "variable",
|
|
160
158
|
"CODE_AGENT_PROMPT": "variable",
|
|
161
159
|
"CODE_REVIEW_PROMPT": "variable",
|
|
@@ -1081,6 +1079,8 @@
|
|
|
1081
1079
|
"RollingTailBuffer": "class",
|
|
1082
1080
|
"RootAdoptionFile": "type",
|
|
1083
1081
|
"RosterAccess": "interface",
|
|
1082
|
+
"RosterBoundCode": "type",
|
|
1083
|
+
"RosterBoundMembers": "interface",
|
|
1084
1084
|
"RosterEntry": "interface",
|
|
1085
1085
|
"RosterGcOptions": "interface",
|
|
1086
1086
|
"RosterSource": "type",
|
|
@@ -1311,6 +1311,7 @@
|
|
|
1311
1311
|
"TEAM_DISCUSSION_WORKFLOW_NAME": "variable",
|
|
1312
1312
|
"TOKEN_CHECKPOINT_VERSION": "variable",
|
|
1313
1313
|
"TOOL_APPROVAL_CARDS": "variable",
|
|
1314
|
+
"TOOL_CARD_ID_MAX_CHARS": "variable",
|
|
1314
1315
|
"TOOL_CONFORMANCE_VECTORS": "variable",
|
|
1315
1316
|
"TOOL_CONTRACT_MAX_CHARS": "variable",
|
|
1316
1317
|
"TOOL_FAMILIES": "variable",
|
|
@@ -1491,6 +1492,7 @@
|
|
|
1491
1492
|
"WorkflowItemStatus": "type",
|
|
1492
1493
|
"WorkflowJournalEntry": "type",
|
|
1493
1494
|
"WorkflowJournalIncompatibleError": "class",
|
|
1495
|
+
"WorkflowJournalOversizeError": "class",
|
|
1494
1496
|
"WorkflowJournalStore": "interface",
|
|
1495
1497
|
"WorkflowLimits": "interface",
|
|
1496
1498
|
"WorkflowMaxAgentsError": "class",
|
|
@@ -1549,6 +1551,7 @@
|
|
|
1549
1551
|
"assembleCodeTools": "function",
|
|
1550
1552
|
"assertAdoptionBootGate": "function",
|
|
1551
1553
|
"assertDeleteDeltaCarriesNoAdd": "function",
|
|
1554
|
+
"assertJournalEntryFits": "function",
|
|
1552
1555
|
"assertJsonMetadata": "function",
|
|
1553
1556
|
"assertMemoryBackendSearchEquivalence": "function",
|
|
1554
1557
|
"assertOracleIsolation": "function",
|
|
@@ -1618,6 +1621,7 @@
|
|
|
1618
1621
|
"checkpointVersionOf": "function",
|
|
1619
1622
|
"clampHopChain": "function",
|
|
1620
1623
|
"classifierMayAnswer": "function",
|
|
1624
|
+
"classifierUnavailableDenyMessage": "function",
|
|
1621
1625
|
"classifyCompoundReadonly": "function",
|
|
1622
1626
|
"classifyCompoundReadonlyDetailed": "function",
|
|
1623
1627
|
"classifyHttp": "function",
|
|
@@ -1857,7 +1861,6 @@
|
|
|
1857
1861
|
"inspectDegenerate": "function",
|
|
1858
1862
|
"isAliasModelId": "function",
|
|
1859
1863
|
"isAskOrigin": "function",
|
|
1860
|
-
"isAutoModeBreakerCause": "function",
|
|
1861
1864
|
"isAutoModeUnavailableCause": "function",
|
|
1862
1865
|
"isCanonicalPeerAddress": "function",
|
|
1863
1866
|
"isCrossSessionInboundSetting": "function",
|
|
@@ -2138,6 +2141,7 @@
|
|
|
2138
2141
|
"retiredWorkflowNameAliases": "function",
|
|
2139
2142
|
"retryBackoffMs": "function",
|
|
2140
2143
|
"riskSeverity": "function",
|
|
2144
|
+
"rosterMemberBoundProblem": "function",
|
|
2141
2145
|
"routePairingStatus": "function",
|
|
2142
2146
|
"routePeerDeliveryReceipt": "function",
|
|
2143
2147
|
"routePeerDroppedReceipt": "function",
|
|
@@ -2269,6 +2273,7 @@
|
|
|
2269
2273
|
"withRetry": "function",
|
|
2270
2274
|
"witnessAdoptionConfig": "function",
|
|
2271
2275
|
"workflowAgentCallKey": "function",
|
|
2276
|
+
"workflowJournalStoreContract": "function",
|
|
2272
2277
|
"workflowRunStoreContract": "function",
|
|
2273
2278
|
"workflowScriptReadsClockOrRandom": "function",
|
|
2274
2279
|
"workflowWhenToUseText": "function",
|
|
@@ -2309,7 +2314,6 @@
|
|
|
2309
2314
|
"AUTO_MODE_ARMING_RECIPE_VERSION": "advanced",
|
|
2310
2315
|
"AUTO_MODE_ARM_REASONS": "advanced",
|
|
2311
2316
|
"AUTO_MODE_BASE_PROMPT": "advanced",
|
|
2312
|
-
"AUTO_MODE_BREAKER_CAUSES": "advanced",
|
|
2313
2317
|
"AUTO_MODE_CLASSIFIER_MAX_TOKENS": "advanced",
|
|
2314
2318
|
"AUTO_MODE_DEFAULTS_SENTINEL": "advanced",
|
|
2315
2319
|
"AUTO_MODE_DENIAL_AUTO_DENY_DEFAULT_MS": "advanced",
|
|
@@ -2366,9 +2370,6 @@
|
|
|
2366
2370
|
"AutoModeArmingFace": "advanced",
|
|
2367
2371
|
"AutoModeArmingFold": "advanced",
|
|
2368
2372
|
"AutoModeArmingRecipe": "advanced",
|
|
2369
|
-
"AutoModeBreakerCause": "advanced",
|
|
2370
|
-
"AutoModeBreakerLedger": "advanced",
|
|
2371
|
-
"AutoModeBreakerTrip": "advanced",
|
|
2372
2373
|
"AutoModeClassified": "advanced",
|
|
2373
2374
|
"AutoModeClassifierCompletion": "advanced",
|
|
2374
2375
|
"AutoModeClassifyFn": "advanced",
|
|
@@ -2389,6 +2390,7 @@
|
|
|
2389
2390
|
"AutonomousLoopPromptOptions": "advanced",
|
|
2390
2391
|
"BACKGROUND_AGENT_CONTRACT_SCOPE": "advanced",
|
|
2391
2392
|
"BARE_INTERPRETER_NAMES": "advanced",
|
|
2393
|
+
"BARE_REQUEST_CODE": "advanced",
|
|
2392
2394
|
"BASH_READONLY_DEFAULT_ALLOW": "advanced",
|
|
2393
2395
|
"BUILTIN_COMPLIANCE_DENIES": "advanced",
|
|
2394
2396
|
"BUILTIN_READONLY_DENY_TOOLS": "advanced",
|
|
@@ -2432,6 +2434,7 @@
|
|
|
2432
2434
|
"CHALLENGES_FILE": "advanced",
|
|
2433
2435
|
"CHALLENGE_LEDGER_MAX_EVENTS": "advanced",
|
|
2434
2436
|
"CIRCUIT_OPEN_MARKER": "advanced",
|
|
2437
|
+
"CLASSIFIER_PARSE_FAILURE_DENY_MESSAGE": "advanced",
|
|
2435
2438
|
"COARSE_SHELL_TOOLS": "stable",
|
|
2436
2439
|
"CODE_AGENT_PROMPT": "advanced",
|
|
2437
2440
|
"CODE_REVIEW_PROMPT": "advanced",
|
|
@@ -3357,6 +3360,8 @@
|
|
|
3357
3360
|
"RollingTailBuffer": "advanced",
|
|
3358
3361
|
"RootAdoptionFile": "advanced",
|
|
3359
3362
|
"RosterAccess": "advanced",
|
|
3363
|
+
"RosterBoundCode": "advanced",
|
|
3364
|
+
"RosterBoundMembers": "advanced",
|
|
3360
3365
|
"RosterEntry": "advanced",
|
|
3361
3366
|
"RosterGcOptions": "advanced",
|
|
3362
3367
|
"RosterSource": "advanced",
|
|
@@ -3587,6 +3592,7 @@
|
|
|
3587
3592
|
"TEAM_DISCUSSION_WORKFLOW_NAME": "advanced",
|
|
3588
3593
|
"TOKEN_CHECKPOINT_VERSION": "advanced",
|
|
3589
3594
|
"TOOL_APPROVAL_CARDS": "advanced",
|
|
3595
|
+
"TOOL_CARD_ID_MAX_CHARS": "advanced",
|
|
3590
3596
|
"TOOL_CONFORMANCE_VECTORS": "advanced",
|
|
3591
3597
|
"TOOL_CONTRACT_MAX_CHARS": "advanced",
|
|
3592
3598
|
"TOOL_FAMILIES": "advanced",
|
|
@@ -3767,6 +3773,7 @@
|
|
|
3767
3773
|
"WorkflowItemStatus": "advanced",
|
|
3768
3774
|
"WorkflowJournalEntry": "advanced",
|
|
3769
3775
|
"WorkflowJournalIncompatibleError": "advanced",
|
|
3776
|
+
"WorkflowJournalOversizeError": "advanced",
|
|
3770
3777
|
"WorkflowJournalStore": "advanced",
|
|
3771
3778
|
"WorkflowLimits": "advanced",
|
|
3772
3779
|
"WorkflowMaxAgentsError": "advanced",
|
|
@@ -3825,6 +3832,7 @@
|
|
|
3825
3832
|
"assembleCodeTools": "advanced",
|
|
3826
3833
|
"assertAdoptionBootGate": "advanced",
|
|
3827
3834
|
"assertDeleteDeltaCarriesNoAdd": "advanced",
|
|
3835
|
+
"assertJournalEntryFits": "advanced",
|
|
3828
3836
|
"assertJsonMetadata": "advanced",
|
|
3829
3837
|
"assertMemoryBackendSearchEquivalence": "advanced",
|
|
3830
3838
|
"assertOracleIsolation": "advanced",
|
|
@@ -3894,6 +3902,7 @@
|
|
|
3894
3902
|
"checkpointVersionOf": "advanced",
|
|
3895
3903
|
"clampHopChain": "advanced",
|
|
3896
3904
|
"classifierMayAnswer": "advanced",
|
|
3905
|
+
"classifierUnavailableDenyMessage": "advanced",
|
|
3897
3906
|
"classifyCompoundReadonly": "advanced",
|
|
3898
3907
|
"classifyCompoundReadonlyDetailed": "advanced",
|
|
3899
3908
|
"classifyHttp": "advanced",
|
|
@@ -4133,7 +4142,6 @@
|
|
|
4133
4142
|
"inspectDegenerate": "advanced",
|
|
4134
4143
|
"isAliasModelId": "advanced",
|
|
4135
4144
|
"isAskOrigin": "advanced",
|
|
4136
|
-
"isAutoModeBreakerCause": "advanced",
|
|
4137
4145
|
"isAutoModeUnavailableCause": "advanced",
|
|
4138
4146
|
"isCanonicalPeerAddress": "advanced",
|
|
4139
4147
|
"isCrossSessionInboundSetting": "advanced",
|
|
@@ -4414,6 +4422,7 @@
|
|
|
4414
4422
|
"retiredWorkflowNameAliases": "advanced",
|
|
4415
4423
|
"retryBackoffMs": "advanced",
|
|
4416
4424
|
"riskSeverity": "advanced",
|
|
4425
|
+
"rosterMemberBoundProblem": "advanced",
|
|
4417
4426
|
"routePairingStatus": "advanced",
|
|
4418
4427
|
"routePeerDeliveryReceipt": "advanced",
|
|
4419
4428
|
"routePeerDroppedReceipt": "advanced",
|
|
@@ -4545,6 +4554,7 @@
|
|
|
4545
4554
|
"withRetry": "advanced",
|
|
4546
4555
|
"witnessAdoptionConfig": "advanced",
|
|
4547
4556
|
"workflowAgentCallKey": "advanced",
|
|
4557
|
+
"workflowJournalStoreContract": "advanced",
|
|
4548
4558
|
"workflowRunStoreContract": "advanced",
|
|
4549
4559
|
"workflowScriptReadsClockOrRandom": "advanced",
|
|
4550
4560
|
"workflowWhenToUseText": "advanced",
|