workspai 0.43.0 → 0.43.1

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.
Files changed (87) hide show
  1. package/README.md +3 -3
  2. package/contracts/extension-cli-compatibility.v1.json +1 -1
  3. package/dist/{artifact-remediation-plan-5GJWPPRS.js → artifact-remediation-plan-244S5K6I.js} +3 -3
  4. package/dist/autopilot-release-45YVOBQO.js +1 -0
  5. package/dist/chunk-3QVTWKUI.js +4 -0
  6. package/dist/{chunk-T6OR6YOI.js → chunk-7UZVOYF5.js} +1 -1
  7. package/dist/{chunk-CVTCPPEF.js → chunk-AMDKXXLP.js} +1 -1
  8. package/dist/{chunk-EWYYLJQY.js → chunk-CDE4Q77U.js} +1 -1
  9. package/dist/{chunk-AFSZHLQT.js → chunk-DOCPUNWS.js} +1 -1
  10. package/dist/{chunk-OJEWQO3Z.js → chunk-EMTQ6OKI.js} +17 -17
  11. package/dist/{chunk-RE773WOX.js → chunk-FDDDQMJ2.js} +5 -5
  12. package/dist/{chunk-5SWNSJGW.js → chunk-FHSMY75W.js} +1 -1
  13. package/dist/chunk-FM7GMFZA.js +2 -0
  14. package/dist/{chunk-54XJNLYC.js → chunk-HV5ZFXAZ.js} +1 -1
  15. package/dist/{chunk-LO4C4VXR.js → chunk-LRW2SAGL.js} +1 -1
  16. package/dist/{chunk-PI5KUXDA.js → chunk-LTWYYP6E.js} +1 -1
  17. package/dist/{chunk-VRDF2J46.js → chunk-ONU457VN.js} +17 -17
  18. package/dist/{chunk-LUP4U6EE.js → chunk-P424XYHP.js} +1 -1
  19. package/dist/{chunk-LPZFK3Y6.js → chunk-PPHTYJ7G.js} +61 -61
  20. package/dist/{chunk-XEJD4KCV.js → chunk-TH5Y3EMA.js} +1 -1
  21. package/dist/chunk-TQEMLBAG.js +1 -0
  22. package/dist/{chunk-3KXW53QI.js → chunk-U6AXYUQY.js} +1 -1
  23. package/dist/{chunk-AAKUNWPR.js → chunk-UQKCCWUL.js} +43 -43
  24. package/dist/{chunk-VZKSNUEE.js → chunk-XNGANEXM.js} +1 -1
  25. package/dist/{create-WRZO4HK2.js → create-42RTNLH2.js} +1 -1
  26. package/dist/demo-kit-DZ7TPG7K.js +149 -0
  27. package/dist/doctor-DK4BON3N.js +1 -0
  28. package/dist/{dotnet-webapi-clean-IPY3MCGQ.js → dotnet-webapi-clean-BYUUHX5Y.js} +20 -20
  29. package/dist/{gofiber-standard-N5N3QGH3.js → gofiber-standard-B6UK5GR7.js} +31 -31
  30. package/dist/{gogin-standard-LAWQTBWL.js → gogin-standard-BXU44VEM.js} +31 -31
  31. package/dist/index.js +222 -185
  32. package/dist/pipeline-HQ57V6OZ.js +5 -0
  33. package/dist/{pythonRapidkitExec-3L3XJBSY.js → pythonRapidkitExec-GCQ3M46E.js} +1 -1
  34. package/dist/{springboot-standard-OZYF7ZM7.js → springboot-standard-PEHDKH2L.js} +27 -27
  35. package/dist/{workspace-PR6VZRBG.js → workspace-DZHWB7BV.js} +1 -1
  36. package/dist/{workspace-agent-sync-KTYF3HQR.js → workspace-agent-sync-5ADIQS7B.js} +1 -1
  37. package/dist/{workspace-context-QUTOP2XV.js → workspace-context-GEXDHA7A.js} +1 -1
  38. package/dist/{workspace-contract-XUGMCUSQ.js → workspace-contract-2TA27LGT.js} +1 -1
  39. package/dist/workspace-explain-D5NNL3NG.js +1 -0
  40. package/dist/{workspace-foundation-KGSV4E6D.js → workspace-foundation-FQWHPQGX.js} +1 -1
  41. package/dist/{workspace-intelligence-QJGVL37U.js → workspace-intelligence-BEM6WGCZ.js} +1 -1
  42. package/dist/{workspace-mcp-serve-AK4MYEHQ.js → workspace-mcp-serve-OMBA5V3C.js} +1 -1
  43. package/dist/{workspace-model-PNXXOGPO.js → workspace-model-F3B75TYT.js} +1 -1
  44. package/dist/workspace-registry-summary-6MFBRWDS.js +1 -0
  45. package/dist/workspace-run-3WJXIQKR.js +1 -0
  46. package/dist/{workspace-verify-WSDUUTR5.js → workspace-verify-OAATQV5T.js} +1 -1
  47. package/dist/{workspace-watch-AGPOJ74Q.js → workspace-watch-HU2OTQ52.js} +1 -1
  48. package/package.json +12 -2
  49. package/templates/kits/fastapi-ddd/.gitignore.j2 +11 -0
  50. package/templates/kits/fastapi-ddd/README.md.j2 +23 -18
  51. package/templates/kits/fastapi-ddd/common/env.example.j2 +2 -2
  52. package/templates/kits/fastapi-ddd/pyproject.toml.j2 +7 -7
  53. package/templates/kits/fastapi-ddd/src/app/config/__init__.py.j2 +1 -1
  54. package/templates/kits/fastapi-ddd/src/cli.py.j2 +6 -9
  55. package/templates/kits/fastapi-ddd/src/main.py.j2 +1 -1
  56. package/templates/kits/fastapi-standard/.gitignore.j2 +11 -0
  57. package/templates/kits/fastapi-standard/README.md.j2 +35 -30
  58. package/templates/kits/fastapi-standard/common/env.example.j2 +2 -2
  59. package/templates/kits/fastapi-standard/pyproject.toml.j2 +7 -7
  60. package/templates/kits/fastapi-standard/src/cli.py.j2 +7 -10
  61. package/templates/kits/fastapi-standard/src/main.py.j2 +1 -1
  62. package/templates/kits/fastapi-standard/src/routing/examples.py.j2 +1 -1
  63. package/templates/kits/fastapi-standard/tests/test_examples.py.j2 +1 -1
  64. package/templates/kits/nestjs-standard/.dockerignore.j2 +11 -0
  65. package/templates/kits/nestjs-standard/.eslintrc.js.j2 +25 -0
  66. package/templates/kits/nestjs-standard/.gitignore.j2 +22 -0
  67. package/templates/kits/nestjs-standard/.node-version.j2 +1 -0
  68. package/templates/kits/nestjs-standard/.nvmrc.j2 +1 -0
  69. package/templates/kits/nestjs-standard/.prettierrc.j2 +7 -0
  70. package/templates/kits/nestjs-standard/README.md.j2 +23 -18
  71. package/templates/kits/nestjs-standard/docs/README.md.j2 +2 -2
  72. package/templates/kits/nestjs-standard/jest.config.ts.j2 +1 -7
  73. package/templates/kits/nestjs-standard/package.json.j2 +1 -1
  74. package/templates/kits/nestjs-standard/src/config/configuration.ts.j2 +4 -4
  75. package/templates/kits/nestjs-standard/src/main.ts.j2 +1 -1
  76. package/templates/kits/nestjs-standard/src/modules/index.ts.j2 +1 -1
  77. package/templates/kits/nestjs-standard/tsconfig.build.json.j2 +1 -1
  78. package/templates/kits/nestjs-standard/tsconfig.json.j2 +1 -1
  79. package/dist/autopilot-release-QYUOVB26.js +0 -1
  80. package/dist/chunk-LYC6AIF2.js +0 -2
  81. package/dist/chunk-WU4ZRRA5.js +0 -4
  82. package/dist/demo-kit-AJ5LIM5G.js +0 -149
  83. package/dist/doctor-MF3M3FS3.js +0 -1
  84. package/dist/pipeline-QCUHFWDY.js +0 -5
  85. package/dist/workspace-explain-JEONEGZZ.js +0 -1
  86. package/dist/workspace-registry-summary-RUJE6RPH.js +0 -1
  87. package/dist/workspace-run-Y7YMUIHX.js +0 -1
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env python3
2
2
  """Project CLI wrapper for {{ project_name }} (DDD edition).
3
3
 
4
- Prefer a per-project CLI in `.workspai/cli.py` when present. Otherwise
4
+ Prefer a per-project RapidKit Core wrapper in `.rapidkit/cli.py` when present. Otherwise
5
5
  provide helpful guidance to the developer rather than guessing environment
6
6
  details.
7
7
  """
