@rsconcept/rstool 1.4.1 → 1.4.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.
@@ -8,7 +8,7 @@
8
8
  | :---------------------------------------------------------------------- | :---- | :--------------------------------------------------------------------------- |
9
9
  | Предметные объекты без числового смысла: люди, документы, ситуации | `X#` | Элементы задаются интерпретацией и различаются только как элементы множества |
10
10
  | Конечный именованный набор, где в формулах нужны порядок или арифметика | `C#` | Элементы интерпретируются в КМ, но поддерживают сравнение и арифметику языка |
11
- | Чистые целые: размеры, счётчики, индексы, `card`, рекурсия над числами | `Z` | Это встроенная ступень RSLang; отдельная конституента не нужна |
11
+ | Чистые целые: размеры, счётчики, индексы, `card`, рекурсия над числами | `Z` | Это встроенная ступень ЯРЭ; отдельная конституента не нужна |
12
12
 
13
13
  ```text
14
14
  Нужно неопределяемое понятие?
@@ -38,7 +38,7 @@
38
38
  2. Если формула «узнаёт» конкретные элементы базисного множества по способу, не заданному в схеме (скрытый порядок, кодирование атрибута константами) — вероятное нарушение переносимости или лишняя конституента.
39
39
  3. Перед сохранением сомнительной формулы — `analyzeExpression`.
40
40
 
41
- **Иллюстрация (родство):** при `X1 = {alice, bob, carol}` биективная замена на `{p1, p2, p3}` не меняет, кто чей родитель в `S1: ℬ(X1×X1)`, если пары переименованы согласованно. Формула `∀a,b∈X1 a < b` некорректна — порядок на людях в RSLang не задан.
41
+ **Иллюстрация (родство):** при `X1 = {alice, bob, carol}` биективная замена на `{p1, p2, p3}` не меняет, кто чей родитель в `S1: ℬ(X1×X1)`, если пары переименованы согласованно. Формула `∀a,b∈X1 a < b` некорректна — порядок на людях в ЯРЭ не задан.
42
42
 
43
43
  ## Детали по вариантам
44
44
 
@@ -1,7 +1,7 @@
1
1
  # Диагностика
2
2
 
3
3
  Читай, когда `analyzeExpression`, `applySchemaPatch`, `listDiagnostics` или `evaluate`
4
- вернули диагностику. Коды ошибок RSLang — `RSErrorCode` в `@rsconcept/domain`; коды схемы
4
+ вернули диагностику. Коды ошибок ЯРЭ — `RSErrorCode` в `@rsconcept/domain`; коды схемы
5
5
  и модели — `RSDiagnosticCode` в том же пакете (числовой формат совпадает).
6
6
 
7
7
  ## Формы диагностики
@@ -80,29 +80,29 @@
80
80
 
81
81
  ## Parser
82
82
 
83
- | Код | Имя | `params` | Исправление |
84
- | -------- | -------------------------- | ------------------------- | ------------------------------------------------------------------------------------- |
85
- | `0x8400` | `unknownSyntax` | — | Неопределённая синтаксическая ошибка: проверь операторы, скобки, идентификаторы. |
86
- | `0x8401` | `forbiddenCharacter` | `[character]` | Символ не входит в язык родов структур (напр. `^` для степени). Удали или замени его. |
87
- | `0x8409` | `bracketMismatch` | `[expected, actual]` | Закрой ожидаемой скобкой `expected` вместо `actual`. |
88
- | `0x840A` | `doubleParenthesis` | — | Убери лишнюю внешнюю пару `(( … ))`. |
89
- | `0x840B` | `missingOpenBracket` | `[bracket]` | Непарная закрывающая `bracket`: убери её или добавь открывающую. |
90
- | `0x840C` | `missingCloseBracket` | `[bracket]` | Непарная открывающая `bracket`: убери её или добавь закрывающую. |
91
- | `0x8415` | `expectedLocal` | — | Ожидалось имя локальной переменной. |
92
- | `0x8416` | `expectedType` | `[expectedClass, actual]` | Несоответствие класса выражения ожидаемому. |
93
- | `0x8417` | `invalidFilterSyntax` | — | Синтаксис `Fi`: `Fi1[D1](S1)`, `Fi1,2[D1,D2](S1)` или `Fi1,2[D3](S1)`. |
94
- | `0x8418` | `expectedFunctionBody` | — | Нужно тело функции после `[параметры]`. |
95
- | `0x8419` | `expectedExpressionBody` | — | Нужно теоретико-множественное тело функции (ТФ). |
96
- | `0x841A` | `expectedLogicBody` | — | Нужно логическое тело функции. |
97
- | `0x841B` | `expectedQuantifierBody` | — | Нужно логическое тело после `∀(∃)…∈домен`. |
98
- | `0x841C` | `expectedDeclarativeBody` | — | Допиши декларативное `D{…∈… \| …}`. |
99
- | `0x841D` | `expectedImperativeBody` | — | Допиши императивное `I{… \| …}`. |
100
- | `0x841E` | `expectedRecursiveBody` | — | Допиши рекурсивное `R{…:=… \| … \| …}`. |
101
- | `0x841F` | `expectedQuantifierDomain` | — | После переменной квантора нужны `∈` и домен. |
102
- | `0x8420` | `expectedRightOperand` | — | Нужен правый операнд после оператора. |
103
- | `0x8421` | `expectedUnaryOperand` | — | Нужно выражение после `¬`. |
104
- | `0x8422` | `globalFuncParenCall` | `[name]` | Вызов `F`/`P` только через `[…]`, не `(…)`. |
105
- | `0x8423` | `expectedArgument` | — | Нужен аргумент в списке `[…]` у F/P. |
83
+ | Код | Имя | `params` | Исправление |
84
+ | -------- | -------------------------- | ------------------------- | -------------------------------------------------------------------------------- |
85
+ | `0x8400` | `unknownSyntax` | — | Неопределённая синтаксическая ошибка: проверь операторы, скобки, идентификаторы. |
86
+ | `0x8401` | `forbiddenCharacter` | `[character]` | Символ не входит в ЯРЭ (напр. `^` для степени). Удали или замени его. |
87
+ | `0x8409` | `bracketMismatch` | `[expected, actual]` | Закрой ожидаемой скобкой `expected` вместо `actual`. |
88
+ | `0x840A` | `doubleParenthesis` | — | Убери лишнюю внешнюю пару `(( … ))`. |
89
+ | `0x840B` | `missingOpenBracket` | `[bracket]` | Непарная закрывающая `bracket`: убери её или добавь открывающую. |
90
+ | `0x840C` | `missingCloseBracket` | `[bracket]` | Непарная открывающая `bracket`: убери её или добавь закрывающую. |
91
+ | `0x8415` | `expectedLocal` | — | Ожидалось имя локальной переменной. |
92
+ | `0x8416` | `expectedType` | `[expectedClass, actual]` | Несоответствие класса выражения ожидаемому. |
93
+ | `0x8417` | `invalidFilterSyntax` | — | Синтаксис `Fi`: `Fi1[D1](S1)`, `Fi1,2[D1,D2](S1)` или `Fi1,2[D3](S1)`. |
94
+ | `0x8418` | `expectedFunctionBody` | — | Нужно тело функции после `[параметры]`. |
95
+ | `0x8419` | `expectedExpressionBody` | — | Нужно теоретико-множественное тело функции (ТФ). |
96
+ | `0x841A` | `expectedLogicBody` | — | Нужно логическое тело функции. |
97
+ | `0x841B` | `expectedQuantifierBody` | — | Нужно логическое тело после `∀(∃)…∈домен`. |
98
+ | `0x841C` | `expectedDeclarativeBody` | — | Допиши декларативное `D{…∈… \| …}`. |
99
+ | `0x841D` | `expectedImperativeBody` | — | Допиши императивное `I{… \| …}`. |
100
+ | `0x841E` | `expectedRecursiveBody` | — | Допиши рекурсивное `R{…:=… \| … \| …}`. |
101
+ | `0x841F` | `expectedQuantifierDomain` | — | После переменной квантора нужны `∈` и домен. |
102
+ | `0x8420` | `expectedRightOperand` | — | Нужен правый операнд после оператора. |
103
+ | `0x8421` | `expectedUnaryOperand` | — | Нужно выражение после `¬`. |
104
+ | `0x8422` | `globalFuncParenCall` | `[name]` | Вызов `F`/`P` только через `[…]`, не `(…)`. |
105
+ | `0x8423` | `expectedArgument` | — | Нужен аргумент в списке `[…]` у F/P. |
106
106
 
107
107
  ## Предупреждения
108
108
 
package/docs/DOMAIN.md CHANGED
@@ -8,19 +8,19 @@
8
8
  - **Концептуальная схема (`КС`)** — система понятий, утверждений и связей между ними.
9
9
  - **Концептуальная модель (`КМ`)** — КС плюс интерпретация ее понятий на конечных данных.
10
10
  - **Операционная схема синтеза (`ОСС`)** — граф загрузок и синтезов КС.
11
- - **Родоструктурная экспликация (`RSLang`)** — формальный язык для понятий, отношений, операций и утверждений.
11
+ - **ЯРЭ** (язык родоструктурной экспликации) — формальный язык для понятий, отношений, операций и утверждений.
12
12
  - **Типизация / ступень** — структура значений выражения: элемент, целое, кортеж, множество, `Logic`.
13
13
  - **Граф термов** — зависимости: конституента ссылается на другую в формальном определении.
14
14
 
15
15
  ## Классификация понятий КС
16
16
 
17
17
  - **Неопределяемое понятие** — конституента, вводимая конвенцией (и при необходимости аксиомами), а не формальным определением. В родоструктурной экспликации: `X#`, `C#`, `S#`. Смысл задают `convention`, интерпретация и аксиомы.
