ekms 8.0.0 → 8.1.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.
Files changed (122) hide show
  1. package/common/animals.instance.json +3003 -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 +25513 -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/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 +16855 -9731
  23. package/common/crew.js +39 -42
  24. package/common/crew.test.json +714 -452
  25. package/common/currency.js +28 -46
  26. package/common/dialogues.js +177 -426
  27. package/common/dialogues.test.json +684 -450
  28. package/common/dimension.instance.json +508 -289
  29. package/common/dimension.js +22 -24
  30. package/common/dimension.test.json +727 -1944
  31. package/common/edible.instance.json +20548 -10848
  32. package/common/edible.js +4 -9
  33. package/common/emotions.instance.json +255 -123
  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 +223039 -113390
  40. package/common/fastfood.js +77 -87
  41. package/common/fastfood.test.json +8205 -3733
  42. package/common/formulas.instance.json +444 -244
  43. package/common/formulas.js +20 -27
  44. package/common/formulas.test.json +1027 -955
  45. package/common/gdefaults.js +40 -27
  46. package/common/help.js +9 -14
  47. package/common/help.test.json +71 -18
  48. package/common/helpers/concept.js +33 -10
  49. package/common/helpers/dialogues.js +22 -4
  50. package/common/helpers/formulas.js +0 -14
  51. package/common/helpers/meta.js +0 -1
  52. package/common/helpers/properties.js +72 -76
  53. package/common/helpers.js +35 -24
  54. package/common/hierarchy.js +17 -25
  55. package/common/javascript.js +12 -19
  56. package/common/kirk.instance.json +586 -298
  57. package/common/kirk.js +6 -9
  58. package/common/length.instance.json +9158 -5124
  59. package/common/length.js +5 -9
  60. package/common/listener.js +48 -0
  61. package/common/listener.test.json +104 -0
  62. package/common/math.instance.json +409 -1202
  63. package/common/math.js +17 -21
  64. package/common/meta.js +24 -50
  65. package/common/nameable.instance.json +2 -0
  66. package/common/nameable.js +144 -0
  67. package/common/nameable.test.json +3191 -0
  68. package/common/negation.instance.json +2 -0
  69. package/common/negation.js +38 -0
  70. package/common/negation.test.json +308 -0
  71. package/common/numbers.js +28 -32
  72. package/common/ordering.instance.json +449 -273
  73. package/common/ordering.js +81 -87
  74. package/common/ordinals.instance.json +2 -0
  75. package/common/ordinals.js +60 -0
  76. package/common/ordinals.test.json +306 -0
  77. package/common/people.instance.json +2176 -1141
  78. package/common/people.js +9 -14
  79. package/common/percentages.instance.json +2 -0
  80. package/common/percentages.js +53 -0
  81. package/common/percentages.test.json +751 -0
  82. package/common/pipboy.instance.json +12120 -6879
  83. package/common/pipboy.js +53 -62
  84. package/common/pipboy.test.json +2835 -0
  85. package/common/pokemon.instance.json +4415 -2351
  86. package/common/pokemon.js +8 -21
  87. package/common/pos.js +16 -14
  88. package/common/pressure.instance.json +2348 -1373
  89. package/common/pressure.js +5 -9
  90. package/common/properties.instance.json +151 -87
  91. package/common/properties.js +156 -167
  92. package/common/properties.test.json +17605 -4030
  93. package/common/punctuation.js +24 -8
  94. package/common/punctuation.test.json +233 -5
  95. package/common/reports.instance.json +1027 -551
  96. package/common/reports.js +77 -103
  97. package/common/reports.test.json +15623 -10458
  98. package/common/scorekeeper.js +19 -31
  99. package/common/sdefaults.js +17 -8
  100. package/common/sizeable.js +13 -12
  101. package/common/spock.instance.json +585 -297
  102. package/common/spock.js +6 -9
  103. package/common/stgame.js +20 -20
  104. package/common/stm.js +182 -29
  105. package/common/stm.test.json +1734 -1
  106. package/common/tell.js +15 -19
  107. package/common/temperature.instance.json +2480 -1493
  108. package/common/temperature.js +5 -9
  109. package/common/tester.js +15 -4
  110. package/common/testing.js +8 -13
  111. package/common/time.js +21 -26
  112. package/common/tokenize.js +8 -8
  113. package/common/tokenize.test.json +86 -1
  114. package/common/ui.instance.json +151 -460
  115. package/common/ui.js +22 -34
  116. package/common/ui.test.json +641 -5357
  117. package/common/weight.instance.json +8072 -4490
  118. package/common/weight.js +5 -9
  119. package/common/weight.test.json +242 -238
  120. package/common/yesno.js +6 -6
  121. package/main.js +68 -45
  122. package/package.json +44 -6
@@ -1,4 +1,4 @@
1
- const { Config, knowledgeModule, where } = require('./runtime').theprogrammablemind
1
+ const { knowledgeModule, where } = require('./runtime').theprogrammablemind
2
2
  const { defaultContextCheck } = require('./helpers')
3
3
  const dialogues = require('./dialogues')
