feat(ql3): gate local secret transitions before activation

This commit is contained in:
whyour
2026-08-13 20:29:47 +08:00
parent 326783ff14
commit c877147d0f
37 changed files with 2495 additions and 39 deletions
@@ -32,6 +32,8 @@ type PluginPackageMaterializedRevisionRepository =
ReadyLocalStorage['pluginPackageMaterializedRevisions'];
type PluginPackageSecretBindingRepository =
ReadyLocalStorage['pluginPackageSecretBindings'];
type PluginPackageActivationPrerequisite =
ReadyLocalStorage['pluginPackageActivationPrerequisite'];
type PluginPackageTaskReconciliationRepository =
ReadyLocalStorage['pluginPackageTaskReconciliations'];
type PluginPackageAutomationPublicationRepository =
@@ -100,6 +102,7 @@ export type LocalAdoptedProfileBootstrapResult =
readonly pluginPackageInstalls: PluginPackageInstallRepository;
readonly pluginPackageMaterializedRevisions: PluginPackageMaterializedRevisionRepository;
readonly pluginPackageSecretBindings: PluginPackageSecretBindingRepository;
readonly pluginPackageActivationPrerequisite: PluginPackageActivationPrerequisite;
readonly pluginPackageTaskReconciliations: PluginPackageTaskReconciliationRepository;
readonly pluginPackageAutomationPublications: PluginPackageAutomationPublicationRepository;
readonly projectToolDefinitionSnapshots: ProjectToolDefinitionSnapshotRepository;
@@ -248,6 +251,8 @@ export async function bootstrapLocalAdoptedProfileStorage(
pluginPackageMaterializedRevisions:
readyStorage.pluginPackageMaterializedRevisions,
pluginPackageSecretBindings: readyStorage.pluginPackageSecretBindings,
pluginPackageActivationPrerequisite:
readyStorage.pluginPackageActivationPrerequisite,
pluginPackageTaskReconciliations:
readyStorage.pluginPackageTaskReconciliations,
pluginPackageAutomationPublications:
@@ -1,5 +1,6 @@
import {
PluginPackageInstallationCoordinator,
type PluginPackageActivationPrerequisite,
type PluginPackageStageProvider,
} from '@qinglong/runtime-core/plugin-package-installation';
import type { PluginPackageAdmissionRepository } from '@qinglong/runtime-core/plugin-package-admission';
@@ -64,6 +65,7 @@ export function createLocalPluginPackageFileStageProvider(
export function createLocalPluginPackageInstallationCoordinator(options: {
readonly repository: PluginPackageAdmissionRepository;
readonly publisher: PluginPackageActivationPublisher;
readonly activationPrerequisite?: PluginPackageActivationPrerequisite;
}): PluginPackageInstallationCoordinator {
return new PluginPackageInstallationCoordinator(options);
}
@@ -3,6 +3,8 @@ export {
LocalPluginPackageSecretBindingConflictError,
LocalPluginPackageSecretBindingUnavailableError,
type ExecuteLocalPluginPackageSecretBindingRequest,
type ExecuteLocalPluginPackageSecretBindingTransitionRequest,
type LocalPluginPackageSecretBindingService,
type PlanLocalPluginPackageSecretBindingRequest,
type PlanLocalPluginPackageSecretBindingTransitionRequest,
} from '@qinglong/local-sqlite/plugin-package-secret-binding-administration';