diff --git a/.changeset/new-chairs-provide.md b/.changeset/new-chairs-provide.md new file mode 100644 index 00000000..3cfe31f2 --- /dev/null +++ b/.changeset/new-chairs-provide.md @@ -0,0 +1,6 @@ +--- +"@effectai/sdk": patch +--- + +- add symlinks for license and README +- fix createBatch types diff --git a/LICENSE b/LICENSE deleted file mode 100644 index a1594b3e..00000000 --- a/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2021 Effect Network - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/LICENSE b/LICENSE new file mode 120000 index 00000000..da348fc8 --- /dev/null +++ b/LICENSE @@ -0,0 +1 @@ +src/LICENSE \ No newline at end of file diff --git a/README.md b/README.md deleted file mode 100644 index 7eddf7fb..00000000 --- a/README.md +++ /dev/null @@ -1,28 +0,0 @@ -# ๐ฅ @effectai/effect-js - -
- -Effect-js is a free and open-source library powered by blockchain technology that enables developers to collect and enrich their data-sets in a transparent way. - -## ๐๏ธ Documentation -For full documentation, visit https://docs.effect.ai - -## ๐ Contributing -If you want to add contributions to this repository, please follow the instructions in [contributing.md](CONTRIBUTING.md). - -## ๐ Local Development -Follow the docs to Set Up Your Local Development Environment to contribute to the framework and documentation. - -### Testing - -#### `.env` - -To run the tests locally, you will need to provide an EOS account that can be used to make transactions on your behalf. -Copy the `.env.example` file to `.env.testnet` and fill in the required parameters. - -#### PowerUp - -You might need to power up your account, either by adding some Native Token to your account or EFX tokens. -You can powerup your account at the following link: https://monitor4.jungletestnet.io/ - - diff --git a/README.md b/README.md new file mode 120000 index 00000000..351df1da --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +src/README.md \ No newline at end of file diff --git a/bun.lockb b/bun.lockb index 6d676796..69b420d5 100755 Binary files a/bun.lockb and b/bun.lockb differ diff --git a/docs/package.json b/docs/package.json index b5f98582..4fe4bc40 100644 --- a/docs/package.json +++ b/docs/package.json @@ -9,6 +9,9 @@ }, "dependencies": {}, "devDependencies": { + "@wharfkit/wallet-plugin-anchor": "^1.0.0", + "@wharfkit/web-renderer": "^1.0.3", + "@wharfkit/wallet-plugin-privatekey": "1.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", "vocs": "^1.0.0-alpha.46", diff --git a/docs/pages/docs/authentication.mdx b/docs/pages/docs/authentication.mdx new file mode 100644 index 00000000..3d4cea5b --- /dev/null +++ b/docs/pages/docs/authentication.mdx @@ -0,0 +1,62 @@ +# Authentication +Some functions in the Effect AI SDK require authentication with the EOS blockchain. This is done by passing a session object to the createClient function. +A session can be established by either [private key](https://github.com/wharfkit/wallet-plugin-privatekey) or [wallet plugins](https://wharfkit.com/plugins?tag=wallet-plugin). + +### Private Key +To authenticate using a private key we recommend using the [wallet-plugin-privatekey](https://github.com/wharfkit/wallet-plugin-privatekey) +And passing it through a session to the `createClient` function. + +```ts twoslash +import { + createClient, + eos, + Session +} from "@effectai/sdk"; + +import { WalletPluginPrivateKey } from '@wharfkit/wallet-plugin-privatekey' + +const session = new Session({ + chain: eos, + walletPlugin: new WalletPluginPrivateKey( + '5Jtoxgny5tT7NiNFp1MLogviuPJ9NniWjnU4wKzaX4t7pL4kJ8s', + ), +}) + +const client = await createClient({ session }) +``` + +### Wallet Plugin +It's also possible to authenticate using a wallet plugin, for example using the [wallet-plugin-anchor](https://github.com/wharfkit/wallet-plugin-anchor) +This one is a bit more complicated and requires two additional packages: [`@wharfkit/session`](https://github.com/wharfkit/session) and [`@wharfkit/web-renderer`](https://github.com/wharfkit/web-renderer) + +```ts twoslash +import { + createClient, + eos, +} from "@effectai/sdk"; + +import { SessionKit } from "@wharfkit/session"; +import { WebRenderer } from "@wharfkit/web-renderer"; +import { WalletPluginAnchor } from "@wharfkit/wallet-plugin-anchor"; + +const webRenderer = new WebRenderer(); + +const sessionKit = new SessionKit( + { + appName: "Effect Network", + chains: [eos], + ui: webRenderer, + walletPlugins: [ + new WalletPluginAnchor(), + ], + }, + ) + +const session = await sessionKit.restore(); + +if(!session) { + throw new Error('Session not found') +} + +const client = await createClient({ session }) +``` \ No newline at end of file diff --git a/docs/pages/docs/collecting-data/adding-tasks.mdx b/docs/pages/docs/collecting-data/adding-tasks.mdx index 4c6e43a2..998edd82 100644 --- a/docs/pages/docs/collecting-data/adding-tasks.mdx +++ b/docs/pages/docs/collecting-data/adding-tasks.mdx @@ -1,30 +1,44 @@ ## Adding tasks -Adding tasks to a campaign is done through batches batches are a collection of tasks that are added to a campaign. Each batch can contain multiple tasks. -Let's start by creating a batch with 3 tasks to our newly created image classification campaign. +Adding tasks to a campaign is done through adding batches. -```ts [example.ts] -import { createBatch } from '@effectai/effect-js' +Batches are a collection of tasks that are added to a campaign. Each batch can contain multiple tasks. +Let's start by creating a batch with 3 tasks to our newly created image classification campaign. +```ts twoslash +// [!include ~/snippets/getting-started/getting-started-auth.ts] +if(!client.session) { + throw new Error('No session found') +} const { actor } = client.session +if(!actor) { + throw new Error('No actor found') +} +//---cut--- +import { createBatch } from '@effectai/sdk' + const batch = await createBatch({ client, - batch: { - campaign_id: '<..>', // the id of the campaign - repetitions: 1 // number of times each task should be repeated - payer: actor // the actor that will pay the workers for the tasks - } - data: [ + // The campaign id to which the batch should be added + campaignId : 1, + // The number of times each task in the batch should be repeated + repetitions: 1, + // The reward for each task in the batch + reward: 3, + // The template placeholders for each task in the batch + taskData : [ { - image: 'https://example.com/image.jpg', //task 1 image placeholder + ipfs_url: 'https://example.com/image.jpg', //task 1 image placeholder }, { - image: 'https://example.com/image2.jpg', //task 2 image placeholder + ipfs_url: 'https://example.com/image2.jpg', //task 2 image placeholder }, { - image: 'https://example.com/image3.jpg', // task 3 image placeholder + ipfs_url: 'https://example.com/image3.jpg', // task 3 image placeholder } - ] + ], }) -``` \ No newline at end of file + +``` + diff --git a/docs/pages/docs/collecting-data/collecting-results.mdx b/docs/pages/docs/collecting-data/collecting-results.mdx new file mode 100644 index 00000000..4b86553c --- /dev/null +++ b/docs/pages/docs/collecting-data/collecting-results.mdx @@ -0,0 +1,3 @@ +## Collecting Results + +TODO:: \ No newline at end of file diff --git a/docs/pages/docs/glossary/client-options.mdx b/docs/pages/docs/glossary/client-options.mdx index d42ce0e8..b6752018 100644 --- a/docs/pages/docs/glossary/client-options.mdx +++ b/docs/pages/docs/glossary/client-options.mdx @@ -17,7 +17,7 @@ As we can see, the ClientOpts interface has three optional properties: This property is used to set the cache duration for the IPFS data. The default value is 600_000 milliseconds; 10 minutes. -## `fetchProfider` +## `fetchProvider` This property is used to set the fetch provider. This is needed because of the different runtimes availalbe to Java Script. @@ -45,6 +45,5 @@ const client = createClient({ }) ``` -# TODO: This needs to be changed when the `dev` branch is merged into main. [See Type](https://github.com/effectai/effect-js/blob/main/src/client.ts) diff --git a/docs/pages/index.mdx b/docs/pages/index.mdx index 68ba2a6d..bdbbd247 100644 --- a/docs/pages/index.mdx +++ b/docs/pages/index.mdx @@ -36,15 +36,15 @@ style={{ :::code-group ```bash [npm] - npm i @effectai/effect-js + npm i @effectai/sdk ``` ```bash [pnpm] - pnpm i @effectai/effect-js + pnpm i @effectai/sdk ``` ```bash [bun] - bun i @effectai/effect-js + bun i @effectai/sdk ``` ::: @@ -69,7 +69,7 @@ style={{ coverage