@jchat/create-addon 1.0.0-alpha.3 → 1.0.0-alpha.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,198 @@
1
1
  # @jchat/create-addon
2
2
 
3
+ ## 1.0.0-alpha.31
4
+
5
+ ### Patch Changes
6
+
7
+ - Update addon test template for mandatory English and optional host translations
8
+
9
+ - Update addon scaffolding templates to import UI and icons from @jchat/addon-sdk/ui
10
+
11
+ - Upgrade package type-checking to native bun check for faster validation
12
+
13
+ - Bumped `@jchat/*` dependencies:
14
+ - [`addon-sdk@1.0.0-alpha.31`](https://github.com/jchatcloud/jchat/releases/tag/addon-sdk@v1.0.0-alpha.31)
15
+
16
+ ## 1.0.0-alpha.30
17
+
18
+ ### Patch Changes
19
+
20
+ - Bumped `@jchat/*` dependencies:
21
+ - [`addon-sdk@1.0.0-alpha.30`](https://github.com/jchatcloud/jchat/releases/tag/addon-sdk@v1.0.0-alpha.30)
22
+
23
+ ## 1.0.0-alpha.29
24
+
25
+ ### Patch Changes
26
+
27
+ - Bumped `@jchat/*` dependencies:
28
+ - [`addon-sdk@1.0.0-alpha.29`](https://github.com/jchatcloud/jchat/releases/tag/addon-sdk@v1.0.0-alpha.29)
29
+
30
+ ## 1.0.0-alpha.28
31
+
32
+ ### Patch Changes
33
+
34
+ - Bumped `@jchat/*` dependencies:
35
+ - [`addon-sdk@1.0.0-alpha.28`](https://github.com/jchatcloud/jchat/releases/tag/addon-sdk@v1.0.0-alpha.28)
36
+
37
+ ## 1.0.0-alpha.27
38
+
39
+ ### Patch Changes
40
+
41
+ - Standardize runtime environment access to Bun.env
42
+
43
+ - Bumped `@jchat/*` dependencies:
44
+ - [`addon-sdk@1.0.0-alpha.27`](https://github.com/jchatcloud/jchat/releases/tag/addon-sdk@v1.0.0-alpha.27)
45
+
46
+ ## 1.0.0-alpha.26
47
+
48
+ ### Patch Changes
49
+
50
+ - Bumped `@jchat/*` dependencies:
51
+ - [`addon-sdk@1.0.0-alpha.26`](https://github.com/jchatcloud/jchat/releases/tag/addon-sdk@v1.0.0-alpha.26)
52
+
53
+ ## 1.0.0-alpha.25
54
+
55
+ ### Patch Changes
56
+
57
+ - Update addon sandbox docker compose template
58
+
59
+ - Update package metadata, documentation, and license links
60
+
61
+ - Update sandbox development environment templates
62
+
63
+ - Bumped `@jchat/*` dependencies:
64
+ - [`addon-sdk@1.0.0-alpha.25`](https://github.com/jchatcloud/jchat/releases/tag/addon-sdk@v1.0.0-alpha.25)
65
+
66
+ ## 1.0.0-alpha.24
67
+
68
+ ### Minor Changes
69
+
70
+ - Add addon logo validation, database schema, scaffolding, and UI card rendering
71
+
72
+ ### Patch Changes
73
+
74
+ - Update default service and documentation domains to jchatcloud.com
75
+
76
+ - Update package repository URLs to jarvistack organization
77
+
78
+ - Improve code formatting and style consistency
79
+
80
+ - Refactor add-on scaffolder into modular template providers and orchestrator
81
+
82
+ - Bumped `@jchat/*` dependencies:
83
+ - [`addon-sdk@1.0.0-alpha.24`](https://github.com/jchatcloud/jchat/releases/tag/addon-sdk@v1.0.0-alpha.24)
84
+
85
+ ## 1.0.0-alpha.23
86
+
87
+ ### Patch Changes
88
+
89
+ - Bumped `@jchat/*` dependencies:
90
+ - [`addon-sdk@1.0.0-alpha.23`](https://github.com/jchatcloud/jchat/releases/tag/addon-sdk@v1.0.0-alpha.23)
91
+
92
+ ## 1.0.0-alpha.22
93
+
94
+ ### Patch Changes
95
+
96
+ - Update addon scaffolding templates to snake_case database conventions
97
+
98
+ - Update default database migration templates to snake_case naming conventions
99
+ - Update default service and documentation domains to jchatplatform.com
100
+
101
+ - Bumped `@jchat/*` dependencies:
102
+ - [`addon-sdk@1.0.0-alpha.22`](https://github.com/jchatcloud/jchat/releases/tag/addon-sdk@v1.0.0-alpha.22)
103
+
104
+ ## 1.0.0-alpha.21
105
+
106
+ ### Patch Changes
107
+
108
+ - Bumped `@jchat/*` dependencies:
109
+ - [`addon-sdk@1.0.0-alpha.21`](https://github.com/jchatcloud/jchat/releases/tag/addon-sdk@v1.0.0-alpha.21)
110
+
111
+ ## 1.0.0-alpha.20
112
+
113
+ ### Patch Changes
114
+
115
+ - Bumped `@jchat/*` dependencies:
116
+ - [`addon-sdk@1.0.0-alpha.20`](https://github.com/jchatcloud/jchat/releases/tag/addon-sdk@v1.0.0-alpha.20)
117
+
118
+ ## 1.0.0-alpha.19
119
+
120
+ ### Patch Changes
121
+
122
+ - Bumped `@jchat/*` dependencies:
123
+ - [`addon-sdk@1.0.0-alpha.19`](https://github.com/jchatcloud/jchat/releases/tag/addon-sdk@v1.0.0-alpha.19)
124
+
125
+ ## 1.0.0-alpha.17
126
+
127
+ ### Patch Changes
128
+
129
+ - Updated dependency `@jchat/addon-sdk` to `v1.0.0-alpha.17`
130
+
131
+ ## 1.0.0-alpha.16
132
+
133
+ No changes in this release.
134
+
135
+ ## 1.0.0-alpha.15
136
+
137
+ ### Patch Changes
138
+
139
+ - adba4c7: Remove redundant `prepack` build lifecycle scripts across addon development and runtime packages to eliminate concurrent build race conditions during publication.
140
+
141
+ ## 1.0.0-alpha.14
142
+
143
+ No changes in this release.
144
+
145
+ ## 1.0.0-alpha.13
146
+
147
+ No changes in this release.
148
+
149
+ ## 1.0.0-alpha.12
150
+
151
+ ### Patch Changes
152
+
153
+ - 3d4d0ad: - Add interactive terminal UI powered by `@clack/prompts` with automatic TTY detection and positional argument support
154
+ - Add full-stack addon template scaffolding with Elysia API router, Kysely database schema, SQL migrations, and custom permission definitions
155
+ - Add multi-mountpoint support with dynamic UI rendering and directional RTL/LTR styles
156
+ - Expand locale scaffolding to all 20 host languages with 100% key parity and automated synchronization testing
157
+ - Strongly type `MountPoint` and `MOUNT_POINTS` contracts across generator and CLI interfaces
158
+ - Bundle contracts inline in `@jchat/create-addon` for standalone, zero-dependency CLI execution
159
+ - Export `./contracts` subpath from `@jchat/addon-sdk` for lightweight, framework-agnostic contract imports
160
+ - 7b86222: Add official customer-facing Agent Skills for JChat addon development and creation. Bundles `@jchat/addon-sdk` skills (`jchat-addon-development` and `create-jchat-addon`) for AI coding assistants and automatically scaffolds in-workspace skills when creating new addon projects.
161
+
162
+ ## 1.0.0-alpha.11
163
+
164
+ ## 1.0.0-alpha.10
165
+
166
+ ## 1.0.0-alpha.9
167
+
168
+ ## 1.0.0-alpha.8
169
+
170
+ ## 1.0.0-alpha.7
171
+
172
+ ### Minor Changes
173
+
174
+ - 7cef24c: - Enhance addon package diagnostics with semantic version compatibility validation for JChat host and Addon SDK
175
+ - Add support for local workspace development, sandbox test harnesses, and distribution packaging
176
+ - Improve runtime license verification and multi-environment path resolution
177
+ - Update addon generator templates with 20-language i18n support, standard scripts, and type definitions
178
+
179
+ ## 1.0.0-alpha.6
180
+
181
+ ## 1.0.0-alpha.5
182
+
183
+ ### Patch Changes
184
+
185
+ - 9755c28: Export curated UI components, types, and Tailwind styles from `@jchat/addon-sdk/ui` (`@jchat/addon-sdk/ui/tailwind.css`) for sandbox and third-party addon developers.
186
+ - 8b8297f: Rename package from `create-jchat-addon` to `@jchat/create-addon` and update binary script to `create-addon`.
187
+ - 5bbb2b6: Inherit jchatVersion and addonSdkVersion directly from @jchat/create-addon package version when generating standalone devkit.
188
+
189
+ ## 1.0.0-alpha.4
190
+
191
+ ### Patch Changes
192
+
193
+ - 8b8297f: Rename package from `create-jchat-addon` to `@jchat/create-addon` and update binary script to `create-addon`.
194
+ - 5bbb2b6: Inherit jchatVersion and addonSdkVersion directly from @jchat/create-addon package version when generating standalone devkit.
195
+
3
196
  ## 1.0.0-alpha.3
4
197
 
5
198
  ## 1.0.0-alpha.2
package/LICENSE CHANGED
@@ -1,201 +1,23 @@
1
- Apache License
2
- Version 2.0, January 2004
3
- http://www.apache.org/licenses/
1
+ CUSTOM COMMERCIAL END USER LICENSE AGREEMENT (EULA)
4
2
 
5
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
3
+ Copyright (c) 2026 Jchat Cloud. All rights reserved.
6
4
 
7
- 1. Definitions.
5
+ 1. DEFINITIONS
6
+ "Software" refers to this npm package and its source code.
7
+ "Authorized Application" refers strictly to the application known as "JChat".
8
8
 
9
- "License" shall mean the terms and conditions for use, reproduction,
10
- and distribution as defined by Sections 1 through 9 of this document.
9
+ 2. LICENSE GRANT
10
+ Subject to the terms of this Agreement and payment of any applicable fees, the
11
+ Licensor grants you a non-exclusive, non-transferable, revocable license to
12
+ download, install, and use the Software.
11
13
 
12
- "Licensor" shall mean the copyright owner or entity authorized by
13
- the copyright owner that is granting the License.
14
+ 3. RESTRICTIONS ON USE
15
+ You are expressly prohibited from using this Software, in whole or in part,
16
+ in any application, product, or service other than the Authorized Application (JChat).
17
+ Any deployment, linking, execution, or inclusion of this Software into an
18
+ application that is not JChat constitutes a breach of this contract and
19
+ an infringement of copyright law.
14
20
 
15
- "Legal Entity" shall mean the union of the acting entity and all
16
- other entities that control, are controlled by, or are under common
17
- control with that entity. For the purposes of this definition,
18
- "control" means (i) the power, direct or indirect, to cause the
19
- direction or management of such entity, whether by contract or
20
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
21
- outstanding shares, or (iii) beneficial ownership of such entity.
22
-
23
- "You" (or "Your") shall mean an individual or Legal Entity
24
- exercising permissions granted by this License.
25
-
26
- "Source" form shall mean the preferred form for making modifications,
27
- including but not limited to software source code, documentation
28
- source, and configuration files.
29
-
30
- "Object" form shall mean any form resulting from mechanical
31
- transformation or translation of a Source form, including but
32
- not limited to compiled object code, generated documentation,
33
- and conversions to other media types.
34
-
35
- "Work" shall mean the work of authorship, whether in Source or
36
- Object form, made available under the License, as indicated by a
37
- copyright notice that is included in or attached to the work
38
- (an example is provided in the Appendix below).
39
-
40
- "Derivative Works" shall mean any work, whether in Source or Object
41
- form, that is based on (or derived from) the Work and for which the
42
- editorial revisions, annotations, elaborations, or other modifications
43
- represent, as a whole, an original work of authorship. For the purposes
44
- of this License, Derivative Works shall not include works that remain
45
- separable from, or merely link (or bind by name) to the interfaces of,
46
- the Work and Derivative Works thereof.
47
-
48
- "Contribution" shall mean any work of authorship, including
49
- the original version of the Work and any modifications or additions
50
- to that Work or Derivative Works thereof, that is intentionally
51
- submitted to Licensor for inclusion in the Work by the copyright owner
52
- or by an individual or Legal Entity authorized to submit on behalf of
53
- the copyright owner. For the purposes of this definition, "submitted"
54
- means any form of electronic, verbal, or written communication sent
55
- to the Licensor or its representatives, including but not limited to
56
- communication on electronic mailing lists, source code control systems,
57
- and issue tracking systems that are managed by, or on behalf of, the
58
- Licensor for the purpose of discussing and improving the Work, but
59
- excluding communication that is conspicuously marked or otherwise
60
- designated in writing by the copyright owner as "Not a Contribution."
61
-
62
- "Contributor" shall mean Licensor and any individual or Legal Entity
63
- on behalf of whom a Contribution has been received by Licensor and
64
- subsequently incorporated within the Work.
65
-
66
- 2. Grant of Copyright License. Subject to the terms and conditions of
67
- this License, each Contributor hereby grants to You a perpetual,
68
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69
- copyright license to reproduce, prepare Derivative Works of,
70
- publicly display, publicly perform, sublicense, and distribute the
71
- Work and such Derivative Works in Source or Object form.
72
-
73
- 3. Grant of Patent License. Subject to the terms and conditions of
74
- this License, each Contributor hereby grants to You a perpetual,
75
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76
- (except as stated in this section) patent license to make, have made,
77
- use, offer to sell, sell, import, and otherwise transfer the Work,
78
- where such license applies only to those patent claims licensable
79
- by such Contributor that are necessarily infringed by their
80
- Contribution(s) alone or by combination of their Contribution(s)
81
- with the Work to which such Contribution(s) was submitted. If You
82
- institute patent litigation against any entity (including a
83
- cross-claim or counterclaim in a lawsuit) alleging that the Work
84
- or a Contribution incorporated within the Work constitutes direct
85
- or contributory patent infringement, then any patent licenses
86
- granted to You under this License for that Work shall terminate
87
- as of the date such litigation is filed.
88
-
89
- 4. Redistribution. You may reproduce and distribute copies of the
90
- Work or Derivative Works thereof in any medium, with or without
91
- modifications, and in Source or Object form, provided that You
92
- meet the following conditions:
93
-
94
- (a) You must give any other recipients of the Work or
95
- Derivative Works a copy of this License; and
96
-
97
- (b) You must cause any modified files to carry prominent notices
98
- stating that You changed the files; and
99
-
100
- (c) You must retain, in the Source form of any Derivative Works
101
- that You distribute, all copyright, patent, trademark, and
102
- attribution notices from the Source form of the Work,
103
- excluding those notices that do not pertain to any part of
104
- the Derivative Works; and
105
-
106
- (d) If the Work includes a "NOTICE" text file as part of its
107
- distribution, then any Derivative Works that You distribute must
108
- include a readable copy of the attribution notices contained
109
- within such NOTICE file, excluding those notices that do not
110
- pertain to any part of the Derivative Works, in at least one
111
- of the following places: within a NOTICE text file distributed
112
- as part of the Derivative Works; within the Source form or
113
- documentation, if provided along with the Derivative Works; or,
114
- within a display generated by the Derivative Works, if and
115
- wherever such third-party notices normally appear. The contents
116
- of the NOTICE file are for informational purposes only and
117
- do not modify the License. You may add Your own attribution
118
- notices within Derivative Works that You distribute, alongside
119
- or as an addendum to the NOTICE text from the Work, provided
120
- that such additional attribution notices cannot be construed
121
- as modifying the License.
122
-
123
- You may add Your own copyright statement to Your modifications and
124
- may provide additional or different license terms and conditions
125
- for use, reproduction, or distribution of Your modifications, or
126
- for any such Derivative Works as a whole, provided Your use,
127
- reproduction, and distribution of the Work otherwise complies with
128
- the conditions stated in this License.
129
-
130
- 5. Submission of Contributions. Unless You explicitly state otherwise,
131
- any Contribution intentionally submitted for inclusion in the Work
132
- by You to the Licensor shall be under the terms and conditions of
133
- this License, without any additional terms or conditions.
134
- Notwithstanding the above, nothing herein shall supersede or modify
135
- the terms of any separate license agreement you may have executed
136
- with Licensor regarding such Contributions.
137
-
138
- 6. Trademarks. This License does not grant permission to use the trade
139
- names, trademarks, service marks, or product names of the Licensor,
140
- except as required for reasonable and customary use in describing the
141
- origin of the Work and reproducing the content of the NOTICE file.
142
-
143
- 7. Disclaimer of Warranty. Unless required by applicable law or
144
- agreed to in writing, Licensor provides the Work (and each
145
- Contributor provides its Contributions) on an "AS IS" BASIS,
146
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147
- implied, including, without limitation, any warranties or conditions
148
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149
- PARTICULAR PURPOSE. You are solely responsible for determining the
150
- appropriateness of using or redistributing the Work and assume any
151
- risks associated with Your exercise of permissions under this License.
152
-
153
- 8. Limitation of Liability. In no event and under no legal theory,
154
- whether in tort (including negligence), contract, or otherwise,
155
- unless required by applicable law (such as deliberate and grossly
156
- negligent acts) or agreed to in writing, shall any Contributor be
157
- liable to You for damages, including any direct, indirect, special,
158
- incidental, or consequential damages of any character arising as a
159
- result of this License or out of the use or inability to use the
160
- Work (including but not limited to damages for loss of goodwill,
161
- work stoppage, computer failure or malfunction, or any and all
162
- other commercial damages or losses), even if such Contributor
163
- has been advised of the possibility of such damages.
164
-
165
- 9. Accepting Warranty or Additional Liability. While redistributing
166
- the Work or Derivative Works thereof, You may choose to offer,
167
- and charge a fee for, acceptance of support, warranty, indemnity,
168
- or other liability obligations and/or rights consistent with this
169
- License. However, in accepting such obligations, You may act only
170
- on Your own behalf and on Your sole responsibility, not on behalf
171
- of any other Contributor, and only if You agree to indemnify,
172
- defend, and hold each Contributor harmless for any liability
173
- incurred by, or claims asserted against, such Contributor by reason
174
- of your accepting any such warranty or additional liability.
175
-
176
- END OF TERMS AND CONDITIONS
177
-
178
- APPENDIX: How to apply the Apache License to your work.
179
-
180
- To apply the Apache License to your work, attach the following
181
- boilerplate notice, with the fields enclosed by brackets "[]"
182
- replaced with your own identifying information. (Don't include
183
- the brackets!) The text should be enclosed in the appropriate
184
- comment syntax for the file format. We also recommend that a
185
- file or class name and description of purpose be included on the
186
- same "printed page" as the copyright notice for easier
187
- identification within third-party archives.
188
-
189
- Copyright 2026 Md. Jabarullah
190
-
191
- Licensed under the Apache License, Version 2.0 (the "License");
192
- you may not use this file except in compliance with the License.
193
- You may obtain a copy of the License at
194
-
195
- http://www.apache.org/licenses/LICENSE-2.0
196
-
197
- Unless required by applicable law or agreed to in writing, software
198
- distributed under the License is distributed on an "AS IS" BASIS,
199
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200
- See the License for the specific language governing permissions and
201
- limitations under the License.
21
+ 4. NO REDISTRIBUTION
22
+ You may not sub-license, rent, lease, or publicly redistribute this Software
23
+ to any third party without explicit written consent from the Licensor.
package/README.md CHANGED
@@ -1,39 +1,210 @@
1
1
  # @jchat/create-addon
2
2
 
3
- A CLI tool for generating a self-contained JChat addon development workspace.
3
+ Official CLI scaffolding tool for generating self-contained [JChat](https://jchatcloud.com) addon development workspaces and interactive sandbox environments.
4
4
 
5
- ## Usage
5
+ ---
6
6
 
7
- Generate a new addon workspace:
7
+ ## Quick Start
8
+
9
+ ### 1. Interactive Scaffolding (Recommended)
10
+
11
+ Run without flags in a terminal for an interactive, guided setup powered by `@clack/prompts`:
12
+
13
+ ```bash
14
+ bunx @jchat/create-addon
15
+ ```
16
+
17
+ The interactive wizard will guide you through:
18
+
19
+ 1. **Addon ID**: URL-friendly slug (e.g., `poll-manager`).
20
+ 2. **Display Name**: Human-readable name (e.g., `Poll Manager`).
21
+ 3. **Template**: Full-Stack (UI + Backend API + DB) or Frontend Only.
22
+ 4. **Mount Points**: Where the addon attaches in the host UI.
23
+ 5. **Target Environment**: Standalone DevKit (Docker Sandbox) or Monorepo Workspace.
24
+
25
+ ---
26
+
27
+ ### 2. Non-Interactive / Scripted
28
+
29
+ Scaffold immediately by providing flags:
30
+
31
+ ```bash
32
+ # Standalone DevKit with full-stack template
33
+ bunx @jchat/create-addon poll-manager --template=fullstack --name="Poll Manager"
34
+
35
+ # Inside the JChat monorepo (outputs to addons/poll-manager)
36
+ bunx @jchat/create-addon poll-manager --workspace --template=fullstack
37
+ ```
38
+
39
+ ---
40
+
41
+ ## Development Workflows
42
+
43
+ ### Standalone DevKit (Independent Repository)
44
+
45
+ When building an addon outside the JChat core monorepo, `@jchat/create-addon` scaffolds a complete DevKit featuring an isolated containerized sandbox (PostgreSQL 18, Redis 8, HTTP Mock server, and JChat sandbox runtime):
8
46
 
9
47
  ```bash
10
- bunx @jchat/create-addon <addon-id>
48
+ cd poll-manager
49
+
50
+ # 1. Initialize environment config
51
+ cp .env.example .env
52
+
53
+ # 2. Install dependencies
54
+ bun install
55
+
56
+ # 3. Start the local sandbox container environment
57
+ bun sandbox
11
58
  ```
12
59
 
13
- ### Options
60
+ #### Standalone DevKit Automation Scripts
61
+
62
+ | Command | Description |
63
+ | :-------------------- | :-------------------------------------------------------------------------- |
64
+ | `bun sandbox` | Boots Docker/Podman sandbox with live reload, database, and HTTP mock proxy |
65
+ | `bun sandbox:test` | Executes integration and unit tests within the sandbox container |
66
+ | `bun sandbox:package` | Builds and packages the addon into a redistributable `.zip` archive |
67
+ | `bun sandbox:reset` | Resets database fixtures and clears sandbox upload storage |
68
+ | `bun sandbox:cleanup` | Stops and removes all sandbox containers and networks |
69
+
70
+ ---
14
71
 
15
- - `<addon-id>`: (Required) The unique ID for your addon, typically hyphenated (e.g., `weather-addon`).
16
- - `--target=<directory>`: (Optional) The directory to generate the workspace in. Defaults to `../<addon-id>` relative to the current working directory.
17
- - `--image=<image>`: (Optional) A specific Docker image to use for the sandbox environment. Defaults to `ghcr.io/mjjabarullah/addon-developer-sandbox`.
72
+ ### Monorepo Workspace (`--workspace`)
18
73
 
19
- ### Example
74
+ When developing locally inside the JChat monorepo:
20
75
 
21
76
  ```bash
22
- bunx @jchat/create-addon my-addon
23
- cd my-addon
77
+ # Scaffold into addons/<addon-id>
78
+ bunx @jchat/create-addon my-addon --workspace
79
+
80
+ # Start live development with hot reload
81
+ cd addons/my-addon
82
+ bun dev
83
+ ```
84
+
85
+ #### Addon Workspace Scripts
86
+
87
+ | Command | Description |
88
+ | :-------------- | :------------------------------------------------------------------ |
89
+ | `bun dev` | Starts `jchat-addon dev` with fast HMR |
90
+ | `bun build` | Runs typechecking (`tsc --noEmit`) and compiles `jchat-addon build` |
91
+ | `bun test` | Runs Bun unit tests and verifies 20-language translation parity |
92
+ | `bun typecheck` | Validates TypeScript contracts without emitting output |
93
+
94
+ ---
95
+
96
+ ## Workspace Structure
97
+
98
+ ### Full-Stack Addon Template (`--template=fullstack`)
99
+
100
+ ```text
101
+ my-addon/
102
+ ├── addon/
103
+ │ ├── migrations/
104
+ │ │ └── 001_initial.sql # Kysely/SQL database schema migrations
105
+ │ ├── src/
106
+ │ │ ├── locales/ # All 20 host languages
107
+ │ │ │ ├── en.json
108
+ │ │ │ ├── ... (20 languages)
109
+ │ │ │ └── index.ts
110
+ │ │ ├── locales.test.ts # Key-parity tests across all 20 languages
111
+ │ │ ├── api.ts # Backend ElysiaJS routes & business logic
112
+ │ │ ├── db.ts # Kysely database helper & typed tables
113
+ │ │ ├── manifest.ts # Addon permissions, metadata & mount points
114
+ │ │ ├── tailwind.css # Scoped Tailwind CSS v4 styling
115
+ │ │ └── ui.tsx # Frontend React UI component
116
+ │ ├── package.json
117
+ │ └── tsconfig.json
118
+ ├── .agents/
119
+ │ └── skills/
120
+ │ └── jchat-addon-development/ # AI pair-programming skill for the addon
121
+ ├── .env.example # Sandbox configuration & ports
122
+ ├── docker-compose.yml # Containerized PostgreSQL 18, Redis 8 & sandbox
123
+ ├── package.json # DevKit root lifecycle scripts
124
+ ├── README.md # Project documentation
125
+ └── scripts/
126
+ └── devkit.ts # Standalone sandbox orchestrator
24
127
  ```
25
128
 
26
- ## Requirements
129
+ ### Frontend-Only Addon Template (`--template=ui`)
130
+
131
+ Lightweight UI-only extension without server routes or database tables:
132
+
133
+ ```text
134
+ my-addon/
135
+ ├── addon/
136
+ │ ├── src/
137
+ │ │ ├── locales/ # 20 host language translations
138
+ │ │ ├── locales.test.ts # Key parity test
139
+ │ │ ├── manifest.ts # Client mount points & metadata
140
+ │ │ ├── tailwind.css # Scoped Tailwind CSS
141
+ │ │ └── ui.tsx # React UI component
142
+ │ ├── package.json
143
+ │ └── tsconfig.json
144
+ ├── docker-compose.yml
145
+ └── package.json
146
+ ```
147
+
148
+ ---
149
+
150
+ ## CLI Flags & Options
151
+
152
+ | Option | Description | Default |
153
+ | :----------------------- | :----------------------------------------------------------------------------------------- | :--------------------------------- |
154
+ | `<addon-id>` | Addon identifier (lowercase letters, numbers, hyphens). Prompted interactively if omitted. | — |
155
+ | `--target=<dir>` | Output directory for the scaffolded project. | `./<addon-id>` |
156
+ | `--template=<type>` | Addon template type: `fullstack` (UI + API + DB) or `ui` (Frontend only). | `fullstack` |
157
+ | `--mount-points=<p1,p2>` | Comma-separated list of UI mount points (see below). | `chat:toolbar,chat:plus-menu` |
158
+ | `--name=<displayName>` | Human-readable display name for the addon (e.g. `--name="Poll Manager"`). | Auto-derived from `<addon-id>` |
159
+ | `--workspace` | Target monorepo workspace mode (scaffolds to `addons/<addon-id>`). | `false` |
160
+ | `--image=<image>` | Custom container image for the JChat sandbox runtime. | `ghcr.io/jchatcloud/jchat-sandbox` |
161
+ | `--help`, `-h` | Display CLI usage and options. | — |
162
+
163
+ ---
164
+
165
+ ## Supported Mount Points
166
+
167
+ Addons mount into specific extension slots across the host application:
168
+
169
+ | Mount Point | Description |
170
+ | :------------------------- | :---------------------------------------------------------- |
171
+ | `chat:toolbar` | Header toolbar button in the active room |
172
+ | `chat:plus-menu` | Action item inside the message composer plus (`+`) menu |
173
+ | `chat:sidebar` | Right-hand widget panel in chat |
174
+ | `addon:settings` | Addon configuration panel in site administration dashboard |
175
+ | `owner:settings` | Addon configuration panel in owner administration dashboard |
176
+ | `emoji-picker:gif-tab` | Custom tab inside the chat emoji / GIF picker panel |
177
+ | `emoji-picker:sticker-tab` | Custom tab inside the chat sticker picker panel |
178
+
179
+ ---
180
+
181
+ ## Addon SDK Subpath Architecture
182
+
183
+ Generated addons import exclusively from `@jchat/addon-sdk` subpaths:
184
+
185
+ - **`@jchat/addon-sdk`**: Manifest definitions, backend Elysia server utilities, permissions, contracts, and lifecycle types.
186
+ - **`@jchat/addon-sdk/ui`**: Base UI component library, design tokens, unified `toast` notifications, and icons (`import { Button, Icons, toast } from "@jchat/addon-sdk/ui"`).
187
+ - **`@jchat/addon-sdk/state`**: Shared atomic state powered by Jotai (`import { atom, useAtom } from "@jchat/addon-sdk/state"`).
188
+
189
+ ---
190
+
191
+ ## 20-Language Localization Out of the Box
192
+
193
+ All scaffolded addons automatically include string definitions for all 20 host languages supported by JChat:
194
+
195
+ `ar`, `bg`, `de`, `el`, `en`, `es`, `fr`, `he`, `hi`, `hr`, `kn`, `ml`, `nl`, `pt`, `ro`, `ru`, `ta`, `te`, `tr`, `ur`
196
+
197
+ A built-in test (`src/locales.test.ts`) verifies 100% key parity across all languages on every `bun test`.
198
+
199
+ ---
200
+
201
+ ## Prerequisites
27
202
 
28
- - Bun 1.3+
29
- - Docker
203
+ - **Bun**: 1.4.0+
204
+ - **Docker** or **Podman**: Required for running the local standalone sandbox environment (`bun sandbox`).
30
205
 
31
- ## Licensing
206
+ ---
32
207
 
33
- The creator package and JChat-authored template material are licensed under Apache License 2.0.
34
- You retain ownership of the original code and content you add to a generated project and may choose
35
- the license for that original work. Any JChat-authored template portions and third-party components
36
- remain subject to their respective licenses and notices.
208
+ ## License
37
209
 
38
- The generated developer sandbox does not grant a production JChat license. Production use remains
39
- subject to the applicable JChat and addon marketplace terms.
210
+ Proprietary — All rights reserved. See the [Commercial EULA & Licensing Terms](https://jchatcloud.com/terms) for full details.
package/dist/cli.d.mts CHANGED
@@ -1,10 +1,17 @@
1
+ import { r as MountPoint } from "./contracts2.mjs";
2
+ import { t as AddonTemplateType } from "./generator.mjs";
1
3
  //#region src/cli.d.ts
2
- interface CreatorArguments {
4
+ export interface CreatorArguments {
3
5
  addonId: string;
4
6
  targetDir: string;
5
7
  sandboxImage?: string;
8
+ workspace?: boolean;
9
+ template?: AddonTemplateType;
10
+ mountPoints?: MountPoint[];
11
+ displayName?: string;
6
12
  }
7
- declare function parseCreatorArguments(arguments_: readonly string[]): CreatorArguments;
8
- declare function runCreator(arguments_: readonly string[]): Promise<string>;
9
- //#endregion
10
- export { CreatorArguments, parseCreatorArguments, runCreator };
13
+ export declare function parseCreatorArguments(arguments_: readonly string[]): CreatorArguments;
14
+ export declare function isInsideJChatMonorepo(): boolean;
15
+ export declare function promptInteractiveOptions(initialAddonId?: string): Promise<CreatorArguments>;
16
+ export declare function runCreator(arguments_: readonly string[]): Promise<string>;
17
+ //#endregion