@@ -14,19 +14,16 @@ from typing import Optional
14
14
 
15
15
 
16
16
  def _missing_cli(name: str) -> None:
17
- print(f"❌ Missing project-local CLI (.workspai/cli.py) - can't run '{name}'")
18
- print("💡 If you're a new user run: workspai init # create venv + install deps")
17
+ print(f"❌ Missing project-local RapidKit Core wrapper (.rapidkit/cli.py) - can't run '{name}'")
18
+ print("💡 If you're a new user run: rapidkit init # create venv + install deps")
19
19
  sys.exit(127)
20
20
 
21
21
 
22
22
  def _load_project_cli_module() -> Optional[object]:
23
23
  project_root = Path(__file__).resolve().parents[1]
24
- cli_file = project_root / ".workspai" / "cli.py"
24
+ cli_file = project_root / ".rapidkit" / "cli.py"
25
25
  if not cli_file.exists():
26
- legacy_cli_file = project_root / ".rapidkit" / "cli.py"
27
- if not legacy_cli_file.exists():
28
- return None
29
- cli_file = legacy_cli_file
26
+ return None
30
27
  spec = importlib.util.spec_from_file_location("project_cli", str(cli_file))
31
28
  if spec is None or spec.loader is None:
32
29
  return None
@@ -38,7 +35,7 @@ def _load_project_cli_module() -> Optional[object]:
38
35
  _mod = _load_project_cli_module()
39
36
 
40
37
 
41
- # Default placeholders -- call `_missing_cli` if the project-local CLI isn't
38
+ # Default placeholders -- call `_missing_cli` if the project-local RapidKit Core wrapper isn't
42
39
  # available. These are real functions so linters don't complain.