18
- - **Производное понятие** — конституента с формальным определением на RSLang: `D#`, `F#`, `P#` и связанные выводимые конструкции. Значение получают из определения при заданной интерпретации неопределяемых понятий.
18
+ - **Производное понятие** — конституента с формальным определением на ЯРЭ: `D#`, `F#`, `P#` и связанные выводимые конструкции. Значение получают из определения при заданной интерпретации неопределяемых понятий.
19
19
  - **Ядро КС** — неопределяемые понятия, аксиомы и производные понятия, необходимые для их формулировки.
20
20
  - **Тело КС** — остальные конституенты схемы, не входящие в ядро.
21
- - **Конвенция** — текстовое соглашение о том, как неопределяемое понятие соотносится с сущностями предметной области. В данных схемы хранится в поле `convention` конституенты. Конвенция не заменяет формальное определение и не проходит формальную проверку RSLang. Она фиксирует предметный смысл, который нельзя вывести из формулы: что именно считается элементом множества, как читать компоненты кортежа, какой порядок в паре отношения, какие константы или операции подразумеваются. В конвенции используется предметный язык и термины, которые могут быть не выражены в концептуальной схеме.
21
+ - **Конвенция** — текстовое соглашение о том, как неопределяемое понятие соотносится с сущностями предметной области. В данных схемы хранится в поле `convention` конституенты. Конвенция не заменяет формальное определение и не проходит формальную проверку ЯРЭ. Она фиксирует предметный смысл, который нельзя вывести из формулы: что именно считается элементом множества, как читать компоненты кортежа, какой порядок в паре отношения, какие константы или операции подразумеваются. В конвенции используется предметный язык и термины, которые могут быть не выражены в концептуальной схеме.
22
22
  - **Интерпретация** — соотнесение понятий КС с сущностями предметной области. В концептуальной модели задаётся значениями неопределяемых конституент и вычислением производных.
