@a5c-ai/kradle 5.0.1-staging.3abdf9534c25

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 (295) hide show
  1. package/Dockerfile +31 -0
  2. package/README.md +187 -0
  3. package/bin/kradle-demo.mjs +23 -0
  4. package/bin/kradle-server.mjs +14 -0
  5. package/dist/kradle-controller-ui.json +3482 -0
  6. package/dist/kradle-lifecycle.json +201 -0
  7. package/dist/kradle-runtime-snapshot.json +3125 -0
  8. package/dist/kradle-summary.json +724 -0
  9. package/docs/README.md +61 -0
  10. package/docs/agents/README.md +83 -0
  11. package/docs/agents/acceptance-test-matrix.md +193 -0
  12. package/docs/agents/agent-mux-adapter-contract.md +167 -0
  13. package/docs/agents/agent-mux-source-map.md +310 -0
  14. package/docs/agents/agent-run-memory-import-spec.md +256 -0
  15. package/docs/agents/agent-stack-management-spec.md +421 -0
  16. package/docs/agents/api-contract-spec.md +309 -0
  17. package/docs/agents/artifacts-writeback-spec.md +145 -0
  18. package/docs/agents/chart-packaging-spec.md +128 -0
  19. package/docs/agents/ci-orchestration-spec.md +140 -0
  20. package/docs/agents/context-assembly-spec.md +219 -0
  21. package/docs/agents/controller-reconciliation-spec.md +255 -0
  22. package/docs/agents/crd-schema-spec.md +315 -0
  23. package/docs/agents/decision-log-open-questions.md +169 -0
  24. package/docs/agents/developer-implementation-checklist.md +329 -0
  25. package/docs/agents/dispatching-design.md +262 -0
  26. package/docs/agents/gaps-agent-mux-to-kradle-crds.md +298 -0
  27. package/docs/agents/glossary.md +66 -0
  28. package/docs/agents/implementation-blueprint.md +324 -0
  29. package/docs/agents/implementation-rollout-slices.md +251 -0
  30. package/docs/agents/memory-context-integration-spec.md +194 -0
  31. package/docs/agents/memory-ontology-schema-spec.md +253 -0
  32. package/docs/agents/memory-operations-runbook.md +121 -0
  33. package/docs/agents/mvp-vertical-slice-spec.md +146 -0
  34. package/docs/agents/observability-audit-spec.md +265 -0
  35. package/docs/agents/operator-runbook.md +174 -0
  36. package/docs/agents/org-memory-api-payload-examples.md +333 -0
  37. package/docs/agents/org-memory-controller-sequence-spec.md +181 -0
  38. package/docs/agents/org-memory-e2e-fixture-plan.md +161 -0
  39. package/docs/agents/org-memory-ui-implementation-map.md +114 -0
  40. package/docs/agents/org-memory-vertical-slice-spec.md +168 -0
  41. package/docs/agents/org-resource-model-delta-spec.md +111 -0
  42. package/docs/agents/org-route-resource-model-spec.md +183 -0
  43. package/docs/agents/org-scoping-namespace-spec.md +114 -0
  44. package/docs/agents/rbac-secrets-management-spec.md +406 -0
  45. package/docs/agents/repository-page-integration-spec.md +255 -0
  46. package/docs/agents/resource-contract-examples.md +808 -0
  47. package/docs/agents/resource-relationship-map.md +190 -0
  48. package/docs/agents/security-threat-model.md +188 -0
  49. package/docs/agents/shared-memory-company-brain-spec.md +358 -0
  50. package/docs/agents/storage-migration-spec.md +168 -0
  51. package/docs/agents/subagent-orchestration-spec.md +152 -0
  52. package/docs/agents/system-overview.md +88 -0
  53. package/docs/agents/tools-mcp-skills-spec.md +189 -0
  54. package/docs/agents/traceability-matrix.md +79 -0
  55. package/docs/agents/ui-flow-spec.md +211 -0
  56. package/docs/agents/ui-ux-system-spec.md +426 -0
  57. package/docs/agents/workspace-lifecycle-spec.md +166 -0
  58. package/docs/architecture-spec.md +78 -0
  59. package/docs/architecture-v2.md +2759 -0
  60. package/docs/components/control-plane.md +78 -0
  61. package/docs/components/data-plane.md +69 -0
  62. package/docs/components/hooks-events.md +67 -0
  63. package/docs/components/identity-rbac-policy.md +73 -0
  64. package/docs/components/kubevela-oam.md +70 -0
  65. package/docs/components/operations-publishing.md +81 -0
  66. package/docs/components/runners-ci.md +66 -0
  67. package/docs/components/web-ui.md +94 -0
  68. package/docs/crd-behaviors-and-relationships.md +3926 -0
  69. package/docs/external/README.md +47 -0
  70. package/docs/external/bidirectional-sync-design.md +134 -0
  71. package/docs/external/cicd-interface.md +64 -0
  72. package/docs/external/external-backend-controllers.md +170 -0
  73. package/docs/external/external-backend-crds.md +234 -0
  74. package/docs/external/external-backend-ui-spec.md +151 -0
  75. package/docs/external/external-backend-ux-flows.md +115 -0
  76. package/docs/external/external-object-mapping.md +125 -0
  77. package/docs/external/git-forge-interface.md +68 -0
  78. package/docs/external/github-integration-design.md +151 -0
  79. package/docs/external/issue-tracking-interface.md +66 -0
  80. package/docs/external/provider-capability-manifests.md +204 -0
  81. package/docs/external/provider-catalog.md +139 -0
  82. package/docs/external/provider-rollout-testing.md +78 -0
  83. package/docs/external/research-results.md +48 -0
  84. package/docs/external/security-auth-permissions.md +81 -0
  85. package/docs/external/sync-state-machines.md +108 -0
  86. package/docs/external/unified-external-backend-model.md +107 -0
  87. package/docs/external/user-facing-changes.md +67 -0
  88. package/docs/gaps.md +161 -0
  89. package/docs/install.md +94 -0
  90. package/docs/integration-and-design-decisions.md +1530 -0
  91. package/docs/kradle-design.md +334 -0
  92. package/docs/local-minikube.md +55 -0
  93. package/docs/ontology/README.md +32 -0
  94. package/docs/ontology/bounded-contexts.md +29 -0
  95. package/docs/ontology/events-and-hooks.md +32 -0
  96. package/docs/ontology/oam-kubevela.md +32 -0
  97. package/docs/ontology/operations-and-release.md +25 -0
  98. package/docs/ontology/personas-and-actors.md +32 -0
  99. package/docs/ontology/policies-and-invariants.md +33 -0
  100. package/docs/ontology/problem-space.md +30 -0
  101. package/docs/ontology/resource-contracts.md +40 -0
  102. package/docs/ontology/resource-taxonomy.md +42 -0
  103. package/docs/ontology/runners-and-ci.md +29 -0
  104. package/docs/ontology/solution-space.md +24 -0
  105. package/docs/ontology/storage-and-data-boundaries.md +29 -0
  106. package/docs/ontology/validation-matrix.md +24 -0
  107. package/docs/ontology/web-ui-excellent-flows.md +32 -0
  108. package/docs/ontology/workflows.md +39 -0
  109. package/docs/ontology/world.md +35 -0
  110. package/docs/openapi.yaml +1291 -0
  111. package/docs/product-requirements.md +62 -0
  112. package/docs/requirements-v2.md +235 -0
  113. package/docs/roadmap-mvp.md +87 -0
  114. package/docs/sdk-api-reference.md +1108 -0
  115. package/docs/system-requirements.md +90 -0
  116. package/docs/system-spec-v2.md +1230 -0
  117. package/docs/tests/README.md +53 -0
  118. package/docs/tests/agent-qa-plan.md +63 -0
  119. package/docs/tests/browser-ui-tests.md +62 -0
  120. package/docs/tests/ci-quality-gates.md +48 -0
  121. package/docs/tests/coverage-model.md +64 -0
  122. package/docs/tests/e2e-scenario-tests.md +53 -0
  123. package/docs/tests/fixtures-test-data.md +63 -0
  124. package/docs/tests/observability-reliability-tests.md +54 -0
  125. package/docs/tests/product-test-matrix.md +145 -0
  126. package/docs/tests/qa-adoption-roadmap.md +130 -0
  127. package/docs/tests/qa-automation-plan.md +101 -0
  128. package/docs/tests/security-compliance-tests.md +57 -0
  129. package/docs/tests/test-framework-tools.md +88 -0
  130. package/docs/tests/test-suite-layout.md +121 -0
  131. package/docs/tests/unit-integration-tests.md +48 -0
  132. package/docs/todo-kyverno +714 -0
  133. package/docs/todos.md +4 -0
  134. package/docs/user-stories.md +78 -0
  135. package/docs/web-console-spec.md +533 -0
  136. package/examples/minikube-demo.yaml +190 -0
  137. package/examples/oam-application.yaml +23 -0
  138. package/examples/policy-kyverno-pr-title.yaml +18 -0
  139. package/package.json +66 -0
  140. package/scripts/build.mjs +29 -0
  141. package/scripts/setup-minikube.mjs +65 -0
  142. package/scripts/smoke.mjs +37 -0
  143. package/scripts/validate-doc-coverage.mjs +152 -0
  144. package/scripts/validate-package.mjs +95 -0
  145. package/scripts/validate-ui.mjs +305 -0
  146. package/src/agent-adapter-controller.js +169 -0
  147. package/src/agent-approval-controller.js +170 -0
  148. package/src/agent-context-bundles.js +242 -0
  149. package/src/agent-dispatch-controller.js +549 -0
  150. package/src/agent-gateway-config-controller.js +147 -0
  151. package/src/agent-identity-migration.js +115 -0
  152. package/src/agent-memory-controller.js +357 -0
  153. package/src/agent-memory-import.js +327 -0
  154. package/src/agent-memory-query.js +292 -0
  155. package/src/agent-memory-repository-source-controller.js +255 -0
  156. package/src/agent-mux-client.js +589 -0
  157. package/src/agent-permission-review.js +250 -0
  158. package/src/agent-persona-controller.js +135 -0
  159. package/src/agent-project-controller.js +117 -0
  160. package/src/agent-prompt-composition.js +55 -0
  161. package/src/agent-provider-config-controller.js +151 -0
  162. package/src/agent-secret-config-grant-controller.js +282 -0
  163. package/src/agent-session-transcript-controller.js +189 -0
  164. package/src/agent-stack-controller.js +421 -0
  165. package/src/agent-subagent-controller.js +160 -0
  166. package/src/agent-transport-binding-controller.js +121 -0
  167. package/src/agent-trigger-controller.js +387 -0
  168. package/src/agent-workspace-controller.js +702 -0
  169. package/src/agent-writeback-controller.js +302 -0
  170. package/src/api-controller.js +621 -0
  171. package/src/argocd-gitops.js +43 -0
  172. package/src/artifact-registry-controller.js +542 -0
  173. package/src/assistant-runtime.js +284 -0
  174. package/src/async-controller.js +207 -0
  175. package/src/audit-controller.js +191 -0
  176. package/src/auth.js +310 -0
  177. package/src/component-catalog.js +41 -0
  178. package/src/control-plane.js +136 -0
  179. package/src/controller-client.js +112 -0
  180. package/src/controller-ui.js +620 -0
  181. package/src/data-plane.js +179 -0
  182. package/src/event-bus.js +397 -0
  183. package/src/external/conflict-controller.js +225 -0
  184. package/src/external/github/auth.js +96 -0
  185. package/src/external/github/cicd.js +180 -0
  186. package/src/external/github/git-forge.js +240 -0
  187. package/src/external/github/index.js +144 -0
  188. package/src/external/github/issue-tracking.js +163 -0
  189. package/src/external/provider-adapter.js +161 -0
  190. package/src/external/provider-resource-factory.js +221 -0
  191. package/src/external/sync-controller.js +235 -0
  192. package/src/external/webhook-controller.js +144 -0
  193. package/src/external/write-controller.js +283 -0
  194. package/src/gitea-backend.js +131 -0
  195. package/src/gitea-service.js +173 -0
  196. package/src/handoff.js +98 -0
  197. package/src/health-probes.js +134 -0
  198. package/src/hooks-events.js +63 -0
  199. package/src/hooks-lifecycle.js +117 -0
  200. package/src/http-server.js +409 -0
  201. package/src/identity-policy.js +86 -0
  202. package/src/index.js +71 -0
  203. package/src/jitsi-agent-bridge.js +141 -0
  204. package/src/jitsi-meeting-controller.js +291 -0
  205. package/src/jitsi-sync-controller.js +198 -0
  206. package/src/kradle-inference-service-controller.js +246 -0
  207. package/src/kubernetes-controller-async.js +531 -0
  208. package/src/kubernetes-controller.js +904 -0
  209. package/src/kubernetes-resource-gateway.js +48 -0
  210. package/src/model-route-controller.js +364 -0
  211. package/src/notification-controller.js +178 -0
  212. package/src/operations.js +112 -0
  213. package/src/org-scoping.js +5 -0
  214. package/src/resource-model.js +282 -0
  215. package/src/runner-controller.js +272 -0
  216. package/src/runners-ci.js +48 -0
  217. package/src/runtime.js +196 -0
  218. package/src/snapshot-cache.js +157 -0
  219. package/src/virtual-model-controller.js +538 -0
  220. package/src/virtual-model-hook-bridge.js +200 -0
  221. package/src/web-ui.js +40 -0
  222. package/tests/agent-adapter-controller.test.js +361 -0
  223. package/tests/agent-approval-controller.test.js +173 -0
  224. package/tests/agent-context-bundles.test.js +278 -0
  225. package/tests/agent-dispatch-controller.test.js +679 -0
  226. package/tests/agent-gateway-config-controller.test.js +386 -0
  227. package/tests/agent-identity-migration.test.js +87 -0
  228. package/tests/agent-memory-controller.test.js +461 -0
  229. package/tests/agent-memory-import-snapshot.test.js +477 -0
  230. package/tests/agent-memory-query.test.js +404 -0
  231. package/tests/agent-memory-repository-source.test.js +514 -0
  232. package/tests/agent-mux-client.test.js +389 -0
  233. package/tests/agent-mux-integration.test.js +971 -0
  234. package/tests/agent-permission-review-v2.test.js +317 -0
  235. package/tests/agent-permission-review.test.js +209 -0
  236. package/tests/agent-persona-controller.test.js +127 -0
  237. package/tests/agent-project-controller.test.js +302 -0
  238. package/tests/agent-prompt-composition.test.js +76 -0
  239. package/tests/agent-provider-config-controller.test.js +376 -0
  240. package/tests/agent-resources.test.js +303 -0
  241. package/tests/agent-secret-config-grant.test.js +231 -0
  242. package/tests/agent-session-transcript-controller.test.js +499 -0
  243. package/tests/agent-stack-controller.test.js +283 -0
  244. package/tests/agent-subagent-controller.test.js +201 -0
  245. package/tests/agent-transport-binding-controller.test.js +294 -0
  246. package/tests/agent-trigger-controller.test.js +271 -0
  247. package/tests/agent-trigger-routes.test.js +190 -0
  248. package/tests/agent-trigger-sources.test.js +245 -0
  249. package/tests/agent-workspace-controller.test.js +181 -0
  250. package/tests/agent-writeback.test.js +292 -0
  251. package/tests/approval-persistence.test.js +171 -0
  252. package/tests/artifact-registry.test.js +511 -0
  253. package/tests/assistant-runtime.test.js +506 -0
  254. package/tests/async-controller.test.js +252 -0
  255. package/tests/audit-controller.test.js +227 -0
  256. package/tests/codespace-controller.test.js +318 -0
  257. package/tests/controller-client.test.js +133 -0
  258. package/tests/deployment.test.js +527 -0
  259. package/tests/e2e/lifecycle.test.js +120 -0
  260. package/tests/event-bus-integration.test.js +355 -0
  261. package/tests/external-github-forge.test.js +560 -0
  262. package/tests/external-github-issues-cicd.test.js +520 -0
  263. package/tests/external-integration.test.js +470 -0
  264. package/tests/external-persistence.test.js +415 -0
  265. package/tests/external-provider-adapter.test.js +365 -0
  266. package/tests/external-resource-model.test.js +223 -0
  267. package/tests/external-webhook-sync.test.js +287 -0
  268. package/tests/external-write-conflict.test.js +353 -0
  269. package/tests/gitea-service.test.js +253 -0
  270. package/tests/health-check-real.test.js +165 -0
  271. package/tests/health-probes.test.js +90 -0
  272. package/tests/hooks-lifecycle.test.js +364 -0
  273. package/tests/integration/full-flow.test.js +266 -0
  274. package/tests/jitsi-agent-bridge.test.js +119 -0
  275. package/tests/jitsi-helm-integration.test.js +77 -0
  276. package/tests/jitsi-meeting-controller.test.js +170 -0
  277. package/tests/jitsi-resource-model.test.js +73 -0
  278. package/tests/jitsi-sync-controller.test.js +112 -0
  279. package/tests/kradle-inference-service.test.js +689 -0
  280. package/tests/kradle.test.js +779 -0
  281. package/tests/memory-search-wiring.test.js +270 -0
  282. package/tests/model-route-controller.test.js +733 -0
  283. package/tests/notification-controller.test.js +196 -0
  284. package/tests/notification-integration.test.js +179 -0
  285. package/tests/org-scoping.test.js +687 -0
  286. package/tests/runner-controller.test.js +327 -0
  287. package/tests/runner-integration.test.js +231 -0
  288. package/tests/session-cookie-hmac.test.js +151 -0
  289. package/tests/snapshot-performance.test.js +315 -0
  290. package/tests/sse-events.test.js +107 -0
  291. package/tests/virtual-model-controller.test.js +877 -0
  292. package/tests/virtual-model-hook-bridge.test.js +384 -0
  293. package/tests/webhook-trigger.test.js +198 -0
  294. package/tests/workspace-volumes.test.js +312 -0
  295. package/tests/writeback-persistence.test.js +207 -0
