@rsconcept/rstool 0.10.1 → 0.10.3

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.
@@ -36,19 +36,20 @@
36
36
 
37
37
  ## Parser
38
38
 
39
- | Код | Имя | `params` | Исправление |
40
- | :------- | :----------------------- | :------------------------ | :------------------------------------------------------------------------------- |
41
- | `0x8400` | `unknownSyntax` | — | Неопределённая синтаксическая ошибка: проверь операторы, скобки, идентификаторы. |
42
- | `0x8409` | `bracketMismatch` | `[expected, actual]` | Закрой ожидаемой скобкой `expected` вместо `actual`. |
43
- | `0x840A` | `doubleParenthesis` | | Убери лишнюю внешнюю пару `(( ))`. |
44
- | `0x840B` | `missingOpenBracket` | `[bracket]` | Непарная закрывающая `bracket`: убери её или добавь открывающую. |
45
- | `0x840C` | `missingCloseBracket` | `[bracket]` | Непарная открывающая `bracket`: убери её или добавь закрывающую. |
46
- | `0x8415` | `expectedLocal` | | Ожидалось имя локальной переменной. |
47
- | `0x8416` | `expectedType` | `[expectedClass, actual]` | Несоответствие класса выражения ожидаемому. |
48
- | `0x8417` | `invalidFilterSyntax` | — | Синтаксис `Fi`: `Fi1[D1](S1)`, `Fi1,2[D1,D2](S1)` или `Fi1,2[D3](S1)`. |
49
- | `0x8418` | `expectedFunctionBody` | — | Нужно тело функции после `[параметры]`. |
50
- | `0x8419` | `expectedExpressionBody` | — | Нужно теоретико-множественное тело функции (ТФ). |
51
- | `0x841A` | `expectedLogicBody` | — | Нужно логическое тело функции. |
39
+ | Код | Имя | `params` | Исправление |
40
+ | :------- | :----------------------- | :------------------------ | :------------------------------------------------------------------------------------ |
41
+ | `0x8400` | `unknownSyntax` | — | Неопределённая синтаксическая ошибка: проверь операторы, скобки, идентификаторы. |
42
+ | `0x8401` | `forbiddenCharacter` | `[character]` | Символ не входит в язык родов структур (напр. `^` для степени). Удали или замени его. |
43
+ | `0x8409` | `bracketMismatch` | `[expected, actual]` | Закрой ожидаемой скобкой `expected` вместо `actual`. |
44
+ | `0x840A` | `doubleParenthesis` | | Убери лишнюю внешнюю пару `(( ))`. |
45
+ | `0x840B` | `missingOpenBracket` | `[bracket]` | Непарная закрывающая `bracket`: убери её или добавь открывающую. |
46
+ | `0x840C` | `missingCloseBracket` | `[bracket]` | Непарная открывающая `bracket`: убери её или добавь закрывающую. |
47
+ | `0x8415` | `expectedLocal` | | Ожидалось имя локальной переменной. |
48
+ | `0x8416` | `expectedType` | `[expectedClass, actual]` | Несоответствие класса выражения ожидаемому. |
49
+ | `0x8417` | `invalidFilterSyntax` | — | Синтаксис `Fi`: `Fi1[D1](S1)`, `Fi1,2[D1,D2](S1)` или `Fi1,2[D3](S1)`. |
50
+ | `0x8418` | `expectedFunctionBody` | — | Нужно тело функции после `[параметры]`. |
51
+ | `0x8419` | `expectedExpressionBody` | — | Нужно теоретико-множественное тело функции (ТФ). |
52
+ | `0x841A` | `expectedLogicBody` | — | Нужно логическое тело функции. |
52
53
 
53
54
  ## Предупреждения
54
55
 
@@ -49,12 +49,26 @@ GET https://api.portal.acconcept.ru/api/rsforms/856/details
49
49
 
50
50
  ## Доступ
51
51
 
52
- - `access_policy: "public"` читается без авторизации.
53
- - Приватная схема или модель вернёт `403` и не предназначена для агентов.
52
+ **Для агентов через REST/curl** отдельного API-токена нет. Запросы без авторизации
53
+ видят только объекты с `access_policy: "public"` в общих разделах (`/S`, `/L`).
54
+ Это касается `context-search`, `by-ids`, `GET /api/rsforms/:id` и `/details`.
55
+
56
+ - Недоступная схема → `403` на прямой запрос; в `by-ids` такой id **пропускается**.
57
+ - Личные (`/U`) и проектные (`/P`) объекты через анонимный API **не читаются**, даже если
58
+ пользователь дал UI-ссылку.
54
59
  - Если нужны только `title`, `alias`, `description`, `owner`, `access_policy`, не запрашивай `/details`.
