tpmkms_4wp 9.3.0-beta.5 → 9.3.0-beta.51

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.
Files changed (58) hide show
  1. package/common/animals.instance.json +0 -65
  2. package/common/asking.js +16 -2
  3. package/common/colors.instance.json +28 -70
  4. package/common/comparable.instance.json +0 -15
  5. package/common/concept.test.json +279 -193
  6. package/common/crew.instance.json +0 -166
  7. package/common/dateTimeSelectors.instance.json +151 -0
  8. package/common/dateTimeSelectors.js +171 -0
  9. package/common/dateTimeSelectors.test.json +85622 -0
  10. package/common/dates.instance.json +285 -479
  11. package/common/dates.js +111 -10
  12. package/common/dates.test.json +11021 -514
  13. package/common/dialogues.js +8 -46
  14. package/common/dimension.instance.json +0 -5
  15. package/common/edible.instance.json +56 -160
  16. package/common/emotions.instance.json +0 -5
  17. package/common/evaluate.js +1 -1
  18. package/common/events.js +1 -1
  19. package/common/fastfood.instance.json +149 -880
  20. package/common/fastfood.test.json +16291 -6597
  21. package/common/formulas.instance.json +0 -5
  22. package/common/helpers/dateTimeSelectors.js +198 -0
  23. package/common/helpers/dialogues.js +11 -8
  24. package/common/helpers/properties.js +2 -2
  25. package/common/helpers.js +57 -32
  26. package/common/hierarchy.js +9 -9
  27. package/common/kirk.instance.json +0 -5
  28. package/common/length.instance.json +0 -75
  29. package/common/math.instance.json +0 -5
  30. package/common/menus.instance.json +0 -35
  31. package/common/meta.js +2 -2
  32. package/common/numbers.js +1 -1
  33. package/common/numbers.test.json +89 -23
  34. package/common/ordering.instance.json +0 -10
  35. package/common/people.instance.json +36 -40
  36. package/common/percentages.js +1 -1
  37. package/common/pipboy.instance.json +56 -85
  38. package/common/pipboy.test.json +4377 -3386
  39. package/common/pokemon.instance.json +0 -65
  40. package/common/pressure.instance.json +0 -20
  41. package/common/properties.instance.json +0 -5
  42. package/common/properties.js +4 -4
  43. package/common/reminders.instance.json +196 -10
  44. package/common/reminders.js +273 -79
  45. package/common/reminders.test.json +71435 -23
  46. package/common/reports.instance.json +2 -12
  47. package/common/scorekeeper.test.json +3565 -7550
  48. package/common/spock.instance.json +0 -5
  49. package/common/temperature.instance.json +112 -20
  50. package/common/time.js +63 -30
  51. package/common/time.test.json +4124 -124
  52. package/common/ui.instance.json +0 -5
  53. package/common/ui.js +3 -1
  54. package/common/weight.instance.json +0 -60
  55. package/common/wp.instance.json +56 -70
  56. package/common/wp.test.json +8057 -3867
  57. package/main.js +2 -0
  58. package/package.json +8 -4
@@ -360,11 +360,6 @@
360
360
  "theAble",
361
361
  false
362
362
  ],
363
- [
364
- "evaluate",
365
- "verb",
366
- false
367
- ],
368
363
  [
369
364
  "every",
370
365
  "article",
@@ -1625,11 +1620,6 @@
1625
1620
  "theAble",
1626
1621
  false
1627
1622
  ],
1628
- [
1629
- "evaluate",
1630
- "verb",
1631
- false
1632
- ],
1633
1623
  [
1634
1624
  "every",
1635
1625
  "article",
@@ -3317,11 +3307,6 @@
3317
3307
  "theAble",
3318
3308
  false
3319
3309
  ],
3320
- [
3321
- "evaluate",
3322
- "verb",
3323
- false
3324
- ],
3325
3310
  [
3326
3311
  "every",
3327
3312
  "article",
@@ -5097,11 +5082,6 @@
5097
5082
  "theAble",
5098
5083
  false
5099
5084
  ],
