@polycode-projects/the-mechanical-code-talker 3.2.0 → 3.3.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.
- package/corpus/sprites/src/sprite-facts.jsonl +10 -0
- package/corpus/tier2/generate.mjs +10 -1
- package/corpus/tier2/human.jsonl +23 -0
- package/corpus/tier2/manifest.json +3 -3
- package/corpus/worlds/index.json.gz +0 -0
- package/corpus/worlds/manifest.json +15 -5
- package/corpus/worlds/shards/mud-garden.jsonl.gz +0 -0
- package/corpus/worlds/src/mud-garden.jsonl +68 -0
- package/package.json +2 -1
- package/src/domain/game-config.mjs +46 -0
- package/src/domain/grammar/ace.mjs +11 -3
- package/src/domain/grammar/lexicon-core.json +3 -0
- package/src/domain/memory/trust.mjs +13 -0
- package/src/services/adventure.mjs +351 -62
- package/src/services/chat-session.mjs +28 -3
- package/src/services/chat.mjs +2 -2
- package/src/services/mud-turn.mjs +395 -0
- package/src/services/mud-viz.mjs +752 -0
- package/src/surfaces/web/memory-ask-browser.bundle.js +60 -60
- package/src/surfaces/web/mud-browser-entry.mjs +164 -0
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
{"subject":"audience sprite","predicate":"rdf:type","object":"sprite class"}
|
|
9
9
|
{"subject":"autumn sprite","predicate":"rdf:type","object":"sprite class"}
|
|
10
10
|
{"subject":"baby sprite","predicate":"rdf:type","object":"sprite class"}
|
|
11
|
+
{"subject":"badger sprite","predicate":"rdf:type","object":"sprite class"}
|
|
11
12
|
{"subject":"bathroom sprite","predicate":"rdf:type","object":"sprite class"}
|
|
12
13
|
{"subject":"beach sprite","predicate":"rdf:type","object":"sprite class"}
|
|
13
14
|
{"subject":"bear sprite","predicate":"rdf:type","object":"sprite class"}
|
|
@@ -85,6 +86,7 @@
|
|
|
85
86
|
{"subject":"grandfather sprite","predicate":"rdf:type","object":"sprite class"}
|
|
86
87
|
{"subject":"grandmother sprite","predicate":"rdf:type","object":"sprite class"}
|
|
87
88
|
{"subject":"grass sprite","predicate":"rdf:type","object":"sprite class"}
|
|
89
|
+
{"subject":"groundhog sprite","predicate":"rdf:type","object":"sprite class"}
|
|
88
90
|
{"subject":"guest sprite","predicate":"rdf:type","object":"sprite class"}
|
|
89
91
|
{"subject":"hat sprite","predicate":"rdf:type","object":"sprite class"}
|
|
90
92
|
{"subject":"hate sprite","predicate":"rdf:type","object":"sprite class"}
|
|
@@ -118,8 +120,10 @@
|
|
|
118
120
|
{"subject":"market sprite","predicate":"rdf:type","object":"sprite class"}
|
|
119
121
|
{"subject":"meal sprite","predicate":"rdf:type","object":"sprite class"}
|
|
120
122
|
{"subject":"meat sprite","predicate":"rdf:type","object":"sprite class"}
|
|
123
|
+
{"subject":"meerkat sprite","predicate":"rdf:type","object":"sprite class"}
|
|
121
124
|
{"subject":"meeting sprite","predicate":"rdf:type","object":"sprite class"}
|
|
122
125
|
{"subject":"metal sprite","predicate":"rdf:type","object":"sprite class"}
|
|
126
|
+
{"subject":"mole sprite","predicate":"rdf:type","object":"sprite class"}
|
|
123
127
|
{"subject":"money sprite","predicate":"rdf:type","object":"sprite class"}
|
|
124
128
|
{"subject":"mother sprite","predicate":"rdf:type","object":"sprite class"}
|
|
125
129
|
{"subject":"mountain sprite","predicate":"rdf:type","object":"sprite class"}
|
|
@@ -190,6 +194,7 @@
|
|
|
190
194
|
{"subject":"vehicle sprite","predicate":"rdf:type","object":"sprite class"}
|
|
191
195
|
{"subject":"village sprite","predicate":"rdf:type","object":"sprite class"}
|
|
192
196
|
{"subject":"visitor sprite","predicate":"rdf:type","object":"sprite class"}
|
|
197
|
+
{"subject":"vole sprite","predicate":"rdf:type","object":"sprite class"}
|
|
193
198
|
{"subject":"volunteer sprite","predicate":"rdf:type","object":"sprite class"}
|
|
194
199
|
{"subject":"water sprite","predicate":"rdf:type","object":"sprite class"}
|
|
195
200
|
{"subject":"waterway sprite","predicate":"rdf:type","object":"sprite class"}
|
|
@@ -241,6 +246,7 @@
|
|
|
241
246
|
{"subject":"audience sprite","predicate":"mgx:render-at","object":"sprite tier"}
|
|
242
247
|
{"subject":"autumn sprite","predicate":"mgx:render-at","object":"sprite tier"}
|
|
243
248
|
{"subject":"baby sprite","predicate":"mgx:render-at","object":"sprite tier"}
|
|
249
|
+
{"subject":"badger sprite","predicate":"mgx:render-at","object":"sprite tier"}
|
|
244
250
|
{"subject":"bathroom sprite","predicate":"mgx:render-at","object":"sprite tier"}
|
|
245
251
|
{"subject":"beach sprite","predicate":"mgx:render-at","object":"sprite tier"}
|
|
246
252
|
{"subject":"bear sprite","predicate":"mgx:render-at","object":"sprite tier"}
|
|
@@ -318,6 +324,7 @@
|
|
|
318
324
|
{"subject":"grandfather sprite","predicate":"mgx:render-at","object":"sprite tier"}
|
|
319
325
|
{"subject":"grandmother sprite","predicate":"mgx:render-at","object":"sprite tier"}
|
|
320
326
|
{"subject":"grass sprite","predicate":"mgx:render-at","object":"sprite tier"}
|
|
327
|
+
{"subject":"groundhog sprite","predicate":"mgx:render-at","object":"sprite tier"}
|
|
321
328
|
{"subject":"guest sprite","predicate":"mgx:render-at","object":"sprite tier"}
|
|
322
329
|
{"subject":"hat sprite","predicate":"mgx:render-at","object":"sprite tier"}
|
|
323
330
|
{"subject":"hate sprite","predicate":"mgx:render-at","object":"sprite tier"}
|
|
@@ -351,8 +358,10 @@
|
|
|
351
358
|
{"subject":"market sprite","predicate":"mgx:render-at","object":"sprite tier"}
|
|
352
359
|
{"subject":"meal sprite","predicate":"mgx:render-at","object":"sprite tier"}
|
|
353
360
|
{"subject":"meat sprite","predicate":"mgx:render-at","object":"sprite tier"}
|
|
361
|
+
{"subject":"meerkat sprite","predicate":"mgx:render-at","object":"sprite tier"}
|
|
354
362
|
{"subject":"meeting sprite","predicate":"mgx:render-at","object":"sprite tier"}
|
|
355
363
|
{"subject":"metal sprite","predicate":"mgx:render-at","object":"sprite tier"}
|
|
364
|
+
{"subject":"mole sprite","predicate":"mgx:render-at","object":"sprite tier"}
|
|
356
365
|
{"subject":"money sprite","predicate":"mgx:render-at","object":"sprite tier"}
|
|
357
366
|
{"subject":"mother sprite","predicate":"mgx:render-at","object":"sprite tier"}
|
|
358
367
|
{"subject":"mountain sprite","predicate":"mgx:render-at","object":"sprite tier"}
|
|
@@ -423,6 +432,7 @@
|
|
|
423
432
|
{"subject":"vehicle sprite","predicate":"mgx:render-at","object":"sprite tier"}
|
|
424
433
|
{"subject":"village sprite","predicate":"mgx:render-at","object":"sprite tier"}
|
|
425
434
|
{"subject":"visitor sprite","predicate":"mgx:render-at","object":"sprite tier"}
|
|
435
|
+
{"subject":"vole sprite","predicate":"mgx:render-at","object":"sprite tier"}
|
|
426
436
|
{"subject":"volunteer sprite","predicate":"mgx:render-at","object":"sprite tier"}
|
|
427
437
|
{"subject":"water sprite","predicate":"mgx:render-at","object":"sprite tier"}
|
|
428
438
|
{"subject":"waterway sprite","predicate":"mgx:render-at","object":"sprite tier"}
|
|
@@ -297,6 +297,7 @@ export const CORPUSES = {
|
|
|
297
297
|
// human-nature
|
|
298
298
|
"dog", "cat", "horse", "cow", "pig", "sheep", "bird", "fish",
|
|
299
299
|
"mouse", "rabbit", "bear", "lion", "tiger", "elephant", "snake",
|
|
300
|
+
"mole", "vole", "badger", "groundhog", "meerkat",
|
|
300
301
|
"tree", "flower", "grass", "leaf", "root", "seed", "fruit", "water",
|
|
301
302
|
"air", "fire", "earth", "stone", "sand", "gold", "iron", "rain",
|
|
302
303
|
"snow", "wind", "cloud", "sun", "moon", "star", "owl", "wolf",
|
|
@@ -313,7 +314,7 @@ export const CORPUSES = {
|
|
|
313
314
|
"bread", "meat", "milk", "egg", "cheese", "vegetable", "meal",
|
|
314
315
|
"breakfast", "dinner", "drink", "wine", "tea", "coffee", "tongue",
|
|
315
316
|
"tooth", "finger", "toe", "shoulder", "knee", "brain", "lung",
|
|
316
|
-
"sugar", "salt",
|
|
317
|
+
"sugar", "salt", "carrot", "lettuce", "tomato",
|
|
317
318
|
// human-mind
|
|
318
319
|
"word", "story", "news", "idea", "thought", "mind", "memory",
|
|
319
320
|
"dream", "belief", "love", "hate", "fear", "joy", "anger", "hope",
|
|
@@ -568,6 +569,11 @@ export const CORPUSES = {
|
|
|
568
569
|
["ant", "/r/IsA", "insect"],
|
|
569
570
|
["butterfly", "/r/IsA", "insect"], ["butterfly", "/r/HasProperty", "colorful"],
|
|
570
571
|
["spider", "/r/IsA", "animal"], ["spider", "/r/HasA", "leg"],
|
|
572
|
+
["mole", "/r/IsA", "mammal"], ["mole", "/r/HasProperty", "small"], ["mole", "/r/CapableOf", "dig"],
|
|
573
|
+
["vole", "/r/IsA", "rodent"], ["vole", "/r/HasProperty", "small"], ["vole", "/r/CapableOf", "burrow"],
|
|
574
|
+
["badger", "/r/IsA", "mammal"], ["badger", "/r/HasProperty", "large"], ["badger", "/r/CapableOf", "dig"],
|
|
575
|
+
["groundhog", "/r/IsA", "rodent"], ["groundhog", "/r/HasProperty", "burrowing"], ["groundhog", "/r/CapableOf", "hibernate"],
|
|
576
|
+
["meerkat", "/r/IsA", "mammal"], ["meerkat", "/r/HasProperty", "social"], ["meerkat", "/r/CapableOf", "stand_upright"],
|
|
571
577
|
["river", "/r/IsA", "waterway"], ["river", "/r/CapableOf", "flow"],
|
|
572
578
|
["ocean", "/r/IsA", "body_of_water"], ["ocean", "/r/HasProperty", "salty"],
|
|
573
579
|
|
|
@@ -643,6 +649,9 @@ export const CORPUSES = {
|
|
|
643
649
|
["lung", "/r/PartOf", "body"], ["lung", "/r/UsedFor", "breathing"],
|
|
644
650
|
["sugar", "/r/IsA", "food"], ["sugar", "/r/HasProperty", "sweet"],
|
|
645
651
|
["salt", "/r/IsA", "food"], ["salt", "/r/HasProperty", "salty"],
|
|
652
|
+
["carrot", "/r/IsA", "vegetable"], ["carrot", "/r/AtLocation", "garden"], ["carrot", "/r/HasProperty", "orange"],
|
|
653
|
+
["lettuce", "/r/IsA", "vegetable"], ["lettuce", "/r/AtLocation", "garden"],
|
|
654
|
+
["tomato", "/r/IsA", "vegetable"], ["tomato", "/r/AtLocation", "garden"], ["tomato", "/r/HasProperty", "red"],
|
|
646
655
|
|
|
647
656
|
// ---- human-mind (~70 facts) ----
|
|
648
657
|
["word", "/r/PartOf", "language"], ["word", "/r/UsedFor", "communicating"],
|
package/corpus/tier2/human.jsonl
CHANGED
|
@@ -440,6 +440,21 @@
|
|
|
440
440
|
{"start":"/c/en/butterfly","rel":"/r/HasProperty","end":"/c/en/colorful","weight":1,"surfaceText":"[[butterfly]] HasProperty [[colorful]]"}
|
|
441
441
|
{"start":"/c/en/spider","rel":"/r/IsA","end":"/c/en/animal","weight":1,"surfaceText":"[[spider]] IsA [[animal]]"}
|
|
442
442
|
{"start":"/c/en/spider","rel":"/r/HasA","end":"/c/en/leg","weight":1,"surfaceText":"[[spider]] HasA [[leg]]"}
|
|
443
|
+
{"start":"/c/en/mole","rel":"/r/IsA","end":"/c/en/mammal","weight":1,"surfaceText":"[[mole]] IsA [[mammal]]"}
|
|
444
|
+
{"start":"/c/en/mole","rel":"/r/HasProperty","end":"/c/en/small","weight":1,"surfaceText":"[[mole]] HasProperty [[small]]"}
|
|
445
|
+
{"start":"/c/en/mole","rel":"/r/CapableOf","end":"/c/en/dig","weight":1,"surfaceText":"[[mole]] CapableOf [[dig]]"}
|
|
446
|
+
{"start":"/c/en/vole","rel":"/r/IsA","end":"/c/en/rodent","weight":1,"surfaceText":"[[vole]] IsA [[rodent]]"}
|
|
447
|
+
{"start":"/c/en/vole","rel":"/r/HasProperty","end":"/c/en/small","weight":1,"surfaceText":"[[vole]] HasProperty [[small]]"}
|
|
448
|
+
{"start":"/c/en/vole","rel":"/r/CapableOf","end":"/c/en/burrow","weight":1,"surfaceText":"[[vole]] CapableOf [[burrow]]"}
|
|
449
|
+
{"start":"/c/en/badger","rel":"/r/IsA","end":"/c/en/mammal","weight":1,"surfaceText":"[[badger]] IsA [[mammal]]"}
|
|
450
|
+
{"start":"/c/en/badger","rel":"/r/HasProperty","end":"/c/en/large","weight":1,"surfaceText":"[[badger]] HasProperty [[large]]"}
|
|
451
|
+
{"start":"/c/en/badger","rel":"/r/CapableOf","end":"/c/en/dig","weight":1,"surfaceText":"[[badger]] CapableOf [[dig]]"}
|
|
452
|
+
{"start":"/c/en/groundhog","rel":"/r/IsA","end":"/c/en/rodent","weight":1,"surfaceText":"[[groundhog]] IsA [[rodent]]"}
|
|
453
|
+
{"start":"/c/en/groundhog","rel":"/r/HasProperty","end":"/c/en/burrowing","weight":1,"surfaceText":"[[groundhog]] HasProperty [[burrowing]]"}
|
|
454
|
+
{"start":"/c/en/groundhog","rel":"/r/CapableOf","end":"/c/en/hibernate","weight":1,"surfaceText":"[[groundhog]] CapableOf [[hibernate]]"}
|
|
455
|
+
{"start":"/c/en/meerkat","rel":"/r/IsA","end":"/c/en/mammal","weight":1,"surfaceText":"[[meerkat]] IsA [[mammal]]"}
|
|
456
|
+
{"start":"/c/en/meerkat","rel":"/r/HasProperty","end":"/c/en/social","weight":1,"surfaceText":"[[meerkat]] HasProperty [[social]]"}
|
|
457
|
+
{"start":"/c/en/meerkat","rel":"/r/CapableOf","end":"/c/en/stand_upright","weight":1,"surfaceText":"[[meerkat]] CapableOf [[stand upright]]"}
|
|
443
458
|
{"start":"/c/en/river","rel":"/r/IsA","end":"/c/en/waterway","weight":1,"surfaceText":"[[river]] IsA [[waterway]]"}
|
|
444
459
|
{"start":"/c/en/river","rel":"/r/CapableOf","end":"/c/en/flow","weight":1,"surfaceText":"[[river]] CapableOf [[flow]]"}
|
|
445
460
|
{"start":"/c/en/ocean","rel":"/r/IsA","end":"/c/en/body_of_water","weight":1,"surfaceText":"[[ocean]] IsA [[body of water]]"}
|
|
@@ -582,6 +597,14 @@
|
|
|
582
597
|
{"start":"/c/en/sugar","rel":"/r/HasProperty","end":"/c/en/sweet","weight":1,"surfaceText":"[[sugar]] HasProperty [[sweet]]"}
|
|
583
598
|
{"start":"/c/en/salt","rel":"/r/IsA","end":"/c/en/food","weight":1,"surfaceText":"[[salt]] IsA [[food]]"}
|
|
584
599
|
{"start":"/c/en/salt","rel":"/r/HasProperty","end":"/c/en/salty","weight":1,"surfaceText":"[[salt]] HasProperty [[salty]]"}
|
|
600
|
+
{"start":"/c/en/carrot","rel":"/r/IsA","end":"/c/en/vegetable","weight":1,"surfaceText":"[[carrot]] IsA [[vegetable]]"}
|
|
601
|
+
{"start":"/c/en/carrot","rel":"/r/AtLocation","end":"/c/en/garden","weight":1,"surfaceText":"[[carrot]] AtLocation [[garden]]"}
|
|
602
|
+
{"start":"/c/en/carrot","rel":"/r/HasProperty","end":"/c/en/orange","weight":1,"surfaceText":"[[carrot]] HasProperty [[orange]]"}
|
|
603
|
+
{"start":"/c/en/lettuce","rel":"/r/IsA","end":"/c/en/vegetable","weight":1,"surfaceText":"[[lettuce]] IsA [[vegetable]]"}
|
|
604
|
+
{"start":"/c/en/lettuce","rel":"/r/AtLocation","end":"/c/en/garden","weight":1,"surfaceText":"[[lettuce]] AtLocation [[garden]]"}
|
|
605
|
+
{"start":"/c/en/tomato","rel":"/r/IsA","end":"/c/en/vegetable","weight":1,"surfaceText":"[[tomato]] IsA [[vegetable]]"}
|
|
606
|
+
{"start":"/c/en/tomato","rel":"/r/AtLocation","end":"/c/en/garden","weight":1,"surfaceText":"[[tomato]] AtLocation [[garden]]"}
|
|
607
|
+
{"start":"/c/en/tomato","rel":"/r/HasProperty","end":"/c/en/red","weight":1,"surfaceText":"[[tomato]] HasProperty [[red]]"}
|
|
585
608
|
{"start":"/c/en/word","rel":"/r/PartOf","end":"/c/en/language","weight":1,"surfaceText":"[[word]] PartOf [[language]]"}
|
|
586
609
|
{"start":"/c/en/word","rel":"/r/UsedFor","end":"/c/en/communicating","weight":1,"surfaceText":"[[word]] UsedFor [[communicating]]"}
|
|
587
610
|
{"start":"/c/en/language","rel":"/r/UsedFor","end":"/c/en/communicating","weight":1,"surfaceText":"[[language]] UsedFor [[communicating]]"}
|
|
@@ -67,9 +67,9 @@
|
|
|
67
67
|
"tool": "corpus/tier2/generate.mjs"
|
|
68
68
|
},
|
|
69
69
|
"file": "human.jsonl",
|
|
70
|
-
"facts":
|
|
71
|
-
"bytes":
|
|
72
|
-
"sha256": "
|
|
70
|
+
"facts": 688,
|
|
71
|
+
"bytes": 84400,
|
|
72
|
+
"sha256": "8aaf9f8300d63c5ef94e9ca06452a4be152872bda720ad810586fdb77b06f785",
|
|
73
73
|
"license": "MPL-2.0"
|
|
74
74
|
},
|
|
75
75
|
{
|
|
Binary file
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
"version": 1,
|
|
3
3
|
"generated": "by scripts/build-worlds-pack.mjs from corpus/worlds/src/",
|
|
4
4
|
"counts": {
|
|
5
|
-
"worlds":
|
|
6
|
-
"facts":
|
|
7
|
-
"rules":
|
|
5
|
+
"worlds": 3,
|
|
6
|
+
"facts": 621,
|
|
7
|
+
"rules": 40
|
|
8
8
|
},
|
|
9
9
|
"budgets": {
|
|
10
10
|
"sourceBytesPerWorld": 131072,
|
|
@@ -17,6 +17,11 @@
|
|
|
17
17
|
"bytes": 11754,
|
|
18
18
|
"sha256": "18e58700a59ae3876dd4f949ede7fa17e19f3a8c2dc8ae4644dbddf98c138524"
|
|
19
19
|
},
|
|
20
|
+
{
|
|
21
|
+
"file": "src/mud-garden.jsonl",
|
|
22
|
+
"bytes": 8153,
|
|
23
|
+
"sha256": "fe60529dc755ee4318c8852448d8b8073bf10bc162c2dcf0ea16d87c83246443"
|
|
24
|
+
},
|
|
20
25
|
{
|
|
21
26
|
"file": "src/spider-fly.jsonl",
|
|
22
27
|
"bytes": 53693,
|
|
@@ -26,14 +31,19 @@
|
|
|
26
31
|
"files": [
|
|
27
32
|
{
|
|
28
33
|
"file": "index.json.gz",
|
|
29
|
-
"bytes":
|
|
30
|
-
"sha256": "
|
|
34
|
+
"bytes": 80,
|
|
35
|
+
"sha256": "7778b3a2652c20a9c12176ccdba95953eb271b99d1218e20898be17ed0317a71"
|
|
31
36
|
},
|
|
32
37
|
{
|
|
33
38
|
"file": "shards/ashcombe-hall.jsonl.gz",
|
|
34
39
|
"bytes": 1292,
|
|
35
40
|
"sha256": "a8e61a93ebf992a8b87221c5a9a9f53bf92b7798cee86fb9d6915a1844d960dd"
|
|
36
41
|
},
|
|
42
|
+
{
|
|
43
|
+
"file": "shards/mud-garden.jsonl.gz",
|
|
44
|
+
"bytes": 907,
|
|
45
|
+
"sha256": "7e7f176deda2bbf4e4d91d0885779467bc3c37a4bb61fb117fa27108ecc20380"
|
|
46
|
+
},
|
|
37
47
|
{
|
|
38
48
|
"file": "shards/spider-fly.jsonl.gz",
|
|
39
49
|
"bytes": 3156,
|
|
Binary file
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
{"world":"mud-garden","kind":"meta","opening":"a vegetable garden on a wet morning, with a burrow already running under it. Say \"look\" to look around, \"go down\" to follow the burrow, and \"dig north\" (or south, east, west, up, down) to open a new room."}
|
|
2
|
+
{"world":"mud-garden","kind":"fact","subject":"garden","predicate":"rdf:type","object":"room"}
|
|
3
|
+
{"world":"mud-garden","kind":"fact","subject":"burrow-1","predicate":"rdf:type","object":"room"}
|
|
4
|
+
{"world":"mud-garden","kind":"fact","subject":"sett-1","predicate":"rdf:type","object":"room"}
|
|
5
|
+
{"world":"mud-garden","kind":"fact","subject":"garden","predicate":"mgx:has-exit-down","object":"burrow-1"}
|
|
6
|
+
{"world":"mud-garden","kind":"fact","subject":"burrow-1","predicate":"mgx:has-exit-up","object":"garden"}
|
|
7
|
+
{"world":"mud-garden","kind":"fact","subject":"burrow-1","predicate":"mgx:has-exit-east","object":"sett-1"}
|
|
8
|
+
{"world":"mud-garden","kind":"fact","subject":"sett-1","predicate":"mgx:has-exit-west","object":"burrow-1"}
|
|
9
|
+
{"world":"mud-garden","kind":"fact","subject":"mole-1","predicate":"rdf:type","object":"adventurer"}
|
|
10
|
+
{"world":"mud-garden","kind":"fact","subject":"vole-1","predicate":"rdf:type","object":"adventurer"}
|
|
11
|
+
{"world":"mud-garden","kind":"fact","subject":"badger-2","predicate":"rdf:type","object":"adventurer"}
|
|
12
|
+
{"world":"mud-garden","kind":"fact","subject":"groundhog-1","predicate":"rdf:type","object":"adventurer"}
|
|
13
|
+
{"world":"mud-garden","kind":"fact","subject":"mole-1","predicate":"mgx:currently-in","object":"garden"}
|
|
14
|
+
{"world":"mud-garden","kind":"fact","subject":"vole-1","predicate":"mgx:currently-in","object":"garden"}
|
|
15
|
+
{"world":"mud-garden","kind":"fact","subject":"badger-2","predicate":"mgx:currently-in","object":"sett-1"}
|
|
16
|
+
{"world":"mud-garden","kind":"fact","subject":"groundhog-1","predicate":"mgx:currently-in","object":"sett-1"}
|
|
17
|
+
{"world":"mud-garden","kind":"fact","subject":"mole-1","predicate":"mgx:hasMass","object":"8"}
|
|
18
|
+
{"world":"mud-garden","kind":"fact","subject":"vole-1","predicate":"mgx:hasMass","object":"6"}
|
|
19
|
+
{"world":"mud-garden","kind":"fact","subject":"badger-2","predicate":"mgx:hasMass","object":"9"}
|
|
20
|
+
{"world":"mud-garden","kind":"fact","subject":"groundhog-1","predicate":"mgx:hasMass","object":"7"}
|
|
21
|
+
{"world":"mud-garden","kind":"fact","subject":"food","predicate":"rdfs:subClassOf","object":"portable"}
|
|
22
|
+
{"world":"mud-garden","kind":"fact","subject":"carrot","predicate":"rdfs:subClassOf","object":"food"}
|
|
23
|
+
{"world":"mud-garden","kind":"fact","subject":"lettuce","predicate":"rdfs:subClassOf","object":"food"}
|
|
24
|
+
{"world":"mud-garden","kind":"fact","subject":"tomato","predicate":"rdfs:subClassOf","object":"food"}
|
|
25
|
+
{"world":"mud-garden","kind":"fact","subject":"carrot","predicate":"rdf:type","object":"carrot"}
|
|
26
|
+
{"world":"mud-garden","kind":"fact","subject":"carrot","predicate":"mgx:located-in","object":"garden"}
|
|
27
|
+
{"world":"mud-garden","kind":"fact","subject":"carrot","predicate":"mgx:hasMass","object":"3"}
|
|
28
|
+
{"world":"mud-garden","kind":"fact","subject":"lettuce","predicate":"rdf:type","object":"lettuce"}
|
|
29
|
+
{"world":"mud-garden","kind":"fact","subject":"lettuce","predicate":"mgx:located-in","object":"sett-1"}
|
|
30
|
+
{"world":"mud-garden","kind":"fact","subject":"lettuce","predicate":"mgx:hasMass","object":"2"}
|
|
31
|
+
{"world":"mud-garden","kind":"fact","subject":"tomato","predicate":"rdf:type","object":"tomato"}
|
|
32
|
+
{"world":"mud-garden","kind":"fact","subject":"tomato","predicate":"mgx:located-in","object":"sett-1"}
|
|
33
|
+
{"world":"mud-garden","kind":"fact","subject":"tomato","predicate":"mgx:hasMass","object":"2"}
|
|
34
|
+
{"world":"mud-garden","kind":"fact","subject":"stone","predicate":"rdf:type","object":"portable"}
|
|
35
|
+
{"world":"mud-garden","kind":"fact","subject":"stone","predicate":"mgx:located-in","object":"garden"}
|
|
36
|
+
{"world":"mud-garden","kind":"fact","subject":"seed","predicate":"rdf:type","object":"portable"}
|
|
37
|
+
{"world":"mud-garden","kind":"fact","subject":"seed","predicate":"mgx:located-in","object":"burrow-1"}
|
|
38
|
+
{"world":"mud-garden","kind":"fact","subject":"basket","predicate":"rdf:type","object":"furniture"}
|
|
39
|
+
{"world":"mud-garden","kind":"fact","subject":"basket","predicate":"mgx:fixed-in","object":"garden"}
|
|
40
|
+
{"world":"mud-garden","kind":"fact","subject":"basket","predicate":"mgx:is-container","object":"true"}
|
|
41
|
+
{"world":"mud-garden","kind":"fact","subject":"basket","predicate":"mgx:is-open","object":"true"}
|
|
42
|
+
{"world":"mud-garden","kind":"fact","subject":"room","predicate":"rdfs:subClassOf","object":"space"}
|
|
43
|
+
{"world":"mud-garden","kind":"fact","subject":"garden","predicate":"rdf:type","object":"outdoor-space"}
|
|
44
|
+
{"world":"mud-garden","kind":"fact","subject":"burrow-1","predicate":"rdf:type","object":"underground-space"}
|
|
45
|
+
{"world":"mud-garden","kind":"fact","subject":"sett-1","predicate":"rdf:type","object":"underground-space"}
|
|
46
|
+
{"world":"mud-garden","kind":"fact","subject":"outdoor-space","predicate":"rdfs:subClassOf","object":"space"}
|
|
47
|
+
{"world":"mud-garden","kind":"fact","subject":"underground-space","predicate":"rdfs:subClassOf","object":"space"}
|
|
48
|
+
{"world":"mud-garden","kind":"rule","name":"go","ruleKind":"action-signature","slots":{"subjectClass":"adventurer","targetClass":"room"}}
|
|
49
|
+
{"world":"mud-garden","kind":"rule","name":"go","ruleKind":"action-signature","slots":{"subjectClass":"person","targetClass":"room"}}
|
|
50
|
+
{"world":"mud-garden","kind":"rule","name":"go","ruleKind":"action-effect","slots":{"predicate":"currently-in","subjectRole":"subject","objectRole":"target"}}
|
|
51
|
+
{"world":"mud-garden","kind":"rule","name":"take","ruleKind":"action-signature","slots":{"subjectClass":"portable","targetClass":"adventurer"}}
|
|
52
|
+
{"world":"mud-garden","kind":"rule","name":"take","ruleKind":"action-effect","slots":{"predicate":"located-in","subjectRole":"subject","objectRole":"target"}}
|
|
53
|
+
{"world":"mud-garden","kind":"rule","name":"drop","ruleKind":"action-signature","slots":{"subjectClass":"portable","targetClass":"room"}}
|
|
54
|
+
{"world":"mud-garden","kind":"rule","name":"drop","ruleKind":"action-effect","slots":{"predicate":"located-in","subjectRole":"subject","objectRole":"target"}}
|
|
55
|
+
{"world":"mud-garden","kind":"rule","name":"give","ruleKind":"action-signature","slots":{"subjectClass":"portable","targetClass":"person"}}
|
|
56
|
+
{"world":"mud-garden","kind":"rule","name":"give","ruleKind":"action-effect","slots":{"predicate":"located-in","subjectRole":"subject","objectRole":"target"}}
|
|
57
|
+
{"world":"mud-garden","kind":"rule","name":"open","ruleKind":"action-signature","slots":{"subjectClass":"adventurer","targetClass":"furniture"}}
|
|
58
|
+
{"world":"mud-garden","kind":"rule","name":"open","ruleKind":"action-precond","slots":{"shape":"fact-value","predicate":"stands-locked-in","role":"target","scope":"any","negate":"true"}}
|
|
59
|
+
{"world":"mud-garden","kind":"rule","name":"open","ruleKind":"action-precond","slots":{"shape":"fact-value","predicate":"is-open","role":"target","scope":"any","value":"true","negate":"true"}}
|
|
60
|
+
{"world":"mud-garden","kind":"rule","name":"open","ruleKind":"action-effect","slots":{"predicate":"is-open","subjectRole":"target","value":"true"}}
|
|
61
|
+
{"world":"mud-garden","kind":"rule","name":"close","ruleKind":"action-signature","slots":{"subjectClass":"adventurer","targetClass":"furniture"}}
|
|
62
|
+
{"world":"mud-garden","kind":"rule","name":"close","ruleKind":"action-precond","slots":{"shape":"fact-value","predicate":"is-open","role":"target","scope":"any","value":"true"}}
|
|
63
|
+
{"world":"mud-garden","kind":"rule","name":"close","ruleKind":"action-effect","slots":{"predicate":"is-open","subjectRole":"target","value":"false"}}
|
|
64
|
+
{"world":"mud-garden","kind":"rule","name":"unlock","ruleKind":"action-signature","slots":{"subjectClass":"adventurer","targetClass":"furniture"}}
|
|
65
|
+
{"world":"mud-garden","kind":"rule","name":"dig","ruleKind":"action-signature","slots":{"subjectClass":"adventurer","targetClass":"room"}}
|
|
66
|
+
{"world":"mud-garden","kind":"rule","name":"eat","ruleKind":"action-signature","slots":{"subjectClass":"adventurer","targetClass":"food"}}
|
|
67
|
+
{"world":"mud-garden","kind":"rule","name":"put","ruleKind":"action-signature","slots":{"subjectClass":"portable","targetClass":"furniture"}}
|
|
68
|
+
{"world":"mud-garden","kind":"rule","name":"put","ruleKind":"action-effect","slots":{"predicate":"located-in","subjectRole":"subject","objectRole":"target"}}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@polycode-projects/the-mechanical-code-talker",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.3.0",
|
|
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; indexes a repo on request (tmct index) or reads any producer's graph.",
|
|
@@ -159,6 +159,7 @@
|
|
|
159
159
|
"build:ingest-bundle": "node scripts/build-ingest-bundle.mjs",
|
|
160
160
|
"build:research-bundle": "node scripts/build-research-bundle.mjs",
|
|
161
161
|
"build:code-explorer-bundle": "node scripts/build-code-explorer-bundle.mjs",
|
|
162
|
+
"build:mud-bundle": "node scripts/build-mud-bundle.mjs",
|
|
162
163
|
"build:electron": "node scripts/build-electron-app.mjs",
|
|
163
164
|
"electron": "electron electron/main.mjs",
|
|
164
165
|
"test:electron": "node --test electron/smoke.test.mjs",
|
|
@@ -27,6 +27,28 @@ export const DEFAULT_GAME_CONFIG = Object.freeze({
|
|
|
27
27
|
minHatchlingMass: 3,
|
|
28
28
|
webDurationTurns: 10,
|
|
29
29
|
}),
|
|
30
|
+
mud: Object.freeze({
|
|
31
|
+
moleInitialMass: 8,
|
|
32
|
+
moleMassDecrementPerTurn: 0.3,
|
|
33
|
+
moleSpeed: 1,
|
|
34
|
+
moleDigReach: 1,
|
|
35
|
+
voleInitialMass: 6,
|
|
36
|
+
voleMassDecrementPerTurn: 0.25,
|
|
37
|
+
voleSpeed: 1,
|
|
38
|
+
voleDigReach: 1,
|
|
39
|
+
badgerInitialMass: 20,
|
|
40
|
+
badgerMassDecrementPerTurn: 0.5,
|
|
41
|
+
badgerSpeed: 2,
|
|
42
|
+
badgerDigReach: 2,
|
|
43
|
+
groundhogInitialMass: 12,
|
|
44
|
+
groundhogMassDecrementPerTurn: 0.4,
|
|
45
|
+
groundhogSpeed: 2,
|
|
46
|
+
groundhogDigReach: 2,
|
|
47
|
+
meerkatInitialMass: 9,
|
|
48
|
+
meerkatMassDecrementPerTurn: 0.35,
|
|
49
|
+
meerkatSpeed: 1,
|
|
50
|
+
meerkatDigReach: 1,
|
|
51
|
+
}),
|
|
30
52
|
guessNumber: Object.freeze({
|
|
31
53
|
defaultLo: 1,
|
|
32
54
|
defaultHi: 100,
|
|
@@ -55,6 +77,29 @@ const SPIDER_FLY_KEY_MAP = Object.freeze({
|
|
|
55
77
|
web_duration_turns: "webDurationTurns",
|
|
56
78
|
});
|
|
57
79
|
|
|
80
|
+
const MUD_KEY_MAP = Object.freeze({
|
|
81
|
+
mole_initial_mass: "moleInitialMass",
|
|
82
|
+
mole_mass_decrement_per_turn: "moleMassDecrementPerTurn",
|
|
83
|
+
mole_speed: "moleSpeed",
|
|
84
|
+
mole_dig_reach: "moleDigReach",
|
|
85
|
+
vole_initial_mass: "voleInitialMass",
|
|
86
|
+
vole_mass_decrement_per_turn: "voleMassDecrementPerTurn",
|
|
87
|
+
vole_speed: "voleSpeed",
|
|
88
|
+
vole_dig_reach: "voleDigReach",
|
|
89
|
+
badger_initial_mass: "badgerInitialMass",
|
|
90
|
+
badger_mass_decrement_per_turn: "badgerMassDecrementPerTurn",
|
|
91
|
+
badger_speed: "badgerSpeed",
|
|
92
|
+
badger_dig_reach: "badgerDigReach",
|
|
93
|
+
groundhog_initial_mass: "groundhogInitialMass",
|
|
94
|
+
groundhog_mass_decrement_per_turn: "groundhogMassDecrementPerTurn",
|
|
95
|
+
groundhog_speed: "groundhogSpeed",
|
|
96
|
+
groundhog_dig_reach: "groundhogDigReach",
|
|
97
|
+
meerkat_initial_mass: "meerkatInitialMass",
|
|
98
|
+
meerkat_mass_decrement_per_turn: "meerkatMassDecrementPerTurn",
|
|
99
|
+
meerkat_speed: "meerkatSpeed",
|
|
100
|
+
meerkat_dig_reach: "meerkatDigReach",
|
|
101
|
+
});
|
|
102
|
+
|
|
58
103
|
const GUESS_NUMBER_KEY_MAP = Object.freeze({
|
|
59
104
|
default_lo: "defaultLo",
|
|
60
105
|
default_hi: "defaultHi",
|
|
@@ -90,6 +135,7 @@ export function resolveGameConfig(toml) {
|
|
|
90
135
|
const games = toml?.games ?? {};
|
|
91
136
|
return {
|
|
92
137
|
spiderFly: mergeSection(DEFAULT_GAME_CONFIG.spiderFly, games["spider-fly"], SPIDER_FLY_KEY_MAP),
|
|
138
|
+
mud: mergeSection(DEFAULT_GAME_CONFIG.mud, games.mud, MUD_KEY_MAP),
|
|
93
139
|
guessNumber: mergeSection(DEFAULT_GAME_CONFIG.guessNumber, games["guess-number"], GUESS_NUMBER_KEY_MAP),
|
|
94
140
|
planning: mergeSection(DEFAULT_GAME_CONFIG.planning, toml?.planning, PLANNING_KEY_MAP),
|
|
95
141
|
};
|
|
@@ -525,7 +525,7 @@ export function parseAce(sentence, lexicon = loadLexicon()) {
|
|
|
525
525
|
// it is reported back on the command (`corrected`) for the caller to name in
|
|
526
526
|
// its response — a synonym executes silently, a typo fix does not.
|
|
527
527
|
|
|
528
|
-
const IMPERATIVE_VERBS = new Set(["go", "take", "drop", "open", "unlock", "close", "give", "look", "talk", "examine"]);
|
|
528
|
+
const IMPERATIVE_VERBS = new Set(["go", "take", "drop", "open", "unlock", "close", "give", "look", "talk", "examine", "dig", "eat", "put"]);
|
|
529
529
|
const IMPERATIVE_DIRECTIONS = new Set(["north", "south", "east", "west", "up", "down"]);
|
|
530
530
|
|
|
531
531
|
// The object pronouns an imperative object slot may carry ("examine it", "take
|
|
@@ -665,13 +665,13 @@ export function parseImperative(sentence, lexicon = loadLexicon()) {
|
|
|
665
665
|
if (object.term == null) return miss(object.unknown);
|
|
666
666
|
return command({ object: object.term });
|
|
667
667
|
}
|
|
668
|
-
if (verb === "examine" || verb === "talk") {
|
|
668
|
+
if (verb === "examine" || verb === "talk" || verb === "eat") {
|
|
669
669
|
if (!rest.length) return null;
|
|
670
670
|
const object = imperativeNP(lexicon, rest);
|
|
671
671
|
if (object.term == null) return miss(object.unknown);
|
|
672
672
|
return command({ object: object.term });
|
|
673
673
|
}
|
|
674
|
-
if (verb === "go") {
|
|
674
|
+
if (verb === "go" || verb === "dig") {
|
|
675
675
|
if (rest.length === 1) {
|
|
676
676
|
if (IMPERATIVE_DIRECTIONS.has(lower[0])) return command({ direction: lower[0] });
|
|
677
677
|
const fuzzyDir = fuzzyMatchInSet(lower[0], [...IMPERATIVE_DIRECTIONS], IMPERATIVE_FUZZY_BOUND);
|
|
@@ -690,6 +690,14 @@ export function parseImperative(sentence, lexicon = loadLexicon()) {
|
|
|
690
690
|
if (object.term == null || indirect.term == null) return miss([...object.unknown, ...indirect.unknown]);
|
|
691
691
|
return command({ object: object.term, indirectObject: indirect.term });
|
|
692
692
|
}
|
|
693
|
+
if (verb === "put") {
|
|
694
|
+
const inIdx = lower.indexOf("in");
|
|
695
|
+
if (inIdx < 1 || inIdx === rest.length - 1) return null;
|
|
696
|
+
const object = imperativeNP(lexicon, rest.slice(0, inIdx));
|
|
697
|
+
const container = imperativeNP(lexicon, rest.slice(inIdx + 1));
|
|
698
|
+
if (object.term == null || container.term == null) return miss([...object.unknown, ...container.unknown]);
|
|
699
|
+
return command({ object: object.term, indirectObject: container.term });
|
|
700
|
+
}
|
|
693
701
|
if (verb === "unlock") {
|
|
694
702
|
const withIdx = lower.indexOf("with");
|
|
695
703
|
if (withIdx !== -1) {
|
|
@@ -40,6 +40,11 @@ function parseChatTagRest(rest) {
|
|
|
40
40
|
* same tier the hand-written tier2 corpus already scores at; the :turnN
|
|
41
41
|
* segment a snapshot write carries records when, not who, and is not
|
|
42
42
|
* part of the Source identity)
|
|
43
|
+
* mud:<character>[:turnN] -> { kind:"corpus", name:"mud:<character>" }
|
|
44
|
+
* (one character's own testimony in a multi-character world — what it told
|
|
45
|
+
* someone, what it examined for itself. Same tier as the world, but one
|
|
46
|
+
* Source per character; the `mud:` prefix in the name keeps that Source
|
|
47
|
+
* apart from a world of the same literal name)
|
|
43
48
|
* ace:chat:<session>@<ts> -> { kind:"operator", createdAt:<ts>, sessionId:<session> }
|
|
44
49
|
* teach:chat:<session>@<ts> -> { kind:"teach", createdAt:<ts>, sessionId:<session> }
|
|
45
50
|
* web:<url> | url:<url> -> { kind:"web", url:<url> }
|
|
@@ -98,6 +103,14 @@ export function provenanceTagToSource(tag) {
|
|
|
98
103
|
// authored shipped content scored at the corpus tier; the per-turn tail is
|
|
99
104
|
// dropped from the id so every write of one world corroborates one Source.
|
|
100
105
|
if (head.startsWith("world:")) return { kind: "corpus", name: head.slice("world:".length).split(":")[0] || "unknown" };
|
|
106
|
+
// mud:<character>[:turnN] — one character's own testimony inside a multi-
|
|
107
|
+
// character world: what it told another character, and what it saw for
|
|
108
|
+
// itself. Same corpus tier as the world it stands in, but a Source per
|
|
109
|
+
// CHARACTER, so every claim an animal makes over a whole game accumulates on
|
|
110
|
+
// that animal's own track record rather than the world's. The name keeps the
|
|
111
|
+
// `mud:` prefix so `src:corpus:mud:<character>` can never collide with a
|
|
112
|
+
// `world:<name>` Source that happens to share the literal name.
|
|
113
|
+
if (head.startsWith("mud:")) return { kind: "corpus", name: `mud:${head.slice("mud:".length).split(":")[0] || "unknown"}` };
|
|
101
114
|
if (head.startsWith("ace:")) return { kind: "operator", ...parseChatTagRest(head.slice("ace:".length)) };
|
|
102
115
|
if (head.startsWith("teach:")) {
|
|
103
116
|
// the chat teach lane's natural frames — chat.mjs's teachProvenanceTag
|