@polycode-projects/the-mechanical-code-talker 2.10.5 → 2.11.1

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 (48) hide show
  1. package/README.md +2 -2
  2. package/corpus/sprites/src/sprite-facts.jsonl +18 -0
  3. package/corpus/worlds/manifest.json +5 -5
  4. package/corpus/worlds/shards/ashcombe-hall.jsonl.gz +0 -0
  5. package/corpus/worlds/src/ashcombe-hall.jsonl +27 -0
  6. package/data/sprites/book-icon.toml +12 -0
  7. package/data/sprites/cellar-icon.toml +12 -0
  8. package/data/sprites/drawing-room-icon.toml +13 -0
  9. package/data/sprites/garden-icon.toml +12 -0
  10. package/data/sprites/kitchen-icon.toml +13 -0
  11. package/data/sprites/library-icon.toml +12 -0
  12. package/data/sprites/pan-icon.toml +11 -0
  13. package/data/sprites/study-icon.toml +12 -0
  14. package/data/templates/responses.jsonl +1 -0
  15. package/package.json +5 -2
  16. package/src/adapters/corpus/wikipedia-live.mjs +182 -26
  17. package/src/adapters/corpus/worlds-pack.mjs +8 -2
  18. package/src/adapters/toml-config.mjs +6 -0
  19. package/src/domain/ask-vocab.mjs +17 -0
  20. package/src/domain/ask.mjs +51 -1
  21. package/src/domain/grammar/ace.mjs +43 -3
  22. package/src/domain/interpret/normalize.mjs +6 -2
  23. package/src/domain/interpret/strategies/grammar.mjs +47 -17
  24. package/src/domain/interpret/strategies/keywords.mjs +53 -4
  25. package/src/domain/memory/trust.mjs +11 -0
  26. package/src/domain/router/registry.mjs +8 -1
  27. package/src/domain/worlds-pack.mjs +50 -0
  28. package/src/services/adventure-autoplay.mjs +5 -2
  29. package/src/services/adventure-viz.mjs +301 -33
  30. package/src/services/adventure.mjs +162 -14
  31. package/src/services/chat-page-viz.mjs +265 -189
  32. package/src/services/chat-session.mjs +15 -5
  33. package/src/services/chat.mjs +471 -79
  34. package/src/services/code-explorer-viz.mjs +183 -75
  35. package/src/services/extract-facts.mjs +118 -28
  36. package/src/services/ingest-viz.mjs +328 -79
  37. package/src/services/ledger-viz.mjs +99 -0
  38. package/src/services/memory-panel-viz.mjs +159 -0
  39. package/src/services/research.mjs +266 -0
  40. package/src/services/sentences.mjs +19 -0
  41. package/src/services/spider-fly-viz.mjs +21 -5
  42. package/src/surfaces/web/adventure-browser-entry.mjs +9 -5
  43. package/src/surfaces/web/chat-browser-entry.mjs +28 -11
  44. package/src/surfaces/web/code-explorer-browser-entry.mjs +27 -11
  45. package/src/surfaces/web/ingest-browser-entry.mjs +123 -41
  46. package/src/surfaces/web/ledger-browser-entry.mjs +10 -4
  47. package/src/surfaces/web/memory-ask-browser.bundle.js +116 -116
  48. package/src/surfaces/web/memory-stats.mjs +53 -0
package/README.md CHANGED
@@ -142,7 +142,7 @@ offline before it deploys. The example graph, the chat seed, the pages, and
142
142
  the engine copy land in `public/`. The in-page chat's query bundle is rebuilt
143
143
  from the same `src/` the CLI runs:
144
144
 
145
- ```bash e2e cwd=repo
145
+ ```bash e2e heavy cwd=repo
146
146
  npm run demo:build # public/: demo graph, memory, ledger page, engine copy
147
147
  npm run build:ask-bundle # the browser query bundle the in-page chat runs
