tpmkms 8.0.0-beta.6 → 8.0.0-beta.60

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 (102) hide show
  1. package/common/animals.instance.json +2871 -1379
  2. package/common/animals.js +17 -20
  3. package/common/articles.js +103 -0
  4. package/common/articles.test.json +310 -0
  5. package/common/avatar.js +5 -9
  6. package/common/characters.js +22 -28
  7. package/common/colors.instance.json +7170 -3657
  8. package/common/colors.js +4 -8
  9. package/common/colors.test.json +345 -780
  10. package/common/comparable.instance.json +1738 -0
  11. package/common/comparable.js +46 -27
  12. package/common/comparable.test.json +438 -2
  13. package/common/concept.js +120 -118
  14. package/common/countable.js +19 -13
  15. package/common/countable.test.json +1050 -0
  16. package/common/crew.instance.json +13066 -6598
  17. package/common/crew.js +36 -41
  18. package/common/crew.test.json +714 -452
  19. package/common/currency.js +27 -45
  20. package/common/dialogues.js +161 -285
  21. package/common/dimension.instance.json +474 -253
  22. package/common/dimension.js +16 -22
  23. package/common/dimension.test.json +446 -1640
  24. package/common/edible.instance.json +20059 -10007
  25. package/common/edible.js +3 -8
  26. package/common/emotions.instance.json +147 -129
  27. package/common/emotions.js +35 -38
  28. package/common/evaluate.instance.json +2 -0
  29. package/common/evaluate.js +49 -0
  30. package/common/evaluate.test.json +574 -0
  31. package/common/events.js +10 -14
  32. package/common/fastfood.instance.json +221967 -111264
  33. package/common/fastfood.js +74 -84
  34. package/common/fastfood.test.json +268 -90
  35. package/common/formulas.instance.json +455 -249
  36. package/common/formulas.js +19 -26
  37. package/common/gdefaults.js +24 -26
  38. package/common/help.js +7 -12
  39. package/common/help.test.json +22 -22
  40. package/common/helpers/concept.js +10 -7
  41. package/common/helpers/dialogues.js +2 -3
  42. package/common/helpers/properties.js +54 -62
  43. package/common/helpers.js +6 -5
  44. package/common/hierarchy.js +16 -24
  45. package/common/javascript.js +11 -18
  46. package/common/kirk.instance.json +584 -290
  47. package/common/kirk.js +5 -8
  48. package/common/length.instance.json +8834 -4757
  49. package/common/length.js +4 -8
  50. package/common/listener.js +48 -0
  51. package/common/listener.test.json +104 -0
  52. package/common/math.instance.json +425 -1187
  53. package/common/math.js +16 -20
  54. package/common/meta.js +23 -47
  55. package/common/nameable.instance.json +2 -0
  56. package/common/nameable.js +135 -0
  57. package/common/nameable.test.json +2121 -0
  58. package/common/negation.instance.json +2 -0
  59. package/common/negation.js +38 -0
  60. package/common/negation.test.json +308 -0
  61. package/common/numbers.js +27 -31
  62. package/common/ordering.instance.json +366 -246
  63. package/common/ordering.js +80 -86
  64. package/common/people.instance.json +2134 -1022
  65. package/common/people.js +8 -13
  66. package/common/percentages.instance.json +2 -0
  67. package/common/percentages.js +53 -0
  68. package/common/percentages.test.json +751 -0
  69. package/common/pipboy.instance.json +11777 -6289
  70. package/common/pipboy.js +48 -59
  71. package/common/pokemon.instance.json +4226 -2081
  72. package/common/pokemon.js +7 -20
  73. package/common/pos.js +12 -13
  74. package/common/pressure.instance.json +2208 -1175
  75. package/common/pressure.js +4 -8
  76. package/common/properties.instance.json +131 -61
  77. package/common/properties.js +57 -134
  78. package/common/punctuation.js +6 -6
  79. package/common/reports.instance.json +1018 -530
  80. package/common/reports.js +73 -97
  81. package/common/scorekeeper.js +18 -30
  82. package/common/sdefaults.js +16 -7
  83. package/common/sizeable.js +6 -10
  84. package/common/spock.instance.json +584 -290
  85. package/common/spock.js +5 -8
  86. package/common/stgame.js +19 -19
  87. package/common/stm.js +164 -27
  88. package/common/stm.test.json +1734 -1
  89. package/common/tell.js +14 -18
  90. package/common/temperature.instance.json +2271 -1222
  91. package/common/temperature.js +4 -8
  92. package/common/tester.js +3 -3
  93. package/common/testing.js +8 -12
  94. package/common/time.js +20 -25
  95. package/common/tokenize.js +4 -5
  96. package/common/ui.instance.json +459 -240
  97. package/common/ui.js +16 -22
  98. package/common/weight.instance.json +7646 -4026
  99. package/common/weight.js +4 -8
  100. package/common/yesno.js +5 -5
  101. package/main.js +59 -46
  102. package/package.json +28 -5
