@rsconcept/rstool 1.1.0 → 1.2.0

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.
@@ -30,9 +30,9 @@
30
30
 
31
31
  ## Базовые понятия
32
32
 
33
- `X#`, `C#`, и `S#` — это базовые понятия, их нельзя строить одно из другого и включать друг в друга как элементы или подмножества.
33
+ `X#`, `C#`, и `S#` — это **базовые понятия** (см. [DOMAIN.md](DOMAIN.md)); их нельзя строить одно из другого и включать друг в друга как элементы или подмножества.
34
34
  Если такое возникает — значит есть скрытое отношение, его нужно явно оформить отдельной производной конституентой.
35
- Если базисные множества пересекаются по интерпретации или набор констант показывает какой-то атрибут — отсутствует нужное отношение, его надо ввести.
35
+ Если интерпретации разных **базисных множеств** `X#` пересекаются или набор констант `C#` показывает атрибут, который должен быть отношением — отсутствует нужное отношение; введи `S#` или производное `D#` / `F#` / `P#`.
36
36
 
37
37
  Не вводи `S#` для отношения, которое предметно зависит от уже заданных структур и должно вычисляться из них. Такое отношение оформляй как `D#`, `F#` или `P#`. Если нужная операция не выражается текущим синтаксисом, фиксируй это как ограничение языка или модели, а не подменяй производное отношение новой независимой структурой.
38
38
 
@@ -24,7 +24,7 @@
24
24
  Класс выводится по битовым маскам кода (порядок проверки важен — см. `inferErrorClass`):
25
25
 
26
26
  | Маска | Класс | Префикс `getRSErrorPrefix` |
27
- | :------- | :--------- | :------------------------- |
27
+ | -------- | ---------- | -------------------------- |
28
28
  | `0x0100` | EVALUATION | `E` + hex |
29
29
  | `0x0200` | LEXER | `L` + hex |
30
30
  | `0x0400` | PARSER | `P` + hex |
@@ -38,7 +38,7 @@
38
38
  ## Parser
39
39
 
40
40
  | Код | Имя | `params` | Исправление |
41
- | :------- | :------------------------- | :------------------------ | :------------------------------------------------------------------------------------ |
41
+ | -------- | -------------------------- | ------------------------- | ------------------------------------------------------------------------------------- |
42
42
  | `0x8400` | `unknownSyntax` | — | Неопределённая синтаксическая ошибка: проверь операторы, скобки, идентификаторы. |
43
43
  | `0x8401` | `forbiddenCharacter` | `[character]` | Символ не входит в язык родов структур (напр. `^` для степени). Удали или замени его. |
44
44
  | `0x8409` | `bracketMismatch` | `[expected, actual]` | Закрой ожидаемой скобкой `expected` вместо `actual`. |
@@ -52,9 +52,9 @@
52
52
  | `0x8419` | `expectedExpressionBody` | — | Нужно теоретико-множественное тело функции (ТФ). |
53
53
  | `0x841A` | `expectedLogicBody` | — | Нужно логическое тело функции. |
54
54
  | `0x841B` | `expectedQuantifierBody` | — | Нужно логическое тело после `∀(∃)…∈домен`. |
55
- | `0x841C` | `expectedDeclarativeBody` | — | Допиши декларативное `D{…∈… \| …}`. |
56
- | `0x841D` | `expectedImperativeBody` | — | Допиши императивное `I{… \| …}`. |
57
- | `0x841E` | `expectedRecursiveBody` | — | Допиши рекурсивное `R{…:=… \| … \| …}`. |
55
+ | `0x841C` | `expectedDeclarativeBody` | — | Допиши декларативное `D{…∈… | …}`. |
56
+ | `0x841D` | `expectedImperativeBody` | — | Допиши императивное `I{… | …}`. |
57
+ | `0x841E` | `expectedRecursiveBody` | — | Допиши рекурсивное `R{…:=… | … | …}`. |
58
58
  | `0x841F` | `expectedQuantifierDomain` | — | После переменной квантора нужны `∈` и домен. |
