@a5c-ai/krate 5.0.1-staging.04a3db697 → 5.0.1-staging.0691d744b
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.
- package/dist/krate-controller-ui.json +146 -8
- package/dist/krate-lifecycle.json +1 -1
- package/dist/krate-runtime-snapshot.json +223 -53
- package/dist/krate-summary.json +5 -3
- package/docs/openapi.yaml +1275 -0
- package/package.json +1 -1
- package/scripts/validate-ui.mjs +246 -196
- package/src/agent-trigger-controller.js +60 -0
- package/src/agent-workspace-controller.js +257 -2
- package/src/controller-client.js +112 -50
- package/src/controller-ui.js +79 -12
- package/src/data-plane.js +3 -2
- package/src/gitea-backend.js +36 -0
- package/src/index.js +2 -0
- package/src/kubernetes-controller-async.js +23 -3
- package/src/kubernetes-controller.js +8 -2
- package/src/notification-controller.js +178 -0
- package/src/resource-model.js +2 -2
- package/src/runner-controller.js +272 -0
- package/tests/codespace-controller.test.js +318 -0
- package/tests/controller-client.test.js +133 -0
- package/tests/deployment.test.js +33 -20
- package/tests/e2e/lifecycle.test.js +4 -1
- package/tests/event-bus-integration.test.js +190 -0
- package/tests/krate.test.js +53 -1
- package/tests/notification-controller.test.js +196 -0
- package/tests/notification-integration.test.js +179 -0
- package/tests/runner-controller.test.js +327 -0
- package/tests/runner-integration.test.js +231 -0
- package/tests/snapshot-performance.test.js +68 -0
- package/tests/webhook-trigger.test.js +198 -0
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"platformNamespace": "krate-org-default"
|
|
20
20
|
}
|
|
21
21
|
],
|
|
22
|
-
"generatedAt": "2026-05-
|
|
22
|
+
"generatedAt": "2026-05-17T08:51:14.066Z",
|
|
23
23
|
"correlationId": null,
|
|
24
24
|
"controller": {
|
|
25
25
|
"mode": "krate-workspace",
|
|
@@ -293,6 +293,8 @@
|
|
|
293
293
|
"invites": 1,
|
|
294
294
|
"repositories": 1,
|
|
295
295
|
"pullRequests": 0,
|
|
296
|
+
"issues": 0,
|
|
297
|
+
"projects": 0,
|
|
296
298
|
"pipelines": 0,
|
|
297
299
|
"jobs": 0,
|
|
298
300
|
"runnerPools": 1,
|
|
@@ -327,7 +329,9 @@
|
|
|
327
329
|
"area": "api",
|
|
328
330
|
"resources": [
|
|
329
331
|
"Repository",
|
|
332
|
+
"KrateProject",
|
|
330
333
|
"PullRequest",
|
|
334
|
+
"Issue",
|
|
331
335
|
"Pipeline"
|
|
332
336
|
],
|
|
333
337
|
"docs": "src/api-controller.js"
|
|
@@ -579,7 +583,7 @@
|
|
|
579
583
|
"maintainers"
|
|
580
584
|
],
|
|
581
585
|
"invitedBy": "admin",
|
|
582
|
-
"expiresAt": "2026-05-
|
|
586
|
+
"expiresAt": "2026-05-24T08:51:14.063Z"
|
|
583
587
|
},
|
|
584
588
|
"status": {
|
|
585
589
|
"phase": "Pending",
|
|
@@ -591,7 +595,7 @@
|
|
|
591
595
|
"Pending": 1
|
|
592
596
|
},
|
|
593
597
|
"storage": "etcd",
|
|
594
|
-
"yaml": "apiVersion: krate.a5c.ai/v1alpha1\nkind: Invite\nmetadata:\n namespace: krate-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-05-
|
|
598
|
+
"yaml": "apiVersion: krate.a5c.ai/v1alpha1\nkind: Invite\nmetadata:\n namespace: krate-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-05-24T08:51:14.063Z\nstatus:\n phase: Pending\n storage: etcd\n",
|
|
595
599
|
"action": {
|
|
596
600
|
"list": "Open Invite records in krate-org-default",
|
|
597
601
|
"watch": "Watch Invite updates in krate-org-default",
|
|
@@ -803,9 +807,43 @@
|
|
|
803
807
|
"delegatedTo": "Gitea collaborators and team repository APIs"
|
|
804
808
|
},
|
|
805
809
|
"forgeRecords": {
|
|
806
|
-
"issues": "Gitea /repos/
|
|
810
|
+
"issues": "Gitea /repos/krate/_krate-org-default_/issues",
|
|
807
811
|
"pullRequests": "Gitea /repos/{owner}/{repo}/pulls"
|
|
808
812
|
},
|
|
813
|
+
"issueSync": {
|
|
814
|
+
"backend": "gitea",
|
|
815
|
+
"owner": "krate-org-default",
|
|
816
|
+
"repo": "_krate-org-default_",
|
|
817
|
+
"issue": "<issue>",
|
|
818
|
+
"project": null,
|
|
819
|
+
"repositoryRefs": [
|
|
820
|
+
"krate-demo"
|
|
821
|
+
],
|
|
822
|
+
"metadataKeys": [
|
|
823
|
+
"krate.a5c.ai/project",
|
|
824
|
+
"krate.a5c.ai/repositories"
|
|
825
|
+
],
|
|
826
|
+
"actions": [
|
|
827
|
+
{
|
|
828
|
+
"action": "ensureOrgMemoryRepository",
|
|
829
|
+
"owner": "krate-org-default",
|
|
830
|
+
"repo": "_krate-org-default_"
|
|
831
|
+
},
|
|
832
|
+
{
|
|
833
|
+
"action": "syncIssue",
|
|
834
|
+
"owner": "krate-org-default",
|
|
835
|
+
"repo": "_krate-org-default_",
|
|
836
|
+
"issue": "<issue>"
|
|
837
|
+
},
|
|
838
|
+
{
|
|
839
|
+
"action": "writeIssueRepositoryMetadata",
|
|
840
|
+
"issue": "<issue>",
|
|
841
|
+
"repositories": [
|
|
842
|
+
"krate-demo"
|
|
843
|
+
]
|
|
844
|
+
}
|
|
845
|
+
]
|
|
846
|
+
},
|
|
809
847
|
"webhookUrl": "http://krate-webhook-worker/repositories/krate-org-default/krate-demo",
|
|
810
848
|
"integrationPlan": {
|
|
811
849
|
"backend": "gitea",
|
|
@@ -961,7 +999,7 @@
|
|
|
961
999
|
"Ready": 1
|
|
962
1000
|
},
|
|
963
1001
|
"storage": "etcd",
|
|
964
|
-
"yaml": "apiVersion: krate.a5c.ai/v1alpha1\nkind: Repository\nmetadata:\n namespace: krate-org-default\n labels:\n gitBackend: gitea\n annotations:\n name: krate-demo\n resourceVersion: 1\nspec:\n organizationRef: default\n visibility: private\n gitHosting:\n backend: gitea\n owner: krate\n repository: krate-demo\n branch: main\n httpUrl: http://krate-gitea-http:3000/krate/krate-demo.git\n sshUrl: ssh://git@krate-gitea-ssh/krate/krate-demo.git\n deployKeyTitle: krate-argocd\n organization:\n kind: Organization\n name: krate\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/
|
|
1002
|
+
"yaml": "apiVersion: krate.a5c.ai/v1alpha1\nkind: Repository\nmetadata:\n namespace: krate-org-default\n labels:\n gitBackend: gitea\n annotations:\n name: krate-demo\n resourceVersion: 1\nspec:\n organizationRef: default\n visibility: private\n gitHosting:\n backend: gitea\n owner: krate\n repository: krate-demo\n branch: main\n httpUrl: http://krate-gitea-http:3000/krate/krate-demo.git\n sshUrl: ssh://git@krate-gitea-ssh/krate/krate-demo.git\n deployKeyTitle: krate-argocd\n organization:\n kind: Organization\n name: krate\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/krate/_krate-org-default_/issues\n pullRequests: Gitea /repos/{owner}/{repo}/pulls\n issueSync:\n backend: gitea\n owner: krate-org-default\n repo: _krate-org-default_\n issue: <issue>\n project: null\n repositoryRefs:\n - krate-demo\n metadataKeys:\n - krate.a5c.ai/project\n - krate.a5c.ai/repositories\n actions:\n - action: ensureOrgMemoryRepository\n owner: krate-org-default\n repo: _krate-org-default_\n - action: syncIssue\n owner: krate-org-default\n repo: _krate-org-default_\n issue: <issue>\n - action: writeIssueRepositoryMetadata\n issue: <issue>\n repositories:\n - krate-demo\n webhookUrl: http://krate-webhook-worker/repositories/krate-org-default/krate-demo\n integrationPlan:\n backend: gitea\n operations:\n - action: createOrganization\n owner: krate\n - action: createRepository\n owner: krate\n repo: krate-demo\n - action: ensureUserMappings\n owner: krate\n - action: addDeployKey\n owner: krate\n repo: krate-demo\n title: krate-argocd\n readOnly: false\n - action: addUserSshKey\n owner: krate\n repo: krate-demo\n title: developer key\n - action: addCollaborator\n owner: krate\n repo: krate-demo\n permission: write\n - action: addTeamRepository\n owner: krate\n repo: krate-demo\n team: maintainers\n permission: admin\n - action: protectBranch\n owner: krate\n repo: krate-demo\n branch: main\n - action: createWebhook\n owner: krate\n repo: krate-demo\n url: http://krate-webhook-worker/repositories/krate-org-default/krate-demo\n storage:\n mode: gitea\n persistentVolumeClaim: krate-gitea-data\n owner: krate\n repository: krate-demo\n httpUrl: http://krate-gitea-http:3000/krate/krate-demo.git\n sshUrl: ssh://git@krate-gitea-ssh/krate/krate-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: krate-demo\n backend: gitea\n owner: krate\n store: gitea-primary\n receivePackReady: true\n httpUrl: http://krate-gitea-http:3000/krate/krate-demo.git\n sshUrl: ssh://git@krate-gitea-ssh/krate/krate-demo.git\n gitHosting:\n backend: gitea\n httpUrl: http://krate-gitea-http:3000/krate/krate-demo.git\n sshUrl: ssh://git@krate-gitea-ssh/krate/krate-demo.git\n integrationPlan:\n backend: gitea\n operations:\n - action: createOrganization\n owner: krate\n - action: createRepository\n owner: krate\n repo: krate-demo\n - action: ensureUserMappings\n owner: krate\n - action: addDeployKey\n owner: krate\n repo: krate-demo\n title: krate-argocd\n readOnly: false\n - action: addUserSshKey\n owner: krate\n repo: krate-demo\n title: developer key\n - action: addCollaborator\n owner: krate\n repo: krate-demo\n permission: write\n - action: addTeamRepository\n owner: krate\n repo: krate-demo\n team: maintainers\n permission: admin\n - action: protectBranch\n owner: krate\n repo: krate-demo\n branch: main\n - action: createWebhook\n owner: krate\n repo: krate-demo\n url: http://krate-webhook-worker/repositories/krate-org-default/krate-demo\n storage: etcd\n",
|
|
965
1003
|
"action": {
|
|
966
1004
|
"list": "Open Repository records in krate-org-default",
|
|
967
1005
|
"watch": "Watch Repository updates in krate-org-default",
|
|
@@ -2438,7 +2476,7 @@
|
|
|
2438
2476
|
"maintainers"
|
|
2439
2477
|
],
|
|
2440
2478
|
"phase": "Pending",
|
|
2441
|
-
"expiresAt": "2026-05-
|
|
2479
|
+
"expiresAt": "2026-05-24T08:51:14.063Z"
|
|
2442
2480
|
}
|
|
2443
2481
|
],
|
|
2444
2482
|
"mappings": [
|
|
@@ -2598,9 +2636,43 @@
|
|
|
2598
2636
|
"delegatedTo": "Gitea collaborators and team repository APIs"
|
|
2599
2637
|
},
|
|
2600
2638
|
"forgeRecords": {
|
|
2601
|
-
"issues": "Gitea /repos/
|
|
2639
|
+
"issues": "Gitea /repos/krate/_krate-org-default_/issues",
|
|
2602
2640
|
"pullRequests": "Gitea /repos/{owner}/{repo}/pulls"
|
|
2603
2641
|
},
|
|
2642
|
+
"issueSync": {
|
|
2643
|
+
"backend": "gitea",
|
|
2644
|
+
"owner": "krate-org-default",
|
|
2645
|
+
"repo": "_krate-org-default_",
|
|
2646
|
+
"issue": "<issue>",
|
|
2647
|
+
"project": null,
|
|
2648
|
+
"repositoryRefs": [
|
|
2649
|
+
"krate-demo"
|
|
2650
|
+
],
|
|
2651
|
+
"metadataKeys": [
|
|
2652
|
+
"krate.a5c.ai/project",
|
|
2653
|
+
"krate.a5c.ai/repositories"
|
|
2654
|
+
],
|
|
2655
|
+
"actions": [
|
|
2656
|
+
{
|
|
2657
|
+
"action": "ensureOrgMemoryRepository",
|
|
2658
|
+
"owner": "krate-org-default",
|
|
2659
|
+
"repo": "_krate-org-default_"
|
|
2660
|
+
},
|
|
2661
|
+
{
|
|
2662
|
+
"action": "syncIssue",
|
|
2663
|
+
"owner": "krate-org-default",
|
|
2664
|
+
"repo": "_krate-org-default_",
|
|
2665
|
+
"issue": "<issue>"
|
|
2666
|
+
},
|
|
2667
|
+
{
|
|
2668
|
+
"action": "writeIssueRepositoryMetadata",
|
|
2669
|
+
"issue": "<issue>",
|
|
2670
|
+
"repositories": [
|
|
2671
|
+
"krate-demo"
|
|
2672
|
+
]
|
|
2673
|
+
}
|
|
2674
|
+
]
|
|
2675
|
+
},
|
|
2604
2676
|
"webhookUrl": "http://krate-webhook-worker/repositories/krate-org-default/krate-demo",
|
|
2605
2677
|
"integrationPlan": {
|
|
2606
2678
|
"backend": "gitea",
|
|
@@ -2752,6 +2824,62 @@
|
|
|
2752
2824
|
}
|
|
2753
2825
|
}
|
|
2754
2826
|
],
|
|
2827
|
+
"projects": [],
|
|
2828
|
+
"issues": [],
|
|
2829
|
+
"issueSync": {
|
|
2830
|
+
"gitea": {
|
|
2831
|
+
"backend": "gitea",
|
|
2832
|
+
"owner": "default",
|
|
2833
|
+
"repo": "_default_",
|
|
2834
|
+
"issue": "<issue>",
|
|
2835
|
+
"project": null,
|
|
2836
|
+
"repositoryRefs": [
|
|
2837
|
+
"krate-demo"
|
|
2838
|
+
],
|
|
2839
|
+
"metadataKeys": [
|
|
2840
|
+
"krate.a5c.ai/project",
|
|
2841
|
+
"krate.a5c.ai/repositories"
|
|
2842
|
+
],
|
|
2843
|
+
"actions": [
|
|
2844
|
+
{
|
|
2845
|
+
"action": "ensureOrgMemoryRepository",
|
|
2846
|
+
"owner": "default",
|
|
2847
|
+
"repo": "_default_"
|
|
2848
|
+
},
|
|
2849
|
+
{
|
|
2850
|
+
"action": "syncIssue",
|
|
2851
|
+
"owner": "default",
|
|
2852
|
+
"repo": "_default_",
|
|
2853
|
+
"issue": "<issue>"
|
|
2854
|
+
},
|
|
2855
|
+
{
|
|
2856
|
+
"action": "writeIssueRepositoryMetadata",
|
|
2857
|
+
"issue": "<issue>",
|
|
2858
|
+
"repositories": [
|
|
2859
|
+
"krate-demo"
|
|
2860
|
+
]
|
|
2861
|
+
}
|
|
2862
|
+
]
|
|
2863
|
+
},
|
|
2864
|
+
"github": {
|
|
2865
|
+
"backend": "github",
|
|
2866
|
+
"owner": "default",
|
|
2867
|
+
"project": null,
|
|
2868
|
+
"issue": "<issue>",
|
|
2869
|
+
"repositoryRefs": [
|
|
2870
|
+
"krate-demo"
|
|
2871
|
+
],
|
|
2872
|
+
"metadataKeys": [
|
|
2873
|
+
"project item fields",
|
|
2874
|
+
"krate repositories field"
|
|
2875
|
+
],
|
|
2876
|
+
"actions": [
|
|
2877
|
+
"syncProjectItem",
|
|
2878
|
+
"syncIssueMetadata",
|
|
2879
|
+
"syncRepositoryLinks"
|
|
2880
|
+
]
|
|
2881
|
+
}
|
|
2882
|
+
},
|
|
2755
2883
|
"excellentFlows": [
|
|
2756
2884
|
"Create or import a repository",
|
|
2757
2885
|
"Browse code and copy clone commands",
|
|
@@ -2767,6 +2895,16 @@
|
|
|
2767
2895
|
"value": 1,
|
|
2768
2896
|
"href": "/repositories"
|
|
2769
2897
|
},
|
|
2898
|
+
{
|
|
2899
|
+
"label": "Projects",
|
|
2900
|
+
"value": 0,
|
|
2901
|
+
"href": "/agents/projects"
|
|
2902
|
+
},
|
|
2903
|
+
{
|
|
2904
|
+
"label": "Issues",
|
|
2905
|
+
"value": 0,
|
|
2906
|
+
"href": "/inbox"
|
|
2907
|
+
},
|
|
2770
2908
|
{
|
|
2771
2909
|
"label": "Pull requests",
|
|
2772
2910
|
"value": 0,
|
|
@@ -2944,7 +3082,7 @@
|
|
|
2944
3082
|
"maintainers"
|
|
2945
3083
|
],
|
|
2946
3084
|
"phase": "Pending",
|
|
2947
|
-
"expiresAt": "2026-05-
|
|
3085
|
+
"expiresAt": "2026-05-24T08:51:14.063Z"
|
|
2948
3086
|
}
|
|
2949
3087
|
],
|
|
2950
3088
|
"mappings": [
|