ekms 9.6.3 → 9.7.0

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 (84) hide show
  1. package/common/actions.instance.json +2771 -15
  2. package/common/actions.js +116 -8
  3. package/common/actions.test.json +79138 -384
  4. package/common/angle.instance.json +138 -834
  5. package/common/angle.test.json +172 -127
  6. package/common/animals.instance.json +260 -0
  7. package/common/articles.js +1 -2
  8. package/common/avatar.test.json +173 -33
  9. package/common/can.instance.json +40 -0
  10. package/common/colors.instance.json +308 -0
  11. package/common/comparable.instance.json +120 -0
  12. package/common/compass.instance.json +63 -18
  13. package/common/concept.js +2 -1
  14. package/common/conjunction.js +11 -17
  15. package/common/control.js +42 -0
  16. package/common/control.test.json +2 -0
  17. package/common/crew.instance.json +520 -0
  18. package/common/dates.instance.json +184 -0
  19. package/common/dialogues.js +3 -3
  20. package/common/dimension.instance.json +264 -69
  21. package/common/dimension.js +5 -5
  22. package/common/dimension.test.json +545 -441
  23. package/common/drone.instance.json +15927 -2638
  24. package/common/drone.js +359 -71
  25. package/common/drone.test.json +587651 -44132
  26. package/common/drone_v1.instance.json +492 -59
  27. package/common/drone_v1.js +9 -9
  28. package/common/edible.instance.json +696 -0
  29. package/common/emotions.instance.json +20 -0
  30. package/common/evaluate.js +1 -1
  31. package/common/fastfood.instance.json +1310 -216
  32. package/common/fastfood.js +1 -1
  33. package/common/formulas.instance.json +20 -5
  34. package/common/formulas.js +1 -1
  35. package/common/gdefaults.js +32 -5
  36. package/common/help.test.json +23 -3
  37. package/common/helpers/conjunction.js +2 -0
  38. package/common/helpers/formulas.js +6 -0
  39. package/common/helpers/properties.js +9 -7
  40. package/common/helpers.js +11 -6
  41. package/common/hierarchy.js +2 -0
  42. package/common/kirk.instance.json +20 -0
  43. package/common/length.instance.json +1117 -5708
  44. package/common/length.test.json +29761 -12488
  45. package/common/logging.js +41 -0
  46. package/common/logging.test.json +2 -0
  47. package/common/math.instance.json +30 -12
  48. package/common/math.js +6 -5
  49. package/common/menus.instance.json +140 -35
  50. package/common/meta.js +1 -1
  51. package/common/nameable.js +7 -9
  52. package/common/nameable.test.json +252 -150
  53. package/common/ordering.instance.json +40 -0
  54. package/common/ordinals.js +51 -5
  55. package/common/people.instance.json +160 -0
  56. package/common/pipboy.instance.json +396 -85
  57. package/common/pipboy.js +1 -1
  58. package/common/pokemon.instance.json +260 -0
  59. package/common/pressure.instance.json +108 -370
  60. package/common/properties.instance.json +20 -0
  61. package/common/properties.js +5 -4
  62. package/common/properties.test.json +2754 -2142
  63. package/common/rates.instance.json +1 -1
  64. package/common/rates.js +3 -3
  65. package/common/rates.test.json +6914 -2428
  66. package/common/reminders.js +1 -1
  67. package/common/reports.instance.json +49 -176
  68. package/common/reports.js +2 -2
  69. package/common/scorekeeper.js +1 -1
  70. package/common/sdefaults.js +18 -5
  71. package/common/spock.instance.json +20 -0
  72. package/common/stm.js +115 -53
  73. package/common/stm.test.json +2670 -54
  74. package/common/temperature.instance.json +709 -2284
  75. package/common/time.instance.json +14333 -2220
  76. package/common/time.js +48 -2
  77. package/common/time.test.json +13239 -0
  78. package/common/tokenize.js +2 -0
  79. package/common/ui.instance.json +20 -5
  80. package/common/ui.js +1 -1
  81. package/common/weight.instance.json +621 -1886
  82. package/common/wp.instance.json +336 -70
  83. package/main.js +4 -0
  84. package/package.json +11 -5
package/common/actions.js CHANGED
@@ -1,46 +1,148 @@
1
- const { knowledgeModule, where, Digraph } = require('./runtime').theprogrammablemind
1
+ const { knowledgeModule, where, Digraph, debug } = require('./runtime').theprogrammablemind
2
2
  const { defaultContextCheckProperties, defaultContextCheck } = require('./helpers')
3
3
  const dialogues = require("./dialogues")
4
+ const time = require("./time")
4
5
  const tests = require('./actions.test.json')
5
6
  const instance = require('./actions.instance.json')
6
7
 