@@ -0,0 +1,3482 @@
1
+ {
2
+ "product": "Kradle",
3
+ "status": "degraded",
4
+ "namespace": "kradle-org-default",
5
+ "platformNamespace": "kradle-org-default",
6
+ "org": {
7
+ "name": "default",
8
+ "slug": "default",
9
+ "displayName": "Default org",
10
+ "namespace": "kradle-org-default",
11
+ "platformNamespace": "kradle-org-default"
12
+ },
13
+ "orgs": [
14
+ {
15
+ "name": "default",
16
+ "slug": "default",
17
+ "displayName": "Default org",
18
+ "namespace": "kradle-org-default",
19
+ "platformNamespace": "kradle-org-default"
20
+ }
21
+ ],
22
+ "generatedAt": "2026-06-03T15:39:44.027Z",
23
+ "correlationId": null,
24
+ "controller": {
25
+ "mode": "kradle-workspace",
26
+ "endpoints": [
27
+ {
28
+ "method": "GET",
29
+ "path": "/healthz",
30
+ "purpose": "container and load-balancer health"
31
+ },
32
+ {
33
+ "method": "GET",
34
+ "path": "/api/controller?org=:org",
35
+ "purpose": "live Kradle org model"
36
+ },
37
+ {
38
+ "method": "GET",
39
+ "path": "/api/orgs/:org/resources",
40
+ "purpose": "org-scoped Kradle resource listing"
41
+ },
42
+ {
43
+ "method": "POST",
44
+ "path": "/api/orgs/:org/resources",
45
+ "purpose": "org-scoped Kradle resource apply flow"
46
+ },
47
+ {
48
+ "method": "GET",
49
+ "path": "/api/orgs/:org/resources/:kind/:name",
50
+ "purpose": "org-scoped Kradle resource detail"
51
+ },
52
+ {
53
+ "method": "DELETE",
54
+ "path": "/api/orgs/:org/resources/:kind/:name",
55
+ "purpose": "org-scoped Kradle resource delete flow"
56
+ },
57
+ {
58
+ "method": "GET",
59
+ "path": "/api/orgs/:org/repositories",
60
+ "purpose": "list org repositories through Kradle"
61
+ },
62
+ {
63
+ "method": "POST",
64
+ "path": "/api/orgs/:org/repositories",
65
+ "purpose": "create org repositories through Kradle"
66
+ },
67
+ {
68
+ "method": "GET",
69
+ "path": "/api/orgs/:org/repositories/:name",
70
+ "purpose": "get org repository details through Kradle"
71
+ },
72
+ {
73
+ "method": "DELETE",
74
+ "path": "/api/orgs/:org/repositories/:name",
75
+ "purpose": "delete org repositories through Kradle"
76
+ },
77
+ {
78
+ "method": "GET",
79
+ "path": "/api/orgs/:org/policies",
80
+ "purpose": "list Kradle policy profiles, templates, bindings, Kyverno health, and exception requests"
81
+ },
82
+ {
83
+ "method": "POST",
84
+ "path": "/api/orgs/:org/policies",
85
+ "purpose": "create org policy bindings in audit or enforce mode"
86
+ },
87
+ {
88
+ "method": "GET",
89
+ "path": "/api/orgs/:org/policy-reports",
90
+ "purpose": "list normalized Kyverno policy report results"
91
+ },
92
+ {
93
+ "method": "GET",
94
+ "path": "/api/orgs/:org/policy-exception-requests",
95
+ "purpose": "list pending and approved Kradle policy exception requests"
96
+ },
97
+ {
98
+ "method": "POST",
99
+ "path": "/api/orgs/:org/policy-exception-requests",
100
+ "purpose": "request a temporary policy exception through Kradle"
101
+ },
102
+ {
103
+ "method": "GET",
104
+ "path": "/api/watch/orgs/:org/*",
105
+ "purpose": "org-scoped Kradle live event stream bridged to browser updates"
106
+ },
107
+ {
108
+ "method": "POST",
109
+ "path": "/api/git-proxy",
110
+ "purpose": "repository streaming proxy when configured"
111
+ },
112
+ {
113
+ "method": "GET",
114
+ "path": "/api/orgs/:org/agents/stacks",
115
+ "purpose": "list agent stacks and capability status"
116
+ },
117
+ {
118
+ "method": "GET",
119
+ "path": "/api/orgs/:org/agents/runs",
120
+ "purpose": "list agent dispatch runs with queue and status"
121
+ },
122
+ {
123
+ "method": "GET",
124
+ "path": "/api/orgs/:org/agents/rules",
125
+ "purpose": "list trigger rules and delivery status"
126
+ },
127
+ {
128
+ "method": "GET",
129
+ "path": "/api/orgs/:org/agents/sessions",
130
+ "purpose": "list agent sessions with lifecycle state"
131
+ },
132
+ {
133
+ "method": "GET",
134
+ "path": "/api/orgs/:org/agents/workspaces",
135
+ "purpose": "list agent workspaces with lifecycle state"
136
+ },
137
+ {
138
+ "method": "GET",
139
+ "path": "/api/orgs/:org/agents/approvals",
140
+ "purpose": "list pending and resolved agent approvals"
141
+ },
142
+ {
143
+ "method": "GET",
144
+ "path": "/api/orgs/:org/agents/permissions/review",
145
+ "purpose": "explainable permission check for agent dispatch"
146
+ },
147
+ {
148
+ "method": "GET",
149
+ "path": "/api/orgs/:org/agents/adapters",
150
+ "purpose": "list agent adapters and transport bindings"
151
+ },
152
+ {
153
+ "method": "GET",
154
+ "path": "/api/orgs/:org/agents/providers",
155
+ "purpose": "list model provider configurations"
156
+ },
157
+ {
158
+ "method": "GET",
159
+ "path": "/api/orgs/:org/agents/projects",
160
+ "purpose": "list agent projects with board config"
161
+ },
162
+ {
163
+ "method": "POST",
164
+ "path": "/api/orgs/:org/agents/dispatch",
165
+ "purpose": "create manual agent dispatch run"
166
+ },
167
+ {
168
+ "method": "POST",
169
+ "path": "/api/orgs/:org/agents/approvals/:name/decide",
170
+ "purpose": "approve or deny a pending agent approval request"
171
+ },
172
+ {
173
+ "method": "POST",
174
+ "path": "/api/orgs/:org/agents/triggers/process",
175
+ "purpose": "evaluate an event against trigger rules and dispatch matching agents"
176
+ },
177
+ {
178
+ "method": "POST",
179
+ "path": "/api/orgs/:org/agents/workspaces",
180
+ "purpose": "provision a new agent workspace with worktree and runtime"
181
+ },
182
+ {
183
+ "method": "POST",
184
+ "path": "/api/orgs/:org/agents/workspaces/:name/archive",
185
+ "purpose": "archive an agent workspace and mark it for cleanup"
186
+ },
187
+ {
188
+ "method": "POST",
189
+ "path": "/api/orgs/:org/agents/workspaces/:name/link",
190
+ "purpose": "link a work item to an agent workspace"
191
+ },
192
+ {
193
+ "method": "POST",
194
+ "path": "/api/orgs/:org/agents/memory/query",
195
+ "purpose": "query Company Brain memory with graph and grep search"
196
+ },
197
+ {
198
+ "method": "POST",
199
+ "path": "/api/orgs/:org/agents/memory/imports",
200
+ "purpose": "create a memory import from a babysitter run"
201
+ },
202
+ {
203
+ "method": "GET",
204
+ "path": "/api/orgs/:org/agents/memory/snapshots",
205
+ "purpose": "list memory snapshots for an organization"
206
+ },
207
+ {
208
+ "method": "GET",
209
+ "path": "/api/orgs/:org/agents/memory/repositories",
210
+ "purpose": "list memory repositories for an organization"
211
+ }
212
+ ],
213
+ "architecture": {
214
+ "apiController": {
215
+ "role": "kradle-api-controller",
216
+ "scope": "HTTP route orchestration, request validation, API errors, and workflow affordances; never owns delivery reconciliation loops",
217
+ "owns": [
218
+ "/api/controller",
219
+ "/api/orgs/:org/resources",
220
+ "/api/orgs/:org/repositories",
221
+ "/api/watch/orgs/:org/*"
222
+ ],
223
+ "delegatesTo": [
224
+ "kradle-resource-gateway",
225
+ "repository-service"
226
+ ]
227
+ },
228
+ "resourceGateway": {
229
+ "role": "kradle-resource-gateway",
230
+ "scope": "Narrow application port translating API controller intent into Kradle resource-client calls",
231
+ "namespace": "kradle-org-default",
232
+ "delegatesTo": [
233
+ "kradle-resource-client"
234
+ ]
235
+ },
236
+ "resourceClient": {
237
+ "role": "kradle-resource-client",
238
+ "scope": "Kradle resource operations and live streams; no UI flow ownership",
239
+ "namespace": "kradle-org-default",
240
+ "owns": [
241
+ "Kradle resources",
242
+ "aggregated API resources"
243
+ ]
244
+ },
245
+ "deliveryReconciler": {
246
+ "role": "kradle-delivery-reconciler",
247
+ "scope": "Repository status projection, repository hosting intent, policy projection, and data-plane sync intent; never owns HTTP routes or browser flows",
248
+ "namespace": "kradle-org-default",
249
+ "delegatesTo": [
250
+ "kradle-resource-gateway",
251
+ "repository-service"
252
+ ]
253
+ },
254
+ "repositoryService": {
255
+ "role": "repository-service",
256
+ "scope": "repository streaming and SSH hosting, object storage, and search indexing",
257
+ "boundary": "repository service not configured"
258
+ }
259
+ },
260
+ "storage": {
261
+ "etcd": [
262
+ "Repository",
263
+ "BranchProtection",
264
+ "RefPolicy",
265
+ "RunnerPool",
266
+ "WebhookSubscription",
267
+ "Team",
268
+ "User",
269
+ "IdentityMapping",
270
+ "Invite",
271
+ "AuthProvider",
272
+ "AuthProvider"
273
+ ],
274
+ "postgres": []
275
+ },
276
+ "connection": {
277
+ "available": false,
278
+ "context": null,
279
+ "errors": [
280
+ "runtime snapshot supplied outside the Kradle workspace path"
281
+ ]
282
+ },
283
+ "apiService": null,
284
+ "commands": []
285
+ },
286
+ "metrics": {
287
+ "components": 8,
288
+ "resources": 11,
289
+ "events": 11,
290
+ "auditEntries": 0,
291
+ "users": 1,
292
+ "teams": 1,
293
+ "invites": 1,
294
+ "repositories": 1,
295
+ "pullRequests": 0,
296
+ "issues": 0,
297
+ "projects": 0,
298
+ "pipelines": 0,
299
+ "jobs": 0,
300
+ "runnerPools": 1,
301
+ "webhookDeliveries": 0,
302
+ "policyViolations": 0,
303
+ "policyBindings": 0,
304
+ "deployments": 0,
305
+ "releases": 0,
306
+ "agentStacks": 0,
307
+ "agentRuns": 0,
308
+ "agentSessions": 0,
309
+ "greenChecks": 5,
310
+ "totalChecks": 6
311
+ },
312
+ "components": [
313
+ {
314
+ "id": "identity-access",
315
+ "title": "Identity and access",
316
+ "area": "identity",
317
+ "resources": [
318
+ "User",
319
+ "Team",
320
+ "Invite",
321
+ "IdentityMapping",
322
+ "AuthProvider"
323
+ ],
324
+ "docs": "src/auth.js"
325
+ },
326
+ {
327
+ "id": "api-controller",
328
+ "title": "Kradle API controller",
329
+ "area": "api",
330
+ "resources": [
331
+ "Repository",
332
+ "KradleProject",
333
+ "PullRequest",
334
+ "Issue",
335
+ "Pipeline"
336
+ ],
337
+ "docs": "src/api-controller.js"
338
+ },
339
+ {
340
+ "id": "kradle-resource-client",
341
+ "title": "Kradle resource client",
342
+ "area": "control-plane",
343
+ "resources": [
344
+ "Repository",
345
+ "BranchProtection",
346
+ "RefPolicy"
347
+ ],
348
+ "docs": "src/kubernetes-controller.js"
349
+ },
350
+ {
351
+ "id": "repository-service",
352
+ "title": "Repository service",
353
+ "area": "data-plane",
354
+ "resources": [
355
+ "Repository",
356
+ "BranchProtection",
357
+ "RefPolicy"
358
+ ],
359
+ "docs": "src/data-plane.js"
360
+ },
361
+ {
362
+ "id": "runners-ci",
363
+ "title": "Runner scheduler",
364
+ "area": "ci",
365
+ "resources": [
366
+ "RunnerPool",
367
+ "Pipeline",
368
+ "Job"
369
+ ],
370
+ "docs": "src/kubernetes-controller.js"
371
+ },
372
+ {
373
+ "id": "hooks-events",
374
+ "title": "Webhook bus",
375
+ "area": "events",
376
+ "resources": [
377
+ "WebhookSubscription",
378
+ "WebhookDelivery"
379
+ ],
380
+ "docs": "src/kubernetes-controller.js"
381
+ },
382
+ {
383
+ "id": "policy-engine",
384
+ "title": "Kyverno policy engine",
385
+ "area": "policy",
386
+ "resources": [
387
+ "PolicyProfile",
388
+ "PolicyTemplate",
389
+ "PolicyBinding",
390
+ "PolicyExceptionRequest"
391
+ ],
392
+ "docs": "docs/todo-kyverno"
393
+ },
394
+ {
395
+ "id": "agent-orchestration",
396
+ "title": "Agent orchestration",
397
+ "area": "agents",
398
+ "resources": [
399
+ "AgentStack",
400
+ "AgentDispatchRun",
401
+ "AgentTriggerRule",
402
+ "AgentSession",
403
+ "KradleWorkspace",
404
+ "AgentApproval",
405
+ "AgentAdapter",
406
+ "AgentProviderConfig",
407
+ "KradleProject"
408
+ ],
409
+ "docs": "docs/agents/"
410
+ }
411
+ ],
412
+ "resources": [
413
+ {
414
+ "kind": "Organization",
415
+ "plural": "organizations",
416
+ "apiResource": "organizations.kradle.a5c.ai",
417
+ "count": 0,
418
+ "names": [],
419
+ "items": [],
420
+ "phases": {},
421
+ "storage": "etcd",
422
+ "yaml": null,
423
+ "action": {
424
+ "list": "Open Organization records in kradle-org-default",
425
+ "watch": "Watch Organization updates in kradle-org-default",
426
+ "apply": "Save resource changes",
427
+ "delete": "Delete Organization in kradle-org-default"
428
+ }
429
+ },
430
+ {
431
+ "kind": "OrgNamespaceBinding",
432
+ "plural": "orgnamespacebindings",
433
+ "apiResource": "orgnamespacebindings.kradle.a5c.ai",
434
+ "count": 0,
435
+ "names": [],
436
+ "items": [],
437
+ "phases": {},
438
+ "storage": "etcd",
439
+ "yaml": null,
440
+ "action": {
441
+ "list": "Open OrgNamespaceBinding records in kradle-org-default",
442
+ "watch": "Watch OrgNamespaceBinding updates in kradle-org-default",
443
+ "apply": "Save resource changes",
444
+ "delete": "Delete OrgNamespaceBinding in kradle-org-default"
445
+ }
446
+ },
447
+ {
448
+ "kind": "User",
449
+ "plural": "users",
450
+ "apiResource": "users.kradle.a5c.ai",
451
+ "count": 1,
452
+ "names": [
453
+ "admin"
454
+ ],
455
+ "items": [
456
+ {
457
+ "apiVersion": "kradle.a5c.ai/v1alpha1",
458
+ "kind": "User",
459
+ "metadata": {
460
+ "namespace": "kradle-org-default",
461
+ "labels": {
462
+ "role": "admin"
463
+ },
464
+ "annotations": {},
465
+ "name": "admin",
466
+ "resourceVersion": "1"
467
+ },
468
+ "spec": {
469
+ "organizationRef": "default",
470
+ "displayName": "Admin",
471
+ "email": "admin@example.com",
472
+ "username": "admin",
473
+ "teams": [
474
+ "maintainers"
475
+ ],
476
+ "admin": true,
477
+ "disabled": false
478
+ },
479
+ "status": {
480
+ "phase": "Active",
481
+ "lastLoginProvider": "sso",
482
+ "groups": [
483
+ "system:authenticated",
484
+ "kradle:users",
485
+ "kradle:platform-engineers"
486
+ ],
487
+ "storage": "etcd"
488
+ }
489
+ }
490
+ ],
491
+ "phases": {
492
+ "Active": 1
493
+ },
494
+ "storage": "etcd",
495
+ "yaml": "apiVersion: kradle.a5c.ai/v1alpha1\nkind: User\nmetadata:\n namespace: kradle-org-default\n labels:\n role: admin\n annotations:\n name: admin\n resourceVersion: 1\nspec:\n organizationRef: default\n displayName: Admin\n email: admin@example.com\n username: admin\n teams:\n - maintainers\n admin: true\n disabled: false\nstatus:\n phase: Active\n lastLoginProvider: sso\n groups:\n - system:authenticated\n - kradle:users\n - kradle:platform-engineers\n storage: etcd\n",
496
+ "action": {
497
+ "list": "Open User records in kradle-org-default",
498
+ "watch": "Watch User updates in kradle-org-default",
499
+ "apply": "Save resource changes",
500
+ "delete": "Delete User in kradle-org-default"
501
+ }
502
+ },
503
+ {
504
+ "kind": "Team",
505
+ "plural": "teams",
506
+ "apiResource": "teams.kradle.a5c.ai",
507
+ "count": 1,
508
+ "names": [
509
+ "maintainers"
510
+ ],
511
+ "items": [
512
+ {
513
+ "apiVersion": "kradle.a5c.ai/v1alpha1",
514
+ "kind": "Team",
515
+ "metadata": {
516
+ "namespace": "kradle-org-default",
517
+ "labels": {},
518
+ "annotations": {},
519
+ "name": "maintainers",
520
+ "resourceVersion": "1"
521
+ },
522
+ "spec": {
523
+ "organizationRef": "default",
524
+ "displayName": "Maintainers",
525
+ "members": [
526
+ "admin"
527
+ ],
528
+ "maintainers": [
529
+ "admin"
530
+ ],
531
+ "repositoryGrants": [
532
+ {
533
+ "repository": "kradle-demo",
534
+ "permission": "admin"
535
+ }
536
+ ]
537
+ },
538
+ "status": {
539
+ "phase": "Active",
540
+ "memberCount": 1,
541
+ "storage": "etcd"
542
+ }
543
+ }
544
+ ],
545
+ "phases": {
546
+ "Active": 1
547
+ },
548
+ "storage": "etcd",
549
+ "yaml": "apiVersion: kradle.a5c.ai/v1alpha1\nkind: Team\nmetadata:\n namespace: kradle-org-default\n labels:\n annotations:\n name: maintainers\n resourceVersion: 1\nspec:\n organizationRef: default\n displayName: Maintainers\n members:\n - admin\n maintainers:\n - admin\n repositoryGrants:\n - repository: kradle-demo\n permission: admin\nstatus:\n phase: Active\n memberCount: 1\n storage: etcd\n",
550
+ "action": {
551
+ "list": "Open Team records in kradle-org-default",
552
+ "watch": "Watch Team updates in kradle-org-default",
553
+ "apply": "Save resource changes",
554
+ "delete": "Delete Team in kradle-org-default"
555
+ }
556
+ },
557
+ {
558
+ "kind": "Invite",
559
+ "plural": "invites",
560
+ "apiResource": "invites.kradle.a5c.ai",
561
+ "count": 1,
562
+ "names": [
563
+ "new-user-example-com"
564
+ ],
565
+ "items": [
566
+ {
567
+ "apiVersion": "kradle.a5c.ai/v1alpha1",
568
+ "kind": "Invite",
569
+ "metadata": {
570
+ "namespace": "kradle-org-default",
571
+ "labels": {
572
+ "role": "member"
573
+ },
574
+ "annotations": {},
575
+ "name": "new-user-example-com",
576
+ "resourceVersion": "1"
577
+ },
578
+ "spec": {
579
+ "organizationRef": "default",
580
+ "email": "new-user@example.com",
581
+ "role": "member",
582
+ "teams": [
583
+ "maintainers"
584
+ ],
585
+ "invitedBy": "admin",
586
+ "expiresAt": "2026-06-10T15:39:44.024Z"
587
+ },
588
+ "status": {
589
+ "phase": "Pending",
590
+ "storage": "etcd"
591
+ }
592
+ }
593
+ ],
594
+ "phases": {
595
+ "Pending": 1
596
+ },
597
+ "storage": "etcd",
598
+ "yaml": "apiVersion: kradle.a5c.ai/v1alpha1\nkind: Invite\nmetadata:\n namespace: kradle-org-default\n labels:\n role: member\n annotations:\n name: new-user-example-com\n resourceVersion: 1\nspec:\n organizationRef: default\n email: new-user@example.com\n role: member\n teams:\n - maintainers\n invitedBy: admin\n expiresAt: 2026-06-10T15:39:44.024Z\nstatus:\n phase: Pending\n storage: etcd\n",
599
+ "action": {
600
+ "list": "Open Invite records in kradle-org-default",
601
+ "watch": "Watch Invite updates in kradle-org-default",
602
+ "apply": "Save resource changes",
603
+ "delete": "Delete Invite in kradle-org-default"
604
+ }
605
+ },
606
+ {
607
+ "kind": "IdentityMapping",
608
+ "plural": "identitymappings",
609
+ "apiResource": "identitymappings.kradle.a5c.ai",
610
+ "count": 1,
611
+ "names": [
612
+ "sso-admin"
613
+ ],
614
+ "items": [
615
+ {
616
+ "apiVersion": "kradle.a5c.ai/v1alpha1",
617
+ "kind": "IdentityMapping",
618
+ "metadata": {
619
+ "namespace": "kradle-org-default",
620
+ "labels": {},
621
+ "annotations": {},
622
+ "name": "sso-admin",
623
+ "resourceVersion": "1"
624
+ },
625
+ "spec": {
626
+ "organizationRef": "default",
627
+ "user": "admin",
628
+ "provider": "sso",
629
+ "subject": "user:admin",
630
+ "email": "admin@example.com",
631
+ "workspaceIdentity": {
632
+ "name": "admin@example.com",
633
+ "uid": "user:admin",
634
+ "groups": [
635
+ "system:authenticated",
636
+ "kradle:users",
637
+ "kradle:platform-engineers"
638
+ ]
639
+ },
640
+ "repositoryIdentity": {
641
+ "username": "admin",
642
+ "email": "admin@example.com"
643
+ }
644
+ },
645
+ "status": {
646
+ "phase": "Synced",
647
+ "storage": "etcd"
648
+ }
649
+ }
650
+ ],
651
+ "phases": {
652
+ "Synced": 1
653
+ },
654
+ "storage": "etcd",
655
+ "yaml": "apiVersion: kradle.a5c.ai/v1alpha1\nkind: IdentityMapping\nmetadata:\n namespace: kradle-org-default\n labels:\n annotations:\n name: sso-admin\n resourceVersion: 1\nspec:\n organizationRef: default\n user: admin\n provider: sso\n subject: user:admin\n email: admin@example.com\n workspaceIdentity:\n name: admin@example.com\n uid: user:admin\n groups:\n - system:authenticated\n - kradle:users\n - kradle:platform-engineers\n repositoryIdentity:\n username: admin\n email: admin@example.com\nstatus:\n phase: Synced\n storage: etcd\n",
656
+ "action": {
657
+ "list": "Open IdentityMapping records in kradle-org-default",
658
+ "watch": "Watch IdentityMapping updates in kradle-org-default",
659
+ "apply": "Save resource changes",
660
+ "delete": "Delete IdentityMapping in kradle-org-default"
661
+ }
662
+ },
663
+ {
664
+ "kind": "AuthProvider",
665
+ "plural": "authproviders",
666
+ "apiResource": "authproviders.kradle.a5c.ai",
667
+ "count": 2,
668
+ "names": [
669
+ "github",
670
+ "sso"
671
+ ],
672
+ "items": [
673
+ {
674
+ "apiVersion": "kradle.a5c.ai/v1alpha1",
675
+ "kind": "AuthProvider",
676
+ "metadata": {
677
+ "namespace": "kradle-org-default",
678
+ "labels": {},
679
+ "annotations": {},
680
+ "name": "github",
681
+ "resourceVersion": "1"
682
+ },
683
+ "spec": {
684
+ "organizationRef": "default",
685
+ "type": "github",
686
+ "label": "GitHub",
687
+ "enabled": true,
688
+ "scopes": "read:user user:email",
689
+ "delegatedIdentity": {
690
+ "enabled": false,
691
+ "userHeader": "x-forwarded-user",
692
+ "groupsHeader": "x-forwarded-groups",
693
+ "emailHeader": "x-forwarded-email",
694
+ "localDevelopment": {
695
+ "enabled": true,
696
+ "user": "local-developer",
697
+ "email": "",
698
+ "groups": "kradle:repo-admins"
699
+ }
700
+ }
701
+ },
702
+ "status": {
703
+ "phase": "Configured",
704
+ "clientConfigured": false,
705
+ "storage": "etcd"
706
+ }
707
+ },
708
+ {
709
+ "apiVersion": "kradle.a5c.ai/v1alpha1",
710
+ "kind": "AuthProvider",
711
+ "metadata": {
712
+ "namespace": "kradle-org-default",
713
+ "labels": {},
714
+ "annotations": {},
715
+ "name": "sso",
716
+ "resourceVersion": "1"
717
+ },
718
+ "spec": {
719
+ "organizationRef": "default",
720
+ "type": "oidc",
721
+ "label": "Workspace SSO",
722
+ "enabled": false,
723
+ "scopes": "openid profile email groups",
724
+ "delegatedIdentity": {
725
+ "enabled": false,
726
+ "userHeader": "x-forwarded-user",
727
+ "groupsHeader": "x-forwarded-groups",
728
+ "emailHeader": "x-forwarded-email",
729
+ "localDevelopment": {
730
+ "enabled": true,
731
+ "user": "local-developer",
732
+ "email": "",
733
+ "groups": "kradle:repo-admins"
734
+ }
735
+ }
736
+ },
737
+ "status": {
738
+ "phase": "Disabled",
739
+ "clientConfigured": false,
740
+ "storage": "etcd"
741
+ }
742
+ }
743
+ ],
744
+ "phases": {
745
+ "Configured": 1,
746
+ "Disabled": 1
747
+ },
748
+ "storage": "etcd",
749
+ "yaml": "apiVersion: kradle.a5c.ai/v1alpha1\nkind: AuthProvider\nmetadata:\n namespace: kradle-org-default\n labels:\n annotations:\n name: github\n resourceVersion: 1\nspec:\n organizationRef: default\n type: github\n label: GitHub\n enabled: true\n scopes: read:user user:email\n delegatedIdentity:\n enabled: false\n userHeader: x-forwarded-user\n groupsHeader: x-forwarded-groups\n emailHeader: x-forwarded-email\n localDevelopment:\n enabled: true\n user: local-developer\n email: \n groups: kradle:repo-admins\nstatus:\n phase: Configured\n clientConfigured: false\n storage: etcd\n",
750
+ "action": {
751
+ "list": "Open AuthProvider records in kradle-org-default",
752
+ "watch": "Watch AuthProvider updates in kradle-org-default",
753
+ "apply": "Save resource changes",
754
+ "delete": "Delete AuthProvider in kradle-org-default"
755
+ }
756
+ },
757
+ {
758
+ "kind": "Repository",
759
+ "plural": "repositories",
760
+ "apiResource": "repositories.kradle.a5c.ai",
761
+ "count": 1,
762
+ "names": [
763
+ "kradle-demo"
764
+ ],
765
+ "items": [
766
+ {
767
+ "apiVersion": "kradle.a5c.ai/v1alpha1",
768
+ "kind": "Repository",
769
+ "metadata": {
770
+ "namespace": "kradle-org-default",
771
+ "labels": {
772
+ "gitBackend": "gitea"
773
+ },
774
+ "annotations": {},
775
+ "name": "kradle-demo",
776
+ "resourceVersion": "1"
777
+ },
778
+ "spec": {
779
+ "organizationRef": "default",
780
+ "visibility": "private",
781
+ "gitHosting": {
782
+ "backend": "gitea",
783
+ "owner": "kradle",
784
+ "repository": "kradle-demo",
785
+ "branch": "main",
786
+ "httpUrl": "http://kradle-gitea-http:3000/kradle/kradle-demo.git",
787
+ "sshUrl": "ssh://git@kradle-gitea-ssh/kradle/kradle-demo.git",
788
+ "deployKeyTitle": "kradle-argocd",
789
+ "organization": {
790
+ "kind": "Organization",
791
+ "name": "kradle",
792
+ "delegatedTo": "Gitea /api/v1/orgs"
793
+ },
794
+ "sshKeys": {
795
+ "kind": "SSHKey",
796
+ "scopes": [
797
+ "user",
798
+ "deploy",
799
+ "argocd"
800
+ ],
801
+ "delegatedTo": "Gitea /api/v1/user/keys and /repos/{owner}/{repo}/keys"
802
+ },
803
+ "permissions": {
804
+ "kind": "RepositoryPermission",
805
+ "defaultCollaborator": "write",
806
+ "adminTeam": "maintainers",
807
+ "delegatedTo": "Gitea collaborators and team repository APIs"
808
+ },
809
+ "forgeRecords": {
810
+ "issues": "Gitea /repos/kradle/_kradle-org-default_/issues",
811
+ "pullRequests": "Gitea /repos/{owner}/{repo}/pulls"
812
+ },
813
+ "issueSync": {
814
+ "backend": "gitea",
815
+ "owner": "kradle-org-default",
816
+ "repo": "_kradle-org-default_",
817
+ "issue": "<issue>",
818
+ "project": null,
819
+ "repositoryRefs": [
820
+ "kradle-demo"
821
+ ],
822
+ "metadataKeys": [
823
+ "kradle.a5c.ai/project",
824
+ "kradle.a5c.ai/repositories"
825
+ ],
826
+ "actions": [
827
+ {
828
+ "action": "ensureOrgMemoryRepository",
829
+ "owner": "kradle-org-default",
830
+ "repo": "_kradle-org-default_"
831
+ },
832
+ {
833
+ "action": "syncIssue",
834
+ "owner": "kradle-org-default",
835
+ "repo": "_kradle-org-default_",
836
+ "issue": "<issue>"
837
+ },
838
+ {
839
+ "action": "writeIssueRepositoryMetadata",
840
+ "issue": "<issue>",
841
+ "repositories": [
842
+ "kradle-demo"
843
+ ]
844
+ }
845
+ ]
846
+ },
847
+ "webhookUrl": "http://kradle-webhook-worker/repositories/kradle-org-default/kradle-demo",
848
+ "integrationPlan": {
849
+ "backend": "gitea",
850
+ "operations": [
851
+ {
852
+ "action": "createOrganization",
853
+ "owner": "kradle"
854
+ },
855
+ {
856
+ "action": "createRepository",
857
+ "owner": "kradle",
858
+ "repo": "kradle-demo"
859
+ },
860
+ {
861
+ "action": "ensureUserMappings",
862
+ "owner": "kradle"
863
+ },
864
+ {
865
+ "action": "addDeployKey",
866
+ "owner": "kradle",
867
+ "repo": "kradle-demo",
868
+ "title": "kradle-argocd",
869
+ "readOnly": false
870
+ },
871
+ {
872
+ "action": "addUserSshKey",
873
+ "owner": "kradle",
874
+ "repo": "kradle-demo",
875
+ "title": "developer key"
876
+ },
877
+ {
878
+ "action": "addCollaborator",
879
+ "owner": "kradle",
880
+ "repo": "kradle-demo",
881
+ "permission": "write"
882
+ },
883
+ {
884
+ "action": "addTeamRepository",
885
+ "owner": "kradle",
886
+ "repo": "kradle-demo",
887
+ "team": "maintainers",
888
+ "permission": "admin"
889
+ },
890
+ {
891
+ "action": "protectBranch",
892
+ "owner": "kradle",
893
+ "repo": "kradle-demo",
894
+ "branch": "main"
895
+ },
896
+ {
897
+ "action": "createWebhook",
898
+ "owner": "kradle",
899
+ "repo": "kradle-demo",
900
+ "url": "http://kradle-webhook-worker/repositories/kradle-org-default/kradle-demo"
901
+ }
902
+ ]
903
+ }
904
+ },
905
+ "storage": {
906
+ "mode": "gitea",
907
+ "persistentVolumeClaim": "kradle-gitea-data",
908
+ "owner": "kradle",
909
+ "repository": "kradle-demo",
910
+ "httpUrl": "http://kradle-gitea-http:3000/kradle/kradle-demo.git",
911
+ "sshUrl": "ssh://git@kradle-gitea-ssh/kradle/kradle-demo.git"
912
+ },
913
+ "objectStorage": {
914
+ "lfs": true,
915
+ "artifacts": true
916
+ },
917
+ "search": {
918
+ "provider": "zoekt",
919
+ "enabled": false
920
+ }
921
+ },
922
+ "status": {
923
+ "ready": true,
924
+ "route": {
925
+ "repositoryName": "kradle-demo",
926
+ "backend": "gitea",
927
+ "owner": "kradle",
928
+ "store": "gitea-primary",
929
+ "receivePackReady": true,
930
+ "httpUrl": "http://kradle-gitea-http:3000/kradle/kradle-demo.git",
931
+ "sshUrl": "ssh://git@kradle-gitea-ssh/kradle/kradle-demo.git"
932
+ },
933
+ "gitHosting": {
934
+ "backend": "gitea",
935
+ "httpUrl": "http://kradle-gitea-http:3000/kradle/kradle-demo.git",
936
+ "sshUrl": "ssh://git@kradle-gitea-ssh/kradle/kradle-demo.git",
937
+ "integrationPlan": {
938
+ "backend": "gitea",
939
+ "operations": [
940
+ {
941
+ "action": "createOrganization",
942
+ "owner": "kradle"
943
+ },
944
+ {
945
+ "action": "createRepository",
946
+ "owner": "kradle",
947
+ "repo": "kradle-demo"
948
+ },
949
+ {
950
+ "action": "ensureUserMappings",
951
+ "owner": "kradle"
952
+ },
953
+ {
954
+ "action": "addDeployKey",
955
+ "owner": "kradle",
956
+ "repo": "kradle-demo",
957
+ "title": "kradle-argocd",
958
+ "readOnly": false
959
+ },
960
+ {
961
+ "action": "addUserSshKey",
962
+ "owner": "kradle",
963
+ "repo": "kradle-demo",
964
+ "title": "developer key"
965
+ },
966
+ {
967
+ "action": "addCollaborator",
968
+ "owner": "kradle",
969
+ "repo": "kradle-demo",
970
+ "permission": "write"
971
+ },
972
+ {
973
+ "action": "addTeamRepository",
974
+ "owner": "kradle",
975
+ "repo": "kradle-demo",
976
+ "team": "maintainers",
977
+ "permission": "admin"
978
+ },
979
+ {
980
+ "action": "protectBranch",
981
+ "owner": "kradle",
982
+ "repo": "kradle-demo",
983
+ "branch": "main"
984
+ },
985
+ {
986
+ "action": "createWebhook",
987
+ "owner": "kradle",
988
+ "repo": "kradle-demo",
989
+ "url": "http://kradle-webhook-worker/repositories/kradle-org-default/kradle-demo"
990
+ }
991
+ ]
992
+ }
993
+ },
994
+ "storage": "etcd"
995
+ }
996
+ }
997
+ ],
998
+ "phases": {
999
+ "Ready": 1
1000
+ },
1001
+ "storage": "etcd",
1002
+ "yaml": "apiVersion: kradle.a5c.ai/v1alpha1\nkind: Repository\nmetadata:\n namespace: kradle-org-default\n labels:\n gitBackend: gitea\n annotations:\n name: kradle-demo\n resourceVersion: 1\nspec:\n organizationRef: default\n visibility: private\n gitHosting:\n backend: gitea\n owner: kradle\n repository: kradle-demo\n branch: main\n httpUrl: http://kradle-gitea-http:3000/kradle/kradle-demo.git\n sshUrl: ssh://git@kradle-gitea-ssh/kradle/kradle-demo.git\n deployKeyTitle: kradle-argocd\n organization:\n kind: Organization\n name: kradle\n delegatedTo: Gitea /api/v1/orgs\n sshKeys:\n kind: SSHKey\n scopes:\n - user\n - deploy\n - argocd\n delegatedTo: Gitea /api/v1/user/keys and /repos/{owner}/{repo}/keys\n permissions:\n kind: RepositoryPermission\n defaultCollaborator: write\n adminTeam: maintainers\n delegatedTo: Gitea collaborators and team repository APIs\n forgeRecords:\n issues: Gitea /repos/kradle/_kradle-org-default_/issues\n pullRequests: Gitea /repos/{owner}/{repo}/pulls\n issueSync:\n backend: gitea\n owner: kradle-org-default\n repo: _kradle-org-default_\n issue: <issue>\n project: null\n repositoryRefs:\n - kradle-demo\n metadataKeys:\n - kradle.a5c.ai/project\n - kradle.a5c.ai/repositories\n actions:\n - action: ensureOrgMemoryRepository\n owner: kradle-org-default\n repo: _kradle-org-default_\n - action: syncIssue\n owner: kradle-org-default\n repo: _kradle-org-default_\n issue: <issue>\n - action: writeIssueRepositoryMetadata\n issue: <issue>\n repositories:\n - kradle-demo\n webhookUrl: http://kradle-webhook-worker/repositories/kradle-org-default/kradle-demo\n integrationPlan:\n backend: gitea\n operations:\n - action: createOrganization\n owner: kradle\n - action: createRepository\n owner: kradle\n repo: kradle-demo\n - action: ensureUserMappings\n owner: kradle\n - action: addDeployKey\n owner: kradle\n repo: kradle-demo\n title: kradle-argocd\n readOnly: false\n - action: addUserSshKey\n owner: kradle\n repo: kradle-demo\n title: developer key\n - action: addCollaborator\n owner: kradle\n repo: kradle-demo\n permission: write\n - action: addTeamRepository\n owner: kradle\n repo: kradle-demo\n team: maintainers\n permission: admin\n - action: protectBranch\n owner: kradle\n repo: kradle-demo\n branch: main\n - action: createWebhook\n owner: kradle\n repo: kradle-demo\n url: http://kradle-webhook-worker/repositories/kradle-org-default/kradle-demo\n storage:\n mode: gitea\n persistentVolumeClaim: kradle-gitea-data\n owner: kradle\n repository: kradle-demo\n httpUrl: http://kradle-gitea-http:3000/kradle/kradle-demo.git\n sshUrl: ssh://git@kradle-gitea-ssh/kradle/kradle-demo.git\n objectStorage:\n lfs: true\n artifacts: true\n search:\n provider: zoekt\n enabled: false\nstatus:\n ready: true\n route:\n repositoryName: kradle-demo\n backend: gitea\n owner: kradle\n store: gitea-primary\n receivePackReady: true\n httpUrl: http://kradle-gitea-http:3000/kradle/kradle-demo.git\n sshUrl: ssh://git@kradle-gitea-ssh/kradle/kradle-demo.git\n gitHosting:\n backend: gitea\n httpUrl: http://kradle-gitea-http:3000/kradle/kradle-demo.git\n sshUrl: ssh://git@kradle-gitea-ssh/kradle/kradle-demo.git\n integrationPlan:\n backend: gitea\n operations:\n - action: createOrganization\n owner: kradle\n - action: createRepository\n owner: kradle\n repo: kradle-demo\n - action: ensureUserMappings\n owner: kradle\n - action: addDeployKey\n owner: kradle\n repo: kradle-demo\n title: kradle-argocd\n readOnly: false\n - action: addUserSshKey\n owner: kradle\n repo: kradle-demo\n title: developer key\n - action: addCollaborator\n owner: kradle\n repo: kradle-demo\n permission: write\n - action: addTeamRepository\n owner: kradle\n repo: kradle-demo\n team: maintainers\n permission: admin\n - action: protectBranch\n owner: kradle\n repo: kradle-demo\n branch: main\n - action: createWebhook\n owner: kradle\n repo: kradle-demo\n url: http://kradle-webhook-worker/repositories/kradle-org-default/kradle-demo\n storage: etcd\n",
1003
+ "action": {
1004
+ "list": "Open Repository records in kradle-org-default",
1005
+ "watch": "Watch Repository updates in kradle-org-default",
1006
+ "apply": "Save resource changes",
1007
+ "delete": "Delete Repository in kradle-org-default"
1008
+ }
1009
+ },
1010
+ {
1011
+ "kind": "SSHKey",
1012
+ "plural": "sshkeys",
1013
+ "apiResource": "sshkeys.kradle.a5c.ai",
1014
+ "count": 0,
1015
+ "names": [],
1016
+ "items": [],
1017
+ "phases": {},
1018
+ "storage": "etcd",
1019
+ "yaml": null,
1020
+ "action": {
1021
+ "list": "Open SSHKey records in kradle-org-default",
1022
+ "watch": "Watch SSHKey updates in kradle-org-default",
1023
+ "apply": "Save resource changes",
1024
+ "delete": "Delete SSHKey in kradle-org-default"
1025
+ }
1026
+ },
1027
+ {
1028
+ "kind": "RepositoryPermission",
1029
+ "plural": "repositorypermissions",
1030
+ "apiResource": "repositorypermissions.kradle.a5c.ai",
1031
+ "count": 0,
1032
+ "names": [],
1033
+ "items": [],
1034
+ "phases": {},
1035
+ "storage": "etcd",
1036
+ "yaml": null,
1037
+ "action": {
1038
+ "list": "Open RepositoryPermission records in kradle-org-default",
1039
+ "watch": "Watch RepositoryPermission updates in kradle-org-default",
1040
+ "apply": "Save resource changes",
1041
+ "delete": "Delete RepositoryPermission in kradle-org-default"
1042
+ }
1043
+ },
1044
+ {
1045
+ "kind": "BranchProtection",
1046
+ "plural": "branchprotections",
1047
+ "apiResource": "branchprotections.kradle.a5c.ai",
1048
+ "count": 1,
1049
+ "names": [
1050
+ "main-protection"
1051
+ ],
1052
+ "items": [
1053
+ {
1054
+ "apiVersion": "kradle.a5c.ai/v1alpha1",
1055
+ "kind": "BranchProtection",
1056
+ "metadata": {
1057
+ "namespace": "kradle-org-default",
1058
+ "labels": {},
1059
+ "annotations": {},
1060
+ "name": "main-protection",
1061
+ "resourceVersion": "1"
1062
+ },
1063
+ "spec": {
1064
+ "organizationRef": "default",
1065
+ "refs": [
1066
+ "refs/heads/main"
1067
+ ],
1068
+ "requirePullRequest": true,
1069
+ "requiredChecks": [
1070
+ "test"
1071
+ ],
1072
+ "requiredApprovals": 1
1073
+ },
1074
+ "status": {
1075
+ "storage": "etcd"
1076
+ }
1077
+ }
1078
+ ],
1079
+ "phases": {
1080
+ "Unspecified": 1
1081
+ },
1082
+ "storage": "etcd",
1083
+ "yaml": "apiVersion: kradle.a5c.ai/v1alpha1\nkind: BranchProtection\nmetadata:\n namespace: kradle-org-default\n labels:\n annotations:\n name: main-protection\n resourceVersion: 1\nspec:\n organizationRef: default\n refs:\n - refs/heads/main\n requirePullRequest: true\n requiredChecks:\n - test\n requiredApprovals: 1\nstatus:\n storage: etcd\n",
1084
+ "action": {
1085
+ "list": "Open BranchProtection records in kradle-org-default",
1086
+ "watch": "Watch BranchProtection updates in kradle-org-default",
1087
+ "apply": "Save resource changes",
1088
+ "delete": "Delete BranchProtection in kradle-org-default"
1089
+ }
1090
+ },
1091
+ {
1092
+ "kind": "RefPolicy",
1093
+ "plural": "refpolicies",
1094
+ "apiResource": "refpolicies.kradle.a5c.ai",
1095
+ "count": 1,
1096
+ "names": [
1097
+ "deny-internal-refs"
1098
+ ],
1099
+ "items": [
1100
+ {
1101
+ "apiVersion": "kradle.a5c.ai/v1alpha1",
1102
+ "kind": "RefPolicy",
1103
+ "metadata": {
1104
+ "namespace": "kradle-org-default",
1105
+ "labels": {},
1106
+ "annotations": {},
1107
+ "name": "deny-internal-refs",
1108
+ "resourceVersion": "1"
1109
+ },
1110
+ "spec": {
1111
+ "organizationRef": "default",
1112
+ "deny": [
1113
+ "refs/internal/"
1114
+ ]
1115
+ },
1116
+ "status": {
1117
+ "storage": "etcd"
1118
+ }
1119
+ }
1120
+ ],
1121
+ "phases": {
1122
+ "Unspecified": 1
1123
+ },
1124
+ "storage": "etcd",
1125
+ "yaml": "apiVersion: kradle.a5c.ai/v1alpha1\nkind: RefPolicy\nmetadata:\n namespace: kradle-org-default\n labels:\n annotations:\n name: deny-internal-refs\n resourceVersion: 1\nspec:\n organizationRef: default\n deny:\n - refs/internal/\nstatus:\n storage: etcd\n",
1126
+ "action": {
1127
+ "list": "Open RefPolicy records in kradle-org-default",
1128
+ "watch": "Watch RefPolicy updates in kradle-org-default",
1129
+ "apply": "Save resource changes",
1130
+ "delete": "Delete RefPolicy in kradle-org-default"
1131
+ }
1132
+ },
1133
+ {
1134
+ "kind": "PolicyProfile",
1135
+ "plural": "policyprofiles",
1136
+ "apiResource": "policyprofiles.kradle.a5c.ai",
1137
+ "count": 0,
1138
+ "names": [],
1139
+ "items": [],
1140
+ "phases": {},
1141
+ "storage": "etcd",
1142
+ "yaml": null,
1143
+ "action": {
1144
+ "list": "Open PolicyProfile records in kradle-org-default",
1145
+ "watch": "Watch PolicyProfile updates in kradle-org-default",
1146
+ "apply": "Save resource changes",
1147
+ "delete": "Delete PolicyProfile in kradle-org-default"
1148
+ }
1149
+ },
1150
+ {
1151
+ "kind": "PolicyTemplate",
1152
+ "plural": "policytemplates",
1153
+ "apiResource": "policytemplates.kradle.a5c.ai",
1154
+ "count": 0,
1155
+ "names": [],
1156
+ "items": [],
1157
+ "phases": {},
1158
+ "storage": "etcd",
1159
+ "yaml": null,
1160
+ "action": {
1161
+ "list": "Open PolicyTemplate records in kradle-org-default",
1162
+ "watch": "Watch PolicyTemplate updates in kradle-org-default",
1163
+ "apply": "Save resource changes",
1164
+ "delete": "Delete PolicyTemplate in kradle-org-default"
1165
+ }
1166
+ },
1167
+ {
1168
+ "kind": "PolicyBinding",
1169
+ "plural": "policybindings",
1170
+ "apiResource": "policybindings.kradle.a5c.ai",
1171
+ "count": 0,
1172
+ "names": [],
1173
+ "items": [],
1174
+ "phases": {},
1175
+ "storage": "etcd",
1176
+ "yaml": null,
1177
+ "action": {
1178
+ "list": "Open PolicyBinding records in kradle-org-default",
1179
+ "watch": "Watch PolicyBinding updates in kradle-org-default",
1180
+ "apply": "Save resource changes",
1181
+ "delete": "Delete PolicyBinding in kradle-org-default"
1182
+ }
1183
+ },
1184
+ {
1185
+ "kind": "PolicyExceptionRequest",
1186
+ "plural": "policyexceptionrequests",
1187
+ "apiResource": "policyexceptionrequests.kradle.a5c.ai",
1188
+ "count": 0,
1189
+ "names": [],
1190
+ "items": [],
1191
+ "phases": {},
1192
+ "storage": "etcd",
1193
+ "yaml": null,
1194
+ "action": {
1195
+ "list": "Open PolicyExceptionRequest records in kradle-org-default",
1196
+ "watch": "Watch PolicyExceptionRequest updates in kradle-org-default",
1197
+ "apply": "Save resource changes",
1198
+ "delete": "Delete PolicyExceptionRequest in kradle-org-default"
1199
+ }
1200
+ },
1201
+ {
1202
+ "kind": "WebhookSubscription",
1203
+ "plural": "webhooksubscriptions",
1204
+ "apiResource": "webhooksubscriptions.kradle.a5c.ai",
1205
+ "count": 1,
1206
+ "names": [
1207
+ "chatops"
1208
+ ],
1209
+ "items": [
1210
+ {
1211
+ "apiVersion": "kradle.a5c.ai/v1alpha1",
1212
+ "kind": "WebhookSubscription",
1213
+ "metadata": {
1214
+ "namespace": "kradle-org-default",
1215
+ "labels": {},
1216
+ "annotations": {},
1217
+ "name": "chatops",
1218
+ "resourceVersion": "1"
1219
+ },
1220
+ "spec": {
1221
+ "organizationRef": "default",
1222
+ "url": "https://hooks.example.test/kradle",
1223
+ "events": [
1224
+ "pullrequest.created",
1225
+ "pullrequest.merged"
1226
+ ],
1227
+ "signing": {
1228
+ "algorithm": "hmac-sha256",
1229
+ "secretRef": "chatops-secret"
1230
+ },
1231
+ "mode": "active"
1232
+ },
1233
+ "status": {
1234
+ "ready": true,
1235
+ "storage": "etcd"
1236
+ }
1237
+ }
1238
+ ],
1239
+ "phases": {
1240
+ "Ready": 1
1241
+ },
1242
+ "storage": "etcd",
1243
+ "yaml": "apiVersion: kradle.a5c.ai/v1alpha1\nkind: WebhookSubscription\nmetadata:\n namespace: kradle-org-default\n labels:\n annotations:\n name: chatops\n resourceVersion: 1\nspec:\n organizationRef: default\n url: https://hooks.example.test/kradle\n events:\n - pullrequest.created\n - pullrequest.merged\n signing:\n algorithm: hmac-sha256\n secretRef: chatops-secret\n mode: active\nstatus:\n ready: true\n storage: etcd\n",
1244
+ "action": {
1245
+ "list": "Open WebhookSubscription records in kradle-org-default",
1246
+ "watch": "Watch WebhookSubscription updates in kradle-org-default",
1247
+ "apply": "Save resource changes",
1248
+ "delete": "Delete WebhookSubscription in kradle-org-default"
1249
+ }
1250
+ },
1251
+ {
1252
+ "kind": "RunnerPool",
1253
+ "plural": "runnerpools",
1254
+ "apiResource": "runnerpools.kradle.a5c.ai",
1255
+ "count": 1,
1256
+ "names": [
1257
+ "trusted-linux"
1258
+ ],
1259
+ "items": [
1260
+ {
1261
+ "apiVersion": "kradle.a5c.ai/v1alpha1",
1262
+ "kind": "RunnerPool",
1263
+ "metadata": {
1264
+ "namespace": "kradle-org-default",
1265
+ "labels": {
1266
+ "trustTier": "trusted"
1267
+ },
1268
+ "annotations": {},
1269
+ "name": "trusted-linux",
1270
+ "resourceVersion": "1"
1271
+ },
1272
+ "spec": {
1273
+ "organizationRef": "default",
1274
+ "image": "ubuntu:24.04",
1275
+ "warmReplicas": 1,
1276
+ "maxReplicas": 4,
1277
+ "trustTier": "trusted",
1278
+ "cache": {
1279
+ "type": "object-storage"
1280
+ },
1281
+ "scalingMetric": "queueDepth"
1282
+ },
1283
+ "status": {
1284
+ "readyReplicas": 1,
1285
+ "queueDepth": 0,
1286
+ "storage": "etcd"
1287
+ }
1288
+ }
1289
+ ],
1290
+ "phases": {
1291
+ "Unspecified": 1
1292
+ },
1293
+ "storage": "etcd",
1294
+ "yaml": "apiVersion: kradle.a5c.ai/v1alpha1\nkind: RunnerPool\nmetadata:\n namespace: kradle-org-default\n labels:\n trustTier: trusted\n annotations:\n name: trusted-linux\n resourceVersion: 1\nspec:\n organizationRef: default\n image: ubuntu:24.04\n warmReplicas: 1\n maxReplicas: 4\n trustTier: trusted\n cache:\n type: object-storage\n scalingMetric: queueDepth\nstatus:\n readyReplicas: 1\n queueDepth: 0\n storage: etcd\n",
1295
+ "action": {
1296
+ "list": "Open RunnerPool records in kradle-org-default",
1297
+ "watch": "Watch RunnerPool updates in kradle-org-default",
1298
+ "apply": "Save resource changes",
1299
+ "delete": "Delete RunnerPool in kradle-org-default"
1300
+ }
1301
+ },
1302
+ {
1303
+ "kind": "PullRequest",
1304
+ "plural": "pullrequests",
1305
+ "apiResource": "pullrequests.kradle.a5c.ai",
1306
+ "count": 0,
1307
+ "names": [],
1308
+ "items": [],
1309
+ "phases": {},
1310
+ "storage": "postgres",
1311
+ "yaml": null,
1312
+ "action": {
1313
+ "list": "Open PullRequest records in kradle-org-default",
1314
+ "watch": "Watch PullRequest updates in kradle-org-default",
1315
+ "apply": "Save resource changes",
1316
+ "delete": "Delete PullRequest in kradle-org-default"
1317
+ }
1318
+ },
1319
+ {
1320
+ "kind": "Issue",
1321
+ "plural": "issues",
1322
+ "apiResource": "issues.kradle.a5c.ai",
1323
+ "count": 0,
1324
+ "names": [],
1325
+ "items": [],
1326
+ "phases": {},
1327
+ "storage": "postgres",
1328
+ "yaml": null,
1329
+ "action": {
1330
+ "list": "Open Issue records in kradle-org-default",
1331
+ "watch": "Watch Issue updates in kradle-org-default",
1332
+ "apply": "Save resource changes",
1333
+ "delete": "Delete Issue in kradle-org-default"
1334
+ }
1335
+ },
1336
+ {
1337
+ "kind": "Review",
1338
+ "plural": "reviews",
1339
+ "apiResource": "reviews.kradle.a5c.ai",
1340
+ "count": 0,
1341
+ "names": [],
1342
+ "items": [],
1343
+ "phases": {},
1344
+ "storage": "postgres",
1345
+ "yaml": null,
1346
+ "action": {
1347
+ "list": "Open Review records in kradle-org-default",
1348
+ "watch": "Watch Review updates in kradle-org-default",
1349
+ "apply": "Save resource changes",
1350
+ "delete": "Delete Review in kradle-org-default"
1351
+ }
1352
+ },
1353
+ {
1354
+ "kind": "Pipeline",
1355
+ "plural": "pipelines",
1356
+ "apiResource": "pipelines.kradle.a5c.ai",
1357
+ "count": 0,
1358
+ "names": [],
1359
+ "items": [],
1360
+ "phases": {},
1361
+ "storage": "postgres",
1362
+ "yaml": null,
1363
+ "action": {
1364
+ "list": "Open Pipeline records in kradle-org-default",
1365
+ "watch": "Watch Pipeline updates in kradle-org-default",
1366
+ "apply": "Save resource changes",
1367
+ "delete": "Delete Pipeline in kradle-org-default"
1368
+ }
1369
+ },
1370
+ {
1371
+ "kind": "Job",
1372
+ "plural": "jobs",
1373
+ "apiResource": "jobs.kradle.a5c.ai",
1374
+ "count": 0,
1375
+ "names": [],
1376
+ "items": [],
1377
+ "phases": {},
1378
+ "storage": "postgres",
1379
+ "yaml": null,
1380
+ "action": {
1381
+ "list": "Open Job records in kradle-org-default",
1382
+ "watch": "Watch Job updates in kradle-org-default",
1383
+ "apply": "Save resource changes",
1384
+ "delete": "Delete Job in kradle-org-default"
1385
+ }
1386
+ },
1387
+ {
1388
+ "kind": "WebhookDelivery",
1389
+ "plural": "webhookdeliveries",
1390
+ "apiResource": "webhookdeliveries.kradle.a5c.ai",
1391
+ "count": 0,
1392
+ "names": [],
1393
+ "items": [],
1394
+ "phases": {},
1395
+ "storage": "postgres",
1396
+ "yaml": null,
1397
+ "action": {
1398
+ "list": "Open WebhookDelivery records in kradle-org-default",
1399
+ "watch": "Watch WebhookDelivery updates in kradle-org-default",
1400
+ "apply": "Save resource changes",
1401
+ "delete": "Delete WebhookDelivery in kradle-org-default"
1402
+ }
1403
+ },
1404
+ {
1405
+ "kind": "KubeVelaApplication",
1406
+ "plural": "applications",
1407
+ "apiResource": "applications.core.oam.dev",
1408
+ "count": 0,
1409
+ "names": [],
1410
+ "items": [],
1411
+ "phases": {},
1412
+ "storage": "kubevela",
1413
+ "yaml": null,
1414
+ "action": {
1415
+ "list": "Open KubeVelaApplication records in kradle-org-default",
1416
+ "watch": "Watch KubeVelaApplication updates in kradle-org-default",
1417
+ "apply": "Save resource changes",
1418
+ "delete": "Delete KubeVelaApplication in kradle-org-default"
1419
+ }
1420
+ },
1421
+ {
1422
+ "kind": "KubeVelaApplicationRevision",
1423
+ "plural": "applicationrevisions",
1424
+ "apiResource": "applicationrevisions.core.oam.dev",
1425
+ "count": 0,
1426
+ "names": [],
1427
+ "items": [],
1428
+ "phases": {},
1429
+ "storage": "kubevela",
1430
+ "yaml": null,
1431
+ "action": {
1432
+ "list": "Open KubeVelaApplicationRevision records in kradle-org-default",
1433
+ "watch": "Watch KubeVelaApplicationRevision updates in kradle-org-default",
1434
+ "apply": "Save resource changes",
1435
+ "delete": "Delete KubeVelaApplicationRevision in kradle-org-default"
1436
+ }
1437
+ },
1438
+ {
1439
+ "kind": "KubeVelaComponentDefinition",
1440
+ "plural": "componentdefinitions",
1441
+ "apiResource": "componentdefinitions.core.oam.dev",
1442
+ "count": 0,
1443
+ "names": [],
1444
+ "items": [],
1445
+ "phases": {},
1446
+ "storage": "kubevela",
1447
+ "yaml": null,
1448
+ "action": {
1449
+ "list": "Open KubeVelaComponentDefinition records in kradle-org-default",
1450
+ "watch": "Watch KubeVelaComponentDefinition updates in kradle-org-default",
1451
+ "apply": "Save resource changes",
1452
+ "delete": "Delete KubeVelaComponentDefinition in kradle-org-default"
1453
+ }
1454
+ },
1455
+ {
1456
+ "kind": "KubeVelaWorkloadDefinition",
1457
+ "plural": "workloaddefinitions",
1458
+ "apiResource": "workloaddefinitions.core.oam.dev",
1459
+ "count": 0,
1460
+ "names": [],
1461
+ "items": [],
1462
+ "phases": {},
1463
+ "storage": "kubevela",
1464
+ "yaml": null,
1465
+ "action": {
1466
+ "list": "Open KubeVelaWorkloadDefinition records in kradle-org-default",
1467
+ "watch": "Watch KubeVelaWorkloadDefinition updates in kradle-org-default",
1468
+ "apply": "Save resource changes",
1469
+ "delete": "Delete KubeVelaWorkloadDefinition in kradle-org-default"
1470
+ }
1471
+ },
1472
+ {
1473
+ "kind": "KubeVelaTraitDefinition",
1474
+ "plural": "traitdefinitions",
1475
+ "apiResource": "traitdefinitions.core.oam.dev",
1476
+ "count": 0,
1477
+ "names": [],
1478
+ "items": [],
1479
+ "phases": {},
1480
+ "storage": "kubevela",
1481
+ "yaml": null,
1482
+ "action": {
1483
+ "list": "Open KubeVelaTraitDefinition records in kradle-org-default",
1484
+ "watch": "Watch KubeVelaTraitDefinition updates in kradle-org-default",
1485
+ "apply": "Save resource changes",
1486
+ "delete": "Delete KubeVelaTraitDefinition in kradle-org-default"
1487
+ }
1488
+ },
1489
+ {
1490
+ "kind": "KubeVelaScopeDefinition",
1491
+ "plural": "scopedefinitions",
1492
+ "apiResource": "scopedefinitions.core.oam.dev",
1493
+ "count": 0,
1494
+ "names": [],
1495
+ "items": [],
1496
+ "phases": {},
1497
+ "storage": "kubevela",
1498
+ "yaml": null,
1499
+ "action": {
1500
+ "list": "Open KubeVelaScopeDefinition records in kradle-org-default",
1501
+ "watch": "Watch KubeVelaScopeDefinition updates in kradle-org-default",
1502
+ "apply": "Save resource changes",
1503
+ "delete": "Delete KubeVelaScopeDefinition in kradle-org-default"
1504
+ }
1505
+ },
1506
+ {
1507
+ "kind": "KubeVelaPolicyDefinition",
1508
+ "plural": "policydefinitions",
1509
+ "apiResource": "policydefinitions.core.oam.dev",
1510
+ "count": 0,
1511
+ "names": [],
1512
+ "items": [],
1513
+ "phases": {},
1514
+ "storage": "kubevela",
1515
+ "yaml": null,
1516
+ "action": {
1517
+ "list": "Open KubeVelaPolicyDefinition records in kradle-org-default",
1518
+ "watch": "Watch KubeVelaPolicyDefinition updates in kradle-org-default",
1519
+ "apply": "Save resource changes",
1520
+ "delete": "Delete KubeVelaPolicyDefinition in kradle-org-default"
1521
+ }
1522
+ },
1523
+ {
1524
+ "kind": "KubeVelaPolicy",
1525
+ "plural": "policies",
1526
+ "apiResource": "policies.core.oam.dev",
1527
+ "count": 0,
1528
+ "names": [],
1529
+ "items": [],
1530
+ "phases": {},
1531
+ "storage": "kubevela",
1532
+ "yaml": null,
1533
+ "action": {
1534
+ "list": "Open KubeVelaPolicy records in kradle-org-default",
1535
+ "watch": "Watch KubeVelaPolicy updates in kradle-org-default",
1536
+ "apply": "Save resource changes",
1537
+ "delete": "Delete KubeVelaPolicy in kradle-org-default"
1538
+ }
1539
+ },
1540
+ {
1541
+ "kind": "KubeVelaWorkflowStepDefinition",
1542
+ "plural": "workflowstepdefinitions",
1543
+ "apiResource": "workflowstepdefinitions.core.oam.dev",
1544
+ "count": 0,
1545
+ "names": [],
1546
+ "items": [],
1547
+ "phases": {},
1548
+ "storage": "kubevela",
1549
+ "yaml": null,
1550
+ "action": {
1551
+ "list": "Open KubeVelaWorkflowStepDefinition records in kradle-org-default",
1552
+ "watch": "Watch KubeVelaWorkflowStepDefinition updates in kradle-org-default",
1553
+ "apply": "Save resource changes",
1554
+ "delete": "Delete KubeVelaWorkflowStepDefinition in kradle-org-default"
1555
+ }
1556
+ },
1557
+ {
1558
+ "kind": "KubeVelaWorkflow",
1559
+ "plural": "workflows",
1560
+ "apiResource": "workflows.core.oam.dev",
1561
+ "count": 0,
1562
+ "names": [],
1563
+ "items": [],
1564
+ "phases": {},
1565
+ "storage": "kubevela",
1566
+ "yaml": null,
1567
+ "action": {
1568
+ "list": "Open KubeVelaWorkflow records in kradle-org-default",
1569
+ "watch": "Watch KubeVelaWorkflow updates in kradle-org-default",
1570
+ "apply": "Save resource changes",
1571
+ "delete": "Delete KubeVelaWorkflow in kradle-org-default"
1572
+ }
1573
+ },
1574
+ {
1575
+ "kind": "KubeVelaResourceTracker",
1576
+ "plural": "resourcetrackers",
1577
+ "apiResource": "resourcetrackers.core.oam.dev",
1578
+ "count": 0,
1579
+ "names": [],
1580
+ "items": [],
1581
+ "phases": {},
1582
+ "storage": "kubevela",
1583
+ "yaml": null,
1584
+ "action": {
1585
+ "list": "Open KubeVelaResourceTracker records in kradle-org-default",
1586
+ "watch": "Watch KubeVelaResourceTracker updates in kradle-org-default",
1587
+ "apply": "Save resource changes",
1588
+ "delete": "Delete KubeVelaResourceTracker in kradle-org-default"
1589
+ }
1590
+ },
1591
+ {
1592
+ "kind": "View",
1593
+ "plural": "views",
1594
+ "apiResource": "views.kradle.a5c.ai",
1595
+ "count": 0,
1596
+ "names": [],
1597
+ "items": [],
1598
+ "phases": {},
1599
+ "storage": "etcd",
1600
+ "yaml": null,
1601
+ "action": {
1602
+ "list": "Open View records in kradle-org-default",
1603
+ "watch": "Watch View updates in kradle-org-default",
1604
+ "apply": "Save resource changes",
1605
+ "delete": "Delete View in kradle-org-default"
1606
+ }
1607
+ },
1608
+ {
1609
+ "kind": "Selector",
1610
+ "plural": "selectors",
1611
+ "apiResource": "selectors.kradle.a5c.ai",
1612
+ "count": 0,
1613
+ "names": [],
1614
+ "items": [],
1615
+ "phases": {},
1616
+ "storage": "etcd",
1617
+ "yaml": null,
1618
+ "action": {
1619
+ "list": "Open Selector records in kradle-org-default",
1620
+ "watch": "Watch Selector updates in kradle-org-default",
1621
+ "apply": "Save resource changes",
1622
+ "delete": "Delete Selector in kradle-org-default"
1623
+ }
1624
+ },
1625
+ {
1626
+ "kind": "AgentPersona",
1627
+ "plural": "agentpersonas",
1628
+ "apiResource": "agentpersonas.kradle.a5c.ai",
1629
+ "count": 0,
1630
+ "names": [],
1631
+ "items": [],
1632
+ "phases": {},
1633
+ "storage": "etcd",
1634
+ "yaml": null,
1635
+ "action": {
1636
+ "list": "Open AgentPersona records in kradle-org-default",
1637
+ "watch": "Watch AgentPersona updates in kradle-org-default",
1638
+ "apply": "Save resource changes",
1639
+ "delete": "Delete AgentPersona in kradle-org-default"
1640
+ }
1641
+ },
1642
+ {
1643
+ "kind": "AgentSoul",
1644
+ "plural": "agentsouls",
1645
+ "apiResource": "agentsouls.kradle.a5c.ai",
1646
+ "count": 0,
1647
+ "names": [],
1648
+ "items": [],
1649
+ "phases": {},
1650
+ "storage": "etcd",
1651
+ "yaml": null,
1652
+ "action": {
1653
+ "list": "Open AgentSoul records in kradle-org-default",
1654
+ "watch": "Watch AgentSoul updates in kradle-org-default",
1655
+ "apply": "Save resource changes",
1656
+ "delete": "Delete AgentSoul in kradle-org-default"
1657
+ }
1658
+ },
1659
+ {
1660
+ "kind": "AgentAppearance",
1661
+ "plural": "agentappearances",
1662
+ "apiResource": "agentappearances.kradle.a5c.ai",
1663
+ "count": 0,
1664
+ "names": [],
1665
+ "items": [],
1666
+ "phases": {},
1667
+ "storage": "etcd",
1668
+ "yaml": null,
1669
+ "action": {
1670
+ "list": "Open AgentAppearance records in kradle-org-default",
1671
+ "watch": "Watch AgentAppearance updates in kradle-org-default",
1672
+ "apply": "Save resource changes",
1673
+ "delete": "Delete AgentAppearance in kradle-org-default"
1674
+ }
1675
+ },
1676
+ {
1677
+ "kind": "AgentVoiceProfile",
1678
+ "plural": "agentvoiceprofiles",
1679
+ "apiResource": "agentvoiceprofiles.kradle.a5c.ai",
1680
+ "count": 0,
1681
+ "names": [],
1682
+ "items": [],
1683
+ "phases": {},
1684
+ "storage": "etcd",
1685
+ "yaml": null,
1686
+ "action": {
1687
+ "list": "Open AgentVoiceProfile records in kradle-org-default",
1688
+ "watch": "Watch AgentVoiceProfile updates in kradle-org-default",
1689
+ "apply": "Save resource changes",
1690
+ "delete": "Delete AgentVoiceProfile in kradle-org-default"
1691
+ }
1692
+ },
1693
+ {
1694
+ "kind": "AgentDefinition",
1695
+ "plural": "agentdefinitions",
1696
+ "apiResource": "agentdefinitions.kradle.a5c.ai",
1697
+ "count": 0,
1698
+ "names": [],
1699
+ "items": [],
1700
+ "phases": {},
1701
+ "storage": "etcd",
1702
+ "yaml": null,
1703
+ "action": {
1704
+ "list": "Open AgentDefinition records in kradle-org-default",
1705
+ "watch": "Watch AgentDefinition updates in kradle-org-default",
1706
+ "apply": "Save resource changes",
1707
+ "delete": "Delete AgentDefinition in kradle-org-default"
1708
+ }
1709
+ },
1710
+ {
1711
+ "kind": "AgentStack",
1712
+ "plural": "agentstacks",
1713
+ "apiResource": "agentstacks.kradle.a5c.ai",
1714
+ "count": 0,
1715
+ "names": [],
1716
+ "items": [],
1717
+ "phases": {},
1718
+ "storage": "etcd",
1719
+ "yaml": null,
1720
+ "action": {
1721
+ "list": "Open AgentStack records in kradle-org-default",
1722
+ "watch": "Watch AgentStack updates in kradle-org-default",
1723
+ "apply": "Save resource changes",
1724
+ "delete": "Delete AgentStack in kradle-org-default"
1725
+ }
1726
+ },
1727
+ {
1728
+ "kind": "AgentSubagent",
1729
+ "plural": "agentsubagents",
1730
+ "apiResource": "agentsubagents.kradle.a5c.ai",
1731
+ "count": 0,
1732
+ "names": [],
1733
+ "items": [],
1734
+ "phases": {},
1735
+ "storage": "etcd",
1736
+ "yaml": null,
1737
+ "action": {
1738
+ "list": "Open AgentSubagent records in kradle-org-default",
1739
+ "watch": "Watch AgentSubagent updates in kradle-org-default",
1740
+ "apply": "Save resource changes",
1741
+ "delete": "Delete AgentSubagent in kradle-org-default"
1742
+ }
1743
+ },
1744
+ {
1745
+ "kind": "AgentToolProfile",
1746
+ "plural": "agenttoolprofiles",
1747
+ "apiResource": "agenttoolprofiles.kradle.a5c.ai",
1748
+ "count": 0,
1749
+ "names": [],
1750
+ "items": [],
1751
+ "phases": {},
1752
+ "storage": "etcd",
1753
+ "yaml": null,
1754
+ "action": {
1755
+ "list": "Open AgentToolProfile records in kradle-org-default",
1756
+ "watch": "Watch AgentToolProfile updates in kradle-org-default",
1757
+ "apply": "Save resource changes",
1758
+ "delete": "Delete AgentToolProfile in kradle-org-default"
1759
+ }
1760
+ },
1761
+ {
1762
+ "kind": "AgentMcpServer",
1763
+ "plural": "agentmcpservers",
1764
+ "apiResource": "agentmcpservers.kradle.a5c.ai",
1765
+ "count": 0,
1766
+ "names": [],
1767
+ "items": [],
1768
+ "phases": {},
1769
+ "storage": "etcd",
1770
+ "yaml": null,
1771
+ "action": {
1772
+ "list": "Open AgentMcpServer records in kradle-org-default",
1773
+ "watch": "Watch AgentMcpServer updates in kradle-org-default",
1774
+ "apply": "Save resource changes",
1775
+ "delete": "Delete AgentMcpServer in kradle-org-default"
1776
+ }
1777
+ },
1778
+ {
1779
+ "kind": "AgentSkill",
1780
+ "plural": "agentskills",
1781
+ "apiResource": "agentskills.kradle.a5c.ai",
1782
+ "count": 0,
1783
+ "names": [],
1784
+ "items": [],
1785
+ "phases": {},
1786
+ "storage": "etcd",
1787
+ "yaml": null,
1788
+ "action": {
1789
+ "list": "Open AgentSkill records in kradle-org-default",
1790
+ "watch": "Watch AgentSkill updates in kradle-org-default",
1791
+ "apply": "Save resource changes",
1792
+ "delete": "Delete AgentSkill in kradle-org-default"
1793
+ }
1794
+ },
1795
+ {
1796
+ "kind": "AgentTriggerRule",
1797
+ "plural": "agenttriggerrules",
1798
+ "apiResource": "agenttriggerrules.kradle.a5c.ai",
1799
+ "count": 0,
1800
+ "names": [],
1801
+ "items": [],
1802
+ "phases": {},
1803
+ "storage": "etcd",
1804
+ "yaml": null,
1805
+ "action": {
1806
+ "list": "Open AgentTriggerRule records in kradle-org-default",
1807
+ "watch": "Watch AgentTriggerRule updates in kradle-org-default",
1808
+ "apply": "Save resource changes",
1809
+ "delete": "Delete AgentTriggerRule in kradle-org-default"
1810
+ }
1811
+ },
1812
+ {
1813
+ "kind": "AgentContextLabel",
1814
+ "plural": "agentcontextlabels",
1815
+ "apiResource": "agentcontextlabels.kradle.a5c.ai",
1816
+ "count": 0,
1817
+ "names": [],
1818
+ "items": [],
1819
+ "phases": {},
1820
+ "storage": "etcd",
1821
+ "yaml": null,
1822
+ "action": {
1823
+ "list": "Open AgentContextLabel records in kradle-org-default",
1824
+ "watch": "Watch AgentContextLabel updates in kradle-org-default",
1825
+ "apply": "Save resource changes",
1826
+ "delete": "Delete AgentContextLabel in kradle-org-default"
1827
+ }
1828
+ },
1829
+ {
1830
+ "kind": "KradleWorkspacePolicy",
1831
+ "plural": "kradleworkspacepolicies",
1832
+ "apiResource": "kradleworkspacepolicies.kradle.a5c.ai",
1833
+ "count": 0,
1834
+ "names": [],
1835
+ "items": [],
1836
+ "phases": {},
1837
+ "storage": "etcd",
1838
+ "yaml": null,
1839
+ "action": {
1840
+ "list": "Open KradleWorkspacePolicy records in kradle-org-default",
1841
+ "watch": "Watch KradleWorkspacePolicy updates in kradle-org-default",
1842
+ "apply": "Save resource changes",
1843
+ "delete": "Delete KradleWorkspacePolicy in kradle-org-default"
1844
+ }
1845
+ },
1846
+ {
1847
+ "kind": "AgentServiceAccount",
1848
+ "plural": "agentserviceaccounts",
1849
+ "apiResource": "agentserviceaccounts.kradle.a5c.ai",
1850
+ "count": 0,
1851
+ "names": [],
1852
+ "items": [],
1853
+ "phases": {},
1854
+ "storage": "etcd",
1855
+ "yaml": null,
1856
+ "action": {
1857
+ "list": "Open AgentServiceAccount records in kradle-org-default",
1858
+ "watch": "Watch AgentServiceAccount updates in kradle-org-default",
1859
+ "apply": "Save resource changes",
1860
+ "delete": "Delete AgentServiceAccount in kradle-org-default"
1861
+ }
1862
+ },
1863
+ {
1864
+ "kind": "AgentRoleBinding",
1865
+ "plural": "agentrolebindings",
1866
+ "apiResource": "agentrolebindings.kradle.a5c.ai",
1867
+ "count": 0,
1868
+ "names": [],
1869
+ "items": [],
1870
+ "phases": {},
1871
+ "storage": "etcd",
1872
+ "yaml": null,
1873
+ "action": {
1874
+ "list": "Open AgentRoleBinding records in kradle-org-default",
1875
+ "watch": "Watch AgentRoleBinding updates in kradle-org-default",
1876
+ "apply": "Save resource changes",
1877
+ "delete": "Delete AgentRoleBinding in kradle-org-default"
1878
+ }
1879
+ },
1880
+ {
1881
+ "kind": "AgentSecretGrant",
1882
+ "plural": "agentsecretgrants",
1883
+ "apiResource": "agentsecretgrants.kradle.a5c.ai",
1884
+ "count": 0,
1885
+ "names": [],
1886
+ "items": [],
1887
+ "phases": {},
1888
+ "storage": "etcd",
1889
+ "yaml": null,
1890
+ "action": {
1891
+ "list": "Open AgentSecretGrant records in kradle-org-default",
1892
+ "watch": "Watch AgentSecretGrant updates in kradle-org-default",
1893
+ "apply": "Save resource changes",
1894
+ "delete": "Delete AgentSecretGrant in kradle-org-default"
1895
+ }
1896
+ },
1897
+ {
1898
+ "kind": "AgentConfigGrant",
1899
+ "plural": "agentconfiggrants",
1900
+ "apiResource": "agentconfiggrants.kradle.a5c.ai",
1901
+ "count": 0,
1902
+ "names": [],
1903
+ "items": [],
1904
+ "phases": {},
1905
+ "storage": "etcd",
1906
+ "yaml": null,
1907
+ "action": {
1908
+ "list": "Open AgentConfigGrant records in kradle-org-default",
1909
+ "watch": "Watch AgentConfigGrant updates in kradle-org-default",
1910
+ "apply": "Save resource changes",
1911
+ "delete": "Delete AgentConfigGrant in kradle-org-default"
1912
+ }
1913
+ },
1914
+ {
1915
+ "kind": "AgentAdapter",
1916
+ "plural": "agentadapters",
1917
+ "apiResource": "agentadapters.kradle.a5c.ai",
1918
+ "count": 0,
1919
+ "names": [],
1920
+ "items": [],
1921
+ "phases": {},
1922
+ "storage": "etcd",
1923
+ "yaml": null,
1924
+ "action": {
1925
+ "list": "Open AgentAdapter records in kradle-org-default",
1926
+ "watch": "Watch AgentAdapter updates in kradle-org-default",
1927
+ "apply": "Save resource changes",
1928
+ "delete": "Delete AgentAdapter in kradle-org-default"
1929
+ }
1930
+ },
1931
+ {
1932
+ "kind": "AgentTransportBinding",
1933
+ "plural": "agenttransportbindings",
1934
+ "apiResource": "agenttransportbindings.kradle.a5c.ai",
1935
+ "count": 0,
1936
+ "names": [],
1937
+ "items": [],
1938
+ "phases": {},
1939
+ "storage": "etcd",
1940
+ "yaml": null,
1941
+ "action": {
1942
+ "list": "Open AgentTransportBinding records in kradle-org-default",
1943
+ "watch": "Watch AgentTransportBinding updates in kradle-org-default",
1944
+ "apply": "Save resource changes",
1945
+ "delete": "Delete AgentTransportBinding in kradle-org-default"
1946
+ }
1947
+ },
1948
+ {
1949
+ "kind": "AgentProviderConfig",
1950
+ "plural": "agentproviderconfigs",
1951
+ "apiResource": "agentproviderconfigs.kradle.a5c.ai",
1952
+ "count": 0,
1953
+ "names": [],
1954
+ "items": [],
1955
+ "phases": {},
1956
+ "storage": "etcd",
1957
+ "yaml": null,
1958
+ "action": {
1959
+ "list": "Open AgentProviderConfig records in kradle-org-default",
1960
+ "watch": "Watch AgentProviderConfig updates in kradle-org-default",
1961
+ "apply": "Save resource changes",
1962
+ "delete": "Delete AgentProviderConfig in kradle-org-default"
1963
+ }
1964
+ },
1965
+ {
1966
+ "kind": "KradleProject",
1967
+ "plural": "kradleprojects",
1968
+ "apiResource": "kradleprojects.kradle.a5c.ai",
1969
+ "count": 0,
1970
+ "names": [],
1971
+ "items": [],
1972
+ "phases": {},
1973
+ "storage": "etcd",
1974
+ "yaml": null,
1975
+ "action": {
1976
+ "list": "Open KradleProject records in kradle-org-default",
1977
+ "watch": "Watch KradleProject updates in kradle-org-default",
1978
+ "apply": "Save resource changes",
1979
+ "delete": "Delete KradleProject in kradle-org-default"
1980
+ }
1981
+ },
1982
+ {
1983
+ "kind": "AgentGatewayConfig",
1984
+ "plural": "agentgatewayconfigs",
1985
+ "apiResource": "agentgatewayconfigs.kradle.a5c.ai",
1986
+ "count": 0,
1987
+ "names": [],
1988
+ "items": [],
1989
+ "phases": {},
1990
+ "storage": "etcd",
1991
+ "yaml": null,
1992
+ "action": {
1993
+ "list": "Open AgentGatewayConfig records in kradle-org-default",
1994
+ "watch": "Watch AgentGatewayConfig updates in kradle-org-default",
1995
+ "apply": "Save resource changes",
1996
+ "delete": "Delete AgentGatewayConfig in kradle-org-default"
1997
+ }
1998
+ },
1999
+ {
2000
+ "kind": "AgentMemoryRepository",
2001
+ "plural": "agentmemoryrepositories",
2002
+ "apiResource": "agentmemoryrepositories.kradle.a5c.ai",
2003
+ "count": 0,
2004
+ "names": [],
2005
+ "items": [],
2006
+ "phases": {},
2007
+ "storage": "etcd",
2008
+ "yaml": null,
2009
+ "action": {
2010
+ "list": "Open AgentMemoryRepository records in kradle-org-default",
2011
+ "watch": "Watch AgentMemoryRepository updates in kradle-org-default",
2012
+ "apply": "Save resource changes",
2013
+ "delete": "Delete AgentMemoryRepository in kradle-org-default"
2014
+ }
2015
+ },
2016
+ {
2017
+ "kind": "AgentMemorySource",
2018
+ "plural": "agentmemorysources",
2019
+ "apiResource": "agentmemorysources.kradle.a5c.ai",
2020
+ "count": 0,
2021
+ "names": [],
2022
+ "items": [],
2023
+ "phases": {},
2024
+ "storage": "etcd",
2025
+ "yaml": null,
2026
+ "action": {
2027
+ "list": "Open AgentMemorySource records in kradle-org-default",
2028
+ "watch": "Watch AgentMemorySource updates in kradle-org-default",
2029
+ "apply": "Save resource changes",
2030
+ "delete": "Delete AgentMemorySource in kradle-org-default"
2031
+ }
2032
+ },
2033
+ {
2034
+ "kind": "AgentMemoryOntology",
2035
+ "plural": "agentmemoryontologies",
2036
+ "apiResource": "agentmemoryontologies.kradle.a5c.ai",
2037
+ "count": 0,
2038
+ "names": [],
2039
+ "items": [],
2040
+ "phases": {},
2041
+ "storage": "etcd",
2042
+ "yaml": null,
2043
+ "action": {
2044
+ "list": "Open AgentMemoryOntology records in kradle-org-default",
2045
+ "watch": "Watch AgentMemoryOntology updates in kradle-org-default",
2046
+ "apply": "Save resource changes",
2047
+ "delete": "Delete AgentMemoryOntology in kradle-org-default"
2048
+ }
2049
+ },
2050
+ {
2051
+ "kind": "AgentMemoryAssociation",
2052
+ "plural": "agentmemoryassociations",
2053
+ "apiResource": "agentmemoryassociations.kradle.a5c.ai",
2054
+ "count": 0,
2055
+ "names": [],
2056
+ "items": [],
2057
+ "phases": {},
2058
+ "storage": "etcd",
2059
+ "yaml": null,
2060
+ "action": {
2061
+ "list": "Open AgentMemoryAssociation records in kradle-org-default",
2062
+ "watch": "Watch AgentMemoryAssociation updates in kradle-org-default",
2063
+ "apply": "Save resource changes",
2064
+ "delete": "Delete AgentMemoryAssociation in kradle-org-default"
2065
+ }
2066
+ },
2067
+ {
2068
+ "kind": "AgentDispatchRun",
2069
+ "plural": "agentdispatchruns",
2070
+ "apiResource": "agentdispatchruns.kradle.a5c.ai",
2071
+ "count": 0,
2072
+ "names": [],
2073
+ "items": [],
2074
+ "phases": {},
2075
+ "storage": "postgres",
2076
+ "yaml": null,
2077
+ "action": {
2078
+ "list": "Open AgentDispatchRun records in kradle-org-default",
2079
+ "watch": "Watch AgentDispatchRun updates in kradle-org-default",
2080
+ "apply": "Save resource changes",
2081
+ "delete": "Delete AgentDispatchRun in kradle-org-default"
2082
+ }
2083
+ },
2084
+ {
2085
+ "kind": "AgentDispatchAttempt",
2086
+ "plural": "agentdispatchattempts",
2087
+ "apiResource": "agentdispatchattempts.kradle.a5c.ai",
2088
+ "count": 0,
2089
+ "names": [],
2090
+ "items": [],
2091
+ "phases": {},
2092
+ "storage": "postgres",
2093
+ "yaml": null,
2094
+ "action": {
2095
+ "list": "Open AgentDispatchAttempt records in kradle-org-default",
2096
+ "watch": "Watch AgentDispatchAttempt updates in kradle-org-default",
2097
+ "apply": "Save resource changes",
2098
+ "delete": "Delete AgentDispatchAttempt in kradle-org-default"
2099
+ }
2100
+ },
2101
+ {
2102
+ "kind": "AgentSession",
2103
+ "plural": "agentsessions",
2104
+ "apiResource": "agentsessions.kradle.a5c.ai",
2105
+ "count": 0,
2106
+ "names": [],
2107
+ "items": [],
2108
+ "phases": {},
2109
+ "storage": "postgres",
2110
+ "yaml": null,
2111
+ "action": {
2112
+ "list": "Open AgentSession records in kradle-org-default",
2113
+ "watch": "Watch AgentSession updates in kradle-org-default",
2114
+ "apply": "Save resource changes",
2115
+ "delete": "Delete AgentSession in kradle-org-default"
2116
+ }
2117
+ },
2118
+ {
2119
+ "kind": "AgentContextBundle",
2120
+ "plural": "agentcontextbundles",
2121
+ "apiResource": "agentcontextbundles.kradle.a5c.ai",
2122
+ "count": 0,
2123
+ "names": [],
2124
+ "items": [],
2125
+ "phases": {},
2126
+ "storage": "postgres",
2127
+ "yaml": null,
2128
+ "action": {
2129
+ "list": "Open AgentContextBundle records in kradle-org-default",
2130
+ "watch": "Watch AgentContextBundle updates in kradle-org-default",
2131
+ "apply": "Save resource changes",
2132
+ "delete": "Delete AgentContextBundle in kradle-org-default"
2133
+ }
2134
+ },
2135
+ {
2136
+ "kind": "KradleArtifact",
2137
+ "plural": "kradleartifacts",
2138
+ "apiResource": "kradleartifacts.kradle.a5c.ai",
2139
+ "count": 0,
2140
+ "names": [],
2141
+ "items": [],
2142
+ "phases": {},
2143
+ "storage": "postgres",
2144
+ "yaml": null,
2145
+ "action": {
2146
+ "list": "Open KradleArtifact records in kradle-org-default",
2147
+ "watch": "Watch KradleArtifact updates in kradle-org-default",
2148
+ "apply": "Save resource changes",
2149
+ "delete": "Delete KradleArtifact in kradle-org-default"
2150
+ }
2151
+ },
2152
+ {
2153
+ "kind": "AgentApproval",
2154
+ "plural": "agentapprovals",
2155
+ "apiResource": "agentapprovals.kradle.a5c.ai",
2156
+ "count": 0,
2157
+ "names": [],
2158
+ "items": [],
2159
+ "phases": {},
2160
+ "storage": "postgres",
2161
+ "yaml": null,
2162
+ "action": {
2163
+ "list": "Open AgentApproval records in kradle-org-default",
2164
+ "watch": "Watch AgentApproval updates in kradle-org-default",
2165
+ "apply": "Save resource changes",
2166
+ "delete": "Delete AgentApproval in kradle-org-default"
2167
+ }
2168
+ },
2169
+ {
2170
+ "kind": "KradleWorkspace",
2171
+ "plural": "kradleworkspaces",
2172
+ "apiResource": "kradleworkspaces.kradle.a5c.ai",
2173
+ "count": 0,
2174
+ "names": [],
2175
+ "items": [],
2176
+ "phases": {},
2177
+ "storage": "postgres",
2178
+ "yaml": null,
2179
+ "action": {
2180
+ "list": "Open KradleWorkspace records in kradle-org-default",
2181
+ "watch": "Watch KradleWorkspace updates in kradle-org-default",
2182
+ "apply": "Save resource changes",
2183
+ "delete": "Delete KradleWorkspace in kradle-org-default"
2184
+ }
2185
+ },
2186
+ {
2187
+ "kind": "AgentTriggerExecution",
2188
+ "plural": "agenttriggerexecutions",
2189
+ "apiResource": "agenttriggerexecutions.kradle.a5c.ai",
2190
+ "count": 0,
2191
+ "names": [],
2192
+ "items": [],
2193
+ "phases": {},
2194
+ "storage": "postgres",
2195
+ "yaml": null,
2196
+ "action": {
2197
+ "list": "Open AgentTriggerExecution records in kradle-org-default",
2198
+ "watch": "Watch AgentTriggerExecution updates in kradle-org-default",
2199
+ "apply": "Save resource changes",
2200
+ "delete": "Delete AgentTriggerExecution in kradle-org-default"
2201
+ }
2202
+ },
2203
+ {
2204
+ "kind": "KradleWorkspaceRuntime",
2205
+ "plural": "kradleworkspaceruntimes",
2206
+ "apiResource": "kradleworkspaceruntimes.kradle.a5c.ai",
2207
+ "count": 0,
2208
+ "names": [],
2209
+ "items": [],
2210
+ "phases": {},
2211
+ "storage": "postgres",
2212
+ "yaml": null,
2213
+ "action": {
2214
+ "list": "Open KradleWorkspaceRuntime records in kradle-org-default",
2215
+ "watch": "Watch KradleWorkspaceRuntime updates in kradle-org-default",
2216
+ "apply": "Save resource changes",
2217
+ "delete": "Delete KradleWorkspaceRuntime in kradle-org-default"
2218
+ }
2219
+ },
2220
+ {
2221
+ "kind": "AgentSessionTranscript",
2222
+ "plural": "agentsessiontranscripts",
2223
+ "apiResource": "agentsessiontranscripts.kradle.a5c.ai",
2224
+ "count": 0,
2225
+ "names": [],
2226
+ "items": [],
2227
+ "phases": {},
2228
+ "storage": "postgres",
2229
+ "yaml": null,
2230
+ "action": {
2231
+ "list": "Open AgentSessionTranscript records in kradle-org-default",
2232
+ "watch": "Watch AgentSessionTranscript updates in kradle-org-default",
2233
+ "apply": "Save resource changes",
2234
+ "delete": "Delete AgentSessionTranscript in kradle-org-default"
2235
+ }
2236
+ },
2237
+ {
2238
+ "kind": "ExternalBackendProvider",
2239
+ "plural": "externalbackendproviders",
2240
+ "apiResource": "externalbackendproviders.kradle.a5c.ai",
2241
+ "count": 0,
2242
+ "names": [],
2243
+ "items": [],
2244
+ "phases": {},
2245
+ "storage": "etcd",
2246
+ "yaml": null,
2247
+ "action": {
2248
+ "list": "Open ExternalBackendProvider records in kradle-org-default",
2249
+ "watch": "Watch ExternalBackendProvider updates in kradle-org-default",
2250
+ "apply": "Save resource changes",
2251
+ "delete": "Delete ExternalBackendProvider in kradle-org-default"
2252
+ }
2253
+ },
2254
+ {
2255
+ "kind": "ExternalBackendBinding",
2256
+ "plural": "externalbackendbindings",
2257
+ "apiResource": "externalbackendbindings.kradle.a5c.ai",
2258
+ "count": 0,
2259
+ "names": [],
2260
+ "items": [],
2261
+ "phases": {},
2262
+ "storage": "etcd",
2263
+ "yaml": null,
2264
+ "action": {
2265
+ "list": "Open ExternalBackendBinding records in kradle-org-default",
2266
+ "watch": "Watch ExternalBackendBinding updates in kradle-org-default",
2267
+ "apply": "Save resource changes",
2268
+ "delete": "Delete ExternalBackendBinding in kradle-org-default"
2269
+ }
2270
+ },
2271
+ {
2272
+ "kind": "ExternalBackendSyncPolicy",
2273
+ "plural": "externalbackendsyncpolicies",
2274
+ "apiResource": "externalbackendsyncpolicies.kradle.a5c.ai",
2275
+ "count": 0,
2276
+ "names": [],
2277
+ "items": [],
2278
+ "phases": {},
2279
+ "storage": "etcd",
2280
+ "yaml": null,
2281
+ "action": {
2282
+ "list": "Open ExternalBackendSyncPolicy records in kradle-org-default",
2283
+ "watch": "Watch ExternalBackendSyncPolicy updates in kradle-org-default",
2284
+ "apply": "Save resource changes",
2285
+ "delete": "Delete ExternalBackendSyncPolicy in kradle-org-default"
2286
+ }
2287
+ },
2288
+ {
2289
+ "kind": "ArtifactRegistry",
2290
+ "plural": "artifactregistries",
2291
+ "apiResource": "artifactregistries.kradle.a5c.ai",
2292
+ "count": 0,
2293
+ "names": [],
2294
+ "items": [],
2295
+ "phases": {},
2296
+ "storage": "etcd",
2297
+ "yaml": null,
2298
+ "action": {
2299
+ "list": "Open ArtifactRegistry records in kradle-org-default",
2300
+ "watch": "Watch ArtifactRegistry updates in kradle-org-default",
2301
+ "apply": "Save resource changes",
2302
+ "delete": "Delete ArtifactRegistry in kradle-org-default"
2303
+ }
2304
+ },
2305
+ {
2306
+ "kind": "ArtifactFeed",
2307
+ "plural": "artifactfeeds",
2308
+ "apiResource": "artifactfeeds.kradle.a5c.ai",
2309
+ "count": 0,
2310
+ "names": [],
2311
+ "items": [],
2312
+ "phases": {},
2313
+ "storage": "etcd",
2314
+ "yaml": null,
2315
+ "action": {
2316
+ "list": "Open ArtifactFeed records in kradle-org-default",
2317
+ "watch": "Watch ArtifactFeed updates in kradle-org-default",
2318
+ "apply": "Save resource changes",
2319
+ "delete": "Delete ArtifactFeed in kradle-org-default"
2320
+ }
2321
+ },
2322
+ {
2323
+ "kind": "ArtifactAccessPolicy",
2324
+ "plural": "artifactaccesspolicies",
2325
+ "apiResource": "artifactaccesspolicies.kradle.a5c.ai",
2326
+ "count": 0,
2327
+ "names": [],
2328
+ "items": [],
2329
+ "phases": {},
2330
+ "storage": "etcd",
2331
+ "yaml": null,
2332
+ "action": {
2333
+ "list": "Open ArtifactAccessPolicy records in kradle-org-default",
2334
+ "watch": "Watch ArtifactAccessPolicy updates in kradle-org-default",
2335
+ "apply": "Save resource changes",
2336
+ "delete": "Delete ArtifactAccessPolicy in kradle-org-default"
2337
+ }
2338
+ },
2339
+ {
2340
+ "kind": "ArtifactVersion",
2341
+ "plural": "artifactversions",
2342
+ "apiResource": "artifactversions.kradle.a5c.ai",
2343
+ "count": 0,
2344
+ "names": [],
2345
+ "items": [],
2346
+ "phases": {},
2347
+ "storage": "postgres",
2348
+ "yaml": null,
2349
+ "action": {
2350
+ "list": "Open ArtifactVersion records in kradle-org-default",
2351
+ "watch": "Watch ArtifactVersion updates in kradle-org-default",
2352
+ "apply": "Save resource changes",
2353
+ "delete": "Delete ArtifactVersion in kradle-org-default"
2354
+ }
2355
+ },
2356
+ {
2357
+ "kind": "ArtifactDownload",
2358
+ "plural": "artifactdownloads",
2359
+ "apiResource": "artifactdownloads.kradle.a5c.ai",
2360
+ "count": 0,
2361
+ "names": [],
2362
+ "items": [],
2363
+ "phases": {},
2364
+ "storage": "postgres",
2365
+ "yaml": null,
2366
+ "action": {
2367
+ "list": "Open ArtifactDownload records in kradle-org-default",
2368
+ "watch": "Watch ArtifactDownload updates in kradle-org-default",
2369
+ "apply": "Save resource changes",
2370
+ "delete": "Delete ArtifactDownload in kradle-org-default"
2371
+ }
2372
+ },
2373
+ {
2374
+ "kind": "KradleInferenceService",
2375
+ "plural": "kradleinferenceservices",
2376
+ "apiResource": "kradleinferenceservices.kradle.a5c.ai",
2377
+ "count": 0,
2378
+ "names": [],
2379
+ "items": [],
2380
+ "phases": {},
2381
+ "storage": "etcd",
2382
+ "yaml": null,
2383
+ "action": {
2384
+ "list": "Open KradleInferenceService records in kradle-org-default",
2385
+ "watch": "Watch KradleInferenceService updates in kradle-org-default",
2386
+ "apply": "Save resource changes",
2387
+ "delete": "Delete KradleInferenceService in kradle-org-default"
2388
+ }
2389
+ },
2390
+ {
2391
+ "kind": "KradleServingRuntime",
2392
+ "plural": "kradleservingruntimes",
2393
+ "apiResource": "kradleservingruntimes.kradle.a5c.ai",
2394
+ "count": 0,
2395
+ "names": [],
2396
+ "items": [],
2397
+ "phases": {},
2398
+ "storage": "etcd",
2399
+ "yaml": null,
2400
+ "action": {
2401
+ "list": "Open KradleServingRuntime records in kradle-org-default",
2402
+ "watch": "Watch KradleServingRuntime updates in kradle-org-default",
2403
+ "apply": "Save resource changes",
2404
+ "delete": "Delete KradleServingRuntime in kradle-org-default"
2405
+ }
2406
+ },
2407
+ {
2408
+ "kind": "JitsiMeetProvider",
2409
+ "plural": "jitsimeetproviders",
2410
+ "apiResource": "jitsimeetproviders.kradle.a5c.ai",
2411
+ "count": 0,
2412
+ "names": [],
2413
+ "items": [],
2414
+ "phases": {},
2415
+ "storage": "etcd",
2416
+ "yaml": null,
2417
+ "action": {
2418
+ "list": "Open JitsiMeetProvider records in kradle-org-default",
2419
+ "watch": "Watch JitsiMeetProvider updates in kradle-org-default",
2420
+ "apply": "Save resource changes",
2421
+ "delete": "Delete JitsiMeetProvider in kradle-org-default"
2422
+ }
2423
+ },
2424
+ {
2425
+ "kind": "JitsiMeetingTemplate",
2426
+ "plural": "jitsimeetingtemplates",
2427
+ "apiResource": "jitsimeetingtemplates.kradle.a5c.ai",
2428
+ "count": 0,
2429
+ "names": [],
2430
+ "items": [],
2431
+ "phases": {},
2432
+ "storage": "etcd",
2433
+ "yaml": null,
2434
+ "action": {
2435
+ "list": "Open JitsiMeetingTemplate records in kradle-org-default",
2436
+ "watch": "Watch JitsiMeetingTemplate updates in kradle-org-default",
2437
+ "apply": "Save resource changes",
2438
+ "delete": "Delete JitsiMeetingTemplate in kradle-org-default"
2439
+ }
2440
+ },
2441
+ {
2442
+ "kind": "JitsiMeeting",
2443
+ "plural": "jitsimeetings",
2444
+ "apiResource": "jitsimeetings.kradle.a5c.ai",
2445
+ "count": 0,
2446
+ "names": [],
2447
+ "items": [],
2448
+ "phases": {},
2449
+ "storage": "postgres",
2450
+ "yaml": null,
2451
+ "action": {
2452
+ "list": "Open JitsiMeeting records in kradle-org-default",
2453
+ "watch": "Watch JitsiMeeting updates in kradle-org-default",
2454
+ "apply": "Save resource changes",
2455
+ "delete": "Delete JitsiMeeting in kradle-org-default"
2456
+ }
2457
+ },
2458
+ {
2459
+ "kind": "JitsiRecording",
2460
+ "plural": "jitsirecordings",
2461
+ "apiResource": "jitsirecordings.kradle.a5c.ai",
2462
+ "count": 0,
2463
+ "names": [],
2464
+ "items": [],
2465
+ "phases": {},
2466
+ "storage": "postgres",
2467
+ "yaml": null,
2468
+ "action": {
2469
+ "list": "Open JitsiRecording records in kradle-org-default",
2470
+ "watch": "Watch JitsiRecording updates in kradle-org-default",
2471
+ "apply": "Save resource changes",
2472
+ "delete": "Delete JitsiRecording in kradle-org-default"
2473
+ }
2474
+ },
2475
+ {
2476
+ "kind": "Secret",
2477
+ "plural": "secrets",
2478
+ "apiResource": "secrets",
2479
+ "count": 0,
2480
+ "names": [],
2481
+ "items": [],
2482
+ "phases": {},
2483
+ "storage": "core",
2484
+ "yaml": null,
2485
+ "action": {
2486
+ "list": "Open Secret records in kradle-org-default",
2487
+ "watch": "Watch Secret updates in kradle-org-default",
2488
+ "apply": "Save resource changes",
2489
+ "delete": "Delete Secret in kradle-org-default"
2490
+ }
2491
+ },
2492
+ {
2493
+ "kind": "ConfigMap",
2494
+ "plural": "configmaps",
2495
+ "apiResource": "configmaps",
2496
+ "count": 0,
2497
+ "names": [],
2498
+ "items": [],
2499
+ "phases": {},
2500
+ "storage": "core",
2501
+ "yaml": null,
2502
+ "action": {
2503
+ "list": "Open ConfigMap records in kradle-org-default",
2504
+ "watch": "Watch ConfigMap updates in kradle-org-default",
2505
+ "apply": "Save resource changes",
2506
+ "delete": "Delete ConfigMap in kradle-org-default"
2507
+ }
2508
+ }
2509
+ ],
2510
+ "events": [
2511
+ {
2512
+ "type": "create",
2513
+ "storage": "kubernetes",
2514
+ "actor": "kubernetes",
2515
+ "allowed": true,
2516
+ "message": ""
2517
+ },
2518
+ {
2519
+ "type": "create",
2520
+ "storage": "kubernetes",
2521
+ "actor": "kubernetes",
2522
+ "allowed": true,
2523
+ "message": ""
2524
+ },
2525
+ {
2526
+ "type": "create",
2527
+ "storage": "kubernetes",
2528
+ "actor": "kubernetes",
2529
+ "allowed": true,
2530
+ "message": ""
2531
+ },
2532
+ {
2533
+ "type": "create",
2534
+ "storage": "kubernetes",
2535
+ "actor": "kubernetes",
2536
+ "allowed": true,
2537
+ "message": ""
2538
+ },
2539
+ {
2540
+ "type": "create",
2541
+ "storage": "kubernetes",
2542
+ "actor": "kubernetes",
2543
+ "allowed": true,
2544
+ "message": ""
2545
+ },
2546
+ {
2547
+ "type": "create",
2548
+ "storage": "kubernetes",
2549
+ "actor": "kubernetes",
2550
+ "allowed": true,
2551
+ "message": ""
2552
+ },
2553
+ {
2554
+ "type": "create",
2555
+ "storage": "kubernetes",
2556
+ "actor": "kubernetes",
2557
+ "allowed": true,
2558
+ "message": ""
2559
+ },
2560
+ {
2561
+ "type": "create",
2562
+ "storage": "kubernetes",
2563
+ "actor": "kubernetes",
2564
+ "allowed": true,
2565
+ "message": ""
2566
+ }
2567
+ ],
2568
+ "auditLog": [],
2569
+ "delivery": {
2570
+ "installed": false,
2571
+ "specVersion": "v0.3.0",
2572
+ "counts": {
2573
+ "applications": 0,
2574
+ "releases": 0,
2575
+ "components": 0,
2576
+ "workloads": 0,
2577
+ "traits": 0,
2578
+ "scopes": 0,
2579
+ "policyDefinitions": 0,
2580
+ "policies": 0,
2581
+ "automationSteps": 0,
2582
+ "automations": 0,
2583
+ "managedResources": 0
2584
+ },
2585
+ "capabilityCatalog": {
2586
+ "components": [],
2587
+ "workloads": [],
2588
+ "traits": [],
2589
+ "scopes": [],
2590
+ "policyDefinitions": [],
2591
+ "policies": [],
2592
+ "automationSteps": []
2593
+ },
2594
+ "applications": [],
2595
+ "runtime": {
2596
+ "releases": [],
2597
+ "automations": [],
2598
+ "policies": [],
2599
+ "managedResources": []
2600
+ }
2601
+ },
2602
+ "policyEngine": {
2603
+ "engine": "kyverno",
2604
+ "mode": "disabled",
2605
+ "health": "disabled",
2606
+ "detected": false,
2607
+ "namespace": "kyverno",
2608
+ "policyNamespace": "kradle-org-default",
2609
+ "requireForEnforceMode": true,
2610
+ "org": "default",
2611
+ "profiles": [],
2612
+ "templates": [],
2613
+ "bindings": [],
2614
+ "exceptionRequests": [],
2615
+ "kyvernoResources": {},
2616
+ "controllers": [],
2617
+ "permissions": [],
2618
+ "reports": {
2619
+ "policyReports": 0,
2620
+ "clusterPolicyReports": 0,
2621
+ "results": []
2622
+ },
2623
+ "violations": [],
2624
+ "degraded": [],
2625
+ "emptyState": "Kyverno integration is disabled. Kradle native RefPolicy and BranchProtection remain available."
2626
+ },
2627
+ "agents": {
2628
+ "org": "default",
2629
+ "stacks": {
2630
+ "count": 0,
2631
+ "items": []
2632
+ },
2633
+ "runs": {
2634
+ "count": 0,
2635
+ "items": [],
2636
+ "active": []
2637
+ },
2638
+ "rules": {
2639
+ "count": 0,
2640
+ "items": []
2641
+ },
2642
+ "sessions": {
2643
+ "count": 0,
2644
+ "items": []
2645
+ },
2646
+ "workspaces": {
2647
+ "count": 0,
2648
+ "items": []
2649
+ },
2650
+ "approvals": {
2651
+ "count": 0,
2652
+ "items": [],
2653
+ "pending": []
2654
+ },
2655
+ "adapters": {
2656
+ "count": 0,
2657
+ "items": []
2658
+ },
2659
+ "providers": {
2660
+ "count": 0,
2661
+ "items": []
2662
+ },
2663
+ "projects": {
2664
+ "count": 0,
2665
+ "items": []
2666
+ },
2667
+ "gateway": null,
2668
+ "transcripts": {
2669
+ "count": 0,
2670
+ "items": []
2671
+ },
2672
+ "meetings": {
2673
+ "count": 0,
2674
+ "items": [],
2675
+ "active": []
2676
+ },
2677
+ "memoryRepositories": {
2678
+ "count": 0,
2679
+ "items": []
2680
+ },
2681
+ "memorySnapshots": {
2682
+ "count": 0,
2683
+ "items": []
2684
+ },
2685
+ "memoryImports": {
2686
+ "count": 0,
2687
+ "items": [],
2688
+ "pending": []
2689
+ }
2690
+ },
2691
+ "identity": {
2692
+ "counts": {
2693
+ "users": 1,
2694
+ "teams": 1,
2695
+ "pendingInvites": 1,
2696
+ "mappings": 1,
2697
+ "repositoryGrants": 0,
2698
+ "sshKeys": 0
2699
+ },
2700
+ "providers": [
2701
+ {
2702
+ "name": "github",
2703
+ "label": "GitHub",
2704
+ "type": "github",
2705
+ "enabled": true,
2706
+ "phase": "Configured"
2707
+ },
2708
+ {
2709
+ "name": "sso",
2710
+ "label": "Workspace SSO",
2711
+ "type": "oidc",
2712
+ "enabled": false,
2713
+ "phase": "Disabled"
2714
+ }
2715
+ ],
2716
+ "users": [
2717
+ {
2718
+ "name": "admin",
2719
+ "displayName": "Admin",
2720
+ "email": "admin@example.com",
2721
+ "teams": [
2722
+ "maintainers"
2723
+ ],
2724
+ "admin": true,
2725
+ "disabled": false,
2726
+ "phase": "Active"
2727
+ }
2728
+ ],
2729
+ "teams": [
2730
+ {
2731
+ "name": "maintainers",
2732
+ "displayName": "Maintainers",
2733
+ "members": [
2734
+ "admin"
2735
+ ],
2736
+ "maintainers": [
2737
+ "admin"
2738
+ ],
2739
+ "repositoryGrants": [
2740
+ {
2741
+ "repository": "kradle-demo",
2742
+ "permission": "admin"
2743
+ }
2744
+ ]
2745
+ }
2746
+ ],
2747
+ "invites": [
2748
+ {
2749
+ "name": "new-user-example-com",
2750
+ "email": "new-user@example.com",
2751
+ "role": "member",
2752
+ "teams": [
2753
+ "maintainers"
2754
+ ],
2755
+ "phase": "Pending",
2756
+ "expiresAt": "2026-06-10T15:39:44.024Z"
2757
+ }
2758
+ ],
2759
+ "mappings": [
2760
+ {
2761
+ "name": "sso-admin",
2762
+ "user": "admin",
2763
+ "provider": "sso",
2764
+ "workspaceIdentity": "admin@example.com",
2765
+ "repositoryIdentity": "admin",
2766
+ "phase": "Synced"
2767
+ }
2768
+ ],
2769
+ "permissions": [],
2770
+ "sshKeys": [],
2771
+ "reconciliation": {
2772
+ "counts": {
2773
+ "User": 1,
2774
+ "Team": 1,
2775
+ "Invite": 1,
2776
+ "IdentityMapping": 1
2777
+ },
2778
+ "phases": {
2779
+ "Active": 2,
2780
+ "Pending": 1,
2781
+ "Synced": 1
2782
+ },
2783
+ "statuses": [
2784
+ {
2785
+ "kind": "User",
2786
+ "name": "admin",
2787
+ "phase": "Active",
2788
+ "checks": [
2789
+ "User Observed: ready",
2790
+ "Workspace Identity Projected: ready",
2791
+ "Repository Identity Projected: ready"
2792
+ ]
2793
+ },
2794
+ {
2795
+ "kind": "Team",
2796
+ "name": "maintainers",
2797
+ "phase": "Active",
2798
+ "checks": [
2799
+ "Team Observed: ready",
2800
+ "Team Membership Projected: ready",
2801
+ "Repository Grants Projected: ready"
2802
+ ]
2803
+ },
2804
+ {
2805
+ "kind": "Invite",
2806
+ "name": "new-user-example-com",
2807
+ "phase": "Pending",
2808
+ "checks": [
2809
+ "Invite Observed: ready",
2810
+ "Invite Lifecycle Tracked: ready"
2811
+ ]
2812
+ },
2813
+ {
2814
+ "kind": "IdentityMapping",
2815
+ "name": "sso-admin",
2816
+ "phase": "Synced",
2817
+ "checks": [
2818
+ "Identity Mapping Observed: ready",
2819
+ "Workspace Identity Projected: ready",
2820
+ "Repository Identity Projected: ready"
2821
+ ]
2822
+ }
2823
+ ],
2824
+ "nextActions": [
2825
+ "ensure user: admin",
2826
+ "ensure repository user: admin",
2827
+ "sync team membership: maintainers",
2828
+ "sync team repository grant: maintainers",
2829
+ "send invite: workspace access",
2830
+ "link identity: admin",
2831
+ "link repository identity: admin"
2832
+ ]
2833
+ },
2834
+ "org": "default"
2835
+ },
2836
+ "validation": [
2837
+ {
2838
+ "name": "Kradle workspace is connected",
2839
+ "passed": false,
2840
+ "evidence": "runtime snapshot supplied outside the Kradle workspace path"
2841
+ },
2842
+ {
2843
+ "name": "Kradle API surface is discoverable",
2844
+ "passed": true,
2845
+ "evidence": "0 Kradle resources discovered"
2846
+ },
2847
+ {
2848
+ "name": "Repository management uses org-scoped Kradle actions",
2849
+ "passed": true,
2850
+ "evidence": "/api/orgs/:org/repositories and /api/orgs/:org/resources call src/kubernetes-controller.js"
2851
+ },
2852
+ {
2853
+ "name": "Kradle API is separated from delivery execution",
2854
+ "passed": true,
2855
+ "evidence": "src/api-controller.js delegates resource operations through the Kradle gateway"
2856
+ },
2857
+ {
2858
+ "name": "Live streams use Kradle watch",
2859
+ "passed": true,
2860
+ "evidence": "/api/watch/orgs/:org/* uses Kradle live updates"
2861
+ },
2862
+ {
2863
+ "name": "UI renders live and empty states without demo data",
2864
+ "passed": true,
2865
+ "evidence": "apps/web Server Components consume fetchControllerUiModel() only"
2866
+ }
2867
+ ],
2868
+ "permissions": [],
2869
+ "views": {
2870
+ "dashboard": {
2871
+ "repositories": [
2872
+ {
2873
+ "apiVersion": "kradle.a5c.ai/v1alpha1",
2874
+ "kind": "Repository",
2875
+ "metadata": {
2876
+ "namespace": "kradle-org-default",
2877
+ "labels": {
2878
+ "gitBackend": "gitea"
2879
+ },
2880
+ "annotations": {},
2881
+ "name": "kradle-demo",
2882
+ "resourceVersion": "1"
2883
+ },
2884
+ "spec": {
2885
+ "organizationRef": "default",
2886
+ "visibility": "private",
2887
+ "gitHosting": {
2888
+ "backend": "gitea",
2889
+ "owner": "kradle",
2890
+ "repository": "kradle-demo",
2891
+ "branch": "main",
2892
+ "httpUrl": "http://kradle-gitea-http:3000/kradle/kradle-demo.git",
2893
+ "sshUrl": "ssh://git@kradle-gitea-ssh/kradle/kradle-demo.git",
2894
+ "deployKeyTitle": "kradle-argocd",
2895
+ "organization": {
2896
+ "kind": "Organization",
2897
+ "name": "kradle",
2898
+ "delegatedTo": "Gitea /api/v1/orgs"
2899
+ },
2900
+ "sshKeys": {
2901
+ "kind": "SSHKey",
2902
+ "scopes": [
2903
+ "user",
2904
+ "deploy",
2905
+ "argocd"
2906
+ ],
2907
+ "delegatedTo": "Gitea /api/v1/user/keys and /repos/{owner}/{repo}/keys"
2908
+ },
2909
+ "permissions": {
2910
+ "kind": "RepositoryPermission",
2911
+ "defaultCollaborator": "write",
2912
+ "adminTeam": "maintainers",
2913
+ "delegatedTo": "Gitea collaborators and team repository APIs"
2914
+ },
2915
+ "forgeRecords": {
2916
+ "issues": "Gitea /repos/kradle/_kradle-org-default_/issues",
2917
+ "pullRequests": "Gitea /repos/{owner}/{repo}/pulls"
2918
+ },
2919
+ "issueSync": {
2920
+ "backend": "gitea",
2921
+ "owner": "kradle-org-default",
2922
+ "repo": "_kradle-org-default_",
2923
+ "issue": "<issue>",
2924
+ "project": null,
2925
+ "repositoryRefs": [
2926
+ "kradle-demo"
2927
+ ],
2928
+ "metadataKeys": [
2929
+ "kradle.a5c.ai/project",
2930
+ "kradle.a5c.ai/repositories"
2931
+ ],
2932
+ "actions": [
2933
+ {
2934
+ "action": "ensureOrgMemoryRepository",
2935
+ "owner": "kradle-org-default",
2936
+ "repo": "_kradle-org-default_"
2937
+ },
2938
+ {
2939
+ "action": "syncIssue",
2940
+ "owner": "kradle-org-default",
2941
+ "repo": "_kradle-org-default_",
2942
+ "issue": "<issue>"
2943
+ },
2944
+ {
2945
+ "action": "writeIssueRepositoryMetadata",
2946
+ "issue": "<issue>",
2947
+ "repositories": [
2948
+ "kradle-demo"
2949
+ ]
2950
+ }
2951
+ ]
2952
+ },
2953
+ "webhookUrl": "http://kradle-webhook-worker/repositories/kradle-org-default/kradle-demo",
2954
+ "integrationPlan": {
2955
+ "backend": "gitea",
2956
+ "operations": [
2957
+ {
2958
+ "action": "createOrganization",
2959
+ "owner": "kradle"
2960
+ },
2961
+ {
2962
+ "action": "createRepository",
2963
+ "owner": "kradle",
2964
+ "repo": "kradle-demo"
2965
+ },
2966
+ {
2967
+ "action": "ensureUserMappings",
2968
+ "owner": "kradle"
2969
+ },
2970
+ {
2971
+ "action": "addDeployKey",
2972
+ "owner": "kradle",
2973
+ "repo": "kradle-demo",
2974
+ "title": "kradle-argocd",
2975
+ "readOnly": false
2976
+ },
2977
+ {
2978
+ "action": "addUserSshKey",
2979
+ "owner": "kradle",
2980
+ "repo": "kradle-demo",
2981
+ "title": "developer key"
2982
+ },
2983
+ {
2984
+ "action": "addCollaborator",
2985
+ "owner": "kradle",
2986
+ "repo": "kradle-demo",
2987
+ "permission": "write"
2988
+ },
2989
+ {
2990
+ "action": "addTeamRepository",
2991
+ "owner": "kradle",
2992
+ "repo": "kradle-demo",
2993
+ "team": "maintainers",
2994
+ "permission": "admin"
2995
+ },
2996
+ {
2997
+ "action": "protectBranch",
2998
+ "owner": "kradle",
2999
+ "repo": "kradle-demo",
3000
+ "branch": "main"
3001
+ },
3002
+ {
3003
+ "action": "createWebhook",
3004
+ "owner": "kradle",
3005
+ "repo": "kradle-demo",
3006
+ "url": "http://kradle-webhook-worker/repositories/kradle-org-default/kradle-demo"
3007
+ }
3008
+ ]
3009
+ }
3010
+ },
3011
+ "storage": {
3012
+ "mode": "gitea",
3013
+ "persistentVolumeClaim": "kradle-gitea-data",
3014
+ "owner": "kradle",
3015
+ "repository": "kradle-demo",
3016
+ "httpUrl": "http://kradle-gitea-http:3000/kradle/kradle-demo.git",
3017
+ "sshUrl": "ssh://git@kradle-gitea-ssh/kradle/kradle-demo.git"
3018
+ },
3019
+ "objectStorage": {
3020
+ "lfs": true,
3021
+ "artifacts": true
3022
+ },
3023
+ "search": {
3024
+ "provider": "zoekt",
3025
+ "enabled": false
3026
+ }
3027
+ },
3028
+ "status": {
3029
+ "ready": true,
3030
+ "route": {
3031
+ "repositoryName": "kradle-demo",
3032
+ "backend": "gitea",
3033
+ "owner": "kradle",
3034
+ "store": "gitea-primary",
3035
+ "receivePackReady": true,
3036
+ "httpUrl": "http://kradle-gitea-http:3000/kradle/kradle-demo.git",
3037
+ "sshUrl": "ssh://git@kradle-gitea-ssh/kradle/kradle-demo.git"
3038
+ },
3039
+ "gitHosting": {
3040
+ "backend": "gitea",
3041
+ "httpUrl": "http://kradle-gitea-http:3000/kradle/kradle-demo.git",
3042
+ "sshUrl": "ssh://git@kradle-gitea-ssh/kradle/kradle-demo.git",
3043
+ "integrationPlan": {
3044
+ "backend": "gitea",
3045
+ "operations": [
3046
+ {
3047
+ "action": "createOrganization",
3048
+ "owner": "kradle"
3049
+ },
3050
+ {
3051
+ "action": "createRepository",
3052
+ "owner": "kradle",
3053
+ "repo": "kradle-demo"
3054
+ },
3055
+ {
3056
+ "action": "ensureUserMappings",
3057
+ "owner": "kradle"
3058
+ },
3059
+ {
3060
+ "action": "addDeployKey",
3061
+ "owner": "kradle",
3062
+ "repo": "kradle-demo",
3063
+ "title": "kradle-argocd",
3064
+ "readOnly": false
3065
+ },
3066
+ {
3067
+ "action": "addUserSshKey",
3068
+ "owner": "kradle",
3069
+ "repo": "kradle-demo",
3070
+ "title": "developer key"
3071
+ },
3072
+ {
3073
+ "action": "addCollaborator",
3074
+ "owner": "kradle",
3075
+ "repo": "kradle-demo",
3076
+ "permission": "write"
3077
+ },
3078
+ {
3079
+ "action": "addTeamRepository",
3080
+ "owner": "kradle",
3081
+ "repo": "kradle-demo",
3082
+ "team": "maintainers",
3083
+ "permission": "admin"
3084
+ },
3085
+ {
3086
+ "action": "protectBranch",
3087
+ "owner": "kradle",
3088
+ "repo": "kradle-demo",
3089
+ "branch": "main"
3090
+ },
3091
+ {
3092
+ "action": "createWebhook",
3093
+ "owner": "kradle",
3094
+ "repo": "kradle-demo",
3095
+ "url": "http://kradle-webhook-worker/repositories/kradle-org-default/kradle-demo"
3096
+ }
3097
+ ]
3098
+ }
3099
+ },
3100
+ "storage": "etcd"
3101
+ }
3102
+ }
3103
+ ],
3104
+ "projects": [],
3105
+ "issues": [],
3106
+ "issueSync": {
3107
+ "gitea": {
3108
+ "backend": "gitea",
3109
+ "owner": "default",
3110
+ "repo": "_default_",
3111
+ "issue": "<issue>",
3112
+ "project": null,
3113
+ "repositoryRefs": [
3114
+ "kradle-demo"
3115
+ ],
3116
+ "metadataKeys": [
3117
+ "kradle.a5c.ai/project",
3118
+ "kradle.a5c.ai/repositories"
3119
+ ],
3120
+ "actions": [
3121
+ {
3122
+ "action": "ensureOrgMemoryRepository",
3123
+ "owner": "default",
3124
+ "repo": "_default_"
3125
+ },
3126
+ {
3127
+ "action": "syncIssue",
3128
+ "owner": "default",
3129
+ "repo": "_default_",
3130
+ "issue": "<issue>"
3131
+ },
3132
+ {
3133
+ "action": "writeIssueRepositoryMetadata",
3134
+ "issue": "<issue>",
3135
+ "repositories": [
3136
+ "kradle-demo"
3137
+ ]
3138
+ }
3139
+ ]
3140
+ },
3141
+ "github": {
3142
+ "backend": "github",
3143
+ "owner": "default",
3144
+ "project": null,
3145
+ "issue": "<issue>",
3146
+ "repositoryRefs": [
3147
+ "kradle-demo"
3148
+ ],
3149
+ "metadataKeys": [
3150
+ "project item fields",
3151
+ "kradle repositories field"
3152
+ ],
3153
+ "actions": [
3154
+ "syncProjectItem",
3155
+ "syncIssueMetadata",
3156
+ "syncRepositoryLinks"
3157
+ ]
3158
+ }
3159
+ },
3160
+ "excellentFlows": [
3161
+ "Create or import a repository",
3162
+ "Browse code and copy clone commands",
3163
+ "Review and merge a pull request",
3164
+ "Debug a failing pipeline run",
3165
+ "Edit runner pool capacity",
3166
+ "Inspect and replay webhook deliveries",
3167
+ "Save a triage View"
3168
+ ],
3169
+ "cards": [
3170
+ {
3171
+ "label": "Repositories",
3172
+ "value": 1,
3173
+ "href": "/repositories"
3174
+ },
3175
+ {
3176
+ "label": "Projects",
3177
+ "value": 0,
3178
+ "href": "/agents/projects"
3179
+ },
3180
+ {
3181
+ "label": "Issues",
3182
+ "value": 0,
3183
+ "href": "/inbox"
3184
+ },
3185
+ {
3186
+ "label": "Pull requests",
3187
+ "value": 0,
3188
+ "href": "/inbox"
3189
+ },
3190
+ {
3191
+ "label": "Runs",
3192
+ "value": 0,
3193
+ "href": "/runs"
3194
+ },
3195
+ {
3196
+ "label": "Runner pools",
3197
+ "value": 1,
3198
+ "href": "/runners-ci"
3199
+ },
3200
+ {
3201
+ "label": "Webhook deliveries",
3202
+ "value": 0,
3203
+ "href": "/hooks-events"
3204
+ }
3205
+ ]
3206
+ },
3207
+ "pullRequestReview": null,
3208
+ "failingRun": null,
3209
+ "runnerPoolEditor": {
3210
+ "resource": {
3211
+ "apiVersion": "kradle.a5c.ai/v1alpha1",
3212
+ "kind": "RunnerPool",
3213
+ "metadata": {
3214
+ "namespace": "kradle-org-default",
3215
+ "labels": {
3216
+ "trustTier": "trusted"
3217
+ },
3218
+ "annotations": {},
3219
+ "name": "trusted-linux",
3220
+ "resourceVersion": "1"
3221
+ },
3222
+ "spec": {
3223
+ "organizationRef": "default",
3224
+ "image": "ubuntu:24.04",
3225
+ "warmReplicas": 1,
3226
+ "maxReplicas": 4,
3227
+ "trustTier": "trusted",
3228
+ "cache": {
3229
+ "type": "object-storage"
3230
+ },
3231
+ "scalingMetric": "queueDepth"
3232
+ },
3233
+ "status": {
3234
+ "readyReplicas": 1,
3235
+ "queueDepth": 0,
3236
+ "storage": "etcd"
3237
+ }
3238
+ },
3239
+ "fields": [
3240
+ "image",
3241
+ "resources",
3242
+ "warmReplicas",
3243
+ "maxReplicas",
3244
+ "trustTier",
3245
+ "cache"
3246
+ ],
3247
+ "saveModes": [
3248
+ "save capacity",
3249
+ "open review"
3250
+ ],
3251
+ "yaml": "apiVersion: kradle.a5c.ai/v1alpha1\nkind: RunnerPool\nmetadata:\n namespace: kradle-org-default\n labels:\n trustTier: trusted\n annotations:\n name: trusted-linux\n resourceVersion: 1\nspec:\n organizationRef: default\n image: ubuntu:24.04\n warmReplicas: 1\n maxReplicas: 4\n trustTier: trusted\n cache:\n type: object-storage\n scalingMetric: queueDepth\nstatus:\n readyReplicas: 1\n queueDepth: 0\n storage: etcd\n"
3252
+ },
3253
+ "webhookInspector": {
3254
+ "subscription": {
3255
+ "apiVersion": "kradle.a5c.ai/v1alpha1",
3256
+ "kind": "WebhookSubscription",
3257
+ "metadata": {
3258
+ "namespace": "kradle-org-default",
3259
+ "labels": {},
3260
+ "annotations": {},
3261
+ "name": "chatops",
3262
+ "resourceVersion": "1"
3263
+ },
3264
+ "spec": {
3265
+ "organizationRef": "default",
3266
+ "url": "https://hooks.example.test/kradle",
3267
+ "events": [
3268
+ "pullrequest.created",
3269
+ "pullrequest.merged"
3270
+ ],
3271
+ "signing": {
3272
+ "algorithm": "hmac-sha256",
3273
+ "secretRef": "chatops-secret"
3274
+ },
3275
+ "mode": "active"
3276
+ },
3277
+ "status": {
3278
+ "ready": true,
3279
+ "storage": "etcd"
3280
+ }
3281
+ },
3282
+ "deliveries": [],
3283
+ "columns": [
3284
+ "phase",
3285
+ "signature",
3286
+ "attempts",
3287
+ "response",
3288
+ "latency"
3289
+ ],
3290
+ "actions": [
3291
+ "replay",
3292
+ "disable subscription",
3293
+ "copy curl"
3294
+ ]
3295
+ },
3296
+ "triageView": null,
3297
+ "identityAdmin": {
3298
+ "counts": {
3299
+ "users": 1,
3300
+ "teams": 1,
3301
+ "pendingInvites": 1,
3302
+ "mappings": 1,
3303
+ "repositoryGrants": 0,
3304
+ "sshKeys": 0
3305
+ },
3306
+ "providers": [
3307
+ {
3308
+ "name": "github",
3309
+ "label": "GitHub",
3310
+ "type": "github",
3311
+ "enabled": true,
3312
+ "phase": "Configured"
3313
+ },
3314
+ {
3315
+ "name": "sso",
3316
+ "label": "Workspace SSO",
3317
+ "type": "oidc",
3318
+ "enabled": false,
3319
+ "phase": "Disabled"
3320
+ }
3321
+ ],
3322
+ "users": [
3323
+ {
3324
+ "name": "admin",
3325
+ "displayName": "Admin",
3326
+ "email": "admin@example.com",
3327
+ "teams": [
3328
+ "maintainers"
3329
+ ],
3330
+ "admin": true,
3331
+ "disabled": false,
3332
+ "phase": "Active"
3333
+ }
3334
+ ],
3335
+ "teams": [
3336
+ {
3337
+ "name": "maintainers",
3338
+ "displayName": "Maintainers",
3339
+ "members": [
3340
+ "admin"
3341
+ ],
3342
+ "maintainers": [
3343
+ "admin"
3344
+ ],
3345
+ "repositoryGrants": [
3346
+ {
3347
+ "repository": "kradle-demo",
3348
+ "permission": "admin"
3349
+ }
3350
+ ]
3351
+ }
3352
+ ],
3353
+ "invites": [
3354
+ {
3355
+ "name": "new-user-example-com",
3356
+ "email": "new-user@example.com",
3357
+ "role": "member",
3358
+ "teams": [
3359
+ "maintainers"
3360
+ ],
3361
+ "phase": "Pending",
3362
+ "expiresAt": "2026-06-10T15:39:44.024Z"
3363
+ }
3364
+ ],
3365
+ "mappings": [
3366
+ {
3367
+ "name": "sso-admin",
3368
+ "user": "admin",
3369
+ "provider": "sso",
3370
+ "workspaceIdentity": "admin@example.com",
3371
+ "repositoryIdentity": "admin",
3372
+ "phase": "Synced"
3373
+ }
3374
+ ],
3375
+ "permissions": [],
3376
+ "sshKeys": [],
3377
+ "reconciliation": {
3378
+ "counts": {
3379
+ "User": 1,
3380
+ "Team": 1,
3381
+ "Invite": 1,
3382
+ "IdentityMapping": 1
3383
+ },
3384
+ "phases": {
3385
+ "Active": 2,
3386
+ "Pending": 1,
3387
+ "Synced": 1
3388
+ },
3389
+ "statuses": [
3390
+ {
3391
+ "kind": "User",
3392
+ "name": "admin",
3393
+ "phase": "Active",
3394
+ "checks": [
3395
+ "User Observed: ready",
3396
+ "Workspace Identity Projected: ready",
3397
+ "Repository Identity Projected: ready"
3398
+ ]
3399
+ },
3400
+ {
3401
+ "kind": "Team",
3402
+ "name": "maintainers",
3403
+ "phase": "Active",
3404
+ "checks": [
3405
+ "Team Observed: ready",
3406
+ "Team Membership Projected: ready",
3407
+ "Repository Grants Projected: ready"
3408
+ ]
3409
+ },
3410
+ {
3411
+ "kind": "Invite",
3412
+ "name": "new-user-example-com",
3413
+ "phase": "Pending",
3414
+ "checks": [
3415
+ "Invite Observed: ready",
3416
+ "Invite Lifecycle Tracked: ready"
3417
+ ]
3418
+ },
3419
+ {
3420
+ "kind": "IdentityMapping",
3421
+ "name": "sso-admin",
3422
+ "phase": "Synced",
3423
+ "checks": [
3424
+ "Identity Mapping Observed: ready",
3425
+ "Workspace Identity Projected: ready",
3426
+ "Repository Identity Projected: ready"
3427
+ ]
3428
+ }
3429
+ ],
3430
+ "nextActions": [
3431
+ "ensure user: admin",
3432
+ "ensure repository user: admin",
3433
+ "sync team membership: maintainers",
3434
+ "sync team repository grant: maintainers",
3435
+ "send invite: workspace access",
3436
+ "link identity: admin",
3437
+ "link repository identity: admin"
3438
+ ]
3439
+ },
3440
+ "org": "default"
3441
+ },
3442
+ "policyCenter": {
3443
+ "engine": "kyverno",
3444
+ "mode": "disabled",
3445
+ "health": "disabled",
3446
+ "detected": false,
3447
+ "namespace": "kyverno",
3448
+ "policyNamespace": "kradle-org-default",
3449
+ "requireForEnforceMode": true,
3450
+ "org": "default",
3451
+ "profiles": [],
3452
+ "templates": [],
3453
+ "bindings": [],
3454
+ "exceptionRequests": [],
3455
+ "kyvernoResources": {},
3456
+ "controllers": [],
3457
+ "permissions": [],
3458
+ "reports": {
3459
+ "policyReports": 0,
3460
+ "clusterPolicyReports": 0,
3461
+ "results": []
3462
+ },
3463
+ "violations": [],
3464
+ "degraded": [],
3465
+ "emptyState": "Kyverno integration is disabled. Kradle native RefPolicy and BranchProtection remain available."
3466
+ }
3467
+ },
3468
+ "operations": {
3469
+ "image": "ghcr.io/<owner>/<repo>/kradle-controller",
3470
+ "chart": "charts/kradle",
3471
+ "installCommands": [
3472
+ "Install Kradle release package",
3473
+ "Apply the demo workspace configuration"
3474
+ ],
3475
+ "releaseGates": [
3476
+ "npm run check",
3477
+ "docker build",
3478
+ "helm package charts/kradle",
3479
+ "npm pack --json"
3480
+ ]
3481
+ }
3482
+ }