@lucern/sdk 0.3.0-alpha.0 → 0.3.0-alpha.10
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/README.md +84 -25
- package/dist/adminClient.d.ts +10 -8
- package/dist/adminClient.js +242 -39
- package/dist/adminClient.js.map +1 -1
- package/dist/answersClient.d.ts +2 -0
- package/dist/answersClient.js +221 -11
- package/dist/answersClient.js.map +1 -1
- package/dist/audience/index.d.ts +2 -1
- package/dist/audience/index.js +1 -3
- package/dist/audience/index.js.map +1 -1
- package/dist/audiencesClient.d.ts +18 -16
- package/dist/audiencesClient.js +297 -90
- package/dist/audiencesClient.js.map +1 -1
- package/dist/auditClient.d.ts +2 -0
- package/dist/auditClient.js +227 -15
- package/dist/auditClient.js.map +1 -1
- package/dist/authContext.d.ts +56 -0
- package/dist/authContext.js +170 -0
- package/dist/authContext.js.map +1 -0
- package/dist/authDeviceClient.d.ts +49 -0
- package/dist/authDeviceClient.js +121 -0
- package/dist/authDeviceClient.js.map +1 -0
- package/dist/beliefs/index.d.ts +31 -11
- package/dist/beliefs/index.js +3347 -1109
- package/dist/beliefs/index.js.map +1 -1
- package/dist/beliefsClient.d.ts +18 -31
- package/dist/beliefsClient.js +264 -97
- package/dist/beliefsClient.js.map +1 -1
- package/dist/boundaryClientSurface.d.ts +20 -0
- package/dist/boundaryClientSurface.js +73 -0
- package/dist/boundaryClientSurface.js.map +1 -0
- package/dist/client.d.ts +2969 -27
- package/dist/client.js +3347 -1109
- package/dist/client.js.map +1 -1
- package/dist/clientHelpers.d.ts +48 -0
- package/dist/clientHelpers.js +137 -0
- package/dist/clientHelpers.js.map +1 -0
- package/dist/contextClient.d.ts +6 -3
- package/dist/contextClient.js +252 -30
- package/dist/contextClient.js.map +1 -1
- package/dist/contextFacade.js +25 -16
- package/dist/contextFacade.js.map +1 -1
- package/dist/contextPackCompiler.js +19 -30
- package/dist/contextPackCompiler.js.map +1 -1
- package/dist/contextPackPolicy.js +7 -17
- package/dist/contextPackPolicy.js.map +1 -1
- package/dist/contextTypes.d.ts +2 -0
- package/dist/contracts/api-enums.contract.d.ts +1 -1
- package/dist/contracts/api-enums.contract.js.map +1 -1
- package/dist/contracts/index.d.ts +1 -0
- package/dist/contracts/index.js +109 -5
- package/dist/contracts/index.js.map +1 -1
- package/dist/contracts/lens-filter.contract.js +4 -3
- package/dist/contracts/lens-filter.contract.js.map +1 -1
- package/dist/contracts/lens-workflow.contract.js +4 -3
- package/dist/contracts/lens-workflow.contract.js.map +1 -1
- package/dist/contracts/lensFilter.js +4 -3
- package/dist/contracts/lensFilter.js.map +1 -1
- package/dist/contracts/lensWorkflow.js +4 -3
- package/dist/contracts/lensWorkflow.js.map +1 -1
- package/dist/contracts/mcpTools.d.ts +46 -1
- package/dist/contracts/mcpTools.js +102 -0
- package/dist/contracts/mcpTools.js.map +1 -1
- package/dist/contracts/workflow-runtime.contract.js +1 -1
- package/dist/contracts/workflow-runtime.contract.js.map +1 -1
- package/dist/contracts/workflowRuntime.js +1 -1
- package/dist/contracts/workflowRuntime.js.map +1 -1
- package/dist/contradictions/index.d.ts +24 -4
- package/dist/contradictions/index.js +3347 -1109
- package/dist/contradictions/index.js.map +1 -1
- package/dist/coreClient.d.ts +11 -1
- package/dist/coreClient.js +222 -14
- package/dist/coreClient.js.map +1 -1
- package/dist/decisions/index.d.ts +34 -14
- package/dist/decisions/index.js +3347 -1109
- package/dist/decisions/index.js.map +1 -1
- package/dist/decisionsClient.d.ts +6 -12
- package/dist/decisionsClient.js +235 -37
- package/dist/decisionsClient.js.map +1 -1
- package/dist/edges/index.d.ts +47 -87
- package/dist/edges/index.js +3347 -1109
- package/dist/edges/index.js.map +1 -1
- package/dist/embeddingsClient.d.ts +106 -0
- package/dist/embeddingsClient.js +731 -0
- package/dist/embeddingsClient.js.map +1 -0
- package/dist/eventingClient.d.ts +96 -0
- package/dist/eventingClient.js +728 -0
- package/dist/eventingClient.js.map +1 -0
- package/dist/events.js +6 -3
- package/dist/events.js.map +1 -1
- package/dist/eventsCore.d.ts +3 -1
- package/dist/eventsCore.js +222 -14
- package/dist/eventsCore.js.map +1 -1
- package/dist/evidence/index.d.ts +25 -4
- package/dist/evidence/index.js +3347 -1109
- package/dist/evidence/index.js.map +1 -1
- package/dist/evidenceClient.d.ts +2 -0
- package/dist/evidenceClient.js +222 -14
- package/dist/evidenceClient.js.map +1 -1
- package/dist/facade/context.d.ts +2 -1
- package/dist/facade/context.js +25 -16
- package/dist/facade/context.js.map +1 -1
- package/dist/functionSurface.d.ts +143 -0
- package/dist/functionSurface.js +1204 -0
- package/dist/functionSurface.js.map +1 -0
- package/dist/functionSurfaceClient.d.ts +8 -0
- package/dist/functionSurfaceClient.js +1204 -0
- package/dist/functionSurfaceClient.js.map +1 -0
- package/dist/gatewayFacades.d.ts +81 -52
- package/dist/gatewayFacades.js +483 -169
- package/dist/gatewayFacades.js.map +1 -1
- package/dist/graphAnalysisClient.d.ts +192 -0
- package/dist/graphAnalysisClient.js +799 -0
- package/dist/graphAnalysisClient.js.map +1 -0
- package/dist/graphClient.d.ts +7 -13
- package/dist/graphClient.js +244 -45
- package/dist/graphClient.js.map +1 -1
- package/dist/graphIntel.d.ts +3 -0
- package/dist/graphIntel.js +3 -0
- package/dist/graphIntel.js.map +1 -0
- package/dist/graphIntelligence.d.ts +2 -0
- package/dist/graphIntelligence.js +47 -0
- package/dist/graphIntelligence.js.map +1 -0
- package/dist/graphRecommendationsClient.d.ts +56 -0
- package/dist/graphRecommendationsClient.js +664 -0
- package/dist/graphRecommendationsClient.js.map +1 -0
- package/dist/graphStateClassifierClient.d.ts +73 -0
- package/dist/graphStateClassifierClient.js +716 -0
- package/dist/graphStateClassifierClient.js.map +1 -0
- package/dist/harnessClient.d.ts +15 -24
- package/dist/harnessClient.js +235 -42
- package/dist/harnessClient.js.map +1 -1
- package/dist/identityClient.d.ts +97 -11
- package/dist/identityClient.js +409 -33
- package/dist/identityClient.js.map +1 -1
- package/dist/index.d.ts +29 -6
- package/dist/index.js +3936 -1155
- package/dist/index.js.map +1 -1
- package/dist/infisicalRuntime.d.ts +42 -0
- package/dist/infisicalRuntime.js +314 -0
- package/dist/infisicalRuntime.js.map +1 -0
- package/dist/jobsClient.d.ts +98 -0
- package/dist/jobsClient.js +726 -0
- package/dist/jobsClient.js.map +1 -0
- package/dist/learningClient.d.ts +8 -6
- package/dist/learningClient.js +252 -44
- package/dist/learningClient.js.map +1 -1
- package/dist/lenses/index.d.ts +82 -42
- package/dist/lenses/index.js +3347 -1109
- package/dist/lenses/index.js.map +1 -1
- package/dist/mcpClient.d.ts +28 -0
- package/dist/mcpClient.js +668 -0
- package/dist/mcpClient.js.map +1 -0
- package/dist/modelRuntimeClient.d.ts +72 -0
- package/dist/modelRuntimeClient.js +704 -0
- package/dist/modelRuntimeClient.js.map +1 -0
- package/dist/nodes/index.d.ts +63 -21
- package/dist/nodes/index.js +3347 -1109
- package/dist/nodes/index.js.map +1 -1
- package/dist/ontologies/index.d.ts +53 -32
- package/dist/ontologies/index.js +3347 -1109
- package/dist/ontologies/index.js.map +1 -1
- package/dist/ontologyClient.d.ts +19 -25
- package/dist/ontologyClient.js +258 -40
- package/dist/ontologyClient.js.map +1 -1
- package/dist/ontologyLinksClient.d.ts +71 -0
- package/dist/ontologyLinksClient.js +697 -0
- package/dist/ontologyLinksClient.js.map +1 -0
- package/dist/opinion.d.ts +2 -2
- package/dist/opinion.js +4 -4
- package/dist/opinion.js.map +1 -1
- package/dist/orgGraphSearchClient.d.ts +85 -0
- package/dist/orgGraphSearchClient.js +672 -0
- package/dist/orgGraphSearchClient.js.map +1 -0
- package/dist/packsClient.d.ts +11 -23
- package/dist/packsClient.js +234 -46
- package/dist/packsClient.js.map +1 -1
- package/dist/policyClient.d.ts +13 -10
- package/dist/policyClient.js +243 -25
- package/dist/policyClient.js.map +1 -1
- package/dist/questions/index.d.ts +24 -4
- package/dist/questions/index.js +3347 -1109
- package/dist/questions/index.js.map +1 -1
- package/dist/realtime/index.d.ts +1 -1
- package/dist/reportsClient.d.ts +9 -7
- package/dist/reportsClient.js +281 -53
- package/dist/reportsClient.js.map +1 -1
- package/dist/schemaClient.d.ts +5 -3
- package/dist/schemaClient.js +235 -29
- package/dist/schemaClient.js.map +1 -1
- package/dist/sdkSurface.d.ts +8 -3
- package/dist/sdkSurface.js +10 -6
- package/dist/sdkSurface.js.map +1 -1
- package/dist/sourcesClient.d.ts +2 -0
- package/dist/sourcesClient.js +222 -14
- package/dist/sourcesClient.js.map +1 -1
- package/dist/telemetryClient.d.ts +94 -0
- package/dist/telemetryClient.js +741 -0
- package/dist/telemetryClient.js.map +1 -0
- package/dist/toolRegistryClient.d.ts +115 -0
- package/dist/toolRegistryClient.js +767 -0
- package/dist/toolRegistryClient.js.map +1 -0
- package/dist/topics/index.d.ts +35 -9
- package/dist/topics/index.js +3349 -1109
- package/dist/topics/index.js.map +1 -1
- package/dist/topicsClient.d.ts +4 -0
- package/dist/topicsClient.js +237 -24
- package/dist/topicsClient.js.map +1 -1
- package/dist/types.d.ts +12 -7
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/dist/workflowClient.d.ts +76 -45
- package/dist/workflowClient.js +262 -65
- package/dist/workflowClient.js.map +1 -1
- package/dist/worktrees/index.d.ts +78 -39
- package/dist/worktrees/index.js +3347 -1109
- package/dist/worktrees/index.js.map +1 -1
- package/package.json +13 -3
- package/dist/client-DAuKnDlx.d.ts +0 -2547
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { InfisicalRuntimeEnvironment, InfisicalRuntimeSurfaceId } from '@lucern/contracts';
|
|
2
|
+
|
|
3
|
+
type InfisicalRuntimeEnv = Record<string, string | undefined>;
|
|
4
|
+
type InfisicalRuntimeFetch = (input: string | URL, init?: RequestInit) => Promise<Response>;
|
|
5
|
+
type InfisicalRuntimeBootstrapConfig = {
|
|
6
|
+
apiUrl: string;
|
|
7
|
+
projectId: string;
|
|
8
|
+
clientId: string;
|
|
9
|
+
clientSecret: string;
|
|
10
|
+
environment: InfisicalRuntimeEnvironment;
|
|
11
|
+
organizationSlug?: string;
|
|
12
|
+
};
|
|
13
|
+
type InfisicalRuntimeHydrateOptions = {
|
|
14
|
+
surfaceId: InfisicalRuntimeSurfaceId;
|
|
15
|
+
env?: InfisicalRuntimeEnv;
|
|
16
|
+
fetchImpl?: InfisicalRuntimeFetch;
|
|
17
|
+
bootstrap?: Partial<InfisicalRuntimeBootstrapConfig>;
|
|
18
|
+
};
|
|
19
|
+
type InfisicalRuntimeHydrationResult = {
|
|
20
|
+
status: "disabled" | "hydrated";
|
|
21
|
+
surfaceId: InfisicalRuntimeSurfaceId;
|
|
22
|
+
environment?: InfisicalRuntimeEnvironment;
|
|
23
|
+
values: Record<string, string>;
|
|
24
|
+
sourcePaths: string[];
|
|
25
|
+
};
|
|
26
|
+
declare class InfisicalRuntimeError extends Error {
|
|
27
|
+
readonly code: string;
|
|
28
|
+
readonly status?: number;
|
|
29
|
+
constructor(args: {
|
|
30
|
+
code: string;
|
|
31
|
+
message: string;
|
|
32
|
+
status?: number;
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
declare function readInfisicalRuntimeBootstrap(env?: InfisicalRuntimeEnv, overrides?: Partial<InfisicalRuntimeBootstrapConfig>): InfisicalRuntimeBootstrapConfig | null;
|
|
36
|
+
declare function isInfisicalRuntimeDisabled(env?: InfisicalRuntimeEnv): boolean;
|
|
37
|
+
declare function hydrateInfisicalRuntimeEnv(options: InfisicalRuntimeHydrateOptions): Promise<InfisicalRuntimeHydrationResult>;
|
|
38
|
+
declare function applyInfisicalRuntimeEnv(result: Pick<InfisicalRuntimeHydrationResult, "values">, targetEnv: InfisicalRuntimeEnv, options?: {
|
|
39
|
+
overrideExisting?: boolean;
|
|
40
|
+
}): void;
|
|
41
|
+
|
|
42
|
+
export { type InfisicalRuntimeBootstrapConfig, type InfisicalRuntimeEnv, InfisicalRuntimeError, type InfisicalRuntimeFetch, type InfisicalRuntimeHydrateOptions, type InfisicalRuntimeHydrationResult, applyInfisicalRuntimeEnv, hydrateInfisicalRuntimeEnv, isInfisicalRuntimeDisabled, readInfisicalRuntimeBootstrap };
|
|
@@ -0,0 +1,314 @@
|
|
|
1
|
+
import { INFISICAL_RUNTIME_MANIFEST, INFISICAL_RUNTIME_DEFAULT_PROJECT_ID, INFISICAL_RUNTIME_DEFAULT_API_URL, findInfisicalRuntimeSurface, findInfisicalRuntimePath } from '@lucern/contracts';
|
|
2
|
+
|
|
3
|
+
// src/infisicalRuntime.ts
|
|
4
|
+
var InfisicalRuntimeError = class extends Error {
|
|
5
|
+
code;
|
|
6
|
+
status;
|
|
7
|
+
constructor(args) {
|
|
8
|
+
super(args.message);
|
|
9
|
+
this.name = "InfisicalRuntimeError";
|
|
10
|
+
this.code = args.code;
|
|
11
|
+
this.status = args.status;
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
function readInfisicalRuntimeBootstrap(env = {}, overrides = {}) {
|
|
15
|
+
if (isInfisicalRuntimeDisabled(env)) {
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
const bootstrapEnv = INFISICAL_RUNTIME_MANIFEST.bootstrapEnv;
|
|
19
|
+
const clientId = overrides.clientId ?? readFirst(env, bootstrapEnv.clientId);
|
|
20
|
+
const clientSecret = overrides.clientSecret ?? readFirst(env, bootstrapEnv.clientSecret);
|
|
21
|
+
const hasAuthSignal = Boolean(clientId || clientSecret);
|
|
22
|
+
if (!hasAuthSignal) {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
if (!clientId || !clientSecret) {
|
|
26
|
+
throw new InfisicalRuntimeError({
|
|
27
|
+
code: "INFISICAL_BOOTSTRAP_INCOMPLETE",
|
|
28
|
+
message: "Infisical runtime bootstrap requires both INFISICAL_CLIENT_ID and INFISICAL_CLIENT_SECRET."
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
return {
|
|
32
|
+
apiUrl: overrides.apiUrl ?? readFirst(env, bootstrapEnv.apiUrl) ?? INFISICAL_RUNTIME_DEFAULT_API_URL,
|
|
33
|
+
projectId: overrides.projectId ?? readFirst(env, bootstrapEnv.projectId) ?? INFISICAL_RUNTIME_DEFAULT_PROJECT_ID,
|
|
34
|
+
clientId,
|
|
35
|
+
clientSecret,
|
|
36
|
+
environment: normalizeInfisicalEnvironment(
|
|
37
|
+
overrides.environment ?? readFirst(env, bootstrapEnv.environment)
|
|
38
|
+
),
|
|
39
|
+
organizationSlug: overrides.organizationSlug ?? readFirst(env, bootstrapEnv.organizationSlug)
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
function isInfisicalRuntimeDisabled(env = {}) {
|
|
43
|
+
return INFISICAL_RUNTIME_MANIFEST.bootstrapEnv.disabled.some(
|
|
44
|
+
(name) => isTruthyEnv(env[name])
|
|
45
|
+
);
|
|
46
|
+
}
|
|
47
|
+
async function hydrateInfisicalRuntimeEnv(options) {
|
|
48
|
+
const env = options.env ?? {};
|
|
49
|
+
const baseBootstrap = readInfisicalRuntimeBootstrap(env, options.bootstrap);
|
|
50
|
+
const bootstrap = baseBootstrap ? {
|
|
51
|
+
...baseBootstrap,
|
|
52
|
+
...Object.fromEntries(
|
|
53
|
+
Object.entries(options.bootstrap ?? {}).filter(
|
|
54
|
+
([, value]) => value !== void 0
|
|
55
|
+
)
|
|
56
|
+
),
|
|
57
|
+
apiUrl: trimTrailingSlash(
|
|
58
|
+
options.bootstrap?.apiUrl ?? baseBootstrap.apiUrl
|
|
59
|
+
)
|
|
60
|
+
} : null;
|
|
61
|
+
if (!bootstrap) {
|
|
62
|
+
return {
|
|
63
|
+
status: "disabled",
|
|
64
|
+
surfaceId: options.surfaceId,
|
|
65
|
+
values: {},
|
|
66
|
+
sourcePaths: []
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
const surface = findInfisicalRuntimeSurface(options.surfaceId);
|
|
70
|
+
if (!surface) {
|
|
71
|
+
throw new InfisicalRuntimeError({
|
|
72
|
+
code: "INFISICAL_UNKNOWN_SURFACE",
|
|
73
|
+
message: `Unknown Lucern Infisical runtime surface: ${options.surfaceId}.`
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
if (surface.delivery !== "runtime_fetch") {
|
|
77
|
+
throw new InfisicalRuntimeError({
|
|
78
|
+
code: "INFISICAL_UNSUPPORTED_SURFACE_DELIVERY",
|
|
79
|
+
message: `${surface.id} uses ${surface.delivery}; runtime fetch is only valid for runtime_fetch surfaces.`
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
const fetchImpl = options.fetchImpl ?? globalThis.fetch;
|
|
83
|
+
if (typeof fetchImpl !== "function") {
|
|
84
|
+
throw new InfisicalRuntimeError({
|
|
85
|
+
code: "INFISICAL_FETCH_UNAVAILABLE",
|
|
86
|
+
message: "No fetch implementation is available for Infisical runtime hydration."
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
const token = await loginWithUniversalAuth(bootstrap, fetchImpl);
|
|
90
|
+
const values = {};
|
|
91
|
+
const missingRequired = [];
|
|
92
|
+
const sourcePaths = [];
|
|
93
|
+
for (const pathId of surface.sourcePathIds) {
|
|
94
|
+
const path = findInfisicalRuntimePath(pathId);
|
|
95
|
+
if (!path) {
|
|
96
|
+
throw new InfisicalRuntimeError({
|
|
97
|
+
code: "INFISICAL_UNKNOWN_PATH",
|
|
98
|
+
message: `Unknown Lucern Infisical runtime path: ${pathId}.`
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
sourcePaths.push(path.secretPath);
|
|
102
|
+
for (const variable of path.variables) {
|
|
103
|
+
const runtimeVariable = variable;
|
|
104
|
+
const secretValue = await readVariableSecret({
|
|
105
|
+
bootstrap,
|
|
106
|
+
fetchImpl,
|
|
107
|
+
token,
|
|
108
|
+
secretPath: path.secretPath,
|
|
109
|
+
variable: runtimeVariable
|
|
110
|
+
});
|
|
111
|
+
if (!secretValue) {
|
|
112
|
+
if (runtimeVariable.required) {
|
|
113
|
+
missingRequired.push(runtimeVariable.name);
|
|
114
|
+
}
|
|
115
|
+
continue;
|
|
116
|
+
}
|
|
117
|
+
values[runtimeVariable.name] = secretValue.value;
|
|
118
|
+
for (const alias of runtimeVariable.aliases ?? []) {
|
|
119
|
+
values[alias] = secretValue.value;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
if (missingRequired.length > 0) {
|
|
124
|
+
throw new InfisicalRuntimeError({
|
|
125
|
+
code: "INFISICAL_REQUIRED_SECRETS_MISSING",
|
|
126
|
+
message: `Missing required Infisical runtime secrets: ${missingRequired.join(", ")}.`
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
return {
|
|
130
|
+
status: "hydrated",
|
|
131
|
+
surfaceId: options.surfaceId,
|
|
132
|
+
environment: bootstrap.environment,
|
|
133
|
+
values,
|
|
134
|
+
sourcePaths
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
function applyInfisicalRuntimeEnv(result, targetEnv, options = {}) {
|
|
138
|
+
for (const [key, value] of Object.entries(result.values)) {
|
|
139
|
+
if (options.overrideExisting || !targetEnv[key]) {
|
|
140
|
+
targetEnv[key] = value;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
function normalizeInfisicalEnvironment(value) {
|
|
145
|
+
if (value === "dev" || value === "staging" || value === "prod") {
|
|
146
|
+
return value;
|
|
147
|
+
}
|
|
148
|
+
if (value === "development") {
|
|
149
|
+
return "dev";
|
|
150
|
+
}
|
|
151
|
+
if (value === "production") {
|
|
152
|
+
return "prod";
|
|
153
|
+
}
|
|
154
|
+
return "prod";
|
|
155
|
+
}
|
|
156
|
+
async function loginWithUniversalAuth(bootstrap, fetchImpl) {
|
|
157
|
+
const response = await fetchImpl(
|
|
158
|
+
`${trimTrailingSlash(bootstrap.apiUrl)}/api/v1/auth/universal-auth/login`,
|
|
159
|
+
{
|
|
160
|
+
method: "POST",
|
|
161
|
+
headers: {
|
|
162
|
+
"Content-Type": "application/json"
|
|
163
|
+
},
|
|
164
|
+
body: JSON.stringify({
|
|
165
|
+
clientId: bootstrap.clientId,
|
|
166
|
+
clientSecret: bootstrap.clientSecret,
|
|
167
|
+
...bootstrap.organizationSlug ? { organizationSlug: bootstrap.organizationSlug } : {}
|
|
168
|
+
})
|
|
169
|
+
}
|
|
170
|
+
);
|
|
171
|
+
const body = await readJson(response);
|
|
172
|
+
if (!response.ok) {
|
|
173
|
+
throw new InfisicalRuntimeError({
|
|
174
|
+
code: "INFISICAL_UNIVERSAL_AUTH_FAILED",
|
|
175
|
+
status: response.status,
|
|
176
|
+
message: `Infisical Universal Auth failed with HTTP ${response.status}: ${messageFromBody(body)}`
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
const accessToken = readNestedString(body, ["accessToken"]);
|
|
180
|
+
if (!accessToken) {
|
|
181
|
+
throw new InfisicalRuntimeError({
|
|
182
|
+
code: "INFISICAL_UNIVERSAL_AUTH_INVALID_RESPONSE",
|
|
183
|
+
message: "Infisical Universal Auth response did not include accessToken."
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
return accessToken;
|
|
187
|
+
}
|
|
188
|
+
async function readVariableSecret(args) {
|
|
189
|
+
const names = [args.variable.name, ...args.variable.aliases ?? []];
|
|
190
|
+
for (const name of names) {
|
|
191
|
+
const value = await readSecretValue({
|
|
192
|
+
bootstrap: args.bootstrap,
|
|
193
|
+
fetchImpl: args.fetchImpl,
|
|
194
|
+
token: args.token,
|
|
195
|
+
secretPath: args.secretPath,
|
|
196
|
+
name,
|
|
197
|
+
optional: true
|
|
198
|
+
});
|
|
199
|
+
if (value) {
|
|
200
|
+
return { name, value };
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
return null;
|
|
204
|
+
}
|
|
205
|
+
async function readSecretValue(args) {
|
|
206
|
+
const params = new URLSearchParams({
|
|
207
|
+
projectId: args.bootstrap.projectId,
|
|
208
|
+
environment: args.bootstrap.environment,
|
|
209
|
+
secretPath: args.secretPath,
|
|
210
|
+
type: "shared",
|
|
211
|
+
viewSecretValue: "true",
|
|
212
|
+
expandSecretReferences: "true",
|
|
213
|
+
includeImports: "true"
|
|
214
|
+
});
|
|
215
|
+
const response = await args.fetchImpl(
|
|
216
|
+
`${trimTrailingSlash(args.bootstrap.apiUrl)}/api/v4/secrets/${encodeURIComponent(args.name)}?${params.toString()}`,
|
|
217
|
+
{
|
|
218
|
+
method: "GET",
|
|
219
|
+
headers: {
|
|
220
|
+
Authorization: `Bearer ${args.token}`
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
);
|
|
224
|
+
const body = await readJson(response);
|
|
225
|
+
if (response.status === 404 && args.optional) {
|
|
226
|
+
return null;
|
|
227
|
+
}
|
|
228
|
+
if (!response.ok) {
|
|
229
|
+
throw new InfisicalRuntimeError({
|
|
230
|
+
code: "INFISICAL_SECRET_READ_FAILED",
|
|
231
|
+
status: response.status,
|
|
232
|
+
message: `Infisical secret ${args.name} read failed with HTTP ${response.status}: ${messageFromBody(body)}`
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
return readNestedString(body, ["secret", "secretValue"]);
|
|
236
|
+
}
|
|
237
|
+
async function readJson(response) {
|
|
238
|
+
try {
|
|
239
|
+
return await response.json();
|
|
240
|
+
} catch (error) {
|
|
241
|
+
debugInfisicalRuntimeFallback("response.json", error);
|
|
242
|
+
return void 0;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
function isRecord(value) {
|
|
246
|
+
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
247
|
+
}
|
|
248
|
+
function readNestedString(value, path) {
|
|
249
|
+
let current = value;
|
|
250
|
+
for (const key of path) {
|
|
251
|
+
if (!isRecord(current) || !(key in current)) {
|
|
252
|
+
return null;
|
|
253
|
+
}
|
|
254
|
+
current = current[key];
|
|
255
|
+
}
|
|
256
|
+
return typeof current === "string" && current.length > 0 ? current : null;
|
|
257
|
+
}
|
|
258
|
+
function messageFromBody(body) {
|
|
259
|
+
if (!isRecord(body)) {
|
|
260
|
+
return "no response body";
|
|
261
|
+
}
|
|
262
|
+
for (const key of ["message", "error", "errorMessage"]) {
|
|
263
|
+
if (typeof body[key] === "string") {
|
|
264
|
+
return body[key];
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
return JSON.stringify(body);
|
|
268
|
+
}
|
|
269
|
+
function readFirst(env, names) {
|
|
270
|
+
for (const name of names) {
|
|
271
|
+
const value = env[name]?.trim();
|
|
272
|
+
if (value) {
|
|
273
|
+
return value;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
return void 0;
|
|
277
|
+
}
|
|
278
|
+
function isTruthyEnv(value) {
|
|
279
|
+
return ["1", "true", "yes", "on"].includes(value?.toLowerCase() ?? "");
|
|
280
|
+
}
|
|
281
|
+
function trimTrailingSlash(value) {
|
|
282
|
+
return value.replace(/\/+$/u, "");
|
|
283
|
+
}
|
|
284
|
+
function debugInfisicalRuntimeFallback(message, error) {
|
|
285
|
+
const env = globalThis.process?.env;
|
|
286
|
+
if (env?.LUCERN_COMPAT_FALLBACK_DEBUG !== "1" && env?.LUCERN_INFISICAL_RUNTIME_DEBUG !== "1") {
|
|
287
|
+
return;
|
|
288
|
+
}
|
|
289
|
+
console.debug(`[infisical-runtime] ${message}`, {
|
|
290
|
+
error: formatInfisicalRuntimeError(error)
|
|
291
|
+
});
|
|
292
|
+
}
|
|
293
|
+
function formatInfisicalRuntimeError(error) {
|
|
294
|
+
if (error instanceof Error) {
|
|
295
|
+
return `${error.name}: ${error.message}`;
|
|
296
|
+
}
|
|
297
|
+
if (typeof error === "string") {
|
|
298
|
+
return error;
|
|
299
|
+
}
|
|
300
|
+
if (typeof error === "number" || typeof error === "boolean") {
|
|
301
|
+
return String(error);
|
|
302
|
+
}
|
|
303
|
+
if (error && typeof error === "object") {
|
|
304
|
+
const keys = Object.keys(error).slice(0, 5);
|
|
305
|
+
if (keys.length > 0) {
|
|
306
|
+
return `Unknown Infisical runtime error object with keys: ${keys.join(", ")}`;
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
return "Unknown Infisical runtime error shape";
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
export { InfisicalRuntimeError, applyInfisicalRuntimeEnv, hydrateInfisicalRuntimeEnv, isInfisicalRuntimeDisabled, readInfisicalRuntimeBootstrap };
|
|
313
|
+
//# sourceMappingURL=infisicalRuntime.js.map
|
|
314
|
+
//# sourceMappingURL=infisicalRuntime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/infisicalRuntime.ts"],"names":[],"mappings":"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","file":"infisicalRuntime.js","sourcesContent":["import {\n INFISICAL_RUNTIME_DEFAULT_API_URL,\n INFISICAL_RUNTIME_DEFAULT_PROJECT_ID,\n INFISICAL_RUNTIME_MANIFEST,\n findInfisicalRuntimePath,\n findInfisicalRuntimeSurface,\n type InfisicalRuntimeEnvironment,\n type InfisicalRuntimeSurfaceId,\n type InfisicalRuntimeVariable,\n} from \"@lucern/contracts\";\n\nexport type InfisicalRuntimeEnv = Record<string, string | undefined>;\n\nexport type InfisicalRuntimeFetch = (\n input: string | URL,\n init?: RequestInit\n) => Promise<Response>;\n\nexport type InfisicalRuntimeBootstrapConfig = {\n apiUrl: string;\n projectId: string;\n clientId: string;\n clientSecret: string;\n environment: InfisicalRuntimeEnvironment;\n organizationSlug?: string;\n};\n\nexport type InfisicalRuntimeHydrateOptions = {\n surfaceId: InfisicalRuntimeSurfaceId;\n env?: InfisicalRuntimeEnv;\n fetchImpl?: InfisicalRuntimeFetch;\n bootstrap?: Partial<InfisicalRuntimeBootstrapConfig>;\n};\n\nexport type InfisicalRuntimeHydrationResult = {\n status: \"disabled\" | \"hydrated\";\n surfaceId: InfisicalRuntimeSurfaceId;\n environment?: InfisicalRuntimeEnvironment;\n values: Record<string, string>;\n sourcePaths: string[];\n};\n\nexport class InfisicalRuntimeError extends Error {\n readonly code: string;\n readonly status?: number;\n\n constructor(args: { code: string; message: string; status?: number }) {\n super(args.message);\n this.name = \"InfisicalRuntimeError\";\n this.code = args.code;\n this.status = args.status;\n }\n}\n\nexport function readInfisicalRuntimeBootstrap(\n env: InfisicalRuntimeEnv = {},\n overrides: Partial<InfisicalRuntimeBootstrapConfig> = {}\n): InfisicalRuntimeBootstrapConfig | null {\n if (isInfisicalRuntimeDisabled(env)) {\n return null;\n }\n\n const bootstrapEnv = INFISICAL_RUNTIME_MANIFEST.bootstrapEnv;\n const clientId = overrides.clientId ?? readFirst(env, bootstrapEnv.clientId);\n const clientSecret =\n overrides.clientSecret ?? readFirst(env, bootstrapEnv.clientSecret);\n const hasAuthSignal = Boolean(clientId || clientSecret);\n\n if (!hasAuthSignal) {\n return null;\n }\n\n if (!clientId || !clientSecret) {\n throw new InfisicalRuntimeError({\n code: \"INFISICAL_BOOTSTRAP_INCOMPLETE\",\n message:\n \"Infisical runtime bootstrap requires both INFISICAL_CLIENT_ID and INFISICAL_CLIENT_SECRET.\",\n });\n }\n\n return {\n apiUrl:\n overrides.apiUrl ??\n readFirst(env, bootstrapEnv.apiUrl) ??\n INFISICAL_RUNTIME_DEFAULT_API_URL,\n projectId:\n overrides.projectId ??\n readFirst(env, bootstrapEnv.projectId) ??\n INFISICAL_RUNTIME_DEFAULT_PROJECT_ID,\n clientId,\n clientSecret,\n environment: normalizeInfisicalEnvironment(\n overrides.environment ?? readFirst(env, bootstrapEnv.environment)\n ),\n organizationSlug:\n overrides.organizationSlug ??\n readFirst(env, bootstrapEnv.organizationSlug),\n };\n}\n\nexport function isInfisicalRuntimeDisabled(\n env: InfisicalRuntimeEnv = {}\n): boolean {\n return INFISICAL_RUNTIME_MANIFEST.bootstrapEnv.disabled.some((name) =>\n isTruthyEnv(env[name])\n );\n}\n\nexport async function hydrateInfisicalRuntimeEnv(\n options: InfisicalRuntimeHydrateOptions\n): Promise<InfisicalRuntimeHydrationResult> {\n const env = options.env ?? {};\n const baseBootstrap = readInfisicalRuntimeBootstrap(env, options.bootstrap);\n const bootstrap = baseBootstrap\n ? {\n ...baseBootstrap,\n ...Object.fromEntries(\n Object.entries(options.bootstrap ?? {}).filter(\n ([, value]) => value !== undefined\n )\n ),\n apiUrl: trimTrailingSlash(\n options.bootstrap?.apiUrl ?? baseBootstrap.apiUrl\n ),\n }\n : null;\n if (!bootstrap) {\n return {\n status: \"disabled\",\n surfaceId: options.surfaceId,\n values: {},\n sourcePaths: [],\n };\n }\n\n const surface = findInfisicalRuntimeSurface(options.surfaceId);\n if (!surface) {\n throw new InfisicalRuntimeError({\n code: \"INFISICAL_UNKNOWN_SURFACE\",\n message: `Unknown Lucern Infisical runtime surface: ${options.surfaceId}.`,\n });\n }\n if (surface.delivery !== \"runtime_fetch\") {\n throw new InfisicalRuntimeError({\n code: \"INFISICAL_UNSUPPORTED_SURFACE_DELIVERY\",\n message: `${surface.id} uses ${surface.delivery}; runtime fetch is only valid for runtime_fetch surfaces.`,\n });\n }\n\n const fetchImpl = options.fetchImpl ?? globalThis.fetch;\n if (typeof fetchImpl !== \"function\") {\n throw new InfisicalRuntimeError({\n code: \"INFISICAL_FETCH_UNAVAILABLE\",\n message:\n \"No fetch implementation is available for Infisical runtime hydration.\",\n });\n }\n\n const token = await loginWithUniversalAuth(bootstrap, fetchImpl);\n const values: Record<string, string> = {};\n const missingRequired: string[] = [];\n const sourcePaths: string[] = [];\n\n for (const pathId of surface.sourcePathIds) {\n const path = findInfisicalRuntimePath(pathId);\n if (!path) {\n throw new InfisicalRuntimeError({\n code: \"INFISICAL_UNKNOWN_PATH\",\n message: `Unknown Lucern Infisical runtime path: ${pathId}.`,\n });\n }\n sourcePaths.push(path.secretPath);\n\n for (const variable of path.variables) {\n const runtimeVariable: InfisicalRuntimeVariable = variable;\n const secretValue = await readVariableSecret({\n bootstrap,\n fetchImpl,\n token,\n secretPath: path.secretPath,\n variable: runtimeVariable,\n });\n\n if (!secretValue) {\n if (runtimeVariable.required) {\n missingRequired.push(runtimeVariable.name);\n }\n continue;\n }\n\n values[runtimeVariable.name] = secretValue.value;\n for (const alias of runtimeVariable.aliases ?? []) {\n values[alias] = secretValue.value;\n }\n }\n }\n\n if (missingRequired.length > 0) {\n throw new InfisicalRuntimeError({\n code: \"INFISICAL_REQUIRED_SECRETS_MISSING\",\n message: `Missing required Infisical runtime secrets: ${missingRequired.join(\", \")}.`,\n });\n }\n\n return {\n status: \"hydrated\",\n surfaceId: options.surfaceId,\n environment: bootstrap.environment,\n values,\n sourcePaths,\n };\n}\n\nexport function applyInfisicalRuntimeEnv(\n result: Pick<InfisicalRuntimeHydrationResult, \"values\">,\n targetEnv: InfisicalRuntimeEnv,\n options: { overrideExisting?: boolean } = {}\n): void {\n for (const [key, value] of Object.entries(result.values)) {\n if (options.overrideExisting || !targetEnv[key]) {\n targetEnv[key] = value;\n }\n }\n}\n\nfunction normalizeInfisicalEnvironment(\n value: string | undefined\n): InfisicalRuntimeEnvironment {\n if (value === \"dev\" || value === \"staging\" || value === \"prod\") {\n return value;\n }\n if (value === \"development\") {\n return \"dev\";\n }\n if (value === \"production\") {\n return \"prod\";\n }\n return \"prod\";\n}\n\nasync function loginWithUniversalAuth(\n bootstrap: InfisicalRuntimeBootstrapConfig,\n fetchImpl: InfisicalRuntimeFetch\n): Promise<string> {\n const response = await fetchImpl(\n `${trimTrailingSlash(bootstrap.apiUrl)}/api/v1/auth/universal-auth/login`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n clientId: bootstrap.clientId,\n clientSecret: bootstrap.clientSecret,\n ...(bootstrap.organizationSlug\n ? { organizationSlug: bootstrap.organizationSlug }\n : {}),\n }),\n }\n );\n\n const body = await readJson(response);\n if (!response.ok) {\n throw new InfisicalRuntimeError({\n code: \"INFISICAL_UNIVERSAL_AUTH_FAILED\",\n status: response.status,\n message: `Infisical Universal Auth failed with HTTP ${response.status}: ${messageFromBody(body)}`,\n });\n }\n\n const accessToken = readNestedString(body, [\"accessToken\"]);\n if (!accessToken) {\n throw new InfisicalRuntimeError({\n code: \"INFISICAL_UNIVERSAL_AUTH_INVALID_RESPONSE\",\n message: \"Infisical Universal Auth response did not include accessToken.\",\n });\n }\n return accessToken;\n}\n\nasync function readVariableSecret(args: {\n bootstrap: InfisicalRuntimeBootstrapConfig;\n fetchImpl: InfisicalRuntimeFetch;\n token: string;\n secretPath: string;\n variable: InfisicalRuntimeVariable;\n}): Promise<{ name: string; value: string } | null> {\n const names = [args.variable.name, ...(args.variable.aliases ?? [])];\n for (const name of names) {\n const value = await readSecretValue({\n bootstrap: args.bootstrap,\n fetchImpl: args.fetchImpl,\n token: args.token,\n secretPath: args.secretPath,\n name,\n optional: true,\n });\n if (value) {\n return { name, value };\n }\n }\n return null;\n}\n\nasync function readSecretValue(args: {\n bootstrap: InfisicalRuntimeBootstrapConfig;\n fetchImpl: InfisicalRuntimeFetch;\n token: string;\n secretPath: string;\n name: string;\n optional: boolean;\n}): Promise<string | null> {\n const params = new URLSearchParams({\n projectId: args.bootstrap.projectId,\n environment: args.bootstrap.environment,\n secretPath: args.secretPath,\n type: \"shared\",\n viewSecretValue: \"true\",\n expandSecretReferences: \"true\",\n includeImports: \"true\",\n });\n const response = await args.fetchImpl(\n `${trimTrailingSlash(args.bootstrap.apiUrl)}/api/v4/secrets/${encodeURIComponent(args.name)}?${params.toString()}`,\n {\n method: \"GET\",\n headers: {\n Authorization: `Bearer ${args.token}`,\n },\n }\n );\n\n const body = await readJson(response);\n if (response.status === 404 && args.optional) {\n return null;\n }\n if (!response.ok) {\n throw new InfisicalRuntimeError({\n code: \"INFISICAL_SECRET_READ_FAILED\",\n status: response.status,\n message: `Infisical secret ${args.name} read failed with HTTP ${response.status}: ${messageFromBody(body)}`,\n });\n }\n\n return readNestedString(body, [\"secret\", \"secretValue\"]);\n}\n\nasync function readJson(response: Response): Promise<unknown> {\n try {\n return await response.json();\n } catch (error) {\n debugInfisicalRuntimeFallback(\"response.json\", error);\n return undefined;\n }\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction readNestedString(value: unknown, path: readonly string[]): string | null {\n let current: unknown = value;\n for (const key of path) {\n if (!isRecord(current) || !(key in current)) {\n return null;\n }\n current = current[key];\n }\n return typeof current === \"string\" && current.length > 0 ? current : null;\n}\n\nfunction messageFromBody(body: unknown): string {\n if (!isRecord(body)) {\n return \"no response body\";\n }\n for (const key of [\"message\", \"error\", \"errorMessage\"]) {\n if (typeof body[key] === \"string\") {\n return body[key];\n }\n }\n return JSON.stringify(body);\n}\n\nfunction readFirst(\n env: InfisicalRuntimeEnv,\n names: readonly string[]\n): string | undefined {\n for (const name of names) {\n const value = env[name]?.trim();\n if (value) {\n return value;\n }\n }\n return undefined;\n}\n\nfunction isTruthyEnv(value: string | undefined): boolean {\n return [\"1\", \"true\", \"yes\", \"on\"].includes(value?.toLowerCase() ?? \"\");\n}\n\nfunction trimTrailingSlash(value: string): string {\n return value.replace(/\\/+$/u, \"\");\n}\n\nfunction debugInfisicalRuntimeFallback(message: string, error: unknown): void {\n const env = (\n globalThis as {\n process?: { env?: Record<string, string | undefined> };\n }\n ).process?.env;\n if (\n env?.LUCERN_COMPAT_FALLBACK_DEBUG !== \"1\" &&\n env?.LUCERN_INFISICAL_RUNTIME_DEBUG !== \"1\"\n ) {\n return;\n }\n console.debug(`[infisical-runtime] ${message}`, {\n error: formatInfisicalRuntimeError(error),\n });\n}\n\nfunction formatInfisicalRuntimeError(error: unknown): string {\n if (error instanceof Error) {\n return `${error.name}: ${error.message}`;\n }\n if (typeof error === \"string\") {\n return error;\n }\n if (typeof error === \"number\" || typeof error === \"boolean\") {\n return String(error);\n }\n if (error && typeof error === \"object\") {\n const keys = Object.keys(error).slice(0, 5);\n if (keys.length > 0) {\n return `Unknown Infisical runtime error object with keys: ${keys.join(\", \")}`;\n }\n }\n return \"Unknown Infisical runtime error shape\";\n}\n"]}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { GatewayClientConfig, PlatformGatewaySuccess } from './coreClient.js';
|
|
2
|
+
import { JsonObject, ListResult } from './types.js';
|
|
3
|
+
import './authContext.js';
|
|
4
|
+
import './contracts/auth-session.contract.js';
|
|
5
|
+
import './contracts/workflow-runtime.contract.js';
|
|
6
|
+
import './contracts/lens-workflow.contract.js';
|
|
7
|
+
import './contracts/lens-filter.contract.js';
|
|
8
|
+
|
|
9
|
+
type JobsClientConfig = GatewayClientConfig;
|
|
10
|
+
declare const JOBS_FIELDS: readonly ["tenantId", "workspaceId", "principalId", "topicId", "worktreeId", "jobId", "jobType", "payload", "status", "attempt", "runId", "queue", "priority", "error", "metadata", "limit", "cursor"];
|
|
11
|
+
type JobStatus = "queued" | "claimed" | "running" | "succeeded" | "failed" | "cancelled";
|
|
12
|
+
type JobRecord = {
|
|
13
|
+
jobId: string;
|
|
14
|
+
tenantId: string;
|
|
15
|
+
workspaceId?: string;
|
|
16
|
+
principalId?: string;
|
|
17
|
+
topicId?: string;
|
|
18
|
+
worktreeId?: string;
|
|
19
|
+
jobType: string;
|
|
20
|
+
payload?: JsonObject | null;
|
|
21
|
+
status: JobStatus | string;
|
|
22
|
+
attempt?: number;
|
|
23
|
+
runId?: string;
|
|
24
|
+
queue?: string;
|
|
25
|
+
priority?: string;
|
|
26
|
+
error?: string;
|
|
27
|
+
metadata?: JsonObject | null;
|
|
28
|
+
createdAt?: number;
|
|
29
|
+
updatedAt?: number;
|
|
30
|
+
};
|
|
31
|
+
type JobRunRecord = {
|
|
32
|
+
runId: string;
|
|
33
|
+
jobId?: string;
|
|
34
|
+
tenantId: string;
|
|
35
|
+
workspaceId?: string;
|
|
36
|
+
status: JobStatus | string;
|
|
37
|
+
startedAt?: number;
|
|
38
|
+
finishedAt?: number;
|
|
39
|
+
metadata?: JsonObject | null;
|
|
40
|
+
};
|
|
41
|
+
type JobsScope = {
|
|
42
|
+
tenantId: string;
|
|
43
|
+
workspaceId?: string;
|
|
44
|
+
principalId?: string;
|
|
45
|
+
topicId?: string;
|
|
46
|
+
worktreeId?: string;
|
|
47
|
+
jobType?: string;
|
|
48
|
+
status?: JobStatus;
|
|
49
|
+
queue?: string;
|
|
50
|
+
limit?: number;
|
|
51
|
+
cursor?: string;
|
|
52
|
+
};
|
|
53
|
+
type EnqueueJobInput = JobsScope & {
|
|
54
|
+
jobType: string;
|
|
55
|
+
payload?: JsonObject;
|
|
56
|
+
priority?: string;
|
|
57
|
+
metadata?: JsonObject;
|
|
58
|
+
};
|
|
59
|
+
type ClaimJobInput = JobsScope & {
|
|
60
|
+
jobType?: string;
|
|
61
|
+
};
|
|
62
|
+
type UpdateJobStatusInput = JobsScope & {
|
|
63
|
+
jobId: string;
|
|
64
|
+
status: JobStatus;
|
|
65
|
+
attempt?: number;
|
|
66
|
+
runId?: string;
|
|
67
|
+
error?: string;
|
|
68
|
+
metadata?: JsonObject;
|
|
69
|
+
};
|
|
70
|
+
type RetryJobInput = JobsScope & {
|
|
71
|
+
jobId: string;
|
|
72
|
+
metadata?: JsonObject;
|
|
73
|
+
};
|
|
74
|
+
type RecordJobRunStartInput = JobsScope & {
|
|
75
|
+
jobId?: string;
|
|
76
|
+
runId?: string;
|
|
77
|
+
jobType?: string;
|
|
78
|
+
metadata?: JsonObject;
|
|
79
|
+
};
|
|
80
|
+
type RecordJobRunFinishInput = JobsScope & {
|
|
81
|
+
runId: string;
|
|
82
|
+
jobId?: string;
|
|
83
|
+
status: JobStatus;
|
|
84
|
+
error?: string;
|
|
85
|
+
metadata?: JsonObject;
|
|
86
|
+
};
|
|
87
|
+
type JobsResponse = ListResult<JobRecord, "jobs">;
|
|
88
|
+
declare function createJobsClient(config?: JobsClientConfig): {
|
|
89
|
+
enqueue(input: EnqueueJobInput, idempotencyKey?: string): Promise<PlatformGatewaySuccess<JobRecord>>;
|
|
90
|
+
list(input: JobsScope): Promise<PlatformGatewaySuccess<ListResult<JobRecord, "jobs">>>;
|
|
91
|
+
claim(input: ClaimJobInput, idempotencyKey?: string): Promise<PlatformGatewaySuccess<JobRecord>>;
|
|
92
|
+
updateStatus(input: UpdateJobStatusInput, idempotencyKey?: string): Promise<PlatformGatewaySuccess<JobRecord>>;
|
|
93
|
+
retry(input: RetryJobInput, idempotencyKey?: string): Promise<PlatformGatewaySuccess<JobRecord>>;
|
|
94
|
+
recordRunStart(input: RecordJobRunStartInput, idempotencyKey?: string): Promise<PlatformGatewaySuccess<JobRunRecord>>;
|
|
95
|
+
recordRunFinish(input: RecordJobRunFinishInput, idempotencyKey?: string): Promise<PlatformGatewaySuccess<JobRunRecord>>;
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
export { type ClaimJobInput, type EnqueueJobInput, JOBS_FIELDS, type JobRecord, type JobRunRecord, type JobStatus, type JobsClientConfig, type JobsResponse, type JobsScope, type RecordJobRunFinishInput, type RecordJobRunStartInput, type RetryJobInput, type UpdateJobStatusInput, createJobsClient };
|