ekms 8.0.0-beta.9 → 8.0.0-beta.90

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 (112) hide show
  1. package/common/animals.instance.json +2915 -1553
  2. package/common/animals.js +17 -20
  3. package/common/articles.js +103 -0
  4. package/common/articles.test.json +310 -0
  5. package/common/asking.instance.json +2 -0
  6. package/common/asking.js +253 -0
  7. package/common/asking.test.json +2290 -0
  8. package/common/avatar.js +6 -10
  9. package/common/characters.js +23 -29
  10. package/common/colors.instance.json +7487 -4114
  11. package/common/colors.js +5 -9
  12. package/common/colors.test.json +345 -780
  13. package/common/comparable.instance.json +1750 -0
  14. package/common/comparable.js +36 -28
  15. package/common/comparable.test.json +1196 -2
  16. package/common/concept.js +121 -119
  17. package/common/conjunction.instance.json +2 -0
  18. package/common/conjunction.js +104 -0
  19. package/common/conjunction.test.json +322 -0
  20. package/common/countable.js +20 -14
  21. package/common/countable.test.json +1050 -0
  22. package/common/crew.instance.json +13553 -7026
  23. package/common/crew.js +37 -42
  24. package/common/crew.test.json +714 -452
  25. package/common/currency.js +28 -46
  26. package/common/dialogues.js +150 -426
  27. package/common/dialogues.test.json +0 -786
  28. package/common/dimension.instance.json +491 -262
  29. package/common/dimension.js +22 -24
  30. package/common/dimension.test.json +508 -1702
  31. package/common/edible.instance.json +20446 -10806
  32. package/common/edible.js +4 -9
  33. package/common/emotions.instance.json +192 -124
  34. package/common/emotions.js +36 -39
  35. package/common/evaluate.instance.json +2 -0
  36. package/common/evaluate.js +53 -0
  37. package/common/evaluate.test.json +574 -0
  38. package/common/events.js +11 -15
  39. package/common/fastfood.instance.json +222642 -113618
  40. package/common/fastfood.js +76 -86
  41. package/common/fastfood.test.json +268 -90
  42. package/common/formulas.instance.json +443 -247
  43. package/common/formulas.js +20 -27
  44. package/common/gdefaults.js +40 -27
  45. package/common/help.js +9 -14
  46. package/common/help.test.json +65 -16
  47. package/common/helpers/concept.js +10 -7
  48. package/common/helpers/dialogues.js +5 -3
  49. package/common/helpers/properties.js +67 -64
  50. package/common/helpers.js +35 -24
  51. package/common/hierarchy.js +17 -25
  52. package/common/javascript.js +12 -19
  53. package/common/kirk.instance.json +583 -299
  54. package/common/kirk.js +6 -9
  55. package/common/length.instance.json +9005 -5001
  56. package/common/length.js +5 -9
  57. package/common/listener.js +48 -0
  58. package/common/listener.test.json +104 -0
  59. package/common/math.instance.json +406 -1178
  60. package/common/math.js +17 -21
  61. package/common/meta.js +24 -48
  62. package/common/nameable.instance.json +2 -0
  63. package/common/nameable.js +144 -0
  64. package/common/nameable.test.json +3191 -0
  65. package/common/negation.js +11 -7
  66. package/common/numbers.js +28 -32
  67. package/common/ordering.instance.json +443 -343
  68. package/common/ordering.js +81 -87
  69. package/common/ordinals.instance.json +2 -0
  70. package/common/ordinals.js +60 -0
  71. package/common/ordinals.test.json +306 -0
  72. package/common/people.instance.json +2210 -1150
  73. package/common/people.js +9 -14
  74. package/common/percentages.instance.json +2 -0
  75. package/common/percentages.js +53 -0
  76. package/common/percentages.test.json +751 -0
  77. package/common/pipboy.instance.json +11845 -6590
  78. package/common/pipboy.js +51 -62
  79. package/common/pokemon.instance.json +4300 -2285
  80. package/common/pokemon.js +8 -21
  81. package/common/pos.js +16 -14
  82. package/common/pressure.instance.json +2325 -1340
  83. package/common/pressure.js +5 -9
  84. package/common/properties.instance.json +148 -88
  85. package/common/properties.js +149 -160
  86. package/common/punctuation.js +16 -8
  87. package/common/reports.instance.json +1019 -551
  88. package/common/reports.js +77 -101
  89. package/common/reports.test.json +15623 -10458
  90. package/common/scorekeeper.js +19 -31
  91. package/common/sdefaults.js +17 -8
  92. package/common/sizeable.js +7 -11
  93. package/common/spock.instance.json +582 -298
  94. package/common/spock.js +6 -9
  95. package/common/stgame.js +20 -20
  96. package/common/stm.js +173 -31
  97. package/common/stm.test.json +1734 -1
  98. package/common/tell.js +15 -19
  99. package/common/temperature.instance.json +2430 -1429
  100. package/common/temperature.js +5 -9
  101. package/common/tester.js +15 -4
  102. package/common/testing.js +8 -12
  103. package/common/time.js +21 -26
  104. package/common/tokenize.js +6 -7
  105. package/common/ui.instance.json +150 -463
  106. package/common/ui.js +22 -33
  107. package/common/ui.test.json +641 -5357
  108. package/common/weight.instance.json +8034 -4503
  109. package/common/weight.js +5 -9
  110. package/common/yesno.js +6 -6
  111. package/main.js +20 -4
  112. package/package.json +37 -6
