theprogrammablemind 7.7.0-beta.1 → 7.7.0-beta.11
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 +45 -9
- package/package.json +2 -2
- package/src/config.js +26 -42
- package/src/helpers.js +2 -0
package/client.js
CHANGED
@@ -32,16 +32,26 @@ const pickObjects = (testConfig, objects) => {
|
|
32
32
|
|
33
33
|
const getAsk = (config) => (uuid) => (asks) => {
|
34
34
|
for (let ask of asks) {
|
35
|
+
let oneShot = true // default
|
36
|
+
if (ask.oneShot === false) {
|
37
|
+
oneShot = false
|
38
|
+
}
|
35
39
|
config.addSemantic({
|
36
40
|
uuid,
|
37
|
-
oneShot
|
41
|
+
oneShot,
|
38
42
|
match: (args) => ask.matchr(args),
|
39
43
|
apply: (args) => ask.applyr(args)
|
40
44
|
})
|
41
45
|
}
|
46
|
+
let oneShot = true
|
47
|
+
for (let ask of asks) {
|
48
|
+
if (ask.oneShot === false) {
|
49
|
+
oneShot = false
|
50
|
+
}
|
51
|
+
}
|
42
52
|
config.addSemantic({
|
43
53
|
uuid,
|
44
|
-
oneShot
|
54
|
+
oneShot,
|
45
55
|
match: ({context}) => context.marker == 'controlEnd' || context.marker == 'controlBetween',
|
46
56
|
apply: (args) => {
|
47
57
|
for (let ask of asks) {
|
@@ -64,7 +74,7 @@ const getAsk = (config) => (uuid) => (asks) => {
|
|
64
74
|
break
|
65
75
|
}
|
66
76
|
}
|
67
|
-
|
77
|
+
}
|
68
78
|
})
|
69
79
|
}
|
70
80
|
|
@@ -169,6 +179,7 @@ const setupArgs = (args, config, logs, hierarchy) => {
|
|
169
179
|
apis: getAPIs(uuid)
|
170
180
|
}
|
171
181
|
}
|
182
|
+
Object.assign(args, args.getUUIDScoped(this.uuid))
|
172
183
|
args.breakOnSemantics = false
|
173
184
|
args.theDebugger = {
|
174
185
|
breakOnSemantics: (value) => args.breakOnSemantics = value
|
@@ -621,6 +632,15 @@ const loadInstance = (config, instance) => {
|
|
621
632
|
// config.addInternal(results, useOldVersion = true, skipObjects = false, includeNamespaces = true, allowNameToBeNull = false)
|
622
633
|
// config.addInternal(config.template.queries[i], { handleCalculatedProps: true } )
|
623
634
|
config.addInternal(instance.template.queries[i], { addFirst: true, handleCalculatedProps: true } )
|
635
|
+
} else if (results.apply) {
|
636
|
+
const objects = config.get('objects')
|
637
|
+
const args = { objects, getObjects: getObjects(objects) }
|
638
|
+
if (instance.queries) {
|
639
|
+
args.isInstance = `instance${i}`
|
640
|
+
args.instance = instance.queries[i]
|
641
|
+
}
|
642
|
+
setupArgs(args, config, config.logs, hierarchy)
|
643
|
+
results.apply(args)
|
624
644
|
} else {
|
625
645
|
if (results.skipSemantics) {
|
626
646
|
config.config.skipSemantics = results.skipSemantics
|
@@ -1195,9 +1215,9 @@ const defaultInnerProcess = (config, errorHandler, responses) => {
|
|
1195
1215
|
}
|
1196
1216
|
|
1197
1217
|
if (responses.explain_priorities) {
|
1198
|
-
console.log("Explain Priorities
|
1199
|
-
for ([
|
1200
|
-
console.log(` ${JSON.stringify(
|
1218
|
+
console.log("Explain Priorities")
|
1219
|
+
for ([inputs, output, reason] of responses.explain_priorities) {
|
1220
|
+
console.log(` inputs: ${JSON.stringify(inputs)} output: ${JSON.stringify(output)} reason: ${reason}`)
|
1201
1221
|
}
|
1202
1222
|
}
|
1203
1223
|
const objects = config.get('objects').namespaced[config.uuid]
|
@@ -1325,6 +1345,15 @@ const rebuildTemplate = async ({ config, target, previousResultss, startOfChange
|
|
1325
1345
|
config.config.skipSemantics = null
|
1326
1346
|
errorHandler(error)
|
1327
1347
|
}
|
1348
|
+
} else if (typeof queryOrExtraConfig == 'function') {
|
1349
|
+
console.log('calling initialize function')
|
1350
|
+
const initFunction = queryOrExtraConfig
|
1351
|
+
const objects = config.get('objects')
|
1352
|
+
const args = { objects, getObjects: getObjects(objects) }
|
1353
|
+
setupArgs(args, config, config.logs, hierarchy)
|
1354
|
+
initFunction(args)
|
1355
|
+
accumulators[property].push({ apply: queryOrExtraConfig })
|
1356
|
+
await looper(queries)
|
1328
1357
|
} else {
|
1329
1358
|
// extra config is def from a time like operators or bridges or words etc
|
1330
1359
|
// it will just get added to the config
|
@@ -1357,8 +1386,11 @@ const rebuildTemplate = async ({ config, target, previousResultss, startOfChange
|
|
1357
1386
|
const stabilizeOutput = (template) => {
|
1358
1387
|
stabilizeAssociations(template.associations)
|
1359
1388
|
const stabilize = (results) => {
|
1360
|
-
for (let
|
1361
|
-
|
1389
|
+
for (let i = 0; i < results.length; ++i) {
|
1390
|
+
const result = results[i]
|
1391
|
+
if (result.apply) {
|
1392
|
+
result.apply = result.apply.toString()
|
1393
|
+
} else if (result.extraConfig) {
|
1362
1394
|
} else {
|
1363
1395
|
delete result.load_cache_time
|
1364
1396
|
delete result.times
|
@@ -1643,6 +1675,10 @@ const knowledgeModuleImpl = async ({
|
|
1643
1675
|
config.config.debug = true
|
1644
1676
|
}
|
1645
1677
|
|
1678
|
+
if (args.reset) {
|
1679
|
+
config.config.skip_cache = true
|
1680
|
+
}
|
1681
|
+
|
1646
1682
|
if (args.explainPriorities) {
|
1647
1683
|
config.config.explain_priorities = true
|
1648
1684
|
}
|
@@ -1763,7 +1799,7 @@ const knowledgeModuleImpl = async ({
|
|
1763
1799
|
try {
|
1764
1800
|
config.load(template.template, template.instance, { rebuild: needsRebuild.needsRebuild || options.rebuild, previousResultss: needsRebuild.previousResultss, startOfChanges: needsRebuild.startOfChanges })
|
1765
1801
|
} catch( e ) {
|
1766
|
-
console.error(`Error loading template for ${config.name}. ${e.error ? e.error : e}`)
|
1802
|
+
console.error(`Error loading template for ${config.name}. ${e.error ? e.error : e}${e.stack ? e.stack : ''}`)
|
1767
1803
|
runtime.process.exit(-1)
|
1768
1804
|
}
|
1769
1805
|
if (!args.query) {
|
package/package.json
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"devDependencies": {
|
3
3
|
"eslint-plugin-import": "^2.23.4",
|
4
|
-
"jest": "^
|
4
|
+
"jest": "^29.7.0",
|
5
5
|
"@typescript-eslint/parser": "^4.28.4",
|
6
6
|
"@typescript-eslint/eslint-plugin": "^4.28.4",
|
7
7
|
"eslint-plugin-node": "^11.1.0",
|
@@ -65,6 +65,6 @@
|
|
65
65
|
"json-stable-stringify": "^1.0.1",
|
66
66
|
"node-fetch": "^2.6.1"
|
67
67
|
},
|
68
|
-
"version": "7.7.0-beta.
|
68
|
+
"version": "7.7.0-beta.11",
|
69
69
|
"license": "ISC"
|
70
70
|
}
|
package/src/config.js
CHANGED
@@ -983,6 +983,8 @@ class Config {
|
|
983
983
|
if (typeof queryOrConfig == 'string') {
|
984
984
|
const query = queryOrConfig
|
985
985
|
return query
|
986
|
+
} else if (typeof queryOrConfig == 'function') {
|
987
|
+
return { apply: queryOrConfig.toString() }
|
986
988
|
} else {
|
987
989
|
const config = { ...queryOrConfig }
|
988
990
|
delete config.where
|
@@ -1068,6 +1070,12 @@ class Config {
|
|
1068
1070
|
startOfChanges = iq
|
1069
1071
|
}
|
1070
1072
|
}
|
1073
|
+
|
1074
|
+
if (startOfChanges) {
|
1075
|
+
console.log('templateQueries[startOfChanges]', templateQueries[startOfChanges]);
|
1076
|
+
console.log('instanceQueries[startOfChanges]', instanceQueries[startOfChanges]);
|
1077
|
+
}
|
1078
|
+
|
1071
1079
|
// things were deleted case
|
1072
1080
|
if (templateQueries.length < instanceQueries.length) {
|
1073
1081
|
startOfChanges = instanceQueries.length
|
@@ -1138,6 +1146,13 @@ class Config {
|
|
1138
1146
|
return !properties.find( (property) => instance[property] && instance[property].length > 0 )
|
1139
1147
|
}
|
1140
1148
|
if (!isEmpty(instance)) {
|
1149
|
+
// fix up apply functions
|
1150
|
+
for (let i = 0; i < instance.resultss.length; ++i) {
|
1151
|
+
const result = instance.resultss[i]
|
1152
|
+
if (result.apply) {
|
1153
|
+
result.apply = template.queries[i]
|
1154
|
+
}
|
1155
|
+
}
|
1141
1156
|
instance.name = this.name
|
1142
1157
|
this.initInstances.push(instance)
|
1143
1158
|
this.instances.push(instance)
|
@@ -2237,8 +2252,6 @@ class Config {
|
|
2237
2252
|
const addInternals = []
|
2238
2253
|
const inits = []
|
2239
2254
|
const initAfterApis = []
|
2240
|
-
const reverseIt = true
|
2241
|
-
const interleaved = true
|
2242
2255
|
this.configs.forEach((km) => {
|
2243
2256
|
const namespace = km.namespace
|
2244
2257
|
this.config.objects.namespaced[km._uuid] = {}
|
@@ -2304,58 +2317,30 @@ class Config {
|
|
2304
2317
|
inits.unshift( () => config._api.initialize({ config: this, km: kmFn, ...args, api: config._api }) )
|
2305
2318
|
// config._api.initialize({ config, api: config._api })
|
2306
2319
|
} else {
|
2307
|
-
|
2308
|
-
inits.unshift(null)
|
2309
|
-
}
|
2320
|
+
inits.unshift(null)
|
2310
2321
|
}
|
2311
2322
|
// config._api.objects = namespacedObjects
|
2312
2323
|
// config._api.config = () => this
|
2313
2324
|
// config._api.uuid = config._uuid
|
2314
2325
|
} else {
|
2315
|
-
|
2316
|
-
inits.unshift(null)
|
2317
|
-
}
|
2326
|
+
inits.unshift(null)
|
2318
2327
|
}
|
2319
2328
|
config.setUUIDs()
|
2320
2329
|
config.applyNamespace(config.config, namespace, config.uuid)
|
2321
2330
|
if (!isSelf) {
|
2322
|
-
|
2323
|
-
addInternals.push(config)
|
2324
|
-
} else {
|
2325
|
-
addInternals.unshift(config)
|
2326
|
-
}
|
2331
|
+
addInternals.unshift(config)
|
2327
2332
|
} else {
|
2328
|
-
|
2329
|
-
addInternals.unshift(null)
|
2330
|
-
}
|
2333
|
+
addInternals.unshift(null)
|
2331
2334
|
}
|
2332
2335
|
km.valid()
|
2333
2336
|
})
|
2334
2337
|
|
2335
2338
|
const generators = this.config.generators
|
2336
2339
|
const semantics = this.config.semantics
|
2337
|
-
|
2338
|
-
|
2339
|
-
this.config.semantics = []
|
2340
|
-
}
|
2340
|
+
this.config.generators = []
|
2341
|
+
this.config.semantics = []
|
2341
2342
|
|
2342
|
-
|
2343
|
-
for (const config of addInternals) {
|
2344
|
-
if (!reverseIt) {
|
2345
|
-
this.addInternal(config, { includeNamespace: false, allowNameToBeNull: true })
|
2346
|
-
} else {
|
2347
|
-
this.addInternalR(config, true, false, false, true)
|
2348
|
-
}
|
2349
|
-
}
|
2350
|
-
// console.log('inits from config', inits)
|
2351
|
-
for (const init of inits) {
|
2352
|
-
init()
|
2353
|
-
}
|
2354
|
-
for (let init of initAfterApis) {
|
2355
|
-
init.config.initializerFn({ ...init.args, kms: this.getConfigs(), isAfterApi: true })
|
2356
|
-
}
|
2357
|
-
this.instances.forEach((instance) => client.loadInstance(this, instance))
|
2358
|
-
} else {
|
2343
|
+
{
|
2359
2344
|
const base = {
|
2360
2345
|
operators: this.config.operators,
|
2361
2346
|
bridges: this.config.bridges,
|
@@ -2371,13 +2356,16 @@ class Config {
|
|
2371
2356
|
this.config.priorities = []
|
2372
2357
|
this.config.associations = { positive: [], negative: [] }
|
2373
2358
|
this.config.words = {}
|
2374
|
-
|
2359
|
+
|
2375
2360
|
for (let i = 0; i < addInternals.length; ++i) {
|
2376
2361
|
let name;
|
2377
2362
|
if (addInternals[i]) {
|
2378
2363
|
this.addInternalR(addInternals[i], true, false, false, true)
|
2379
2364
|
name = addInternals[i].name
|
2380
2365
|
} else{
|
2366
|
+
// the ones defined in config must come after the ones in the templates
|
2367
|
+
this.config.generators = generators.concat(this.config.generators)
|
2368
|
+
this.config.semantics = semantics.concat(this.config.semantics)
|
2381
2369
|
this.addInternalR(base, true, false, false, true)
|
2382
2370
|
name = this.name
|
2383
2371
|
}
|
@@ -2398,10 +2386,6 @@ class Config {
|
|
2398
2386
|
}
|
2399
2387
|
}
|
2400
2388
|
|
2401
|
-
if (reverseIt) {
|
2402
|
-
this.config.generators = generators.concat(this.config.generators)
|
2403
|
-
this.config.semantics = semantics.concat(this.config.semantics)
|
2404
|
-
}
|
2405
2389
|
this.hierarchy.edges = this.config.hierarchy
|
2406
2390
|
this.valid()
|
2407
2391
|
this.checkBridges()
|
package/src/helpers.js
CHANGED
@@ -272,6 +272,8 @@ const mapInPlace = (list, fn) => {
|
|
272
272
|
const updateQueries = (queryOrConfig) => {
|
273
273
|
if (typeof queryOrConfig == 'string' || queryOrConfig.query) {
|
274
274
|
return queryOrConfig
|
275
|
+
} else if (typeof queryOrConfig == 'function') {
|
276
|
+
return { apply: queryOrConfig.toString() }
|
275
277
|
} else {
|
276
278
|
const config = queryOrConfig
|
277
279
|
return functionsToStrings(config)
|