Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
ef6cd9f
init
bobur-khay Apr 8, 2026
9b92b9f
mvp for generate prompt
bobur-khay Apr 9, 2026
c2e8afe
mvp for algorithmic approach
bobur-khay Apr 9, 2026
5533964
overall mvp
bobur-khay Apr 9, 2026
7a8da63
new generators
bobur-khay Apr 9, 2026
5072cde
dynamic client
bobur-khay Apr 9, 2026
e428a87
refactoring
bobur-khay May 20, 2026
ffd30a2
initial generators
bobur-khay May 20, 2026
6e33a42
cleanup
bobur-khay May 20, 2026
890273e
mvp
bobur-khay May 24, 2026
9cf2502
tests
bobur-khay May 25, 2026
bda3623
copy button
bobur-khay May 25, 2026
c98307a
vitest version change
bobur-khay May 25, 2026
8d9fbc5
visual test fix
bobur-khay May 25, 2026
4af4ffc
change the dependency to file location
bobur-khay May 25, 2026
d5ec7d9
fix test
bobur-khay May 25, 2026
ecc7a4f
Readme file
bobur-khay May 26, 2026
f8c1342
license update
bobur-khay May 26, 2026
857ccdf
test
bobur-khay May 27, 2026
d5b01f0
revert test
bobur-khay May 27, 2026
6e2b60c
updated package-lock
bobur-khay May 27, 2026
c907fa4
add typescript to dependencies
bobur-khay May 27, 2026
8c7b198
update lock file
bobur-khay May 27, 2026
501db9d
package lock update
bobur-khay May 27, 2026
a3f6382
fix hidden input bars for build
bobur-khay May 27, 2026
b40eb37
post-rebase
bobur-khay May 27, 2026
a9d8def
fix netlify tests
bobur-khay May 27, 2026
66470ea
rebase
bobur-khay Jun 3, 2026
ab50a7c
fix rebase lost change
bobur-khay Jun 3, 2026
ebf3abe
tsx dependency
bobur-khay Jun 3, 2026
cac5421
interactive path input
bobur-khay Jun 3, 2026
10121e4
readme update
bobur-khay Jun 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .eslintrc.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
"jest": true
},
"parserOptions": {
"ecmaVersion": 2018,
"ecmaVersion": 2020,
"sourceType": "module"
},
"globals": {
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,6 @@
"lint:fix": "npx eslint . --config .eslintrc.json --fix",
"format": "prettier --write . && npm run format --silent --workspaces --if-present",
"format:quick": "pretty-quick",
"test": "npm test -w packages/core -w packages/assertions -w packages/defaults -w packages/cli"
"test": "npm test -w packages/core -w packages/assertions -w packages/defaults -w packages/cli -w packages/code-gen"
}
}
78 changes: 78 additions & 0 deletions packages/code-gen/README.md
Comment thread
bobur-khay marked this conversation as resolved.
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
# @thingweb/code-gen

Generates code snippets for interacting with [Thing Descriptions (TD)](https://www.w3.org/TR/wot-thing-description11/). Supports multiple programming languages and libraries. For unsupported language/library combinations, it generates a prompt for an LLM to complete the task.

## Usage

### As a Library

```js
import { generateCode, isProtocolSupported } from "@thingweb/code-gen";

const result = generateCode({
td,
affordanceType: "properties",
affordanceKey: "temperature",
operation: "readproperty",
language: "javascript",
library: "fetch",
});

if ("code" in result) {
console.log(result.code);
} else {
console.log(result.prompt); // LLM prompt for unsupported combinations
}
```

### CLI

The package provides both interactive and non-interactive CLI modes.

**Interactive mode** — run without arguments to be guided through prompts:

```bash
npm run cli
```

**Non-interactive mode** — pass all options as flags. When running the CLI through the npm script, parameters are added after `--`:

```bash
npm run cli -- --td ./my-thing.td.jsonld --affordance-type properties --affordance-key temperature --operation readproperty --language javascript --library fetch --output ./output
```

#### CLI Options

| Flag | Description |
| ----------------------- | ---------------------------------------------------------- |
| `-t, --td` | Path to the TD JSON file (relative or absolute) |
| `-a, --affordance-type` | Affordance type: `properties`, `actions`, or `events` |
| `-k, --affordance-key` | Key name of the affordance |
| `-o, --operation` | Operation to perform (e.g. `readproperty`, `invokeaction`) |
| `-l, --language` | Programming language |
| `-b, --library` | Library to use |
| `-O, --output` | Output folder path (relative or absolute, default: `./`) |

## Supported Languages and Libraries

| Language | Libraries |
| ---------- | --------------------------------------------- |
| JavaScript | fetch, node-wot, webthing, modbus-serial |
| Python | requests, wotpy, PyModbus |
| Java | httpclient, wot-servient, digitalpetri/modbus |
| Rust | reqwest |
| Go | net-http |
| C# | httpclient, WoT.Net |
| PHP | curl |
| Ruby | net-http |
| Dart | dart-wot, http |

## Scripts

- `npm run build` — Compile TypeScript to `dist/`
- `npm run cli` — Run the CLI
- `npm test` — Run tests

## License

Licensed under the MIT license, see [License](../../LICENSE.md).
Loading
Loading