5100
- [
5101
- "evaluate",
5102
- "verb",
5103
- false
5104
- ],
5105
5085
  [
5106
5086
  "every",
5107
5087
  "article",
@@ -6912,11 +6892,6 @@
6912
6892
  "theAble",
6913
6893
  false
6914
6894
  ],
6915
- [
6916
- "evaluate",
6917
- "verb",
6918
- false
6919
- ],
6920
6895
  [
6921
6896
  "every",
6922
6897
  "article",
@@ -8569,11 +8544,6 @@
8569
8544
  "theAble",
8570
8545
  false
8571
8546
  ],
8572
- [
8573
- "evaluate",
8574
- "verb",
8575
- false
8576
- ],
8577
8547
  [
8578
8548
  "every",
8579
8549
  "article",
@@ -10292,11 +10262,6 @@
10292
10262
  "theAble",
10293
10263
  false
10294
10264
  ],
10295
- [
10296
- "evaluate",
10297
- "verb",
10298
- false
10299
- ],
10300
10265
  [
10301
10266
  "every",
10302
10267
  "article",
@@ -12183,11 +12148,6 @@
12183
12148
  "theAble",
12184
12149
  false
12185
12150
  ],
12186
- [
12187
- "evaluate",
12188
- "verb",
12189
- false
12190
- ],
12191
12151
  [
12192
12152
  "every",
12193
12153
  "article",
@@ -14123,11 +14083,6 @@
14123
14083
  "theAble",
14124
14084
  false
14125
14085
  ],
14126
- [
14127
- "evaluate",
14128
- "verb",
14129
- false
14130
- ],
14131
14086
  [
14132
14087
  "every",
14133
14088
  "article",
@@ -16076,11 +16031,6 @@
16076
16031
  "theAble",
16077
16032
  false
16078
16033
  ],
16079
- [
16080
- "evaluate",
16081
- "verb",
16082
- false
16083
- ],
16084
16034
  [
16085
16035
  "every",
16086
16036
  "article",
@@ -17818,11 +17768,6 @@
17818
17768
  "theAble",
17819
17769
  false
17820
17770
  ],
17821
- [
17822
- "evaluate",
17823
- "verb",
17824
- false
17825
- ],
17826
17771
  [
17827
17772
  "every",
17828
17773
  "article",
@@ -19626,11 +19571,6 @@
19626
19571
  "theAble",
19627
19572
  false
19628
19573
  ],
19629
- [
19630
- "evaluate",
19631
- "verb",
19632
- false
19633
- ],
19634
19574
  [
19635
19575
  "every",
19636
19576
  "article",
@@ -21615,11 +21555,6 @@
21615
21555
  "theAble",
21616
21556
  false
21617
21557
  ],
21618
- [
21619
- "evaluate",
21620
- "verb",
21621
- false
21622
- ],
21623
21558
  [
21624
21559
  "every",
21625
21560
  "article",
@@ -22751,24 +22686,6 @@
22751
22686
  0
22752
22687
  ]
22753
22688
  ],
