@rsconcept/rstool 1.7.1 → 2.0.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.
Files changed (126) hide show
  1. package/README.md +7 -7
  2. package/dist/index.js +1 -1
  3. package/dist/mappers/model-adapter.d.ts +6 -2
  4. package/dist/mappers/model-adapter.js +28 -3
  5. package/dist/mappers/model-adapter.js.map +1 -1
  6. package/dist/mappers/schema-adapter.d.ts +1 -2
  7. package/dist/mappers/schema-adapter.js +1 -1
  8. package/dist/mappers/types.d.ts +4 -5
  9. package/dist/models/index.js +1 -1
  10. package/dist/models/rstool-agent.js +1 -2
  11. package/dist/{models-DG2uTaV_.js → models-D06g8LId.js} +6 -5
  12. package/dist/{models-DG2uTaV_.js.map → models-D06g8LId.js.map} +1 -1
  13. package/dist/{rsform-builder-DKwZfJvN.js → rsform-builder-BlXEe5Ow.js} +2 -2
  14. package/dist/{rsform-builder-DKwZfJvN.js.map → rsform-builder-BlXEe5Ow.js.map} +1 -1
  15. package/dist/session/session-store.d.ts +3 -3
  16. package/dist/session/session-store.js +1 -2
  17. package/dist/wrapper/client.d.ts +15 -9
  18. package/dist/wrapper/client.js +79 -12
  19. package/dist/wrapper/client.js.map +1 -1
  20. package/dist/wrapper/stdio-wrapper.d.ts +1 -1
  21. package/dist/wrapper/stdio-wrapper.js +18 -10
  22. package/dist/wrapper/stdio-wrapper.js.map +1 -1
  23. package/docs/BRIEF.md +93 -0
  24. package/docs/CONCEPTUAL-SCHEMA.md +17 -2
  25. package/docs/CONSTRUCTIONS.md +384 -0
  26. package/docs/DIAGNOSTICS.md +9 -8
  27. package/docs/DOMAIN.md +12 -0
  28. package/docs/METHOD.md +208 -0
  29. package/docs/MODEL-TESTING.md +48 -0
  30. package/docs/PORTAL-API.md +38 -285
  31. package/docs/PORTAL-MODELS.md +24 -0
  32. package/docs/PORTAL-OSS.md +56 -0
  33. package/docs/PORTAL-PUBLISH.md +39 -0
  34. package/docs/PORTAL-READ.md +301 -0
  35. package/docs/README.md +8 -4
  36. package/docs/REQUIREMENTS.md +61 -0
  37. package/docs/SYNTAX.md +5 -4
  38. package/docs/TYPIFICATION.md +12 -3
  39. package/docs/brief.schema.json +173 -0
  40. package/examples/README.md +16 -2
  41. package/examples/access-control/NOTES.md +23 -0
  42. package/examples/access-control/anti/collapsed.json +439 -0
  43. package/examples/access-control/anti/weakened.json +439 -0
  44. package/examples/access-control/brief-v1.json +231 -0
  45. package/examples/access-control/brief.json +310 -0
  46. package/examples/access-control/build-rsform.ts +151 -0
  47. package/examples/access-control/requirements-v1.md +9 -0
  48. package/examples/access-control/requirements-v2.md +4 -0
  49. package/examples/access-control/rsform-session-v1.json +439 -0
  50. package/examples/access-control/rsform-session.json +523 -0
  51. package/examples/audit-diagnostics.ts +9 -1
  52. package/examples/briefs.test.ts +126 -0
  53. package/examples/clinic-booking/NOTES.md +24 -0
  54. package/examples/clinic-booking/anti/collapsed.json +615 -0
  55. package/examples/clinic-booking/anti/species-as-genus.json +568 -0
  56. package/examples/clinic-booking/brief-v1.json +332 -0
  57. package/examples/clinic-booking/brief.json +405 -0
  58. package/examples/clinic-booking/build-rsform.ts +174 -0
  59. package/examples/clinic-booking/requirements-v1.md +9 -0
  60. package/examples/clinic-booking/requirements-v2.md +4 -0
  61. package/examples/clinic-booking/rsform-session-v1.json +615 -0
  62. package/examples/clinic-booking/rsform-session.json +700 -0
  63. package/examples/diagnostics-utils.ts +26 -0
  64. package/examples/kinship/brief.json +337 -0
  65. package/examples/kinship/build-rsform.ts +7 -4
  66. package/examples/kinship/rsform-session.json +20 -63
  67. package/examples/kinship/rsmodel-session.json +14 -14
  68. package/examples/kinship-subordination/NOTES.md +49 -0
  69. package/examples/kinship-subordination/brief.json +161 -0
  70. package/examples/kinship-subordination/build-rsform.ts +100 -0
  71. package/examples/kinship-subordination/rsform-session.json +795 -0
  72. package/examples/library-loans/NOTES.md +46 -0
  73. package/examples/library-loans/anti/collapsed.json +481 -0
  74. package/examples/library-loans/anti/species-as-genus.json +334 -0
  75. package/examples/library-loans/anti/uncovered.json +406 -0
  76. package/examples/library-loans/anti/weakened.json +464 -0
  77. package/examples/library-loans/brief-v1.json +340 -0
  78. package/examples/library-loans/brief.json +502 -0
  79. package/examples/library-loans/build-rsform.ts +239 -0
  80. package/examples/library-loans/requirements-v1.md +11 -0
  81. package/examples/library-loans/requirements-v2.md +5 -0
  82. package/examples/library-loans/rsform-session-v1.json +481 -0
  83. package/examples/library-loans/rsform-session.json +652 -0
  84. package/examples/library-loans/source-markup.md +18 -0
  85. package/examples/movd/brief.json +220 -0
  86. package/examples/movd/build-rsform.ts +5 -2
  87. package/examples/movd/rsform-session.json +14 -46
  88. package/examples/subordination/NOTES.md +59 -0
  89. package/examples/subordination/anti/collapsed.json +556 -0
  90. package/examples/subordination/anti/single-relation.json +125 -0
  91. package/examples/subordination/anti/transitive.json +573 -0
  92. package/examples/subordination/anti/weakened.json +539 -0
  93. package/examples/subordination/brief.json +386 -0
  94. package/examples/subordination/build-rsform.ts +63 -0
  95. package/examples/subordination/constants.ts +115 -0
  96. package/examples/subordination/rsform-session.json +556 -0
  97. package/examples/subordination/source-markup.md +19 -0
  98. package/examples/subordination/source.md +40 -0
  99. package/package.json +29 -20
  100. package/skills/INSTALL.md +28 -29
  101. package/skills/README.md +25 -10
  102. package/skills/rs-core/SKILL.md +56 -0
  103. package/skills/rs-explain/SKILL.md +28 -0
  104. package/skills/rs-explicate/SKILL.md +71 -0
  105. package/skills/rs-interpret/SKILL.md +67 -0
  106. package/skills/rs-portal/SKILL.md +51 -0
  107. package/skills/rs-review/SKILL.md +79 -0
  108. package/skills/rs-scope/SKILL.md +67 -0
  109. package/skills/rs-synthesis/SKILL.md +52 -0
  110. package/skills/rstool/SKILL.md +70 -0
  111. package/skills/rstool-helper/GUIDE.md +18 -272
  112. package/skills/rstool-helper/SKILL.md +8 -55
  113. package/skills/{rstool-helper → rstool-runtime}/EXAMPLES.md +40 -12
  114. package/skills/{rstool-helper → rstool-runtime}/REFERENCE.md +28 -7
  115. package/skills/rstool-runtime/SKILL.md +96 -0
  116. package/skills/scripts/brief-check.test.ts +165 -0
  117. package/skills/scripts/brief-check.ts +826 -0
  118. package/skills/scripts/check-brief.ts +94 -0
  119. package/skills/scripts/rstool-skills.mjs +119 -0
  120. package/skills/scripts/skill-stubs.test.ts +48 -0
  121. package/src/mappers/model-adapter.ts +34 -1
  122. package/src/models/rstool-agent.test.ts +95 -0
  123. package/src/wrapper/client.test.ts +43 -4
  124. package/src/wrapper/client.ts +95 -16
  125. package/src/wrapper/stdio-handler.test.ts +43 -0
  126. package/src/wrapper/stdio-handler.ts +19 -5
