@rsconcept/rstool 0.5.1 → 0.5.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.
@@ -96,32 +96,3 @@ card(S1) = card(Pr1,2(S1))
96
96
  - `card(F[ξ]) = 1`.
97
97
 
98
98
  Перед `D{x∈… | ∃d1∈… ∃d2∈…}` проверь, нельзя ли взять `Pr` от уже введенного отношения.
99
-
100
- ## Проверка на маленькой КМ
101
-
102
- Если семантика не очевидна, собери минимальную модель: значения для `X#`, `C#`, `S#`; затем вычисли целевые `D#`, `F#`, `P#`, `A#`.
103
-
104
- Особенно проверяй проекции, фильтры, `red`, `bool` / `debool`, аксиомы. Для важной проверки сделай скрипт-тест: сессия + значения неопределяемых конституент + проверка `success` и ожидаемого `value`.
105
-
106
- Цикл: `MODEL-TESTING.md`.
107
-
108
- ## Быстрое ревью
109
-
110
- - Атрибутивная и родоструктурная экспликации не смешаны без запроса.
111
- - Нет проверки принадлежности к собственной типизации: `x∈X1` избыточно, если `x` уже объявлен в `X1`.
112
- - Покрыты главные сущности, роли, отношения, утверждения.
113
- - Повторяющиеся отборы вынесены в `F#`.
114
- - Каждая аксиома имеет понятную цель.
115
- - Сомнительная семантика проверена на маленькой КМ при наличии тестовых данных.
116
-
117
- ## Рабочий порядок
118
-
119
- 1. Собери словарь: базовые понятия, ключевые отношения, сценарий синтеза.
120
- 2. Добавь `X#`, `C#` с конвенциями из источника.
121
- 3. Добавь базовые `S#`: трансформация, перевод, допускание, выбор, цели, субъекты.
122
- 4. Проверь, что базовые понятия независимы и не выводятся друг из друга.
123
- 5. Добавь `A#` на структуры: `card`, покрытие `Pr1,2(S#)=…`, принадлежность выбора.
124
- 6. Введи `F#` для типовых запросов.
125
- 7. Производные понятия строй через `Pr*`, `Fi*`, `F#` от центрального `D#` и базовых `S#`.
126
- 8. Перед каждым upsert запускай `analyzeExpression`.
127
- 9. Для сомнительной семантики собери маленькую КМ (`MODEL-TESTING.md`).
@@ -51,5 +51,3 @@
51
51
  3. Все глобальные ссылки уже есть в сессии.
52
52
  4. `axiom` и `statement` имеют типизацию `Logic`, иначе `expectedLogic`.
53
53
  5. Выводимая конституента с пустой формулой дает `cstEmptyDerived`.
54
-
55
- Цикл: `analyzeExpression` на черновике → исправить `diagnostics[].from/to` → `addOrUpdateConstituenta`.
@@ -78,8 +78,4 @@
78
78
 
79
79
  ## Цикл исправления
80
80
 
81
- 1. Запусти `analyzeExpression`.
82
- 2. Прочитай `code`, `from`, `to`, `params`.
83
- 3. Исправь именно диапазон в `definitionFormal`.
84
- 4. Не повторяй вызов без изменения ввода.
85
- 5. После успеха вызывай `addOrUpdateConstituenta`.
81
+ Пошаговый цикл — в `../skills/rstool-helper/GUIDE.md`, раздел «Цикл диагностик». Здесь — справочник кодов и типичных ошибок.
@@ -11,15 +11,6 @@
11
11
 
12
12
  Для простой проверки типизации сначала используй `analyzeExpression`. КМ нужна, когда вопрос зависит от интерпретации данных и вычисленного значения.
13
13
 
14
- ## Минимальный цикл
15
-
16
- 1. Создай отдельную `createSession` или изолированную копию текущей сессии.
17
- 2. Добавь только нужные поставщики: `X#`, `C#`, `S#` и проверяемые `D#` / `F#` / `P#` / `A#`.
18
- 3. Проверь формулы через `analyzeExpression` и `addOrUpdateConstituenta`.
19
- 4. Задай значения базовых понятий через `setConstituentaValue` или `setConstituentaValues`.
20
- 5. Вычисли проверяемую формулу через `evaluateExpression` или сохраненную конституенту через `evaluateConstituenta`.
21
- 6. Сравни результат с ожидаемым значением; если есть несколько зависимых определений, запусти `recalculateModel`.
22
-
23
14
  ## Что задавать руками
24
15
 
25
16
  `basic`, `constant`, `structure` можно интерпретировать напрямую. `term`, `function`, `predicate`, `axiom`, `statement` должны вычисляться из формулы, поэтому их напрямую не задавай.
package/docs/README.md CHANGED
@@ -1,6 +1,8 @@
1
1
  # Документация rstool
2
2
 
3
- Краткая русская справка для агентов.
3
+ Краткая справка для агентов.
4
+
5
+ **Воркфлоу и чеклисты** — в `../skills/rstool-helper/GUIDE.md` (начинай с него). Здесь — справочные правила языка и предметной области.
4
6
 
5
7
  ## Какой файл читать
6
8
 
@@ -14,4 +16,4 @@
14
16
  - **PORTAL-API.md** — объекты REST API Portal.
15
17
  - **GRAMMAR-REF.md** — краткая карта токенов и приоритетов.
16
18
 
