@sema-agent/client-core 0.91.0 → 0.93.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 +351 -0
- package/README.md +51 -34
- package/dist/adapt/arms.js +6 -12
- package/dist/adapt/panelTasks.d.ts +0 -2
- package/dist/adapt/panelTasks.js +6 -26
- package/dist/adapt/toolCards.js +6 -4
- package/dist/adapt.d.ts +1 -1
- package/dist/adapt.js +3 -3
- package/dist/adapter/activeRunSelfHeal.d.ts +0 -2
- package/dist/adapter/activeRunSelfHeal.js +5 -27
- package/dist/adapter/downstream/terminalToSdkResult.js +16 -7
- package/dist/adapter/runStream.js +6 -2
- package/dist/agentsWireCaps.js +1 -1
- package/dist/approvalDecidedByCapability.d.ts +16 -0
- package/dist/approvalDecidedByCapability.js +47 -0
- package/dist/approvalsStreamLiveCapability.js +3 -3
- package/dist/askSurvivesStandingAnswer.d.ts +4 -1
- package/dist/askSurvivesStandingAnswer.js +13 -0
- package/dist/autoModeUnavailable.js +3 -2
- package/dist/centerWiringCapability.js +1 -1
- package/dist/cloudConfigWireCaps.js +10 -9
- package/dist/compensations.js +7 -7
- package/dist/controlRouter.d.ts +23 -23
- package/dist/controlRouter.js +114 -49
- package/dist/coreValuePorts.d.ts +4 -2
- package/dist/coreValuePorts.js +5 -0
- package/dist/decideFailureNote.js +4 -2
- package/dist/decideReceipt.d.ts +11 -0
- package/dist/decideReceipt.js +95 -9
- package/dist/detachWire.d.ts +2 -14
- package/dist/detachWire.js +1 -47
- package/dist/deviceExecutorManagementCapability.d.ts +6 -2
- package/dist/deviceExecutorManagementCapability.js +61 -15
- package/dist/displayUntrusted.js +2 -1
- package/dist/effectiveFacts.d.ts +14 -4
- package/dist/effectiveFacts.js +45 -5
- package/dist/engineAgentAbsence.js +2 -1
- package/dist/engineCapReader.js +16 -10
- package/dist/engineCapsCache.d.ts +2 -0
- package/dist/engineCapsCache.js +13 -2
- package/dist/engineConfigDrift.d.ts +20 -0
- package/dist/engineConfigDrift.js +54 -0
- package/dist/engineErrorCodes.d.ts +17 -0
- package/dist/engineErrorCodes.js +45 -0
- package/dist/engineInlineTaskStats.d.ts +1 -0
- package/dist/engineNoticeCodes.d.ts +16 -2
- package/dist/engineNoticeCodes.js +71 -0
- package/dist/engineWireFor.d.ts +22 -0
- package/dist/engineWireFor.js +154 -9
- package/dist/engineWireSdk.d.ts +0 -1
- package/dist/engineWireSdk.js +0 -3
- package/dist/executionLaneCapability.js +4 -2
- package/dist/fileHistoryCaptureCapability.d.ts +1 -1
- package/dist/fileHistoryCaptureCapability.js +1 -6
- package/dist/fileHistoryLegNotice.d.ts +1 -1
- package/dist/fileHistoryLegNotice.js +1 -6
- package/dist/gateOutcome.js +2 -17
- package/dist/gateVocabulary.d.ts +2 -8
- package/dist/gateVocabulary.js +6 -32
- package/dist/generated/engineFactTables.d.ts +17 -1
- package/dist/generated/engineFactTables.js +91 -0
- package/dist/generated/engineNoticeTables.d.ts +1 -1
- package/dist/generated/engineNoticeTables.js +4 -1
- package/dist/generated/settingsSchemaTables.d.ts +8 -0
- package/dist/generated/settingsSchemaTables.js +40 -0
- package/dist/goalStopHook.d.ts +1 -8
- package/dist/goalStopHook.js +2 -58
- package/dist/headlessPermissionModeWire.d.ts +3 -2
- package/dist/headlessPermissionModeWire.js +46 -5
- package/dist/hitl/allowRuleShadow.d.ts +21 -0
- package/dist/hitl/allowRuleShadow.js +167 -0
- package/dist/hitl/askClassPair.d.ts +14 -0
- package/dist/hitl/askClassPair.js +42 -0
- package/dist/hitl/askGateWire.js +1 -0
- package/dist/hitl/askParkRowRouting.js +2 -2
- package/dist/hitl/askSurvivesPosture.d.ts +5 -0
- package/dist/hitl/askSurvivesPosture.js +17 -0
- package/dist/hitl/automaticAnswerVerdict.d.ts +21 -0
- package/dist/hitl/automaticAnswerVerdict.js +143 -0
- package/dist/hitl/crashConverged.d.ts +1 -0
- package/dist/hitl/crashConverged.js +1 -1
- package/dist/hitl/frameRouter.d.ts +2 -0
- package/dist/hitl/frameRouter.js +73 -16
- package/dist/hitl/gateLedger.d.ts +7 -0
- package/dist/hitl/gateLedger.js +37 -5
- package/dist/hitl/hitlBridge.d.ts +1 -0
- package/dist/hitl/hitlBridge.js +6 -1
- package/dist/hitl/hitlHostSurface.d.ts +5 -2
- package/dist/hitl/hitlHostSurface.js +25 -3
- package/dist/hitl/livePendingAsk.js +24 -5
- package/dist/hitl/parkResolver.js +24 -4
- package/dist/hitl/persistedRulesWire.d.ts +4 -1
- package/dist/hitl/persistedRulesWire.js +38 -19
- package/dist/hitl/planReviewWire.d.ts +0 -2
- package/dist/hitl/planReviewWire.js +3 -20
- package/dist/hitl/replayedApproval.d.ts +21 -0
- package/dist/hitl/replayedApproval.js +89 -0
- package/dist/hitl/sessionPolicyDeliverable.js +20 -2
- package/dist/hitl/sessionPolicyWire.d.ts +10 -0
- package/dist/hitl/sessionPolicyWire.js +19 -6
- package/dist/hitl/toolApprovalWire.d.ts +27 -7
- package/dist/hitl/toolApprovalWire.js +153 -94
- package/dist/hookMatcherVerdict.js +2 -1
- package/dist/hooksWireCaps.d.ts +1 -1
- package/dist/hooksWireCaps.js +1 -1
- package/dist/humanTurn.js +3 -4
- package/dist/index.d.ts +21 -6
- package/dist/index.js +17 -4
- package/dist/inheritEnvWire.d.ts +1 -4
- package/dist/inheritEnvWire.js +3 -22
- package/dist/limitsWire.d.ts +0 -6
- package/dist/limitsWire.js +0 -38
- package/dist/mcpLiveness.js +2 -1
- package/dist/mcpProbeCapability.js +1 -1
- package/dist/mcpProbeWire.js +10 -12
- package/dist/mcpReconnect.d.ts +5 -0
- package/dist/mcpReconnect.js +28 -0
- package/dist/memoryComplianceCapability.js +2 -2
- package/dist/memoryOriginCapability.js +2 -2
- package/dist/memoryVerbsWire.d.ts +1 -1
- package/dist/memoryVerbsWire.js +17 -13
- package/dist/model/catalog.js +2 -1
- package/dist/model/providerPresets.d.ts +3 -1
- package/dist/model/tierVocabulary.d.ts +2 -1
- package/dist/model/tierVocabulary.js +3 -8
- package/dist/ownKey.d.ts +2 -0
- package/dist/ownKey.js +15 -0
- package/dist/peerFrames.js +2 -2
- package/dist/peerLaneCapability.js +2 -2
- package/dist/permissionModesCapability.d.ts +16 -0
- package/dist/permissionModesCapability.js +71 -0
- package/dist/permissionRuleIssue.js +10 -7
- package/dist/permissionRulesWriteCapability.js +2 -2
- package/dist/permissionWireCaps.d.ts +2 -0
- package/dist/permissionWireCaps.js +8 -1
- package/dist/permissionsAllowGrantCapability.js +7 -2
- package/dist/permissionsDeclaration.d.ts +7 -1
- package/dist/permissionsDeclaration.js +29 -20
- package/dist/pluginHooksWire.js +2 -11
- package/dist/postureKnob.js +1 -1
- package/dist/promptProfileWireCaps.d.ts +2 -1
- package/dist/protocolSegment.d.ts +11 -0
- package/dist/protocolSegment.js +31 -0
- package/dist/readFacePosture.js +1 -1
- package/dist/request/taskRequest.js +1 -15
- package/dist/resumeRefusalCopy.d.ts +1 -0
- package/dist/resumeRefusalCopy.js +26 -3
- package/dist/retryStatus.js +2 -1
- package/dist/rewindArchiveCapability.js +2 -2
- package/dist/ruleCompileVerdict.d.ts +2 -0
- package/dist/ruleCompileVerdict.js +13 -0
- package/dist/ruleRemovalConsequence.d.ts +2 -1
- package/dist/runCancelContext.d.ts +12 -0
- package/dist/runCancelContext.js +83 -1
- package/dist/runTerminal.d.ts +16 -0
- package/dist/runTerminal.js +32 -3
- package/dist/seam.d.ts +1 -0
- package/dist/seam.js +1 -1
- package/dist/seatContract.d.ts +2 -1
- package/dist/sessionMemoryStatus.d.ts +2 -4
- package/dist/sessionPolicyCapability.js +1 -1
- package/dist/sessionSyncFileHistoryCapability.d.ts +18 -0
- package/dist/sessionSyncFileHistoryCapability.js +50 -0
- package/dist/skillToolListsCapability.d.ts +18 -0
- package/dist/skillToolListsCapability.js +50 -0
- package/dist/sqlEngineCapability.js +2 -9
- package/dist/steerPriorityCapability.d.ts +18 -0
- package/dist/steerPriorityCapability.js +80 -0
- package/dist/steerReceipt.d.ts +9 -0
- package/dist/steerReceipt.js +25 -0
- package/dist/storePostureCapability.js +2 -2
- package/dist/subagent/engineSubagentSteer.js +2 -9
- package/dist/supportFloor.d.ts +1 -0
- package/dist/supportFloor.js +15 -5
- package/dist/taskRequestWords.d.ts +4 -2
- package/dist/taskRequestWords.js +1 -1
- package/dist/toolHistoryBadTurn.js +1 -2
- package/dist/toolResult.d.ts +10 -1
- package/dist/toolResult.js +80 -6
- package/dist/types/engineState.d.ts +2 -12
- package/dist/userInvokedSkillsCapability.d.ts +18 -0
- package/dist/userInvokedSkillsCapability.js +50 -0
- package/dist/webSearchBackendCapability.js +2 -2
- package/dist/webSearchWireCaps.d.ts +1 -1
- package/dist/webSearchWireCaps.js +40 -2
- package/dist/wireFailureShape.d.ts +2 -0
- package/dist/wireFailureShape.js +6 -2
- package/dist/wireRefusalCopy.d.ts +9 -3
- package/dist/wireRefusalCopy.js +41 -4
- package/dist/workflowsJournalCapability.d.ts +18 -0
- package/dist/workflowsJournalCapability.js +50 -0
- package/dist/writeProtectionCapability.d.ts +2 -4
- package/dist/writeProtectionCapability.js +1 -1
- package/docs/INTEGRATION-CLIENTS.md +1516 -18
- package/package.json +2 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { FLEET_LEASE_UNAVAILABLE, USAGE_WINDOW_EXHAUSTED } from './engineErrorCodes.js';
|
|
1
|
+
import { FLEET_LEASE_UNAVAILABLE, SCENARIO_ASSIGNMENT_UNKNOWN_ERROR_CODE, USAGE_WINDOW_EXHAUSTED } from './engineErrorCodes.js';
|
|
2
2
|
import type { TaskRequestLike } from './request/taskRequest.js';
|
|
3
3
|
export declare const CONFLICT_APPROVAL_SETTLED = "conflict.approval_settled";
|
|
4
4
|
export declare const CONFLICT_RUN_NOT_RUNNING = "conflict.run_not_running";
|
|
@@ -22,14 +22,20 @@ export interface FleetLeaseUnavailableDetail {
|
|
|
22
22
|
}
|
|
23
23
|
export declare function fleetLeaseUnavailableFromError(err: unknown): FleetLeaseUnavailableDetail | null;
|
|
24
24
|
export declare function fleetLeaseUnavailableContent(detail: FleetLeaseUnavailableDetail): string;
|
|
25
|
-
export
|
|
25
|
+
export interface ScenarioAssignmentUnknownDetail {
|
|
26
|
+
code: typeof SCENARIO_ASSIGNMENT_UNKNOWN_ERROR_CODE;
|
|
27
|
+
scenario?: string;
|
|
28
|
+
source?: 'ruling' | 'deployment';
|
|
29
|
+
}
|
|
30
|
+
export declare function scenarioAssignmentUnknownFromError(err: unknown): ScenarioAssignmentUnknownDetail | null;
|
|
31
|
+
export type DenyAttributionRefusalKind = 'not_in_proof' | 'decision_conflict' | 'attribution_rejected' | 'retired_key';
|
|
26
32
|
export interface DenyAttributionRefusalDetail {
|
|
27
33
|
kind: DenyAttributionRefusalKind;
|
|
28
34
|
code: string;
|
|
29
35
|
status: number;
|
|
30
36
|
field?: string;
|
|
31
37
|
}
|
|
32
|
-
export declare function denyAttributionRefusalFromError(err: unknown,
|
|
38
|
+
export declare function denyAttributionRefusalFromError(err: unknown, sentAttributionKey: boolean): DenyAttributionRefusalDetail | null;
|
|
33
39
|
export declare function denyAttributionRefusalContent(detail: Pick<DenyAttributionRefusalDetail, 'kind' | 'field'>): string;
|
|
34
40
|
export declare const CONFLICT_SESSION_CHILDREN_ALIVE = "conflict.session_children_alive";
|
|
35
41
|
export type SessionDeleteConflictKind = 'children_alive' | 'active_run' | 'unrecognized';
|
package/dist/wireRefusalCopy.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { readErrorNumber, readErrorRecord, readErrorStrictStringList, readErrorString, readErrorStringList } from './wireFailureShape.js';
|
|
2
2
|
import { readOwnNonEmptyString } from './ownKey.js';
|
|
3
|
-
import { ACTIVE_RUN_BUSY_ERROR_CODE, FLEET_LEASE_UNAVAILABLE, REQUEST_FIELD_CONFLICT, RESUME_POLICY_FOLD_CODE, USAGE_WINDOW_EXHAUSTED } from './engineErrorCodes.js';
|
|
3
|
+
import { ACTIVE_RUN_BUSY_ERROR_CODE, FLEET_LEASE_UNAVAILABLE, REQUEST_FIELD_CONFLICT, RESUME_POLICY_FOLD_CODE, SCENARIO_ASSIGNMENT_UNKNOWN_ERROR_CODE, USAGE_WINDOW_EXHAUSTED } from './engineErrorCodes.js';
|
|
4
4
|
import { capForDisplay } from './fleetTaskDesc.js';
|
|
5
5
|
import { effectiveWireErrorCode } from './wireErrorTriage.js';
|
|
6
6
|
import { CORE_TOOL_DECLARATION_CODES } from './generated/engineFactTables.js';
|
|
@@ -145,7 +145,38 @@ export function fleetLeaseUnavailableContent(detail) {
|
|
|
145
145
|
: ' · The engine did not say how long to wait — send it again a little later';
|
|
146
146
|
return `${head}${cause}${wait}`;
|
|
147
147
|
}
|
|
148
|
+
export function scenarioAssignmentUnknownFromError(err) {
|
|
149
|
+
try {
|
|
150
|
+
if (err === null || typeof err !== 'object')
|
|
151
|
+
return null;
|
|
152
|
+
if (effectiveWireErrorCode(err) !== SCENARIO_ASSIGNMENT_UNKNOWN_ERROR_CODE)
|
|
153
|
+
return null;
|
|
154
|
+
const detail = readErrorRecord(err, 'detail');
|
|
155
|
+
const bit = (key) => {
|
|
156
|
+
if (detail === undefined)
|
|
157
|
+
return undefined;
|
|
158
|
+
try {
|
|
159
|
+
return Object.hasOwn(detail, key) ? detail[key] : undefined;
|
|
160
|
+
}
|
|
161
|
+
catch {
|
|
162
|
+
return undefined;
|
|
163
|
+
}
|
|
164
|
+
};
|
|
165
|
+
const scenario = bit('scenario');
|
|
166
|
+
const source = bit('source');
|
|
167
|
+
return {
|
|
168
|
+
code: SCENARIO_ASSIGNMENT_UNKNOWN_ERROR_CODE,
|
|
169
|
+
...(typeof scenario === 'string' && scenario.length > 0 ? { scenario } : {}),
|
|
170
|
+
...(source === 'ruling' || source === 'deployment' ? { source } : {}),
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
catch {
|
|
174
|
+
return null;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
148
177
|
const SETTLED_BY_NOT_IN_PROOF = 'settled_by_not_in_proof';
|
|
178
|
+
const DECIDED_BY_NOT_IN_PROOF = 'decided_by_not_in_proof';
|
|
179
|
+
const RETIRED_DECISION_KEY = 'settledBy';
|
|
149
180
|
const RESUME_OUTCOME_INVALID = 'resume_outcome_invalid';
|
|
150
181
|
const APPROVAL_NON_BINDING_FIELDS = new Set(['hostDecision', 'approver']);
|
|
151
182
|
function readRefusalField(o) {
|
|
@@ -163,7 +194,7 @@ function readRefusalField(o) {
|
|
|
163
194
|
}
|
|
164
195
|
return readStringField(o, 'field');
|
|
165
196
|
}
|
|
166
|
-
export function denyAttributionRefusalFromError(err,
|
|
197
|
+
export function denyAttributionRefusalFromError(err, sentAttributionKey) {
|
|
167
198
|
try {
|
|
168
199
|
if (err === null || typeof err !== 'object')
|
|
169
200
|
return null;
|
|
@@ -175,9 +206,12 @@ export function denyAttributionRefusalFromError(err, sentSettledBy) {
|
|
|
175
206
|
const code = readStringField(o, 'errorCode');
|
|
176
207
|
if (code === undefined)
|
|
177
208
|
return null;
|
|
178
|
-
if (status === 400 && code === SETTLED_BY_NOT_IN_PROOF)
|
|
209
|
+
if (status === 400 && (code === SETTLED_BY_NOT_IN_PROOF || code === DECIDED_BY_NOT_IN_PROOF))
|
|
179
210
|
return { kind: 'not_in_proof', code, status };
|
|
180
|
-
if (status === 400 && code ===
|
|
211
|
+
if (status === 400 && code === BODY_SHAPE && readRefusalField(o) === RETIRED_DECISION_KEY) {
|
|
212
|
+
return { kind: 'retired_key', code, status, field: RETIRED_DECISION_KEY };
|
|
213
|
+
}
|
|
214
|
+
if (status === 400 && code === REQUEST_FIELD_CONFLICT && sentAttributionKey) {
|
|
181
215
|
return { kind: 'decision_conflict', code, status };
|
|
182
216
|
}
|
|
183
217
|
if (status === 409 && code === RESUME_OUTCOME_INVALID) {
|
|
@@ -202,6 +236,9 @@ export function denyAttributionRefusalContent(detail) {
|
|
|
202
236
|
return ('The engine refused this decision before judging it: the body says a policy settled it and also asks to allow the call, ' +
|
|
203
237
|
'and only a person can allow one · Nothing was decided and the approval is still waiting — ' +
|
|
204
238
|
'send it again with the decision and the note in agreement');
|
|
239
|
+
case 'retired_key':
|
|
240
|
+
return ('The engine refused this decision before judging it: the note saying who settled it was sent under a name this engine no longer accepts · ' +
|
|
241
|
+
'Nothing was decided and the approval is still waiting — send the decision again with who made it given under the name the engine now takes in its place');
|
|
205
242
|
case 'attribution_rejected': {
|
|
206
243
|
const named = typeof detail.field === 'string' && APPROVAL_NON_BINDING_FIELDS.has(detail.field)
|
|
207
244
|
? ` It named ${detail.field} as the part it would not take.`
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export type WorkflowsJournalReading = {
|
|
2
|
+
kind: 'unobserved';
|
|
3
|
+
} | {
|
|
4
|
+
kind: 'not_reported';
|
|
5
|
+
} | {
|
|
6
|
+
kind: 'absent';
|
|
7
|
+
} | {
|
|
8
|
+
kind: 'present';
|
|
9
|
+
};
|
|
10
|
+
export declare function projectWorkflowsJournalCapability(caps: unknown): WorkflowsJournalReading | undefined;
|
|
11
|
+
export declare function noteEngineCapsForWorkflowsJournal(baseUrl: string, caps: unknown, opts?: {
|
|
12
|
+
generation?: number;
|
|
13
|
+
}): void;
|
|
14
|
+
export declare function observedWorkflowsJournal(baseUrl?: string | undefined): WorkflowsJournalReading;
|
|
15
|
+
export declare function workflowsJournalAvailable(reading: WorkflowsJournalReading): 'yes' | 'no' | 'unknown';
|
|
16
|
+
export declare function workflowsJournalDoctorDetail(reading: WorkflowsJournalReading): string;
|
|
17
|
+
export declare function forgetWorkflowsJournalReading(baseUrl: string | undefined): void;
|
|
18
|
+
export declare function __resetWorkflowsJournalReadingsForTests(): void;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { engineWireTarget } from './engineWireTarget.js';
|
|
2
|
+
import { createEngineCapReader } from './engineCapReader.js';
|
|
3
|
+
export function projectWorkflowsJournalCapability(caps) {
|
|
4
|
+
if (caps === null || typeof caps !== 'object' || Array.isArray(caps))
|
|
5
|
+
return undefined;
|
|
6
|
+
if (!Object.hasOwn(caps, 'workflowsJournal'))
|
|
7
|
+
return { kind: 'not_reported' };
|
|
8
|
+
const v = caps.workflowsJournal;
|
|
9
|
+
if (v === undefined)
|
|
10
|
+
return { kind: 'not_reported' };
|
|
11
|
+
if (typeof v !== 'boolean')
|
|
12
|
+
return undefined;
|
|
13
|
+
return v ? { kind: 'present' } : { kind: 'absent' };
|
|
14
|
+
}
|
|
15
|
+
const reader = createEngineCapReader({
|
|
16
|
+
name: 'workflowsJournal',
|
|
17
|
+
project: projectWorkflowsJournalCapability,
|
|
18
|
+
makeUnobserved: () => ({ kind: 'unobserved' }),
|
|
19
|
+
});
|
|
20
|
+
export function noteEngineCapsForWorkflowsJournal(baseUrl, caps, opts) {
|
|
21
|
+
reader.note(baseUrl, caps, opts);
|
|
22
|
+
}
|
|
23
|
+
export function observedWorkflowsJournal(baseUrl = engineWireTarget()?.baseUrl) {
|
|
24
|
+
return reader.observed(baseUrl);
|
|
25
|
+
}
|
|
26
|
+
export function workflowsJournalAvailable(reading) {
|
|
27
|
+
if (reading.kind === 'present')
|
|
28
|
+
return 'yes';
|
|
29
|
+
if (reading.kind === 'absent')
|
|
30
|
+
return 'no';
|
|
31
|
+
return 'unknown';
|
|
32
|
+
}
|
|
33
|
+
export function workflowsJournalDoctorDetail(reading) {
|
|
34
|
+
switch (reading.kind) {
|
|
35
|
+
case 'unobserved':
|
|
36
|
+
return 'workflow journal not observed — the engine reports it on /v1/capabilities (workflowsJournal); this process has no usable capabilities reading cached for it (none received, the last one was unreadable, or the last one was discarded when the engine connection was reset; this process cannot tell which)';
|
|
37
|
+
case 'not_reported':
|
|
38
|
+
return 'workflow journal not reported by this engine — the engine predates the separate flag, so the workflow listing flag still covers the journal';
|
|
39
|
+
case 'absent':
|
|
40
|
+
return 'no workflow journal on this deployment — workflows can be listed and followed, but their execution journal cannot be read';
|
|
41
|
+
case 'present':
|
|
42
|
+
return 'workflow journal on — a workflow’s execution journal can be read';
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
export function forgetWorkflowsJournalReading(baseUrl) {
|
|
46
|
+
reader.forget(baseUrl);
|
|
47
|
+
}
|
|
48
|
+
export function __resetWorkflowsJournalReadingsForTests() {
|
|
49
|
+
reader.__resetForTests();
|
|
50
|
+
}
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
rows: number;
|
|
4
|
-
replaced: boolean;
|
|
1
|
+
import type { WriteProtectionCapability } from '@sema-agent/sdk';
|
|
2
|
+
export interface WriteProtectionCapabilityView extends Pick<WriteProtectionCapability, 'armed' | 'rows' | 'replaced'> {
|
|
5
3
|
}
|
|
6
4
|
export type WriteProtectionReading = {
|
|
7
5
|
kind: 'unobserved';
|
|
@@ -75,7 +75,7 @@ export function writeProtectionDoctorDetail(reading) {
|
|
|
75
75
|
switch (reading.kind) {
|
|
76
76
|
case 'unobserved':
|
|
77
77
|
return ('not observed — the engine reports it on /v1/capabilities; this process has no usable ' +
|
|
78
|
-
'capabilities reading cached for it (none received, or the last one was
|
|
78
|
+
'capabilities reading cached for it (none received, the last one was unreadable, or the last one was discarded when the engine connection was reset; this process cannot tell which)');
|
|
79
79
|
case 'not_reported':
|
|
80
80
|
return ('not reported by this engine — the capability position needs a newer engine; this says ' +
|
|
81
81
|
'nothing about whether a protected-name table is in effect (an absent seat is the engine ' +
|