theprogrammablemind_4wp 7.10.0-beta.14 → 7.10.0-beta.16

Sign up to get free protection for your applications and to get access to all the features.
package/client.js CHANGED
@@ -32,7 +32,7 @@ const pickObjects = (testConfig, objects) => {
32
32
 
33
33
  // move ask to the KM's since verbatim is called
34
34
  const getAsk = (config) => (uuid) => (asks) => {
35
- for (let ask of asks) {
35
+ for (const ask of asks) {
36
36
  let oneShot = true // default
37
37
  if (ask.oneShot === false) {
38
38
  oneShot = false
@@ -45,41 +45,41 @@ const getAsk = (config) => (uuid) => (asks) => {
45
45
  })
46
46
  }
47
47
  let oneShot = true
48
- for (let ask of asks) {
48
+ for (const ask of asks) {
49
49
  if (ask.oneShot === false) {
50
50
  oneShot = false
51
51
  }
52
52
  }
53
53
  config.addSemantic({
54
- uuid,
55
- oneShot,
56
- match: ({context}) => context.marker == 'controlEnd' || context.marker == 'controlBetween',
57
- apply: (args) => {
58
- for (let ask of asks) {
59
- let matchq = ask.matchq
60
- let applyq = ask.applyq
61
- if (!matchq) {
62
- let wasAsked = false
63
- matchq = () => !wasAsked,
64
- applyq = (args) => {
65
- wasAsked = true
66
- applyq(args)
67
- }
54
+ uuid,
55
+ oneShot,
56
+ match: ({ context }) => context.marker == 'controlEnd' || context.marker == 'controlBetween',
57
+ apply: (args) => {
58
+ for (const ask of asks) {
59
+ let matchq = ask.matchq
60
+ let applyq = ask.applyq
61
+ if (!matchq) {
62
+ let wasAsked = false
63
+ matchq = () => !wasAsked,
64
+ applyq = (args) => {
65
+ wasAsked = true
66
+ applyq(args)
68
67
  }
69
- if (matchq(args)) {
70
- // args.context.motivationKeep = true
71
- args.verbatim(applyq(args))
72
- /*
68
+ }
69
+ if (matchq(args)) {
70
+ // args.context.motivationKeep = true
71
+ args.verbatim(applyq(args))
72
+ /*
73
73
  args.context.verbatim = applyq(args)
74
74
  args.context.isResponse = true;
75
75
  delete args.context.controlRemove;
76
76
  */
77
- args.context.controlKeepMotivation = true;
78
- break
79
- }
77
+ args.context.controlKeepMotivation = true
78
+ break
80
79
  }
81
- args.context.cascade = true
82
80
  }
81
+ args.context.cascade = true
82
+ }
83
83
  })
84
84
  }
85
85
 
@@ -100,7 +100,7 @@ const vimdiff = (actualJSON, expectedJSON) => {
100
100
  const editor = runtime.process.env.EDITOR || 'vimdiff'
101
101
  // const child = runtime.child_process.spawn(editor, [`${path}/expected.json`, `${path}/actual.json`], { stdio: 'inherit' })
102
102
  console.log(`${editor} ${path}/expected.json ${path}/actual.json`)
103
- runtime.child_process.execSync(`${editor} ${path}/expected.json ${path}/actual.json`, {stdio: 'inherit'})
103
+ runtime.child_process.execSync(`${editor} ${path}/expected.json ${path}/actual.json`, { stdio: 'inherit' })
104
104
  }
105
105
  }
106
106
 
@@ -140,10 +140,10 @@ const asList = (context) => {
140
140
  }
141
141
 
142
142
  class ErrorReason extends Error {
143
- constructor(context) {
144
- super(JSON.stringify(context))
145
- this.reason = context
146
- }
143
+ constructor (context) {
144
+ super(JSON.stringify(context))
145
+ this.reason = context
146
+ }
147
147
  }
148
148
 
149
149
  const setupArgs = (args, config, logs, hierarchy, uuidForScoping) => {
@@ -178,7 +178,7 @@ const setupArgs = (args, config, logs, hierarchy, uuidForScoping) => {
178
178
  }
179
179
  }
180
180
  args.getUUIDScoped = (uuid) => {
181
- return {
181
+ return {
182
182
  ask: scopedAsk(uuid),
183
183
  api: getAPI(uuid),
184
184
  apis: getAPIs(uuid)
@@ -204,10 +204,10 @@ const setupArgs = (args, config, logs, hierarchy, uuidForScoping) => {
204
204
  return config.getGenerators(logs).apply(addAssumed(args, a), c, a)
205
205
  }
206
206
  args.gp = (c, a = {}) => {
207
- return config.getGenerators(logs).apply(addAssumed(args, a, {paraphrase: true, isResponse: false, response: false}), c, {paraphrase: true, isResponse: false, response: false})
207
+ return config.getGenerators(logs).apply(addAssumed(args, a, { paraphrase: true, isResponse: false, response: false }), c, { paraphrase: true, isResponse: false, response: false })
208
208
  }
209
209
  args.gr = (c, a = {}) => {
210
- return config.getGenerators(logs).apply(addAssumed(args, a, {paraphrase: false, isResponse: true}), { ...c, paraphrase: false, isResponse: true })
210
+ return config.getGenerators(logs).apply(addAssumed(args, a, { paraphrase: false, isResponse: true }), { ...c, paraphrase: false, isResponse: true })
211
211
  }
212
212
  args.e = (c) => {
213
213
  return config.getEvaluator(args.s, args.calls, logs, c)
@@ -224,7 +224,7 @@ const setupArgs = (args, config, logs, hierarchy, uuidForScoping) => {
224
224
  const gs = (g) => (contexts, separator, lastSeparator) => {
225
225
  if (!Array.isArray(contexts)) {
226
226
  debugger
227
- throw new Error("Expected a list")
227
+ throw new Error('Expected a list')
228
228
  }
229
229
 
230
230
  let s = ''
@@ -288,10 +288,10 @@ const processContexts = (contexts, params) => {
288
288
 
289
289
  const getObjects = (objects) => {
290
290
  return (uuid) => {
291
- if (objects && objects.namespaced) {
292
- return objects.namespaced[uuid]
293
- }
294
- return objects
291
+ if (objects && objects.namespaced) {
292
+ return objects.namespaced[uuid]
293
+ }
294
+ return objects
295
295
  }
296
296
  }
297
297
 
@@ -316,7 +316,7 @@ const processContext = (context, { objects = {}, config, logs = [] }) => {
316
316
  context = semantics.apply(args, context)
317
317
  const generated = generators.apply(args, context)
318
318
  const assumed = { paraphrase: true, response: false, isResponse: false }
319
- const paraphrases = generators.apply({...args, assumed}, context, { paraphrase: true, response: false, isResponse: false })
319
+ const paraphrases = generators.apply({ ...args, assumed }, context, { paraphrase: true, response: false, isResponse: false })
320
320
  let responses = []
321
321
  if (context.isResponse) {
322
322
  responses = generated
@@ -341,7 +341,7 @@ const convertToStable = (objects) => {
341
341
 
342
342
  const writeTestFile = (fn, tests) => {
343
343
  const stabilize = (tests) => {
344
- for (let test of tests) {
344
+ for (const test of tests) {
345
345
  for (opChoice of test.metadata.opChoices) {
346
346
  opChoice.ops.sort()
347
347
  }
@@ -357,30 +357,31 @@ const writeTest = (fn, query, objects, generated, paraphrases, responses, contex
357
357
  if (runtime.fs.existsSync(fn)) {
358
358
  tests = JSON.parse(runtime.fs.readFileSync(fn))
359
359
  }
360
- for (let association of associations) {
360
+ for (const association of associations) {
361
361
  association.sort()
362
362
  }
363
363
  associations.sort()
364
364
  // tests[query] = sortJson({ paraphrases, responses, contexts, objects: convertToStable(objects), associations, metadata, config, developerTest: saveDeveloper }, { depth: 25 })
365
- const results = sortJson({
366
- query,
367
- paraphrases,
368
- responses,
369
- contexts,
370
- objects: convertToStable(objects),
371
- associations,
372
- metadata,
373
- config,
374
- developerTest: saveDeveloper,
375
- paraphrasesParenthesized,
376
- generatedParenthesized }, { depth: 25 })
377
- let wasSet = false;
378
- tests.forEach( (test, index) => {
365
+ const results = sortJson({
366
+ query,
367
+ paraphrases,
368
+ responses,
369
+ contexts,
370
+ objects: convertToStable(objects),
371
+ associations,
372
+ metadata,
373
+ config,
374
+ developerTest: saveDeveloper,
375
+ paraphrasesParenthesized,
376
+ generatedParenthesized
377
+ }, { depth: 25 })
378
+ let wasSet = false
379
+ tests.forEach((test, index) => {
379
380
  if (test.query == query) {
380
381
  tests[index] = results
381
382
  wasSet = true
382
383
  }
383
- });
384
+ })
384
385
  if (!wasSet) {
385
386
  tests.push(results)
386
387
  }
@@ -389,7 +390,7 @@ const writeTest = (fn, query, objects, generated, paraphrases, responses, contex
389
390
  }
390
391
 
391
392
  const combineRange = (r1, r2) => {
392
- let start = r2.start;
393
+ let start = r2.start
393
394
  if (r1.start < r2.start) {
394
395
  start = r1.start
395
396
  }
@@ -402,14 +403,14 @@ const combineRange = (r1, r2) => {
402
403
 
403
404
  const overlaps = (r1, context) => {
404
405
  if (!context.range) {
405
- return true;
406
+ return true
406
407
  }
407
408
  const r2 = context.range
408
409
  if (r1.start <= r2.end && r1.start >= r2.start) {
409
- return true;
410
+ return true
410
411
  }
411
412
  if (r1.end <= r2.end && r1.end >= r2.start) {
412
- return true;
413
+ return true
413
414
  }
414
415
  return false
415
416
  }
@@ -448,7 +449,7 @@ const processContextsB = ({ config, hierarchy, semantics, generators, json, isTe
448
449
  setupArgs(args, config, json.logs, hierarchy)
449
450
  const toDo = [...contexts]
450
451
  args.insert = (context) => toDo.unshift(context)
451
- let overlap, lastRange;
452
+ let overlap, lastRange
452
453
  config.debugLoops = commandLineArgs && commandLineArgs.debugLoops
453
454
  while (toDo.length > 0) {
454
455
  const context = toDo.shift()
@@ -464,7 +465,7 @@ const processContextsB = ({ config, hierarchy, semantics, generators, json, isTe
464
465
  const semantics = config.getSemantics(json.logs)
465
466
  try {
466
467
  contextPrime = semantics.apply(args, context)
467
- } catch( e ) {
468
+ } catch (e) {
468
469
  if (e.message == 'Maximum call stack size exceeded') {
469
470
  const mostCalled = semantics.getMostCalled()
470
471
  e.message += `\nThe most called semantic was:\nnotes: ${mostCalled.notes}\nmatch: ${mostCalled.matcher.toString()}\napply: ${mostCalled._apply.toString()}\n`
@@ -473,36 +474,36 @@ const processContextsB = ({ config, hierarchy, semantics, generators, json, isTe
473
474
  if (isInstance) {
474
475
  console.log('error', e.error)
475
476
  }
476
- contextPrime = semantics.apply(args, {
477
- marker: 'error',
478
- context,
479
- text: e ? e.toString() : 'not available',
480
- reason: e.reason,
481
- error: e.stack || e.error
482
- })
477
+ contextPrime = semantics.apply(args, {
478
+ marker: 'error',
479
+ context,
480
+ text: e ? e.toString() : 'not available',
481
+ reason: e.reason,
482
+ error: e.stack || e.error
483
+ })
483
484
  }
484
485
  }
485
486
  if (contextPrime.controlRemove) {
486
487
  continue
487
488
  }
488
- let assumed = { isResponse: true };
489
- const generated = contextPrime.isResponse ? config.getGenerators(json.logs).apply({...args, assumed}, contextPrime, assumed) : ''
489
+ let assumed = { isResponse: true }
490
+ const generated = contextPrime.isResponse ? config.getGenerators(json.logs).apply({ ...args, assumed }, contextPrime, assumed) : ''
490
491
  let generatedParenthesized = []
491
492
  if (generateParenthesized) {
492
493
  config.parenthesized = true
493
- generatedParenthesized = contextPrime.isResponse ? config.getGenerators(json.logs).apply({...args, assumed}, contextPrime, assumed) : ''
494
+ generatedParenthesized = contextPrime.isResponse ? config.getGenerators(json.logs).apply({ ...args, assumed }, contextPrime, assumed) : ''
494
495
  config.parenthesized = false
495
496
  }
496
497
  // assumed = { paraphrase: true, response: false };
497
- assumed = { paraphrase: true, isResponse: false, response: false };
498
+ assumed = { paraphrase: true, isResponse: false, response: false }
498
499
  if (generateParenthesized) {
499
500
  config.parenthesized = false
500
501
  }
501
- const paraphrases = config.getGenerators(json.logs).apply({...args, assumed}, contextPrime, assumed)
502
+ const paraphrases = config.getGenerators(json.logs).apply({ ...args, assumed }, contextPrime, assumed)
502
503
  let paraphrasesParenthesized = []
503
504
  if (generateParenthesized) {
504
505
  config.parenthesized = true
505
- paraphrasesParenthesized = config.getGenerators(json.logs).apply({...args, assumed}, contextPrime, assumed)
506
+ paraphrasesParenthesized = config.getGenerators(json.logs).apply({ ...args, assumed }, contextPrime, assumed)
506
507
  config.parenthesized = false
507
508
  }
508
509
  contextsPrime.push(contextPrime)
@@ -578,7 +579,7 @@ const doWithRetries = async (n, url, queryParams, data) => {
578
579
  }
579
580
  }
580
581
 
581
- const setupProcessB = ({ config, initializer, allowDelta=false } = {}) => {
582
+ const setupProcessB = ({ config, initializer, allowDelta = false } = {}) => {
582
583
  const key = config._key
583
584
 
584
585
  const data = Object.assign({ key, version: '3' }, { uuid: config._uuid })
@@ -591,8 +592,8 @@ const setupProcessB = ({ config, initializer, allowDelta=false } = {}) => {
591
592
  }
592
593
 
593
594
  // config.toServer(data)
594
-
595
- if (data.namespaces) {
595
+
596
+ if (data.namespaces) {
596
597
  for (const uuid of Object.keys(data.namespaces)) {
597
598
  const km = config.configs.find((km) => km.uuid === uuid)
598
599
  data.namespaces[uuid].name = km.name
@@ -637,7 +638,7 @@ const loadInstance = (config, instance) => {
637
638
  // config.addInternal(results, useOldVersion = true, skipObjects = false, includeNamespaces = true, allowNameToBeNull = false)
638
639
  // config.addInternal(config.template.queries[i], { handleCalculatedProps: true } )
639
640
  const uuid = config.nameToUUID(instance.name)
640
- config.addInternal(_.cloneDeep(instance.template.queries[i]), { uuid, addFirst: true, handleCalculatedProps: true } )
641
+ config.addInternal(_.cloneDeep(instance.template.queries[i]), { uuid, addFirst: true, handleCalculatedProps: true })
641
642
  } else if (results.apply) {
642
643
  const objects = config.get('objects')
643
644
  const args = { objects, getObjects: getObjects(objects) }
@@ -686,7 +687,7 @@ const _process = async (config, query, { initializer, commandLineArgs, credentia
686
687
  config.rebuild()
687
688
  const objects = getObjects(config.config.objects)(config.uuid)
688
689
  }
689
- } catch(error) {
690
+ } catch (error) {
690
691
  throw error
691
692
  }
692
693
 
@@ -716,12 +717,12 @@ const _process = async (config, query, { initializer, commandLineArgs, credentia
716
717
  paraphrasesParenthesized: [],
717
718
  generatedParenthesized: [],
718
719
  responses: [],
719
- associations: [],
720
+ associations: []
720
721
  }
721
722
 
722
723
  while (true) {
723
724
  if (queries.length === 0) {
724
- break;
725
+ break
725
726
  }
726
727
 
727
728
  data.utterance = queries[0]
@@ -787,18 +788,18 @@ const _process = async (config, query, { initializer, commandLineArgs, credentia
787
788
 
788
789
  if (writeTests) {
789
790
  const actual_config = getConfigForTest(config, testConfig)
790
- const saveObjects = {...config.config.objects}
791
+ const saveObjects = { ...config.config.objects }
791
792
  saveObjects.nameToUUID = {}
792
- for (let km of config.configs) {
793
+ for (const km of config.configs) {
793
794
  saveObjects.nameToUUID[km.name] = km.uuid
794
795
  }
795
796
  writeTest(testsFN, query, saveObjects, response.generated, response.paraphrases, response.responses, response.contexts, response.associations, response.metadata, actual_config, saveDeveloper, response.paraphrasesParenthesized, response.generatedParenthesized)
796
797
  }
797
798
 
798
799
  return response
799
- } catch(error) {
800
- error.query = query
801
- errorHandler(error)
800
+ } catch (error) {
801
+ error.query = query
802
+ errorHandler(error)
802
803
  }
803
804
  }
804
805
 
@@ -853,110 +854,110 @@ const runTest = async (config, expected, { args, verbose, testConfig, debug }) =
853
854
  objects = getObjects(config.config.objects)(config.getConfigs()[testConfig.testModuleName].uuid)
854
855
  testConfigName = testConfig.testModuleName
855
856
  }
856
- try {
857
- const result = await _process(config, test, { errorHandler, isTest: true })
858
- result.query = test
859
- if (debug) {
860
- defaultInnerProcess(config, errorHandler, result)
861
- }
862
- if (verbose) {
863
- const widths = [100, 60]
864
- const lines = new Lines(widths)
865
- lines.setElement(0, 0, test)
866
- lines.setElement(0, 1, `time on server: ${result.times.toFixed(2)} client: ${(result.clientSideTimes/1000).toFixed(2)}`)
867
- lines.log()
868
- }
869
- const expected_objects = sortJson(convertToStable(expected.objects), { depth: 25 })
870
- delete expected_objects.nameToUUID
871
- const actual_objects = sortJson(convertToStable(config.config.objects), { depth: 25 })
872
- const failed_paraphrases = !matching(result.paraphrases, expected.paraphrases)
873
- let failed_paraphrasesParenthesized = !matching(result.paraphrasesParenthesized, expected.paraphrasesParenthesized)
874
- let failed_generatedParenthesized = !matching(result.generatedParenthesized, expected.generatedParenthesized)
875
- // TODO fix the naming conventions: camelcase + use actual instead of result
876
- const failed_responses = !matching(result.responses, expected.responses)
877
- const failed_contexts = !matching(result.contexts, expected.contexts)
878
- const failed_objects = !matching(actual_objects, expected_objects)
879
-
880
- if (args.testNoParenthesized) {
881
- failed_paraphrasesParenthesized = false
882
- failed_generatedParenthesized = false
883
- }
884
-
885
- const pickedResultContexts = result.contexts.map(pickContext(testConfig))
886
- const pickedExpectedContexts = expected.contexts.map(pickContext(testConfig))
887
- const failedCheckedContexts = !matching(pickedResultContexts, pickedExpectedContexts)
888
-
889
- const expectedGetObjects = (name) => {
890
- if (!name) {
891
- name = config.name
892
- }
893
- return expected.objects.namespaced[expected.objects.nameToUUID[name]] || {}
894
- }
895
- const expected_checked = sortJson(pickObjects(testConfig, expectedGetObjects(testConfigName)), { depth: 25 })
896
- const actualGetObjects = (name) => {
897
- if (!name) {
898
- name = config.name
899
- }
900
- const km = config.configs.find( (km) => km.name == name )
901
- return config.config.objects.namespaced[km.uuid] || {}
902
- }
903
- const actual_checked = sortJson(pickObjects(testConfig, actualGetObjects(testConfigName)), { depth: 25 })
904
- const failed_checked = !matching(actual_objects, expected_objects)
905
-
906
- const failed_checks = !matching(actual_objects, expected_objects)
907
- const failed_checked_objects = !matching(actual_checked, expected_checked)
908
- const actual_config = sortJson(convertToStable(getConfigForTest(config, testConfig)), { depth: 25 })
909
- const expected_config = sortJson(convertToStable(expected.config), { depth: 25 })
910
- const failed_config = !matching(actual_config, expected_config)
911
- let failed = failed_checked_objects || failed_paraphrases || failed_paraphrasesParenthesized || failed_generatedParenthesized || failed_responses || failed_contexts || failed_objects || failed_config || failed_checked || failedCheckedContexts
912
-
913
- if (expected.metadata && result.metadata && failed) {
914
- const priorities = analyzeMetaData(expected.metadata, result.metadata)
915
- if (priorities.length > 0) {
916
- const log = `Hint, if the results are flakey try adding the specified priorities ${JSON.stringify(priorities)}`
917
- result.logs.push(log)
918
- }
919
- }
920
- if (failed) {
921
- return {
922
- utterance: test,
923
- expected: {
924
- responses: expected.responses,
925
- paraphrases: expected.paraphrases,
926
- paraphrasesParenthesized: expected.paraphrasesParenthesized,
927
- generatedParenthesized: expected.generatedParenthesized,
928
- results: expected.contexts,
929
- checked: expected_checked,
930
- checkedContexts: pickedExpectedContexts,
931
- objects: expected_objects,
932
- config: expected.config
933
- },
934
- actual: {
935
- responses: result.responses,
936
- paraphrases: result.paraphrases,
937
- paraphrasesParenthesized: result.paraphrasesParenthesized,
938
- generatedParenthesized: result.generatedParenthesized,
939
- results: result.contexts,
940
- checked: actual_checked,
941
- checkedContexts: pickedResultContexts,
942
- objects: actual_objects,
943
- config: actual_config
944
- }
857
+ try {
858
+ const result = await _process(config, test, { errorHandler, isTest: true })
859
+ result.query = test
860
+ if (debug) {
861
+ defaultInnerProcess(config, errorHandler, result)
862
+ }
863
+ if (verbose) {
864
+ const widths = [100, 60]
865
+ const lines = new Lines(widths)
866
+ lines.setElement(0, 0, test)
867
+ lines.setElement(0, 1, `time on server: ${result.times.toFixed(2)} client: ${(result.clientSideTimes / 1000).toFixed(2)}`)
868
+ lines.log()
869
+ }
870
+ const expected_objects = sortJson(convertToStable(expected.objects), { depth: 25 })
871
+ delete expected_objects.nameToUUID
872
+ const actual_objects = sortJson(convertToStable(config.config.objects), { depth: 25 })
873
+ const failed_paraphrases = !matching(result.paraphrases, expected.paraphrases)
874
+ let failed_paraphrasesParenthesized = !matching(result.paraphrasesParenthesized, expected.paraphrasesParenthesized)
875
+ let failed_generatedParenthesized = !matching(result.generatedParenthesized, expected.generatedParenthesized)
876
+ // TODO fix the naming conventions: camelcase + use actual instead of result
877
+ const failed_responses = !matching(result.responses, expected.responses)
878
+ const failed_contexts = !matching(result.contexts, expected.contexts)
879
+ const failed_objects = !matching(actual_objects, expected_objects)
880
+
881
+ if (args.testNoParenthesized) {
882
+ failed_paraphrasesParenthesized = false
883
+ failed_generatedParenthesized = false
884
+ }
885
+
886
+ const pickedResultContexts = result.contexts.map(pickContext(testConfig))
887
+ const pickedExpectedContexts = expected.contexts.map(pickContext(testConfig))
888
+ const failedCheckedContexts = !matching(pickedResultContexts, pickedExpectedContexts)
889
+
890
+ const expectedGetObjects = (name) => {
891
+ if (!name) {
892
+ name = config.name
893
+ }
894
+ return expected.objects.namespaced[expected.objects.nameToUUID[name]] || {}
895
+ }
896
+ const expected_checked = sortJson(pickObjects(testConfig, expectedGetObjects(testConfigName)), { depth: 25 })
897
+ const actualGetObjects = (name) => {
898
+ if (!name) {
899
+ name = config.name
900
+ }
901
+ const km = config.configs.find((km) => km.name == name)
902
+ return config.config.objects.namespaced[km.uuid] || {}
903
+ }
904
+ const actual_checked = sortJson(pickObjects(testConfig, actualGetObjects(testConfigName)), { depth: 25 })
905
+ const failed_checked = !matching(actual_objects, expected_objects)
906
+
907
+ const failed_checks = !matching(actual_objects, expected_objects)
908
+ const failed_checked_objects = !matching(actual_checked, expected_checked)
909
+ const actual_config = sortJson(convertToStable(getConfigForTest(config, testConfig)), { depth: 25 })
910
+ const expected_config = sortJson(convertToStable(expected.config), { depth: 25 })
911
+ const failed_config = !matching(actual_config, expected_config)
912
+ const failed = failed_checked_objects || failed_paraphrases || failed_paraphrasesParenthesized || failed_generatedParenthesized || failed_responses || failed_contexts || failed_objects || failed_config || failed_checked || failedCheckedContexts
913
+
914
+ if (expected.metadata && result.metadata && failed) {
915
+ const priorities = analyzeMetaData(expected.metadata, result.metadata)
916
+ if (priorities.length > 0) {
917
+ const log = `Hint, if the results are flakey try adding the specified priorities ${JSON.stringify(priorities)}`
918
+ result.logs.push(log)
919
+ }
920
+ }
921
+ if (failed) {
922
+ return {
923
+ utterance: test,
924
+ expected: {
925
+ responses: expected.responses,
926
+ paraphrases: expected.paraphrases,
927
+ paraphrasesParenthesized: expected.paraphrasesParenthesized,
928
+ generatedParenthesized: expected.generatedParenthesized,
929
+ results: expected.contexts,
930
+ checked: expected_checked,
931
+ checkedContexts: pickedExpectedContexts,
932
+ objects: expected_objects,
933
+ config: expected.config
934
+ },
935
+ actual: {
936
+ responses: result.responses,
937
+ paraphrases: result.paraphrases,
938
+ paraphrasesParenthesized: result.paraphrasesParenthesized,
939
+ generatedParenthesized: result.generatedParenthesized,
940
+ results: result.contexts,
941
+ checked: actual_checked,
942
+ checkedContexts: pickedResultContexts,
943
+ objects: actual_objects,
944
+ config: actual_config
945
945
  }
946
946
  }
947
- } catch(error) {
948
- if (verbose) {
949
- console.log(test)
950
- }
951
- if (error.metadata) {
952
- const priorities = analyzeMetaData(expected.metadata, error.metadata)
953
- if (priorities.length > 0) {
954
- const log = `Hint, if the results are flakey try adding the specified priorities ${JSON.stringify(priorities)}`
955
- error.logs.push(log)
956
- }
947
+ }
948
+ } catch (error) {
949
+ if (verbose) {
950
+ console.log(test)
951
+ }
952
+ if (error.metadata) {
953
+ const priorities = analyzeMetaData(expected.metadata, error.metadata)
954
+ if (priorities.length > 0) {
955
+ const log = `Hint, if the results are flakey try adding the specified priorities ${JSON.stringify(priorities)}`
956
+ error.logs.push(log)
957
957
  }
958
- throw error
959
958
  }
959
+ throw error
960
+ }
960
961
  }
961
962
 
962
963
  const runTestsHelper = async (config, tests, failed, juicyBits) => {
@@ -994,9 +995,9 @@ const saveTest = async (testFile, config, test, expected, testConfig, saveDevelo
994
995
  const actualConfig = getConfigForTest(config, testConfig)
995
996
  const args = {
996
997
  }
997
- const saveObjects = {...config.config.objects}
998
+ const saveObjects = { ...config.config.objects }
998
999
  saveObjects.nameToUUID = {}
999
- for (let km of config.configs) {
1000
+ for (const km of config.configs) {
1000
1001
  saveObjects.nameToUUID[km.name] = km.uuid
1001
1002
  }
1002
1003
  writeTest(testFile, test, saveObjects, result.generated, result.paraphrases, result.responses, result.contexts, result.associations, result.metadata, actualConfig, saveDeveloper, result.paraphrasesParenthesized, result.generatedParenthesized)
@@ -1018,7 +1019,7 @@ const saveTestsHelper = async (testFile, config, tests, todo, testConfig, saveDe
1018
1019
  const saveTests = (config, testFile, testConfig) => {
1019
1020
  const tests = JSON.parse(runtime.fs.readFileSync(testFile))
1020
1021
  console.log(testFile)
1021
- return saveTestsHelper(testFile, config, tests, tests.map( (test) => test.query ), testConfig)
1022
+ return saveTestsHelper(testFile, config, tests, tests.map((test) => test.query), testConfig)
1022
1023
  }
1023
1024
 
1024
1025
  /*
@@ -1145,7 +1146,7 @@ const defaultErrorHandler = async (error) => {
1145
1146
  doErrorExit = true
1146
1147
  }
1147
1148
 
1148
- if (typeof runtime.process.exit == 'function' && doErrorExit) {
1149
+ if (typeof runtime.process.exit === 'function' && doErrorExit) {
1149
1150
  runtime.process.exit(-1)
1150
1151
  }
1151
1152
 
@@ -1164,7 +1165,7 @@ const defaultInnerProcess = (config, errorHandler, responses) => {
1164
1165
  for (const lcp of responses.learned_contextual_priorities) {
1165
1166
  console.log(` ${JSON.stringify(lcp)},\n`)
1166
1167
  }
1167
- console.log("\n")
1168
+ console.log('\n')
1168
1169
  }
1169
1170
  if (responses.logs) {
1170
1171
  console.log('Logs')
@@ -1180,8 +1181,8 @@ const defaultInnerProcess = (config, errorHandler, responses) => {
1180
1181
 
1181
1182
  const pickEm = () => {
1182
1183
  const picked = {}
1183
- const namespaced = config.get('objects')['namespaced']
1184
- for (let prop of getConfig_getObjectCheck(config.testConfig)) {
1184
+ const namespaced = config.get('objects').namespaced
1185
+ for (const prop of getConfig_getObjectCheck(config.testConfig)) {
1185
1186
  if (prop.km) {
1186
1187
  /*
1187
1188
  const objects = namespaced[prop.km]]
@@ -1203,7 +1204,7 @@ const defaultInnerProcess = (config, errorHandler, responses) => {
1203
1204
  }
1204
1205
 
1205
1206
  if (responses.explain_priorities) {
1206
- console.log("Explain Priorities")
1207
+ console.log('Explain Priorities')
1207
1208
  for ([inputs, output, reason] of responses.explain_priorities) {
1208
1209
  console.log(` inputs: ${JSON.stringify(inputs)} output: ${JSON.stringify(output)} reason: ${reason}`)
1209
1210
  }
@@ -1216,7 +1217,7 @@ const defaultInnerProcess = (config, errorHandler, responses) => {
1216
1217
  }
1217
1218
 
1218
1219
  const pickedResultContexts = responses.contexts.map(pickContext(config.testConfig))
1219
- if (pickedResultContexts.some( (context) => Object.keys(context).length > 0 )) {
1220
+ if (pickedResultContexts.some((context) => Object.keys(context).length > 0)) {
1220
1221
  console.log('--- Contexts showing only the checked values ---')
1221
1222
  console.log(JSON.stringify(pickedResultContexts, null, 2))
1222
1223
  }
@@ -1255,7 +1256,7 @@ const defaultProcess = ({ config, errorHandler }) => async (promise) => {
1255
1256
  try {
1256
1257
  const responses = await promise
1257
1258
  defaultInnerProcess(config, errorHandler, responses)
1258
- } catch(error) {
1259
+ } catch (error) {
1259
1260
  error.config = config
1260
1261
  defaultErrorHandler(error)
1261
1262
  }
@@ -1268,7 +1269,7 @@ const rebuildTemplate = async ({ config, target, previousResultss, startOfChange
1268
1269
  fragments: [],
1269
1270
  semantics: [],
1270
1271
  associations: [],
1271
- learned_contextual_priorities: [],
1272
+ learned_contextual_priorities: []
1272
1273
  }
1273
1274
  const looper = async (queries) => {
1274
1275
  if (queries.length === 0) {
@@ -1278,7 +1279,7 @@ const rebuildTemplate = async ({ config, target, previousResultss, startOfChange
1278
1279
  const { property, hierarchy, query: queryOrExtraConfig, previousResults, initializer, skipSemantics } = queries.shift()
1279
1280
  // queries are strings or { query: "blah", development: true/false }
1280
1281
  if (typeof queryOrExtraConfig === 'string' || queryOrExtraConfig.query) {
1281
- let query = queryOrExtraConfig;
1282
+ let query = queryOrExtraConfig
1282
1283
  if (typeof queryOrExtraConfig === 'string') {
1283
1284
  query = { query }
1284
1285
  }
@@ -1288,7 +1289,7 @@ const rebuildTemplate = async ({ config, target, previousResultss, startOfChange
1288
1289
  global.transitoryMode = true
1289
1290
  }
1290
1291
  if (hierarchy) {
1291
- for (let edge of hierarchy) {
1292
+ for (const edge of hierarchy) {
1292
1293
  if (Array.isArray(edge)) {
1293
1294
  config.addHierarchy(edge[0], edge[1])
1294
1295
  } else {
@@ -1304,7 +1305,7 @@ const rebuildTemplate = async ({ config, target, previousResultss, startOfChange
1304
1305
  prMessage = ' Using previous results. use -rtf for a hard rebuild of everything on the server side.'
1305
1306
  loadInstance(config, { resultss: [results] })
1306
1307
  } else {
1307
- results = await _process(config, query.query, {initializer, rebuildingTemplate: true})
1308
+ results = await _process(config, query.query, { initializer, rebuildingTemplate: true })
1308
1309
  }
1309
1310
  if (config.config.debug) {
1310
1311
  // TODO pass in the error handler like the other ones
@@ -1328,12 +1329,12 @@ const rebuildTemplate = async ({ config, target, previousResultss, startOfChange
1328
1329
  accumulators.associations = accumulators.associations.concat(results.associations)
1329
1330
  accumulators.learned_contextual_priorities = accumulators.learned_contextual_priorities.concat(results.learned_contextual_priorities)
1330
1331
  await looper(queries)
1331
- } catch(e) {
1332
- const error = { errors: [e], query: query.query };
1332
+ } catch (e) {
1333
+ const error = { errors: [e], query: query.query }
1333
1334
  config.config.skipSemantics = null
1334
1335
  errorHandler(error)
1335
1336
  }
1336
- } else if (typeof queryOrExtraConfig == 'function') {
1337
+ } else if (typeof queryOrExtraConfig === 'function') {
1337
1338
  console.log('calling initialize function')
1338
1339
  const initFunction = queryOrExtraConfig
1339
1340
  const objects = config.get('objects')
@@ -1351,8 +1352,8 @@ const rebuildTemplate = async ({ config, target, previousResultss, startOfChange
1351
1352
  await looper([])
1352
1353
  } else {
1353
1354
  try {
1354
- config.addInternal(_.cloneDeep(extraConfig), { handleCalculatedProps: true } )
1355
- } catch ( e ) {
1355
+ config.addInternal(_.cloneDeep(extraConfig), { handleCalculatedProps: true })
1356
+ } catch (e) {
1356
1357
  const where = extraConfig.where ? ` ${extraConfig.where}` : ''
1357
1358
  throw new Error(`Error processing extra config${where}: ${e.stack}}`)
1358
1359
  }
@@ -1366,11 +1367,11 @@ const rebuildTemplate = async ({ config, target, previousResultss, startOfChange
1366
1367
  const instanceName = `${target}.instance.json`
1367
1368
  console.log(`Writing instance file ${instanceName}`)
1368
1369
  const stabilizeAssociations = (associations) => {
1369
- for (let association of associations) {
1370
+ for (const association of associations) {
1370
1371
  association.sort()
1371
1372
  }
1372
1373
  associations.sort()
1373
- };
1374
+ }
1374
1375
  const stabilizeOutput = (template) => {
1375
1376
  stabilizeAssociations(template.associations)
1376
1377
  const stabilize = (results) => {
@@ -1395,7 +1396,7 @@ const rebuildTemplate = async ({ config, target, previousResultss, startOfChange
1395
1396
  stabilize(template.resultss)
1396
1397
  stabilize(template.fragments)
1397
1398
  return template
1398
- };
1399
+ }
1399
1400
  stabilizeOutput(accumulators)
1400
1401
  runtime.fs.writeFileSync(instanceName, JSON.stringify(Object.assign({ queries: template.queries.map(updateQueries) }, accumulators), 0, 2))
1401
1402
 
@@ -1408,7 +1409,7 @@ const rebuildTemplate = async ({ config, target, previousResultss, startOfChange
1408
1409
  }
1409
1410
 
1410
1411
  const toProperties = (queryStringOrProperties) => {
1411
- if (typeof queryStringOrProperties == 'string') {
1412
+ if (typeof queryStringOrProperties === 'string') {
1412
1413
  return { query: queryStringOrProperties }
1413
1414
  } else {
1414
1415
  return queryStringOrProperties
@@ -1416,12 +1417,12 @@ const rebuildTemplate = async ({ config, target, previousResultss, startOfChange
1416
1417
  }
1417
1418
  let todo = []
1418
1419
  todo = todo.concat((template.initializers || []).map((query) => { return { initializer: true, property: 'resultss', query, skipSemantics: false || query.skipSemantics } }))
1419
- todo = todo.concat((template.queries || []).map((query, index) => {
1420
+ todo = todo.concat((template.queries || []).map((query, index) => {
1420
1421
  let pr
1421
1422
  if (index < startOfChanges) {
1422
- pr = previousResultss[index]
1423
+ pr = previousResultss[index]
1423
1424
  }
1424
- return { property: 'resultss', query, previousResults: pr, skipSemantics: false || query.skipSemantics}
1425
+ return { property: 'resultss', query, previousResults: pr, skipSemantics: false || query.skipSemantics }
1425
1426
  }))
1426
1427
  todo = todo.concat((template.fragments || []).map((query) => { return Object.assign({}, toProperties(query), { property: 'fragments', skipSemantics: false }) }))
1427
1428
  todo = todo.concat((template.semantics || []).map((definition) => { return { property: 'semantics', query: `${definition.from}\n${definition.to}`, skipSemantics: true } }))
@@ -1465,7 +1466,6 @@ const knowledgeModuleImpl = async ({
1465
1466
  stopAtFirstFailure = true,
1466
1467
  ...rest
1467
1468
  } = {}) => {
1468
-
1469
1469
  /*
1470
1470
  if (description == 'fastfood related concepts') {
1471
1471
  debugger
@@ -1511,8 +1511,8 @@ const knowledgeModuleImpl = async ({
1511
1511
  config.description = description
1512
1512
  if (typeof test === 'object') {
1513
1513
  if (test.contents) {
1514
- config.tests = test.contents
1515
- test = test.name
1514
+ config.tests = testConfig.contents
1515
+ test = testConfig.name
1516
1516
  }
1517
1517
  } else {
1518
1518
  if (runtime.fs && runtime.fs.existsSync(test)) {
@@ -1524,7 +1524,6 @@ const knowledgeModuleImpl = async ({
1524
1524
  config.setTestConfig(testConfig)
1525
1525
  }
1526
1526
 
1527
-
1528
1527
  if (isProcess) {
1529
1528
  const config = createConfig()
1530
1529
  setupConfig(config)
@@ -1541,7 +1540,6 @@ const knowledgeModuleImpl = async ({
1541
1540
  const helpDebugBridge = 'In order to get a debug break when a specific bridge is created set the DEBUG_BRIDGE environment variable to id/level to break on. For example DEBUG_BRIDGE=\'id#level\''
1542
1541
  const helpDebugOperator = 'In order to get a debug break when a specific hierarcy is created set the DEBUG_OPERATOR environment variable to debug any config loaded. For example DEBUG_OPERATOR=\'([operator] ([arg]))\''
1543
1542
 
1544
-
1545
1543
  parser.add_argument('-tmn', '--testModuleName', { help: 'When running tests instead of using the current modules tests use the specified modules tests' })
1546
1544
  parser.add_argument('-t', '--test', { action: 'store_true', help: 'Run the tests. Create tests by running with the --query + --save flag' })
1547
1545
  parser.add_argument('-tv', '--testVerbose', { action: 'store_true', help: 'Run the tests in verbose mode. Create tests by running with the --query or --loop with the --save flag' })
@@ -1556,7 +1554,7 @@ const knowledgeModuleImpl = async ({
1556
1554
  parser.add_argument('-i', '--info', { action: 'store_true', help: 'Print meta-data for the module' })
1557
1555
  parser.add_argument('-v', '--vimdiff', { action: 'store_true', help: 'For failures run vimdiff' })
1558
1556
  parser.add_argument('-g', '--greg', { action: 'store_true', help: 'Set the server to be localhost so I can debug stuff' })
1559
- parser.add_argument('-cl', '--checkForLoop', { nargs: "?", help: 'Check for loops in the priorities, Optional argument is list of operator keys to consider. For example [["banana", 0], ["food", 1]]' })
1557
+ parser.add_argument('-cl', '--checkForLoop', { nargs: '?', help: 'Check for loops in the priorities, Optional argument is list of operator keys to consider. For example [["banana", 0], ["food", 1]]' })
1560
1558
  parser.add_argument('-r', '--reset', { action: 'store_true', help: 'Get the server to bypass the cache and rebuild everything' })
1561
1559
  parser.add_argument('-q', '--query', { help: 'Run the specified query' })
1562
1560
  parser.add_argument('-ip ', '--server', { help: 'Server to run against' })
@@ -1568,7 +1566,7 @@ const knowledgeModuleImpl = async ({
1568
1566
  parser.add_argument('-p', '--print', { help: 'Print the specified elements c === config, w === words, b === bridges, o === operators d === objects (d for data), h === hierarchy, g === generators, s === semantics, l === load t=tests ordering p === priorities a == associations j == JSON sent to server. for example --print wb' })
1569
1567
  parser.add_argument('-s', '--save', { action: 'store_true', help: 'When running with the --query flag this will save the current run to the test file. When running without the --query flag all tests will be run and resaved.' })
1570
1568
  parser.add_argument('-sd', '--saveDeveloper', { action: 'store_true', help: 'Same as -s but the query will not show up in the info command.' })
1571
- parser.add_argument('-dl', '--debugLoops', { action: 'store_true', help: 'When running with the --debugLoops flag the logs calls to semantics and generators will be immediately written to the console '})
1569
+ parser.add_argument('-dl', '--debugLoops', { action: 'store_true', help: 'When running with the --debugLoops flag the logs calls to semantics and generators will be immediately written to the console ' })
1572
1570
  parser.add_argument('-d', '--debug', { action: 'store_true', help: 'When running with the --debug flag this set the debug flag in the config' })
1573
1571
  parser.add_argument('-da', '--debugAssociation', { action: 'store_true', help: helpDebugAssociation })
1574
1572
  parser.add_argument('-dh', '--debugHierarchy', { action: 'store_true', help: helpDebugHierarchy })
@@ -1576,8 +1574,8 @@ const knowledgeModuleImpl = async ({
1576
1574
  parser.add_argument('-dcp', '--debugContextualPriority', { action: 'store_true', help: helpDebugContextualPriority })
1577
1575
  parser.add_argument('-db', '--debugBridge', { action: 'store_true', help: helpDebugBridge })
1578
1576
  parser.add_argument('-do', '--debugOperator', { action: 'store_true', help: helpDebugOperator })
1579
- parser.add_argument('-ep', '--explainPriorities', { action: 'store_true', help: "The server will return all priorities including the generated one along with an explanation of there they came from"})
1580
- parser.add_argument('-dic', '--debugIncludeConvolutions', { nargs: "?", help: 'When running with the --debugIncludeConvolutions flag the logs will include convolutions which are somewhat annoyingly verbose. Default is false' })
1577
+ parser.add_argument('-ep', '--explainPriorities', { action: 'store_true', help: 'The server will return all priorities including the generated one along with an explanation of there they came from' })
1578
+ parser.add_argument('-dic', '--debugIncludeConvolutions', { nargs: '?', help: 'When running with the --debugIncludeConvolutions flag the logs will include convolutions which are somewhat annoyingly verbose. Default is false' })
1581
1579
 
1582
1580
  const args = parser.parse_args()
1583
1581
  args.count = args.count || 1
@@ -1608,9 +1606,9 @@ const knowledgeModuleImpl = async ({
1608
1606
  return true
1609
1607
  }
1610
1608
  if (!Array.isArray(args.checkForLoop) || args.checkForLoop.some((value) => !isKey(value))) {
1611
- throw new Error(`Error for the checkForLoop argument. Expected a JSON array of operator keys of the form "[<id>, <level>]"`)
1609
+ throw new Error('Error for the checkForLoop argument. Expected a JSON array of operator keys of the form "[<id>, <level>]"')
1612
1610
  }
1613
- } catch( e ) {
1611
+ } catch (e) {
1614
1612
  throw new Error(`Error parsing JSON of the checkForLoop argument. ${e}`)
1615
1613
  }
1616
1614
  } else {
@@ -1641,7 +1639,7 @@ const knowledgeModuleImpl = async ({
1641
1639
 
1642
1640
  if (args.clean) {
1643
1641
  const tests = JSON.parse(runtime.fs.readFileSync(testConfig.name))
1644
- for (let test of tests) {
1642
+ for (const test of tests) {
1645
1643
  delete test.associations
1646
1644
  }
1647
1645
  writeTestFile(testConfig.name, tests)
@@ -1651,7 +1649,7 @@ const knowledgeModuleImpl = async ({
1651
1649
 
1652
1650
  if (args.deleteTest) {
1653
1651
  let tests = JSON.parse(runtime.fs.readFileSync(testConfig.name))
1654
- tests = tests.filter( (test) => test.query !== args.deleteTest );
1652
+ tests = tests.filter((test) => test.query !== args.deleteTest)
1655
1653
  writeTestFile(testConfig.name, tests)
1656
1654
  console.log(`Remove the test for "${args.deleteTest}"`)
1657
1655
  return
@@ -1684,7 +1682,7 @@ const knowledgeModuleImpl = async ({
1684
1682
  config.config.explain_priorities = true
1685
1683
  }
1686
1684
 
1687
- config.config.debugIncludeConvolutions = args.debugIncludeConvolutions || process.argv.includes('--debugIncludeConvolutions') || process.argv.includes('-dic')
1685
+ config.config.debugIncludeConvolutions = args.debugIncludeConvolutions || process.argv.includes('--debugIncludeConvolutions') || process.argv.includes('-dic')
1688
1686
 
1689
1687
  let configPrinted = false
1690
1688
  const printConfig = () => {
@@ -1694,7 +1692,7 @@ const knowledgeModuleImpl = async ({
1694
1692
  configPrinted = true
1695
1693
  if (args.print) {
1696
1694
  if (args.print.includes('t')) {
1697
- console.log("Test queries")
1695
+ console.log('Test queries')
1698
1696
  let counter = 0
1699
1697
  for (const test of config.tests) {
1700
1698
  console.log(`${counter} - ${test.query}`)
@@ -1703,8 +1701,8 @@ const knowledgeModuleImpl = async ({
1703
1701
  }
1704
1702
  if (args.print.includes('c')) {
1705
1703
  const { data } = setupProcessB({ config })
1706
- console.log("Config as sent to server")
1707
- console.log(JSON.stringify(data, null, 2));
1704
+ console.log('Config as sent to server')
1705
+ console.log(JSON.stringify(data, null, 2))
1708
1706
  }
1709
1707
 
1710
1708
  if (args.print.includes('l')) {
@@ -1729,15 +1727,15 @@ const knowledgeModuleImpl = async ({
1729
1727
  }
1730
1728
  }
1731
1729
  if (args.print.includes('j')) {
1732
- const { data } = setupProcessB( { config } )
1730
+ const { data } = setupProcessB({ config })
1733
1731
  console.log(JSON.stringify(data, null, 2))
1734
1732
  }
1735
1733
  if (args.print.includes('a')) {
1736
1734
  console.log('associations ================')
1737
1735
  const properties = ['negative', 'positive']
1738
- for (let property of properties) {
1736
+ for (const property of properties) {
1739
1737
  console.log(` ${property} ===============`)
1740
- for (let association of config.config.associations[property]) {
1738
+ for (const association of config.config.associations[property]) {
1741
1739
  console.log(` ${JSON.stringify(association)}`)
1742
1740
  }
1743
1741
  }
@@ -1746,12 +1744,12 @@ const knowledgeModuleImpl = async ({
1746
1744
  console.log(JSON.stringify(config.config.objects, null, 2))
1747
1745
  }
1748
1746
  if (args.print.includes('p')) {
1749
- for (let priority of config.config.priorities) {
1747
+ for (const priority of config.config.priorities) {
1750
1748
  console.log(JSON.stringify(priority))
1751
1749
  }
1752
1750
  }
1753
1751
  if (args.print.includes('h')) {
1754
- for (let edge of config.config.hierarchy) {
1752
+ for (const edge of config.config.hierarchy) {
1755
1753
  console.log(JSON.stringify(edge))
1756
1754
  }
1757
1755
  }
@@ -1791,7 +1789,7 @@ const knowledgeModuleImpl = async ({
1791
1789
 
1792
1790
  if (needsRebuild.needsRebuild) {
1793
1791
  if (needsRebuild.previousResultss) {
1794
- console.log("Rebuild using the optimization to use previous results until a change is hit. For a full rebuild use -rtf")
1792
+ console.log('Rebuild using the optimization to use previous results until a change is hit. For a full rebuild use -rtf')
1795
1793
  }
1796
1794
  console.log(`This module "${config.name}" needs rebuilding all other arguments will be ignored. Try again after the template is rebuilt.`)
1797
1795
  options.rebuild = true
@@ -1799,7 +1797,7 @@ const knowledgeModuleImpl = async ({
1799
1797
  }
1800
1798
  try {
1801
1799
  config.load(template.template, template.instance, { rebuild: needsRebuild.needsRebuild || options.rebuild, previousResultss: needsRebuild.previousResultss, startOfChanges: needsRebuild.startOfChanges })
1802
- } catch( e ) {
1800
+ } catch (e) {
1803
1801
  console.error(`Error loading template for ${config.name}. ${e.error ? e.error : e}${e.stack ? e.stack : ''}`)
1804
1802
  runtime.process.exit(-1)
1805
1803
  }
@@ -1851,12 +1849,12 @@ const knowledgeModuleImpl = async ({
1851
1849
  hasError = true
1852
1850
  }
1853
1851
  if (!args.testNoParenthesized) {
1854
- if (JSON.stringify(result.expected.paraphrasesParenthesized) !== JSON.stringify(result.actual.paraphrasesParenthesized)) {
1855
- hasError = true
1856
- }
1857
- if (JSON.stringify(result.expected.generatedParenthesized) !== JSON.stringify(result.actual.generatedParenthesized)) {
1858
- hasError = true
1859
- }
1852
+ if (JSON.stringify(result.expected.paraphrasesParenthesized) !== JSON.stringify(result.actual.paraphrasesParenthesized)) {
1853
+ hasError = true
1854
+ }
1855
+ if (JSON.stringify(result.expected.generatedParenthesized) !== JSON.stringify(result.actual.generatedParenthesized)) {
1856
+ hasError = true
1857
+ }
1860
1858
  }
1861
1859
  if (JSON.stringify(result.expected.responses) !== JSON.stringify(result.actual.responses)) {
1862
1860
  hasError = true
@@ -2002,13 +2000,13 @@ const knowledgeModuleImpl = async ({
2002
2000
  .then(() => {
2003
2001
  f()
2004
2002
  })
2005
- .catch( (e) => {
2003
+ .catch((e) => {
2006
2004
  if (e.errno == 'ECONNREFUSED') {
2007
2005
  console.log(e)
2008
2006
  readline.close()
2009
2007
  } else {
2010
2008
  console.log(e)
2011
- f()
2009
+ f()
2012
2010
  }
2013
2011
  })
2014
2012
  })
@@ -2021,8 +2019,8 @@ const knowledgeModuleImpl = async ({
2021
2019
  }
2022
2020
  try {
2023
2021
  await processResults(_process(config, args.query, { commandLineArgs: args, dontAddAssociations: args.dontAddAssociations, writeTests: args.save || args.saveDeveloper, saveDeveloper: args.saveDeveloper, testConfig, testsFN: test }))
2024
- } catch( error ) {
2025
- console.log('Error', error);
2022
+ } catch (error) {
2023
+ console.log('Error', error)
2026
2024
  }
2027
2025
  }
2028
2026
  printConfig()
@@ -2044,14 +2042,14 @@ const knowledgeModuleImpl = async ({
2044
2042
  }
2045
2043
  // remove test only stuff
2046
2044
  if (!isProcess && !loadForTesting) {
2047
- config.config.operators = config.config.operators.filter( (operator) => {
2045
+ config.config.operators = config.config.operators.filter((operator) => {
2048
2046
  if (operator.development) {
2049
2047
  return false
2050
2048
  } else {
2051
2049
  return true
2052
2050
  }
2053
2051
  })
2054
- config.config.bridges = config.config.bridges.filter( (bridge) => {
2052
+ config.config.bridges = config.config.bridges.filter((bridge) => {
2055
2053
  if (bridge.development) {
2056
2054
  return false
2057
2055
  } else {
@@ -2063,7 +2061,7 @@ const knowledgeModuleImpl = async ({
2063
2061
  if (template) {
2064
2062
  try {
2065
2063
  config.load(template.template, template.instance)
2066
- } catch( e ) {
2064
+ } catch (e) {
2067
2065
  errorHandler(e)
2068
2066
  }
2069
2067
  }
@@ -2099,19 +2097,19 @@ const ensureTestFile = (module, name, type) => {
2099
2097
  }
2100
2098
  }
2101
2099
 
2102
- function where(goUp = 2) {
2103
- const e = new Error();
2100
+ function where (goUp = 2) {
2101
+ const e = new Error()
2104
2102
  const regexForm1 = /\((.*):(\d+):(\d+)\)$/
2105
2103
  const regexForm2 = /at (.*):(\d+):(\d+)$/
2106
- const lines = e.stack.split("\n")
2104
+ const lines = e.stack.split('\n')
2107
2105
  let line
2108
2106
  for (line of lines.slice(1)) {
2109
- if (!(line.includes("config.js:") || line.includes("client.js:"))) {
2110
- break;
2107
+ if (!(line.includes('config.js:') || line.includes('client.js:'))) {
2108
+ break
2111
2109
  }
2112
2110
  }
2113
2111
  // const line = e.stack.split("\n")[goUp];
2114
- const match = regexForm1.exec(line) || regexForm2.exec(line);
2112
+ const match = regexForm1.exec(line) || regexForm2.exec(line)
2115
2113
  if (match) {
2116
2114
  return `${match[1]}:${match[2]}`
2117
2115
  } else {
@@ -2119,7 +2117,7 @@ function where(goUp = 2) {
2119
2117
  }
2120
2118
  }
2121
2119
 
2122
- function w(func) {
2120
+ function w (func) {
2123
2121
  func.where = where(3)
2124
2122
  return func
2125
2123
  }
@@ -2151,4 +2149,3 @@ module.exports = {
2151
2149
  flattens,
2152
2150
  writeTest
2153
2151
  }
2154
-