@lucern/sdk 1.0.11 → 1.0.12
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 +3 -0
- package/dist/.generated +2 -0
- package/dist/accessControl.d.ts +19 -26
- package/dist/accessControl.js +195 -1423
- package/dist/adminClient.d.ts +52 -59
- package/dist/adminClient.js +364 -1142
- package/dist/answersClient.d.ts +5 -14
- package/dist/answersClient.js +19 -737
- package/dist/audience/index.d.ts +18 -18
- package/dist/audience/index.js +87 -90
- package/dist/audiencesClient.d.ts +19 -27
- package/dist/audiencesClient.js +107 -868
- package/dist/auditClient.d.ts +8 -15
- package/dist/auditClient.js +18 -791
- package/dist/authContext.d.ts +11 -16
- package/dist/authContext.js +122 -154
- package/dist/authDeviceClient.d.ts +8 -17
- package/dist/authDeviceClient.js +113 -102
- package/dist/beliefs/index.d.ts +15 -67
- package/dist/beliefs/index.js +17 -10181
- package/dist/beliefs/lifecycle.d.ts +10 -11
- package/dist/beliefs/lifecycle.js +78 -80
- package/dist/beliefsClient.d.ts +26 -32
- package/dist/beliefsClient.js +250 -990
- package/dist/boundaryClientSurface.d.ts +11 -16
- package/dist/boundaryClientSurface.js +49 -68
- package/dist/client.d.ts +64 -112
- package/dist/client.js +232 -10155
- package/dist/clientAssemblyTypes.d.ts +3 -3
- package/dist/clientAssemblyTypes.js +1 -2
- package/dist/clientConfig.d.ts +45 -59
- package/dist/clientConfig.js +1 -2
- package/dist/clientEvidenceCompat.d.ts +7 -14
- package/dist/clientEvidenceCompat.js +50 -64
- package/dist/clientGraphNamespaces.d.ts +3 -5
- package/dist/clientGraphNamespaces.js +170 -245
- package/dist/clientHelpers.d.ts +20 -25
- package/dist/clientHelpers.js +104 -127
- package/dist/clientKnowledgeNamespaces.d.ts +6 -53
- package/dist/clientKnowledgeNamespaces.js +502 -506
- package/dist/clientLocalHelpers.d.ts +11 -56
- package/dist/clientLocalHelpers.js +503 -732
- package/dist/clientPlatformNamespaces.d.ts +5 -53
- package/dist/clientPlatformNamespaces.js +229 -323
- package/dist/clientRuntime.d.ts +5 -53
- package/dist/clientRuntime.js +26 -30
- package/dist/clientWorkflowNamespaces.d.ts +6 -15
- package/dist/clientWorkflowNamespaces.js +529 -596
- package/dist/contextClient.d.ts +9 -17
- package/dist/contextClient.js +92 -805
- package/dist/contextFacade.d.ts +11 -2
- package/dist/contextFacade.js +10 -81
- package/dist/contextPackCompiler.d.ts +10 -11
- package/dist/contextPackCompiler.js +494 -1040
- package/dist/contextPackPolicy.d.ts +14 -15
- package/dist/contextPackPolicy.js +227 -305
- package/dist/contextPackSchema.d.ts +3 -3
- package/dist/contextPackSchema.js +169 -176
- package/dist/contextTypes.d.ts +14 -15
- package/dist/contextTypes.js +1 -2
- package/dist/contracts/api-enums.contract.d.ts +29 -30
- package/dist/contracts/api-enums.contract.js +162 -88
- package/dist/contracts/auth-session.contract.d.ts +13 -14
- package/dist/contracts/auth-session.contract.js +55 -52
- package/dist/contracts/context-pack.contract.d.ts +54 -55
- package/dist/contracts/context-pack.contract.js +160 -88
- package/dist/contracts/contextPack.d.ts +2 -1
- package/dist/contracts/contextPack.js +1 -97
- package/dist/contracts/index.d.ts +11 -12
- package/dist/contracts/index.js +10 -854
- package/dist/contracts/lens-filter.contract.d.ts +9 -10
- package/dist/contracts/lens-filter.contract.js +82 -58
- package/dist/contracts/lens-workflow.contract.d.ts +21 -23
- package/dist/contracts/lens-workflow.contract.js +48 -117
- package/dist/contracts/lensFilter.d.ts +2 -1
- package/dist/contracts/lensFilter.js +1 -71
- package/dist/contracts/lensWorkflow.d.ts +2 -2
- package/dist/contracts/lensWorkflow.js +1 -123
- package/dist/contracts/mcpTools.d.ts +16 -18
- package/dist/contracts/mcpTools.js +89 -123
- package/dist/contracts/prompt.contract.d.ts +4 -5
- package/dist/contracts/prompt.contract.js +23 -10
- package/dist/contracts/prompt.d.ts +2 -1
- package/dist/contracts/prompt.js +1 -11
- package/dist/contracts/sdk-tools.contract.d.ts +2 -1
- package/dist/contracts/sdk-tools.contract.js +1 -2
- package/dist/contracts/sdkTools.d.ts +2 -1
- package/dist/contracts/sdkTools.js +1 -26
- package/dist/contracts/tool-contracts.d.ts +2 -1
- package/dist/contracts/tool-contracts.js +1 -2
- package/dist/contracts/workflow-runtime.contract.d.ts +45 -46
- package/dist/contracts/workflow-runtime.contract.js +241 -228
- package/dist/contracts/workflowRuntime.d.ts +2 -1
- package/dist/contracts/workflowRuntime.js +1 -244
- package/dist/contradictions/index.d.ts +8 -60
- package/dist/contradictions/index.js +11 -10175
- package/dist/control-plane.d.ts +17 -24
- package/dist/control-plane.js +124 -840
- package/dist/controlObjectOwnership.d.ts +19 -20
- package/dist/controlObjectOwnership.js +207 -201
- package/dist/coreClient.d.ts +23 -28
- package/dist/coreClient.js +567 -692
- package/dist/customTools.d.ts +17 -21
- package/dist/customTools.js +221 -221
- package/dist/decisions/index.d.ts +7 -58
- package/dist/decisions/index.js +14 -10177
- package/dist/decisionsClient.d.ts +25 -32
- package/dist/decisionsClient.js +113 -913
- package/dist/domainContext.d.ts +2 -1
- package/dist/domainContext.js +1 -2
- package/dist/edges/index.d.ts +21 -73
- package/dist/edges/index.js +12 -10176
- package/dist/embeddingsClient.d.ts +22 -30
- package/dist/embeddingsClient.js +73 -922
- package/dist/eventingClient.d.ts +23 -31
- package/dist/eventingClient.js +89 -918
- package/dist/events.d.ts +48 -49
- package/dist/events.js +257 -241
- package/dist/eventsCore.d.ts +20 -29
- package/dist/eventsCore.js +86 -830
- package/dist/evidence/index.d.ts +9 -60
- package/dist/evidence/index.js +13 -10176
- package/dist/evidenceClient.d.ts +13 -22
- package/dist/evidenceClient.js +34 -751
- package/dist/facade/context.d.ts +7 -8
- package/dist/facade/context.js +73 -72
- package/dist/functionSurface.d.ts +2 -156
- package/dist/functionSurface.js +1 -1460
- package/dist/functionSurfaceClient.d.ts +2 -9
- package/dist/functionSurfaceClient.js +1 -1460
- package/dist/gatewayFacades.d.ts +79 -296
- package/dist/gatewayFacades.factories.d.ts +209 -14
- package/dist/gatewayFacades.factories.js +561 -2227
- package/dist/gatewayFacades.js +284 -2627
- package/dist/generated/functionSurface.d.ts +149 -0
- package/dist/generated/functionSurface.js +749 -0
- package/dist/graphAnalysisClient.d.ts +41 -49
- package/dist/graphAnalysisClient.js +185 -974
- package/dist/graphClient.d.ts +53 -60
- package/dist/graphClient.js +219 -1090
- package/dist/graphIntel.d.ts +2 -4
- package/dist/graphIntel.js +1 -2
- package/dist/graphIntelligence.d.ts +4 -2
- package/dist/graphIntelligence.js +2 -46
- package/dist/graphRecommendationsClient.d.ts +15 -23
- package/dist/graphRecommendationsClient.js +70 -849
- package/dist/graphStateClassifierClient.d.ts +17 -25
- package/dist/graphStateClassifierClient.js +67 -908
- package/dist/harnessClient.d.ts +40 -47
- package/dist/harnessClient.js +198 -993
- package/dist/identityClient.d.ts +25 -33
- package/dist/identityClient.js +245 -1186
- package/dist/index.d.ts +73 -69
- package/dist/index.js +72 -13313
- package/dist/infisicalRuntime.d.ts +12 -14
- package/dist/infisicalRuntime.js +290 -297
- package/dist/jobsClient.d.ts +24 -32
- package/dist/jobsClient.js +101 -916
- package/dist/learningClient.d.ts +8 -16
- package/dist/learningClient.js +45 -809
- package/dist/lenses/index.d.ts +13 -65
- package/dist/lenses/index.js +11 -10175
- package/dist/mcpClient.d.ts +14 -23
- package/dist/mcpClient.js +115 -856
- package/dist/modelRuntimeClient.d.ts +18 -26
- package/dist/modelRuntimeClient.js +74 -894
- package/dist/nodes/index.d.ts +7 -58
- package/dist/nodes/index.js +14 -10177
- package/dist/ontologies/index.d.ts +21 -73
- package/dist/ontologies/index.js +14 -10178
- package/dist/ontologyClient.d.ts +23 -31
- package/dist/ontologyClient.js +138 -924
- package/dist/ontologyLinksClient.d.ts +16 -24
- package/dist/ontologyLinksClient.js +76 -886
- package/dist/opinion.d.ts +5 -6
- package/dist/opinion.js +21 -25
- package/dist/orgGraphSearchClient.d.ts +19 -27
- package/dist/orgGraphSearchClient.js +89 -857
- package/dist/packRuntime.d.ts +2 -2
- package/dist/packRuntime.js +1 -2
- package/dist/packsClient.d.ts +30 -37
- package/dist/packsClient.js +131 -906
- package/dist/policyClient.d.ts +21 -29
- package/dist/policyClient.js +267 -1026
- package/dist/proof-attestation.json +1 -1
- package/dist/questions/index.d.ts +9 -60
- package/dist/questions/index.js +15 -10178
- package/dist/realtime/index.d.ts +20 -16
- package/dist/realtime/index.js +30 -19
- package/dist/realtime/refs.d.ts +4 -6
- package/dist/realtime/refs.js +12 -7
- package/dist/realtime-refs.d.ts +1 -0
- package/dist/realtime-refs.js +1 -0
- package/dist/realtime.d.ts +1 -0
- package/dist/realtime.js +1 -0
- package/dist/reportsClient.d.ts +10 -19
- package/dist/reportsClient.js +48 -836
- package/dist/schemaClient.d.ts +16 -23
- package/dist/schemaClient.js +62 -832
- package/dist/sdkSurface.d.ts +18 -25
- package/dist/sdkSurface.js +135 -106
- package/dist/secrets.d.ts +2 -1
- package/dist/secrets.js +1 -2
- package/dist/sourcesClient.d.ts +11 -18
- package/dist/sourcesClient.js +18 -741
- package/dist/telemetryClient.d.ts +22 -30
- package/dist/telemetryClient.js +107 -931
- package/dist/toolRegistryClient.d.ts +27 -35
- package/dist/toolRegistryClient.js +116 -954
- package/dist/topics/index.d.ts +13 -64
- package/dist/topics/index.js +15 -10178
- package/dist/topicsClient.d.ts +19 -27
- package/dist/topicsClient.js +106 -894
- package/dist/types.d.ts +84 -87
- package/dist/types.js +1 -2
- package/dist/version.d.ts +2 -3
- package/dist/version.js +2 -5
- package/dist/workflowClient.d.ts +60 -65
- package/dist/workflowClient.js +343 -1219
- package/dist/worktrees/index.d.ts +16 -68
- package/dist/worktrees/index.js +14 -10178
- package/package.json +6 -6
- package/dist/accessControl.js.map +0 -1
- package/dist/adminClient.js.map +0 -1
- package/dist/answersClient.js.map +0 -1
- package/dist/audience/index.js.map +0 -1
- package/dist/audiencesClient.js.map +0 -1
- package/dist/auditClient.js.map +0 -1
- package/dist/authContext.js.map +0 -1
- package/dist/authDeviceClient.js.map +0 -1
- package/dist/beliefs/index.js.map +0 -1
- package/dist/beliefs/lifecycle.js.map +0 -1
- package/dist/beliefsClient.js.map +0 -1
- package/dist/boundaryClientSurface.js.map +0 -1
- package/dist/client.js.map +0 -1
- package/dist/clientAssemblyTypes.js.map +0 -1
- package/dist/clientConfig.js.map +0 -1
- package/dist/clientEvidenceCompat.js.map +0 -1
- package/dist/clientGraphNamespaces.js.map +0 -1
- package/dist/clientHelpers.js.map +0 -1
- package/dist/clientKnowledgeNamespaces.js.map +0 -1
- package/dist/clientLocalHelpers.js.map +0 -1
- package/dist/clientPlatformNamespaces.js.map +0 -1
- package/dist/clientRuntime.js.map +0 -1
- package/dist/clientWorkflowNamespaces.js.map +0 -1
- package/dist/contextClient.js.map +0 -1
- package/dist/contextFacade.js.map +0 -1
- package/dist/contextPackCompiler.js.map +0 -1
- package/dist/contextPackPolicy.js.map +0 -1
- package/dist/contextPackSchema.js.map +0 -1
- package/dist/contextTypes.js.map +0 -1
- package/dist/contracts/api-enums.contract.js.map +0 -1
- package/dist/contracts/auth-session.contract.js.map +0 -1
- package/dist/contracts/context-pack.contract.js.map +0 -1
- package/dist/contracts/contextPack.js.map +0 -1
- package/dist/contracts/index.js.map +0 -1
- package/dist/contracts/lens-filter.contract.js.map +0 -1
- package/dist/contracts/lens-workflow.contract.js.map +0 -1
- package/dist/contracts/lensFilter.js.map +0 -1
- package/dist/contracts/lensWorkflow.js.map +0 -1
- package/dist/contracts/mcpTools.js.map +0 -1
- package/dist/contracts/prompt.contract.js.map +0 -1
- package/dist/contracts/prompt.js.map +0 -1
- package/dist/contracts/sdk-tools.contract.js.map +0 -1
- package/dist/contracts/sdkTools.js.map +0 -1
- package/dist/contracts/tool-contracts.js.map +0 -1
- package/dist/contracts/workflow-runtime.contract.js.map +0 -1
- package/dist/contracts/workflowRuntime.js.map +0 -1
- package/dist/contradictions/index.js.map +0 -1
- package/dist/control-plane.js.map +0 -1
- package/dist/controlObjectOwnership.js.map +0 -1
- package/dist/coreClient.js.map +0 -1
- package/dist/customTools.js.map +0 -1
- package/dist/decisions/index.js.map +0 -1
- package/dist/decisionsClient.js.map +0 -1
- package/dist/domainContext.js.map +0 -1
- package/dist/edges/index.js.map +0 -1
- package/dist/embeddingsClient.js.map +0 -1
- package/dist/eventingClient.js.map +0 -1
- package/dist/events.js.map +0 -1
- package/dist/eventsCore.js.map +0 -1
- package/dist/evidence/index.js.map +0 -1
- package/dist/evidenceClient.js.map +0 -1
- package/dist/facade/context.js.map +0 -1
- package/dist/functionSurface.js.map +0 -1
- package/dist/functionSurfaceClient.js.map +0 -1
- package/dist/gatewayFacades.factories.js.map +0 -1
- package/dist/gatewayFacades.js.map +0 -1
- package/dist/graphAnalysisClient.js.map +0 -1
- package/dist/graphClient.js.map +0 -1
- package/dist/graphIntel.js.map +0 -1
- package/dist/graphIntelligence.js.map +0 -1
- package/dist/graphRecommendationsClient.js.map +0 -1
- package/dist/graphStateClassifierClient.js.map +0 -1
- package/dist/harnessClient.js.map +0 -1
- package/dist/identityClient.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/infisicalRuntime.js.map +0 -1
- package/dist/jobsClient.js.map +0 -1
- package/dist/learningClient.js.map +0 -1
- package/dist/lenses/index.js.map +0 -1
- package/dist/mcpClient.js.map +0 -1
- package/dist/modelRuntimeClient.js.map +0 -1
- package/dist/nodes/index.js.map +0 -1
- package/dist/ontologies/index.js.map +0 -1
- package/dist/ontologyClient.js.map +0 -1
- package/dist/ontologyLinksClient.js.map +0 -1
- package/dist/opinion.js.map +0 -1
- package/dist/orgGraphSearchClient.js.map +0 -1
- package/dist/packRuntime.js.map +0 -1
- package/dist/packsClient.js.map +0 -1
- package/dist/policyClient.js.map +0 -1
- package/dist/questions/index.js.map +0 -1
- package/dist/realtime/index.js.map +0 -1
- package/dist/realtime/refs.js.map +0 -1
- package/dist/reportsClient.js.map +0 -1
- package/dist/schemaClient.js.map +0 -1
- package/dist/sdk-tools.contract-B4c1Zr1o.d.ts +0 -22
- package/dist/sdkSurface.js.map +0 -1
- package/dist/secrets.js.map +0 -1
- package/dist/sourcesClient.js.map +0 -1
- package/dist/telemetryClient.js.map +0 -1
- package/dist/tool-contracts-BUiL9P6z.d.ts +0 -22
- package/dist/toolRegistryClient.js.map +0 -1
- package/dist/topics/index.js.map +0 -1
- package/dist/topicsClient.js.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/version.js.map +0 -1
- package/dist/workflowClient.js.map +0 -1
- package/dist/worktrees/index.js.map +0 -1
package/dist/events.js
CHANGED
|
@@ -1,254 +1,270 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
"webhook.test"
|
|
1
|
+
export const DOMAIN_EVENT_VERSION = "1.0";
|
|
2
|
+
export const EVENT_RETENTION_DEFAULT_DAYS = 30;
|
|
3
|
+
export const WEBHOOK_MAX_ATTEMPTS = 5;
|
|
4
|
+
export const WEBHOOK_RETRY_DELAYS_MS = [1_000, 5_000, 30_000, 300_000];
|
|
5
|
+
export const DOMAIN_EVENT_TYPES = [
|
|
6
|
+
"belief.created",
|
|
7
|
+
"belief.forked",
|
|
8
|
+
"belief.confidence_updated",
|
|
9
|
+
"belief.archived",
|
|
10
|
+
"belief.refined",
|
|
11
|
+
"belief.contract_created",
|
|
12
|
+
"belief.contract_evaluated",
|
|
13
|
+
"belief.lineage_queried",
|
|
14
|
+
"evidence.created",
|
|
15
|
+
"evidence.linked",
|
|
16
|
+
"evidence.search_executed",
|
|
17
|
+
"question.created",
|
|
18
|
+
"question.answered",
|
|
19
|
+
"question.refined",
|
|
20
|
+
"question.status_updated",
|
|
21
|
+
"question.archived",
|
|
22
|
+
"edge.created",
|
|
23
|
+
"contradiction.flagged",
|
|
24
|
+
"worktree.created",
|
|
25
|
+
"worktree.activated",
|
|
26
|
+
"worktree.merged",
|
|
27
|
+
"worktree.targets_updated",
|
|
28
|
+
"worktree.metadata_updated",
|
|
29
|
+
"topic.created",
|
|
30
|
+
"topic.updated",
|
|
31
|
+
"topic.archived",
|
|
32
|
+
"task.created",
|
|
33
|
+
"task.completed",
|
|
34
|
+
"task.updated",
|
|
35
|
+
"ontology.bound",
|
|
36
|
+
"context.compiled",
|
|
37
|
+
"identity.key_created",
|
|
38
|
+
"identity.key_rotated",
|
|
39
|
+
"identity.key_revoked",
|
|
40
|
+
"webhook.test",
|
|
42
41
|
];
|
|
43
|
-
|
|
44
|
-
|
|
42
|
+
const RUNTIME_BUFFER = globalThis.Buffer;
|
|
43
|
+
const RUNTIME_ENV = globalThis.process?.env;
|
|
45
44
|
function escapeRegex(value) {
|
|
46
|
-
|
|
47
|
-
}
|
|
48
|
-
function eventPatternToRegExp(pattern) {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
}
|
|
59
|
-
function matchesEventPattern(eventType, pattern) {
|
|
60
|
-
|
|
61
|
-
}
|
|
62
|
-
function matchesAnyEventPattern(eventType, patterns) {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
45
|
+
return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
46
|
+
}
|
|
47
|
+
export function eventPatternToRegExp(pattern) {
|
|
48
|
+
const normalized = pattern.trim();
|
|
49
|
+
if (!normalized) {
|
|
50
|
+
return /^$/;
|
|
51
|
+
}
|
|
52
|
+
if (normalized === "*") {
|
|
53
|
+
return /^.*$/;
|
|
54
|
+
}
|
|
55
|
+
const source = escapeRegex(normalized).replace(/\\\*/g, ".*");
|
|
56
|
+
return new RegExp(`^${source}$`);
|
|
57
|
+
}
|
|
58
|
+
export function matchesEventPattern(eventType, pattern) {
|
|
59
|
+
return eventPatternToRegExp(pattern).test(eventType.trim());
|
|
60
|
+
}
|
|
61
|
+
export function matchesAnyEventPattern(eventType, patterns) {
|
|
62
|
+
if (patterns.length === 0) {
|
|
63
|
+
return true;
|
|
64
|
+
}
|
|
65
|
+
return patterns.some((pattern) => matchesEventPattern(eventType, pattern));
|
|
67
66
|
}
|
|
68
67
|
function toBase64(value) {
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
68
|
+
if (RUNTIME_BUFFER) {
|
|
69
|
+
return RUNTIME_BUFFER.from(value, "utf8").toString("base64url");
|
|
70
|
+
}
|
|
71
|
+
return btoa(unescape(encodeURIComponent(value)))
|
|
72
|
+
.replace(/\+/g, "-")
|
|
73
|
+
.replace(/\//g, "_")
|
|
74
|
+
.replace(/=+$/g, "");
|
|
73
75
|
}
|
|
74
76
|
function fromBase64(value) {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
77
|
+
if (RUNTIME_BUFFER) {
|
|
78
|
+
return RUNTIME_BUFFER.from(value, "base64url").toString("utf8");
|
|
79
|
+
}
|
|
80
|
+
const normalized = value.replace(/-/g, "+").replace(/_/g, "/");
|
|
81
|
+
return decodeURIComponent(escape(atob(normalized)));
|
|
80
82
|
}
|
|
81
83
|
function isRecord(value) {
|
|
82
|
-
|
|
83
|
-
}
|
|
84
|
-
function createEventId() {
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
return Math.max(1, Math.trunc(value));
|
|
96
|
-
}
|
|
97
|
-
function buildDomainEvent(input) {
|
|
98
|
-
const timestamp = input.timestamp ?? Date.now();
|
|
99
|
-
const retentionDays = normalizeRetentionDays(input.retentionDays);
|
|
100
|
-
return {
|
|
101
|
-
eventId: input.eventId?.trim() || createEventId(),
|
|
102
|
-
type: input.type.trim(),
|
|
103
|
-
version: DOMAIN_EVENT_VERSION,
|
|
104
|
-
timestamp,
|
|
105
|
-
tenantId: input.tenantId?.trim() || void 0,
|
|
106
|
-
workspaceId: input.workspaceId?.trim() || void 0,
|
|
107
|
-
topicId: input.topicId.trim(),
|
|
108
|
-
resourceId: input.resourceId.trim(),
|
|
109
|
-
resourceType: input.resourceType.trim(),
|
|
110
|
-
actorId: input.actorId.trim(),
|
|
111
|
-
actorType: input.actorType,
|
|
112
|
-
data: input.data ?? {},
|
|
113
|
-
correlationId: input.correlationId?.trim() || void 0,
|
|
114
|
-
expiresAt: timestamp + retentionDays * 24 * 60 * 60 * 1e3
|
|
115
|
-
};
|
|
116
|
-
}
|
|
117
|
-
function compareEventCursor(left, right) {
|
|
118
|
-
if (left.timestamp !== right.timestamp) {
|
|
119
|
-
return left.timestamp - right.timestamp;
|
|
120
|
-
}
|
|
121
|
-
return left.eventId.localeCompare(right.eventId);
|
|
122
|
-
}
|
|
123
|
-
function encodeEventCursor(cursor) {
|
|
124
|
-
return toBase64(JSON.stringify(cursor));
|
|
125
|
-
}
|
|
126
|
-
function decodeEventCursor(cursor) {
|
|
127
|
-
if (!cursor || cursor.trim().length === 0) {
|
|
128
|
-
return null;
|
|
129
|
-
}
|
|
130
|
-
try {
|
|
131
|
-
const parsed = JSON.parse(fromBase64(cursor.trim()));
|
|
132
|
-
if (!isRecord(parsed) || typeof parsed.timestamp !== "number" || !Number.isFinite(parsed.timestamp) || typeof parsed.eventId !== "string" || parsed.eventId.trim().length === 0) {
|
|
133
|
-
return null;
|
|
84
|
+
return Boolean(value) && typeof value === "object" && !Array.isArray(value);
|
|
85
|
+
}
|
|
86
|
+
export function createEventId() {
|
|
87
|
+
const random = typeof globalThis.crypto?.randomUUID === "function"
|
|
88
|
+
? globalThis.crypto.randomUUID().replace(/-/g, "")
|
|
89
|
+
: Array.from(typeof globalThis.crypto?.getRandomValues === "function"
|
|
90
|
+
? globalThis.crypto.getRandomValues(new Uint8Array(16))
|
|
91
|
+
: Array.from({ length: 16 }, () => Math.floor(Math.random() * 256)), (value) => value.toString(16).padStart(2, "0")).join("");
|
|
92
|
+
return `evt_${random}`;
|
|
93
|
+
}
|
|
94
|
+
export function normalizeRetentionDays(value) {
|
|
95
|
+
if (!Number.isFinite(value) || typeof value !== "number" || value <= 0) {
|
|
96
|
+
return EVENT_RETENTION_DEFAULT_DAYS;
|
|
134
97
|
}
|
|
98
|
+
return Math.max(1, Math.trunc(value));
|
|
99
|
+
}
|
|
100
|
+
export function buildDomainEvent(input) {
|
|
101
|
+
const timestamp = input.timestamp ?? Date.now();
|
|
102
|
+
const retentionDays = normalizeRetentionDays(input.retentionDays);
|
|
135
103
|
return {
|
|
136
|
-
|
|
137
|
-
|
|
104
|
+
eventId: input.eventId?.trim() || createEventId(),
|
|
105
|
+
type: input.type.trim(),
|
|
106
|
+
version: DOMAIN_EVENT_VERSION,
|
|
107
|
+
timestamp,
|
|
108
|
+
tenantId: input.tenantId?.trim() || undefined,
|
|
109
|
+
workspaceId: input.workspaceId?.trim() || undefined,
|
|
110
|
+
topicId: input.topicId.trim(),
|
|
111
|
+
resourceId: input.resourceId.trim(),
|
|
112
|
+
resourceType: input.resourceType.trim(),
|
|
113
|
+
actorId: input.actorId.trim(),
|
|
114
|
+
actorType: input.actorType,
|
|
115
|
+
data: input.data ?? {},
|
|
116
|
+
correlationId: input.correlationId?.trim() || undefined,
|
|
117
|
+
expiresAt: timestamp + retentionDays * 24 * 60 * 60 * 1000,
|
|
138
118
|
};
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
}
|
|
149
|
-
function
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
119
|
+
}
|
|
120
|
+
export function compareEventCursor(left, right) {
|
|
121
|
+
if (left.timestamp !== right.timestamp) {
|
|
122
|
+
return left.timestamp - right.timestamp;
|
|
123
|
+
}
|
|
124
|
+
return left.eventId.localeCompare(right.eventId);
|
|
125
|
+
}
|
|
126
|
+
export function encodeEventCursor(cursor) {
|
|
127
|
+
return toBase64(JSON.stringify(cursor));
|
|
128
|
+
}
|
|
129
|
+
export function decodeEventCursor(cursor) {
|
|
130
|
+
if (!cursor || cursor.trim().length === 0) {
|
|
131
|
+
return null;
|
|
132
|
+
}
|
|
133
|
+
try {
|
|
134
|
+
const parsed = JSON.parse(fromBase64(cursor.trim()));
|
|
135
|
+
if (!isRecord(parsed) ||
|
|
136
|
+
typeof parsed.timestamp !== "number" ||
|
|
137
|
+
!Number.isFinite(parsed.timestamp) ||
|
|
138
|
+
typeof parsed.eventId !== "string" ||
|
|
139
|
+
parsed.eventId.trim().length === 0) {
|
|
140
|
+
return null;
|
|
141
|
+
}
|
|
142
|
+
return {
|
|
143
|
+
timestamp: parsed.timestamp,
|
|
144
|
+
eventId: parsed.eventId.trim(),
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
catch (error) {
|
|
148
|
+
void error;
|
|
149
|
+
return null;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
export function isAfterCursor(event, cursor) {
|
|
153
|
+
if (!cursor) {
|
|
154
|
+
return true;
|
|
155
|
+
}
|
|
156
|
+
return compareEventCursor(event, cursor) > 0;
|
|
157
|
+
}
|
|
158
|
+
export function sortEventsByCursor(events) {
|
|
159
|
+
return [...events].sort((left, right) => compareEventCursor(left, right));
|
|
160
|
+
}
|
|
161
|
+
export function inferActorType(args) {
|
|
162
|
+
if (args.sessionType === "agent") {
|
|
163
|
+
return "agent";
|
|
164
|
+
}
|
|
165
|
+
if (args.authMode === "service_principal" ||
|
|
166
|
+
args.authMode === "tenant_api_key" ||
|
|
167
|
+
args.principalType === "service") {
|
|
168
|
+
return "service";
|
|
169
|
+
}
|
|
170
|
+
return "human";
|
|
171
|
+
}
|
|
172
|
+
export async function emitDomainEvent(invokeMutation, input) {
|
|
173
|
+
return await invokeMutation("events:recordEvent", input);
|
|
174
|
+
}
|
|
175
|
+
const LOCALHOST_HOSTS = new Set(["localhost", "127.0.0.1", "::1"]);
|
|
165
176
|
function normalizeUrl(url) {
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
}
|
|
193
|
-
function assertValidWebhookSecret(secret) {
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
}
|
|
200
|
-
async function computeWebhookSignature(payload, secret) {
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
"
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
return
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
177
|
+
try {
|
|
178
|
+
return new URL(url.trim());
|
|
179
|
+
}
|
|
180
|
+
catch (error) {
|
|
181
|
+
void error;
|
|
182
|
+
throw new Error("Webhook URL must be a valid absolute URL.");
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
export function assertValidWebhookUrl(url) {
|
|
186
|
+
const parsed = normalizeUrl(url);
|
|
187
|
+
const hostname = parsed.hostname.trim().toLowerCase();
|
|
188
|
+
const nodeEnv = RUNTIME_ENV?.NODE_ENV;
|
|
189
|
+
const allowLocalHttp = nodeEnv === "test" || LOCALHOST_HOSTS.has(hostname);
|
|
190
|
+
if (parsed.protocol !== "https:" && !(allowLocalHttp && parsed.protocol === "http:")) {
|
|
191
|
+
throw new Error("Webhook URL must use HTTPS.");
|
|
192
|
+
}
|
|
193
|
+
return parsed.toString();
|
|
194
|
+
}
|
|
195
|
+
export function normalizeWebhookPatterns(patterns) {
|
|
196
|
+
const normalized = Array.from(new Set(patterns
|
|
197
|
+
.map((pattern) => pattern.trim())
|
|
198
|
+
.filter((pattern) => pattern.length > 0)));
|
|
199
|
+
if (normalized.length === 0) {
|
|
200
|
+
throw new Error("At least one webhook event pattern is required.");
|
|
201
|
+
}
|
|
202
|
+
return normalized;
|
|
203
|
+
}
|
|
204
|
+
export function assertValidWebhookSecret(secret) {
|
|
205
|
+
const normalized = secret.trim();
|
|
206
|
+
if (normalized.length < 8) {
|
|
207
|
+
throw new Error("Webhook secret must be at least 8 characters.");
|
|
208
|
+
}
|
|
209
|
+
return normalized;
|
|
210
|
+
}
|
|
211
|
+
export async function computeWebhookSignature(payload, secret) {
|
|
212
|
+
const encoder = new TextEncoder();
|
|
213
|
+
const key = await crypto.subtle.importKey("raw", encoder.encode(secret), { name: "HMAC", hash: "SHA-256" }, false, ["sign"]);
|
|
214
|
+
const signature = await crypto.subtle.sign("HMAC", key, encoder.encode(payload));
|
|
215
|
+
return Array.from(new Uint8Array(signature))
|
|
216
|
+
.map((byte) => byte.toString(16).padStart(2, "0"))
|
|
217
|
+
.join("");
|
|
218
|
+
}
|
|
219
|
+
export function nextDeliveryAttemptAt(currentAttemptCount, now = Date.now()) {
|
|
220
|
+
if (currentAttemptCount >= WEBHOOK_MAX_ATTEMPTS) {
|
|
221
|
+
return undefined;
|
|
222
|
+
}
|
|
223
|
+
const retryIndex = currentAttemptCount - 1;
|
|
224
|
+
const delay = WEBHOOK_RETRY_DELAYS_MS[retryIndex];
|
|
225
|
+
return typeof delay === "number" ? now + delay : undefined;
|
|
226
|
+
}
|
|
227
|
+
export function resolveDeliveryFailureStatus(attemptCount) {
|
|
228
|
+
return attemptCount >= WEBHOOK_MAX_ATTEMPTS ? "dead_letter" : "failed";
|
|
229
|
+
}
|
|
230
|
+
export function sanitizeWebhookRecord(value) {
|
|
231
|
+
return {
|
|
232
|
+
id: String(value.id ?? value.webhookId ?? value._id ?? ""),
|
|
233
|
+
webhookId: String(value.webhookId ?? value.id ?? value._id ?? ""),
|
|
234
|
+
tenantId: typeof value.tenantId === "string" && value.tenantId.trim().length > 0
|
|
235
|
+
? value.tenantId
|
|
236
|
+
: undefined,
|
|
237
|
+
workspaceId: typeof value.workspaceId === "string" && value.workspaceId.trim().length > 0
|
|
238
|
+
? value.workspaceId
|
|
239
|
+
: undefined,
|
|
240
|
+
topicId: typeof value.topicId === "string" && value.topicId.trim().length > 0
|
|
241
|
+
? value.topicId
|
|
242
|
+
: undefined,
|
|
243
|
+
url: String(value.url ?? ""),
|
|
244
|
+
events: Array.isArray(value.events)
|
|
245
|
+
? value.events
|
|
246
|
+
.map((entry) => (typeof entry === "string" ? entry.trim() : ""))
|
|
247
|
+
.filter(Boolean)
|
|
248
|
+
: [],
|
|
249
|
+
active: value.active !== false,
|
|
250
|
+
secretConfigured: true,
|
|
251
|
+
createdAt: Number(value.createdAt ?? Date.now()),
|
|
252
|
+
updatedAt: Number(value.updatedAt ?? value.createdAt ?? Date.now()),
|
|
253
|
+
createdBy: String(value.createdBy ?? ""),
|
|
254
|
+
updatedBy: String(value.updatedBy ?? value.createdBy ?? ""),
|
|
255
|
+
lastDeliveryAt: typeof value.lastDeliveryAt === "number" ? value.lastDeliveryAt : undefined,
|
|
256
|
+
lastSuccessfulDeliveryAt: typeof value.lastSuccessfulDeliveryAt === "number"
|
|
257
|
+
? value.lastSuccessfulDeliveryAt
|
|
258
|
+
: undefined,
|
|
259
|
+
};
|
|
260
|
+
}
|
|
261
|
+
export function truncateWebhookResponseBody(responseBody, maxLength = 2_000) {
|
|
262
|
+
if (!responseBody) {
|
|
263
|
+
return undefined;
|
|
264
|
+
}
|
|
265
|
+
if (responseBody.length <= maxLength) {
|
|
266
|
+
return responseBody;
|
|
267
|
+
}
|
|
268
|
+
return `${responseBody.slice(0, maxLength - 3)}...`;
|
|
269
|
+
}
|
|
254
270
|
//# sourceMappingURL=events.js.map
|
package/dist/eventsCore.d.ts
CHANGED
|
@@ -1,42 +1,34 @@
|
|
|
1
|
-
import { GatewayClientConfig, PlatformGatewaySuccess } from
|
|
2
|
-
import { EventListResult, ReplayEventsResult,
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
import './contracts/lens-workflow.contract.js';
|
|
9
|
-
import './contracts/lens-filter.contract.js';
|
|
10
|
-
|
|
11
|
-
type EventsClientCoreConfig = GatewayClientConfig;
|
|
12
|
-
type EventsListResponse = PlatformGatewaySuccess<EventListResult>;
|
|
13
|
-
type EventsReplayResponse = PlatformGatewaySuccess<ReplayEventsResult>;
|
|
14
|
-
type WebhooksClientCoreConfig = GatewayClientConfig;
|
|
15
|
-
type WebhookListQuery = {
|
|
1
|
+
import { type GatewayClientConfig, type PlatformGatewaySuccess } from "./coreClient";
|
|
2
|
+
import type { EventListQuery, EventListResult, ReplayEventsInput, ReplayEventsResult, WebhookCreateInput, WebhookDeliveriesResult, WebhookHealthResult, WebhookRecord, WebhookTestResult, WebhookUpdateInput } from "./events";
|
|
3
|
+
export type EventsClientCoreConfig = GatewayClientConfig;
|
|
4
|
+
export type EventsListResponse = PlatformGatewaySuccess<EventListResult>;
|
|
5
|
+
export type EventsReplayResponse = PlatformGatewaySuccess<ReplayEventsResult>;
|
|
6
|
+
export type WebhooksClientCoreConfig = GatewayClientConfig;
|
|
7
|
+
export type WebhookListQuery = {
|
|
16
8
|
topicId?: string;
|
|
17
9
|
};
|
|
18
|
-
type WebhookDeliveriesQuery = {
|
|
10
|
+
export type WebhookDeliveriesQuery = {
|
|
19
11
|
limit?: number;
|
|
20
12
|
};
|
|
21
|
-
type WebhookDeleteResult = {
|
|
13
|
+
export type WebhookDeleteResult = {
|
|
22
14
|
webhookId: string;
|
|
23
15
|
deleted: boolean;
|
|
24
16
|
};
|
|
25
|
-
type WebhooksCreateResponse = PlatformGatewaySuccess<WebhookRecord>;
|
|
26
|
-
type WebhooksListResponse = PlatformGatewaySuccess<{
|
|
17
|
+
export type WebhooksCreateResponse = PlatformGatewaySuccess<WebhookRecord>;
|
|
18
|
+
export type WebhooksListResponse = PlatformGatewaySuccess<{
|
|
27
19
|
webhooks: WebhookRecord[];
|
|
28
20
|
}>;
|
|
29
|
-
type WebhooksGetResponse = PlatformGatewaySuccess<WebhookRecord>;
|
|
30
|
-
type WebhooksUpdateResponse = PlatformGatewaySuccess<WebhookRecord>;
|
|
31
|
-
type WebhooksDeleteResponse = PlatformGatewaySuccess<WebhookDeleteResult>;
|
|
32
|
-
type WebhooksTestResponse = PlatformGatewaySuccess<WebhookTestResult>;
|
|
33
|
-
type WebhooksDeliveriesResponse = PlatformGatewaySuccess<WebhookDeliveriesResult>;
|
|
34
|
-
type WebhooksHealthResponse = PlatformGatewaySuccess<WebhookHealthResult>;
|
|
35
|
-
declare function createEventsClientCore(config?: EventsClientCoreConfig): {
|
|
21
|
+
export type WebhooksGetResponse = PlatformGatewaySuccess<WebhookRecord>;
|
|
22
|
+
export type WebhooksUpdateResponse = PlatformGatewaySuccess<WebhookRecord>;
|
|
23
|
+
export type WebhooksDeleteResponse = PlatformGatewaySuccess<WebhookDeleteResult>;
|
|
24
|
+
export type WebhooksTestResponse = PlatformGatewaySuccess<WebhookTestResult>;
|
|
25
|
+
export type WebhooksDeliveriesResponse = PlatformGatewaySuccess<WebhookDeliveriesResult>;
|
|
26
|
+
export type WebhooksHealthResponse = PlatformGatewaySuccess<WebhookHealthResult>;
|
|
27
|
+
export declare function createEventsClientCore(config?: EventsClientCoreConfig): {
|
|
36
28
|
list(query?: EventListQuery): Promise<EventsListResponse>;
|
|
37
29
|
replay(input: ReplayEventsInput, idempotencyKey?: string): Promise<EventsReplayResponse>;
|
|
38
30
|
};
|
|
39
|
-
declare function createWebhooksClientCore(config?: WebhooksClientCoreConfig): {
|
|
31
|
+
export declare function createWebhooksClientCore(config?: WebhooksClientCoreConfig): {
|
|
40
32
|
create(input: WebhookCreateInput, idempotencyKey?: string): Promise<WebhooksCreateResponse>;
|
|
41
33
|
list(query?: WebhookListQuery): Promise<WebhooksListResponse>;
|
|
42
34
|
get(id: string): Promise<WebhooksGetResponse>;
|
|
@@ -48,5 +40,4 @@ declare function createWebhooksClientCore(config?: WebhooksClientCoreConfig): {
|
|
|
48
40
|
deliveries(id: string, query?: WebhookDeliveriesQuery): Promise<WebhooksDeliveriesResponse>;
|
|
49
41
|
health(id: string): Promise<WebhooksHealthResponse>;
|
|
50
42
|
};
|
|
51
|
-
|
|
52
|
-
export { type EventsClientCoreConfig, type EventsListResponse, type EventsReplayResponse, type WebhookDeleteResult, type WebhookDeliveriesQuery, type WebhookListQuery, type WebhooksClientCoreConfig, type WebhooksCreateResponse, type WebhooksDeleteResponse, type WebhooksDeliveriesResponse, type WebhooksGetResponse, type WebhooksHealthResponse, type WebhooksListResponse, type WebhooksTestResponse, type WebhooksUpdateResponse, createEventsClientCore, createWebhooksClientCore };
|
|
43
|
+
//# sourceMappingURL=eventsCore.d.ts.map
|