tpmkms_4wp 9.5.1-beta.2 → 9.5.1-beta.21

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 (84) hide show
  1. package/common/animals.instance.json +21 -61
  2. package/common/asking.js +102 -100
  3. package/common/can.instance.json +2180 -0
  4. package/common/can.js +254 -0
  5. package/common/can.test.json +50706 -0
  6. package/common/characters.js +3 -3
  7. package/common/colors.instance.json +38 -10
  8. package/common/comparable.instance.json +2 -2
  9. package/common/concept.test.json +54 -40
  10. package/common/conjunction.js +13 -5
  11. package/common/crew.instance.json +241 -123
  12. package/common/crew.js +1 -1
  13. package/common/currency.js +1 -1
  14. package/common/dates.instance.json +87 -3
  15. package/common/dialogues.js +41 -119
  16. package/common/dimension.instance.json +16 -12
  17. package/common/dimension.js +23 -4
  18. package/common/dimension.test.json +1758 -2351
  19. package/common/edible.instance.json +79 -95
  20. package/common/emotions.instance.json +53 -80
  21. package/common/emotions.js +1 -1
  22. package/common/english_helpers.js +277 -67
  23. package/common/fastfood.instance.json +35 -663
  24. package/common/fastfood.js +4 -4
  25. package/common/formulas.instance.json +1 -1
  26. package/common/gdefaults.js +85 -14
  27. package/common/help.js +2 -2
  28. package/common/help.test.json +65 -11
  29. package/common/helpers/concept.js +1 -1
  30. package/common/helpers/conjunction.js +54 -44
  31. package/common/helpers/dateTimeSelectors.js +2 -2
  32. package/common/helpers/dialogues.js +1 -1
  33. package/common/helpers/formulas.js +13 -11
  34. package/common/helpers/menus.js +12 -12
  35. package/common/helpers/meta.js +8 -8
  36. package/common/helpers/properties.js +102 -21
  37. package/common/helpers.js +82 -46
  38. package/common/hierarchy.js +4 -3
  39. package/common/kirk.instance.json +1 -1
  40. package/common/latin.instance.json +10 -10
  41. package/common/latin.js +5 -5
  42. package/common/length.instance.json +20 -2
  43. package/common/length.test.json +2241 -1801
  44. package/common/math.instance.json +20 -20
  45. package/common/math.js +45 -44
  46. package/common/menus.instance.json +3 -3
  47. package/common/menus.js +1 -1
  48. package/common/meta.js +49 -33
  49. package/common/ordering.instance.json +20 -30
  50. package/common/ordering.js +1 -1
  51. package/common/ordering.test.json +354 -296
  52. package/common/people.instance.json +56 -258
  53. package/common/people.js +1 -1
  54. package/common/people.test.json +952 -681
  55. package/common/pipboy.instance.json +72 -16
  56. package/common/pokemon.instance.json +8 -8
  57. package/common/pokemon.js +1 -1
  58. package/common/pressure.instance.json +6 -2
  59. package/common/properties.instance.json +4 -12
  60. package/common/properties.js +16 -3
  61. package/common/reminders.js +1 -1
  62. package/common/reports.instance.json +3 -3
  63. package/common/reports.js +18 -16
  64. package/common/scorekeeper.js +4 -4
  65. package/common/sdefaults.js +22 -2
  66. package/common/spock.instance.json +1 -1
  67. package/common/stgame.js +1 -1
  68. package/common/stm.js +2 -2
  69. package/common/tell.js +1 -1
  70. package/common/temperature.instance.json +6 -2
  71. package/common/tester.js +3 -3
  72. package/common/time.js +3 -3
  73. package/common/tokenize.js +1 -1
  74. package/common/weight.instance.json +19 -2
  75. package/common/words.instance.json +9 -0
  76. package/common/words.js +53 -0
  77. package/common/words.test.json +2 -0
  78. package/common/wp.instance.json +320 -8
  79. package/common/wp.js +8 -4
  80. package/common/wp.test.json +3469 -0
  81. package/main.js +0 -2
  82. package/package.json +9 -5
  83. package/common/listener.js +0 -50
  84. package/common/listener.test.json +0 -142