8
+ /*
9
+ do patrol 1 then patrol 2 then patrol 3
10
+ do patrol 1 patrol 2 and then patrol 3
11
+ */
12
+
7
13
  const config = {
8
14
  name: 'actions',
9
15
  operators: [
10
16
  "([doAction|do] ([action]))",
11
17
  "((action) <again>)",
18
+ "((action) [thenAction|then] (action))",
19
+ "([delayTime|in,after] (context.unit.dimension == 'time'))",
12
20
  ],
13
21
  bridges: [
22
+ {
23
+ id: 'delayTime',
24
+ isA: ['preposition', 'action'],
25
+ bridge: `{
26
+ ...next(operator),
27
+ operator: operator,
28
+ delayTime: after[0],
29
+ interpolate: [ { property: 'operator' }, { property: 'delayTime' } ]
30
+ }`,
31
+ check: defaultContextCheckProperties(['delayTime'])
32
+ },
33
+ {
34
+ id: 'delayTime',
35
+ where: where(),
36
+ after: ['doAction'],
37
+ level: 1,
38
+ bridge: `{
39
+ ...next(operator),
40
+ operator: operator,
41
+ checks: append(action.checks, ['action']),
42
+ action: action,
43
+ interpolate: [{ property: 'operator', byPosition: true }, { property: 'action', byPosition: true }]
44
+ }`,
45
+ selector: {
46
+ // loose: "action",
47
+ arguments: {
48
+ action: "(@<= 'action' || @<= 'doAction')",
49
+ },
50
+ },
51
+ semantic: async ({context, fragments, e, s, toFinalValue, kms}) => {
52
+ const instantiation = await fragments("quantity in milliseconds", { quantity: context.delayTime })
53
+ const result = await e(instantiation)
54
+ const milliseconds = toFinalValue(toFinalValue(result).amount)
55
+ await kms.time.api.sleep(milliseconds)
56
+ await s(context.action)
57
+ }
58
+ },
14
59
  {
15
60
  id: 'action',
61
+ isA: ['thisAble'],
16
62
  },
63
+ {
64
+ id: "thenAction",
65
+ level: 0,
66
+ isA: ['action'],
67
+ before: ['doAction'],
68
+ selector: {
69
+ match: "same",
70
+ left: [ { pattern: '(@<= action || (@<=doAction && context.marker.level == 1))' } ],
71
+ right: [ { pattern: '(@<= action || (@<=doAction && context.marker.level == 1))' } ],
72
+ passthrough: true
73
+ },
74
+ bridge: `{
75
+ ...next(operator),
76
+ operator: operator,
77
+ listable: true,
78
+ isList: true,
79
+ before: before,
80
+ after: after,
81
+ value: append(before, after)
82
+ }`
83
+ },
84
+ {
85
+ id: "thenAction",
86
+ level: 1,
87
+ before: ['doAction'],
88
+ selector: {
89
+ left: [ { pattern: '(@<=action || (@<=doAction && context.marker.level == 1))' } ],
90
+ passthrough: true
91
+ },
92
+ where: where(),
93
+ bridge: "{ ...next(operator), value: append(before, operator.value) }",
94
+ semantic: {
95
+ match: ({context}) => context.isList,
96
+ apply: async ({context, toArray, s}) => {
97
+ for (const action of toArray(context)) {
98
+ await s(action)
99
+ }
100
+ },
101
+ }
102
+ },
103
+
17
104
  {
18
105
  id: 'again',
106
+ before: ['doAction'],
19
107
  bridge: `{
20
108
  ...before[0],
21
109
  action: before[0],
22
110
  again: operator,
23
111
  interpolate: [{ property: 'action' }, { property: 'again' }]
24
- }`
112
+ }`,
113
+ localHierarchy: [['thisitthat', 'action']],
25
114
  },
26
115
  {
27
116
  id: 'doAction',
28
- isA: ['verb'],
117
+ isA: ['verb', 'repeatable'],
29
118
  check: defaultContextCheckProperties(['action']),
30
119
  bridge: `{
31
120
  ...next(operator),
32
121
  operator: operator,
33
122
  action: after[0],
34
- interpolate: [{ property: 'operator' }, { property: 'action' }]
123
+ interpolate: append(default(operator.interpolate, [{ property: 'operator' }]), [{ property: 'action' }])
35
124
  }`,
125
+ localHierarchy: [['thisitthat', 'action']],
126
+ where: where(),
127
+ semantic: async ({context, toArray, s}) => {
128
+ for (const action of toArray(context.action)) {
129
+ await s(action)
130
+ }
131
+ },
36
132
  },
37
133
  ],
134
+ words: {
135
+ patterns: [
136
+ { "pattern": ["action", { type: 'digit' }], allow_partial_matches: false, defs: [{id: "action", initial: "{ value: text, instance: true, dead: true }" }]},
137
+ ],
138
+ },
38
139
  semantics: [
39
140
  {
40
141
  priority: -1,
41
- match: ({context, isA}) => isA(context.marker, 'action'),
42
- apply: ({context, _continue, mentioned}) => {
43
- mentioned(context)
142
+ match: ({context, isA}) => !context.pullFromContext && (isA(context.marker, 'action') || isA(context.marker, 'doAction')),
143
+ apply: async ({context, _continue, testLog, g, remember}) => {
144
+ remember(context)
145
+ await testLog(() => g(context))
44
146
  _continue()
45
147
  }
46
148
  },
@@ -48,6 +150,9 @@ const config = {
48
150
  };
49
151
 
50
152
  const template = {
153
+ fragments: [
154
+ "quantity in milliseconds",
155
+ ],
51
156
  configs: [
52
157
  config,
53
158
  ],
@@ -55,7 +160,7 @@ const template = {
55
160
 
56
161
  knowledgeModule({
57
162
  config: { name: 'actions' },
58
- includes: [dialogues],
163
+ includes: [dialogues, time],
59
164
  instance,
60
165
  template,
61
166
  module,
@@ -63,5 +168,8 @@ knowledgeModule({
63
168
  test: {
64
169
  name: './actions.test.json',
65
170
  contents: tests,
171
+ checks: {
172
+ objects: [ { km: 'logging' } ],
173
+ },
66
174
  },
67
175
  })