package/common/reports.js CHANGED
@@ -1,4 +1,4 @@
1
- const { Config, knowledgeModule, where } = require('./runtime').theprogrammablemind
1
+ const { knowledgeModule, where } = require('./runtime').theprogrammablemind
2
2
  const { defaultContextCheck } = require('./helpers')
3
3
  const currencyKM = require('./currency.js')
4
4
  const events = require('./events.js')
@@ -38,7 +38,7 @@ const compareValue = (property, v1, v2) => {
38
38
  const newReport = ({km, objects}) => {
39
39
  objects.tempReportId += 1
40
40
  const reportId = `tempReport${objects.tempReportId}`
41
- km('stm').api.mentioned({ marker: "report", text: reportId, types: [ "report" ], value: reportId, word: reportId })
41
+ km('stm').api.mentioned({ context: { marker: "report", text: reportId, types: [ "report" ], value: reportId, word: reportId } })
42
42
  // name to listing
43
43
  objects.listings[reportId] = {
44
44
  columns: ['name', 'supplier'],
@@ -100,7 +100,7 @@ const apiTemplate = (marker, testData) => {
100
100
  },
101
101
  productGenerator: {
102
102
  match: ({context}) => context.marker == marker && context.isInstance,
103
- apply: ({g, context}) => `${context.name}`,
103
+ apply: ({context}) => `${context.name}`,
104
104
  }
105
105
  }
106
106
  }
@@ -110,7 +110,7 @@ const apiTemplate = (marker, testData) => {
110
110
  const api1 = apiTemplate('models', testData2)
111
111
  const api2 = apiTemplate('clothes', testData)
112
112
 
113
- let configStruct = {
113
+ let config = {
114
114
  name: 'reports',
115
115
  operators: [
116
116
  //"(([type]) [([(<less> ([than]))] ([amount]))])",
@@ -123,8 +123,8 @@ let configStruct = {
123
123
  "([answer] ([with] ([listingType|])))",
124
124
  "([show] (<the> ([property|property,properties])))",
125
125
  "([call] ([report|]) (rest))",
126
- "(([property]) <ascending>)",
127
- "(([property]) <descending>)",
126
+ // "(([property]) <ascending>)",
127
+ // "(([property]) <descending>)",
128
128
  "([describe] ([report]))",
129
129
  "([price])",
130
130
  "([quantity])",
@@ -190,9 +190,9 @@ let configStruct = {
190
190
  bridge: "{ ...next(operator), on: { marker: 'report', pullFromContext: true }, from: after[0], to: after[1] }",
191
191
  directionBridge: "{ ...next(operator), on: { marker: 'report', pullFromContext: true }, directionBridge: true, from: after[0], to: after[1] }",
192
192
 
193
- generatorp: ({context, gp}) => `move ${gp(context.from)} ${gp(context.to)}`,
194
- semantic: ({context, e, objects, kms, insert}) => {
195
- const report = e(context.on)
193
+ generatorp: async ({context, gp}) => `move ${await gp(context.from)} ${await gp(context.to)}`,
194
+ semantic: async ({context, e, objects, kms, insert}) => {
195
+ const report = await e(context.on)
196
196
  const id = report.value.value
197
197
  const listing = objects.listings[id]
198
198
 
@@ -218,9 +218,9 @@ let configStruct = {
218
218
  where: where(),
219
219
  id: "remove", level: 0,
220
220
  bridge: "{ ...next(operator), on: { marker: 'report', pullFromContext: true }, removee: after[0] }",
221
- generatorp: ({context, gp}) => `remove ${gp(context.removee)}`,
222
- semantic: ({context, e, kms, insert, objects}) => {
223
- const report = e(context.on)
221
+ generatorp: async ({context, gp}) => `remove ${await gp(context.removee)}`,
222
+ semantic: async ({context, e, kms, insert, objects}) => {
223
+ const report = await e(context.on)
224
224
  const id = report.value.value
225
225
  const listing = objects.listings[id]
226
226
  const column = context.removee.index.value
@@ -232,7 +232,7 @@ let configStruct = {
232
232
  where: where(),
233
233
  id: "column", level: 0,
234
234
  bridge: "{ ...next(operator), index: after[0] }",
235
- generatorp: ({context, gp}) => `column ${gp(context.index)}`,
235
+ generatorp: async ({context, gp}) => `column ${await gp(context.index)}`,
236
236
  },
237
237
  { id: "ordering", level: 0, bridge: "{ ...next(operator) }" },
238
238
  { id: "direction", level: 0, bridge: "{ ...next(operator) }" },
@@ -248,10 +248,10 @@ let configStruct = {
248
248
  {
249
249
  where: where(),
250
250
  match: ({context}) => context.marker == 'report' && context.describe,
251
- apply: ({context, apis, gp, gs, objects}) => {
251
+ apply: async ({context, apis, gs, objects}) => {
252
252
  const listings = objects.listings[context.value]
253
253
  // {"type":"tables","columns":["name"],"ordering":[]}
254
- return `for ${listings.api}, showing the ${wordNumber('property', listings.columns.length > 1)} ${gs(listings.columns, ' ', ' and ')} as ${listings.type}`
254
+ return `for ${listings.api}, showing the ${wordNumber('property', listings.columns.length > 1)} ${await gs(listings.columns, ' ', ' and ')} as ${listings.type}`
255
255
  }
256
256
  },
257
257
  {
@@ -262,8 +262,8 @@ let configStruct = {
262
262
  ],
263
263
  },
264
264
 
265
- { id: "ascending", level: 0, bridge: "{ ...before[0], ordering: 'ascending' }" },
266
- { id: "descending", level: 0, bridge: "{ ...before[0], ordering: 'descending', modifiers: append(['ordering'], before[0].modifiers) }" },
265
+ // { id: "ascending", level: 0, bridge: "{ ...before[0], ordering: 'ascending' }" },
266
+ // { id: "descending", level: 0, bridge: "{ ...before[0], ordering: 'descending', modifiers: append(['ordering'], before[0].modifiers) }" },
267
267
 
268
268
  { id: "product", level: 0, bridge: "{ ...next(operator) }" },
269
269
  { id: "listAction", level: 0, bridge: "{ ...next(operator), what: after[0]}" },
@@ -295,10 +295,10 @@ let configStruct = {
295
295
  where: where(),
296
296
  id: "describe",
297
297
  level: 0,
298
- isA: ['verby'],
298
+ isA: ['verb'],
299
299
  bridge: "{ ...next(operator), report: after[0] }",
300
- "generatorp": ({g, context}) => `describe ${g(context.report)}`,
301
- "generatorr": ({gp, context, apis, objects, config}) => {
300
+ "generatorp": async ({g, context}) => `describe ${await g(context.report)}`,
301
+ "generatorr": async ({gp, context, apis, objects, config}) => {
302
302
  const reports = propertyToArray(context.report)
303
303
  let response = ''
304
304
  for (let report of reports) {
@@ -308,11 +308,11 @@ let configStruct = {
308
308
  continue
309
309
  }
310
310
  const description = {describe: true, word: reportId, types:["report"], value: reportId, text: reportId, marker: "report"}
311
- response += `${reportId}: ${gp(description)}\n`
311
+ response += `${reportId}: ${await gp(description)}\n`
312
312
  }
313
313
  } else {
314
314
  // response += `${gp(report)}: ${describe(report.value)}\n`
315
- response += `${gp(report)}: ${gp({ ...report, describe: true })}\n`
315
+ response += `${await gp(report)}: ${await gp({ ...report, describe: true })}\n`
316
316
  }
317
317
  }
318
318
  return response
@@ -327,34 +327,37 @@ let configStruct = {
327
327
  id: "call",
328
328
  level: 0,
329
329
  bridge: "{ ...next(operator), namee: after[0], name: after[1] }",
330
- generatorp: ({g, context}) => `call ${g(context.namee)} ${g(context.name)}`,
331
- semantic: ({g, context, objects, e, config, km}) => {
332
- const namee = e(context.namee).evalue
330
+ generatorp: async ({g, context}) => `call ${await g(context.namee)} ${await g(context.name)}`,
331
+ semantic: async ({context, objects, e, config, km}) => {
332
+ const namee = (await e(context.namee)).evalue
333
333
  const id = namee.value
334
334
  const listing = objects.listings[id]
335
335
  const name = context.name.text
336
336
  objects.listings[name] = {...listing}
337
337
  config.addWord(`${name}`, { id: 'report', initial: `{ value: "${name}" }` })
338
338
  km('stm').api.mentioned({
339
+ context: {
339
340
  marker: "report",
340
341
  text: name,
341
342
  types: [ "report" ],
342
343
  value: id,
343
344
  word: name
344
- })
345
+ }
346
+ })
345
347
  }
346
348
  },
347
349
  ],
348
350
  hierarchy: [
351
+ ['property', 'comparable'],
349
352
  ['ascending', 'ordering'],
350
353
  ['descending', 'ordering'],
351
354
  ['property', 'theAble'],
352
355
  ['column', 'toAble'],
353
356
  ['report', 'it'],
354
357
  ['report', 'this'],
355
- ['describe', 'verby'],
356
- ['call', 'verby'],
357
- ['show', 'verby'],
358
+ ['describe', 'verb'],
359
+ ['call', 'verb'],
360
+ ['show', 'verb'],
358
361
  ['report', 'changeable'],
359
362
  ['show', 'action'],
360
363
  ['move', 'reportAction'],
@@ -375,49 +378,28 @@ let configStruct = {
375
378
  "literals": {
376
379
  "tables": [{"id": "listingType", "initial": "{ value: 'tables' }" }],
377
380
  "sentences": [{"id": "listingType", "initial": "{ value: 'sentences' }" }],
378
- //"product1": [{"id": "reportObject", "initial": "{ value: 'api1' }" }],
379
- //"api2": [{"id": "reportObject", "initial": "{ value: 'api2' }" }],
380
- //" ([0-9]+)": [{"id": "amount", "initial": "{ value: int(group[0]) }" }],
381
381
  }
382
382
  },
383
383
 
384
384
  priorities: [
385
385
  { "context": [['ordering', 0], ['articlePOS', 0], ], "choose": [0] },
386
- /*
387
- [['the', 0], ['ordering', 0]],
388
- [['listAction', 0], ['cost', 1]],
389
- [['answer', 0], ['listAction', 0], ['the', 0]],
390
- [['answer', 0], ['listAction', 0], ['the', 0], ['with', 0]],
391
- */
392
386
  ],
393
387
  generators: [
394
388
  {
395
389
  notes: 'paraphrase show',
396
390
  where: where(),
397
391
  match: ({context, objects}) => context.marker == 'show' && context.paraphrase,
398
- apply: ({gs, gsp, gp, e, apis, objects, context}) => {
392
+ apply: async ({gs, gp, e, apis, objects, context}) => {
399
393
  if (context.report) {
400
- return `show ${gp(context.report)}`
394
+ return `show ${await gp(context.report)}`
401
395
  } else {
402
- const report = e(context.on)
396
+ const report = await e(context.on)
403
397
  const id = report.value.value
404
398
  const listing = objects.listings[id]
405
- return `the properties being shown are ${gs(listing.columns, ', ', ' and ')}`
399
+ return `the properties being shown are ${await gs(listing.columns, ', ', ' and ')}`
406
400
  }
407
401
  }
408
402
  },
409
- /*
410
- {
411
- where: where(),
412
- match: ({context, isA}) => isA(context.marker, 'reportAction') && context.on && context.isResponse,
413
- apply: ({context, g}) => `${g({...context, on: undefined})} on ${g(context.on)}`
414
- },
415
- {
416
- where: where(),
417
- match: ({context, isA}) => isA(context.marker, 'reportAction') && context.on && context.paraphrase,
418
- apply: ({context, g}) => `${g({...context, on: undefined})} on ${g(context.on)}`
419
- },
420
- */
421
403
  {
422
404
  where: where(),
423
405
  match: ({context}) => context.marker == 'product' && !context.isInstance,
@@ -426,12 +408,12 @@ let configStruct = {
426
408
  {
427
409
  where: where(),
428
410
  match: ({context}) => context.marker == 'listAction' && context.paraphrase,
429
- apply: ({g, context}) => `list ${g(context.what)}`
411
+ apply: async ({g, context}) => `list ${await g(context.what)}`
430
412
  },
431
413
  {
432
414
  notes: 'show the results as a sentence',
433
415
  where: where(),
434
- match: ({context, objects, apis}) => {
416
+ match: ({context, objects}) => {
435
417
  if (!(context.marker == 'listAction' && context.isResponse)) {
436
418
  return false
437
419
  }
@@ -439,15 +421,15 @@ let configStruct = {
439
421
  return true
440
422
  }
441
423
  },
442
- apply: ({g, gs, context, objects}) => {
424
+ apply: async ({g, gs, context, objects}) => {
443
425
  const listing = objects.listings[context.id]
444
- return `the ${g(listing.api)} are ${gs(context.listing, ' ', ' and ')}`
426
+ return `the ${await g(listing.api)} are ${await gs(context.listing, ' ', ' and ')}`
445
427
  }
446
428
  },
447
429
  {
448
430
  notes: 'show the results as a table',
449
431
  where: where(),
450
- match: ({context, objects, apis}) => {
432
+ match: ({context, objects}) => {
451
433
  if (!(context.marker == 'listAction' && context.isResponse && !context.paraphrase)) {
452
434
  return false
453
435
  }
@@ -455,7 +437,7 @@ let configStruct = {
455
437
  return true
456
438
  }
457
439
  },
458
- apply: ({g, gs, objects, context, e, kms, apis}) => {
440
+ apply: async ({objects, context, e, kms}) => {
459
441
  let report = '';
460
442
  const products = context.listing
461
443
  const columns = objects.listings[context.id].columns
@@ -463,21 +445,21 @@ let configStruct = {
463
445
  kms.stm.api.setVariable('price', { marker: 'price', value: 23 })
464
446
  kms.stm.api.setVariable('quantity', { marker: 'quantity', value: 3 })
465
447
  const c1 = { marker: 'worth', value: 'worth' }
466
- r1 = toEValue(e(c1));
467
- r2 = e({ marker: 'supplier', value: 'supplier' })
468
- // api.listing.api = context.what.api
448
+ r1 = toEValue(await e(c1));
449
+ r2 = await e({ marker: 'supplier', value: 'supplier' })
469
450
  }
470
- const data = products.map( (product) => {
451
+ const data = []
452
+ for (const product of products) {
471
453
  const row = []
472
454
  for (let p of Object.keys(product)) {
473
455
  kms.stm.api.setVariable(p, { marker: p, value: product[p] })
474
456
  }
475
457
  for (let property of columns) {
476
- const value = toEValue(e({ marker: property, value: property }));
458
+ const value = toEValue(await e({ marker: property, value: property }));
477
459
  row.push(value)
478
460
  }
479
- return row
480
- });
461
+ data.push(row)
462
+ };
481
463
  report += table([columns].concat(data))
482
464
  return report
483
465
  }
@@ -485,12 +467,12 @@ let configStruct = {
485
467
  {
486
468
  where: where(),
487
469
  match: ({context}) => context.marker == 'answer' && context.paraphrase,
488
- apply: ({g, context}) => `answer with ${context.type}`
470
+ apply: ({context}) => `answer with ${context.type}`
489
471
  },
490
472
  {
491
473
  where: where(),
492
474
  match: ({context}) => context.marker == 'answer' && !context.paraphrase,
493
- apply: ({g, context}) => `answering with ${context.type}`
475
+ apply: ({context}) => `answering with ${context.type}`
494
476
  },
495
477
  ],
496
478
 
@@ -499,13 +481,13 @@ let configStruct = {
499
481
  where: where(),
500
482
  notes: 'handle show semantic',
501
483
  match: ({context}) => context.marker == 'show',
502
- apply: ({context, e, km, kms, apis, insert, config, objects}) => {
484
+ apply: async ({context, e, km, kms, apis, insert, config, objects}) => {
503
485
  if (context.report) {
504
486
  const values = propertyToArray(context.report)
505
487
  const responses = []
506
488
  for (let value of values) {
507
489
  if (!value.value || value.pullFromContext) {
508
- value = e(value)
490
+ value = await e(value)
509
491
  }
510
492
  let id = value.value
511
493
  if (value.evalue) {
@@ -528,7 +510,7 @@ let configStruct = {
528
510
  }
529
511
  context.isResponse = true
530
512
  } else {
531
- const report = e(context.on)
513
+ const report = await e(context.on)
532
514
  const id = report.value.value
533
515
  const listing = objects.listings[id]
534
516
  const values = propertyToArray(context.properties)
@@ -551,11 +533,11 @@ let configStruct = {
551
533
  notes: 'get the report data',
552
534
  where: where(),
553
535
  match: ({context}) => context.marker == 'listAction',
554
- apply: ({context, e, objects, apis, km, config}) => {
536
+ apply: async ({context, e, objects, apis, km, config}) => {
555
537
  //const name = '***current***'
556
538
  if (context.api) {
557
539
  // id = newReport({km, objects})
558
- const report = e({ marker: 'report', pullFromContext: true })
540
+ const report = await e({ marker: 'report', pullFromContext: true })
559
541
  const id = report.value.value
560
542
  const listing = objects.listings[id]
561
543
  listing.api = context.api
@@ -563,7 +545,7 @@ let configStruct = {
563
545
  context.id = id
564
546
  context.listing = apis[listing.api].getAllProducts(listing)
565
547
  } else {
566
- const report = e({ marker: 'report', pullFromContext: true })
548
+ const report = await e({ marker: 'report', pullFromContext: true })
567
549
  const id = report.evalue.value
568
550
  const listing = objects.listings[id]
569
551
  const api = apis[listing.api]
@@ -573,20 +555,20 @@ let configStruct = {
573
555
  context.isResponse = true
574
556
  },
575
557
  },
576
- [
577
- ({context}) => context.marker == 'answer',
578
- ({e, context, objects, kms, insert}) => {
579
- const report = e({ marker: 'report', pullFromContext: true })
558
+ {
559
+ match: ({context}) => context.marker == 'answer',
560
+ apply: async ({e, context, objects, kms, insert}) => {
561
+ const report = await e({ marker: 'report', pullFromContext: true })
580
562
  const id = report.value.value
581
563
  const listing = objects.listings[id]
582
564
  listing.type = context.type
583
565
  kms.events.api.happens(insert, { marker: "changes", level: 1, changeable: { marker: 'report', pullFromContext: true } })
584
566
  }
585
- ],
567
+ },
586
568
  ],
587
569
  };
588
570
 
589
- const initializeApi = (config, api, km) => {
571
+ const initializeApi = (config, api) => {
590
572
  const type = api.getName();
591
573
  config.addWord(type, {"id": "product", "initial": "{ value: '" + type + `', api: '${type}'}` })
592
574
  /*
@@ -604,18 +586,11 @@ const initializeApi = (config, api, km) => {
604
586
  // config.addWord(type, {"id": "report", "initial": `${open} value: '${type}' ${close}` })
605
587
  }
606
588
 
607
- const createConfig = () => {
608
- const config = new Config(configStruct, module)
609
- config.stop_auto_rebuild()
610
- config.add(currencyKM(), helpKM(), math(), events())
611
- config.multiApi = initializeApi
612
- // mode this to non-module init only
613
- config.initializer(({config, objects, km, isModule}) => {
589
+ const initializer = async ({config, objects, km, kms, isModule}) => {
614
590
  if (!isModule) {
615
- km('reports').addAPI(api1)
616
- km('reports').addAPI(api2)
617
- // config.addAPI(api1)
618
- // config.addAPI(api2)
591
+ debugger
592
+ await kms.reports.addAPI(api1)
593
+ await kms.reports.addAPI(api2)
619
594
  }
620
595
  objects.tempReportId = 0
621
596
  objects.listings = {
@@ -624,15 +599,16 @@ const createConfig = () => {
624
599
  if (!isModule) {
625
600
  objects.listings[id].api = 'clothes'
626
601
  }
627
- })
628
- config.restart_auto_rebuild()
629
- return config
630
- }
602
+ }
631
603
 
632
604
  knowledgeModule({
605
+ config,
606
+ includes: [currencyKM, helpKM, math, events],
607
+ multiApiInitializer: initializeApi,
608
+ initializer,
609
+
633
610
  module,
634
611
  description: 'this module is for getting info about a concept with properties',
635
- createConfig,
636
612
  test: {
637
613
  name: './reports.test.json',
638
614
  contents: reports_tests,
@@ -1,4 +1,4 @@
1
- const { Config, knowledgeModule, where } = require('./runtime').theprogrammablemind
1
+ const { knowledgeModule, where } = require('./runtime').theprogrammablemind
2
2
  const { defaultContextCheck } = require('./helpers')
3
3
  const dialogues = require('./dialogues')
4
4
  const numbers = require('./numbers')
@@ -43,7 +43,7 @@ const setNextPlayer = (km, objects) => {
43
43
  word: "turn"
44
44
  }
45
45
  const api = km('stm').api
46
- api.mentioned(turn)
46
+ api.mentioned({ context: turn })
47
47
  }
48
48
 
49
49
  const addPlayer = (objects, config, player) => {
@@ -51,7 +51,7 @@ const addPlayer = (objects, config, player) => {
51
51
  objects.players.push(player);
52
52
  }
53
53
 
54
- let configStruct = {
54
+ let config = {
55
55
  name: 'scorekeeper',
56
56
  operators: [
57
57
  "([next])",
@@ -122,36 +122,29 @@ let configStruct = {
122
122
  {
123
123
  where: where(),
124
124
  match: ({context, hierarchy}) => hierarchy.isA(context.marker, 'is') && context.isResponse && context.two && context.two.marker == 'next',
125
- apply: ({context, g}) => {
125
+ apply: async ({context, g}) => {
126
126
  const response = context.evalue;
127
127
  const concept = response.two;
128
128
  concept.paraphrase = true
129
129
  concept.isSelf = true
130
- const instance = g(concept.evalue)
130
+ const instance = await g(concept.evalue)
131
131
  return instance
132
132
  }
133
133
  },
134
134
  {
135
135
  where: where(),
136
136
  match: ({context}) => context.marker == 'point' && context.isResponse && context.amount,
137
- apply: ({context, g}) => `${g(context.amount)} points`
137
+ apply: async ({context, g}) => `${await g(context.amount)} points`
138
138
  },
139
139
  {
140
140
  where: where(),
141
141
  match: ({context}) => context.marker == 'scored' && context.paraphrase,
142
- apply: ({context, g}) => `${g(context.player)} got ${g(context.points)}`
142
+ apply: async ({context, g}) => `${await g(context.player)} got ${await g(context.points)}`
143
143
  },
144
- /*
145
- {
146
- where: where(),
147
- match: ({context}) => context.marker == 'enumeration' && context.paraphrase,
148
- apply: ({context, g}) => `${g(context.concept)} are ${g(context.items)}`
149
- },
150
- */
151
144
  {
152
145
  where: where(),
153
146
  match: ({context}) => context.marker == 'start' && context.paraphrase,
154
- apply: ({context, g}) => `start ${g(context.arg)}`
147
+ apply: async ({context, g}) => `start ${await g(context.arg)}`
155
148
  },
156
149
 
157
150
  ],
@@ -161,7 +154,6 @@ let configStruct = {
161
154
  where: where(),
162
155
  match: ({context}) => context.marker == 'player' && context.same,
163
156
  apply: ({context, objects, config, km}) => {
164
- //objects.players = context.same.value.map( (props) => props.value )
165
157
  const players = context.same.value.map( (props) => props.value )
166
158
  setPlayers(objects, config, players)
167
159
  for (let player of objects.players) {
@@ -205,11 +197,11 @@ let configStruct = {
205
197
  matchq: ({objects}) => objects.players.length == 0,
206
198
  applyq: () => 'who are the players?',
207
199
  matchr: ({context}) => context.marker == 'list',
208
- applyr: ({context, gs, objects, config}) => {
200
+ applyr: async ({context, gs, objects, config}) => {
209
201
  const players = context.value.map( (player) => player.value )
210
202
  setPlayers(objects, config, players)
211
203
  objects.allPlayersAreKnown = true;
212
- context.verbatim = `The players are ${gs(objects.players, ' ', ' and ')}`
204
+ context.verbatim = `The players are ${await gs(objects.players, ' ', ' and ')}`
213
205
  context.isResponse = true;
214
206
  }
215
207
  }
@@ -242,12 +234,12 @@ let configStruct = {
242
234
  {
243
235
  where: where(),
244
236
  match: ({context}) => context.marker == 'player' && context.evaluate && context.pullFromContext,
245
- apply: ({context, objects, gs}) => {
237
+ apply: async ({context, objects, gs}) => {
246
238
  const players = objects.players
247
239
  if (players.length == 0) {
248
240
  context.evalue = 'no one'
249
241
  } else {
250
- context.evalue = gs(players, ' ', ' and ')
242
+ context.evalue = await gs(players, ' ', ' and ')
251
243
  }
252
244
  }
253
245
  },
@@ -350,21 +342,14 @@ let configStruct = {
350
342
  ],
351
343
  };
352
344
 
353
- const createConfig = () => {
354
- const config = new Config(configStruct, module)
355
- config.stop_auto_rebuild()
356
- config.add(dialogues(), numbers(), properties())
357
- config.initializer( ({objects, km, isModule}) => {
345
+ const initializer = ({objects, km, isModule}) => {
358
346
  objects.players = []
359
347
  objects.nextPlayer = undefined;
360
348
  setNextPlayer(km, objects);
361
349
  objects.scores = {};
362
350
  objects.winningScore = null
363
351
  objects.allPlayersAreKnown = false;
364
- })
365
- config.restart_auto_rebuild()
366
- return config
367
- }
352
+ }
368
353
 
369
354
  startWithDefault20 = [
370
355
  "greg got 1 point alice got 2 points greg got 1 point start a new game who is next",
@@ -382,9 +367,12 @@ startWithDefault20 = [
382
367
  ]
383
368
 
384
369
  knowledgeModule( {
370
+ config,
371
+ includes: [dialogues, numbers, properties],
372
+ initializer,
373
+
385
374
  module,
386
375
  description: 'scorekeeper for card or dice games',
387
- createConfig,
388
376
  test: {
389
377
  name: './scorekeeper.test.json',
390
378
  contents: scorekeeper_tests,
@@ -1,8 +1,8 @@
1
- const { Config, flatten, knowledgeModule, where } = require('./runtime').theprogrammablemind
1
+ const { flatten, knowledgeModule, where } = require('./runtime').theprogrammablemind
2
2
  const { defaultContextCheck } = require('./helpers')
3
3
  const sdefaults_tests = require('./sdefaults.test.json')
4
4
 
5
- let configStruct = {
5
+ let config = {
6
6
  name: 'sdefaults',
7
7
  semantics: [
8
8
  {
@@ -12,22 +12,31 @@ let configStruct = {
12
12
  // match: ({context}) => context.flatten || context.listable && context.value[0].flatten,
13
13
  match: ({context}) => context.flatten || context.listable && context.value.some((value) => value.flatten),
14
14
  // match: ({context}) => context.flatten || context.listable || (Array.isArray(context.value) && context.value.some((value) => value.flatten)),
15
- apply: ({config, km, context, s}) => {
15
+ apply: async ({config, km, context, s}) => {
16
16
  const [flats, wf] = flatten(['list'], context)
17
17
  for (let flat of flats) {
18
- s({ ...flat, flatten: false })
18
+ await s({ ...flat, flatten: false })
19
19
  }
20
20
  }
21
21
  },
22
+ {
23
+ notes: 'semanticIsEvaluate',
24
+ where: where(),
25
+ priority: -1,
26
+ match: ({context}) => context.semanticIsEvaluate,
27
+ apply: async ({context, e}) => {
28
+ context.value = await e({ ...context, semanticIsEvaluate: false })
29
+ context.isResponse
30
+ }
31
+ },
22
32
  ],
23
33
  };
24
34
 
25
- const createConfig = () => new Config(configStruct, module)
26
-
27
35
  knowledgeModule({
36
+ config,
37
+
28
38
  module,
29
39
  description: 'defaults for semantics',
30
- createConfig,
31
40
  test: {
32
41
  name: './sdefaults.test.json',
33
42
  contents: sdefaults_tests,
@@ -1,4 +1,4 @@
1
- const { Config, knowledgeModule, where, Digraph } = require('./runtime').theprogrammablemind
1
+ const { knowledgeModule, where, Digraph } = require('./runtime').theprogrammablemind
2
2
  const { defaultContextCheck } = require('./helpers')
3
3
  const dialogues = require("./hierarchy")
4
4
  const numbers = require("./numbers")
@@ -6,7 +6,7 @@ const sizeable_tests = require('./sizeable.test.json')
6
6
 
7
7
  // TODO 1 to 2 sizeables
8
8
 
9
- let configStruct = {
9
+ let config = {
10
10
  name: 'sizeable',
11
11
  operators: [
12
12
  "(([size|]) [sizing] ([sizeable]))",
@@ -16,7 +16,7 @@ let configStruct = {
16
16
  id: "sizing",
17
17
  level: 0,
18
18
  convolution: true,
19
- before: ['verby'],
19
+ before: ['verb'],
20
20
  bridge: "{ ...after, size: before[0], modifiers: append(['size'], after.modifiers) }"
21
21
  },
22
22
  {
@@ -52,16 +52,12 @@ let configStruct = {
52
52
  ]
53
53
  };
54
54
 
55
- const createConfig = () => {
56
- const config = new Config(configStruct, module)
57
- config.add(dialogues(), numbers())
58
- return config
59
- }
60
-
61
55
  knowledgeModule({
56
+ config,
57
+ includes: [dialogues, numbers],
58
+
62
59
  module,
63
60
  description: 'Sizeable things',
64
- createConfig,
65
61
  test: {
66
62
  name: './sizeable.test.json',
67
63
  contents: sizeable_tests,