theprogrammablemind 7.6.0-beta.5 → 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) {
@@ -1689,7 +1725,6 @@ const knowledgeModule = async ({
1689
1725
  if (args.test || args.testVerbose || args.testAllVerbose || args.save) {
1690
1726
  global.transitoryMode = true
1691
1727
  }
1692
-
1693
1728
  if (!args.query && !args.test && !args.info && (args.save || args.saveDeveloper)) {
1694
1729
  global.transitoryMode = true
1695
1730
  saveTests(config, test, testConfig, args.saveDeveloper)
@@ -1711,7 +1746,6 @@ const knowledgeModule = async ({
1711
1746
  useTestConfig = config.getConfigs()[args.testModuleName].getTestConfig()
1712
1747
  useTestConfig.testModuleName = args.testModuleName
1713
1748
  test = useTestConfig.name
1714
-
1715
1749
  }
1716
1750
  runTests(config, test, { args, debug: args.debug, testConfig: useTestConfig, verbose: args.testVerbose || args.testAllVerbose, stopAtFirstError: !args.testAllVerbose }).then((results) => {
1717
1751
  let newError = false
@@ -1829,16 +1863,18 @@ const knowledgeModule = async ({
1829
1863
  }
1830
1864
  }
1831
1865
  }
1832
- 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
+ }
1833
1872
  if (!(useTestConfig.check && useTestConfig.check.length > 0)) {
1834
- 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 ************************')
1835
1876
  }
1836
1877
  }
1837
- if (!(useTestConfig.check && useTestConfig.check.length > 0)) {
1838
- 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.')
1839
- // console.log(JSON.stringify(contexts))
1840
- console.log('**************************** ERRORS ************************')
1841
- }
1842
1878
  }
1843
1879
  // const contexts = { failures: results }
1844
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.5",
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/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
  }