{
  "configs": [
    {
      "operators": [
        "([remindable])",
        {
          "pattern": "([addRemindable] (word)*)",
          "scope": "testing"
        },
        "([remind:justWhoBridge] (remindable/*))",
        "([remind] (remindable/*) (!@<= 'dateTimeSelector' && !@<= 'inAddition')*)",
        "([remind:withDateBridge] (remindable/*) (!@<= 'dateTimeSelector' && !@<= 'inAddition')* (dateTimeSelector))",
        "([remind:withDateFirstBridge] (remindable/*) (dateTimeSelector) (!@<= 'dateTimeSelector' && !@<= 'inAddition')*)",
        "([remind:withDateAndTimeBridge] (remindable/*) (!@<= 'dateTimeSelector' && !@<= 'inAddition')* (dateTimeSelector) (atTime))",
        "([remindResponse] (complete !== true && !@<= 'dateTimeSelector' && !@<= 'inAddition' )+ (dateTimeSelector))",
        "([remindResponseOnly] (context.complete != true && !@<= day_dates && !@<= 'dateTimeSelector' && !@<=remind)+)",
        "([show] ([reminders]))",
        "([delete_reminders|delete,cancel] (number/*))",
        "([add] (remindable/*))",
        "([remove|] (remindable/*))",
        "((verb/*) [inAddition|also,too])"
      ],
      "bridges": [
        {
          "id": "inAddition",
          "after": [
            "verb"
          ],
          "bridge": "{ ...before[0], inAddition: true, verb: before[0], operator: operator, interpolate: '${verb} ${operator}' }"
        },
        {
          "id": "add",
          "isA": [
            "verb"
          ],
          "bridge": "{ ...next(operator), complete: true, arg: after[0], operator: operator, interpolate: '${operator} ${arg}' }",
          "semantic": "({api, context}) => {\n            api.addUser(api.contextToWho(context.arg))\n          }"
        },
        {
          "id": "remove",
          "words": [
            "delete",
            "remove"
          ],
          "isA": [
            "verb"
          ],
          "bridge": "{ ...next(operator), complete: true, arg: after[0], operator: operator, interpolate: '${operator} ${arg}' }",
          "semantic": "({api, context}) => {\n            api.removeUser(api.contextToWho(context.arg))\n          }"
        },
        {
          "id": "addRemindable",
          "isA": [
            "verb"
          ],
          "scope": "testing",
          "bridge": "{ ...next(operator), complete: true, flatten: true, arg: after[0], operator: operator, interpolate: '${operator} ${arg}' }",
          "semantic": "async ({api, context}) => {\n            const name = context.arg.map( (word) => word.text ).join(' ')\n            await api.addRemindable(name)\n          }"
        },
        {
          "id": "remindable",
          "isA": [
            "listable"
          ]
        },
        {
          "id": "remindResponseOnly",
          "isA": [
            "verb"
          ],
          "convolution": true,
          "disabled": true,
          "bridge": "{ ...next(operator), complete: true, operator: operator, reminder: after[0], interpolate: '${reminder}' }",
          "semantic": "async ({context, api, gp, gsp}) => {\n            const text = await gsp(context.reminder.slice(0));\n            const update = { text }\n            if (context.date) {\n              update.dateTimeSelector = context.date\n              update.dateTimeSelectorText = await gp(context.date)\n            }\n            await api.update(update)\n          }"
        },
        {
          "id": "remindResponse",
          "before": [
            "remindResponseOnly"
          ],
          "isA": [
            "verb"
          ],
          "convolution": true,
          "disabled": true,
          "optional": {
            "2": {}
          },
          "bridge": "{ ...next(operator), complete: true, operator: operator, reminder: after[0], date: after[1], interpolate: '${reminder} ${date}' }",
          "semantic": "async ({context, api, gp, gsp}) => {\n            const text = await gsp(context.reminder.slice(0));\n            const update = { text }\n            if (context.date) {\n              update.dateTimeSelector = context.date\n              update.dateTimeSelectorText = await gp(context.date)\n            }\n            await api.update(update)\n          }"
        },
        {
          "id": "remind",
          "isA": [
            "verb"
          ],
          "localHierarchy": [
            [
              "self",
              "remindable"
            ]
          ],
          "bridge": "{ ...next(operator), complete: true, operator: operator, who: after[0], reminder: after[1], interpolate: '${operator} ${who} ${reminder}' }",
          "justWhoBridge": "{ ...next(operator), complete: true, bridge: 'justWhoBridge', operator: operator, who: after[0], interpolate: '${operator} ${who}' }",
          "withDateBridge": "{ ...next(operator), complete: true, operator: operator, who: after[0], reminder: after[1], date: after[2], interpolate: '${operator} ${who} ${reminder} ${date}' }",
          "withDateFirstBridge": "{ ...next(operator), complete: true, operator: operator, who: after[0], reminder: after[2], date: after[1], interpolate: '${operator} ${who} ${date} ${reminder}' }",
          "withDateAndTimeBridge": "{ ...next(operator), complete: true, operator: operator, who: after[0], reminder: after[1], date: after[2], time: after[3], interpolate: '${operator} ${who} ${reminder} ${date} ${time}' }",
          "semantics": "[object Object]",
          "semantic": "async ({ask, api, gsp, gp, context}) => {\n            const who = api.contextToWho(context.who)\n            let text;\n            if (context.reminder) {\n              text = await gsp(context.reminder.slice(1));\n            }\n            const reminder = { text, dateTimeSelector: context.date, who }\n            if (context.date) {\n              reminder.dateTimeSelector = context.date\n              reminder.dateTimeSelectorText = await gp(context.date)\n            }\n            // await api.instantiate(reminder)\n            await api.add(reminder)\n            reminder.cleanUp = ask([\n              query('missingReminder', reminder.id),\n              query('missingDate', reminder.id),\n            ])\n          }"
        },
        {
          "id": "reminders",
          "isA": [
            "noun"
          ]
        },
        {
          "id": "show",
          "isA": [
            "verb"
          ],
          "bridge": "{ ...next(operator), operator: operator, complete: true, reminders: after[0], interpolate: '${operator} ${reminders}' }",
          "semantic": "({context, api, verbatim}) => {\n            verbatim(api.show())\n          }"
        },
        {
          "id": "delete_reminders",
          "isA": [
            "verb"
          ],
          "bridge": "{ ...next(operator), operator: operator, complete: true, reminders: after[0], interpolate: '${operator} ${reminders}' }",
          "semantic": "({context, api, verbatim}) => {\n            const s = api.delete_reminder(context.reminders.value)\n            if (s) {\n              verbatim(s)\n            }\n          }"
        }
      ]
    }
  ],
  "resultss": [
    {
      "extraConfig": true,
      "operators": [
        "([remindable])",
        {
          "pattern": "([addRemindable] (word)*)",
          "scope": "testing"
        },
        "([remind:justWhoBridge] (remindable/*))",
        "([remind] (remindable/*) (!@<= 'dateTimeSelector' && !@<= 'inAddition')*)",
        "([remind:withDateBridge] (remindable/*) (!@<= 'dateTimeSelector' && !@<= 'inAddition')* (dateTimeSelector))",
        "([remind:withDateFirstBridge] (remindable/*) (dateTimeSelector) (!@<= 'dateTimeSelector' && !@<= 'inAddition')*)",
        "([remind:withDateAndTimeBridge] (remindable/*) (!@<= 'dateTimeSelector' && !@<= 'inAddition')* (dateTimeSelector) (atTime))",
        "([remindResponse] (complete !== true && !@<= 'dateTimeSelector' && !@<= 'inAddition' )+ (dateTimeSelector))",
        "([remindResponseOnly] (context.complete != true && !@<= day_dates && !@<= 'dateTimeSelector' && !@<=remind)+)",
        "([show] ([reminders]))",
        "([delete_reminders|delete,cancel] (number/*))",
        "([add] (remindable/*))",
        "([remove|] (remindable/*))",
        "((verb/*) [inAddition|also,too])"
      ],
      "bridges": [
        {
          "id": "inAddition",
          "after": [
            "verb"
          ],
          "bridge": "{ ...before[0], inAddition: true, verb: before[0], operator: operator, interpolate: '${verb} ${operator}' }"
        },
        {
          "id": "add",
          "isA": [
            "verb"
          ],
          "bridge": "{ ...next(operator), complete: true, arg: after[0], operator: operator, interpolate: '${operator} ${arg}' }"
        },
        {
          "id": "remove",
          "words": [
            "delete",
            "remove"
          ],
          "isA": [
            "verb"
          ],
          "bridge": "{ ...next(operator), complete: true, arg: after[0], operator: operator, interpolate: '${operator} ${arg}' }"
        },
        {
          "id": "addRemindable",
          "isA": [
            "verb"
          ],
          "scope": "testing",
          "bridge": "{ ...next(operator), complete: true, flatten: true, arg: after[0], operator: operator, interpolate: '${operator} ${arg}' }"
        },
        {
          "id": "remindable",
          "isA": [
            "listable"
          ]
        },
        {
          "id": "remindResponseOnly",
          "isA": [
            "verb"
          ],
          "convolution": true,
          "disabled": true,
          "bridge": "{ ...next(operator), complete: true, operator: operator, reminder: after[0], interpolate: '${reminder}' }"
        },
        {
          "id": "remindResponse",
          "before": [
            "remindResponseOnly"
          ],
          "isA": [
            "verb"
          ],
          "convolution": true,
          "disabled": true,
          "optional": {
            "2": {}
          },
          "bridge": "{ ...next(operator), complete: true, operator: operator, reminder: after[0], date: after[1], interpolate: '${reminder} ${date}' }"
        },
        {
          "id": "remind",
          "isA": [
            "verb"
          ],
          "localHierarchy": [
            [
              "self",
              "remindable"
            ]
          ],
          "bridge": "{ ...next(operator), complete: true, operator: operator, who: after[0], reminder: after[1], interpolate: '${operator} ${who} ${reminder}' }",
          "justWhoBridge": "{ ...next(operator), complete: true, bridge: 'justWhoBridge', operator: operator, who: after[0], interpolate: '${operator} ${who}' }",
          "withDateBridge": "{ ...next(operator), complete: true, operator: operator, who: after[0], reminder: after[1], date: after[2], interpolate: '${operator} ${who} ${reminder} ${date}' }",
          "withDateFirstBridge": "{ ...next(operator), complete: true, operator: operator, who: after[0], reminder: after[2], date: after[1], interpolate: '${operator} ${who} ${date} ${reminder}' }",
          "withDateAndTimeBridge": "{ ...next(operator), complete: true, operator: operator, who: after[0], reminder: after[1], date: after[2], time: after[3], interpolate: '${operator} ${who} ${reminder} ${date} ${time}' }",
          "semantics": [
            {}
          ]
        },
        {
          "id": "reminders",
          "isA": [
            "noun"
          ]
        },
        {
          "id": "show",
          "isA": [
            "verb"
          ],
          "bridge": "{ ...next(operator), operator: operator, complete: true, reminders: after[0], interpolate: '${operator} ${reminders}' }"
        },
        {
          "id": "delete_reminders",
          "isA": [
            "verb"
          ],
          "bridge": "{ ...next(operator), operator: operator, complete: true, reminders: after[0], interpolate: '${operator} ${reminders}' }"
        }
      ]
    }
  ],
  "fragments": [],
  "semantics": [],
  "associations": [],
  "summaries": [],
  "learned_contextual_priorities": []
}