-
Notifications
You must be signed in to change notification settings - Fork 21
Code Generation Tool #718
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
bobur-khay
wants to merge
32
commits into
eclipse-thingweb:master
Choose a base branch
from
bobur-khay:feature/code-gen
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Code Generation Tool #718
Changes from all commits
Commits
Show all changes
32 commits
Select commit
Hold shift + click to select a range
ef6cd9f
init
bobur-khay 9b92b9f
mvp for generate prompt
bobur-khay c2e8afe
mvp for algorithmic approach
bobur-khay 5533964
overall mvp
bobur-khay 7a8da63
new generators
bobur-khay 5072cde
dynamic client
bobur-khay e428a87
refactoring
bobur-khay ffd30a2
initial generators
bobur-khay 6e33a42
cleanup
bobur-khay 890273e
mvp
bobur-khay 9cf2502
tests
bobur-khay bda3623
copy button
bobur-khay c98307a
vitest version change
bobur-khay 8d9fbc5
visual test fix
bobur-khay 4af4ffc
change the dependency to file location
bobur-khay d5ec7d9
fix test
bobur-khay ecc7a4f
Readme file
bobur-khay f8c1342
license update
bobur-khay 857ccdf
test
bobur-khay d5b01f0
revert test
bobur-khay 6e2b60c
updated package-lock
bobur-khay c907fa4
add typescript to dependencies
bobur-khay 8c7b198
update lock file
bobur-khay 501db9d
package lock update
bobur-khay a3f6382
fix hidden input bars for build
bobur-khay b40eb37
post-rebase
bobur-khay a9d8def
fix netlify tests
bobur-khay 66470ea
rebase
bobur-khay ab50a7c
fix rebase lost change
bobur-khay ebf3abe
tsx dependency
bobur-khay cac5421
interactive path input
bobur-khay 10121e4
readme update
bobur-khay File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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). |
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.