148
148
  ```
@@ -869,7 +869,7 @@ the wordnet-xl corpus (~72,000 facts); `init:xxl` swaps wordnet-xl for the
869
869
  full WordNet slice plus namenet (~239,000 facts, the biggest committed
870
870
  vocabulary — expect its imports to take a minute). The xl chain, spelled out:
871
871
 
872
- ```bash e2e
872
+ ```bash e2e heavy
873
873
  npx tmct init --persona-size large # npm run init:xl runs this whole chain from a clone
874
874
  npx tmct import --corpus seon
875
875
  npx tmct import --corpus conceptnet
@@ -19,6 +19,7 @@
19
19
  {"subject":"birthday sprite","predicate":"rdf:type","object":"sprite class"}
20
20
  {"subject":"boat sprite","predicate":"rdf:type","object":"sprite class"}
21
21
  {"subject":"body of water sprite","predicate":"rdf:type","object":"sprite class"}
22
+ {"subject":"book sprite","predicate":"rdf:type","object":"sprite class"}
22
23
  {"subject":"boss sprite","predicate":"rdf:type","object":"sprite class"}
23
24
  {"subject":"boy sprite","predicate":"rdf:type","object":"sprite class"}
24
25
  {"subject":"bread sprite","predicate":"rdf:type","object":"sprite class"}
@@ -31,6 +32,7 @@
31
32
  {"subject":"car sprite","predicate":"rdf:type","object":"sprite class"}
32
33
  {"subject":"castle sprite","predicate":"rdf:type","object":"sprite class"}
33
34
  {"subject":"cat sprite","predicate":"rdf:type","object":"sprite class"}
35
+ {"subject":"cellar sprite","predicate":"rdf:type","object":"sprite class"}
34
36
  {"subject":"chair sprite","predicate":"rdf:type","object":"sprite class"}
35
37
  {"subject":"champion sprite","predicate":"rdf:type","object":"sprite class"}
36
38
  {"subject":"cheese sprite","predicate":"rdf:type","object":"sprite class"}
@@ -52,6 +54,7 @@
52
54
  {"subject":"dinner sprite","predicate":"rdf:type","object":"sprite class"}
53
55
  {"subject":"doctor sprite","predicate":"rdf:type","object":"sprite class"}
54
56
  {"subject":"dog sprite","predicate":"rdf:type","object":"sprite class"}
57
+ {"subject":"drawing-room sprite","predicate":"rdf:type","object":"sprite class"}
55
58
  {"subject":"dress sprite","predicate":"rdf:type","object":"sprite class"}
56
59
  {"subject":"drink sprite","predicate":"rdf:type","object":"sprite class"}
57
60
  {"subject":"driver sprite","predicate":"rdf:type","object":"sprite class"}
@@ -128,6 +131,7 @@
128
131
  {"subject":"office sprite","predicate":"rdf:type","object":"sprite class"}
129
132
  {"subject":"officer sprite","predicate":"rdf:type","object":"sprite class"}
130
133
  {"subject":"owl sprite","predicate":"rdf:type","object":"sprite class"}
134
+ {"subject":"pan sprite","predicate":"rdf:type","object":"sprite class"}
131
135
  {"subject":"parent sprite","predicate":"rdf:type","object":"sprite class"}
132
136
  {"subject":"park sprite","predicate":"rdf:type","object":"sprite class"}
133
137
  {"subject":"person sprite","predicate":"rdf:type","object":"sprite class"}
@@ -168,6 +172,7 @@
168
172
  {"subject":"stranger sprite","predicate":"rdf:type","object":"sprite class"}
169
173
  {"subject":"street sprite","predicate":"rdf:type","object":"sprite class"}
170
174
  {"subject":"student sprite","predicate":"rdf:type","object":"sprite class"}
175
+ {"subject":"study sprite","predicate":"rdf:type","object":"sprite class"}
171
176
  {"subject":"sugar sprite","predicate":"rdf:type","object":"sprite class"}
172
177
  {"subject":"summer sprite","predicate":"rdf:type","object":"sprite class"}
173
178
  {"subject":"sun sprite","predicate":"rdf:type","object":"sprite class"}
@@ -198,26 +203,34 @@
198
203
  {"subject":"writer sprite","predicate":"rdf:type","object":"sprite class"}
199
204
  {"subject":"adventurer sprite","predicate":"mgx:render-at","object":"icon tier"}
200
205
  {"subject":"animal sprite","predicate":"mgx:render-at","object":"icon tier"}
206
+ {"subject":"book sprite","predicate":"mgx:render-at","object":"icon tier"}
201
207
  {"subject":"butler sprite","predicate":"mgx:render-at","object":"icon tier"}
202
208
  {"subject":"cabinet sprite","predicate":"mgx:render-at","object":"icon tier"}
209
+ {"subject":"cellar sprite","predicate":"mgx:render-at","object":"icon tier"}
203
210
  {"subject":"container sprite","predicate":"mgx:render-at","object":"icon tier"}
204
211
  {"subject":"cook sprite","predicate":"mgx:render-at","object":"icon tier"}
205
212
  {"subject":"desk sprite","predicate":"mgx:render-at","object":"icon tier"}
206
213
  {"subject":"dog sprite","predicate":"mgx:render-at","object":"icon tier"}
214
+ {"subject":"drawing-room sprite","predicate":"mgx:render-at","object":"icon tier"}
207
215
  {"subject":"egg sprite","predicate":"mgx:render-at","object":"icon tier"}
208
216
  {"subject":"fly sprite","predicate":"mgx:render-at","object":"icon tier"}
209
217
  {"subject":"furniture sprite","predicate":"mgx:render-at","object":"icon tier"}
218
+ {"subject":"garden sprite","predicate":"mgx:render-at","object":"icon tier"}
210
219
  {"subject":"gardener sprite","predicate":"mgx:render-at","object":"icon tier"}
211
220
  {"subject":"housekeeper sprite","predicate":"mgx:render-at","object":"icon tier"}
212
221
  {"subject":"key sprite","predicate":"mgx:render-at","object":"icon tier"}
222
+ {"subject":"kitchen sprite","predicate":"mgx:render-at","object":"icon tier"}
213
223
  {"subject":"lamp sprite","predicate":"mgx:render-at","object":"icon tier"}
214
224
  {"subject":"letter sprite","predicate":"mgx:render-at","object":"icon tier"}
225
+ {"subject":"library sprite","predicate":"mgx:render-at","object":"icon tier"}
226
+ {"subject":"pan sprite","predicate":"mgx:render-at","object":"icon tier"}
215
227
  {"subject":"person sprite","predicate":"mgx:render-at","object":"icon tier"}
216
228
  {"subject":"poodle sprite","predicate":"mgx:render-at","object":"icon tier"}
217
229
  {"subject":"portable sprite","predicate":"mgx:render-at","object":"icon tier"}
218
230
  {"subject":"portrait sprite","predicate":"mgx:render-at","object":"icon tier"}
219
231
  {"subject":"room sprite","predicate":"mgx:render-at","object":"icon tier"}
220
232
  {"subject":"spider sprite","predicate":"mgx:render-at","object":"icon tier"}
233
+ {"subject":"study sprite","predicate":"mgx:render-at","object":"icon tier"}
221
234
  {"subject":"adult sprite","predicate":"mgx:render-at","object":"sprite tier"}
222
235
  {"subject":"adventurer sprite","predicate":"mgx:render-at","object":"sprite tier"}
223
236
  {"subject":"airport sprite","predicate":"mgx:render-at","object":"sprite tier"}
@@ -239,6 +252,7 @@
239
252
  {"subject":"birthday sprite","predicate":"mgx:render-at","object":"sprite tier"}
240
253
  {"subject":"boat sprite","predicate":"mgx:render-at","object":"sprite tier"}
241
254
  {"subject":"body of water sprite","predicate":"mgx:render-at","object":"sprite tier"}
255
+ {"subject":"book sprite","predicate":"mgx:render-at","object":"sprite tier"}
242
256
  {"subject":"boss sprite","predicate":"mgx:render-at","object":"sprite tier"}
243
257
  {"subject":"boy sprite","predicate":"mgx:render-at","object":"sprite tier"}
244
258
  {"subject":"bread sprite","predicate":"mgx:render-at","object":"sprite tier"}
@@ -251,6 +265,7 @@
251
265
  {"subject":"car sprite","predicate":"mgx:render-at","object":"sprite tier"}
252
266
  {"subject":"castle sprite","predicate":"mgx:render-at","object":"sprite tier"}
253
267
  {"subject":"cat sprite","predicate":"mgx:render-at","object":"sprite tier"}
268
+ {"subject":"cellar sprite","predicate":"mgx:render-at","object":"sprite tier"}
254
269
  {"subject":"chair sprite","predicate":"mgx:render-at","object":"sprite tier"}
255
270
  {"subject":"champion sprite","predicate":"mgx:render-at","object":"sprite tier"}
256
271
  {"subject":"cheese sprite","predicate":"mgx:render-at","object":"sprite tier"}
@@ -272,6 +287,7 @@
272
287
  {"subject":"dinner sprite","predicate":"mgx:render-at","object":"sprite tier"}
273
288
  {"subject":"doctor sprite","predicate":"mgx:render-at","object":"sprite tier"}
274
289
  {"subject":"dog sprite","predicate":"mgx:render-at","object":"sprite tier"}
290
+ {"subject":"drawing-room sprite","predicate":"mgx:render-at","object":"sprite tier"}
275
291
  {"subject":"dress sprite","predicate":"mgx:render-at","object":"sprite tier"}
276
292
  {"subject":"drink sprite","predicate":"mgx:render-at","object":"sprite tier"}
277
293
  {"subject":"driver sprite","predicate":"mgx:render-at","object":"sprite tier"}
@@ -348,6 +364,7 @@
348
364
  {"subject":"office sprite","predicate":"mgx:render-at","object":"sprite tier"}
349
365
  {"subject":"officer sprite","predicate":"mgx:render-at","object":"sprite tier"}
350
366
  {"subject":"owl sprite","predicate":"mgx:render-at","object":"sprite tier"}
367
+ {"subject":"pan sprite","predicate":"mgx:render-at","object":"sprite tier"}
351
368
  {"subject":"parent sprite","predicate":"mgx:render-at","object":"sprite tier"}
352
369
  {"subject":"park sprite","predicate":"mgx:render-at","object":"sprite tier"}
353
370
  {"subject":"person sprite","predicate":"mgx:render-at","object":"sprite tier"}
@@ -388,6 +405,7 @@
388
405
  {"subject":"stranger sprite","predicate":"mgx:render-at","object":"sprite tier"}
389
406
  {"subject":"street sprite","predicate":"mgx:render-at","object":"sprite tier"}
390
407
  {"subject":"student sprite","predicate":"mgx:render-at","object":"sprite tier"}
408
+ {"subject":"study sprite","predicate":"mgx:render-at","object":"sprite tier"}
391
409
  {"subject":"sugar sprite","predicate":"mgx:render-at","object":"sprite tier"}
392
410
  {"subject":"summer sprite","predicate":"mgx:render-at","object":"sprite tier"}
393
411
  {"subject":"sun sprite","predicate":"mgx:render-at","object":"sprite tier"}
@@ -3,7 +3,7 @@
3
3
  "generated": "by scripts/build-worlds-pack.mjs from corpus/worlds/src/",
4
4
  "counts": {
5
5
  "worlds": 2,
6
- "facts": 548,
6
+ "facts": 575,
7
7
  "rules": 19
8
8
  },
9
9
  "budgets": {
@@ -14,8 +14,8 @@
14
14
  "sources": [
15
15
  {
16
16
  "file": "src/ashcombe-hall.jsonl",
17
- "bytes": 8795,
18
- "sha256": "771ed4e7a5e9046235e8dc193b2696f83e6ef92a556ca1ca126dd070927912ce"
17
+ "bytes": 11754,
18
+ "sha256": "18e58700a59ae3876dd4f949ede7fa17e19f3a8c2dc8ae4644dbddf98c138524"
19
19
  },
20
20
  {
21
21
  "file": "src/spider-fly.jsonl",
@@ -31,8 +31,8 @@
31
31
  },
32
32
  {
33
33
  "file": "shards/ashcombe-hall.jsonl.gz",
34
- "bytes": 1020,
35
- "sha256": "1255ea52149c3941fafd4ee462239bae8e10175c8e7db2e54c2c2dc1a2e0d924"
34
+ "bytes": 1292,
35
+ "sha256": "a8e61a93ebf992a8b87221c5a9a9f53bf92b7798cee86fb9d6915a1844d960dd"
36
36
  },
37
37
  {
38
38
  "file": "shards/spider-fly.jsonl.gz",
@@ -54,6 +54,33 @@
54
54
  {"world":"ashcombe-hall","kind":"fact","subject":"ashcombe hall","predicate":"mgx:hasA","object":"6 rooms"}
55
55
  {"world":"ashcombe-hall","kind":"fact","subject":"player","predicate":"mgx:hasA","object":"satchel"}
56
56
  {"world":"ashcombe-hall","kind":"fact","subject":"satchel","predicate":"mgx:usedFor","object":"carrying what the player takes"}
57
+ {"world":"ashcombe-hall","kind":"fact","subject":"room","predicate":"rdfs:subClassOf","object":"space"}
58
+ {"world":"ashcombe-hall","kind":"fact","subject":"outdoor-space","predicate":"rdfs:subClassOf","object":"space"}
59
+ {"world":"ashcombe-hall","kind":"fact","subject":"underground-space","predicate":"rdfs:subClassOf","object":"space"}
60
+ {"world":"ashcombe-hall","kind":"fact","subject":"garden","predicate":"rdf:type","object":"outdoor-space"}
61
+ {"world":"ashcombe-hall","kind":"fact","subject":"cellar","predicate":"rdf:type","object":"underground-space"}
62
+ {"world":"ashcombe-hall","kind":"fact","subject":"portrait","predicate":"rdfs:subClassOf","object":"painting"}
63
+ {"world":"ashcombe-hall","kind":"fact","subject":"painting","predicate":"mgx:default-plane","object":"wall"}
64
+ {"world":"ashcombe-hall","kind":"fact","subject":"furniture","predicate":"mgx:default-plane","object":"floor"}
65
+ {"world":"ashcombe-hall","kind":"fact","subject":"portable","predicate":"mgx:default-plane","object":"floor"}
66
+ {"world":"ashcombe-hall","kind":"fact","subject":"lamp","predicate":"mgx:on-top-of","object":"desk"}
67
+ {"world":"ashcombe-hall","kind":"fact","subject":"book","predicate":"rdfs:subClassOf","object":"portable"}
68
+ {"world":"ashcombe-hall","kind":"fact","subject":"pan","predicate":"rdfs:subClassOf","object":"portable"}
69
+ {"world":"ashcombe-hall","kind":"fact","subject":"library","predicate":"mgx:default-contains","object":"book"}
70
+ {"world":"ashcombe-hall","kind":"fact","subject":"kitchen","predicate":"mgx:default-contains","object":"pan"}
71
+ {"world":"ashcombe-hall","kind":"fact","subject":"gardener","predicate":"mgx:knows-where","object":"letter"}
72
+ {"world":"ashcombe-hall","kind":"fact","subject":"housekeeper","predicate":"mgx:knows-where","object":"key"}
73
+ {"world":"ashcombe-hall","kind":"fact","subject":"butler","predicate":"mgx:knows-objective","object":"letter"}
74
+ {"world":"ashcombe-hall","kind":"fact","subject":"butler","predicate":"mgx:knows-where","object":"housekeeper"}
75
+ {"world":"ashcombe-hall","kind":"fact","subject":"butler","predicate":"mgx:knows-where","object":"cook"}
76
+ {"world":"ashcombe-hall","kind":"fact","subject":"butler","predicate":"mgx:knows-where","object":"gardener"}
77
+ {"world":"ashcombe-hall","kind":"fact","subject":"cook","predicate":"mgx:knows-where","object":"gardener"}
78
+ {"world":"ashcombe-hall","kind":"fact","subject":"gardener","predicate":"mgx:knows-about","object":"garden"}
79
+ {"world":"ashcombe-hall","kind":"fact","subject":"housekeeper","predicate":"mgx:knows-about","object":"study"}
80
+ {"world":"ashcombe-hall","kind":"fact","subject":"butler","predicate":"mgx:knows-about","object":"drawing-room"}
81
+ {"world":"ashcombe-hall","kind":"fact","subject":"cook","predicate":"mgx:knows-about","object":"kitchen"}
82
+ {"world":"ashcombe-hall","kind":"fact","subject":"garden","predicate":"mgx:hasA","object":"old apple tree"}
83
+ {"world":"ashcombe-hall","kind":"fact","subject":"kitchen","predicate":"mgx:usedFor","object":"cooking the hall's meals"}
57
84
  {"world":"ashcombe-hall","kind":"rule","name":"go","ruleKind":"action-signature","slots":{"subjectClass":"adventurer","targetClass":"room"}}
58
85
  {"world":"ashcombe-hall","kind":"rule","name":"go","ruleKind":"action-signature","slots":{"subjectClass":"person","targetClass":"room"}}
59
86
  {"world":"ashcombe-hall","kind":"rule","name":"go","ruleKind":"action-effect","slots":{"predicate":"currently-in","subjectRole":"subject","objectRole":"target"}}
@@ -0,0 +1,12 @@
1
+ # book — the library's default portable: a closed hardback seen spine-on, the
2
+ # cover boards and a page block, so a taken book reads as its own thing rather
3
+ # than the generic portable box.
4
+ classes = ["book"]
5
+ svg = """
6
+ <svg viewBox="0 0 24 24" aria-hidden="true">
7
+ <path d="M6 3 H18 A1 1 0 0 1 19 4 V20 A1 1 0 0 1 18 21 H6 Z" fill="currentColor"/>
8
+ <rect x="6" y="3" width="1.8" height="18" fill="currentColor" opacity="0.4"/>
9
+ <path d="M9.4 3 V21" stroke="currentColor" stroke-width="0.5" opacity="0.35"/>
10
+ <path d="M11 7.5 H17 M11 10 H17 M11 12.5 H15" stroke="#000000" stroke-width="0.5" opacity="0.3"/>
11
+ </svg>
12
+ """
@@ -0,0 +1,12 @@
1
+ # cellar — an underground space: a room box with a stair stepping down and
2
+ # stone coursing, so the room-kind icon reads as below ground rather than a
3
+ # plain room, matching the underground border.
4
+ classes = ["cellar"]
5
+ svg = """
6
+ <svg viewBox="0 0 24 24" aria-hidden="true">
7
+ <rect x="3" y="3" width="18" height="18" rx="1" fill="currentColor" opacity="0.14"/>
8
+ <rect x="3" y="3" width="18" height="18" rx="1" fill="none" stroke="currentColor" stroke-width="1.6"/>
9
+ <path d="M6 8 H10 V11 H14 V14 H18 V18 H6 Z" fill="currentColor" opacity="0.55"/>
10
+ <path d="M3 12 H21 M3 16.5 H21" stroke="currentColor" stroke-width="0.5" opacity="0.4"/>
11
+ </svg>
12
+ """
@@ -0,0 +1,13 @@
1
+ # drawing-room — a room floor plan marked by a framed picture on the wall (the
2
+ # portrait hangs here), so the room-kind icon reads as the drawing room rather
3
+ # than a plain room.
4
+ classes = ["drawing-room"]
5
+ svg = """
6
+ <svg viewBox="0 0 24 24" aria-hidden="true">
7
+ <rect x="3" y="3" width="18" height="18" rx="1" fill="currentColor" opacity="0.14"/>
8
+ <rect x="3" y="3" width="18" height="18" rx="1" fill="none" stroke="currentColor" stroke-width="1.6"/>
9
+ <rect x="8.5" y="7" width="7" height="6" rx="0.4" fill="none" stroke="currentColor" stroke-width="1.3"/>
10
+ <circle cx="12" cy="9.4" r="1.1" fill="currentColor" opacity="0.7"/>
11
+ <path d="M9.6 12.4 C9.6 10.9 10.6 10 12 10 C13.4 10 14.4 10.9 14.4 12.4 Z" fill="currentColor" opacity="0.7"/>
12
+ </svg>
13
+ """
@@ -0,0 +1,12 @@
1
+ # garden — an outdoor space, so no room box: a tree over a ground line reads
2
+ # as open air rather than an interior, matching the outdoor room-kind border.
3
+ classes = ["garden"]
4
+ svg = """
5
+ <svg viewBox="0 0 24 24" aria-hidden="true">
6
+ <path d="M3 20 H21" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"/>
7
+ <path d="M12 20 V12" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"/>
8
+ <circle cx="12" cy="8.5" r="5" fill="currentColor" opacity="0.7"/>
9
+ <circle cx="7.5" cy="17" r="1" fill="currentColor" opacity="0.5"/>
10
+ <circle cx="16.5" cy="17" r="1" fill="currentColor" opacity="0.5"/>
11
+ </svg>
12
+ """
@@ -0,0 +1,13 @@
1
+ # kitchen — a room floor plan marked by a stove with two burners, the same
2
+ # distinguishing cue the large tier uses, so the room-kind icon reads as a
3
+ # kitchen rather than a plain room.
4
+ classes = ["kitchen"]
5
+ svg = """
6
+ <svg viewBox="0 0 24 24" aria-hidden="true">
7
+ <rect x="3" y="3" width="18" height="18" rx="1" fill="currentColor" opacity="0.14"/>
8
+ <rect x="3" y="3" width="18" height="18" rx="1" fill="none" stroke="currentColor" stroke-width="1.6"/>
9
+ <rect x="8" y="10" width="8" height="7" rx="0.6" fill="none" stroke="currentColor" stroke-width="1.2"/>
10
+ <circle cx="10.5" cy="12.6" r="1" fill="currentColor" opacity="0.7"/>
11
+ <circle cx="13.5" cy="12.6" r="1" fill="currentColor" opacity="0.7"/>
12
+ </svg>
13
+ """
@@ -0,0 +1,12 @@
1
+ # library — a room floor plan marked by an open book, so the room-kind icon
2
+ # reads as a library rather than a plain room: the washed square is room.toml's
3
+ # own shape, the two-page V is the same open-book cue the large tier uses.
4
+ classes = ["library"]
5
+ svg = """
6
+ <svg viewBox="0 0 24 24" aria-hidden="true">
7
+ <rect x="3" y="3" width="18" height="18" rx="1" fill="currentColor" opacity="0.14"/>
8
+ <rect x="3" y="3" width="18" height="18" rx="1" fill="none" stroke="currentColor" stroke-width="1.6"/>
9
+ <path d="M12 9 C10.4 7.9 8.2 7.6 6.4 8.1 V15.6 C8.2 15.1 10.4 15.4 12 16.5 C13.6 15.4 15.8 15.1 17.6 15.6 V8.1 C15.8 7.6 13.6 7.9 12 9 Z" fill="currentColor" opacity="0.75"/>
10
+ <path d="M12 9 V16.5" stroke="currentColor" stroke-width="0.5" opacity="0.5"/>
11
+ </svg>
12
+ """
@@ -0,0 +1,11 @@
1
+ # pan — the kitchen's default portable: a frying pan seen from above with a
2
+ # long handle, so a taken pan reads as its own thing rather than the generic
3
+ # portable box.
4
+ classes = ["pan"]
5
+ svg = """
6
+ <svg viewBox="0 0 24 24" aria-hidden="true">
7
+ <circle cx="10" cy="14" r="6" fill="currentColor"/>
8
+ <circle cx="10" cy="14" r="3.6" fill="currentColor" opacity="0.35"/>
9
+ <rect x="15" y="13" width="7" height="2" rx="1" fill="currentColor"/>
10
+ </svg>
11
+ """
@@ -0,0 +1,12 @@
1
+ # study — a room floor plan marked by a writing desk against one wall, so the
2
+ # room-kind icon reads as the study you start in rather than a plain room.
3
+ classes = ["study"]
4
+ svg = """
5
+ <svg viewBox="0 0 24 24" aria-hidden="true">
6
+ <rect x="3" y="3" width="18" height="18" rx="1" fill="currentColor" opacity="0.14"/>
7
+ <rect x="3" y="3" width="18" height="18" rx="1" fill="none" stroke="currentColor" stroke-width="1.6"/>
8
+ <rect x="7" y="11" width="10" height="2.4" fill="currentColor" opacity="0.7"/>
9
+ <path d="M8 13.4 V17 M16 13.4 V17" stroke="currentColor" stroke-width="1.2"/>
10
+ <rect x="9.6" y="7.6" width="4.8" height="3" fill="none" stroke="currentColor" stroke-width="1"/>
11
+ </svg>
12
+ """
@@ -68,6 +68,7 @@
68
68
  {"id":"identity-self","class":"conversational","register":"friendly","template":"I'm tmct — a deterministic, offline chat assistant. No LLM: wink-nlp parsing over a seeded ontology/lexicon, plus a code graph when you point me at a repo with `--repo <path>`. /help for commands, /stats for an overview."}
69
69
  {"id":"identity-not-an-llm","class":"conversational","register":"friendly","template":"No — no LLM involved. tmct is deterministic: wink-nlp parsing over a graph/ontology, not a language model. /help for commands."}
70
70
  {"id":"identity-no-feelings","class":"conversational","register":"friendly","template":"No — I don't have feelings, opinions, or consciousness. tmct is deterministic: wink-nlp parsing over a graph/ontology, not a mind. /help for commands."}
71
+ {"id":"identity-honest-miss","class":"conversational","register":"friendly","template":"No — I never make up an answer. If a question doesn't ground to a taught fact or a real graph entity, I say so plainly instead of guessing. /help for commands."}
71
72
  {"id":"technical-density","class":"count","register":"technical","template":"{subject} carries {count} {noun} across {scope} — a concentration well above what a codebase of this size typically sustains ({provenance})."}
72
73
  {"id":"technical-comparison","class":"count","register":"technical","template":"At {count} {noun}, {subject} sits {comparison} the comparable-project baseline, a divergence that reflects deliberate structure rather than measurement noise ({provenance})."}
73
74
  {"id":"technical-superlative","class":"count","register":"technical","template":"No {noun} in {scope} is more {metric} than {subject}; it leads the next candidate by a clear margin of {count} ({provenance})."}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@polycode-projects/the-mechanical-code-talker",
3
- "version": "2.10.5",
3
+ "version": "2.11.1",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "description": "The Mechanical Code Talker (tmct) — a tolerant, offline, $0 chat surface that guides you toward precision queries about a software repository. ELIZA/PARRY-style but domain-obsessed with code. No model calls; no codebase index of its own.",
@@ -86,8 +86,11 @@
86
86
  "test": "node --disable-warning=ExperimentalWarning --test --test-concurrency=8 \"test/**/*.test.mjs\"",
87
87
  "test:smoke": "node --disable-warning=ExperimentalWarning --test test/smoke/*.test.mjs",
88
88
  "test:fast": "node --disable-warning=ExperimentalWarning --test --test-concurrency=8 test/smoke/*.test.mjs test/fast/*.test.mjs test/tools/ask.test.mjs test/tools/server.test.mjs test/estate/import-layers.test.mjs",
89
- "test:e2e": "node --disable-warning=ExperimentalWarning --test \"e2e/**/*.test.mjs\"",
89
+ "test:e2e": "node --disable-warning=ExperimentalWarning --test \"e2e/*.test.mjs\"",
90
+ "test:e2e:heavy": "node --disable-warning=ExperimentalWarning --test \"e2e/heavy/*.test.mjs\"",
91
+ "check:readme": "TMCT_CHECK_README=1 node --disable-warning=ExperimentalWarning --test e2e/readme-examples.test.mjs",
90
92
  "e2e:browsers": "playwright install chromium",
93
+ "gen:screenshots": "node scripts/gen-screenshots.mjs",
91
94
  "check:links": "node scripts/check-links.mjs",
92
95
  "check:pii": "node scripts/pii-lint.mjs",
93
96
  "check:pack": "node scripts/check-pack-manifest.mjs",