@motir/cli 0.2.0 → 0.3.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/README.md +4 -4
- package/dist/index.js +85 -77
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@ Terminal dispatch of the Motir work loop. The CLI is a client of **Motir's
|
|
|
4
4
|
public REST API** (`/api/v1`): every command is an ordinary HTTPS request
|
|
5
5
|
carrying a personal access token (PAT) as its bearer. There is no private
|
|
6
6
|
channel — the CLI uses the same documented endpoints, the same credential and
|
|
7
|
-
the same
|
|
7
|
+
the same permissions any third-party integration gets, and if it needs a capability
|
|
8
8
|
that capability lands on `/api/v1` first, where everyone can reach it.
|
|
9
9
|
|
|
10
10
|
That is the point rather than an implementation detail: nothing this tool does
|
|
@@ -68,8 +68,8 @@ construction** — the code and URL are printed whether or not a browser opens,
|
|
|
68
68
|
an SSH session or a container uses the same command; `--no-browser` skips the
|
|
69
69
|
launch attempt outright.
|
|
70
70
|
|
|
71
|
-
The approval mints a CLI-scoped PAT:
|
|
72
|
-
`
|
|
71
|
+
The approval mints a CLI-scoped PAT: permissions `project:browse`, `work_item:edit`,
|
|
72
|
+
`comment:add`, `ai:plan` (fixed — the grant can neither widen nor narrow them), 90-day
|
|
73
73
|
expiry, labelled `CLI · <hostname>`. It lands in `~/.config/motir/config.json`,
|
|
74
74
|
`chmod 600`, keyed by server URL.
|
|
75
75
|
|
|
@@ -85,7 +85,7 @@ There are three credential tiers, and `motir login` is the middle one:
|
|
|
85
85
|
there is no `.motir.json` to walk up to) and outranks a stored credential.
|
|
86
86
|
|
|
87
87
|
**Disconnecting** is two different things: `motir logout` forgets the local copy
|
|
88
|
-
on this machine, while **revoking the token in Settings → Account →
|
|
88
|
+
on this machine, while **revoking the token in Settings → Account → Tokens**
|
|
89
89
|
is the server-side kill switch. Full guide: [`docs/cli.md` §
|
|
90
90
|
Authenticate](../../docs/cli.md#authenticate).
|
|
91
91
|
|
package/dist/index.js
CHANGED
|
@@ -9,7 +9,7 @@ var __export = (target, all) => {
|
|
|
9
9
|
import { Command as Command2 } from "commander";
|
|
10
10
|
|
|
11
11
|
// src/version.ts
|
|
12
|
-
var CLI_VERSION = "0.
|
|
12
|
+
var CLI_VERSION = "0.3.0";
|
|
13
13
|
|
|
14
14
|
// src/commandCatalog.ts
|
|
15
15
|
var HELP_GROUP = {
|
|
@@ -112,7 +112,7 @@ var COMMAND_CATALOG = [
|
|
|
112
112
|
},
|
|
113
113
|
{
|
|
114
114
|
flags: "--project <key>",
|
|
115
|
-
description: "Project key, e.g.
|
|
115
|
+
description: "Project key, e.g. ACME. Omit it and the workspace\u2019s only project is used."
|
|
116
116
|
},
|
|
117
117
|
{
|
|
118
118
|
flags: "--repo <name>",
|
|
@@ -201,7 +201,7 @@ var COMMAND_CATALOG = [
|
|
|
201
201
|
{
|
|
202
202
|
path: "show",
|
|
203
203
|
signature: "<key>",
|
|
204
|
-
description: "Read one work item (e.g.
|
|
204
|
+
description: "Read one work item (e.g. ACME-7): fields, readiness, children, edges, body.",
|
|
205
205
|
helpGroup: HELP_GROUP.read,
|
|
206
206
|
options: [
|
|
207
207
|
{
|
|
@@ -237,7 +237,7 @@ var COMMAND_CATALOG = [
|
|
|
237
237
|
{
|
|
238
238
|
path: "open",
|
|
239
239
|
signature: "<key>",
|
|
240
|
-
description: "Open a work item (e.g.
|
|
240
|
+
description: "Open a work item (e.g. ACME-7) in the browser; prints the URL.",
|
|
241
241
|
helpGroup: HELP_GROUP.read,
|
|
242
242
|
options: [
|
|
243
243
|
{
|
|
@@ -273,7 +273,7 @@ var COMMAND_CATALOG = [
|
|
|
273
273
|
{
|
|
274
274
|
path: "run",
|
|
275
275
|
signature: "<key>",
|
|
276
|
-
description: "Dispatch a SPECIFIC work item (e.g.
|
|
276
|
+
description: "Dispatch a SPECIFIC work item (e.g. ACME-7), ready or forced.",
|
|
277
277
|
helpGroup: HELP_GROUP.workLoop,
|
|
278
278
|
options: [
|
|
279
279
|
{
|
|
@@ -493,280 +493,280 @@ var V1_OPERATIONS = {
|
|
|
493
493
|
"appendPlanTurn": {
|
|
494
494
|
method: "POST",
|
|
495
495
|
path: "/api/v1/projects/{projectKey}/plan-session/turns",
|
|
496
|
-
|
|
496
|
+
permission: "ai:plan",
|
|
497
497
|
successStatus: 200,
|
|
498
498
|
responseComponent: "PlanSession"
|
|
499
499
|
},
|
|
500
500
|
"archiveWorkItem": {
|
|
501
501
|
method: "POST",
|
|
502
502
|
path: "/api/v1/work-items/{key}/archive",
|
|
503
|
-
|
|
503
|
+
permission: "work_item:delete",
|
|
504
504
|
successStatus: 200,
|
|
505
505
|
responseComponent: "WorkItemDetail"
|
|
506
506
|
},
|
|
507
507
|
"completeSession": {
|
|
508
508
|
method: "POST",
|
|
509
509
|
path: "/api/v1/sessions/complete",
|
|
510
|
-
|
|
510
|
+
permission: "work_item:edit",
|
|
511
511
|
successStatus: 200,
|
|
512
512
|
responseComponent: "SessionCloseOut"
|
|
513
513
|
},
|
|
514
514
|
"completeSprint": {
|
|
515
515
|
method: "POST",
|
|
516
516
|
path: "/api/v1/sprints/{sprintId}/complete",
|
|
517
|
-
|
|
517
|
+
permission: "sprint:manage",
|
|
518
518
|
successStatus: 200,
|
|
519
519
|
responseComponent: "Sprint"
|
|
520
520
|
},
|
|
521
521
|
"countProjectWorkItems": {
|
|
522
522
|
method: "GET",
|
|
523
523
|
path: "/api/v1/projects/{projectKey}/work-items/count",
|
|
524
|
-
|
|
524
|
+
permission: "project:browse",
|
|
525
525
|
successStatus: 200,
|
|
526
526
|
responseComponent: "WorkItemCount"
|
|
527
527
|
},
|
|
528
528
|
"createSprint": {
|
|
529
529
|
method: "POST",
|
|
530
530
|
path: "/api/v1/projects/{projectKey}/sprints",
|
|
531
|
-
|
|
531
|
+
permission: "sprint:manage",
|
|
532
532
|
successStatus: 201,
|
|
533
533
|
responseComponent: "Sprint"
|
|
534
534
|
},
|
|
535
535
|
"createWorkItem": {
|
|
536
536
|
method: "POST",
|
|
537
537
|
path: "/api/v1/projects/{projectKey}/work-items",
|
|
538
|
-
|
|
538
|
+
permission: "work_item:edit",
|
|
539
539
|
successStatus: 201,
|
|
540
540
|
responseComponent: "WorkItemDetail"
|
|
541
541
|
},
|
|
542
542
|
"createWorkItemComment": {
|
|
543
543
|
method: "POST",
|
|
544
544
|
path: "/api/v1/work-items/{key}/comments",
|
|
545
|
-
|
|
545
|
+
permission: "comment:add",
|
|
546
546
|
successStatus: 201,
|
|
547
547
|
responseComponent: void 0
|
|
548
548
|
},
|
|
549
549
|
"createWorkItemLink": {
|
|
550
550
|
method: "POST",
|
|
551
551
|
path: "/api/v1/work-items/{key}/links",
|
|
552
|
-
|
|
552
|
+
permission: "work_item:edit",
|
|
553
553
|
successStatus: 201,
|
|
554
554
|
responseComponent: void 0
|
|
555
555
|
},
|
|
556
556
|
"deleteWorkItemLink": {
|
|
557
557
|
method: "DELETE",
|
|
558
558
|
path: "/api/v1/work-items/{key}/links",
|
|
559
|
-
|
|
559
|
+
permission: "work_item:edit",
|
|
560
560
|
successStatus: 204,
|
|
561
561
|
responseComponent: void 0
|
|
562
562
|
},
|
|
563
563
|
"getMe": {
|
|
564
564
|
method: "GET",
|
|
565
565
|
path: "/api/v1/me",
|
|
566
|
-
|
|
566
|
+
permission: "project:browse",
|
|
567
567
|
successStatus: 200,
|
|
568
568
|
responseComponent: "Me"
|
|
569
569
|
},
|
|
570
570
|
"getPlan": {
|
|
571
571
|
method: "GET",
|
|
572
572
|
path: "/api/v1/plans/{planId}",
|
|
573
|
-
|
|
573
|
+
permission: "project:browse",
|
|
574
574
|
successStatus: 200,
|
|
575
575
|
responseComponent: "Plan"
|
|
576
576
|
},
|
|
577
577
|
"getPlanStatus": {
|
|
578
578
|
method: "GET",
|
|
579
579
|
path: "/api/v1/plans/{planId}/status",
|
|
580
|
-
|
|
580
|
+
permission: "project:browse",
|
|
581
581
|
successStatus: 200,
|
|
582
582
|
responseComponent: "PlanOutcome"
|
|
583
583
|
},
|
|
584
584
|
"getProject": {
|
|
585
585
|
method: "GET",
|
|
586
586
|
path: "/api/v1/projects/{projectKey}",
|
|
587
|
-
|
|
587
|
+
permission: "project:browse",
|
|
588
588
|
successStatus: 200,
|
|
589
589
|
responseComponent: "Project"
|
|
590
590
|
},
|
|
591
591
|
"getProjectBacklog": {
|
|
592
592
|
method: "GET",
|
|
593
593
|
path: "/api/v1/projects/{projectKey}/backlog",
|
|
594
|
-
|
|
594
|
+
permission: "project:browse",
|
|
595
595
|
successStatus: 200,
|
|
596
596
|
responseComponent: void 0
|
|
597
597
|
},
|
|
598
598
|
"getProjectReadySet": {
|
|
599
599
|
method: "GET",
|
|
600
600
|
path: "/api/v1/projects/{projectKey}/ready",
|
|
601
|
-
|
|
601
|
+
permission: "project:browse",
|
|
602
602
|
successStatus: 200,
|
|
603
603
|
responseComponent: void 0
|
|
604
604
|
},
|
|
605
605
|
"getSprint": {
|
|
606
606
|
method: "GET",
|
|
607
607
|
path: "/api/v1/sprints/{sprintId}",
|
|
608
|
-
|
|
608
|
+
permission: "project:browse",
|
|
609
609
|
successStatus: 200,
|
|
610
610
|
responseComponent: "Sprint"
|
|
611
611
|
},
|
|
612
612
|
"getWorkItem": {
|
|
613
613
|
method: "GET",
|
|
614
614
|
path: "/api/v1/work-items/{key}",
|
|
615
|
-
|
|
615
|
+
permission: "project:browse",
|
|
616
616
|
successStatus: 200,
|
|
617
617
|
responseComponent: "WorkItemDetail"
|
|
618
618
|
},
|
|
619
619
|
"getWorkItemActivity": {
|
|
620
620
|
method: "GET",
|
|
621
621
|
path: "/api/v1/work-items/{key}/activity",
|
|
622
|
-
|
|
622
|
+
permission: "project:browse",
|
|
623
623
|
successStatus: 200,
|
|
624
624
|
responseComponent: void 0
|
|
625
625
|
},
|
|
626
626
|
"getWorkItemDispatchPrompt": {
|
|
627
627
|
method: "GET",
|
|
628
628
|
path: "/api/v1/work-items/{key}/dispatch-prompt",
|
|
629
|
-
|
|
629
|
+
permission: "project:browse",
|
|
630
630
|
successStatus: 200,
|
|
631
631
|
responseComponent: "DispatchPrompt"
|
|
632
632
|
},
|
|
633
633
|
"listProjects": {
|
|
634
634
|
method: "GET",
|
|
635
635
|
path: "/api/v1/projects",
|
|
636
|
-
|
|
636
|
+
permission: "project:browse",
|
|
637
637
|
successStatus: 200,
|
|
638
638
|
responseComponent: void 0
|
|
639
639
|
},
|
|
640
640
|
"listProjectSprints": {
|
|
641
641
|
method: "GET",
|
|
642
642
|
path: "/api/v1/projects/{projectKey}/sprints",
|
|
643
|
-
|
|
643
|
+
permission: "project:browse",
|
|
644
644
|
successStatus: 200,
|
|
645
645
|
responseComponent: void 0
|
|
646
646
|
},
|
|
647
647
|
"listProjectWorkItems": {
|
|
648
648
|
method: "GET",
|
|
649
649
|
path: "/api/v1/projects/{projectKey}/work-items",
|
|
650
|
-
|
|
650
|
+
permission: "project:browse",
|
|
651
651
|
successStatus: 200,
|
|
652
652
|
responseComponent: void 0
|
|
653
653
|
},
|
|
654
654
|
"listSprintWorkItems": {
|
|
655
655
|
method: "GET",
|
|
656
656
|
path: "/api/v1/sprints/{sprintId}/work-items",
|
|
657
|
-
|
|
657
|
+
permission: "project:browse",
|
|
658
658
|
successStatus: 200,
|
|
659
659
|
responseComponent: void 0
|
|
660
660
|
},
|
|
661
661
|
"listWorkItemComments": {
|
|
662
662
|
method: "GET",
|
|
663
663
|
path: "/api/v1/work-items/{key}/comments",
|
|
664
|
-
|
|
664
|
+
permission: "project:browse",
|
|
665
665
|
successStatus: 200,
|
|
666
666
|
responseComponent: void 0
|
|
667
667
|
},
|
|
668
668
|
"listWorkItemLinks": {
|
|
669
669
|
method: "GET",
|
|
670
670
|
path: "/api/v1/work-items/{key}/links",
|
|
671
|
-
|
|
671
|
+
permission: "project:browse",
|
|
672
672
|
successStatus: 200,
|
|
673
673
|
responseComponent: "WorkItemLinkGroups"
|
|
674
674
|
},
|
|
675
675
|
"listWorkItemTransitions": {
|
|
676
676
|
method: "GET",
|
|
677
677
|
path: "/api/v1/work-items/{key}/transitions",
|
|
678
|
-
|
|
678
|
+
permission: "project:browse",
|
|
679
679
|
successStatus: 200,
|
|
680
680
|
responseComponent: "TransitionList"
|
|
681
681
|
},
|
|
682
682
|
"listWorkspaces": {
|
|
683
683
|
method: "GET",
|
|
684
684
|
path: "/api/v1/workspaces",
|
|
685
|
-
|
|
685
|
+
permission: "project:browse",
|
|
686
686
|
successStatus: 200,
|
|
687
687
|
responseComponent: void 0
|
|
688
688
|
},
|
|
689
689
|
"moveWorkItemsToBacklog": {
|
|
690
690
|
method: "POST",
|
|
691
691
|
path: "/api/v1/projects/{projectKey}/backlog/work-items",
|
|
692
|
-
|
|
692
|
+
permission: "sprint:manage",
|
|
693
693
|
successStatus: 200,
|
|
694
694
|
responseComponent: "MembershipMoveResult"
|
|
695
695
|
},
|
|
696
696
|
"moveWorkItemsToSprint": {
|
|
697
697
|
method: "POST",
|
|
698
698
|
path: "/api/v1/sprints/{sprintId}/work-items",
|
|
699
|
-
|
|
699
|
+
permission: "sprint:manage",
|
|
700
700
|
successStatus: 200,
|
|
701
701
|
responseComponent: "MembershipMoveResult"
|
|
702
702
|
},
|
|
703
703
|
"openPlanSession": {
|
|
704
704
|
method: "POST",
|
|
705
705
|
path: "/api/v1/projects/{projectKey}/plan-session",
|
|
706
|
-
|
|
706
|
+
permission: "ai:plan",
|
|
707
707
|
successStatus: 200,
|
|
708
708
|
responseComponent: "PlanSession"
|
|
709
709
|
},
|
|
710
710
|
"recordWorkItemIntegration": {
|
|
711
711
|
method: "POST",
|
|
712
712
|
path: "/api/v1/work-items/{key}/integration",
|
|
713
|
-
|
|
713
|
+
permission: "work_item:edit",
|
|
714
714
|
successStatus: 200,
|
|
715
715
|
responseComponent: "IntegrationResult"
|
|
716
716
|
},
|
|
717
717
|
"reportWorkItemImplementation": {
|
|
718
718
|
method: "POST",
|
|
719
719
|
path: "/api/v1/work-items/{key}/implementation",
|
|
720
|
-
|
|
720
|
+
permission: "work_item:edit",
|
|
721
721
|
successStatus: 200,
|
|
722
722
|
responseComponent: void 0
|
|
723
723
|
},
|
|
724
724
|
"restoreWorkItem": {
|
|
725
725
|
method: "POST",
|
|
726
726
|
path: "/api/v1/work-items/{key}/restore",
|
|
727
|
-
|
|
727
|
+
permission: "work_item:delete",
|
|
728
728
|
successStatus: 200,
|
|
729
729
|
responseComponent: "WorkItemDetail"
|
|
730
730
|
},
|
|
731
731
|
"startSprint": {
|
|
732
732
|
method: "POST",
|
|
733
733
|
path: "/api/v1/sprints/{sprintId}/start",
|
|
734
|
-
|
|
734
|
+
permission: "sprint:manage",
|
|
735
735
|
successStatus: 200,
|
|
736
736
|
responseComponent: "Sprint"
|
|
737
737
|
},
|
|
738
738
|
"submitPlanSession": {
|
|
739
739
|
method: "POST",
|
|
740
740
|
path: "/api/v1/projects/{projectKey}/plan-session/submissions",
|
|
741
|
-
|
|
741
|
+
permission: "ai:plan",
|
|
742
742
|
successStatus: 202,
|
|
743
743
|
responseComponent: "PlanJobHandle"
|
|
744
744
|
},
|
|
745
745
|
"submitWorkItemExpansion": {
|
|
746
746
|
method: "POST",
|
|
747
747
|
path: "/api/v1/work-items/{key}/expansions",
|
|
748
|
-
|
|
748
|
+
permission: "ai:plan",
|
|
749
749
|
successStatus: 202,
|
|
750
750
|
responseComponent: "PlanJobHandle"
|
|
751
751
|
},
|
|
752
752
|
"transitionWorkItem": {
|
|
753
753
|
method: "POST",
|
|
754
754
|
path: "/api/v1/work-items/{key}/transitions",
|
|
755
|
-
|
|
755
|
+
permission: "work_item:edit",
|
|
756
756
|
successStatus: 200,
|
|
757
757
|
responseComponent: "WorkItemDetail"
|
|
758
758
|
},
|
|
759
759
|
"updateSprint": {
|
|
760
760
|
method: "PATCH",
|
|
761
761
|
path: "/api/v1/sprints/{sprintId}",
|
|
762
|
-
|
|
762
|
+
permission: "sprint:manage",
|
|
763
763
|
successStatus: 200,
|
|
764
764
|
responseComponent: "Sprint"
|
|
765
765
|
},
|
|
766
766
|
"updateWorkItem": {
|
|
767
767
|
method: "PATCH",
|
|
768
768
|
path: "/api/v1/work-items/{key}",
|
|
769
|
-
|
|
769
|
+
permission: "work_item:edit",
|
|
770
770
|
successStatus: 200,
|
|
771
771
|
responseComponent: "WorkItemDetail"
|
|
772
772
|
}
|
|
@@ -1369,7 +1369,7 @@ function validate20(data, { instancePath = "", parentData, parentDataProperty, r
|
|
|
1369
1369
|
}
|
|
1370
1370
|
validate20.evaluated = { "props": true, "dynamicProps": false, "dynamicItems": false };
|
|
1371
1371
|
var operation_archiveWorkItem = validate21;
|
|
1372
|
-
var schema34 = { "type": "object", "properties": { "key": { "type": "string", "pattern": "^[A-Z][A-Z0-9]*-\\d+$" }, "kind": { "type": "string", "enum": ["epic", "story", "task", "subtask", "bug"] }, "type": { "anyOf": [{ "type": "string", "enum": ["code", "design", "test", "content", "research", "review", "decision", "deploy", "manual", "chore"] }, { "type": "null" }] }, "title": { "type": "string" }, "status": { "type": "string" }, "priority": { "type": "string", "enum": ["lowest", "low", "medium", "high", "highest"] }, "assigneeId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "reporterId": { "type": "string" }, "dueDate": { "anyOf": [{ "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$" }, { "type": "null" }] }, "estimateMinutes": { "anyOf": [{ "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, { "type": "null" }] }, "storyPoints": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "createdAt": { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$" }, "updatedAt": { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$" }, "descriptionMd": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "parentKey": { "anyOf": [{ "type": "string", "pattern": "^[A-Z][A-Z0-9]*-\\d+$" }, { "type": "null" }] }, "ancestorKeys": { "type": "array", "items": { "type": "string", "pattern": "^[A-Z][A-Z0-9]*-\\d+$" } }, "children": { "type": "array", "items": { "type": "object", "properties": { "key": { "type": "string", "pattern": "^[A-Z][A-Z0-9]*-\\d+$" }, "kind": { "type": "string", "enum": ["epic", "story", "task", "subtask", "bug"] }, "title": { "type": "string" }, "status": { "type": "string" }, "priority": { "type": "string", "enum": ["lowest", "low", "medium", "high", "highest"] }, "assigneeId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "estimateMinutes": { "anyOf": [{ "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, { "type": "null" }] }, "storyPoints": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "parentKey": { "anyOf": [{ "type": "string", "pattern": "^[A-Z][A-Z0-9]*-\\d+$" }, { "type": "null" }] }, "archived": { "type": "boolean" }, "dependencies": { "type": "object", "properties": { "blockedBy": { "type": "array", "items": { "type": "object", "properties": { "key": { "type": "string", "pattern": "^[A-Z][A-Z0-9]*-\\d+$" }, "title": { "type": "string" }, "status": { "type": "string" } }, "required": ["key", "title", "status"], "additionalProperties": false } }, "blocks": { "type": "array", "items": { "type": "object", "properties": { "key": { "type": "string", "pattern": "^[A-Z][A-Z0-9]*-\\d+$" }, "title": { "type": "string" }, "status": { "type": "string" } }, "required": ["key", "title", "status"], "additionalProperties": false } } }, "required": ["blockedBy", "blocks"], "additionalProperties": false } }, "required": ["key", "kind", "title", "status", "priority", "assigneeId", "estimateMinutes", "storyPoints", "parentKey", "archived", "dependencies"], "additionalProperties": false } }, "links": { "type": "object", "properties": { "blockedBy": { "type": "array", "items": { "type": "object", "properties": { "key": { "type": "string", "pattern": "^[A-Z][A-Z0-9]*-\\d+$" }, "kind": { "type": "string", "enum": ["epic", "story", "task", "subtask", "bug"] }, "title": { "type": "string" }, "status": { "type": "string" }, "priority": { "type": "string", "enum": ["lowest", "low", "medium", "high", "highest"] }, "assigneeId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "estimateMinutes": { "anyOf": [{ "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, { "type": "null" }] }, "storyPoints": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "parentKey": { "anyOf": [{ "type": "string", "pattern": "^[A-Z][A-Z0-9]*-\\d+$" }, { "type": "null" }] }, "archived": { "type": "boolean" } }, "required": ["key", "kind", "title", "status", "priority", "assigneeId", "estimateMinutes", "storyPoints", "parentKey", "archived"], "additionalProperties": false } }, "blocks": { "type": "array", "items": { "type": "object", "properties": { "key": { "type": "string", "pattern": "^[A-Z][A-Z0-9]*-\\d+$" }, "kind": { "type": "string", "enum": ["epic", "story", "task", "subtask", "bug"] }, "title": { "type": "string" }, "status": { "type": "string" }, "priority": { "type": "string", "enum": ["lowest", "low", "medium", "high", "highest"] }, "assigneeId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "estimateMinutes": { "anyOf": [{ "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, { "type": "null" }] }, "storyPoints": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "parentKey": { "anyOf": [{ "type": "string", "pattern": "^[A-Z][A-Z0-9]*-\\d+$" }, { "type": "null" }] }, "archived": { "type": "boolean" } }, "required": ["key", "kind", "title", "status", "priority", "assigneeId", "estimateMinutes", "storyPoints", "parentKey", "archived"], "additionalProperties": false } }, "relatesTo": { "type": "array", "items": { "type": "object", "properties": { "key": { "type": "string", "pattern": "^[A-Z][A-Z0-9]*-\\d+$" }, "kind": { "type": "string", "enum": ["epic", "story", "task", "subtask", "bug"] }, "title": { "type": "string" }, "status": { "type": "string" }, "priority": { "type": "string", "enum": ["lowest", "low", "medium", "high", "highest"] }, "assigneeId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "estimateMinutes": { "anyOf": [{ "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, { "type": "null" }] }, "storyPoints": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "parentKey": { "anyOf": [{ "type": "string", "pattern": "^[A-Z][A-Z0-9]*-\\d+$" }, { "type": "null" }] }, "archived": { "type": "boolean" } }, "required": ["key", "kind", "title", "status", "priority", "assigneeId", "estimateMinutes", "storyPoints", "parentKey", "archived"], "additionalProperties": false } }, "duplicates": { "type": "array", "items": { "type": "object", "properties": { "key": { "type": "string", "pattern": "^[A-Z][A-Z0-9]*-\\d+$" }, "kind": { "type": "string", "enum": ["epic", "story", "task", "subtask", "bug"] }, "title": { "type": "string" }, "status": { "type": "string" }, "priority": { "type": "string", "enum": ["lowest", "low", "medium", "high", "highest"] }, "assigneeId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "estimateMinutes": { "anyOf": [{ "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, { "type": "null" }] }, "storyPoints": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "parentKey": { "anyOf": [{ "type": "string", "pattern": "^[A-Z][A-Z0-9]*-\\d+$" }, { "type": "null" }] }, "archived": { "type": "boolean" } }, "required": ["key", "kind", "title", "status", "priority", "assigneeId", "estimateMinutes", "storyPoints", "parentKey", "archived"], "additionalProperties": false } }, "clones": { "type": "array", "items": { "type": "object", "properties": { "key": { "type": "string", "pattern": "^[A-Z][A-Z0-9]*-\\d+$" }, "kind": { "type": "string", "enum": ["epic", "story", "task", "subtask", "bug"] }, "title": { "type": "string" }, "status": { "type": "string" }, "priority": { "type": "string", "enum": ["lowest", "low", "medium", "high", "highest"] }, "assigneeId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "estimateMinutes": { "anyOf": [{ "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, { "type": "null" }] }, "storyPoints": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "parentKey": { "anyOf": [{ "type": "string", "pattern": "^[A-Z][A-Z0-9]*-\\d+$" }, { "type": "null" }] }, "archived": { "type": "boolean" } }, "required": ["key", "kind", "title", "status", "priority", "assigneeId", "estimateMinutes", "storyPoints", "parentKey", "archived"], "additionalProperties": false } } }, "required": ["blockedBy", "blocks", "relatesTo", "duplicates", "clones"], "additionalProperties": false }, "readiness": { "type": "object", "properties": { "ready": { "type": "boolean" }, "openBlockers": { "type": "array", "items": { "type": "object", "properties": { "key": { "type": "string", "pattern": "^[A-Z][A-Z0-9]*-\\d+$" }, "kind": { "type": "string", "enum": ["epic", "story", "task", "subtask", "bug"] }, "title": { "type": "string" }, "status": { "type": "string" }, "priority": { "type": "string", "enum": ["lowest", "low", "medium", "high", "highest"] }, "assigneeId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "estimateMinutes": { "anyOf": [{ "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, { "type": "null" }] }, "storyPoints": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "parentKey": { "anyOf": [{ "type": "string", "pattern": "^[A-Z][A-Z0-9]*-\\d+$" }, { "type": "null" }] }, "archived": { "type": "boolean" } }, "required": ["key", "kind", "title", "status", "priority", "assigneeId", "estimateMinutes", "storyPoints", "parentKey", "archived"], "additionalProperties": false } }, "blockedByAncestorKey": { "anyOf": [{ "type": "string", "pattern": "^[A-Z][A-Z0-9]*-\\d+$" }, { "type": "null" }] }, "blockedByAncestorTitle": { "anyOf": [{ "type": "string" }, { "type": "null" }] } }, "required": ["ready", "openBlockers", "blockedByAncestorKey", "blockedByAncestorTitle"], "additionalProperties": false }, "labels": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" } }, "required": ["name"], "additionalProperties": false } }, "components": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" } }, "required": ["name"], "additionalProperties": false } }, "commentCount": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, "sprintId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "targetRepo": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "executor": { "anyOf": [{ "type": "string", "enum": ["coding_agent", "human"] }, { "type": "null" }] }, "planningSource": { "anyOf": [{ "type": "string", "enum": ["native", "mcp", "manual", "api"] }, { "type": "null" }] }, "planningHarness": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "planningModel": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "implementationSource": { "anyOf": [{ "type": "string", "enum": ["hosted", "byok", "manual"] }, { "type": "null" }] }, "implementationHarness": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "implementationModel": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "archivedAt": { "anyOf": [{ "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$" }, { "type": "null" }] } }, "required": ["key", "kind", "type", "title", "status", "priority", "assigneeId", "reporterId", "dueDate", "estimateMinutes", "storyPoints", "createdAt", "updatedAt", "descriptionMd", "parentKey", "ancestorKeys", "children", "links", "readiness", "labels", "components", "commentCount", "sprintId", "targetRepo", "executor", "planningSource", "planningHarness", "planningModel", "implementationSource", "implementationHarness", "implementationModel", "archivedAt"], "additionalProperties": false, "$id": "motir://v1/components/WorkItemDetail" };
|
|
1372
|
+
var schema34 = { "type": "object", "properties": { "key": { "type": "string", "pattern": "^[A-Z][A-Z0-9]*-\\d+$" }, "kind": { "type": "string", "enum": ["epic", "story", "task", "subtask", "bug"] }, "type": { "anyOf": [{ "type": "string", "enum": ["code", "design", "test", "content", "copy", "translate", "research", "review", "verification", "decision", "deploy", "manual", "legal", "chore"] }, { "type": "null" }] }, "title": { "type": "string" }, "status": { "type": "string" }, "priority": { "type": "string", "enum": ["lowest", "low", "medium", "high", "highest"] }, "assigneeId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "reporterId": { "type": "string" }, "dueDate": { "anyOf": [{ "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$" }, { "type": "null" }] }, "estimateMinutes": { "anyOf": [{ "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, { "type": "null" }] }, "storyPoints": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "createdAt": { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$" }, "updatedAt": { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$" }, "descriptionMd": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "parentKey": { "anyOf": [{ "type": "string", "pattern": "^[A-Z][A-Z0-9]*-\\d+$" }, { "type": "null" }] }, "ancestorKeys": { "type": "array", "items": { "type": "string", "pattern": "^[A-Z][A-Z0-9]*-\\d+$" } }, "children": { "type": "array", "items": { "type": "object", "properties": { "key": { "type": "string", "pattern": "^[A-Z][A-Z0-9]*-\\d+$" }, "kind": { "type": "string", "enum": ["epic", "story", "task", "subtask", "bug"] }, "title": { "type": "string" }, "status": { "type": "string" }, "priority": { "type": "string", "enum": ["lowest", "low", "medium", "high", "highest"] }, "assigneeId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "estimateMinutes": { "anyOf": [{ "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, { "type": "null" }] }, "storyPoints": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "parentKey": { "anyOf": [{ "type": "string", "pattern": "^[A-Z][A-Z0-9]*-\\d+$" }, { "type": "null" }] }, "archived": { "type": "boolean" }, "dependencies": { "type": "object", "properties": { "blockedBy": { "type": "array", "items": { "type": "object", "properties": { "key": { "type": "string", "pattern": "^[A-Z][A-Z0-9]*-\\d+$" }, "title": { "type": "string" }, "status": { "type": "string" } }, "required": ["key", "title", "status"], "additionalProperties": false } }, "blocks": { "type": "array", "items": { "type": "object", "properties": { "key": { "type": "string", "pattern": "^[A-Z][A-Z0-9]*-\\d+$" }, "title": { "type": "string" }, "status": { "type": "string" } }, "required": ["key", "title", "status"], "additionalProperties": false } } }, "required": ["blockedBy", "blocks"], "additionalProperties": false } }, "required": ["key", "kind", "title", "status", "priority", "assigneeId", "estimateMinutes", "storyPoints", "parentKey", "archived", "dependencies"], "additionalProperties": false } }, "links": { "type": "object", "properties": { "blockedBy": { "type": "array", "items": { "type": "object", "properties": { "key": { "type": "string", "pattern": "^[A-Z][A-Z0-9]*-\\d+$" }, "kind": { "type": "string", "enum": ["epic", "story", "task", "subtask", "bug"] }, "title": { "type": "string" }, "status": { "type": "string" }, "priority": { "type": "string", "enum": ["lowest", "low", "medium", "high", "highest"] }, "assigneeId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "estimateMinutes": { "anyOf": [{ "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, { "type": "null" }] }, "storyPoints": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "parentKey": { "anyOf": [{ "type": "string", "pattern": "^[A-Z][A-Z0-9]*-\\d+$" }, { "type": "null" }] }, "archived": { "type": "boolean" } }, "required": ["key", "kind", "title", "status", "priority", "assigneeId", "estimateMinutes", "storyPoints", "parentKey", "archived"], "additionalProperties": false } }, "blocks": { "type": "array", "items": { "type": "object", "properties": { "key": { "type": "string", "pattern": "^[A-Z][A-Z0-9]*-\\d+$" }, "kind": { "type": "string", "enum": ["epic", "story", "task", "subtask", "bug"] }, "title": { "type": "string" }, "status": { "type": "string" }, "priority": { "type": "string", "enum": ["lowest", "low", "medium", "high", "highest"] }, "assigneeId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "estimateMinutes": { "anyOf": [{ "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, { "type": "null" }] }, "storyPoints": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "parentKey": { "anyOf": [{ "type": "string", "pattern": "^[A-Z][A-Z0-9]*-\\d+$" }, { "type": "null" }] }, "archived": { "type": "boolean" } }, "required": ["key", "kind", "title", "status", "priority", "assigneeId", "estimateMinutes", "storyPoints", "parentKey", "archived"], "additionalProperties": false } }, "relatesTo": { "type": "array", "items": { "type": "object", "properties": { "key": { "type": "string", "pattern": "^[A-Z][A-Z0-9]*-\\d+$" }, "kind": { "type": "string", "enum": ["epic", "story", "task", "subtask", "bug"] }, "title": { "type": "string" }, "status": { "type": "string" }, "priority": { "type": "string", "enum": ["lowest", "low", "medium", "high", "highest"] }, "assigneeId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "estimateMinutes": { "anyOf": [{ "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, { "type": "null" }] }, "storyPoints": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "parentKey": { "anyOf": [{ "type": "string", "pattern": "^[A-Z][A-Z0-9]*-\\d+$" }, { "type": "null" }] }, "archived": { "type": "boolean" } }, "required": ["key", "kind", "title", "status", "priority", "assigneeId", "estimateMinutes", "storyPoints", "parentKey", "archived"], "additionalProperties": false } }, "duplicates": { "type": "array", "items": { "type": "object", "properties": { "key": { "type": "string", "pattern": "^[A-Z][A-Z0-9]*-\\d+$" }, "kind": { "type": "string", "enum": ["epic", "story", "task", "subtask", "bug"] }, "title": { "type": "string" }, "status": { "type": "string" }, "priority": { "type": "string", "enum": ["lowest", "low", "medium", "high", "highest"] }, "assigneeId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "estimateMinutes": { "anyOf": [{ "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, { "type": "null" }] }, "storyPoints": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "parentKey": { "anyOf": [{ "type": "string", "pattern": "^[A-Z][A-Z0-9]*-\\d+$" }, { "type": "null" }] }, "archived": { "type": "boolean" } }, "required": ["key", "kind", "title", "status", "priority", "assigneeId", "estimateMinutes", "storyPoints", "parentKey", "archived"], "additionalProperties": false } }, "clones": { "type": "array", "items": { "type": "object", "properties": { "key": { "type": "string", "pattern": "^[A-Z][A-Z0-9]*-\\d+$" }, "kind": { "type": "string", "enum": ["epic", "story", "task", "subtask", "bug"] }, "title": { "type": "string" }, "status": { "type": "string" }, "priority": { "type": "string", "enum": ["lowest", "low", "medium", "high", "highest"] }, "assigneeId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "estimateMinutes": { "anyOf": [{ "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, { "type": "null" }] }, "storyPoints": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "parentKey": { "anyOf": [{ "type": "string", "pattern": "^[A-Z][A-Z0-9]*-\\d+$" }, { "type": "null" }] }, "archived": { "type": "boolean" } }, "required": ["key", "kind", "title", "status", "priority", "assigneeId", "estimateMinutes", "storyPoints", "parentKey", "archived"], "additionalProperties": false } } }, "required": ["blockedBy", "blocks", "relatesTo", "duplicates", "clones"], "additionalProperties": false }, "readiness": { "type": "object", "properties": { "ready": { "type": "boolean" }, "openBlockers": { "type": "array", "items": { "type": "object", "properties": { "key": { "type": "string", "pattern": "^[A-Z][A-Z0-9]*-\\d+$" }, "kind": { "type": "string", "enum": ["epic", "story", "task", "subtask", "bug"] }, "title": { "type": "string" }, "status": { "type": "string" }, "priority": { "type": "string", "enum": ["lowest", "low", "medium", "high", "highest"] }, "assigneeId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "estimateMinutes": { "anyOf": [{ "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, { "type": "null" }] }, "storyPoints": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "parentKey": { "anyOf": [{ "type": "string", "pattern": "^[A-Z][A-Z0-9]*-\\d+$" }, { "type": "null" }] }, "archived": { "type": "boolean" } }, "required": ["key", "kind", "title", "status", "priority", "assigneeId", "estimateMinutes", "storyPoints", "parentKey", "archived"], "additionalProperties": false } }, "blockedByAncestorKey": { "anyOf": [{ "type": "string", "pattern": "^[A-Z][A-Z0-9]*-\\d+$" }, { "type": "null" }] }, "blockedByAncestorTitle": { "anyOf": [{ "type": "string" }, { "type": "null" }] } }, "required": ["ready", "openBlockers", "blockedByAncestorKey", "blockedByAncestorTitle"], "additionalProperties": false }, "labels": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" } }, "required": ["name"], "additionalProperties": false } }, "components": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" } }, "required": ["name"], "additionalProperties": false } }, "commentCount": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, "sprintId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "targetRepo": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "executor": { "anyOf": [{ "type": "string", "enum": ["coding_agent", "human"] }, { "type": "null" }] }, "planningSource": { "anyOf": [{ "type": "string", "enum": ["native", "mcp", "manual", "api"] }, { "type": "null" }] }, "planningHarness": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "planningModel": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "implementationSource": { "anyOf": [{ "type": "string", "enum": ["hosted", "byok", "manual"] }, { "type": "null" }] }, "implementationHarness": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "implementationModel": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "archivedAt": { "anyOf": [{ "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$" }, { "type": "null" }] } }, "required": ["key", "kind", "type", "title", "status", "priority", "assigneeId", "reporterId", "dueDate", "estimateMinutes", "storyPoints", "createdAt", "updatedAt", "descriptionMd", "parentKey", "ancestorKeys", "children", "links", "readiness", "labels", "components", "commentCount", "sprintId", "targetRepo", "executor", "planningSource", "planningHarness", "planningModel", "implementationSource", "implementationHarness", "implementationModel", "archivedAt"], "additionalProperties": false, "$id": "motir://v1/components/WorkItemDetail" };
|
|
1373
1373
|
var pattern6 = new RegExp("^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", "u");
|
|
1374
1374
|
function validate21(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
|
|
1375
1375
|
;
|
|
@@ -1449,7 +1449,7 @@ function validate21(data, { instancePath = "", parentData, parentDataProperty, r
|
|
|
1449
1449
|
}
|
|
1450
1450
|
errors++;
|
|
1451
1451
|
}
|
|
1452
|
-
if (!(data2 === "code" || data2 === "design" || data2 === "test" || data2 === "content" || data2 === "research" || data2 === "review" || data2 === "decision" || data2 === "deploy" || data2 === "manual" || data2 === "chore")) {
|
|
1452
|
+
if (!(data2 === "code" || data2 === "design" || data2 === "test" || data2 === "content" || data2 === "copy" || data2 === "translate" || data2 === "research" || data2 === "review" || data2 === "verification" || data2 === "decision" || data2 === "deploy" || data2 === "manual" || data2 === "legal" || data2 === "chore")) {
|
|
1453
1453
|
const err1 = { instancePath: instancePath + "/type", schemaPath: "motir://v1/components/WorkItemDetail/properties/type/anyOf/0/enum", keyword: "enum", params: { allowedValues: schema34.properties.type.anyOf[0].enum }, message: "must be equal to one of the allowed values" };
|
|
1454
1454
|
if (vErrors === null) {
|
|
1455
1455
|
vErrors = [err1];
|
|
@@ -7239,7 +7239,7 @@ function validate26(data, { instancePath = "", parentData, parentDataProperty, r
|
|
|
7239
7239
|
}
|
|
7240
7240
|
errors++;
|
|
7241
7241
|
}
|
|
7242
|
-
if (!(data2 === "code" || data2 === "design" || data2 === "test" || data2 === "content" || data2 === "research" || data2 === "review" || data2 === "decision" || data2 === "deploy" || data2 === "manual" || data2 === "chore")) {
|
|
7242
|
+
if (!(data2 === "code" || data2 === "design" || data2 === "test" || data2 === "content" || data2 === "copy" || data2 === "translate" || data2 === "research" || data2 === "review" || data2 === "verification" || data2 === "decision" || data2 === "deploy" || data2 === "manual" || data2 === "legal" || data2 === "chore")) {
|
|
7243
7243
|
const err1 = { instancePath: instancePath + "/type", schemaPath: "motir://v1/components/WorkItemDetail/properties/type/anyOf/0/enum", keyword: "enum", params: { allowedValues: schema34.properties.type.anyOf[0].enum }, message: "must be equal to one of the allowed values" };
|
|
7244
7244
|
if (vErrors === null) {
|
|
7245
7245
|
vErrors = [err1];
|
|
@@ -12082,13 +12082,13 @@ function validate29(data, { instancePath = "", parentData, parentDataProperty, r
|
|
|
12082
12082
|
if (errors === _errs0) {
|
|
12083
12083
|
if (data && typeof data == "object" && !Array.isArray(data)) {
|
|
12084
12084
|
let missing0;
|
|
12085
|
-
if (data.user === void 0 && (missing0 = "user") || data.workspaceId === void 0 && (missing0 = "workspaceId") || data.
|
|
12085
|
+
if (data.user === void 0 && (missing0 = "user") || data.workspaceId === void 0 && (missing0 = "workspaceId") || data.permissions === void 0 && (missing0 = "permissions")) {
|
|
12086
12086
|
validate29.errors = [{ instancePath, schemaPath: "motir://v1/components/Me/required", keyword: "required", params: { missingProperty: missing0 }, message: "must have required property '" + missing0 + "'" }];
|
|
12087
12087
|
return false;
|
|
12088
12088
|
} else {
|
|
12089
12089
|
const _errs2 = errors;
|
|
12090
12090
|
for (const key0 in data) {
|
|
12091
|
-
if (!(key0 === "user" || key0 === "workspaceId" || key0 === "
|
|
12091
|
+
if (!(key0 === "user" || key0 === "workspaceId" || key0 === "permissions")) {
|
|
12092
12092
|
validate29.errors = [{ instancePath, schemaPath: "motir://v1/components/Me/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key0 }, message: "must NOT have additional properties" }];
|
|
12093
12093
|
return false;
|
|
12094
12094
|
break;
|
|
@@ -12171,8 +12171,8 @@ function validate29(data, { instancePath = "", parentData, parentDataProperty, r
|
|
|
12171
12171
|
var valid1 = true;
|
|
12172
12172
|
}
|
|
12173
12173
|
if (valid1) {
|
|
12174
|
-
if (data.
|
|
12175
|
-
let data5 = data.
|
|
12174
|
+
if (data.permissions !== void 0) {
|
|
12175
|
+
let data5 = data.permissions;
|
|
12176
12176
|
const _errs14 = errors;
|
|
12177
12177
|
if (errors === _errs14) {
|
|
12178
12178
|
if (Array.isArray(data5)) {
|
|
@@ -12181,7 +12181,7 @@ function validate29(data, { instancePath = "", parentData, parentDataProperty, r
|
|
|
12181
12181
|
for (let i0 = 0; i0 < len0; i0++) {
|
|
12182
12182
|
const _errs16 = errors;
|
|
12183
12183
|
if (typeof data5[i0] !== "string") {
|
|
12184
|
-
validate29.errors = [{ instancePath: instancePath + "/
|
|
12184
|
+
validate29.errors = [{ instancePath: instancePath + "/permissions/" + i0, schemaPath: "motir://v1/components/Me/properties/permissions/items/type", keyword: "type", params: { type: "string" }, message: "must be string" }];
|
|
12185
12185
|
return false;
|
|
12186
12186
|
}
|
|
12187
12187
|
var valid3 = _errs16 === errors;
|
|
@@ -12190,7 +12190,7 @@ function validate29(data, { instancePath = "", parentData, parentDataProperty, r
|
|
|
12190
12190
|
}
|
|
12191
12191
|
}
|
|
12192
12192
|
} else {
|
|
12193
|
-
validate29.errors = [{ instancePath: instancePath + "/
|
|
12193
|
+
validate29.errors = [{ instancePath: instancePath + "/permissions", schemaPath: "motir://v1/components/Me/properties/permissions/type", keyword: "type", params: { type: "array" }, message: "must be array" }];
|
|
12194
12194
|
return false;
|
|
12195
12195
|
}
|
|
12196
12196
|
}
|
|
@@ -14644,7 +14644,7 @@ function validate33(data, { instancePath = "", parentData, parentDataProperty, r
|
|
|
14644
14644
|
}
|
|
14645
14645
|
validate33.evaluated = { "props": { "items": true, "nextCursor": true, "totalCount": true }, "dynamicProps": false, "dynamicItems": false };
|
|
14646
14646
|
var operation_getProjectReadySet = validate34;
|
|
14647
|
-
var schema60 = { "type": "object", "properties": { "key": { "type": "string", "pattern": "^[A-Z][A-Z0-9]*-\\d+$" }, "kind": { "type": "string", "enum": ["epic", "story", "task", "subtask", "bug"] }, "title": { "type": "string" }, "priority": { "type": "string", "enum": ["lowest", "low", "medium", "high", "highest"] }, "status": { "type": "object", "properties": { "key": { "type": "string" }, "category": { "type": "string" } }, "required": ["key", "category"], "additionalProperties": false }, "type": { "anyOf": [{ "type": "string", "enum": ["code", "design", "test", "content", "research", "review", "decision", "deploy", "manual", "chore"] }, { "type": "null" }] }, "executor": { "anyOf": [{ "type": "string", "enum": ["coding_agent", "human"] }, { "type": "null" }] }, "assigneeId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "assignee": { "anyOf": [{ "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" } }, "required": ["id", "name"], "additionalProperties": false }, { "type": "null" }] }, "descriptionExcerpt": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "inheritedSessionBranch": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "dependencies": { "type": "object", "properties": { "blockedBy": { "type": "array", "items": { "type": "object", "properties": { "key": { "type": "string", "pattern": "^[A-Z][A-Z0-9]*-\\d+$" }, "title": { "type": "string" }, "status": { "type": "string" } }, "required": ["key", "title", "status"], "additionalProperties": false } }, "blocks": { "type": "array", "items": { "type": "object", "properties": { "key": { "type": "string", "pattern": "^[A-Z][A-Z0-9]*-\\d+$" }, "title": { "type": "string" }, "status": { "type": "string" } }, "required": ["key", "title", "status"], "additionalProperties": false } } }, "required": ["blockedBy", "blocks"], "additionalProperties": false } }, "required": ["key", "kind", "title", "priority", "status", "type", "executor", "assigneeId", "assignee", "descriptionExcerpt", "inheritedSessionBranch", "dependencies"], "additionalProperties": false, "$id": "motir://v1/components/ReadyItem" };
|
|
14647
|
+
var schema60 = { "type": "object", "properties": { "key": { "type": "string", "pattern": "^[A-Z][A-Z0-9]*-\\d+$" }, "kind": { "type": "string", "enum": ["epic", "story", "task", "subtask", "bug"] }, "title": { "type": "string" }, "priority": { "type": "string", "enum": ["lowest", "low", "medium", "high", "highest"] }, "status": { "type": "object", "properties": { "key": { "type": "string" }, "category": { "type": "string" } }, "required": ["key", "category"], "additionalProperties": false }, "type": { "anyOf": [{ "type": "string", "enum": ["code", "design", "test", "content", "copy", "translate", "research", "review", "verification", "decision", "deploy", "manual", "legal", "chore"] }, { "type": "null" }] }, "executor": { "anyOf": [{ "type": "string", "enum": ["coding_agent", "human"] }, { "type": "null" }] }, "assigneeId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "assignee": { "anyOf": [{ "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" } }, "required": ["id", "name"], "additionalProperties": false }, { "type": "null" }] }, "descriptionExcerpt": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "inheritedSessionBranch": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "dependencies": { "type": "object", "properties": { "blockedBy": { "type": "array", "items": { "type": "object", "properties": { "key": { "type": "string", "pattern": "^[A-Z][A-Z0-9]*-\\d+$" }, "title": { "type": "string" }, "status": { "type": "string" } }, "required": ["key", "title", "status"], "additionalProperties": false } }, "blocks": { "type": "array", "items": { "type": "object", "properties": { "key": { "type": "string", "pattern": "^[A-Z][A-Z0-9]*-\\d+$" }, "title": { "type": "string" }, "status": { "type": "string" } }, "required": ["key", "title", "status"], "additionalProperties": false } } }, "required": ["blockedBy", "blocks"], "additionalProperties": false } }, "required": ["key", "kind", "title", "priority", "status", "type", "executor", "assigneeId", "assignee", "descriptionExcerpt", "inheritedSessionBranch", "dependencies"], "additionalProperties": false, "$id": "motir://v1/components/ReadyItem" };
|
|
14648
14648
|
function validate34(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
|
|
14649
14649
|
;
|
|
14650
14650
|
let vErrors = null;
|
|
@@ -14900,7 +14900,7 @@ function validate34(data, { instancePath = "", parentData, parentDataProperty, r
|
|
|
14900
14900
|
}
|
|
14901
14901
|
errors++;
|
|
14902
14902
|
}
|
|
14903
|
-
if (!(data11 === "code" || data11 === "design" || data11 === "test" || data11 === "content" || data11 === "research" || data11 === "review" || data11 === "decision" || data11 === "deploy" || data11 === "manual" || data11 === "chore")) {
|
|
14903
|
+
if (!(data11 === "code" || data11 === "design" || data11 === "test" || data11 === "content" || data11 === "copy" || data11 === "translate" || data11 === "research" || data11 === "review" || data11 === "verification" || data11 === "decision" || data11 === "deploy" || data11 === "manual" || data11 === "legal" || data11 === "chore")) {
|
|
14904
14904
|
const err4 = { instancePath: instancePath + "/items/" + i0 + "/type", schemaPath: "motir://v1/components/ReadyItem/properties/type/anyOf/0/enum", keyword: "enum", params: { allowedValues: schema60.properties.type.anyOf[0].enum }, message: "must be equal to one of the allowed values" };
|
|
14905
14905
|
if (vErrors === null) {
|
|
14906
14906
|
vErrors = [err4];
|
|
@@ -16143,7 +16143,7 @@ function validate36(data, { instancePath = "", parentData, parentDataProperty, r
|
|
|
16143
16143
|
}
|
|
16144
16144
|
errors++;
|
|
16145
16145
|
}
|
|
16146
|
-
if (!(data2 === "code" || data2 === "design" || data2 === "test" || data2 === "content" || data2 === "research" || data2 === "review" || data2 === "decision" || data2 === "deploy" || data2 === "manual" || data2 === "chore")) {
|
|
16146
|
+
if (!(data2 === "code" || data2 === "design" || data2 === "test" || data2 === "content" || data2 === "copy" || data2 === "translate" || data2 === "research" || data2 === "review" || data2 === "verification" || data2 === "decision" || data2 === "deploy" || data2 === "manual" || data2 === "legal" || data2 === "chore")) {
|
|
16147
16147
|
const err1 = { instancePath: instancePath + "/type", schemaPath: "motir://v1/components/WorkItemDetail/properties/type/anyOf/0/enum", keyword: "enum", params: { allowedValues: schema34.properties.type.anyOf[0].enum }, message: "must be equal to one of the allowed values" };
|
|
16148
16148
|
if (vErrors === null) {
|
|
16149
16149
|
vErrors = [err1];
|
|
@@ -27808,7 +27808,7 @@ function validate39(data, { instancePath = "", parentData, parentDataProperty, r
|
|
|
27808
27808
|
}
|
|
27809
27809
|
validate39.evaluated = { "props": { "items": true, "nextCursor": true }, "dynamicProps": false, "dynamicItems": false };
|
|
27810
27810
|
var operation_listProjectWorkItems = validate40;
|
|
27811
|
-
var schema75 = { "type": "object", "properties": { "key": { "type": "string", "pattern": "^[A-Z][A-Z0-9]*-\\d+$" }, "kind": { "type": "string", "enum": ["epic", "story", "task", "subtask", "bug"] }, "type": { "anyOf": [{ "type": "string", "enum": ["code", "design", "test", "content", "research", "review", "decision", "deploy", "manual", "chore"] }, { "type": "null" }] }, "title": { "type": "string" }, "status": { "type": "string" }, "priority": { "type": "string", "enum": ["lowest", "low", "medium", "high", "highest"] }, "assigneeId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "reporterId": { "type": "string" }, "dueDate": { "anyOf": [{ "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$" }, { "type": "null" }] }, "estimateMinutes": { "anyOf": [{ "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, { "type": "null" }] }, "storyPoints": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "createdAt": { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$" }, "updatedAt": { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$" }, "dependencies": { "type": "object", "properties": { "blockedBy": { "type": "array", "items": { "type": "object", "properties": { "key": { "type": "string", "pattern": "^[A-Z][A-Z0-9]*-\\d+$" }, "title": { "type": "string" }, "status": { "type": "string" } }, "required": ["key", "title", "status"], "additionalProperties": false } }, "blocks": { "type": "array", "items": { "type": "object", "properties": { "key": { "type": "string", "pattern": "^[A-Z][A-Z0-9]*-\\d+$" }, "title": { "type": "string" }, "status": { "type": "string" } }, "required": ["key", "title", "status"], "additionalProperties": false } } }, "required": ["blockedBy", "blocks"], "additionalProperties": false } }, "required": ["key", "kind", "type", "title", "status", "priority", "assigneeId", "reporterId", "dueDate", "estimateMinutes", "storyPoints", "createdAt", "updatedAt", "dependencies"], "additionalProperties": false, "$id": "motir://v1/components/WorkItemSummary" };
|
|
27811
|
+
var schema75 = { "type": "object", "properties": { "key": { "type": "string", "pattern": "^[A-Z][A-Z0-9]*-\\d+$" }, "kind": { "type": "string", "enum": ["epic", "story", "task", "subtask", "bug"] }, "type": { "anyOf": [{ "type": "string", "enum": ["code", "design", "test", "content", "copy", "translate", "research", "review", "verification", "decision", "deploy", "manual", "legal", "chore"] }, { "type": "null" }] }, "title": { "type": "string" }, "status": { "type": "string" }, "priority": { "type": "string", "enum": ["lowest", "low", "medium", "high", "highest"] }, "assigneeId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "reporterId": { "type": "string" }, "dueDate": { "anyOf": [{ "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$" }, { "type": "null" }] }, "estimateMinutes": { "anyOf": [{ "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, { "type": "null" }] }, "storyPoints": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "createdAt": { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$" }, "updatedAt": { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$" }, "dependencies": { "type": "object", "properties": { "blockedBy": { "type": "array", "items": { "type": "object", "properties": { "key": { "type": "string", "pattern": "^[A-Z][A-Z0-9]*-\\d+$" }, "title": { "type": "string" }, "status": { "type": "string" } }, "required": ["key", "title", "status"], "additionalProperties": false } }, "blocks": { "type": "array", "items": { "type": "object", "properties": { "key": { "type": "string", "pattern": "^[A-Z][A-Z0-9]*-\\d+$" }, "title": { "type": "string" }, "status": { "type": "string" } }, "required": ["key", "title", "status"], "additionalProperties": false } } }, "required": ["blockedBy", "blocks"], "additionalProperties": false } }, "required": ["key", "kind", "type", "title", "status", "priority", "assigneeId", "reporterId", "dueDate", "estimateMinutes", "storyPoints", "createdAt", "updatedAt", "dependencies"], "additionalProperties": false, "$id": "motir://v1/components/WorkItemSummary" };
|
|
27812
27812
|
function validate40(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
|
|
27813
27813
|
;
|
|
27814
27814
|
let vErrors = null;
|
|
@@ -27984,7 +27984,7 @@ function validate40(data, { instancePath = "", parentData, parentDataProperty, r
|
|
|
27984
27984
|
}
|
|
27985
27985
|
errors++;
|
|
27986
27986
|
}
|
|
27987
|
-
if (!(data6 === "code" || data6 === "design" || data6 === "test" || data6 === "content" || data6 === "research" || data6 === "review" || data6 === "decision" || data6 === "deploy" || data6 === "manual" || data6 === "chore")) {
|
|
27987
|
+
if (!(data6 === "code" || data6 === "design" || data6 === "test" || data6 === "content" || data6 === "copy" || data6 === "translate" || data6 === "research" || data6 === "review" || data6 === "verification" || data6 === "decision" || data6 === "deploy" || data6 === "manual" || data6 === "legal" || data6 === "chore")) {
|
|
27988
27988
|
const err4 = { instancePath: instancePath + "/items/" + i0 + "/type", schemaPath: "motir://v1/components/WorkItemSummary/properties/type/anyOf/0/enum", keyword: "enum", params: { allowedValues: schema75.properties.type.anyOf[0].enum }, message: "must be equal to one of the allowed values" };
|
|
27989
27989
|
if (vErrors === null) {
|
|
27990
27990
|
vErrors = [err4];
|
|
@@ -33843,7 +33843,7 @@ function validate52(data, { instancePath = "", parentData, parentDataProperty, r
|
|
|
33843
33843
|
}
|
|
33844
33844
|
errors++;
|
|
33845
33845
|
}
|
|
33846
|
-
if (!(data2 === "code" || data2 === "design" || data2 === "test" || data2 === "content" || data2 === "research" || data2 === "review" || data2 === "decision" || data2 === "deploy" || data2 === "manual" || data2 === "chore")) {
|
|
33846
|
+
if (!(data2 === "code" || data2 === "design" || data2 === "test" || data2 === "content" || data2 === "copy" || data2 === "translate" || data2 === "research" || data2 === "review" || data2 === "verification" || data2 === "decision" || data2 === "deploy" || data2 === "manual" || data2 === "legal" || data2 === "chore")) {
|
|
33847
33847
|
const err1 = { instancePath: instancePath + "/type", schemaPath: "motir://v1/components/WorkItemDetail/properties/type/anyOf/0/enum", keyword: "enum", params: { allowedValues: schema34.properties.type.anyOf[0].enum }, message: "must be equal to one of the allowed values" };
|
|
33848
33848
|
if (vErrors === null) {
|
|
33849
33849
|
vErrors = [err1];
|
|
@@ -39046,7 +39046,7 @@ function validate56(data, { instancePath = "", parentData, parentDataProperty, r
|
|
|
39046
39046
|
}
|
|
39047
39047
|
errors++;
|
|
39048
39048
|
}
|
|
39049
|
-
if (!(data2 === "code" || data2 === "design" || data2 === "test" || data2 === "content" || data2 === "research" || data2 === "review" || data2 === "decision" || data2 === "deploy" || data2 === "manual" || data2 === "chore")) {
|
|
39049
|
+
if (!(data2 === "code" || data2 === "design" || data2 === "test" || data2 === "content" || data2 === "copy" || data2 === "translate" || data2 === "research" || data2 === "review" || data2 === "verification" || data2 === "decision" || data2 === "deploy" || data2 === "manual" || data2 === "legal" || data2 === "chore")) {
|
|
39050
39050
|
const err1 = { instancePath: instancePath + "/type", schemaPath: "motir://v1/components/WorkItemDetail/properties/type/anyOf/0/enum", keyword: "enum", params: { allowedValues: schema34.properties.type.anyOf[0].enum }, message: "must be equal to one of the allowed values" };
|
|
39051
39051
|
if (vErrors === null) {
|
|
39052
39052
|
vErrors = [err1];
|
|
@@ -44101,7 +44101,7 @@ function validate58(data, { instancePath = "", parentData, parentDataProperty, r
|
|
|
44101
44101
|
}
|
|
44102
44102
|
errors++;
|
|
44103
44103
|
}
|
|
44104
|
-
if (!(data2 === "code" || data2 === "design" || data2 === "test" || data2 === "content" || data2 === "research" || data2 === "review" || data2 === "decision" || data2 === "deploy" || data2 === "manual" || data2 === "chore")) {
|
|
44104
|
+
if (!(data2 === "code" || data2 === "design" || data2 === "test" || data2 === "content" || data2 === "copy" || data2 === "translate" || data2 === "research" || data2 === "review" || data2 === "verification" || data2 === "decision" || data2 === "deploy" || data2 === "manual" || data2 === "legal" || data2 === "chore")) {
|
|
44105
44105
|
const err1 = { instancePath: instancePath + "/type", schemaPath: "motir://v1/components/WorkItemDetail/properties/type/anyOf/0/enum", keyword: "enum", params: { allowedValues: schema34.properties.type.anyOf[0].enum }, message: "must be equal to one of the allowed values" };
|
|
44106
44106
|
if (vErrors === null) {
|
|
44107
44107
|
vErrors = [err1];
|
|
@@ -48557,8 +48557,15 @@ var CliError = class extends Error {
|
|
|
48557
48557
|
exitCode;
|
|
48558
48558
|
/** An optional one-line hint shown under the error (e.g. how to recover). */
|
|
48559
48559
|
hint;
|
|
48560
|
+
/**
|
|
48561
|
+
* `cause` is here so a catch that RE-WORDS a failure can keep the original
|
|
48562
|
+
* instead of destroying it. Nothing prints it — `src/index.ts` shows the
|
|
48563
|
+
* message and the hint — but a rewrite that drops the underlying error leaves
|
|
48564
|
+
* no way back to it, and `motir link` proved what that costs (MOTIR-2492).
|
|
48565
|
+
* A catch that must re-word: narrow first, then chain.
|
|
48566
|
+
*/
|
|
48560
48567
|
constructor(message, opts = {}) {
|
|
48561
|
-
super(message);
|
|
48568
|
+
super(message, opts.cause === void 0 ? {} : { cause: opts.cause });
|
|
48562
48569
|
this.name = "CliError";
|
|
48563
48570
|
this.exitCode = opts.exitCode ?? 1;
|
|
48564
48571
|
this.hint = opts.hint;
|
|
@@ -48570,13 +48577,13 @@ var AuthError = class extends CliError {
|
|
|
48570
48577
|
this.name = "AuthError";
|
|
48571
48578
|
}
|
|
48572
48579
|
};
|
|
48573
|
-
var
|
|
48574
|
-
constructor(
|
|
48575
|
-
super(`This token
|
|
48580
|
+
var PermissionError = class extends CliError {
|
|
48581
|
+
constructor(permission, operationId) {
|
|
48582
|
+
super(`This token is not granted the '${permission}' permission required for ${operationId}.`, {
|
|
48576
48583
|
exitCode: 1,
|
|
48577
|
-
hint: `
|
|
48584
|
+
hint: `Grant the '${permission}' permission on a token: Settings \u2192 Account \u2192 Tokens.`
|
|
48578
48585
|
});
|
|
48579
|
-
this.name = "
|
|
48586
|
+
this.name = "PermissionError";
|
|
48580
48587
|
}
|
|
48581
48588
|
};
|
|
48582
48589
|
var NotFoundError = class extends CliError {
|
|
@@ -48760,7 +48767,7 @@ var V1Transport = class {
|
|
|
48760
48767
|
const envelope = readEnvelope(parsed);
|
|
48761
48768
|
if (response.status === 401) return new AuthError();
|
|
48762
48769
|
if (response.status === 403) {
|
|
48763
|
-
return new
|
|
48770
|
+
return new PermissionError(V1_OPERATIONS[operationId].permission, operationId);
|
|
48764
48771
|
}
|
|
48765
48772
|
if (response.status === 429) {
|
|
48766
48773
|
const reset = Number(response.headers.get("x-ratelimit-reset"));
|
|
@@ -50114,9 +50121,10 @@ async function assertProjectAccessible(client, projectKey) {
|
|
|
50114
50121
|
try {
|
|
50115
50122
|
await client.listReady({ projectKey, limit: 1 });
|
|
50116
50123
|
} catch (err) {
|
|
50117
|
-
if (err instanceof
|
|
50124
|
+
if (err instanceof NotFoundError) {
|
|
50118
50125
|
throw new CliError(`Project "${projectKey}" is not accessible with this token.`, {
|
|
50119
|
-
hint: "Check the project key, or your token\u2019s workspace."
|
|
50126
|
+
hint: "Check the project key, or your token\u2019s workspace.",
|
|
50127
|
+
cause: err
|
|
50120
50128
|
});
|
|
50121
50129
|
}
|
|
50122
50130
|
throw err;
|
|
@@ -50858,7 +50866,7 @@ function parseItemKey(raw, command) {
|
|
|
50858
50866
|
const key = raw.trim().toUpperCase();
|
|
50859
50867
|
if (!ITEM_KEY.test(key)) {
|
|
50860
50868
|
throw new CliError(`"${raw.trim()}" is not a work item key.`, {
|
|
50861
|
-
hint: `Keys look like
|
|
50869
|
+
hint: `Keys look like ACME-7. Run \`motir ${command} ACME-7\`, or \`motir ready\` to list what you can pick up.`
|
|
50862
50870
|
});
|
|
50863
50871
|
}
|
|
50864
50872
|
return key;
|
|
@@ -50914,7 +50922,7 @@ async function showCommand(key, opts) {
|
|
|
50914
50922
|
}
|
|
50915
50923
|
async function openCommand(key, opts) {
|
|
50916
50924
|
const trimmed = key.trim();
|
|
50917
|
-
if (!trimmed) throw new CliError("A work item key is required, e.g. `motir open
|
|
50925
|
+
if (!trimmed) throw new CliError("A work item key is required, e.g. `motir open ACME-7`.");
|
|
50918
50926
|
const link = requireLink();
|
|
50919
50927
|
const url = issueUrl(link.config.serverUrl, trimmed);
|
|
50920
50928
|
out(url);
|
|
@@ -52006,7 +52014,7 @@ function notReadyError(detail) {
|
|
|
52006
52014
|
}
|
|
52007
52015
|
async function runCommand(key, opts) {
|
|
52008
52016
|
const trimmed = key.trim();
|
|
52009
|
-
if (!trimmed) throw new CliError("A work item key is required, e.g. `motir run
|
|
52017
|
+
if (!trimmed) throw new CliError("A work item key is required, e.g. `motir run ACME-7`.");
|
|
52010
52018
|
await withProjectSession(async (session) => {
|
|
52011
52019
|
const { client } = session;
|
|
52012
52020
|
const detail = await client.getWorkItem(trimmed);
|
|
@@ -52051,7 +52059,7 @@ async function doneCommand(key, opts) {
|
|
|
52051
52059
|
}
|
|
52052
52060
|
const trimmed = (key ?? "").trim();
|
|
52053
52061
|
if (!trimmed) {
|
|
52054
|
-
throw new CliError("A work item key is required, e.g. `motir done
|
|
52062
|
+
throw new CliError("A work item key is required, e.g. `motir done ACME-7`.", {
|
|
52055
52063
|
hint: "Or close out a merged session PR with `motir done --session <branch>`."
|
|
52056
52064
|
});
|
|
52057
52065
|
}
|
|
@@ -53655,7 +53663,7 @@ function buildProgram() {
|
|
|
53655
53663
|
[
|
|
53656
53664
|
"",
|
|
53657
53665
|
"This removes the credential from THIS machine only. The server-side kill",
|
|
53658
|
-
"switch is revoking the token in Settings \u2192 Account \u2192
|
|
53666
|
+
"switch is revoking the token in Settings \u2192 Account \u2192 Tokens \u2014 a terminal",
|
|
53659
53667
|
"connected by `motir login` appears there as `CLI \xB7 <hostname>`."
|
|
53660
53668
|
].join("\n")
|
|
53661
53669
|
).action(authLogout);
|
|
@@ -53665,7 +53673,7 @@ function buildProgram() {
|
|
|
53665
53673
|
register(auth, "auth logout").option("--server <url>", "Server to log out of (defaults to the linked / single server).").action(authLogout);
|
|
53666
53674
|
const link = register(program, "link").option("--server <url>", "Server base URL (defaults to the existing link / single server).").option("--workspace <slug>", "Workspace slug (defaults to the token\u2019s active workspace).").option(
|
|
53667
53675
|
"--project <key>",
|
|
53668
|
-
"Project key, e.g.
|
|
53676
|
+
"Project key, e.g. ACME. Omit it and the workspace\u2019s only project is used."
|
|
53669
53677
|
).option(
|
|
53670
53678
|
"--repo <name>",
|
|
53671
53679
|
'Mark THIS directory as a single repo\u2019s checkout (writes a "." override).'
|