feat: bind evidence credentials through local files
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
import { validateWorkspaceDescriptor } from "./schema.js";
|
||||
import type { DwhTransport, VectorTransport, WorkspaceDescriptor } from "./schema.js";
|
||||
|
||||
export type InstallationRole = "DWH" | "VECTOR" | "VECTOR_WRITER" | "EMBEDDING";
|
||||
export type InstallationRole = "DWH" | "VECTOR" | "VECTOR_WRITER" | "EMBEDDING" | "EVIDENCE";
|
||||
export type InstallationSuffix =
|
||||
| "TRANSPORT"
|
||||
| "HOST"
|
||||
@@ -17,7 +17,11 @@ export type InstallationSuffix =
|
||||
| "SSH_PRIVATE_KEY_FILE"
|
||||
| "SSH_KNOWN_HOSTS_FILE"
|
||||
| "SSH_TARGET_HOST"
|
||||
| "SSH_TARGET_PORT";
|
||||
| "SSH_TARGET_PORT"
|
||||
| "SIGNED_URLS_FILE"
|
||||
| "ACCESS_KEY_FILE"
|
||||
| "SECRET_KEY_FILE"
|
||||
| "SESSION_TOKEN_FILE";
|
||||
|
||||
type ConnectorTransport = DwhTransport | VectorTransport;
|
||||
|
||||
@@ -119,6 +123,25 @@ function connectorVariables(
|
||||
];
|
||||
}
|
||||
|
||||
function evidenceVariables(
|
||||
namespace: string,
|
||||
workspace: WorkspaceDescriptor,
|
||||
): InstallationVariable[] {
|
||||
if (!("evidence" in workspace) || workspace.evidence === undefined) return [];
|
||||
const source = workspace.evidence.source;
|
||||
if (source.type === "http" && source.authentication === "signed_urls_file") {
|
||||
return [createVariable(namespace, "EVIDENCE", "SIGNED_URLS_FILE")];
|
||||
}
|
||||
if (source.type === "s3" && source.credentials === "static_files") {
|
||||
return [
|
||||
createVariable(namespace, "EVIDENCE", "ACCESS_KEY_FILE"),
|
||||
createVariable(namespace, "EVIDENCE", "SECRET_KEY_FILE"),
|
||||
createVariable(namespace, "EVIDENCE", "SESSION_TOKEN_FILE"),
|
||||
];
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
export function buildInstallationContract(workspace: WorkspaceDescriptor): InstallationContract {
|
||||
const descriptor = validateWorkspaceDescriptor(workspace);
|
||||
const namespace = namespaceFor(descriptor);
|
||||
@@ -143,6 +166,7 @@ export function buildInstallationContract(workspace: WorkspaceDescriptor): Insta
|
||||
...(descriptor.workspace.schema_version === 2
|
||||
? EMBEDDING_SUFFIXES.map((suffix) => createVariable(namespace, "EMBEDDING", suffix))
|
||||
: []),
|
||||
...evidenceVariables(namespace, descriptor),
|
||||
],
|
||||
};
|
||||
}
|
||||
@@ -179,10 +203,10 @@ export function renderWorkspaceDocs(workspace: WorkspaceDescriptor): { envExampl
|
||||
"",
|
||||
"Use the following UI fields as installation bindings. Secret fields always contain file paths, never secret values.",
|
||||
"",
|
||||
...(["DWH", "VECTOR", "VECTOR_WRITER", "EMBEDDING"] as const)
|
||||
...(["DWH", "VECTOR", "VECTOR_WRITER", "EMBEDDING", "EVIDENCE"] as const)
|
||||
.filter((role) => variablesByRole.has(role))
|
||||
.flatMap((role) => [
|
||||
`## ${role === "DWH" ? "Data warehouse" : role === "VECTOR" ? "Vector store" : role === "VECTOR_WRITER" ? "Vector writer" : "Embedding service"}`,
|
||||
`## ${role === "DWH" ? "Data warehouse" : role === "VECTOR" ? "Vector store" : role === "VECTOR_WRITER" ? "Vector writer" : role === "EMBEDDING" ? "Embedding service" : "Evidence"}`,
|
||||
"",
|
||||
...(variablesByRole.get(role) ?? []).map((variable) => (
|
||||
`- \`${variable.name}\`${variable.transports ? ` (for: ${variable.transports.join(", ")})` : ""}`
|
||||
|
||||
Reference in New Issue
Block a user