@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.
package/docs/PORTAL-API.md
CHANGED
|
@@ -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
|
-
|
|
36
|
-
|
|
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
|
-
|
|
39
|
-
|
|
40
|
-
|
|
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.
|
|
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`
|