diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index f09b362dd7..cfea4ff703 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,9 +1,8 @@
# Contributon to Magic
In order to contribute to Magic, we need your employer's consent that you are legally allowed to contribute to open source projects.
-This implies at the minimum having your closest upwards _"C level executive"_ send you an email confirming that there it's OK for
-you to contribute to Magic, allowing us to sub-license your work any ways we see fit, for then to forward that email to info@aista.com.
-We also need your explicit consent, implying you are fine with Aista, Ltd sub-licensing your code, any ways we see fit.
+This implies at the minimum having your closest upwards _"C level executive"_ send you an email confirming that it's OK for
+you to contribute to Magic, allowing us to sub-license your work any ways we see fit, for then to forward that email to thomas@ainiro.io.
-Hence, if you want to contribute to Magic, you will need to send two emails to info@aista.com as explained further up. Otherwise
+Hence, if you want to contribute to Magic, you will need to send two emails to thomas@ainiro.io as explained further up. Otherwise
we cannot for legal reasons accept your contribution.
diff --git a/LICENSE b/LICENSE
index 1f9995876b..e72bfddabc 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,15 +1,674 @@
-Copyright 2020-2021 Thomas Hansen, thomas@servergardens.com
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
-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:
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
-The above copyright notice and this permission notice shall be included in all copies or substantial portions
-of the Software.
+ Preamble
-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.
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+
+ Copyright (C)
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+ Copyright (C)
+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+.
+
+ The GNU General Public License does not permit incorporating your program
+into proprietary programs. If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License. But first, please read
+.
\ No newline at end of file
diff --git a/README.md b/README.md
index ad25352785..afe534e299 100644
--- a/README.md
+++ b/README.md
@@ -37,21 +37,8 @@ In addition to its OpenAI and ChatGPT features, Magic is also a complete Low-Cod
## License
-**TL;TR** - You can create closed source applications with Magic, but you can _not_ close Magic itself.
-
-The frontend dashboard is licensed under the terms of the GPL version 3, as published by the Free Software Foundation -
-While the backend is licensed under the terms of the MIT license. What this implies, is that you can freely use Magic
-as you see fit, also in your own proprietary and closed source applications - However, if you modify any of its plugins,
-and or the dashboard frontend, you'll have to publish your changes to anyone requesting your changes.
-
-To sum up each license.
-
-* All NuGet packages are LGPL3
-* The `backend` folder is MIT
-* The `frontend` folder is GPL3
-
-See the enclosed LICENSE files within each folder, and/or plugin if in doubt.
+This project, and all of its satellite project, is licensed under the terms of the GPL license version 3, as published by the Free Software Foundation unless an explicit and signed exception has been provided by Thomas Hansen its copyright owner. See LICENSE file for details. For licensing inquiries you can contact Thomas Hansen thomas@ainiro.io
## Copyright and maintenance
-The projects is copyright of Aista, Ltd 2021 - 2023, and professionally maintained by [AINIRO your friendly ChatGPT website chatbot vendor](https://ainiro.io).
+The projects is copyright of Thomas Hansen, Ltd 2021 - 2023, and professionally maintained by [AINIRO your friendly ChatGPT website chatbot vendor](https://ainiro.io).
diff --git a/backend/LICENSE b/backend/LICENSE
index 1f9995876b..b941e26398 100644
--- a/backend/LICENSE
+++ b/backend/LICENSE
@@ -1,4 +1,4 @@
-Copyright 2020-2021 Thomas Hansen, thomas@servergardens.com
+Copyright 2020-2023 Thomas Hansen, thomas@ainiro.io
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
diff --git a/backend/Program.cs b/backend/Program.cs
index 850ad86fe0..983a57ef23 100644
--- a/backend/Program.cs
+++ b/backend/Program.cs
@@ -1,5 +1,5 @@
/*
- * Copyright (c) Aista Ltd, 2021 - 2023 team@ainiro.io.
+ * Copyright (c) Thomas Hansen, 2021 - 2023 thomas@ainiro.io.
*/
using Microsoft.AspNetCore;
diff --git a/backend/Startup.cs b/backend/Startup.cs
index 5c747145fa..9b76385324 100644
--- a/backend/Startup.cs
+++ b/backend/Startup.cs
@@ -1,5 +1,5 @@
/*
- * Copyright (c) Aista Ltd, 2021 - 2023 team@ainiro.io.
+ * Copyright (c) Thomas Hansen, 2021 - 2023 thomas@ainiro.io.
*/
using Microsoft.AspNetCore.Builder;
diff --git a/backend/backend.csproj b/backend/backend.csproj
index f25c45f5d8..55610f57a6 100644
--- a/backend/backend.csproj
+++ b/backend/backend.csproj
@@ -25,8 +25,8 @@
-
-
+
+
diff --git a/backend/files/etc/snippets/eurovision.hl b/backend/files/etc/snippets/eurovision.hl
new file mode 100644
index 0000000000..2b16707926
--- /dev/null
+++ b/backend/files/etc/snippets/eurovision.hl
@@ -0,0 +1,24 @@
+signal:magic.http.duckduckgo-and-scrape
+ query:Who won Eurovision 2023
+ max:int:5
+
+
+signal:magic.http.duckduckgo-search
+ query:Who won Eurovision 2023
+ max:int:5
+
+signal:magic.http.scrape-url
+ url:"https://www.cnn.com/2023/05/13/europe/eurovision-song-contest-2023-winner-intl/index.html"
+
+signal:magic.http.scrape-url
+ url:"https://eurovisionworld.com/eurovision/2023"
+
+signal:magic.http.scrape-url
+ url:"https://www.nytimes.com/2023/05/13/arts/music/eurovision-2023-final-sweden.html"
+
+signal:magic.http.scrape-url
+ url:"https://www.npr.org/2023/05/13/1176049673/loreen-of-sweden-wins-eurovision-song-contest"
+
+signal:magic.http.scrape-url
+ url:"https://www.nytimes.com/live/2023/05/13/arts/eurovision-final"
+
diff --git a/backend/files/etc/snippets/find-dead-images.hl b/backend/files/etc/snippets/find-dead-images.hl
new file mode 100644
index 0000000000..80e9a20ec7
--- /dev/null
+++ b/backend/files/etc/snippets/find-dead-images.hl
@@ -0,0 +1,63 @@
+
+/*
+ * Finds all images that are not referenced in any HTML, JS, CSS or
+ * Markdown file, and returns in [.result].
+ */
+.not-used
+.html
+.images
+io.file.list-recursively:/etc/www/
+for-each:x:-/*
+ strings.split:x:@.dp/#
+ .:.
+ switch:x:-/0/-
+ case:html
+ case:md
+ .html
+ set-value:x:@.html
+ io.file.load:x:@.dp/#
+ if
+ eq
+ get-value:x:@strings.split/0/-
+ .:md
+ .lambda
+ markdown2html:x:@.html
+ set-value:x:@.html
+ get-value:x:@markdown2html
+ if
+ exists:x:@markdown2html/*/image
+ .lambda
+ strings.concat
+ .:/etc/www
+ get-value:x:@markdown2html/*/image
+ unwrap:x:+/*/*
+ add:x:@.html/@.html
+ .
+ .:x:@strings.concat
+ html2lambda:x:@.html
+ for-each:x:@html2lambda/**/img/*/\@src
+ if
+ strings.starts-with:x:@.dp/#
+ .:/assets/
+ .lambda
+ strings.concat
+ .:/etc/www
+ get-value:x:@.dp/#
+ unwrap:x:+/*/*
+ add:x:@.html/@.html
+ .
+ .:x:@strings.concat
+add:x:@.images
+ io.file.list-recursively:/etc/www/assets/images/
+for-each:x:@.images/*
+
+ if
+ not
+ exists:x:@.html/*/={@.dp/#}
+ .lambda
+ unwrap:x:+/*/*
+ add:x:@.not-used
+ .
+ .:x:@.dp/#
+for-each:x:@.not-used/*
+ io.file.delete:x:@.dp/#
\ No newline at end of file
diff --git a/backend/files/etc/workflows/README.md b/backend/files/etc/workflows/README.md
new file mode 100644
index 0000000000..d077d54e10
--- /dev/null
+++ b/backend/files/etc/workflows/README.md
@@ -0,0 +1,4 @@
+
+# Hyperlambda workflows
+
+This folder contains your custom Hyperlambda workflows.
diff --git a/backend/files/etc/workflows/example.hl b/backend/files/etc/workflows/example.hl
new file mode 100644
index 0000000000..86beb56d54
--- /dev/null
+++ b/backend/files/etc/workflows/example.hl
@@ -0,0 +1,16 @@
+
+/*
+ * Example workflow executing sql-select action, for then
+ * to return result of invocation.
+ */
+
+/*
+ * Execute some select SQL statement specified as [sql].
+ * Optionally provide [connection-string], [database-type] and [database].
+ */
+execute:magic.workflows.functions.execute
+ name:sql-select
+ filename:/misc/workflows/functions/sql-select.hl
+ arguments
+ sql:select name from roles where name like @arg1 limit 2
+ @arg1:a%
diff --git a/backend/files/exceptions.hl b/backend/files/exceptions.hl
index 30dbbe22a4..7451a6b928 100644
--- a/backend/files/exceptions.hl
+++ b/backend/files/exceptions.hl
@@ -15,7 +15,10 @@ log.error:x:@.arguments/*/message
if
and
exists:x:@.arguments/*/public
- get-value:x:@.arguments/*/public
+ or
+ get-value:x:@.arguments/*/public
+ convert:x:@.arguments/*/public
+ type:bool
.lambda
// Exception message is supposed to propagate to client.
diff --git a/backend/files/misc/templates/angular/templates/main/src/app/pipes/date-since.pipe.ts b/backend/files/misc/templates/angular/templates/main/src/app/pipes/date-since.pipe.ts
index d8595ff231..968802efdc 100644
--- a/backend/files/misc/templates/angular/templates/main/src/app/pipes/date-since.pipe.ts
+++ b/backend/files/misc/templates/angular/templates/main/src/app/pipes/date-since.pipe.ts
@@ -1,5 +1,5 @@
/*
- * Copyright (c) Aista Ltd, 2021 - 2023 team@ainiro.io.
+ * Copyright (c) Thomas Hansen, 2021 - 2023 thomas@ainiro.io.
*/
import { Pipe, PipeTransform } from '@angular/core';
diff --git a/backend/files/misc/workflows/README.md b/backend/files/misc/workflows/README.md
new file mode 100644
index 0000000000..b6341d20a4
--- /dev/null
+++ b/backend/files/misc/workflows/README.md
@@ -0,0 +1,4 @@
+
+# Workflow Hyperlambda files
+
+Supporting Hyperlambda files your workflows.
\ No newline at end of file
diff --git a/backend/files/misc/workflows/functions/README.md b/backend/files/misc/workflows/functions/README.md
new file mode 100644
index 0000000000..eff7179ff2
--- /dev/null
+++ b/backend/files/misc/workflows/functions/README.md
@@ -0,0 +1,4 @@
+
+# Hyperlambda functions for workflows
+
+This folder contains Hyperlambda system functions for your workflows.
diff --git a/backend/files/misc/workflows/functions/compile-csharp.hl b/backend/files/misc/workflows/functions/compile-csharp.hl
new file mode 100644
index 0000000000..b022d69ace
--- /dev/null
+++ b/backend/files/misc/workflows/functions/compile-csharp.hl
@@ -0,0 +1,94 @@
+
+/*
+ * Compiles the specified C# code and loads into the AppDomain.
+ *
+ * Notice, will not compile the specified code if assembly already exists in
+ * AppDomain, unless [recompile] is true.
+ */
+.arguments
+ code:string
+ file:string
+ references:*
+ assembly-name:string
+ recompile:bool
+.example
+ code:@"
+using System;
+using magic.node;
+using magic.node.extensions;
+using magic.signals.contracts;
+
+[Slot(Name = ""get-employee-details"")]
+public class Foo : ISlot
+{
+ public void Signal(ISignaler signaler, Node input)
+ {
+ switch (input.GetEx().ToLower())
+ {
+ case ""john"":
+ input.Add(new Node(""title"", ""cmo""));
+ input.Add(new Node(""phone"", ""92929292""));
+ input.Add(new Node(""email"", ""john@doe.come""));
+ break;
+ }
+ input.Value = null;
+ }
+}"
+ references
+ .:netstandard
+ .:System.Runtime
+ .:System.ComponentModel
+ .:System.Private.CoreLib
+ .:magic.node
+ .:magic.node.extensions
+ .:magic.signals.contracts
+ assembly-name:employees.dll
+ recompile:bool:false
+.icon:rocket_launch
+
+// Sanity checking invocation.
+validators.mandatory:x:@.arguments/*/code
+validators.mandatory:x:@.arguments/*/references
+validators.mandatory:x:@.arguments/*/assembly-name
+
+/*
+ * We only compile C# code if it does not already exist in AppDomain,
+ * unless caller explicitly specifies [recompile] as true.
+ */
+system.plugin.list
+if
+ or
+ get-value:x:@.arguments/*/recompile
+ not-exists:x:@system.plugin.list/*/={@.arguments/*/assembly-name}
+ .lambda
+
+ // Parametrizing [system.compile] invocation.
+ add:x:./*/system.compile
+ get-nodes:x:@.arguments/*/references
+ get-nodes:x:@.arguments/*/assembly-name
+
+ // Checking if caller provided a [file] argument instead of a [code] argument.
+ if
+ and
+ not-exists:x:@.arguments/*/code
+ exists:x:@.arguments/*/file
+ not-null:x:@.arguments/*/file
+ .lambda
+
+ // We've got a [file] argument instead of a [code] argument.
+ load-file:x:@.arguments/*/file
+ add:x:@.lambda/@.lambda/*/system.compile
+ .
+ code:x:@load-file
+
+ else
+
+ // Caller provided a [code] argument.
+ add:x:@.lambda/*/system.compile
+ get-nodes:x:@.arguments/*/code
+
+ // Compiling C# code.
+ system.compile
+
+ // Loading assembly into AppDomain.
+ system.plugin.load:x:@system.compile
diff --git a/backend/files/misc/workflows/functions/context-from-database.hl b/backend/files/misc/workflows/functions/context-from-database.hl
new file mode 100644
index 0000000000..7811c13c1b
--- /dev/null
+++ b/backend/files/misc/workflows/functions/context-from-database.hl
@@ -0,0 +1,41 @@
+
+/*
+ * Returns context for the specified [query] from the specified [type],
+ * and returns to caller.
+ *
+ * Optionally add [threshold] and [max_tokens] to specify similarity and maximum
+ * tokens to return.
+ */
+.arguments
+ type:string
+ query:string
+ threshold:decimal
+ max_tokens:int
+.example
+ type:x:@.arguments/*/type
+ query:x:@.arguments/*/query
+ threshold:decimal:0.3
+ max_tokens:int:2000
+.icon:extension
+
+// Sanity checking invocation.
+validators.mandatory:x:@.arguments/*/type
+validators.mandatory:x:@.arguments/*/query
+
+// Applying default values for optional arguments.
+validators.default:x:@.arguments
+ threshold:decimal:0.3
+ max_tokens:int:4000
+
+// Retrieving context.
+execute:magic.ai.get-context
+ type:x:@.arguments/*/type
+ vector_model:text-embedding-ada-002
+ prompt:x:@.arguments/*/query
+ threshold:x:@.arguments/*/threshold
+ max_tokens:x:@.arguments/*/max_tokens
+
+// Returning result of invocation to caller.
+unwrap:x:./*/return/*
+return
+ result:x:@execute/*/context
diff --git a/backend/files/misc/workflows/functions/context-from-search.hl b/backend/files/misc/workflows/functions/context-from-search.hl
new file mode 100644
index 0000000000..36b2940e10
--- /dev/null
+++ b/backend/files/misc/workflows/functions/context-from-search.hl
@@ -0,0 +1,69 @@
+
+/*
+ * Returns [max_tokens] context for the specified [query] by searching DuckDuckGo.
+ *
+ * [max_tokens] is optional and defaults to 4000.
+ */
+.arguments
+ query:string
+ max_tokens:int
+.example
+ query:x:@.arguments/*/query
+ max_tokens:int:4000
+.icon:extension
+
+// Sanity checking invocation.
+validators.mandatory:x:@.arguments/*/query
+
+// Applying default values for optional arguments.
+validators.default:x:@.arguments
+ max_tokens:int:4000
+
+// Retrieving context.
+execute:magic.http.duckduckgo-and-scrape
+ query:x:@.arguments/*/query
+ max:int:10
+
+// Building our context return value.
+.context:
+while
+ and
+ exists:x:@execute/0/*/snippets/0
+ lt
+ openai.tokenize:x:@.context
+ get-value:x:@.arguments/*/max_tokens
+ .lambda
+
+ // Temporary value.
+ .tmp
+ set-value:x:@.tmp
+ strings.concat
+ get-value:x:@.context
+ .:"\r\n"
+ .:"\r\n"
+ get-value:x:@execute/0/*/snippets/0/*/prompt
+ .:"\r\n"
+ get-value:x:@execute/0/*/snippets/0/*/completion
+ if
+ lt
+ openai.tokenize:x:@.tmp
+ get-value:x:@.arguments/*/max_tokens
+ .lambda
+
+ // Still below [max_tokes].
+ set-value:x:@.context
+ get-value:x:@.tmp
+
+ // Removing top snippet.
+ remove-nodes:x:@execute/0/*/snippets/0
+ if
+ not-exists:x:@execute/0/*/snippets/0
+ .lambda
+
+ // Removing currently iterated URL.
+ remove-nodes:x:@execute/0
+
+// Returning result to caller.
+unwrap:x:./*/return/*
+return
+ result:x:@.context
diff --git a/backend/files/misc/workflows/functions/invoke-openai-chat.hl b/backend/files/misc/workflows/functions/invoke-openai-chat.hl
new file mode 100644
index 0000000000..2f87b420a4
--- /dev/null
+++ b/backend/files/misc/workflows/functions/invoke-openai-chat.hl
@@ -0,0 +1,69 @@
+
+/*
+ * Invokes ChatGPT with the specified [messages].
+ *
+ * Will use the default API key found from configurations.
+ */
+.arguments
+ model:string
+ max_tokens:int
+ messages:*
+.example
+ messages
+ .
+ role:system
+ content:Answer my question in the style of Snoop Dogg
+ .
+ role:user
+ content:"Explain Einstein's theory of relativity as if I am 5 in one sentence"
+.icon:chat_bubble
+
+// Sanity checking invocation.
+validators.mandatory:x:@.arguments/*/messages
+validators.default:x:@.arguments
+ model:gpt-4-1106-preview
+ max_tokens:int:4000
+
+// Retrieving OpenAI API token from configuration settings.
+.token
+set-value:x:@.token
+ strings.concat
+ .:"Bearer "
+ config.get:"magic:openai:key"
+
+// Parametrizing invocation to ChatGPT.
+add:x:./*/http.post/*/payload
+ get-nodes:x:@.arguments/*/messages
+
+// Invokes OpenAI.
+http.post:"https://api.openai.com/v1/chat/completions"
+ convert:bool:true
+ headers
+ Authorization:x:@.token
+ Content-Type:application/json
+ payload
+ model:x:@.arguments/*/model
+ max_tokens:x:@.arguments/*/max_tokens
+ temperature:decimal:0.3
+
+// Sanity checking above invocation.
+if
+ not
+ and
+ mte:x:@http.post
+ .:int:200
+ lt:x:@http.post
+ .:int:300
+ .lambda
+
+ // Oops, error - Logging error and returning status 500 to caller.
+ lambda2hyper:x:@http.post
+ log.error:Something went wrong while invoking OpenAI
+ message:x:@http.post/*/content/*/error/*/message
+ status:x:@http.post
+ error:x:@lambda2hyper
+
+// Returning result to caller.
+unwrap:x:+/*
+return
+ result:x:@http.post/*/content/*/choices/0/*/message/*/content
\ No newline at end of file
diff --git a/backend/files/misc/workflows/functions/send-email.hl b/backend/files/misc/workflows/functions/send-email.hl
new file mode 100644
index 0000000000..514b79b298
--- /dev/null
+++ b/backend/files/misc/workflows/functions/send-email.hl
@@ -0,0 +1,40 @@
+
+/*
+ * Sends an email to the specified [name]/[email] recipient,
+ * with the specified [subject] and [body] using the default from email address and name
+ * from your configuration settings.
+ */
+.arguments
+ name:string
+ email:string
+ subject:string
+ body:string
+.example
+ name:John Doe
+ email:john@doe.com
+ subject:Just checking in
+ body:@"Hi John,
+
+How's it going?"
+.icon:email
+
+// Sanity checking invocation.
+validators.mandatory:x:@.arguments/*/name
+validators.mandatory:x:@.arguments/*/email
+validators.email:x:@.arguments/*/email
+validators.mandatory:x:@.arguments/*/subject
+validators.mandatory:x:@.arguments/*/body
+
+// Forward evaluating arguments to [mail.smtp.send].
+unwrap:x:./*/mail.smtp.send/**
+
+// Sending email.
+mail.smtp.send
+ message
+ to
+ .
+ name:x:@.arguments/*/name
+ email:x:@.arguments/*/email
+ subject:x:@.arguments/*/subject
+ entity:text/plain
+ content:x:@.arguments/*/body
diff --git a/backend/files/misc/workflows/functions/sql-execute.hl b/backend/files/misc/workflows/functions/sql-execute.hl
new file mode 100644
index 0000000000..faf582f845
--- /dev/null
+++ b/backend/files/misc/workflows/functions/sql-execute.hl
@@ -0,0 +1,52 @@
+
+/*
+ * Execute some select SQL statement specified as [sql].
+ * Optionally provide [connection-string], [database-type] and [database].
+ */
+.arguments
+ connection-string:string
+ database-type:string
+ database:string
+ sql:*
+.example
+ connection-string:generic
+ database-type:sqlite
+ database:magic
+ sql:insert into roles (name, description) value (@name, @description)
+ @name:role-name
+ @description:The description for your role
+.icon:backup
+
+// Sanity checking invocation.
+validators.mandatory:x:@.arguments/*/sql
+
+// Applying defaults.
+validators.default:x:@.arguments
+ connection-string:generic
+ database-type:sqlite
+ database:magic
+
+// Connection string to actually use as we connect.
+.connection-string
+
+// Caller supplied an explicit [connection-string] argument.
+set-value:x:@.connection-string
+ strings.concat
+ .:[
+ get-value:x:@.arguments/*/connection-string
+ .:|
+ get-value:x:@.arguments/*/database
+ .:]
+
+// Connecting to database.
+data.connect:x:@.connection-string
+ database-type:x:@.arguments/*/database-type
+
+ // Parametrizing SQL.
+ add:x:./*/data.select
+ get-nodes:x:@.arguments/*/sql/*
+
+ // Executing SQL.
+ data.select:x:@.arguments/*/sql
+ database-type:x:@.arguments/*/database-type
+ return-nodes:x:@data.select/*
diff --git a/backend/files/misc/workflows/functions/sql-select.hl b/backend/files/misc/workflows/functions/sql-select.hl
new file mode 100644
index 0000000000..f551d8517e
--- /dev/null
+++ b/backend/files/misc/workflows/functions/sql-select.hl
@@ -0,0 +1,51 @@
+
+/*
+ * Execute some select SQL statement specified as [sql].
+ * Optionally provide [connection-string], [database-type] and [database].
+ */
+.arguments
+ connection-string:string
+ database-type:string
+ database:string
+ sql:*
+.example
+ connection-string:generic
+ database-type:sqlite
+ database:magic
+ sql:select name from roles where name like @arg1 limit 2
+ @arg1:a%
+.icon:cloud_download
+
+// Sanity checking invocation.
+validators.mandatory:x:@.arguments/*/sql
+
+// Applying defaults.
+validators.default:x:@.arguments
+ connection-string:generic
+ database-type:sqlite
+ database:magic
+
+// Connection string to actually use as we connect.
+.connection-string
+
+// Caller supplied an explicit [connection-string] argument.
+set-value:x:@.connection-string
+ strings.concat
+ .:[
+ get-value:x:@.arguments/*/connection-string
+ .:|
+ get-value:x:@.arguments/*/database
+ .:]
+
+// Connecting to database.
+data.connect:x:@.connection-string
+ database-type:x:@.arguments/*/database-type
+
+ // Parametrizing SQL.
+ add:x:./*/data.select
+ get-nodes:x:@.arguments/*/sql/*
+
+ // Executing SQL.
+ data.select:x:@.arguments/*/sql
+ database-type:x:@.arguments/*/database-type
+ return-nodes:x:@data.select/*
diff --git a/backend/files/misc/workflows/snippets/create-function.hl b/backend/files/misc/workflows/snippets/create-function.hl
new file mode 100644
index 0000000000..051fc2d99e
--- /dev/null
+++ b/backend/files/misc/workflows/snippets/create-function.hl
@@ -0,0 +1,6 @@
+
+// Creates a new function or slot
+function:foo.bar.my-function
+
+ // Returns 42 to caller.
+ return:int:42
diff --git a/backend/files/misc/workflows/snippets/for-each.hl b/backend/files/misc/workflows/snippets/for-each.hl
new file mode 100644
index 0000000000..48eda7b56f
--- /dev/null
+++ b/backend/files/misc/workflows/snippets/for-each.hl
@@ -0,0 +1,6 @@
+
+// For each loop iterating through a list of items.
+for-each:x:@.data/*
+
+ // Currently iterated node can be found by reference in [.dp] node
+ log.info:x:@.dp/#
diff --git a/backend/files/misc/workflows/snippets/fork.hl b/backend/files/misc/workflows/snippets/fork.hl
new file mode 100644
index 0000000000..513a2d8ff5
--- /dev/null
+++ b/backend/files/misc/workflows/snippets/fork.hl
@@ -0,0 +1,6 @@
+
+// Creates a new thread an executes the lambda object on the new thread.
+fork
+
+ // This executes on a different thread.
+ log.info:Hello from another thread
diff --git a/backend/files/misc/workflows/snippets/get-cache.hl b/backend/files/misc/workflows/snippets/get-cache.hl
new file mode 100644
index 0000000000..c49cedd40f
--- /dev/null
+++ b/backend/files/misc/workflows/snippets/get-cache.hl
@@ -0,0 +1,3 @@
+
+// Returns the specified item from your memory cache.
+cache.get:cache-key
diff --git a/backend/files/misc/workflows/snippets/http-get-with-token.hl b/backend/files/misc/workflows/snippets/http-get-with-token.hl
new file mode 100644
index 0000000000..19f0c11236
--- /dev/null
+++ b/backend/files/misc/workflows/snippets/http-get-with-token.hl
@@ -0,0 +1,10 @@
+
+// Retrieves the specified JSON document with the specified bearer token.
+.token
+set-value:x:@.token
+ strings.concat
+ .:"Bearer "
+ config.get:"magic:foo:token"
+http.get:"https://foo.bar"
+ headers
+ Authorization:x:@.token
diff --git a/backend/files/misc/workflows/snippets/http-get.hl b/backend/files/misc/workflows/snippets/http-get.hl
new file mode 100644
index 0000000000..e21c5efe69
--- /dev/null
+++ b/backend/files/misc/workflows/snippets/http-get.hl
@@ -0,0 +1,3 @@
+
+// Retrieves the specified JSON document.
+http.get:"https://foo.bar"
diff --git a/backend/files/misc/workflows/snippets/http-post-with-token.hl b/backend/files/misc/workflows/snippets/http-post-with-token.hl
new file mode 100644
index 0000000000..37b1b0676c
--- /dev/null
+++ b/backend/files/misc/workflows/snippets/http-post-with-token.hl
@@ -0,0 +1,13 @@
+
+// Posts the specified content as a JSON document to the specified URL with the specified bearer token.
+.token
+set-value:x:@.token
+ strings.concat
+ .:"Bearer "
+ config.get:"magic:foo:token"
+http.post:"https://foo.bar"
+ headers
+ Authorization:x:@.token
+ payload
+ id:int:1
+ userId:x:@.some-variable
diff --git a/backend/files/misc/workflows/snippets/http-post.hl b/backend/files/misc/workflows/snippets/http-post.hl
new file mode 100644
index 0000000000..46af1e192a
--- /dev/null
+++ b/backend/files/misc/workflows/snippets/http-post.hl
@@ -0,0 +1,6 @@
+
+// Post the specified content as a JSON document to the specified URL.
+http.post:"https://foo.bar"
+ payload
+ id:int:1
+ userId:x:@.some-variable
diff --git a/backend/files/misc/workflows/snippets/if-else-if.hl b/backend/files/misc/workflows/snippets/if-else-if.hl
new file mode 100644
index 0000000000..dd08dae254
--- /dev/null
+++ b/backend/files/misc/workflows/snippets/if-else-if.hl
@@ -0,0 +1,25 @@
+
+/*
+ * If/else-if/else condition conditionally executing some Hyperlambda [.lambda] object,
+ * defaulting to executing its else if neither condition is true.
+ */
+if
+ eq:x:@.arguments/*/var1
+ .:bool:true
+ .lambda
+
+ // First condition is true.
+ log.info:First condition is true
+
+else-if
+ eq:x:@.arguments/*/var2
+ .:bool:true
+ .lambda
+
+ // Second condition is true.
+ log.info:Second condition is true
+
+else
+
+ // Both above conditions are false.
+ log.info:Both conditions are false
diff --git a/backend/files/misc/workflows/snippets/if-else.hl b/backend/files/misc/workflows/snippets/if-else.hl
new file mode 100644
index 0000000000..526d0020f5
--- /dev/null
+++ b/backend/files/misc/workflows/snippets/if-else.hl
@@ -0,0 +1,17 @@
+
+/*
+ * If/else condition conditionally executing some Hyperlambda [.lambda] object,
+ * defaulting to executing its else if condition is not true.
+ */
+if
+ eq:x:@.arguments/*/foo
+ .:bool:true
+ .lambda
+
+ // Condition is true.
+ log.info:Condition is true
+
+else
+
+ // Condition is false
+ log.info:Condition is false
diff --git a/backend/files/misc/workflows/snippets/if.hl b/backend/files/misc/workflows/snippets/if.hl
new file mode 100644
index 0000000000..8c8f3614b0
--- /dev/null
+++ b/backend/files/misc/workflows/snippets/if.hl
@@ -0,0 +1,10 @@
+
+// If condition conditionally executing some Hyperlambda [.lambda] object.
+if
+ eq:x:@.arguments/*/foo
+ .:bool:true
+ .lambda
+
+ // Condition is true.
+ log.info:Condition is true
+
diff --git a/backend/files/misc/workflows/snippets/join.hl b/backend/files/misc/workflows/snippets/join.hl
new file mode 100644
index 0000000000..7075a1ff20
--- /dev/null
+++ b/backend/files/misc/workflows/snippets/join.hl
@@ -0,0 +1,18 @@
+
+// Creates 2 new threads and waits for both threads to finish before proceeding.
+join
+
+ // First thread.
+ fork
+
+ // This executes on thread 1.
+ log.info:Hello from thread 1
+
+ // Second thread.
+ fork
+
+ // This executes on thread 2.
+ log.info:Hello from thread 2
+
+// Both threads are finished executing.
+log.info:Both threads are done executing
diff --git a/backend/files/misc/workflows/snippets/load-file.hl b/backend/files/misc/workflows/snippets/load-file.hl
new file mode 100644
index 0000000000..4f16b28b25
--- /dev/null
+++ b/backend/files/misc/workflows/snippets/load-file.hl
@@ -0,0 +1,3 @@
+
+// Loads the specified file assuming it is text content.
+load-file:/etc/README.md
diff --git a/backend/files/misc/workflows/snippets/log-error.hl b/backend/files/misc/workflows/snippets/log-error.hl
new file mode 100644
index 0000000000..4529ba37e4
--- /dev/null
+++ b/backend/files/misc/workflows/snippets/log-error.hl
@@ -0,0 +1,5 @@
+
+// Creates an error type of log entry.
+log.error:This is written to the log as an error
+ val1:This is some additional value
+ val2:This is also some additional value
diff --git a/backend/files/misc/workflows/snippets/log-info.hl b/backend/files/misc/workflows/snippets/log-info.hl
new file mode 100644
index 0000000000..4cae60c62f
--- /dev/null
+++ b/backend/files/misc/workflows/snippets/log-info.hl
@@ -0,0 +1,5 @@
+
+// Creates an info type of log entry.
+log.info:This is written to the log
+ val1:This is some additional value
+ val2:This is also some additional value
diff --git a/backend/files/misc/workflows/snippets/publish-socket-message.hl b/backend/files/misc/workflows/snippets/publish-socket-message.hl
new file mode 100644
index 0000000000..c353c48593
--- /dev/null
+++ b/backend/files/misc/workflows/snippets/publish-socket-message.hl
@@ -0,0 +1,11 @@
+
+/*
+ * Publishes a socket message to the specified channel with the specified arguments.
+ *
+ * [roles] are what role(s) client must belong to in order to retrieve message.
+ */
+sockets.signal:channel-name
+ roles:root, admin
+ args
+ arg1:Value of first argument
+ arg2:Value of second argument
diff --git a/backend/files/misc/workflows/snippets/save-file.hl b/backend/files/misc/workflows/snippets/save-file.hl
new file mode 100644
index 0000000000..6f738d7c6e
--- /dev/null
+++ b/backend/files/misc/workflows/snippets/save-file.hl
@@ -0,0 +1,4 @@
+
+// Saves the specified content to the specified file assuming the content is text-based.
+save-file:/etc/foo.md
+ get-content:x:@.file-content
diff --git a/backend/files/misc/workflows/snippets/scrape-url.hl b/backend/files/misc/workflows/snippets/scrape-url.hl
new file mode 100644
index 0000000000..ae7735cd5d
--- /dev/null
+++ b/backend/files/misc/workflows/snippets/scrape-url.hl
@@ -0,0 +1,4 @@
+
+// Example snippet scraping some web page.
+execute:magic.http.scrape-url
+ url:"https://ainiro.io"
diff --git a/backend/files/misc/workflows/snippets/search-duckduckgo-scrape.hl b/backend/files/misc/workflows/snippets/search-duckduckgo-scrape.hl
new file mode 100644
index 0000000000..e670a529a2
--- /dev/null
+++ b/backend/files/misc/workflows/snippets/search-duckduckgo-scrape.hl
@@ -0,0 +1,10 @@
+
+/*
+ * Searches for some query using DuckDuckGo,
+ * finding [max] URLs, for then to scrape all URLs in parallel,
+ * and return aggregated result as Markdown.
+ */
+.query:Who invented Hyperlambda?
+execute:magic.http.duckduckgo-and-scrape
+ query:x:@.query
+ max:int:5
diff --git a/backend/files/misc/workflows/snippets/search-duckduckgo.hl b/backend/files/misc/workflows/snippets/search-duckduckgo.hl
new file mode 100644
index 0000000000..aac773c1fe
--- /dev/null
+++ b/backend/files/misc/workflows/snippets/search-duckduckgo.hl
@@ -0,0 +1,6 @@
+
+// Searches DuckDuckGo for the specified query and returns 5 results.
+.query:Who invented Hyperlambda?
+execute:magic.http.duckduckgo-search
+ query:x:@.query
+ max:int:5
diff --git a/backend/files/misc/workflows/snippets/set-cache.hl b/backend/files/misc/workflows/snippets/set-cache.hl
new file mode 100644
index 0000000000..5622d8f1f7
--- /dev/null
+++ b/backend/files/misc/workflows/snippets/set-cache.hl
@@ -0,0 +1,4 @@
+
+// Saves a value to the memory cache with the specified key.
+cache.set:cache-key
+ value:x:@.some-value
diff --git a/backend/files/misc/workflows/snippets/switch.hl b/backend/files/misc/workflows/snippets/switch.hl
new file mode 100644
index 0000000000..4d50c369ed
--- /dev/null
+++ b/backend/files/misc/workflows/snippets/switch.hl
@@ -0,0 +1,18 @@
+
+// Switch/case lambda conditionally executing a piece of Hyperlambda.
+switch:x:@.arguments/*/input-value
+
+ case:foo
+
+ // [input-value] was equal to "foo".
+ log.info:Value was foo
+
+ case:bar
+
+ // [input-value] was equal to "bar".
+ log.info:Value was bar
+
+ default
+
+ // [input-value] was neither foo nor bar.
+ log.info:Value was neither foo nor bar
diff --git a/backend/files/misc/workflows/snippets/while.hl b/backend/files/misc/workflows/snippets/while.hl
new file mode 100644
index 0000000000..323fe74599
--- /dev/null
+++ b/backend/files/misc/workflows/snippets/while.hl
@@ -0,0 +1,10 @@
+
+// While loop executing its [.lambda] object as long as its condition is true.
+while
+ eq:x:@.continue
+ .:bool:true
+ .lambda
+
+ // Condition is true.
+ log.info:Condition is still true, iterating once more
+
diff --git a/backend/files/system/evaluator/slots.get.hl b/backend/files/system/evaluator/slots.get.hl
new file mode 100644
index 0000000000..6837c53c14
--- /dev/null
+++ b/backend/files/system/evaluator/slots.get.hl
@@ -0,0 +1,13 @@
+
+// Returns all dynamic slots in the system.
+.description:Returns all dynamic slots in the system
+.type:internal
+
+// Ensures user is authorized to access endpoint.
+auth.ticket.verify:root
+
+// Retrieving all system slots.
+slots.vocabulary
+
+// Returning results of the above to caller.
+return-nodes:x:@slots.vocabulary/*
diff --git a/backend/files/system/magic.startup/magic.http.scrape-url.hl b/backend/files/system/magic.startup/magic.http.scrape-url.hl
index 0178b9f03e..9d830c69e5 100644
--- a/backend/files/system/magic.startup/magic.http.scrape-url.hl
+++ b/backend/files/system/magic.startup/magic.http.scrape-url.hl
@@ -596,11 +596,15 @@ slots.create:magic.http.scrape-url
// Checking if this is a list of some sort, at which point we turn it into an unordered list.
switch:x:@get-name
case:li
- set-value:x:@.completion
- strings.concat
- .:"\r\n"
- .:"- "
- get-value:x:@.completion
+ if
+ neq:x:@.completion
+ .:
+ .lambda
+ set-value:x:@.completion
+ strings.concat
+ .:"\r\n"
+ .:"- "
+ get-value:x:@.completion
case:p
set-value:x:@.completion
strings.concat
@@ -644,14 +648,17 @@ slots.create:magic.http.scrape-url
not-null:x:@.dp/#/*/prompt
mt
strings.length:x:@.dp/#/*/prompt
- .:int:50
+ .:int:0
exists:x:@.dp/#/*/completion
not-null:x:@.dp/#/*/completion
- mt
- strings.length:x:@.dp/#/*/completion
- .:int:50
.lambda
+ // Trimming both prompt and completion.
+ set-value:x:@.dp/#/*/prompt
+ strings.trim:x:@.dp/#/*/prompt
+ set-value:x:@.dp/#/*/completion
+ strings.trim:x:@.dp/#/*/completion
+
// Valid snippet, making sure we return it to caller.
add:x:../*/return
get-nodes:x:@.dp/#
diff --git a/backend/files/system/magic.startup/magic.workflows.actions.execute.hl b/backend/files/system/magic.startup/magic.workflows.actions.execute.hl
new file mode 100644
index 0000000000..3c03e31de7
--- /dev/null
+++ b/backend/files/system/magic.startup/magic.workflows.actions.execute.hl
@@ -0,0 +1,25 @@
+
+/*
+ * Slot that executes a single workflow action.
+ */
+slots.create:magic.workflows.functions.execute
+
+ // Sanity checking invocation.
+ validators.mandatory:x:@.arguments/*/name
+ validators.mandatory:x:@.arguments/*/filename
+
+ // Parametrizing [io.file.execute].
+ add:x:./*/io.file.execute
+ get-nodes:x:@.arguments/*/arguments/*
+
+ // Executing action.
+ io.file.execute:x:@.arguments/*/filename
+
+ // Decorating [result] node.
+ set-value:x:./*/return
+ get-value:x:@.arguments/*/name
+ add:x:./*/return
+ get-nodes:x:@io.file.execute/*
+
+ // Returning result of invocation to caller.
+ return
diff --git a/backend/files/system/workflows/functions.get.hl b/backend/files/system/workflows/functions.get.hl
new file mode 100644
index 0000000000..ed1c8c7025
--- /dev/null
+++ b/backend/files/system/workflows/functions.get.hl
@@ -0,0 +1,60 @@
+
+/*
+ * Returns all workflow functions to caller.
+ */
+
+// Verifying user is authorized to access endpoint.
+auth.ticket.verify:root
+
+// Listing all functions and snippets in workflow folder.
+io.file.list-recursively:/misc/workflows/
+
+// Filtering out everything not ending with '.hl'.
+for-each:x:@io.file.list-recursively/*
+ if
+ strings.ends-with:x:@.dp/#
+ .:.hl
+ .lambda
+
+ // Loading file to add meta data.
+ load-file:x:@.dp/#
+ hyper2lambda:x:-
+ comments:true
+ if
+ eq
+ get-name:x:@hyper2lambda/0
+ .:..
+ .lambda
+ unwrap:x:+/*/*
+ add:x:@.lambda/@.lambda/0/-/*/*
+ .
+ description:x:@hyper2lambda/0
+ if
+ strings.starts-with:x:@.dp/#
+ .:/misc/workflows/snippets/
+ .lambda
+ unwrap:x:+/*/*
+ add:x:@.lambda/@.lambda/0/-/*/*
+ .
+ content:x:@load-file
+
+ // Creating a name for function.
+ strings.split:x:@.dp/#
+ .:/
+ strings.split:x:-/0/-
+ .:.
+ remove-nodes:x:@strings.split/0/-
+ strings.join:x:@strings.split/0
+ .:.
+
+ // Returning result to caller.
+ unwrap:x:+/*/*/*
+ add:x:../*/return
+ .
+ .
+ name:x:@strings.join
+ filename:x:@.dp/#
+ icon:x:@hyper2lambda/*/.icon
+
+// Returning result to caller.
+return
diff --git a/backend/files/system/workflows/get-hyperlambda.get.hl b/backend/files/system/workflows/get-hyperlambda.get.hl
new file mode 100644
index 0000000000..213986d91a
--- /dev/null
+++ b/backend/files/system/workflows/get-hyperlambda.get.hl
@@ -0,0 +1,79 @@
+
+/*
+ * Returns all workflow functions to caller.
+ */
+.arguments
+ filename:string
+
+// Verifying user is authorized to access endpoint.
+auth.ticket.verify:root
+
+// Loading function Hyperlambda file and transforming to lambda object.
+load-file:x:@.arguments/*/filename
+
+// Checking if this is a function template.
+if
+ strings.starts-with:x:@.arguments/*/filename
+ .:/misc/workflows/functions/
+ .lambda
+
+ /*
+ * This is a function template type of snippet.
+ * Parametrizing accordingly.
+ */
+ .function
+ add:x:@.function
+ hyper2lambda:x:@load-file
+ comments:true
+ .name
+ strings.split:x:@.arguments/*/filename
+ .:/
+ strings.split:x:-/0/-
+ .:.
+ remove-nodes:x:@strings.split/0/-
+ set-value:x:@.name
+ strings.join:x:@strings.split/0
+ .:.
+
+ // Creating our function invocation.
+ .invocation
+ execute:magic.workflows.functions.execute
+ name
+ filename
+ arguments
+ set-value:x:@.invocation/*/execute/*/name
+ get-value:x:@.name
+ set-value:x:@.invocation/*/execute/*/filename
+ get-value:x:@.arguments/*/filename
+
+ // Creating our function comment.
+ if
+ eq
+ get-name:x:@.function/0
+ .:..
+ .lambda
+ unwrap:x:+/*/*
+ insert-before:x:@.invocation/0
+ .
+ ..:x:@.function/0
+
+ // Adding default argument placeholders for invocation.
+ add:x:@.invocation/*/execute/*/arguments
+ get-nodes:x:@.function/*/.example/*
+
+ // Returning result to caller as Hyperlambda.
+ lambda2hyper:x:@.invocation/*
+ comments:true
+ unwrap:x:+/*
+ return
+ result:x:@lambda2hyper
+
+else
+
+ /*
+ * This is just some other template snippet,
+ * returning as is.
+ */
+ unwrap:x:+/*
+ return
+ result:x:@load-file
diff --git a/backend/slots/Collect.cs b/backend/slots/Collect.cs
index 12433076e6..05ae82e208 100644
--- a/backend/slots/Collect.cs
+++ b/backend/slots/Collect.cs
@@ -1,5 +1,5 @@
/*
- * Copyright (c) Aista Ltd, 2021 - 2023 team@ainiro.io.
+ * Copyright (c) Thomas Hansen, 2021 - 2023 thomas@ainiro.io.
*/
using System;
diff --git a/backend/slots/ConsoleLog.cs b/backend/slots/ConsoleLog.cs
index dc3daf559a..6948e041b9 100644
--- a/backend/slots/ConsoleLog.cs
+++ b/backend/slots/ConsoleLog.cs
@@ -1,5 +1,5 @@
/*
- * Copyright (c) Aista Ltd, 2021 - 2023 team@ainiro.io.
+ * Copyright (c) Thomas Hansen, 2021 - 2023 thomas@ainiro.io.
*/
using System;
diff --git a/backend/slots/InitTimeZone.cs b/backend/slots/InitTimeZone.cs
index ee8a1bb684..4b65211a81 100644
--- a/backend/slots/InitTimeZone.cs
+++ b/backend/slots/InitTimeZone.cs
@@ -1,5 +1,5 @@
/*
- * Copyright (c) Aista Ltd, 2021 - 2023 team@ainiro.io.
+ * Copyright (c) Thomas Hansen, 2021 - 2023 thomas@ainiro.io.
*/
using magic.node;
diff --git a/backend/slots/Version.cs b/backend/slots/Version.cs
index c13b32fe83..5fae8815a7 100644
--- a/backend/slots/Version.cs
+++ b/backend/slots/Version.cs
@@ -1,5 +1,5 @@
/*
- * Copyright (c) Aista Ltd, 2021 - 2023 team@ainiro.io.
+ * Copyright (c) Thomas Hansen, 2021 - 2023 thomas@ainiro.io.
*/
using magic.node;
@@ -20,7 +20,7 @@ public class Version : ISlot
/// Parameters passed from signaler
public void Signal(ISignaler signaler, Node input)
{
- input.Value = "v16.11.26";
+ input.Value = "v17.0.0";
}
}
}
diff --git a/backend/slots/VersionCompare.cs b/backend/slots/VersionCompare.cs
index 5bc8a1b559..016ba3dd06 100644
--- a/backend/slots/VersionCompare.cs
+++ b/backend/slots/VersionCompare.cs
@@ -1,5 +1,5 @@
/*
- * Copyright (c) Aista Ltd, 2021 - 2023 team@ainiro.io.
+ * Copyright (c) Thomas Hansen, 2021 - 2023 thomas@ainiro.io.
*/
using System.Linq;
diff --git a/frontend/package.json b/frontend/package.json
index b07ed817c1..2a1076108f 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -62,4 +62,4 @@
"tslint": "~6.1.3",
"typescript": "~4.8.3"
}
-}
\ No newline at end of file
+}
diff --git a/frontend/src/app/_general/classes/common-error-messages.ts b/frontend/src/app/_general/classes/common-error-messages.ts
index 14b0bd49c4..4ac57cc5c5 100644
--- a/frontend/src/app/_general/classes/common-error-messages.ts
+++ b/frontend/src/app/_general/classes/common-error-messages.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
/**
diff --git a/frontend/src/app/_general/classes/common-regex.ts b/frontend/src/app/_general/classes/common-regex.ts
index c201b0da6d..cbba9acda1 100644
--- a/frontend/src/app/_general/classes/common-regex.ts
+++ b/frontend/src/app/_general/classes/common-regex.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
/**
diff --git a/frontend/src/app/_general/classes/passwords-matching-validator.ts b/frontend/src/app/_general/classes/passwords-matching-validator.ts
index 5a5a5d077f..ccf733c6b0 100644
--- a/frontend/src/app/_general/classes/passwords-matching-validator.ts
+++ b/frontend/src/app/_general/classes/passwords-matching-validator.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
import { UntypedFormGroup } from '@angular/forms';
diff --git a/frontend/src/app/_general/components/assumptions/assumptions.component.html b/frontend/src/app/_general/components/assumptions/assumptions.component.html
index 158a6aa238..c923dbd9e4 100644
--- a/frontend/src/app/_general/components/assumptions/assumptions.component.html
+++ b/frontend/src/app/_general/components/assumptions/assumptions.component.html
@@ -13,6 +13,7 @@
diff --git a/frontend/src/app/_general/components/assumptions/assumptions.component.scss b/frontend/src/app/_general/components/assumptions/assumptions.component.scss
index 3d9aa65b23..100c5486d7 100644
--- a/frontend/src/app/_general/components/assumptions/assumptions.component.scss
+++ b/frontend/src/app/_general/components/assumptions/assumptions.component.scss
@@ -1,5 +1,5 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
mat-icon {
diff --git a/frontend/src/app/_general/components/assumptions/assumptions.component.ts b/frontend/src/app/_general/components/assumptions/assumptions.component.ts
index 813f82e68d..d83075b8f9 100644
--- a/frontend/src/app/_general/components/assumptions/assumptions.component.ts
+++ b/frontend/src/app/_general/components/assumptions/assumptions.component.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
import { Component, Input, OnInit } from '@angular/core';
diff --git a/frontend/src/app/_general/components/backends-list/backends-list.component.scss b/frontend/src/app/_general/components/backends-list/backends-list.component.scss
index 81cfe8beee..0c0eb1d6f5 100644
--- a/frontend/src/app/_general/components/backends-list/backends-list.component.scss
+++ b/frontend/src/app/_general/components/backends-list/backends-list.component.scss
@@ -1,5 +1,5 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
@import "../../../../assets/styles/_variables/colors.scss";
diff --git a/frontend/src/app/_general/components/backends-list/backends-list.component.ts b/frontend/src/app/_general/components/backends-list/backends-list.component.ts
index 6f8ab628cd..f47cc54e36 100644
--- a/frontend/src/app/_general/components/backends-list/backends-list.component.ts
+++ b/frontend/src/app/_general/components/backends-list/backends-list.component.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
import { Component, OnInit } from '@angular/core';
diff --git a/frontend/src/app/_general/components/components.module.ts b/frontend/src/app/_general/components/components.module.ts
index adfbe45731..0118fc4307 100644
--- a/frontend/src/app/_general/components/components.module.ts
+++ b/frontend/src/app/_general/components/components.module.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
import { NgModule } from '@angular/core';
diff --git a/frontend/src/app/_general/components/confirmation-dialog/confirmation-dialog.component.scss b/frontend/src/app/_general/components/confirmation-dialog/confirmation-dialog.component.scss
index e90f8ed2c2..2b851126cc 100644
--- a/frontend/src/app/_general/components/confirmation-dialog/confirmation-dialog.component.scss
+++ b/frontend/src/app/_general/components/confirmation-dialog/confirmation-dialog.component.scss
@@ -1,5 +1,5 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
p {
diff --git a/frontend/src/app/_general/components/confirmation-dialog/confirmation-dialog.component.ts b/frontend/src/app/_general/components/confirmation-dialog/confirmation-dialog.component.ts
index a7699811b0..cc824d2e6d 100644
--- a/frontend/src/app/_general/components/confirmation-dialog/confirmation-dialog.component.ts
+++ b/frontend/src/app/_general/components/confirmation-dialog/confirmation-dialog.component.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
import { Component, Inject, OnInit } from '@angular/core';
diff --git a/frontend/src/app/_general/components/create-assumption-test-dialog/create-assumption-test-dialog.component.scss b/frontend/src/app/_general/components/create-assumption-test-dialog/create-assumption-test-dialog.component.scss
index e1cc4817e0..0e1abbdc9c 100644
--- a/frontend/src/app/_general/components/create-assumption-test-dialog/create-assumption-test-dialog.component.scss
+++ b/frontend/src/app/_general/components/create-assumption-test-dialog/create-assumption-test-dialog.component.scss
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
::ng-deep {
diff --git a/frontend/src/app/_general/components/create-assumption-test-dialog/create-assumption-test-dialog.component.ts b/frontend/src/app/_general/components/create-assumption-test-dialog/create-assumption-test-dialog.component.ts
index e00ad5b22a..7308ca8422 100644
--- a/frontend/src/app/_general/components/create-assumption-test-dialog/create-assumption-test-dialog.component.ts
+++ b/frontend/src/app/_general/components/create-assumption-test-dialog/create-assumption-test-dialog.component.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
// Angular and system imports.
diff --git a/frontend/src/app/_general/components/dialog/dialog.component.ts b/frontend/src/app/_general/components/dialog/dialog.component.ts
index 8369f241e6..27ca4ad184 100644
--- a/frontend/src/app/_general/components/dialog/dialog.component.ts
+++ b/frontend/src/app/_general/components/dialog/dialog.component.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
import { Component, Inject } from '@angular/core';
diff --git a/frontend/src/app/_general/components/execute-endpoint-dialog/execute-endpoint-dialog.component.scss b/frontend/src/app/_general/components/execute-endpoint-dialog/execute-endpoint-dialog.component.scss
index 2d515fe652..2451fa9f7b 100644
--- a/frontend/src/app/_general/components/execute-endpoint-dialog/execute-endpoint-dialog.component.scss
+++ b/frontend/src/app/_general/components/execute-endpoint-dialog/execute-endpoint-dialog.component.scss
@@ -1,5 +1,5 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
::ng-deep .endpoint-result {
diff --git a/frontend/src/app/_general/components/execute-endpoint-dialog/execute-endpoint-dialog.component.ts b/frontend/src/app/_general/components/execute-endpoint-dialog/execute-endpoint-dialog.component.ts
index 65b04a5d82..4c41c4baff 100644
--- a/frontend/src/app/_general/components/execute-endpoint-dialog/execute-endpoint-dialog.component.ts
+++ b/frontend/src/app/_general/components/execute-endpoint-dialog/execute-endpoint-dialog.component.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
import { ChangeDetectorRef, Component, Inject, OnInit, ViewChild } from '@angular/core';
diff --git a/frontend/src/app/_general/components/load-snippet-dialog/load-snippet-dialog.component.scss b/frontend/src/app/_general/components/load-snippet-dialog/load-snippet-dialog.component.scss
index 37ad084ae3..1862d756de 100644
--- a/frontend/src/app/_general/components/load-snippet-dialog/load-snippet-dialog.component.scss
+++ b/frontend/src/app/_general/components/load-snippet-dialog/load-snippet-dialog.component.scss
@@ -1,5 +1,5 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
.mat-list-option {
diff --git a/frontend/src/app/_general/components/load-snippet-dialog/load-snippet-dialog.component.ts b/frontend/src/app/_general/components/load-snippet-dialog/load-snippet-dialog.component.ts
index ea7a237e32..ae238876a3 100644
--- a/frontend/src/app/_general/components/load-snippet-dialog/load-snippet-dialog.component.ts
+++ b/frontend/src/app/_general/components/load-snippet-dialog/load-snippet-dialog.component.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
// Angular and system imports.
diff --git a/frontend/src/app/_general/components/loading-skeleton/loading-skeleton.component.html b/frontend/src/app/_general/components/loading-skeleton/loading-skeleton.component.html
index 75206f8dfb..be1e3647e4 100644
--- a/frontend/src/app/_general/components/loading-skeleton/loading-skeleton.component.html
+++ b/frontend/src/app/_general/components/loading-skeleton/loading-skeleton.component.html
@@ -4,7 +4,7 @@
[class]="colClass"
*ngFor="let item of itemsArray">
diff --git a/frontend/src/app/_general/components/loading-skeleton/loading-skeleton.component.scss b/frontend/src/app/_general/components/loading-skeleton/loading-skeleton.component.scss
index bdfb47903c..8a5b99ae7e 100644
--- a/frontend/src/app/_general/components/loading-skeleton/loading-skeleton.component.scss
+++ b/frontend/src/app/_general/components/loading-skeleton/loading-skeleton.component.scss
@@ -1,5 +1,5 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
.block {
diff --git a/frontend/src/app/_general/components/loading-skeleton/loading-skeleton.component.ts b/frontend/src/app/_general/components/loading-skeleton/loading-skeleton.component.ts
index cf769ce0c0..961f62f00c 100644
--- a/frontend/src/app/_general/components/loading-skeleton/loading-skeleton.component.ts
+++ b/frontend/src/app/_general/components/loading-skeleton/loading-skeleton.component.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
import { Component, Input, OnInit } from '@angular/core';
diff --git a/frontend/src/app/_general/components/log-item-details/log-item-details.component.scss b/frontend/src/app/_general/components/log-item-details/log-item-details.component.scss
index 13d0669fd7..c731508eec 100644
--- a/frontend/src/app/_general/components/log-item-details/log-item-details.component.scss
+++ b/frontend/src/app/_general/components/log-item-details/log-item-details.component.scss
@@ -1,5 +1,5 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
.pre-formatted {
diff --git a/frontend/src/app/_general/components/log-item-details/log-item-details.component.ts b/frontend/src/app/_general/components/log-item-details/log-item-details.component.ts
index 84ec197d90..5664b8e68e 100644
--- a/frontend/src/app/_general/components/log-item-details/log-item-details.component.ts
+++ b/frontend/src/app/_general/components/log-item-details/log-item-details.component.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
import { Component, Inject } from '@angular/core';
diff --git a/frontend/src/app/_general/components/openai/openai-answer-dialog/openai-answer-dialog.component.scss b/frontend/src/app/_general/components/openai/openai-answer-dialog/openai-answer-dialog.component.scss
index d7daa16854..7a8c7f9e4b 100644
--- a/frontend/src/app/_general/components/openai/openai-answer-dialog/openai-answer-dialog.component.scss
+++ b/frontend/src/app/_general/components/openai/openai-answer-dialog/openai-answer-dialog.component.scss
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
.code {
diff --git a/frontend/src/app/_general/components/openai/openai-answer-dialog/openai-answer-dialog.component.ts b/frontend/src/app/_general/components/openai/openai-answer-dialog/openai-answer-dialog.component.ts
index 09f7381d63..884e64c908 100644
--- a/frontend/src/app/_general/components/openai/openai-answer-dialog/openai-answer-dialog.component.ts
+++ b/frontend/src/app/_general/components/openai/openai-answer-dialog/openai-answer-dialog.component.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
import { Component, EventEmitter, Inject, Input, OnInit } from '@angular/core';
diff --git a/frontend/src/app/_general/components/openai/openai-configuration-dialog/openai-configuration-dialog.component.scss b/frontend/src/app/_general/components/openai/openai-configuration-dialog/openai-configuration-dialog.component.scss
index fb6ef1dbdd..c348825659 100644
--- a/frontend/src/app/_general/components/openai/openai-configuration-dialog/openai-configuration-dialog.component.scss
+++ b/frontend/src/app/_general/components/openai/openai-configuration-dialog/openai-configuration-dialog.component.scss
@@ -1,5 +1,5 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
a {
diff --git a/frontend/src/app/_general/components/openai/openai-configuration-dialog/openai-configuration-dialog.component.ts b/frontend/src/app/_general/components/openai/openai-configuration-dialog/openai-configuration-dialog.component.ts
index 4adb368464..5af4eed488 100644
--- a/frontend/src/app/_general/components/openai/openai-configuration-dialog/openai-configuration-dialog.component.ts
+++ b/frontend/src/app/_general/components/openai/openai-configuration-dialog/openai-configuration-dialog.component.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
import { Component, OnInit } from '@angular/core';
diff --git a/frontend/src/app/_general/components/openai/openai-prompt/openai-prompt.component.scss b/frontend/src/app/_general/components/openai/openai-prompt/openai-prompt.component.scss
index 64de22e948..53b08ad9e8 100644
--- a/frontend/src/app/_general/components/openai/openai-prompt/openai-prompt.component.scss
+++ b/frontend/src/app/_general/components/openai/openai-prompt/openai-prompt.component.scss
@@ -1,5 +1,5 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
.prompt {
diff --git a/frontend/src/app/_general/components/openai/openai-prompt/openai-prompt.component.ts b/frontend/src/app/_general/components/openai/openai-prompt/openai-prompt.component.ts
index 0d5998d0de..a98002ccea 100644
--- a/frontend/src/app/_general/components/openai/openai-prompt/openai-prompt.component.ts
+++ b/frontend/src/app/_general/components/openai/openai-prompt/openai-prompt.component.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
diff --git a/frontend/src/app/_general/components/privacy-modal/privacy-modal.component.html b/frontend/src/app/_general/components/privacy-modal/privacy-modal.component.html
index 1190d13972..74d98cb656 100644
--- a/frontend/src/app/_general/components/privacy-modal/privacy-modal.component.html
+++ b/frontend/src/app/_general/components/privacy-modal/privacy-modal.component.html
@@ -5,16 +5,16 @@
Privacy Policy
This policy applies to all our all existing and new users as of 14th of April 2023.
- At Arta Marketing, accessible from ainiro.io, one of our
+ At AINIRO.IO, accessible from ainiro.io, one of our
main priorities is our users privacy. This document contains types of information
- that is collected and recorded by Arta Marketing and how we use it.
+ that is collected and recorded by AINIRO.IO and how we use it.
This policy applies to all our all existing and new users as of 14th of April 2023.
SCOPE
- Arta Marketing AS (Arta Marketing, "we") might collect and process personal data of users of
+ AINIRO.IO AS (AINIRO.IO, "we") might collect and process personal data of users of
AINIRO's
website and online services. This Privacy Policy applies to personal data we obtain
from our customers and their representatives (“Users”) through our websites
@@ -38,17 +38,17 @@
SCOPE
- This Privacy Policy only covers data processing carried out by Arta Marketing. The Privacy Policy
+ This Privacy Policy only covers data processing carried out by AINIRO.IO. The Privacy Policy
does not address, and we are not responsible for, the privacy practices of any third parties.
- Arta Marketing disclaims all responsibility for the processing carried out by third parties, also
+ AINIRO.IO disclaims all responsibility for the processing carried out by third parties, also
in cases where Services include hyperlinks to third parties' websites.
Please note that this Privacy Policy applies to processing of personal data carried out by
- Arta Marketing as a data controller. As regards the data Arta Marketing's customers or Users insert
+ AINIRO.IO as a data controller. As regards the data AINIRO.IO's customers or Users insert
into
- Services while using the Services, Arta Marketing registers this personal data as a data processor
+ Services while using the Services, AINIRO.IO registers this personal data as a data processor
and the relevant customer shall be considered to be the data controller with regard to this
personal data.
@@ -69,7 +69,7 @@
PERSONAL DATA PROCESSED AND SOURCES OF DATA.
- Arta Marketing may collect and process for example the following User Data from Users: (i) name and
+ AINIRO.IO may collect and process for example the following User Data from Users: (i) name and
contact details; (ii) e-mail address; (iii) phone number; (iv) invoicing and billing information;
(v) other personal data Users provide themselves.
@@ -116,9 +116,9 @@
WEB ANALYTICS SERVICES
PURPOSES
- There are several purposes for the processing of personal data by Arta Marketing. Personal data is
+ There are several purposes for the processing of personal data by AINIRO.IO. Personal data is
processed
- by Arta Marketing for managing the relationships with customers, facilitating transactions and
+ by AINIRO.IO for managing the relationships with customers, facilitating transactions and
payments,
and for managing, developing and analysing our customer service. Personal data is also used to
direct marketing at special customer groups, and other business activities related to any of
@@ -126,7 +126,7 @@
PURPOSES
- Personal data is also processed by Arta Marketing for the following purposes:
+ Personal data is also processed by AINIRO.IO for the following purposes:
TO PROVIDE OUR SERVICES AND CARRY OUT OUR CONTRACTUAL OBLIGATIONS.
@@ -193,10 +193,10 @@
TRANSFER TO COUNTRIES OUTSIDE OF EUROPE.
RECIPIENTS
- We only share personal data within the organisation of Arta Marketing if and as far as reasonably
+ We only share personal data within the organisation of AINIRO.IO if and as far as reasonably
necessary
to perform and develop our Services. We do not share personal data with third parties outside of
- Arta Marketing's organization unless one of the following circumstances applies:
+ AINIRO.IO's organization unless one of the following circumstances applies:
IT IS NECESSARY FOR THE PURPOSES SET OUT IN THIS PRIVACY POLICY
@@ -212,12 +212,12 @@
IT IS NECESSARY FOR THE PURPOSES SET OUT IN THIS PRIVACY POLICY
FOR LEGAL REASONS
- We may share personal data with third parties outside Arta Marketing's organization if we have a
+ We may share personal data with third parties outside AINIRO.IO's organization if we have a
good-faith
belief that access to and use of the personal data is reasonably necessary to: (i) meet any
applicable
law, regulation, and/or court order; (ii) detect, prevent, or otherwise address fraud, security
- or technical issues; and/or (iii) protect the interests, properties or safety of Arta Marketing, our
+ or technical issues; and/or (iii) protect the interests, properties or safety of AINIRO.IO, our
Users
or the public in accordance with the law. When possible, we will inform Users about such transfer
and processing.
@@ -238,7 +238,7 @@
TO AUTHORIZED SERVICE PROVIDERS
FOR OTHER LEGITIMATE REASONS
- If Arta Marketing is involved in a merger, acquisition or asset sale, we may transfer personal data
+ If AINIRO.IO is involved in a merger, acquisition or asset sale, we may transfer personal data
to the
third party involved. However, we will continue to ensure the confidentiality of all personal data.
We will give notice to all Users concerned when the personal data are transferred or become subject
@@ -248,7 +248,7 @@
FOR OTHER LEGITIMATE REASONS
WITH EXPLICIT CONSENT
- We may share personal data with third parties outside Arta Marketing's organization for other
+ We may share personal data with third parties outside AINIRO.IO's organization for other
reasons than
the ones mentioned before, when we have the User's explicit consent to do so. The User has the
right to withdraw this consent at all times.
@@ -257,7 +257,7 @@
WITH EXPLICIT CONSENT
STORAGE PERIOD
- Arta Marketing does not store personal data longer than is legally permitted and necessary for the
+ AINIRO.IO does not store personal data longer than is legally permitted and necessary for the
purposes
of providing the Services or the relevant parts thereof. The storage period depends on the nature
of the information and the purposes of processing. The maximum period may therefore vary per use.
@@ -279,7 +279,7 @@
STORAGE PERIOD
USERS' RIGHTS
- Arta Marketing offers access for the Users to the personal data processed by Arta Marketing. This
+ AINIRO.IO offers access for the Users to the personal data processed by AINIRO.IO. This
means that
Users may contact us and we will inform what personal data we have collected and processed
regarding the said User and the purposes such data are used for.
@@ -323,7 +323,7 @@
RIGHT TO OBJECT
- In the event and at the sole discretion of Arta Marketing, if it is determined that the Service can
+ In the event and at the sole discretion of AINIRO.IO, if it is determined that the Service can
no
longer be provided without customer acceptance of modified terms, a pro-rated refund of service
will be paid back to the User.
@@ -365,9 +365,9 @@
DIRECT MARKETING
You have the right to opt out of receiving electronic direct marketing communications from us,
- and choosing not to receive marketing communications from us in the future. Arta Marketing uses the
+ and choosing not to receive marketing communications from us in the future. AINIRO.IO uses the
Users' e-mail addresses on record to communicate of updates and important information regarding
- the Arta Marketing infrastructure in the form of occasional newsletters. Users have the possibility
+ the AINIRO.IO infrastructure in the form of occasional newsletters. Users have the possibility
to
opt out of these e-mails by unsubscribing through the e-mail itself.
@@ -417,7 +417,7 @@
INFORMATION SECURITY
laws, about the breach as soon as reasonably possible.
- Trade name: Arta Marketing AS
+ Trade name: AINIRO.IO AS
Organization number: 930 920 657
diff --git a/frontend/src/app/_general/components/privacy-modal/privacy-modal.component.ts b/frontend/src/app/_general/components/privacy-modal/privacy-modal.component.ts
index c1f07bf080..c38bad475e 100644
--- a/frontend/src/app/_general/components/privacy-modal/privacy-modal.component.ts
+++ b/frontend/src/app/_general/components/privacy-modal/privacy-modal.component.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
import { Component } from '@angular/core';
diff --git a/frontend/src/app/_general/components/pwa-update-dialog/pwa-update-dialog.component.ts b/frontend/src/app/_general/components/pwa-update-dialog/pwa-update-dialog.component.ts
index a00844f3f3..590b16110e 100644
--- a/frontend/src/app/_general/components/pwa-update-dialog/pwa-update-dialog.component.ts
+++ b/frontend/src/app/_general/components/pwa-update-dialog/pwa-update-dialog.component.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
import { Component } from '@angular/core';
diff --git a/frontend/src/app/_general/components/query-params/query-params.component.ts b/frontend/src/app/_general/components/query-params/query-params.component.ts
index 0043946f39..c8de57c29b 100644
--- a/frontend/src/app/_general/components/query-params/query-params.component.ts
+++ b/frontend/src/app/_general/components/query-params/query-params.component.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
import { Component, Input, OnInit } from '@angular/core';
diff --git a/frontend/src/app/_general/components/searchbox/searchbox.component.ts b/frontend/src/app/_general/components/searchbox/searchbox.component.ts
index 80807c6b79..9d77158937 100644
--- a/frontend/src/app/_general/components/searchbox/searchbox.component.ts
+++ b/frontend/src/app/_general/components/searchbox/searchbox.component.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
diff --git a/frontend/src/app/_general/components/shortkeys/shortkeys.component.ts b/frontend/src/app/_general/components/shortkeys/shortkeys.component.ts
index 2f57732866..1c74188099 100644
--- a/frontend/src/app/_general/components/shortkeys/shortkeys.component.ts
+++ b/frontend/src/app/_general/components/shortkeys/shortkeys.component.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
import { Component, Inject, OnInit } from '@angular/core';
@@ -44,6 +44,15 @@ export class ShortkeysComponent implements OnInit {
}
];
}
+ if (this.data.type.indexOf('find') > -1) {
+ this.shortkeys = [
+ ...this.shortkeys,
+ {
+ name: 'Find',
+ key: 'Alt + F'
+ }
+ ];
+ }
if (this.data.type.indexOf('execute') > -1) {
this.shortkeys = [
...this.shortkeys,
diff --git a/frontend/src/app/_general/components/snippet-name-dialog/snippet-name-dialog.component.ts b/frontend/src/app/_general/components/snippet-name-dialog/snippet-name-dialog.component.ts
index 268a781357..3a6191ab45 100644
--- a/frontend/src/app/_general/components/snippet-name-dialog/snippet-name-dialog.component.ts
+++ b/frontend/src/app/_general/components/snippet-name-dialog/snippet-name-dialog.component.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
import { Component, Inject } from '@angular/core';
diff --git a/frontend/src/app/_general/components/terms-modal/terms-modal.component.html b/frontend/src/app/_general/components/terms-modal/terms-modal.component.html
index 0377ecacf3..1e22e07804 100644
--- a/frontend/src/app/_general/components/terms-modal/terms-modal.component.html
+++ b/frontend/src/app/_general/components/terms-modal/terms-modal.component.html
@@ -5,69 +5,69 @@
Terms & Conditions
These terms apply to all users as of 14th of April 2023.
Scope
-
These General Terms of Service (“Terms”) will be applied to an agreement between Arta Marketing AS, a
+
These General Terms of Service (“Terms”) will be applied to an agreement between AINIRO.IO AS, a
Norwegian company, and a customer (“Customer”)
- to whom Arta Marketing provides cloud-based infrastructure and software services for the Customer's
- commercial purposes (“Service”). In these Terms, Arta Marketing and Customer are referred to jointly
+ to whom AINIRO.IO provides cloud-based infrastructure and software services for the Customer's
+ commercial purposes (“Service”). In these Terms, AINIRO.IO and Customer are referred to jointly
as the “Parties” and individually as a “Party”. The Parties expressly acknowledge that the
Service is neither intended nor fit for use by consumers.
Agreement documents
-
An agreement is formed between the Parties when Arta Marketing receives an appropriately filled-in
+
An agreement is formed between the Parties when AINIRO.IO receives an appropriately filled-in
registration or order form (“Order”) which the Customer has submitted through a registration
- and/or purchasing procedure on Arta Marketing's website under the domain ainiro.io. In connection
+ and/or purchasing procedure on AINIRO.IO's website under the domain ainiro.io. In connection
with the registration
procedure the Customer will create a service account. Any referral herein to “Agreement”
includes the Order, service descriptions attached or referred to in the Order, the service
level agreement (“SLA”), the acceptable use policy (“AUP”) and these Terms. The SLA and the
- AUP are available on Arta Marketing's website under the domain ainiro.io.
+ AUP are available on AINIRO.IO's website under the domain ainiro.io.
Provision of service
-
Arta Marketing shall provide the Customer with the Service, which is specified in the Order. If the
- provided Service differs from the specifications, Arta Marketing shall correct the Service promptly
+
AINIRO.IO shall provide the Customer with the Service, which is specified in the Order. If the
+ provided Service differs from the specifications, AINIRO.IO shall correct the Service promptly
after a notification by the Customer.
Service levels
-
Arta Marketing shall offer compensation to the Customer for all unscheduled interruptions in the
- provision of the Service in accordance with the SLA in force. In such cases, Arta Marketing will add
+
AINIRO.IO shall offer compensation to the Customer for all unscheduled interruptions in the
+ provision of the Service in accordance with the SLA in force. In such cases, AINIRO.IO will add
free trial days to your subscription, not give a refund.
Support
-
Arta Marketing shall provide the Customer's administrative users with technical support with respect
- to the Service through the means described under the Support page on Arta Marketing's website under
+
AINIRO.IO shall provide the Customer's administrative users with technical support with respect
+ to the Service through the means described under the Support page on AINIRO.IO's website under
the domain ainiro.io.
- Contact details and service hours are provided on Arta Marketing's website under the domain
+ Contact details and service hours are provided on AINIRO.IO's website under the domain
ainiro.io.
Access to Service Account
The Customer will be responsible for activities that occur under the Customer's service
account, including actions taken by the Customer's employees and other representatives
(“User”) as well as their compliance with user instructions and the AUP. The Customer must
- promptly notify Arta Marketing if the Customer suspects that an unauthorised third party is using,
+ promptly notify AINIRO.IO if the Customer suspects that an unauthorised third party is using,
or
may have access to, the Service or the Customer's service account.
Third-party software
The Customer must comply with third-party software license terms if the use of such software
- is offered by Arta Marketing for the provision of the Service, or if such software is obtained and
- uploaded in the Service by the Customer, with Arta Marketing's separate instructions.
+ is offered by AINIRO.IO for the provision of the Service, or if such software is obtained and
+ uploaded in the Service by the Customer, with AINIRO.IO's separate instructions.
Paid subscriptions and free trials
The Service and the prices for the Service (“Service Fee”) are described in the service
- descriptions available on Arta Marketing's website under the domain ainiro.io. Arta Marketing may
+ descriptions available on AINIRO.IO's website under the domain ainiro.io. AINIRO.IO may
from time to time offer trials of the
- Service for a specified period without payment. Arta Marketing reserves the right, in its sole
+ Service for a specified period without payment. AINIRO.IO reserves the right, in its sole
discretion, to determine Customer's eligibility for a free trial and, subject to applicable
laws, to withdraw or to modify an offer trial at any time without prior notice and with no
liability, to the greatest extent permitted under the law. For a free trial of the Service,
- Arta Marketing may require Customer to provide payment details to start the trial. At the end of
+ AINIRO.IO may require Customer to provide payment details to start the trial. At the end of
such
- trial, Arta Marketing may automatically start to charge the applicable service fees for the Service
+ trial, AINIRO.IO may automatically start to charge the applicable service fees for the Service
immediately after the end of the free trial in accordance with Section Payment Terms and
- according to the price list on Arta Marketing's website under the domain ainiro.io. The applicable
+ according to the price list on AINIRO.IO's website under the domain ainiro.io. The applicable
subscription to the Service
must be cancelled through Customer's account's subscription page, or the Service must be
terminated in its entirety, before the end of the trial period in case Customer does not
- accept the applicable prices provided on Arta Marketing's website under the domain ainiro.io.
+ accept the applicable prices provided on AINIRO.IO's website under the domain ainiro.io.
Customer shall ensure that the
authorised Users use the Service in compliance with this Agreement. Misuse of the Service by
Customer or any User may lead to termination of the Agreement or suspension or denial of
access to the Service.
Right to use the Service and eligibility
-
Subject to due subscription to the Service and compliance with the Agreement, Arta Marketing grants
+
Subject to due subscription to the Service and compliance with the Agreement, AINIRO.IO grants
to
Customer a non-exclusive, nontransferable and limited right to enter and use the Service and
grant Users access rights to the Service.
@@ -76,21 +76,21 @@
External Back-Up Copies
defined below) stored in the Service. Such back-up copies shall be stored outside the
Service.
Changes to the Service
-
Arta Marketing is entitled to develop its services and business offerings. In case of a change in the
- Service, Arta Marketing will notify the Customer in advance. If Arta Marketing considers that a
+
AINIRO.IO is entitled to develop its services and business offerings. In case of a change in the
+ Service, AINIRO.IO will notify the Customer in advance. If AINIRO.IO considers that a
change will
- have a material effect in the Service, Arta Marketing will notify the Customer at least 30 days
+ have a material effect in the Service, AINIRO.IO will notify the Customer at least 30 days
before the change will be effected and reserve the Customer a possibility to terminate the
Agreement.
Prices
-
The prices of the Service are specified in the Order. Unless otherwise agreed, Arta Marketing charges
- the Customer in advance for each calendar month of the Service according to Arta Marketing's price
- list which is valid at the time and is available on Arta Marketing's website under the domain
+
The prices of the Service are specified in the Order. Unless otherwise agreed, AINIRO.IO charges
+ the Customer in advance for each calendar month of the Service according to AINIRO.IO's price
+ list which is valid at the time and is available on AINIRO.IO's website under the domain
ainiro.io. Applicable value added
tax and other duties will be added to the prices unless the prices are specified VAT
inclusive.
Payment terms
-
Arta Marketing shall charge for the Service on a monthly or annual subscription based model, where
+
AINIRO.IO shall charge for the Service on a monthly or annual subscription based model, where
the payment
method associated with the subscription becomes automatically deducted in advance for one
month/year at the time. Invoices are made available on the Customer's service account. To avoid
@@ -111,7 +111,7 @@
Customer's obligations and rights
information as prompted by the Order and update such information when required. Please note
that this Agreement only covers the Service and the use thereof and any and all linked third
party services and platforms are provided by the relevant third parties and covered by their
- terms of service or other agreement or license. Arta Marketing does not assume any liability in
+ terms of service or other agreement or license. AINIRO.IO does not assume any liability in
regard to use of such third-party services and platforms, whether or not they are linked to
the Service.
Use restrictions
@@ -131,7 +131,7 @@
Use restrictions
sign up for an account on behalf of someone else;
use, sell, rent, transfer, license or otherwise provide anybody with the Service, except
- as provided herein without Arta Marketing's written consent;
+ as provided herein without AINIRO.IO's written consent;
interfere with other Customers' use and enjoyment of the Service;
circumvent or try to circumvent any usage control or anti-copy functionalities of the
Service;
@@ -152,67 +152,67 @@
Customer Data
Customer's behalf generates in or submits to the Service (“Customer Data”) or the data
Customer submits to a third-party service or platform which might be accessed by the
Service, subject to and on the basis of the permissions or consents Customer has granted.
- Customer agrees that Arta Marketing does not assume any liability or responsibility in respect to
+ Customer agrees that AINIRO.IO does not assume any liability or responsibility in respect to
any
Customer Data, with the exceptions relating to Personal Data as set forth in Section Data
Processing below. Customer shall at all times ensure that Customer Data does not infringe
any third party intellectual property rights or violate any applicable laws or legislation.
Customer shall not upload any illegal, offensive, threatening, libellous, defamatory, or
- otherwise inappropriate data to the Service. For clarity, Arta Marketing is not responsible and
+ otherwise inappropriate data to the Service. For clarity, AINIRO.IO is not responsible and
shall
not be held liable for any Customer Data, nor does it endorse any opinion contained in any
Customer Data. Aside from the rights specifically granted herein, Customer retains ownership
of all rights, including intellectual property rights, in the Customer Data.
Data processing
-
In order to provide the Service, Arta Marketing may process personal data on behalf of the Customer
+
In order to provide the Service, AINIRO.IO may process personal data on behalf of the Customer
as
- a data processor for the purposes of providing the Service. Arta Marketing processes certain
+ a data processor for the purposes of providing the Service. AINIRO.IO processes certain
personal
data also as a data controller. Such personal data includes, inter alia, data of the
Customer's contact persons, invoicing details and other personal data of Customer's contact
- persons which Arta Marketing processes in order to maintain the customer relationship. The
- requirements relating to the personal data Arta Marketing processes as data controller are set out
+ persons which AINIRO.IO processes in order to maintain the customer relationship. The
+ requirements relating to the personal data AINIRO.IO processes as data controller are set out
in
- our Privacy Policy available on Arta Marketing's website under the domain ainiro.io. In this
+ our Privacy Policy available on AINIRO.IO's website under the domain ainiro.io. In this
section, “Personal Data” refers to
any information relating to an identified or identifiable natural person the Customer enters
- into the Service and Arta Marketing processes on behalf of the Customer in the course and within the
+ into the Service and AINIRO.IO processes on behalf of the Customer in the course and within the
scope of providing the Services. In connection with the use of the Service, the Customer may
- transfer various data to Arta Marketing for processing on behalf of the Customer. Such data might
+ transfer various data to AINIRO.IO for processing on behalf of the Customer. Such data might
include Personal Data. The Customer shall be considered as the sole data controller and
- Arta Marketing as the sole data processor with respect to such data. The following terms and
- conditions set forth in this section concern the data processing activities of Arta Marketing as a
+ AINIRO.IO as the sole data processor with respect to such data. The following terms and
+ conditions set forth in this section concern the data processing activities of AINIRO.IO as a
data processor with respect to the Personal Data it processes on behalf of the Customer.
General requirements relating to processing of Personal Data
The Customer shall be responsible for the lawful collection, processing and use, and for the
accuracy of the Personal Data, as well as for preserving the rights of the individuals
concerned. If and to the extent legally required, the Customer shall inform the individuals
- concerned regarding the processing of their Personal Data by Arta Marketing, and shall obtain their
- consent if necessary. The Personal Data processed by Arta Marketing on behalf of the Customer may
+ concerned regarding the processing of their Personal Data by AINIRO.IO, and shall obtain their
+ consent if necessary. The Personal Data processed by AINIRO.IO on behalf of the Customer may
include e.g. Personal Data of the Customer's employees and end-customers, such as contact
details of the aforementioned data subjects. The Customer acknowledges that due to the
- nature of the Service, Arta Marketing cannot control and has no obligation to verify Personal Data
- the Customer transfers to Arta Marketing for processing on behalf of the Customer when the Customer
+ nature of the Service, AINIRO.IO cannot control and has no obligation to verify Personal Data
+ the Customer transfers to AINIRO.IO for processing on behalf of the Customer when the Customer
uses the Service. The Customer ensures that the Customer is entitled to transfer the
- Personal Data to Arta Marketing so that Arta Marketing may lawfully process the Personal Data on
+ Personal Data to AINIRO.IO so that AINIRO.IO may lawfully process the Personal Data on
behalf of the
- Customer in accordance with this Agreement. Arta Marketing shall not use Personal Data for any
+ Customer in accordance with this Agreement. AINIRO.IO shall not use Personal Data for any
purpose other than that of rendering and providing the Service and will not assert liens or
other rights over, or sell or disclose the Personal Data to any third parties, without the
- Customer's prior written approval. Arta Marketing shall process Personal Data in accordance with
+ Customer's prior written approval. AINIRO.IO shall process Personal Data in accordance with
this
Agreement and documented instructions from the Customer. The Customer's instructions must be
commercially reasonable, compliant with applicable data protection laws and consistent with
- this Agreement. Arta Marketing shall not be obliged to verify whether any instructions given by the
+ this Agreement. AINIRO.IO shall not be obliged to verify whether any instructions given by the
Customer are consistent with applicable laws, as the Customer is responsible for such
- compliance verification of its instructions. However, if Arta Marketing detects that any instruction
+ compliance verification of its instructions. However, if AINIRO.IO detects that any instruction
given by the Customer is noncompliant with the requirements of any data protection
- legislation applicable to Arta Marketing's operations, Arta Marketing shall inform the Customer in
+ legislation applicable to AINIRO.IO's operations, AINIRO.IO shall inform the Customer in
writing.
- Arta Marketing and the Customer shall comply with the EU Regulation 2016/679 on the protection of
+ AINIRO.IO and the Customer shall comply with the EU Regulation 2016/679 on the protection of
natural persons with regard to the processing of personal data and on the free movement of
such data (“Regulation”) and any applicable European or foreign data protection laws as
- amended, as well as data protection authorities' orders and guidelines. Arta Marketing and the
+ amended, as well as data protection authorities' orders and guidelines. AINIRO.IO and the
Customer shall implement and maintain appropriate technical and organisational security
measures to protect the Personal Data within their area of responsibility, in order to
safeguard the Personal Data against unauthorised or unlawful processing or access and
@@ -230,152 +230,152 @@
General requirements relating to processing of Personal Data
a process for regularly testing, assessing and evaluating the effectiveness of technical
and organisational measures for ensuring the security of the processing.
-
Arta Marketing's assistance obligations
+
AINIRO.IO's assistance obligations
To respond to requests from individuals exercising their rights as foreseen in applicable
data protection law, such as the right of access and the right to rectification or erasure,
the Customer shall primarily use the corresponding functions of the Services, such as the
- Arta Marketing HUB. Arta Marketing shall provide the Customer with commercially reasonable
+ AINIRO.IO HUB. AINIRO.IO shall provide the Customer with commercially reasonable
assistance, without
- undue delay, taking into account the nature of the processing. Arta Marketing shall further provide
+ undue delay, taking into account the nature of the processing. AINIRO.IO shall further provide
the Customer with commercially reasonable assistance in ensuring compliance with the
Customer's obligations to perform security and data protection assessments, breach
notifications and prior consultations of the competent supervisory authority, as set out in
the applicable data protection law, taking into account the nature of the processing and the
- information available to Arta Marketing. In case such assistance requires extensive measures from
- Arta Marketing, the Customer shall pay additional reasonable remuneration to Arta Marketing for
+ information available to AINIRO.IO. In case such assistance requires extensive measures from
+ AINIRO.IO, the Customer shall pay additional reasonable remuneration to AINIRO.IO for
handling such
- assistance requests. In addition, Arta Marketing shall, and shall procure that its personnel
+ assistance requests. In addition, AINIRO.IO shall, and shall procure that its personnel
(including its subcontractors' personnel) shall:
only process Personal Data in accordance with the Customer's written instructions and
- not for Arta Marketing's own purposes;
+ not for AINIRO.IO's own purposes;
ensure that individuals processing Personal Data have committed themselves to
confidentiality or are under an appropriate statutory obligation of confidentiality.
Transfers of Personal Data
-
The Customer accepts that Arta Marketing may have Personal Data processed and accessible by its
+
The Customer accepts that AINIRO.IO may have Personal Data processed and accessible by its
subprocessors outside the Customer's country of domicile to provide the Service. In case the
processing is subject to any EU data protection law and Personal Data is transferred from
the European Economic Area (“EEA”) to a subprocessor for processing in any country outside
the EEA that is not recognised by the European Commission as providing an adequate level of
- protection for personal data, Arta Marketing provides for appropriate safeguards by standard
+ protection for personal data, AINIRO.IO provides for appropriate safeguards by standard
contractual clauses, adopted or approved by the European Commission and applicable to the
processing by the nonEEA subprocessor or by any other appropriate safeguard as foreseen
under Regulation.
Audits
-
The Customer shall have the right to audit the facilities and processing activities of Arta Marketing
+
The Customer shall have the right to audit the facilities and processing activities of AINIRO.IO
under this Agreement to examine the level of protection and security provided for Personal
- Data processed under this Agreement and to assess the compliance of Arta Marketing with the terms
+ Data processed under this Agreement and to assess the compliance of AINIRO.IO with the terms
and
conditions relating to Personal Data set out herein. Each Party shall bear its own costs for
any such audit. Where an audit may lead to the disclosure of business or trade secrets of
- Arta Marketing or threaten intellectual property rights of Arta Marketing, the Customer shall employ
+ AINIRO.IO or threaten intellectual property rights of AINIRO.IO, the Customer shall employ
an
independent expert to carry out the audit, and the expert shall agree to be bound to
- confidentiality to Arta Marketing's benefit.
+ confidentiality to AINIRO.IO's benefit.
Subprocessors
-
General authorisation. The Customer gives its general authorisation to allow Arta Marketing to
+
General authorisation. The Customer gives its general authorisation to allow AINIRO.IO to
involve
- Arta Marketing's affiliated companies and other subcontractors as subprocessors to process Personal
+ AINIRO.IO's affiliated companies and other subcontractors as subprocessors to process Personal
Data in connection with the provision of the Service, to the extent such appointment does
- not lead to noncompliance with any applicable law or Arta Marketing's obligations under this
- Agreement. Arta Marketing ensures that the involved subprocessors are properly qualified, will be
- under a data processing agreement with Arta Marketing, and comply with data processing obligations
- similar to the ones which apply to Arta Marketing under this Agreement. Arta Marketing shall be
+ not lead to noncompliance with any applicable law or AINIRO.IO's obligations under this
+ Agreement. AINIRO.IO ensures that the involved subprocessors are properly qualified, will be
+ under a data processing agreement with AINIRO.IO, and comply with data processing obligations
+ similar to the ones which apply to AINIRO.IO under this Agreement. AINIRO.IO shall be
liable towards
- the Customer for the processing of Personal Data carried out by Arta Marketing's subprocessors.
+ the Customer for the processing of Personal Data carried out by AINIRO.IO's subprocessors.
Change of subprocessor
-
Arta Marketing is free to choose and change its subprocessors. Upon request, Arta Marketing shall
+
AINIRO.IO is free to choose and change its subprocessors. Upon request, AINIRO.IO shall
inform the
Customer of subprocessors currently involved. In case there is a later change of
- subprocessor (addition or replacement), Arta Marketing shall notify the Customer of such change. In
+ subprocessor (addition or replacement), AINIRO.IO shall notify the Customer of such change. In
case the Customer objects such change of subprocessor on reasonable grounds, the Customer
- has the right to request change of the subprocessor. If Arta Marketing is not willing to change the
+ has the right to request change of the subprocessor. If AINIRO.IO is not willing to change the
subprocessor the Customer has objected, the Customer shall have the right to terminate the
Service and this Agreement.
Breaches
-
Arta Marketing shall, without undue delay after having become aware of it, inform the Customer in
+
AINIRO.IO shall, without undue delay after having become aware of it, inform the Customer in
writing about any data breaches relating to Personal Data and any other events where the
- security of Personal Data processed on behalf of the Customer has been compromised. Arta Marketing's
+ security of Personal Data processed on behalf of the Customer has been compromised. AINIRO.IO's
notification about the breach to the Customer shall include at least the following:
description of the nature of the breach;
-
name and contact details of Arta Marketing's contact point where more information can be
+
name and contact details of AINIRO.IO's contact point where more information can be
obtained;
-
description of the measures taken by Arta Marketing to address the breach, including, where
+
description of the measures taken by AINIRO.IO to address the breach, including, where
appropriate, measures to mitigate its possible adverse effects.
Deletion and return of Personal Data
-
Arta Marketing shall not take any action to intentionally erase any Personal Data processed on behalf
+
AINIRO.IO shall not take any action to intentionally erase any Personal Data processed on behalf
of the Customer, without the Customer's explicit request. Personal Data shall be processed
under this Agreement until the Customer has ceased to use the Service. Within a reasonable
time after the termination or expiry of this Agreement, or after the Customer has
- permanently ceased to use the Service, Arta Marketing shall permanently delete Personal Data from
+ permanently ceased to use the Service, AINIRO.IO shall permanently delete Personal Data from
its
- storage media, except to the extent that Arta Marketing is under a statutory obligation to continue
- storing such Personal Data. On the Customer's request, Arta Marketing shall confirm the deletion in
+ storage media, except to the extent that AINIRO.IO is under a statutory obligation to continue
+ storing such Personal Data. On the Customer's request, AINIRO.IO shall confirm the deletion in
writing. The obligation to delete Personal Data shall not apply to Personal Data contained
in regular back-up copies of comprehensive datasets from which the individual deletion of
Personal Data would not be possible without significant efforts or costs.
Intellectual Property Rights
All intellectual property rights to and in the Service as well as intellectual property
- rights pertaining thereto, are exclusive property of Arta Marketing or its licensors with all rights
+ rights pertaining thereto, are exclusive property of AINIRO.IO or its licensors with all rights
reserved. All intellectual property rights to the content uploaded into the Service by or on
behalf of the Customer will remain the exclusive property of the Customer or its licensors.
All intellectual property rights relating to the provision of the Services, including
suggestions for improvements made by the Customer, will remain the exclusive property of
- Arta Marketing or its licensors.
+ AINIRO.IO or its licensors.
Limited Warranty
-
Arta Marketing will offer service level compensations to the Customer in accordance with the SLA. In
- all other respects the Service is provided on “as-is” and “as-available” basis, and Arta Marketing
+
AINIRO.IO will offer service level compensations to the Customer in accordance with the SLA. In
+ all other respects the Service is provided on “as-is” and “as-available” basis, and AINIRO.IO
will not give the Customer any warranty or guarantee, express or implied, for the Service,
including but without limitation to warranties of merchantability, fitness for any
particular purpose, performance, or noninfringement. The parties expressly note that the
Service is not designed to be error-free or uninterrupted and therefore they are neither
intended nor fit for purposes that require fail-safe performance.
Limited Liability
-
Arta Marketing will not be liable for indirect damage or consequential damages caused to the
+
AINIRO.IO will not be liable for indirect damage or consequential damages caused to the
Customer.
- Arta Marketing's total aggregate liability under or in connection with this Agreement shall be
+ AINIRO.IO's total aggregate liability under or in connection with this Agreement shall be
limited to the aggregate Service Fee paid by the Customer for the Service for the last six
(6) months preceding the occurrence for which damages are claimed. These limitations will
not apply to damage caused by wilful misconduct or gross negligence. In order to be valid
and enforceable, all claims for damages must be made within 30 days from the date the damage
was or should reasonably have been noticed by the Customer.
Assignment and Third-Party Benefits
-
Arta Marketing may assign the Agreement in whole or in part to another group company or in connection
+
AINIRO.IO may assign the Agreement in whole or in part to another group company or in connection
with the trade sale which includes the provision of the Service. The Customer may assign the
- Agreement to a third party with Arta Marketing's prior written consent which Arta Marketing will not
+ Agreement to a third party with AINIRO.IO's prior written consent which AINIRO.IO will not
unreasonably withhold. The Agreement will not create any third-party beneficiary rights in
any third party.
Temporary Suspension
-
If the Customer has breached the provisions of the Agreement or Arta Marketing has justifiable
+
If the Customer has breached the provisions of the Agreement or AINIRO.IO has justifiable
reasons
- to believe such a breach exists, Arta Marketing may temporarily suspend the provision of the
+ to believe such a breach exists, AINIRO.IO may temporarily suspend the provision of the
Service.
Termination for Convenience
The Customer may terminate the Agreement for any reason by issuing 5 days written notice to
- Arta Marketing. Any payment made will not be refunded, but the subscription will be cancelled.
- Arta Marketing may terminate the Agreement for any reason by issuing 30 days written notice to
+ AINIRO.IO. Any payment made will not be refunded, but the subscription will be cancelled.
+ AINIRO.IO may terminate the Agreement for any reason by issuing 30 days written notice to
the Customer.
Termination for Cause
Either Party may terminate the Agreement with immediate effect if the other Party has
materially breached the provisions of the Agreement.
Transition Service
-
Arta Marketing will provide the Customer with transition services in order to enable the Customer to
+
AINIRO.IO will provide the Customer with transition services in order to enable the Customer to
transfer the Customer Data to another service provider. The Customer must order the
transition services before the termination of the Agreement. The description of the
- transition services and applicable prices are provided on Arta Marketing's website under the domain
+ transition services and applicable prices are provided on AINIRO.IO's website under the domain
ainiro.io.
Entire Agreement and Amendments
The Agreement constitutes the entire agreement and supersedes all previous commitments
between the parties in respect of the provision of the Service. All amendments to the
- Agreement must be made in writing. Arta Marketing may modify this Agreement by notifying the
+ Agreement must be made in writing. AINIRO.IO may modify this Agreement by notifying the
Customer
- in writing, such as by e-mail or by posting a revised document version on Arta Marketing's website.
- If Arta Marketing considers that a revision will have a material effect on the Agreement, Arta
+ in writing, such as by e-mail or by posting a revised document version on AINIRO.IO's website.
+ If AINIRO.IO considers that a revision will have a material effect on the Agreement, Arta
Marketing will
notify the Customer at least 30 days before the revision will be effected and reserve the
Customer a possibility to terminate the Agreement.
diff --git a/frontend/src/app/_general/components/terms-modal/terms-modal.component.ts b/frontend/src/app/_general/components/terms-modal/terms-modal.component.ts
index ee2f7bbf34..40dfbab004 100644
--- a/frontend/src/app/_general/components/terms-modal/terms-modal.component.ts
+++ b/frontend/src/app/_general/components/terms-modal/terms-modal.component.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
import { Component } from '@angular/core';
diff --git a/frontend/src/app/_general/models/app-manifest.ts b/frontend/src/app/_general/models/app-manifest.ts
index c2b7193879..85e2378121 100644
--- a/frontend/src/app/_general/models/app-manifest.ts
+++ b/frontend/src/app/_general/models/app-manifest.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
/**
diff --git a/frontend/src/app/_general/models/arg-type.model.ts b/frontend/src/app/_general/models/arg-type.model.ts
index 5eb46f927b..06d206b91d 100644
--- a/frontend/src/app/_general/models/arg-type.model.ts
+++ b/frontend/src/app/_general/models/arg-type.model.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
/**
diff --git a/frontend/src/app/_general/models/column-ex.model.ts b/frontend/src/app/_general/models/column-ex.model.ts
index 82766c38d5..4039fe3b67 100644
--- a/frontend/src/app/_general/models/column-ex.model.ts
+++ b/frontend/src/app/_general/models/column-ex.model.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
import { ForeignKey } from "src/app/models/foreign-key.model";
diff --git a/frontend/src/app/_general/models/crudify.model.ts b/frontend/src/app/_general/models/crudify.model.ts
index e910d3056c..afe219c7e9 100644
--- a/frontend/src/app/_general/models/crudify.model.ts
+++ b/frontend/src/app/_general/models/crudify.model.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
import { ArgType } from "./arg-type.model";
diff --git a/frontend/src/app/_general/models/custom-sql.model.ts b/frontend/src/app/_general/models/custom-sql.model.ts
index 69362e2e64..3239eae489 100644
--- a/frontend/src/app/_general/models/custom-sql.model.ts
+++ b/frontend/src/app/_general/models/custom-sql.model.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
/**
diff --git a/frontend/src/app/_general/models/database.model.ts b/frontend/src/app/_general/models/database.model.ts
index c7c0de5c31..71222a0ba1 100644
--- a/frontend/src/app/_general/models/database.model.ts
+++ b/frontend/src/app/_general/models/database.model.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
// Application specific imports.
diff --git a/frontend/src/app/_general/models/databases.model.ts b/frontend/src/app/_general/models/databases.model.ts
index afe15261fe..f2aaec7c84 100644
--- a/frontend/src/app/_general/models/databases.model.ts
+++ b/frontend/src/app/_general/models/databases.model.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
// Application specific imports.
diff --git a/frontend/src/app/_general/models/default-database-type.model.ts b/frontend/src/app/_general/models/default-database-type.model.ts
index 7082df3e3a..3ff0f16af5 100644
--- a/frontend/src/app/_general/models/default-database-type.model.ts
+++ b/frontend/src/app/_general/models/default-database-type.model.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
/**
diff --git a/frontend/src/app/_general/models/endpoint.model.ts b/frontend/src/app/_general/models/endpoint.model.ts
index 20115faf99..ab0b5dc1dd 100644
--- a/frontend/src/app/_general/models/endpoint.model.ts
+++ b/frontend/src/app/_general/models/endpoint.model.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
// Application specific imports.
diff --git a/frontend/src/app/_general/models/loc-result.model.ts b/frontend/src/app/_general/models/loc-result.model.ts
index f2a9b545e2..8fabad6125 100644
--- a/frontend/src/app/_general/models/loc-result.model.ts
+++ b/frontend/src/app/_general/models/loc-result.model.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
// Application specific imports
diff --git a/frontend/src/app/_general/models/magic-response.model.ts b/frontend/src/app/_general/models/magic-response.model.ts
index 202ec1a3fe..a60e86f948 100644
--- a/frontend/src/app/_general/models/magic-response.model.ts
+++ b/frontend/src/app/_general/models/magic-response.model.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
/**
diff --git a/frontend/src/app/_general/models/prompt-response.model.ts b/frontend/src/app/_general/models/prompt-response.model.ts
index e1646fb251..ad04f7d1a4 100644
--- a/frontend/src/app/_general/models/prompt-response.model.ts
+++ b/frontend/src/app/_general/models/prompt-response.model.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
/**
diff --git a/frontend/src/app/_general/models/table-ex.model.ts b/frontend/src/app/_general/models/table-ex.model.ts
index 194ea69a4a..6cf8d4eb4c 100644
--- a/frontend/src/app/_general/models/table-ex.model.ts
+++ b/frontend/src/app/_general/models/table-ex.model.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
// Application specific imports.
diff --git a/frontend/src/app/_general/models/verb.model.ts b/frontend/src/app/_general/models/verb.model.ts
index 597f966ebe..d3d18944b0 100644
--- a/frontend/src/app/_general/models/verb.model.ts
+++ b/frontend/src/app/_general/models/verb.model.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
/**
diff --git a/frontend/src/app/_general/pipes/date-since.pipe.ts b/frontend/src/app/_general/pipes/date-since.pipe.ts
index 46642b9db1..256bc6b107 100644
--- a/frontend/src/app/_general/pipes/date-since.pipe.ts
+++ b/frontend/src/app/_general/pipes/date-since.pipe.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
import { Pipe, PipeTransform } from '@angular/core';
diff --git a/frontend/src/app/_general/pipes/date.pipe.ts b/frontend/src/app/_general/pipes/date.pipe.ts
index d5271149cd..0865de8ee2 100644
--- a/frontend/src/app/_general/pipes/date.pipe.ts
+++ b/frontend/src/app/_general/pipes/date.pipe.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
import { Pipe, PipeTransform } from '@angular/core';
diff --git a/frontend/src/app/_general/pipes/marked.pipe.ts b/frontend/src/app/_general/pipes/marked.pipe.ts
index cb98f8af3e..4a2af8afc7 100644
--- a/frontend/src/app/_general/pipes/marked.pipe.ts
+++ b/frontend/src/app/_general/pipes/marked.pipe.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
// Angular imports.
diff --git a/frontend/src/app/_general/pipes/sort-by.pipe.ts b/frontend/src/app/_general/pipes/sort-by.pipe.ts
index 4ff777af13..f0020b1a60 100644
--- a/frontend/src/app/_general/pipes/sort-by.pipe.ts
+++ b/frontend/src/app/_general/pipes/sort-by.pipe.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
import { Pipe, PipeTransform } from '@angular/core';
diff --git a/frontend/src/app/_general/services/ai.service.ts b/frontend/src/app/_general/services/ai.service.ts
index e67361a44d..b10ac5d347 100644
--- a/frontend/src/app/_general/services/ai.service.ts
+++ b/frontend/src/app/_general/services/ai.service.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
import { Injectable } from '@angular/core';
diff --git a/frontend/src/app/_general/services/assumption.service.ts b/frontend/src/app/_general/services/assumption.service.ts
index 68a6af8813..1680ab7884 100644
--- a/frontend/src/app/_general/services/assumption.service.ts
+++ b/frontend/src/app/_general/services/assumption.service.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
// Angular and system imports.
diff --git a/frontend/src/app/_general/services/backend.service.ts b/frontend/src/app/_general/services/backend.service.ts
index 77c56dd619..e309c59c2b 100644
--- a/frontend/src/app/_general/services/backend.service.ts
+++ b/frontend/src/app/_general/services/backend.service.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
// Angular and system imports.
diff --git a/frontend/src/app/_general/services/backendsstorage.service.ts b/frontend/src/app/_general/services/backendsstorage.service.ts
index 91c514a411..7a484a0920 100644
--- a/frontend/src/app/_general/services/backendsstorage.service.ts
+++ b/frontend/src/app/_general/services/backendsstorage.service.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
// Angular and system imports.
diff --git a/frontend/src/app/_general/services/bazar.service.ts b/frontend/src/app/_general/services/bazar.service.ts
index 04cb12e65a..646bc46750 100644
--- a/frontend/src/app/_general/services/bazar.service.ts
+++ b/frontend/src/app/_general/services/bazar.service.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
// Angular and system imports.
diff --git a/frontend/src/app/_general/services/cache.service.ts b/frontend/src/app/_general/services/cache.service.ts
index 6816a1f5e0..3be762d0d0 100644
--- a/frontend/src/app/_general/services/cache.service.ts
+++ b/frontend/src/app/_general/services/cache.service.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
// Angular and system imports.
diff --git a/frontend/src/app/_general/services/codemirror-actions.service.ts b/frontend/src/app/_general/services/codemirror-actions.service.ts
index 12d12cbf02..cfb9c37297 100644
--- a/frontend/src/app/_general/services/codemirror-actions.service.ts
+++ b/frontend/src/app/_general/services/codemirror-actions.service.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
import { Injectable, NgZone } from '@angular/core';
@@ -54,6 +54,11 @@ export class CodemirrorActionsService {
this.action.next('deleteFile');
})
};
+ res.options.extraKeys['Alt-F'] = () => {
+ this.ngZone.run(() => {
+ this.action.next('find');
+ })
+ };
res.options.extraKeys['Alt-C'] = () => {
this.ngZone.run(() => {
this.action.next('close');
diff --git a/frontend/src/app/_general/services/config.service.ts b/frontend/src/app/_general/services/config.service.ts
index 9d06c57378..eb2753b57c 100644
--- a/frontend/src/app/_general/services/config.service.ts
+++ b/frontend/src/app/_general/services/config.service.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
// Angular and system imports.
diff --git a/frontend/src/app/_general/services/crudify.service.ts b/frontend/src/app/_general/services/crudify.service.ts
index 38488bbe15..c1ae7b3cbe 100644
--- a/frontend/src/app/_general/services/crudify.service.ts
+++ b/frontend/src/app/_general/services/crudify.service.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
// Angular and system imports.
diff --git a/frontend/src/app/_general/services/diagnostics.service.ts b/frontend/src/app/_general/services/diagnostics.service.ts
index b192a6ca95..af7c76f472 100644
--- a/frontend/src/app/_general/services/diagnostics.service.ts
+++ b/frontend/src/app/_general/services/diagnostics.service.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
// Angular and system imports.
diff --git a/frontend/src/app/_general/services/endpoint.service.ts b/frontend/src/app/_general/services/endpoint.service.ts
index 0f5f1c3824..df48a4fec4 100644
--- a/frontend/src/app/_general/services/endpoint.service.ts
+++ b/frontend/src/app/_general/services/endpoint.service.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
// Angular and system imports.
diff --git a/frontend/src/app/_general/services/evaluator.service.ts b/frontend/src/app/_general/services/evaluator.service.ts
index b43e59a008..50e845c3dd 100644
--- a/frontend/src/app/_general/services/evaluator.service.ts
+++ b/frontend/src/app/_general/services/evaluator.service.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
// Angular and system imports.
diff --git a/frontend/src/app/_general/services/file.service.ts b/frontend/src/app/_general/services/file.service.ts
index 0db150a870..b305776f40 100644
--- a/frontend/src/app/_general/services/file.service.ts
+++ b/frontend/src/app/_general/services/file.service.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
// Angular and system imports.
diff --git a/frontend/src/app/_general/services/general.service.ts b/frontend/src/app/_general/services/general.service.ts
index 8ca215164d..b8f1301b68 100644
--- a/frontend/src/app/_general/services/general.service.ts
+++ b/frontend/src/app/_general/services/general.service.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
import { Injectable } from '@angular/core';
diff --git a/frontend/src/app/_general/services/http.service.ts b/frontend/src/app/_general/services/http.service.ts
index 5bf1b8767d..2fb8c556b0 100644
--- a/frontend/src/app/_general/services/http.service.ts
+++ b/frontend/src/app/_general/services/http.service.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
// Angular and system imports.
diff --git a/frontend/src/app/_general/services/log.service.ts b/frontend/src/app/_general/services/log.service.ts
index a129855381..e30294d46d 100644
--- a/frontend/src/app/_general/services/log.service.ts
+++ b/frontend/src/app/_general/services/log.service.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
// Angular and system imports.
diff --git a/frontend/src/app/_general/services/machine-learning-training.service.ts b/frontend/src/app/_general/services/machine-learning-training.service.ts
index bd39441274..875573fc30 100644
--- a/frontend/src/app/_general/services/machine-learning-training.service.ts
+++ b/frontend/src/app/_general/services/machine-learning-training.service.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
// Angular and system imports.
diff --git a/frontend/src/app/_general/services/message.service.ts b/frontend/src/app/_general/services/message.service.ts
index 0fe15ce069..9fa45f0007 100644
--- a/frontend/src/app/_general/services/message.service.ts
+++ b/frontend/src/app/_general/services/message.service.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
import { Subject } from 'rxjs';
import { Injectable } from '@angular/core';
diff --git a/frontend/src/app/_general/services/openai.service.ts b/frontend/src/app/_general/services/openai.service.ts
index c42f16e3d4..6fff0e4a59 100644
--- a/frontend/src/app/_general/services/openai.service.ts
+++ b/frontend/src/app/_general/services/openai.service.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
// Angular and system imports.
diff --git a/frontend/src/app/_general/services/query-arg.service.ts b/frontend/src/app/_general/services/query-arg.service.ts
index e109dd8476..685010c407 100644
--- a/frontend/src/app/_general/services/query-arg.service.ts
+++ b/frontend/src/app/_general/services/query-arg.service.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
// Angular and system imports.
diff --git a/frontend/src/app/_general/services/sql.service.ts b/frontend/src/app/_general/services/sql.service.ts
index cc76073b51..c7f42cd56a 100644
--- a/frontend/src/app/_general/services/sql.service.ts
+++ b/frontend/src/app/_general/services/sql.service.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
// Angular and system imports.
diff --git a/frontend/src/app/_general/services/theme.service.ts b/frontend/src/app/_general/services/theme.service.ts
index 1e63b27b0a..317a688c00 100644
--- a/frontend/src/app/_general/services/theme.service.ts
+++ b/frontend/src/app/_general/services/theme.service.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
// Angular and system imports.
diff --git a/frontend/src/app/_general/services/transform-model.service.ts b/frontend/src/app/_general/services/transform-model.service.ts
index a64ac012de..6ab788fae5 100644
--- a/frontend/src/app/_general/services/transform-model.service.ts
+++ b/frontend/src/app/_general/services/transform-model.service.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
// Angular and system imports.
diff --git a/frontend/src/app/_general/services/update-pwa.service.ts b/frontend/src/app/_general/services/update-pwa.service.ts
index fcb8dfad4a..32c88b3c57 100644
--- a/frontend/src/app/_general/services/update-pwa.service.ts
+++ b/frontend/src/app/_general/services/update-pwa.service.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
// Angular and system imports.
diff --git a/frontend/src/app/_general/services/vocabulary.service.ts b/frontend/src/app/_general/services/vocabulary.service.ts
index 45d52e94c5..5c7e155ad7 100644
--- a/frontend/src/app/_general/services/vocabulary.service.ts
+++ b/frontend/src/app/_general/services/vocabulary.service.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
// Angular and system imports.
@@ -44,14 +44,25 @@ export class VocabularyService {
of(this._vocabulary);
}
- return new Observable((observer) => {
+ return new Observable<{vocabulary: string[], slots: string[]}>((observer) => {
this.httpService.get('/magic/system/evaluator/vocabulary').subscribe({
next: (vocabulary: string[]) => {
this._vocabulary = vocabulary;
- observer.next(vocabulary);
- observer.complete();
+
+ this.httpService.get('/magic/system/evaluator/slots').subscribe({
+ next: (slots: string[]) => {
+
+ observer.next({vocabulary, slots});
+ observer.complete();
+ },
+ error: (error: any) => {
+
+ observer.error(error);
+ observer.complete();
+ }
+ });
},
error: (error: any) => {
diff --git a/frontend/src/app/_general/services/workflow.service.ts b/frontend/src/app/_general/services/workflow.service.ts
new file mode 100644
index 0000000000..609688071e
--- /dev/null
+++ b/frontend/src/app/_general/services/workflow.service.ts
@@ -0,0 +1,40 @@
+
+/*
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ */
+
+// Angular and system imports.
+import { Injectable } from '@angular/core';
+
+// Application specific imports.
+import { HttpService } from 'src/app/_general/services/http.service';
+import { MagicResponse } from '../models/magic-response.model';
+
+/**
+ * File service allowing you to read, download, upload, and delete files.
+ */
+@Injectable({
+ providedIn: 'root'
+})
+export class WorkflowService {
+
+ constructor(private httpService: HttpService) { }
+
+ /**
+ * Returns a list of all workflow funtions.
+ */
+ listToolboxItems() {
+
+ return this.httpService.get('/magic/system/workflows/functions');
+ }
+
+ /**
+ * Adds the specified function to the specified Hyperlambda and returns the transformed result.
+ */
+ getHyperlambda(filename: string) {
+
+ return this.httpService.get(
+ '/magic/system/workflows/get-hyperlambda?filename=' +
+ encodeURIComponent(filename));
+ }
+}
diff --git a/frontend/src/app/_layout/core/core.component.ts b/frontend/src/app/_layout/core/core.component.ts
index a132b48814..62bb871988 100644
--- a/frontend/src/app/_layout/core/core.component.ts
+++ b/frontend/src/app/_layout/core/core.component.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
import { ChangeDetectorRef, Component, HostListener, OnDestroy, OnInit } from '@angular/core';
diff --git a/frontend/src/app/_layout/footer/footer.component.scss b/frontend/src/app/_layout/footer/footer.component.scss
index 0889da3b22..c37190b06c 100644
--- a/frontend/src/app/_layout/footer/footer.component.scss
+++ b/frontend/src/app/_layout/footer/footer.component.scss
@@ -1,5 +1,5 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
@import '../../../assets/styles/_variables/colors.scss';
diff --git a/frontend/src/app/_layout/footer/footer.component.ts b/frontend/src/app/_layout/footer/footer.component.ts
index 12b56618d4..642d361514 100644
--- a/frontend/src/app/_layout/footer/footer.component.ts
+++ b/frontend/src/app/_layout/footer/footer.component.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
import { Component } from '@angular/core';
diff --git a/frontend/src/app/_layout/header/_model/nav-links.ts b/frontend/src/app/_layout/header/_model/nav-links.ts
index 26e6719279..62f7dcdcea 100644
--- a/frontend/src/app/_layout/header/_model/nav-links.ts
+++ b/frontend/src/app/_layout/header/_model/nav-links.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
import { SubMenu } from "./sub-menu";
diff --git a/frontend/src/app/_layout/header/_model/sub-menu.ts b/frontend/src/app/_layout/header/_model/sub-menu.ts
index 7fccfe13c0..6bc8118239 100644
--- a/frontend/src/app/_layout/header/_model/sub-menu.ts
+++ b/frontend/src/app/_layout/header/_model/sub-menu.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
export interface SubMenu {
diff --git a/frontend/src/app/_layout/header/header.component.scss b/frontend/src/app/_layout/header/header.component.scss
index f2b4e9141e..6a82130085 100644
--- a/frontend/src/app/_layout/header/header.component.scss
+++ b/frontend/src/app/_layout/header/header.component.scss
@@ -1,5 +1,5 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
@import '../../../assets/styles/_variables/colors.scss';
diff --git a/frontend/src/app/_layout/header/header.component.ts b/frontend/src/app/_layout/header/header.component.ts
index 0deb957488..c57acdacfb 100644
--- a/frontend/src/app/_layout/header/header.component.ts
+++ b/frontend/src/app/_layout/header/header.component.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
import { Component, OnInit, ViewChild } from '@angular/core';
diff --git a/frontend/src/app/_protected/models/auth/authenticate-response.model.ts b/frontend/src/app/_protected/models/auth/authenticate-response.model.ts
index 619af9c0ae..62536a2327 100644
--- a/frontend/src/app/_protected/models/auth/authenticate-response.model.ts
+++ b/frontend/src/app/_protected/models/auth/authenticate-response.model.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
/**
diff --git a/frontend/src/app/_protected/models/auth/name-email.model.ts b/frontend/src/app/_protected/models/auth/name-email.model.ts
index 728b1c0431..a9f1c711e5 100644
--- a/frontend/src/app/_protected/models/auth/name-email.model.ts
+++ b/frontend/src/app/_protected/models/auth/name-email.model.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
/**
diff --git a/frontend/src/app/_protected/models/common/backend.model.ts b/frontend/src/app/_protected/models/common/backend.model.ts
index ef81560cbf..31c83cd541 100644
--- a/frontend/src/app/_protected/models/common/backend.model.ts
+++ b/frontend/src/app/_protected/models/common/backend.model.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
// Application specific imports.
diff --git a/frontend/src/app/_protected/models/common/cache-item.model.ts b/frontend/src/app/_protected/models/common/cache-item.model.ts
index 48d79a361c..de5f163292 100644
--- a/frontend/src/app/_protected/models/common/cache-item.model.ts
+++ b/frontend/src/app/_protected/models/common/cache-item.model.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
/**
diff --git a/frontend/src/app/_protected/models/common/core-version.model.ts b/frontend/src/app/_protected/models/common/core-version.model.ts
index 223d335e50..6330f0309c 100644
--- a/frontend/src/app/_protected/models/common/core-version.model.ts
+++ b/frontend/src/app/_protected/models/common/core-version.model.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
/**
diff --git a/frontend/src/app/_protected/models/common/count.model.ts b/frontend/src/app/_protected/models/common/count.model.ts
index 959157c820..f67509e60a 100644
--- a/frontend/src/app/_protected/models/common/count.model.ts
+++ b/frontend/src/app/_protected/models/common/count.model.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
/**
diff --git a/frontend/src/app/_protected/models/common/endpoint.model.ts b/frontend/src/app/_protected/models/common/endpoint.model.ts
index d71c95666d..5388cff486 100644
--- a/frontend/src/app/_protected/models/common/endpoint.model.ts
+++ b/frontend/src/app/_protected/models/common/endpoint.model.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
/**
diff --git a/frontend/src/app/_protected/models/common/macro-argument.model.ts b/frontend/src/app/_protected/models/common/macro-argument.model.ts
index 2afbe3d452..c6921ad927 100644
--- a/frontend/src/app/_protected/models/common/macro-argument.model.ts
+++ b/frontend/src/app/_protected/models/common/macro-argument.model.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
/**
diff --git a/frontend/src/app/_protected/models/common/macro-definition.model.ts b/frontend/src/app/_protected/models/common/macro-definition.model.ts
index 0b5c3797c9..7916a012e7 100644
--- a/frontend/src/app/_protected/models/common/macro-definition.model.ts
+++ b/frontend/src/app/_protected/models/common/macro-definition.model.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
import { MacroArgument } from "./macro-argument.model";
diff --git a/frontend/src/app/_protected/models/common/message.model.ts b/frontend/src/app/_protected/models/common/message.model.ts
index a22326d201..96d8969ef3 100644
--- a/frontend/src/app/_protected/models/common/message.model.ts
+++ b/frontend/src/app/_protected/models/common/message.model.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
/**
diff --git a/frontend/src/app/_protected/models/common/name-email.model.ts b/frontend/src/app/_protected/models/common/name-email.model.ts
index 728b1c0431..a9f1c711e5 100644
--- a/frontend/src/app/_protected/models/common/name-email.model.ts
+++ b/frontend/src/app/_protected/models/common/name-email.model.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
/**
diff --git a/frontend/src/app/_protected/models/common/setup.model.ts b/frontend/src/app/_protected/models/common/setup.model.ts
index c07e8c903e..f60a86b3cc 100644
--- a/frontend/src/app/_protected/models/common/setup.model.ts
+++ b/frontend/src/app/_protected/models/common/setup.model.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
export interface SetupModel {
diff --git a/frontend/src/app/_protected/models/common/status.model.ts b/frontend/src/app/_protected/models/common/status.model.ts
index fa5932e14b..0302d9ce39 100644
--- a/frontend/src/app/_protected/models/common/status.model.ts
+++ b/frontend/src/app/_protected/models/common/status.model.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
/**
diff --git a/frontend/src/app/_protected/models/common/token.model.ts b/frontend/src/app/_protected/models/common/token.model.ts
index 5484aa6846..7a7b657f30 100644
--- a/frontend/src/app/_protected/models/common/token.model.ts
+++ b/frontend/src/app/_protected/models/common/token.model.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
import { Buffer } from 'buffer';
diff --git a/frontend/src/app/_protected/pages/create/chatbot-wizard/_module/chatbot-wizard.module.ts b/frontend/src/app/_protected/pages/create/chatbot-wizard/_module/chatbot-wizard.module.ts
index 89451d5dbe..0b135ab81a 100644
--- a/frontend/src/app/_protected/pages/create/chatbot-wizard/_module/chatbot-wizard.module.ts
+++ b/frontend/src/app/_protected/pages/create/chatbot-wizard/_module/chatbot-wizard.module.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
import { NgModule } from '@angular/core';
diff --git a/frontend/src/app/_protected/pages/create/chatbot-wizard/_module/chatbot-wizard.routing.module.ts b/frontend/src/app/_protected/pages/create/chatbot-wizard/_module/chatbot-wizard.routing.module.ts
index 454969093e..8d9ff71f2a 100644
--- a/frontend/src/app/_protected/pages/create/chatbot-wizard/_module/chatbot-wizard.routing.module.ts
+++ b/frontend/src/app/_protected/pages/create/chatbot-wizard/_module/chatbot-wizard.routing.module.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
import { NgModule } from '@angular/core';
diff --git a/frontend/src/app/_protected/pages/create/chatbot-wizard/chatbot-wizard.component.scss b/frontend/src/app/_protected/pages/create/chatbot-wizard/chatbot-wizard.component.scss
index 5fbffdcb11..0caeb384d8 100644
--- a/frontend/src/app/_protected/pages/create/chatbot-wizard/chatbot-wizard.component.scss
+++ b/frontend/src/app/_protected/pages/create/chatbot-wizard/chatbot-wizard.component.scss
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
.messages {
background-color: rgb(0,0,0);
diff --git a/frontend/src/app/_protected/pages/create/chatbot-wizard/chatbot-wizard.component.ts b/frontend/src/app/_protected/pages/create/chatbot-wizard/chatbot-wizard.component.ts
index ef6be97804..9797091aa3 100644
--- a/frontend/src/app/_protected/pages/create/chatbot-wizard/chatbot-wizard.component.ts
+++ b/frontend/src/app/_protected/pages/create/chatbot-wizard/chatbot-wizard.component.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
import { Component, OnDestroy, OnInit } from '@angular/core';
diff --git a/frontend/src/app/_protected/pages/create/databases/_module/databases.module.ts b/frontend/src/app/_protected/pages/create/databases/_module/databases.module.ts
index fb6cbeedcb..eb81decc23 100644
--- a/frontend/src/app/_protected/pages/create/databases/_module/databases.module.ts
+++ b/frontend/src/app/_protected/pages/create/databases/_module/databases.module.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
import { NgModule } from '@angular/core';
diff --git a/frontend/src/app/_protected/pages/create/databases/_module/databases.routing.module.ts b/frontend/src/app/_protected/pages/create/databases/_module/databases.routing.module.ts
index 0098797ed9..fe386a6718 100644
--- a/frontend/src/app/_protected/pages/create/databases/_module/databases.routing.module.ts
+++ b/frontend/src/app/_protected/pages/create/databases/_module/databases.routing.module.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
import { NgModule } from '@angular/core';
diff --git a/frontend/src/app/_protected/pages/create/databases/connect-databases/components/catalog-name/catalog-name.component.ts b/frontend/src/app/_protected/pages/create/databases/connect-databases/components/catalog-name/catalog-name.component.ts
index 7f42e4c2c7..3f6ab69de5 100644
--- a/frontend/src/app/_protected/pages/create/databases/connect-databases/components/catalog-name/catalog-name.component.ts
+++ b/frontend/src/app/_protected/pages/create/databases/connect-databases/components/catalog-name/catalog-name.component.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
import { Component, Inject } from '@angular/core';
diff --git a/frontend/src/app/_protected/pages/create/databases/connect-databases/components/manage-catalogs/manage-catalogs.component.scss b/frontend/src/app/_protected/pages/create/databases/connect-databases/components/manage-catalogs/manage-catalogs.component.scss
index 96c1f4910f..ed09c2ac35 100644
--- a/frontend/src/app/_protected/pages/create/databases/connect-databases/components/manage-catalogs/manage-catalogs.component.scss
+++ b/frontend/src/app/_protected/pages/create/databases/connect-databases/components/manage-catalogs/manage-catalogs.component.scss
@@ -1,5 +1,5 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
@import '../../../../../../../../assets/styles/_variables/colors.scss';
diff --git a/frontend/src/app/_protected/pages/create/databases/connect-databases/components/manage-catalogs/manage-catalogs.component.ts b/frontend/src/app/_protected/pages/create/databases/connect-databases/components/manage-catalogs/manage-catalogs.component.ts
index c951b7acc8..63cccd5a1f 100644
--- a/frontend/src/app/_protected/pages/create/databases/connect-databases/components/manage-catalogs/manage-catalogs.component.ts
+++ b/frontend/src/app/_protected/pages/create/databases/connect-databases/components/manage-catalogs/manage-catalogs.component.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
import { Component, Inject } from '@angular/core';
diff --git a/frontend/src/app/_protected/pages/create/databases/connect-databases/connect-databases.component.html b/frontend/src/app/_protected/pages/create/databases/connect-databases/connect-databases.component.html
index 6f02450c73..72f04557b1 100644
--- a/frontend/src/app/_protected/pages/create/databases/connect-databases/connect-databases.component.html
+++ b/frontend/src/app/_protected/pages/create/databases/connect-databases/connect-databases.component.html
@@ -121,7 +121,7 @@
Connection strings
diff --git a/frontend/src/app/_protected/pages/create/databases/connect-databases/connect-databases.component.scss b/frontend/src/app/_protected/pages/create/databases/connect-databases/connect-databases.component.scss
index 33c1a7bc6d..cb4e399baf 100644
--- a/frontend/src/app/_protected/pages/create/databases/connect-databases/connect-databases.component.scss
+++ b/frontend/src/app/_protected/pages/create/databases/connect-databases/connect-databases.component.scss
@@ -1,5 +1,5 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
@import "../../../../../../assets/styles/_variables/colors.scss";
diff --git a/frontend/src/app/_protected/pages/create/databases/connect-databases/connect-databases.component.ts b/frontend/src/app/_protected/pages/create/databases/connect-databases/connect-databases.component.ts
index a506988f86..5d54b3f7e1 100644
--- a/frontend/src/app/_protected/pages/create/databases/connect-databases/connect-databases.component.ts
+++ b/frontend/src/app/_protected/pages/create/databases/connect-databases/connect-databases.component.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
import { ChangeDetectorRef, Component, OnInit } from '@angular/core';
diff --git a/frontend/src/app/_protected/pages/create/databases/databases.component.ts b/frontend/src/app/_protected/pages/create/databases/databases.component.ts
index 3c32e3bd52..7822338d95 100644
--- a/frontend/src/app/_protected/pages/create/databases/databases.component.ts
+++ b/frontend/src/app/_protected/pages/create/databases/databases.component.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
import { Component } from '@angular/core';
diff --git a/frontend/src/app/_protected/pages/create/databases/manage-databases/components/view-plugin-database/view-plugin-database.component.scss b/frontend/src/app/_protected/pages/create/databases/manage-databases/components/view-plugin-database/view-plugin-database.component.scss
index 9627ce5601..09e4a6b72c 100644
--- a/frontend/src/app/_protected/pages/create/databases/manage-databases/components/view-plugin-database/view-plugin-database.component.scss
+++ b/frontend/src/app/_protected/pages/create/databases/manage-databases/components/view-plugin-database/view-plugin-database.component.scss
@@ -1,5 +1,5 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
.file-content ::ng-deep img {
diff --git a/frontend/src/app/_protected/pages/create/databases/manage-databases/components/view-plugin-database/view-plugin-database.component.ts b/frontend/src/app/_protected/pages/create/databases/manage-databases/components/view-plugin-database/view-plugin-database.component.ts
index e0f606324a..9495728fcf 100644
--- a/frontend/src/app/_protected/pages/create/databases/manage-databases/components/view-plugin-database/view-plugin-database.component.ts
+++ b/frontend/src/app/_protected/pages/create/databases/manage-databases/components/view-plugin-database/view-plugin-database.component.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
import { Component, Inject, OnInit } from '@angular/core';
diff --git a/frontend/src/app/_protected/pages/create/databases/manage-databases/manage-databases.component.html b/frontend/src/app/_protected/pages/create/databases/manage-databases/manage-databases.component.html
index f14ae43708..8e3bf1725b 100644
--- a/frontend/src/app/_protected/pages/create/databases/manage-databases/manage-databases.component.html
+++ b/frontend/src/app/_protected/pages/create/databases/manage-databases/manage-databases.component.html
@@ -57,7 +57,7 @@
Install database
@@ -119,7 +119,7 @@
Existing databases
diff --git a/frontend/src/app/_protected/pages/create/databases/manage-databases/manage-databases.component.scss b/frontend/src/app/_protected/pages/create/databases/manage-databases/manage-databases.component.scss
index e54c14a780..ec566d7064 100644
--- a/frontend/src/app/_protected/pages/create/databases/manage-databases/manage-databases.component.scss
+++ b/frontend/src/app/_protected/pages/create/databases/manage-databases/manage-databases.component.scss
@@ -1,5 +1,5 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
@import "../../../../../../assets/styles/_variables/colors.scss";
diff --git a/frontend/src/app/_protected/pages/create/databases/manage-databases/manage-databases.component.ts b/frontend/src/app/_protected/pages/create/databases/manage-databases/manage-databases.component.ts
index 244d09b066..a68f099f75 100644
--- a/frontend/src/app/_protected/pages/create/databases/manage-databases/manage-databases.component.ts
+++ b/frontend/src/app/_protected/pages/create/databases/manage-databases/manage-databases.component.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
import { Component, OnDestroy, OnInit } from '@angular/core';
diff --git a/frontend/src/app/_protected/pages/create/endpoint-generator/_module/endpoint.module.ts b/frontend/src/app/_protected/pages/create/endpoint-generator/_module/endpoint.module.ts
index 8ec38f942c..38c037c0cf 100644
--- a/frontend/src/app/_protected/pages/create/endpoint-generator/_module/endpoint.module.ts
+++ b/frontend/src/app/_protected/pages/create/endpoint-generator/_module/endpoint.module.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
import { NgModule } from '@angular/core';
diff --git a/frontend/src/app/_protected/pages/create/endpoint-generator/_module/endpoint.routing.module.ts b/frontend/src/app/_protected/pages/create/endpoint-generator/_module/endpoint.routing.module.ts
index 0e1a064bbe..91a83d4482 100644
--- a/frontend/src/app/_protected/pages/create/endpoint-generator/_module/endpoint.routing.module.ts
+++ b/frontend/src/app/_protected/pages/create/endpoint-generator/_module/endpoint.routing.module.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
import { NgModule } from '@angular/core';
diff --git a/frontend/src/app/_protected/pages/create/endpoint-generator/auto-endpoint-generator/auto-endpoint-generator.component.html b/frontend/src/app/_protected/pages/create/endpoint-generator/auto-endpoint-generator/auto-endpoint-generator.component.html
index 3c70f2fe48..40b4057b97 100644
--- a/frontend/src/app/_protected/pages/create/endpoint-generator/auto-endpoint-generator/auto-endpoint-generator.component.html
+++ b/frontend/src/app/_protected/pages/create/endpoint-generator/auto-endpoint-generator/auto-endpoint-generator.component.html
@@ -17,7 +17,7 @@
@@ -52,7 +52,7 @@
@@ -87,7 +87,7 @@
@@ -122,7 +122,7 @@
@@ -216,7 +216,7 @@
@@ -254,7 +254,7 @@
@@ -292,7 +292,7 @@
@@ -330,7 +330,7 @@
@@ -368,7 +368,7 @@
@@ -409,7 +409,7 @@
diff --git a/frontend/src/app/_protected/pages/create/endpoint-generator/auto-endpoint-generator/auto-endpoint-generator.component.ts b/frontend/src/app/_protected/pages/create/endpoint-generator/auto-endpoint-generator/auto-endpoint-generator.component.ts
index f259ece120..580759a101 100644
--- a/frontend/src/app/_protected/pages/create/endpoint-generator/auto-endpoint-generator/auto-endpoint-generator.component.ts
+++ b/frontend/src/app/_protected/pages/create/endpoint-generator/auto-endpoint-generator/auto-endpoint-generator.component.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
import { formatNumber } from '@angular/common';
diff --git a/frontend/src/app/_protected/pages/create/endpoint-generator/auto-endpoint-generator/components/foreign-key-list/foreign-key-list.component.scss b/frontend/src/app/_protected/pages/create/endpoint-generator/auto-endpoint-generator/components/foreign-key-list/foreign-key-list.component.scss
index 948a072135..26257389ad 100644
--- a/frontend/src/app/_protected/pages/create/endpoint-generator/auto-endpoint-generator/components/foreign-key-list/foreign-key-list.component.scss
+++ b/frontend/src/app/_protected/pages/create/endpoint-generator/auto-endpoint-generator/components/foreign-key-list/foreign-key-list.component.scss
@@ -1,5 +1,5 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
@import "../../../../../../../../assets/styles/_variables/colors.scss";
diff --git a/frontend/src/app/_protected/pages/create/endpoint-generator/auto-endpoint-generator/components/foreign-key-list/foreign-key-list.component.ts b/frontend/src/app/_protected/pages/create/endpoint-generator/auto-endpoint-generator/components/foreign-key-list/foreign-key-list.component.ts
index fda5b1dfcb..c94938d371 100644
--- a/frontend/src/app/_protected/pages/create/endpoint-generator/auto-endpoint-generator/components/foreign-key-list/foreign-key-list.component.ts
+++ b/frontend/src/app/_protected/pages/create/endpoint-generator/auto-endpoint-generator/components/foreign-key-list/foreign-key-list.component.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
import { AfterViewInit, Component, EventEmitter, Input, Output } from '@angular/core';
diff --git a/frontend/src/app/_protected/pages/create/endpoint-generator/auto-endpoint-generator/components/single-table-config/single-table-config.component.scss b/frontend/src/app/_protected/pages/create/endpoint-generator/auto-endpoint-generator/components/single-table-config/single-table-config.component.scss
index a330784428..df4b800041 100644
--- a/frontend/src/app/_protected/pages/create/endpoint-generator/auto-endpoint-generator/components/single-table-config/single-table-config.component.scss
+++ b/frontend/src/app/_protected/pages/create/endpoint-generator/auto-endpoint-generator/components/single-table-config/single-table-config.component.scss
@@ -1,5 +1,5 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
.table-btn {
diff --git a/frontend/src/app/_protected/pages/create/endpoint-generator/auto-endpoint-generator/components/single-table-config/single-table-config.component.ts b/frontend/src/app/_protected/pages/create/endpoint-generator/auto-endpoint-generator/components/single-table-config/single-table-config.component.ts
index 27aed99111..1376632572 100644
--- a/frontend/src/app/_protected/pages/create/endpoint-generator/auto-endpoint-generator/components/single-table-config/single-table-config.component.ts
+++ b/frontend/src/app/_protected/pages/create/endpoint-generator/auto-endpoint-generator/components/single-table-config/single-table-config.component.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
import { Component, Input, OnInit } from '@angular/core';
diff --git a/frontend/src/app/_protected/pages/create/endpoint-generator/endpoint-generator.component.scss b/frontend/src/app/_protected/pages/create/endpoint-generator/endpoint-generator.component.scss
index f1256ebcd1..aeb4ff4e61 100644
--- a/frontend/src/app/_protected/pages/create/endpoint-generator/endpoint-generator.component.scss
+++ b/frontend/src/app/_protected/pages/create/endpoint-generator/endpoint-generator.component.scss
@@ -1,5 +1,5 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
@import "../../../../../assets/styles/_variables/colors.scss";
diff --git a/frontend/src/app/_protected/pages/create/endpoint-generator/endpoint-generator.component.ts b/frontend/src/app/_protected/pages/create/endpoint-generator/endpoint-generator.component.ts
index 6769eb56d1..c6d3c61a43 100644
--- a/frontend/src/app/_protected/pages/create/endpoint-generator/endpoint-generator.component.ts
+++ b/frontend/src/app/_protected/pages/create/endpoint-generator/endpoint-generator.component.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
import { Component } from '@angular/core';
diff --git a/frontend/src/app/_protected/pages/create/endpoint-generator/generator-base.ts b/frontend/src/app/_protected/pages/create/endpoint-generator/generator-base.ts
index 0e3f3d9929..abaca0fa4e 100644
--- a/frontend/src/app/_protected/pages/create/endpoint-generator/generator-base.ts
+++ b/frontend/src/app/_protected/pages/create/endpoint-generator/generator-base.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
import { ActivatedRoute } from "@angular/router";
diff --git a/frontend/src/app/_protected/pages/create/endpoint-generator/sql-endpoint-generator/components/add-argument-dialog/add-argument-dialog.component.ts b/frontend/src/app/_protected/pages/create/endpoint-generator/sql-endpoint-generator/components/add-argument-dialog/add-argument-dialog.component.ts
index 36240a6857..34f3cd24a4 100644
--- a/frontend/src/app/_protected/pages/create/endpoint-generator/sql-endpoint-generator/components/add-argument-dialog/add-argument-dialog.component.ts
+++ b/frontend/src/app/_protected/pages/create/endpoint-generator/sql-endpoint-generator/components/add-argument-dialog/add-argument-dialog.component.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
import { Component, Inject, OnInit } from '@angular/core';
diff --git a/frontend/src/app/_protected/pages/create/endpoint-generator/sql-endpoint-generator/sql-endpoint-generator.component.html b/frontend/src/app/_protected/pages/create/endpoint-generator/sql-endpoint-generator/sql-endpoint-generator.component.html
index 1d150e5f86..bb83d0cb8f 100644
--- a/frontend/src/app/_protected/pages/create/endpoint-generator/sql-endpoint-generator/sql-endpoint-generator.component.html
+++ b/frontend/src/app/_protected/pages/create/endpoint-generator/sql-endpoint-generator/sql-endpoint-generator.component.html
@@ -17,7 +17,7 @@
@@ -52,7 +52,7 @@
@@ -87,7 +87,7 @@
@@ -132,7 +132,7 @@
@@ -166,7 +166,7 @@
@@ -198,7 +198,7 @@
@@ -230,7 +230,7 @@
diff --git a/frontend/src/app/_protected/pages/create/endpoint-generator/sql-endpoint-generator/sql-endpoint-generator.component.ts b/frontend/src/app/_protected/pages/create/endpoint-generator/sql-endpoint-generator/sql-endpoint-generator.component.ts
index 4eac6395fc..0cb18e9fed 100644
--- a/frontend/src/app/_protected/pages/create/endpoint-generator/sql-endpoint-generator/sql-endpoint-generator.component.ts
+++ b/frontend/src/app/_protected/pages/create/endpoint-generator/sql-endpoint-generator/sql-endpoint-generator.component.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
import { ChangeDetectorRef, Component, Inject, LOCALE_ID, OnDestroy, OnInit } from '@angular/core';
diff --git a/frontend/src/app/_protected/pages/create/frontend-generator/_module/frontend-generator.module.ts b/frontend/src/app/_protected/pages/create/frontend-generator/_module/frontend-generator.module.ts
index 6853d4009f..83187cbbfc 100644
--- a/frontend/src/app/_protected/pages/create/frontend-generator/_module/frontend-generator.module.ts
+++ b/frontend/src/app/_protected/pages/create/frontend-generator/_module/frontend-generator.module.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
import { NgModule } from '@angular/core';
diff --git a/frontend/src/app/_protected/pages/create/frontend-generator/_module/frontend-generator.routing.module.ts b/frontend/src/app/_protected/pages/create/frontend-generator/_module/frontend-generator.routing.module.ts
index e529f86278..f678ea25d1 100644
--- a/frontend/src/app/_protected/pages/create/frontend-generator/_module/frontend-generator.routing.module.ts
+++ b/frontend/src/app/_protected/pages/create/frontend-generator/_module/frontend-generator.routing.module.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
import { NgModule } from '@angular/core';
diff --git a/frontend/src/app/_protected/pages/create/frontend-generator/auto-generate/auto-generate.component.html b/frontend/src/app/_protected/pages/create/frontend-generator/auto-generate/auto-generate.component.html
index 09a85eff61..e5044c2999 100644
--- a/frontend/src/app/_protected/pages/create/frontend-generator/auto-generate/auto-generate.component.html
+++ b/frontend/src/app/_protected/pages/create/frontend-generator/auto-generate/auto-generate.component.html
@@ -114,7 +114,7 @@
@@ -142,7 +142,7 @@
@@ -160,7 +160,7 @@
diff --git a/frontend/src/app/_protected/pages/create/frontend-generator/auto-generate/auto-generate.component.scss b/frontend/src/app/_protected/pages/create/frontend-generator/auto-generate/auto-generate.component.scss
index 7d34f89203..76c9ae33af 100644
--- a/frontend/src/app/_protected/pages/create/frontend-generator/auto-generate/auto-generate.component.scss
+++ b/frontend/src/app/_protected/pages/create/frontend-generator/auto-generate/auto-generate.component.scss
@@ -1,5 +1,5 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
@import "../../../../../../assets/styles/_variables/colors.scss";
diff --git a/frontend/src/app/_protected/pages/create/frontend-generator/auto-generate/auto-generate.component.ts b/frontend/src/app/_protected/pages/create/frontend-generator/auto-generate/auto-generate.component.ts
index 76ac2561bb..84bd26678e 100644
--- a/frontend/src/app/_protected/pages/create/frontend-generator/auto-generate/auto-generate.component.ts
+++ b/frontend/src/app/_protected/pages/create/frontend-generator/auto-generate/auto-generate.component.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
import { Component, OnInit } from '@angular/core';
diff --git a/frontend/src/app/_protected/pages/create/frontend-generator/frontend-generator.component.ts b/frontend/src/app/_protected/pages/create/frontend-generator/frontend-generator.component.ts
index 0a776acf14..45260b996a 100644
--- a/frontend/src/app/_protected/pages/create/frontend-generator/frontend-generator.component.ts
+++ b/frontend/src/app/_protected/pages/create/frontend-generator/frontend-generator.component.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
import { Component } from '@angular/core';
diff --git a/frontend/src/app/_protected/pages/create/frontend-generator/upload-existing/upload-existing.component.scss b/frontend/src/app/_protected/pages/create/frontend-generator/upload-existing/upload-existing.component.scss
index 21b09c1378..271ac25905 100644
--- a/frontend/src/app/_protected/pages/create/frontend-generator/upload-existing/upload-existing.component.scss
+++ b/frontend/src/app/_protected/pages/create/frontend-generator/upload-existing/upload-existing.component.scss
@@ -1,5 +1,5 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
@import "../../../../../../assets/styles/_variables/colors.scss";
diff --git a/frontend/src/app/_protected/pages/create/frontend-generator/upload-existing/upload-existing.component.ts b/frontend/src/app/_protected/pages/create/frontend-generator/upload-existing/upload-existing.component.ts
index 79cb525cc1..590e6f5315 100644
--- a/frontend/src/app/_protected/pages/create/frontend-generator/upload-existing/upload-existing.component.ts
+++ b/frontend/src/app/_protected/pages/create/frontend-generator/upload-existing/upload-existing.component.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
import { Component } from '@angular/core';
diff --git a/frontend/src/app/_protected/pages/create/hyper-ide/components/execute-macro-dialog/execute-macro-dialog.component.scss b/frontend/src/app/_protected/pages/create/hyper-ide/components/execute-macro-dialog/execute-macro-dialog.component.scss
index c213044cf6..903483dd1b 100644
--- a/frontend/src/app/_protected/pages/create/hyper-ide/components/execute-macro-dialog/execute-macro-dialog.component.scss
+++ b/frontend/src/app/_protected/pages/create/hyper-ide/components/execute-macro-dialog/execute-macro-dialog.component.scss
@@ -1,5 +1,5 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
.description {
diff --git a/frontend/src/app/_protected/pages/create/hyper-ide/components/execute-macro-dialog/execute-macro-dialog.component.ts b/frontend/src/app/_protected/pages/create/hyper-ide/components/execute-macro-dialog/execute-macro-dialog.component.ts
index 504754353d..313a2bcf80 100644
--- a/frontend/src/app/_protected/pages/create/hyper-ide/components/execute-macro-dialog/execute-macro-dialog.component.ts
+++ b/frontend/src/app/_protected/pages/create/hyper-ide/components/execute-macro-dialog/execute-macro-dialog.component.ts
@@ -1,6 +1,6 @@
/*
- * Copyright (c) Aista Ltd, and Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
*/
// Angular and system imports.
diff --git a/frontend/src/app/_protected/pages/create/hyper-ide/components/execute-result/execute-result-dialog.component.html b/frontend/src/app/_protected/pages/create/hyper-ide/components/execute-result/execute-result-dialog.component.html
new file mode 100644
index 0000000000..919c4e74a4
--- /dev/null
+++ b/frontend/src/app/_protected/pages/create/hyper-ide/components/execute-result/execute-result-dialog.component.html
@@ -0,0 +1,21 @@
+
Result
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/frontend/src/app/_protected/pages/create/hyper-ide/components/execute-result/execute-result-dialog.component.scss b/frontend/src/app/_protected/pages/create/hyper-ide/components/execute-result/execute-result-dialog.component.scss
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/frontend/src/app/_protected/pages/create/hyper-ide/components/execute-result/execute-result-dialog.component.ts b/frontend/src/app/_protected/pages/create/hyper-ide/components/execute-result/execute-result-dialog.component.ts
new file mode 100644
index 0000000000..4cef306adf
--- /dev/null
+++ b/frontend/src/app/_protected/pages/create/hyper-ide/components/execute-result/execute-result-dialog.component.ts
@@ -0,0 +1,48 @@
+
+/*
+ * Copyright (c) 2023 Thomas Hansen - For license inquiries you can contact thomas@ainiro.io.
+ */
+
+// Angular and system imports.
+import { Component, Inject, OnInit } from '@angular/core';
+import { MAT_DIALOG_DATA } from '@angular/material/dialog';
+import { CodemirrorActionsService } from 'src/app/_general/services/codemirror-actions.service';
+
+/**
+ * Modal dialog allowing you to parametrise and execute a macro.
+ */
+@Component({
+ selector: 'app-execute-result',
+ templateUrl: './execute-result-dialog.component.html',
+ styleUrls: ['./execute-result-dialog.component.scss']
+})
+export class ExecuteResult implements OnInit {
+
+ hlReady: boolean = false;
+ hlModel: HlModel;
+
+ /**
+ * Creates an instance of your component.
+ */
+ constructor(
+ @Inject(MAT_DIALOG_DATA) public data: any,
+ private codemirrorActionsService: CodemirrorActionsService) { }
+
+ ngOnInit() {
+
+ const res = this.codemirrorActionsService.getActions(null, 'hl');
+ res.readOnly = true;
+ this.hlModel = {
+ hyperlambda: this.data.hyperlambda,
+ options: res,
+ }
+ setTimeout(() => {
+ this.hlReady = true;
+ }, 500);
+ }
+}
+
+interface HlModel {
+ hyperlambda: string,
+ options: any
+}
diff --git a/frontend/src/app/_protected/pages/create/hyper-ide/components/ide-editor/ide-editor.component.html b/frontend/src/app/_protected/pages/create/hyper-ide/components/ide-editor/ide-editor.component.html
index f889931505..8c6d144d15 100644
--- a/frontend/src/app/_protected/pages/create/hyper-ide/components/ide-editor/ide-editor.component.html
+++ b/frontend/src/app/_protected/pages/create/hyper-ide/components/ide-editor/ide-editor.component.html
@@ -14,6 +14,7 @@