s3db.js 13.6.0 → 14.0.2

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 (193) hide show
  1. package/README.md +139 -43
  2. package/dist/s3db.cjs +72425 -38970
  3. package/dist/s3db.cjs.map +1 -1
  4. package/dist/s3db.es.js +72177 -38764
  5. package/dist/s3db.es.js.map +1 -1
  6. package/mcp/lib/base-handler.js +157 -0
  7. package/mcp/lib/handlers/connection-handler.js +280 -0
  8. package/mcp/lib/handlers/query-handler.js +533 -0
  9. package/mcp/lib/handlers/resource-handler.js +428 -0
  10. package/mcp/lib/tool-registry.js +336 -0
  11. package/mcp/lib/tools/connection-tools.js +161 -0
  12. package/mcp/lib/tools/query-tools.js +267 -0
  13. package/mcp/lib/tools/resource-tools.js +404 -0
  14. package/package.json +94 -49
  15. package/src/clients/memory-client.class.js +346 -191
  16. package/src/clients/memory-storage.class.js +300 -84
  17. package/src/clients/s3-client.class.js +7 -6
  18. package/src/concerns/geo-encoding.js +19 -2
  19. package/src/concerns/ip.js +59 -9
  20. package/src/concerns/money.js +8 -1
  21. package/src/concerns/password-hashing.js +49 -8
  22. package/src/concerns/plugin-storage.js +186 -18
  23. package/src/concerns/storage-drivers/filesystem-driver.js +284 -0
  24. package/src/database.class.js +139 -29
  25. package/src/errors.js +332 -42
  26. package/src/plugins/api/auth/oidc-auth.js +66 -17
  27. package/src/plugins/api/auth/strategies/base-strategy.class.js +74 -0
  28. package/src/plugins/api/auth/strategies/factory.class.js +63 -0
  29. package/src/plugins/api/auth/strategies/global-strategy.class.js +44 -0
  30. package/src/plugins/api/auth/strategies/path-based-strategy.class.js +83 -0
  31. package/src/plugins/api/auth/strategies/path-rules-strategy.class.js +118 -0
  32. package/src/plugins/api/concerns/failban-manager.js +106 -57
  33. package/src/plugins/api/concerns/opengraph-helper.js +116 -0
  34. package/src/plugins/api/concerns/route-context.js +601 -0
  35. package/src/plugins/api/concerns/state-machine.js +288 -0
  36. package/src/plugins/api/index.js +180 -41
  37. package/src/plugins/api/routes/auth-routes.js +198 -30
  38. package/src/plugins/api/routes/resource-routes.js +19 -4
  39. package/src/plugins/api/server/health-manager.class.js +163 -0
  40. package/src/plugins/api/server/middleware-chain.class.js +310 -0
  41. package/src/plugins/api/server/router.class.js +472 -0
  42. package/src/plugins/api/server.js +280 -1303
  43. package/src/plugins/api/utils/custom-routes.js +17 -5
  44. package/src/plugins/api/utils/guards.js +76 -17
  45. package/src/plugins/api/utils/openapi-generator-cached.class.js +133 -0
  46. package/src/plugins/api/utils/openapi-generator.js +7 -6
  47. package/src/plugins/api/utils/template-engine.js +77 -3
  48. package/src/plugins/audit.plugin.js +30 -8
  49. package/src/plugins/backup.plugin.js +110 -14
  50. package/src/plugins/cache/cache.class.js +22 -5
  51. package/src/plugins/cache/filesystem-cache.class.js +116 -19
  52. package/src/plugins/cache/memory-cache.class.js +211 -57
  53. package/src/plugins/cache/multi-tier-cache.class.js +371 -0
  54. package/src/plugins/cache/partition-aware-filesystem-cache.class.js +168 -47
  55. package/src/plugins/cache/redis-cache.class.js +552 -0
  56. package/src/plugins/cache/s3-cache.class.js +17 -8
  57. package/src/plugins/cache.plugin.js +176 -61
  58. package/src/plugins/cloud-inventory/drivers/alibaba-driver.js +8 -1
  59. package/src/plugins/cloud-inventory/drivers/aws-driver.js +60 -29
  60. package/src/plugins/cloud-inventory/drivers/azure-driver.js +8 -1
  61. package/src/plugins/cloud-inventory/drivers/base-driver.js +16 -2
  62. package/src/plugins/cloud-inventory/drivers/cloudflare-driver.js +8 -1
  63. package/src/plugins/cloud-inventory/drivers/digitalocean-driver.js +8 -1
  64. package/src/plugins/cloud-inventory/drivers/hetzner-driver.js +8 -1
  65. package/src/plugins/cloud-inventory/drivers/linode-driver.js +8 -1
  66. package/src/plugins/cloud-inventory/drivers/mongodb-atlas-driver.js +8 -1
  67. package/src/plugins/cloud-inventory/drivers/vultr-driver.js +8 -1
  68. package/src/plugins/cloud-inventory/index.js +29 -8
  69. package/src/plugins/cloud-inventory/registry.js +64 -42
  70. package/src/plugins/cloud-inventory.plugin.js +240 -138
  71. package/src/plugins/concerns/plugin-dependencies.js +54 -0
  72. package/src/plugins/concerns/resource-names.js +100 -0
  73. package/src/plugins/consumers/index.js +10 -2
  74. package/src/plugins/consumers/sqs-consumer.js +12 -2
  75. package/src/plugins/cookie-farm-suite.plugin.js +278 -0
  76. package/src/plugins/cookie-farm.errors.js +73 -0
  77. package/src/plugins/cookie-farm.plugin.js +869 -0
  78. package/src/plugins/costs.plugin.js +7 -1
  79. package/src/plugins/eventual-consistency/analytics.js +94 -19
  80. package/src/plugins/eventual-consistency/config.js +15 -7
  81. package/src/plugins/eventual-consistency/consolidation.js +29 -11
  82. package/src/plugins/eventual-consistency/garbage-collection.js +3 -1
  83. package/src/plugins/eventual-consistency/helpers.js +39 -14
  84. package/src/plugins/eventual-consistency/install.js +21 -2
  85. package/src/plugins/eventual-consistency/utils.js +32 -10
  86. package/src/plugins/fulltext.plugin.js +38 -11
  87. package/src/plugins/geo.plugin.js +61 -9
  88. package/src/plugins/identity/concerns/config.js +61 -0
  89. package/src/plugins/identity/concerns/mfa-manager.js +15 -2
  90. package/src/plugins/identity/concerns/rate-limit.js +124 -0
  91. package/src/plugins/identity/concerns/resource-schemas.js +9 -1
  92. package/src/plugins/identity/concerns/token-generator.js +29 -4
  93. package/src/plugins/identity/drivers/auth-driver.interface.js +76 -0
  94. package/src/plugins/identity/drivers/client-credentials-driver.js +127 -0
  95. package/src/plugins/identity/drivers/index.js +18 -0
  96. package/src/plugins/identity/drivers/password-driver.js +122 -0
  97. package/src/plugins/identity/email-service.js +17 -2
  98. package/src/plugins/identity/index.js +413 -69
  99. package/src/plugins/identity/oauth2-server.js +413 -30
  100. package/src/plugins/identity/oidc-discovery.js +16 -8
  101. package/src/plugins/identity/rsa-keys.js +115 -35
  102. package/src/plugins/identity/server.js +166 -45
  103. package/src/plugins/identity/session-manager.js +53 -7
  104. package/src/plugins/identity/ui/pages/mfa-verification.js +17 -15
  105. package/src/plugins/identity/ui/routes.js +363 -255
  106. package/src/plugins/importer/index.js +153 -20
  107. package/src/plugins/index.js +9 -2
  108. package/src/plugins/kubernetes-inventory/index.js +6 -0
  109. package/src/plugins/kubernetes-inventory/k8s-driver.js +867 -0
  110. package/src/plugins/kubernetes-inventory/resource-types.js +274 -0
  111. package/src/plugins/kubernetes-inventory.plugin.js +980 -0
  112. package/src/plugins/metrics.plugin.js +64 -16
  113. package/src/plugins/ml/base-model.class.js +25 -15
  114. package/src/plugins/ml/regression-model.class.js +1 -1
  115. package/src/plugins/ml.errors.js +57 -25
  116. package/src/plugins/ml.plugin.js +28 -4
  117. package/src/plugins/namespace.js +210 -0
  118. package/src/plugins/plugin.class.js +180 -8
  119. package/src/plugins/puppeteer/console-monitor.js +729 -0
  120. package/src/plugins/puppeteer/cookie-manager.js +492 -0
  121. package/src/plugins/puppeteer/network-monitor.js +816 -0
  122. package/src/plugins/puppeteer/performance-manager.js +746 -0
  123. package/src/plugins/puppeteer/proxy-manager.js +478 -0
  124. package/src/plugins/puppeteer/stealth-manager.js +556 -0
  125. package/src/plugins/puppeteer.errors.js +81 -0
  126. package/src/plugins/puppeteer.plugin.js +1327 -0
  127. package/src/plugins/queue-consumer.plugin.js +69 -14
  128. package/src/plugins/recon/behaviors/uptime-behavior.js +691 -0
  129. package/src/plugins/recon/concerns/command-runner.js +148 -0
  130. package/src/plugins/recon/concerns/diff-detector.js +372 -0
  131. package/src/plugins/recon/concerns/fingerprint-builder.js +307 -0
  132. package/src/plugins/recon/concerns/process-manager.js +338 -0
  133. package/src/plugins/recon/concerns/report-generator.js +478 -0
  134. package/src/plugins/recon/concerns/security-analyzer.js +571 -0
  135. package/src/plugins/recon/concerns/target-normalizer.js +68 -0
  136. package/src/plugins/recon/config/defaults.js +321 -0
  137. package/src/plugins/recon/config/resources.js +370 -0
  138. package/src/plugins/recon/index.js +778 -0
  139. package/src/plugins/recon/managers/dependency-manager.js +174 -0
  140. package/src/plugins/recon/managers/scheduler-manager.js +179 -0
  141. package/src/plugins/recon/managers/storage-manager.js +745 -0
  142. package/src/plugins/recon/managers/target-manager.js +274 -0
  143. package/src/plugins/recon/stages/asn-stage.js +314 -0
  144. package/src/plugins/recon/stages/certificate-stage.js +84 -0
  145. package/src/plugins/recon/stages/dns-stage.js +107 -0
  146. package/src/plugins/recon/stages/dnsdumpster-stage.js +362 -0
  147. package/src/plugins/recon/stages/fingerprint-stage.js +71 -0
  148. package/src/plugins/recon/stages/google-dorks-stage.js +440 -0
  149. package/src/plugins/recon/stages/http-stage.js +89 -0
  150. package/src/plugins/recon/stages/latency-stage.js +148 -0
  151. package/src/plugins/recon/stages/massdns-stage.js +302 -0
  152. package/src/plugins/recon/stages/osint-stage.js +1373 -0
  153. package/src/plugins/recon/stages/ports-stage.js +169 -0
  154. package/src/plugins/recon/stages/screenshot-stage.js +94 -0
  155. package/src/plugins/recon/stages/secrets-stage.js +514 -0
  156. package/src/plugins/recon/stages/subdomains-stage.js +295 -0
  157. package/src/plugins/recon/stages/tls-audit-stage.js +78 -0
  158. package/src/plugins/recon/stages/vulnerability-stage.js +78 -0
  159. package/src/plugins/recon/stages/web-discovery-stage.js +113 -0
  160. package/src/plugins/recon/stages/whois-stage.js +349 -0
  161. package/src/plugins/recon.plugin.js +75 -0
  162. package/src/plugins/recon.plugin.js.backup +2635 -0
  163. package/src/plugins/relation.errors.js +87 -14
  164. package/src/plugins/replicator.plugin.js +514 -137
  165. package/src/plugins/replicators/base-replicator.class.js +89 -1
  166. package/src/plugins/replicators/bigquery-replicator.class.js +66 -22
  167. package/src/plugins/replicators/dynamodb-replicator.class.js +22 -15
  168. package/src/plugins/replicators/mongodb-replicator.class.js +22 -15
  169. package/src/plugins/replicators/mysql-replicator.class.js +52 -17
  170. package/src/plugins/replicators/planetscale-replicator.class.js +30 -4
  171. package/src/plugins/replicators/postgres-replicator.class.js +62 -27
  172. package/src/plugins/replicators/s3db-replicator.class.js +25 -18
  173. package/src/plugins/replicators/schema-sync.helper.js +3 -3
  174. package/src/plugins/replicators/sqs-replicator.class.js +8 -2
  175. package/src/plugins/replicators/turso-replicator.class.js +23 -3
  176. package/src/plugins/replicators/webhook-replicator.class.js +42 -4
  177. package/src/plugins/s3-queue.plugin.js +464 -65
  178. package/src/plugins/scheduler.plugin.js +20 -6
  179. package/src/plugins/state-machine.plugin.js +40 -9
  180. package/src/plugins/tfstate/README.md +126 -126
  181. package/src/plugins/tfstate/base-driver.js +28 -4
  182. package/src/plugins/tfstate/errors.js +65 -10
  183. package/src/plugins/tfstate/filesystem-driver.js +52 -8
  184. package/src/plugins/tfstate/index.js +163 -90
  185. package/src/plugins/tfstate/s3-driver.js +64 -6
  186. package/src/plugins/ttl.plugin.js +72 -17
  187. package/src/plugins/vector/distances.js +18 -12
  188. package/src/plugins/vector/kmeans.js +26 -4
  189. package/src/resource.class.js +115 -19
  190. package/src/testing/factory.class.js +20 -3
  191. package/src/testing/seeder.class.js +7 -1
  192. package/src/clients/memory-client.md +0 -917
  193. package/src/plugins/cloud-inventory/drivers/mock-drivers.js +0 -449
