tpmkms 8.0.0-beta.30 → 8.0.0-beta.32

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 (38) hide show
  1. package/common/animals.instance.json +325 -0
  2. package/common/articles.js +108 -0
  3. package/common/articles.test.json +310 -0
  4. package/common/colors.instance.json +340 -0
  5. package/common/crew.instance.json +525 -0
  6. package/common/dialogues.js +66 -102
  7. package/common/dimension.instance.json +20 -0
  8. package/common/edible.instance.json +650 -28
  9. package/common/emotions.instance.json +25 -0
  10. package/common/evaluate.instance.json +2 -0
  11. package/common/evaluate.js +55 -0
  12. package/common/evaluate.test.json +574 -0
  13. package/common/fastfood.instance.json +1989 -329
  14. package/common/formulas.instance.json +20 -0
  15. package/common/gdefaults.js +6 -6
  16. package/common/help.test.json +16 -4
  17. package/common/helpers.js +1 -1
  18. package/common/kirk.instance.json +20 -0
  19. package/common/length.instance.json +300 -0
  20. package/common/math.instance.json +25 -0
  21. package/common/nameable.instance.json +2 -0
  22. package/common/nameable.js +137 -0
  23. package/common/nameable.test.json +1545 -0
  24. package/common/ordering.instance.json +50 -0
  25. package/common/people.instance.json +165 -0
  26. package/common/pipboy.instance.json +340 -0
  27. package/common/pokemon.instance.json +265 -0
  28. package/common/pressure.instance.json +80 -0
  29. package/common/properties.instance.json +25 -0
  30. package/common/reports.instance.json +41 -1
  31. package/common/spock.instance.json +20 -0
  32. package/common/stm.js +109 -3
  33. package/common/stm.test.json +1702 -1
  34. package/common/temperature.instance.json +192 -0
  35. package/common/ui.instance.json +20 -0
  36. package/common/weight.instance.json +240 -0
  37. package/main.js +6 -0
  38. package/package.json +13 -2
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,6 +35,10 @@ class API {
27
35
  return false
28
36
  }
29
37
 