43
40
  def init() -> None:
44
41
  _missing_cli("init")
@@ -14,7 +14,7 @@ from src.app.main import create_app
14
14
 
15
15
  @asynccontextmanager
16
16
  async def lifespan(app: FastAPI) -> AsyncIterator[None]:
17
- """Coordinate startup/shutdown hooks contributed by RapidKit Core modules."""
17
+ """Coordinate startup/shutdown hooks contributed by RapidKit modules."""
18
18
 
19
19
  _ = app # ensure the app reference stays available for injected hooks
20
20
  # <<<inject:startup>>>
@@ -0,0 +1,11 @@
1
+ __pycache__/
2
+ .env
3
+ *.py[cod]
4
+ *.log
5
+ .cache/
6
+ /.mypy_cache/
7
+ /.pytest_cache/
8
+ /.ruff_cache/
9
+ .idea/
10
+ .vscode/
11
+ dist/
@@ -1,12 +1,15 @@
1
1
  # {{ project_name | replace('_', ' ') | title }}
2
2
 
3
- A minimal FastAPI service generated with Workspai's **FastAPI Standard Kit**. Python-backed capabilities (configuration, logging, persistence, observability, authentication, etc.) are provided by RapidKit Core modules when you opt into the Python engine.
3
+ A minimal FastAPI service generated with **RapidKit Core** using the FastAPI Standard Kit. It can be adopted into Workspai workspace intelligence when you want workspace-level context, evidence, and release governance.
4
4
 
5
5
  ## Quick start
6
6
 
7
7
  ```bash
8
+ # Load the project-local RapidKit Core launcher (adds .rapidkit/rapidkit to PATH)
9
+ source .rapidkit/activate
10
+
8
11
  # Bootstrap dependencies (creates .venv + installs Poetry-managed deps)
9
- npx workspai init # use make init if you prefer a Make target
12
+ rapidkit init # use make init if you prefer a Make target
10
13
 
11
14
  # Copy env templates and install hooks/tooling
12
15
  ./bootstrap.sh
@@ -19,45 +22,47 @@ make audit
19
22
 
20
23
  # Start development server with hot reload
21
24
  make dev
22
- npx workspai dev # same as make dev but auto-detects the project
25
+ rapidkit dev # same as make dev but auto-detects the project
23
26
 
24
- # Prefer project-local RapidKit Core helpers when you want it to resolve scripts automatically
25
- npx workspai lint
26
- npx workspai test
27
- npx workspai start
27
+ # Prefer RapidKit Core helpers when you want it to resolve scripts automatically
28
+ rapidkit lint
29
+ rapidkit test
30
+ rapidkit start
28
31
  ```
29
32
 
30
- > Re-run `npx workspai init` (or `make init`) whenever dependencies change, or use `SKIP_INIT=1 make install` if you only need to refresh tooling/hooks without reinstalling packages.
33
+ > Always run `source .rapidkit/activate` after opening a new shell so the project-local `rapidkit` launcher and helper scripts stay on your PATH.
34
+
35
+ > Re-run `rapidkit init` (or `make init`) whenever dependencies change, or use `SKIP_INIT=1 make install` if you only need to refresh tooling/hooks without reinstalling packages.
31
36
 
32
- > Lockfiles are generated automatically during scaffolding. Set `RAPIDKIT_SKIP_LOCKS=1` (or `RAPIDKIT_GENERATE_LOCKS=0`) before running `workspai create` if you need to opt out.
37
+ > Lockfiles are generated automatically during scaffolding. Set `RAPIDKIT_SKIP_LOCKS=1` (or `RAPIDKIT_GENERATE_LOCKS=0`) before running `rapidkit create` if you need to opt out.
33
38
 
34
- > Want the full project-local RapidKit Core catalog? Run `rapidkit --help` when RapidKit Core is installed, or use `npx workspai --help` for workspace-level commands.
39
+ > Want the project-local RapidKit Core catalog? Run `rapidkit --help`. If this project is part of a Workspai workspace, run `npx workspai --help` from the workspace root for workspace intelligence commands.
35
40
 
36
41
  ---
37
42
 
38
43
  ## Local development
39
44
 
40
- - `npx workspai init` bootstraps dependencies via the project-aware CLI.
41
- - `make init` is an optional alias for `npx workspai init` when you prefer Make targets.
42
- - `make install` re-runs `npx workspai init` (unless you set `SKIP_INIT=1`) and refreshes developer tooling such as pre-commit hooks.
45
+ - `rapidkit init` bootstraps dependencies via the project-local RapidKit Core launcher (run it after sourcing `.rapidkit/activate`).
46
+ - `make init` is an optional alias for `rapidkit init` when you prefer Make targets.
47
+ - `make install` re-runs `rapidkit init` (unless you set `SKIP_INIT=1`) and refreshes developer tooling such as pre-commit hooks.
43
48
  - `./bootstrap.sh` copies `.env.example` to `.env` (if missing) and runs `SKIP_INIT=1 make install` for you.