4
4
  const numbers = require('./numbers')
@@ -43,7 +43,7 @@ const setNextPlayer = (km, objects) => {
43
43
  word: "turn"
44
44
  }
45
45
  const api = km('stm').api
46
- api.mentioned(turn)
46
+ api.mentioned({ context: turn })
47
47
  }
48
48
 
49
49
  const addPlayer = (objects, config, player) => {
@@ -51,7 +51,7 @@ const addPlayer = (objects, config, player) => {
51
51
  objects.players.push(player);
52
52
  }
53
53
 
54
- let configStruct = {
54
+ let config = {
55
55
  name: 'scorekeeper',
56
56
  operators: [
57
57
  "([next])",
@@ -122,36 +122,29 @@ let configStruct = {
122
122
  {
123
123
  where: where(),
124
124
  match: ({context, hierarchy}) => hierarchy.isA(context.marker, 'is') && context.isResponse && context.two && context.two.marker == 'next',
125
- apply: ({context, g}) => {
125
+ apply: async ({context, g}) => {
126
126
  const response = context.evalue;
127
127
  const concept = response.two;
128
128
  concept.paraphrase = true
129
129
  concept.isSelf = true
130
- const instance = g(concept.evalue)
130
+ const instance = await g(concept.evalue)
131
131
  return instance
132
132
  }
133
133
  },
134
134
  {
135
135
  where: where(),
136
136
  match: ({context}) => context.marker == 'point' && context.isResponse && context.amount,
137
- apply: ({context, g}) => `${g(context.amount)} points`
137
+ apply: async ({context, g}) => `${await g(context.amount)} points`
138
138
  },
139
139
  {
140
140
  where: where(),
141
141
  match: ({context}) => context.marker == 'scored' && context.paraphrase,
142
- apply: ({context, g}) => `${g(context.player)} got ${g(context.points)}`
142
+ apply: async ({context, g}) => `${await g(context.player)} got ${await g(context.points)}`
143
143
  },
144
- /*
145
- {
146
- where: where(),
147
- match: ({context}) => context.marker == 'enumeration' && context.paraphrase,
148
- apply: ({context, g}) => `${g(context.concept)} are ${g(context.items)}`
149
- },
150
- */
151
144
  {
152
145
  where: where(),
153
146
  match: ({context}) => context.marker == 'start' && context.paraphrase,
154
- apply: ({context, g}) => `start ${g(context.arg)}`
147
+ apply: async ({context, g}) => `start ${await g(context.arg)}`
155
148
  },
156
149
 
157
150
  ],
@@ -161,7 +154,6 @@ let configStruct = {
161
154
  where: where(),
162
155
  match: ({context}) => context.marker == 'player' && context.same,
163
156
  apply: ({context, objects, config, km}) => {
164
- //objects.players = context.same.value.map( (props) => props.value )
165
157
  const players = context.same.value.map( (props) => props.value )
166
158
  setPlayers(objects, config, players)
167
159
  for (let player of objects.players) {
@@ -205,11 +197,11 @@ let configStruct = {
205
197
  matchq: ({objects}) => objects.players.length == 0,
206
198
  applyq: () => 'who are the players?',
207
199
  matchr: ({context}) => context.marker == 'list',
208
- applyr: ({context, gs, objects, config}) => {
200
+ applyr: async ({context, gs, objects, config}) => {
209
201
  const players = context.value.map( (player) => player.value )
210
202
  setPlayers(objects, config, players)
211
203
  objects.allPlayersAreKnown = true;
212
- context.verbatim = `The players are ${gs(objects.players, ' ', ' and ')}`
204
+ context.verbatim = `The players are ${await gs(objects.players, ' ', ' and ')}`
213
205
  context.isResponse = true;
214
206
  }
215
207
  }
@@ -242,12 +234,12 @@ let configStruct = {
242
234
  {
243
235
  where: where(),
244
236
  match: ({context}) => context.marker == 'player' && context.evaluate && context.pullFromContext,
245
- apply: ({context, objects, gs}) => {
237
+ apply: async ({context, objects, gs}) => {
246
238
  const players = objects.players
247
239
  if (players.length == 0) {
248
240
  context.evalue = 'no one'
249
241
  } else {
250
- context.evalue = gs(players, ' ', ' and ')
242
+ context.evalue = await gs(players, ' ', ' and ')
251
243
  }
252
244
  }
253
245
  },
@@ -350,21 +342,14 @@ let configStruct = {
350
342
  ],
351
343
  };
352
344
 
353
- const createConfig = () => {
354
- const config = new Config(configStruct, module)
355
- config.stop_auto_rebuild()
356
- config.add(dialogues(), numbers(), properties())
357
- config.initializer( ({objects, km, isModule}) => {
345
+ const initializer = ({objects, km, isModule}) => {
358
346
  objects.players = []
359
347
  objects.nextPlayer = undefined;
360
348
  setNextPlayer(km, objects);
361
349
  objects.scores = {};
362
350
  objects.winningScore = null
363
351
  objects.allPlayersAreKnown = false;
364
- })
365
- config.restart_auto_rebuild()
366
- return config
367
- }
352
+ }
368
353
 
369
354
  startWithDefault20 = [
370
355
  "greg got 1 point alice got 2 points greg got 1 point start a new game who is next",
@@ -382,14 +367,17 @@ startWithDefault20 = [
382
367
  ]
383
368
 
384
369
  knowledgeModule( {
370
+ config,
371
+ includes: [dialogues, numbers, properties],
372
+ initializer,
373
+
385
374
  module,
386
375
  description: 'scorekeeper for card or dice games',
387
- createConfig,
388
376
  test: {
389
377
  name: './scorekeeper.test.json',
390
378
  contents: scorekeeper_tests,
391
379
  checks: {
392
- context: defaultContextCheck,
380
+ context: defaultContextCheck(),
393
381
  },
394
382
  },
395
383
  template: {
@@ -1,8 +1,8 @@
1
- const { Config, flatten, knowledgeModule, where } = require('./runtime').theprogrammablemind
1
+ const { flatten, knowledgeModule, where } = require('./runtime').theprogrammablemind
2
2
  const { defaultContextCheck } = require('./helpers')
3
3
  const sdefaults_tests = require('./sdefaults.test.json')
4
4
 
5
- let configStruct = {
5
+ let config = {
6
6
  name: 'sdefaults',
7
7
  semantics: [
8
8
  {
@@ -12,27 +12,36 @@ let configStruct = {
12
12
  // match: ({context}) => context.flatten || context.listable && context.value[0].flatten,
13
13
  match: ({context}) => context.flatten || context.listable && context.value.some((value) => value.flatten),
14
14
  // match: ({context}) => context.flatten || context.listable || (Array.isArray(context.value) && context.value.some((value) => value.flatten)),
15
- apply: ({config, km, context, s}) => {
15
+ apply: async ({config, km, context, s}) => {
16
16
  const [flats, wf] = flatten(['list'], context)
17
17
  for (let flat of flats) {
18
- s({ ...flat, flatten: false })
18
+ await s({ ...flat, flatten: false })
19
19
  }
20
20
  }
21
21
  },
22
+ {
23
+ notes: 'semanticIsEvaluate',
24
+ where: where(),
25
+ priority: -1,
26
+ match: ({context}) => context.semanticIsEvaluate,
27
+ apply: async ({context, e}) => {
28
+ context.value = await e({ ...context, semanticIsEvaluate: false })
29
+ context.isResponse
30
+ }
31
+ },
22
32
  ],
23
33
  };
24
34
 
25
- const createConfig = () => new Config(configStruct, module)
26
-
27
35
  knowledgeModule({
36
+ config,
37
+
28
38
  module,
29
39
  description: 'defaults for semantics',
30
- createConfig,
31
40
  test: {
32
41
  name: './sdefaults.test.json',
33
42
  contents: sdefaults_tests,
34
43
  checks: {
35
- context: defaultContextCheck,
44
+ context: defaultContextCheck(),
36
45
  },
37
46
  },
38
47
  })
@@ -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 dialogues = require("./hierarchy")
4
4
  const numbers = require("./numbers")
@@ -6,7 +6,7 @@ const sizeable_tests = require('./sizeable.test.json')
6
6
 
7
7
  // TODO 1 to 2 sizeables
8
8
 
9
- let configStruct = {
9
+ let config = {
10
10
  name: 'sizeable',
11
11
  operators: [
12
12
  "(([size|]) [sizing] ([sizeable]))",
@@ -16,13 +16,18 @@ let configStruct = {
16
16
  id: "sizing",
17
17
  level: 0,
18
18
  convolution: true,
19
- before: ['verby'],
19
+ before: ['verb'],
20
20
  bridge: "{ ...after, size: before[0], modifiers: append(['size'], after.modifiers) }"
21
21
  },
22
22
  {
23
23
  id: "size",
24
24
  parents: ['adjective'],
25
- words: ['small', 'medium', 'large', 'half', 'full'],
25
+ words: [
26
+ { word: 'small', value: 'small' },
27
+ { word: 'medium', value: 'medium' },
28
+ { word: 'large', value: 'large' },
29
+ { word: 'half', value: 'half' },
30
+ { word: 'full', value: 'full' }],
26
31
  level: 0,
27
32
  bridge: "{ ...next(operator) }"
28
33
  },
@@ -47,21 +52,17 @@ let configStruct = {
47
52
  ]
48
53
  };
49
54
 
50
- const createConfig = () => {
51
- const config = new Config(configStruct, module)
52
- config.add(dialogues(), numbers())
53
- return config
54
- }
55
-
56
55
  knowledgeModule({
56
+ config,
57
+ includes: [dialogues, numbers],
58
+
57
59
  module,
58
60
  description: 'Sizeable things',
59
- createConfig,
60
61
  test: {
61
62
  name: './sizeable.test.json',
62
63
  contents: sizeable_tests,
63
64
  checks: {
64
- context: defaultContextCheck,
65
+ context: [ ...defaultContextCheck(), { property: 'size', filter: ['value'] } ],
65
66
  },
66
67
  },
67
68
  })