From 8532ce727c7410731bb8a88f7e482859e8518c6b Mon Sep 17 00:00:00 2001 From: Jeff MAURY Date: Mon, 18 Mar 2024 14:10:05 +0100 Subject: [PATCH] chore: add AI Studio 0.2.0 release (#30) Signed-off-by: Jeff MAURY --- api/extensions.json | 20 ++ api/extensions/redhat/ai-studio/0.2.0/LICENSE | 201 ++++++++++++++++++ .../redhat/ai-studio/0.2.0/README.md | 49 +++++ .../redhat/ai-studio/0.2.0/icon.png | Bin 0 -> 12428 bytes 4 files changed, 270 insertions(+) create mode 100644 api/extensions/redhat/ai-studio/0.2.0/LICENSE create mode 100644 api/extensions/redhat/ai-studio/0.2.0/README.md create mode 100644 api/extensions/redhat/ai-studio/0.2.0/icon.png diff --git a/api/extensions.json b/api/extensions.json index 609dda4..052e86f 100644 --- a/api/extensions.json +++ b/api/extensions.json @@ -443,6 +443,26 @@ "categories": ["AI", "Machine Learning", "LLM"], "keywords": ["AI", "Machine Learning", "LLM"], "versions": [ + { + "version": "0.2.0", + "preview": false, + "lastUpdated": "2024-03-16T00:00:00Z", + "ociUri": "ghcr.io/projectatomic/ai-studio:0.2.0", + "files": [ + { + "assetType": "icon", + "data": "https://registry.podman-desktop.io/api/extensions/redhat/ai-studio/0.2.0/icon.png" + }, + { + "assetType": "README", + "data": "https://registry.podman-desktop.io/api/extensions/redhat/ai-studio/0.2.0/README.md" + }, + { + "assetType": "LICENSE", + "data": "https://registry.podman-desktop.io/api/extensions/redhat/ai-studio/0.2.0/LICENSE" + } + ] + }, { "version": "0.1.0", "preview": false, diff --git a/api/extensions/redhat/ai-studio/0.2.0/LICENSE b/api/extensions/redhat/ai-studio/0.2.0/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/api/extensions/redhat/ai-studio/0.2.0/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/api/extensions/redhat/ai-studio/0.2.0/README.md b/api/extensions/redhat/ai-studio/0.2.0/README.md new file mode 100644 index 0000000..5180fd9 --- /dev/null +++ b/api/extensions/redhat/ai-studio/0.2.0/README.md @@ -0,0 +1,49 @@ +# AI studio + +## Installing a released version + +If you want to install a specific version of the extension, go to Podman Desktop UI > ⚙ Settings > Extensions > Install a new extension from OCI Image. + +The name of the image to use is `ghcr.io/projectatomic/ai-studio:version_to_use`. + +You can get released tags for the image at https://github.com/projectatomic/studio-extension/pkgs/container/ai-studio. + +The released tags follow the major.minor.patch convention. + +If you want to install the last release version, use the latest tag. + +## Installing a development version + +You can install this extension from Podman Desktop UI > ⚙ Settings > Extensions > Install a new extension from OCI Image. + +The name of the image to use is `ghcr.io/projectatomic/ai-studio:nightly`. + +You can get earlier tags for the image at https://github.com/projectatomic/studio-extension/pkgs/container/ai-studio. + +These images contain development versions of the extension. There is no stable release yet. + +## Running in development mode + +From the Podman Desktop sources folder: + +``` +$ yarn watch --extension-folder path-to-extension-sources-folder/packages/backend +``` + +## Providing a custom catalog + +The extension provides a default catalog, but you can build your own catalog by creating a file `$HOME/podman-desktop/ai-studio/catalog.json`. + +The catalog provides lists of categories, recipes, and models. + +Each recipe can belong to one or several categories. Each model can be used by one or several recipes. + +The format of the catalog is not stable nor versioned yet, you can see the current catalog's format [in the sources of the extension](https://github.com/projectatomic/studio-extension/blob/main/packages/backend/src/ai.json). + +## Packaging sample applications + +Sample applications may be added to the catalog. See [packaging guide](PACKAGING-GUIDE.md) for detailed information. + +## Feedback + +You can provide your feedback on the extension with [this form](https://forms.gle/tctQ4RtZSiMyQr3R8) or create [an issue on this repository](https://github.com/projectatomic/studio-extension/issues). diff --git a/api/extensions/redhat/ai-studio/0.2.0/icon.png b/api/extensions/redhat/ai-studio/0.2.0/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..d95b51dcc9b651e325e32fe85feab741258c9538 GIT binary patch literal 12428 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 H#zFrFDRNkE literal 0 HcmV?d00001