ekms 8.0.0 → 8.1.0-beta.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 (124) hide show
  1. package/common/animals.instance.json +3055 -1651
  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 -30
  10. package/common/colors.instance.json +25666 -0
  11. package/common/colors.js +67 -0
  12. package/common/colors.test.json +4425 -0
  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/concept.test.json +688 -0
  18. package/common/conjunction.instance.json +2 -0
  19. package/common/conjunction.js +104 -0
  20. package/common/conjunction.test.json +322 -0
  21. package/common/countable.js +20 -14
  22. package/common/countable.test.json +1050 -0
  23. package/common/crew.instance.json +16432 -9850
  24. package/common/crew.js +39 -42
  25. package/common/crew.test.json +714 -452
  26. package/common/currency.js +28 -46
  27. package/common/dialogues.js +187 -429
  28. package/common/dialogues.test.json +684 -450
  29. package/common/dimension.instance.json +517 -289
  30. package/common/dimension.js +22 -24
  31. package/common/dimension.test.json +727 -1944
  32. package/common/edible.instance.json +20506 -10664
  33. package/common/edible.js +4 -9
  34. package/common/emotions.instance.json +195 -123
  35. package/common/emotions.js +36 -39
  36. package/common/evaluate.instance.json +2 -0
  37. package/common/evaluate.js +53 -0
  38. package/common/evaluate.test.json +574 -0
  39. package/common/events.js +11 -15
  40. package/common/fastfood.instance.json +223185 -113172
  41. package/common/fastfood.js +77 -87
  42. package/common/fastfood.test.json +8205 -3733
  43. package/common/formulas.instance.json +444 -244
  44. package/common/formulas.js +20 -27
  45. package/common/formulas.test.json +1027 -955
  46. package/common/gdefaults.js +45 -32
  47. package/common/help.js +9 -14
  48. package/common/help.test.json +71 -18
  49. package/common/helpers/concept.js +37 -10
  50. package/common/helpers/dialogues.js +22 -4
  51. package/common/helpers/formulas.js +0 -14
  52. package/common/helpers/meta.js +0 -1
  53. package/common/helpers/properties.js +92 -84
  54. package/common/helpers.js +35 -24
  55. package/common/hierarchy.js +18 -25
  56. package/common/javascript.js +12 -19
  57. package/common/kirk.instance.json +583 -300
  58. package/common/kirk.js +6 -9
  59. package/common/length.instance.json +8995 -4964
  60. package/common/length.js +5 -9
  61. package/common/listener.js +48 -0
  62. package/common/listener.test.json +104 -0
  63. package/common/math.instance.json +409 -1202
  64. package/common/math.js +17 -21
  65. package/common/meta.js +24 -50
  66. package/common/nameable.instance.json +2 -0
  67. package/common/nameable.js +144 -0
  68. package/common/nameable.test.json +3191 -0
  69. package/common/negation.instance.json +2 -0
  70. package/common/negation.js +38 -0
  71. package/common/negation.test.json +308 -0
  72. package/common/numbers.js +28 -32
  73. package/common/ordering.instance.json +459 -274
  74. package/common/ordering.js +81 -87
  75. package/common/ordinals.instance.json +2 -0
  76. package/common/ordinals.js +61 -0
  77. package/common/ordinals.test.json +412 -0
  78. package/common/people.instance.json +2138 -1321
  79. package/common/people.js +9 -14
  80. package/common/people.test.json +1815 -1073
  81. package/common/percentages.instance.json +2 -0
  82. package/common/percentages.js +53 -0
  83. package/common/percentages.test.json +751 -0
  84. package/common/pipboy.instance.json +12261 -6898
  85. package/common/pipboy.js +53 -62
  86. package/common/pipboy.test.json +2835 -0
  87. package/common/pokemon.instance.json +4432 -2351
  88. package/common/pokemon.js +8 -21
  89. package/common/pos.js +16 -14
  90. package/common/pressure.instance.json +2311 -1303
  91. package/common/pressure.js +5 -9
  92. package/common/properties.instance.json +151 -87
  93. package/common/properties.js +164 -167
  94. package/common/properties.test.json +17605 -4030
  95. package/common/punctuation.js +24 -8
  96. package/common/punctuation.test.json +233 -5
  97. package/common/reports.instance.json +1037 -551
  98. package/common/reports.js +77 -103
  99. package/common/reports.test.json +15623 -10458
  100. package/common/scorekeeper.js +19 -31
  101. package/common/sdefaults.js +17 -8
  102. package/common/sizeable.js +13 -12
  103. package/common/spock.instance.json +582 -299
  104. package/common/spock.js +6 -9
  105. package/common/stgame.js +20 -20
  106. package/common/stm.js +182 -29
  107. package/common/stm.test.json +1734 -1
  108. package/common/tell.js +15 -19
  109. package/common/temperature.instance.json +2379 -1355
  110. package/common/temperature.js +5 -9
  111. package/common/tester.js +15 -4
  112. package/common/testing.js +8 -13
  113. package/common/time.js +21 -26
  114. package/common/tokenize.js +8 -8
  115. package/common/tokenize.test.json +86 -1
  116. package/common/ui.instance.json +151 -460
  117. package/common/ui.js +22 -34
  118. package/common/ui.test.json +641 -5357
  119. package/common/weight.instance.json +7957 -4350
  120. package/common/weight.js +5 -9
  121. package/common/weight.test.json +242 -238
  122. package/common/yesno.js +6 -6
  123. package/main.js +68 -45
  124. package/package.json +44 -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,12 @@ 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
