theprogrammablemind 7.6.0-beta.9 → 7.7.0-beta.0
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 +32 -18
- package/package.json +1 -1
- package/src/config.js +1 -1
- package/src/generators.js +1 -1
- package/src/helpers.js +41 -1
- package/src/project.js +3 -0
package/client.js
CHANGED
@@ -1182,7 +1182,7 @@ const defaultInnerProcess = (config, errorHandler, responses) => {
|
|
1182
1182
|
}
|
1183
1183
|
|
1184
1184
|
if (responses.explain_priorities) {
|
1185
|
-
console.log("Explain Priorities")
|
1185
|
+
console.log("Explain Priorities (listed from lower priority to higher priority)")
|
1186
1186
|
for ([inputss, outpus, reason] of responses.explain_priorities) {
|
1187
1187
|
console.log(` ${JSON.stringify(inputss)} reason: ${reason}`)
|
1188
1188
|
}
|
@@ -1283,6 +1283,7 @@ const rebuildTemplate = async ({ config, target, template, errorHandler = defaul
|
|
1283
1283
|
}
|
1284
1284
|
if (results.contexts.length > 1) {
|
1285
1285
|
console.log(`query "${query.query}". There is ${results.contexts.length} contexts in the results. Make sure its producing the results that you expect.`)
|
1286
|
+
throw new Error(`query "${query.query}". There is ${results.contexts.length} contexts in the results. Make sure its producing the results that you expect.`)
|
1286
1287
|
} else if (results.paraphrases[0] != query.query) {
|
1287
1288
|
console.log(`query "${query.query}". The paraphrase is different from the query "${results.paraphrases[0]}".`)
|
1288
1289
|
} else {
|
@@ -1308,14 +1309,18 @@ const rebuildTemplate = async ({ config, target, template, errorHandler = defaul
|
|
1308
1309
|
// it will just get added to the config
|
1309
1310
|
const extraConfig = queryOrExtraConfig
|
1310
1311
|
console.log('config', extraConfig)
|
1311
|
-
|
1312
|
-
|
1313
|
-
}
|
1314
|
-
|
1315
|
-
|
1312
|
+
if (extraConfig.stop) {
|
1313
|
+
await looper([])
|
1314
|
+
} else {
|
1315
|
+
try {
|
1316
|
+
config.addInternal(_.cloneDeep(extraConfig), { handleCalculatedProps: true } )
|
1317
|
+
} catch ( e ) {
|
1318
|
+
const where = extraConfig.where ? ` ${extraConfig.where}` : ''
|
1319
|
+
throw new Error(`Error processing extra config${where}: ${e.stack}}`)
|
1320
|
+
}
|
1321
|
+
accumulators[property].push({ extraConfig: true, ...extraConfig })
|
1322
|
+
await looper(queries)
|
1316
1323
|
}
|
1317
|
-
accumulators[property].push({ extraConfig: true, ...extraConfig })
|
1318
|
-
await looper(queries)
|
1319
1324
|
}
|
1320
1325
|
}
|
1321
1326
|
|
@@ -1398,7 +1403,7 @@ const checkTest = (testConfig) => {
|
|
1398
1403
|
}
|
1399
1404
|
}
|
1400
1405
|
|
1401
|
-
const
|
1406
|
+
const knowledgeModuleImpl = async ({
|
1402
1407
|
module: moduleFromJSFile,
|
1403
1408
|
description,
|
1404
1409
|
section,
|
@@ -1712,7 +1717,13 @@ const knowledgeModule = async ({
|
|
1712
1717
|
options.rebuild = true
|
1713
1718
|
config.config.rebuild = true
|
1714
1719
|
}
|
1715
|
-
|
1720
|
+
try {
|
1721
|
+
config.load(template.template, template.instance, { rebuild: needsRebuild })
|
1722
|
+
} catch( e ) {
|
1723
|
+
debugger
|
1724
|
+
console.error(`Error loading template for ${config.name}. ${e.error ? e.error : e}`)
|
1725
|
+
runtime.process.exit(-1)
|
1726
|
+
}
|
1716
1727
|
if (!args.query) {
|
1717
1728
|
printConfig()
|
1718
1729
|
}
|
@@ -1792,14 +1803,14 @@ const knowledgeModule = async ({
|
|
1792
1803
|
console.log(` actual ${label} `, actual)
|
1793
1804
|
newError = true
|
1794
1805
|
headerShown = true
|
1806
|
+
if (args.vimdiff) {
|
1807
|
+
vimdiff(result.actual.paraphrasesParenthesized, result.expected.paraphrasesParenthesized)
|
1808
|
+
}
|
1795
1809
|
}
|
1796
1810
|
}
|
1797
1811
|
show('paraphrases', result.expected.paraphrases, result.actual.paraphrases)
|
1798
1812
|
if (!args.testNoParenthesized) {
|
1799
1813
|
show('paraphrases parenthesized', result.expected.paraphrasesParenthesized, result.actual.paraphrasesParenthesized)
|
1800
|
-
if (args.vimdiff) {
|
1801
|
-
vimdiff(result.actual.paraphrasesParenthesized, result.expected.paraphrasesParenthesized)
|
1802
|
-
}
|
1803
1814
|
}
|
1804
1815
|
/*
|
1805
1816
|
}
|
@@ -1832,10 +1843,10 @@ const knowledgeModule = async ({
|
|
1832
1843
|
}
|
1833
1844
|
const widths = [4, 18, 72]
|
1834
1845
|
const lines = new Lines(widths)
|
1835
|
-
lines.setElement(1, 1, 'expected checked')
|
1846
|
+
lines.setElement(1, 1, 'expected checked objects')
|
1836
1847
|
lines.setElement(2, 2, JSON.stringify(result.expected.checked, null, 2))
|
1837
1848
|
lines.log()
|
1838
|
-
lines.setElement(1, 1, 'actual checked')
|
1849
|
+
lines.setElement(1, 1, 'actual checked objects')
|
1839
1850
|
lines.setElement(2, 2, JSON.stringify(result.actual.checked, null, 2))
|
1840
1851
|
lines.log()
|
1841
1852
|
if (args.vimdiff) {
|
@@ -1850,10 +1861,10 @@ const knowledgeModule = async ({
|
|
1850
1861
|
}
|
1851
1862
|
const widths = [4, 18, 72]
|
1852
1863
|
const lines = new Lines(widths)
|
1853
|
-
lines.setElement(1, 1, 'expected
|
1864
|
+
lines.setElement(1, 1, 'expected checked contexts', true)
|
1854
1865
|
lines.setElement(2, 2, JSON.stringify(result.expected.checkedContexts, null, 2))
|
1855
1866
|
lines.log()
|
1856
|
-
lines.setElement(1, 1, 'actual
|
1867
|
+
lines.setElement(1, 1, 'actual checked contexts', true)
|
1857
1868
|
lines.setElement(2, 2, JSON.stringify(result.actual.checkedContexts, null, 2))
|
1858
1869
|
lines.log()
|
1859
1870
|
if (args.vimdiff) {
|
@@ -1985,7 +1996,6 @@ const knowledgeModule = async ({
|
|
1985
1996
|
}
|
1986
1997
|
moduleFromJSFile.exports = createConfigExport
|
1987
1998
|
}
|
1988
|
-
|
1989
1999
|
}
|
1990
2000
|
|
1991
2001
|
/*
|
@@ -2033,6 +2043,10 @@ function w(func) {
|
|
2033
2043
|
return func
|
2034
2044
|
}
|
2035
2045
|
|
2046
|
+
const knowledgeModule = async (...args) => {
|
2047
|
+
await knowledgeModuleImpl(...args).catch((e) => console.error(e))
|
2048
|
+
}
|
2049
|
+
|
2036
2050
|
module.exports = {
|
2037
2051
|
process: _process,
|
2038
2052
|
where,
|
package/package.json
CHANGED
package/src/config.js
CHANGED
@@ -27,7 +27,7 @@ const config_toServer = (config) => {
|
|
27
27
|
|
28
28
|
const debugPriority = (priority) => {
|
29
29
|
if (global.entodictonDebugPriority) {
|
30
|
-
if (helpers.
|
30
|
+
if (helpers.subPriority(entodictonDebugPriority, priority)) {
|
31
31
|
debugger; // debug hierarchy hit
|
32
32
|
}
|
33
33
|
}
|
package/src/generators.js
CHANGED
@@ -169,7 +169,7 @@ class Generators {
|
|
169
169
|
// assumed - properties added to context before the generators are called. For setting paraphrase property
|
170
170
|
apply (args, context, assumed = {}, options = {}) {
|
171
171
|
if (Array.isArray(context)) {
|
172
|
-
|
172
|
+
throw new Error("Expected a context not an array")
|
173
173
|
}
|
174
174
|
if (typeof context !== 'object') {
|
175
175
|
return String(context)
|
package/src/helpers.js
CHANGED
@@ -334,6 +334,45 @@ const ecatch = (where, call) => {
|
|
334
334
|
}
|
335
335
|
}
|
336
336
|
|
337
|
+
const equalKey = (key1, key2) => {
|
338
|
+
return key1[0] == key2[0] && key1[1] == key2[1]
|
339
|
+
}
|
340
|
+
|
341
|
+
// matches for { context: ..., [ordered], choose: ... } exactely OR
|
342
|
+
// [ <id1>, <id2> ] - where id1 is chosen
|
343
|
+
const subPriority = (sub, sup) => {
|
344
|
+
if (Array.isArray(sub)) {
|
345
|
+
const subChoosen = sub[0]
|
346
|
+
const subOther = sub[1]
|
347
|
+
const hasChoosen = sup.choose.find( (index) => equalKey(sup.context[index], subChoosen)) != undefined
|
348
|
+
const hasOtherChosen = sup.choose.find( (index) => equalKey(sup.context[index], subOther)) != undefined
|
349
|
+
const hasOther = sup.context.find( (other) => equalKey(other, subOther) ) !== undefined
|
350
|
+
return !!(hasChoosen && hasOther) && !hasOtherChosen
|
351
|
+
}
|
352
|
+
|
353
|
+
if (!safeEquals([...sub.choose].sort(), [...sup.choose].sort())) {
|
354
|
+
return false
|
355
|
+
}
|
356
|
+
|
357
|
+
const choose = (priority) => {
|
358
|
+
const chosen = []
|
359
|
+
for (const i of priority.choose) {
|
360
|
+
chosen.push(priority.context[i])
|
361
|
+
}
|
362
|
+
return chosen
|
363
|
+
}
|
364
|
+
const chosen1 = choose(sub)
|
365
|
+
const chosen2 = choose(sup)
|
366
|
+
const sameId = (id1, id2) => id1[0] == id2[0] && id1[1] == id2[1]
|
367
|
+
// same length so only need one way
|
368
|
+
const missing1 = chosen1.find( (id1) => !chosen2.find( (id2) => sameId(id1, id2)) )
|
369
|
+
if (missing1) {
|
370
|
+
return false
|
371
|
+
}
|
372
|
+
|
373
|
+
return true
|
374
|
+
}
|
375
|
+
|
337
376
|
module.exports = {
|
338
377
|
ecatch,
|
339
378
|
functionsToStrings,
|
@@ -354,5 +393,6 @@ module.exports = {
|
|
354
393
|
isCompound,
|
355
394
|
InitCalls,
|
356
395
|
hashCode,
|
357
|
-
sortJson
|
396
|
+
sortJson,
|
397
|
+
subPriority,
|
358
398
|
}
|
package/src/project.js
CHANGED
@@ -16,6 +16,9 @@ const project = (object, filter) => {
|
|
16
16
|
return object.map( element => project(element, filter) )
|
17
17
|
} else {
|
18
18
|
for (let properties of filter) {
|
19
|
+
if (typeof properties == 'function') {
|
20
|
+
properties = properties(object)
|
21
|
+
}
|
19
22
|
if (typeof properties == 'object') {
|
20
23
|
if (properties.propertyLists) {
|
21
24
|
for (const propertyList in properties.propertyLists) {
|