59
59
  | `0x8420` | `expectedRightOperand` | — | Нужен правый операнд после оператора. |
60
60
  | `0x8421` | `expectedUnaryOperand` | — | Нужно выражение после `¬`. |
@@ -64,13 +64,13 @@
64
64
  ## Предупреждения
65
65
 
66
66
  | Код | Имя | `params` | Исправление |
67
- | :------- | :------------- | :------- | :--------------------------------- |
67
+ | -------- | -------------- | -------- | ---------------------------------- |
68
68
  | `0x2802` | `localNotUsed` | `[name]` | Переменная `name` не используется. |
69
69
 
70
70
  ## Локальные переменные и область видимости
71
71
 
72
72
  | Код | Имя | `params` | Исправление |
73
- | :------- | :--------------------------- | :--------------- | :-------------------------------------------------------------------------------------------- |
73
+ | -------- | ---------------------------- | ---------------- | --------------------------------------------------------------------------------------------- |
74
74
  | `0x8801` | `localUndeclared` | `[name]` | Свяжи `name` квантором или объяви параметром. |
75
75
  | `0x8802` | `localShadowing` | `[name]` | Переименуй внутреннюю переменную `name`. |
76
76
  | `0x8803` | `localDoubleDeclare` | `[name]` | Идентификатор `name` уже объявлен в выражении — переименуй одну из переменных. |
@@ -81,7 +81,7 @@
81
81
  ## Типизация и структура
82
82
 
83
83
  | Код | Имя | `params` | Исправление |
84
- | :------- | :--------------------------------- | :--------------------------------- | :--------------------------------------------------------------------------------------------------------------------------- |
84
+ | -------- | ---------------------------------- | ---------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
85
85
  | `0x880A` | `typesNotEqual` | `[a, b, operator]` | Операнды `operator` должны иметь равный тип (`a` ≠ `b`). |
86
86
  | `0x8825` | `typesNotCompatible` | `[a, b, operator]` | Типы `a` и `b` несовместимы для `operator`. |
87
87
  | `0x8804` | `globalNotTyped` | `[name]` | Поставщик `name` не типизирован: добавь и проанализируй его раньше. |
@@ -115,7 +115,7 @@
115
115
  ## Фильтр `Fi`
116
116
 
117
117
  | Код | Имя | `params` | Исправление |
118
- | :------- | :---------------------------- | :----------------------------------- | :------------------------------------------------------------------------------------ |
118
+ | -------- | ----------------------------- | ------------------------------------ | ------------------------------------------------------------------------------------- |
119
119
  | `0x8822` | `invalidFilterArgumentType` | `[operator, actual, expected]` | Аргумент `Fi` имеет тип `actual`, ожидался `expected` (обычно `ℬ(…)`). |
120
120
  | `0x8823` | `invalidFilterArity` | `[indexCount, paramCount, operator]` | Число индексов `indexCount` ≠ числу параметров `paramCount` у `operator`. |
121
121
  | `0x882B` | `invalidFilterParameterType` | `[param, expected, operator]` | Тип параметра `param` не совпадает с компонентом аргумента `expected` для `operator`. |
@@ -125,7 +125,7 @@
125
125
  ## Значение и схема
126
126
 
127
127
  | Код | Имя | `params` | Исправление |
128
- | :------- | :--------------------- | :----------------- | :-------------------------------------------------------------------------------------------------------- |
128
+ | -------- | ---------------------- | ------------------ | --------------------------------------------------------------------------------------------------------- |
129
129
  | `0x8840` | `globalNoValue` | `[name]` | Идентификатор `name` невычислим в модели. |
130
130
  | `0x8841` | `invalidPropertyUsage` | — | `Property` - множество использовано как вычислимое значение. |