23
- - **Биективная переносимость** — независимость значения формального определения от биективной замены интерпретаций неопределяемых понятий. Для `X#` опирается на несравнимость элементов; анализатор RSLang отсекает формулы, нарушающие переносимость.
23
+ - **Биективная переносимость** — независимость значения формального определения от биективной замены интерпретаций неопределяемых понятий. Для `X#` опирается на несравнимость элементов; анализатор ЯРЭ отсекает формулы, нарушающие переносимость.
24
24
 
25
25
  ## Конституенты
26
26
 
@@ -38,7 +38,7 @@
38
38
  | `A#` | **Аксиома**: логическое требование к модели |
39
39
  | `T#` | **Высказывание**: логическое утверждение о модели |
40
40
 
41
- `Z` — встроенная ступень целых в RSLang, **не конституента**. Для выбора между `X#`, `C#` и `Z` — [BASE-SELECTION.md](BASE-SELECTION.md).
41
+ `Z` — встроенная ступень целых в ЯРЭ, **не конституента**. Для выбора между `X#`, `C#` и `Z` — [BASE-SELECTION.md](BASE-SELECTION.md).
42
42
 
43
43
  `R#` — **радикал**, шаблонная ступень в доменах параметров `F#` / `P#`. Это тоже **не конституента**: в схеме нет записи с `alias` `R1`, `R2`, … и добавлять её не нужно ([SYNTAX.md](SYNTAX.md), раздел «Радикалы»).
