@intentius/chant-lexicon-gcp 0.124.31 → 0.124.33

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (612) hide show
  1. package/dist/actions/index.js +45 -0
  2. package/dist/api/read-client.js +105 -0
  3. package/dist/codegen/docs-cli.js +6 -0
  4. package/dist/codegen/docs.js +115 -0
  5. package/dist/codegen/generate-cli.js +17 -0
  6. package/dist/codegen/generate.js +218 -0
  7. package/dist/codegen/naming.js +164 -0
  8. package/dist/codegen/package.js +43 -0
  9. package/dist/composites/catalog.d.ts.map +1 -1
  10. package/dist/composites/catalog.js +1251 -0
  11. package/dist/composites/cloud-function.js +65 -0
  12. package/dist/composites/cloud-run-service.d.ts +7 -3
  13. package/dist/composites/cloud-run-service.d.ts.map +1 -1
  14. package/dist/composites/cloud-run-service.js +75 -0
  15. package/dist/composites/cloud-sql-instance.js +85 -0
  16. package/dist/composites/gcs-bucket.js +64 -0
  17. package/dist/composites/gke-cluster.js +113 -0
  18. package/dist/composites/gke-crdb-region.js +137 -0
  19. package/dist/composites/gpu-node-pool.js +74 -0
  20. package/dist/composites/index.js +15 -0
  21. package/dist/composites/landing-zone.js +89 -0
  22. package/dist/composites/managed-certificate.js +46 -0
  23. package/dist/composites/memorystore-redis.js +52 -0
  24. package/dist/composites/multi-region-vpc.js +108 -0
  25. package/dist/composites/private-service.js +50 -0
  26. package/dist/composites/pubsub-pipeline.js +63 -0
  27. package/dist/composites/secure-project.js +85 -0
  28. package/dist/composites/vpc-network.js +113 -0
  29. package/dist/coverage.js +28 -0
  30. package/dist/deep-observe-hooks.js +152 -0
  31. package/dist/deep-observe.js +273 -0
  32. package/dist/default-labels.js +67 -0
  33. package/dist/describe-resources.js +264 -0
  34. package/dist/detect.js +16 -0
  35. package/dist/export-resources.js +59 -0
  36. package/dist/generated/index.d.ts.map +1 -1
  37. package/dist/generated/index.js +1804 -0
  38. package/dist/generated/runtime.js +4 -0
  39. package/dist/governance.js +98 -0
  40. package/dist/health.d.ts +42 -0
  41. package/dist/health.d.ts.map +1 -0
  42. package/dist/health.js +87 -0
  43. package/dist/import/generator.js +68 -0
  44. package/dist/import/live-export.js +73 -0
  45. package/dist/import/parser.js +61 -0
  46. package/dist/index.d.ts +1 -0
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.js +38 -0
  49. package/dist/integrity.json +5 -5
  50. package/dist/lint/audit-catalog.js +38 -0
  51. package/dist/lint/audit-lineage.js +63 -0
  52. package/dist/lint/post-synth/gcp-helpers.js +91 -0
  53. package/dist/lint/post-synth/index.js +54 -0
  54. package/dist/lint/post-synth/schema-registry.d.ts.map +1 -1
  55. package/dist/lint/post-synth/schema-registry.js +69 -0
  56. package/dist/lint/post-synth/wgc101.js +47 -0
  57. package/dist/lint/post-synth/wgc102.js +29 -0
  58. package/dist/lint/post-synth/wgc103.js +37 -0
  59. package/dist/lint/post-synth/wgc104.js +34 -0
  60. package/dist/lint/post-synth/wgc105.js +39 -0
  61. package/dist/lint/post-synth/wgc106.js +30 -0
  62. package/dist/lint/post-synth/wgc107.js +33 -0
  63. package/dist/lint/post-synth/wgc108.js +34 -0
  64. package/dist/lint/post-synth/wgc109.js +33 -0
  65. package/dist/lint/post-synth/wgc110.js +32 -0
  66. package/dist/lint/post-synth/wgc111.js +47 -0
  67. package/dist/lint/post-synth/wgc112.js +46 -0
  68. package/dist/lint/post-synth/wgc113.js +35 -0
  69. package/dist/lint/post-synth/wgc201.js +30 -0
  70. package/dist/lint/post-synth/wgc202.js +33 -0
  71. package/dist/lint/post-synth/wgc203.js +35 -0
  72. package/dist/lint/post-synth/wgc204.js +33 -0
  73. package/dist/lint/post-synth/wgc301.js +28 -0
  74. package/dist/lint/post-synth/wgc302.js +28 -0
  75. package/dist/lint/post-synth/wgc303.js +29 -0
  76. package/dist/lint/post-synth/wgc401.js +50 -0
  77. package/dist/lint/post-synth/wgc402.js +46 -0
  78. package/dist/lint/post-synth/wgc403.js +74 -0
  79. package/dist/lint/post-synth/wgc501.js +63 -0
  80. package/dist/lint/post-synth/wgc502.js +37 -0
  81. package/dist/lint/post-synth/wgc503.js +49 -0
  82. package/dist/lint/rules/hardcoded-project.js +51 -0
  83. package/dist/lint/rules/hardcoded-region.js +51 -0
  84. package/dist/lint/rules/index.js +3 -0
  85. package/dist/lint/rules/public-iam.js +37 -0
  86. package/dist/lsp/completions.d.ts.map +1 -1
  87. package/dist/lsp/completions.js +15 -0
  88. package/dist/lsp/hover.d.ts.map +1 -1
  89. package/dist/lsp/hover.js +46 -0
  90. package/dist/manifest.json +1 -1
  91. package/dist/meta.json +1848 -481
  92. package/dist/okf/types/API.md +2 -0
  93. package/dist/okf/types/APIConfig.md +3 -0
  94. package/dist/okf/types/APIQuotaAdjusterSettings.md +2 -0
  95. package/dist/okf/types/APIQuotaPreference.md +2 -0
  96. package/dist/okf/types/AccessBoundaryPolicy.md +2 -0
  97. package/dist/okf/types/AccessLevel.md +2 -0
  98. package/dist/okf/types/AccessLevelCondition.md +1 -0
  99. package/dist/okf/types/AccessPolicy.md +4 -0
  100. package/dist/okf/types/AddonsConfig.md +1 -0
  101. package/dist/okf/types/AgentPool.md +2 -0
  102. package/dist/okf/types/AiplatformModel.md +2 -0
  103. package/dist/okf/types/AistreamsCluster.md +2 -0
  104. package/dist/okf/types/AlertPolicy.md +2 -0
  105. package/dist/okf/types/AlloydbBackup.md +9 -0
  106. package/dist/okf/types/AlloydbCluster.md +5 -0
  107. package/dist/okf/types/AlloydbInstance.md +10 -0
  108. package/dist/okf/types/AnalyticsAccount.md +2 -0
  109. package/dist/okf/types/AndroidApp.md +4 -0
  110. package/dist/okf/types/AnywhereCache.md +2 -0
  111. package/dist/okf/types/ApigatewayGateway.md +3 -0
  112. package/dist/okf/types/ApigeeEnvironment.md +5 -0
  113. package/dist/okf/types/ApigeeInstance.md +2 -0
  114. package/dist/okf/types/ApihubDeployment.md +2 -0
  115. package/dist/okf/types/ApikeysKey.md +2 -0
  116. package/dist/okf/types/AppConnection.md +1 -0
  117. package/dist/okf/types/AppConnector.md +2 -0
  118. package/dist/okf/types/AppGateway.md +3 -0
  119. package/dist/okf/types/AppProfile.md +3 -0
  120. package/dist/okf/types/Application.md +2 -0
  121. package/dist/okf/types/ArtifactRegistryRepository.md +4 -0
  122. package/dist/okf/types/Assignment.md +2 -0
  123. package/dist/okf/types/Attestor.md +2 -0
  124. package/dist/okf/types/AuthorizationPolicy.md +4 -0
  125. package/dist/okf/types/AuthorizedView.md +2 -0
  126. package/dist/okf/types/AutokeyConfig.md +2 -0
  127. package/dist/okf/types/Automation.md +2 -0
  128. package/dist/okf/types/Autoscaler.md +3 -0
  129. package/dist/okf/types/AutoscalingPolicy.md +2 -0
  130. package/dist/okf/types/BQJob.md +3 -0
  131. package/dist/okf/types/BackendBucket.md +3 -0
  132. package/dist/okf/types/BackendBucketSignedURLKey.md +1 -0
  133. package/dist/okf/types/BackendService.md +5 -0
  134. package/dist/okf/types/BackendServiceSignedURLKey.md +1 -0
  135. package/dist/okf/types/BackupPlanAssociation.md +2 -0
  136. package/dist/okf/types/BackupPolicy.md +2 -0
  137. package/dist/okf/types/BackupdrBackupPlan.md +2 -0
  138. package/dist/okf/types/BackupdrBackupVault.md +2 -0
  139. package/dist/okf/types/Batch.md +2 -0
  140. package/dist/okf/types/BatchJob.md +2 -0
  141. package/dist/okf/types/BatchTask.md +3 -0
  142. package/dist/okf/types/BigLakeCatalog.md +2 -0
  143. package/dist/okf/types/BigLakeDatabase.md +2 -0
  144. package/dist/okf/types/BigLakeTable.md +2 -0
  145. package/dist/okf/types/BigQueryDataPolicy.md +2 -0
  146. package/dist/okf/types/BigQueryDataset.md +6 -0
  147. package/dist/okf/types/BigQueryExport.md +2 -0
  148. package/dist/okf/types/BigQueryTable.md +11 -0
  149. package/dist/okf/types/BigqueryconnectionConnection.md +2 -0
  150. package/dist/okf/types/BigquerydatatransferConfig.md +2 -0
  151. package/dist/okf/types/BigqueryreservationReservation.md +2 -0
  152. package/dist/okf/types/BigtableInstance.md +1 -0
  153. package/dist/okf/types/BigtableTable.md +2 -0
  154. package/dist/okf/types/BillingAccount.md +2 -0
  155. package/dist/okf/types/BinaryauthorizationPolicy.md +3 -0
  156. package/dist/okf/types/Brand.md +2 -0
  157. package/dist/okf/types/BtBackup.md +2 -0
  158. package/dist/okf/types/BtCluster.md +2 -0
  159. package/dist/okf/types/Bucket.md +2 -0
  160. package/dist/okf/types/BucketAccessControl.md +3 -0
  161. package/dist/okf/types/Budget.md +2 -0
  162. package/dist/okf/types/CAPool.md +1 -0
  163. package/dist/okf/types/CapacityCommitment.md +5 -0
  164. package/dist/okf/types/CertificateAuthority.md +7 -0
  165. package/dist/okf/types/CertificateIssuanceConfig.md +2 -0
  166. package/dist/okf/types/CertificateMap.md +3 -0
  167. package/dist/okf/types/CertificateMapEntry.md +4 -0
  168. package/dist/okf/types/CertificateTemplate.md +3 -0
  169. package/dist/okf/types/CertificatemanagerCertificate.md +1 -0
  170. package/dist/okf/types/ClientConnectorService.md +2 -0
  171. package/dist/okf/types/ClientTLSPolicy.md +3 -0
  172. package/dist/okf/types/CloudBatchResourceAllowance.md +2 -0
  173. package/dist/okf/types/CloudFunction.md +4 -0
  174. package/dist/okf/types/CloudRunJob.md +13 -0
  175. package/dist/okf/types/CloudRunService.md +13 -0
  176. package/dist/okf/types/CloudbuildTrigger.md +4 -0
  177. package/dist/okf/types/ClouddmsPrivateConnection.md +2 -0
  178. package/dist/okf/types/CloudidentityGroup.md +5 -0
  179. package/dist/okf/types/CloudidentityMembership.md +6 -0
  180. package/dist/okf/types/CloudidsEndpoint.md +1 -0
  181. package/dist/okf/types/CloudschedulerJob.md +5 -0
  182. package/dist/okf/types/ComposerEnvironment.md +2 -0
  183. package/dist/okf/types/ComputeAddress.md +4 -0
  184. package/dist/okf/types/ComputeDisk.md +9 -0
  185. package/dist/okf/types/ComputeFirewallPolicy.md +7 -0
  186. package/dist/okf/types/ComputeHealthCheck.md +4 -0
  187. package/dist/okf/types/ComputeInstance.md +8 -0
  188. package/dist/okf/types/ComputeNetworkPeering.md +3 -0
  189. package/dist/okf/types/ComputeNodeGroup.md +3 -0
  190. package/dist/okf/types/ComputeReservation.md +6 -0
  191. package/dist/okf/types/ComputeRoute.md +3 -0
  192. package/dist/okf/types/ComputeSnapshot.md +7 -0
  193. package/dist/okf/types/ConfigcontrollerInstance.md +3 -0
  194. package/dist/okf/types/ConnectionProfile.md +2 -0
  195. package/dist/okf/types/ConnectivityTest.md +2 -0
  196. package/dist/okf/types/Connector.md +3 -0
  197. package/dist/okf/types/ConsentStore.md +1 -0
  198. package/dist/okf/types/ConsumerGroup.md +2 -0
  199. package/dist/okf/types/ConsumerQuotaOverride.md +2 -0
  200. package/dist/okf/types/Contact.md +2 -0
  201. package/dist/okf/types/ContainerattachedCluster.md +8 -0
  202. package/dist/okf/types/ConversionWorkspace.md +2 -0
  203. package/dist/okf/types/CryptoKeyVersion.md +5 -0
  204. package/dist/okf/types/CustomClass.md +2 -0
  205. package/dist/okf/types/CustomConstraint.md +2 -0
  206. package/dist/okf/types/CustomRole.md +3 -0
  207. package/dist/okf/types/CustomTargetType.md +2 -0
  208. package/dist/okf/types/DICOMStore.md +2 -0
  209. package/dist/okf/types/DNSAuthorization.md +2 -0
  210. package/dist/okf/types/DNSManagedZone.md +3 -0
  211. package/dist/okf/types/DNSRecordSet.md +1 -0
  212. package/dist/okf/types/Dashboard.md +2 -0
  213. package/dist/okf/types/DataExchange.md +2 -0
  214. package/dist/okf/types/DataLabelingJob.md +2 -0
  215. package/dist/okf/types/DataPolicy.md +2 -0
  216. package/dist/okf/types/DataStore.md +2 -0
  217. package/dist/okf/types/DataStoreTargetSite.md +2 -0
  218. package/dist/okf/types/Database.md +2 -0
  219. package/dist/okf/types/DatacatalogEntryGroup.md +2 -0
  220. package/dist/okf/types/DataflowJob.md +4 -0
  221. package/dist/okf/types/DataformRepository.md +2 -0
  222. package/dist/okf/types/DatafusionInstance.md +10 -0
  223. package/dist/okf/types/DataplexEntryGroup.md +2 -0
  224. package/dist/okf/types/DataplexTask.md +2 -0
  225. package/dist/okf/types/DataprocCluster.md +2 -0
  226. package/dist/okf/types/DataprocJob.md +2 -0
  227. package/dist/okf/types/DataprocNodeGroup.md +2 -0
  228. package/dist/okf/types/DataprocSession.md +2 -0
  229. package/dist/okf/types/DatasetAccess.md +2 -0
  230. package/dist/okf/types/DatastoreIndex.md +2 -0
  231. package/dist/okf/types/DatastreamPrivateConnection.md +2 -0
  232. package/dist/okf/types/DatastreamRoute.md +2 -0
  233. package/dist/okf/types/DefaultObjectAccessControl.md +5 -0
  234. package/dist/okf/types/DefaultSupportedIDPConfig.md +2 -0
  235. package/dist/okf/types/DeidentifyTemplate.md +4 -0
  236. package/dist/okf/types/DeliveryPipeline.md +2 -0
  237. package/dist/okf/types/DenyPolicy.md +2 -0
  238. package/dist/okf/types/DeployPolicy.md +2 -0
  239. package/dist/okf/types/DeploymentResourcePool.md +2 -0
  240. package/dist/okf/types/DeploymentmanagerDeployment.md +4 -0
  241. package/dist/okf/types/Device.md +8 -0
  242. package/dist/okf/types/DeviceRegistry.md +1 -0
  243. package/dist/okf/types/DevicestreamingSession.md +2 -0
  244. package/dist/okf/types/DialogflowAgent.md +2 -0
  245. package/dist/okf/types/DialogflowEntityType.md +2 -0
  246. package/dist/okf/types/DialogflowIntent.md +3 -0
  247. package/dist/okf/types/DialogflowcxAgent.md +3 -0
  248. package/dist/okf/types/DialogflowcxEntityType.md +2 -0
  249. package/dist/okf/types/DialogflowcxIntent.md +2 -0
  250. package/dist/okf/types/DiscoveredService.md +2 -0
  251. package/dist/okf/types/DiscoveredWorkload.md +2 -0
  252. package/dist/okf/types/DiskResourcePolicyAttachment.md +1 -0
  253. package/dist/okf/types/DnsPolicy.md +1 -0
  254. package/dist/okf/types/Document.md +2 -0
  255. package/dist/okf/types/DomainMapping.md +2 -0
  256. package/dist/okf/types/EdgeCacheKeyset.md +1 -0
  257. package/dist/okf/types/EdgeCacheOrigin.md +1 -0
  258. package/dist/okf/types/EdgeCacheService.md +1 -0
  259. package/dist/okf/types/EdgecontainerCluster.md +9 -0
  260. package/dist/okf/types/EdgecontainerNodePool.md +4 -0
  261. package/dist/okf/types/EdgenetworkNetwork.md +4 -0
  262. package/dist/okf/types/EndpointAttachment.md +2 -0
  263. package/dist/okf/types/EndpointPolicy.md +3 -0
  264. package/dist/okf/types/Engine.md +2 -0
  265. package/dist/okf/types/Enrollment.md +2 -0
  266. package/dist/okf/types/Entitlement.md +2 -0
  267. package/dist/okf/types/Entry.md +2 -0
  268. package/dist/okf/types/EntryType.md +2 -0
  269. package/dist/okf/types/Envgroup.md +2 -0
  270. package/dist/okf/types/EnvgroupAttachment.md +2 -0
  271. package/dist/okf/types/EventarcChannel.md +2 -0
  272. package/dist/okf/types/EventarcTrigger.md +5 -0
  273. package/dist/okf/types/ExampleStore.md +2 -0
  274. package/dist/okf/types/ExternalAccessRule.md +2 -0
  275. package/dist/okf/types/ExternalAddress.md +2 -0
  276. package/dist/okf/types/ExternalVPNGateway.md +3 -0
  277. package/dist/okf/types/FHIRStore.md +2 -0
  278. package/dist/okf/types/Feature.md +4 -0
  279. package/dist/okf/types/FeatureMembership.md +1 -0
  280. package/dist/okf/types/Featurestore.md +2 -0
  281. package/dist/okf/types/FeaturestoreEntityType.md +5 -0
  282. package/dist/okf/types/FeaturestoreEntityTypeFeature.md +5 -0
  283. package/dist/okf/types/Federation.md +2 -0
  284. package/dist/okf/types/Feed.md +2 -0
  285. package/dist/okf/types/Field.md +2 -0
  286. package/dist/okf/types/FilestoreBackup.md +7 -0
  287. package/dist/okf/types/FilestoreInstance.md +5 -0
  288. package/dist/okf/types/FilestoreSnapshot.md +4 -0
  289. package/dist/okf/types/FirebaseProject.md +3 -0
  290. package/dist/okf/types/FirebasedatabaseInstance.md +4 -0
  291. package/dist/okf/types/FirebasehostingChannel.md +2 -0
  292. package/dist/okf/types/FirestoreBackupSchedule.md +2 -0
  293. package/dist/okf/types/FirestoreIndex.md +2 -0
  294. package/dist/okf/types/Firewall.md +3 -0
  295. package/dist/okf/types/FirewallPolicyAssociation.md +2 -0
  296. package/dist/okf/types/FirewallPolicyRule.md +4 -0
  297. package/dist/okf/types/FirewallRule.md +1 -0
  298. package/dist/okf/types/FlexTemplateJob.md +4 -0
  299. package/dist/okf/types/FlexibleAppVersion.md +2 -0
  300. package/dist/okf/types/Flow.md +2 -0
  301. package/dist/okf/types/FolderFeed.md +3 -0
  302. package/dist/okf/types/ForwardingRule.md +10 -0
  303. package/dist/okf/types/Fulfillment.md +2 -0
  304. package/dist/okf/types/Function.md +5 -0
  305. package/dist/okf/types/FutureReservation.md +2 -0
  306. package/dist/okf/types/GCPServiceAccount.md +5 -0
  307. package/dist/okf/types/GCPUserAccessBinding.md +2 -0
  308. package/dist/okf/types/GCPolicy.md +1 -0
  309. package/dist/okf/types/GKECluster.md +8 -0
  310. package/dist/okf/types/GRPCRoute.md +4 -0
  311. package/dist/okf/types/GcsFolder.md +2 -0
  312. package/dist/okf/types/GkebackupBackup.md +2 -0
  313. package/dist/okf/types/GkebackupBackupPlan.md +2 -0
  314. package/dist/okf/types/GkehubMembership.md +6 -0
  315. package/dist/okf/types/GkehubNamespace.md +2 -0
  316. package/dist/okf/types/GlobalNetworkEndpoint.md +1 -0
  317. package/dist/okf/types/GlobalNetworkEndpointGroup.md +2 -0
  318. package/dist/okf/types/GoogleChannelConfig.md +2 -0
  319. package/dist/okf/types/GuestPolicy.md +4 -0
  320. package/dist/okf/types/HL7V2Store.md +2 -0
  321. package/dist/okf/types/HMACKey.md +5 -0
  322. package/dist/okf/types/HTTPHealthCheck.md +3 -0
  323. package/dist/okf/types/HTTPRoute.md +4 -0
  324. package/dist/okf/types/HTTPSHealthCheck.md +3 -0
  325. package/dist/okf/types/HealthcareDataset.md +2 -0
  326. package/dist/okf/types/Hub.md +5 -0
  327. package/dist/okf/types/IAMAuditConfig.md +1 -0
  328. package/dist/okf/types/IAMPolicy.md +1 -0
  329. package/dist/okf/types/IAMPolicyMember.md +1 -0
  330. package/dist/okf/types/IdentityAwareProxyClient.md +2 -0
  331. package/dist/okf/types/IdentityplatformConfig.md +2 -0
  332. package/dist/okf/types/Image.md +5 -0
  333. package/dist/okf/types/ImportJob.md +2 -0
  334. package/dist/okf/types/InboundSAMLConfig.md +1 -0
  335. package/dist/okf/types/IndexEndpoint.md +6 -0
  336. package/dist/okf/types/InspectTemplate.md +4 -0
  337. package/dist/okf/types/InstanceAttachment.md +2 -0
  338. package/dist/okf/types/InstanceConfig.md +2 -0
  339. package/dist/okf/types/InstanceEndpoint.md +1 -0
  340. package/dist/okf/types/InstanceGroup.md +3 -0
  341. package/dist/okf/types/InstanceGroupManager.md +8 -0
  342. package/dist/okf/types/InstanceGroupNamedPort.md +1 -0
  343. package/dist/okf/types/InstanceTemplate.md +5 -0
  344. package/dist/okf/types/InterceptDeployment.md +2 -0
  345. package/dist/okf/types/InterceptEndpointGroup.md +2 -0
  346. package/dist/okf/types/Interconnect.md +2 -0
  347. package/dist/okf/types/InterconnectAttachment.md +9 -0
  348. package/dist/okf/types/InternalRange.md +2 -0
  349. package/dist/okf/types/JobTrigger.md +5 -0
  350. package/dist/okf/types/KMSCryptoKey.md +2 -0
  351. package/dist/okf/types/KMSKeyRing.md +2 -0
  352. package/dist/okf/types/KeyHandle.md +2 -0
  353. package/dist/okf/types/KeyRingImportJob.md +4 -0
  354. package/dist/okf/types/LBRouteExtension.md +2 -0
  355. package/dist/okf/types/Lake.md +2 -0
  356. package/dist/okf/types/Lien.md +3 -0
  357. package/dist/okf/types/Link.md +2 -0
  358. package/dist/okf/types/Listing.md +2 -0
  359. package/dist/okf/types/LocationTagBinding.md +3 -0
  360. package/dist/okf/types/LogBucket.md +4 -0
  361. package/dist/okf/types/LogExclusion.md +3 -0
  362. package/dist/okf/types/LogMetric.md +3 -0
  363. package/dist/okf/types/LogSink.md +2 -0
  364. package/dist/okf/types/LogView.md +3 -0
  365. package/dist/okf/types/LogicalView.md +3 -0
  366. package/dist/okf/types/Machine.md +2 -0
  367. package/dist/okf/types/MachineImage.md +2 -0
  368. package/dist/okf/types/ManagedFolder.md +2 -0
  369. package/dist/okf/types/ManagedSSLCertificate.md +1 -0
  370. package/dist/okf/types/ManagedkafkaCluster.md +2 -0
  371. package/dist/okf/types/ManagedkafkaTopic.md +2 -0
  372. package/dist/okf/types/ManagementServer.md +2 -0
  373. package/dist/okf/types/MaterializedView.md +3 -0
  374. package/dist/okf/types/MembershipBinding.md +2 -0
  375. package/dist/okf/types/MemcacheInstance.md +4 -0
  376. package/dist/okf/types/MemorystoreInstance.md +2 -0
  377. package/dist/okf/types/Mesh.md +4 -0
  378. package/dist/okf/types/MetadataStore.md +2 -0
  379. package/dist/okf/types/MetastoreBackup.md +2 -0
  380. package/dist/okf/types/MetastoreService.md +2 -0
  381. package/dist/okf/types/MetricDescriptor.md +2 -0
  382. package/dist/okf/types/MigrationJob.md +2 -0
  383. package/dist/okf/types/MlengineModel.md +1 -0
  384. package/dist/okf/types/MonGroup.md +1 -0
  385. package/dist/okf/types/MonService.md +1 -0
  386. package/dist/okf/types/MonitoredProject.md +2 -0
  387. package/dist/okf/types/MuteConfig.md +2 -0
  388. package/dist/okf/types/NATAddress.md +3 -0
  389. package/dist/okf/types/NetappBackupVault.md +2 -0
  390. package/dist/okf/types/NetworkAttachment.md +2 -0
  391. package/dist/okf/types/NetworkEdgeSecurityService.md +2 -0
  392. package/dist/okf/types/NetworkEndpoint.md +1 -0
  393. package/dist/okf/types/NetworkEndpointGroup.md +3 -0
  394. package/dist/okf/types/NetworkFirewallPolicy.md +7 -0
  395. package/dist/okf/types/NetworkFirewallPolicyAssociation.md +2 -0
  396. package/dist/okf/types/NetworkFirewallPolicyRule.md +3 -0
  397. package/dist/okf/types/NetworkPeeringRoutesConfig.md +1 -0
  398. package/dist/okf/types/NetworkPolicy.md +2 -0
  399. package/dist/okf/types/NetworkservicesGateway.md +4 -0
  400. package/dist/okf/types/Node.md +2 -0
  401. package/dist/okf/types/NodePool.md +2 -0
  402. package/dist/okf/types/NodeTemplate.md +4 -0
  403. package/dist/okf/types/Note.md +3 -0
  404. package/dist/okf/types/NotebookInstance.md +2 -0
  405. package/dist/okf/types/NotebooksEnvironment.md +2 -0
  406. package/dist/okf/types/Notification.md +3 -0
  407. package/dist/okf/types/NotificationChannel.md +3 -0
  408. package/dist/okf/types/NotificationConfig.md +3 -0
  409. package/dist/okf/types/OAuthIDPConfig.md +1 -0
  410. package/dist/okf/types/OSPolicyAssignment.md +9 -0
  411. package/dist/okf/types/Occurrence.md +5 -0
  412. package/dist/okf/types/Organization.md +10 -0
  413. package/dist/okf/types/OrganizationFeed.md +2 -0
  414. package/dist/okf/types/OrganizationSecurityPolicy.md +3 -0
  415. package/dist/okf/types/OrganizationSecurityPolicyAssociation.md +2 -0
  416. package/dist/okf/types/OrganizationSecurityPolicyRule.md +1 -0
  417. package/dist/okf/types/OrgpolicyPolicy.md +2 -0
  418. package/dist/okf/types/PacketMirroring.md +4 -0
  419. package/dist/okf/types/Page.md +2 -0
  420. package/dist/okf/types/Parameter.md +2 -0
  421. package/dist/okf/types/ParameterVersion.md +2 -0
  422. package/dist/okf/types/PartialPolicy.md +1 -0
  423. package/dist/okf/types/PatchDeployment.md +5 -0
  424. package/dist/okf/types/PeeredDNSDomain.md +2 -0
  425. package/dist/okf/types/PerInstanceConfig.md +1 -0
  426. package/dist/okf/types/PhraseSet.md +2 -0
  427. package/dist/okf/types/PlatformPolicy.md +2 -0
  428. package/dist/okf/types/PolicyTag.md +3 -0
  429. package/dist/okf/types/PrivateCloud.md +2 -0
  430. package/dist/okf/types/PrivatecaCertificate.md +5 -0
  431. package/dist/okf/types/Processor.md +2 -0
  432. package/dist/okf/types/ProcessorDefaultVersion.md +1 -0
  433. package/dist/okf/types/ProcessorVersion.md +2 -0
  434. package/dist/okf/types/ProjectDefaultConfig.md +2 -0
  435. package/dist/okf/types/ProjectFeed.md +2 -0
  436. package/dist/okf/types/ProjectMetadata.md +1 -0
  437. package/dist/okf/types/PubSubSnapshot.md +2 -0
  438. package/dist/okf/types/PubSubSubscription.md +1 -0
  439. package/dist/okf/types/PubSubTopic.md +1 -0
  440. package/dist/okf/types/PubsubliteReservation.md +1 -0
  441. package/dist/okf/types/PubsubliteTopic.md +1 -0
  442. package/dist/okf/types/RecaptchaenterpriseFirewallPolicy.md +2 -0
  443. package/dist/okf/types/RecaptchaenterpriseKey.md +2 -0
  444. package/dist/okf/types/Recognizer.md +2 -0
  445. package/dist/okf/types/RedisCluster.md +2 -0
  446. package/dist/okf/types/RedisInstance.md +8 -0
  447. package/dist/okf/types/RegionAutoscaler.md +3 -0
  448. package/dist/okf/types/RegionDiskResourcePolicyAttachment.md +1 -0
  449. package/dist/okf/types/RegionNetworkEndpointGroup.md +2 -0
  450. package/dist/okf/types/RegionPerInstanceConfig.md +1 -0
  451. package/dist/okf/types/RegionSSLPolicy.md +4 -0
  452. package/dist/okf/types/RegionalEndpoint.md +2 -0
  453. package/dist/okf/types/ResourceBundle.md +2 -0
  454. package/dist/okf/types/ResourcePolicy.md +3 -0
  455. package/dist/okf/types/ResourcemanagerFolder.md +5 -0
  456. package/dist/okf/types/ResourcemanagerPolicy.md +3 -0
  457. package/dist/okf/types/ResourcemanagerProject.md +2 -0
  458. package/dist/okf/types/ResponsePolicy.md +1 -0
  459. package/dist/okf/types/ResponsePolicyRule.md +1 -0
  460. package/dist/okf/types/Restore.md +2 -0
  461. package/dist/okf/types/RestorePlan.md +2 -0
  462. package/dist/okf/types/Router.md +3 -0
  463. package/dist/okf/types/RouterInterface.md +1 -0
  464. package/dist/okf/types/RouterNAT.md +1 -0
  465. package/dist/okf/types/RouterPeer.md +2 -0
  466. package/dist/okf/types/Routine.md +3 -0
  467. package/dist/okf/types/Runtime.md +2 -0
  468. package/dist/okf/types/RuntimeTemplate.md +2 -0
  469. package/dist/okf/types/SQLDatabase.md +2 -0
  470. package/dist/okf/types/SQLInstance.md +10 -0
  471. package/dist/okf/types/SQLUser.md +1 -0
  472. package/dist/okf/types/SSHPublicKey.md +2 -0
  473. package/dist/okf/types/SSLCert.md +8 -0
  474. package/dist/okf/types/SSLCertificate.md +5 -0
  475. package/dist/okf/types/SSLPolicy.md +4 -0
  476. package/dist/okf/types/SavedQuery.md +2 -0
  477. package/dist/okf/types/Schema.md +1 -0
  478. package/dist/okf/types/Scope.md +5 -0
  479. package/dist/okf/types/ScopeRBACRoleBinding.md +2 -0
  480. package/dist/okf/types/SecretCiphertext.md +2 -0
  481. package/dist/okf/types/SecretManagerSecret.md +3 -0
  482. package/dist/okf/types/SecretManagerSecretVersion.md +6 -0
  483. package/dist/okf/types/SecuresourcemanagerInstance.md +2 -0
  484. package/dist/okf/types/SecuresourcemanagerRepository.md +2 -0
  485. package/dist/okf/types/SecurityPolicy.md +3 -0
  486. package/dist/okf/types/ServerTLSPolicy.md +3 -0
  487. package/dist/okf/types/ServiceAccountKey.md +6 -0
  488. package/dist/okf/types/ServiceAttachment.md +5 -0
  489. package/dist/okf/types/ServiceBinding.md +2 -0
  490. package/dist/okf/types/ServiceConnectionPolicy.md +2 -0
  491. package/dist/okf/types/ServiceIdentity.md +2 -0
  492. package/dist/okf/types/ServiceLevelObjective.md +4 -0
  493. package/dist/okf/types/ServicePerimeter.md +4 -0
  494. package/dist/okf/types/ServicePerimeterResource.md +1 -0
  495. package/dist/okf/types/ServiceProjectAttachment.md +2 -0
  496. package/dist/okf/types/ServiceSplitTraffic.md +1 -0
  497. package/dist/okf/types/ServicedirectoryEndpoint.md +2 -0
  498. package/dist/okf/types/ServicedirectoryNamespace.md +2 -0
  499. package/dist/okf/types/ServicedirectoryService.md +2 -0
  500. package/dist/okf/types/ServicenetworkingConnection.md +2 -0
  501. package/dist/okf/types/ServiceusageService.md +1 -0
  502. package/dist/okf/types/Settings.md +2 -0
  503. package/dist/okf/types/SharedVPCHostProject.md +1 -0
  504. package/dist/okf/types/SharedVPCServiceProject.md +1 -0
  505. package/dist/okf/types/Site.md +3 -0
  506. package/dist/okf/types/Source.md +2 -0
  507. package/dist/okf/types/SourcerepoRepository.md +3 -0
  508. package/dist/okf/types/SpannerBackupSchedule.md +2 -0
  509. package/dist/okf/types/SpannerDatabase.md +2 -0
  510. package/dist/okf/types/SpannerInstance.md +3 -0
  511. package/dist/okf/types/Spoke.md +5 -0
  512. package/dist/okf/types/StandardAppVersion.md +2 -0
  513. package/dist/okf/types/StorageBucket.md +3 -0
  514. package/dist/okf/types/StoragetransferJob.md +5 -0
  515. package/dist/okf/types/StoredInfoType.md +1 -0
  516. package/dist/okf/types/Stream.md +3 -0
  517. package/dist/okf/types/Subnet.md +5 -0
  518. package/dist/okf/types/Subnetwork.md +8 -0
  519. package/dist/okf/types/Subscription.md +1 -0
  520. package/dist/okf/types/SyncAuthorization.md +2 -0
  521. package/dist/okf/types/TCPRoute.md +4 -0
  522. package/dist/okf/types/TLSRoute.md +4 -0
  523. package/dist/okf/types/Tag.md +2 -0
  524. package/dist/okf/types/TagBinding.md +3 -0
  525. package/dist/okf/types/TagKey.md +6 -0
  526. package/dist/okf/types/TagTemplate.md +2 -0
  527. package/dist/okf/types/TagValue.md +6 -0
  528. package/dist/okf/types/Target.md +2 -0
  529. package/dist/okf/types/TargetGRPCProxy.md +5 -0
  530. package/dist/okf/types/TargetHTTPProxy.md +4 -0
  531. package/dist/okf/types/TargetHTTPSProxy.md +5 -0
  532. package/dist/okf/types/TargetInstance.md +3 -0
  533. package/dist/okf/types/TargetPool.md +2 -0
  534. package/dist/okf/types/TargetSSLProxy.md +4 -0
  535. package/dist/okf/types/TargetTCPProxy.md +5 -0
  536. package/dist/okf/types/TargetVPNGateway.md +4 -0
  537. package/dist/okf/types/TasksQueue.md +2 -0
  538. package/dist/okf/types/Taxonomy.md +3 -0
  539. package/dist/okf/types/Tenant.md +1 -0
  540. package/dist/okf/types/TenantDefaultSupportedIDPConfig.md +2 -0
  541. package/dist/okf/types/TenantInboundSAMLConfig.md +1 -0
  542. package/dist/okf/types/TenantOAuthIDPConfig.md +1 -0
  543. package/dist/okf/types/Tensorboard.md +6 -0
  544. package/dist/okf/types/URLMap.md +5 -0
  545. package/dist/okf/types/UptimeCheckConfig.md +1 -0
  546. package/dist/okf/types/User.md +2 -0
  547. package/dist/okf/types/VPCNetwork.md +3 -0
  548. package/dist/okf/types/VPNGateway.md +2 -0
  549. package/dist/okf/types/VPNTunnel.md +7 -0
  550. package/dist/okf/types/VertexaiDataset.md +1 -0
  551. package/dist/okf/types/VertexaiEndpoint.md +1 -0
  552. package/dist/okf/types/VertexaiIndex.md +1 -0
  553. package/dist/okf/types/VirtualMachine.md +2 -0
  554. package/dist/okf/types/VmwareengineNetwork.md +2 -0
  555. package/dist/okf/types/VmwareengineNetworkPeering.md +2 -0
  556. package/dist/okf/types/VpnConnection.md +3 -0
  557. package/dist/okf/types/WasmPlugin.md +2 -0
  558. package/dist/okf/types/WebApp.md +3 -0
  559. package/dist/okf/types/Webhook.md +3 -0
  560. package/dist/okf/types/WorkerPool.md +2 -0
  561. package/dist/okf/types/Workflow.md +2 -0
  562. package/dist/okf/types/WorkflowTemplate.md +4 -0
  563. package/dist/okf/types/WorkflowsExecution.md +2 -0
  564. package/dist/okf/types/WorkforcePool.md +3 -0
  565. package/dist/okf/types/WorkforcePoolProvider.md +2 -0
  566. package/dist/okf/types/Workload.md +2 -0
  567. package/dist/okf/types/WorkloadIdentityPool.md +2 -0
  568. package/dist/okf/types/WorkloadIdentityPoolProvider.md +2 -0
  569. package/dist/okf/types/Workstation.md +2 -0
  570. package/dist/okf/types/WorkstationCluster.md +2 -0
  571. package/dist/okf/types/WorkstationConfig.md +2 -0
  572. package/dist/okf/types/Zone.md +2 -0
  573. package/dist/op/activities/floci-gcp.js +49 -0
  574. package/dist/op/activities/gcp-apply.js +618 -0
  575. package/dist/op/activities/index.js +10 -0
  576. package/dist/op/builders.js +50 -0
  577. package/dist/ownership.js +38 -0
  578. package/dist/package-cli.js +20 -0
  579. package/dist/plugin.d.ts.map +1 -1
  580. package/dist/plugin.js +377 -0
  581. package/dist/pseudo.js +15 -0
  582. package/dist/rules/schema-registry.ts +2 -1
  583. package/dist/serializer.d.ts.map +1 -1
  584. package/dist/serializer.js +247 -0
  585. package/dist/spec/fetch.js +107 -0
  586. package/dist/spec/parse.d.ts +1 -1
  587. package/dist/spec/parse.js +339 -0
  588. package/dist/types/index.d.ts +1367 -0
  589. package/dist/validate-cli.js +11 -0
  590. package/dist/validate.js +24 -0
  591. package/dist/variables.js +15 -0
  592. package/package.json +8 -8
  593. package/src/attributes.test.ts +16 -0
  594. package/src/codegen/generate.ts +8 -3
  595. package/src/codegen/package.ts +2 -2
  596. package/src/composites/catalog.ts +7 -1
  597. package/src/composites/cloud-run-service.ts +12 -5
  598. package/src/composites/composites.test.ts +17 -0
  599. package/src/generated/index.d.ts +1367 -0
  600. package/src/generated/index.ts +487 -487
  601. package/src/generated/lexicon-gcp.json +1848 -481
  602. package/src/health.test.ts +59 -0
  603. package/src/health.ts +123 -0
  604. package/src/index.ts +3 -0
  605. package/src/lint/post-synth/schema-registry.ts +2 -1
  606. package/src/lsp/completions.ts +2 -1
  607. package/src/lsp/hover.ts +2 -1
  608. package/src/plugin.ts +8 -0
  609. package/src/serializer-outputs.test.ts +26 -0
  610. package/src/serializer.ts +21 -3
  611. package/src/spec/parse.test.ts +42 -2
  612. package/src/spec/parse.ts +17 -1
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Runtime factory constructors — re-exported from core.
3
+ */
4
+ export { createResource, createProperty } from "@intentius/chant/runtime";
@@ -0,0 +1,98 @@
1
+ /**
2
+ * GCP governance authoring: the desired-state config
3
+ * shape an external governance reconciler reconciles, and `landingZoneConfig()` — the
4
+ * typed authoring layer that emits it.
5
+ *
6
+ * This is deliberately NOT a composite. The evaluability rules (EVL002/004,
7
+ * #916/#952) require composites to declare a fixed set of resources, so a
8
+ * data-driven folder tree walker cannot be one. The split mirrors the AWS
9
+ * slice (lexicons/aws/src/governance.ts): authoring emits config (this
10
+ * module, arbitrary cardinality); resources for greenfield bootstrap are the
11
+ * fixed-shape composites in `composites/landing-zone.ts`; the reconciler
12
+ * consumes only the config.
13
+ *
14
+ * GCP has no OrganizationRoot analog — organizations are created through
15
+ * Cloud Identity / Workspace, never through the resource API.
16
+ */
17
+ // ---------------------------------------------------------------------------
18
+ // Baseline guardrails (shared with the bootstrap composites)
19
+ // ---------------------------------------------------------------------------
20
+ export const DISABLE_SA_KEY_CREATION = {
21
+ description: "User-managed service account keys cannot be created.",
22
+ constraint: "iam.disableServiceAccountKeyCreation",
23
+ rules: [{ enforce: "TRUE" }],
24
+ };
25
+ export const SKIP_DEFAULT_NETWORK = {
26
+ description: "New projects do not get the auto-mode default VPC.",
27
+ constraint: "compute.skipDefaultNetworkCreation",
28
+ rules: [{ enforce: "TRUE" }],
29
+ };
30
+ /** Allow resource creation only in `locations` (value-group syntax like "in:us-locations" works too). */
31
+ export function resourceLocationRestriction(locations) {
32
+ return {
33
+ description: `Resources may only be created in [${locations.join(", ")}].`,
34
+ constraint: "gcp.resourceLocations",
35
+ rules: [{ values: { allowedValues: [...locations] } }],
36
+ };
37
+ }
38
+ /** The audit-log coverage `auditAllServices` declares. */
39
+ export const AUDIT_ALL_SERVICES = {
40
+ service: "allServices",
41
+ logTypes: ["ADMIN_READ", "DATA_READ", "DATA_WRITE"],
42
+ };
43
+ /**
44
+ * The recommended foundation folder structure. Exported so callers can
45
+ * extend it rather than restate it.
46
+ */
47
+ export const FOUNDATION_FOLDERS = {
48
+ Security: {},
49
+ Infrastructure: {},
50
+ Sandbox: {},
51
+ Workloads: {},
52
+ };
53
+ /**
54
+ * Author the desired-state tree an external governance reconciler reconciles. Pure.
55
+ * Throws when the tree attaches an org-policy name with no definition; only
56
+ * policies the tree actually attaches are included in the output.
57
+ */
58
+ export function landingZoneConfig(props = {}) {
59
+ const foundation = props.foundation ?? true;
60
+ const orgPolicies = {
61
+ ...(foundation
62
+ ? { "disable-sa-key-creation": DISABLE_SA_KEY_CREATION, "skip-default-network": SKIP_DEFAULT_NETWORK }
63
+ : {}),
64
+ ...(props.allowedLocations?.length
65
+ ? { "resource-location-restriction": resourceLocationRestriction(props.allowedLocations) }
66
+ : {}),
67
+ ...props.orgPolicies,
68
+ };
69
+ const folders = { ...(foundation ? FOUNDATION_FOLDERS : {}), ...props.folders };
70
+ const rootOrgPolicies = [
71
+ ...(foundation ? ["disable-sa-key-creation", "skip-default-network"] : []),
72
+ ...(props.allowedLocations?.length ? ["resource-location-restriction"] : []),
73
+ ...(props.rootOrgPolicies ?? []),
74
+ ];
75
+ const attached = new Set(rootOrgPolicies);
76
+ const collect = (tree) => {
77
+ for (const node of Object.values(tree)) {
78
+ for (const p of node.orgPolicies ?? [])
79
+ attached.add(p);
80
+ if (node.children)
81
+ collect(node.children);
82
+ }
83
+ };
84
+ collect(folders);
85
+ for (const name of attached) {
86
+ if (!orgPolicies[name]) {
87
+ throw new Error(`landingZoneConfig: org policy "${name}" is attached but not defined in orgPolicies`);
88
+ }
89
+ }
90
+ return {
91
+ organization: rootOrgPolicies.length ? { orgPolicies: rootOrgPolicies } : {},
92
+ folders,
93
+ orgPolicies: Object.fromEntries(Object.entries(orgPolicies).filter(([n]) => attached.has(n))),
94
+ ...(props.auditAllServices
95
+ ? { auditSinks: { auditConfig: { service: AUDIT_ALL_SERVICES.service, logTypes: [...AUDIT_ALL_SERVICES.logTypes] } } }
96
+ : {}),
97
+ };
98
+ }
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Runtime health for GCP (#4177): Cloud Run services.
3
+ *
4
+ * A Cloud Run v2 service carries its `Ready` condition as `terminalCondition`
5
+ * (`CONDITION_SUCCEEDED`, `CONDITION_FAILED`, pending or reconciling). The v1
6
+ * and Config Connector shape carries it in `status.conditions` with
7
+ * `status: "True" | "False" | "Unknown"`; both are read. Same transport,
8
+ * project resolution and endpoint rule as `describe-resources.ts`, so
9
+ * `GCP_ENDPOINT_URL` (floci-gcp) answers.
10
+ */
11
+ import type { HealthEntry, HealthReadOptions, HealthReadResult } from "@intentius/chant/lexicon";
12
+ import { type GcpReadHttp } from "./api/read-client.js";
13
+ export declare const GCP_HEALTH_TYPES: readonly ["GCP::Run::Service"];
14
+ export interface GcpHealthOptions extends HealthReadOptions {
15
+ http?: GcpReadHttp;
16
+ now?: () => Date;
17
+ }
18
+ interface Condition {
19
+ type?: string;
20
+ state?: string;
21
+ status?: string;
22
+ reason?: string;
23
+ message?: string;
24
+ lastTransitionTime?: string;
25
+ }
26
+ /** The parts of a Cloud Run service body that decide health. */
27
+ export interface CloudRunServiceState {
28
+ terminalCondition?: Condition;
29
+ conditions?: Condition[];
30
+ reconciling?: boolean;
31
+ latestReadyRevision?: string;
32
+ uri?: string;
33
+ status?: {
34
+ conditions?: Condition[];
35
+ url?: string;
36
+ };
37
+ }
38
+ /** The `Ready` condition's verdict. No condition at all is `unknown`. */
39
+ export declare function cloudRunEntry(body: CloudRunServiceState, observedAt: string): HealthEntry;
40
+ export declare function observeHealthGcp(options: GcpHealthOptions): Promise<HealthReadResult>;
41
+ export {};
42
+ //# sourceMappingURL=health.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../src/health.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,gBAAgB,EAAoB,MAAM,0BAA0B,CAAC;AACnH,OAAO,EAAyC,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAG5F,eAAO,MAAM,gBAAgB,YAAI,mBAAmB,CAAU,CAAC;AAE/D,MAAM,WAAW,gBAAiB,SAAQ,iBAAiB;IACzD,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CAClB;AAED,UAAU,SAAS;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,gEAAgE;AAChE,MAAM,WAAW,oBAAoB;IACnC,iBAAiB,CAAC,EAAE,SAAS,CAAC;IAC9B,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;IACzB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACrD;AAOD,yEAAyE;AACzE,wBAAgB,aAAa,CAAC,IAAI,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,GAAG,WAAW,CAqBzF;AAED,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAoD3F"}
package/dist/health.js ADDED
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Runtime health for GCP (#4177): Cloud Run services.
3
+ *
4
+ * A Cloud Run v2 service carries its `Ready` condition as `terminalCondition`
5
+ * (`CONDITION_SUCCEEDED`, `CONDITION_FAILED`, pending or reconciling). The v1
6
+ * and Config Connector shape carries it in `status.conditions` with
7
+ * `status: "True" | "False" | "Unknown"`; both are read. Same transport,
8
+ * project resolution and endpoint rule as `describe-resources.ts`, so
9
+ * `GCP_ENDPOINT_URL` (floci-gcp) answers.
10
+ */
11
+ import { getResource, GcpReadError, isNotFound } from "./api/read-client.js";
12
+ import { deriveGVK, manifestProjectAnnotations, resolveReadProject } from "./describe-resources.js";
13
+ export const GCP_HEALTH_TYPES = ["GCP::Run::Service"];
14
+ function readyCondition(body) {
15
+ if (body.terminalCondition && (body.terminalCondition.type ?? "Ready") === "Ready")
16
+ return body.terminalCondition;
17
+ return body.conditions?.find((c) => c.type === "Ready") ?? body.status?.conditions?.find((c) => c.type === "Ready");
18
+ }
19
+ /** The `Ready` condition's verdict. No condition at all is `unknown`. */
20
+ export function cloudRunEntry(body, observedAt) {
21
+ const type = "GCP::Run::Service";
22
+ const ready = readyCondition(body);
23
+ if (!ready)
24
+ return { type, state: "unknown", detail: "no Ready condition", observedAt };
25
+ const value = (ready.state ?? ready.status ?? "").toUpperCase();
26
+ const state = value === "CONDITION_SUCCEEDED" || value === "TRUE"
27
+ ? "healthy"
28
+ : value === "CONDITION_FAILED" || value === "FALSE"
29
+ ? "unhealthy"
30
+ : "unknown";
31
+ const why = ready.message || ready.reason;
32
+ const revision = body.latestReadyRevision ? `, latest ready ${body.latestReadyRevision.split("/").pop()}` : "";
33
+ const reconciling = body.reconciling ? ", reconciling" : "";
34
+ return {
35
+ type,
36
+ state,
37
+ detail: `Ready ${ready.state ?? ready.status ?? "unset"}${why ? `: ${why}` : ""}${revision}${reconciling}`,
38
+ observedAt,
39
+ ...(ready.lastTransitionTime ? { checkedAt: ready.lastTransitionTime } : {}),
40
+ };
41
+ }
42
+ export async function observeHealthGcp(options) {
43
+ const observedAt = (options.now?.() ?? new Date()).toISOString();
44
+ const endpoint = process.env.GCP_ENDPOINT_URL;
45
+ const manifestProjects = manifestProjectAnnotations(options.buildOutput);
46
+ const entities = {};
47
+ const unobserved = {};
48
+ const absent = [];
49
+ await Promise.all([...options.entities].map(async ([entityName, { entityType, props }]) => {
50
+ const gvk = deriveGVK(entityType);
51
+ const metadata = props.metadata;
52
+ const name = metadata?.name;
53
+ if (!gvk || !name) {
54
+ unobserved[entityName] = {
55
+ type: entityType,
56
+ reason: "read-failed",
57
+ detail: gvk ? "declared entity has no metadata.name to query by" : `cannot derive a GCP kind from ${entityType}`,
58
+ };
59
+ return;
60
+ }
61
+ let project;
62
+ try {
63
+ project = resolveReadProject(gvk.kind, name, metadata, manifestProjects);
64
+ }
65
+ catch (err) {
66
+ unobserved[entityName] = { type: entityType, reason: "no-binding", detail: err instanceof Error ? err.message : String(err) };
67
+ return;
68
+ }
69
+ try {
70
+ const body = await getResource({ project, ...(endpoint ? { endpoint } : {}), ...(options.http ? { http: options.http } : {}) }, gvk.kind, name, props);
71
+ entities[entityName] = cloudRunEntry(body, observedAt);
72
+ }
73
+ catch (err) {
74
+ if (isNotFound(err)) {
75
+ absent.push(entityName);
76
+ return;
77
+ }
78
+ const status = err instanceof GcpReadError ? err.status : undefined;
79
+ unobserved[entityName] = {
80
+ type: entityType,
81
+ reason: status === 401 || status === 403 ? "no-credentials" : "read-failed",
82
+ detail: (err instanceof Error ? err.message : String(err)).slice(0, 200),
83
+ };
84
+ }
85
+ }));
86
+ return { entities, unobserved, absent };
87
+ }
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Config Connector TypeScript generator.
3
+ *
4
+ * Converts import IR from the parser into typed chant TypeScript code.
5
+ */
6
+ export class GcpGenerator {
7
+ generate(ir) {
8
+ const lines = [];
9
+ const imports = new Set();
10
+ // Collect imports
11
+ for (const resource of ir.resources) {
12
+ const parts = resource.type.split("::");
13
+ if (parts.length >= 3) {
14
+ // Use the short name for the import
15
+ imports.add(parts[2]);
16
+ }
17
+ }
18
+ if (imports.size > 0) {
19
+ lines.push(`import { ${[...imports].sort().join(", ")} } from "@intentius/chant-lexicon-gcp";`);
20
+ lines.push("");
21
+ }
22
+ // Generate resource declarations
23
+ for (const resource of ir.resources) {
24
+ const parts = resource.type.split("::");
25
+ const className = parts.length >= 3 ? parts[2] : resource.type;
26
+ const varName = camelCase(resource.logicalId);
27
+ lines.push(`export const ${varName} = new ${className}(${formatProps(resource.properties, 0)});`);
28
+ lines.push("");
29
+ }
30
+ return [{ path: "main.ts", content: lines.join("\n") + "\n" }];
31
+ }
32
+ }
33
+ function camelCase(str) {
34
+ return str
35
+ .replace(/[-_](.)/g, (_, c) => c.toUpperCase())
36
+ .replace(/^(.)/, (_, c) => c.toLowerCase());
37
+ }
38
+ function formatProps(props, indent) {
39
+ const entries = Object.entries(props);
40
+ if (entries.length === 0)
41
+ return "{}";
42
+ const pad = " ".repeat(indent + 1);
43
+ const closePad = " ".repeat(indent);
44
+ const lines = entries.map(([key, value]) => {
45
+ return `${pad}${key}: ${formatValue(value, indent + 1)},`;
46
+ });
47
+ return `{\n${lines.join("\n")}\n${closePad}}`;
48
+ }
49
+ function formatValue(value, indent) {
50
+ if (value === null || value === undefined)
51
+ return "undefined";
52
+ if (typeof value === "string")
53
+ return JSON.stringify(value);
54
+ if (typeof value === "number" || typeof value === "boolean")
55
+ return String(value);
56
+ if (Array.isArray(value)) {
57
+ if (value.length === 0)
58
+ return "[]";
59
+ const pad = " ".repeat(indent + 1);
60
+ const closePad = " ".repeat(indent);
61
+ const items = value.map((v) => `${pad}${formatValue(v, indent + 1)},`);
62
+ return `[\n${items.join("\n")}\n${closePad}]`;
63
+ }
64
+ if (typeof value === "object") {
65
+ return formatProps(value, indent);
66
+ }
67
+ return String(value);
68
+ }
@@ -0,0 +1,73 @@
1
+ import { hasOwnershipMarker, LABEL_OWNERSHIP_KEYS } from "@intentius/chant/ownership";
2
+ import { GcpParser } from "./parser.js";
3
+ /** Server-written metadata fields, stripped unless `verbatim`. */
4
+ const SERVER_METADATA_FIELDS = [
5
+ "managedFields",
6
+ "uid",
7
+ "resourceVersion",
8
+ "generation",
9
+ "creationTimestamp",
10
+ "selfLink",
11
+ "ownerReferences",
12
+ "finalizers",
13
+ ];
14
+ function isRecord(v) {
15
+ return typeof v === "object" && v !== null && !Array.isArray(v);
16
+ }
17
+ /**
18
+ * Strip `status` and server-written metadata to reach the declared shape of a
19
+ * Config Connector object. Config Connector writes back several
20
+ * `cnrm.cloud.google.com/*` annotations that are not authored config; those are
21
+ * dropped too. Returns a new object; the input is not mutated.
22
+ */
23
+ export function stripServerFields(obj) {
24
+ const clone = JSON.parse(JSON.stringify(obj));
25
+ delete clone.status;
26
+ if (isRecord(clone.metadata)) {
27
+ const md = clone.metadata;
28
+ for (const f of SERVER_METADATA_FIELDS)
29
+ delete md[f];
30
+ if (isRecord(md.annotations)) {
31
+ for (const key of Object.keys(md.annotations)) {
32
+ // Config Connector's own bookkeeping annotations, plus the apply
33
+ // round-trip annotation — none are authored config.
34
+ if (key.startsWith("cnrm.cloud.google.com/") ||
35
+ key === "kubectl.kubernetes.io/last-applied-configuration") {
36
+ delete md.annotations[key];
37
+ }
38
+ }
39
+ if (Object.keys(md.annotations).length === 0)
40
+ delete md.annotations;
41
+ }
42
+ }
43
+ return clone;
44
+ }
45
+ /**
46
+ * Build full-fidelity export IR from a list of live Config Connector objects
47
+ * (each live object is already its manifest). Reuses the import GcpParser by
48
+ * feeding cleaned objects as JSON documents. Pure: all I/O stays in the caller.
49
+ */
50
+ export function buildExportFromObjects(objects, opts = {}) {
51
+ const owning = opts.owned
52
+ ? objects.filter((o) => {
53
+ if (!isRecord(o))
54
+ return false;
55
+ const labels = isRecord(o.metadata) ? o.metadata.labels : undefined;
56
+ return hasOwnershipMarker(labels, LABEL_OWNERSHIP_KEYS);
57
+ })
58
+ : objects;
59
+ const cleaned = owning
60
+ .filter(isRecord)
61
+ .map((o) => (opts.verbatim ? o : stripServerFields(o)));
62
+ const content = cleaned.map((o) => JSON.stringify(o, null, 2)).join("\n---\n");
63
+ const ir = new GcpParser().parse(content);
64
+ const selector = opts.selector;
65
+ if (!selector || (selector.type === undefined && selector.name === undefined)) {
66
+ return ir;
67
+ }
68
+ return {
69
+ ...ir,
70
+ resources: ir.resources.filter((r) => (selector.type === undefined || r.type === selector.type) &&
71
+ (selector.name === undefined || r.logicalId === selector.name)),
72
+ };
73
+ }
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Config Connector YAML template parser.
3
+ *
4
+ * Parses Config Connector YAML manifests into the import IR
5
+ * for conversion to chant TypeScript.
6
+ */
7
+ import { BaseValueParser } from "@intentius/chant/import/base-parser";
8
+ import { parseYAML } from "@intentius/chant/yaml";
9
+ import { gcpTypeName } from "../spec/parse.js";
10
+ /**
11
+ * Parser for Config Connector YAML manifests.
12
+ */
13
+ export class GcpParser extends BaseValueParser {
14
+ dispatchIntrinsic(_key, _value, _obj) {
15
+ // Config Connector YAML has no intrinsic functions
16
+ return null;
17
+ }
18
+ parse(input) {
19
+ const resources = [];
20
+ const documents = input
21
+ .split(/^---\s*$/m)
22
+ .map((d) => d.trim())
23
+ .filter((d) => d.length > 0);
24
+ for (const docStr of documents) {
25
+ const doc = parseYAML(docStr);
26
+ if (!doc)
27
+ continue;
28
+ const apiVersion = doc.apiVersion;
29
+ const kind = doc.kind;
30
+ if (!apiVersion || !kind)
31
+ continue;
32
+ // Only handle Config Connector resources
33
+ if (!apiVersion.includes("cnrm.cloud.google.com"))
34
+ continue;
35
+ const group = apiVersion.split("/")[0];
36
+ const typeName = gcpTypeName(group, kind);
37
+ const metadata = doc.metadata;
38
+ const spec = doc.spec;
39
+ const logicalId = metadata?.name ?? kind;
40
+ // Build properties from spec
41
+ const properties = {};
42
+ if (metadata) {
43
+ properties.metadata = this.parseValue(metadata);
44
+ }
45
+ if (spec) {
46
+ for (const [key, value] of Object.entries(spec)) {
47
+ properties[key] = this.parseValue(value);
48
+ }
49
+ }
50
+ resources.push({
51
+ logicalId,
52
+ type: typeName,
53
+ properties,
54
+ });
55
+ }
56
+ return {
57
+ resources,
58
+ parameters: [],
59
+ };
60
+ }
61
+ }
package/dist/index.d.ts CHANGED
@@ -5,6 +5,7 @@ export { defaultLabels, defaultAnnotations, isDefaultLabels, isDefaultAnnotation
5
5
  export { DEFAULT_LABELS_MARKER, DEFAULT_ANNOTATIONS_MARKER } from "./default-labels.js";
6
6
  export { GCP, ProjectId, Region, Zone } from "./pseudo.js";
7
7
  export { GcpAnnotations } from "./variables.js";
8
+ export { LexiconOutput, output, isLexiconOutput } from "@intentius/chant/lexicon-output";
8
9
  export * from "./generated/index.js";
9
10
  export { GkeCluster, CloudRunServiceComposite, CloudSqlInstance, GcsBucket, VpcNetwork, PubSubPipeline, CloudFunctionWithTrigger, PrivateService, ManagedCertificate, SecureProject, MemorystoreRedis, MultiRegionVpc, GkeCrdbRegion, GpuNodePool, GovernanceFoundation, LocationRestriction, OrganizationAuditConfig, } from "./composites/index.js";
10
11
  export type { GkeClusterProps, CloudRunServiceProps, CloudSqlInstanceProps, GcsBucketProps, VpcNetworkProps, VpcSubnet, PubSubPipelineProps, CloudFunctionWithTriggerProps, PrivateServiceProps, ManagedCertificateProps, SecureProjectProps, MemorystoreRedisProps, MultiRegionVpcConfig, MultiRegionVpcRegion, GkeCrdbRegionConfig, GkeCrdbRegionNodeConfig, GpuNodePoolProps, GpuNodePoolTaint, GovernanceFoundationProps, LocationRestrictionProps, OrganizationAuditConfigProps, } from "./composites/index.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAG9E,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAG7C,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAGrC,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC5G,OAAO,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAGrF,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAGxD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAI7C,cAAc,mBAAmB,CAAC;AAGlC,OAAO,EACL,UAAU,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,SAAS,EAAE,UAAU,EAC7E,cAAc,EAAE,wBAAwB,EAAE,cAAc,EAAE,kBAAkB,EAAE,aAAa,EAC3F,gBAAgB,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAC5D,oBAAoB,EAAE,mBAAmB,EAAE,uBAAuB,GACnE,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,eAAe,EACf,oBAAoB,EACpB,qBAAqB,EACrB,cAAc,EACd,eAAe,EAAE,SAAS,EAC1B,mBAAmB,EACnB,6BAA6B,EAC7B,mBAAmB,EACnB,uBAAuB,EACvB,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,EAAE,oBAAoB,EAC1C,mBAAmB,EAAE,uBAAuB,EAC5C,gBAAgB,EAAE,gBAAgB,EAClC,yBAAyB,EAAE,wBAAwB,EAAE,4BAA4B,GAClF,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EACL,iBAAiB,EAAE,2BAA2B,EAC9C,uBAAuB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,kBAAkB,GACtF,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAG9H,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAGxH,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACrF,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAC1G,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,kBAAkB,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAGrI,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGvE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAG9E,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAG7C,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAGrC,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC5G,OAAO,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAGrF,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAGxD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG7C,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAIzF,cAAc,mBAAmB,CAAC;AAGlC,OAAO,EACL,UAAU,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,SAAS,EAAE,UAAU,EAC7E,cAAc,EAAE,wBAAwB,EAAE,cAAc,EAAE,kBAAkB,EAAE,aAAa,EAC3F,gBAAgB,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAC5D,oBAAoB,EAAE,mBAAmB,EAAE,uBAAuB,GACnE,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,eAAe,EACf,oBAAoB,EACpB,qBAAqB,EACrB,cAAc,EACd,eAAe,EAAE,SAAS,EAC1B,mBAAmB,EACnB,6BAA6B,EAC7B,mBAAmB,EACnB,uBAAuB,EACvB,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,EAAE,oBAAoB,EAC1C,mBAAmB,EAAE,uBAAuB,EAC5C,gBAAgB,EAAE,gBAAgB,EAClC,yBAAyB,EAAE,wBAAwB,EAAE,4BAA4B,GAClF,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EACL,iBAAiB,EAAE,2BAA2B,EAC9C,uBAAuB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,kBAAkB,GACtF,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAG9H,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAGxH,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACrF,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAC1G,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,kBAAkB,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAGrI,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGvE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,38 @@
1
+ // Typed Op step-builder wrappers (chant #1288 Stage 2) — gcpApply/gcpDelete/
2
+ // flociGcpUp/flociGcpDown with authoring-time types derived from this
3
+ // lexicon's own *Args interfaces (see ./op/builders.ts's module doc for why
4
+ // these live here rather than in core). Opt-in: `@intentius/chant/op`'s
5
+ // same-named exports are core's original untyped builders, unchanged.
6
+ export { gcpApply, gcpDelete, flociGcpUp, flociGcpDown } from "./op/builders.js";
7
+ // Serializer
8
+ export { gcpSerializer } from "./serializer.js";
9
+ // Plugin
10
+ export { gcpPlugin } from "./plugin.js";
11
+ // Default labels & annotations
12
+ export { defaultLabels, defaultAnnotations, isDefaultLabels, isDefaultAnnotations } from "./default-labels.js";
13
+ export { DEFAULT_LABELS_MARKER, DEFAULT_ANNOTATIONS_MARKER } from "./default-labels.js";
14
+ // Pseudo-parameters
15
+ export { GCP, ProjectId, Region, Zone } from "./pseudo.js";
16
+ // Variables / annotation constants
17
+ export { GcpAnnotations } from "./variables.js";
18
+ // Outputs (#4181): the build warns that Config Connector YAML can't carry them.
19
+ export { LexiconOutput, output, isLexiconOutput } from "@intentius/chant/lexicon-output";
20
+ // Generated entities — export everything from generated index
21
+ // After running `npm run generate`, this re-exports all Config Connector resource classes
22
+ export * from "./generated/index.js";
23
+ // Composites
24
+ export { GkeCluster, CloudRunServiceComposite, CloudSqlInstance, GcsBucket, VpcNetwork, PubSubPipeline, CloudFunctionWithTrigger, PrivateService, ManagedCertificate, SecureProject, MemorystoreRedis, MultiRegionVpc, GkeCrdbRegion, GpuNodePool, GovernanceFoundation, LocationRestriction, OrganizationAuditConfig, } from "./composites/index.js";
25
+ // GCP governance authoring: the desired-state config an external governance
26
+ // reconciler applies, and the typed landing-zone authoring layer.
27
+ export { landingZoneConfig, resourceLocationRestriction, DISABLE_SA_KEY_CREATION, SKIP_DEFAULT_NETWORK, AUDIT_ALL_SERVICES, FOUNDATION_FOLDERS, } from "./governance.js";
28
+ // IAM role constants
29
+ export { StorageRoles, ComputeRoles, ContainerRoles, IAMRoles, SQLRoles, RunRoles, PubSubRoles } from "./actions/index.js";
30
+ // Spec utilities (for tooling)
31
+ export { fetchCRDBundle, getCachePath, clearCache, KCC_VERSION } from "./spec/fetch.js";
32
+ export { parseGcpCRD, gcpServiceName, gcpShortName, gcpTypeName, stripServicePrefix } from "./spec/parse.js";
33
+ // Code generation pipeline
34
+ export { generate, writeGeneratedFiles } from "./codegen/generate.js";
35
+ export { packageLexicon } from "./codegen/package.js";
36
+ // LSP providers
37
+ export { gcpCompletions } from "./lsp/completions.js";
38
+ export { gcpHover } from "./lsp/hover.js";
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "algorithm": "sha256",
3
3
  "artifacts": {
4
- "manifest.json": "f18724bb2524380c0a50809a8605a22da93c4f0bc3bf6e21c964d0a12047b112",
5
- "meta.json": "475f10909854d059a2e2d4fb541c058803422e38b9c64bd4d6858c0623eedb8c",
6
- "types/index.d.ts": "5433b54c04b57d6fda8f3d81ef92ed0aca87f7e8e5dd3ea92d8de6e62a3ccfab",
4
+ "manifest.json": "257df817d4b1ad04f71ff75c28b578dcff2a2921fe07100da54974937b645941",
5
+ "meta.json": "75643660010c044c6f465bef2688a864ab30cc96fd9b68111969749748ac64ca",
6
+ "types/index.d.ts": "da1ebc6bcf83e1a018a773b59714194aeeb74ae1d5c1252b737b7e730ca98bd5",
7
7
  "rules/hardcoded-project.ts": "6d5ae9efa74d73800eebe1a0a0d43c619ee0fdebe3347195df93fcbe63b34f0d",
8
8
  "rules/hardcoded-region.ts": "d7f8c48571f37600cb583a08aef7eb07245fbcbdda048874bb074c94c849ae0f",
9
9
  "rules/public-iam.ts": "9c43b2d148dba1aea3494983e042d7b038d92a8309173e7e35bb17f6ee21db9e",
10
10
  "rules/gcp-helpers.ts": "0420adb73527b29a288e219b24742f4f29ef83859228d61fdaff83b1fb800bf1",
11
- "rules/schema-registry.ts": "0d90aa97ca893478b4e0b7ac02fb017786929abd1f241b12c90915bffa8499d8",
11
+ "rules/schema-registry.ts": "fa9d8e3c1ebee2b95b3385044c7c24c50e71626f5b2936b9412aeb03b0ce7e7a",
12
12
  "rules/wgc101.ts": "679f245ea4665d687848382ff1b934ae133a3c320cc051011cc4d95802e66b38",
13
13
  "rules/wgc102.ts": "22cb997d40a59ce3e0ff833ce946a5571e13d4811b255d4b67db570d58575e07",
14
14
  "rules/wgc103.ts": "589741dbe5828508b5424a74f63f0202ba8452237c366173af283073f81e0317",
@@ -40,5 +40,5 @@
40
40
  "skills/chant-gcp-patterns.md": "4c6809fc7c37fa1879379ad4c0e2d114dec9497bc6eb9d1bca4e79fddea4f509",
41
41
  "skills/chant-gcp-gke.md": "be277019da9a722c851e47cd2dfb9c9536668948c3535fb20db7697e934c4e2b"
42
42
  },
43
- "composite": "1270f8e7a0f06edb9f0547a2a46819139876078a3823cd914ee5ffc619da3dd0"
43
+ "composite": "2947c3fa4c9b3e3407d761cb6302036cbdc49736886f5bb16407aac326ff42d9"
44
44
  }
@@ -0,0 +1,38 @@
1
+ /**
2
+ * The gcp lexicon's `chant audit` catalog — metadata for the WGC* Config
3
+ * Connector post-synth rules. Contributed via `gcpPlugin.auditCatalog()` (#687).
4
+ */
5
+ import { auditRule, applyLineage } from "@intentius/chant/audit/catalog";
6
+ import { gcpAuditLineage } from "./audit-lineage.js";
7
+ const GCP_SEC = { name: "Google Cloud — Security best practices", url: "https://cloud.google.com/security/best-practices" };
8
+ export const gcpAuditCatalog = {
9
+ WGC101: auditRule("WGC101", "merge-worthy", "guidance", "Storage/SQL without encryption configuration", "Configure encryption (e.g. a CMEK key) for data at rest.", { authority: [GCP_SEC] }),
10
+ WGC102: auditRule("WGC102", "merge-worthy", "guidance", "Public IAM member (allUsers/allAuthenticatedUsers)", "Remove allUsers/allAuthenticatedUsers bindings.", { authority: [GCP_SEC] }),
11
+ WGC103: auditRule("WGC103", "report-only", "guidance", "Missing project-id annotation", "Add the cnrm.cloud.google.com/project-id annotation.", { category: "best-practice" }),
12
+ WGC104: auditRule("WGC104", "merge-worthy", "guidance", "Bucket without uniform bucket-level access", "Enable uniformBucketLevelAccess.", { authority: [GCP_SEC] }),
13
+ WGC105: auditRule("WGC105", "merge-worthy", "guidance", "Cloud SQL open to 0.0.0.0/0", "Restrict authorizedNetworks to known sources.", { authority: [GCP_SEC] }),
14
+ WGC106: auditRule("WGC106", "report-only", "guidance", "Missing deletion-policy annotation", "Add the cnrm.cloud.google.com/deletion-policy annotation.", { category: "best-practice" }),
15
+ WGC107: auditRule("WGC107", "report-only", "guidance", "Bucket versioning disabled", "Enable object versioning.", { category: "best-practice" }),
16
+ WGC108: auditRule("WGC108", "report-only", "guidance", "Cloud SQL backups disabled", "Enable backup configuration.", { category: "best-practice" }),
17
+ WGC109: auditRule("WGC109", "merge-worthy", "guidance", "Firewall open to 0.0.0.0/0", "Restrict sourceRanges to known sources.", { authority: [GCP_SEC] }),
18
+ WGC110: auditRule("WGC110", "merge-worthy", "guidance", "KMS key without rotation", "Set a rotationPeriod on the CryptoKey.", { authority: [GCP_SEC] }),
19
+ WGC111: auditRule("WGC111", "merge-worthy", "guidance", "Reference to an undefined resource", "Point the reference at a resource in the output.", { category: "correctness" }),
20
+ WGC112: auditRule("WGC112", "merge-worthy", "guidance", "Missing or invalid apiVersion", "Set a valid cnrm.cloud.google.com apiVersion.", { category: "correctness" }),
21
+ WGC113: auditRule("WGC113", "report-only", "guidance", "Alpha API version", "Move to a beta/GA API version.", { category: "best-practice" }),
22
+ WGC201: auditRule("WGC201", "report-only", "guidance", "Missing managed-by label", "Add the app.kubernetes.io/managed-by label.", { category: "best-practice" }),
23
+ WGC202: auditRule("WGC202", "merge-worthy", "guidance", "Cluster without Workload Identity", "Enable Workload Identity on the ContainerCluster.", { authority: [GCP_SEC] }),
24
+ WGC203: auditRule("WGC203", "merge-worthy", "guidance", "Node pool uses broad cloud-platform scope", "Use narrowly-scoped OAuth scopes instead of cloud-platform.", { authority: [GCP_SEC] }),
25
+ WGC204: auditRule("WGC204", "report-only", "guidance", "Compute instance without Shielded VM", "Enable Shielded VM configuration.", { category: "best-practice" }),
26
+ WGC301: auditRule("WGC301", "report-only", "guidance", "No IAMAuditConfig found", "Configure audit logging via IAMAuditConfig.", { category: "best-practice" }),
27
+ WGC302: auditRule("WGC302", "report-only", "guidance", "No Service (enabled APIs) found", "Declare the GCP APIs you depend on.", { category: "best-practice" }),
28
+ WGC303: auditRule("WGC303", "report-only", "guidance", "No VPC Service Controls perimeter", "Consider an AccessContextManager ServicePerimeter.", { category: "best-practice" }),
29
+ WGC401: auditRule("WGC401", "merge-worthy", "guidance", "Unknown field in resource spec", "Remove the unknown spec field.", { category: "correctness" }),
30
+ WGC402: auditRule("WGC402", "merge-worthy", "guidance", "Missing required spec field", "Add the required spec field.", { category: "correctness" }),
31
+ WGC403: auditRule("WGC403", "merge-worthy", "guidance", "Spec field has wrong type/structure", "Fix the field's type/structure.", { category: "correctness" }),
32
+ // governance posture regressions.
33
+ WGC501: auditRule("WGC501", "merge-worthy", "guidance", "Org Policy guardrail not enforced", "Enable enforce on the rule (or remove the policy deliberately) — a disabled org policy constrains nothing.", { authority: [GCP_SEC] }),
34
+ WGC502: auditRule("WGC502", "merge-worthy", "guidance", "Org Policy guardrail defines no rules", "Add rules to the OrgPolicyPolicy — without them the constraint binds nothing.", { authority: [GCP_SEC] }),
35
+ WGC503: auditRule("WGC503", "merge-worthy", "guidance", "Audit logging dropped or scoped down", "Keep auditLogConfigs populated and remove exemptedMembers from the IAMAuditConfig.", { authority: [GCP_SEC] }),
36
+ };
37
+ // Prior art credits live beside the rules in ./audit-lineage.ts (see core audit/prior-art.ts).
38
+ applyLineage(gcpAuditCatalog, gcpAuditLineage);
@@ -0,0 +1,63 @@
1
+ export const gcpAuditLineage = {
2
+ WGC101: [
3
+ { tool: "gcp-policy-library", rule: "GCPStorageCMEKEncryptionConstraintV1", url: "https://github.com/GoogleCloudPlatform/policy-library/blob/master/policies/templates/gcp_storage_cmek_encryption_v1.yaml", relation: "overlaps" },
4
+ ],
5
+ WGC102: [
6
+ { tool: "checkov", rule: "CKV_GCP_28", url: "https://www.checkov.io/5.Policy%20Index/terraform.html", relation: "overlaps" },
7
+ { tool: "kics", rule: "Cloud Storage Anonymous or Publicly Accessible", url: "https://docs.kics.io/latest/queries/terraform-queries/gcp/a6cd52a1-3056-4910-96a5-894de9f3f3b3/", relation: "overlaps" },
8
+ { tool: "gcp-policy-library", rule: "GCPStorageBucketWorldReadableConstraintV1", url: "https://github.com/GoogleCloudPlatform/policy-library/blob/master/policies/templates/gcp_storage_bucket_world_readable_v1.yaml", relation: "overlaps" },
9
+ ],
10
+ WGC104: [
11
+ { tool: "checkov", rule: "CKV_GCP_29", url: "https://www.checkov.io/5.Policy%20Index/terraform.html", relation: "overlaps" },
12
+ { tool: "kics", rule: "Google Storage Bucket Level Access Disabled", url: "https://docs.kics.io/latest/queries/terraform-queries/gcp/bb0db090-5509-4853-a827-75ced0b3caa0/", relation: "overlaps" },
13
+ { tool: "gcp-policy-library", rule: "GCPStorageBucketPolicyOnlyConstraintV1", url: "https://github.com/GoogleCloudPlatform/policy-library/blob/master/policies/templates/gcp_storage_bucket_policy_only_v1.yaml", relation: "overlaps" },
14
+ ],
15
+ WGC105: [
16
+ { tool: "checkov", rule: "CKV_GCP_11", url: "https://www.checkov.io/5.Policy%20Index/terraform.html", relation: "overlaps" },
17
+ { tool: "kics", rule: "SQL DB Instance Publicly Accessible", url: "https://docs.kics.io/latest/queries/terraform-queries/gcp/b187edca-b81e-4fdc-aff4-aab57db45edb/", relation: "overlaps" },
18
+ { tool: "gcp-policy-library", rule: "GCPSQLWorldReadableConstraintV1", url: "https://github.com/GoogleCloudPlatform/policy-library/blob/master/policies/templates/gcp_sql_world_readable_v1.yaml", relation: "overlaps" },
19
+ ],
20
+ WGC107: [
21
+ { tool: "checkov", rule: "CKV_GCP_78", url: "https://www.checkov.io/5.Policy%20Index/terraform.html", relation: "overlaps" },
22
+ { tool: "kics", rule: "Cloud Storage Bucket Versioning Disabled", url: "https://docs.kics.io/latest/queries/terraform-queries/gcp/e7e961ac-d17e-4413-84bc-8a1fbe242944/", relation: "overlaps" },
23
+ ],
24
+ WGC108: [
25
+ { tool: "checkov", rule: "CKV_GCP_14", url: "https://www.checkov.io/5.Policy%20Index/terraform.html", relation: "overlaps" },
26
+ { tool: "kics", rule: "SQL DB Instance Backup Disabled", url: "https://docs.kics.io/latest/queries/terraform-queries/gcp/cf3c7631-cd1e-42f3-8801-a561214a6e79/", relation: "overlaps" },
27
+ { tool: "gcp-policy-library", rule: "GCPSQLBackupConstraintV1", url: "https://github.com/GoogleCloudPlatform/policy-library/blob/master/policies/templates/gcp_sql_backup_v1.yaml", relation: "overlaps" },
28
+ ],
29
+ WGC109: [
30
+ { tool: "gcp-policy-library", rule: "GCPRestrictedFirewallRulesConstraintV1", url: "https://github.com/GoogleCloudPlatform/policy-library/blob/master/policies/templates/gcp_restricted_firewall_rules_v1.yaml", relation: "overlaps" },
31
+ { tool: "checkov", rule: "CKV2_GCP_12", url: "https://www.checkov.io/5.Policy%20Index/terraform.html", relation: "overlaps" },
32
+ ],
33
+ WGC110: [
34
+ { tool: "checkov", rule: "CKV_GCP_43", url: "https://www.checkov.io/5.Policy%20Index/terraform.html", relation: "overlaps" },
35
+ { tool: "kics", rule: "High Google KMS Crypto Key Rotation Period", url: "https://docs.kics.io/latest/queries/terraform-queries/gcp/d8c57c4e-bf6f-4e32-a2bf-8643532de77b/", relation: "overlaps" },
36
+ { tool: "gcp-policy-library", rule: "GCPCMEKRotationConstraintV1", url: "https://github.com/GoogleCloudPlatform/policy-library/blob/master/policies/templates/gcp_cmek_rotation_v1.yaml", relation: "overlaps" },
37
+ ],
38
+ WGC202: [
39
+ { tool: "gcp-policy-library", rule: "GCPGKEEnableWorkloadIdentityConstraintV1", url: "https://github.com/GoogleCloudPlatform/policy-library/blob/master/policies/templates/gcp_gke_enable_workload_identity_v1.yaml", relation: "overlaps" },
40
+ { tool: "checkov", rule: "CKV_GCP_69", url: "https://www.checkov.io/5.Policy%20Index/terraform.html", relation: "overlaps" },
41
+ ],
42
+ WGC203: [
43
+ { tool: "gcp-policy-library", rule: "GCPGKEAllowedNodeSAConstraintV1", url: "https://github.com/GoogleCloudPlatform/policy-library/blob/master/policies/templates/gcp_gke_allowed_node_sa_v1.yaml", relation: "overlaps" },
44
+ { tool: "checkov", rule: "CKV_GCP_31", url: "https://www.checkov.io/5.Policy%20Index/terraform.html", relation: "overlaps" },
45
+ { tool: "kics", rule: "VM With Full Cloud Access", url: "https://docs.kics.io/latest/queries/terraform-queries/gcp/bc280331-27b9-4acb-a010-018e8098aa5d/", relation: "overlaps" },
46
+ ],
47
+ WGC204: [
48
+ { tool: "checkov", rule: "CKV_GCP_39", url: "https://www.checkov.io/5.Policy%20Index/terraform.html", relation: "overlaps" },
49
+ { tool: "kics", rule: "Shielded VM Disabled", url: "https://docs.kics.io/latest/queries/terraform-queries/gcp/1b44e234-3d73-41a8-9954-0b154135280e/", relation: "overlaps" },
50
+ ],
51
+ WGC301: [
52
+ { tool: "gcp-policy-library", rule: "GCPIAMAuditLogConstraint", url: "https://github.com/GoogleCloudPlatform/policy-library/blob/master/policies/templates/gcp_iam_audit_log.yaml", relation: "overlaps" },
53
+ { tool: "checkov", rule: "CKV2_GCP_5", url: "https://www.checkov.io/5.Policy%20Index/terraform.html", relation: "overlaps" },
54
+ ],
55
+ WGC303: [
56
+ { tool: "gcp-policy-library", rule: "GCPVPCSCEnsureProjectConstraintV1", url: "https://github.com/GoogleCloudPlatform/policy-library/blob/master/policies/templates/gcp_vpc_sc_ensure_project_v1.yaml", relation: "overlaps" },
57
+ ],
58
+ WGC503: [
59
+ { tool: "gcp-policy-library", rule: "GCPIAMAuditLogConstraint", url: "https://github.com/GoogleCloudPlatform/policy-library/blob/master/policies/templates/gcp_iam_audit_log.yaml", relation: "overlaps" },
60
+ { tool: "checkov", rule: "CKV2_GCP_5", url: "https://www.checkov.io/5.Policy%20Index/terraform.html", relation: "overlaps" },
61
+ { tool: "kics", rule: "IAM Audit Not Properly Configured", url: "https://docs.kics.io/latest/queries/terraform-queries/gcp/89fe890f-b480-460c-8b6b-7d8b1468adb4/", relation: "overlaps" },
62
+ ],
63
+ };