@rsconcept/rstool 0.10.0 → 0.10.2

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.
@@ -4,6 +4,23 @@
4
4
  `rstool` сам не ходит в REST API: он работает с in-memory сессиями.
5
5
  Агент получает JSON Portal отдельно, затем переносит конституенты через контракт `rstool`.
6
6
 
7
+ ## Репозиторий Portal
8
+
9
+ Исходники приложения: [github.com/IRBorisov/ConceptPortal](https://github.com/IRBorisov/ConceptPortal)
10
+
11
+ Для работы с продакшен API клон не обязателен — достаточно этого файла и OpenAPI (`/schema`).
12
+ Если нужен исходный контекст, подгружай файлы из репозитория (Read в checkout, `git clone`, или просмотр на GitHub):
13
+
14
+ | Нужно | Путь в репозитории |
15
+ | ---------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
16
+ | Правила монорепо, UI→API | [`AGENTS.md`](https://github.com/IRBorisov/ConceptPortal/blob/main/AGENTS.md) |
17
+ | Обзор, локальная разработка | [`README.md`](https://github.com/IRBorisov/ConceptPortal/blob/main/README.md) |
18
+ | Библиотека, context-search, by-ids | [`rsconcept/backend/apps/library/`](https://github.com/IRBorisov/ConceptPortal/tree/main/rsconcept/backend/apps/library) |
19
+ | Правила и команды бэкенда | [`rsconcept/backend/AGENTS.md`](https://github.com/IRBorisov/ConceptPortal/blob/main/rsconcept/backend/AGENTS.md) |
20
+ | RSForm / КС API | [`rsconcept/backend/apps/rsform/`](https://github.com/IRBorisov/ConceptPortal/tree/main/rsconcept/backend/apps/rsform) |
21
+ | Хосты UI и API в проде | [`nginx/production.conf`](https://github.com/IRBorisov/ConceptPortal/blob/main/nginx/production.conf) |
22
+ | Справка rstool (этот файл в npm) | [`rsconcept/rstool/docs/PORTAL-API.md`](https://github.com/IRBorisov/ConceptPortal/blob/main/rsconcept/rstool/docs/PORTAL-API.md) |
23
+
7
24
  ## Хосты
8
25
 
9
26
  - UI: `https://portal.acconcept.ru/`
@@ -32,12 +49,26 @@ GET https://api.portal.acconcept.ru/api/rsforms/856/details
32
49
 
33
50
  ## Доступ
34
51
 
35
- - `access_policy: "public"` читается без авторизации.
36
- - Приватная схема или модель вернёт `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-ссылку.
37
59
  - Если нужны только `title`, `alias`, `description`, `owner`, `access_policy`, не запрашивай `/details`.
38
- - Авторизация Portal — session cookie (`SessionAuthentication`). Для curl с приватными объектами
39
- пользователя передай cookie сессии (`-b "sessionid=..."`) после логина в UI или через тот же
40
- механизм, что использует фронтенд. Без 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, который пользователь явно предоставил.
41
72
 
42
73
  ## Список и контекстный поиск в библиотеке
43
74
 
@@ -148,13 +179,6 @@ curl.exe -s "https://api.portal.acconcept.ru/api/library/context-search?q=мно
148
179
  curl.exe -s "https://api.portal.acconcept.ru/api/library/context-search?q=логика&search_fields=title,alias"
149
180
  ```
150
181
 
151
- С сессией пользователя (приватные и личные объекты):
152
-
153
- ```bash
154
- curl.exe -s -b "sessionid=ВАШ_SESSION_ID" ^
155
- "https://api.portal.acconcept.ru/api/library/context-search?q=UniqueTermToken"
156
- ```
157
-
158
182
  Только КС в общем разделе и подпапках:
159
183
 
160
184
  ```bash
@@ -239,6 +263,8 @@ for (const item of portal.items) {
239
263
  ## Практика для агентов
240
264
 
241
265
  - Запрашивай API host, а не UI host: `https://api.portal.acconcept.ru/api/...`.
266
+ - Считай, что REST без авторизации = только **публичные** схемы в `/S` и `/L`.
267
+ - Для непубличной КС проси у пользователя JSON (`/details`) или публикацию схемы — не cookie.
242
268
  - Для больших схем используй увеличенный таймаут. В PowerShell вызывай `curl.exe`,
243
269
  а не alias `curl` (`Invoke-WebRequest`), если нужен CLI-синтаксис curl.
244
270
  - Сначала бери метаданные, если нужно только название или доступность схемы.
@@ -267,5 +293,6 @@ path.write_text(json.dumps(payload, ensure_ascii=False, indent=2), encoding='utf
267
293
 
268
294
  - Не парси HTML SPA.
269
295
  - Не запрашивай UI напрямую, используй преобразованные API запросы.
296
+ - Не предлагай авторизацию через session cookie или `sessionid` в curl.
270
297
  - Не передавай `/details` JSON в `importSession`.
271
298
  - Не запрашивай `/details`, если нужны только метаданные.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rsconcept/rstool",
3
- "version": "0.10.0",
3
+ "version": "0.10.2",
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",
@@ -26,6 +26,7 @@
26
26
  - Диагностики: [../../docs/DIAGNOSTICS.md](../../docs/DIAGNOSTICS.md).
27
27
  - Грамматика: [../../docs/GRAMMAR-REF.md](../../docs/GRAMMAR-REF.md).
28
28
  - REST Portal: [../../docs/PORTAL-API.md](../../docs/PORTAL-API.md).
29
+ - Репозиторий Portal (исходники, API, nginx): [ConceptPortal на GitHub](https://github.com/IRBorisov/ConceptPortal) — карта путей в [PORTAL-API.md](../../docs/PORTAL-API.md#репозиторий-portal).
29
30
 
30
31
  ## Воркфлоу
31
32
 
@@ -26,6 +26,10 @@ Then continue with the canonical files below.
26
26
 
27
27
  Always open **GUIDE.md** first when starting a rstool task, then **REFERENCE.md** / **EXAMPLES.md** / relevant `docs/*.md` as needed.
28
28
 
29
+ ## Portal (приложение)
30
+
31
+ Репозиторий: [github.com/IRBorisov/ConceptPortal](https://github.com/IRBorisov/ConceptPortal). REST и curl — `node_modules/@rsconcept/rstool/docs/PORTAL-API.md`; карта путей в исходниках — раздел «Репозиторий Portal» в том же файле.
32
+
29
33
  ## Quick facts
30
34
 
31
35
  - Package: `@rsconcept/rstool`; wrapper: `npx rstool-wrapper`