44
- - `make dev` (or `npx workspai dev`) launches Uvicorn with the correct module path and reload settings.
49
+ - `make dev` (or `rapidkit dev`) launches Uvicorn with the correct module path and reload settings.
45
50
  - `make lint`, `make typecheck`, and `make test` wrap Ruff, mypy, and pytest for consistent CI parity.
46
51
  - `make audit` shells out to `pip-audit` to surface vulnerable dependencies.
47
- - Prefer `npx workspai lint`, `npx workspai test`, and `npx workspai start` if you want the project-aware launcher to autodetect the virtualenv and command wiring.
52
+ - Prefer `rapidkit lint`, `rapidkit test`, and `rapidkit start` if you want RapidKit Core to autodetect the virtualenv and command wiring.
48
53
  ```
49
54
 
50
55
  ## Available commands
51
56
 
52
57
  ```bash
53
- npx workspai init # 🔧 Bootstrap the project (create .venv + install deps)
54
- make init # 🔧 Optional alias for npx workspai init
58
+ rapidkit init # 🔧 Bootstrap the project (create .venv + install deps)
59
+ make init # 🔧 Optional alias for rapidkit init (wraps the local Core launcher)
55
60
  ./bootstrap.sh # 🪄 Copy env template + install hooks/tooling (idempotent)
56
- npx workspai dev # 🚀 Start development server with hot reload
61
+ rapidkit dev # 🚀 Start development server with hot reload
57
62
  make dev # 🚀 Alternative via Makefile helper
58
- npx workspai start # ⚡ Start production server
59
- npx workspai lint # 🔧 Run lint checks via project-aware CLI
60
- npx workspai test # 🧪 Run pytest through the project-aware launcher
63
+ rapidkit start # ⚡ Start production server
64
+ rapidkit lint # 🔧 Run lint checks via RapidKit Core
65
+ rapidkit test # 🧪 Run pytest through RapidKit Core
61
66
  make install # 📦 Install Poetry deps + hooks
62
67
  make lint # ✅ Lint via Ruff + Black
63
68
  make typecheck # 🔍 Run mypy on src
@@ -84,18 +89,18 @@ The scaffold ships with a tiny in-memory **notes** API mounted under `/api/examp
84
89
  # Create a note
85
90
  curl -s -X POST http://localhost:8000/api/examples/notes \
86
91
  -H "Content-Type: application/json" \
87
- -d '{"title":"first","body":"scaffolded by Workspai"}'
92
+ -d '{"title":"first","body":"scaffolded by RapidKit"}'
88
93
 
89
94
  # List notes
90
95
  curl -s http://localhost:8000/api/examples/notes | jq
91
96
  ```
92
97
 
93
- The implementation intentionally stays in memory so you can replace it with a repository-backed service once you install RapidKit Core database modules.
98
+ The implementation intentionally stays in memory so you can replace it with a repository-backed service once you install RapidKit database modules.
94
99
 
95
100
  {% if selected_modules %}
96
- ## Recommended RapidKit Core modules
101
+ ## Recommended RapidKit modules
97
102
 
98
- The following RapidKit Core modules are suggested during scaffolding; install them any time with `rapidkit add module <name>` after activating the project launcher:
103
+ The following RapidKit modules are suggested during scaffolding; install them any time with `rapidkit add module <name>`:
99
104
 
100
105
  {% for module in selected_modules %}- {{ module.name | replace('_', ' ') | title }} (`{{ module.name }}`{% if not module.required %}, optional{% endif %}) – tier: {{ module.tier }}
101
106
  {% endfor %}
@@ -105,18 +110,18 @@ The following RapidKit Core modules are suggested during scaffolding; install th
105
110
 
106
111
  Use `rapidkit add module <module-name>` to install optional capabilities. Modules inject imports, routes, and services through the anchors defined in `src/main.py` and `src/routing/__init__.py`.
107
112
 
108
- During kit generation you can decide whether the RapidKit Core modules ship with the scaffold:
113
+ During kit generation you can decide whether the core RapidKit modules ship with the scaffold:
109
114
 
110
115
  ```text
111
- Install the RapidKit Core settings module? [Y/n]
112
- Install the RapidKit Core logging module? [Y/n]
116
+ Install the RapidKit settings module? [Y/n]
117
+ Install the RapidKit logging module? [Y/n]
113
118
  Install deployment module assets (Docker/CI)? [Y/n]
114
119
  ```
115
120
 
116
- ### Scaffold toggles vs RapidKit Core modules
121
+ ### Scaffold toggles vs RapidKit modules
117
122
 
118
123
  - `enable_*` prompts (for Docker, CI, SQLite, etc.) control the starter assets generated by this kit.
119
- - `install_*` prompts control which RapidKit Core modules are installed up front.
124
+ - `install_*` prompts control which RapidKit modules are installed up front.
120
125
  - You can always add modules later with `rapidkit add module <name>` if you skip them during scaffolding.
121
126
 
122
127
  When you need deployment artefacts in an existing project, install the optional `deployment` module:
@@ -1,5 +1,5 @@
1
- # Workspai environment defaults
2
- PROJECT_NAME="{{ project_name | default('workspai-app') }}"
1
+ # RapidKit environment defaults
2
+ PROJECT_NAME="{{ project_name | default('rapidkit-app') }}"
3
3
  ENV="development"
4
4
  DEBUG="true"
5
5
  APP_HOST="0.0.0.0"
