theprogrammablemind 7.4.1-beta.2 → 7.4.1-beta.4
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 +50 -9
- package/package.json +1 -1
- package/src/config.js +46 -7
package/client.js
CHANGED
@@ -470,13 +470,22 @@ const doWithRetries = async (n, url, queryParams, data) => {
|
|
470
470
|
}
|
471
471
|
}
|
472
472
|
|
473
|
-
const setupProcessB = ({ config }) => {
|
473
|
+
const setupProcessB = ({ config, allowDelta=false } = {}) => {
|
474
474
|
const key = config._key
|
475
475
|
|
476
|
-
const data = Object.assign({ key, version: '3' },
|
477
|
-
|
478
|
-
|
479
|
-
data.
|
476
|
+
const data = Object.assign({ key, version: '3' }, { uuid: config._uuid })
|
477
|
+
if (allowDelta && config.allowDelta && config.hasDelta()) {
|
478
|
+
// console.log('config', config)
|
479
|
+
data.delta = config.delta()
|
480
|
+
} else {
|
481
|
+
Object.assign(data, config.config)
|
482
|
+
}
|
483
|
+
|
484
|
+
if (data.namespaces) {
|
485
|
+
for (const uuid of Object.keys(data.namespaces)) {
|
486
|
+
const km = config.configs.find((km) => km.uuid === uuid)
|
487
|
+
data.namespaces[uuid].name = km.name
|
488
|
+
}
|
480
489
|
}
|
481
490
|
|
482
491
|
// const generators = new Generators((data.generators || []).map((g) => new Generator(normalizeGenerator(g))))
|
@@ -529,7 +538,7 @@ const _process = async (config, query, { credentials, writeTests, isTest, saveDe
|
|
529
538
|
throw error
|
530
539
|
}
|
531
540
|
|
532
|
-
|
541
|
+
let { data, /* generators, semantics, */ hierarchy } = setupProcessB({ config, allowDelta: true })
|
533
542
|
let queries = query.split('\\n')
|
534
543
|
|
535
544
|
try {
|
@@ -553,8 +562,28 @@ const _process = async (config, query, { credentials, writeTests, isTest, saveDe
|
|
553
562
|
if (queries.length === 0) {
|
554
563
|
break;
|
555
564
|
}
|
565
|
+
|
556
566
|
data.utterance = queries[0]
|
557
|
-
|
567
|
+
let json = await doWithRetries(retries, url, queryParams, data)
|
568
|
+
let resetData = false
|
569
|
+
if (json.code == 'NOT_IN_CACHE') {
|
570
|
+
resetData = true
|
571
|
+
const setupB = setupProcessB({ config, allowDelta: false })
|
572
|
+
data = setupB.data
|
573
|
+
hierarchy = setupB.hierarchy
|
574
|
+
data.utterance = queries[0]
|
575
|
+
json = await doWithRetries(retries, url, queryParams, data)
|
576
|
+
}
|
577
|
+
if (json.cacheKey) {
|
578
|
+
config.cacheKey = json.cacheKey
|
579
|
+
if (resetData) {
|
580
|
+
if (queries.length > 1) {
|
581
|
+
const setupB = setupProcessB({ config, allowDelta: true })
|
582
|
+
data = setupB.data
|
583
|
+
hierarchy = setupB.hierarchy
|
584
|
+
}
|
585
|
+
}
|
586
|
+
}
|
558
587
|
json.contexts = json.results
|
559
588
|
delete json.results
|
560
589
|
if (json.status !== 200) {
|
@@ -1329,7 +1358,7 @@ const knowledgeModule = async ({
|
|
1329
1358
|
}
|
1330
1359
|
}
|
1331
1360
|
if (args.print.includes('c')) {
|
1332
|
-
const { data
|
1361
|
+
const { data } = setupProcessB({ config })
|
1333
1362
|
console.log("Config as sent to server")
|
1334
1363
|
console.log(JSON.stringify(data, null, 2));
|
1335
1364
|
}
|
@@ -1488,7 +1517,19 @@ const knowledgeModule = async ({
|
|
1488
1517
|
if (!('then' in promise)) {
|
1489
1518
|
throw 'Return a promise from process in the definition of knowledgeModule'
|
1490
1519
|
}
|
1491
|
-
promise
|
1520
|
+
promise
|
1521
|
+
.then(() => {
|
1522
|
+
f()
|
1523
|
+
})
|
1524
|
+
.catch( (e) => {
|
1525
|
+
if (e.errno == 'ECONNREFUSED') {
|
1526
|
+
console.log(e)
|
1527
|
+
readline.close()
|
1528
|
+
} else {
|
1529
|
+
console.log(e)
|
1530
|
+
f()
|
1531
|
+
}
|
1532
|
+
})
|
1492
1533
|
})
|
1493
1534
|
f()
|
1494
1535
|
} else if (args.query) {
|
package/package.json
CHANGED
package/src/config.js
CHANGED
@@ -572,6 +572,7 @@ class Config {
|
|
572
572
|
}
|
573
573
|
}
|
574
574
|
this.config.associations.positive.push(association)
|
575
|
+
this._delta.json.associations.push({ action: 'add', association })
|
575
576
|
}
|
576
577
|
|
577
578
|
// TODO add more error checking to these like addHierarchy has
|
@@ -580,6 +581,7 @@ class Config {
|
|
580
581
|
this.config.priorities = []
|
581
582
|
}
|
582
583
|
this.config.priorities.push(priorities)
|
584
|
+
this._delta.json.priorities.push({ action: 'add', priorities })
|
583
585
|
}
|
584
586
|
|
585
587
|
addHierarchy (child, parent) {
|
@@ -603,6 +605,7 @@ class Config {
|
|
603
605
|
}
|
604
606
|
// this.config.hierarchy.push([properties.child, properties.parent])
|
605
607
|
this.config.hierarchy.push(properties)
|
608
|
+
this._delta.json.hierarchy.push([child, parent])
|
606
609
|
}
|
607
610
|
|
608
611
|
addHierarchyChildParent (child, parent) {
|
@@ -630,6 +633,7 @@ class Config {
|
|
630
633
|
}
|
631
634
|
|
632
635
|
this.config.hierarchy.push([child, parent])
|
636
|
+
this._delta.json.hierarchy.push([child, parent])
|
633
637
|
}
|
634
638
|
|
635
639
|
getBridge (id, level) {
|
@@ -659,6 +663,7 @@ class Config {
|
|
659
663
|
}
|
660
664
|
bridges.push(def)
|
661
665
|
this.checkBridges();
|
666
|
+
this._delta.json.bridges.push({ action: 'add', bridge: def })
|
662
667
|
}
|
663
668
|
|
664
669
|
addGenerator (match, apply) {
|
@@ -735,17 +740,19 @@ class Config {
|
|
735
740
|
|
736
741
|
operators.unshift(operator)
|
737
742
|
this.checkOperators()
|
743
|
+
|
744
|
+
this._delta.json.operators.push({ action: 'add', operator })
|
738
745
|
}
|
739
746
|
|
740
747
|
addWord (word, def) {
|
741
|
-
this.addWordInternal(
|
748
|
+
this.addWordInternal(word, def)
|
742
749
|
}
|
743
750
|
|
744
|
-
addWordInternal (
|
745
|
-
if (!config.words) {
|
746
|
-
config.words = {}
|
751
|
+
addWordInternal (word, def) {
|
752
|
+
if (!this.config.words) {
|
753
|
+
this.config.words = {}
|
747
754
|
}
|
748
|
-
const words = config.words
|
755
|
+
const words = this.config.words
|
749
756
|
def = Object.assign({}, def, { uuid: this._uuid })
|
750
757
|
if (words[word]) {
|
751
758
|
if (!words[word].some((e) => helpers.safeEquals(e, def))) {
|
@@ -754,6 +761,8 @@ class Config {
|
|
754
761
|
} else {
|
755
762
|
words[word] = [def]
|
756
763
|
}
|
764
|
+
|
765
|
+
this._delta.json.words.push({ action: 'add', word, def })
|
757
766
|
}
|
758
767
|
|
759
768
|
getAPI (uuid) {
|
@@ -970,6 +979,9 @@ class Config {
|
|
970
979
|
throw 'Excepted the config argument to be a hash not a Config object'
|
971
980
|
}
|
972
981
|
|
982
|
+
this.allowDelta = false
|
983
|
+
this.resetDelta()
|
984
|
+
|
973
985
|
this.addedArgss = []
|
974
986
|
let isProcess = require.main === module
|
975
987
|
if (global.theprogrammablemind && config) {
|
@@ -1072,11 +1084,11 @@ class Config {
|
|
1072
1084
|
if (bridge.words) {
|
1073
1085
|
for (let def of bridge.words) {
|
1074
1086
|
if (typeof def == 'string') {
|
1075
|
-
this.addWordInternal(
|
1087
|
+
this.addWordInternal(def, {"id": bridge.id, "initial": "{}" })
|
1076
1088
|
} else {
|
1077
1089
|
const word = def.word
|
1078
1090
|
def = { initial: JSON.stringify(def), id: bridge.id, word: undefined }
|
1079
|
-
this.addWordInternal(
|
1091
|
+
this.addWordInternal(word, def)
|
1080
1092
|
}
|
1081
1093
|
}
|
1082
1094
|
}
|
@@ -1174,6 +1186,32 @@ class Config {
|
|
1174
1186
|
}
|
1175
1187
|
}
|
1176
1188
|
|
1189
|
+
hasDelta () {
|
1190
|
+
return this._delta.json
|
1191
|
+
}
|
1192
|
+
|
1193
|
+
delta () {
|
1194
|
+
return { cacheKey: this._delta.cacheKey, json: this._delta.json }
|
1195
|
+
}
|
1196
|
+
|
1197
|
+
resetDelta (cacheKey) {
|
1198
|
+
this._delta = {
|
1199
|
+
cacheKey,
|
1200
|
+
json: {
|
1201
|
+
words: [],
|
1202
|
+
operators: [],
|
1203
|
+
bridges: [],
|
1204
|
+
associations: [],
|
1205
|
+
priorities: [],
|
1206
|
+
hierarchy: [],
|
1207
|
+
}
|
1208
|
+
}
|
1209
|
+
}
|
1210
|
+
|
1211
|
+
set cacheKey (cacheKey) {
|
1212
|
+
this.resetDelta(cacheKey)
|
1213
|
+
}
|
1214
|
+
|
1177
1215
|
get api () {
|
1178
1216
|
if (this._api && this._api.multiApi) {
|
1179
1217
|
return this._api.api(this._api)
|
@@ -1646,6 +1684,7 @@ class Config {
|
|
1646
1684
|
|
1647
1685
|
// rebuild ({ isModule: mainIsModule = false } = {}) {
|
1648
1686
|
rebuild ({ isModule: mainIsModule } = {}) {
|
1687
|
+
this.resetDelta()
|
1649
1688
|
const debug = this.config.debug;
|
1650
1689
|
this.config = _.cloneDeep(this.initConfig)
|
1651
1690
|
if (debug) {
|