Skip to content

feat(node-type-registry): sync the registry from constructive-db - #1755

Merged
pyramation merged 3 commits into
mainfrom
feat/sync-node-type-registry
Aug 18, 2026
Merged

feat(node-type-registry): sync the registry from constructive-db#1755
pyramation merged 3 commits into
mainfrom
feat/sync-node-type-registry

Conversation

@pyramation

Copy link
Copy Markdown
Contributor

Summary

Routine sync of packages/node-type-registry/src from constructive-db (where the registry is authored against the platform that consumes it, and published from here). The published copy had drifted enough that blueprint table entries could not be typed at all against the module system.

The notable gap this closes is the module selector plus selector-addressed provisions, so a blueprint entry can attach security to a table an installed module generated — and own that table's security instead of only layering on top of it:

export interface BlueprintModuleTableRef { type: string; table: string; scope?: string; prefix?: string }
export interface BlueprintModuleInstallRef { type: string; scope?: string; prefix?: string }

export interface BlueprintTable {
-  table_name: string;
-  nodes: BlueprintNode[];
+  table_name?: string;                                                   // omitted when addressing a module table
+  module?: BlueprintModuleTableRef | BlueprintModuleInstallRef;
+  provisions?: Record<string, BlueprintEntityTableProvision>;            // keyed by the install's generated table keys
+  nodes?: BlueprintNode[];
   policies?: BlueprintPolicy[];
   ...
}

Selector-level policies/grants stay additive; a non-empty policies/grants array inside a provisions entry declares that table's whole set.

Also carried over with the sync: new node types (AuthzHumanOnly, AuthzDatabaseClaim, DataLock), the new infra module types (image_module, repository_module, machine_module, infra_module, cluster_module, k8s_admission_module, internal_config_module), removal of http_route_module, and preset/scope updates.

__tests__/module-types.test.ts hard-codes the module registry here (constructive-db derives the same list from provision_database_modules.sql), so its two expected lists were refreshed to match the synced registry.

Verified: pnpm build, pnpm test, pnpm lint in the package, and pnpm generate:types reproduces the checked-in blueprint-types.generated.ts byte-for-byte (identical to constructive-db's).

Link to Devin session: https://app.devin.ai/sessions/123499ae0e9c48eba40a76dad95a2044
Requested by: @pyramation

@pyramation pyramation self-assigned this Aug 18, 2026
@devin-ai-integration

Copy link
Copy Markdown
Contributor

🤖 Devin AI Engineer

I'll be helping with this pull request! Here's what you should know:

✅ I will automatically:

  • Address comments on this PR. Add '(aside)' to your comment to have me ignore it.
  • Look at CI failures and help fix them

Note: I can only respond to comments from users who have write access to this repository.

⚙️ Control Options:

  • Disable automatic comment, CI, and merge conflict monitoring

@pyramation
pyramation merged commit e390cc0 into main Aug 18, 2026
20 checks passed
@pyramation
pyramation deleted the feat/sync-node-type-registry branch August 18, 2026 02:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant