system: |-
  You write code as queried by the user. Only output code. Wrap the code like that: 
  ```language
  {code}
  ```
  Put explanations directly in the code as comments.
prompts:
  python3:
    prompt: |-
      Write a function in python called "main". The function should {description}. Specify the parameter types. Do not call the main function.
      You have access to the following resource types, if you need them, you have to define the TypedDict exactly as specified (class name has to be IN LOWERCASE) and add them as parameters: {resourceTypes}
      Only use the ones you need. If the TypedDict name conflicts with the imported object, rename the imported object NOT THE TYPE.
  deno:
    prompt: |-
      Write a function in TypeScript called "main". The function should {description}. Specify the parameter types. You are in a Deno environment. You can import deno libraries or you can also import npm libraries like that: "import ... from "npm:{package}";". Export the "main" function like this: "export async function main(...)". Do not call the main function.
      You have access to the following resource types, if you need them, you have to define the type exactly as specified and add them as parameters: {resourceTypes}
      Only use the ones you need. If the type name conflicts with the imported object, rename the imported object NOT THE TYPE.
  go:
    prompt: |-
      Write a function in go called "main". The function should {description}. Import the packages you need. The return type of the function has to be ({return_type}, error). The file package has to be "inner".
  bash:
    prompt: |-
      Write bash code that should {description}. Do not include "#!/bin/bash". Arguments are always string and can only be obtained with "var1="$1"", "var2="$2"", etc... You do not need to check if the arguments are present.
  postgresql:
    prompt: |-
      Write SQL code for a PostgreSQL that should {description}. Arguments can be obtained directly in the statement with `$1::{type}`, `$2::{type}`, etc... Name the parameters by adding comments before the command like that: `-- $1 name1` or `-- $2 name = default` (one per row, do not include the type)
  mysql:
    prompt: |-
      Write SQL code for MySQL that should {description}. Arguments can be obtained directly in the statement with ?. Name the parameters by adding comments before the command like that: -- ? name1 ({type}) (one per row)
  nativets:
    prompt: |-
      Write a function in TypeScript called "main". The function should {description}. Specify the parameter types. You should use fetch and are not allowed to import any libraries. Export the "main" function like this: "export async function main(...)". Do not call the main function.
      You have access to the following resource types, if you need them, you have to define the type exactly as specified and add them as parameters: {resourceTypes}
      Only use the ones you need. If the type name conflicts with the imported object, rename the imported object NOT THE TYPE.
  bun:
    prompt: |-
      Write a function in TypeScript called "main". The function should {description}. Specify the parameter types. You are in a Node.js environment. You can import npm libraries. Export the "main" function like this: "export async function main(...)". Do not call the main function.
      You have access to the following resource types, if you need them, you have to define the type exactly as specified and add them as parameters: {resourceTypes}
      Only use the ones you need. If the type name conflicts with the imported object, rename the imported object NOT THE TYPE.
  frontend:
    prompt: |-
      Write client-side javascript code that should {description}. You have access to a few helpers:
      You can access the context object with the ctx global variable. 
      The app state is a store that can be used to store data. You can access and update the state object with the state global variable like this: state.foo = 'bar'
      You can use the goto function to navigate to a specific URL: goto(path: string, newTab?: boolean)
      Use the setTab function to manually set the tab of a Tab component: setTab(id: string, index: string)
      Use the recompute function to recompute a component: recompute(id: string)
      Use the getAgGrid function to get the ag-grid instance of a table: getAgGrid(id: string)
      The setValue function is meant to set or force the value of a component: setValue(id: string, value: any).
