tpmkms 7.12.4-beta.1 → 7.12.4-beta.3
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/common/animals.instance.json +44 -0
- package/common/crew.instance.json +384 -252
- package/common/dialogues.js +41 -0
- package/common/dialogues.test.json +780 -0
- package/common/edible.instance.json +1380 -0
- package/common/fastfood.instance.json +26857 -222
- package/common/fastfood.js +183 -10
- package/common/fastfood.test.json +44675 -2031
- package/common/help.test.json +26 -8
- package/common/helpers/concept.js +10 -1
- package/common/hierarchy.js +1 -1
- package/common/kirk.instance.json +16 -0
- package/common/length.instance.json +180 -0
- package/common/mathTemplate.instance.json +60 -0
- package/common/ordering.instance.json +52 -0
- package/common/people.instance.json +96 -0
- package/common/pokemon.instance.json +260 -0
- package/common/pressure.instance.json +32 -0
- package/common/reports.instance.json +17 -1
- package/common/scorekeeper.test.json +299 -124
- package/common/spock.instance.json +16 -0
- package/common/temperature.instance.json +92 -0
- package/common/ui.instance.json +8 -0
- package/common/weight.instance.json +252 -0
- package/package.json +2 -2
package/common/fastfood.js
CHANGED
@@ -30,6 +30,8 @@ const fastfood_instance = require('./fastfood.instance.json')
|
|
30
30
|
double hamburger
|
31
31
|
number 1 and 2
|
32
32
|
number 1 2 and 3
|
33
|
+
combo 1 through 5
|
34
|
+
|
33
35
|
*/
|
34
36
|
|
35
37
|
const template = {
|
@@ -348,6 +350,18 @@ const template = {
|
|
348
350
|
{
|
349
351
|
where: where(),
|
350
352
|
oneShot: false,
|
353
|
+
onNevermind: ({verbatim, ...args}) => {
|
354
|
+
// this is cross km boundaries from the dialogues km to this one so the api if for dialogs.
|
355
|
+
// i need to get the one for fastfood here.
|
356
|
+
const api = args.kms.fastfood.api
|
357
|
+
const needsDrink = askAbout({ args, api })
|
358
|
+
if (needsDrink.length > 1) {
|
359
|
+
verbatim("The drinks must be specified")
|
360
|
+
} else {
|
361
|
+
verbatim("The drink must be specified")
|
362
|
+
}
|
363
|
+
return false
|
364
|
+
},
|
351
365
|
matchq: (args) => askAbout(args).length > 0 && args.context.marker == 'controlEnd',
|
352
366
|
applyq: (args) => {
|
353
367
|
args.context.cascade = true
|
@@ -411,7 +425,7 @@ const template = {
|
|
411
425
|
const to = state.getIdCombo(context.to)
|
412
426
|
for (const item of api.items()) {
|
413
427
|
if (item.id == from.id) {
|
414
|
-
api.modify(item, { id: to.id })
|
428
|
+
api.modify(item, { id: to.id, food: context.to })
|
415
429
|
}
|
416
430
|
}
|
417
431
|
}
|
@@ -432,6 +446,35 @@ const template = {
|
|
432
446
|
{ context: [['combo', 2], ['list', 0], ['combo', 1], ['withModification', 1]], ordered: true, choose: [3] },
|
433
447
|
],
|
434
448
|
},
|
449
|
+
{
|
450
|
+
operators: [
|
451
|
+
"([remove|remove,delete,drop,ditch,forget,no] (food/*))",
|
452
|
+
"([reset|reset,restart,clear])",
|
453
|
+
],
|
454
|
+
bridges: [
|
455
|
+
{
|
456
|
+
id: 'remove',
|
457
|
+
isA: ['verby'],
|
458
|
+
bridge: "{ ...next(operator), remove: after[0], postModifiers: ['remove'] }",
|
459
|
+
semantic: ({context, api}) => {
|
460
|
+
const state = api.state
|
461
|
+
for (const item of api.items()) {
|
462
|
+
if (state.match(context.remove, item)) {
|
463
|
+
api.remove(item)
|
464
|
+
}
|
465
|
+
}
|
466
|
+
}
|
467
|
+
},
|
468
|
+
{
|
469
|
+
id: 'reset',
|
470
|
+
isA: ['verby'],
|
471
|
+
bridge: "{ ...next(operator) }",
|
472
|
+
semantic: ({context, api}) => {
|
473
|
+
api.reset()
|
474
|
+
}
|
475
|
+
},
|
476
|
+
],
|
477
|
+
},
|
435
478
|
],
|
436
479
|
}
|
437
480
|
|
@@ -441,28 +484,53 @@ class API {
|
|
441
484
|
this._objects.items = []
|
442
485
|
this._objects.notAvailable = []
|
443
486
|
this._objects.notAvailableModification = []
|
487
|
+
this._objects.item_id_counter = 0
|
444
488
|
}
|
445
489
|
|
446
490
|
show() {
|
447
491
|
this._objects.show = this._objects.items
|
448
492
|
}
|
449
493
|
|
494
|
+
toItem(item_id) {
|
495
|
+
if (Array.isArray(item_id)) {
|
496
|
+
return this._objects.items[item_id[0]].modifications[item_id[1]]
|
497
|
+
} else {
|
498
|
+
return this._objects.items[item_id]
|
499
|
+
}
|
500
|
+
}
|
501
|
+
|
502
|
+
new_item_id() {
|
503
|
+
const item_id = this._objects.item_id_counter
|
504
|
+
this._objects.item_id_counter += 1
|
505
|
+
return item_id
|
506
|
+
}
|
507
|
+
|
450
508
|
// returns an item id so things can be updated if needed
|
451
509
|
add(item) {
|
452
|
-
item.item_id = this.
|
510
|
+
item.item_id = this.new_item_id()
|
453
511
|
if (!item.modifications) {
|
454
512
|
item.modifications = []
|
455
513
|
}
|
514
|
+
item.modifications.forEach((modification, index) => {
|
515
|
+
modification.item_id = [item.item_id, index]
|
516
|
+
})
|
456
517
|
this._objects.items.push(item)
|
457
|
-
|
518
|
+
}
|
519
|
+
|
520
|
+
reset() {
|
521
|
+
this._objects.items = []
|
458
522
|
}
|
459
523
|
|
460
524
|
get(item_id) {
|
461
|
-
return this.
|
525
|
+
return this.toItem(item_id)
|
462
526
|
}
|
463
527
|
|
464
528
|
modify(item, changes) {
|
465
|
-
Object.assign(this.
|
529
|
+
Object.assign(this.toItem(item.item_id), changes)
|
530
|
+
}
|
531
|
+
|
532
|
+
remove(item) {
|
533
|
+
this._objects.items = this._objects.items.filter( (i) => i.item_id !== item.item_id )
|
466
534
|
}
|
467
535
|
|
468
536
|
items() {
|
@@ -470,8 +538,9 @@ class API {
|
|
470
538
|
}
|
471
539
|
|
472
540
|
addDrink(item_id, drink) {
|
473
|
-
this.
|
474
|
-
|
541
|
+
const item = this.toItem(item_id)
|
542
|
+
item.modifications.push(drink)
|
543
|
+
item.needsDrink = false
|
475
544
|
}
|
476
545
|
|
477
546
|
say(response) {
|
@@ -638,6 +707,27 @@ class API {
|
|
638
707
|
}
|
639
708
|
return map[number]
|
640
709
|
}
|
710
|
+
|
711
|
+
canBeCombo(id) {
|
712
|
+
return this.getComboNumber(id) > 0
|
713
|
+
}
|
714
|
+
|
715
|
+
getComboNumber(id) {
|
716
|
+
const combos = [
|
717
|
+
'single',
|
718
|
+
'double',
|
719
|
+
'triple',
|
720
|
+
'baconator',
|
721
|
+
'bacon_deluxe',
|
722
|
+
'spicy',
|
723
|
+
'homestyle',
|
724
|
+
'asiago_range_chicken_club',
|
725
|
+
'ultimate_chicken_grill',
|
726
|
+
'chicken_nugget',
|
727
|
+
'premium_cod',
|
728
|
+
]
|
729
|
+
return combos.findIndex((e) => e == id) + 1
|
730
|
+
}
|
641
731
|
}
|
642
732
|
|
643
733
|
const api = new API()
|
@@ -665,7 +755,7 @@ class State {
|
|
665
755
|
}
|
666
756
|
combo = true
|
667
757
|
} else if (food.marker == 'combo') {
|
668
|
-
id = food.type
|
758
|
+
id = food.type?.value
|
669
759
|
combo = true
|
670
760
|
} else {
|
671
761
|
id = food.value
|
@@ -679,6 +769,18 @@ class State {
|
|
679
769
|
return { id, combo }
|
680
770
|
}
|
681
771
|
|
772
|
+
match(pattern, item) {
|
773
|
+
Object.assign(pattern, this.getIdCombo(pattern))
|
774
|
+
if (pattern.id == item.id) {
|
775
|
+
return true
|
776
|
+
}
|
777
|
+
if (!pattern.id) {
|
778
|
+
if (pattern.combo == item.combo) {
|
779
|
+
return true
|
780
|
+
}
|
781
|
+
}
|
782
|
+
}
|
783
|
+
|
682
784
|
add(food) {
|
683
785
|
let quantity = 1
|
684
786
|
if (food.quantity) {
|
@@ -746,7 +848,66 @@ class State {
|
|
746
848
|
for (let i = 0; i < quantity; ++i) {
|
747
849
|
const item = addSize(food, { id, combo, modifications, pieces, food })
|
748
850
|
if (!this.api.isAvailable(item)) {
|
749
|
-
|
851
|
+
const available = []
|
852
|
+
for (const descendant of this.api.args.hierarchy.descendants(food.marker)) {
|
853
|
+
if (this.api.isAvailable({ id: descendant })) {
|
854
|
+
available.push(descendant)
|
855
|
+
}
|
856
|
+
}
|
857
|
+
|
858
|
+
// this sentence runs but it doesnt setup the hierarchy: 'combo 1, 2, 3, 4, 5, 6, 7, 9, 10, and 11 are combos'
|
859
|
+
// i made a wrong design choice when i setup the phrase 'combo 1 etc'. I should have mapped that to the 'single_combo'
|
860
|
+
// but instead had it be a combo with a comboNumber property. That means the language layer doesnt know about the mapping
|
861
|
+
// so that phrase doesnt work. if I set it up the other way that phrase would work. This is just a demo and I have other
|
862
|
+
// demoes to write so i am not fixin that and instead will do || is a combo
|
863
|
+
|
864
|
+
if (available.length > 0 || food.marker == 'combo') {
|
865
|
+
this.api.args.ask([
|
866
|
+
{
|
867
|
+
where: where(),
|
868
|
+
oneShot: true,
|
869
|
+
matchq: ({context}) => context.marker == 'controlEnd',
|
870
|
+
applyq: () => {
|
871
|
+
// args.context.cascade = true
|
872
|
+
const word = food.word
|
873
|
+
return `What kind of ${word}?`
|
874
|
+
},
|
875
|
+
semanticsr: [
|
876
|
+
// stuipid hack one because i didnt put combo fully into the NLI layer
|
877
|
+
{
|
878
|
+
where: where(),
|
879
|
+
match: ({context, callId, isA, api}) => {
|
880
|
+
return api.canBeCombo(context.marker)
|
881
|
+
},
|
882
|
+
apply: ({context}) => {
|
883
|
+
const comboNumber = {
|
884
|
+
value: api.getComboNumber(context.marker)
|
885
|
+
}
|
886
|
+
food.comboNumber = comboNumber
|
887
|
+
this.add(food)
|
888
|
+
}
|
889
|
+
},
|
890
|
+
{
|
891
|
+
where: where(),
|
892
|
+
match: ({context, isA}) => isA(context.marker, food.marker),
|
893
|
+
apply: ({context}) => {
|
894
|
+
this.add(Object.assign(food, context))
|
895
|
+
}
|
896
|
+
},
|
897
|
+
{
|
898
|
+
where: where(),
|
899
|
+
match: ({context, isA}) => isA(context.marker, `${food.marker}_modifier`),
|
900
|
+
apply: ({context}) => {
|
901
|
+
const value = `${context.value}_${food.value}`
|
902
|
+
this.add(Object.assign(food, { value }))
|
903
|
+
}
|
904
|
+
},
|
905
|
+
]
|
906
|
+
},
|
907
|
+
])
|
908
|
+
} else {
|
909
|
+
this.api.addAskedForButNotAvailable(food)
|
910
|
+
}
|
750
911
|
return
|
751
912
|
}
|
752
913
|
|
@@ -844,7 +1005,19 @@ knowledgeModule( {
|
|
844
1005
|
checks: {
|
845
1006
|
objects: [
|
846
1007
|
'show',
|
847
|
-
{
|
1008
|
+
{
|
1009
|
+
property: 'items',
|
1010
|
+
filter: [
|
1011
|
+
'combo',
|
1012
|
+
'pieces',
|
1013
|
+
'size',
|
1014
|
+
'item_id',
|
1015
|
+
'id',
|
1016
|
+
{ property: 'food', filter: [ 'marker', 'value', 'text' ] },
|
1017
|
+
{ property: 'modifications', filter: [ 'id', 'item_id', 'food' ] },
|
1018
|
+
'needsDrink'
|
1019
|
+
],
|
1020
|
+
},
|
848
1021
|
'changes',
|
849
1022
|
'response',
|
850
1023
|
{ property: 'notAvailable', filter: [ 'marker', 'value', 'text' ] },
|