22754
- [
22755
- [
22756
- "is",
22757
- 0
22758
- ],
22759
- [
22760
- "mccoy",
22761
- 0
22762
- ],
22763
- [
22764
- "name",
22765
- 0
22766
- ],
22767
- [
22768
- "possession",
22769
- 0
22770
- ]
22771
- ],
22772
22689
  [
22773
22690
  [
22774
22691
  "is",
@@ -23645,11 +23562,6 @@
23645
23562
  "theAble",
23646
23563
  false
23647
23564
  ],
23648
- [
23649
- "evaluate",
23650
- "verb",
23651
- false
23652
- ],
23653
23565
  [
23654
23566
  "every",
23655
23567
  "article",
@@ -25688,11 +25600,6 @@
25688
25600
  "theAble",
25689
25601
  false
25690
25602
  ],
25691
- [
25692
- "evaluate",
25693
- "verb",
25694
- false
25695
- ],
25696
25603
  [
25697
25604
  "every",
25698
25605
  "article",
@@ -27546,11 +27453,6 @@
27546
27453
  "theAble",
27547
27454
  false
27548
27455
  ],
27549
- [
27550
- "evaluate",
27551
- "verb",
27552
- false
27553
- ],
27554
27456
  [
27555
27457
  "every",
27556
27458
  "article",
@@ -29347,11 +29249,6 @@
29347
29249
  "theAble",
29348
29250
  false
29349
29251
  ],
29350
- [
29351
- "evaluate",
29352
- "verb",
29353
- false
29354
- ],
29355
29252
  [
29356
29253
  "every",
29357
29254
  "article",
@@ -31687,11 +31584,6 @@
31687
31584
  "theAble",
31688
31585
  false
31689
31586
  ],
31690
- [
31691
- "evaluate",
31692
- "verb",
31693
- false
31694
- ],
31695
31587
  [
31696
31588
  "every",
31697
31589
  "article",
@@ -33392,11 +33284,6 @@
33392
33284
  "theAble",
33393
33285
  false
33394
33286
  ],
33395
- [
33396
- "evaluate",
33397
- "verb",
33398
- false
33399
- ],
33400
33287
  [
33401
33288
  "every",
33402
33289
  "article",
@@ -36070,11 +35957,6 @@
36070
35957
  "theAble",
36071
35958
  false
36072
35959
  ],
36073
- [
36074
- "evaluate",
36075
- "verb",
36076
- false
36077
- ],
36078
35960
  [
36079
35961
  "every",
36080
35962
  "article",
@@ -37956,11 +37838,6 @@
37956
37838
  "theAble",
37957
37839
  false
37958
37840
  ],
37959
- [
37960
- "evaluate",
37961
- "verb",
37962
- false
37963
- ],
37964
37841
  [
37965
37842
  "every",
37966
37843
  "article",
@@ -39852,11 +39729,6 @@
39852
39729
  "theAble",
39853
39730
  false
39854
39731
  ],
39855
- [
39856
- "evaluate",
39857
- "verb",
39858
- false
39859
- ],
39860
39732
  [
39861
39733
  "every",
39862
39734
  "article",
@@ -41697,11 +41569,6 @@
41697
41569
  "theAble",
41698
41570
  false
41699
41571
  ],
41700
- [
41701
- "evaluate",
41702
- "verb",
41703
- false
41704
- ],
41705
41572
  [
41706
41573
  "every",
41707
41574
  "article",
@@ -43542,11 +43409,6 @@
43542
43409
  "theAble",
43543
43410
  false
43544
43411
  ],
43545
- [
43546
- "evaluate",
43547
- "verb",
43548
- false
43549
- ],
43550
43412
  [
43551
43413
  "every",
43552
43414
  "article",
@@ -45387,11 +45249,6 @@
45387
45249
  "theAble",
45388
45250
  false
45389
45251
  ],
45390
- [
45391
- "evaluate",
45392
- "verb",
45393
- false
45394
- ],
45395
45252
  [
45396
45253
  "every",
45397
45254
  "article",
@@ -48836,11 +48693,6 @@
48836
48693
  "theAble",
48837
48694
  false
48838
48695
  ],
48839
- [
48840
- "evaluate",
48841
- "verb",
48842
- false
48843
- ],
48844
48696
  [
48845
48697
  "every",
48846
48698
  "article",
@@ -52676,24 +52528,6 @@
52676
52528
  0
52677
52529
  ]
52678
52530
  ],
