@sequenceholdings/managed-functions 0.4.3 → 0.4.4
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/README.md +84 -0
- package/dist/capabilities.d.ts +28 -0
- package/dist/capabilities.js +6 -0
- package/dist/config.d.ts +2 -1
- package/dist/config.js +5 -2
- package/dist/deployed-policy.js +9 -2
- package/dist/directory-manifest.d.ts +1 -0
- package/dist/directory-manifest.js +3 -1
- package/dist/directory-roster-contract.d.ts +22 -0
- package/dist/directory-roster-contract.js +24 -0
- package/dist/index.d.ts +4 -1
- package/dist/index.js +4 -1
- package/dist/invocation-contract.d.ts +25 -2
- package/dist/invocation-contract.js +21 -6
- package/dist/invocation.d.ts +2 -1
- package/dist/invocation.js +48 -38
- package/dist/lattice-provenance-contract.d.ts +88 -0
- package/dist/lattice-provenance-contract.js +10 -1
- package/dist/lattice-provenance.d.ts +2 -1
- package/dist/lattice-provenance.js +3 -0
- package/dist/orm.d.ts +4 -1
- package/dist/preflight-invocation.js +31 -5
- package/dist/preflight-service-directory-roster.d.ts +2 -0
- package/dist/preflight-service-directory-roster.js +17 -0
- package/dist/preflight.js +3 -0
- package/dist/processes-contract.d.ts +20 -0
- package/dist/processes-contract.js +7 -1
- package/dist/processes.d.ts +2 -1
- package/dist/processes.js +6 -0
- package/dist/runtime.cjs +211 -43
- package/dist/service-directory-roster.d.ts +7 -0
- package/dist/service-directory-roster.js +25 -0
- package/dist/service-directory.d.ts +2 -0
- package/dist/service-directory.js +2 -0
- package/package.json +2 -2
package/dist/runtime.cjs
CHANGED
|
@@ -17111,7 +17111,7 @@ var require_lattice_provenance_contract = __commonJS({
|
|
|
17111
17111
|
"dist/lattice-provenance-contract.js"(exports2) {
|
|
17112
17112
|
"use strict";
|
|
17113
17113
|
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
17114
|
-
exports2.FunctionLatticeContextError = exports2.functionLatticeParallelSnapshotSchema = exports2.functionLatticeHumanCompletionsPageSchema = exports2.functionLatticeHumanCompletionSchema = exports2.functionLatticeExecutionContextSchema = exports2.functionLatticeContextRequestSchema = exports2.functionLatticeParallelSnapshotQuerySchema = exports2.functionLatticeHumanCompletionsQuerySchema = exports2.functionLatticeHumanCompletionQuerySchema = exports2.functionLatticeStartProvenanceSchema = exports2.FUNCTION_LATTICE_CONTEXT_PATH = exports2.FUNCTION_LATTICE_EXECUTION_TOKEN_HEADER = void 0;
|
|
17114
|
+
exports2.FunctionLatticeContextError = exports2.functionLatticeParallelSnapshotSchema = exports2.functionLatticeHumanCompletionsPageSchema = exports2.functionLatticeHumanCompletionSchema = exports2.functionLatticeExecutionContextSchema = exports2.functionLatticeRunCreatorAccessSchema = exports2.functionLatticeContextRequestSchema = exports2.functionLatticeParallelSnapshotQuerySchema = exports2.functionLatticeHumanCompletionsQuerySchema = exports2.functionLatticeHumanCompletionQuerySchema = exports2.functionLatticeStartProvenanceSchema = exports2.FUNCTION_LATTICE_CONTEXT_PATH = exports2.FUNCTION_LATTICE_EXECUTION_TOKEN_HEADER = void 0;
|
|
17115
17115
|
var zod_12 = require_zod();
|
|
17116
17116
|
exports2.FUNCTION_LATTICE_EXECUTION_TOKEN_HEADER = "x-sequence-lattice-execution-token";
|
|
17117
17117
|
exports2.FUNCTION_LATTICE_CONTEXT_PATH = "/api/managed-functions/lattice/context";
|
|
@@ -17150,6 +17150,7 @@ var require_lattice_provenance_contract = __commonJS({
|
|
|
17150
17150
|
exports2.functionLatticeParallelSnapshotQuerySchema = zod_12.z.strictObject({ nodeId: identifier, ancestorNodeId: identifier });
|
|
17151
17151
|
exports2.functionLatticeContextRequestSchema = zod_12.z.discriminatedUnion("operation", [
|
|
17152
17152
|
zod_12.z.strictObject({ operation: zod_12.z.literal("getExecutionContext") }),
|
|
17153
|
+
zod_12.z.strictObject({ operation: zod_12.z.literal("getRunCreatorAccess") }),
|
|
17153
17154
|
exports2.functionLatticeHumanCompletionQuerySchema.extend({
|
|
17154
17155
|
operation: zod_12.z.literal("getHumanCompletion")
|
|
17155
17156
|
}),
|
|
@@ -17183,6 +17184,14 @@ var require_lattice_provenance_contract = __commonJS({
|
|
|
17183
17184
|
attachedServiceAccountSub: principal
|
|
17184
17185
|
})
|
|
17185
17186
|
});
|
|
17187
|
+
exports2.functionLatticeRunCreatorAccessSchema = executionIdentity.extend({
|
|
17188
|
+
creator: zod_12.z.strictObject({
|
|
17189
|
+
sub: principal,
|
|
17190
|
+
tenant: zod_12.z.string().min(1).max(64).nullable(),
|
|
17191
|
+
platformOperator: zod_12.z.boolean()
|
|
17192
|
+
}).nullable(),
|
|
17193
|
+
observedAt: zod_12.z.iso.datetime({ offset: true })
|
|
17194
|
+
});
|
|
17186
17195
|
exports2.functionLatticeExecutionContextSchema = executionIdentity.extend({
|
|
17187
17196
|
input: zod_12.z.unknown(),
|
|
17188
17197
|
ctxSnapshot: zod_12.z.object({
|
|
@@ -17401,6 +17410,9 @@ var require_lattice_provenance = __commonJS({
|
|
|
17401
17410
|
getExecutionContext() {
|
|
17402
17411
|
return read({ body: { operation: "getExecutionContext" }, schema: lattice_provenance_contract_12.functionLatticeExecutionContextSchema, executions: (value) => [value] });
|
|
17403
17412
|
},
|
|
17413
|
+
getRunCreatorAccess() {
|
|
17414
|
+
return read({ body: { operation: "getRunCreatorAccess" }, schema: lattice_provenance_contract_12.functionLatticeRunCreatorAccessSchema, executions: (value) => [value] });
|
|
17415
|
+
},
|
|
17404
17416
|
async getHumanCompletion(query) {
|
|
17405
17417
|
const completion = await read({
|
|
17406
17418
|
body: { ...query, operation: "getHumanCompletion" },
|
|
@@ -17435,7 +17447,7 @@ var require_invocation_contract = __commonJS({
|
|
|
17435
17447
|
"dist/invocation-contract.js"(exports2) {
|
|
17436
17448
|
"use strict";
|
|
17437
17449
|
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
17438
|
-
exports2.FunctionInvocationContextError = exports2.functionInvocationContextSchema = exports2.functionInvocationContextRequestSchema = exports2.functionInvocationIdentityCapabilitySchema = exports2.FUNCTION_INVOCATION_CONTEXT_PATH = exports2.FUNCTION_INVOCATION_IDENTITY_TOKEN_HEADER = void 0;
|
|
17450
|
+
exports2.functionInvocationCapabilitiesSchema = exports2.FunctionInvocationContextError = exports2.functionInvocationContextSchema = exports2.functionInvocationContextRequestSchema = exports2.functionInvocationIdentityCapabilitySchema = exports2.FUNCTION_INVOCATION_CONTEXT_PATH = exports2.FUNCTION_INVOCATION_IDENTITY_TOKEN_HEADER = void 0;
|
|
17439
17451
|
exports2.readFunctionInvocationIdentityCapability = readFunctionInvocationIdentityCapability;
|
|
17440
17452
|
var zod_12 = require_zod();
|
|
17441
17453
|
exports2.FUNCTION_INVOCATION_IDENTITY_TOKEN_HEADER = "x-sequence-invocation-identity-token";
|
|
@@ -17443,7 +17455,8 @@ var require_invocation_contract = __commonJS({
|
|
|
17443
17455
|
var identifier = zod_12.z.string().min(1).max(255);
|
|
17444
17456
|
var principal = zod_12.z.string().min(1).max(512);
|
|
17445
17457
|
exports2.functionInvocationIdentityCapabilitySchema = zod_12.z.strictObject({
|
|
17446
|
-
identity: zod_12.z.literal(true)
|
|
17458
|
+
identity: zod_12.z.literal(true),
|
|
17459
|
+
caller_capabilities: zod_12.z.literal(true).optional()
|
|
17447
17460
|
});
|
|
17448
17461
|
function readFunctionInvocationIdentityCapability(manifest) {
|
|
17449
17462
|
if (typeof manifest !== "object" || manifest === null)
|
|
@@ -17453,9 +17466,10 @@ var require_invocation_contract = __commonJS({
|
|
|
17453
17466
|
return false;
|
|
17454
17467
|
return exports2.functionInvocationIdentityCapabilitySchema.safeParse(Reflect.get(capabilities, "invocation")).success;
|
|
17455
17468
|
}
|
|
17456
|
-
exports2.functionInvocationContextRequestSchema = zod_12.z.
|
|
17457
|
-
operation: zod_12.z.literal("getInvocationContext")
|
|
17458
|
-
|
|
17469
|
+
exports2.functionInvocationContextRequestSchema = zod_12.z.discriminatedUnion("operation", [
|
|
17470
|
+
zod_12.z.strictObject({ operation: zod_12.z.literal("getInvocationContext") }),
|
|
17471
|
+
zod_12.z.strictObject({ operation: zod_12.z.literal("getCallerCapabilities") })
|
|
17472
|
+
]);
|
|
17459
17473
|
exports2.functionInvocationContextSchema = zod_12.z.strictObject({
|
|
17460
17474
|
receiver: zod_12.z.strictObject({
|
|
17461
17475
|
functionId: identifier,
|
|
@@ -17481,6 +17495,9 @@ var require_invocation_contract = __commonJS({
|
|
|
17481
17495
|
}
|
|
17482
17496
|
};
|
|
17483
17497
|
exports2.FunctionInvocationContextError = FunctionInvocationContextError;
|
|
17498
|
+
exports2.functionInvocationCapabilitiesSchema = exports2.functionInvocationContextSchema.extend({
|
|
17499
|
+
capabilities: zod_12.z.array(zod_12.z.string().min(1).max(140).regex(/^[a-z0-9][a-z0-9/_.:-]*$/)).max(256)
|
|
17500
|
+
}).refine((value) => new Set(value.capabilities).size === value.capabilities.length, "Capabilities must be unique");
|
|
17484
17501
|
}
|
|
17485
17502
|
});
|
|
17486
17503
|
|
|
@@ -17833,37 +17850,39 @@ var require_invocation = __commonJS({
|
|
|
17833
17850
|
function createFunctionInvocationClient({ request, baseUrl, fetchImpl = globalThis.fetch }) {
|
|
17834
17851
|
const url = `${trustedOrigin(baseUrl)}${invocation_contract_1.FUNCTION_INVOCATION_CONTEXT_PATH}`;
|
|
17835
17852
|
const { token, claims } = readCredential({ request });
|
|
17836
|
-
|
|
17837
|
-
|
|
17838
|
-
|
|
17839
|
-
|
|
17840
|
-
|
|
17841
|
-
|
|
17842
|
-
|
|
17843
|
-
|
|
17844
|
-
|
|
17845
|
-
|
|
17846
|
-
|
|
17847
|
-
|
|
17848
|
-
|
|
17849
|
-
|
|
17850
|
-
|
|
17851
|
-
|
|
17852
|
-
throw new invocation_contract_1.FunctionInvocationContextError(502, "context_request_failed", "The invocation context request failed");
|
|
17853
|
-
}
|
|
17854
|
-
if (response.redirected || response.status >= 300 && response.status < 400)
|
|
17855
|
-
throw new invocation_contract_1.FunctionInvocationContextError(502, "redirect_refused", "The invocation context request must not redirect");
|
|
17856
|
-
const result = await response.json().catch(() => null);
|
|
17857
|
-
if (!response.ok) {
|
|
17858
|
-
const error = errorSchema.safeParse(result);
|
|
17859
|
-
throw new invocation_contract_1.FunctionInvocationContextError(response.status, error.success ? error.data.code : "context_read_failed", error.success && !error.data.detail.includes(token) ? error.data.detail : "Invocation context read failed");
|
|
17860
|
-
}
|
|
17861
|
-
requireFresh(claims);
|
|
17862
|
-
const parsed = invocation_contract_1.functionInvocationContextSchema.safeParse(result);
|
|
17863
|
-
if (!parsed.success || !matchesInvocation({ context: parsed.data, claims }))
|
|
17864
|
-
throw new invocation_contract_1.FunctionInvocationContextError(502, "malformed_response", "Atlas returned an invalid invocation context response");
|
|
17865
|
-
return parsed.data;
|
|
17853
|
+
async function read(operation, schema) {
|
|
17854
|
+
requireFresh(claims);
|
|
17855
|
+
let response;
|
|
17856
|
+
try {
|
|
17857
|
+
response = await fetchImpl(url, {
|
|
17858
|
+
method: "POST",
|
|
17859
|
+
headers: {
|
|
17860
|
+
"content-type": "application/json",
|
|
17861
|
+
[invocation_contract_1.FUNCTION_INVOCATION_IDENTITY_TOKEN_HEADER]: token
|
|
17862
|
+
},
|
|
17863
|
+
body: JSON.stringify(invocation_contract_1.functionInvocationContextRequestSchema.parse({ operation })),
|
|
17864
|
+
redirect: "error",
|
|
17865
|
+
signal: AbortSignal.timeout(3e4)
|
|
17866
|
+
});
|
|
17867
|
+
} catch {
|
|
17868
|
+
throw new invocation_contract_1.FunctionInvocationContextError(502, "context_request_failed", "The invocation context request failed");
|
|
17866
17869
|
}
|
|
17870
|
+
if (response.redirected || response.status >= 300 && response.status < 400)
|
|
17871
|
+
throw new invocation_contract_1.FunctionInvocationContextError(502, "redirect_refused", "The invocation context request must not redirect");
|
|
17872
|
+
const result = await response.json().catch(() => null);
|
|
17873
|
+
if (!response.ok) {
|
|
17874
|
+
const error = errorSchema.safeParse(result);
|
|
17875
|
+
throw new invocation_contract_1.FunctionInvocationContextError(response.status, error.success ? error.data.code : "context_read_failed", error.success && !error.data.detail.includes(token) ? error.data.detail : "Invocation context read failed");
|
|
17876
|
+
}
|
|
17877
|
+
requireFresh(claims);
|
|
17878
|
+
const parsed = schema.safeParse(result);
|
|
17879
|
+
if (!parsed.success || !matchesInvocation({ context: parsed.data, claims }))
|
|
17880
|
+
throw new invocation_contract_1.FunctionInvocationContextError(502, "malformed_response", "Atlas returned an invalid invocation context response");
|
|
17881
|
+
return parsed.data;
|
|
17882
|
+
}
|
|
17883
|
+
return {
|
|
17884
|
+
getInvocationContext: () => read("getInvocationContext", invocation_contract_1.functionInvocationContextSchema),
|
|
17885
|
+
getCallerCapabilities: () => read("getCallerCapabilities", invocation_contract_1.functionInvocationCapabilitiesSchema)
|
|
17867
17886
|
};
|
|
17868
17887
|
}
|
|
17869
17888
|
}
|
|
@@ -17874,7 +17893,7 @@ var require_processes_contract = __commonJS({
|
|
|
17874
17893
|
"dist/processes-contract.js"(exports2) {
|
|
17875
17894
|
"use strict";
|
|
17876
17895
|
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
17877
|
-
exports2.FunctionProcessReadError = exports2.functionProcessReadRequestSchema = exports2.functionProcessRunsPageSchema = exports2.functionProcessCompletedAgentReferenceSchema = exports2.functionProcessCompletedAgentReferenceQuerySchema = exports2.functionProcessRunsPageQuerySchema = exports2.functionProcessRunQuerySchema = exports2.functionProcessRunSummarySchema = exports2.functionProcessRunStatusSchema = exports2.functionProcessReadScopesSchema = exports2.FUNCTION_PROCESS_READ_PATH = exports2.FUNCTION_PROCESS_TOKEN_HEADER = void 0;
|
|
17896
|
+
exports2.FunctionProcessReadError = exports2.functionProcessReadRequestSchema = exports2.functionProcessRunsPageSchema = exports2.functionProcessCompletedAgentReferenceSchema = exports2.functionProcessCompletedAgentReferenceQuerySchema = exports2.functionProcessCompletedNodeSchema = exports2.functionProcessCompletedNodeQuerySchema = exports2.functionProcessRunsPageQuerySchema = exports2.functionProcessRunQuerySchema = exports2.functionProcessRunSummarySchema = exports2.functionProcessRunStatusSchema = exports2.functionProcessReadScopesSchema = exports2.FUNCTION_PROCESS_READ_PATH = exports2.FUNCTION_PROCESS_TOKEN_HEADER = void 0;
|
|
17878
17897
|
exports2.readFunctionProcessScopes = readFunctionProcessScopes;
|
|
17879
17898
|
var zod_12 = require_zod();
|
|
17880
17899
|
exports2.FUNCTION_PROCESS_TOKEN_HEADER = "x-sequence-process-service-token";
|
|
@@ -17928,6 +17947,15 @@ var require_processes_contract = __commonJS({
|
|
|
17928
17947
|
cursor: zod_12.z.string().min(1).max(8192).optional(),
|
|
17929
17948
|
archived: zod_12.z.boolean().optional()
|
|
17930
17949
|
});
|
|
17950
|
+
exports2.functionProcessCompletedNodeQuerySchema = exports2.functionProcessRunQuerySchema.extend({ nodeId: entityId });
|
|
17951
|
+
exports2.functionProcessCompletedNodeSchema = zod_12.z.strictObject({
|
|
17952
|
+
runId: entityId,
|
|
17953
|
+
processId,
|
|
17954
|
+
processVersion: entityId,
|
|
17955
|
+
nodeId: entityId,
|
|
17956
|
+
stepId: entityId,
|
|
17957
|
+
completedAt: zod_12.z.iso.datetime({ offset: true })
|
|
17958
|
+
});
|
|
17931
17959
|
exports2.functionProcessCompletedAgentReferenceQuerySchema = exports2.functionProcessRunQuerySchema.extend({ nodeId: entityId });
|
|
17932
17960
|
exports2.functionProcessCompletedAgentReferenceSchema = zod_12.z.strictObject({
|
|
17933
17961
|
stepId: entityId,
|
|
@@ -17943,6 +17971,7 @@ var require_processes_contract = __commonJS({
|
|
|
17943
17971
|
});
|
|
17944
17972
|
exports2.functionProcessReadRequestSchema = zod_12.z.discriminatedUnion("operation", [
|
|
17945
17973
|
exports2.functionProcessRunQuerySchema.extend({ operation: zod_12.z.literal("getRun") }),
|
|
17974
|
+
exports2.functionProcessCompletedNodeQuerySchema.extend({ operation: zod_12.z.literal("getCompletedNode") }),
|
|
17946
17975
|
exports2.functionProcessCompletedAgentReferenceQuerySchema.extend({ operation: zod_12.z.literal("getCompletedAgentReference") }),
|
|
17947
17976
|
exports2.functionProcessRunsPageQuerySchema.extend({
|
|
17948
17977
|
operation: zod_12.z.literal("listRunsPage")
|
|
@@ -18109,6 +18138,12 @@ var require_processes = __commonJS({
|
|
|
18109
18138
|
});
|
|
18110
18139
|
const read = ({ body, schema }) => transport({ body: processes_contract_1.functionProcessReadRequestSchema.parse(body), schema });
|
|
18111
18140
|
return {
|
|
18141
|
+
async getCompletedNode(query) {
|
|
18142
|
+
const proof = await read({ body: { ...query, operation: "getCompletedNode" }, schema: processes_contract_1.functionProcessCompletedNodeSchema });
|
|
18143
|
+
if (proof.runId !== query.runId || proof.processId !== query.process || proof.nodeId !== query.nodeId)
|
|
18144
|
+
throw new processes_contract_1.FunctionProcessReadError(502, "malformed_response", "Atlas returned a different completed node");
|
|
18145
|
+
return proof;
|
|
18146
|
+
},
|
|
18112
18147
|
async getCompletedAgentReference(query) {
|
|
18113
18148
|
const agent = readAgentCredential({ request });
|
|
18114
18149
|
const readReference = (0, invocation_client_1.createInvocationReadTransport)({
|
|
@@ -29902,19 +29937,50 @@ var require_directory_contract = __commonJS({
|
|
|
29902
29937
|
}
|
|
29903
29938
|
});
|
|
29904
29939
|
|
|
29940
|
+
// dist/directory-roster-contract.js
|
|
29941
|
+
var require_directory_roster_contract = __commonJS({
|
|
29942
|
+
"dist/directory-roster-contract.js"(exports2) {
|
|
29943
|
+
"use strict";
|
|
29944
|
+
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
29945
|
+
exports2.directoryRosterPageSchema = exports2.directoryRosterQuerySchema = exports2.functionDirectoryRostersSchema = exports2.FUNCTION_DIRECTORY_ROSTER_PATH = void 0;
|
|
29946
|
+
exports2.readFunctionDirectoryRosterGroups = readFunctionDirectoryRosterGroups;
|
|
29947
|
+
var zod_12 = require_zod();
|
|
29948
|
+
var directory_config_1 = require_directory_config();
|
|
29949
|
+
var directory_contract_1 = require_directory_contract();
|
|
29950
|
+
exports2.FUNCTION_DIRECTORY_ROSTER_PATH = "/api/managed-functions/directory/roster";
|
|
29951
|
+
exports2.functionDirectoryRostersSchema = zod_12.z.array(directory_config_1.directoryGroupIdSchema).min(1).max(16).refine((groups) => new Set(groups).size === groups.length, "Roster groups must be distinct");
|
|
29952
|
+
exports2.directoryRosterQuerySchema = zod_12.z.object({
|
|
29953
|
+
tenant: directory_contract_1.directoryTenantSchema,
|
|
29954
|
+
groupId: directory_config_1.directoryGroupIdSchema,
|
|
29955
|
+
limit: zod_12.z.number().int().min(1).max(50).default(50),
|
|
29956
|
+
cursor: zod_12.z.string().max(2048).optional()
|
|
29957
|
+
}).strict();
|
|
29958
|
+
exports2.directoryRosterPageSchema = zod_12.z.object({
|
|
29959
|
+
members: zod_12.z.array(zod_12.z.object({ id: zod_12.z.string(), sub: zod_12.z.string(), name: zod_12.z.string(), email: zod_12.z.string(), deactivated: zod_12.z.literal(false) }).strict()).max(50),
|
|
29960
|
+
nextCursor: zod_12.z.string().nullable()
|
|
29961
|
+
}).strict();
|
|
29962
|
+
function readFunctionDirectoryRosterGroups(manifest) {
|
|
29963
|
+
const parsed = zod_12.z.object({ capabilities: zod_12.z.object({ directory: zod_12.z.object({ rosters: exports2.functionDirectoryRostersSchema.optional() }).optional() }).optional() }).safeParse(manifest);
|
|
29964
|
+
return parsed.success ? parsed.data.capabilities?.directory?.rosters ?? [] : [];
|
|
29965
|
+
}
|
|
29966
|
+
}
|
|
29967
|
+
});
|
|
29968
|
+
|
|
29905
29969
|
// dist/directory-manifest.js
|
|
29906
29970
|
var require_directory_manifest = __commonJS({
|
|
29907
29971
|
"dist/directory-manifest.js"(exports2) {
|
|
29908
29972
|
"use strict";
|
|
29909
29973
|
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
29910
29974
|
exports2.functionDirectoryManifestSchema = void 0;
|
|
29975
|
+
var directory_roster_contract_1 = require_directory_roster_contract();
|
|
29911
29976
|
var zod_12 = require_zod();
|
|
29912
29977
|
var directory_config_1 = require_directory_config();
|
|
29913
29978
|
var directory_contract_1 = require_directory_contract();
|
|
29914
29979
|
exports2.functionDirectoryManifestSchema = zod_12.z.strictObject({
|
|
29980
|
+
rosters: directory_roster_contract_1.functionDirectoryRostersSchema.optional(),
|
|
29915
29981
|
groups: directory_config_1.directoryScopesSchema.shape.groups.optional(),
|
|
29916
29982
|
resolve: directory_contract_1.functionDirectoryScopesSchema.shape.resolve.optional()
|
|
29917
|
-
}).refine((value) => value.groups !== void 0 || value.resolve !== void 0, "Declare directory groups, tenant resolution scopes, or both");
|
|
29983
|
+
}).refine((value) => value.groups !== void 0 || value.resolve !== void 0, "Declare directory groups, tenant resolution scopes, or both").refine((value) => value.rosters === void 0 || value.resolve !== void 0, "Service rosters also require directory resolve tenant scopes");
|
|
29918
29984
|
}
|
|
29919
29985
|
});
|
|
29920
29986
|
|
|
@@ -30290,6 +30356,7 @@ var require_capabilities = __commonJS({
|
|
|
30290
30356
|
sdk: { package: exports2.MANAGED_FUNCTION_SDK_PACKAGE, min: "0.3.0" }
|
|
30291
30357
|
},
|
|
30292
30358
|
features: {
|
|
30359
|
+
directory_rosters: { field: "capabilities.directory.rosters", supported: true, limit: "1 to 16 explicit groups; up to 50 active tenant members per page; directory Reader and group membership required", min_cli: "0.6.6", min_sdk: "0.4.4" },
|
|
30293
30360
|
directory_members: {
|
|
30294
30361
|
field: "capabilities.directory.groups",
|
|
30295
30362
|
supported: true,
|
|
@@ -30311,6 +30378,13 @@ var require_capabilities = __commonJS({
|
|
|
30311
30378
|
min_cli: "0.5.5",
|
|
30312
30379
|
min_sdk: "0.4.2"
|
|
30313
30380
|
},
|
|
30381
|
+
invocation_caller_capabilities: {
|
|
30382
|
+
field: "capabilities.invocation.caller_capabilities",
|
|
30383
|
+
supported: true,
|
|
30384
|
+
limit: "current human caller capabilities declared by this exact active receiver; at most 256 pins",
|
|
30385
|
+
min_cli: "0.6.6",
|
|
30386
|
+
min_sdk: "0.4.4"
|
|
30387
|
+
},
|
|
30314
30388
|
invocation_identity: {
|
|
30315
30389
|
field: "capabilities.invocation.identity",
|
|
30316
30390
|
supported: true,
|
|
@@ -30501,8 +30575,10 @@ var require_deployed_policy = __commonJS({
|
|
|
30501
30575
|
features: {
|
|
30502
30576
|
immutable_release: normalizeImmutableRelease(features.immutable_release),
|
|
30503
30577
|
invocation_identity: normalizeInvocationIdentity(features.invocation_identity),
|
|
30578
|
+
invocation_caller_capabilities: normalizeInvocationIdentity(features.invocation_caller_capabilities, "capabilities.invocation.caller_capabilities"),
|
|
30504
30579
|
directory_members: normalizeDirectoryMembers(features.directory_members),
|
|
30505
30580
|
directory_resolve: normalizeDirectory(features.directory_resolve),
|
|
30581
|
+
directory_rosters: normalizeRosters(features.directory_rosters),
|
|
30506
30582
|
abrigo_read: normalizeAbrigo(features.abrigo_read),
|
|
30507
30583
|
lattice_context: normalizeLatticeContext(features.lattice_context),
|
|
30508
30584
|
postgres_egress: normalizePostgres(features.postgres_egress),
|
|
@@ -30553,13 +30629,13 @@ var require_deployed_policy = __commonJS({
|
|
|
30553
30629
|
return void 0;
|
|
30554
30630
|
return { field: typeof value.field === "string" ? value.field : "capabilities.abrigo.read", supported: value.supported, limit: value.limit, min_cli: value.min_cli, min_sdk: value.min_sdk };
|
|
30555
30631
|
}
|
|
30556
|
-
function normalizeInvocationIdentity(value) {
|
|
30632
|
+
function normalizeInvocationIdentity(value, defaultField = "capabilities.invocation.identity") {
|
|
30557
30633
|
if (!value || typeof value.supported !== "boolean" || typeof value.limit !== "string")
|
|
30558
30634
|
return void 0;
|
|
30559
30635
|
if (typeof value.min_cli !== "string" || typeof value.min_sdk !== "string")
|
|
30560
30636
|
return void 0;
|
|
30561
30637
|
return {
|
|
30562
|
-
field: typeof value.field === "string" ? value.field :
|
|
30638
|
+
field: typeof value.field === "string" ? value.field : defaultField,
|
|
30563
30639
|
supported: value.supported,
|
|
30564
30640
|
limit: value.limit,
|
|
30565
30641
|
min_cli: value.min_cli,
|
|
@@ -30675,6 +30751,11 @@ var require_deployed_policy = __commonJS({
|
|
|
30675
30751
|
min_sdk: value.min_sdk
|
|
30676
30752
|
};
|
|
30677
30753
|
}
|
|
30754
|
+
function normalizeRosters(value) {
|
|
30755
|
+
if (!value || typeof value.supported !== "boolean" || typeof value.limit !== "string" || typeof value.min_cli !== "string" || typeof value.min_sdk !== "string")
|
|
30756
|
+
return void 0;
|
|
30757
|
+
return { field: typeof value.field === "string" ? value.field : "capabilities.directory.rosters", supported: value.supported, limit: value.limit, min_cli: value.min_cli, min_sdk: value.min_sdk };
|
|
30758
|
+
}
|
|
30678
30759
|
}
|
|
30679
30760
|
});
|
|
30680
30761
|
|
|
@@ -30697,6 +30778,29 @@ var require_preflight_issue = __commonJS({
|
|
|
30697
30778
|
}
|
|
30698
30779
|
});
|
|
30699
30780
|
|
|
30781
|
+
// dist/preflight-service-directory-roster.js
|
|
30782
|
+
var require_preflight_service_directory_roster = __commonJS({
|
|
30783
|
+
"dist/preflight-service-directory-roster.js"(exports2) {
|
|
30784
|
+
"use strict";
|
|
30785
|
+
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
30786
|
+
exports2.checkDirectoryRosters = checkDirectoryRosters;
|
|
30787
|
+
var capabilities_1 = require_capabilities();
|
|
30788
|
+
var preflight_issue_1 = require_preflight_issue();
|
|
30789
|
+
var sdk_range_1 = require_sdk_range();
|
|
30790
|
+
function checkDirectoryRosters({ capabilities, tooling, cliVersion, sdkVersion, checkDeployment, issues }) {
|
|
30791
|
+
const deployed = capabilities?.features.directory_rosters;
|
|
30792
|
+
const feature = deployed ?? capabilities_1.MANAGED_FUNCTION_CAPABILITIES.features.directory_rosters;
|
|
30793
|
+
const details = { field: feature.field, limit: feature.limit, tooling, requiredCli: feature.min_cli, requiredSdk: feature.min_sdk, cliVersion, sdkVersion };
|
|
30794
|
+
if (checkDeployment && deployed?.supported !== true) {
|
|
30795
|
+
issues.push((0, preflight_issue_1.createPreflightIssue)({ ...details, problem: "scoped service group rosters are not supported by this deployment" }));
|
|
30796
|
+
return;
|
|
30797
|
+
}
|
|
30798
|
+
if ((0, capabilities_1.versionIsOlder)(cliVersion, feature.min_cli) || sdkVersion && (0, sdk_range_1.sdkConstraintIsOlder)(sdkVersion, feature.min_sdk))
|
|
30799
|
+
issues.push((0, preflight_issue_1.createPreflightIssue)({ ...details, problem: "the installed tooling does not support scoped service group rosters" }));
|
|
30800
|
+
}
|
|
30801
|
+
}
|
|
30802
|
+
});
|
|
30803
|
+
|
|
30700
30804
|
// dist/preflight-processes.js
|
|
30701
30805
|
var require_preflight_processes = __commonJS({
|
|
30702
30806
|
"dist/preflight-processes.js"(exports2) {
|
|
@@ -30834,6 +30938,22 @@ var require_preflight_invocation = __commonJS({
|
|
|
30834
30938
|
}));
|
|
30835
30939
|
return;
|
|
30836
30940
|
}
|
|
30941
|
+
if (parsed.data.caller_capabilities) {
|
|
30942
|
+
const observed = capabilities?.features.invocation_caller_capabilities;
|
|
30943
|
+
const required = capabilities_1.MANAGED_FUNCTION_CAPABILITIES.features.invocation_caller_capabilities;
|
|
30944
|
+
if (checkDeployment && observed?.supported !== true || (0, capabilities_1.versionIsOlder)(cliVersion, required.min_cli) || !sdkVersion || (0, sdk_range_1.sdkConstraintIsOlder)(sdkVersion, required.min_sdk)) {
|
|
30945
|
+
issues.push((0, preflight_issue_1.createPreflightIssue)({
|
|
30946
|
+
limit: required.limit,
|
|
30947
|
+
tooling,
|
|
30948
|
+
requiredCli: required.min_cli,
|
|
30949
|
+
requiredSdk: required.min_sdk,
|
|
30950
|
+
cliVersion,
|
|
30951
|
+
sdkVersion,
|
|
30952
|
+
field: required.field,
|
|
30953
|
+
problem: "Current caller capability reads require deployed support and compatible tooling"
|
|
30954
|
+
}));
|
|
30955
|
+
}
|
|
30956
|
+
}
|
|
30837
30957
|
if (checkDeployment && deployed?.supported !== true) {
|
|
30838
30958
|
issues.push((0, preflight_issue_1.createPreflightIssue)({
|
|
30839
30959
|
...details,
|
|
@@ -31180,6 +31300,7 @@ var require_preflight = __commonJS({
|
|
|
31180
31300
|
"use strict";
|
|
31181
31301
|
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
31182
31302
|
exports2.preflightManagedFunction = preflightManagedFunction;
|
|
31303
|
+
var preflight_service_directory_roster_1 = require_preflight_service_directory_roster();
|
|
31183
31304
|
var capabilities_1 = require_capabilities();
|
|
31184
31305
|
var sdk_range_1 = require_sdk_range();
|
|
31185
31306
|
var preflight_issue_1 = require_preflight_issue();
|
|
@@ -31392,6 +31513,8 @@ var require_preflight = __commonJS({
|
|
|
31392
31513
|
return;
|
|
31393
31514
|
}
|
|
31394
31515
|
const scoped = (directory2) => ({ ...args, manifest: { ...args.manifest, capabilities: { ...args.manifest.capabilities, directory: directory2 } } });
|
|
31516
|
+
if (parsed.data.rosters)
|
|
31517
|
+
(0, preflight_service_directory_roster_1.checkDirectoryRosters)(args);
|
|
31395
31518
|
if (parsed.data.groups)
|
|
31396
31519
|
(0, preflight_directory_1.checkDirectory)(scoped({ groups: parsed.data.groups }));
|
|
31397
31520
|
if (parsed.data.resolve)
|
|
@@ -31421,8 +31544,8 @@ var require_config2 = __commonJS({
|
|
|
31421
31544
|
for (var p in m2) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m2, p);
|
|
31422
31545
|
};
|
|
31423
31546
|
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
31424
|
-
exports2.
|
|
31425
|
-
exports2.cacheManifestSchema = exports2.CACHE_MAX_TTL_SECONDS = exports2.preflightManagedFunction = exports2.parseDeployedPolicy = void 0;
|
|
31547
|
+
exports2.sdkSpecFromPackageJson = exports2.sdkVersionFromPackageJson = exports2.isPostgresEgress = exports2.formatValidationDetail = exports2.MANAGED_FUNCTION_SDK_PACKAGE = exports2.MANAGED_FUNCTION_CLI_PACKAGE = exports2.MANAGED_FUNCTION_CAPABILITIES = exports2.managedFunctionWorkloadLimitsSchema = exports2.MF_LIMITS_DEFAULTS = exports2.MF_LIMITS_CAPS = exports2.MANAGED_FUNCTION_LIMITS = exports2.readFunctionImmutableRelease = exports2.functionImmutableReleaseSchema = exports2.shouldReportAtlasHttp = exports2.directoryPrincipalResolutionSchema = exports2.directoryPrincipalResolveRequestSchema = exports2.readFunctionDirectoryScopes = exports2.functionDirectoryScopesSchema = exports2.FUNCTION_DIRECTORY_RESOLVE_PATH = exports2.FUNCTION_DIRECTORY_TOKEN_HEADER = exports2.FUNCTION_CALLER_DATA_TOKEN_HEADER = exports2.readFunctionWorkflowEvidenceScopes = exports2.readFunctionWorkflowScopes = exports2.functionWorkflowScopesSchema = exports2.functionAgentCompletedRunSchema = exports2.functionAgentCompletedRunQuerySchema = exports2.functionAgentReadRequestSchema = exports2.readFunctionAgentScopes = exports2.functionAgentReadScopesSchema = exports2.FUNCTION_AGENT_READ_PATH = exports2.FUNCTION_AGENT_TOKEN_HEADER = exports2.functionProcessCompletedNodeQuerySchema = exports2.functionProcessCompletedNodeSchema = exports2.functionProcessCompletedAgentReferenceQuerySchema = exports2.functionProcessCompletedAgentReferenceSchema = exports2.functionProcessRunSummarySchema = exports2.functionProcessReadRequestSchema = exports2.readFunctionProcessScopes = exports2.functionProcessReadScopesSchema = exports2.FUNCTION_PROCESS_READ_PATH = exports2.FUNCTION_PROCESS_TOKEN_HEADER = exports2.readFunctionLatticeContextCapability = exports2.functionLatticeContextCapabilitySchema = exports2.functionDirectoryManifestSchema = exports2.readDirectoryGroups = exports2.directoryMembersResponse = exports2.directoryMembersInput = exports2.directoryScopesSchema = exports2.directoryGroupIdSchema = exports2.DIRECTORY_TOKEN_HEADER = void 0;
|
|
31548
|
+
exports2.cacheManifestSchema = exports2.CACHE_MAX_TTL_SECONDS = exports2.preflightManagedFunction = exports2.parseDeployedPolicy = exports2.versionIsOlder = exports2.sdkVersionLowerBound = void 0;
|
|
31426
31549
|
exports2.readCacheConfiguration = readCacheConfiguration;
|
|
31427
31550
|
var directory_config_1 = require_directory_config();
|
|
31428
31551
|
Object.defineProperty(exports2, "DIRECTORY_TOKEN_HEADER", { enumerable: true, get: function() {
|
|
@@ -31480,6 +31603,12 @@ var require_config2 = __commonJS({
|
|
|
31480
31603
|
Object.defineProperty(exports2, "functionProcessCompletedAgentReferenceQuerySchema", { enumerable: true, get: function() {
|
|
31481
31604
|
return processes_contract_1.functionProcessCompletedAgentReferenceQuerySchema;
|
|
31482
31605
|
} });
|
|
31606
|
+
Object.defineProperty(exports2, "functionProcessCompletedNodeSchema", { enumerable: true, get: function() {
|
|
31607
|
+
return processes_contract_1.functionProcessCompletedNodeSchema;
|
|
31608
|
+
} });
|
|
31609
|
+
Object.defineProperty(exports2, "functionProcessCompletedNodeQuerySchema", { enumerable: true, get: function() {
|
|
31610
|
+
return processes_contract_1.functionProcessCompletedNodeQuerySchema;
|
|
31611
|
+
} });
|
|
31483
31612
|
var agents_contract_1 = require_agents_contract();
|
|
31484
31613
|
Object.defineProperty(exports2, "FUNCTION_AGENT_TOKEN_HEADER", { enumerable: true, get: function() {
|
|
31485
31614
|
return agents_contract_1.FUNCTION_AGENT_TOKEN_HEADER;
|
|
@@ -31615,6 +31744,7 @@ var require_config2 = __commonJS({
|
|
|
31615
31744
|
const cache = typeof manifest === "object" && manifest !== null ? Reflect.get(manifest, "cache") : void 0;
|
|
31616
31745
|
return exports2.cacheManifestSchema.parse(cache ?? {});
|
|
31617
31746
|
}
|
|
31747
|
+
__exportStar2(require_directory_roster_contract(), exports2);
|
|
31618
31748
|
}
|
|
31619
31749
|
});
|
|
31620
31750
|
|
|
@@ -59862,12 +59992,44 @@ var require_valkey = __commonJS({
|
|
|
59862
59992
|
}
|
|
59863
59993
|
});
|
|
59864
59994
|
|
|
59995
|
+
// dist/service-directory-roster.js
|
|
59996
|
+
var require_service_directory_roster = __commonJS({
|
|
59997
|
+
"dist/service-directory-roster.js"(exports2) {
|
|
59998
|
+
"use strict";
|
|
59999
|
+
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
60000
|
+
exports2.createServiceRosterReader = createServiceRosterReader;
|
|
60001
|
+
var zod_12 = require_zod();
|
|
60002
|
+
var directory_contract_1 = require_directory_contract();
|
|
60003
|
+
var directory_roster_contract_1 = require_directory_roster_contract();
|
|
60004
|
+
function createServiceRosterReader({ origin, token, expiresAt, fetchImpl }) {
|
|
60005
|
+
return async (input) => {
|
|
60006
|
+
if (expiresAt <= Date.now() / 1e3)
|
|
60007
|
+
throw new directory_contract_1.DirectoryPrincipalResolveError(401, "expired_context", "The directory credential expired; start a new invocation");
|
|
60008
|
+
const query = directory_roster_contract_1.directoryRosterQuerySchema.safeParse(input);
|
|
60009
|
+
if (!query.success)
|
|
60010
|
+
throw new directory_contract_1.DirectoryPrincipalResolveError(400, "invalid_request", "Invalid group roster request");
|
|
60011
|
+
const response = await fetchImpl(`${origin}${directory_roster_contract_1.FUNCTION_DIRECTORY_ROSTER_PATH}`, { method: "POST", headers: { "content-type": "application/json", [directory_contract_1.FUNCTION_DIRECTORY_TOKEN_HEADER]: token }, body: JSON.stringify(query.data), redirect: "error", signal: AbortSignal.timeout(3e4) });
|
|
60012
|
+
const body = await response.json().catch(() => null);
|
|
60013
|
+
if (!response.ok) {
|
|
60014
|
+
const error = zod_12.z.object({ code: zod_12.z.string().max(128).optional(), detail: zod_12.z.string().max(2e3).optional() }).safeParse(body);
|
|
60015
|
+
throw new directory_contract_1.DirectoryPrincipalResolveError(response.status, error.success ? error.data.code ?? "directory_roster_failed" : "directory_roster_failed", error.success ? error.data.detail ?? "Group roster read failed" : "Group roster read failed");
|
|
60016
|
+
}
|
|
60017
|
+
const result = directory_roster_contract_1.directoryRosterPageSchema.safeParse(body);
|
|
60018
|
+
if (!result.success || result.data.members.length > query.data.limit || new Set(result.data.members.map((member) => member.id)).size !== result.data.members.length)
|
|
60019
|
+
throw new directory_contract_1.DirectoryPrincipalResolveError(502, "malformed_response", "Atlas returned an invalid group roster");
|
|
60020
|
+
return result.data;
|
|
60021
|
+
};
|
|
60022
|
+
}
|
|
60023
|
+
}
|
|
60024
|
+
});
|
|
60025
|
+
|
|
59865
60026
|
// dist/service-directory.js
|
|
59866
60027
|
var require_service_directory = __commonJS({
|
|
59867
60028
|
"dist/service-directory.js"(exports2) {
|
|
59868
60029
|
"use strict";
|
|
59869
60030
|
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
59870
60031
|
exports2.createFunctionServiceDirectoryClient = createFunctionServiceDirectoryClient;
|
|
60032
|
+
var service_directory_roster_1 = require_service_directory_roster();
|
|
59871
60033
|
var zod_12 = require_zod();
|
|
59872
60034
|
var directory_contract_1 = require_directory_contract();
|
|
59873
60035
|
function credential({ request }) {
|
|
@@ -59914,6 +60076,7 @@ var require_service_directory = __commonJS({
|
|
|
59914
60076
|
const url = `${origin(baseUrl)}${directory_contract_1.FUNCTION_DIRECTORY_RESOLVE_PATH}`;
|
|
59915
60077
|
const { token, expiresAt } = credential({ request });
|
|
59916
60078
|
return {
|
|
60079
|
+
listGroupMembers: (0, service_directory_roster_1.createServiceRosterReader)({ origin: origin(baseUrl), token, expiresAt, fetchImpl }),
|
|
59917
60080
|
async resolve(input) {
|
|
59918
60081
|
if (expiresAt <= Date.now() / 1e3)
|
|
59919
60082
|
throw new directory_contract_1.DirectoryPrincipalResolveError(401, "expired_context", "The directory credential expired; start a new invocation");
|
|
@@ -59954,7 +60117,7 @@ var __exportStar = exports && exports.__exportStar || function(m2, exports2) {
|
|
|
59954
60117
|
for (var p in m2) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports2, p)) __createBinding(exports2, m2, p);
|
|
59955
60118
|
};
|
|
59956
60119
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
59957
|
-
exports.createFunctionServiceDirectoryClient = exports.readCacheConfiguration = exports.cacheManifestSchema = exports.createCacheManager = exports.CacheError = exports.createFunctionStorageClient = exports.runWithFunctionTracing = exports.installFunctionTracing = exports.functionMonitoringAnnotationSchema = exports.monitoringPublishSchema = exports.monitoringEventsSchema = exports.monitoringPayloadHash = exports.FunctionMonitoringError = exports.createFunctionServiceMonitoringClient = exports.functionSourceJobAdmissionSchema = exports.functionAgentSourceExecutionSchema = exports.functionAgentConversationEvidenceRequestSchema = exports.functionAgentConversationEvidenceCaptureSchema = exports.functionAgentConversationEvidenceResponseSchema = exports.functionAgentSourceEvidenceCaptureSchema = exports.functionAgentSourceEvidenceRequestSchema = exports.functionAgentSourceResponseSchema = exports.createFunctionWorkflowEvidenceClient = exports.createFunctionServiceWorkflowsClient = exports.createFunctionAgentEvidenceClient = exports.FunctionAgentReadError = exports.createFunctionServiceAgentsClient = exports.FunctionProcessReadError = exports.createFunctionServiceProcessesClient = exports.functionLatticeHumanCompletionsPageSchema = exports.functionLatticeHumanCompletionsQuerySchema = exports.functionLatticeHumanCompletionSchema = exports.functionLatticeHumanCompletionQuerySchema = exports.functionLatticeExecutionContextSchema = exports.functionLatticeContextRequestSchema = exports.FunctionLatticeContextError = exports.FUNCTION_LATTICE_EXECUTION_TOKEN_HEADER = exports.FUNCTION_LATTICE_CONTEXT_PATH = exports.createFunctionInvocationClient = exports.functionLatticeStartProvenanceSchema = exports.functionLatticeParallelSnapshotQuerySchema = exports.functionLatticeParallelSnapshotSchema = exports.createFunctionLatticeClient = exports.readFunctionLatticeContextCapability = exports.functionLatticeContextCapabilitySchema = exports.FunctionDirectoryReadError = exports.createFunctionDirectoryClient = void 0;
|
|
60120
|
+
exports.functionLatticeRunCreatorAccessSchema = exports.createFunctionServiceDirectoryClient = exports.readCacheConfiguration = exports.cacheManifestSchema = exports.createCacheManager = exports.CacheError = exports.createFunctionStorageClient = exports.runWithFunctionTracing = exports.installFunctionTracing = exports.functionMonitoringAnnotationSchema = exports.monitoringPublishSchema = exports.monitoringEventsSchema = exports.monitoringPayloadHash = exports.FunctionMonitoringError = exports.createFunctionServiceMonitoringClient = exports.functionSourceJobAdmissionSchema = exports.functionAgentSourceExecutionSchema = exports.functionAgentConversationEvidenceRequestSchema = exports.functionAgentConversationEvidenceCaptureSchema = exports.functionAgentConversationEvidenceResponseSchema = exports.functionAgentSourceEvidenceCaptureSchema = exports.functionAgentSourceEvidenceRequestSchema = exports.functionAgentSourceResponseSchema = exports.createFunctionWorkflowEvidenceClient = exports.createFunctionServiceWorkflowsClient = exports.createFunctionAgentEvidenceClient = exports.FunctionAgentReadError = exports.createFunctionServiceAgentsClient = exports.FunctionProcessReadError = exports.createFunctionServiceProcessesClient = exports.functionLatticeHumanCompletionsPageSchema = exports.functionLatticeHumanCompletionsQuerySchema = exports.functionLatticeHumanCompletionSchema = exports.functionLatticeHumanCompletionQuerySchema = exports.functionLatticeExecutionContextSchema = exports.functionLatticeContextRequestSchema = exports.FunctionLatticeContextError = exports.FUNCTION_LATTICE_EXECUTION_TOKEN_HEADER = exports.FUNCTION_LATTICE_CONTEXT_PATH = exports.createFunctionInvocationClient = exports.functionLatticeStartProvenanceSchema = exports.functionLatticeParallelSnapshotQuerySchema = exports.functionLatticeParallelSnapshotSchema = exports.createFunctionLatticeClient = exports.readFunctionLatticeContextCapability = exports.functionLatticeContextCapabilitySchema = exports.FunctionDirectoryReadError = exports.createFunctionDirectoryClient = void 0;
|
|
59958
60121
|
exports.createManagedFunctionContext = createManagedFunctionContext;
|
|
59959
60122
|
var directory_1 = require_directory();
|
|
59960
60123
|
Object.defineProperty(exports, "createFunctionDirectoryClient", { enumerable: true, get: function() {
|
|
@@ -60161,6 +60324,11 @@ var service_directory_1 = require_service_directory();
|
|
|
60161
60324
|
Object.defineProperty(exports, "createFunctionServiceDirectoryClient", { enumerable: true, get: function() {
|
|
60162
60325
|
return service_directory_1.createFunctionServiceDirectoryClient;
|
|
60163
60326
|
} });
|
|
60327
|
+
__exportStar(require_directory_roster_contract(), exports);
|
|
60328
|
+
var lattice_provenance_contract_5 = require_lattice_provenance_contract();
|
|
60329
|
+
Object.defineProperty(exports, "functionLatticeRunCreatorAccessSchema", { enumerable: true, get: function() {
|
|
60330
|
+
return lattice_provenance_contract_5.functionLatticeRunCreatorAccessSchema;
|
|
60331
|
+
} });
|
|
60164
60332
|
/*! Bundled license information:
|
|
60165
60333
|
|
|
60166
60334
|
web-streams-polyfill/dist/ponyfill.es2018.js:
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type DirectoryRosterQuery, type DirectoryRosterPage } from './directory-roster-contract';
|
|
2
|
+
export declare function createServiceRosterReader({ origin, token, expiresAt, fetchImpl }: {
|
|
3
|
+
origin: string;
|
|
4
|
+
token: string;
|
|
5
|
+
expiresAt: number;
|
|
6
|
+
fetchImpl: typeof fetch;
|
|
7
|
+
}): (input: DirectoryRosterQuery) => Promise<DirectoryRosterPage>;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createServiceRosterReader = createServiceRosterReader;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const directory_contract_1 = require("./directory-contract");
|
|
6
|
+
const directory_roster_contract_1 = require("./directory-roster-contract");
|
|
7
|
+
function createServiceRosterReader({ origin, token, expiresAt, fetchImpl }) {
|
|
8
|
+
return async (input) => {
|
|
9
|
+
if (expiresAt <= Date.now() / 1000)
|
|
10
|
+
throw new directory_contract_1.DirectoryPrincipalResolveError(401, 'expired_context', 'The directory credential expired; start a new invocation');
|
|
11
|
+
const query = directory_roster_contract_1.directoryRosterQuerySchema.safeParse(input);
|
|
12
|
+
if (!query.success)
|
|
13
|
+
throw new directory_contract_1.DirectoryPrincipalResolveError(400, 'invalid_request', 'Invalid group roster request');
|
|
14
|
+
const response = await fetchImpl(`${origin}${directory_roster_contract_1.FUNCTION_DIRECTORY_ROSTER_PATH}`, { method: 'POST', headers: { 'content-type': 'application/json', [directory_contract_1.FUNCTION_DIRECTORY_TOKEN_HEADER]: token }, body: JSON.stringify(query.data), redirect: 'error', signal: AbortSignal.timeout(30_000) });
|
|
15
|
+
const body = await response.json().catch(() => null);
|
|
16
|
+
if (!response.ok) {
|
|
17
|
+
const error = zod_1.z.object({ code: zod_1.z.string().max(128).optional(), detail: zod_1.z.string().max(2000).optional() }).safeParse(body);
|
|
18
|
+
throw new directory_contract_1.DirectoryPrincipalResolveError(response.status, error.success ? error.data.code ?? 'directory_roster_failed' : 'directory_roster_failed', error.success ? error.data.detail ?? 'Group roster read failed' : 'Group roster read failed');
|
|
19
|
+
}
|
|
20
|
+
const result = directory_roster_contract_1.directoryRosterPageSchema.safeParse(body);
|
|
21
|
+
if (!result.success || result.data.members.length > query.data.limit || new Set(result.data.members.map(member => member.id)).size !== result.data.members.length)
|
|
22
|
+
throw new directory_contract_1.DirectoryPrincipalResolveError(502, 'malformed_response', 'Atlas returned an invalid group roster');
|
|
23
|
+
return result.data;
|
|
24
|
+
};
|
|
25
|
+
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { DirectoryRosterQuery, DirectoryRosterPage } from './directory-roster-contract';
|
|
1
2
|
import { type DirectoryPrincipalResolveRequest, type DirectoryPrincipalResolution } from './directory-contract';
|
|
2
3
|
export interface FunctionServiceDirectoryOptions {
|
|
3
4
|
request: {
|
|
@@ -7,6 +8,7 @@ export interface FunctionServiceDirectoryOptions {
|
|
|
7
8
|
fetchImpl?: typeof globalThis.fetch;
|
|
8
9
|
}
|
|
9
10
|
export interface FunctionServiceDirectoryClient {
|
|
11
|
+
listGroupMembers(input: DirectoryRosterQuery): Promise<DirectoryRosterPage>;
|
|
10
12
|
resolve(input: DirectoryPrincipalResolveRequest): Promise<DirectoryPrincipalResolution>;
|
|
11
13
|
}
|
|
12
14
|
export declare function createFunctionServiceDirectoryClient({ request, baseUrl, fetchImpl }: FunctionServiceDirectoryOptions): FunctionServiceDirectoryClient;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.createFunctionServiceDirectoryClient = createFunctionServiceDirectoryClient;
|
|
4
|
+
const service_directory_roster_1 = require("./service-directory-roster");
|
|
4
5
|
const zod_1 = require("zod");
|
|
5
6
|
const directory_contract_1 = require("./directory-contract");
|
|
6
7
|
function credential({ request }) {
|
|
@@ -51,6 +52,7 @@ function createFunctionServiceDirectoryClient({ request, baseUrl, fetchImpl = gl
|
|
|
51
52
|
const url = `${origin(baseUrl)}${directory_contract_1.FUNCTION_DIRECTORY_RESOLVE_PATH}`;
|
|
52
53
|
const { token, expiresAt } = credential({ request });
|
|
53
54
|
return {
|
|
55
|
+
listGroupMembers: (0, service_directory_roster_1.createServiceRosterReader)({ origin: origin(baseUrl), token, expiresAt, fetchImpl }),
|
|
54
56
|
async resolve(input) {
|
|
55
57
|
if (expiresAt <= Date.now() / 1000)
|
|
56
58
|
throw new directory_contract_1.DirectoryPrincipalResolveError(401, 'expired_context', 'The directory credential expired; start a new invocation');
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sequenceholdings/managed-functions",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.4",
|
|
4
4
|
"description": "Managed Function context and opt-in cache runtime",
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"vitest": "^4.1.11",
|
|
49
49
|
"esbuild": "^0.25.0",
|
|
50
50
|
"tsup": "^8.3.0",
|
|
51
|
-
"@sequenceholdings/orm": "2.
|
|
51
|
+
"@sequenceholdings/orm": "2.7.0"
|
|
52
52
|
},
|
|
53
53
|
"engines": {
|
|
54
54
|
"node": ">=20"
|