tpmkms_4wp 8.0.0-beta.4 → 8.0.0-beta.40

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 (96) 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/math.instance.json +176 -1168
  47. package/common/math.js +11 -11
  48. package/common/meta.js +22 -29
  49. package/common/nameable.instance.json +2 -0
  50. package/common/nameable.js +136 -0
  51. package/common/nameable.test.json +2121 -0
  52. package/common/negation.instance.json +2 -0
  53. package/common/negation.js +38 -0
  54. package/common/negation.test.json +308 -0
  55. package/common/numbers.js +3 -3
  56. package/common/ordering.instance.json +340 -228
  57. package/common/ordering.js +5 -5
  58. package/common/people.instance.json +2066 -1014
  59. package/common/people.js +4 -5
  60. package/common/percentages.instance.json +2 -0
  61. package/common/percentages.js +57 -0
  62. package/common/percentages.test.json +751 -0
  63. package/common/pipboy.instance.json +7974 -6300
  64. package/common/pipboy.js +29 -32
  65. package/common/pokemon.instance.json +4207 -2069
  66. package/common/pokemon.js +4 -4
  67. package/common/pos.js +1 -1
  68. package/common/pressure.instance.json +1341 -1189
  69. package/common/pressure.js +2 -2
  70. package/common/properties.instance.json +130 -60
  71. package/common/properties.js +54 -125
  72. package/common/punctuation.js +2 -2
  73. package/common/reports.instance.json +595 -557
  74. package/common/reports.js +58 -76
  75. package/common/scorekeeper.js +14 -22
  76. package/common/sdefaults.js +13 -3
  77. package/common/sizeable.js +2 -2
  78. package/common/spock.instance.json +583 -289
  79. package/common/spock.js +2 -2
  80. package/common/stgame.js +13 -9
  81. package/common/stm.js +136 -19
  82. package/common/stm.test.json +1734 -1
  83. package/common/tell.js +10 -10
  84. package/common/temperature.instance.json +1484 -1204
  85. package/common/temperature.js +2 -2
  86. package/common/tester.js +2 -2
  87. package/common/testing.js +5 -5
  88. package/common/time.js +7 -7
  89. package/common/tokenize.js +1 -1
  90. package/common/ui.instance.json +257 -258
  91. package/common/ui.js +9 -9
  92. package/common/weight.instance.json +5212 -4233
  93. package/common/weight.js +2 -2
  94. package/common/yesno.js +1 -1
  95. package/main.js +57 -46
  96. package/package.json +24 -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,39 +55,76 @@ 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, condition = (() => true) } = {}) {
69
+ const findPrevious = !!context.stm_previous
70
+
50
71
  // care about value first
72
+ let findCounter = 0
51
73
  for (let m of this._objects.mentioned) {
52
- if (context.value && context.value == m.marker) {
53
- return m
74
+ if (context.value && (context.value == m.marker || context.value == m.value)) {
75
+ findCounter += 1
76
+ if (findPrevious && findCounter < 2) {
77
+ continue
78
+ }
79
+ if (condition()) {
80
+ return m
81
+ }
54
82
  }
55
83
  }
56
84
 
57
85
  if (!useHierarchy) {
58
86
  return
59
87
  }
88
+
60
89
  // care about marker second
90
+ findCounter = 0
61
91
  for (let m of this._objects.mentioned) {
62
92
  if (context.marker != 'unknown' && this.isA(m.marker, context.marker)) {
63
- return m
93
+ findCounter += 1
94
+ if (findPrevious && findCounter < 2) {
95
+ continue
96
+ }
97
+ if (condition(m)) {
98
+ return m
99
+ }
64
100
  }
65
101
  // if (context.types && context.types.includes(m.marker)) {
66
102
  if (context.types) {
67
103
  for (let parent of context.types) {
68
104
  if (parent != 'unknown' && this.isA(m.marker, parent)) {
69
- return m
105
+ findCounter += 1
106
+ if (findPrevious && findCounter < 2) {
107
+ continue
108
+ }
109
+ if (condition(m)) {
110
+ return m
111
+ }
70
112
  }
71
113
  }
72
114
  }
73
115
  }
74
116
 
117
+ findCounter = 0
75
118
  if (context.types && context.types.length == 1) {
76
119
  for (let m of this._objects.mentioned) {
77
120
  if (context.unknown) {
78
- return m
121
+ findCounter += 1
122
+ if (findPrevious && findCounter < 2) {
123
+ continue
124
+ }
125
+ if (condition(m)) {
126
+ return m
127
+ }
79
128
  }
80
129
  }
81
130
  }
@@ -85,7 +134,7 @@ class API {
85
134
  if (!name) {
86
135
  return
87
136
  }
88
- let valueNew = this.mentions({ marker: name, value: name }, false) || name
137
+ let valueNew = this.mentions({ context: { marker: name, value: name }, useHierarchy: false }) || name
89
138
  if (valueNew && valueNew.value) {
90
139
  valueNew = valueNew.value
91
140
  }
@@ -93,29 +142,97 @@ class API {
93
142
  }
94
143
 
95
144
  setVariable(name, value) {
96
- this.mentioned({ marker: name }, value)
145
+ this.mentioned({ context: { marker: name }, value })
97
146
  }
98
147
  }
99
148
 
100
149
  const api = new API()
101
150
 
102
- let createConfig = () => {
103
- const config = new Config({ name: 'stm' }, module)
151
+ const configStruct = {
152
+ name: 'stm',
153
+ operators: [
154
+ "([stm_previous|previous] ([memorable]))",
155
+ "(([memorable]) [stm_before|before])",
156
+ "([remember] (memorable/*))",
157
+ ],
158
+ words: {
159
+ literals: {
160
+ "m1": [{"id": "memorable", development: true, "initial": "{ value: 'm1' }" }],
161
+ "m2": [{"id": "memorable", development: true, "initial": "{ value: 'm2' }" }],
162
+ },
163
+ },
164
+ bridges: [
165
+ {
166
+ id: 'memorable',
167
+ isA: ['theAble'],
168
+ words: helpers.words('memorable')
169
+ },
170
+ {
171
+ id: 'remember',
172
+ bridge: "{ ...next(operator), postModifiers: ['rememberee'], rememberee: after[0] }",
173
+ isA: ['verby'],
174
+ semantic: async ({context, api, e}) => {
175
+ let value = (await e(context.rememberee)).evalue
176
+ if (value == context.rememberee.value) {
177
+ value = context.rememberee
178
+ }
179
+ api.mentioned({ context: value })
180
+ },
181
+ },
182
+ {
183
+ id: 'stm_previous',
184
+ bridge: '{ ...after[0], modifiers: ["stm_previous"], stm_previous: operator, pullFromContext: true }',
185
+ },
186
+ {
187
+ id: 'stm_before',
188
+ isA: ['adjective'],
189
+ bridge: '{ ...before[0], postModifiers: ["stm_previous"], stm_previous: operator, pullFromContext: true }',
190
+ },
191
+ ],
192
+ semantics: [
193
+ {
194
+ where: where(),
195
+ notes: 'pull from context',
196
+ // match: ({context}) => context.marker == 'it' && context.pullFromContext, // && context.value,
197
+ match: ({context, callId}) => context.pullFromContext && !context.same, // && context.value,
198
+ apply: async ({callId, context, kms, e, log, retry}) => {
199
+ context.value = kms.stm.api.mentions({ context })
200
+ if (!context.value) {
201
+ // retry()
202
+ context.value = { marker: 'answerNotKnown' }
203
+ return
204
+ }
205
+
206
+ const instance = await e(context.value)
207
+ if (instance.evalue && !instance.edefault) {
208
+ context.value = instance.evalue
209
+ }
210
+ if (context.evaluate) {
211
+ context.evalue = context.value
212
+ }
213
+ },
214
+ },
215
+ ],
216
+ }
217
+
218
+ let createConfig = async () => {
219
+ const config = new Config(configStruct, module)
104
220
  config.stop_auto_rebuild()
105
221
 
106
- config.initializer( ({config}) => {
222
+ await config.initializer( ({config}) => {
107
223
  config.addArgs(({kms}) => ({
108
- mentioned: (context) => {
109
- kms.stm.api.mentioned(context)
224
+ mentioned: ({ context }) => {
225
+ kms.stm.api.mentioned({ context })
110
226
  },
111
- mentions: (context) => {
112
- return kms.stm.api.mentions(context)
227
+ mentions: ({ context }) => {
228
+ return kms.stm.api.mentions({ context })
113
229
  },
114
230
  }))
115
231
  })
116
- config.api = api
232
+ await config.setApi(api)
233
+ await config.add(evaluate, articles)
117
234
 
118
- config.restart_auto_rebuild()
235
+ await config.restart_auto_rebuild()
119
236
  return config
120
237
  }
121
238
 
@@ -127,7 +244,7 @@ knowledgeModule( {
127
244
  name: './stm.test.json',
128
245
  contents: stm_tests,
129
246
  checks: {
130
- context: defaultContextCheck,
247
+ context: [...defaultContextCheck, 'pullFromContext', 'stm_id'],
131
248
  objects: ['mentioned'],
132
249
  },
133
250
  },