@fabricorg/platform-host 7.4.0 → 7.6.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 +69 -0
- package/README.md +295 -15
- package/dist/index.cjs +540 -73
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +150 -17
- package/dist/index.d.ts +150 -17
- package/dist/index.js +541 -74
- package/dist/index.js.map +1 -1
- package/package.json +4 -4
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ActorType, ActionId, ActionStatus, EvidencePacketReference, AgentActionRoute, AgentActionRiskTier, MutationFootprint, ExecutionPrincipal, GovernanceRuntimeEvidence, PolicyOutcome, AssetEventEnvelope,
|
|
1
|
+
import { ActorType, ActionId, ActionStatus, EvidencePacketReference, AgentActionRoute, AgentActionRiskTier, MutationFootprint, ExecutionPrincipal, GovernanceRuntimeEvidence, PolicyOutcome, AssetEventEnvelope, PolicyObligation, PolicyObligationStatus, ExecutionAttestation, ExternalReconciliation, ModuleRegistry, ActionDefinition, AdapterImplementation, AdapterCircuitBreakerProvider, FabricRuntimeServices, AgentActionPolicyEvaluator, MutationGovernanceResolver, RuntimePolicyDefinition } from '@fabricorg/platform';
|
|
2
2
|
export { canonicalJson } from '@fabricorg/platform';
|
|
3
3
|
import { AssemblyLockfile } from '@fabricorg/assembly';
|
|
4
4
|
|
|
@@ -217,13 +217,15 @@ declare class ActionAdmissionError extends Error {
|
|
|
217
217
|
/** The check's own code, present only for `refused`. */
|
|
218
218
|
refusalCode?: string | undefined);
|
|
219
219
|
}
|
|
220
|
-
type ExternalCompletionRefusal = "still_executing" | "not_found" | "not_awaiting" | "immediate_contract" | "reference_mismatch" | "provider_mismatch" | "invalid_completion" | "result_invalid";
|
|
220
|
+
type ExternalCompletionRefusal = "still_executing" | "not_found" | "not_awaiting" | "immediate_contract" | "reference_mismatch" | "provider_mismatch" | "invalid_completion" | "result_invalid" | "redaction_failed";
|
|
221
221
|
/**
|
|
222
222
|
* Why a completion was not applied, typed so a webhook handler can answer
|
|
223
223
|
* the external system correctly: `retryable` means the invocation is still
|
|
224
224
|
* being finalized and the same callback will be accepted once it parks, so
|
|
225
225
|
* answer with something the sender retries; anything else is permanent and
|
|
226
|
-
* a retry will get the same refusal.
|
|
226
|
+
* a retry will get the same refusal without a configuration/input change.
|
|
227
|
+
* `redaction_failed` means completion result or error-text redaction failed before writes;
|
|
228
|
+
* it is not retryable.
|
|
227
229
|
*/
|
|
228
230
|
declare class ExternalCompletionError extends Error {
|
|
229
231
|
readonly refusal: ExternalCompletionRefusal;
|
|
@@ -262,6 +264,18 @@ interface ActionInvocationRecord {
|
|
|
262
264
|
authorizationReconciliation?: AuthorizationReconciliationOutcome;
|
|
263
265
|
/** Durable evidence when an adapter returned an ambiguous outcome requiring reconciliation. */
|
|
264
266
|
adapterReconciliation?: AdapterReconciliationOutcome;
|
|
267
|
+
/**
|
|
268
|
+
* Transition Host validated for an idempotent after_adapters action, saved
|
|
269
|
+
* after handler/result/event validation inside a mutation transaction, or before
|
|
270
|
+
* the handler otherwise. Supports recovered StateTransitioned emission and is
|
|
271
|
+
* retained as evidence after completion.
|
|
272
|
+
*/
|
|
273
|
+
pendingStateTransition?: {
|
|
274
|
+
entityType: string;
|
|
275
|
+
entityId: string;
|
|
276
|
+
fromState: string;
|
|
277
|
+
toState: string;
|
|
278
|
+
};
|
|
265
279
|
/**
|
|
266
280
|
* A handoff the host is waiting on. While present the invocation is
|
|
267
281
|
* `running` without a lease: it is not stuck, it is somebody else's turn,
|
|
@@ -432,6 +446,12 @@ interface AdapterInvocationRecord {
|
|
|
432
446
|
}
|
|
433
447
|
interface CreateActionInvocationInput extends Omit<ActionInvocationRecord, "createdAt" | "updatedAt" | "attemptCount" | "leaseOwner" | "leaseExpiresAt" | "leaseToken"> {
|
|
434
448
|
}
|
|
449
|
+
/** Scope of an adapter checkpoint within its owning action invocation. */
|
|
450
|
+
interface AdapterInvocationScope {
|
|
451
|
+
tenantId: string;
|
|
452
|
+
spaceId: string;
|
|
453
|
+
actionInvocationId: string;
|
|
454
|
+
}
|
|
435
455
|
interface PlatformHostStore<TDb> {
|
|
436
456
|
readonly db: TDb;
|
|
437
457
|
/**
|
|
@@ -445,10 +465,32 @@ interface PlatformHostStore<TDb> {
|
|
|
445
465
|
updateActionInvocation(id: string, tenantId: string, spaceId: string, patch: ActionInvocationPatch): Promise<void>;
|
|
446
466
|
appendPolicyEvaluation(record: PolicyEvaluationRecord): Promise<void>;
|
|
447
467
|
createAdapterInvocation(record: AdapterInvocationRecord): Promise<void>;
|
|
448
|
-
|
|
449
|
-
|
|
468
|
+
/**
|
|
469
|
+
* Host supplies scope from its store-loaded invocation at adapter call sites.
|
|
470
|
+
* When supplied, stores must match tenant, space, and action invocation:
|
|
471
|
+
* an out-of-scope record returns undefined. Optional for compatibility with
|
|
472
|
+
* existing custom stores and direct callers; tenantIsolationChecks tests
|
|
473
|
+
* scoped read and write conformance.
|
|
474
|
+
*/
|
|
475
|
+
getAdapterInvocation(id: string, scope?: AdapterInvocationScope): Promise<AdapterInvocationRecord | undefined>;
|
|
476
|
+
/**
|
|
477
|
+
* Match all three scope fields when supplied, changing nothing outside it
|
|
478
|
+
* (a not-found error is permitted). Host supplies scope as described above;
|
|
479
|
+
* optional only for compatibility with existing stores and direct callers.
|
|
480
|
+
*/
|
|
481
|
+
updateAdapterInvocation(id: string, patch: Partial<Pick<AdapterInvocationRecord, "status" | "output" | "error" | "attempt" | "updatedAt">>, scope?: AdapterInvocationScope): Promise<void>;
|
|
450
482
|
appendEvent(event: AssetEventEnvelope): Promise<void>;
|
|
451
483
|
nextEventSequence(tenantId: string, spaceId: string): Promise<number>;
|
|
484
|
+
/**
|
|
485
|
+
* Return the state and invocation writer of the same event selected by
|
|
486
|
+
* getEntityState, scoped to this subject and tenant/space. Return undefined
|
|
487
|
+
* when that event or its invocation provenance is unavailable. Transaction
|
|
488
|
+
* implementations include pending events visible to getEntityState.
|
|
489
|
+
*/
|
|
490
|
+
getEntityStateSource?(tenantId: string, spaceId: string, entityType: string, entityId: string): Promise<{
|
|
491
|
+
state: string;
|
|
492
|
+
actionInvocationId: string;
|
|
493
|
+
} | undefined>;
|
|
452
494
|
getEntityState(tenantId: string, spaceId: string, entityType: string, entityId: string): Promise<string | undefined>;
|
|
453
495
|
}
|
|
454
496
|
/**
|
|
@@ -475,9 +517,32 @@ interface PlatformHostMutationTransaction<TDb> {
|
|
|
475
517
|
appendEventWithOutbox?(event: AssetEventEnvelope, metadata: OutboxEventMetadata): Promise<void>;
|
|
476
518
|
nextEventSequence(tenantId: string, spaceId: string): Promise<number>;
|
|
477
519
|
listEvents(tenantId: string, spaceId: string): Promise<AssetEventEnvelope[]>;
|
|
520
|
+
/**
|
|
521
|
+
* Return the state and invocation writer of the same event selected by
|
|
522
|
+
* getEntityState, scoped to this subject and tenant/space. Return undefined
|
|
523
|
+
* when that event or its invocation provenance is unavailable. Transaction
|
|
524
|
+
* implementations include pending events visible to getEntityState.
|
|
525
|
+
*/
|
|
526
|
+
getEntityStateSource?(tenantId: string, spaceId: string, entityType: string, entityId: string): Promise<{
|
|
527
|
+
state: string;
|
|
528
|
+
actionInvocationId: string;
|
|
529
|
+
} | undefined>;
|
|
478
530
|
getEntityState?(tenantId: string, spaceId: string, entityType: string, entityId: string): Promise<string | undefined>;
|
|
479
531
|
updateActionInvocation(id: string, tenantId: string, spaceId: string, patch: ActionInvocationPatch): Promise<void>;
|
|
480
532
|
updateLeasedActionInvocation?(input: UpdateLeasedActionInvocationInput): Promise<boolean>;
|
|
533
|
+
/**
|
|
534
|
+
* Update an adapter row in this transaction, with the same optional
|
|
535
|
+
* tenant/space/invocation scope semantics as the store method. Host uses
|
|
536
|
+
* this to commit degraded adapter evidence and its terminal verdict together.
|
|
537
|
+
* Omit this member if the adapter row cannot share this transaction.
|
|
538
|
+
*/
|
|
539
|
+
updateAdapterInvocation?: PlatformHostStore<TDb>["updateAdapterInvocation"];
|
|
540
|
+
/**
|
|
541
|
+
* Append governance reconciliation evidence in this transaction. Host uses
|
|
542
|
+
* this for degraded finalization when adapter output is withheld. Omit this
|
|
543
|
+
* member if governance evidence cannot share the event/verdict transaction.
|
|
544
|
+
*/
|
|
545
|
+
appendExternalReconciliation?: GovernancePlatformHostStore<TDb>["appendExternalReconciliation"];
|
|
481
546
|
}
|
|
482
547
|
type OutboxStatus = "pending" | "published" | "dead_letter";
|
|
483
548
|
type EventPayloadClassification = "public" | "internal" | "confidential" | "restricted";
|
|
@@ -779,7 +844,7 @@ interface ClaimActionInvocationsInput {
|
|
|
779
844
|
* - `claimActionInvocations` must never claim a running invocation without a
|
|
780
845
|
* lease, which is what a parked invocation is.
|
|
781
846
|
*/
|
|
782
|
-
type ActionInvocationPatch = Partial<Pick<ActionInvocationRecord, "status" | "result" | "error" | "authorizationReconciliation" | "adapterReconciliation" | "pendingCompletion" | "externalCompletion">>;
|
|
847
|
+
type ActionInvocationPatch = Partial<Pick<ActionInvocationRecord, "status" | "result" | "error" | "authorizationReconciliation" | "adapterReconciliation" | "pendingStateTransition" | "pendingCompletion" | "externalCompletion">>;
|
|
783
848
|
interface UpdateLeasedActionInvocationInput {
|
|
784
849
|
id: string;
|
|
785
850
|
tenantId: string;
|
|
@@ -963,6 +1028,21 @@ interface PlatformActionWorkerCycleResult {
|
|
|
963
1028
|
failed: number;
|
|
964
1029
|
/** Present when claimed agent work was durably parked instead of failing. */
|
|
965
1030
|
waitingForApproval?: number;
|
|
1031
|
+
/**
|
|
1032
|
+
* Present only when > 0: claimed invocations whose execution threw a
|
|
1033
|
+
* RetryableExecutionError (counted by error type, not by where it was thrown).
|
|
1034
|
+
* The row stays leased and a later claim retries it; excluded from failed.
|
|
1035
|
+
*/
|
|
1036
|
+
deferred?: number;
|
|
1037
|
+
}
|
|
1038
|
+
/** Origin of error text redacted before Host records or returns it. */
|
|
1039
|
+
interface ErrorTextRedactionContext {
|
|
1040
|
+
actionId: ActionId;
|
|
1041
|
+
source: "handler" | "adapter" | "external_completion" | "execution";
|
|
1042
|
+
adapterType?: string;
|
|
1043
|
+
operation?: string;
|
|
1044
|
+
/** Adapter vendor or external completion provider. */
|
|
1045
|
+
provider?: string;
|
|
966
1046
|
}
|
|
967
1047
|
interface PlatformHostOptions<TDb> {
|
|
968
1048
|
store: PlatformHostStore<TDb>;
|
|
@@ -979,8 +1059,24 @@ interface PlatformHostOptions<TDb> {
|
|
|
979
1059
|
* `circuitBreaker` config, on first use, and none for adapters without one.
|
|
980
1060
|
* Pass a shared registry or a custom provider to share breakers between
|
|
981
1061
|
* Host instances, receive breaker telemetry, or set manual overrides.
|
|
1062
|
+
* The default key shares failures across tenants and vendors in a registry.
|
|
1063
|
+
* Use `new AdapterCircuitBreakerRegistry({ key: scopedAdapterCircuitBreakerKey })`
|
|
1064
|
+
* for tenant/space/vendor isolation. Host passes trusted tenant/space scope
|
|
1065
|
+
* to the provider. The registry keeps the first config seen for a key;
|
|
1066
|
+
* later conflicting configs reuse that breaker without throwing. Breakers
|
|
1067
|
+
* are never evicted, so scoped keys keep one breaker per scope seen.
|
|
982
1068
|
*/
|
|
983
1069
|
adapterCircuitBreakers?: AdapterCircuitBreakerProvider;
|
|
1070
|
+
/**
|
|
1071
|
+
* Positive integer attempt cap for RetryableExecutionError during governance,
|
|
1072
|
+
* before policy-evaluation persistence (default 5). A leased, idempotent action
|
|
1073
|
+
* below the cap is left running for worker reclaim after lease expiry.
|
|
1074
|
+
* Inline execution, approval resume, exhausted attempts, and non-idempotent
|
|
1075
|
+
* actions fail. Policy persistence, obligation listing/resolution/persistence, state-machine checks,
|
|
1076
|
+
* the handler transaction, handlers, adapters, and finalization are excluded;
|
|
1077
|
+
* their existing failure/reconciliation/recovery semantics apply.
|
|
1078
|
+
*/
|
|
1079
|
+
retryableExecutionMaxAttempts?: number;
|
|
984
1080
|
dispatcher?: PlatformActionDispatcher;
|
|
985
1081
|
services?: FabricRuntimeServices;
|
|
986
1082
|
idempotency?: {
|
|
@@ -1029,6 +1125,7 @@ interface PlatformHostOptions<TDb> {
|
|
|
1029
1125
|
input: Record<string, unknown>;
|
|
1030
1126
|
startedAt: Date;
|
|
1031
1127
|
completedAt: Date;
|
|
1128
|
+
/** Adapter output after redactAdapterOutput, when configured. */
|
|
1032
1129
|
output: Record<string, unknown>;
|
|
1033
1130
|
}) => Promise<ExecutionAttestation | undefined> | ExecutionAttestation | undefined;
|
|
1034
1131
|
/** Package/provider/ruleset generations persisted with every newly created invocation. */
|
|
@@ -1076,6 +1173,33 @@ interface PlatformHostOptions<TDb> {
|
|
|
1076
1173
|
/** Handler-result fields consumed by extractEvents and omitted from the durable result. */
|
|
1077
1174
|
eventResultFields?: readonly string[];
|
|
1078
1175
|
redactAdapterInput?: (actionId: ActionId, adapterType: string, operation: string, input: Record<string, unknown>) => Record<string, unknown>;
|
|
1176
|
+
/**
|
|
1177
|
+
* Redact successful adapter output before row/event persistence and attestation extraction.
|
|
1178
|
+
* A throwing hook or a null, array or non-object return withholds output and requires reconciliation.
|
|
1179
|
+
* Class instances and Dates are accepted, matching the adapter output record contract.
|
|
1180
|
+
* Keep redactors deterministic and stable across deploys.
|
|
1181
|
+
* Accepted-operation references are read from the original adapter result.
|
|
1182
|
+
*/
|
|
1183
|
+
redactAdapterOutput?: (actionId: ActionId, adapterType: string, operation: string, output: Record<string, unknown>) => Record<string, unknown>;
|
|
1184
|
+
/**
|
|
1185
|
+
* Redact originating handler, adapter, completion and caught execution error text.
|
|
1186
|
+
* Host-authored fixed text bypasses this hook; circuit and consistency errors use adapter context.
|
|
1187
|
+
* Empty originating text bypasses the hook unchanged. For non-empty input, throwing or returning
|
|
1188
|
+
* a non-string or empty string uses a placeholder on execution paths, but refuses a completion
|
|
1189
|
+
* as redaction_failed before writes. State-machine `transition.error` text uses `source: "handler"`.
|
|
1190
|
+
* Keep redactors deterministic and stable across deploys: changed output can make a repeat
|
|
1191
|
+
* completion look like different evidence.
|
|
1192
|
+
*/
|
|
1193
|
+
redactErrorText?: (context: ErrorTextRedactionContext, message: string) => string;
|
|
1194
|
+
/**
|
|
1195
|
+
* Redact completion results before merging, schema validation, persistence and digesting.
|
|
1196
|
+
* Contradiction detection compares retained values; legacy raw digests also match repeats.
|
|
1197
|
+
* A throwing hook or a null, array or non-object return refuses as redaction_failed before writes.
|
|
1198
|
+
* Class instances and Dates are accepted by the same record predicate as adapter output.
|
|
1199
|
+
* Keep redactors deterministic and stable across deploys: changes can make a repeat look like
|
|
1200
|
+
* different evidence. A matching legacy raw digest is acknowledged before invoking hooks.
|
|
1201
|
+
*/
|
|
1202
|
+
redactExternalCompletionResult?: (actionId: ActionId, provider: string, result: Record<string, unknown>) => Record<string, unknown>;
|
|
1079
1203
|
adapterEventSubject?: (actionId: ActionId, parameters: unknown, handlerResult: Record<string, unknown>) => {
|
|
1080
1204
|
subjectType: string;
|
|
1081
1205
|
subjectId: string;
|
|
@@ -1173,8 +1297,8 @@ declare class MemoryPlatformHostStore<TDb> implements RecoverablePlatformHostSto
|
|
|
1173
1297
|
listExecutionAttestations(actionInvocationId: string, tenantId: string, spaceId: string): Promise<ExecutionAttestationRecord[]>;
|
|
1174
1298
|
appendExternalReconciliation(record: ExternalReconciliationRecord): Promise<void>;
|
|
1175
1299
|
createAdapterInvocation(record: AdapterInvocationRecord): Promise<void>;
|
|
1176
|
-
getAdapterInvocation(id: string): Promise<AdapterInvocationRecord | undefined>;
|
|
1177
|
-
updateAdapterInvocation(id: string, patch: Partial<Pick<AdapterInvocationRecord, "status" | "output" | "error" | "attempt" | "updatedAt"
|
|
1300
|
+
getAdapterInvocation(id: string, scope?: AdapterInvocationScope): Promise<AdapterInvocationRecord | undefined>;
|
|
1301
|
+
updateAdapterInvocation(id: string, patch: Partial<Pick<AdapterInvocationRecord, "status" | "output" | "error" | "attempt" | "updatedAt">>, scope?: AdapterInvocationScope): Promise<void>;
|
|
1178
1302
|
appendEvent(event: AssetEventEnvelope): Promise<void>;
|
|
1179
1303
|
appendEventWithOutbox(event: AssetEventEnvelope, metadata: OutboxEventMetadata): Promise<void>;
|
|
1180
1304
|
claimOutbox(input: ClaimOutboxInput): Promise<OutboxRecord[]>;
|
|
@@ -1208,6 +1332,10 @@ declare class MemoryPlatformHostStore<TDb> implements RecoverablePlatformHostSto
|
|
|
1208
1332
|
}): Promise<OutboxRequeueRecord[]>;
|
|
1209
1333
|
private requireLeasedOutbox;
|
|
1210
1334
|
nextEventSequence(tenantId: string, spaceId: string): Promise<number>;
|
|
1335
|
+
getEntityStateSource(tenantId: string, spaceId: string, entityType: string, entityId: string): Promise<{
|
|
1336
|
+
state: string;
|
|
1337
|
+
actionInvocationId: string;
|
|
1338
|
+
} | undefined>;
|
|
1211
1339
|
getEntityState(tenantId: string, spaceId: string, entityType: string, entityId: string): Promise<string | undefined>;
|
|
1212
1340
|
listActionInvocations(input?: ListActionInvocationsInput): Promise<ActionInvocationRecord[]>;
|
|
1213
1341
|
getHealthCounts(input: PlatformHostHealthQuery): Promise<PlatformHostHealthCounts>;
|
|
@@ -1304,8 +1432,8 @@ declare class PostgresPlatformHostStore<TDb> implements RecoverablePlatformHostS
|
|
|
1304
1432
|
listExecutionAttestations(actionInvocationId: string, tenantId: string, spaceId: string): Promise<ExecutionAttestationRecord[]>;
|
|
1305
1433
|
appendExternalReconciliation(record: ExternalReconciliationRecord): Promise<void>;
|
|
1306
1434
|
createAdapterInvocation(record: AdapterInvocationRecord): Promise<void>;
|
|
1307
|
-
getAdapterInvocation(id: string): Promise<AdapterInvocationRecord | undefined>;
|
|
1308
|
-
updateAdapterInvocation(id: string, patch: Partial<Pick<AdapterInvocationRecord, "status" | "output" | "error" | "attempt" | "updatedAt"
|
|
1435
|
+
getAdapterInvocation(id: string, scope?: AdapterInvocationScope): Promise<AdapterInvocationRecord | undefined>;
|
|
1436
|
+
updateAdapterInvocation(id: string, patch: Partial<Pick<AdapterInvocationRecord, "status" | "output" | "error" | "attempt" | "updatedAt">>, scope?: AdapterInvocationScope): Promise<void>;
|
|
1309
1437
|
appendEvent(event: AssetEventEnvelope): Promise<void>;
|
|
1310
1438
|
appendEventWithOutbox(event: AssetEventEnvelope, metadata: OutboxEventMetadata): Promise<void>;
|
|
1311
1439
|
claimOutbox(input: ClaimOutboxInput): Promise<OutboxRecord[]>;
|
|
@@ -1338,6 +1466,10 @@ declare class PostgresPlatformHostStore<TDb> implements RecoverablePlatformHostS
|
|
|
1338
1466
|
outboxId?: string;
|
|
1339
1467
|
}): Promise<OutboxRequeueRecord[]>;
|
|
1340
1468
|
nextEventSequence(tenantId: string, spaceId: string): Promise<number>;
|
|
1469
|
+
getEntityStateSource(tenantId: string, spaceId: string, entityType: string, entityId: string): Promise<{
|
|
1470
|
+
state: string;
|
|
1471
|
+
actionInvocationId: string;
|
|
1472
|
+
} | undefined>;
|
|
1341
1473
|
getEntityState(tenantId: string, spaceId: string, entityType: string, entityId: string): Promise<string | undefined>;
|
|
1342
1474
|
listActionInvocations(input?: ListActionInvocationsInput): Promise<ActionInvocationRecord[]>;
|
|
1343
1475
|
getHealthCounts(input: PlatformHostHealthQuery): Promise<PlatformHostHealthCounts>;
|
|
@@ -1493,13 +1625,13 @@ interface TenantIsolationSubject<TDb = unknown> {
|
|
|
1493
1625
|
}>;
|
|
1494
1626
|
/**
|
|
1495
1627
|
* Optional: put the host and store back to a known state before a check.
|
|
1496
|
-
* The checks tolerate accumulated state, and each
|
|
1628
|
+
* The checks tolerate accumulated state, and each retires any row it
|
|
1497
1629
|
* creates directly, so this exists for subjects whose store is shared.
|
|
1498
1630
|
*/
|
|
1499
1631
|
reset?(): Promise<void> | void;
|
|
1500
1632
|
}
|
|
1501
1633
|
interface TenantIsolationCheck {
|
|
1502
|
-
id: "fabric.tenancy.invocation-scoped-read.v1" | "fabric.tenancy.idempotency-key-scoped.v1" | "fabric.tenancy.events-scoped.v1" | "fabric.tenancy.worker-claim-scoped.v1" | "fabric.tenancy.completion-scoped.v1" | "fabric.tenancy.projection-scoped.v1";
|
|
1634
|
+
id: "fabric.tenancy.invocation-scoped-read.v1" | "fabric.tenancy.idempotency-key-scoped.v1" | "fabric.tenancy.events-scoped.v1" | "fabric.tenancy.worker-claim-scoped.v1" | "fabric.tenancy.completion-scoped.v1" | "fabric.tenancy.projection-scoped.v1" | "fabric.tenancy.adapter-invocation-read-scoped.v1" | "fabric.tenancy.adapter-invocation-write-scoped.v1";
|
|
1503
1635
|
run(subject: TenantIsolationSubject): Promise<string[]>;
|
|
1504
1636
|
}
|
|
1505
1637
|
interface TenantIsolationResult {
|
|
@@ -1514,15 +1646,16 @@ interface TenantIsolationResult {
|
|
|
1514
1646
|
/**
|
|
1515
1647
|
* The suite any deployment of the host must pass before it claims isolation.
|
|
1516
1648
|
*
|
|
1517
|
-
*
|
|
1649
|
+
* Eight checks: an invocation cannot be read, executed, or completed under
|
|
1518
1650
|
* another tenant's scope; an idempotency key is a tenant's own, so the same
|
|
1519
1651
|
* key in two tenants is two invocations; a tenant's event stream carries no
|
|
1520
|
-
* other tenant's events; a worker scoped to one tenant
|
|
1521
|
-
* work;
|
|
1522
|
-
*
|
|
1652
|
+
* other tenant's events; a worker scoped to one tenant does not claim another's
|
|
1653
|
+
* work; an adapter checkpoint cannot be read or written under another tenant,
|
|
1654
|
+
* space, or owning invocation; and, when the subject lends a read, a viewer in
|
|
1655
|
+
* the other tenant sees nothing of ours.
|
|
1523
1656
|
*/
|
|
1524
1657
|
declare function tenantIsolationChecks(): readonly TenantIsolationCheck[];
|
|
1525
1658
|
/** Run every check, returning each result rather than throwing on the first. */
|
|
1526
1659
|
declare function runTenantIsolationChecks(subject: TenantIsolationSubject): Promise<TenantIsolationResult>;
|
|
1527
1660
|
|
|
1528
|
-
export { ActionAdmissionError, type ActionAdmissionRefusal, type ActionApprovalDecision, type ActionAuthorizationInput, type ActionExecutionAuthorizationInput, type ActionExecutionReason, type ActionInvocationPatch, type ActionInvocationRecord, type AdapterInvocationRecord, type AdapterInvocationStatus, type AdapterReconciliationOutcome, type ApprovalDecisionTransitionResult, type ApprovalPlatformHostStore, type AtomicMutationPlatformHostStore, type AuthorizationBinding, type AuthorizationGoverningMoment, type AuthorizationReconciliationOutcome, type BeginApprovalDecisionInput, type ClaimActionInvocationsInput, type ClaimOutboxInput, type CreateActionInvocationInput, type CreateDurableSagaParentLifecycleOptions, type DispatchActionInput, type DispatchActionResult, type EnterpriseEventActorDisclosure, type EnterpriseEventEnvelope, type EnterpriseEventPublishContext, type EnterpriseEventPublisher, type EventPayloadClassification, type ExecuteActionResult, type ExecuteInvocationOptions, type ExecutionAttestationRecord, type ExternalCompletion, ExternalCompletionError, type ExternalCompletionRefusal, type ExternalReconciliationRecord, type GovernancePlatformHostStore, type GovernedActionHost, type HitlDecisionEvidence, type HostCompensationRecord, type HostSagaParentApprovalInput, type HostSagaParentCancellationInput, type HostSagaParentCompletionInput, type HostSagaParentFailureInput, type HostSagaParentLifecycle, type HostSagaParentProgressInput, type HostSagaParentProgressRecord, type IdempotencyConflict, IdempotencyConflictError, type InvocationProvenance, type InvocationSource, type KnownActionExecutionReason, type ListActionInvocationsInput, MemoryPlatformHostStore, type MemoryPlatformHostTransactionProvider, type NamespacedAttributes, type OutboxActorDisclosure, type OutboxEventMetadata, type OutboxPlatformHostStore, type OutboxRecord, type OutboxRelayOptions, type OutboxRelayResult, type OutboxRequeueAuthorizationInput, type OutboxRequeueHost, type OutboxRequeuePlatformHostStore, type OutboxRequeueRecord, type OutboxRequeueRefusal, type OutboxStatus, PARAMETER_DIGEST_ALGORITHM, PLATFORM_HOST_CONTRACT_VERSION, PLATFORM_HOST_HEALTH_CONTRACT_VERSION, PLATFORM_HOST_METRIC_NAMES, type PendingAssetEvent, type PendingExternalCompletion, type PersistedActionApprovalDecision, type PlatformActionDispatcher, type PlatformActionWorkerCycleResult, type PlatformActionWorkerOptions, type PlatformHostAuthorization, type PlatformHostHealthCounts, type PlatformHostHealthOptions, type PlatformHostHealthQuery, type PlatformHostHealthSnapshot, type PlatformHostHealthStatus, type PlatformHostHealthStore, type PlatformHostLifecycleTelemetry, type PlatformHostMetricName, type PlatformHostMetricTelemetry, type PlatformHostMetricType, type PlatformHostMutationTransaction, type PlatformHostOptions, type PlatformHostReadinessReason, type PlatformHostSqlClient, type PlatformHostSqlResult, type PlatformHostStore, type PlatformHostTelemetry, type PlatformHostTelemetryAttribute, type PlatformHostTelemetryEventName, type PlatformHostTelemetryHook, type PlatformHostTelemetryInput, type PlatformHostTelemetryRecord, type PlatformHostWorkerHealthInput, type PolicyEvaluationRecord, type PolicyObligationRecord, type PostgresMigration, PostgresPlatformHostStore, type PostgresPlatformHostTransactionContext, type PostgresPlatformHostTransactionProvider, type ReconcileOverdueCompletionsInput, type RecordedExternalCompletion, type RecoverablePlatformHostStore, type RenewActionInvocationLeaseInput, type RequeueOutboxDeadLetterInput, type RequeueOutboxDeadLetterRefusal, type RequeueOutboxDeadLetterResult, type RequeueOutboxDeadLetterStoreInput, type RequeueOutboxDeadLetterStoreResult, type ResolvePoliciesInput, type SubmitActionInput, type SubmitActionResult, type TenantIsolationCheck, type TenantIsolationResult, type TenantIsolationScope, type TenantIsolationSubject, type UpdateLeasedActionInvocationInput, applyPostgresMigrations, cloneOutboxRecord, createDurableSagaParentLifecycle, createGovernedActionHost, createStoreBackedActionDispatcher, digestParameters, emitPlatformHostTelemetry, getPlatformHostHealthSnapshot, outboxActorDisclosure, runOutboxRelayCycle, runPlatformActionWorker, runPlatformActionWorkerCycle, runTenantIsolationChecks, tenantIsolationChecks, toEnterpriseEventEnvelope };
|
|
1661
|
+
export { ActionAdmissionError, type ActionAdmissionRefusal, type ActionApprovalDecision, type ActionAuthorizationInput, type ActionExecutionAuthorizationInput, type ActionExecutionReason, type ActionInvocationPatch, type ActionInvocationRecord, type AdapterInvocationRecord, type AdapterInvocationScope, type AdapterInvocationStatus, type AdapterReconciliationOutcome, type ApprovalDecisionTransitionResult, type ApprovalPlatformHostStore, type AtomicMutationPlatformHostStore, type AuthorizationBinding, type AuthorizationGoverningMoment, type AuthorizationReconciliationOutcome, type BeginApprovalDecisionInput, type ClaimActionInvocationsInput, type ClaimOutboxInput, type CreateActionInvocationInput, type CreateDurableSagaParentLifecycleOptions, type DispatchActionInput, type DispatchActionResult, type EnterpriseEventActorDisclosure, type EnterpriseEventEnvelope, type EnterpriseEventPublishContext, type EnterpriseEventPublisher, type ErrorTextRedactionContext, type EventPayloadClassification, type ExecuteActionResult, type ExecuteInvocationOptions, type ExecutionAttestationRecord, type ExternalCompletion, ExternalCompletionError, type ExternalCompletionRefusal, type ExternalReconciliationRecord, type GovernancePlatformHostStore, type GovernedActionHost, type HitlDecisionEvidence, type HostCompensationRecord, type HostSagaParentApprovalInput, type HostSagaParentCancellationInput, type HostSagaParentCompletionInput, type HostSagaParentFailureInput, type HostSagaParentLifecycle, type HostSagaParentProgressInput, type HostSagaParentProgressRecord, type IdempotencyConflict, IdempotencyConflictError, type InvocationProvenance, type InvocationSource, type KnownActionExecutionReason, type ListActionInvocationsInput, MemoryPlatformHostStore, type MemoryPlatformHostTransactionProvider, type NamespacedAttributes, type OutboxActorDisclosure, type OutboxEventMetadata, type OutboxPlatformHostStore, type OutboxRecord, type OutboxRelayOptions, type OutboxRelayResult, type OutboxRequeueAuthorizationInput, type OutboxRequeueHost, type OutboxRequeuePlatformHostStore, type OutboxRequeueRecord, type OutboxRequeueRefusal, type OutboxStatus, PARAMETER_DIGEST_ALGORITHM, PLATFORM_HOST_CONTRACT_VERSION, PLATFORM_HOST_HEALTH_CONTRACT_VERSION, PLATFORM_HOST_METRIC_NAMES, type PendingAssetEvent, type PendingExternalCompletion, type PersistedActionApprovalDecision, type PlatformActionDispatcher, type PlatformActionWorkerCycleResult, type PlatformActionWorkerOptions, type PlatformHostAuthorization, type PlatformHostHealthCounts, type PlatformHostHealthOptions, type PlatformHostHealthQuery, type PlatformHostHealthSnapshot, type PlatformHostHealthStatus, type PlatformHostHealthStore, type PlatformHostLifecycleTelemetry, type PlatformHostMetricName, type PlatformHostMetricTelemetry, type PlatformHostMetricType, type PlatformHostMutationTransaction, type PlatformHostOptions, type PlatformHostReadinessReason, type PlatformHostSqlClient, type PlatformHostSqlResult, type PlatformHostStore, type PlatformHostTelemetry, type PlatformHostTelemetryAttribute, type PlatformHostTelemetryEventName, type PlatformHostTelemetryHook, type PlatformHostTelemetryInput, type PlatformHostTelemetryRecord, type PlatformHostWorkerHealthInput, type PolicyEvaluationRecord, type PolicyObligationRecord, type PostgresMigration, PostgresPlatformHostStore, type PostgresPlatformHostTransactionContext, type PostgresPlatformHostTransactionProvider, type ReconcileOverdueCompletionsInput, type RecordedExternalCompletion, type RecoverablePlatformHostStore, type RenewActionInvocationLeaseInput, type RequeueOutboxDeadLetterInput, type RequeueOutboxDeadLetterRefusal, type RequeueOutboxDeadLetterResult, type RequeueOutboxDeadLetterStoreInput, type RequeueOutboxDeadLetterStoreResult, type ResolvePoliciesInput, type SubmitActionInput, type SubmitActionResult, type TenantIsolationCheck, type TenantIsolationResult, type TenantIsolationScope, type TenantIsolationSubject, type UpdateLeasedActionInvocationInput, applyPostgresMigrations, cloneOutboxRecord, createDurableSagaParentLifecycle, createGovernedActionHost, createStoreBackedActionDispatcher, digestParameters, emitPlatformHostTelemetry, getPlatformHostHealthSnapshot, outboxActorDisclosure, runOutboxRelayCycle, runPlatformActionWorker, runPlatformActionWorkerCycle, runTenantIsolationChecks, tenantIsolationChecks, toEnterpriseEventEnvelope };
|