52679
- [
52680
- [
52681
- "is",
52682
- 0
52683
- ],
52684
- [
52685
- "mccoy",
52686
- 0
52687
- ],
52688
- [
52689
- "name",
52690
- 0
52691
- ],
52692
- [
52693
- "possession",
52694
- 0
52695
- ]
52696
- ],
52697
52531
  [
52698
52532
  [
52699
52533
  "is",
@@ -0,0 +1,151 @@
1
+ {
2
+ "configs": [
3
+ {
4
+ "operators": [
5
+ "([dateTimeSelector] (onDate) (atTime))",
6
+ "((day_dates/*) [dayOfMonth|of] (month_dates/*))",
7
+ "((day_dates/*) [dayAfterDate|after] (afterDateValue_dates/*))"
8
+ ],
9
+ "bridges": [
10
+ {
11
+ "id": "dayOfMonth",
12
+ "after": [
13
+ "article"
14
+ ],
15
+ "isA": [
16
+ "onDateValue_dates"
17
+ ],
18
+ "before": [
19
+ "verb",
20
+ "onDate_dates"
21
+ ],
22
+ "bridge": "{ ...next(operator), day: before[0], month: after[0], operator: operator, interpolate: '${day} ${operator} ${month}' }"
23
+ },
24
+ {
25
+ "id": "dayAfterDate",
26
+ "after": [
27
+ "article",
28
+ "monthDayYear_dates"
29
+ ],
30
+ "isA": [
31
+ "onDateValue_dates"
32
+ ],
33
+ "before": [
34
+ "verb",
35
+ "afterDate_dates"
36
+ ],
37
+ "bridge": "{ ...next(operator), day: before[0], after: after[0], operator: operator, interpolate: '${day} ${operator} ${after}' }"
38
+ },
39
+ {
40
+ "id": "dateTimeSelector",
41
+ "after": [
42
+ "preposition"
43
+ ],
44
+ "before": [
45
+ "verb"
46
+ ],
47
+ "convolution": true,
48
+ "children": [
49
+ "onDate_dates",
50
+ "atTime",
51
+ "date_dates"
52
+ ],
53
+ "bridge": "{ ...next(operator), date: after[0], time: after[1], interpolate: '${date} ${time}' }"
54
+ }
55
+ ],
56
+ "semantics": [
57
+ {
58
+ "match": "({context, isA}) => context.evaluate && onOrIs('dayAfterDate', context)",
59
+ "apply": "async ({context, isProcess, isTest, kms, isA, e}) => {\n try {\n const now = kms.time.api.now()\n const date = afterOrIs('dayAfterDate', context)\n const afterISO = (await e(date.after)).evalue\n const day_ordinal = date.day.day_ordinal\n const ordinal = date.day.ordinal.value\n context.evalue = dateTimeSelectors_helpers.getNthWeekdayAfterDate(afterISO, day_ordinal, ordinal)\n } catch ( e ) {\n context.evalue = `Implement instatiate for this type of date. See the dateTimeSelectors KM ${where()}. ${e}`\n }\n }"
60
+ },
61
+ {
62
+ "match": "({context, isA}) => context.evaluate && onOrIs('dayOfMonth', context)",
63
+ "apply": "({context, isProcess, isTest, kms, isA}) => {\n try {\n const now = kms.time.api.now()\n const date = onOrIs('dayOfMonth', context)\n context.evalue = dateTimeSelectors_helpers.getNthDayOfMonth(removeDatesSuffix(date.day.value), date.day.ordinal.value || 1, removeDatesSuffix(date.month.value), now)\n } catch ( e ) {\n context.evalue = `Implement instatiate for this type of date. See the dateTimeSelectors KM ${where()}. ${e}`\n }\n }"
64
+ },
65
+ {
66
+ "match": "({context, isA}) => {\n if (!context.evaluate) {\n return false\n }\n if (isA(context.marker, 'onDateValue_dates')) {\n return true\n }\n if (isA(context.marker, 'dateTimeSelector')) {\n return true\n }\n }",
67
+ "apply": "({context, isProcess, isTest, kms, isA}) => {\n context.evalue = instantiate(kms, isA, isProcess || isTest || context.isTest, context)\n }"
68
+ }
69
+ ],
70
+ "hierarchy": [
71
+ [
72
+ "day_dates",
73
+ "orderable"
74
+ ]
75
+ ]
76
+ }
77
+ ],
78
+ "resultss": [
79
+ {
80
+ "extraConfig": true,
81
+ "operators": [
82
+ "([dateTimeSelector] (onDate) (atTime))",
83
+ "((day_dates/*) [dayOfMonth|of] (month_dates/*))",
84
+ "((day_dates/*) [dayAfterDate|after] (afterDateValue_dates/*))"
85
+ ],
86
+ "bridges": [
87
+ {
88
+ "id": "dayOfMonth",
89
+ "after": [
90
+ "article"
91
+ ],
92
+ "isA": [
93
+ "onDateValue_dates"
94
+ ],
95
+ "before": [
96
+ "verb",
97
+ "onDate_dates"
98
+ ],
99
+ "bridge": "{ ...next(operator), day: before[0], month: after[0], operator: operator, interpolate: '${day} ${operator} ${month}' }"
100
+ },
101
+ {
102
+ "id": "dayAfterDate",
103
+ "after": [
104
+ "article",
105
+ "monthDayYear_dates"
106
+ ],
107
+ "isA": [
108
+ "onDateValue_dates"
109
+ ],
110
+ "before": [
111
+ "verb",
112
+ "afterDate_dates"
113
+ ],
114
+ "bridge": "{ ...next(operator), day: before[0], after: after[0], operator: operator, interpolate: '${day} ${operator} ${after}' }"
115
+ },
116
+ {
117
+ "id": "dateTimeSelector",
118
+ "after": [
119
+ "preposition"
120
+ ],
121
+ "before": [
122
+ "verb"
123
+ ],
124
+ "convolution": true,
125
+ "children": [
126
+ "onDate_dates",
127
+ "atTime",
128
+ "date_dates"
129
+ ],
130
+ "bridge": "{ ...next(operator), date: after[0], time: after[1], interpolate: '${date} ${time}' }"
131
+ }
132
+ ],
133
+ "semantics": [
134
+ {},
135
+ {},
136
+ {}
137
+ ],
138
+ "hierarchy": [
139
+ [
140
+ "day_dates",
141
+ "orderable"
142
+ ]
143
+ ]
144
+ }
145
+ ],
146
+ "fragments": [],
147
+ "semantics": [],
148
+ "associations": [],
149
+ "summaries": [],
150
+ "learned_contextual_priorities": []
151
+ }
@@ -0,0 +1,171 @@
1
+ const { knowledgeModule, where } = require('./runtime').theprogrammablemind
2
+ const { defaultContextCheck } = require('./helpers')
3
+ const dateTimeSelectors_tests = require('./dateTimeSelectors.test.json')
4
+ const dateTimeSelectors_instance = require('./dateTimeSelectors.instance.json')
5
+ const dates = require('./dates')
6
+ const time = require('./time')
7
+ const dateTimeSelectors_helpers = require('./helpers/dateTimeSelectors')
8
+
9
+ /*
10
+ friday instead
11
+ change it to friday
12
+ delete it
13
+ make it friday instead
14
+ 2 sundays from now
15
+ 2 sundays from last tuesday
16
+ the sunday after july 1st
17
+ the first tuesday after july 1st
18
+ the first tuesday on or after july 1st
19
+ the last tuesday of every month
20
+ the last tuesday of every third month
21
+ monday at 10 am
22
+ 10 am
23
+ first monday after jan 1
24
+ */
25
+
26
+ function instantiate(kms, isA, isProcessOrTest, dateTimeSelector) {
27
+ try {
28
+ const now = kms.time.api.now()
29
+ return dateTimeSelectors_helpers.instantiate(isA, now, dateTimeSelector)
30
+ } catch ( e ) {
31
+ return `Implement instatiate for this type of date. See the dateTimeSelectors KM ${where()}`
32
+ }
33
+ }
34
+
35
+ function removeDatesSuffix(str) {
36
+ if (str.endsWith('_dates')) {
37
+ return str.slice(0, -6); // Removes last 6 characters
38
+ }
39
+ return str;
40
+ }
41
+
42
+ function onOrIs(marker, context) {
43
+ if (context.marker === marker) {
44
+ return context
45
+ }
46
+ if (context.marker === 'onDate_dates' && context.date?.marker == marker) {
47
+ return context.date
48
+ }
49
+ }
50
+
51
+ function afterOrIs(marker, context) {
52
+ if (context.marker === marker) {
53
+ return context
54
+ }
55
+ if (context.marker === 'onDate_dates' && context.date?.marker == marker) {
56
+ return context.date
57
+ }
58
+ }
59
+
60
+ const template = {
61
+ configs: [
62
+ {
63
+ operators: [
64
+ "([dateTimeSelector] (onDate) (atTime))",
65
+ "((day_dates/*) [dayOfMonth|of] (month_dates/*))",
66
+ "((day_dates/*) [dayAfterDate|after] (afterDateValue_dates/*))",
67
+ ],
68
+ bridges: [
69
+ {
70
+ id: 'dayOfMonth',
71
+ after: ['article'],
72
+ isA: ['onDateValue_dates'],
73
+ before: ['verb', 'onDate_dates'],
74
+ bridge: "{ ...next(operator), day: before[0], month: after[0], operator: operator, interpolate: '${day} ${operator} ${month}' }",
75
+ },
76
+ {
77
+ id: 'dayAfterDate',
78
+ after: ['article', 'monthDayYear_dates'],
79
+ isA: ['onDateValue_dates'],
80
+ before: ['verb', 'afterDate_dates'],
81
+ bridge: "{ ...next(operator), day: before[0], after: after[0], operator: operator, interpolate: '${day} ${operator} ${after}' }",
82
+ },
83
+ {
84
+ id: 'dateTimeSelector',
85
+ after: ['preposition'],
86
+ before: ['verb'],
87
+ convolution: true,
88
+ children: ['onDate_dates', 'atTime', 'date_dates'],
89
+ bridge: "{ ...next(operator), date: after[0], time: after[1], interpolate: '${date} ${time}' }",
90
+ },
91
+ ],
92
+ semantics: [
93
+ {
94
+ match: ({context, isA}) => context.evaluate && onOrIs('dayAfterDate', context),
95
+ apply: async ({context, isProcess, isTest, kms, isA, e}) => {
96
+ try {
97
+ const now = kms.time.api.now()
98
+ const date = afterOrIs('dayAfterDate', context)
99
+ const afterISO = (await e(date.after)).evalue
100
+ const day_ordinal = date.day.day_ordinal
101
+ const ordinal = date.day.ordinal.value
102
+ context.evalue = dateTimeSelectors_helpers.getNthWeekdayAfterDate(afterISO, day_ordinal, ordinal)
103
+ } catch ( e ) {
104
+ context.evalue = `Implement instatiate for this type of date. See the dateTimeSelectors KM ${where()}. ${e}`
105
+ }
106
+ },
107
+ },
108
+ {
109
+ match: ({context, isA}) => context.evaluate && onOrIs('dayOfMonth', context),
110
+ apply: ({context, isProcess, isTest, kms, isA}) => {
111
+ try {
112
+ const now = kms.time.api.now()
113
+ const date = onOrIs('dayOfMonth', context)
114
+ context.evalue = dateTimeSelectors_helpers.getNthDayOfMonth(removeDatesSuffix(date.day.value), date.day.ordinal.value || 1, removeDatesSuffix(date.month.value), now)
115
+ } catch ( e ) {
116
+ context.evalue = `Implement instatiate for this type of date. See the dateTimeSelectors KM ${where()}. ${e}`
117
+ }
118
+ },
119
+ },
120
+ {
121
+ match: ({context, isA}) => {
122
+ if (!context.evaluate) {
123
+ return false
124
+ }
125
+ if (isA(context.marker, 'onDateValue_dates')) {
126
+ return true
127
+ }
128
+ if (isA(context.marker, 'dateTimeSelector')) {
129
+ return true
130
+ }
131
+ },
132
+ apply: ({context, isProcess, isTest, kms, isA}) => {
133
+ context.evalue = instantiate(kms, isA, isProcess || isTest || context.isTest, context)
134
+ },
135
+ }
136
+ ],
137
+ hierarchy: [
138
+ ['day_dates', 'orderable'],
139
+ ],
140
+ },
141
+ ],
142
+ }
143
+
144
+ knowledgeModule( {
145
+ config: { name: 'dateTimeSelectors' },
146
+ includes: [time, dates],
147
+
148
+ module,
149
+ description: 'talking about date and time selectors',
150
+ test: {
151
+ name: './dateTimeSelectors.test.json',
152
+ contents: dateTimeSelectors_tests,
153
+ checks: {
154
+ context: defaultContextCheck([
155
+ 'date', 'time', 'response',
156
+ {
157
+ value: {
158
+ date: { variable: 'defaults' },
159
+ time: { variable: 'defaults' },
160
+ evalue: { variable: 'defaults' },
161
+ },
162
+ }
163
+ ]),
164
+ },
165
+ },
166
+ template: {
167
+ template,
168
+ instance: dateTimeSelectors_instance,
169
+ },
170
+
171
+ })