@@ -17,21 +17,21 @@ help = "src.cli:help_cmd"
17
17
 
18
18
  [tool.poetry.dependencies]
19
19
  python = "^{{ python_version }}"
20
- fastapi = "^0.128.0"
21
- uvicorn = { extras = ["standard"], version = "^0.40.0" }
20
+ fastapi = "^0.139.0"
21
+ uvicorn = { extras = ["standard"], version = "^0.50.2" }
22
22
  pydantic = "^2.12.5"
23
23
  {% if has_settings -%}
24
- pydantic-settings = { version = "^2.12.0", extras = ["yaml"] }
24
+ pydantic-settings = { version = "^2.14.2", extras = ["yaml"] }
25
25
  {% endif %}
26
26
  # <<<inject:poetry-dependencies>>>
27
27
 
28
28
  [tool.poetry.group.dev.dependencies]
29
- pytest = "^9.0.2"
29
+ pytest = "^9.0.3"
30
30
  pytest-asyncio = "^1.3.0"
31
31
  pytest-cov = "^7.0.0"
32
32
  httpx = "^0.28.1"
33
33
  ruff = "^0.14.10"
34
- black = "^25.12.0"
34
+ black = "^26.3.1"
35
35
  isort = "^7.0.0"
36
36
  mypy = "^1.19.1"
37
37
  build = "^1.3.0"
