tpmkms_4wp 8.0.0-beta.4 → 8.0.0-beta.41

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 (98) hide show
  1. package/common/animals.instance.json +2855 -1363
  2. package/common/animals.js +2 -2
  3. package/common/articles.js +108 -0
  4. package/common/articles.test.json +310 -0
  5. package/common/avatar.js +2 -2
  6. package/common/characters.js +9 -11
  7. package/common/colors.instance.json +6980 -3523
  8. package/common/colors.js +2 -2
  9. package/common/colors.test.json +345 -780
  10. package/common/comparable.js +2 -15
  11. package/common/concept.js +17 -11
  12. package/common/countable.js +5 -5
  13. package/common/crew.instance.json +13032 -6570
  14. package/common/crew.js +4 -4
  15. package/common/crew.test.json +714 -452
  16. package/common/currency.js +7 -7
  17. package/common/dialogues.js +117 -238
  18. package/common/dimension.instance.json +265 -264
  19. package/common/dimension.js +13 -13
  20. package/common/dimension.test.json +446 -1640
  21. package/common/edible.instance.json +19910 -9988
  22. package/common/edible.js +2 -2
  23. package/common/emotions.instance.json +146 -128
  24. package/common/emotions.js +4 -4
  25. package/common/evaluate.instance.json +2 -0
  26. package/common/evaluate.js +55 -0
  27. package/common/evaluate.test.json +574 -0
  28. package/common/events.js +6 -6
  29. package/common/fastfood.instance.json +221110 -111293
  30. package/common/fastfood.js +25 -25
  31. package/common/formulas.instance.json +241 -255
  32. package/common/formulas.js +14 -14
  33. package/common/gdefaults.js +19 -19
  34. package/common/help.js +4 -4
  35. package/common/help.test.json +22 -22
  36. package/common/helpers/concept.js +9 -6
  37. package/common/helpers/dialogues.js +2 -3
  38. package/common/helpers/properties.js +48 -58
  39. package/common/helpers.js +1 -1
  40. package/common/hierarchy.js +12 -16
  41. package/common/javascript.js +8 -8
  42. package/common/kirk.instance.json +583 -289
  43. package/common/kirk.js +2 -2
  44. package/common/length.instance.json +5530 -4754
  45. package/common/length.js +2 -2
  46. package/common/listener.js +54 -0
  47. package/common/listener.test.json +104 -0
  48. package/common/math.instance.json +176 -1168
  49. package/common/math.js +11 -11
  50. package/common/meta.js +22 -29
  51. package/common/nameable.instance.json +2 -0
  52. package/common/nameable.js +142 -0
  53. package/common/nameable.test.json +2121 -0
  54. package/common/negation.instance.json +2 -0
  55. package/common/negation.js +38 -0
  56. package/common/negation.test.json +308 -0
  57. package/common/numbers.js +3 -3
  58. package/common/ordering.instance.json +340 -228
  59. package/common/ordering.js +5 -5
  60. package/common/people.instance.json +2066 -1014
  61. package/common/people.js +4 -5
  62. package/common/percentages.instance.json +2 -0
  63. package/common/percentages.js +57 -0
  64. package/common/percentages.test.json +751 -0
  65. package/common/pipboy.instance.json +7974 -6300
  66. package/common/pipboy.js +29 -32
  67. package/common/pokemon.instance.json +4207 -2069
  68. package/common/pokemon.js +4 -4
  69. package/common/pos.js +1 -1
  70. package/common/pressure.instance.json +1341 -1189
  71. package/common/pressure.js +2 -2
  72. package/common/properties.instance.json +130 -60
  73. package/common/properties.js +54 -125
  74. package/common/punctuation.js +2 -2
  75. package/common/reports.instance.json +595 -557
  76. package/common/reports.js +58 -76
  77. package/common/scorekeeper.js +14 -22
  78. package/common/sdefaults.js +13 -3
  79. package/common/sizeable.js +2 -2
  80. package/common/spock.instance.json +583 -289
  81. package/common/spock.js +2 -2
  82. package/common/stgame.js +13 -9
  83. package/common/stm.js +162 -19
  84. package/common/stm.test.json +1734 -1
  85. package/common/tell.js +10 -10
  86. package/common/temperature.instance.json +1484 -1204
  87. package/common/temperature.js +2 -2
  88. package/common/tester.js +2 -2
  89. package/common/testing.js +5 -5
  90. package/common/time.js +7 -7
  91. package/common/tokenize.js +1 -1
  92. package/common/ui.instance.json +257 -258
  93. package/common/ui.js +9 -9
  94. package/common/weight.instance.json +5212 -4233
  95. package/common/weight.js +2 -2
  96. package/common/yesno.js +1 -1
  97. package/main.js +59 -46
  98. package/package.json +27 -6