131
131
  | `0x8861` | `cstEmptyDerived` | — | У выводимой конституенты пустая формула. |
@@ -134,7 +134,7 @@
134
134
  ## Вычисление КМ
135
135
 
136
136
  | Код | Имя | `params` | Исправление |
137
- | :------- | :------------------------ | :----------------- | :--------------------------------------------------------------------- |
137
+ | -------- | ------------------------- | ------------------ | ---------------------------------------------------------------------- |
138
138
  | `0x8100` | `calcUnknownError` | — | Непредвиденная ошибка вычисления. |
139
139
  | `0x8101` | `setOverflow` | `[limit]` | Превышен предел числа элементов `limit`: упрости выражение или данные. |
140
140
  | `0x8102` | `booleanBaseLimit` | `[limit]` | Превышен предел базы степенного множества `limit`. |
package/docs/DOMAIN.md CHANGED
@@ -18,6 +18,18 @@
18
18
  - **Производное понятие** — конституента с формальным определением на RSLang: `D#`, `F#`, `P#` и связанные выводимые конструкции. Значение получают из определения при заданной интерпретации базовых понятий.
19
19
  - **Ядро КС** — базовые понятия, аксиомы и производные понятия, необходимые для их формулировки.
20
20
  - **Тело КС** — остальные конституенты схемы, не входящие в ядро.
21
+
22
+ ### Термины: не путать (для агентов)
23
+
24
+ В ответах пользователю и в конвенциях КС используй только термины из этого файла. Не вводи собственные ярлыки («базис», «базисный слой», «каркас схемы») — они не закреплены в Portal и размывают различия ниже.
25
+
26
+ | Не используй | Используй | Почему |
27
+ | :------------------------------------------------------ | :----------------------------------------------------------------------------------- | :---------------------------------------------- |
28
+ | «базис», «базисный слой», «первый слой» (без уточнения) | **неопределяемые понятия** — `X#`, `C#`, `S#` | Общий термин для всего неопределяемого слоя |
29
+ | «базис» / «базисное» про `C#` или `S#` | **константное множество** (`C#`), **родовая структура** (`S#`) | **Базисное множество** — только про `X#` |
30
+ | «базисные множества» как синоним базовых понятий | **базисные множества** — только несколько `X#`; для всего слоя — **базовые понятия** | `C#` и `S#` базисными множествами не называются |
31
+ | «ядро» = «базовые понятия» | **ядро КС** — базовые понятия плюс аксиомы и производные, нужные для аксиом | Ядро шире, чем только `X#` / `C#` / `S#` |
32
+
21
33
  - **Конвенция** — текстовое соглашение о том, как неопределяемое понятие соотносится с сущностями предметной области. В данных схемы хранится в поле `convention` конституенты. Конвенция не заменяет формальное определение и не проходит формальную проверку RSLang. Она фиксирует предметный смысл, который нельзя вывести из формулы: что именно считается элементом множества, как читать компоненты кортежа, какой порядок в паре отношения, какие константы или операции подразумеваются. В конвенции используется предметный язык и термины, которые могут быть не выражены в концептуальной схеме.
22
34
  - **Интерпретация** — соотнесение понятий КС с сущностями предметной области. В концептуальной модели задаётся значениями неопределяемых конституент и вычислением производных.
23
35
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rsconcept/rstool",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
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",
@@ -51,7 +51,7 @@
51
51
  "LICENSE"
52
52
  ],
53
53
  "dependencies": {
54
- "@rsconcept/domain": "1.7.7"
54
+ "@rsconcept/domain": "1.8.1"
55
55
  },
