theprogrammablemind 7.6.0-beta.4 → 7.6.0-beta.6

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.
package/client.js CHANGED
@@ -660,6 +660,7 @@ const _process = async (config, query, { initializer, commandLineArgs, credentia
660
660
  opChoices: []
661
661
  },
662
662
  times: 0.0,
663
+ clientSideTimes: 0.0,
663
664
  trace: '',
664
665
  contexts: [],
665
666
  generated: [],
@@ -701,8 +702,16 @@ const _process = async (config, query, { initializer, commandLineArgs, credentia
701
702
  if (json.status !== 200) {
702
703
  throw json
703
704
  } else {
705
+ let clientSideTime
706
+ if (isTest) {
707
+ start = runtime.performance.performance.now()
708
+ }
704
709
  const { contextsPrime, generatedPrime, paraphrasesPrime, paraphrasesParenthesizedPrime, generatedParenthesizedPrime, responsesPrime } =
705
710
  processContextsB({ isTest, config, hierarchy, json, commandLineArgs /*, generators, semantics */ })
711
+ if (isTest) {
712
+ end = runtime.performance.performance.now()
713
+ clientSideTime = end - start
714
+ }
706
715
  response.associations = json.associations
707
716
  response.learned_contextual_priorities = json.learned_contextual_priorities
708
717
  response.hierarchy = json.hierarchy
@@ -713,6 +722,7 @@ const _process = async (config, query, { initializer, commandLineArgs, credentia
713
722
  // appendNoDups(response.metadata.priorities, json.metadata.priorities)
714
723
  appendNoDups(response.metadata.opChoices, json.metadata.opChoices)
715
724
  response.times += json.times
725
+ response.clientSideTimes += clientSideTime
716
726
  response.trace = response.trace.concat(json.trace)
717
727
  response.version = json.version
718
728
  response.explain_priorities = json.explain_priorities
@@ -802,10 +812,10 @@ const runTest = async (config, expected, { args, verbose, testConfig, debug }) =
802
812
  defaultInnerProcess(config, errorHandler, result)
803
813
  }
804
814
  if (verbose) {
805
- const widths = [100, 20]
815
+ const widths = [100, 60]
806
816
  const lines = new Lines(widths)
807
817
  lines.setElement(0, 0, test)
808
- lines.setElement(0, 1, `time on server ${result.times.toFixed(2)}`)
818
+ lines.setElement(0, 1, `time on server: ${result.times.toFixed(2)} client: ${(result.clientSideTimes/1000).toFixed(2)}`)
809
819
  lines.log()
810
820
  }
811
821
  const expected_objects = sortJson(convertToStable(expected.objects), { depth: 25 })
@@ -1323,6 +1333,7 @@ const rebuildTemplate = async ({ config, target, template, errorHandler = defaul
1323
1333
  } else {
1324
1334
  delete result.load_cache_time
1325
1335
  delete result.times
1336
+ delete result.clientSideTimes
1326
1337
  delete result.memory_free_percent
1327
1338
  delete result.logs
1328
1339
  delete result.version
@@ -1362,6 +1373,28 @@ const rebuildTemplate = async ({ config, target, template, errorHandler = defaul
1362
1373
  await looper(Object.assign([], todo))
1363
1374
  }
1364
1375
 
1376
+ const checkTemplate = (template) => {
1377
+ return
1378
+ if (!template) {
1379
+ return
1380
+ }
1381
+ if (template.checks) {
1382
+ throw new Error("The 'checks' property should be in the 'test' property not the 'template' property")
1383
+ }
1384
+ }
1385
+
1386
+ const checkTest = (testConfig) => {
1387
+ if (!testConfig) {
1388
+ return
1389
+ }
1390
+ if (!testConfig.name) {
1391
+ throw new Error("The 'test' property is missing the 'name' property that contains the name of the '<km>.test.json' file")
1392
+ }
1393
+ if (!testConfig.contents) {
1394
+ throw new Error("The 'test' property is missing the 'contents' property that contains contents of the '<km>.test.json' file")
1395
+ }
1396
+ }
1397
+
1365
1398
  const knowledgeModule = async ({
1366
1399
  module: moduleFromJSFile,
1367
1400
  description,
@@ -1395,9 +1428,10 @@ const knowledgeModule = async ({
1395
1428
  if (!description) {
1396
1429
  throw new Error("'description' is a required parameter. The value should the description of the knowledge module.")
1397
1430
  }
1398
- if (!test) {
1431
+ if (!testConfig) {
1399
1432
  throw new Error("'test' is a required parameter. The value should the path to the file used to store the tests of the knowledge module and the contents of the file in the form { name: <filePath>, contexts: <json> }.")
1400
1433
  }
1434
+ checkTest(testConfig)
1401
1435
 
1402
1436
  const isProcess = require.main === moduleFromJSFile
1403
1437
 
@@ -1666,6 +1700,8 @@ const knowledgeModule = async ({
1666
1700
  }
1667
1701
  }
1668
1702
 
1703
+ checkTemplate(template)
1704
+
1669
1705
  if (template) {
1670
1706
  const needsRebuild = config.needsRebuild(template.template, template.instance, options)
1671
1707
  if (needsRebuild) {
@@ -1674,7 +1710,9 @@ const knowledgeModule = async ({
1674
1710
  config.config.rebuild = true
1675
1711
  }
1676
1712
  config.load(template.template, template.instance, { rebuild: needsRebuild })
1677
- printConfig()
1713
+ if (!args.query) {
1714
+ printConfig()
1715
+ }
1678
1716
  if (needsRebuild) {
1679
1717
  return
1680
1718
  }
@@ -1687,7 +1725,6 @@ const knowledgeModule = async ({
1687
1725
  if (args.test || args.testVerbose || args.testAllVerbose || args.save) {
1688
1726
  global.transitoryMode = true
1689
1727
  }
1690
-
1691
1728
  if (!args.query && !args.test && !args.info && (args.save || args.saveDeveloper)) {
1692
1729
  global.transitoryMode = true
1693
1730
  saveTests(config, test, testConfig, args.saveDeveloper)
@@ -1709,7 +1746,6 @@ const knowledgeModule = async ({
1709
1746
  useTestConfig = config.getConfigs()[args.testModuleName].getTestConfig()
1710
1747
  useTestConfig.testModuleName = args.testModuleName
1711
1748
  test = useTestConfig.name
1712
-
1713
1749
  }
1714
1750
  runTests(config, test, { args, debug: args.debug, testConfig: useTestConfig, verbose: args.testVerbose || args.testAllVerbose, stopAtFirstError: !args.testAllVerbose }).then((results) => {
1715
1751
  let newError = false
@@ -1827,16 +1863,18 @@ const knowledgeModule = async ({
1827
1863
  }
1828
1864
  }
1829
1865
  }
1830
- if (!headerShown) {
1866
+ if (hasError) {
1867
+ if (!headerShown) {
1868
+ if (!(useTestConfig.check && useTestConfig.check.length > 0)) {
1869
+ console.log('There are failures due to things other than paraphrases, responses and checked properties being different. They are not shown because you ran -tv or -tva which only shows difference in paraphrase and results. Usually what I do is -s and do a diff to make sure there are no other problems. If the paraphrases or results were different they would have shown here.')
1870
+ }
1871
+ }
1831
1872
  if (!(useTestConfig.check && useTestConfig.check.length > 0)) {
1832
- console.log('There are failures due to things other than paraphrases, responses and checked properties being different. They are not shown because you ran -tv or -tva which only shows difference in paraphrase and results. Usually what I do is -s and do a diff to make sure there are no other problems. If the paraphrases or results were different they would have shown here.')
1873
+ console.log('use -v arg to write files expected.json and actual.json in the current directory for detailed comparison. Or do -s and then git diff the changes.')
1874
+ // console.log(JSON.stringify(contexts))
1875
+ console.log('**************************** ERRORS ************************')
1833
1876
  }
1834
1877
  }
1835
- if (!(useTestConfig.check && useTestConfig.check.length > 0)) {
1836
- console.log('use -v arg to write files expected.json and actual.json in the current directory for detailed comparison. Or do -s and then git diff the changes.')
1837
- // console.log(JSON.stringify(contexts))
1838
- console.log('**************************** ERRORS ************************')
1839
- }
1840
1878
  }
1841
1879
  // const contexts = { failures: results }
1842
1880
  l(n - 1, hasError || newError)
package/package.json CHANGED
@@ -64,6 +64,6 @@
64
64
  "json-stable-stringify": "^1.0.1",
65
65
  "node-fetch": "^2.6.1"
66
66
  },
67
- "version": "7.6.0-beta.4",
67
+ "version": "7.6.0-beta.6",
68
68
  "license": "ISC"
69
69
  }
package/runtime.js CHANGED
@@ -15,4 +15,5 @@ module.exports = {
15
15
  jsonDiff: require('json-diff'),
16
16
  sortJson: require('sort-json'),
17
17
  util: require('util'),
18
+ performance: require('perf_hooks'),
18
19
  }
package/src/flatten.js CHANGED
@@ -81,6 +81,9 @@ const flatten = (markers, value) => {
81
81
  return flattenListHelper(markers, value)
82
82
  }
83
83
 
84
+ if (value.flatten === false) {
85
+ return [[value], false]
86
+ }
84
87
  const marker = value.marker
85
88
  let properties = value
86
89
 
package/src/project.js CHANGED
@@ -45,7 +45,6 @@ const project = (object, filter) => {
45
45
  if (properties.property) {
46
46
  const property = properties.property
47
47
  if (properties.isPropertyList) {
48
- debugger
49
48
  if (!Array.isArray(object[property])) {
50
49
  return projection
51
50
  }