17
- Контракт агента `rstool` см. в `../skills/rstool-helper/REFERENCE.md`.
19
+ Контракт агента `rstool` и примеры `../skills/rstool-helper/REFERENCE.md`, `EXAMPLES.md` (на русском, вместе с `GUIDE.md`).
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rsconcept/rstool",
3
- "version": "0.5.1",
3
+ "version": "0.5.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",
package/skills/README.md CHANGED
@@ -6,9 +6,9 @@ Each skill lives in its own subdirectory: `skills/<skill-name>/SKILL.md` (plus r
6
6
 
7
7
  - `INSTALL.md`: agent procedure after `npm install`
8
8
  - `rstool-helper/SKILL.md`: thin entry skill — copy into the project’s agent skills folder (see `INSTALL.md`)
9
- - `rstool-helper/GUIDE.md`: canonical workflow and language primer
10
- - `rstool-helper/REFERENCE.md`: API, stdio, contract
11
- - `rstool-helper/EXAMPLES.md`: worked examples and pitfalls
9
+ - `rstool-helper/GUIDE.md`: единая точка входа воркфлоу, чеклисты, обзор языка (на русском)
10
+ - `rstool-helper/REFERENCE.md`: API, stdio, контракт (на русском)
11
+ - `rstool-helper/EXAMPLES.md`: примеры и типичные ошибки (на русском)
12
12
  - `../docs/*.md`: language reference (DOMAIN, SYNTAX, DIAGNOSTICS, …)
13
13
 
14
14
  ## npm workflow
@@ -1,8 +1,8 @@
1
- # rstool Examples
1
+ # Примеры rstool
2
2
 
3
- Short examples for agents. For full scripts, see `../../examples/`.
3
+ Короткие примеры для агентов. Полные скрипты `../../examples/`. Воркфлоу — [GUIDE.md](GUIDE.md).
4
4
 
5
- ## Minimal Session
5
+ ## Минимальная сессия
6
6
 
7
7
  ```ts
8
8
  import { CstType, RSToolAgent } from '@rsconcept/rstool';
@@ -20,7 +20,7 @@ tool.addOrUpdateConstituenta(sessionId, {
20
20
  alias: 'S1',
21
21
  cstType: CstType.STRUCTURED,
22
22
  definitionFormal: 'ℬ(X1×X1)',
23
- convention: 'Elements are (parent, child) pairs with parent, child ∈ X1.'
23
+ convention: 'Элементы пары (родитель, потомок); родитель, потомок ∈ X1.'
24
24
  }
25
25
  });
26
26
 
@@ -31,9 +31,9 @@ const { state, diagnostics } = tool.addOrUpdateConstituenta(sessionId, {
31
31
  console.log(state.analysis.success, diagnostics.length);
32
32
  ```
33
33
 
34
- ## Analyze Before Upsert
34
+ ## Анализ перед upsert
35
35
 
36
- Use scratch analysis when syntax or `cstType` is uncertain.
36
+ Черновой анализ, когда синтаксис или `cstType` под вопросом.
37
37
 
38
38
  ```ts
39
39
  const analysis = tool.analyzeExpression(sessionId, {
@@ -46,9 +46,9 @@ if (!analysis.success) {
46
46
  }
47
47
  ```
48
48
 
49
- Fix the reported `from` / `to` range, then re-run analysis. Maybe rethink the whole definition or split into multiple constituents
49
+ Исправь диапазон `from` / `to` из отчёта и повтори анализ. При необходимости пересмотри определение целиком или разбей на несколько конституент.
50
50
 
51
- ## Evaluation
51
+ ## Вычисление
52
52
 
53
53
  ```ts
54
54
  tool.setConstituentaValue(sessionId, {
@@ -64,11 +64,11 @@ const scratch = tool.evaluateExpression(sessionId, {
64
64
  console.log(scratch.success, scratch.value); // true, 3
65
65
  ```
66
66
 
67
- For stored definitions, set values for `basic`, `constant`, and `structure`, then call `evaluateConstituenta` or `recalculateModel`.
67
+ Для сохранённых определений задай значения `basic`, `constant` и `structure`, затем вызови `evaluateConstituenta` или `recalculateModel`.
68
68
 
69
- ## Semantic Smoke Test
69
+ ## Семантический smoke-тест
70
70
 
71
- When syntax is valid but meaning is uncertain, build a tiny model and assert the value.
71
+ Синтаксис верен, но смысл неочевиден собери маленькую модель и проверь значение.
72
72
 
73
73
  ```ts
74
74
  import { CstType, EvalStatus, RSToolAgent } from '@rsconcept/rstool';
@@ -103,15 +103,15 @@ tool.setConstituentaValues(sessionId, {
103
103
  const result = tool.evaluateConstituenta(sessionId, { constituentId: 3 });
104
104
 
105
105
  if (!result.success || result.status !== EvalStatus.HAS_DATA || JSON.stringify(result.value) !== '[0]') {
106
- throw new Error(`Expected Pr1(S1) to select the first coordinate; got ${JSON.stringify(result)}`);
106
+ throw new Error(`Ожидалось Pr1(S1) = первая координата; получено ${JSON.stringify(result)}`);
107
107
  }
108
108
  ```
109
109
 
110
- Use this pattern for tests that protect important definitions. Full kinship model: `../../examples/build-kinship-rsmodel.ts`. More notes: `../../docs/MODEL-TESTING.md`.
110
+ Подробнее: `../../docs/MODEL-TESTING.md`.
111
111
 
112
- ## Wrapper Client
112
+ ## Клиент обёртки
113
113
 
114
- Use the wrapper when the agent talks to a separate `rstool-wrapper` process.
114
+ Когда агент общается с отдельным процессом `rstool-wrapper`.
115
115
 
116
116
  ```ts
117
117
  import { CstType } from '@rsconcept/rstool';
@@ -135,36 +135,27 @@ console.log(diagnostics);
135
135
  await client.close();
136
136
  ```
137
137
 
138
- Manual stdio is one JSON request per line:
138
+ Ручной stdio один JSON-запрос на строку:
139
139
 
140
140
  ```jsonl
141
141
  { "id": "1", "method": "createSession", "params": {} }
142
142
  { "id": "2", "method": "addOrUpdateConstituenta", "params": { "sessionId": "...", "input": { "draft": { "id": 1, "alias": "X1", "cstType": "basic", "definitionFormal": "" } } } }
143
143
  ```
144
144
 
145
- ## Export / Import
145
+ ## Экспорт / импорт
146
146
 
147
147
  ```ts
148
148
  const payload = tool.exportSession(sessionId);
149
149
  const restored = tool.importSession(payload);
150
150
  ```
151
151
 
152
- Export includes session state and model values.
152
+ Экспорт включает состояние сессии и значения модели.
153
153
 
154
- To create files the user can upload to an existing Portal object:
154
+ Файлы для загрузки пользователем в существующий объект Portal:
155
155
 
156
156
  ```ts
157
157
  const schemaJson = tool.exportPortalSchema(sessionId);
158
158
  const modelJson = tool.exportPortalModel(sessionId);
159
159
  ```
160
160
 
161
- Use `schemaJson` on a schema page and `modelJson` on a model page via **Load from JSON**.
162
-
163
- ## Common mistakes
164
-
165
- - Wrong `cstType` in `analyzeExpression` → role-specific errors.
166
- - `term` with `X1×X1` for a relation → full Cartesian product, not relation typification.
167
- - `structure` with `Pr1(S1)` → wrong role; projections belong on `term` / `function`.
168
- - Same long `∃d1…∃dn` chain in many `D#` → define one central `D#` and use `Pr*` / `F#`.
169
- - `setConstituentaValue` on `term`, `axiom`, or `statement` → cannot set computed constituents directly.
170
- - Evaluation before base bindings → missing value, empty result, or evaluation failure.
161
+ `schemaJson` на странице схемы, `modelJson` на странице модели, через **Load from JSON**.
@@ -1,68 +1,122 @@
1
- # RS Language & rstool
1
+ # RSLang и rstool
2
2
 
3
- Compact entry guide for agents. Keep details in linked docs.
3
+ Краткий входной гайд для агентов. Детали в связанных документах.
4
4
 
5
- **RSLang** is a formal notation for conceptual schemas: concepts, relations, operations, assertions. Core ideas: membership `x∈y`, set-theoretic expressions, logical expressions, typification.
5
+ **RSLang** формальная нотация концептуальных схем: понятия, отношения, операции, утверждения. Основа: принадлежность `x∈y`, теоретико-множественные и логические выражения, типизация.
6
6
 
7
- **rstool** is the agent API for sessions, upserts, analysis, diagnostics, model values, evaluation, export/import.
7
+ **rstool** API агента для сессий, upsert, анализа, диагностик, значений модели, вычисления, экспорта/импорта.
8
8
 
9
- - Library: `@rsconcept/rstool`.
10
- - Analyzer: `@rsconcept/domain`.
11
- - Stdio wrapper: `npx rstool-wrapper`, JSON per line.
12
- - Node client: `RSToolWrapperClient`.
9
+ - Библиотека: `@rsconcept/rstool`.
10
+ - Анализатор: `@rsconcept/domain`.
11
+ - Stdio-обёртка: `npx rstool-wrapper`, JSON построчно.
12
+ - Node-клиент: `RSToolWrapperClient`.
13
13
 
14
- ## What to Read
14
+ ## Что читать
15
15
 
16
- Paths are relative to this file.
16
+ Пути относительно этого файла.
17
17
 
18
- - API, methods, stdio, error codes: [REFERENCE.md](REFERENCE.md).
19
- - Worked examples and pitfalls: [EXAMPLES.md](EXAMPLES.md).
20
- - Domain terms: [../../docs/DOMAIN.md](../../docs/DOMAIN.md).
21
- - Schema design rules: [../../docs/CONCEPTUAL-SCHEMA.md](../../docs/CONCEPTUAL-SCHEMA.md).
22
- - Constituents and validation: [../../docs/CONSTITUENTA.md](../../docs/CONSTITUENTA.md).
23
- - Syntax: [../../docs/SYNTAX.md](../../docs/SYNTAX.md).
24
- - Typification: [../../docs/TYPIFICATION.md](../../docs/TYPIFICATION.md).
25
- - Definition testing with small conceptual models: [../../docs/MODEL-TESTING.md](../../docs/MODEL-TESTING.md).
26
- - Diagnostics: [../../docs/DIAGNOSTICS.md](../../docs/DIAGNOSTICS.md).
27
- - Portal REST reads: [../../docs/PORTAL-API.md](../../docs/PORTAL-API.md).
28
- - Grammar pointers: [../../docs/GRAMMAR-REF.md](../../docs/GRAMMAR-REF.md).
18
+ - API, методы, stdio, коды ошибок: [REFERENCE.md](REFERENCE.md).
19
+ - Примеры: [EXAMPLES.md](EXAMPLES.md).
20
+ - Термины предметной области: [../../docs/DOMAIN.md](../../docs/DOMAIN.md).
21
+ - Концептуализация, создание схемы: [../../docs/CONCEPTUAL-SCHEMA.md](../../docs/CONCEPTUAL-SCHEMA.md).
22
+ - Конституенты и валидация: [../../docs/CONSTITUENTA.md](../../docs/CONSTITUENTA.md).
23
+ - Синтаксис: [../../docs/SYNTAX.md](../../docs/SYNTAX.md).
24
+ - Типизация: [../../docs/TYPIFICATION.md](../../docs/TYPIFICATION.md).
25
+ - Проверка определений на КМ: [../../docs/MODEL-TESTING.md](../../docs/MODEL-TESTING.md).
26
+ - Диагностики: [../../docs/DIAGNOSTICS.md](../../docs/DIAGNOSTICS.md).
27
+ - Грамматика: [../../docs/GRAMMAR-REF.md](../../docs/GRAMMAR-REF.md).
28
+ - REST Portal: [../../docs/PORTAL-API.md](../../docs/PORTAL-API.md).
29
29
 
30
- ## Workflow
30
+ ## Воркфлоу
31
31
 
32
- Use this when editing or checking schemas and models.
32
+ Все пошаговые сценарии собраны здесь. Справочные документы дают правила и детали.
33
33
 
34
- 1. `createSession`.
35
- 2. Develop schema - add constituents with proper type and attributes.
36
- 3. Add dependencies before dependents.
37
- 4. Use `analyzeExpression` before upsert when unsure.
38
- 5. Fix diagnostics by `from` / `to` range in `definitionFormal`.
39
- 6. When unsure about semantics, build a tiny conceptual model and evaluate test data.
34
+ ### Редактирование и проверка схемы
40
35
 
41
- - Set base/model values with `setConstituentaValue(s)`.
42
- - Evaluate with `evaluateExpression`, `evaluateConstituenta`, or `recalculateModel`.
36
+ Когда схема уже есть и нужны точечные правки, новые конституенты или проверка формул.
43
37
 
44
- 7. `commitStep` when the state is coherent.
45
- 8. Persist with `exportSession` / `importSession`.
46
- 9. For user-uploadable Portal files, use `exportPortalSchema` for schema JSON or `exportPortalModel` for model JSON.
38
+ 1. `createSession` (или продолжить существующую сессию).
39
+ 2. Развивай схему — добавляй конституенты с корректным `cstType` и атрибутами.
40
+ 3. Добавляй поставщиков раньше потребителей (см. [порядок объявления](#порядок-объявления-конституент)).
41
+ 4. Перед upsert при сомнении вызывай `analyzeExpression`.
42
+ 5. Исправляй диагностики по диапазону `from` / `to` в `definitionFormal` ([DIAGNOSTICS.md](../../docs/DIAGNOSTICS.md)).
43
+ 6. При сомнении в семантике собери маленькую КМ и проверь тестовые данные ([цикл КМ](#проверка-на-маленькой-км)).
44
+ 7. Задай базовые/модельные значения: `setConstituentaValue(s)`; вычисли: `evaluateExpression`, `evaluateConstituenta`, `recalculateModel`.
45
+ 8. `commitStep`, когда состояние согласовано.
46
+ 9. Сохрани: `exportSession` / `importSession`.
47
+ 10. Для загрузки в Portal: `exportPortalSchema` (схема) или `exportPortalModel` (модель).
47
48
 
48
- ## Diagnostics Loop
49
+ ### Концептуализация (КС из содержания источника)
49
50
 
50
- 1. Check `analysis.success`.
51
- 2. If false, read `analysis.diagnostics` or `listDiagnostics`.
52
- 3. Map `code` to a fix in `DIAGNOSTICS.md`.
53
- 4. Patch the reported `from` / `to` range.
54
- 5. Re-run only after changing input.
51
+ Когда нужно построить или существенно развить КС по тексту ПО, требованиям или предметному описанию. Правила редукции, слоёв и паттернов — [CONCEPTUAL-SCHEMA.md](../../docs/CONCEPTUAL-SCHEMA.md).
55
52
 
56
- ## Declaration Order
53
+ 1. Собери словарь: базовые понятия, ключевые отношения, сценарий синтеза.
54
+ 2. Добавь `X#`, `C#` с конвенциями из источника (не копируй дословно).
55
+ 3. Добавь базовые `S#`: трансформация, перевод, допускание, выбор, цели, субъекты.
56
+ 4. Проверь независимость базовых понятий — они не выводятся друг из друга.
57
+ 5. Добавь `A#` на структуры: `card`, покрытие `Pr1,2(S#)=…`, принадлежность выбора.
58
+ 6. Введи `F#` для типовых запросов.
59
+ 7. Производные понятия строй через `Pr*`, `Fi*`, `F#` от центрального `D#` и базовых `S#`.
60
+ 8. Перед каждым upsert — `analyzeExpression`; при ошибках — [цикл диагностик](#цикл-диагностик).
61
+ 9. Сомнительную семантику проверь на маленькой КМ ([цикл КМ](#проверка-на-маленькой-км), [MODEL-TESTING.md](../../docs/MODEL-TESTING.md)).
62
+ 10. Перед показом результата пройди [чеклист ревью КС](#ревью-концептуальной-схемы).
63
+
64
+ Дальше — обычное [редактирование и проверка](#редактирование-и-проверка-схемы): commit, export.
65
+
66
+ ### Цикл диагностик
67
+
68
+ Когда `analysis.success === false` или `listDiagnostics` не пуст. Коды и типичные ошибки — [DIAGNOSTICS.md](../../docs/DIAGNOSTICS.md).
69
+
70
+ 1. Запусти `analyzeExpression` (черновик без сохранения).
71
+ 2. Прочитай `code`, `from`, `to`, `params` в `analysis.diagnostics` или через `listDiagnostics`.
72
+ 3. Сопоставь `code` с исправлением в [DIAGNOSTICS.md](../../docs/DIAGNOSTICS.md).
73
+ 4. Исправь именно диапазон в `definitionFormal`.
74
+ 5. Не повторяй вызов без изменения ввода.
75
+ 6. После успеха — `addOrUpdateConstituenta`.
76
+
77
+ ### Проверка на маленькой КМ
78
+
79
+ Когда синтаксис верен, но смысл формулы неочевиден. Подробности и форма данных — [MODEL-TESTING.md](../../docs/MODEL-TESTING.md).
80
+
81
+ 1. Отдельная `createSession` или изолированная копия текущей сессии.
82
+ 2. Только нужные поставщики: `X#`, `C#`, `S#` и проверяемые `D#` / `F#` / `P#` / `A#`.
83
+ 3. `analyzeExpression` и `addOrUpdateConstituenta`.
84
+ 4. Значения базовых понятий: `setConstituentaValue` / `setConstituentaValues`.
85
+ 5. `evaluateExpression` или `evaluateConstituenta`; сравни с ожидаемым `value`.
86
+ 6. При нескольких зависимых определениях — `recalculateModel`.
87
+
88
+ Для регрессий вынеси проверку в скрипт или colocated `*.test.ts` (см. [MODEL-TESTING.md](../../docs/MODEL-TESTING.md)).
89
+
90
+ ### Порядок объявления конституент
57
91
 
58
92
  1. `basic`, `constant`.
59
- 2. Core structures and key concepts.
60
- 3. Derived constituents in topological order.
61
- 4. Axioms and statements after their references.
93
+ 2. Базовые структуры и ключевые понятия.
94
+ 3. Производные конституенты в топологическом порядке.
95
+ 4. Аксиомы и утверждения после всех ссылок.
96
+
97
+ Правила валидации по типам — [CONSTITUENTA.md](../../docs/CONSTITUENTA.md).
98
+
99
+ ## Чеклисты
100
+
101
+ ### Сессия и rstool
102
+
103
+ - [ ] Отслеживается `sessionId`.
104
+ - [ ] `cstType` соответствует роли конституенты.
105
+ - [ ] Поставщики добавлены раньше потребителей.
106
+
107
+ ### Перед показом, commit и export
108
+
109
+ - [ ] Схема проверена; ошибки исправлены.
110
+ - [ ] Диагностики обработаны до `commitStep` и экспорта.
111
+
112
+ ### Ревью концептуальной схемы
62
113
 
63
- ## Checklist
114
+ Перед завершением концептуализации или крупного изменения. Правила — [CONCEPTUAL-SCHEMA.md](../../docs/CONCEPTUAL-SCHEMA.md).
64
115
 
65
- - [ ] `sessionId` tracked.
66
- - [ ] `cstType` matches the role.
67
- - [ ] Check schema and fix errors before showing result.
68
- - [ ] Diagnostics handled before commit/export.
116
+ - [ ] Атрибутивная и родоструктурная экспликации не смешаны без явного запроса.
117
+ - [ ] Нет избыточной проверки принадлежности к собственной типизации (`x∈X1`, если `x` уже в `X1`).
118
+ - [ ] Базовые понятия независимы, введены необходимые по смысле аксиомы.
119
+ - [ ] Покрыты главные сущности, роли, отношения, утверждения.
120
+ - [ ] В текстовых определениях используются только понятия из схемы.
121
+ - [ ] Повторяющиеся части формальных определений вынесены в производные понятия `D#` и `F#`.
122
+ - [ ] Сомнительная семантика проверена на маленькой КМ при наличии тестовых данных.
@@ -1,39 +1,39 @@
1
- # RS language and rstool — reference
2
-
3
- ## rstool contract
4
-
5
- - Package: `@rsconcept/rstool`
6
- - Contract version: `1.4.0` (`CONTRACT_VERSION`)
7
- - Core class: `RSToolAgent`
8
- - Public imports: `@rsconcept/rstool` and `@rsconcept/rstool/wrapper`
9
-
10
- ### Methods
11
-
12
- | Method | Purpose |
13
- | ----------------------------------------------------------- | ------------------------------------------------------------------ |
14
- | `createSession(initial?)` | New in-memory session → `{ sessionId, contractVersion }` |
15
- | `addOrUpdateConstituenta(sessionId, { draft })` | Merge draft; analyze in session context → `{ state, diagnostics }` |
16
- | `analyzeExpression(sessionId, { expression, cstType })` | Parse/typecheck snippet without persisting a constituent |
17
- | `getFormState(sessionId)` | Clone of full session state |
18
- | `listDiagnostics(sessionId, filters?)` | Accumulated diagnostics; optional `constituentId` filter |
19
- | `commitStep(sessionId, message?)` | Record revision checkpoint |
20
- | `exportSession(sessionId)` | JSON string `{ contractVersion, state, diagnostics }` |
21
- | `exportPortalSchema(sessionId)` | Portal schema import JSON string using versioned schema shape |
22
- | `exportPortalModel(sessionId)` | Portal model import JSON string using versioned model values shape |
23
- | `importSession(payload)` | New session from export |
24
- | `setConstituentaValue(sessionId, { target, type?, value })` | Set one base binding or structured value → `SessionModelState` |
25
- | `setConstituentaValues(sessionId, { items })` | Batch set values → `SessionModelState` |
26
- | `clearConstituentaValues(sessionId, { items })` | Clear values by constituent id → `SessionModelState` |
27
- | `getModelState(sessionId)` | Clone of session interpretation state |
28
- | `evaluateExpression(sessionId, { expression, cstType })` | Evaluate snippet in session context → `EvaluationResult` |
29
- | `evaluateConstituenta(sessionId, { constituentId })` | Evaluate stored definition → `EvaluationResult` |
30
- | `recalculateModel(sessionId)` | Recalculate all inferrable constituents → `{ items[] }` |
1
+ # RSLang и rstool — справочник
2
+
3
+ ## Контракт rstool
4
+
5
+ - Пакет: `@rsconcept/rstool`
6
+ - Версия контракта: `1.4.0` (`CONTRACT_VERSION`)
7
+ - Основной класс: `RSToolAgent`
8
+ - Публичные импорты: `@rsconcept/rstool` и `@rsconcept/rstool/wrapper`
9
+
10
+ ### Методы
11
+
12
+ | Метод | Назначение |
13
+ | ----------------------------------------------------------- | ----------------------------------------------------------------------------- |
14
+ | `createSession(initial?)` | Новая in-memory сессия → `{ sessionId, contractVersion }` |
15
+ | `addOrUpdateConstituenta(sessionId, { draft })` | Слияние черновика; анализ в контексте сессии → `{ state, diagnostics }` |
16
+ | `analyzeExpression(sessionId, { expression, cstType })` | Разбор/типизация фрагмента без сохранения конституенты |
17
+ | `getFormState(sessionId)` | Клон полного состояния сессии |
18
+ | `listDiagnostics(sessionId, filters?)` | Накопленные диагностики; опциональный фильтр `constituentId` |
19
+ | `commitStep(sessionId, message?)` | Зафиксировать контрольную точку ревизии |
20
+ | `exportSession(sessionId)` | JSON-строка `{ contractVersion, state, diagnostics }` |
21
+ | `exportPortalSchema(sessionId)` | JSON импорта схемы Portal |
22
+ | `exportPortalModel(sessionId)` | JSON импорта модели Portal |
23
+ | `importSession(payload)` | Новая сессия из экспорта |
24
+ | `setConstituentaValue(sessionId, { target, type?, value })` | Одна привязка базового понятия или структурное значение → `SessionModelState` |
25
+ | `setConstituentaValues(sessionId, { items })` | Пакетная установка значений → `SessionModelState` |
26
+ | `clearConstituentaValues(sessionId, { items })` | Очистка значений по id конституент → `SessionModelState` |
27
+ | `getModelState(sessionId)` | Клон состояния интерпретации сессии |
28
+ | `evaluateExpression(sessionId, { expression, cstType })` | Вычисление фрагмента в контексте сессии → `EvaluationResult` |
29
+ | `evaluateConstituenta(sessionId, { constituentId })` | Вычисление сохранённого определения → `EvaluationResult` |
30
+ | `recalculateModel(sessionId)` | Пересчёт всех выводимых конституент → `{ items[] }` |
31
31
 
32
32
  ### `ConstituentaDraft`
33
33
 
34
34
  ```ts
35
35
  {
36
- id: number; // stable id within session
36
+ id: number; // стабильный id внутри сессии
37
37
  alias: string;
38
38
  cstType: CstType;
39
39
  definitionFormal: string;
@@ -43,27 +43,27 @@
43
43
  }
44
44
  ```
45
45
 
46
- Omitted text fields default to `''` in stored state.
46
+ Пропущенные текстовые поля в сохранённом состоянии по умолчанию `''`.
47
47
 
48
- ### `SessionState` metadata
48
+ ### Метаданные `SessionState`
49
49
 
50
- Set on `createSession(initial?)` or via `importSession`:
50
+ Задаются в `createSession(initial?)` или через `importSession`:
51
51
 
52
52
  ```ts
53
53
  {
54
- alias: string; // library item alias
55
- title: string; // display title
56
- comment: string; // developer notes
54
+ alias: string; // alias объекта библиотеки
55
+ title: string; // отображаемое название
56
+ comment: string; // заметки разработчика
57
57
  }
58
58
  ```
59
59
 
60
- All default to `''` when omitted.
60
+ При опускании все поля по умолчанию `''`.
61
61
 
62
- ### Model and evaluation types
62
+ ### Типы модели и вычисления
63
63
 
64
64
  ```ts
65
- type RSToolValue = number | RSToolValue[]; // runtime value
66
- type BasicBinding = Record<number, string>; // base-set element labels
65
+ type RSToolValue = number | RSToolValue[]; // значение во время выполнения
66
+ type BasicBinding = Record<number, string>; // подписи элементов базового множества
67
67
 
68
68
  interface SessionModelState {
69
69
  items: { id: number; type: string; value: RSToolValue | BasicBinding }[];
@@ -79,19 +79,19 @@ interface EvaluationResult {
79
79
  }
80
80
  ```
81
81
 
82
- Base/constant bindings use `type: "basic"` and `value: { "0": "label", … }`. Structured values use normalized typification as `type` and nested arrays for sets/tuples.
82
+ Привязки `basic`/`constant` используют `type: "basic"` и `value: { "0": "label", … }`. Структурные значения нормализованная типизация в `type` и вложенные массивы для множеств/кортежей.
83
83
 
84
- ### Stdio protocol
84
+ ### Протокол stdio
85
85
 
86
- Process: `npx rstool-wrapper`
86
+ Процесс: `npx rstool-wrapper`
87
87
 
88
- 1. **Ready** (no request): `{"id":null,"ok":true,"result":{"ready":true,"wrapper":"rstool-stdio","contractVersion":"1.4.0"}}`
89
- 2. **Request**: `{"id":"<unique>","method":"<name>","params":{...}}`
90
- 3. **Response**: `{"id":"<same>","ok":true,"result":...}` or `{"id":"...","ok":false,"error":{"code":"...","message":"..."}}`
88
+ 1. **Ready** (без запроса): `{"id":null,"ok":true,"result":{"ready":true,"wrapper":"rstool-stdio","contractVersion":"1.4.0"}}`
89
+ 2. **Запрос**: `{"id":"<unique>","method":"<name>","params":{...}}`
90
+ 3. **Ответ**: `{"id":"<same>","ok":true,"result":...}` или `{"id":"...","ok":false,"error":{"code":"...","message":"..."}}`
91
91
 
92
- Extra methods: `ping`, `methods`.
92
+ Дополнительные методы: `ping`, `methods`.
93
93
 
94
- Example chain:
94
+ Пример цепочки:
95
95
 
96
96
  ```json
97
97
  {"id":"1","method":"createSession","params":{}}
@@ -108,9 +108,9 @@ Example chain:
108
108
  {"id":"9","method":"evaluateConstituenta","params":{"sessionId":"…","input":{"constituentId":3}}}
109
109
  ```
110
110
 
111
- `RSToolWrapperClient`: spawns `rstool-wrapper` by default and implements `waitUntilReady()`, `call(method, params)`, `close()`.
111
+ `RSToolWrapperClient`: по умолчанию запускает `rstool-wrapper`; методы `waitUntilReady()`, `call(method, params)`, `close()`.
112
112
 
113
- ### Analysis result
113
+ ### Результат анализа
114
114
 
115
115
  ```ts
116
116
  interface AnalysisResult {
@@ -121,79 +121,77 @@ interface AnalysisResult {
121
121
  }
122
122
  ```
123
123
 
124
- ## RS language
124
+ ## RSLang
125
125
 
126
- Intro (help): language is FOL-based; set vs logic expression split; parameterized templates for term/predicate functions.
126
+ Кратко: язык на базе логики первого порядка; разделение множественных и логических выражений; параметризованные шаблоны для функций и предикатов.
127
127
 
128
- - **Typification**: structure type of an expression; grades include elements (`Xi`, `Ci`), `Z`, tuples `(H1×…×Hn)`, sets `ℬ(H)`, logic `Logic`, parameterized `Hr 🠔 [H1,…,Hi]`. On `structure` (`S#`), `definitionFormal` **is** the typification. On `term` (`D#`), typification is **inferred from** the definition.
128
+ - **Типизация**: структурный тип выражения; ступени включают элементы (`Xi`, `Ci`), `Z`, кортежи `(H1×…×Hn)`, множества `ℬ(H)`, логику `Logic`, параметризованные `Hr 🠔 [H1,…,Hi]`. У `structure` (`S#`) поле `definitionFormal` **задаёт** типизацию. У `term` (`D#`) типизация **выводится** из определения.
129
129
 
130
- ## Grammar tokens
130
+ ## Токены грамматики
131
131
 
132
- From `rslang.grammar`:
132
+ Из `rslang.grammar`:
133
133
 
134
- | Category | Tokens / forms |
135
- | ---------------------- | ----------------------------------------------------- |
136
- | Globals | `X`, `C`, `S`, `D`, `A`, `T` + digits (`Global` rule) |
137
- | Functions / predicates | `F<n>`, `P<n>` |
138
- | Radicals | `R<n>` |
139
- | Locals | `_a-zα-ω` + optional digits |
140
- | Logic | `¬` `∀` `∃` `⇔` `⇒` `∨` `&` |
141
- | Sets | `ℬ` `∪` `\` `∆` `∩` `×` `∈` `∉` `⊆` `⊂` … |
142
- | Ops | `Pr`, `pr`, `Fi`, `card`, `bool`, `debool`, `red` |
143
- | Literals | digits, `Z`, `∅` |
134
+ | Категория | Токены / формы |
135
+ | ------------------- | ------------------------------------------------------- |
136
+ | Глобальные | `X`, `C`, `S`, `D`, `A`, `T` + цифры (правило `Global`) |
137
+ | Функции / предикаты | `F<n>`, `P<n>` |
138
+ | Радикалы | `R<n>` |
139
+ | Локальные | `_a-zα-ω` + опциональные цифры |
140
+ | Логика | `¬` `∀` `∃` `⇔` `⇒` `∨` `&` |
141
+ | Множества | `ℬ` `∪` `\` `∆` `∩` `×` `∈` `∉` `⊆` `⊂` … |
142
+ | Операции | `Pr`, `pr`, `Fi`, `card`, `bool`, `debool`, `red` |
143
+ | Литералы | цифры, `Z`, `∅` |
144
144
 
145
- Full grammar pointers and precedence notes: `docs/GRAMMAR-REF.md`.
145
+ Полная грамматика и приоритеты: `docs/GRAMMAR-REF.md`.
146
146
 
147
- ## Help topic map (companion docs)
147
+ ## Документация
148
148
 
149
- Standalone agents should consult the bundled distilled docs (`docs/*.md` inside `@rsconcept/rstool`):
149
+ | Тема | Документ |
150
+ | ---------------------------------------- | ------------------------------------------------------------ |
151
+ | Идентификаторы, литералы | `docs/SYNTAX.md` § «Имена и литералы» |
152
+ | Ступени, `Logic`, параметризованные типы | `docs/TYPIFICATION.md` § «Ступени» |
153
+ | Логические выражения | `docs/SYNTAX.md` § «Логические выражения (LE)» |
154
+ | Операторы над множествами | `docs/SYNTAX.md` § «Теоретико-множественные выражения (STE)» |
155
+ | Целочисленная арифметика | `docs/SYNTAX.md` § «Арифметика» |
156
+ | Дополнительные и производные типизации | `docs/TYPIFICATION.md` § «Дополнительные типизации» |
157
+ | Кванторы | `docs/SYNTAX.md` § «Кванторы» |
158
+ | Параметризованные функции, шаблоны | `docs/SYNTAX.md` § «Параметризованные выражения» |
159
+ | Модель корректности / валидация | `docs/SYNTAX.md` § «Корректность» |
160
+ | Семантические тесты определений | `docs/MODEL-TESTING.md` |
161
+ | Словарь предметной области | `docs/DOMAIN.md` |
162
+ | Поля конституент и порядок | `docs/CONSTITUENTA.md` |
163
+ | REST API Portal | `docs/PORTAL-API.md` |
164
+ | Токены грамматики / приоритеты | `docs/GRAMMAR-REF.md` |
150
165
 
151
- | Topic | Bundled doc |
152
- | ------------------------------------ | ------------------------------------------ |
153
- | Identifiers, literals | `docs/SYNTAX.md` § _Identifier rules_ |
154
- | Grades, `Logic`, parameterized types | `docs/TYPIFICATION.md` |
155
- | Logical expressions | `docs/SYNTAX.md` § _Logical expressions_ |
156
- | Set operators | `docs/SYNTAX.md` § _Set-theoretic_ |
157
- | Integer arithmetic | `docs/SYNTAX.md` § _Arithmetic_ |
158
- | Structural / typification reshaping | `docs/TYPIFICATION.md` § _Forming/derived_ |
159
- | Quantifiers | `docs/SYNTAX.md` § _Quantifiers_ |
160
- | Parameterized functions, templates | `docs/SYNTAX.md` § _Parameterised_ |
161
- | Correctness / validation mindset | `docs/SYNTAX.md` § _Correctness model_ |
162
- | Definition semantic tests | `docs/MODEL-TESTING.md` |
163
- | Domain vocabulary | `docs/DOMAIN.md` |
164
- | Constituent fields and ordering | `docs/CONSTITUENTA.md` |
165
- | Portal REST API | `docs/PORTAL-API.md` |
166
- | Grammar tokens / precedence | `docs/GRAMMAR-REF.md` |
166
+ Воркфлоу и чеклисты — `skills/rstool-helper/GUIDE.md`.
167
167
 
168
- ## Error codes
168
+ ## Коды ошибок
169
169
 
170
- rstool re-exports `RSErrorCode.definitionNotAllowed` (`0x8862`) for base/constant violations.
170
+ Категории и исправления по коду: `docs/DIAGNOSTICS.md`.
171
171
 
172
- Categories and per-code fix guidance: `docs/DIAGNOSTICS.md`.
172
+ Категории:
173
173
 
174
- Categories:
174
+ - `0x84xx` — синтаксис / разбор
175
+ - `0x28xx` — предупреждения локальных объявлений
176
+ - `0x88xx` — семантика / типы
177
+ - `0x886x` — уровень конституент (пустая производная, запрещённое определение)
178
+ - `0x81xx` — вычисление (runtime; из `evaluateExpression` / `evaluateConstituenta`)
175
179
 
176
- - `0x84xx` syntax / parse
177
- - `0x28xx` — local declaration warnings
178
- - `0x88xx` — semantic / type
179
- - `0x886x` — constituent-level (empty derived, definition not allowed)
180
- - `0x81xx` — evaluation (runtime; returned by `evaluateExpression` / `evaluateConstituenta`)
180
+ ## Форма экспорта сессии
181
181
 
182
- ## Exported session shape
182
+ `exportSession(sessionId)` возвращает JSON-строку `{ contractVersion, state, diagnostics }`.
183
183
 
184
- `exportSession(sessionId)` returns a JSON string with `{ contractVersion, state, diagnostics }`.
184
+ - `state.alias`, `state.title`, `state.comment` метаданные объекта библиотеки для экспорта в Portal (`comment` JSON `description`).
185
+ - `state.items[]` — каждая конституента с `id`, `alias`, `cstType`, `definitionFormal`, опциональными текстовыми полями и вложенным результатом анализа.
186
+ - `state.model.items[]` — присутствует, если заданы значения интерпретации.
187
+ - `diagnostics[]` — накопленные диагностики со смещениями и кодами.
185
188
 
186
- - `state.alias`, `state.title`, `state.comment` — library-item metadata for Portal export (`comment` → JSON `description`).
187
- - `state.items[]` contains each constituent with `id`, `alias`, `cstType`, `definitionFormal`, optional text fields, and nested analysis output.
188
- - `state.model.items[]` is present when interpretation values have been set.
189
- - `diagnostics[]` contains accumulated diagnostics with offsets and codes.
189
+ ## JSON импорта Portal
190
190
 
191
- ## Portal import JSON
191
+ Для **Load from JSON** на существующей схеме или модели Portal:
192
192
 
193
- For **Load from JSON** on an existing Portal schema or model:
193
+ - `exportPortalSchema(sessionId)` файл схемы
194
+ - `exportPortalModel(sessionId)` — файл модели
194
195
 
195
- - `exportPortalSchema(sessionId)` schema file
196
- - `exportPortalModel(sessionId)` model file
197
-
198
- - Schema `items[]`: versioned constituent fields (`cst_type`, `definition_formal`, `term_raw`, …).
199
- - Model `items[]`: `{ id, type, value }` per binding.
196
+ - Схема `items[]`: поля конституент (`cst_type`, `definition_formal`, `term_raw`, …).
197
+ - Модель `items[]`: `{ id, type, value }` на каждую привязку.
@@ -18,9 +18,9 @@ Then continue with the canonical files below.
18
18
 
19
19
  ## Canonical files (read before rstool work)
20
20
 
21
- - **Start here** — workflow: `node_modules/@rsconcept/rstool/skills/rstool-helper/GUIDE.md`
22
- - API, stdio, contract: `node_modules/@rsconcept/rstool/skills/rstool-helper/REFERENCE.md`
23
- - Examples, pitfalls: `node_modules/@rsconcept/rstool/skills/rstool-helper/EXAMPLES.md`
21
+ - **Start here** — воркфлоу и чеклисты: `node_modules/@rsconcept/rstool/skills/rstool-helper/GUIDE.md`
22
+ - API, stdio, контракт: `node_modules/@rsconcept/rstool/skills/rstool-helper/REFERENCE.md`
23
+ - Примеры, типичные ошибки: `node_modules/@rsconcept/rstool/skills/rstool-helper/EXAMPLES.md`
24
24
  - Language / domain docs: `node_modules/@rsconcept/rstool/docs/*.md`
25
25
  - Install procedure: `node_modules/@rsconcept/rstool/skills/INSTALL.md`
26
26