package/common/can.js ADDED
@@ -0,0 +1,254 @@
1
+ const { knowledgeModule, where } = require('./runtime').theprogrammablemind
2
+ const { defaultContextCheck, propertyToArray } = require('./helpers')
3
+ const hierarchy = require("./hierarchy")
4
+ const tests = require('./can.test.json')
5
+ const instance = require('./can.instance.json')
6
+
7
+ /*
8
+ you can make these coffees -> list of coffees
9
+ the coffees you can make are list of coffees
10
+ fred can fly these planes.
11
+ what can you make?
12
+ what can fred fly?
13
+ you can order a product
14
+ you can modify a document
15
+ what can you do
16
+ what can you do with a document
17
+ i order a product
18
+
19
+ fred bob and stan can make coffee
20
+ fred can make capucino bob americano and stan lattes
21
+ ask someone to make me an americano
22
+ who do I ask to make an american
23
+
24
+ have a way to convert from active to passive
25
+
26
+ DONE what can fred make
27
+ DONE can bob make coffee
28
+
29
+ DONE coffee can be made by joe
30
+ DONE who can coffee be made by
31
+ DONE who can make coffee and tea
32
+
33
+ DONE can bob make coffee
34
+ DONE what can bob make
35
+ */
36
+
37
+ const config = {
38
+ name: 'can',
39
+ operators: [
40
+ // "([can] (canableAction && context.infinitive))",
41
+ "((*) [canableAction] (*))",
42
+ "(<canStatement|can> (canableAction/0))",
43
+ "(<canQuestion|can> (canableAction/1))",
44
+ // what can joe make
45
+ "((*) [whatCanQuestion|can] (*) (canableAction))",
46
+ // who can coffee be made by
47
+ "((*) [whatCanQuestionPassive|can] (*) ([beCanPassive|be]) (canableAction) ([byCanPassive|by]))",
48
+ "((*) [canPassive|can] ([beCanPassive|be]) (canableAction) ([byCanPassive|by]) (*))",
49
+ ],
50
+ bridges: [
51
+ { id: 'beCanPassive' },
52
+ { id: 'byCanPassive' },
53
+ {
54
+ id: "canableAction",
55
+ isA: ['verb'],
56
+ },
57
+ {
58
+ id: "canStatement",
59
+ before: ['verb'],
60
+ bridge: "{ ...after[0], can: operator, verb: after[0], voice: 'active', interpolate: [{ property: 'can' }, { property: 'verb', context: { number: 'one' } }]}",
61
+ },
62
+ {
63
+ id: "canQuestion",
64
+ before: ['verb'],
65
+ bridge: "{ ...after[0], operator.form: 'infinitive', voice: 'active', truthValueOnly: true, query: true, can: operator, interpolate: append([{ property: 'can'}], after[0].interpolate)}",
66
+ },
67
+ {
68
+ // "((*) [canPassive|can] ([beCanPassive|be]) (canableAction) ([byCanPassive|by]) (*))",
69
+ id: "canPassive",
70
+ before: ['verb'],
71
+ bridge: [
72
+ // { "apply": true, "bridge": "{ ...after[1], can: operator, operator: after[1], interpolate: [{ property: 'can' }, { property: 'operator' }] }", "set": "operator" },
73
+ { "apply": true, "bridge": "{ ...after[1], can: operator, be: after[0], operator: after[1], by: after[2] }", "set": "operator" },
74
+ {
75
+ "rewire": [
76
+ { "from": 'before[0]', "to": 'after[0]' },
77
+ { "from": 'after[3]', "to": 'before[0]' },
78
+ ]
79
+ },
80
+ { "apply": true, "operator": "operator", "set": "context" },
81
+ { "apply": true, "bridge": "{ ...context, voice: 'passive', interpolate: [context.interpolate[2], { word: { marker: 'canPassive' } }, { word: { marker: 'beCanPassive' } }, context.interpolate[1], { word: { marker: 'byCanPassive' } }, context.interpolate[0]] }", "set": "context" },
82
+ // { "apply": true, "bridge": "{ ...context, interpolate: [context.interpolate[2], context.interpolate[0], context.interpolate[1]] }", set: "context" },
83
+ ],
84
+ },
85
+ {
86
+ // "((*) [whatCanQuestionPassive|can] (*) ([beCanPassive|be]) (canableAction) ([byCanPassive|by]))",
87
+ id: "whatCanQuestionPassive",
88
+ before: ['verb'],
89
+ bridge: [
90
+ // { "apply": true, "bridge": "{ ...after[1], can: operator, operator: after[1], interpolate: [{ property: 'can' }, { property: 'operator' }] }", "set": "operator" },
91
+ { "apply": true, "bridge": "{ ...after[2], can: operator, be: after[1], operator: after[2], by: after[3] }", "set": "operator" },
92
+ { "apply": true, "operator": "operator", "set": "context" },
93
+ { "apply": true, "bridge": "{ ...context, voice: 'passive', interpolate: [context.interpolate[0], { word: { marker: 'canPassive' } }, context.interpolate[2], { word: { marker: 'beCanPassive' } }, context.interpolate[1], { word: { marker: 'byCanPassive' } }] }", "set": "context" },
94
+ // { "apply": true, "bridge": "{ ...context, interpolate: [context.interpolate[2], context.interpolate[0], context.interpolate[1]] }", set: "context" },
95
+ ],
96
+ },
97
+ {
98
+ id: "whatCanQuestion",
99
+ before: ['verb'],
100
+ bridge: [
101
+ // { "apply": true, "bridge": "{ ...after[1], can: operator, operator: after[1], interpolate: [{ property: 'can' }, { property: 'operator' }] }", "set": "operator" },
102
+ { "apply": true, "bridge": "{ ...after[1], can: operator, voice: 'active', operator: after[1] }", "set": "operator" },
103
+ {
104
+ "rewire": [
105
+ { "from": 'before[0]', "to": 'after[0]' },
106
+ { "from": 'after[0]', "to": 'before[0]' },
107
+ ]
108
+ },
109
+ { "apply": true, "operator": "operator", "set": "context" },
110
+ { "apply": true, "bridge": "{ ...context, operator.form: 'infinitive', interpolate: [context.interpolate[2], { property: 'can' }, context.interpolate[0], context.interpolate[1]] }", "set": "context" },
111
+ // { "apply": true, "bridge": "{ ...context, interpolate: [context.interpolate[2], context.interpolate[0], context.interpolate[1]] }", set: "context" },
112
+ ],
113
+ },
114
+ ],
115
+ semantics: [
116
+ {
117
+ match: ({context}) => context.toVoice == 'passive',
118
+ apply: async ({g, context, fragmentMapper}) => {
119
+ for (const element of propertyToArray(context)) {
120
+ if (!element.voice) {
121
+ continue
122
+ }
123
+ if (element.voice === 'passive') {
124
+ continue
125
+ }
126
+ // From
127
+ // [{"property":"canSubject"},{"property":"operator","number":"canSubject"},{"property":"canObject"}]
128
+ element.interpolate = [
129
+ element.interpolate[2],
130
+ { word: { marker: "canPassive" } },
131
+ { word: { marker: "beCanPassive" } },
132
+ // { tense: "perfect", property: "verb" },
133
+ { semantic: [{ property: "verb" }, { overrides: { tense: "perfect", evaluateWord: true } }] },
134
+ { word: { marker: "byCanPassive" } },
135
+ element.interpolate[0],
136
+ ]
137
+ element.voice = 'passive'
138
+ }
139
+ }
140
+ },
141
+ {
142
+ match: ({context}) => context.toVoice == 'active',
143
+ apply: async ({g, context, fragmentMapper}) => {
144
+ // From
145
+ // [{"property":"canSubject"},{"property":"operator","number":"canSubject"},{"property":"canObject"}]
146
+ for (const element of propertyToArray(context)) {
147
+ if (!element.voice) {
148
+ continue
149
+ }
150
+ if (element.voice === 'active') {
151
+ continue
152
+ }
153
+ element.interpolate = [
154
+ element.interpolate[5],
155
+ { "word": { "marker": "canPassive" } },
156
+ // { "number": element.interpolate[5].property, "property": "operator" },
157
+ { semantic: [{ property: "operator" }, { overrides: { form: "infinitive", evaluateWord: true } }] },
158
+ element.interpolate[0],
159
+ ]
160
+ element.voice = 'active'
161
+ }
162
+ }
163
+ },
164
+ ],
165
+ };
166
+
167
+ const template = {
168
+ fragments: [
169
+ "canobject can be canverb by cansubject",
170
+ "cansubject can canverb canobject",
171
+ ],
172
+
173
+ configs: [
174
+ ({isProcess, isTesting, testModuleName, apis, config, addHierarchy}) => {
175
+ if (isProcess || isTesting) {
176
+ const api = apis('properties')
177
+ api.createActionPrefix({
178
+ before: [{tag: 'maker', id: 'maker'}],
179
+ operator: 'make',
180
+ after: [{tag: 'makeable', id: 'makeable'}],
181
+ relation: true,
182
+ flatten: true,
183
+ can: true,
184
+ create: [
185
+ {
186
+ id: 'make',
187
+ infinitive: 'make',
188
+ },
189
+ 'makeable',
190
+ 'maker'
191
+ ],
192
+ localHierarchy: [
193
+ ['unknown', 'maker'],
194
+ ['unknown', 'makeable'],
195
+ ],
196
+ config,
197
+ })
198
+ }
199
+ const api = apis('properties')
200
+ api.createActionPrefix({
201
+ before: [{tag: 'canSubject', id: 'canSubject'}],
202
+ operator: 'canVerb',
203
+ after: [{tag: 'canObject', id: 'canObject'}],
204
+ relation: true,
205
+ flatten: true,
206
+ can: true,
207
+ create: [
208
+ {
209
+ id: 'canVerb',
210
+ },
211
+ 'canObject',
212
+ 'canSubject'
213
+ ],
214
+ localHierarchy: [
215
+ ['unknown', 'canObject'],
216
+ ['unknown', 'canSubject'],
217
+ ],
218
+ config,
219
+ })
220
+ },
221
+ async ({fragments, addWordToDictionary}) => {
222
+ const fragment = await fragments("canobject can be canverb by cansubject")
223
+ // only run after rebuild template
224
+ if (fragment) {
225
+ const context = fragment.contexts()[0]
226
+ addWordToDictionary(context.be)
227
+ addWordToDictionary(context.by)
228
+ addWordToDictionary(context.can)
229
+ }
230
+ },
231
+ ]
232
+ }
233
+
234
+ knowledgeModule( {
235
+ config,
236
+ includes: [hierarchy],
237
+
238
+ module,
239
+ description: 'talk about what can be done',
240
+ test: {
241
+ name: './can.test.json',
242
+ contents: tests,
243
+ checks: {
244
+ context: [
245
+ defaultContextCheck({ extra: ['can', 'evalue', 'makeable', 'maker', 'operator', 'interpolate', 'number', 'property', 'word'] }),
246
+ ],
247
+ },
248
+ },
249
+ template: {
250
+ template,
251
+ instance,
252
+ },
253
+
254
+ })