@iola_adm/iola-cli 0.2.42 → 0.2.43
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/package.json +1 -1
- package/src/cli.js +24 -5
- package/wiki/Yandex-Cloud-Connector.md +3 -3
- package/wiki/Yandex-Connector.md +1 -1
- package/wiki//320/232/320/276/320/274/320/260/320/275/320/264/321/213.md +2 -2
- package/wiki//320/241/320/272/320/270/320/273/320/273/321/213-/320/264/320/273/321/217-/320/266/320/270/321/202/320/265/320/273/320/265/320/271.md +2 -2
package/package.json
CHANGED
package/src/cli.js
CHANGED
|
@@ -3787,10 +3787,10 @@ async function ensureYandexGoGeocoderReady() {
|
|
|
3787
3787
|
async function buildYandexGoDeeplinkFromOptions(options = {}) {
|
|
3788
3788
|
const from = options.from || options._?.[0] || "";
|
|
3789
3789
|
const to = options.to || options._?.[1] || "";
|
|
3790
|
-
if (!from || !to) throw new Error('Укажите маршрут: iola yandex go link --from "
|
|
3790
|
+
if (!from || !to) throw new Error('Укажите маршрут: iola yandex go link --from "Йошкар-Ола, Красноармейская 43" --to "Йошкар-Ола, Гагарина 8"');
|
|
3791
3791
|
const ambiguous = [from, to].find((point) => isAmbiguousPersonalYandexGoPoint(point));
|
|
3792
3792
|
if (ambiguous) {
|
|
3793
|
-
throw new Error(`Не знаю адрес "${ambiguous}". Укажите полный адрес отправления или сохраните его в настройках позже. Пример: "такси от Йошкар-Ола,
|
|
3793
|
+
throw new Error(`Не знаю адрес "${ambiguous}". Укажите полный адрес отправления или сохраните его в настройках позже. Пример: "такси от Йошкар-Ола, Красноармейская 43 до Администрации Йошкар-Олы".`);
|
|
3794
3794
|
}
|
|
3795
3795
|
const fromPoint = await resolveYandexGoPoint(from);
|
|
3796
3796
|
const toPoint = await resolveYandexGoPoint(to);
|
|
@@ -3934,7 +3934,8 @@ function extractYandexGoRouteFromText(text, previousText = "") {
|
|
|
3934
3934
|
.replace(/\s+/g, " ")
|
|
3935
3935
|
.trim();
|
|
3936
3936
|
const match = cleaned.match(/(?:от|из|с)\s+(.+?)\s+(?:до|в|на)\s+(.+)$/iu)
|
|
3937
|
-
|| cleaned.match(/^(.+?)\s*,?\s+(?:до|в)\s+(.+)$/iu)
|
|
3937
|
+
|| cleaned.match(/^(.+?)\s*,?\s+(?:до|в)\s+(.+)$/iu)
|
|
3938
|
+
|| splitYandexGoCommaRoute(cleaned);
|
|
3938
3939
|
if (!match) {
|
|
3939
3940
|
const partialFrom = cleaned.match(/(?:^|\s)(?:от|из|с)\s+(.+)$/iu)?.[1]?.trim() || "";
|
|
3940
3941
|
const previousRoute = previousText ? extractYandexGoRouteFromText(previousText, "") : { from: "", to: "" };
|
|
@@ -3952,6 +3953,24 @@ function extractYandexGoRouteFromText(text, previousText = "") {
|
|
|
3952
3953
|
return { from, to, tariff: tariffMatch ? normalizeYandexGoTariff(tariffMatch[1]) : "econom" };
|
|
3953
3954
|
}
|
|
3954
3955
|
|
|
3956
|
+
function splitYandexGoCommaRoute(text) {
|
|
3957
|
+
const source = String(text || "").trim();
|
|
3958
|
+
const marker = source.match(/,\s*((?:администрац|мэри|йошкар|медведево|сем[её]новк)[\s\S]+)$/iu);
|
|
3959
|
+
if (marker?.index && marker.index > 3) {
|
|
3960
|
+
return [source, source.slice(0, marker.index).trim(), marker[1].trim()];
|
|
3961
|
+
}
|
|
3962
|
+
const parts = source.split(/\s*,\s*/u).filter(Boolean);
|
|
3963
|
+
if (parts.length === 2) return [source, parts[0], parts[1]];
|
|
3964
|
+
return null;
|
|
3965
|
+
}
|
|
3966
|
+
|
|
3967
|
+
function looksLikeYandexGoAddressPair(text) {
|
|
3968
|
+
const source = String(text || "").trim();
|
|
3969
|
+
if (!source.includes(",")) return false;
|
|
3970
|
+
if (!/(йошкар|медведево|сем[её]новк|администрац|мэри|ул\.|улица|проспект|пр-т|бульвар|переулок|\d)/iu.test(source)) return false;
|
|
3971
|
+
return Boolean(splitYandexGoCommaRoute(source));
|
|
3972
|
+
}
|
|
3973
|
+
|
|
3955
3974
|
async function handleYandexMailWatch(args = []) {
|
|
3956
3975
|
const [action = "status", ...rest] = args;
|
|
3957
3976
|
const options = parseOptions(rest);
|
|
@@ -12568,7 +12587,7 @@ async function buildYandexDirectAnswer(question, history = []) {
|
|
|
12568
12587
|
const mailContext = /Яндекс Почта|Письмо #|\bUID\b|#\d{3,}/iu.test(previousAssistantText);
|
|
12569
12588
|
const mailFollowup = mailContext && isYandexMailFollowupQuestion(normalized, question);
|
|
12570
12589
|
const goContext = /(?:Ссылка Яндекс Go|Для ссылки Яндекс Go|Не знаю адрес|Геокодер вернул|Укажите полный адрес отправления)/iu.test(previousAssistantText);
|
|
12571
|
-
const goFollowup = goContext && /(?:^|\s)(?:от|из|с|до|в)\s+/iu.test(normalized);
|
|
12590
|
+
const goFollowup = goContext && (/(?:^|\s)(?:от|из|с|до|в)\s+/iu.test(normalized) || looksLikeYandexGoAddressPair(question));
|
|
12572
12591
|
if (!isYandexServiceQuestion(normalized) && !mailFollowup && !goFollowup) return "";
|
|
12573
12592
|
try {
|
|
12574
12593
|
if (mailFollowup && (isYandexMailReadRequest(normalized) || isYandexMailSelectionQuestion(question))) {
|
|
@@ -12594,7 +12613,7 @@ async function buildYandexDirectAnswer(question, history = []) {
|
|
|
12594
12613
|
&& /(маршрут|ссылк|откуда|куда|поездк|такси|от\s+.+\s+до\s+)/iu.test(normalized))) {
|
|
12595
12614
|
const route = extractYandexGoRouteFromText(question, previousUserText);
|
|
12596
12615
|
if (!route.from || !route.to) {
|
|
12597
|
-
return 'Для ссылки Яндекс Go нужны два адреса. Пример: "такси от
|
|
12616
|
+
return 'Для ссылки Яндекс Go нужны два адреса. Пример: "такси от Йошкар-Ола, Красноармейская 43 до Йошкар-Ола, Гагарина 8".';
|
|
12598
12617
|
}
|
|
12599
12618
|
await ensureYandexGoGeocoderReady();
|
|
12600
12619
|
const result = await buildYandexGoDeeplinkFromOptions({ from: route.from, to: route.to, tariff: route.tariff });
|
|
@@ -90,8 +90,8 @@ iola geo route-context "школа 7"
|
|
|
90
90
|
Геокодер также нужен для Яндекс Go deeplink:
|
|
91
91
|
|
|
92
92
|
```bash
|
|
93
|
-
iola yandex go link --from "
|
|
94
|
-
iola yandex go open --from "
|
|
93
|
+
iola yandex go link --from "Йошкар-Ола, Красноармейская 43" --to "Йошкар-Ола, Гагарина 8"
|
|
94
|
+
iola yandex go open --from "Йошкар-Ола, Красноармейская 43" --to "Йошкар-Ола, Гагарина 8" --tariff econom
|
|
95
95
|
```
|
|
96
96
|
|
|
97
97
|
Если ключ геокодера не найден, CLI пишет понятную ошибку и предлагает:
|
|
@@ -121,7 +121,7 @@ CLI не нажимает кнопку заказа, не подтверждае
|
|
|
121
121
|
|
|
122
122
|
```bash
|
|
123
123
|
iola yandex go link --from "Йошкар-Ола, Ленинский 24" --to "Йошкар-Ола, Кремлевская 26"
|
|
124
|
-
iola ask "сделай ссылку Яндекс Go от
|
|
124
|
+
iola ask "сделай ссылку Яндекс Go от Йошкар-Ола, Красноармейская 43 до Йошкар-Ола, Гагарина 8"
|
|
125
125
|
```
|
|
126
126
|
|
|
127
127
|
## Ручная инструкция по ключу геокодера
|
package/wiki/Yandex-Connector.md
CHANGED
|
@@ -211,7 +211,7 @@ QR-код:
|
|
|
211
211
|
iola ask "по последнему письму создай встречу завтра в 14:00, сохрани письмо на диск и пришли отправителю ссылку"
|
|
212
212
|
iola ask "собери полный пакет по контакту Петров: папка на диске, заметка, встреча завтра в 12 и ссылка с QR"
|
|
213
213
|
iola ask "создай папку для школы 2 на яндекс диске и отправь ссылку контакту Иванов"
|
|
214
|
-
iola ask "сделай ссылку Яндекс Go от
|
|
214
|
+
iola ask "сделай ссылку Яндекс Go от Йошкар-Ола, Красноармейская 43 до Йошкар-Ола, Гагарина 8"
|
|
215
215
|
```
|
|
216
216
|
|
|
217
217
|
CLI использует уже подключенные сервисы: Почту, Диск, Контакты и Календарь. Если не хватает email, найдено несколько контактов или неясна дата встречи, CLI должен уточнить, а не выбирать случайно.
|
|
@@ -47,8 +47,8 @@ iola geo services "Йошкар-Ола, улица Петрова, 15"
|
|
|
47
47
|
|
|
48
48
|
```bash
|
|
49
49
|
iola yandex go status
|
|
50
|
-
iola yandex go link --from "
|
|
51
|
-
iola yandex go open --from "
|
|
50
|
+
iola yandex go link --from "Йошкар-Ола, Красноармейская 43" --to "Йошкар-Ола, Гагарина 8"
|
|
51
|
+
iola yandex go open --from "Йошкар-Ола, Красноармейская 43" --to "Йошкар-Ола, Гагарина 8" --tariff econom
|
|
52
52
|
```
|
|
53
53
|
|
|
54
54
|
Облачные диски:
|
|
@@ -395,8 +395,8 @@ CLI не должен сам нажимать финальные кнопки в
|
|
|
395
395
|
Команды:
|
|
396
396
|
|
|
397
397
|
```bash
|
|
398
|
-
iola yandex go link --from "
|
|
399
|
-
iola yandex go open --from "
|
|
398
|
+
iola yandex go link --from "Йошкар-Ола, Красноармейская 43" --to "Йошкар-Ола, Гагарина 8"
|
|
399
|
+
iola yandex go open --from "Йошкар-Ола, Красноармейская 43" --to "Йошкар-Ола, Гагарина 8" --tariff econom
|
|
400
400
|
```
|
|
401
401
|
|
|
402
402
|
Если ключ геокодера не подключен, CLI должен объяснить, что нужно открыть `/master` и выбрать `Yandex Cloud Connector (геокодинг и YandexGPT)`, либо запустить `iola yandex cloud setup`.
|