+ localHierarchy: [ ['unknown', 'wearable'] ],
244
245
  level: 0,
245
246
  bridge: "{ ...next(operator), item: after[0] }",
246
- generatorp: ({context, g}) => `wear ${g(context.item)}`,
247
+ generatorp: async ({context, g}) => `wear ${await g(context.item)}`,
247
248
  semantic: ({api, context}) => {
248
249
  if (context.item.name) {
249
250
  api.wear({ name: context.item.name.value, type: 'outfit' })
@@ -255,13 +256,12 @@ let configStruct = {
255
256
  {
256
257
  where: where(),
257
258
  id: "equip",
258
- isA: ['verby'],
259
+ isA: ['verb'],
259
260
  level: 0,
260
- localHierarchy: [ ['weapon', 'equipable'], ['thisitthat', 'equipable'] ],
261
+ localHierarchy: [ ['weapon', 'equipable'], ['thisitthat', 'equipable'], ['equipable', 'unknown'] ],
261
262
  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)
263
+ generatorp: async ({context, g}) => `equip ${await g(context.item)}`,
264
+ semantic: async ({api, context}) => {
265
265
  let condition
266
266
  if (context.item.condition) {
267
267
  condition = { selector: context.item.condition.marker, property: context.item.condition.property[0].marker }
@@ -272,37 +272,36 @@ let configStruct = {
272
272
  {
273
273
  where: where(),
274
274
  id: "toDrink",
275
- isA: ['verby'],
275
+ isA: ['verb'],
276
276
  level: 0,
277
277
  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)
278
+ generatorp: async ({context, g}) => `drink ${await g(context.item)}`,
279
+ semantic: async ({api, context, e}) => {
280
+ const value = await e(context.item)
281
281
  api.drink(value.value)
282
282
  }
283
283
  },
284
284
  {
285
285
  where: where(),
286
286
  id: "eat",
287
- isA: ['verby'],
287
+ localHierarchy: [ ['unknown', 'edible'] ],
288
+ isA: ['verb'],
288
289
  level: 0,
289
290
  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)
291
+ generatorp: async ({context, g}) => `eat ${await g(context.item)}`,
292
+ semantic: async ({api, context}) => {
294
293
  api.eat(context.item.value)
295
294
  }
296
295
  },
297
296
  {
298
297
  where: where(),
299
298
  id: "take",
300
- isA: ['verby'],
299
+ isA: ['verb'],
301
300
  level: 0,
302
301
  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)
302
+ generatorp: async ({context, g}) => `take ${await g(context.item)}`,
303
+ semantic: async ({api, context, e}) => {
304
+ const value = await e(context.item)
306
305
  api.take(value.value)
307
306
  }
308
307
  },
@@ -371,22 +370,22 @@ let configStruct = {
371
370
  */
372
371
  {
373
372
  id: "apply",
374
- isA: ['verby'],
373
+ isA: ['verb'],
375
374
  level: 0,
376
375
  bridge: "{ ...next(operator), item: after[0] }",
377
- generatorp: ({context, g}) => `apply ${g(context.item)}`,
378
- semantic: ({api, context, e}) => {
376
+ generatorp: async ({context, g}) => `apply ${await g(context.item)}`,
377
+ semantic: async ({api, context, e}) => {
379
378
  // { 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
379
+ const quantity = context.item.quantity ? (await e(context.item.quantity)).value : 1
381
380
  api.apply({ item: 'stimpak', quantity })
382
381
  }
383
382
  },
384
383
  {
385
384
  id: "go",
386
- isA: ['verby'],
385
+ isA: ['verb'],
387
386
  level: 0,
388
387
  bridge: "{ ...next(operator), showable: after[0].showable }",
389
- generatorp: ({context, g}) => `go to ${g(context.showable)}`,
388
+ generatorp: async ({context, g}) => `go to ${await g(context.showable)}`,
390
389
  semantic: ({api, context}) => {
391
390
  api.setDisplay(context.showable.value)
392
391
  }
@@ -396,14 +395,14 @@ let configStruct = {
396
395
  isA: ['preposition'],
397
396
  level: 0,
398
397
  bridge: "{ ...next(operator), showable: after[0] }",
399
- generatorp: ({context, g}) => `to ${g(context.showable)}`,
398
+ generatorp: async ({context, g}) => `to ${await g(context.showable)}`,
400
399
  },
401
400
  {
402
401
  id: "showWeapons",
403
- isA: ['verby'],
402
+ isA: ['verb'],
404
403
  level: 0,
405
404
  bridge: "{ ...next(operator), showable: after[0] }",
406
- generatorp: ({context, g}) => `show ${g(context.showable)}`,
405
+ generatorp: async ({context, g}) => `show ${await g(context.showable)}`,
407
406
  semantic: ({api, context}) => {
408
407
  if (context.showable.quantity && context.showable.quantity.value == 'all') {
409
408
  api.showWeapons('all')
@@ -414,10 +413,10 @@ let configStruct = {
414
413
  },
415
414
  {
416
415
  id: "show",
417
- isA: ['verby'],
416
+ isA: ['verb'],
418
417
  level: 0,
419
418
  bridge: "{ ...next(operator), showable: after[0] }",
420
- generatorp: ({context, g}) => `show ${g(context.showable)}`,
419
+ generatorp: async ({context, g}) => `show ${await g(context.showable)}`,
421
420
  semantic: ({api, context}) => {
422
421
  api.setDisplay(context.showable.value)
423
422
  }
@@ -522,27 +521,19 @@ const template = {
522
521
  "vegetables and fruit are food",
523
522
  "cola and pop are drinks",
524
523
  "medicine and stimpaks are takeable",
525
- "item modifies properties",
524
+ "item modifies property",
526
525
  "damage luck hp rads value ap charisma range and accuracy are item properties",
527
- configStruct,
526
+ config,
528
527
  ]
529
528
  }
530
529
 
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
530
  knowledgeModule({
531
+ config: { name: 'pipboy' },
532
+ includes: [hierarchy, countable, comparable, help, math],
533
+ api: () => new API(),
534
+
543
535
  module,
544
536
  description: 'Control a pipboy with speech',
545
- createConfig,
546
537
  template: { template, instance },
547
538
  test: {
548
539
  name: './pipboy.test.json',
@@ -551,7 +542,7 @@ knowledgeModule({
551
542
  objects: [
552
543
  'apply', 'change', 'disarm', 'drink', 'eat', 'equip', 'setName', 'strip', 'take', 'wear',
553
544
  ],
554
- context: defaultContextCheck,
545
+ context: defaultContextCheck(),
555
546
  },
556
547
  },
557
548
  })