lashlang 0.1.0-alpha.38

Lashlang: compact CodeAct language for model-authored REPL blocks in the lash agent runtime.
Documentation
---
source: crates/lashlang/src/runtime/tests.rs
assertion_line: 210
expression: "serde_json::to_string_pretty(&program).expect(\"program should serialize\")"
---
{
  "main": {
    "Block": [
      {
        "Assign": {
          "target": {
            "root": "source"
          },
          "expr": {
            "BuiltinCall": {
              "name": "join",
              "args": [
                {
                  "Variable": "history"
                },
                {
                  "String": ","
                }
              ]
            }
          }
        }
      },
      {
        "Assign": {
          "target": {
            "root": "beta_index"
          },
          "expr": {
            "BuiltinCall": {
              "name": "find",
              "args": [
                {
                  "Variable": "source"
                },
                {
                  "String": "beta"
                }
              ]
            }
          }
        }
      },
      {
        "Assign": {
          "target": {
            "root": "matches"
          },
          "expr": {
            "BuiltinCall": {
              "name": "grep_text",
              "args": [
                {
                  "Variable": "source"
                },
                {
                  "String": "beta"
                }
              ]
            }
          }
        }
      },
      {
        "Assign": {
          "target": {
            "root": "counts"
          },
          "expr": {
            "Record": []
          }
        }
      },
      {
        "For": {
          "binding": "token",
          "iterable": {
            "BuiltinCall": {
              "name": "split",
              "args": [
                {
                  "Variable": "source"
                },
                {
                  "String": ","
                }
              ]
            }
          },
          "body": {
            "Block": [
              {
                "Assign": {
                  "target": {
                    "root": "counts",
                    "steps": [
                      {
                        "Index": {
                          "Variable": "token"
                        }
                      }
                    ]
                  },
                  "expr": {
                    "Binary": {
                      "left": {
                        "Index": {
                          "target": {
                            "Variable": "counts"
                          },
                          "index": {
                            "Variable": "token"
                          }
                        }
                      },
                      "op": "Add",
                      "right": {
                        "Number": 1.0
                      }
                    }
                  }
                }
              }
            ]
          }
        }
      },
      {
        "Assign": {
          "target": {
            "root": "Payload"
          },
          "expr": {
            "TypeLiteral": {
              "Object": [
                {
                  "name": "beta_index",
                  "ty": {
                    "Union": [
                      "Int",
                      "Null"
                    ]
                  },
                  "optional": false
                },
                {
                  "name": "matches",
                  "ty": {
                    "List": "Dict"
                  },
                  "optional": false
                },
                {
                  "name": "counts",
                  "ty": "Dict",
                  "optional": false
                }
              ]
            }
          }
        }
      },
      {
        "Submit": {
          "BuiltinCall": {
            "name": "validate",
            "args": [
              {
                "Record": [
                  [
                    "beta_index",
                    {
                      "Variable": "beta_index"
                    }
                  ],
                  [
                    "matches",
                    {
                      "Variable": "matches"
                    }
                  ],
                  [
                    "counts",
                    {
                      "Variable": "counts"
                    }
                  ]
                ]
              },
              {
                "Variable": "Payload"
              }
            ]
          }
        }
      }
    ]
  },
  "expression_spans": [
    {
      "start": 1,
      "end": 28
    },
    {
      "start": 29,
      "end": 62
    },
    {
      "start": 63,
      "end": 98
    },
    {
      "start": 99,
      "end": 110
    },
    {
      "start": 111,
      "end": 182
    },
    {
      "start": 183,
      "end": 265
    },
    {
      "start": 266,
      "end": 358
    }
  ]
}