workspai 0.45.0 → 0.46.0
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/README.md +242 -516
- package/contracts/cli-runtime-command-inventory.v1.snapshot.json +4 -0
- package/contracts/extension-cli-compatibility.v1.json +3 -2
- package/contracts/published-contract-catalog.v1.json +7 -1
- package/contracts/runtime-command-surface.v1.json +41 -6
- package/contracts/workspace-archive-capabilities.v1.json +17 -6
- package/contracts/workspace-intelligence/studio-blocker-handoff.v1.json +4 -0
- package/contracts/workspace-intelligence/workspace-intelligence-run.v1.json +207 -0
- package/contracts/workspace-intelligence-architecture.v1.json +1 -1
- package/contracts/workspace-intelligence-chain.v1.json +37 -1
- package/dist/analyze-BEBEZSZK.js +1 -0
- package/dist/{artifact-remediation-plan-WLZGROUU.js → artifact-remediation-plan-FFQSESAM.js} +1 -1
- package/dist/autopilot-release-WUR4CQIT.js +1 -0
- package/dist/chunk-2G7FASAO.js +2 -0
- package/dist/{chunk-5GNT4RJI.js → chunk-4EPHWD27.js} +1 -1
- package/dist/{chunk-J4AICQFB.js → chunk-4LGXSBCN.js} +1 -1
- package/dist/chunk-52PBRX7F.js +1 -0
- package/dist/{chunk-2QOWRBQD.js → chunk-6IIZJQLV.js} +1 -1
- package/dist/{chunk-HYJK7W3B.js → chunk-CVHMUSRX.js} +1 -1
- package/dist/{chunk-7UZVOYF5.js → chunk-DIPD72H4.js} +1 -1
- package/dist/chunk-EFYHGCGX.js +2 -0
- package/dist/chunk-EYJ2CQSK.js +1 -0
- package/dist/chunk-FPJNWPKU.js +1 -0
- package/dist/{chunk-JP25YL3J.js → chunk-FTY7GGXJ.js} +2 -2
- package/dist/chunk-FWRXA435.js +2 -0
- package/dist/chunk-FXQJX34Z.js +1 -0
- package/dist/chunk-HDURFXW5.js +2 -0
- package/dist/chunk-HMUKBW2S.js +4 -0
- package/dist/{chunk-DXPU4DDV.js → chunk-J5PIZCAU.js} +92 -78
- package/dist/{chunk-6ZENXBMG.js → chunk-K4WNYXKK.js} +7 -7
- package/dist/chunk-MER6ZBN2.js +13 -0
- package/dist/chunk-N7DV5L7C.js +1 -0
- package/dist/{chunk-P424XYHP.js → chunk-PRBVYW3T.js} +1 -1
- package/dist/{chunk-WANW4QA4.js → chunk-QA5BGEQW.js} +1 -1
- package/dist/chunk-QZLIURER.js +13 -0
- package/dist/{chunk-P7SCWJFG.js → chunk-RIEF2DDX.js} +1 -1
- package/dist/{chunk-V2H2KRMZ.js → chunk-SXMTSV5M.js} +1 -1
- package/dist/chunk-SXPY523X.js +1 -0
- package/dist/{chunk-XIVFLY6G.js → chunk-UQWOVV6V.js} +1 -1
- package/dist/chunk-V3LRQZ36.js +1 -0
- package/dist/chunk-VFDM65IE.js +80 -0
- package/dist/{chunk-KU4S7RCM.js → chunk-WPEEC5BX.js} +1 -1
- package/dist/chunk-WYFPXTTS.js +2 -0
- package/dist/{chunk-K63BSU56.js → chunk-YUATNVOT.js} +62 -51
- package/dist/{chunk-OOOPYUL2.js → chunk-ZKAI3PJE.js} +1 -1
- package/dist/{create-KFR6FLRT.js → create-WCV3L6XH.js} +1 -1
- package/dist/doctor-5BWM2EMJ.js +1 -0
- package/dist/{dotnet-webapi-clean-BYUUHX5Y.js → dotnet-webapi-clean-6TVFBTVI.js} +20 -20
- package/dist/{gofiber-standard-B6UK5GR7.js → gofiber-standard-2BL7GWZB.js} +1 -1
- package/dist/{gogin-standard-BXU44VEM.js → gogin-standard-XGP3KBXA.js} +1 -1
- package/dist/index.d.ts +88 -13
- package/dist/index.js +327 -324
- package/dist/pipeline-ORIWVVYM.js +5 -0
- package/dist/{platform-capabilities-YICBF4FA.js → platform-capabilities-2B4QMZXE.js} +1 -1
- package/dist/{pythonRapidkitExec-UJYIB6FL.js → pythonRapidkitExec-CVCIK225.js} +1 -1
- package/dist/{springboot-standard-PEHDKH2L.js → springboot-standard-JJNUID6M.js} +6 -6
- package/dist/workspace-7OXW5YTJ.js +1 -0
- package/dist/{workspace-agent-sync-G5YVI3BJ.js → workspace-agent-sync-O4IA6VOA.js} +1 -1
- package/dist/workspace-archive-H74NBBNW.js +10 -0
- package/dist/{workspace-context-E3UFWL5X.js → workspace-context-R7IPUBPG.js} +1 -1
- package/dist/workspace-contract-HKCMOMFE.js +1 -0
- package/dist/workspace-explain-GOPQYTPQ.js +1 -0
- package/dist/workspace-explain-contract-SVFJAAEI.js +1 -0
- package/dist/{workspace-feedback-YY6WQPWQ.js → workspace-feedback-REOS36ZZ.js} +1 -1
- package/dist/{workspace-foundation-3C2DLCVI.js → workspace-foundation-KXT4QI5O.js} +1 -1
- package/dist/{workspace-history-VF3CHDYQ.js → workspace-history-OGOVSKZG.js} +1 -1
- package/dist/{workspace-intelligence-3GG7GEDQ.js → workspace-intelligence-7IESQSXY.js} +1 -1
- package/dist/workspace-intelligence-runner-6GJ5M4HB.js +1 -0
- package/dist/{workspace-mcp-serve-MJMUV4RY.js → workspace-mcp-serve-FRVWBO36.js} +1 -1
- package/dist/{workspace-model-NG45SRM5.js → workspace-model-PPYX7B4S.js} +1 -1
- package/dist/workspace-python-engine-state-2MLKJYQG.js +2 -0
- package/dist/workspace-registry-summary-SZ46R5PD.js +1 -0
- package/dist/workspace-run-V3KKHTVF.js +1 -0
- package/dist/{workspace-verify-ZNT6JX7D.js → workspace-verify-MFQ7IXGD.js} +1 -1
- package/dist/{workspace-watch-W47T4RX2.js → workspace-watch-SOPZHRWA.js} +1 -1
- package/docs/AI_DYNAMIC_INTEGRATION.md +29 -33
- package/docs/AI_FEATURES.md +18 -27
- package/docs/AI_QUICKSTART.md +7 -4
- package/docs/DEVELOPMENT.md +5 -5
- package/docs/From Code to Shared Understanding.png +0 -0
- package/docs/OPEN_SOURCE_USER_SCENARIOS.md +23 -2
- package/docs/OPTIMIZATION_GUIDE.md +19 -51
- package/docs/PACKAGE_MANAGER_POLICY.md +4 -1
- package/docs/README.md +30 -3
- package/docs/SECURITY.md +13 -6
- package/docs/SETUP.md +6 -3
- package/docs/UTILITIES.md +8 -20
- package/docs/WORKSPACE_MARKER_SPEC.md +27 -20
- package/docs/ci-workflows.md +19 -5
- package/docs/commands-reference.md +37 -9
- package/docs/config-file-guide.md +64 -247
- package/docs/contracts/ARTIFACT_CATALOG.md +14 -2
- package/docs/contracts/CLI_LOG_EVENT_STREAM.md +1 -1
- package/docs/contracts/README.md +5 -2
- package/docs/contracts/RUNTIME_ACCEPTANCE_MATRIX.md +4 -4
- package/docs/contracts/RUNTIME_SUPPORT_MATRIX.md +14 -10
- package/docs/creating-workspaces-and-projects.md +649 -0
- package/docs/doctor-command.md +5 -4
- package/docs/examples/ci-agent-grounding.yml +16 -10
- package/docs/from-code-to-shared-understanding.md +69 -38
- package/docs/workspace-intelligence-runner.md +186 -0
- package/docs/workspace-operations.md +29 -11
- package/docs/workspace-run.md +4 -1
- package/package.json +9 -8
- package/rapidkit.config.example.cjs +5 -5
- package/scripts/enforce-package-manager.cjs +1 -1
- package/scripts/prepack-enterprise.mjs +4 -0
- package/workspai.config.example.cjs +12 -47
- package/dist/analyze-YLV7NVLF.js +0 -1
- package/dist/autopilot-release-YBN3SWAA.js +0 -1
- package/dist/chunk-2K3GYCPS.js +0 -1
- package/dist/chunk-42G2OK64.js +0 -1
- package/dist/chunk-5AKYMAIL.js +0 -1
- package/dist/chunk-5PVEQ6CZ.js +0 -13
- package/dist/chunk-6AA3WWQZ.js +0 -2
- package/dist/chunk-7RIWU5TZ.js +0 -1
- package/dist/chunk-BJLE5CH7.js +0 -4
- package/dist/chunk-G3H5R3RR.js +0 -1
- package/dist/chunk-IMUU5Q2V.js +0 -13
- package/dist/chunk-KPPGZCUW.js +0 -78
- package/dist/chunk-LCRROMRR.js +0 -2
- package/dist/chunk-QWU2CZBG.js +0 -2
- package/dist/chunk-XZGVNGRB.js +0 -1
- package/dist/chunk-ZWO6K24C.js +0 -2
- package/dist/doctor-YJDM5XBH.js +0 -1
- package/dist/imported-projects-registry-FOIE27WT.js +0 -1
- package/dist/pipeline-FEDYO3IA.js +0 -5
- package/dist/workspace-PLXOO6ST.js +0 -1
- package/dist/workspace-archive-EEGLHZDW.js +0 -10
- package/dist/workspace-contract-LQJDZV36.js +0 -1
- package/dist/workspace-explain-G74ZIF23.js +0 -1
- package/dist/workspace-explain-contract-KT757JGQ.js +0 -1
- package/dist/workspace-python-engine-state-MTWIIZPY.js +0 -2
- package/dist/workspace-registry-summary-JM2XY52C.js +0 -1
- package/dist/workspace-run-WEQYIERE.js +0 -1
|
@@ -0,0 +1,649 @@
|
|
|
1
|
+
# Creating Workspaces and Projects
|
|
2
|
+
|
|
3
|
+
This guide explains, in plain language, what Workspai does when you create a
|
|
4
|
+
workspace or a project. It covers interactive commands, automation, project
|
|
5
|
+
locations, workspace linking, supported kits, and the most important flags.
|
|
6
|
+
|
|
7
|
+
For a compact list of command syntax, see
|
|
8
|
+
[commands-reference.md](./commands-reference.md).
|
|
9
|
+
|
|
10
|
+
## The two things you can create
|
|
11
|
+
|
|
12
|
+
A **workspace** is the governed boundary that holds project registrations,
|
|
13
|
+
policies, contracts, and Workspace Intelligence reports.
|
|
14
|
+
|
|
15
|
+
A **project** is an application or service, such as a FastAPI API, Go service,
|
|
16
|
+
Spring Boot service, .NET API, or frontend application.
|
|
17
|
+
|
|
18
|
+
The canonical commands are:
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
npx workspai create workspace <name>
|
|
22
|
+
npx workspai create project <kit> <name>
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Use the canonical commands in scripts and documentation. The older
|
|
26
|
+
`workspai <name> --template <kit>` form is supported for compatibility, but it
|
|
27
|
+
does not have exactly the same behavior.
|
|
28
|
+
|
|
29
|
+
## Quick decision table
|
|
30
|
+
|
|
31
|
+
| What you want | Command |
|
|
32
|
+
| --------------------------------------------------------------- | --------------------------------------------------------------------------- |
|
|
33
|
+
| Choose interactively | `npx workspai create` |
|
|
34
|
+
| Create a managed workspace | `npx workspai create workspace platform --yes` |
|
|
35
|
+
| Create a workspace under the current directory | `npx workspai create workspace platform --here --yes` |
|
|
36
|
+
| Create a project and use the current/default workspace behavior | `npx workspai create project gofiber.standard api` |
|
|
37
|
+
| Turn the current folder into a workspace before creating | `npx workspai create project gofiber.standard api --create-workspace --yes` |
|
|
38
|
+
| Create a project without workspace management | `npx workspai create project gofiber.standard api --no-workspace --yes` |
|
|
39
|
+
| Preview a supported create plan | `npx workspai create project frontend.nextjs web --dry-run` |
|
|
40
|
+
|
|
41
|
+
# Creating a workspace
|
|
42
|
+
|
|
43
|
+
## Create in the managed Workspai location
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
npx workspai create workspace platform --yes
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
The default target is:
|
|
50
|
+
|
|
51
|
+
```text
|
|
52
|
+
~/.workspai/workspaces/platform
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
With `--yes`, Workspai does not ask questions. If you do not provide a
|
|
56
|
+
profile, it uses `minimal`.
|
|
57
|
+
|
|
58
|
+
## Create under the current directory
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
npx workspai create workspace platform --here --yes
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
If the current directory is `/home/me/code`, the result is:
|
|
65
|
+
|
|
66
|
+
```text
|
|
67
|
+
/home/me/code/platform
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
`--here` means "create the named workspace as a child of this directory." It
|
|
71
|
+
does not turn the current directory itself into a workspace.
|
|
72
|
+
|
|
73
|
+
## Create under another parent directory
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
npx workspai create workspace platform --output /data/workspaces --yes
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
The result is:
|
|
80
|
+
|
|
81
|
+
```text
|
|
82
|
+
/data/workspaces/platform
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
`--output` is always the parent directory. Workspai adds the workspace name to
|
|
86
|
+
it.
|
|
87
|
+
|
|
88
|
+
Relative output paths are resolved from the current directory:
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
npx workspai create workspace platform --output teams --yes
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
This creates `<current-directory>/teams/platform`.
|
|
95
|
+
|
|
96
|
+
## Use the interactive workspace wizard
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
npx workspai create workspace
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
When values are missing, Workspai can ask for:
|
|
103
|
+
|
|
104
|
+
- The workspace name
|
|
105
|
+
- The managed home or current-directory location
|
|
106
|
+
- The author name
|
|
107
|
+
- The workspace profile
|
|
108
|
+
- Whether to install the optional Python engine
|
|
109
|
+
- The Python environment method when installation is selected
|
|
110
|
+
|
|
111
|
+
You can also start one level higher:
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
npx workspai create
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
In an interactive terminal, this first asks whether you want to create a
|
|
118
|
+
workspace or a project.
|
|
119
|
+
|
|
120
|
+
## Workspace profiles
|
|
121
|
+
|
|
122
|
+
| Profile | Intended runtime scope | Python engine by default |
|
|
123
|
+
| ------------- | ------------------------------------------------ | ------------------------ |
|
|
124
|
+
| `minimal` | Lightweight workspace foundation | No |
|
|
125
|
+
| `node-only` | Node.js projects | No |
|
|
126
|
+
| `go-only` | Go projects | No |
|
|
127
|
+
| `java-only` | Java projects | No |
|
|
128
|
+
| `dotnet-only` | .NET projects | No |
|
|
129
|
+
| `python-only` | Python projects | Yes |
|
|
130
|
+
| `polyglot` | Multiple runtimes | Yes |
|
|
131
|
+
| `enterprise` | Multiple runtimes with governance-oriented setup | Yes |
|
|
132
|
+
|
|
133
|
+
Example:
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
npx workspai create workspace platform --profile go-only --yes
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
## Keep a Python-aware profile without installing Python now
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
npx workspai create workspace platform \
|
|
143
|
+
--profile polyglot \
|
|
144
|
+
--skip-python-engine \
|
|
145
|
+
--yes
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
The workspace remains `polyglot`, but its metadata records the Python engine as
|
|
149
|
+
`skipped`. Workspace Intelligence, project registration, import, adopt, model,
|
|
150
|
+
context, and verify remain available.
|
|
151
|
+
|
|
152
|
+
Use `--skip-python-engine` for workspace creation. For project creation, use
|
|
153
|
+
`--skip-install` instead.
|
|
154
|
+
|
|
155
|
+
## If Python is not installed
|
|
156
|
+
|
|
157
|
+
Python-free profiles do not require Python.
|
|
158
|
+
|
|
159
|
+
For a Python-aware profile, interactive mode offers guidance and fallback
|
|
160
|
+
choices. In non-interactive `--yes` mode, Workspai falls back to a Python-free
|
|
161
|
+
profile when Python is unavailable:
|
|
162
|
+
|
|
163
|
+
| Requested profile | Fallback profile |
|
|
164
|
+
| ----------------- | ---------------- |
|
|
165
|
+
| `python-only` | `minimal` |
|
|
166
|
+
| `polyglot` | `node-only` |
|
|
167
|
+
| `enterprise` | `node-only` |
|
|
168
|
+
|
|
169
|
+
If Poetry is selected but unavailable, Workspai can use a local virtual
|
|
170
|
+
environment instead.
|
|
171
|
+
|
|
172
|
+
## Git behavior for a new workspace
|
|
173
|
+
|
|
174
|
+
Git initialization is enabled by default. Disable it with:
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
npx workspai create workspace platform --skip-git --yes
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
If the target is already inside another Git worktree, Workspai avoids creating
|
|
181
|
+
a nested repository. A missing Git installation or a failed initial commit
|
|
182
|
+
produces a warning but does not remove an otherwise valid workspace.
|
|
183
|
+
|
|
184
|
+
## Preview workspace creation
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
npx workspai create workspace platform \
|
|
188
|
+
--profile polyglot \
|
|
189
|
+
--skip-python-engine \
|
|
190
|
+
--skip-git \
|
|
191
|
+
--dry-run
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
The preview shows the target, profile, Python plan, Git plan, expected files,
|
|
195
|
+
and next steps. It does not create a workspace, install Python, initialize Git,
|
|
196
|
+
or update a registry.
|
|
197
|
+
|
|
198
|
+
## Existing target directories
|
|
199
|
+
|
|
200
|
+
Workspace creation does not merge into or overwrite an existing target. If the
|
|
201
|
+
resolved directory already exists, choose another name or output parent.
|
|
202
|
+
|
|
203
|
+
To bring an existing repository into Workspai, use `adopt` or `import` instead:
|
|
204
|
+
|
|
205
|
+
```bash
|
|
206
|
+
npx workspai adopt /path/to/project
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
## Main workspace files
|
|
210
|
+
|
|
211
|
+
A normal workspace includes:
|
|
212
|
+
|
|
213
|
+
```text
|
|
214
|
+
.workspai-workspace
|
|
215
|
+
.workspai/workspace.json
|
|
216
|
+
.workspai/toolchain.lock
|
|
217
|
+
.workspai/policies.yml
|
|
218
|
+
.workspai/cache-config.yml
|
|
219
|
+
.workspai/workspace.contract.json
|
|
220
|
+
.workspai/workspace-registry.v1.json
|
|
221
|
+
.gitignore
|
|
222
|
+
README.md
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
The user-level workspace registry is stored under the Workspai home, normally:
|
|
226
|
+
|
|
227
|
+
```text
|
|
228
|
+
~/.workspai/workspaces.json
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
# Creating a project
|
|
232
|
+
|
|
233
|
+
## Choose a kit interactively
|
|
234
|
+
|
|
235
|
+
```bash
|
|
236
|
+
npx workspai create project
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
Workspai asks for a kit and project name. You can also use the top-level wizard:
|
|
240
|
+
|
|
241
|
+
```bash
|
|
242
|
+
npx workspai create
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
If you choose project creation, the same project flow is used.
|
|
246
|
+
|
|
247
|
+
When the terminal is interactive and the current directory is not inside a
|
|
248
|
+
workspace, **every supported backend and frontend kit** shows the workspace
|
|
249
|
+
management question before scaffolding:
|
|
250
|
+
|
|
251
|
+
```text
|
|
252
|
+
This project is outside a Workspai workspace. How should it be managed?
|
|
253
|
+
|
|
254
|
+
1. Link it to the managed default workspace (recommended)
|
|
255
|
+
2. Turn the current folder into a workspace
|
|
256
|
+
3. Create it without workspace management
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
This applies to direct commands and interactive kit selection.
|
|
260
|
+
|
|
261
|
+
## Create a project with an explicit kit
|
|
262
|
+
|
|
263
|
+
```bash
|
|
264
|
+
npx workspai create project <kit> <name>
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
Examples:
|
|
268
|
+
|
|
269
|
+
```bash
|
|
270
|
+
npx workspai create project fastapi.standard api
|
|
271
|
+
npx workspai create project gofiber.standard gateway
|
|
272
|
+
npx workspai create project springboot.standard orders
|
|
273
|
+
npx workspai create project dotnet.webapi.clean billing
|
|
274
|
+
npx workspai create project frontend.nextjs dashboard
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
The shorter frontend alias remains available:
|
|
278
|
+
|
|
279
|
+
```bash
|
|
280
|
+
npx workspai create frontend nextjs dashboard
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
## Supported backend kits
|
|
284
|
+
|
|
285
|
+
| Kit | Runtime | Scaffold owner | Core module mutation |
|
|
286
|
+
| --------------------- | ------- | -------------------- | -------------------- |
|
|
287
|
+
| `fastapi.standard` | Python | RapidKit Core | Yes |
|
|
288
|
+
| `fastapi.ddd` | Python | RapidKit Core | Yes |
|
|
289
|
+
| `nestjs.standard` | Node.js | RapidKit Core bridge | Yes |
|
|
290
|
+
| `gofiber.standard` | Go | Workspai npm CLI | No |
|
|
291
|
+
| `gogin.standard` | Go | Workspai npm CLI | No |
|
|
292
|
+
| `springboot.standard` | Java | Workspai npm CLI | No |
|
|
293
|
+
| `dotnet.webapi.clean` | .NET | Workspai npm CLI | No |
|
|
294
|
+
|
|
295
|
+
NestJS runs on Node.js, but its current scaffold is provided through the
|
|
296
|
+
RapidKit Core bridge.
|
|
297
|
+
|
|
298
|
+
## Supported frontend generators
|
|
299
|
+
|
|
300
|
+
Workspai has official-generator paths for:
|
|
301
|
+
|
|
302
|
+
| Frontend | Common kit name |
|
|
303
|
+
| -------------------- | ----------------------------- |
|
|
304
|
+
| Next.js | `nextjs` or `frontend.nextjs` |
|
|
305
|
+
| React Router / Remix | `remix` |
|
|
306
|
+
| React with Vite | `vite-react` |
|
|
307
|
+
| Vue with Vite | `vite-vue` |
|
|
308
|
+
| Svelte with Vite | `vite-svelte` |
|
|
309
|
+
| Solid with Vite | `vite-solid` |
|
|
310
|
+
| Vanilla Vite | `vite-vanilla` |
|
|
311
|
+
| Nuxt | `nuxt` |
|
|
312
|
+
| Angular | `angular` |
|
|
313
|
+
| Astro | `astro` |
|
|
314
|
+
| SvelteKit | `sveltekit` |
|
|
315
|
+
|
|
316
|
+
The ecosystem's official generator creates the application. Workspai then adds
|
|
317
|
+
project metadata and performs the selected workspace registration.
|
|
318
|
+
|
|
319
|
+
# Where the project is created
|
|
320
|
+
|
|
321
|
+
The project path is always:
|
|
322
|
+
|
|
323
|
+
```text
|
|
324
|
+
(--output or current directory) + project name
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
Without `--output`:
|
|
328
|
+
|
|
329
|
+
```bash
|
|
330
|
+
npx workspai create project gofiber.standard gateway
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
This creates `<current-directory>/gateway`.
|
|
334
|
+
|
|
335
|
+
With a relative output parent:
|
|
336
|
+
|
|
337
|
+
```bash
|
|
338
|
+
npx workspai create project gofiber.standard gateway --output services
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
This creates `<current-directory>/services/gateway`.
|
|
342
|
+
|
|
343
|
+
With an absolute output parent:
|
|
344
|
+
|
|
345
|
+
```bash
|
|
346
|
+
npx workspai create project gofiber.standard gateway --output /data/apps
|
|
347
|
+
```
|
|
348
|
+
|
|
349
|
+
This creates `/data/apps/gateway`.
|
|
350
|
+
|
|
351
|
+
Workspai does not overwrite or merge into an existing project directory.
|
|
352
|
+
|
|
353
|
+
# Project creation inside a workspace
|
|
354
|
+
|
|
355
|
+
## Create at the workspace root
|
|
356
|
+
|
|
357
|
+
If the current directory is `/home/me/platform` and it is a workspace:
|
|
358
|
+
|
|
359
|
+
```bash
|
|
360
|
+
npx workspai create project gofiber.standard gateway
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
The project is created at `/home/me/platform/gateway` and registered with that
|
|
364
|
+
workspace.
|
|
365
|
+
|
|
366
|
+
## Create from a workspace subdirectory
|
|
367
|
+
|
|
368
|
+
If the current directory is `/home/me/platform/services`, the same command
|
|
369
|
+
creates `/home/me/platform/services/gateway`. Workspai does not force every
|
|
370
|
+
project into the workspace root.
|
|
371
|
+
|
|
372
|
+
## Create outside the current workspace with `--output`
|
|
373
|
+
|
|
374
|
+
```bash
|
|
375
|
+
npx workspai create project gofiber.standard gateway --output /data/apps
|
|
376
|
+
```
|
|
377
|
+
|
|
378
|
+
The project stays at `/data/apps/gateway` and is linked to the current
|
|
379
|
+
workspace as an external project. Workspai does not move or copy its source.
|
|
380
|
+
|
|
381
|
+
## Create directly inside another workspace
|
|
382
|
+
|
|
383
|
+
If the final project path is inside workspace B but the command was launched
|
|
384
|
+
from workspace A, the workspace found from the final project path takes
|
|
385
|
+
priority. The project is registered with workspace B.
|
|
386
|
+
|
|
387
|
+
# Project creation outside a workspace
|
|
388
|
+
|
|
389
|
+
## Interactive behavior
|
|
390
|
+
|
|
391
|
+
When no workspace is found and you did not provide an explicit workspace flag,
|
|
392
|
+
Workspai asks how the project should be managed before scaffolding.
|
|
393
|
+
|
|
394
|
+
The same question is shown for:
|
|
395
|
+
|
|
396
|
+
- RapidKit Core-backed projects
|
|
397
|
+
- Go, Spring Boot, and .NET npm-backed projects
|
|
398
|
+
- All supported frontend generators
|
|
399
|
+
- Direct `create project <kit> <name>` commands
|
|
400
|
+
- Interactive `create` and `create project` kit selection
|
|
401
|
+
|
|
402
|
+
## Choice 1: Link to the managed default workspace
|
|
403
|
+
|
|
404
|
+
This is the recommended option.
|
|
405
|
+
|
|
406
|
+
The project is created in the path you requested. After a successful scaffold,
|
|
407
|
+
Workspai creates or reuses:
|
|
408
|
+
|
|
409
|
+
```text
|
|
410
|
+
~/.workspai/workspaces/workspai
|
|
411
|
+
```
|
|
412
|
+
|
|
413
|
+
The managed default workspace uses:
|
|
414
|
+
|
|
415
|
+
| Setting | Value |
|
|
416
|
+
| ----------------------------- | ------------------ |
|
|
417
|
+
| Name | `workspai` |
|
|
418
|
+
| Profile | `polyglot` |
|
|
419
|
+
| Python engine | `skipped` |
|
|
420
|
+
| Git initialization | skipped |
|
|
421
|
+
| External project relationship | `linked` / adopted |
|
|
422
|
+
|
|
423
|
+
The project is not moved and is not copied.
|
|
424
|
+
|
|
425
|
+
The workspace is created only after the project scaffold succeeds. A failed
|
|
426
|
+
scaffold does not create a new managed default workspace for that project.
|
|
427
|
+
|
|
428
|
+
## Choice 2: Turn the current folder into a workspace
|
|
429
|
+
|
|
430
|
+
Choose this interactively, or use:
|
|
431
|
+
|
|
432
|
+
```bash
|
|
433
|
+
npx workspai create project gofiber.standard gateway \
|
|
434
|
+
--create-workspace \
|
|
435
|
+
--yes
|
|
436
|
+
```
|
|
437
|
+
|
|
438
|
+
Unlike `create workspace --here`, this turns the current directory itself into
|
|
439
|
+
a workspace. It then creates the project under the requested output parent.
|
|
440
|
+
|
|
441
|
+
For example, from `/home/me/platform`:
|
|
442
|
+
|
|
443
|
+
```text
|
|
444
|
+
Workspace: /home/me/platform
|
|
445
|
+
Project: /home/me/platform/gateway
|
|
446
|
+
```
|
|
447
|
+
|
|
448
|
+
This uses the full current-folder workspace registration flow.
|
|
449
|
+
|
|
450
|
+
## Choice 3: Create without workspace management
|
|
451
|
+
|
|
452
|
+
Choose this interactively, or use:
|
|
453
|
+
|
|
454
|
+
```bash
|
|
455
|
+
npx workspai create project gofiber.standard gateway \
|
|
456
|
+
--no-workspace \
|
|
457
|
+
--yes
|
|
458
|
+
```
|
|
459
|
+
|
|
460
|
+
The project is scaffolded, but Workspai does not:
|
|
461
|
+
|
|
462
|
+
- Create the managed default workspace
|
|
463
|
+
- Turn the current directory into a workspace
|
|
464
|
+
- Add the project to the global workspace registry
|
|
465
|
+
- Link or adopt the project
|
|
466
|
+
- Synchronize a workspace contract
|
|
467
|
+
|
|
468
|
+
Do not combine `--create-workspace` and `--no-workspace`. In the current CLI,
|
|
469
|
+
`--no-workspace` takes precedence.
|
|
470
|
+
|
|
471
|
+
## Non-interactive behavior and `--yes`
|
|
472
|
+
|
|
473
|
+
In CI, a non-interactive terminal, or when `--yes` is supplied, Workspai cannot
|
|
474
|
+
ask the three-way question. If no explicit workspace flag is present, it uses
|
|
475
|
+
the managed default workspace behavior.
|
|
476
|
+
|
|
477
|
+
```bash
|
|
478
|
+
npx workspai create project gofiber.standard gateway --yes
|
|
479
|
+
```
|
|
480
|
+
|
|
481
|
+
To opt out in automation, be explicit:
|
|
482
|
+
|
|
483
|
+
```bash
|
|
484
|
+
npx workspai create project gofiber.standard gateway --no-workspace --yes
|
|
485
|
+
```
|
|
486
|
+
|
|
487
|
+
To turn the current directory into a workspace in automation:
|
|
488
|
+
|
|
489
|
+
```bash
|
|
490
|
+
npx workspai create project gofiber.standard gateway --create-workspace --yes
|
|
491
|
+
```
|
|
492
|
+
|
|
493
|
+
# How external linking works
|
|
494
|
+
|
|
495
|
+
If a project is physically outside its workspace, Workspai records a linked
|
|
496
|
+
relationship. The source remains in its original path.
|
|
497
|
+
|
|
498
|
+
Project metadata includes:
|
|
499
|
+
|
|
500
|
+
```text
|
|
501
|
+
.workspai/project.json
|
|
502
|
+
.workspai/adopt.json
|
|
503
|
+
.workspai/adopt-readiness.json
|
|
504
|
+
```
|
|
505
|
+
|
|
506
|
+
Workspace metadata includes:
|
|
507
|
+
|
|
508
|
+
```text
|
|
509
|
+
.workspai/imported-projects.json
|
|
510
|
+
.workspai/workspace.contract.json
|
|
511
|
+
.workspai/workspace-registry.v1.json
|
|
512
|
+
```
|
|
513
|
+
|
|
514
|
+
The adoption policy records:
|
|
515
|
+
|
|
516
|
+
```text
|
|
517
|
+
mode: linked
|
|
518
|
+
moved_source: false
|
|
519
|
+
copied_source: false
|
|
520
|
+
```
|
|
521
|
+
|
|
522
|
+
Projects physically inside a workspace are registered normally and generally
|
|
523
|
+
do not need `adopt.json`.
|
|
524
|
+
|
|
525
|
+
# Common project flags
|
|
526
|
+
|
|
527
|
+
| Flag | Meaning |
|
|
528
|
+
| -------------------- | ------------------------------------------------------------------------------- |
|
|
529
|
+
| `--yes` | Do not ask optional questions; use managed-default behavior outside a workspace |
|
|
530
|
+
| `--output <parent>` | Choose the parent directory for the project |
|
|
531
|
+
| `--create-workspace` | Turn the current directory into a workspace before scaffolding |
|
|
532
|
+
| `--no-workspace` | Scaffold without workspace registration or linking |
|
|
533
|
+
| `--skip-install` | Defer dependency installation or warm-up where the generator supports it |
|
|
534
|
+
| `--skip-git` | Skip generator/wrapper Git initialization where supported |
|
|
535
|
+
| `--dry-run` | Show a create plan without normal finalization |
|
|
536
|
+
|
|
537
|
+
`--skip-install` has stack-specific behavior:
|
|
538
|
+
|
|
539
|
+
| Project type | Behavior |
|
|
540
|
+
| ------------------- | -------------------------------------------------------------- |
|
|
541
|
+
| FastAPI and NestJS | Defers dependency and lock work |
|
|
542
|
+
| Go Fiber and Go Gin | Skips `go mod tidy` |
|
|
543
|
+
| Spring Boot | Skips Maven wrapper/dependency warm-up |
|
|
544
|
+
| .NET | Accepted, but there is no separate dependency warm-up step |
|
|
545
|
+
| Frontend | Passed to official generators that support a no-install option |
|
|
546
|
+
|
|
547
|
+
Project-level `--skip-python-engine` is rejected. It is only a workspace
|
|
548
|
+
creation option.
|
|
549
|
+
|
|
550
|
+
## Project dry runs
|
|
551
|
+
|
|
552
|
+
All supported project dry runs are read-only and show the resolved kit, target,
|
|
553
|
+
generator, and flags without creating the project tree.
|
|
554
|
+
|
|
555
|
+
```bash
|
|
556
|
+
npx workspai create project fastapi.standard api --dry-run
|
|
557
|
+
npx workspai create project frontend.nextjs web --dry-run
|
|
558
|
+
npx workspai create project gofiber.standard api --dry-run
|
|
559
|
+
```
|
|
560
|
+
|
|
561
|
+
# Workspace profile checks during project creation
|
|
562
|
+
|
|
563
|
+
When a project is created from inside a workspace, Workspai compares the
|
|
564
|
+
project runtime with the workspace profile.
|
|
565
|
+
|
|
566
|
+
| Policy mode | Incompatible runtime behavior |
|
|
567
|
+
| ----------- | ----------------------------- |
|
|
568
|
+
| `warn` | Show a warning and continue |
|
|
569
|
+
| `strict` | Stop before registration |
|
|
570
|
+
|
|
571
|
+
Frontend projects are checked as Node.js projects. `--no-workspace` disables
|
|
572
|
+
final registration, but it does not necessarily bypass the profile policy of an
|
|
573
|
+
enclosing workspace.
|
|
574
|
+
|
|
575
|
+
# Unsupported create requests
|
|
576
|
+
|
|
577
|
+
Workspai does not guess a native scaffold for every ecosystem. Projects such as
|
|
578
|
+
WordPress, Laravel, Symfony, Rails, generic PHP, Ruby, Rust, and other
|
|
579
|
+
unregistered stacks should be created with their ecosystem tooling and then
|
|
580
|
+
adopted:
|
|
581
|
+
|
|
582
|
+
```bash
|
|
583
|
+
npx workspai adopt /path/to/project
|
|
584
|
+
```
|
|
585
|
+
|
|
586
|
+
See [create-planner-capabilities.md](./create-planner-capabilities.md) for the
|
|
587
|
+
native, official, and existing-project lanes.
|
|
588
|
+
|
|
589
|
+
# Failure and cleanup behavior
|
|
590
|
+
|
|
591
|
+
| Situation | Result |
|
|
592
|
+
| -------------------------------------------------------- | -------------------------------------- |
|
|
593
|
+
| Invalid name | Stops before normal scaffold writes |
|
|
594
|
+
| Target directory already exists | Stops without merging or overwriting |
|
|
595
|
+
| Project scaffold fails | Workspace linking does not run |
|
|
596
|
+
| Git initialization fails | Usually warns and keeps the scaffold |
|
|
597
|
+
| Go or Maven dependency warm-up fails | Warns and keeps the scaffold |
|
|
598
|
+
| Workspace registration/finalization fails after scaffold | Lifecycle rollback restores metadata and removes a newly owned project tree |
|
|
599
|
+
|
|
600
|
+
Create finalization uses a durable lifecycle transaction. On failure it restores
|
|
601
|
+
captured metadata and removes only newly owned project/workspace trees; it never
|
|
602
|
+
deletes pre-existing source. A residue is possible only if rollback cleanup
|
|
603
|
+
itself fails, in which case the command reports the cleanup failure and leaves a
|
|
604
|
+
recovery journal.
|
|
605
|
+
|
|
606
|
+
# Recommended command patterns
|
|
607
|
+
|
|
608
|
+
Interactive local use:
|
|
609
|
+
|
|
610
|
+
```bash
|
|
611
|
+
npx workspai create project
|
|
612
|
+
```
|
|
613
|
+
|
|
614
|
+
Automated creation linked to the managed default workspace:
|
|
615
|
+
|
|
616
|
+
```bash
|
|
617
|
+
npx workspai create project gofiber.standard api --yes --skip-install
|
|
618
|
+
```
|
|
619
|
+
|
|
620
|
+
Automated creation in a new current-folder workspace:
|
|
621
|
+
|
|
622
|
+
```bash
|
|
623
|
+
npx workspai create project gofiber.standard api \
|
|
624
|
+
--create-workspace \
|
|
625
|
+
--yes \
|
|
626
|
+
--skip-install
|
|
627
|
+
```
|
|
628
|
+
|
|
629
|
+
Automated standalone project creation:
|
|
630
|
+
|
|
631
|
+
```bash
|
|
632
|
+
npx workspai create project gofiber.standard api \
|
|
633
|
+
--no-workspace \
|
|
634
|
+
--yes \
|
|
635
|
+
--skip-install
|
|
636
|
+
```
|
|
637
|
+
|
|
638
|
+
Explicit workspace creation followed by project creation:
|
|
639
|
+
|
|
640
|
+
```bash
|
|
641
|
+
npx workspai create workspace platform \
|
|
642
|
+
--profile polyglot \
|
|
643
|
+
--skip-python-engine \
|
|
644
|
+
--yes
|
|
645
|
+
|
|
646
|
+
cd ~/.workspai/workspaces/platform
|
|
647
|
+
npx workspai create project frontend.nextjs web --yes
|
|
648
|
+
npx workspai create project fastapi.standard api --yes --skip-install
|
|
649
|
+
```
|
package/docs/doctor-command.md
CHANGED
|
@@ -304,7 +304,7 @@ jobs:
|
|
|
304
304
|
- uses: actions/checkout@v4
|
|
305
305
|
- uses: actions/setup-node@v4
|
|
306
306
|
with:
|
|
307
|
-
node-version: '20'
|
|
307
|
+
node-version: '20.19.0'
|
|
308
308
|
- run: npm ci
|
|
309
309
|
- run: npx workspai doctor
|
|
310
310
|
```
|
|
@@ -313,8 +313,9 @@ jobs:
|
|
|
313
313
|
|
|
314
314
|
| Code | Meaning |
|
|
315
315
|
| ---- | ------------------------------ |
|
|
316
|
-
| `0` |
|
|
317
|
-
| `1` |
|
|
316
|
+
| `0` | Passed; local-profile warnings remain advisory |
|
|
317
|
+
| `1` | Errors, or warnings under `release`/`enterprise-strict`/`--strict` |
|
|
318
|
+
| `2` | Warning-only result under the `ci` profile or `--ci` |
|
|
318
319
|
|
|
319
320
|
## Enterprise Probe Extensions
|
|
320
321
|
|
|
@@ -457,7 +458,7 @@ Legacy evidence without `schemaVersion` is still accepted. Unknown versions are
|
|
|
457
458
|
|
|
458
459
|
```bash
|
|
459
460
|
npx workspai bootstrap [--profile <profile>]
|
|
460
|
-
npx workspai setup <python|node|go> [--warm-deps]
|
|
461
|
+
npx workspai setup <python|node|go|java|dotnet> [--warm-deps]
|
|
461
462
|
npx workspai workspace list
|
|
462
463
|
npx workspai cache <status|clear|prune|repair>
|
|
463
464
|
npx workspai mirror <status|sync|verify|rotate>
|