1. Introduction
This Contributor License Agreement ("Agreement") is entered into between Sidub Inc. ("Company," "we," "our," or "us") and the individual or entity ("Contributor," "you," or "your") who wishes to contribute to our software projects ("Projects"). By submitting any Contributions (as defined below), you agree to the terms of this Agreement.
2. Definitions
- "Contribution" means any original work of authorship, including any modifications or additions to an existing work, that is intentionally submitted by you to Sidub Inc. for inclusion in any of the Projects. "Submitted" means any form of electronic, verbal, or written communication sent to Sidub Inc. or its representatives, including but not limited to source code, documentation, or any other materials.
- "Projects" means any open-source or proprietary software projects owned or managed by Sidub Inc.
- "AGPLv3" refers to the GNU Affero General Public License version 3.
- "PSLA" refers to Sidub Inc.'s Proprietary Software License Agreement.
3. Grant of Rights
3.1. Copyright License
You hereby grant to Sidub Inc. a perpetual, worldwide, non-exclusive, royalty-free, irrevocable license under all your intellectual property rights to use, reproduce, modify, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute your Contributions and such derivative works. This license allows Sidub Inc. to release your Contributions under both the AGPLv3 and the PSLA, or any other licenses.
3.2. Patent License
You grant to Sidub Inc. a perpetual, worldwide, non-exclusive, royalty-free, irrevocable license under any patent claims licensable by you that are necessarily infringed by your Contributions or by the combination of your Contributions with the Projects, to make, have made, use, offer to sell, sell, import, and otherwise transfer the Contributions and the Projects.
4. Representations and Warranties
You represent and warrant that:
- 4.1. Original Work Each of your Contributions is an original work and you have the right to grant the licenses set forth in this Agreement.
- 4.2. Third-Party Content If your Contribution includes or is based on any third-party code or materials, you have obtained all necessary permissions or licenses to include such code or materials and to grant Sidub Inc. the rights granted herein.
- 4.3. No Conflicts Your Contributions and the licenses granted herein do not conflict with any other agreement to which you are a party.
- 4.4. Compliance with Laws Your Contributions do not violate any applicable laws or regulations.
- 4.5. No Confidential Information Your Contributions do not contain any confidential or proprietary information of any third party.
5. Moral Rights
To the fullest extent permitted under applicable law, you waive and agree not to assert any moral rights you may have in your Contributions against Sidub Inc. or its sublicensees.
6. No Obligation to Use
You understand that the decision to include your Contributions in any Project is entirely at the discretion of Sidub Inc., and this Agreement does not obligate Sidub Inc. to use or distribute your Contributions.
7. Acknowledgment of Licensing Model
You acknowledge that Sidub Inc. operates under a dual licensing model, offering the Projects under both the AGPLv3 and the PSLA. By agreeing to this Agreement, you permit Sidub Inc. to release your Contributions under either or both of these licenses.
8. Disclaimer of Warranties
To the fullest extent permitted by applicable law, your Contributions are provided on an "AS IS" basis, without any warranties or conditions, express or implied, including but not limited to warranties of merchantability, fitness for a particular purpose, and non-infringement.
9. Limitation of Liability
To the maximum extent permitted by applicable law, in no event shall you be liable to Sidub Inc. or any other party for any indirect, incidental, special, consequential, or punitive damages arising out of this Agreement or the use of your Contributions.
10. Indemnification
You agree to indemnify and hold harmless Sidub Inc., its affiliates, officers, directors, employees, and agents from any claims, liabilities, damages, losses, costs, and expenses (including reasonable legal fees) arising out of your breach of any representation or warranty in this Agreement.
11. Termination
This Agreement shall continue until terminated. Either party may terminate this Agreement upon 30 days' written notice to the other party. Upon termination, the licenses granted to Sidub Inc. and any sublicenses previously granted by Sidub Inc. shall survive.
12. Governing Law
This Agreement is governed by and construed in accordance with the laws of the Province of Ontario and the federal laws of Canada applicable therein, without regard to conflict of law principles.
13. Severability
If any provision of this Agreement is held invalid or unenforceable, such provision shall be enforced to the maximum extent permissible, and the remaining provisions shall remain in full force and effect.
14. Entire Agreement
This Agreement constitutes the entire agreement between you and Sidub Inc. regarding your Contributions and supersedes all prior agreements or understandings, whether oral or written.
15. Amendment
Any amendment or modification to this Agreement must be made in writing and signed by both parties.
16. Assignment
You may not assign or transfer your rights or obligations under this Agreement without the prior written consent of Sidub Inc. Any attempted assignment without such consent will be null and void.
17. Notices
All notices under this Agreement shall be in writing and deemed duly given when delivered personally, sent by email with confirmation, or sent by recognized courier service to the following:
- Email: inquiries@sidub.net
- Phone: 1-226-666-2111
18. No Waiver
Failure by Sidub Inc. to enforce any right or provision of this Agreement shall not constitute a waiver of such right or provision.
19. Governing Language
This Agreement is written in English. Any translations are provided for convenience, and the English version shall prevail in case of discrepancies.
20. Acknowledgment
By submitting a Contribution to Sidub Inc., you acknowledge that you have read, understood, and agree to be bound by this Agreement.
21. Contact Information
If you have any questions regarding this Agreement, please contact us at:
- Email: inquiries@sidub.net
- Phone: 1-226-666-2111
Adding a New Tool Adapter to the Docuoria Installer
The `docuoria init` installer uses a per-tool adapter pattern: each supported AI
tool is described by a single adapter object. Adding support for a new tool requires exactly four changes — no other code needs to change.
Step 1: New adapter class (.NET)
Create src/hosts/Docuoria.Cli/Adapters/<ToolName>Adapter.cs implementing IToolAdapter. Set ToolId (kebab-case, unique), DisplayName, DetectionRoots, Skill (or null), Command (or null), and IsGlobal.
Step 2: New adapter module (npm)
Create src/hosts/docuoria-cli-npm/src/adapters/<tool-id>.ts exporting a const implementing IToolAdapter with the same values.
Step 3: Register in both registries
- .NET: add Register(new <ToolName>Adapter()) in src/hosts/Docuoria.Cli/Adapters/ToolAdapterRegistry.cs
- npm: import the adapter and add this.register(<toolId>Adapter) in src/hosts/docuoria-cli-npm/src/adapters/registry.ts Both registries MUST have the adapters in the same order.
Step 4: Golden-output fixture
Create tests/fixtures/<tool-id>/expected/skill/ and tests/fixtures/<tool-id>/expected/command/ directories. Run the .NET implementation once against the empty-project fixture, hand-review the output, then copy it into the expected/ directories. The same files are used by both the .NET test suite (tests/Docuoria.Tests/Hosts/) and the npm test suite (src/hosts/docuoria-cli-npm/test/).
Byte-equivalence requirement
The two distributions must produce byte-identical output for the same input. CI runs both test suites on every PR and fails if either produces output that does not match the golden fixtures. A PR that adds or modifies an adapter in only one distribution will fail CI until both distributions match.