theprogrammablemind_4wp 7.6.0-beta.4 → 7.6.0-beta.6

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -14,4 +14,5 @@ module.exports = {
14
14
  jsonDiff: "Should not be called in the browser",
15
15
  sortJson: "Should not be called in the browser",
16
16
  util: "Should not be called in the browser",
17
+ performance: "Should not be called in the browser",
17
18
  }
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
  }