44
44
 
@@ -202,7 +202,7 @@ curl.exe -s "https://api.portal.acconcept.ru/api/rsforms/856/details"
202
202
  | `crucial` | обычно не переносить | UI/Portal-флаг |
203
203
  | `value_is_property` | обычно не переносить | Переопределение класса интерпретируемости |
204
204
 
205
- `inheritance`, `attribution`, `oss`, `models`, `versions`, `editors` полезны для контекста Portal, но не нужны для базовой проверки RSLang в `rstool`.
205
+ `inheritance`, `attribution`, `oss`, `models`, `versions`, `editors` полезны для контекста Portal, но не нужны для базовой проверки ЯРЭ в `rstool`.
206
206
 
207
207
  ## Как перенести КС в rstool
208
208
 
@@ -265,7 +265,7 @@ tool.applySchemaPatch(
265
265
  **до** следующего шага пайплайна (например вызова `npx tsx`), скрипт оборвётся и артефакт
266
266
  не обновится.
267
267
 
268
- - **Запись JSON** — всегда UTF-8; для RSLang-символов в формулах не экранируй Unicode в JSON:
268
+ - **Запись JSON** — всегда UTF-8; для символов ЯРЭ в формулах не экранируй Unicode в JSON:
269
269
 
270
270
  ```python
271
271
  path.write_text(json.dumps(payload, ensure_ascii=False, indent=2), encoding='utf-8')
package/docs/README.md CHANGED
@@ -10,7 +10,7 @@
10
10
  - **CONCEPTUAL-SCHEMA.md** — проектирование и ревью концептуальных схем.
11
11
  - **CONSTITUENTA.md** — структура и правила конституент.
12
12
  - **BASE-SELECTION.md** — выбор основания: `X#`, `C#` или `Z`.
13
- - **SYNTAX.md** — синтаксис RSLang: операторы, генераторы `D{}`/`I{}`/`R{}`, кванторы, `F#`/`P#`.
13
+ - **SYNTAX.md** — синтаксис ЯРЭ: операторы, генераторы `D{}`/`I{}`/`R{}`, кванторы, `F#`/`P#`.
14
14
  - **TYPIFICATION.md** — типизация (`AnalysisResult.type`, `valueClass`).
15
15
  - **MODEL-TESTING.md** — проверка семантики определений на маленьких концептуальных моделях.
16
16
  - **DIAGNOSTICS.md** — диагностики анализа и способы исправления ошибок.
package/docs/SYNTAX.md CHANGED
@@ -1,4 +1,4 @@
1
- # Синтаксис RSLang
1
+ # Синтаксис ЯРЭ
2
2
 
3
3
  Единая справка для агента: читай при построении или исправлении `definitionFormal`. Типизация — `TYPIFICATION.md`; ошибки — `DIAGNOSTICS.md`.
4
4
 
@@ -2,6 +2,8 @@
2
2
 
3
3
  Полные исполняемые сценарии поверх `RSToolWrapperClient` (stdio-обёртка) и готовые JSON-сессии для импорта. Короткие фрагменты кода для агентов — в [`../skills/rstool-helper/EXAMPLES.md`](../skills/rstool-helper/EXAMPLES.md); воркфлоу — [`../skills/rstool-helper/GUIDE.md`](../skills/rstool-helper/GUIDE.md).
4
4
 
5
+ **Агентам:** не добавляйте сюда разовые `build-*.ts` и папки по текущей задаче пользователя. Артефакты и скрипты — вне `rsconcept/rstool/` (см. «Границы правок» в GUIDE). В `examples/` — только сопровождаемые демо пакета.
6
+
5
7
  ## Как запускать
6
8
 
7
9
  После `npm install @rsconcept/rstool` (нужен `tsx` или аналог):
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rsconcept/rstool",
3
- "version": "1.4.1",
3
+ "version": "1.4.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.",
5
5
  "license": "MIT",
6
6
  "author": "IRBorisov",
@@ -1,4 +1,4 @@
1
- # RSLang и rstool — примеры (контракт 2.1)
1
+ # ЯРЭ и rstool — примеры
2
2
 
3
3
  ## Схема: batch patch
4
4
 
@@ -1,8 +1,8 @@
1
- # RSLang и rstool
1
+ # ЯРЭ и rstool
2
2
 
3
3
  Краткий входной гайд для агентов. Детали — в связанных документах.
4
4
 
5
- **RSLang** — формальная нотация концептуальных схем: понятия, отношения, операции, утверждения. Основа: принадлежность `x∈y`, теоретико-множественные и логические выражения, типизация.
5
+ **ЯРЭ** (язык родоструктурной экспликации) — формальная нотация концептуальных схем: понятия, отношения, операции, утверждения. Основа: принадлежность `x∈y`, теоретико-множественные и логические выражения, типизация.
6
6
 
7
7
  **rstool** — API агента для сессий, редактирования схемы, анализа, диагностик, значений модели, вычисления, экспорта/импорта.
8
8
 
@@ -20,6 +20,27 @@
20
20
  - Модель: `setModelValues`, `evaluate`, `recalculateModel`.
21
21
  - Перед сохранением сомнительной формулы — `analyzeExpression`.
22
22
 
23
+ ## Границы правок: не трогай пакет rstool без запроса
24
+
25
+ Задача по КС, Portal или источнику пользователя **не означает** правку дерева `rsconcept/rstool/`.
26
+ Пакет — библиотека и справочник; каталог `examples/` — **штатные** демо пакета, а не место для разовых скриптов агента.
27
+
28
+ Правки в rstool уместны только если пользователь **явно** просит, например:
29
+
30
+ - доработать API, stdio, контракт, тесты rstool;
31
+ - добавить **общий** пример в пакет;
32
+ - обновить skill/docs rstool (в т.ч. это руководство).
33
+
34
+ ### Как запускать rstool, не кладя скрипт в пакет
35
+
36
+ Из корня workspace Portal (после `pnpm install` и сборки `@rsconcept/domain`):
37
+
38
+ ```bash
39
+ pnpm --filter @rsconcept/rstool exec tsx path/to/your/build-schema.ts
40
+ ```
41
+
42
+ В скрипте импортируй API пакета (`@rsconcept/rstool` или относительный путь к `rsconcept/rstool/src` только если скрипт лежит вне пакета и это осознанный выбор). Либо используй stdio/MCP без отдельного файла.
43
+
23
44
  ## Что читать
24
45
 
25
46
  Пути — относительно этого файла.
@@ -30,7 +51,7 @@
30
51
  - **`X#` / `C#` / `Z`:** [../../docs/BASE-SELECTION.md](../../docs/BASE-SELECTION.md) — когда какое основание вводить.
31
52
  - Концептуализация, создание схемы: [../../docs/CONCEPTUAL-SCHEMA.md](../../docs/CONCEPTUAL-SCHEMA.md).
32
53
  - Конституенты и валидация: [../../docs/CONSTITUENTA.md](../../docs/CONSTITUENTA.md).
33
- - Синтаксис родов структур: [../../docs/SYNTAX.md](../../docs/SYNTAX.md).
54
+ - Синтаксис ЯРЭ: [../../docs/SYNTAX.md](../../docs/SYNTAX.md).
34
55
  - Типизация: [../../docs/TYPIFICATION.md](../../docs/TYPIFICATION.md).
35
56
  - Проверка определений на КМ: [../../docs/MODEL-TESTING.md](../../docs/MODEL-TESTING.md).
36
57
  - Диагностики: [../../docs/DIAGNOSTICS.md](../../docs/DIAGNOSTICS.md).
@@ -145,7 +166,7 @@ kind `auto` (default) определит `portal-details` или `portal-schema`
145
166
  | `importData` | импорт данных |
146
167
  | session, `sessionId` | сессия |
147
168
 
148
- Имена конституент (`X1`, `S2`, `D3`) и формулы RSLang — часть схемы, их приводи как есть; лучше вместе с термином: «терм `D3` (родитель)». Названия методов упоминай, только если пользователь спрашивает про rstool как инструмент.
169
+ Имена конституент (`X1`, `S2`, `D3`) и формулы ЯРЭ — часть схемы, их приводи как есть; лучше вместе с термином: «терм `D3` (родитель)». Названия методов упоминай, только если пользователь спрашивает про rstool как инструмент.
149
170
 
150
171
  Словарь выше — про поля rstool. Для **понятий схемы** каноничный источник — [DOMAIN.md](../../docs/DOMAIN.md).
151
172
 
@@ -1,4 +1,4 @@
1
- # RSLang и rstool — справочник
1
+ # ЯРЭ и rstool — справочник
2
2
 
3
3
  ## Контракт rstool
4
4
 
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: rstool-helper
3
3
  description: >-
4
- RSLang, формальные определения и проектирование концептуальных схем для агентов. Читай GUIDE и docs из node_modules.
4
+ ЯРЭ (язык родоструктурной экспликации), формальные определения и проектирование концептуальных схем для агентов. Читай GUIDE и docs из node_modules.
5
5
  ---
6
6
 
7
7
  # rstool-helper
@@ -26,6 +26,10 @@ description: >-
26
26
 
27
27
  Перед началом задачи rstool всегда открывай **GUIDE.md**, затем по необходимости **REFERENCE.md** / **EXAMPLES.md** / нужные `docs/*.md`.
28
28
 
29
+ ## Не правь пакет rstool без запроса
30
+
31
+ Разовые скрипты и JSON для Portal — вне дерева пакета (каталог задачи, `.tmp/`, путь пользователя). См. **«Границы правок»** в GUIDE.md.
32
+
29
33
  ## Язык ответа пользователю
30
34
 
31
35
  В тексте для пользователя используй термины предметной области («формальное определение», «конституента», «диагностики»), а не английские имена полей и методов API (`definitionFormal`, `applySchemaPatch`). Идентификаторы API — только в коде, patch-ах и JSON. Словарь API → текст: раздел «Язык ответа» в GUIDE.md. Термины КС (базовые понятия, базисное множество, ядро) — только из `docs/DOMAIN.md`, раздел **«Термины: не путать»**.