55
- - Авторизация Portal — session cookie (`SessionAuthentication`). Для curl с приватными объектами
56
- пользователя передай cookie сессии (`-b "sessionid=..."`) после логина в UI или через тот же
57
- механизм, что использует фронтенд. Без cookie видны только публичные объекты в `/S` и `/L`.
60
+
61
+ В браузере Portal использует Django session (`SessionAuthentication`). **Не предлагай
62
+ пользователю передавать session cookie агенту** для curl/скриптов это нерабочий путь
63
+ (cookie привязан к браузеру, истекает, не предназначен для машинного доступа).
64
+
65
+ Если КС не публичная, варианты для агента:
66
+
67
+ 1. Пользователь временно делает схему публичной (`access_policy: public`).
68
+ 2. Пользователь экспортирует JSON (`GET /api/rsforms/:id/details` из своей сессии в UI
69
+ или экспорт из Portal) и передаёт файл в чат/репозиторий — агент переносит в `rstool`.
70
+ 3. Работа с личной библиотекой остаётся в UI Portal; агент помогает с публичными схемами
71
+ и с JSON, который пользователь явно предоставил.
58
72
 
59
73
  ## Список и контекстный поиск в библиотеке
60
74
 
@@ -165,13 +179,6 @@ curl.exe -s "https://api.portal.acconcept.ru/api/library/context-search?q=мно
165
179
  curl.exe -s "https://api.portal.acconcept.ru/api/library/context-search?q=логика&search_fields=title,alias"
166
180
  ```
167
181
 
168
- С сессией пользователя (приватные и личные объекты):
169
-
170
- ```bash
171
- curl.exe -s -b "sessionid=ВАШ_SESSION_ID" ^
172
- "https://api.portal.acconcept.ru/api/library/context-search?q=UniqueTermToken"
173
- ```
174
-
175
182
  Только КС в общем разделе и подпапках:
176
183
 
177
184
  ```bash
@@ -256,6 +263,8 @@ for (const item of portal.items) {
256
263
  ## Практика для агентов
257
264
 
258
265
  - Запрашивай API host, а не UI host: `https://api.portal.acconcept.ru/api/...`.
266
+ - Считай, что REST без авторизации = только **публичные** схемы в `/S` и `/L`.
267
+ - Для непубличной КС проси у пользователя JSON (`/details`) или публикацию схемы — не cookie.
259
268
  - Для больших схем используй увеличенный таймаут. В PowerShell вызывай `curl.exe`,
260
269
  а не alias `curl` (`Invoke-WebRequest`), если нужен CLI-синтаксис curl.
261
270
  - Сначала бери метаданные, если нужно только название или доступность схемы.
@@ -284,5 +293,6 @@ path.write_text(json.dumps(payload, ensure_ascii=False, indent=2), encoding='utf
284
293
 
285
294
  - Не парси HTML SPA.
286
295
  - Не запрашивай UI напрямую, используй преобразованные API запросы.
296
+ - Не предлагай авторизацию через session cookie или `sessionid` в curl.
287
297
  - Не передавай `/details` JSON в `importSession`.
288
298
  - Не запрашивай `/details`, если нужны только метаданные.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rsconcept/rstool",
3
- "version": "0.10.1",
3
+ "version": "0.10.3",
4
4
  "description": "Agent-facing library for incremental RSForm construction, RSLang analysis, diagnostics, modeling, and evaluation. Wraps @rsconcept/domain with a deterministic session contract and stdio wrapper.",
5
5
  "license": "MIT",
6
6
  "author": "IRBorisov",
@@ -70,7 +70,7 @@
70
70
  "prepublishOnly": "npm run build"
71
71
  },
72
72
  "dependencies": {
73
- "@rsconcept/domain": "^1.6.0"
73
+ "@rsconcept/domain": "^1.6.1"
74
74
  },
75
75
  "devDependencies": {
76
76
  "@types/node": "^26.0.1",