byterover-cli 3.5.1 → 3.6.1
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/.env.production +4 -6
- package/dist/agent/core/interfaces/i-cipher-agent.d.ts +1 -0
- package/dist/agent/infra/agent/cipher-agent.d.ts +1 -0
- package/dist/agent/infra/agent/cipher-agent.js +1 -0
- package/dist/oclif/commands/curate/view.js +5 -25
- package/dist/oclif/commands/dream.d.ts +18 -0
- package/dist/oclif/commands/dream.js +230 -0
- package/dist/oclif/commands/query-log/summary.d.ts +18 -0
- package/dist/oclif/commands/query-log/summary.js +75 -0
- package/dist/oclif/commands/query-log/view.d.ts +23 -0
- package/dist/oclif/commands/query-log/view.js +95 -0
- package/dist/oclif/lib/time-filter.d.ts +10 -0
- package/dist/oclif/lib/time-filter.js +21 -0
- package/dist/server/config/environment.d.ts +10 -3
- package/dist/server/config/environment.js +34 -15
- package/dist/server/constants.d.ts +5 -0
- package/dist/server/constants.js +7 -0
- package/dist/server/core/domain/entities/query-log-entry.d.ts +61 -0
- package/dist/server/core/domain/entities/query-log-entry.js +40 -0
- package/dist/server/core/domain/transport/schemas.d.ts +108 -7
- package/dist/server/core/domain/transport/schemas.js +34 -2
- package/dist/server/core/interfaces/executor/i-query-executor.d.ts +23 -2
- package/dist/server/core/interfaces/i-terminal.d.ts +3 -0
- package/dist/server/core/interfaces/i-terminal.js +1 -0
- package/dist/server/core/interfaces/storage/i-query-log-store.d.ts +23 -0
- package/dist/server/core/interfaces/storage/i-query-log-store.js +2 -0
- package/dist/server/core/interfaces/usecase/i-query-log-summary-use-case.d.ts +44 -0
- package/dist/server/core/interfaces/usecase/i-query-log-summary-use-case.js +1 -0
- package/dist/server/core/interfaces/usecase/i-query-log-use-case.d.ts +13 -0
- package/dist/server/core/interfaces/usecase/i-query-log-use-case.js +3 -0
- package/dist/server/infra/daemon/agent-process.js +79 -9
- package/dist/server/infra/daemon/brv-server.js +74 -5
- package/dist/server/infra/dream/dream-lock-service.d.ts +37 -0
- package/dist/server/infra/dream/dream-lock-service.js +88 -0
- package/dist/server/infra/dream/dream-log-schema.d.ts +966 -0
- package/dist/server/infra/dream/dream-log-schema.js +57 -0
- package/dist/server/infra/dream/dream-log-store.d.ts +55 -0
- package/dist/server/infra/dream/dream-log-store.js +141 -0
- package/dist/server/infra/dream/dream-response-schemas.d.ts +219 -0
- package/dist/server/infra/dream/dream-response-schemas.js +38 -0
- package/dist/server/infra/dream/dream-state-schema.d.ts +67 -0
- package/dist/server/infra/dream/dream-state-schema.js +23 -0
- package/dist/server/infra/dream/dream-state-service.d.ts +38 -0
- package/dist/server/infra/dream/dream-state-service.js +91 -0
- package/dist/server/infra/dream/dream-trigger.d.ts +46 -0
- package/dist/server/infra/dream/dream-trigger.js +65 -0
- package/dist/server/infra/dream/dream-undo.d.ts +38 -0
- package/dist/server/infra/dream/dream-undo.js +293 -0
- package/dist/server/infra/dream/operations/consolidate.d.ts +52 -0
- package/dist/server/infra/dream/operations/consolidate.js +514 -0
- package/dist/server/infra/dream/operations/prune.d.ts +45 -0
- package/dist/server/infra/dream/operations/prune.js +362 -0
- package/dist/server/infra/dream/operations/synthesize.d.ts +37 -0
- package/dist/server/infra/dream/operations/synthesize.js +278 -0
- package/dist/server/infra/dream/parse-dream-response.d.ts +11 -0
- package/dist/server/infra/dream/parse-dream-response.js +35 -0
- package/dist/server/infra/executor/curate-executor.js +10 -0
- package/dist/server/infra/executor/dream-executor.d.ts +97 -0
- package/dist/server/infra/executor/dream-executor.js +431 -0
- package/dist/server/infra/executor/query-executor.d.ts +2 -2
- package/dist/server/infra/executor/query-executor.js +92 -22
- package/dist/server/infra/process/feature-handlers.js +10 -6
- package/dist/server/infra/process/query-log-handler.d.ts +42 -0
- package/dist/server/infra/process/query-log-handler.js +150 -0
- package/dist/server/infra/process/task-router.d.ts +40 -0
- package/dist/server/infra/process/task-router.js +67 -9
- package/dist/server/infra/process/transport-handlers.d.ts +4 -0
- package/dist/server/infra/process/transport-handlers.js +1 -0
- package/dist/server/infra/storage/file-curate-log-store.js +1 -1
- package/dist/server/infra/storage/file-query-log-store.d.ts +81 -0
- package/dist/server/infra/storage/file-query-log-store.js +249 -0
- package/dist/server/infra/transport/handlers/config-handler.js +1 -1
- package/dist/server/infra/usecase/curate-log-use-case.js +7 -3
- package/dist/server/infra/usecase/query-log-summary-narrative-formatter.d.ts +15 -0
- package/dist/server/infra/usecase/query-log-summary-narrative-formatter.js +79 -0
- package/dist/server/infra/usecase/query-log-summary-use-case.d.ts +13 -0
- package/dist/server/infra/usecase/query-log-summary-use-case.js +217 -0
- package/dist/server/infra/usecase/query-log-use-case.d.ts +31 -0
- package/dist/server/infra/usecase/query-log-use-case.js +128 -0
- package/dist/server/utils/log-format-utils.d.ts +5 -0
- package/dist/server/utils/log-format-utils.js +23 -0
- package/dist/shared/transport/events/config-events.d.ts +1 -1
- package/oclif.manifest.json +510 -255
- package/package.json +1 -1
package/oclif.manifest.json
CHANGED
|
@@ -53,6 +53,86 @@
|
|
|
53
53
|
"debug.js"
|
|
54
54
|
]
|
|
55
55
|
},
|
|
56
|
+
"dream": {
|
|
57
|
+
"aliases": [],
|
|
58
|
+
"args": {},
|
|
59
|
+
"description": "Run background memory consolidation on the context tree",
|
|
60
|
+
"examples": [
|
|
61
|
+
"# Run dream (checks time, activity, and queue gates)",
|
|
62
|
+
"<%= config.bin %> <%= command.id %>",
|
|
63
|
+
"",
|
|
64
|
+
"# Force dream (skip time/activity/queue gates, lock still checked)",
|
|
65
|
+
"<%= config.bin %> <%= command.id %> --force",
|
|
66
|
+
"",
|
|
67
|
+
"# Revert the last dream",
|
|
68
|
+
"<%= config.bin %> <%= command.id %> --undo",
|
|
69
|
+
"",
|
|
70
|
+
"# Queue dream and exit immediately",
|
|
71
|
+
"<%= config.bin %> <%= command.id %> --detach",
|
|
72
|
+
"",
|
|
73
|
+
"# Force dream and exit immediately",
|
|
74
|
+
"<%= config.bin %> <%= command.id %> --force --detach",
|
|
75
|
+
"",
|
|
76
|
+
"# JSON output",
|
|
77
|
+
"<%= config.bin %> <%= command.id %> --format json"
|
|
78
|
+
],
|
|
79
|
+
"flags": {
|
|
80
|
+
"detach": {
|
|
81
|
+
"description": "Queue task and exit without waiting for completion",
|
|
82
|
+
"name": "detach",
|
|
83
|
+
"allowNo": false,
|
|
84
|
+
"type": "boolean"
|
|
85
|
+
},
|
|
86
|
+
"force": {
|
|
87
|
+
"char": "f",
|
|
88
|
+
"description": "Skip time and activity gates (lock still checked)",
|
|
89
|
+
"name": "force",
|
|
90
|
+
"allowNo": false,
|
|
91
|
+
"type": "boolean"
|
|
92
|
+
},
|
|
93
|
+
"format": {
|
|
94
|
+
"description": "Output format (text or json)",
|
|
95
|
+
"name": "format",
|
|
96
|
+
"default": "text",
|
|
97
|
+
"hasDynamicHelp": false,
|
|
98
|
+
"multiple": false,
|
|
99
|
+
"options": [
|
|
100
|
+
"text",
|
|
101
|
+
"json"
|
|
102
|
+
],
|
|
103
|
+
"type": "option"
|
|
104
|
+
},
|
|
105
|
+
"timeout": {
|
|
106
|
+
"description": "Maximum seconds to wait for task completion",
|
|
107
|
+
"name": "timeout",
|
|
108
|
+
"default": 300,
|
|
109
|
+
"hasDynamicHelp": false,
|
|
110
|
+
"multiple": false,
|
|
111
|
+
"type": "option"
|
|
112
|
+
},
|
|
113
|
+
"undo": {
|
|
114
|
+
"description": "Revert the last dream",
|
|
115
|
+
"name": "undo",
|
|
116
|
+
"allowNo": false,
|
|
117
|
+
"type": "boolean"
|
|
118
|
+
}
|
|
119
|
+
},
|
|
120
|
+
"hasDynamicHelp": false,
|
|
121
|
+
"hiddenAliases": [],
|
|
122
|
+
"id": "dream",
|
|
123
|
+
"pluginAlias": "byterover-cli",
|
|
124
|
+
"pluginName": "byterover-cli",
|
|
125
|
+
"pluginType": "core",
|
|
126
|
+
"strict": true,
|
|
127
|
+
"enableJsonFlag": false,
|
|
128
|
+
"isESM": true,
|
|
129
|
+
"relativePath": [
|
|
130
|
+
"dist",
|
|
131
|
+
"oclif",
|
|
132
|
+
"commands",
|
|
133
|
+
"dream.js"
|
|
134
|
+
]
|
|
135
|
+
},
|
|
56
136
|
"hook-prompt-submit": {
|
|
57
137
|
"aliases": [],
|
|
58
138
|
"args": {},
|
|
@@ -848,7 +928,7 @@
|
|
|
848
928
|
],
|
|
849
929
|
"flags": {
|
|
850
930
|
"before": {
|
|
851
|
-
"description": "Show entries started before this time (ISO date or relative: 1h, 24h, 7d, 2w)",
|
|
931
|
+
"description": "Show entries started before this time (ISO date or relative: 30m, 1h, 24h, 7d, 2w)",
|
|
852
932
|
"name": "before",
|
|
853
933
|
"hasDynamicHelp": false,
|
|
854
934
|
"multiple": false,
|
|
@@ -881,7 +961,7 @@
|
|
|
881
961
|
"type": "option"
|
|
882
962
|
},
|
|
883
963
|
"since": {
|
|
884
|
-
"description": "Show entries started after this time (ISO date or relative: 1h, 24h, 7d, 2w)",
|
|
964
|
+
"description": "Show entries started after this time (ISO date or relative: 30m, 1h, 24h, 7d, 2w)",
|
|
885
965
|
"name": "since",
|
|
886
966
|
"hasDynamicHelp": false,
|
|
887
967
|
"multiple": false,
|
|
@@ -1471,51 +1551,58 @@
|
|
|
1471
1551
|
"switch.js"
|
|
1472
1552
|
]
|
|
1473
1553
|
},
|
|
1474
|
-
"
|
|
1554
|
+
"query-log:summary": {
|
|
1475
1555
|
"aliases": [],
|
|
1476
|
-
"args": {
|
|
1477
|
-
|
|
1478
|
-
"description": "Task ID shown in the curate output (e.g. \"brv review approve abc-123\")",
|
|
1479
|
-
"name": "taskId",
|
|
1480
|
-
"required": true
|
|
1481
|
-
}
|
|
1482
|
-
},
|
|
1483
|
-
"description": "Approve pending review operations for a curate task",
|
|
1556
|
+
"args": {},
|
|
1557
|
+
"description": "View aggregated query recall metrics (coverage, cache hit rate, top topics)",
|
|
1484
1558
|
"examples": [
|
|
1485
|
-
"
|
|
1486
|
-
"<%= config.bin %>
|
|
1487
|
-
"",
|
|
1488
|
-
"
|
|
1489
|
-
"<%= config.bin %>
|
|
1490
|
-
"<%= config.bin %>
|
|
1491
|
-
""
|
|
1492
|
-
"# Approve and get structured output (useful for coding agents)",
|
|
1493
|
-
"<%= config.bin %> review approve abc-123 --format json"
|
|
1559
|
+
"<%= config.bin %> <%= command.id %>",
|
|
1560
|
+
"<%= config.bin %> <%= command.id %> --last 24h",
|
|
1561
|
+
"<%= config.bin %> <%= command.id %> --last 7d",
|
|
1562
|
+
"<%= config.bin %> <%= command.id %> --last 30d",
|
|
1563
|
+
"<%= config.bin %> <%= command.id %> --format json",
|
|
1564
|
+
"<%= config.bin %> <%= command.id %> --format narrative",
|
|
1565
|
+
"<%= config.bin %> <%= command.id %> --since 2026-04-01 --before 2026-04-03"
|
|
1494
1566
|
],
|
|
1495
1567
|
"flags": {
|
|
1496
|
-
"
|
|
1497
|
-
"description": "
|
|
1498
|
-
"name": "
|
|
1568
|
+
"before": {
|
|
1569
|
+
"description": "Entries before (ISO date or relative: 1h, 24h, 7d, 2w)",
|
|
1570
|
+
"name": "before",
|
|
1499
1571
|
"hasDynamicHelp": false,
|
|
1500
|
-
"multiple":
|
|
1572
|
+
"multiple": false,
|
|
1501
1573
|
"type": "option"
|
|
1502
1574
|
},
|
|
1503
1575
|
"format": {
|
|
1504
|
-
"description": "Output format
|
|
1576
|
+
"description": "Output format",
|
|
1505
1577
|
"name": "format",
|
|
1506
1578
|
"default": "text",
|
|
1507
1579
|
"hasDynamicHelp": false,
|
|
1508
1580
|
"multiple": false,
|
|
1509
1581
|
"options": [
|
|
1510
1582
|
"text",
|
|
1511
|
-
"json"
|
|
1583
|
+
"json",
|
|
1584
|
+
"narrative"
|
|
1512
1585
|
],
|
|
1513
1586
|
"type": "option"
|
|
1587
|
+
},
|
|
1588
|
+
"last": {
|
|
1589
|
+
"description": "Relative time window (e.g., 1h, 24h, 7d, 30d). Default: 24h. Takes precedence over --since.",
|
|
1590
|
+
"name": "last",
|
|
1591
|
+
"hasDynamicHelp": false,
|
|
1592
|
+
"multiple": false,
|
|
1593
|
+
"type": "option"
|
|
1594
|
+
},
|
|
1595
|
+
"since": {
|
|
1596
|
+
"description": "Entries after (ISO date or relative: 1h, 24h, 7d, 2w)",
|
|
1597
|
+
"name": "since",
|
|
1598
|
+
"hasDynamicHelp": false,
|
|
1599
|
+
"multiple": false,
|
|
1600
|
+
"type": "option"
|
|
1514
1601
|
}
|
|
1515
1602
|
},
|
|
1516
1603
|
"hasDynamicHelp": false,
|
|
1517
1604
|
"hiddenAliases": [],
|
|
1518
|
-
"id": "
|
|
1605
|
+
"id": "query-log:summary",
|
|
1519
1606
|
"pluginAlias": "byterover-cli",
|
|
1520
1607
|
"pluginName": "byterover-cli",
|
|
1521
1608
|
"pluginType": "core",
|
|
@@ -1526,27 +1613,49 @@
|
|
|
1526
1613
|
"dist",
|
|
1527
1614
|
"oclif",
|
|
1528
1615
|
"commands",
|
|
1529
|
-
"
|
|
1530
|
-
"
|
|
1616
|
+
"query-log",
|
|
1617
|
+
"summary.js"
|
|
1531
1618
|
]
|
|
1532
1619
|
},
|
|
1533
|
-
"
|
|
1620
|
+
"query-log:view": {
|
|
1534
1621
|
"aliases": [],
|
|
1535
1622
|
"args": {
|
|
1536
|
-
"
|
|
1537
|
-
"
|
|
1538
|
-
"
|
|
1623
|
+
"id": {
|
|
1624
|
+
"description": "Query log entry ID to view in detail",
|
|
1625
|
+
"name": "id",
|
|
1626
|
+
"required": false
|
|
1539
1627
|
}
|
|
1540
1628
|
},
|
|
1629
|
+
"description": "View query log history",
|
|
1630
|
+
"examples": [
|
|
1631
|
+
"<%= config.bin %> <%= command.id %>",
|
|
1632
|
+
"<%= config.bin %> <%= command.id %> qry-1712345678901",
|
|
1633
|
+
"<%= config.bin %> <%= command.id %> --limit 20",
|
|
1634
|
+
"<%= config.bin %> <%= command.id %> --status completed",
|
|
1635
|
+
"<%= config.bin %> <%= command.id %> --status completed --status error",
|
|
1636
|
+
"<%= config.bin %> <%= command.id %> --tier 0 --tier 1",
|
|
1637
|
+
"<%= config.bin %> <%= command.id %> --since 1h",
|
|
1638
|
+
"<%= config.bin %> <%= command.id %> --since 2024-01-15",
|
|
1639
|
+
"<%= config.bin %> <%= command.id %> --before 2024-02-01",
|
|
1640
|
+
"<%= config.bin %> <%= command.id %> --detail",
|
|
1641
|
+
"<%= config.bin %> <%= command.id %> --format json"
|
|
1642
|
+
],
|
|
1541
1643
|
"flags": {
|
|
1542
|
-
"
|
|
1543
|
-
"
|
|
1644
|
+
"before": {
|
|
1645
|
+
"description": "Show entries started before this time (ISO date or relative: 30m, 1h, 24h, 7d, 2w)",
|
|
1646
|
+
"name": "before",
|
|
1544
1647
|
"hasDynamicHelp": false,
|
|
1545
|
-
"multiple":
|
|
1648
|
+
"multiple": false,
|
|
1546
1649
|
"type": "option"
|
|
1547
1650
|
},
|
|
1651
|
+
"detail": {
|
|
1652
|
+
"description": "Show matched docs for each entry",
|
|
1653
|
+
"name": "detail",
|
|
1654
|
+
"allowNo": false,
|
|
1655
|
+
"type": "boolean"
|
|
1656
|
+
},
|
|
1548
1657
|
"format": {
|
|
1549
|
-
"description": "Output format
|
|
1658
|
+
"description": "Output format",
|
|
1550
1659
|
"name": "format",
|
|
1551
1660
|
"default": "text",
|
|
1552
1661
|
"hasDynamicHelp": false,
|
|
@@ -1556,112 +1665,53 @@
|
|
|
1556
1665
|
"json"
|
|
1557
1666
|
],
|
|
1558
1667
|
"type": "option"
|
|
1559
|
-
}
|
|
1560
|
-
|
|
1561
|
-
|
|
1562
|
-
|
|
1563
|
-
|
|
1564
|
-
"pluginAlias": "byterover-cli",
|
|
1565
|
-
"pluginName": "byterover-cli",
|
|
1566
|
-
"pluginType": "core",
|
|
1567
|
-
"strict": true,
|
|
1568
|
-
"enableJsonFlag": false,
|
|
1569
|
-
"isESM": true,
|
|
1570
|
-
"relativePath": [
|
|
1571
|
-
"dist",
|
|
1572
|
-
"oclif",
|
|
1573
|
-
"commands",
|
|
1574
|
-
"review",
|
|
1575
|
-
"base-review-decision.js"
|
|
1576
|
-
]
|
|
1577
|
-
},
|
|
1578
|
-
"review:pending": {
|
|
1579
|
-
"aliases": [],
|
|
1580
|
-
"args": {},
|
|
1581
|
-
"description": "List all pending review operations for the current project",
|
|
1582
|
-
"examples": [
|
|
1583
|
-
"# Show all pending reviews",
|
|
1584
|
-
"<%= config.bin %> review pending",
|
|
1585
|
-
"",
|
|
1586
|
-
"# Get structured output for agent-driven workflows",
|
|
1587
|
-
"<%= config.bin %> review pending --format json"
|
|
1588
|
-
],
|
|
1589
|
-
"flags": {
|
|
1590
|
-
"format": {
|
|
1591
|
-
"description": "Output format (text or json)",
|
|
1592
|
-
"name": "format",
|
|
1593
|
-
"default": "text",
|
|
1668
|
+
},
|
|
1669
|
+
"limit": {
|
|
1670
|
+
"description": "Maximum number of log entries to display",
|
|
1671
|
+
"name": "limit",
|
|
1672
|
+
"default": 10,
|
|
1594
1673
|
"hasDynamicHelp": false,
|
|
1595
1674
|
"multiple": false,
|
|
1596
|
-
"options": [
|
|
1597
|
-
"text",
|
|
1598
|
-
"json"
|
|
1599
|
-
],
|
|
1600
1675
|
"type": "option"
|
|
1601
|
-
}
|
|
1602
|
-
|
|
1603
|
-
|
|
1604
|
-
|
|
1605
|
-
|
|
1606
|
-
|
|
1607
|
-
|
|
1608
|
-
|
|
1609
|
-
|
|
1610
|
-
|
|
1611
|
-
|
|
1612
|
-
"relativePath": [
|
|
1613
|
-
"dist",
|
|
1614
|
-
"oclif",
|
|
1615
|
-
"commands",
|
|
1616
|
-
"review",
|
|
1617
|
-
"pending.js"
|
|
1618
|
-
]
|
|
1619
|
-
},
|
|
1620
|
-
"review:reject": {
|
|
1621
|
-
"aliases": [],
|
|
1622
|
-
"args": {
|
|
1623
|
-
"taskId": {
|
|
1624
|
-
"description": "Task ID shown in the curate output (e.g. \"brv review reject abc-123\")",
|
|
1625
|
-
"name": "taskId",
|
|
1626
|
-
"required": true
|
|
1627
|
-
}
|
|
1628
|
-
},
|
|
1629
|
-
"description": "Reject pending review operations for a curate task (restores files from backup)",
|
|
1630
|
-
"examples": [
|
|
1631
|
-
"# Reject all pending changes from a curate task",
|
|
1632
|
-
"<%= config.bin %> review reject abc-123",
|
|
1633
|
-
"",
|
|
1634
|
-
"# Reject specific files",
|
|
1635
|
-
"<%= config.bin %> review reject abc-123 --file architecture/security/audit.md",
|
|
1636
|
-
"<%= config.bin %> review reject abc-123 --file auth/jwt.md --file auth/oauth.md",
|
|
1637
|
-
"",
|
|
1638
|
-
"# Reject and get structured output (useful for coding agents)",
|
|
1639
|
-
"<%= config.bin %> review reject abc-123 --format json"
|
|
1640
|
-
],
|
|
1641
|
-
"flags": {
|
|
1642
|
-
"file": {
|
|
1643
|
-
"description": "Reject only the specified file path(s) (relative to context tree)",
|
|
1644
|
-
"name": "file",
|
|
1676
|
+
},
|
|
1677
|
+
"since": {
|
|
1678
|
+
"description": "Show entries started after this time (ISO date or relative: 30m, 1h, 24h, 7d, 2w)",
|
|
1679
|
+
"name": "since",
|
|
1680
|
+
"hasDynamicHelp": false,
|
|
1681
|
+
"multiple": false,
|
|
1682
|
+
"type": "option"
|
|
1683
|
+
},
|
|
1684
|
+
"status": {
|
|
1685
|
+
"description": "Filter by status (can be repeated). Options: cancelled, completed, error, processing",
|
|
1686
|
+
"name": "status",
|
|
1645
1687
|
"hasDynamicHelp": false,
|
|
1646
1688
|
"multiple": true,
|
|
1689
|
+
"options": [
|
|
1690
|
+
"cancelled",
|
|
1691
|
+
"completed",
|
|
1692
|
+
"error",
|
|
1693
|
+
"processing"
|
|
1694
|
+
],
|
|
1647
1695
|
"type": "option"
|
|
1648
1696
|
},
|
|
1649
|
-
"
|
|
1650
|
-
"description": "
|
|
1651
|
-
"name": "
|
|
1652
|
-
"default": "text",
|
|
1697
|
+
"tier": {
|
|
1698
|
+
"description": "Filter by resolution tier (can be repeated). Options: 0, 1, 2, 3, 4",
|
|
1699
|
+
"name": "tier",
|
|
1653
1700
|
"hasDynamicHelp": false,
|
|
1654
|
-
"multiple":
|
|
1701
|
+
"multiple": true,
|
|
1655
1702
|
"options": [
|
|
1656
|
-
"
|
|
1657
|
-
"
|
|
1703
|
+
"0",
|
|
1704
|
+
"1",
|
|
1705
|
+
"2",
|
|
1706
|
+
"3",
|
|
1707
|
+
"4"
|
|
1658
1708
|
],
|
|
1659
1709
|
"type": "option"
|
|
1660
1710
|
}
|
|
1661
1711
|
},
|
|
1662
1712
|
"hasDynamicHelp": false,
|
|
1663
1713
|
"hiddenAliases": [],
|
|
1664
|
-
"id": "
|
|
1714
|
+
"id": "query-log:view",
|
|
1665
1715
|
"pluginAlias": "byterover-cli",
|
|
1666
1716
|
"pluginName": "byterover-cli",
|
|
1667
1717
|
"pluginType": "core",
|
|
@@ -1672,8 +1722,8 @@
|
|
|
1672
1722
|
"dist",
|
|
1673
1723
|
"oclif",
|
|
1674
1724
|
"commands",
|
|
1675
|
-
"
|
|
1676
|
-
"
|
|
1725
|
+
"query-log",
|
|
1726
|
+
"view.js"
|
|
1677
1727
|
]
|
|
1678
1728
|
},
|
|
1679
1729
|
"source:add": {
|
|
@@ -1799,9 +1849,214 @@
|
|
|
1799
1849
|
"remove.js"
|
|
1800
1850
|
]
|
|
1801
1851
|
},
|
|
1802
|
-
"
|
|
1852
|
+
"review:approve": {
|
|
1803
1853
|
"aliases": [],
|
|
1804
|
-
"args": {
|
|
1854
|
+
"args": {
|
|
1855
|
+
"taskId": {
|
|
1856
|
+
"description": "Task ID shown in the curate output (e.g. \"brv review approve abc-123\")",
|
|
1857
|
+
"name": "taskId",
|
|
1858
|
+
"required": true
|
|
1859
|
+
}
|
|
1860
|
+
},
|
|
1861
|
+
"description": "Approve pending review operations for a curate task",
|
|
1862
|
+
"examples": [
|
|
1863
|
+
"# Approve all pending changes from a curate task",
|
|
1864
|
+
"<%= config.bin %> review approve abc-123",
|
|
1865
|
+
"",
|
|
1866
|
+
"# Approve specific files",
|
|
1867
|
+
"<%= config.bin %> review approve abc-123 --file architecture/security/audit.md",
|
|
1868
|
+
"<%= config.bin %> review approve abc-123 --file auth/jwt.md --file auth/oauth.md",
|
|
1869
|
+
"",
|
|
1870
|
+
"# Approve and get structured output (useful for coding agents)",
|
|
1871
|
+
"<%= config.bin %> review approve abc-123 --format json"
|
|
1872
|
+
],
|
|
1873
|
+
"flags": {
|
|
1874
|
+
"file": {
|
|
1875
|
+
"description": "Approve only the specified file path(s) (relative to context tree)",
|
|
1876
|
+
"name": "file",
|
|
1877
|
+
"hasDynamicHelp": false,
|
|
1878
|
+
"multiple": true,
|
|
1879
|
+
"type": "option"
|
|
1880
|
+
},
|
|
1881
|
+
"format": {
|
|
1882
|
+
"description": "Output format (text or json)",
|
|
1883
|
+
"name": "format",
|
|
1884
|
+
"default": "text",
|
|
1885
|
+
"hasDynamicHelp": false,
|
|
1886
|
+
"multiple": false,
|
|
1887
|
+
"options": [
|
|
1888
|
+
"text",
|
|
1889
|
+
"json"
|
|
1890
|
+
],
|
|
1891
|
+
"type": "option"
|
|
1892
|
+
}
|
|
1893
|
+
},
|
|
1894
|
+
"hasDynamicHelp": false,
|
|
1895
|
+
"hiddenAliases": [],
|
|
1896
|
+
"id": "review:approve",
|
|
1897
|
+
"pluginAlias": "byterover-cli",
|
|
1898
|
+
"pluginName": "byterover-cli",
|
|
1899
|
+
"pluginType": "core",
|
|
1900
|
+
"strict": true,
|
|
1901
|
+
"enableJsonFlag": false,
|
|
1902
|
+
"isESM": true,
|
|
1903
|
+
"relativePath": [
|
|
1904
|
+
"dist",
|
|
1905
|
+
"oclif",
|
|
1906
|
+
"commands",
|
|
1907
|
+
"review",
|
|
1908
|
+
"approve.js"
|
|
1909
|
+
]
|
|
1910
|
+
},
|
|
1911
|
+
"review:base-review-decision": {
|
|
1912
|
+
"aliases": [],
|
|
1913
|
+
"args": {
|
|
1914
|
+
"taskId": {
|
|
1915
|
+
"name": "taskId",
|
|
1916
|
+
"required": true
|
|
1917
|
+
}
|
|
1918
|
+
},
|
|
1919
|
+
"flags": {
|
|
1920
|
+
"file": {
|
|
1921
|
+
"name": "file",
|
|
1922
|
+
"hasDynamicHelp": false,
|
|
1923
|
+
"multiple": true,
|
|
1924
|
+
"type": "option"
|
|
1925
|
+
},
|
|
1926
|
+
"format": {
|
|
1927
|
+
"description": "Output format (text or json)",
|
|
1928
|
+
"name": "format",
|
|
1929
|
+
"default": "text",
|
|
1930
|
+
"hasDynamicHelp": false,
|
|
1931
|
+
"multiple": false,
|
|
1932
|
+
"options": [
|
|
1933
|
+
"text",
|
|
1934
|
+
"json"
|
|
1935
|
+
],
|
|
1936
|
+
"type": "option"
|
|
1937
|
+
}
|
|
1938
|
+
},
|
|
1939
|
+
"hasDynamicHelp": false,
|
|
1940
|
+
"hiddenAliases": [],
|
|
1941
|
+
"id": "review:base-review-decision",
|
|
1942
|
+
"pluginAlias": "byterover-cli",
|
|
1943
|
+
"pluginName": "byterover-cli",
|
|
1944
|
+
"pluginType": "core",
|
|
1945
|
+
"strict": true,
|
|
1946
|
+
"enableJsonFlag": false,
|
|
1947
|
+
"isESM": true,
|
|
1948
|
+
"relativePath": [
|
|
1949
|
+
"dist",
|
|
1950
|
+
"oclif",
|
|
1951
|
+
"commands",
|
|
1952
|
+
"review",
|
|
1953
|
+
"base-review-decision.js"
|
|
1954
|
+
]
|
|
1955
|
+
},
|
|
1956
|
+
"review:pending": {
|
|
1957
|
+
"aliases": [],
|
|
1958
|
+
"args": {},
|
|
1959
|
+
"description": "List all pending review operations for the current project",
|
|
1960
|
+
"examples": [
|
|
1961
|
+
"# Show all pending reviews",
|
|
1962
|
+
"<%= config.bin %> review pending",
|
|
1963
|
+
"",
|
|
1964
|
+
"# Get structured output for agent-driven workflows",
|
|
1965
|
+
"<%= config.bin %> review pending --format json"
|
|
1966
|
+
],
|
|
1967
|
+
"flags": {
|
|
1968
|
+
"format": {
|
|
1969
|
+
"description": "Output format (text or json)",
|
|
1970
|
+
"name": "format",
|
|
1971
|
+
"default": "text",
|
|
1972
|
+
"hasDynamicHelp": false,
|
|
1973
|
+
"multiple": false,
|
|
1974
|
+
"options": [
|
|
1975
|
+
"text",
|
|
1976
|
+
"json"
|
|
1977
|
+
],
|
|
1978
|
+
"type": "option"
|
|
1979
|
+
}
|
|
1980
|
+
},
|
|
1981
|
+
"hasDynamicHelp": false,
|
|
1982
|
+
"hiddenAliases": [],
|
|
1983
|
+
"id": "review:pending",
|
|
1984
|
+
"pluginAlias": "byterover-cli",
|
|
1985
|
+
"pluginName": "byterover-cli",
|
|
1986
|
+
"pluginType": "core",
|
|
1987
|
+
"strict": true,
|
|
1988
|
+
"enableJsonFlag": false,
|
|
1989
|
+
"isESM": true,
|
|
1990
|
+
"relativePath": [
|
|
1991
|
+
"dist",
|
|
1992
|
+
"oclif",
|
|
1993
|
+
"commands",
|
|
1994
|
+
"review",
|
|
1995
|
+
"pending.js"
|
|
1996
|
+
]
|
|
1997
|
+
},
|
|
1998
|
+
"review:reject": {
|
|
1999
|
+
"aliases": [],
|
|
2000
|
+
"args": {
|
|
2001
|
+
"taskId": {
|
|
2002
|
+
"description": "Task ID shown in the curate output (e.g. \"brv review reject abc-123\")",
|
|
2003
|
+
"name": "taskId",
|
|
2004
|
+
"required": true
|
|
2005
|
+
}
|
|
2006
|
+
},
|
|
2007
|
+
"description": "Reject pending review operations for a curate task (restores files from backup)",
|
|
2008
|
+
"examples": [
|
|
2009
|
+
"# Reject all pending changes from a curate task",
|
|
2010
|
+
"<%= config.bin %> review reject abc-123",
|
|
2011
|
+
"",
|
|
2012
|
+
"# Reject specific files",
|
|
2013
|
+
"<%= config.bin %> review reject abc-123 --file architecture/security/audit.md",
|
|
2014
|
+
"<%= config.bin %> review reject abc-123 --file auth/jwt.md --file auth/oauth.md",
|
|
2015
|
+
"",
|
|
2016
|
+
"# Reject and get structured output (useful for coding agents)",
|
|
2017
|
+
"<%= config.bin %> review reject abc-123 --format json"
|
|
2018
|
+
],
|
|
2019
|
+
"flags": {
|
|
2020
|
+
"file": {
|
|
2021
|
+
"description": "Reject only the specified file path(s) (relative to context tree)",
|
|
2022
|
+
"name": "file",
|
|
2023
|
+
"hasDynamicHelp": false,
|
|
2024
|
+
"multiple": true,
|
|
2025
|
+
"type": "option"
|
|
2026
|
+
},
|
|
2027
|
+
"format": {
|
|
2028
|
+
"description": "Output format (text or json)",
|
|
2029
|
+
"name": "format",
|
|
2030
|
+
"default": "text",
|
|
2031
|
+
"hasDynamicHelp": false,
|
|
2032
|
+
"multiple": false,
|
|
2033
|
+
"options": [
|
|
2034
|
+
"text",
|
|
2035
|
+
"json"
|
|
2036
|
+
],
|
|
2037
|
+
"type": "option"
|
|
2038
|
+
}
|
|
2039
|
+
},
|
|
2040
|
+
"hasDynamicHelp": false,
|
|
2041
|
+
"hiddenAliases": [],
|
|
2042
|
+
"id": "review:reject",
|
|
2043
|
+
"pluginAlias": "byterover-cli",
|
|
2044
|
+
"pluginName": "byterover-cli",
|
|
2045
|
+
"pluginType": "core",
|
|
2046
|
+
"strict": true,
|
|
2047
|
+
"enableJsonFlag": false,
|
|
2048
|
+
"isESM": true,
|
|
2049
|
+
"relativePath": [
|
|
2050
|
+
"dist",
|
|
2051
|
+
"oclif",
|
|
2052
|
+
"commands",
|
|
2053
|
+
"review",
|
|
2054
|
+
"reject.js"
|
|
2055
|
+
]
|
|
2056
|
+
},
|
|
2057
|
+
"space:list": {
|
|
2058
|
+
"aliases": [],
|
|
2059
|
+
"args": {},
|
|
1805
2060
|
"description": "List all teams and spaces (deprecated)",
|
|
1806
2061
|
"examples": [
|
|
1807
2062
|
"<%= config.bin %> space list"
|
|
@@ -2057,128 +2312,6 @@
|
|
|
2057
2312
|
"status.js"
|
|
2058
2313
|
]
|
|
2059
2314
|
},
|
|
2060
|
-
"worktree:add": {
|
|
2061
|
-
"aliases": [],
|
|
2062
|
-
"args": {
|
|
2063
|
-
"path": {
|
|
2064
|
-
"description": "Path to the directory to register as a worktree (relative or absolute)",
|
|
2065
|
-
"name": "path",
|
|
2066
|
-
"required": false
|
|
2067
|
-
}
|
|
2068
|
-
},
|
|
2069
|
-
"description": "Register a directory as a worktree of this project",
|
|
2070
|
-
"examples": [
|
|
2071
|
-
"<%= config.bin %> <%= command.id %> packages/api",
|
|
2072
|
-
"<%= config.bin %> <%= command.id %> ../other-checkout",
|
|
2073
|
-
"<%= config.bin %> <%= command.id %> (auto-detect parent from subdirectory)"
|
|
2074
|
-
],
|
|
2075
|
-
"flags": {
|
|
2076
|
-
"force": {
|
|
2077
|
-
"description": "Replace existing .brv/ directory in target with a worktree pointer",
|
|
2078
|
-
"name": "force",
|
|
2079
|
-
"allowNo": false,
|
|
2080
|
-
"type": "boolean"
|
|
2081
|
-
}
|
|
2082
|
-
},
|
|
2083
|
-
"hasDynamicHelp": false,
|
|
2084
|
-
"hiddenAliases": [],
|
|
2085
|
-
"id": "worktree:add",
|
|
2086
|
-
"pluginAlias": "byterover-cli",
|
|
2087
|
-
"pluginName": "byterover-cli",
|
|
2088
|
-
"pluginType": "core",
|
|
2089
|
-
"strict": true,
|
|
2090
|
-
"enableJsonFlag": false,
|
|
2091
|
-
"isESM": true,
|
|
2092
|
-
"relativePath": [
|
|
2093
|
-
"dist",
|
|
2094
|
-
"oclif",
|
|
2095
|
-
"commands",
|
|
2096
|
-
"worktree",
|
|
2097
|
-
"add.js"
|
|
2098
|
-
]
|
|
2099
|
-
},
|
|
2100
|
-
"worktree": {
|
|
2101
|
-
"aliases": [],
|
|
2102
|
-
"args": {},
|
|
2103
|
-
"description": "Manage worktree links for subdirectories and sibling checkouts",
|
|
2104
|
-
"examples": [
|
|
2105
|
-
"<%= config.bin %> <%= command.id %> --help"
|
|
2106
|
-
],
|
|
2107
|
-
"flags": {},
|
|
2108
|
-
"hasDynamicHelp": false,
|
|
2109
|
-
"hiddenAliases": [],
|
|
2110
|
-
"id": "worktree",
|
|
2111
|
-
"pluginAlias": "byterover-cli",
|
|
2112
|
-
"pluginName": "byterover-cli",
|
|
2113
|
-
"pluginType": "core",
|
|
2114
|
-
"strict": true,
|
|
2115
|
-
"enableJsonFlag": false,
|
|
2116
|
-
"isESM": true,
|
|
2117
|
-
"relativePath": [
|
|
2118
|
-
"dist",
|
|
2119
|
-
"oclif",
|
|
2120
|
-
"commands",
|
|
2121
|
-
"worktree",
|
|
2122
|
-
"index.js"
|
|
2123
|
-
]
|
|
2124
|
-
},
|
|
2125
|
-
"worktree:list": {
|
|
2126
|
-
"aliases": [],
|
|
2127
|
-
"args": {},
|
|
2128
|
-
"description": "Show the current worktree link and list all registered worktrees",
|
|
2129
|
-
"examples": [
|
|
2130
|
-
"<%= config.bin %> <%= command.id %>"
|
|
2131
|
-
],
|
|
2132
|
-
"flags": {},
|
|
2133
|
-
"hasDynamicHelp": false,
|
|
2134
|
-
"hiddenAliases": [],
|
|
2135
|
-
"id": "worktree:list",
|
|
2136
|
-
"pluginAlias": "byterover-cli",
|
|
2137
|
-
"pluginName": "byterover-cli",
|
|
2138
|
-
"pluginType": "core",
|
|
2139
|
-
"strict": true,
|
|
2140
|
-
"enableJsonFlag": false,
|
|
2141
|
-
"isESM": true,
|
|
2142
|
-
"relativePath": [
|
|
2143
|
-
"dist",
|
|
2144
|
-
"oclif",
|
|
2145
|
-
"commands",
|
|
2146
|
-
"worktree",
|
|
2147
|
-
"list.js"
|
|
2148
|
-
]
|
|
2149
|
-
},
|
|
2150
|
-
"worktree:remove": {
|
|
2151
|
-
"aliases": [],
|
|
2152
|
-
"args": {
|
|
2153
|
-
"path": {
|
|
2154
|
-
"description": "Path to the worktree to remove (defaults to cwd)",
|
|
2155
|
-
"name": "path",
|
|
2156
|
-
"required": false
|
|
2157
|
-
}
|
|
2158
|
-
},
|
|
2159
|
-
"description": "Remove a worktree registration and its .brv pointer",
|
|
2160
|
-
"examples": [
|
|
2161
|
-
"<%= config.bin %> <%= command.id %> (remove cwd as worktree)",
|
|
2162
|
-
"<%= config.bin %> <%= command.id %> packages/api (remove from parent)"
|
|
2163
|
-
],
|
|
2164
|
-
"flags": {},
|
|
2165
|
-
"hasDynamicHelp": false,
|
|
2166
|
-
"hiddenAliases": [],
|
|
2167
|
-
"id": "worktree:remove",
|
|
2168
|
-
"pluginAlias": "byterover-cli",
|
|
2169
|
-
"pluginName": "byterover-cli",
|
|
2170
|
-
"pluginType": "core",
|
|
2171
|
-
"strict": true,
|
|
2172
|
-
"enableJsonFlag": false,
|
|
2173
|
-
"isESM": true,
|
|
2174
|
-
"relativePath": [
|
|
2175
|
-
"dist",
|
|
2176
|
-
"oclif",
|
|
2177
|
-
"commands",
|
|
2178
|
-
"worktree",
|
|
2179
|
-
"remove.js"
|
|
2180
|
-
]
|
|
2181
|
-
},
|
|
2182
2315
|
"vc:add": {
|
|
2183
2316
|
"aliases": [],
|
|
2184
2317
|
"args": {},
|
|
@@ -2781,6 +2914,128 @@
|
|
|
2781
2914
|
"status.js"
|
|
2782
2915
|
]
|
|
2783
2916
|
},
|
|
2917
|
+
"worktree:add": {
|
|
2918
|
+
"aliases": [],
|
|
2919
|
+
"args": {
|
|
2920
|
+
"path": {
|
|
2921
|
+
"description": "Path to the directory to register as a worktree (relative or absolute)",
|
|
2922
|
+
"name": "path",
|
|
2923
|
+
"required": false
|
|
2924
|
+
}
|
|
2925
|
+
},
|
|
2926
|
+
"description": "Register a directory as a worktree of this project",
|
|
2927
|
+
"examples": [
|
|
2928
|
+
"<%= config.bin %> <%= command.id %> packages/api",
|
|
2929
|
+
"<%= config.bin %> <%= command.id %> ../other-checkout",
|
|
2930
|
+
"<%= config.bin %> <%= command.id %> (auto-detect parent from subdirectory)"
|
|
2931
|
+
],
|
|
2932
|
+
"flags": {
|
|
2933
|
+
"force": {
|
|
2934
|
+
"description": "Replace existing .brv/ directory in target with a worktree pointer",
|
|
2935
|
+
"name": "force",
|
|
2936
|
+
"allowNo": false,
|
|
2937
|
+
"type": "boolean"
|
|
2938
|
+
}
|
|
2939
|
+
},
|
|
2940
|
+
"hasDynamicHelp": false,
|
|
2941
|
+
"hiddenAliases": [],
|
|
2942
|
+
"id": "worktree:add",
|
|
2943
|
+
"pluginAlias": "byterover-cli",
|
|
2944
|
+
"pluginName": "byterover-cli",
|
|
2945
|
+
"pluginType": "core",
|
|
2946
|
+
"strict": true,
|
|
2947
|
+
"enableJsonFlag": false,
|
|
2948
|
+
"isESM": true,
|
|
2949
|
+
"relativePath": [
|
|
2950
|
+
"dist",
|
|
2951
|
+
"oclif",
|
|
2952
|
+
"commands",
|
|
2953
|
+
"worktree",
|
|
2954
|
+
"add.js"
|
|
2955
|
+
]
|
|
2956
|
+
},
|
|
2957
|
+
"worktree": {
|
|
2958
|
+
"aliases": [],
|
|
2959
|
+
"args": {},
|
|
2960
|
+
"description": "Manage worktree links for subdirectories and sibling checkouts",
|
|
2961
|
+
"examples": [
|
|
2962
|
+
"<%= config.bin %> <%= command.id %> --help"
|
|
2963
|
+
],
|
|
2964
|
+
"flags": {},
|
|
2965
|
+
"hasDynamicHelp": false,
|
|
2966
|
+
"hiddenAliases": [],
|
|
2967
|
+
"id": "worktree",
|
|
2968
|
+
"pluginAlias": "byterover-cli",
|
|
2969
|
+
"pluginName": "byterover-cli",
|
|
2970
|
+
"pluginType": "core",
|
|
2971
|
+
"strict": true,
|
|
2972
|
+
"enableJsonFlag": false,
|
|
2973
|
+
"isESM": true,
|
|
2974
|
+
"relativePath": [
|
|
2975
|
+
"dist",
|
|
2976
|
+
"oclif",
|
|
2977
|
+
"commands",
|
|
2978
|
+
"worktree",
|
|
2979
|
+
"index.js"
|
|
2980
|
+
]
|
|
2981
|
+
},
|
|
2982
|
+
"worktree:list": {
|
|
2983
|
+
"aliases": [],
|
|
2984
|
+
"args": {},
|
|
2985
|
+
"description": "Show the current worktree link and list all registered worktrees",
|
|
2986
|
+
"examples": [
|
|
2987
|
+
"<%= config.bin %> <%= command.id %>"
|
|
2988
|
+
],
|
|
2989
|
+
"flags": {},
|
|
2990
|
+
"hasDynamicHelp": false,
|
|
2991
|
+
"hiddenAliases": [],
|
|
2992
|
+
"id": "worktree:list",
|
|
2993
|
+
"pluginAlias": "byterover-cli",
|
|
2994
|
+
"pluginName": "byterover-cli",
|
|
2995
|
+
"pluginType": "core",
|
|
2996
|
+
"strict": true,
|
|
2997
|
+
"enableJsonFlag": false,
|
|
2998
|
+
"isESM": true,
|
|
2999
|
+
"relativePath": [
|
|
3000
|
+
"dist",
|
|
3001
|
+
"oclif",
|
|
3002
|
+
"commands",
|
|
3003
|
+
"worktree",
|
|
3004
|
+
"list.js"
|
|
3005
|
+
]
|
|
3006
|
+
},
|
|
3007
|
+
"worktree:remove": {
|
|
3008
|
+
"aliases": [],
|
|
3009
|
+
"args": {
|
|
3010
|
+
"path": {
|
|
3011
|
+
"description": "Path to the worktree to remove (defaults to cwd)",
|
|
3012
|
+
"name": "path",
|
|
3013
|
+
"required": false
|
|
3014
|
+
}
|
|
3015
|
+
},
|
|
3016
|
+
"description": "Remove a worktree registration and its .brv pointer",
|
|
3017
|
+
"examples": [
|
|
3018
|
+
"<%= config.bin %> <%= command.id %> (remove cwd as worktree)",
|
|
3019
|
+
"<%= config.bin %> <%= command.id %> packages/api (remove from parent)"
|
|
3020
|
+
],
|
|
3021
|
+
"flags": {},
|
|
3022
|
+
"hasDynamicHelp": false,
|
|
3023
|
+
"hiddenAliases": [],
|
|
3024
|
+
"id": "worktree:remove",
|
|
3025
|
+
"pluginAlias": "byterover-cli",
|
|
3026
|
+
"pluginName": "byterover-cli",
|
|
3027
|
+
"pluginType": "core",
|
|
3028
|
+
"strict": true,
|
|
3029
|
+
"enableJsonFlag": false,
|
|
3030
|
+
"isESM": true,
|
|
3031
|
+
"relativePath": [
|
|
3032
|
+
"dist",
|
|
3033
|
+
"oclif",
|
|
3034
|
+
"commands",
|
|
3035
|
+
"worktree",
|
|
3036
|
+
"remove.js"
|
|
3037
|
+
]
|
|
3038
|
+
},
|
|
2784
3039
|
"hub:registry:add": {
|
|
2785
3040
|
"aliases": [],
|
|
2786
3041
|
"args": {
|
|
@@ -3080,5 +3335,5 @@
|
|
|
3080
3335
|
]
|
|
3081
3336
|
}
|
|
3082
3337
|
},
|
|
3083
|
-
"version": "3.
|
|
3338
|
+
"version": "3.6.1"
|
|
3084
3339
|
}
|