fix(api): generate configuration adoption imports from canonical type owners

This commit is contained in:
2026-11-05 01:58:24 +09:00
parent e6db25497d
commit f25cd9ee9a
3 changed files with 6 additions and 5 deletions
@@ -182,7 +182,7 @@ pub fn configuration_typescript() -> String {
ConfigurationReconciliation::decl(&config), ConfigurationReconciliation::decl(&config),
]; ];
format!( format!(
"// Generated by `cargo run -p server-api --features typescript --example generate_configuration_adoption_types`.\n// Do not edit manually.\n\nimport type {{ ConfigCommitRequest, WorkspaceConfigTreeResponse, ScopedPermission, SubjectPermissions }} from \"./legacy-server-api.ts\";\nimport type {{ PermissionAssignment, PermissionCatalog }} from \"./feature-permissions.generated.ts\";\n\n{}\n", "// Generated by `cargo run -p server-api --features typescript --example generate_configuration_adoption_types`.\n// Do not edit manually.\n\nimport type {{ ConfigCommitRequest, WorkspaceConfigTreeResponse }} from \"./legacy-server-api.ts\";\nimport type {{ ScopedPermission, SubjectPermissions }} from \"./memory-api.ts\";\nimport type {{ PermissionAssignment, PermissionCatalog }} from \"./feature-permissions.generated.ts\";\n\n{}\n",
declarations declarations
.into_iter() .into_iter()
.map(|declaration| format!("export {declaration}")) .map(|declaration| format!("export {declaration}"))
@@ -1,7 +1,8 @@
// Generated by `cargo run -p server-api --features typescript --example generate_configuration_adoption_types`. // Generated by `cargo run -p server-api --features typescript --example generate_configuration_adoption_types`.
// Do not edit manually. // Do not edit manually.
import type { ConfigCommitRequest, WorkspaceConfigTreeResponse, ScopedPermission, SubjectPermissions } from "./legacy-server-api.ts"; import type { ConfigCommitRequest, WorkspaceConfigTreeResponse } from "./legacy-server-api.ts";
import type { ScopedPermission, SubjectPermissions } from "./memory-api.ts";
import type { PermissionAssignment, PermissionCatalog } from "./feature-permissions.generated.ts"; import type { PermissionAssignment, PermissionCatalog } from "./feature-permissions.generated.ts";
export type ConfigurationAdoptionRequest = { operation_id: string, expected_head: string | null, expected_catalog_digest: string, expected_legacy_export: string | null, source: ConfigCommitRequest, }; export type ConfigurationAdoptionRequest = { operation_id: string, expected_head: string | null, expected_catalog_digest: string, expected_legacy_export: string | null, source: ConfigCommitRequest, };
@@ -11,7 +11,7 @@ import {
previewConfigTree, previewConfigTree,
reconcileConfigTree, reconcileConfigTree,
} from "./api.ts"; } from "./api.ts";
import type { ConfigurationAdoptionRequest } from "#lib/generated/configuration-adoption.generated.ts"; import type { ConfigurationAdoptionReceipt, ConfigurationAdoptionRequest, ConfigurationReconciliation } from "#lib/generated/configuration-adoption.generated.ts";
import type { WorkspaceConfigTreeResponse } from "./types.ts"; import type { WorkspaceConfigTreeResponse } from "./types.ts";
const state: WorkspaceConfigTreeResponse = { const state: WorkspaceConfigTreeResponse = {
@@ -36,7 +36,7 @@ const request: ConfigurationAdoptionRequest = {
expected_legacy_export: source.expected_legacy_export, expected_legacy_export: source.expected_legacy_export,
source: { base_digest: state.snapshot.digest, changes: [], entrypoints: ["main.dcdl"] }, source: { base_digest: state.snapshot.digest, changes: [], entrypoints: ["main.dcdl"] },
}; };
const receipt = { const receipt: ConfigurationAdoptionReceipt = {
workspace_id: "w/one", operation_id: request.operation_id, history_head: "head:adopted", workspace_id: "w/one", operation_id: request.operation_id, history_head: "head:adopted",
state, source_stored: true, policy_committed: true, runtime_application: "next_current_policy_check", state, source_stored: true, policy_committed: true, runtime_application: "next_current_policy_check",
}; };
@@ -117,7 +117,7 @@ Deno.test("not_observed and pending_transfer remain distinct unknown evidence, n
{ status: "not_observed" }, { status: "not_observed" },
{ status: "pending_transfer", transfer_identity: "transfer:one", export_digest: "sha256:legacy" }, { status: "pending_transfer", transfer_identity: "transfer:one", export_digest: "sha256:legacy" },
{ status: "adopted", receipt }, { status: "adopted", receipt },
]) assertEquals(parseConfigurationReconciliation(evidence), evidence); ] satisfies ConfigurationReconciliation[]) assertEquals(parseConfigurationReconciliation(evidence), evidence);
for (const invalid of [ for (const invalid of [
{ status: "failed" }, { status: "not_observed", receipt }, { status: "failed" }, { status: "not_observed", receipt },
{ status: "pending_transfer", transfer_identity: "transfer:one" }, { status: "pending_transfer", transfer_identity: "transfer:one" },