56
56
  "devDependencies": {
57
57
  "@types/node": "^26.1.0",
@@ -123,11 +123,47 @@ auto определит `portal-details` или `portal-schema`. Явный kind
123
123
 
124
124
  - что изменено в схеме или модели;
125
125
  - есть ли активные диагностики;
126
- - какой экспорт получен: session / Portal schema / Portal model;
127
- - какие проверки выполнены: analyze / evaluate / recalculate / tests.
126
+ - какой экспорт получен: сессия / схема для Portal / модель для Portal;
127
+ - какие проверки выполнены: анализ выражений / вычисление / пересчёт модели / тесты.
128
128
 
129
129
  Не вставляй большой JSON в чат без запроса пользователя.
130
130
 
131
+ ### Язык ответа
132
+
133
+ С пользователем говори на языке предметной области, а не контракта API. Английские идентификаторы (`definitionFormal`, `applySchemaPatch`, `cstType`...) уместны только в коде, patch-ах, JSON и при обсуждении самого API. В обычном тексте заменяй их терминами (полный словарь — [DOMAIN.md](../../docs/DOMAIN.md)):
134
+
135
+ | В API | В тексте ответа |
136
+ | :-------------------------------- | :---------------------------------- |
137
+ | `alias` | имя конституенты |
138
+ | `cstType` | тип конституенты |
139
+ | `definitionFormal` | формальное определение (формула) |
140
+ | `term` | термин |
141
+ | `definitionText` | текстовое определение |
142
+ | `convention` | конвенция |
143
+ | `comment` | комментарий |
144
+ | `applySchemaPatch` | правка схемы |
145
+ | `analyzeExpression` | проверка / анализ выражения |
146
+ | `listDiagnostics`, `diagnostics` | диагностики |
147
+ | `setModelValues`, `getModelState` | интерпретация, значения модели |
148
+ | `evaluate`, `recalculateModel` | вычисление, пересчёт модели |
149
+ | `commitStep`, `commitMessage` | фиксация шага (ревизия) |
150
+ | `exportSession` / `exportPortal` | экспорт сессии / экспорт для Portal |
151
+ | `importData` | импорт данных |
152
+ | session, `sessionId` | сессия |
153
+
154
+ Имена конституент (`X1`, `S2`, `D3`) и формулы RSLang — часть схемы, их приводи как есть; лучше вместе с термином: «терм `D3` (родитель)». Названия методов упоминай, только если пользователь спрашивает про rstool как инструмент.
155
+
156
+ ### Термины КС
157
+
158
+ Словарь выше — про поля rstool. Для **понятий схемы** каноничный источник — [DOMAIN.md](../../docs/DOMAIN.md).
159
+
160
+ | Не пиши пользователю | Пиши |
161
+ | :--------------------------- | :------------------------------------------------------------ |
162
+ | «базис», «базисный слой» | **базовые понятия** (`X#`, `C#`, `S#`) или перечисли типы |
163
+ | «базисное» про `S1` | **родовая структура** `S1` |
164
+ | «базовое« множество про `X1` | **базисное множество** `X1` |
165
+ | «ядро» без уточнения | **ядро КС** (если речь именно о ядре) или **базовые понятия** |
166
+
131
167
  ## Чеклисты
132
168
 
133
169
  ### Сессия и rstool
@@ -139,7 +175,9 @@ auto определит `portal-details` или `portal-schema`. Явный kind
139
175
  ### Перед показом, commit и export
140
176
 
141
177
  - [ ] Схема проверена; ошибки исправлены.
142
- - [ ] Диагностики обработаны до `commitStep` и экспорта.
178
+ - [ ] Диагностики обработаны до фиксации шага и экспорта.
179
+ - [ ] В тексте ответа нет английских имён полей и методов API — использованы термины из раздела [Язык ответа](#язык-ответа).
180
+ - [ ] Нет неофициальных ярлыков («базис», «базисный слой») — термины КС из [DOMAIN.md](../../docs/DOMAIN.md).
143
181
 
144
182
  ### Ревью концептуальной схемы
145
183
 
@@ -1,36 +1,40 @@
1
1
  ---
2
2
  name: rstool-helper
3
3
  description: >-
4
- RS language, formal definitions and conceptual schema design for agents. Read GUIDE and docs from node_modules.
4
+ RSLang, формальные определения и проектирование концептуальных схем для агентов. Читай GUIDE и docs из node_modules.
5
5
  ---
6
6
 
7
7
  # rstool-helper
8
8
 
9
- Thin **entry** skill. Full guide and docs stay in the package — use the Read tool on the paths below (from the project root).
9
+ Тонкий **входной** skill. Полный гайд и документация остаются в пакете — читай через Read tool по путям ниже (от корня проекта).
10
10
 
11
- ## If the entry skill is not installed yet
11
+ ## Если входной skill ещё не установлен
12
12
 
13
- The user ran `npm install @rsconcept/rstool` but has not registered the agent skill in the project. **Run the install procedure** in:
13
+ Пользователь выполнил `npm install @rsconcept/rstool`, но не зарегистрировал agent skill в проекте. **Выполни процедуру установки** из:
14
14
 
15
15
  `node_modules/@rsconcept/rstool/skills/INSTALL.md`
16
16
 
17
- Then continue with the canonical files below.
17
+ Затем продолжай с каноническими файлами ниже.
18
18
 
19
- ## Canonical files (read before rstool work)
19
+ ## Канонические файлы (читать перед работой с rstool)
20
20
 
21
- - **Start here** — воркфлоу и чеклисты: `node_modules/@rsconcept/rstool/skills/rstool-helper/GUIDE.md`
21
+ - **Начни здесь** — воркфлоу и чеклисты: `node_modules/@rsconcept/rstool/skills/rstool-helper/GUIDE.md`
22
22
  - API, stdio, контракт: `node_modules/@rsconcept/rstool/skills/rstool-helper/REFERENCE.md`
23
23
  - Примеры, типичные ошибки: `node_modules/@rsconcept/rstool/skills/rstool-helper/EXAMPLES.md`
24
- - Language / domain docs: `node_modules/@rsconcept/rstool/docs/*.md`
25
- - Install procedure: `node_modules/@rsconcept/rstool/skills/INSTALL.md`
24
+ - Язык и предметная область: `node_modules/@rsconcept/rstool/docs/*.md`
25
+ - Процедура установки: `node_modules/@rsconcept/rstool/skills/INSTALL.md`
26
26
 
27
- Always open **GUIDE.md** first when starting a rstool task, then **REFERENCE.md** / **EXAMPLES.md** / relevant `docs/*.md` as needed.
27
+ Перед началом задачи rstool всегда открывай **GUIDE.md**, затем по необходимости **REFERENCE.md** / **EXAMPLES.md** / нужные `docs/*.md`.
28
+
29
+ ## Язык ответа пользователю
30
+
31
+ В тексте для пользователя используй термины предметной области («формальное определение», «конституента», «диагностики»), а не английские имена полей и методов API (`definitionFormal`, `applySchemaPatch`). Идентификаторы API — только в коде, patch-ах и JSON. Словарь API → текст: раздел «Язык ответа» в GUIDE.md. Термины КС (базовые понятия, базисное множество, ядро) — только из `docs/DOMAIN.md`, раздел **«Термины: не путать»**.
28
32
 
29
33
  ## Portal (приложение)
30
34
 
31
35
  REST API и curl — `node_modules/@rsconcept/rstool/docs/PORTAL-API.md`.
32
36
 
33
- ## Quick facts
37
+ ## Кратко
34
38
 
35
- - Package: `@rsconcept/rstool`; wrapper: `npx rstool-wrapper`
36
- - `@rsconcept/domain` is installed as a dependency (analyzer and error codes)
39
+ - Пакет: `@rsconcept/rstool`; обёртка: `npx rstool-wrapper`
40
+ - `@rsconcept/domain` устанавливается как зависимость (анализатор и коды ошибок)