@slexkit/mcp 0.4.0 → 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.
@@ -1,248 +0,0 @@
1
- {
2
- "name": "slex-conformance",
3
- "packageName": "slexkit",
4
- "version": "0.4.0",
5
- "schemaVersion": "2026-06",
6
- "protocolVersion": "0.1",
7
- "logicProfileVersion": "0.1",
8
- "fixtures": [
9
- {
10
- "id": "valid-full-envelope",
11
- "kind": "valid",
12
- "mode": "trusted",
13
- "source": "{ slex: \"0.1\", namespace: \"valid_full\", g: { count: 0 }, layout: { \"button:add\": { label: \"Add\", onclick: \"g.count++\" }, \"text:value\": { \"$text\": \"String(g.count)\" } } }",
14
- "expected": {
15
- "ok": true,
16
- "warnings": []
17
- }
18
- },
19
- {
20
- "id": "valid-dynamic-props",
21
- "kind": "valid",
22
- "mode": "trusted",
23
- "source": "{ slex: \"0.1\", namespace: \"dynamic_props\", g: { name: \"Slex\" }, layout: { \"text:greeting\": { \"$text\": \"'Hello, ' + g.name\" } } }",
24
- "expected": {
25
- "ok": true,
26
- "warnings": []
27
- }
28
- },
29
- {
30
- "id": "valid-event-handler",
31
- "kind": "valid",
32
- "mode": "trusted",
33
- "source": "{ slex: \"0.1\", namespace: \"event_handler\", g: { count: 0 }, layout: { \"button:add\": { label: \"Add\", onclick: \"g.count = g.count + Number($event || 1)\" } } }",
34
- "expected": {
35
- "ok": true,
36
- "warnings": []
37
- }
38
- },
39
- {
40
- "id": "valid-loop-condition",
41
- "kind": "valid",
42
- "mode": "trusted",
43
- "source": "{ slex: \"0.1\", namespace: \"loop_condition\", g: { visible: true, items: [{ id: \"a\", label: \"A\" }] }, layout: { \"column:list\": { \"$if\": \"g.visible\", \"text:item\": { \"$for\": \"g.items\", \"$key\": \"$item.id\", \"$text\": \"$item.label\" } } } }",
44
- "expected": {
45
- "ok": true,
46
- "warnings": []
47
- }
48
- },
49
- {
50
- "id": "valid-stdlib",
51
- "kind": "valid",
52
- "mode": "trusted",
53
- "source": "{ slex: \"0.1\", namespace: \"stdlib\", g: { done: 3, total: 4 }, layout: { \"stat:progress\": { label: \"Progress\", \"$value\": \"std.format.percent(std.math.safeDivide(g.done, g.total), 1)\" } } }",
54
- "expected": {
55
- "ok": true,
56
- "warnings": []
57
- }
58
- },
59
- {
60
- "id": "valid-secure-api",
61
- "kind": "valid",
62
- "mode": "secure",
63
- "source": "{ slex: \"0.1\", namespace: \"secure_api\", g: { status: \"idle\", async load() { const result = await api.fetch(\"/status\"); this.status = String(result.status); } }, layout: { \"button:load\": { label: \"Load\", onclick: \"g.load()\" }, \"text:status\": { \"$text\": \"g.status\" } } }",
64
- "expected": {
65
- "ok": true,
66
- "warnings": []
67
- }
68
- },
69
- {
70
- "id": "valid-bare-tree",
71
- "kind": "valid",
72
- "mode": "trusted",
73
- "source": "{ \"text:message\": { text: \"Bare tree\" } }",
74
- "expected": {
75
- "ok": true,
76
- "warnings": []
77
- }
78
- },
79
- {
80
- "id": "valid-state-only",
81
- "kind": "valid",
82
- "mode": "trusted",
83
- "source": "{ slex: \"0.1\", namespace: \"state_only\", g: { ready: true } }",
84
- "expected": {
85
- "ok": true,
86
- "warnings": []
87
- }
88
- },
89
- {
90
- "id": "warning-secure-native-capability",
91
- "kind": "warning",
92
- "mode": "secure",
93
- "source": "{ slex: \"0.1\", namespace: \"native_fetch\", g: { load() { fetch(\"/x\"); } }, layout: { \"button:load\": { label: \"Load\", onclick: \"g.load()\" } } }",
94
- "expected": {
95
- "ok": true,
96
- "warnings": [
97
- {
98
- "code": "native_secure_capability",
99
- "path": "g.load",
100
- "value": "fetch"
101
- }
102
- ]
103
- }
104
- },
105
- {
106
- "id": "warning-secure-native-timer-websocket",
107
- "kind": "warning",
108
- "mode": "secure",
109
- "source": "{ slex: \"0.1\", namespace: \"native_timer_socket\", g: { start() { setTimeout(() => {}, 10); const socket = new WebSocket(\"wss://example.com\"); return socket; } }, layout: { \"button:start\": { label: \"Start\", onclick: \"g.start()\" } } }",
110
- "expected": {
111
- "ok": true,
112
- "warnings": [
113
- {
114
- "code": "native_secure_capability",
115
- "path": "g.start",
116
- "value": "WebSocket"
117
- },
118
- {
119
- "code": "native_secure_capability",
120
- "path": "g.start",
121
- "value": "setTimeout"
122
- }
123
- ]
124
- }
125
- },
126
- {
127
- "id": "warning-unknown-component-prop",
128
- "kind": "warning",
129
- "mode": "trusted",
130
- "source": "{ namespace: \"unknowns\", layout: { \"madeup:thing\": { madeUp: true }, \"text:body\": { madeUp: true } } }",
131
- "expected": {
132
- "ok": true,
133
- "warnings": [
134
- {
135
- "code": "unknown_component",
136
- "path": "layout.madeup:thing",
137
- "value": "madeup"
138
- },
139
- {
140
- "code": "unknown_prop",
141
- "path": "layout.text:body.madeUp",
142
- "value": "madeUp"
143
- }
144
- ]
145
- }
146
- },
147
- {
148
- "id": "warning-invalid-component-key",
149
- "kind": "warning",
150
- "mode": "trusted",
151
- "source": "{ namespace: \"bad_key\", layout: { \"Text Bad:item\": { text: \"bad\" } } }",
152
- "expected": {
153
- "ok": true,
154
- "warnings": [
155
- {
156
- "code": "invalid_component_key",
157
- "path": "layout.Text Bad:item",
158
- "value": "Text Bad:item"
159
- }
160
- ]
161
- }
162
- },
163
- {
164
- "id": "warning-invalid-directive-type",
165
- "kind": "warning",
166
- "mode": "trusted",
167
- "source": "{ namespace: \"bad_directive\", layout: { \"text:message\": { \"$if\": true, text: \"bad\" } } }",
168
- "expected": {
169
- "ok": true,
170
- "warnings": [
171
- {
172
- "code": "invalid_directive_type",
173
- "path": "layout.text:message.$if",
174
- "value": "$if"
175
- }
176
- ]
177
- }
178
- },
179
- {
180
- "id": "warning-unsupported-protocol",
181
- "kind": "warning",
182
- "mode": "trusted",
183
- "source": "{ slex: \"9.9\", namespace: \"future\", layout: { \"text:message\": { text: \"future\" } } }",
184
- "expected": {
185
- "ok": true,
186
- "warnings": [
187
- {
188
- "code": "unsupported_protocol",
189
- "path": "slex",
190
- "value": "9.9"
191
- }
192
- ]
193
- }
194
- },
195
- {
196
- "id": "warning-reserved-context-shadowing",
197
- "kind": "warning",
198
- "mode": "trusted",
199
- "source": "{ namespace: \"shadow\", g: { std: \"bad\" }, layout: { \"text:api\": { text: \"shadow\" } } }",
200
- "expected": {
201
- "ok": true,
202
- "warnings": [
203
- {
204
- "code": "reserved_context_shadowing",
205
- "path": "g.std",
206
- "value": "std"
207
- },
208
- {
209
- "code": "reserved_context_shadowing",
210
- "path": "layout.text:api",
211
- "value": "api"
212
- }
213
- ]
214
- }
215
- },
216
- {
217
- "id": "warning-unknown-std-api",
218
- "kind": "warning",
219
- "mode": "secure",
220
- "source": "{ slex: \"0.1\", namespace: \"unknown_logic\", g: { load() { api.socket(); } }, layout: { \"text:value\": { \"$text\": \"std.math.nope(1)\" } } }",
221
- "expected": {
222
- "ok": true,
223
- "warnings": [
224
- {
225
- "code": "unknown_api_member",
226
- "path": "g.load",
227
- "value": "api.socket"
228
- },
229
- {
230
- "code": "unknown_std_member",
231
- "path": "layout.text:value.$text",
232
- "value": "std.math.nope"
233
- }
234
- ]
235
- }
236
- },
237
- {
238
- "id": "invalid-syntax",
239
- "kind": "invalid",
240
- "mode": "trusted",
241
- "source": "{ namespace: \"broken\", layout: { \"text:message\": { text: \"missing close\" }",
242
- "expected": {
243
- "ok": false,
244
- "diagnostic": "syntax"
245
- }
246
- }
247
- ]
248
- }