tpmkms_4wp 9.1.1 → 9.2.0-beta.1

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 (65) hide show
  1. package/common/animals.instance.json +21 -8
  2. package/common/articles.js +3 -0
  3. package/common/asking.test.json +193 -72
  4. package/common/avatar.js +0 -6
  5. package/common/colors.instance.json +32 -18
  6. package/common/comparable.instance.json +3 -0
  7. package/common/comparable.js +6 -0
  8. package/common/concept.js +1 -1
  9. package/common/crew.instance.json +4885 -1224
  10. package/common/crew.js +0 -7
  11. package/common/crew.test.json +1904 -0
  12. package/common/dates.instance.json +28562 -0
  13. package/common/dates.js +152 -0
  14. package/common/dates.test.json +10239 -0
  15. package/common/dialogues.js +30 -10
  16. package/common/dimension.instance.json +3 -2
  17. package/common/edible.instance.json +1292 -517
  18. package/common/emotions.instance.json +7 -14
  19. package/common/emotions.js +4 -5
  20. package/common/events.js +3 -3
  21. package/common/events.test.json +107 -36
  22. package/common/fastfood.instance.json +4649 -13349
  23. package/common/fastfood.js +2 -1
  24. package/common/formulas.instance.json +1 -0
  25. package/common/formulas.js +3 -1
  26. package/common/formulas.test.json +643 -711
  27. package/common/gdefaults.js +14 -0
  28. package/common/helpers/concept.js +7 -2
  29. package/common/helpers/dialogues.js +4 -1
  30. package/common/helpers/menus.js +154 -0
  31. package/common/helpers/properties.js +2 -27
  32. package/common/helpers.js +57 -0
  33. package/common/hierarchy.js +4 -3
  34. package/common/kirk.instance.json +156 -10
  35. package/common/length.instance.json +17 -2
  36. package/common/math.instance.json +1 -0
  37. package/common/menus.instance.json +10097 -0
  38. package/common/menus.js +261 -0
  39. package/common/menus.test.json +27226 -0
  40. package/common/meta.js +3 -3
  41. package/common/negation.js +5 -0
  42. package/common/ordering.instance.json +4 -2
  43. package/common/people.instance.json +96 -8
  44. package/common/pipboy.instance.json +61 -135
  45. package/common/pipboy.js +0 -7
  46. package/common/pokemon.instance.json +15 -2
  47. package/common/pressure.instance.json +6 -2
  48. package/common/properties.instance.json +1 -0
  49. package/common/properties.js +20 -5
  50. package/common/punctuation.js +3 -0
  51. package/common/reports.instance.json +6 -3
  52. package/common/reports.js +12 -3
  53. package/common/sdefaults.js +28 -3
  54. package/common/spock.instance.json +156 -10
  55. package/common/stm.js +2 -1
  56. package/common/temperature.instance.json +150 -2
  57. package/common/tester.js +24 -2
  58. package/common/ui.instance.json +446 -0
  59. package/common/ui.js +9 -4
  60. package/common/ui.test.json +6794 -0
  61. package/common/weight.instance.json +14 -0
  62. package/common/wp.instance.json +6497 -9
  63. package/common/wp.js +10 -0
  64. package/main.js +4 -0
  65. package/package.json +12 -3
@@ -4,6 +4,7 @@ const { knowledgeModule, where } = require('./runtime').theprogrammablemind
4
4
  const tokenize = require('./tokenize.js')
5
5
  const gdefaults_tests = require('./gdefaults.test.json')
6
6
  const { getValue, isMany } = require('./helpers.js')
7
+ const helpers = require('./helpers')
7
8
 