@@ -0,0 +1,406 @@
1
+ {
2
+ "contractVersion": "3.3.0",
3
+ "state": {
4
+ "sessionId": "2cd3081f-04cd-4a2d-b995-71340f39f55b",
5
+ "alias": "LIB",
6
+ "title": "Антипример: uncovered",
7
+ "comment": "Выдача книг в библиотеке. Эксплицировать понятия выдачи и доступности для проектирования ИС: модель данных и проверки при сохранении.\nL1. Исключено: штрафы и оплата (п. 8); невыразимо: сумма штрафа, долг читателя в рублях.\nL2. Исключено: история выдач — только текущее состояние (п. 7); невыразимо: бывшие выдачи, сколько раз читатель брал издание, дата возврата.\nL3. Исключено: каталог и поиск (п. 9) — интерфейс, не предметная область; невыразимо: автор издания, название.\nDC1. основное отношение «выдача» S2: S2: читатель × экземпляр × день выдачи — просрочка требует дня, доступность — экземпляра; «один читатель у экземпляра» — аксиома A1, а не тип.\nDC2. срок выдачи: константа 14 в формуле D4 — п. 2: срок одинаков для всех.\nDC3. текущий день: S3: Z — просрочка — производное понятие, не неопределяемое.\nDC4. однозначность выдачи по экземпляру: аксиома A1 — п. 3.\nDC5. издание экземпляра: отношение S1 и аксиома A3 (однозначность и всюду определённость) — п. 1.\nDC6. запрет новой выдачи должнику: без аксиомы — это правило процедуры выдачи, а схема описывает состояние (L2).",
8
+ "createdAt": "2026-10-25T18:34:34.418Z",
9
+ "updatedAt": "2026-10-25T18:34:34.423Z",
10
+ "revisions": [
11
+ {
12
+ "revisionId": "021d065d-3e9c-40db-819c-e2bb5567eee9",
13
+ "at": "2026-10-25T18:34:34.423Z",
14
+ "message": "Антипример: uncovered"
15
+ }
16
+ ],
17
+ "items": [
18
+ {
19
+ "id": 1,
20
+ "alias": "X1",
21
+ "cstType": "basic",
22
+ "definitionFormal": "",
23
+ "term": "читатели",
24
+ "definitionText": "",
25
+ "convention": "Записанные читатели библиотеки.",
26
+ "analysis": {
27
+ "success": true,
28
+ "type": {
29
+ "typeID": 5,
30
+ "base": {
31
+ "typeID": 3,
32
+ "baseID": "X1"
33
+ }
34
+ },
35
+ "valueClass": "value",
36
+ "diagnostics": []
37
+ }
38
+ },
39
+ {
40
+ "id": 2,
41
+ "alias": "X2",
42
+ "cstType": "basic",
43
+ "definitionFormal": "",
44
+ "term": "экземпляры",
45
+ "definitionText": "",
46
+ "convention": "Физические экземпляры книг фонда (ТЗ 1).",
47
+ "analysis": {
48
+ "success": true,
49
+ "type": {
50
+ "typeID": 5,
51
+ "base": {
52
+ "typeID": 3,
53
+ "baseID": "X2"
54
+ }
55
+ },
56
+ "valueClass": "value",
57
+ "diagnostics": []
58
+ }
59
+ },
60
+ {
61
+ "id": 3,
62
+ "alias": "X3",
63
+ "cstType": "basic",
64
+ "definitionFormal": "",
65
+ "term": "издания",
66
+ "definitionText": "",
67
+ "convention": "Издания: книга в конкретном издании; у издания может быть много экземпляров.",
68
+ "analysis": {
69
+ "success": true,
70
+ "type": {
71
+ "typeID": 5,
72
+ "base": {
73
+ "typeID": 3,
74
+ "baseID": "X3"
75
+ }
76
+ },
77
+ "valueClass": "value",
78
+ "diagnostics": []
79
+ }
80
+ },
81
+ {
82
+ "id": 4,
83
+ "alias": "S1",
84
+ "cstType": "structure",
85
+ "definitionFormal": "ℬ(X2×X3)",
86
+ "term": "издание экземпляра",
87
+ "definitionText": "",
88
+ "convention": "Пара (экземпляр, издание): экземпляр — копия издания (ТЗ 1).",
89
+ "analysis": {
90
+ "success": true,
91
+ "type": {
92
+ "typeID": 5,
93
+ "base": {
94
+ "typeID": 4,
95
+ "factors": [
96
+ {
97
+ "typeID": 3,
98
+ "baseID": "X2"
99
+ },
100
+ {
101
+ "typeID": 3,
102
+ "baseID": "X3"
103
+ }
104
+ ]
105
+ }
106
+ },
107
+ "valueClass": "value",
108
+ "diagnostics": []
109
+ }
110
+ },
111
+ {
112
+ "id": 5,
113
+ "alias": "S2",
114
+ "cstType": "structure",
115
+ "definitionFormal": "ℬ(X1×X2×Z)",
116
+ "term": "выдачи",
117
+ "definitionText": "",
118
+ "convention": "Тройка (читатель, экземпляр, день выдачи) для экземпляров, которые сейчас на руках (ТЗ 2). Дни — номера дней.",
119
+ "analysis": {
120
+ "success": true,
121
+ "type": {
122
+ "typeID": 5,
123
+ "base": {
124
+ "typeID": 4,
125
+ "factors": [
126
+ {
127
+ "typeID": 3,
128
+ "baseID": "X1"
129
+ },
130
+ {
131
+ "typeID": 3,
132
+ "baseID": "X2"
133
+ },
134
+ {
135
+ "typeID": 2,
136
+ "isOrdered": true,
137
+ "isArithmetic": true,
138
+ "isIntegerCompatible": true
139
+ }
140
+ ]
141
+ }
142
+ },
143
+ "valueClass": "value",
144
+ "diagnostics": []
145
+ }
146
+ },
147
+ {
148
+ "id": 6,
149
+ "alias": "S3",
150
+ "cstType": "structure",
151
+ "definitionFormal": "Z",
152
+ "term": "текущий день",
153
+ "definitionText": "",
154
+ "convention": "Номер текущего дня в той же нумерации, что и дни выдачи.",
155
+ "analysis": {
156
+ "success": true,
157
+ "type": {
158
+ "typeID": 2,
159
+ "isOrdered": true,
160
+ "isArithmetic": true,
161
+ "isIntegerCompatible": true
162
+ },
163
+ "valueClass": "value",
164
+ "diagnostics": []
165
+ }
166
+ },
167
+ {
168
+ "id": 7,
169
+ "alias": "D1",
170
+ "cstType": "term",
171
+ "definitionFormal": "Pr2(S2)",
172
+ "term": "выданные экземпляры",
173
+ "definitionText": "Экземпляры, которые сейчас на руках у читателей.",
174
+ "convention": "",
175
+ "analysis": {
176
+ "success": true,
177
+ "type": {
178
+ "typeID": 5,
179
+ "base": {
180
+ "typeID": 3,
181
+ "baseID": "X2"
182
+ }
183
+ },
184
+ "valueClass": "value",
185
+ "diagnostics": []
186
+ }
187
+ },
188
+ {
189
+ "id": 8,
190
+ "alias": "F1",
191
+ "cstType": "function",
192
+ "definitionFormal": "[ε∈X3] Pr1(Fi2[{ε}](S1))",
193
+ "term": "экземпляры издания",
194
+ "definitionText": "Все экземпляры данного издания.",
195
+ "convention": "",
196
+ "analysis": {
197
+ "success": true,
198
+ "type": {
199
+ "typeID": 7,
200
+ "result": {
201
+ "typeID": 5,
202
+ "base": {
203
+ "typeID": 3,
204
+ "baseID": "X2"
205
+ }
206
+ },
207
+ "args": [
208
+ {
209
+ "alias": "ε",
210
+ "type": {
211
+ "typeID": 3,
212
+ "baseID": "X3"
213
+ }
214
+ }
215
+ ]
216
+ },
217
+ "valueClass": "value",
218
+ "diagnostics": []
219
+ }
220
+ },
221
+ {
222
+ "id": 9,
223
+ "alias": "F3",
224
+ "cstType": "function",
225
+ "definitionFormal": "[ξ∈X1] Pr2(Fi1[{ξ}](S2))",
226
+ "term": "экземпляры читателя",
227
+ "definitionText": "Экземпляры на руках у данного читателя.",
228
+ "convention": "",
229
+ "analysis": {
230
+ "success": true,
231
+ "type": {
232
+ "typeID": 7,
233
+ "result": {
234
+ "typeID": 5,
235
+ "base": {
236
+ "typeID": 3,
237
+ "baseID": "X2"
238
+ }
239
+ },
240
+ "args": [
241
+ {
242
+ "alias": "ξ",
243
+ "type": {
244
+ "typeID": 3,
245
+ "baseID": "X1"
246
+ }
247
+ }
248
+ ]
249
+ },
250
+ "valueClass": "value",
251
+ "diagnostics": []
252
+ }
253
+ },
254
+ {
255
+ "id": 10,
256
+ "alias": "D4",
257
+ "cstType": "term",
258
+ "definitionFormal": "D{σ∈S2 | pr3(σ)+14 < S3}",
259
+ "term": "просроченные выдачи",
260
+ "definitionText": "Выдачи, с которых прошло больше 14 дней.",
261
+ "convention": "",
262
+ "analysis": {
263
+ "success": true,
264
+ "type": {
265
+ "typeID": 5,
266
+ "base": {
267
+ "typeID": 4,
268
+ "factors": [
269
+ {
270
+ "typeID": 3,
271
+ "baseID": "X1"
272
+ },
273
+ {
274
+ "typeID": 3,
275
+ "baseID": "X2"
276
+ },
277
+ {
278
+ "typeID": 2,
279
+ "isOrdered": true,
280
+ "isArithmetic": true,
281
+ "isIntegerCompatible": true
282
+ }
283
+ ]
284
+ }
285
+ },
286
+ "valueClass": "value",
287
+ "diagnostics": []
288
+ }
289
+ },
290
+ {
291
+ "id": 11,
292
+ "alias": "D5",
293
+ "cstType": "term",
294
+ "definitionFormal": "Pr1(S2)",
295
+ "term": "читатели с выдачами",
296
+ "definitionText": "Читатели, у которых есть экземпляр на руках.",
297
+ "convention": "",
298
+ "analysis": {
299
+ "success": true,
300
+ "type": {
301
+ "typeID": 5,
302
+ "base": {
303
+ "typeID": 3,
304
+ "baseID": "X1"
305
+ }
306
+ },
307
+ "valueClass": "value",
308
+ "diagnostics": []
309
+ }
310
+ },
311
+ {
312
+ "id": 12,
313
+ "alias": "D6",
314
+ "cstType": "term",
315
+ "definitionFormal": "Pr1(D4)",
316
+ "term": "должники",
317
+ "definitionText": "Читатели с хотя бы одной просроченной выдачей.",
318
+ "convention": "",
319
+ "analysis": {
320
+ "success": true,
321
+ "type": {
322
+ "typeID": 5,
323
+ "base": {
324
+ "typeID": 3,
325
+ "baseID": "X1"
326
+ }
327
+ },
328
+ "valueClass": "value",
329
+ "diagnostics": []
330
+ }
331
+ },
332
+ {
333
+ "id": 13,
334
+ "alias": "A1",
335
+ "cstType": "axiom",
336
+ "definitionFormal": "card(Pr2(S2))=card(S2)",
337
+ "term": "экземпляр выдан одному читателю",
338
+ "definitionText": "Один экземпляр не выдан двум читателям и не записан дважды (ТЗ 3).",
339
+ "convention": "",
340
+ "analysis": {
341
+ "success": true,
342
+ "type": {
343
+ "typeID": 6
344
+ },
345
+ "valueClass": "value",
346
+ "diagnostics": []
347
+ }
348
+ },
349
+ {
350
+ "id": 14,
351
+ "alias": "A2",
352
+ "cstType": "axiom",
353
+ "definitionFormal": "∀ξ∈X1 card(F3[ξ])≤5",
354
+ "term": "не больше 5 экземпляров на руках",
355
+ "definitionText": "ТЗ 4.",
356
+ "convention": "",
357
+ "analysis": {
358
+ "success": true,
359
+ "type": {
360
+ "typeID": 6
361
+ },
362
+ "valueClass": "value",
363
+ "diagnostics": []
364
+ }
365
+ },
366
+ {
367
+ "id": 15,
368
+ "alias": "A3",
369
+ "cstType": "axiom",
370
+ "definitionFormal": "card(S1)=card(Pr1(S1)) & Pr1(S1)=X2",
371
+ "term": "у экземпляра одно издание",
372
+ "definitionText": "Каждый экземпляр — копия ровно одного издания (ТЗ 1).",
373
+ "convention": "",
374
+ "analysis": {
375
+ "success": true,
376
+ "type": {
377
+ "typeID": 6
378
+ },
379
+ "valueClass": "value",
380
+ "diagnostics": []
381
+ }
382
+ },
383
+ {
384
+ "id": 16,
385
+ "alias": "A4",
386
+ "cstType": "axiom",
387
+ "definitionFormal": "∀σ∈S2 pr3(σ)≤S3",
388
+ "term": "выдача не из будущего",
389
+ "definitionText": "День выдачи не позже текущего дня.",
390
+ "convention": "",
391
+ "analysis": {
392
+ "success": true,
393
+ "type": {
394
+ "typeID": 6
395
+ },
396
+ "valueClass": "value",
397
+ "diagnostics": []
398
+ }
399
+ }
400
+ ],
401
+ "model": {
402
+ "items": []
403
+ }
404
+ },
405
+ "diagnostics": []
406
+ }