borgmcp-shared 1.0.0 → 1.1.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 +28 -5
- 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 +528 -267
- package/dist/conformance/adapter.js.map +1 -1
- package/dist/conformance/index.d.ts +2 -39
- package/dist/conformance/index.d.ts.map +1 -1
- package/dist/conformance/index.js +13 -42
- 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 +3 -3
- 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.0.1.md +5 -0
- package/docs/releases/1.1.0.md +19 -0
- package/docs/releasing.md +13 -23
- package/package.json +1 -2
- package/src/conformance/adapter.ts +779 -614
- package/src/conformance/index.ts +19 -62
- package/src/protocol/contract.ts +3 -3
- 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 -247
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
659
|
outcome: 'repository_conflict' | 'cube_conflict';
|
|
691
660
|
status: 409;
|
|
692
661
|
error: 'REPOSITORY_ALREADY_ASSOCIATED' | 'CUBE_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,7 +684,6 @@ 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
|
{
|
|
@@ -730,7 +695,6 @@ readonly AssociateRepositoryCubeConformanceVector[] = [
|
|
|
730
695
|
status: 409,
|
|
731
696
|
error: 'CUBE_ALREADY_ASSOCIATED',
|
|
732
697
|
diagnostic_disclosure: 'none',
|
|
733
|
-
retry_authority_state_delta: {},
|
|
734
698
|
},
|
|
735
699
|
},
|
|
736
700
|
];
|
|
@@ -739,19 +703,18 @@ export const REPOSITORY_CUBE_PERMISSION_CONFORMANCE = [
|
|
|
739
703
|
{
|
|
740
704
|
name: 'association denies an inaccessible explicit cube without mutation',
|
|
741
705
|
request: { cube_id: REPOSITORY_CUBE_ONE, ...REPOSITORY_ONE },
|
|
742
|
-
expected: { status: 403, error: 'ACCESS_DENIED'
|
|
706
|
+
expected: { status: 403, error: 'ACCESS_DENIED' },
|
|
743
707
|
},
|
|
744
708
|
{
|
|
745
709
|
name: 'same-client binding to an inaccessible cube is non-enumerating',
|
|
746
710
|
request: { cube_id: REPOSITORY_CUBE_ONE, ...REPOSITORY_ONE },
|
|
747
711
|
precondition: 'repository_bound_to_inaccessible_cube',
|
|
748
712
|
expected: {
|
|
749
|
-
resolve: { status: 200, outcome: 'none'
|
|
713
|
+
resolve: { status: 200, outcome: 'none' },
|
|
750
714
|
associate: {
|
|
751
715
|
status: 403,
|
|
752
716
|
error: 'ACCESS_DENIED',
|
|
753
717
|
diagnostic_disclosure: 'none',
|
|
754
|
-
authority_state_delta: {},
|
|
755
718
|
},
|
|
756
719
|
},
|
|
757
720
|
},
|
|
@@ -760,11 +723,10 @@ export const REPOSITORY_CUBE_PERMISSION_CONFORMANCE = [
|
|
|
760
723
|
request: { cube_id: REPOSITORY_CUBE_ONE, ...REPOSITORY_ONE },
|
|
761
724
|
precondition: 'repository_bound_by_another_client',
|
|
762
725
|
expected: {
|
|
763
|
-
resolve: { status: 200, outcome: 'none'
|
|
726
|
+
resolve: { status: 200, outcome: 'none' },
|
|
764
727
|
associate: {
|
|
765
728
|
status: 200,
|
|
766
729
|
outcome: 'resolved',
|
|
767
|
-
authority_state_delta: { repository_associations: 1 },
|
|
768
730
|
},
|
|
769
731
|
},
|
|
770
732
|
},
|
|
@@ -778,29 +740,26 @@ export const REPOSITORY_CUBE_AUTHORITATIVE_STATE_CONFORMANCE = [
|
|
|
778
740
|
status: 409,
|
|
779
741
|
error: 'INVALID_INPUT',
|
|
780
742
|
diagnostic_disclosure: 'none',
|
|
781
|
-
authority_state_delta: {},
|
|
782
743
|
},
|
|
783
744
|
},
|
|
784
745
|
] as const;
|
|
785
746
|
|
|
786
747
|
export const ENROLLMENT_AUTHORITY_CONFORMANCE = [
|
|
787
748
|
{
|
|
788
|
-
name: 'ordinary enrollment
|
|
749
|
+
name: 'ordinary enrollment returns no server capability',
|
|
789
750
|
response: {
|
|
790
751
|
purpose: 'client',
|
|
791
752
|
client_id: '00000000-0000-4000-8000-000000000111',
|
|
792
753
|
server_capabilities: [],
|
|
793
754
|
},
|
|
794
|
-
expected_state_delta: { cubes: 0, roles: 0, grants: 0, server_capabilities: 0 },
|
|
795
755
|
},
|
|
796
756
|
{
|
|
797
|
-
name: 'owner enrollment
|
|
757
|
+
name: 'owner enrollment returns create-cube authority',
|
|
798
758
|
response: {
|
|
799
759
|
purpose: 'owner',
|
|
800
760
|
client_id: '00000000-0000-4000-8000-000000000111',
|
|
801
761
|
server_capabilities: ['create_cube'],
|
|
802
762
|
},
|
|
803
|
-
expected_state_delta: { cubes: 0, roles: 0, grants: 0, server_capabilities: 1 },
|
|
804
763
|
},
|
|
805
764
|
] as const;
|
|
806
765
|
|
|
@@ -922,7 +881,6 @@ export interface RoleDeleteConformanceVector {
|
|
|
922
881
|
status: 200;
|
|
923
882
|
response: { deleted: true };
|
|
924
883
|
mutation: 'delete-role';
|
|
925
|
-
evicted_drone_retarget?: 'default-role';
|
|
926
884
|
activity_log_attribution?: 'preserved';
|
|
927
885
|
}
|
|
928
886
|
| {
|
|
@@ -942,13 +900,12 @@ export const ROLE_DELETE_CONFORMANCE: readonly RoleDeleteConformanceVector[] = [
|
|
|
942
900
|
expected: { status: 200, response: { deleted: true }, mutation: 'delete-role' },
|
|
943
901
|
},
|
|
944
902
|
{
|
|
945
|
-
name: '
|
|
903
|
+
name: 'deletes an evicted drone role without losing existing log attribution',
|
|
946
904
|
fixture: 'evicted-drone',
|
|
947
905
|
expected: {
|
|
948
906
|
status: 200,
|
|
949
907
|
response: { deleted: true },
|
|
950
908
|
mutation: 'delete-role',
|
|
951
|
-
evicted_drone_retarget: 'default-role',
|
|
952
909
|
activity_log_attribution: 'preserved',
|
|
953
910
|
},
|
|
954
911
|
},
|
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.
|
|
16
|
+
export const SHARED_PACKAGE_VERSION = '1.1.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 =
|
|
@@ -590,7 +590,7 @@ export function decodeProtocolTagPreflight(value: unknown): ProtocolTagPreflight
|
|
|
590
590
|
exactKeys(input, ['protocol_version'], ['protocol_version']);
|
|
591
591
|
if (input.protocol_version !== PROTOCOL_VERSION) {
|
|
592
592
|
throw new ProtocolContractError(
|
|
593
|
-
|
|
593
|
+
`This client requires protocol v${PROTOCOL_VERSION}. The peer presents a different version. Update \`borgmcp-server\` and \`borgmcp\` to matching releases — server first, then client.`,
|
|
594
594
|
ErrorCode.UNSUPPORTED_PROTOCOL_VERSION,
|
|
595
595
|
['protocol_version'],
|
|
596
596
|
);
|
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,247 +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
|
-
]
|