@trustloopguard/sdk 0.0.1
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/dist/client.d.ts +98 -0
- package/dist/client.js +198 -0
- package/dist/errors.d.ts +46 -0
- package/dist/errors.js +187 -0
- package/dist/generated/AgentAuthority.d.ts +4 -0
- package/dist/generated/AgentAuthority.js +2 -0
- package/dist/generated/AgentListResponse.d.ts +4 -0
- package/dist/generated/AgentListResponse.js +1 -0
- package/dist/generated/AgentProfile.d.ts +29 -0
- package/dist/generated/AgentProfile.js +1 -0
- package/dist/generated/AgentScope.d.ts +4 -0
- package/dist/generated/AgentScope.js +2 -0
- package/dist/generated/AgentTone.d.ts +4 -0
- package/dist/generated/AgentTone.js +2 -0
- package/dist/generated/ApiError.d.ts +25 -0
- package/dist/generated/ApiError.js +1 -0
- package/dist/generated/ApiErrorCode.d.ts +6 -0
- package/dist/generated/ApiErrorCode.js +2 -0
- package/dist/generated/ApiKeyBatchRevokeRequest.d.ts +3 -0
- package/dist/generated/ApiKeyBatchRevokeRequest.js +2 -0
- package/dist/generated/ApiKeyBatchRevokeResponse.d.ts +4 -0
- package/dist/generated/ApiKeyBatchRevokeResponse.js +1 -0
- package/dist/generated/ApiKeyListResponse.d.ts +4 -0
- package/dist/generated/ApiKeyListResponse.js +1 -0
- package/dist/generated/AuthRequest.d.ts +15 -0
- package/dist/generated/AuthRequest.js +2 -0
- package/dist/generated/AuthResponse.d.ts +16 -0
- package/dist/generated/AuthResponse.js +2 -0
- package/dist/generated/ChangePasswordRequest.d.ts +15 -0
- package/dist/generated/ChangePasswordRequest.js +2 -0
- package/dist/generated/Channel.d.ts +8 -0
- package/dist/generated/Channel.js +2 -0
- package/dist/generated/CheckRequest.d.ts +21 -0
- package/dist/generated/CheckRequest.js +1 -0
- package/dist/generated/CreateApiKeyRequest.d.ts +3 -0
- package/dist/generated/CreateApiKeyRequest.js +2 -0
- package/dist/generated/CreateApiKeyResponse.d.ts +8 -0
- package/dist/generated/CreateApiKeyResponse.js +1 -0
- package/dist/generated/CreateInviteRequest.d.ts +8 -0
- package/dist/generated/CreateInviteRequest.js +1 -0
- package/dist/generated/CreateInviteResponse.d.ts +18 -0
- package/dist/generated/CreateInviteResponse.js +1 -0
- package/dist/generated/CreateKnowledgeSourceRequest.d.ts +9 -0
- package/dist/generated/CreateKnowledgeSourceRequest.js +1 -0
- package/dist/generated/CreateRunEventRequest.d.ts +13 -0
- package/dist/generated/CreateRunEventRequest.js +1 -0
- package/dist/generated/CreateRunRequest.d.ts +9 -0
- package/dist/generated/CreateRunRequest.js +1 -0
- package/dist/generated/CreateWorkspaceRequest.d.ts +7 -0
- package/dist/generated/CreateWorkspaceRequest.js +2 -0
- package/dist/generated/DashboardApiKey.d.ts +15 -0
- package/dist/generated/DashboardApiKey.js +2 -0
- package/dist/generated/DashboardKnowledgeSourceKind.d.ts +1 -0
- package/dist/generated/DashboardKnowledgeSourceKind.js +2 -0
- package/dist/generated/Decision.d.ts +17 -0
- package/dist/generated/Decision.js +1 -0
- package/dist/generated/GuardrailGenerateResponse.d.ts +11 -0
- package/dist/generated/GuardrailGenerateResponse.js +1 -0
- package/dist/generated/GuardrailListResponse.d.ts +7 -0
- package/dist/generated/GuardrailListResponse.js +1 -0
- package/dist/generated/InviteListResponse.d.ts +4 -0
- package/dist/generated/InviteListResponse.js +1 -0
- package/dist/generated/InviteStatus.d.ts +4 -0
- package/dist/generated/InviteStatus.js +2 -0
- package/dist/generated/KnowledgeFileInput.d.ts +5 -0
- package/dist/generated/KnowledgeFileInput.js +2 -0
- package/dist/generated/KnowledgeFileMetadata.d.ts +6 -0
- package/dist/generated/KnowledgeFileMetadata.js +2 -0
- package/dist/generated/KnowledgeSource.d.ts +7 -0
- package/dist/generated/KnowledgeSource.js +1 -0
- package/dist/generated/KnowledgeSourceDocument.d.ts +22 -0
- package/dist/generated/KnowledgeSourceDocument.js +1 -0
- package/dist/generated/KnowledgeSourceFileResponse.d.ts +6 -0
- package/dist/generated/KnowledgeSourceFileResponse.js +2 -0
- package/dist/generated/KnowledgeSourceKind.d.ts +1 -0
- package/dist/generated/KnowledgeSourceKind.js +2 -0
- package/dist/generated/KnowledgeSourceListResponse.d.ts +4 -0
- package/dist/generated/KnowledgeSourceListResponse.js +1 -0
- package/dist/generated/KnowledgeSourceStatus.d.ts +1 -0
- package/dist/generated/KnowledgeSourceStatus.js +2 -0
- package/dist/generated/MemberListResponse.d.ts +4 -0
- package/dist/generated/MemberListResponse.js +1 -0
- package/dist/generated/MyWorkspace.d.ts +12 -0
- package/dist/generated/MyWorkspace.js +1 -0
- package/dist/generated/MyWorkspacesResponse.d.ts +4 -0
- package/dist/generated/MyWorkspacesResponse.js +1 -0
- package/dist/generated/PolicyAction.d.ts +4 -0
- package/dist/generated/PolicyAction.js +2 -0
- package/dist/generated/PolicyBatchSetEnabledRequest.d.ts +4 -0
- package/dist/generated/PolicyBatchSetEnabledRequest.js +2 -0
- package/dist/generated/PolicyBatchSetEnabledResponse.d.ts +4 -0
- package/dist/generated/PolicyBatchSetEnabledResponse.js +1 -0
- package/dist/generated/PolicyDocument.d.ts +8 -0
- package/dist/generated/PolicyDocument.js +1 -0
- package/dist/generated/PolicyDraft.d.ts +17 -0
- package/dist/generated/PolicyDraft.js +1 -0
- package/dist/generated/PolicyDraftRequest.d.ts +6 -0
- package/dist/generated/PolicyDraftRequest.js +2 -0
- package/dist/generated/PolicyDraftResponse.d.ts +4 -0
- package/dist/generated/PolicyDraftResponse.js +1 -0
- package/dist/generated/PolicyListResponse.d.ts +4 -0
- package/dist/generated/PolicyListResponse.js +1 -0
- package/dist/generated/PolicyMatchType.d.ts +5 -0
- package/dist/generated/PolicyMatchType.js +2 -0
- package/dist/generated/PolicySetEnabledRequest.d.ts +3 -0
- package/dist/generated/PolicySetEnabledRequest.js +2 -0
- package/dist/generated/PolicySummary.d.ts +9 -0
- package/dist/generated/PolicySummary.js +1 -0
- package/dist/generated/PolicyValidateResponse.d.ts +6 -0
- package/dist/generated/PolicyValidateResponse.js +1 -0
- package/dist/generated/PolicyValidationIssue.d.ts +4 -0
- package/dist/generated/PolicyValidationIssue.js +2 -0
- package/dist/generated/RunDetail.d.ts +8 -0
- package/dist/generated/RunDetail.js +1 -0
- package/dist/generated/RunEventKind.d.ts +1 -0
- package/dist/generated/RunEventKind.js +2 -0
- package/dist/generated/RunEventListResponse.d.ts +4 -0
- package/dist/generated/RunEventListResponse.js +1 -0
- package/dist/generated/RunEventSummary.d.ts +20 -0
- package/dist/generated/RunEventSummary.js +1 -0
- package/dist/generated/RunKind.d.ts +1 -0
- package/dist/generated/RunKind.js +2 -0
- package/dist/generated/RunListResponse.d.ts +4 -0
- package/dist/generated/RunListResponse.js +1 -0
- package/dist/generated/RunStatus.d.ts +1 -0
- package/dist/generated/RunStatus.js +2 -0
- package/dist/generated/RunSummary.d.ts +32 -0
- package/dist/generated/RunSummary.js +1 -0
- package/dist/generated/Severity.d.ts +1 -0
- package/dist/generated/Severity.js +2 -0
- package/dist/generated/Tier.d.ts +4 -0
- package/dist/generated/Tier.js +2 -0
- package/dist/generated/TierResult.d.ts +12 -0
- package/dist/generated/TierResult.js +1 -0
- package/dist/generated/TierStatus.d.ts +4 -0
- package/dist/generated/TierStatus.js +2 -0
- package/dist/generated/TraceListResponse.d.ts +4 -0
- package/dist/generated/TraceListResponse.js +1 -0
- package/dist/generated/TraceSummary.d.ts +13 -0
- package/dist/generated/TraceSummary.js +2 -0
- package/dist/generated/TriggeredPolicy.d.ts +6 -0
- package/dist/generated/TriggeredPolicy.js +1 -0
- package/dist/generated/UpdateRunRequest.d.ts +10 -0
- package/dist/generated/UpdateRunRequest.js +1 -0
- package/dist/generated/Verdict.d.ts +4 -0
- package/dist/generated/Verdict.js +2 -0
- package/dist/generated/WorkspaceInvite.d.ts +20 -0
- package/dist/generated/WorkspaceInvite.js +1 -0
- package/dist/generated/WorkspaceMember.d.ts +13 -0
- package/dist/generated/WorkspaceMember.js +1 -0
- package/dist/generated/WorkspaceRole.d.ts +5 -0
- package/dist/generated/WorkspaceRole.js +2 -0
- package/dist/generated/WorkspaceSettings.d.ts +11 -0
- package/dist/generated/WorkspaceSettings.js +2 -0
- package/dist/guard.d.ts +193 -0
- package/dist/guard.js +211 -0
- package/dist/index.d.ts +64 -0
- package/dist/index.js +64 -0
- package/dist/retry.d.ts +18 -0
- package/dist/retry.js +48 -0
- package/package.json +39 -0
- package/src/client.ts +453 -0
- package/src/errors.ts +202 -0
- package/src/generated/AgentAuthority.ts +3 -0
- package/src/generated/AgentListResponse.ts +4 -0
- package/src/generated/AgentProfile.ts +23 -0
- package/src/generated/AgentScope.ts +3 -0
- package/src/generated/AgentTone.ts +3 -0
- package/src/generated/ApiError.ts +24 -0
- package/src/generated/ApiErrorCode.ts +8 -0
- package/src/generated/ApiKeyBatchRevokeRequest.ts +3 -0
- package/src/generated/ApiKeyBatchRevokeResponse.ts +4 -0
- package/src/generated/ApiKeyListResponse.ts +4 -0
- package/src/generated/AuthRequest.ts +16 -0
- package/src/generated/AuthResponse.ts +15 -0
- package/src/generated/ChangePasswordRequest.ts +15 -0
- package/src/generated/Channel.ts +10 -0
- package/src/generated/CheckRequest.ts +11 -0
- package/src/generated/CreateApiKeyRequest.ts +3 -0
- package/src/generated/CreateApiKeyResponse.ts +8 -0
- package/src/generated/CreateInviteRequest.ts +7 -0
- package/src/generated/CreateInviteResponse.ts +14 -0
- package/src/generated/CreateKnowledgeSourceRequest.ts +5 -0
- package/src/generated/CreateRunEventRequest.ts +8 -0
- package/src/generated/CreateRunRequest.ts +5 -0
- package/src/generated/CreateWorkspaceRequest.ts +7 -0
- package/src/generated/DashboardApiKey.ts +11 -0
- package/src/generated/DashboardKnowledgeSourceKind.ts +3 -0
- package/src/generated/Decision.ts +12 -0
- package/src/generated/GuardrailGenerateResponse.ts +11 -0
- package/src/generated/GuardrailListResponse.ts +7 -0
- package/src/generated/InviteListResponse.ts +4 -0
- package/src/generated/InviteStatus.ts +6 -0
- package/src/generated/KnowledgeFileInput.ts +3 -0
- package/src/generated/KnowledgeFileMetadata.ts +3 -0
- package/src/generated/KnowledgeSource.ts +4 -0
- package/src/generated/KnowledgeSourceDocument.ts +17 -0
- package/src/generated/KnowledgeSourceFileResponse.ts +3 -0
- package/src/generated/KnowledgeSourceKind.ts +3 -0
- package/src/generated/KnowledgeSourceListResponse.ts +4 -0
- package/src/generated/KnowledgeSourceStatus.ts +3 -0
- package/src/generated/MemberListResponse.ts +4 -0
- package/src/generated/MyWorkspace.ts +8 -0
- package/src/generated/MyWorkspacesResponse.ts +4 -0
- package/src/generated/PolicyAction.ts +6 -0
- package/src/generated/PolicyBatchSetEnabledRequest.ts +3 -0
- package/src/generated/PolicyBatchSetEnabledResponse.ts +4 -0
- package/src/generated/PolicyDocument.ts +4 -0
- package/src/generated/PolicyDraft.ts +11 -0
- package/src/generated/PolicyDraftRequest.ts +6 -0
- package/src/generated/PolicyDraftResponse.ts +4 -0
- package/src/generated/PolicyListResponse.ts +4 -0
- package/src/generated/PolicyMatchType.ts +7 -0
- package/src/generated/PolicySetEnabledRequest.ts +3 -0
- package/src/generated/PolicySummary.ts +4 -0
- package/src/generated/PolicyValidateResponse.ts +4 -0
- package/src/generated/PolicyValidationIssue.ts +3 -0
- package/src/generated/README.md +1 -0
- package/src/generated/RunDetail.ts +6 -0
- package/src/generated/RunEventKind.ts +3 -0
- package/src/generated/RunEventListResponse.ts +4 -0
- package/src/generated/RunEventSummary.ts +12 -0
- package/src/generated/RunKind.ts +3 -0
- package/src/generated/RunListResponse.ts +4 -0
- package/src/generated/RunStatus.ts +3 -0
- package/src/generated/RunSummary.ts +21 -0
- package/src/generated/Severity.ts +3 -0
- package/src/generated/Tier.ts +6 -0
- package/src/generated/TierResult.ts +9 -0
- package/src/generated/TierStatus.ts +6 -0
- package/src/generated/TraceListResponse.ts +4 -0
- package/src/generated/TraceSummary.ts +7 -0
- package/src/generated/TriggeredPolicy.ts +4 -0
- package/src/generated/UpdateRunRequest.ts +9 -0
- package/src/generated/Verdict.ts +6 -0
- package/src/generated/WorkspaceInvite.ts +14 -0
- package/src/generated/WorkspaceMember.ts +11 -0
- package/src/generated/WorkspaceRole.ts +7 -0
- package/src/generated/WorkspaceSettings.ts +7 -0
- package/src/guard.ts +492 -0
- package/src/index.ts +97 -0
- package/src/retry.ts +67 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type RunEventKind = "user_turn" | "assistant_turn" | "tool_call" | "workflow_step" | "interruption" | "retry" | "system_event" | "other";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { RunEventKind } from "./RunEventKind";
|
|
2
|
+
export type RunEventSummary = {
|
|
3
|
+
id: string;
|
|
4
|
+
workspace_id: string;
|
|
5
|
+
run_id: string;
|
|
6
|
+
sequence: number;
|
|
7
|
+
kind: RunEventKind;
|
|
8
|
+
label: string | null;
|
|
9
|
+
input_summary: string | null;
|
|
10
|
+
output_summary: string | null;
|
|
11
|
+
metadata: Record<string, unknown>;
|
|
12
|
+
/**
|
|
13
|
+
* RFC 3339 timestamp.
|
|
14
|
+
*/
|
|
15
|
+
occurred_at: string;
|
|
16
|
+
/**
|
|
17
|
+
* RFC 3339 timestamp.
|
|
18
|
+
*/
|
|
19
|
+
created_at: string;
|
|
20
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type RunKind = "chat_session" | "live_call" | "workflow" | "job" | "other";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type RunStatus = "warming" | "running" | "completed" | "failed" | "canceled";
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { RunKind } from "./RunKind";
|
|
2
|
+
import type { RunStatus } from "./RunStatus";
|
|
3
|
+
export type RunSummary = {
|
|
4
|
+
id: string;
|
|
5
|
+
workspace_id: string;
|
|
6
|
+
agent_id: string;
|
|
7
|
+
kind: RunKind;
|
|
8
|
+
status: RunStatus;
|
|
9
|
+
external_id: string | null;
|
|
10
|
+
metadata: Record<string, unknown>;
|
|
11
|
+
/**
|
|
12
|
+
* RFC 3339 timestamp.
|
|
13
|
+
*/
|
|
14
|
+
started_at: string;
|
|
15
|
+
/**
|
|
16
|
+
* RFC 3339 timestamp.
|
|
17
|
+
*/
|
|
18
|
+
ended_at: string | null;
|
|
19
|
+
/**
|
|
20
|
+
* RFC 3339 timestamp.
|
|
21
|
+
*/
|
|
22
|
+
created_at: string;
|
|
23
|
+
/**
|
|
24
|
+
* RFC 3339 timestamp.
|
|
25
|
+
*/
|
|
26
|
+
updated_at: string;
|
|
27
|
+
trace_count: number;
|
|
28
|
+
blocked_count: number;
|
|
29
|
+
rewritten_count: number;
|
|
30
|
+
escalated_count: number;
|
|
31
|
+
p95_latency_ms: number | null;
|
|
32
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type Severity = "low" | "medium" | "high" | "critical";
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Tier } from "./Tier";
|
|
2
|
+
import type { TierStatus } from "./TierStatus";
|
|
3
|
+
import type { TriggeredPolicy } from "./TriggeredPolicy";
|
|
4
|
+
/**
|
|
5
|
+
* One row of evidence per tier in the final `Decision`.
|
|
6
|
+
*/
|
|
7
|
+
export type TierResult = {
|
|
8
|
+
tier: Tier;
|
|
9
|
+
status: TierStatus;
|
|
10
|
+
reasons: Array<TriggeredPolicy>;
|
|
11
|
+
elapsed_ms: bigint;
|
|
12
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export type TraceSummary = {
|
|
2
|
+
trace_id: string;
|
|
3
|
+
run_id: string | null;
|
|
4
|
+
run_event_id: string | null;
|
|
5
|
+
domain: string;
|
|
6
|
+
decision: string;
|
|
7
|
+
elapsed_ms: number;
|
|
8
|
+
payload: Record<string, unknown>;
|
|
9
|
+
/**
|
|
10
|
+
* RFC 3339 timestamp.
|
|
11
|
+
*/
|
|
12
|
+
created_at: string;
|
|
13
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { RunStatus } from "./RunStatus";
|
|
2
|
+
export type UpdateRunRequest = {
|
|
3
|
+
status?: RunStatus;
|
|
4
|
+
metadata?: Record<string, unknown> | null;
|
|
5
|
+
/**
|
|
6
|
+
* RFC 3339 timestamp. Defaults to now when completing/failing/canceling
|
|
7
|
+
* a run without an explicit timestamp.
|
|
8
|
+
*/
|
|
9
|
+
ended_at?: string;
|
|
10
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { InviteStatus } from "./InviteStatus";
|
|
2
|
+
import type { WorkspaceRole } from "./WorkspaceRole";
|
|
3
|
+
/**
|
|
4
|
+
* A pending or historical invite. The `id` doubles as the bearer
|
|
5
|
+
* token: it's an opaque URL-safe random string, single-use, and
|
|
6
|
+
* invalidated on accept/revoke/expire.
|
|
7
|
+
*/
|
|
8
|
+
export type WorkspaceInvite = {
|
|
9
|
+
id: string;
|
|
10
|
+
workspace_id: string;
|
|
11
|
+
email: string;
|
|
12
|
+
role: WorkspaceRole;
|
|
13
|
+
status: InviteStatus;
|
|
14
|
+
invited_by_user_id: string | null;
|
|
15
|
+
/**
|
|
16
|
+
* RFC3339 timestamps.
|
|
17
|
+
*/
|
|
18
|
+
created_at: string;
|
|
19
|
+
expires_at: string;
|
|
20
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { WorkspaceRole } from "./WorkspaceRole";
|
|
2
|
+
/**
|
|
3
|
+
* A user who currently has access to a workspace.
|
|
4
|
+
*/
|
|
5
|
+
export type WorkspaceMember = {
|
|
6
|
+
user_id: string;
|
|
7
|
+
username: string;
|
|
8
|
+
role: WorkspaceRole;
|
|
9
|
+
/**
|
|
10
|
+
* RFC3339 timestamp.
|
|
11
|
+
*/
|
|
12
|
+
joined_at: string;
|
|
13
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export type WorkspaceSettings = {
|
|
2
|
+
default_action: string;
|
|
3
|
+
escalation_webhook_url: string | null;
|
|
4
|
+
telemetry_enabled: boolean;
|
|
5
|
+
retention_days: string;
|
|
6
|
+
config: Record<string, unknown>;
|
|
7
|
+
/**
|
|
8
|
+
* RFC 3339 timestamp.
|
|
9
|
+
*/
|
|
10
|
+
updated_at: string | null;
|
|
11
|
+
};
|
package/dist/guard.d.ts
ADDED
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
import { Client, type ClientOptions } from './client';
|
|
2
|
+
import type { Channel } from './generated/Channel';
|
|
3
|
+
import type { CreateRunEventRequest } from './generated/CreateRunEventRequest';
|
|
4
|
+
import type { Decision } from './generated/Decision';
|
|
5
|
+
import { SdkError } from './errors';
|
|
6
|
+
type DecisionHandler = string | ((decision: Decision) => string | Promise<string>);
|
|
7
|
+
type ErrorHandler = string | ((err: SdkError, draft: string) => string | Promise<string>);
|
|
8
|
+
export declare const GuardMode: {
|
|
9
|
+
readonly Strict: "strict";
|
|
10
|
+
readonly Rewrite: "rewrite";
|
|
11
|
+
readonly RewriteOrRegenerate: "rewrite_or_regenerate";
|
|
12
|
+
};
|
|
13
|
+
export type GuardMode = (typeof GuardMode)[keyof typeof GuardMode];
|
|
14
|
+
export interface RegenerateFeedback {
|
|
15
|
+
/** What the user said. */
|
|
16
|
+
input: string;
|
|
17
|
+
/** The draft that failed the guard check. */
|
|
18
|
+
draft: string;
|
|
19
|
+
/** Full TrustLoopGuard decision for the failed draft. */
|
|
20
|
+
decision: Decision;
|
|
21
|
+
/** Human-readable reason returned by TrustLoopGuard. */
|
|
22
|
+
reason: string;
|
|
23
|
+
/** Safe output returned by TrustLoopGuard, when available. */
|
|
24
|
+
safeOutput: string | null;
|
|
25
|
+
/** 1-based regeneration attempt number. */
|
|
26
|
+
attempt: number;
|
|
27
|
+
/** Maximum allowed regeneration attempts. */
|
|
28
|
+
maxAttempts: number;
|
|
29
|
+
}
|
|
30
|
+
type RegenerateHandler = (feedback: RegenerateFeedback) => string | Promise<string>;
|
|
31
|
+
export interface GuardCallbacks {
|
|
32
|
+
/**
|
|
33
|
+
* Called when the verdict is `allow`. Default: return the original
|
|
34
|
+
* draft unchanged. Override only if you want to log the allow path
|
|
35
|
+
* or strip a draft suffix etc.
|
|
36
|
+
*/
|
|
37
|
+
onAllow?: (draft: string, decision: Decision) => string | Promise<string>;
|
|
38
|
+
/**
|
|
39
|
+
* Called when the verdict is `rewrite`. Default: return
|
|
40
|
+
* `decision.safe_output ?? draft`. Override to post-process or
|
|
41
|
+
* substitute your own canned rewrite.
|
|
42
|
+
*/
|
|
43
|
+
onRevise?: (revised: string | null, draft: string, decision: Decision) => string | Promise<string>;
|
|
44
|
+
/**
|
|
45
|
+
* Called when the verdict is `block`. **Required** — there is no
|
|
46
|
+
* sensible automatic answer. Return the canned safe message your
|
|
47
|
+
* brand wants the customer to see (or throw to abort the send).
|
|
48
|
+
*/
|
|
49
|
+
onBlock: (decision: Decision) => string | Promise<string>;
|
|
50
|
+
/**
|
|
51
|
+
* Called when the verdict is `escalate`. **Required** — typically
|
|
52
|
+
* pushes onto a human-review queue and returns a holding message.
|
|
53
|
+
*/
|
|
54
|
+
onEscalate: (decision: Decision) => string | Promise<string>;
|
|
55
|
+
/**
|
|
56
|
+
* Called when the SDK transport itself fails (network down, server
|
|
57
|
+
* 5xx, decode error, retries exhausted). Default: **fail-open** —
|
|
58
|
+
* return the original draft. Pass an explicit handler if you'd
|
|
59
|
+
* rather fail-closed (e.g. `() => cannedSafeReply`).
|
|
60
|
+
*/
|
|
61
|
+
onError?: (err: SdkError, draft: string) => string | Promise<string>;
|
|
62
|
+
}
|
|
63
|
+
export interface GuardOptions extends GuardCallbacks {
|
|
64
|
+
client: Client;
|
|
65
|
+
/** What the user said. */
|
|
66
|
+
input: string;
|
|
67
|
+
/** What the agent wants to send. The string returned by `guard` is
|
|
68
|
+
* what the caller should actually deliver. */
|
|
69
|
+
draft: string;
|
|
70
|
+
/** Conversation channel — drives latency budget on the server. */
|
|
71
|
+
channel?: Channel;
|
|
72
|
+
/** Required: the registered agent profile id. */
|
|
73
|
+
agentId: string;
|
|
74
|
+
/**
|
|
75
|
+
* Optional structured context — typically `{ docs: [...] }` for
|
|
76
|
+
* grounding the LLM judges. Anything JSON-serialisable.
|
|
77
|
+
*/
|
|
78
|
+
context?: Record<string, unknown>;
|
|
79
|
+
/**
|
|
80
|
+
* Optional override for `domain` (defaults to the server's
|
|
81
|
+
* `customer_support` dispatcher).
|
|
82
|
+
*/
|
|
83
|
+
domain?: string;
|
|
84
|
+
/** Optional caller-supplied trace id — overrides the server-assigned one. */
|
|
85
|
+
traceId?: string;
|
|
86
|
+
/** Optional run id used to group this check in the dashboard. */
|
|
87
|
+
runId?: string;
|
|
88
|
+
/** Optional existing run event id to attach to this check. Requires runId. */
|
|
89
|
+
runEventId?: string;
|
|
90
|
+
/** Optional inline run event to create and attach to this check. Requires runId. */
|
|
91
|
+
runEvent?: CreateRunEventRequest;
|
|
92
|
+
/**
|
|
93
|
+
* Logger hook. If provided, gets one structured event per `guard`
|
|
94
|
+
* invocation: { trace_id, verdict, branch, latency_ms }. Useful for
|
|
95
|
+
* surfacing which branch fired without forcing a specific logger
|
|
96
|
+
* dependency.
|
|
97
|
+
*/
|
|
98
|
+
log?: (event: GuardLogEvent) => void;
|
|
99
|
+
/** Optional cancellation. Forwarded to the underlying check call. */
|
|
100
|
+
signal?: AbortSignal;
|
|
101
|
+
}
|
|
102
|
+
export interface GuardFactoryOptions {
|
|
103
|
+
/** Required: the registered agent profile id. */
|
|
104
|
+
agentId: string;
|
|
105
|
+
/** Existing client. Pass this when you want to own transport lifecycle/config. */
|
|
106
|
+
client?: Client;
|
|
107
|
+
/** TrustLoopGuard server URL. Defaults to env or localhost. */
|
|
108
|
+
baseUrl?: string;
|
|
109
|
+
/** Bearer token. Defaults to env when available. */
|
|
110
|
+
apiKey?: string;
|
|
111
|
+
/** Retry policy forwarded when the factory owns the Client. */
|
|
112
|
+
retry?: ClientOptions['retry'];
|
|
113
|
+
/** Fetch implementation forwarded when the factory owns the Client. */
|
|
114
|
+
fetchImpl?: ClientOptions['fetchImpl'];
|
|
115
|
+
/** Retry logger forwarded when the factory owns the Client. */
|
|
116
|
+
onRetry?: ClientOptions['onRetry'];
|
|
117
|
+
/** Conversation channel — drives latency budget on the server. */
|
|
118
|
+
channel?: Channel;
|
|
119
|
+
/** Optional override for `domain`. */
|
|
120
|
+
domain?: string;
|
|
121
|
+
/** Structured context merged into every call. */
|
|
122
|
+
context?: Record<string, unknown>;
|
|
123
|
+
/** Default block branch. Omit for the SDK safe message. */
|
|
124
|
+
onBlock?: DecisionHandler;
|
|
125
|
+
/** Default escalation branch. Omit for the SDK safe message. */
|
|
126
|
+
onEscalate?: DecisionHandler;
|
|
127
|
+
/** Transport failure branch. Omit for fail-open. */
|
|
128
|
+
onError?: ErrorHandler;
|
|
129
|
+
/**
|
|
130
|
+
* Output mode:
|
|
131
|
+
* - strict: treat rewrite verdicts as blocked output
|
|
132
|
+
* - rewrite: use safeOutput, block when no safeOutput exists
|
|
133
|
+
* - rewrite_or_regenerate: use safeOutput, otherwise ask the model to try again
|
|
134
|
+
*/
|
|
135
|
+
mode?: GuardMode;
|
|
136
|
+
/** Called by rewrite_or_regenerate when TrustLoopGuard has no safeOutput. */
|
|
137
|
+
regenerate?: RegenerateHandler;
|
|
138
|
+
/** Hard cap for model regeneration loops. Defaults to 1. */
|
|
139
|
+
maxRegenerations?: number;
|
|
140
|
+
/** Return the default block message on transport errors when no onError is set. */
|
|
141
|
+
failClosed?: boolean;
|
|
142
|
+
/** Logger hook for every guard invocation. */
|
|
143
|
+
log?: (event: GuardLogEvent) => void;
|
|
144
|
+
}
|
|
145
|
+
export interface GuardCallOptions {
|
|
146
|
+
/** What the user said. */
|
|
147
|
+
input: string;
|
|
148
|
+
/** What the agent wants to send. */
|
|
149
|
+
draft: string;
|
|
150
|
+
channel?: Channel;
|
|
151
|
+
domain?: string;
|
|
152
|
+
context?: Record<string, unknown>;
|
|
153
|
+
traceId?: string;
|
|
154
|
+
runId?: string;
|
|
155
|
+
runEventId?: string;
|
|
156
|
+
runEvent?: CreateRunEventRequest;
|
|
157
|
+
onBlock?: DecisionHandler;
|
|
158
|
+
onEscalate?: DecisionHandler;
|
|
159
|
+
onError?: ErrorHandler;
|
|
160
|
+
mode?: GuardMode;
|
|
161
|
+
regenerate?: RegenerateHandler;
|
|
162
|
+
maxRegenerations?: number;
|
|
163
|
+
log?: (event: GuardLogEvent) => void;
|
|
164
|
+
signal?: AbortSignal;
|
|
165
|
+
}
|
|
166
|
+
export interface OutputGuard {
|
|
167
|
+
(opts: GuardCallOptions): Promise<string>;
|
|
168
|
+
}
|
|
169
|
+
export interface GuardLogEvent {
|
|
170
|
+
trace_id: string;
|
|
171
|
+
verdict: Decision['verdict'];
|
|
172
|
+
/** Which callback we ended up calling. */
|
|
173
|
+
branch: 'allow' | 'revise' | 'block' | 'escalate' | 'error';
|
|
174
|
+
latency_ms: number;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Run the SDK's check + dispatch the appropriate callback. Returns the
|
|
178
|
+
* string the caller should actually send to the customer.
|
|
179
|
+
*
|
|
180
|
+
* Verdicts map 1:1 to callbacks:
|
|
181
|
+
*
|
|
182
|
+
* allow → onAllow (default: return draft as-is)
|
|
183
|
+
* rewrite → onRevise (default: return decision.safe_output ?? draft)
|
|
184
|
+
* block → onBlock (required)
|
|
185
|
+
* escalate → onEscalate (required)
|
|
186
|
+
*
|
|
187
|
+
* Transport / decode / retry-exhausted errors go to `onError`. Default
|
|
188
|
+
* is **fail-open** — return the original draft. Pass an explicit
|
|
189
|
+
* `onError` if your domain prefers fail-closed.
|
|
190
|
+
*/
|
|
191
|
+
export declare function guard(opts: GuardFactoryOptions): OutputGuard;
|
|
192
|
+
export declare function guard(opts: GuardOptions): Promise<string>;
|
|
193
|
+
export {};
|