@@ -50,7 +50,7 @@ markers = [
50
50
 
51
51
  [tool.ruff]
52
52
  line-length = 100
53
- exclude = [".workspai/vendor", ".rapidkit/vendor"]
53
+ exclude = [".rapidkit/vendor"]
54
54
 
55
55
  [tool.ruff.lint]
56
56
  ignore = ["E501"]
@@ -61,4 +61,4 @@ ignore_missing_imports = true
61
61
  warn_unused_configs = false
62
62
  show_error_codes = true
63
63
  # Ignore vendor snapshots and generated health shims from strict static checking
64
- exclude = "(^\\.workspai/vendor/|^\\.rapidkit/vendor/|src/health/|src/main.py$)"
64
+ exclude = "(^\\.rapidkit/vendor/|src/health/|src/main.py$)"
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env python3
2
2
  """Project CLI wrapper for {{ project_name }}.
3
3
 
4
- This file prefers a per-project CLI (generated at `.workspai/cli.py`) when
4
+ This file prefers a per-project RapidKit Core wrapper (generated at `.rapidkit/cli.py`) when
5
5
  available. If not present it prints helpful guidance directing users to
6
- `workspai init` and does not attempt to make assumptions about a packaging
6
+ `rapidkit init` and does not attempt to make assumptions about a packaging
7
7
  environment.
8
8
  """
9
9
 
@@ -15,19 +15,16 @@ from typing import Optional
15
15
 
16
16
 
17
17
  def _missing_cli(name: str) -> None:
18
- print(f"❌ Missing project-local CLI (.workspai/cli.py) - can't run '{name}'")
19
- print("💡 If you're a new user run: workspai init # create venv + install deps")
18
+ print(f"❌ Missing project-local RapidKit Core wrapper (.rapidkit/cli.py) - can't run '{name}'")
19
+ print("💡 If you're a new user run: rapidkit init # create venv + install deps")
20
20
  sys.exit(127)
21
21
 
22
22
 
23
23
  def _load_project_cli_module() -> Optional[object]:
24
24
  project_root = Path(__file__).resolve().parents[1]
25
- cli_file = project_root / ".workspai" / "cli.py"
25
+ cli_file = project_root / ".rapidkit" / "cli.py"
26
26
  if not cli_file.exists():
27
- legacy_cli_file = project_root / ".rapidkit" / "cli.py"
28
- if not legacy_cli_file.exists():
29
- return None
30
- cli_file = legacy_cli_file
27
+ return None
31
28
  spec = importlib.util.spec_from_file_location("project_cli", str(cli_file))
32
29
  if spec is None or spec.loader is None:
33
30
  return None
@@ -39,7 +36,7 @@ def _load_project_cli_module() -> Optional[object]:
39
36
  _mod = _load_project_cli_module()
40
37
 
41
38
 
42
- # Default placeholders -- call `_missing_cli` if the project-local CLI isn't
39
+ # Default placeholders -- call `_missing_cli` if the project-local RapidKit Core wrapper isn't
43
40
  # available. These are real functions so linters don't complain.
44
41
  def init() -> None:
45
42
  _missing_cli("init")
@@ -32,7 +32,7 @@ from .routing import api_router
32
32
 
33
33
  @asynccontextmanager
34
34
  async def lifespan(app: FastAPI) -> AsyncIterator[None]:
35
- """Coordinate startup/shutdown hooks contributed by RapidKit Core modules."""
35
+ """Coordinate startup/shutdown hooks contributed by RapidKit modules."""
36
36
 
37
37
  _ = app # ensure the app reference stays available for injected hooks
38
38
  # <<<inject:startup>>>
@@ -1,4 +1,4 @@
1
- """Sample in-memory notes endpoints to demonstrate Workspai routing."""
1
+ """Sample in-memory notes endpoints to demonstrate RapidKit routing."""
2
2
 
3
3
  from __future__ import annotations
4
4
 
@@ -10,7 +10,7 @@ client = TestClient(app)
10
10
 
11
11
 
12
12
  def test_create_and_list_notes() -> None:
13
- payload = {"title": "First note", "body": "Documented via Workspai."}
13
+ payload = {"title": "First note", "body": "Documented via RapidKit."}
14
14
  create_response = client.post("/api/examples/notes", json=payload)
15
15
  assert create_response.status_code == 201
16
16
  data = create_response.json()
@@ -0,0 +1,11 @@
1
+ node_modules
2
+ npm-debug.log
3
+ Dockerfile
4
+ Dockerfile.*
5
+ .dockerignore
6
+ .git
7
+ .gitignore
8
+ dist
9
+ coverage
10
+ .env
11
+ .env.*
@@ -0,0 +1,25 @@
1
+ module.exports = {
2
+ parser: '@typescript-eslint/parser',
3
+ parserOptions: {
4
+ project: ['tsconfig.json'],
5
+ tsconfigRootDir: __dirname,
6
+ sourceType: 'module',
7
+ },
8
+ plugins: ['@typescript-eslint/eslint-plugin'],
9
+ extends: [
10
+ 'plugin:@typescript-eslint/recommended',
11
+ 'plugin:prettier/recommended',
12
+ ],
13
+ root: true,
14
+ env: {
15
+ node: true,
16
+ jest: true,
17
+ },
18
+ ignorePatterns: ['.eslintrc.js'],
19
+ rules: {
20
+ '@typescript-eslint/interface-name-prefix': 'off',
21
+ '@typescript-eslint/explicit-function-return-type': 'off',
22
+ '@typescript-eslint/explicit-module-boundary-types': 'off',
23
+ '@typescript-eslint/no-explicit-any': 'warn',
24
+ },
25
+ };
@@ -0,0 +1,22 @@
1
+ # Node artifacts
2
+ node_modules/
3
+ dist/
4
+ .tmp/
5
+ .env
6
+ .env.*
7
+
8
+ # Logs
9
+ logs/
10
+ *.log
11
+ npm-debug.log*
12
+ yarn-debug.log*
13
+ yarn-error.log*
14
+ pnpm-debug.log*
15
+
16
+ # OS
17
+ .DS_Store
18
+ Thumbs.db
19
+
20
+ # IDEs
21
+ .idea/
22
+ .vscode/
@@ -0,0 +1 @@
1
+ {{ node_version }}
@@ -0,0 +1 @@
1
+ {{ node_version }}
@@ -0,0 +1,7 @@
1
+ {
2
+ "singleQuote": true,
3
+ "trailingComma": "all",
4
+ "printWidth": 100,
5
+ "tabWidth": 2,
6
+ "semi": true
7
+ }
@@ -1,13 +1,16 @@
1
1
  # {{ project_name | replace('-', ' ') | title }}
2
2
 
3
- A production-ready NestJS 11 application generated with Workspai's **NestJS Standard Kit**.
3
+ A production-ready NestJS 11 application generated with **RapidKit Core** using the NestJS Standard Kit. It can be adopted into Workspai workspace intelligence when you want workspace-level context, evidence, and release governance.
4
4
 
5
5
  ## Getting Started
6
6
  > Recommended Node version: `{{ node_version }}` (`.nvmrc` and `.node-version` are included for your toolchain)
7
7
 
8
8
  ```bash
9
- # Bootstrap dependencies using the local CLI
10
- npx workspai init # use make init if you prefer a Make target
9
+ # Load the project-local RapidKit Core launcher (adds .rapidkit/rapidkit to PATH)
10
+ source .rapidkit/activate
11
+
12
+ # Bootstrap dependencies using RapidKit Core
13
+ rapidkit init # use make init if you prefer a Make target
11
14
 
12
15
  # Copy env templates + install hooks/tooling
13
16
  ./bootstrap.sh
@@ -16,37 +19,39 @@ npx workspai init # use make init if you prefer a Make target
16
19
  make dev
17
20
 
18
21
  # Or rely on the project-local RapidKit Core helpers:
19
- npx workspai dev
22
+ rapidkit dev
20
23
 
21
24
  # Run linting, type-checking, tests, and supply-chain audits
22
25
  make lint
23
26
  make typecheck
24
27
  make test
25
28
  make audit
26
- npx workspai lint
27
- npx workspai test
29
+ rapidkit lint
30
+ rapidkit test
28
31
  ```
29
32
 
30
- > Use `npx workspai init` (or `make init`) whenever dependencies change. Pass `SKIP_INIT=1` (for example `SKIP_INIT=1 make install`) if you only need to refresh tooling/hooks.
33
+ > Open a new shell? Run `source .rapidkit/activate` again so the project-local `rapidkit` launcher stays on your PATH.
34
+
35
+ > Use `rapidkit init` (or `make init`) whenever dependencies change. Pass `SKIP_INIT=1` (for example `SKIP_INIT=1 make install`) if you only need to refresh tooling/hooks.
31
36
 
32
- > Lockfiles are generated automatically during scaffolding. Set `RAPIDKIT_SKIP_LOCKS=1` (or `RAPIDKIT_GENERATE_LOCKS=0`) before running `workspai create` if you need to skip this step.
37
+ > Lockfiles are generated automatically during scaffolding. Set `RAPIDKIT_SKIP_LOCKS=1` (or `RAPIDKIT_GENERATE_LOCKS=0`) before running `rapidkit create` if you need to skip this step.
33
38
 
34
- > Need the project-local RapidKit Core command list? Run `rapidkit --help` when RapidKit Core is installed, or use `npx workspai --help` for workspace-level commands.
39
+ > Need the project-local RapidKit Core command list? Run `rapidkit --help`. If this project is part of a Workspai workspace, run `npx workspai --help` from the workspace root for workspace intelligence commands.
35
40
 
36
41
  ---
37
42
 
38
43
  ## Quick start (developer)
39
44
 
40
- 1. `npx workspai init` bootstraps dependencies through the project-aware launcher and enforces lockfile flags for your chosen package manager.
41
- 2. `make init` remains available as an alias to `npx workspai init` when you prefer Make targets.
45
+ 1. `rapidkit init` (after `source .rapidkit/activate`) bootstraps dependencies through the project-local RapidKit Core launcher and enforces lockfile flags for your chosen package manager.
46
+ 2. `make init` remains available as an alias to `rapidkit init` when you prefer Make targets.
42
47
  3. `./bootstrap.sh` copies `.env.example` to `.env` (when missing) and runs `SKIP_INIT=1 make install` so git hooks and tooling stay current without reinstalling packages.
43
48
  4. `make dev` wraps `{{ package_manager if package_manager != 'pnpm' else 'pnpm' }} run start:dev` and centralizes env loading; use it for day-to-day development.
44
49
  5. `make lint`, `make typecheck`, and `make test` proxy to the underlying package scripts or `tsc` so local changes match CI expectations.
45
50
  6. `make audit` executes `{{ package_manager }}`'s security audit (falling back to dev dependencies if needed) to surface vulnerable packages early.
46
51
 
47
- `make install` is still available; it re-runs `npx workspai init` unless you set `SKIP_INIT=1`, so prefer `SKIP_INIT=1 make install` when you only need to refresh tooling.
52
+ `make install` is still available; it re-runs `rapidkit init` unless you set `SKIP_INIT=1`, so prefer `SKIP_INIT=1 make install` when you only need to refresh tooling.
48
53
 
49
- Prefer `npx workspai dev`, `npx workspai test`, or `npx workspai lint` when you want the project-aware launcher to auto-detect the right runtime; they call into the same project scripts wrapped by the Make targets.
54
+ Prefer `rapidkit dev`, `rapidkit test`, or `rapidkit lint` when you want RapidKit Core to auto-detect the right runtime; they call into the same project scripts wrapped by the Make targets.
50
55
 
51
56
  Prefer the Make targets for consistency, but you can always fall back to native commands if needed:
52
57
 
@@ -73,11 +78,11 @@ If you see engine compatibility errors during `{{ package_manager }} install`, u
73
78
 
74
79
  - `src/main.ts` – Bootstraps the NestJS application
75
80
  - `src/app.module.ts` – Core application module with injection anchors
76
- - `src/modules/` – Container for RapidKit Core modules (`// <<<inject:module-init>>>`)
81
+ - `src/modules/` – Container for RapidKit modules (`// <<<inject:module-init>>>`)
77
82
  - `src/config/` – Centralized configuration module and validation
78
83
  - `test/` – Unit and e2e testing with Jest
79
84
 
80
- ## RapidKit Core Modules
85
+ ## RapidKit Modules
81
86
 
82
87
  Install additional modules as needed:
83
88
 
@@ -97,13 +102,13 @@ The scaffold ships with an `ExamplesModule` exposing a tiny in-memory notes API
97
102
  # Create a note
98
103
  curl -s -X POST http://localhost:3000/examples/notes \
99
104
  -H "Content-Type: application/json" \
100
- -d '{"title":"hello","body":"documented via Workspai"}'
105
+ -d '{"title":"hello","body":"documented via RapidKit"}'
101
106
 
102
107
  # List all notes
103
108
  curl -s http://localhost:3000/examples/notes | jq
104
109
  ```
105
110
 
106
- Replace the in-memory service with a proper repository once you add RapidKit Core database modules.
111
+ Replace the in-memory service with a proper repository once you add RapidKit database modules.
107
112
 
108
113
  ## Docker
109
114
 
@@ -121,7 +126,7 @@ docker-compose down
121
126
  | `{{ package_manager if package_manager != 'pnpm' else 'pnpm' }} test` | Run tests |
122
127
 
123
128
  ---
124
- Generated by Workspai.
129
+ Generated with RapidKit Core. Compatible with Workspai workspace intelligence.
125
130
 
126
131
  ## 📄 License
127
132
 
@@ -6,10 +6,10 @@ Welcome to the documentation portal for **{{ project_name | replace('-', ' ') |
6
6
 
7
7
  - `architecture/` – System design documents and decisions
8
8
  - `operations/` – Runbooks and operational procedures
9
- - `modules/` – Documentation for installed RapidKit Core modules
9
+ - `modules/` – Documentation for installed RapidKit modules
10
10
 
11
11
  ## Getting Started
12
12
 
13
13
  1. Update this documentation with project-specific details.
14
14
  2. Document any architectural decisions in `architecture/adr-000-template.md`.
15
- 3. Keep module docs in sync with installed RapidKit Core modules.
15
+ 3. Keep module docs in sync with installed RapidKit modules.
@@ -5,13 +5,7 @@ const config: Config = {
5
5
  rootDir: '.',
6
6
  testEnvironment: 'node',
7
7
  testRegex: '.*\\.spec.ts$',
8
- testPathIgnorePatterns: [
9
- '/node_modules/',
10
- '/.workspai/vendor/',
11
- '/.workspai/snapshots/',
12
- '/.rapidkit/vendor/',
13
- '/.rapidkit/snapshots/',
14
- ],
8
+ testPathIgnorePatterns: ['/node_modules/', '/.rapidkit/vendor/', '/.rapidkit/snapshots/'],
15
9
  transform: {
16
10
  '^.+\\.ts$': 'ts-jest',
17
11
  },
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "{{ project_name | replace('_', '-') | lower }}",
3
3
  "version": "{{ app_version | default('1.0.0') }}",
4
- "description": "{{ description | default('NestJS application generated with Workspai') }}",
4
+ "description": "{{ description | default('NestJS application generated with RapidKit Core') }}",
5
5
  "license": "{{ license | default('Apache-2.0') }}",
6
6
  "author": "{{ author }}",
7
7
  "engines": {
@@ -3,9 +3,9 @@ import { registerAs } from '@nestjs/config';
3
3
 
4
4
  /* eslint-disable @typescript-eslint/no-require-imports */
5
5
 
6
- // Dynamic vendor loader - resolves .workspai/vendor in project root or uses
6
+ // Dynamic vendor loader - resolves .rapidkit/vendor in project root or uses
7
7
  // RAPIDKIT_VENDOR_ROOT if set. This avoids hard-coded relative imports into
8
- // src/.workspai and makes generated projects robust and portable.
8
+ // src/.rapidkit and makes generated projects robust and portable.
9
9
  const VENDOR_ROOT_ENV = 'RAPIDKIT_VENDOR_ROOT';
10
10
  const VENDOR_MODULE = '{{ rapidkit_vendor_module }}';
11
11
  const VENDOR_VERSION = '{{ rapidkit_vendor_version }}';
@@ -16,7 +16,7 @@ function resolveVendorRoot(): string {
16
16
  if (override && override.trim().length > 0) {
17
17
  return path.resolve(override);
18
18
  }
19
- return path.resolve(process.cwd(), '.workspai', 'vendor');
19
+ return path.resolve(process.cwd(), '.rapidkit', 'vendor');
20
20
  }
21
21
 
22
22
  function resolveVendorModule() {
@@ -27,7 +27,7 @@ function resolveVendorModule() {
27
27
  VENDOR_CONFIGURATION_RELATIVE,
28
28
  );
29
29
  // Attempt to dynamically load a vendor-provided configuration. If the
30
- // vendor snapshot is not present in .workspai/vendor (common when the
30
+ // vendor snapshot is not present in .rapidkit/vendor (common when the
31
31
  // 'settings' module wasn't installed), fail gracefully instead of
32
32
  // allowing require() to throw and crash the application.
33
33
  try {
@@ -30,7 +30,7 @@ async function bootstrap() {
30
30
  const enableDocs = process.env.RAPIDKIT_ENABLE_SWAGGER === '1' || process.env.NODE_ENV !== 'production';
31
31
  if (enableDocs) {
32
32
  const config = new DocumentBuilder()
33
- .setTitle('{{ project_name | default("Workspai App") }} API')
33
+ .setTitle('{{ project_name | default("RapidKit App") }} API')
34
34
  .setDescription('Auto-generated API docs')
35
35
  .setVersion('{{ app_version | default("1.0.0") }}')
36
36
  .addBearerAuth()
@@ -2,7 +2,7 @@
2
2
 
3
3
  import type { DynamicModule, Type } from '@nestjs/common';
4
4
 
5
- // Central export for dynamically injected RapidKit Core modules
5
+ // Central export for dynamically injected RapidKit modules
6
6
 
7
7
  type ModuleRef = DynamicModule | Type<unknown>;
8
8
 
@@ -8,5 +8,5 @@
8
8
  "incremental": false
9
9
  },
10
10
  "exclude": ["node_modules", "test", "src/**/*.spec.ts", "src/**/*.e2e-spec.ts"],
11
- "include": ["src/.workspai/**/*.ts", "src/.rapidkit/**/*.ts", "src/**/*.ts"]
11
+ "include": ["src/.rapidkit/**/*.ts", "src/**/*.ts"]
12
12
  }
@@ -22,5 +22,5 @@
22
22
  }
23
23
  },
24
24
  "exclude": ["node_modules", "dist"],
25
- "include": ["src/.workspai/**/*.ts", "src/.rapidkit/**/*.ts", "src/**/*.ts", "test/**/*.ts"]
25
+ "include": ["src/.rapidkit/**/*.ts", "src/**/*.ts", "test/**/*.ts"]
26
26
  }
@@ -1 +0,0 @@
1
- export{b as AUTOPILOT_RELEASE_ALIAS_FILENAME,a as AUTOPILOT_RELEASE_LAST_RUN_FILENAME,c as runAutopilotRelease}from'./chunk-PI5KUXDA.js';