-
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
27
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
27 commits
Select commit
Hold shift + click to select a range
f26e837
init
bobur-khay 4d3b638
mvp for generate prompt
bobur-khay 8caae2a
mvp for algorithmic approach
bobur-khay 3ebf06f
overall mvp
bobur-khay 8cc2ea1
new generators
bobur-khay 7bace52
dynamic client
bobur-khay e46555e
refactoring
bobur-khay 1e90d1f
initial generators
bobur-khay ef0de75
cleanup
bobur-khay e465e98
mvp
bobur-khay 73da872
tests
bobur-khay 5f4438a
copy button
bobur-khay 44d34d3
vitest version change
bobur-khay 27a85fc
visual test fix
bobur-khay 99710ae
change the dependency to file location
bobur-khay ca40f51
fix test
bobur-khay 8938340
Readme file
bobur-khay e0bb271
license update
bobur-khay 8bcc56a
test
bobur-khay d580127
revert test
bobur-khay 588fc1d
updated package-lock
bobur-khay 1b6de8d
add typescript to dependencies
bobur-khay f1fa453
update lock file
bobur-khay 6e3fb60
package lock update
bobur-khay 9d472ce
fix hidden input bars for build
bobur-khay 39bae0d
post-rebase
bobur-khay be40612
fix netlify tests
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 | | ||
| | `-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 (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.