borgmcp-shared 1.0.1 → 1.2.0
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/CONTRIBUTING.md +4 -1
- package/README.md +37 -8
- package/RELEASES.md +2 -3
- package/dist/conformance/adapter.d.ts +6 -101
- package/dist/conformance/adapter.d.ts.map +1 -1
- package/dist/conformance/adapter.js +546 -281
- package/dist/conformance/adapter.js.map +1 -1
- package/dist/conformance/index.d.ts +5 -42
- package/dist/conformance/index.d.ts.map +1 -1
- package/dist/conformance/index.js +16 -52
- package/dist/conformance/index.js.map +1 -1
- package/dist/protocol/contract.d.ts +2 -2
- package/dist/protocol/contract.d.ts.map +1 -1
- package/dist/protocol/contract.js +2 -2
- package/dist/protocol/contract.js.map +1 -1
- package/dist/protocol/errors.d.ts +0 -14
- package/dist/protocol/errors.d.ts.map +1 -1
- package/dist/protocol/errors.js +0 -8
- package/dist/protocol/errors.js.map +1 -1
- package/dist/protocol/version.d.ts +1 -1
- package/dist/protocol/version.js +1 -1
- package/dist/templates.d.ts +0 -1
- package/dist/templates.d.ts.map +1 -1
- package/dist/templates.js +1 -2
- package/dist/templates.js.map +1 -1
- package/docs/compatibility.md +11 -0
- package/docs/enrollment.md +6 -9
- package/docs/releases/1.1.0.md +19 -0
- package/docs/releases/1.2.0.md +20 -0
- package/docs/releasing.md +13 -23
- package/package.json +1 -2
- package/src/conformance/adapter.ts +822 -640
- package/src/conformance/index.ts +24 -75
- package/src/protocol/contract.ts +2 -2
- package/src/protocol/errors.ts +0 -17
- package/src/protocol/version.ts +2 -2
- package/src/templates.ts +1 -3
- package/docs/release-records.json +0 -261
package/src/conformance/index.ts
CHANGED
|
@@ -465,7 +465,7 @@ const CREATE_CUBE_INITIAL: CreateCubeRequest = {
|
|
|
465
465
|
name: 'Repository One',
|
|
466
466
|
working_repo_name: 'repository-one',
|
|
467
467
|
repository: { kind: 'origin', value: 'https://github.com/Byte-Ventures/repository-one' },
|
|
468
|
-
template: '
|
|
468
|
+
template: 'software-dev',
|
|
469
469
|
};
|
|
470
470
|
|
|
471
471
|
export interface CubeTemplateAcceptanceConformanceVector {
|
|
@@ -474,13 +474,13 @@ export interface CubeTemplateAcceptanceConformanceVector {
|
|
|
474
474
|
accepts: boolean;
|
|
475
475
|
}
|
|
476
476
|
|
|
477
|
-
/** Protocol
|
|
477
|
+
/** Protocol v13's complete closed acceptance set for cube-creation templates. */
|
|
478
478
|
export const CUBE_TEMPLATE_ACCEPTANCE_CONFORMANCE:
|
|
479
479
|
readonly CubeTemplateAcceptanceConformanceVector[] = [
|
|
480
|
-
{ name: 'accepts the legacy default template', template: 'default', accepts: true },
|
|
481
480
|
{ name: 'accepts the software-development template', template: 'software-dev', accepts: true },
|
|
482
481
|
{ name: 'accepts the starter template', template: 'starter', accepts: true },
|
|
483
482
|
{ name: 'accepts the local-model template', template: 'local-model', accepts: true },
|
|
483
|
+
{ name: 'rejects the removed default template', template: 'default', accepts: false },
|
|
484
484
|
{ name: 'rejects an unknown template name', template: 'custom', accepts: false },
|
|
485
485
|
{ name: 'rejects a non-string template', template: null, accepts: false },
|
|
486
486
|
];
|
|
@@ -508,7 +508,7 @@ export const CREATE_CUBE_RETRY_CONFORMANCE: readonly CreateCubeRetryConformanceV
|
|
|
508
508
|
{
|
|
509
509
|
name: 'template mismatch is rejected',
|
|
510
510
|
initial: CREATE_CUBE_INITIAL,
|
|
511
|
-
retry: { ...CREATE_CUBE_INITIAL, template: '
|
|
511
|
+
retry: { ...CREATE_CUBE_INITIAL, template: 'starter' },
|
|
512
512
|
expected: { outcome: 'retry_tuple_mismatch', status: 409, error: 'INVALID_INPUT' },
|
|
513
513
|
},
|
|
514
514
|
{
|
|
@@ -536,17 +536,8 @@ export interface CreateCubeAssociationConformanceVector {
|
|
|
536
536
|
created: CreateCubeRequest;
|
|
537
537
|
request: CreateCubeRequest;
|
|
538
538
|
expected:
|
|
539
|
-
| { outcome: 'resolved'
|
|
540
|
-
| {
|
|
541
|
-
outcome: 'created';
|
|
542
|
-
authority_state_delta: {
|
|
543
|
-
cubes: 1;
|
|
544
|
-
roles: 2;
|
|
545
|
-
grants: 1;
|
|
546
|
-
cube_create_bindings: 1;
|
|
547
|
-
repository_associations: 1;
|
|
548
|
-
};
|
|
549
|
-
};
|
|
539
|
+
| { outcome: 'resolved' }
|
|
540
|
+
| { outcome: 'created' };
|
|
550
541
|
}
|
|
551
542
|
|
|
552
543
|
/** A creator-scoped repository association resolves independently of operation retry keys. */
|
|
@@ -562,7 +553,7 @@ readonly CreateCubeAssociationConformanceVector[] = [
|
|
|
562
553
|
working_repo_name: 'ignored-new-display',
|
|
563
554
|
template: 'starter',
|
|
564
555
|
},
|
|
565
|
-
expected: { outcome: 'resolved'
|
|
556
|
+
expected: { outcome: 'resolved' },
|
|
566
557
|
},
|
|
567
558
|
{
|
|
568
559
|
name: 'fresh retry for a different repository may create',
|
|
@@ -574,16 +565,7 @@ readonly CreateCubeAssociationConformanceVector[] = [
|
|
|
574
565
|
working_repo_name: 'repository-two',
|
|
575
566
|
repository: { kind: 'origin', value: 'https://github.com/Byte-Ventures/repository-two' },
|
|
576
567
|
},
|
|
577
|
-
expected: {
|
|
578
|
-
outcome: 'created',
|
|
579
|
-
authority_state_delta: {
|
|
580
|
-
cubes: 1,
|
|
581
|
-
roles: 2,
|
|
582
|
-
grants: 1,
|
|
583
|
-
cube_create_bindings: 1,
|
|
584
|
-
repository_associations: 1,
|
|
585
|
-
},
|
|
586
|
-
},
|
|
568
|
+
expected: { outcome: 'created' },
|
|
587
569
|
},
|
|
588
570
|
];
|
|
589
571
|
|
|
@@ -595,12 +577,11 @@ export interface DeleteCubeConformanceVector {
|
|
|
595
577
|
error?: 'ACCESS_DENIED' | 'NOT_FOUND' | 'CUBE_DELETED';
|
|
596
578
|
response?: { deleted: true };
|
|
597
579
|
terminal_sse?: { event: 'error'; error: 'CUBE_DELETED'; closes_after_event: true };
|
|
598
|
-
durable_after_restart?: true;
|
|
599
580
|
mutation: 'cascade' | 'none';
|
|
600
581
|
};
|
|
601
582
|
}
|
|
602
583
|
|
|
603
|
-
/** Cube deletion is manage-gated
|
|
584
|
+
/** Cube deletion is manage-gated and protocol-terminal for every formerly authorized caller. */
|
|
604
585
|
export const DELETE_CUBE_CONFORMANCE: readonly DeleteCubeConformanceVector[] = [
|
|
605
586
|
{
|
|
606
587
|
name: 'non-member managing parent deletes the cube atomically',
|
|
@@ -627,16 +608,6 @@ export const DELETE_CUBE_CONFORMANCE: readonly DeleteCubeConformanceVector[] = [
|
|
|
627
608
|
mutation: 'none',
|
|
628
609
|
},
|
|
629
610
|
},
|
|
630
|
-
{
|
|
631
|
-
name: 'former authorized credentials retain the typed terminal state after restart',
|
|
632
|
-
request: {},
|
|
633
|
-
expected: {
|
|
634
|
-
status: 410,
|
|
635
|
-
error: 'CUBE_DELETED',
|
|
636
|
-
durable_after_restart: true,
|
|
637
|
-
mutation: 'none',
|
|
638
|
-
},
|
|
639
|
-
},
|
|
640
611
|
];
|
|
641
612
|
|
|
642
613
|
export interface ResolveRepositoryCubeConformanceVector {
|
|
@@ -644,8 +615,8 @@ export interface ResolveRepositoryCubeConformanceVector {
|
|
|
644
615
|
request: ResolveRepositoryCubeRequest;
|
|
645
616
|
associated: boolean;
|
|
646
617
|
expected:
|
|
647
|
-
| { outcome: 'none'; status: 200
|
|
648
|
-
| { outcome: 'resolved'; status: 200
|
|
618
|
+
| { outcome: 'none'; status: 200 }
|
|
619
|
+
| { outcome: 'resolved'; status: 200 };
|
|
649
620
|
}
|
|
650
621
|
|
|
651
622
|
const REPOSITORY_CUBE_ONE = '00000000-0000-4000-8000-000000000131';
|
|
@@ -665,13 +636,13 @@ readonly ResolveRepositoryCubeConformanceVector[] = [
|
|
|
665
636
|
name: 'unassociated repository resolves explicit none without mutation',
|
|
666
637
|
request: REPOSITORY_ONE,
|
|
667
638
|
associated: false,
|
|
668
|
-
expected: { outcome: 'none', status: 200
|
|
639
|
+
expected: { outcome: 'none', status: 200 },
|
|
669
640
|
},
|
|
670
641
|
{
|
|
671
642
|
name: 'associated repository resolves authoritative stored fields without mutation',
|
|
672
643
|
request: { ...REPOSITORY_ONE, working_repo_name: 'ignored-new-display' },
|
|
673
644
|
associated: true,
|
|
674
|
-
expected: { outcome: 'resolved', status: 200
|
|
645
|
+
expected: { outcome: 'resolved', status: 200 },
|
|
675
646
|
},
|
|
676
647
|
];
|
|
677
648
|
|
|
@@ -683,15 +654,12 @@ export interface AssociateRepositoryCubeConformanceVector {
|
|
|
683
654
|
| {
|
|
684
655
|
outcome: 'resolved';
|
|
685
656
|
status: 200;
|
|
686
|
-
initial_authority_state_delta: { repository_associations: 1 };
|
|
687
|
-
retry_authority_state_delta: Record<string, never>;
|
|
688
657
|
}
|
|
689
658
|
| {
|
|
690
|
-
outcome: 'repository_conflict'
|
|
659
|
+
outcome: 'repository_conflict';
|
|
691
660
|
status: 409;
|
|
692
|
-
error: 'REPOSITORY_ALREADY_ASSOCIATED'
|
|
661
|
+
error: 'REPOSITORY_ALREADY_ASSOCIATED';
|
|
693
662
|
diagnostic_disclosure: 'none';
|
|
694
|
-
retry_authority_state_delta: Record<string, never>;
|
|
695
663
|
};
|
|
696
664
|
}
|
|
697
665
|
|
|
@@ -705,8 +673,6 @@ readonly AssociateRepositoryCubeConformanceVector[] = [
|
|
|
705
673
|
expected: {
|
|
706
674
|
outcome: 'resolved',
|
|
707
675
|
status: 200,
|
|
708
|
-
initial_authority_state_delta: { repository_associations: 1 },
|
|
709
|
-
retry_authority_state_delta: {},
|
|
710
676
|
},
|
|
711
677
|
},
|
|
712
678
|
{
|
|
@@ -718,19 +684,15 @@ readonly AssociateRepositoryCubeConformanceVector[] = [
|
|
|
718
684
|
status: 409,
|
|
719
685
|
error: 'REPOSITORY_ALREADY_ASSOCIATED',
|
|
720
686
|
diagnostic_disclosure: 'none',
|
|
721
|
-
retry_authority_state_delta: {},
|
|
722
687
|
},
|
|
723
688
|
},
|
|
724
689
|
{
|
|
725
|
-
name: '
|
|
690
|
+
name: 'a second repository may associate with the same explicit cube',
|
|
726
691
|
initial: { cube_id: REPOSITORY_CUBE_ONE, ...REPOSITORY_ONE },
|
|
727
692
|
retry: { cube_id: REPOSITORY_CUBE_ONE, ...REPOSITORY_TWO },
|
|
728
693
|
expected: {
|
|
729
|
-
outcome: '
|
|
730
|
-
status:
|
|
731
|
-
error: 'CUBE_ALREADY_ASSOCIATED',
|
|
732
|
-
diagnostic_disclosure: 'none',
|
|
733
|
-
retry_authority_state_delta: {},
|
|
694
|
+
outcome: 'resolved',
|
|
695
|
+
status: 200,
|
|
734
696
|
},
|
|
735
697
|
},
|
|
736
698
|
];
|
|
@@ -739,19 +701,18 @@ export const REPOSITORY_CUBE_PERMISSION_CONFORMANCE = [
|
|
|
739
701
|
{
|
|
740
702
|
name: 'association denies an inaccessible explicit cube without mutation',
|
|
741
703
|
request: { cube_id: REPOSITORY_CUBE_ONE, ...REPOSITORY_ONE },
|
|
742
|
-
expected: { status: 403, error: 'ACCESS_DENIED'
|
|
704
|
+
expected: { status: 403, error: 'ACCESS_DENIED' },
|
|
743
705
|
},
|
|
744
706
|
{
|
|
745
707
|
name: 'same-client binding to an inaccessible cube is non-enumerating',
|
|
746
708
|
request: { cube_id: REPOSITORY_CUBE_ONE, ...REPOSITORY_ONE },
|
|
747
709
|
precondition: 'repository_bound_to_inaccessible_cube',
|
|
748
710
|
expected: {
|
|
749
|
-
resolve: { status: 200, outcome: 'none'
|
|
711
|
+
resolve: { status: 200, outcome: 'none' },
|
|
750
712
|
associate: {
|
|
751
713
|
status: 403,
|
|
752
714
|
error: 'ACCESS_DENIED',
|
|
753
715
|
diagnostic_disclosure: 'none',
|
|
754
|
-
authority_state_delta: {},
|
|
755
716
|
},
|
|
756
717
|
},
|
|
757
718
|
},
|
|
@@ -760,11 +721,10 @@ export const REPOSITORY_CUBE_PERMISSION_CONFORMANCE = [
|
|
|
760
721
|
request: { cube_id: REPOSITORY_CUBE_ONE, ...REPOSITORY_ONE },
|
|
761
722
|
precondition: 'repository_bound_by_another_client',
|
|
762
723
|
expected: {
|
|
763
|
-
resolve: { status: 200, outcome: 'none'
|
|
724
|
+
resolve: { status: 200, outcome: 'none' },
|
|
764
725
|
associate: {
|
|
765
726
|
status: 200,
|
|
766
727
|
outcome: 'resolved',
|
|
767
|
-
authority_state_delta: { repository_associations: 1 },
|
|
768
728
|
},
|
|
769
729
|
},
|
|
770
730
|
},
|
|
@@ -778,29 +738,26 @@ export const REPOSITORY_CUBE_AUTHORITATIVE_STATE_CONFORMANCE = [
|
|
|
778
738
|
status: 409,
|
|
779
739
|
error: 'INVALID_INPUT',
|
|
780
740
|
diagnostic_disclosure: 'none',
|
|
781
|
-
authority_state_delta: {},
|
|
782
741
|
},
|
|
783
742
|
},
|
|
784
743
|
] as const;
|
|
785
744
|
|
|
786
745
|
export const ENROLLMENT_AUTHORITY_CONFORMANCE = [
|
|
787
746
|
{
|
|
788
|
-
name: 'ordinary enrollment
|
|
747
|
+
name: 'ordinary enrollment returns no server capability',
|
|
789
748
|
response: {
|
|
790
749
|
purpose: 'client',
|
|
791
750
|
client_id: '00000000-0000-4000-8000-000000000111',
|
|
792
751
|
server_capabilities: [],
|
|
793
752
|
},
|
|
794
|
-
expected_state_delta: { cubes: 0, roles: 0, grants: 0, server_capabilities: 0 },
|
|
795
753
|
},
|
|
796
754
|
{
|
|
797
|
-
name: 'owner enrollment
|
|
755
|
+
name: 'owner enrollment returns create-cube authority',
|
|
798
756
|
response: {
|
|
799
757
|
purpose: 'owner',
|
|
800
758
|
client_id: '00000000-0000-4000-8000-000000000111',
|
|
801
759
|
server_capabilities: ['create_cube'],
|
|
802
760
|
},
|
|
803
|
-
expected_state_delta: { cubes: 0, roles: 0, grants: 0, server_capabilities: 1 },
|
|
804
761
|
},
|
|
805
762
|
] as const;
|
|
806
763
|
|
|
@@ -922,7 +879,6 @@ export interface RoleDeleteConformanceVector {
|
|
|
922
879
|
status: 200;
|
|
923
880
|
response: { deleted: true };
|
|
924
881
|
mutation: 'delete-role';
|
|
925
|
-
evicted_drone_retarget?: 'default-role';
|
|
926
882
|
activity_log_attribution?: 'preserved';
|
|
927
883
|
}
|
|
928
884
|
| {
|
|
@@ -942,13 +898,12 @@ export const ROLE_DELETE_CONFORMANCE: readonly RoleDeleteConformanceVector[] = [
|
|
|
942
898
|
expected: { status: 200, response: { deleted: true }, mutation: 'delete-role' },
|
|
943
899
|
},
|
|
944
900
|
{
|
|
945
|
-
name: '
|
|
901
|
+
name: 'deletes an evicted drone role without losing existing log attribution',
|
|
946
902
|
fixture: 'evicted-drone',
|
|
947
903
|
expected: {
|
|
948
904
|
status: 200,
|
|
949
905
|
response: { deleted: true },
|
|
950
906
|
mutation: 'delete-role',
|
|
951
|
-
evicted_drone_retarget: 'default-role',
|
|
952
907
|
activity_log_attribution: 'preserved',
|
|
953
908
|
},
|
|
954
909
|
},
|
|
@@ -992,7 +947,6 @@ export interface RoleRationaleConformanceVector {
|
|
|
992
947
|
| 'unknown-role'
|
|
993
948
|
| 'inaccessible-role'
|
|
994
949
|
| 'unknown-section'
|
|
995
|
-
| 'ambiguous-role-name'
|
|
996
950
|
| 'invalid-selector';
|
|
997
951
|
expected:
|
|
998
952
|
| { status: 200; canonical_heading: true; exact_body: true; mutation: 'none' }
|
|
@@ -1027,11 +981,6 @@ export const ROLE_RATIONALE_CONFORMANCE: readonly RoleRationaleConformanceVector
|
|
|
1027
981
|
fixture: 'unknown-section',
|
|
1028
982
|
expected: { status: 404, error: 'ROLE_SECTION_NOT_FOUND', mutation: 'none' },
|
|
1029
983
|
},
|
|
1030
|
-
{
|
|
1031
|
-
name: 'rejects a role name with multiple case-insensitive matches',
|
|
1032
|
-
fixture: 'ambiguous-role-name',
|
|
1033
|
-
expected: { status: 400, error: 'INVALID_INPUT', mutation: 'none' },
|
|
1034
|
-
},
|
|
1035
984
|
{
|
|
1036
985
|
name: 'rejects malformed or ambiguous selectors',
|
|
1037
986
|
fixture: 'invalid-selector',
|
package/src/protocol/contract.ts
CHANGED
|
@@ -13,7 +13,7 @@ import type {
|
|
|
13
13
|
} from './types.js';
|
|
14
14
|
|
|
15
15
|
export const SHARED_PACKAGE_NAME = 'borgmcp-shared' as const;
|
|
16
|
-
export const SHARED_PACKAGE_VERSION = '1.0
|
|
16
|
+
export const SHARED_PACKAGE_VERSION = '1.2.0' as const;
|
|
17
17
|
/** Maximum UTF-8 payload for each newly recorded decision text field. */
|
|
18
18
|
export const DECISION_TEXT_MAX_BYTES = 512 as const;
|
|
19
19
|
/** Maximum UTF-8 size of role detailed-description text and any returned section slice. */
|
|
@@ -192,7 +192,7 @@ export type EnrollmentExchangeResponse =
|
|
|
192
192
|
| ClientEnrollmentExchangeResponse
|
|
193
193
|
| OwnerEnrollmentExchangeResponse;
|
|
194
194
|
|
|
195
|
-
export const CUBE_TEMPLATES = ['
|
|
195
|
+
export const CUBE_TEMPLATES = ['software-dev', 'starter', 'local-model'] as const;
|
|
196
196
|
export type CubeTemplate = (typeof CUBE_TEMPLATES)[number];
|
|
197
197
|
|
|
198
198
|
export type CreateCubeRepository =
|
package/src/protocol/errors.ts
CHANGED
|
@@ -2,15 +2,10 @@
|
|
|
2
2
|
export enum ErrorCode {
|
|
3
3
|
AUTH_MISSING = 'AUTH_MISSING',
|
|
4
4
|
AUTH_INVALID = 'AUTH_INVALID',
|
|
5
|
-
SUBSCRIPTION_REQUIRED = 'SUBSCRIPTION_REQUIRED',
|
|
6
5
|
ACCESS_DENIED = 'ACCESS_DENIED',
|
|
7
6
|
INVALID_INPUT = 'INVALID_INPUT',
|
|
8
|
-
MISSING_PARAMETER = 'MISSING_PARAMETER',
|
|
9
7
|
CONTENT_TOO_LARGE = 'CONTENT_TOO_LARGE',
|
|
10
|
-
RATE_LIMIT_EXCEEDED = 'RATE_LIMIT_EXCEEDED',
|
|
11
8
|
INTERNAL_ERROR = 'INTERNAL_ERROR',
|
|
12
|
-
DATABASE_ERROR = 'DATABASE_ERROR',
|
|
13
|
-
EXTERNAL_SERVICE_ERROR = 'EXTERNAL_SERVICE_ERROR',
|
|
14
9
|
NOT_FOUND = 'NOT_FOUND',
|
|
15
10
|
REPOSITORY_ALREADY_ASSOCIATED = 'REPOSITORY_ALREADY_ASSOCIATED',
|
|
16
11
|
CUBE_ALREADY_ASSOCIATED = 'CUBE_ALREADY_ASSOCIATED',
|
|
@@ -21,7 +16,6 @@ export enum ErrorCode {
|
|
|
21
16
|
ROLE_REQUIRED = 'ROLE_REQUIRED',
|
|
22
17
|
ROLE_NOT_FOUND = 'ROLE_NOT_FOUND',
|
|
23
18
|
ROLE_SECTION_NOT_FOUND = 'ROLE_SECTION_NOT_FOUND',
|
|
24
|
-
ROLE_HAS_FROZEN_DRONES = 'ROLE_HAS_FROZEN_DRONES',
|
|
25
19
|
DOCUMENT_NOT_FOUND = 'DOCUMENT_NOT_FOUND',
|
|
26
20
|
DOCUMENT_CONTENT_TYPE_UNSUPPORTED = 'DOCUMENT_CONTENT_TYPE_UNSUPPORTED',
|
|
27
21
|
DOCUMENT_BUDGET_EXCEEDED = 'DOCUMENT_BUDGET_EXCEEDED',
|
|
@@ -29,9 +23,7 @@ export enum ErrorCode {
|
|
|
29
23
|
DOCUMENT_REMOVE_DENIED = 'DOCUMENT_REMOVE_DENIED',
|
|
30
24
|
CUBE_DELETED = 'CUBE_DELETED',
|
|
31
25
|
DRONE_EVICTED = 'DRONE_EVICTED',
|
|
32
|
-
DRONE_FROZEN = 'DRONE_FROZEN',
|
|
33
26
|
UNSUPPORTED_PROTOCOL_VERSION = 'UNSUPPORTED_PROTOCOL_VERSION',
|
|
34
|
-
CURSOR_INVALID = 'CURSOR_INVALID',
|
|
35
27
|
CURSOR_EXPIRED = 'CURSOR_EXPIRED',
|
|
36
28
|
SESSION_REVOKED = 'SESSION_REVOKED',
|
|
37
29
|
/**
|
|
@@ -42,12 +34,3 @@ export enum ErrorCode {
|
|
|
42
34
|
*/
|
|
43
35
|
SESSION_REJECTED = 'SESSION_REJECTED',
|
|
44
36
|
}
|
|
45
|
-
|
|
46
|
-
/** @deprecated Wire failures use the versioned ProtocolErrorEnvelope. */
|
|
47
|
-
export interface ErrorResponse {
|
|
48
|
-
code: ErrorCode;
|
|
49
|
-
message: string;
|
|
50
|
-
details?: string;
|
|
51
|
-
/** Number of seconds a rate-limited caller should wait. */
|
|
52
|
-
retryAfter?: number;
|
|
53
|
-
}
|
package/src/protocol/version.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** Current Borg coordination protocol generation. Clean-slate
|
|
2
|
-
export const PROTOCOL_VERSION = '
|
|
1
|
+
/** Current Borg coordination protocol generation. Clean-slate v13. */
|
|
2
|
+
export const PROTOCOL_VERSION = '13' as const;
|
|
3
3
|
|
|
4
4
|
export type ProtocolVersion = typeof PROTOCOL_VERSION;
|
package/src/templates.ts
CHANGED
|
@@ -36,8 +36,6 @@ export interface Template {
|
|
|
36
36
|
message_taxonomy?: MessageTaxonomy;
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
-
export const LEGACY_DEFAULT_TEMPLATE_LABEL = 'Default (legacy)';
|
|
40
|
-
|
|
41
39
|
export const NEW_CUBE_TEMPLATE_PRESENTATIONS = [
|
|
42
40
|
{
|
|
43
41
|
name: 'software-dev',
|
|
@@ -790,7 +788,7 @@ export const TEMPLATES: Record<string, Template> = {
|
|
|
790
788
|
};
|
|
791
789
|
|
|
792
790
|
export function getTemplate(name: string): Template | null {
|
|
793
|
-
return TEMPLATES[name]
|
|
791
|
+
return Object.hasOwn(TEMPLATES, name) ? TEMPLATES[name] : null;
|
|
794
792
|
}
|
|
795
793
|
|
|
796
794
|
export function listTemplateNames(): string[] {
|
|
@@ -1,261 +0,0 @@
|
|
|
1
|
-
[
|
|
2
|
-
{
|
|
3
|
-
"outcome": "published",
|
|
4
|
-
"version": "0.6.3",
|
|
5
|
-
"tag": "v0.6.3",
|
|
6
|
-
"tag_object": "fd6aa8858e6565ad49a69144736e8fe12a8295bb",
|
|
7
|
-
"commit": "f9d79866e1f7fe0f9ea31099bce1b36af9388ecc",
|
|
8
|
-
"tree": "2fd38cc7b1a0332e987cb95881c2ca8ffe2a28e3",
|
|
9
|
-
"workflow_run_id": 30096375533,
|
|
10
|
-
"workflow_run_attempt": 1,
|
|
11
|
-
"workflow_conclusion": "success",
|
|
12
|
-
"verify_job_id": null,
|
|
13
|
-
"publish_job_id": null,
|
|
14
|
-
"artifact_integrity": "sha512-9osP68zH3a2IbyZr4BHiiz9SF+F4kqqxkwUQiun0GXUzu8Vw/+JorCG8OnyRFm8KpXNZ2Yh3KQxqcRD583l1NA==",
|
|
15
|
-
"reconstructed": true
|
|
16
|
-
},
|
|
17
|
-
{
|
|
18
|
-
"outcome": "published",
|
|
19
|
-
"version": "0.6.4",
|
|
20
|
-
"tag": "v0.6.4",
|
|
21
|
-
"tag_object": "f79b0683686d3c359023a17f6e8a92efd888104a",
|
|
22
|
-
"commit": "fa8a2dc072d4ffe2a16d5f02576fead822a2f72e",
|
|
23
|
-
"tree": "2efa6d9553ca7f80c5c477ca39cf35bef55ad01c",
|
|
24
|
-
"workflow_run_id": 30169732628,
|
|
25
|
-
"workflow_run_attempt": 1,
|
|
26
|
-
"workflow_conclusion": "success",
|
|
27
|
-
"verify_job_id": null,
|
|
28
|
-
"publish_job_id": null,
|
|
29
|
-
"artifact_integrity": "sha512-Wm4b0uoOAw9JCz5OTHD0Q2uXKkeWYdkVksdeZvRG8l62XGMY+G8GkNEsZT9L533LbVbQ29GhgF0htjDenQThDg==",
|
|
30
|
-
"reconstructed": true
|
|
31
|
-
},
|
|
32
|
-
{
|
|
33
|
-
"outcome": "published",
|
|
34
|
-
"version": "0.7.0",
|
|
35
|
-
"tag": "v0.7.0",
|
|
36
|
-
"tag_object": "5ddaf5821c49ac0893fdffbac6115b48d0795281",
|
|
37
|
-
"commit": "30af2629052014feba3f3ebf4d9eb29e977e38a7",
|
|
38
|
-
"tree": "da7b7d67f2d00403d3536923897bd52b73a479db",
|
|
39
|
-
"workflow_run_id": 30337670996,
|
|
40
|
-
"workflow_run_attempt": 1,
|
|
41
|
-
"workflow_conclusion": "success",
|
|
42
|
-
"verify_job_id": null,
|
|
43
|
-
"publish_job_id": null,
|
|
44
|
-
"artifact_integrity": "sha512-CLpQo3P/fE9GzC/R7Xw61LWxxsgcVLwmpGb5Ot5PDRe1Bvnf+EB31kiBdU5rvyvvPhiK4oUQtJAZE4ULFRAA2A==",
|
|
45
|
-
"reconstructed": true
|
|
46
|
-
},
|
|
47
|
-
{
|
|
48
|
-
"outcome": "published",
|
|
49
|
-
"version": "0.7.1",
|
|
50
|
-
"tag": "v0.7.1",
|
|
51
|
-
"tag_object": "672423566ed75cf7704775cb480a75767e7c6851",
|
|
52
|
-
"commit": "f4870596ba79702f2e4eb3a6620802d5e538052d",
|
|
53
|
-
"tree": "ed3117008afede794a71620b6dfb4430ee4123a2",
|
|
54
|
-
"workflow_run_id": 30625736845,
|
|
55
|
-
"workflow_run_attempt": 1,
|
|
56
|
-
"workflow_conclusion": "success",
|
|
57
|
-
"verify_job_id": null,
|
|
58
|
-
"publish_job_id": null,
|
|
59
|
-
"artifact_integrity": "sha512-d4GE7ezGyoFN0uwA62gvRPUMfMdJ1kxhTunqU8dW3Qhy1n2SlNXZWr1Nthm6Goo0bAgvax8KEywyReodA6FyQA=="
|
|
60
|
-
},
|
|
61
|
-
{
|
|
62
|
-
"outcome": "published",
|
|
63
|
-
"version": "0.8.0",
|
|
64
|
-
"tag": "v0.8.0",
|
|
65
|
-
"tag_object": "b43710281df47f9a6f3d1dafd8ef6b2b527e718d",
|
|
66
|
-
"commit": "24d260cd882b306b48c5c9397b6c3eb21b8b4990",
|
|
67
|
-
"tree": "3067a71b57ec96041269282ce3d71f38ec624cc5",
|
|
68
|
-
"workflow_run_id": 30720286941,
|
|
69
|
-
"workflow_run_attempt": 1,
|
|
70
|
-
"workflow_conclusion": "success",
|
|
71
|
-
"verify_job_id": null,
|
|
72
|
-
"publish_job_id": null,
|
|
73
|
-
"artifact_integrity": "sha512-0p/ZC03Y6G4N6bfBjMD5b+WcQXcLalhU/3QqGjSWYCFKa3q2/183O53w6Tu6y8h2DkhTw5prnamsOozmVpXZew==",
|
|
74
|
-
"reconstructed": true
|
|
75
|
-
},
|
|
76
|
-
{
|
|
77
|
-
"outcome": "published",
|
|
78
|
-
"version": "0.8.1",
|
|
79
|
-
"tag": "v0.8.1",
|
|
80
|
-
"tag_object": "cc690f6d41aa34b3f2884db500bc9979ab2de1db",
|
|
81
|
-
"commit": "d29c5cf9285dc62b01258b640102f8cf21a9ec21",
|
|
82
|
-
"tree": "b2134c0e54041554e87bf4b4d044e3f476cb1f2b",
|
|
83
|
-
"workflow_run_id": 30853413999,
|
|
84
|
-
"workflow_run_attempt": 1,
|
|
85
|
-
"workflow_conclusion": "success",
|
|
86
|
-
"verify_job_id": null,
|
|
87
|
-
"publish_job_id": null,
|
|
88
|
-
"artifact_integrity": "sha512-0+UfSDnAO0mWYIqxzzppekatya1gCF9ntZmuk7VVr2Hnf9QeM1S7uPLP/TWwDSTLtczB4EUoKA71E1WZJH2mbg==",
|
|
89
|
-
"reconstructed": true
|
|
90
|
-
},
|
|
91
|
-
{
|
|
92
|
-
"outcome": "published",
|
|
93
|
-
"version": "0.9.0",
|
|
94
|
-
"tag": "v0.9.0",
|
|
95
|
-
"tag_object": "4e9a1d2d62494efc0e4d9e3f3d7e1f142dac12c7",
|
|
96
|
-
"commit": "f57c9d9fffb8875830f65f12104c661b1e66fba6",
|
|
97
|
-
"tree": "b8e1825accee5bb619fca00e60a080f4ca973990",
|
|
98
|
-
"workflow_run_id": 30924764414,
|
|
99
|
-
"workflow_run_attempt": 1,
|
|
100
|
-
"workflow_conclusion": "success",
|
|
101
|
-
"verify_job_id": null,
|
|
102
|
-
"publish_job_id": null,
|
|
103
|
-
"artifact_integrity": "sha512-bfZPP9JGgBQrCFoZetabqKHc8HLaUqHVR3GJLb/1F1oon7z/B4el4aeBHVvXlxN9+2G7kU/ymPZ/K25nVQapmQ=="
|
|
104
|
-
},
|
|
105
|
-
{
|
|
106
|
-
"outcome": "published",
|
|
107
|
-
"version": "0.10.0",
|
|
108
|
-
"tag": "v0.10.0",
|
|
109
|
-
"tag_object": "1a7639f5c26082ecbe562a4e48d2a10a7aa632b1",
|
|
110
|
-
"commit": "8e5bd088b8069951a687156c35cf68d44985ddc1",
|
|
111
|
-
"tree": "1eda6cf7f378c2fcdf50510ec3b64acd968fff6e",
|
|
112
|
-
"workflow_run_id": 31255563527,
|
|
113
|
-
"workflow_run_attempt": 1,
|
|
114
|
-
"workflow_conclusion": "success",
|
|
115
|
-
"verify_job_id": null,
|
|
116
|
-
"publish_job_id": null,
|
|
117
|
-
"artifact_integrity": "sha512-NYZJi6z0g/Txb6ge+5NgRPNRszVEi0eNmICxkoZq5bGkJWm5qEvNSt3ws90Xz8IOKuWcyHC9i6sAK6cbZxwYDw=="
|
|
118
|
-
},
|
|
119
|
-
{
|
|
120
|
-
"outcome": "published",
|
|
121
|
-
"version": "0.10.1",
|
|
122
|
-
"tag": "v0.10.1",
|
|
123
|
-
"tag_object": "7fbf92b057988c6893ad4ff2af13dfa7bc50c131",
|
|
124
|
-
"commit": "691c9498c6248363a6f7d056178321443d12cf43",
|
|
125
|
-
"tree": "331d100770eb2d23f6e06d56a595141a6a9c1749",
|
|
126
|
-
"workflow_run_id": 31265832036,
|
|
127
|
-
"workflow_run_attempt": 1,
|
|
128
|
-
"workflow_conclusion": "success",
|
|
129
|
-
"verify_job_id": null,
|
|
130
|
-
"publish_job_id": null,
|
|
131
|
-
"artifact_integrity": "sha512-IAESc6+VpUGECNabFkO60agvga0B8Fx0hk2RMUkSDCnlIjMvDodMFKlqw+TOzdXtjf0Uk9LJi9ZCU4HfRYRRhw=="
|
|
132
|
-
},
|
|
133
|
-
{
|
|
134
|
-
"outcome": "published",
|
|
135
|
-
"version": "0.11.0",
|
|
136
|
-
"tag": "v0.11.0",
|
|
137
|
-
"tag_object": "9086deca3f3d05b4702a415c6d50b19c54bcc7f2",
|
|
138
|
-
"commit": "c1df96a858ff7c587d42508d388aa517a0b8545c",
|
|
139
|
-
"tree": "84a5599afba05d9630e0e41beb401f700d83cd68",
|
|
140
|
-
"workflow_run_id": 31531549256,
|
|
141
|
-
"workflow_run_attempt": 1,
|
|
142
|
-
"workflow_conclusion": "success",
|
|
143
|
-
"verify_job_id": null,
|
|
144
|
-
"publish_job_id": null,
|
|
145
|
-
"artifact_integrity": "sha512-I8mixCbSrLKyOAAyqEI/HZJ8cML2rz3r812Up8pr547OdAk9LxZevdCo7ojG42ZwrUmS5u7iKQPg7Vk1XvtX1g=="
|
|
146
|
-
},
|
|
147
|
-
{
|
|
148
|
-
"outcome": "published",
|
|
149
|
-
"version": "0.12.0",
|
|
150
|
-
"tag": "v0.12.0",
|
|
151
|
-
"tag_object": "472253fc4a6831c7d6261f89010575d942a87367",
|
|
152
|
-
"commit": "05cf130baf7698ebc8fdda600d684402bc4e3635",
|
|
153
|
-
"tree": "79fcf641d8ec441f78bcaebd2a36e9b2c151037f",
|
|
154
|
-
"workflow_run_id": 31717612793,
|
|
155
|
-
"workflow_run_attempt": 1,
|
|
156
|
-
"workflow_conclusion": "success",
|
|
157
|
-
"verify_job_id": null,
|
|
158
|
-
"publish_job_id": null,
|
|
159
|
-
"artifact_integrity": "sha512-kUYhiQCw6xd1cwfrRK+zLIAuMIn8LjqavUymvE37BwEnzR3GbMs+2awoEVzBETZ5APSwsn94U1Lox9LW056X6w=="
|
|
160
|
-
},
|
|
161
|
-
{
|
|
162
|
-
"outcome": "failed-superseded",
|
|
163
|
-
"version": "0.12.1",
|
|
164
|
-
"tag": "v0.12.1",
|
|
165
|
-
"tag_object": "7645a7a1b69db347f5129615a86180a222d2bbc8",
|
|
166
|
-
"commit": "4ee852e1f279d6f97aa8663e187a57aec5ff96ec",
|
|
167
|
-
"tree": "7f93e4bbaabf160724e397285c1b59ae69c6f751",
|
|
168
|
-
"workflow_run_id": 31731633686,
|
|
169
|
-
"workflow_run_attempt": 1,
|
|
170
|
-
"workflow_conclusion": "failure",
|
|
171
|
-
"verify_job_id": 94553258088,
|
|
172
|
-
"publish_job_id": 94553258088,
|
|
173
|
-
"artifact_integrity": null
|
|
174
|
-
},
|
|
175
|
-
{
|
|
176
|
-
"outcome": "published",
|
|
177
|
-
"version": "0.12.2",
|
|
178
|
-
"tag": "v0.12.2",
|
|
179
|
-
"tag_object": "9366da7a529f703020e6b4baac2ce2088c706cdc",
|
|
180
|
-
"commit": "149b3721c8702f63ecf025bc21c6acd9e2480ff8",
|
|
181
|
-
"tree": "f4db835093cf5554a1414acad262e0bc227c09b0",
|
|
182
|
-
"workflow_run_id": 31741935953,
|
|
183
|
-
"workflow_run_attempt": 1,
|
|
184
|
-
"workflow_conclusion": "success",
|
|
185
|
-
"verify_job_id": null,
|
|
186
|
-
"publish_job_id": null,
|
|
187
|
-
"artifact_integrity": "sha512-l459XEeqk0cSz1+Z8yk8cCVWik4/CX4OBTRZqj6n1SZYvDpzWJksUz82FA9k4taf//rs43Tfl1tpWXnRHAqxOQ=="
|
|
188
|
-
},
|
|
189
|
-
{
|
|
190
|
-
"outcome": "published",
|
|
191
|
-
"version": "0.12.3",
|
|
192
|
-
"tag": "v0.12.3",
|
|
193
|
-
"tag_object": "e410256092974dcef9619415ebdf74acde3e4484",
|
|
194
|
-
"commit": "9bfa43ced2af772d7a60f7be7828baaa146b4fd4",
|
|
195
|
-
"tree": "7605783c749615e13d9eb541c498856833ab690c",
|
|
196
|
-
"workflow_run_id": 31779837930,
|
|
197
|
-
"workflow_run_attempt": 1,
|
|
198
|
-
"workflow_conclusion": "success",
|
|
199
|
-
"verify_job_id": null,
|
|
200
|
-
"publish_job_id": null,
|
|
201
|
-
"artifact_integrity": "sha512-3GPQ1U7tBxg8Jp1Uac31CKKXQjMv4UNPhs5P6N83CyDXGJvkI88yowVJZGlLuo30eEk6jhERZ9AQWOjHst/sFA==",
|
|
202
|
-
"reconstructed": true
|
|
203
|
-
},
|
|
204
|
-
{
|
|
205
|
-
"outcome": "published",
|
|
206
|
-
"version": "0.13.0",
|
|
207
|
-
"tag": "v0.13.0",
|
|
208
|
-
"tag_object": "90022823ec91f4bc7964b2f1be1ef11c5f0e69dd",
|
|
209
|
-
"commit": "e9b37697e4f265872d071d738740ee1eaded2ff9",
|
|
210
|
-
"tree": "efc4603d44fde3121af7fff7cec4affa77405e44",
|
|
211
|
-
"workflow_run_id": 31897497966,
|
|
212
|
-
"workflow_run_attempt": 1,
|
|
213
|
-
"workflow_conclusion": "success",
|
|
214
|
-
"verify_job_id": null,
|
|
215
|
-
"publish_job_id": null,
|
|
216
|
-
"artifact_integrity": "sha512-6t25in3kpkVZTQqbeP65HgObU8GpOY3ewtY2SoaHDtIcJEtoe1LRwh3rguE6VqcqPWBUtmXdOaTMdtBErx5+oA==",
|
|
217
|
-
"reconstructed": true
|
|
218
|
-
},
|
|
219
|
-
{
|
|
220
|
-
"outcome": "published",
|
|
221
|
-
"version": "0.13.1",
|
|
222
|
-
"tag": "v0.13.1",
|
|
223
|
-
"tag_object": "90bd5de306f0261369a49665f1fadd8ff4ca920a",
|
|
224
|
-
"commit": "6a2f852e84161b0e1599bdd50ad18a5aea732643",
|
|
225
|
-
"tree": "81ef75c03a5e54fe99fb78a30bcc5c97fdce5387",
|
|
226
|
-
"workflow_run_id": 31943064299,
|
|
227
|
-
"workflow_run_attempt": 1,
|
|
228
|
-
"workflow_conclusion": "success",
|
|
229
|
-
"verify_job_id": null,
|
|
230
|
-
"publish_job_id": null,
|
|
231
|
-
"artifact_integrity": "sha512-AT5xOpd99U1Xd2waRJs01i2fz9ApMzd+NXQh0WMwTUknSsHpaQaEtGjcxtEDZG6MbB6nWfhoWG1ZZm9Fdkoytg=="
|
|
232
|
-
},
|
|
233
|
-
{
|
|
234
|
-
"outcome": "published",
|
|
235
|
-
"version": "0.14.0",
|
|
236
|
-
"tag": "v0.14.0",
|
|
237
|
-
"tag_object": "4ecd4e54bbf5a3dd719855ccc4d6f9db3939800f",
|
|
238
|
-
"commit": "a69926023d53268131e95b63efd141a17c634e2d",
|
|
239
|
-
"tree": "9074b05b687178fadc6d7cb40e55d8e5cf9cf248",
|
|
240
|
-
"workflow_run_id": 31957839605,
|
|
241
|
-
"workflow_run_attempt": 1,
|
|
242
|
-
"workflow_conclusion": "success",
|
|
243
|
-
"verify_job_id": null,
|
|
244
|
-
"publish_job_id": null,
|
|
245
|
-
"artifact_integrity": "sha512-rKRMxnxTnW+o3WOqtAFoih9IeRKCZw/lltqz7CbjC1riNq52CsZ871o1Fo7Fdk0WqwuzdFQmRJ7qOzPi08Q/QA=="
|
|
246
|
-
},
|
|
247
|
-
{
|
|
248
|
-
"outcome": "published",
|
|
249
|
-
"version": "1.0.0",
|
|
250
|
-
"tag": "v1.0.0",
|
|
251
|
-
"tag_object": "dfb8d029278cd4c13f5507181edd7466bf187e11",
|
|
252
|
-
"commit": "0196421f2cfeda6b495481f48f879a2dd6d720d2",
|
|
253
|
-
"tree": "7a073275d77ca6876e025a67b6629f28ddd30c52",
|
|
254
|
-
"workflow_run_id": 31968518032,
|
|
255
|
-
"workflow_run_attempt": 1,
|
|
256
|
-
"workflow_conclusion": "success",
|
|
257
|
-
"verify_job_id": null,
|
|
258
|
-
"publish_job_id": null,
|
|
259
|
-
"artifact_integrity": "sha512-c55kxgfpo3GWXQB2pxy65CV4zjgoWRLZKidVfdR7/k8kKX9m5cqV7gUckUJ15BuvkIGrha5PFO7NAz5xPUXaeQ=="
|
|
260
|
-
}
|
|
261
|
-
]
|