npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

thingtalk

v2.1.1

Published

ThingTalk Just-In-Time Compiler, Library and Runtime

Downloads

44

Readme

ThingTalk

Build Status Coverage Status Dependency Status Language grade: JavaScript

The Programming Language of Virtual Assistants

ThingTalk is the declarative (rule-based) distributed programming language for virtual assistants. It connects to multiple web services and IoT devices in a single when-get-do statement.

For example, in ThingTalk you can say:

monitor(@com.washingtonpost.get_article(section=enum world))
=> @com.yandex.translate.translate(target_language="zh"^^tt:iso_lang_code, text=title)
=> @com.facebook.post(status=$result);

This program automatically monitors Washington Post headlines, translates them to Chinese, and then posts them on Facebook. It does so by referring to primitives defined in Thingpedia, an open-source crowdsourced repository of APIs and metadata. Documentation for the ThingTalk language is available on the Almond wiki.

This package contains the grammar, the compiler of the language, the interface to analyze programs using SMT, the code to translate from ThingTalk to natural language, part of the ThingTalk runtime, and various libraries to manipulate ThingTalk abstract syntax trees.

While this library is useful on its own for specific purposes, to run ThingTalk programs you will need a full virtual assistant runtime, such as one provided by the Genie Toolkit.

ThingTalk is developed by the Stanford Open Virtual Assistant Lab, a research initiative led by prof. Monica Lam, from Stanford University. You can find more information at https://oval.cs.stanford.edu

License

This package is covered by the Apache 2.0 license. See LICENSE for details.

Versioning

This package does not follow semantic versioning. Instead, the version should be interpreted as:

  • Major version will be bumped for incompatible changes in the language, such that existing valid programs are no longer valid.
  • Minor version will be bumped for any change in the library, such as AST definitions, interfaces to compilation/optimization passes, adding and removing additional processing modules.
  • Patch version will be bumped for compatible bug fixes.

Minor version bumps can introduce incompatibility to library users; it is recommended that library users use tilde version ranges on their ThingTalk dependency.

Source compatibility

The syntax of ThingTalk is designed to be forward and backward compatible to a limited extent.

Within major versions, we guarantee the following

  • Syntax generated with an older version of ThingTalk (or written by a human targeting an older version of ThingTalk) will continue to parse correctly with a newer version of the language.
  • Syntax generated by a newer version of ThingTalk may not parse correctly with an older client. As a best effort, client code can provide a ThingTalk library version to generate syntax compatible with that version (reducing functionality).
  • Generally speaking, the same program will continue using the same normalized syntax representation (which is unique for a given program semantic) with different versions of the library. Hence, ThingTalk syntax is suitable for long-term storage of programs that are compared syntactically (e.g. datasets). Deviations from this rule will be clearly marked in the release notes.