@sema-agent/client-core 0.85.1 → 0.86.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 +242 -0
- package/README.md +21 -14
- package/dist/adapt/arms.js +5 -1
- package/dist/adapter/activeRunSelfHeal.d.ts +3 -0
- package/dist/adapter/activeRunSelfHeal.js +126 -36
- package/dist/adapter/downstream/terminalToSdkResult.d.ts +3 -3
- package/dist/agentSession/backgroundView.js +7 -1
- package/dist/agentSession/contract.d.ts +1 -1
- package/dist/centerWiringCapability.d.ts +38 -0
- package/dist/centerWiringCapability.js +202 -0
- package/dist/decideFailureNote.js +3 -0
- package/dist/engineCapReader.d.ts +8 -0
- package/dist/engineCapReader.js +15 -0
- package/dist/engineErrorCodes.d.ts +3 -0
- package/dist/engineErrorCodes.js +8 -0
- package/dist/engineNoticeCodes.d.ts +62 -0
- package/dist/engineNoticeCodes.js +247 -29
- package/dist/executionLaneCapability.d.ts +6 -0
- package/dist/executionLaneCapability.js +55 -2
- package/dist/fleet/fleetProjection.js +6 -8
- package/dist/fleet/workflowSizeWarning.js +2 -5
- package/dist/gateOutcome.d.ts +13 -0
- package/dist/gateOutcome.js +48 -1
- package/dist/gateVocabulary.d.ts +6 -3
- package/dist/gateVocabulary.js +7 -15
- package/dist/generated/engineFactTables.d.ts +10 -0
- package/dist/generated/engineFactTables.js +113 -0
- package/dist/generated/engineNoticeTables.js +14 -0
- package/dist/hitl/refusedToolNameProse.d.ts +4 -0
- package/dist/hitl/refusedToolNameProse.js +7 -0
- package/dist/hitl/sessionPolicyDeliverable.js +9 -5
- package/dist/hitl/sessionPolicyWire.d.ts +16 -0
- package/dist/hitl/sessionPolicyWire.js +49 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.js +5 -1
- package/dist/inheritEnvWire.d.ts +22 -0
- package/dist/inheritEnvWire.js +84 -0
- package/dist/peerFrames.js +2 -10
- package/dist/printInitToolFace.d.ts +6 -0
- package/dist/printInitToolFace.js +115 -2
- package/dist/readCredentialRefusal.d.ts +2 -0
- package/dist/readCredentialRefusal.js +7 -0
- package/dist/request/taskRequest.d.ts +4 -5
- package/dist/request/taskRequest.js +33 -23
- package/dist/runTerminal.js +2 -6
- package/dist/sqlEngineCapability.js +15 -2
- package/dist/storePostureCapability.d.ts +25 -0
- package/dist/storePostureCapability.js +132 -0
- package/dist/toolResult.js +2 -47
- package/dist/wireErrorTriage.d.ts +1 -0
- package/dist/wireErrorTriage.js +3 -0
- package/dist/wireFailureShape.d.ts +3 -0
- package/dist/wireFailureShape.js +44 -0
- package/dist/wireRefusalCopy.d.ts +39 -1
- package/dist/wireRefusalCopy.js +350 -2
- package/dist/workflowClient.d.ts +4 -0
- package/dist/workflowClient.js +12 -4
- package/docs/INTEGRATION-CLIENTS.md +853 -14
- package/package.json +2 -2
|
@@ -1,11 +1,8 @@
|
|
|
1
|
+
import { CORE_WORKFLOW_SIZE_GUIDELINE_AGENT_CAPS } from '../generated/engineFactTables.js';
|
|
1
2
|
export const WORKFLOW_SIZE_WARNING_AGENT_CAP = 25;
|
|
2
3
|
export const WORKFLOW_SIZE_WARNING_TOKEN_CAP = 1_500_000;
|
|
3
4
|
export const WORKFLOW_SIZE_WARNING_TOKENS_PER_AGENT = 70_000;
|
|
4
|
-
export const WORKFLOW_SIZE_GUIDELINE_AGENT_CAPS =
|
|
5
|
-
small: 5,
|
|
6
|
-
medium: 15,
|
|
7
|
-
large: 50,
|
|
8
|
-
});
|
|
5
|
+
export const WORKFLOW_SIZE_GUIDELINE_AGENT_CAPS = CORE_WORKFLOW_SIZE_GUIDELINE_AGENT_CAPS;
|
|
9
6
|
export const WORKFLOW_SIZE_WARNING_ENV_NAMES = Object.freeze({
|
|
10
7
|
agents: Object.freeze(['SEMA_CODE_WORKFLOW_SIZE_WARNING_AGENTS', 'CLAUDE_CODE_WORKFLOW_SIZE_WARNING_AGENTS']),
|
|
11
8
|
tokens: Object.freeze(['SEMA_CODE_WORKFLOW_SIZE_WARNING_TOKENS', 'CLAUDE_CODE_WORKFLOW_SIZE_WARNING_TOKENS']),
|
package/dist/gateOutcome.d.ts
CHANGED
|
@@ -3,9 +3,13 @@ import { type CcToolDenialKind } from './gateVocabulary.js';
|
|
|
3
3
|
export type GateDispositionView = {
|
|
4
4
|
kind: 'allowed';
|
|
5
5
|
classifier?: GateClassifierRoundView;
|
|
6
|
+
released?: GateModeReleaseView;
|
|
6
7
|
} | {
|
|
7
8
|
kind: 'denied';
|
|
8
9
|
classifier?: GateClassifierRoundView;
|
|
10
|
+
mode?: string;
|
|
11
|
+
askClass?: string;
|
|
12
|
+
classes?: readonly string[];
|
|
9
13
|
deniedBy: DeniedBy | (string & {});
|
|
10
14
|
cause?: string;
|
|
11
15
|
};
|
|
@@ -19,6 +23,14 @@ export interface GateClassifierFallbackView {
|
|
|
19
23
|
to: string;
|
|
20
24
|
cause: string;
|
|
21
25
|
}
|
|
26
|
+
export interface GateModeReleaseView {
|
|
27
|
+
mode: string;
|
|
28
|
+
askClass: string;
|
|
29
|
+
classes: readonly string[];
|
|
30
|
+
origin?: string;
|
|
31
|
+
mandate?: string;
|
|
32
|
+
reason?: string;
|
|
33
|
+
}
|
|
22
34
|
export interface SettlementWhoView {
|
|
23
35
|
party: string;
|
|
24
36
|
approver?: string;
|
|
@@ -38,6 +50,7 @@ export interface GateOutcomeView {
|
|
|
38
50
|
}
|
|
39
51
|
export declare function gateOutcomeOf(frame: unknown): GateOutcomeView | undefined;
|
|
40
52
|
export declare function isGateParkedToolEnd(frame: unknown): boolean;
|
|
53
|
+
export declare function gateModeRelease(g: GateOutcomeView | undefined): GateModeReleaseView | undefined;
|
|
41
54
|
export declare function isDeniedGate(g: GateOutcomeView | undefined): boolean;
|
|
42
55
|
export declare function gateDeniedBy(g: GateOutcomeView | undefined): string | undefined;
|
|
43
56
|
export declare function gateApprover(g: GateOutcomeView | undefined): string | undefined;
|
package/dist/gateOutcome.js
CHANGED
|
@@ -50,6 +50,39 @@ function readSettlement(v) {
|
|
|
50
50
|
...(note !== undefined ? { note } : {}),
|
|
51
51
|
};
|
|
52
52
|
}
|
|
53
|
+
function nonEmptyStringList(v) {
|
|
54
|
+
if (!Array.isArray(v) || v.length === 0)
|
|
55
|
+
return undefined;
|
|
56
|
+
const out = [];
|
|
57
|
+
for (const x of v) {
|
|
58
|
+
const t = str(x);
|
|
59
|
+
if (t === undefined)
|
|
60
|
+
return undefined;
|
|
61
|
+
out.push(t);
|
|
62
|
+
}
|
|
63
|
+
return Object.freeze(out);
|
|
64
|
+
}
|
|
65
|
+
function readModeRelease(raw) {
|
|
66
|
+
if (typeof raw !== 'object' || raw === null || Array.isArray(raw))
|
|
67
|
+
return undefined;
|
|
68
|
+
const r = raw;
|
|
69
|
+
const mode = str(r.mode);
|
|
70
|
+
const askClass = str(r.askClass);
|
|
71
|
+
const classes = nonEmptyStringList(r.classes);
|
|
72
|
+
if (mode === undefined || askClass === undefined || classes === undefined)
|
|
73
|
+
return undefined;
|
|
74
|
+
const origin = str(r.origin);
|
|
75
|
+
const mandate = str(r.mandate);
|
|
76
|
+
const reason = str(r.reason);
|
|
77
|
+
return {
|
|
78
|
+
mode,
|
|
79
|
+
askClass,
|
|
80
|
+
classes,
|
|
81
|
+
...(origin !== undefined ? { origin } : {}),
|
|
82
|
+
...(mandate !== undefined ? { mandate } : {}),
|
|
83
|
+
...(reason !== undefined ? { reason } : {}),
|
|
84
|
+
};
|
|
85
|
+
}
|
|
53
86
|
function readClassifierRound(raw) {
|
|
54
87
|
if (typeof raw !== 'object' || raw === null || Array.isArray(raw))
|
|
55
88
|
return undefined;
|
|
@@ -85,18 +118,29 @@ export function gateOutcomeOf(frame) {
|
|
|
85
118
|
let disposition;
|
|
86
119
|
const classifier = readClassifierRound(dr.classifier);
|
|
87
120
|
if (dk === 'allowed') {
|
|
88
|
-
|
|
121
|
+
const released = readModeRelease(dr.released);
|
|
122
|
+
disposition = {
|
|
123
|
+
kind: 'allowed',
|
|
124
|
+
...(classifier !== undefined ? { classifier } : {}),
|
|
125
|
+
...(released !== undefined ? { released } : {}),
|
|
126
|
+
};
|
|
89
127
|
}
|
|
90
128
|
else if (dk === 'denied') {
|
|
91
129
|
const deniedBy = str(dr.deniedBy);
|
|
92
130
|
if (deniedBy === undefined)
|
|
93
131
|
return undefined;
|
|
94
132
|
const cause = str(dr.cause);
|
|
133
|
+
const mode = str(dr.mode);
|
|
134
|
+
const askClass = str(dr.askClass);
|
|
135
|
+
const classes = nonEmptyStringList(dr.classes);
|
|
95
136
|
disposition = {
|
|
96
137
|
kind: 'denied',
|
|
97
138
|
deniedBy,
|
|
98
139
|
...(cause !== undefined ? { cause } : {}),
|
|
99
140
|
...(classifier !== undefined ? { classifier } : {}),
|
|
141
|
+
...(mode !== undefined ? { mode } : {}),
|
|
142
|
+
...(askClass !== undefined ? { askClass } : {}),
|
|
143
|
+
...(classes !== undefined ? { classes } : {}),
|
|
100
144
|
};
|
|
101
145
|
}
|
|
102
146
|
else {
|
|
@@ -115,6 +159,9 @@ export function isGateParkedToolEnd(frame) {
|
|
|
115
159
|
return false;
|
|
116
160
|
return frame.errorCode === GATE_PARKED_ERROR_CODE;
|
|
117
161
|
}
|
|
162
|
+
export function gateModeRelease(g) {
|
|
163
|
+
return g?.disposition.kind === 'allowed' ? g.disposition.released : undefined;
|
|
164
|
+
}
|
|
118
165
|
export function isDeniedGate(g) {
|
|
119
166
|
return g?.disposition.kind === 'denied';
|
|
120
167
|
}
|
package/dist/gateVocabulary.d.ts
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { CORE_DENIED_BY_VALUES } from './generated/engineFactTables.js';
|
|
2
2
|
import type { APPROVAL_MANDATE_WORDS } from './hitl/toolApprovalWire.js';
|
|
3
3
|
export declare const CC_TOOL_DENIAL_KINDS: readonly ["user-rejected", "permission-rule", "automode-blocked", "automode-unavailable", "automode-parsing-error", "interrupted", "cancelled"];
|
|
4
4
|
export type CcToolDenialKind = (typeof CC_TOOL_DENIAL_KINDS)[number];
|
|
5
5
|
export declare function isCcToolDenialKind(v: unknown): v is CcToolDenialKind;
|
|
6
6
|
export declare function isCcToolDenialKindADenial(v: unknown): boolean;
|
|
7
7
|
export declare function ccToolDenialKindForSettledBy(settledBy: unknown): CcToolDenialKind | undefined;
|
|
8
|
-
|
|
9
|
-
export
|
|
8
|
+
declare const RETIRED_DENIED_BY_WORDS: readonly ["plan_mode"];
|
|
9
|
+
export type GateDeniedByWord = (typeof CORE_DENIED_BY_VALUES)[number] | (typeof RETIRED_DENIED_BY_WORDS)[number];
|
|
10
|
+
export declare const GATE_DENIED_BY_WORDS: readonly GateDeniedByWord[];
|
|
11
|
+
export declare function isGateDeniedByWord(v: unknown): v is GateDeniedByWord;
|
|
10
12
|
export declare function gateDeniedByDetail(deniedBy: unknown): string;
|
|
11
13
|
export declare function askOriginDetail(origin: unknown, message?: unknown): string;
|
|
12
14
|
export declare const RULE_STORE_UNREADABLE_KINDS: readonly ["store", "call"];
|
|
@@ -17,3 +19,4 @@ export declare function mandatedApprovalDetail(): string;
|
|
|
17
19
|
export type ApprovalMandateWord = (typeof APPROVAL_MANDATE_WORDS)[number];
|
|
18
20
|
export declare function isApprovalMandateWord(v: unknown): v is ApprovalMandateWord;
|
|
19
21
|
export declare function approvalMandateDetail(word: ApprovalMandateWord): string;
|
|
22
|
+
export {};
|
package/dist/gateVocabulary.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { CORE_DENIED_BY_VALUES } from './generated/engineFactTables.js';
|
|
1
2
|
export const CC_TOOL_DENIAL_KINDS = Object.freeze([
|
|
2
3
|
'user-rejected',
|
|
3
4
|
'permission-rule',
|
|
@@ -20,18 +21,10 @@ export function ccToolDenialKindForSettledBy(settledBy) {
|
|
|
20
21
|
return 'permission-rule';
|
|
21
22
|
return undefined;
|
|
22
23
|
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
'persisted_rule',
|
|
28
|
-
'classifier',
|
|
29
|
-
'plan_mode',
|
|
30
|
-
'compliance',
|
|
31
|
-
'write_protection',
|
|
32
|
-
'ask_resolution',
|
|
33
|
-
'read_boundary',
|
|
34
|
-
]);
|
|
24
|
+
const RETIRED_DENIED_BY_WORDS = Object.freeze(['plan_mode']);
|
|
25
|
+
export const GATE_DENIED_BY_WORDS = Object.freeze([...CORE_DENIED_BY_VALUES, ...RETIRED_DENIED_BY_WORDS]);
|
|
26
|
+
const _deniedByWordsPin = true;
|
|
27
|
+
void _deniedByWordsPin;
|
|
35
28
|
const DENIED_BY_SENTENCES = Object.freeze({
|
|
36
29
|
policy: "denied by this deployment's permission policy",
|
|
37
30
|
hook: 'denied by a PreToolUse hook',
|
|
@@ -43,6 +36,7 @@ const DENIED_BY_SENTENCES = Object.freeze({
|
|
|
43
36
|
write_protection: 'denied because the write landed on a write-protected path',
|
|
44
37
|
ask_resolution: 'denied when the approval was resolved',
|
|
45
38
|
read_boundary: 'denied by the read boundary',
|
|
39
|
+
mode: "denied by this session's permission mode",
|
|
46
40
|
});
|
|
47
41
|
export function isGateDeniedByWord(v) {
|
|
48
42
|
return typeof v === 'string' && GATE_DENIED_BY_WORDS.includes(v);
|
|
@@ -63,7 +57,7 @@ const ASK_ORIGIN_SENTENCES = Object.freeze({
|
|
|
63
57
|
hook: 'a PreToolUse hook asked about this call',
|
|
64
58
|
ask_rule: 'a persisted ask rule matches this call',
|
|
65
59
|
denial_limit_fallback: 'the auto-mode classifier hit its denial limit and handed this call back to you',
|
|
66
|
-
shell_gate_tighten: '
|
|
60
|
+
shell_gate_tighten: 'the coarse shell check rates this command above the tier it lets through, so it asks',
|
|
67
61
|
safety_tighten: 'the gate tightened on this call’s own facts (network egress, irreversibility, or a protected write)',
|
|
68
62
|
policy: 'this deployment’s permission policy asks about this call',
|
|
69
63
|
});
|
|
@@ -82,8 +76,6 @@ export function askOriginDetail(origin, message) {
|
|
|
82
76
|
const word = typeof origin === 'string' && origin.length > 0 ? origin : '(none)';
|
|
83
77
|
return `this call asks; its origin ${word} is a word newer than this client, so answer it as usual`;
|
|
84
78
|
}
|
|
85
|
-
const _deniedByWordsPin = GATE_DENIED_BY_WORDS;
|
|
86
|
-
void _deniedByWordsPin;
|
|
87
79
|
export const RULE_STORE_UNREADABLE_KINDS = Object.freeze(['store', 'call']);
|
|
88
80
|
const RULE_STORE_UNREADABLE_SET = new Set(RULE_STORE_UNREADABLE_KINDS);
|
|
89
81
|
export function isRuleStoreUnreadableKind(v) {
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare const CORE_ASK_UNRESOLVABLE_CAUSES: readonly string[];
|
|
2
|
+
export declare const CORE_DURABLE_MANDATE_SOURCES: readonly string[];
|
|
3
|
+
export declare const CORE_TERMINAL_CAUSE_KINDS: readonly ["completed", "failed", "blocked", "paused"];
|
|
4
|
+
export declare const CORE_RESERVED_AGENT_NAMES: readonly string[];
|
|
5
|
+
export declare const CORE_WORKFLOW_SIZE_GUIDELINE_AGENT_CAPS: Readonly<Record<"small" | "medium" | "large", number>>;
|
|
6
|
+
export declare const CORE_ENGINE_AUTHORITY_ENVELOPE_TAGS: readonly string[];
|
|
7
|
+
export declare const CORE_DENIED_BY_VALUES: readonly ["policy", "hook", "org", "persisted_rule", "classifier", "compliance", "write_protection", "ask_resolution", "read_boundary", "mode"];
|
|
8
|
+
export declare const CORE_PERMISSION_MODE_FOLD_REASONS: readonly string[];
|
|
9
|
+
export declare const CORE_ENGINE_CARD_TYPES: readonly string[];
|
|
10
|
+
export declare const CORE_TOOL_DECLARATION_CODES: readonly string[];
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
export const CORE_ASK_UNRESOLVABLE_CAUSES = Object.freeze([
|
|
2
|
+
"approver_unavailable",
|
|
3
|
+
"no_approver_wired",
|
|
4
|
+
"mandate_unreconstructible",
|
|
5
|
+
]);
|
|
6
|
+
export const CORE_DURABLE_MANDATE_SOURCES = Object.freeze([
|
|
7
|
+
"force_durable_gate",
|
|
8
|
+
"durable_approval",
|
|
9
|
+
]);
|
|
10
|
+
export const CORE_TERMINAL_CAUSE_KINDS = Object.freeze([
|
|
11
|
+
"completed",
|
|
12
|
+
"failed",
|
|
13
|
+
"blocked",
|
|
14
|
+
"paused",
|
|
15
|
+
]);
|
|
16
|
+
export const CORE_RESERVED_AGENT_NAMES = Object.freeze([
|
|
17
|
+
"StructuredOutput",
|
|
18
|
+
"ToolSearch",
|
|
19
|
+
"ReadToolResult",
|
|
20
|
+
"ReportBlocked",
|
|
21
|
+
"Agent",
|
|
22
|
+
]);
|
|
23
|
+
export const CORE_WORKFLOW_SIZE_GUIDELINE_AGENT_CAPS = Object.freeze({
|
|
24
|
+
"small": 5,
|
|
25
|
+
"medium": 15,
|
|
26
|
+
"large": 50,
|
|
27
|
+
});
|
|
28
|
+
export const CORE_ENGINE_AUTHORITY_ENVELOPE_TAGS = Object.freeze([
|
|
29
|
+
"system-reminder",
|
|
30
|
+
"task-notification",
|
|
31
|
+
"new-diagnostics",
|
|
32
|
+
"user_memory",
|
|
33
|
+
"scope",
|
|
34
|
+
"skills",
|
|
35
|
+
"total_tokens",
|
|
36
|
+
"instruction-files",
|
|
37
|
+
]);
|
|
38
|
+
export const CORE_DENIED_BY_VALUES = Object.freeze([
|
|
39
|
+
"policy",
|
|
40
|
+
"hook",
|
|
41
|
+
"org",
|
|
42
|
+
"persisted_rule",
|
|
43
|
+
"classifier",
|
|
44
|
+
"compliance",
|
|
45
|
+
"write_protection",
|
|
46
|
+
"ask_resolution",
|
|
47
|
+
"read_boundary",
|
|
48
|
+
"mode",
|
|
49
|
+
]);
|
|
50
|
+
export const CORE_PERMISSION_MODE_FOLD_REASONS = Object.freeze([
|
|
51
|
+
"operator_deny",
|
|
52
|
+
"face_absent",
|
|
53
|
+
"inherited_ceiling",
|
|
54
|
+
]);
|
|
55
|
+
export const CORE_ENGINE_CARD_TYPES = Object.freeze([
|
|
56
|
+
"mcp",
|
|
57
|
+
"a2a",
|
|
58
|
+
"path_not_in_root",
|
|
59
|
+
"read_path_denied",
|
|
60
|
+
"readonly_out_of_root",
|
|
61
|
+
"read_unestablished",
|
|
62
|
+
"text",
|
|
63
|
+
"notebook",
|
|
64
|
+
"file_unchanged",
|
|
65
|
+
"image",
|
|
66
|
+
"document",
|
|
67
|
+
"edit",
|
|
68
|
+
"create",
|
|
69
|
+
"update",
|
|
70
|
+
"notebook-edit",
|
|
71
|
+
"bash",
|
|
72
|
+
"bash_invalid_timeout",
|
|
73
|
+
"grep",
|
|
74
|
+
"glob",
|
|
75
|
+
"repo-map",
|
|
76
|
+
"artifact",
|
|
77
|
+
"worktree",
|
|
78
|
+
"task-output",
|
|
79
|
+
"task-stop",
|
|
80
|
+
"monitor-start",
|
|
81
|
+
"send-message",
|
|
82
|
+
"agent-transcript",
|
|
83
|
+
"list-agents",
|
|
84
|
+
"read-inbox",
|
|
85
|
+
"workflow-run",
|
|
86
|
+
"report-findings",
|
|
87
|
+
"tool-search",
|
|
88
|
+
"ask-question",
|
|
89
|
+
"exit-plan-mode",
|
|
90
|
+
"enter-plan-mode",
|
|
91
|
+
"cron-create",
|
|
92
|
+
"cron-delete",
|
|
93
|
+
"cron-list",
|
|
94
|
+
"schedule-wakeup",
|
|
95
|
+
"web-fetch",
|
|
96
|
+
"web-search",
|
|
97
|
+
"todo",
|
|
98
|
+
"task",
|
|
99
|
+
"task-list",
|
|
100
|
+
"agent",
|
|
101
|
+
"fork",
|
|
102
|
+
]);
|
|
103
|
+
export const CORE_TOOL_DECLARATION_CODES = Object.freeze([
|
|
104
|
+
"config.tool_mount_denied",
|
|
105
|
+
"config.tool_roster_bound",
|
|
106
|
+
"config.tool_name_too_long",
|
|
107
|
+
"config.tool_contract_too_long",
|
|
108
|
+
"config.tool_schema_bound",
|
|
109
|
+
"config.tool_face_invalid",
|
|
110
|
+
"config.tool_name_invalid",
|
|
111
|
+
"config.egress_requires_write_effect",
|
|
112
|
+
"config.reserved_tool_name",
|
|
113
|
+
]);
|
|
@@ -24,6 +24,11 @@ export const CORE_ENGINE_NOTICE_CODES = Object.freeze([
|
|
|
24
24
|
"config.peer_admission_out_of_range",
|
|
25
25
|
"config.peer_lane_unmounted",
|
|
26
26
|
"config.secret_env_scrubbed",
|
|
27
|
+
"config.permission_mode_unavailable",
|
|
28
|
+
"permission.ask_released_by_mode",
|
|
29
|
+
"permission.read_deny_unapplied",
|
|
30
|
+
"permission.rule_store_unavailable",
|
|
31
|
+
"resume.legacy_mode_seed_migrated",
|
|
27
32
|
"peer.inbound_disposition",
|
|
28
33
|
"peer.held_settled",
|
|
29
34
|
"peer.idle_subscription",
|
|
@@ -31,6 +36,7 @@ export const CORE_ENGINE_NOTICE_CODES = Object.freeze([
|
|
|
31
36
|
"classifier.fallback",
|
|
32
37
|
"classifier.role_defaulted",
|
|
33
38
|
"classifier.contract_broken",
|
|
39
|
+
"classifier.unavailable",
|
|
34
40
|
"checkpoint.execution_outcome_unrecorded",
|
|
35
41
|
"delegation.transcript_integrity",
|
|
36
42
|
"delegation.ask_unresolvable",
|
|
@@ -58,6 +64,7 @@ export const CORE_ENGINE_NOTICE_CODES = Object.freeze([
|
|
|
58
64
|
"route.classifier_unroutable",
|
|
59
65
|
"route.base_url_changed_key_unchanged",
|
|
60
66
|
"route.response_model_mismatch",
|
|
67
|
+
"route.tool_call_id_folded",
|
|
61
68
|
"task.user_steer_undrained",
|
|
62
69
|
"task.user_followup_undrained",
|
|
63
70
|
"steering.parked_input_blocked",
|
|
@@ -99,6 +106,11 @@ export const CORE_NOTICE_AUDIENCE = Object.freeze({
|
|
|
99
106
|
"config.peer_admission_out_of_range": "operator",
|
|
100
107
|
"config.peer_lane_unmounted": "operator",
|
|
101
108
|
"config.secret_env_scrubbed": "operator",
|
|
109
|
+
"config.permission_mode_unavailable": "user",
|
|
110
|
+
"permission.ask_released_by_mode": "user",
|
|
111
|
+
"permission.read_deny_unapplied": "user",
|
|
112
|
+
"permission.rule_store_unavailable": "user",
|
|
113
|
+
"resume.legacy_mode_seed_migrated": "operator",
|
|
102
114
|
"peer.inbound_disposition": "user",
|
|
103
115
|
"peer.held_settled": "user",
|
|
104
116
|
"peer.idle_subscription": "user",
|
|
@@ -106,6 +118,7 @@ export const CORE_NOTICE_AUDIENCE = Object.freeze({
|
|
|
106
118
|
"classifier.fallback": "operator",
|
|
107
119
|
"classifier.role_defaulted": "operator",
|
|
108
120
|
"classifier.contract_broken": "operator",
|
|
121
|
+
"classifier.unavailable": "user",
|
|
109
122
|
"checkpoint.execution_outcome_unrecorded": "operator",
|
|
110
123
|
"delegation.transcript_integrity": "operator",
|
|
111
124
|
"delegation.ask_unresolvable": "user",
|
|
@@ -133,6 +146,7 @@ export const CORE_NOTICE_AUDIENCE = Object.freeze({
|
|
|
133
146
|
"route.classifier_unroutable": "operator",
|
|
134
147
|
"route.base_url_changed_key_unchanged": "operator",
|
|
135
148
|
"route.response_model_mismatch": "operator",
|
|
149
|
+
"route.tool_call_id_folded": "operator",
|
|
136
150
|
"task.user_steer_undrained": "user",
|
|
137
151
|
"task.user_followup_undrained": "user",
|
|
138
152
|
"steering.parked_input_blocked": "user",
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { CORE_PROTOCOL_PREFIXES } from '../generated/toolNameTables.js';
|
|
2
|
+
export const PREFIXES_IN_PROSE = CORE_PROTOCOL_PREFIXES.map((prefix) => `"${prefix}"`).join(' or ');
|
|
3
|
+
export const REFUSED_NAME_CLASSES = `a retired tool name, or a name that contains "__" but does not start with ${PREFIXES_IN_PROSE}`;
|
|
4
|
+
export const REFUSED_NAME_FIX = `If the tool still exists, use its current name; a server or agent-peer tool name starts with ${PREFIXES_IN_PROSE}.`;
|
|
5
|
+
export const RULES_LEGACY_TOOL_NAME_WRITE_NOTE = `The engine refused to write these session rules, and the stored record was not changed at all: they name a tool the engine refuses — ${REFUSED_NAME_CLASSES} (the engine's own error text names the entry). ` +
|
|
6
|
+
`${REFUSED_NAME_FIX} Then write the rules again. ` +
|
|
7
|
+
'If that entry was already in this session’s rule record, it has to be removed from the record before the record can be written again.';
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import { CONFIG_LEGACY_TOOL_NAME } from '../engineErrorCodes.js';
|
|
1
|
+
import { CONFIG_LEGACY_TOOL_NAME, RULES_LEGACY_TOOL_NAME } from '../engineErrorCodes.js';
|
|
2
2
|
import { rosterMountedNames } from './rosterMountedNames.js';
|
|
3
|
+
import { PREFIXES_IN_PROSE, REFUSED_NAME_CLASSES, REFUSED_NAME_FIX, RULES_LEGACY_TOOL_NAME_WRITE_NOTE } from './refusedToolNameProse.js';
|
|
3
4
|
import { CORE_PROTOCOL_PREFIXES, CORE_RETIRED_TOOL_CURRENT_NAMES } from '../generated/toolNameTables.js';
|
|
4
5
|
const COVERING_NAMESPACE_PREFIXES = CORE_PROTOCOL_PREFIXES;
|
|
5
6
|
const ENGINE_RETIRED_TOOL_NAMES = CORE_RETIRED_TOOL_CURRENT_NAMES;
|
|
6
|
-
const PREFIXES_IN_PROSE = COVERING_NAMESPACE_PREFIXES.map((prefix) => `"${prefix}"`).join(' or ');
|
|
7
7
|
const WITHHELD_NOTICE = {
|
|
8
8
|
ask_no_bucket: 'Not written to this session’s rule record: that record only holds rules that block outright, and this rule asks before running instead — recording it as a block would change what it means.',
|
|
9
9
|
qualified_deny: 'Not written to this session’s rule record: that record holds whole tool names and command names only, and this rule has a part in parentheses it cannot carry — recording just the name could block more than this rule does.',
|
|
10
10
|
peer_wide: 'Not written to this session’s rule record: this rule names a server or agent peer without naming one of its tools, and an engine that matches that record by exact tool name would block none of that peer’s tools.',
|
|
11
11
|
wildcard: 'Not written to this session’s rule record: this rule uses a wildcard (*), and an engine that matches that record by exact tool name would block none of the tools it covers.',
|
|
12
12
|
not_a_tool_name: 'Not written to this session’s rule record: this entry is not exactly one tool name — it is empty, not text, or has spaces around the name.',
|
|
13
|
-
legacy_tool_name: `Not written to this session’s rule record: unless a tool by exactly this name is available, the engine refuses it — it is a retired tool name, or it contains "__" but does not start with ${PREFIXES_IN_PROSE} — and with it in that record every later run of this session would fail at startup until that entry is removed from the record.
|
|
13
|
+
legacy_tool_name: `Not written to this session’s rule record: unless a tool by exactly this name is available, the engine refuses it — it is a retired tool name, or it contains "__" but does not start with ${PREFIXES_IN_PROSE} — and with it in that record every later run of this session would fail at startup until that entry is removed from the record. ${REFUSED_NAME_FIX}`,
|
|
14
14
|
not_in_roster: 'Not written to this session’s rule record: the tool roster supplied for this check has no tool by exactly this name, as a name or an alias, with letter case counted — it may be misspelled, or name a tool this deployment does not provide — so recorded as it is it would block nothing here.',
|
|
15
15
|
};
|
|
16
16
|
export const SESSION_POLICY_WITHHELD_WHY = Object.freeze(Object.keys(WITHHELD_NOTICE));
|
|
@@ -114,8 +114,12 @@ export function sessionPolicyWithheldNotice(why) {
|
|
|
114
114
|
? WITHHELD_NOTICE[why]
|
|
115
115
|
: 'Not written to this session’s rule record.';
|
|
116
116
|
}
|
|
117
|
-
const LEGACY_TOOL_NAME_FAILURE_NOTE = `This run did not start: a tool rule applied to it names a tool the engine refuses —
|
|
117
|
+
const LEGACY_TOOL_NAME_FAILURE_NOTE = `This run did not start: a tool rule applied to it names a tool the engine refuses — ${REFUSED_NAME_CLASSES} (the engine's own error text names the entry). ` +
|
|
118
118
|
'Every later run fails the same way until that entry is removed from wherever it is set: this session’s rule record, the settings sent with the run, a parent session’s rule record, or the deployment’s own tool rules.';
|
|
119
119
|
export function legacyToolNameFailureNoteOf(code) {
|
|
120
|
-
|
|
120
|
+
if (code === CONFIG_LEGACY_TOOL_NAME)
|
|
121
|
+
return LEGACY_TOOL_NAME_FAILURE_NOTE;
|
|
122
|
+
if (code === RULES_LEGACY_TOOL_NAME)
|
|
123
|
+
return RULES_LEGACY_TOOL_NAME_WRITE_NOTE;
|
|
124
|
+
return undefined;
|
|
121
125
|
}
|
|
@@ -38,6 +38,11 @@ export type SessionPolicyFailure = {
|
|
|
38
38
|
} | {
|
|
39
39
|
kind: 'request-rejected';
|
|
40
40
|
message: string;
|
|
41
|
+
} | {
|
|
42
|
+
kind: 'legacy-tool-name';
|
|
43
|
+
message: string;
|
|
44
|
+
field?: SessionPolicyRemovedEntry['field'];
|
|
45
|
+
name?: string;
|
|
41
46
|
} | {
|
|
42
47
|
kind: 'unauthorized';
|
|
43
48
|
message: string;
|
|
@@ -85,6 +90,12 @@ export type SessionPolicyTightenOutcome = {
|
|
|
85
90
|
} | {
|
|
86
91
|
kind: 'capability_absent';
|
|
87
92
|
why: 'not_reported' | 'absent';
|
|
93
|
+
} | {
|
|
94
|
+
kind: 'legacy_tool_name';
|
|
95
|
+
message: string;
|
|
96
|
+
field?: SessionPolicyRemovedEntry['field'];
|
|
97
|
+
name?: string;
|
|
98
|
+
alreadyInRecord?: boolean;
|
|
88
99
|
} | {
|
|
89
100
|
kind: 'unknown';
|
|
90
101
|
why: SessionPolicyTightenUnknownWhy;
|
|
@@ -127,6 +138,11 @@ export type SessionPolicyRemovalOutcome = {
|
|
|
127
138
|
kind: 'write_unconfirmed';
|
|
128
139
|
why: Extract<SessionPolicyTightenUnknownWhy, 'write_indeterminate' | 'write_receipt_unreadable' | 'write_receipt_mismatch'>;
|
|
129
140
|
message?: string;
|
|
141
|
+
} | {
|
|
142
|
+
kind: 'legacy_tool_name';
|
|
143
|
+
message: string;
|
|
144
|
+
field?: SessionPolicyRemovedEntry['field'];
|
|
145
|
+
name?: string;
|
|
130
146
|
};
|
|
131
147
|
export type SessionPolicyRosterRequiredWhy = 'absent' | 'unreadable';
|
|
132
148
|
export declare function removeRefusedSessionRules(facade: SessionPolicyFacade, sessionId: string, roster: ToolRosterView | undefined, opts?: {
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { wireFailureShapeOf } from '../wireFailureShape.js';
|
|
2
2
|
import { hostLog } from '../host.js';
|
|
3
3
|
import { isEngineRefusedToolName } from './sessionPolicyDeliverable.js';
|
|
4
|
+
import { RULES_LEGACY_TOOL_NAME_WRITE_NOTE } from './refusedToolNameProse.js';
|
|
5
|
+
import { RULES_LEGACY_TOOL_NAME, isRulesRefusalCode } from '../engineErrorCodes.js';
|
|
4
6
|
import { rosterMountedNames } from './rosterMountedNames.js';
|
|
5
7
|
const RULE_FIELD_PRESENCE = {
|
|
6
8
|
toolAllow: true,
|
|
@@ -12,9 +14,19 @@ const RULE_FIELD_PRESENCE = {
|
|
|
12
14
|
export const SESSION_POLICY_RULE_FIELDS = Object.freeze(Object.keys(RULE_FIELD_PRESENCE));
|
|
13
15
|
const MAX_RULE_ENTRIES = 10_000;
|
|
14
16
|
export function classifySessionPolicyFailure(e) {
|
|
15
|
-
const { status, errorCode, message } = wireFailureShapeOf(e);
|
|
17
|
+
const { status, errorCode, message, bodyField, bodyName } = wireFailureShapeOf(e);
|
|
16
18
|
if (errorCode === undefined || errorCode === '')
|
|
17
19
|
return { kind: 'no-verdict', message };
|
|
20
|
+
if (errorCode === RULES_LEGACY_TOOL_NAME) {
|
|
21
|
+
return {
|
|
22
|
+
kind: 'legacy-tool-name',
|
|
23
|
+
message,
|
|
24
|
+
...(bodyField === 'toolDeny' || bodyField === 'toolAllow' ? { field: bodyField } : {}),
|
|
25
|
+
...(bodyName !== undefined && bodyName !== '' ? { name: bodyName } : {}),
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
if (isRulesRefusalCode(errorCode) && status !== undefined && status >= 400 && status < 500)
|
|
29
|
+
return { kind: 'error', message };
|
|
18
30
|
if (status === 501 || errorCode === 'capability.session_store_required') {
|
|
19
31
|
return { kind: 'face-unavailable', message };
|
|
20
32
|
}
|
|
@@ -209,10 +221,30 @@ function unknownFrom(failure, leg) {
|
|
|
209
221
|
return { kind: 'unknown', why: leg === 'read' ? 'read_failed' : 'write_indeterminate', message };
|
|
210
222
|
case 'loosen-forbidden':
|
|
211
223
|
case 'cas-conflict':
|
|
224
|
+
case 'legacy-tool-name':
|
|
212
225
|
case 'error':
|
|
213
226
|
return { kind: 'unknown', why: leg === 'read' ? 'read_failed' : 'write_refused', message };
|
|
214
227
|
}
|
|
215
228
|
}
|
|
229
|
+
function legacyToolNameOutcome(failure, prior, add) {
|
|
230
|
+
const { field, name } = failure;
|
|
231
|
+
let alreadyInRecord;
|
|
232
|
+
if (field !== undefined && name !== undefined) {
|
|
233
|
+
const inPrior = Object.hasOwn(prior, field) ? prior[field] : undefined;
|
|
234
|
+
const inAdd = Object.hasOwn(add, field) ? add[field] : undefined;
|
|
235
|
+
if (inPrior !== undefined && inPrior.includes(name))
|
|
236
|
+
alreadyInRecord = true;
|
|
237
|
+
else if (inAdd !== undefined && inAdd.includes(name))
|
|
238
|
+
alreadyInRecord = false;
|
|
239
|
+
}
|
|
240
|
+
return {
|
|
241
|
+
kind: 'legacy_tool_name',
|
|
242
|
+
message: failure.message,
|
|
243
|
+
...(field !== undefined ? { field } : {}),
|
|
244
|
+
...(name !== undefined ? { name } : {}),
|
|
245
|
+
...(alreadyInRecord !== undefined ? { alreadyInRecord } : {}),
|
|
246
|
+
};
|
|
247
|
+
}
|
|
216
248
|
async function attemptTighten(facade, req, opts) {
|
|
217
249
|
const read = await readSessionPolicy(facade, req.sessionId, opts);
|
|
218
250
|
if (read.kind === 'failed')
|
|
@@ -231,6 +263,8 @@ async function attemptTighten(facade, req, opts) {
|
|
|
231
263
|
return { done: { kind: 'loosen_forbidden', message: failure.message } };
|
|
232
264
|
if (failure.kind === 'cas-conflict')
|
|
233
265
|
return { retryAtRev: read.rev };
|
|
266
|
+
if (failure.kind === 'legacy-tool-name')
|
|
267
|
+
return { done: legacyToolNameOutcome(failure, read.rules, req.add) };
|
|
234
268
|
return { done: unknownFrom(failure, 'write') };
|
|
235
269
|
}
|
|
236
270
|
let narrowed;
|
|
@@ -279,6 +313,8 @@ export function sessionPolicyTightenNotice(outcome) {
|
|
|
279
313
|
return outcome.why === 'absent'
|
|
280
314
|
? 'This deployment does not keep per-session tool rules, so there is nothing to tighten here.'
|
|
281
315
|
: 'This engine does not say whether it keeps per-session tool rules — it predates that answer — so the tightening entry stays hidden rather than being written blind.';
|
|
316
|
+
case 'legacy_tool_name':
|
|
317
|
+
return RULES_LEGACY_TOOL_NAME_WRITE_NOTE;
|
|
282
318
|
case 'unknown':
|
|
283
319
|
switch (outcome.why) {
|
|
284
320
|
case 'face_unavailable':
|
|
@@ -382,6 +418,16 @@ async function attemptRemoval(facade, sessionId, mounted, opts) {
|
|
|
382
418
|
return { done: { kind: 'loosen_forbidden', message: failure.message, refused: removed } };
|
|
383
419
|
if (failure.kind === 'cas-conflict')
|
|
384
420
|
return { retryAtRev: read.rev };
|
|
421
|
+
if (failure.kind === 'legacy-tool-name') {
|
|
422
|
+
return {
|
|
423
|
+
done: {
|
|
424
|
+
kind: 'legacy_tool_name',
|
|
425
|
+
message: failure.message,
|
|
426
|
+
...(failure.field !== undefined ? { field: failure.field } : {}),
|
|
427
|
+
...(failure.name !== undefined ? { name: failure.name } : {}),
|
|
428
|
+
},
|
|
429
|
+
};
|
|
430
|
+
}
|
|
385
431
|
return { done: removalFailed(failure, 'write') };
|
|
386
432
|
}
|
|
387
433
|
let narrowed;
|
|
@@ -475,6 +521,8 @@ export function sessionPolicyRemovalNotice(outcome) {
|
|
|
475
521
|
}
|
|
476
522
|
case 'write_unconfirmed':
|
|
477
523
|
return 'The removal was sent but no clear answer came back from the engine — it may already be in effect. Run the removal again: it re-reads the record, and reports nothing left to remove if it did take effect.';
|
|
524
|
+
case 'legacy_tool_name':
|
|
525
|
+
return 'Nothing was changed: the engine refused to write this session’s rule record back, because an entry this removal keeps is a name the engine no longer accepts in that record (the engine\'s own error text names the entry). The removal keeps it on purpose — the supplied roster mounts a tool by exactly that name, or this version does not yet recognise the name as one the engine refuses. While the record holds that entry it cannot be written, so the entries this removal meant to take out stay in it as well.';
|
|
478
526
|
default:
|
|
479
527
|
return generic;
|
|
480
528
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -72,7 +72,7 @@ export * from './engineWireSdk.js';
|
|
|
72
72
|
export * from './classifierVerdictWire.js';
|
|
73
73
|
export { stripSystemReminderBlocks, unwrapSystemReminder } from './systemReminderTag.js';
|
|
74
74
|
export { findSystemReminderOpenTag, type SystemReminderOpenTagSpan } from './systemReminderTag.js';
|
|
75
|
-
export { ACTIVE_RUN_BUSY_ERROR_CODE, asModelFallbackReason, CAPABILITY_SELF_ORCHESTRATION_REQUIRED, CONFIG_DELEGATION_ENTRY_CAPS, CONFIG_LEGACY_TOOL_NAME, CONFIG_LIMIT_INVALID, CONFIG_LIMIT_UNKNOWN_KEY, CONFIG_MEMORY_PROJECT_KEY_SPELLING, CONFIG_MEMORY_WRITE_SCOPE_MISMATCH, CONFIG_REFUSAL_CODES, CONFIG_STRATEGY_FIND_LIMIT_INVALID, CONFIG_STRATEGY_MAX_SIZE_INVALID, CORRUPT_SESSION_ERROR_CODE, DECIDE_CLAIM_LOST, DECIDE_GATE_MOVED, DECIDE_NOT_PARKED, DECIDE_PARK_MOVED_CODES, DECIDE_WORKFLOW_HOST_UNKNOWN, DECIDE_WORKFLOW_LANE_CODES, DECIDE_WORKFLOW_REMEMBER_UNSUPPORTED, DELEGATION_CAP_CODES, DELEGATION_CONCURRENCY_CAP, DELEGATION_SESSION_CAP, delegationCapDispositionOf, DRAINING_ERROR_CODE, ENGINE_STOP_REASONS, engineStopReasonToCc, ENV_LIFETIME_EXPIRED, GATE_PARKED_ERROR_CODE, isConfigRefusalCode, isCorruptSessionCode, isDecideParkMovedCode, isDelegationCapCode, isInterruptedToolEndCode, isLimitsExceededCode, isRewindFamilyCode, isStatusDerivedCoarseCode, isWorkflowParkRefusalCode, LIMITS_MAX_COST_EXCEEDED, LIMITS_MAX_TOKENS_EXCEEDED, LIMITS_MAX_TURNS_EXCEEDED, LIMITS_MAX_WALLTIME_EXCEEDED, MCP_SERVER_REVOKED, MODEL_FALLBACK_INHERIT_NO_TIER_BINDING, OUTPUT_INVALID, PARKED_RESUME_STARTUP_FAILED, RESUME_AT_ERROR_CODE_PREFIX, RESUME_CONTEXT_UNAVAILABLE, RESUME_ENV_FAILED, RESUME_PLACEMENT_MISMATCH, RESUME_POLICY_FOLD_CODE, RESUME_PREFLIGHT_REJECTED, RESUME_REOPEN_CODES, RESUME_RETRY_LATER_CODES, RESUME_TOOL_CONTRACT_MISMATCH, RESUME_TOOL_UNAVAILABLE, RESUME_USAGE_WINDOW_EXHAUSTED, REWIND_ERROR_CODE_PREFIXES, SCENARIO_NOT_ALLOWED_ERROR_CODE, STATUS_DERIVED_COARSE_CODES, STOP_CONFLICT_CODES, STREAM_MAX_DURATION, TOOL_END_INTERRUPTED_NEVER_STARTED, TOOL_END_INTERRUPTED_OUTCOME_UNKNOWN, USAGE_WINDOW_EXHAUSTED, WORKFLOW_PARK_REFUSAL_CODES, } from './engineErrorCodes.js';
|
|
75
|
+
export { ACTIVE_RUN_BUSY_ERROR_CODE, asModelFallbackReason, CAPABILITY_SELF_ORCHESTRATION_REQUIRED, CONFIG_DELEGATION_ENTRY_CAPS, CONFIG_LEGACY_TOOL_NAME, CONFIG_LIMIT_INVALID, CONFIG_LIMIT_UNKNOWN_KEY, CONFIG_MEMORY_PROJECT_KEY_SPELLING, CONFIG_MEMORY_WRITE_SCOPE_MISMATCH, CONFIG_REFUSAL_CODES, CONFIG_STRATEGY_FIND_LIMIT_INVALID, CONFIG_STRATEGY_MAX_SIZE_INVALID, CORRUPT_SESSION_ERROR_CODE, DECIDE_CLAIM_LOST, DECIDE_GATE_MOVED, DECIDE_NOT_PARKED, DECIDE_PARK_MOVED_CODES, DECIDE_WORKFLOW_HOST_UNKNOWN, DECIDE_WORKFLOW_LANE_CODES, DECIDE_WORKFLOW_REMEMBER_UNSUPPORTED, DELEGATION_CAP_CODES, DELEGATION_CONCURRENCY_CAP, DELEGATION_SESSION_CAP, delegationCapDispositionOf, DRAINING_ERROR_CODE, ENGINE_STOP_REASONS, engineStopReasonToCc, ENV_LIFETIME_EXPIRED, FLEET_LEASE_UNAVAILABLE, GATE_PARKED_ERROR_CODE, isConfigRefusalCode, isCorruptSessionCode, isDecideParkMovedCode, isDelegationCapCode, isInterruptedToolEndCode, isLimitsExceededCode, isRewindFamilyCode, isRulesRefusalCode, isStatusDerivedCoarseCode, isWorkflowParkRefusalCode, LIMITS_MAX_COST_EXCEEDED, LIMITS_MAX_TOKENS_EXCEEDED, LIMITS_MAX_TURNS_EXCEEDED, LIMITS_MAX_WALLTIME_EXCEEDED, MCP_SERVER_REVOKED, MODEL_FALLBACK_INHERIT_NO_TIER_BINDING, OUTPUT_INVALID, PARKED_RESUME_STARTUP_FAILED, RESUME_AT_ERROR_CODE_PREFIX, RESUME_CONTEXT_UNAVAILABLE, RESUME_ENV_FAILED, RESUME_PLACEMENT_MISMATCH, RESUME_POLICY_FOLD_CODE, RESUME_PREFLIGHT_REJECTED, RESUME_REOPEN_CODES, RESUME_RETRY_LATER_CODES, RESUME_TOOL_CONTRACT_MISMATCH, RESUME_TOOL_UNAVAILABLE, RESUME_USAGE_WINDOW_EXHAUSTED, REWIND_ERROR_CODE_PREFIXES, RULES_LEGACY_TOOL_NAME, SCENARIO_NOT_ALLOWED_ERROR_CODE, STATUS_DERIVED_COARSE_CODES, STOP_CONFLICT_CODES, STREAM_MAX_DURATION, TOOL_END_INTERRUPTED_NEVER_STARTED, TOOL_END_INTERRUPTED_OUTCOME_UNKNOWN, USAGE_WINDOW_EXHAUSTED, WORKFLOW_PARK_REFUSAL_CODES, } from './engineErrorCodes.js';
|
|
76
76
|
export type { DelegationCapDisposition, ModelFallbackReason, } from './engineErrorCodes.js';
|
|
77
77
|
export * from './agentsWireCaps.js';
|
|
78
78
|
export * from './attachmentsWireCaps.js';
|
|
@@ -90,6 +90,8 @@ export * from './rewindWireCaps.js';
|
|
|
90
90
|
export * from './rewindArchiveCapability.js';
|
|
91
91
|
export * from './fileHistoryCaptureCapability.js';
|
|
92
92
|
export * from './sealedKeyCapability.js';
|
|
93
|
+
export * from './storePostureCapability.js';
|
|
94
|
+
export * from './centerWiringCapability.js';
|
|
93
95
|
export * from './registryQuotaUsage.js';
|
|
94
96
|
export * from './selfOrchestrationWireCaps.js';
|
|
95
97
|
export * from './skillsWireCaps.js';
|
|
@@ -145,6 +147,7 @@ export * from './corruptSession.js';
|
|
|
145
147
|
export * from './corruptSessionCopy.js';
|
|
146
148
|
export * from './resumeRefusalCopy.js';
|
|
147
149
|
export * from './wireRefusalCopy.js';
|
|
150
|
+
export * from './inheritEnvWire.js';
|
|
148
151
|
export * from './decideReceipt.js';
|
|
149
152
|
export * from './sessionMap.js';
|
|
150
153
|
export * from './detachWire.js';
|
|
@@ -189,6 +192,7 @@ export * from './request/printNotification.js';
|
|
|
189
192
|
export * from './seatContract.js';
|
|
190
193
|
export * from './agentSession/contract.js';
|
|
191
194
|
export * from './agentSession/backgroundView.js';
|
|
195
|
+
export { READ_CREDENTIAL_NOT_ACCEPTED_NOTICE } from './readCredentialRefusal.js';
|
|
192
196
|
export { readEngineAgentRegistry, isEngineAgentRegistryListingSuperseded } from './agentSession/engineAgentRegistryRead.js';
|
|
193
197
|
export type { EngineAgentRegistryClient } from './agentSession/engineAgentRegistryRead.js';
|
|
194
198
|
export { stopEngineSessionBackground, engineSessionBackgroundReceiptReadingOf, ENGINE_SESSION_BACKGROUND_RECEIPT_STATES, } from './agentSession/engineSessionBackgroundStop.js';
|