8
9
  const config = {
9
10
  name: 'gdefaults',
@@ -29,6 +30,13 @@ const config = {
29
30
  apply: ({context, gp}) => gp(context.response),
30
31
  },
31
32
 
33
+ {
34
+ where: where(),
35
+ match: ({context}) => context.paraphrase && context.interpolate,
36
+ apply: async ({interpolate, context}) => {
37
+ return interpolate(context.interpolate, context)
38
+ }
39
+ },
32
40
  {
33
41
  where: where(),
34
42
  match: ({context}) => context.generate,
@@ -232,6 +240,12 @@ const initializer = ({config}) => {
232
240
  verbatim: (text) => {
233
241
  args.insert({ marker: 'verbatim', verbatim: text, isResponse: true })
234
242
  },
243
+ interpolate: async (interpolate, context) => {
244
+ const evaluator = async (key) => {
245
+ return args.gp(context[key])
246
+ }
247
+ return await helpers.processTemplateString(interpolate, evaluator)
248
+ }
235
249
  }
236
250
  })
237
251
  }
@@ -50,7 +50,11 @@ class API {
50
50
  const objectSingular = pluralize.singular(objectWord)
51
51
  const objectPlural = pluralize.plural(objectWord)
52
52
  // config.addOperator({ pattern: `(${modifierIds.map((modifierId) => `(${modifierId}/*)`).join(' ')} [${modifiersObjectId}] (${objectId}/0))`, allowDups: true })
53
- config.addOperator({ pattern: `(${modifierIds.map((modifierId) => `(${modifierId}/*)`).join(' ')} [${modifiersObjectId}] (${objectId}/*))`, allowDups: true })
53
+ if (false) {
54
+ config.addOperator({ pattern: `(${modifierIds.map((modifierId) => `(${modifierId}/*)`).join(' ')} [${modifiersObjectId}] (${objectId}/*))`, allowDups: true })
55
+ } else {
56
+ config.addOperator({ pattern: `(${modifierIds.map((modifierId) => `(@==${modifierId})`).join(' ')} [${modifiersObjectId}] (@==${objectId}))`, allowDups: true })
57
+ }
54
58
  // config.addOperator({ pattern: `(<${modifierId}|> ([${objectId}|]))`, allowDups: true })
55
59
  // config.addOperator({ pattern: `([${modifierObjectId}|])`, allowDups: true })
56
60
 
@@ -91,7 +95,7 @@ class API {
91
95
  })
92
96
  // modifierds.forEach((modifierId) => config.addWord(modifierId, { id: modifierId, initial: `{ value: '${modifierId}' }`}))
93
97
 
94
- modifierIds.forEach((modifierId) => config.addBridge({ id: modifierId, level: 0, bridge: `{ ...next(operator), value: '${modifierId}' }`, allowDups: true }))
98
+ modifierIds.forEach((modifierId) => config.addBridge({ id: modifierId, level: 0, bridge: `{ ...next(operator), value: or(operator.value, '${modifierId}') }`, allowDups: true }))
95
99
  config.addBridge({ id: objectId, level: 0, bridge: `{ ...next(operator), value: '${objectId}' }`, allowDups: true })
96
100
  // config.addBridge({ id: modifierObjectId, level: 0, bridge: `{ ...next(operator), value: '${modifierObjectId}' }`, allowDups: true })
97
101
  const modifierProperties = modifierIds.map((modifierId, index) => `'modifier_${modifierId}': before[${index}]`).join(', ')
@@ -102,6 +106,7 @@ class API {
102
106
  level: 0,
103
107
  convolution: true,
104
108
  isA: [{ parent: 'adjective', instance: true }],
109
+ associator_return_type: [modifiersObjectId, 0],
105
110
  // isA: ['adjective'],
106
111
  before: ['verb'],
107
112
  bridge: `{ ...after[0], ${modifierProperties}, atomic: true, dead: true, marker: next(operator('${modifiersObjectId}')), value: '${modifiersObjectId}', modifiers: append([${modifierList}], after[0].modifiers)}`,
@@ -83,6 +83,9 @@ class API {
83
83
  return context.value
84
84
  }
85
85
  */
86
+ if (typeof context == 'string') {
87
+ context = { word: context, value: context }
88
+ }
86
89
  const { word, value, number } = context;
87
90
  if (!value) {
88
91
  return
@@ -102,7 +105,7 @@ class API {
102
105
  }
103
106
  // config.addOperator({ pattern: `(["${fixUps(concept)}"])`, allowDups: true })
104
107
  config.addOperator({ pattern: `(["${concept}"])`, allowDups: true })
105
- config.addBridge({ id: concept, level: 0, bridge: `{ ...next(operator), value: '${source_value || concept}' }` , allowDups: true })
108
+ config.addBridge({ id: concept, level: 0, bridge: `{ ...next(operator), value: or(operator.value, '${source_value || concept}') }` , allowDups: true })
106
109
  const addConcept = (word, number) => {
107
110
  config.addWord(word, { id: concept, initial: `{ value: "${source_value || concept}", number: "${number}" }` } )
108
111
  const baseTypes = [
@@ -0,0 +1,154 @@
1
+ const calculateLefts = (defs) => {
2
+ const lefts = {}
3
+ calculateLeftsHelper(defs, lefts)
4
+ return lefts
5
+ }
6
+
7
+ const calculateLeftsHelper = (defs, lefts) => {
8
+ if (Array.isArray(defs)) {
9
+ let previous
10
+ for (const def of defs) {
11
+ if (previous) {
12
+ lefts[def.key] = previous.key
13
+ previous = def
14
+ } else {
15
+ previous = def
16
+ }
17
+ }
18
+ }
19
+ return lefts
20
+ }
21
+
22
+ const calculateRights = (defs) => {
23
+ const rights = {}
24
+ calculateRightsHelper(defs, rights)
25
+ return rights
26
+ }
27
+
28
+ const calculateRightsHelper = (defs, rights) => {
29
+ if (Array.isArray(defs)) {
30
+ let previous
31
+ for (const def of defs) {
32
+ if (previous) {
33
+ rights[previous.key] = def.key
34
+ previous = def
35
+ } else {
36
+ previous = def
37
+ }
38
+ }
39
+ }
40
+ return rights
41
+ }
42
+
43
+ const calculateDowns = (defs) => {
44
+ const downs = {}
45
+ calculateDownsHelper(defs, downs)
46
+ return downs
47
+ }
48
+
49
+ const calculateDownsHelper = (defs, downs) => {
50
+ if (Array.isArray(defs)) {
51
+ for (const def of defs) {
52
+ calculateDownsHelper(def, downs)
53
+ }
54
+ } else if (defs.children) {
55
+ if (defs.children.length > 0) {
56
+ downs[defs.key] = defs.children[0].key
57
+ }
58
+
59
+ let previous
60
+ for (const child of defs.children) {
61
+ if (child.divider) {
62
+ continue
63
+ }
64
+ if (previous) {
65
+ downs[previous.key] = child.key
66
+ previous = child
67
+ } else {
68
+ previous = child
69
+ }
70
+ }
71
+ }
72
+ return downs
73
+ }
74
+
75
+ const calculateUps = (defs) => {
76
+ const ups = {}
77
+ calculateUpsHelper(defs, ups)
78
+ return ups
79
+ }
80
+
81
+ const calculateUpsHelper = (defs, ups) => {
82
+ if (Array.isArray(defs)) {
83
+ for (const def of defs) {
84
+ calculateUpsHelper(def, ups)
85
+ }
86
+ } else if (defs.children) {
87
+ let previous
88
+ for (const child of defs.children) {
89
+ if (child.divider) {
90
+ continue
91
+ }
92
+ if (previous) {
93
+ ups[child.key] = previous.key
94
+ previous = child
95
+ } else {
96
+ previous = child
97
+ }
98
+ }
99
+ }
100
+ return ups
101
+ }
102
+
103
+ const calculateParents = (defs) => {
104
+ const parents = {}
105
+ calculateParentsHelper(defs, parents)
106
+ return parents
107
+ }
108
+
109
+ const calculateParentsHelper = (defs, parents) => {
110
+ if (Array.isArray(defs)) {
111
+ for (const def of defs) {
112
+ parents[def.key] = def.key
113
+ calculateParentsHelper(def, parents)
114
+ }
115
+ } else if (defs.children) {
116
+ for (const child of defs.children) {
117
+ if (child.divider) {
118
+ continue
119
+ }
120
+ parents[child.key] = defs.key
121
+ }
122
+ }
123
+ return parents
124
+ }
125
+
126
+ const calculatePaths = (defs) => {
127
+ const paths = {}
128
+ calculatePathsHelper(defs, paths)
129
+ return paths
130
+ }
131
+
132
+ const calculatePathsHelper = (defs, paths) => {
133
+ if (Array.isArray(defs)) {
134
+ for (const def of defs) {
135
+ calculatePathsHelper(def, paths)
136
+ }
137
+ } else {
138
+ paths[defs.key] = [defs.key]
139
+ for (const child of (defs.children || [])) {
140
+ paths[child.key] = [defs.key, child.key]
141
+ }
142
+ }
143
+ return paths
144
+ }
145
+
146
+
147
+ module.exports = {
148
+ calculateRights,
149
+ calculateLefts,
150
+ calculateDowns,
151
+ calculateUps,
152
+ calculateParents,
153
+ calculatePaths,
154
+ }
@@ -548,8 +548,7 @@ class API {
548
548
 
549
549
  makeObject(args) {
550
550
  const types = [ 'hierarchyAble', 'object', 'property' ];
551
- const { config } = args;
552
- return this._km("dialogues").api.makeObject({ ...args, types });
551
+ return args.km("dialogues").api.makeObject({ ...args, types: (args.types || []).concat(types) });
553
552
  }
554
553
 
555
554
  relation_add (relations) {
@@ -704,6 +703,7 @@ class API {
704
703
  }
705
704
 
706
705
  setProperty(object, property, value, has, skipHandler) {
706
+ // debugger
707
707
  if (!skipHandler) {
708
708
  const handler = this.propertiesFH.getHandler([object, property])
709
709
  if (handler) {
@@ -794,31 +794,6 @@ class API {
794
794
 
795
795
  learnWords(config, context) {
796
796
  }
797
- /*
798
- ensureDefault(map, key, default) {
799
- if (!this._objects[map][key]) {
800
- this._objects[map][key] = default
801
- }
802
- return this._objects[map][key]
803
- }
804
-
805
- pushListNoDups(list, value) {
806
- if (list.includes(value)) {
807
- return
808
- }
809
- list.push(value)
810
- }
811
-
812
- ensureConcept(concept) {
813
- ensureDefault(this.properties, concept, {})
814
- ensureDefault(this.concepts, concept, [])
815
- }
816
-
817
- canDo(object, ability) {
818
- this.ensureConcept(object)
819
- this.pushListNoDups(this.ensureList('abilities', object), ability)
820
- }
821
- */
822
797
  isA(child, ancestor) {
823
798
  // return this._objects.parents[child].includes(parent);
824
799
  const todo = [child];
package/common/helpers.js CHANGED
@@ -1,5 +1,19 @@
1
1
  const pluralize = require('pluralize')
2
2
 
3
+ const unshiftL = (list, element, max) => {
4
+ if (list.length >= max) {
5
+ list.pop()
6
+ }
7
+ list.unshift(element)
8
+ }
9
+
10
+ const pushL = (list, element, max) => {
11
+ if (list.length >= max) {
12
+ list.shift()
13
+ }
14
+ list.push(element)
15
+ }
16
+
3
17
  // X pm today or tomorrow
4
18
  const millisecondsUntilHourOfDay = (newDate, hour) => {
5
19
  const now = newDate()
@@ -206,7 +220,50 @@ const getValue = (propertyPath, object) => {
206
220
  return value
207
221
  }
208
222
 
223
+ const processTemplateString = async (template, evaluate) => {
224
+ async function resolveWithCallback(strings, ...keys) {
225
+ // const resolvedValues = await Promise.all(keys.map(key => lookupVariable(key)));
226
+ const resolvedValues = await Promise.all(keys.map(async (key) => {
227
+ return await evaluate(key)
228
+ }))
229
+
230
+ let result = strings[0];
231
+ for (let i = 0; i < resolvedValues.length; i++) {
232
+ result += resolvedValues[i] + strings[(i + 1)*2];
233
+ }
234
+ return result;
235
+ }
236
+
237
+ async function processTemplateString(template) {
238
+ // Split the template into strings and keys
239
+ const parts = template.split(/(\${[^}]+})/g);
240
+ const strings = [];
241
+ const keys = [];
242
+ for (const part of parts) {
243
+ if (part.startsWith("${") && part.endsWith("}")) {
244
+ keys.push(part.slice(2, -1)); // Extract key (e.g., "name" from "${name}")
245
+ strings.push(""); // Placeholder for interpolation
246
+ } else {
247
+ strings.push(part);
248
+ }
249
+ }
250
+
251
+ // Ensure the strings array has one more element than keys
252
+ if (strings.length === keys.length) {
253
+ strings.push("");
254
+ }
255
+
256
+ // Pass to the tagged template function
257
+ return resolveWithCallback(strings, ...keys);
258
+ }
259
+
260
+ return await processTemplateString(template)
261
+ }
262
+
209
263
  module.exports = {
264
+ processTemplateString,
265
+ unshiftL,
266
+ pushL,
210
267
  getValue,
211
268
  defaultContextCheck,
212
269
  defaultContextCheckProperties,
@@ -246,14 +246,15 @@ const config = {
246
246
 
247
247
  return listable(context, 'hierarchyAble') && context.same && context.same.concept && !context.query
248
248
  },
249
- apply: ({callId, config, objects, km, context, asList, listable}) => {
249
+ apply: (args) => {
250
+ const {callId, config, objects, km, context, asList, listable} = args
250
251
  const api = km('properties').api
251
252
  const oneConcepts = asList(context);
252
253
  const twoConcepts = asList(context.same);
253
254
  for (const oneConcept of oneConcepts.value) {
254
255
  for (const twoConcept of twoConcepts.value) {
255
- oneConceptId = api.makeObject({config, context: oneConcept})
256
- twoConceptId = api.makeObject({config, context: twoConcept})
256
+ oneConceptId = api.makeObject({...args, context: oneConcept})
257
+ twoConceptId = api.makeObject({...args, context: twoConcept})
257
258
  api.rememberIsA(oneConceptId, twoConceptId)
258
259
  context.sameWasProcessed = true
259
260
  }
@@ -400,6 +400,11 @@
400
400
  "queryable",
401
401
  false
402
402
  ],
403
+ [
404
+ "doctor",
405
+ "rank",
406
+ false
407
+ ],
403
408
  [
404
409
  "doctor",
405
410
  "theAble",
@@ -495,11 +500,6 @@
495
500
  "theAble",
496
501
  false
497
502
  ],
498
- [
499
- "emotion",
500
- "unknown",
501
- false
502
- ],
503
503
  [
504
504
  "evaluate",
505
505
  "verb",
@@ -510,6 +510,41 @@
510
510
  "article",
511
511
  false
512
512
  ],
513
+ [
514
+ "eye",
515
+ "hierarchyAble",
516
+ false
517
+ ],
518
+ [
519
+ "eye",
520
+ "isEdee",
521
+ false
522
+ ],
523
+ [
524
+ "eye",
525
+ "isEder",
526
+ false
527
+ ],
528
+ [
529
+ "eye",
530
+ "object",
531
+ false
532
+ ],
533
+ [
534
+ "eye",
535
+ "property",
536
+ false
537
+ ],
538
+ [
539
+ "eye",
540
+ "queryable",
541
+ false
542
+ ],
543
+ [
544
+ "eye",
545
+ "theAble",
546
+ false
547
+ ],
513
548
  [
514
549
  "feel",
515
550
  "canBeDoQuestion",
@@ -790,6 +825,11 @@
790
825
  "isEder",
791
826
  false
792
827
  ],
828
+ [
829
+ "mccoy",
830
+ "name",
831
+ false
832
+ ],
793
833
  [
794
834
  "mccoy",
795
835
  "object",
@@ -865,6 +905,41 @@
865
905
  "verb",
866
906
  false
867
907
  ],
908
+ [
909
+ "name",
910
+ "hierarchyAble",
911
+ false
912
+ ],
913
+ [
914
+ "name",
915
+ "isEdee",
916
+ false
917
+ ],
918
+ [
919
+ "name",
920
+ "isEder",
921
+ false
922
+ ],
923
+ [
924
+ "name",
925
+ "object",
926
+ false
927
+ ],
928
+ [
929
+ "name",
930
+ "property",
931
+ false
932
+ ],
933
+ [
934
+ "name",
935
+ "queryable",
936
+ false
937
+ ],
938
+ [
939
+ "name",
940
+ "theAble",
941
+ false
942
+ ],
868
943
  [
869
944
  "negatable",
870
945
  "queryable",
@@ -1185,6 +1260,41 @@
1185
1260
  "punctuation",
1186
1261
  false
1187
1262
  ],
1263
+ [
1264
+ "rank",
1265
+ "hierarchyAble",
1266
+ false
1267
+ ],
1268
+ [
1269
+ "rank",
1270
+ "isEdee",
1271
+ false
1272
+ ],
1273
+ [
1274
+ "rank",
1275
+ "isEder",
1276
+ false
1277
+ ],
1278
+ [
1279
+ "rank",
1280
+ "object",
1281
+ false
1282
+ ],
1283
+ [
1284
+ "rank",
1285
+ "property",
1286
+ false
1287
+ ],
1288
+ [
1289
+ "rank",
1290
+ "queryable",
1291
+ false
1292
+ ],
1293
+ [
1294
+ "rank",
1295
+ "theAble",
1296
+ false
1297
+ ],
1188
1298
  [
1189
1299
  "readonly",
1190
1300
  "queryable",
@@ -1210,11 +1320,6 @@
1210
1320
  "queryable",
1211
1321
  false
1212
1322
  ],
1213
- [
1214
- "sentientBeing",
1215
- "unknown",
1216
- false
1217
- ],
1218
1323
  [
1219
1324
  "spock",
1220
1325
  "crew_member",
@@ -1240,6 +1345,11 @@
1240
1345
  "isEder",
1241
1346
  false
1242
1347
  ],
1348
+ [
1349
+ "spock",
1350
+ "name",
1351
+ false
1352
+ ],
1243
1353
  [
1244
1354
  "spock",
1245
1355
  "object",
@@ -1260,6 +1370,41 @@
1260
1370
  "theAble",
1261
1371
  false
1262
1372
  ],
1373
+ [
1374
+ "status",
1375
+ "hierarchyAble",
1376
+ false
1377
+ ],
1378
+ [
1379
+ "status",
1380
+ "isEdee",
1381
+ false
1382
+ ],
1383
+ [
1384
+ "status",
1385
+ "isEder",
1386
+ false
1387
+ ],
1388
+ [
1389
+ "status",
1390
+ "object",
1391
+ false
1392
+ ],
1393
+ [
1394
+ "status",
1395
+ "property",
1396
+ false
1397
+ ],
1398
+ [
1399
+ "status",
1400
+ "queryable",
1401
+ false
1402
+ ],
1403
+ [
1404
+ "status",
1405
+ "theAble",
1406
+ false
1407
+ ],
1263
1408
  [
1264
1409
  "stm_before",
1265
1410
  "adjective",
@@ -1567,6 +1712,7 @@
1567
1712
  "level": 2,
1568
1713
  "context_index": 1,
1569
1714
  "topLevel": true,
1715
+ "context_id": 2,
1570
1716
  "touchedBy": [
1571
1717
  "kirk#call2"
1572
1718
  ]