// Documentation example only: not a new configuration loader or application entrypoint. // The host supplies a verified SSLContext, secret-backed stable coordinator key, // reviewed deployment evidence, existing backend, and declared least-authority identity. import javax.net.ssl.SSLContext; import java.time.Duration; import java.util.Set; import com.kingsrook.qbits.scripting.ScriptingQBitConfig; import com.kingsrook.qbits.scripting.build.BuildCoordinator; import com.kingsrook.qbits.scripting.rdbms.RdbmsScriptingTransactionPolicy; import com.kingsrook.qbits.scripting.service.ScriptingRuntime; import com.kingsrook.qbits.scripting.service.WarmReconciliationConfig; import com.kingsrook.qbits.scripting.worker.PersistentWorkerProvider; import com.kingsrook.qbits.scripting.worker.WorkerMessages.ExecutionLimits; import com.kingsrook.qqq.backend.core.model.metadata.QInstance; import com.kingsrook.qqq.backend.core.serviceidentity.QServicePrincipalMetaData; import com.kingsrook.qqq.backend.core.serviceidentity.ServiceIdentitiesMetaData; final class ApplicationConnection { static ScriptingQBitConfig configure(QInstance instance, String backendName, SSLContext applicationMtls, byte[] coordinatorKey, String coordinatorId, String reviewedEvidenceId, QServicePrincipalMetaData warmPrincipal) { String toolchain = "typescript-6.0.3-node-24"; // These are example operator DNS names, not automatic Kubernetes discovery. // Server certificate SANs must match the exact names passed here. var transport = new PersistentWorkerProvider.Configuration(applicationMtls, new PersistentWorkerProvider.Endpoint("scripting-execution.workers.svc.cluster.local", 18443), new PersistentWorkerProvider.Endpoint("scripting-compiler.workers.svc.cluster.local", 18444), "application-v1", "wasm-64m-v1", toolchain, reviewedEvidenceId, reviewedEvidenceId, Duration.ofSeconds(30), 4, 2, 64, 8L * 1024 * 1024); var worker = new PersistentWorkerProvider(transport, 2); // Host must grant this declared principal scripting.warm, scripting.view and // current project/source-metadata visibility under its tenant/credential policy. // It must not inherit an initiating user's session or source-record privileges. ServiceIdentitiesMetaData.ofOrWithNew(instance).withPrincipal(warmPrincipal); var runtime = new ScriptingRuntime().withWorker(worker) .withCoordinator(new BuildCoordinator(coordinatorId, coordinatorKey, toolchain)) .withRequiredQualificationId(reviewedEvidenceId) .withTransactionPolicy(new RdbmsScriptingTransactionPolicy()) .withLimits(ExecutionLimits.hookDefaults()) .withWarmReconciliation(new WarmReconciliationConfig(warmPrincipal.getName(), Set.of("purchaseOrder"), 100, 8L * 1024 * 1024, Duration.ofSeconds(10), Duration.ofSeconds(20), Duration.ofSeconds(60))); // Existing producer/native application lifecycle owns registration/start/stop. // Do not connect/prepare from record execution or start a separate timer. return (new ScriptingQBitConfig().withBackendName(backendName).withRuntime(runtime)); } }