@@ -0,0 +1,274 @@
1
+ /**
2
+ * Kubernetes Resource Type Definitions
3
+ *
4
+ * Comprehensive list of all standard Kubernetes resource types across different API groups.
5
+ * Used for discovery and inventory collection.
6
+ */
7
+
8
+ /**
9
+ * Core API Group (v1) - Fundamental Kubernetes resources
10
+ */
11
+ export const CORE_RESOURCE_TYPES = [
12
+ // Workload Resources
13
+ { group: '', version: 'v1', kind: 'Pod', plural: 'pods', namespaced: true, category: 'workload' },
14
+ { group: '', version: 'v1', kind: 'ReplicationController', plural: 'replicationcontrollers', namespaced: true, category: 'workload' },
15
+
16
+ // Service & Discovery
17
+ { group: '', version: 'v1', kind: 'Service', plural: 'services', namespaced: true, category: 'networking' },
18
+ { group: '', version: 'v1', kind: 'Endpoints', plural: 'endpoints', namespaced: true, category: 'networking' },
19
+ { group: '', version: 'v1', kind: 'EndpointSlice', plural: 'endpointslices', namespaced: true, category: 'networking' },
20
+
21
+ // Configuration
22
+ { group: '', version: 'v1', kind: 'ConfigMap', plural: 'configmaps', namespaced: true, category: 'config' },
23
+ { group: '', version: 'v1', kind: 'Secret', plural: 'secrets', namespaced: true, category: 'config', sensitive: true },
24
+
25
+ // Storage
26
+ { group: '', version: 'v1', kind: 'PersistentVolume', plural: 'persistentvolumes', namespaced: false, category: 'storage' },
27
+ { group: '', version: 'v1', kind: 'PersistentVolumeClaim', plural: 'persistentvolumeclaims', namespaced: true, category: 'storage' },
28
+
29
+ // Cluster
30
+ { group: '', version: 'v1', kind: 'Namespace', plural: 'namespaces', namespaced: false, category: 'cluster' },
31
+ { group: '', version: 'v1', kind: 'Node', plural: 'nodes', namespaced: false, category: 'cluster' },
32
+
33
+ // Service Accounts & Auth
34
+ { group: '', version: 'v1', kind: 'ServiceAccount', plural: 'serviceaccounts', namespaced: true, category: 'auth' },
35
+
36
+ // Resource Quotas & Limits
37
+ { group: '', version: 'v1', kind: 'ResourceQuota', plural: 'resourcequotas', namespaced: true, category: 'policy' },
38
+ { group: '', version: 'v1', kind: 'LimitRange', plural: 'limitranges', namespaced: true, category: 'policy' },
39
+
40
+ // Events (usually ignored due to volume)
41
+ { group: '', version: 'v1', kind: 'Event', plural: 'events', namespaced: true, category: 'events', highVolume: true },
42
+ ];
43
+
44
+ /**
45
+ * Apps API Group (apps/v1) - Application workload resources
46
+ */
47
+ export const APPS_RESOURCE_TYPES = [
48
+ { group: 'apps', version: 'v1', kind: 'Deployment', plural: 'deployments', namespaced: true, category: 'workload' },
49
+ { group: 'apps', version: 'v1', kind: 'StatefulSet', plural: 'statefulsets', namespaced: true, category: 'workload' },
50
+ { group: 'apps', version: 'v1', kind: 'DaemonSet', plural: 'daemonsets', namespaced: true, category: 'workload' },
51
+ { group: 'apps', version: 'v1', kind: 'ReplicaSet', plural: 'replicasets', namespaced: true, category: 'workload' },
52
+ { group: 'apps', version: 'v1', kind: 'ControllerRevision', plural: 'controllerrevisions', namespaced: true, category: 'workload' },
53
+ ];
54
+
55
+ /**
56
+ * Batch API Group (batch/v1) - Job and scheduled workload resources
57
+ */
58
+ export const BATCH_RESOURCE_TYPES = [
59
+ { group: 'batch', version: 'v1', kind: 'Job', plural: 'jobs', namespaced: true, category: 'workload' },
60
+ { group: 'batch', version: 'v1', kind: 'CronJob', plural: 'cronjobs', namespaced: true, category: 'workload' },
61
+ ];
62
+
63
+ /**
64
+ * Networking API Group (networking.k8s.io/v1) - Network policies and ingress
65
+ */
66
+ export const NETWORKING_RESOURCE_TYPES = [
67
+ { group: 'networking.k8s.io', version: 'v1', kind: 'Ingress', plural: 'ingresses', namespaced: true, category: 'networking' },
68
+ { group: 'networking.k8s.io', version: 'v1', kind: 'IngressClass', plural: 'ingressclasses', namespaced: false, category: 'networking' },
69
+ { group: 'networking.k8s.io', version: 'v1', kind: 'NetworkPolicy', plural: 'networkpolicies', namespaced: true, category: 'networking' },
70
+ ];
71
+
72
+ /**
73
+ * Storage API Group (storage.k8s.io/v1) - Storage classes and volume management
74
+ */
75
+ export const STORAGE_RESOURCE_TYPES = [
76
+ { group: 'storage.k8s.io', version: 'v1', kind: 'StorageClass', plural: 'storageclasses', namespaced: false, category: 'storage' },
77
+ { group: 'storage.k8s.io', version: 'v1', kind: 'VolumeAttachment', plural: 'volumeattachments', namespaced: false, category: 'storage' },
78
+ { group: 'storage.k8s.io', version: 'v1', kind: 'CSIDriver', plural: 'csidrivers', namespaced: false, category: 'storage' },
79
+ { group: 'storage.k8s.io', version: 'v1', kind: 'CSINode', plural: 'csinodes', namespaced: false, category: 'storage' },
80
+ { group: 'storage.k8s.io', version: 'v1', kind: 'CSIStorageCapacity', plural: 'csistoragecapacities', namespaced: true, category: 'storage' },
81
+ ];
82
+
83
+ /**
84
+ * RBAC API Group (rbac.authorization.k8s.io/v1) - Role-based access control
85
+ */
86
+ export const RBAC_RESOURCE_TYPES = [
87
+ { group: 'rbac.authorization.k8s.io', version: 'v1', kind: 'Role', plural: 'roles', namespaced: true, category: 'auth' },
88
+ { group: 'rbac.authorization.k8s.io', version: 'v1', kind: 'RoleBinding', plural: 'rolebindings', namespaced: true, category: 'auth' },
89
+ { group: 'rbac.authorization.k8s.io', version: 'v1', kind: 'ClusterRole', plural: 'clusterroles', namespaced: false, category: 'auth' },
90
+ { group: 'rbac.authorization.k8s.io', version: 'v1', kind: 'ClusterRoleBinding', plural: 'clusterrolebindings', namespaced: false, category: 'auth' },
91
+ ];
92
+
93
+ /**
94
+ * Policy API Group (policy/v1) - Pod disruption budgets and security policies
95
+ */
96
+ export const POLICY_RESOURCE_TYPES = [
97
+ { group: 'policy', version: 'v1', kind: 'PodDisruptionBudget', plural: 'poddisruptionbudgets', namespaced: true, category: 'policy' },
98
+ ];
99
+
100
+ /**
101
+ * Autoscaling API Group (autoscaling/v2) - Horizontal pod autoscaling
102
+ */
103
+ export const AUTOSCALING_RESOURCE_TYPES = [
104
+ { group: 'autoscaling', version: 'v1', kind: 'HorizontalPodAutoscaler', plural: 'horizontalpodautoscalers', namespaced: true, category: 'autoscaling' },
105
+ { group: 'autoscaling', version: 'v2', kind: 'HorizontalPodAutoscaler', plural: 'horizontalpodautoscalers', namespaced: true, category: 'autoscaling' },
106
+ ];
107
+
108
+ /**
109
+ * Scheduling API Group (scheduling.k8s.io/v1) - Priority classes
110
+ */
111
+ export const SCHEDULING_RESOURCE_TYPES = [
112
+ { group: 'scheduling.k8s.io', version: 'v1', kind: 'PriorityClass', plural: 'priorityclasses', namespaced: false, category: 'scheduling' },
113
+ ];
114
+
115
+ /**
116
+ * Node API Group (node.k8s.io/v1) - Runtime classes
117
+ */
118
+ export const NODE_RESOURCE_TYPES = [
119
+ { group: 'node.k8s.io', version: 'v1', kind: 'RuntimeClass', plural: 'runtimeclasses', namespaced: false, category: 'cluster' },
120
+ ];
121
+
122
+ /**
123
+ * Certificates API Group (certificates.k8s.io/v1) - Certificate signing requests
124
+ */
125
+ export const CERTIFICATES_RESOURCE_TYPES = [
126
+ { group: 'certificates.k8s.io', version: 'v1', kind: 'CertificateSigningRequest', plural: 'certificatesigningrequests', namespaced: false, category: 'auth' },
127
+ ];
128
+
129
+ /**
130
+ * Coordination API Group (coordination.k8s.io/v1) - Leader election leases
131
+ */
132
+ export const COORDINATION_RESOURCE_TYPES = [
133
+ { group: 'coordination.k8s.io', version: 'v1', kind: 'Lease', plural: 'leases', namespaced: true, category: 'cluster', highVolume: true },
134
+ ];
135
+
136
+ /**
137
+ * Discovery API Group (discovery.k8s.io/v1) - Endpoint slices
138
+ */
139
+ export const DISCOVERY_RESOURCE_TYPES = [
140
+ { group: 'discovery.k8s.io', version: 'v1', kind: 'EndpointSlice', plural: 'endpointslices', namespaced: true, category: 'networking' },
141
+ ];
142
+
143
+ /**
144
+ * Events API Group (events.k8s.io/v1) - Enhanced events
145
+ */
146
+ export const EVENTS_RESOURCE_TYPES = [
147
+ { group: 'events.k8s.io', version: 'v1', kind: 'Event', plural: 'events', namespaced: true, category: 'events', highVolume: true },
148
+ ];
149
+
150
+ /**
151
+ * Admission Registration API Group (admissionregistration.k8s.io/v1)
152
+ */
153
+ export const ADMISSION_RESOURCE_TYPES = [
154
+ { group: 'admissionregistration.k8s.io', version: 'v1', kind: 'MutatingWebhookConfiguration', plural: 'mutatingwebhookconfigurations', namespaced: false, category: 'cluster' },
155
+ { group: 'admissionregistration.k8s.io', version: 'v1', kind: 'ValidatingWebhookConfiguration', plural: 'validatingwebhookconfigurations', namespaced: false, category: 'cluster' },
156
+ ];
157
+
158
+ /**
159
+ * API Registration API Group (apiregistration.k8s.io/v1)
160
+ */
161
+ export const API_REGISTRATION_RESOURCE_TYPES = [
162
+ { group: 'apiregistration.k8s.io', version: 'v1', kind: 'APIService', plural: 'apiservices', namespaced: false, category: 'cluster' },
163
+ ];
164
+
165
+ /**
166
+ * Flow Control API Group (flowcontrol.apiserver.k8s.io/v1)
167
+ */
168
+ export const FLOWCONTROL_RESOURCE_TYPES = [
169
+ { group: 'flowcontrol.apiserver.k8s.io', version: 'v1', kind: 'FlowSchema', plural: 'flowschemas', namespaced: false, category: 'cluster' },
170
+ { group: 'flowcontrol.apiserver.k8s.io', version: 'v1', kind: 'PriorityLevelConfiguration', plural: 'prioritylevelconfigurations', namespaced: false, category: 'cluster' },
171
+ ];
172
+
173
+ /**
174
+ * All standard resource types combined
175
+ */
176
+ export const ALL_STANDARD_RESOURCE_TYPES = [
177
+ ...CORE_RESOURCE_TYPES,
178
+ ...APPS_RESOURCE_TYPES,
179
+ ...BATCH_RESOURCE_TYPES,
180
+ ...NETWORKING_RESOURCE_TYPES,
181
+ ...STORAGE_RESOURCE_TYPES,
182
+ ...RBAC_RESOURCE_TYPES,
183
+ ...POLICY_RESOURCE_TYPES,
184
+ ...AUTOSCALING_RESOURCE_TYPES,
185
+ ...SCHEDULING_RESOURCE_TYPES,
186
+ ...NODE_RESOURCE_TYPES,
187
+ ...CERTIFICATES_RESOURCE_TYPES,
188
+ ...COORDINATION_RESOURCE_TYPES,
189
+ ...DISCOVERY_RESOURCE_TYPES,
190
+ ...EVENTS_RESOURCE_TYPES,
191
+ ...ADMISSION_RESOURCE_TYPES,
192
+ ...API_REGISTRATION_RESOURCE_TYPES,
193
+ ...FLOWCONTROL_RESOURCE_TYPES,
194
+ ];
195
+
196
+ /**
197
+ * Resource types grouped by category
198
+ */
199
+ export const RESOURCE_TYPES_BY_CATEGORY = {
200
+ workload: ALL_STANDARD_RESOURCE_TYPES.filter(rt => rt.category === 'workload'),
201
+ networking: ALL_STANDARD_RESOURCE_TYPES.filter(rt => rt.category === 'networking'),
202
+ storage: ALL_STANDARD_RESOURCE_TYPES.filter(rt => rt.category === 'storage'),
203
+ config: ALL_STANDARD_RESOURCE_TYPES.filter(rt => rt.category === 'config'),
204
+ auth: ALL_STANDARD_RESOURCE_TYPES.filter(rt => rt.category === 'auth'),
205
+ policy: ALL_STANDARD_RESOURCE_TYPES.filter(rt => rt.category === 'policy'),
206
+ cluster: ALL_STANDARD_RESOURCE_TYPES.filter(rt => rt.category === 'cluster'),
207
+ autoscaling: ALL_STANDARD_RESOURCE_TYPES.filter(rt => rt.category === 'autoscaling'),
208
+ scheduling: ALL_STANDARD_RESOURCE_TYPES.filter(rt => rt.category === 'scheduling'),
209
+ events: ALL_STANDARD_RESOURCE_TYPES.filter(rt => rt.category === 'events'),
210
+ };
211
+
212
+ /**
213
+ * Helper function to format resource type as identifier
214
+ * @param {Object} resourceType - Resource type definition
215
+ * @returns {string} Formatted identifier (e.g., "apps.v1.Deployment")
216
+ */
217
+ export function formatResourceTypeId(resourceType) {
218
+ const group = resourceType.group || 'core';
219
+ return `${group}.${resourceType.version}.${resourceType.kind}`;
220
+ }
221
+
222
+ /**
223
+ * Helper function to parse resource type identifier
224
+ * @param {string} id - Resource type ID (e.g., "apps.v1.Deployment")
225
+ * @returns {Object} Parsed components { group, version, kind }
226
+ */
227
+ export function parseResourceTypeId(id) {
228
+ const parts = id.split('.');
229
+ if (parts.length !== 3) {
230
+ throw new Error(`Invalid resource type ID: ${id}. Expected format: group.version.Kind`);
231
+ }
232
+
233
+ const [group, version, kind] = parts;
234
+ return {
235
+ group: group === 'core' ? '' : group,
236
+ version,
237
+ kind,
238
+ };
239
+ }
240
+
241
+ /**
242
+ * Helper function to find resource type by identifier
243
+ * @param {string} id - Resource type ID
244
+ * @returns {Object|null} Resource type definition or null
245
+ */
246
+ export function findResourceType(id) {
247
+ const { group, version, kind } = parseResourceTypeId(id);
248
+ return ALL_STANDARD_RESOURCE_TYPES.find(
249
+ rt => rt.group === group && rt.version === version && rt.kind === kind
250
+ ) || null;
251
+ }
252
+
253
+ /**
254
+ * Common resource type filters
255
+ */
256
+ export const COMMON_FILTERS = {
257
+ // Exclude high-volume resources that change frequently
258
+ excludeHighVolume: (rt) => !rt.highVolume,
259
+
260
+ // Exclude sensitive resources (secrets)
261
+ excludeSensitive: (rt) => !rt.sensitive,
262
+
263
+ // Only namespaced resources
264
+ namespacedOnly: (rt) => rt.namespaced,
265
+
266
+ // Only cluster-scoped resources
267
+ clusterScopedOnly: (rt) => !rt.namespaced,
268
+
269
+ // Only workload resources
270
+ workloadOnly: (rt) => rt.category === 'workload',
271
+
272
+ // Exclude events and leases (usually too many)
273
+ excludeNoisy: (rt) => !['Event', 'Lease'].includes(rt.kind),
274
+ };