{"id":18440600,"url":"https://github.com/stanford-oval/thingtalk","last_synced_at":"2025-04-05T17:08:27.906Z","repository":{"id":3742622,"uuid":"50754414","full_name":"stanford-oval/thingtalk","owner":"stanford-oval","description":"The Programming Language of Virtual Assistants","archived":false,"fork":false,"pushed_at":"2023-06-06T22:55:10.000Z","size":15562,"stargazers_count":86,"open_issues_count":31,"forks_count":21,"subscribers_count":14,"default_branch":"master","last_synced_at":"2025-03-29T16:08:52.210Z","etag":null,"topics":["dsl","hacktoberfest","programming-language","voice-assistant"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/stanford-oval.png","metadata":{"files":{"readme":"README.md","changelog":"HISTORY.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2016-01-31T01:58:58.000Z","updated_at":"2025-02-20T09:08:35.000Z","dependencies_parsed_at":"2023-07-05T19:01:31.280Z","dependency_job_id":null,"html_url":"https://github.com/stanford-oval/thingtalk","commit_stats":{"total_commits":1803,"total_committers":22,"mean_commits":81.95454545454545,"dds":"0.30892956184137543","last_synced_commit":"2a5ec7eb261bc368687ff7b770a54429ad936062"},"previous_names":[],"tags_count":71,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stanford-oval%2Fthingtalk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stanford-oval%2Fthingtalk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stanford-oval%2Fthingtalk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stanford-oval%2Fthingtalk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stanford-oval","download_url":"https://codeload.github.com/stanford-oval/thingtalk/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247369952,"owners_count":20927928,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dsl","hacktoberfest","programming-language","voice-assistant"],"created_at":"2024-11-06T06:31:31.555Z","updated_at":"2025-04-05T17:08:27.874Z","avatar_url":"https://github.com/stanford-oval.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"# ThingTalk\n\n[![Build Status](https://travis-ci.com/stanford-oval/thingtalk.svg?branch=master)](https://travis-ci.com/stanford-oval/thingtalk) [![Coverage Status](https://coveralls.io/repos/github/stanford-oval/thingtalk/badge.svg?branch=master)](https://coveralls.io/github/stanford-oval/thingtalk?branch=master) [![Dependency Status](https://david-dm.org/stanford-oval/thingtalk/status.svg)](https://david-dm.org/stanford-oval/thingtalk) [![Language grade: JavaScript](https://img.shields.io/lgtm/grade/javascript/g/stanford-oval/thingtalk.svg?logo=lgtm\u0026logoWidth=18)](https://lgtm.com/projects/g/stanford-oval/thingtalk/context:javascript)\n\n## The Programming Language of Virtual Assistants\n\nThingTalk is the declarative (rule-based) distributed programming\nlanguage for virtual assistants. It connects to multiple web services\nand IoT devices in a single _when-get-do_ statement.\n\nFor example, in ThingTalk you can say:\n```\nmonitor(@com.washingtonpost.get_article(section=enum world))\n=\u003e @com.yandex.translate.translate(target_language=\"zh\"^^tt:iso_lang_code, text=title)\n=\u003e @com.facebook.post(status=$result);\n```\n\nThis program automatically monitors Washington Post headlines, translates them to Chinese, and then posts them on Facebook.\nIt does so by referring to primitives defined in [Thingpedia](https://thingpedia.stanford.edu), an open-source crowdsourced repository of APIs and metadata.\nDocumentation for the ThingTalk language is available on the [Almond wiki](https://wiki.almond.stanford.edu/thingtalk).\n\nThis package contains the grammar, the compiler of the language,\nthe interface to analyze programs using SMT, the code to translate\nfrom ThingTalk to natural language, part of the ThingTalk runtime,\nand various libraries to manipulate ThingTalk abstract syntax trees.\n\nWhile this library is useful on its own for specific purposes, to\nrun ThingTalk programs you will need a full virtual assistant runtime, such\nas one provided by the [Genie Toolkit](https://github.com/stanford-oval/genie-toolkit).\n\nThingTalk is developed by the Stanford Open Virtual Assistant Lab, a research\ninitiative led by prof. Monica Lam, from Stanford University. \nYou can find more information at \u003chttps://oval.cs.stanford.edu\u003e\n\n## License\n\nThis package is covered by the Apache 2.0 license. See [LICENSE](LICENSE) for details.\n\n## Versioning\n\nThis package **does not** follow semantic versioning. Instead, the version should\nbe interpreted as:\n\n- Major version will be bumped for incompatible changes in the language, such that\n  existing valid programs are no longer valid.\n- Minor version will be bumped for any change in the library, such as AST definitions,\n  interfaces to compilation/optimization passes, adding and removing additional\n  processing modules.\n- Patch version will be bumped for compatible bug fixes.\n\n**Minor version bumps can introduce incompatibility to library users**; it is\nrecommended that library users use tilde version ranges on their ThingTalk dependency.\n\n### Source compatibility\n\nThe syntax of ThingTalk is designed to be forward and backward compatible to a limited extent.\n\nWithin major versions, we guarantee the following\n- Syntax generated with an older version of ThingTalk (or written by a human targeting\n  an older version of ThingTalk) will continue to parse correctly with a newer version\n  of the language.\n- Syntax generated by a newer version of ThingTalk may not parse correctly with an\n  older client. As a best effort, client code can provide a ThingTalk library\n  version to generate syntax compatible with that version (reducing functionality).\n- Generally speaking, the same program will continue using the same normalized syntax\n  representation (which is unique for a given program semantic) with different\n  versions of the library. Hence, ThingTalk syntax is suitable for long-term storage of programs\n  that are compared syntactically (e.g. datasets). Deviations from this rule will\n  be clearly marked in the release notes.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstanford-oval%2Fthingtalk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstanford-oval%2Fthingtalk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstanford-oval%2Fthingtalk/lists"}