@lucern/sdk 0.2.0-alpha.7 → 0.2.0-alpha.8
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/adminClient.d.ts +409 -0
- package/dist/adminClient.js +755 -0
- package/dist/adminClient.js.map +1 -0
- package/dist/answersClient.d.ts +23 -0
- package/dist/answersClient.js +333 -0
- package/dist/answersClient.js.map +1 -0
- package/dist/audiencesClient.d.ts +99 -0
- package/dist/audiencesClient.js +472 -0
- package/dist/audiencesClient.js.map +1 -0
- package/dist/auditClient.d.ts +29 -0
- package/dist/auditClient.js +386 -0
- package/dist/auditClient.js.map +1 -0
- package/dist/beliefsClient.d.ts +162 -0
- package/dist/beliefsClient.js +477 -0
- package/dist/beliefsClient.js.map +1 -0
- package/dist/client.d.ts +2378 -0
- package/dist/client.js +6134 -0
- package/dist/client.js.map +1 -0
- package/dist/contextClient.d.ts +27 -0
- package/dist/contextClient.js +396 -0
- package/dist/contextClient.js.map +1 -0
- package/dist/contextFacade.d.ts +2 -0
- package/dist/contextFacade.js +73 -0
- package/dist/contextFacade.js.map +1 -0
- package/dist/contextPackCompiler.d.ts +102 -0
- package/dist/contextPackCompiler.js +1091 -0
- package/dist/contextPackCompiler.js.map +1 -0
- package/dist/contextPackPolicy.d.ts +84 -0
- package/dist/contextPackPolicy.js +347 -0
- package/dist/contextPackPolicy.js.map +1 -0
- package/dist/contextPackSchema.d.ts +7 -0
- package/{src/contextPackSchema.ts → dist/contextPackSchema.js} +22 -70
- package/dist/contextPackSchema.js.map +1 -0
- package/dist/contextTypes.d.ts +135 -0
- package/dist/contextTypes.js +3 -0
- package/dist/contextTypes.js.map +1 -0
- package/dist/contracts/api-enums.contract.d.ts +81 -0
- package/dist/contracts/api-enums.contract.js +92 -0
- package/dist/contracts/api-enums.contract.js.map +1 -0
- package/dist/contracts/auth-session.contract.d.ts +55 -0
- package/dist/contracts/auth-session.contract.js +48 -0
- package/dist/contracts/auth-session.contract.js.map +1 -0
- package/dist/contracts/context-pack.contract.d.ts +492 -0
- package/dist/contracts/context-pack.contract.js +98 -0
- package/dist/contracts/context-pack.contract.js.map +1 -0
- package/dist/contracts/contextPack.d.ts +1 -0
- package/dist/contracts/contextPack.js +98 -0
- package/dist/contracts/contextPack.js.map +1 -0
- package/dist/contracts/index.d.ts +9 -0
- package/dist/contracts/index.js +4892 -0
- package/dist/contracts/index.js.map +1 -0
- package/dist/contracts/lens-filter.contract.d.ts +72 -0
- package/dist/contracts/lens-filter.contract.js +71 -0
- package/dist/contracts/lens-filter.contract.js.map +1 -0
- package/dist/contracts/lens-workflow.contract.d.ts +87 -0
- package/dist/contracts/lens-workflow.contract.js +123 -0
- package/dist/contracts/lens-workflow.contract.js.map +1 -0
- package/dist/contracts/lensFilter.d.ts +1 -0
- package/dist/contracts/lensFilter.js +71 -0
- package/dist/contracts/lensFilter.js.map +1 -0
- package/dist/contracts/lensWorkflow.d.ts +2 -0
- package/dist/contracts/lensWorkflow.js +123 -0
- package/dist/contracts/lensWorkflow.js.map +1 -0
- package/dist/contracts/mcp-tools.contract.d.ts +1 -0
- package/dist/contracts/mcp-tools.contract.js +2986 -0
- package/dist/contracts/mcp-tools.contract.js.map +1 -0
- package/dist/contracts/mcpTools.d.ts +1 -0
- package/dist/contracts/mcpTools.js +2986 -0
- package/dist/contracts/mcpTools.js.map +1 -0
- package/dist/contracts/prompt.contract.d.ts +26 -0
- package/dist/contracts/prompt.contract.js +12 -0
- package/dist/contracts/prompt.contract.js.map +1 -0
- package/dist/contracts/prompt.d.ts +1 -0
- package/dist/contracts/prompt.js +12 -0
- package/dist/contracts/prompt.js.map +1 -0
- package/dist/contracts/sdk-tools.contract.d.ts +2 -0
- package/dist/contracts/sdk-tools.contract.js +4134 -0
- package/dist/contracts/sdk-tools.contract.js.map +1 -0
- package/dist/contracts/sdkTools.d.ts +2 -0
- package/dist/contracts/sdkTools.js +4134 -0
- package/dist/contracts/sdkTools.js.map +1 -0
- package/dist/contracts/workflow-runtime.contract.d.ts +163 -0
- package/dist/contracts/workflow-runtime.contract.js +245 -0
- package/dist/contracts/workflow-runtime.contract.js.map +1 -0
- package/dist/contracts/workflowRuntime.d.ts +1 -0
- package/dist/contracts/workflowRuntime.js +245 -0
- package/dist/contracts/workflowRuntime.js.map +1 -0
- package/dist/controlObjectOwnership.d.ts +310 -0
- package/{src/controlObjectOwnership.ts → dist/controlObjectOwnership.js} +53 -124
- package/dist/controlObjectOwnership.js.map +1 -0
- package/dist/coreClient.d.ts +144 -0
- package/dist/coreClient.js +339 -0
- package/dist/coreClient.js.map +1 -0
- package/dist/customTools.d.ts +88 -0
- package/dist/customTools.js +248 -0
- package/dist/customTools.js.map +1 -0
- package/dist/decisionsClient.d.ts +111 -0
- package/dist/decisionsClient.js +522 -0
- package/dist/decisionsClient.js.map +1 -0
- package/dist/domainContext.d.ts +1 -0
- package/dist/domainContext.js +3 -0
- package/dist/domainContext.js.map +1 -0
- package/dist/events.d.ts +178 -0
- package/dist/events.js +249 -0
- package/dist/events.js.map +1 -0
- package/dist/eventsCore.d.ts +49 -0
- package/dist/eventsCore.js +429 -0
- package/dist/eventsCore.js.map +1 -0
- package/dist/facade/context.d.ts +18 -0
- package/dist/facade/context.js +73 -0
- package/dist/facade/context.js.map +1 -0
- package/dist/gatewayFacades.d.ts +591 -0
- package/dist/gatewayFacades.js +1953 -0
- package/dist/gatewayFacades.js.map +1 -0
- package/dist/graphClient.d.ts +271 -0
- package/dist/graphClient.js +698 -0
- package/dist/graphClient.js.map +1 -0
- package/dist/harnessClient.d.ts +314 -0
- package/dist/harnessClient.js +607 -0
- package/dist/harnessClient.js.map +1 -0
- package/dist/identityClient.d.ts +140 -0
- package/dist/identityClient.js +497 -0
- package/dist/identityClient.js.map +1 -0
- package/dist/index.d.ts +42 -0
- package/dist/index.js +11381 -0
- package/dist/index.js.map +1 -0
- package/dist/learningClient.d.ts +46 -0
- package/dist/learningClient.js +409 -0
- package/dist/learningClient.js.map +1 -0
- package/dist/mcpParityClient.d.ts +74 -0
- package/dist/mcpParityClient.js +516 -0
- package/dist/mcpParityClient.js.map +1 -0
- package/dist/mcpParitySurface.d.ts +12 -0
- package/{src/mcpParitySurface.ts → dist/mcpParitySurface.js} +9 -14
- package/dist/mcpParitySurface.js.map +1 -0
- package/dist/mcpTools-DPZxowDX.d.ts +254 -0
- package/dist/ontologyClient.d.ts +137 -0
- package/dist/ontologyClient.js +513 -0
- package/dist/ontologyClient.js.map +1 -0
- package/dist/packRuntime.d.ts +2 -0
- package/dist/packRuntime.js +3 -0
- package/dist/packRuntime.js.map +1 -0
- package/dist/packsClient.d.ts +131 -0
- package/dist/packsClient.js +525 -0
- package/dist/packsClient.js.map +1 -0
- package/dist/policyClient.d.ts +299 -0
- package/dist/policyClient.js +625 -0
- package/dist/policyClient.js.map +1 -0
- package/dist/realtime/index.d.ts +29 -0
- package/dist/realtime/index.js +23 -0
- package/dist/realtime/index.js.map +1 -0
- package/{src/realtime/refs.ts → dist/realtime/refs.d.ts} +5 -5
- package/dist/realtime/refs.js +9 -0
- package/dist/realtime/refs.js.map +1 -0
- package/dist/reportsClient.d.ts +41 -0
- package/dist/reportsClient.js +418 -0
- package/dist/reportsClient.js.map +1 -0
- package/dist/schemaClient.d.ts +64 -0
- package/dist/schemaClient.js +434 -0
- package/dist/schemaClient.js.map +1 -0
- package/dist/sdkSurface.d.ts +61 -0
- package/dist/sdkSurface.js +112 -0
- package/dist/sdkSurface.js.map +1 -0
- package/dist/sdkTools-CwXJDACb.d.ts +150 -0
- package/dist/topicsClient.d.ts +84 -0
- package/dist/topicsClient.js +492 -0
- package/dist/topicsClient.js.map +1 -0
- package/dist/types.d.ts +696 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/version.d.ts +4 -0
- package/dist/version.js +6 -0
- package/dist/version.js.map +1 -0
- package/dist/workflowClient.d.ts +316 -0
- package/dist/workflowClient.js +830 -0
- package/dist/workflowClient.js.map +1 -0
- package/package.json +31 -7
- package/.turbo/turbo-build.log +0 -7
- package/.turbo/turbo-typecheck.log +0 -4
- package/examples/README.md +0 -69
- package/examples/contradiction.ts +0 -94
- package/examples/investigation-context.ts +0 -118
- package/examples/questions-and-tasks.ts +0 -55
- package/examples/quickstart.ts +0 -97
- package/examples/shared.ts +0 -318
- package/examples/strict-public-types.ts +0 -143
- package/examples/worktree-lifecycle.ts +0 -79
- package/src/README.md +0 -6
- package/src/adminClient.ts +0 -789
- package/src/answersClient.ts +0 -29
- package/src/audiencesClient.ts +0 -209
- package/src/auditClient.ts +0 -50
- package/src/beliefsClient.ts +0 -319
- package/src/client.ts +0 -2647
- package/src/contextClient.ts +0 -130
- package/src/contextFacade.ts +0 -15
- package/src/contextPackCompiler.ts +0 -828
- package/src/contextTypes.ts +0 -153
- package/src/contracts/api-enums.contract.ts +0 -202
- package/src/contracts/auth-session.contract.ts +0 -109
- package/src/contracts/context-pack.contract.ts +0 -700
- package/src/contracts/contextPack.ts +0 -1
- package/src/contracts/index.ts +0 -10
- package/src/contracts/lens-filter.contract.ts +0 -183
- package/src/contracts/lens-workflow.contract.ts +0 -162
- package/src/contracts/lensFilter.ts +0 -1
- package/src/contracts/lensWorkflow.ts +0 -1
- package/src/contracts/mcp-tools.contract.ts +0 -3636
- package/src/contracts/mcpTools.ts +0 -1
- package/src/contracts/prompt.contract.ts +0 -50
- package/src/contracts/prompt.ts +0 -1
- package/src/contracts/sdk-tools.contract.ts +0 -1457
- package/src/contracts/sdkTools.ts +0 -1
- package/src/contracts/workflow-runtime.contract.ts +0 -440
- package/src/contracts/workflowRuntime.ts +0 -1
- package/src/coreClient.ts +0 -570
- package/src/customTools.ts +0 -398
- package/src/decisionsClient.ts +0 -286
- package/src/domainContext.ts +0 -15
- package/src/events.ts +0 -531
- package/src/eventsCore.ts +0 -168
- package/src/facade/beliefs.ts +0 -83
- package/src/facade/context.ts +0 -110
- package/src/facade/contradictions.ts +0 -29
- package/src/facade/edges.ts +0 -30
- package/src/facade/events.ts +0 -23
- package/src/facade/evidence.ts +0 -41
- package/src/facade/graph.ts +0 -38
- package/src/facade/identity.ts +0 -16
- package/src/facade/ontologies.ts +0 -34
- package/src/facade/questions.ts +0 -59
- package/src/facade/search.ts +0 -16
- package/src/facade/tasks.ts +0 -37
- package/src/facade/topics.ts +0 -42
- package/src/facade/webhooks.ts +0 -58
- package/src/facade/worktrees.ts +0 -51
- package/src/gatewayFacades.ts +0 -1666
- package/src/graphClient.ts +0 -529
- package/src/harnessClient.ts +0 -585
- package/src/identityClient.ts +0 -278
- package/src/index.ts +0 -49
- package/src/learningClient.ts +0 -95
- package/src/mcpParityClient.ts +0 -240
- package/src/ontologyClient.ts +0 -275
- package/src/packRuntime.ts +0 -3
- package/src/packsClient.ts +0 -260
- package/src/policyClient.ts +0 -572
- package/src/promptCatalog.ts +0 -1
- package/src/realtime/index.ts +0 -51
- package/src/reportsClient.ts +0 -99
- package/src/schemaClient.ts +0 -129
- package/src/sdkSurface.ts +0 -190
- package/src/topicsClient.ts +0 -243
- package/src/types.ts +0 -807
- package/src/version.ts +0 -2
- package/src/workflowClient.ts +0 -826
- package/tsconfig.json +0 -9
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
// src/controlObjectOwnership.ts
|
|
2
|
+
var CONTROL_OBJECT_KINDS = [
|
|
3
3
|
"tenant",
|
|
4
4
|
"workspace",
|
|
5
5
|
"principal",
|
|
@@ -7,93 +7,38 @@ export const CONTROL_OBJECT_KINDS = [
|
|
|
7
7
|
"pack",
|
|
8
8
|
"ontology",
|
|
9
9
|
"belief",
|
|
10
|
-
"policy_rule"
|
|
11
|
-
]
|
|
12
|
-
|
|
13
|
-
export type ControlObjectKind = (typeof CONTROL_OBJECT_KINDS)[number];
|
|
14
|
-
|
|
15
|
-
/** Canonical ownership scopes: platform, tenant, workspace, or resource. */
|
|
16
|
-
export const CONTROL_OBJECT_OWNER_SCOPES = [
|
|
10
|
+
"policy_rule"
|
|
11
|
+
];
|
|
12
|
+
var CONTROL_OBJECT_OWNER_SCOPES = [
|
|
17
13
|
"platform",
|
|
18
14
|
"tenant",
|
|
19
15
|
"workspace",
|
|
20
|
-
"resource"
|
|
21
|
-
]
|
|
22
|
-
|
|
23
|
-
export type ControlObjectOwnerScope =
|
|
24
|
-
(typeof CONTROL_OBJECT_OWNER_SCOPES)[number];
|
|
25
|
-
|
|
26
|
-
/** UI surfaces authorized to edit control objects. */
|
|
27
|
-
export const CONTROL_OBJECT_EDIT_SURFACES = [
|
|
16
|
+
"resource"
|
|
17
|
+
];
|
|
18
|
+
var CONTROL_OBJECT_EDIT_SURFACES = [
|
|
28
19
|
"platform_admin",
|
|
29
20
|
"tenant_admin",
|
|
30
21
|
"workspace_admin",
|
|
31
|
-
"graph_worktree"
|
|
32
|
-
]
|
|
33
|
-
|
|
34
|
-
export type ControlObjectEditSurface =
|
|
35
|
-
(typeof CONTROL_OBJECT_EDIT_SURFACES)[number];
|
|
36
|
-
|
|
37
|
-
/** Rules governing how control object configuration flows through the scope hierarchy. */
|
|
38
|
-
export const CONTROL_OBJECT_INHERITANCE_RULES = [
|
|
22
|
+
"graph_worktree"
|
|
23
|
+
];
|
|
24
|
+
var CONTROL_OBJECT_INHERITANCE_RULES = [
|
|
39
25
|
"none",
|
|
40
26
|
"platform_seed_to_tenant",
|
|
41
27
|
"tenant_default_to_workspace",
|
|
42
28
|
"workspace_narrowing_only",
|
|
43
29
|
"pack_overlay_to_tenant",
|
|
44
|
-
"topic_lineage_to_resource"
|
|
45
|
-
]
|
|
46
|
-
|
|
47
|
-
export type ControlObjectInheritanceRule =
|
|
48
|
-
(typeof CONTROL_OBJECT_INHERITANCE_RULES)[number];
|
|
49
|
-
|
|
50
|
-
/** Scope of impact when a control object is modified. */
|
|
51
|
-
export const CONTROL_OBJECT_BLAST_RADII = [
|
|
30
|
+
"topic_lineage_to_resource"
|
|
31
|
+
];
|
|
32
|
+
var CONTROL_OBJECT_BLAST_RADII = [
|
|
52
33
|
"platform",
|
|
53
34
|
"tenant",
|
|
54
35
|
"workspace",
|
|
55
|
-
"resource"
|
|
56
|
-
]
|
|
57
|
-
|
|
58
|
-
export type ControlObjectBlastRadius = (typeof CONTROL_OBJECT_BLAST_RADII)[number];
|
|
59
|
-
|
|
60
|
-
/** A single row in the ownership matrix describing who owns, edits, and inherits a control object. */
|
|
61
|
-
export type ControlObjectOwnershipCase = {
|
|
62
|
-
caseKey: string;
|
|
63
|
-
caseLabel: string;
|
|
64
|
-
kind: ControlObjectKind;
|
|
65
|
-
canonicalOwnerScope: ControlObjectOwnerScope;
|
|
66
|
-
editSurface: ControlObjectEditSurface;
|
|
67
|
-
inheritanceRule: ControlObjectInheritanceRule;
|
|
68
|
-
blastRadius: ControlObjectBlastRadius;
|
|
69
|
-
};
|
|
70
|
-
|
|
71
|
-
/** Full ownership matrix keyed by control object kind. */
|
|
72
|
-
export type ControlObjectOwnershipMatrix = Record<
|
|
73
|
-
ControlObjectKind,
|
|
74
|
-
readonly ControlObjectOwnershipCase[]
|
|
75
|
-
>;
|
|
76
|
-
|
|
77
|
-
/** Versioned ownership contract bundling all enums, the matrix, and flattened rows. */
|
|
78
|
-
export type ControlObjectOwnershipContract = {
|
|
79
|
-
version: "1.0.0";
|
|
80
|
-
kinds: readonly ControlObjectKind[];
|
|
81
|
-
ownerScopes: readonly ControlObjectOwnerScope[];
|
|
82
|
-
editSurfaces: readonly ControlObjectEditSurface[];
|
|
83
|
-
inheritanceRules: readonly ControlObjectInheritanceRule[];
|
|
84
|
-
blastRadii: readonly ControlObjectBlastRadius[];
|
|
85
|
-
matrix: ControlObjectOwnershipMatrix;
|
|
86
|
-
rows: readonly ControlObjectOwnershipCase[];
|
|
87
|
-
};
|
|
88
|
-
|
|
89
|
-
function defineCases<const T extends readonly ControlObjectOwnershipCase[]>(
|
|
90
|
-
cases: T
|
|
91
|
-
): T {
|
|
36
|
+
"resource"
|
|
37
|
+
];
|
|
38
|
+
function defineCases(cases) {
|
|
92
39
|
return cases;
|
|
93
40
|
}
|
|
94
|
-
|
|
95
|
-
/** Static ownership matrix mapping each control object kind to its ownership cases. */
|
|
96
|
-
export const CONTROL_OBJECT_OWNERSHIP_MATRIX = {
|
|
41
|
+
var CONTROL_OBJECT_OWNERSHIP_MATRIX = {
|
|
97
42
|
tenant: defineCases([
|
|
98
43
|
{
|
|
99
44
|
caseKey: "platform-record",
|
|
@@ -102,8 +47,8 @@ export const CONTROL_OBJECT_OWNERSHIP_MATRIX = {
|
|
|
102
47
|
canonicalOwnerScope: "platform",
|
|
103
48
|
editSurface: "platform_admin",
|
|
104
49
|
inheritanceRule: "none",
|
|
105
|
-
blastRadius: "tenant"
|
|
106
|
-
}
|
|
50
|
+
blastRadius: "tenant"
|
|
51
|
+
}
|
|
107
52
|
]),
|
|
108
53
|
workspace: defineCases([
|
|
109
54
|
{
|
|
@@ -113,8 +58,8 @@ export const CONTROL_OBJECT_OWNERSHIP_MATRIX = {
|
|
|
113
58
|
canonicalOwnerScope: "tenant",
|
|
114
59
|
editSurface: "tenant_admin",
|
|
115
60
|
inheritanceRule: "tenant_default_to_workspace",
|
|
116
|
-
blastRadius: "workspace"
|
|
117
|
-
}
|
|
61
|
+
blastRadius: "workspace"
|
|
62
|
+
}
|
|
118
63
|
]),
|
|
119
64
|
principal: defineCases([
|
|
120
65
|
{
|
|
@@ -124,8 +69,8 @@ export const CONTROL_OBJECT_OWNERSHIP_MATRIX = {
|
|
|
124
69
|
canonicalOwnerScope: "tenant",
|
|
125
70
|
editSurface: "tenant_admin",
|
|
126
71
|
inheritanceRule: "workspace_narrowing_only",
|
|
127
|
-
blastRadius: "resource"
|
|
128
|
-
}
|
|
72
|
+
blastRadius: "resource"
|
|
73
|
+
}
|
|
129
74
|
]),
|
|
130
75
|
tool: defineCases([
|
|
131
76
|
{
|
|
@@ -135,7 +80,7 @@ export const CONTROL_OBJECT_OWNERSHIP_MATRIX = {
|
|
|
135
80
|
canonicalOwnerScope: "platform",
|
|
136
81
|
editSurface: "platform_admin",
|
|
137
82
|
inheritanceRule: "platform_seed_to_tenant",
|
|
138
|
-
blastRadius: "platform"
|
|
83
|
+
blastRadius: "platform"
|
|
139
84
|
},
|
|
140
85
|
{
|
|
141
86
|
caseKey: "tenant-custom",
|
|
@@ -144,8 +89,8 @@ export const CONTROL_OBJECT_OWNERSHIP_MATRIX = {
|
|
|
144
89
|
canonicalOwnerScope: "tenant",
|
|
145
90
|
editSurface: "tenant_admin",
|
|
146
91
|
inheritanceRule: "tenant_default_to_workspace",
|
|
147
|
-
blastRadius: "tenant"
|
|
148
|
-
}
|
|
92
|
+
blastRadius: "tenant"
|
|
93
|
+
}
|
|
149
94
|
]),
|
|
150
95
|
pack: defineCases([
|
|
151
96
|
{
|
|
@@ -155,7 +100,7 @@ export const CONTROL_OBJECT_OWNERSHIP_MATRIX = {
|
|
|
155
100
|
canonicalOwnerScope: "platform",
|
|
156
101
|
editSurface: "platform_admin",
|
|
157
102
|
inheritanceRule: "platform_seed_to_tenant",
|
|
158
|
-
blastRadius: "platform"
|
|
103
|
+
blastRadius: "platform"
|
|
159
104
|
},
|
|
160
105
|
{
|
|
161
106
|
caseKey: "tenant-installation",
|
|
@@ -164,8 +109,8 @@ export const CONTROL_OBJECT_OWNERSHIP_MATRIX = {
|
|
|
164
109
|
canonicalOwnerScope: "tenant",
|
|
165
110
|
editSurface: "tenant_admin",
|
|
166
111
|
inheritanceRule: "platform_seed_to_tenant",
|
|
167
|
-
blastRadius: "tenant"
|
|
168
|
-
}
|
|
112
|
+
blastRadius: "tenant"
|
|
113
|
+
}
|
|
169
114
|
]),
|
|
170
115
|
ontology: defineCases([
|
|
171
116
|
{
|
|
@@ -175,7 +120,7 @@ export const CONTROL_OBJECT_OWNERSHIP_MATRIX = {
|
|
|
175
120
|
canonicalOwnerScope: "platform",
|
|
176
121
|
editSurface: "platform_admin",
|
|
177
122
|
inheritanceRule: "platform_seed_to_tenant",
|
|
178
|
-
blastRadius: "platform"
|
|
123
|
+
blastRadius: "platform"
|
|
179
124
|
},
|
|
180
125
|
{
|
|
181
126
|
caseKey: "pack-overlay",
|
|
@@ -184,7 +129,7 @@ export const CONTROL_OBJECT_OWNERSHIP_MATRIX = {
|
|
|
184
129
|
canonicalOwnerScope: "platform",
|
|
185
130
|
editSurface: "platform_admin",
|
|
186
131
|
inheritanceRule: "pack_overlay_to_tenant",
|
|
187
|
-
blastRadius: "platform"
|
|
132
|
+
blastRadius: "platform"
|
|
188
133
|
},
|
|
189
134
|
{
|
|
190
135
|
caseKey: "tenant-extension",
|
|
@@ -193,8 +138,8 @@ export const CONTROL_OBJECT_OWNERSHIP_MATRIX = {
|
|
|
193
138
|
canonicalOwnerScope: "tenant",
|
|
194
139
|
editSurface: "tenant_admin",
|
|
195
140
|
inheritanceRule: "topic_lineage_to_resource",
|
|
196
|
-
blastRadius: "tenant"
|
|
197
|
-
}
|
|
141
|
+
blastRadius: "tenant"
|
|
142
|
+
}
|
|
198
143
|
]),
|
|
199
144
|
belief: defineCases([
|
|
200
145
|
{
|
|
@@ -204,8 +149,8 @@ export const CONTROL_OBJECT_OWNERSHIP_MATRIX = {
|
|
|
204
149
|
canonicalOwnerScope: "resource",
|
|
205
150
|
editSurface: "graph_worktree",
|
|
206
151
|
inheritanceRule: "topic_lineage_to_resource",
|
|
207
|
-
blastRadius: "resource"
|
|
208
|
-
}
|
|
152
|
+
blastRadius: "resource"
|
|
153
|
+
}
|
|
209
154
|
]),
|
|
210
155
|
policy_rule: defineCases([
|
|
211
156
|
{
|
|
@@ -215,7 +160,7 @@ export const CONTROL_OBJECT_OWNERSHIP_MATRIX = {
|
|
|
215
160
|
canonicalOwnerScope: "platform",
|
|
216
161
|
editSurface: "platform_admin",
|
|
217
162
|
inheritanceRule: "platform_seed_to_tenant",
|
|
218
|
-
blastRadius: "platform"
|
|
163
|
+
blastRadius: "platform"
|
|
219
164
|
},
|
|
220
165
|
{
|
|
221
166
|
caseKey: "tenant-bundle",
|
|
@@ -224,7 +169,7 @@ export const CONTROL_OBJECT_OWNERSHIP_MATRIX = {
|
|
|
224
169
|
canonicalOwnerScope: "tenant",
|
|
225
170
|
editSurface: "tenant_admin",
|
|
226
171
|
inheritanceRule: "tenant_default_to_workspace",
|
|
227
|
-
blastRadius: "tenant"
|
|
172
|
+
blastRadius: "tenant"
|
|
228
173
|
},
|
|
229
174
|
{
|
|
230
175
|
caseKey: "workspace-override",
|
|
@@ -233,24 +178,17 @@ export const CONTROL_OBJECT_OWNERSHIP_MATRIX = {
|
|
|
233
178
|
canonicalOwnerScope: "workspace",
|
|
234
179
|
editSurface: "workspace_admin",
|
|
235
180
|
inheritanceRule: "none",
|
|
236
|
-
blastRadius: "workspace"
|
|
237
|
-
}
|
|
238
|
-
])
|
|
239
|
-
}
|
|
240
|
-
|
|
241
|
-
function flattenOwnershipMatrix(
|
|
242
|
-
matrix: ControlObjectOwnershipMatrix
|
|
243
|
-
): ControlObjectOwnershipCase[] {
|
|
181
|
+
blastRadius: "workspace"
|
|
182
|
+
}
|
|
183
|
+
])
|
|
184
|
+
};
|
|
185
|
+
function flattenOwnershipMatrix(matrix) {
|
|
244
186
|
return CONTROL_OBJECT_KINDS.flatMap((kind) => [...matrix[kind]]);
|
|
245
187
|
}
|
|
246
|
-
|
|
247
|
-
/** Flattened array of all ownership cases across all control object kinds. */
|
|
248
|
-
export const CONTROL_OBJECT_OWNERSHIP_ROWS = Object.freeze(
|
|
188
|
+
var CONTROL_OBJECT_OWNERSHIP_ROWS = Object.freeze(
|
|
249
189
|
flattenOwnershipMatrix(CONTROL_OBJECT_OWNERSHIP_MATRIX)
|
|
250
190
|
);
|
|
251
|
-
|
|
252
|
-
/** The canonical ownership contract exposed by the SDK. */
|
|
253
|
-
export const CONTROL_OBJECT_OWNERSHIP_CONTRACT = {
|
|
191
|
+
var CONTROL_OBJECT_OWNERSHIP_CONTRACT = {
|
|
254
192
|
version: "1.0.0",
|
|
255
193
|
kinds: CONTROL_OBJECT_KINDS,
|
|
256
194
|
ownerScopes: CONTROL_OBJECT_OWNER_SCOPES,
|
|
@@ -258,29 +196,20 @@ export const CONTROL_OBJECT_OWNERSHIP_CONTRACT = {
|
|
|
258
196
|
inheritanceRules: CONTROL_OBJECT_INHERITANCE_RULES,
|
|
259
197
|
blastRadii: CONTROL_OBJECT_BLAST_RADII,
|
|
260
198
|
matrix: CONTROL_OBJECT_OWNERSHIP_MATRIX,
|
|
261
|
-
rows: CONTROL_OBJECT_OWNERSHIP_ROWS
|
|
262
|
-
}
|
|
263
|
-
|
|
264
|
-
/**
|
|
265
|
-
* List ownership cases for one control-object kind or the full matrix.
|
|
266
|
-
*/
|
|
267
|
-
export function listControlObjectOwnershipCases(
|
|
268
|
-
kind?: ControlObjectKind
|
|
269
|
-
): readonly ControlObjectOwnershipCase[] {
|
|
199
|
+
rows: CONTROL_OBJECT_OWNERSHIP_ROWS
|
|
200
|
+
};
|
|
201
|
+
function listControlObjectOwnershipCases(kind) {
|
|
270
202
|
if (!kind) {
|
|
271
203
|
return CONTROL_OBJECT_OWNERSHIP_ROWS;
|
|
272
204
|
}
|
|
273
205
|
return CONTROL_OBJECT_OWNERSHIP_MATRIX[kind];
|
|
274
206
|
}
|
|
275
|
-
|
|
276
|
-
/**
|
|
277
|
-
* Get a specific ownership case by kind and case key.
|
|
278
|
-
*/
|
|
279
|
-
export function getControlObjectOwnershipCase(
|
|
280
|
-
kind: ControlObjectKind,
|
|
281
|
-
caseKey: string
|
|
282
|
-
): ControlObjectOwnershipCase | undefined {
|
|
207
|
+
function getControlObjectOwnershipCase(kind, caseKey) {
|
|
283
208
|
return CONTROL_OBJECT_OWNERSHIP_MATRIX[kind].find(
|
|
284
209
|
(ownershipCase) => ownershipCase.caseKey === caseKey
|
|
285
210
|
);
|
|
286
211
|
}
|
|
212
|
+
|
|
213
|
+
export { CONTROL_OBJECT_BLAST_RADII, CONTROL_OBJECT_EDIT_SURFACES, CONTROL_OBJECT_INHERITANCE_RULES, CONTROL_OBJECT_KINDS, CONTROL_OBJECT_OWNERSHIP_CONTRACT, CONTROL_OBJECT_OWNERSHIP_MATRIX, CONTROL_OBJECT_OWNERSHIP_ROWS, CONTROL_OBJECT_OWNER_SCOPES, getControlObjectOwnershipCase, listControlObjectOwnershipCases };
|
|
214
|
+
//# sourceMappingURL=controlObjectOwnership.js.map
|
|
215
|
+
//# sourceMappingURL=controlObjectOwnership.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/controlObjectOwnership.ts"],"names":[],"mappings":"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","file":"controlObjectOwnership.js","sourcesContent":["/** All recognized control object kinds in the ownership model. */\nexport const CONTROL_OBJECT_KINDS = [\n \"tenant\",\n \"workspace\",\n \"principal\",\n \"tool\",\n \"pack\",\n \"ontology\",\n \"belief\",\n \"policy_rule\",\n] as const;\n/** A kind of control object (tenant, workspace, principal, tool, etc.). */\nexport type ControlObjectKind = (typeof CONTROL_OBJECT_KINDS)[number];\n\n/** Canonical ownership scopes: platform, tenant, workspace, or resource. */\nexport const CONTROL_OBJECT_OWNER_SCOPES = [\n \"platform\",\n \"tenant\",\n \"workspace\",\n \"resource\",\n] as const;\n/** The scope level that canonically owns a control object. */\nexport type ControlObjectOwnerScope =\n (typeof CONTROL_OBJECT_OWNER_SCOPES)[number];\n\n/** UI surfaces authorized to edit control objects. */\nexport const CONTROL_OBJECT_EDIT_SURFACES = [\n \"platform_admin\",\n \"tenant_admin\",\n \"workspace_admin\",\n \"graph_worktree\",\n] as const;\n/** A UI surface authorized to mutate a control object (platform admin, tenant admin, etc.). */\nexport type ControlObjectEditSurface =\n (typeof CONTROL_OBJECT_EDIT_SURFACES)[number];\n\n/** Rules governing how control object configuration flows through the scope hierarchy. */\nexport const CONTROL_OBJECT_INHERITANCE_RULES = [\n \"none\",\n \"platform_seed_to_tenant\",\n \"tenant_default_to_workspace\",\n \"workspace_narrowing_only\",\n \"pack_overlay_to_tenant\",\n \"topic_lineage_to_resource\",\n] as const;\n/** How a control object's configuration propagates through scope hierarchy. */\nexport type ControlObjectInheritanceRule =\n (typeof CONTROL_OBJECT_INHERITANCE_RULES)[number];\n\n/** Scope of impact when a control object is modified. */\nexport const CONTROL_OBJECT_BLAST_RADII = [\n \"platform\",\n \"tenant\",\n \"workspace\",\n \"resource\",\n] as const;\n/** The furthest scope impacted by a mutation to a control object. */\nexport type ControlObjectBlastRadius = (typeof CONTROL_OBJECT_BLAST_RADII)[number];\n\n/** A single row in the ownership matrix describing who owns, edits, and inherits a control object. */\nexport type ControlObjectOwnershipCase = {\n caseKey: string;\n caseLabel: string;\n kind: ControlObjectKind;\n canonicalOwnerScope: ControlObjectOwnerScope;\n editSurface: ControlObjectEditSurface;\n inheritanceRule: ControlObjectInheritanceRule;\n blastRadius: ControlObjectBlastRadius;\n};\n\n/** Full ownership matrix keyed by control object kind. */\nexport type ControlObjectOwnershipMatrix = Record<\n ControlObjectKind,\n readonly ControlObjectOwnershipCase[]\n>;\n\n/** Versioned ownership contract bundling all enums, the matrix, and flattened rows. */\nexport type ControlObjectOwnershipContract = {\n version: \"1.0.0\";\n kinds: readonly ControlObjectKind[];\n ownerScopes: readonly ControlObjectOwnerScope[];\n editSurfaces: readonly ControlObjectEditSurface[];\n inheritanceRules: readonly ControlObjectInheritanceRule[];\n blastRadii: readonly ControlObjectBlastRadius[];\n matrix: ControlObjectOwnershipMatrix;\n rows: readonly ControlObjectOwnershipCase[];\n};\n\nfunction defineCases<const T extends readonly ControlObjectOwnershipCase[]>(\n cases: T\n): T {\n return cases;\n}\n\n/** Static ownership matrix mapping each control object kind to its ownership cases. */\nexport const CONTROL_OBJECT_OWNERSHIP_MATRIX = {\n tenant: defineCases([\n {\n caseKey: \"platform-record\",\n caseLabel: \"Platform Record\",\n kind: \"tenant\",\n canonicalOwnerScope: \"platform\",\n editSurface: \"platform_admin\",\n inheritanceRule: \"none\",\n blastRadius: \"tenant\",\n },\n ]),\n workspace: defineCases([\n {\n caseKey: \"tenant-workspace\",\n caseLabel: \"Tenant Workspace\",\n kind: \"workspace\",\n canonicalOwnerScope: \"tenant\",\n editSurface: \"tenant_admin\",\n inheritanceRule: \"tenant_default_to_workspace\",\n blastRadius: \"workspace\",\n },\n ]),\n principal: defineCases([\n {\n caseKey: \"tenant-principal\",\n caseLabel: \"Tenant Principal\",\n kind: \"principal\",\n canonicalOwnerScope: \"tenant\",\n editSurface: \"tenant_admin\",\n inheritanceRule: \"workspace_narrowing_only\",\n blastRadius: \"resource\",\n },\n ]),\n tool: defineCases([\n {\n caseKey: \"platform-core\",\n caseLabel: \"Platform Core\",\n kind: \"tool\",\n canonicalOwnerScope: \"platform\",\n editSurface: \"platform_admin\",\n inheritanceRule: \"platform_seed_to_tenant\",\n blastRadius: \"platform\",\n },\n {\n caseKey: \"tenant-custom\",\n caseLabel: \"Tenant Custom\",\n kind: \"tool\",\n canonicalOwnerScope: \"tenant\",\n editSurface: \"tenant_admin\",\n inheritanceRule: \"tenant_default_to_workspace\",\n blastRadius: \"tenant\",\n },\n ]),\n pack: defineCases([\n {\n caseKey: \"platform-definition\",\n caseLabel: \"Platform Definition\",\n kind: \"pack\",\n canonicalOwnerScope: \"platform\",\n editSurface: \"platform_admin\",\n inheritanceRule: \"platform_seed_to_tenant\",\n blastRadius: \"platform\",\n },\n {\n caseKey: \"tenant-installation\",\n caseLabel: \"Tenant Installation\",\n kind: \"pack\",\n canonicalOwnerScope: \"tenant\",\n editSurface: \"tenant_admin\",\n inheritanceRule: \"platform_seed_to_tenant\",\n blastRadius: \"tenant\",\n },\n ]),\n ontology: defineCases([\n {\n caseKey: \"platform-base\",\n caseLabel: \"Platform Base\",\n kind: \"ontology\",\n canonicalOwnerScope: \"platform\",\n editSurface: \"platform_admin\",\n inheritanceRule: \"platform_seed_to_tenant\",\n blastRadius: \"platform\",\n },\n {\n caseKey: \"pack-overlay\",\n caseLabel: \"Pack Overlay\",\n kind: \"ontology\",\n canonicalOwnerScope: \"platform\",\n editSurface: \"platform_admin\",\n inheritanceRule: \"pack_overlay_to_tenant\",\n blastRadius: \"platform\",\n },\n {\n caseKey: \"tenant-extension\",\n caseLabel: \"Tenant Extension\",\n kind: \"ontology\",\n canonicalOwnerScope: \"tenant\",\n editSurface: \"tenant_admin\",\n inheritanceRule: \"topic_lineage_to_resource\",\n blastRadius: \"tenant\",\n },\n ]),\n belief: defineCases([\n {\n caseKey: \"topic-resource\",\n caseLabel: \"Topic Resource\",\n kind: \"belief\",\n canonicalOwnerScope: \"resource\",\n editSurface: \"graph_worktree\",\n inheritanceRule: \"topic_lineage_to_resource\",\n blastRadius: \"resource\",\n },\n ]),\n policy_rule: defineCases([\n {\n caseKey: \"platform-baseline\",\n caseLabel: \"Platform Baseline\",\n kind: \"policy_rule\",\n canonicalOwnerScope: \"platform\",\n editSurface: \"platform_admin\",\n inheritanceRule: \"platform_seed_to_tenant\",\n blastRadius: \"platform\",\n },\n {\n caseKey: \"tenant-bundle\",\n caseLabel: \"Tenant Bundle\",\n kind: \"policy_rule\",\n canonicalOwnerScope: \"tenant\",\n editSurface: \"tenant_admin\",\n inheritanceRule: \"tenant_default_to_workspace\",\n blastRadius: \"tenant\",\n },\n {\n caseKey: \"workspace-override\",\n caseLabel: \"Workspace Override\",\n kind: \"policy_rule\",\n canonicalOwnerScope: \"workspace\",\n editSurface: \"workspace_admin\",\n inheritanceRule: \"none\",\n blastRadius: \"workspace\",\n },\n ]),\n} as const satisfies ControlObjectOwnershipMatrix;\n\nfunction flattenOwnershipMatrix(\n matrix: ControlObjectOwnershipMatrix\n): ControlObjectOwnershipCase[] {\n return CONTROL_OBJECT_KINDS.flatMap((kind) => [...matrix[kind]]);\n}\n\n/** Flattened array of all ownership cases across all control object kinds. */\nexport const CONTROL_OBJECT_OWNERSHIP_ROWS = Object.freeze(\n flattenOwnershipMatrix(CONTROL_OBJECT_OWNERSHIP_MATRIX)\n);\n\n/** The canonical ownership contract exposed by the SDK. */\nexport const CONTROL_OBJECT_OWNERSHIP_CONTRACT = {\n version: \"1.0.0\",\n kinds: CONTROL_OBJECT_KINDS,\n ownerScopes: CONTROL_OBJECT_OWNER_SCOPES,\n editSurfaces: CONTROL_OBJECT_EDIT_SURFACES,\n inheritanceRules: CONTROL_OBJECT_INHERITANCE_RULES,\n blastRadii: CONTROL_OBJECT_BLAST_RADII,\n matrix: CONTROL_OBJECT_OWNERSHIP_MATRIX,\n rows: CONTROL_OBJECT_OWNERSHIP_ROWS,\n} as const satisfies ControlObjectOwnershipContract;\n\n/**\n * List ownership cases for one control-object kind or the full matrix.\n */\nexport function listControlObjectOwnershipCases(\n kind?: ControlObjectKind\n): readonly ControlObjectOwnershipCase[] {\n if (!kind) {\n return CONTROL_OBJECT_OWNERSHIP_ROWS;\n }\n return CONTROL_OBJECT_OWNERSHIP_MATRIX[kind];\n}\n\n/**\n * Get a specific ownership case by kind and case key.\n */\nexport function getControlObjectOwnershipCase(\n kind: ControlObjectKind,\n caseKey: string\n): ControlObjectOwnershipCase | undefined {\n return CONTROL_OBJECT_OWNERSHIP_MATRIX[kind].find(\n (ownershipCase) => ownershipCase.caseKey === caseKey\n );\n}\n"]}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { JsonValue, JsonObject } from './types.js';
|
|
2
|
+
import './contracts/workflow-runtime.contract.js';
|
|
3
|
+
import './contracts/lens-workflow.contract.js';
|
|
4
|
+
import './contracts/lens-filter.contract.js';
|
|
5
|
+
|
|
6
|
+
/** Tenant and workspace identifiers used to scope gateway requests. */
|
|
7
|
+
type GatewayScope = {
|
|
8
|
+
tenantId?: string;
|
|
9
|
+
workspaceId?: string;
|
|
10
|
+
};
|
|
11
|
+
/** Successful response envelope from the platform gateway with correlation metadata. */
|
|
12
|
+
type PlatformGatewaySuccess<T> = {
|
|
13
|
+
success: true;
|
|
14
|
+
data: T;
|
|
15
|
+
correlationId: string;
|
|
16
|
+
policyTraceId: string | null;
|
|
17
|
+
idempotentReplay: boolean;
|
|
18
|
+
};
|
|
19
|
+
/** Failed response envelope with structured error codes and optional invariant references. */
|
|
20
|
+
type PlatformGatewayFailure = {
|
|
21
|
+
success: false;
|
|
22
|
+
/**
|
|
23
|
+
* Error string is the canonical envelope field.
|
|
24
|
+
* Object form is legacy-only compatibility for older gateway responses.
|
|
25
|
+
*/
|
|
26
|
+
error: string | {
|
|
27
|
+
code: string;
|
|
28
|
+
message: string;
|
|
29
|
+
details?: JsonValue;
|
|
30
|
+
};
|
|
31
|
+
code?: string;
|
|
32
|
+
invariant?: string | null;
|
|
33
|
+
suggestion?: string | null;
|
|
34
|
+
details?: JsonValue;
|
|
35
|
+
legacyError?: {
|
|
36
|
+
code: string;
|
|
37
|
+
message: string;
|
|
38
|
+
details?: JsonValue;
|
|
39
|
+
};
|
|
40
|
+
correlationId: string;
|
|
41
|
+
policyTraceId: string | null;
|
|
42
|
+
};
|
|
43
|
+
/** Discriminated union of success and failure gateway responses. */
|
|
44
|
+
type PlatformGatewayEnvelope<T> = PlatformGatewaySuccess<T> | PlatformGatewayFailure;
|
|
45
|
+
/**
|
|
46
|
+
* Structured error thrown when a platform API request fails.
|
|
47
|
+
*
|
|
48
|
+
* Includes HTTP status, machine-readable error code, optional invariant
|
|
49
|
+
* reference, and actionable suggestions for common failure modes.
|
|
50
|
+
*/
|
|
51
|
+
declare class LucernApiError extends Error {
|
|
52
|
+
readonly code: string;
|
|
53
|
+
readonly status: number;
|
|
54
|
+
readonly invariant?: string | null;
|
|
55
|
+
readonly suggestion?: string | null;
|
|
56
|
+
readonly details?: JsonValue;
|
|
57
|
+
readonly requestId?: string;
|
|
58
|
+
readonly correlationId?: string;
|
|
59
|
+
readonly policyTraceId?: string | null;
|
|
60
|
+
constructor(args: {
|
|
61
|
+
code: string;
|
|
62
|
+
message: string;
|
|
63
|
+
status: number;
|
|
64
|
+
invariant?: string | null;
|
|
65
|
+
suggestion?: string | null;
|
|
66
|
+
details?: JsonValue;
|
|
67
|
+
requestId?: string;
|
|
68
|
+
correlationId?: string;
|
|
69
|
+
policyTraceId?: string | null;
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
/** Supported HTTP methods for gateway requests. */
|
|
73
|
+
type GatewayHttpMethod = "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
|
|
74
|
+
type FetchLike = (input: RequestInfo | URL, init?: RequestInit) => Promise<Response>;
|
|
75
|
+
/** Context passed to the `onRequest` hook before each gateway request attempt. */
|
|
76
|
+
type GatewayRequestHookContext = {
|
|
77
|
+
requestId: string;
|
|
78
|
+
attempt: number;
|
|
79
|
+
maxRetries: number;
|
|
80
|
+
method: GatewayHttpMethod;
|
|
81
|
+
path: string;
|
|
82
|
+
url: string;
|
|
83
|
+
headers: Headers;
|
|
84
|
+
body?: string;
|
|
85
|
+
timeoutMs: number;
|
|
86
|
+
};
|
|
87
|
+
/** Context passed to the `onResponse` hook after each gateway request attempt (including retries and failures). */
|
|
88
|
+
type GatewayResponseHookContext = GatewayRequestHookContext & {
|
|
89
|
+
durationMs: number;
|
|
90
|
+
status?: number;
|
|
91
|
+
response?: Response;
|
|
92
|
+
error?: unknown;
|
|
93
|
+
correlationId?: string;
|
|
94
|
+
policyTraceId?: string | null;
|
|
95
|
+
idempotentReplay?: boolean;
|
|
96
|
+
retryAfterMs?: number | null;
|
|
97
|
+
willRetry: boolean;
|
|
98
|
+
};
|
|
99
|
+
/**
|
|
100
|
+
* Low-level transport configuration for the platform gateway client.
|
|
101
|
+
*
|
|
102
|
+
* Most developers should use {@link createLucernClient} instead, which wraps
|
|
103
|
+
* this config with higher-level conveniences like `apiKey` and `environment`.
|
|
104
|
+
*/
|
|
105
|
+
type GatewayClientConfig = {
|
|
106
|
+
baseUrl?: string;
|
|
107
|
+
fetchImpl?: FetchLike;
|
|
108
|
+
getAuthHeaders?: (() => Promise<Record<string, string>>) | (() => Record<string, string>);
|
|
109
|
+
/** Max retries for transient errors (5xx, network). Defaults to 2. */
|
|
110
|
+
maxRetries?: number;
|
|
111
|
+
/** Request timeout in ms. Defaults to 15000. */
|
|
112
|
+
timeoutMs?: number;
|
|
113
|
+
/** Optional timeout overrides by HTTP method. */
|
|
114
|
+
timeoutMsByMethod?: Partial<Record<GatewayHttpMethod, number>>;
|
|
115
|
+
/** Optional request ID factory used for correlation headers. */
|
|
116
|
+
requestIdFactory?: () => string;
|
|
117
|
+
/** Invoked before each request attempt, including retries. */
|
|
118
|
+
onRequest?: ((context: GatewayRequestHookContext) => void) | ((context: GatewayRequestHookContext) => Promise<void>);
|
|
119
|
+
/** Invoked after each request attempt, including retries and failures. */
|
|
120
|
+
onResponse?: ((context: GatewayResponseHookContext) => void) | ((context: GatewayResponseHookContext) => Promise<void>);
|
|
121
|
+
};
|
|
122
|
+
/**
|
|
123
|
+
* Serialize a gateway query object into a URL query string.
|
|
124
|
+
*/
|
|
125
|
+
declare function toQueryString(scope: GatewayScope & Record<string, string | number | boolean | undefined>): string;
|
|
126
|
+
/**
|
|
127
|
+
* Generate a random idempotency key for retry-safe writes.
|
|
128
|
+
*/
|
|
129
|
+
declare function randomIdempotencyKey(): string;
|
|
130
|
+
/**
|
|
131
|
+
* Create the transport client used by all SDK modules.
|
|
132
|
+
*/
|
|
133
|
+
declare function createGatewayRequestClient(config?: GatewayClientConfig): {
|
|
134
|
+
request: <T>(args: {
|
|
135
|
+
path: string;
|
|
136
|
+
method?: GatewayHttpMethod;
|
|
137
|
+
body?: JsonObject;
|
|
138
|
+
idempotencyKey?: string;
|
|
139
|
+
requestId?: string;
|
|
140
|
+
timeoutMs?: number;
|
|
141
|
+
}) => Promise<PlatformGatewaySuccess<T>>;
|
|
142
|
+
};
|
|
143
|
+
|
|
144
|
+
export { type GatewayClientConfig, type GatewayHttpMethod, type GatewayRequestHookContext, type GatewayResponseHookContext, type GatewayScope, LucernApiError, type PlatformGatewayEnvelope, type PlatformGatewayFailure, type PlatformGatewaySuccess, createGatewayRequestClient, randomIdempotencyKey, toQueryString };
|