38
+ getByType(type) {
39
+ return this._objects.mentioned.filter( (context) => this.isA(context.marker, type) )
40
+ }
41
+
30
42
  mentioned(concept, value = undefined) {
31
43
  // TODO value should perhaps have been called id as in concept id and then value could be value
32
44
  if (value) {
@@ -43,13 +55,24 @@ class API {
43
55
  concept.value = value
44
56
  }
45
57
  concept.fromSTM = true
58
+ if (!concept.stm_uuid) {
59
+ concept.stm_uuid = this.getId()
60
+ }
61
+ this._objects.mentioned = this._objects.mentioned.filter( (context) => context.stm_uuid != concept.stm_uuid )
46
62
  this._objects.mentioned.unshift(concept)
47
63
  }
48
64
 
49
65
  mentions(context, useHierarchy=true) {
66
+ const findPrevious = !!context.stm_previous
67
+
50
68
  // care about value first
69
+ let findCounter = 0
51
70
  for (let m of this._objects.mentioned) {
52
- if (context.value && context.value == m.marker) {
71
+ if (context.value && (context.value == m.marker || context.value == m.value)) {
72
+ if (findPrevious && findCounter < 1) {
73
+ findCounter += 1
74
+ continue
75
+ }
53
76
  return m
54
77
  }
55
78
  }
@@ -57,24 +80,39 @@ class API {
57
80
  if (!useHierarchy) {
58
81
  return
59
82
  }
83
+
60
84
  // care about marker second
85
+ findCounter = 0
61
86
  for (let m of this._objects.mentioned) {
62
87
  if (context.marker != 'unknown' && this.isA(m.marker, context.marker)) {
88
+ if (findPrevious && findCounter < 1) {
89
+ findCounter += 1
90
+ continue
91
+ }
63
92
  return m
64
93
  }
65
94
  // if (context.types && context.types.includes(m.marker)) {
66
95
  if (context.types) {
67
96
  for (let parent of context.types) {
68
97
  if (parent != 'unknown' && this.isA(m.marker, parent)) {
98
+ if (findPrevious && findCounter < 1) {
99
+ findCounter += 1
100
+ continue
101
+ }
69
102
  return m
70
103
  }
71
104
  }
72
105
  }
73
106
  }
74
107
 
108
+ findCounter = 0
75
109
  if (context.types && context.types.length == 1) {
76
110
  for (let m of this._objects.mentioned) {
77
111
  if (context.unknown) {
112
+ if (findPrevious && findCounter < 1) {
113
+ findCounter += 1
114
+ continue
115
+ }
78
116
  return m
79
117
  }
80
118
  }
@@ -99,8 +137,75 @@ class API {
99
137
 
100
138
  const api = new API()
101
139
 
140
+ const configStruct = {
141
+ name: 'stm',
142
+ operators: [
143
+ "([stm_previous|previous] ([memorable]))",
144
+ "(([memorable]) [stm_before|before])",
145
+ "([remember] (memorable/*))",
146
+ ],
147
+ words: {
148
+ literals: {
149
+ "m1": [{"id": "memorable", development: true, "initial": "{ value: 'm1' }" }],
150
+ "m2": [{"id": "memorable", development: true, "initial": "{ value: 'm2' }" }],
151
+ },
152
+ },
153
+ bridges: [
154
+ {
155
+ id: 'memorable',
156
+ isA: ['theAble'],
157
+ words: helpers.words('memorable')
158
+ },
159
+ {
160
+ id: 'remember',
161
+ bridge: "{ ...next(operator), postModifiers: ['rememberee'], rememberee: after[0] }",
162
+ isA: ['verby'],
163
+ semantic: async ({context, api, e}) => {
164
+ let value = (await e(context.rememberee)).evalue
165
+ if (value == context.rememberee.value) {
166
+ value = context.rememberee
167
+ }
168
+ api.mentioned(value)
169
+ },
170
+ },
171
+ {
172
+ id: 'stm_previous',
173
+ bridge: '{ ...after[0], modifiers: ["stm_previous"], stm_previous: operator, pullFromContext: true }',
174
+ },
175
+ {
176
+ id: 'stm_before',
177
+ isA: ['adjective'],
178
+ bridge: '{ ...before[0], postModifiers: ["stm_previous"], stm_previous: operator, pullFromContext: true }',
179
+ },
180
+ ],
181
+ semantics: [
182
+ {
183
+ where: where(),
184
+ notes: 'pull from context',
185
+ // match: ({context}) => context.marker == 'it' && context.pullFromContext, // && context.value,
186
+ match: ({context, callId}) => context.pullFromContext && !context.same, // && context.value,
187
+ apply: async ({callId, context, kms, e, log, retry}) => {
188
+ context.value = kms.stm.api.mentions(context)
189
+ if (!context.value) {
190
+ // retry()
191
+ context.value = { marker: 'answerNotKnown' }
192
+ return
193
+ }
194
+
195
+ const instance = await e(context.value)
196
+ if (instance.evalue && !instance.edefault) {
197
+ context.value = instance.evalue
198
+ }
199
+ if (context.evaluate) {
200
+ context.evalue = context.value
201
+ }
202
+ },
203
+ },
204
+ ],
205
+ }
206
+
102
207
  let createConfig = async () => {
103
- const config = new Config({ name: 'stm' }, module)
208
+ const config = new Config(configStruct, module)
104
209
  config.stop_auto_rebuild()
105
210
 
106
211
  await config.initializer( ({config}) => {
@@ -114,6 +219,7 @@ let createConfig = async () => {
114
219
  }))
115
220
  })
116
221
  await config.setApi(api)
222
+ await config.add(evaluate, articles)
117
223
 
118
224
  await config.restart_auto_rebuild()
119
225
  return config
@@ -127,7 +233,7 @@ knowledgeModule( {
127
233
  name: './stm.test.json',
128
234
  contents: stm_tests,
129
235
  checks: {
130
- context: defaultContextCheck,
236
+ context: [...defaultContextCheck, 'pullFromContext', 'stm_uuid'],
131
237
  objects: ['mentioned'],
132
238
  },
133
239
  },