theprogrammablemind 7.7.0-beta.1 → 7.7.0-beta.10
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 +21 -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.10",
|
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,7 @@ class Config {
|
|
1068
1070
|
startOfChanges = iq
|
1069
1071
|
}
|
1070
1072
|
}
|
1073
|
+
|
1071
1074
|
// things were deleted case
|
1072
1075
|
if (templateQueries.length < instanceQueries.length) {
|
1073
1076
|
startOfChanges = instanceQueries.length
|
@@ -1138,6 +1141,13 @@ class Config {
|
|
1138
1141
|
return !properties.find( (property) => instance[property] && instance[property].length > 0 )
|
1139
1142
|
}
|
1140
1143
|
if (!isEmpty(instance)) {
|
1144
|
+
// fix up apply functions
|
1145
|
+
for (let i = 0; i < instance.resultss.length; ++i) {
|
1146
|
+
const result = instance.resultss[i]
|
1147
|
+
if (result.apply) {
|
1148
|
+
result.apply = template.queries[i]
|
1149
|
+
}
|
1150
|
+
}
|
1141
1151
|
instance.name = this.name
|
1142
1152
|
this.initInstances.push(instance)
|
1143
1153
|
this.instances.push(instance)
|
@@ -2237,8 +2247,6 @@ class Config {
|
|
2237
2247
|
const addInternals = []
|
2238
2248
|
const inits = []
|
2239
2249
|
const initAfterApis = []
|
2240
|
-
const reverseIt = true
|
2241
|
-
const interleaved = true
|
2242
2250
|
this.configs.forEach((km) => {
|
2243
2251
|
const namespace = km.namespace
|
2244
2252
|
this.config.objects.namespaced[km._uuid] = {}
|
@@ -2304,58 +2312,30 @@ class Config {
|
|
2304
2312
|
inits.unshift( () => config._api.initialize({ config: this, km: kmFn, ...args, api: config._api }) )
|
2305
2313
|
// config._api.initialize({ config, api: config._api })
|
2306
2314
|
} else {
|
2307
|
-
|
2308
|
-
inits.unshift(null)
|
2309
|
-
}
|
2315
|
+
inits.unshift(null)
|
2310
2316
|
}
|
2311
2317
|
// config._api.objects = namespacedObjects
|
2312
2318
|
// config._api.config = () => this
|
2313
2319
|
// config._api.uuid = config._uuid
|
2314
2320
|
} else {
|
2315
|
-
|
2316
|
-
inits.unshift(null)
|
2317
|
-
}
|
2321
|
+
inits.unshift(null)
|
2318
2322
|
}
|
2319
2323
|
config.setUUIDs()
|
2320
2324
|
config.applyNamespace(config.config, namespace, config.uuid)
|
2321
2325
|
if (!isSelf) {
|
2322
|
-
|
2323
|
-
addInternals.push(config)
|
2324
|
-
} else {
|
2325
|
-
addInternals.unshift(config)
|
2326
|
-
}
|
2326
|
+
addInternals.unshift(config)
|
2327
2327
|
} else {
|
2328
|
-
|
2329
|
-
addInternals.unshift(null)
|
2330
|
-
}
|
2328
|
+
addInternals.unshift(null)
|
2331
2329
|
}
|
2332
2330
|
km.valid()
|
2333
2331
|
})
|
2334
2332
|
|
2335
2333
|
const generators = this.config.generators
|
2336
2334
|
const semantics = this.config.semantics
|
2337
|
-
|
2338
|
-
|
2339
|
-
this.config.semantics = []
|
2340
|
-
}
|
2335
|
+
this.config.generators = []
|
2336
|
+
this.config.semantics = []
|
2341
2337
|
|
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 {
|
2338
|
+
{
|
2359
2339
|
const base = {
|
2360
2340
|
operators: this.config.operators,
|
2361
2341
|
bridges: this.config.bridges,
|
@@ -2371,13 +2351,16 @@ class Config {
|
|
2371
2351
|
this.config.priorities = []
|
2372
2352
|
this.config.associations = { positive: [], negative: [] }
|
2373
2353
|
this.config.words = {}
|
2374
|
-
|
2354
|
+
|
2375
2355
|
for (let i = 0; i < addInternals.length; ++i) {
|
2376
2356
|
let name;
|
2377
2357
|
if (addInternals[i]) {
|
2378
2358
|
this.addInternalR(addInternals[i], true, false, false, true)
|
2379
2359
|
name = addInternals[i].name
|
2380
2360
|
} else{
|
2361
|
+
// the ones defined in config must come after the ones in the templates
|
2362
|
+
this.config.generators = generators.concat(this.config.generators)
|
2363
|
+
this.config.semantics = semantics.concat(this.config.semantics)
|
2381
2364
|
this.addInternalR(base, true, false, false, true)
|
2382
2365
|
name = this.name
|
2383
2366
|
}
|
@@ -2398,10 +2381,6 @@ class Config {
|
|
2398
2381
|
}
|
2399
2382
|
}
|
2400
2383
|
|
2401
|
-
if (reverseIt) {
|
2402
|
-
this.config.generators = generators.concat(this.config.generators)
|
2403
|
-
this.config.semantics = semantics.concat(this.config.semantics)
|
2404
|
-
}
|
2405
2384
|
this.hierarchy.edges = this.config.hierarchy
|
2406
2385
|
this.valid()
|
2407
2386
|
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)
|