package/common/spock.js CHANGED
@@ -10,9 +10,9 @@ const template = {
10
10
  ]
11
11
  };
12
12
 
13
- const createConfig = () => {
13
+ const createConfig = async () => {
14
14
  const config = new Config({ name: 'spock', }, module)
15
- config.add(crew())
15
+ await config.add(crew)
16
16
  return config
17
17
  }
18
18
 
package/common/stgame.js CHANGED
@@ -62,22 +62,26 @@ class SpockAPI {
62
62
  }
63
63
 
64
64
 
65
- const createConfig = () => {
66
- const characters = createCharacters()
67
- const kirk = createKirk()
68
- const spock = createSpock()
69
- characters.api = new KirkAPI(kirk);
70
- characters.api = new SpockAPI(spock);
65
+ const createConfig = async () => {
71
66
  const config = new Config({
72
67
  name: 'stgame',
73
68
  operators: [ "([a])" ],
74
69
  bridges: [ { id: 'a', level: 0, bridge: "{ ...next(operator) }" } ],
75
70
  words: {"?": [{"id": "a", "initial": "{}" }]},
76
71
  }, module)
72
+
73
+ const createCharactersHelper = async () => {
74
+ const characters = await createCharacters()
75
+ const kirk = await createKirk()
76
+ const spock = await createSpock()
77
+ await characters.setApi(new KirkAPI(kirk))
78
+ await characters.setApi(new SpockAPI(spock))
79
+ return characters
80
+ }
77
81
  config.stop_auto_rebuild()
78
- config.api = api
79
- config.add(characters)
80
- config.restart_auto_rebuild()
82
+ await config.setApi(api)
83
+ await config.add(createCharactersHelper)
84
+ await config.restart_auto_rebuild()
81
85
  return config
82
86
  }
83
87
 
package/common/stm.js CHANGED
@@ -1,5 +1,8 @@
1
1
  const { Config, knowledgeModule, where } = require('./runtime').theprogrammablemind
2
2
  const { defaultContextCheck } = require('./helpers')
3
+ const helpers = require('./helpers')
4
+ const articles = require('./articles')
5
+ const evaluate = require('./evaluate')
3
6
  const stm_tests = require('./stm.test.json')
4
7
 
5
8
  class API {
@@ -10,6 +13,11 @@ class API {
10
13
  ]
11
14
  this._objects.mentioned = []
12
15
  this._objects.variables = {}
16
+ this.idCounter = 0
17
+ }
18
+
19
+ getId() {
20
+ return ++this.idCounter
13
21
  }
14
22
 
15
23
  addIsA(isA) {
@@ -27,7 +35,11 @@ class API {
27
35
  return false
28
36
  }
29
37
 
30
- mentioned(concept, value = undefined) {
38
+ getByType(type) {
39
+ return this._objects.mentioned.filter( (context) => this.isA(context.marker, type) )
40
+ }
41
+
42
+ mentioned({ context:concept, value=null } = {}) {
31
43
  // TODO value should perhaps have been called id as in concept id and then value could be value
32
44
  if (value) {
33
45
  concept = { ...concept, pullFromContext: false }
@@ -43,49 +55,112 @@ class API {
43
55
  concept.value = value
44
56
  }
45
57
  concept.fromSTM = true
58
+ if (!concept.stm) {
59
+ concept.stm = {}
60
+ }
61
+ if (!concept.stm.id) {
62
+ concept.stm.id = this.getId()
63
+ }
64
+ this._objects.mentioned = this._objects.mentioned.filter( (context) => context.stm && context.stm.id != concept.stm.id )
46
65
  this._objects.mentioned.unshift(concept)
47
66
  }
48
67
 
49
- mentions(context, useHierarchy=true) {
68
+ mentions({ context, useHierarchy=true, all, condition = (() => true) } = {}) {
69
+ const findPrevious = !!context.stm_previous
70
+ const forAll = []
71
+ const addForAll = (context) => {
72
+ if (!forAll.find( (c) => c.stm.id == context.stm.id)) {
73
+ forAll.push(context)
74
+ }
75
+ }
76
+
50
77
  // care about value first
78
+ let findCounter = 0
51
79
  for (let m of this._objects.mentioned) {
52
- if (context.value && context.value == m.marker) {
53
- return m
80
+ if (context.value && (context.value == m.marker || context.value == m.value)) {
81
+ findCounter += 1
82
+ if (findPrevious && findCounter < 2) {
83
+ continue
84
+ }
85
+ if (condition()) {
86
+ if (all) {
87
+ allForAll(m)
88
+ } else {
89
+ return m
90
+ }
91
+ }
54
92
  }
55
93
  }
56
94
 
57
95
  if (!useHierarchy) {
58
96
  return
59
97
  }
98
+
60
99
  // care about marker second
100
+ findCounter = 0
61
101
  for (let m of this._objects.mentioned) {
62
102
  if (context.marker != 'unknown' && this.isA(m.marker, context.marker)) {
63
- return m
103
+ findCounter += 1
104
+ if (findPrevious && findCounter < 2) {
105
+ continue
106
+ }
107
+ if (condition(m)) {
108
+ if (all) {
109
+ addForAll(m)
110
+ } else {
111
+ return m
112
+ }
113
+ }
64
114
  }
65
115
  // if (context.types && context.types.includes(m.marker)) {
66
116
  if (context.types) {
67
117
  for (let parent of context.types) {
68
118
  if (parent != 'unknown' && this.isA(m.marker, parent)) {
69
- return m
119
+ findCounter += 1
120
+ if (findPrevious && findCounter < 2) {
121
+ continue
122
+ }
123
+ if (condition(m)) {
124
+ if (all) {
125
+ addForAll(m)
126
+ } else {
127
+ return m
128
+ }
129
+ }
70
130
  }
71
131
  }
72
132
  }
73
133
  }
74
134
 
135
+ findCounter = 0
75
136
  if (context.types && context.types.length == 1) {
76
137
  for (let m of this._objects.mentioned) {
77
138
  if (context.unknown) {
78
- return m
139
+ findCounter += 1
140
+ if (findPrevious && findCounter < 2) {
141
+ continue
142
+ }
143
+ if (condition(m)) {
144
+ if (all) {
145
+ addForAll(m)
146
+ } else {
147
+ return m
148
+ }
149
+ }
79
150
  }
80
151
  }
81
152
  }
153
+
154
+ if (all) {
155
+ return forAll
156
+ }
82
157
  }
83
158
 
84
159
  getVariable(name) {
85
160
  if (!name) {
86
161
  return
87
162
  }
88
- let valueNew = this.mentions({ marker: name, value: name }, false) || name
163
+ let valueNew = this.mentions({ context: { marker: name, value: name }, useHierarchy: false }) || name
89
164
  if (valueNew && valueNew.value) {
90
165
  valueNew = valueNew.value
91
166
  }
@@ -93,29 +168,97 @@ class API {
93
168
  }
94
169
 
95
170
  setVariable(name, value) {
96
- this.mentioned({ marker: name }, value)
171
+ this.mentioned({ context: { marker: name }, value })
97
172
  }
98
173
  }
99
174
 
100
175
  const api = new API()
101
176
 
102
- let createConfig = () => {
103
- const config = new Config({ name: 'stm' }, module)
177
+ const configStruct = {
178
+ name: 'stm',
179
+ operators: [
180
+ "([stm_previous|previous] ([memorable]))",
181
+ "(([memorable]) [stm_before|before])",
182
+ "([remember] (memorable/*))",
183
+ ],
184
+ words: {
185
+ literals: {
186
+ "m1": [{"id": "memorable", development: true, "initial": "{ value: 'm1' }" }],
187
+ "m2": [{"id": "memorable", development: true, "initial": "{ value: 'm2' }" }],
188
+ },
189
+ },
190
+ bridges: [
191
+ {
192
+ id: 'memorable',
193
+ isA: ['theAble'],
194
+ words: helpers.words('memorable')
195
+ },
196
+ {
197
+ id: 'remember',
198
+ bridge: "{ ...next(operator), postModifiers: ['rememberee'], rememberee: after[0] }",
199
+ isA: ['verby'],
200
+ semantic: async ({context, api, e}) => {
201
+ let value = (await e(context.rememberee)).evalue
202
+ if (value == context.rememberee.value) {
203
+ value = context.rememberee
204
+ }
205
+ api.mentioned({ context: value })
206
+ },
207
+ },
208
+ {
209
+ id: 'stm_previous',
210
+ bridge: '{ ...after[0], modifiers: ["stm_previous"], stm_previous: operator, pullFromContext: true }',
211
+ },
212
+ {
213
+ id: 'stm_before',
214
+ isA: ['adjective'],
215
+ bridge: '{ ...before[0], postModifiers: ["stm_previous"], stm_previous: operator, pullFromContext: true }',
216
+ },
217
+ ],
218
+ semantics: [
219
+ {
220
+ where: where(),
221
+ notes: 'pull from context',
222
+ // match: ({context}) => context.marker == 'it' && context.pullFromContext, // && context.value,
223
+ match: ({context, callId}) => context.pullFromContext && !context.same, // && context.value,
224
+ apply: async ({callId, context, kms, e, log, retry}) => {
225
+ context.value = kms.stm.api.mentions({ context })
226
+ if (!context.value) {
227
+ // retry()
228
+ context.value = { marker: 'answerNotKnown' }
229
+ return
230
+ }
231
+
232
+ const instance = await e(context.value)
233
+ if (instance.evalue && !instance.edefault) {
234
+ context.value = instance.evalue
235
+ }
236
+ if (context.evaluate) {
237
+ context.evalue = context.value
238
+ }
239
+ },
240
+ },
241
+ ],
242
+ }
243
+
244
+ let createConfig = async () => {
245
+ const config = new Config(configStruct, module)
104
246
  config.stop_auto_rebuild()
105
247
 
106
- config.initializer( ({config}) => {
248
+ await config.initializer( ({config}) => {
107
249
  config.addArgs(({kms}) => ({
108
- mentioned: (context) => {
109
- kms.stm.api.mentioned(context)
250
+ mentioned: ({ context }) => {
251
+ kms.stm.api.mentioned({ context })
110
252
  },
111
- mentions: (context) => {
112
- return kms.stm.api.mentions(context)
253
+ mentions: ({ context }) => {
254
+ return kms.stm.api.mentions({ context })
113
255
  },
114
256
  }))
115
257
  })
116
- config.api = api
258
+ await config.setApi(api)
259
+ await config.add(evaluate, articles)
117
260
 
118
- config.restart_auto_rebuild()
261
+ await config.restart_auto_rebuild()
119
262
  return config
120
263
  }
121
264
 
@@ -127,7 +270,7 @@ knowledgeModule( {
127
270
  name: './stm.test.json',
128
271
  contents: stm_tests,
129
272
  checks: {
130
- context: defaultContextCheck,
273
+ context: [...defaultContextCheck, 'pullFromContext', 'stm_id'],
131
274
  objects: ['mentioned'],
132
275
  },
133
276
  },