package/common/pipboy.js CHANGED
@@ -1,4 +1,4 @@
1
- const { Config, knowledgeModule, where, Digraph } = require('./runtime').theprogrammablemind
1
+ const { knowledgeModule, where, Digraph } = require('./runtime').theprogrammablemind
2
2
  const { defaultContextCheck } = require('./helpers')
3
3
  const hierarchy = require('./hierarchy')
4
4
  const countable = require('./countable')
@@ -100,7 +100,7 @@ class API {
100
100
  }
101
101
  const api = new API()
102
102
 
103
- let configStruct = {
103
+ let config = {
104
104
  name: 'pipboy',
105
105
  // TODO mark default as local scope
106
106
  operators: [
@@ -117,7 +117,7 @@ let configStruct = {
117
117
  // "([weapon])",
118
118
  // "([44_pistol|])",
119
119
  "([apparel])",
120
- "((!articlePOS/0 && !verby/0) [outfit|outfit])",
120
+ "((!articlePOS/0 && !verb/0) [outfit|outfit])",
121
121
  // this doesnt work because the speech recognizer hears 'where'
122
122
  "([wear] ([wearable]))",
123
123
  "([strip])",
@@ -152,10 +152,10 @@ let configStruct = {
152
152
  {
153
153
  where: where(),
154
154
  id: "put",
155
- isA: ['verby'],
155
+ isA: ['verb'],
156
156
  level: 0,
157
157
  bridge: "{ ...next(operator) }",
158
- generatorp: ({context, g}) => `put on`,
158
+ generatorp: ({context}) => `put on`,
159
159
  },
160
160
  {
161
161
  where: where(),
@@ -171,7 +171,7 @@ let configStruct = {
171
171
  isA: ['preposition'],
172
172
  level: 0,
173
173
  bridge: "{ ...before, marker: operator('putOn', 0), dead: false }",
174
- generatorp: ({context, g}) => `put on ${g(context.item)}`,
174
+ generatorp: async ({context, g}) => `put on ${await g(context.item)}`,
175
175
  semantic: ({api, context}) => {
176
176
  api.change(context.item.marker)
177
177
  }
@@ -179,11 +179,11 @@ let configStruct = {
179
179
  {
180
180
  where: where(),
181
181
  id: "change",
182
- isA: ['verby'],
182
+ isA: ['verb'],
183
183
  level: 0,
184
184
  bridge: "{ ...next(operator), item: after[0] }",
185
185
  localHierarchy: [ ['weapon', 'changeable'] ],
186
- generatorp: ({context, g}) => `change ${g(context.item)}`,
186
+ generatorp: async ({context, g}) => `change ${await g(context.item)}`,
187
187
  semantic: ({api, context}) => {
188
188
  api.change(context.item.marker)
189
189
  }
@@ -191,10 +191,10 @@ let configStruct = {
191
191
  {
192
192
  where: where(),
193
193
  id: "disarm",
194
- isA: ['verby'],
194
+ isA: ['verb'],
195
195
  level: 0,
196
196
  bridge: "{ ...next(operator) }",
197
- generatorp: ({context, g}) => `disarm`,
197
+ generatorp: ({context}) => `disarm`,
198
198
  semantic: ({api, context}) => {
199
199
  api.disarm()
200
200
  }
@@ -202,10 +202,10 @@ let configStruct = {
202
202
  {
203
203
  where: where(),
204
204
  id: "strip",
205
- isA: ['verby'],
205
+ isA: ['verb'],
206
206
  level: 0,
207
207
  bridge: "{ ...next(operator) }",
208
- generatorp: ({context, g}) => `strip`,
208
+ generatorp: ({context}) => `strip`,
209
209
  semantic: ({api, context}) => {
210
210
  api.strip()
211
211
  }
@@ -213,10 +213,10 @@ let configStruct = {
213
213
  {
214
214
  where: where(),
215
215
  id: "call",
216
- isA: ['verby'],
216
+ isA: ['verb'],
217
217
  level: 0,
218
218
  bridge: "{ ...next(operator), item: after[0], name: after[1] }",
219
- generatorp: ({context, g}) => `call ${g(context.item)} ${g(context.name)}`,
219
+ generatorp: async ({context, g}) => `call ${await g(context.item)} ${await g(context.name)}`,
220
220
  semantic: ({api, context}) => {
221
221
  api.setName(context.item, context.name.name.value)
222
222
  }
@@ -224,10 +224,10 @@ let configStruct = {
224
224
  {
225
225
  where: where(),
226
226
  id: "putOn",
227
- isA: ['verby'],
227
+ isA: ['verb'],
228
228
  level: 0,
229
229
  bridge: "{ ...next(operator), item: after[0] }",
230
- generatorp: ({context, g}) => `put on ${g(context.item)}`,
230
+ generatorp: async ({context, g}) => `put on ${await g(context.item)}`,
231
231
  semantic: ({api, context}) => {
232
232
  if (context.item.name) {
233
233
  api.wear({ name: context.item.name.value, type: 'outfit' })
@@ -239,11 +239,11 @@ let configStruct = {
239
239
  {
240
240
  where: where(),
241
241
  id: "wear",
242
- isA: ['verby'],
242
+ isA: ['verb'],
243
243
  words: ['where'], // the speech recognizer hears 'where' not 'wear'
244
244
  level: 0,
245
245
  bridge: "{ ...next(operator), item: after[0] }",
246
- generatorp: ({context, g}) => `wear ${g(context.item)}`,
246
+ generatorp: async ({context, g}) => `wear ${await g(context.item)}`,
247
247
  semantic: ({api, context}) => {
248
248
  if (context.item.name) {
249
249
  api.wear({ name: context.item.name.value, type: 'outfit' })
@@ -255,13 +255,12 @@ let configStruct = {
255
255
  {
256
256
  where: where(),
257
257
  id: "equip",
258
- isA: ['verby'],
258
+ isA: ['verb'],
259
259
  level: 0,
260
- localHierarchy: [ ['weapon', 'equipable'], ['thisitthat', 'equipable'] ],
260
+ localHierarchy: [ ['weapon', 'equipable'], ['thisitthat', 'equipable'], ['equipable', 'unknown'] ],
261
261
  bridge: "{ ...next(operator), item: after[0] }",
262
- generatorp: ({context, g}) => `equip ${g(context.item)}`,
263
- semantic: ({api, context, e}) => {
264
- // const value = e(context.item)
262
+ generatorp: async ({context, g}) => `equip ${await g(context.item)}`,
263
+ semantic: async ({api, context}) => {
265
264
  let condition
266
265
  if (context.item.condition) {
267
266
  condition = { selector: context.item.condition.marker, property: context.item.condition.property[0].marker }
@@ -272,37 +271,35 @@ let configStruct = {
272
271
  {
273
272
  where: where(),
274
273
  id: "toDrink",
275
- isA: ['verby'],
274
+ isA: ['verb'],
276
275
  level: 0,
277
276
  bridge: "{ ...next(operator), item: after[0] }",
278
- generatorp: ({context, g}) => `drink ${g(context.item)}`,
279
- semantic: ({api, context, e}) => {
280
- const value = e(context.item)
277
+ generatorp: async ({context, g}) => `drink ${await g(context.item)}`,
278
+ semantic: async ({api, context, e}) => {
279
+ const value = await e(context.item)
281
280
  api.drink(value.value)
282
281
  }
283
282
  },
284
283
  {
285
284
  where: where(),
286
285
  id: "eat",
287
- isA: ['verby'],
286
+ isA: ['verb'],
288
287
  level: 0,
289
288
  bridge: "{ ...next(operator), item: after[0] }",
290
- generatorp: ({context, g}) => `eat ${g(context.item)}`,
291
- semantic: ({api, context, e}) => {
292
- // const value = e(context.item)
293
- // api.eat(value.value)
289
+ generatorp: async ({context, g}) => `eat ${await g(context.item)}`,
290
+ semantic: async ({api, context}) => {
294
291
  api.eat(context.item.value)
295
292
  }
296
293
  },
297
294
  {
298
295
  where: where(),
299
296
  id: "take",
300
- isA: ['verby'],
297
+ isA: ['verb'],
301
298
  level: 0,
302
299
  bridge: "{ ...next(operator), item: after[0] }",
303
- generatorp: ({context, g}) => `take ${g(context.item)}`,
304
- semantic: ({api, context, e}) => {
305
- const value = e(context.item)
300
+ generatorp: async ({context, g}) => `take ${await g(context.item)}`,
301
+ semantic: async ({api, context, e}) => {
302
+ const value = await e(context.item)
306
303
  api.take(value.value)
307
304
  }
308
305
  },
@@ -371,22 +368,22 @@ let configStruct = {
371
368
  */
372
369
  {
373
370
  id: "apply",
374
- isA: ['verby'],
371
+ isA: ['verb'],
375
372
  level: 0,
376
373
  bridge: "{ ...next(operator), item: after[0] }",
377
- generatorp: ({context, g}) => `apply ${g(context.item)}`,
378
- semantic: ({api, context, e}) => {
374
+ generatorp: async ({context, g}) => `apply ${await g(context.item)}`,
375
+ semantic: async ({api, context, e}) => {
379
376
  // { item: 'stimpak', quantity: <number>, to?: [ { part: ['arm', 'leg', 'torso', head'], side?: ['left', 'right'] } ] }
380
- const quantity = context.item.quantity ? e(context.item.quantity).value : 1
377
+ const quantity = context.item.quantity ? (await e(context.item.quantity)).value : 1
381
378
  api.apply({ item: 'stimpak', quantity })
382
379
  }
383
380
  },
384
381
  {
385
382
  id: "go",
386
- isA: ['verby'],
383
+ isA: ['verb'],
387
384
  level: 0,
388
385
  bridge: "{ ...next(operator), showable: after[0].showable }",
389
- generatorp: ({context, g}) => `go to ${g(context.showable)}`,
386
+ generatorp: async ({context, g}) => `go to ${await g(context.showable)}`,
390
387
  semantic: ({api, context}) => {
391
388
  api.setDisplay(context.showable.value)
392
389
  }
@@ -396,14 +393,14 @@ let configStruct = {
396
393
  isA: ['preposition'],
397
394
  level: 0,
398
395
  bridge: "{ ...next(operator), showable: after[0] }",
399
- generatorp: ({context, g}) => `to ${g(context.showable)}`,
396
+ generatorp: async ({context, g}) => `to ${await g(context.showable)}`,
400
397
  },
401
398
  {
402
399
  id: "showWeapons",
403
- isA: ['verby'],
400
+ isA: ['verb'],
404
401
  level: 0,
405
402
  bridge: "{ ...next(operator), showable: after[0] }",
406
- generatorp: ({context, g}) => `show ${g(context.showable)}`,
403
+ generatorp: async ({context, g}) => `show ${await g(context.showable)}`,
407
404
  semantic: ({api, context}) => {
408
405
  if (context.showable.quantity && context.showable.quantity.value == 'all') {
409
406
  api.showWeapons('all')
@@ -414,10 +411,10 @@ let configStruct = {
414
411
  },
415
412
  {
416
413
  id: "show",
417
- isA: ['verby'],
414
+ isA: ['verb'],
418
415
  level: 0,
419
416
  bridge: "{ ...next(operator), showable: after[0] }",
420
- generatorp: ({context, g}) => `show ${g(context.showable)}`,
417
+ generatorp: async ({context, g}) => `show ${await g(context.showable)}`,
421
418
  semantic: ({api, context}) => {
422
419
  api.setDisplay(context.showable.value)
423
420
  }
@@ -522,27 +519,19 @@ const template = {
522
519
  "vegetables and fruit are food",
523
520
  "cola and pop are drinks",
524
521
  "medicine and stimpaks are takeable",
525
- "item modifies properties",
522
+ "item modifies property",
526
523
  "damage luck hp rads value ap charisma range and accuracy are item properties",
527
- configStruct,
524
+ config,
528
525
  ]
529
526
  }
530
527
 
531
- const createConfig = () => {
532
- const config = new Config({ name: 'pipboy' }, module)
533
- config.stop_auto_rebuild()
534
- config.add(hierarchy(), countable(), comparable(), help(), math())
535
- // console.log('config.config.hierarchy', JSON.stringify(config.config.hierarchy, null, 2))
536
- // console.log('config.hierarchy', config.hierarchy)
537
- config.api = api
538
- config.restart_auto_rebuild()
539
- return config
540
- }
541
-
542
528
  knowledgeModule({
529
+ config: { name: 'pipboy' },
530
+ includes: [hierarchy, countable, comparable, help, math],
531
+ api: () => new API(),
532
+
543
533
  module,
544
534
  description: 'Control a pipboy with speech',
545
- createConfig,
546
535
  template: { template, instance },
547
536
  test: {
548
537
  name: './pipboy.test.json',
@@ -551,7 +540,7 @@ knowledgeModule({
551
540
  objects: [
552
541
  'apply', 'change', 'disarm', 'drink', 'eat', 'equip', 'setName', 'strip', 'take', 'wear',
553
542
  ],
554
- context: defaultContextCheck,
543
+ context: defaultContextCheck(),
555
544
  },
556
545
  },
557
546
  })